From 435a2b36fc93fe773fda06eb39bcf5e619fc0b55 Mon Sep 17 00:00:00 2001 From: Preston Van Loon Date: Sat, 6 Jul 2019 17:41:25 -0400 Subject: [PATCH 1/3] Cast bytes to correct bitfield, failing tests now though --- WORKSPACE | 6 + proto/beacon/p2p/v1/BUILD.bazel | 5 +- proto/beacon/p2p/v1/types.pb.go | 570 +++++++++++--------------------- proto/beacon/p2p/v1/types.proto | 8 +- 4 files changed, 208 insertions(+), 381 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index f977e0ad9388..d801d03249bb 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1102,3 +1102,9 @@ go_repository( commit = "29f32d820d112dbd66e58492a6ffb7cc3106312b", importpath = "gopkg.in/d4l3k/messagediff.v1", ) + +go_repository( + name = "com_github_prysmaticlabs_go_bitfield", + commit = "66dcdec9762a9f5935d9466b18f4bee852d1b091", + importpath = "github.com/prysmaticlabs/go-bitfield", +) diff --git a/proto/beacon/p2p/v1/BUILD.bazel b/proto/beacon/p2p/v1/BUILD.bazel index 32d4844ad613..809962654f08 100644 --- a/proto/beacon/p2p/v1/BUILD.bazel +++ b/proto/beacon/p2p/v1/BUILD.bazel @@ -4,13 +4,14 @@ load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library") go_proto_library( name = "v1_go_proto", + compiler = "//:proto_compiler", importpath = "github.com/prysmaticlabs/prysm/proto/beacon/p2p/v1", proto = ":v1_proto", visibility = ["//visibility:public"], deps = [ "//proto/common:common_go_proto", + "@com_github_prysmaticlabs_go_bitfield//:go_default_library", ], - compiler = "//:proto_compiler", ) go_library( @@ -28,8 +29,8 @@ proto_library( ], visibility = ["//visibility:public"], deps = [ + "//proto/common:common_proto", "@com_google_protobuf//:timestamp_proto", "@gogo_special_proto//github.com/gogo/protobuf/gogoproto", - "//proto/common:common_proto", ], ) diff --git a/proto/beacon/p2p/v1/types.pb.go b/proto/beacon/p2p/v1/types.pb.go index 2f0d7d8070ab..e2fa0713116e 100755 --- a/proto/beacon/p2p/v1/types.pb.go +++ b/proto/beacon/p2p/v1/types.pb.go @@ -10,6 +10,7 @@ import ( _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" + github_com_prysmaticlabs_go_bitfield "github.com/prysmaticlabs/go-bitfield" _ "github.com/prysmaticlabs/prysm/proto/common" ) @@ -25,34 +26,34 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package type BeaconState struct { - GenesisTime uint64 `protobuf:"varint,1001,opt,name=genesis_time,json=genesisTime,proto3" json:"genesis_time,omitempty"` - Slot uint64 `protobuf:"varint,1002,opt,name=slot,proto3" json:"slot,omitempty"` - Fork *Fork `protobuf:"bytes,1003,opt,name=fork,proto3" json:"fork,omitempty"` - LatestBlockHeader *BeaconBlockHeader `protobuf:"bytes,2001,opt,name=latest_block_header,json=latestBlockHeader,proto3" json:"latest_block_header,omitempty"` - BlockRoots [][]byte `protobuf:"bytes,2002,rep,name=block_roots,json=blockRoots,proto3" json:"block_roots,omitempty" ssz:"size=8192,32"` - StateRoots [][]byte `protobuf:"bytes,2003,rep,name=state_roots,json=stateRoots,proto3" json:"state_roots,omitempty" ssz:"size=8192,32"` - HistoricalRoots [][]byte `protobuf:"bytes,2004,rep,name=historical_roots,json=historicalRoots,proto3" json:"historical_roots,omitempty" ssz:"size=?,32"` - Eth1Data *Eth1Data `protobuf:"bytes,3001,opt,name=eth1_data,json=eth1Data,proto3" json:"eth1_data,omitempty"` - Eth1DataVotes []*Eth1Data `protobuf:"bytes,3002,rep,name=eth1_data_votes,json=eth1DataVotes,proto3" json:"eth1_data_votes,omitempty"` - Eth1DepositIndex uint64 `protobuf:"varint,3003,opt,name=eth1_deposit_index,json=eth1DepositIndex,proto3" json:"eth1_deposit_index,omitempty"` - Validators []*Validator `protobuf:"bytes,4001,rep,name=validators,proto3" json:"validators,omitempty"` - Balances []uint64 `protobuf:"varint,4002,rep,packed,name=balances,proto3" json:"balances,omitempty"` - StartShard uint64 `protobuf:"varint,5001,opt,name=start_shard,json=startShard,proto3" json:"start_shard,omitempty"` - RandaoMixes [][]byte `protobuf:"bytes,5002,rep,name=randao_mixes,json=randaoMixes,proto3" json:"randao_mixes,omitempty" ssz:"size=8192,32"` - ActiveIndexRoots [][]byte `protobuf:"bytes,5003,rep,name=active_index_roots,json=activeIndexRoots,proto3" json:"active_index_roots,omitempty" ssz:"size=8192,32"` - CompactCommitteesRoots [][]byte `protobuf:"bytes,5004,rep,name=compact_committees_roots,json=compactCommitteesRoots,proto3" json:"compact_committees_roots,omitempty" ssz:"size=8192,32"` - Slashings []uint64 `protobuf:"varint,6001,rep,packed,name=slashings,proto3" json:"slashings,omitempty" ssz:"size=8192"` - PreviousEpochAttestations []*PendingAttestation `protobuf:"bytes,7001,rep,name=previous_epoch_attestations,json=previousEpochAttestations,proto3" json:"previous_epoch_attestations,omitempty" ssz:"size=32"` - CurrentEpochAttestations []*PendingAttestation `protobuf:"bytes,7002,rep,name=current_epoch_attestations,json=currentEpochAttestations,proto3" json:"current_epoch_attestations,omitempty" ssz:"size=32"` - PreviousCrosslinks []*Crosslink `protobuf:"bytes,8001,rep,name=previous_crosslinks,json=previousCrosslinks,proto3" json:"previous_crosslinks,omitempty" ssz:"size=1024"` - CurrentCrosslinks []*Crosslink `protobuf:"bytes,8002,rep,name=current_crosslinks,json=currentCrosslinks,proto3" json:"current_crosslinks,omitempty" ssz:"size=1024"` - JustificationBits []byte `protobuf:"bytes,9001,opt,name=justification_bits,json=justificationBits,proto3" json:"justification_bits,omitempty" ssz:"size=1"` - PreviousJustifiedCheckpoint *Checkpoint `protobuf:"bytes,9002,opt,name=previous_justified_checkpoint,json=previousJustifiedCheckpoint,proto3" json:"previous_justified_checkpoint,omitempty"` - CurrentJustifiedCheckpoint *Checkpoint `protobuf:"bytes,9003,opt,name=current_justified_checkpoint,json=currentJustifiedCheckpoint,proto3" json:"current_justified_checkpoint,omitempty"` - FinalizedCheckpoint *Checkpoint `protobuf:"bytes,9004,opt,name=finalized_checkpoint,json=finalizedCheckpoint,proto3" json:"finalized_checkpoint,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + GenesisTime uint64 `protobuf:"varint,1001,opt,name=genesis_time,json=genesisTime,proto3" json:"genesis_time,omitempty"` + Slot uint64 `protobuf:"varint,1002,opt,name=slot,proto3" json:"slot,omitempty"` + Fork *Fork `protobuf:"bytes,1003,opt,name=fork,proto3" json:"fork,omitempty"` + LatestBlockHeader *BeaconBlockHeader `protobuf:"bytes,2001,opt,name=latest_block_header,json=latestBlockHeader,proto3" json:"latest_block_header,omitempty"` + BlockRoots [][]byte `protobuf:"bytes,2002,rep,name=block_roots,json=blockRoots,proto3" json:"block_roots,omitempty" ssz:"size=8192,32"` + StateRoots [][]byte `protobuf:"bytes,2003,rep,name=state_roots,json=stateRoots,proto3" json:"state_roots,omitempty" ssz:"size=8192,32"` + HistoricalRoots [][]byte `protobuf:"bytes,2004,rep,name=historical_roots,json=historicalRoots,proto3" json:"historical_roots,omitempty" ssz:"size=?,32"` + Eth1Data *Eth1Data `protobuf:"bytes,3001,opt,name=eth1_data,json=eth1Data,proto3" json:"eth1_data,omitempty"` + Eth1DataVotes []*Eth1Data `protobuf:"bytes,3002,rep,name=eth1_data_votes,json=eth1DataVotes,proto3" json:"eth1_data_votes,omitempty"` + Eth1DepositIndex uint64 `protobuf:"varint,3003,opt,name=eth1_deposit_index,json=eth1DepositIndex,proto3" json:"eth1_deposit_index,omitempty"` + Validators []*Validator `protobuf:"bytes,4001,rep,name=validators,proto3" json:"validators,omitempty"` + Balances []uint64 `protobuf:"varint,4002,rep,packed,name=balances,proto3" json:"balances,omitempty"` + StartShard uint64 `protobuf:"varint,5001,opt,name=start_shard,json=startShard,proto3" json:"start_shard,omitempty"` + RandaoMixes [][]byte `protobuf:"bytes,5002,rep,name=randao_mixes,json=randaoMixes,proto3" json:"randao_mixes,omitempty" ssz:"size=8192,32"` + ActiveIndexRoots [][]byte `protobuf:"bytes,5003,rep,name=active_index_roots,json=activeIndexRoots,proto3" json:"active_index_roots,omitempty" ssz:"size=8192,32"` + CompactCommitteesRoots [][]byte `protobuf:"bytes,5004,rep,name=compact_committees_roots,json=compactCommitteesRoots,proto3" json:"compact_committees_roots,omitempty" ssz:"size=8192,32"` + Slashings []uint64 `protobuf:"varint,6001,rep,packed,name=slashings,proto3" json:"slashings,omitempty" ssz:"size=8192"` + PreviousEpochAttestations []*PendingAttestation `protobuf:"bytes,7001,rep,name=previous_epoch_attestations,json=previousEpochAttestations,proto3" json:"previous_epoch_attestations,omitempty" ssz:"size=32"` + CurrentEpochAttestations []*PendingAttestation `protobuf:"bytes,7002,rep,name=current_epoch_attestations,json=currentEpochAttestations,proto3" json:"current_epoch_attestations,omitempty" ssz:"size=32"` + PreviousCrosslinks []*Crosslink `protobuf:"bytes,8001,rep,name=previous_crosslinks,json=previousCrosslinks,proto3" json:"previous_crosslinks,omitempty" ssz:"size=1024"` + CurrentCrosslinks []*Crosslink `protobuf:"bytes,8002,rep,name=current_crosslinks,json=currentCrosslinks,proto3" json:"current_crosslinks,omitempty" ssz:"size=1024"` + JustificationBits github_com_prysmaticlabs_go_bitfield.Bitvector4 `protobuf:"bytes,9001,opt,name=justification_bits,json=justificationBits,proto3,casttype=github.com/prysmaticlabs/go-bitfield.Bitvector4" json:"justification_bits,omitempty" ssz:"size=1"` + PreviousJustifiedCheckpoint *Checkpoint `protobuf:"bytes,9002,opt,name=previous_justified_checkpoint,json=previousJustifiedCheckpoint,proto3" json:"previous_justified_checkpoint,omitempty"` + CurrentJustifiedCheckpoint *Checkpoint `protobuf:"bytes,9003,opt,name=current_justified_checkpoint,json=currentJustifiedCheckpoint,proto3" json:"current_justified_checkpoint,omitempty"` + FinalizedCheckpoint *Checkpoint `protobuf:"bytes,9004,opt,name=finalized_checkpoint,json=finalizedCheckpoint,proto3" json:"finalized_checkpoint,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *BeaconState) Reset() { *m = BeaconState{} } @@ -235,7 +236,7 @@ func (m *BeaconState) GetCurrentCrosslinks() []*Crosslink { return nil } -func (m *BeaconState) GetJustificationBits() []byte { +func (m *BeaconState) GetJustificationBits() github_com_prysmaticlabs_go_bitfield.Bitvector4 { if m != nil { return m.JustificationBits } @@ -327,13 +328,13 @@ func (m *Fork) GetEpoch() uint64 { } type PendingAttestation struct { - AggregationBits []byte `protobuf:"bytes,1,opt,name=aggregation_bits,json=aggregationBits,proto3" json:"aggregation_bits,omitempty" ssz:"size=4096"` - Data *AttestationData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - InclusionDelay uint64 `protobuf:"varint,3,opt,name=inclusion_delay,json=inclusionDelay,proto3" json:"inclusion_delay,omitempty"` - ProposerIndex uint64 `protobuf:"varint,4,opt,name=proposer_index,json=proposerIndex,proto3" json:"proposer_index,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + AggregationBits github_com_prysmaticlabs_go_bitfield.Bitlist `protobuf:"bytes,1,opt,name=aggregation_bits,json=aggregationBits,proto3,casttype=github.com/prysmaticlabs/go-bitfield.Bitlist" json:"aggregation_bits,omitempty" ssz:"size=4096"` + Data *AttestationData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` + InclusionDelay uint64 `protobuf:"varint,3,opt,name=inclusion_delay,json=inclusionDelay,proto3" json:"inclusion_delay,omitempty"` + ProposerIndex uint64 `protobuf:"varint,4,opt,name=proposer_index,json=proposerIndex,proto3" json:"proposer_index,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *PendingAttestation) Reset() { *m = PendingAttestation{} } @@ -369,7 +370,7 @@ func (m *PendingAttestation) XXX_DiscardUnknown() { var xxx_messageInfo_PendingAttestation proto.InternalMessageInfo -func (m *PendingAttestation) GetAggregationBits() []byte { +func (m *PendingAttestation) GetAggregationBits() github_com_prysmaticlabs_go_bitfield.Bitlist { if m != nil { return m.AggregationBits } @@ -398,13 +399,13 @@ func (m *PendingAttestation) GetProposerIndex() uint64 { } type Attestation struct { - Data *AttestationData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - AggregationBits []byte `protobuf:"bytes,2,opt,name=aggregation_bits,json=aggregationBits,proto3" json:"aggregation_bits,omitempty" ssz:"size=4096"` - CustodyBits []byte `protobuf:"bytes,3,opt,name=custody_bits,json=custodyBits,proto3" json:"custody_bits,omitempty" ssz:"size=4096"` - Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty" ssz:"size=96"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Data *AttestationData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + AggregationBits github_com_prysmaticlabs_go_bitfield.Bitlist `protobuf:"bytes,2,opt,name=aggregation_bits,json=aggregationBits,proto3,casttype=github.com/prysmaticlabs/go-bitfield.Bitlist" json:"aggregation_bits,omitempty" ssz:"size=4096"` + CustodyBits []byte `protobuf:"bytes,3,opt,name=custody_bits,json=custodyBits,proto3" json:"custody_bits,omitempty"` + Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty" ssz:"size=96"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *Attestation) Reset() { *m = Attestation{} } @@ -447,7 +448,7 @@ func (m *Attestation) GetData() *AttestationData { return nil } -func (m *Attestation) GetAggregationBits() []byte { +func (m *Attestation) GetAggregationBits() github_com_prysmaticlabs_go_bitfield.Bitlist { if m != nil { return m.AggregationBits } @@ -528,10 +529,6 @@ type AttestationData struct { Source *Checkpoint `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` Target *Checkpoint `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` Crosslink *Crosslink `protobuf:"bytes,4,opt,name=crosslink,proto3" json:"crosslink,omitempty"` - SourceEpoch uint64 `protobuf:"varint,1001,opt,name=source_epoch,json=sourceEpoch,proto3" json:"source_epoch,omitempty"` - SourceRoot []byte `protobuf:"bytes,1002,opt,name=source_root,json=sourceRoot,proto3" json:"source_root,omitempty"` - TargetEpoch uint64 `protobuf:"varint,1003,opt,name=target_epoch,json=targetEpoch,proto3" json:"target_epoch,omitempty"` - TargetRoot []byte `protobuf:"bytes,1004,opt,name=target_root,json=targetRoot,proto3" json:"target_root,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -598,34 +595,6 @@ func (m *AttestationData) GetCrosslink() *Crosslink { return nil } -func (m *AttestationData) GetSourceEpoch() uint64 { - if m != nil { - return m.SourceEpoch - } - return 0 -} - -func (m *AttestationData) GetSourceRoot() []byte { - if m != nil { - return m.SourceRoot - } - return nil -} - -func (m *AttestationData) GetTargetEpoch() uint64 { - if m != nil { - return m.TargetEpoch - } - return 0 -} - -func (m *AttestationData) GetTargetRoot() []byte { - if m != nil { - return m.TargetRoot - } - return nil -} - type AttestationTarget struct { Slot uint64 `protobuf:"varint,1,opt,name=slot,proto3" json:"slot,omitempty"` BlockRoot []byte `protobuf:"bytes,2,opt,name=block_root,json=blockRoot,proto3" json:"block_root,omitempty" ssz:"size=32"` @@ -1267,13 +1236,13 @@ func (m *BeaconBlockBody) GetTransfers() []*Transfer { } type SlashableAttestation struct { - ValidatorIndices []uint64 `protobuf:"varint,1,rep,packed,name=validator_indices,json=validatorIndices,proto3" json:"validator_indices,omitempty"` - CustodyBits []byte `protobuf:"bytes,2,opt,name=custody_bits,json=custodyBits,proto3" json:"custody_bits,omitempty" ssz:"size=4096"` - Data *AttestationData `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` - Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty" ssz:"size=96"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ValidatorIndices []uint64 `protobuf:"varint,1,rep,packed,name=validator_indices,json=validatorIndices,proto3" json:"validator_indices,omitempty"` + CustodyBits github_com_prysmaticlabs_go_bitfield.Bitlist `protobuf:"bytes,2,opt,name=custody_bits,json=custodyBits,proto3,casttype=github.com/prysmaticlabs/go-bitfield.Bitlist" json:"custody_bits,omitempty" ssz:"size=4096"` + Data *AttestationData `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + Signature []byte `protobuf:"bytes,4,opt,name=signature,proto3" json:"signature,omitempty" ssz:"size=96"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *SlashableAttestation) Reset() { *m = SlashableAttestation{} } @@ -1316,7 +1285,7 @@ func (m *SlashableAttestation) GetValidatorIndices() []uint64 { return nil } -func (m *SlashableAttestation) GetCustodyBits() []byte { +func (m *SlashableAttestation) GetCustodyBits() github_com_prysmaticlabs_go_bitfield.Bitlist { if m != nil { return m.CustodyBits } @@ -1913,8 +1882,8 @@ func (m *HistoricalBatch) GetStateRoots() [][]byte { } type CompactCommittee struct { - Pubkeys [][]byte `protobuf:"bytes,1,rep,name=pubkeys,proto3" json:"pubkeys,omitempty" ssz:"size=?,48"` - CompactValidators []uint64 `protobuf:"varint,2,rep,packed,name=compact_validators,json=compactValidators,proto3" json:"compact_validators,omitempty"` + Pubkeys [][]byte `protobuf:"bytes,1,rep,name=pubkeys,proto3" json:"pubkeys,omitempty" ssz:"size=4096,48"` + CompactValidators []uint64 `protobuf:"varint,2,rep,packed,name=compact_validators,json=compactValidators,proto3" json:"compact_validators,omitempty" ssz:"size=4096"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -1998,144 +1967,145 @@ func init() { func init() { proto.RegisterFile("proto/beacon/p2p/v1/types.proto", fileDescriptor_e719e7d82cfa7b0d) } var fileDescriptor_e719e7d82cfa7b0d = []byte{ - // 2179 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0x4d, 0x8c, 0x1b, 0x49, - 0x15, 0x56, 0xcf, 0x78, 0x66, 0xec, 0x67, 0xcf, 0xd8, 0xae, 0x64, 0x93, 0x26, 0x7f, 0x33, 0x74, - 0x14, 0x4d, 0xb2, 0x4b, 0x66, 0xc6, 0x4e, 0x94, 0x5f, 0x25, 0xd9, 0x78, 0x32, 0x21, 0x41, 0xe2, - 0xaf, 0x13, 0x05, 0x89, 0x4b, 0xab, 0xdd, 0x2e, 0xdb, 0xc5, 0x78, 0xba, 0xad, 0xae, 0xb2, 0x77, - 0x26, 0x5a, 0x81, 0x04, 0x27, 0x58, 0xb8, 0x81, 0x38, 0xc3, 0x8d, 0x9f, 0x23, 0x17, 0xe0, 0x04, - 0x08, 0x09, 0x89, 0x0b, 0x7f, 0x17, 0xf6, 0x10, 0x41, 0x4e, 0x2c, 0x8b, 0x90, 0x08, 0xe2, 0x0c, - 0xaa, 0x57, 0xd5, 0x3f, 0xf6, 0xb8, 0x27, 0x9e, 0x2c, 0xda, 0xbd, 0xd9, 0x55, 0xdf, 0xf7, 0x55, - 0xbd, 0xaa, 0xf7, 0x5e, 0xbd, 0xaa, 0x86, 0xe5, 0x7e, 0x18, 0x88, 0x60, 0xbd, 0x49, 0x5d, 0x2f, - 0xf0, 0xd7, 0xfb, 0xf5, 0xfe, 0xfa, 0xb0, 0xb6, 0x2e, 0xf6, 0xfa, 0x94, 0xaf, 0x61, 0x0f, 0x39, - 0x46, 0x45, 0x97, 0x86, 0x74, 0xb0, 0xb3, 0xa6, 0x30, 0x6b, 0xfd, 0x7a, 0x7f, 0x6d, 0x58, 0x3b, - 0x71, 0x52, 0x11, 0xbd, 0x60, 0x67, 0x27, 0xf0, 0xd7, 0x77, 0x28, 0xe7, 0x6e, 0x27, 0x22, 0x9d, - 0xb8, 0xd8, 0x61, 0xa2, 0x3b, 0x68, 0xae, 0x79, 0xc1, 0xce, 0x7a, 0x27, 0xe8, 0x04, 0xeb, 0xd8, - 0xdc, 0x1c, 0xb4, 0xf1, 0x9f, 0x62, 0xca, 0x5f, 0x0a, 0x6e, 0xbd, 0xb3, 0x04, 0xc5, 0x06, 0xaa, - 0x3f, 0x12, 0xae, 0xa0, 0xc4, 0x82, 0x52, 0x87, 0xfa, 0x94, 0x33, 0xee, 0x08, 0xb6, 0x43, 0xcd, - 0xf7, 0x16, 0x56, 0x8c, 0xf3, 0x39, 0xbb, 0xa8, 0x1b, 0x1f, 0xb3, 0x1d, 0x4a, 0x8e, 0x40, 0x8e, - 0xf7, 0x02, 0x61, 0xfe, 0x5d, 0xf5, 0xe1, 0x1f, 0x52, 0x83, 0x5c, 0x3b, 0x08, 0xb7, 0xcd, 0xf7, - 0x65, 0x63, 0xb1, 0x7e, 0x6a, 0x6d, 0xf2, 0xe4, 0xd7, 0xee, 0x07, 0xe1, 0xb6, 0x8d, 0x50, 0xf2, - 0x45, 0x38, 0xd2, 0x73, 0x05, 0xe5, 0xc2, 0x69, 0xf6, 0x02, 0x6f, 0xdb, 0xe9, 0x52, 0xb7, 0x45, - 0x43, 0xf3, 0xf7, 0x65, 0x54, 0xb8, 0x90, 0xa5, 0xa0, 0xa6, 0xdb, 0x90, 0x94, 0x07, 0xc8, 0xb0, - 0xab, 0x4a, 0x26, 0xd5, 0x44, 0xae, 0x41, 0x51, 0x89, 0x86, 0x41, 0x20, 0xb8, 0xf9, 0x87, 0xf2, - 0xca, 0xec, 0xf9, 0x52, 0xe3, 0xd8, 0x8b, 0x67, 0xcb, 0x84, 0xf3, 0xa7, 0x37, 0x2c, 0xce, 0x9e, - 0xd2, 0x5b, 0xd7, 0x6a, 0xd7, 0xeb, 0x9f, 0xb8, 0x54, 0xb7, 0x6c, 0x40, 0xac, 0x2d, 0xa1, 0x92, - 0xc9, 0xe5, 0x52, 0x68, 0xe6, 0x1f, 0x5f, 0xc2, 0x44, 0xac, 0x62, 0xde, 0x81, 0x4a, 0x97, 0x71, - 0x11, 0x84, 0xcc, 0x73, 0x7b, 0x9a, 0xfe, 0x27, 0x45, 0x3f, 0xf2, 0xe2, 0xd9, 0x72, 0x39, 0xa1, - 0xdf, 0x41, 0x6e, 0x39, 0x41, 0x2b, 0x81, 0xdb, 0x50, 0xa0, 0xa2, 0x5b, 0x73, 0x5a, 0xae, 0x70, - 0xcd, 0x9f, 0x1e, 0xc7, 0x65, 0x58, 0xc9, 0x5a, 0x86, 0x2d, 0xd1, 0xad, 0xdd, 0x73, 0x85, 0x6b, - 0xe7, 0xa9, 0xfe, 0x45, 0x1e, 0x42, 0x39, 0xe6, 0x3b, 0xc3, 0x40, 0x50, 0x6e, 0xfe, 0xec, 0xf8, - 0xca, 0xec, 0x54, 0x2a, 0x8b, 0x91, 0xca, 0x13, 0xc9, 0x23, 0x17, 0x81, 0x28, 0x29, 0xda, 0x0f, - 0x38, 0x13, 0x0e, 0xf3, 0x5b, 0x74, 0xd7, 0xfc, 0xf9, 0x71, 0xdc, 0xf1, 0x0a, 0x62, 0x55, 0xcf, - 0x43, 0xd9, 0x41, 0x1a, 0x00, 0x43, 0xb7, 0xc7, 0x5a, 0xae, 0x08, 0x42, 0x6e, 0x7e, 0x6f, 0x19, - 0x07, 0xfd, 0x78, 0xd6, 0xa0, 0x4f, 0x22, 0xa8, 0x9d, 0x62, 0x91, 0x93, 0x90, 0x6f, 0xba, 0x3d, - 0xd7, 0xf7, 0x28, 0x37, 0xbf, 0x2f, 0x15, 0x72, 0x76, 0xdc, 0x40, 0x56, 0x70, 0x57, 0x42, 0xe1, - 0xf0, 0xae, 0x1b, 0xb6, 0xcc, 0xaf, 0xaf, 0xe2, 0x44, 0x00, 0xdb, 0x1e, 0xc9, 0x26, 0x72, 0x03, - 0x4a, 0xa1, 0xeb, 0xb7, 0xdc, 0xc0, 0xd9, 0x61, 0xbb, 0x94, 0x9b, 0xdf, 0x58, 0x3d, 0x70, 0xe3, - 0x8a, 0x0a, 0xfc, 0x69, 0x89, 0x25, 0x5b, 0x40, 0x5c, 0x4f, 0xb0, 0x21, 0x55, 0x76, 0xea, 0xbd, - 0x7b, 0xe7, 0x60, 0x85, 0x8a, 0xa2, 0xe0, 0x02, 0xa8, 0xfd, 0xfb, 0x3c, 0x98, 0x5e, 0xb0, 0xd3, - 0x77, 0x3d, 0xe1, 0xc8, 0xe0, 0x64, 0x42, 0x50, 0xca, 0xb5, 0xd8, 0x37, 0x0f, 0x16, 0x3b, 0xa6, - 0x89, 0x9b, 0x31, 0x4f, 0x49, 0xd6, 0xa1, 0xc0, 0x7b, 0x2e, 0xef, 0x32, 0xbf, 0xc3, 0xcd, 0x7f, - 0xad, 0xc9, 0x55, 0x19, 0x77, 0x26, 0xa9, 0x61, 0xd9, 0x09, 0x8c, 0x7c, 0x19, 0x4e, 0xf6, 0x43, - 0x3a, 0x64, 0xc1, 0x80, 0x3b, 0xb4, 0x1f, 0x78, 0x5d, 0xc7, 0x15, 0x32, 0x3e, 0x5c, 0xc1, 0x02, - 0x9f, 0x9b, 0x7f, 0xbe, 0x82, 0xbb, 0xf3, 0x7a, 0xd6, 0xee, 0x7c, 0x8e, 0xfa, 0x2d, 0xe6, 0x77, - 0xee, 0x26, 0x9c, 0x46, 0xf5, 0xc5, 0xb3, 0xe5, 0xc5, 0x64, 0x44, 0x39, 0xe1, 0x8f, 0x45, 0x43, - 0x6c, 0xc9, 0x11, 0x52, 0x60, 0x4e, 0xde, 0x86, 0x13, 0xde, 0x20, 0x0c, 0xa9, 0x2f, 0x26, 0x0d, - 0xff, 0xee, 0xff, 0x65, 0x78, 0x53, 0x8f, 0xb0, 0x7f, 0xf4, 0x2e, 0x1c, 0x89, 0xad, 0xf7, 0xc2, - 0x80, 0xf3, 0x1e, 0xf3, 0xb7, 0xb9, 0xf9, 0x8b, 0xdb, 0x07, 0xfb, 0xe4, 0x66, 0x04, 0x1d, 0x5f, - 0xde, 0xda, 0x46, 0xfd, 0xb2, 0x65, 0x93, 0x48, 0x33, 0xc6, 0x71, 0xd2, 0x06, 0x12, 0xd9, 0x99, - 0x1a, 0xe8, 0x97, 0x1f, 0x6c, 0xa0, 0xaa, 0x96, 0x4c, 0x8d, 0xf3, 0x26, 0x90, 0x2f, 0x0d, 0xb8, - 0x60, 0x6d, 0xe6, 0xa1, 0x8d, 0x4e, 0x93, 0x09, 0x6e, 0xfe, 0xe0, 0xfe, 0x8a, 0x71, 0xbe, 0xd4, - 0xa8, 0xbc, 0x78, 0xb6, 0x5c, 0x4a, 0x89, 0x58, 0x76, 0x75, 0x04, 0xdc, 0x60, 0x82, 0x93, 0x0e, - 0x9c, 0x8e, 0xd7, 0x44, 0xf7, 0xd2, 0x96, 0xe3, 0x75, 0xa9, 0xb7, 0xdd, 0x0f, 0x98, 0x2f, 0xcc, - 0x1f, 0xde, 0xc7, 0x64, 0x63, 0x65, 0x4e, 0x3a, 0x86, 0xda, 0xb1, 0x6f, 0x7d, 0x2a, 0x12, 0x4a, - 0x3a, 0x09, 0x85, 0x53, 0xd1, 0x92, 0x4c, 0x1c, 0xe7, 0x47, 0xd3, 0x8f, 0x13, 0xf9, 0xd0, 0xa4, - 0x61, 0x9e, 0xc0, 0xd1, 0x36, 0xf3, 0xdd, 0x1e, 0x7b, 0x3a, 0x2a, 0xff, 0xe3, 0xe9, 0xe5, 0x8f, - 0xc4, 0x02, 0x49, 0xa3, 0xf5, 0x6d, 0x03, 0x72, 0xf2, 0x80, 0x22, 0x37, 0xa1, 0x12, 0x2f, 0xd8, - 0x90, 0x86, 0x9c, 0x05, 0xbe, 0x69, 0x4c, 0x5a, 0xef, 0xcb, 0x96, 0x5d, 0x8e, 0x90, 0x4f, 0x14, - 0x90, 0x5c, 0x87, 0x72, 0xb4, 0x08, 0x11, 0x77, 0x26, 0x83, 0xbb, 0xa4, 0x81, 0x11, 0xf5, 0x28, - 0xcc, 0x61, 0xc8, 0x98, 0xb3, 0x98, 0xdf, 0xd4, 0x1f, 0xeb, 0xaf, 0x06, 0x90, 0xfd, 0x61, 0x41, - 0x6e, 0x43, 0xc5, 0xed, 0x74, 0x42, 0xda, 0x49, 0x79, 0x85, 0x9a, 0xe4, 0x98, 0x67, 0x5d, 0xde, - 0xb8, 0x7e, 0xc5, 0xb2, 0xcb, 0x29, 0x30, 0x7a, 0xc5, 0x4d, 0xc8, 0xe1, 0x49, 0x33, 0x83, 0x8b, - 0xb6, 0x9a, 0xb5, 0x68, 0xa9, 0x21, 0xf1, 0xa4, 0x40, 0x12, 0x59, 0x85, 0x32, 0xf3, 0xbd, 0xde, - 0x40, 0x4e, 0xdb, 0x69, 0xd1, 0x9e, 0xbb, 0xa7, 0xe7, 0xbc, 0x14, 0x37, 0xdf, 0x93, 0xad, 0xe4, - 0x1c, 0x2c, 0xf5, 0xc3, 0xa0, 0x1f, 0x70, 0x1a, 0xea, 0x53, 0x24, 0x87, 0xb8, 0xc5, 0xa8, 0x15, - 0x13, 0xa8, 0xf5, 0x6f, 0x03, 0x8a, 0x69, 0xe3, 0xa2, 0xc9, 0x19, 0xaf, 0x32, 0xb9, 0x49, 0x2b, - 0x33, 0x73, 0x88, 0x95, 0xb9, 0x02, 0x25, 0x6f, 0xc0, 0x45, 0xd0, 0xda, 0x53, 0xdc, 0xd9, 0x6c, - 0x6e, 0x51, 0x03, 0x91, 0xb7, 0x0e, 0x05, 0xce, 0x3a, 0xbe, 0x2b, 0x06, 0x21, 0x45, 0x33, 0x4b, - 0xe3, 0xb9, 0x4b, 0x52, 0x12, 0x8c, 0xf5, 0x10, 0x20, 0xe5, 0xd6, 0xf1, 0xee, 0x1b, 0xa9, 0xdd, - 0x27, 0xe7, 0x20, 0x27, 0x8f, 0x10, 0x6d, 0xc0, 0x84, 0x5c, 0x88, 0xdd, 0xd6, 0x77, 0x66, 0xa1, - 0x3c, 0xb6, 0x1a, 0xe4, 0x16, 0x54, 0xd5, 0x72, 0x39, 0x49, 0x31, 0xa4, 0x5d, 0x64, 0x82, 0x4e, - 0xb9, 0x99, 0x54, 0x56, 0xf2, 0xf4, 0x21, 0x37, 0x60, 0x9e, 0x07, 0x83, 0xd0, 0xa3, 0xda, 0x45, - 0xa6, 0x89, 0x2b, 0xcd, 0x90, 0x5c, 0xe1, 0x86, 0x1d, 0x2a, 0x70, 0xf1, 0xa6, 0xe4, 0x2a, 0x06, - 0xb9, 0x03, 0x85, 0x38, 0xa1, 0xe2, 0x32, 0x4e, 0x93, 0x4e, 0xed, 0x84, 0x23, 0xab, 0x58, 0x35, - 0x0d, 0x75, 0x00, 0xc5, 0x55, 0xac, 0x6a, 0xc4, 0x33, 0x03, 0x2b, 0x0a, 0x85, 0xc1, 0x55, 0xc1, - 0x62, 0xb6, 0x64, 0x83, 0x6a, 0x43, 0xf3, 0x2d, 0x28, 0xa9, 0x09, 0x69, 0x95, 0xf7, 0xb5, 0x8a, - 0x6a, 0x8c, 0x55, 0x34, 0x06, 0x55, 0xfe, 0xa1, 0x55, 0x54, 0x9b, 0x54, 0xb1, 0xbe, 0x65, 0x40, - 0x35, 0xb5, 0x2f, 0x8f, 0x95, 0x89, 0x44, 0xd7, 0xd0, 0x46, 0xaa, 0x84, 0xde, 0x00, 0x48, 0x6d, - 0x53, 0xe6, 0x76, 0x17, 0xe2, 0x62, 0x95, 0xd4, 0xa1, 0xd8, 0x77, 0x31, 0xd1, 0x20, 0x65, 0x36, - 0x8b, 0x02, 0x0a, 0x85, 0xf3, 0x79, 0x1b, 0x4e, 0x8d, 0xb9, 0xc9, 0x5d, 0xbf, 0xb5, 0x19, 0x3b, - 0xf1, 0x07, 0x0b, 0xbc, 0x65, 0x28, 0xa6, 0x02, 0x07, 0x6d, 0xc8, 0xdb, 0x90, 0x84, 0x88, 0xf5, - 0x37, 0x03, 0x08, 0x06, 0x3c, 0x6d, 0xa5, 0xa3, 0xbd, 0x06, 0xaf, 0xa5, 0x78, 0xce, 0x86, 0xcc, - 0x14, 0x4c, 0x16, 0x82, 0x06, 0xd6, 0x81, 0x24, 0x51, 0xd8, 0x78, 0xa8, 0x7a, 0xc6, 0x29, 0xb5, - 0x98, 0x32, 0x33, 0x4e, 0xa9, 0x45, 0x94, 0xc8, 0xb4, 0xd9, 0x57, 0x31, 0xed, 0xd0, 0xb1, 0xfd, - 0xd5, 0x59, 0x28, 0xc4, 0x95, 0x2e, 0xb9, 0x00, 0xf3, 0xfd, 0x41, 0x73, 0x9b, 0xee, 0x4d, 0x8e, - 0xbf, 0xcb, 0xd7, 0x2c, 0x5b, 0x03, 0xc8, 0x03, 0x38, 0xf6, 0x16, 0x13, 0xdd, 0x56, 0xe8, 0xbe, - 0xe5, 0xf6, 0x1c, 0x2f, 0xa4, 0x2d, 0xea, 0x0b, 0xe6, 0xf6, 0x78, 0xb6, 0x4f, 0xbc, 0x96, 0x10, - 0x36, 0x13, 0x3c, 0x79, 0x03, 0xaa, 0xb4, 0xdd, 0xa6, 0xaa, 0xb4, 0xd5, 0xb5, 0xb4, 0x4e, 0xd3, - 0x95, 0xb8, 0xa3, 0xa1, 0xda, 0x89, 0x09, 0x0b, 0x58, 0x43, 0xd2, 0x16, 0x9a, 0x97, 0xb7, 0xa3, - 0xbf, 0xe4, 0x4d, 0x38, 0x85, 0xb5, 0xae, 0xca, 0xa6, 0xb4, 0xc7, 0x3a, 0xac, 0xc9, 0x7a, 0x4c, - 0xec, 0xe9, 0xc0, 0x98, 0x43, 0xc5, 0x13, 0x09, 0x66, 0x2b, 0x81, 0xa8, 0x30, 0xb9, 0x00, 0x95, - 0xb4, 0x02, 0xb2, 0xe6, 0x91, 0x55, 0x4e, 0xb1, 0x10, 0x7a, 0x1a, 0x80, 0xee, 0xb2, 0x28, 0xe6, - 0x54, 0xc8, 0x15, 0x64, 0x8b, 0xea, 0xbe, 0x08, 0x24, 0xb6, 0xb5, 0xd9, 0x8b, 0x02, 0x3c, 0x8f, - 0xb0, 0x6a, 0xba, 0x07, 0xe1, 0xd6, 0xaf, 0x0c, 0x28, 0xc4, 0x29, 0x42, 0x26, 0x58, 0x75, 0x7f, - 0xd0, 0x09, 0x16, 0xff, 0x8c, 0x47, 0xd1, 0xcc, 0x14, 0x51, 0x24, 0x1d, 0x5d, 0xdd, 0x47, 0xd2, - 0xc7, 0xb5, 0xba, 0x8e, 0xa8, 0x79, 0x9e, 0x84, 0x02, 0xf5, 0x5b, 0xba, 0x5b, 0x9d, 0x78, 0x79, - 0xea, 0xb7, 0x54, 0xe7, 0x1a, 0x14, 0xf0, 0x8e, 0x86, 0xe3, 0xcd, 0x65, 0x8d, 0x97, 0x97, 0x18, - 0x8c, 0xd9, 0x7f, 0x1a, 0x50, 0xdd, 0x77, 0xed, 0x9d, 0x98, 0x43, 0x5e, 0xc5, 0x96, 0x0d, 0x80, - 0xe4, 0xc6, 0x9b, 0x9d, 0x44, 0x0a, 0xf1, 0x55, 0x57, 0xce, 0xbf, 0x29, 0x03, 0x0f, 0x09, 0xb9, - 0xcc, 0xf9, 0x4b, 0x0c, 0xe2, 0x47, 0x62, 0x67, 0x6e, 0x8a, 0xd8, 0xf9, 0x8f, 0x11, 0x3d, 0x4b, - 0xa0, 0xc1, 0x1f, 0xa1, 0xa9, 0x37, 0x21, 0x27, 0xcd, 0xd0, 0xc7, 0xd0, 0xea, 0x14, 0x8f, 0x12, - 0x0d, 0x69, 0x35, 0x92, 0x0e, 0x6f, 0xf7, 0x7f, 0x73, 0x50, 0x1e, 0x93, 0x22, 0x57, 0x60, 0x51, - 0x5f, 0x6c, 0x43, 0x3a, 0xa4, 0x6e, 0x6f, 0x72, 0x02, 0x91, 0x42, 0xfa, 0x02, 0x6c, 0x23, 0x8c, - 0xdc, 0x4a, 0xbf, 0x26, 0xcc, 0x1c, 0xfa, 0x31, 0xe1, 0x22, 0xe4, 0x3b, 0xa1, 0xdb, 0x6e, 0x33, - 0xc1, 0xb2, 0x17, 0x2a, 0x86, 0x90, 0x2f, 0x00, 0x89, 0xcb, 0xbc, 0xe4, 0xc6, 0x9a, 0xc3, 0xbb, - 0xd0, 0xf9, 0xcc, 0xbb, 0x9e, 0x66, 0x3c, 0xd2, 0x04, 0xbb, 0xda, 0x1f, 0x6b, 0xe1, 0x52, 0x58, - 0xdd, 0x1f, 0x47, 0x84, 0xe7, 0x0e, 0x16, 0xbe, 0xab, 0x19, 0x89, 0xb0, 0x3b, 0xd6, 0xc2, 0xc9, - 0x27, 0xa1, 0x34, 0x72, 0x31, 0x9d, 0x47, 0xc9, 0xb3, 0x53, 0x9c, 0x0a, 0xf6, 0x08, 0x91, 0xdc, - 0x84, 0xbc, 0x7e, 0x26, 0xe1, 0xe6, 0x02, 0x8a, 0x2c, 0x67, 0x89, 0xe8, 0x47, 0x13, 0x3b, 0x26, - 0x90, 0xcf, 0x40, 0x79, 0x18, 0xf4, 0x06, 0xbe, 0x70, 0xc3, 0x3d, 0x47, 0xa6, 0x39, 0x6e, 0xe6, - 0x51, 0xe3, 0x5c, 0xe6, 0xeb, 0x49, 0x04, 0xdf, 0xda, 0x65, 0xc2, 0x5e, 0x1a, 0xa6, 0xff, 0xe2, - 0x1b, 0x92, 0x08, 0x5d, 0x9f, 0xb7, 0x69, 0xc8, 0xcd, 0xc2, 0xc1, 0x8f, 0x3f, 0x8f, 0x35, 0xd0, - 0x4e, 0x28, 0xd6, 0x7b, 0x06, 0x1c, 0xc5, 0x35, 0x92, 0x39, 0x34, 0x7d, 0x44, 0xbf, 0x01, 0xd5, - 0xf8, 0xb1, 0x66, 0xec, 0x78, 0xae, 0xc4, 0x1d, 0xd1, 0x49, 0x3b, 0x5e, 0x40, 0xcf, 0x4c, 0x59, - 0x40, 0x7f, 0xb8, 0x27, 0xf4, 0x6f, 0x0d, 0x28, 0xea, 0x1d, 0x41, 0x97, 0xff, 0x48, 0xce, 0xe8, - 0x63, 0x30, 0xef, 0xee, 0x04, 0x03, 0x5f, 0xe8, 0x43, 0x44, 0xff, 0x3b, 0xbc, 0x35, 0xbf, 0x36, - 0xa0, 0x32, 0x1e, 0x50, 0x13, 0x6e, 0x5f, 0xc6, 0x84, 0xdb, 0x17, 0xb9, 0x07, 0x79, 0xf5, 0xfa, - 0xea, 0xd4, 0x74, 0xaa, 0x38, 0xc4, 0xf3, 0xeb, 0x82, 0xa2, 0xd6, 0x52, 0x2a, 0x75, 0xbd, 0x83, - 0x87, 0x57, 0xa9, 0x5b, 0x3f, 0x31, 0xa0, 0x32, 0x1e, 0xbf, 0xe4, 0xb3, 0xb0, 0x98, 0x8a, 0x39, - 0xa7, 0xa6, 0xcb, 0xd3, 0xcc, 0x57, 0xa4, 0xfd, 0x35, 0xe6, 0x48, 0xd0, 0xd6, 0xc6, 0x05, 0xeb, - 0xda, 0xec, 0x57, 0x15, 0xac, 0x5b, 0x3e, 0x2c, 0x68, 0x5f, 0x22, 0xaf, 0xc3, 0x5c, 0x3f, 0x0c, - 0x82, 0x36, 0x86, 0x47, 0xa9, 0x71, 0xf4, 0xc5, 0xb3, 0xe5, 0x4a, 0xca, 0x17, 0x2e, 0xe1, 0x8b, - 0x9f, 0x82, 0x90, 0xab, 0x23, 0x1e, 0x7f, 0xf6, 0x25, 0x89, 0x23, 0xf1, 0x76, 0xeb, 0x2b, 0xb0, - 0x38, 0x92, 0x09, 0x32, 0x6e, 0x8f, 0xab, 0x50, 0x1e, 0x09, 0x5b, 0xba, 0x8b, 0x96, 0xe6, 0xec, - 0xa5, 0x74, 0xd0, 0xd2, 0xdd, 0x51, 0x7f, 0x9b, 0x9d, 0xc2, 0xdf, 0xde, 0x35, 0x20, 0x1f, 0x65, - 0x10, 0xe9, 0xc5, 0x9c, 0xfa, 0x2d, 0x1a, 0xea, 0xd1, 0xf5, 0x3f, 0x72, 0x0a, 0x0a, 0x21, 0xf5, - 0x58, 0x9f, 0x51, 0x5f, 0xe8, 0x81, 0x93, 0x86, 0x4c, 0xdf, 0xaf, 0xc0, 0x6c, 0x9b, 0x52, 0x5d, - 0x36, 0xc9, 0x9f, 0x71, 0x01, 0x30, 0x97, 0x2a, 0x00, 0x92, 0x70, 0x9d, 0x7f, 0x59, 0xb8, 0x8e, - 0x18, 0xb7, 0x30, 0x85, 0x71, 0xdf, 0x35, 0x20, 0x1f, 0x1d, 0x8a, 0xe4, 0x32, 0x94, 0xa2, 0x77, - 0xf0, 0x83, 0x6f, 0xd0, 0x45, 0x0d, 0xc3, 0xca, 0xe1, 0x2c, 0x2c, 0x46, 0x2c, 0x0f, 0x6d, 0x54, - 0xe6, 0x47, 0x52, 0x9b, 0x68, 0x69, 0x7c, 0xe7, 0xeb, 0xba, 0xbc, 0x7b, 0x40, 0x41, 0x82, 0xa0, - 0x07, 0x2e, 0xef, 0x5a, 0x3d, 0x28, 0x6d, 0xa5, 0x9e, 0xea, 0x47, 0x8f, 0x79, 0xe3, 0xd0, 0xc7, - 0xfc, 0x69, 0x80, 0x61, 0x20, 0xe8, 0xc8, 0x14, 0x0b, 0xb2, 0x05, 0xe7, 0x67, 0x7d, 0xcd, 0x80, - 0xf2, 0x83, 0xf8, 0x33, 0x45, 0xc3, 0x15, 0x5e, 0x97, 0x5c, 0x1d, 0xfd, 0xb6, 0x62, 0x4c, 0xfd, - 0x69, 0xe5, 0xea, 0xe8, 0xa7, 0x95, 0x99, 0x69, 0xbf, 0xac, 0x58, 0x7d, 0xa8, 0x6c, 0x8e, 0xbd, - 0x8f, 0x93, 0x8b, 0xb0, 0xa0, 0x36, 0x37, 0x9a, 0xc1, 0xbe, 0x6f, 0x2c, 0xd2, 0x01, 0x22, 0x8c, - 0xbc, 0x37, 0x44, 0x6f, 0xf3, 0xa9, 0x2f, 0x15, 0xea, 0xae, 0x58, 0xd5, 0x3d, 0xf1, 0x6d, 0x8d, - 0x37, 0x4a, 0xbf, 0x79, 0x7e, 0xc6, 0xf8, 0xdd, 0xf3, 0x33, 0xc6, 0x5f, 0x9e, 0x9f, 0x31, 0x9a, - 0xf3, 0xf8, 0xb1, 0xec, 0xd2, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x64, 0x8c, 0xb5, 0x0f, 0xb3, - 0x1b, 0x00, 0x00, + // 2198 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0x4b, 0x8c, 0x1b, 0x49, + 0x19, 0x56, 0x7b, 0x3c, 0x33, 0xf6, 0x6f, 0xcf, 0xd8, 0xae, 0x64, 0xb3, 0x4d, 0x5e, 0x33, 0xdb, + 0x51, 0x34, 0xc9, 0x6e, 0x32, 0x1e, 0x3b, 0xa3, 0x3c, 0x95, 0x0d, 0xf1, 0x64, 0x42, 0x82, 0xc4, + 0xab, 0x13, 0x05, 0x89, 0x8b, 0x55, 0x6e, 0x97, 0xed, 0x62, 0xda, 0xdd, 0x56, 0x57, 0xd9, 0x3b, + 0x13, 0xad, 0x40, 0x82, 0x0b, 0xcb, 0x4b, 0x42, 0x42, 0x42, 0x1c, 0xe1, 0xc6, 0xe3, 0xc8, 0x05, + 0x90, 0x90, 0x00, 0x21, 0x21, 0x71, 0xe1, 0x75, 0x61, 0x0f, 0x23, 0x94, 0x13, 0x0f, 0x09, 0x89, + 0x91, 0xb8, 0x70, 0x01, 0xd5, 0xa3, 0x1f, 0x76, 0xdc, 0x13, 0x4f, 0x76, 0x61, 0x6f, 0xee, 0xaa, + 0xef, 0xfb, 0xaa, 0xfe, 0xbf, 0xfe, 0xbf, 0xea, 0xaf, 0x32, 0xac, 0x0c, 0x02, 0x9f, 0xfb, 0xd5, + 0x16, 0xc1, 0x8e, 0xef, 0x55, 0x07, 0xf5, 0x41, 0x75, 0x54, 0xab, 0xf2, 0xbd, 0x01, 0x61, 0xeb, + 0xb2, 0x07, 0x9d, 0x20, 0xbc, 0x47, 0x02, 0x32, 0xec, 0xaf, 0x2b, 0xcc, 0xfa, 0xa0, 0x3e, 0x58, + 0x1f, 0xd5, 0x4e, 0x9e, 0x52, 0x44, 0xc7, 0xef, 0xf7, 0x7d, 0xaf, 0xda, 0x27, 0x8c, 0xe1, 0x6e, + 0x48, 0x3a, 0x79, 0xb9, 0x4b, 0x79, 0x6f, 0xd8, 0x5a, 0x77, 0xfc, 0x7e, 0xb5, 0xeb, 0x77, 0xfd, + 0xaa, 0x6c, 0x6e, 0x0d, 0x3b, 0xf2, 0x4b, 0x31, 0xc5, 0x2f, 0x05, 0xb7, 0x7e, 0xb6, 0x0c, 0x85, + 0x86, 0x54, 0x7f, 0xc4, 0x31, 0x27, 0xc8, 0x82, 0x62, 0x97, 0x78, 0x84, 0x51, 0xd6, 0xe4, 0xb4, + 0x4f, 0xcc, 0xbf, 0x2e, 0xae, 0x1a, 0x17, 0xb2, 0x76, 0x41, 0x37, 0x3e, 0xa6, 0x7d, 0x82, 0x8e, + 0x41, 0x96, 0xb9, 0x3e, 0x37, 0xff, 0xa6, 0xfa, 0xe4, 0x07, 0xaa, 0x41, 0xb6, 0xe3, 0x07, 0x3b, + 0xe6, 0xdf, 0x45, 0x63, 0xa1, 0x7e, 0x7a, 0x7d, 0xfa, 0xe4, 0xd7, 0xef, 0xfb, 0xc1, 0x8e, 0x2d, + 0xa1, 0xe8, 0x33, 0x70, 0xcc, 0xc5, 0x9c, 0x30, 0xde, 0x6c, 0xb9, 0xbe, 0xb3, 0xd3, 0xec, 0x11, + 0xdc, 0x26, 0x81, 0xf9, 0xbb, 0x92, 0x54, 0xb8, 0x98, 0xa6, 0xa0, 0xa6, 0xdb, 0x10, 0x94, 0x07, + 0x92, 0x61, 0x57, 0x94, 0x4c, 0xa2, 0x09, 0x5d, 0x87, 0x82, 0x12, 0x0d, 0x7c, 0x9f, 0x33, 0xf3, + 0xf7, 0xa5, 0xd5, 0xb9, 0x0b, 0xc5, 0xc6, 0x89, 0x83, 0xfd, 0x15, 0xc4, 0xd8, 0xd3, 0x9b, 0x16, + 0xa3, 0x4f, 0xc9, 0xed, 0xeb, 0xb5, 0x1b, 0xf5, 0x4b, 0x57, 0xea, 0x96, 0x0d, 0x12, 0x6b, 0x0b, + 0xa8, 0x60, 0x32, 0xe1, 0x0a, 0xcd, 0xfc, 0xc3, 0x0b, 0x98, 0x12, 0xab, 0x98, 0x77, 0xa0, 0xdc, + 0xa3, 0x8c, 0xfb, 0x01, 0x75, 0xb0, 0xab, 0xe9, 0x7f, 0x54, 0xf4, 0x63, 0x07, 0xfb, 0x2b, 0xa5, + 0x98, 0x7e, 0x47, 0x72, 0x4b, 0x31, 0x5a, 0x09, 0xbc, 0x09, 0x79, 0xc2, 0x7b, 0xb5, 0x66, 0x1b, + 0x73, 0x6c, 0xfe, 0xf8, 0x55, 0xe9, 0x86, 0xd5, 0x34, 0x37, 0x6c, 0xf3, 0x5e, 0xed, 0x1e, 0xe6, + 0xd8, 0xce, 0x11, 0xfd, 0x0b, 0x3d, 0x84, 0x52, 0xc4, 0x6f, 0x8e, 0x7c, 0x4e, 0x98, 0xf9, 0x93, + 0x57, 0x57, 0xe7, 0x66, 0x52, 0x59, 0x0a, 0x55, 0x9e, 0x08, 0x1e, 0xba, 0x0c, 0x48, 0x49, 0x91, + 0x81, 0xcf, 0x28, 0x6f, 0x52, 0xaf, 0x4d, 0x76, 0xcd, 0x9f, 0xbe, 0x2a, 0x57, 0xbc, 0x2c, 0xb1, + 0xaa, 0xe7, 0xa1, 0xe8, 0x40, 0x0d, 0x80, 0x11, 0x76, 0x69, 0x1b, 0x73, 0x3f, 0x60, 0xe6, 0x77, + 0x56, 0xe4, 0xa0, 0xaf, 0xa5, 0x0d, 0xfa, 0x24, 0x84, 0xda, 0x09, 0x16, 0x3a, 0x05, 0xb9, 0x16, + 0x76, 0xb1, 0xe7, 0x10, 0x66, 0x7e, 0x57, 0x28, 0x64, 0xed, 0xa8, 0x01, 0xad, 0xca, 0x55, 0x09, + 0x78, 0x93, 0xf5, 0x70, 0xd0, 0x36, 0xdf, 0x59, 0x93, 0x13, 0x01, 0xd9, 0xf6, 0x48, 0x34, 0xa1, + 0x9b, 0x50, 0x0c, 0xb0, 0xd7, 0xc6, 0x7e, 0xb3, 0x4f, 0x77, 0x09, 0x33, 0xbf, 0xbc, 0x76, 0xe8, + 0xc2, 0x15, 0x14, 0xf8, 0x63, 0x02, 0x8b, 0xb6, 0x01, 0x61, 0x87, 0xd3, 0x11, 0x51, 0x76, 0xea, + 0xb5, 0xfb, 0xca, 0xe1, 0x0a, 0x65, 0x45, 0x91, 0x0e, 0x50, 0xeb, 0xf7, 0x29, 0x30, 0x1d, 0xbf, + 0x3f, 0xc0, 0x0e, 0x6f, 0x8a, 0xe4, 0xa4, 0x9c, 0x13, 0xc2, 0xb4, 0xd8, 0x57, 0x0f, 0x17, 0x3b, + 0xa1, 0x89, 0x5b, 0x11, 0x4f, 0x49, 0xd6, 0x21, 0xcf, 0x5c, 0xcc, 0x7a, 0xd4, 0xeb, 0x32, 0xf3, + 0x9f, 0xeb, 0xc2, 0x2b, 0x93, 0xc1, 0x24, 0x34, 0x2c, 0x3b, 0x86, 0xa1, 0xcf, 0xc1, 0xa9, 0x41, + 0x40, 0x46, 0xd4, 0x1f, 0xb2, 0x26, 0x19, 0xf8, 0x4e, 0xaf, 0x89, 0xb9, 0xc8, 0x0f, 0xcc, 0xa9, + 0xef, 0x31, 0xf3, 0x4f, 0x57, 0xe5, 0xea, 0xbc, 0x9e, 0xb6, 0x3a, 0x9f, 0x24, 0x5e, 0x9b, 0x7a, + 0xdd, 0xbb, 0x31, 0xa7, 0x51, 0x39, 0xd8, 0x5f, 0x59, 0x8a, 0x47, 0x14, 0x13, 0xfe, 0x50, 0x38, + 0xc4, 0xb6, 0x18, 0x21, 0x01, 0x66, 0xe8, 0x6d, 0x38, 0xe9, 0x0c, 0x83, 0x80, 0x78, 0x7c, 0xda, + 0xf0, 0xef, 0xbe, 0x2f, 0xc3, 0x9b, 0x7a, 0x84, 0xe7, 0x47, 0xef, 0xc1, 0xb1, 0xc8, 0x7a, 0x27, + 0xf0, 0x19, 0x73, 0xa9, 0xb7, 0xc3, 0xcc, 0x9f, 0xbf, 0x79, 0x78, 0x4c, 0x6e, 0x85, 0xd0, 0x49, + 0xf7, 0xd6, 0x36, 0xea, 0x9b, 0x96, 0x8d, 0x42, 0xcd, 0x08, 0xc7, 0x50, 0x07, 0x50, 0x68, 0x67, + 0x62, 0xa0, 0x5f, 0xbc, 0xb7, 0x81, 0x2a, 0x5a, 0x32, 0x31, 0x0e, 0x03, 0xf4, 0xd9, 0x21, 0xe3, + 0xb4, 0x43, 0x1d, 0x69, 0x63, 0xb3, 0x45, 0x39, 0x33, 0xbf, 0x77, 0x7f, 0xd5, 0xb8, 0x50, 0x6c, + 0x6c, 0x1d, 0xec, 0xaf, 0x14, 0x13, 0x22, 0xd6, 0xbf, 0xf7, 0x57, 0xaa, 0x89, 0x33, 0x60, 0x10, + 0xec, 0xb1, 0x3e, 0xe6, 0xd4, 0x71, 0x71, 0x8b, 0x55, 0xbb, 0xfe, 0xe5, 0x16, 0xe5, 0x1d, 0x4a, + 0xdc, 0xf6, 0x7a, 0x83, 0xf2, 0x11, 0x71, 0xb8, 0x1f, 0x6c, 0xda, 0x95, 0x31, 0xfd, 0x06, 0xe5, + 0x0c, 0x75, 0xe1, 0x4c, 0xe4, 0x46, 0xdd, 0x4b, 0xda, 0x4d, 0xa7, 0x47, 0x9c, 0x9d, 0x81, 0x4f, + 0x3d, 0x6e, 0x7e, 0xff, 0xbe, 0xdc, 0x9f, 0xac, 0x54, 0x3b, 0x23, 0xa8, 0x1d, 0x85, 0xe3, 0x47, + 0x43, 0xa1, 0xb8, 0x13, 0x11, 0x38, 0x1d, 0x7a, 0x71, 0xea, 0x38, 0x3f, 0x98, 0x7d, 0x9c, 0x30, + 0xec, 0xa6, 0x0d, 0xf3, 0x04, 0x8e, 0x77, 0xa8, 0x87, 0x5d, 0xfa, 0x74, 0x5c, 0xfe, 0x87, 0xb3, + 0xcb, 0x1f, 0x8b, 0x04, 0xe2, 0x46, 0xeb, 0x9b, 0x06, 0x64, 0xc5, 0x99, 0x86, 0x6e, 0x41, 0x39, + 0x72, 0xd8, 0x88, 0x04, 0x8c, 0xfa, 0x9e, 0x69, 0xc8, 0x25, 0x2a, 0x8f, 0x2f, 0xd1, 0xa6, 0x65, + 0x97, 0x42, 0xe4, 0x13, 0x05, 0x44, 0x37, 0xa0, 0x14, 0x3a, 0x21, 0xe4, 0x66, 0x52, 0xb8, 0xcb, + 0x1a, 0x18, 0x52, 0x8f, 0xc3, 0xbc, 0xcc, 0x32, 0x73, 0x4e, 0x6e, 0x89, 0xea, 0xc3, 0xfa, 0x46, + 0x06, 0xd0, 0xf3, 0x99, 0x84, 0x3c, 0x28, 0xe3, 0x6e, 0x37, 0x20, 0xdd, 0x44, 0x20, 0x19, 0x51, + 0x1c, 0x25, 0x82, 0x71, 0x73, 0xe3, 0xc6, 0x55, 0x11, 0x4a, 0x97, 0x66, 0x0d, 0x25, 0x97, 0x32, + 0x6e, 0x97, 0x12, 0xe2, 0x32, 0x8a, 0x6e, 0x41, 0x56, 0x1e, 0x66, 0x19, 0xe9, 0xe4, 0xb5, 0x34, + 0x27, 0x27, 0xa6, 0x28, 0x0f, 0x23, 0x49, 0x42, 0x6b, 0x50, 0xa2, 0x9e, 0xe3, 0x0e, 0x85, 0x99, + 0xcd, 0x36, 0x71, 0xf1, 0x9e, 0xb6, 0x71, 0x39, 0x6a, 0xbe, 0x27, 0x5a, 0xd1, 0x79, 0x58, 0x1e, + 0x04, 0xfe, 0xc0, 0x67, 0x24, 0xd0, 0x07, 0x55, 0x56, 0xe2, 0x96, 0xc2, 0x56, 0xb9, 0x47, 0x5b, + 0x5f, 0xcf, 0x40, 0x21, 0xe9, 0x8c, 0x70, 0x72, 0xc6, 0xcb, 0x4c, 0x6e, 0x9a, 0x27, 0x33, 0xff, + 0x43, 0x4f, 0xbe, 0x06, 0x45, 0x67, 0xc8, 0xb8, 0xdf, 0xde, 0x53, 0x63, 0x09, 0x4f, 0x14, 0xed, + 0x82, 0x6e, 0x93, 0x90, 0x2a, 0xe4, 0x19, 0xed, 0x7a, 0x98, 0x0f, 0x03, 0x22, 0x3d, 0x50, 0x9c, + 0xdc, 0x39, 0x6f, 0x5c, 0x15, 0x07, 0x45, 0x88, 0xb1, 0x1e, 0x02, 0x24, 0x32, 0x24, 0x0a, 0x24, + 0x23, 0x11, 0x48, 0xe8, 0x3c, 0x64, 0xc5, 0x01, 0xa6, 0x6d, 0x9b, 0xb2, 0x13, 0xcb, 0x6e, 0xeb, + 0x9d, 0x0c, 0x94, 0x26, 0x1c, 0x85, 0x6e, 0x43, 0x45, 0x79, 0xb2, 0x19, 0x97, 0x62, 0x3a, 0xda, + 0xa6, 0xe8, 0x94, 0x5a, 0x71, 0x5d, 0x27, 0xce, 0x3e, 0x74, 0x13, 0x16, 0x98, 0x3f, 0x0c, 0x1c, + 0xa2, 0xa3, 0x67, 0x96, 0x14, 0xd5, 0x0c, 0xc1, 0xe5, 0x38, 0xe8, 0x12, 0x2e, 0xfd, 0x34, 0x23, + 0x57, 0x31, 0xd0, 0x1d, 0xc8, 0x47, 0xdb, 0xb9, 0x74, 0xe3, 0x2c, 0x9b, 0xb9, 0x1d, 0x73, 0xac, + 0xaf, 0x19, 0x50, 0x49, 0xf8, 0xe2, 0xb1, 0x92, 0x45, 0xba, 0x6a, 0x36, 0x12, 0x45, 0xf3, 0x06, + 0x40, 0xc2, 0x35, 0xa9, 0x2e, 0xce, 0x47, 0xe5, 0x29, 0xaa, 0x43, 0x61, 0x80, 0xe5, 0x3e, 0x21, + 0x29, 0x73, 0x69, 0x14, 0x50, 0x28, 0xc1, 0xb1, 0xde, 0x86, 0xd3, 0x13, 0x4b, 0x73, 0xd7, 0x6b, + 0x6f, 0x45, 0x81, 0xf3, 0xde, 0xf2, 0x60, 0x05, 0x0a, 0x89, 0xb8, 0x94, 0x36, 0xe4, 0x6c, 0x88, + 0xc3, 0xd2, 0xfa, 0x8b, 0x01, 0x48, 0xe6, 0x1f, 0x69, 0x27, 0x93, 0xaf, 0x06, 0xaf, 0x24, 0x78, + 0xcd, 0x0d, 0x91, 0xb8, 0x54, 0x94, 0x7e, 0x86, 0xac, 0xfc, 0x50, 0xac, 0xb0, 0xf1, 0x50, 0xf5, + 0x4c, 0x52, 0x6a, 0x11, 0x25, 0x33, 0x49, 0xa9, 0x85, 0x94, 0xd0, 0xb4, 0xb9, 0x97, 0x31, 0xed, + 0xc8, 0xf9, 0xf4, 0x85, 0x39, 0xc8, 0x47, 0xb5, 0x2d, 0xba, 0x08, 0x0b, 0x83, 0x61, 0x6b, 0x87, + 0xec, 0x4d, 0x8f, 0xf9, 0xcd, 0xeb, 0x96, 0xad, 0x01, 0xe8, 0x01, 0x9c, 0x78, 0x8b, 0xf2, 0x5e, + 0x3b, 0xc0, 0x6f, 0x61, 0xb7, 0xe9, 0x04, 0xa4, 0x4d, 0x3c, 0x4e, 0xb1, 0xcb, 0xd2, 0x63, 0xe2, + 0x95, 0x98, 0xb0, 0x15, 0xe3, 0xd1, 0x1b, 0x50, 0x21, 0x9d, 0x0e, 0x51, 0xc5, 0xac, 0xae, 0x9e, + 0xf5, 0xae, 0x59, 0x8e, 0x3a, 0x1a, 0xaa, 0x1d, 0x99, 0xb0, 0x28, 0xab, 0x46, 0xd2, 0x96, 0xe6, + 0xe5, 0xec, 0xf0, 0x13, 0x7d, 0x18, 0x4e, 0xcb, 0xea, 0x56, 0x6d, 0x6e, 0xc4, 0xa5, 0x5d, 0xda, + 0xa2, 0x2e, 0xe5, 0x7b, 0xaa, 0xa2, 0x33, 0xe7, 0xa5, 0xe2, 0xc9, 0x18, 0xb3, 0x1d, 0x43, 0x64, + 0x49, 0x86, 0x2e, 0x42, 0x39, 0xa9, 0x20, 0x59, 0x0b, 0x92, 0x55, 0x4a, 0xb0, 0x24, 0xf4, 0x0c, + 0x00, 0xd9, 0xa5, 0xba, 0x58, 0x34, 0xd5, 0xa5, 0x32, 0x2f, 0x5a, 0x54, 0xf7, 0x65, 0x40, 0x91, + 0xad, 0x2d, 0x97, 0x68, 0x58, 0x4e, 0xc2, 0x2a, 0xc9, 0x1e, 0x09, 0xb7, 0x7e, 0x69, 0x40, 0x3e, + 0x4a, 0x4b, 0xb1, 0xa9, 0xa9, 0x1b, 0x83, 0xde, 0xd4, 0xe4, 0xc7, 0x64, 0x16, 0x65, 0x66, 0xc8, + 0x22, 0x11, 0xe8, 0xea, 0x06, 0x92, 0x3c, 0x6d, 0xd5, 0x05, 0x44, 0xcd, 0xf3, 0x14, 0xe4, 0x89, + 0xd7, 0xd6, 0xdd, 0xea, 0x00, 0xca, 0x11, 0xaf, 0xad, 0x3a, 0xd7, 0x21, 0x2f, 0x6f, 0x65, 0x72, + 0xbc, 0xf9, 0xb4, 0xf1, 0x72, 0x02, 0x23, 0x73, 0xf6, 0x1f, 0x06, 0x54, 0x9e, 0xbb, 0xe8, 0x4e, + 0xdd, 0x43, 0x5e, 0xc6, 0x96, 0x0d, 0x80, 0xf8, 0x8e, 0x9b, 0xbe, 0x89, 0xe4, 0xa3, 0xcb, 0xad, + 0x98, 0x7f, 0x4b, 0x24, 0x9e, 0x24, 0x64, 0x53, 0xe7, 0x2f, 0x30, 0x12, 0x3f, 0x96, 0x3b, 0xf3, + 0x33, 0xe4, 0xce, 0xbf, 0x8c, 0xf0, 0x21, 0x42, 0x1a, 0xfc, 0x01, 0x9a, 0x7a, 0x0b, 0xb2, 0xc2, + 0x0c, 0xbd, 0xf5, 0xaf, 0xcd, 0xf0, 0x0c, 0xd1, 0x10, 0x56, 0x4b, 0xd2, 0xd1, 0xed, 0xfe, 0x4f, + 0x16, 0x4a, 0x13, 0x52, 0xe8, 0x2a, 0x2c, 0xe9, 0xab, 0x6c, 0x40, 0x46, 0x04, 0xbb, 0xd3, 0x37, + 0x10, 0x21, 0xa4, 0xaf, 0xbc, 0xb6, 0x84, 0xa1, 0xdb, 0xc9, 0xf7, 0x83, 0xcc, 0x91, 0x9f, 0x0f, + 0x2e, 0x43, 0xae, 0x1b, 0xe0, 0x4e, 0x87, 0x72, 0x9a, 0xee, 0xa8, 0x08, 0x82, 0x3e, 0x0d, 0x28, + 0xaa, 0xba, 0xe2, 0x3b, 0x6a, 0x56, 0xde, 0x7e, 0x2e, 0xa4, 0xde, 0xee, 0x34, 0xe3, 0x91, 0x26, + 0xd8, 0x95, 0xc1, 0x44, 0x0b, 0x13, 0xc2, 0xea, 0xc6, 0x38, 0x26, 0x3c, 0x7f, 0xb8, 0xf0, 0x5d, + 0xcd, 0x88, 0x85, 0xf1, 0x44, 0x0b, 0x43, 0x1f, 0x81, 0xe2, 0xd8, 0x55, 0x74, 0x41, 0x4a, 0x9e, + 0x9b, 0xe1, 0x54, 0xb0, 0xc7, 0x88, 0xe8, 0x16, 0xe4, 0xf4, 0xc3, 0x08, 0x33, 0x17, 0xa5, 0xc8, + 0x4a, 0x9a, 0x88, 0x7e, 0x26, 0xb1, 0x23, 0x02, 0xfa, 0x38, 0x94, 0x46, 0xbe, 0x3b, 0xf4, 0x38, + 0x0e, 0xf6, 0x9a, 0x62, 0x9b, 0x63, 0x66, 0x4e, 0x6a, 0x9c, 0x4f, 0x7d, 0x2f, 0x09, 0xe1, 0xdb, + 0xbb, 0x94, 0xdb, 0xcb, 0xa3, 0xe4, 0xa7, 0x7c, 0x35, 0xe2, 0x01, 0xf6, 0x58, 0x87, 0x04, 0xcc, + 0xcc, 0x1f, 0xfe, 0xdc, 0xf3, 0x58, 0x03, 0xed, 0x98, 0x62, 0x7d, 0x3b, 0x03, 0xc7, 0xa5, 0x8f, + 0xc4, 0x1e, 0x9a, 0x3c, 0xa2, 0xdf, 0x80, 0x4a, 0xf4, 0x3c, 0x33, 0x71, 0x3c, 0x97, 0xa3, 0x8e, + 0xf0, 0xa4, 0xed, 0x4c, 0xd4, 0xa7, 0xef, 0x63, 0x2d, 0x3c, 0x56, 0xe4, 0xfe, 0x7f, 0x4f, 0xf4, + 0xdf, 0x18, 0x50, 0xd0, 0x2b, 0x28, 0x53, 0xe4, 0x03, 0x39, 0xd3, 0x4f, 0xc0, 0x02, 0xee, 0xfb, + 0x43, 0x8f, 0xeb, 0x43, 0x47, 0x7f, 0x1d, 0xdd, 0x9a, 0x5f, 0x19, 0x50, 0x9e, 0x4c, 0xc0, 0x29, + 0x97, 0x27, 0x63, 0xca, 0xe5, 0x09, 0xdd, 0x83, 0x9c, 0x7a, 0x9f, 0x6d, 0xd6, 0xf4, 0xd6, 0x72, + 0x84, 0x07, 0xda, 0x45, 0x45, 0xad, 0x25, 0x54, 0xea, 0x7a, 0x05, 0x8f, 0xae, 0x52, 0xb7, 0x7e, + 0x64, 0x40, 0x79, 0x32, 0xdf, 0xd1, 0x27, 0x60, 0x29, 0x91, 0xa3, 0xcd, 0x9a, 0x2e, 0x67, 0x53, + 0xdf, 0x99, 0x9e, 0xaf, 0x49, 0xc7, 0x92, 0xbc, 0x36, 0x29, 0x58, 0xd7, 0x66, 0xbf, 0xac, 0x60, + 0xdd, 0xf2, 0x60, 0x51, 0xc7, 0x12, 0x7a, 0x1d, 0xe6, 0x07, 0x81, 0xef, 0x77, 0x64, 0x3a, 0x15, + 0x1b, 0xc7, 0x0f, 0xf6, 0x57, 0xca, 0x89, 0x58, 0xb8, 0x22, 0xdf, 0x04, 0x15, 0x04, 0x5d, 0x1b, + 0x8b, 0xf8, 0x73, 0x2f, 0xd8, 0x68, 0xe2, 0x68, 0xb7, 0x3e, 0x0f, 0x4b, 0x63, 0x3b, 0x47, 0xca, + 0x0d, 0x6f, 0x0d, 0x4a, 0x63, 0x69, 0x4e, 0x76, 0xa5, 0xa5, 0x59, 0x7b, 0x39, 0x99, 0xe4, 0x64, + 0x77, 0x3c, 0xde, 0xe6, 0x66, 0x88, 0xb7, 0x77, 0x0d, 0xc8, 0x85, 0x3b, 0x8e, 0x88, 0x62, 0x46, + 0xbc, 0x36, 0x09, 0xf4, 0xe8, 0xfa, 0x0b, 0x9d, 0x86, 0x7c, 0x40, 0x1c, 0x3a, 0xa0, 0xc4, 0xe3, + 0x7a, 0xe0, 0xb8, 0x21, 0x35, 0xf6, 0xcb, 0x30, 0xd7, 0x21, 0x44, 0x97, 0x59, 0xe2, 0x67, 0x54, + 0x30, 0xcc, 0x27, 0x0a, 0x86, 0x38, 0x5d, 0x17, 0x5e, 0x94, 0xae, 0x63, 0xc6, 0x2d, 0xce, 0x60, + 0xdc, 0xb7, 0x0c, 0xc8, 0x85, 0x87, 0x28, 0xda, 0x84, 0x62, 0xf8, 0x52, 0x7e, 0xf8, 0x2d, 0xb7, + 0xa0, 0x61, 0xb2, 0xd2, 0x38, 0x07, 0x4b, 0x21, 0xcb, 0x91, 0x36, 0x2a, 0xf3, 0x43, 0xa9, 0x2d, + 0x69, 0x69, 0x74, 0x47, 0xec, 0x61, 0xd6, 0x3b, 0xa4, 0x80, 0x91, 0xa0, 0x07, 0x98, 0xf5, 0x2c, + 0x17, 0x8a, 0xdb, 0x89, 0xc7, 0xfc, 0xf1, 0xb2, 0xc0, 0x38, 0x72, 0x59, 0x70, 0x06, 0x60, 0xe4, + 0x73, 0x32, 0x36, 0xc5, 0xbc, 0x68, 0x91, 0xf3, 0xb3, 0xbe, 0x68, 0x40, 0xe9, 0x41, 0xf4, 0x47, + 0x46, 0x03, 0x73, 0xa7, 0x87, 0xae, 0x8d, 0xff, 0xfb, 0x62, 0xcc, 0xfc, 0xe7, 0xcb, 0xb5, 0xf1, + 0x3f, 0x5f, 0x32, 0xb3, 0xfe, 0xf7, 0x62, 0x7d, 0xc9, 0x80, 0xf2, 0xd6, 0xc4, 0x13, 0x3a, 0xda, + 0x80, 0x45, 0xb5, 0xba, 0x29, 0x53, 0x10, 0xc7, 0xd1, 0x25, 0x11, 0x04, 0x21, 0x0c, 0x35, 0x00, + 0x85, 0x2f, 0xf8, 0x89, 0xff, 0x33, 0x32, 0xd3, 0x9e, 0xdd, 0xe5, 0x59, 0x66, 0x57, 0x34, 0x3c, + 0xba, 0xf6, 0xb1, 0x46, 0xf1, 0xd7, 0xcf, 0xce, 0x1a, 0xbf, 0x7d, 0x76, 0xd6, 0xf8, 0xf3, 0xb3, + 0xb3, 0x46, 0x6b, 0x41, 0xfe, 0xcf, 0x76, 0xe5, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf6, 0x82, + 0x3a, 0x83, 0xee, 0x1b, 0x00, 0x00, } func (m *BeaconState) Marshal() (dAtA []byte, err error) { @@ -2702,36 +2672,6 @@ func (m *AttestationData) MarshalTo(dAtA []byte) (int, error) { } i += n15 } - if m.SourceEpoch != 0 { - dAtA[i] = 0xc8 - i++ - dAtA[i] = 0x3e - i++ - i = encodeVarintTypes(dAtA, i, uint64(m.SourceEpoch)) - } - if len(m.SourceRoot) > 0 { - dAtA[i] = 0xd2 - i++ - dAtA[i] = 0x3e - i++ - i = encodeVarintTypes(dAtA, i, uint64(len(m.SourceRoot))) - i += copy(dAtA[i:], m.SourceRoot) - } - if m.TargetEpoch != 0 { - dAtA[i] = 0xd8 - i++ - dAtA[i] = 0x3e - i++ - i = encodeVarintTypes(dAtA, i, uint64(m.TargetEpoch)) - } - if len(m.TargetRoot) > 0 { - dAtA[i] = 0xe2 - i++ - dAtA[i] = 0x3e - i++ - i = encodeVarintTypes(dAtA, i, uint64(len(m.TargetRoot))) - i += copy(dAtA[i:], m.TargetRoot) - } if m.XXX_unrecognized != nil { i += copy(dAtA[i:], m.XXX_unrecognized) } @@ -3970,20 +3910,6 @@ func (m *AttestationData) Size() (n int) { l = m.Crosslink.Size() n += 1 + l + sovTypes(uint64(l)) } - if m.SourceEpoch != 0 { - n += 2 + sovTypes(uint64(m.SourceEpoch)) - } - l = len(m.SourceRoot) - if l > 0 { - n += 2 + l + sovTypes(uint64(l)) - } - if m.TargetEpoch != 0 { - n += 2 + sovTypes(uint64(m.TargetEpoch)) - } - l = len(m.TargetRoot) - if l > 0 { - n += 2 + l + sovTypes(uint64(l)) - } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -6240,112 +6166,6 @@ func (m *AttestationData) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 1001: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field SourceEpoch", wireType) - } - m.SourceEpoch = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.SourceEpoch |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 1002: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SourceRoot", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.SourceRoot = append(m.SourceRoot[:0], dAtA[iNdEx:postIndex]...) - if m.SourceRoot == nil { - m.SourceRoot = []byte{} - } - iNdEx = postIndex - case 1003: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field TargetEpoch", wireType) - } - m.TargetEpoch = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.TargetEpoch |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 1004: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TargetRoot", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthTypes - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.TargetRoot = append(m.TargetRoot[:0], dAtA[iNdEx:postIndex]...) - if m.TargetRoot == nil { - m.TargetRoot = []byte{} - } - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) diff --git a/proto/beacon/p2p/v1/types.proto b/proto/beacon/p2p/v1/types.proto index 1a556ecaf325..31ffd60b718b 100644 --- a/proto/beacon/p2p/v1/types.proto +++ b/proto/beacon/p2p/v1/types.proto @@ -45,7 +45,7 @@ message BeaconState { // Finality [9001-10000] // Spec type [4]Bitvector which means this would be a fixed size of 1 byte. - bytes justification_bits = 9001 [(gogoproto.moretags) = "ssz:\"size=1\""]; + bytes justification_bits = 9001 [(gogoproto.moretags) = "ssz:\"size=1\"", (gogoproto.casttype) = "github.com/prysmaticlabs/go-bitfield.Bitvector4"]; Checkpoint previous_justified_checkpoint = 9002; Checkpoint current_justified_checkpoint = 9003; Checkpoint finalized_checkpoint = 9004; @@ -60,7 +60,7 @@ message Fork { message PendingAttestation { // Bitfield representation of validator indices that have voted exactly // the same vote and have been aggregated into this attestation. - bytes aggregation_bits = 1 [(gogoproto.moretags) = "ssz:\"size=4096\""]; + bytes aggregation_bits = 1 [(gogoproto.moretags) = "ssz:\"size=4096\"", (gogoproto.casttype) = "github.com/prysmaticlabs/go-bitfield.Bitlist"]; AttestationData data = 2; // The difference of when attestation gets created and get included on chain. uint64 inclusion_delay = 3; @@ -73,7 +73,7 @@ message Attestation { // Bitfield representation of validator indices that have voted exactly // the same vote and have been aggregated into this attestation. // Spec type: Bitlist[4096] - bytes aggregation_bits = 2; + bytes aggregation_bits = 2[(gogoproto.moretags) = "ssz:\"size=4096\"", (gogoproto.casttype) = "github.com/prysmaticlabs/go-bitfield.Bitlist"];; // Challengeable bit (SSZ-bool, 1 byte) for the custody of crosslink data. Not used in phase 0. bytes custody_bits = 3; // 96 byte BLS aggregate signature. @@ -211,7 +211,7 @@ message BeaconBlockBody { message SlashableAttestation { repeated uint64 validator_indices = 1; - bytes custody_bits = 2 [(gogoproto.moretags) = "ssz:\"size=4096\""]; + bytes custody_bits = 2 [(gogoproto.moretags) = "ssz:\"size=4096\"", (gogoproto.casttype) = "github.com/prysmaticlabs/go-bitfield.Bitlist"];; AttestationData data = 3; bytes signature = 4 [(gogoproto.moretags) = "ssz:\"size=96\""]; } From 498046be751973d2a5dcd88c257e15bd9aa7d282 Mon Sep 17 00:00:00 2001 From: Preston Van Loon Date: Sat, 6 Jul 2019 18:58:48 -0400 Subject: [PATCH 2/3] Add forked gogo/protobuf until https://github.com/gogo/protobuf/pull/582 --- WORKSPACE | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/WORKSPACE b/WORKSPACE index d801d03249bb..e9ce53b3f52e 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -1108,3 +1108,12 @@ go_repository( commit = "66dcdec9762a9f5935d9466b18f4bee852d1b091", importpath = "github.com/prysmaticlabs/go-bitfield", ) + +go_repository( + name = "com_github_gogo_protobuf", + commit = "c91f1861c28312f505e13bd3e1c90d2088a670c7", + importpath = "github.com/gogo/protobuf", + # Using fork until https://github.com/gogo/protobuf/pull/582 is merged. + remote = "https://github.com/prestonvanloon/protobuf.git", + vcs = "git", +) From 896e8e797c54ae8614b3838b0d26d0b32ec87959 Mon Sep 17 00:00:00 2001 From: Preston Van Loon Date: Sat, 6 Jul 2019 19:13:48 -0400 Subject: [PATCH 3/3] remove newline --- proto/beacon/p2p/v1/types.proto | 1 - 1 file changed, 1 deletion(-) diff --git a/proto/beacon/p2p/v1/types.proto b/proto/beacon/p2p/v1/types.proto index 65109584a104..87eb046cda78 100644 --- a/proto/beacon/p2p/v1/types.proto +++ b/proto/beacon/p2p/v1/types.proto @@ -15,7 +15,6 @@ message BeaconState { BeaconBlockHeader latest_block_header = 2001; repeated bytes block_roots = 2002 [(gogoproto.moretags) = "ssz-size:\"8192, 32\""]; repeated bytes state_roots = 2003 [(gogoproto.moretags) = "ssz-size:\"8192, 32\""]; - repeated bytes historical_roots = 2004 [(gogoproto.moretags) = "ssz:\"size=?,32, max=16777216\""]; // Eth1 [3001-4000]