From 837dac68b5be0ae30ebe38c928bc38f9a0524238 Mon Sep 17 00:00:00 2001 From: stasatdaglabs <39559713+stasatdaglabs@users.noreply.github.com> Date: Tue, 24 Aug 2021 13:06:39 +0400 Subject: [PATCH] Update block headers to include multiple levels of parent blocks (#1822) * Replace the old parents in the block header with BlockLevelParents. * Begin fixing compilation errors. * Implement database serialization for block level parents. * Implement p2p serialization for block level parents. * Implement rpc serialization for block level parents. * Add DirectParents() to the block header interface. * Use DirectParents() instead of Parents() in some places. * Revert test_block_builder.go. * Add block level parents to hash serialization. * Use the zero hash for genesis finality points. * Fix failing tests. * Fix a variable name. * Update headerEstimatedSerializedSize. * Add comments in blocklevelparents.go. * Fix the rpc-stability stability test. * Change the field number for `parents` fields in p2p.proto and rpc.proto. * Remove MsgBlockHeader::NumParentBlocks. --- app/appmessage/domainconverters.go | 29 +- app/appmessage/p2p_msgblock_test.go | 6 +- app/appmessage/p2p_msgblockheader.go | 24 +- app/appmessage/p2p_msgblockheader_test.go | 51 +- app/appmessage/rpc_submit_block.go | 9 +- app/protocol/flowcontext/orphans.go | 8 +- cmd/kaspaminer/mineloop.go | 2 +- .../database/serialization/blockheader.go | 6 +- .../serialization/blocklevelparents.go | 49 + .../database/serialization/dbobjects.pb.go | 902 ++++--- .../database/serialization/dbobjects.proto | 6 +- domain/consensus/model/externalapi/block.go | 3 +- .../externalapi/block_equal_clone_test.go | 38 +- .../model/externalapi/blocklevelparents.go | 38 + .../processes/blockbuilder/block_builder.go | 9 +- .../blockbuilder/test_block_builder.go | 6 +- .../validate_and_insert_block_test.go | 4 +- .../block_body_in_context_test.go | 2 +- .../block_body_in_isolation_test.go | 14 +- .../blockvalidator/block_header_in_context.go | 2 +- .../block_header_in_context_test.go | 4 +- .../block_header_in_isolation.go | 6 +- .../block_header_in_isolation_test.go | 4 +- .../blockvalidator/header_estimated_size.go | 7 +- ..._violation_proof_of_work_and_difficulty.go | 8 +- ...ation_proof_of_work_and_difficulty_test.go | 12 +- .../virtual_parents_test.go | 4 +- .../dagtraversalmanager/window_test.go | 50 +- .../ghostdagmanager/ghostdag_test.go | 2 +- .../utils/blockheader/blockheader.go | 21 +- .../utils/blockheader/blockheader_test.go | 32 +- .../consensus/utils/consensushashing/block.go | 12 +- domain/dagconfig/genesis.go | 63 +- .../server/grpcserver/protowire/p2p.pb.go | 1026 ++++---- .../server/grpcserver/protowire/p2p.proto | 6 +- .../server/grpcserver/protowire/p2p_header.go | 52 +- .../server/grpcserver/protowire/rpc.pb.go | 2330 +++++++++-------- .../server/grpcserver/protowire/rpc.proto | 6 +- .../grpcserver/protowire/rpc_submit_block.go | 32 +- .../rpc-stability/run/commands.json | 2 +- 40 files changed, 2615 insertions(+), 2272 deletions(-) create mode 100644 domain/consensus/database/serialization/blocklevelparents.go create mode 100644 domain/consensus/model/externalapi/blocklevelparents.go diff --git a/app/appmessage/domainconverters.go b/app/appmessage/domainconverters.go index 0cd1bcb747..af8e772d65 100644 --- a/app/appmessage/domainconverters.go +++ b/app/appmessage/domainconverters.go @@ -31,7 +31,7 @@ func DomainBlockToMsgBlock(domainBlock *externalapi.DomainBlock) *MsgBlock { func DomainBlockHeaderToBlockHeader(domainBlockHeader externalapi.BlockHeader) *MsgBlockHeader { return &MsgBlockHeader{ Version: domainBlockHeader.Version(), - ParentHashes: domainBlockHeader.ParentHashes(), + Parents: domainBlockHeader.Parents(), HashMerkleRoot: domainBlockHeader.HashMerkleRoot(), AcceptedIDMerkleRoot: domainBlockHeader.AcceptedIDMerkleRoot(), UTXOCommitment: domainBlockHeader.UTXOCommitment(), @@ -61,7 +61,7 @@ func MsgBlockToDomainBlock(msgBlock *MsgBlock) *externalapi.DomainBlock { func BlockHeaderToDomainBlockHeader(blockHeader *MsgBlockHeader) externalapi.BlockHeader { return blockheader.NewImmutableBlockHeader( blockHeader.Version, - blockHeader.ParentHashes, + blockHeader.Parents, blockHeader.HashMerkleRoot, blockHeader.AcceptedIDMerkleRoot, blockHeader.UTXOCommitment, @@ -342,9 +342,15 @@ func DomainOutpointAndUTXOEntryPairsToOutpointAndUTXOEntryPairs( // DomainBlockToRPCBlock converts DomainBlocks to RPCBlocks func DomainBlockToRPCBlock(block *externalapi.DomainBlock) *RPCBlock { + parents := make([]*RPCBlockLevelParents, len(block.Header.Parents())) + for i, blockLevelParents := range block.Header.Parents() { + parents[i] = &RPCBlockLevelParents{ + ParentHashes: hashes.ToStrings(blockLevelParents), + } + } header := &RPCBlockHeader{ Version: uint32(block.Header.Version()), - ParentHashes: hashes.ToStrings(block.Header.ParentHashes()), + Parents: parents, HashMerkleRoot: block.Header.HashMerkleRoot().String(), AcceptedIDMerkleRoot: block.Header.AcceptedIDMerkleRoot().String(), UTXOCommitment: block.Header.UTXOCommitment().String(), @@ -367,13 +373,16 @@ func DomainBlockToRPCBlock(block *externalapi.DomainBlock) *RPCBlock { // RPCBlockToDomainBlock converts `block` into a DomainBlock func RPCBlockToDomainBlock(block *RPCBlock) (*externalapi.DomainBlock, error) { - parentHashes := make([]*externalapi.DomainHash, len(block.Header.ParentHashes)) - for i, parentHash := range block.Header.ParentHashes { - domainParentHashes, err := externalapi.NewDomainHashFromString(parentHash) - if err != nil { - return nil, err + parents := make([]externalapi.BlockLevelParents, len(block.Header.Parents)) + for i, blockLevelParents := range block.Header.Parents { + parents[i] = make(externalapi.BlockLevelParents, len(blockLevelParents.ParentHashes)) + for j, parentHash := range blockLevelParents.ParentHashes { + var err error + parents[i][j], err = externalapi.NewDomainHashFromString(parentHash) + if err != nil { + return nil, err + } } - parentHashes[i] = domainParentHashes } hashMerkleRoot, err := externalapi.NewDomainHashFromString(block.Header.HashMerkleRoot) if err != nil { @@ -397,7 +406,7 @@ func RPCBlockToDomainBlock(block *RPCBlock) (*externalapi.DomainBlock, error) { } header := blockheader.NewImmutableBlockHeader( uint16(block.Header.Version), - parentHashes, + parents, hashMerkleRoot, acceptedIDMerkleRoot, utxoCommitment, diff --git a/app/appmessage/p2p_msgblock_test.go b/app/appmessage/p2p_msgblock_test.go index ba409856ec..823e7d93be 100644 --- a/app/appmessage/p2p_msgblock_test.go +++ b/app/appmessage/p2p_msgblock_test.go @@ -21,7 +21,7 @@ func TestBlock(t *testing.T) { pver := ProtocolVersion // Block 1 header. - parentHashes := blockOne.Header.ParentHashes + parents := blockOne.Header.Parents hashMerkleRoot := blockOne.Header.HashMerkleRoot acceptedIDMerkleRoot := blockOne.Header.AcceptedIDMerkleRoot utxoCommitment := blockOne.Header.UTXOCommitment @@ -30,7 +30,7 @@ func TestBlock(t *testing.T) { daaScore := blockOne.Header.DAAScore blueWork := blockOne.Header.BlueWork finalityPoint := blockOne.Header.FinalityPoint - bh := NewBlockHeader(1, parentHashes, hashMerkleRoot, acceptedIDMerkleRoot, utxoCommitment, bits, nonce, + bh := NewBlockHeader(1, parents, hashMerkleRoot, acceptedIDMerkleRoot, utxoCommitment, bits, nonce, daaScore, blueWork, finalityPoint) // Ensure the command is expected value. @@ -135,7 +135,7 @@ func TestConvertToPartial(t *testing.T) { var blockOne = MsgBlock{ Header: MsgBlockHeader{ Version: 0, - ParentHashes: []*externalapi.DomainHash{mainnetGenesisHash, simnetGenesisHash}, + Parents: []externalapi.BlockLevelParents{[]*externalapi.DomainHash{mainnetGenesisHash, simnetGenesisHash}}, HashMerkleRoot: mainnetGenesisMerkleRoot, AcceptedIDMerkleRoot: exampleAcceptedIDMerkleRoot, UTXOCommitment: exampleUTXOCommitment, diff --git a/app/appmessage/p2p_msgblockheader.go b/app/appmessage/p2p_msgblockheader.go index f8568fce56..30c9ff240a 100644 --- a/app/appmessage/p2p_msgblockheader.go +++ b/app/appmessage/p2p_msgblockheader.go @@ -5,14 +5,12 @@ package appmessage import ( - "math" "math/big" "github.com/kaspanet/kaspad/domain/consensus/utils/consensushashing" "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" "github.com/kaspanet/kaspad/util/mstime" - "github.com/pkg/errors" ) // BaseBlockHeaderPayload is the base number of bytes a block header can be, @@ -40,8 +38,8 @@ type MsgBlockHeader struct { // Version of the block. This is not the same as the protocol version. Version uint16 - // Hashes of the parent block headers in the blockDAG. - ParentHashes []*externalapi.DomainHash + // Parents are the parent block hashes of the block in the DAG per superblock level. + Parents []externalapi.BlockLevelParents // HashMerkleRoot is the merkle tree reference to hash of all transactions for the block. HashMerkleRoot *externalapi.DomainHash @@ -72,29 +70,15 @@ type MsgBlockHeader struct { FinalityPoint *externalapi.DomainHash } -// NumParentBlocks return the number of entries in ParentHashes -func (h *MsgBlockHeader) NumParentBlocks() byte { - numParents := len(h.ParentHashes) - if numParents > math.MaxUint8 { - panic(errors.Errorf("number of parents is %d, which is more than one byte can fit", numParents)) - } - return byte(numParents) -} - // BlockHash computes the block identifier hash for the given block header. func (h *MsgBlockHeader) BlockHash() *externalapi.DomainHash { return consensushashing.HeaderHash(BlockHeaderToDomainBlockHeader(h)) } -// IsGenesis returns true iff this block is a genesis block -func (h *MsgBlockHeader) IsGenesis() bool { - return h.NumParentBlocks() == 0 -} - // NewBlockHeader returns a new MsgBlockHeader using the provided version, previous // block hash, hash merkle root, accepted ID merkle root, difficulty bits, and nonce used to generate the // block with defaults or calclulated values for the remaining fields. -func NewBlockHeader(version uint16, parentHashes []*externalapi.DomainHash, hashMerkleRoot *externalapi.DomainHash, +func NewBlockHeader(version uint16, parents []externalapi.BlockLevelParents, hashMerkleRoot *externalapi.DomainHash, acceptedIDMerkleRoot *externalapi.DomainHash, utxoCommitment *externalapi.DomainHash, bits uint32, nonce uint64, daaScore uint64, blueWork *big.Int, finalityPoint *externalapi.DomainHash) *MsgBlockHeader { @@ -102,7 +86,7 @@ func NewBlockHeader(version uint16, parentHashes []*externalapi.DomainHash, hash // doesn't support better. return &MsgBlockHeader{ Version: version, - ParentHashes: parentHashes, + Parents: parents, HashMerkleRoot: hashMerkleRoot, AcceptedIDMerkleRoot: acceptedIDMerkleRoot, UTXOCommitment: utxoCommitment, diff --git a/app/appmessage/p2p_msgblockheader_test.go b/app/appmessage/p2p_msgblockheader_test.go index 56bbd80d97..02159c62f0 100644 --- a/app/appmessage/p2p_msgblockheader_test.go +++ b/app/appmessage/p2p_msgblockheader_test.go @@ -11,14 +11,13 @@ import ( "github.com/davecgh/go-spew/spew" "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" - "github.com/kaspanet/kaspad/util/mstime" ) // TestBlockHeader tests the MsgBlockHeader API. func TestBlockHeader(t *testing.T) { nonce := uint64(0xba4d87a69924a93d) - hashes := []*externalapi.DomainHash{mainnetGenesisHash, simnetGenesisHash} + parents := []externalapi.BlockLevelParents{[]*externalapi.DomainHash{mainnetGenesisHash, simnetGenesisHash}} merkleHash := mainnetGenesisMerkleRoot acceptedIDMerkleRoot := exampleAcceptedIDMerkleRoot @@ -26,13 +25,13 @@ func TestBlockHeader(t *testing.T) { daaScore := uint64(123) blueWork := big.NewInt(456) finalityPoint := simnetGenesisHash - bh := NewBlockHeader(1, hashes, merkleHash, acceptedIDMerkleRoot, exampleUTXOCommitment, bits, nonce, + bh := NewBlockHeader(1, parents, merkleHash, acceptedIDMerkleRoot, exampleUTXOCommitment, bits, nonce, daaScore, blueWork, finalityPoint) // Ensure we get the same data back out. - if !reflect.DeepEqual(bh.ParentHashes, hashes) { - t.Errorf("NewBlockHeader: wrong prev hashes - got %v, want %v", - spew.Sprint(bh.ParentHashes), spew.Sprint(hashes)) + if !reflect.DeepEqual(bh.Parents, parents) { + t.Errorf("NewBlockHeader: wrong parents - got %v, want %v", + spew.Sprint(bh.Parents), spew.Sprint(parents)) } if bh.HashMerkleRoot != merkleHash { t.Errorf("NewBlockHeader: wrong merkle root - got %v, want %v", @@ -59,43 +58,3 @@ func TestBlockHeader(t *testing.T) { bh.FinalityPoint, finalityPoint) } } - -func TestIsGenesis(t *testing.T) { - nonce := uint64(123123) // 0x1e0f3 - bits := uint32(0x1d00ffff) - timestamp := mstime.UnixMilliseconds(0x495fab29000) - - baseBlockHdr := &MsgBlockHeader{ - Version: 1, - ParentHashes: []*externalapi.DomainHash{mainnetGenesisHash, simnetGenesisHash}, - HashMerkleRoot: mainnetGenesisMerkleRoot, - Timestamp: timestamp, - Bits: bits, - Nonce: nonce, - } - genesisBlockHdr := &MsgBlockHeader{ - Version: 1, - ParentHashes: []*externalapi.DomainHash{}, - HashMerkleRoot: mainnetGenesisMerkleRoot, - Timestamp: timestamp, - Bits: bits, - Nonce: nonce, - } - - tests := []struct { - in *MsgBlockHeader // Block header to encode - isGenesis bool // Expected result for call of .IsGenesis - }{ - {genesisBlockHdr, true}, - {baseBlockHdr, false}, - } - - t.Logf("Running %d tests", len(tests)) - for i, test := range tests { - isGenesis := test.in.IsGenesis() - if isGenesis != test.isGenesis { - t.Errorf("MsgBlockHeader.IsGenesis: #%d got: %t, want: %t", - i, isGenesis, test.isGenesis) - } - } -} diff --git a/app/appmessage/rpc_submit_block.go b/app/appmessage/rpc_submit_block.go index f93f62bf56..9ff227077f 100644 --- a/app/appmessage/rpc_submit_block.go +++ b/app/appmessage/rpc_submit_block.go @@ -53,7 +53,7 @@ func (msg *SubmitBlockResponseMessage) Command() MessageCommand { return CmdSubmitBlockResponseMessage } -// NewSubmitBlockResponseMessage returns a instance of the message +// NewSubmitBlockResponseMessage returns an instance of the message func NewSubmitBlockResponseMessage() *SubmitBlockResponseMessage { return &SubmitBlockResponseMessage{} } @@ -70,7 +70,7 @@ type RPCBlock struct { // used over RPC type RPCBlockHeader struct { Version uint32 - ParentHashes []string + Parents []*RPCBlockLevelParents HashMerkleRoot string AcceptedIDMerkleRoot string UTXOCommitment string @@ -82,6 +82,11 @@ type RPCBlockHeader struct { FinalityPoint string } +// RPCBlockLevelParents holds parent hashes for one block level +type RPCBlockLevelParents struct { + ParentHashes []string +} + // RPCBlockVerboseData holds verbose data about a block type RPCBlockVerboseData struct { Hash string diff --git a/app/protocol/flowcontext/orphans.go b/app/protocol/flowcontext/orphans.go index ac30ceea4e..32b3e5799e 100644 --- a/app/protocol/flowcontext/orphans.go +++ b/app/protocol/flowcontext/orphans.go @@ -73,10 +73,10 @@ func (f *FlowContext) UnorphanBlocks(rootBlock *externalapi.DomainBlock) ([]*Uno orphanBlock := f.orphans[orphanHash] log.Debugf("Considering to unorphan block %s with parents %s", - orphanHash, orphanBlock.Header.ParentHashes()) + orphanHash, orphanBlock.Header.DirectParents()) canBeUnorphaned := true - for _, orphanBlockParentHash := range orphanBlock.Header.ParentHashes() { + for _, orphanBlockParentHash := range orphanBlock.Header.DirectParents() { orphanBlockParentInfo, err := f.domain.Consensus().GetBlockInfo(orphanBlockParentHash) if err != nil { return nil, err @@ -133,7 +133,7 @@ func (f *FlowContext) addChildOrphansToProcessQueue(blockHash *externalapi.Domai func (f *FlowContext) findChildOrphansOfBlock(blockHash *externalapi.DomainHash) []externalapi.DomainHash { var childOrphans []externalapi.DomainHash for orphanHash, orphanBlock := range f.orphans { - for _, orphanBlockParentHash := range orphanBlock.Header.ParentHashes() { + for _, orphanBlockParentHash := range orphanBlock.Header.DirectParents() { if orphanBlockParentHash.Equal(blockHash) { childOrphans = append(childOrphans, orphanHash) break @@ -201,7 +201,7 @@ func (f *FlowContext) GetOrphanRoots(orphan *externalapi.DomainHash) ([]*externa continue } - for _, parent := range block.Header.ParentHashes() { + for _, parent := range block.Header.DirectParents() { if !addedToQueueSet.Contains(parent) { queue = append(queue, parent) addedToQueueSet.Add(parent) diff --git a/cmd/kaspaminer/mineloop.go b/cmd/kaspaminer/mineloop.go index ebba8a1878..67f23a14cb 100644 --- a/cmd/kaspaminer/mineloop.go +++ b/cmd/kaspaminer/mineloop.go @@ -150,7 +150,7 @@ func mineNextBlock(mineWhenNotSynced bool) *externalapi.DomainBlock { atomic.AddUint64(&hashesTried, 1) if pow.CheckProofOfWorkWithTarget(headerForMining, targetDifficulty) { block.Header = headerForMining.ToImmutable() - log.Infof("Found block %s with parents %s", consensushashing.BlockHash(block), block.Header.ParentHashes()) + log.Infof("Found block %s with parents %s", consensushashing.BlockHash(block), block.Header.DirectParents()) return block } } diff --git a/domain/consensus/database/serialization/blockheader.go b/domain/consensus/database/serialization/blockheader.go index 11f55d54e4..ea25cdb157 100644 --- a/domain/consensus/database/serialization/blockheader.go +++ b/domain/consensus/database/serialization/blockheader.go @@ -12,7 +12,7 @@ import ( func DomainBlockHeaderToDbBlockHeader(domainBlockHeader externalapi.BlockHeader) *DbBlockHeader { return &DbBlockHeader{ Version: uint32(domainBlockHeader.Version()), - ParentHashes: DomainHashesToDbHashes(domainBlockHeader.ParentHashes()), + Parents: DomainParentsToDbParents(domainBlockHeader.Parents()), HashMerkleRoot: DomainHashToDbHash(domainBlockHeader.HashMerkleRoot()), AcceptedIDMerkleRoot: DomainHashToDbHash(domainBlockHeader.AcceptedIDMerkleRoot()), UtxoCommitment: DomainHashToDbHash(domainBlockHeader.UTXOCommitment()), @@ -27,7 +27,7 @@ func DomainBlockHeaderToDbBlockHeader(domainBlockHeader externalapi.BlockHeader) // DbBlockHeaderToDomainBlockHeader converts DbBlockHeader to BlockHeader func DbBlockHeaderToDomainBlockHeader(dbBlockHeader *DbBlockHeader) (externalapi.BlockHeader, error) { - parentHashes, err := DbHashesToDomainHashes(dbBlockHeader.ParentHashes) + parents, err := DbParentsToDomainParents(dbBlockHeader.Parents) if err != nil { return nil, err } @@ -53,7 +53,7 @@ func DbBlockHeaderToDomainBlockHeader(dbBlockHeader *DbBlockHeader) (externalapi return blockheader.NewImmutableBlockHeader( uint16(dbBlockHeader.Version), - parentHashes, + parents, hashMerkleRoot, acceptedIDMerkleRoot, utxoCommitment, diff --git a/domain/consensus/database/serialization/blocklevelparents.go b/domain/consensus/database/serialization/blocklevelparents.go new file mode 100644 index 0000000000..ef89e0583c --- /dev/null +++ b/domain/consensus/database/serialization/blocklevelparents.go @@ -0,0 +1,49 @@ +package serialization + +import ( + "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" +) + +// DbBlockLevelParentsToDomainBlockLevelParents converts a DbBlockLevelParents to a BlockLevelParents +func DbBlockLevelParentsToDomainBlockLevelParents(dbBlockLevelParents *DbBlockLevelParents) (externalapi.BlockLevelParents, error) { + domainBlockLevelParents := make(externalapi.BlockLevelParents, len(dbBlockLevelParents.ParentHashes)) + for i, parentHash := range dbBlockLevelParents.ParentHashes { + var err error + domainBlockLevelParents[i], err = externalapi.NewDomainHashFromByteSlice(parentHash.Hash) + if err != nil { + return nil, err + } + } + return domainBlockLevelParents, nil +} + +// DomainBlockLevelParentsToDbBlockLevelParents converts a BlockLevelParents to a DbBlockLevelParents +func DomainBlockLevelParentsToDbBlockLevelParents(domainBlockLevelParents externalapi.BlockLevelParents) *DbBlockLevelParents { + parentHashes := make([]*DbHash, len(domainBlockLevelParents)) + for i, parentHash := range domainBlockLevelParents { + parentHashes[i] = &DbHash{Hash: parentHash.ByteSlice()} + } + return &DbBlockLevelParents{ParentHashes: parentHashes} +} + +// DomainParentsToDbParents converts a slice of BlockLevelParents to a slice of DbBlockLevelParents +func DomainParentsToDbParents(domainParents []externalapi.BlockLevelParents) []*DbBlockLevelParents { + dbParents := make([]*DbBlockLevelParents, len(domainParents)) + for i, domainBlockLevelParents := range domainParents { + dbParents[i] = DomainBlockLevelParentsToDbBlockLevelParents(domainBlockLevelParents) + } + return dbParents +} + +// DbParentsToDomainParents converts a slice of DbBlockLevelParents to a slice of BlockLevelParents +func DbParentsToDomainParents(dbParents []*DbBlockLevelParents) ([]externalapi.BlockLevelParents, error) { + domainParents := make([]externalapi.BlockLevelParents, len(dbParents)) + for i, domainBlockLevelParents := range dbParents { + var err error + domainParents[i], err = DbBlockLevelParentsToDomainBlockLevelParents(domainBlockLevelParents) + if err != nil { + return nil, err + } + } + return domainParents, nil +} diff --git a/domain/consensus/database/serialization/dbobjects.pb.go b/domain/consensus/database/serialization/dbobjects.pb.go index 97348532e4..9daabe2d13 100644 --- a/domain/consensus/database/serialization/dbobjects.pb.go +++ b/domain/consensus/database/serialization/dbobjects.pb.go @@ -80,17 +80,17 @@ type DbBlockHeader struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - ParentHashes []*DbHash `protobuf:"bytes,2,rep,name=parentHashes,proto3" json:"parentHashes,omitempty"` - HashMerkleRoot *DbHash `protobuf:"bytes,3,opt,name=hashMerkleRoot,proto3" json:"hashMerkleRoot,omitempty"` - AcceptedIDMerkleRoot *DbHash `protobuf:"bytes,4,opt,name=acceptedIDMerkleRoot,proto3" json:"acceptedIDMerkleRoot,omitempty"` - UtxoCommitment *DbHash `protobuf:"bytes,5,opt,name=utxoCommitment,proto3" json:"utxoCommitment,omitempty"` - TimeInMilliseconds int64 `protobuf:"varint,6,opt,name=timeInMilliseconds,proto3" json:"timeInMilliseconds,omitempty"` - Bits uint32 `protobuf:"varint,7,opt,name=bits,proto3" json:"bits,omitempty"` - Nonce uint64 `protobuf:"varint,8,opt,name=nonce,proto3" json:"nonce,omitempty"` - DaaScore uint64 `protobuf:"varint,9,opt,name=daaScore,proto3" json:"daaScore,omitempty"` - BlueWork []byte `protobuf:"bytes,10,opt,name=blueWork,proto3" json:"blueWork,omitempty"` - FinalityPoint *DbHash `protobuf:"bytes,11,opt,name=finalityPoint,proto3" json:"finalityPoint,omitempty"` + Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Parents []*DbBlockLevelParents `protobuf:"bytes,2,rep,name=parents,proto3" json:"parents,omitempty"` + HashMerkleRoot *DbHash `protobuf:"bytes,3,opt,name=hashMerkleRoot,proto3" json:"hashMerkleRoot,omitempty"` + AcceptedIDMerkleRoot *DbHash `protobuf:"bytes,4,opt,name=acceptedIDMerkleRoot,proto3" json:"acceptedIDMerkleRoot,omitempty"` + UtxoCommitment *DbHash `protobuf:"bytes,5,opt,name=utxoCommitment,proto3" json:"utxoCommitment,omitempty"` + TimeInMilliseconds int64 `protobuf:"varint,6,opt,name=timeInMilliseconds,proto3" json:"timeInMilliseconds,omitempty"` + Bits uint32 `protobuf:"varint,7,opt,name=bits,proto3" json:"bits,omitempty"` + Nonce uint64 `protobuf:"varint,8,opt,name=nonce,proto3" json:"nonce,omitempty"` + DaaScore uint64 `protobuf:"varint,9,opt,name=daaScore,proto3" json:"daaScore,omitempty"` + BlueWork []byte `protobuf:"bytes,10,opt,name=blueWork,proto3" json:"blueWork,omitempty"` + FinalityPoint *DbHash `protobuf:"bytes,11,opt,name=finalityPoint,proto3" json:"finalityPoint,omitempty"` } func (x *DbBlockHeader) Reset() { @@ -132,9 +132,9 @@ func (x *DbBlockHeader) GetVersion() uint32 { return 0 } -func (x *DbBlockHeader) GetParentHashes() []*DbHash { +func (x *DbBlockHeader) GetParents() []*DbBlockLevelParents { if x != nil { - return x.ParentHashes + return x.Parents } return nil } @@ -202,6 +202,53 @@ func (x *DbBlockHeader) GetFinalityPoint() *DbHash { return nil } +type DbBlockLevelParents struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ParentHashes []*DbHash `protobuf:"bytes,1,rep,name=parentHashes,proto3" json:"parentHashes,omitempty"` +} + +func (x *DbBlockLevelParents) Reset() { + *x = DbBlockLevelParents{} + if protoimpl.UnsafeEnabled { + mi := &file_dbobjects_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DbBlockLevelParents) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DbBlockLevelParents) ProtoMessage() {} + +func (x *DbBlockLevelParents) ProtoReflect() protoreflect.Message { + mi := &file_dbobjects_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DbBlockLevelParents.ProtoReflect.Descriptor instead. +func (*DbBlockLevelParents) Descriptor() ([]byte, []int) { + return file_dbobjects_proto_rawDescGZIP(), []int{2} +} + +func (x *DbBlockLevelParents) GetParentHashes() []*DbHash { + if x != nil { + return x.ParentHashes + } + return nil +} + type DbHash struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -213,7 +260,7 @@ type DbHash struct { func (x *DbHash) Reset() { *x = DbHash{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[2] + mi := &file_dbobjects_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -226,7 +273,7 @@ func (x *DbHash) String() string { func (*DbHash) ProtoMessage() {} func (x *DbHash) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[2] + mi := &file_dbobjects_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -239,7 +286,7 @@ func (x *DbHash) ProtoReflect() protoreflect.Message { // Deprecated: Use DbHash.ProtoReflect.Descriptor instead. func (*DbHash) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{2} + return file_dbobjects_proto_rawDescGZIP(), []int{3} } func (x *DbHash) GetHash() []byte { @@ -266,7 +313,7 @@ type DbTransaction struct { func (x *DbTransaction) Reset() { *x = DbTransaction{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[3] + mi := &file_dbobjects_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -279,7 +326,7 @@ func (x *DbTransaction) String() string { func (*DbTransaction) ProtoMessage() {} func (x *DbTransaction) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[3] + mi := &file_dbobjects_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -292,7 +339,7 @@ func (x *DbTransaction) ProtoReflect() protoreflect.Message { // Deprecated: Use DbTransaction.ProtoReflect.Descriptor instead. func (*DbTransaction) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{3} + return file_dbobjects_proto_rawDescGZIP(), []int{4} } func (x *DbTransaction) GetVersion() uint32 { @@ -358,7 +405,7 @@ type DbTransactionInput struct { func (x *DbTransactionInput) Reset() { *x = DbTransactionInput{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[4] + mi := &file_dbobjects_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -371,7 +418,7 @@ func (x *DbTransactionInput) String() string { func (*DbTransactionInput) ProtoMessage() {} func (x *DbTransactionInput) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[4] + mi := &file_dbobjects_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -384,7 +431,7 @@ func (x *DbTransactionInput) ProtoReflect() protoreflect.Message { // Deprecated: Use DbTransactionInput.ProtoReflect.Descriptor instead. func (*DbTransactionInput) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{4} + return file_dbobjects_proto_rawDescGZIP(), []int{5} } func (x *DbTransactionInput) GetPreviousOutpoint() *DbOutpoint { @@ -427,7 +474,7 @@ type DbOutpoint struct { func (x *DbOutpoint) Reset() { *x = DbOutpoint{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[5] + mi := &file_dbobjects_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -440,7 +487,7 @@ func (x *DbOutpoint) String() string { func (*DbOutpoint) ProtoMessage() {} func (x *DbOutpoint) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[5] + mi := &file_dbobjects_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -453,7 +500,7 @@ func (x *DbOutpoint) ProtoReflect() protoreflect.Message { // Deprecated: Use DbOutpoint.ProtoReflect.Descriptor instead. func (*DbOutpoint) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{5} + return file_dbobjects_proto_rawDescGZIP(), []int{6} } func (x *DbOutpoint) GetTransactionID() *DbTransactionId { @@ -481,7 +528,7 @@ type DbTransactionId struct { func (x *DbTransactionId) Reset() { *x = DbTransactionId{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[6] + mi := &file_dbobjects_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -494,7 +541,7 @@ func (x *DbTransactionId) String() string { func (*DbTransactionId) ProtoMessage() {} func (x *DbTransactionId) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[6] + mi := &file_dbobjects_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -507,7 +554,7 @@ func (x *DbTransactionId) ProtoReflect() protoreflect.Message { // Deprecated: Use DbTransactionId.ProtoReflect.Descriptor instead. func (*DbTransactionId) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{6} + return file_dbobjects_proto_rawDescGZIP(), []int{7} } func (x *DbTransactionId) GetTransactionId() []byte { @@ -529,7 +576,7 @@ type DbTransactionOutput struct { func (x *DbTransactionOutput) Reset() { *x = DbTransactionOutput{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[7] + mi := &file_dbobjects_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -542,7 +589,7 @@ func (x *DbTransactionOutput) String() string { func (*DbTransactionOutput) ProtoMessage() {} func (x *DbTransactionOutput) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[7] + mi := &file_dbobjects_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -555,7 +602,7 @@ func (x *DbTransactionOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use DbTransactionOutput.ProtoReflect.Descriptor instead. func (*DbTransactionOutput) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{7} + return file_dbobjects_proto_rawDescGZIP(), []int{8} } func (x *DbTransactionOutput) GetValue() uint64 { @@ -583,7 +630,7 @@ type DbSubnetworkId struct { func (x *DbSubnetworkId) Reset() { *x = DbSubnetworkId{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[8] + mi := &file_dbobjects_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -596,7 +643,7 @@ func (x *DbSubnetworkId) String() string { func (*DbSubnetworkId) ProtoMessage() {} func (x *DbSubnetworkId) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[8] + mi := &file_dbobjects_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -609,7 +656,7 @@ func (x *DbSubnetworkId) ProtoReflect() protoreflect.Message { // Deprecated: Use DbSubnetworkId.ProtoReflect.Descriptor instead. func (*DbSubnetworkId) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{8} + return file_dbobjects_proto_rawDescGZIP(), []int{9} } func (x *DbSubnetworkId) GetSubnetworkId() []byte { @@ -630,7 +677,7 @@ type DbAcceptanceData struct { func (x *DbAcceptanceData) Reset() { *x = DbAcceptanceData{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[9] + mi := &file_dbobjects_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -643,7 +690,7 @@ func (x *DbAcceptanceData) String() string { func (*DbAcceptanceData) ProtoMessage() {} func (x *DbAcceptanceData) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[9] + mi := &file_dbobjects_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -656,7 +703,7 @@ func (x *DbAcceptanceData) ProtoReflect() protoreflect.Message { // Deprecated: Use DbAcceptanceData.ProtoReflect.Descriptor instead. func (*DbAcceptanceData) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{9} + return file_dbobjects_proto_rawDescGZIP(), []int{10} } func (x *DbAcceptanceData) GetBlockAcceptanceData() []*DbBlockAcceptanceData { @@ -678,7 +725,7 @@ type DbBlockAcceptanceData struct { func (x *DbBlockAcceptanceData) Reset() { *x = DbBlockAcceptanceData{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[10] + mi := &file_dbobjects_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -691,7 +738,7 @@ func (x *DbBlockAcceptanceData) String() string { func (*DbBlockAcceptanceData) ProtoMessage() {} func (x *DbBlockAcceptanceData) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[10] + mi := &file_dbobjects_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -704,7 +751,7 @@ func (x *DbBlockAcceptanceData) ProtoReflect() protoreflect.Message { // Deprecated: Use DbBlockAcceptanceData.ProtoReflect.Descriptor instead. func (*DbBlockAcceptanceData) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{10} + return file_dbobjects_proto_rawDescGZIP(), []int{11} } func (x *DbBlockAcceptanceData) GetTransactionAcceptanceData() []*DbTransactionAcceptanceData { @@ -735,7 +782,7 @@ type DbTransactionAcceptanceData struct { func (x *DbTransactionAcceptanceData) Reset() { *x = DbTransactionAcceptanceData{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[11] + mi := &file_dbobjects_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -748,7 +795,7 @@ func (x *DbTransactionAcceptanceData) String() string { func (*DbTransactionAcceptanceData) ProtoMessage() {} func (x *DbTransactionAcceptanceData) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[11] + mi := &file_dbobjects_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -761,7 +808,7 @@ func (x *DbTransactionAcceptanceData) ProtoReflect() protoreflect.Message { // Deprecated: Use DbTransactionAcceptanceData.ProtoReflect.Descriptor instead. func (*DbTransactionAcceptanceData) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{11} + return file_dbobjects_proto_rawDescGZIP(), []int{12} } func (x *DbTransactionAcceptanceData) GetTransaction() *DbTransaction { @@ -804,7 +851,7 @@ type DbBlockRelations struct { func (x *DbBlockRelations) Reset() { *x = DbBlockRelations{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[12] + mi := &file_dbobjects_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -817,7 +864,7 @@ func (x *DbBlockRelations) String() string { func (*DbBlockRelations) ProtoMessage() {} func (x *DbBlockRelations) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[12] + mi := &file_dbobjects_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -830,7 +877,7 @@ func (x *DbBlockRelations) ProtoReflect() protoreflect.Message { // Deprecated: Use DbBlockRelations.ProtoReflect.Descriptor instead. func (*DbBlockRelations) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{12} + return file_dbobjects_proto_rawDescGZIP(), []int{13} } func (x *DbBlockRelations) GetParents() []*DbHash { @@ -858,7 +905,7 @@ type DbBlockStatus struct { func (x *DbBlockStatus) Reset() { *x = DbBlockStatus{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[13] + mi := &file_dbobjects_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -871,7 +918,7 @@ func (x *DbBlockStatus) String() string { func (*DbBlockStatus) ProtoMessage() {} func (x *DbBlockStatus) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[13] + mi := &file_dbobjects_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -884,7 +931,7 @@ func (x *DbBlockStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use DbBlockStatus.ProtoReflect.Descriptor instead. func (*DbBlockStatus) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{13} + return file_dbobjects_proto_rawDescGZIP(), []int{14} } func (x *DbBlockStatus) GetStatus() uint32 { @@ -910,7 +957,7 @@ type DbBlockGhostdagData struct { func (x *DbBlockGhostdagData) Reset() { *x = DbBlockGhostdagData{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[14] + mi := &file_dbobjects_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -923,7 +970,7 @@ func (x *DbBlockGhostdagData) String() string { func (*DbBlockGhostdagData) ProtoMessage() {} func (x *DbBlockGhostdagData) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[14] + mi := &file_dbobjects_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -936,7 +983,7 @@ func (x *DbBlockGhostdagData) ProtoReflect() protoreflect.Message { // Deprecated: Use DbBlockGhostdagData.ProtoReflect.Descriptor instead. func (*DbBlockGhostdagData) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{14} + return file_dbobjects_proto_rawDescGZIP(), []int{15} } func (x *DbBlockGhostdagData) GetBlueScore() uint64 { @@ -993,7 +1040,7 @@ type DbBluesAnticoneSizes struct { func (x *DbBluesAnticoneSizes) Reset() { *x = DbBluesAnticoneSizes{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[15] + mi := &file_dbobjects_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1006,7 +1053,7 @@ func (x *DbBluesAnticoneSizes) String() string { func (*DbBluesAnticoneSizes) ProtoMessage() {} func (x *DbBluesAnticoneSizes) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[15] + mi := &file_dbobjects_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1019,7 +1066,7 @@ func (x *DbBluesAnticoneSizes) ProtoReflect() protoreflect.Message { // Deprecated: Use DbBluesAnticoneSizes.ProtoReflect.Descriptor instead. func (*DbBluesAnticoneSizes) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{15} + return file_dbobjects_proto_rawDescGZIP(), []int{16} } func (x *DbBluesAnticoneSizes) GetBlueHash() *DbHash { @@ -1047,7 +1094,7 @@ type DbMultiset struct { func (x *DbMultiset) Reset() { *x = DbMultiset{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[16] + mi := &file_dbobjects_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1060,7 +1107,7 @@ func (x *DbMultiset) String() string { func (*DbMultiset) ProtoMessage() {} func (x *DbMultiset) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[16] + mi := &file_dbobjects_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1073,7 +1120,7 @@ func (x *DbMultiset) ProtoReflect() protoreflect.Message { // Deprecated: Use DbMultiset.ProtoReflect.Descriptor instead. func (*DbMultiset) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{16} + return file_dbobjects_proto_rawDescGZIP(), []int{17} } func (x *DbMultiset) GetMultiset() []byte { @@ -1094,7 +1141,7 @@ type DbUtxoSet struct { func (x *DbUtxoSet) Reset() { *x = DbUtxoSet{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[17] + mi := &file_dbobjects_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1107,7 +1154,7 @@ func (x *DbUtxoSet) String() string { func (*DbUtxoSet) ProtoMessage() {} func (x *DbUtxoSet) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[17] + mi := &file_dbobjects_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1120,7 +1167,7 @@ func (x *DbUtxoSet) ProtoReflect() protoreflect.Message { // Deprecated: Use DbUtxoSet.ProtoReflect.Descriptor instead. func (*DbUtxoSet) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{17} + return file_dbobjects_proto_rawDescGZIP(), []int{18} } func (x *DbUtxoSet) GetItems() []*DbUtxoCollectionItem { @@ -1142,7 +1189,7 @@ type DbUtxoCollectionItem struct { func (x *DbUtxoCollectionItem) Reset() { *x = DbUtxoCollectionItem{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[18] + mi := &file_dbobjects_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1155,7 +1202,7 @@ func (x *DbUtxoCollectionItem) String() string { func (*DbUtxoCollectionItem) ProtoMessage() {} func (x *DbUtxoCollectionItem) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[18] + mi := &file_dbobjects_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1168,7 +1215,7 @@ func (x *DbUtxoCollectionItem) ProtoReflect() protoreflect.Message { // Deprecated: Use DbUtxoCollectionItem.ProtoReflect.Descriptor instead. func (*DbUtxoCollectionItem) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{18} + return file_dbobjects_proto_rawDescGZIP(), []int{19} } func (x *DbUtxoCollectionItem) GetOutpoint() *DbOutpoint { @@ -1197,7 +1244,7 @@ type DbScriptPublicKey struct { func (x *DbScriptPublicKey) Reset() { *x = DbScriptPublicKey{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[19] + mi := &file_dbobjects_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1210,7 +1257,7 @@ func (x *DbScriptPublicKey) String() string { func (*DbScriptPublicKey) ProtoMessage() {} func (x *DbScriptPublicKey) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[19] + mi := &file_dbobjects_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1223,7 +1270,7 @@ func (x *DbScriptPublicKey) ProtoReflect() protoreflect.Message { // Deprecated: Use DbScriptPublicKey.ProtoReflect.Descriptor instead. func (*DbScriptPublicKey) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{19} + return file_dbobjects_proto_rawDescGZIP(), []int{20} } func (x *DbScriptPublicKey) GetScript() []byte { @@ -1254,7 +1301,7 @@ type DbUtxoEntry struct { func (x *DbUtxoEntry) Reset() { *x = DbUtxoEntry{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[20] + mi := &file_dbobjects_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1267,7 +1314,7 @@ func (x *DbUtxoEntry) String() string { func (*DbUtxoEntry) ProtoMessage() {} func (x *DbUtxoEntry) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[20] + mi := &file_dbobjects_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1280,7 +1327,7 @@ func (x *DbUtxoEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use DbUtxoEntry.ProtoReflect.Descriptor instead. func (*DbUtxoEntry) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{20} + return file_dbobjects_proto_rawDescGZIP(), []int{21} } func (x *DbUtxoEntry) GetAmount() uint64 { @@ -1325,7 +1372,7 @@ type DbReachabilityData struct { func (x *DbReachabilityData) Reset() { *x = DbReachabilityData{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[21] + mi := &file_dbobjects_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1338,7 +1385,7 @@ func (x *DbReachabilityData) String() string { func (*DbReachabilityData) ProtoMessage() {} func (x *DbReachabilityData) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[21] + mi := &file_dbobjects_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1351,7 +1398,7 @@ func (x *DbReachabilityData) ProtoReflect() protoreflect.Message { // Deprecated: Use DbReachabilityData.ProtoReflect.Descriptor instead. func (*DbReachabilityData) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{21} + return file_dbobjects_proto_rawDescGZIP(), []int{22} } func (x *DbReachabilityData) GetChildren() []*DbHash { @@ -1394,7 +1441,7 @@ type DbReachabilityInterval struct { func (x *DbReachabilityInterval) Reset() { *x = DbReachabilityInterval{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[22] + mi := &file_dbobjects_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1407,7 +1454,7 @@ func (x *DbReachabilityInterval) String() string { func (*DbReachabilityInterval) ProtoMessage() {} func (x *DbReachabilityInterval) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[22] + mi := &file_dbobjects_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1420,7 +1467,7 @@ func (x *DbReachabilityInterval) ProtoReflect() protoreflect.Message { // Deprecated: Use DbReachabilityInterval.ProtoReflect.Descriptor instead. func (*DbReachabilityInterval) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{22} + return file_dbobjects_proto_rawDescGZIP(), []int{23} } func (x *DbReachabilityInterval) GetStart() uint64 { @@ -1449,7 +1496,7 @@ type DbUtxoDiff struct { func (x *DbUtxoDiff) Reset() { *x = DbUtxoDiff{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[23] + mi := &file_dbobjects_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1462,7 +1509,7 @@ func (x *DbUtxoDiff) String() string { func (*DbUtxoDiff) ProtoMessage() {} func (x *DbUtxoDiff) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[23] + mi := &file_dbobjects_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1475,7 +1522,7 @@ func (x *DbUtxoDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use DbUtxoDiff.ProtoReflect.Descriptor instead. func (*DbUtxoDiff) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{23} + return file_dbobjects_proto_rawDescGZIP(), []int{24} } func (x *DbUtxoDiff) GetToAdd() []*DbUtxoCollectionItem { @@ -1503,7 +1550,7 @@ type DbTips struct { func (x *DbTips) Reset() { *x = DbTips{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[24] + mi := &file_dbobjects_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1516,7 +1563,7 @@ func (x *DbTips) String() string { func (*DbTips) ProtoMessage() {} func (x *DbTips) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[24] + mi := &file_dbobjects_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1529,7 +1576,7 @@ func (x *DbTips) ProtoReflect() protoreflect.Message { // Deprecated: Use DbTips.ProtoReflect.Descriptor instead. func (*DbTips) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{24} + return file_dbobjects_proto_rawDescGZIP(), []int{25} } func (x *DbTips) GetTips() []*DbHash { @@ -1550,7 +1597,7 @@ type DbBlockCount struct { func (x *DbBlockCount) Reset() { *x = DbBlockCount{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[25] + mi := &file_dbobjects_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1563,7 +1610,7 @@ func (x *DbBlockCount) String() string { func (*DbBlockCount) ProtoMessage() {} func (x *DbBlockCount) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[25] + mi := &file_dbobjects_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1576,7 +1623,7 @@ func (x *DbBlockCount) ProtoReflect() protoreflect.Message { // Deprecated: Use DbBlockCount.ProtoReflect.Descriptor instead. func (*DbBlockCount) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{25} + return file_dbobjects_proto_rawDescGZIP(), []int{26} } func (x *DbBlockCount) GetCount() uint64 { @@ -1597,7 +1644,7 @@ type DbBlockHeaderCount struct { func (x *DbBlockHeaderCount) Reset() { *x = DbBlockHeaderCount{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[26] + mi := &file_dbobjects_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1610,7 +1657,7 @@ func (x *DbBlockHeaderCount) String() string { func (*DbBlockHeaderCount) ProtoMessage() {} func (x *DbBlockHeaderCount) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[26] + mi := &file_dbobjects_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1623,7 +1670,7 @@ func (x *DbBlockHeaderCount) ProtoReflect() protoreflect.Message { // Deprecated: Use DbBlockHeaderCount.ProtoReflect.Descriptor instead. func (*DbBlockHeaderCount) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{26} + return file_dbobjects_proto_rawDescGZIP(), []int{27} } func (x *DbBlockHeaderCount) GetCount() uint64 { @@ -1645,7 +1692,7 @@ type DbBlockGHOSTDAGDataHashPair struct { func (x *DbBlockGHOSTDAGDataHashPair) Reset() { *x = DbBlockGHOSTDAGDataHashPair{} if protoimpl.UnsafeEnabled { - mi := &file_dbobjects_proto_msgTypes[27] + mi := &file_dbobjects_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1658,7 +1705,7 @@ func (x *DbBlockGHOSTDAGDataHashPair) String() string { func (*DbBlockGHOSTDAGDataHashPair) ProtoMessage() {} func (x *DbBlockGHOSTDAGDataHashPair) ProtoReflect() protoreflect.Message { - mi := &file_dbobjects_proto_msgTypes[27] + mi := &file_dbobjects_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1671,7 +1718,7 @@ func (x *DbBlockGHOSTDAGDataHashPair) ProtoReflect() protoreflect.Message { // Deprecated: Use DbBlockGHOSTDAGDataHashPair.ProtoReflect.Descriptor instead. func (*DbBlockGHOSTDAGDataHashPair) Descriptor() ([]byte, []int) { - return file_dbobjects_proto_rawDescGZIP(), []int{27} + return file_dbobjects_proto_rawDescGZIP(), []int{28} } func (x *DbBlockGHOSTDAGDataHashPair) GetHash() *DbHash { @@ -1701,247 +1748,252 @@ var file_dbobjects_proto_rawDesc = []byte{ 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xfc, 0x03, 0x0a, 0x0d, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xff, 0x03, 0x0a, 0x0d, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x39, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0c, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x0e, 0x68, - 0x61, 0x73, 0x68, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0e, 0x68, 0x61, 0x73, 0x68, - 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x49, 0x0a, 0x14, 0x61, 0x63, - 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x49, 0x44, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, - 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, + 0x12, 0x3c, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x50, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x07, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3d, + 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0e, 0x68, + 0x61, 0x73, 0x68, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x49, 0x0a, 0x14, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x49, 0x44, 0x4d, 0x65, 0x72, 0x6b, 0x6c, - 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3d, 0x0a, 0x0e, 0x75, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, - 0x48, 0x61, 0x73, 0x68, 0x52, 0x0e, 0x75, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x4d, 0x69, - 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x04, 0x62, 0x69, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x64, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x08, 0x64, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x6c, - 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, - 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x3b, 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, - 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, - 0x48, 0x61, 0x73, 0x68, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x22, 0x1c, 0x0a, 0x06, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, - 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, 0x61, 0x73, - 0x68, 0x22, 0xad, 0x02, 0x0a, 0x0d, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, - 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x69, - 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x53, 0x75, 0x62, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x61, 0x73, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x03, 0x67, 0x61, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x22, 0xc1, 0x01, 0x0a, 0x12, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x45, 0x0a, 0x10, 0x70, 0x72, 0x65, 0x76, - 0x69, 0x6f, 0x75, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x10, 0x70, - 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, - 0x28, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x73, 0x65, 0x71, - 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x4f, 0x70, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x4f, 0x70, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x68, 0x0a, 0x0a, 0x44, 0x62, 0x4f, 0x75, 0x74, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, - 0x37, 0x0a, 0x0f, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x77, 0x0a, 0x13, 0x44, 0x62, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, - 0x62, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, - 0x52, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, - 0x79, 0x22, 0x34, 0x0a, 0x0e, 0x44, 0x62, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0x6a, 0x0a, 0x10, 0x44, 0x62, 0x41, 0x63, 0x63, - 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x56, 0x0a, 0x13, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x13, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, - 0x61, 0x74, 0x61, 0x22, 0xb6, 0x01, 0x0a, 0x15, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, - 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x68, 0x0a, - 0x19, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, - 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x19, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x33, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, - 0x68, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0xed, 0x01, 0x0a, - 0x1b, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, - 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3e, 0x0a, 0x0b, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, - 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x69, 0x73, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x12, 0x5c, - 0x0a, 0x1b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x1b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0x76, 0x0a, 0x10, - 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x07, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x31, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, + 0x73, 0x68, 0x52, 0x14, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x49, 0x44, 0x4d, 0x65, + 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3d, 0x0a, 0x0e, 0x75, 0x74, 0x78, 0x6f, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0e, 0x75, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x49, + 0x6e, 0x4d, 0x69, 0x6c, 0x6c, 0x69, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x4d, 0x69, 0x6c, 0x6c, 0x69, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x74, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x62, 0x69, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, + 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x3b, 0x0a, 0x0d, 0x66, 0x69, 0x6e, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x50, 0x0a, 0x13, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x39, 0x0a, + 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, - 0x64, 0x72, 0x65, 0x6e, 0x22, 0x27, 0x0a, 0x0d, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xdb, 0x02, - 0x0a, 0x13, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, - 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x12, - 0x3d, 0x0a, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0e, - 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x3b, - 0x0a, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0d, 0x6d, 0x65, - 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0c, 0x6d, - 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0c, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x53, - 0x65, 0x74, 0x52, 0x65, 0x64, 0x73, 0x12, 0x53, 0x0a, 0x12, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x41, - 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, 0x6f, - 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x52, 0x12, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x41, 0x6e, - 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x22, 0x6d, 0x0a, 0x14, 0x44, - 0x62, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x08, 0x62, 0x6c, - 0x75, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x6f, - 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x6e, - 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x28, 0x0a, 0x0a, 0x44, 0x62, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x65, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6d, 0x75, 0x6c, 0x74, - 0x69, 0x73, 0x65, 0x74, 0x22, 0x46, 0x0a, 0x09, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x53, 0x65, - 0x74, 0x12, 0x39, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x87, 0x01, 0x0a, - 0x14, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, + 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0x1c, 0x0a, 0x06, 0x44, 0x62, 0x48, 0x61, + 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0xad, 0x02, 0x0a, 0x0d, 0x44, 0x62, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3c, 0x0a, + 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, + 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, + 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, + 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6c, + 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, + 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x52, 0x0c, 0x73, 0x75, + 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x61, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x67, 0x61, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xc1, 0x01, 0x0a, 0x12, 0x44, 0x62, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x45, 0x0a, + 0x10, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x09, - 0x75, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x75, 0x74, 0x78, - 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x45, 0x0a, 0x11, 0x44, 0x62, 0x53, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb7, 0x01, - 0x0a, 0x0b, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x16, 0x0a, - 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, - 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, - 0x62, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, - 0x52, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, - 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, - 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x43, 0x6f, 0x69, - 0x6e, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x43, - 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x22, 0xfe, 0x01, 0x0a, 0x12, 0x44, 0x62, 0x52, 0x65, - 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x61, 0x74, 0x61, 0x12, 0x31, - 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, - 0x6e, 0x12, 0x2d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x12, 0x41, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x12, 0x43, 0x0a, 0x11, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x76, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, - 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x11, 0x66, 0x75, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x76, - 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x22, 0x40, 0x0a, 0x16, 0x44, 0x62, 0x52, 0x65, - 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x0a, 0x44, - 0x62, 0x55, 0x74, 0x78, 0x6f, 0x44, 0x69, 0x66, 0x66, 0x12, 0x39, 0x0a, 0x05, 0x74, 0x6f, 0x41, - 0x64, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x74, - 0x6f, 0x41, 0x64, 0x64, 0x12, 0x3f, 0x0a, 0x08, 0x74, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6c, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x74, 0x6f, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x33, 0x0a, 0x06, 0x44, 0x62, 0x54, 0x69, 0x70, 0x73, 0x12, - 0x29, 0x0a, 0x04, 0x74, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x6e, 0x74, 0x52, 0x10, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x4f, 0x75, 0x74, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, + 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x69, + 0x67, 0x4f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, + 0x73, 0x69, 0x67, 0x4f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x68, 0x0a, 0x0a, 0x44, 0x62, + 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, + 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x14, + 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x22, 0x37, 0x0a, 0x0f, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, + 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x77, 0x0a, + 0x13, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4a, 0x0a, 0x0f, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0x34, 0x0a, 0x0e, 0x44, 0x62, 0x53, 0x75, 0x62, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, + 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0x6a, 0x0a, 0x10, + 0x44, 0x62, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x56, 0x0a, 0x13, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, - 0x48, 0x61, 0x73, 0x68, 0x52, 0x04, 0x74, 0x69, 0x70, 0x73, 0x22, 0x24, 0x0a, 0x0c, 0x44, 0x62, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x2a, 0x0a, 0x12, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x90, 0x01, 0x0a, - 0x1b, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x48, 0x4f, 0x53, 0x54, 0x44, 0x41, 0x47, - 0x44, 0x61, 0x74, 0x61, 0x48, 0x61, 0x73, 0x68, 0x50, 0x61, 0x69, 0x72, 0x12, 0x29, 0x0a, 0x04, - 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x52, 0x13, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0xb6, 0x01, 0x0a, 0x15, 0x44, 0x62, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x12, 0x68, 0x0a, 0x19, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x19, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x33, 0x0a, 0x09, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, + 0x68, 0x22, 0xed, 0x01, 0x0a, 0x1b, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x3e, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, + 0x66, 0x65, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, + 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x41, 0x63, 0x63, 0x65, 0x70, + 0x74, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x1b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x1b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x22, 0x76, 0x0a, 0x10, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x07, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, + 0x65, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, + 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, + 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x22, 0x27, 0x0a, 0x0d, 0x44, 0x62, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x22, 0xdb, 0x02, 0x0a, 0x13, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x68, + 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, + 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, + 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x6c, 0x75, 0x65, + 0x57, 0x6f, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x75, 0x65, + 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x3d, 0x0a, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, + 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x42, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, - 0x68, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x46, 0x0a, 0x0c, 0x47, 0x68, 0x6f, 0x73, 0x74, - 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x68, 0x52, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x73, + 0x12, 0x39, 0x0a, 0x0c, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x64, 0x73, + 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0c, 0x6d, + 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x64, 0x73, 0x12, 0x53, 0x0a, 0x12, 0x62, + 0x6c, 0x75, 0x65, 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, + 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x41, + 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x52, 0x12, 0x62, 0x6c, + 0x75, 0x65, 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, + 0x22, 0x6d, 0x0a, 0x14, 0x44, 0x62, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, + 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x08, 0x62, 0x6c, 0x75, 0x65, + 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, + 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, + 0x68, 0x52, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x61, + 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, + 0x28, 0x0a, 0x0a, 0x44, 0x62, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x65, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x08, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x73, 0x65, 0x74, 0x22, 0x46, 0x0a, 0x09, 0x44, 0x62, 0x55, + 0x74, 0x78, 0x6f, 0x53, 0x65, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x22, 0x87, 0x01, 0x0a, 0x14, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6c, 0x6c, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x75, + 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, + 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x4f, + 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x12, 0x38, 0x0a, 0x09, 0x75, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x09, 0x75, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x45, 0x0a, 0x11, 0x44, + 0x62, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x22, 0xb7, 0x01, 0x0a, 0x0b, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x0f, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, + 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x69, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x69, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x22, 0xfe, 0x01, 0x0a, + 0x12, 0x44, 0x62, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x31, 0x0a, 0x08, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x08, 0x63, 0x68, + 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x12, 0x2d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x06, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x08, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x43, 0x0a, 0x11, 0x66, 0x75, 0x74, 0x75, + 0x72, 0x65, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x18, 0x04, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x11, 0x66, 0x75, 0x74, 0x75, + 0x72, 0x65, 0x43, 0x6f, 0x76, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x22, 0x40, 0x0a, + 0x16, 0x44, 0x62, 0x52, 0x65, 0x61, 0x63, 0x68, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, + 0x88, 0x01, 0x0a, 0x0a, 0x44, 0x62, 0x55, 0x74, 0x78, 0x6f, 0x44, 0x69, 0x66, 0x66, 0x12, 0x39, + 0x0a, 0x05, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, - 0x61, 0x52, 0x0c, 0x47, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x42, - 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x61, - 0x73, 0x70, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61, 0x64, 0x2f, 0x73, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x55, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x05, 0x74, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x3f, 0x0a, 0x08, 0x74, 0x6f, 0x52, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x65, + 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x55, 0x74, + 0x78, 0x6f, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x08, 0x74, 0x6f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x22, 0x33, 0x0a, 0x06, 0x44, 0x62, + 0x54, 0x69, 0x70, 0x73, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x69, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x04, 0x74, 0x69, 0x70, 0x73, 0x22, + 0x24, 0x0a, 0x0c, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2a, 0x0a, 0x12, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x90, 0x01, 0x0a, 0x1b, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x48, 0x4f, + 0x53, 0x54, 0x44, 0x41, 0x47, 0x44, 0x61, 0x74, 0x61, 0x48, 0x61, 0x73, 0x68, 0x50, 0x61, 0x69, + 0x72, 0x12, 0x29, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, + 0x44, 0x62, 0x48, 0x61, 0x73, 0x68, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x46, 0x0a, 0x0c, + 0x47, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x44, 0x62, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x68, 0x6f, 0x73, 0x74, 0x64, + 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x47, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x6b, 0x61, 0x73, 0x70, + 0x61, 0x64, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1956,81 +2008,83 @@ func file_dbobjects_proto_rawDescGZIP() []byte { return file_dbobjects_proto_rawDescData } -var file_dbobjects_proto_msgTypes = make([]protoimpl.MessageInfo, 28) +var file_dbobjects_proto_msgTypes = make([]protoimpl.MessageInfo, 29) var file_dbobjects_proto_goTypes = []interface{}{ (*DbBlock)(nil), // 0: serialization.DbBlock (*DbBlockHeader)(nil), // 1: serialization.DbBlockHeader - (*DbHash)(nil), // 2: serialization.DbHash - (*DbTransaction)(nil), // 3: serialization.DbTransaction - (*DbTransactionInput)(nil), // 4: serialization.DbTransactionInput - (*DbOutpoint)(nil), // 5: serialization.DbOutpoint - (*DbTransactionId)(nil), // 6: serialization.DbTransactionId - (*DbTransactionOutput)(nil), // 7: serialization.DbTransactionOutput - (*DbSubnetworkId)(nil), // 8: serialization.DbSubnetworkId - (*DbAcceptanceData)(nil), // 9: serialization.DbAcceptanceData - (*DbBlockAcceptanceData)(nil), // 10: serialization.DbBlockAcceptanceData - (*DbTransactionAcceptanceData)(nil), // 11: serialization.DbTransactionAcceptanceData - (*DbBlockRelations)(nil), // 12: serialization.DbBlockRelations - (*DbBlockStatus)(nil), // 13: serialization.DbBlockStatus - (*DbBlockGhostdagData)(nil), // 14: serialization.DbBlockGhostdagData - (*DbBluesAnticoneSizes)(nil), // 15: serialization.DbBluesAnticoneSizes - (*DbMultiset)(nil), // 16: serialization.DbMultiset - (*DbUtxoSet)(nil), // 17: serialization.DbUtxoSet - (*DbUtxoCollectionItem)(nil), // 18: serialization.DbUtxoCollectionItem - (*DbScriptPublicKey)(nil), // 19: serialization.DbScriptPublicKey - (*DbUtxoEntry)(nil), // 20: serialization.DbUtxoEntry - (*DbReachabilityData)(nil), // 21: serialization.DbReachabilityData - (*DbReachabilityInterval)(nil), // 22: serialization.DbReachabilityInterval - (*DbUtxoDiff)(nil), // 23: serialization.DbUtxoDiff - (*DbTips)(nil), // 24: serialization.DbTips - (*DbBlockCount)(nil), // 25: serialization.DbBlockCount - (*DbBlockHeaderCount)(nil), // 26: serialization.DbBlockHeaderCount - (*DbBlockGHOSTDAGDataHashPair)(nil), // 27: serialization.DbBlockGHOSTDAGDataHashPair + (*DbBlockLevelParents)(nil), // 2: serialization.DbBlockLevelParents + (*DbHash)(nil), // 3: serialization.DbHash + (*DbTransaction)(nil), // 4: serialization.DbTransaction + (*DbTransactionInput)(nil), // 5: serialization.DbTransactionInput + (*DbOutpoint)(nil), // 6: serialization.DbOutpoint + (*DbTransactionId)(nil), // 7: serialization.DbTransactionId + (*DbTransactionOutput)(nil), // 8: serialization.DbTransactionOutput + (*DbSubnetworkId)(nil), // 9: serialization.DbSubnetworkId + (*DbAcceptanceData)(nil), // 10: serialization.DbAcceptanceData + (*DbBlockAcceptanceData)(nil), // 11: serialization.DbBlockAcceptanceData + (*DbTransactionAcceptanceData)(nil), // 12: serialization.DbTransactionAcceptanceData + (*DbBlockRelations)(nil), // 13: serialization.DbBlockRelations + (*DbBlockStatus)(nil), // 14: serialization.DbBlockStatus + (*DbBlockGhostdagData)(nil), // 15: serialization.DbBlockGhostdagData + (*DbBluesAnticoneSizes)(nil), // 16: serialization.DbBluesAnticoneSizes + (*DbMultiset)(nil), // 17: serialization.DbMultiset + (*DbUtxoSet)(nil), // 18: serialization.DbUtxoSet + (*DbUtxoCollectionItem)(nil), // 19: serialization.DbUtxoCollectionItem + (*DbScriptPublicKey)(nil), // 20: serialization.DbScriptPublicKey + (*DbUtxoEntry)(nil), // 21: serialization.DbUtxoEntry + (*DbReachabilityData)(nil), // 22: serialization.DbReachabilityData + (*DbReachabilityInterval)(nil), // 23: serialization.DbReachabilityInterval + (*DbUtxoDiff)(nil), // 24: serialization.DbUtxoDiff + (*DbTips)(nil), // 25: serialization.DbTips + (*DbBlockCount)(nil), // 26: serialization.DbBlockCount + (*DbBlockHeaderCount)(nil), // 27: serialization.DbBlockHeaderCount + (*DbBlockGHOSTDAGDataHashPair)(nil), // 28: serialization.DbBlockGHOSTDAGDataHashPair } var file_dbobjects_proto_depIdxs = []int32{ 1, // 0: serialization.DbBlock.header:type_name -> serialization.DbBlockHeader - 3, // 1: serialization.DbBlock.transactions:type_name -> serialization.DbTransaction - 2, // 2: serialization.DbBlockHeader.parentHashes:type_name -> serialization.DbHash - 2, // 3: serialization.DbBlockHeader.hashMerkleRoot:type_name -> serialization.DbHash - 2, // 4: serialization.DbBlockHeader.acceptedIDMerkleRoot:type_name -> serialization.DbHash - 2, // 5: serialization.DbBlockHeader.utxoCommitment:type_name -> serialization.DbHash - 2, // 6: serialization.DbBlockHeader.finalityPoint:type_name -> serialization.DbHash - 4, // 7: serialization.DbTransaction.inputs:type_name -> serialization.DbTransactionInput - 7, // 8: serialization.DbTransaction.outputs:type_name -> serialization.DbTransactionOutput - 8, // 9: serialization.DbTransaction.subnetworkID:type_name -> serialization.DbSubnetworkId - 5, // 10: serialization.DbTransactionInput.previousOutpoint:type_name -> serialization.DbOutpoint - 6, // 11: serialization.DbOutpoint.transactionID:type_name -> serialization.DbTransactionId - 19, // 12: serialization.DbTransactionOutput.scriptPublicKey:type_name -> serialization.DbScriptPublicKey - 10, // 13: serialization.DbAcceptanceData.blockAcceptanceData:type_name -> serialization.DbBlockAcceptanceData - 11, // 14: serialization.DbBlockAcceptanceData.transactionAcceptanceData:type_name -> serialization.DbTransactionAcceptanceData - 2, // 15: serialization.DbBlockAcceptanceData.blockHash:type_name -> serialization.DbHash - 3, // 16: serialization.DbTransactionAcceptanceData.transaction:type_name -> serialization.DbTransaction - 20, // 17: serialization.DbTransactionAcceptanceData.transactionInputUtxoEntries:type_name -> serialization.DbUtxoEntry - 2, // 18: serialization.DbBlockRelations.parents:type_name -> serialization.DbHash - 2, // 19: serialization.DbBlockRelations.children:type_name -> serialization.DbHash - 2, // 20: serialization.DbBlockGhostdagData.selectedParent:type_name -> serialization.DbHash - 2, // 21: serialization.DbBlockGhostdagData.mergeSetBlues:type_name -> serialization.DbHash - 2, // 22: serialization.DbBlockGhostdagData.mergeSetReds:type_name -> serialization.DbHash - 15, // 23: serialization.DbBlockGhostdagData.bluesAnticoneSizes:type_name -> serialization.DbBluesAnticoneSizes - 2, // 24: serialization.DbBluesAnticoneSizes.blueHash:type_name -> serialization.DbHash - 18, // 25: serialization.DbUtxoSet.items:type_name -> serialization.DbUtxoCollectionItem - 5, // 26: serialization.DbUtxoCollectionItem.outpoint:type_name -> serialization.DbOutpoint - 20, // 27: serialization.DbUtxoCollectionItem.utxoEntry:type_name -> serialization.DbUtxoEntry - 19, // 28: serialization.DbUtxoEntry.scriptPublicKey:type_name -> serialization.DbScriptPublicKey - 2, // 29: serialization.DbReachabilityData.children:type_name -> serialization.DbHash - 2, // 30: serialization.DbReachabilityData.parent:type_name -> serialization.DbHash - 22, // 31: serialization.DbReachabilityData.interval:type_name -> serialization.DbReachabilityInterval - 2, // 32: serialization.DbReachabilityData.futureCoveringSet:type_name -> serialization.DbHash - 18, // 33: serialization.DbUtxoDiff.toAdd:type_name -> serialization.DbUtxoCollectionItem - 18, // 34: serialization.DbUtxoDiff.toRemove:type_name -> serialization.DbUtxoCollectionItem - 2, // 35: serialization.DbTips.tips:type_name -> serialization.DbHash - 2, // 36: serialization.DbBlockGHOSTDAGDataHashPair.hash:type_name -> serialization.DbHash - 14, // 37: serialization.DbBlockGHOSTDAGDataHashPair.GhostdagData:type_name -> serialization.DbBlockGhostdagData - 38, // [38:38] is the sub-list for method output_type - 38, // [38:38] is the sub-list for method input_type - 38, // [38:38] is the sub-list for extension type_name - 38, // [38:38] is the sub-list for extension extendee - 0, // [0:38] is the sub-list for field type_name + 4, // 1: serialization.DbBlock.transactions:type_name -> serialization.DbTransaction + 2, // 2: serialization.DbBlockHeader.parents:type_name -> serialization.DbBlockLevelParents + 3, // 3: serialization.DbBlockHeader.hashMerkleRoot:type_name -> serialization.DbHash + 3, // 4: serialization.DbBlockHeader.acceptedIDMerkleRoot:type_name -> serialization.DbHash + 3, // 5: serialization.DbBlockHeader.utxoCommitment:type_name -> serialization.DbHash + 3, // 6: serialization.DbBlockHeader.finalityPoint:type_name -> serialization.DbHash + 3, // 7: serialization.DbBlockLevelParents.parentHashes:type_name -> serialization.DbHash + 5, // 8: serialization.DbTransaction.inputs:type_name -> serialization.DbTransactionInput + 8, // 9: serialization.DbTransaction.outputs:type_name -> serialization.DbTransactionOutput + 9, // 10: serialization.DbTransaction.subnetworkID:type_name -> serialization.DbSubnetworkId + 6, // 11: serialization.DbTransactionInput.previousOutpoint:type_name -> serialization.DbOutpoint + 7, // 12: serialization.DbOutpoint.transactionID:type_name -> serialization.DbTransactionId + 20, // 13: serialization.DbTransactionOutput.scriptPublicKey:type_name -> serialization.DbScriptPublicKey + 11, // 14: serialization.DbAcceptanceData.blockAcceptanceData:type_name -> serialization.DbBlockAcceptanceData + 12, // 15: serialization.DbBlockAcceptanceData.transactionAcceptanceData:type_name -> serialization.DbTransactionAcceptanceData + 3, // 16: serialization.DbBlockAcceptanceData.blockHash:type_name -> serialization.DbHash + 4, // 17: serialization.DbTransactionAcceptanceData.transaction:type_name -> serialization.DbTransaction + 21, // 18: serialization.DbTransactionAcceptanceData.transactionInputUtxoEntries:type_name -> serialization.DbUtxoEntry + 3, // 19: serialization.DbBlockRelations.parents:type_name -> serialization.DbHash + 3, // 20: serialization.DbBlockRelations.children:type_name -> serialization.DbHash + 3, // 21: serialization.DbBlockGhostdagData.selectedParent:type_name -> serialization.DbHash + 3, // 22: serialization.DbBlockGhostdagData.mergeSetBlues:type_name -> serialization.DbHash + 3, // 23: serialization.DbBlockGhostdagData.mergeSetReds:type_name -> serialization.DbHash + 16, // 24: serialization.DbBlockGhostdagData.bluesAnticoneSizes:type_name -> serialization.DbBluesAnticoneSizes + 3, // 25: serialization.DbBluesAnticoneSizes.blueHash:type_name -> serialization.DbHash + 19, // 26: serialization.DbUtxoSet.items:type_name -> serialization.DbUtxoCollectionItem + 6, // 27: serialization.DbUtxoCollectionItem.outpoint:type_name -> serialization.DbOutpoint + 21, // 28: serialization.DbUtxoCollectionItem.utxoEntry:type_name -> serialization.DbUtxoEntry + 20, // 29: serialization.DbUtxoEntry.scriptPublicKey:type_name -> serialization.DbScriptPublicKey + 3, // 30: serialization.DbReachabilityData.children:type_name -> serialization.DbHash + 3, // 31: serialization.DbReachabilityData.parent:type_name -> serialization.DbHash + 23, // 32: serialization.DbReachabilityData.interval:type_name -> serialization.DbReachabilityInterval + 3, // 33: serialization.DbReachabilityData.futureCoveringSet:type_name -> serialization.DbHash + 19, // 34: serialization.DbUtxoDiff.toAdd:type_name -> serialization.DbUtxoCollectionItem + 19, // 35: serialization.DbUtxoDiff.toRemove:type_name -> serialization.DbUtxoCollectionItem + 3, // 36: serialization.DbTips.tips:type_name -> serialization.DbHash + 3, // 37: serialization.DbBlockGHOSTDAGDataHashPair.hash:type_name -> serialization.DbHash + 15, // 38: serialization.DbBlockGHOSTDAGDataHashPair.GhostdagData:type_name -> serialization.DbBlockGhostdagData + 39, // [39:39] is the sub-list for method output_type + 39, // [39:39] is the sub-list for method input_type + 39, // [39:39] is the sub-list for extension type_name + 39, // [39:39] is the sub-list for extension extendee + 0, // [0:39] is the sub-list for field type_name } func init() { file_dbobjects_proto_init() } @@ -2064,7 +2118,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbHash); i { + switch v := v.(*DbBlockLevelParents); i { case 0: return &v.state case 1: @@ -2076,7 +2130,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbTransaction); i { + switch v := v.(*DbHash); i { case 0: return &v.state case 1: @@ -2088,7 +2142,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbTransactionInput); i { + switch v := v.(*DbTransaction); i { case 0: return &v.state case 1: @@ -2100,7 +2154,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbOutpoint); i { + switch v := v.(*DbTransactionInput); i { case 0: return &v.state case 1: @@ -2112,7 +2166,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbTransactionId); i { + switch v := v.(*DbOutpoint); i { case 0: return &v.state case 1: @@ -2124,7 +2178,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbTransactionOutput); i { + switch v := v.(*DbTransactionId); i { case 0: return &v.state case 1: @@ -2136,7 +2190,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbSubnetworkId); i { + switch v := v.(*DbTransactionOutput); i { case 0: return &v.state case 1: @@ -2148,7 +2202,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbAcceptanceData); i { + switch v := v.(*DbSubnetworkId); i { case 0: return &v.state case 1: @@ -2160,7 +2214,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbBlockAcceptanceData); i { + switch v := v.(*DbAcceptanceData); i { case 0: return &v.state case 1: @@ -2172,7 +2226,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbTransactionAcceptanceData); i { + switch v := v.(*DbBlockAcceptanceData); i { case 0: return &v.state case 1: @@ -2184,7 +2238,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbBlockRelations); i { + switch v := v.(*DbTransactionAcceptanceData); i { case 0: return &v.state case 1: @@ -2196,7 +2250,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbBlockStatus); i { + switch v := v.(*DbBlockRelations); i { case 0: return &v.state case 1: @@ -2208,7 +2262,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbBlockGhostdagData); i { + switch v := v.(*DbBlockStatus); i { case 0: return &v.state case 1: @@ -2220,7 +2274,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbBluesAnticoneSizes); i { + switch v := v.(*DbBlockGhostdagData); i { case 0: return &v.state case 1: @@ -2232,7 +2286,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbMultiset); i { + switch v := v.(*DbBluesAnticoneSizes); i { case 0: return &v.state case 1: @@ -2244,7 +2298,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbUtxoSet); i { + switch v := v.(*DbMultiset); i { case 0: return &v.state case 1: @@ -2256,7 +2310,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbUtxoCollectionItem); i { + switch v := v.(*DbUtxoSet); i { case 0: return &v.state case 1: @@ -2268,7 +2322,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbScriptPublicKey); i { + switch v := v.(*DbUtxoCollectionItem); i { case 0: return &v.state case 1: @@ -2280,7 +2334,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbUtxoEntry); i { + switch v := v.(*DbScriptPublicKey); i { case 0: return &v.state case 1: @@ -2292,7 +2346,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbReachabilityData); i { + switch v := v.(*DbUtxoEntry); i { case 0: return &v.state case 1: @@ -2304,7 +2358,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbReachabilityInterval); i { + switch v := v.(*DbReachabilityData); i { case 0: return &v.state case 1: @@ -2316,7 +2370,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbUtxoDiff); i { + switch v := v.(*DbReachabilityInterval); i { case 0: return &v.state case 1: @@ -2328,7 +2382,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbTips); i { + switch v := v.(*DbUtxoDiff); i { case 0: return &v.state case 1: @@ -2340,7 +2394,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbBlockCount); i { + switch v := v.(*DbTips); i { case 0: return &v.state case 1: @@ -2352,7 +2406,7 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DbBlockHeaderCount); i { + switch v := v.(*DbBlockCount); i { case 0: return &v.state case 1: @@ -2364,6 +2418,18 @@ func file_dbobjects_proto_init() { } } file_dbobjects_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DbBlockHeaderCount); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_dbobjects_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DbBlockGHOSTDAGDataHashPair); i { case 0: return &v.state @@ -2382,7 +2448,7 @@ func file_dbobjects_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_dbobjects_proto_rawDesc, NumEnums: 0, - NumMessages: 28, + NumMessages: 29, NumExtensions: 0, NumServices: 0, }, diff --git a/domain/consensus/database/serialization/dbobjects.proto b/domain/consensus/database/serialization/dbobjects.proto index fcc643e047..0554b5b29f 100644 --- a/domain/consensus/database/serialization/dbobjects.proto +++ b/domain/consensus/database/serialization/dbobjects.proto @@ -10,7 +10,7 @@ message DbBlock { message DbBlockHeader { uint32 version = 1; - repeated DbHash parentHashes = 2; + repeated DbBlockLevelParents parents = 2; DbHash hashMerkleRoot = 3; DbHash acceptedIDMerkleRoot = 4; DbHash utxoCommitment = 5; @@ -22,6 +22,10 @@ message DbBlockHeader { DbHash finalityPoint = 11; } +message DbBlockLevelParents { + repeated DbHash parentHashes = 1; +} + message DbHash { bytes hash = 1; } diff --git a/domain/consensus/model/externalapi/block.go b/domain/consensus/model/externalapi/block.go index 89a34684ef..450fd8808f 100644 --- a/domain/consensus/model/externalapi/block.go +++ b/domain/consensus/model/externalapi/block.go @@ -57,7 +57,8 @@ type BlockHeader interface { // BaseBlockHeader represents the header part of a Kaspa block type BaseBlockHeader interface { Version() uint16 - ParentHashes() []*DomainHash + Parents() []BlockLevelParents + DirectParents() BlockLevelParents HashMerkleRoot() *DomainHash AcceptedIDMerkleRoot() *DomainHash UTXOCommitment() *DomainHash diff --git a/domain/consensus/model/externalapi/block_equal_clone_test.go b/domain/consensus/model/externalapi/block_equal_clone_test.go index 85da5dbc20..5a5a85f041 100644 --- a/domain/consensus/model/externalapi/block_equal_clone_test.go +++ b/domain/consensus/model/externalapi/block_equal_clone_test.go @@ -97,13 +97,11 @@ func initTestTwoTransactions() []*externalapi.DomainTransaction { } func initTestBlockStructsForClone() []*externalapi.DomainBlock { - tests := []*externalapi.DomainBlock{ { blockheader.NewImmutableBlockHeader( - 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{0})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{0})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), @@ -118,7 +116,7 @@ func initTestBlockStructsForClone() []*externalapi.DomainBlock { }, { blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), @@ -149,7 +147,7 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { block: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{0})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{0})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), @@ -168,7 +166,7 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { baseBlock: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -190,7 +188,7 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { block: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -208,7 +206,7 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { block: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -226,10 +224,10 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { block: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{ + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{ externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), - }, + }}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -247,7 +245,7 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { block: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{100})}, // Changed + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{100})}}, // Changed externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -265,7 +263,7 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { block: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{100}), // Changed externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -283,7 +281,7 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { block: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{100}), // Changed externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -301,7 +299,7 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { block: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{100}), // Changed @@ -319,7 +317,7 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { block: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -337,7 +335,7 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { block: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -355,7 +353,7 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { block: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -373,7 +371,7 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { block: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -391,7 +389,7 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { block: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -409,7 +407,7 @@ func initTestBlockStructsForEqual() *[]TestBlockStruct { block: &externalapi.DomainBlock{ blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), diff --git a/domain/consensus/model/externalapi/blocklevelparents.go b/domain/consensus/model/externalapi/blocklevelparents.go new file mode 100644 index 0000000000..3d496649d2 --- /dev/null +++ b/domain/consensus/model/externalapi/blocklevelparents.go @@ -0,0 +1,38 @@ +package externalapi + +// BlockLevelParents represent the parents within a single super-block level +// See https://github.com/kaspanet/research/issues/3 for further details +type BlockLevelParents []*DomainHash + +// Equal returns true if this BlockLevelParents is equal to `other` +func (sl BlockLevelParents) Equal(other BlockLevelParents) bool { + return HashesEqual(sl, other) +} + +// Clone creates a clone of this BlockLevelParents +func (sl BlockLevelParents) Clone() BlockLevelParents { + return CloneHashes(sl) +} + +// ParentsEqual returns true if all the BlockLevelParents in `a` and `b` are +// equal pairwise +func ParentsEqual(a, b []BlockLevelParents) bool { + if len(a) != len(b) { + return false + } + for i, blockLevelParents := range a { + if !blockLevelParents.Equal(b[i]) { + return false + } + } + return true +} + +// CloneParents creates a clone of the given BlockLevelParents slice +func CloneParents(parents []BlockLevelParents) []BlockLevelParents { + clone := make([]BlockLevelParents, len(parents)) + for i, blockLevelParents := range parents { + clone[i] = blockLevelParents.Clone() + } + return clone +} diff --git a/domain/consensus/processes/blockbuilder/block_builder.go b/domain/consensus/processes/blockbuilder/block_builder.go index 8ea261f09f..37d3ecd9b5 100644 --- a/domain/consensus/processes/blockbuilder/block_builder.go +++ b/domain/consensus/processes/blockbuilder/block_builder.go @@ -169,7 +169,7 @@ func (bb *blockBuilder) newBlockCoinbaseTransaction(stagingArea *model.StagingAr func (bb *blockBuilder) buildHeader(stagingArea *model.StagingArea, transactions []*externalapi.DomainTransaction) ( externalapi.BlockHeader, error) { - parentHashes, err := bb.newBlockParentHashes(stagingArea) + parents, err := bb.newBlockParents(stagingArea) if err != nil { return nil, err } @@ -205,7 +205,7 @@ func (bb *blockBuilder) buildHeader(stagingArea *model.StagingArea, transactions return blockheader.NewImmutableBlockHeader( constants.MaxBlockVersion, - parentHashes, + parents, hashMerkleRoot, acceptedIDMerkleRoot, utxoCommitment, @@ -218,13 +218,12 @@ func (bb *blockBuilder) buildHeader(stagingArea *model.StagingArea, transactions ), nil } -func (bb *blockBuilder) newBlockParentHashes(stagingArea *model.StagingArea) ([]*externalapi.DomainHash, error) { +func (bb *blockBuilder) newBlockParents(stagingArea *model.StagingArea) ([]externalapi.BlockLevelParents, error) { virtualBlockRelations, err := bb.blockRelationStore.BlockRelation(bb.databaseContext, stagingArea, model.VirtualBlockHash) if err != nil { return nil, err } - - return virtualBlockRelations.Parents, nil + return []externalapi.BlockLevelParents{virtualBlockRelations.Parents}, nil } func (bb *blockBuilder) newBlockTime(stagingArea *model.StagingArea) (int64, error) { diff --git a/domain/consensus/processes/blockbuilder/test_block_builder.go b/domain/consensus/processes/blockbuilder/test_block_builder.go index 57df1378d8..c79f2b1415 100644 --- a/domain/consensus/processes/blockbuilder/test_block_builder.go +++ b/domain/consensus/processes/blockbuilder/test_block_builder.go @@ -77,10 +77,12 @@ func (bb *testBlockBuilder) buildUTXOInvalidHeader(stagingArea *model.StagingAre hashMerkleRoot := bb.newBlockHashMerkleRoot(transactions) + parents := []externalapi.BlockLevelParents{parentHashes} + bb.nonceCounter++ return blockheader.NewImmutableBlockHeader( constants.MaxBlockVersion, - parentHashes, + parents, hashMerkleRoot, &externalapi.DomainHash{}, &externalapi.DomainHash{}, @@ -112,7 +114,7 @@ func (bb *testBlockBuilder) buildHeaderWithParents(stagingArea *model.StagingAre return blockheader.NewImmutableBlockHeader( header.Version(), - header.ParentHashes(), + header.Parents(), hashMerkleRoot, acceptedIDMerkleRoot, utxoCommitment, diff --git a/domain/consensus/processes/blockprocessor/validate_and_insert_block_test.go b/domain/consensus/processes/blockprocessor/validate_and_insert_block_test.go index 51aee9b5b0..6c5fc21f5a 100644 --- a/domain/consensus/processes/blockprocessor/validate_and_insert_block_test.go +++ b/domain/consensus/processes/blockprocessor/validate_and_insert_block_test.go @@ -66,7 +66,7 @@ func TestBlockStatus(t *testing.T) { } disqualifiedBlock.Header = blockheader.NewImmutableBlockHeader( disqualifiedBlock.Header.Version(), - disqualifiedBlock.Header.ParentHashes(), + disqualifiedBlock.Header.Parents(), disqualifiedBlock.Header.HashMerkleRoot(), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{}), // This should disqualify the block disqualifiedBlock.Header.UTXOCommitment(), @@ -92,7 +92,7 @@ func TestBlockStatus(t *testing.T) { invalidBlock.Transactions[0].Version = constants.MaxTransactionVersion + 1 // This should invalidate the block invalidBlock.Header = blockheader.NewImmutableBlockHeader( disqualifiedBlock.Header.Version(), - disqualifiedBlock.Header.ParentHashes(), + disqualifiedBlock.Header.Parents(), merkle.CalculateHashMerkleRoot(invalidBlock.Transactions), disqualifiedBlock.Header.AcceptedIDMerkleRoot(), disqualifiedBlock.Header.UTXOCommitment(), diff --git a/domain/consensus/processes/blockvalidator/block_body_in_context_test.go b/domain/consensus/processes/blockvalidator/block_body_in_context_test.go index 87e109c2df..7bb52f6485 100644 --- a/domain/consensus/processes/blockvalidator/block_body_in_context_test.go +++ b/domain/consensus/processes/blockvalidator/block_body_in_context_test.go @@ -192,7 +192,7 @@ func TestIsFinalizedTransaction(t *testing.T) { if err != nil { t.Fatalf("Error getting block DAA score : %+v", err) } - blockParents := block.Header.ParentHashes() + blockParents := block.Header.DirectParents() parentToSpend, err := tc.GetBlock(blockParents[0]) if err != nil { t.Fatalf("Error getting block1: %+v", err) diff --git a/domain/consensus/processes/blockvalidator/block_body_in_isolation_test.go b/domain/consensus/processes/blockvalidator/block_body_in_isolation_test.go index a35655acb6..a7ea766037 100644 --- a/domain/consensus/processes/blockvalidator/block_body_in_isolation_test.go +++ b/domain/consensus/processes/blockvalidator/block_body_in_isolation_test.go @@ -135,7 +135,7 @@ func TestCheckBlockSanity(t *testing.T) { var unOrderedParentsBlock = externalapi.DomainBlock{ Header: blockheader.NewImmutableBlockHeader( 0x00000000, - []*externalapi.DomainHash{ + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{ externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{ 0x4b, 0xb0, 0x75, 0x35, 0xdf, 0xd5, 0x8e, 0x0b, 0x3c, 0xd6, 0x4f, 0xd7, 0x15, 0x52, 0x80, 0x87, @@ -148,7 +148,7 @@ var unOrderedParentsBlock = externalapi.DomainBlock{ 0x46, 0x11, 0x89, 0x6b, 0x82, 0x1a, 0x68, 0x3b, 0x7a, 0x4e, 0xde, 0xfe, 0x2c, 0x00, 0x00, 0x00, }), - }, + }}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{ 0x09, 0xaf, 0x3b, 0x09, 0xa8, 0x8f, 0xfc, 0x7e, 0x7d, 0xc6, 0x06, 0x78, 0x04, 0x2b, 0x1c, 0x8a, @@ -411,7 +411,7 @@ var unOrderedParentsBlock = externalapi.DomainBlock{ var exampleValidBlock = externalapi.DomainBlock{ Header: blockheader.NewImmutableBlockHeader( 0x00000000, - []*externalapi.DomainHash{ + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{ externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{ 0x16, 0x5e, 0x38, 0xe8, 0xb3, 0x91, 0x45, 0x95, 0xd9, 0xc6, 0x41, 0xf3, 0xb8, 0xee, 0xc2, 0xf3, @@ -424,7 +424,7 @@ var exampleValidBlock = externalapi.DomainBlock{ 0x2a, 0x04, 0x71, 0xbc, 0xf8, 0x30, 0x95, 0x52, 0x6a, 0xce, 0x0e, 0x38, 0xc6, 0x00, 0x00, 0x00, }), - }, + }}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{ 0x6e, 0xa3, 0x1a, 0xd6, 0xb8, 0xd9, 0xc1, 0xb2, 0xab, 0x18, 0xcc, 0x59, 0x6d, 0x03, 0x6b, 0x8d, @@ -715,7 +715,7 @@ var exampleValidBlock = externalapi.DomainBlock{ var blockWithWrongTxOrder = externalapi.DomainBlock{ Header: blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{ + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{ externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{ 0x16, 0x5e, 0x38, 0xe8, 0xb3, 0x91, 0x45, 0x95, 0xd9, 0xc6, 0x41, 0xf3, 0xb8, 0xee, 0xc2, 0xf3, @@ -728,7 +728,7 @@ var blockWithWrongTxOrder = externalapi.DomainBlock{ 0x2a, 0x04, 0x71, 0xbc, 0xf8, 0x30, 0x95, 0x52, 0x6a, 0xce, 0x0e, 0x38, 0xc6, 0x00, 0x00, 0x00, }), - }, + }}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{ 0xfc, 0x03, 0xa8, 0x09, 0x03, 0xf6, 0x64, 0xd9, 0xba, 0xab, 0x6d, 0x50, 0x1c, 0x67, 0xcb, 0xff, @@ -1343,7 +1343,7 @@ func initBlockWithFirstTransactionDifferentThanCoinbase(consensusConfig *consens return &externalapi.DomainBlock{ Header: blockheader.NewImmutableBlockHeader( constants.MaxBlockVersion, - []*externalapi.DomainHash{consensusConfig.GenesisHash}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{consensusConfig.GenesisHash}}, merkle.CalculateHashMerkleRoot([]*externalapi.DomainTransaction{tx}), &externalapi.DomainHash{}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{ diff --git a/domain/consensus/processes/blockvalidator/block_header_in_context.go b/domain/consensus/processes/blockvalidator/block_header_in_context.go index 8a36d749fe..ce7e9855ca 100644 --- a/domain/consensus/processes/blockvalidator/block_header_in_context.go +++ b/domain/consensus/processes/blockvalidator/block_header_in_context.go @@ -139,7 +139,7 @@ func (v *blockValidator) checkParentsIncest(stagingArea *model.StagingArea, bloc } func (v *blockValidator) validateMedianTime(stagingArea *model.StagingArea, header externalapi.BlockHeader) error { - if len(header.ParentHashes()) == 0 { + if len(header.DirectParents()) == 0 { return nil } diff --git a/domain/consensus/processes/blockvalidator/block_header_in_context_test.go b/domain/consensus/processes/blockvalidator/block_header_in_context_test.go index a27ba2c938..a03bd3fd07 100644 --- a/domain/consensus/processes/blockvalidator/block_header_in_context_test.go +++ b/domain/consensus/processes/blockvalidator/block_header_in_context_test.go @@ -110,7 +110,7 @@ func TestCheckParentsIncest(t *testing.T) { directParentsRelationBlock := &externalapi.DomainBlock{ Header: blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{a, b}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{a, b}}, &externalapi.DomainHash{}, &externalapi.DomainHash{}, &externalapi.DomainHash{}, @@ -132,7 +132,7 @@ func TestCheckParentsIncest(t *testing.T) { indirectParentsRelationBlock := &externalapi.DomainBlock{ Header: blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{consensusConfig.GenesisHash, b}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{consensusConfig.GenesisHash, b}}, &externalapi.DomainHash{}, &externalapi.DomainHash{}, &externalapi.DomainHash{}, diff --git a/domain/consensus/processes/blockvalidator/block_header_in_isolation.go b/domain/consensus/processes/blockvalidator/block_header_in_isolation.go index c6bfcc2953..2ee0b211bf 100644 --- a/domain/consensus/processes/blockvalidator/block_header_in_isolation.go +++ b/domain/consensus/processes/blockvalidator/block_header_in_isolation.go @@ -42,13 +42,13 @@ func (v *blockValidator) ValidateHeaderInIsolation(stagingArea *model.StagingAre func (v *blockValidator) checkParentsLimit(header externalapi.BlockHeader) error { hash := consensushashing.HeaderHash(header) - if len(header.ParentHashes()) == 0 && !hash.Equal(v.genesisHash) { + if len(header.DirectParents()) == 0 && !hash.Equal(v.genesisHash) { return errors.Wrapf(ruleerrors.ErrNoParents, "block has no parents") } - if uint64(len(header.ParentHashes())) > uint64(v.maxBlockParents) { + if uint64(len(header.DirectParents())) > uint64(v.maxBlockParents) { return errors.Wrapf(ruleerrors.ErrTooManyParents, "block header has %d parents, but the maximum allowed amount "+ - "is %d", len(header.ParentHashes()), v.maxBlockParents) + "is %d", len(header.DirectParents()), v.maxBlockParents) } return nil } diff --git a/domain/consensus/processes/blockvalidator/block_header_in_isolation_test.go b/domain/consensus/processes/blockvalidator/block_header_in_isolation_test.go index 7ceab6b85b..8eb87cfad7 100644 --- a/domain/consensus/processes/blockvalidator/block_header_in_isolation_test.go +++ b/domain/consensus/processes/blockvalidator/block_header_in_isolation_test.go @@ -59,7 +59,7 @@ func TestCheckBlockVersion(t *testing.T) { block.Header = blockheader.NewImmutableBlockHeader( constants.MaxBlockVersion+1, - block.Header.ParentHashes(), + block.Header.Parents(), block.Header.HashMerkleRoot(), block.Header.AcceptedIDMerkleRoot(), block.Header.UTXOCommitment(), @@ -99,7 +99,7 @@ func TestCheckBlockTimestampInIsolation(t *testing.T) { block.Header = blockheader.NewImmutableBlockHeader( block.Header.Version(), - block.Header.ParentHashes(), + block.Header.Parents(), block.Header.HashMerkleRoot(), block.Header.AcceptedIDMerkleRoot(), block.Header.UTXOCommitment(), diff --git a/domain/consensus/processes/blockvalidator/header_estimated_size.go b/domain/consensus/processes/blockvalidator/header_estimated_size.go index 0f7b021bc7..2dcbda9198 100644 --- a/domain/consensus/processes/blockvalidator/header_estimated_size.go +++ b/domain/consensus/processes/blockvalidator/header_estimated_size.go @@ -11,8 +11,11 @@ func (v *blockValidator) headerEstimatedSerializedSize(header externalapi.BlockH size := uint64(0) size += 2 // Version (uint16) - size += 8 // number of parents (uint64) - size += uint64(externalapi.DomainHashSize * len(header.ParentHashes())) // parents + size += 8 // number of block levels (uint64) + for _, blockLevelParents := range header.Parents() { + size += 8 // number of parents in the block level (uint64) + size += uint64(externalapi.DomainHashSize * len(blockLevelParents)) // parents + } size += externalapi.DomainHashSize // HashMerkleRoot size += externalapi.DomainHashSize // AcceptedIDMerkleRoot diff --git a/domain/consensus/processes/blockvalidator/pruning_violation_proof_of_work_and_difficulty.go b/domain/consensus/processes/blockvalidator/pruning_violation_proof_of_work_and_difficulty.go index 5b3f7fc98e..53da35a10e 100644 --- a/domain/consensus/processes/blockvalidator/pruning_violation_proof_of_work_and_difficulty.go +++ b/domain/consensus/processes/blockvalidator/pruning_violation_proof_of_work_and_difficulty.go @@ -66,8 +66,8 @@ func (v *blockValidator) setParents(stagingArea *model.StagingArea, header externalapi.BlockHeader, isBlockWithTrustedData bool) error { - parents := make([]*externalapi.DomainHash, 0, len(header.ParentHashes())) - for _, currentParent := range header.ParentHashes() { + parents := make([]*externalapi.DomainHash, 0, len(header.DirectParents())) + for _, currentParent := range header.DirectParents() { exists, err := v.blockStatusStore.Exists(v.databaseContext, stagingArea, currentParent) if err != nil { return err @@ -153,7 +153,7 @@ func (v *blockValidator) checkProofOfWork(header externalapi.BlockHeader) error } func (v *blockValidator) checkParentNotVirtualGenesis(header externalapi.BlockHeader) error { - for _, parent := range header.ParentHashes() { + for _, parent := range header.DirectParents() { if parent.Equal(model.VirtualGenesisBlockHash) { return errors.Wrapf(ruleerrors.ErrVirtualGenesisParent, "block header cannot have the virtual genesis as parent") } @@ -171,7 +171,7 @@ func (v *blockValidator) checkParentHeadersExist(stagingArea *model.StagingArea, } missingParentHashes := []*externalapi.DomainHash{} - for _, parent := range header.ParentHashes() { + for _, parent := range header.DirectParents() { parentHeaderExists, err := v.blockHeaderStore.HasBlockHeader(v.databaseContext, stagingArea, parent) if err != nil { return err diff --git a/domain/consensus/processes/blockvalidator/pruning_violation_proof_of_work_and_difficulty_test.go b/domain/consensus/processes/blockvalidator/pruning_violation_proof_of_work_and_difficulty_test.go index dcb9436036..694fe8bed1 100644 --- a/domain/consensus/processes/blockvalidator/pruning_violation_proof_of_work_and_difficulty_test.go +++ b/domain/consensus/processes/blockvalidator/pruning_violation_proof_of_work_and_difficulty_test.go @@ -52,7 +52,7 @@ func TestPOW(t *testing.T) { abovePowMaxTarget := big.NewInt(0).Add(big.NewInt(1), consensusConfig.PowMax) abovePowMaxBlock.Header = blockheader.NewImmutableBlockHeader( abovePowMaxBlock.Header.Version(), - abovePowMaxBlock.Header.ParentHashes(), + abovePowMaxBlock.Header.Parents(), abovePowMaxBlock.Header.HashMerkleRoot(), abovePowMaxBlock.Header.AcceptedIDMerkleRoot(), abovePowMaxBlock.Header.UTXOCommitment(), @@ -76,7 +76,7 @@ func TestPOW(t *testing.T) { negativeTargetBlock.Header = blockheader.NewImmutableBlockHeader( negativeTargetBlock.Header.Version(), - negativeTargetBlock.Header.ParentHashes(), + negativeTargetBlock.Header.Parents(), negativeTargetBlock.Header.HashMerkleRoot(), negativeTargetBlock.Header.AcceptedIDMerkleRoot(), negativeTargetBlock.Header.UTXOCommitment(), @@ -141,9 +141,9 @@ func TestCheckParentHeadersExist(t *testing.T) { parentHash := externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{}) // Non existing parent hash orphanBlock.Header = blockheader.NewImmutableBlockHeader( orphanBlock.Header.Version(), - []*externalapi.DomainHash{ + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{ parentHash, - }, + }}, orphanBlock.Header.HashMerkleRoot(), orphanBlock.Header.AcceptedIDMerkleRoot(), orphanBlock.Header.UTXOCommitment(), @@ -174,7 +174,7 @@ func TestCheckParentHeadersExist(t *testing.T) { invalidBlock.Transactions[0].Version = constants.MaxTransactionVersion + 1 // This should invalidate the block invalidBlock.Header = blockheader.NewImmutableBlockHeader( invalidBlock.Header.Version(), - invalidBlock.Header.ParentHashes(), + invalidBlock.Header.Parents(), merkle.CalculateHashMerkleRoot(invalidBlock.Transactions), orphanBlock.Header.AcceptedIDMerkleRoot(), orphanBlock.Header.UTXOCommitment(), @@ -200,7 +200,7 @@ func TestCheckParentHeadersExist(t *testing.T) { invalidBlockChild.Header = blockheader.NewImmutableBlockHeader( invalidBlockChild.Header.Version(), - []*externalapi.DomainHash{invalidBlockHash}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{invalidBlockHash}}, invalidBlockChild.Header.HashMerkleRoot(), invalidBlockChild.Header.AcceptedIDMerkleRoot(), invalidBlockChild.Header.UTXOCommitment(), diff --git a/domain/consensus/processes/consensusstatemanager/virtual_parents_test.go b/domain/consensus/processes/consensusstatemanager/virtual_parents_test.go index a019d7d53a..e48fd4b26b 100644 --- a/domain/consensus/processes/consensusstatemanager/virtual_parents_test.go +++ b/domain/consensus/processes/consensusstatemanager/virtual_parents_test.go @@ -32,7 +32,7 @@ func TestConsensusStateManager_pickVirtualParents(t *testing.T) { if err != nil { t.Fatalf("Consensus failed building a block: %v", err) } - blockParents := block.Header.ParentHashes() + blockParents := block.Header.DirectParents() sort.Sort(testutils.NewTestGhostDAGSorter(stagingArea, virtualRelations.Parents, tc, t)) sort.Sort(testutils.NewTestGhostDAGSorter(stagingArea, blockParents, tc, t)) if !externalapi.HashesEqual(virtualRelations.Parents, blockParents) { @@ -89,7 +89,7 @@ func TestConsensusStateManager_pickVirtualParents(t *testing.T) { t.Fatalf("Failed Inserting block to tc: %v", err) } virtualSelectedParent = consensushashing.BlockHash(block) - if len(block.Header.ParentHashes()) == 1 { + if len(block.Header.DirectParents()) == 1 { break } } diff --git a/domain/consensus/processes/dagtraversalmanager/window_test.go b/domain/consensus/processes/dagtraversalmanager/window_test.go index 9660f97371..9d3b0788cf 100644 --- a/domain/consensus/processes/dagtraversalmanager/window_test.go +++ b/domain/consensus/processes/dagtraversalmanager/window_test.go @@ -60,37 +60,37 @@ func TestBlockWindow(t *testing.T) { { parents: []string{"H", "F"}, id: "I", - expectedWindow: []string{"F", "H", "C", "D", "G", "B"}, + expectedWindow: []string{"F", "C", "D", "H", "G", "B"}, }, { parents: []string{"I"}, id: "J", - expectedWindow: []string{"I", "F", "H", "C", "D", "G", "B"}, + expectedWindow: []string{"I", "F", "C", "D", "H", "G", "B"}, }, { parents: []string{"J"}, id: "K", - expectedWindow: []string{"J", "I", "F", "H", "C", "D", "G", "B"}, + expectedWindow: []string{"J", "I", "F", "C", "D", "H", "G", "B"}, }, { parents: []string{"K"}, id: "L", - expectedWindow: []string{"K", "J", "I", "F", "H", "C", "D", "G", "B"}, + expectedWindow: []string{"K", "J", "I", "F", "C", "D", "H", "G", "B"}, }, { parents: []string{"L"}, id: "M", - expectedWindow: []string{"L", "K", "J", "I", "F", "H", "C", "D", "G", "B"}, + expectedWindow: []string{"L", "K", "J", "I", "F", "C", "D", "H", "G", "B"}, }, { parents: []string{"M"}, id: "N", - expectedWindow: []string{"M", "L", "K", "J", "I", "F", "H", "C", "D", "G"}, + expectedWindow: []string{"M", "L", "K", "J", "I", "F", "C", "D", "H", "G"}, }, { parents: []string{"N"}, id: "O", - expectedWindow: []string{"N", "M", "L", "K", "J", "I", "F", "H", "C", "D"}, + expectedWindow: []string{"N", "M", "L", "K", "J", "I", "F", "C", "D", "H"}, }, }, dagconfig.TestnetParams.Name: { @@ -112,12 +112,12 @@ func TestBlockWindow(t *testing.T) { { parents: []string{"C", "D"}, id: "E", - expectedWindow: []string{"C", "D", "B"}, + expectedWindow: []string{"D", "C", "B"}, }, { parents: []string{"C", "D"}, id: "F", - expectedWindow: []string{"C", "D", "B"}, + expectedWindow: []string{"D", "C", "B"}, }, { parents: []string{"A"}, @@ -132,37 +132,37 @@ func TestBlockWindow(t *testing.T) { { parents: []string{"H", "F"}, id: "I", - expectedWindow: []string{"F", "C", "H", "D", "B", "G"}, + expectedWindow: []string{"F", "D", "H", "C", "G", "B"}, }, { parents: []string{"I"}, id: "J", - expectedWindow: []string{"I", "F", "C", "H", "D", "B", "G"}, + expectedWindow: []string{"I", "F", "D", "H", "C", "G", "B"}, }, { parents: []string{"J"}, id: "K", - expectedWindow: []string{"J", "I", "F", "C", "H", "D", "B", "G"}, + expectedWindow: []string{"J", "I", "F", "D", "H", "C", "G", "B"}, }, { parents: []string{"K"}, id: "L", - expectedWindow: []string{"K", "J", "I", "F", "C", "H", "D", "B", "G"}, + expectedWindow: []string{"K", "J", "I", "F", "D", "H", "C", "G", "B"}, }, { parents: []string{"L"}, id: "M", - expectedWindow: []string{"L", "K", "J", "I", "F", "C", "H", "D", "B", "G"}, + expectedWindow: []string{"L", "K", "J", "I", "F", "D", "H", "C", "G", "B"}, }, { parents: []string{"M"}, id: "N", - expectedWindow: []string{"M", "L", "K", "J", "I", "F", "C", "H", "D", "B"}, + expectedWindow: []string{"M", "L", "K", "J", "I", "F", "D", "H", "C", "G"}, }, { parents: []string{"N"}, id: "O", - expectedWindow: []string{"N", "M", "L", "K", "J", "I", "F", "C", "H", "D"}, + expectedWindow: []string{"N", "M", "L", "K", "J", "I", "F", "D", "H", "C"}, }, }, dagconfig.DevnetParams.Name: { @@ -256,12 +256,12 @@ func TestBlockWindow(t *testing.T) { { parents: []string{"D", "C"}, id: "E", - expectedWindow: []string{"D", "C", "B"}, + expectedWindow: []string{"C", "D", "B"}, }, { parents: []string{"D", "C"}, id: "F", - expectedWindow: []string{"D", "C", "B"}, + expectedWindow: []string{"C", "D", "B"}, }, { parents: []string{"A"}, @@ -276,37 +276,37 @@ func TestBlockWindow(t *testing.T) { { parents: []string{"H", "F"}, id: "I", - expectedWindow: []string{"F", "D", "C", "H", "B", "G"}, + expectedWindow: []string{"F", "H", "C", "D", "B", "G"}, }, { parents: []string{"I"}, id: "J", - expectedWindow: []string{"I", "F", "D", "C", "H", "B", "G"}, + expectedWindow: []string{"I", "F", "H", "C", "D", "B", "G"}, }, { parents: []string{"J"}, id: "K", - expectedWindow: []string{"J", "I", "F", "D", "C", "H", "B", "G"}, + expectedWindow: []string{"J", "I", "F", "H", "C", "D", "B", "G"}, }, { parents: []string{"K"}, id: "L", - expectedWindow: []string{"K", "J", "I", "F", "D", "C", "H", "B", "G"}, + expectedWindow: []string{"K", "J", "I", "F", "H", "C", "D", "B", "G"}, }, { parents: []string{"L"}, id: "M", - expectedWindow: []string{"L", "K", "J", "I", "F", "D", "C", "H", "B", "G"}, + expectedWindow: []string{"L", "K", "J", "I", "F", "H", "C", "D", "B", "G"}, }, { parents: []string{"M"}, id: "N", - expectedWindow: []string{"M", "L", "K", "J", "I", "F", "D", "C", "H", "B"}, + expectedWindow: []string{"M", "L", "K", "J", "I", "F", "H", "C", "D", "B"}, }, { parents: []string{"N"}, id: "O", - expectedWindow: []string{"N", "M", "L", "K", "J", "I", "F", "D", "C", "H"}, + expectedWindow: []string{"N", "M", "L", "K", "J", "I", "F", "H", "C", "D"}, }, }, } diff --git a/domain/consensus/processes/ghostdagmanager/ghostdag_test.go b/domain/consensus/processes/ghostdagmanager/ghostdag_test.go index 1db81c61ef..a1a05bce7e 100644 --- a/domain/consensus/processes/ghostdagmanager/ghostdag_test.go +++ b/domain/consensus/processes/ghostdagmanager/ghostdag_test.go @@ -112,7 +112,7 @@ func TestGHOSTDAG(t *testing.T) { dagTopology.parentsMap[*blockID] = StringToDomainHashSlice(testBlockData.Parents) blockHeadersStore.dagMap[*blockID] = blockheader.NewImmutableBlockHeader( constants.MaxBlockVersion, - StringToDomainHashSlice(testBlockData.Parents), + []externalapi.BlockLevelParents{StringToDomainHashSlice(testBlockData.Parents)}, nil, nil, nil, diff --git a/domain/consensus/utils/blockheader/blockheader.go b/domain/consensus/utils/blockheader/blockheader.go index 43cc1dac2a..ed075deb1f 100644 --- a/domain/consensus/utils/blockheader/blockheader.go +++ b/domain/consensus/utils/blockheader/blockheader.go @@ -7,7 +7,7 @@ import ( type blockHeader struct { version uint16 - parentHashes []*externalapi.DomainHash + parents []externalapi.BlockLevelParents hashMerkleRoot *externalapi.DomainHash acceptedIDMerkleRoot *externalapi.DomainHash utxoCommitment *externalapi.DomainHash @@ -47,8 +47,15 @@ func (bh *blockHeader) Version() uint16 { return bh.version } -func (bh *blockHeader) ParentHashes() []*externalapi.DomainHash { - return bh.parentHashes +func (bh *blockHeader) Parents() []externalapi.BlockLevelParents { + return bh.parents +} + +func (bh *blockHeader) DirectParents() externalapi.BlockLevelParents { + if len(bh.parents) == 0 { + return externalapi.BlockLevelParents{} + } + return bh.parents[0] } func (bh *blockHeader) HashMerkleRoot() *externalapi.DomainHash { @@ -92,7 +99,7 @@ func (bh *blockHeader) Equal(other externalapi.BaseBlockHeader) bool { return false } - if !externalapi.HashesEqual(bh.parentHashes, other.ParentHashes()) { + if !externalapi.ParentsEqual(bh.parents, other.Parents()) { return false } @@ -138,7 +145,7 @@ func (bh *blockHeader) Equal(other externalapi.BaseBlockHeader) bool { func (bh *blockHeader) clone() *blockHeader { return &blockHeader{ version: bh.version, - parentHashes: externalapi.CloneHashes(bh.parentHashes), + parents: externalapi.CloneParents(bh.parents), hashMerkleRoot: bh.hashMerkleRoot, acceptedIDMerkleRoot: bh.acceptedIDMerkleRoot, utxoCommitment: bh.utxoCommitment, @@ -158,7 +165,7 @@ func (bh *blockHeader) ToMutable() externalapi.MutableBlockHeader { // NewImmutableBlockHeader returns a new immutable header func NewImmutableBlockHeader( version uint16, - parentHashes []*externalapi.DomainHash, + parents []externalapi.BlockLevelParents, hashMerkleRoot *externalapi.DomainHash, acceptedIDMerkleRoot *externalapi.DomainHash, utxoCommitment *externalapi.DomainHash, @@ -171,7 +178,7 @@ func NewImmutableBlockHeader( ) externalapi.BlockHeader { return &blockHeader{ version: version, - parentHashes: parentHashes, + parents: parents, hashMerkleRoot: hashMerkleRoot, acceptedIDMerkleRoot: acceptedIDMerkleRoot, utxoCommitment: utxoCommitment, diff --git a/domain/consensus/utils/blockheader/blockheader_test.go b/domain/consensus/utils/blockheader/blockheader_test.go index ab77f58200..48ddce27c2 100644 --- a/domain/consensus/utils/blockheader/blockheader_test.go +++ b/domain/consensus/utils/blockheader/blockheader_test.go @@ -25,7 +25,7 @@ func TestDomainBlockHeader_Equal(t *testing.T) { { header: &blockHeader{ 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{0})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{0})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), @@ -43,7 +43,7 @@ func TestDomainBlockHeader_Equal(t *testing.T) { { baseHeader: &blockHeader{ 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -62,7 +62,7 @@ func TestDomainBlockHeader_Equal(t *testing.T) { { header: &blockHeader{ 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -78,7 +78,7 @@ func TestDomainBlockHeader_Equal(t *testing.T) { { header: &blockHeader{ 100, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -95,9 +95,9 @@ func TestDomainBlockHeader_Equal(t *testing.T) { header: &blockHeader{ 0, // []*externalapi.DomainHash{{1}, {2}}, - []*externalapi.DomainHash{ + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{ externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1}), - externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2})}, + externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -113,7 +113,7 @@ func TestDomainBlockHeader_Equal(t *testing.T) { { header: &blockHeader{ 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{100})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{100})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -129,7 +129,7 @@ func TestDomainBlockHeader_Equal(t *testing.T) { { header: &blockHeader{ 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{100}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -145,7 +145,7 @@ func TestDomainBlockHeader_Equal(t *testing.T) { { header: &blockHeader{ 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{100}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -161,7 +161,7 @@ func TestDomainBlockHeader_Equal(t *testing.T) { { header: &blockHeader{ 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{100}), @@ -177,7 +177,7 @@ func TestDomainBlockHeader_Equal(t *testing.T) { { header: &blockHeader{ 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -193,7 +193,7 @@ func TestDomainBlockHeader_Equal(t *testing.T) { { header: &blockHeader{ 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -209,7 +209,7 @@ func TestDomainBlockHeader_Equal(t *testing.T) { { header: &blockHeader{ 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -225,7 +225,7 @@ func TestDomainBlockHeader_Equal(t *testing.T) { { header: &blockHeader{ 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -241,7 +241,7 @@ func TestDomainBlockHeader_Equal(t *testing.T) { { header: &blockHeader{ 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), @@ -257,7 +257,7 @@ func TestDomainBlockHeader_Equal(t *testing.T) { { header: &blockHeader{ 0, - []*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}, + []externalapi.BlockLevelParents{[]*externalapi.DomainHash{externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{1})}}, externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{2}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{3}), externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{4}), diff --git a/domain/consensus/utils/consensushashing/block.go b/domain/consensus/utils/consensushashing/block.go index b8528bb5d9..392b9361af 100644 --- a/domain/consensus/utils/consensushashing/block.go +++ b/domain/consensus/utils/consensushashing/block.go @@ -35,14 +35,20 @@ func serializeHeader(w io.Writer, header externalapi.BaseBlockHeader) error { timestamp := header.TimeInMilliseconds() blueWork := header.BlueWork().Bytes() - numParents := len(header.ParentHashes()) + numParents := len(header.Parents()) if err := serialization.WriteElements(w, header.Version(), uint64(numParents)); err != nil { return err } - for _, hash := range header.ParentHashes() { - if err := serialization.WriteElement(w, hash); err != nil { + for _, blockLevelParents := range header.Parents() { + numBlockLevelParents := len(blockLevelParents) + if err := serialization.WriteElements(w, uint64(numBlockLevelParents)); err != nil { return err } + for _, hash := range blockLevelParents { + if err := serialization.WriteElement(w, hash); err != nil { + return err + } + } } return serialization.WriteElements(w, header.HashMerkleRoot(), header.AcceptedIDMerkleRoot(), header.UTXOCommitment(), timestamp, header.Bits(), header.Nonce(), header.DAAScore(), blueWork, header.FinalityPoint()) diff --git a/domain/dagconfig/genesis.go b/domain/dagconfig/genesis.go index 837c3a3f62..329470deac 100644 --- a/domain/dagconfig/genesis.go +++ b/domain/dagconfig/genesis.go @@ -6,7 +6,6 @@ package dagconfig import ( "github.com/kaspanet/go-muhash" - "github.com/kaspanet/kaspad/domain/consensus/model" "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" "github.com/kaspanet/kaspad/domain/consensus/utils/blockheader" "github.com/kaspanet/kaspad/domain/consensus/utils/subnetworks" @@ -31,10 +30,10 @@ var genesisCoinbaseTx = transactionhelper.NewSubnetworkTransaction(0, []*externa // genesisHash is the hash of the first block in the block DAG for the main // network (genesis block). var genesisHash = externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{ - 0xf9, 0xe6, 0x59, 0x8b, 0x25, 0xb2, 0xde, 0xdd, - 0xd3, 0x8e, 0x0d, 0x78, 0x89, 0x44, 0x2c, 0x9f, - 0xe1, 0x2e, 0x49, 0xce, 0x58, 0x0b, 0x69, 0xb1, - 0x05, 0xbf, 0x44, 0x44, 0x7d, 0x95, 0x5e, 0xfd, + 0x86, 0xd0, 0x2f, 0x43, 0xd9, 0xe2, 0x54, 0xf2, + 0xda, 0x51, 0x26, 0x06, 0x2b, 0x06, 0xc4, 0xfd, + 0xd2, 0x7b, 0x10, 0xd8, 0xe4, 0xb0, 0x10, 0x85, + 0x60, 0xaf, 0x7b, 0x76, 0xb6, 0x81, 0xae, 0x27, }) // genesisMerkleRoot is the hash of the first transaction in the genesis block @@ -51,16 +50,16 @@ var genesisMerkleRoot = externalapi.NewDomainHashFromByteArray(&[externalapi.Dom var genesisBlock = externalapi.DomainBlock{ Header: blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{}, + []externalapi.BlockLevelParents{}, genesisMerkleRoot, &externalapi.DomainHash{}, externalapi.NewDomainHashFromByteArray(muhash.EmptyMuHashHash.AsArray()), - 0x17a99ae1020, + 0x17adc150114, 0x207fffff, - 0x4, + 0x1, 0, big.NewInt(0), - model.VirtualGenesisBlockHash, + &externalapi.DomainHash{}, ), Transactions: []*externalapi.DomainTransaction{genesisCoinbaseTx}, } @@ -84,10 +83,10 @@ var devnetGenesisCoinbaseTx = transactionhelper.NewSubnetworkTransaction(0, // devGenesisHash is the hash of the first block in the block DAG for the development // network (genesis block). var devnetGenesisHash = externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{ - 0xd8, 0x8e, 0xfe, 0x55, 0x26, 0xd0, 0xf3, 0x65, - 0x21, 0xad, 0xb6, 0x5f, 0x24, 0x55, 0xd1, 0x24, - 0x18, 0xbf, 0x4e, 0x78, 0x53, 0x8b, 0x3a, 0x09, - 0x43, 0x3b, 0xfe, 0xba, 0x8f, 0x9d, 0xde, 0x21, + 0xe4, 0xe1, 0xf7, 0xc2, 0x7e, 0xc8, 0x61, 0x94, + 0x5d, 0x9d, 0xcb, 0x12, 0x4b, 0x77, 0xca, 0x57, + 0x84, 0x2c, 0x90, 0x56, 0x06, 0x66, 0xc9, 0x47, + 0xb7, 0x22, 0x4b, 0x73, 0xac, 0x63, 0x4f, 0x08, }) // devnetGenesisMerkleRoot is the hash of the first transaction in the genesis block @@ -104,16 +103,16 @@ var devnetGenesisMerkleRoot = externalapi.NewDomainHashFromByteArray(&[externala var devnetGenesisBlock = externalapi.DomainBlock{ Header: blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{}, + []externalapi.BlockLevelParents{}, devnetGenesisMerkleRoot, &externalapi.DomainHash{}, externalapi.NewDomainHashFromByteArray(muhash.EmptyMuHashHash.AsArray()), 0x11e9db49828, 0x1e7fffff, - 0x168a8, + 0x23694, 0, big.NewInt(0), - model.VirtualGenesisBlockHash, + &externalapi.DomainHash{}, ), Transactions: []*externalapi.DomainTransaction{devnetGenesisCoinbaseTx}, } @@ -136,10 +135,10 @@ var simnetGenesisCoinbaseTx = transactionhelper.NewSubnetworkTransaction(0, // simnetGenesisHash is the hash of the first block in the block DAG for // the simnet (genesis block). var simnetGenesisHash = externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{ - 0x5b, 0x55, 0xb6, 0x3c, 0x77, 0x1b, 0x48, 0xfc, - 0xc7, 0x65, 0x77, 0xd6, 0x2f, 0x1e, 0x20, 0x63, - 0x85, 0x54, 0x1c, 0xb8, 0x37, 0x5a, 0x29, 0x07, - 0x3e, 0xb1, 0xb2, 0xe7, 0x6f, 0x2a, 0xdb, 0x95, + 0x7a, 0x83, 0x0d, 0x9e, 0x29, 0x38, 0xb1, 0x7a, + 0xfc, 0x85, 0xe4, 0x3f, 0xce, 0x1f, 0x37, 0xc4, + 0x52, 0x97, 0xea, 0xba, 0x11, 0x70, 0xf5, 0x4e, + 0xe3, 0x2f, 0xd3, 0xb0, 0x50, 0x08, 0x67, 0xa7, }) // simnetGenesisMerkleRoot is the hash of the first transaction in the genesis block @@ -156,16 +155,16 @@ var simnetGenesisMerkleRoot = externalapi.NewDomainHashFromByteArray(&[externala var simnetGenesisBlock = externalapi.DomainBlock{ Header: blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{}, + []externalapi.BlockLevelParents{}, simnetGenesisMerkleRoot, &externalapi.DomainHash{}, externalapi.NewDomainHashFromByteArray(muhash.EmptyMuHashHash.AsArray()), - 0x17a99ae10cc, + 0x17adc15022f, 0x207fffff, - 0x2, + 0x1, 0, big.NewInt(0), - model.VirtualGenesisBlockHash, + &externalapi.DomainHash{}, ), Transactions: []*externalapi.DomainTransaction{simnetGenesisCoinbaseTx}, } @@ -188,10 +187,10 @@ var testnetGenesisCoinbaseTx = transactionhelper.NewSubnetworkTransaction(0, // testnetGenesisHash is the hash of the first block in the block DAG for the test // network (genesis block). var testnetGenesisHash = externalapi.NewDomainHashFromByteArray(&[externalapi.DomainHashSize]byte{ - 0x32, 0x10, 0x6a, 0x42, 0x52, 0xb7, 0x5a, 0xba, - 0x68, 0xca, 0x77, 0xbc, 0x62, 0x61, 0x63, 0xe2, - 0xd1, 0x44, 0xfa, 0x10, 0xbd, 0xc3, 0x0b, 0x96, - 0x7d, 0xc1, 0xe7, 0x52, 0xa4, 0xe8, 0x25, 0x7c, + 0x12, 0x35, 0x45, 0x64, 0x16, 0xac, 0x7b, 0x00, + 0xe9, 0xa2, 0xc9, 0x97, 0x8d, 0x8b, 0xd3, 0x7c, + 0xa2, 0xc2, 0x9b, 0x9e, 0x23, 0x62, 0x49, 0xb6, + 0x41, 0x8a, 0xcc, 0x0a, 0x98, 0xd1, 0x10, 0x36, }) // testnetGenesisMerkleRoot is the hash of the first transaction in the genesis block @@ -208,16 +207,16 @@ var testnetGenesisMerkleRoot = externalapi.NewDomainHashFromByteArray(&[external var testnetGenesisBlock = externalapi.DomainBlock{ Header: blockheader.NewImmutableBlockHeader( 0, - []*externalapi.DomainHash{}, + []externalapi.BlockLevelParents{}, testnetGenesisMerkleRoot, &externalapi.DomainHash{}, externalapi.NewDomainHashFromByteArray(muhash.EmptyMuHashHash.AsArray()), - 0x17a99ae10cc, + 0x17adc15022f, 0x1e7fffff, - 0x71d0d, + 0x2f291, 0, big.NewInt(0), - model.VirtualGenesisBlockHash, + &externalapi.DomainHash{}, ), Transactions: []*externalapi.DomainTransaction{testnetGenesisCoinbaseTx}, } diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/p2p.pb.go b/infrastructure/network/netadapter/server/grpcserver/protowire/p2p.pb.go index 97012bcb90..1724d08c00 100644 --- a/infrastructure/network/netadapter/server/grpcserver/protowire/p2p.pb.go +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/p2p.pb.go @@ -670,17 +670,17 @@ type BlockHeader struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - ParentHashes []*Hash `protobuf:"bytes,2,rep,name=parentHashes,proto3" json:"parentHashes,omitempty"` - HashMerkleRoot *Hash `protobuf:"bytes,3,opt,name=hashMerkleRoot,proto3" json:"hashMerkleRoot,omitempty"` - AcceptedIdMerkleRoot *Hash `protobuf:"bytes,4,opt,name=acceptedIdMerkleRoot,proto3" json:"acceptedIdMerkleRoot,omitempty"` - UtxoCommitment *Hash `protobuf:"bytes,5,opt,name=utxoCommitment,proto3" json:"utxoCommitment,omitempty"` - Timestamp int64 `protobuf:"varint,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - Bits uint32 `protobuf:"varint,7,opt,name=bits,proto3" json:"bits,omitempty"` - Nonce uint64 `protobuf:"varint,8,opt,name=nonce,proto3" json:"nonce,omitempty"` - DaaScore uint64 `protobuf:"varint,9,opt,name=daaScore,proto3" json:"daaScore,omitempty"` - BlueWork []byte `protobuf:"bytes,10,opt,name=blueWork,proto3" json:"blueWork,omitempty"` - FinalityPoint *Hash `protobuf:"bytes,11,opt,name=finalityPoint,proto3" json:"finalityPoint,omitempty"` + Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Parents []*BlockLevelParents `protobuf:"bytes,12,rep,name=parents,proto3" json:"parents,omitempty"` + HashMerkleRoot *Hash `protobuf:"bytes,3,opt,name=hashMerkleRoot,proto3" json:"hashMerkleRoot,omitempty"` + AcceptedIdMerkleRoot *Hash `protobuf:"bytes,4,opt,name=acceptedIdMerkleRoot,proto3" json:"acceptedIdMerkleRoot,omitempty"` + UtxoCommitment *Hash `protobuf:"bytes,5,opt,name=utxoCommitment,proto3" json:"utxoCommitment,omitempty"` + Timestamp int64 `protobuf:"varint,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Bits uint32 `protobuf:"varint,7,opt,name=bits,proto3" json:"bits,omitempty"` + Nonce uint64 `protobuf:"varint,8,opt,name=nonce,proto3" json:"nonce,omitempty"` + DaaScore uint64 `protobuf:"varint,9,opt,name=daaScore,proto3" json:"daaScore,omitempty"` + BlueWork []byte `protobuf:"bytes,10,opt,name=blueWork,proto3" json:"blueWork,omitempty"` + FinalityPoint *Hash `protobuf:"bytes,11,opt,name=finalityPoint,proto3" json:"finalityPoint,omitempty"` } func (x *BlockHeader) Reset() { @@ -722,9 +722,9 @@ func (x *BlockHeader) GetVersion() uint32 { return 0 } -func (x *BlockHeader) GetParentHashes() []*Hash { +func (x *BlockHeader) GetParents() []*BlockLevelParents { if x != nil { - return x.ParentHashes + return x.Parents } return nil } @@ -792,6 +792,53 @@ func (x *BlockHeader) GetFinalityPoint() *Hash { return nil } +type BlockLevelParents struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ParentHashes []*Hash `protobuf:"bytes,1,rep,name=parentHashes,proto3" json:"parentHashes,omitempty"` +} + +func (x *BlockLevelParents) Reset() { + *x = BlockLevelParents{} + if protoimpl.UnsafeEnabled { + mi := &file_p2p_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *BlockLevelParents) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BlockLevelParents) ProtoMessage() {} + +func (x *BlockLevelParents) ProtoReflect() protoreflect.Message { + mi := &file_p2p_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BlockLevelParents.ProtoReflect.Descriptor instead. +func (*BlockLevelParents) Descriptor() ([]byte, []int) { + return file_p2p_proto_rawDescGZIP(), []int{12} +} + +func (x *BlockLevelParents) GetParentHashes() []*Hash { + if x != nil { + return x.ParentHashes + } + return nil +} + type Hash struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -803,7 +850,7 @@ type Hash struct { func (x *Hash) Reset() { *x = Hash{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[12] + mi := &file_p2p_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -816,7 +863,7 @@ func (x *Hash) String() string { func (*Hash) ProtoMessage() {} func (x *Hash) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[12] + mi := &file_p2p_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -829,7 +876,7 @@ func (x *Hash) ProtoReflect() protoreflect.Message { // Deprecated: Use Hash.ProtoReflect.Descriptor instead. func (*Hash) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{12} + return file_p2p_proto_rawDescGZIP(), []int{13} } func (x *Hash) GetBytes() []byte { @@ -851,7 +898,7 @@ type RequestBlockLocatorMessage struct { func (x *RequestBlockLocatorMessage) Reset() { *x = RequestBlockLocatorMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[13] + mi := &file_p2p_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -864,7 +911,7 @@ func (x *RequestBlockLocatorMessage) String() string { func (*RequestBlockLocatorMessage) ProtoMessage() {} func (x *RequestBlockLocatorMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[13] + mi := &file_p2p_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -877,7 +924,7 @@ func (x *RequestBlockLocatorMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestBlockLocatorMessage.ProtoReflect.Descriptor instead. func (*RequestBlockLocatorMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{13} + return file_p2p_proto_rawDescGZIP(), []int{14} } func (x *RequestBlockLocatorMessage) GetHighHash() *Hash { @@ -905,7 +952,7 @@ type BlockLocatorMessage struct { func (x *BlockLocatorMessage) Reset() { *x = BlockLocatorMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[14] + mi := &file_p2p_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -918,7 +965,7 @@ func (x *BlockLocatorMessage) String() string { func (*BlockLocatorMessage) ProtoMessage() {} func (x *BlockLocatorMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[14] + mi := &file_p2p_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -931,7 +978,7 @@ func (x *BlockLocatorMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockLocatorMessage.ProtoReflect.Descriptor instead. func (*BlockLocatorMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{14} + return file_p2p_proto_rawDescGZIP(), []int{15} } func (x *BlockLocatorMessage) GetHashes() []*Hash { @@ -953,7 +1000,7 @@ type RequestHeadersMessage struct { func (x *RequestHeadersMessage) Reset() { *x = RequestHeadersMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[15] + mi := &file_p2p_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -966,7 +1013,7 @@ func (x *RequestHeadersMessage) String() string { func (*RequestHeadersMessage) ProtoMessage() {} func (x *RequestHeadersMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[15] + mi := &file_p2p_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -979,7 +1026,7 @@ func (x *RequestHeadersMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestHeadersMessage.ProtoReflect.Descriptor instead. func (*RequestHeadersMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{15} + return file_p2p_proto_rawDescGZIP(), []int{16} } func (x *RequestHeadersMessage) GetLowHash() *Hash { @@ -1005,7 +1052,7 @@ type RequestNextHeadersMessage struct { func (x *RequestNextHeadersMessage) Reset() { *x = RequestNextHeadersMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[16] + mi := &file_p2p_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1018,7 +1065,7 @@ func (x *RequestNextHeadersMessage) String() string { func (*RequestNextHeadersMessage) ProtoMessage() {} func (x *RequestNextHeadersMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[16] + mi := &file_p2p_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1031,7 +1078,7 @@ func (x *RequestNextHeadersMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestNextHeadersMessage.ProtoReflect.Descriptor instead. func (*RequestNextHeadersMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{16} + return file_p2p_proto_rawDescGZIP(), []int{17} } type DoneHeadersMessage struct { @@ -1043,7 +1090,7 @@ type DoneHeadersMessage struct { func (x *DoneHeadersMessage) Reset() { *x = DoneHeadersMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[17] + mi := &file_p2p_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1056,7 +1103,7 @@ func (x *DoneHeadersMessage) String() string { func (*DoneHeadersMessage) ProtoMessage() {} func (x *DoneHeadersMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[17] + mi := &file_p2p_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1069,7 +1116,7 @@ func (x *DoneHeadersMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use DoneHeadersMessage.ProtoReflect.Descriptor instead. func (*DoneHeadersMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{17} + return file_p2p_proto_rawDescGZIP(), []int{18} } type RequestRelayBlocksMessage struct { @@ -1083,7 +1130,7 @@ type RequestRelayBlocksMessage struct { func (x *RequestRelayBlocksMessage) Reset() { *x = RequestRelayBlocksMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[18] + mi := &file_p2p_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1096,7 +1143,7 @@ func (x *RequestRelayBlocksMessage) String() string { func (*RequestRelayBlocksMessage) ProtoMessage() {} func (x *RequestRelayBlocksMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[18] + mi := &file_p2p_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1109,7 +1156,7 @@ func (x *RequestRelayBlocksMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestRelayBlocksMessage.ProtoReflect.Descriptor instead. func (*RequestRelayBlocksMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{18} + return file_p2p_proto_rawDescGZIP(), []int{19} } func (x *RequestRelayBlocksMessage) GetHashes() []*Hash { @@ -1130,7 +1177,7 @@ type RequestTransactionsMessage struct { func (x *RequestTransactionsMessage) Reset() { *x = RequestTransactionsMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[19] + mi := &file_p2p_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1143,7 +1190,7 @@ func (x *RequestTransactionsMessage) String() string { func (*RequestTransactionsMessage) ProtoMessage() {} func (x *RequestTransactionsMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[19] + mi := &file_p2p_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1156,7 +1203,7 @@ func (x *RequestTransactionsMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestTransactionsMessage.ProtoReflect.Descriptor instead. func (*RequestTransactionsMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{19} + return file_p2p_proto_rawDescGZIP(), []int{20} } func (x *RequestTransactionsMessage) GetIds() []*TransactionId { @@ -1177,7 +1224,7 @@ type TransactionNotFoundMessage struct { func (x *TransactionNotFoundMessage) Reset() { *x = TransactionNotFoundMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[20] + mi := &file_p2p_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1190,7 +1237,7 @@ func (x *TransactionNotFoundMessage) String() string { func (*TransactionNotFoundMessage) ProtoMessage() {} func (x *TransactionNotFoundMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[20] + mi := &file_p2p_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1203,7 +1250,7 @@ func (x *TransactionNotFoundMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use TransactionNotFoundMessage.ProtoReflect.Descriptor instead. func (*TransactionNotFoundMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{20} + return file_p2p_proto_rawDescGZIP(), []int{21} } func (x *TransactionNotFoundMessage) GetId() *TransactionId { @@ -1224,7 +1271,7 @@ type InvRelayBlockMessage struct { func (x *InvRelayBlockMessage) Reset() { *x = InvRelayBlockMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[21] + mi := &file_p2p_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1237,7 +1284,7 @@ func (x *InvRelayBlockMessage) String() string { func (*InvRelayBlockMessage) ProtoMessage() {} func (x *InvRelayBlockMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[21] + mi := &file_p2p_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1250,7 +1297,7 @@ func (x *InvRelayBlockMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use InvRelayBlockMessage.ProtoReflect.Descriptor instead. func (*InvRelayBlockMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{21} + return file_p2p_proto_rawDescGZIP(), []int{22} } func (x *InvRelayBlockMessage) GetHash() *Hash { @@ -1271,7 +1318,7 @@ type InvTransactionsMessage struct { func (x *InvTransactionsMessage) Reset() { *x = InvTransactionsMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[22] + mi := &file_p2p_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1284,7 +1331,7 @@ func (x *InvTransactionsMessage) String() string { func (*InvTransactionsMessage) ProtoMessage() {} func (x *InvTransactionsMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[22] + mi := &file_p2p_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1297,7 +1344,7 @@ func (x *InvTransactionsMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use InvTransactionsMessage.ProtoReflect.Descriptor instead. func (*InvTransactionsMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{22} + return file_p2p_proto_rawDescGZIP(), []int{23} } func (x *InvTransactionsMessage) GetIds() []*TransactionId { @@ -1318,7 +1365,7 @@ type PingMessage struct { func (x *PingMessage) Reset() { *x = PingMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[23] + mi := &file_p2p_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1331,7 +1378,7 @@ func (x *PingMessage) String() string { func (*PingMessage) ProtoMessage() {} func (x *PingMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[23] + mi := &file_p2p_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1344,7 +1391,7 @@ func (x *PingMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use PingMessage.ProtoReflect.Descriptor instead. func (*PingMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{23} + return file_p2p_proto_rawDescGZIP(), []int{24} } func (x *PingMessage) GetNonce() uint64 { @@ -1365,7 +1412,7 @@ type PongMessage struct { func (x *PongMessage) Reset() { *x = PongMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[24] + mi := &file_p2p_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1378,7 +1425,7 @@ func (x *PongMessage) String() string { func (*PongMessage) ProtoMessage() {} func (x *PongMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[24] + mi := &file_p2p_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1391,7 +1438,7 @@ func (x *PongMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use PongMessage.ProtoReflect.Descriptor instead. func (*PongMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{24} + return file_p2p_proto_rawDescGZIP(), []int{25} } func (x *PongMessage) GetNonce() uint64 { @@ -1410,7 +1457,7 @@ type VerackMessage struct { func (x *VerackMessage) Reset() { *x = VerackMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[25] + mi := &file_p2p_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1423,7 +1470,7 @@ func (x *VerackMessage) String() string { func (*VerackMessage) ProtoMessage() {} func (x *VerackMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[25] + mi := &file_p2p_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1436,7 +1483,7 @@ func (x *VerackMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use VerackMessage.ProtoReflect.Descriptor instead. func (*VerackMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{25} + return file_p2p_proto_rawDescGZIP(), []int{26} } type VersionMessage struct { @@ -1458,7 +1505,7 @@ type VersionMessage struct { func (x *VersionMessage) Reset() { *x = VersionMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[26] + mi := &file_p2p_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1471,7 +1518,7 @@ func (x *VersionMessage) String() string { func (*VersionMessage) ProtoMessage() {} func (x *VersionMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[26] + mi := &file_p2p_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1484,7 +1531,7 @@ func (x *VersionMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use VersionMessage.ProtoReflect.Descriptor instead. func (*VersionMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{26} + return file_p2p_proto_rawDescGZIP(), []int{27} } func (x *VersionMessage) GetProtocolVersion() uint32 { @@ -1561,7 +1608,7 @@ type RejectMessage struct { func (x *RejectMessage) Reset() { *x = RejectMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[27] + mi := &file_p2p_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1574,7 +1621,7 @@ func (x *RejectMessage) String() string { func (*RejectMessage) ProtoMessage() {} func (x *RejectMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[27] + mi := &file_p2p_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1587,7 +1634,7 @@ func (x *RejectMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use RejectMessage.ProtoReflect.Descriptor instead. func (*RejectMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{27} + return file_p2p_proto_rawDescGZIP(), []int{28} } func (x *RejectMessage) GetReason() string { @@ -1608,7 +1655,7 @@ type RequestPruningPointUTXOSetMessage struct { func (x *RequestPruningPointUTXOSetMessage) Reset() { *x = RequestPruningPointUTXOSetMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[28] + mi := &file_p2p_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1621,7 +1668,7 @@ func (x *RequestPruningPointUTXOSetMessage) String() string { func (*RequestPruningPointUTXOSetMessage) ProtoMessage() {} func (x *RequestPruningPointUTXOSetMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[28] + mi := &file_p2p_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1634,7 +1681,7 @@ func (x *RequestPruningPointUTXOSetMessage) ProtoReflect() protoreflect.Message // Deprecated: Use RequestPruningPointUTXOSetMessage.ProtoReflect.Descriptor instead. func (*RequestPruningPointUTXOSetMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{28} + return file_p2p_proto_rawDescGZIP(), []int{29} } func (x *RequestPruningPointUTXOSetMessage) GetPruningPointHash() *Hash { @@ -1655,7 +1702,7 @@ type PruningPointUtxoSetChunkMessage struct { func (x *PruningPointUtxoSetChunkMessage) Reset() { *x = PruningPointUtxoSetChunkMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[29] + mi := &file_p2p_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1668,7 +1715,7 @@ func (x *PruningPointUtxoSetChunkMessage) String() string { func (*PruningPointUtxoSetChunkMessage) ProtoMessage() {} func (x *PruningPointUtxoSetChunkMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[29] + mi := &file_p2p_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1681,7 +1728,7 @@ func (x *PruningPointUtxoSetChunkMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use PruningPointUtxoSetChunkMessage.ProtoReflect.Descriptor instead. func (*PruningPointUtxoSetChunkMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{29} + return file_p2p_proto_rawDescGZIP(), []int{30} } func (x *PruningPointUtxoSetChunkMessage) GetOutpointAndUtxoEntryPairs() []*OutpointAndUtxoEntryPair { @@ -1703,7 +1750,7 @@ type OutpointAndUtxoEntryPair struct { func (x *OutpointAndUtxoEntryPair) Reset() { *x = OutpointAndUtxoEntryPair{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[30] + mi := &file_p2p_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1716,7 +1763,7 @@ func (x *OutpointAndUtxoEntryPair) String() string { func (*OutpointAndUtxoEntryPair) ProtoMessage() {} func (x *OutpointAndUtxoEntryPair) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[30] + mi := &file_p2p_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1729,7 +1776,7 @@ func (x *OutpointAndUtxoEntryPair) ProtoReflect() protoreflect.Message { // Deprecated: Use OutpointAndUtxoEntryPair.ProtoReflect.Descriptor instead. func (*OutpointAndUtxoEntryPair) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{30} + return file_p2p_proto_rawDescGZIP(), []int{31} } func (x *OutpointAndUtxoEntryPair) GetOutpoint() *Outpoint { @@ -1760,7 +1807,7 @@ type UtxoEntry struct { func (x *UtxoEntry) Reset() { *x = UtxoEntry{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[31] + mi := &file_p2p_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1773,7 +1820,7 @@ func (x *UtxoEntry) String() string { func (*UtxoEntry) ProtoMessage() {} func (x *UtxoEntry) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[31] + mi := &file_p2p_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1786,7 +1833,7 @@ func (x *UtxoEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use UtxoEntry.ProtoReflect.Descriptor instead. func (*UtxoEntry) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{31} + return file_p2p_proto_rawDescGZIP(), []int{32} } func (x *UtxoEntry) GetAmount() uint64 { @@ -1826,7 +1873,7 @@ type RequestNextPruningPointUtxoSetChunkMessage struct { func (x *RequestNextPruningPointUtxoSetChunkMessage) Reset() { *x = RequestNextPruningPointUtxoSetChunkMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[32] + mi := &file_p2p_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1839,7 +1886,7 @@ func (x *RequestNextPruningPointUtxoSetChunkMessage) String() string { func (*RequestNextPruningPointUtxoSetChunkMessage) ProtoMessage() {} func (x *RequestNextPruningPointUtxoSetChunkMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[32] + mi := &file_p2p_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1852,7 +1899,7 @@ func (x *RequestNextPruningPointUtxoSetChunkMessage) ProtoReflect() protoreflect // Deprecated: Use RequestNextPruningPointUtxoSetChunkMessage.ProtoReflect.Descriptor instead. func (*RequestNextPruningPointUtxoSetChunkMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{32} + return file_p2p_proto_rawDescGZIP(), []int{33} } type DonePruningPointUtxoSetChunksMessage struct { @@ -1864,7 +1911,7 @@ type DonePruningPointUtxoSetChunksMessage struct { func (x *DonePruningPointUtxoSetChunksMessage) Reset() { *x = DonePruningPointUtxoSetChunksMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[33] + mi := &file_p2p_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1877,7 +1924,7 @@ func (x *DonePruningPointUtxoSetChunksMessage) String() string { func (*DonePruningPointUtxoSetChunksMessage) ProtoMessage() {} func (x *DonePruningPointUtxoSetChunksMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[33] + mi := &file_p2p_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1890,7 +1937,7 @@ func (x *DonePruningPointUtxoSetChunksMessage) ProtoReflect() protoreflect.Messa // Deprecated: Use DonePruningPointUtxoSetChunksMessage.ProtoReflect.Descriptor instead. func (*DonePruningPointUtxoSetChunksMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{33} + return file_p2p_proto_rawDescGZIP(), []int{34} } type RequestIBDBlocksMessage struct { @@ -1904,7 +1951,7 @@ type RequestIBDBlocksMessage struct { func (x *RequestIBDBlocksMessage) Reset() { *x = RequestIBDBlocksMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[34] + mi := &file_p2p_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1917,7 +1964,7 @@ func (x *RequestIBDBlocksMessage) String() string { func (*RequestIBDBlocksMessage) ProtoMessage() {} func (x *RequestIBDBlocksMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[34] + mi := &file_p2p_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1930,7 +1977,7 @@ func (x *RequestIBDBlocksMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestIBDBlocksMessage.ProtoReflect.Descriptor instead. func (*RequestIBDBlocksMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{34} + return file_p2p_proto_rawDescGZIP(), []int{35} } func (x *RequestIBDBlocksMessage) GetHashes() []*Hash { @@ -1949,7 +1996,7 @@ type UnexpectedPruningPointMessage struct { func (x *UnexpectedPruningPointMessage) Reset() { *x = UnexpectedPruningPointMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[35] + mi := &file_p2p_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1962,7 +2009,7 @@ func (x *UnexpectedPruningPointMessage) String() string { func (*UnexpectedPruningPointMessage) ProtoMessage() {} func (x *UnexpectedPruningPointMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[35] + mi := &file_p2p_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1975,7 +2022,7 @@ func (x *UnexpectedPruningPointMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use UnexpectedPruningPointMessage.ProtoReflect.Descriptor instead. func (*UnexpectedPruningPointMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{35} + return file_p2p_proto_rawDescGZIP(), []int{36} } type IbdBlockLocatorMessage struct { @@ -1990,7 +2037,7 @@ type IbdBlockLocatorMessage struct { func (x *IbdBlockLocatorMessage) Reset() { *x = IbdBlockLocatorMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[36] + mi := &file_p2p_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2003,7 +2050,7 @@ func (x *IbdBlockLocatorMessage) String() string { func (*IbdBlockLocatorMessage) ProtoMessage() {} func (x *IbdBlockLocatorMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[36] + mi := &file_p2p_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2016,7 +2063,7 @@ func (x *IbdBlockLocatorMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use IbdBlockLocatorMessage.ProtoReflect.Descriptor instead. func (*IbdBlockLocatorMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{36} + return file_p2p_proto_rawDescGZIP(), []int{37} } func (x *IbdBlockLocatorMessage) GetTargetHash() *Hash { @@ -2044,7 +2091,7 @@ type IbdBlockLocatorHighestHashMessage struct { func (x *IbdBlockLocatorHighestHashMessage) Reset() { *x = IbdBlockLocatorHighestHashMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[37] + mi := &file_p2p_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2057,7 +2104,7 @@ func (x *IbdBlockLocatorHighestHashMessage) String() string { func (*IbdBlockLocatorHighestHashMessage) ProtoMessage() {} func (x *IbdBlockLocatorHighestHashMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[37] + mi := &file_p2p_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2070,7 +2117,7 @@ func (x *IbdBlockLocatorHighestHashMessage) ProtoReflect() protoreflect.Message // Deprecated: Use IbdBlockLocatorHighestHashMessage.ProtoReflect.Descriptor instead. func (*IbdBlockLocatorHighestHashMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{37} + return file_p2p_proto_rawDescGZIP(), []int{38} } func (x *IbdBlockLocatorHighestHashMessage) GetHighestHash() *Hash { @@ -2089,7 +2136,7 @@ type IbdBlockLocatorHighestHashNotFoundMessage struct { func (x *IbdBlockLocatorHighestHashNotFoundMessage) Reset() { *x = IbdBlockLocatorHighestHashNotFoundMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[38] + mi := &file_p2p_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2102,7 +2149,7 @@ func (x *IbdBlockLocatorHighestHashNotFoundMessage) String() string { func (*IbdBlockLocatorHighestHashNotFoundMessage) ProtoMessage() {} func (x *IbdBlockLocatorHighestHashNotFoundMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[38] + mi := &file_p2p_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2115,7 +2162,7 @@ func (x *IbdBlockLocatorHighestHashNotFoundMessage) ProtoReflect() protoreflect. // Deprecated: Use IbdBlockLocatorHighestHashNotFoundMessage.ProtoReflect.Descriptor instead. func (*IbdBlockLocatorHighestHashNotFoundMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{38} + return file_p2p_proto_rawDescGZIP(), []int{39} } type BlockHeadersMessage struct { @@ -2129,7 +2176,7 @@ type BlockHeadersMessage struct { func (x *BlockHeadersMessage) Reset() { *x = BlockHeadersMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[39] + mi := &file_p2p_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2142,7 +2189,7 @@ func (x *BlockHeadersMessage) String() string { func (*BlockHeadersMessage) ProtoMessage() {} func (x *BlockHeadersMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[39] + mi := &file_p2p_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2155,7 +2202,7 @@ func (x *BlockHeadersMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockHeadersMessage.ProtoReflect.Descriptor instead. func (*BlockHeadersMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{39} + return file_p2p_proto_rawDescGZIP(), []int{40} } func (x *BlockHeadersMessage) GetBlockHeaders() []*BlockHeader { @@ -2174,7 +2221,7 @@ type RequestPruningPointAndItsAnticoneMessage struct { func (x *RequestPruningPointAndItsAnticoneMessage) Reset() { *x = RequestPruningPointAndItsAnticoneMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[40] + mi := &file_p2p_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2187,7 +2234,7 @@ func (x *RequestPruningPointAndItsAnticoneMessage) String() string { func (*RequestPruningPointAndItsAnticoneMessage) ProtoMessage() {} func (x *RequestPruningPointAndItsAnticoneMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[40] + mi := &file_p2p_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2200,7 +2247,7 @@ func (x *RequestPruningPointAndItsAnticoneMessage) ProtoReflect() protoreflect.M // Deprecated: Use RequestPruningPointAndItsAnticoneMessage.ProtoReflect.Descriptor instead. func (*RequestPruningPointAndItsAnticoneMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{40} + return file_p2p_proto_rawDescGZIP(), []int{41} } type BlockWithTrustedDataMessage struct { @@ -2217,7 +2264,7 @@ type BlockWithTrustedDataMessage struct { func (x *BlockWithTrustedDataMessage) Reset() { *x = BlockWithTrustedDataMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[41] + mi := &file_p2p_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2230,7 +2277,7 @@ func (x *BlockWithTrustedDataMessage) String() string { func (*BlockWithTrustedDataMessage) ProtoMessage() {} func (x *BlockWithTrustedDataMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[41] + mi := &file_p2p_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2243,7 +2290,7 @@ func (x *BlockWithTrustedDataMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockWithTrustedDataMessage.ProtoReflect.Descriptor instead. func (*BlockWithTrustedDataMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{41} + return file_p2p_proto_rawDescGZIP(), []int{42} } func (x *BlockWithTrustedDataMessage) GetBlock() *BlockMessage { @@ -2286,7 +2333,7 @@ type DaaBlock struct { func (x *DaaBlock) Reset() { *x = DaaBlock{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[42] + mi := &file_p2p_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2299,7 +2346,7 @@ func (x *DaaBlock) String() string { func (*DaaBlock) ProtoMessage() {} func (x *DaaBlock) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[42] + mi := &file_p2p_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2312,7 +2359,7 @@ func (x *DaaBlock) ProtoReflect() protoreflect.Message { // Deprecated: Use DaaBlock.ProtoReflect.Descriptor instead. func (*DaaBlock) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{42} + return file_p2p_proto_rawDescGZIP(), []int{43} } func (x *DaaBlock) GetHeader() *BlockHeader { @@ -2341,7 +2388,7 @@ type BlockGhostdagDataHashPair struct { func (x *BlockGhostdagDataHashPair) Reset() { *x = BlockGhostdagDataHashPair{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[43] + mi := &file_p2p_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2354,7 +2401,7 @@ func (x *BlockGhostdagDataHashPair) String() string { func (*BlockGhostdagDataHashPair) ProtoMessage() {} func (x *BlockGhostdagDataHashPair) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[43] + mi := &file_p2p_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2367,7 +2414,7 @@ func (x *BlockGhostdagDataHashPair) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockGhostdagDataHashPair.ProtoReflect.Descriptor instead. func (*BlockGhostdagDataHashPair) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{43} + return file_p2p_proto_rawDescGZIP(), []int{44} } func (x *BlockGhostdagDataHashPair) GetHash() *Hash { @@ -2400,7 +2447,7 @@ type GhostdagData struct { func (x *GhostdagData) Reset() { *x = GhostdagData{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[44] + mi := &file_p2p_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2413,7 +2460,7 @@ func (x *GhostdagData) String() string { func (*GhostdagData) ProtoMessage() {} func (x *GhostdagData) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[44] + mi := &file_p2p_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2426,7 +2473,7 @@ func (x *GhostdagData) ProtoReflect() protoreflect.Message { // Deprecated: Use GhostdagData.ProtoReflect.Descriptor instead. func (*GhostdagData) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{44} + return file_p2p_proto_rawDescGZIP(), []int{45} } func (x *GhostdagData) GetBlueScore() uint64 { @@ -2483,7 +2530,7 @@ type BluesAnticoneSizes struct { func (x *BluesAnticoneSizes) Reset() { *x = BluesAnticoneSizes{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[45] + mi := &file_p2p_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2496,7 +2543,7 @@ func (x *BluesAnticoneSizes) String() string { func (*BluesAnticoneSizes) ProtoMessage() {} func (x *BluesAnticoneSizes) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[45] + mi := &file_p2p_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2509,7 +2556,7 @@ func (x *BluesAnticoneSizes) ProtoReflect() protoreflect.Message { // Deprecated: Use BluesAnticoneSizes.ProtoReflect.Descriptor instead. func (*BluesAnticoneSizes) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{45} + return file_p2p_proto_rawDescGZIP(), []int{46} } func (x *BluesAnticoneSizes) GetBlueHash() *Hash { @@ -2535,7 +2582,7 @@ type DoneBlocksWithTrustedDataMessage struct { func (x *DoneBlocksWithTrustedDataMessage) Reset() { *x = DoneBlocksWithTrustedDataMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[46] + mi := &file_p2p_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2548,7 +2595,7 @@ func (x *DoneBlocksWithTrustedDataMessage) String() string { func (*DoneBlocksWithTrustedDataMessage) ProtoMessage() {} func (x *DoneBlocksWithTrustedDataMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[46] + mi := &file_p2p_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2561,7 +2608,7 @@ func (x *DoneBlocksWithTrustedDataMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use DoneBlocksWithTrustedDataMessage.ProtoReflect.Descriptor instead. func (*DoneBlocksWithTrustedDataMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{46} + return file_p2p_proto_rawDescGZIP(), []int{47} } type RequestBlockBlueWorkMessage struct { @@ -2575,7 +2622,7 @@ type RequestBlockBlueWorkMessage struct { func (x *RequestBlockBlueWorkMessage) Reset() { *x = RequestBlockBlueWorkMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[47] + mi := &file_p2p_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2588,7 +2635,7 @@ func (x *RequestBlockBlueWorkMessage) String() string { func (*RequestBlockBlueWorkMessage) ProtoMessage() {} func (x *RequestBlockBlueWorkMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[47] + mi := &file_p2p_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2601,7 +2648,7 @@ func (x *RequestBlockBlueWorkMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use RequestBlockBlueWorkMessage.ProtoReflect.Descriptor instead. func (*RequestBlockBlueWorkMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{47} + return file_p2p_proto_rawDescGZIP(), []int{48} } func (x *RequestBlockBlueWorkMessage) GetBlock() *Hash { @@ -2622,7 +2669,7 @@ type BlockBlueWorkMessage struct { func (x *BlockBlueWorkMessage) Reset() { *x = BlockBlueWorkMessage{} if protoimpl.UnsafeEnabled { - mi := &file_p2p_proto_msgTypes[48] + mi := &file_p2p_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2635,7 +2682,7 @@ func (x *BlockBlueWorkMessage) String() string { func (*BlockBlueWorkMessage) ProtoMessage() {} func (x *BlockBlueWorkMessage) ProtoReflect() protoreflect.Message { - mi := &file_p2p_proto_msgTypes[48] + mi := &file_p2p_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2648,7 +2695,7 @@ func (x *BlockBlueWorkMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockBlueWorkMessage.ProtoReflect.Descriptor instead. func (*BlockBlueWorkMessage) Descriptor() ([]byte, []int) { - return file_p2p_proto_rawDescGZIP(), []int{48} + return file_p2p_proto_rawDescGZIP(), []int{49} } func (x *BlockBlueWorkMessage) GetBlueWork() []byte { @@ -2741,249 +2788,254 @@ var file_p2p_proto_rawDesc = []byte{ 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xca, 0x03, 0x0a, 0x0b, 0x42, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xcd, 0x03, 0x0a, 0x0b, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, - 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0c, 0x70, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x0e, 0x68, 0x61, 0x73, - 0x68, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, - 0x73, 0x68, 0x52, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, - 0x6f, 0x74, 0x12, 0x43, 0x0a, 0x14, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x49, 0x64, - 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, - 0x68, 0x52, 0x14, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x49, 0x64, 0x4d, 0x65, 0x72, - 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0e, 0x75, 0x74, 0x78, 0x6f, 0x43, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, - 0x52, 0x0e, 0x75, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, - 0x0a, 0x04, 0x62, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x62, 0x69, - 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x61, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, 0x61, 0x61, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, - 0x12, 0x35, 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, - 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x1c, 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x12, - 0x14, 0x0a, 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, - 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0x5f, 0x0a, 0x1a, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x68, 0x69, 0x67, 0x68, 0x48, 0x61, 0x73, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, - 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x08, 0x68, 0x69, 0x67, 0x68, 0x48, 0x61, 0x73, 0x68, - 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x3e, 0x0a, 0x13, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, - 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x06, - 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0x6f, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x29, 0x0a, 0x07, 0x6c, 0x6f, 0x77, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, - 0x68, 0x52, 0x07, 0x6c, 0x6f, 0x77, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2b, 0x0a, 0x08, 0x68, 0x69, - 0x67, 0x68, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x08, 0x68, - 0x69, 0x67, 0x68, 0x48, 0x61, 0x73, 0x68, 0x22, 0x1b, 0x0a, 0x19, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x4e, 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x6f, 0x6e, 0x65, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x44, 0x0a, 0x19, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, - 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, - 0x22, 0x48, 0x0a, 0x1a, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, - 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x46, 0x0a, 0x1a, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, - 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, - 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x02, - 0x69, 0x64, 0x22, 0x3b, 0x0a, 0x14, 0x49, 0x6e, 0x76, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x68, 0x61, - 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, - 0x44, 0x0a, 0x16, 0x49, 0x6e, 0x76, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x69, 0x64, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, - 0x72, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x23, 0x0a, 0x0b, 0x50, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0x23, 0x0a, 0x0b, 0x50, 0x6f, - 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x22, - 0x0f, 0x0a, 0x0d, 0x56, 0x65, 0x72, 0x61, 0x63, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0xd2, 0x02, 0x0a, 0x0e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, - 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2f, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x77, 0x69, 0x72, 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, - 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, - 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, - 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x78, 0x12, 0x3b, - 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, - 0x2e, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x52, 0x0c, 0x73, - 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x22, 0x27, 0x0a, 0x0d, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x60, - 0x0a, 0x21, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x10, 0x70, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x10, - 0x70, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, - 0x22, 0x84, 0x01, 0x0a, 0x1f, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x55, 0x74, 0x78, 0x6f, 0x53, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x61, 0x0a, 0x19, 0x6f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x41, 0x6e, 0x64, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x61, 0x69, 0x72, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, - 0x69, 0x72, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x6e, 0x64, 0x55, - 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x19, 0x6f, 0x75, - 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x6e, 0x64, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x50, 0x61, 0x69, 0x72, 0x73, 0x22, 0x7f, 0x0a, 0x18, 0x4f, 0x75, 0x74, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x41, 0x6e, 0x64, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, - 0x61, 0x69, 0x72, 0x12, 0x2f, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, - 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x09, 0x75, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, - 0x69, 0x72, 0x65, 0x2e, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x75, - 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0xaf, 0x01, 0x0a, 0x09, 0x55, 0x74, 0x78, - 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, - 0x0a, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, - 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, - 0x69, 0x72, 0x65, 0x2e, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x4b, 0x65, 0x79, 0x52, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x61, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, - 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, - 0x69, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x22, 0x2c, 0x0a, 0x2a, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x74, 0x78, 0x6f, 0x53, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, - 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x26, 0x0a, 0x24, 0x44, 0x6f, 0x6e, 0x65, - 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x74, 0x78, 0x6f, - 0x53, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x42, 0x0a, 0x17, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x42, 0x44, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x68, - 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x06, 0x68, 0x61, - 0x73, 0x68, 0x65, 0x73, 0x22, 0x1f, 0x0a, 0x1d, 0x55, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x49, 0x62, 0x64, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x07, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, + 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x07, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x37, 0x0a, 0x0e, + 0x68, 0x61, 0x73, 0x68, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, - 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x73, - 0x68, 0x12, 0x3f, 0x0a, 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, - 0x72, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x12, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x61, 0x73, 0x68, - 0x65, 0x73, 0x22, 0x56, 0x0a, 0x21, 0x49, 0x62, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x48, 0x61, 0x73, 0x68, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x31, 0x0a, 0x0b, 0x68, 0x69, 0x67, 0x68, 0x65, - 0x73, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0b, 0x68, - 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0x2b, 0x0a, 0x29, 0x49, 0x62, - 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x69, 0x67, - 0x68, 0x65, 0x73, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x51, 0x0a, 0x13, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, - 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, - 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0c, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x2a, 0x0a, 0x28, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x41, 0x6e, 0x64, 0x49, 0x74, 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x1b, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x57, 0x69, 0x74, 0x68, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, - 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, - 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x12, 0x31, 0x0a, 0x09, 0x64, 0x61, 0x61, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, - 0x2e, 0x44, 0x61, 0x61, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x09, 0x64, 0x61, 0x61, 0x57, 0x69, - 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x48, 0x0a, 0x0c, 0x67, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, - 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x68, 0x6f, 0x73, - 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x61, 0x73, 0x68, 0x50, 0x61, 0x69, 0x72, - 0x52, 0x0c, 0x67, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0x77, - 0x0a, 0x08, 0x44, 0x61, 0x61, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2e, 0x0a, 0x06, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x0c, 0x67, 0x68, - 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x47, 0x68, 0x6f, - 0x73, 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x67, 0x68, 0x6f, 0x73, 0x74, - 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0x7d, 0x0a, 0x19, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x47, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x61, 0x73, 0x68, - 0x50, 0x61, 0x69, 0x72, 0x12, 0x23, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, + 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x4d, 0x65, 0x72, 0x6b, 0x6c, + 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x43, 0x0a, 0x14, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, + 0x64, 0x49, 0x64, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, + 0x48, 0x61, 0x73, 0x68, 0x52, 0x14, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x49, 0x64, + 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x37, 0x0a, 0x0e, 0x75, 0x74, + 0x78, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, - 0x61, 0x73, 0x68, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x3b, 0x0a, 0x0c, 0x67, 0x68, 0x6f, - 0x73, 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x47, 0x68, 0x6f, 0x73, - 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x67, 0x68, 0x6f, 0x73, 0x74, 0x64, - 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0xbc, 0x02, 0x0a, 0x0c, 0x47, 0x68, 0x6f, 0x73, 0x74, - 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x6c, 0x75, 0x65, - 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, - 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, - 0x6b, 0x12, 0x37, 0x0a, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0e, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x0d, 0x6d, 0x65, - 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x61, 0x73, 0x68, 0x52, 0x0e, 0x75, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x04, 0x62, 0x69, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, + 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, + 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, + 0x6f, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, + 0x6f, 0x72, 0x6b, 0x12, 0x35, 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0d, 0x66, 0x69, 0x6e, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x48, 0x0a, 0x11, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x33, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, + 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, + 0x73, 0x68, 0x65, 0x73, 0x22, 0x1c, 0x0a, 0x04, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, 0x05, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x22, 0x5f, 0x0a, 0x1a, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x2b, 0x0a, 0x08, 0x68, 0x69, 0x67, 0x68, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, + 0x61, 0x73, 0x68, 0x52, 0x08, 0x68, 0x69, 0x67, 0x68, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, 0x0a, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x22, 0x3e, 0x0a, 0x13, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x68, 0x61, + 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x06, 0x68, 0x61, 0x73, + 0x68, 0x65, 0x73, 0x22, 0x6f, 0x0a, 0x15, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x07, + 0x6c, 0x6f, 0x77, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x07, + 0x6c, 0x6f, 0x77, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2b, 0x0a, 0x08, 0x68, 0x69, 0x67, 0x68, 0x48, + 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x08, 0x68, 0x69, 0x67, 0x68, + 0x48, 0x61, 0x73, 0x68, 0x22, 0x1b, 0x0a, 0x19, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4e, + 0x65, 0x78, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x6f, 0x6e, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x44, 0x0a, 0x19, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, + 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0x48, 0x0a, + 0x1a, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x69, + 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x77, 0x69, 0x72, 0x65, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x52, 0x03, 0x69, 0x64, 0x73, 0x22, 0x46, 0x0a, 0x1a, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x22, + 0x3b, 0x0a, 0x14, 0x49, 0x6e, 0x76, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, + 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x22, 0x44, 0x0a, 0x16, + 0x49, 0x6e, 0x76, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x52, 0x03, 0x69, + 0x64, 0x73, 0x22, 0x23, 0x0a, 0x0b, 0x50, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0x23, 0x0a, 0x0b, 0x50, 0x6f, 0x6e, 0x67, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x22, 0x0f, 0x0a, 0x0d, + 0x56, 0x65, 0x72, 0x61, 0x63, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xd2, 0x02, + 0x0a, 0x0e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2f, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, + 0x65, 0x2e, 0x4e, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, + 0x6c, 0x61, 0x79, 0x54, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x64, 0x69, 0x73, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x78, 0x12, 0x3b, 0x0a, 0x0c, 0x73, + 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x53, 0x75, + 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x22, 0x27, 0x0a, 0x0d, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x60, 0x0a, 0x21, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x3b, 0x0a, 0x10, 0x70, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x10, 0x70, 0x72, 0x75, + 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0x84, 0x01, + 0x0a, 0x1f, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x74, + 0x78, 0x6f, 0x53, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x61, 0x0a, 0x19, 0x6f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x6e, 0x64, + 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x61, 0x69, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, + 0x2e, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x6e, 0x64, 0x55, 0x74, 0x78, 0x6f, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x19, 0x6f, 0x75, 0x74, 0x70, 0x6f, + 0x69, 0x6e, 0x74, 0x41, 0x6e, 0x64, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, + 0x61, 0x69, 0x72, 0x73, 0x22, 0x7f, 0x0a, 0x18, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x41, 0x6e, 0x64, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x61, 0x69, 0x72, + 0x12, 0x2f, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x4f, + 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x12, 0x32, 0x0a, 0x09, 0x75, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, + 0x2e, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x75, 0x74, 0x78, 0x6f, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0xaf, 0x01, 0x0a, 0x09, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x44, 0x0a, 0x0f, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, + 0x2e, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, + 0x52, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, + 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, + 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x43, 0x6f, 0x69, + 0x6e, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x43, + 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x22, 0x2c, 0x0a, 0x2a, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x4e, 0x65, 0x78, 0x74, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x55, 0x74, 0x78, 0x6f, 0x53, 0x65, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x26, 0x0a, 0x24, 0x44, 0x6f, 0x6e, 0x65, 0x50, 0x72, 0x75, + 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x74, 0x78, 0x6f, 0x53, 0x65, 0x74, + 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x42, 0x0a, + 0x17, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x42, 0x44, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x68, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x06, 0x68, 0x61, 0x73, 0x68, 0x65, + 0x73, 0x22, 0x1f, 0x0a, 0x1d, 0x55, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, + 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x49, 0x62, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2f, 0x0a, + 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, - 0x73, 0x68, 0x52, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x33, 0x0a, 0x0c, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x64, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, - 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0c, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x53, - 0x65, 0x74, 0x52, 0x65, 0x64, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x41, - 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x42, - 0x6c, 0x75, 0x65, 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, - 0x73, 0x52, 0x12, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, - 0x53, 0x69, 0x7a, 0x65, 0x73, 0x22, 0x65, 0x0a, 0x12, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x41, 0x6e, - 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x08, 0x62, - 0x6c, 0x75, 0x65, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x08, - 0x62, 0x6c, 0x75, 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6e, 0x74, 0x69, - 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, - 0x61, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x22, 0x0a, 0x20, - 0x44, 0x6f, 0x6e, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x57, 0x69, 0x74, 0x68, 0x54, 0x72, - 0x75, 0x73, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x44, 0x0a, 0x1b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x42, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x25, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x73, 0x68, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x3f, + 0x0a, 0x12, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x61, + 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x12, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, + 0x56, 0x0a, 0x21, 0x49, 0x62, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x6f, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x48, 0x61, 0x73, 0x68, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x31, 0x0a, 0x0b, 0x68, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x48, + 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0b, 0x68, 0x69, 0x67, 0x68, + 0x65, 0x73, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0x2b, 0x0a, 0x29, 0x49, 0x62, 0x64, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, + 0x74, 0x48, 0x61, 0x73, 0x68, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x22, 0x51, 0x0a, 0x13, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x0c, 0x62, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x22, 0x2a, 0x0a, 0x28, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x6e, + 0x64, 0x49, 0x74, 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x22, 0xe5, 0x01, 0x0a, 0x1b, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x57, 0x69, 0x74, + 0x68, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x62, 0x6c, 0x6f, + 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x31, + 0x0a, 0x09, 0x64, 0x61, 0x61, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x44, 0x61, + 0x61, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x09, 0x64, 0x61, 0x61, 0x57, 0x69, 0x6e, 0x64, 0x6f, + 0x77, 0x12, 0x48, 0x0a, 0x0c, 0x67, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, + 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, + 0x69, 0x72, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, + 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x61, 0x73, 0x68, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0c, 0x67, + 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x22, 0x77, 0x0a, 0x08, 0x44, + 0x61, 0x61, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2e, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, + 0x69, 0x72, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, + 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x0c, 0x67, 0x68, 0x6f, 0x73, 0x74, + 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x47, 0x68, 0x6f, 0x73, 0x74, 0x64, + 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x67, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, + 0x44, 0x61, 0x74, 0x61, 0x22, 0x7d, 0x0a, 0x19, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x47, 0x68, 0x6f, + 0x73, 0x74, 0x64, 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x61, 0x73, 0x68, 0x50, 0x61, 0x69, + 0x72, 0x12, 0x23, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, + 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x3b, 0x0a, 0x0c, 0x67, 0x68, 0x6f, 0x73, 0x74, 0x64, + 0x61, 0x67, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x47, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, + 0x67, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0c, 0x67, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, 0x44, + 0x61, 0x74, 0x61, 0x22, 0xbc, 0x02, 0x0a, 0x0c, 0x47, 0x68, 0x6f, 0x73, 0x74, 0x64, 0x61, 0x67, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x37, + 0x0a, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, + 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, + 0x53, 0x65, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, - 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x32, 0x0a, 0x14, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, - 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x42, 0x26, 0x5a, 0x24, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61, 0x6e, 0x65, - 0x74, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, - 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x33, + 0x0a, 0x0c, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x52, 0x65, 0x64, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, + 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x0c, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x53, 0x65, 0x74, 0x52, + 0x65, 0x64, 0x73, 0x12, 0x4d, 0x0a, 0x12, 0x62, 0x6c, 0x75, 0x65, 0x73, 0x41, 0x6e, 0x74, 0x69, + 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x42, 0x6c, 0x75, 0x65, + 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x52, 0x12, + 0x62, 0x6c, 0x75, 0x65, 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x73, 0x22, 0x65, 0x0a, 0x12, 0x42, 0x6c, 0x75, 0x65, 0x73, 0x41, 0x6e, 0x74, 0x69, 0x63, + 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x08, 0x62, 0x6c, 0x75, 0x65, + 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x08, 0x62, 0x6c, 0x75, + 0x65, 0x48, 0x61, 0x73, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x6f, 0x6e, + 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x6e, 0x74, + 0x69, 0x63, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x22, 0x0a, 0x20, 0x44, 0x6f, 0x6e, + 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x57, 0x69, 0x74, 0x68, 0x54, 0x72, 0x75, 0x73, 0x74, + 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x44, 0x0a, + 0x1b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6c, 0x75, + 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x05, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x48, 0x61, 0x73, 0x68, 0x52, 0x05, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x22, 0x32, 0x0a, 0x14, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x42, 0x6c, 0x75, 0x65, + 0x57, 0x6f, 0x72, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, + 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x62, + 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x42, 0x26, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x6b, + 0x61, 0x73, 0x70, 0x61, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2998,7 +3050,7 @@ func file_p2p_proto_rawDescGZIP() []byte { return file_p2p_proto_rawDescData } -var file_p2p_proto_msgTypes = make([]protoimpl.MessageInfo, 49) +var file_p2p_proto_msgTypes = make([]protoimpl.MessageInfo, 50) var file_p2p_proto_goTypes = []interface{}{ (*RequestAddressesMessage)(nil), // 0: protowire.RequestAddressesMessage (*AddressesMessage)(nil), // 1: protowire.AddressesMessage @@ -3012,43 +3064,44 @@ var file_p2p_proto_goTypes = []interface{}{ (*TransactionOutput)(nil), // 9: protowire.TransactionOutput (*BlockMessage)(nil), // 10: protowire.BlockMessage (*BlockHeader)(nil), // 11: protowire.BlockHeader - (*Hash)(nil), // 12: protowire.Hash - (*RequestBlockLocatorMessage)(nil), // 13: protowire.RequestBlockLocatorMessage - (*BlockLocatorMessage)(nil), // 14: protowire.BlockLocatorMessage - (*RequestHeadersMessage)(nil), // 15: protowire.RequestHeadersMessage - (*RequestNextHeadersMessage)(nil), // 16: protowire.RequestNextHeadersMessage - (*DoneHeadersMessage)(nil), // 17: protowire.DoneHeadersMessage - (*RequestRelayBlocksMessage)(nil), // 18: protowire.RequestRelayBlocksMessage - (*RequestTransactionsMessage)(nil), // 19: protowire.RequestTransactionsMessage - (*TransactionNotFoundMessage)(nil), // 20: protowire.TransactionNotFoundMessage - (*InvRelayBlockMessage)(nil), // 21: protowire.InvRelayBlockMessage - (*InvTransactionsMessage)(nil), // 22: protowire.InvTransactionsMessage - (*PingMessage)(nil), // 23: protowire.PingMessage - (*PongMessage)(nil), // 24: protowire.PongMessage - (*VerackMessage)(nil), // 25: protowire.VerackMessage - (*VersionMessage)(nil), // 26: protowire.VersionMessage - (*RejectMessage)(nil), // 27: protowire.RejectMessage - (*RequestPruningPointUTXOSetMessage)(nil), // 28: protowire.RequestPruningPointUTXOSetMessage - (*PruningPointUtxoSetChunkMessage)(nil), // 29: protowire.PruningPointUtxoSetChunkMessage - (*OutpointAndUtxoEntryPair)(nil), // 30: protowire.OutpointAndUtxoEntryPair - (*UtxoEntry)(nil), // 31: protowire.UtxoEntry - (*RequestNextPruningPointUtxoSetChunkMessage)(nil), // 32: protowire.RequestNextPruningPointUtxoSetChunkMessage - (*DonePruningPointUtxoSetChunksMessage)(nil), // 33: protowire.DonePruningPointUtxoSetChunksMessage - (*RequestIBDBlocksMessage)(nil), // 34: protowire.RequestIBDBlocksMessage - (*UnexpectedPruningPointMessage)(nil), // 35: protowire.UnexpectedPruningPointMessage - (*IbdBlockLocatorMessage)(nil), // 36: protowire.IbdBlockLocatorMessage - (*IbdBlockLocatorHighestHashMessage)(nil), // 37: protowire.IbdBlockLocatorHighestHashMessage - (*IbdBlockLocatorHighestHashNotFoundMessage)(nil), // 38: protowire.IbdBlockLocatorHighestHashNotFoundMessage - (*BlockHeadersMessage)(nil), // 39: protowire.BlockHeadersMessage - (*RequestPruningPointAndItsAnticoneMessage)(nil), // 40: protowire.RequestPruningPointAndItsAnticoneMessage - (*BlockWithTrustedDataMessage)(nil), // 41: protowire.BlockWithTrustedDataMessage - (*DaaBlock)(nil), // 42: protowire.DaaBlock - (*BlockGhostdagDataHashPair)(nil), // 43: protowire.BlockGhostdagDataHashPair - (*GhostdagData)(nil), // 44: protowire.GhostdagData - (*BluesAnticoneSizes)(nil), // 45: protowire.BluesAnticoneSizes - (*DoneBlocksWithTrustedDataMessage)(nil), // 46: protowire.DoneBlocksWithTrustedDataMessage - (*RequestBlockBlueWorkMessage)(nil), // 47: protowire.RequestBlockBlueWorkMessage - (*BlockBlueWorkMessage)(nil), // 48: protowire.BlockBlueWorkMessage + (*BlockLevelParents)(nil), // 12: protowire.BlockLevelParents + (*Hash)(nil), // 13: protowire.Hash + (*RequestBlockLocatorMessage)(nil), // 14: protowire.RequestBlockLocatorMessage + (*BlockLocatorMessage)(nil), // 15: protowire.BlockLocatorMessage + (*RequestHeadersMessage)(nil), // 16: protowire.RequestHeadersMessage + (*RequestNextHeadersMessage)(nil), // 17: protowire.RequestNextHeadersMessage + (*DoneHeadersMessage)(nil), // 18: protowire.DoneHeadersMessage + (*RequestRelayBlocksMessage)(nil), // 19: protowire.RequestRelayBlocksMessage + (*RequestTransactionsMessage)(nil), // 20: protowire.RequestTransactionsMessage + (*TransactionNotFoundMessage)(nil), // 21: protowire.TransactionNotFoundMessage + (*InvRelayBlockMessage)(nil), // 22: protowire.InvRelayBlockMessage + (*InvTransactionsMessage)(nil), // 23: protowire.InvTransactionsMessage + (*PingMessage)(nil), // 24: protowire.PingMessage + (*PongMessage)(nil), // 25: protowire.PongMessage + (*VerackMessage)(nil), // 26: protowire.VerackMessage + (*VersionMessage)(nil), // 27: protowire.VersionMessage + (*RejectMessage)(nil), // 28: protowire.RejectMessage + (*RequestPruningPointUTXOSetMessage)(nil), // 29: protowire.RequestPruningPointUTXOSetMessage + (*PruningPointUtxoSetChunkMessage)(nil), // 30: protowire.PruningPointUtxoSetChunkMessage + (*OutpointAndUtxoEntryPair)(nil), // 31: protowire.OutpointAndUtxoEntryPair + (*UtxoEntry)(nil), // 32: protowire.UtxoEntry + (*RequestNextPruningPointUtxoSetChunkMessage)(nil), // 33: protowire.RequestNextPruningPointUtxoSetChunkMessage + (*DonePruningPointUtxoSetChunksMessage)(nil), // 34: protowire.DonePruningPointUtxoSetChunksMessage + (*RequestIBDBlocksMessage)(nil), // 35: protowire.RequestIBDBlocksMessage + (*UnexpectedPruningPointMessage)(nil), // 36: protowire.UnexpectedPruningPointMessage + (*IbdBlockLocatorMessage)(nil), // 37: protowire.IbdBlockLocatorMessage + (*IbdBlockLocatorHighestHashMessage)(nil), // 38: protowire.IbdBlockLocatorHighestHashMessage + (*IbdBlockLocatorHighestHashNotFoundMessage)(nil), // 39: protowire.IbdBlockLocatorHighestHashNotFoundMessage + (*BlockHeadersMessage)(nil), // 40: protowire.BlockHeadersMessage + (*RequestPruningPointAndItsAnticoneMessage)(nil), // 41: protowire.RequestPruningPointAndItsAnticoneMessage + (*BlockWithTrustedDataMessage)(nil), // 42: protowire.BlockWithTrustedDataMessage + (*DaaBlock)(nil), // 43: protowire.DaaBlock + (*BlockGhostdagDataHashPair)(nil), // 44: protowire.BlockGhostdagDataHashPair + (*GhostdagData)(nil), // 45: protowire.GhostdagData + (*BluesAnticoneSizes)(nil), // 46: protowire.BluesAnticoneSizes + (*DoneBlocksWithTrustedDataMessage)(nil), // 47: protowire.DoneBlocksWithTrustedDataMessage + (*RequestBlockBlueWorkMessage)(nil), // 48: protowire.RequestBlockBlueWorkMessage + (*BlockBlueWorkMessage)(nil), // 49: protowire.BlockBlueWorkMessage } var file_p2p_proto_depIdxs = []int32{ 3, // 0: protowire.RequestAddressesMessage.subnetworkId:type_name -> protowire.SubnetworkId @@ -3061,50 +3114,51 @@ var file_p2p_proto_depIdxs = []int32{ 8, // 7: protowire.TransactionOutput.scriptPublicKey:type_name -> protowire.ScriptPublicKey 11, // 8: protowire.BlockMessage.header:type_name -> protowire.BlockHeader 4, // 9: protowire.BlockMessage.transactions:type_name -> protowire.TransactionMessage - 12, // 10: protowire.BlockHeader.parentHashes:type_name -> protowire.Hash - 12, // 11: protowire.BlockHeader.hashMerkleRoot:type_name -> protowire.Hash - 12, // 12: protowire.BlockHeader.acceptedIdMerkleRoot:type_name -> protowire.Hash - 12, // 13: protowire.BlockHeader.utxoCommitment:type_name -> protowire.Hash - 12, // 14: protowire.BlockHeader.finalityPoint:type_name -> protowire.Hash - 12, // 15: protowire.RequestBlockLocatorMessage.highHash:type_name -> protowire.Hash - 12, // 16: protowire.BlockLocatorMessage.hashes:type_name -> protowire.Hash - 12, // 17: protowire.RequestHeadersMessage.lowHash:type_name -> protowire.Hash - 12, // 18: protowire.RequestHeadersMessage.highHash:type_name -> protowire.Hash - 12, // 19: protowire.RequestRelayBlocksMessage.hashes:type_name -> protowire.Hash - 7, // 20: protowire.RequestTransactionsMessage.ids:type_name -> protowire.TransactionId - 7, // 21: protowire.TransactionNotFoundMessage.id:type_name -> protowire.TransactionId - 12, // 22: protowire.InvRelayBlockMessage.hash:type_name -> protowire.Hash - 7, // 23: protowire.InvTransactionsMessage.ids:type_name -> protowire.TransactionId - 2, // 24: protowire.VersionMessage.address:type_name -> protowire.NetAddress - 3, // 25: protowire.VersionMessage.subnetworkId:type_name -> protowire.SubnetworkId - 12, // 26: protowire.RequestPruningPointUTXOSetMessage.pruningPointHash:type_name -> protowire.Hash - 30, // 27: protowire.PruningPointUtxoSetChunkMessage.outpointAndUtxoEntryPairs:type_name -> protowire.OutpointAndUtxoEntryPair - 6, // 28: protowire.OutpointAndUtxoEntryPair.outpoint:type_name -> protowire.Outpoint - 31, // 29: protowire.OutpointAndUtxoEntryPair.utxoEntry:type_name -> protowire.UtxoEntry - 8, // 30: protowire.UtxoEntry.scriptPublicKey:type_name -> protowire.ScriptPublicKey - 12, // 31: protowire.RequestIBDBlocksMessage.hashes:type_name -> protowire.Hash - 12, // 32: protowire.IbdBlockLocatorMessage.targetHash:type_name -> protowire.Hash - 12, // 33: protowire.IbdBlockLocatorMessage.blockLocatorHashes:type_name -> protowire.Hash - 12, // 34: protowire.IbdBlockLocatorHighestHashMessage.highestHash:type_name -> protowire.Hash - 11, // 35: protowire.BlockHeadersMessage.blockHeaders:type_name -> protowire.BlockHeader - 10, // 36: protowire.BlockWithTrustedDataMessage.block:type_name -> protowire.BlockMessage - 42, // 37: protowire.BlockWithTrustedDataMessage.daaWindow:type_name -> protowire.DaaBlock - 43, // 38: protowire.BlockWithTrustedDataMessage.ghostdagData:type_name -> protowire.BlockGhostdagDataHashPair - 11, // 39: protowire.DaaBlock.header:type_name -> protowire.BlockHeader - 44, // 40: protowire.DaaBlock.ghostdagData:type_name -> protowire.GhostdagData - 12, // 41: protowire.BlockGhostdagDataHashPair.hash:type_name -> protowire.Hash - 44, // 42: protowire.BlockGhostdagDataHashPair.ghostdagData:type_name -> protowire.GhostdagData - 12, // 43: protowire.GhostdagData.selectedParent:type_name -> protowire.Hash - 12, // 44: protowire.GhostdagData.mergeSetBlues:type_name -> protowire.Hash - 12, // 45: protowire.GhostdagData.mergeSetReds:type_name -> protowire.Hash - 45, // 46: protowire.GhostdagData.bluesAnticoneSizes:type_name -> protowire.BluesAnticoneSizes - 12, // 47: protowire.BluesAnticoneSizes.blueHash:type_name -> protowire.Hash - 12, // 48: protowire.RequestBlockBlueWorkMessage.block:type_name -> protowire.Hash - 49, // [49:49] is the sub-list for method output_type - 49, // [49:49] is the sub-list for method input_type - 49, // [49:49] is the sub-list for extension type_name - 49, // [49:49] is the sub-list for extension extendee - 0, // [0:49] is the sub-list for field type_name + 12, // 10: protowire.BlockHeader.parents:type_name -> protowire.BlockLevelParents + 13, // 11: protowire.BlockHeader.hashMerkleRoot:type_name -> protowire.Hash + 13, // 12: protowire.BlockHeader.acceptedIdMerkleRoot:type_name -> protowire.Hash + 13, // 13: protowire.BlockHeader.utxoCommitment:type_name -> protowire.Hash + 13, // 14: protowire.BlockHeader.finalityPoint:type_name -> protowire.Hash + 13, // 15: protowire.BlockLevelParents.parentHashes:type_name -> protowire.Hash + 13, // 16: protowire.RequestBlockLocatorMessage.highHash:type_name -> protowire.Hash + 13, // 17: protowire.BlockLocatorMessage.hashes:type_name -> protowire.Hash + 13, // 18: protowire.RequestHeadersMessage.lowHash:type_name -> protowire.Hash + 13, // 19: protowire.RequestHeadersMessage.highHash:type_name -> protowire.Hash + 13, // 20: protowire.RequestRelayBlocksMessage.hashes:type_name -> protowire.Hash + 7, // 21: protowire.RequestTransactionsMessage.ids:type_name -> protowire.TransactionId + 7, // 22: protowire.TransactionNotFoundMessage.id:type_name -> protowire.TransactionId + 13, // 23: protowire.InvRelayBlockMessage.hash:type_name -> protowire.Hash + 7, // 24: protowire.InvTransactionsMessage.ids:type_name -> protowire.TransactionId + 2, // 25: protowire.VersionMessage.address:type_name -> protowire.NetAddress + 3, // 26: protowire.VersionMessage.subnetworkId:type_name -> protowire.SubnetworkId + 13, // 27: protowire.RequestPruningPointUTXOSetMessage.pruningPointHash:type_name -> protowire.Hash + 31, // 28: protowire.PruningPointUtxoSetChunkMessage.outpointAndUtxoEntryPairs:type_name -> protowire.OutpointAndUtxoEntryPair + 6, // 29: protowire.OutpointAndUtxoEntryPair.outpoint:type_name -> protowire.Outpoint + 32, // 30: protowire.OutpointAndUtxoEntryPair.utxoEntry:type_name -> protowire.UtxoEntry + 8, // 31: protowire.UtxoEntry.scriptPublicKey:type_name -> protowire.ScriptPublicKey + 13, // 32: protowire.RequestIBDBlocksMessage.hashes:type_name -> protowire.Hash + 13, // 33: protowire.IbdBlockLocatorMessage.targetHash:type_name -> protowire.Hash + 13, // 34: protowire.IbdBlockLocatorMessage.blockLocatorHashes:type_name -> protowire.Hash + 13, // 35: protowire.IbdBlockLocatorHighestHashMessage.highestHash:type_name -> protowire.Hash + 11, // 36: protowire.BlockHeadersMessage.blockHeaders:type_name -> protowire.BlockHeader + 10, // 37: protowire.BlockWithTrustedDataMessage.block:type_name -> protowire.BlockMessage + 43, // 38: protowire.BlockWithTrustedDataMessage.daaWindow:type_name -> protowire.DaaBlock + 44, // 39: protowire.BlockWithTrustedDataMessage.ghostdagData:type_name -> protowire.BlockGhostdagDataHashPair + 11, // 40: protowire.DaaBlock.header:type_name -> protowire.BlockHeader + 45, // 41: protowire.DaaBlock.ghostdagData:type_name -> protowire.GhostdagData + 13, // 42: protowire.BlockGhostdagDataHashPair.hash:type_name -> protowire.Hash + 45, // 43: protowire.BlockGhostdagDataHashPair.ghostdagData:type_name -> protowire.GhostdagData + 13, // 44: protowire.GhostdagData.selectedParent:type_name -> protowire.Hash + 13, // 45: protowire.GhostdagData.mergeSetBlues:type_name -> protowire.Hash + 13, // 46: protowire.GhostdagData.mergeSetReds:type_name -> protowire.Hash + 46, // 47: protowire.GhostdagData.bluesAnticoneSizes:type_name -> protowire.BluesAnticoneSizes + 13, // 48: protowire.BluesAnticoneSizes.blueHash:type_name -> protowire.Hash + 13, // 49: protowire.RequestBlockBlueWorkMessage.block:type_name -> protowire.Hash + 50, // [50:50] is the sub-list for method output_type + 50, // [50:50] is the sub-list for method input_type + 50, // [50:50] is the sub-list for extension type_name + 50, // [50:50] is the sub-list for extension extendee + 0, // [0:50] is the sub-list for field type_name } func init() { file_p2p_proto_init() } @@ -3258,7 +3312,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Hash); i { + switch v := v.(*BlockLevelParents); i { case 0: return &v.state case 1: @@ -3270,7 +3324,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestBlockLocatorMessage); i { + switch v := v.(*Hash); i { case 0: return &v.state case 1: @@ -3282,7 +3336,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockLocatorMessage); i { + switch v := v.(*RequestBlockLocatorMessage); i { case 0: return &v.state case 1: @@ -3294,7 +3348,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestHeadersMessage); i { + switch v := v.(*BlockLocatorMessage); i { case 0: return &v.state case 1: @@ -3306,7 +3360,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestNextHeadersMessage); i { + switch v := v.(*RequestHeadersMessage); i { case 0: return &v.state case 1: @@ -3318,7 +3372,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DoneHeadersMessage); i { + switch v := v.(*RequestNextHeadersMessage); i { case 0: return &v.state case 1: @@ -3330,7 +3384,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestRelayBlocksMessage); i { + switch v := v.(*DoneHeadersMessage); i { case 0: return &v.state case 1: @@ -3342,7 +3396,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestTransactionsMessage); i { + switch v := v.(*RequestRelayBlocksMessage); i { case 0: return &v.state case 1: @@ -3354,7 +3408,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransactionNotFoundMessage); i { + switch v := v.(*RequestTransactionsMessage); i { case 0: return &v.state case 1: @@ -3366,7 +3420,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InvRelayBlockMessage); i { + switch v := v.(*TransactionNotFoundMessage); i { case 0: return &v.state case 1: @@ -3378,7 +3432,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InvTransactionsMessage); i { + switch v := v.(*InvRelayBlockMessage); i { case 0: return &v.state case 1: @@ -3390,7 +3444,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PingMessage); i { + switch v := v.(*InvTransactionsMessage); i { case 0: return &v.state case 1: @@ -3402,7 +3456,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PongMessage); i { + switch v := v.(*PingMessage); i { case 0: return &v.state case 1: @@ -3414,7 +3468,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VerackMessage); i { + switch v := v.(*PongMessage); i { case 0: return &v.state case 1: @@ -3426,7 +3480,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VersionMessage); i { + switch v := v.(*VerackMessage); i { case 0: return &v.state case 1: @@ -3438,7 +3492,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RejectMessage); i { + switch v := v.(*VersionMessage); i { case 0: return &v.state case 1: @@ -3450,7 +3504,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestPruningPointUTXOSetMessage); i { + switch v := v.(*RejectMessage); i { case 0: return &v.state case 1: @@ -3462,7 +3516,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PruningPointUtxoSetChunkMessage); i { + switch v := v.(*RequestPruningPointUTXOSetMessage); i { case 0: return &v.state case 1: @@ -3474,7 +3528,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OutpointAndUtxoEntryPair); i { + switch v := v.(*PruningPointUtxoSetChunkMessage); i { case 0: return &v.state case 1: @@ -3486,7 +3540,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UtxoEntry); i { + switch v := v.(*OutpointAndUtxoEntryPair); i { case 0: return &v.state case 1: @@ -3498,7 +3552,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestNextPruningPointUtxoSetChunkMessage); i { + switch v := v.(*UtxoEntry); i { case 0: return &v.state case 1: @@ -3510,7 +3564,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DonePruningPointUtxoSetChunksMessage); i { + switch v := v.(*RequestNextPruningPointUtxoSetChunkMessage); i { case 0: return &v.state case 1: @@ -3522,7 +3576,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestIBDBlocksMessage); i { + switch v := v.(*DonePruningPointUtxoSetChunksMessage); i { case 0: return &v.state case 1: @@ -3534,7 +3588,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnexpectedPruningPointMessage); i { + switch v := v.(*RequestIBDBlocksMessage); i { case 0: return &v.state case 1: @@ -3546,7 +3600,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IbdBlockLocatorMessage); i { + switch v := v.(*UnexpectedPruningPointMessage); i { case 0: return &v.state case 1: @@ -3558,7 +3612,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IbdBlockLocatorHighestHashMessage); i { + switch v := v.(*IbdBlockLocatorMessage); i { case 0: return &v.state case 1: @@ -3570,7 +3624,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IbdBlockLocatorHighestHashNotFoundMessage); i { + switch v := v.(*IbdBlockLocatorHighestHashMessage); i { case 0: return &v.state case 1: @@ -3582,7 +3636,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockHeadersMessage); i { + switch v := v.(*IbdBlockLocatorHighestHashNotFoundMessage); i { case 0: return &v.state case 1: @@ -3594,7 +3648,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestPruningPointAndItsAnticoneMessage); i { + switch v := v.(*BlockHeadersMessage); i { case 0: return &v.state case 1: @@ -3606,7 +3660,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockWithTrustedDataMessage); i { + switch v := v.(*RequestPruningPointAndItsAnticoneMessage); i { case 0: return &v.state case 1: @@ -3618,7 +3672,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DaaBlock); i { + switch v := v.(*BlockWithTrustedDataMessage); i { case 0: return &v.state case 1: @@ -3630,7 +3684,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockGhostdagDataHashPair); i { + switch v := v.(*DaaBlock); i { case 0: return &v.state case 1: @@ -3642,7 +3696,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GhostdagData); i { + switch v := v.(*BlockGhostdagDataHashPair); i { case 0: return &v.state case 1: @@ -3654,7 +3708,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BluesAnticoneSizes); i { + switch v := v.(*GhostdagData); i { case 0: return &v.state case 1: @@ -3666,7 +3720,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DoneBlocksWithTrustedDataMessage); i { + switch v := v.(*BluesAnticoneSizes); i { case 0: return &v.state case 1: @@ -3678,7 +3732,7 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestBlockBlueWorkMessage); i { + switch v := v.(*DoneBlocksWithTrustedDataMessage); i { case 0: return &v.state case 1: @@ -3690,6 +3744,18 @@ func file_p2p_proto_init() { } } file_p2p_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RequestBlockBlueWorkMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p2p_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BlockBlueWorkMessage); i { case 0: return &v.state @@ -3708,7 +3774,7 @@ func file_p2p_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_p2p_proto_rawDesc, NumEnums: 0, - NumMessages: 49, + NumMessages: 50, NumExtensions: 0, NumServices: 0, }, diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/p2p.proto b/infrastructure/network/netadapter/server/grpcserver/protowire/p2p.proto index 3229556a56..e1b372d22f 100644 --- a/infrastructure/network/netadapter/server/grpcserver/protowire/p2p.proto +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/p2p.proto @@ -64,7 +64,7 @@ message BlockMessage{ message BlockHeader{ uint32 version = 1; - repeated Hash parentHashes = 2; + repeated BlockLevelParents parents = 12; Hash hashMerkleRoot = 3; Hash acceptedIdMerkleRoot = 4; Hash utxoCommitment = 5; @@ -76,6 +76,10 @@ message BlockHeader{ Hash finalityPoint = 11; } +message BlockLevelParents { + repeated Hash parentHashes = 1; +} + message Hash{ bytes bytes = 1; } diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/p2p_header.go b/infrastructure/network/netadapter/server/grpcserver/protowire/p2p_header.go index 761e91b8ae..b2d73b7323 100644 --- a/infrastructure/network/netadapter/server/grpcserver/protowire/p2p_header.go +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/p2p_header.go @@ -2,6 +2,7 @@ package protowire import ( "github.com/kaspanet/kaspad/app/appmessage" + "github.com/kaspanet/kaspad/domain/consensus/model/externalapi" "github.com/kaspanet/kaspad/util/mstime" "github.com/pkg/errors" "math" @@ -12,7 +13,7 @@ func (x *BlockHeader) toAppMessage() (*appmessage.MsgBlockHeader, error) { if x == nil { return nil, errors.Wrapf(errorNil, "BlockHeaderMessage is nil") } - parentHashes, err := protoHashesToDomain(x.ParentHashes) + parents, err := protoParentsToDomain(x.Parents) if err != nil { return nil, err } @@ -37,7 +38,7 @@ func (x *BlockHeader) toAppMessage() (*appmessage.MsgBlockHeader, error) { } return &appmessage.MsgBlockHeader{ Version: uint16(x.Version), - ParentHashes: parentHashes, + Parents: parents, HashMerkleRoot: hashMerkleRoot, AcceptedIDMerkleRoot: acceptedIDMerkleRoot, UTXOCommitment: utxoCommitment, @@ -53,7 +54,7 @@ func (x *BlockHeader) toAppMessage() (*appmessage.MsgBlockHeader, error) { func (x *BlockHeader) fromAppMessage(msgBlockHeader *appmessage.MsgBlockHeader) error { *x = BlockHeader{ Version: uint32(msgBlockHeader.Version), - ParentHashes: domainHashesToProto(msgBlockHeader.ParentHashes), + Parents: domainParentsToProto(msgBlockHeader.Parents), HashMerkleRoot: domainHashToProto(msgBlockHeader.HashMerkleRoot), AcceptedIdMerkleRoot: domainHashToProto(msgBlockHeader.AcceptedIDMerkleRoot), UtxoCommitment: domainHashToProto(msgBlockHeader.UTXOCommitment), @@ -66,3 +67,48 @@ func (x *BlockHeader) fromAppMessage(msgBlockHeader *appmessage.MsgBlockHeader) } return nil } + +func (x *BlockLevelParents) toDomain() (externalapi.BlockLevelParents, error) { + if x == nil { + return nil, errors.Wrap(errorNil, "BlockLevelParents is nil") + } + domainBlockLevelParents := make(externalapi.BlockLevelParents, len(x.ParentHashes)) + for i, parentHash := range x.ParentHashes { + var err error + domainBlockLevelParents[i], err = externalapi.NewDomainHashFromByteSlice(parentHash.Bytes) + if err != nil { + return nil, err + } + } + return domainBlockLevelParents, nil +} + +func protoParentsToDomain(protoParents []*BlockLevelParents) ([]externalapi.BlockLevelParents, error) { + domainParents := make([]externalapi.BlockLevelParents, len(protoParents)) + for i, protoBlockLevelParents := range protoParents { + var err error + domainParents[i], err = protoBlockLevelParents.toDomain() + if err != nil { + return nil, err + } + } + return domainParents, nil +} + +func domainBlockLevelParentsToProto(parentHashes externalapi.BlockLevelParents) *BlockLevelParents { + protoParentHashes := make([]*Hash, len(parentHashes)) + for i, parentHash := range parentHashes { + protoParentHashes[i] = &Hash{Bytes: parentHash.ByteSlice()} + } + return &BlockLevelParents{ + ParentHashes: protoParentHashes, + } +} + +func domainParentsToProto(parents []externalapi.BlockLevelParents) []*BlockLevelParents { + protoParents := make([]*BlockLevelParents, len(parents)) + for i, hash := range parents { + protoParents[i] = domainBlockLevelParentsToProto(hash) + } + return protoParents +} diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.pb.go b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.pb.go index f0fb10d25d..a5981d7928 100644 --- a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.pb.go +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.pb.go @@ -76,7 +76,7 @@ func (x SubmitBlockResponseMessage_RejectReason) Number() protoreflect.EnumNumbe // Deprecated: Use SubmitBlockResponseMessage_RejectReason.Descriptor instead. func (SubmitBlockResponseMessage_RejectReason) EnumDescriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{16, 0} + return file_rpc_proto_rawDescGZIP(), []int{17, 0} } // RPCError represents a generic non-internal error. @@ -197,17 +197,17 @@ type RpcBlockHeader struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - ParentHashes []string `protobuf:"bytes,2,rep,name=parentHashes,proto3" json:"parentHashes,omitempty"` - HashMerkleRoot string `protobuf:"bytes,3,opt,name=hashMerkleRoot,proto3" json:"hashMerkleRoot,omitempty"` - AcceptedIdMerkleRoot string `protobuf:"bytes,4,opt,name=acceptedIdMerkleRoot,proto3" json:"acceptedIdMerkleRoot,omitempty"` - UtxoCommitment string `protobuf:"bytes,5,opt,name=utxoCommitment,proto3" json:"utxoCommitment,omitempty"` - Timestamp int64 `protobuf:"varint,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - Bits uint32 `protobuf:"varint,7,opt,name=bits,proto3" json:"bits,omitempty"` - Nonce uint64 `protobuf:"varint,8,opt,name=nonce,proto3" json:"nonce,omitempty"` - DaaScore uint64 `protobuf:"varint,9,opt,name=daaScore,proto3" json:"daaScore,omitempty"` - BlueWork string `protobuf:"bytes,10,opt,name=blueWork,proto3" json:"blueWork,omitempty"` - FinalityPoint string `protobuf:"bytes,11,opt,name=finalityPoint,proto3" json:"finalityPoint,omitempty"` + Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` + Parents []*RpcBlockLevelParents `protobuf:"bytes,12,rep,name=parents,proto3" json:"parents,omitempty"` + HashMerkleRoot string `protobuf:"bytes,3,opt,name=hashMerkleRoot,proto3" json:"hashMerkleRoot,omitempty"` + AcceptedIdMerkleRoot string `protobuf:"bytes,4,opt,name=acceptedIdMerkleRoot,proto3" json:"acceptedIdMerkleRoot,omitempty"` + UtxoCommitment string `protobuf:"bytes,5,opt,name=utxoCommitment,proto3" json:"utxoCommitment,omitempty"` + Timestamp int64 `protobuf:"varint,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Bits uint32 `protobuf:"varint,7,opt,name=bits,proto3" json:"bits,omitempty"` + Nonce uint64 `protobuf:"varint,8,opt,name=nonce,proto3" json:"nonce,omitempty"` + DaaScore uint64 `protobuf:"varint,9,opt,name=daaScore,proto3" json:"daaScore,omitempty"` + BlueWork string `protobuf:"bytes,10,opt,name=blueWork,proto3" json:"blueWork,omitempty"` + FinalityPoint string `protobuf:"bytes,11,opt,name=finalityPoint,proto3" json:"finalityPoint,omitempty"` } func (x *RpcBlockHeader) Reset() { @@ -249,9 +249,9 @@ func (x *RpcBlockHeader) GetVersion() uint32 { return 0 } -func (x *RpcBlockHeader) GetParentHashes() []string { +func (x *RpcBlockHeader) GetParents() []*RpcBlockLevelParents { if x != nil { - return x.ParentHashes + return x.Parents } return nil } @@ -319,6 +319,53 @@ func (x *RpcBlockHeader) GetFinalityPoint() string { return "" } +type RpcBlockLevelParents struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ParentHashes []string `protobuf:"bytes,1,rep,name=parentHashes,proto3" json:"parentHashes,omitempty"` +} + +func (x *RpcBlockLevelParents) Reset() { + *x = RpcBlockLevelParents{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RpcBlockLevelParents) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RpcBlockLevelParents) ProtoMessage() {} + +func (x *RpcBlockLevelParents) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RpcBlockLevelParents.ProtoReflect.Descriptor instead. +func (*RpcBlockLevelParents) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{3} +} + +func (x *RpcBlockLevelParents) GetParentHashes() []string { + if x != nil { + return x.ParentHashes + } + return nil +} + type RpcBlockVerboseData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -336,7 +383,7 @@ type RpcBlockVerboseData struct { func (x *RpcBlockVerboseData) Reset() { *x = RpcBlockVerboseData{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[3] + mi := &file_rpc_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -349,7 +396,7 @@ func (x *RpcBlockVerboseData) String() string { func (*RpcBlockVerboseData) ProtoMessage() {} func (x *RpcBlockVerboseData) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[3] + mi := &file_rpc_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -362,7 +409,7 @@ func (x *RpcBlockVerboseData) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcBlockVerboseData.ProtoReflect.Descriptor instead. func (*RpcBlockVerboseData) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{3} + return file_rpc_proto_rawDescGZIP(), []int{4} } func (x *RpcBlockVerboseData) GetHash() string { @@ -432,7 +479,7 @@ type RpcTransaction struct { func (x *RpcTransaction) Reset() { *x = RpcTransaction{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[4] + mi := &file_rpc_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -445,7 +492,7 @@ func (x *RpcTransaction) String() string { func (*RpcTransaction) ProtoMessage() {} func (x *RpcTransaction) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[4] + mi := &file_rpc_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -458,7 +505,7 @@ func (x *RpcTransaction) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcTransaction.ProtoReflect.Descriptor instead. func (*RpcTransaction) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{4} + return file_rpc_proto_rawDescGZIP(), []int{5} } func (x *RpcTransaction) GetVersion() uint32 { @@ -532,7 +579,7 @@ type RpcTransactionInput struct { func (x *RpcTransactionInput) Reset() { *x = RpcTransactionInput{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[5] + mi := &file_rpc_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -545,7 +592,7 @@ func (x *RpcTransactionInput) String() string { func (*RpcTransactionInput) ProtoMessage() {} func (x *RpcTransactionInput) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[5] + mi := &file_rpc_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -558,7 +605,7 @@ func (x *RpcTransactionInput) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcTransactionInput.ProtoReflect.Descriptor instead. func (*RpcTransactionInput) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{5} + return file_rpc_proto_rawDescGZIP(), []int{6} } func (x *RpcTransactionInput) GetPreviousOutpoint() *RpcOutpoint { @@ -608,7 +655,7 @@ type RpcScriptPublicKey struct { func (x *RpcScriptPublicKey) Reset() { *x = RpcScriptPublicKey{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[6] + mi := &file_rpc_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -621,7 +668,7 @@ func (x *RpcScriptPublicKey) String() string { func (*RpcScriptPublicKey) ProtoMessage() {} func (x *RpcScriptPublicKey) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[6] + mi := &file_rpc_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -634,7 +681,7 @@ func (x *RpcScriptPublicKey) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcScriptPublicKey.ProtoReflect.Descriptor instead. func (*RpcScriptPublicKey) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{6} + return file_rpc_proto_rawDescGZIP(), []int{7} } func (x *RpcScriptPublicKey) GetVersion() uint32 { @@ -664,7 +711,7 @@ type RpcTransactionOutput struct { func (x *RpcTransactionOutput) Reset() { *x = RpcTransactionOutput{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[7] + mi := &file_rpc_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -677,7 +724,7 @@ func (x *RpcTransactionOutput) String() string { func (*RpcTransactionOutput) ProtoMessage() {} func (x *RpcTransactionOutput) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[7] + mi := &file_rpc_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -690,7 +737,7 @@ func (x *RpcTransactionOutput) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcTransactionOutput.ProtoReflect.Descriptor instead. func (*RpcTransactionOutput) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{7} + return file_rpc_proto_rawDescGZIP(), []int{8} } func (x *RpcTransactionOutput) GetAmount() uint64 { @@ -726,7 +773,7 @@ type RpcOutpoint struct { func (x *RpcOutpoint) Reset() { *x = RpcOutpoint{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[8] + mi := &file_rpc_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -739,7 +786,7 @@ func (x *RpcOutpoint) String() string { func (*RpcOutpoint) ProtoMessage() {} func (x *RpcOutpoint) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[8] + mi := &file_rpc_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -752,7 +799,7 @@ func (x *RpcOutpoint) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcOutpoint.ProtoReflect.Descriptor instead. func (*RpcOutpoint) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{8} + return file_rpc_proto_rawDescGZIP(), []int{9} } func (x *RpcOutpoint) GetTransactionId() string { @@ -783,7 +830,7 @@ type RpcUtxoEntry struct { func (x *RpcUtxoEntry) Reset() { *x = RpcUtxoEntry{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[9] + mi := &file_rpc_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -796,7 +843,7 @@ func (x *RpcUtxoEntry) String() string { func (*RpcUtxoEntry) ProtoMessage() {} func (x *RpcUtxoEntry) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[9] + mi := &file_rpc_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -809,7 +856,7 @@ func (x *RpcUtxoEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcUtxoEntry.ProtoReflect.Descriptor instead. func (*RpcUtxoEntry) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{9} + return file_rpc_proto_rawDescGZIP(), []int{10} } func (x *RpcUtxoEntry) GetAmount() uint64 { @@ -855,7 +902,7 @@ type RpcTransactionVerboseData struct { func (x *RpcTransactionVerboseData) Reset() { *x = RpcTransactionVerboseData{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[10] + mi := &file_rpc_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -868,7 +915,7 @@ func (x *RpcTransactionVerboseData) String() string { func (*RpcTransactionVerboseData) ProtoMessage() {} func (x *RpcTransactionVerboseData) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[10] + mi := &file_rpc_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -881,7 +928,7 @@ func (x *RpcTransactionVerboseData) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcTransactionVerboseData.ProtoReflect.Descriptor instead. func (*RpcTransactionVerboseData) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{10} + return file_rpc_proto_rawDescGZIP(), []int{11} } func (x *RpcTransactionVerboseData) GetTransactionId() string { @@ -928,7 +975,7 @@ type RpcTransactionInputVerboseData struct { func (x *RpcTransactionInputVerboseData) Reset() { *x = RpcTransactionInputVerboseData{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[11] + mi := &file_rpc_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -941,7 +988,7 @@ func (x *RpcTransactionInputVerboseData) String() string { func (*RpcTransactionInputVerboseData) ProtoMessage() {} func (x *RpcTransactionInputVerboseData) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[11] + mi := &file_rpc_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -954,7 +1001,7 @@ func (x *RpcTransactionInputVerboseData) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcTransactionInputVerboseData.ProtoReflect.Descriptor instead. func (*RpcTransactionInputVerboseData) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{11} + return file_rpc_proto_rawDescGZIP(), []int{12} } type RpcTransactionOutputVerboseData struct { @@ -969,7 +1016,7 @@ type RpcTransactionOutputVerboseData struct { func (x *RpcTransactionOutputVerboseData) Reset() { *x = RpcTransactionOutputVerboseData{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[12] + mi := &file_rpc_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -982,7 +1029,7 @@ func (x *RpcTransactionOutputVerboseData) String() string { func (*RpcTransactionOutputVerboseData) ProtoMessage() {} func (x *RpcTransactionOutputVerboseData) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[12] + mi := &file_rpc_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -995,7 +1042,7 @@ func (x *RpcTransactionOutputVerboseData) ProtoReflect() protoreflect.Message { // Deprecated: Use RpcTransactionOutputVerboseData.ProtoReflect.Descriptor instead. func (*RpcTransactionOutputVerboseData) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{12} + return file_rpc_proto_rawDescGZIP(), []int{13} } func (x *RpcTransactionOutputVerboseData) GetScriptPublicKeyType() string { @@ -1024,7 +1071,7 @@ type GetCurrentNetworkRequestMessage struct { func (x *GetCurrentNetworkRequestMessage) Reset() { *x = GetCurrentNetworkRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[13] + mi := &file_rpc_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1037,7 +1084,7 @@ func (x *GetCurrentNetworkRequestMessage) String() string { func (*GetCurrentNetworkRequestMessage) ProtoMessage() {} func (x *GetCurrentNetworkRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[13] + mi := &file_rpc_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1050,7 +1097,7 @@ func (x *GetCurrentNetworkRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCurrentNetworkRequestMessage.ProtoReflect.Descriptor instead. func (*GetCurrentNetworkRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{13} + return file_rpc_proto_rawDescGZIP(), []int{14} } type GetCurrentNetworkResponseMessage struct { @@ -1065,7 +1112,7 @@ type GetCurrentNetworkResponseMessage struct { func (x *GetCurrentNetworkResponseMessage) Reset() { *x = GetCurrentNetworkResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[14] + mi := &file_rpc_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1078,7 +1125,7 @@ func (x *GetCurrentNetworkResponseMessage) String() string { func (*GetCurrentNetworkResponseMessage) ProtoMessage() {} func (x *GetCurrentNetworkResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[14] + mi := &file_rpc_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1091,7 +1138,7 @@ func (x *GetCurrentNetworkResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCurrentNetworkResponseMessage.ProtoReflect.Descriptor instead. func (*GetCurrentNetworkResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{14} + return file_rpc_proto_rawDescGZIP(), []int{15} } func (x *GetCurrentNetworkResponseMessage) GetCurrentNetwork() string { @@ -1123,7 +1170,7 @@ type SubmitBlockRequestMessage struct { func (x *SubmitBlockRequestMessage) Reset() { *x = SubmitBlockRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[15] + mi := &file_rpc_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1136,7 +1183,7 @@ func (x *SubmitBlockRequestMessage) String() string { func (*SubmitBlockRequestMessage) ProtoMessage() {} func (x *SubmitBlockRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[15] + mi := &file_rpc_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1149,7 +1196,7 @@ func (x *SubmitBlockRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitBlockRequestMessage.ProtoReflect.Descriptor instead. func (*SubmitBlockRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{15} + return file_rpc_proto_rawDescGZIP(), []int{16} } func (x *SubmitBlockRequestMessage) GetBlock() *RpcBlock { @@ -1171,7 +1218,7 @@ type SubmitBlockResponseMessage struct { func (x *SubmitBlockResponseMessage) Reset() { *x = SubmitBlockResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[16] + mi := &file_rpc_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1184,7 +1231,7 @@ func (x *SubmitBlockResponseMessage) String() string { func (*SubmitBlockResponseMessage) ProtoMessage() {} func (x *SubmitBlockResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[16] + mi := &file_rpc_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1197,7 +1244,7 @@ func (x *SubmitBlockResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitBlockResponseMessage.ProtoReflect.Descriptor instead. func (*SubmitBlockResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{16} + return file_rpc_proto_rawDescGZIP(), []int{17} } func (x *SubmitBlockResponseMessage) GetRejectReason() SubmitBlockResponseMessage_RejectReason { @@ -1230,7 +1277,7 @@ type GetBlockTemplateRequestMessage struct { func (x *GetBlockTemplateRequestMessage) Reset() { *x = GetBlockTemplateRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[17] + mi := &file_rpc_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1243,7 +1290,7 @@ func (x *GetBlockTemplateRequestMessage) String() string { func (*GetBlockTemplateRequestMessage) ProtoMessage() {} func (x *GetBlockTemplateRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[17] + mi := &file_rpc_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1256,7 +1303,7 @@ func (x *GetBlockTemplateRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBlockTemplateRequestMessage.ProtoReflect.Descriptor instead. func (*GetBlockTemplateRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{17} + return file_rpc_proto_rawDescGZIP(), []int{18} } func (x *GetBlockTemplateRequestMessage) GetPayAddress() string { @@ -1283,7 +1330,7 @@ type GetBlockTemplateResponseMessage struct { func (x *GetBlockTemplateResponseMessage) Reset() { *x = GetBlockTemplateResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[18] + mi := &file_rpc_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1296,7 +1343,7 @@ func (x *GetBlockTemplateResponseMessage) String() string { func (*GetBlockTemplateResponseMessage) ProtoMessage() {} func (x *GetBlockTemplateResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[18] + mi := &file_rpc_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1309,7 +1356,7 @@ func (x *GetBlockTemplateResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBlockTemplateResponseMessage.ProtoReflect.Descriptor instead. func (*GetBlockTemplateResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{18} + return file_rpc_proto_rawDescGZIP(), []int{19} } func (x *GetBlockTemplateResponseMessage) GetBlock() *RpcBlock { @@ -1345,7 +1392,7 @@ type NotifyBlockAddedRequestMessage struct { func (x *NotifyBlockAddedRequestMessage) Reset() { *x = NotifyBlockAddedRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[19] + mi := &file_rpc_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1358,7 +1405,7 @@ func (x *NotifyBlockAddedRequestMessage) String() string { func (*NotifyBlockAddedRequestMessage) ProtoMessage() {} func (x *NotifyBlockAddedRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[19] + mi := &file_rpc_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1371,7 +1418,7 @@ func (x *NotifyBlockAddedRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyBlockAddedRequestMessage.ProtoReflect.Descriptor instead. func (*NotifyBlockAddedRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{19} + return file_rpc_proto_rawDescGZIP(), []int{20} } type NotifyBlockAddedResponseMessage struct { @@ -1385,7 +1432,7 @@ type NotifyBlockAddedResponseMessage struct { func (x *NotifyBlockAddedResponseMessage) Reset() { *x = NotifyBlockAddedResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[20] + mi := &file_rpc_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1398,7 +1445,7 @@ func (x *NotifyBlockAddedResponseMessage) String() string { func (*NotifyBlockAddedResponseMessage) ProtoMessage() {} func (x *NotifyBlockAddedResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[20] + mi := &file_rpc_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1411,7 +1458,7 @@ func (x *NotifyBlockAddedResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyBlockAddedResponseMessage.ProtoReflect.Descriptor instead. func (*NotifyBlockAddedResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{20} + return file_rpc_proto_rawDescGZIP(), []int{21} } func (x *NotifyBlockAddedResponseMessage) GetError() *RPCError { @@ -1436,7 +1483,7 @@ type BlockAddedNotificationMessage struct { func (x *BlockAddedNotificationMessage) Reset() { *x = BlockAddedNotificationMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[21] + mi := &file_rpc_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1449,7 +1496,7 @@ func (x *BlockAddedNotificationMessage) String() string { func (*BlockAddedNotificationMessage) ProtoMessage() {} func (x *BlockAddedNotificationMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[21] + mi := &file_rpc_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1462,7 +1509,7 @@ func (x *BlockAddedNotificationMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use BlockAddedNotificationMessage.ProtoReflect.Descriptor instead. func (*BlockAddedNotificationMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{21} + return file_rpc_proto_rawDescGZIP(), []int{22} } func (x *BlockAddedNotificationMessage) GetBlock() *RpcBlock { @@ -1483,7 +1530,7 @@ type GetPeerAddressesRequestMessage struct { func (x *GetPeerAddressesRequestMessage) Reset() { *x = GetPeerAddressesRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[22] + mi := &file_rpc_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1496,7 +1543,7 @@ func (x *GetPeerAddressesRequestMessage) String() string { func (*GetPeerAddressesRequestMessage) ProtoMessage() {} func (x *GetPeerAddressesRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[22] + mi := &file_rpc_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1509,7 +1556,7 @@ func (x *GetPeerAddressesRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPeerAddressesRequestMessage.ProtoReflect.Descriptor instead. func (*GetPeerAddressesRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{22} + return file_rpc_proto_rawDescGZIP(), []int{23} } type GetPeerAddressesResponseMessage struct { @@ -1525,7 +1572,7 @@ type GetPeerAddressesResponseMessage struct { func (x *GetPeerAddressesResponseMessage) Reset() { *x = GetPeerAddressesResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[23] + mi := &file_rpc_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1538,7 +1585,7 @@ func (x *GetPeerAddressesResponseMessage) String() string { func (*GetPeerAddressesResponseMessage) ProtoMessage() {} func (x *GetPeerAddressesResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[23] + mi := &file_rpc_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1551,7 +1598,7 @@ func (x *GetPeerAddressesResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPeerAddressesResponseMessage.ProtoReflect.Descriptor instead. func (*GetPeerAddressesResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{23} + return file_rpc_proto_rawDescGZIP(), []int{24} } func (x *GetPeerAddressesResponseMessage) GetAddresses() []*GetPeerAddressesKnownAddressMessage { @@ -1586,7 +1633,7 @@ type GetPeerAddressesKnownAddressMessage struct { func (x *GetPeerAddressesKnownAddressMessage) Reset() { *x = GetPeerAddressesKnownAddressMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[24] + mi := &file_rpc_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1599,7 +1646,7 @@ func (x *GetPeerAddressesKnownAddressMessage) String() string { func (*GetPeerAddressesKnownAddressMessage) ProtoMessage() {} func (x *GetPeerAddressesKnownAddressMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[24] + mi := &file_rpc_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1612,7 +1659,7 @@ func (x *GetPeerAddressesKnownAddressMessage) ProtoReflect() protoreflect.Messag // Deprecated: Use GetPeerAddressesKnownAddressMessage.ProtoReflect.Descriptor instead. func (*GetPeerAddressesKnownAddressMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{24} + return file_rpc_proto_rawDescGZIP(), []int{25} } func (x *GetPeerAddressesKnownAddressMessage) GetAddr() string { @@ -1633,7 +1680,7 @@ type GetSelectedTipHashRequestMessage struct { func (x *GetSelectedTipHashRequestMessage) Reset() { *x = GetSelectedTipHashRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[25] + mi := &file_rpc_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1646,7 +1693,7 @@ func (x *GetSelectedTipHashRequestMessage) String() string { func (*GetSelectedTipHashRequestMessage) ProtoMessage() {} func (x *GetSelectedTipHashRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[25] + mi := &file_rpc_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1659,7 +1706,7 @@ func (x *GetSelectedTipHashRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSelectedTipHashRequestMessage.ProtoReflect.Descriptor instead. func (*GetSelectedTipHashRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{25} + return file_rpc_proto_rawDescGZIP(), []int{26} } type GetSelectedTipHashResponseMessage struct { @@ -1674,7 +1721,7 @@ type GetSelectedTipHashResponseMessage struct { func (x *GetSelectedTipHashResponseMessage) Reset() { *x = GetSelectedTipHashResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[26] + mi := &file_rpc_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1687,7 +1734,7 @@ func (x *GetSelectedTipHashResponseMessage) String() string { func (*GetSelectedTipHashResponseMessage) ProtoMessage() {} func (x *GetSelectedTipHashResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[26] + mi := &file_rpc_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1700,7 +1747,7 @@ func (x *GetSelectedTipHashResponseMessage) ProtoReflect() protoreflect.Message // Deprecated: Use GetSelectedTipHashResponseMessage.ProtoReflect.Descriptor instead. func (*GetSelectedTipHashResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{26} + return file_rpc_proto_rawDescGZIP(), []int{27} } func (x *GetSelectedTipHashResponseMessage) GetSelectedTipHash() string { @@ -1731,7 +1778,7 @@ type GetMempoolEntryRequestMessage struct { func (x *GetMempoolEntryRequestMessage) Reset() { *x = GetMempoolEntryRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[27] + mi := &file_rpc_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1744,7 +1791,7 @@ func (x *GetMempoolEntryRequestMessage) String() string { func (*GetMempoolEntryRequestMessage) ProtoMessage() {} func (x *GetMempoolEntryRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[27] + mi := &file_rpc_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1757,7 +1804,7 @@ func (x *GetMempoolEntryRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMempoolEntryRequestMessage.ProtoReflect.Descriptor instead. func (*GetMempoolEntryRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{27} + return file_rpc_proto_rawDescGZIP(), []int{28} } func (x *GetMempoolEntryRequestMessage) GetTxId() string { @@ -1779,7 +1826,7 @@ type GetMempoolEntryResponseMessage struct { func (x *GetMempoolEntryResponseMessage) Reset() { *x = GetMempoolEntryResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[28] + mi := &file_rpc_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1792,7 +1839,7 @@ func (x *GetMempoolEntryResponseMessage) String() string { func (*GetMempoolEntryResponseMessage) ProtoMessage() {} func (x *GetMempoolEntryResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[28] + mi := &file_rpc_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1805,7 +1852,7 @@ func (x *GetMempoolEntryResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMempoolEntryResponseMessage.ProtoReflect.Descriptor instead. func (*GetMempoolEntryResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{28} + return file_rpc_proto_rawDescGZIP(), []int{29} } func (x *GetMempoolEntryResponseMessage) GetEntry() *MempoolEntry { @@ -1833,7 +1880,7 @@ type GetMempoolEntriesRequestMessage struct { func (x *GetMempoolEntriesRequestMessage) Reset() { *x = GetMempoolEntriesRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[29] + mi := &file_rpc_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1846,7 +1893,7 @@ func (x *GetMempoolEntriesRequestMessage) String() string { func (*GetMempoolEntriesRequestMessage) ProtoMessage() {} func (x *GetMempoolEntriesRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[29] + mi := &file_rpc_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1859,7 +1906,7 @@ func (x *GetMempoolEntriesRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMempoolEntriesRequestMessage.ProtoReflect.Descriptor instead. func (*GetMempoolEntriesRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{29} + return file_rpc_proto_rawDescGZIP(), []int{30} } type GetMempoolEntriesResponseMessage struct { @@ -1874,7 +1921,7 @@ type GetMempoolEntriesResponseMessage struct { func (x *GetMempoolEntriesResponseMessage) Reset() { *x = GetMempoolEntriesResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[30] + mi := &file_rpc_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1887,7 +1934,7 @@ func (x *GetMempoolEntriesResponseMessage) String() string { func (*GetMempoolEntriesResponseMessage) ProtoMessage() {} func (x *GetMempoolEntriesResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[30] + mi := &file_rpc_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1900,7 +1947,7 @@ func (x *GetMempoolEntriesResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMempoolEntriesResponseMessage.ProtoReflect.Descriptor instead. func (*GetMempoolEntriesResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{30} + return file_rpc_proto_rawDescGZIP(), []int{31} } func (x *GetMempoolEntriesResponseMessage) GetEntries() []*MempoolEntry { @@ -1929,7 +1976,7 @@ type MempoolEntry struct { func (x *MempoolEntry) Reset() { *x = MempoolEntry{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[31] + mi := &file_rpc_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1942,7 +1989,7 @@ func (x *MempoolEntry) String() string { func (*MempoolEntry) ProtoMessage() {} func (x *MempoolEntry) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[31] + mi := &file_rpc_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1955,7 +2002,7 @@ func (x *MempoolEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use MempoolEntry.ProtoReflect.Descriptor instead. func (*MempoolEntry) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{31} + return file_rpc_proto_rawDescGZIP(), []int{32} } func (x *MempoolEntry) GetFee() uint64 { @@ -1983,7 +2030,7 @@ type GetConnectedPeerInfoRequestMessage struct { func (x *GetConnectedPeerInfoRequestMessage) Reset() { *x = GetConnectedPeerInfoRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[32] + mi := &file_rpc_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1996,7 +2043,7 @@ func (x *GetConnectedPeerInfoRequestMessage) String() string { func (*GetConnectedPeerInfoRequestMessage) ProtoMessage() {} func (x *GetConnectedPeerInfoRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[32] + mi := &file_rpc_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2009,7 +2056,7 @@ func (x *GetConnectedPeerInfoRequestMessage) ProtoReflect() protoreflect.Message // Deprecated: Use GetConnectedPeerInfoRequestMessage.ProtoReflect.Descriptor instead. func (*GetConnectedPeerInfoRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{32} + return file_rpc_proto_rawDescGZIP(), []int{33} } type GetConnectedPeerInfoResponseMessage struct { @@ -2024,7 +2071,7 @@ type GetConnectedPeerInfoResponseMessage struct { func (x *GetConnectedPeerInfoResponseMessage) Reset() { *x = GetConnectedPeerInfoResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[33] + mi := &file_rpc_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2037,7 +2084,7 @@ func (x *GetConnectedPeerInfoResponseMessage) String() string { func (*GetConnectedPeerInfoResponseMessage) ProtoMessage() {} func (x *GetConnectedPeerInfoResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[33] + mi := &file_rpc_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2050,7 +2097,7 @@ func (x *GetConnectedPeerInfoResponseMessage) ProtoReflect() protoreflect.Messag // Deprecated: Use GetConnectedPeerInfoResponseMessage.ProtoReflect.Descriptor instead. func (*GetConnectedPeerInfoResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{33} + return file_rpc_proto_rawDescGZIP(), []int{34} } func (x *GetConnectedPeerInfoResponseMessage) GetInfos() []*GetConnectedPeerInfoMessage { @@ -2091,7 +2138,7 @@ type GetConnectedPeerInfoMessage struct { func (x *GetConnectedPeerInfoMessage) Reset() { *x = GetConnectedPeerInfoMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[34] + mi := &file_rpc_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2104,7 +2151,7 @@ func (x *GetConnectedPeerInfoMessage) String() string { func (*GetConnectedPeerInfoMessage) ProtoMessage() {} func (x *GetConnectedPeerInfoMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[34] + mi := &file_rpc_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2117,7 +2164,7 @@ func (x *GetConnectedPeerInfoMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetConnectedPeerInfoMessage.ProtoReflect.Descriptor instead. func (*GetConnectedPeerInfoMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{34} + return file_rpc_proto_rawDescGZIP(), []int{35} } func (x *GetConnectedPeerInfoMessage) GetId() string { @@ -2198,7 +2245,7 @@ type AddPeerRequestMessage struct { func (x *AddPeerRequestMessage) Reset() { *x = AddPeerRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[35] + mi := &file_rpc_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2211,7 +2258,7 @@ func (x *AddPeerRequestMessage) String() string { func (*AddPeerRequestMessage) ProtoMessage() {} func (x *AddPeerRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[35] + mi := &file_rpc_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2224,7 +2271,7 @@ func (x *AddPeerRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use AddPeerRequestMessage.ProtoReflect.Descriptor instead. func (*AddPeerRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{35} + return file_rpc_proto_rawDescGZIP(), []int{36} } func (x *AddPeerRequestMessage) GetAddress() string { @@ -2252,7 +2299,7 @@ type AddPeerResponseMessage struct { func (x *AddPeerResponseMessage) Reset() { *x = AddPeerResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[36] + mi := &file_rpc_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2265,7 +2312,7 @@ func (x *AddPeerResponseMessage) String() string { func (*AddPeerResponseMessage) ProtoMessage() {} func (x *AddPeerResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[36] + mi := &file_rpc_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2278,7 +2325,7 @@ func (x *AddPeerResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use AddPeerResponseMessage.ProtoReflect.Descriptor instead. func (*AddPeerResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{36} + return file_rpc_proto_rawDescGZIP(), []int{37} } func (x *AddPeerResponseMessage) GetError() *RPCError { @@ -2301,7 +2348,7 @@ type SubmitTransactionRequestMessage struct { func (x *SubmitTransactionRequestMessage) Reset() { *x = SubmitTransactionRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[37] + mi := &file_rpc_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2314,7 +2361,7 @@ func (x *SubmitTransactionRequestMessage) String() string { func (*SubmitTransactionRequestMessage) ProtoMessage() {} func (x *SubmitTransactionRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[37] + mi := &file_rpc_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2327,7 +2374,7 @@ func (x *SubmitTransactionRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitTransactionRequestMessage.ProtoReflect.Descriptor instead. func (*SubmitTransactionRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{37} + return file_rpc_proto_rawDescGZIP(), []int{38} } func (x *SubmitTransactionRequestMessage) GetTransaction() *RpcTransaction { @@ -2357,7 +2404,7 @@ type SubmitTransactionResponseMessage struct { func (x *SubmitTransactionResponseMessage) Reset() { *x = SubmitTransactionResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[38] + mi := &file_rpc_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2370,7 +2417,7 @@ func (x *SubmitTransactionResponseMessage) String() string { func (*SubmitTransactionResponseMessage) ProtoMessage() {} func (x *SubmitTransactionResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[38] + mi := &file_rpc_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2383,7 +2430,7 @@ func (x *SubmitTransactionResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use SubmitTransactionResponseMessage.ProtoReflect.Descriptor instead. func (*SubmitTransactionResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{38} + return file_rpc_proto_rawDescGZIP(), []int{39} } func (x *SubmitTransactionResponseMessage) GetTransactionId() string { @@ -2412,7 +2459,7 @@ type NotifyVirtualSelectedParentChainChangedRequestMessage struct { func (x *NotifyVirtualSelectedParentChainChangedRequestMessage) Reset() { *x = NotifyVirtualSelectedParentChainChangedRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[39] + mi := &file_rpc_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2425,7 +2472,7 @@ func (x *NotifyVirtualSelectedParentChainChangedRequestMessage) String() string func (*NotifyVirtualSelectedParentChainChangedRequestMessage) ProtoMessage() {} func (x *NotifyVirtualSelectedParentChainChangedRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[39] + mi := &file_rpc_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2438,7 +2485,7 @@ func (x *NotifyVirtualSelectedParentChainChangedRequestMessage) ProtoReflect() p // Deprecated: Use NotifyVirtualSelectedParentChainChangedRequestMessage.ProtoReflect.Descriptor instead. func (*NotifyVirtualSelectedParentChainChangedRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{39} + return file_rpc_proto_rawDescGZIP(), []int{40} } type NotifyVirtualSelectedParentChainChangedResponseMessage struct { @@ -2452,7 +2499,7 @@ type NotifyVirtualSelectedParentChainChangedResponseMessage struct { func (x *NotifyVirtualSelectedParentChainChangedResponseMessage) Reset() { *x = NotifyVirtualSelectedParentChainChangedResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[40] + mi := &file_rpc_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2465,7 +2512,7 @@ func (x *NotifyVirtualSelectedParentChainChangedResponseMessage) String() string func (*NotifyVirtualSelectedParentChainChangedResponseMessage) ProtoMessage() {} func (x *NotifyVirtualSelectedParentChainChangedResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[40] + mi := &file_rpc_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2478,7 +2525,7 @@ func (x *NotifyVirtualSelectedParentChainChangedResponseMessage) ProtoReflect() // Deprecated: Use NotifyVirtualSelectedParentChainChangedResponseMessage.ProtoReflect.Descriptor instead. func (*NotifyVirtualSelectedParentChainChangedResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{40} + return file_rpc_proto_rawDescGZIP(), []int{41} } func (x *NotifyVirtualSelectedParentChainChangedResponseMessage) GetError() *RPCError { @@ -2506,7 +2553,7 @@ type VirtualSelectedParentChainChangedNotificationMessage struct { func (x *VirtualSelectedParentChainChangedNotificationMessage) Reset() { *x = VirtualSelectedParentChainChangedNotificationMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[41] + mi := &file_rpc_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2519,7 +2566,7 @@ func (x *VirtualSelectedParentChainChangedNotificationMessage) String() string { func (*VirtualSelectedParentChainChangedNotificationMessage) ProtoMessage() {} func (x *VirtualSelectedParentChainChangedNotificationMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[41] + mi := &file_rpc_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2532,7 +2579,7 @@ func (x *VirtualSelectedParentChainChangedNotificationMessage) ProtoReflect() pr // Deprecated: Use VirtualSelectedParentChainChangedNotificationMessage.ProtoReflect.Descriptor instead. func (*VirtualSelectedParentChainChangedNotificationMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{41} + return file_rpc_proto_rawDescGZIP(), []int{42} } func (x *VirtualSelectedParentChainChangedNotificationMessage) GetRemovedChainBlockHashes() []string { @@ -2564,7 +2611,7 @@ type GetBlockRequestMessage struct { func (x *GetBlockRequestMessage) Reset() { *x = GetBlockRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[42] + mi := &file_rpc_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2577,7 +2624,7 @@ func (x *GetBlockRequestMessage) String() string { func (*GetBlockRequestMessage) ProtoMessage() {} func (x *GetBlockRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[42] + mi := &file_rpc_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2590,7 +2637,7 @@ func (x *GetBlockRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBlockRequestMessage.ProtoReflect.Descriptor instead. func (*GetBlockRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{42} + return file_rpc_proto_rawDescGZIP(), []int{43} } func (x *GetBlockRequestMessage) GetHash() string { @@ -2619,7 +2666,7 @@ type GetBlockResponseMessage struct { func (x *GetBlockResponseMessage) Reset() { *x = GetBlockResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[43] + mi := &file_rpc_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2632,7 +2679,7 @@ func (x *GetBlockResponseMessage) String() string { func (*GetBlockResponseMessage) ProtoMessage() {} func (x *GetBlockResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[43] + mi := &file_rpc_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2645,7 +2692,7 @@ func (x *GetBlockResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBlockResponseMessage.ProtoReflect.Descriptor instead. func (*GetBlockResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{43} + return file_rpc_proto_rawDescGZIP(), []int{44} } func (x *GetBlockResponseMessage) GetBlock() *RpcBlock { @@ -2676,7 +2723,7 @@ type GetSubnetworkRequestMessage struct { func (x *GetSubnetworkRequestMessage) Reset() { *x = GetSubnetworkRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[44] + mi := &file_rpc_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2689,7 +2736,7 @@ func (x *GetSubnetworkRequestMessage) String() string { func (*GetSubnetworkRequestMessage) ProtoMessage() {} func (x *GetSubnetworkRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[44] + mi := &file_rpc_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2702,7 +2749,7 @@ func (x *GetSubnetworkRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubnetworkRequestMessage.ProtoReflect.Descriptor instead. func (*GetSubnetworkRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{44} + return file_rpc_proto_rawDescGZIP(), []int{45} } func (x *GetSubnetworkRequestMessage) GetSubnetworkId() string { @@ -2724,7 +2771,7 @@ type GetSubnetworkResponseMessage struct { func (x *GetSubnetworkResponseMessage) Reset() { *x = GetSubnetworkResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[45] + mi := &file_rpc_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2737,7 +2784,7 @@ func (x *GetSubnetworkResponseMessage) String() string { func (*GetSubnetworkResponseMessage) ProtoMessage() {} func (x *GetSubnetworkResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[45] + mi := &file_rpc_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2750,7 +2797,7 @@ func (x *GetSubnetworkResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSubnetworkResponseMessage.ProtoReflect.Descriptor instead. func (*GetSubnetworkResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{45} + return file_rpc_proto_rawDescGZIP(), []int{46} } func (x *GetSubnetworkResponseMessage) GetGasLimit() uint64 { @@ -2780,7 +2827,7 @@ type GetVirtualSelectedParentChainFromBlockRequestMessage struct { func (x *GetVirtualSelectedParentChainFromBlockRequestMessage) Reset() { *x = GetVirtualSelectedParentChainFromBlockRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[46] + mi := &file_rpc_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2793,7 +2840,7 @@ func (x *GetVirtualSelectedParentChainFromBlockRequestMessage) String() string { func (*GetVirtualSelectedParentChainFromBlockRequestMessage) ProtoMessage() {} func (x *GetVirtualSelectedParentChainFromBlockRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[46] + mi := &file_rpc_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2806,7 +2853,7 @@ func (x *GetVirtualSelectedParentChainFromBlockRequestMessage) ProtoReflect() pr // Deprecated: Use GetVirtualSelectedParentChainFromBlockRequestMessage.ProtoReflect.Descriptor instead. func (*GetVirtualSelectedParentChainFromBlockRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{46} + return file_rpc_proto_rawDescGZIP(), []int{47} } func (x *GetVirtualSelectedParentChainFromBlockRequestMessage) GetStartHash() string { @@ -2831,7 +2878,7 @@ type GetVirtualSelectedParentChainFromBlockResponseMessage struct { func (x *GetVirtualSelectedParentChainFromBlockResponseMessage) Reset() { *x = GetVirtualSelectedParentChainFromBlockResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[47] + mi := &file_rpc_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2844,7 +2891,7 @@ func (x *GetVirtualSelectedParentChainFromBlockResponseMessage) String() string func (*GetVirtualSelectedParentChainFromBlockResponseMessage) ProtoMessage() {} func (x *GetVirtualSelectedParentChainFromBlockResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[47] + mi := &file_rpc_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2857,7 +2904,7 @@ func (x *GetVirtualSelectedParentChainFromBlockResponseMessage) ProtoReflect() p // Deprecated: Use GetVirtualSelectedParentChainFromBlockResponseMessage.ProtoReflect.Descriptor instead. func (*GetVirtualSelectedParentChainFromBlockResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{47} + return file_rpc_proto_rawDescGZIP(), []int{48} } func (x *GetVirtualSelectedParentChainFromBlockResponseMessage) GetRemovedChainBlockHashes() []string { @@ -2896,7 +2943,7 @@ type GetBlocksRequestMessage struct { func (x *GetBlocksRequestMessage) Reset() { *x = GetBlocksRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[48] + mi := &file_rpc_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2909,7 +2956,7 @@ func (x *GetBlocksRequestMessage) String() string { func (*GetBlocksRequestMessage) ProtoMessage() {} func (x *GetBlocksRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[48] + mi := &file_rpc_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2922,7 +2969,7 @@ func (x *GetBlocksRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBlocksRequestMessage.ProtoReflect.Descriptor instead. func (*GetBlocksRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{48} + return file_rpc_proto_rawDescGZIP(), []int{49} } func (x *GetBlocksRequestMessage) GetLowHash() string { @@ -2959,7 +3006,7 @@ type GetBlocksResponseMessage struct { func (x *GetBlocksResponseMessage) Reset() { *x = GetBlocksResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[49] + mi := &file_rpc_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2972,7 +3019,7 @@ func (x *GetBlocksResponseMessage) String() string { func (*GetBlocksResponseMessage) ProtoMessage() {} func (x *GetBlocksResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[49] + mi := &file_rpc_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2985,7 +3032,7 @@ func (x *GetBlocksResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBlocksResponseMessage.ProtoReflect.Descriptor instead. func (*GetBlocksResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{49} + return file_rpc_proto_rawDescGZIP(), []int{50} } func (x *GetBlocksResponseMessage) GetBlockHashes() []string { @@ -3020,7 +3067,7 @@ type GetBlockCountRequestMessage struct { func (x *GetBlockCountRequestMessage) Reset() { *x = GetBlockCountRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[50] + mi := &file_rpc_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3033,7 +3080,7 @@ func (x *GetBlockCountRequestMessage) String() string { func (*GetBlockCountRequestMessage) ProtoMessage() {} func (x *GetBlockCountRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[50] + mi := &file_rpc_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3046,7 +3093,7 @@ func (x *GetBlockCountRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBlockCountRequestMessage.ProtoReflect.Descriptor instead. func (*GetBlockCountRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{50} + return file_rpc_proto_rawDescGZIP(), []int{51} } type GetBlockCountResponseMessage struct { @@ -3062,7 +3109,7 @@ type GetBlockCountResponseMessage struct { func (x *GetBlockCountResponseMessage) Reset() { *x = GetBlockCountResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[51] + mi := &file_rpc_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3075,7 +3122,7 @@ func (x *GetBlockCountResponseMessage) String() string { func (*GetBlockCountResponseMessage) ProtoMessage() {} func (x *GetBlockCountResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[51] + mi := &file_rpc_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3088,7 +3135,7 @@ func (x *GetBlockCountResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBlockCountResponseMessage.ProtoReflect.Descriptor instead. func (*GetBlockCountResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{51} + return file_rpc_proto_rawDescGZIP(), []int{52} } func (x *GetBlockCountResponseMessage) GetBlockCount() uint64 { @@ -3123,7 +3170,7 @@ type GetBlockDagInfoRequestMessage struct { func (x *GetBlockDagInfoRequestMessage) Reset() { *x = GetBlockDagInfoRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[52] + mi := &file_rpc_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3136,7 +3183,7 @@ func (x *GetBlockDagInfoRequestMessage) String() string { func (*GetBlockDagInfoRequestMessage) ProtoMessage() {} func (x *GetBlockDagInfoRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[52] + mi := &file_rpc_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3149,7 +3196,7 @@ func (x *GetBlockDagInfoRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBlockDagInfoRequestMessage.ProtoReflect.Descriptor instead. func (*GetBlockDagInfoRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{52} + return file_rpc_proto_rawDescGZIP(), []int{53} } type GetBlockDagInfoResponseMessage struct { @@ -3172,7 +3219,7 @@ type GetBlockDagInfoResponseMessage struct { func (x *GetBlockDagInfoResponseMessage) Reset() { *x = GetBlockDagInfoResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[53] + mi := &file_rpc_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3185,7 +3232,7 @@ func (x *GetBlockDagInfoResponseMessage) String() string { func (*GetBlockDagInfoResponseMessage) ProtoMessage() {} func (x *GetBlockDagInfoResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[53] + mi := &file_rpc_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3198,7 +3245,7 @@ func (x *GetBlockDagInfoResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBlockDagInfoResponseMessage.ProtoReflect.Descriptor instead. func (*GetBlockDagInfoResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{53} + return file_rpc_proto_rawDescGZIP(), []int{54} } func (x *GetBlockDagInfoResponseMessage) GetNetworkName() string { @@ -3282,7 +3329,7 @@ type ResolveFinalityConflictRequestMessage struct { func (x *ResolveFinalityConflictRequestMessage) Reset() { *x = ResolveFinalityConflictRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[54] + mi := &file_rpc_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3295,7 +3342,7 @@ func (x *ResolveFinalityConflictRequestMessage) String() string { func (*ResolveFinalityConflictRequestMessage) ProtoMessage() {} func (x *ResolveFinalityConflictRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[54] + mi := &file_rpc_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3308,7 +3355,7 @@ func (x *ResolveFinalityConflictRequestMessage) ProtoReflect() protoreflect.Mess // Deprecated: Use ResolveFinalityConflictRequestMessage.ProtoReflect.Descriptor instead. func (*ResolveFinalityConflictRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{54} + return file_rpc_proto_rawDescGZIP(), []int{55} } func (x *ResolveFinalityConflictRequestMessage) GetFinalityBlockHash() string { @@ -3329,7 +3376,7 @@ type ResolveFinalityConflictResponseMessage struct { func (x *ResolveFinalityConflictResponseMessage) Reset() { *x = ResolveFinalityConflictResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[55] + mi := &file_rpc_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3342,7 +3389,7 @@ func (x *ResolveFinalityConflictResponseMessage) String() string { func (*ResolveFinalityConflictResponseMessage) ProtoMessage() {} func (x *ResolveFinalityConflictResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[55] + mi := &file_rpc_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3355,7 +3402,7 @@ func (x *ResolveFinalityConflictResponseMessage) ProtoReflect() protoreflect.Mes // Deprecated: Use ResolveFinalityConflictResponseMessage.ProtoReflect.Descriptor instead. func (*ResolveFinalityConflictResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{55} + return file_rpc_proto_rawDescGZIP(), []int{56} } func (x *ResolveFinalityConflictResponseMessage) GetError() *RPCError { @@ -3374,7 +3421,7 @@ type NotifyFinalityConflictsRequestMessage struct { func (x *NotifyFinalityConflictsRequestMessage) Reset() { *x = NotifyFinalityConflictsRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[56] + mi := &file_rpc_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3387,7 +3434,7 @@ func (x *NotifyFinalityConflictsRequestMessage) String() string { func (*NotifyFinalityConflictsRequestMessage) ProtoMessage() {} func (x *NotifyFinalityConflictsRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[56] + mi := &file_rpc_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3400,7 +3447,7 @@ func (x *NotifyFinalityConflictsRequestMessage) ProtoReflect() protoreflect.Mess // Deprecated: Use NotifyFinalityConflictsRequestMessage.ProtoReflect.Descriptor instead. func (*NotifyFinalityConflictsRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{56} + return file_rpc_proto_rawDescGZIP(), []int{57} } type NotifyFinalityConflictsResponseMessage struct { @@ -3414,7 +3461,7 @@ type NotifyFinalityConflictsResponseMessage struct { func (x *NotifyFinalityConflictsResponseMessage) Reset() { *x = NotifyFinalityConflictsResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[57] + mi := &file_rpc_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3427,7 +3474,7 @@ func (x *NotifyFinalityConflictsResponseMessage) String() string { func (*NotifyFinalityConflictsResponseMessage) ProtoMessage() {} func (x *NotifyFinalityConflictsResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[57] + mi := &file_rpc_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3440,7 +3487,7 @@ func (x *NotifyFinalityConflictsResponseMessage) ProtoReflect() protoreflect.Mes // Deprecated: Use NotifyFinalityConflictsResponseMessage.ProtoReflect.Descriptor instead. func (*NotifyFinalityConflictsResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{57} + return file_rpc_proto_rawDescGZIP(), []int{58} } func (x *NotifyFinalityConflictsResponseMessage) GetError() *RPCError { @@ -3461,7 +3508,7 @@ type FinalityConflictNotificationMessage struct { func (x *FinalityConflictNotificationMessage) Reset() { *x = FinalityConflictNotificationMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[58] + mi := &file_rpc_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3474,7 +3521,7 @@ func (x *FinalityConflictNotificationMessage) String() string { func (*FinalityConflictNotificationMessage) ProtoMessage() {} func (x *FinalityConflictNotificationMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[58] + mi := &file_rpc_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3487,7 +3534,7 @@ func (x *FinalityConflictNotificationMessage) ProtoReflect() protoreflect.Messag // Deprecated: Use FinalityConflictNotificationMessage.ProtoReflect.Descriptor instead. func (*FinalityConflictNotificationMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{58} + return file_rpc_proto_rawDescGZIP(), []int{59} } func (x *FinalityConflictNotificationMessage) GetViolatingBlockHash() string { @@ -3508,7 +3555,7 @@ type FinalityConflictResolvedNotificationMessage struct { func (x *FinalityConflictResolvedNotificationMessage) Reset() { *x = FinalityConflictResolvedNotificationMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[59] + mi := &file_rpc_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3521,7 +3568,7 @@ func (x *FinalityConflictResolvedNotificationMessage) String() string { func (*FinalityConflictResolvedNotificationMessage) ProtoMessage() {} func (x *FinalityConflictResolvedNotificationMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[59] + mi := &file_rpc_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3534,7 +3581,7 @@ func (x *FinalityConflictResolvedNotificationMessage) ProtoReflect() protoreflec // Deprecated: Use FinalityConflictResolvedNotificationMessage.ProtoReflect.Descriptor instead. func (*FinalityConflictResolvedNotificationMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{59} + return file_rpc_proto_rawDescGZIP(), []int{60} } func (x *FinalityConflictResolvedNotificationMessage) GetFinalityBlockHash() string { @@ -3554,7 +3601,7 @@ type ShutDownRequestMessage struct { func (x *ShutDownRequestMessage) Reset() { *x = ShutDownRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[60] + mi := &file_rpc_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3567,7 +3614,7 @@ func (x *ShutDownRequestMessage) String() string { func (*ShutDownRequestMessage) ProtoMessage() {} func (x *ShutDownRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[60] + mi := &file_rpc_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3580,7 +3627,7 @@ func (x *ShutDownRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use ShutDownRequestMessage.ProtoReflect.Descriptor instead. func (*ShutDownRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{60} + return file_rpc_proto_rawDescGZIP(), []int{61} } type ShutDownResponseMessage struct { @@ -3594,7 +3641,7 @@ type ShutDownResponseMessage struct { func (x *ShutDownResponseMessage) Reset() { *x = ShutDownResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[61] + mi := &file_rpc_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3607,7 +3654,7 @@ func (x *ShutDownResponseMessage) String() string { func (*ShutDownResponseMessage) ProtoMessage() {} func (x *ShutDownResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[61] + mi := &file_rpc_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3620,7 +3667,7 @@ func (x *ShutDownResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use ShutDownResponseMessage.ProtoReflect.Descriptor instead. func (*ShutDownResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{61} + return file_rpc_proto_rawDescGZIP(), []int{62} } func (x *ShutDownResponseMessage) GetError() *RPCError { @@ -3645,7 +3692,7 @@ type GetHeadersRequestMessage struct { func (x *GetHeadersRequestMessage) Reset() { *x = GetHeadersRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[62] + mi := &file_rpc_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3658,7 +3705,7 @@ func (x *GetHeadersRequestMessage) String() string { func (*GetHeadersRequestMessage) ProtoMessage() {} func (x *GetHeadersRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[62] + mi := &file_rpc_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3671,7 +3718,7 @@ func (x *GetHeadersRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetHeadersRequestMessage.ProtoReflect.Descriptor instead. func (*GetHeadersRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{62} + return file_rpc_proto_rawDescGZIP(), []int{63} } func (x *GetHeadersRequestMessage) GetStartHash() string { @@ -3707,7 +3754,7 @@ type GetHeadersResponseMessage struct { func (x *GetHeadersResponseMessage) Reset() { *x = GetHeadersResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[63] + mi := &file_rpc_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3720,7 +3767,7 @@ func (x *GetHeadersResponseMessage) String() string { func (*GetHeadersResponseMessage) ProtoMessage() {} func (x *GetHeadersResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[63] + mi := &file_rpc_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3733,7 +3780,7 @@ func (x *GetHeadersResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetHeadersResponseMessage.ProtoReflect.Descriptor instead. func (*GetHeadersResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{63} + return file_rpc_proto_rawDescGZIP(), []int{64} } func (x *GetHeadersResponseMessage) GetHeaders() []string { @@ -3767,7 +3814,7 @@ type NotifyUtxosChangedRequestMessage struct { func (x *NotifyUtxosChangedRequestMessage) Reset() { *x = NotifyUtxosChangedRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[64] + mi := &file_rpc_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3780,7 +3827,7 @@ func (x *NotifyUtxosChangedRequestMessage) String() string { func (*NotifyUtxosChangedRequestMessage) ProtoMessage() {} func (x *NotifyUtxosChangedRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[64] + mi := &file_rpc_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3793,7 +3840,7 @@ func (x *NotifyUtxosChangedRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use NotifyUtxosChangedRequestMessage.ProtoReflect.Descriptor instead. func (*NotifyUtxosChangedRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{64} + return file_rpc_proto_rawDescGZIP(), []int{65} } func (x *NotifyUtxosChangedRequestMessage) GetAddresses() []string { @@ -3814,7 +3861,7 @@ type NotifyUtxosChangedResponseMessage struct { func (x *NotifyUtxosChangedResponseMessage) Reset() { *x = NotifyUtxosChangedResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[65] + mi := &file_rpc_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3827,7 +3874,7 @@ func (x *NotifyUtxosChangedResponseMessage) String() string { func (*NotifyUtxosChangedResponseMessage) ProtoMessage() {} func (x *NotifyUtxosChangedResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[65] + mi := &file_rpc_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3840,7 +3887,7 @@ func (x *NotifyUtxosChangedResponseMessage) ProtoReflect() protoreflect.Message // Deprecated: Use NotifyUtxosChangedResponseMessage.ProtoReflect.Descriptor instead. func (*NotifyUtxosChangedResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{65} + return file_rpc_proto_rawDescGZIP(), []int{66} } func (x *NotifyUtxosChangedResponseMessage) GetError() *RPCError { @@ -3865,7 +3912,7 @@ type UtxosChangedNotificationMessage struct { func (x *UtxosChangedNotificationMessage) Reset() { *x = UtxosChangedNotificationMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[66] + mi := &file_rpc_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3878,7 +3925,7 @@ func (x *UtxosChangedNotificationMessage) String() string { func (*UtxosChangedNotificationMessage) ProtoMessage() {} func (x *UtxosChangedNotificationMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[66] + mi := &file_rpc_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3891,7 +3938,7 @@ func (x *UtxosChangedNotificationMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use UtxosChangedNotificationMessage.ProtoReflect.Descriptor instead. func (*UtxosChangedNotificationMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{66} + return file_rpc_proto_rawDescGZIP(), []int{67} } func (x *UtxosChangedNotificationMessage) GetAdded() []*UtxosByAddressesEntry { @@ -3921,7 +3968,7 @@ type UtxosByAddressesEntry struct { func (x *UtxosByAddressesEntry) Reset() { *x = UtxosByAddressesEntry{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[67] + mi := &file_rpc_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3934,7 +3981,7 @@ func (x *UtxosByAddressesEntry) String() string { func (*UtxosByAddressesEntry) ProtoMessage() {} func (x *UtxosByAddressesEntry) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[67] + mi := &file_rpc_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3947,7 +3994,7 @@ func (x *UtxosByAddressesEntry) ProtoReflect() protoreflect.Message { // Deprecated: Use UtxosByAddressesEntry.ProtoReflect.Descriptor instead. func (*UtxosByAddressesEntry) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{67} + return file_rpc_proto_rawDescGZIP(), []int{68} } func (x *UtxosByAddressesEntry) GetAddress() string { @@ -3988,7 +4035,7 @@ type StopNotifyingUtxosChangedRequestMessage struct { func (x *StopNotifyingUtxosChangedRequestMessage) Reset() { *x = StopNotifyingUtxosChangedRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[68] + mi := &file_rpc_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4001,7 +4048,7 @@ func (x *StopNotifyingUtxosChangedRequestMessage) String() string { func (*StopNotifyingUtxosChangedRequestMessage) ProtoMessage() {} func (x *StopNotifyingUtxosChangedRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[68] + mi := &file_rpc_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4014,7 +4061,7 @@ func (x *StopNotifyingUtxosChangedRequestMessage) ProtoReflect() protoreflect.Me // Deprecated: Use StopNotifyingUtxosChangedRequestMessage.ProtoReflect.Descriptor instead. func (*StopNotifyingUtxosChangedRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{68} + return file_rpc_proto_rawDescGZIP(), []int{69} } func (x *StopNotifyingUtxosChangedRequestMessage) GetAddresses() []string { @@ -4035,7 +4082,7 @@ type StopNotifyingUtxosChangedResponseMessage struct { func (x *StopNotifyingUtxosChangedResponseMessage) Reset() { *x = StopNotifyingUtxosChangedResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[69] + mi := &file_rpc_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4048,7 +4095,7 @@ func (x *StopNotifyingUtxosChangedResponseMessage) String() string { func (*StopNotifyingUtxosChangedResponseMessage) ProtoMessage() {} func (x *StopNotifyingUtxosChangedResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[69] + mi := &file_rpc_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4061,7 +4108,7 @@ func (x *StopNotifyingUtxosChangedResponseMessage) ProtoReflect() protoreflect.M // Deprecated: Use StopNotifyingUtxosChangedResponseMessage.ProtoReflect.Descriptor instead. func (*StopNotifyingUtxosChangedResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{69} + return file_rpc_proto_rawDescGZIP(), []int{70} } func (x *StopNotifyingUtxosChangedResponseMessage) GetError() *RPCError { @@ -4085,7 +4132,7 @@ type GetUtxosByAddressesRequestMessage struct { func (x *GetUtxosByAddressesRequestMessage) Reset() { *x = GetUtxosByAddressesRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[70] + mi := &file_rpc_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4098,7 +4145,7 @@ func (x *GetUtxosByAddressesRequestMessage) String() string { func (*GetUtxosByAddressesRequestMessage) ProtoMessage() {} func (x *GetUtxosByAddressesRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[70] + mi := &file_rpc_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4111,7 +4158,7 @@ func (x *GetUtxosByAddressesRequestMessage) ProtoReflect() protoreflect.Message // Deprecated: Use GetUtxosByAddressesRequestMessage.ProtoReflect.Descriptor instead. func (*GetUtxosByAddressesRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{70} + return file_rpc_proto_rawDescGZIP(), []int{71} } func (x *GetUtxosByAddressesRequestMessage) GetAddresses() []string { @@ -4133,7 +4180,7 @@ type GetUtxosByAddressesResponseMessage struct { func (x *GetUtxosByAddressesResponseMessage) Reset() { *x = GetUtxosByAddressesResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[71] + mi := &file_rpc_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4146,7 +4193,7 @@ func (x *GetUtxosByAddressesResponseMessage) String() string { func (*GetUtxosByAddressesResponseMessage) ProtoMessage() {} func (x *GetUtxosByAddressesResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[71] + mi := &file_rpc_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4159,7 +4206,7 @@ func (x *GetUtxosByAddressesResponseMessage) ProtoReflect() protoreflect.Message // Deprecated: Use GetUtxosByAddressesResponseMessage.ProtoReflect.Descriptor instead. func (*GetUtxosByAddressesResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{71} + return file_rpc_proto_rawDescGZIP(), []int{72} } func (x *GetUtxosByAddressesResponseMessage) GetEntries() []*UtxosByAddressesEntry { @@ -4187,7 +4234,7 @@ type GetVirtualSelectedParentBlueScoreRequestMessage struct { func (x *GetVirtualSelectedParentBlueScoreRequestMessage) Reset() { *x = GetVirtualSelectedParentBlueScoreRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[72] + mi := &file_rpc_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4200,7 +4247,7 @@ func (x *GetVirtualSelectedParentBlueScoreRequestMessage) String() string { func (*GetVirtualSelectedParentBlueScoreRequestMessage) ProtoMessage() {} func (x *GetVirtualSelectedParentBlueScoreRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[72] + mi := &file_rpc_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4213,7 +4260,7 @@ func (x *GetVirtualSelectedParentBlueScoreRequestMessage) ProtoReflect() protore // Deprecated: Use GetVirtualSelectedParentBlueScoreRequestMessage.ProtoReflect.Descriptor instead. func (*GetVirtualSelectedParentBlueScoreRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{72} + return file_rpc_proto_rawDescGZIP(), []int{73} } type GetVirtualSelectedParentBlueScoreResponseMessage struct { @@ -4228,7 +4275,7 @@ type GetVirtualSelectedParentBlueScoreResponseMessage struct { func (x *GetVirtualSelectedParentBlueScoreResponseMessage) Reset() { *x = GetVirtualSelectedParentBlueScoreResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[73] + mi := &file_rpc_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4241,7 +4288,7 @@ func (x *GetVirtualSelectedParentBlueScoreResponseMessage) String() string { func (*GetVirtualSelectedParentBlueScoreResponseMessage) ProtoMessage() {} func (x *GetVirtualSelectedParentBlueScoreResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[73] + mi := &file_rpc_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4254,7 +4301,7 @@ func (x *GetVirtualSelectedParentBlueScoreResponseMessage) ProtoReflect() protor // Deprecated: Use GetVirtualSelectedParentBlueScoreResponseMessage.ProtoReflect.Descriptor instead. func (*GetVirtualSelectedParentBlueScoreResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{73} + return file_rpc_proto_rawDescGZIP(), []int{74} } func (x *GetVirtualSelectedParentBlueScoreResponseMessage) GetBlueScore() uint64 { @@ -4284,7 +4331,7 @@ type NotifyVirtualSelectedParentBlueScoreChangedRequestMessage struct { func (x *NotifyVirtualSelectedParentBlueScoreChangedRequestMessage) Reset() { *x = NotifyVirtualSelectedParentBlueScoreChangedRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[74] + mi := &file_rpc_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4297,7 +4344,7 @@ func (x *NotifyVirtualSelectedParentBlueScoreChangedRequestMessage) String() str func (*NotifyVirtualSelectedParentBlueScoreChangedRequestMessage) ProtoMessage() {} func (x *NotifyVirtualSelectedParentBlueScoreChangedRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[74] + mi := &file_rpc_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4310,7 +4357,7 @@ func (x *NotifyVirtualSelectedParentBlueScoreChangedRequestMessage) ProtoReflect // Deprecated: Use NotifyVirtualSelectedParentBlueScoreChangedRequestMessage.ProtoReflect.Descriptor instead. func (*NotifyVirtualSelectedParentBlueScoreChangedRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{74} + return file_rpc_proto_rawDescGZIP(), []int{75} } type NotifyVirtualSelectedParentBlueScoreChangedResponseMessage struct { @@ -4324,7 +4371,7 @@ type NotifyVirtualSelectedParentBlueScoreChangedResponseMessage struct { func (x *NotifyVirtualSelectedParentBlueScoreChangedResponseMessage) Reset() { *x = NotifyVirtualSelectedParentBlueScoreChangedResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[75] + mi := &file_rpc_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4337,7 +4384,7 @@ func (x *NotifyVirtualSelectedParentBlueScoreChangedResponseMessage) String() st func (*NotifyVirtualSelectedParentBlueScoreChangedResponseMessage) ProtoMessage() {} func (x *NotifyVirtualSelectedParentBlueScoreChangedResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[75] + mi := &file_rpc_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4350,7 +4397,7 @@ func (x *NotifyVirtualSelectedParentBlueScoreChangedResponseMessage) ProtoReflec // Deprecated: Use NotifyVirtualSelectedParentBlueScoreChangedResponseMessage.ProtoReflect.Descriptor instead. func (*NotifyVirtualSelectedParentBlueScoreChangedResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{75} + return file_rpc_proto_rawDescGZIP(), []int{76} } func (x *NotifyVirtualSelectedParentBlueScoreChangedResponseMessage) GetError() *RPCError { @@ -4375,7 +4422,7 @@ type VirtualSelectedParentBlueScoreChangedNotificationMessage struct { func (x *VirtualSelectedParentBlueScoreChangedNotificationMessage) Reset() { *x = VirtualSelectedParentBlueScoreChangedNotificationMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[76] + mi := &file_rpc_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4388,7 +4435,7 @@ func (x *VirtualSelectedParentBlueScoreChangedNotificationMessage) String() stri func (*VirtualSelectedParentBlueScoreChangedNotificationMessage) ProtoMessage() {} func (x *VirtualSelectedParentBlueScoreChangedNotificationMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[76] + mi := &file_rpc_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4401,7 +4448,7 @@ func (x *VirtualSelectedParentBlueScoreChangedNotificationMessage) ProtoReflect( // Deprecated: Use VirtualSelectedParentBlueScoreChangedNotificationMessage.ProtoReflect.Descriptor instead. func (*VirtualSelectedParentBlueScoreChangedNotificationMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{76} + return file_rpc_proto_rawDescGZIP(), []int{77} } func (x *VirtualSelectedParentBlueScoreChangedNotificationMessage) GetVirtualSelectedParentBlueScore() uint64 { @@ -4424,7 +4471,7 @@ type NotifyVirtualDaaScoreChangedRequestMessage struct { func (x *NotifyVirtualDaaScoreChangedRequestMessage) Reset() { *x = NotifyVirtualDaaScoreChangedRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[77] + mi := &file_rpc_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4437,7 +4484,7 @@ func (x *NotifyVirtualDaaScoreChangedRequestMessage) String() string { func (*NotifyVirtualDaaScoreChangedRequestMessage) ProtoMessage() {} func (x *NotifyVirtualDaaScoreChangedRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[77] + mi := &file_rpc_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4450,7 +4497,7 @@ func (x *NotifyVirtualDaaScoreChangedRequestMessage) ProtoReflect() protoreflect // Deprecated: Use NotifyVirtualDaaScoreChangedRequestMessage.ProtoReflect.Descriptor instead. func (*NotifyVirtualDaaScoreChangedRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{77} + return file_rpc_proto_rawDescGZIP(), []int{78} } type NotifyVirtualDaaScoreChangedResponseMessage struct { @@ -4464,7 +4511,7 @@ type NotifyVirtualDaaScoreChangedResponseMessage struct { func (x *NotifyVirtualDaaScoreChangedResponseMessage) Reset() { *x = NotifyVirtualDaaScoreChangedResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[78] + mi := &file_rpc_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4477,7 +4524,7 @@ func (x *NotifyVirtualDaaScoreChangedResponseMessage) String() string { func (*NotifyVirtualDaaScoreChangedResponseMessage) ProtoMessage() {} func (x *NotifyVirtualDaaScoreChangedResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[78] + mi := &file_rpc_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4490,7 +4537,7 @@ func (x *NotifyVirtualDaaScoreChangedResponseMessage) ProtoReflect() protoreflec // Deprecated: Use NotifyVirtualDaaScoreChangedResponseMessage.ProtoReflect.Descriptor instead. func (*NotifyVirtualDaaScoreChangedResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{78} + return file_rpc_proto_rawDescGZIP(), []int{79} } func (x *NotifyVirtualDaaScoreChangedResponseMessage) GetError() *RPCError { @@ -4515,7 +4562,7 @@ type VirtualDaaScoreChangedNotificationMessage struct { func (x *VirtualDaaScoreChangedNotificationMessage) Reset() { *x = VirtualDaaScoreChangedNotificationMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[79] + mi := &file_rpc_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4528,7 +4575,7 @@ func (x *VirtualDaaScoreChangedNotificationMessage) String() string { func (*VirtualDaaScoreChangedNotificationMessage) ProtoMessage() {} func (x *VirtualDaaScoreChangedNotificationMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[79] + mi := &file_rpc_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4541,7 +4588,7 @@ func (x *VirtualDaaScoreChangedNotificationMessage) ProtoReflect() protoreflect. // Deprecated: Use VirtualDaaScoreChangedNotificationMessage.ProtoReflect.Descriptor instead. func (*VirtualDaaScoreChangedNotificationMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{79} + return file_rpc_proto_rawDescGZIP(), []int{80} } func (x *VirtualDaaScoreChangedNotificationMessage) GetVirtualDaaScore() uint64 { @@ -4566,7 +4613,7 @@ type NotifyPruningPointUTXOSetOverrideRequestMessage struct { func (x *NotifyPruningPointUTXOSetOverrideRequestMessage) Reset() { *x = NotifyPruningPointUTXOSetOverrideRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[80] + mi := &file_rpc_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4579,7 +4626,7 @@ func (x *NotifyPruningPointUTXOSetOverrideRequestMessage) String() string { func (*NotifyPruningPointUTXOSetOverrideRequestMessage) ProtoMessage() {} func (x *NotifyPruningPointUTXOSetOverrideRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[80] + mi := &file_rpc_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4592,7 +4639,7 @@ func (x *NotifyPruningPointUTXOSetOverrideRequestMessage) ProtoReflect() protore // Deprecated: Use NotifyPruningPointUTXOSetOverrideRequestMessage.ProtoReflect.Descriptor instead. func (*NotifyPruningPointUTXOSetOverrideRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{80} + return file_rpc_proto_rawDescGZIP(), []int{81} } type NotifyPruningPointUTXOSetOverrideResponseMessage struct { @@ -4606,7 +4653,7 @@ type NotifyPruningPointUTXOSetOverrideResponseMessage struct { func (x *NotifyPruningPointUTXOSetOverrideResponseMessage) Reset() { *x = NotifyPruningPointUTXOSetOverrideResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[81] + mi := &file_rpc_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4619,7 +4666,7 @@ func (x *NotifyPruningPointUTXOSetOverrideResponseMessage) String() string { func (*NotifyPruningPointUTXOSetOverrideResponseMessage) ProtoMessage() {} func (x *NotifyPruningPointUTXOSetOverrideResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[81] + mi := &file_rpc_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4632,7 +4679,7 @@ func (x *NotifyPruningPointUTXOSetOverrideResponseMessage) ProtoReflect() protor // Deprecated: Use NotifyPruningPointUTXOSetOverrideResponseMessage.ProtoReflect.Descriptor instead. func (*NotifyPruningPointUTXOSetOverrideResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{81} + return file_rpc_proto_rawDescGZIP(), []int{82} } func (x *NotifyPruningPointUTXOSetOverrideResponseMessage) GetError() *RPCError { @@ -4655,7 +4702,7 @@ type PruningPointUTXOSetOverrideNotificationMessage struct { func (x *PruningPointUTXOSetOverrideNotificationMessage) Reset() { *x = PruningPointUTXOSetOverrideNotificationMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[82] + mi := &file_rpc_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4668,7 +4715,7 @@ func (x *PruningPointUTXOSetOverrideNotificationMessage) String() string { func (*PruningPointUTXOSetOverrideNotificationMessage) ProtoMessage() {} func (x *PruningPointUTXOSetOverrideNotificationMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[82] + mi := &file_rpc_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4681,7 +4728,7 @@ func (x *PruningPointUTXOSetOverrideNotificationMessage) ProtoReflect() protoref // Deprecated: Use PruningPointUTXOSetOverrideNotificationMessage.ProtoReflect.Descriptor instead. func (*PruningPointUTXOSetOverrideNotificationMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{82} + return file_rpc_proto_rawDescGZIP(), []int{83} } // StopNotifyingPruningPointUTXOSetOverrideRequestMessage unregisters this connection for @@ -4699,7 +4746,7 @@ type StopNotifyingPruningPointUTXOSetOverrideRequestMessage struct { func (x *StopNotifyingPruningPointUTXOSetOverrideRequestMessage) Reset() { *x = StopNotifyingPruningPointUTXOSetOverrideRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[83] + mi := &file_rpc_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4712,7 +4759,7 @@ func (x *StopNotifyingPruningPointUTXOSetOverrideRequestMessage) String() string func (*StopNotifyingPruningPointUTXOSetOverrideRequestMessage) ProtoMessage() {} func (x *StopNotifyingPruningPointUTXOSetOverrideRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[83] + mi := &file_rpc_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4725,7 +4772,7 @@ func (x *StopNotifyingPruningPointUTXOSetOverrideRequestMessage) ProtoReflect() // Deprecated: Use StopNotifyingPruningPointUTXOSetOverrideRequestMessage.ProtoReflect.Descriptor instead. func (*StopNotifyingPruningPointUTXOSetOverrideRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{83} + return file_rpc_proto_rawDescGZIP(), []int{84} } type StopNotifyingPruningPointUTXOSetOverrideResponseMessage struct { @@ -4739,7 +4786,7 @@ type StopNotifyingPruningPointUTXOSetOverrideResponseMessage struct { func (x *StopNotifyingPruningPointUTXOSetOverrideResponseMessage) Reset() { *x = StopNotifyingPruningPointUTXOSetOverrideResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[84] + mi := &file_rpc_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4752,7 +4799,7 @@ func (x *StopNotifyingPruningPointUTXOSetOverrideResponseMessage) String() strin func (*StopNotifyingPruningPointUTXOSetOverrideResponseMessage) ProtoMessage() {} func (x *StopNotifyingPruningPointUTXOSetOverrideResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[84] + mi := &file_rpc_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4765,7 +4812,7 @@ func (x *StopNotifyingPruningPointUTXOSetOverrideResponseMessage) ProtoReflect() // Deprecated: Use StopNotifyingPruningPointUTXOSetOverrideResponseMessage.ProtoReflect.Descriptor instead. func (*StopNotifyingPruningPointUTXOSetOverrideResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{84} + return file_rpc_proto_rawDescGZIP(), []int{85} } func (x *StopNotifyingPruningPointUTXOSetOverrideResponseMessage) GetError() *RPCError { @@ -4787,7 +4834,7 @@ type BanRequestMessage struct { func (x *BanRequestMessage) Reset() { *x = BanRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[85] + mi := &file_rpc_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4800,7 +4847,7 @@ func (x *BanRequestMessage) String() string { func (*BanRequestMessage) ProtoMessage() {} func (x *BanRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[85] + mi := &file_rpc_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4813,7 +4860,7 @@ func (x *BanRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use BanRequestMessage.ProtoReflect.Descriptor instead. func (*BanRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{85} + return file_rpc_proto_rawDescGZIP(), []int{86} } func (x *BanRequestMessage) GetIp() string { @@ -4834,7 +4881,7 @@ type BanResponseMessage struct { func (x *BanResponseMessage) Reset() { *x = BanResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[86] + mi := &file_rpc_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4847,7 +4894,7 @@ func (x *BanResponseMessage) String() string { func (*BanResponseMessage) ProtoMessage() {} func (x *BanResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[86] + mi := &file_rpc_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4860,7 +4907,7 @@ func (x *BanResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use BanResponseMessage.ProtoReflect.Descriptor instead. func (*BanResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{86} + return file_rpc_proto_rawDescGZIP(), []int{87} } func (x *BanResponseMessage) GetError() *RPCError { @@ -4882,7 +4929,7 @@ type UnbanRequestMessage struct { func (x *UnbanRequestMessage) Reset() { *x = UnbanRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[87] + mi := &file_rpc_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4895,7 +4942,7 @@ func (x *UnbanRequestMessage) String() string { func (*UnbanRequestMessage) ProtoMessage() {} func (x *UnbanRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[87] + mi := &file_rpc_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4908,7 +4955,7 @@ func (x *UnbanRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use UnbanRequestMessage.ProtoReflect.Descriptor instead. func (*UnbanRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{87} + return file_rpc_proto_rawDescGZIP(), []int{88} } func (x *UnbanRequestMessage) GetIp() string { @@ -4929,7 +4976,7 @@ type UnbanResponseMessage struct { func (x *UnbanResponseMessage) Reset() { *x = UnbanResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[88] + mi := &file_rpc_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4942,7 +4989,7 @@ func (x *UnbanResponseMessage) String() string { func (*UnbanResponseMessage) ProtoMessage() {} func (x *UnbanResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[88] + mi := &file_rpc_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4955,7 +5002,7 @@ func (x *UnbanResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use UnbanResponseMessage.ProtoReflect.Descriptor instead. func (*UnbanResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{88} + return file_rpc_proto_rawDescGZIP(), []int{89} } func (x *UnbanResponseMessage) GetError() *RPCError { @@ -4975,7 +5022,7 @@ type GetInfoRequestMessage struct { func (x *GetInfoRequestMessage) Reset() { *x = GetInfoRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[89] + mi := &file_rpc_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4988,7 +5035,7 @@ func (x *GetInfoRequestMessage) String() string { func (*GetInfoRequestMessage) ProtoMessage() {} func (x *GetInfoRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[89] + mi := &file_rpc_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5001,7 +5048,7 @@ func (x *GetInfoRequestMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInfoRequestMessage.ProtoReflect.Descriptor instead. func (*GetInfoRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{89} + return file_rpc_proto_rawDescGZIP(), []int{90} } type GetInfoResponseMessage struct { @@ -5018,7 +5065,7 @@ type GetInfoResponseMessage struct { func (x *GetInfoResponseMessage) Reset() { *x = GetInfoResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[90] + mi := &file_rpc_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5031,7 +5078,7 @@ func (x *GetInfoResponseMessage) String() string { func (*GetInfoResponseMessage) ProtoMessage() {} func (x *GetInfoResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[90] + mi := &file_rpc_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5044,7 +5091,7 @@ func (x *GetInfoResponseMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInfoResponseMessage.ProtoReflect.Descriptor instead. func (*GetInfoResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{90} + return file_rpc_proto_rawDescGZIP(), []int{91} } func (x *GetInfoResponseMessage) GetP2PId() string { @@ -5087,7 +5134,7 @@ type EstimateNetworkHashesPerSecondRequestMessage struct { func (x *EstimateNetworkHashesPerSecondRequestMessage) Reset() { *x = EstimateNetworkHashesPerSecondRequestMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[91] + mi := &file_rpc_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5100,7 +5147,7 @@ func (x *EstimateNetworkHashesPerSecondRequestMessage) String() string { func (*EstimateNetworkHashesPerSecondRequestMessage) ProtoMessage() {} func (x *EstimateNetworkHashesPerSecondRequestMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[91] + mi := &file_rpc_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5113,7 +5160,7 @@ func (x *EstimateNetworkHashesPerSecondRequestMessage) ProtoReflect() protorefle // Deprecated: Use EstimateNetworkHashesPerSecondRequestMessage.ProtoReflect.Descriptor instead. func (*EstimateNetworkHashesPerSecondRequestMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{91} + return file_rpc_proto_rawDescGZIP(), []int{92} } func (x *EstimateNetworkHashesPerSecondRequestMessage) GetWindowSize() uint32 { @@ -5142,7 +5189,7 @@ type EstimateNetworkHashesPerSecondResponseMessage struct { func (x *EstimateNetworkHashesPerSecondResponseMessage) Reset() { *x = EstimateNetworkHashesPerSecondResponseMessage{} if protoimpl.UnsafeEnabled { - mi := &file_rpc_proto_msgTypes[92] + mi := &file_rpc_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5155,7 +5202,7 @@ func (x *EstimateNetworkHashesPerSecondResponseMessage) String() string { func (*EstimateNetworkHashesPerSecondResponseMessage) ProtoMessage() {} func (x *EstimateNetworkHashesPerSecondResponseMessage) ProtoReflect() protoreflect.Message { - mi := &file_rpc_proto_msgTypes[92] + mi := &file_rpc_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5168,7 +5215,7 @@ func (x *EstimateNetworkHashesPerSecondResponseMessage) ProtoReflect() protorefl // Deprecated: Use EstimateNetworkHashesPerSecondResponseMessage.ProtoReflect.Descriptor instead. func (*EstimateNetworkHashesPerSecondResponseMessage) Descriptor() ([]byte, []int) { - return file_rpc_proto_rawDescGZIP(), []int{92} + return file_rpc_proto_rawDescGZIP(), []int{93} } func (x *EstimateNetworkHashesPerSecondResponseMessage) GetNetworkHashesPerSecond() uint64 { @@ -5203,325 +5250,370 @@ var file_rpc_proto_rawDesc = []byte{ 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x52, 0x0b, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0xf8, 0x02, + 0x52, 0x0b, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x8f, 0x03, 0x0a, 0x0e, 0x52, 0x70, 0x63, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x26, - 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x4d, 0x65, 0x72, 0x6b, - 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x32, 0x0a, 0x14, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, - 0x65, 0x64, 0x49, 0x64, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x49, 0x64, - 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x75, 0x74, - 0x78, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x75, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, - 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x74, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, - 0x62, 0x69, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, - 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, 0x61, - 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, - 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, - 0x72, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x8b, 0x02, 0x0a, 0x13, 0x52, 0x70, 0x63, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x68, 0x61, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, - 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, - 0x75, 0x6c, 0x74, 0x79, 0x12, 0x2e, 0x0a, 0x12, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x12, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x48, 0x61, 0x73, 0x68, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, - 0x69, 0x73, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x79, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x79, - 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x26, - 0x0a, 0x0e, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, - 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, - 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x0e, 0x52, 0x70, 0x63, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, - 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x52, 0x07, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x61, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x03, 0x67, 0x61, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x12, 0x46, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, - 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, - 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x76, - 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x8c, 0x02, 0x0a, 0x13, 0x52, - 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, - 0x75, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x4f, 0x75, - 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x4f, 0x75, 0x74, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x10, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x4f, 0x75, - 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, - 0x73, 0x69, 0x67, 0x4f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0a, 0x73, 0x69, 0x67, 0x4f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4b, 0x0a, 0x0b, - 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, - 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x76, 0x65, - 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x58, 0x0a, 0x12, 0x52, 0x70, 0x63, - 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, - 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x4b, 0x65, 0x79, 0x22, 0xc5, 0x01, 0x0a, 0x14, 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, - 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x53, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x0f, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x4c, 0x0a, - 0x0b, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, - 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, - 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x49, 0x0a, 0x0b, 0x52, - 0x70, 0x63, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xb5, 0x01, 0x0a, 0x0c, 0x52, 0x70, 0x63, 0x55, 0x74, - 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x47, 0x0a, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, - 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, - 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x69, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x22, 0xa5, - 0x01, 0x0a, 0x19, 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x24, 0x0a, 0x0d, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x73, 0x73, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x6d, 0x61, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x56, 0x65, 0x72, - 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x8b, 0x01, 0x0a, 0x1f, 0x52, 0x70, 0x63, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, 0x13, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, - 0x0a, 0x16, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, - 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x21, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x76, 0x0a, 0x20, 0x47, 0x65, 0x74, + 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x07, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x07, 0x70, 0x61, + 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x68, 0x4d, 0x65, 0x72, + 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x68, + 0x61, 0x73, 0x68, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x32, 0x0a, + 0x14, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, 0x49, 0x64, 0x4d, 0x65, 0x72, 0x6b, 0x6c, + 0x65, 0x52, 0x6f, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x61, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x65, 0x64, 0x49, 0x64, 0x4d, 0x65, 0x72, 0x6b, 0x6c, 0x65, 0x52, 0x6f, 0x6f, + 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x75, 0x74, 0x78, 0x6f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, + 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x75, 0x74, 0x78, 0x6f, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x69, 0x74, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x62, 0x69, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, + 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x08, 0x64, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x62, 0x6c, 0x75, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x69, 0x6e, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x22, + 0x3a, 0x0a, 0x14, 0x52, 0x70, 0x63, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x76, 0x65, 0x6c, + 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, + 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x70, + 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0x8b, 0x02, 0x0a, 0x13, + 0x52, 0x70, 0x63, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x66, 0x66, 0x69, + 0x63, 0x75, 0x6c, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x64, 0x69, 0x66, + 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x12, 0x2e, 0x0a, 0x12, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, + 0x22, 0x0a, 0x0c, 0x69, 0x73, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x79, 0x18, + 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4f, + 0x6e, 0x6c, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x48, 0x61, 0x73, + 0x68, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x68, 0x69, 0x6c, 0x64, + 0x72, 0x65, 0x6e, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0xd1, 0x02, 0x0a, 0x0e, 0x52, 0x70, + 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, + 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x39, + 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, + 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6c, 0x6f, 0x63, + 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x61, 0x73, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x67, 0x61, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x46, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, + 0x52, 0x0b, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x8c, 0x02, + 0x0a, 0x13, 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x42, 0x0a, 0x10, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, + 0x73, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x4f, + 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x10, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, + 0x73, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x73, 0x69, 0x67, 0x4f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x4f, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x4b, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, + 0x2e, 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x0b, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x58, 0x0a, 0x12, + 0x52, 0x70, 0x63, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, + 0x65, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x0f, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, + 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0xc5, 0x01, 0x0a, 0x14, 0x52, 0x70, 0x63, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, + 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, + 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, + 0x12, 0x4c, 0x0a, 0x0b, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, + 0x65, 0x2e, 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, + 0x61, 0x52, 0x0b, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x49, + 0x0a, 0x0b, 0x52, 0x70, 0x63, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x24, 0x0a, + 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xb5, 0x01, 0x0a, 0x0c, 0x52, 0x70, + 0x63, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x63, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x53, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x0f, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0d, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x62, 0x61, 0x73, + 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x19, 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x24, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x73, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x6d, 0x61, 0x73, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x52, 0x70, 0x63, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x22, 0x8b, 0x01, 0x0a, 0x1f, + 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x56, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x30, 0x0a, 0x13, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, + 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x36, 0x0a, 0x16, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x4b, 0x65, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x16, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, + 0x65, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x21, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x26, 0x0a, - 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, - 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x46, 0x0a, 0x19, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x29, - 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0xdc, 0x01, 0x0a, 0x1a, 0x53, 0x75, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x76, 0x0a, 0x20, + 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x46, 0x0a, 0x19, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x29, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0xdc, 0x01, 0x0a, + 0x1a, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x56, 0x0a, 0x0c, 0x72, + 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x56, 0x0a, 0x0c, 0x72, 0x65, 0x6a, 0x65, - 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, - 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, - 0x6f, 0x6e, 0x52, 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3a, 0x0a, 0x0c, - 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x08, 0x0a, 0x04, - 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, - 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x53, 0x5f, - 0x49, 0x4e, 0x5f, 0x49, 0x42, 0x44, 0x10, 0x02, 0x22, 0x40, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x42, - 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x61, - 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x70, 0x61, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x1f, 0x47, + 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x0c, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, + 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, + 0x3a, 0x0a, 0x0c, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, + 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x42, 0x4c, 0x4f, + 0x43, 0x4b, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, + 0x49, 0x53, 0x5f, 0x49, 0x4e, 0x5f, 0x49, 0x42, 0x44, 0x10, 0x02, 0x22, 0x40, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x29, - 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x73, 0x53, - 0x79, 0x6e, 0x63, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x53, - 0x79, 0x6e, 0x63, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, - 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x20, 0x0a, 0x1e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x41, 0x64, 0x64, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x22, 0x4d, 0x0a, 0x1f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x41, 0x64, 0x64, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, - 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x22, 0x4a, 0x0a, 0x1d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x65, 0x64, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, - 0x70, 0x63, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x20, - 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0xf5, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x4c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, - 0x69, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x65, 0x73, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x65, 0x73, 0x12, 0x58, 0x0a, 0x0f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, - 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x62, 0x61, 0x6e, - 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x39, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x50, - 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x4b, 0x6e, 0x6f, 0x77, - 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x41, - 0x64, 0x64, 0x72, 0x22, 0x22, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x54, 0x69, 0x70, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x79, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x0f, - 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x48, 0x61, 0x73, 0x68, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, - 0x69, 0x70, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, - 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x22, 0x33, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x78, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0x7b, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x4d, 0x65, - 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x77, 0x69, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, + 0x0a, 0x70, 0x61, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x70, 0x61, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x94, 0x01, + 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x54, 0x65, 0x6d, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x29, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, + 0x69, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, + 0x69, 0x73, 0x53, 0x79, 0x6e, 0x63, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0x21, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x70, 0x6f, - 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x4d, - 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x31, 0x0a, 0x07, - 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, - 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x20, 0x0a, 0x1e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x4d, 0x0a, 0x1f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x64, 0x64, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x4a, 0x0a, 0x1d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x41, 0x64, + 0x64, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, + 0x65, 0x2e, 0x52, 0x70, 0x63, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x22, 0x20, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x22, 0xf5, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x58, 0x0a, 0x0f, 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, + 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, + 0x62, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x5d, 0x0a, 0x0c, 0x4d, - 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x66, - 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x3b, 0x0a, - 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, - 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x24, 0x0a, 0x22, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x8f, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x69, 0x6e, 0x66, 0x6f, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, - 0x69, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, - 0x05, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, - 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x22, 0xd3, 0x02, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2a, 0x0a, 0x10, - 0x6c, 0x61, 0x73, 0x74, 0x50, 0x69, 0x6e, 0x67, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x69, 0x6e, 0x67, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x73, 0x4f, 0x75, - 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, - 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, - 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x69, - 0x6d, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, - 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x61, 0x64, 0x76, 0x65, 0x72, 0x74, - 0x69, 0x73, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x19, 0x61, 0x64, 0x76, 0x65, 0x72, - 0x74, 0x69, 0x73, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x69, 0x6d, - 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, - 0x49, 0x62, 0x64, 0x50, 0x65, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, - 0x73, 0x49, 0x62, 0x64, 0x50, 0x65, 0x65, 0x72, 0x22, 0x53, 0x0a, 0x15, 0x41, 0x64, 0x64, 0x50, - 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x69, - 0x73, 0x50, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0b, 0x69, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x22, 0x44, 0x0a, - 0x16, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, - 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x22, 0x80, 0x01, 0x0a, 0x1f, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, - 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x70, - 0x68, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, - 0x4f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x22, 0x74, 0x0a, 0x20, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x37, 0x0a, 0x35, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x64, 0x0a, 0x36, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, + 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x39, 0x0a, 0x23, 0x47, + 0x65, 0x74, 0x50, 0x65, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x4b, + 0x6e, 0x6f, 0x77, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x41, 0x64, 0x64, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x41, 0x64, 0x64, 0x72, 0x22, 0x22, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x79, 0x0a, 0x21, 0x47, 0x65, + 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x48, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xa6, 0x01, 0x0a, 0x34, - 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, + 0x28, 0x0a, 0x0f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x69, 0x70, 0x48, 0x61, + 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x54, 0x69, 0x70, 0x48, 0x61, 0x73, 0x68, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x33, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x70, + 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x78, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x78, 0x49, 0x64, 0x22, 0x7b, 0x0a, 0x1e, 0x47, 0x65, + 0x74, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x05, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x21, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x4d, 0x65, + 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x20, 0x47, + 0x65, 0x74, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x31, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x4d, 0x65, 0x6d, + 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, + 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, + 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x5d, + 0x0a, 0x0c, 0x4d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x66, 0x65, 0x65, + 0x12, 0x3b, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, + 0x65, 0x2e, 0x52, 0x70, 0x63, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x24, 0x0a, + 0x22, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x65, 0x65, + 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x22, 0x8f, 0x01, 0x0a, 0x23, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x69, + 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x05, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd3, 0x02, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x65, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x2a, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x69, 0x6e, 0x67, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x50, + 0x69, 0x6e, 0x67, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x69, + 0x73, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0a, 0x69, 0x73, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x74, + 0x69, 0x6d, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x75, + 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x19, 0x61, 0x64, 0x76, + 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x19, 0x61, 0x64, + 0x76, 0x65, 0x72, 0x74, 0x69, 0x73, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, + 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x1c, 0x0a, + 0x09, 0x69, 0x73, 0x49, 0x62, 0x64, 0x50, 0x65, 0x65, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x69, 0x73, 0x49, 0x62, 0x64, 0x50, 0x65, 0x65, 0x72, 0x22, 0x53, 0x0a, 0x15, 0x41, + 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x20, + 0x0a, 0x0b, 0x69, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x61, 0x6e, 0x65, 0x6e, 0x74, + 0x22, 0x44, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x50, 0x65, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x80, 0x01, 0x0a, 0x1f, 0x53, 0x75, 0x62, 0x6d, 0x69, + 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x74, 0x72, + 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x54, + 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, + 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x4f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, + 0x6c, 0x6f, 0x77, 0x4f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x22, 0x74, 0x0a, 0x20, 0x53, 0x75, 0x62, + 0x6d, 0x69, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x24, 0x0a, + 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, + 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, + 0x37, 0x0a, 0x35, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x64, 0x0a, 0x36, 0x4e, 0x6f, 0x74, 0x69, + 0x66, 0x79, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, + 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xa6, + 0x01, 0x0a, 0x34, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, + 0x73, 0x12, 0x34, 0x0a, 0x15, 0x61, 0x64, 0x64, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x42, + 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x15, 0x61, 0x64, 0x64, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, + 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x22, 0x5e, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x30, 0x0a, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x70, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x6c, + 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x29, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, + 0x63, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2a, 0x0a, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x41, 0x0a, 0x1b, 0x47, 0x65, 0x74, + 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x1c, + 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x67, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, + 0x67, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x54, 0x0a, 0x34, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, + 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x43, 0x68, 0x61, 0x69, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0xd3, 0x01, 0x0a, 0x35, 0x47, + 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x46, 0x72, 0x6f, 0x6d, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x43, 0x68, @@ -5529,318 +5621,278 @@ var file_rpc_proto_rawDesc = []byte{ 0x0a, 0x15, 0x61, 0x64, 0x64, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x61, 0x64, 0x64, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, - 0x73, 0x68, 0x65, 0x73, 0x22, 0x5e, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, - 0x73, 0x68, 0x12, 0x30, 0x0a, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x70, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x29, 0x0a, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, + 0x73, 0x68, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, + 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x22, 0x8b, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x6c, 0x6f, 0x77, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, + 0x6f, 0x77, 0x48, 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, + 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x30, 0x0a, 0x13, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x95, + 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x62, + 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x2b, 0x0a, + 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x52, 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x41, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x75, 0x62, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x1c, 0x47, 0x65, 0x74, - 0x53, 0x75, 0x62, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x73, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x67, 0x61, 0x73, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, - 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x54, 0x0a, 0x34, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, - 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, - 0x69, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0xd3, 0x01, 0x0a, 0x35, 0x47, 0x65, 0x74, 0x56, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x46, 0x72, 0x6f, 0x6d, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x38, 0x0a, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, - 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x15, 0x61, - 0x64, 0x64, 0x65, 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, - 0x73, 0x68, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x61, 0x64, 0x64, 0x65, - 0x64, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, - 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, - 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x8b, 0x01, - 0x0a, 0x17, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x6f, 0x77, - 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6c, 0x6f, 0x77, 0x48, - 0x61, 0x73, 0x68, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x63, 0x6c, - 0x75, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x69, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x18, - 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x62, - 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x06, 0x62, 0x6c, - 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, - 0x06, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, - 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x22, 0x1d, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, - 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x22, 0x1f, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x67, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x22, 0x9e, 0x03, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, - 0x61, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x62, 0x6c, 0x6f, - 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x70, - 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, - 0x70, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x66, 0x66, 0x69, - 0x63, 0x75, 0x6c, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x64, 0x69, 0x66, - 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x61, 0x73, 0x74, 0x4d, - 0x65, 0x64, 0x69, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x0e, 0x70, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x30, 0x0a, 0x13, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x76, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, - 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x72, 0x75, - 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x28, 0x0a, - 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, - 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x1d, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63, + 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x1f, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x44, 0x61, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x9e, 0x03, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x44, 0x61, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, + 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x68, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0b, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x74, 0x69, 0x70, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x09, 0x74, 0x69, 0x70, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, + 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, + 0x64, 0x69, 0x66, 0x66, 0x69, 0x63, 0x75, 0x6c, 0x74, 0x79, 0x12, 0x26, 0x0a, 0x0e, 0x70, 0x61, + 0x73, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0e, 0x70, 0x61, 0x73, 0x74, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x6e, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x30, 0x0a, 0x13, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x50, 0x61, 0x72, + 0x65, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x13, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x48, 0x61, + 0x73, 0x68, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x70, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x70, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x48, 0x61, 0x73, 0x68, + 0x12, 0x28, 0x0a, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, + 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x55, 0x0a, 0x25, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x2c, 0x0a, 0x11, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, + 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x66, 0x69, 0x6e, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0x54, 0x0a, + 0x26, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x22, 0x55, 0x0a, 0x25, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x46, 0x69, - 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x11, - 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0x54, 0x0a, 0x26, 0x52, 0x65, - 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, - 0x66, 0x6c, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, - 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x22, 0x27, 0x0a, 0x25, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x54, 0x0a, 0x26, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x79, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x6c, - 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, + 0x72, 0x6f, 0x72, 0x22, 0x27, 0x0a, 0x25, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x46, 0x69, 0x6e, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x54, 0x0a, 0x26, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, + 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, + 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, + 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x22, 0x55, 0x0a, 0x23, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, + 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x76, 0x69, 0x6f, + 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, + 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0x5b, 0x0a, 0x2b, 0x46, 0x69, 0x6e, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x66, 0x69, 0x6e, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x11, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x6c, 0x6f, + 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0x18, 0x0a, 0x16, 0x53, 0x68, 0x75, 0x74, 0x44, 0x6f, + 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x22, 0x45, 0x0a, 0x17, 0x53, 0x68, 0x75, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x70, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x61, 0x73, 0x68, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x61, 0x73, + 0x68, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x41, 0x73, 0x63, + 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, + 0x41, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x61, 0x0a, 0x19, 0x47, 0x65, 0x74, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, + 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x40, 0x0a, 0x20, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x4f, + 0x0a, 0x21, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, - 0x55, 0x0a, 0x23, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x6c, - 0x69, 0x63, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, - 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x12, 0x76, 0x69, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x6f, - 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x22, 0x5b, 0x0a, 0x2b, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, - 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x11, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x48, - 0x61, 0x73, 0x68, 0x22, 0x18, 0x0a, 0x16, 0x53, 0x68, 0x75, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x45, 0x0a, - 0x17, 0x53, 0x68, 0x75, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0x70, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x61, 0x73, 0x68, 0x12, 0x14, - 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x73, 0x41, 0x73, 0x63, 0x65, 0x6e, 0x64, - 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x41, 0x73, 0x63, - 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x61, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2a, 0x0a, + 0x95, 0x01, 0x0a, 0x1f, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x55, + 0x74, 0x78, 0x6f, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x07, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x42, 0x79, + 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, + 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x22, 0x9c, 0x01, 0x0a, 0x15, 0x55, 0x74, 0x78, 0x6f, + 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x6f, + 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x4f, 0x75, 0x74, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, + 0x35, 0x0a, 0x09, 0x75, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, + 0x70, 0x63, 0x55, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x75, 0x74, 0x78, + 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x47, 0x0a, 0x27, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, + 0x56, 0x0a, 0x28, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, + 0x55, 0x74, 0x78, 0x6f, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x41, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x55, 0x74, + 0x78, 0x6f, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x22, 0x47, + 0x65, 0x74, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x3a, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x55, + 0x74, 0x78, 0x6f, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x40, 0x0a, 0x20, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x79, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x4f, 0x0a, 0x21, 0x4e, - 0x6f, 0x74, 0x69, 0x66, 0x79, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x95, 0x01, 0x0a, - 0x1f, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x4e, 0x6f, 0x74, - 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x36, 0x0a, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x55, 0x74, 0x78, 0x6f, - 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x05, 0x61, 0x64, 0x64, 0x65, 0x64, 0x12, 0x3a, 0x0a, 0x07, 0x72, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x64, 0x22, 0x9c, 0x01, 0x0a, 0x15, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x42, 0x79, - 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x18, - 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x32, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x09, - 0x75, 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x70, 0x63, 0x55, - 0x74, 0x78, 0x6f, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x75, 0x74, 0x78, 0x6f, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x22, 0x47, 0x0a, 0x27, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, - 0x79, 0x69, 0x6e, 0x67, 0x55, 0x74, 0x78, 0x6f, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x56, 0x0a, 0x28, - 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x55, 0x74, 0x78, - 0x6f, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0x41, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x55, 0x74, 0x78, 0x6f, 0x73, - 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x22, 0x47, 0x65, 0x74, 0x55, - 0x74, 0x78, 0x6f, 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3a, - 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x55, 0x74, 0x78, 0x6f, - 0x73, 0x42, 0x79, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x31, 0x0a, 0x2f, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, - 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, - 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x7c, 0x0a, 0x30, 0x47, 0x65, 0x74, + 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x31, 0x0a, 0x2f, 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3b, 0x0a, 0x39, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x7c, 0x0a, 0x30, + 0x47, 0x65, 0x74, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, + 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x09, 0x62, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2a, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x3b, 0x0a, 0x39, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x68, 0x0a, 0x3a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x22, 0x68, 0x0a, 0x3a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, - 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, - 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x82, - 0x01, 0x0a, 0x38, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x46, 0x0a, 0x1e, 0x76, - 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x1e, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x22, 0x2c, 0x0a, 0x2a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, 0x72, - 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x22, 0x59, 0x0a, 0x2b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, 0x72, 0x74, 0x75, - 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x55, 0x0a, 0x29, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, + 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x22, 0x82, 0x01, 0x0a, 0x38, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x46, + 0x0a, 0x1e, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x1e, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, + 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x6c, 0x75, + 0x65, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x2c, 0x0a, 0x2a, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x76, 0x69, 0x72, - 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x22, 0x31, 0x0a, 0x2f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x72, 0x75, - 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, - 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x5e, 0x0a, 0x30, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x22, 0x59, 0x0a, 0x2b, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x56, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, + 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, + 0x55, 0x0a, 0x29, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x0f, + 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x44, 0x61, + 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x31, 0x0a, 0x2f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, - 0x53, 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x30, 0x0a, 0x2e, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, - 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4f, 0x76, 0x65, - 0x72, 0x72, 0x69, 0x64, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x38, 0x0a, 0x36, 0x53, 0x74, 0x6f, 0x70, - 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x22, 0x65, 0x0a, 0x37, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, - 0x69, 0x6e, 0x67, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, + 0x53, 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x5e, 0x0a, 0x30, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x23, 0x0a, 0x11, 0x42, 0x61, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x40, - 0x0a, 0x12, 0x42, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, + 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x30, 0x0a, 0x2e, 0x50, 0x72, 0x75, + 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, + 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x38, 0x0a, 0x36, 0x53, + 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x75, 0x6e, + 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4f, + 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x65, 0x0a, 0x37, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x74, + 0x69, 0x66, 0x79, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x75, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x69, + 0x6e, 0x74, 0x55, 0x54, 0x58, 0x4f, 0x53, 0x65, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x23, 0x0a, 0x11, + 0x42, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x70, 0x22, 0x40, 0x0a, 0x12, 0x42, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, + 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x22, 0x25, 0x0a, 0x13, 0x55, 0x6e, 0x62, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x42, 0x0a, 0x14, 0x55, 0x6e, + 0x62, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, + 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x17, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x32, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x70, 0x32, 0x70, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x70, + 0x6f, 0x6f, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6d, + 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x6c, 0x0a, 0x2c, + 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, + 0x61, 0x73, 0x68, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, + 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0a, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0x93, 0x01, 0x0a, 0x2d, 0x45, + 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x61, + 0x73, 0x68, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x16, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x50, 0x65, 0x72, + 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x6e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x22, 0x25, 0x0a, 0x13, 0x55, 0x6e, 0x62, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x42, 0x0a, 0x14, 0x55, 0x6e, 0x62, 0x61, 0x6e, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x17, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x70, 0x32, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x70, 0x32, 0x70, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x65, 0x6d, 0x70, 0x6f, 0x6f, 0x6c, - 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6d, 0x65, 0x6d, 0x70, - 0x6f, 0x6f, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x6c, 0x0a, 0x2c, 0x45, 0x73, 0x74, - 0x69, 0x6d, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x61, 0x73, 0x68, - 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x77, - 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x48, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x48, 0x61, 0x73, 0x68, 0x22, 0x93, 0x01, 0x0a, 0x2d, 0x45, 0x73, 0x74, 0x69, - 0x6d, 0x61, 0x74, 0x65, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, - 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, - 0x6f, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x48, 0x61, 0x73, 0x68, 0x65, 0x73, 0x50, 0x65, 0x72, 0x53, 0x65, 0x63, 0x6f, 0x6e, - 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x2e, 0x52, 0x50, - 0x43, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x26, 0x5a, - 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, 0x61, 0x73, 0x70, - 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x77, 0x69, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x42, 0x26, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6b, + 0x61, 0x73, 0x70, 0x61, 0x6e, 0x65, 0x74, 0x2f, 0x6b, 0x61, 0x73, 0x70, 0x61, 0x64, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x77, 0x69, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -5856,172 +5908,174 @@ func file_rpc_proto_rawDescGZIP() []byte { } var file_rpc_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 93) +var file_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 94) var file_rpc_proto_goTypes = []interface{}{ (SubmitBlockResponseMessage_RejectReason)(0), // 0: protowire.SubmitBlockResponseMessage.RejectReason (*RPCError)(nil), // 1: protowire.RPCError (*RpcBlock)(nil), // 2: protowire.RpcBlock (*RpcBlockHeader)(nil), // 3: protowire.RpcBlockHeader - (*RpcBlockVerboseData)(nil), // 4: protowire.RpcBlockVerboseData - (*RpcTransaction)(nil), // 5: protowire.RpcTransaction - (*RpcTransactionInput)(nil), // 6: protowire.RpcTransactionInput - (*RpcScriptPublicKey)(nil), // 7: protowire.RpcScriptPublicKey - (*RpcTransactionOutput)(nil), // 8: protowire.RpcTransactionOutput - (*RpcOutpoint)(nil), // 9: protowire.RpcOutpoint - (*RpcUtxoEntry)(nil), // 10: protowire.RpcUtxoEntry - (*RpcTransactionVerboseData)(nil), // 11: protowire.RpcTransactionVerboseData - (*RpcTransactionInputVerboseData)(nil), // 12: protowire.RpcTransactionInputVerboseData - (*RpcTransactionOutputVerboseData)(nil), // 13: protowire.RpcTransactionOutputVerboseData - (*GetCurrentNetworkRequestMessage)(nil), // 14: protowire.GetCurrentNetworkRequestMessage - (*GetCurrentNetworkResponseMessage)(nil), // 15: protowire.GetCurrentNetworkResponseMessage - (*SubmitBlockRequestMessage)(nil), // 16: protowire.SubmitBlockRequestMessage - (*SubmitBlockResponseMessage)(nil), // 17: protowire.SubmitBlockResponseMessage - (*GetBlockTemplateRequestMessage)(nil), // 18: protowire.GetBlockTemplateRequestMessage - (*GetBlockTemplateResponseMessage)(nil), // 19: protowire.GetBlockTemplateResponseMessage - (*NotifyBlockAddedRequestMessage)(nil), // 20: protowire.NotifyBlockAddedRequestMessage - (*NotifyBlockAddedResponseMessage)(nil), // 21: protowire.NotifyBlockAddedResponseMessage - (*BlockAddedNotificationMessage)(nil), // 22: protowire.BlockAddedNotificationMessage - (*GetPeerAddressesRequestMessage)(nil), // 23: protowire.GetPeerAddressesRequestMessage - (*GetPeerAddressesResponseMessage)(nil), // 24: protowire.GetPeerAddressesResponseMessage - (*GetPeerAddressesKnownAddressMessage)(nil), // 25: protowire.GetPeerAddressesKnownAddressMessage - (*GetSelectedTipHashRequestMessage)(nil), // 26: protowire.GetSelectedTipHashRequestMessage - (*GetSelectedTipHashResponseMessage)(nil), // 27: protowire.GetSelectedTipHashResponseMessage - (*GetMempoolEntryRequestMessage)(nil), // 28: protowire.GetMempoolEntryRequestMessage - (*GetMempoolEntryResponseMessage)(nil), // 29: protowire.GetMempoolEntryResponseMessage - (*GetMempoolEntriesRequestMessage)(nil), // 30: protowire.GetMempoolEntriesRequestMessage - (*GetMempoolEntriesResponseMessage)(nil), // 31: protowire.GetMempoolEntriesResponseMessage - (*MempoolEntry)(nil), // 32: protowire.MempoolEntry - (*GetConnectedPeerInfoRequestMessage)(nil), // 33: protowire.GetConnectedPeerInfoRequestMessage - (*GetConnectedPeerInfoResponseMessage)(nil), // 34: protowire.GetConnectedPeerInfoResponseMessage - (*GetConnectedPeerInfoMessage)(nil), // 35: protowire.GetConnectedPeerInfoMessage - (*AddPeerRequestMessage)(nil), // 36: protowire.AddPeerRequestMessage - (*AddPeerResponseMessage)(nil), // 37: protowire.AddPeerResponseMessage - (*SubmitTransactionRequestMessage)(nil), // 38: protowire.SubmitTransactionRequestMessage - (*SubmitTransactionResponseMessage)(nil), // 39: protowire.SubmitTransactionResponseMessage - (*NotifyVirtualSelectedParentChainChangedRequestMessage)(nil), // 40: protowire.NotifyVirtualSelectedParentChainChangedRequestMessage - (*NotifyVirtualSelectedParentChainChangedResponseMessage)(nil), // 41: protowire.NotifyVirtualSelectedParentChainChangedResponseMessage - (*VirtualSelectedParentChainChangedNotificationMessage)(nil), // 42: protowire.VirtualSelectedParentChainChangedNotificationMessage - (*GetBlockRequestMessage)(nil), // 43: protowire.GetBlockRequestMessage - (*GetBlockResponseMessage)(nil), // 44: protowire.GetBlockResponseMessage - (*GetSubnetworkRequestMessage)(nil), // 45: protowire.GetSubnetworkRequestMessage - (*GetSubnetworkResponseMessage)(nil), // 46: protowire.GetSubnetworkResponseMessage - (*GetVirtualSelectedParentChainFromBlockRequestMessage)(nil), // 47: protowire.GetVirtualSelectedParentChainFromBlockRequestMessage - (*GetVirtualSelectedParentChainFromBlockResponseMessage)(nil), // 48: protowire.GetVirtualSelectedParentChainFromBlockResponseMessage - (*GetBlocksRequestMessage)(nil), // 49: protowire.GetBlocksRequestMessage - (*GetBlocksResponseMessage)(nil), // 50: protowire.GetBlocksResponseMessage - (*GetBlockCountRequestMessage)(nil), // 51: protowire.GetBlockCountRequestMessage - (*GetBlockCountResponseMessage)(nil), // 52: protowire.GetBlockCountResponseMessage - (*GetBlockDagInfoRequestMessage)(nil), // 53: protowire.GetBlockDagInfoRequestMessage - (*GetBlockDagInfoResponseMessage)(nil), // 54: protowire.GetBlockDagInfoResponseMessage - (*ResolveFinalityConflictRequestMessage)(nil), // 55: protowire.ResolveFinalityConflictRequestMessage - (*ResolveFinalityConflictResponseMessage)(nil), // 56: protowire.ResolveFinalityConflictResponseMessage - (*NotifyFinalityConflictsRequestMessage)(nil), // 57: protowire.NotifyFinalityConflictsRequestMessage - (*NotifyFinalityConflictsResponseMessage)(nil), // 58: protowire.NotifyFinalityConflictsResponseMessage - (*FinalityConflictNotificationMessage)(nil), // 59: protowire.FinalityConflictNotificationMessage - (*FinalityConflictResolvedNotificationMessage)(nil), // 60: protowire.FinalityConflictResolvedNotificationMessage - (*ShutDownRequestMessage)(nil), // 61: protowire.ShutDownRequestMessage - (*ShutDownResponseMessage)(nil), // 62: protowire.ShutDownResponseMessage - (*GetHeadersRequestMessage)(nil), // 63: protowire.GetHeadersRequestMessage - (*GetHeadersResponseMessage)(nil), // 64: protowire.GetHeadersResponseMessage - (*NotifyUtxosChangedRequestMessage)(nil), // 65: protowire.NotifyUtxosChangedRequestMessage - (*NotifyUtxosChangedResponseMessage)(nil), // 66: protowire.NotifyUtxosChangedResponseMessage - (*UtxosChangedNotificationMessage)(nil), // 67: protowire.UtxosChangedNotificationMessage - (*UtxosByAddressesEntry)(nil), // 68: protowire.UtxosByAddressesEntry - (*StopNotifyingUtxosChangedRequestMessage)(nil), // 69: protowire.StopNotifyingUtxosChangedRequestMessage - (*StopNotifyingUtxosChangedResponseMessage)(nil), // 70: protowire.StopNotifyingUtxosChangedResponseMessage - (*GetUtxosByAddressesRequestMessage)(nil), // 71: protowire.GetUtxosByAddressesRequestMessage - (*GetUtxosByAddressesResponseMessage)(nil), // 72: protowire.GetUtxosByAddressesResponseMessage - (*GetVirtualSelectedParentBlueScoreRequestMessage)(nil), // 73: protowire.GetVirtualSelectedParentBlueScoreRequestMessage - (*GetVirtualSelectedParentBlueScoreResponseMessage)(nil), // 74: protowire.GetVirtualSelectedParentBlueScoreResponseMessage - (*NotifyVirtualSelectedParentBlueScoreChangedRequestMessage)(nil), // 75: protowire.NotifyVirtualSelectedParentBlueScoreChangedRequestMessage - (*NotifyVirtualSelectedParentBlueScoreChangedResponseMessage)(nil), // 76: protowire.NotifyVirtualSelectedParentBlueScoreChangedResponseMessage - (*VirtualSelectedParentBlueScoreChangedNotificationMessage)(nil), // 77: protowire.VirtualSelectedParentBlueScoreChangedNotificationMessage - (*NotifyVirtualDaaScoreChangedRequestMessage)(nil), // 78: protowire.NotifyVirtualDaaScoreChangedRequestMessage - (*NotifyVirtualDaaScoreChangedResponseMessage)(nil), // 79: protowire.NotifyVirtualDaaScoreChangedResponseMessage - (*VirtualDaaScoreChangedNotificationMessage)(nil), // 80: protowire.VirtualDaaScoreChangedNotificationMessage - (*NotifyPruningPointUTXOSetOverrideRequestMessage)(nil), // 81: protowire.NotifyPruningPointUTXOSetOverrideRequestMessage - (*NotifyPruningPointUTXOSetOverrideResponseMessage)(nil), // 82: protowire.NotifyPruningPointUTXOSetOverrideResponseMessage - (*PruningPointUTXOSetOverrideNotificationMessage)(nil), // 83: protowire.PruningPointUTXOSetOverrideNotificationMessage - (*StopNotifyingPruningPointUTXOSetOverrideRequestMessage)(nil), // 84: protowire.StopNotifyingPruningPointUTXOSetOverrideRequestMessage - (*StopNotifyingPruningPointUTXOSetOverrideResponseMessage)(nil), // 85: protowire.StopNotifyingPruningPointUTXOSetOverrideResponseMessage - (*BanRequestMessage)(nil), // 86: protowire.BanRequestMessage - (*BanResponseMessage)(nil), // 87: protowire.BanResponseMessage - (*UnbanRequestMessage)(nil), // 88: protowire.UnbanRequestMessage - (*UnbanResponseMessage)(nil), // 89: protowire.UnbanResponseMessage - (*GetInfoRequestMessage)(nil), // 90: protowire.GetInfoRequestMessage - (*GetInfoResponseMessage)(nil), // 91: protowire.GetInfoResponseMessage - (*EstimateNetworkHashesPerSecondRequestMessage)(nil), // 92: protowire.EstimateNetworkHashesPerSecondRequestMessage - (*EstimateNetworkHashesPerSecondResponseMessage)(nil), // 93: protowire.EstimateNetworkHashesPerSecondResponseMessage + (*RpcBlockLevelParents)(nil), // 4: protowire.RpcBlockLevelParents + (*RpcBlockVerboseData)(nil), // 5: protowire.RpcBlockVerboseData + (*RpcTransaction)(nil), // 6: protowire.RpcTransaction + (*RpcTransactionInput)(nil), // 7: protowire.RpcTransactionInput + (*RpcScriptPublicKey)(nil), // 8: protowire.RpcScriptPublicKey + (*RpcTransactionOutput)(nil), // 9: protowire.RpcTransactionOutput + (*RpcOutpoint)(nil), // 10: protowire.RpcOutpoint + (*RpcUtxoEntry)(nil), // 11: protowire.RpcUtxoEntry + (*RpcTransactionVerboseData)(nil), // 12: protowire.RpcTransactionVerboseData + (*RpcTransactionInputVerboseData)(nil), // 13: protowire.RpcTransactionInputVerboseData + (*RpcTransactionOutputVerboseData)(nil), // 14: protowire.RpcTransactionOutputVerboseData + (*GetCurrentNetworkRequestMessage)(nil), // 15: protowire.GetCurrentNetworkRequestMessage + (*GetCurrentNetworkResponseMessage)(nil), // 16: protowire.GetCurrentNetworkResponseMessage + (*SubmitBlockRequestMessage)(nil), // 17: protowire.SubmitBlockRequestMessage + (*SubmitBlockResponseMessage)(nil), // 18: protowire.SubmitBlockResponseMessage + (*GetBlockTemplateRequestMessage)(nil), // 19: protowire.GetBlockTemplateRequestMessage + (*GetBlockTemplateResponseMessage)(nil), // 20: protowire.GetBlockTemplateResponseMessage + (*NotifyBlockAddedRequestMessage)(nil), // 21: protowire.NotifyBlockAddedRequestMessage + (*NotifyBlockAddedResponseMessage)(nil), // 22: protowire.NotifyBlockAddedResponseMessage + (*BlockAddedNotificationMessage)(nil), // 23: protowire.BlockAddedNotificationMessage + (*GetPeerAddressesRequestMessage)(nil), // 24: protowire.GetPeerAddressesRequestMessage + (*GetPeerAddressesResponseMessage)(nil), // 25: protowire.GetPeerAddressesResponseMessage + (*GetPeerAddressesKnownAddressMessage)(nil), // 26: protowire.GetPeerAddressesKnownAddressMessage + (*GetSelectedTipHashRequestMessage)(nil), // 27: protowire.GetSelectedTipHashRequestMessage + (*GetSelectedTipHashResponseMessage)(nil), // 28: protowire.GetSelectedTipHashResponseMessage + (*GetMempoolEntryRequestMessage)(nil), // 29: protowire.GetMempoolEntryRequestMessage + (*GetMempoolEntryResponseMessage)(nil), // 30: protowire.GetMempoolEntryResponseMessage + (*GetMempoolEntriesRequestMessage)(nil), // 31: protowire.GetMempoolEntriesRequestMessage + (*GetMempoolEntriesResponseMessage)(nil), // 32: protowire.GetMempoolEntriesResponseMessage + (*MempoolEntry)(nil), // 33: protowire.MempoolEntry + (*GetConnectedPeerInfoRequestMessage)(nil), // 34: protowire.GetConnectedPeerInfoRequestMessage + (*GetConnectedPeerInfoResponseMessage)(nil), // 35: protowire.GetConnectedPeerInfoResponseMessage + (*GetConnectedPeerInfoMessage)(nil), // 36: protowire.GetConnectedPeerInfoMessage + (*AddPeerRequestMessage)(nil), // 37: protowire.AddPeerRequestMessage + (*AddPeerResponseMessage)(nil), // 38: protowire.AddPeerResponseMessage + (*SubmitTransactionRequestMessage)(nil), // 39: protowire.SubmitTransactionRequestMessage + (*SubmitTransactionResponseMessage)(nil), // 40: protowire.SubmitTransactionResponseMessage + (*NotifyVirtualSelectedParentChainChangedRequestMessage)(nil), // 41: protowire.NotifyVirtualSelectedParentChainChangedRequestMessage + (*NotifyVirtualSelectedParentChainChangedResponseMessage)(nil), // 42: protowire.NotifyVirtualSelectedParentChainChangedResponseMessage + (*VirtualSelectedParentChainChangedNotificationMessage)(nil), // 43: protowire.VirtualSelectedParentChainChangedNotificationMessage + (*GetBlockRequestMessage)(nil), // 44: protowire.GetBlockRequestMessage + (*GetBlockResponseMessage)(nil), // 45: protowire.GetBlockResponseMessage + (*GetSubnetworkRequestMessage)(nil), // 46: protowire.GetSubnetworkRequestMessage + (*GetSubnetworkResponseMessage)(nil), // 47: protowire.GetSubnetworkResponseMessage + (*GetVirtualSelectedParentChainFromBlockRequestMessage)(nil), // 48: protowire.GetVirtualSelectedParentChainFromBlockRequestMessage + (*GetVirtualSelectedParentChainFromBlockResponseMessage)(nil), // 49: protowire.GetVirtualSelectedParentChainFromBlockResponseMessage + (*GetBlocksRequestMessage)(nil), // 50: protowire.GetBlocksRequestMessage + (*GetBlocksResponseMessage)(nil), // 51: protowire.GetBlocksResponseMessage + (*GetBlockCountRequestMessage)(nil), // 52: protowire.GetBlockCountRequestMessage + (*GetBlockCountResponseMessage)(nil), // 53: protowire.GetBlockCountResponseMessage + (*GetBlockDagInfoRequestMessage)(nil), // 54: protowire.GetBlockDagInfoRequestMessage + (*GetBlockDagInfoResponseMessage)(nil), // 55: protowire.GetBlockDagInfoResponseMessage + (*ResolveFinalityConflictRequestMessage)(nil), // 56: protowire.ResolveFinalityConflictRequestMessage + (*ResolveFinalityConflictResponseMessage)(nil), // 57: protowire.ResolveFinalityConflictResponseMessage + (*NotifyFinalityConflictsRequestMessage)(nil), // 58: protowire.NotifyFinalityConflictsRequestMessage + (*NotifyFinalityConflictsResponseMessage)(nil), // 59: protowire.NotifyFinalityConflictsResponseMessage + (*FinalityConflictNotificationMessage)(nil), // 60: protowire.FinalityConflictNotificationMessage + (*FinalityConflictResolvedNotificationMessage)(nil), // 61: protowire.FinalityConflictResolvedNotificationMessage + (*ShutDownRequestMessage)(nil), // 62: protowire.ShutDownRequestMessage + (*ShutDownResponseMessage)(nil), // 63: protowire.ShutDownResponseMessage + (*GetHeadersRequestMessage)(nil), // 64: protowire.GetHeadersRequestMessage + (*GetHeadersResponseMessage)(nil), // 65: protowire.GetHeadersResponseMessage + (*NotifyUtxosChangedRequestMessage)(nil), // 66: protowire.NotifyUtxosChangedRequestMessage + (*NotifyUtxosChangedResponseMessage)(nil), // 67: protowire.NotifyUtxosChangedResponseMessage + (*UtxosChangedNotificationMessage)(nil), // 68: protowire.UtxosChangedNotificationMessage + (*UtxosByAddressesEntry)(nil), // 69: protowire.UtxosByAddressesEntry + (*StopNotifyingUtxosChangedRequestMessage)(nil), // 70: protowire.StopNotifyingUtxosChangedRequestMessage + (*StopNotifyingUtxosChangedResponseMessage)(nil), // 71: protowire.StopNotifyingUtxosChangedResponseMessage + (*GetUtxosByAddressesRequestMessage)(nil), // 72: protowire.GetUtxosByAddressesRequestMessage + (*GetUtxosByAddressesResponseMessage)(nil), // 73: protowire.GetUtxosByAddressesResponseMessage + (*GetVirtualSelectedParentBlueScoreRequestMessage)(nil), // 74: protowire.GetVirtualSelectedParentBlueScoreRequestMessage + (*GetVirtualSelectedParentBlueScoreResponseMessage)(nil), // 75: protowire.GetVirtualSelectedParentBlueScoreResponseMessage + (*NotifyVirtualSelectedParentBlueScoreChangedRequestMessage)(nil), // 76: protowire.NotifyVirtualSelectedParentBlueScoreChangedRequestMessage + (*NotifyVirtualSelectedParentBlueScoreChangedResponseMessage)(nil), // 77: protowire.NotifyVirtualSelectedParentBlueScoreChangedResponseMessage + (*VirtualSelectedParentBlueScoreChangedNotificationMessage)(nil), // 78: protowire.VirtualSelectedParentBlueScoreChangedNotificationMessage + (*NotifyVirtualDaaScoreChangedRequestMessage)(nil), // 79: protowire.NotifyVirtualDaaScoreChangedRequestMessage + (*NotifyVirtualDaaScoreChangedResponseMessage)(nil), // 80: protowire.NotifyVirtualDaaScoreChangedResponseMessage + (*VirtualDaaScoreChangedNotificationMessage)(nil), // 81: protowire.VirtualDaaScoreChangedNotificationMessage + (*NotifyPruningPointUTXOSetOverrideRequestMessage)(nil), // 82: protowire.NotifyPruningPointUTXOSetOverrideRequestMessage + (*NotifyPruningPointUTXOSetOverrideResponseMessage)(nil), // 83: protowire.NotifyPruningPointUTXOSetOverrideResponseMessage + (*PruningPointUTXOSetOverrideNotificationMessage)(nil), // 84: protowire.PruningPointUTXOSetOverrideNotificationMessage + (*StopNotifyingPruningPointUTXOSetOverrideRequestMessage)(nil), // 85: protowire.StopNotifyingPruningPointUTXOSetOverrideRequestMessage + (*StopNotifyingPruningPointUTXOSetOverrideResponseMessage)(nil), // 86: protowire.StopNotifyingPruningPointUTXOSetOverrideResponseMessage + (*BanRequestMessage)(nil), // 87: protowire.BanRequestMessage + (*BanResponseMessage)(nil), // 88: protowire.BanResponseMessage + (*UnbanRequestMessage)(nil), // 89: protowire.UnbanRequestMessage + (*UnbanResponseMessage)(nil), // 90: protowire.UnbanResponseMessage + (*GetInfoRequestMessage)(nil), // 91: protowire.GetInfoRequestMessage + (*GetInfoResponseMessage)(nil), // 92: protowire.GetInfoResponseMessage + (*EstimateNetworkHashesPerSecondRequestMessage)(nil), // 93: protowire.EstimateNetworkHashesPerSecondRequestMessage + (*EstimateNetworkHashesPerSecondResponseMessage)(nil), // 94: protowire.EstimateNetworkHashesPerSecondResponseMessage } var file_rpc_proto_depIdxs = []int32{ 3, // 0: protowire.RpcBlock.header:type_name -> protowire.RpcBlockHeader - 5, // 1: protowire.RpcBlock.transactions:type_name -> protowire.RpcTransaction - 4, // 2: protowire.RpcBlock.verboseData:type_name -> protowire.RpcBlockVerboseData - 6, // 3: protowire.RpcTransaction.inputs:type_name -> protowire.RpcTransactionInput - 8, // 4: protowire.RpcTransaction.outputs:type_name -> protowire.RpcTransactionOutput - 11, // 5: protowire.RpcTransaction.verboseData:type_name -> protowire.RpcTransactionVerboseData - 9, // 6: protowire.RpcTransactionInput.previousOutpoint:type_name -> protowire.RpcOutpoint - 12, // 7: protowire.RpcTransactionInput.verboseData:type_name -> protowire.RpcTransactionInputVerboseData - 7, // 8: protowire.RpcTransactionOutput.scriptPublicKey:type_name -> protowire.RpcScriptPublicKey - 13, // 9: protowire.RpcTransactionOutput.verboseData:type_name -> protowire.RpcTransactionOutputVerboseData - 7, // 10: protowire.RpcUtxoEntry.scriptPublicKey:type_name -> protowire.RpcScriptPublicKey - 1, // 11: protowire.GetCurrentNetworkResponseMessage.error:type_name -> protowire.RPCError - 2, // 12: protowire.SubmitBlockRequestMessage.block:type_name -> protowire.RpcBlock - 0, // 13: protowire.SubmitBlockResponseMessage.rejectReason:type_name -> protowire.SubmitBlockResponseMessage.RejectReason - 1, // 14: protowire.SubmitBlockResponseMessage.error:type_name -> protowire.RPCError - 2, // 15: protowire.GetBlockTemplateResponseMessage.block:type_name -> protowire.RpcBlock - 1, // 16: protowire.GetBlockTemplateResponseMessage.error:type_name -> protowire.RPCError - 1, // 17: protowire.NotifyBlockAddedResponseMessage.error:type_name -> protowire.RPCError - 2, // 18: protowire.BlockAddedNotificationMessage.block:type_name -> protowire.RpcBlock - 25, // 19: protowire.GetPeerAddressesResponseMessage.addresses:type_name -> protowire.GetPeerAddressesKnownAddressMessage - 25, // 20: protowire.GetPeerAddressesResponseMessage.bannedAddresses:type_name -> protowire.GetPeerAddressesKnownAddressMessage - 1, // 21: protowire.GetPeerAddressesResponseMessage.error:type_name -> protowire.RPCError - 1, // 22: protowire.GetSelectedTipHashResponseMessage.error:type_name -> protowire.RPCError - 32, // 23: protowire.GetMempoolEntryResponseMessage.entry:type_name -> protowire.MempoolEntry - 1, // 24: protowire.GetMempoolEntryResponseMessage.error:type_name -> protowire.RPCError - 32, // 25: protowire.GetMempoolEntriesResponseMessage.entries:type_name -> protowire.MempoolEntry - 1, // 26: protowire.GetMempoolEntriesResponseMessage.error:type_name -> protowire.RPCError - 5, // 27: protowire.MempoolEntry.transaction:type_name -> protowire.RpcTransaction - 35, // 28: protowire.GetConnectedPeerInfoResponseMessage.infos:type_name -> protowire.GetConnectedPeerInfoMessage - 1, // 29: protowire.GetConnectedPeerInfoResponseMessage.error:type_name -> protowire.RPCError - 1, // 30: protowire.AddPeerResponseMessage.error:type_name -> protowire.RPCError - 5, // 31: protowire.SubmitTransactionRequestMessage.transaction:type_name -> protowire.RpcTransaction - 1, // 32: protowire.SubmitTransactionResponseMessage.error:type_name -> protowire.RPCError - 1, // 33: protowire.NotifyVirtualSelectedParentChainChangedResponseMessage.error:type_name -> protowire.RPCError - 2, // 34: protowire.GetBlockResponseMessage.block:type_name -> protowire.RpcBlock - 1, // 35: protowire.GetBlockResponseMessage.error:type_name -> protowire.RPCError - 1, // 36: protowire.GetSubnetworkResponseMessage.error:type_name -> protowire.RPCError - 1, // 37: protowire.GetVirtualSelectedParentChainFromBlockResponseMessage.error:type_name -> protowire.RPCError - 2, // 38: protowire.GetBlocksResponseMessage.blocks:type_name -> protowire.RpcBlock - 1, // 39: protowire.GetBlocksResponseMessage.error:type_name -> protowire.RPCError - 1, // 40: protowire.GetBlockCountResponseMessage.error:type_name -> protowire.RPCError - 1, // 41: protowire.GetBlockDagInfoResponseMessage.error:type_name -> protowire.RPCError - 1, // 42: protowire.ResolveFinalityConflictResponseMessage.error:type_name -> protowire.RPCError - 1, // 43: protowire.NotifyFinalityConflictsResponseMessage.error:type_name -> protowire.RPCError - 1, // 44: protowire.ShutDownResponseMessage.error:type_name -> protowire.RPCError - 1, // 45: protowire.GetHeadersResponseMessage.error:type_name -> protowire.RPCError - 1, // 46: protowire.NotifyUtxosChangedResponseMessage.error:type_name -> protowire.RPCError - 68, // 47: protowire.UtxosChangedNotificationMessage.added:type_name -> protowire.UtxosByAddressesEntry - 68, // 48: protowire.UtxosChangedNotificationMessage.removed:type_name -> protowire.UtxosByAddressesEntry - 9, // 49: protowire.UtxosByAddressesEntry.outpoint:type_name -> protowire.RpcOutpoint - 10, // 50: protowire.UtxosByAddressesEntry.utxoEntry:type_name -> protowire.RpcUtxoEntry - 1, // 51: protowire.StopNotifyingUtxosChangedResponseMessage.error:type_name -> protowire.RPCError - 68, // 52: protowire.GetUtxosByAddressesResponseMessage.entries:type_name -> protowire.UtxosByAddressesEntry - 1, // 53: protowire.GetUtxosByAddressesResponseMessage.error:type_name -> protowire.RPCError - 1, // 54: protowire.GetVirtualSelectedParentBlueScoreResponseMessage.error:type_name -> protowire.RPCError - 1, // 55: protowire.NotifyVirtualSelectedParentBlueScoreChangedResponseMessage.error:type_name -> protowire.RPCError - 1, // 56: protowire.NotifyVirtualDaaScoreChangedResponseMessage.error:type_name -> protowire.RPCError - 1, // 57: protowire.NotifyPruningPointUTXOSetOverrideResponseMessage.error:type_name -> protowire.RPCError - 1, // 58: protowire.StopNotifyingPruningPointUTXOSetOverrideResponseMessage.error:type_name -> protowire.RPCError - 1, // 59: protowire.BanResponseMessage.error:type_name -> protowire.RPCError - 1, // 60: protowire.UnbanResponseMessage.error:type_name -> protowire.RPCError - 1, // 61: protowire.GetInfoResponseMessage.error:type_name -> protowire.RPCError - 1, // 62: protowire.EstimateNetworkHashesPerSecondResponseMessage.error:type_name -> protowire.RPCError - 63, // [63:63] is the sub-list for method output_type - 63, // [63:63] is the sub-list for method input_type - 63, // [63:63] is the sub-list for extension type_name - 63, // [63:63] is the sub-list for extension extendee - 0, // [0:63] is the sub-list for field type_name + 6, // 1: protowire.RpcBlock.transactions:type_name -> protowire.RpcTransaction + 5, // 2: protowire.RpcBlock.verboseData:type_name -> protowire.RpcBlockVerboseData + 4, // 3: protowire.RpcBlockHeader.parents:type_name -> protowire.RpcBlockLevelParents + 7, // 4: protowire.RpcTransaction.inputs:type_name -> protowire.RpcTransactionInput + 9, // 5: protowire.RpcTransaction.outputs:type_name -> protowire.RpcTransactionOutput + 12, // 6: protowire.RpcTransaction.verboseData:type_name -> protowire.RpcTransactionVerboseData + 10, // 7: protowire.RpcTransactionInput.previousOutpoint:type_name -> protowire.RpcOutpoint + 13, // 8: protowire.RpcTransactionInput.verboseData:type_name -> protowire.RpcTransactionInputVerboseData + 8, // 9: protowire.RpcTransactionOutput.scriptPublicKey:type_name -> protowire.RpcScriptPublicKey + 14, // 10: protowire.RpcTransactionOutput.verboseData:type_name -> protowire.RpcTransactionOutputVerboseData + 8, // 11: protowire.RpcUtxoEntry.scriptPublicKey:type_name -> protowire.RpcScriptPublicKey + 1, // 12: protowire.GetCurrentNetworkResponseMessage.error:type_name -> protowire.RPCError + 2, // 13: protowire.SubmitBlockRequestMessage.block:type_name -> protowire.RpcBlock + 0, // 14: protowire.SubmitBlockResponseMessage.rejectReason:type_name -> protowire.SubmitBlockResponseMessage.RejectReason + 1, // 15: protowire.SubmitBlockResponseMessage.error:type_name -> protowire.RPCError + 2, // 16: protowire.GetBlockTemplateResponseMessage.block:type_name -> protowire.RpcBlock + 1, // 17: protowire.GetBlockTemplateResponseMessage.error:type_name -> protowire.RPCError + 1, // 18: protowire.NotifyBlockAddedResponseMessage.error:type_name -> protowire.RPCError + 2, // 19: protowire.BlockAddedNotificationMessage.block:type_name -> protowire.RpcBlock + 26, // 20: protowire.GetPeerAddressesResponseMessage.addresses:type_name -> protowire.GetPeerAddressesKnownAddressMessage + 26, // 21: protowire.GetPeerAddressesResponseMessage.bannedAddresses:type_name -> protowire.GetPeerAddressesKnownAddressMessage + 1, // 22: protowire.GetPeerAddressesResponseMessage.error:type_name -> protowire.RPCError + 1, // 23: protowire.GetSelectedTipHashResponseMessage.error:type_name -> protowire.RPCError + 33, // 24: protowire.GetMempoolEntryResponseMessage.entry:type_name -> protowire.MempoolEntry + 1, // 25: protowire.GetMempoolEntryResponseMessage.error:type_name -> protowire.RPCError + 33, // 26: protowire.GetMempoolEntriesResponseMessage.entries:type_name -> protowire.MempoolEntry + 1, // 27: protowire.GetMempoolEntriesResponseMessage.error:type_name -> protowire.RPCError + 6, // 28: protowire.MempoolEntry.transaction:type_name -> protowire.RpcTransaction + 36, // 29: protowire.GetConnectedPeerInfoResponseMessage.infos:type_name -> protowire.GetConnectedPeerInfoMessage + 1, // 30: protowire.GetConnectedPeerInfoResponseMessage.error:type_name -> protowire.RPCError + 1, // 31: protowire.AddPeerResponseMessage.error:type_name -> protowire.RPCError + 6, // 32: protowire.SubmitTransactionRequestMessage.transaction:type_name -> protowire.RpcTransaction + 1, // 33: protowire.SubmitTransactionResponseMessage.error:type_name -> protowire.RPCError + 1, // 34: protowire.NotifyVirtualSelectedParentChainChangedResponseMessage.error:type_name -> protowire.RPCError + 2, // 35: protowire.GetBlockResponseMessage.block:type_name -> protowire.RpcBlock + 1, // 36: protowire.GetBlockResponseMessage.error:type_name -> protowire.RPCError + 1, // 37: protowire.GetSubnetworkResponseMessage.error:type_name -> protowire.RPCError + 1, // 38: protowire.GetVirtualSelectedParentChainFromBlockResponseMessage.error:type_name -> protowire.RPCError + 2, // 39: protowire.GetBlocksResponseMessage.blocks:type_name -> protowire.RpcBlock + 1, // 40: protowire.GetBlocksResponseMessage.error:type_name -> protowire.RPCError + 1, // 41: protowire.GetBlockCountResponseMessage.error:type_name -> protowire.RPCError + 1, // 42: protowire.GetBlockDagInfoResponseMessage.error:type_name -> protowire.RPCError + 1, // 43: protowire.ResolveFinalityConflictResponseMessage.error:type_name -> protowire.RPCError + 1, // 44: protowire.NotifyFinalityConflictsResponseMessage.error:type_name -> protowire.RPCError + 1, // 45: protowire.ShutDownResponseMessage.error:type_name -> protowire.RPCError + 1, // 46: protowire.GetHeadersResponseMessage.error:type_name -> protowire.RPCError + 1, // 47: protowire.NotifyUtxosChangedResponseMessage.error:type_name -> protowire.RPCError + 69, // 48: protowire.UtxosChangedNotificationMessage.added:type_name -> protowire.UtxosByAddressesEntry + 69, // 49: protowire.UtxosChangedNotificationMessage.removed:type_name -> protowire.UtxosByAddressesEntry + 10, // 50: protowire.UtxosByAddressesEntry.outpoint:type_name -> protowire.RpcOutpoint + 11, // 51: protowire.UtxosByAddressesEntry.utxoEntry:type_name -> protowire.RpcUtxoEntry + 1, // 52: protowire.StopNotifyingUtxosChangedResponseMessage.error:type_name -> protowire.RPCError + 69, // 53: protowire.GetUtxosByAddressesResponseMessage.entries:type_name -> protowire.UtxosByAddressesEntry + 1, // 54: protowire.GetUtxosByAddressesResponseMessage.error:type_name -> protowire.RPCError + 1, // 55: protowire.GetVirtualSelectedParentBlueScoreResponseMessage.error:type_name -> protowire.RPCError + 1, // 56: protowire.NotifyVirtualSelectedParentBlueScoreChangedResponseMessage.error:type_name -> protowire.RPCError + 1, // 57: protowire.NotifyVirtualDaaScoreChangedResponseMessage.error:type_name -> protowire.RPCError + 1, // 58: protowire.NotifyPruningPointUTXOSetOverrideResponseMessage.error:type_name -> protowire.RPCError + 1, // 59: protowire.StopNotifyingPruningPointUTXOSetOverrideResponseMessage.error:type_name -> protowire.RPCError + 1, // 60: protowire.BanResponseMessage.error:type_name -> protowire.RPCError + 1, // 61: protowire.UnbanResponseMessage.error:type_name -> protowire.RPCError + 1, // 62: protowire.GetInfoResponseMessage.error:type_name -> protowire.RPCError + 1, // 63: protowire.EstimateNetworkHashesPerSecondResponseMessage.error:type_name -> protowire.RPCError + 64, // [64:64] is the sub-list for method output_type + 64, // [64:64] is the sub-list for method input_type + 64, // [64:64] is the sub-list for extension type_name + 64, // [64:64] is the sub-list for extension extendee + 0, // [0:64] is the sub-list for field type_name } func init() { file_rpc_proto_init() } @@ -6067,7 +6121,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RpcBlockVerboseData); i { + switch v := v.(*RpcBlockLevelParents); i { case 0: return &v.state case 1: @@ -6079,7 +6133,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RpcTransaction); i { + switch v := v.(*RpcBlockVerboseData); i { case 0: return &v.state case 1: @@ -6091,7 +6145,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RpcTransactionInput); i { + switch v := v.(*RpcTransaction); i { case 0: return &v.state case 1: @@ -6103,7 +6157,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RpcScriptPublicKey); i { + switch v := v.(*RpcTransactionInput); i { case 0: return &v.state case 1: @@ -6115,7 +6169,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RpcTransactionOutput); i { + switch v := v.(*RpcScriptPublicKey); i { case 0: return &v.state case 1: @@ -6127,7 +6181,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RpcOutpoint); i { + switch v := v.(*RpcTransactionOutput); i { case 0: return &v.state case 1: @@ -6139,7 +6193,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RpcUtxoEntry); i { + switch v := v.(*RpcOutpoint); i { case 0: return &v.state case 1: @@ -6151,7 +6205,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RpcTransactionVerboseData); i { + switch v := v.(*RpcUtxoEntry); i { case 0: return &v.state case 1: @@ -6163,7 +6217,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RpcTransactionInputVerboseData); i { + switch v := v.(*RpcTransactionVerboseData); i { case 0: return &v.state case 1: @@ -6175,7 +6229,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RpcTransactionOutputVerboseData); i { + switch v := v.(*RpcTransactionInputVerboseData); i { case 0: return &v.state case 1: @@ -6187,7 +6241,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCurrentNetworkRequestMessage); i { + switch v := v.(*RpcTransactionOutputVerboseData); i { case 0: return &v.state case 1: @@ -6199,7 +6253,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetCurrentNetworkResponseMessage); i { + switch v := v.(*GetCurrentNetworkRequestMessage); i { case 0: return &v.state case 1: @@ -6211,7 +6265,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitBlockRequestMessage); i { + switch v := v.(*GetCurrentNetworkResponseMessage); i { case 0: return &v.state case 1: @@ -6223,7 +6277,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitBlockResponseMessage); i { + switch v := v.(*SubmitBlockRequestMessage); i { case 0: return &v.state case 1: @@ -6235,7 +6289,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlockTemplateRequestMessage); i { + switch v := v.(*SubmitBlockResponseMessage); i { case 0: return &v.state case 1: @@ -6247,7 +6301,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlockTemplateResponseMessage); i { + switch v := v.(*GetBlockTemplateRequestMessage); i { case 0: return &v.state case 1: @@ -6259,7 +6313,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyBlockAddedRequestMessage); i { + switch v := v.(*GetBlockTemplateResponseMessage); i { case 0: return &v.state case 1: @@ -6271,7 +6325,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyBlockAddedResponseMessage); i { + switch v := v.(*NotifyBlockAddedRequestMessage); i { case 0: return &v.state case 1: @@ -6283,7 +6337,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BlockAddedNotificationMessage); i { + switch v := v.(*NotifyBlockAddedResponseMessage); i { case 0: return &v.state case 1: @@ -6295,7 +6349,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPeerAddressesRequestMessage); i { + switch v := v.(*BlockAddedNotificationMessage); i { case 0: return &v.state case 1: @@ -6307,7 +6361,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPeerAddressesResponseMessage); i { + switch v := v.(*GetPeerAddressesRequestMessage); i { case 0: return &v.state case 1: @@ -6319,7 +6373,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetPeerAddressesKnownAddressMessage); i { + switch v := v.(*GetPeerAddressesResponseMessage); i { case 0: return &v.state case 1: @@ -6331,7 +6385,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSelectedTipHashRequestMessage); i { + switch v := v.(*GetPeerAddressesKnownAddressMessage); i { case 0: return &v.state case 1: @@ -6343,7 +6397,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSelectedTipHashResponseMessage); i { + switch v := v.(*GetSelectedTipHashRequestMessage); i { case 0: return &v.state case 1: @@ -6355,7 +6409,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMempoolEntryRequestMessage); i { + switch v := v.(*GetSelectedTipHashResponseMessage); i { case 0: return &v.state case 1: @@ -6367,7 +6421,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMempoolEntryResponseMessage); i { + switch v := v.(*GetMempoolEntryRequestMessage); i { case 0: return &v.state case 1: @@ -6379,7 +6433,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMempoolEntriesRequestMessage); i { + switch v := v.(*GetMempoolEntryResponseMessage); i { case 0: return &v.state case 1: @@ -6391,7 +6445,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMempoolEntriesResponseMessage); i { + switch v := v.(*GetMempoolEntriesRequestMessage); i { case 0: return &v.state case 1: @@ -6403,7 +6457,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MempoolEntry); i { + switch v := v.(*GetMempoolEntriesResponseMessage); i { case 0: return &v.state case 1: @@ -6415,7 +6469,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConnectedPeerInfoRequestMessage); i { + switch v := v.(*MempoolEntry); i { case 0: return &v.state case 1: @@ -6427,7 +6481,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConnectedPeerInfoResponseMessage); i { + switch v := v.(*GetConnectedPeerInfoRequestMessage); i { case 0: return &v.state case 1: @@ -6439,7 +6493,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetConnectedPeerInfoMessage); i { + switch v := v.(*GetConnectedPeerInfoResponseMessage); i { case 0: return &v.state case 1: @@ -6451,7 +6505,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddPeerRequestMessage); i { + switch v := v.(*GetConnectedPeerInfoMessage); i { case 0: return &v.state case 1: @@ -6463,7 +6517,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddPeerResponseMessage); i { + switch v := v.(*AddPeerRequestMessage); i { case 0: return &v.state case 1: @@ -6475,7 +6529,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitTransactionRequestMessage); i { + switch v := v.(*AddPeerResponseMessage); i { case 0: return &v.state case 1: @@ -6487,7 +6541,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubmitTransactionResponseMessage); i { + switch v := v.(*SubmitTransactionRequestMessage); i { case 0: return &v.state case 1: @@ -6499,7 +6553,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyVirtualSelectedParentChainChangedRequestMessage); i { + switch v := v.(*SubmitTransactionResponseMessage); i { case 0: return &v.state case 1: @@ -6511,7 +6565,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyVirtualSelectedParentChainChangedResponseMessage); i { + switch v := v.(*NotifyVirtualSelectedParentChainChangedRequestMessage); i { case 0: return &v.state case 1: @@ -6523,7 +6577,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualSelectedParentChainChangedNotificationMessage); i { + switch v := v.(*NotifyVirtualSelectedParentChainChangedResponseMessage); i { case 0: return &v.state case 1: @@ -6535,7 +6589,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlockRequestMessage); i { + switch v := v.(*VirtualSelectedParentChainChangedNotificationMessage); i { case 0: return &v.state case 1: @@ -6547,7 +6601,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlockResponseMessage); i { + switch v := v.(*GetBlockRequestMessage); i { case 0: return &v.state case 1: @@ -6559,7 +6613,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSubnetworkRequestMessage); i { + switch v := v.(*GetBlockResponseMessage); i { case 0: return &v.state case 1: @@ -6571,7 +6625,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSubnetworkResponseMessage); i { + switch v := v.(*GetSubnetworkRequestMessage); i { case 0: return &v.state case 1: @@ -6583,7 +6637,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVirtualSelectedParentChainFromBlockRequestMessage); i { + switch v := v.(*GetSubnetworkResponseMessage); i { case 0: return &v.state case 1: @@ -6595,7 +6649,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVirtualSelectedParentChainFromBlockResponseMessage); i { + switch v := v.(*GetVirtualSelectedParentChainFromBlockRequestMessage); i { case 0: return &v.state case 1: @@ -6607,7 +6661,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlocksRequestMessage); i { + switch v := v.(*GetVirtualSelectedParentChainFromBlockResponseMessage); i { case 0: return &v.state case 1: @@ -6619,7 +6673,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlocksResponseMessage); i { + switch v := v.(*GetBlocksRequestMessage); i { case 0: return &v.state case 1: @@ -6631,7 +6685,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlockCountRequestMessage); i { + switch v := v.(*GetBlocksResponseMessage); i { case 0: return &v.state case 1: @@ -6643,7 +6697,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlockCountResponseMessage); i { + switch v := v.(*GetBlockCountRequestMessage); i { case 0: return &v.state case 1: @@ -6655,7 +6709,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlockDagInfoRequestMessage); i { + switch v := v.(*GetBlockCountResponseMessage); i { case 0: return &v.state case 1: @@ -6667,7 +6721,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBlockDagInfoResponseMessage); i { + switch v := v.(*GetBlockDagInfoRequestMessage); i { case 0: return &v.state case 1: @@ -6679,7 +6733,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResolveFinalityConflictRequestMessage); i { + switch v := v.(*GetBlockDagInfoResponseMessage); i { case 0: return &v.state case 1: @@ -6691,7 +6745,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResolveFinalityConflictResponseMessage); i { + switch v := v.(*ResolveFinalityConflictRequestMessage); i { case 0: return &v.state case 1: @@ -6703,7 +6757,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyFinalityConflictsRequestMessage); i { + switch v := v.(*ResolveFinalityConflictResponseMessage); i { case 0: return &v.state case 1: @@ -6715,7 +6769,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyFinalityConflictsResponseMessage); i { + switch v := v.(*NotifyFinalityConflictsRequestMessage); i { case 0: return &v.state case 1: @@ -6727,7 +6781,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FinalityConflictNotificationMessage); i { + switch v := v.(*NotifyFinalityConflictsResponseMessage); i { case 0: return &v.state case 1: @@ -6739,7 +6793,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FinalityConflictResolvedNotificationMessage); i { + switch v := v.(*FinalityConflictNotificationMessage); i { case 0: return &v.state case 1: @@ -6751,7 +6805,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShutDownRequestMessage); i { + switch v := v.(*FinalityConflictResolvedNotificationMessage); i { case 0: return &v.state case 1: @@ -6763,7 +6817,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShutDownResponseMessage); i { + switch v := v.(*ShutDownRequestMessage); i { case 0: return &v.state case 1: @@ -6775,7 +6829,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetHeadersRequestMessage); i { + switch v := v.(*ShutDownResponseMessage); i { case 0: return &v.state case 1: @@ -6787,7 +6841,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetHeadersResponseMessage); i { + switch v := v.(*GetHeadersRequestMessage); i { case 0: return &v.state case 1: @@ -6799,7 +6853,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyUtxosChangedRequestMessage); i { + switch v := v.(*GetHeadersResponseMessage); i { case 0: return &v.state case 1: @@ -6811,7 +6865,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyUtxosChangedResponseMessage); i { + switch v := v.(*NotifyUtxosChangedRequestMessage); i { case 0: return &v.state case 1: @@ -6823,7 +6877,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UtxosChangedNotificationMessage); i { + switch v := v.(*NotifyUtxosChangedResponseMessage); i { case 0: return &v.state case 1: @@ -6835,7 +6889,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UtxosByAddressesEntry); i { + switch v := v.(*UtxosChangedNotificationMessage); i { case 0: return &v.state case 1: @@ -6847,7 +6901,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopNotifyingUtxosChangedRequestMessage); i { + switch v := v.(*UtxosByAddressesEntry); i { case 0: return &v.state case 1: @@ -6859,7 +6913,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopNotifyingUtxosChangedResponseMessage); i { + switch v := v.(*StopNotifyingUtxosChangedRequestMessage); i { case 0: return &v.state case 1: @@ -6871,7 +6925,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUtxosByAddressesRequestMessage); i { + switch v := v.(*StopNotifyingUtxosChangedResponseMessage); i { case 0: return &v.state case 1: @@ -6883,7 +6937,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetUtxosByAddressesResponseMessage); i { + switch v := v.(*GetUtxosByAddressesRequestMessage); i { case 0: return &v.state case 1: @@ -6895,7 +6949,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVirtualSelectedParentBlueScoreRequestMessage); i { + switch v := v.(*GetUtxosByAddressesResponseMessage); i { case 0: return &v.state case 1: @@ -6907,7 +6961,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetVirtualSelectedParentBlueScoreResponseMessage); i { + switch v := v.(*GetVirtualSelectedParentBlueScoreRequestMessage); i { case 0: return &v.state case 1: @@ -6919,7 +6973,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyVirtualSelectedParentBlueScoreChangedRequestMessage); i { + switch v := v.(*GetVirtualSelectedParentBlueScoreResponseMessage); i { case 0: return &v.state case 1: @@ -6931,7 +6985,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyVirtualSelectedParentBlueScoreChangedResponseMessage); i { + switch v := v.(*NotifyVirtualSelectedParentBlueScoreChangedRequestMessage); i { case 0: return &v.state case 1: @@ -6943,7 +6997,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualSelectedParentBlueScoreChangedNotificationMessage); i { + switch v := v.(*NotifyVirtualSelectedParentBlueScoreChangedResponseMessage); i { case 0: return &v.state case 1: @@ -6955,7 +7009,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyVirtualDaaScoreChangedRequestMessage); i { + switch v := v.(*VirtualSelectedParentBlueScoreChangedNotificationMessage); i { case 0: return &v.state case 1: @@ -6967,7 +7021,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyVirtualDaaScoreChangedResponseMessage); i { + switch v := v.(*NotifyVirtualDaaScoreChangedRequestMessage); i { case 0: return &v.state case 1: @@ -6979,7 +7033,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VirtualDaaScoreChangedNotificationMessage); i { + switch v := v.(*NotifyVirtualDaaScoreChangedResponseMessage); i { case 0: return &v.state case 1: @@ -6991,7 +7045,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyPruningPointUTXOSetOverrideRequestMessage); i { + switch v := v.(*VirtualDaaScoreChangedNotificationMessage); i { case 0: return &v.state case 1: @@ -7003,7 +7057,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NotifyPruningPointUTXOSetOverrideResponseMessage); i { + switch v := v.(*NotifyPruningPointUTXOSetOverrideRequestMessage); i { case 0: return &v.state case 1: @@ -7015,7 +7069,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PruningPointUTXOSetOverrideNotificationMessage); i { + switch v := v.(*NotifyPruningPointUTXOSetOverrideResponseMessage); i { case 0: return &v.state case 1: @@ -7027,7 +7081,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopNotifyingPruningPointUTXOSetOverrideRequestMessage); i { + switch v := v.(*PruningPointUTXOSetOverrideNotificationMessage); i { case 0: return &v.state case 1: @@ -7039,7 +7093,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StopNotifyingPruningPointUTXOSetOverrideResponseMessage); i { + switch v := v.(*StopNotifyingPruningPointUTXOSetOverrideRequestMessage); i { case 0: return &v.state case 1: @@ -7051,7 +7105,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BanRequestMessage); i { + switch v := v.(*StopNotifyingPruningPointUTXOSetOverrideResponseMessage); i { case 0: return &v.state case 1: @@ -7063,7 +7117,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BanResponseMessage); i { + switch v := v.(*BanRequestMessage); i { case 0: return &v.state case 1: @@ -7075,7 +7129,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnbanRequestMessage); i { + switch v := v.(*BanResponseMessage); i { case 0: return &v.state case 1: @@ -7087,7 +7141,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UnbanResponseMessage); i { + switch v := v.(*UnbanRequestMessage); i { case 0: return &v.state case 1: @@ -7099,7 +7153,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInfoRequestMessage); i { + switch v := v.(*UnbanResponseMessage); i { case 0: return &v.state case 1: @@ -7111,7 +7165,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetInfoResponseMessage); i { + switch v := v.(*GetInfoRequestMessage); i { case 0: return &v.state case 1: @@ -7123,7 +7177,7 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EstimateNetworkHashesPerSecondRequestMessage); i { + switch v := v.(*GetInfoResponseMessage); i { case 0: return &v.state case 1: @@ -7135,6 +7189,18 @@ func file_rpc_proto_init() { } } file_rpc_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EstimateNetworkHashesPerSecondRequestMessage); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EstimateNetworkHashesPerSecondResponseMessage); i { case 0: return &v.state @@ -7153,7 +7219,7 @@ func file_rpc_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_rpc_proto_rawDesc, NumEnums: 1, - NumMessages: 93, + NumMessages: 94, NumExtensions: 0, NumServices: 0, }, diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.proto b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.proto index e0c8234e00..ed6cec397d 100644 --- a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.proto +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc.proto @@ -27,7 +27,7 @@ message RpcBlock { message RpcBlockHeader { uint32 version = 1; - repeated string parentHashes = 2; + repeated RpcBlockLevelParents parents = 12; string hashMerkleRoot = 3; string acceptedIdMerkleRoot = 4; string utxoCommitment = 5; @@ -39,6 +39,10 @@ message RpcBlockHeader { string finalityPoint = 11; } +message RpcBlockLevelParents { + repeated string parentHashes = 1; +} + message RpcBlockVerboseData{ string hash = 1; double difficulty = 11; diff --git a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc_submit_block.go b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc_submit_block.go index a5e7505408..45e5b32ecc 100644 --- a/infrastructure/network/netadapter/server/grpcserver/protowire/rpc_submit_block.go +++ b/infrastructure/network/netadapter/server/grpcserver/protowire/rpc_submit_block.go @@ -125,9 +125,17 @@ func (x *RpcBlockHeader) toAppMessage() (*appmessage.RPCBlockHeader, error) { if x.Version > math.MaxUint16 { return nil, errors.Errorf("Invalid block header version - bigger then uint16") } + parents := make([]*appmessage.RPCBlockLevelParents, len(x.Parents)) + for i, blockLevelParents := range x.Parents { + var err error + parents[i], err = blockLevelParents.toAppMessage() + if err != nil { + return nil, err + } + } return &appmessage.RPCBlockHeader{ Version: x.Version, - ParentHashes: x.ParentHashes, + Parents: parents, HashMerkleRoot: x.HashMerkleRoot, AcceptedIDMerkleRoot: x.AcceptedIdMerkleRoot, UTXOCommitment: x.UtxoCommitment, @@ -141,9 +149,14 @@ func (x *RpcBlockHeader) toAppMessage() (*appmessage.RPCBlockHeader, error) { } func (x *RpcBlockHeader) fromAppMessage(message *appmessage.RPCBlockHeader) { + parents := make([]*RpcBlockLevelParents, len(message.Parents)) + for i, blockLevelParents := range message.Parents { + parents[i] = &RpcBlockLevelParents{} + parents[i].fromAppMessage(blockLevelParents) + } *x = RpcBlockHeader{ Version: message.Version, - ParentHashes: message.ParentHashes, + Parents: parents, HashMerkleRoot: message.HashMerkleRoot, AcceptedIdMerkleRoot: message.AcceptedIDMerkleRoot, UtxoCommitment: message.UTXOCommitment, @@ -156,6 +169,21 @@ func (x *RpcBlockHeader) fromAppMessage(message *appmessage.RPCBlockHeader) { } } +func (x *RpcBlockLevelParents) toAppMessage() (*appmessage.RPCBlockLevelParents, error) { + if x == nil { + return nil, errors.Wrapf(errorNil, "RpcBlockLevelParents is nil") + } + return &appmessage.RPCBlockLevelParents{ + ParentHashes: x.ParentHashes, + }, nil +} + +func (x *RpcBlockLevelParents) fromAppMessage(message *appmessage.RPCBlockLevelParents) { + *x = RpcBlockLevelParents{ + ParentHashes: message.ParentHashes, + } +} + func (x *RpcBlockVerboseData) toAppMessage() (*appmessage.RPCBlockVerboseData, error) { if x == nil { return nil, errors.Wrapf(errorNil, "RpcBlockVerboseData is nil") diff --git a/stability-tests/rpc-stability/run/commands.json b/stability-tests/rpc-stability/run/commands.json index ebf5808b94..b822581b13 100644 --- a/stability-tests/rpc-stability/run/commands.json +++ b/stability-tests/rpc-stability/run/commands.json @@ -1,5 +1,5 @@ {"getBlockDagInfoRequest": {}} {"getBlockRequest": {"hash": "0000691a26e1cd33ed9d0587d774181726f4e38eecd722a858d3baaa1fd19250"}} {"getBlockRequest": {"hash": "666661a26e1cd33ed9d0587d774181726f4e38eecd722a858d3baaa1fd19250"}} -{"submitBlockRequest": {"block": {"header":{"version":1,"parentHashes":[],"hashMerkleRoot":"0000000000000000000000000000000000000000000","acceptedIdMerkleRoot":"0000000000000000000000000000000000000000000","utxoCommitment": "0000000000000000000000000000000000000000000","timestamp":1593528309396,"bits":511705087,"nonce":282366},"transactions":[{"version":1,"inputs":[],"outputs":[],"lockTime":0,"subnetworkId":"100000000000000000000000000","gas":0,"payload":"AAAAAAAAAAAXqRTaF0XptUm9C/oaVplxx366MM1aS4drYXNwYS1kZXZuZXQ="}]}}} +{"submitBlockRequest": {"block": {"header":{"version":1,"parents":[],"hashMerkleRoot":"0000000000000000000000000000000000000000000","acceptedIdMerkleRoot":"0000000000000000000000000000000000000000000","utxoCommitment": "0000000000000000000000000000000000000000000","timestamp":1593528309396,"bits":511705087,"nonce":282366},"transactions":[{"version":1,"inputs":[],"outputs":[],"lockTime":0,"subnetworkId":"100000000000000000000000000","gas":0,"payload":"AAAAAAAAAAAXqRTaF0XptUm9C/oaVplxx366MM1aS4drYXNwYS1kZXZuZXQ="}]}}} {"submitTransactionRequest": {"transaction": {"version":1,"inputs":[],"outputs":[],"lockTime":0,"subnetworkId":"100000000000000000000000000","gas":0,"payload":"AAAAAAAAAAAXqRTaF0XptUm9C/oaVplxx366MM1aS4drYXNwYS1kZXZuZXQ="}}}