routerrpc+lnrpc: move htlc failure messages

In a later commit, htlc raw failure messages will be exposed through the
main rpc. This is a preparation for that.
This commit is contained in:
Joost Jager committed 2020-03-09 11:43:32 +01:00
1 parent cc5e18c487
commit 6aab6c0bac
5 files changed
+1374 -1377

No files matched your search

+104 -535
View File
@@ -79,112 +79,6 @@ func (PaymentState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_7a0613f69d37b0a5, []int{0}
}
type Failure_FailureCode int32
const (
//*
//The numbers assigned in this enumeration match the failure codes as
//defined in BOLT #4. Because protobuf 3 requires enums to start with 0,
//a RESERVED value is added.
Failure_RESERVED Failure_FailureCode = 0
Failure_INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS Failure_FailureCode = 1
Failure_INCORRECT_PAYMENT_AMOUNT Failure_FailureCode = 2
Failure_FINAL_INCORRECT_CLTV_EXPIRY Failure_FailureCode = 3
Failure_FINAL_INCORRECT_HTLC_AMOUNT Failure_FailureCode = 4
Failure_FINAL_EXPIRY_TOO_SOON Failure_FailureCode = 5
Failure_INVALID_REALM Failure_FailureCode = 6
Failure_EXPIRY_TOO_SOON Failure_FailureCode = 7
Failure_INVALID_ONION_VERSION Failure_FailureCode = 8
Failure_INVALID_ONION_HMAC Failure_FailureCode = 9
Failure_INVALID_ONION_KEY Failure_FailureCode = 10
Failure_AMOUNT_BELOW_MINIMUM Failure_FailureCode = 11
Failure_FEE_INSUFFICIENT Failure_FailureCode = 12
Failure_INCORRECT_CLTV_EXPIRY Failure_FailureCode = 13
Failure_CHANNEL_DISABLED Failure_FailureCode = 14
Failure_TEMPORARY_CHANNEL_FAILURE Failure_FailureCode = 15
Failure_REQUIRED_NODE_FEATURE_MISSING Failure_FailureCode = 16
Failure_REQUIRED_CHANNEL_FEATURE_MISSING Failure_FailureCode = 17
Failure_UNKNOWN_NEXT_PEER Failure_FailureCode = 18
Failure_TEMPORARY_NODE_FAILURE Failure_FailureCode = 19
Failure_PERMANENT_NODE_FAILURE Failure_FailureCode = 20
Failure_PERMANENT_CHANNEL_FAILURE Failure_FailureCode = 21
Failure_EXPIRY_TOO_FAR Failure_FailureCode = 22
Failure_MPP_TIMEOUT Failure_FailureCode = 23
//*
//The error source is known, but the failure itself couldn't be decoded.
Failure_UNKNOWN_FAILURE Failure_FailureCode = 998
//*
//An unreadable failure result is returned if the received failure message
//cannot be decrypted. In that case the error source is unknown.
Failure_UNREADABLE_FAILURE Failure_FailureCode = 999
)
var Failure_FailureCode_name = map[int32]string{
0: "RESERVED",
1: "INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS",
2: "INCORRECT_PAYMENT_AMOUNT",
3: "FINAL_INCORRECT_CLTV_EXPIRY",
4: "FINAL_INCORRECT_HTLC_AMOUNT",
5: "FINAL_EXPIRY_TOO_SOON",
6: "INVALID_REALM",
7: "EXPIRY_TOO_SOON",
8: "INVALID_ONION_VERSION",
9: "INVALID_ONION_HMAC",
10: "INVALID_ONION_KEY",
11: "AMOUNT_BELOW_MINIMUM",
12: "FEE_INSUFFICIENT",
13: "INCORRECT_CLTV_EXPIRY",
14: "CHANNEL_DISABLED",
15: "TEMPORARY_CHANNEL_FAILURE",
16: "REQUIRED_NODE_FEATURE_MISSING",
17: "REQUIRED_CHANNEL_FEATURE_MISSING",
18: "UNKNOWN_NEXT_PEER",
19: "TEMPORARY_NODE_FAILURE",
20: "PERMANENT_NODE_FAILURE",
21: "PERMANENT_CHANNEL_FAILURE",
22: "EXPIRY_TOO_FAR",
23: "MPP_TIMEOUT",
998: "UNKNOWN_FAILURE",
999: "UNREADABLE_FAILURE",
}
var Failure_FailureCode_value = map[string]int32{
"RESERVED": 0,
"INCORRECT_OR_UNKNOWN_PAYMENT_DETAILS": 1,
"INCORRECT_PAYMENT_AMOUNT": 2,
"FINAL_INCORRECT_CLTV_EXPIRY": 3,
"FINAL_INCORRECT_HTLC_AMOUNT": 4,
"FINAL_EXPIRY_TOO_SOON": 5,
"INVALID_REALM": 6,
"EXPIRY_TOO_SOON": 7,
"INVALID_ONION_VERSION": 8,
"INVALID_ONION_HMAC": 9,
"INVALID_ONION_KEY": 10,
"AMOUNT_BELOW_MINIMUM": 11,
"FEE_INSUFFICIENT": 12,
"INCORRECT_CLTV_EXPIRY": 13,
"CHANNEL_DISABLED": 14,
"TEMPORARY_CHANNEL_FAILURE": 15,
"REQUIRED_NODE_FEATURE_MISSING": 16,
"REQUIRED_CHANNEL_FEATURE_MISSING": 17,
"UNKNOWN_NEXT_PEER": 18,
"TEMPORARY_NODE_FAILURE": 19,
"PERMANENT_NODE_FAILURE": 20,
"PERMANENT_CHANNEL_FAILURE": 21,
"EXPIRY_TOO_FAR": 22,
"MPP_TIMEOUT": 23,
"UNKNOWN_FAILURE": 998,
"UNREADABLE_FAILURE": 999,
}
func (x Failure_FailureCode) String() string {
return proto.EnumName(Failure_FailureCode_name, int32(x))
}
func (Failure_FailureCode) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_7a0613f69d37b0a5, []int{7, 0}
}
type SendPaymentRequest struct {
/// The identity pubkey of the payment recipient
Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"`
@@ -675,10 +569,10 @@ type SendToRouteResponse struct {
/// The preimage obtained by making the payment.
Preimage []byte `protobuf:"bytes,1,opt,name=preimage,proto3" json:"preimage,omitempty"`
/// The failure message in case the payment failed.
Failure *Failure `protobuf:"bytes,2,opt,name=failure,proto3" json:"failure,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
Failure *lnrpc.Failure `protobuf:"bytes,2,opt,name=failure,proto3" json:"failure,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SendToRouteResponse) Reset() { *m = SendToRouteResponse{} }
@@ -713,290 +607,13 @@ func (m *SendToRouteResponse) GetPreimage() []byte {
return nil
}
func (m *SendToRouteResponse) GetFailure() *Failure {
func (m *SendToRouteResponse) GetFailure() *lnrpc.Failure {
if m != nil {
return m.Failure
}
return nil
}
type Failure struct {
/// Failure code as defined in the Lightning spec
Code Failure_FailureCode `protobuf:"varint,1,opt,name=code,proto3,enum=routerrpc.Failure_FailureCode" json:"code,omitempty"`
/// An optional channel update message.
ChannelUpdate *ChannelUpdate `protobuf:"bytes,3,opt,name=channel_update,json=channelUpdate,proto3" json:"channel_update,omitempty"`
/// A failure type-dependent htlc value.
HtlcMsat uint64 `protobuf:"varint,4,opt,name=htlc_msat,json=htlcMsat,proto3" json:"htlc_msat,omitempty"`
/// The sha256 sum of the onion payload.
OnionSha_256 []byte `protobuf:"bytes,5,opt,name=onion_sha_256,json=onionSha256,proto3" json:"onion_sha_256,omitempty"`
/// A failure type-dependent cltv expiry value.
CltvExpiry uint32 `protobuf:"varint,6,opt,name=cltv_expiry,json=cltvExpiry,proto3" json:"cltv_expiry,omitempty"`
/// A failure type-dependent flags value.
Flags uint32 `protobuf:"varint,7,opt,name=flags,proto3" json:"flags,omitempty"`
//*
//The position in the path of the intermediate or final node that generated
//the failure message. Position zero is the sender node.
FailureSourceIndex uint32 `protobuf:"varint,8,opt,name=failure_source_index,json=failureSourceIndex,proto3" json:"failure_source_index,omitempty"`
/// A failure type-dependent block height.
Height uint32 `protobuf:"varint,9,opt,name=height,proto3" json:"height,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Failure) Reset() { *m = Failure{} }
func (m *Failure) String() string { return proto.CompactTextString(m) }
func (*Failure) ProtoMessage() {}
func (*Failure) Descriptor() ([]byte, []int) {
return fileDescriptor_7a0613f69d37b0a5, []int{7}
}
func (m *Failure) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Failure.Unmarshal(m, b)
}
func (m *Failure) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Failure.Marshal(b, m, deterministic)
}
func (m *Failure) XXX_Merge(src proto.Message) {
xxx_messageInfo_Failure.Merge(m, src)
}
func (m *Failure) XXX_Size() int {
return xxx_messageInfo_Failure.Size(m)
}
func (m *Failure) XXX_DiscardUnknown() {
xxx_messageInfo_Failure.DiscardUnknown(m)
}
var xxx_messageInfo_Failure proto.InternalMessageInfo
func (m *Failure) GetCode() Failure_FailureCode {
if m != nil {
return m.Code
}
return Failure_RESERVED
}
func (m *Failure) GetChannelUpdate() *ChannelUpdate {
if m != nil {
return m.ChannelUpdate
}
return nil
}
func (m *Failure) GetHtlcMsat() uint64 {
if m != nil {
return m.HtlcMsat
}
return 0
}
func (m *Failure) GetOnionSha_256() []byte {
if m != nil {
return m.OnionSha_256
}
return nil
}
func (m *Failure) GetCltvExpiry() uint32 {
if m != nil {
return m.CltvExpiry
}
return 0
}
func (m *Failure) GetFlags() uint32 {
if m != nil {
return m.Flags
}
return 0
}
func (m *Failure) GetFailureSourceIndex() uint32 {
if m != nil {
return m.FailureSourceIndex
}
return 0
}
func (m *Failure) GetHeight() uint32 {
if m != nil {
return m.Height
}
return 0
}
type ChannelUpdate struct {
//*
//The signature that validates the announced data and proves the ownership
//of node id.
Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"`
//*
//The target chain that this channel was opened within. This value
//should be the genesis hash of the target chain. Along with the short
//channel ID, this uniquely identifies the channel globally in a
//blockchain.
ChainHash []byte `protobuf:"bytes,2,opt,name=chain_hash,json=chainHash,proto3" json:"chain_hash,omitempty"`
//*
//The unique description of the funding transaction.
ChanId uint64 `protobuf:"varint,3,opt,name=chan_id,json=chanId,proto3" json:"chan_id,omitempty"`
//*
//A timestamp that allows ordering in the case of multiple announcements.
//We should ignore the message if timestamp is not greater than the
//last-received.
Timestamp uint32 `protobuf:"varint,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
//*
//The bitfield that describes whether optional fields are present in this
//update. Currently, the least-significant bit must be set to 1 if the
//optional field MaxHtlc is present.
MessageFlags uint32 `protobuf:"varint,10,opt,name=message_flags,json=messageFlags,proto3" json:"message_flags,omitempty"`
//*
//The bitfield that describes additional meta-data concerning how the
//update is to be interpreted. Currently, the least-significant bit must be
//set to 0 if the creating node corresponds to the first node in the
//previously sent channel announcement and 1 otherwise. If the second bit
//is set, then the channel is set to be disabled.
ChannelFlags uint32 `protobuf:"varint,5,opt,name=channel_flags,json=channelFlags,proto3" json:"channel_flags,omitempty"`
//*
//The minimum number of blocks this node requires to be added to the expiry
//of HTLCs. This is a security parameter determined by the node operator.
//This value represents the required gap between the time locks of the
//incoming and outgoing HTLC's set to this node.
TimeLockDelta uint32 `protobuf:"varint,6,opt,name=time_lock_delta,json=timeLockDelta,proto3" json:"time_lock_delta,omitempty"`
//*
//The minimum HTLC value which will be accepted.
HtlcMinimumMsat uint64 `protobuf:"varint,7,opt,name=htlc_minimum_msat,json=htlcMinimumMsat,proto3" json:"htlc_minimum_msat,omitempty"`
//*
//The base fee that must be used for incoming HTLC's to this particular
//channel. This value will be tacked onto the required for a payment
//independent of the size of the payment.
BaseFee uint32 `protobuf:"varint,8,opt,name=base_fee,json=baseFee,proto3" json:"base_fee,omitempty"`
//*
//The fee rate that will be charged per millionth of a satoshi.
FeeRate uint32 `protobuf:"varint,9,opt,name=fee_rate,json=feeRate,proto3" json:"fee_rate,omitempty"`
//*
//The maximum HTLC value which will be accepted.
HtlcMaximumMsat uint64 `protobuf:"varint,11,opt,name=htlc_maximum_msat,json=htlcMaximumMsat,proto3" json:"htlc_maximum_msat,omitempty"`
//*
//The set of data that was appended to this message, some of which we may
//not actually know how to iterate or parse. By holding onto this data, we
//ensure that we're able to properly validate the set of signatures that
//cover these new fields, and ensure we're able to make upgrades to the
//network in a forwards compatible manner.
ExtraOpaqueData []byte `protobuf:"bytes,12,opt,name=extra_opaque_data,json=extraOpaqueData,proto3" json:"extra_opaque_data,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ChannelUpdate) Reset() { *m = ChannelUpdate{} }
func (m *ChannelUpdate) String() string { return proto.CompactTextString(m) }
func (*ChannelUpdate) ProtoMessage() {}
func (*ChannelUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_7a0613f69d37b0a5, []int{8}
}
func (m *ChannelUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelUpdate.Unmarshal(m, b)
}
func (m *ChannelUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ChannelUpdate.Marshal(b, m, deterministic)
}
func (m *ChannelUpdate) XXX_Merge(src proto.Message) {
xxx_messageInfo_ChannelUpdate.Merge(m, src)
}
func (m *ChannelUpdate) XXX_Size() int {
return xxx_messageInfo_ChannelUpdate.Size(m)
}
func (m *ChannelUpdate) XXX_DiscardUnknown() {
xxx_messageInfo_ChannelUpdate.DiscardUnknown(m)
}
var xxx_messageInfo_ChannelUpdate proto.InternalMessageInfo
func (m *ChannelUpdate) GetSignature() []byte {
if m != nil {
return m.Signature
}
return nil
}
func (m *ChannelUpdate) GetChainHash() []byte {
if m != nil {
return m.ChainHash
}
return nil
}
func (m *ChannelUpdate) GetChanId() uint64 {
if m != nil {
return m.ChanId
}
return 0
}
func (m *ChannelUpdate) GetTimestamp() uint32 {
if m != nil {
return m.Timestamp
}
return 0
}
func (m *ChannelUpdate) GetMessageFlags() uint32 {
if m != nil {
return m.MessageFlags
}
return 0
}
func (m *ChannelUpdate) GetChannelFlags() uint32 {
if m != nil {
return m.ChannelFlags
}
return 0
}
func (m *ChannelUpdate) GetTimeLockDelta() uint32 {
if m != nil {
return m.TimeLockDelta
}
return 0
}
func (m *ChannelUpdate) GetHtlcMinimumMsat() uint64 {
if m != nil {
return m.HtlcMinimumMsat
}
return 0
}
func (m *ChannelUpdate) GetBaseFee() uint32 {
if m != nil {
return m.BaseFee
}
return 0
}
func (m *ChannelUpdate) GetFeeRate() uint32 {
if m != nil {
return m.FeeRate
}
return 0
}
func (m *ChannelUpdate) GetHtlcMaximumMsat() uint64 {
if m != nil {
return m.HtlcMaximumMsat
}
return 0
}
func (m *ChannelUpdate) GetExtraOpaqueData() []byte {
if m != nil {
return m.ExtraOpaqueData
}
return nil
}
type ResetMissionControlRequest struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@@ -1007,7 +624,7 @@ func (m *ResetMissionControlRequest) Reset() { *m = ResetMissionControlR
func (m *ResetMissionControlRequest) String() string { return proto.CompactTextString(m) }
func (*ResetMissionControlRequest) ProtoMessage() {}
func (*ResetMissionControlRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_7a0613f69d37b0a5, []int{9}
return fileDescriptor_7a0613f69d37b0a5, []int{7}
}
func (m *ResetMissionControlRequest) XXX_Unmarshal(b []byte) error {
@@ -1038,7 +655,7 @@ func (m *ResetMissionControlResponse) Reset() { *m = ResetMissionControl
func (m *ResetMissionControlResponse) String() string { return proto.CompactTextString(m) }
func (*ResetMissionControlResponse) ProtoMessage() {}
func (*ResetMissionControlResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_7a0613f69d37b0a5, []int{10}
return fileDescriptor_7a0613f69d37b0a5, []int{8}
}
func (m *ResetMissionControlResponse) XXX_Unmarshal(b []byte) error {
@@ -1069,7 +686,7 @@ func (m *QueryMissionControlRequest) Reset() { *m = QueryMissionControlR
func (m *QueryMissionControlRequest) String() string { return proto.CompactTextString(m) }
func (*QueryMissionControlRequest) ProtoMessage() {}
func (*QueryMissionControlRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_7a0613f69d37b0a5, []int{11}
return fileDescriptor_7a0613f69d37b0a5, []int{9}
}
func (m *QueryMissionControlRequest) XXX_Unmarshal(b []byte) error {
@@ -1103,7 +720,7 @@ func (m *QueryMissionControlResponse) Reset() { *m = QueryMissionControl
func (m *QueryMissionControlResponse) String() string { return proto.CompactTextString(m) }
func (*QueryMissionControlResponse) ProtoMessage() {}
func (*QueryMissionControlResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_7a0613f69d37b0a5, []int{12}
return fileDescriptor_7a0613f69d37b0a5, []int{10}
}
func (m *QueryMissionControlResponse) XXX_Unmarshal(b []byte) error {
@@ -1147,7 +764,7 @@ func (m *PairHistory) Reset() { *m = PairHistory{} }
func (m *PairHistory) String() string { return proto.CompactTextString(m) }
func (*PairHistory) ProtoMessage() {}
func (*PairHistory) Descriptor() ([]byte, []int) {
return fileDescriptor_7a0613f69d37b0a5, []int{13}
return fileDescriptor_7a0613f69d37b0a5, []int{11}
}
func (m *PairHistory) XXX_Unmarshal(b []byte) error {
@@ -1215,7 +832,7 @@ func (m *PairData) Reset() { *m = PairData{} }
func (m *PairData) String() string { return proto.CompactTextString(m) }
func (*PairData) ProtoMessage() {}
func (*PairData) Descriptor() ([]byte, []int) {
return fileDescriptor_7a0613f69d37b0a5, []int{14}
return fileDescriptor_7a0613f69d37b0a5, []int{12}
}
func (m *PairData) XXX_Unmarshal(b []byte) error {
@@ -1294,7 +911,7 @@ func (m *QueryProbabilityRequest) Reset() { *m = QueryProbabilityRequest
func (m *QueryProbabilityRequest) String() string { return proto.CompactTextString(m) }
func (*QueryProbabilityRequest) ProtoMessage() {}
func (*QueryProbabilityRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_7a0613f69d37b0a5, []int{15}
return fileDescriptor_7a0613f69d37b0a5, []int{13}
}
func (m *QueryProbabilityRequest) XXX_Unmarshal(b []byte) error {
@@ -1350,7 +967,7 @@ func (m *QueryProbabilityResponse) Reset() { *m = QueryProbabilityRespon
func (m *QueryProbabilityResponse) String() string { return proto.CompactTextString(m) }
func (*QueryProbabilityResponse) ProtoMessage() {}
func (*QueryProbabilityResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_7a0613f69d37b0a5, []int{16}
return fileDescriptor_7a0613f69d37b0a5, []int{14}
}
func (m *QueryProbabilityResponse) XXX_Unmarshal(b []byte) error {
@@ -1411,7 +1028,7 @@ func (m *BuildRouteRequest) Reset() { *m = BuildRouteRequest{} }
func (m *BuildRouteRequest) String() string { return proto.CompactTextString(m) }
func (*BuildRouteRequest) ProtoMessage() {}
func (*BuildRouteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_7a0613f69d37b0a5, []int{17}
return fileDescriptor_7a0613f69d37b0a5, []int{15}
}
func (m *BuildRouteRequest) XXX_Unmarshal(b []byte) error {
@@ -1473,7 +1090,7 @@ func (m *BuildRouteResponse) Reset() { *m = BuildRouteResponse{} }
func (m *BuildRouteResponse) String() string { return proto.CompactTextString(m) }
func (*BuildRouteResponse) ProtoMessage() {}
func (*BuildRouteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_7a0613f69d37b0a5, []int{18}
return fileDescriptor_7a0613f69d37b0a5, []int{16}
}
func (m *BuildRouteResponse) XXX_Unmarshal(b []byte) error {
@@ -1503,7 +1120,6 @@ func (m *BuildRouteResponse) GetRoute() *lnrpc.Route {
func init() {
proto.RegisterEnum("routerrpc.PaymentState", PaymentState_name, PaymentState_value)
proto.RegisterEnum("routerrpc.Failure_FailureCode", Failure_FailureCode_name, Failure_FailureCode_value)
proto.RegisterType((*SendPaymentRequest)(nil), "routerrpc.SendPaymentRequest")
proto.RegisterMapType((map[uint64][]byte)(nil), "routerrpc.SendPaymentRequest.DestCustomRecordsEntry")
proto.RegisterType((*TrackPaymentRequest)(nil), "routerrpc.TrackPaymentRequest")
@@ -1512,8 +1128,6 @@ func init() {
proto.RegisterType((*RouteFeeResponse)(nil), "routerrpc.RouteFeeResponse")
proto.RegisterType((*SendToRouteRequest)(nil), "routerrpc.SendToRouteRequest")
proto.RegisterType((*SendToRouteResponse)(nil), "routerrpc.SendToRouteResponse")
proto.RegisterType((*Failure)(nil), "routerrpc.Failure")
proto.RegisterType((*ChannelUpdate)(nil), "routerrpc.ChannelUpdate")
proto.RegisterType((*ResetMissionControlRequest)(nil), "routerrpc.ResetMissionControlRequest")
proto.RegisterType((*ResetMissionControlResponse)(nil), "routerrpc.ResetMissionControlResponse")
proto.RegisterType((*QueryMissionControlRequest)(nil), "routerrpc.QueryMissionControlRequest")
@@ -1529,140 +1143,95 @@ func init() {
func init() { proto.RegisterFile("routerrpc/router.proto", fileDescriptor_7a0613f69d37b0a5) }
var fileDescriptor_7a0613f69d37b0a5 = []byte{
// 2126 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0xcd, 0x76, 0xdb, 0xc6,
0x15, 0x0e, 0xc4, 0x5f, 0x5d, 0xfe, 0x41, 0x23, 0x45, 0xa2, 0x29, 0x2b, 0x61, 0x10, 0xd7, 0xe1,
0xf1, 0x71, 0x24, 0x47, 0x6d, 0x7c, 0x7c, 0xba, 0x68, 0x0f, 0x45, 0x82, 0x11, 0x64, 0x12, 0x94,
0x87, 0xa4, 0x13, 0x37, 0x8b, 0x39, 0x10, 0x39, 0x12, 0x51, 0xe1, 0x87, 0x01, 0x86, 0x8e, 0xf5,
0x02, 0x5d, 0xf4, 0x45, 0xda, 0x4d, 0xbb, 0xe9, 0xba, 0xaf, 0xd3, 0xf6, 0x11, 0xba, 0xec, 0x99,
0x19, 0x80, 0x04, 0x29, 0xca, 0xe9, 0x4a, 0xc4, 0x77, 0xbf, 0xb9, 0x77, 0x66, 0xee, 0xdc, 0x3f,
0xc1, 0x7e, 0xe0, 0xcf, 0x19, 0x0d, 0x82, 0xd9, 0xf8, 0x44, 0xfe, 0x3a, 0x9e, 0x05, 0x3e, 0xf3,
0xd1, 0xf6, 0x02, 0xaf, 0x6d, 0x07, 0xb3, 0xb1, 0x44, 0xb5, 0xff, 0x66, 0x00, 0x0d, 0xa8, 0x37,
0xb9, 0xb4, 0xee, 0x5c, 0xea, 0x31, 0x4c, 0x7f, 0x9a, 0xd3, 0x90, 0x21, 0x04, 0xe9, 0x09, 0x0d,
0x59, 0x55, 0xa9, 0x2b, 0x8d, 0x22, 0x16, 0xbf, 0x91, 0x0a, 0x29, 0xcb, 0x65, 0xd5, 0xad, 0xba,
0xd2, 0x48, 0x61, 0xfe, 0x13, 0x3d, 0x82, 0xbc, 0xe5, 0x32, 0xe2, 0x86, 0x16, 0xab, 0x16, 0x05,
0x9c, 0xb3, 0x5c, 0xd6, 0x0b, 0x2d, 0x86, 0xbe, 0x80, 0xe2, 0x4c, 0xaa, 0x24, 0x53, 0x2b, 0x9c,
0x56, 0x53, 0x42, 0x51, 0x21, 0xc2, 0xce, 0xad, 0x70, 0x8a, 0x1a, 0xa0, 0x5e, 0xdb, 0x9e, 0xe5,
0x90, 0xb1, 0xc3, 0xde, 0x93, 0x09, 0x75, 0x98, 0x55, 0x4d, 0xd7, 0x95, 0x46, 0x06, 0x97, 0x05,
0xde, 0x72, 0xd8, 0xfb, 0x36, 0x47, 0xd1, 0x57, 0x50, 0x89, 0x95, 0x05, 0x72, 0x83, 0xd5, 0x4c,
0x5d, 0x69, 0x6c, 0xe3, 0xf2, 0x6c, 0x75, 0xdb, 0x5f, 0x41, 0x85, 0xd9, 0x2e, 0xf5, 0xe7, 0x8c,
0x84, 0x74, 0xec, 0x7b, 0x93, 0xb0, 0x9a, 0x95, 0x1a, 0x23, 0x78, 0x20, 0x51, 0xa4, 0x41, 0xe9,
0x9a, 0x52, 0xe2, 0xd8, 0xae, 0xcd, 0x08, 0xdf, 0x7e, 0x4e, 0x6c, 0xbf, 0x70, 0x4d, 0x69, 0x97,
0x63, 0x03, 0x8b, 0xa1, 0x27, 0x50, 0x5e, 0x72, 0xc4, 0x19, 0x4b, 0x82, 0x54, 0x8c, 0x49, 0xe2,
0xa0, 0xcf, 0x41, 0xf5, 0xe7, 0xec, 0xc6, 0xb7, 0xbd, 0x1b, 0x32, 0x9e, 0x5a, 0x1e, 0xb1, 0x27,
0xd5, 0x7c, 0x5d, 0x69, 0xa4, 0xcf, 0xb6, 0x5e, 0x28, 0xb8, 0x1c, 0xcb, 0x5a, 0x53, 0xcb, 0x33,
0x26, 0xe8, 0x29, 0x54, 0x1c, 0x2b, 0x64, 0x64, 0xea, 0xcf, 0xc8, 0x6c, 0x7e, 0x75, 0x4b, 0xef,
0xaa, 0x65, 0x71, 0x33, 0x25, 0x0e, 0x9f, 0xfb, 0xb3, 0x4b, 0x01, 0xa2, 0x23, 0x00, 0x71, 0x2b,
0xc2, 0x78, 0x75, 0x5b, 0x9c, 0x61, 0x9b, 0x23, 0xc2, 0x30, 0xfa, 0x06, 0x0a, 0xc2, 0x9b, 0x64,
0x6a, 0x7b, 0x2c, 0xac, 0x42, 0x3d, 0xd5, 0x28, 0x9c, 0xaa, 0xc7, 0x8e, 0xc7, 0x1d, 0x8b, 0xb9,
0xe4, 0xdc, 0xf6, 0x18, 0x86, 0x20, 0xfe, 0x19, 0xa2, 0x09, 0xec, 0x72, 0x2f, 0x92, 0xf1, 0x3c,
0x64, 0xbe, 0x4b, 0x02, 0x3a, 0xf6, 0x83, 0x49, 0x58, 0x2d, 0x88, 0xa5, 0xbf, 0x39, 0x5e, 0x3c,
0x8e, 0xe3, 0xfb, 0xaf, 0xe1, 0xb8, 0x4d, 0x43, 0xd6, 0x12, 0xeb, 0xb0, 0x5c, 0xa6, 0x7b, 0x2c,
0xb8, 0xc3, 0x3b, 0x93, 0x75, 0x1c, 0x3d, 0x07, 0x64, 0x39, 0x8e, 0xff, 0x33, 0x09, 0xa9, 0x73,
0x4d, 0x22, 0xef, 0x54, 0x2b, 0x75, 0xa5, 0x91, 0xc7, 0xaa, 0x90, 0x0c, 0xa8, 0x73, 0x1d, 0xa9,
0x47, 0x2f, 0xa1, 0x24, 0xf6, 0x74, 0x4d, 0x2d, 0x36, 0x0f, 0x68, 0x58, 0x55, 0xeb, 0xa9, 0x46,
0xf9, 0x74, 0x27, 0x3a, 0x48, 0x47, 0xc2, 0x67, 0x36, 0xc3, 0x45, 0xce, 0x8b, 0xbe, 0xc3, 0x5a,
0x1b, 0xf6, 0x37, 0x6f, 0x89, 0xbf, 0x51, 0x7e, 0xa7, 0xfc, 0xd9, 0xa6, 0x31, 0xff, 0x89, 0xf6,
0x20, 0xf3, 0xde, 0x72, 0xe6, 0x54, 0xbc, 0xdb, 0x22, 0x96, 0x1f, 0xbf, 0xdd, 0x7a, 0xa5, 0x68,
0xaf, 0x60, 0x77, 0x18, 0x58, 0xe3, 0xdb, 0xb5, 0xa7, 0xbf, 0xfe, 0x72, 0x95, 0x7b, 0x2f, 0x57,
0xfb, 0xab, 0x02, 0xa5, 0x68, 0xd5, 0x80, 0x59, 0x6c, 0x1e, 0xa2, 0xaf, 0x21, 0x13, 0x32, 0x8b,
0x51, 0xc1, 0x2e, 0x9f, 0x1e, 0x24, 0xee, 0x33, 0x41, 0xa4, 0x58, 0xb2, 0x50, 0x0d, 0xf2, 0xb3,
0x80, 0xda, 0xae, 0x75, 0x13, 0xef, 0x6b, 0xf1, 0x8d, 0x34, 0xc8, 0x88, 0xc5, 0x22, 0x64, 0x0a,
0xa7, 0xc5, 0xa4, 0x57, 0xb1, 0x14, 0xa1, 0x06, 0x64, 0xa6, 0xcc, 0x19, 0x87, 0xd5, 0xb4, 0x70,
0x1f, 0x8a, 0x38, 0xe7, 0xc3, 0x6e, 0xab, 0xc9, 0x18, 0x75, 0x67, 0x0c, 0x4b, 0x82, 0xf6, 0x3b,
0xa8, 0x88, 0x95, 0x1d, 0x4a, 0x3f, 0x16, 0xdb, 0x07, 0xc0, 0x23, 0x57, 0x44, 0x82, 0x8c, 0xef,
0xac, 0xe5, 0xf2, 0x20, 0xd0, 0x26, 0xa0, 0x2e, 0xd7, 0x87, 0x33, 0xdf, 0x0b, 0xb9, 0x75, 0x95,
0x6f, 0x83, 0xbf, 0x78, 0x1e, 0x20, 0x22, 0x34, 0x14, 0xb1, 0xaa, 0x1c, 0xe1, 0x1d, 0x4a, 0x45,
0x70, 0x3c, 0x95, 0xf1, 0x48, 0x1c, 0x7f, 0x7c, 0xcb, 0x23, 0xdc, 0xba, 0x8b, 0xd4, 0x97, 0x38,
0xdc, 0xf5, 0xc7, 0xb7, 0x6d, 0x0e, 0x6a, 0x3f, 0xca, 0x24, 0x34, 0xf4, 0xe5, 0x29, 0xff, 0x6f,
0x4f, 0x2c, 0x2f, 0x6b, 0xeb, 0xc1, 0xcb, 0xd2, 0x08, 0xec, 0xae, 0x28, 0x8f, 0x4e, 0x91, 0xf4,
0x81, 0xb2, 0xe6, 0x83, 0xe7, 0x90, 0xbb, 0xb6, 0x6c, 0x67, 0x1e, 0xc4, 0x8a, 0x51, 0xc2, 0xa1,
0x1d, 0x29, 0xc1, 0x31, 0x45, 0xfb, 0x53, 0x1e, 0x72, 0x11, 0x88, 0x4e, 0x21, 0x3d, 0xf6, 0x27,
0xf1, 0x3b, 0xf8, 0xec, 0xfe, 0xb2, 0xf8, 0x6f, 0xcb, 0x9f, 0x50, 0x2c, 0xb8, 0xe8, 0xf7, 0x50,
0xe6, 0x99, 0xc3, 0xa3, 0x0e, 0x99, 0xcf, 0x26, 0xd6, 0xc2, 0xf5, 0xd5, 0xc4, 0xea, 0x96, 0x24,
0x8c, 0x84, 0x1c, 0x97, 0xc6, 0xc9, 0x4f, 0x74, 0x08, 0xdb, 0xdc, 0xdb, 0xd2, 0x13, 0x69, 0xf1,
0xf6, 0xf3, 0x1c, 0x10, 0x3e, 0xd0, 0xa0, 0xe4, 0x7b, 0xb6, 0xef, 0x91, 0x70, 0x6a, 0x91, 0xd3,
0x6f, 0x5f, 0x8a, 0xd4, 0x59, 0xc4, 0x05, 0x01, 0x0e, 0xa6, 0xd6, 0xe9, 0xb7, 0x2f, 0xd1, 0xe7,
0x50, 0x10, 0xe9, 0x86, 0x7e, 0x98, 0xd9, 0xc1, 0x9d, 0xc8, 0x99, 0x25, 0x2c, 0x32, 0x90, 0x2e,
0x10, 0x1e, 0x45, 0xd7, 0x8e, 0x75, 0x13, 0x8a, 0x3c, 0x59, 0xc2, 0xf2, 0x03, 0xbd, 0x80, 0xbd,
0xe8, 0x0e, 0x48, 0xe8, 0xcf, 0x83, 0x31, 0x25, 0xb6, 0x37, 0xa1, 0x1f, 0x44, 0xfe, 0x2b, 0x61,
0x14, 0xc9, 0x06, 0x42, 0x64, 0x70, 0x09, 0xda, 0x87, 0xec, 0x94, 0xda, 0x37, 0x53, 0x99, 0xd3,
0x4a, 0x38, 0xfa, 0xd2, 0xfe, 0x99, 0x81, 0x42, 0xe2, 0x62, 0x50, 0x11, 0xf2, 0x58, 0x1f, 0xe8,
0xf8, 0xad, 0xde, 0x56, 0x3f, 0x41, 0x0d, 0x78, 0x62, 0x98, 0xad, 0x3e, 0xc6, 0x7a, 0x6b, 0x48,
0xfa, 0x98, 0x8c, 0xcc, 0xd7, 0x66, 0xff, 0x7b, 0x93, 0x5c, 0x36, 0xdf, 0xf5, 0x74, 0x73, 0x48,
0xda, 0xfa, 0xb0, 0x69, 0x74, 0x07, 0xaa, 0x82, 0x1e, 0x43, 0x75, 0xc9, 0x8c, 0xc5, 0xcd, 0x5e,
0x7f, 0x64, 0x0e, 0xd5, 0x2d, 0xf4, 0x39, 0x1c, 0x76, 0x0c, 0xb3, 0xd9, 0x25, 0x4b, 0x4e, 0xab,
0x3b, 0x7c, 0x4b, 0xf4, 0x1f, 0x2e, 0x0d, 0xfc, 0x4e, 0x4d, 0x6d, 0x22, 0xf0, 0x98, 0x8a, 0x35,
0xa4, 0xd1, 0x23, 0xf8, 0x54, 0x12, 0xe4, 0x12, 0x32, 0xec, 0xf7, 0xc9, 0xa0, 0xdf, 0x37, 0xd5,
0x0c, 0xda, 0x81, 0x92, 0x61, 0xbe, 0x6d, 0x76, 0x8d, 0x36, 0xc1, 0x7a, 0xb3, 0xdb, 0x53, 0xb3,
0x68, 0x17, 0x2a, 0xeb, 0xbc, 0x1c, 0x57, 0x11, 0xf3, 0xfa, 0xa6, 0xd1, 0x37, 0xc9, 0x5b, 0x1d,
0x0f, 0x8c, 0xbe, 0xa9, 0xe6, 0xd1, 0x3e, 0xa0, 0x55, 0xd1, 0x79, 0xaf, 0xd9, 0x52, 0xb7, 0xd1,
0xa7, 0xb0, 0xb3, 0x8a, 0xbf, 0xd6, 0xdf, 0xa9, 0x80, 0xaa, 0xb0, 0x27, 0x37, 0x46, 0xce, 0xf4,
0x6e, 0xff, 0x7b, 0xd2, 0x33, 0x4c, 0xa3, 0x37, 0xea, 0xa9, 0x05, 0xb4, 0x07, 0x6a, 0x47, 0xd7,
0x89, 0x61, 0x0e, 0x46, 0x9d, 0x8e, 0xd1, 0x32, 0x74, 0x73, 0xa8, 0x16, 0xa5, 0xe5, 0x4d, 0x07,
0x2f, 0xf1, 0x05, 0xad, 0xf3, 0xa6, 0x69, 0xea, 0x5d, 0xd2, 0x36, 0x06, 0xcd, 0xb3, 0xae, 0xde,
0x56, 0xcb, 0xe8, 0x08, 0x1e, 0x0d, 0xf5, 0xde, 0x65, 0x1f, 0x37, 0xf1, 0x3b, 0x12, 0xcb, 0x3b,
0x4d, 0xa3, 0x3b, 0xc2, 0xba, 0x5a, 0x41, 0x5f, 0xc0, 0x11, 0xd6, 0xdf, 0x8c, 0x0c, 0xac, 0xb7,
0x89, 0xd9, 0x6f, 0xeb, 0xa4, 0xa3, 0x37, 0x87, 0x23, 0xac, 0x93, 0x9e, 0x31, 0x18, 0x18, 0xe6,
0x77, 0xaa, 0x8a, 0x9e, 0x40, 0x7d, 0x41, 0x59, 0x28, 0x58, 0x63, 0xed, 0xf0, 0xf3, 0xc5, 0x2e,
0x35, 0xf5, 0x1f, 0x86, 0xe4, 0x52, 0xd7, 0xb1, 0x8a, 0x50, 0x0d, 0xf6, 0x97, 0xe6, 0xa5, 0x81,
0xc8, 0xf6, 0x2e, 0x97, 0x5d, 0xea, 0xb8, 0xd7, 0x34, 0xb9, 0x83, 0x57, 0x64, 0x7b, 0x7c, 0xdb,
0x4b, 0xd9, 0xfa, 0xb6, 0x3f, 0x45, 0x08, 0xca, 0x09, 0xaf, 0x74, 0x9a, 0x58, 0xdd, 0x47, 0x15,
0x28, 0xf4, 0x2e, 0x2f, 0xc9, 0xd0, 0xe8, 0xe9, 0xfd, 0xd1, 0x50, 0x3d, 0x40, 0x7b, 0x50, 0x89,
0xb7, 0x14, 0xaf, 0xfc, 0x57, 0x0e, 0x1d, 0x00, 0x1a, 0x99, 0x58, 0x6f, 0xb6, 0xf9, 0x0d, 0x2d,
0x04, 0xff, 0xce, 0x5d, 0xa4, 0xf3, 0x5b, 0x6a, 0x4a, 0xfb, 0x47, 0x0a, 0x4a, 0x2b, 0x81, 0x8a,
0x1e, 0xc3, 0x76, 0x68, 0xdf, 0x78, 0xa2, 0x6e, 0x45, 0x59, 0x66, 0x09, 0x88, 0x2a, 0x3f, 0xb5,
0x6c, 0x4f, 0xa6, 0x37, 0x59, 0x08, 0xb6, 0x05, 0x22, 0x92, 0xdb, 0x21, 0xe4, 0xe2, 0x8e, 0x22,
0xb5, 0xe8, 0x28, 0xb2, 0x63, 0xd9, 0x49, 0x3c, 0x86, 0x6d, 0x9e, 0x43, 0x43, 0x66, 0xb9, 0x33,
0x11, 0xf3, 0x25, 0xbc, 0x04, 0xd0, 0x97, 0x50, 0x72, 0x69, 0x18, 0x5a, 0x37, 0x94, 0xc8, 0xb8,
0x05, 0xc1, 0x28, 0x46, 0x60, 0x47, 0x84, 0xef, 0x97, 0x10, 0xe7, 0x91, 0x88, 0x94, 0x91, 0xa4,
0x08, 0x94, 0xa4, 0xf5, 0x14, 0xce, 0xac, 0x28, 0x3d, 0x24, 0x53, 0x38, 0xb3, 0xd0, 0x33, 0xd8,
0x91, 0x39, 0xc8, 0xf6, 0x6c, 0x77, 0xee, 0xca, 0x5c, 0x94, 0x13, 0xb9, 0xa8, 0x22, 0x72, 0x91,
0xc4, 0x45, 0x4a, 0x7a, 0x04, 0xf9, 0x2b, 0x2b, 0xa4, 0xbc, 0x7a, 0x44, 0xb9, 0x22, 0xc7, 0xbf,
0x3b, 0x94, 0x72, 0x11, 0xaf, 0x29, 0x01, 0xcf, 0x82, 0x32, 0x45, 0xe4, 0xae, 0x29, 0xc5, 0xfc,
0x2e, 0x17, 0x16, 0xac, 0x0f, 0x4b, 0x0b, 0x85, 0x84, 0x05, 0x89, 0x0b, 0x0b, 0xcf, 0x60, 0x87,
0x7e, 0x60, 0x81, 0x45, 0xfc, 0x99, 0xf5, 0xd3, 0x9c, 0x92, 0x89, 0xc5, 0x2c, 0xd1, 0xa2, 0x16,
0x71, 0x45, 0x08, 0xfa, 0x02, 0x6f, 0x5b, 0xcc, 0xd2, 0x1e, 0x43, 0x0d, 0xd3, 0x90, 0xb2, 0x9e,
0x1d, 0x86, 0xb6, 0xef, 0xb5, 0x7c, 0x8f, 0x05, 0xbe, 0x13, 0x15, 0x21, 0xed, 0x08, 0x0e, 0x37,
0x4a, 0x65, 0x15, 0xe1, 0x8b, 0xdf, 0xcc, 0x69, 0x70, 0xb7, 0x79, 0xf1, 0x1b, 0x38, 0xdc, 0x28,
0x8d, 0x4a, 0xd0, 0x73, 0xc8, 0xcc, 0x2c, 0x3b, 0x08, 0xab, 0x5b, 0xa2, 0x8c, 0xef, 0xaf, 0x74,
0x0d, 0x76, 0x70, 0x6e, 0x87, 0xcc, 0x0f, 0xee, 0xb0, 0x24, 0x5d, 0xa4, 0xf3, 0x8a, 0xba, 0xa5,
0xfd, 0x59, 0x81, 0x42, 0x42, 0xc8, 0x73, 0xbf, 0xe7, 0x4f, 0x28, 0xb9, 0x0e, 0x7c, 0x37, 0xae,
0x63, 0x1c, 0xe8, 0x04, 0xbe, 0xcb, 0xcb, 0xba, 0x10, 0x32, 0x3f, 0x7a, 0x5d, 0x59, 0xfe, 0x39,
0xf4, 0xd1, 0xd7, 0x90, 0x9b, 0x4a, 0x05, 0xc2, 0x47, 0x85, 0xd3, 0xdd, 0x35, 0xdb, 0xfc, 0x66,
0x70, 0xcc, 0xb9, 0x48, 0xe7, 0x53, 0x6a, 0xfa, 0x22, 0x9d, 0x4f, 0xab, 0x99, 0x8b, 0x74, 0x3e,
0xa3, 0x66, 0x2f, 0xd2, 0xf9, 0xac, 0x9a, 0xd3, 0xfe, 0xa3, 0x40, 0x3e, 0x66, 0xf3, 0x9d, 0xf0,
0x8c, 0x4f, 0xf8, 0xbb, 0x88, 0xfa, 0x81, 0x3c, 0x07, 0x86, 0xb6, 0x4b, 0x51, 0x1d, 0x8a, 0x42,
0xb8, 0xda, 0x65, 0x00, 0xc7, 0x9a, 0xa2, 0xd3, 0x10, 0x2d, 0x79, 0xcc, 0x58, 0x14, 0x32, 0xde,
0x92, 0x4b, 0x4a, 0x3c, 0x55, 0x84, 0xf3, 0xf1, 0x98, 0x86, 0xa1, 0xb4, 0x92, 0x91, 0x94, 0x08,
0x13, 0x86, 0x9e, 0x42, 0x25, 0xa6, 0xc4, 0xb6, 0xb2, 0xb2, 0xe5, 0x88, 0xe0, 0xc8, 0x5c, 0x03,
0xd4, 0x24, 0xcf, 0x5d, 0x0e, 0x01, 0xe5, 0x25, 0x91, 0x1b, 0x95, 0x87, 0xd7, 0xfe, 0x08, 0x07,
0xc2, 0x95, 0x97, 0x81, 0x7f, 0x65, 0x5d, 0xd9, 0x8e, 0xcd, 0xee, 0xe2, 0x3e, 0x85, 0x1f, 0x3c,
0xf0, 0x5d, 0xe2, 0xc5, 0x85, 0xbf, 0x88, 0xf3, 0x1c, 0x30, 0x79, 0x25, 0x3b, 0x80, 0x1c, 0xf3,
0xa5, 0x28, 0x72, 0x01, 0xf3, 0x85, 0x20, 0x39, 0x3c, 0xa5, 0x56, 0x86, 0x27, 0xed, 0x16, 0xaa,
0xf7, 0x6d, 0x45, 0x6f, 0xa6, 0x0e, 0x85, 0xd9, 0x12, 0x16, 0xe6, 0x14, 0x9c, 0x84, 0x92, 0xbe,
0xdd, 0xfa, 0x65, 0xdf, 0x6a, 0x7f, 0x51, 0x60, 0xe7, 0x6c, 0x6e, 0x3b, 0x93, 0x95, 0xde, 0x2b,
0xb9, 0x3b, 0x65, 0x75, 0xb4, 0xdb, 0x34, 0xb7, 0x6d, 0x6d, 0x9c, 0xdb, 0x36, 0xcd, 0x46, 0xa9,
0x07, 0x67, 0xa3, 0xcf, 0xa1, 0xb0, 0x1c, 0x8b, 0x64, 0x6b, 0x5b, 0xc4, 0x30, 0x8d, 0x67, 0xa2,
0x50, 0x7b, 0x05, 0x28, 0xb9, 0xd1, 0xe8, 0x42, 0x16, 0x2d, 0xa0, 0xf2, 0x60, 0x0b, 0xf8, 0xec,
0xef, 0x0a, 0x14, 0x93, 0x7d, 0x38, 0x2a, 0xc1, 0xb6, 0x61, 0x92, 0x4e, 0xd7, 0xf8, 0xee, 0x7c,
0xa8, 0x7e, 0xc2, 0x3f, 0x07, 0xa3, 0x56, 0x4b, 0xd7, 0xdb, 0x7a, 0x5b, 0x55, 0x78, 0x85, 0xe0,
0xb9, 0x5d, 0x6f, 0x2f, 0x0a, 0xc2, 0x16, 0xaf, 0xe5, 0x11, 0x66, 0xf6, 0x09, 0xee, 0x8f, 0x86,
0xba, 0x9a, 0x42, 0x2a, 0x14, 0x23, 0x50, 0xc7, 0xb8, 0x8f, 0xd5, 0x34, 0x2f, 0x78, 0x11, 0x72,
0xbf, 0x0f, 0x89, 0xdb, 0x94, 0x8c, 0xe8, 0x33, 0x62, 0xd6, 0xb2, 0x44, 0x93, 0xb3, 0x66, 0xb7,
0x69, 0xb6, 0x74, 0x35, 0x7b, 0xfa, 0xb7, 0x0c, 0x64, 0xc5, 0x09, 0x02, 0x74, 0x0e, 0x85, 0xc4,
0x48, 0x86, 0x8e, 0x3e, 0x3a, 0xaa, 0xd5, 0xaa, 0x9b, 0x27, 0x8f, 0x79, 0xf8, 0x42, 0x41, 0x17,
0x50, 0x4c, 0x0e, 0x3c, 0x28, 0xd9, 0x9d, 0x6e, 0x98, 0x84, 0x3e, 0xaa, 0xeb, 0x35, 0xa8, 0x7a,
0xc8, 0x6c, 0x97, 0x77, 0xa3, 0xd1, 0x7c, 0x80, 0x6a, 0x09, 0xfe, 0xda, 0xd0, 0x51, 0x3b, 0xdc,
0x28, 0x8b, 0x5c, 0xd8, 0x95, 0x47, 0x8c, 0x3a, 0xf4, 0x7b, 0x47, 0x5c, 0x1d, 0x0b, 0x6a, 0x9f,
0x3d, 0x24, 0x8e, 0xb4, 0x4d, 0x60, 0x77, 0x43, 0xc6, 0x46, 0xbf, 0x4a, 0xee, 0xe0, 0xc1, 0x7c,
0x5f, 0x7b, 0xfa, 0x4b, 0xb4, 0xa5, 0x95, 0x0d, 0xa9, 0x7d, 0xc5, 0xca, 0xc3, 0x85, 0x61, 0xc5,
0xca, 0xc7, 0x2a, 0xc4, 0x8f, 0xa0, 0xae, 0x67, 0x02, 0xa4, 0xad, 0xaf, 0xbd, 0x9f, 0x92, 0x6a,
0x5f, 0x7e, 0x94, 0x13, 0x29, 0x37, 0x00, 0x96, 0xf1, 0x84, 0x1e, 0x27, 0x96, 0xdc, 0xcb, 0x07,
0xb5, 0xa3, 0x07, 0xa4, 0x52, 0xd5, 0xd9, 0x37, 0x7f, 0x38, 0xb9, 0xb1, 0xd9, 0x74, 0x7e, 0x75,
0x3c, 0xf6, 0xdd, 0x13, 0x87, 0xf7, 0xf4, 0x9e, 0xed, 0xdd, 0x78, 0x94, 0xfd, 0xec, 0x07, 0xb7,
0x27, 0x8e, 0x37, 0x39, 0x11, 0x61, 0x79, 0xb2, 0xd0, 0x72, 0x95, 0x15, 0xff, 0x80, 0xfa, 0xf5,
0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x77, 0x3e, 0x21, 0x8e, 0xb0, 0x12, 0x00, 0x00,
// 1404 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x57, 0xdb, 0x52, 0xdb, 0xd6,
0x1a, 0xde, 0xf2, 0x09, 0xf3, 0xdb, 0x18, 0x65, 0xb1, 0x27, 0xd1, 0x36, 0x21, 0xf1, 0xd6, 0xce,
0x26, 0x9e, 0x4e, 0x02, 0x09, 0xed, 0x74, 0x32, 0xbd, 0xe8, 0x0c, 0xf8, 0x50, 0x4c, 0xcd, 0x21,
0xcb, 0xe6, 0xa2, 0xcd, 0x85, 0x46, 0x58, 0xcb, 0x58, 0x45, 0xd2, 0x72, 0xb5, 0x96, 0x92, 0xe1,
0x15, 0xfa, 0x22, 0xed, 0x4d, 0xfb, 0x5c, 0x7d, 0x84, 0x5e, 0x76, 0xd6, 0x41, 0x58, 0x36, 0x36,
0xe9, 0x9d, 0xf5, 0xfd, 0xdf, 0x7f, 0x5a, 0xff, 0x09, 0xe0, 0x71, 0x4c, 0x13, 0x4e, 0xe2, 0x78,
0x3a, 0xda, 0x57, 0xbf, 0xf6, 0xa6, 0x31, 0xe5, 0x14, 0xad, 0xdf, 0xe1, 0xf5, 0xf5, 0x78, 0x3a,
0x52, 0xa8, 0xfd, 0x57, 0x11, 0xd0, 0x80, 0x44, 0xde, 0x85, 0x7b, 0x1b, 0x92, 0x88, 0x63, 0xf2,
0x73, 0x42, 0x18, 0x47, 0x08, 0x0a, 0x1e, 0x61, 0xdc, 0x32, 0x1a, 0x46, 0xb3, 0x8a, 0xe5, 0x6f,
0x64, 0x42, 0xde, 0x0d, 0xb9, 0x95, 0x6b, 0x18, 0xcd, 0x3c, 0x16, 0x3f, 0xd1, 0x7f, 0xa0, 0xec,
0x86, 0xdc, 0x09, 0x99, 0xcb, 0xad, 0xaa, 0x84, 0xd7, 0xdc, 0x90, 0x9f, 0x32, 0x97, 0xa3, 0xff,
0x42, 0x75, 0xaa, 0x4c, 0x3a, 0x13, 0x97, 0x4d, 0xac, 0xbc, 0x34, 0x54, 0xd1, 0xd8, 0xb1, 0xcb,
0x26, 0xa8, 0x09, 0xe6, 0xd8, 0x8f, 0xdc, 0xc0, 0x19, 0x05, 0xfc, 0xa3, 0xe3, 0x91, 0x80, 0xbb,
0x56, 0xa1, 0x61, 0x34, 0x8b, 0xb8, 0x26, 0xf1, 0x56, 0xc0, 0x3f, 0xb6, 0x05, 0x8a, 0x5e, 0xc2,
0x66, 0x6a, 0x2c, 0x56, 0x01, 0x5a, 0xc5, 0x86, 0xd1, 0x5c, 0xc7, 0xb5, 0xe9, 0x7c, 0xd8, 0x2f,
0x61, 0x93, 0xfb, 0x21, 0xa1, 0x09, 0x77, 0x18, 0x19, 0xd1, 0xc8, 0x63, 0x56, 0x49, 0x59, 0xd4,
0xf0, 0x40, 0xa1, 0xc8, 0x86, 0x8d, 0x31, 0x21, 0x4e, 0xe0, 0x87, 0x3e, 0x77, 0x44, 0xf8, 0x6b,
0x32, 0xfc, 0xca, 0x98, 0x90, 0xbe, 0xc0, 0x06, 0x2e, 0x47, 0x2f, 0xa0, 0x36, 0xe3, 0xc8, 0x1c,
0x37, 0x24, 0xa9, 0x9a, 0x92, 0x64, 0xa2, 0xaf, 0xc0, 0xa4, 0x09, 0xbf, 0xa6, 0x7e, 0x74, 0xed,
0x8c, 0x26, 0x6e, 0xe4, 0xf8, 0x9e, 0x55, 0x6e, 0x18, 0xcd, 0xc2, 0x51, 0xee, 0x8d, 0x81, 0x6b,
0xa9, 0xac, 0x35, 0x71, 0xa3, 0x9e, 0x87, 0x76, 0x61, 0x33, 0x70, 0x19, 0x77, 0x26, 0x74, 0xea,
0x4c, 0x93, 0xab, 0x1b, 0x72, 0x6b, 0xd5, 0xe4, 0xcb, 0x6c, 0x08, 0xf8, 0x98, 0x4e, 0x2f, 0x24,
0x88, 0x76, 0x00, 0xe4, 0xab, 0x48, 0xe7, 0xd6, 0xba, 0xcc, 0x61, 0x5d, 0x20, 0xd2, 0x31, 0x7a,
0x0b, 0x15, 0x59, 0x4d, 0x67, 0xe2, 0x47, 0x9c, 0x59, 0xd0, 0xc8, 0x37, 0x2b, 0x07, 0xe6, 0x5e,
0x10, 0x89, 0xc2, 0x62, 0x21, 0x39, 0xf6, 0x23, 0x8e, 0x21, 0x4e, 0x7f, 0x32, 0xe4, 0xc1, 0x96,
0xa8, 0xa2, 0x33, 0x4a, 0x18, 0xa7, 0xa1, 0x13, 0x93, 0x11, 0x8d, 0x3d, 0x66, 0x55, 0xa4, 0xea,
0x57, 0x7b, 0x77, 0xcd, 0xb1, 0x77, 0xbf, 0x1b, 0xf6, 0xda, 0x84, 0xf1, 0x96, 0xd4, 0xc3, 0x4a,
0xad, 0x13, 0xf1, 0xf8, 0x16, 0x3f, 0xf2, 0x16, 0x71, 0xf4, 0x0a, 0x90, 0x1b, 0x04, 0xf4, 0x93,
0xc3, 0x48, 0x30, 0x76, 0x74, 0x75, 0xac, 0xcd, 0x86, 0xd1, 0x2c, 0x63, 0x53, 0x4a, 0x06, 0x24,
0x18, 0x6b, 0xf3, 0xe8, 0x6b, 0xd8, 0x90, 0x31, 0x8d, 0x89, 0xcb, 0x93, 0x98, 0x30, 0xcb, 0x6c,
0xe4, 0x9b, 0xb5, 0x83, 0x47, 0x3a, 0x91, 0xae, 0x82, 0x8f, 0x7c, 0x8e, 0xab, 0x82, 0xa7, 0xbf,
0x59, 0xbd, 0x0d, 0x8f, 0x97, 0x87, 0x24, 0x7a, 0x54, 0xbc, 0xa9, 0x68, 0xdb, 0x02, 0x16, 0x3f,
0xd1, 0xbf, 0xa1, 0xf8, 0xd1, 0x0d, 0x12, 0x22, 0xfb, 0xb6, 0x8a, 0xd5, 0xc7, 0x37, 0xb9, 0x77,
0x86, 0xfd, 0x0e, 0xb6, 0x86, 0xb1, 0x3b, 0xba, 0x59, 0x68, 0xfd, 0xc5, 0xce, 0x35, 0xee, 0x75,
0xae, 0xfd, 0x9b, 0x01, 0x1b, 0x5a, 0x6b, 0xc0, 0x5d, 0x9e, 0x30, 0xf4, 0x1a, 0x8a, 0x8c, 0xbb,
0x9c, 0x48, 0x76, 0xed, 0xe0, 0x49, 0xe6, 0x3d, 0x33, 0x44, 0x82, 0x15, 0x0b, 0xd5, 0xa1, 0x3c,
0x8d, 0x89, 0x1f, 0xba, 0xd7, 0x69, 0x5c, 0x77, 0xdf, 0xc8, 0x86, 0xa2, 0x54, 0x96, 0x23, 0x53,
0x39, 0xa8, 0x66, 0xab, 0x8a, 0x95, 0x08, 0x35, 0xa1, 0x38, 0xe1, 0xc1, 0x88, 0x59, 0x05, 0x59,
0x3e, 0xa4, 0x39, 0xc7, 0xc3, 0x7e, 0xeb, 0x90, 0x73, 0x12, 0x4e, 0x39, 0x56, 0x04, 0xfb, 0x5b,
0xd8, 0x94, 0x9a, 0x5d, 0x42, 0x1e, 0x9a, 0xed, 0x27, 0x20, 0x26, 0x57, 0x4e, 0x82, 0x9a, 0xef,
0x92, 0x1b, 0x8a, 0x21, 0xb0, 0x3d, 0x30, 0x67, 0xfa, 0x6c, 0x4a, 0x23, 0x26, 0xbc, 0x9b, 0x22,
0x0c, 0xd1, 0xf1, 0x62, 0x40, 0xe4, 0x68, 0x18, 0x52, 0xab, 0xa6, 0xf1, 0x2e, 0x21, 0x72, 0x38,
0x76, 0xd5, 0x3c, 0x3a, 0x01, 0x1d, 0xdd, 0x88, 0x09, 0x77, 0x6f, 0xb5, 0xf9, 0x0d, 0x01, 0xf7,
0xe9, 0xe8, 0xa6, 0x2d, 0x40, 0xfb, 0x83, 0x5a, 0x42, 0x43, 0xaa, 0xb2, 0xfc, 0xc7, 0x95, 0x98,
0x3d, 0x56, 0x6e, 0xe5, 0x63, 0xd9, 0x1f, 0x60, 0x6b, 0xce, 0xb8, 0xce, 0x22, 0x5b, 0x03, 0x63,
0xa1, 0x06, 0x4d, 0x58, 0x1b, 0xbb, 0x7e, 0x90, 0xc4, 0xa9, 0xe1, 0x5a, 0xda, 0x92, 0x0a, 0xc5,
0xa9, 0xd8, 0x7e, 0x0a, 0x75, 0x4c, 0x18, 0xe1, 0xa7, 0x3e, 0x63, 0x3e, 0x8d, 0x5a, 0x34, 0xe2,
0x31, 0x0d, 0x74, 0x06, 0xf6, 0x0e, 0x6c, 0x2f, 0x95, 0xaa, 0x10, 0x84, 0xf2, 0xfb, 0x84, 0xc4,
0xb7, 0xcb, 0x95, 0xdf, 0xc3, 0xf6, 0x52, 0xa9, 0x8e, 0xff, 0x15, 0x14, 0xa7, 0xae, 0x1f, 0x33,
0x2b, 0x27, 0x7b, 0xe0, 0xf1, 0x5c, 0xcb, 0xf9, 0xf1, 0xb1, 0xcf, 0x38, 0x8d, 0x6f, 0xb1, 0x22,
0x9d, 0x14, 0xca, 0x86, 0x99, 0xb3, 0x7f, 0x31, 0xa0, 0x92, 0x11, 0xa2, 0x6d, 0x58, 0x8f, 0xa8,
0x47, 0x9c, 0x71, 0x4c, 0xc3, 0xf4, 0x11, 0x04, 0xd0, 0x8d, 0x69, 0x28, 0x7a, 0x42, 0x0a, 0x39,
0xd5, 0x3d, 0x5a, 0x12, 0x9f, 0x43, 0x8a, 0x5e, 0xc3, 0xda, 0x44, 0x19, 0x90, 0x6b, 0xb3, 0x72,
0xb0, 0xb5, 0xe0, 0xbb, 0xed, 0x72, 0x17, 0xa7, 0x9c, 0x93, 0x42, 0x39, 0x6f, 0x16, 0x4e, 0x0a,
0xe5, 0x82, 0x59, 0x3c, 0x29, 0x94, 0x8b, 0x66, 0xe9, 0xa4, 0x50, 0x2e, 0x99, 0x6b, 0xf6, 0x9f,
0x06, 0x94, 0x53, 0xb6, 0x88, 0x44, 0x3c, 0xa9, 0x23, 0xfa, 0x42, 0x37, 0x53, 0x59, 0x00, 0x43,
0x3f, 0x24, 0xa8, 0x01, 0x55, 0x29, 0x9c, 0x6f, 0x51, 0x10, 0xd8, 0xa1, 0x6c, 0x53, 0xb9, 0xcf,
0x53, 0x86, 0xec, 0xc7, 0x82, 0xde, 0xe7, 0x8a, 0x92, 0x9e, 0x24, 0x96, 0x8c, 0x46, 0x84, 0x31,
0xe5, 0xa5, 0xa8, 0x28, 0x1a, 0x93, 0x8e, 0x76, 0x61, 0x33, 0xa5, 0xa4, 0xbe, 0x4a, 0xaa, 0x5f,
0x35, 0xac, 0xdd, 0x35, 0xc1, 0xcc, 0xf2, 0xc2, 0xd9, 0x05, 0xa9, 0xcd, 0x88, 0xc2, 0xa9, 0x4a,
0xde, 0xfe, 0x09, 0x9e, 0xc8, 0x52, 0x5e, 0xc4, 0xf4, 0xca, 0xbd, 0xf2, 0x03, 0x9f, 0xdf, 0xa6,
0x4d, 0x2e, 0x12, 0x8f, 0x69, 0xe8, 0x88, 0xb7, 0x4d, 0x4b, 0x20, 0x80, 0x33, 0xea, 0x11, 0x51,
0x02, 0x4e, 0x95, 0x48, 0x97, 0x80, 0x53, 0x29, 0xc8, 0x5e, 0xde, 0xfc, 0xdc, 0xe5, 0xb5, 0x6f,
0xc0, 0xba, 0xef, 0x4b, 0xf7, 0x4c, 0x03, 0x2a, 0xd3, 0x19, 0x2c, 0xdd, 0x19, 0x38, 0x0b, 0x65,
0x6b, 0x9b, 0xfb, 0x7c, 0x6d, 0xed, 0x5f, 0x0d, 0x78, 0x74, 0x94, 0xf8, 0x81, 0x37, 0x37, 0xb8,
0xd9, 0xe8, 0x8c, 0xf9, 0xbf, 0x0b, 0x96, 0x1d, 0xfd, 0xdc, 0xd2, 0xa3, 0xbf, 0xec, 0xb0, 0xe6,
0x57, 0x1e, 0xd6, 0xe7, 0x50, 0x99, 0xdd, 0x54, 0xb5, 0x17, 0xab, 0x18, 0x26, 0xe9, 0x41, 0x65,
0xf6, 0x3b, 0x40, 0xd9, 0x40, 0xf5, 0x83, 0xdc, 0xed, 0x0f, 0x63, 0xe5, 0xfe, 0xf8, 0xe2, 0x0f,
0x03, 0xaa, 0xd9, 0x25, 0x8e, 0x36, 0x60, 0xbd, 0x77, 0xe6, 0x74, 0xfb, 0xbd, 0xef, 0x8e, 0x87,
0xe6, 0xbf, 0xc4, 0xe7, 0xe0, 0xb2, 0xd5, 0xea, 0x74, 0xda, 0x9d, 0xb6, 0x69, 0x20, 0x04, 0xb5,
0xee, 0x61, 0xaf, 0xdf, 0x69, 0x3b, 0xc3, 0xde, 0x69, 0xe7, 0xfc, 0x72, 0x68, 0xe6, 0xd0, 0x16,
0x6c, 0x6a, 0xec, 0xec, 0xdc, 0xc1, 0xe7, 0x97, 0xc3, 0x8e, 0x99, 0x47, 0x26, 0x54, 0x35, 0xd8,
0xc1, 0xf8, 0x1c, 0x9b, 0x05, 0xf4, 0x02, 0x1a, 0x1a, 0xe9, 0x9d, 0xb5, 0xce, 0x31, 0xee, 0xb4,
0x86, 0xce, 0xc5, 0xe1, 0x0f, 0xa7, 0x9d, 0xb3, 0xa1, 0xd3, 0xee, 0x0c, 0x0f, 0x7b, 0xfd, 0x81,
0x59, 0x44, 0xcf, 0x61, 0xfb, 0x8e, 0x35, 0xb8, 0xec, 0x76, 0x7b, 0xad, 0x9e, 0x20, 0x1c, 0x1d,
0xf6, 0x0f, 0xcf, 0x5a, 0x1d, 0xb3, 0x74, 0xf0, 0x7b, 0x11, 0x4a, 0x32, 0x83, 0x18, 0x1d, 0x43,
0x25, 0x73, 0xcf, 0xd1, 0xce, 0x83, 0x77, 0xbe, 0x6e, 0x2d, 0x3f, 0x5b, 0x09, 0x7b, 0x63, 0xa0,
0x13, 0xa8, 0x66, 0xaf, 0x25, 0x7a, 0x96, 0xe1, 0x2e, 0x39, 0xa3, 0x0f, 0xda, 0xfa, 0x1e, 0xcc,
0x0e, 0xe3, 0x7e, 0x28, 0x2e, 0xa2, 0x3e, 0x2e, 0xa8, 0x9e, 0xe1, 0x2f, 0x5c, 0xac, 0xfa, 0xf6,
0x52, 0x99, 0x2e, 0x61, 0x5f, 0xa5, 0xa8, 0xd7, 0xfb, 0xbd, 0x14, 0xe7, 0x6f, 0x4a, 0xfd, 0xd9,
0x2a, 0xb1, 0xb6, 0xe6, 0xc1, 0xd6, 0x92, 0x8d, 0x8d, 0xfe, 0x9f, 0x8d, 0x60, 0xe5, 0xbe, 0xaf,
0xef, 0x7e, 0x8e, 0x36, 0xf3, 0xb2, 0x64, 0xb5, 0xcf, 0x79, 0x59, 0x7d, 0x18, 0xe6, 0xbc, 0x3c,
0x74, 0x21, 0x3e, 0x80, 0xb9, 0xb8, 0x09, 0x90, 0xbd, 0xa8, 0x7b, 0x7f, 0x25, 0xd5, 0xff, 0xf7,
0x20, 0x47, 0x1b, 0xef, 0x01, 0xcc, 0xe6, 0x09, 0x3d, 0xcd, 0xa8, 0xdc, 0xdb, 0x07, 0xf5, 0x9d,
0x15, 0x52, 0x65, 0xea, 0xe8, 0xed, 0x8f, 0xfb, 0xd7, 0x3e, 0x9f, 0x24, 0x57, 0x7b, 0x23, 0x1a,
0xee, 0x07, 0xfe, 0xf5, 0x84, 0x47, 0x7e, 0x74, 0x1d, 0x11, 0xfe, 0x89, 0xc6, 0x37, 0xfb, 0x41,
0xe4, 0xed, 0xcb, 0xb1, 0xdc, 0xbf, 0xb3, 0x72, 0x55, 0x92, 0xff, 0xbd, 0x7c, 0xf9, 0x77, 0x00,
0x00, 0x00, 0xff, 0xff, 0x30, 0x2f, 0x8a, 0x5c, 0xed, 0x0c, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.