lnrpc: split walletunlocker in own file

This commit is contained in:
Oliver Gugger 2020-04-02 12:07:05 +02:00
parent 3190437188
commit acd105fccb
No known key found for this signature in database
GPG Key ID: 8E4256593F177720
9 changed files with 2391 additions and 2180 deletions

View File

@ -6,19 +6,19 @@ echo "Generating root gRPC server protos"
protoc -I/usr/local/include -I. \
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
--go_out=plugins=grpc,paths=source_relative:. \
rpc.proto
rpc.proto walletunlocker.proto
# Generate the REST reverse proxy.
protoc -I/usr/local/include -I. \
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
--grpc-gateway_out=logtostderr=true,paths=source_relative:. \
rpc.proto
rpc.proto walletunlocker.proto
# Finally, generate the swagger file which describes the REST API in detail.
protoc -I/usr/local/include -I. \
-I$GOPATH/src/github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis \
--swagger_out=logtostderr=true:. \
rpc.proto
rpc.proto walletunlocker.proto
# For each of the sub-servers, we then generate their protos, but a restricted
# set as they don't yet require REST proxies, or swagger docs.

View File

@ -343,7 +343,7 @@ func (x ChannelCloseSummary_ClosureType) String() string {
}
func (ChannelCloseSummary_ClosureType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{43, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{35, 0}
}
type Peer_SyncType int32
@ -377,7 +377,7 @@ func (x Peer_SyncType) String() string {
}
func (Peer_SyncType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{46, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{38, 0}
}
type PeerEvent_EventType int32
@ -402,7 +402,7 @@ func (x PeerEvent_EventType) String() string {
}
func (PeerEvent_EventType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{51, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{43, 0}
}
type PendingChannelsResponse_ForceClosedChannel_AnchorState int32
@ -430,7 +430,7 @@ func (x PendingChannelsResponse_ForceClosedChannel_AnchorState) String() string
}
func (PendingChannelsResponse_ForceClosedChannel_AnchorState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{76, 5, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{68, 5, 0}
}
type ChannelEventUpdate_UpdateType int32
@ -464,7 +464,7 @@ func (x ChannelEventUpdate_UpdateType) String() string {
}
func (ChannelEventUpdate_UpdateType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{78, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{70, 0}
}
type Invoice_InvoiceState int32
@ -495,7 +495,7 @@ func (x Invoice_InvoiceState) String() string {
}
func (Invoice_InvoiceState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{113, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{105, 0}
}
type Payment_PaymentStatus int32
@ -526,7 +526,7 @@ func (x Payment_PaymentStatus) String() string {
}
func (Payment_PaymentStatus) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{120, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{112, 0}
}
type HTLCAttempt_HTLCStatus int32
@ -554,7 +554,7 @@ func (x HTLCAttempt_HTLCStatus) String() string {
}
func (HTLCAttempt_HTLCStatus) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{121, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{113, 0}
}
type Failure_FailureCode int32
@ -665,435 +665,9 @@ func (x Failure_FailureCode) String() string {
}
func (Failure_FailureCode) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{154, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{146, 0}
}
type GenSeedRequest struct {
//*
//aezeed_passphrase is an optional user provided passphrase that will be used
//to encrypt the generated aezeed cipher seed. When using REST, this field
//must be encoded as base64.
AezeedPassphrase []byte `protobuf:"bytes,1,opt,name=aezeed_passphrase,json=aezeedPassphrase,proto3" json:"aezeed_passphrase,omitempty"`
//*
//seed_entropy is an optional 16-bytes generated via CSPRNG. If not
//specified, then a fresh set of randomness will be used to create the seed.
//When using REST, this field must be encoded as base64.
SeedEntropy []byte `protobuf:"bytes,2,opt,name=seed_entropy,json=seedEntropy,proto3" json:"seed_entropy,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GenSeedRequest) Reset() { *m = GenSeedRequest{} }
func (m *GenSeedRequest) String() string { return proto.CompactTextString(m) }
func (*GenSeedRequest) ProtoMessage() {}
func (*GenSeedRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{0}
}
func (m *GenSeedRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GenSeedRequest.Unmarshal(m, b)
}
func (m *GenSeedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GenSeedRequest.Marshal(b, m, deterministic)
}
func (m *GenSeedRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GenSeedRequest.Merge(m, src)
}
func (m *GenSeedRequest) XXX_Size() int {
return xxx_messageInfo_GenSeedRequest.Size(m)
}
func (m *GenSeedRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GenSeedRequest.DiscardUnknown(m)
}
var xxx_messageInfo_GenSeedRequest proto.InternalMessageInfo
func (m *GenSeedRequest) GetAezeedPassphrase() []byte {
if m != nil {
return m.AezeedPassphrase
}
return nil
}
func (m *GenSeedRequest) GetSeedEntropy() []byte {
if m != nil {
return m.SeedEntropy
}
return nil
}
type GenSeedResponse struct {
//*
//cipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed
//cipher seed obtained by the user. This field is optional, as if not
//provided, then the daemon will generate a new cipher seed for the user.
//Otherwise, then the daemon will attempt to recover the wallet state linked
//to this cipher seed.
CipherSeedMnemonic []string `protobuf:"bytes,1,rep,name=cipher_seed_mnemonic,json=cipherSeedMnemonic,proto3" json:"cipher_seed_mnemonic,omitempty"`
//*
//enciphered_seed are the raw aezeed cipher seed bytes. This is the raw
//cipher text before run through our mnemonic encoding scheme.
EncipheredSeed []byte `protobuf:"bytes,2,opt,name=enciphered_seed,json=encipheredSeed,proto3" json:"enciphered_seed,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GenSeedResponse) Reset() { *m = GenSeedResponse{} }
func (m *GenSeedResponse) String() string { return proto.CompactTextString(m) }
func (*GenSeedResponse) ProtoMessage() {}
func (*GenSeedResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{1}
}
func (m *GenSeedResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GenSeedResponse.Unmarshal(m, b)
}
func (m *GenSeedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GenSeedResponse.Marshal(b, m, deterministic)
}
func (m *GenSeedResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GenSeedResponse.Merge(m, src)
}
func (m *GenSeedResponse) XXX_Size() int {
return xxx_messageInfo_GenSeedResponse.Size(m)
}
func (m *GenSeedResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GenSeedResponse.DiscardUnknown(m)
}
var xxx_messageInfo_GenSeedResponse proto.InternalMessageInfo
func (m *GenSeedResponse) GetCipherSeedMnemonic() []string {
if m != nil {
return m.CipherSeedMnemonic
}
return nil
}
func (m *GenSeedResponse) GetEncipheredSeed() []byte {
if m != nil {
return m.EncipheredSeed
}
return nil
}
type InitWalletRequest struct {
//*
//wallet_password is the passphrase that should be used to encrypt the
//wallet. This MUST be at least 8 chars in length. After creation, this
//password is required to unlock the daemon. When using REST, this field
//must be encoded as base64.
WalletPassword []byte `protobuf:"bytes,1,opt,name=wallet_password,json=walletPassword,proto3" json:"wallet_password,omitempty"`
//*
//cipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed
//cipher seed obtained by the user. This may have been generated by the
//GenSeed method, or be an existing seed.
CipherSeedMnemonic []string `protobuf:"bytes,2,rep,name=cipher_seed_mnemonic,json=cipherSeedMnemonic,proto3" json:"cipher_seed_mnemonic,omitempty"`
//*
//aezeed_passphrase is an optional user provided passphrase that will be used
//to encrypt the generated aezeed cipher seed. When using REST, this field
//must be encoded as base64.
AezeedPassphrase []byte `protobuf:"bytes,3,opt,name=aezeed_passphrase,json=aezeedPassphrase,proto3" json:"aezeed_passphrase,omitempty"`
//*
//recovery_window is an optional argument specifying the address lookahead
//when restoring a wallet seed. The recovery window applies to each
//individual branch of the BIP44 derivation paths. Supplying a recovery
//window of zero indicates that no addresses should be recovered, such after
//the first initialization of the wallet.
RecoveryWindow int32 `protobuf:"varint,4,opt,name=recovery_window,json=recoveryWindow,proto3" json:"recovery_window,omitempty"`
//*
//channel_backups is an optional argument that allows clients to recover the
//settled funds within a set of channels. This should be populated if the
//user was unable to close out all channels and sweep funds before partial or
//total data loss occurred. If specified, then after on-chain recovery of
//funds, lnd begin to carry out the data loss recovery protocol in order to
//recover the funds in each channel from a remote force closed transaction.
ChannelBackups *ChanBackupSnapshot `protobuf:"bytes,5,opt,name=channel_backups,json=channelBackups,proto3" json:"channel_backups,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *InitWalletRequest) Reset() { *m = InitWalletRequest{} }
func (m *InitWalletRequest) String() string { return proto.CompactTextString(m) }
func (*InitWalletRequest) ProtoMessage() {}
func (*InitWalletRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{2}
}
func (m *InitWalletRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InitWalletRequest.Unmarshal(m, b)
}
func (m *InitWalletRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_InitWalletRequest.Marshal(b, m, deterministic)
}
func (m *InitWalletRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_InitWalletRequest.Merge(m, src)
}
func (m *InitWalletRequest) XXX_Size() int {
return xxx_messageInfo_InitWalletRequest.Size(m)
}
func (m *InitWalletRequest) XXX_DiscardUnknown() {
xxx_messageInfo_InitWalletRequest.DiscardUnknown(m)
}
var xxx_messageInfo_InitWalletRequest proto.InternalMessageInfo
func (m *InitWalletRequest) GetWalletPassword() []byte {
if m != nil {
return m.WalletPassword
}
return nil
}
func (m *InitWalletRequest) GetCipherSeedMnemonic() []string {
if m != nil {
return m.CipherSeedMnemonic
}
return nil
}
func (m *InitWalletRequest) GetAezeedPassphrase() []byte {
if m != nil {
return m.AezeedPassphrase
}
return nil
}
func (m *InitWalletRequest) GetRecoveryWindow() int32 {
if m != nil {
return m.RecoveryWindow
}
return 0
}
func (m *InitWalletRequest) GetChannelBackups() *ChanBackupSnapshot {
if m != nil {
return m.ChannelBackups
}
return nil
}
type InitWalletResponse struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *InitWalletResponse) Reset() { *m = InitWalletResponse{} }
func (m *InitWalletResponse) String() string { return proto.CompactTextString(m) }
func (*InitWalletResponse) ProtoMessage() {}
func (*InitWalletResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{3}
}
func (m *InitWalletResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InitWalletResponse.Unmarshal(m, b)
}
func (m *InitWalletResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_InitWalletResponse.Marshal(b, m, deterministic)
}
func (m *InitWalletResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_InitWalletResponse.Merge(m, src)
}
func (m *InitWalletResponse) XXX_Size() int {
return xxx_messageInfo_InitWalletResponse.Size(m)
}
func (m *InitWalletResponse) XXX_DiscardUnknown() {
xxx_messageInfo_InitWalletResponse.DiscardUnknown(m)
}
var xxx_messageInfo_InitWalletResponse proto.InternalMessageInfo
type UnlockWalletRequest struct {
//*
//wallet_password should be the current valid passphrase for the daemon. This
//will be required to decrypt on-disk material that the daemon requires to
//function properly. When using REST, this field must be encoded as base64.
WalletPassword []byte `protobuf:"bytes,1,opt,name=wallet_password,json=walletPassword,proto3" json:"wallet_password,omitempty"`
//*
//recovery_window is an optional argument specifying the address lookahead
//when restoring a wallet seed. The recovery window applies to each
//individual branch of the BIP44 derivation paths. Supplying a recovery
//window of zero indicates that no addresses should be recovered, such after
//the first initialization of the wallet.
RecoveryWindow int32 `protobuf:"varint,2,opt,name=recovery_window,json=recoveryWindow,proto3" json:"recovery_window,omitempty"`
//*
//channel_backups is an optional argument that allows clients to recover the
//settled funds within a set of channels. This should be populated if the
//user was unable to close out all channels and sweep funds before partial or
//total data loss occurred. If specified, then after on-chain recovery of
//funds, lnd begin to carry out the data loss recovery protocol in order to
//recover the funds in each channel from a remote force closed transaction.
ChannelBackups *ChanBackupSnapshot `protobuf:"bytes,3,opt,name=channel_backups,json=channelBackups,proto3" json:"channel_backups,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UnlockWalletRequest) Reset() { *m = UnlockWalletRequest{} }
func (m *UnlockWalletRequest) String() string { return proto.CompactTextString(m) }
func (*UnlockWalletRequest) ProtoMessage() {}
func (*UnlockWalletRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{4}
}
func (m *UnlockWalletRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UnlockWalletRequest.Unmarshal(m, b)
}
func (m *UnlockWalletRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UnlockWalletRequest.Marshal(b, m, deterministic)
}
func (m *UnlockWalletRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_UnlockWalletRequest.Merge(m, src)
}
func (m *UnlockWalletRequest) XXX_Size() int {
return xxx_messageInfo_UnlockWalletRequest.Size(m)
}
func (m *UnlockWalletRequest) XXX_DiscardUnknown() {
xxx_messageInfo_UnlockWalletRequest.DiscardUnknown(m)
}
var xxx_messageInfo_UnlockWalletRequest proto.InternalMessageInfo
func (m *UnlockWalletRequest) GetWalletPassword() []byte {
if m != nil {
return m.WalletPassword
}
return nil
}
func (m *UnlockWalletRequest) GetRecoveryWindow() int32 {
if m != nil {
return m.RecoveryWindow
}
return 0
}
func (m *UnlockWalletRequest) GetChannelBackups() *ChanBackupSnapshot {
if m != nil {
return m.ChannelBackups
}
return nil
}
type UnlockWalletResponse struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UnlockWalletResponse) Reset() { *m = UnlockWalletResponse{} }
func (m *UnlockWalletResponse) String() string { return proto.CompactTextString(m) }
func (*UnlockWalletResponse) ProtoMessage() {}
func (*UnlockWalletResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{5}
}
func (m *UnlockWalletResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UnlockWalletResponse.Unmarshal(m, b)
}
func (m *UnlockWalletResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UnlockWalletResponse.Marshal(b, m, deterministic)
}
func (m *UnlockWalletResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_UnlockWalletResponse.Merge(m, src)
}
func (m *UnlockWalletResponse) XXX_Size() int {
return xxx_messageInfo_UnlockWalletResponse.Size(m)
}
func (m *UnlockWalletResponse) XXX_DiscardUnknown() {
xxx_messageInfo_UnlockWalletResponse.DiscardUnknown(m)
}
var xxx_messageInfo_UnlockWalletResponse proto.InternalMessageInfo
type ChangePasswordRequest struct {
//*
//current_password should be the current valid passphrase used to unlock the
//daemon. When using REST, this field must be encoded as base64.
CurrentPassword []byte `protobuf:"bytes,1,opt,name=current_password,json=currentPassword,proto3" json:"current_password,omitempty"`
//*
//new_password should be the new passphrase that will be needed to unlock the
//daemon. When using REST, this field must be encoded as base64.
NewPassword []byte `protobuf:"bytes,2,opt,name=new_password,json=newPassword,proto3" json:"new_password,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ChangePasswordRequest) Reset() { *m = ChangePasswordRequest{} }
func (m *ChangePasswordRequest) String() string { return proto.CompactTextString(m) }
func (*ChangePasswordRequest) ProtoMessage() {}
func (*ChangePasswordRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{6}
}
func (m *ChangePasswordRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChangePasswordRequest.Unmarshal(m, b)
}
func (m *ChangePasswordRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ChangePasswordRequest.Marshal(b, m, deterministic)
}
func (m *ChangePasswordRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ChangePasswordRequest.Merge(m, src)
}
func (m *ChangePasswordRequest) XXX_Size() int {
return xxx_messageInfo_ChangePasswordRequest.Size(m)
}
func (m *ChangePasswordRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ChangePasswordRequest.DiscardUnknown(m)
}
var xxx_messageInfo_ChangePasswordRequest proto.InternalMessageInfo
func (m *ChangePasswordRequest) GetCurrentPassword() []byte {
if m != nil {
return m.CurrentPassword
}
return nil
}
func (m *ChangePasswordRequest) GetNewPassword() []byte {
if m != nil {
return m.NewPassword
}
return nil
}
type ChangePasswordResponse struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ChangePasswordResponse) Reset() { *m = ChangePasswordResponse{} }
func (m *ChangePasswordResponse) String() string { return proto.CompactTextString(m) }
func (*ChangePasswordResponse) ProtoMessage() {}
func (*ChangePasswordResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{7}
}
func (m *ChangePasswordResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChangePasswordResponse.Unmarshal(m, b)
}
func (m *ChangePasswordResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ChangePasswordResponse.Marshal(b, m, deterministic)
}
func (m *ChangePasswordResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ChangePasswordResponse.Merge(m, src)
}
func (m *ChangePasswordResponse) XXX_Size() int {
return xxx_messageInfo_ChangePasswordResponse.Size(m)
}
func (m *ChangePasswordResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ChangePasswordResponse.DiscardUnknown(m)
}
var xxx_messageInfo_ChangePasswordResponse proto.InternalMessageInfo
type Utxo struct {
/// The type of address
AddressType AddressType `protobuf:"varint,1,opt,name=address_type,json=addressType,proto3,enum=lnrpc.AddressType" json:"address_type,omitempty"`
@ -1116,7 +690,7 @@ func (m *Utxo) Reset() { *m = Utxo{} }
func (m *Utxo) String() string { return proto.CompactTextString(m) }
func (*Utxo) ProtoMessage() {}
func (*Utxo) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{8}
return fileDescriptor_77a6da22d6a3feb1, []int{0}
}
func (m *Utxo) XXX_Unmarshal(b []byte) error {
@ -1207,7 +781,7 @@ func (m *Transaction) Reset() { *m = Transaction{} }
func (m *Transaction) String() string { return proto.CompactTextString(m) }
func (*Transaction) ProtoMessage() {}
func (*Transaction) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{9}
return fileDescriptor_77a6da22d6a3feb1, []int{1}
}
func (m *Transaction) XXX_Unmarshal(b []byte) error {
@ -1312,7 +886,7 @@ func (m *GetTransactionsRequest) Reset() { *m = GetTransactionsRequest{}
func (m *GetTransactionsRequest) String() string { return proto.CompactTextString(m) }
func (*GetTransactionsRequest) ProtoMessage() {}
func (*GetTransactionsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{10}
return fileDescriptor_77a6da22d6a3feb1, []int{2}
}
func (m *GetTransactionsRequest) XXX_Unmarshal(b []byte) error {
@ -1359,7 +933,7 @@ func (m *TransactionDetails) Reset() { *m = TransactionDetails{} }
func (m *TransactionDetails) String() string { return proto.CompactTextString(m) }
func (*TransactionDetails) ProtoMessage() {}
func (*TransactionDetails) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{11}
return fileDescriptor_77a6da22d6a3feb1, []int{3}
}
func (m *TransactionDetails) XXX_Unmarshal(b []byte) error {
@ -1402,7 +976,7 @@ func (m *FeeLimit) Reset() { *m = FeeLimit{} }
func (m *FeeLimit) String() string { return proto.CompactTextString(m) }
func (*FeeLimit) ProtoMessage() {}
func (*FeeLimit) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{12}
return fileDescriptor_77a6da22d6a3feb1, []int{4}
}
func (m *FeeLimit) XXX_Unmarshal(b []byte) error {
@ -1561,7 +1135,7 @@ func (m *SendRequest) Reset() { *m = SendRequest{} }
func (m *SendRequest) String() string { return proto.CompactTextString(m) }
func (*SendRequest) ProtoMessage() {}
func (*SendRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{13}
return fileDescriptor_77a6da22d6a3feb1, []int{5}
}
func (m *SendRequest) XXX_Unmarshal(b []byte) error {
@ -1703,7 +1277,7 @@ func (m *SendResponse) Reset() { *m = SendResponse{} }
func (m *SendResponse) String() string { return proto.CompactTextString(m) }
func (*SendResponse) ProtoMessage() {}
func (*SendResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{14}
return fileDescriptor_77a6da22d6a3feb1, []int{6}
}
func (m *SendResponse) XXX_Unmarshal(b []byte) error {
@ -1772,7 +1346,7 @@ func (m *SendToRouteRequest) Reset() { *m = SendToRouteRequest{} }
func (m *SendToRouteRequest) String() string { return proto.CompactTextString(m) }
func (*SendToRouteRequest) ProtoMessage() {}
func (*SendToRouteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{15}
return fileDescriptor_77a6da22d6a3feb1, []int{7}
}
func (m *SendToRouteRequest) XXX_Unmarshal(b []byte) error {
@ -1858,7 +1432,7 @@ func (m *ChannelAcceptRequest) Reset() { *m = ChannelAcceptRequest{} }
func (m *ChannelAcceptRequest) String() string { return proto.CompactTextString(m) }
func (*ChannelAcceptRequest) ProtoMessage() {}
func (*ChannelAcceptRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{16}
return fileDescriptor_77a6da22d6a3feb1, []int{8}
}
func (m *ChannelAcceptRequest) XXX_Unmarshal(b []byte) error {
@ -1984,7 +1558,7 @@ func (m *ChannelAcceptResponse) Reset() { *m = ChannelAcceptResponse{} }
func (m *ChannelAcceptResponse) String() string { return proto.CompactTextString(m) }
func (*ChannelAcceptResponse) ProtoMessage() {}
func (*ChannelAcceptResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{17}
return fileDescriptor_77a6da22d6a3feb1, []int{9}
}
func (m *ChannelAcceptResponse) XXX_Unmarshal(b []byte) error {
@ -2035,7 +1609,7 @@ func (m *ChannelPoint) Reset() { *m = ChannelPoint{} }
func (m *ChannelPoint) String() string { return proto.CompactTextString(m) }
func (*ChannelPoint) ProtoMessage() {}
func (*ChannelPoint) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{18}
return fileDescriptor_77a6da22d6a3feb1, []int{10}
}
func (m *ChannelPoint) XXX_Unmarshal(b []byte) error {
@ -2124,7 +1698,7 @@ func (m *OutPoint) Reset() { *m = OutPoint{} }
func (m *OutPoint) String() string { return proto.CompactTextString(m) }
func (*OutPoint) ProtoMessage() {}
func (*OutPoint) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{19}
return fileDescriptor_77a6da22d6a3feb1, []int{11}
}
func (m *OutPoint) XXX_Unmarshal(b []byte) error {
@ -2181,7 +1755,7 @@ func (m *LightningAddress) Reset() { *m = LightningAddress{} }
func (m *LightningAddress) String() string { return proto.CompactTextString(m) }
func (*LightningAddress) ProtoMessage() {}
func (*LightningAddress) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{20}
return fileDescriptor_77a6da22d6a3feb1, []int{12}
}
func (m *LightningAddress) XXX_Unmarshal(b []byte) error {
@ -2231,7 +1805,7 @@ func (m *EstimateFeeRequest) Reset() { *m = EstimateFeeRequest{} }
func (m *EstimateFeeRequest) String() string { return proto.CompactTextString(m) }
func (*EstimateFeeRequest) ProtoMessage() {}
func (*EstimateFeeRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{21}
return fileDescriptor_77a6da22d6a3feb1, []int{13}
}
func (m *EstimateFeeRequest) XXX_Unmarshal(b []byte) error {
@ -2280,7 +1854,7 @@ func (m *EstimateFeeResponse) Reset() { *m = EstimateFeeResponse{} }
func (m *EstimateFeeResponse) String() string { return proto.CompactTextString(m) }
func (*EstimateFeeResponse) ProtoMessage() {}
func (*EstimateFeeResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{22}
return fileDescriptor_77a6da22d6a3feb1, []int{14}
}
func (m *EstimateFeeResponse) XXX_Unmarshal(b []byte) error {
@ -2333,7 +1907,7 @@ func (m *SendManyRequest) Reset() { *m = SendManyRequest{} }
func (m *SendManyRequest) String() string { return proto.CompactTextString(m) }
func (*SendManyRequest) ProtoMessage() {}
func (*SendManyRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{23}
return fileDescriptor_77a6da22d6a3feb1, []int{15}
}
func (m *SendManyRequest) XXX_Unmarshal(b []byte) error {
@ -2387,7 +1961,7 @@ func (m *SendManyResponse) Reset() { *m = SendManyResponse{} }
func (m *SendManyResponse) String() string { return proto.CompactTextString(m) }
func (*SendManyResponse) ProtoMessage() {}
func (*SendManyResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{24}
return fileDescriptor_77a6da22d6a3feb1, []int{16}
}
func (m *SendManyResponse) XXX_Unmarshal(b []byte) error {
@ -2440,7 +2014,7 @@ func (m *SendCoinsRequest) Reset() { *m = SendCoinsRequest{} }
func (m *SendCoinsRequest) String() string { return proto.CompactTextString(m) }
func (*SendCoinsRequest) ProtoMessage() {}
func (*SendCoinsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{25}
return fileDescriptor_77a6da22d6a3feb1, []int{17}
}
func (m *SendCoinsRequest) XXX_Unmarshal(b []byte) error {
@ -2508,7 +2082,7 @@ func (m *SendCoinsResponse) Reset() { *m = SendCoinsResponse{} }
func (m *SendCoinsResponse) String() string { return proto.CompactTextString(m) }
func (*SendCoinsResponse) ProtoMessage() {}
func (*SendCoinsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{26}
return fileDescriptor_77a6da22d6a3feb1, []int{18}
}
func (m *SendCoinsResponse) XXX_Unmarshal(b []byte) error {
@ -2550,7 +2124,7 @@ func (m *ListUnspentRequest) Reset() { *m = ListUnspentRequest{} }
func (m *ListUnspentRequest) String() string { return proto.CompactTextString(m) }
func (*ListUnspentRequest) ProtoMessage() {}
func (*ListUnspentRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{27}
return fileDescriptor_77a6da22d6a3feb1, []int{19}
}
func (m *ListUnspentRequest) XXX_Unmarshal(b []byte) error {
@ -2597,7 +2171,7 @@ func (m *ListUnspentResponse) Reset() { *m = ListUnspentResponse{} }
func (m *ListUnspentResponse) String() string { return proto.CompactTextString(m) }
func (*ListUnspentResponse) ProtoMessage() {}
func (*ListUnspentResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{28}
return fileDescriptor_77a6da22d6a3feb1, []int{20}
}
func (m *ListUnspentResponse) XXX_Unmarshal(b []byte) error {
@ -2637,7 +2211,7 @@ func (m *NewAddressRequest) Reset() { *m = NewAddressRequest{} }
func (m *NewAddressRequest) String() string { return proto.CompactTextString(m) }
func (*NewAddressRequest) ProtoMessage() {}
func (*NewAddressRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{29}
return fileDescriptor_77a6da22d6a3feb1, []int{21}
}
func (m *NewAddressRequest) XXX_Unmarshal(b []byte) error {
@ -2677,7 +2251,7 @@ func (m *NewAddressResponse) Reset() { *m = NewAddressResponse{} }
func (m *NewAddressResponse) String() string { return proto.CompactTextString(m) }
func (*NewAddressResponse) ProtoMessage() {}
func (*NewAddressResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{30}
return fileDescriptor_77a6da22d6a3feb1, []int{22}
}
func (m *NewAddressResponse) XXX_Unmarshal(b []byte) error {
@ -2719,7 +2293,7 @@ func (m *SignMessageRequest) Reset() { *m = SignMessageRequest{} }
func (m *SignMessageRequest) String() string { return proto.CompactTextString(m) }
func (*SignMessageRequest) ProtoMessage() {}
func (*SignMessageRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{31}
return fileDescriptor_77a6da22d6a3feb1, []int{23}
}
func (m *SignMessageRequest) XXX_Unmarshal(b []byte) error {
@ -2759,7 +2333,7 @@ func (m *SignMessageResponse) Reset() { *m = SignMessageResponse{} }
func (m *SignMessageResponse) String() string { return proto.CompactTextString(m) }
func (*SignMessageResponse) ProtoMessage() {}
func (*SignMessageResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{32}
return fileDescriptor_77a6da22d6a3feb1, []int{24}
}
func (m *SignMessageResponse) XXX_Unmarshal(b []byte) error {
@ -2803,7 +2377,7 @@ func (m *VerifyMessageRequest) Reset() { *m = VerifyMessageRequest{} }
func (m *VerifyMessageRequest) String() string { return proto.CompactTextString(m) }
func (*VerifyMessageRequest) ProtoMessage() {}
func (*VerifyMessageRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{33}
return fileDescriptor_77a6da22d6a3feb1, []int{25}
}
func (m *VerifyMessageRequest) XXX_Unmarshal(b []byte) error {
@ -2852,7 +2426,7 @@ func (m *VerifyMessageResponse) Reset() { *m = VerifyMessageResponse{} }
func (m *VerifyMessageResponse) String() string { return proto.CompactTextString(m) }
func (*VerifyMessageResponse) ProtoMessage() {}
func (*VerifyMessageResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{34}
return fileDescriptor_77a6da22d6a3feb1, []int{26}
}
func (m *VerifyMessageResponse) XXX_Unmarshal(b []byte) error {
@ -2902,7 +2476,7 @@ func (m *ConnectPeerRequest) Reset() { *m = ConnectPeerRequest{} }
func (m *ConnectPeerRequest) String() string { return proto.CompactTextString(m) }
func (*ConnectPeerRequest) ProtoMessage() {}
func (*ConnectPeerRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{35}
return fileDescriptor_77a6da22d6a3feb1, []int{27}
}
func (m *ConnectPeerRequest) XXX_Unmarshal(b []byte) error {
@ -2947,7 +2521,7 @@ func (m *ConnectPeerResponse) Reset() { *m = ConnectPeerResponse{} }
func (m *ConnectPeerResponse) String() string { return proto.CompactTextString(m) }
func (*ConnectPeerResponse) ProtoMessage() {}
func (*ConnectPeerResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{36}
return fileDescriptor_77a6da22d6a3feb1, []int{28}
}
func (m *ConnectPeerResponse) XXX_Unmarshal(b []byte) error {
@ -2980,7 +2554,7 @@ func (m *DisconnectPeerRequest) Reset() { *m = DisconnectPeerRequest{} }
func (m *DisconnectPeerRequest) String() string { return proto.CompactTextString(m) }
func (*DisconnectPeerRequest) ProtoMessage() {}
func (*DisconnectPeerRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{37}
return fileDescriptor_77a6da22d6a3feb1, []int{29}
}
func (m *DisconnectPeerRequest) XXX_Unmarshal(b []byte) error {
@ -3018,7 +2592,7 @@ func (m *DisconnectPeerResponse) Reset() { *m = DisconnectPeerResponse{}
func (m *DisconnectPeerResponse) String() string { return proto.CompactTextString(m) }
func (*DisconnectPeerResponse) ProtoMessage() {}
func (*DisconnectPeerResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{38}
return fileDescriptor_77a6da22d6a3feb1, []int{30}
}
func (m *DisconnectPeerResponse) XXX_Unmarshal(b []byte) error {
@ -3053,7 +2627,7 @@ func (m *HTLC) Reset() { *m = HTLC{} }
func (m *HTLC) String() string { return proto.CompactTextString(m) }
func (*HTLC) ProtoMessage() {}
func (*HTLC) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{39}
return fileDescriptor_77a6da22d6a3feb1, []int{31}
}
func (m *HTLC) XXX_Unmarshal(b []byte) error {
@ -3209,7 +2783,7 @@ func (m *Channel) Reset() { *m = Channel{} }
func (m *Channel) String() string { return proto.CompactTextString(m) }
func (*Channel) ProtoMessage() {}
func (*Channel) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{40}
return fileDescriptor_77a6da22d6a3feb1, []int{32}
}
func (m *Channel) XXX_Unmarshal(b []byte) error {
@ -3445,7 +3019,7 @@ func (m *ListChannelsRequest) Reset() { *m = ListChannelsRequest{} }
func (m *ListChannelsRequest) String() string { return proto.CompactTextString(m) }
func (*ListChannelsRequest) ProtoMessage() {}
func (*ListChannelsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{41}
return fileDescriptor_77a6da22d6a3feb1, []int{33}
}
func (m *ListChannelsRequest) XXX_Unmarshal(b []byte) error {
@ -3513,7 +3087,7 @@ func (m *ListChannelsResponse) Reset() { *m = ListChannelsResponse{} }
func (m *ListChannelsResponse) String() string { return proto.CompactTextString(m) }
func (*ListChannelsResponse) ProtoMessage() {}
func (*ListChannelsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{42}
return fileDescriptor_77a6da22d6a3feb1, []int{34}
}
func (m *ListChannelsResponse) XXX_Unmarshal(b []byte) error {
@ -3583,7 +3157,7 @@ func (m *ChannelCloseSummary) Reset() { *m = ChannelCloseSummary{} }
func (m *ChannelCloseSummary) String() string { return proto.CompactTextString(m) }
func (*ChannelCloseSummary) ProtoMessage() {}
func (*ChannelCloseSummary) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{43}
return fileDescriptor_77a6da22d6a3feb1, []int{35}
}
func (m *ChannelCloseSummary) XXX_Unmarshal(b []byte) error {
@ -3704,7 +3278,7 @@ func (m *ClosedChannelsRequest) Reset() { *m = ClosedChannelsRequest{} }
func (m *ClosedChannelsRequest) String() string { return proto.CompactTextString(m) }
func (*ClosedChannelsRequest) ProtoMessage() {}
func (*ClosedChannelsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{44}
return fileDescriptor_77a6da22d6a3feb1, []int{36}
}
func (m *ClosedChannelsRequest) XXX_Unmarshal(b []byte) error {
@ -3778,7 +3352,7 @@ func (m *ClosedChannelsResponse) Reset() { *m = ClosedChannelsResponse{}
func (m *ClosedChannelsResponse) String() string { return proto.CompactTextString(m) }
func (*ClosedChannelsResponse) ProtoMessage() {}
func (*ClosedChannelsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{45}
return fileDescriptor_77a6da22d6a3feb1, []int{37}
}
func (m *ClosedChannelsResponse) XXX_Unmarshal(b []byte) error {
@ -3843,7 +3417,7 @@ func (m *Peer) Reset() { *m = Peer{} }
func (m *Peer) String() string { return proto.CompactTextString(m) }
func (*Peer) ProtoMessage() {}
func (*Peer) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{46}
return fileDescriptor_77a6da22d6a3feb1, []int{38}
}
func (m *Peer) XXX_Unmarshal(b []byte) error {
@ -3955,7 +3529,7 @@ func (m *TimestampedError) Reset() { *m = TimestampedError{} }
func (m *TimestampedError) String() string { return proto.CompactTextString(m) }
func (*TimestampedError) ProtoMessage() {}
func (*TimestampedError) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{47}
return fileDescriptor_77a6da22d6a3feb1, []int{39}
}
func (m *TimestampedError) XXX_Unmarshal(b []byte) error {
@ -4005,7 +3579,7 @@ func (m *ListPeersRequest) Reset() { *m = ListPeersRequest{} }
func (m *ListPeersRequest) String() string { return proto.CompactTextString(m) }
func (*ListPeersRequest) ProtoMessage() {}
func (*ListPeersRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{48}
return fileDescriptor_77a6da22d6a3feb1, []int{40}
}
func (m *ListPeersRequest) XXX_Unmarshal(b []byte) error {
@ -4045,7 +3619,7 @@ func (m *ListPeersResponse) Reset() { *m = ListPeersResponse{} }
func (m *ListPeersResponse) String() string { return proto.CompactTextString(m) }
func (*ListPeersResponse) ProtoMessage() {}
func (*ListPeersResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{49}
return fileDescriptor_77a6da22d6a3feb1, []int{41}
}
func (m *ListPeersResponse) XXX_Unmarshal(b []byte) error {
@ -4083,7 +3657,7 @@ func (m *PeerEventSubscription) Reset() { *m = PeerEventSubscription{} }
func (m *PeerEventSubscription) String() string { return proto.CompactTextString(m) }
func (*PeerEventSubscription) ProtoMessage() {}
func (*PeerEventSubscription) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{50}
return fileDescriptor_77a6da22d6a3feb1, []int{42}
}
func (m *PeerEventSubscription) XXX_Unmarshal(b []byte) error {
@ -4117,7 +3691,7 @@ func (m *PeerEvent) Reset() { *m = PeerEvent{} }
func (m *PeerEvent) String() string { return proto.CompactTextString(m) }
func (*PeerEvent) ProtoMessage() {}
func (*PeerEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{51}
return fileDescriptor_77a6da22d6a3feb1, []int{43}
}
func (m *PeerEvent) XXX_Unmarshal(b []byte) error {
@ -4162,7 +3736,7 @@ func (m *GetInfoRequest) Reset() { *m = GetInfoRequest{} }
func (m *GetInfoRequest) String() string { return proto.CompactTextString(m) }
func (*GetInfoRequest) ProtoMessage() {}
func (*GetInfoRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{52}
return fileDescriptor_77a6da22d6a3feb1, []int{44}
}
func (m *GetInfoRequest) XXX_Unmarshal(b []byte) error {
@ -4233,7 +3807,7 @@ func (m *GetInfoResponse) Reset() { *m = GetInfoResponse{} }
func (m *GetInfoResponse) String() string { return proto.CompactTextString(m) }
func (*GetInfoResponse) ProtoMessage() {}
func (*GetInfoResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{53}
return fileDescriptor_77a6da22d6a3feb1, []int{45}
}
func (m *GetInfoResponse) XXX_Unmarshal(b []byte) error {
@ -4395,7 +3969,7 @@ func (m *Chain) Reset() { *m = Chain{} }
func (m *Chain) String() string { return proto.CompactTextString(m) }
func (*Chain) ProtoMessage() {}
func (*Chain) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{54}
return fileDescriptor_77a6da22d6a3feb1, []int{46}
}
func (m *Chain) XXX_Unmarshal(b []byte) error {
@ -4443,7 +4017,7 @@ func (m *ConfirmationUpdate) Reset() { *m = ConfirmationUpdate{} }
func (m *ConfirmationUpdate) String() string { return proto.CompactTextString(m) }
func (*ConfirmationUpdate) ProtoMessage() {}
func (*ConfirmationUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{55}
return fileDescriptor_77a6da22d6a3feb1, []int{47}
}
func (m *ConfirmationUpdate) XXX_Unmarshal(b []byte) error {
@ -4496,7 +4070,7 @@ func (m *ChannelOpenUpdate) Reset() { *m = ChannelOpenUpdate{} }
func (m *ChannelOpenUpdate) String() string { return proto.CompactTextString(m) }
func (*ChannelOpenUpdate) ProtoMessage() {}
func (*ChannelOpenUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{56}
return fileDescriptor_77a6da22d6a3feb1, []int{48}
}
func (m *ChannelOpenUpdate) XXX_Unmarshal(b []byte) error {
@ -4536,7 +4110,7 @@ func (m *ChannelCloseUpdate) Reset() { *m = ChannelCloseUpdate{} }
func (m *ChannelCloseUpdate) String() string { return proto.CompactTextString(m) }
func (*ChannelCloseUpdate) ProtoMessage() {}
func (*ChannelCloseUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{57}
return fileDescriptor_77a6da22d6a3feb1, []int{49}
}
func (m *ChannelCloseUpdate) XXX_Unmarshal(b []byte) error {
@ -4601,7 +4175,7 @@ func (m *CloseChannelRequest) Reset() { *m = CloseChannelRequest{} }
func (m *CloseChannelRequest) String() string { return proto.CompactTextString(m) }
func (*CloseChannelRequest) ProtoMessage() {}
func (*CloseChannelRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{58}
return fileDescriptor_77a6da22d6a3feb1, []int{50}
}
func (m *CloseChannelRequest) XXX_Unmarshal(b []byte) error {
@ -4671,7 +4245,7 @@ func (m *CloseStatusUpdate) Reset() { *m = CloseStatusUpdate{} }
func (m *CloseStatusUpdate) String() string { return proto.CompactTextString(m) }
func (*CloseStatusUpdate) ProtoMessage() {}
func (*CloseStatusUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{59}
return fileDescriptor_77a6da22d6a3feb1, []int{51}
}
func (m *CloseStatusUpdate) XXX_Unmarshal(b []byte) error {
@ -4749,7 +4323,7 @@ func (m *PendingUpdate) Reset() { *m = PendingUpdate{} }
func (m *PendingUpdate) String() string { return proto.CompactTextString(m) }
func (*PendingUpdate) ProtoMessage() {}
func (*PendingUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{60}
return fileDescriptor_77a6da22d6a3feb1, []int{52}
}
func (m *PendingUpdate) XXX_Unmarshal(b []byte) error {
@ -4808,7 +4382,7 @@ func (m *ReadyForPsbtFunding) Reset() { *m = ReadyForPsbtFunding{} }
func (m *ReadyForPsbtFunding) String() string { return proto.CompactTextString(m) }
func (*ReadyForPsbtFunding) ProtoMessage() {}
func (*ReadyForPsbtFunding) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{61}
return fileDescriptor_77a6da22d6a3feb1, []int{53}
}
func (m *ReadyForPsbtFunding) XXX_Unmarshal(b []byte) error {
@ -4911,7 +4485,7 @@ func (m *OpenChannelRequest) Reset() { *m = OpenChannelRequest{} }
func (m *OpenChannelRequest) String() string { return proto.CompactTextString(m) }
func (*OpenChannelRequest) ProtoMessage() {}
func (*OpenChannelRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{62}
return fileDescriptor_77a6da22d6a3feb1, []int{54}
}
func (m *OpenChannelRequest) XXX_Unmarshal(b []byte) error {
@ -5043,7 +4617,7 @@ func (m *OpenStatusUpdate) Reset() { *m = OpenStatusUpdate{} }
func (m *OpenStatusUpdate) String() string { return proto.CompactTextString(m) }
func (*OpenStatusUpdate) ProtoMessage() {}
func (*OpenStatusUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{63}
return fileDescriptor_77a6da22d6a3feb1, []int{55}
}
func (m *OpenStatusUpdate) XXX_Unmarshal(b []byte) error {
@ -5144,7 +4718,7 @@ func (m *KeyLocator) Reset() { *m = KeyLocator{} }
func (m *KeyLocator) String() string { return proto.CompactTextString(m) }
func (*KeyLocator) ProtoMessage() {}
func (*KeyLocator) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{64}
return fileDescriptor_77a6da22d6a3feb1, []int{56}
}
func (m *KeyLocator) XXX_Unmarshal(b []byte) error {
@ -5195,7 +4769,7 @@ func (m *KeyDescriptor) Reset() { *m = KeyDescriptor{} }
func (m *KeyDescriptor) String() string { return proto.CompactTextString(m) }
func (*KeyDescriptor) ProtoMessage() {}
func (*KeyDescriptor) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{65}
return fileDescriptor_77a6da22d6a3feb1, []int{57}
}
func (m *KeyDescriptor) XXX_Unmarshal(b []byte) error {
@ -5262,7 +4836,7 @@ func (m *ChanPointShim) Reset() { *m = ChanPointShim{} }
func (m *ChanPointShim) String() string { return proto.CompactTextString(m) }
func (*ChanPointShim) ProtoMessage() {}
func (*ChanPointShim) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{66}
return fileDescriptor_77a6da22d6a3feb1, []int{58}
}
func (m *ChanPointShim) XXX_Unmarshal(b []byte) error {
@ -5344,7 +4918,7 @@ func (m *PsbtShim) Reset() { *m = PsbtShim{} }
func (m *PsbtShim) String() string { return proto.CompactTextString(m) }
func (*PsbtShim) ProtoMessage() {}
func (*PsbtShim) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{67}
return fileDescriptor_77a6da22d6a3feb1, []int{59}
}
func (m *PsbtShim) XXX_Unmarshal(b []byte) error {
@ -5393,7 +4967,7 @@ func (m *FundingShim) Reset() { *m = FundingShim{} }
func (m *FundingShim) String() string { return proto.CompactTextString(m) }
func (*FundingShim) ProtoMessage() {}
func (*FundingShim) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{68}
return fileDescriptor_77a6da22d6a3feb1, []int{60}
}
func (m *FundingShim) XXX_Unmarshal(b []byte) error {
@ -5471,7 +5045,7 @@ func (m *FundingShimCancel) Reset() { *m = FundingShimCancel{} }
func (m *FundingShimCancel) String() string { return proto.CompactTextString(m) }
func (*FundingShimCancel) ProtoMessage() {}
func (*FundingShimCancel) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{69}
return fileDescriptor_77a6da22d6a3feb1, []int{61}
}
func (m *FundingShimCancel) XXX_Unmarshal(b []byte) error {
@ -5516,7 +5090,7 @@ func (m *FundingPsbtVerify) Reset() { *m = FundingPsbtVerify{} }
func (m *FundingPsbtVerify) String() string { return proto.CompactTextString(m) }
func (*FundingPsbtVerify) ProtoMessage() {}
func (*FundingPsbtVerify) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{70}
return fileDescriptor_77a6da22d6a3feb1, []int{62}
}
func (m *FundingPsbtVerify) XXX_Unmarshal(b []byte) error {
@ -5568,7 +5142,7 @@ func (m *FundingPsbtFinalize) Reset() { *m = FundingPsbtFinalize{} }
func (m *FundingPsbtFinalize) String() string { return proto.CompactTextString(m) }
func (*FundingPsbtFinalize) ProtoMessage() {}
func (*FundingPsbtFinalize) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{71}
return fileDescriptor_77a6da22d6a3feb1, []int{63}
}
func (m *FundingPsbtFinalize) XXX_Unmarshal(b []byte) error {
@ -5619,7 +5193,7 @@ func (m *FundingTransitionMsg) Reset() { *m = FundingTransitionMsg{} }
func (m *FundingTransitionMsg) String() string { return proto.CompactTextString(m) }
func (*FundingTransitionMsg) ProtoMessage() {}
func (*FundingTransitionMsg) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{72}
return fileDescriptor_77a6da22d6a3feb1, []int{64}
}
func (m *FundingTransitionMsg) XXX_Unmarshal(b []byte) error {
@ -5723,7 +5297,7 @@ func (m *FundingStateStepResp) Reset() { *m = FundingStateStepResp{} }
func (m *FundingStateStepResp) String() string { return proto.CompactTextString(m) }
func (*FundingStateStepResp) ProtoMessage() {}
func (*FundingStateStepResp) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{73}
return fileDescriptor_77a6da22d6a3feb1, []int{65}
}
func (m *FundingStateStepResp) XXX_Unmarshal(b []byte) error {
@ -5769,7 +5343,7 @@ func (m *PendingHTLC) Reset() { *m = PendingHTLC{} }
func (m *PendingHTLC) String() string { return proto.CompactTextString(m) }
func (*PendingHTLC) ProtoMessage() {}
func (*PendingHTLC) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{74}
return fileDescriptor_77a6da22d6a3feb1, []int{66}
}
func (m *PendingHTLC) XXX_Unmarshal(b []byte) error {
@ -5842,7 +5416,7 @@ func (m *PendingChannelsRequest) Reset() { *m = PendingChannelsRequest{}
func (m *PendingChannelsRequest) String() string { return proto.CompactTextString(m) }
func (*PendingChannelsRequest) ProtoMessage() {}
func (*PendingChannelsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{75}
return fileDescriptor_77a6da22d6a3feb1, []int{67}
}
func (m *PendingChannelsRequest) XXX_Unmarshal(b []byte) error {
@ -5886,7 +5460,7 @@ func (m *PendingChannelsResponse) Reset() { *m = PendingChannelsResponse
func (m *PendingChannelsResponse) String() string { return proto.CompactTextString(m) }
func (*PendingChannelsResponse) ProtoMessage() {}
func (*PendingChannelsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{76}
return fileDescriptor_77a6da22d6a3feb1, []int{68}
}
func (m *PendingChannelsResponse) XXX_Unmarshal(b []byte) error {
@ -5971,7 +5545,7 @@ func (m *PendingChannelsResponse_PendingChannel) Reset() {
func (m *PendingChannelsResponse_PendingChannel) String() string { return proto.CompactTextString(m) }
func (*PendingChannelsResponse_PendingChannel) ProtoMessage() {}
func (*PendingChannelsResponse_PendingChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{76, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{68, 0}
}
func (m *PendingChannelsResponse_PendingChannel) XXX_Unmarshal(b []byte) error {
@ -6087,7 +5661,7 @@ func (m *PendingChannelsResponse_PendingOpenChannel) String() string {
}
func (*PendingChannelsResponse_PendingOpenChannel) ProtoMessage() {}
func (*PendingChannelsResponse_PendingOpenChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{76, 1}
return fileDescriptor_77a6da22d6a3feb1, []int{68, 1}
}
func (m *PendingChannelsResponse_PendingOpenChannel) XXX_Unmarshal(b []byte) error {
@ -6165,7 +5739,7 @@ func (m *PendingChannelsResponse_WaitingCloseChannel) String() string {
}
func (*PendingChannelsResponse_WaitingCloseChannel) ProtoMessage() {}
func (*PendingChannelsResponse_WaitingCloseChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{76, 2}
return fileDescriptor_77a6da22d6a3feb1, []int{68, 2}
}
func (m *PendingChannelsResponse_WaitingCloseChannel) XXX_Unmarshal(b []byte) error {
@ -6235,7 +5809,7 @@ func (m *PendingChannelsResponse_Commitments) Reset() { *m = PendingChan
func (m *PendingChannelsResponse_Commitments) String() string { return proto.CompactTextString(m) }
func (*PendingChannelsResponse_Commitments) ProtoMessage() {}
func (*PendingChannelsResponse_Commitments) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{76, 3}
return fileDescriptor_77a6da22d6a3feb1, []int{68, 3}
}
func (m *PendingChannelsResponse_Commitments) XXX_Unmarshal(b []byte) error {
@ -6312,7 +5886,7 @@ func (m *PendingChannelsResponse_ClosedChannel) Reset() { *m = PendingCh
func (m *PendingChannelsResponse_ClosedChannel) String() string { return proto.CompactTextString(m) }
func (*PendingChannelsResponse_ClosedChannel) ProtoMessage() {}
func (*PendingChannelsResponse_ClosedChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{76, 4}
return fileDescriptor_77a6da22d6a3feb1, []int{68, 4}
}
func (m *PendingChannelsResponse_ClosedChannel) XXX_Unmarshal(b []byte) error {
@ -6378,7 +5952,7 @@ func (m *PendingChannelsResponse_ForceClosedChannel) String() string {
}
func (*PendingChannelsResponse_ForceClosedChannel) ProtoMessage() {}
func (*PendingChannelsResponse_ForceClosedChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{76, 5}
return fileDescriptor_77a6da22d6a3feb1, []int{68, 5}
}
func (m *PendingChannelsResponse_ForceClosedChannel) XXX_Unmarshal(b []byte) error {
@ -6465,7 +6039,7 @@ func (m *ChannelEventSubscription) Reset() { *m = ChannelEventSubscripti
func (m *ChannelEventSubscription) String() string { return proto.CompactTextString(m) }
func (*ChannelEventSubscription) ProtoMessage() {}
func (*ChannelEventSubscription) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{77}
return fileDescriptor_77a6da22d6a3feb1, []int{69}
}
func (m *ChannelEventSubscription) XXX_Unmarshal(b []byte) error {
@ -6504,7 +6078,7 @@ func (m *ChannelEventUpdate) Reset() { *m = ChannelEventUpdate{} }
func (m *ChannelEventUpdate) String() string { return proto.CompactTextString(m) }
func (*ChannelEventUpdate) ProtoMessage() {}
func (*ChannelEventUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{78}
return fileDescriptor_77a6da22d6a3feb1, []int{70}
}
func (m *ChannelEventUpdate) XXX_Unmarshal(b []byte) error {
@ -6629,7 +6203,7 @@ func (m *WalletBalanceRequest) Reset() { *m = WalletBalanceRequest{} }
func (m *WalletBalanceRequest) String() string { return proto.CompactTextString(m) }
func (*WalletBalanceRequest) ProtoMessage() {}
func (*WalletBalanceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{79}
return fileDescriptor_77a6da22d6a3feb1, []int{71}
}
func (m *WalletBalanceRequest) XXX_Unmarshal(b []byte) error {
@ -6666,7 +6240,7 @@ func (m *WalletBalanceResponse) Reset() { *m = WalletBalanceResponse{} }
func (m *WalletBalanceResponse) String() string { return proto.CompactTextString(m) }
func (*WalletBalanceResponse) ProtoMessage() {}
func (*WalletBalanceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{80}
return fileDescriptor_77a6da22d6a3feb1, []int{72}
}
func (m *WalletBalanceResponse) XXX_Unmarshal(b []byte) error {
@ -6718,7 +6292,7 @@ func (m *ChannelBalanceRequest) Reset() { *m = ChannelBalanceRequest{} }
func (m *ChannelBalanceRequest) String() string { return proto.CompactTextString(m) }
func (*ChannelBalanceRequest) ProtoMessage() {}
func (*ChannelBalanceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{81}
return fileDescriptor_77a6da22d6a3feb1, []int{73}
}
func (m *ChannelBalanceRequest) XXX_Unmarshal(b []byte) error {
@ -6753,7 +6327,7 @@ func (m *ChannelBalanceResponse) Reset() { *m = ChannelBalanceResponse{}
func (m *ChannelBalanceResponse) String() string { return proto.CompactTextString(m) }
func (*ChannelBalanceResponse) ProtoMessage() {}
func (*ChannelBalanceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{82}
return fileDescriptor_77a6da22d6a3feb1, []int{74}
}
func (m *ChannelBalanceResponse) XXX_Unmarshal(b []byte) error {
@ -6871,7 +6445,7 @@ func (m *QueryRoutesRequest) Reset() { *m = QueryRoutesRequest{} }
func (m *QueryRoutesRequest) String() string { return proto.CompactTextString(m) }
func (*QueryRoutesRequest) ProtoMessage() {}
func (*QueryRoutesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{83}
return fileDescriptor_77a6da22d6a3feb1, []int{75}
}
func (m *QueryRoutesRequest) XXX_Unmarshal(b []byte) error {
@ -7023,7 +6597,7 @@ func (m *NodePair) Reset() { *m = NodePair{} }
func (m *NodePair) String() string { return proto.CompactTextString(m) }
func (*NodePair) ProtoMessage() {}
func (*NodePair) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{84}
return fileDescriptor_77a6da22d6a3feb1, []int{76}
}
func (m *NodePair) XXX_Unmarshal(b []byte) error {
@ -7076,7 +6650,7 @@ func (m *EdgeLocator) Reset() { *m = EdgeLocator{} }
func (m *EdgeLocator) String() string { return proto.CompactTextString(m) }
func (*EdgeLocator) ProtoMessage() {}
func (*EdgeLocator) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{85}
return fileDescriptor_77a6da22d6a3feb1, []int{77}
}
func (m *EdgeLocator) XXX_Unmarshal(b []byte) error {
@ -7129,7 +6703,7 @@ func (m *QueryRoutesResponse) Reset() { *m = QueryRoutesResponse{} }
func (m *QueryRoutesResponse) String() string { return proto.CompactTextString(m) }
func (*QueryRoutesResponse) ProtoMessage() {}
func (*QueryRoutesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{86}
return fileDescriptor_77a6da22d6a3feb1, []int{78}
}
func (m *QueryRoutesResponse) XXX_Unmarshal(b []byte) error {
@ -7205,7 +6779,7 @@ func (m *Hop) Reset() { *m = Hop{} }
func (m *Hop) String() string { return proto.CompactTextString(m) }
func (*Hop) ProtoMessage() {}
func (*Hop) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{87}
return fileDescriptor_77a6da22d6a3feb1, []int{79}
}
func (m *Hop) XXX_Unmarshal(b []byte) error {
@ -7327,7 +6901,7 @@ func (m *MPPRecord) Reset() { *m = MPPRecord{} }
func (m *MPPRecord) String() string { return proto.CompactTextString(m) }
func (*MPPRecord) ProtoMessage() {}
func (*MPPRecord) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{88}
return fileDescriptor_77a6da22d6a3feb1, []int{80}
}
func (m *MPPRecord) XXX_Unmarshal(b []byte) error {
@ -7405,7 +6979,7 @@ func (m *Route) Reset() { *m = Route{} }
func (m *Route) String() string { return proto.CompactTextString(m) }
func (*Route) ProtoMessage() {}
func (*Route) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{89}
return fileDescriptor_77a6da22d6a3feb1, []int{81}
}
func (m *Route) XXX_Unmarshal(b []byte) error {
@ -7484,7 +7058,7 @@ func (m *NodeInfoRequest) Reset() { *m = NodeInfoRequest{} }
func (m *NodeInfoRequest) String() string { return proto.CompactTextString(m) }
func (*NodeInfoRequest) ProtoMessage() {}
func (*NodeInfoRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{90}
return fileDescriptor_77a6da22d6a3feb1, []int{82}
}
func (m *NodeInfoRequest) XXX_Unmarshal(b []byte) error {
@ -7541,7 +7115,7 @@ func (m *NodeInfo) Reset() { *m = NodeInfo{} }
func (m *NodeInfo) String() string { return proto.CompactTextString(m) }
func (*NodeInfo) ProtoMessage() {}
func (*NodeInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{91}
return fileDescriptor_77a6da22d6a3feb1, []int{83}
}
func (m *NodeInfo) XXX_Unmarshal(b []byte) error {
@ -7611,7 +7185,7 @@ func (m *LightningNode) Reset() { *m = LightningNode{} }
func (m *LightningNode) String() string { return proto.CompactTextString(m) }
func (*LightningNode) ProtoMessage() {}
func (*LightningNode) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{92}
return fileDescriptor_77a6da22d6a3feb1, []int{84}
}
func (m *LightningNode) XXX_Unmarshal(b []byte) error {
@ -7686,7 +7260,7 @@ func (m *NodeAddress) Reset() { *m = NodeAddress{} }
func (m *NodeAddress) String() string { return proto.CompactTextString(m) }
func (*NodeAddress) ProtoMessage() {}
func (*NodeAddress) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{93}
return fileDescriptor_77a6da22d6a3feb1, []int{85}
}
func (m *NodeAddress) XXX_Unmarshal(b []byte) error {
@ -7738,7 +7312,7 @@ func (m *RoutingPolicy) Reset() { *m = RoutingPolicy{} }
func (m *RoutingPolicy) String() string { return proto.CompactTextString(m) }
func (*RoutingPolicy) ProtoMessage() {}
func (*RoutingPolicy) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{94}
return fileDescriptor_77a6da22d6a3feb1, []int{86}
}
func (m *RoutingPolicy) XXX_Unmarshal(b []byte) error {
@ -7836,7 +7410,7 @@ func (m *ChannelEdge) Reset() { *m = ChannelEdge{} }
func (m *ChannelEdge) String() string { return proto.CompactTextString(m) }
func (*ChannelEdge) ProtoMessage() {}
func (*ChannelEdge) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{95}
return fileDescriptor_77a6da22d6a3feb1, []int{87}
}
func (m *ChannelEdge) XXX_Unmarshal(b []byte) error {
@ -7929,7 +7503,7 @@ func (m *ChannelGraphRequest) Reset() { *m = ChannelGraphRequest{} }
func (m *ChannelGraphRequest) String() string { return proto.CompactTextString(m) }
func (*ChannelGraphRequest) ProtoMessage() {}
func (*ChannelGraphRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{96}
return fileDescriptor_77a6da22d6a3feb1, []int{88}
}
func (m *ChannelGraphRequest) XXX_Unmarshal(b []byte) error {
@ -7972,7 +7546,7 @@ func (m *ChannelGraph) Reset() { *m = ChannelGraph{} }
func (m *ChannelGraph) String() string { return proto.CompactTextString(m) }
func (*ChannelGraph) ProtoMessage() {}
func (*ChannelGraph) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{97}
return fileDescriptor_77a6da22d6a3feb1, []int{89}
}
func (m *ChannelGraph) XXX_Unmarshal(b []byte) error {
@ -8019,7 +7593,7 @@ func (m *NodeMetricsRequest) Reset() { *m = NodeMetricsRequest{} }
func (m *NodeMetricsRequest) String() string { return proto.CompactTextString(m) }
func (*NodeMetricsRequest) ProtoMessage() {}
func (*NodeMetricsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{98}
return fileDescriptor_77a6da22d6a3feb1, []int{90}
}
func (m *NodeMetricsRequest) XXX_Unmarshal(b []byte) error {
@ -8064,7 +7638,7 @@ func (m *NodeMetricsResponse) Reset() { *m = NodeMetricsResponse{} }
func (m *NodeMetricsResponse) String() string { return proto.CompactTextString(m) }
func (*NodeMetricsResponse) ProtoMessage() {}
func (*NodeMetricsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{99}
return fileDescriptor_77a6da22d6a3feb1, []int{91}
}
func (m *NodeMetricsResponse) XXX_Unmarshal(b []byte) error {
@ -8106,7 +7680,7 @@ func (m *FloatMetric) Reset() { *m = FloatMetric{} }
func (m *FloatMetric) String() string { return proto.CompactTextString(m) }
func (*FloatMetric) ProtoMessage() {}
func (*FloatMetric) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{100}
return fileDescriptor_77a6da22d6a3feb1, []int{92}
}
func (m *FloatMetric) XXX_Unmarshal(b []byte) error {
@ -8156,7 +7730,7 @@ func (m *ChanInfoRequest) Reset() { *m = ChanInfoRequest{} }
func (m *ChanInfoRequest) String() string { return proto.CompactTextString(m) }
func (*ChanInfoRequest) ProtoMessage() {}
func (*ChanInfoRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{101}
return fileDescriptor_77a6da22d6a3feb1, []int{93}
}
func (m *ChanInfoRequest) XXX_Unmarshal(b []byte) error {
@ -8194,7 +7768,7 @@ func (m *NetworkInfoRequest) Reset() { *m = NetworkInfoRequest{} }
func (m *NetworkInfoRequest) String() string { return proto.CompactTextString(m) }
func (*NetworkInfoRequest) ProtoMessage() {}
func (*NetworkInfoRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{102}
return fileDescriptor_77a6da22d6a3feb1, []int{94}
}
func (m *NetworkInfoRequest) XXX_Unmarshal(b []byte) error {
@ -8237,7 +7811,7 @@ func (m *NetworkInfo) Reset() { *m = NetworkInfo{} }
func (m *NetworkInfo) String() string { return proto.CompactTextString(m) }
func (*NetworkInfo) ProtoMessage() {}
func (*NetworkInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{103}
return fileDescriptor_77a6da22d6a3feb1, []int{95}
}
func (m *NetworkInfo) XXX_Unmarshal(b []byte) error {
@ -8345,7 +7919,7 @@ func (m *StopRequest) Reset() { *m = StopRequest{} }
func (m *StopRequest) String() string { return proto.CompactTextString(m) }
func (*StopRequest) ProtoMessage() {}
func (*StopRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{104}
return fileDescriptor_77a6da22d6a3feb1, []int{96}
}
func (m *StopRequest) XXX_Unmarshal(b []byte) error {
@ -8376,7 +7950,7 @@ func (m *StopResponse) Reset() { *m = StopResponse{} }
func (m *StopResponse) String() string { return proto.CompactTextString(m) }
func (*StopResponse) ProtoMessage() {}
func (*StopResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{105}
return fileDescriptor_77a6da22d6a3feb1, []int{97}
}
func (m *StopResponse) XXX_Unmarshal(b []byte) error {
@ -8407,7 +7981,7 @@ func (m *GraphTopologySubscription) Reset() { *m = GraphTopologySubscrip
func (m *GraphTopologySubscription) String() string { return proto.CompactTextString(m) }
func (*GraphTopologySubscription) ProtoMessage() {}
func (*GraphTopologySubscription) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{106}
return fileDescriptor_77a6da22d6a3feb1, []int{98}
}
func (m *GraphTopologySubscription) XXX_Unmarshal(b []byte) error {
@ -8441,7 +8015,7 @@ func (m *GraphTopologyUpdate) Reset() { *m = GraphTopologyUpdate{} }
func (m *GraphTopologyUpdate) String() string { return proto.CompactTextString(m) }
func (*GraphTopologyUpdate) ProtoMessage() {}
func (*GraphTopologyUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{107}
return fileDescriptor_77a6da22d6a3feb1, []int{99}
}
func (m *GraphTopologyUpdate) XXX_Unmarshal(b []byte) error {
@ -8498,7 +8072,7 @@ func (m *NodeUpdate) Reset() { *m = NodeUpdate{} }
func (m *NodeUpdate) String() string { return proto.CompactTextString(m) }
func (*NodeUpdate) ProtoMessage() {}
func (*NodeUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{108}
return fileDescriptor_77a6da22d6a3feb1, []int{100}
}
func (m *NodeUpdate) XXX_Unmarshal(b []byte) error {
@ -8574,7 +8148,7 @@ func (m *ChannelEdgeUpdate) Reset() { *m = ChannelEdgeUpdate{} }
func (m *ChannelEdgeUpdate) String() string { return proto.CompactTextString(m) }
func (*ChannelEdgeUpdate) ProtoMessage() {}
func (*ChannelEdgeUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{109}
return fileDescriptor_77a6da22d6a3feb1, []int{101}
}
func (m *ChannelEdgeUpdate) XXX_Unmarshal(b []byte) error {
@ -8655,7 +8229,7 @@ func (m *ClosedChannelUpdate) Reset() { *m = ClosedChannelUpdate{} }
func (m *ClosedChannelUpdate) String() string { return proto.CompactTextString(m) }
func (*ClosedChannelUpdate) ProtoMessage() {}
func (*ClosedChannelUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{110}
return fileDescriptor_77a6da22d6a3feb1, []int{102}
}
func (m *ClosedChannelUpdate) XXX_Unmarshal(b []byte) error {
@ -8726,7 +8300,7 @@ func (m *HopHint) Reset() { *m = HopHint{} }
func (m *HopHint) String() string { return proto.CompactTextString(m) }
func (*HopHint) ProtoMessage() {}
func (*HopHint) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{111}
return fileDescriptor_77a6da22d6a3feb1, []int{103}
}
func (m *HopHint) XXX_Unmarshal(b []byte) error {
@ -8796,7 +8370,7 @@ func (m *RouteHint) Reset() { *m = RouteHint{} }
func (m *RouteHint) String() string { return proto.CompactTextString(m) }
func (*RouteHint) ProtoMessage() {}
func (*RouteHint) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{112}
return fileDescriptor_77a6da22d6a3feb1, []int{104}
}
func (m *RouteHint) XXX_Unmarshal(b []byte) error {
@ -8929,7 +8503,7 @@ func (m *Invoice) Reset() { *m = Invoice{} }
func (m *Invoice) String() string { return proto.CompactTextString(m) }
func (*Invoice) ProtoMessage() {}
func (*Invoice) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{113}
return fileDescriptor_77a6da22d6a3feb1, []int{105}
}
func (m *Invoice) XXX_Unmarshal(b []byte) error {
@ -9151,7 +8725,7 @@ func (m *InvoiceHTLC) Reset() { *m = InvoiceHTLC{} }
func (m *InvoiceHTLC) String() string { return proto.CompactTextString(m) }
func (*InvoiceHTLC) ProtoMessage() {}
func (*InvoiceHTLC) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{114}
return fileDescriptor_77a6da22d6a3feb1, []int{106}
}
func (m *InvoiceHTLC) XXX_Unmarshal(b []byte) error {
@ -9264,7 +8838,7 @@ func (m *AddInvoiceResponse) Reset() { *m = AddInvoiceResponse{} }
func (m *AddInvoiceResponse) String() string { return proto.CompactTextString(m) }
func (*AddInvoiceResponse) ProtoMessage() {}
func (*AddInvoiceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{115}
return fileDescriptor_77a6da22d6a3feb1, []int{107}
}
func (m *AddInvoiceResponse) XXX_Unmarshal(b []byte) error {
@ -9326,7 +8900,7 @@ func (m *PaymentHash) Reset() { *m = PaymentHash{} }
func (m *PaymentHash) String() string { return proto.CompactTextString(m) }
func (*PaymentHash) ProtoMessage() {}
func (*PaymentHash) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{116}
return fileDescriptor_77a6da22d6a3feb1, []int{108}
}
func (m *PaymentHash) XXX_Unmarshal(b []byte) error {
@ -9386,7 +8960,7 @@ func (m *ListInvoiceRequest) Reset() { *m = ListInvoiceRequest{} }
func (m *ListInvoiceRequest) String() string { return proto.CompactTextString(m) }
func (*ListInvoiceRequest) ProtoMessage() {}
func (*ListInvoiceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{117}
return fileDescriptor_77a6da22d6a3feb1, []int{109}
}
func (m *ListInvoiceRequest) XXX_Unmarshal(b []byte) error {
@ -9457,7 +9031,7 @@ func (m *ListInvoiceResponse) Reset() { *m = ListInvoiceResponse{} }
func (m *ListInvoiceResponse) String() string { return proto.CompactTextString(m) }
func (*ListInvoiceResponse) ProtoMessage() {}
func (*ListInvoiceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{118}
return fileDescriptor_77a6da22d6a3feb1, []int{110}
}
func (m *ListInvoiceResponse) XXX_Unmarshal(b []byte) error {
@ -9521,7 +9095,7 @@ func (m *InvoiceSubscription) Reset() { *m = InvoiceSubscription{} }
func (m *InvoiceSubscription) String() string { return proto.CompactTextString(m) }
func (*InvoiceSubscription) ProtoMessage() {}
func (*InvoiceSubscription) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{119}
return fileDescriptor_77a6da22d6a3feb1, []int{111}
}
func (m *InvoiceSubscription) XXX_Unmarshal(b []byte) error {
@ -9598,7 +9172,7 @@ func (m *Payment) Reset() { *m = Payment{} }
func (m *Payment) String() string { return proto.CompactTextString(m) }
func (*Payment) ProtoMessage() {}
func (*Payment) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{120}
return fileDescriptor_77a6da22d6a3feb1, []int{112}
}
func (m *Payment) XXX_Unmarshal(b []byte) error {
@ -9749,7 +9323,7 @@ func (m *HTLCAttempt) Reset() { *m = HTLCAttempt{} }
func (m *HTLCAttempt) String() string { return proto.CompactTextString(m) }
func (*HTLCAttempt) ProtoMessage() {}
func (*HTLCAttempt) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{121}
return fileDescriptor_77a6da22d6a3feb1, []int{113}
}
func (m *HTLCAttempt) XXX_Unmarshal(b []byte) error {
@ -9835,7 +9409,7 @@ func (m *ListPaymentsRequest) Reset() { *m = ListPaymentsRequest{} }
func (m *ListPaymentsRequest) String() string { return proto.CompactTextString(m) }
func (*ListPaymentsRequest) ProtoMessage() {}
func (*ListPaymentsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{122}
return fileDescriptor_77a6da22d6a3feb1, []int{114}
}
func (m *ListPaymentsRequest) XXX_Unmarshal(b []byte) error {
@ -9904,7 +9478,7 @@ func (m *ListPaymentsResponse) Reset() { *m = ListPaymentsResponse{} }
func (m *ListPaymentsResponse) String() string { return proto.CompactTextString(m) }
func (*ListPaymentsResponse) ProtoMessage() {}
func (*ListPaymentsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{123}
return fileDescriptor_77a6da22d6a3feb1, []int{115}
}
func (m *ListPaymentsResponse) XXX_Unmarshal(b []byte) error {
@ -9956,7 +9530,7 @@ func (m *DeleteAllPaymentsRequest) Reset() { *m = DeleteAllPaymentsReque
func (m *DeleteAllPaymentsRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteAllPaymentsRequest) ProtoMessage() {}
func (*DeleteAllPaymentsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{124}
return fileDescriptor_77a6da22d6a3feb1, []int{116}
}
func (m *DeleteAllPaymentsRequest) XXX_Unmarshal(b []byte) error {
@ -9987,7 +9561,7 @@ func (m *DeleteAllPaymentsResponse) Reset() { *m = DeleteAllPaymentsResp
func (m *DeleteAllPaymentsResponse) String() string { return proto.CompactTextString(m) }
func (*DeleteAllPaymentsResponse) ProtoMessage() {}
func (*DeleteAllPaymentsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{125}
return fileDescriptor_77a6da22d6a3feb1, []int{117}
}
func (m *DeleteAllPaymentsResponse) XXX_Unmarshal(b []byte) error {
@ -10019,7 +9593,7 @@ func (m *AbandonChannelRequest) Reset() { *m = AbandonChannelRequest{} }
func (m *AbandonChannelRequest) String() string { return proto.CompactTextString(m) }
func (*AbandonChannelRequest) ProtoMessage() {}
func (*AbandonChannelRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{126}
return fileDescriptor_77a6da22d6a3feb1, []int{118}
}
func (m *AbandonChannelRequest) XXX_Unmarshal(b []byte) error {
@ -10057,7 +9631,7 @@ func (m *AbandonChannelResponse) Reset() { *m = AbandonChannelResponse{}
func (m *AbandonChannelResponse) String() string { return proto.CompactTextString(m) }
func (*AbandonChannelResponse) ProtoMessage() {}
func (*AbandonChannelResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{127}
return fileDescriptor_77a6da22d6a3feb1, []int{119}
}
func (m *AbandonChannelResponse) XXX_Unmarshal(b []byte) error {
@ -10090,7 +9664,7 @@ func (m *DebugLevelRequest) Reset() { *m = DebugLevelRequest{} }
func (m *DebugLevelRequest) String() string { return proto.CompactTextString(m) }
func (*DebugLevelRequest) ProtoMessage() {}
func (*DebugLevelRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{128}
return fileDescriptor_77a6da22d6a3feb1, []int{120}
}
func (m *DebugLevelRequest) XXX_Unmarshal(b []byte) error {
@ -10136,7 +9710,7 @@ func (m *DebugLevelResponse) Reset() { *m = DebugLevelResponse{} }
func (m *DebugLevelResponse) String() string { return proto.CompactTextString(m) }
func (*DebugLevelResponse) ProtoMessage() {}
func (*DebugLevelResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{129}
return fileDescriptor_77a6da22d6a3feb1, []int{121}
}
func (m *DebugLevelResponse) XXX_Unmarshal(b []byte) error {
@ -10176,7 +9750,7 @@ func (m *PayReqString) Reset() { *m = PayReqString{} }
func (m *PayReqString) String() string { return proto.CompactTextString(m) }
func (*PayReqString) ProtoMessage() {}
func (*PayReqString) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{130}
return fileDescriptor_77a6da22d6a3feb1, []int{122}
}
func (m *PayReqString) XXX_Unmarshal(b []byte) error {
@ -10227,7 +9801,7 @@ func (m *PayReq) Reset() { *m = PayReq{} }
func (m *PayReq) String() string { return proto.CompactTextString(m) }
func (*PayReq) ProtoMessage() {}
func (*PayReq) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{131}
return fileDescriptor_77a6da22d6a3feb1, []int{123}
}
func (m *PayReq) XXX_Unmarshal(b []byte) error {
@ -10352,7 +9926,7 @@ func (m *Feature) Reset() { *m = Feature{} }
func (m *Feature) String() string { return proto.CompactTextString(m) }
func (*Feature) ProtoMessage() {}
func (*Feature) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{132}
return fileDescriptor_77a6da22d6a3feb1, []int{124}
}
func (m *Feature) XXX_Unmarshal(b []byte) error {
@ -10404,7 +9978,7 @@ func (m *FeeReportRequest) Reset() { *m = FeeReportRequest{} }
func (m *FeeReportRequest) String() string { return proto.CompactTextString(m) }
func (*FeeReportRequest) ProtoMessage() {}
func (*FeeReportRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{133}
return fileDescriptor_77a6da22d6a3feb1, []int{125}
}
func (m *FeeReportRequest) XXX_Unmarshal(b []byte) error {
@ -10447,7 +10021,7 @@ func (m *ChannelFeeReport) Reset() { *m = ChannelFeeReport{} }
func (m *ChannelFeeReport) String() string { return proto.CompactTextString(m) }
func (*ChannelFeeReport) ProtoMessage() {}
func (*ChannelFeeReport) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{134}
return fileDescriptor_77a6da22d6a3feb1, []int{126}
}
func (m *ChannelFeeReport) XXX_Unmarshal(b []byte) error {
@ -10525,7 +10099,7 @@ func (m *FeeReportResponse) Reset() { *m = FeeReportResponse{} }
func (m *FeeReportResponse) String() string { return proto.CompactTextString(m) }
func (*FeeReportResponse) ProtoMessage() {}
func (*FeeReportResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{135}
return fileDescriptor_77a6da22d6a3feb1, []int{127}
}
func (m *FeeReportResponse) XXX_Unmarshal(b []byte) error {
@ -10603,7 +10177,7 @@ func (m *PolicyUpdateRequest) Reset() { *m = PolicyUpdateRequest{} }
func (m *PolicyUpdateRequest) String() string { return proto.CompactTextString(m) }
func (*PolicyUpdateRequest) ProtoMessage() {}
func (*PolicyUpdateRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{136}
return fileDescriptor_77a6da22d6a3feb1, []int{128}
}
func (m *PolicyUpdateRequest) XXX_Unmarshal(b []byte) error {
@ -10721,7 +10295,7 @@ func (m *PolicyUpdateResponse) Reset() { *m = PolicyUpdateResponse{} }
func (m *PolicyUpdateResponse) String() string { return proto.CompactTextString(m) }
func (*PolicyUpdateResponse) ProtoMessage() {}
func (*PolicyUpdateResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{137}
return fileDescriptor_77a6da22d6a3feb1, []int{129}
}
func (m *PolicyUpdateResponse) XXX_Unmarshal(b []byte) error {
@ -10766,7 +10340,7 @@ func (m *ForwardingHistoryRequest) Reset() { *m = ForwardingHistoryReque
func (m *ForwardingHistoryRequest) String() string { return proto.CompactTextString(m) }
func (*ForwardingHistoryRequest) ProtoMessage() {}
func (*ForwardingHistoryRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{138}
return fileDescriptor_77a6da22d6a3feb1, []int{130}
}
func (m *ForwardingHistoryRequest) XXX_Unmarshal(b []byte) error {
@ -10849,7 +10423,7 @@ func (m *ForwardingEvent) Reset() { *m = ForwardingEvent{} }
func (m *ForwardingEvent) String() string { return proto.CompactTextString(m) }
func (*ForwardingEvent) ProtoMessage() {}
func (*ForwardingEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{139}
return fileDescriptor_77a6da22d6a3feb1, []int{131}
}
func (m *ForwardingEvent) XXX_Unmarshal(b []byte) error {
@ -10949,7 +10523,7 @@ func (m *ForwardingHistoryResponse) Reset() { *m = ForwardingHistoryResp
func (m *ForwardingHistoryResponse) String() string { return proto.CompactTextString(m) }
func (*ForwardingHistoryResponse) ProtoMessage() {}
func (*ForwardingHistoryResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{140}
return fileDescriptor_77a6da22d6a3feb1, []int{132}
}
func (m *ForwardingHistoryResponse) XXX_Unmarshal(b []byte) error {
@ -10996,7 +10570,7 @@ func (m *ExportChannelBackupRequest) Reset() { *m = ExportChannelBackupR
func (m *ExportChannelBackupRequest) String() string { return proto.CompactTextString(m) }
func (*ExportChannelBackupRequest) ProtoMessage() {}
func (*ExportChannelBackupRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{141}
return fileDescriptor_77a6da22d6a3feb1, []int{133}
}
func (m *ExportChannelBackupRequest) XXX_Unmarshal(b []byte) error {
@ -11043,7 +10617,7 @@ func (m *ChannelBackup) Reset() { *m = ChannelBackup{} }
func (m *ChannelBackup) String() string { return proto.CompactTextString(m) }
func (*ChannelBackup) ProtoMessage() {}
func (*ChannelBackup) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{142}
return fileDescriptor_77a6da22d6a3feb1, []int{134}
}
func (m *ChannelBackup) XXX_Unmarshal(b []byte) error {
@ -11097,7 +10671,7 @@ func (m *MultiChanBackup) Reset() { *m = MultiChanBackup{} }
func (m *MultiChanBackup) String() string { return proto.CompactTextString(m) }
func (*MultiChanBackup) ProtoMessage() {}
func (*MultiChanBackup) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{143}
return fileDescriptor_77a6da22d6a3feb1, []int{135}
}
func (m *MultiChanBackup) XXX_Unmarshal(b []byte) error {
@ -11142,7 +10716,7 @@ func (m *ChanBackupExportRequest) Reset() { *m = ChanBackupExportRequest
func (m *ChanBackupExportRequest) String() string { return proto.CompactTextString(m) }
func (*ChanBackupExportRequest) ProtoMessage() {}
func (*ChanBackupExportRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{144}
return fileDescriptor_77a6da22d6a3feb1, []int{136}
}
func (m *ChanBackupExportRequest) XXX_Unmarshal(b []byte) error {
@ -11181,7 +10755,7 @@ func (m *ChanBackupSnapshot) Reset() { *m = ChanBackupSnapshot{} }
func (m *ChanBackupSnapshot) String() string { return proto.CompactTextString(m) }
func (*ChanBackupSnapshot) ProtoMessage() {}
func (*ChanBackupSnapshot) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{145}
return fileDescriptor_77a6da22d6a3feb1, []int{137}
}
func (m *ChanBackupSnapshot) XXX_Unmarshal(b []byte) error {
@ -11229,7 +10803,7 @@ func (m *ChannelBackups) Reset() { *m = ChannelBackups{} }
func (m *ChannelBackups) String() string { return proto.CompactTextString(m) }
func (*ChannelBackups) ProtoMessage() {}
func (*ChannelBackups) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{146}
return fileDescriptor_77a6da22d6a3feb1, []int{138}
}
func (m *ChannelBackups) XXX_Unmarshal(b []byte) error {
@ -11271,7 +10845,7 @@ func (m *RestoreChanBackupRequest) Reset() { *m = RestoreChanBackupReque
func (m *RestoreChanBackupRequest) String() string { return proto.CompactTextString(m) }
func (*RestoreChanBackupRequest) ProtoMessage() {}
func (*RestoreChanBackupRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{147}
return fileDescriptor_77a6da22d6a3feb1, []int{139}
}
func (m *RestoreChanBackupRequest) XXX_Unmarshal(b []byte) error {
@ -11347,7 +10921,7 @@ func (m *RestoreBackupResponse) Reset() { *m = RestoreBackupResponse{} }
func (m *RestoreBackupResponse) String() string { return proto.CompactTextString(m) }
func (*RestoreBackupResponse) ProtoMessage() {}
func (*RestoreBackupResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{148}
return fileDescriptor_77a6da22d6a3feb1, []int{140}
}
func (m *RestoreBackupResponse) XXX_Unmarshal(b []byte) error {
@ -11378,7 +10952,7 @@ func (m *ChannelBackupSubscription) Reset() { *m = ChannelBackupSubscrip
func (m *ChannelBackupSubscription) String() string { return proto.CompactTextString(m) }
func (*ChannelBackupSubscription) ProtoMessage() {}
func (*ChannelBackupSubscription) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{149}
return fileDescriptor_77a6da22d6a3feb1, []int{141}
}
func (m *ChannelBackupSubscription) XXX_Unmarshal(b []byte) error {
@ -11409,7 +10983,7 @@ func (m *VerifyChanBackupResponse) Reset() { *m = VerifyChanBackupRespon
func (m *VerifyChanBackupResponse) String() string { return proto.CompactTextString(m) }
func (*VerifyChanBackupResponse) ProtoMessage() {}
func (*VerifyChanBackupResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{150}
return fileDescriptor_77a6da22d6a3feb1, []int{142}
}
func (m *VerifyChanBackupResponse) XXX_Unmarshal(b []byte) error {
@ -11444,7 +11018,7 @@ func (m *MacaroonPermission) Reset() { *m = MacaroonPermission{} }
func (m *MacaroonPermission) String() string { return proto.CompactTextString(m) }
func (*MacaroonPermission) ProtoMessage() {}
func (*MacaroonPermission) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{151}
return fileDescriptor_77a6da22d6a3feb1, []int{143}
}
func (m *MacaroonPermission) XXX_Unmarshal(b []byte) error {
@ -11491,7 +11065,7 @@ func (m *BakeMacaroonRequest) Reset() { *m = BakeMacaroonRequest{} }
func (m *BakeMacaroonRequest) String() string { return proto.CompactTextString(m) }
func (*BakeMacaroonRequest) ProtoMessage() {}
func (*BakeMacaroonRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{152}
return fileDescriptor_77a6da22d6a3feb1, []int{144}
}
func (m *BakeMacaroonRequest) XXX_Unmarshal(b []byte) error {
@ -11531,7 +11105,7 @@ func (m *BakeMacaroonResponse) Reset() { *m = BakeMacaroonResponse{} }
func (m *BakeMacaroonResponse) String() string { return proto.CompactTextString(m) }
func (*BakeMacaroonResponse) ProtoMessage() {}
func (*BakeMacaroonResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{153}
return fileDescriptor_77a6da22d6a3feb1, []int{145}
}
func (m *BakeMacaroonResponse) XXX_Unmarshal(b []byte) error {
@ -11587,7 +11161,7 @@ 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_77a6da22d6a3feb1, []int{154}
return fileDescriptor_77a6da22d6a3feb1, []int{146}
}
func (m *Failure) XXX_Unmarshal(b []byte) error {
@ -11731,7 +11305,7 @@ 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_77a6da22d6a3feb1, []int{155}
return fileDescriptor_77a6da22d6a3feb1, []int{147}
}
func (m *ChannelUpdate) XXX_Unmarshal(b []byte) error {
@ -11853,14 +11427,6 @@ func init() {
proto.RegisterEnum("lnrpc.Payment_PaymentStatus", Payment_PaymentStatus_name, Payment_PaymentStatus_value)
proto.RegisterEnum("lnrpc.HTLCAttempt_HTLCStatus", HTLCAttempt_HTLCStatus_name, HTLCAttempt_HTLCStatus_value)
proto.RegisterEnum("lnrpc.Failure_FailureCode", Failure_FailureCode_name, Failure_FailureCode_value)
proto.RegisterType((*GenSeedRequest)(nil), "lnrpc.GenSeedRequest")
proto.RegisterType((*GenSeedResponse)(nil), "lnrpc.GenSeedResponse")
proto.RegisterType((*InitWalletRequest)(nil), "lnrpc.InitWalletRequest")
proto.RegisterType((*InitWalletResponse)(nil), "lnrpc.InitWalletResponse")
proto.RegisterType((*UnlockWalletRequest)(nil), "lnrpc.UnlockWalletRequest")
proto.RegisterType((*UnlockWalletResponse)(nil), "lnrpc.UnlockWalletResponse")
proto.RegisterType((*ChangePasswordRequest)(nil), "lnrpc.ChangePasswordRequest")
proto.RegisterType((*ChangePasswordResponse)(nil), "lnrpc.ChangePasswordResponse")
proto.RegisterType((*Utxo)(nil), "lnrpc.Utxo")
proto.RegisterType((*Transaction)(nil), "lnrpc.Transaction")
proto.RegisterType((*GetTransactionsRequest)(nil), "lnrpc.GetTransactionsRequest")
@ -12032,762 +11598,738 @@ func init() {
func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) }
var fileDescriptor_77a6da22d6a3feb1 = []byte{
// 12074 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0xbd, 0x59, 0x6c, 0x24, 0x49,
0x7a, 0x18, 0xdc, 0x75, 0x91, 0x55, 0x5f, 0x1d, 0x2c, 0x06, 0xaf, 0x6a, 0xf6, 0xf4, 0x74, 0x4f,
0xce, 0xec, 0x74, 0x4f, 0xcf, 0x2c, 0xbb, 0xa7, 0x77, 0x7b, 0x66, 0x77, 0xe6, 0xd7, 0x6a, 0x8b,
0x64, 0xb1, 0x59, 0xdb, 0x64, 0x91, 0x93, 0x55, 0x9c, 0xd1, 0xac, 0x8e, 0xdc, 0x64, 0x55, 0x90,
0x4c, 0x75, 0x55, 0x66, 0x4d, 0x66, 0x16, 0x8f, 0x5d, 0xcc, 0xff, 0x60, 0xf8, 0x10, 0x04, 0xdb,
0x80, 0x60, 0xcb, 0x80, 0x65, 0x09, 0x3e, 0x04, 0xdb, 0x30, 0x0c, 0x08, 0x02, 0x56, 0x7e, 0x30,
0xe0, 0x77, 0xbd, 0xf8, 0x80, 0x21, 0xf9, 0xc1, 0x86, 0x20, 0xc0, 0xb0, 0x2d, 0xbf, 0x19, 0x02,
0xfc, 0x6c, 0xc0, 0x88, 0xef, 0x8b, 0xc8, 0x8c, 0xac, 0x4a, 0x76, 0xf7, 0xec, 0xae, 0xf7, 0x85,
0xac, 0xfc, 0xe2, 0x8b, 0xfb, 0x8b, 0x2f, 0xbe, 0x2b, 0x22, 0xa0, 0xe4, 0x8f, 0xfb, 0x1b, 0x63,
0xdf, 0x0b, 0x3d, 0x56, 0x18, 0xba, 0xfe, 0xb8, 0xbf, 0xfe, 0xda, 0xa9, 0xe7, 0x9d, 0x0e, 0xf9,
0x43, 0x7b, 0xec, 0x3c, 0xb4, 0x5d, 0xd7, 0x0b, 0xed, 0xd0, 0xf1, 0xdc, 0x80, 0x90, 0x8c, 0x1f,
0x40, 0xed, 0x29, 0x77, 0xbb, 0x9c, 0x0f, 0x4c, 0xfe, 0xc5, 0x84, 0x07, 0x21, 0x7b, 0x17, 0x16,
0x6d, 0xfe, 0x43, 0xce, 0x07, 0xd6, 0xd8, 0x0e, 0x82, 0xf1, 0x99, 0x6f, 0x07, 0xbc, 0x91, 0xb9,
0x9b, 0xb9, 0x5f, 0x31, 0xeb, 0x94, 0x70, 0x18, 0xc1, 0xd9, 0x1b, 0x50, 0x09, 0x04, 0x2a, 0x77,
0x43, 0xdf, 0x1b, 0x5f, 0x35, 0xb2, 0x88, 0x57, 0x16, 0xb0, 0x16, 0x81, 0x8c, 0x21, 0x2c, 0x44,
0x35, 0x04, 0x63, 0xcf, 0x0d, 0x38, 0x7b, 0x04, 0xcb, 0x7d, 0x67, 0x7c, 0xc6, 0x7d, 0x0b, 0x33,
0x8f, 0x5c, 0x3e, 0xf2, 0x5c, 0xa7, 0xdf, 0xc8, 0xdc, 0xcd, 0xdd, 0x2f, 0x99, 0x8c, 0xd2, 0x44,
0x8e, 0x7d, 0x99, 0xc2, 0xee, 0xc1, 0x02, 0x77, 0x09, 0xce, 0x07, 0x98, 0x4b, 0x56, 0x55, 0x8b,
0xc1, 0x22, 0x83, 0xf1, 0x1b, 0x59, 0x58, 0x6c, 0xbb, 0x4e, 0xf8, 0x99, 0x3d, 0x1c, 0xf2, 0x50,
0xf5, 0xe9, 0x1e, 0x2c, 0x5c, 0x20, 0x00, 0xfb, 0x74, 0xe1, 0xf9, 0x03, 0xd9, 0xa3, 0x1a, 0x81,
0x0f, 0x25, 0xf4, 0xda, 0x96, 0x65, 0xaf, 0x6d, 0x59, 0xea, 0x70, 0xe5, 0xae, 0x19, 0xae, 0x7b,
0xb0, 0xe0, 0xf3, 0xbe, 0x77, 0xce, 0xfd, 0x2b, 0xeb, 0xc2, 0x71, 0x07, 0xde, 0x45, 0x23, 0x7f,
0x37, 0x73, 0xbf, 0x60, 0xd6, 0x14, 0xf8, 0x33, 0x84, 0xb2, 0x4d, 0x58, 0xe8, 0x9f, 0xd9, 0xae,
0xcb, 0x87, 0xd6, 0xb1, 0xdd, 0x7f, 0x3e, 0x19, 0x07, 0x8d, 0xc2, 0xdd, 0xcc, 0xfd, 0xf2, 0xe3,
0x9b, 0x1b, 0x38, 0xab, 0x1b, 0x5b, 0x67, 0xb6, 0xbb, 0x89, 0x29, 0x5d, 0xd7, 0x1e, 0x07, 0x67,
0x5e, 0x68, 0xd6, 0x64, 0x0e, 0x02, 0x07, 0xc6, 0x32, 0x30, 0x7d, 0x24, 0x68, 0xec, 0x8d, 0x7f,
0x99, 0x81, 0xa5, 0x23, 0x77, 0xe8, 0xf5, 0x9f, 0xff, 0x84, 0x43, 0x94, 0xd2, 0x87, 0xec, 0xab,
0xf6, 0x21, 0xf7, 0x55, 0xfb, 0xb0, 0x0a, 0xcb, 0xc9, 0xc6, 0xca, 0x5e, 0x70, 0x58, 0x11, 0xb9,
0x4f, 0xb9, 0x6a, 0x96, 0xea, 0xc6, 0x3b, 0x50, 0xef, 0x4f, 0x7c, 0x9f, 0xbb, 0x33, 0xfd, 0x58,
0x90, 0xf0, 0xa8, 0x23, 0x6f, 0x40, 0xc5, 0xe5, 0x17, 0x31, 0x9a, 0xa4, 0x5d, 0x97, 0x5f, 0x28,
0x14, 0xa3, 0x01, 0xab, 0xd3, 0xd5, 0xc8, 0x06, 0xfc, 0x45, 0x06, 0xf2, 0x47, 0xe1, 0xa5, 0xc7,
0x9e, 0x40, 0xc5, 0x1e, 0x0c, 0x7c, 0x1e, 0x04, 0x56, 0x78, 0x35, 0xa6, 0x95, 0x52, 0x7b, 0xcc,
0x64, 0x17, 0x9b, 0x94, 0xd4, 0xbb, 0x1a, 0x73, 0xb3, 0x6c, 0xc7, 0x1f, 0xac, 0x01, 0xf3, 0xf2,
0x13, 0xeb, 0x2d, 0x99, 0xea, 0x93, 0xdd, 0x06, 0xb0, 0x47, 0xde, 0xc4, 0x0d, 0xad, 0xc0, 0x0e,
0x71, 0xc4, 0x72, 0x66, 0x89, 0x20, 0x5d, 0x3b, 0x64, 0xb7, 0xa0, 0x34, 0x7e, 0x6e, 0x05, 0x7d,
0xdf, 0x19, 0x87, 0x48, 0x3c, 0x25, 0xb3, 0x38, 0x7e, 0xde, 0xc5, 0x6f, 0xf6, 0x2e, 0x14, 0xbd,
0x49, 0x38, 0xf6, 0x1c, 0x37, 0x94, 0xf4, 0xb2, 0x20, 0x1b, 0x72, 0x30, 0x09, 0x0f, 0x05, 0xd8,
0x8c, 0x10, 0xd8, 0x5b, 0x50, 0xed, 0x7b, 0xee, 0x89, 0xe3, 0x8f, 0x88, 0x23, 0x34, 0xe6, 0xb0,
0xae, 0x24, 0xd0, 0xf8, 0xc3, 0x2c, 0x94, 0x7b, 0xbe, 0xed, 0x06, 0x76, 0x5f, 0x00, 0xd8, 0x1a,
0xcc, 0x87, 0x97, 0xd6, 0x99, 0x1d, 0x9c, 0x61, 0x57, 0x4b, 0xe6, 0x5c, 0x78, 0xb9, 0x6b, 0x07,
0x67, 0x6c, 0x15, 0xe6, 0xa8, 0x95, 0xd8, 0xa1, 0x9c, 0x29, 0xbf, 0xc4, 0x02, 0x71, 0x27, 0x23,
0x2b, 0x59, 0x55, 0x0e, 0x29, 0xa6, 0xee, 0x4e, 0x46, 0x5b, 0x3a, 0x5c, 0x74, 0xfe, 0x58, 0x4c,
0x37, 0x55, 0x40, 0xdd, 0x2b, 0x21, 0x04, 0xeb, 0x78, 0x03, 0x2a, 0x32, 0x99, 0x3b, 0xa7, 0x67,
0xd4, 0xc7, 0x82, 0x59, 0x26, 0x04, 0x04, 0x89, 0x12, 0x42, 0x67, 0xc4, 0xad, 0x20, 0xb4, 0x47,
0x63, 0xd9, 0xa5, 0x92, 0x80, 0x74, 0x05, 0x00, 0x93, 0xbd, 0xd0, 0x1e, 0x5a, 0x27, 0x9c, 0x07,
0x8d, 0x79, 0x99, 0x2c, 0x20, 0x3b, 0x9c, 0x07, 0xec, 0x6b, 0x50, 0x1b, 0xf0, 0x20, 0xb4, 0xe4,
0x64, 0xf0, 0xa0, 0x51, 0xc4, 0x95, 0x5f, 0x15, 0xd0, 0xa6, 0x02, 0xb2, 0xd7, 0x00, 0x7c, 0xfb,
0xc2, 0x12, 0x03, 0xc1, 0x2f, 0x1b, 0x25, 0x9a, 0x05, 0xdf, 0xbe, 0xe8, 0x5d, 0xee, 0xf2, 0x4b,
0xe3, 0xfb, 0xb0, 0xfa, 0x94, 0x87, 0xda, 0xa0, 0x05, 0x8a, 0x3a, 0x05, 0xbb, 0x0c, 0x6d, 0x3f,
0x54, 0xed, 0xcf, 0x50, 0xfb, 0x11, 0x16, 0xb7, 0x9f, 0xbb, 0x03, 0x85, 0x40, 0x2b, 0xab, 0xc4,
0xdd, 0x01, 0x25, 0x1b, 0x7b, 0xc0, 0xb4, 0x82, 0xb7, 0x79, 0x68, 0x3b, 0xc3, 0x80, 0x7d, 0x00,
0x95, 0x50, 0xab, 0x0e, 0x19, 0x69, 0x39, 0x22, 0x42, 0x2d, 0x83, 0x99, 0xc0, 0x33, 0xce, 0xa0,
0xb8, 0xc3, 0xf9, 0x9e, 0x33, 0x72, 0x42, 0xb6, 0x0a, 0x85, 0x13, 0xe7, 0x92, 0xd3, 0x72, 0xc9,
0xed, 0xde, 0x30, 0xe9, 0x93, 0xdd, 0x01, 0xc0, 0x1f, 0xd6, 0x28, 0xa2, 0xc7, 0xdd, 0x1b, 0x66,
0x09, 0x61, 0xfb, 0x81, 0x1d, 0xb2, 0x75, 0x98, 0x1f, 0x73, 0xbf, 0xcf, 0xd5, 0xcc, 0xef, 0xde,
0x30, 0x15, 0x60, 0x73, 0x1e, 0x0a, 0x43, 0x51, 0xba, 0xf1, 0xc7, 0x05, 0x28, 0x77, 0xb9, 0x1b,
0xad, 0x53, 0x06, 0x79, 0x31, 0xa4, 0x72, 0x6d, 0xe2, 0x6f, 0xf6, 0x26, 0x94, 0x71, 0xf0, 0x83,
0xd0, 0x77, 0xdc, 0x53, 0x5a, 0x17, 0x9b, 0xd9, 0x46, 0xc6, 0x04, 0x01, 0xee, 0x22, 0x94, 0xd5,
0x21, 0x67, 0x8f, 0xd4, 0xba, 0x10, 0x3f, 0xd9, 0x4d, 0x28, 0xda, 0xa3, 0x90, 0x9a, 0x57, 0x41,
0xf0, 0xbc, 0x3d, 0x0a, 0xb1, 0x69, 0x6f, 0x40, 0x65, 0x6c, 0x5f, 0x8d, 0x04, 0x37, 0x88, 0x08,
0xaa, 0x62, 0x96, 0x25, 0x0c, 0x49, 0xea, 0x31, 0x2c, 0xe9, 0x28, 0xaa, 0xf2, 0x42, 0x54, 0xf9,
0xa2, 0x86, 0x2d, 0xdb, 0x70, 0x0f, 0x16, 0x54, 0x1e, 0x9f, 0xfa, 0x83, 0x84, 0x56, 0x32, 0x6b,
0x12, 0xac, 0x7a, 0x79, 0x1f, 0xea, 0x27, 0x8e, 0x6b, 0x0f, 0xad, 0xfe, 0x30, 0x3c, 0xb7, 0x06,
0x7c, 0x18, 0xda, 0x48, 0x73, 0x05, 0xb3, 0x86, 0xf0, 0xad, 0x61, 0x78, 0xbe, 0x2d, 0xa0, 0xec,
0x3d, 0x28, 0x9d, 0x70, 0x6e, 0xe1, 0x60, 0x35, 0x8a, 0x89, 0xa5, 0xab, 0x66, 0xc8, 0x2c, 0x9e,
0xa8, 0xb9, 0x7a, 0x0f, 0xea, 0xde, 0x24, 0x3c, 0xf5, 0x1c, 0xf7, 0xd4, 0x12, 0x1c, 0xd3, 0x72,
0x06, 0x48, 0x85, 0xf9, 0xcd, 0xec, 0xa3, 0x8c, 0x59, 0x53, 0x69, 0x82, 0x77, 0xb5, 0x07, 0xec,
0x6d, 0x58, 0x18, 0xda, 0x41, 0x68, 0x9d, 0x79, 0x63, 0x6b, 0x3c, 0x39, 0x7e, 0xce, 0xaf, 0x1a,
0x55, 0x1c, 0x88, 0xaa, 0x00, 0xef, 0x7a, 0xe3, 0x43, 0x04, 0x0a, 0xd2, 0xc3, 0x76, 0x52, 0x23,
0xe0, 0x6e, 0xe6, 0x7e, 0xd5, 0x2c, 0x09, 0x08, 0x55, 0xfa, 0x39, 0x2c, 0xe1, 0xf4, 0xf4, 0x27,
0x41, 0xe8, 0x8d, 0x2c, 0xc1, 0xed, 0xfd, 0x41, 0xd0, 0x28, 0x23, 0xad, 0xbd, 0x23, 0x1b, 0xab,
0xcd, 0xf1, 0xc6, 0x36, 0x0f, 0xc2, 0x2d, 0x44, 0x36, 0x09, 0x57, 0x88, 0x04, 0x57, 0xe6, 0xe2,
0x60, 0x1a, 0xce, 0xde, 0x03, 0x66, 0x0f, 0x87, 0xde, 0x85, 0x15, 0xf0, 0xe1, 0x89, 0x25, 0x07,
0xb1, 0x51, 0xbb, 0x9b, 0xb9, 0x5f, 0x34, 0xeb, 0x98, 0xd2, 0xe5, 0xc3, 0x93, 0x43, 0x82, 0xb3,
0x0f, 0x00, 0x97, 0xa3, 0x75, 0xc2, 0xed, 0x70, 0xe2, 0xf3, 0xa0, 0xb1, 0x70, 0x37, 0x77, 0xbf,
0xf6, 0x78, 0x31, 0x1a, 0x2f, 0x04, 0x6f, 0x3a, 0xa1, 0x59, 0x11, 0x78, 0xf2, 0x3b, 0x58, 0xdf,
0x86, 0xd5, 0xf4, 0x26, 0x09, 0xa2, 0x12, 0xa3, 0x22, 0x88, 0x31, 0x6f, 0x8a, 0x9f, 0x6c, 0x19,
0x0a, 0xe7, 0xf6, 0x70, 0xc2, 0xe5, 0xae, 0x40, 0x1f, 0x1f, 0x65, 0xbf, 0x95, 0x31, 0xfe, 0x28,
0x03, 0x15, 0xea, 0xa5, 0x94, 0x66, 0xde, 0x84, 0xaa, 0xa2, 0x06, 0xee, 0xfb, 0x9e, 0x2f, 0xf9,
0xa2, 0xa2, 0xbc, 0x96, 0x80, 0x89, 0x7d, 0x49, 0x21, 0x8d, 0x7d, 0xee, 0x8c, 0xec, 0x53, 0x55,
0xb4, 0x22, 0xa5, 0x43, 0x09, 0x66, 0xef, 0xc7, 0xe5, 0xf9, 0xde, 0x24, 0xe4, 0x72, 0xd7, 0xac,
0xc8, 0xee, 0x99, 0x02, 0x16, 0x95, 0x8e, 0x5f, 0xaf, 0x40, 0xe7, 0xc6, 0x6f, 0x67, 0x80, 0x89,
0x66, 0xf7, 0x3c, 0x2a, 0x20, 0xe6, 0x48, 0x89, 0x9c, 0x99, 0x57, 0x5e, 0x21, 0xd9, 0x17, 0xad,
0x10, 0x03, 0x0a, 0xd4, 0xf6, 0x7c, 0x4a, 0xdb, 0x29, 0xe9, 0x7b, 0xf9, 0x62, 0xae, 0x9e, 0x37,
0xfe, 0x4b, 0x0e, 0x96, 0xb7, 0x68, 0xd3, 0x6f, 0xf6, 0xfb, 0x7c, 0x1c, 0xad, 0x9d, 0x3b, 0x50,
0x76, 0xbd, 0x01, 0x57, 0x14, 0x4b, 0x0d, 0x03, 0x01, 0xd2, 0xc8, 0xf5, 0xcc, 0x76, 0x5c, 0x6a,
0x38, 0x0d, 0x66, 0x09, 0x21, 0xd8, 0xec, 0xb7, 0x61, 0x61, 0xcc, 0xdd, 0x81, 0xbe, 0x44, 0x48,
0x2c, 0xab, 0x4a, 0xb0, 0x5c, 0x1d, 0x77, 0xa0, 0x7c, 0x32, 0x21, 0x3c, 0xc1, 0x58, 0xf2, 0x48,
0x03, 0x20, 0x41, 0x4d, 0xe2, 0x2f, 0xe3, 0x49, 0x70, 0x86, 0xa9, 0x05, 0x4c, 0x9d, 0x17, 0xdf,
0x22, 0xe9, 0x36, 0xc0, 0x60, 0x12, 0x84, 0x72, 0xc5, 0xcc, 0x61, 0x62, 0x49, 0x40, 0x68, 0xc5,
0x7c, 0x1d, 0x96, 0x46, 0xf6, 0xa5, 0x85, 0xb4, 0x63, 0x39, 0xae, 0x75, 0x32, 0x44, 0xa6, 0x3e,
0x8f, 0x78, 0xf5, 0x91, 0x7d, 0xf9, 0xa9, 0x48, 0x69, 0xbb, 0x3b, 0x08, 0x17, 0x6c, 0x45, 0x09,
0x4c, 0x3e, 0x0f, 0xb8, 0x7f, 0xce, 0x91, 0x13, 0xe4, 0x23, 0xa9, 0xc8, 0x24, 0xa8, 0x68, 0xd1,
0x48, 0xf4, 0x3b, 0x1c, 0xf6, 0x69, 0xd9, 0x9b, 0xf3, 0x23, 0xc7, 0xdd, 0x0d, 0x87, 0x7d, 0xb1,
0x33, 0x09, 0x3e, 0x32, 0xe6, 0xbe, 0xf5, 0xfc, 0x02, 0xd7, 0x70, 0x1e, 0xf9, 0xc6, 0x21, 0xf7,
0x9f, 0x5d, 0x08, 0xe1, 0xa1, 0x1f, 0x20, 0x23, 0xb2, 0xaf, 0x1a, 0x65, 0x5c, 0xe0, 0xc5, 0x7e,
0x20, 0x58, 0x90, 0x7d, 0x25, 0x16, 0xa1, 0x68, 0xad, 0x8d, 0xb3, 0xc0, 0x07, 0x58, 0x7c, 0x80,
0x1c, 0xb5, 0x8a, 0x8d, 0x6d, 0xca, 0x04, 0x51, 0x4f, 0x20, 0xa8, 0x5e, 0x35, 0xf6, 0x64, 0x68,
0x9f, 0x06, 0xc8, 0x52, 0xaa, 0x66, 0x45, 0x02, 0x77, 0x04, 0xcc, 0xf8, 0x8c, 0xc4, 0x34, 0x6d,
0x6e, 0xe5, 0x9a, 0x11, 0xc2, 0x02, 0x42, 0x70, 0x5e, 0x8b, 0xa6, 0xfc, 0x4a, 0x9b, 0xb4, 0x6c,
0xca, 0xa4, 0x19, 0xbf, 0x97, 0x81, 0x8a, 0x2c, 0x19, 0xc5, 0x1a, 0xb6, 0x01, 0x4c, 0xcd, 0x62,
0x78, 0xe9, 0x0c, 0xac, 0xe3, 0xab, 0x90, 0x07, 0x44, 0x34, 0xbb, 0x37, 0xcc, 0xba, 0x4c, 0xeb,
0x5d, 0x3a, 0x83, 0x4d, 0x91, 0xc2, 0x1e, 0x40, 0x3d, 0x81, 0x1f, 0x84, 0x3e, 0x51, 0xf4, 0xee,
0x0d, 0xb3, 0xa6, 0x61, 0x77, 0x43, 0x5f, 0xac, 0x11, 0x21, 0x34, 0x4d, 0x42, 0xcb, 0x71, 0x07,
0xfc, 0x12, 0xc9, 0xa8, 0x6a, 0x96, 0x09, 0xd6, 0x16, 0xa0, 0xcd, 0x1a, 0x54, 0xf4, 0xe2, 0x8c,
0x53, 0x28, 0x2a, 0x89, 0x0b, 0x45, 0x8e, 0xa9, 0x26, 0x99, 0xa5, 0x30, 0x6a, 0xc9, 0x4d, 0x28,
0x26, 0x5b, 0x60, 0xce, 0x87, 0xaf, 0x5c, 0xb1, 0xf1, 0x1d, 0xa8, 0xef, 0x09, 0xe2, 0x71, 0x05,
0xb1, 0x4a, 0x09, 0x72, 0x15, 0xe6, 0xb4, 0x45, 0x53, 0x32, 0xe5, 0x97, 0xd8, 0x73, 0xcf, 0xbc,
0x20, 0x94, 0xb5, 0xe0, 0x6f, 0xe3, 0x8f, 0x33, 0xc0, 0x5a, 0x41, 0xe8, 0x8c, 0xec, 0x90, 0xef,
0xf0, 0x88, 0x2d, 0x1c, 0x40, 0x45, 0x94, 0xd6, 0xf3, 0x9a, 0x24, 0xd2, 0x91, 0x40, 0xf1, 0xae,
0x5c, 0xc6, 0xb3, 0x19, 0x36, 0x74, 0x6c, 0x62, 0xf3, 0x89, 0x02, 0xc4, 0x2a, 0x0b, 0x6d, 0xff,
0x94, 0x87, 0x28, 0x08, 0x4a, 0xb9, 0x06, 0x08, 0x24, 0x44, 0xc0, 0xf5, 0x5f, 0x84, 0xc5, 0x99,
0x32, 0x74, 0xbe, 0x5c, 0x4a, 0xe1, 0xcb, 0x39, 0x9d, 0x2f, 0x5b, 0xb0, 0x94, 0x68, 0x97, 0xa4,
0xb4, 0x35, 0x98, 0x17, 0x0b, 0x42, 0x08, 0x07, 0x19, 0x92, 0x4b, 0x4f, 0x38, 0x17, 0x82, 0xf4,
0x43, 0x58, 0x3e, 0xe1, 0xdc, 0xb7, 0x43, 0x4c, 0xc4, 0x15, 0x23, 0x66, 0x48, 0x16, 0xbc, 0x28,
0xd3, 0xba, 0x76, 0x78, 0xc8, 0x7d, 0x31, 0x53, 0xc6, 0x7f, 0xcb, 0xc0, 0x82, 0xe0, 0xa0, 0xfb,
0xb6, 0x7b, 0xa5, 0xc6, 0x69, 0x2f, 0x75, 0x9c, 0xee, 0x6b, 0x9b, 0xa1, 0x86, 0xfd, 0x55, 0x07,
0x29, 0x37, 0x3d, 0x48, 0xec, 0x2e, 0x54, 0x12, 0x6d, 0x2d, 0x60, 0x5b, 0x21, 0x88, 0x1a, 0xf9,
0xd3, 0x0f, 0xe3, 0xdb, 0x50, 0x8f, 0x9b, 0x2d, 0xc7, 0x90, 0x41, 0x5e, 0x90, 0xa4, 0x2c, 0x00,
0x7f, 0x1b, 0xbf, 0x9b, 0x21, 0xc4, 0x2d, 0xcf, 0x89, 0xe5, 0x5b, 0x06, 0x79, 0x21, 0x39, 0x2b,
0x44, 0xf1, 0xfb, 0x5a, 0xbd, 0xe0, 0xa7, 0xef, 0xac, 0x58, 0x3a, 0x81, 0x10, 0x96, 0xed, 0xe1,
0x10, 0x99, 0x6f, 0xd1, 0x9c, 0x17, 0xdf, 0xcd, 0xe1, 0xd0, 0xb8, 0x07, 0x8b, 0x5a, 0xeb, 0x5e,
0xd0, 0x8f, 0x0e, 0xb0, 0x3d, 0x27, 0x08, 0x8f, 0xdc, 0x60, 0xac, 0x09, 0x6e, 0xb7, 0xa0, 0x24,
0x38, 0xac, 0x68, 0x59, 0x20, 0xa5, 0x74, 0xc1, 0x72, 0x45, 0xbb, 0x02, 0x4c, 0xb4, 0x2f, 0x65,
0x62, 0x56, 0x26, 0xda, 0x97, 0x98, 0x68, 0x7c, 0x0b, 0x96, 0x12, 0xe5, 0xc9, 0xaa, 0xdf, 0x80,
0xc2, 0x24, 0xbc, 0xf4, 0x94, 0x68, 0x5e, 0x96, 0x14, 0x22, 0x54, 0x48, 0x93, 0x52, 0x8c, 0x8f,
0x61, 0xb1, 0xc3, 0x2f, 0xe4, 0x22, 0x56, 0x0d, 0x79, 0x1b, 0xf2, 0x2f, 0x51, 0x2b, 0x31, 0xdd,
0xd8, 0x00, 0xa6, 0x67, 0x96, 0xb5, 0x6a, 0x5a, 0x66, 0x26, 0xa1, 0x65, 0x1a, 0x6f, 0x03, 0xeb,
0x3a, 0xa7, 0xee, 0x3e, 0x0f, 0x02, 0xfb, 0x34, 0x5a, 0xf6, 0x75, 0xc8, 0x8d, 0x82, 0x53, 0xc9,
0xa3, 0xc4, 0x4f, 0xe3, 0x1b, 0xb0, 0x94, 0xc0, 0x93, 0x05, 0xbf, 0x06, 0xa5, 0xc0, 0x39, 0x75,
0x51, 0xb0, 0x92, 0x45, 0xc7, 0x00, 0x63, 0x07, 0x96, 0x3f, 0xe5, 0xbe, 0x73, 0x72, 0xf5, 0xb2,
0xe2, 0x93, 0xe5, 0x64, 0xa7, 0xcb, 0x69, 0xc1, 0xca, 0x54, 0x39, 0xb2, 0x7a, 0x22, 0x5f, 0x39,
0x93, 0x45, 0x93, 0x3e, 0x34, 0xbe, 0x97, 0xd5, 0xf9, 0x9e, 0x71, 0x04, 0x6c, 0xcb, 0x73, 0x5d,
0xde, 0x0f, 0x0f, 0x39, 0xf7, 0x63, 0x3b, 0x57, 0x4c, 0xab, 0xe5, 0xc7, 0x6b, 0x72, 0x64, 0xa7,
0x99, 0xa9, 0x24, 0x62, 0x06, 0xf9, 0x31, 0xf7, 0x47, 0x58, 0x70, 0xd1, 0xc4, 0xdf, 0xc6, 0x0a,
0x2c, 0x25, 0x8a, 0x95, 0x96, 0x81, 0x47, 0xb0, 0xb2, 0xed, 0x04, 0xfd, 0xd9, 0x0a, 0xd7, 0x60,
0x7e, 0x3c, 0x39, 0xb6, 0x92, 0x7c, 0xf9, 0x19, 0xbf, 0x32, 0x1a, 0xb0, 0x3a, 0x9d, 0x43, 0x96,
0xf5, 0x57, 0x33, 0x90, 0xdf, 0xed, 0xed, 0x6d, 0xb1, 0x75, 0x28, 0x3a, 0x6e, 0xdf, 0x1b, 0x09,
0xc1, 0x8b, 0xfa, 0x1c, 0x7d, 0x5f, 0xbb, 0xc0, 0x6e, 0x41, 0x09, 0xe5, 0x35, 0xa1, 0x1c, 0x4b,
0xd1, 0xa7, 0x28, 0x00, 0x7b, 0x5e, 0xff, 0xb9, 0xd0, 0xca, 0xf9, 0xe5, 0xd8, 0xf1, 0x51, 0xef,
0x56, 0xda, 0x66, 0x9e, 0xf6, 0xfa, 0x38, 0x41, 0x2a, 0x9d, 0xff, 0xba, 0x08, 0xf3, 0x72, 0xb7,
0xa5, 0x9d, 0x3b, 0x74, 0xce, 0x79, 0xbc, 0x73, 0x8b, 0x2f, 0x21, 0x0f, 0xf8, 0x7c, 0xe4, 0x85,
0x91, 0xc0, 0x46, 0x73, 0x50, 0x21, 0xa0, 0x14, 0xd9, 0x34, 0xa1, 0x81, 0x8c, 0x14, 0x39, 0x42,
0xea, 0xeb, 0x5b, 0xf9, 0x2d, 0x98, 0x57, 0x7b, 0x7f, 0x3e, 0xd2, 0x69, 0xe6, 0xfa, 0x24, 0xad,
0xad, 0x43, 0xb1, 0x6f, 0x8f, 0xed, 0xbe, 0x13, 0x5e, 0x49, 0x86, 0x10, 0x7d, 0x8b, 0xd2, 0x87,
0x5e, 0xdf, 0x1e, 0x5a, 0xc7, 0xf6, 0xd0, 0x76, 0xfb, 0x5c, 0x6a, 0xff, 0x15, 0x04, 0x6e, 0x12,
0x4c, 0x68, 0xf8, 0xb2, 0x9d, 0x0a, 0x8b, 0x8c, 0x00, 0xb2, 0xf5, 0x0a, 0x4d, 0x08, 0x97, 0xde,
0x68, 0xe4, 0x08, 0x2d, 0x83, 0xc4, 0xb0, 0x9c, 0x59, 0x22, 0xc8, 0x0e, 0xc7, 0xde, 0xca, 0xe4,
0x0b, 0x1a, 0xba, 0x12, 0x55, 0x45, 0xc0, 0xcf, 0x48, 0x95, 0x9f, 0x95, 0xc5, 0x72, 0x9a, 0x2c,
0xf6, 0x2e, 0x2c, 0x4e, 0xdc, 0x80, 0x87, 0xe1, 0x90, 0x0f, 0xa2, 0xb6, 0x94, 0x11, 0xa9, 0x1e,
0x25, 0xa8, 0xe6, 0x6c, 0xc0, 0x12, 0x99, 0x2d, 0x02, 0x3b, 0xf4, 0x82, 0x33, 0x27, 0xb0, 0x02,
0xa1, 0x21, 0x91, 0xba, 0xbb, 0x88, 0x49, 0x5d, 0x99, 0xd2, 0x25, 0x15, 0x69, 0x6d, 0x0a, 0xdf,
0xe7, 0x7d, 0xee, 0x9c, 0xf3, 0x01, 0xca, 0x69, 0x39, 0x73, 0x25, 0x91, 0xc7, 0x94, 0x89, 0x28,
0x74, 0x4f, 0x46, 0xd6, 0x64, 0x3c, 0xb0, 0x85, 0xb0, 0x52, 0x23, 0x61, 0xd8, 0x9d, 0x8c, 0x8e,
0x08, 0xc2, 0x1e, 0x81, 0x92, 0xc4, 0xa4, 0x7c, 0xb8, 0x90, 0xe0, 0x67, 0x82, 0x58, 0xcd, 0x8a,
0xc4, 0x20, 0x41, 0x31, 0x21, 0x73, 0xd6, 0xa7, 0x64, 0xce, 0x06, 0xcc, 0x8f, 0x7d, 0xe7, 0xdc,
0x0e, 0x79, 0x63, 0x91, 0x18, 0xb8, 0xfc, 0x14, 0x9c, 0xc1, 0x71, 0x9d, 0xd0, 0xb1, 0x43, 0xcf,
0x6f, 0x30, 0x4c, 0x8b, 0x01, 0xec, 0x01, 0x2c, 0x22, 0x8d, 0x04, 0xa1, 0x1d, 0x4e, 0x02, 0x29,
0x81, 0x2e, 0x21, 0x31, 0xa1, 0x0c, 0xdd, 0x45, 0x38, 0x0a, 0xa1, 0xec, 0x1b, 0xb0, 0x4a, 0x64,
0x81, 0x39, 0xa4, 0x64, 0x8d, 0x02, 0xc1, 0x32, 0x0e, 0xc5, 0x12, 0xa6, 0x0a, 0xfa, 0x96, 0xf2,
0xb5, 0x90, 0x0e, 0x9e, 0xc0, 0x9a, 0x24, 0x93, 0x99, 0x5c, 0x2b, 0x98, 0x6b, 0x99, 0x92, 0xa7,
0xb2, 0x6d, 0xc0, 0xa2, 0x68, 0x92, 0xd3, 0xb7, 0x64, 0x6e, 0xb1, 0x12, 0x56, 0x45, 0xeb, 0x51,
0x53, 0x5a, 0xa0, 0x44, 0x13, 0xd3, 0x9e, 0xf1, 0x2b, 0xf6, 0x1d, 0x58, 0x20, 0x92, 0x41, 0xf5,
0x0a, 0x39, 0xfd, 0x3a, 0x72, 0xfa, 0x15, 0x65, 0x23, 0x8d, 0x52, 0x91, 0xd9, 0xd7, 0xfa, 0x89,
0x6f, 0xb1, 0x1c, 0x86, 0xce, 0x09, 0x0f, 0x9d, 0x11, 0x6f, 0xac, 0x11, 0x81, 0xa9, 0x6f, 0xb1,
0x52, 0x27, 0x63, 0x4c, 0x69, 0x10, 0x5f, 0xa0, 0x2f, 0xa4, 0xdd, 0xa1, 0x17, 0x70, 0x65, 0xe4,
0x6a, 0xdc, 0x94, 0x8b, 0x50, 0x00, 0x95, 0x0c, 0x29, 0x04, 0x71, 0x52, 0x7a, 0x22, 0x53, 0xe4,
0x2d, 0x24, 0x86, 0x2a, 0xe9, 0x3e, 0xca, 0x1c, 0x29, 0x76, 0xf1, 0x33, 0xfb, 0x42, 0x71, 0x90,
0xd7, 0x70, 0x7e, 0x41, 0x80, 0x24, 0xef, 0xf8, 0x71, 0x86, 0x36, 0x44, 0xc9, 0x3f, 0x02, 0x4d,
0xbd, 0x23, 0xce, 0x61, 0x79, 0xee, 0xf0, 0x4a, 0x32, 0x13, 0x20, 0xd0, 0x81, 0x3b, 0xc4, 0xd5,
0xec, 0xb8, 0x3a, 0x0a, 0xf1, 0xde, 0x8a, 0x02, 0x22, 0xd2, 0x1d, 0x28, 0x8f, 0x27, 0xc7, 0x43,
0xa7, 0x4f, 0x28, 0x39, 0x2a, 0x85, 0x40, 0x88, 0x20, 0xf4, 0x5b, 0xa2, 0x28, 0xc2, 0xc8, 0x23,
0x46, 0x59, 0xc2, 0x10, 0x05, 0x79, 0x3b, 0xf7, 0x91, 0x9d, 0x54, 0x4c, 0xfc, 0x6d, 0x6c, 0xc2,
0x72, 0xb2, 0xd1, 0x72, 0xe3, 0x79, 0x00, 0x45, 0xc9, 0xab, 0x94, 0xe1, 0xa3, 0xa6, 0x19, 0xb3,
0x85, 0x8a, 0x16, 0xa5, 0x1b, 0xbf, 0x5f, 0x80, 0x25, 0x09, 0xdd, 0x12, 0x43, 0xdb, 0x9d, 0x8c,
0x46, 0xb6, 0x9f, 0xc2, 0x04, 0x33, 0x2f, 0x66, 0x82, 0xd9, 0x19, 0x26, 0x98, 0xd4, 0x7c, 0x89,
0x87, 0x26, 0x35, 0x5f, 0x31, 0x97, 0xa4, 0x8c, 0xe8, 0x96, 0xd4, 0xaa, 0x04, 0xf7, 0xc8, 0x62,
0x3b, 0xc3, 0xb2, 0x0b, 0x29, 0x2c, 0x5b, 0x67, 0xb8, 0x73, 0x53, 0x0c, 0xf7, 0x0d, 0x20, 0xa2,
0x51, 0xb3, 0x3f, 0x4f, 0xfa, 0x09, 0xc2, 0xa4, 0x39, 0xf3, 0x1e, 0x2c, 0x4c, 0xf3, 0x38, 0x62,
0xa6, 0xb5, 0x14, 0x0e, 0xe7, 0x8c, 0x38, 0xee, 0x56, 0x1a, 0x72, 0x49, 0x72, 0x38, 0x67, 0xc4,
0xf7, 0x30, 0x45, 0xe1, 0xb7, 0x00, 0xa8, 0x6e, 0x5c, 0x34, 0x80, 0x8b, 0xe6, 0xed, 0xe4, 0x5c,
0xe8, 0xa3, 0xbe, 0x21, 0x3e, 0x26, 0x3e, 0xc7, 0x55, 0x54, 0xc2, 0x9c, 0xb8, 0x80, 0x3e, 0x84,
0x9a, 0x37, 0xe6, 0xae, 0x15, 0xf3, 0x9a, 0x32, 0x16, 0x55, 0x97, 0x45, 0xb5, 0x15, 0xdc, 0xac,
0x0a, 0xbc, 0xe8, 0x93, 0x7d, 0x9b, 0x06, 0x99, 0x6b, 0x39, 0x2b, 0xd7, 0xe4, 0xac, 0x21, 0x62,
0xf4, 0x6d, 0xfc, 0x66, 0x06, 0xca, 0x5a, 0x73, 0xd8, 0x0a, 0x2c, 0x6e, 0x1d, 0x1c, 0x1c, 0xb6,
0xcc, 0x66, 0xaf, 0xfd, 0x69, 0xcb, 0xda, 0xda, 0x3b, 0xe8, 0xb6, 0xea, 0x37, 0x04, 0x78, 0xef,
0x60, 0xab, 0xb9, 0x67, 0xed, 0x1c, 0x98, 0x5b, 0x0a, 0x9c, 0x61, 0xab, 0xc0, 0xcc, 0xd6, 0xfe,
0x41, 0xaf, 0x95, 0x80, 0x67, 0x59, 0x1d, 0x2a, 0x9b, 0x66, 0xab, 0xb9, 0xb5, 0x2b, 0x21, 0x39,
0xb6, 0x0c, 0xf5, 0x9d, 0xa3, 0xce, 0x76, 0xbb, 0xf3, 0xd4, 0xda, 0x6a, 0x76, 0xb6, 0x5a, 0x7b,
0xad, 0xed, 0x7a, 0x9e, 0x55, 0xa1, 0xd4, 0xdc, 0x6c, 0x76, 0xb6, 0x0f, 0x3a, 0xad, 0xed, 0x7a,
0xc1, 0xf8, 0xf3, 0x0c, 0xac, 0xe0, 0x40, 0x0d, 0xa6, 0x57, 0xe8, 0x5d, 0x28, 0xf7, 0x3d, 0x6f,
0x2c, 0xd4, 0xa0, 0x78, 0xbb, 0xd7, 0x41, 0x62, 0xf5, 0x11, 0x67, 0x3d, 0xf1, 0xfc, 0x3e, 0x97,
0x0b, 0x14, 0x10, 0xb4, 0x23, 0x20, 0x82, 0x40, 0x24, 0x85, 0x11, 0x06, 0xad, 0xcf, 0x32, 0xc1,
0x08, 0x65, 0x15, 0xe6, 0x8e, 0x7d, 0x6e, 0xf7, 0xcf, 0xe4, 0xd2, 0x94, 0x5f, 0xec, 0x9d, 0x58,
0x41, 0xef, 0x8b, 0x09, 0x1f, 0xf2, 0x01, 0xd2, 0x67, 0xd1, 0x5c, 0x90, 0xf0, 0x2d, 0x09, 0x16,
0x5b, 0x85, 0x7d, 0x6c, 0xbb, 0x03, 0xcf, 0xe5, 0x03, 0xa9, 0x07, 0xc4, 0x00, 0xe3, 0x10, 0x56,
0xa7, 0xfb, 0x27, 0x17, 0xf3, 0x07, 0xda, 0x62, 0x26, 0xb1, 0x7c, 0xfd, 0x7a, 0x02, 0xd2, 0x16,
0xf6, 0xdf, 0xca, 0x43, 0x5e, 0x88, 0x69, 0xd7, 0x4a, 0x74, 0xba, 0xdc, 0x9d, 0x9b, 0xf1, 0xee,
0xa0, 0x1d, 0x80, 0xf6, 0x6f, 0x32, 0x36, 0x95, 0x10, 0x82, 0xfb, 0x76, 0x94, 0xec, 0xf3, 0xfe,
0xb9, 0xb4, 0x36, 0x51, 0xb2, 0xc9, 0xfb, 0xe7, 0xa8, 0xf0, 0xd8, 0x21, 0xe5, 0xa5, 0xc5, 0x38,
0x1f, 0xd8, 0x21, 0xe6, 0x94, 0x49, 0x98, 0x6f, 0x3e, 0x4a, 0xc2, 0x5c, 0x0d, 0x98, 0x77, 0xdc,
0x63, 0x6f, 0xe2, 0x0e, 0x70, 0xed, 0x15, 0x4d, 0xf5, 0x89, 0xce, 0x24, 0x64, 0x13, 0x62, 0x97,
0xa0, 0xa5, 0x56, 0x14, 0x80, 0x9e, 0xd8, 0x27, 0xde, 0x87, 0x52, 0x70, 0xe5, 0xf6, 0xf5, 0x05,
0xb6, 0x2c, 0xc7, 0x47, 0xf4, 0x7e, 0xa3, 0x7b, 0xe5, 0xf6, 0x71, 0x39, 0x15, 0x03, 0xf9, 0x8b,
0x3d, 0x81, 0x62, 0x64, 0x94, 0x25, 0xf6, 0x78, 0x53, 0xcf, 0xa1, 0x2c, 0xb1, 0xa4, 0xfb, 0x46,
0xa8, 0xec, 0x21, 0xcc, 0xa1, 0xe5, 0x34, 0x68, 0x54, 0x30, 0x93, 0x12, 0xc6, 0x45, 0x33, 0xd0,
0x8f, 0xc3, 0x07, 0x68, 0x45, 0x35, 0x25, 0xda, 0xfa, 0x33, 0xa8, 0x26, 0xca, 0xd2, 0x35, 0xdc,
0x2a, 0x69, 0xb8, 0x6f, 0xe9, 0x1a, 0x6e, 0xcc, 0xa6, 0x65, 0x36, 0x5d, 0xe3, 0xfd, 0x45, 0x28,
0xaa, 0xae, 0x88, 0x45, 0x74, 0xd4, 0x79, 0xd6, 0x39, 0xf8, 0xac, 0x63, 0x75, 0x3f, 0xef, 0x6c,
0xd5, 0x6f, 0xb0, 0x05, 0x28, 0x37, 0xb7, 0x70, 0x5d, 0x22, 0x20, 0x23, 0x50, 0x0e, 0x9b, 0xdd,
0x6e, 0x04, 0xc9, 0x1a, 0x3b, 0x50, 0x9f, 0x6e, 0xa9, 0xa0, 0xc9, 0x50, 0xc1, 0xa4, 0x5d, 0x39,
0x06, 0x08, 0xfd, 0x85, 0x4c, 0xc5, 0x24, 0x24, 0xd3, 0x87, 0xf1, 0x04, 0xea, 0x62, 0xd3, 0x11,
0x43, 0xa5, 0x7b, 0x8c, 0x86, 0x42, 0xf0, 0xd2, 0x6d, 0xcb, 0x45, 0xb3, 0x4c, 0x30, 0xac, 0xca,
0xf8, 0x00, 0x16, 0xb5, 0x6c, 0xb1, 0xbe, 0x29, 0x36, 0xb2, 0x69, 0x7d, 0x13, 0xb5, 0x0b, 0x4a,
0x31, 0xd6, 0x60, 0x45, 0x7c, 0xb6, 0xce, 0xb9, 0x1b, 0x76, 0x27, 0xc7, 0xe4, 0x52, 0x74, 0x3c,
0x57, 0x68, 0x1d, 0xa5, 0x28, 0xe5, 0x7a, 0x22, 0xdf, 0x90, 0xaa, 0x69, 0x16, 0x49, 0x63, 0x5d,
0xab, 0x01, 0x33, 0x6e, 0xe0, 0xdf, 0x84, 0x8a, 0x5a, 0x8a, 0x40, 0x62, 0x58, 0x0f, 0x5b, 0x2d,
0xd3, 0x3a, 0xe8, 0xec, 0xb5, 0x3b, 0x82, 0xdb, 0x89, 0x61, 0x45, 0xc0, 0xce, 0x0e, 0x42, 0x32,
0x46, 0x1d, 0x6a, 0x4f, 0x79, 0xd8, 0x76, 0x4f, 0x3c, 0x39, 0x18, 0xc6, 0xdf, 0x98, 0x83, 0x85,
0x08, 0x14, 0xab, 0xb8, 0xe7, 0xdc, 0x0f, 0x1c, 0xcf, 0x45, 0x69, 0xb5, 0x64, 0xaa, 0x4f, 0xc1,
0x9d, 0xa4, 0x8c, 0x8e, 0x5b, 0xe0, 0x32, 0xa6, 0x4a, 0xa9, 0x1e, 0xf7, 0xbf, 0x7b, 0xb0, 0xe0,
0x0c, 0xb8, 0x1b, 0x3a, 0xe1, 0x95, 0x95, 0x30, 0x98, 0xd5, 0x14, 0x58, 0xee, 0x81, 0xcb, 0x50,
0xb0, 0x87, 0x8e, 0xad, 0x5c, 0xb5, 0xf4, 0x21, 0xa0, 0x7d, 0x6f, 0xe8, 0xf9, 0x28, 0xb9, 0x96,
0x4c, 0xfa, 0x60, 0x8f, 0x60, 0x59, 0x48, 0xd0, 0xba, 0x15, 0x13, 0x19, 0x0c, 0xd9, 0xee, 0x98,
0x3b, 0x19, 0x1d, 0xc6, 0x96, 0x4c, 0x91, 0x22, 0x76, 0x3e, 0x91, 0x43, 0x8a, 0x3a, 0x51, 0x06,
0x52, 0xc6, 0x16, 0xdd, 0xc9, 0xa8, 0x89, 0x29, 0x11, 0xfe, 0x63, 0x58, 0x11, 0xf8, 0x91, 0x70,
0x14, 0xe5, 0x58, 0xc0, 0x1c, 0xa2, 0xb0, 0xb6, 0x4c, 0x8b, 0xf2, 0xdc, 0x82, 0x12, 0xb5, 0x4a,
0x90, 0x44, 0x81, 0x84, 0x70, 0x6c, 0x0a, 0xf7, 0x83, 0x19, 0xaf, 0xea, 0x1c, 0x6d, 0xe3, 0x53,
0x5e, 0x55, 0xcd, 0x2f, 0x5b, 0x9c, 0xf6, 0xcb, 0x3e, 0x86, 0x95, 0x63, 0x41, 0xa3, 0x67, 0xdc,
0x1e, 0x70, 0xdf, 0x8a, 0x29, 0x9f, 0x94, 0x8d, 0x25, 0x91, 0xb8, 0x8b, 0x69, 0xd1, 0x42, 0x11,
0x52, 0x8a, 0xe0, 0x1b, 0x7c, 0x60, 0x85, 0x9e, 0x85, 0xc2, 0x0b, 0x72, 0xa0, 0xa2, 0x59, 0x25,
0x70, 0xcf, 0xdb, 0x12, 0xc0, 0x24, 0xde, 0xa9, 0x6f, 0x8f, 0xcf, 0xa4, 0x3a, 0x10, 0xe1, 0x3d,
0x15, 0x40, 0xf6, 0x1a, 0xcc, 0x8b, 0x35, 0xe1, 0x72, 0x72, 0x5d, 0x91, 0xc0, 0xad, 0x40, 0xec,
0x2d, 0x98, 0xc3, 0x3a, 0x82, 0x46, 0x1d, 0x17, 0x44, 0x25, 0xe6, 0xf4, 0x8e, 0x6b, 0xca, 0x34,
0x21, 0x0a, 0x4e, 0x7c, 0x87, 0xd8, 0x50, 0xc9, 0xc4, 0xdf, 0xec, 0xbb, 0x1a, 0x4f, 0x5b, 0xc2,
0xbc, 0x6f, 0xc9, 0xbc, 0x53, 0xa4, 0x78, 0x1d, 0x7b, 0xfb, 0x99, 0x72, 0xab, 0xef, 0xe5, 0x8b,
0xe5, 0x7a, 0xc5, 0xf8, 0x10, 0x0a, 0x34, 0x3a, 0x82, 0x08, 0x71, 0xec, 0x32, 0x92, 0x08, 0x11,
0xda, 0x80, 0x79, 0x97, 0x87, 0x17, 0x9e, 0xff, 0x5c, 0x99, 0x94, 0xe5, 0xa7, 0xf1, 0x43, 0xb4,
0x85, 0x44, 0x1e, 0x77, 0x52, 0xeb, 0x04, 0x79, 0xd0, 0xf4, 0x06, 0x67, 0xb6, 0x34, 0xcf, 0x14,
0x11, 0xd0, 0x3d, 0xb3, 0x67, 0xc8, 0x23, 0x3b, 0xeb, 0x74, 0x7f, 0x0b, 0x6a, 0xca, 0xc7, 0x1f,
0x58, 0x43, 0x7e, 0x12, 0x4a, 0x72, 0xaf, 0x48, 0x07, 0x7f, 0xb0, 0xc7, 0x4f, 0x42, 0x63, 0x1f,
0x16, 0x25, 0x41, 0x1e, 0x8c, 0xb9, 0xaa, 0xfa, 0x5b, 0x69, 0xd2, 0x70, 0xf9, 0xf1, 0x52, 0x72,
0x27, 0xa6, 0xd8, 0x85, 0x84, 0x88, 0x6c, 0x7c, 0x02, 0x4c, 0xdf, 0xa7, 0x65, 0x79, 0x52, 0x26,
0x55, 0x96, 0x78, 0xe5, 0xd0, 0x8a, 0x24, 0x5f, 0x67, 0x20, 0x46, 0x27, 0x98, 0xf4, 0xfb, 0x2a,
0xf6, 0xa2, 0x68, 0xaa, 0x4f, 0xe3, 0x4f, 0x32, 0xb0, 0x84, 0x85, 0x29, 0x69, 0x5e, 0x72, 0xe1,
0x9f, 0xb8, 0x91, 0x62, 0x7e, 0x74, 0xe1, 0x88, 0x3e, 0xbe, 0xba, 0xed, 0x33, 0x3f, 0x63, 0xfb,
0x7c, 0x07, 0xea, 0x03, 0x3e, 0x74, 0x30, 0x0c, 0x47, 0xc9, 0x1a, 0x24, 0xbf, 0x2f, 0x28, 0xb8,
0xd4, 0xe5, 0x8c, 0xbf, 0x97, 0x81, 0x45, 0x12, 0x65, 0x50, 0x2b, 0x96, 0x03, 0xf5, 0xb1, 0x52,
0x03, 0x25, 0xab, 0x92, 0x7d, 0x8a, 0xb7, 0x78, 0x84, 0x12, 0xf2, 0xee, 0x0d, 0xa9, 0x1e, 0x4a,
0x28, 0xfb, 0x08, 0x35, 0x10, 0xd7, 0x42, 0x60, 0x4a, 0x58, 0x4f, 0x72, 0x52, 0x76, 0x6f, 0xa0,
0x7a, 0xe2, 0x22, 0x68, 0xb3, 0x28, 0xf4, 0x52, 0x01, 0x36, 0x76, 0xa0, 0x9a, 0xa8, 0x26, 0x61,
0xa0, 0xad, 0x90, 0x81, 0x76, 0xc6, 0x09, 0x92, 0x9d, 0x75, 0x82, 0x5c, 0xc1, 0x92, 0xc9, 0xed,
0xc1, 0xd5, 0x8e, 0xe7, 0x1f, 0x06, 0xc7, 0xe1, 0x0e, 0xc9, 0x87, 0x82, 0xbf, 0x47, 0x9e, 0xbd,
0x84, 0x15, 0x54, 0x39, 0x78, 0x94, 0xb2, 0xfb, 0x35, 0xa8, 0xc5, 0x2e, 0x40, 0xcd, 0x92, 0x56,
0x8d, 0xbc, 0x80, 0x68, 0x50, 0x13, 0x8a, 0x62, 0x70, 0x1c, 0x4a, 0x5b, 0x1a, 0xfe, 0x36, 0xfe,
0x5a, 0x1e, 0x98, 0xa0, 0xe6, 0x29, 0x82, 0x99, 0x72, 0x5e, 0x66, 0x67, 0x9c, 0x97, 0x8f, 0x80,
0x69, 0x08, 0xca, 0xa7, 0x9a, 0x8b, 0x7c, 0xaa, 0xf5, 0x18, 0x57, 0xba, 0x54, 0x1f, 0xc1, 0xb2,
0x14, 0xb6, 0x93, 0x4d, 0x25, 0xd2, 0x60, 0x24, 0x75, 0x27, 0xda, 0xab, 0x1c, 0x97, 0x42, 0x79,
0x27, 0x5b, 0x19, 0x3a, 0x2e, 0x95, 0xda, 0xae, 0x11, 0xe0, 0xdc, 0x4b, 0x09, 0x70, 0x7e, 0x86,
0x00, 0x35, 0xd3, 0x4d, 0x31, 0x69, 0xba, 0x31, 0xa0, 0xaa, 0xdc, 0x93, 0x14, 0x95, 0x41, 0x92,
0x65, 0x59, 0xfa, 0x28, 0x31, 0x32, 0xe3, 0x3e, 0xd4, 0x95, 0x7d, 0x25, 0x32, 0x0e, 0x51, 0xc4,
0x81, 0x34, 0xcf, 0x6d, 0x29, 0x13, 0x51, 0xc2, 0x14, 0x5f, 0x9e, 0x32, 0xc5, 0xbf, 0x0b, 0x8b,
0x81, 0xa0, 0x5f, 0x6b, 0xe2, 0xca, 0x00, 0x23, 0x3e, 0x40, 0x3d, 0xac, 0x68, 0xd6, 0x31, 0xe1,
0x28, 0x86, 0xcf, 0x1a, 0x3e, 0xaa, 0x29, 0x86, 0x8f, 0x27, 0xb1, 0x27, 0x2f, 0x38, 0x73, 0x46,
0x28, 0x54, 0xc4, 0xa1, 0x34, 0x72, 0x80, 0xbb, 0x67, 0xce, 0xc8, 0x54, 0x6e, 0x63, 0xf1, 0x61,
0xfc, 0xef, 0x0c, 0xd4, 0x05, 0x1d, 0x24, 0x96, 0xd8, 0xb7, 0x01, 0x99, 0xc1, 0x2b, 0xae, 0xb0,
0xb2, 0xc0, 0x55, 0x0b, 0xec, 0x43, 0xc0, 0x15, 0x63, 0x09, 0xa5, 0x53, 0xae, 0xaf, 0x46, 0x72,
0x7d, 0xc5, 0x3c, 0x74, 0xf7, 0x06, 0x29, 0x27, 0x02, 0xc2, 0xbe, 0x0d, 0x25, 0x41, 0x98, 0x48,
0x25, 0x32, 0x06, 0x4c, 0x89, 0x66, 0x29, 0x6b, 0x44, 0x64, 0x1d, 0xcb, 0xcf, 0x34, 0xe7, 0x6b,
0x3e, 0xc5, 0xf9, 0xaa, 0x2d, 0xe0, 0x5d, 0x80, 0x67, 0xfc, 0x6a, 0xcf, 0xeb, 0xa3, 0x4a, 0x7c,
0x1b, 0x40, 0xd0, 0xf2, 0x89, 0x3d, 0x72, 0xa4, 0x45, 0xa7, 0x60, 0x96, 0x9e, 0xf3, 0xab, 0x1d,
0x04, 0x88, 0x89, 0x14, 0xc9, 0xf1, 0x2a, 0x2e, 0x98, 0xc5, 0xe7, 0xfc, 0x8a, 0x96, 0xb0, 0x05,
0xd5, 0x67, 0xfc, 0x6a, 0x9b, 0x93, 0x14, 0xea, 0xf9, 0x82, 0x88, 0x7c, 0xfb, 0x42, 0x88, 0x9d,
0x09, 0xc7, 0x69, 0xd9, 0xb7, 0x2f, 0x9e, 0xf1, 0x2b, 0xe5, 0xc4, 0x9d, 0x17, 0xe9, 0x43, 0xaf,
0x2f, 0xf7, 0x4d, 0x15, 0x02, 0x12, 0x37, 0xca, 0x9c, 0x7b, 0x8e, 0xbf, 0x8d, 0xbf, 0xcc, 0x40,
0x55, 0xb4, 0x1f, 0xd9, 0xb2, 0x98, 0x32, 0x15, 0x49, 0x94, 0x89, 0x23, 0x89, 0x1e, 0x4b, 0xae,
0x46, 0x3c, 0x3e, 0x7b, 0x3d, 0x8f, 0xc7, 0xb9, 0x21, 0x06, 0xff, 0x3e, 0x94, 0x68, 0x59, 0x8a,
0x75, 0x9e, 0x4b, 0x4c, 0x70, 0xa2, 0x43, 0x66, 0x11, 0xd1, 0x9e, 0x51, 0xe0, 0x82, 0x66, 0x1d,
0xa4, 0x21, 0x2e, 0xf9, 0x91, 0x4d, 0x30, 0x65, 0x1a, 0x0a, 0xd7, 0x04, 0x2e, 0xe8, 0xa6, 0xb7,
0xb9, 0x19, 0xd3, 0xdb, 0x01, 0x14, 0xc5, 0x54, 0x63, 0x67, 0x53, 0x0a, 0xcd, 0xa4, 0x15, 0x2a,
0x24, 0x01, 0x5b, 0x6c, 0x0a, 0x82, 0xd1, 0x65, 0xa5, 0x24, 0x60, 0x07, 0xfc, 0x10, 0x99, 0x5d,
0x06, 0xca, 0xda, 0x0a, 0x40, 0xeb, 0x65, 0x34, 0x5e, 0xb4, 0x5c, 0x92, 0x24, 0x9e, 0x18, 0xf0,
0xdd, 0x1b, 0x66, 0xb5, 0x9f, 0x98, 0x81, 0x0d, 0x49, 0xab, 0x98, 0x33, 0x9b, 0x08, 0x7a, 0x52,
0x0d, 0x57, 0x04, 0x2a, 0x7e, 0x6f, 0xce, 0x41, 0x5e, 0xa0, 0x1a, 0x1f, 0xc3, 0xa2, 0xd6, 0x0c,
0xb2, 0x03, 0xbc, 0x6a, 0x0f, 0x8d, 0x5f, 0x89, 0x32, 0x8b, 0x3a, 0xc8, 0xbf, 0xa4, 0x82, 0x40,
0xf8, 0x80, 0x3a, 0x2e, 0x83, 0x4d, 0x08, 0x24, 0xd0, 0x5e, 0x39, 0x30, 0xe1, 0xd7, 0x60, 0x49,
0x2b, 0x7d, 0xc7, 0x71, 0xed, 0xa1, 0xf3, 0x43, 0xdc, 0xf0, 0x03, 0xe7, 0xd4, 0x9d, 0x2a, 0x9f,
0x40, 0x5f, 0xa9, 0xfc, 0xbf, 0x9f, 0x85, 0x65, 0x59, 0x01, 0x86, 0xf5, 0x39, 0x42, 0x8a, 0xdb,
0x0f, 0x4e, 0xd9, 0xb7, 0xa1, 0x2a, 0xc6, 0xc6, 0xf2, 0xf9, 0xa9, 0x13, 0x84, 0x5c, 0xf9, 0xb5,
0x52, 0x18, 0x97, 0xd8, 0xcc, 0x05, 0xaa, 0x29, 0x31, 0xd9, 0xc7, 0x50, 0xc6, 0xac, 0x64, 0x67,
0x91, 0x13, 0xd1, 0x98, 0xcd, 0x48, 0x03, 0xbd, 0x7b, 0xc3, 0x84, 0x20, 0x1e, 0xf6, 0x8f, 0xa1,
0x8c, 0x73, 0x78, 0x8e, 0x03, 0x39, 0xc5, 0xaa, 0x66, 0x06, 0x5a, 0x64, 0x1e, 0xc7, 0xc3, 0xde,
0x84, 0x2a, 0x31, 0x2b, 0x39, 0x4e, 0x32, 0x5c, 0x68, 0x7d, 0x36, 0xbb, 0x1a, 0x49, 0xd1, 0xf8,
0xb1, 0xf6, 0xbd, 0x59, 0x82, 0xf9, 0xd0, 0x77, 0x4e, 0x4f, 0xb9, 0x6f, 0xac, 0x46, 0x43, 0x23,
0xb8, 0x30, 0xef, 0x86, 0x7c, 0x2c, 0x64, 0x73, 0xe3, 0xdf, 0x66, 0xa0, 0x2c, 0xf9, 0xea, 0x4f,
0xec, 0x4c, 0x5b, 0xd7, 0x22, 0x6b, 0xc9, 0xa4, 0x13, 0x07, 0xd2, 0xde, 0x83, 0x85, 0x91, 0x90,
0xd3, 0x85, 0x1e, 0x99, 0xf0, 0xa4, 0xd5, 0x14, 0x58, 0x8a, 0xc9, 0x1b, 0xb0, 0x84, 0x52, 0x73,
0x60, 0x85, 0xce, 0xd0, 0x52, 0x89, 0x32, 0x8a, 0x75, 0x91, 0x92, 0x7a, 0xce, 0x70, 0x5f, 0x26,
0x08, 0xe1, 0x31, 0x08, 0xed, 0x53, 0x2e, 0xd7, 0x36, 0x7d, 0x18, 0x0d, 0x58, 0x9d, 0x52, 0x21,
0x95, 0x7e, 0xfc, 0x7f, 0x16, 0x61, 0x6d, 0x26, 0x49, 0xea, 0xc9, 0x91, 0x07, 0x69, 0xe8, 0x8c,
0x8e, 0xbd, 0xc8, 0xbe, 0x9a, 0xd1, 0x3c, 0x48, 0x7b, 0x22, 0x45, 0xd9, 0x57, 0x39, 0xac, 0x28,
0x82, 0x44, 0x03, 0x69, 0xa4, 0x65, 0x66, 0x51, 0x07, 0x7a, 0x3f, 0xb9, 0x89, 0x4d, 0x57, 0xa7,
0xe0, 0xba, 0x68, 0xb4, 0x34, 0x9e, 0x81, 0x05, 0xec, 0xd7, 0xa1, 0x11, 0xd1, 0xbd, 0x14, 0xdb,
0x35, 0x95, 0x59, 0xd4, 0xf4, 0xde, 0x4b, 0x6a, 0x4a, 0x18, 0xf7, 0x50, 0x76, 0x5a, 0x55, 0x4b,
0x86, 0x0a, 0x8c, 0xea, 0x3a, 0x87, 0xd7, 0x55, 0x5d, 0x28, 0x86, 0xcf, 0xd6, 0x98, 0x7f, 0xa5,
0xbe, 0xa1, 0xe1, 0x32, 0x51, 0xad, 0x79, 0x4b, 0x16, 0x1c, 0x25, 0xe9, 0xf5, 0x9e, 0xc1, 0xea,
0x85, 0xed, 0x84, 0xaa, 0x8f, 0x9a, 0xc6, 0x5e, 0xc0, 0xfa, 0x1e, 0xbf, 0xa4, 0xbe, 0xcf, 0x28,
0x73, 0x42, 0x31, 0x59, 0xbe, 0x98, 0x05, 0x06, 0xeb, 0xff, 0x38, 0x07, 0xb5, 0x64, 0x29, 0x82,
0xb1, 0xc8, 0xcd, 0x46, 0xc9, 0x9b, 0x52, 0x08, 0x96, 0xb6, 0xff, 0x0e, 0xc9, 0x99, 0xb3, 0x5e,
0x89, 0x6c, 0x8a, 0x57, 0x42, 0x77, 0x06, 0xe4, 0x5e, 0xe6, 0x7d, 0xcd, 0xbf, 0x92, 0xf7, 0xb5,
0x90, 0xe6, 0x7d, 0xbd, 0xde, 0x65, 0x37, 0xf7, 0x13, 0xb9, 0xec, 0xe6, 0x5f, 0xe8, 0xb2, 0xd3,
0x1c, 0x8d, 0xc5, 0x6b, 0x4c, 0xf8, 0x9a, 0xeb, 0x31, 0xc5, 0x65, 0x57, 0xfa, 0x0a, 0x2e, 0xbb,
0xf5, 0xbf, 0xcc, 0x00, 0x9b, 0x5d, 0x1d, 0xec, 0x29, 0x39, 0x7c, 0x5c, 0x3e, 0x94, 0x9c, 0xfb,
0xeb, 0xaf, 0xb6, 0xc2, 0x14, 0x41, 0xa8, 0xdc, 0xec, 0x21, 0x2c, 0xe9, 0xb1, 0xf6, 0xba, 0xd6,
0x5e, 0x35, 0x99, 0x9e, 0x14, 0xdb, 0x76, 0x34, 0x57, 0x77, 0xfe, 0xa5, 0xae, 0xee, 0xc2, 0x4b,
0x5d, 0xdd, 0x73, 0x49, 0x57, 0xf7, 0xfa, 0x7f, 0xcc, 0xc0, 0x52, 0x0a, 0x11, 0xff, 0xec, 0xfa,
0x2c, 0x68, 0x2f, 0xc1, 0xd6, 0xb2, 0x92, 0xf6, 0x74, 0x8e, 0xb6, 0xa7, 0xec, 0x81, 0x62, 0x2a,
0xd4, 0x59, 0x94, 0x07, 0x2f, 0xe3, 0x2e, 0x71, 0x0e, 0x53, 0xcf, 0xbe, 0xfe, 0xfb, 0x59, 0x28,
0x6b, 0x89, 0x62, 0x14, 0x89, 0x64, 0xb5, 0x08, 0x23, 0x92, 0x0c, 0xd1, 0xe6, 0x70, 0x07, 0xa4,
0xd7, 0x83, 0xd2, 0x69, 0x71, 0x49, 0x31, 0x10, 0x11, 0x36, 0x60, 0x49, 0x39, 0xe3, 0x78, 0x1c,
0x48, 0x28, 0xf7, 0x9a, 0x45, 0xe9, 0x92, 0xe3, 0x51, 0x5c, 0x22, 0x7b, 0xa8, 0xd4, 0xc1, 0x78,
0xee, 0x90, 0xd4, 0xc9, 0xa5, 0xb0, 0x48, 0x0b, 0x44, 0x4d, 0xa2, 0xa0, 0xf3, 0xf7, 0x61, 0x45,
0x2d, 0x8f, 0x64, 0x0e, 0xf2, 0x32, 0x30, 0xb9, 0x38, 0xf4, 0x2c, 0xdf, 0x85, 0xdb, 0x53, 0x6d,
0x9a, 0xca, 0x4a, 0x11, 0xaf, 0x37, 0x13, 0xad, 0xd3, 0x4b, 0x58, 0xff, 0x11, 0x54, 0x13, 0x8c,
0xf2, 0x67, 0x37, 0xe5, 0xd3, 0x76, 0x1e, 0x1a, 0x51, 0xdd, 0xce, 0xb3, 0xfe, 0xbf, 0x72, 0xc0,
0x66, 0x79, 0xf5, 0xcf, 0xb3, 0x09, 0xb3, 0x84, 0x99, 0x4b, 0x21, 0xcc, 0xff, 0x67, 0xf2, 0xc3,
0xbb, 0xb0, 0x28, 0xcf, 0x64, 0x69, 0x1e, 0x55, 0x5a, 0x9c, 0xf5, 0x28, 0x41, 0xb5, 0xe2, 0xc3,
0xe9, 0xc8, 0x8e, 0x62, 0xe2, 0x10, 0x89, 0x26, 0x40, 0x4d, 0x05, 0x78, 0x1c, 0xc1, 0x9c, 0xed,
0xf6, 0xcf, 0x3c, 0x5f, 0xf2, 0xc1, 0x5f, 0xf8, 0xca, 0xdb, 0xe7, 0x46, 0x13, 0xf3, 0xa3, 0xd4,
0x66, 0xca, 0xc2, 0x8c, 0xf7, 0xa1, 0xac, 0x81, 0x59, 0x09, 0x0a, 0x7b, 0xed, 0xfd, 0xcd, 0x83,
0xfa, 0x0d, 0x56, 0x85, 0x92, 0xd9, 0xda, 0x3a, 0xf8, 0xb4, 0x65, 0xb6, 0xb6, 0xeb, 0x19, 0x56,
0x84, 0xfc, 0xde, 0x41, 0xb7, 0x57, 0xcf, 0x1a, 0xeb, 0xd0, 0x90, 0x25, 0xce, 0x3a, 0x35, 0x7e,
0x3b, 0x1f, 0x99, 0x0b, 0x31, 0x51, 0xaa, 0xe8, 0xdf, 0x80, 0x8a, 0x2e, 0xde, 0x48, 0x8a, 0x98,
0x72, 0xea, 0x0b, 0xe5, 0xdc, 0xd3, 0x78, 0xf5, 0x16, 0x90, 0x4b, 0x77, 0x10, 0x65, 0xcb, 0x26,
0xe4, 0xd6, 0x14, 0xf7, 0x21, 0x2a, 0x3f, 0x09, 0x32, 0xfc, 0xff, 0xa0, 0x96, 0x34, 0xe0, 0x4b,
0x8e, 0x94, 0xa6, 0x70, 0x8a, 0xdc, 0x09, 0x8b, 0x3e, 0xfb, 0x2e, 0xd4, 0xa7, 0x1d, 0x00, 0x52,
0x78, 0xbe, 0x26, 0xff, 0x82, 0x93, 0xf4, 0x09, 0xb0, 0x5d, 0x58, 0x4e, 0x13, 0xf0, 0x90, 0x3e,
0xae, 0x37, 0x52, 0xb0, 0x59, 0x21, 0x8e, 0x7d, 0x4b, 0x3a, 0x82, 0x0a, 0x38, 0xfd, 0x6f, 0x25,
0xeb, 0xd7, 0x06, 0x7b, 0x83, 0xfe, 0x69, 0x2e, 0xa1, 0x73, 0x80, 0x18, 0xc6, 0xea, 0x50, 0x39,
0x38, 0x6c, 0x75, 0xac, 0xad, 0xdd, 0x66, 0xa7, 0xd3, 0xda, 0xab, 0xdf, 0x60, 0x0c, 0x6a, 0xe8,
0xcc, 0xde, 0x8e, 0x60, 0x19, 0x01, 0x93, 0x0e, 0x39, 0x05, 0xcb, 0xb2, 0x65, 0xa8, 0xb7, 0x3b,
0x53, 0xd0, 0x1c, 0x6b, 0xc0, 0xf2, 0x61, 0x8b, 0xfc, 0xdf, 0x89, 0x72, 0xf3, 0x42, 0x69, 0x90,
0xdd, 0x15, 0x4a, 0x03, 0x9d, 0x2d, 0x94, 0xeb, 0x40, 0xc9, 0xd2, 0xbf, 0x93, 0x81, 0x95, 0xa9,
0x84, 0xf8, 0xbc, 0x07, 0x49, 0xd2, 0x49, 0x19, 0xba, 0x82, 0x40, 0xb5, 0x9a, 0xde, 0x85, 0xc5,
0xc8, 0xf0, 0x34, 0xb5, 0x2b, 0xd5, 0xa3, 0x04, 0x85, 0xfc, 0x10, 0x96, 0x34, 0xfb, 0xd5, 0x14,
0xaf, 0x60, 0x5a, 0x92, 0xcc, 0x60, 0xac, 0x45, 0x71, 0xf5, 0x53, 0xad, 0x1e, 0xd0, 0x81, 0x45,
0x3d, 0x21, 0xf6, 0x93, 0x25, 0xdb, 0xab, 0x3e, 0xd9, 0xa3, 0x29, 0x42, 0x48, 0xb6, 0x56, 0x9f,
0x70, 0x55, 0xfd, 0x1f, 0xcc, 0x01, 0xfb, 0x64, 0xc2, 0xfd, 0x2b, 0x3c, 0xcf, 0x11, 0xbc, 0x2c,
0xc0, 0x51, 0x59, 0x5a, 0xb2, 0xaf, 0x74, 0x66, 0x2b, 0xed, 0xcc, 0x54, 0xfe, 0xe5, 0x67, 0xa6,
0x0a, 0x2f, 0x3b, 0x33, 0xf5, 0x26, 0x54, 0x9d, 0x53, 0xd7, 0x13, 0xac, 0x50, 0x48, 0xc2, 0x41,
0x63, 0xee, 0x6e, 0xee, 0x7e, 0xc5, 0xac, 0x48, 0xa0, 0x90, 0x83, 0x03, 0xf6, 0x71, 0x8c, 0xc4,
0x07, 0xa7, 0x78, 0x42, 0x50, 0x67, 0x82, 0xad, 0xc1, 0x29, 0x97, 0x86, 0x25, 0xd4, 0x34, 0x54,
0x66, 0x01, 0x0f, 0xd8, 0x5b, 0x50, 0x0b, 0xbc, 0x89, 0x50, 0x2c, 0xd4, 0x30, 0x90, 0xa3, 0xac,
0x42, 0xd0, 0x43, 0xe5, 0x36, 0x5d, 0x9a, 0x04, 0xdc, 0x1a, 0x39, 0x41, 0x20, 0xc4, 0xb3, 0xbe,
0xe7, 0x86, 0xbe, 0x37, 0x94, 0xbe, 0xaf, 0xc5, 0x49, 0xc0, 0xf7, 0x29, 0x65, 0x8b, 0x12, 0xd8,
0x37, 0xe3, 0x26, 0x8d, 0x6d, 0xc7, 0x0f, 0x1a, 0x80, 0x4d, 0x52, 0x3d, 0x45, 0xf9, 0xdd, 0x76,
0xfc, 0xa8, 0x2d, 0xe2, 0x23, 0x98, 0x3a, 0xcb, 0x55, 0x9e, 0x3e, 0xcb, 0xf5, 0x83, 0xf4, 0xb3,
0x5c, 0x55, 0x2c, 0xfa, 0x91, 0x2c, 0x7a, 0x76, 0x8a, 0xbf, 0xd2, 0x91, 0xae, 0xd9, 0x23, 0x6a,
0xb5, 0xaf, 0x72, 0x44, 0x6d, 0x21, 0xed, 0x88, 0xda, 0xfb, 0x50, 0xc6, 0xc3, 0x43, 0xd6, 0x99,
0x23, 0x64, 0x38, 0xf2, 0xe5, 0xd5, 0xf5, 0xd3, 0x45, 0xbb, 0x8e, 0x1b, 0x9a, 0xe0, 0xab, 0x9f,
0xc1, 0xec, 0x69, 0xb1, 0xc5, 0x9f, 0xe3, 0x69, 0x31, 0x79, 0xc8, 0x69, 0x03, 0x8a, 0x6a, 0x9e,
0x18, 0x83, 0xfc, 0x89, 0xef, 0x8d, 0x94, 0x8f, 0x43, 0xfc, 0x66, 0x35, 0xc8, 0x86, 0x9e, 0xcc,
0x9c, 0x0d, 0x3d, 0xe3, 0x57, 0xa1, 0xac, 0x91, 0x1a, 0x7b, 0x83, 0xec, 0x92, 0x42, 0x37, 0x93,
0xb2, 0x25, 0x8d, 0x62, 0x49, 0x42, 0xdb, 0x03, 0xc1, 0x6f, 0x06, 0x8e, 0xcf, 0xf1, 0x5c, 0xa7,
0xe5, 0xf3, 0x73, 0xee, 0x07, 0xca, 0xe7, 0x54, 0x8f, 0x12, 0x4c, 0x82, 0x1b, 0xbf, 0x06, 0x4b,
0x89, 0xb9, 0x95, 0x2c, 0xe2, 0x2d, 0x98, 0xc3, 0x71, 0x53, 0x41, 0x03, 0xc9, 0x53, 0x5b, 0x32,
0x0d, 0xcf, 0xb0, 0x92, 0xbb, 0xcc, 0x1a, 0xfb, 0xde, 0x31, 0x56, 0x92, 0x31, 0xcb, 0x12, 0x76,
0xe8, 0x7b, 0xc7, 0xc6, 0x9f, 0xe5, 0x20, 0xb7, 0xeb, 0x8d, 0xf5, 0x20, 0xb6, 0xcc, 0x4c, 0x10,
0x9b, 0x54, 0x38, 0xad, 0x48, 0xa1, 0x94, 0x32, 0x3b, 0x3a, 0x8a, 0x94, 0x52, 0x79, 0x1f, 0x6a,
0x82, 0x4f, 0x84, 0x9e, 0xd0, 0xd8, 0x2f, 0x6c, 0x9f, 0x04, 0xe2, 0x1c, 0x2d, 0x3e, 0x7b, 0x14,
0xf6, 0xbc, 0x1d, 0x82, 0xb3, 0x65, 0xc8, 0x45, 0xea, 0x0b, 0x26, 0x8b, 0x4f, 0xb6, 0x0a, 0x73,
0x18, 0xcd, 0x7c, 0x25, 0x9d, 0xde, 0xf2, 0x8b, 0x7d, 0x1d, 0x96, 0x92, 0xe5, 0x12, 0x2b, 0x92,
0xb2, 0x91, 0x5e, 0x30, 0xf2, 0xa4, 0x9b, 0x20, 0xf8, 0x08, 0xe1, 0xc8, 0xe0, 0x9a, 0x13, 0xce,
0x31, 0x49, 0x63, 0x7a, 0xc5, 0x04, 0xd3, 0xbb, 0x03, 0xe5, 0x70, 0x78, 0x6e, 0x8d, 0xed, 0xab,
0xa1, 0x67, 0x0f, 0xe4, 0xfa, 0x86, 0x70, 0x78, 0x7e, 0x48, 0x10, 0xf6, 0x10, 0x60, 0x34, 0x1e,
0xcb, 0xb5, 0x87, 0xce, 0x8f, 0x98, 0x94, 0xf7, 0x0f, 0x0f, 0x89, 0xe4, 0xcc, 0xd2, 0x68, 0x3c,
0xa6, 0x9f, 0x6c, 0x1b, 0x6a, 0xa9, 0x67, 0x2f, 0x6f, 0xab, 0xe0, 0x5b, 0x6f, 0xbc, 0x91, 0xb2,
0x38, 0xab, 0x7d, 0x1d, 0xb6, 0xfe, 0x5d, 0x60, 0x3f, 0xe5, 0x09, 0xc8, 0x1e, 0x94, 0xa2, 0xf6,
0xe9, 0x07, 0x08, 0x31, 0x9c, 0xbe, 0x9c, 0x38, 0x40, 0xd8, 0x1c, 0x0c, 0x7c, 0xc1, 0x17, 0x69,
0xc3, 0x8c, 0x58, 0x3e, 0x68, 0x3b, 0x66, 0x93, 0xf8, 0xbe, 0xf1, 0x5f, 0x33, 0x50, 0xa0, 0xd3,
0x8c, 0x6f, 0xc3, 0x02, 0xe1, 0x47, 0x01, 0x81, 0xd2, 0x55, 0x4e, 0xfb, 0x6e, 0x4f, 0xc6, 0x02,
0x8a, 0x65, 0xa1, 0x9d, 0xe5, 0xce, 0x46, 0x33, 0xaf, 0x9d, 0xe7, 0xbe, 0x03, 0xa5, 0xa8, 0x6a,
0x8d, 0x74, 0x8a, 0xaa, 0x66, 0xf6, 0x3a, 0xe4, 0xcf, 0xbc, 0xb1, 0xb2, 0xfc, 0x40, 0x3c, 0x92,
0x26, 0xc2, 0xe3, 0xb6, 0x88, 0x3a, 0xa8, 0xf1, 0xd2, 0x62, 0x11, 0x55, 0x82, 0x64, 0x30, 0xdb,
0xc7, 0xb9, 0x94, 0x3e, 0x1e, 0xc1, 0x82, 0xe0, 0x03, 0x5a, 0x4c, 0xcb, 0xf5, 0x9b, 0xe6, 0x3b,
0x42, 0xc2, 0xeb, 0x0f, 0x27, 0x03, 0xae, 0xdb, 0xde, 0x30, 0x00, 0x4e, 0xc2, 0x95, 0x64, 0x6d,
0xfc, 0x41, 0x86, 0xf8, 0x8b, 0x28, 0x97, 0xdd, 0x87, 0xbc, 0xd8, 0xdf, 0xa6, 0x2c, 0xf1, 0xd1,
0xb9, 0x06, 0x81, 0x67, 0x22, 0x06, 0x5e, 0x80, 0x30, 0x19, 0x25, 0x4b, 0xaf, 0x9a, 0x65, 0x77,
0x32, 0x8a, 0x4c, 0x57, 0x5f, 0x53, 0xdd, 0x9a, 0x32, 0xfb, 0x50, 0xef, 0xa3, 0x65, 0xba, 0xa1,
0x45, 0xd2, 0xe5, 0x13, 0x3b, 0xa6, 0x92, 0x02, 0x07, 0xa7, 0x5c, 0x8b, 0xa0, 0xfb, 0xa3, 0x2c,
0x54, 0x13, 0x2d, 0xc2, 0x50, 0x42, 0xb1, 0x01, 0x90, 0x63, 0x49, 0xce, 0x37, 0x08, 0x90, 0x14,
0xd4, 0xb5, 0x71, 0xca, 0x26, 0xc6, 0x29, 0x0a, 0xce, 0xc9, 0xe9, 0xc1, 0x39, 0x8f, 0xa0, 0x14,
0x9f, 0xe1, 0x4f, 0x36, 0x49, 0xd4, 0xa7, 0x4e, 0x77, 0xc4, 0x48, 0x71, 0x38, 0x4f, 0x41, 0x0f,
0xe7, 0xf9, 0x8e, 0x16, 0xfd, 0x31, 0x87, 0xc5, 0x18, 0x69, 0x23, 0xfa, 0x73, 0x89, 0xfd, 0x30,
0x3e, 0x86, 0xb2, 0xd6, 0x78, 0x3d, 0xca, 0x23, 0x93, 0x88, 0xf2, 0x88, 0xce, 0x61, 0x65, 0xe3,
0x73, 0x58, 0xc6, 0x5f, 0xcf, 0x42, 0x55, 0xac, 0x2f, 0xc7, 0x3d, 0x3d, 0xf4, 0x86, 0x4e, 0x1f,
0x1d, 0x4d, 0xd1, 0x0a, 0x93, 0x82, 0x96, 0x5a, 0x67, 0x72, 0x89, 0x91, 0x9c, 0xa5, 0x1f, 0x37,
0x25, 0x26, 0x1d, 0x1d, 0x37, 0x35, 0xa0, 0x2a, 0x18, 0x23, 0xba, 0x8c, 0xe2, 0xfb, 0x01, 0xcc,
0xf2, 0x09, 0xe7, 0x9b, 0x76, 0x40, 0x1c, 0xf2, 0xeb, 0xb0, 0x24, 0x70, 0xf0, 0xa4, 0xdd, 0xc8,
0x19, 0x0e, 0x1d, 0xc2, 0x24, 0x43, 0x53, 0xfd, 0x84, 0x73, 0xd3, 0x0e, 0xf9, 0xbe, 0x48, 0x90,
0xd7, 0x09, 0x14, 0x07, 0x4e, 0x60, 0x1f, 0xc7, 0x01, 0x9f, 0xd1, 0x37, 0x7a, 0x96, 0xed, 0x4b,
0xcd, 0xb3, 0x4c, 0x06, 0x88, 0xf2, 0xc8, 0xbe, 0x8c, 0x3c, 0xcb, 0x53, 0x94, 0x34, 0x3f, 0x4d,
0x49, 0xc6, 0xbf, 0xc9, 0x42, 0x59, 0x23, 0xcb, 0x57, 0xd9, 0x5d, 0x6f, 0xcf, 0x38, 0x06, 0x4b,
0xba, 0x0f, 0xf0, 0xcd, 0x64, 0x95, 0x18, 0xfb, 0x42, 0x17, 0x17, 0x68, 0x04, 0x7c, 0x0b, 0x4a,
0x62, 0xd5, 0xbd, 0x8f, 0x26, 0x58, 0x79, 0x71, 0x07, 0x02, 0x0e, 0x27, 0xc7, 0x2a, 0xf1, 0x31,
0x26, 0x16, 0xe2, 0xc4, 0xc7, 0x22, 0xf1, 0x45, 0x21, 0xd8, 0x1f, 0x42, 0x45, 0x96, 0x8a, 0x73,
0x8a, 0xdd, 0x8d, 0x57, 0x7d, 0x62, 0xbe, 0xcd, 0x32, 0x55, 0x47, 0x93, 0x2f, 0x33, 0x3e, 0x56,
0x19, 0x8b, 0x2f, 0xcb, 0xf8, 0x98, 0x3e, 0x8c, 0x9d, 0x28, 0xaa, 0x1d, 0xe3, 0xae, 0x14, 0x1f,
0x7b, 0x08, 0x4b, 0x8a, 0x5d, 0x4d, 0x5c, 0xdb, 0x75, 0xbd, 0x89, 0xdb, 0xe7, 0xea, 0x80, 0x16,
0x93, 0x49, 0x47, 0x71, 0x8a, 0x31, 0x88, 0x4e, 0xf0, 0x52, 0xfc, 0xd6, 0x03, 0x28, 0x90, 0x5c,
0x4e, 0xc2, 0x47, 0x3a, 0xe3, 0x22, 0x14, 0x76, 0x1f, 0x0a, 0x24, 0x9e, 0x67, 0xaf, 0x65, 0x36,
0x84, 0x60, 0x34, 0x81, 0x89, 0x8c, 0xfb, 0x3c, 0xf4, 0x9d, 0x7e, 0x10, 0x9f, 0xfd, 0x2a, 0x08,
0xfd, 0x93, 0xea, 0x8a, 0x2d, 0xb7, 0x31, 0x26, 0xea, 0xa8, 0x84, 0x23, 0x36, 0xa6, 0xa5, 0x44,
0x19, 0x52, 0x5c, 0x1a, 0xc2, 0xea, 0x31, 0x0f, 0x2f, 0x38, 0x77, 0x5d, 0x21, 0x0c, 0xf5, 0xb9,
0x1b, 0xfa, 0xf6, 0x50, 0x4c, 0x12, 0xf5, 0xe0, 0xc9, 0x4c, 0xa9, 0xb1, 0x0d, 0x64, 0x33, 0xce,
0xb8, 0x15, 0xe5, 0x23, 0xde, 0xb1, 0x72, 0x9c, 0x96, 0xb6, 0xfe, 0x2b, 0xb0, 0x7e, 0x7d, 0xa6,
0x94, 0x13, 0x9e, 0xf7, 0x93, 0x5c, 0x25, 0xf2, 0x03, 0x0e, 0x3d, 0x3b, 0xa4, 0xd6, 0xe8, 0x9c,
0xa5, 0x03, 0x65, 0x2d, 0x25, 0xde, 0xfb, 0x33, 0x28, 0xdc, 0xd1, 0x87, 0xd8, 0x91, 0x5c, 0xcf,
0x1f, 0xa1, 0xdf, 0x6d, 0x60, 0xc5, 0xa5, 0x67, 0xcc, 0x85, 0x18, 0x8e, 0x47, 0xda, 0x8d, 0x0d,
0x58, 0x40, 0xc9, 0x5e, 0xdb, 0xe8, 0x5e, 0x24, 0x0c, 0x1a, 0xcb, 0xc0, 0x3a, 0xc4, 0xbb, 0xf4,
0x78, 0xcf, 0xff, 0x94, 0x83, 0xb2, 0x06, 0x16, 0xbb, 0x11, 0x06, 0x00, 0x5a, 0x03, 0xc7, 0x1e,
0x71, 0xe5, 0xe4, 0xac, 0x9a, 0x55, 0x84, 0x6e, 0x4b, 0xa0, 0xd8, 0x8b, 0xed, 0xf3, 0x53, 0xcb,
0x9b, 0x84, 0xd6, 0x80, 0x9f, 0xfa, 0x5c, 0xb5, 0xb2, 0x62, 0x9f, 0x9f, 0x1e, 0x4c, 0xc2, 0x6d,
0x84, 0x09, 0x2c, 0xc1, 0x4b, 0x34, 0x2c, 0x19, 0xb3, 0x36, 0xb2, 0x2f, 0x63, 0x2c, 0x19, 0x38,
0x49, 0x94, 0x99, 0x8f, 0x02, 0x27, 0x49, 0x5b, 0x9c, 0xde, 0x40, 0x0b, 0xb3, 0x1b, 0xe8, 0x37,
0x61, 0x95, 0x36, 0x50, 0xc9, 0x9a, 0xad, 0xa9, 0x95, 0xbc, 0x8c, 0xa9, 0xb2, 0x93, 0x9a, 0xd8,
0x5b, 0x17, 0x3d, 0x50, 0x6c, 0x29, 0x70, 0x7e, 0x48, 0x8c, 0x2c, 0x63, 0x8a, 0x9e, 0xc9, 0xc2,
0xbb, 0xce, 0x0f, 0xb9, 0xc0, 0xc4, 0xe8, 0x18, 0x1d, 0x53, 0x1e, 0xb0, 0x18, 0x39, 0xee, 0x34,
0xa6, 0x7d, 0x99, 0xc4, 0x2c, 0x49, 0x4c, 0xfb, 0x52, 0xc7, 0x7c, 0x02, 0x6b, 0x23, 0x3e, 0x70,
0xec, 0x64, 0xb1, 0x56, 0x2c, 0xb8, 0x2d, 0x53, 0xb2, 0x96, 0xa7, 0x4b, 0x8a, 0xbb, 0x18, 0x8d,
0x1f, 0x7a, 0xa3, 0x63, 0x87, 0x64, 0x16, 0x8a, 0xd7, 0xc9, 0x9b, 0x35, 0x77, 0x32, 0xfa, 0x3e,
0x82, 0x45, 0x96, 0xc0, 0xa8, 0x42, 0xb9, 0x1b, 0x7a, 0x63, 0x35, 0xcd, 0x35, 0xa8, 0xd0, 0xa7,
0x3c, 0xf5, 0x78, 0x0b, 0x6e, 0x22, 0x4b, 0xe8, 0x79, 0x63, 0x6f, 0xe8, 0x9d, 0x5e, 0x25, 0xec,
0x78, 0xff, 0x2e, 0x03, 0x4b, 0x89, 0x54, 0xc9, 0x5e, 0xbf, 0x49, 0xfc, 0x2c, 0x3a, 0xba, 0x46,
0x6b, 0x70, 0x51, 0x5b, 0x83, 0x84, 0x48, 0xcc, 0x4c, 0x1d, 0x67, 0x6b, 0xc6, 0x57, 0x2e, 0xa8,
0x8c, 0xc4, 0x52, 0x1a, 0xb3, 0x2c, 0x45, 0xe6, 0x57, 0x97, 0x31, 0xa8, 0x22, 0x7e, 0x41, 0x1e,
0x82, 0x19, 0xc8, 0x2e, 0xe7, 0x92, 0x27, 0x09, 0x74, 0x9b, 0x9f, 0x6a, 0x41, 0x6c, 0x08, 0x0c,
0x8c, 0x7f, 0x92, 0x01, 0x88, 0x5b, 0x87, 0x67, 0x19, 0x22, 0xb9, 0x85, 0xee, 0x43, 0xd3, 0x64,
0x94, 0x37, 0xa0, 0x12, 0x45, 0x2c, 0xc7, 0x92, 0x50, 0x59, 0xc1, 0x84, 0x38, 0x74, 0x0f, 0x16,
0x4e, 0x87, 0xde, 0x31, 0x4a, 0xac, 0x52, 0x6e, 0xa1, 0x78, 0xb5, 0x1a, 0x81, 0x95, 0x34, 0x12,
0xcb, 0x4d, 0xf9, 0xd4, 0xa0, 0x66, 0x5d, 0x0a, 0x32, 0x7e, 0x2b, 0x1b, 0x85, 0x6e, 0xc6, 0x23,
0xf1, 0x62, 0xf5, 0xee, 0x27, 0x89, 0xa5, 0x79, 0x91, 0x7b, 0xf1, 0x63, 0xa8, 0xf9, 0xb4, 0x29,
0xa9, 0x1d, 0x2b, 0xff, 0x82, 0x1d, 0xab, 0xea, 0x27, 0x24, 0x9d, 0x77, 0xa0, 0x6e, 0x0f, 0xce,
0xb9, 0x1f, 0x3a, 0x68, 0xad, 0x47, 0xf9, 0x58, 0x06, 0x4b, 0x6a, 0x70, 0x14, 0x44, 0xef, 0xc1,
0x82, 0x3c, 0x89, 0x1b, 0x61, 0xca, 0xbb, 0x7d, 0x62, 0xb0, 0x40, 0x34, 0xfe, 0xb9, 0x8a, 0x15,
0x4d, 0xce, 0xee, 0x8b, 0x47, 0x45, 0xef, 0x61, 0x76, 0xd6, 0x81, 0x2a, 0x09, 0x49, 0x3a, 0x01,
0x24, 0x3f, 0x22, 0xa0, 0x74, 0x01, 0x24, 0x87, 0x35, 0xff, 0x2a, 0xc3, 0x6a, 0xfc, 0x87, 0x0c,
0xcc, 0xef, 0x7a, 0xe3, 0x5d, 0x87, 0xa2, 0xf9, 0x71, 0x99, 0x44, 0x3e, 0xaa, 0x39, 0xf1, 0x89,
0x81, 0x3f, 0x2f, 0x38, 0x70, 0x96, 0x2a, 0xe6, 0x55, 0x93, 0x62, 0xde, 0x77, 0xe0, 0x16, 0xba,
0x00, 0x7d, 0x6f, 0xec, 0xf9, 0x62, 0xa9, 0xda, 0x43, 0x12, 0xf7, 0x3c, 0x37, 0x3c, 0x53, 0xbc,
0xf3, 0xe6, 0x09, 0xe7, 0x87, 0x1a, 0xc6, 0x7e, 0x84, 0x80, 0x47, 0x3a, 0x87, 0xe1, 0xb9, 0x45,
0x1a, 0xba, 0x94, 0x47, 0x89, 0xa3, 0x2e, 0x88, 0x84, 0x16, 0xc2, 0x51, 0x22, 0x35, 0xbe, 0x05,
0xa5, 0xc8, 0xd8, 0xc3, 0xde, 0x85, 0xd2, 0x99, 0x37, 0x96, 0x16, 0xa1, 0x4c, 0xe2, 0x50, 0x9e,
0xec, 0xb5, 0x59, 0x3c, 0xa3, 0x1f, 0x81, 0xf1, 0x67, 0xf3, 0x30, 0xdf, 0x76, 0xcf, 0x3d, 0xa7,
0x8f, 0xd1, 0xa6, 0x23, 0x3e, 0xf2, 0xd4, 0x75, 0x00, 0xe2, 0x37, 0xc6, 0x66, 0xc5, 0x37, 0xf4,
0xe4, 0x64, 0x6c, 0x56, 0x74, 0x37, 0xcf, 0x0a, 0xcc, 0xf9, 0xfa, 0x15, 0x3b, 0x05, 0x1f, 0xe3,
0xdf, 0xa3, 0xfd, 0xb2, 0xa0, 0x5d, 0xa7, 0x20, 0xca, 0xa2, 0xab, 0x5f, 0x70, 0xc8, 0xe8, 0x78,
0x66, 0x09, 0x21, 0x38, 0x60, 0xaf, 0xc1, 0xbc, 0x3c, 0x03, 0x47, 0x87, 0x96, 0x28, 0x60, 0x5d,
0x82, 0x90, 0x1a, 0x7c, 0x4e, 0x2e, 0xdc, 0x48, 0x90, 0xcd, 0x99, 0x15, 0x05, 0xdc, 0x16, 0xb4,
0x76, 0x07, 0xca, 0x84, 0x4f, 0x28, 0x45, 0x19, 0xa4, 0x89, 0x20, 0x44, 0x48, 0xb9, 0xa9, 0xaa,
0x94, 0x7a, 0x53, 0x15, 0x86, 0x13, 0x47, 0x5c, 0x96, 0xba, 0x08, 0x74, 0x3f, 0x91, 0x06, 0x57,
0x17, 0xbd, 0x49, 0x9b, 0x0a, 0x9d, 0x56, 0x56, 0x36, 0x95, 0x37, 0xa1, 0x7a, 0x62, 0x0f, 0x87,
0xc7, 0x76, 0xff, 0x39, 0x99, 0x02, 0x2a, 0x64, 0xfd, 0x54, 0x40, 0xb4, 0x05, 0xdc, 0x81, 0xb2,
0x36, 0xcb, 0x18, 0x81, 0x99, 0x37, 0x21, 0x9e, 0xdf, 0x69, 0x0b, 0x5f, 0xed, 0x15, 0x2c, 0x7c,
0x5a, 0x24, 0xea, 0x42, 0x32, 0x12, 0xf5, 0x16, 0x72, 0x53, 0x19, 0x72, 0x58, 0xa7, 0xcb, 0x70,
0xec, 0xc1, 0x00, 0x43, 0x0e, 0xe9, 0xee, 0x4a, 0x1c, 0x3c, 0x4a, 0x5f, 0x24, 0x5d, 0x82, 0x60,
0x84, 0x72, 0x9b, 0xcc, 0xd4, 0x63, 0xdb, 0x19, 0xe0, 0xa1, 0x03, 0xb2, 0x1e, 0xcc, 0xdb, 0xa3,
0xf0, 0xd0, 0x76, 0x06, 0xec, 0x2e, 0x54, 0x54, 0x32, 0xee, 0x8e, 0x4b, 0x34, 0xfe, 0x32, 0x59,
0xec, 0x89, 0x06, 0x54, 0x23, 0x8c, 0x51, 0x7c, 0xe4, 0xb8, 0x2c, 0x51, 0x90, 0x0e, 0xde, 0xc7,
0x28, 0x9f, 0x90, 0xe3, 0xc1, 0xe2, 0xda, 0xe3, 0x5b, 0x51, 0xf0, 0x01, 0x52, 0xa9, 0xfa, 0x4f,
0xce, 0x31, 0xc2, 0x14, 0xc2, 0x1d, 0xf9, 0xe8, 0x56, 0x13, 0xf2, 0xaf, 0x44, 0x45, 0x1f, 0x1d,
0x21, 0xb0, 0x6f, 0x69, 0xfa, 0x6b, 0x03, 0x91, 0x5f, 0x9b, 0x2a, 0xff, 0xba, 0x43, 0x59, 0xb7,
0x01, 0x9c, 0x40, 0xec, 0x32, 0x01, 0x77, 0x07, 0x78, 0x46, 0xb8, 0x68, 0x96, 0x9c, 0xe0, 0x19,
0x01, 0x7e, 0xb6, 0x8a, 0x6d, 0x13, 0x2a, 0x7a, 0x37, 0x59, 0x11, 0xf2, 0x07, 0x87, 0xad, 0x4e,
0xfd, 0x06, 0x2b, 0xc3, 0x7c, 0xb7, 0xd5, 0xeb, 0xed, 0xa1, 0xa7, 0xaf, 0x02, 0xc5, 0xe8, 0x20,
0x63, 0x56, 0x7c, 0x35, 0xb7, 0xb6, 0x5a, 0x87, 0xbd, 0xd6, 0x76, 0x3d, 0xf7, 0xbd, 0x7c, 0x31,
0x5b, 0xcf, 0x19, 0x7f, 0x9e, 0x83, 0xb2, 0x36, 0x0a, 0x2f, 0x66, 0xc6, 0xb7, 0x01, 0x50, 0x93,
0x8c, 0x23, 0x52, 0xf3, 0x66, 0x49, 0x40, 0x68, 0xf2, 0x75, 0x1f, 0x45, 0x8e, 0x6e, 0x59, 0x52,
0x3e, 0x8a, 0x37, 0xa1, 0x4a, 0x17, 0x16, 0xe9, 0xfe, 0xda, 0x82, 0x59, 0x21, 0xa0, 0x64, 0xd5,
0x78, 0xc2, 0x19, 0x91, 0xf0, 0x78, 0x9d, 0xbc, 0xbe, 0x84, 0x40, 0x78, 0xc0, 0x0e, 0x4f, 0x47,
0x06, 0xde, 0xf0, 0x9c, 0x13, 0x06, 0x49, 0x84, 0x65, 0x09, 0xeb, 0xc9, 0xb3, 0xda, 0x92, 0x1f,
0x6a, 0x47, 0x6c, 0x0b, 0x66, 0x85, 0x80, 0xb2, 0xa2, 0xaf, 0x2b, 0x02, 0xa2, 0xe8, 0x95, 0xb5,
0x59, 0x6a, 0x48, 0x10, 0xcf, 0xde, 0x8c, 0x19, 0xb1, 0x84, 0x84, 0xf1, 0xb5, 0xd9, 0x7c, 0x2f,
0x37, 0x27, 0xb2, 0x77, 0x81, 0x8d, 0xc6, 0x63, 0x2b, 0xc5, 0xc0, 0x97, 0x37, 0x17, 0x46, 0xe3,
0x71, 0x4f, 0xb3, 0x7f, 0xfd, 0x0c, 0x6c, 0x8f, 0x5f, 0x00, 0x6b, 0x8a, 0x05, 0x8c, 0x4d, 0x8c,
0x54, 0xb1, 0x98, 0x2d, 0x67, 0x74, 0xb6, 0x9c, 0xc2, 0xfd, 0xb2, 0xa9, 0xdc, 0xef, 0x45, 0x7c,
0xc2, 0xd8, 0x81, 0xf2, 0xa1, 0x76, 0x1d, 0xda, 0x5d, 0xb1, 0x43, 0xa8, 0x8b, 0xd0, 0x68, 0xef,
0x20, 0x9b, 0xa2, 0x2f, 0xef, 0x3f, 0xd3, 0x5a, 0x93, 0xd5, 0x5a, 0x63, 0xfc, 0xa3, 0x0c, 0x5d,
0x35, 0x13, 0x35, 0x3e, 0xbe, 0x81, 0x4d, 0xb9, 0xdf, 0xe2, 0x93, 0xf0, 0x65, 0xe5, 0x76, 0x93,
0x87, 0xd8, 0xb1, 0x69, 0x96, 0x77, 0x72, 0x12, 0x70, 0x15, 0xe3, 0x51, 0x46, 0xd8, 0x01, 0x82,
0x94, 0xf0, 0x2d, 0x24, 0x7c, 0x87, 0xca, 0x0f, 0x64, 0x60, 0x87, 0x10, 0xbe, 0xf7, 0xed, 0x4b,
0x59, 0x6b, 0x20, 0x44, 0x10, 0xe9, 0x1f, 0x50, 0x87, 0x65, 0xa3, 0x6f, 0xe3, 0x1f, 0xc8, 0xc3,
0xfa, 0xd3, 0xe3, 0xfb, 0x00, 0x8a, 0x51, 0xa9, 0xc9, 0x1d, 0x56, 0x61, 0x46, 0xe9, 0x62, 0x1f,
0x47, 0x63, 0x48, 0xa2, 0xc5, 0xb4, 0xb8, 0xd0, 0xc7, 0xd3, 0xd6, 0x5a, 0xfd, 0x1e, 0xb0, 0x13,
0xc7, 0x9f, 0x46, 0xa6, 0xc5, 0x56, 0xc7, 0x14, 0x0d, 0xdb, 0x38, 0x82, 0x25, 0xc5, 0x25, 0x34,
0x8d, 0x20, 0x39, 0x79, 0x99, 0x97, 0x30, 0xf9, 0xec, 0x0c, 0x93, 0x37, 0x7e, 0xb3, 0x00, 0xf3,
0xea, 0x6a, 0xc1, 0xb4, 0xeb, 0xf0, 0x4a, 0xc9, 0xeb, 0xf0, 0x1a, 0x89, 0xab, 0x93, 0x70, 0xea,
0xe5, 0x7e, 0x7f, 0x6f, 0x7a, 0xcb, 0xd6, 0x7c, 0x15, 0x89, 0x6d, 0x5b, 0xfa, 0x2a, 0x0a, 0x49,
0x5f, 0x45, 0xda, 0x15, 0x81, 0x24, 0x7a, 0xce, 0x5c, 0x11, 0x78, 0x0b, 0x48, 0x8e, 0xd0, 0x82,
0xdb, 0x8a, 0x08, 0x10, 0x7b, 0x4e, 0x52, 0xec, 0x28, 0x4e, 0x8b, 0x1d, 0xaf, 0x2c, 0x12, 0x7c,
0x13, 0xe6, 0xe8, 0x7a, 0x0d, 0x79, 0xf8, 0x57, 0x6d, 0x1c, 0x72, 0xac, 0xd4, 0x7f, 0x3a, 0xf1,
0x60, 0x4a, 0x5c, 0xfd, 0xbe, 0xad, 0x72, 0xe2, 0xbe, 0x2d, 0xdd, 0x87, 0x52, 0x49, 0xfa, 0x50,
0xee, 0x43, 0x3d, 0x1a, 0x38, 0xb4, 0x48, 0xba, 0x81, 0x3c, 0x39, 0x58, 0x53, 0x70, 0xc1, 0x0d,
0x3b, 0x41, 0xbc, 0xf1, 0xd5, 0x12, 0x1b, 0x9f, 0xe0, 0x55, 0xcd, 0x30, 0xe4, 0xa3, 0x71, 0xa8,
0x36, 0x3e, 0xed, 0x56, 0x46, 0x9a, 0xf9, 0x05, 0x9c, 0x79, 0x35, 0xbd, 0x44, 0x1d, 0x9b, 0x50,
0x3b, 0xb1, 0x9d, 0xe1, 0xc4, 0xe7, 0x96, 0xcf, 0xed, 0xc0, 0x73, 0x71, 0xf1, 0xc7, 0x7b, 0xb0,
0xec, 0xe2, 0x0e, 0xe1, 0x98, 0x88, 0x62, 0x56, 0x4f, 0xf4, 0x4f, 0x3c, 0xc4, 0xa4, 0x8f, 0x84,
0xd8, 0xb2, 0xe4, 0x19, 0x62, 0x8a, 0x55, 0x69, 0x77, 0xac, 0x9d, 0xbd, 0xf6, 0xd3, 0xdd, 0x5e,
0x3d, 0x23, 0x3e, 0xbb, 0x47, 0x5b, 0x5b, 0xad, 0xd6, 0x36, 0x6e, 0x61, 0x00, 0x73, 0x3b, 0xcd,
0xf6, 0x9e, 0xdc, 0xc0, 0xf2, 0xf5, 0x82, 0xf1, 0x3b, 0x59, 0x28, 0x6b, 0xbd, 0x61, 0x4f, 0xa2,
0x49, 0xa0, 0x1b, 0xa0, 0x6e, 0xcf, 0xf6, 0x78, 0x43, 0x71, 0x78, 0x6d, 0x16, 0xa2, 0xfb, 0x17,
0xb3, 0xd7, 0xde, 0xbf, 0xc8, 0xde, 0x86, 0x05, 0x9b, 0x4a, 0x88, 0x06, 0x5d, 0x1a, 0xf7, 0x25,
0x58, 0x8e, 0x39, 0x46, 0x90, 0xc6, 0xdb, 0x94, 0xc0, 0xcb, 0xab, 0xa0, 0xcd, 0x68, 0xa7, 0xc2,
0xb9, 0x99, 0x97, 0x23, 0x23, 0x9d, 0xf1, 0xd1, 0x86, 0x2f, 0xc7, 0x4b, 0x25, 0x1b, 0x1f, 0x00,
0xc4, 0x6d, 0x4e, 0x0e, 0xd1, 0x8d, 0xe4, 0x10, 0x65, 0xb4, 0x21, 0xca, 0x1a, 0xff, 0x4c, 0xb2,
0x27, 0x39, 0xde, 0x91, 0x39, 0xef, 0xeb, 0xa0, 0x0c, 0x8c, 0x16, 0x06, 0x72, 0x8f, 0x87, 0x3c,
0x54, 0x17, 0x16, 0x2c, 0xca, 0x94, 0x76, 0x94, 0x30, 0xc3, 0x4e, 0xb3, 0xb3, 0xec, 0xf4, 0x0d,
0xa8, 0x08, 0x56, 0x2a, 0x89, 0x25, 0x90, 0x2c, 0xa9, 0x3c, 0xb2, 0x2f, 0x55, 0xdd, 0x09, 0x3e,
0x9a, 0x9f, 0xe2, 0xa3, 0xbf, 0x9b, 0xa1, 0xfb, 0x43, 0xe2, 0x86, 0xc6, 0x8c, 0x34, 0x2a, 0x33,
0xc9, 0x48, 0x25, 0xaa, 0x19, 0xa5, 0x5f, 0xc3, 0x1c, 0xb3, 0xe9, 0xcc, 0x31, 0x9d, 0xed, 0xe6,
0x52, 0xd9, 0xae, 0xb1, 0x0e, 0x8d, 0x6d, 0x2e, 0x86, 0xa2, 0x39, 0x1c, 0x4e, 0x8d, 0xa5, 0x71,
0x0b, 0x6e, 0xa6, 0xa4, 0x49, 0xcb, 0xcc, 0x27, 0xb0, 0xd2, 0xa4, 0x8b, 0x15, 0x7e, 0x56, 0x07,
0x24, 0x8d, 0x06, 0xac, 0x4e, 0x17, 0x29, 0x2b, 0xdb, 0x81, 0xc5, 0x6d, 0x7e, 0x3c, 0x39, 0xdd,
0xe3, 0xe7, 0x71, 0x45, 0x0c, 0xf2, 0xc1, 0x99, 0x77, 0x21, 0x27, 0x17, 0x7f, 0x63, 0xe8, 0xa5,
0xc0, 0xb1, 0x82, 0x31, 0xef, 0x2b, 0xeb, 0x3c, 0x42, 0xba, 0x63, 0xde, 0x37, 0x9e, 0x00, 0xd3,
0xcb, 0x91, 0x33, 0x21, 0x54, 0xa7, 0xc9, 0xb1, 0x15, 0x5c, 0x05, 0x21, 0x1f, 0xa9, 0x83, 0x81,
0x10, 0x4c, 0x8e, 0xbb, 0x04, 0x31, 0xee, 0x41, 0xe5, 0xd0, 0xbe, 0x32, 0xf9, 0x17, 0xf2, 0xfc,
0xdd, 0x1a, 0xcc, 0x8f, 0xed, 0x2b, 0xc1, 0x33, 0x23, 0x47, 0x1d, 0x26, 0x1b, 0x7f, 0x98, 0x87,
0x39, 0xc2, 0x64, 0x77, 0xe9, 0x06, 0x63, 0xc7, 0x45, 0x9e, 0xa5, 0x76, 0x0f, 0x0d, 0x34, 0xb3,
0xc1, 0x64, 0x67, 0x37, 0x18, 0x69, 0x55, 0x54, 0x37, 0x37, 0x29, 0x97, 0x8a, 0x3b, 0x19, 0xa9,
0xeb, 0x9a, 0x92, 0xb7, 0x0b, 0xe4, 0xe3, 0x3b, 0xae, 0xe9, 0x64, 0x75, 0xd2, 0xe9, 0x1d, 0x2b,
0x68, 0xd4, 0x3a, 0xb5, 0x6f, 0xca, 0xbd, 0x45, 0x07, 0xa5, 0x6a, 0x81, 0xf3, 0xea, 0x50, 0x69,
0x52, 0x0b, 0x9c, 0xd1, 0xf6, 0x8a, 0x2f, 0xd7, 0xf6, 0xc8, 0xdc, 0xf8, 0x02, 0x6d, 0x0f, 0x5e,
0x41, 0xdb, 0x7b, 0x05, 0x87, 0xf3, 0x4d, 0x28, 0xa2, 0x30, 0xa4, 0x6d, 0x35, 0x42, 0x08, 0x12,
0x5b, 0xcd, 0x87, 0x9a, 0x3e, 0x44, 0xd1, 0x2e, 0x1a, 0xaf, 0x37, 0xf9, 0x17, 0x3f, 0x1f, 0x47,
0xde, 0xe7, 0x30, 0x2f, 0xa1, 0x82, 0xa0, 0x5d, 0x7b, 0xa4, 0x2e, 0xbf, 0xc3, 0xdf, 0x62, 0xd8,
0xf0, 0xc6, 0xae, 0x2f, 0x26, 0x8e, 0xcf, 0x07, 0xea, 0x56, 0x23, 0x07, 0xd7, 0xa8, 0x80, 0x88,
0x0e, 0x0a, 0xdd, 0xcc, 0xf5, 0x2e, 0x5c, 0xc9, 0x7b, 0xe6, 0x9d, 0xe0, 0x99, 0xf8, 0x34, 0x18,
0xd4, 0xf1, 0xfa, 0xcb, 0xb1, 0xe7, 0xab, 0x9d, 0xdc, 0xf8, 0x71, 0x06, 0xea, 0x72, 0x75, 0x45,
0x69, 0xba, 0x6a, 0x54, 0xb8, 0x2e, 0x38, 0xe3, 0xc5, 0x77, 0x14, 0x19, 0x50, 0x45, 0x8b, 0x50,
0xb4, 0xad, 0x93, 0x45, 0xab, 0x2c, 0x80, 0x3b, 0x72, 0x6b, 0x7f, 0x1d, 0xca, 0x2a, 0x30, 0x7c,
0xe4, 0x0c, 0xd5, 0x75, 0xf6, 0x14, 0x19, 0xbe, 0xef, 0x0c, 0x95, 0x54, 0xe0, 0xdb, 0xf2, 0x90,
0x73, 0x06, 0xa5, 0x02, 0xd3, 0x0e, 0xb9, 0xf1, 0xaf, 0x32, 0xb0, 0xa8, 0x75, 0x45, 0xae, 0xdb,
0x8f, 0xa0, 0x12, 0xdd, 0x3b, 0xcb, 0x23, 0x71, 0x74, 0x2d, 0xc9, 0x68, 0xe2, 0x6c, 0xe5, 0x7e,
0x04, 0x09, 0x44, 0x63, 0x06, 0xf6, 0x15, 0x45, 0x2f, 0x4f, 0x46, 0x4a, 0xe3, 0x1b, 0xd8, 0x57,
0x3b, 0x9c, 0x77, 0x27, 0x23, 0xa1, 0xcf, 0x5f, 0x70, 0xfe, 0x3c, 0x42, 0x20, 0xf6, 0x09, 0x02,
0x26, 0x31, 0x0c, 0xa8, 0x8e, 0x3c, 0x37, 0x3c, 0x8b, 0x50, 0xa4, 0x28, 0x8e, 0x40, 0xc2, 0x31,
0xfe, 0x34, 0x0b, 0x4b, 0x64, 0x77, 0x94, 0xf6, 0x5e, 0xc9, 0xba, 0x1a, 0x30, 0x47, 0x26, 0x58,
0x62, 0x5e, 0xbb, 0x37, 0x4c, 0xf9, 0xcd, 0xbe, 0xf9, 0x8a, 0xb6, 0x52, 0x75, 0x8e, 0xfa, 0x9a,
0xe1, 0xcf, 0xcd, 0x0e, 0xff, 0xf5, 0xc3, 0x9b, 0xe6, 0xfd, 0x2d, 0xa4, 0x79, 0x7f, 0x5f, 0xc5,
0xe7, 0x3a, 0x73, 0xe2, 0x77, 0x5e, 0xe2, 0x68, 0x27, 0x7e, 0x9f, 0xc0, 0x5a, 0x02, 0x07, 0xb9,
0xb5, 0x73, 0xe2, 0x70, 0x75, 0x2b, 0xcd, 0xb2, 0x86, 0xdd, 0x55, 0x69, 0x9b, 0xf3, 0x50, 0x08,
0xfa, 0xde, 0x98, 0x1b, 0xab, 0xb0, 0x9c, 0x1c, 0x55, 0xb9, 0x4d, 0xfc, 0x5e, 0x06, 0x1a, 0x32,
0x56, 0xc7, 0x71, 0x4f, 0x77, 0x9d, 0x20, 0xf4, 0xfc, 0xe8, 0x7e, 0xd6, 0xdb, 0x00, 0x74, 0xe1,
0x3e, 0x2a, 0xd8, 0xf2, 0x1e, 0x16, 0x84, 0xa0, 0x7a, 0x7d, 0x13, 0x8a, 0xdc, 0x1d, 0x50, 0x22,
0x51, 0xc3, 0x3c, 0x77, 0x07, 0x4a, 0x39, 0x9f, 0xd9, 0x4a, 0xab, 0x49, 0x21, 0x41, 0xde, 0x7a,
0x20, 0x46, 0x87, 0x9f, 0xe3, 0x96, 0x9e, 0x8f, 0x6e, 0x3d, 0xd8, 0xb7, 0x2f, 0x31, 0xf2, 0x35,
0x30, 0xfe, 0x6e, 0x16, 0x16, 0xe2, 0xf6, 0xd1, 0x9d, 0x2a, 0x2f, 0xbe, 0x1d, 0xe6, 0xae, 0x24,
0x07, 0x47, 0x28, 0x35, 0x9a, 0x35, 0xb6, 0x48, 0x8b, 0xb3, 0xed, 0x32, 0x03, 0xca, 0x0a, 0xc3,
0x9b, 0x84, 0xda, 0x35, 0x89, 0x25, 0x42, 0x39, 0x98, 0x84, 0x42, 0x0b, 0x15, 0xea, 0xb8, 0xe3,
0x4a, 0x3d, 0xb0, 0x60, 0x8f, 0xc2, 0x36, 0xbe, 0xdf, 0x20, 0xc0, 0x22, 0x1b, 0x4d, 0xa4, 0xc0,
0x12, 0xf8, 0x75, 0x52, 0x4a, 0x68, 0xe6, 0x50, 0x21, 0xd1, 0x25, 0x76, 0xba, 0x88, 0x3a, 0x92,
0xd8, 0x5f, 0x87, 0x32, 0x15, 0x1e, 0x1f, 0xf0, 0xce, 0x9b, 0x25, 0xac, 0x01, 0xd3, 0xa5, 0x65,
0xcc, 0x9b, 0x24, 0xec, 0x01, 0x40, 0x55, 0x61, 0x28, 0xcc, 0xdf, 0xcc, 0xc0, 0xcd, 0x94, 0x69,
0x93, 0xab, 0x7c, 0x0b, 0x16, 0x4f, 0xa2, 0x44, 0x35, 0xba, 0xb4, 0xd4, 0x57, 0x15, 0x5b, 0x4d,
0x8e, 0xa9, 0x59, 0x3f, 0x49, 0x02, 0x62, 0x4d, 0x94, 0x66, 0x30, 0x71, 0x7d, 0x00, 0x8a, 0x44,
0x34, 0x8d, 0xa4, 0x04, 0x1e, 0xc2, 0x7a, 0xeb, 0x52, 0x70, 0x8c, 0x2d, 0xfd, 0x01, 0x12, 0x45,
0x46, 0x49, 0xab, 0x7b, 0xe6, 0x95, 0xac, 0xee, 0x03, 0x3a, 0x6f, 0x1c, 0x95, 0xf5, 0x93, 0x14,
0x82, 0x1b, 0xa8, 0xc8, 0x43, 0x0f, 0xa8, 0xa8, 0x7b, 0x04, 0xfa, 0xd1, 0xc3, 0x29, 0x46, 0x00,
0x0b, 0xfb, 0x93, 0x61, 0xe8, 0xc4, 0x6f, 0xa9, 0xb0, 0x6f, 0xca, 0x3c, 0x58, 0x8f, 0x1a, 0xb5,
0xd4, 0x8a, 0x20, 0xaa, 0x08, 0x07, 0x6b, 0x24, 0x0a, 0xb2, 0x66, 0xeb, 0x5b, 0x18, 0x25, 0x6b,
0x30, 0x6e, 0xc2, 0x5a, 0xfc, 0x45, 0xc3, 0xa6, 0xb6, 0x9a, 0x7f, 0x98, 0xa1, 0x30, 0xfb, 0xe4,
0xbb, 0x2e, 0xac, 0x05, 0x4b, 0x81, 0xe3, 0x9e, 0x0e, 0xb9, 0x5e, 0x7c, 0x20, 0x07, 0x61, 0x25,
0xd9, 0x36, 0xf9, 0xf6, 0x8b, 0xb9, 0x48, 0x39, 0xe2, 0xd2, 0x02, 0xb6, 0x79, 0x5d, 0x23, 0x63,
0xb2, 0x98, 0x1a, 0x8d, 0xd9, 0xc6, 0xb7, 0xa1, 0x96, 0xac, 0x88, 0x7d, 0x28, 0x8f, 0xe9, 0xc7,
0xad, 0xca, 0x4d, 0x9d, 0x61, 0x8e, 0x09, 0xa2, 0x1c, 0x8f, 0x7d, 0x60, 0xfc, 0xed, 0x0c, 0x34,
0x4c, 0x2e, 0x28, 0x57, 0x6b, 0xa5, 0xa2, 0x99, 0x8f, 0x66, 0x4a, 0xbd, 0xbe, 0xaf, 0xea, 0xf4,
0xbf, 0x6a, 0xd1, 0x7b, 0xd7, 0x4e, 0xc6, 0xee, 0x8d, 0x99, 0x1e, 0x6d, 0x16, 0x61, 0x8e, 0x50,
0x8c, 0x35, 0x58, 0x91, 0xed, 0x51, 0x6d, 0x89, 0x5d, 0xaa, 0x89, 0x1a, 0x13, 0x2e, 0xd5, 0x75,
0x68, 0xd0, 0x79, 0x5c, 0xbd, 0x13, 0x32, 0xe3, 0x36, 0xb0, 0x7d, 0xbb, 0x6f, 0xfb, 0x9e, 0xe7,
0x1e, 0x72, 0x5f, 0x06, 0x2d, 0xa3, 0x84, 0x89, 0x1e, 0x47, 0x25, 0x0a, 0xd3, 0x97, 0xba, 0x1c,
0xd6, 0x73, 0x55, 0x8c, 0x16, 0x7d, 0x19, 0x26, 0x2c, 0x6d, 0xda, 0xcf, 0xb9, 0x2a, 0x49, 0x0d,
0xd1, 0xc7, 0x50, 0x1e, 0x47, 0x85, 0xaa, 0x71, 0x57, 0xd7, 0x88, 0xcc, 0x56, 0x6b, 0xea, 0xd8,
0xc6, 0x63, 0x58, 0x4e, 0x96, 0x29, 0x59, 0xc7, 0x3a, 0x14, 0x47, 0x12, 0x26, 0x5b, 0x17, 0x7d,
0x1b, 0xbf, 0x5d, 0x84, 0x79, 0xa9, 0x8d, 0xb2, 0x0d, 0xc8, 0xf7, 0x55, 0x9c, 0x5c, 0x7c, 0x7d,
0x95, 0x4c, 0x55, 0xff, 0xb7, 0x30, 0x5a, 0x4e, 0xe0, 0xb1, 0x8f, 0xa1, 0x96, 0x74, 0x15, 0x4f,
0x9d, 0xf6, 0x4f, 0xfa, 0x78, 0xab, 0xfd, 0x29, 0xa7, 0x60, 0x29, 0xde, 0x1c, 0x49, 0x66, 0x28,
0x9e, 0x69, 0xbb, 0xa7, 0xe7, 0x0a, 0x79, 0x3b, 0x38, 0xb3, 0xad, 0xc7, 0x4f, 0x3e, 0x90, 0xc7,
0xfd, 0xcb, 0x08, 0xec, 0x9e, 0xd9, 0x8f, 0x9f, 0x7c, 0x30, 0x2d, 0x49, 0xcb, 0xc3, 0xfe, 0x9a,
0x24, 0xbd, 0x0c, 0x05, 0xba, 0x05, 0x95, 0x02, 0x9e, 0xe8, 0x83, 0x3d, 0x82, 0x65, 0x65, 0xe0,
0x90, 0xa1, 0xe9, 0xc4, 0x05, 0x8b, 0x74, 0x1a, 0x50, 0xa6, 0x75, 0x31, 0x89, 0x4c, 0x22, 0xab,
0x30, 0x77, 0x16, 0x5f, 0x69, 0x5b, 0x35, 0xe5, 0x97, 0xf1, 0xa7, 0x05, 0x28, 0x6b, 0x83, 0xc2,
0x2a, 0x50, 0x34, 0x5b, 0xdd, 0x96, 0xf9, 0x69, 0x6b, 0xbb, 0x7e, 0x83, 0xdd, 0x87, 0xb7, 0xda,
0x9d, 0xad, 0x03, 0xd3, 0x6c, 0x6d, 0xf5, 0xac, 0x03, 0xd3, 0x52, 0x97, 0xa8, 0x1d, 0x36, 0x3f,
0xdf, 0x6f, 0x75, 0x7a, 0xd6, 0x76, 0xab, 0xd7, 0x6c, 0xef, 0x75, 0xeb, 0x19, 0xf6, 0x1a, 0x34,
0x62, 0x4c, 0x95, 0xdc, 0xdc, 0x3f, 0x38, 0xea, 0xf4, 0xea, 0x59, 0x76, 0x07, 0x6e, 0xed, 0xb4,
0x3b, 0xcd, 0x3d, 0x2b, 0xc6, 0xd9, 0xda, 0xeb, 0x7d, 0x6a, 0xb5, 0x7e, 0xe9, 0xb0, 0x6d, 0x7e,
0x5e, 0xcf, 0xa5, 0x21, 0xec, 0xf6, 0xf6, 0xb6, 0x54, 0x09, 0x79, 0x76, 0x13, 0x56, 0x08, 0x81,
0xb2, 0x58, 0xbd, 0x83, 0x03, 0xab, 0x7b, 0x70, 0xd0, 0xa9, 0x17, 0xd8, 0x22, 0x54, 0xdb, 0x9d,
0x4f, 0x9b, 0x7b, 0xed, 0x6d, 0xcb, 0x6c, 0x35, 0xf7, 0xf6, 0xeb, 0x73, 0x6c, 0x09, 0x16, 0xa6,
0xf1, 0xe6, 0x45, 0x11, 0x0a, 0xef, 0xa0, 0xd3, 0x3e, 0xe8, 0x58, 0x9f, 0xb6, 0xcc, 0x6e, 0xfb,
0xa0, 0x53, 0x2f, 0xb2, 0x55, 0x60, 0xc9, 0xa4, 0xdd, 0xfd, 0xe6, 0x56, 0xbd, 0xc4, 0x56, 0x60,
0x31, 0x09, 0x7f, 0xd6, 0xfa, 0xbc, 0x0e, 0xac, 0x01, 0xcb, 0xd4, 0x30, 0x6b, 0xb3, 0xb5, 0x77,
0xf0, 0x99, 0xb5, 0xdf, 0xee, 0xb4, 0xf7, 0x8f, 0xf6, 0xeb, 0x65, 0xbc, 0x9b, 0xb1, 0xd5, 0xb2,
0xda, 0x9d, 0xee, 0xd1, 0xce, 0x4e, 0x7b, 0xab, 0xdd, 0xea, 0xf4, 0xea, 0x15, 0xaa, 0x39, 0xad,
0xe3, 0x55, 0x91, 0x41, 0x9e, 0x5f, 0xb1, 0xb6, 0xdb, 0xdd, 0xe6, 0xe6, 0x5e, 0x6b, 0xbb, 0x5e,
0x63, 0xb7, 0xe1, 0x66, 0xaf, 0xb5, 0x7f, 0x78, 0x60, 0x36, 0xcd, 0xcf, 0xd5, 0xf9, 0x16, 0x6b,
0xa7, 0xd9, 0xde, 0x3b, 0x32, 0x5b, 0xf5, 0x05, 0xf6, 0x06, 0xdc, 0x36, 0x5b, 0x9f, 0x1c, 0xb5,
0xcd, 0xd6, 0xb6, 0xd5, 0x39, 0xd8, 0x6e, 0x59, 0x3b, 0xad, 0x66, 0xef, 0xc8, 0x6c, 0x59, 0xfb,
0xed, 0x6e, 0xb7, 0xdd, 0x79, 0x5a, 0xaf, 0xb3, 0xb7, 0xe0, 0x6e, 0x84, 0x12, 0x15, 0x30, 0x85,
0xb5, 0x28, 0xfa, 0xa7, 0xa6, 0xb4, 0xd3, 0xfa, 0xa5, 0x9e, 0x75, 0xd8, 0x6a, 0x99, 0x75, 0xc6,
0xd6, 0x61, 0x35, 0xae, 0x9e, 0x2a, 0x90, 0x75, 0x2f, 0x89, 0xb4, 0xc3, 0x96, 0xb9, 0xdf, 0xec,
0x88, 0x09, 0x4e, 0xa4, 0x2d, 0x8b, 0x66, 0xc7, 0x69, 0xd3, 0xcd, 0x5e, 0x61, 0x0c, 0x6a, 0xda,
0xac, 0xec, 0x34, 0xcd, 0xfa, 0x2a, 0x5b, 0x80, 0xf2, 0xfe, 0xe1, 0xa1, 0xd5, 0x6b, 0xef, 0xb7,
0x0e, 0x8e, 0x7a, 0xf5, 0x35, 0xb6, 0x02, 0xf5, 0x76, 0xa7, 0xd7, 0x32, 0xc5, 0x5c, 0xab, 0xac,
0xff, 0x63, 0x9e, 0x2d, 0xc3, 0x82, 0x6a, 0xa9, 0x82, 0xfe, 0xc5, 0x3c, 0x5b, 0x03, 0x76, 0xd4,
0x31, 0x5b, 0xcd, 0x6d, 0x31, 0x70, 0x51, 0xc2, 0xff, 0x9c, 0x97, 0x6e, 0xa3, 0x1f, 0xe7, 0xa2,
0xcd, 0x3a, 0x8e, 0xc3, 0x48, 0x5e, 0x70, 0x5e, 0xd1, 0x2e, 0x26, 0x7f, 0xd9, 0xd3, 0x23, 0x9a,
0x6a, 0x95, 0x9b, 0x51, 0xad, 0x66, 0x74, 0xf7, 0xaa, 0x2e, 0xfb, 0xbd, 0x09, 0xd5, 0x11, 0x5d,
0x76, 0x2e, 0x2f, 0x35, 0x06, 0x19, 0x94, 0x44, 0x40, 0xba, 0xd1, 0x78, 0xe6, 0xed, 0x8d, 0xc2,
0xec, 0xdb, 0x1b, 0x69, 0xf2, 0xfd, 0x5c, 0x9a, 0x7c, 0xff, 0x00, 0x16, 0x89, 0x35, 0x39, 0xae,
0x33, 0x52, 0x5a, 0x33, 0x49, 0x81, 0x0b, 0xc8, 0xa2, 0x08, 0xae, 0xd4, 0x09, 0xa5, 0x72, 0x48,
0x16, 0x32, 0x2f, 0xb5, 0x8d, 0x84, 0xa6, 0x41, 0x9c, 0x23, 0xd2, 0x34, 0xa2, 0x1a, 0xec, 0xcb,
0xb8, 0x86, 0xb2, 0x56, 0x03, 0xc1, 0xb1, 0x86, 0x07, 0xb0, 0xc8, 0x2f, 0x43, 0xdf, 0xb6, 0xbc,
0xb1, 0xfd, 0xc5, 0x04, 0xfd, 0xda, 0x36, 0xea, 0xf0, 0x15, 0x73, 0x01, 0x13, 0x0e, 0x10, 0xbe,
0x6d, 0x87, 0xf6, 0x83, 0x2f, 0xa1, 0xac, 0x5d, 0x84, 0xcf, 0xd6, 0x60, 0xe9, 0xb3, 0x76, 0xaf,
0xd3, 0xea, 0x76, 0xad, 0xc3, 0xa3, 0xcd, 0x67, 0xad, 0xcf, 0xad, 0xdd, 0x66, 0x77, 0xb7, 0x7e,
0x43, 0x2c, 0xda, 0x4e, 0xab, 0xdb, 0x6b, 0x6d, 0x27, 0xe0, 0x19, 0xf6, 0x3a, 0xac, 0x1f, 0x75,
0x8e, 0xba, 0xad, 0x6d, 0x2b, 0x2d, 0x5f, 0x56, 0x50, 0xa9, 0x4c, 0x4f, 0xc9, 0x9e, 0x7b, 0xf0,
0x6b, 0x50, 0x4b, 0x1e, 0xf5, 0x66, 0x00, 0x73, 0x7b, 0xad, 0xa7, 0xcd, 0xad, 0xcf, 0xe9, 0xf6,
0xd6, 0x6e, 0xaf, 0xd9, 0x6b, 0x6f, 0x59, 0xf2, 0xb6, 0x56, 0xc1, 0x11, 0x32, 0xac, 0x0c, 0xf3,
0xcd, 0xce, 0xd6, 0xee, 0x81, 0xd9, 0xad, 0x67, 0xd9, 0x6b, 0xb0, 0xa6, 0x68, 0x75, 0xeb, 0x60,
0x7f, 0xbf, 0xdd, 0x43, 0x66, 0xd8, 0xfb, 0xfc, 0x50, 0x90, 0xe6, 0x03, 0x1b, 0x4a, 0xf1, 0x75,
0xb3, 0xc8, 0x60, 0xda, 0xbd, 0x76, 0xb3, 0x17, 0x73, 0xd7, 0xfa, 0x0d, 0xc1, 0xbf, 0x62, 0x30,
0xde, 0x16, 0x5b, 0xcf, 0xd0, 0x69, 0x38, 0x05, 0xa4, 0xda, 0xeb, 0x59, 0xb1, 0xa8, 0x62, 0xe8,
0xe6, 0x41, 0x4f, 0x74, 0xe1, 0xdb, 0x50, 0x4b, 0xc6, 0x3c, 0x26, 0x8d, 0xd7, 0xeb, 0xb0, 0xba,
0xd9, 0xea, 0x7d, 0xd6, 0x6a, 0x75, 0x70, 0x74, 0xb6, 0x5a, 0x9d, 0x9e, 0xd9, 0xdc, 0x6b, 0xf7,
0x3e, 0xaf, 0x67, 0x1e, 0x7c, 0x0c, 0xf5, 0x69, 0x07, 0x63, 0xc2, 0x23, 0xfb, 0x22, 0xd7, 0xed,
0x83, 0xff, 0x9c, 0x81, 0xe5, 0x34, 0xdb, 0xba, 0x98, 0x43, 0xb9, 0x38, 0x05, 0x8b, 0xee, 0x1e,
0x74, 0xac, 0xce, 0x01, 0x5e, 0x0f, 0xb9, 0x0e, 0xab, 0x53, 0x09, 0x8a, 0x13, 0x64, 0xd8, 0x2d,
0x58, 0x9b, 0xc9, 0x64, 0x99, 0x07, 0x47, 0xd8, 0xed, 0x06, 0x2c, 0x4f, 0x25, 0xb6, 0x4c, 0xf3,
0xc0, 0xac, 0xe7, 0xd8, 0x7b, 0x70, 0x7f, 0x2a, 0x65, 0x76, 0x63, 0x52, 0xfb, 0x56, 0x9e, 0xdd,
0x83, 0x37, 0x67, 0xb0, 0x63, 0xde, 0x6d, 0x6d, 0x36, 0xf7, 0x44, 0xf7, 0xea, 0x85, 0x07, 0xff,
0x34, 0x07, 0x10, 0x1f, 0x2a, 0x12, 0xf5, 0x6f, 0x37, 0x7b, 0xcd, 0xbd, 0x03, 0x41, 0x5e, 0xe6,
0x41, 0x4f, 0x94, 0x6e, 0xb6, 0x3e, 0xa9, 0xdf, 0x48, 0x4d, 0x39, 0x38, 0x14, 0x1d, 0x5a, 0x83,
0x25, 0x9a, 0xaa, 0x3d, 0xd1, 0x8d, 0x76, 0xe7, 0x29, 0xdd, 0x34, 0x8a, 0xbb, 0xdf, 0xd1, 0xe1,
0x8e, 0x79, 0xd0, 0xe9, 0x59, 0xdd, 0xdd, 0xa3, 0xde, 0x36, 0xde, 0x53, 0xba, 0x65, 0xb6, 0x0f,
0xa9, 0xcc, 0xfc, 0x8b, 0x10, 0x44, 0xd1, 0x05, 0xb1, 0x16, 0x9e, 0x1e, 0x74, 0xbb, 0xed, 0x43,
0xeb, 0x93, 0xa3, 0x96, 0xd9, 0x6e, 0x75, 0x31, 0xe3, 0x5c, 0x0a, 0x5c, 0xe0, 0xcf, 0x8b, 0x3d,
0xb3, 0xb7, 0xf7, 0xa9, 0xdc, 0xd4, 0x04, 0x6a, 0x31, 0x09, 0x12, 0x58, 0x25, 0x31, 0x3b, 0x62,
0x57, 0x48, 0x29, 0x19, 0xae, 0x49, 0x13, 0xf9, 0xca, 0x62, 0xbf, 0x9b, 0x59, 0x24, 0x98, 0xad,
0x92, 0x9e, 0x24, 0x72, 0xe1, 0x56, 0x18, 0x09, 0x0e, 0xdb, 0xdb, 0x26, 0x66, 0xa8, 0xcd, 0x40,
0x05, 0xee, 0x82, 0x20, 0x42, 0xb1, 0x6d, 0x08, 0x94, 0xba, 0xfa, 0x10, 0x29, 0x8b, 0x8f, 0x7f,
0x2b, 0x07, 0x35, 0x3a, 0xe0, 0x49, 0x2f, 0x4c, 0x72, 0x9f, 0xed, 0xc3, 0xbc, 0x7c, 0xaa, 0x94,
0xad, 0x44, 0x77, 0x3c, 0xea, 0x8f, 0xa3, 0xae, 0xaf, 0x4e, 0x83, 0xa5, 0x98, 0xbc, 0xf4, 0x57,
0xfe, 0xe4, 0xbf, 0xff, 0x9d, 0x6c, 0x95, 0x95, 0x1f, 0x9e, 0xbf, 0xff, 0xf0, 0x94, 0xbb, 0x81,
0x28, 0xe3, 0x57, 0x00, 0xe2, 0x07, 0x38, 0x59, 0x43, 0xbb, 0x54, 0x22, 0xf1, 0xf4, 0xe6, 0xfa,
0xcd, 0x94, 0x14, 0x59, 0xee, 0x4d, 0x2c, 0x77, 0xc9, 0xa8, 0x89, 0x72, 0x1d, 0xd7, 0x09, 0xe9,
0x31, 0xce, 0x8f, 0x32, 0x0f, 0xd8, 0x00, 0x2a, 0xfa, 0xd3, 0x98, 0x4c, 0x49, 0xb0, 0x29, 0x8f,
0x7b, 0xae, 0xdf, 0x4a, 0x4d, 0x53, 0xba, 0x01, 0xd6, 0xb1, 0x62, 0xd4, 0x45, 0x1d, 0x13, 0xc4,
0x88, 0x6b, 0x19, 0x92, 0xb6, 0x14, 0xbf, 0x80, 0xc9, 0x5e, 0xd3, 0xe4, 0xdd, 0x99, 0xf7, 0x37,
0xd7, 0x6f, 0x5f, 0x93, 0x2a, 0xeb, 0xba, 0x8d, 0x75, 0xad, 0x19, 0x4c, 0xd4, 0xd5, 0x47, 0x1c,
0xf5, 0xfe, 0xe6, 0x47, 0x99, 0x07, 0x8f, 0xff, 0xfd, 0x3b, 0x50, 0x8a, 0x02, 0xbe, 0xd9, 0xaf,
0x43, 0x35, 0x71, 0x02, 0x97, 0xa9, 0x6e, 0xa4, 0x1d, 0xd8, 0x5d, 0x7f, 0x2d, 0x3d, 0x51, 0x56,
0xfc, 0x3a, 0x56, 0xdc, 0x60, 0xab, 0xa2, 0x62, 0x79, 0xc2, 0xf5, 0x21, 0x9e, 0x98, 0xa7, 0x1b,
0x33, 0x9f, 0x6b, 0x5a, 0x21, 0x55, 0xf6, 0xda, 0xb4, 0xa6, 0x96, 0xa8, 0xed, 0xf6, 0x35, 0xa9,
0xb2, 0xba, 0xd7, 0xb0, 0xba, 0x55, 0xb6, 0xac, 0x57, 0xa7, 0xe2, 0x84, 0x19, 0xc7, 0x6b, 0x6c,
0xf5, 0x07, 0x22, 0xd9, 0xed, 0xf8, 0x4e, 0xd1, 0x94, 0x87, 0x23, 0x23, 0x12, 0x99, 0x7d, 0xfb,
0xd1, 0x68, 0x60, 0x55, 0x8c, 0xe1, 0xf4, 0xe9, 0xaf, 0x3b, 0xb2, 0x63, 0x28, 0x6b, 0x2f, 0x22,
0xb1, 0x9b, 0xd7, 0xbe, 0xde, 0xb4, 0xbe, 0x9e, 0x96, 0x94, 0xd6, 0x15, 0xbd, 0xfc, 0x87, 0x27,
0x9c, 0xb3, 0x5f, 0x86, 0x52, 0xf4, 0xce, 0x0e, 0x5b, 0xd3, 0xde, 0x3d, 0xd2, 0xdf, 0x05, 0x5a,
0x6f, 0xcc, 0x26, 0xa4, 0x11, 0x9f, 0x5e, 0xba, 0x20, 0xbe, 0xcf, 0xa0, 0xac, 0xbd, 0xa5, 0x13,
0x75, 0x60, 0xf6, 0xbd, 0x9e, 0xa8, 0x03, 0x29, 0x4f, 0xef, 0x18, 0x8b, 0x58, 0x45, 0x99, 0x95,
0x90, 0xbe, 0xc3, 0x4b, 0x2f, 0x60, 0x7b, 0xb0, 0x22, 0x35, 0xe0, 0x63, 0xfe, 0x55, 0xa6, 0x21,
0xe5, 0x45, 0xcd, 0x47, 0x19, 0xf6, 0x31, 0x14, 0xd5, 0x93, 0x49, 0x6c, 0x35, 0xfd, 0xe9, 0xa7,
0xf5, 0xb5, 0x19, 0xb8, 0x54, 0x57, 0x3f, 0x07, 0x88, 0x1f, 0xee, 0x89, 0x98, 0xc4, 0xcc, 0x43,
0x40, 0x11, 0x05, 0xcc, 0xbe, 0xf2, 0x63, 0xac, 0x62, 0x07, 0xeb, 0x0c, 0x99, 0x84, 0xcb, 0x2f,
0xd4, 0x5d, 0xe3, 0x3f, 0x80, 0xb2, 0xf6, 0x76, 0x4f, 0x34, 0x7c, 0xb3, 0xef, 0xfe, 0x44, 0xc3,
0x97, 0xf2, 0xd4, 0x8f, 0xb1, 0x8e, 0xa5, 0x2f, 0x1b, 0x0b, 0xa2, 0x74, 0x21, 0x02, 0x4b, 0x51,
0x54, 0x4c, 0xd0, 0x19, 0x54, 0x13, 0x0f, 0xf4, 0x44, 0x2b, 0x34, 0xed, 0xf9, 0x9f, 0x68, 0x85,
0xa6, 0xbe, 0xe9, 0xa3, 0xe8, 0xcc, 0x58, 0x14, 0xf5, 0xd0, 0x6d, 0x62, 0x5a, 0x4d, 0xdf, 0x87,
0xb2, 0xf6, 0xd8, 0x4e, 0xd4, 0x97, 0xd9, 0x77, 0x7d, 0xa2, 0xbe, 0xa4, 0xbd, 0xcd, 0xb3, 0x8c,
0x75, 0xd4, 0x0c, 0x24, 0x05, 0xbc, 0x0c, 0x59, 0x94, 0xfd, 0xeb, 0x50, 0x4b, 0xbe, 0xbf, 0x13,
0xad, 0xfd, 0xd4, 0x87, 0x7c, 0xa2, 0xb5, 0x7f, 0xcd, 0xa3, 0x3d, 0x92, 0xa4, 0x1f, 0x2c, 0x45,
0x95, 0x3c, 0xfc, 0x91, 0x3c, 0xba, 0xf6, 0x25, 0xfb, 0x44, 0x30, 0x38, 0x79, 0x59, 0x37, 0x5b,
0xd3, 0xa8, 0x56, 0xbf, 0xf5, 0x3b, 0x5a, 0x2f, 0x33, 0xf7, 0x7a, 0x27, 0x89, 0x19, 0x0b, 0x67,
0x4f, 0x61, 0x29, 0x22, 0xe6, 0xe8, 0xf6, 0xed, 0x20, 0xea, 0x43, 0xea, 0x1d, 0xdf, 0xeb, 0xf5,
0xe9, 0xd4, 0x47, 0x19, 0xda, 0xfe, 0xf0, 0x4a, 0x63, 0x6d, 0xfb, 0xd3, 0x2f, 0xe0, 0xd6, 0xb6,
0xbf, 0xc4, 0xcd, 0xc7, 0xd3, 0xdb, 0x5f, 0xe8, 0x88, 0x32, 0x5c, 0x58, 0x98, 0xbe, 0xea, 0xfa,
0xf6, 0x75, 0x57, 0x83, 0x50, 0xf1, 0xaf, 0xbf, 0xf8, 0xe6, 0x90, 0x24, 0x2b, 0x52, 0xdc, 0xf4,
0xa1, 0x8c, 0x94, 0x62, 0xbf, 0x0a, 0x15, 0xfd, 0xcd, 0x0e, 0xa6, 0xf3, 0x84, 0xe9, 0x9a, 0x6e,
0xa5, 0xa6, 0x25, 0xa9, 0x84, 0x55, 0xf4, 0x6a, 0xd8, 0xa7, 0xb0, 0x1a, 0x0d, 0xb3, 0x7e, 0xb7,
0x45, 0xc0, 0xee, 0xa4, 0xdc, 0x78, 0x91, 0x18, 0xec, 0x9b, 0xd7, 0x5e, 0x89, 0xf1, 0x28, 0x23,
0xa8, 0x2f, 0xf9, 0x3e, 0x41, 0xbc, 0xf3, 0xa4, 0x3d, 0xcb, 0x10, 0xef, 0x3c, 0xa9, 0x8f, 0x1a,
0x28, 0xea, 0x63, 0x4b, 0x89, 0x31, 0xa2, 0x18, 0x72, 0xf6, 0x7d, 0x58, 0xd0, 0x2e, 0xee, 0xe8,
0x5e, 0xb9, 0xfd, 0x68, 0x25, 0xcd, 0x5e, 0x62, 0xbb, 0x9e, 0x66, 0x33, 0x36, 0xd6, 0xb0, 0xfc,
0x45, 0x23, 0x31, 0x38, 0x62, 0x15, 0x6d, 0x41, 0x59, 0xbf, 0x14, 0xe4, 0x05, 0xe5, 0xae, 0x69,
0x49, 0xfa, 0x7d, 0xa9, 0x8f, 0x32, 0x6c, 0x0f, 0xea, 0xd3, 0x57, 0xf8, 0x45, 0x3c, 0x25, 0xed,
0xda, 0xc3, 0xf5, 0xa9, 0xc4, 0xc4, 0xc5, 0x7f, 0xec, 0x90, 0x4e, 0x21, 0x45, 0xcf, 0x4f, 0x7a,
0xfe, 0xf4, 0xae, 0x9e, 0x7c, 0x96, 0x32, 0x2a, 0x2d, 0xed, 0x41, 0xd2, 0xfb, 0x99, 0x47, 0x19,
0xf6, 0x3b, 0x19, 0xa8, 0x24, 0xae, 0xb0, 0x4a, 0x9c, 0xf3, 0x98, 0xea, 0x67, 0x43, 0x4f, 0xd3,
0x3b, 0x6a, 0x98, 0x38, 0x88, 0x7b, 0x0f, 0xbe, 0x97, 0x98, 0xa4, 0x1f, 0x25, 0x5c, 0xae, 0x1b,
0xd3, 0xef, 0x53, 0x7e, 0x39, 0x8d, 0xa0, 0x5f, 0x8b, 0xfc, 0xe5, 0xa3, 0x0c, 0xfb, 0x17, 0x19,
0xa8, 0x25, 0x63, 0x29, 0xa2, 0xee, 0xa6, 0x46, 0x6d, 0x44, 0xa4, 0x74, 0x4d, 0x00, 0xc6, 0xf7,
0xb1, 0x95, 0xbd, 0x07, 0x66, 0xa2, 0x95, 0xf2, 0x65, 0x8d, 0x9f, 0xae, 0xb5, 0xec, 0x17, 0xe9,
0x39, 0x68, 0x15, 0x77, 0xc7, 0x66, 0x9f, 0x0f, 0x8e, 0xc8, 0x4f, 0x7f, 0x6c, 0xd7, 0xc8, 0xfd,
0x46, 0x36, 0x83, 0x33, 0xf1, 0x03, 0x7a, 0x8c, 0x51, 0x85, 0x5e, 0x09, 0x52, 0x7e, 0xe5, 0x42,
0xde, 0xc2, 0x8e, 0xbd, 0x6e, 0xdc, 0x4c, 0x74, 0x6c, 0x5a, 0xfa, 0x68, 0x52, 0x13, 0xe5, 0x83,
0xb9, 0xf1, 0xf6, 0x39, 0xf3, 0x88, 0x6e, 0x6a, 0x25, 0xd8, 0xc8, 0x11, 0x35, 0x52, 0xa2, 0x27,
0xd6, 0xdb, 0x2b, 0x16, 0x63, 0x3c, 0xc0, 0xb6, 0xbe, 0x65, 0xdc, 0xb9, 0xb6, 0xad, 0x0f, 0x31,
0x38, 0x42, 0xb4, 0xf8, 0x10, 0x20, 0x0e, 0x8e, 0x65, 0x53, 0x21, 0x9a, 0x11, 0x17, 0x9a, 0x8d,
0x9f, 0x4d, 0x2e, 0x6a, 0x15, 0xc9, 0x29, 0x4a, 0xfc, 0x65, 0xe2, 0xa9, 0x51, 0xf0, 0xa8, 0x2e,
0x82, 0x25, 0xe3, 0x58, 0x13, 0x22, 0xd8, 0x74, 0xf9, 0x09, 0x8e, 0x1a, 0x45, 0x8a, 0x1e, 0x41,
0x75, 0xcf, 0xf3, 0x9e, 0x4f, 0xc6, 0xd1, 0x81, 0x8c, 0x64, 0x2c, 0xd4, 0xae, 0x1d, 0x9c, 0xad,
0x4f, 0xf5, 0xc2, 0xb8, 0x8b, 0x45, 0xad, 0xb3, 0x86, 0x56, 0xd4, 0xc3, 0x1f, 0xc5, 0x11, 0xb9,
0x5f, 0x32, 0x1b, 0x16, 0x23, 0x46, 0x1d, 0x47, 0xbd, 0x26, 0x8b, 0x49, 0xb0, 0xe7, 0xe9, 0x2a,
0x12, 0xba, 0x82, 0x6a, 0xed, 0xc3, 0x40, 0x95, 0xf9, 0x28, 0xc3, 0x0e, 0xa1, 0xb2, 0xcd, 0xfb,
0x78, 0xa3, 0x07, 0xc6, 0xfd, 0x2c, 0x25, 0x62, 0x48, 0x28, 0x60, 0x68, 0xbd, 0x9a, 0x00, 0x26,
0x37, 0xaf, 0xb1, 0x7d, 0xe5, 0xf3, 0x2f, 0x1e, 0xfe, 0x48, 0x46, 0x14, 0x7d, 0xa9, 0x36, 0xaf,
0x38, 0xba, 0x4c, 0x97, 0x00, 0x92, 0x21, 0x5a, 0x89, 0xcd, 0x6b, 0x26, 0x44, 0x2b, 0x31, 0xd4,
0x51, 0x2c, 0xd9, 0x10, 0x16, 0x67, 0xa2, 0xba, 0xa2, 0x7d, 0xeb, 0xba, 0x58, 0xb0, 0xf5, 0xbb,
0xd7, 0x23, 0x24, 0x6b, 0x7b, 0x90, 0xac, 0xad, 0x0b, 0x55, 0xba, 0xf8, 0xf8, 0x98, 0xd3, 0xd9,
0xde, 0xa9, 0x8b, 0xb1, 0xf4, 0x83, 0xc3, 0xd3, 0xbb, 0x0c, 0xa6, 0x25, 0xc5, 0x1c, 0x3c, 0xdd,
0xc9, 0x4e, 0xf0, 0x39, 0x10, 0xed, 0x30, 0x6d, 0x44, 0x8c, 0xb3, 0x07, 0x7c, 0x23, 0x62, 0x4c,
0x39, 0x7b, 0xab, 0x74, 0x50, 0xb6, 0x12, 0x95, 0xfd, 0xd0, 0xf5, 0x06, 0x7c, 0x24, 0x4b, 0xfd,
0x65, 0x28, 0x3f, 0xe5, 0xa1, 0x3a, 0xbd, 0x1a, 0x09, 0xf4, 0x53, 0xc7, 0x59, 0xd7, 0x53, 0xce,
0x1c, 0x27, 0x69, 0x93, 0x4a, 0xe6, 0x83, 0x53, 0x4e, 0x9c, 0xd0, 0x72, 0x06, 0x5f, 0xb2, 0x5f,
0xc2, 0xc2, 0xa3, 0xbb, 0x1a, 0x56, 0xb5, 0x66, 0xea, 0x85, 0x2f, 0x4c, 0xc1, 0xd3, 0x4a, 0x16,
0x6d, 0xd6, 0x04, 0x4b, 0x17, 0xca, 0xda, 0x9d, 0x2e, 0xd1, 0xd8, 0xcc, 0xde, 0xe1, 0x13, 0x8d,
0x4d, 0xca, 0x15, 0x30, 0xc6, 0x7d, 0xac, 0xc7, 0x60, 0x77, 0xe3, 0x7a, 0xe8, 0xda, 0x97, 0xb8,
0xa6, 0x87, 0x3f, 0xb2, 0x47, 0xe1, 0x97, 0xec, 0x33, 0x9a, 0x0e, 0xed, 0x74, 0x6e, 0xac, 0xa1,
0x4c, 0x1f, 0xe4, 0x8d, 0x06, 0x4b, 0x4b, 0x4a, 0x6a, 0x2d, 0x54, 0x15, 0x8a, 0x8d, 0x4f, 0x00,
0xba, 0xa1, 0x37, 0xde, 0xb6, 0xf9, 0xc8, 0x73, 0x63, 0x9e, 0x1e, 0x9f, 0x17, 0x8d, 0xf9, 0xa4,
0x76, 0x68, 0x94, 0x7d, 0xa6, 0xa9, 0x74, 0x89, 0x73, 0xe5, 0x8a, 0x88, 0xaf, 0x3d, 0x52, 0x1a,
0x0d, 0x48, 0xca, 0xb1, 0xd2, 0x47, 0x19, 0xd6, 0x04, 0x88, 0xc3, 0x07, 0x23, 0x05, 0x6d, 0x26,
0x32, 0x31, 0x62, 0xaf, 0x29, 0xb1, 0x86, 0x87, 0x50, 0x8a, 0xe3, 0xae, 0xd6, 0xe2, 0x2b, 0xaa,
0x12, 0x51, 0x5a, 0x91, 0xb8, 0x30, 0x13, 0xf3, 0x64, 0xd4, 0x71, 0xa8, 0x80, 0x15, 0xc5, 0x50,
0x9d, 0x70, 0x1e, 0x30, 0x07, 0x96, 0xa8, 0x81, 0x91, 0x6c, 0x86, 0xe7, 0x1c, 0xa3, 0x47, 0x78,
0x66, 0xc3, 0x8f, 0x22, 0xae, 0x91, 0x1a, 0x44, 0x93, 0xb0, 0x33, 0x09, 0x6a, 0xa5, 0x33, 0x96,
0x62, 0x0b, 0x18, 0xc1, 0xe2, 0x4c, 0x9c, 0x46, 0xc4, 0x3a, 0xae, 0x0b, 0xbc, 0x89, 0x58, 0xc7,
0xb5, 0x21, 0x1e, 0xc6, 0x0a, 0x56, 0xb9, 0x60, 0x00, 0xea, 0x95, 0x17, 0x4e, 0xd8, 0x3f, 0x13,
0xd5, 0xfd, 0x7e, 0x06, 0x96, 0x52, 0x22, 0x31, 0xd8, 0x1b, 0xca, 0x44, 0x71, 0x6d, 0x94, 0xc6,
0x7a, 0xaa, 0xc7, 0xde, 0xe8, 0x62, 0x3d, 0xfb, 0xec, 0x59, 0x62, 0x03, 0x25, 0x87, 0xb9, 0x5c,
0x99, 0x2f, 0x94, 0x60, 0x52, 0xc5, 0x97, 0x2f, 0x60, 0x8d, 0x1a, 0xd2, 0x1c, 0x0e, 0xa7, 0xa2,
0x09, 0x5e, 0xd7, 0x5a, 0x91, 0x12, 0x21, 0x91, 0x50, 0x06, 0x92, 0x51, 0x12, 0xd7, 0xc8, 0xee,
0xd4, 0x54, 0x36, 0x81, 0xfa, 0xb4, 0x97, 0x9e, 0x5d, 0x5f, 0xd6, 0xfa, 0x9d, 0x84, 0xb2, 0x9d,
0xe2, 0xd9, 0xff, 0x1a, 0x56, 0x76, 0xc7, 0x58, 0x4f, 0x1b, 0x17, 0xd2, 0xbf, 0xc5, 0x7c, 0xfc,
0xff, 0x51, 0x48, 0xc1, 0x54, 0x3f, 0xef, 0x44, 0xaf, 0x0a, 0xa4, 0x07, 0x40, 0x44, 0xea, 0x7e,
0x7a, 0x44, 0xc2, 0xdb, 0x58, 0xfd, 0x5d, 0xe3, 0x56, 0x5a, 0xf5, 0x3e, 0x65, 0x21, 0xc5, 0x7f,
0x6d, 0x7a, 0x5d, 0xab, 0x16, 0xdc, 0x4d, 0x9b, 0xef, 0x6b, 0x15, 0xaf, 0xa9, 0xb1, 0xbe, 0x81,
0x32, 0x64, 0x45, 0x0f, 0x21, 0x88, 0x96, 0x4f, 0x4a, 0xac, 0x42, 0xb4, 0x7c, 0xd2, 0x62, 0x0e,
0x92, 0xf2, 0x93, 0x8a, 0x36, 0xf8, 0x28, 0xf3, 0x60, 0xf3, 0xde, 0xf7, 0xbf, 0x76, 0xea, 0x84,
0x67, 0x93, 0xe3, 0x8d, 0xbe, 0x37, 0x7a, 0x38, 0x54, 0xa6, 0x4d, 0x79, 0x19, 0xc0, 0xc3, 0xa1,
0x3b, 0x78, 0x88, 0xc5, 0x1e, 0xcf, 0x8d, 0x7d, 0x2f, 0xf4, 0xbe, 0xf1, 0x7f, 0x03, 0x00, 0x00,
0xff, 0xff, 0x7c, 0xf0, 0x8f, 0x49, 0xc0, 0x8b, 0x00, 0x00,
// 11691 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x7d, 0x5b, 0x6c, 0x23, 0x59,
0x76, 0x58, 0xf3, 0x25, 0x92, 0x87, 0x0f, 0x51, 0x57, 0x2f, 0xb6, 0x7a, 0x7a, 0xba, 0xa7, 0x66,
0x76, 0xa6, 0xa7, 0x67, 0x56, 0xdd, 0xd3, 0xbb, 0x3d, 0xb3, 0xbb, 0x13, 0xaf, 0x97, 0x92, 0xa8,
0x11, 0xb7, 0x25, 0x4a, 0x53, 0xa4, 0x66, 0xdc, 0xeb, 0x47, 0xb9, 0x44, 0x5e, 0x49, 0xe5, 0x26,
0xab, 0x38, 0x55, 0x45, 0xb5, 0xb4, 0x8b, 0xc9, 0x47, 0x90, 0x17, 0x8c, 0x24, 0x40, 0x90, 0x38,
0x40, 0x1c, 0x1b, 0x79, 0x18, 0x49, 0x90, 0x1f, 0xc3, 0xc0, 0x3a, 0x1f, 0x01, 0xf2, 0xef, 0x9f,
0x3c, 0x10, 0xd8, 0xf9, 0x48, 0x60, 0x18, 0x08, 0x92, 0x38, 0x7f, 0x81, 0x81, 0x7c, 0x07, 0x08,
0xee, 0x39, 0xf7, 0x56, 0xdd, 0x22, 0x4b, 0xdd, 0x3d, 0xbb, 0x9b, 0xfd, 0x91, 0x58, 0xe7, 0x9c,
0xfb, 0xa8, 0x7b, 0xcf, 0x3d, 0xf7, 0xbc, 0xee, 0x2d, 0x28, 0xfb, 0x93, 0xc1, 0xe6, 0xc4, 0xf7,
0x42, 0x8f, 0x15, 0x46, 0xae, 0x3f, 0x19, 0x6c, 0xbc, 0x76, 0xe6, 0x79, 0x67, 0x23, 0xfe, 0xc0,
0x9e, 0x38, 0x0f, 0x6c, 0xd7, 0xf5, 0x42, 0x3b, 0x74, 0x3c, 0x37, 0x20, 0x22, 0xe3, 0xcf, 0x33,
0x90, 0x3f, 0x0e, 0x2f, 0x3d, 0xf6, 0x18, 0xaa, 0xf6, 0x70, 0xe8, 0xf3, 0x20, 0xb0, 0xc2, 0xab,
0x09, 0x6f, 0x66, 0xee, 0x66, 0xee, 0xd5, 0x1f, 0xb1, 0x4d, 0xac, 0x64, 0xb3, 0x45, 0xa8, 0xfe,
0xd5, 0x84, 0x9b, 0x15, 0x3b, 0x7e, 0x60, 0x4d, 0x28, 0xca, 0xc7, 0x66, 0xf6, 0x6e, 0xe6, 0x5e,
0xd9, 0x54, 0x8f, 0xec, 0x36, 0x80, 0x3d, 0xf6, 0xa6, 0x6e, 0x68, 0x05, 0x76, 0xd8, 0xcc, 0xdd,
0xcd, 0xdc, 0xcb, 0x99, 0x65, 0x82, 0xf4, 0xec, 0x90, 0xdd, 0x82, 0xf2, 0xe4, 0x99, 0x15, 0x0c,
0x7c, 0x67, 0x12, 0x36, 0xf3, 0x58, 0xb4, 0x34, 0x79, 0xd6, 0xc3, 0x67, 0xf6, 0x1e, 0x94, 0xbc,
0x69, 0x38, 0xf1, 0x1c, 0x37, 0x6c, 0x16, 0xee, 0x66, 0xee, 0x55, 0x1e, 0x2d, 0xca, 0x8e, 0x1c,
0x4e, 0xc3, 0x23, 0x01, 0x36, 0x23, 0x02, 0xf6, 0x16, 0xd4, 0x06, 0x9e, 0x7b, 0xea, 0xf8, 0x63,
0x7a, 0xb3, 0xe6, 0x02, 0xb6, 0x95, 0x04, 0x1a, 0x7f, 0x90, 0x85, 0x4a, 0xdf, 0xb7, 0xdd, 0xc0,
0x1e, 0x08, 0x00, 0x5b, 0x87, 0x62, 0x78, 0x69, 0x9d, 0xdb, 0xc1, 0x39, 0xbe, 0x6a, 0xd9, 0x5c,
0x08, 0x2f, 0xf7, 0xec, 0xe0, 0x9c, 0xad, 0xc1, 0x02, 0xf5, 0x12, 0x5f, 0x28, 0x67, 0xca, 0x27,
0xf6, 0x1e, 0x2c, 0xb9, 0xd3, 0xb1, 0x95, 0x6c, 0x4a, 0xbc, 0x56, 0xc1, 0x6c, 0xb8, 0xd3, 0xf1,
0xb6, 0x0e, 0x17, 0x2f, 0x7f, 0x32, 0xf2, 0x06, 0xcf, 0xa8, 0x01, 0x7a, 0xbd, 0x32, 0x42, 0xb0,
0x8d, 0x37, 0xa0, 0x2a, 0xd1, 0xdc, 0x39, 0x3b, 0xa7, 0x77, 0x2c, 0x98, 0x15, 0x22, 0x40, 0x90,
0xa8, 0x21, 0x74, 0xc6, 0xdc, 0x0a, 0x42, 0x7b, 0x3c, 0x91, 0xaf, 0x54, 0x16, 0x90, 0x9e, 0x00,
0x20, 0xda, 0x0b, 0xed, 0x91, 0x75, 0xca, 0x79, 0xd0, 0x2c, 0x4a, 0xb4, 0x80, 0xec, 0x72, 0x1e,
0xb0, 0xaf, 0x41, 0x7d, 0xc8, 0x83, 0xd0, 0x92, 0x93, 0xc1, 0x83, 0x66, 0xe9, 0x6e, 0xee, 0x5e,
0xd9, 0xac, 0x09, 0x68, 0x4b, 0x01, 0xd9, 0x6b, 0x00, 0xbe, 0xfd, 0xdc, 0x12, 0x03, 0xc1, 0x2f,
0x9b, 0x65, 0x9a, 0x05, 0xdf, 0x7e, 0xde, 0xbf, 0xdc, 0xe3, 0x97, 0xc6, 0x0f, 0x60, 0xed, 0x13,
0x1e, 0x6a, 0x83, 0x16, 0x98, 0xfc, 0x8b, 0x29, 0x0f, 0x42, 0xd1, 0xff, 0x20, 0xb4, 0xfd, 0x50,
0xf5, 0x3f, 0x43, 0xfd, 0x47, 0x58, 0xdc, 0x7f, 0xee, 0x0e, 0x15, 0x41, 0x16, 0x09, 0xca, 0xdc,
0x1d, 0x12, 0xda, 0xd8, 0x07, 0xa6, 0x55, 0xbc, 0xc3, 0x43, 0xdb, 0x19, 0x05, 0xec, 0x43, 0xa8,
0x86, 0x5a, 0x73, 0xcd, 0xcc, 0xdd, 0xdc, 0xbd, 0x4a, 0xc4, 0x84, 0x5a, 0x01, 0x33, 0x41, 0x67,
0x9c, 0x43, 0x69, 0x97, 0xf3, 0x7d, 0x67, 0xec, 0x84, 0x6c, 0x0d, 0x0a, 0xa7, 0xce, 0x25, 0x1f,
0x62, 0xa7, 0x72, 0x7b, 0x37, 0x4c, 0x7a, 0x64, 0x77, 0x00, 0xf0, 0x87, 0x35, 0x8e, 0xf8, 0x71,
0xef, 0x86, 0x59, 0x46, 0xd8, 0x41, 0x60, 0x87, 0x6c, 0x03, 0x8a, 0x13, 0xee, 0x0f, 0xb8, 0x9a,
0xf9, 0xbd, 0x1b, 0xa6, 0x02, 0x6c, 0x15, 0xa1, 0x30, 0x12, 0xb5, 0x1b, 0x7f, 0x54, 0x80, 0x4a,
0x8f, 0xbb, 0x43, 0x35, 0x12, 0x0c, 0xf2, 0x62, 0x48, 0xb1, 0xb1, 0xaa, 0x89, 0xbf, 0xd9, 0x9b,
0x50, 0xc1, 0xc1, 0x0f, 0x42, 0xdf, 0x71, 0xcf, 0x68, 0x5d, 0x6c, 0x65, 0x9b, 0x19, 0x13, 0x04,
0xb8, 0x87, 0x50, 0xd6, 0x80, 0x9c, 0x3d, 0x56, 0xeb, 0x42, 0xfc, 0x64, 0x37, 0xa1, 0x64, 0x8f,
0x43, 0xea, 0x5e, 0x15, 0xc1, 0x45, 0x7b, 0x1c, 0x62, 0xd7, 0xde, 0x80, 0xea, 0xc4, 0xbe, 0x1a,
0x73, 0x37, 0x8c, 0x19, 0xaa, 0x6a, 0x56, 0x24, 0x0c, 0x59, 0xea, 0x11, 0x2c, 0xeb, 0x24, 0xaa,
0xf1, 0x42, 0xd4, 0xf8, 0x92, 0x46, 0x2d, 0xfb, 0xf0, 0x0e, 0x2c, 0xaa, 0x32, 0x3e, 0xbd, 0x0f,
0x32, 0x5a, 0xd9, 0xac, 0x4b, 0xb0, 0x7a, 0xcb, 0x7b, 0xd0, 0x38, 0x75, 0x5c, 0x7b, 0x64, 0x0d,
0x46, 0xe1, 0x85, 0x35, 0xe4, 0xa3, 0xd0, 0x46, 0x9e, 0x2b, 0x98, 0x75, 0x84, 0x6f, 0x8f, 0xc2,
0x8b, 0x1d, 0x01, 0x65, 0xef, 0x43, 0xf9, 0x94, 0x73, 0x0b, 0x07, 0xab, 0x59, 0x4a, 0x2c, 0x5d,
0x35, 0x43, 0x66, 0xe9, 0x54, 0xcd, 0xd5, 0xfb, 0xd0, 0xf0, 0xa6, 0xe1, 0x99, 0xe7, 0xb8, 0x67,
0xd6, 0xe0, 0xdc, 0x76, 0x2d, 0x67, 0x88, 0x5c, 0x98, 0xdf, 0xca, 0x3e, 0xcc, 0x98, 0x75, 0x85,
0xdb, 0x3e, 0xb7, 0xdd, 0xce, 0x90, 0xbd, 0x0d, 0x8b, 0x23, 0x3b, 0x08, 0xad, 0x73, 0x6f, 0x62,
0x4d, 0xa6, 0x27, 0xcf, 0xf8, 0x55, 0xb3, 0x86, 0x03, 0x51, 0x13, 0xe0, 0x3d, 0x6f, 0x72, 0x84,
0x40, 0xc1, 0x7a, 0xd8, 0x4f, 0xea, 0x04, 0xdc, 0xcd, 0xdc, 0xab, 0x99, 0x65, 0x01, 0xa1, 0x46,
0x9f, 0xc2, 0x32, 0x4e, 0xcf, 0x60, 0x1a, 0x84, 0xde, 0xd8, 0xf2, 0xf9, 0xc0, 0xf3, 0x87, 0x41,
0xb3, 0x82, 0xbc, 0xf6, 0xae, 0xec, 0xac, 0x36, 0xc7, 0x9b, 0x3b, 0x3c, 0x08, 0xb7, 0x91, 0xd8,
0x24, 0xda, 0xb6, 0x1b, 0xfa, 0x57, 0xe6, 0xd2, 0x70, 0x16, 0xce, 0xde, 0x07, 0x66, 0x8f, 0x46,
0xde, 0x73, 0x2b, 0xe0, 0xa3, 0x53, 0x4b, 0x0e, 0x62, 0xb3, 0x7e, 0x37, 0x73, 0xaf, 0x64, 0x36,
0x10, 0xd3, 0xe3, 0xa3, 0xd3, 0x23, 0x82, 0xb3, 0x0f, 0x01, 0x97, 0xa3, 0x75, 0xca, 0xed, 0x70,
0xea, 0xf3, 0xa0, 0xb9, 0x78, 0x37, 0x77, 0xaf, 0xfe, 0x68, 0x29, 0x1a, 0x2f, 0x04, 0x6f, 0x39,
0xa1, 0x59, 0x15, 0x74, 0xf2, 0x39, 0xd8, 0xd8, 0x81, 0xb5, 0xf4, 0x2e, 0x09, 0xa6, 0x12, 0xa3,
0x22, 0x98, 0x31, 0x6f, 0x8a, 0x9f, 0x6c, 0x05, 0x0a, 0x17, 0xf6, 0x68, 0xca, 0x91, 0x0b, 0xab,
0x26, 0x3d, 0x7c, 0x27, 0xfb, 0xad, 0x8c, 0xf1, 0x87, 0x19, 0xa8, 0xd2, 0x5b, 0x06, 0x13, 0xcf,
0x0d, 0x38, 0x7b, 0x13, 0x6a, 0x8a, 0x1b, 0xb8, 0xef, 0x7b, 0xbe, 0x94, 0x8b, 0x8a, 0xf3, 0xda,
0x02, 0xc6, 0xde, 0x85, 0x86, 0x22, 0x9a, 0xf8, 0xdc, 0x19, 0xdb, 0x67, 0xaa, 0x6a, 0xc5, 0x4a,
0x47, 0x12, 0xcc, 0x3e, 0x88, 0xeb, 0xf3, 0xbd, 0x69, 0xc8, 0x91, 0xd7, 0x2b, 0x8f, 0xaa, 0xf2,
0xf5, 0x4c, 0x01, 0x8b, 0x6a, 0xc7, 0xa7, 0x57, 0xe0, 0x73, 0xe3, 0xb7, 0x32, 0xc0, 0x44, 0xb7,
0xfb, 0x1e, 0x55, 0x10, 0x4b, 0xa4, 0x44, 0xc9, 0xcc, 0x2b, 0xaf, 0x90, 0xec, 0x8b, 0x56, 0x88,
0x01, 0x05, 0xea, 0x7b, 0x3e, 0xa5, 0xef, 0x84, 0xfa, 0x7e, 0xbe, 0x94, 0x6b, 0xe4, 0x8d, 0xff,
0x9a, 0x83, 0x15, 0xc1, 0xa7, 0x2e, 0x1f, 0xb5, 0x06, 0x03, 0x3e, 0x89, 0xd6, 0xce, 0x1d, 0xa8,
0xb8, 0xde, 0x90, 0x2b, 0x8e, 0xa5, 0x8e, 0x81, 0x00, 0x69, 0xec, 0x7a, 0x6e, 0x3b, 0x2e, 0x75,
0x9c, 0x06, 0xb3, 0x8c, 0x10, 0xec, 0xf6, 0xdb, 0xb0, 0x38, 0xe1, 0xee, 0x50, 0x5f, 0x22, 0x39,
0xe2, 0x7a, 0x09, 0x96, 0xab, 0xe3, 0x0e, 0x54, 0x4e, 0xa7, 0x44, 0x27, 0x04, 0x4b, 0x1e, 0x79,
0x00, 0x24, 0xa8, 0x45, 0xf2, 0x65, 0x32, 0x0d, 0xce, 0x11, 0x5b, 0x40, 0x6c, 0x51, 0x3c, 0x0b,
0xd4, 0x6d, 0x80, 0xe1, 0x34, 0x08, 0xe5, 0x8a, 0x59, 0x40, 0x64, 0x59, 0x40, 0x68, 0xc5, 0x7c,
0x1d, 0x96, 0xc7, 0xf6, 0xa5, 0x85, 0xbc, 0x63, 0x39, 0xae, 0x75, 0x3a, 0x42, 0xa1, 0x5e, 0x44,
0xba, 0xc6, 0xd8, 0xbe, 0xfc, 0x4c, 0x60, 0x3a, 0xee, 0x2e, 0xc2, 0x85, 0x58, 0x19, 0xd0, 0x48,
0x58, 0x3e, 0x0f, 0xb8, 0x7f, 0xc1, 0x51, 0x12, 0xe4, 0xcd, 0xba, 0x04, 0x9b, 0x04, 0x15, 0x3d,
0x1a, 0x8b, 0xf7, 0x0e, 0x47, 0x03, 0x5a, 0xf6, 0x66, 0x71, 0xec, 0xb8, 0x7b, 0xe1, 0x68, 0x20,
0x76, 0x26, 0x21, 0x47, 0x26, 0xdc, 0xb7, 0x9e, 0x3d, 0xc7, 0x35, 0x9c, 0x47, 0xb9, 0x71, 0xc4,
0xfd, 0x27, 0xcf, 0x85, 0xf2, 0x30, 0x08, 0x50, 0x10, 0xd9, 0x57, 0xcd, 0x0a, 0x2e, 0xf0, 0xd2,
0x20, 0x10, 0x22, 0xc8, 0xbe, 0x12, 0x8b, 0x50, 0xf4, 0xd6, 0xc6, 0x59, 0xe0, 0x43, 0xac, 0x3e,
0x40, 0x89, 0x5a, 0xc3, 0xce, 0xb6, 0x24, 0x42, 0xb4, 0x13, 0x08, 0xae, 0x57, 0x9d, 0x3d, 0x1d,
0xd9, 0x67, 0x01, 0x8a, 0x94, 0x9a, 0x59, 0x95, 0xc0, 0x5d, 0x01, 0x33, 0x3e, 0x87, 0xd5, 0x99,
0xb9, 0x95, 0x6b, 0x46, 0x28, 0x0b, 0x08, 0xc1, 0x79, 0x2d, 0x99, 0xf2, 0x29, 0x6d, 0xd2, 0xb2,
0x29, 0x93, 0x66, 0xfc, 0x6e, 0x06, 0xaa, 0xb2, 0x66, 0x54, 0x6b, 0xd8, 0x26, 0x30, 0x35, 0x8b,
0xe1, 0xa5, 0x33, 0xb4, 0x4e, 0xae, 0x42, 0x1e, 0x10, 0xd3, 0xec, 0xdd, 0x30, 0x1b, 0x12, 0xd7,
0xbf, 0x74, 0x86, 0x5b, 0x02, 0xc3, 0xee, 0x43, 0x23, 0x41, 0x1f, 0x84, 0x3e, 0x71, 0xf4, 0xde,
0x0d, 0xb3, 0xae, 0x51, 0xf7, 0x42, 0x5f, 0xac, 0x11, 0xa1, 0x34, 0x4d, 0x43, 0xcb, 0x71, 0x87,
0xfc, 0x12, 0xd9, 0xa8, 0x66, 0x56, 0x08, 0xd6, 0x11, 0xa0, 0xad, 0x3a, 0x54, 0xf5, 0xea, 0x8c,
0x33, 0x28, 0x29, 0x8d, 0x0b, 0x55, 0x8e, 0x99, 0x2e, 0x99, 0xe5, 0x30, 0xea, 0xc9, 0x4d, 0x28,
0x25, 0x7b, 0x60, 0x16, 0xc3, 0x57, 0x6e, 0xd8, 0xf8, 0x2e, 0x34, 0xf6, 0x05, 0xf3, 0xb8, 0x82,
0x59, 0xa5, 0x06, 0xb9, 0x06, 0x0b, 0xda, 0xa2, 0x29, 0x9b, 0xf2, 0x49, 0xec, 0xb9, 0xe7, 0x5e,
0x10, 0xca, 0x56, 0xf0, 0xb7, 0xf1, 0x47, 0x19, 0x60, 0xed, 0x20, 0x74, 0xc6, 0x76, 0xc8, 0x77,
0x79, 0x24, 0x16, 0x0e, 0xa1, 0x2a, 0x6a, 0xeb, 0x7b, 0x2d, 0x52, 0xe9, 0x48, 0xa1, 0x78, 0x4f,
0x2e, 0xe3, 0xf9, 0x02, 0x9b, 0x3a, 0x35, 0x89, 0xf9, 0x44, 0x05, 0x62, 0x95, 0x85, 0xb6, 0x7f,
0xc6, 0x43, 0x54, 0x04, 0xa5, 0x5e, 0x03, 0x04, 0x12, 0x2a, 0xe0, 0xc6, 0x2f, 0xc2, 0xd2, 0x5c,
0x1d, 0xba, 0x5c, 0x2e, 0xa7, 0xc8, 0xe5, 0x9c, 0x2e, 0x97, 0x2d, 0x58, 0x4e, 0xf4, 0x4b, 0x72,
0xda, 0x3a, 0x14, 0xc5, 0x82, 0x10, 0xca, 0x41, 0x86, 0xf4, 0xd2, 0x53, 0xce, 0x85, 0x22, 0xfd,
0x00, 0x56, 0x4e, 0x39, 0xf7, 0xed, 0x10, 0x91, 0xb8, 0x62, 0xc4, 0x0c, 0xc9, 0x8a, 0x97, 0x24,
0xae, 0x67, 0x87, 0x47, 0xdc, 0x17, 0x33, 0x65, 0xfc, 0xf7, 0x0c, 0x2c, 0x0a, 0x09, 0x7a, 0x60,
0xbb, 0x57, 0x6a, 0x9c, 0xf6, 0x53, 0xc7, 0xe9, 0x9e, 0xb6, 0x19, 0x6a, 0xd4, 0x5f, 0x75, 0x90,
0x72, 0xb3, 0x83, 0xc4, 0xee, 0x42, 0x35, 0xd1, 0xd7, 0x02, 0xf6, 0x15, 0x82, 0xa8, 0x93, 0x3f,
0xfd, 0x30, 0xbe, 0x0d, 0x8d, 0xb8, 0xdb, 0x72, 0x0c, 0x19, 0xe4, 0x05, 0x4b, 0xca, 0x0a, 0xf0,
0xb7, 0xf1, 0x3b, 0x19, 0x22, 0xdc, 0xf6, 0x9c, 0x58, 0xbf, 0x65, 0x90, 0x17, 0x9a, 0xb3, 0x22,
0x14, 0xbf, 0xaf, 0xb5, 0x0b, 0x7e, 0xfa, 0x97, 0x15, 0x4b, 0x27, 0x10, 0xca, 0xb2, 0x3d, 0x1a,
0xa1, 0xf0, 0x2d, 0x99, 0x45, 0xf1, 0xdc, 0x1a, 0x8d, 0x8c, 0x77, 0x60, 0x49, 0xeb, 0xdd, 0x0b,
0xde, 0xa3, 0x0b, 0x6c, 0xdf, 0x09, 0xc2, 0x63, 0x37, 0x98, 0x68, 0x8a, 0xdb, 0x2d, 0x28, 0x0b,
0x09, 0x2b, 0x7a, 0x16, 0x48, 0x2d, 0x5d, 0x88, 0x5c, 0xd1, 0xaf, 0x00, 0x91, 0xf6, 0xa5, 0x44,
0x66, 0x25, 0xd2, 0xbe, 0x44, 0xa4, 0xf1, 0x2d, 0x58, 0x4e, 0xd4, 0x27, 0x9b, 0x7e, 0x03, 0x0a,
0xd3, 0xf0, 0xd2, 0x53, 0xaa, 0x79, 0x45, 0x72, 0x88, 0x30, 0x21, 0x4d, 0xc2, 0x18, 0x1f, 0xc3,
0x52, 0x97, 0x3f, 0x97, 0x8b, 0x58, 0x75, 0xe4, 0x6d, 0xc8, 0xbf, 0xc4, 0xac, 0x44, 0xbc, 0xb1,
0x09, 0x4c, 0x2f, 0x2c, 0x5b, 0xd5, 0xac, 0xcc, 0x4c, 0xc2, 0xca, 0x34, 0xde, 0x06, 0xd6, 0x73,
0xce, 0xdc, 0x03, 0x1e, 0x04, 0xf6, 0x59, 0xb4, 0xec, 0x1b, 0x90, 0x1b, 0x07, 0x67, 0x52, 0x46,
0x89, 0x9f, 0xc6, 0x37, 0x60, 0x39, 0x41, 0x27, 0x2b, 0x7e, 0x0d, 0xca, 0x81, 0x73, 0xe6, 0xa2,
0x62, 0x25, 0xab, 0x8e, 0x01, 0xc6, 0x2e, 0xac, 0x7c, 0xc6, 0x7d, 0xe7, 0xf4, 0xea, 0x65, 0xd5,
0x27, 0xeb, 0xc9, 0xce, 0xd6, 0xd3, 0x86, 0xd5, 0x99, 0x7a, 0x64, 0xf3, 0xc4, 0xbe, 0x72, 0x26,
0x4b, 0x26, 0x3d, 0x68, 0x72, 0x2f, 0xab, 0xcb, 0x3d, 0xe3, 0x18, 0xd8, 0xb6, 0xe7, 0xba, 0x7c,
0x10, 0x1e, 0x71, 0xee, 0xab, 0xce, 0xbc, 0xa7, 0xf1, 0x6a, 0xe5, 0xd1, 0xba, 0x1c, 0xd9, 0x59,
0x61, 0x2a, 0x99, 0x98, 0x41, 0x7e, 0xc2, 0xfd, 0x31, 0x56, 0x5c, 0x32, 0xf1, 0xb7, 0xb1, 0x0a,
0xcb, 0x89, 0x6a, 0xa9, 0x6f, 0xc6, 0x43, 0x58, 0xdd, 0x71, 0x82, 0xc1, 0x7c, 0x83, 0xeb, 0x50,
0x9c, 0x4c, 0x4f, 0xac, 0xa4, 0x5c, 0x7e, 0xc2, 0xaf, 0x8c, 0x26, 0xac, 0xcd, 0x96, 0x90, 0x75,
0xfd, 0xd5, 0x0c, 0xe4, 0xf7, 0xfa, 0xfb, 0xdb, 0x6c, 0x03, 0x4a, 0x8e, 0x3b, 0xf0, 0xc6, 0x42,
0xf1, 0xa2, 0x77, 0x8e, 0x9e, 0xaf, 0x5d, 0x60, 0xb7, 0xa0, 0x8c, 0xfa, 0x9a, 0x30, 0x8e, 0xa5,
0xea, 0x53, 0x12, 0x80, 0x7d, 0x6f, 0xf0, 0x4c, 0x58, 0xe5, 0xfc, 0x72, 0xe2, 0xf8, 0x68, 0x77,
0x2b, 0x6b, 0x33, 0x4f, 0x7b, 0x7d, 0x8c, 0x90, 0x46, 0xe7, 0xbf, 0x29, 0x41, 0x51, 0xee, 0xb6,
0xb4, 0x73, 0x87, 0xce, 0x05, 0x8f, 0x77, 0x6e, 0xf1, 0x24, 0xf4, 0x01, 0x9f, 0x8f, 0xbd, 0x30,
0x52, 0xd8, 0x68, 0x0e, 0xaa, 0x04, 0x94, 0x2a, 0x9b, 0xa6, 0x34, 0x90, 0x93, 0x22, 0x47, 0x44,
0x03, 0x7d, 0x2b, 0xbf, 0x05, 0x45, 0xb5, 0xf7, 0xe7, 0x23, 0x9b, 0x66, 0x61, 0x40, 0xda, 0xda,
0x06, 0x94, 0x06, 0xf6, 0xc4, 0x1e, 0x38, 0xe1, 0x95, 0x14, 0x08, 0xd1, 0xb3, 0xa8, 0x7d, 0xe4,
0x0d, 0xec, 0x91, 0x75, 0x62, 0x8f, 0x6c, 0x77, 0xc0, 0xa5, 0xf5, 0x5f, 0x45, 0xe0, 0x16, 0xc1,
0x84, 0x85, 0x2f, 0xfb, 0xa9, 0xa8, 0xc8, 0x09, 0x20, 0x7b, 0xaf, 0xc8, 0x84, 0x72, 0xe9, 0x8d,
0xc7, 0x8e, 0xb0, 0x32, 0x48, 0x0d, 0xcb, 0x99, 0x65, 0x82, 0xec, 0x72, 0x7c, 0x5b, 0x89, 0x7e,
0x4e, 0x43, 0x57, 0xa6, 0xa6, 0x08, 0xf8, 0x39, 0x99, 0xf2, 0xf3, 0xba, 0x58, 0x4e, 0xd3, 0xc5,
0xde, 0x83, 0xa5, 0xa9, 0x1b, 0xf0, 0x30, 0x1c, 0xf1, 0x61, 0xd4, 0x97, 0x0a, 0x12, 0x35, 0x22,
0x84, 0xea, 0xce, 0x26, 0x2c, 0x93, 0xdb, 0x22, 0xb0, 0x43, 0x2f, 0x38, 0x77, 0x02, 0x2b, 0x10,
0x16, 0x12, 0x99, 0xbb, 0x4b, 0x88, 0xea, 0x49, 0x4c, 0x8f, 0x4c, 0xa4, 0xf5, 0x19, 0x7a, 0x9f,
0x0f, 0xb8, 0x73, 0xc1, 0x87, 0xa8, 0xa7, 0xe5, 0xcc, 0xd5, 0x44, 0x19, 0x53, 0x22, 0x51, 0xe9,
0x9e, 0x8e, 0xad, 0xe9, 0x64, 0x68, 0x0b, 0x65, 0xa5, 0x4e, 0xca, 0xb0, 0x3b, 0x1d, 0x1f, 0x13,
0x84, 0x3d, 0x04, 0xa5, 0x89, 0x49, 0xfd, 0x70, 0x31, 0x21, 0xcf, 0x04, 0xb3, 0x9a, 0x55, 0x49,
0x41, 0x8a, 0x62, 0x42, 0xe7, 0x6c, 0xcc, 0xe8, 0x9c, 0x4d, 0x28, 0x4e, 0x7c, 0xe7, 0xc2, 0x0e,
0x79, 0x73, 0x89, 0x04, 0xb8, 0x7c, 0x14, 0x92, 0xc1, 0x71, 0x9d, 0xd0, 0xb1, 0x43, 0xcf, 0x6f,
0x32, 0xc4, 0xc5, 0x00, 0x76, 0x1f, 0x96, 0x90, 0x47, 0x82, 0xd0, 0x0e, 0xa7, 0x81, 0xd4, 0x40,
0x97, 0x91, 0x99, 0x50, 0x87, 0xee, 0x21, 0x1c, 0x95, 0x50, 0xf6, 0x0d, 0x58, 0x23, 0xb6, 0xc0,
0x12, 0x52, 0xb3, 0x46, 0x85, 0x60, 0x05, 0x87, 0x62, 0x19, 0xb1, 0x82, 0xbf, 0xa5, 0x7e, 0x2d,
0xb4, 0x83, 0xc7, 0xb0, 0x2e, 0xd9, 0x64, 0xae, 0xd4, 0x2a, 0x96, 0x5a, 0x21, 0xf4, 0x4c, 0xb1,
0x4d, 0x58, 0x12, 0x5d, 0x72, 0x06, 0x96, 0x2c, 0x2d, 0x56, 0xc2, 0x9a, 0xe8, 0x3d, 0x5a, 0x4a,
0x8b, 0x84, 0x34, 0x11, 0xf7, 0x84, 0x5f, 0xb1, 0xef, 0xc2, 0x22, 0xb1, 0x0c, 0x9a, 0x57, 0x28,
0xe9, 0x37, 0x50, 0xd2, 0xaf, 0xca, 0x01, 0xdd, 0x8e, 0xb0, 0x28, 0xec, 0xeb, 0x83, 0xc4, 0xb3,
0x58, 0x0e, 0x23, 0xe7, 0x94, 0x87, 0xce, 0x98, 0x37, 0xd7, 0x89, 0xc1, 0xd4, 0xb3, 0x58, 0xa9,
0xd3, 0x09, 0x62, 0x9a, 0x24, 0x17, 0xe8, 0x09, 0x79, 0x77, 0xe4, 0x05, 0x5c, 0x39, 0xb9, 0x9a,
0x37, 0xe5, 0x22, 0x14, 0x40, 0xa5, 0x43, 0x0a, 0x45, 0x9c, 0x8c, 0x9e, 0xc8, 0x15, 0x79, 0x0b,
0x99, 0xa1, 0x46, 0xb6, 0x8f, 0x72, 0x47, 0x8a, 0x5d, 0xfc, 0xdc, 0x7e, 0xae, 0x24, 0xc8, 0x6b,
0x38, 0xbf, 0x20, 0x40, 0x52, 0x76, 0xfc, 0x38, 0x43, 0x1b, 0xa2, 0x94, 0x1f, 0x81, 0x66, 0xde,
0x91, 0xe4, 0xb0, 0x3c, 0x77, 0x74, 0x25, 0x85, 0x09, 0x10, 0xe8, 0xd0, 0x1d, 0xe1, 0x6a, 0x76,
0x5c, 0x9d, 0x84, 0x64, 0x6f, 0x55, 0x01, 0x91, 0xe8, 0x0e, 0x54, 0x26, 0xd3, 0x93, 0x91, 0x33,
0x20, 0x92, 0x1c, 0xd5, 0x42, 0x20, 0x24, 0x10, 0xf6, 0x2d, 0x71, 0x14, 0x51, 0xe4, 0x91, 0xa2,
0x22, 0x61, 0x48, 0x82, 0xb2, 0x9d, 0xfb, 0x28, 0x4e, 0xaa, 0x26, 0xfe, 0x36, 0xb6, 0x60, 0x25,
0xd9, 0x69, 0xb9, 0xf1, 0xdc, 0x87, 0x92, 0x94, 0x55, 0xca, 0xf1, 0x51, 0x57, 0x13, 0x25, 0x4d,
0xb4, 0x08, 0x6f, 0xfc, 0x5e, 0x01, 0x96, 0x25, 0x74, 0x5b, 0x0c, 0x6d, 0x6f, 0x3a, 0x1e, 0xdb,
0x7e, 0x8a, 0x10, 0xcc, 0xbc, 0x58, 0x08, 0x66, 0xe7, 0x84, 0x60, 0xd2, 0xf2, 0x25, 0x19, 0x9a,
0xb4, 0x7c, 0xc5, 0x5c, 0x92, 0x31, 0xa2, 0x7b, 0x52, 0x6b, 0x12, 0xdc, 0x27, 0x8f, 0xed, 0x9c,
0xc8, 0x2e, 0xa4, 0x88, 0x6c, 0x5d, 0xe0, 0x2e, 0xcc, 0x08, 0xdc, 0x37, 0x80, 0x98, 0x46, 0xcd,
0x7e, 0x91, 0xec, 0x13, 0x84, 0x49, 0x77, 0xe6, 0x3b, 0xb0, 0x38, 0x2b, 0xe3, 0x48, 0x98, 0xd6,
0x53, 0x24, 0x9c, 0x33, 0xe6, 0xb8, 0x5b, 0x69, 0xc4, 0x65, 0x29, 0xe1, 0x9c, 0x31, 0xdf, 0x47,
0x8c, 0xa2, 0x6f, 0x03, 0x50, 0xdb, 0xb8, 0x68, 0x00, 0x17, 0xcd, 0xdb, 0xc9, 0xb9, 0xd0, 0x47,
0x7d, 0x53, 0x3c, 0x4c, 0x7d, 0x8e, 0xab, 0xa8, 0x8c, 0x25, 0x71, 0x01, 0x7d, 0x04, 0x75, 0x6f,
0xc2, 0x5d, 0x2b, 0x96, 0x35, 0x15, 0xac, 0xaa, 0x21, 0xab, 0xea, 0x28, 0xb8, 0x59, 0x13, 0x74,
0xd1, 0x23, 0xfb, 0x36, 0x0d, 0x32, 0xd7, 0x4a, 0x56, 0xaf, 0x29, 0x59, 0x47, 0xc2, 0xe8, 0xd9,
0xf8, 0xcd, 0x0c, 0x54, 0xb4, 0xee, 0xb0, 0x55, 0x58, 0xda, 0x3e, 0x3c, 0x3c, 0x6a, 0x9b, 0xad,
0x7e, 0xe7, 0xb3, 0xb6, 0xb5, 0xbd, 0x7f, 0xd8, 0x6b, 0x37, 0x6e, 0x08, 0xf0, 0xfe, 0xe1, 0x76,
0x6b, 0xdf, 0xda, 0x3d, 0x34, 0xb7, 0x15, 0x38, 0xc3, 0xd6, 0x80, 0x99, 0xed, 0x83, 0xc3, 0x7e,
0x3b, 0x01, 0xcf, 0xb2, 0x06, 0x54, 0xb7, 0xcc, 0x76, 0x6b, 0x7b, 0x4f, 0x42, 0x72, 0x6c, 0x05,
0x1a, 0xbb, 0xc7, 0xdd, 0x9d, 0x4e, 0xf7, 0x13, 0x6b, 0xbb, 0xd5, 0xdd, 0x6e, 0xef, 0xb7, 0x77,
0x1a, 0x79, 0x56, 0x83, 0x72, 0x6b, 0xab, 0xd5, 0xdd, 0x39, 0xec, 0xb6, 0x77, 0x1a, 0x05, 0xe3,
0xcf, 0x32, 0xb0, 0x8a, 0x03, 0x35, 0x9c, 0x5d, 0xa1, 0x77, 0xa1, 0x32, 0xf0, 0xbc, 0x89, 0x30,
0x83, 0xe2, 0xed, 0x5e, 0x07, 0x89, 0xd5, 0x47, 0x92, 0xf5, 0xd4, 0xf3, 0x07, 0x5c, 0x2e, 0x50,
0x40, 0xd0, 0xae, 0x80, 0x08, 0x06, 0x91, 0x1c, 0x46, 0x14, 0xb4, 0x3e, 0x2b, 0x04, 0x23, 0x92,
0x35, 0x58, 0x38, 0xf1, 0xb9, 0x3d, 0x38, 0x97, 0x4b, 0x53, 0x3e, 0xb1, 0x77, 0x63, 0x03, 0x7d,
0x20, 0x26, 0x7c, 0xc4, 0x87, 0xc8, 0x9f, 0x25, 0x73, 0x51, 0xc2, 0xb7, 0x25, 0x58, 0x6c, 0x15,
0xf6, 0x89, 0xed, 0x0e, 0x3d, 0x97, 0x0f, 0xa5, 0x1d, 0x10, 0x03, 0x8c, 0x23, 0x58, 0x9b, 0x7d,
0x3f, 0xb9, 0x98, 0x3f, 0xd4, 0x16, 0x33, 0xa9, 0xe5, 0x1b, 0xd7, 0x33, 0x90, 0xb6, 0xb0, 0xff,
0x76, 0x1e, 0xf2, 0x42, 0x4d, 0xbb, 0x56, 0xa3, 0xd3, 0xf5, 0xee, 0xdc, 0x5c, 0x74, 0x07, 0xfd,
0x00, 0xb4, 0x7f, 0x93, 0xb3, 0xa9, 0x8c, 0x10, 0xdc, 0xb7, 0x23, 0xb4, 0xcf, 0x07, 0x17, 0xd2,
0xdb, 0x44, 0x68, 0x93, 0x0f, 0x2e, 0xd0, 0xe0, 0xb1, 0x43, 0x2a, 0x4b, 0x8b, 0xb1, 0x18, 0xd8,
0x21, 0x96, 0x94, 0x28, 0x2c, 0x57, 0x8c, 0x50, 0x58, 0xaa, 0x09, 0x45, 0xc7, 0x3d, 0xf1, 0xa6,
0xee, 0x10, 0xd7, 0x5e, 0xc9, 0x54, 0x8f, 0x18, 0x4c, 0x42, 0x31, 0x21, 0x76, 0x09, 0x5a, 0x6a,
0x25, 0x01, 0xe8, 0x8b, 0x7d, 0xe2, 0x03, 0x28, 0x07, 0x57, 0xee, 0x40, 0x5f, 0x60, 0x2b, 0x72,
0x7c, 0xc4, 0xdb, 0x6f, 0xf6, 0xae, 0xdc, 0x01, 0x2e, 0xa7, 0x52, 0x20, 0x7f, 0xb1, 0xc7, 0x50,
0x8a, 0x9c, 0xb2, 0x24, 0x1e, 0x6f, 0xea, 0x25, 0x94, 0x27, 0x96, 0x6c, 0xdf, 0x88, 0x94, 0x3d,
0x80, 0x05, 0xf4, 0x9c, 0x06, 0xcd, 0x2a, 0x16, 0x52, 0xca, 0xb8, 0xe8, 0x06, 0xc6, 0x71, 0xf8,
0x10, 0xbd, 0xa8, 0xa6, 0x24, 0xdb, 0x78, 0x02, 0xb5, 0x44, 0x5d, 0xba, 0x85, 0x5b, 0x23, 0x0b,
0xf7, 0x2d, 0xdd, 0xc2, 0x8d, 0xc5, 0xb4, 0x2c, 0xa6, 0x5b, 0xbc, 0xbf, 0x08, 0x25, 0xf5, 0x2a,
0x62, 0x11, 0x1d, 0x77, 0x9f, 0x74, 0x0f, 0x3f, 0xef, 0x5a, 0xbd, 0xa7, 0xdd, 0xed, 0xc6, 0x0d,
0xb6, 0x08, 0x95, 0xd6, 0x36, 0xae, 0x4b, 0x04, 0x64, 0x04, 0xc9, 0x51, 0xab, 0xd7, 0x8b, 0x20,
0x59, 0x63, 0x17, 0x1a, 0xb3, 0x3d, 0x15, 0x3c, 0x19, 0x2a, 0x98, 0xf4, 0x2b, 0xc7, 0x00, 0x61,
0xbf, 0x90, 0xab, 0x98, 0x94, 0x64, 0x7a, 0x30, 0x1e, 0x43, 0x43, 0x6c, 0x3a, 0x62, 0xa8, 0xf4,
0x88, 0xd1, 0x48, 0x28, 0x5e, 0xba, 0x6f, 0xb9, 0x64, 0x56, 0x08, 0x86, 0x4d, 0x19, 0x1f, 0xc2,
0x92, 0x56, 0x2c, 0xb6, 0x37, 0xc5, 0x46, 0x36, 0x6b, 0x6f, 0xa2, 0x75, 0x41, 0x18, 0x63, 0x1d,
0x56, 0xc5, 0x63, 0xfb, 0x82, 0xbb, 0x61, 0x6f, 0x7a, 0x42, 0x21, 0x45, 0xc7, 0x73, 0x85, 0xd5,
0x51, 0x8e, 0x30, 0xd7, 0x33, 0xf9, 0xa6, 0x34, 0x4d, 0xb3, 0xc8, 0x1a, 0x1b, 0x5a, 0x0b, 0x58,
0x70, 0x13, 0xff, 0x26, 0x4c, 0xd4, 0x72, 0x04, 0x12, 0xc3, 0x7a, 0xd4, 0x6e, 0x9b, 0xd6, 0x61,
0x77, 0xbf, 0xd3, 0x15, 0xd2, 0x4e, 0x0c, 0x2b, 0x02, 0x76, 0x77, 0x11, 0x92, 0x31, 0x1a, 0x50,
0xff, 0x84, 0x87, 0x1d, 0xf7, 0xd4, 0x93, 0x83, 0x61, 0xfc, 0x8d, 0x05, 0x58, 0x8c, 0x40, 0xb1,
0x89, 0x7b, 0xc1, 0xfd, 0xc0, 0xf1, 0x5c, 0xd4, 0x56, 0xcb, 0xa6, 0x7a, 0x14, 0xd2, 0x49, 0xea,
0xe8, 0xb8, 0x05, 0xae, 0x20, 0x56, 0x6a, 0xf5, 0xb8, 0xff, 0xbd, 0x03, 0x8b, 0xce, 0x90, 0xbb,
0xa1, 0x13, 0x5e, 0x59, 0x09, 0x87, 0x59, 0x5d, 0x81, 0xe5, 0x1e, 0xb8, 0x02, 0x05, 0x7b, 0xe4,
0xd8, 0x2a, 0x54, 0x4b, 0x0f, 0x02, 0x3a, 0xf0, 0x46, 0x9e, 0x8f, 0x9a, 0x6b, 0xd9, 0xa4, 0x07,
0xf6, 0x10, 0x56, 0x84, 0x06, 0xad, 0x7b, 0x31, 0x51, 0xc0, 0x90, 0xef, 0x8e, 0xb9, 0xd3, 0xf1,
0x51, 0xec, 0xc9, 0x14, 0x18, 0xb1, 0xf3, 0x89, 0x12, 0x52, 0xd5, 0x89, 0x0a, 0x90, 0x31, 0xb6,
0xe4, 0x4e, 0xc7, 0x2d, 0xc4, 0x44, 0xf4, 0x8f, 0x60, 0x55, 0xd0, 0x47, 0xca, 0x51, 0x54, 0x62,
0x11, 0x4b, 0x88, 0xca, 0x3a, 0x12, 0x17, 0x95, 0xb9, 0x05, 0x65, 0xea, 0x95, 0x60, 0x89, 0x02,
0x29, 0xe1, 0xd8, 0x15, 0xee, 0x07, 0x73, 0x51, 0xd5, 0x05, 0xda, 0xc6, 0x67, 0xa2, 0xaa, 0x5a,
0x5c, 0xb6, 0x34, 0x1b, 0x97, 0x7d, 0x04, 0xab, 0x27, 0x82, 0x47, 0xcf, 0xb9, 0x3d, 0xe4, 0xbe,
0x15, 0x73, 0x3e, 0x19, 0x1b, 0xcb, 0x02, 0xb9, 0x87, 0xb8, 0x68, 0xa1, 0x08, 0x2d, 0x45, 0xc8,
0x0d, 0x3e, 0xb4, 0x42, 0xcf, 0x42, 0xe5, 0x05, 0x25, 0x50, 0xc9, 0xac, 0x11, 0xb8, 0xef, 0x6d,
0x0b, 0x60, 0x92, 0xee, 0xcc, 0xb7, 0x27, 0xe7, 0xd2, 0x1c, 0x88, 0xe8, 0x3e, 0x11, 0x40, 0xf6,
0x1a, 0x14, 0xc5, 0x9a, 0x70, 0x39, 0x85, 0xae, 0x48, 0xe1, 0x56, 0x20, 0xf6, 0x16, 0x2c, 0x60,
0x1b, 0x41, 0xb3, 0x81, 0x0b, 0xa2, 0x1a, 0x4b, 0x7a, 0xc7, 0x35, 0x25, 0x4e, 0xa8, 0x82, 0x53,
0xdf, 0x21, 0x31, 0x54, 0x36, 0xf1, 0x37, 0xfb, 0x9e, 0x26, 0xd3, 0x96, 0xb1, 0xec, 0x5b, 0xb2,
0xec, 0x0c, 0x2b, 0x5e, 0x27, 0xde, 0x7e, 0xa6, 0xd2, 0xea, 0xfb, 0xf9, 0x52, 0xa5, 0x51, 0x35,
0x3e, 0x82, 0x02, 0x8d, 0x8e, 0x60, 0x42, 0x1c, 0xbb, 0x8c, 0x64, 0x42, 0x84, 0x36, 0xa1, 0xe8,
0xf2, 0xf0, 0xb9, 0xe7, 0x3f, 0x53, 0x2e, 0x65, 0xf9, 0x68, 0xfc, 0x10, 0x7d, 0x21, 0x51, 0xc4,
0x9d, 0xcc, 0x3a, 0xc1, 0x1e, 0x34, 0xbd, 0xc1, 0xb9, 0x2d, 0xdd, 0x33, 0x25, 0x04, 0xf4, 0xce,
0xed, 0x39, 0xf6, 0xc8, 0xce, 0x07, 0xdd, 0xdf, 0x82, 0xba, 0x8a, 0xf1, 0x07, 0xd6, 0x88, 0x9f,
0x86, 0x92, 0xdd, 0xab, 0x32, 0xc0, 0x1f, 0xec, 0xf3, 0xd3, 0xd0, 0x38, 0x80, 0x25, 0xc9, 0x90,
0x87, 0x13, 0xae, 0x9a, 0xfe, 0x56, 0x9a, 0x36, 0x5c, 0x79, 0xb4, 0x9c, 0xdc, 0x89, 0x29, 0x77,
0x21, 0xa1, 0x22, 0x1b, 0x9f, 0x02, 0xd3, 0xf7, 0x69, 0x59, 0x9f, 0xd4, 0x49, 0x95, 0x27, 0x5e,
0x05, 0xb4, 0x22, 0xcd, 0xd7, 0x19, 0x8a, 0xd1, 0x09, 0xa6, 0x83, 0x81, 0xca, 0xbd, 0x28, 0x99,
0xea, 0xd1, 0xf8, 0xe3, 0x0c, 0x2c, 0x63, 0x65, 0x4a, 0x9b, 0x97, 0x52, 0xf8, 0x27, 0xee, 0xa4,
0x98, 0x1f, 0x5d, 0x39, 0xa2, 0x87, 0xaf, 0xee, 0xfb, 0xcc, 0xcf, 0xf9, 0x3e, 0xdf, 0x85, 0xc6,
0x90, 0x8f, 0x9c, 0x0b, 0xee, 0x5f, 0x45, 0x86, 0x1c, 0xe9, 0xef, 0x8b, 0x0a, 0x2e, 0x6d, 0x39,
0xe3, 0x1f, 0x64, 0x60, 0x89, 0x54, 0x19, 0xb4, 0x8a, 0xe5, 0x40, 0x7d, 0xac, 0xcc, 0x40, 0x29,
0xaa, 0xe4, 0x3b, 0xc5, 0x5b, 0x3c, 0x42, 0x89, 0x78, 0xef, 0x86, 0x34, 0x0f, 0x25, 0x94, 0x7d,
0x07, 0x2d, 0x10, 0xd7, 0x42, 0xa0, 0x0c, 0x50, 0xde, 0x4c, 0x51, 0x9e, 0xa2, 0xe2, 0xc2, 0x3c,
0x71, 0x11, 0xb4, 0x55, 0x12, 0x76, 0xa9, 0x00, 0x1b, 0xbb, 0x50, 0x4b, 0x34, 0x93, 0x70, 0xd0,
0x56, 0xc9, 0x41, 0x3b, 0x17, 0x04, 0xc9, 0xce, 0x07, 0x41, 0xae, 0x60, 0xd9, 0xe4, 0xf6, 0xf0,
0x6a, 0xd7, 0xf3, 0x8f, 0x82, 0x93, 0x70, 0x97, 0xf4, 0x43, 0x21, 0xdf, 0xa3, 0xc8, 0x5e, 0xc2,
0x0b, 0xaa, 0x02, 0x3c, 0xca, 0xd8, 0xfd, 0x1a, 0xd4, 0xe3, 0x10, 0xa0, 0xe6, 0x49, 0xab, 0x45,
0x51, 0x40, 0x74, 0xa8, 0x09, 0x43, 0x31, 0x38, 0x09, 0xa5, 0x2f, 0x0d, 0x7f, 0x1b, 0x7f, 0x2d,
0x0f, 0x4c, 0x70, 0xf3, 0x0c, 0xc3, 0xcc, 0x04, 0x2f, 0xb3, 0x73, 0xc1, 0xcb, 0x87, 0xc0, 0x34,
0x02, 0x15, 0x53, 0xcd, 0x45, 0x31, 0xd5, 0x46, 0x4c, 0x2b, 0x43, 0xaa, 0x0f, 0x61, 0x45, 0x2a,
0xdb, 0xc9, 0xae, 0x12, 0x6b, 0x30, 0xd2, 0xba, 0x13, 0xfd, 0x55, 0x81, 0x4b, 0x61, 0xbc, 0x93,
0xaf, 0x0c, 0x03, 0x97, 0xca, 0x6c, 0xd7, 0x18, 0x70, 0xe1, 0xa5, 0x0c, 0x58, 0x9c, 0x63, 0x40,
0xcd, 0x75, 0x53, 0x4a, 0xba, 0x6e, 0x0c, 0xa8, 0xa9, 0xf0, 0x24, 0x65, 0x65, 0x90, 0x66, 0x59,
0x91, 0x31, 0x4a, 0xcc, 0xcc, 0xb8, 0x07, 0x0d, 0xe5, 0x5f, 0x89, 0x9c, 0x43, 0x94, 0x71, 0x20,
0xdd, 0x73, 0xdb, 0xca, 0x45, 0x94, 0x70, 0xc5, 0x57, 0x66, 0x5c, 0xf1, 0xef, 0xc1, 0x52, 0x20,
0xf8, 0xd7, 0x9a, 0xba, 0x32, 0xc1, 0x88, 0x0f, 0xd1, 0x0e, 0x2b, 0x99, 0x0d, 0x44, 0x1c, 0xc7,
0xf0, 0x79, 0xc7, 0x47, 0x2d, 0xc5, 0xf1, 0xf1, 0x38, 0x8e, 0xe4, 0x05, 0xe7, 0xce, 0x18, 0x95,
0x8a, 0x38, 0x95, 0x46, 0x0e, 0x70, 0xef, 0xdc, 0x19, 0x9b, 0x2a, 0x6c, 0x2c, 0x1e, 0x8c, 0xff,
0x93, 0x81, 0x86, 0xe0, 0x83, 0xc4, 0x12, 0xfb, 0x36, 0xa0, 0x30, 0x78, 0xc5, 0x15, 0x56, 0x11,
0xb4, 0x6a, 0x81, 0x7d, 0x04, 0xb8, 0x62, 0x2c, 0x61, 0x74, 0xca, 0xf5, 0xd5, 0x4c, 0xae, 0xaf,
0x58, 0x86, 0xee, 0xdd, 0x20, 0xe3, 0x44, 0x40, 0xd8, 0xb7, 0xa1, 0x2c, 0x18, 0x13, 0xb9, 0x44,
0xe6, 0x80, 0x29, 0xd5, 0x2c, 0x65, 0x8d, 0x88, 0xa2, 0x13, 0xf9, 0x98, 0x16, 0x7c, 0xcd, 0xa7,
0x04, 0x5f, 0xb5, 0x05, 0xbc, 0x07, 0xf0, 0x84, 0x5f, 0xed, 0x7b, 0x03, 0x34, 0x89, 0x6f, 0x03,
0x08, 0x5e, 0x3e, 0xb5, 0xc7, 0x8e, 0xf4, 0xe8, 0x14, 0xcc, 0xf2, 0x33, 0x7e, 0xb5, 0x8b, 0x00,
0x31, 0x91, 0x02, 0x1d, 0xaf, 0xe2, 0x82, 0x59, 0x7a, 0xc6, 0xaf, 0x68, 0x09, 0x5b, 0x50, 0x7b,
0xc2, 0xaf, 0x76, 0x38, 0x69, 0xa1, 0x9e, 0x2f, 0x98, 0xc8, 0xb7, 0x9f, 0x0b, 0xb5, 0x33, 0x11,
0x38, 0xad, 0xf8, 0xf6, 0xf3, 0x27, 0xfc, 0x4a, 0x05, 0x71, 0x8b, 0x02, 0x3f, 0xf2, 0x06, 0x72,
0xdf, 0x54, 0x29, 0x20, 0x71, 0xa7, 0xcc, 0x85, 0x67, 0xf8, 0xdb, 0xf8, 0x8b, 0x0c, 0xd4, 0x44,
0xff, 0x51, 0x2c, 0x8b, 0x29, 0x53, 0x99, 0x44, 0x99, 0x38, 0x93, 0xe8, 0x91, 0x94, 0x6a, 0x24,
0xe3, 0xb3, 0xd7, 0xcb, 0x78, 0x9c, 0x1b, 0x12, 0xf0, 0x1f, 0x40, 0x99, 0x96, 0xa5, 0x58, 0xe7,
0xb9, 0xc4, 0x04, 0x27, 0x5e, 0xc8, 0x2c, 0x21, 0xd9, 0x13, 0x4a, 0x5c, 0xd0, 0xbc, 0x83, 0x34,
0xc4, 0x65, 0x3f, 0xf2, 0x09, 0xa6, 0x4c, 0x43, 0xe1, 0x9a, 0xc4, 0x05, 0xdd, 0xf5, 0xb6, 0x30,
0xe7, 0x7a, 0x3b, 0x84, 0x92, 0x98, 0x6a, 0x7c, 0xd9, 0x94, 0x4a, 0x33, 0x69, 0x95, 0x0a, 0x4d,
0xc0, 0x16, 0x9b, 0x82, 0x10, 0x74, 0x59, 0xa9, 0x09, 0xd8, 0x01, 0x3f, 0x42, 0x61, 0x97, 0x81,
0x8a, 0xb6, 0x02, 0xd0, 0x7b, 0x19, 0x8d, 0x17, 0x2d, 0x97, 0x24, 0x8b, 0x27, 0x06, 0x7c, 0xef,
0x86, 0x59, 0x1b, 0x24, 0x66, 0x60, 0x53, 0xf2, 0x2a, 0x96, 0xcc, 0x26, 0x92, 0x9e, 0x54, 0xc7,
0x15, 0x83, 0x8a, 0xdf, 0x5b, 0x0b, 0x90, 0x17, 0xa4, 0xc6, 0xc7, 0xb0, 0xa4, 0x75, 0x83, 0xfc,
0x00, 0xaf, 0xfa, 0x86, 0xc6, 0xaf, 0x44, 0x85, 0x45, 0x1b, 0x14, 0x5f, 0x52, 0x49, 0x20, 0x7c,
0x48, 0x2f, 0x2e, 0x93, 0x4d, 0x08, 0x24, 0xc8, 0x5e, 0x39, 0x31, 0xe1, 0xd7, 0x60, 0x59, 0xab,
0x7d, 0xd7, 0x71, 0xed, 0x91, 0xf3, 0x43, 0xdc, 0xf0, 0x03, 0xe7, 0xcc, 0x9d, 0xa9, 0x9f, 0x40,
0x5f, 0xa9, 0xfe, 0x7f, 0x98, 0x85, 0x15, 0xd9, 0x00, 0xa6, 0xf5, 0x39, 0x42, 0x8b, 0x3b, 0x08,
0xce, 0xd8, 0xb7, 0xa1, 0x26, 0xc6, 0xc6, 0xf2, 0xf9, 0x99, 0x13, 0x84, 0x5c, 0xc5, 0xb5, 0x52,
0x04, 0x97, 0xd8, 0xcc, 0x05, 0xa9, 0x29, 0x29, 0xd9, 0xc7, 0x50, 0xc1, 0xa2, 0xe4, 0x67, 0x91,
0x13, 0xd1, 0x9c, 0x2f, 0x48, 0x03, 0xbd, 0x77, 0xc3, 0x84, 0x20, 0x1e, 0xf6, 0x8f, 0xa1, 0x82,
0x73, 0x78, 0x81, 0x03, 0x39, 0x23, 0xaa, 0xe6, 0x06, 0x5a, 0x14, 0x9e, 0xc4, 0xc3, 0xde, 0x82,
0x1a, 0x09, 0x2b, 0x39, 0x4e, 0x32, 0x5d, 0x68, 0x63, 0xbe, 0xb8, 0x1a, 0x49, 0xd1, 0xf9, 0x89,
0xf6, 0xbc, 0x55, 0x86, 0x62, 0xe8, 0x3b, 0x67, 0x67, 0xdc, 0x37, 0xd6, 0xa2, 0xa1, 0x11, 0x52,
0x98, 0xf7, 0x42, 0x3e, 0x11, 0xba, 0xb9, 0xf1, 0xef, 0x32, 0x50, 0x91, 0x72, 0xf5, 0x27, 0x0e,
0xa6, 0x6d, 0x68, 0x99, 0xb5, 0xe4, 0xd2, 0x89, 0x13, 0x69, 0xdf, 0x81, 0xc5, 0xb1, 0xd0, 0xd3,
0x85, 0x1d, 0x99, 0x88, 0xa4, 0xd5, 0x15, 0x58, 0xaa, 0xc9, 0x9b, 0xb0, 0x8c, 0x5a, 0x73, 0x60,
0x85, 0xce, 0xc8, 0x52, 0x48, 0x99, 0xc5, 0xba, 0x44, 0xa8, 0xbe, 0x33, 0x3a, 0x90, 0x08, 0xa1,
0x3c, 0x06, 0xa1, 0x7d, 0xc6, 0xe5, 0xda, 0xa6, 0x07, 0xa3, 0x09, 0x6b, 0x33, 0x26, 0xa4, 0xb2,
0x8f, 0xff, 0xef, 0x12, 0xac, 0xcf, 0xa1, 0xa4, 0x9d, 0x1c, 0x45, 0x90, 0x46, 0xce, 0xf8, 0xc4,
0x8b, 0xfc, 0xab, 0x19, 0x2d, 0x82, 0xb4, 0x2f, 0x30, 0xca, 0xbf, 0xca, 0x61, 0x55, 0x31, 0x24,
0x3a, 0x48, 0x23, 0x2b, 0x33, 0x8b, 0x36, 0xd0, 0x07, 0xc9, 0x4d, 0x6c, 0xb6, 0x39, 0x05, 0xd7,
0x55, 0xa3, 0xe5, 0xc9, 0x1c, 0x2c, 0x60, 0xbf, 0x01, 0xcd, 0x88, 0xef, 0xa5, 0xda, 0xae, 0x99,
0xcc, 0xa2, 0xa5, 0xf7, 0x5f, 0xd2, 0x52, 0xc2, 0xb9, 0x87, 0xba, 0xd3, 0x9a, 0x5a, 0x32, 0x54,
0x61, 0xd4, 0xd6, 0x05, 0xbc, 0xae, 0xda, 0x42, 0x35, 0x7c, 0xbe, 0xc5, 0xfc, 0x2b, 0xbd, 0x1b,
0x3a, 0x2e, 0x13, 0xcd, 0x9a, 0xb7, 0x64, 0xc5, 0x11, 0x4a, 0x6f, 0xf7, 0x1c, 0xd6, 0x9e, 0xdb,
0x4e, 0xa8, 0xde, 0x51, 0xb3, 0xd8, 0x0b, 0xd8, 0xde, 0xa3, 0x97, 0xb4, 0xf7, 0x39, 0x15, 0x4e,
0x18, 0x26, 0x2b, 0xcf, 0xe7, 0x81, 0xc1, 0xc6, 0x3f, 0xcd, 0x41, 0x3d, 0x59, 0x8b, 0x10, 0x2c,
0x72, 0xb3, 0x51, 0xfa, 0xa6, 0x54, 0x82, 0xa5, 0xef, 0xbf, 0x4b, 0x7a, 0xe6, 0x7c, 0x54, 0x22,
0x9b, 0x12, 0x95, 0xd0, 0x83, 0x01, 0xb9, 0x97, 0x45, 0x5f, 0xf3, 0xaf, 0x14, 0x7d, 0x2d, 0xa4,
0x45, 0x5f, 0xaf, 0x0f, 0xd9, 0x2d, 0xfc, 0x44, 0x21, 0xbb, 0xe2, 0x0b, 0x43, 0x76, 0x5a, 0xa0,
0xb1, 0x74, 0x8d, 0x0b, 0x5f, 0x0b, 0x3d, 0xa6, 0x84, 0xec, 0xca, 0x5f, 0x21, 0x64, 0xb7, 0xf1,
0x17, 0x19, 0x60, 0xf3, 0xab, 0x83, 0x7d, 0x42, 0x01, 0x1f, 0x97, 0x8f, 0xa4, 0xe4, 0xfe, 0xfa,
0xab, 0xad, 0x30, 0xc5, 0x10, 0xaa, 0x34, 0x7b, 0x00, 0xcb, 0x7a, 0xae, 0xbd, 0x6e, 0xb5, 0xd7,
0x4c, 0xa6, 0xa3, 0x62, 0xdf, 0x8e, 0x16, 0xea, 0xce, 0xbf, 0x34, 0xd4, 0x5d, 0x78, 0x69, 0xa8,
0x7b, 0x21, 0x19, 0xea, 0xde, 0xf8, 0x4f, 0x19, 0x58, 0x4e, 0x61, 0xe2, 0x9f, 0xdd, 0x3b, 0x0b,
0xde, 0x4b, 0x88, 0xb5, 0xac, 0xe4, 0x3d, 0x5d, 0xa2, 0xed, 0x2b, 0x7f, 0xa0, 0x98, 0x8a, 0x40,
0xee, 0x54, 0xf7, 0x5f, 0x26, 0x5d, 0xe2, 0x12, 0xa6, 0x5e, 0x7c, 0xe3, 0xf7, 0xb2, 0x50, 0xd1,
0x90, 0x62, 0x14, 0x89, 0x65, 0xb5, 0x0c, 0x23, 0xd2, 0x0c, 0xd1, 0xe7, 0x70, 0x07, 0x64, 0xd4,
0x83, 0xf0, 0xb4, 0xb8, 0xa4, 0x1a, 0x88, 0x04, 0x9b, 0xb0, 0xac, 0x82, 0x71, 0x3c, 0x4e, 0x24,
0x94, 0x7b, 0xcd, 0x92, 0x0c, 0xc9, 0xf1, 0x28, 0x2f, 0x91, 0x3d, 0x50, 0xe6, 0x60, 0x3c, 0x77,
0xc8, 0xea, 0x14, 0x52, 0x58, 0xa2, 0x05, 0xa2, 0x26, 0x51, 0xf0, 0xf9, 0x07, 0xb0, 0xaa, 0x96,
0x47, 0xb2, 0x04, 0x45, 0x19, 0x98, 0x5c, 0x1c, 0x7a, 0x91, 0xef, 0xc1, 0xed, 0x99, 0x3e, 0xcd,
0x14, 0xa5, 0x8c, 0xd7, 0x9b, 0x89, 0xde, 0xe9, 0x35, 0x6c, 0xfc, 0x08, 0x6a, 0x09, 0x41, 0xf9,
0xb3, 0x9b, 0xf2, 0x59, 0x3f, 0x0f, 0x8d, 0xa8, 0xee, 0xe7, 0xd9, 0xf8, 0xdf, 0x39, 0x60, 0xf3,
0xb2, 0xfa, 0xe7, 0xd9, 0x85, 0x79, 0xc6, 0xcc, 0xa5, 0x30, 0xe6, 0xff, 0x37, 0xfd, 0xe1, 0x3d,
0x58, 0xf2, 0xf9, 0xc0, 0xbb, 0xe0, 0xbe, 0x16, 0x51, 0xa5, 0xc5, 0xd9, 0x88, 0x10, 0xaa, 0x17,
0x1f, 0xcd, 0x66, 0x76, 0x94, 0x12, 0x87, 0x48, 0x34, 0x05, 0x6a, 0x26, 0xc1, 0xe3, 0x18, 0x16,
0x6c, 0x77, 0x70, 0xee, 0xf9, 0x52, 0x0e, 0xfe, 0xc2, 0x57, 0xde, 0x3e, 0x37, 0x5b, 0x58, 0x1e,
0xb5, 0x36, 0x53, 0x56, 0x66, 0x7c, 0x00, 0x15, 0x0d, 0xcc, 0xca, 0x50, 0xd8, 0xef, 0x1c, 0x6c,
0x1d, 0x36, 0x6e, 0xb0, 0x1a, 0x94, 0xcd, 0xf6, 0xf6, 0xe1, 0x67, 0x6d, 0xb3, 0xbd, 0xd3, 0xc8,
0xb0, 0x12, 0xe4, 0xf7, 0x0f, 0x7b, 0xfd, 0x46, 0xd6, 0xd8, 0x80, 0xa6, 0xac, 0x71, 0x3e, 0xa8,
0xf1, 0x5b, 0xf9, 0xc8, 0x5d, 0x88, 0x48, 0x69, 0xa2, 0x7f, 0x03, 0xaa, 0xba, 0x7a, 0x23, 0x39,
0x62, 0x26, 0xa8, 0x2f, 0x8c, 0x73, 0x4f, 0x93, 0xd5, 0xdb, 0x40, 0x21, 0xdd, 0x61, 0x54, 0x2c,
0x9b, 0xd0, 0x5b, 0x53, 0xc2, 0x87, 0x68, 0xfc, 0x24, 0xd8, 0xf0, 0x2f, 0x41, 0x3d, 0xe9, 0xc0,
0x97, 0x12, 0x29, 0xcd, 0xe0, 0x14, 0xa5, 0x13, 0x1e, 0x7d, 0xf6, 0x3d, 0x68, 0xcc, 0x06, 0x00,
0xa4, 0xf2, 0x7c, 0x4d, 0xf9, 0x45, 0x27, 0x19, 0x13, 0x60, 0x7b, 0xb0, 0x92, 0xa6, 0xe0, 0x21,
0x7f, 0x5c, 0xef, 0xa4, 0x60, 0xf3, 0x4a, 0x1c, 0xfb, 0x96, 0x0c, 0x04, 0x15, 0x70, 0xfa, 0xdf,
0x4a, 0xb6, 0xaf, 0x0d, 0xf6, 0x26, 0xfd, 0xd3, 0x42, 0x42, 0x17, 0x00, 0x31, 0x8c, 0x35, 0xa0,
0x7a, 0x78, 0xd4, 0xee, 0x5a, 0xdb, 0x7b, 0xad, 0x6e, 0xb7, 0xbd, 0xdf, 0xb8, 0xc1, 0x18, 0xd4,
0x31, 0x98, 0xbd, 0x13, 0xc1, 0x32, 0x02, 0x26, 0x03, 0x72, 0x0a, 0x96, 0x65, 0x2b, 0xd0, 0xe8,
0x74, 0x67, 0xa0, 0x39, 0xd6, 0x84, 0x95, 0xa3, 0x36, 0xc5, 0xbf, 0x13, 0xf5, 0xe6, 0x85, 0xd1,
0x20, 0x5f, 0x57, 0x18, 0x0d, 0x9f, 0xdb, 0xa3, 0x11, 0x0f, 0xe5, 0x3a, 0x50, 0xba, 0xf4, 0x6f,
0x67, 0x60, 0x75, 0x06, 0x11, 0x9f, 0xf7, 0x20, 0x4d, 0x3a, 0xa9, 0x43, 0x57, 0x11, 0xa8, 0x56,
0xd3, 0x7b, 0xb0, 0x14, 0x39, 0x9e, 0x66, 0x76, 0xa5, 0x46, 0x84, 0x50, 0xc4, 0x0f, 0x60, 0x59,
0xf3, 0x5f, 0xcd, 0xc8, 0x0a, 0xa6, 0xa1, 0x64, 0x01, 0x63, 0x3d, 0xca, 0xab, 0x9f, 0xe9, 0xf5,
0x10, 0xd6, 0x66, 0x11, 0x71, 0x9c, 0x2c, 0xd9, 0x5f, 0xf5, 0xc8, 0x1e, 0xce, 0x30, 0x42, 0xb2,
0xb7, 0xfa, 0x84, 0xab, 0xe6, 0x7f, 0x7f, 0x01, 0xd8, 0xa7, 0x53, 0xee, 0x5f, 0xe1, 0x79, 0x8e,
0xe0, 0x65, 0x09, 0x8e, 0xca, 0xd3, 0x92, 0x7d, 0xa5, 0x33, 0x5b, 0x69, 0x67, 0xa6, 0xf2, 0x2f,
0x3f, 0x33, 0x55, 0x78, 0xd9, 0x99, 0xa9, 0x37, 0xa1, 0xe6, 0x9c, 0xb9, 0x9e, 0x10, 0x85, 0x42,
0x13, 0x0e, 0x9a, 0x0b, 0x77, 0x73, 0xf7, 0xaa, 0x66, 0x55, 0x02, 0x85, 0x1e, 0x1c, 0xb0, 0x8f,
0x63, 0x22, 0x3e, 0x3c, 0xc3, 0x13, 0x82, 0xba, 0x10, 0x6c, 0x0f, 0xcf, 0xb8, 0x74, 0x2c, 0xa1,
0xa5, 0xa1, 0x0a, 0x0b, 0x78, 0xc0, 0xde, 0x82, 0x7a, 0xe0, 0x4d, 0x85, 0x61, 0xa1, 0x86, 0x81,
0x02, 0x65, 0x55, 0x82, 0x1e, 0xa9, 0xb0, 0xe9, 0xf2, 0x34, 0xe0, 0xd6, 0xd8, 0x09, 0x02, 0xa1,
0x9e, 0x0d, 0x3c, 0x37, 0xf4, 0xbd, 0x91, 0x8c, 0x7d, 0x2d, 0x4d, 0x03, 0x7e, 0x40, 0x98, 0x6d,
0x42, 0xb0, 0x6f, 0xc6, 0x5d, 0x9a, 0xd8, 0x8e, 0x1f, 0x34, 0x01, 0xbb, 0xa4, 0xde, 0x14, 0xf5,
0x77, 0xdb, 0xf1, 0xa3, 0xbe, 0x88, 0x87, 0x60, 0xe6, 0x2c, 0x57, 0x65, 0xf6, 0x2c, 0xd7, 0xaf,
0xa7, 0x9f, 0xe5, 0xaa, 0x61, 0xd5, 0x0f, 0x65, 0xd5, 0xf3, 0x53, 0xfc, 0x95, 0x8e, 0x74, 0xcd,
0x1f, 0x51, 0xab, 0x7f, 0x95, 0x23, 0x6a, 0x8b, 0x69, 0x47, 0xd4, 0x3e, 0x80, 0x0a, 0x1e, 0x1e,
0xb2, 0xce, 0x1d, 0xa1, 0xc3, 0x51, 0x2c, 0xaf, 0xa1, 0x9f, 0x2e, 0xda, 0x73, 0xdc, 0xd0, 0x04,
0x5f, 0xfd, 0x0c, 0xe6, 0x4f, 0x8b, 0x2d, 0xfd, 0x1c, 0x4f, 0x8b, 0xc9, 0x43, 0x4e, 0x9b, 0x50,
0x52, 0xf3, 0xc4, 0x18, 0xe4, 0x4f, 0x7d, 0x6f, 0xac, 0x62, 0x1c, 0xe2, 0x37, 0xab, 0x43, 0x36,
0xf4, 0x64, 0xe1, 0x6c, 0xe8, 0x19, 0xbf, 0x0a, 0x15, 0x8d, 0xd5, 0xd8, 0x1b, 0xe4, 0x97, 0x14,
0xb6, 0x99, 0xd4, 0x2d, 0x69, 0x14, 0xcb, 0x12, 0xda, 0x19, 0x0a, 0x79, 0x33, 0x74, 0x7c, 0x8e,
0xe7, 0x3a, 0x2d, 0x9f, 0x5f, 0x70, 0x3f, 0x50, 0x31, 0xa7, 0x46, 0x84, 0x30, 0x09, 0x6e, 0xfc,
0x1a, 0x2c, 0x27, 0xe6, 0x56, 0x8a, 0x88, 0xb7, 0x60, 0x01, 0xc7, 0x4d, 0x25, 0x0d, 0x24, 0x4f,
0x6d, 0x49, 0x1c, 0x9e, 0x61, 0xa5, 0x70, 0x99, 0x35, 0xf1, 0xbd, 0x13, 0x6c, 0x24, 0x63, 0x56,
0x24, 0xec, 0xc8, 0xf7, 0x4e, 0x8c, 0x3f, 0xcd, 0x41, 0x6e, 0xcf, 0x9b, 0xe8, 0x49, 0x6c, 0x99,
0xb9, 0x24, 0x36, 0x69, 0x70, 0x5a, 0x91, 0x41, 0x29, 0x75, 0x76, 0x0c, 0x14, 0x29, 0xa3, 0xf2,
0x1e, 0xd4, 0x85, 0x9c, 0x08, 0x3d, 0x61, 0xb1, 0x3f, 0xb7, 0x7d, 0x52, 0x88, 0x73, 0xb4, 0xf8,
0xec, 0x71, 0xd8, 0xf7, 0x76, 0x09, 0xce, 0x56, 0x20, 0x17, 0x99, 0x2f, 0x88, 0x16, 0x8f, 0x6c,
0x0d, 0x16, 0x30, 0x9b, 0xf9, 0x4a, 0x06, 0xbd, 0xe5, 0x13, 0xfb, 0x3a, 0x2c, 0x27, 0xeb, 0x25,
0x51, 0x24, 0x75, 0x23, 0xbd, 0x62, 0x94, 0x49, 0x37, 0x41, 0xc8, 0x11, 0xa2, 0x91, 0xc9, 0x35,
0xa7, 0x9c, 0x23, 0x4a, 0x13, 0x7a, 0xa5, 0x84, 0xd0, 0xbb, 0x03, 0x95, 0x70, 0x74, 0x61, 0x4d,
0xec, 0xab, 0x91, 0x67, 0x0f, 0xe5, 0xfa, 0x86, 0x70, 0x74, 0x71, 0x44, 0x10, 0xf6, 0x00, 0x60,
0x3c, 0x99, 0xc8, 0xb5, 0x87, 0xc1, 0x8f, 0x98, 0x95, 0x0f, 0x8e, 0x8e, 0x88, 0xe5, 0xcc, 0xf2,
0x78, 0x32, 0xa1, 0x9f, 0x6c, 0x07, 0xea, 0xa9, 0x67, 0x2f, 0x6f, 0xab, 0xe4, 0x5b, 0x6f, 0xb2,
0x99, 0xb2, 0x38, 0x6b, 0x03, 0x1d, 0xb6, 0xf1, 0x3d, 0x60, 0x3f, 0xe5, 0x09, 0xc8, 0x3e, 0x94,
0xa3, 0xfe, 0xe9, 0x07, 0x08, 0x31, 0x9d, 0xbe, 0x92, 0x38, 0x40, 0xd8, 0x1a, 0x0e, 0x7d, 0x21,
0x17, 0x69, 0xc3, 0x8c, 0x44, 0x3e, 0x68, 0x3b, 0x66, 0x8b, 0xe4, 0xbe, 0xf1, 0xdf, 0x32, 0x50,
0xa0, 0xd3, 0x8c, 0x6f, 0xc3, 0x22, 0xd1, 0x47, 0x09, 0x81, 0x32, 0x54, 0x4e, 0xfb, 0x6e, 0x5f,
0xe6, 0x02, 0x8a, 0x65, 0xa1, 0x9d, 0xe5, 0xce, 0x46, 0x33, 0xaf, 0x9d, 0xe7, 0xbe, 0x03, 0xe5,
0xa8, 0x69, 0x8d, 0x75, 0x4a, 0xaa, 0x65, 0xf6, 0x3a, 0xe4, 0xcf, 0xbd, 0x89, 0xf2, 0xfc, 0x40,
0x3c, 0x92, 0x26, 0xc2, 0xe3, 0xbe, 0x88, 0x36, 0xa8, 0xf3, 0xd2, 0x63, 0x11, 0x35, 0x82, 0x6c,
0x30, 0xff, 0x8e, 0x0b, 0x29, 0xef, 0x78, 0x0c, 0x8b, 0x42, 0x0e, 0x68, 0x39, 0x2d, 0xd7, 0x6f,
0x9a, 0xef, 0x0a, 0x0d, 0x6f, 0x30, 0x9a, 0x0e, 0xb9, 0xee, 0x7b, 0xc3, 0x04, 0x38, 0x09, 0x57,
0x9a, 0xb5, 0xf1, 0xfb, 0x19, 0x92, 0x2f, 0xa2, 0x5e, 0x76, 0x0f, 0xf2, 0x62, 0x7f, 0x9b, 0xf1,
0xc4, 0x47, 0xe7, 0x1a, 0x04, 0x9d, 0x89, 0x14, 0x62, 0xea, 0x30, 0x6a, 0xaf, 0xd7, 0x5e, 0x33,
0x2b, 0xee, 0x74, 0x1c, 0xb9, 0xae, 0xbe, 0xa6, 0x5e, 0x6b, 0xc6, 0xed, 0x43, 0x6f, 0x1f, 0x2d,
0xd3, 0x4d, 0x2d, 0x93, 0x2e, 0x9f, 0xd8, 0x31, 0x95, 0x16, 0x38, 0x3c, 0xe3, 0x5a, 0x06, 0xdd,
0x1f, 0x66, 0xa1, 0x96, 0xe8, 0x11, 0xa6, 0x12, 0x8a, 0x0d, 0x80, 0x02, 0x4b, 0x72, 0xbe, 0x41,
0x80, 0xa4, 0xa2, 0xae, 0x8d, 0x53, 0x36, 0x31, 0x4e, 0x51, 0x72, 0x4e, 0x4e, 0x4f, 0xce, 0x79,
0x08, 0xe5, 0xf8, 0x0c, 0x7f, 0xb2, 0x4b, 0xa2, 0x3d, 0x75, 0xba, 0x23, 0x26, 0x8a, 0xd3, 0x79,
0x0a, 0x7a, 0x3a, 0xcf, 0x77, 0xb5, 0xec, 0x8f, 0x05, 0xac, 0xc6, 0x48, 0x1b, 0xd1, 0x9f, 0x4b,
0xee, 0x87, 0xf1, 0x31, 0x54, 0xb4, 0xce, 0xeb, 0x59, 0x1e, 0x99, 0x44, 0x96, 0x47, 0x74, 0x0e,
0x2b, 0x1b, 0x9f, 0xc3, 0x32, 0xfe, 0x7a, 0x16, 0x6a, 0x62, 0x7d, 0x39, 0xee, 0xd9, 0x91, 0x37,
0x72, 0x06, 0x18, 0x68, 0x8a, 0x56, 0x98, 0x54, 0xb4, 0xd4, 0x3a, 0x93, 0x4b, 0x8c, 0xf4, 0x2c,
0xfd, 0xb8, 0x29, 0x09, 0xe9, 0xe8, 0xb8, 0xa9, 0x01, 0x35, 0x21, 0x18, 0x31, 0x64, 0x14, 0xdf,
0x0f, 0x60, 0x56, 0x4e, 0x39, 0xdf, 0xb2, 0x03, 0x92, 0x90, 0x5f, 0x87, 0x65, 0x41, 0x83, 0x27,
0xed, 0xc6, 0xce, 0x68, 0xe4, 0x10, 0x25, 0x39, 0x9a, 0x1a, 0xa7, 0x9c, 0x9b, 0x76, 0xc8, 0x0f,
0x04, 0x42, 0x5e, 0x27, 0x50, 0x1a, 0x3a, 0x81, 0x7d, 0x12, 0x27, 0x7c, 0x46, 0xcf, 0x18, 0x59,
0xb6, 0x2f, 0xb5, 0xc8, 0x32, 0x39, 0x20, 0x2a, 0x63, 0xfb, 0x32, 0x8a, 0x2c, 0xcf, 0x70, 0x52,
0x71, 0x96, 0x93, 0x8c, 0x7f, 0x9b, 0x85, 0x8a, 0xc6, 0x96, 0xaf, 0xb2, 0xbb, 0xde, 0x9e, 0x0b,
0x0c, 0x96, 0xf5, 0x18, 0xe0, 0x9b, 0xc9, 0x26, 0x31, 0xf7, 0x85, 0x2e, 0x2e, 0xd0, 0x18, 0xf8,
0x16, 0x94, 0xc5, 0xaa, 0xfb, 0x00, 0x5d, 0xb0, 0xf2, 0xe2, 0x0e, 0x04, 0x1c, 0x4d, 0x4f, 0x14,
0xf2, 0x11, 0x22, 0x0b, 0x31, 0xf2, 0x91, 0x40, 0xbe, 0x28, 0x05, 0xfb, 0x23, 0xa8, 0xca, 0x5a,
0x71, 0x4e, 0xf1, 0x75, 0xe3, 0x55, 0x9f, 0x98, 0x6f, 0xb3, 0x42, 0xcd, 0xd1, 0xe4, 0xcb, 0x82,
0x8f, 0x54, 0xc1, 0xd2, 0xcb, 0x0a, 0x3e, 0xa2, 0x07, 0x63, 0x37, 0xca, 0x6a, 0xc7, 0xbc, 0x2b,
0x25, 0xc7, 0x1e, 0xc0, 0xb2, 0x12, 0x57, 0x53, 0xd7, 0x76, 0x5d, 0x6f, 0xea, 0x0e, 0xb8, 0x3a,
0xa0, 0xc5, 0x24, 0xea, 0x38, 0xc6, 0x18, 0xc3, 0xe8, 0x04, 0x2f, 0xe5, 0x6f, 0xdd, 0x87, 0x02,
0xe9, 0xe5, 0xa4, 0x7c, 0xa4, 0x0b, 0x2e, 0x22, 0x61, 0xf7, 0xa0, 0x40, 0xea, 0x79, 0xf6, 0x5a,
0x61, 0x43, 0x04, 0x46, 0x0b, 0x98, 0x28, 0x78, 0xc0, 0x43, 0xdf, 0x19, 0x04, 0xf1, 0xd9, 0xaf,
0x82, 0xb0, 0x3f, 0xa9, 0xad, 0xd8, 0x73, 0x1b, 0x53, 0xa2, 0x8d, 0x4a, 0x34, 0x62, 0x63, 0x5a,
0x4e, 0xd4, 0x21, 0xd5, 0xa5, 0x11, 0xac, 0x9d, 0xf0, 0xf0, 0x39, 0xe7, 0xae, 0x2b, 0x94, 0xa1,
0x01, 0x77, 0x43, 0xdf, 0x1e, 0x89, 0x49, 0xa2, 0x37, 0x78, 0x3c, 0x57, 0x6b, 0xec, 0x03, 0xd9,
0x8a, 0x0b, 0x6e, 0x47, 0xe5, 0x48, 0x76, 0xac, 0x9e, 0xa4, 0xe1, 0x36, 0x7e, 0x05, 0x36, 0xae,
0x2f, 0x94, 0x72, 0xc2, 0xf3, 0x5e, 0x52, 0xaa, 0x44, 0x71, 0xc0, 0x91, 0x67, 0x87, 0xd4, 0x1b,
0x5d, 0xb2, 0x74, 0xa1, 0xa2, 0x61, 0xe2, 0xbd, 0x3f, 0x83, 0xca, 0x1d, 0x3d, 0x88, 0x1d, 0xc9,
0xf5, 0xfc, 0x31, 0xc6, 0xdd, 0x86, 0x56, 0x5c, 0x7b, 0xc6, 0x5c, 0x8c, 0xe1, 0x78, 0xa4, 0xdd,
0xd8, 0x84, 0x45, 0xd4, 0xec, 0xb5, 0x8d, 0xee, 0x45, 0xca, 0xa0, 0xb1, 0x02, 0xac, 0x4b, 0xb2,
0x4b, 0xcf, 0xf7, 0xfc, 0xcf, 0x39, 0xa8, 0x68, 0x60, 0xb1, 0x1b, 0x61, 0x02, 0xa0, 0x35, 0x74,
0xec, 0x31, 0x57, 0x41, 0xce, 0x9a, 0x59, 0x43, 0xe8, 0x8e, 0x04, 0x8a, 0xbd, 0xd8, 0xbe, 0x38,
0xb3, 0xbc, 0x69, 0x68, 0x0d, 0xf9, 0x99, 0xcf, 0x55, 0x2f, 0xab, 0xf6, 0xc5, 0xd9, 0xe1, 0x34,
0xdc, 0x41, 0x98, 0xa0, 0x12, 0xb2, 0x44, 0xa3, 0x92, 0x39, 0x6b, 0x63, 0xfb, 0x32, 0xa6, 0x92,
0x89, 0x93, 0xc4, 0x99, 0xf9, 0x28, 0x71, 0x92, 0xac, 0xc5, 0xd9, 0x0d, 0xb4, 0x30, 0xbf, 0x81,
0x7e, 0x13, 0xd6, 0x68, 0x03, 0x95, 0xa2, 0xd9, 0x9a, 0x59, 0xc9, 0x2b, 0x88, 0x95, 0x2f, 0xa9,
0xa9, 0xbd, 0x0d, 0xf1, 0x06, 0x4a, 0x2c, 0x05, 0xce, 0x0f, 0x49, 0x90, 0x65, 0x4c, 0xf1, 0x66,
0xb2, 0xf2, 0x9e, 0xf3, 0x43, 0x2e, 0x28, 0x31, 0x3b, 0x46, 0xa7, 0x94, 0x07, 0x2c, 0xc6, 0x8e,
0x3b, 0x4b, 0x69, 0x5f, 0x26, 0x29, 0xcb, 0x92, 0xd2, 0xbe, 0xd4, 0x29, 0x1f, 0xc3, 0xfa, 0x98,
0x0f, 0x1d, 0x3b, 0x59, 0xad, 0x15, 0x2b, 0x6e, 0x2b, 0x84, 0xd6, 0xca, 0xf4, 0xc8, 0x70, 0x17,
0xa3, 0xf1, 0x43, 0x6f, 0x7c, 0xe2, 0x90, 0xce, 0x42, 0xf9, 0x3a, 0x79, 0xb3, 0xee, 0x4e, 0xc7,
0x3f, 0x40, 0xb0, 0x28, 0x12, 0x18, 0x35, 0xa8, 0xf4, 0x42, 0x6f, 0xa2, 0xa6, 0xb9, 0x0e, 0x55,
0x7a, 0x94, 0xa7, 0x1e, 0x6f, 0xc1, 0x4d, 0x14, 0x09, 0x7d, 0x6f, 0xe2, 0x8d, 0xbc, 0xb3, 0xab,
0x84, 0x1f, 0xef, 0xdf, 0x67, 0x60, 0x39, 0x81, 0x95, 0xe2, 0xf5, 0x9b, 0x24, 0xcf, 0xa2, 0xa3,
0x6b, 0xb4, 0x06, 0x97, 0xb4, 0x35, 0x48, 0x84, 0x24, 0xcc, 0xd4, 0x71, 0xb6, 0x56, 0x7c, 0xe5,
0x82, 0x2a, 0x48, 0x22, 0xa5, 0x39, 0x2f, 0x52, 0x64, 0x79, 0x75, 0x19, 0x83, 0xaa, 0xe2, 0x17,
0xe4, 0x21, 0x98, 0xa1, 0x7c, 0xe5, 0x5c, 0xf2, 0x24, 0x81, 0xee, 0xf3, 0x53, 0x3d, 0x88, 0x1d,
0x81, 0x81, 0xf1, 0xcf, 0x32, 0x00, 0x71, 0xef, 0xf0, 0x2c, 0x43, 0xa4, 0xb7, 0x64, 0x30, 0x0d,
0x55, 0xd3, 0x51, 0xde, 0x80, 0x6a, 0x94, 0xb1, 0x1c, 0x6b, 0x42, 0x15, 0x05, 0x13, 0xea, 0xd0,
0x3b, 0xb0, 0x78, 0x36, 0xf2, 0x4e, 0x50, 0x63, 0x95, 0x7a, 0x0b, 0xe5, 0xab, 0xd5, 0x09, 0xac,
0xb4, 0x91, 0x58, 0x6f, 0xca, 0xa7, 0x26, 0x35, 0xeb, 0x5a, 0x90, 0xf1, 0x77, 0xb3, 0x51, 0xea,
0x66, 0x3c, 0x12, 0x2f, 0x36, 0xef, 0x7e, 0x92, 0x5c, 0x9a, 0x17, 0x85, 0x17, 0x3f, 0x86, 0xba,
0x4f, 0x9b, 0x92, 0xda, 0xb1, 0xf2, 0x2f, 0xd8, 0xb1, 0x6a, 0x7e, 0x42, 0xd3, 0x79, 0x17, 0x1a,
0xf6, 0xf0, 0x82, 0xfb, 0xa1, 0x83, 0xde, 0x7a, 0xd4, 0x8f, 0x65, 0xb2, 0xa4, 0x06, 0x47, 0x45,
0xf4, 0x1d, 0x58, 0x94, 0x27, 0x71, 0x23, 0x4a, 0x79, 0xb7, 0x4f, 0x0c, 0x16, 0x84, 0xc6, 0xbf,
0x54, 0xb9, 0xa2, 0xc9, 0xd9, 0x7d, 0xf1, 0xa8, 0xe8, 0x6f, 0x98, 0x9d, 0x0f, 0xa0, 0x4a, 0x46,
0x92, 0x41, 0x00, 0x29, 0x8f, 0x08, 0x28, 0x43, 0x00, 0xc9, 0x61, 0xcd, 0xbf, 0xca, 0xb0, 0x1a,
0xff, 0x31, 0x03, 0xc5, 0x3d, 0x6f, 0xb2, 0xe7, 0x50, 0x36, 0x3f, 0x2e, 0x93, 0x28, 0x46, 0xb5,
0x20, 0x1e, 0x31, 0xf1, 0xe7, 0x05, 0x07, 0xce, 0x52, 0xd5, 0xbc, 0x5a, 0x52, 0xcd, 0xfb, 0x2e,
0xdc, 0xc2, 0x10, 0xa0, 0xef, 0x4d, 0x3c, 0x5f, 0x2c, 0x55, 0x7b, 0x44, 0xea, 0x9e, 0xe7, 0x86,
0xe7, 0x4a, 0x76, 0xde, 0x3c, 0xe5, 0xfc, 0x48, 0xa3, 0x38, 0x88, 0x08, 0xf0, 0x48, 0xe7, 0x28,
0xbc, 0xb0, 0xc8, 0x42, 0x97, 0xfa, 0x28, 0x49, 0xd4, 0x45, 0x81, 0x68, 0x23, 0x1c, 0x35, 0x52,
0xe3, 0x5b, 0x50, 0x8e, 0x9c, 0x3d, 0xec, 0x3d, 0x28, 0x9f, 0x7b, 0x13, 0xe9, 0x11, 0xca, 0x24,
0x0e, 0xe5, 0xc9, 0xb7, 0x36, 0x4b, 0xe7, 0xf4, 0x23, 0x30, 0xfe, 0xb4, 0x08, 0xc5, 0x8e, 0x7b,
0xe1, 0x39, 0x03, 0xcc, 0x36, 0x1d, 0xf3, 0xb1, 0xa7, 0xae, 0x03, 0x10, 0xbf, 0x31, 0x37, 0x2b,
0xbe, 0xa1, 0x27, 0x27, 0x73, 0xb3, 0xa2, 0xbb, 0x79, 0x56, 0x61, 0xc1, 0xd7, 0xaf, 0xd8, 0x29,
0xf8, 0x98, 0xff, 0x1e, 0xed, 0x97, 0x05, 0xed, 0x3a, 0x05, 0x51, 0x17, 0x5d, 0xfd, 0x82, 0x43,
0x46, 0xc7, 0x33, 0xcb, 0x08, 0xc1, 0x01, 0x7b, 0x0d, 0x8a, 0xf2, 0x0c, 0x1c, 0x1d, 0x5a, 0xa2,
0x84, 0x75, 0x09, 0x42, 0x6e, 0xf0, 0x39, 0x85, 0x70, 0x23, 0x45, 0x36, 0x67, 0x56, 0x15, 0x70,
0x47, 0xf0, 0xda, 0x1d, 0xa8, 0x10, 0x3d, 0x91, 0x94, 0x64, 0x92, 0x26, 0x82, 0x90, 0x20, 0xe5,
0xa6, 0xaa, 0x72, 0xea, 0x4d, 0x55, 0x98, 0x4e, 0x1c, 0x49, 0x59, 0x7a, 0x45, 0xa0, 0xfb, 0x89,
0x34, 0xb8, 0xba, 0xe8, 0x4d, 0xfa, 0x54, 0xe8, 0xb4, 0xb2, 0xf2, 0xa9, 0xbc, 0x09, 0xb5, 0x53,
0x7b, 0x34, 0x3a, 0xb1, 0x07, 0xcf, 0xc8, 0x15, 0x50, 0x25, 0xef, 0xa7, 0x02, 0xa2, 0x2f, 0xe0,
0x0e, 0x54, 0xb4, 0x59, 0xc6, 0x0c, 0xcc, 0xbc, 0x09, 0xf1, 0xfc, 0xce, 0x7a, 0xf8, 0xea, 0xaf,
0xe0, 0xe1, 0xd3, 0x32, 0x51, 0x17, 0x93, 0x99, 0xa8, 0xb7, 0x50, 0x9a, 0xca, 0x94, 0xc3, 0x06,
0x5d, 0x86, 0x63, 0x0f, 0x87, 0x98, 0x72, 0x88, 0x8e, 0x2c, 0x1a, 0x3c, 0xc2, 0x2f, 0x91, 0x2d,
0x41, 0x30, 0x22, 0xb9, 0x4d, 0x6e, 0xea, 0x89, 0xed, 0x0c, 0xf1, 0xd0, 0x01, 0x79, 0x0f, 0x8a,
0xf6, 0x38, 0x3c, 0xb2, 0x9d, 0x21, 0xbb, 0x0b, 0x55, 0x85, 0xc6, 0xdd, 0x71, 0x99, 0xc6, 0x5f,
0xa2, 0xc5, 0x9e, 0x68, 0x40, 0x2d, 0xa2, 0x18, 0xc7, 0x47, 0x8e, 0x2b, 0x92, 0x04, 0xf9, 0xe0,
0x03, 0xcc, 0xf2, 0x09, 0x39, 0x1e, 0x2c, 0xae, 0x3f, 0xba, 0x15, 0x25, 0x1f, 0x20, 0x97, 0xaa,
0xff, 0x14, 0x1c, 0x23, 0x4a, 0xa1, 0xdc, 0x51, 0x8c, 0x6e, 0x2d, 0xa1, 0xff, 0x4a, 0x52, 0x8c,
0xd1, 0x11, 0x01, 0xfb, 0x96, 0x66, 0xbf, 0x36, 0x91, 0xf8, 0xb5, 0x99, 0xfa, 0xaf, 0x3b, 0x94,
0x75, 0x1b, 0xc0, 0x09, 0xc4, 0x2e, 0x13, 0x70, 0x77, 0x88, 0x67, 0x84, 0x4b, 0x66, 0xd9, 0x09,
0x9e, 0x10, 0xe0, 0x67, 0x6b, 0xd8, 0xb6, 0xa0, 0xaa, 0xbf, 0x26, 0x2b, 0x41, 0xfe, 0xf0, 0xa8,
0xdd, 0x6d, 0xdc, 0x60, 0x15, 0x28, 0xf6, 0xda, 0xfd, 0xfe, 0x3e, 0x46, 0xfa, 0xaa, 0x50, 0x8a,
0x0e, 0x32, 0x66, 0xc5, 0x53, 0x6b, 0x7b, 0xbb, 0x7d, 0xd4, 0x6f, 0xef, 0x34, 0x72, 0xdf, 0xcf,
0x97, 0xb2, 0x8d, 0x9c, 0xf1, 0x67, 0x39, 0xa8, 0x68, 0xa3, 0xf0, 0x62, 0x61, 0x7c, 0x1b, 0x00,
0x2d, 0xc9, 0x38, 0x23, 0x35, 0x6f, 0x96, 0x05, 0x84, 0x26, 0x5f, 0x8f, 0x51, 0xe4, 0xe8, 0x96,
0x25, 0x15, 0xa3, 0x78, 0x13, 0x6a, 0x74, 0x61, 0x91, 0x1e, 0xaf, 0x2d, 0x98, 0x55, 0x02, 0x4a,
0x51, 0x8d, 0x27, 0x9c, 0x91, 0x08, 0x8f, 0xd7, 0xc9, 0xeb, 0x4b, 0x08, 0x84, 0x07, 0xec, 0xf0,
0x74, 0x64, 0xe0, 0x8d, 0x2e, 0x38, 0x51, 0x90, 0x46, 0x58, 0x91, 0xb0, 0xbe, 0x3c, 0xab, 0x2d,
0xe5, 0xa1, 0x76, 0xc4, 0xb6, 0x60, 0x56, 0x09, 0x28, 0x1b, 0xfa, 0xba, 0x62, 0x20, 0xca, 0x5e,
0x59, 0x9f, 0xe7, 0x86, 0x04, 0xf3, 0xec, 0xcf, 0xb9, 0x11, 0xcb, 0xc8, 0x18, 0x5f, 0x9b, 0x2f,
0xf7, 0x72, 0x77, 0x22, 0x7b, 0x0f, 0xd8, 0x78, 0x32, 0xb1, 0x52, 0x1c, 0x7c, 0x79, 0x73, 0x71,
0x3c, 0x99, 0xf4, 0x35, 0xff, 0xd7, 0xcf, 0xc0, 0xf7, 0xf8, 0x05, 0xb0, 0x96, 0x58, 0xc0, 0xd8,
0xc5, 0xc8, 0x14, 0x8b, 0xc5, 0x72, 0x46, 0x17, 0xcb, 0x29, 0xd2, 0x2f, 0x9b, 0x2a, 0xfd, 0x5e,
0x24, 0x27, 0x8c, 0x5d, 0xa8, 0x1c, 0x69, 0xd7, 0xa1, 0xdd, 0x15, 0x3b, 0x84, 0xba, 0x08, 0x8d,
0xf6, 0x0e, 0xf2, 0x29, 0xfa, 0xf2, 0xfe, 0x33, 0xad, 0x37, 0x59, 0xad, 0x37, 0xc6, 0x3f, 0xc9,
0xd0, 0x55, 0x33, 0x51, 0xe7, 0xe3, 0x1b, 0xd8, 0x54, 0xf8, 0x2d, 0x3e, 0x09, 0x5f, 0x51, 0x61,
0x37, 0x79, 0x88, 0x1d, 0xbb, 0x66, 0x79, 0xa7, 0xa7, 0x01, 0x57, 0x39, 0x1e, 0x15, 0x84, 0x1d,
0x22, 0x48, 0x29, 0xdf, 0x42, 0xc3, 0x77, 0xa8, 0xfe, 0x40, 0x26, 0x76, 0x08, 0xe5, 0xfb, 0xc0,
0xbe, 0x94, 0xad, 0x06, 0x42, 0x05, 0x91, 0xf1, 0x01, 0x75, 0x58, 0x36, 0x7a, 0x36, 0xfe, 0x91,
0x3c, 0xac, 0x3f, 0x3b, 0xbe, 0xf7, 0xa1, 0x14, 0xd5, 0x9a, 0xdc, 0x61, 0x15, 0x65, 0x84, 0x17,
0xfb, 0x38, 0x3a, 0x43, 0x12, 0x3d, 0xa6, 0xc5, 0x85, 0x31, 0x9e, 0x8e, 0xd6, 0xeb, 0xf7, 0x81,
0x9d, 0x3a, 0xfe, 0x2c, 0x31, 0x2d, 0xb6, 0x06, 0x62, 0x34, 0x6a, 0xe3, 0x18, 0x96, 0x95, 0x94,
0xd0, 0x2c, 0x82, 0xe4, 0xe4, 0x65, 0x5e, 0x22, 0xe4, 0xb3, 0x73, 0x42, 0xde, 0xf8, 0xcd, 0x02,
0x14, 0xd5, 0xd5, 0x82, 0x69, 0xd7, 0xe1, 0x95, 0x93, 0xd7, 0xe1, 0x35, 0x13, 0x57, 0x27, 0xe1,
0xd4, 0xcb, 0xfd, 0xfe, 0x9d, 0xd9, 0x2d, 0x5b, 0x8b, 0x55, 0x24, 0xb6, 0x6d, 0x19, 0xab, 0x28,
0x24, 0x63, 0x15, 0x69, 0x57, 0x04, 0x92, 0xea, 0x39, 0x77, 0x45, 0xe0, 0x2d, 0x20, 0x3d, 0x42,
0x4b, 0x6e, 0x2b, 0x21, 0x40, 0xec, 0x39, 0x49, 0xb5, 0xa3, 0x34, 0xab, 0x76, 0xbc, 0xb2, 0x4a,
0xf0, 0x4d, 0x58, 0xa0, 0xeb, 0x35, 0xe4, 0xe1, 0x5f, 0xb5, 0x71, 0xc8, 0xb1, 0x52, 0xff, 0xe9,
0xc4, 0x83, 0x29, 0x69, 0xf5, 0xfb, 0xb6, 0x2a, 0x89, 0xfb, 0xb6, 0xf4, 0x18, 0x4a, 0x35, 0x19,
0x43, 0xb9, 0x07, 0x8d, 0x68, 0xe0, 0xd0, 0x23, 0xe9, 0x06, 0xf2, 0xe4, 0x60, 0x5d, 0xc1, 0x85,
0x34, 0xec, 0x06, 0xf1, 0xc6, 0x57, 0x4f, 0x6c, 0x7c, 0x42, 0x56, 0xb5, 0xc2, 0x90, 0x8f, 0x27,
0xa1, 0xda, 0xf8, 0xb4, 0x5b, 0x19, 0x69, 0xe6, 0x17, 0x71, 0xe6, 0xd5, 0xf4, 0x12, 0x77, 0x6c,
0x41, 0xfd, 0xd4, 0x76, 0x46, 0x53, 0x9f, 0x5b, 0x3e, 0xb7, 0x03, 0xcf, 0xc5, 0xc5, 0x1f, 0xef,
0xc1, 0xf2, 0x15, 0x77, 0x89, 0xc6, 0x44, 0x12, 0xb3, 0x76, 0xaa, 0x3f, 0xe2, 0x21, 0x26, 0x7d,
0x24, 0xc4, 0x96, 0x25, 0xcf, 0x10, 0x53, 0xae, 0x4a, 0xa7, 0x6b, 0xed, 0xee, 0x77, 0x3e, 0xd9,
0xeb, 0x37, 0x32, 0xe2, 0xb1, 0x77, 0xbc, 0xbd, 0xdd, 0x6e, 0xef, 0xe0, 0x16, 0x06, 0xb0, 0xb0,
0xdb, 0xea, 0xec, 0xcb, 0x0d, 0x2c, 0xdf, 0x28, 0x18, 0xbf, 0x9d, 0x85, 0x8a, 0xf6, 0x36, 0xec,
0x71, 0x34, 0x09, 0x74, 0x03, 0xd4, 0xed, 0xf9, 0x37, 0xde, 0x54, 0x12, 0x5e, 0x9b, 0x85, 0xe8,
0xfe, 0xc5, 0xec, 0xb5, 0xf7, 0x2f, 0xb2, 0xb7, 0x61, 0xd1, 0xa6, 0x1a, 0xa2, 0x41, 0x97, 0xce,
0x7d, 0x09, 0x96, 0x63, 0x8e, 0x19, 0xa4, 0xf1, 0x36, 0x25, 0xe8, 0xf2, 0x2a, 0x69, 0x33, 0xda,
0xa9, 0x70, 0x6e, 0x8a, 0x72, 0x64, 0x64, 0x30, 0x3e, 0xda, 0xf0, 0xe5, 0x78, 0x29, 0xb4, 0xf1,
0x21, 0x40, 0xdc, 0xe7, 0xe4, 0x10, 0xdd, 0x48, 0x0e, 0x51, 0x46, 0x1b, 0xa2, 0xac, 0xf1, 0x2f,
0xa4, 0x78, 0x92, 0xe3, 0x1d, 0xb9, 0xf3, 0xbe, 0x0e, 0xca, 0xc1, 0x68, 0x61, 0x22, 0xf7, 0x64,
0xc4, 0x43, 0x75, 0x61, 0xc1, 0x92, 0xc4, 0x74, 0x22, 0xc4, 0x9c, 0x38, 0xcd, 0xce, 0x8b, 0xd3,
0x37, 0xa0, 0x2a, 0x44, 0xa9, 0x64, 0x96, 0x40, 0x8a, 0xa4, 0xca, 0xd8, 0xbe, 0x54, 0x6d, 0x27,
0xe4, 0x68, 0x7e, 0x46, 0x8e, 0xfe, 0x4e, 0x86, 0xee, 0x0f, 0x89, 0x3b, 0x1a, 0x0b, 0xd2, 0xa8,
0xce, 0xa4, 0x20, 0x95, 0xa4, 0x66, 0x84, 0xbf, 0x46, 0x38, 0x66, 0xd3, 0x85, 0x63, 0xba, 0xd8,
0xcd, 0xa5, 0x8a, 0x5d, 0x63, 0x03, 0x9a, 0x3b, 0x5c, 0x0c, 0x45, 0x6b, 0x34, 0x9a, 0x19, 0x4b,
0xe3, 0x16, 0xdc, 0x4c, 0xc1, 0x49, 0xcf, 0xcc, 0xa7, 0xb0, 0xda, 0xa2, 0x8b, 0x15, 0x7e, 0x56,
0x07, 0x24, 0x8d, 0x26, 0xac, 0xcd, 0x56, 0x29, 0x1b, 0xdb, 0x85, 0xa5, 0x1d, 0x7e, 0x32, 0x3d,
0xdb, 0xe7, 0x17, 0x71, 0x43, 0x0c, 0xf2, 0xc1, 0xb9, 0xf7, 0x5c, 0x4e, 0x2e, 0xfe, 0xc6, 0xd4,
0x4b, 0x41, 0x63, 0x05, 0x13, 0x3e, 0x50, 0xde, 0x79, 0x84, 0xf4, 0x26, 0x7c, 0x60, 0x3c, 0x06,
0xa6, 0xd7, 0x23, 0x67, 0x42, 0x98, 0x4e, 0xd3, 0x13, 0x2b, 0xb8, 0x0a, 0x42, 0x3e, 0x56, 0x07,
0x03, 0x21, 0x98, 0x9e, 0xf4, 0x08, 0x62, 0xbc, 0x03, 0xd5, 0x23, 0xfb, 0xca, 0xe4, 0x5f, 0xc8,
0xf3, 0x77, 0xeb, 0x50, 0x9c, 0xd8, 0x57, 0x42, 0x66, 0x46, 0x81, 0x3a, 0x44, 0x1b, 0x7f, 0x90,
0x87, 0x05, 0xa2, 0x64, 0x77, 0xe9, 0x06, 0x63, 0xc7, 0x45, 0x99, 0xa5, 0x76, 0x0f, 0x0d, 0x34,
0xb7, 0xc1, 0x64, 0xe7, 0x37, 0x18, 0xe9, 0x55, 0x54, 0x37, 0x37, 0xa9, 0x90, 0x8a, 0x3b, 0x1d,
0xab, 0xeb, 0x9a, 0x92, 0xb7, 0x0b, 0xe4, 0xe3, 0x3b, 0xae, 0xe9, 0x64, 0x75, 0x32, 0xe8, 0x1d,
0x1b, 0x68, 0xd4, 0x3b, 0xb5, 0x6f, 0xca, 0xbd, 0x45, 0x07, 0xa5, 0x5a, 0x81, 0x45, 0x75, 0xa8,
0x34, 0x69, 0x05, 0xce, 0x59, 0x7b, 0xa5, 0x97, 0x5b, 0x7b, 0xe4, 0x6e, 0x7c, 0x81, 0xb5, 0x07,
0xaf, 0x60, 0xed, 0xbd, 0x42, 0xc0, 0xf9, 0x26, 0x94, 0x50, 0x19, 0xd2, 0xb6, 0x1a, 0xa1, 0x04,
0x89, 0xad, 0xe6, 0x23, 0xcd, 0x1e, 0xa2, 0x6c, 0x17, 0x4d, 0xd6, 0x9b, 0xfc, 0x8b, 0x9f, 0x4f,
0x20, 0xef, 0x29, 0x14, 0x25, 0x54, 0x30, 0xb4, 0x6b, 0x8f, 0xd5, 0xe5, 0x77, 0xf8, 0x5b, 0x0c,
0x1b, 0xde, 0xd8, 0xf5, 0xc5, 0xd4, 0xf1, 0xf9, 0x50, 0xdd, 0x6a, 0xe4, 0xe0, 0x1a, 0x15, 0x10,
0xf1, 0x82, 0xc2, 0x36, 0x73, 0xbd, 0xe7, 0xae, 0x94, 0x3d, 0x45, 0x27, 0x78, 0x22, 0x1e, 0x0d,
0x06, 0x0d, 0xbc, 0xfe, 0x72, 0xe2, 0xf9, 0x6a, 0x27, 0x37, 0x7e, 0x9c, 0x81, 0x86, 0x5c, 0x5d,
0x11, 0x4e, 0x37, 0x8d, 0x0a, 0xd7, 0x25, 0x67, 0xbc, 0xf8, 0x8e, 0x22, 0x03, 0x6a, 0xe8, 0x11,
0x8a, 0xb6, 0x75, 0xf2, 0x68, 0x55, 0x04, 0x70, 0x57, 0x6e, 0xed, 0xaf, 0x43, 0x45, 0x25, 0x86,
0x8f, 0x9d, 0x91, 0xba, 0xce, 0x9e, 0x32, 0xc3, 0x0f, 0x9c, 0x91, 0xd2, 0x0a, 0x7c, 0x5b, 0x1e,
0x72, 0xce, 0xa0, 0x56, 0x60, 0xda, 0x21, 0x37, 0xfe, 0x75, 0x06, 0x96, 0xb4, 0x57, 0x91, 0xeb,
0xf6, 0x3b, 0x50, 0x8d, 0xee, 0x9d, 0xe5, 0x91, 0x3a, 0xba, 0x9e, 0x14, 0x34, 0x71, 0xb1, 0xca,
0x20, 0x82, 0x04, 0xa2, 0x33, 0x43, 0xfb, 0x8a, 0xb2, 0x97, 0xa7, 0x63, 0x65, 0xf1, 0x0d, 0xed,
0xab, 0x5d, 0xce, 0x7b, 0xd3, 0xb1, 0xb0, 0xe7, 0x9f, 0x73, 0xfe, 0x2c, 0x22, 0x20, 0xf1, 0x09,
0x02, 0x26, 0x29, 0x0c, 0xa8, 0x8d, 0x3d, 0x37, 0x3c, 0x8f, 0x48, 0xa4, 0x2a, 0x8e, 0x40, 0xa2,
0x31, 0xfe, 0x24, 0x0b, 0xcb, 0xe4, 0x77, 0x94, 0xfe, 0x5e, 0x29, 0xba, 0x9a, 0xb0, 0x40, 0x2e,
0x58, 0x12, 0x5e, 0x7b, 0x37, 0x4c, 0xf9, 0xcc, 0xbe, 0xf9, 0x8a, 0xbe, 0x52, 0x75, 0x8e, 0xfa,
0x9a, 0xe1, 0xcf, 0xcd, 0x0f, 0xff, 0xf5, 0xc3, 0x9b, 0x16, 0xfd, 0x2d, 0xa4, 0x45, 0x7f, 0x5f,
0x25, 0xe6, 0x3a, 0x77, 0xe2, 0xb7, 0x28, 0x69, 0xb4, 0x13, 0xbf, 0x8f, 0x61, 0x3d, 0x41, 0x83,
0xd2, 0xda, 0x39, 0x75, 0xb8, 0xba, 0x95, 0x66, 0x45, 0xa3, 0xee, 0x29, 0xdc, 0x56, 0x11, 0x0a,
0xc1, 0xc0, 0x9b, 0x70, 0x63, 0x0d, 0x56, 0x92, 0xa3, 0x2a, 0xb7, 0x89, 0xdf, 0xcd, 0x40, 0x53,
0xe6, 0xea, 0x38, 0xee, 0xd9, 0x9e, 0x13, 0x84, 0x9e, 0x1f, 0xdd, 0xcf, 0x7a, 0x1b, 0x80, 0x2e,
0xdc, 0x47, 0x03, 0x5b, 0xde, 0xc3, 0x82, 0x10, 0x34, 0xaf, 0x6f, 0x42, 0x89, 0xbb, 0x43, 0x42,
0x12, 0x37, 0x14, 0xb9, 0x3b, 0x54, 0xc6, 0xf9, 0xdc, 0x56, 0x5a, 0x4b, 0x2a, 0x09, 0xf2, 0xd6,
0x03, 0x31, 0x3a, 0xfc, 0x02, 0xb7, 0xf4, 0x7c, 0x74, 0xeb, 0xc1, 0x81, 0x7d, 0x89, 0x99, 0xaf,
0x81, 0xf1, 0xf7, 0xb3, 0xb0, 0x18, 0xf7, 0x8f, 0xee, 0x54, 0x79, 0xf1, 0xed, 0x30, 0x77, 0x25,
0x3b, 0x38, 0xc2, 0xa8, 0xd1, 0xbc, 0xb1, 0x25, 0x5a, 0x9c, 0x1d, 0x97, 0x19, 0x50, 0x51, 0x14,
0xde, 0x34, 0xd4, 0xae, 0x49, 0x2c, 0x13, 0xc9, 0xe1, 0x34, 0x14, 0x56, 0xa8, 0x30, 0xc7, 0x1d,
0x57, 0xda, 0x81, 0x05, 0x7b, 0x1c, 0x76, 0xf0, 0xfb, 0x0d, 0x02, 0x2c, 0x8a, 0xd1, 0x44, 0x0a,
0x2a, 0x41, 0xdf, 0x20, 0xa3, 0x84, 0x66, 0x0e, 0x0d, 0x12, 0x5d, 0x63, 0xa7, 0x8b, 0xa8, 0x23,
0x8d, 0xfd, 0x75, 0xa8, 0x50, 0xe5, 0xf1, 0x01, 0xef, 0xbc, 0x59, 0xc6, 0x16, 0x10, 0x2f, 0x3d,
0x63, 0xde, 0x34, 0xe1, 0x0f, 0x00, 0x6a, 0x0a, 0x53, 0x61, 0xfe, 0x56, 0x06, 0x6e, 0xa6, 0x4c,
0x9b, 0x5c, 0xe5, 0xdb, 0xb0, 0x74, 0x1a, 0x21, 0xd5, 0xe8, 0xd2, 0x52, 0x5f, 0x53, 0x62, 0x35,
0x39, 0xa6, 0x66, 0xe3, 0x34, 0x09, 0x88, 0x2d, 0x51, 0x9a, 0xc1, 0xc4, 0xf5, 0x01, 0xa8, 0x12,
0xd1, 0x34, 0x92, 0x11, 0x78, 0x04, 0x1b, 0xed, 0x4b, 0x21, 0x31, 0xa2, 0xf4, 0xd9, 0xc1, 0xb3,
0xa9, 0x8a, 0x50, 0xcd, 0x78, 0xdd, 0x33, 0xaf, 0xe4, 0x75, 0x1f, 0xd2, 0x79, 0xe3, 0xa8, 0xae,
0x9f, 0xa4, 0x12, 0xdc, 0x40, 0x45, 0x99, 0x13, 0xac, 0x42, 0xdd, 0x23, 0x20, 0x40, 0x54, 0xa9,
0x11, 0xc0, 0xe2, 0xc1, 0x74, 0x14, 0x3a, 0xdb, 0x11, 0x88, 0x7d, 0x53, 0x96, 0xc1, 0x76, 0xd4,
0xa8, 0xa5, 0x36, 0x04, 0x51, 0x43, 0x38, 0x58, 0x63, 0x51, 0x91, 0x35, 0xdf, 0xde, 0xe2, 0x38,
0xd9, 0x82, 0x71, 0x13, 0xd6, 0xe3, 0x27, 0x1a, 0x36, 0xb5, 0xd5, 0xfc, 0xe3, 0x0c, 0xa5, 0xd9,
0x13, 0xae, 0xe7, 0xda, 0x93, 0xe0, 0xdc, 0x0b, 0x59, 0x1b, 0x96, 0x03, 0xc7, 0x3d, 0x1b, 0x71,
0xbd, 0xfa, 0x40, 0x0e, 0xc2, 0x6a, 0xb2, 0x6f, 0x54, 0x34, 0x30, 0x97, 0xa8, 0x44, 0x5c, 0x5b,
0xc0, 0xb6, 0xae, 0xeb, 0x64, 0xcc, 0x16, 0x33, 0xa3, 0x31, 0xdf, 0xf9, 0x0e, 0xd4, 0x93, 0x0d,
0xb1, 0x8f, 0xe4, 0x31, 0xfd, 0xb8, 0x57, 0xb9, 0x99, 0x33, 0xcc, 0x31, 0x43, 0x54, 0xe2, 0xb1,
0x0f, 0x8c, 0xbf, 0x93, 0x81, 0xa6, 0xc9, 0x05, 0xe7, 0x6a, 0xbd, 0x54, 0x3c, 0xf3, 0x9d, 0xb9,
0x5a, 0xaf, 0x7f, 0x57, 0x75, 0xfa, 0x5f, 0xf5, 0xe8, 0xfd, 0x6b, 0x27, 0x63, 0xef, 0xc6, 0xdc,
0x1b, 0x6d, 0x95, 0x60, 0x81, 0x48, 0x8c, 0x75, 0x58, 0x95, 0xfd, 0x51, 0x7d, 0x89, 0x43, 0xaa,
0x89, 0x16, 0x13, 0x21, 0xd5, 0x0d, 0x68, 0xd2, 0x79, 0x5c, 0xfd, 0x25, 0x64, 0xc1, 0x1d, 0x60,
0x07, 0xf6, 0xc0, 0xf6, 0x3d, 0xcf, 0x3d, 0xe2, 0xbe, 0x4c, 0x5a, 0x46, 0x0d, 0x13, 0x23, 0x8e,
0x4a, 0x15, 0xa6, 0x27, 0x75, 0x39, 0xac, 0xe7, 0xaa, 0x1c, 0x2d, 0x7a, 0x32, 0x4c, 0x58, 0xde,
0xb2, 0x9f, 0x71, 0x55, 0x93, 0x1a, 0xa2, 0x8f, 0xa1, 0x32, 0x89, 0x2a, 0x55, 0xe3, 0xae, 0xae,
0x11, 0x99, 0x6f, 0xd6, 0xd4, 0xa9, 0x8d, 0x47, 0xb0, 0x92, 0xac, 0x53, 0x8a, 0x8e, 0x0d, 0x28,
0x8d, 0x25, 0x4c, 0xf6, 0x2e, 0x7a, 0x36, 0x7e, 0xab, 0x04, 0x45, 0x69, 0x8d, 0xb2, 0x4d, 0xc8,
0x0f, 0x54, 0x9e, 0x5c, 0x7c, 0x7d, 0x95, 0xc4, 0xaa, 0xff, 0xdb, 0x98, 0x2d, 0x27, 0xe8, 0xd8,
0xc7, 0x50, 0x4f, 0x86, 0x8a, 0x67, 0x4e, 0xfb, 0x27, 0x63, 0xbc, 0xb5, 0xc1, 0x4c, 0x50, 0xb0,
0x1c, 0x6f, 0x8e, 0xa4, 0x33, 0x94, 0xce, 0xb5, 0xdd, 0xd3, 0x73, 0x85, 0xbe, 0x1d, 0x9c, 0xdb,
0xd6, 0xa3, 0xc7, 0x1f, 0xca, 0xe3, 0xfe, 0x15, 0x04, 0xf6, 0xce, 0xed, 0x47, 0x8f, 0x3f, 0x9c,
0xd5, 0xa4, 0xe5, 0x61, 0x7f, 0x4d, 0x93, 0x5e, 0x81, 0x02, 0xdd, 0x82, 0x4a, 0x09, 0x4f, 0xf4,
0xc0, 0x1e, 0xc2, 0x8a, 0x72, 0x70, 0xc8, 0xd4, 0x74, 0x92, 0x82, 0x25, 0x3a, 0x0d, 0x28, 0x71,
0x3d, 0x44, 0x91, 0x4b, 0x64, 0x0d, 0x16, 0xce, 0xe3, 0x2b, 0x6d, 0x6b, 0xa6, 0x7c, 0x32, 0xfe,
0xa4, 0x00, 0x15, 0x6d, 0x50, 0x58, 0x15, 0x4a, 0x66, 0xbb, 0xd7, 0x36, 0x3f, 0x6b, 0xef, 0x34,
0x6e, 0xb0, 0x7b, 0xf0, 0x56, 0xa7, 0xbb, 0x7d, 0x68, 0x9a, 0xed, 0xed, 0xbe, 0x75, 0x68, 0x5a,
0xea, 0x12, 0xb5, 0xa3, 0xd6, 0xd3, 0x83, 0x76, 0xb7, 0x6f, 0xed, 0xb4, 0xfb, 0xad, 0xce, 0x7e,
0xaf, 0x91, 0x61, 0xaf, 0x41, 0x33, 0xa6, 0x54, 0xe8, 0xd6, 0xc1, 0xe1, 0x71, 0xb7, 0xdf, 0xc8,
0xb2, 0x3b, 0x70, 0x6b, 0xb7, 0xd3, 0x6d, 0xed, 0x5b, 0x31, 0xcd, 0xf6, 0x7e, 0xff, 0x33, 0xab,
0xfd, 0x4b, 0x47, 0x1d, 0xf3, 0x69, 0x23, 0x97, 0x46, 0xb0, 0xd7, 0xdf, 0xdf, 0x56, 0x35, 0xe4,
0xd9, 0x4d, 0x58, 0x25, 0x02, 0x2a, 0x62, 0xf5, 0x0f, 0x0f, 0xad, 0xde, 0xe1, 0x61, 0xb7, 0x51,
0x60, 0x4b, 0x50, 0xeb, 0x74, 0x3f, 0x6b, 0xed, 0x77, 0x76, 0x2c, 0xb3, 0xdd, 0xda, 0x3f, 0x68,
0x2c, 0xb0, 0x65, 0x58, 0x9c, 0xa5, 0x2b, 0x8a, 0x2a, 0x14, 0xdd, 0x61, 0xb7, 0x73, 0xd8, 0xb5,
0x3e, 0x6b, 0x9b, 0xbd, 0xce, 0x61, 0xb7, 0x51, 0x62, 0x6b, 0xc0, 0x92, 0xa8, 0xbd, 0x83, 0xd6,
0x76, 0xa3, 0xcc, 0x56, 0x61, 0x29, 0x09, 0x7f, 0xd2, 0x7e, 0xda, 0x00, 0xd6, 0x84, 0x15, 0xea,
0x98, 0xb5, 0xd5, 0xde, 0x3f, 0xfc, 0xdc, 0x3a, 0xe8, 0x74, 0x3b, 0x07, 0xc7, 0x07, 0x8d, 0x0a,
0xde, 0xcd, 0xd8, 0x6e, 0x5b, 0x9d, 0x6e, 0xef, 0x78, 0x77, 0xb7, 0xb3, 0xdd, 0x69, 0x77, 0xfb,
0x8d, 0x2a, 0xb5, 0x9c, 0xf6, 0xe2, 0x35, 0x51, 0x40, 0x9e, 0x5f, 0xb1, 0x76, 0x3a, 0xbd, 0xd6,
0xd6, 0x7e, 0x7b, 0xa7, 0x51, 0x67, 0xb7, 0xe1, 0x66, 0xbf, 0x7d, 0x70, 0x74, 0x68, 0xb6, 0xcc,
0xa7, 0xea, 0x7c, 0x8b, 0xb5, 0xdb, 0xea, 0xec, 0x1f, 0x9b, 0xed, 0xc6, 0x22, 0x7b, 0x03, 0x6e,
0x9b, 0xed, 0x4f, 0x8f, 0x3b, 0x66, 0x7b, 0xc7, 0xea, 0x1e, 0xee, 0xb4, 0xad, 0xdd, 0x76, 0xab,
0x7f, 0x6c, 0xb6, 0xad, 0x83, 0x4e, 0xaf, 0xd7, 0xe9, 0x7e, 0xd2, 0x68, 0xb0, 0xb7, 0xe0, 0x6e,
0x44, 0x12, 0x55, 0x30, 0x43, 0xb5, 0x24, 0xde, 0x4f, 0x4d, 0x69, 0xb7, 0xfd, 0x4b, 0x7d, 0xeb,
0xa8, 0xdd, 0x36, 0x1b, 0x8c, 0x6d, 0xc0, 0x5a, 0xdc, 0x3c, 0x35, 0x20, 0xdb, 0x5e, 0x16, 0xb8,
0xa3, 0xb6, 0x79, 0xd0, 0xea, 0x8a, 0x09, 0x4e, 0xe0, 0x56, 0x44, 0xb7, 0x63, 0xdc, 0x6c, 0xb7,
0x57, 0x19, 0x83, 0xba, 0x36, 0x2b, 0xbb, 0x2d, 0xb3, 0xb1, 0xc6, 0x16, 0xa1, 0x72, 0x70, 0x74,
0x64, 0xf5, 0x3b, 0x07, 0xed, 0xc3, 0xe3, 0x7e, 0x63, 0x9d, 0xad, 0x42, 0xa3, 0xd3, 0xed, 0xb7,
0x4d, 0x31, 0xd7, 0xaa, 0xe8, 0xff, 0x2c, 0xb2, 0x15, 0x58, 0x54, 0x3d, 0x55, 0xd0, 0x3f, 0x2f,
0xb2, 0x75, 0x60, 0xc7, 0x5d, 0xb3, 0xdd, 0xda, 0x11, 0x03, 0x17, 0x21, 0xfe, 0x57, 0x51, 0x86,
0x8d, 0x7e, 0x9c, 0x8b, 0x36, 0xeb, 0x38, 0x0f, 0x23, 0x79, 0xc1, 0x79, 0x55, 0xbb, 0x98, 0xfc,
0x65, 0x9f, 0x1e, 0xd1, 0x4c, 0xab, 0xdc, 0x9c, 0x69, 0x35, 0x67, 0xbb, 0xd7, 0x74, 0xdd, 0xef,
0x4d, 0xa8, 0x8d, 0xe9, 0xb2, 0x73, 0x79, 0xa9, 0x31, 0xc8, 0xa4, 0x24, 0x02, 0xd2, 0x8d, 0xc6,
0x73, 0xdf, 0xde, 0x28, 0xcc, 0x7f, 0x7b, 0x23, 0x4d, 0xbf, 0x5f, 0x48, 0xd3, 0xef, 0xef, 0xc3,
0x12, 0x89, 0x26, 0xc7, 0x75, 0xc6, 0xca, 0x6a, 0x26, 0x2d, 0x70, 0x11, 0x45, 0x14, 0xc1, 0x95,
0x39, 0xa1, 0x4c, 0x0e, 0x29, 0x42, 0x8a, 0xd2, 0xda, 0x48, 0x58, 0x1a, 0x24, 0x39, 0x22, 0x4b,
0x23, 0x6a, 0xc1, 0xbe, 0x8c, 0x5b, 0xa8, 0x68, 0x2d, 0x10, 0x1c, 0x5b, 0xb8, 0x0f, 0x4b, 0xfc,
0x32, 0xf4, 0x6d, 0xcb, 0x9b, 0xd8, 0x5f, 0x4c, 0x31, 0xae, 0x6d, 0xa3, 0x0d, 0x5f, 0x35, 0x17,
0x11, 0x71, 0x88, 0xf0, 0x1d, 0x3b, 0xb4, 0xef, 0x7f, 0x09, 0x15, 0xed, 0x22, 0x7c, 0xb6, 0x0e,
0xcb, 0x9f, 0x77, 0xfa, 0xdd, 0x76, 0xaf, 0x67, 0x1d, 0x1d, 0x6f, 0x3d, 0x69, 0x3f, 0xb5, 0xf6,
0x5a, 0xbd, 0xbd, 0xc6, 0x0d, 0xb1, 0x68, 0xbb, 0xed, 0x5e, 0xbf, 0xbd, 0x93, 0x80, 0x67, 0xd8,
0xeb, 0xb0, 0x71, 0xdc, 0x3d, 0xee, 0xb5, 0x77, 0xac, 0xb4, 0x72, 0x59, 0xc1, 0xa5, 0x12, 0x9f,
0x52, 0x3c, 0x77, 0xff, 0xd7, 0xa0, 0x9e, 0x3c, 0xea, 0xcd, 0x00, 0x16, 0xf6, 0xdb, 0x9f, 0xb4,
0xb6, 0x9f, 0xd2, 0xed, 0xad, 0xbd, 0x7e, 0xab, 0xdf, 0xd9, 0xb6, 0xe4, 0x6d, 0xad, 0x42, 0x22,
0x64, 0x58, 0x05, 0x8a, 0xad, 0xee, 0xf6, 0xde, 0xa1, 0xd9, 0x6b, 0x64, 0xd9, 0x6b, 0xb0, 0xae,
0x78, 0x75, 0xfb, 0xf0, 0xe0, 0xa0, 0xd3, 0x47, 0x61, 0xd8, 0x7f, 0x7a, 0x24, 0x58, 0xf3, 0xbe,
0x0d, 0xe5, 0xf8, 0xba, 0x59, 0x14, 0x30, 0x9d, 0x7e, 0xa7, 0xd5, 0x8f, 0xa5, 0x6b, 0xe3, 0x86,
0x90, 0x5f, 0x31, 0x18, 0x6f, 0x8b, 0x6d, 0x64, 0xe8, 0x34, 0x9c, 0x02, 0x52, 0xeb, 0x8d, 0xac,
0x58, 0x54, 0x31, 0x74, 0xeb, 0xb0, 0x2f, 0x5e, 0xe1, 0xdb, 0x50, 0x4f, 0xe6, 0x3c, 0x26, 0x9d,
0xd7, 0x1b, 0xb0, 0xb6, 0xd5, 0xee, 0x7f, 0xde, 0x6e, 0x77, 0x71, 0x74, 0xb6, 0xdb, 0xdd, 0xbe,
0xd9, 0xda, 0xef, 0xf4, 0x9f, 0x36, 0x32, 0xf7, 0x3f, 0x86, 0xc6, 0x6c, 0x80, 0x31, 0x11, 0x91,
0x7d, 0x51, 0xe8, 0xf6, 0xfe, 0x7f, 0xc9, 0xc0, 0x4a, 0x9a, 0x6f, 0x5d, 0xcc, 0xa1, 0x5c, 0x9c,
0x42, 0x44, 0xf7, 0x0e, 0xbb, 0x56, 0xf7, 0x10, 0xaf, 0x87, 0xdc, 0x80, 0xb5, 0x19, 0x84, 0x92,
0x04, 0x19, 0x76, 0x0b, 0xd6, 0xe7, 0x0a, 0x59, 0xe6, 0xe1, 0x31, 0xbe, 0x76, 0x13, 0x56, 0x66,
0x90, 0x6d, 0xd3, 0x3c, 0x34, 0x1b, 0x39, 0xf6, 0x3e, 0xdc, 0x9b, 0xc1, 0xcc, 0x6f, 0x4c, 0x6a,
0xdf, 0xca, 0xb3, 0x77, 0xe0, 0xcd, 0x39, 0xea, 0x58, 0x76, 0x5b, 0x5b, 0xad, 0x7d, 0xf1, 0x7a,
0x8d, 0xc2, 0xfd, 0x7f, 0x9e, 0x03, 0x88, 0x0f, 0x15, 0x89, 0xf6, 0x77, 0x5a, 0xfd, 0xd6, 0xfe,
0xa1, 0x60, 0x2f, 0xf3, 0xb0, 0x2f, 0x6a, 0x37, 0xdb, 0x9f, 0x36, 0x6e, 0xa4, 0x62, 0x0e, 0x8f,
0xc4, 0x0b, 0xad, 0xc3, 0x32, 0x4d, 0xd5, 0xbe, 0x78, 0x8d, 0x4e, 0xf7, 0x13, 0xba, 0x69, 0x14,
0x77, 0xbf, 0xe3, 0xa3, 0x5d, 0xf3, 0xb0, 0xdb, 0xb7, 0x7a, 0x7b, 0xc7, 0xfd, 0x1d, 0xbc, 0xa7,
0x74, 0xdb, 0xec, 0x1c, 0x51, 0x9d, 0xf9, 0x17, 0x11, 0x88, 0xaa, 0x0b, 0x62, 0x2d, 0x7c, 0x72,
0xd8, 0xeb, 0x75, 0x8e, 0xac, 0x4f, 0x8f, 0xdb, 0x66, 0xa7, 0xdd, 0xc3, 0x82, 0x0b, 0x29, 0x70,
0x41, 0x5f, 0x14, 0x7b, 0x66, 0x7f, 0xff, 0x33, 0xb9, 0xa9, 0x09, 0xd2, 0x52, 0x12, 0x24, 0xa8,
0xca, 0x62, 0x76, 0xc4, 0xae, 0x90, 0x52, 0x33, 0x5c, 0x83, 0x13, 0xe5, 0x2a, 0x62, 0xbf, 0x9b,
0x5b, 0x24, 0x58, 0xac, 0x9a, 0x8e, 0x12, 0xa5, 0x70, 0x2b, 0x8c, 0x14, 0x87, 0x9d, 0x1d, 0x13,
0x0b, 0xd4, 0xe7, 0xa0, 0x82, 0x76, 0x51, 0x30, 0xa1, 0xd8, 0x36, 0x04, 0x49, 0x43, 0x3d, 0x08,
0xcc, 0xd2, 0xa3, 0xff, 0xf0, 0x2e, 0x94, 0xa3, 0xe4, 0x62, 0xf6, 0x1b, 0x50, 0x4b, 0x9c, 0xf6,
0x64, 0xca, 0x2d, 0x98, 0x76, 0x38, 0x74, 0xe3, 0xb5, 0x74, 0xa4, 0xd4, 0x99, 0x5f, 0xff, 0x2b,
0x7f, 0xfc, 0x3f, 0xfe, 0x5e, 0xb6, 0xc9, 0xd6, 0x1e, 0x5c, 0x7c, 0xf0, 0x40, 0x9e, 0xa6, 0x7c,
0x80, 0xa7, 0xb3, 0xe9, 0x76, 0xc6, 0x67, 0x9a, 0x05, 0x42, 0x8d, 0xbd, 0x36, 0x6b, 0x15, 0x24,
0x5a, 0xbb, 0x7d, 0x0d, 0x56, 0x36, 0xf7, 0x1a, 0x36, 0xb7, 0xc6, 0x56, 0xf4, 0xe6, 0x54, 0x4e,
0x2a, 0xe3, 0x78, 0x65, 0xaa, 0xfe, 0x31, 0x42, 0x76, 0x3b, 0xbe, 0xbf, 0x32, 0xe5, 0x23, 0x85,
0x1b, 0x37, 0xe7, 0x3f, 0x1b, 0x28, 0xbf, 0x33, 0x68, 0x34, 0xb1, 0x29, 0xc6, 0x1a, 0xa2, 0x29,
0xfd, 0x4b, 0x82, 0xec, 0x04, 0x2a, 0xda, 0xd7, 0x77, 0xd8, 0xcd, 0x6b, 0xbf, 0x14, 0xb4, 0xb1,
0x91, 0x86, 0x4a, 0x7b, 0x15, 0xbd, 0xfe, 0x07, 0xa7, 0x9c, 0xb3, 0x5f, 0x86, 0x72, 0xf4, 0x4d,
0x17, 0xb6, 0xae, 0x7d, 0x63, 0x47, 0xff, 0x06, 0xcd, 0x46, 0x73, 0x1e, 0xa1, 0x8c, 0x20, 0xac,
0x7d, 0xd5, 0x98, 0xeb, 0xfd, 0x77, 0x32, 0xf7, 0xd9, 0xe7, 0x50, 0xd1, 0xbe, 0xdb, 0x12, 0xbd,
0xc0, 0xfc, 0xb7, 0x61, 0xa2, 0x17, 0x48, 0xf9, 0xcc, 0x8b, 0xb1, 0x84, 0x4d, 0x54, 0x58, 0x59,
0x34, 0x81, 0x9f, 0x75, 0x61, 0xfb, 0xb0, 0x2a, 0xad, 0xad, 0x13, 0xfe, 0x55, 0xa6, 0x21, 0xe5,
0xeb, 0x8d, 0x0f, 0x33, 0xec, 0x63, 0x28, 0xa9, 0xcf, 0xf3, 0xb0, 0xb5, 0xf4, 0xcf, 0x0c, 0x6d,
0xac, 0xcf, 0xc1, 0xa5, 0x69, 0xf4, 0x14, 0x20, 0xfe, 0x48, 0x0c, 0x53, 0x03, 0x35, 0xf7, 0xd1,
0x99, 0x88, 0x03, 0xe6, 0xbf, 0x28, 0x63, 0xac, 0xe1, 0x0b, 0x36, 0x58, 0x5d, 0xbc, 0xa0, 0xcb,
0x9f, 0xab, 0x7b, 0xad, 0x7f, 0x1d, 0x2a, 0xda, 0x77, 0x62, 0xa2, 0xe1, 0x9b, 0xff, 0xc6, 0x4c,
0x34, 0x7c, 0x29, 0x9f, 0x95, 0x31, 0x36, 0xb0, 0xf6, 0x15, 0x63, 0x51, 0xd4, 0x2e, 0xd4, 0x2d,
0xa9, 0xf6, 0x88, 0x09, 0x3a, 0x87, 0x5a, 0xe2, 0x63, 0x30, 0xd1, 0x0a, 0x4d, 0xfb, 0xd4, 0x4c,
0xb4, 0x42, 0x53, 0xbf, 0x1f, 0xa3, 0xf8, 0xcc, 0x58, 0x12, 0xed, 0xd0, 0xcd, 0x55, 0x5a, 0x4b,
0x3f, 0x80, 0x8a, 0xf6, 0x61, 0x97, 0xe8, 0x5d, 0xe6, 0xbf, 0x21, 0x13, 0xbd, 0x4b, 0xda, 0x77,
0x60, 0x56, 0xb0, 0x8d, 0xba, 0x81, 0xac, 0x80, 0x17, 0xef, 0x8a, 0xba, 0x7f, 0x03, 0xea, 0xc9,
0x6f, 0xbd, 0x44, 0x6b, 0x3f, 0xf5, 0xa3, 0x31, 0xd1, 0xda, 0xbf, 0xe6, 0x03, 0x31, 0x92, 0xa5,
0xef, 0x2f, 0x47, 0x8d, 0x3c, 0xf8, 0x91, 0x3c, 0x26, 0xf5, 0x25, 0xfb, 0x54, 0x08, 0x38, 0x79,
0x31, 0x34, 0x5b, 0xd7, 0xb8, 0x56, 0xbf, 0x61, 0x3a, 0x5a, 0x2f, 0x73, 0x77, 0x48, 0x27, 0x99,
0x19, 0x2b, 0x67, 0x9f, 0xc0, 0x72, 0xc4, 0xcc, 0xd1, 0x4d, 0xcf, 0x41, 0xf4, 0x0e, 0xa9, 0xf7,
0x49, 0x6f, 0x34, 0x66, 0xb1, 0x0f, 0x33, 0xec, 0x00, 0x8a, 0xf2, 0xfa, 0x5c, 0xb6, 0x3a, 0x7b,
0x9d, 0x2e, 0xf5, 0x6b, 0x2d, 0xfd, 0x96, 0x5d, 0x63, 0x19, 0x7b, 0x55, 0x63, 0x15, 0xd1, 0xab,
0x33, 0x1e, 0x3a, 0xa2, 0x0e, 0x17, 0x16, 0x67, 0xaf, 0x55, 0xbe, 0x7d, 0xdd, 0x35, 0x14, 0x54,
0xfd, 0xeb, 0x2f, 0xbe, 0xa5, 0x22, 0x29, 0x8a, 0x94, 0x34, 0x7d, 0x20, 0xb3, 0x72, 0xd8, 0xaf,
0x42, 0x55, 0xff, 0x3e, 0x04, 0xd3, 0x65, 0xc2, 0x6c, 0x4b, 0xb7, 0x52, 0x71, 0x49, 0x2e, 0x61,
0x55, 0xbd, 0x19, 0xf6, 0x19, 0xac, 0x45, 0xc3, 0xac, 0xdf, 0xa3, 0x10, 0xb0, 0x3b, 0x29, 0xb7,
0x2b, 0x24, 0x06, 0xfb, 0xe6, 0xb5, 0xd7, 0x2f, 0x3c, 0xcc, 0x08, 0xee, 0x4b, 0xde, 0x85, 0x1f,
0xef, 0x3c, 0x69, 0x9f, 0x00, 0x88, 0x77, 0x9e, 0xd4, 0x0b, 0xf4, 0x15, 0xf7, 0xb1, 0xe5, 0xc4,
0x18, 0x51, 0xbe, 0x32, 0xfb, 0x01, 0x2c, 0x6a, 0x97, 0x44, 0xf4, 0xae, 0xdc, 0x41, 0xb4, 0x92,
0xe6, 0x2f, 0x4c, 0xdd, 0x48, 0xf3, 0x4f, 0x1a, 0xeb, 0x58, 0xff, 0x92, 0x91, 0x18, 0x1c, 0xb1,
0x8a, 0xb6, 0xa1, 0xa2, 0x5f, 0x40, 0xf1, 0x82, 0x7a, 0xd7, 0x35, 0x94, 0x7e, 0x37, 0xe7, 0xc3,
0x0c, 0xdb, 0x87, 0xc6, 0xec, 0x75, 0x71, 0x91, 0x4c, 0x49, 0xbb, 0x62, 0x6f, 0x63, 0x06, 0x99,
0xb8, 0x64, 0x8e, 0x1d, 0xd1, 0x89, 0x97, 0xe8, 0x53, 0x87, 0x9e, 0x3f, 0xbb, 0xab, 0x27, 0x3f,
0x81, 0x18, 0xd5, 0x96, 0xf6, 0xf1, 0xcb, 0x7b, 0x99, 0x87, 0x19, 0xf6, 0xdb, 0x19, 0xa8, 0x26,
0xae, 0x4b, 0x4a, 0x9c, 0x29, 0x98, 0x79, 0xcf, 0xa6, 0x8e, 0xd3, 0x5f, 0xd4, 0x30, 0x71, 0x10,
0xf7, 0xef, 0x7f, 0x3f, 0x31, 0x49, 0x3f, 0x4a, 0x84, 0xf7, 0x36, 0x67, 0xbf, 0x85, 0xf8, 0xe5,
0x2c, 0x81, 0x7e, 0x05, 0xef, 0x97, 0x0f, 0x33, 0xec, 0x5f, 0x65, 0xa0, 0x9e, 0x8c, 0xdb, 0x47,
0xaf, 0x9b, 0x9a, 0x21, 0x10, 0xb1, 0xd2, 0x35, 0xc1, 0xfe, 0x1f, 0x60, 0x2f, 0xfb, 0xf7, 0xcd,
0x44, 0x2f, 0xe5, 0x57, 0x1c, 0x7e, 0xba, 0xde, 0xb2, 0x5f, 0xa4, 0x4f, 0x0f, 0xab, 0x1c, 0x2f,
0x36, 0xff, 0xa9, 0xda, 0x88, 0xfd, 0xf4, 0x0f, 0xbb, 0x1a, 0xb9, 0xbf, 0x99, 0xcd, 0xe0, 0x4c,
0xfc, 0x3a, 0x7d, 0xf8, 0x4f, 0xa5, 0xf9, 0x08, 0x56, 0x7e, 0xe5, 0x4a, 0xde, 0xc2, 0x17, 0x7b,
0xdd, 0xb8, 0x99, 0x78, 0xb1, 0x59, 0xed, 0xa3, 0x45, 0x5d, 0x94, 0x1f, 0x67, 0x8d, 0xb7, 0xcf,
0xb9, 0x0f, 0xb6, 0xa6, 0x36, 0x82, 0x9d, 0x1c, 0x53, 0x27, 0x25, 0x79, 0x62, 0xbd, 0xbd, 0x62,
0x35, 0xc6, 0x7d, 0xec, 0xeb, 0x5b, 0xc6, 0x9d, 0x6b, 0xfb, 0xfa, 0x00, 0x03, 0xf1, 0xa2, 0xc7,
0x47, 0x00, 0x71, 0x22, 0x26, 0x9b, 0x49, 0x07, 0x8c, 0xa4, 0xd0, 0x7c, 0xae, 0x66, 0x72, 0x51,
0xab, 0xac, 0x41, 0x51, 0xe3, 0x2f, 0x93, 0x4c, 0x8d, 0x12, 0x15, 0x75, 0x15, 0x2c, 0x99, 0x33,
0x99, 0x50, 0xc1, 0x66, 0xeb, 0x4f, 0x48, 0xd4, 0x28, 0x2b, 0xf1, 0x18, 0x6a, 0xfb, 0x9e, 0xf7,
0x6c, 0x3a, 0x89, 0x92, 0xff, 0x93, 0x79, 0x37, 0x7b, 0x76, 0x70, 0xbe, 0x31, 0xf3, 0x16, 0xc6,
0x5d, 0xac, 0x6a, 0x83, 0x35, 0xb5, 0xaa, 0x1e, 0xfc, 0x28, 0xce, 0xfe, 0xfc, 0x92, 0xd9, 0xb0,
0x14, 0x09, 0xea, 0x38, 0xc3, 0x32, 0x59, 0x4d, 0x42, 0x3c, 0xcf, 0x36, 0x91, 0xb0, 0x15, 0x54,
0x6f, 0x1f, 0x04, 0xaa, 0xce, 0x87, 0x19, 0x76, 0x04, 0xd5, 0x1d, 0x3e, 0xc0, 0xdb, 0x23, 0x30,
0xc7, 0x64, 0x39, 0x91, 0xaf, 0x40, 0xc9, 0x29, 0x1b, 0xb5, 0x04, 0x30, 0xb9, 0x79, 0x4d, 0xec,
0x2b, 0x9f, 0x7f, 0xf1, 0xe0, 0x47, 0x32, 0x7b, 0xe5, 0x4b, 0xb5, 0x79, 0xc5, 0x99, 0x4c, 0xba,
0x06, 0x90, 0x4c, 0x07, 0x4a, 0x6c, 0x5e, 0x73, 0xe9, 0x40, 0x89, 0xa1, 0x8e, 0xf2, 0x96, 0x46,
0xb0, 0x34, 0x97, 0x41, 0x14, 0xed, 0x5b, 0xd7, 0xe5, 0x1d, 0x6d, 0xdc, 0xbd, 0x9e, 0x20, 0xd9,
0xda, 0xfd, 0x64, 0x6b, 0x3d, 0xa8, 0xd1, 0x25, 0xbb, 0x27, 0x9c, 0xce, 0x91, 0xce, 0x5c, 0xc2,
0xa4, 0x1f, 0x52, 0x9d, 0xdd, 0x65, 0x10, 0x97, 0x54, 0x73, 0xf0, 0x24, 0x21, 0x3b, 0xc5, 0x4f,
0x4f, 0x68, 0x07, 0x37, 0x23, 0x66, 0x9c, 0x3f, 0x4c, 0x1a, 0x31, 0x63, 0xca, 0x39, 0x4f, 0xe3,
0x36, 0xd6, 0xbd, 0xce, 0x56, 0xa3, 0xba, 0x1f, 0xb8, 0xde, 0x90, 0x8f, 0x65, 0xad, 0xbf, 0x0c,
0x95, 0x4f, 0x78, 0xa8, 0x4e, 0x4a, 0x46, 0x0a, 0xfd, 0xcc, 0xd1, 0xc9, 0x8d, 0x94, 0xf3, 0xad,
0x49, 0xde, 0xa4, 0x9a, 0xf9, 0xf0, 0x8c, 0x93, 0x24, 0xb4, 0x9c, 0xe1, 0x97, 0xec, 0x97, 0xb0,
0xf2, 0xe8, 0x5e, 0x80, 0x35, 0xad, 0x9b, 0x7a, 0xe5, 0x8b, 0x33, 0xf0, 0xb4, 0x9a, 0x45, 0x9f,
0x35, 0xc5, 0xd2, 0x85, 0x8a, 0x76, 0x7f, 0x48, 0x34, 0x36, 0xf3, 0xf7, 0xc5, 0x44, 0x63, 0x93,
0x72, 0xdd, 0x88, 0x71, 0x0f, 0xdb, 0x31, 0xd8, 0xdd, 0xb8, 0x1d, 0xba, 0x62, 0x24, 0x6e, 0xe9,
0xc1, 0x8f, 0xec, 0x71, 0xf8, 0x25, 0xfb, 0x9c, 0xa6, 0x43, 0x3b, 0x09, 0x1a, 0x5b, 0x28, 0xb3,
0x87, 0x46, 0xa3, 0xc1, 0xd2, 0x50, 0x49, 0xab, 0x85, 0x9a, 0x42, 0xb5, 0xf1, 0x31, 0x40, 0x2f,
0xf4, 0x26, 0x3b, 0x36, 0x1f, 0x7b, 0x6e, 0x2c, 0xd3, 0xe3, 0xb3, 0x89, 0xb1, 0x9c, 0xd4, 0x0e,
0x28, 0xb2, 0xcf, 0x35, 0x93, 0x2e, 0x71, 0x86, 0x59, 0x31, 0xf1, 0xb5, 0xc7, 0x17, 0xa3, 0x01,
0x49, 0x39, 0xc2, 0xf8, 0x30, 0xc3, 0x5a, 0x00, 0x71, 0xaa, 0x5a, 0x64, 0xa0, 0xcd, 0x65, 0xc1,
0x45, 0xe2, 0x35, 0x25, 0xaf, 0xed, 0x08, 0xca, 0x71, 0x8e, 0xcf, 0x7a, 0x7c, 0x1d, 0x52, 0x22,
0x23, 0x28, 0x52, 0x17, 0xe6, 0xf2, 0x6b, 0x8c, 0x06, 0x0e, 0x15, 0xb0, 0x92, 0x18, 0xaa, 0x53,
0xce, 0x03, 0xe6, 0xc0, 0x32, 0x75, 0x30, 0xd2, 0xcd, 0xf0, 0x4c, 0x5d, 0xf4, 0xc1, 0x97, 0xf9,
0x54, 0x97, 0x48, 0x6a, 0xa4, 0x26, 0x6c, 0xdc, 0xc4, 0x16, 0x96, 0x8d, 0xba, 0xda, 0x65, 0xe8,
0x3c, 0x9f, 0xd8, 0x02, 0xc6, 0xb0, 0x34, 0x97, 0x13, 0x10, 0x89, 0x8e, 0xeb, 0x92, 0x3c, 0x22,
0xd1, 0x71, 0x6d, 0x3a, 0x81, 0xb1, 0x8a, 0x4d, 0x2e, 0x1a, 0x80, 0x76, 0xe5, 0x73, 0x27, 0x1c,
0x9c, 0x8b, 0xe6, 0x7e, 0x2f, 0x03, 0xcb, 0x29, 0x51, 0x7f, 0xf6, 0x86, 0x72, 0x51, 0x5c, 0x9b,
0x11, 0xb0, 0x91, 0x1a, 0x1d, 0x36, 0x7a, 0xd8, 0xce, 0x01, 0x7b, 0x92, 0xd8, 0x40, 0x29, 0x38,
0x2b, 0x57, 0xe6, 0x0b, 0x35, 0x98, 0x54, 0xf5, 0xe5, 0x0b, 0x58, 0xa7, 0x8e, 0xb4, 0x46, 0xa3,
0x99, 0xc8, 0xf5, 0xeb, 0x5a, 0x2f, 0x52, 0xa2, 0xf1, 0x09, 0x63, 0x20, 0x19, 0x91, 0xbf, 0x46,
0x77, 0xa7, 0xae, 0xb2, 0x29, 0x34, 0x66, 0x23, 0xc2, 0xec, 0xfa, 0xba, 0x36, 0xee, 0x24, 0x8c,
0xed, 0x94, 0x28, 0xf2, 0xd7, 0xb0, 0xb1, 0x3b, 0xc6, 0x46, 0xda, 0xb8, 0x90, 0xfd, 0x2d, 0xe6,
0xe3, 0x2f, 0x47, 0xe1, 0xeb, 0x99, 0xf7, 0xbc, 0x13, 0xdd, 0x60, 0x9f, 0x1e, 0x6c, 0x8f, 0xcc,
0xfd, 0xf4, 0xe8, 0xf7, 0xdb, 0xd8, 0xfc, 0x5d, 0xe3, 0x56, 0x5a, 0xf3, 0x3e, 0x15, 0x21, 0xc3,
0x7f, 0x7d, 0x76, 0x5d, 0xab, 0x1e, 0xdc, 0x4d, 0x9b, 0xef, 0x6b, 0x0d, 0xaf, 0x99, 0xb1, 0xbe,
0x81, 0x3a, 0x64, 0x55, 0x0f, 0x57, 0x47, 0xcb, 0x27, 0x25, 0x2e, 0x1e, 0x2d, 0x9f, 0xb4, 0xf8,
0x76, 0x52, 0x7f, 0x52, 0x91, 0xed, 0xef, 0x64, 0xee, 0x6f, 0xbd, 0xf3, 0x83, 0xaf, 0x9d, 0x39,
0xe1, 0xf9, 0xf4, 0x64, 0x73, 0xe0, 0x8d, 0x1f, 0x8c, 0x94, 0x6b, 0x53, 0x1e, 0x3c, 0x7f, 0x30,
0x72, 0x87, 0x0f, 0xb0, 0xda, 0x93, 0x85, 0x89, 0xef, 0x85, 0xde, 0x37, 0xfe, 0x5f, 0x00, 0x00,
0x00, 0xff, 0xff, 0x4a, 0xea, 0xaf, 0x85, 0xf4, 0x86, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -12798,225 +12340,6 @@ var _ grpc.ClientConn
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// WalletUnlockerClient is the client API for WalletUnlocker service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type WalletUnlockerClient interface {
//*
//GenSeed is the first method that should be used to instantiate a new lnd
//instance. This method allows a caller to generate a new aezeed cipher seed
//given an optional passphrase. If provided, the passphrase will be necessary
//to decrypt the cipherseed to expose the internal wallet seed.
//
//Once the cipherseed is obtained and verified by the user, the InitWallet
//method should be used to commit the newly generated seed, and create the
//wallet.
GenSeed(ctx context.Context, in *GenSeedRequest, opts ...grpc.CallOption) (*GenSeedResponse, error)
//*
//InitWallet is used when lnd is starting up for the first time to fully
//initialize the daemon and its internal wallet. At the very least a wallet
//password must be provided. This will be used to encrypt sensitive material
//on disk.
//
//In the case of a recovery scenario, the user can also specify their aezeed
//mnemonic and passphrase. If set, then the daemon will use this prior state
//to initialize its internal wallet.
//
//Alternatively, this can be used along with the GenSeed RPC to obtain a
//seed, then present it to the user. Once it has been verified by the user,
//the seed can be fed into this RPC in order to commit the new wallet.
InitWallet(ctx context.Context, in *InitWalletRequest, opts ...grpc.CallOption) (*InitWalletResponse, error)
//* lncli: `unlock`
//UnlockWallet is used at startup of lnd to provide a password to unlock
//the wallet database.
UnlockWallet(ctx context.Context, in *UnlockWalletRequest, opts ...grpc.CallOption) (*UnlockWalletResponse, error)
//* lncli: `changepassword`
//ChangePassword changes the password of the encrypted wallet. This will
//automatically unlock the wallet database if successful.
ChangePassword(ctx context.Context, in *ChangePasswordRequest, opts ...grpc.CallOption) (*ChangePasswordResponse, error)
}
type walletUnlockerClient struct {
cc *grpc.ClientConn
}
func NewWalletUnlockerClient(cc *grpc.ClientConn) WalletUnlockerClient {
return &walletUnlockerClient{cc}
}
func (c *walletUnlockerClient) GenSeed(ctx context.Context, in *GenSeedRequest, opts ...grpc.CallOption) (*GenSeedResponse, error) {
out := new(GenSeedResponse)
err := c.cc.Invoke(ctx, "/lnrpc.WalletUnlocker/GenSeed", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *walletUnlockerClient) InitWallet(ctx context.Context, in *InitWalletRequest, opts ...grpc.CallOption) (*InitWalletResponse, error) {
out := new(InitWalletResponse)
err := c.cc.Invoke(ctx, "/lnrpc.WalletUnlocker/InitWallet", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *walletUnlockerClient) UnlockWallet(ctx context.Context, in *UnlockWalletRequest, opts ...grpc.CallOption) (*UnlockWalletResponse, error) {
out := new(UnlockWalletResponse)
err := c.cc.Invoke(ctx, "/lnrpc.WalletUnlocker/UnlockWallet", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *walletUnlockerClient) ChangePassword(ctx context.Context, in *ChangePasswordRequest, opts ...grpc.CallOption) (*ChangePasswordResponse, error) {
out := new(ChangePasswordResponse)
err := c.cc.Invoke(ctx, "/lnrpc.WalletUnlocker/ChangePassword", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// WalletUnlockerServer is the server API for WalletUnlocker service.
type WalletUnlockerServer interface {
//*
//GenSeed is the first method that should be used to instantiate a new lnd
//instance. This method allows a caller to generate a new aezeed cipher seed
//given an optional passphrase. If provided, the passphrase will be necessary
//to decrypt the cipherseed to expose the internal wallet seed.
//
//Once the cipherseed is obtained and verified by the user, the InitWallet
//method should be used to commit the newly generated seed, and create the
//wallet.
GenSeed(context.Context, *GenSeedRequest) (*GenSeedResponse, error)
//*
//InitWallet is used when lnd is starting up for the first time to fully
//initialize the daemon and its internal wallet. At the very least a wallet
//password must be provided. This will be used to encrypt sensitive material
//on disk.
//
//In the case of a recovery scenario, the user can also specify their aezeed
//mnemonic and passphrase. If set, then the daemon will use this prior state
//to initialize its internal wallet.
//
//Alternatively, this can be used along with the GenSeed RPC to obtain a
//seed, then present it to the user. Once it has been verified by the user,
//the seed can be fed into this RPC in order to commit the new wallet.
InitWallet(context.Context, *InitWalletRequest) (*InitWalletResponse, error)
//* lncli: `unlock`
//UnlockWallet is used at startup of lnd to provide a password to unlock
//the wallet database.
UnlockWallet(context.Context, *UnlockWalletRequest) (*UnlockWalletResponse, error)
//* lncli: `changepassword`
//ChangePassword changes the password of the encrypted wallet. This will
//automatically unlock the wallet database if successful.
ChangePassword(context.Context, *ChangePasswordRequest) (*ChangePasswordResponse, error)
}
func RegisterWalletUnlockerServer(s *grpc.Server, srv WalletUnlockerServer) {
s.RegisterService(&_WalletUnlocker_serviceDesc, srv)
}
func _WalletUnlocker_GenSeed_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GenSeedRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WalletUnlockerServer).GenSeed(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/lnrpc.WalletUnlocker/GenSeed",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WalletUnlockerServer).GenSeed(ctx, req.(*GenSeedRequest))
}
return interceptor(ctx, in, info, handler)
}
func _WalletUnlocker_InitWallet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(InitWalletRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WalletUnlockerServer).InitWallet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/lnrpc.WalletUnlocker/InitWallet",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WalletUnlockerServer).InitWallet(ctx, req.(*InitWalletRequest))
}
return interceptor(ctx, in, info, handler)
}
func _WalletUnlocker_UnlockWallet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UnlockWalletRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WalletUnlockerServer).UnlockWallet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/lnrpc.WalletUnlocker/UnlockWallet",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WalletUnlockerServer).UnlockWallet(ctx, req.(*UnlockWalletRequest))
}
return interceptor(ctx, in, info, handler)
}
func _WalletUnlocker_ChangePassword_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ChangePasswordRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WalletUnlockerServer).ChangePassword(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/lnrpc.WalletUnlocker/ChangePassword",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WalletUnlockerServer).ChangePassword(ctx, req.(*ChangePasswordRequest))
}
return interceptor(ctx, in, info, handler)
}
var _WalletUnlocker_serviceDesc = grpc.ServiceDesc{
ServiceName: "lnrpc.WalletUnlocker",
HandlerType: (*WalletUnlockerServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "GenSeed",
Handler: _WalletUnlocker_GenSeed_Handler,
},
{
MethodName: "InitWallet",
Handler: _WalletUnlocker_InitWallet_Handler,
},
{
MethodName: "UnlockWallet",
Handler: _WalletUnlocker_UnlockWallet_Handler,
},
{
MethodName: "ChangePassword",
Handler: _WalletUnlocker_ChangePassword_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "rpc.proto",
}
// LightningClient is the client API for Lightning service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

View File

@ -28,74 +28,6 @@ var _ status.Status
var _ = runtime.String
var _ = utilities.NewDoubleArray
var (
filter_WalletUnlocker_GenSeed_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
func request_WalletUnlocker_GenSeed_0(ctx context.Context, marshaler runtime.Marshaler, client WalletUnlockerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq GenSeedRequest
var metadata runtime.ServerMetadata
if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_WalletUnlocker_GenSeed_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.GenSeed(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func request_WalletUnlocker_InitWallet_0(ctx context.Context, marshaler runtime.Marshaler, client WalletUnlockerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq InitWalletRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.InitWallet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func request_WalletUnlocker_UnlockWallet_0(ctx context.Context, marshaler runtime.Marshaler, client WalletUnlockerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq UnlockWalletRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.UnlockWallet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func request_WalletUnlocker_ChangePassword_0(ctx context.Context, marshaler runtime.Marshaler, client WalletUnlockerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq ChangePasswordRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.ChangePassword(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func request_Lightning_WalletBalance_0(ctx context.Context, marshaler runtime.Marshaler, client LightningClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq WalletBalanceRequest
var metadata runtime.ServerMetadata
@ -944,147 +876,6 @@ func request_Lightning_BakeMacaroon_0(ctx context.Context, marshaler runtime.Mar
}
// RegisterWalletUnlockerHandlerFromEndpoint is same as RegisterWalletUnlockerHandler but
// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
func RegisterWalletUnlockerHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
conn, err := grpc.Dial(endpoint, opts...)
if err != nil {
return err
}
defer func() {
if err != nil {
if cerr := conn.Close(); cerr != nil {
grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
}
return
}
go func() {
<-ctx.Done()
if cerr := conn.Close(); cerr != nil {
grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
}
}()
}()
return RegisterWalletUnlockerHandler(ctx, mux, conn)
}
// RegisterWalletUnlockerHandler registers the http handlers for service WalletUnlocker to "mux".
// The handlers forward requests to the grpc endpoint over "conn".
func RegisterWalletUnlockerHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
return RegisterWalletUnlockerHandlerClient(ctx, mux, NewWalletUnlockerClient(conn))
}
// RegisterWalletUnlockerHandlerClient registers the http handlers for service WalletUnlocker
// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "WalletUnlockerClient".
// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "WalletUnlockerClient"
// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
// "WalletUnlockerClient" to call the correct interceptors.
func RegisterWalletUnlockerHandlerClient(ctx context.Context, mux *runtime.ServeMux, client WalletUnlockerClient) error {
mux.Handle("GET", pattern_WalletUnlocker_GenSeed_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_WalletUnlocker_GenSeed_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_WalletUnlocker_GenSeed_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_WalletUnlocker_InitWallet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_WalletUnlocker_InitWallet_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_WalletUnlocker_InitWallet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_WalletUnlocker_UnlockWallet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_WalletUnlocker_UnlockWallet_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_WalletUnlocker_UnlockWallet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_WalletUnlocker_ChangePassword_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_WalletUnlocker_ChangePassword_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_WalletUnlocker_ChangePassword_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil
}
var (
pattern_WalletUnlocker_GenSeed_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "genseed"}, ""))
pattern_WalletUnlocker_InitWallet_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "initwallet"}, ""))
pattern_WalletUnlocker_UnlockWallet_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "unlockwallet"}, ""))
pattern_WalletUnlocker_ChangePassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "changepassword"}, ""))
)
var (
forward_WalletUnlocker_GenSeed_0 = runtime.ForwardResponseMessage
forward_WalletUnlocker_InitWallet_0 = runtime.ForwardResponseMessage
forward_WalletUnlocker_UnlockWallet_0 = runtime.ForwardResponseMessage
forward_WalletUnlocker_ChangePassword_0 = runtime.ForwardResponseMessage
)
// RegisterLightningHandlerFromEndpoint is same as RegisterLightningHandler but
// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
func RegisterLightningHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {

View File

@ -28,193 +28,7 @@ option go_package = "github.com/lightningnetwork/lnd/lnrpc";
* https://github.com/lightninglabs/lightning-api
*/
// The WalletUnlocker service is used to set up a wallet password for
// lnd at first startup, and unlock a previously set up wallet.
service WalletUnlocker {
/**
GenSeed is the first method that should be used to instantiate a new lnd
instance. This method allows a caller to generate a new aezeed cipher seed
given an optional passphrase. If provided, the passphrase will be necessary
to decrypt the cipherseed to expose the internal wallet seed.
Once the cipherseed is obtained and verified by the user, the InitWallet
method should be used to commit the newly generated seed, and create the
wallet.
*/
rpc GenSeed (GenSeedRequest) returns (GenSeedResponse) {
option (google.api.http) = {
get: "/v1/genseed"
};
}
/**
InitWallet is used when lnd is starting up for the first time to fully
initialize the daemon and its internal wallet. At the very least a wallet
password must be provided. This will be used to encrypt sensitive material
on disk.
In the case of a recovery scenario, the user can also specify their aezeed
mnemonic and passphrase. If set, then the daemon will use this prior state
to initialize its internal wallet.
Alternatively, this can be used along with the GenSeed RPC to obtain a
seed, then present it to the user. Once it has been verified by the user,
the seed can be fed into this RPC in order to commit the new wallet.
*/
rpc InitWallet (InitWalletRequest) returns (InitWalletResponse) {
option (google.api.http) = {
post: "/v1/initwallet"
body: "*"
};
}
/** lncli: `unlock`
UnlockWallet is used at startup of lnd to provide a password to unlock
the wallet database.
*/
rpc UnlockWallet (UnlockWalletRequest) returns (UnlockWalletResponse) {
option (google.api.http) = {
post: "/v1/unlockwallet"
body: "*"
};
}
/** lncli: `changepassword`
ChangePassword changes the password of the encrypted wallet. This will
automatically unlock the wallet database if successful.
*/
rpc ChangePassword (ChangePasswordRequest)
returns (ChangePasswordResponse) {
option (google.api.http) = {
post: "/v1/changepassword"
body: "*"
};
}
}
message GenSeedRequest {
/**
aezeed_passphrase is an optional user provided passphrase that will be used
to encrypt the generated aezeed cipher seed. When using REST, this field
must be encoded as base64.
*/
bytes aezeed_passphrase = 1;
/**
seed_entropy is an optional 16-bytes generated via CSPRNG. If not
specified, then a fresh set of randomness will be used to create the seed.
When using REST, this field must be encoded as base64.
*/
bytes seed_entropy = 2;
}
message GenSeedResponse {
/**
cipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed
cipher seed obtained by the user. This field is optional, as if not
provided, then the daemon will generate a new cipher seed for the user.
Otherwise, then the daemon will attempt to recover the wallet state linked
to this cipher seed.
*/
repeated string cipher_seed_mnemonic = 1;
/**
enciphered_seed are the raw aezeed cipher seed bytes. This is the raw
cipher text before run through our mnemonic encoding scheme.
*/
bytes enciphered_seed = 2;
}
message InitWalletRequest {
/**
wallet_password is the passphrase that should be used to encrypt the
wallet. This MUST be at least 8 chars in length. After creation, this
password is required to unlock the daemon. When using REST, this field
must be encoded as base64.
*/
bytes wallet_password = 1;
/**
cipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed
cipher seed obtained by the user. This may have been generated by the
GenSeed method, or be an existing seed.
*/
repeated string cipher_seed_mnemonic = 2;
/**
aezeed_passphrase is an optional user provided passphrase that will be used
to encrypt the generated aezeed cipher seed. When using REST, this field
must be encoded as base64.
*/
bytes aezeed_passphrase = 3;
/**
recovery_window is an optional argument specifying the address lookahead
when restoring a wallet seed. The recovery window applies to each
individual branch of the BIP44 derivation paths. Supplying a recovery
window of zero indicates that no addresses should be recovered, such after
the first initialization of the wallet.
*/
int32 recovery_window = 4;
/**
channel_backups is an optional argument that allows clients to recover the
settled funds within a set of channels. This should be populated if the
user was unable to close out all channels and sweep funds before partial or
total data loss occurred. If specified, then after on-chain recovery of
funds, lnd begin to carry out the data loss recovery protocol in order to
recover the funds in each channel from a remote force closed transaction.
*/
ChanBackupSnapshot channel_backups = 5;
}
message InitWalletResponse {
}
message UnlockWalletRequest {
/**
wallet_password should be the current valid passphrase for the daemon. This
will be required to decrypt on-disk material that the daemon requires to
function properly. When using REST, this field must be encoded as base64.
*/
bytes wallet_password = 1;
/**
recovery_window is an optional argument specifying the address lookahead
when restoring a wallet seed. The recovery window applies to each
individual branch of the BIP44 derivation paths. Supplying a recovery
window of zero indicates that no addresses should be recovered, such after
the first initialization of the wallet.
*/
int32 recovery_window = 2;
/**
channel_backups is an optional argument that allows clients to recover the
settled funds within a set of channels. This should be populated if the
user was unable to close out all channels and sweep funds before partial or
total data loss occurred. If specified, then after on-chain recovery of
funds, lnd begin to carry out the data loss recovery protocol in order to
recover the funds in each channel from a remote force closed transaction.
*/
ChanBackupSnapshot channel_backups = 3;
}
message UnlockWalletResponse {
}
message ChangePasswordRequest {
/**
current_password should be the current valid passphrase used to unlock the
daemon. When using REST, this field must be encoded as base64.
*/
bytes current_password = 1;
/**
new_password should be the new passphrase that will be needed to unlock the
daemon. When using REST, this field must be encoded as base64.
*/
bytes new_password = 2;
}
message ChangePasswordResponse {
}
// Lightning is the main RPC server of the daemon.
service Lightning {
/** lncli: `walletbalance`
WalletBalance returns total unspent outputs(confirmed and unconfirmed), all

View File

@ -49,33 +49,6 @@
]
}
},
"/v1/changepassword": {
"post": {
"summary": "* lncli: `changepassword`\nChangePassword changes the password of the encrypted wallet. This will\nautomatically unlock the wallet database if successful.",
"operationId": "ChangePassword",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/lnrpcChangePasswordResponse"
}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/lnrpcChangePasswordRequest"
}
}
],
"tags": [
"WalletUnlocker"
]
}
},
"/v1/channels": {
"get": {
"summary": "* lncli: `listchannels`\nListChannels returns a description of all the open channels that this node\nis a participant in.",
@ -560,42 +533,6 @@
]
}
},
"/v1/genseed": {
"get": {
"summary": "*\nGenSeed is the first method that should be used to instantiate a new lnd\ninstance. This method allows a caller to generate a new aezeed cipher seed\ngiven an optional passphrase. If provided, the passphrase will be necessary\nto decrypt the cipherseed to expose the internal wallet seed.",
"description": "Once the cipherseed is obtained and verified by the user, the InitWallet\nmethod should be used to commit the newly generated seed, and create the\nwallet.",
"operationId": "GenSeed",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/lnrpcGenSeedResponse"
}
}
},
"parameters": [
{
"name": "aezeed_passphrase",
"description": "*\naezeed_passphrase is an optional user provided passphrase that will be used\nto encrypt the generated aezeed cipher seed. When using REST, this field\nmust be encoded as base64.",
"in": "query",
"required": false,
"type": "string",
"format": "byte"
},
{
"name": "seed_entropy",
"description": "*\nseed_entropy is an optional 16-bytes generated via CSPRNG. If not\nspecified, then a fresh set of randomness will be used to create the seed.\nWhen using REST, this field must be encoded as base64.",
"in": "query",
"required": false,
"type": "string",
"format": "byte"
}
],
"tags": [
"WalletUnlocker"
]
}
},
"/v1/getinfo": {
"get": {
"summary": "* lncli: `getinfo`\nGetInfo returns general information concerning the lightning node including\nit's identity pubkey, alias, the chains it is connected to, and information\nconcerning the number of open+pending channels.",
@ -907,34 +844,6 @@
]
}
},
"/v1/initwallet": {
"post": {
"summary": "*\nInitWallet is used when lnd is starting up for the first time to fully\ninitialize the daemon and its internal wallet. At the very least a wallet\npassword must be provided. This will be used to encrypt sensitive material\non disk.",
"description": "In the case of a recovery scenario, the user can also specify their aezeed\nmnemonic and passphrase. If set, then the daemon will use this prior state\nto initialize its internal wallet.\n\nAlternatively, this can be used along with the GenSeed RPC to obtain a\nseed, then present it to the user. Once it has been verified by the user,\nthe seed can be fed into this RPC in order to commit the new wallet.",
"operationId": "InitWallet",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/lnrpcInitWalletResponse"
}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/lnrpcInitWalletRequest"
}
}
],
"tags": [
"WalletUnlocker"
]
}
},
"/v1/invoice/{r_hash_str}": {
"get": {
"summary": "* lncli: `lookupinvoice`\nLookupInvoice attempts to look up an invoice according to its payment hash.\nThe passed payment hash *must* be exactly 32 bytes, if not, an error is\nreturned.",
@ -1452,33 +1361,6 @@
]
}
},
"/v1/unlockwallet": {
"post": {
"summary": "* lncli: `unlock`\nUnlockWallet is used at startup of lnd to provide a password to unlock\nthe wallet database.",
"operationId": "UnlockWallet",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/lnrpcUnlockWalletResponse"
}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/lnrpcUnlockWalletRequest"
}
}
],
"tags": [
"WalletUnlocker"
]
}
},
"/v1/utxos": {
"get": {
"summary": "* lncli: `listunspent`\nListUnspent returns a list of all utxos spendable by the wallet with a\nnumber of confirmations between the specified minimum and maximum.",
@ -1944,24 +1826,6 @@
}
}
},
"lnrpcChangePasswordRequest": {
"type": "object",
"properties": {
"current_password": {
"type": "string",
"format": "byte",
"description": "*\ncurrent_password should be the current valid passphrase used to unlock the\ndaemon. When using REST, this field must be encoded as base64."
},
"new_password": {
"type": "string",
"format": "byte",
"description": "*\nnew_password should be the new passphrase that will be needed to unlock the\ndaemon. When using REST, this field must be encoded as base64."
}
}
},
"lnrpcChangePasswordResponse": {
"type": "object"
},
"lnrpcChannel": {
"type": "object",
"properties": {
@ -2917,23 +2781,6 @@
"lnrpcFundingStateStepResp": {
"type": "object"
},
"lnrpcGenSeedResponse": {
"type": "object",
"properties": {
"cipher_seed_mnemonic": {
"type": "array",
"items": {
"type": "string"
},
"description": "*\ncipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed\ncipher seed obtained by the user. This field is optional, as if not\nprovided, then the daemon will generate a new cipher seed for the user.\nOtherwise, then the daemon will attempt to recover the wallet state linked\nto this cipher seed."
},
"enciphered_seed": {
"type": "string",
"format": "byte",
"description": "*\nenciphered_seed are the raw aezeed cipher seed bytes. This is the raw\ncipher text before run through our mnemonic encoding scheme."
}
}
},
"lnrpcGetInfoResponse": {
"type": "object",
"properties": {
@ -3184,40 +3031,6 @@
}
}
},
"lnrpcInitWalletRequest": {
"type": "object",
"properties": {
"wallet_password": {
"type": "string",
"format": "byte",
"description": "*\nwallet_password is the passphrase that should be used to encrypt the\nwallet. This MUST be at least 8 chars in length. After creation, this\npassword is required to unlock the daemon. When using REST, this field\nmust be encoded as base64."
},
"cipher_seed_mnemonic": {
"type": "array",
"items": {
"type": "string"
},
"description": "*\ncipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed\ncipher seed obtained by the user. This may have been generated by the\nGenSeed method, or be an existing seed."
},
"aezeed_passphrase": {
"type": "string",
"format": "byte",
"description": "*\naezeed_passphrase is an optional user provided passphrase that will be used\nto encrypt the generated aezeed cipher seed. When using REST, this field\nmust be encoded as base64."
},
"recovery_window": {
"type": "integer",
"format": "int32",
"description": "*\nrecovery_window is an optional argument specifying the address lookahead\nwhen restoring a wallet seed. The recovery window applies to each\nindividual branch of the BIP44 derivation paths. Supplying a recovery\nwindow of zero indicates that no addresses should be recovered, such after\nthe first initialization of the wallet."
},
"channel_backups": {
"$ref": "#/definitions/lnrpcChanBackupSnapshot",
"description": "*\nchannel_backups is an optional argument that allows clients to recover the\nsettled funds within a set of channels. This should be populated if the\nuser was unable to close out all channels and sweep funds before partial or\ntotal data loss occurred. If specified, then after on-chain recovery of\nfunds, lnd begin to carry out the data loss recovery protocol in order to\nrecover the funds in each channel from a remote force closed transaction."
}
}
},
"lnrpcInitWalletResponse": {
"type": "object"
},
"lnrpcInitiator": {
"type": "string",
"enum": [
@ -4648,28 +4461,6 @@
}
}
},
"lnrpcUnlockWalletRequest": {
"type": "object",
"properties": {
"wallet_password": {
"type": "string",
"format": "byte",
"description": "*\nwallet_password should be the current valid passphrase for the daemon. This\nwill be required to decrypt on-disk material that the daemon requires to\nfunction properly. When using REST, this field must be encoded as base64."
},
"recovery_window": {
"type": "integer",
"format": "int32",
"description": "*\nrecovery_window is an optional argument specifying the address lookahead\nwhen restoring a wallet seed. The recovery window applies to each\nindividual branch of the BIP44 derivation paths. Supplying a recovery\nwindow of zero indicates that no addresses should be recovered, such after\nthe first initialization of the wallet."
},
"channel_backups": {
"$ref": "#/definitions/lnrpcChanBackupSnapshot",
"description": "*\nchannel_backups is an optional argument that allows clients to recover the\nsettled funds within a set of channels. This should be populated if the\nuser was unable to close out all channels and sweep funds before partial or\ntotal data loss occurred. If specified, then after on-chain recovery of\nfunds, lnd begin to carry out the data loss recovery protocol in order to\nrecover the funds in each channel from a remote force closed transaction."
}
}
},
"lnrpcUnlockWalletResponse": {
"type": "object"
},
"lnrpcUtxo": {
"type": "object",
"properties": {

732
lnrpc/walletunlocker.pb.go Normal file
View File

@ -0,0 +1,732 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: walletunlocker.proto
package lnrpc
import (
context "context"
fmt "fmt"
proto "github.com/golang/protobuf/proto"
_ "google.golang.org/genproto/googleapis/api/annotations"
grpc "google.golang.org/grpc"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type GenSeedRequest struct {
//*
//aezeed_passphrase is an optional user provided passphrase that will be used
//to encrypt the generated aezeed cipher seed. When using REST, this field
//must be encoded as base64.
AezeedPassphrase []byte `protobuf:"bytes,1,opt,name=aezeed_passphrase,json=aezeedPassphrase,proto3" json:"aezeed_passphrase,omitempty"`
//*
//seed_entropy is an optional 16-bytes generated via CSPRNG. If not
//specified, then a fresh set of randomness will be used to create the seed.
//When using REST, this field must be encoded as base64.
SeedEntropy []byte `protobuf:"bytes,2,opt,name=seed_entropy,json=seedEntropy,proto3" json:"seed_entropy,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GenSeedRequest) Reset() { *m = GenSeedRequest{} }
func (m *GenSeedRequest) String() string { return proto.CompactTextString(m) }
func (*GenSeedRequest) ProtoMessage() {}
func (*GenSeedRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_76e3ed10ed53e4fd, []int{0}
}
func (m *GenSeedRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GenSeedRequest.Unmarshal(m, b)
}
func (m *GenSeedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GenSeedRequest.Marshal(b, m, deterministic)
}
func (m *GenSeedRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GenSeedRequest.Merge(m, src)
}
func (m *GenSeedRequest) XXX_Size() int {
return xxx_messageInfo_GenSeedRequest.Size(m)
}
func (m *GenSeedRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GenSeedRequest.DiscardUnknown(m)
}
var xxx_messageInfo_GenSeedRequest proto.InternalMessageInfo
func (m *GenSeedRequest) GetAezeedPassphrase() []byte {
if m != nil {
return m.AezeedPassphrase
}
return nil
}
func (m *GenSeedRequest) GetSeedEntropy() []byte {
if m != nil {
return m.SeedEntropy
}
return nil
}
type GenSeedResponse struct {
//*
//cipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed
//cipher seed obtained by the user. This field is optional, as if not
//provided, then the daemon will generate a new cipher seed for the user.
//Otherwise, then the daemon will attempt to recover the wallet state linked
//to this cipher seed.
CipherSeedMnemonic []string `protobuf:"bytes,1,rep,name=cipher_seed_mnemonic,json=cipherSeedMnemonic,proto3" json:"cipher_seed_mnemonic,omitempty"`
//*
//enciphered_seed are the raw aezeed cipher seed bytes. This is the raw
//cipher text before run through our mnemonic encoding scheme.
EncipheredSeed []byte `protobuf:"bytes,2,opt,name=enciphered_seed,json=encipheredSeed,proto3" json:"enciphered_seed,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GenSeedResponse) Reset() { *m = GenSeedResponse{} }
func (m *GenSeedResponse) String() string { return proto.CompactTextString(m) }
func (*GenSeedResponse) ProtoMessage() {}
func (*GenSeedResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_76e3ed10ed53e4fd, []int{1}
}
func (m *GenSeedResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GenSeedResponse.Unmarshal(m, b)
}
func (m *GenSeedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GenSeedResponse.Marshal(b, m, deterministic)
}
func (m *GenSeedResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GenSeedResponse.Merge(m, src)
}
func (m *GenSeedResponse) XXX_Size() int {
return xxx_messageInfo_GenSeedResponse.Size(m)
}
func (m *GenSeedResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GenSeedResponse.DiscardUnknown(m)
}
var xxx_messageInfo_GenSeedResponse proto.InternalMessageInfo
func (m *GenSeedResponse) GetCipherSeedMnemonic() []string {
if m != nil {
return m.CipherSeedMnemonic
}
return nil
}
func (m *GenSeedResponse) GetEncipheredSeed() []byte {
if m != nil {
return m.EncipheredSeed
}
return nil
}
type InitWalletRequest struct {
//*
//wallet_password is the passphrase that should be used to encrypt the
//wallet. This MUST be at least 8 chars in length. After creation, this
//password is required to unlock the daemon. When using REST, this field
//must be encoded as base64.
WalletPassword []byte `protobuf:"bytes,1,opt,name=wallet_password,json=walletPassword,proto3" json:"wallet_password,omitempty"`
//*
//cipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed
//cipher seed obtained by the user. This may have been generated by the
//GenSeed method, or be an existing seed.
CipherSeedMnemonic []string `protobuf:"bytes,2,rep,name=cipher_seed_mnemonic,json=cipherSeedMnemonic,proto3" json:"cipher_seed_mnemonic,omitempty"`
//*
//aezeed_passphrase is an optional user provided passphrase that will be used
//to encrypt the generated aezeed cipher seed. When using REST, this field
//must be encoded as base64.
AezeedPassphrase []byte `protobuf:"bytes,3,opt,name=aezeed_passphrase,json=aezeedPassphrase,proto3" json:"aezeed_passphrase,omitempty"`
//*
//recovery_window is an optional argument specifying the address lookahead
//when restoring a wallet seed. The recovery window applies to each
//individual branch of the BIP44 derivation paths. Supplying a recovery
//window of zero indicates that no addresses should be recovered, such after
//the first initialization of the wallet.
RecoveryWindow int32 `protobuf:"varint,4,opt,name=recovery_window,json=recoveryWindow,proto3" json:"recovery_window,omitempty"`
//*
//channel_backups is an optional argument that allows clients to recover the
//settled funds within a set of channels. This should be populated if the
//user was unable to close out all channels and sweep funds before partial or
//total data loss occurred. If specified, then after on-chain recovery of
//funds, lnd begin to carry out the data loss recovery protocol in order to
//recover the funds in each channel from a remote force closed transaction.
ChannelBackups *ChanBackupSnapshot `protobuf:"bytes,5,opt,name=channel_backups,json=channelBackups,proto3" json:"channel_backups,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *InitWalletRequest) Reset() { *m = InitWalletRequest{} }
func (m *InitWalletRequest) String() string { return proto.CompactTextString(m) }
func (*InitWalletRequest) ProtoMessage() {}
func (*InitWalletRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_76e3ed10ed53e4fd, []int{2}
}
func (m *InitWalletRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InitWalletRequest.Unmarshal(m, b)
}
func (m *InitWalletRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_InitWalletRequest.Marshal(b, m, deterministic)
}
func (m *InitWalletRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_InitWalletRequest.Merge(m, src)
}
func (m *InitWalletRequest) XXX_Size() int {
return xxx_messageInfo_InitWalletRequest.Size(m)
}
func (m *InitWalletRequest) XXX_DiscardUnknown() {
xxx_messageInfo_InitWalletRequest.DiscardUnknown(m)
}
var xxx_messageInfo_InitWalletRequest proto.InternalMessageInfo
func (m *InitWalletRequest) GetWalletPassword() []byte {
if m != nil {
return m.WalletPassword
}
return nil
}
func (m *InitWalletRequest) GetCipherSeedMnemonic() []string {
if m != nil {
return m.CipherSeedMnemonic
}
return nil
}
func (m *InitWalletRequest) GetAezeedPassphrase() []byte {
if m != nil {
return m.AezeedPassphrase
}
return nil
}
func (m *InitWalletRequest) GetRecoveryWindow() int32 {
if m != nil {
return m.RecoveryWindow
}
return 0
}
func (m *InitWalletRequest) GetChannelBackups() *ChanBackupSnapshot {
if m != nil {
return m.ChannelBackups
}
return nil
}
type InitWalletResponse struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *InitWalletResponse) Reset() { *m = InitWalletResponse{} }
func (m *InitWalletResponse) String() string { return proto.CompactTextString(m) }
func (*InitWalletResponse) ProtoMessage() {}
func (*InitWalletResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_76e3ed10ed53e4fd, []int{3}
}
func (m *InitWalletResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InitWalletResponse.Unmarshal(m, b)
}
func (m *InitWalletResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_InitWalletResponse.Marshal(b, m, deterministic)
}
func (m *InitWalletResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_InitWalletResponse.Merge(m, src)
}
func (m *InitWalletResponse) XXX_Size() int {
return xxx_messageInfo_InitWalletResponse.Size(m)
}
func (m *InitWalletResponse) XXX_DiscardUnknown() {
xxx_messageInfo_InitWalletResponse.DiscardUnknown(m)
}
var xxx_messageInfo_InitWalletResponse proto.InternalMessageInfo
type UnlockWalletRequest struct {
//*
//wallet_password should be the current valid passphrase for the daemon. This
//will be required to decrypt on-disk material that the daemon requires to
//function properly. When using REST, this field must be encoded as base64.
WalletPassword []byte `protobuf:"bytes,1,opt,name=wallet_password,json=walletPassword,proto3" json:"wallet_password,omitempty"`
//*
//recovery_window is an optional argument specifying the address lookahead
//when restoring a wallet seed. The recovery window applies to each
//individual branch of the BIP44 derivation paths. Supplying a recovery
//window of zero indicates that no addresses should be recovered, such after
//the first initialization of the wallet.
RecoveryWindow int32 `protobuf:"varint,2,opt,name=recovery_window,json=recoveryWindow,proto3" json:"recovery_window,omitempty"`
//*
//channel_backups is an optional argument that allows clients to recover the
//settled funds within a set of channels. This should be populated if the
//user was unable to close out all channels and sweep funds before partial or
//total data loss occurred. If specified, then after on-chain recovery of
//funds, lnd begin to carry out the data loss recovery protocol in order to
//recover the funds in each channel from a remote force closed transaction.
ChannelBackups *ChanBackupSnapshot `protobuf:"bytes,3,opt,name=channel_backups,json=channelBackups,proto3" json:"channel_backups,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UnlockWalletRequest) Reset() { *m = UnlockWalletRequest{} }
func (m *UnlockWalletRequest) String() string { return proto.CompactTextString(m) }
func (*UnlockWalletRequest) ProtoMessage() {}
func (*UnlockWalletRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_76e3ed10ed53e4fd, []int{4}
}
func (m *UnlockWalletRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UnlockWalletRequest.Unmarshal(m, b)
}
func (m *UnlockWalletRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UnlockWalletRequest.Marshal(b, m, deterministic)
}
func (m *UnlockWalletRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_UnlockWalletRequest.Merge(m, src)
}
func (m *UnlockWalletRequest) XXX_Size() int {
return xxx_messageInfo_UnlockWalletRequest.Size(m)
}
func (m *UnlockWalletRequest) XXX_DiscardUnknown() {
xxx_messageInfo_UnlockWalletRequest.DiscardUnknown(m)
}
var xxx_messageInfo_UnlockWalletRequest proto.InternalMessageInfo
func (m *UnlockWalletRequest) GetWalletPassword() []byte {
if m != nil {
return m.WalletPassword
}
return nil
}
func (m *UnlockWalletRequest) GetRecoveryWindow() int32 {
if m != nil {
return m.RecoveryWindow
}
return 0
}
func (m *UnlockWalletRequest) GetChannelBackups() *ChanBackupSnapshot {
if m != nil {
return m.ChannelBackups
}
return nil
}
type UnlockWalletResponse struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *UnlockWalletResponse) Reset() { *m = UnlockWalletResponse{} }
func (m *UnlockWalletResponse) String() string { return proto.CompactTextString(m) }
func (*UnlockWalletResponse) ProtoMessage() {}
func (*UnlockWalletResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_76e3ed10ed53e4fd, []int{5}
}
func (m *UnlockWalletResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UnlockWalletResponse.Unmarshal(m, b)
}
func (m *UnlockWalletResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_UnlockWalletResponse.Marshal(b, m, deterministic)
}
func (m *UnlockWalletResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_UnlockWalletResponse.Merge(m, src)
}
func (m *UnlockWalletResponse) XXX_Size() int {
return xxx_messageInfo_UnlockWalletResponse.Size(m)
}
func (m *UnlockWalletResponse) XXX_DiscardUnknown() {
xxx_messageInfo_UnlockWalletResponse.DiscardUnknown(m)
}
var xxx_messageInfo_UnlockWalletResponse proto.InternalMessageInfo
type ChangePasswordRequest struct {
//*
//current_password should be the current valid passphrase used to unlock the
//daemon. When using REST, this field must be encoded as base64.
CurrentPassword []byte `protobuf:"bytes,1,opt,name=current_password,json=currentPassword,proto3" json:"current_password,omitempty"`
//*
//new_password should be the new passphrase that will be needed to unlock the
//daemon. When using REST, this field must be encoded as base64.
NewPassword []byte `protobuf:"bytes,2,opt,name=new_password,json=newPassword,proto3" json:"new_password,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ChangePasswordRequest) Reset() { *m = ChangePasswordRequest{} }
func (m *ChangePasswordRequest) String() string { return proto.CompactTextString(m) }
func (*ChangePasswordRequest) ProtoMessage() {}
func (*ChangePasswordRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_76e3ed10ed53e4fd, []int{6}
}
func (m *ChangePasswordRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChangePasswordRequest.Unmarshal(m, b)
}
func (m *ChangePasswordRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ChangePasswordRequest.Marshal(b, m, deterministic)
}
func (m *ChangePasswordRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ChangePasswordRequest.Merge(m, src)
}
func (m *ChangePasswordRequest) XXX_Size() int {
return xxx_messageInfo_ChangePasswordRequest.Size(m)
}
func (m *ChangePasswordRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ChangePasswordRequest.DiscardUnknown(m)
}
var xxx_messageInfo_ChangePasswordRequest proto.InternalMessageInfo
func (m *ChangePasswordRequest) GetCurrentPassword() []byte {
if m != nil {
return m.CurrentPassword
}
return nil
}
func (m *ChangePasswordRequest) GetNewPassword() []byte {
if m != nil {
return m.NewPassword
}
return nil
}
type ChangePasswordResponse struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ChangePasswordResponse) Reset() { *m = ChangePasswordResponse{} }
func (m *ChangePasswordResponse) String() string { return proto.CompactTextString(m) }
func (*ChangePasswordResponse) ProtoMessage() {}
func (*ChangePasswordResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_76e3ed10ed53e4fd, []int{7}
}
func (m *ChangePasswordResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChangePasswordResponse.Unmarshal(m, b)
}
func (m *ChangePasswordResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ChangePasswordResponse.Marshal(b, m, deterministic)
}
func (m *ChangePasswordResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ChangePasswordResponse.Merge(m, src)
}
func (m *ChangePasswordResponse) XXX_Size() int {
return xxx_messageInfo_ChangePasswordResponse.Size(m)
}
func (m *ChangePasswordResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ChangePasswordResponse.DiscardUnknown(m)
}
var xxx_messageInfo_ChangePasswordResponse proto.InternalMessageInfo
func init() {
proto.RegisterType((*GenSeedRequest)(nil), "lnrpc.GenSeedRequest")
proto.RegisterType((*GenSeedResponse)(nil), "lnrpc.GenSeedResponse")
proto.RegisterType((*InitWalletRequest)(nil), "lnrpc.InitWalletRequest")
proto.RegisterType((*InitWalletResponse)(nil), "lnrpc.InitWalletResponse")
proto.RegisterType((*UnlockWalletRequest)(nil), "lnrpc.UnlockWalletRequest")
proto.RegisterType((*UnlockWalletResponse)(nil), "lnrpc.UnlockWalletResponse")
proto.RegisterType((*ChangePasswordRequest)(nil), "lnrpc.ChangePasswordRequest")
proto.RegisterType((*ChangePasswordResponse)(nil), "lnrpc.ChangePasswordResponse")
}
func init() { proto.RegisterFile("walletunlocker.proto", fileDescriptor_76e3ed10ed53e4fd) }
var fileDescriptor_76e3ed10ed53e4fd = []byte{
// 595 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x54, 0xdf, 0x4a, 0xdc, 0x4e,
0x14, 0x26, 0xbb, 0x3f, 0x7f, 0xc5, 0xe3, 0x36, 0xd1, 0x71, 0xb5, 0x31, 0x2a, 0xac, 0x81, 0xb2,
0x5b, 0x0b, 0x9b, 0xd6, 0xde, 0x79, 0x69, 0x29, 0xa5, 0x17, 0x82, 0xac, 0x88, 0x50, 0x0a, 0xdb,
0x98, 0x1c, 0x92, 0x60, 0x3c, 0x93, 0x4e, 0x66, 0x0d, 0xf6, 0xb2, 0x57, 0xbd, 0x2d, 0x7d, 0x8c,
0x3e, 0x4e, 0x5f, 0xa1, 0x0f, 0x52, 0x32, 0x33, 0x71, 0xd5, 0xdd, 0x85, 0xb6, 0x77, 0xe1, 0x3b,
0x7f, 0xbe, 0xf3, 0x7d, 0xe7, 0x64, 0xa0, 0x5b, 0x85, 0x79, 0x8e, 0x72, 0x42, 0x39, 0x8f, 0x2e,
0x51, 0x0c, 0x0b, 0xc1, 0x25, 0x67, 0x4b, 0x39, 0x89, 0x22, 0xf2, 0x76, 0x12, 0xce, 0x93, 0x1c,
0x83, 0xb0, 0xc8, 0x82, 0x90, 0x88, 0xcb, 0x50, 0x66, 0x9c, 0x4a, 0x9d, 0xe4, 0x2d, 0x8b, 0x22,
0xd2, 0x9f, 0xfe, 0x47, 0xb0, 0xdf, 0x22, 0x9d, 0x22, 0xc6, 0x23, 0xfc, 0x34, 0xc1, 0x52, 0xb2,
0xe7, 0xb0, 0x16, 0xe2, 0x67, 0xc4, 0x78, 0x5c, 0x84, 0x65, 0x59, 0xa4, 0x22, 0x2c, 0xd1, 0xb5,
0x7a, 0xd6, 0xa0, 0x33, 0x5a, 0xd5, 0x81, 0x93, 0x5b, 0x9c, 0xed, 0x41, 0xa7, 0xac, 0x53, 0x91,
0xa4, 0xe0, 0xc5, 0x8d, 0xdb, 0x52, 0x79, 0x2b, 0x35, 0xf6, 0x46, 0x43, 0x7e, 0x0e, 0xce, 0x2d,
0x43, 0x59, 0x70, 0x2a, 0x91, 0xbd, 0x80, 0x6e, 0x94, 0x15, 0x29, 0x8a, 0xb1, 0x2a, 0xbe, 0x22,
0xbc, 0xe2, 0x94, 0x45, 0xae, 0xd5, 0x6b, 0x0f, 0x96, 0x47, 0x4c, 0xc7, 0xea, 0x8a, 0x63, 0x13,
0x61, 0x7d, 0x70, 0x90, 0x34, 0x8e, 0xb1, 0xaa, 0x32, 0x54, 0xf6, 0x14, 0xae, 0x0b, 0xfc, 0xaf,
0x2d, 0x58, 0x7b, 0x47, 0x99, 0x3c, 0x57, 0xe6, 0x34, 0x9a, 0xfa, 0xe0, 0x68, 0xb7, 0x94, 0xa6,
0x8a, 0x8b, 0xd8, 0x28, 0xb2, 0x35, 0x7c, 0x62, 0xd0, 0x85, 0x93, 0xb5, 0x16, 0x4e, 0x36, 0xd7,
0xae, 0xf6, 0x02, 0xbb, 0xfa, 0xe0, 0x08, 0x8c, 0xf8, 0x35, 0x8a, 0x9b, 0x71, 0x95, 0x51, 0xcc,
0x2b, 0xf7, 0xbf, 0x9e, 0x35, 0x58, 0x1a, 0xd9, 0x0d, 0x7c, 0xae, 0x50, 0x76, 0x04, 0x4e, 0x94,
0x86, 0x44, 0x98, 0x8f, 0x2f, 0xc2, 0xe8, 0x72, 0x52, 0x94, 0xee, 0x52, 0xcf, 0x1a, 0xac, 0x1c,
0x6c, 0x0d, 0xd5, 0x82, 0x87, 0xaf, 0xd3, 0x90, 0x8e, 0x54, 0xe4, 0x94, 0xc2, 0xa2, 0x4c, 0xb9,
0x1c, 0xd9, 0xa6, 0x42, 0xc3, 0xa5, 0xdf, 0x05, 0x76, 0xd7, 0x09, 0xed, 0xbd, 0xff, 0xc3, 0x82,
0xf5, 0x33, 0x75, 0x33, 0xff, 0x68, 0xd1, 0x1c, 0x0d, 0xad, 0x3f, 0xd5, 0xd0, 0xfe, 0x5b, 0x0d,
0x9b, 0xd0, 0xbd, 0x3f, 0xac, 0x51, 0x81, 0xb0, 0x51, 0x57, 0x27, 0xd8, 0x8c, 0xd5, 0xc8, 0x78,
0x06, 0xab, 0xd1, 0x44, 0x08, 0xa4, 0x19, 0x1d, 0x8e, 0xc1, 0x6f, 0x85, 0xec, 0x41, 0x87, 0xb0,
0x9a, 0xa6, 0x99, 0xdb, 0x25, 0xac, 0x9a, 0x14, 0xdf, 0x85, 0xcd, 0x87, 0x34, 0x7a, 0x80, 0x83,
0x6f, 0x6d, 0xb0, 0xf5, 0x4c, 0x67, 0xe6, 0x07, 0x64, 0xc7, 0xf0, 0xc8, 0x1c, 0x3a, 0xdb, 0x30,
0x0a, 0xef, 0xff, 0x5a, 0xde, 0xe6, 0x43, 0xd8, 0xa8, 0x59, 0xff, 0xf2, 0xf3, 0xd7, 0xf7, 0xd6,
0x63, 0xb6, 0x12, 0x5c, 0xbf, 0x0c, 0x12, 0xa4, 0xfa, 0xf6, 0xd8, 0x07, 0x80, 0xe9, 0xfa, 0x98,
0x6b, 0x4a, 0x67, 0x6e, 0xdb, 0xdb, 0x9a, 0x13, 0x31, 0x7d, 0xb7, 0x54, 0xdf, 0x75, 0xdf, 0xae,
0xfb, 0x66, 0x94, 0x49, 0xbd, 0xca, 0x43, 0x6b, 0x9f, 0xc5, 0xd0, 0xb9, 0x6b, 0x2c, 0xf3, 0x4c,
0x97, 0x39, 0xa7, 0xe1, 0x6d, 0xcf, 0x8d, 0x19, 0x8e, 0x6d, 0xc5, 0xb1, 0xe1, 0xaf, 0xd6, 0x1c,
0xfa, 0x31, 0x9a, 0xb2, 0xe4, 0x60, 0xdf, 0xf7, 0x8f, 0xed, 0xdc, 0xd9, 0xfd, 0xcc, 0xf6, 0xbc,
0xdd, 0x05, 0x51, 0xc3, 0xb5, 0xab, 0xb8, 0x9e, 0xf8, 0xac, 0xe6, 0x8a, 0x54, 0x4e, 0xb3, 0xbd,
0x43, 0x6b, 0xff, 0xa8, 0xff, 0xfe, 0x69, 0x92, 0xc9, 0x74, 0x72, 0x31, 0x8c, 0xf8, 0x55, 0x90,
0x67, 0x49, 0x2a, 0x29, 0xa3, 0x84, 0x50, 0x56, 0x5c, 0x5c, 0x06, 0x39, 0xc5, 0x81, 0x6a, 0x7f,
0xf1, 0xbf, 0x7a, 0xfb, 0x5e, 0xfd, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x9c, 0xfa, 0x8d, 0x9e, 0x43,
0x05, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// WalletUnlockerClient is the client API for WalletUnlocker service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type WalletUnlockerClient interface {
//*
//GenSeed is the first method that should be used to instantiate a new lnd
//instance. This method allows a caller to generate a new aezeed cipher seed
//given an optional passphrase. If provided, the passphrase will be necessary
//to decrypt the cipherseed to expose the internal wallet seed.
//
//Once the cipherseed is obtained and verified by the user, the InitWallet
//method should be used to commit the newly generated seed, and create the
//wallet.
GenSeed(ctx context.Context, in *GenSeedRequest, opts ...grpc.CallOption) (*GenSeedResponse, error)
//*
//InitWallet is used when lnd is starting up for the first time to fully
//initialize the daemon and its internal wallet. At the very least a wallet
//password must be provided. This will be used to encrypt sensitive material
//on disk.
//
//In the case of a recovery scenario, the user can also specify their aezeed
//mnemonic and passphrase. If set, then the daemon will use this prior state
//to initialize its internal wallet.
//
//Alternatively, this can be used along with the GenSeed RPC to obtain a
//seed, then present it to the user. Once it has been verified by the user,
//the seed can be fed into this RPC in order to commit the new wallet.
InitWallet(ctx context.Context, in *InitWalletRequest, opts ...grpc.CallOption) (*InitWalletResponse, error)
//* lncli: `unlock`
//UnlockWallet is used at startup of lnd to provide a password to unlock
//the wallet database.
UnlockWallet(ctx context.Context, in *UnlockWalletRequest, opts ...grpc.CallOption) (*UnlockWalletResponse, error)
//* lncli: `changepassword`
//ChangePassword changes the password of the encrypted wallet. This will
//automatically unlock the wallet database if successful.
ChangePassword(ctx context.Context, in *ChangePasswordRequest, opts ...grpc.CallOption) (*ChangePasswordResponse, error)
}
type walletUnlockerClient struct {
cc *grpc.ClientConn
}
func NewWalletUnlockerClient(cc *grpc.ClientConn) WalletUnlockerClient {
return &walletUnlockerClient{cc}
}
func (c *walletUnlockerClient) GenSeed(ctx context.Context, in *GenSeedRequest, opts ...grpc.CallOption) (*GenSeedResponse, error) {
out := new(GenSeedResponse)
err := c.cc.Invoke(ctx, "/lnrpc.WalletUnlocker/GenSeed", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *walletUnlockerClient) InitWallet(ctx context.Context, in *InitWalletRequest, opts ...grpc.CallOption) (*InitWalletResponse, error) {
out := new(InitWalletResponse)
err := c.cc.Invoke(ctx, "/lnrpc.WalletUnlocker/InitWallet", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *walletUnlockerClient) UnlockWallet(ctx context.Context, in *UnlockWalletRequest, opts ...grpc.CallOption) (*UnlockWalletResponse, error) {
out := new(UnlockWalletResponse)
err := c.cc.Invoke(ctx, "/lnrpc.WalletUnlocker/UnlockWallet", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *walletUnlockerClient) ChangePassword(ctx context.Context, in *ChangePasswordRequest, opts ...grpc.CallOption) (*ChangePasswordResponse, error) {
out := new(ChangePasswordResponse)
err := c.cc.Invoke(ctx, "/lnrpc.WalletUnlocker/ChangePassword", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// WalletUnlockerServer is the server API for WalletUnlocker service.
type WalletUnlockerServer interface {
//*
//GenSeed is the first method that should be used to instantiate a new lnd
//instance. This method allows a caller to generate a new aezeed cipher seed
//given an optional passphrase. If provided, the passphrase will be necessary
//to decrypt the cipherseed to expose the internal wallet seed.
//
//Once the cipherseed is obtained and verified by the user, the InitWallet
//method should be used to commit the newly generated seed, and create the
//wallet.
GenSeed(context.Context, *GenSeedRequest) (*GenSeedResponse, error)
//*
//InitWallet is used when lnd is starting up for the first time to fully
//initialize the daemon and its internal wallet. At the very least a wallet
//password must be provided. This will be used to encrypt sensitive material
//on disk.
//
//In the case of a recovery scenario, the user can also specify their aezeed
//mnemonic and passphrase. If set, then the daemon will use this prior state
//to initialize its internal wallet.
//
//Alternatively, this can be used along with the GenSeed RPC to obtain a
//seed, then present it to the user. Once it has been verified by the user,
//the seed can be fed into this RPC in order to commit the new wallet.
InitWallet(context.Context, *InitWalletRequest) (*InitWalletResponse, error)
//* lncli: `unlock`
//UnlockWallet is used at startup of lnd to provide a password to unlock
//the wallet database.
UnlockWallet(context.Context, *UnlockWalletRequest) (*UnlockWalletResponse, error)
//* lncli: `changepassword`
//ChangePassword changes the password of the encrypted wallet. This will
//automatically unlock the wallet database if successful.
ChangePassword(context.Context, *ChangePasswordRequest) (*ChangePasswordResponse, error)
}
func RegisterWalletUnlockerServer(s *grpc.Server, srv WalletUnlockerServer) {
s.RegisterService(&_WalletUnlocker_serviceDesc, srv)
}
func _WalletUnlocker_GenSeed_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GenSeedRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WalletUnlockerServer).GenSeed(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/lnrpc.WalletUnlocker/GenSeed",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WalletUnlockerServer).GenSeed(ctx, req.(*GenSeedRequest))
}
return interceptor(ctx, in, info, handler)
}
func _WalletUnlocker_InitWallet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(InitWalletRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WalletUnlockerServer).InitWallet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/lnrpc.WalletUnlocker/InitWallet",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WalletUnlockerServer).InitWallet(ctx, req.(*InitWalletRequest))
}
return interceptor(ctx, in, info, handler)
}
func _WalletUnlocker_UnlockWallet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UnlockWalletRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WalletUnlockerServer).UnlockWallet(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/lnrpc.WalletUnlocker/UnlockWallet",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WalletUnlockerServer).UnlockWallet(ctx, req.(*UnlockWalletRequest))
}
return interceptor(ctx, in, info, handler)
}
func _WalletUnlocker_ChangePassword_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ChangePasswordRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(WalletUnlockerServer).ChangePassword(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/lnrpc.WalletUnlocker/ChangePassword",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(WalletUnlockerServer).ChangePassword(ctx, req.(*ChangePasswordRequest))
}
return interceptor(ctx, in, info, handler)
}
var _WalletUnlocker_serviceDesc = grpc.ServiceDesc{
ServiceName: "lnrpc.WalletUnlocker",
HandlerType: (*WalletUnlockerServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "GenSeed",
Handler: _WalletUnlocker_GenSeed_Handler,
},
{
MethodName: "InitWallet",
Handler: _WalletUnlocker_InitWallet_Handler,
},
{
MethodName: "UnlockWallet",
Handler: _WalletUnlocker_UnlockWallet_Handler,
},
{
MethodName: "ChangePassword",
Handler: _WalletUnlocker_ChangePassword_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "walletunlocker.proto",
}

View File

@ -0,0 +1,238 @@
// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: walletunlocker.proto
/*
Package lnrpc is a reverse proxy.
It translates gRPC into RESTful JSON APIs.
*/
package lnrpc
import (
"context"
"io"
"net/http"
"github.com/golang/protobuf/proto"
"github.com/grpc-ecosystem/grpc-gateway/runtime"
"github.com/grpc-ecosystem/grpc-gateway/utilities"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/grpclog"
"google.golang.org/grpc/status"
)
var _ codes.Code
var _ io.Reader
var _ status.Status
var _ = runtime.String
var _ = utilities.NewDoubleArray
var (
filter_WalletUnlocker_GenSeed_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
func request_WalletUnlocker_GenSeed_0(ctx context.Context, marshaler runtime.Marshaler, client WalletUnlockerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq GenSeedRequest
var metadata runtime.ServerMetadata
if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_WalletUnlocker_GenSeed_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.GenSeed(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func request_WalletUnlocker_InitWallet_0(ctx context.Context, marshaler runtime.Marshaler, client WalletUnlockerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq InitWalletRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.InitWallet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func request_WalletUnlocker_UnlockWallet_0(ctx context.Context, marshaler runtime.Marshaler, client WalletUnlockerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq UnlockWalletRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.UnlockWallet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func request_WalletUnlocker_ChangePassword_0(ctx context.Context, marshaler runtime.Marshaler, client WalletUnlockerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq ChangePasswordRequest
var metadata runtime.ServerMetadata
newReader, berr := utilities.IOReaderFactory(req.Body)
if berr != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
}
if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.ChangePassword(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
// RegisterWalletUnlockerHandlerFromEndpoint is same as RegisterWalletUnlockerHandler but
// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
func RegisterWalletUnlockerHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
conn, err := grpc.Dial(endpoint, opts...)
if err != nil {
return err
}
defer func() {
if err != nil {
if cerr := conn.Close(); cerr != nil {
grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
}
return
}
go func() {
<-ctx.Done()
if cerr := conn.Close(); cerr != nil {
grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr)
}
}()
}()
return RegisterWalletUnlockerHandler(ctx, mux, conn)
}
// RegisterWalletUnlockerHandler registers the http handlers for service WalletUnlocker to "mux".
// The handlers forward requests to the grpc endpoint over "conn".
func RegisterWalletUnlockerHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
return RegisterWalletUnlockerHandlerClient(ctx, mux, NewWalletUnlockerClient(conn))
}
// RegisterWalletUnlockerHandlerClient registers the http handlers for service WalletUnlocker
// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "WalletUnlockerClient".
// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "WalletUnlockerClient"
// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
// "WalletUnlockerClient" to call the correct interceptors.
func RegisterWalletUnlockerHandlerClient(ctx context.Context, mux *runtime.ServeMux, client WalletUnlockerClient) error {
mux.Handle("GET", pattern_WalletUnlocker_GenSeed_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_WalletUnlocker_GenSeed_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_WalletUnlocker_GenSeed_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_WalletUnlocker_InitWallet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_WalletUnlocker_InitWallet_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_WalletUnlocker_InitWallet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_WalletUnlocker_UnlockWallet_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_WalletUnlocker_UnlockWallet_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_WalletUnlocker_UnlockWallet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("POST", pattern_WalletUnlocker_ChangePassword_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_WalletUnlocker_ChangePassword_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_WalletUnlocker_ChangePassword_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil
}
var (
pattern_WalletUnlocker_GenSeed_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "genseed"}, ""))
pattern_WalletUnlocker_InitWallet_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "initwallet"}, ""))
pattern_WalletUnlocker_UnlockWallet_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "unlockwallet"}, ""))
pattern_WalletUnlocker_ChangePassword_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "changepassword"}, ""))
)
var (
forward_WalletUnlocker_GenSeed_0 = runtime.ForwardResponseMessage
forward_WalletUnlocker_InitWallet_0 = runtime.ForwardResponseMessage
forward_WalletUnlocker_UnlockWallet_0 = runtime.ForwardResponseMessage
forward_WalletUnlocker_ChangePassword_0 = runtime.ForwardResponseMessage
)

217
lnrpc/walletunlocker.proto Normal file
View File

@ -0,0 +1,217 @@
syntax = "proto3";
import "google/api/annotations.proto";
import "rpc.proto";
package lnrpc;
option go_package = "github.com/lightningnetwork/lnd/lnrpc";
/**
* Comments in this file will be directly parsed into the API
* Documentation as descriptions of the associated method, message, or field.
* These descriptions should go right above the definition of the object, and
* can be in either block or /// comment format.
*
* One edge case exists where a // comment followed by a /// comment in the
* next line will cause the description not to show up in the documentation. In
* that instance, simply separate the two comments with a blank line.
*
* An RPC method can be matched to an lncli command by placing a line in the
* beginning of the description in exactly the following format:
* lncli: `methodname`
*
* Failure to specify the exact name of the command will cause documentation
* generation to fail.
*
* More information on how exactly the gRPC documentation is generated from
* this proto file can be found here:
* https://github.com/lightninglabs/lightning-api
*/
// WalletUnlocker is a service that is used to set up a wallet password for
// lnd at first startup, and unlock a previously set up wallet.
service WalletUnlocker {
/**
GenSeed is the first method that should be used to instantiate a new lnd
instance. This method allows a caller to generate a new aezeed cipher seed
given an optional passphrase. If provided, the passphrase will be necessary
to decrypt the cipherseed to expose the internal wallet seed.
Once the cipherseed is obtained and verified by the user, the InitWallet
method should be used to commit the newly generated seed, and create the
wallet.
*/
rpc GenSeed (GenSeedRequest) returns (GenSeedResponse) {
option (google.api.http) = {
get: "/v1/genseed"
};
}
/**
InitWallet is used when lnd is starting up for the first time to fully
initialize the daemon and its internal wallet. At the very least a wallet
password must be provided. This will be used to encrypt sensitive material
on disk.
In the case of a recovery scenario, the user can also specify their aezeed
mnemonic and passphrase. If set, then the daemon will use this prior state
to initialize its internal wallet.
Alternatively, this can be used along with the GenSeed RPC to obtain a
seed, then present it to the user. Once it has been verified by the user,
the seed can be fed into this RPC in order to commit the new wallet.
*/
rpc InitWallet (InitWalletRequest) returns (InitWalletResponse) {
option (google.api.http) = {
post: "/v1/initwallet"
body: "*"
};
}
/** lncli: `unlock`
UnlockWallet is used at startup of lnd to provide a password to unlock
the wallet database.
*/
rpc UnlockWallet (UnlockWalletRequest) returns (UnlockWalletResponse) {
option (google.api.http) = {
post: "/v1/unlockwallet"
body: "*"
};
}
/** lncli: `changepassword`
ChangePassword changes the password of the encrypted wallet. This will
automatically unlock the wallet database if successful.
*/
rpc ChangePassword (ChangePasswordRequest)
returns (ChangePasswordResponse) {
option (google.api.http) = {
post: "/v1/changepassword"
body: "*"
};
}
}
message GenSeedRequest {
/**
aezeed_passphrase is an optional user provided passphrase that will be used
to encrypt the generated aezeed cipher seed. When using REST, this field
must be encoded as base64.
*/
bytes aezeed_passphrase = 1;
/**
seed_entropy is an optional 16-bytes generated via CSPRNG. If not
specified, then a fresh set of randomness will be used to create the seed.
When using REST, this field must be encoded as base64.
*/
bytes seed_entropy = 2;
}
message GenSeedResponse {
/**
cipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed
cipher seed obtained by the user. This field is optional, as if not
provided, then the daemon will generate a new cipher seed for the user.
Otherwise, then the daemon will attempt to recover the wallet state linked
to this cipher seed.
*/
repeated string cipher_seed_mnemonic = 1;
/**
enciphered_seed are the raw aezeed cipher seed bytes. This is the raw
cipher text before run through our mnemonic encoding scheme.
*/
bytes enciphered_seed = 2;
}
message InitWalletRequest {
/**
wallet_password is the passphrase that should be used to encrypt the
wallet. This MUST be at least 8 chars in length. After creation, this
password is required to unlock the daemon. When using REST, this field
must be encoded as base64.
*/
bytes wallet_password = 1;
/**
cipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed
cipher seed obtained by the user. This may have been generated by the
GenSeed method, or be an existing seed.
*/
repeated string cipher_seed_mnemonic = 2;
/**
aezeed_passphrase is an optional user provided passphrase that will be used
to encrypt the generated aezeed cipher seed. When using REST, this field
must be encoded as base64.
*/
bytes aezeed_passphrase = 3;
/**
recovery_window is an optional argument specifying the address lookahead
when restoring a wallet seed. The recovery window applies to each
individual branch of the BIP44 derivation paths. Supplying a recovery
window of zero indicates that no addresses should be recovered, such after
the first initialization of the wallet.
*/
int32 recovery_window = 4;
/**
channel_backups is an optional argument that allows clients to recover the
settled funds within a set of channels. This should be populated if the
user was unable to close out all channels and sweep funds before partial or
total data loss occurred. If specified, then after on-chain recovery of
funds, lnd begin to carry out the data loss recovery protocol in order to
recover the funds in each channel from a remote force closed transaction.
*/
ChanBackupSnapshot channel_backups = 5;
}
message InitWalletResponse {
}
message UnlockWalletRequest {
/**
wallet_password should be the current valid passphrase for the daemon. This
will be required to decrypt on-disk material that the daemon requires to
function properly. When using REST, this field must be encoded as base64.
*/
bytes wallet_password = 1;
/**
recovery_window is an optional argument specifying the address lookahead
when restoring a wallet seed. The recovery window applies to each
individual branch of the BIP44 derivation paths. Supplying a recovery
window of zero indicates that no addresses should be recovered, such after
the first initialization of the wallet.
*/
int32 recovery_window = 2;
/**
channel_backups is an optional argument that allows clients to recover the
settled funds within a set of channels. This should be populated if the
user was unable to close out all channels and sweep funds before partial or
total data loss occurred. If specified, then after on-chain recovery of
funds, lnd begin to carry out the data loss recovery protocol in order to
recover the funds in each channel from a remote force closed transaction.
*/
ChanBackupSnapshot channel_backups = 3;
}
message UnlockWalletResponse {
}
message ChangePasswordRequest {
/**
current_password should be the current valid passphrase used to unlock the
daemon. When using REST, this field must be encoded as base64.
*/
bytes current_password = 1;
/**
new_password should be the new passphrase that will be needed to unlock the
daemon. When using REST, this field must be encoded as base64.
*/
bytes new_password = 2;
}
message ChangePasswordResponse {
}

View File

@ -0,0 +1,305 @@
{
"swagger": "2.0",
"info": {
"title": "walletunlocker.proto",
"version": "version not set"
},
"schemes": [
"http",
"https"
],
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"paths": {
"/v1/changepassword": {
"post": {
"summary": "* lncli: `changepassword`\nChangePassword changes the password of the encrypted wallet. This will\nautomatically unlock the wallet database if successful.",
"operationId": "ChangePassword",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/lnrpcChangePasswordResponse"
}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/lnrpcChangePasswordRequest"
}
}
],
"tags": [
"WalletUnlocker"
]
}
},
"/v1/genseed": {
"get": {
"summary": "*\nGenSeed is the first method that should be used to instantiate a new lnd\ninstance. This method allows a caller to generate a new aezeed cipher seed\ngiven an optional passphrase. If provided, the passphrase will be necessary\nto decrypt the cipherseed to expose the internal wallet seed.",
"description": "Once the cipherseed is obtained and verified by the user, the InitWallet\nmethod should be used to commit the newly generated seed, and create the\nwallet.",
"operationId": "GenSeed",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/lnrpcGenSeedResponse"
}
}
},
"parameters": [
{
"name": "aezeed_passphrase",
"description": "*\naezeed_passphrase is an optional user provided passphrase that will be used\nto encrypt the generated aezeed cipher seed. When using REST, this field\nmust be encoded as base64.",
"in": "query",
"required": false,
"type": "string",
"format": "byte"
},
{
"name": "seed_entropy",
"description": "*\nseed_entropy is an optional 16-bytes generated via CSPRNG. If not\nspecified, then a fresh set of randomness will be used to create the seed.\nWhen using REST, this field must be encoded as base64.",
"in": "query",
"required": false,
"type": "string",
"format": "byte"
}
],
"tags": [
"WalletUnlocker"
]
}
},
"/v1/initwallet": {
"post": {
"summary": "*\nInitWallet is used when lnd is starting up for the first time to fully\ninitialize the daemon and its internal wallet. At the very least a wallet\npassword must be provided. This will be used to encrypt sensitive material\non disk.",
"description": "In the case of a recovery scenario, the user can also specify their aezeed\nmnemonic and passphrase. If set, then the daemon will use this prior state\nto initialize its internal wallet.\n\nAlternatively, this can be used along with the GenSeed RPC to obtain a\nseed, then present it to the user. Once it has been verified by the user,\nthe seed can be fed into this RPC in order to commit the new wallet.",
"operationId": "InitWallet",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/lnrpcInitWalletResponse"
}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/lnrpcInitWalletRequest"
}
}
],
"tags": [
"WalletUnlocker"
]
}
},
"/v1/unlockwallet": {
"post": {
"summary": "* lncli: `unlock`\nUnlockWallet is used at startup of lnd to provide a password to unlock\nthe wallet database.",
"operationId": "UnlockWallet",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/lnrpcUnlockWalletResponse"
}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/lnrpcUnlockWalletRequest"
}
}
],
"tags": [
"WalletUnlocker"
]
}
}
},
"definitions": {
"lnrpcChanBackupSnapshot": {
"type": "object",
"properties": {
"single_chan_backups": {
"$ref": "#/definitions/lnrpcChannelBackups",
"description": "*\nThe set of new channels that have been added since the last channel backup\nsnapshot was requested."
},
"multi_chan_backup": {
"$ref": "#/definitions/lnrpcMultiChanBackup",
"description": "*\nA multi-channel backup that covers all open channels currently known to\nlnd."
}
}
},
"lnrpcChangePasswordRequest": {
"type": "object",
"properties": {
"current_password": {
"type": "string",
"format": "byte",
"description": "*\ncurrent_password should be the current valid passphrase used to unlock the\ndaemon. When using REST, this field must be encoded as base64."
},
"new_password": {
"type": "string",
"format": "byte",
"description": "*\nnew_password should be the new passphrase that will be needed to unlock the\ndaemon. When using REST, this field must be encoded as base64."
}
}
},
"lnrpcChangePasswordResponse": {
"type": "object"
},
"lnrpcChannelBackup": {
"type": "object",
"properties": {
"chan_point": {
"$ref": "#/definitions/lnrpcChannelPoint",
"description": "*\nIdentifies the channel that this backup belongs to."
},
"chan_backup": {
"type": "string",
"format": "byte",
"description": "*\nIs an encrypted single-chan backup. this can be passed to\nRestoreChannelBackups, or the WalletUnlocker Init and Unlock methods in\norder to trigger the recovery protocol. When using REST, this field must be\nencoded as base64."
}
}
},
"lnrpcChannelBackups": {
"type": "object",
"properties": {
"chan_backups": {
"type": "array",
"items": {
"$ref": "#/definitions/lnrpcChannelBackup"
},
"description": "*\nA set of single-chan static channel backups."
}
}
},
"lnrpcChannelPoint": {
"type": "object",
"properties": {
"funding_txid_bytes": {
"type": "string",
"format": "byte",
"description": "*\nTxid of the funding transaction. When using REST, this field must be\nencoded as base64."
},
"funding_txid_str": {
"type": "string",
"description": "*\nHex-encoded string representing the byte-reversed hash of the funding\ntransaction."
},
"output_index": {
"type": "integer",
"format": "int64",
"title": "/ The index of the output of the funding transaction"
}
}
},
"lnrpcGenSeedResponse": {
"type": "object",
"properties": {
"cipher_seed_mnemonic": {
"type": "array",
"items": {
"type": "string"
},
"description": "*\ncipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed\ncipher seed obtained by the user. This field is optional, as if not\nprovided, then the daemon will generate a new cipher seed for the user.\nOtherwise, then the daemon will attempt to recover the wallet state linked\nto this cipher seed."
},
"enciphered_seed": {
"type": "string",
"format": "byte",
"description": "*\nenciphered_seed are the raw aezeed cipher seed bytes. This is the raw\ncipher text before run through our mnemonic encoding scheme."
}
}
},
"lnrpcInitWalletRequest": {
"type": "object",
"properties": {
"wallet_password": {
"type": "string",
"format": "byte",
"description": "*\nwallet_password is the passphrase that should be used to encrypt the\nwallet. This MUST be at least 8 chars in length. After creation, this\npassword is required to unlock the daemon. When using REST, this field\nmust be encoded as base64."
},
"cipher_seed_mnemonic": {
"type": "array",
"items": {
"type": "string"
},
"description": "*\ncipher_seed_mnemonic is a 24-word mnemonic that encodes a prior aezeed\ncipher seed obtained by the user. This may have been generated by the\nGenSeed method, or be an existing seed."
},
"aezeed_passphrase": {
"type": "string",
"format": "byte",
"description": "*\naezeed_passphrase is an optional user provided passphrase that will be used\nto encrypt the generated aezeed cipher seed. When using REST, this field\nmust be encoded as base64."
},
"recovery_window": {
"type": "integer",
"format": "int32",
"description": "*\nrecovery_window is an optional argument specifying the address lookahead\nwhen restoring a wallet seed. The recovery window applies to each\nindividual branch of the BIP44 derivation paths. Supplying a recovery\nwindow of zero indicates that no addresses should be recovered, such after\nthe first initialization of the wallet."
},
"channel_backups": {
"$ref": "#/definitions/lnrpcChanBackupSnapshot",
"description": "*\nchannel_backups is an optional argument that allows clients to recover the\nsettled funds within a set of channels. This should be populated if the\nuser was unable to close out all channels and sweep funds before partial or\ntotal data loss occurred. If specified, then after on-chain recovery of\nfunds, lnd begin to carry out the data loss recovery protocol in order to\nrecover the funds in each channel from a remote force closed transaction."
}
}
},
"lnrpcInitWalletResponse": {
"type": "object"
},
"lnrpcMultiChanBackup": {
"type": "object",
"properties": {
"chan_points": {
"type": "array",
"items": {
"$ref": "#/definitions/lnrpcChannelPoint"
},
"description": "*\nIs the set of all channels that are included in this multi-channel backup."
},
"multi_chan_backup": {
"type": "string",
"format": "byte",
"description": "*\nA single encrypted blob containing all the static channel backups of the\nchannel listed above. This can be stored as a single file or blob, and\nsafely be replaced with any prior/future versions. When using REST, this\nfield must be encoded as base64."
}
}
},
"lnrpcUnlockWalletRequest": {
"type": "object",
"properties": {
"wallet_password": {
"type": "string",
"format": "byte",
"description": "*\nwallet_password should be the current valid passphrase for the daemon. This\nwill be required to decrypt on-disk material that the daemon requires to\nfunction properly. When using REST, this field must be encoded as base64."
},
"recovery_window": {
"type": "integer",
"format": "int32",
"description": "*\nrecovery_window is an optional argument specifying the address lookahead\nwhen restoring a wallet seed. The recovery window applies to each\nindividual branch of the BIP44 derivation paths. Supplying a recovery\nwindow of zero indicates that no addresses should be recovered, such after\nthe first initialization of the wallet."
},
"channel_backups": {
"$ref": "#/definitions/lnrpcChanBackupSnapshot",
"description": "*\nchannel_backups is an optional argument that allows clients to recover the\nsettled funds within a set of channels. This should be populated if the\nuser was unable to close out all channels and sweep funds before partial or\ntotal data loss occurred. If specified, then after on-chain recovery of\nfunds, lnd begin to carry out the data loss recovery protocol in order to\nrecover the funds in each channel from a remote force closed transaction."
}
}
},
"lnrpcUnlockWalletResponse": {
"type": "object"
}
}
}