lnrpc: add new invoice related RPC commands

This commit is contained in:
Olaoluwa Osuntokun 2016-09-19 11:52:23 -07:00
parent d7c4074cd6
commit 39e6217860
No known key found for this signature in database
GPG Key ID: 9CC5B105D03521A2
2 changed files with 352 additions and 169 deletions

View File

@ -45,6 +45,11 @@ It has these top-level messages:
RoutingTableLink RoutingTableLink
ShowRoutingTableRequest ShowRoutingTableRequest
ShowRoutingTableResponse ShowRoutingTableResponse
Invoice
AddInvoiceResponse
PaymentHash
ListInvoiceRequest
ListInvoiceResponse
*/ */
package lnrpc package lnrpc
@ -121,8 +126,8 @@ func (NewAddressRequest_AddressType) EnumDescriptor() ([]byte, []int) {
type SendRequest struct { type SendRequest struct {
Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"` Dest []byte `protobuf:"bytes,1,opt,name=dest,proto3" json:"dest,omitempty"`
Amt int64 `protobuf:"varint,2,opt,name=amt" json:"amt,omitempty"` Amt int64 `protobuf:"varint,2,opt,name=amt" json:"amt,omitempty"`
PaymentHash []byte `protobuf:"bytes,3,opt,name=payment_hash,json=paymentHash,proto3" json:"payment_hash,omitempty"` PaymentHash []byte `protobuf:"bytes,3,opt,name=payment_hash,proto3" json:"payment_hash,omitempty"`
FastSend bool `protobuf:"varint,4,opt,name=fast_send,json=fastSend" json:"fast_send,omitempty"` FastSend bool `protobuf:"varint,4,opt,name=fast_send" json:"fast_send,omitempty"`
} }
func (m *SendRequest) Reset() { *m = SendRequest{} } func (m *SendRequest) Reset() { *m = SendRequest{} }
@ -139,8 +144,8 @@ func (*SendResponse) ProtoMessage() {}
func (*SendResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } func (*SendResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
type ChannelPoint struct { type ChannelPoint struct {
FundingTxid []byte `protobuf:"bytes,1,opt,name=funding_txid,json=fundingTxid,proto3" json:"funding_txid,omitempty"` FundingTxid []byte `protobuf:"bytes,1,opt,name=funding_txid,proto3" json:"funding_txid,omitempty"`
OutputIndex uint32 `protobuf:"varint,2,opt,name=output_index,json=outputIndex" json:"output_index,omitempty"` OutputIndex uint32 `protobuf:"varint,2,opt,name=output_index" json:"output_index,omitempty"`
} }
func (m *ChannelPoint) Reset() { *m = ChannelPoint{} } func (m *ChannelPoint) Reset() { *m = ChannelPoint{} }
@ -159,7 +164,7 @@ func (*LightningAddress) ProtoMessage() {}
func (*LightningAddress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } func (*LightningAddress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
type SendManyRequest struct { type SendManyRequest struct {
AddrToAmount map[string]int64 `protobuf:"bytes,1,rep,name=AddrToAmount,json=addrToAmount" json:"AddrToAmount,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` AddrToAmount map[string]int64 `protobuf:"bytes,1,rep,name=AddrToAmount" json:"AddrToAmount,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
} }
func (m *SendManyRequest) Reset() { *m = SendManyRequest{} } func (m *SendManyRequest) Reset() { *m = SendManyRequest{} }
@ -237,7 +242,7 @@ func (m *ConnectPeerRequest) GetAddr() *LightningAddress {
} }
type ConnectPeerResponse struct { type ConnectPeerResponse struct {
PeerId int32 `protobuf:"varint,1,opt,name=peer_id,json=peerId" json:"peer_id,omitempty"` PeerId int32 `protobuf:"varint,1,opt,name=peer_id" json:"peer_id,omitempty"`
} }
func (m *ConnectPeerResponse) Reset() { *m = ConnectPeerResponse{} } func (m *ConnectPeerResponse) Reset() { *m = ConnectPeerResponse{} }
@ -248,8 +253,8 @@ func (*ConnectPeerResponse) Descriptor() ([]byte, []int) { return fileDescriptor
type HTLC struct { type HTLC struct {
Id int64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"` Id int64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"`
Amount int64 `protobuf:"varint,2,opt,name=amount" json:"amount,omitempty"` Amount int64 `protobuf:"varint,2,opt,name=amount" json:"amount,omitempty"`
HashLock []byte `protobuf:"bytes,3,opt,name=hash_lock,json=hashLock,proto3" json:"hash_lock,omitempty"` HashLock []byte `protobuf:"bytes,3,opt,name=hash_lock,proto3" json:"hash_lock,omitempty"`
ToUs bool `protobuf:"varint,4,opt,name=to_us,json=toUs" json:"to_us,omitempty"` ToUs bool `protobuf:"varint,4,opt,name=to_us" json:"to_us,omitempty"`
} }
func (m *HTLC) Reset() { *m = HTLC{} } func (m *HTLC) Reset() { *m = HTLC{} }
@ -259,14 +264,14 @@ func (*HTLC) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
type ActiveChannel struct { type ActiveChannel struct {
// TODO(roasbeef): make channel points a string everywhere in rpc? // TODO(roasbeef): make channel points a string everywhere in rpc?
RemoteId string `protobuf:"bytes,1,opt,name=remote_id,json=remoteId" json:"remote_id,omitempty"` RemoteId string `protobuf:"bytes,1,opt,name=remote_id" json:"remote_id,omitempty"`
ChannelPoint string `protobuf:"bytes,2,opt,name=channel_point,json=channelPoint" json:"channel_point,omitempty"` ChannelPoint string `protobuf:"bytes,2,opt,name=channel_point" json:"channel_point,omitempty"`
Capacity int64 `protobuf:"varint,3,opt,name=capacity" json:"capacity,omitempty"` Capacity int64 `protobuf:"varint,3,opt,name=capacity" json:"capacity,omitempty"`
LocalBalance int64 `protobuf:"varint,4,opt,name=local_balance,json=localBalance" json:"local_balance,omitempty"` LocalBalance int64 `protobuf:"varint,4,opt,name=local_balance" json:"local_balance,omitempty"`
RemoteBalance int64 `protobuf:"varint,5,opt,name=remote_balance,json=remoteBalance" json:"remote_balance,omitempty"` RemoteBalance int64 `protobuf:"varint,5,opt,name=remote_balance" json:"remote_balance,omitempty"`
UnsettledBelance int64 `protobuf:"varint,6,opt,name=unsettled_belance,json=unsettledBelance" json:"unsettled_belance,omitempty"` UnsettledBelance int64 `protobuf:"varint,6,opt,name=unsettled_belance" json:"unsettled_belance,omitempty"`
PendingHtlcs []*HTLC `protobuf:"bytes,7,rep,name=pending_htlcs,json=pendingHtlcs" json:"pending_htlcs,omitempty"` PendingHtlcs []*HTLC `protobuf:"bytes,7,rep,name=pending_htlcs" json:"pending_htlcs,omitempty"`
NumUpdates uint64 `protobuf:"varint,8,opt,name=num_updates,json=numUpdates" json:"num_updates,omitempty"` NumUpdates uint64 `protobuf:"varint,8,opt,name=num_updates" json:"num_updates,omitempty"`
} }
func (m *ActiveChannel) Reset() { *m = ActiveChannel{} } func (m *ActiveChannel) Reset() { *m = ActiveChannel{} }
@ -282,13 +287,13 @@ func (m *ActiveChannel) GetPendingHtlcs() []*HTLC {
} }
type Peer struct { type Peer struct {
LightningId string `protobuf:"bytes,1,opt,name=lightning_id,json=lightningId" json:"lightning_id,omitempty"` LightningId string `protobuf:"bytes,1,opt,name=lightning_id" json:"lightning_id,omitempty"`
PeerId int32 `protobuf:"varint,2,opt,name=peer_id,json=peerId" json:"peer_id,omitempty"` PeerId int32 `protobuf:"varint,2,opt,name=peer_id" json:"peer_id,omitempty"`
Address string `protobuf:"bytes,3,opt,name=address" json:"address,omitempty"` Address string `protobuf:"bytes,3,opt,name=address" json:"address,omitempty"`
BytesSent uint64 `protobuf:"varint,4,opt,name=bytes_sent,json=bytesSent" json:"bytes_sent,omitempty"` BytesSent uint64 `protobuf:"varint,4,opt,name=bytes_sent" json:"bytes_sent,omitempty"`
BytesRecv uint64 `protobuf:"varint,5,opt,name=bytes_recv,json=bytesRecv" json:"bytes_recv,omitempty"` BytesRecv uint64 `protobuf:"varint,5,opt,name=bytes_recv" json:"bytes_recv,omitempty"`
SatSent int64 `protobuf:"varint,6,opt,name=sat_sent,json=satSent" json:"sat_sent,omitempty"` SatSent int64 `protobuf:"varint,6,opt,name=sat_sent" json:"sat_sent,omitempty"`
SatRecv int64 `protobuf:"varint,7,opt,name=sat_recv,json=satRecv" json:"sat_recv,omitempty"` SatRecv int64 `protobuf:"varint,7,opt,name=sat_recv" json:"sat_recv,omitempty"`
Inbound bool `protobuf:"varint,8,opt,name=inbound" json:"inbound,omitempty"` Inbound bool `protobuf:"varint,8,opt,name=inbound" json:"inbound,omitempty"`
// TODO(roasbeef): add pending channels // TODO(roasbeef): add pending channels
Channels []*ActiveChannel `protobuf:"bytes,9,rep,name=channels" json:"channels,omitempty"` Channels []*ActiveChannel `protobuf:"bytes,9,rep,name=channels" json:"channels,omitempty"`
@ -339,11 +344,11 @@ func (*GetInfoRequest) ProtoMessage() {}
func (*GetInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} } func (*GetInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
type GetInfoResponse struct { type GetInfoResponse struct {
LightningId string `protobuf:"bytes,1,opt,name=lightning_id,json=lightningId" json:"lightning_id,omitempty"` LightningId string `protobuf:"bytes,1,opt,name=lightning_id" json:"lightning_id,omitempty"`
IdentityAddress string `protobuf:"bytes,2,opt,name=identity_address,json=identityAddress" json:"identity_address,omitempty"` IdentityAddress string `protobuf:"bytes,2,opt,name=identity_address" json:"identity_address,omitempty"`
NumPendingChannels uint32 `protobuf:"varint,3,opt,name=num_pending_channels,json=numPendingChannels" json:"num_pending_channels,omitempty"` NumPendingChannels uint32 `protobuf:"varint,3,opt,name=num_pending_channels" json:"num_pending_channels,omitempty"`
NumActiveChannels uint32 `protobuf:"varint,4,opt,name=num_active_channels,json=numActiveChannels" json:"num_active_channels,omitempty"` NumActiveChannels uint32 `protobuf:"varint,4,opt,name=num_active_channels" json:"num_active_channels,omitempty"`
NumPeers uint32 `protobuf:"varint,5,opt,name=num_peers,json=numPeers" json:"num_peers,omitempty"` NumPeers uint32 `protobuf:"varint,5,opt,name=num_peers" json:"num_peers,omitempty"`
} }
func (m *GetInfoResponse) Reset() { *m = GetInfoResponse{} } func (m *GetInfoResponse) Reset() { *m = GetInfoResponse{} }
@ -352,9 +357,9 @@ func (*GetInfoResponse) ProtoMessage() {}
func (*GetInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} } func (*GetInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
type ConfirmationUpdate struct { type ConfirmationUpdate struct {
BlockSha []byte `protobuf:"bytes,1,opt,name=block_sha,json=blockSha,proto3" json:"block_sha,omitempty"` BlockSha []byte `protobuf:"bytes,1,opt,name=block_sha,proto3" json:"block_sha,omitempty"`
BlockHeight int32 `protobuf:"varint,2,opt,name=block_height,json=blockHeight" json:"block_height,omitempty"` BlockHeight int32 `protobuf:"varint,2,opt,name=block_height" json:"block_height,omitempty"`
NumConfsLeft uint32 `protobuf:"varint,3,opt,name=num_confs_left,json=numConfsLeft" json:"num_confs_left,omitempty"` NumConfsLeft uint32 `protobuf:"varint,3,opt,name=num_confs_left" json:"num_confs_left,omitempty"`
} }
func (m *ConfirmationUpdate) Reset() { *m = ConfirmationUpdate{} } func (m *ConfirmationUpdate) Reset() { *m = ConfirmationUpdate{} }
@ -363,7 +368,7 @@ func (*ConfirmationUpdate) ProtoMessage() {}
func (*ConfirmationUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} } func (*ConfirmationUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
type ChannelOpenUpdate struct { type ChannelOpenUpdate struct {
ChannelPoint *ChannelPoint `protobuf:"bytes,1,opt,name=channel_point,json=channelPoint" json:"channel_point,omitempty"` ChannelPoint *ChannelPoint `protobuf:"bytes,1,opt,name=channel_point" json:"channel_point,omitempty"`
} }
func (m *ChannelOpenUpdate) Reset() { *m = ChannelOpenUpdate{} } func (m *ChannelOpenUpdate) Reset() { *m = ChannelOpenUpdate{} }
@ -379,7 +384,7 @@ func (m *ChannelOpenUpdate) GetChannelPoint() *ChannelPoint {
} }
type ChannelCloseUpdate struct { type ChannelCloseUpdate struct {
ClosingTxid []byte `protobuf:"bytes,1,opt,name=closing_txid,json=closingTxid,proto3" json:"closing_txid,omitempty"` ClosingTxid []byte `protobuf:"bytes,1,opt,name=closing_txid,proto3" json:"closing_txid,omitempty"`
Success bool `protobuf:"varint,2,opt,name=success" json:"success,omitempty"` Success bool `protobuf:"varint,2,opt,name=success" json:"success,omitempty"`
} }
@ -389,8 +394,8 @@ func (*ChannelCloseUpdate) ProtoMessage() {}
func (*ChannelCloseUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} } func (*ChannelCloseUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
type CloseChannelRequest struct { type CloseChannelRequest struct {
ChannelPoint *ChannelPoint `protobuf:"bytes,1,opt,name=channel_point,json=channelPoint" json:"channel_point,omitempty"` ChannelPoint *ChannelPoint `protobuf:"bytes,1,opt,name=channel_point" json:"channel_point,omitempty"`
TimeLimit int64 `protobuf:"varint,2,opt,name=time_limit,json=timeLimit" json:"time_limit,omitempty"` TimeLimit int64 `protobuf:"varint,2,opt,name=time_limit" json:"time_limit,omitempty"`
Force bool `protobuf:"varint,3,opt,name=force" json:"force,omitempty"` Force bool `protobuf:"varint,3,opt,name=force" json:"force,omitempty"`
} }
@ -424,13 +429,13 @@ type isCloseStatusUpdate_Update interface {
} }
type CloseStatusUpdate_ClosePending struct { type CloseStatusUpdate_ClosePending struct {
ClosePending *PendingUpdate `protobuf:"bytes,1,opt,name=close_pending,json=closePending,oneof"` ClosePending *PendingUpdate `protobuf:"bytes,1,opt,name=close_pending,oneof"`
} }
type CloseStatusUpdate_Confirmation struct { type CloseStatusUpdate_Confirmation struct {
Confirmation *ConfirmationUpdate `protobuf:"bytes,2,opt,name=confirmation,oneof"` Confirmation *ConfirmationUpdate `protobuf:"bytes,2,opt,name=confirmation,oneof"`
} }
type CloseStatusUpdate_ChanClose struct { type CloseStatusUpdate_ChanClose struct {
ChanClose *ChannelCloseUpdate `protobuf:"bytes,3,opt,name=chan_close,json=chanClose,oneof"` ChanClose *ChannelCloseUpdate `protobuf:"bytes,3,opt,name=chan_close,oneof"`
} }
func (*CloseStatusUpdate_ClosePending) isCloseStatusUpdate_Update() {} func (*CloseStatusUpdate_ClosePending) isCloseStatusUpdate_Update() {}
@ -568,12 +573,12 @@ func (*PendingUpdate) ProtoMessage() {}
func (*PendingUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} } func (*PendingUpdate) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{24} }
type OpenChannelRequest struct { type OpenChannelRequest struct {
TargetPeerId int32 `protobuf:"varint,1,opt,name=target_peer_id,json=targetPeerId" json:"target_peer_id,omitempty"` TargetPeerId int32 `protobuf:"varint,1,opt,name=target_peer_id" json:"target_peer_id,omitempty"`
TargetNode []byte `protobuf:"bytes,2,opt,name=target_node,json=targetNode,proto3" json:"target_node,omitempty"` TargetNode []byte `protobuf:"bytes,2,opt,name=target_node,proto3" json:"target_node,omitempty"`
LocalFundingAmount int64 `protobuf:"varint,3,opt,name=local_funding_amount,json=localFundingAmount" json:"local_funding_amount,omitempty"` LocalFundingAmount int64 `protobuf:"varint,3,opt,name=local_funding_amount" json:"local_funding_amount,omitempty"`
RemoteFundingAmount int64 `protobuf:"varint,4,opt,name=remote_funding_amount,json=remoteFundingAmount" json:"remote_funding_amount,omitempty"` RemoteFundingAmount int64 `protobuf:"varint,4,opt,name=remote_funding_amount" json:"remote_funding_amount,omitempty"`
CommissionSize int64 `protobuf:"varint,5,opt,name=commission_size,json=commissionSize" json:"commission_size,omitempty"` CommissionSize int64 `protobuf:"varint,5,opt,name=commission_size" json:"commission_size,omitempty"`
NumConfs uint32 `protobuf:"varint,6,opt,name=num_confs,json=numConfs" json:"num_confs,omitempty"` NumConfs uint32 `protobuf:"varint,6,opt,name=num_confs" json:"num_confs,omitempty"`
} }
func (m *OpenChannelRequest) Reset() { *m = OpenChannelRequest{} } func (m *OpenChannelRequest) Reset() { *m = OpenChannelRequest{} }
@ -599,13 +604,13 @@ type isOpenStatusUpdate_Update interface {
} }
type OpenStatusUpdate_ChanPending struct { type OpenStatusUpdate_ChanPending struct {
ChanPending *PendingUpdate `protobuf:"bytes,1,opt,name=chan_pending,json=chanPending,oneof"` ChanPending *PendingUpdate `protobuf:"bytes,1,opt,name=chan_pending,oneof"`
} }
type OpenStatusUpdate_Confirmation struct { type OpenStatusUpdate_Confirmation struct {
Confirmation *ConfirmationUpdate `protobuf:"bytes,2,opt,name=confirmation,oneof"` Confirmation *ConfirmationUpdate `protobuf:"bytes,2,opt,name=confirmation,oneof"`
} }
type OpenStatusUpdate_ChanOpen struct { type OpenStatusUpdate_ChanOpen struct {
ChanOpen *ChannelOpenUpdate `protobuf:"bytes,3,opt,name=chan_open,json=chanOpen,oneof"` ChanOpen *ChannelOpenUpdate `protobuf:"bytes,3,opt,name=chan_open,oneof"`
} }
func (*OpenStatusUpdate_ChanPending) isOpenStatusUpdate_Update() {} func (*OpenStatusUpdate_ChanPending) isOpenStatusUpdate_Update() {}
@ -743,7 +748,7 @@ func (*PendingChannelRequest) ProtoMessage() {}
func (*PendingChannelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} } func (*PendingChannelRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
type PendingChannelResponse struct { type PendingChannelResponse struct {
PendingChannels []*PendingChannelResponse_PendingChannel `protobuf:"bytes,1,rep,name=pending_channels,json=pendingChannels" json:"pending_channels,omitempty"` PendingChannels []*PendingChannelResponse_PendingChannel `protobuf:"bytes,1,rep,name=pending_channels" json:"pending_channels,omitempty"`
} }
func (m *PendingChannelResponse) Reset() { *m = PendingChannelResponse{} } func (m *PendingChannelResponse) Reset() { *m = PendingChannelResponse{} }
@ -759,13 +764,13 @@ func (m *PendingChannelResponse) GetPendingChannels() []*PendingChannelResponse_
} }
type PendingChannelResponse_PendingChannel struct { type PendingChannelResponse_PendingChannel struct {
PeerId int32 `protobuf:"varint,1,opt,name=peer_id,json=peerId" json:"peer_id,omitempty"` PeerId int32 `protobuf:"varint,1,opt,name=peer_id" json:"peer_id,omitempty"`
LightningId string `protobuf:"bytes,2,opt,name=lightning_id,json=lightningId" json:"lightning_id,omitempty"` LightningId string `protobuf:"bytes,2,opt,name=lightning_id" json:"lightning_id,omitempty"`
ChannelPoint string `protobuf:"bytes,3,opt,name=channel_point,json=channelPoint" json:"channel_point,omitempty"` ChannelPoint string `protobuf:"bytes,3,opt,name=channel_point" json:"channel_point,omitempty"`
Capacity int64 `protobuf:"varint,4,opt,name=capacity" json:"capacity,omitempty"` Capacity int64 `protobuf:"varint,4,opt,name=capacity" json:"capacity,omitempty"`
LocalBalance int64 `protobuf:"varint,5,opt,name=local_balance,json=localBalance" json:"local_balance,omitempty"` LocalBalance int64 `protobuf:"varint,5,opt,name=local_balance" json:"local_balance,omitempty"`
RemoteBalance int64 `protobuf:"varint,6,opt,name=remote_balance,json=remoteBalance" json:"remote_balance,omitempty"` RemoteBalance int64 `protobuf:"varint,6,opt,name=remote_balance" json:"remote_balance,omitempty"`
ClosingTxid string `protobuf:"bytes,7,opt,name=closing_txid,json=closingTxid" json:"closing_txid,omitempty"` ClosingTxid string `protobuf:"bytes,7,opt,name=closing_txid" json:"closing_txid,omitempty"`
Status ChannelStatus `protobuf:"varint,8,opt,name=status,enum=lnrpc.ChannelStatus" json:"status,omitempty"` Status ChannelStatus `protobuf:"varint,8,opt,name=status,enum=lnrpc.ChannelStatus" json:"status,omitempty"`
} }
@ -777,7 +782,7 @@ func (*PendingChannelResponse_PendingChannel) Descriptor() ([]byte, []int) {
} }
type WalletBalanceRequest struct { type WalletBalanceRequest struct {
WitnessOnly bool `protobuf:"varint,1,opt,name=witness_only,json=witnessOnly" json:"witness_only,omitempty"` WitnessOnly bool `protobuf:"varint,1,opt,name=witness_only" json:"witness_only,omitempty"`
} }
func (m *WalletBalanceRequest) Reset() { *m = WalletBalanceRequest{} } func (m *WalletBalanceRequest) Reset() { *m = WalletBalanceRequest{} }
@ -848,6 +853,62 @@ func (m *ShowRoutingTableResponse) GetChannels() []*RoutingTableLink {
return nil return nil
} }
type Invoice struct {
Memo string `protobuf:"bytes,1,opt,name=memo" json:"memo,omitempty"`
Receipt []byte `protobuf:"bytes,2,opt,name=receipt,proto3" json:"receipt,omitempty"`
RPreimage []byte `protobuf:"bytes,3,opt,name=r_preimage,proto3" json:"r_preimage,omitempty"`
RHash []byte `protobuf:"bytes,4,opt,name=r_hash,proto3" json:"r_hash,omitempty"`
Value int64 `protobuf:"varint,5,opt,name=value" json:"value,omitempty"`
}
func (m *Invoice) Reset() { *m = Invoice{} }
func (m *Invoice) String() string { return proto.CompactTextString(m) }
func (*Invoice) ProtoMessage() {}
func (*Invoice) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }
type AddInvoiceResponse struct {
RHash []byte `protobuf:"bytes,1,opt,name=r_hash,proto3" json:"r_hash,omitempty"`
}
func (m *AddInvoiceResponse) Reset() { *m = AddInvoiceResponse{} }
func (m *AddInvoiceResponse) String() string { return proto.CompactTextString(m) }
func (*AddInvoiceResponse) ProtoMessage() {}
func (*AddInvoiceResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }
type PaymentHash struct {
RHash []byte `protobuf:"bytes,1,opt,name=r_hash,proto3" json:"r_hash,omitempty"`
}
func (m *PaymentHash) Reset() { *m = PaymentHash{} }
func (m *PaymentHash) String() string { return proto.CompactTextString(m) }
func (*PaymentHash) ProtoMessage() {}
func (*PaymentHash) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }
type ListInvoiceRequest struct {
PendingOnly bool `protobuf:"varint,1,opt,name=pending_only" json:"pending_only,omitempty"`
}
func (m *ListInvoiceRequest) Reset() { *m = ListInvoiceRequest{} }
func (m *ListInvoiceRequest) String() string { return proto.CompactTextString(m) }
func (*ListInvoiceRequest) ProtoMessage() {}
func (*ListInvoiceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }
type ListInvoiceResponse struct {
Invoices []*Invoice `protobuf:"bytes,1,rep,name=invoices" json:"invoices,omitempty"`
}
func (m *ListInvoiceResponse) Reset() { *m = ListInvoiceResponse{} }
func (m *ListInvoiceResponse) String() string { return proto.CompactTextString(m) }
func (*ListInvoiceResponse) ProtoMessage() {}
func (*ListInvoiceResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{40} }
func (m *ListInvoiceResponse) GetInvoices() []*Invoice {
if m != nil {
return m.Invoices
}
return nil
}
func init() { func init() {
proto.RegisterType((*SendRequest)(nil), "lnrpc.SendRequest") proto.RegisterType((*SendRequest)(nil), "lnrpc.SendRequest")
proto.RegisterType((*SendResponse)(nil), "lnrpc.SendResponse") proto.RegisterType((*SendResponse)(nil), "lnrpc.SendResponse")
@ -886,6 +947,11 @@ func init() {
proto.RegisterType((*RoutingTableLink)(nil), "lnrpc.RoutingTableLink") proto.RegisterType((*RoutingTableLink)(nil), "lnrpc.RoutingTableLink")
proto.RegisterType((*ShowRoutingTableRequest)(nil), "lnrpc.ShowRoutingTableRequest") proto.RegisterType((*ShowRoutingTableRequest)(nil), "lnrpc.ShowRoutingTableRequest")
proto.RegisterType((*ShowRoutingTableResponse)(nil), "lnrpc.ShowRoutingTableResponse") proto.RegisterType((*ShowRoutingTableResponse)(nil), "lnrpc.ShowRoutingTableResponse")
proto.RegisterType((*Invoice)(nil), "lnrpc.Invoice")
proto.RegisterType((*AddInvoiceResponse)(nil), "lnrpc.AddInvoiceResponse")
proto.RegisterType((*PaymentHash)(nil), "lnrpc.PaymentHash")
proto.RegisterType((*ListInvoiceRequest)(nil), "lnrpc.ListInvoiceRequest")
proto.RegisterType((*ListInvoiceResponse)(nil), "lnrpc.ListInvoiceResponse")
proto.RegisterEnum("lnrpc.ChannelStatus", ChannelStatus_name, ChannelStatus_value) proto.RegisterEnum("lnrpc.ChannelStatus", ChannelStatus_name, ChannelStatus_value)
proto.RegisterEnum("lnrpc.NewAddressRequest_AddressType", NewAddressRequest_AddressType_name, NewAddressRequest_AddressType_value) proto.RegisterEnum("lnrpc.NewAddressRequest_AddressType", NewAddressRequest_AddressType_name, NewAddressRequest_AddressType_value)
} }
@ -913,6 +979,9 @@ type LightningClient interface {
CloseChannel(ctx context.Context, in *CloseChannelRequest, opts ...grpc.CallOption) (Lightning_CloseChannelClient, error) CloseChannel(ctx context.Context, in *CloseChannelRequest, opts ...grpc.CallOption) (Lightning_CloseChannelClient, error)
PendingChannels(ctx context.Context, in *PendingChannelRequest, opts ...grpc.CallOption) (*PendingChannelResponse, error) PendingChannels(ctx context.Context, in *PendingChannelRequest, opts ...grpc.CallOption) (*PendingChannelResponse, error)
SendPayment(ctx context.Context, opts ...grpc.CallOption) (Lightning_SendPaymentClient, error) SendPayment(ctx context.Context, opts ...grpc.CallOption) (Lightning_SendPaymentClient, error)
AddInvoice(ctx context.Context, in *Invoice, opts ...grpc.CallOption) (*AddInvoiceResponse, error)
LookupInvoice(ctx context.Context, in *PaymentHash, opts ...grpc.CallOption) (*Invoice, error)
ListInvoices(ctx context.Context, in *ListInvoiceRequest, opts ...grpc.CallOption) (*ListInvoiceResponse, error)
ShowRoutingTable(ctx context.Context, in *ShowRoutingTableRequest, opts ...grpc.CallOption) (*ShowRoutingTableResponse, error) ShowRoutingTable(ctx context.Context, in *ShowRoutingTableRequest, opts ...grpc.CallOption) (*ShowRoutingTableResponse, error)
} }
@ -1100,6 +1169,33 @@ func (x *lightningSendPaymentClient) Recv() (*SendResponse, error) {
return m, nil return m, nil
} }
func (c *lightningClient) AddInvoice(ctx context.Context, in *Invoice, opts ...grpc.CallOption) (*AddInvoiceResponse, error) {
out := new(AddInvoiceResponse)
err := grpc.Invoke(ctx, "/lnrpc.Lightning/AddInvoice", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *lightningClient) LookupInvoice(ctx context.Context, in *PaymentHash, opts ...grpc.CallOption) (*Invoice, error) {
out := new(Invoice)
err := grpc.Invoke(ctx, "/lnrpc.Lightning/LookupInvoice", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *lightningClient) ListInvoices(ctx context.Context, in *ListInvoiceRequest, opts ...grpc.CallOption) (*ListInvoiceResponse, error) {
out := new(ListInvoiceResponse)
err := grpc.Invoke(ctx, "/lnrpc.Lightning/ListInvoices", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *lightningClient) ShowRoutingTable(ctx context.Context, in *ShowRoutingTableRequest, opts ...grpc.CallOption) (*ShowRoutingTableResponse, error) { func (c *lightningClient) ShowRoutingTable(ctx context.Context, in *ShowRoutingTableRequest, opts ...grpc.CallOption) (*ShowRoutingTableResponse, error) {
out := new(ShowRoutingTableResponse) out := new(ShowRoutingTableResponse)
err := grpc.Invoke(ctx, "/lnrpc.Lightning/ShowRoutingTable", in, out, c.cc, opts...) err := grpc.Invoke(ctx, "/lnrpc.Lightning/ShowRoutingTable", in, out, c.cc, opts...)
@ -1124,6 +1220,9 @@ type LightningServer interface {
CloseChannel(*CloseChannelRequest, Lightning_CloseChannelServer) error CloseChannel(*CloseChannelRequest, Lightning_CloseChannelServer) error
PendingChannels(context.Context, *PendingChannelRequest) (*PendingChannelResponse, error) PendingChannels(context.Context, *PendingChannelRequest) (*PendingChannelResponse, error)
SendPayment(Lightning_SendPaymentServer) error SendPayment(Lightning_SendPaymentServer) error
AddInvoice(context.Context, *Invoice) (*AddInvoiceResponse, error)
LookupInvoice(context.Context, *PaymentHash) (*Invoice, error)
ListInvoices(context.Context, *ListInvoiceRequest) (*ListInvoiceResponse, error)
ShowRoutingTable(context.Context, *ShowRoutingTableRequest) (*ShowRoutingTableResponse, error) ShowRoutingTable(context.Context, *ShowRoutingTableRequest) (*ShowRoutingTableResponse, error)
} }
@ -1361,6 +1460,60 @@ func (x *lightningSendPaymentServer) Recv() (*SendRequest, error) {
return m, nil return m, nil
} }
func _Lightning_AddInvoice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(Invoice)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(LightningServer).AddInvoice(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/lnrpc.Lightning/AddInvoice",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(LightningServer).AddInvoice(ctx, req.(*Invoice))
}
return interceptor(ctx, in, info, handler)
}
func _Lightning_LookupInvoice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(PaymentHash)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(LightningServer).LookupInvoice(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/lnrpc.Lightning/LookupInvoice",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(LightningServer).LookupInvoice(ctx, req.(*PaymentHash))
}
return interceptor(ctx, in, info, handler)
}
func _Lightning_ListInvoices_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListInvoiceRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(LightningServer).ListInvoices(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/lnrpc.Lightning/ListInvoices",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(LightningServer).ListInvoices(ctx, req.(*ListInvoiceRequest))
}
return interceptor(ctx, in, info, handler)
}
func _Lightning_ShowRoutingTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { func _Lightning_ShowRoutingTable_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ShowRoutingTableRequest) in := new(ShowRoutingTableRequest)
if err := dec(in); err != nil { if err := dec(in); err != nil {
@ -1419,6 +1572,18 @@ var _Lightning_serviceDesc = grpc.ServiceDesc{
MethodName: "PendingChannels", MethodName: "PendingChannels",
Handler: _Lightning_PendingChannels_Handler, Handler: _Lightning_PendingChannels_Handler,
}, },
{
MethodName: "AddInvoice",
Handler: _Lightning_AddInvoice_Handler,
},
{
MethodName: "LookupInvoice",
Handler: _Lightning_LookupInvoice_Handler,
},
{
MethodName: "ListInvoices",
Handler: _Lightning_ListInvoices_Handler,
},
{ {
MethodName: "ShowRoutingTable", MethodName: "ShowRoutingTable",
Handler: _Lightning_ShowRoutingTable_Handler, Handler: _Lightning_ShowRoutingTable_Handler,
@ -1448,122 +1613,113 @@ var _Lightning_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("rpc.proto", fileDescriptor0) } func init() { proto.RegisterFile("rpc.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{ var fileDescriptor0 = []byte{
// 1863 bytes of a gzipped FileDescriptorProto // 1713 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x58, 0x5f, 0x73, 0xd3, 0xca, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x58, 0x4b, 0x6f, 0x1b, 0x47,
0x15, 0xbf, 0xfe, 0x17, 0xdb, 0x47, 0x8e, 0xe3, 0x6c, 0xfe, 0x39, 0xbe, 0xdc, 0x4b, 0x51, 0x69, 0x12, 0x36, 0x45, 0x52, 0x24, 0x8b, 0x0f, 0x51, 0xad, 0x17, 0x45, 0x5b, 0xbb, 0xde, 0x81, 0x6d,
0x49, 0x0b, 0x93, 0x01, 0x33, 0xd3, 0x06, 0x98, 0x81, 0x49, 0x42, 0x20, 0x29, 0x26, 0x49, 0xe5, 0xc8, 0x86, 0x2d, 0xdb, 0xf4, 0x02, 0x36, 0x6c, 0xac, 0x17, 0xb2, 0xac, 0xb5, 0xb4, 0x96, 0x25,
0x30, 0x4c, 0x9f, 0x54, 0x59, 0xde, 0x60, 0x0d, 0xb2, 0xe4, 0x5a, 0x6b, 0x82, 0x79, 0xee, 0xb4, 0xc5, 0x94, 0x61, 0x04, 0x39, 0x4c, 0x86, 0xc3, 0x96, 0x38, 0xd0, 0x70, 0x86, 0xe1, 0x34, 0x25,
0x5f, 0xa0, 0x8f, 0x1d, 0xa6, 0xcf, 0xfd, 0x06, 0xfd, 0x18, 0x7d, 0xea, 0x5b, 0x3f, 0x4b, 0xcf, 0x33, 0x3f, 0x20, 0xd7, 0x5c, 0xf3, 0x1b, 0x82, 0x20, 0xc8, 0x7f, 0xc8, 0x29, 0x08, 0x90, 0xdf,
0xfe, 0x93, 0x25, 0xd9, 0x01, 0xa6, 0x73, 0x9f, 0xac, 0xfd, 0xed, 0xd9, 0xb3, 0xe7, 0xff, 0x39, 0x94, 0xea, 0xd7, 0x3c, 0x29, 0x03, 0x39, 0xe4, 0x44, 0x4c, 0x75, 0x75, 0x3d, 0xbe, 0xae, 0xfe,
0x6b, 0xa8, 0x8e, 0x47, 0xee, 0xee, 0x68, 0x1c, 0xb2, 0x90, 0x94, 0xfc, 0x00, 0x17, 0x66, 0x04, 0xaa, 0x9a, 0x50, 0x19, 0x8f, 0xec, 0xad, 0xd1, 0xd8, 0x67, 0x3e, 0x29, 0xba, 0x1e, 0x7e, 0x18,
0x46, 0x97, 0x06, 0x7d, 0x8b, 0xfe, 0x69, 0x42, 0x23, 0x46, 0x08, 0x14, 0xfb, 0xf8, 0xdb, 0xcc, 0x5f, 0x40, 0xb5, 0x4b, 0xbd, 0xfe, 0x7b, 0xfa, 0xcd, 0x84, 0x06, 0x8c, 0xd4, 0xa0, 0xd0, 0xc7,
0xfd, 0x2c, 0xb7, 0x53, 0xb3, 0xc4, 0x37, 0x69, 0x40, 0xc1, 0x19, 0xb2, 0x66, 0x1e, 0xa1, 0x82, 0xdf, 0x56, 0xee, 0x66, 0x6e, 0xb3, 0x46, 0xaa, 0x90, 0xb7, 0x86, 0xac, 0x35, 0x87, 0x1f, 0x79,
0xc5, 0x3f, 0xc9, 0x2d, 0xa8, 0x8d, 0x9c, 0xe9, 0x90, 0x06, 0xcc, 0x1e, 0x38, 0xd1, 0xa0, 0x59, 0xb2, 0x0c, 0xb5, 0x91, 0x35, 0x1d, 0x52, 0x8f, 0x99, 0x03, 0x2b, 0x18, 0xb4, 0xf2, 0x42, 0x65,
0x10, 0xd4, 0x86, 0xc2, 0x8e, 0x11, 0x22, 0xdf, 0x43, 0xf5, 0xd2, 0x89, 0x98, 0x1d, 0x21, 0xf3, 0x11, 0x2a, 0xa7, 0x56, 0xc0, 0xcc, 0x00, 0x8d, 0xb4, 0x0a, 0x28, 0x2a, 0x1b, 0x0d, 0xa8, 0x49,
0x66, 0x11, 0xf7, 0x2b, 0x56, 0x85, 0x03, 0xfc, 0x32, 0xb3, 0x0e, 0x35, 0x79, 0x69, 0x34, 0x0a, 0x93, 0xc1, 0xc8, 0xf7, 0x02, 0x6a, 0x3c, 0x87, 0xda, 0xce, 0xc0, 0xf2, 0x3c, 0xea, 0x1e, 0xfb,
0x83, 0x88, 0x9a, 0x17, 0x50, 0x3b, 0x1c, 0x38, 0x41, 0x40, 0xfd, 0xf3, 0xd0, 0x0b, 0x04, 0xff, 0x8e, 0xc7, 0xb8, 0xa1, 0xd3, 0x89, 0xd7, 0x77, 0xbc, 0x33, 0x93, 0x7d, 0x72, 0xfa, 0xca, 0x17,
0xcb, 0x49, 0xd0, 0xf7, 0x82, 0x77, 0x36, 0xfb, 0xe8, 0xf5, 0x95, 0x34, 0x86, 0xc2, 0x2e, 0x10, 0x4a, 0xfd, 0x09, 0x1b, 0x4d, 0x98, 0xe9, 0x78, 0x7d, 0xfa, 0x49, 0x38, 0xad, 0x1b, 0xff, 0x86,
0xe2, 0x24, 0xe1, 0x84, 0x8d, 0x26, 0xcc, 0xf6, 0x82, 0x3e, 0xfd, 0x28, 0xa4, 0x5b, 0xb6, 0x0c, 0xe6, 0x81, 0x73, 0x36, 0x60, 0x1e, 0x6a, 0x6f, 0xf7, 0xfb, 0x63, 0x1a, 0x04, 0x84, 0x00, 0x8c,
0x89, 0x9d, 0x70, 0xc8, 0x7c, 0x01, 0x8d, 0x8e, 0xf7, 0x6e, 0xc0, 0x02, 0x3c, 0xb3, 0xdf, 0xef, 0x26, 0xbd, 0xb7, 0x74, 0xba, 0xc7, 0xc3, 0xe0, 0xbb, 0x2b, 0x3c, 0xee, 0x81, 0x1f, 0xc8, 0x50,
0x8f, 0x69, 0x14, 0x91, 0x1f, 0x01, 0x46, 0x93, 0xde, 0x2b, 0x3a, 0xe5, 0x42, 0x0a, 0xbe, 0x55, 0x2b, 0xc6, 0x77, 0x39, 0x58, 0xe0, 0x21, 0xbc, 0xb3, 0xbc, 0xa9, 0xce, 0xec, 0x25, 0xd4, 0xb8,
0x2b, 0x81, 0x70, 0xfd, 0x07, 0x61, 0x24, 0x95, 0xad, 0x5a, 0xe2, 0xdb, 0xfc, 0x47, 0x0e, 0x56, 0x81, 0x13, 0x7f, 0x7b, 0xe8, 0x4f, 0x3c, 0x9e, 0x61, 0x7e, 0xb3, 0xda, 0xd9, 0xdc, 0x12, 0x30,
0xb8, 0xb8, 0xaf, 0x9d, 0x60, 0xaa, 0xed, 0xd4, 0x81, 0x1a, 0x67, 0x79, 0x11, 0xee, 0x0f, 0xc3, 0x6c, 0xa5, 0xb4, 0xb7, 0xe2, 0xaa, 0xbb, 0x1e, 0x1b, 0x4f, 0xdb, 0x4f, 0x60, 0x31, 0x23, 0xe4,
0x49, 0xc0, 0xed, 0x55, 0xd8, 0x31, 0xda, 0x3b, 0xbb, 0xc2, 0xa8, 0xbb, 0x19, 0xea, 0xdd, 0x24, 0x00, 0x9d, 0xd3, 0xa9, 0x8a, 0xa1, 0x0e, 0xc5, 0x0b, 0xcb, 0x9d, 0x50, 0x89, 0xd7, 0xf3, 0xb9,
0xe9, 0x51, 0xc0, 0xc6, 0x53, 0xab, 0xe6, 0x24, 0xa0, 0xd6, 0x33, 0x58, 0x9d, 0x23, 0xe1, 0x66, 0x67, 0x39, 0xe3, 0x26, 0x34, 0x23, 0xcb, 0x12, 0x0e, 0x1e, 0x6a, 0x98, 0x76, 0xc5, 0x78, 0x24,
0x7f, 0x4f, 0xa7, 0x4a, 0x46, 0xfe, 0x49, 0xd6, 0xa1, 0xf4, 0xc1, 0xf1, 0x27, 0x54, 0xb9, 0x42, 0x35, 0x76, 0x10, 0x99, 0x20, 0x76, 0x08, 0x16, 0xba, 0x52, 0x66, 0x1b, 0x30, 0x6f, 0xc9, 0x90,
0x2e, 0x1e, 0xe7, 0xf7, 0x72, 0xe6, 0x2f, 0xa1, 0x31, 0xbb, 0x53, 0x1a, 0x95, 0xab, 0x12, 0x1b, 0x85, 0x5d, 0xe3, 0x5f, 0xb0, 0x18, 0xdb, 0x31, 0xd3, 0xe8, 0x0f, 0x39, 0x58, 0x3c, 0xa4, 0x97,
0x0f, 0x55, 0xe1, 0xdf, 0xe6, 0x53, 0x49, 0x77, 0x88, 0x56, 0x8e, 0x12, 0x2e, 0xe7, 0xc2, 0x68, 0x0a, 0x30, 0x6d, 0xb6, 0x83, 0x3a, 0xd3, 0x11, 0x15, 0x3a, 0x8d, 0xce, 0x2d, 0x95, 0x79, 0x46,
0x3a, 0xfe, 0x4d, 0x36, 0x61, 0xc9, 0x91, 0x8a, 0xc9, 0xab, 0xd4, 0xca, 0xbc, 0x03, 0xab, 0x89, 0x6f, 0x4b, 0x7d, 0x9e, 0xa0, 0xae, 0x71, 0x04, 0xd5, 0xd8, 0x27, 0x59, 0x83, 0xa5, 0x8f, 0xfb,
0xf3, 0x5f, 0xb8, 0xe8, 0x73, 0x0e, 0x56, 0x4f, 0xe9, 0x95, 0x32, 0xbb, 0xbe, 0x6a, 0x0f, 0x29, 0x27, 0x87, 0xbb, 0xdd, 0xae, 0x79, 0xfc, 0xe1, 0xd5, 0xdb, 0xdd, 0x2f, 0xcd, 0xbd, 0xed, 0xee,
0xa7, 0x23, 0x2a, 0x28, 0xeb, 0xed, 0xdb, 0xca, 0x5a, 0x73, 0x74, 0xbb, 0x6a, 0x79, 0x81, 0xb4, 0x5e, 0xf3, 0x1a, 0x59, 0x05, 0x82, 0xd2, 0x93, 0xdd, 0xd7, 0x09, 0x79, 0x8e, 0x2c, 0x40, 0x35,
0x96, 0x38, 0x61, 0x9e, 0x81, 0x91, 0x00, 0xc9, 0x16, 0xac, 0xbd, 0x3d, 0xb9, 0x38, 0x3d, 0xea, 0x2e, 0x98, 0x33, 0x6e, 0xa3, 0x62, 0xcc, 0xa3, 0x0a, 0x7f, 0x01, 0x4a, 0x96, 0x14, 0xa9, 0x0c,
0x76, 0xed, 0xf3, 0x37, 0x07, 0xaf, 0x8e, 0xfe, 0x60, 0x1f, 0xef, 0x77, 0x8f, 0x1b, 0xdf, 0xa1, 0x5e, 0x00, 0xd9, 0xf1, 0xb1, 0x64, 0x6c, 0x76, 0x4c, 0xe9, 0x58, 0x67, 0x70, 0x3b, 0x06, 0x4c,
0xe0, 0x04, 0xd1, 0x8b, 0xa3, 0xe7, 0x29, 0x3c, 0x47, 0x56, 0xc0, 0x48, 0x02, 0x79, 0x73, 0x17, 0xb5, 0xb3, 0xa6, 0x32, 0x48, 0x17, 0x88, 0x71, 0x07, 0x96, 0x12, 0x9b, 0x23, 0x27, 0x23, 0xfc,
0x09, 0x13, 0xf7, 0x2a, 0x55, 0x9a, 0x50, 0x76, 0x24, 0xa4, 0xb4, 0xd1, 0x4b, 0x73, 0x1f, 0xc8, 0x36, 0x15, 0x4c, 0x45, 0xe3, 0x35, 0x14, 0xf6, 0x4e, 0x0e, 0x76, 0xb0, 0x9e, 0xe6, 0x94, 0x2c,
0x61, 0x88, 0x11, 0xea, 0xb2, 0x73, 0x4a, 0xc7, 0x5a, 0xa1, 0xbb, 0x09, 0xdb, 0x19, 0xed, 0x2d, 0x9f, 0x46, 0x9b, 0xd7, 0x37, 0xaf, 0x76, 0xd3, 0xf5, 0xed, 0x73, 0x55, 0xf2, 0x78, 0xce, 0xcc,
0xa5, 0x50, 0x36, 0xea, 0xa4, 0x51, 0xf1, 0xca, 0xb5, 0x14, 0x0b, 0x75, 0xe7, 0x16, 0x94, 0x47, 0x37, 0x27, 0x81, 0x2a, 0xf7, 0x3f, 0x72, 0x50, 0xdf, 0xb6, 0x99, 0x73, 0x41, 0x55, 0x95, 0xf3,
0xb8, 0xb6, 0x95, 0x05, 0x4b, 0xd6, 0x12, 0x5f, 0x9e, 0xf4, 0xcd, 0x3f, 0x42, 0xf1, 0xf8, 0xa2, 0x3d, 0x63, 0x3a, 0xf4, 0x19, 0xd5, 0xae, 0x2a, 0x64, 0x05, 0xea, 0xb6, 0x5c, 0x35, 0x47, 0xfc,
0x73, 0x48, 0xea, 0x90, 0x57, 0x7b, 0x05, 0x0b, 0xbf, 0xae, 0x73, 0x0e, 0x4f, 0x39, 0x9e, 0x8d, 0x12, 0xc8, 0x42, 0x25, 0x4d, 0x28, 0xdb, 0xd6, 0xc8, 0xb2, 0x1d, 0x36, 0x15, 0xc6, 0xf3, 0x5c,
0xb6, 0x1f, 0xba, 0xef, 0x55, 0x4a, 0x56, 0x38, 0xd0, 0xc1, 0x35, 0x59, 0x83, 0x12, 0x0b, 0xed, 0x11, 0x5d, 0x59, 0xae, 0xd9, 0xb3, 0x5c, 0xcb, 0xb3, 0xa9, 0x70, 0x92, 0x47, 0x7c, 0x1b, 0xca,
0x49, 0xa4, 0x72, 0xb1, 0xc8, 0xc2, 0x37, 0x91, 0xf9, 0xaf, 0x3c, 0x2c, 0xef, 0xbb, 0xcc, 0xfb, 0xa4, 0x96, 0x17, 0x85, 0x7c, 0x1d, 0x16, 0x27, 0x98, 0x1b, 0x63, 0x2e, 0xed, 0x9b, 0x3d, 0x2a,
0x40, 0x55, 0xfa, 0x71, 0x1e, 0x63, 0x3a, 0x0c, 0x19, 0xb5, 0x63, 0x87, 0x56, 0x24, 0x70, 0xd2, 0x97, 0xe6, 0xc5, 0x92, 0x01, 0xf5, 0x11, 0x95, 0xd7, 0x6c, 0xc0, 0x5c, 0x3b, 0x68, 0x95, 0x44,
0x27, 0x3f, 0x87, 0x65, 0x57, 0xd2, 0xd9, 0x23, 0x9e, 0xa7, 0x2a, 0x4b, 0x6a, 0x6e, 0x32, 0x77, 0xc5, 0x57, 0x15, 0x6a, 0x22, 0xf3, 0x25, 0xa8, 0x7a, 0x93, 0xa1, 0x39, 0x19, 0xf5, 0x2d, 0x46,
0x5b, 0x50, 0x71, 0x9d, 0x91, 0xe3, 0x7a, 0x6c, 0x2a, 0x84, 0x28, 0x58, 0xf1, 0x9a, 0x33, 0x40, 0x83, 0x56, 0x19, 0x37, 0x16, 0x8c, 0x5f, 0x73, 0x50, 0xe0, 0xc0, 0xf1, 0x2b, 0xe9, 0x6a, 0x6c,
0xe1, 0x1c, 0xdf, 0xee, 0x39, 0xbe, 0x13, 0xb8, 0x54, 0x08, 0x53, 0xb0, 0x6a, 0x02, 0x3c, 0x90, 0xa3, 0x54, 0x62, 0x30, 0xf2, 0x24, 0x8a, 0xf1, 0xc3, 0xcb, 0x0b, 0x0d, 0x04, 0xb4, 0x37, 0x45,
0x18, 0xf9, 0x05, 0xd4, 0x95, 0x08, 0x9a, 0xaa, 0x24, 0xa8, 0x96, 0x25, 0xaa, 0xc9, 0xee, 0xc2, 0x7b, 0x9c, 0x14, 0x98, 0x48, 0xa0, 0x10, 0xc9, 0xc6, 0xd4, 0xbe, 0x10, 0xc1, 0x17, 0x78, 0xf6,
0xea, 0x04, 0xcd, 0xc7, 0x98, 0x4f, 0xfb, 0x76, 0x8f, 0x4a, 0xca, 0x25, 0x41, 0xd9, 0x88, 0x37, 0x81, 0xc5, 0xa4, 0x96, 0x8c, 0x59, 0x49, 0x84, 0x4e, 0x49, 0x48, 0xd0, 0xb8, 0xe3, 0xf5, 0xf0,
0x0e, 0x24, 0x4e, 0xee, 0xc3, 0xf2, 0x88, 0xca, 0x82, 0x32, 0x60, 0xbe, 0x1b, 0x35, 0xcb, 0x22, 0x40, 0xfa, 0x22, 0xba, 0x32, 0xb9, 0x83, 0x90, 0x49, 0x24, 0x83, 0x56, 0x45, 0x64, 0xb4, 0xac,
0x5f, 0x0d, 0xe5, 0x30, 0x6e, 0x66, 0xab, 0xa6, 0x28, 0x8e, 0x39, 0x01, 0xb9, 0x09, 0x46, 0x30, 0x32, 0x4a, 0x1c, 0x82, 0x41, 0x38, 0x73, 0x04, 0xa2, 0x02, 0x74, 0x65, 0x1b, 0x0f, 0x61, 0x31,
0x19, 0xda, 0x93, 0x51, 0xdf, 0x61, 0x34, 0x6a, 0x56, 0x90, 0x71, 0xd1, 0x02, 0x84, 0xde, 0x48, 0x26, 0x53, 0x65, 0xd1, 0x86, 0x22, 0xcf, 0x27, 0x50, 0x8c, 0xa0, 0xf1, 0xe1, 0x4a, 0x46, 0x13,
0xc4, 0xfc, 0x7b, 0x1e, 0x8a, 0xdc, 0x8f, 0xbc, 0x12, 0xf9, 0xda, 0xe1, 0x33, 0xab, 0x19, 0x31, 0x1a, 0x6f, 0x28, 0xdb, 0xf7, 0x4e, 0x7d, 0x6d, 0xe2, 0x7b, 0xa4, 0x96, 0x50, 0xa4, 0x2c, 0xcc,
0x86, 0x86, 0x4b, 0xb8, 0x38, 0x9f, 0x74, 0x71, 0x32, 0xde, 0x0a, 0xa9, 0x78, 0x23, 0x3f, 0x00, 0xc6, 0xa9, 0x05, 0x4d, 0xa7, 0x8f, 0xa9, 0xe1, 0xd9, 0x9a, 0x1a, 0x1f, 0x79, 0xea, 0x37, 0x60,
0xf4, 0xa6, 0x78, 0x0f, 0x2f, 0xa0, 0x4c, 0xd8, 0xa9, 0x68, 0x55, 0x05, 0x82, 0x09, 0xc8, 0x66, 0x99, 0xa3, 0xae, 0x4f, 0x27, 0x4c, 0x87, 0xa3, 0x57, 0x27, 0xd7, 0x61, 0x89, 0xaf, 0x5a, 0x22,
0xdb, 0x63, 0xea, 0x7e, 0x10, 0x06, 0xd2, 0xdb, 0x16, 0x02, 0x64, 0x1b, 0x2a, 0x91, 0xc3, 0xe4, 0x9b, 0x68, 0xb1, 0x20, 0x16, 0xb1, 0xb4, 0xe4, 0x56, 0x1e, 0x70, 0x51, 0x50, 0xe4, 0x07, 0x71,
0x59, 0x69, 0x93, 0x32, 0xae, 0xc5, 0x49, 0xb5, 0x25, 0xce, 0x95, 0xe3, 0x2d, 0x71, 0x0a, 0xa5, 0x55, 0x4e, 0x9d, 0xf1, 0xd0, 0x62, 0x8e, 0xef, 0x7d, 0x10, 0x67, 0xc9, 0x15, 0x7b, 0xbc, 0x66,
0xf1, 0x82, 0x1e, 0xc6, 0x52, 0x5f, 0xe8, 0x5b, 0xb1, 0xf4, 0x12, 0xed, 0x57, 0x51, 0x4e, 0x8e, 0xcd, 0x60, 0x60, 0x45, 0x0c, 0x2b, 0x45, 0x03, 0xca, 0xa3, 0x55, 0xa7, 0x87, 0x95, 0xc5, 0x2d,
0x9a, 0x55, 0x61, 0xba, 0x75, 0x65, 0xba, 0x54, 0xf8, 0x58, 0x31, 0x95, 0x49, 0x78, 0xf1, 0x8d, 0xda, 0x68, 0x22, 0x30, 0x5d, 0x7a, 0xca, 0x64, 0x18, 0xc6, 0x7f, 0x61, 0x51, 0x41, 0x79, 0x84,
0x44, 0xa4, 0xeb, 0xb4, 0x36, 0x7f, 0x03, 0xab, 0x09, 0x4c, 0x85, 0xff, 0x2d, 0x28, 0x71, 0x63, 0x81, 0x2a, 0xab, 0xf7, 0xd2, 0x65, 0x2c, 0x6f, 0xe2, 0x92, 0xc2, 0x2c, 0x4e, 0xf3, 0xe2, 0x0a,
0x44, 0xaa, 0x84, 0x6a, 0x97, 0x88, 0x14, 0x91, 0x3b, 0x66, 0x03, 0xea, 0x2f, 0x29, 0x16, 0xf5, 0xcb, 0xef, 0x1d, 0xd7, 0x0f, 0xa8, 0xb2, 0x80, 0x41, 0xd8, 0xf8, 0x99, 0x22, 0x7f, 0x3c, 0xe5,
0xcb, 0x50, 0x73, 0xfa, 0x2f, 0x96, 0xe4, 0x18, 0x8a, 0x19, 0x7d, 0xd5, 0x0f, 0xbf, 0x82, 0x86, 0x60, 0x62, 0xdb, 0x1a, 0xa2, 0xb2, 0xd1, 0xc7, 0x2b, 0xcc, 0x77, 0x29, 0x0b, 0x9a, 0x00, 0xfe,
0xd7, 0x47, 0x23, 0x60, 0x2c, 0xda, 0xda, 0xee, 0x32, 0x86, 0x57, 0x34, 0xae, 0x1b, 0xc5, 0x7d, 0x82, 0x7f, 0x5e, 0x71, 0xcc, 0x19, 0x52, 0xd3, 0x75, 0x86, 0x8e, 0xbe, 0xcd, 0x78, 0x75, 0x4f,
0x58, 0xe7, 0xfe, 0xd7, 0x51, 0x13, 0x6b, 0x5f, 0x10, 0x7d, 0x86, 0xe0, 0xde, 0xb9, 0xdc, 0x52, 0xfd, 0x31, 0x5e, 0x91, 0xbc, 0xf0, 0xf2, 0x0b, 0xf2, 0xa4, 0x70, 0xd3, 0x65, 0x16, 0x9b, 0x04,
0xaa, 0x47, 0x04, 0xd3, 0x9b, 0x9f, 0x70, 0x84, 0x41, 0x66, 0x07, 0x8a, 0xe2, 0xc0, 0x2a, 0x6e, 0x2a, 0xc4, 0x07, 0xe8, 0x84, 0x0b, 0xf5, 0x01, 0x29, 0x27, 0xcb, 0x61, 0x61, 0x08, 0xa9, 0x54,
0xa5, 0x4c, 0x15, 0xf1, 0x54, 0x93, 0x37, 0x70, 0xe5, 0x4b, 0x82, 0xaa, 0x22, 0xd8, 0x72, 0x95, 0xde, 0xbb, 0x46, 0x1e, 0x63, 0x46, 0x31, 0xfc, 0x85, 0xa7, 0x6a, 0x67, 0x5d, 0x87, 0x94, 0x39,
0x3f, 0x89, 0x72, 0x73, 0xe9, 0x8d, 0x87, 0x0e, 0xf3, 0xc2, 0x40, 0x06, 0x1d, 0x3f, 0xd2, 0xe3, 0x1a, 0xdc, 0xf2, 0x10, 0x80, 0xa7, 0x61, 0x0a, 0x37, 0x22, 0x96, 0xd8, 0x86, 0x0c, 0x66, 0x7b,
0xd9, 0x6d, 0x47, 0x03, 0x47, 0x35, 0xc5, 0x8a, 0x00, 0xba, 0x03, 0x87, 0xeb, 0x2f, 0x37, 0x07, 0xd7, 0x5e, 0x95, 0x61, 0x5e, 0xde, 0x51, 0x63, 0x03, 0xea, 0x89, 0x00, 0x12, 0xcc, 0x5f, 0x33,
0x94, 0xab, 0xac, 0x22, 0xcd, 0x10, 0xd8, 0xb1, 0x80, 0xc8, 0x6d, 0xa8, 0xf3, 0x2b, 0x5d, 0xe4, 0x7e, 0xcc, 0x01, 0xe1, 0xe7, 0x95, 0xc2, 0x0d, 0x0f, 0x99, 0x59, 0xe3, 0x33, 0xca, 0xcc, 0x04,
0x1c, 0xd9, 0x3e, 0xbd, 0x64, 0x4a, 0x9d, 0x1a, 0xa2, 0xfc, 0xba, 0xa8, 0x83, 0x98, 0xf9, 0x1a, 0x03, 0xf2, 0xfb, 0xaf, 0xe4, 0x9e, 0xdf, 0x97, 0x8d, 0xab, 0xc6, 0xcb, 0x53, 0x52, 0x90, 0xee,
0x56, 0x95, 0x90, 0x67, 0xa8, 0xbe, 0xba, 0x7a, 0x2f, 0x9b, 0xfb, 0xb2, 0xe4, 0xad, 0x29, 0x77, 0xd2, 0x8a, 0x10, 0x25, 0x41, 0x6d, 0xc0, 0x8a, 0x62, 0xa2, 0xd4, 0xb2, 0x24, 0xaa, 0x35, 0x58,
0x25, 0xdb, 0x77, 0xba, 0x20, 0x98, 0xbf, 0x47, 0x55, 0xe4, 0xfa, 0xd0, 0x0f, 0x23, 0xaa, 0xf8, 0xb0, 0xfd, 0xe1, 0xd0, 0x09, 0x02, 0x4c, 0xd8, 0x0c, 0x9c, 0x6f, 0x35, 0x53, 0xa9, 0xca, 0x15,
0xa1, 0xb4, 0x2e, 0x2e, 0xb3, 0x2d, 0x5e, 0x61, 0xa2, 0xc5, 0x63, 0x38, 0x46, 0x13, 0xd7, 0xd5, 0x75, 0x26, 0x6e, 0x7b, 0xdd, 0xf8, 0x29, 0x07, 0x4d, 0x1e, 0x6c, 0x02, 0xfd, 0xfb, 0x08, 0x27,
0x4e, 0xc2, 0x70, 0x54, 0x4b, 0xf3, 0xcf, 0x39, 0x2c, 0xa5, 0x9c, 0x99, 0x8e, 0xbb, 0xb8, 0xbf, 0xc7, 0xe6, 0x6f, 0x03, 0xff, 0x01, 0x54, 0x84, 0x03, 0x1f, 0x3d, 0x28, 0xec, 0x5b, 0x49, 0xec,
0xfc, 0x9f, 0x42, 0xf2, 0x7c, 0x62, 0xde, 0x90, 0xda, 0xbe, 0x37, 0xf4, 0x74, 0x5d, 0xad, 0x72, 0xa3, 0x82, 0x4f, 0x40, 0xff, 0x1f, 0x58, 0x51, 0xee, 0x53, 0xe8, 0xde, 0x82, 0xf9, 0x40, 0xa4,
0xa4, 0xc3, 0x01, 0xde, 0x79, 0x2f, 0xc3, 0x31, 0x16, 0x98, 0x82, 0x10, 0x44, 0x2e, 0xcc, 0xff, 0xa0, 0x5a, 0xeb, 0x72, 0xd2, 0x9c, 0x4c, 0xcf, 0xf8, 0x79, 0x0e, 0x56, 0xd3, 0xfb, 0x15, 0x81,
0x60, 0x93, 0x13, 0x62, 0x74, 0x99, 0xc3, 0x26, 0x91, 0xd2, 0xec, 0x09, 0x0a, 0xc1, 0x41, 0x1d, 0xfc, 0x0f, 0x9a, 0x19, 0x32, 0x90, 0x6c, 0x74, 0x3f, 0x99, 0x77, 0x6a, 0x63, 0x4a, 0xdc, 0xfe,
0x3b, 0x4a, 0x88, 0xf5, 0x38, 0xb0, 0x05, 0x2a, 0x89, 0x8f, 0xbf, 0xb3, 0x84, 0x19, 0xa8, 0x42, 0x3d, 0x07, 0x8d, 0xa4, 0x28, 0xd3, 0xf4, 0x32, 0x64, 0x35, 0x37, 0xbb, 0x3f, 0xe5, 0x33, 0xfd,
0xc9, 0x33, 0x34, 0x4b, 0xc2, 0xef, 0x42, 0x12, 0xa3, 0xbd, 0xad, 0x15, 0x98, 0x0b, 0x09, 0xc1, 0xa9, 0x30, 0xbb, 0x3f, 0x15, 0xaf, 0xe8, 0x4f, 0xf3, 0x7a, 0x68, 0x4c, 0x5c, 0xf7, 0x92, 0x30,
0x20, 0x81, 0x92, 0xc7, 0x00, 0x5c, 0x31, 0x5b, 0x70, 0x15, 0xe2, 0x26, 0x8e, 0xcf, 0xb9, 0x01, 0x1b, 0x01, 0x56, 0xfe, 0x0c, 0x60, 0xf7, 0x61, 0xf9, 0xa3, 0xe5, 0xba, 0x94, 0xbd, 0x92, 0x26,
0x8f, 0x57, 0x39, 0xb9, 0x80, 0x0e, 0x2a, 0xb0, 0x24, 0xeb, 0x9d, 0x89, 0x85, 0x3a, 0x25, 0x67, 0x35, 0xdc, 0x68, 0xf3, 0xd2, 0x61, 0x1e, 0x92, 0x85, 0xe9, 0x7b, 0xae, 0x9c, 0xbe, 0xca, 0xc6,
0xaa, 0xc7, 0xd7, 0x54, 0x8f, 0xff, 0x6b, 0x1e, 0x08, 0x8f, 0x90, 0x8c, 0x13, 0x30, 0xc8, 0x98, 0x26, 0xac, 0xa4, 0xb4, 0xa3, 0xb6, 0xaf, 0x63, 0xe2, 0x9a, 0x39, 0x63, 0x0d, 0x56, 0x94, 0xa3,
0x33, 0x7e, 0x47, 0x99, 0x9d, 0x6e, 0x6b, 0x35, 0x89, 0x9e, 0xcb, 0xca, 0x87, 0xf5, 0x55, 0x51, 0xa4, 0x61, 0xe3, 0x2e, 0xac, 0xa6, 0x17, 0x66, 0xdb, 0xc8, 0x1b, 0x5f, 0x43, 0xf3, 0x3d, 0x8e,
0x05, 0x61, 0x5f, 0x4e, 0x34, 0x35, 0x0b, 0x24, 0x74, 0x8a, 0x08, 0x4f, 0x40, 0xd9, 0x2b, 0xf4, 0xab, 0x98, 0xd7, 0x89, 0xd5, 0x73, 0xe9, 0x81, 0xe3, 0x9d, 0xf3, 0x61, 0xd0, 0xe9, 0x3f, 0x56,
0x24, 0xa8, 0x7a, 0x9e, 0xec, 0x29, 0x44, 0xec, 0xbd, 0x90, 0x5b, 0x72, 0x6a, 0x22, 0x6d, 0xd8, 0xec, 0x2f, 0x3e, 0x3a, 0x51, 0x9b, 0xe7, 0xb3, 0xed, 0x67, 0x81, 0xc5, 0xc1, 0xe3, 0x52, 0xf2,
0x50, 0x8d, 0x23, 0x73, 0x44, 0x76, 0x99, 0x35, 0xb9, 0x99, 0x3e, 0x73, 0x07, 0x56, 0xdc, 0x70, 0x72, 0x51, 0x44, 0xb9, 0x0e, 0x6b, 0xdd, 0x81, 0x7f, 0x19, 0xf7, 0xa2, 0xe3, 0xdc, 0x85, 0x56,
0x38, 0xf4, 0xa2, 0x08, 0x8d, 0x67, 0x47, 0xde, 0x27, 0xdd, 0x6d, 0xea, 0x33, 0xb8, 0x8b, 0xa8, 0x76, 0x49, 0x45, 0x7a, 0x37, 0xd6, 0x1e, 0x65, 0x09, 0xe9, 0x31, 0x29, 0x1d, 0xaf, 0xf1, 0x15,
0xce, 0x56, 0x91, 0x3a, 0xa2, 0xa4, 0xca, 0x6c, 0x15, 0x59, 0x63, 0xfe, 0x3b, 0x07, 0x0d, 0x6e, 0x94, 0xf6, 0xbd, 0x0b, 0xdf, 0xb1, 0x05, 0x89, 0x0c, 0xf1, 0xf8, 0xa2, 0x0e, 0x8f, 0x1d, 0x98,
0x89, 0x54, 0x1c, 0x3c, 0x02, 0x11, 0x62, 0xdf, 0x18, 0x06, 0x06, 0xa7, 0xfd, 0xc9, 0xa2, 0xe0, 0x3a, 0x23, 0xa6, 0x18, 0x01, 0xa9, 0x74, 0x6c, 0x8e, 0xc6, 0xd4, 0x19, 0x5a, 0x67, 0x54, 0x4d,
0xb7, 0x20, 0xdc, 0x6a, 0x87, 0x78, 0xb9, 0x0a, 0x82, 0x66, 0x3a, 0x08, 0x66, 0xa9, 0x8d, 0x87, 0x41, 0x18, 0xef, 0x58, 0x3e, 0x04, 0x0a, 0x7a, 0x2a, 0x92, 0xd3, 0xaf, 0x28, 0x08, 0xe3, 0x16,
0x45, 0xd9, 0xe6, 0x48, 0x22, 0x04, 0x8e, 0x60, 0x23, 0x5d, 0xe1, 0xb4, 0x7f, 0xef, 0xc1, 0x52, 0x10, 0x1c, 0xc7, 0x94, 0xfd, 0x30, 0xba, 0x68, 0x93, 0xa4, 0xab, 0x0d, 0x1c, 0x0f, 0xe5, 0x9b,
0x24, 0xf4, 0x54, 0x63, 0xdc, 0x7a, 0x9a, 0xb1, 0xb4, 0x81, 0xa5, 0x68, 0xcc, 0xcf, 0x05, 0xd8, 0x82, 0xcf, 0xf2, 0x99, 0xe5, 0x7b, 0x40, 0x78, 0xbf, 0x0e, 0xad, 0x84, 0xe7, 0xaf, 0x6f, 0x4b,
0xcc, 0xf2, 0x51, 0x05, 0xfb, 0x2d, 0x34, 0xe6, 0xca, 0xab, 0x6c, 0x02, 0xf7, 0xd2, 0x46, 0xca, 0xec, 0xfc, 0x9f, 0xc2, 0x52, 0x42, 0x57, 0x79, 0xbc, 0x09, 0x65, 0x47, 0x8a, 0x34, 0x1e, 0x0d,
0x1c, 0xcc, 0xc2, 0x2b, 0xa3, 0x74, 0x25, 0x6e, 0xfd, 0x33, 0x0f, 0xf5, 0x34, 0xcd, 0xb5, 0x43, 0x85, 0x87, 0xd2, 0xbc, 0xd7, 0x81, 0x7a, 0xa2, 0xee, 0x48, 0x09, 0xf2, 0xdb, 0x07, 0x07, 0x38,
0xd6, 0x5c, 0xd7, 0xc8, 0xcf, 0x77, 0x8d, 0xb9, 0xb1, 0xa7, 0xf0, 0x95, 0xb1, 0xa7, 0xf8, 0xb5, 0xd4, 0x56, 0xa1, 0x74, 0x74, 0xbc, 0x7b, 0xb8, 0x7f, 0xf8, 0x06, 0x27, 0x59, 0xfc, 0xd8, 0x39,
0xb1, 0xa7, 0xf4, 0x4d, 0x63, 0xcf, 0xd2, 0xa2, 0xb1, 0x27, 0x5b, 0x37, 0xcb, 0x52, 0xde, 0x64, 0x38, 0xea, 0xf2, 0x8f, 0xb9, 0xce, 0x6f, 0x65, 0xa8, 0x84, 0x63, 0x27, 0xf9, 0x3f, 0xd4, 0x13,
0xdd, 0x9c, 0x39, 0xa8, 0xf2, 0x0d, 0x0e, 0x7a, 0x04, 0xeb, 0x6f, 0x1d, 0xdf, 0xa7, 0x4c, 0xdd, 0xa5, 0x47, 0xae, 0x2b, 0x17, 0xb3, 0xca, 0xb7, 0x7d, 0x63, 0xf6, 0xa2, 0x8a, 0xf7, 0x1d, 0x34,
0xa0, 0xdd, 0x8c, 0x17, 0x5d, 0x79, 0x2c, 0xc0, 0x72, 0x6b, 0x87, 0x81, 0x2f, 0xdf, 0x21, 0x15, 0x92, 0x35, 0x48, 0x6e, 0x24, 0x2f, 0x47, 0xca, 0xda, 0xc6, 0x15, 0xab, 0xca, 0xdc, 0x0b, 0x28,
0xcb, 0x50, 0xd8, 0x19, 0x42, 0xe6, 0x03, 0xd8, 0xc8, 0x1c, 0x9d, 0x8d, 0xd1, 0x5a, 0x09, 0x7e, 0xeb, 0x07, 0x08, 0x59, 0x9d, 0xfd, 0xd6, 0x69, 0xaf, 0x65, 0xe4, 0x6a, 0xf3, 0x4b, 0xa8, 0x84,
0x2c, 0x67, 0xe9, 0xa5, 0xb9, 0x05, 0x1b, 0x4a, 0x8c, 0xf4, 0x75, 0x66, 0x1b, 0x36, 0xb3, 0x1b, 0x2f, 0x0d, 0x12, 0xd7, 0x8a, 0xbf, 0x56, 0xda, 0xad, 0xec, 0x82, 0xda, 0xbf, 0x0d, 0x10, 0xcd,
0x8b, 0x99, 0x15, 0x66, 0xcc, 0xfe, 0x82, 0x69, 0x67, 0xe1, 0x8b, 0x8f, 0x2b, 0xee, 0xf4, 0x7c, 0xfa, 0xa4, 0x75, 0xd5, 0x83, 0xa3, 0xbd, 0x3e, 0x63, 0x45, 0x99, 0x78, 0x0d, 0xd5, 0xd8, 0x28,
0xac, 0xd5, 0xc1, 0x7b, 0xfe, 0x6c, 0xf2, 0xfa, 0x0f, 0xf4, 0xb3, 0x09, 0x3f, 0x25, 0xd2, 0x56, 0x4f, 0x62, 0xc4, 0x9e, 0x7a, 0x1b, 0xb4, 0xdb, 0xb3, 0x96, 0xa2, 0x44, 0xc2, 0xb9, 0x8f, 0x44,
0x9e, 0xe5, 0x9f, 0xdc, 0x59, 0xfc, 0xa1, 0x98, 0x70, 0x66, 0xbc, 0xfe, 0xa2, 0x23, 0x71, 0xf2, 0xcf, 0x86, 0xe4, 0x74, 0x18, 0x26, 0x92, 0x1d, 0x11, 0x9f, 0x41, 0x49, 0xcd, 0x7c, 0x64, 0x45,
0xbe, 0x92, 0xcd, 0xb5, 0x24, 0xd4, 0x52, 0x2b, 0x73, 0x1b, 0xb6, 0xba, 0x83, 0xf0, 0x2a, 0x29, 0x29, 0x25, 0xc7, 0xc2, 0xf6, 0x6a, 0x5a, 0xac, 0x76, 0xee, 0x40, 0x35, 0xd6, 0x8e, 0xc3, 0xf8,
0x8b, 0xd6, 0xeb, 0x0c, 0x9a, 0xf3, 0x5b, 0x4a, 0xb3, 0x87, 0x89, 0xa9, 0x4a, 0x06, 0xbe, 0x7e, 0xb3, 0x2d, 0x3a, 0x3c, 0x85, 0x74, 0x43, 0x7c, 0x94, 0xc3, 0xf6, 0x50, 0x8b, 0x0f, 0x43, 0x24,
0x41, 0x64, 0xb5, 0x9a, 0x0d, 0x56, 0xbf, 0x6e, 0xc3, 0x72, 0xca, 0x91, 0xa4, 0x0c, 0x85, 0xfd, 0x4c, 0x35, 0x3b, 0x21, 0x85, 0x49, 0x64, 0xc6, 0x1a, 0xb4, 0x73, 0x08, 0x0b, 0xc9, 0xee, 0x10,
0x4e, 0x07, 0xdf, 0x3e, 0x06, 0x94, 0xcf, 0xce, 0x8f, 0x4e, 0x4f, 0x4e, 0x5f, 0xe2, 0x83, 0x07, 0x84, 0xc5, 0x35, 0xb3, 0xb1, 0x85, 0xc5, 0x75, 0x45, 0xdb, 0x7a, 0x2e, 0xff, 0x3b, 0x50, 0x37,
0x17, 0x87, 0x9d, 0xb3, 0x2e, 0x5f, 0xe4, 0xdb, 0x7f, 0x2b, 0x43, 0x35, 0x7e, 0x94, 0x90, 0xdf, 0x98, 0x90, 0x58, 0x21, 0x68, 0x0b, 0x4b, 0x09, 0x99, 0xdc, 0xb7, 0x99, 0xc3, 0x58, 0x9e, 0x02,
0xc1, 0x72, 0xca, 0x6d, 0xe4, 0x7b, 0x75, 0xeb, 0xa2, 0x38, 0x68, 0xdd, 0x58, 0xbc, 0xa9, 0x54, 0x44, 0xfc, 0x40, 0x52, 0x77, 0x32, 0xac, 0x88, 0x19, 0x14, 0xf2, 0x04, 0xea, 0x07, 0xbe, 0x7f,
0x78, 0x0d, 0xf5, 0xb4, 0xdb, 0xc8, 0x8d, 0x74, 0xb4, 0x65, 0xb8, 0xfd, 0x70, 0xcd, 0xae, 0x62, 0x3e, 0x19, 0xe9, 0xbd, 0xda, 0x6d, 0x8c, 0x48, 0xda, 0x29, 0x7b, 0x64, 0x17, 0x6a, 0x31, 0x72,
0xf7, 0x04, 0x2a, 0xfa, 0x1d, 0x4b, 0x36, 0x17, 0x3f, 0xa6, 0x5b, 0x5b, 0x73, 0xb8, 0x3a, 0xfc, 0x08, 0xc2, 0x73, 0xc8, 0xb2, 0x4b, 0x58, 0x47, 0xb3, 0xc8, 0xa4, 0x8b, 0x8f, 0xf5, 0x14, 0xf1,
0x14, 0xaa, 0xf1, 0xe3, 0x94, 0x24, 0xa9, 0x92, 0xcf, 0xdd, 0x56, 0x73, 0x7e, 0x43, 0x9d, 0xdf, 0x92, 0x7f, 0xe8, 0x0c, 0x67, 0x93, 0x75, 0xfb, 0x9f, 0x57, 0xae, 0x4b, 0xa3, 0xbd, 0x79, 0xf1,
0x07, 0x98, 0x3d, 0x09, 0x49, 0xf3, 0xba, 0xd7, 0x69, 0x6b, 0x7b, 0xc1, 0x8e, 0x62, 0xf1, 0x1c, 0x7f, 0xcc, 0x93, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x5a, 0x3d, 0xfd, 0x15, 0x9c, 0x11, 0x00,
0x8c, 0xc4, 0x13, 0x8f, 0x24, 0x2a, 0x76, 0xe6, 0xe5, 0xd8, 0x6a, 0x2d, 0xda, 0x9a, 0x29, 0x12, 0x00,
0xcf, 0xc9, 0x64, 0xf6, 0xa8, 0x4c, 0x4f, 0xd3, 0xb1, 0x22, 0xf3, 0x23, 0xf5, 0x1e, 0x94, 0xd5,
0x70, 0x4c, 0x36, 0x14, 0x51, 0x7a, 0x7e, 0x6e, 0x6d, 0x66, 0x61, 0x75, 0xf2, 0x10, 0x8c, 0x44,
0x47, 0x8f, 0xe5, 0x9f, 0xef, 0xf2, 0xb1, 0x17, 0xb2, 0x6d, 0xef, 0x7e, 0x8e, 0xbc, 0x80, 0x5a,
0x72, 0x38, 0x23, 0xb1, 0xaa, 0xf3, 0x13, 0x5b, 0xac, 0xc4, 0xdc, 0x18, 0x85, 0x7c, 0x4e, 0x61,
0x25, 0x3b, 0x63, 0xdf, 0xb8, 0xa6, 0x31, 0xa4, 0x83, 0xeb, 0x9a, 0x7e, 0xf3, 0x58, 0xfe, 0xd5,
0x75, 0x2e, 0xff, 0xa5, 0x22, 0x24, 0x11, 0x08, 0x9a, 0xc3, 0x5a, 0x0a, 0x93, 0xe7, 0x76, 0x72,
0x28, 0x4b, 0x17, 0x1a, 0xd9, 0x34, 0x26, 0x3f, 0x6a, 0xe2, 0xc5, 0xa9, 0xdf, 0xba, 0x79, 0xed,
0xbe, 0x64, 0xdc, 0x5b, 0x12, 0xff, 0xc4, 0x3d, 0xfc, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc2,
0xc3, 0x5e, 0x39, 0x96, 0x13, 0x00, 0x00,
} }

View File

@ -19,6 +19,11 @@ service Lightning {
rpc PendingChannels(PendingChannelRequest) returns (PendingChannelResponse); rpc PendingChannels(PendingChannelRequest) returns (PendingChannelResponse);
rpc SendPayment(stream SendRequest) returns (stream SendResponse); rpc SendPayment(stream SendRequest) returns (stream SendResponse);
rpc AddInvoice(Invoice) returns (AddInvoiceResponse);
rpc LookupInvoice(PaymentHash) returns (Invoice);
rpc ListInvoices(ListInvoiceRequest) returns (ListInvoiceResponse);
rpc ShowRoutingTable(ShowRoutingTableRequest) returns (ShowRoutingTableResponse); rpc ShowRoutingTable(ShowRoutingTableRequest) returns (ShowRoutingTableResponse);
} }
@ -244,3 +249,25 @@ message ShowRoutingTableRequest {
message ShowRoutingTableResponse { message ShowRoutingTableResponse {
repeated RoutingTableLink channels = 1; repeated RoutingTableLink channels = 1;
} }
message Invoice {
string memo = 1;
bytes receipt = 2;
bytes r_preimage = 3;
bytes r_hash = 4;
int64 value = 5;
}
message AddInvoiceResponse {
bytes r_hash = 1;
}
message PaymentHash {
bytes r_hash = 1;
}
message ListInvoiceRequest {
bool pending_only = 1;
}
message ListInvoiceResponse {
repeated Invoice invoices = 1;
}