Merge pull request #4051 from carlaKC/3000-peererrors

peers: Track errors across connections
This commit is contained in:
Carla Kirk-Cohen 2020-03-17 10:02:53 +02:00 committed by GitHub
commit b03c3c2df3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 1412 additions and 820 deletions

@ -1335,7 +1335,13 @@ var listPeersCommand = cli.Command{
Name: "listpeers",
Category: "Peers",
Usage: "List all active, currently connected peers.",
Action: actionDecorator(listPeers),
Flags: []cli.Flag{
cli.BoolFlag{
Name: "list_errors",
Usage: "list a full set of most recent errors for the peer",
},
},
Action: actionDecorator(listPeers),
}
func listPeers(ctx *cli.Context) error {
@ -1343,7 +1349,11 @@ func listPeers(ctx *cli.Context) error {
client, cleanUp := getClient(ctx)
defer cleanUp()
req := &lnrpc.ListPeersRequest{}
// By default, we display a single error on the cli. If the user
// specifically requests a full error set, then we will provide it.
req := &lnrpc.ListPeersRequest{
LatestError: !ctx.IsSet("list_errors"),
}
resp, err := client.ListPeers(ctxb, req)
if err != nil {
return err

@ -321,7 +321,7 @@ func (x PeerEvent_EventType) String() string {
}
func (PeerEvent_EventType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{50, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{51, 0}
}
type ChannelEventUpdate_UpdateType int32
@ -355,7 +355,7 @@ func (x ChannelEventUpdate_UpdateType) String() string {
}
func (ChannelEventUpdate_UpdateType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{73, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{74, 0}
}
type Invoice_InvoiceState int32
@ -386,7 +386,7 @@ func (x Invoice_InvoiceState) String() string {
}
func (Invoice_InvoiceState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{105, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{106, 0}
}
type Payment_PaymentStatus int32
@ -417,7 +417,7 @@ func (x Payment_PaymentStatus) String() string {
}
func (Payment_PaymentStatus) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{112, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{113, 0}
}
type HTLCAttempt_HTLCStatus int32
@ -445,7 +445,7 @@ func (x HTLCAttempt_HTLCStatus) String() string {
}
func (HTLCAttempt_HTLCStatus) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{113, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{114, 0}
}
type Failure_FailureCode int32
@ -556,7 +556,7 @@ func (x Failure_FailureCode) String() string {
}
func (Failure_FailureCode) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{146, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{147, 0}
}
type GenSeedRequest struct {
@ -3664,7 +3664,14 @@ type Peer struct {
// The type of sync we are currently performing with this peer.
SyncType Peer_SyncType `protobuf:"varint,10,opt,name=sync_type,json=syncType,proto3,enum=lnrpc.Peer_SyncType" json:"sync_type,omitempty"`
/// Features advertised by the remote peer in their init message.
Features map[uint32]*Feature `protobuf:"bytes,11,rep,name=features,proto3" json:"features,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Features map[uint32]*Feature `protobuf:"bytes,11,rep,name=features,proto3" json:"features,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
//
//The latest errors received from our peer with timestamps, limited to the 10
//most recent errors. These errors are tracked across peer connections, but
//are not persisted across lnd restarts. Note that these errors are only
//stored for peers that we have channels open with, to prevent peers from
//spamming us with errors at no cost.
Errors []*TimestampedError `protobuf:"bytes,12,rep,name=errors,proto3" json:"errors,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -3765,7 +3772,68 @@ func (m *Peer) GetFeatures() map[uint32]*Feature {
return nil
}
func (m *Peer) GetErrors() []*TimestampedError {
if m != nil {
return m.Errors
}
return nil
}
type TimestampedError struct {
// The unix timestamp in seconds when the error occurred.
Timestamp uint64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
// The string representation of the error sent by our peer.
Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
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}
}
func (m *TimestampedError) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TimestampedError.Unmarshal(m, b)
}
func (m *TimestampedError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TimestampedError.Marshal(b, m, deterministic)
}
func (m *TimestampedError) XXX_Merge(src proto.Message) {
xxx_messageInfo_TimestampedError.Merge(m, src)
}
func (m *TimestampedError) XXX_Size() int {
return xxx_messageInfo_TimestampedError.Size(m)
}
func (m *TimestampedError) XXX_DiscardUnknown() {
xxx_messageInfo_TimestampedError.DiscardUnknown(m)
}
var xxx_messageInfo_TimestampedError proto.InternalMessageInfo
func (m *TimestampedError) GetTimestamp() uint64 {
if m != nil {
return m.Timestamp
}
return 0
}
func (m *TimestampedError) GetError() string {
if m != nil {
return m.Error
}
return ""
}
type ListPeersRequest struct {
//
//If true, only the last error that our peer sent us will be returned with
//the peer's information, rather than the full set of historic errors we have
//stored.
LatestError bool `protobuf:"varint,1,opt,name=latest_error,json=latestError,proto3" json:"latest_error,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -3775,7 +3843,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{47}
return fileDescriptor_77a6da22d6a3feb1, []int{48}
}
func (m *ListPeersRequest) XXX_Unmarshal(b []byte) error {
@ -3796,6 +3864,13 @@ func (m *ListPeersRequest) XXX_DiscardUnknown() {
var xxx_messageInfo_ListPeersRequest proto.InternalMessageInfo
func (m *ListPeersRequest) GetLatestError() bool {
if m != nil {
return m.LatestError
}
return false
}
type ListPeersResponse struct {
/// The list of currently connected peers
Peers []*Peer `protobuf:"bytes,1,rep,name=peers,proto3" json:"peers,omitempty"`
@ -3808,7 +3883,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{48}
return fileDescriptor_77a6da22d6a3feb1, []int{49}
}
func (m *ListPeersResponse) XXX_Unmarshal(b []byte) error {
@ -3846,7 +3921,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{49}
return fileDescriptor_77a6da22d6a3feb1, []int{50}
}
func (m *PeerEventSubscription) XXX_Unmarshal(b []byte) error {
@ -3880,7 +3955,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{50}
return fileDescriptor_77a6da22d6a3feb1, []int{51}
}
func (m *PeerEvent) XXX_Unmarshal(b []byte) error {
@ -3925,7 +4000,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{51}
return fileDescriptor_77a6da22d6a3feb1, []int{52}
}
func (m *GetInfoRequest) XXX_Unmarshal(b []byte) error {
@ -3994,7 +4069,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{52}
return fileDescriptor_77a6da22d6a3feb1, []int{53}
}
func (m *GetInfoResponse) XXX_Unmarshal(b []byte) error {
@ -4149,7 +4224,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{53}
return fileDescriptor_77a6da22d6a3feb1, []int{54}
}
func (m *Chain) XXX_Unmarshal(b []byte) error {
@ -4197,7 +4272,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{54}
return fileDescriptor_77a6da22d6a3feb1, []int{55}
}
func (m *ConfirmationUpdate) XXX_Unmarshal(b []byte) error {
@ -4250,7 +4325,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{55}
return fileDescriptor_77a6da22d6a3feb1, []int{56}
}
func (m *ChannelOpenUpdate) XXX_Unmarshal(b []byte) error {
@ -4290,7 +4365,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{56}
return fileDescriptor_77a6da22d6a3feb1, []int{57}
}
func (m *ChannelCloseUpdate) XXX_Unmarshal(b []byte) error {
@ -4355,7 +4430,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{57}
return fileDescriptor_77a6da22d6a3feb1, []int{58}
}
func (m *CloseChannelRequest) XXX_Unmarshal(b []byte) error {
@ -4425,7 +4500,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{58}
return fileDescriptor_77a6da22d6a3feb1, []int{59}
}
func (m *CloseStatusUpdate) XXX_Unmarshal(b []byte) error {
@ -4503,7 +4578,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{59}
return fileDescriptor_77a6da22d6a3feb1, []int{60}
}
func (m *PendingUpdate) XXX_Unmarshal(b []byte) error {
@ -4599,7 +4674,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{60}
return fileDescriptor_77a6da22d6a3feb1, []int{61}
}
func (m *OpenChannelRequest) XXX_Unmarshal(b []byte) error {
@ -4730,7 +4805,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{61}
return fileDescriptor_77a6da22d6a3feb1, []int{62}
}
func (m *OpenStatusUpdate) XXX_Unmarshal(b []byte) error {
@ -4817,7 +4892,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{62}
return fileDescriptor_77a6da22d6a3feb1, []int{63}
}
func (m *KeyLocator) XXX_Unmarshal(b []byte) error {
@ -4868,7 +4943,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{63}
return fileDescriptor_77a6da22d6a3feb1, []int{64}
}
func (m *KeyDescriptor) XXX_Unmarshal(b []byte) error {
@ -4929,7 +5004,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{64}
return fileDescriptor_77a6da22d6a3feb1, []int{65}
}
func (m *ChanPointShim) XXX_Unmarshal(b []byte) error {
@ -4998,7 +5073,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{65}
return fileDescriptor_77a6da22d6a3feb1, []int{66}
}
func (m *FundingShim) XXX_Unmarshal(b []byte) error {
@ -5062,7 +5137,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{66}
return fileDescriptor_77a6da22d6a3feb1, []int{67}
}
func (m *FundingShimCancel) XXX_Unmarshal(b []byte) error {
@ -5104,7 +5179,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{67}
return fileDescriptor_77a6da22d6a3feb1, []int{68}
}
func (m *FundingTransitionMsg) XXX_Unmarshal(b []byte) error {
@ -5180,7 +5255,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{68}
return fileDescriptor_77a6da22d6a3feb1, []int{69}
}
func (m *FundingStateStepResp) XXX_Unmarshal(b []byte) error {
@ -5226,7 +5301,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{69}
return fileDescriptor_77a6da22d6a3feb1, []int{70}
}
func (m *PendingHTLC) XXX_Unmarshal(b []byte) error {
@ -5299,7 +5374,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{70}
return fileDescriptor_77a6da22d6a3feb1, []int{71}
}
func (m *PendingChannelsRequest) XXX_Unmarshal(b []byte) error {
@ -5340,7 +5415,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{71}
return fileDescriptor_77a6da22d6a3feb1, []int{72}
}
func (m *PendingChannelsResponse) XXX_Unmarshal(b []byte) error {
@ -5420,7 +5495,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{71, 0}
return fileDescriptor_77a6da22d6a3feb1, []int{72, 0}
}
func (m *PendingChannelsResponse_PendingChannel) XXX_Unmarshal(b []byte) error {
@ -5522,7 +5597,7 @@ func (m *PendingChannelsResponse_PendingOpenChannel) String() string {
}
func (*PendingChannelsResponse_PendingOpenChannel) ProtoMessage() {}
func (*PendingChannelsResponse_PendingOpenChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{71, 1}
return fileDescriptor_77a6da22d6a3feb1, []int{72, 1}
}
func (m *PendingChannelsResponse_PendingOpenChannel) XXX_Unmarshal(b []byte) error {
@ -5596,7 +5671,7 @@ func (m *PendingChannelsResponse_WaitingCloseChannel) String() string {
}
func (*PendingChannelsResponse_WaitingCloseChannel) ProtoMessage() {}
func (*PendingChannelsResponse_WaitingCloseChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{71, 2}
return fileDescriptor_77a6da22d6a3feb1, []int{72, 2}
}
func (m *PendingChannelsResponse_WaitingCloseChannel) XXX_Unmarshal(b []byte) error {
@ -5645,7 +5720,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{71, 3}
return fileDescriptor_77a6da22d6a3feb1, []int{72, 3}
}
func (m *PendingChannelsResponse_ClosedChannel) XXX_Unmarshal(b []byte) error {
@ -5710,7 +5785,7 @@ func (m *PendingChannelsResponse_ForceClosedChannel) String() string {
}
func (*PendingChannelsResponse_ForceClosedChannel) ProtoMessage() {}
func (*PendingChannelsResponse_ForceClosedChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_77a6da22d6a3feb1, []int{71, 4}
return fileDescriptor_77a6da22d6a3feb1, []int{72, 4}
}
func (m *PendingChannelsResponse_ForceClosedChannel) XXX_Unmarshal(b []byte) error {
@ -5790,7 +5865,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{72}
return fileDescriptor_77a6da22d6a3feb1, []int{73}
}
func (m *ChannelEventSubscription) XXX_Unmarshal(b []byte) error {
@ -5829,7 +5904,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{73}
return fileDescriptor_77a6da22d6a3feb1, []int{74}
}
func (m *ChannelEventUpdate) XXX_Unmarshal(b []byte) error {
@ -5954,7 +6029,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{74}
return fileDescriptor_77a6da22d6a3feb1, []int{75}
}
func (m *WalletBalanceRequest) XXX_Unmarshal(b []byte) error {
@ -5991,7 +6066,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{75}
return fileDescriptor_77a6da22d6a3feb1, []int{76}
}
func (m *WalletBalanceResponse) XXX_Unmarshal(b []byte) error {
@ -6043,7 +6118,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{76}
return fileDescriptor_77a6da22d6a3feb1, []int{77}
}
func (m *ChannelBalanceRequest) XXX_Unmarshal(b []byte) error {
@ -6078,7 +6153,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{77}
return fileDescriptor_77a6da22d6a3feb1, []int{78}
}
func (m *ChannelBalanceResponse) XXX_Unmarshal(b []byte) error {
@ -6196,7 +6271,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{78}
return fileDescriptor_77a6da22d6a3feb1, []int{79}
}
func (m *QueryRoutesRequest) XXX_Unmarshal(b []byte) error {
@ -6348,7 +6423,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{79}
return fileDescriptor_77a6da22d6a3feb1, []int{80}
}
func (m *NodePair) XXX_Unmarshal(b []byte) error {
@ -6401,7 +6476,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{80}
return fileDescriptor_77a6da22d6a3feb1, []int{81}
}
func (m *EdgeLocator) XXX_Unmarshal(b []byte) error {
@ -6454,7 +6529,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{81}
return fileDescriptor_77a6da22d6a3feb1, []int{82}
}
func (m *QueryRoutesResponse) XXX_Unmarshal(b []byte) error {
@ -6530,7 +6605,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{82}
return fileDescriptor_77a6da22d6a3feb1, []int{83}
}
func (m *Hop) XXX_Unmarshal(b []byte) error {
@ -6652,7 +6727,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{83}
return fileDescriptor_77a6da22d6a3feb1, []int{84}
}
func (m *MPPRecord) XXX_Unmarshal(b []byte) error {
@ -6730,7 +6805,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{84}
return fileDescriptor_77a6da22d6a3feb1, []int{85}
}
func (m *Route) XXX_Unmarshal(b []byte) error {
@ -6809,7 +6884,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{85}
return fileDescriptor_77a6da22d6a3feb1, []int{86}
}
func (m *NodeInfoRequest) XXX_Unmarshal(b []byte) error {
@ -6866,7 +6941,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{86}
return fileDescriptor_77a6da22d6a3feb1, []int{87}
}
func (m *NodeInfo) XXX_Unmarshal(b []byte) error {
@ -6936,7 +7011,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{87}
return fileDescriptor_77a6da22d6a3feb1, []int{88}
}
func (m *LightningNode) XXX_Unmarshal(b []byte) error {
@ -7011,7 +7086,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{88}
return fileDescriptor_77a6da22d6a3feb1, []int{89}
}
func (m *NodeAddress) XXX_Unmarshal(b []byte) error {
@ -7063,7 +7138,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{89}
return fileDescriptor_77a6da22d6a3feb1, []int{90}
}
func (m *RoutingPolicy) XXX_Unmarshal(b []byte) error {
@ -7161,7 +7236,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{90}
return fileDescriptor_77a6da22d6a3feb1, []int{91}
}
func (m *ChannelEdge) XXX_Unmarshal(b []byte) error {
@ -7254,7 +7329,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{91}
return fileDescriptor_77a6da22d6a3feb1, []int{92}
}
func (m *ChannelGraphRequest) XXX_Unmarshal(b []byte) error {
@ -7297,7 +7372,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{92}
return fileDescriptor_77a6da22d6a3feb1, []int{93}
}
func (m *ChannelGraph) XXX_Unmarshal(b []byte) error {
@ -7347,7 +7422,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{93}
return fileDescriptor_77a6da22d6a3feb1, []int{94}
}
func (m *ChanInfoRequest) XXX_Unmarshal(b []byte) error {
@ -7385,7 +7460,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{94}
return fileDescriptor_77a6da22d6a3feb1, []int{95}
}
func (m *NetworkInfoRequest) XXX_Unmarshal(b []byte) error {
@ -7428,7 +7503,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{95}
return fileDescriptor_77a6da22d6a3feb1, []int{96}
}
func (m *NetworkInfo) XXX_Unmarshal(b []byte) error {
@ -7536,7 +7611,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{96}
return fileDescriptor_77a6da22d6a3feb1, []int{97}
}
func (m *StopRequest) XXX_Unmarshal(b []byte) error {
@ -7567,7 +7642,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{97}
return fileDescriptor_77a6da22d6a3feb1, []int{98}
}
func (m *StopResponse) XXX_Unmarshal(b []byte) error {
@ -7598,7 +7673,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{98}
return fileDescriptor_77a6da22d6a3feb1, []int{99}
}
func (m *GraphTopologySubscription) XXX_Unmarshal(b []byte) error {
@ -7632,7 +7707,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{99}
return fileDescriptor_77a6da22d6a3feb1, []int{100}
}
func (m *GraphTopologyUpdate) XXX_Unmarshal(b []byte) error {
@ -7689,7 +7764,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{100}
return fileDescriptor_77a6da22d6a3feb1, []int{101}
}
func (m *NodeUpdate) XXX_Unmarshal(b []byte) error {
@ -7765,7 +7840,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{101}
return fileDescriptor_77a6da22d6a3feb1, []int{102}
}
func (m *ChannelEdgeUpdate) XXX_Unmarshal(b []byte) error {
@ -7846,7 +7921,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{102}
return fileDescriptor_77a6da22d6a3feb1, []int{103}
}
func (m *ClosedChannelUpdate) XXX_Unmarshal(b []byte) error {
@ -7917,7 +7992,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{103}
return fileDescriptor_77a6da22d6a3feb1, []int{104}
}
func (m *HopHint) XXX_Unmarshal(b []byte) error {
@ -7987,7 +8062,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{104}
return fileDescriptor_77a6da22d6a3feb1, []int{105}
}
func (m *RouteHint) XXX_Unmarshal(b []byte) error {
@ -8120,7 +8195,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{105}
return fileDescriptor_77a6da22d6a3feb1, []int{106}
}
func (m *Invoice) XXX_Unmarshal(b []byte) error {
@ -8342,7 +8417,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{106}
return fileDescriptor_77a6da22d6a3feb1, []int{107}
}
func (m *InvoiceHTLC) XXX_Unmarshal(b []byte) error {
@ -8455,7 +8530,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{107}
return fileDescriptor_77a6da22d6a3feb1, []int{108}
}
func (m *AddInvoiceResponse) XXX_Unmarshal(b []byte) error {
@ -8517,7 +8592,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{108}
return fileDescriptor_77a6da22d6a3feb1, []int{109}
}
func (m *PaymentHash) XXX_Unmarshal(b []byte) error {
@ -8577,7 +8652,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{109}
return fileDescriptor_77a6da22d6a3feb1, []int{110}
}
func (m *ListInvoiceRequest) XXX_Unmarshal(b []byte) error {
@ -8648,7 +8723,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{110}
return fileDescriptor_77a6da22d6a3feb1, []int{111}
}
func (m *ListInvoiceResponse) XXX_Unmarshal(b []byte) error {
@ -8712,7 +8787,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{111}
return fileDescriptor_77a6da22d6a3feb1, []int{112}
}
func (m *InvoiceSubscription) XXX_Unmarshal(b []byte) error {
@ -8785,7 +8860,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{112}
return fileDescriptor_77a6da22d6a3feb1, []int{113}
}
func (m *Payment) XXX_Unmarshal(b []byte) error {
@ -8930,7 +9005,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{113}
return fileDescriptor_77a6da22d6a3feb1, []int{114}
}
func (m *HTLCAttempt) XXX_Unmarshal(b []byte) error {
@ -9001,7 +9076,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{114}
return fileDescriptor_77a6da22d6a3feb1, []int{115}
}
func (m *ListPaymentsRequest) XXX_Unmarshal(b []byte) error {
@ -9041,7 +9116,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{115}
return fileDescriptor_77a6da22d6a3feb1, []int{116}
}
func (m *ListPaymentsResponse) XXX_Unmarshal(b []byte) error {
@ -9079,7 +9154,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{116}
return fileDescriptor_77a6da22d6a3feb1, []int{117}
}
func (m *DeleteAllPaymentsRequest) XXX_Unmarshal(b []byte) error {
@ -9110,7 +9185,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{117}
return fileDescriptor_77a6da22d6a3feb1, []int{118}
}
func (m *DeleteAllPaymentsResponse) XXX_Unmarshal(b []byte) error {
@ -9142,7 +9217,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{118}
return fileDescriptor_77a6da22d6a3feb1, []int{119}
}
func (m *AbandonChannelRequest) XXX_Unmarshal(b []byte) error {
@ -9180,7 +9255,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{119}
return fileDescriptor_77a6da22d6a3feb1, []int{120}
}
func (m *AbandonChannelResponse) XXX_Unmarshal(b []byte) error {
@ -9213,7 +9288,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{120}
return fileDescriptor_77a6da22d6a3feb1, []int{121}
}
func (m *DebugLevelRequest) XXX_Unmarshal(b []byte) error {
@ -9259,7 +9334,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{121}
return fileDescriptor_77a6da22d6a3feb1, []int{122}
}
func (m *DebugLevelResponse) XXX_Unmarshal(b []byte) error {
@ -9299,7 +9374,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{122}
return fileDescriptor_77a6da22d6a3feb1, []int{123}
}
func (m *PayReqString) XXX_Unmarshal(b []byte) error {
@ -9350,7 +9425,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{123}
return fileDescriptor_77a6da22d6a3feb1, []int{124}
}
func (m *PayReq) XXX_Unmarshal(b []byte) error {
@ -9475,7 +9550,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{124}
return fileDescriptor_77a6da22d6a3feb1, []int{125}
}
func (m *Feature) XXX_Unmarshal(b []byte) error {
@ -9527,7 +9602,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{125}
return fileDescriptor_77a6da22d6a3feb1, []int{126}
}
func (m *FeeReportRequest) XXX_Unmarshal(b []byte) error {
@ -9570,7 +9645,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{126}
return fileDescriptor_77a6da22d6a3feb1, []int{127}
}
func (m *ChannelFeeReport) XXX_Unmarshal(b []byte) error {
@ -9648,7 +9723,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{127}
return fileDescriptor_77a6da22d6a3feb1, []int{128}
}
func (m *FeeReportResponse) XXX_Unmarshal(b []byte) error {
@ -9726,7 +9801,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{128}
return fileDescriptor_77a6da22d6a3feb1, []int{129}
}
func (m *PolicyUpdateRequest) XXX_Unmarshal(b []byte) error {
@ -9844,7 +9919,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{129}
return fileDescriptor_77a6da22d6a3feb1, []int{130}
}
func (m *PolicyUpdateResponse) XXX_Unmarshal(b []byte) error {
@ -9889,7 +9964,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{130}
return fileDescriptor_77a6da22d6a3feb1, []int{131}
}
func (m *ForwardingHistoryRequest) XXX_Unmarshal(b []byte) error {
@ -9972,7 +10047,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{131}
return fileDescriptor_77a6da22d6a3feb1, []int{132}
}
func (m *ForwardingEvent) XXX_Unmarshal(b []byte) error {
@ -10072,7 +10147,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{132}
return fileDescriptor_77a6da22d6a3feb1, []int{133}
}
func (m *ForwardingHistoryResponse) XXX_Unmarshal(b []byte) error {
@ -10119,7 +10194,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{133}
return fileDescriptor_77a6da22d6a3feb1, []int{134}
}
func (m *ExportChannelBackupRequest) XXX_Unmarshal(b []byte) error {
@ -10166,7 +10241,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{134}
return fileDescriptor_77a6da22d6a3feb1, []int{135}
}
func (m *ChannelBackup) XXX_Unmarshal(b []byte) error {
@ -10220,7 +10295,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{135}
return fileDescriptor_77a6da22d6a3feb1, []int{136}
}
func (m *MultiChanBackup) XXX_Unmarshal(b []byte) error {
@ -10265,7 +10340,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{136}
return fileDescriptor_77a6da22d6a3feb1, []int{137}
}
func (m *ChanBackupExportRequest) XXX_Unmarshal(b []byte) error {
@ -10304,7 +10379,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{137}
return fileDescriptor_77a6da22d6a3feb1, []int{138}
}
func (m *ChanBackupSnapshot) XXX_Unmarshal(b []byte) error {
@ -10352,7 +10427,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{138}
return fileDescriptor_77a6da22d6a3feb1, []int{139}
}
func (m *ChannelBackups) XXX_Unmarshal(b []byte) error {
@ -10394,7 +10469,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{139}
return fileDescriptor_77a6da22d6a3feb1, []int{140}
}
func (m *RestoreChanBackupRequest) XXX_Unmarshal(b []byte) error {
@ -10470,7 +10545,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{140}
return fileDescriptor_77a6da22d6a3feb1, []int{141}
}
func (m *RestoreBackupResponse) XXX_Unmarshal(b []byte) error {
@ -10501,7 +10576,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{141}
return fileDescriptor_77a6da22d6a3feb1, []int{142}
}
func (m *ChannelBackupSubscription) XXX_Unmarshal(b []byte) error {
@ -10532,7 +10607,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{142}
return fileDescriptor_77a6da22d6a3feb1, []int{143}
}
func (m *VerifyChanBackupResponse) XXX_Unmarshal(b []byte) error {
@ -10567,7 +10642,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{143}
return fileDescriptor_77a6da22d6a3feb1, []int{144}
}
func (m *MacaroonPermission) XXX_Unmarshal(b []byte) error {
@ -10614,7 +10689,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{144}
return fileDescriptor_77a6da22d6a3feb1, []int{145}
}
func (m *BakeMacaroonRequest) XXX_Unmarshal(b []byte) error {
@ -10654,7 +10729,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{145}
return fileDescriptor_77a6da22d6a3feb1, []int{146}
}
func (m *BakeMacaroonResponse) XXX_Unmarshal(b []byte) error {
@ -10710,7 +10785,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{146}
return fileDescriptor_77a6da22d6a3feb1, []int{147}
}
func (m *Failure) XXX_Unmarshal(b []byte) error {
@ -10854,7 +10929,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{147}
return fileDescriptor_77a6da22d6a3feb1, []int{148}
}
func (m *ChannelUpdate) XXX_Unmarshal(b []byte) error {
@ -11024,6 +11099,7 @@ func init() {
proto.RegisterType((*ClosedChannelsResponse)(nil), "lnrpc.ClosedChannelsResponse")
proto.RegisterType((*Peer)(nil), "lnrpc.Peer")
proto.RegisterMapType((map[uint32]*Feature)(nil), "lnrpc.Peer.FeaturesEntry")
proto.RegisterType((*TimestampedError)(nil), "lnrpc.TimestampedError")
proto.RegisterType((*ListPeersRequest)(nil), "lnrpc.ListPeersRequest")
proto.RegisterType((*ListPeersResponse)(nil), "lnrpc.ListPeersResponse")
proto.RegisterType((*PeerEventSubscription)(nil), "lnrpc.PeerEventSubscription")
@ -11142,705 +11218,709 @@ func init() {
func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) }
var fileDescriptor_77a6da22d6a3feb1 = []byte{
// 11167 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0xbd, 0x5b, 0x8f, 0x1c, 0x49,
0x76, 0x18, 0xcc, 0xba, 0x75, 0x55, 0x9d, 0xba, 0x76, 0xf4, 0xad, 0xd8, 0x24, 0x87, 0x9c, 0x9c,
0xd9, 0x21, 0x97, 0xb3, 0x4b, 0x72, 0xb8, 0x3b, 0xb3, 0xab, 0x99, 0xef, 0x5b, 0x6d, 0x75, 0x77,
0x35, 0xbb, 0x96, 0x7d, 0x9b, 0xac, 0xea, 0x19, 0xcd, 0xca, 0x72, 0x6e, 0x76, 0x55, 0x74, 0x77,
0x8a, 0x55, 0x99, 0x35, 0x99, 0x59, 0x7d, 0xd9, 0xc1, 0xf8, 0xc1, 0x17, 0xc1, 0xb0, 0x0d, 0x03,
0x82, 0x2d, 0x03, 0x96, 0x2d, 0xd8, 0xb0, 0x61, 0x18, 0x86, 0x01, 0x41, 0xc6, 0xca, 0x80, 0x1f,
0xfc, 0xae, 0x17, 0x1b, 0x7a, 0x90, 0xfc, 0x62, 0x08, 0x02, 0x04, 0xcb, 0xf2, 0xab, 0x7e, 0x82,
0x11, 0xe7, 0x44, 0x64, 0x46, 0x56, 0x65, 0x93, 0x9c, 0xd9, 0xf5, 0xbe, 0x90, 0x9d, 0x27, 0x4e,
0xdc, 0x4f, 0x9c, 0x38, 0xd7, 0x28, 0x28, 0xfb, 0x93, 0xc1, 0xa3, 0x89, 0xef, 0x85, 0x1e, 0x2b,
0x8c, 0x5c, 0x7f, 0x32, 0x58, 0xbf, 0x7d, 0xea, 0x79, 0xa7, 0x23, 0xfe, 0xd8, 0x9e, 0x38, 0x8f,
0x6d, 0xd7, 0xf5, 0x42, 0x3b, 0x74, 0x3c, 0x37, 0x20, 0x24, 0xe3, 0x27, 0x50, 0x7f, 0xc6, 0xdd,
0x1e, 0xe7, 0x43, 0x93, 0x7f, 0x3e, 0xe5, 0x41, 0xc8, 0xde, 0x85, 0x45, 0x9b, 0xff, 0x94, 0xf3,
0xa1, 0x35, 0xb1, 0x83, 0x60, 0x72, 0xe6, 0xdb, 0x01, 0x6f, 0x65, 0xee, 0x65, 0x1e, 0x54, 0xcd,
0x26, 0x15, 0x1c, 0x46, 0x70, 0xf6, 0x26, 0x54, 0x03, 0x81, 0xca, 0xdd, 0xd0, 0xf7, 0x26, 0x57,
0xad, 0x2c, 0xe2, 0x55, 0x04, 0xac, 0x43, 0x20, 0x63, 0x04, 0x8d, 0xa8, 0x87, 0x60, 0xe2, 0xb9,
0x01, 0x67, 0x4f, 0x60, 0x79, 0xe0, 0x4c, 0xce, 0xb8, 0x6f, 0x61, 0xe5, 0xb1, 0xcb, 0xc7, 0x9e,
0xeb, 0x0c, 0x5a, 0x99, 0x7b, 0xb9, 0x07, 0x65, 0x93, 0x51, 0x99, 0xa8, 0xb1, 0x27, 0x4b, 0xd8,
0x7d, 0x68, 0x70, 0x97, 0xe0, 0x7c, 0x88, 0xb5, 0x64, 0x57, 0xf5, 0x18, 0x2c, 0x2a, 0x18, 0x7f,
0x3f, 0x0b, 0x8b, 0x5d, 0xd7, 0x09, 0x3f, 0xb5, 0x47, 0x23, 0x1e, 0xaa, 0x39, 0xdd, 0x87, 0xc6,
0x05, 0x02, 0x70, 0x4e, 0x17, 0x9e, 0x3f, 0x94, 0x33, 0xaa, 0x13, 0xf8, 0x50, 0x42, 0xaf, 0x1d,
0x59, 0xf6, 0xda, 0x91, 0xa5, 0x2e, 0x57, 0xee, 0x9a, 0xe5, 0xba, 0x0f, 0x0d, 0x9f, 0x0f, 0xbc,
0x73, 0xee, 0x5f, 0x59, 0x17, 0x8e, 0x3b, 0xf4, 0x2e, 0x5a, 0xf9, 0x7b, 0x99, 0x07, 0x05, 0xb3,
0xae, 0xc0, 0x9f, 0x22, 0x94, 0x6d, 0x40, 0x63, 0x70, 0x66, 0xbb, 0x2e, 0x1f, 0x59, 0xc7, 0xf6,
0xe0, 0xc5, 0x74, 0x12, 0xb4, 0x0a, 0xf7, 0x32, 0x0f, 0x2a, 0x4f, 0x6f, 0x3e, 0xc2, 0x5d, 0x7d,
0xb4, 0x79, 0x66, 0xbb, 0x1b, 0x58, 0xd2, 0x73, 0xed, 0x49, 0x70, 0xe6, 0x85, 0x66, 0x5d, 0xd6,
0x20, 0x70, 0x60, 0x2c, 0x03, 0xd3, 0x57, 0x82, 0xd6, 0xde, 0xf8, 0x8f, 0x19, 0x58, 0x3a, 0x72,
0x47, 0xde, 0xe0, 0xc5, 0xd7, 0x5c, 0xa2, 0x94, 0x39, 0x64, 0x5f, 0x77, 0x0e, 0xb9, 0xaf, 0x3a,
0x87, 0x55, 0x58, 0x4e, 0x0e, 0x56, 0xce, 0x82, 0xc3, 0x8a, 0xa8, 0x7d, 0xca, 0xd5, 0xb0, 0xd4,
0x34, 0xbe, 0x09, 0xcd, 0xc1, 0xd4, 0xf7, 0xb9, 0x3b, 0x37, 0x8f, 0x86, 0x84, 0x47, 0x13, 0x79,
0x13, 0xaa, 0x2e, 0xbf, 0x88, 0xd1, 0x24, 0xed, 0xba, 0xfc, 0x42, 0xa1, 0x18, 0x2d, 0x58, 0x9d,
0xed, 0x46, 0x0e, 0xe0, 0xaf, 0x32, 0x90, 0x3f, 0x0a, 0x2f, 0x3d, 0xf6, 0x3e, 0x54, 0xed, 0xe1,
0xd0, 0xe7, 0x41, 0x60, 0x85, 0x57, 0x13, 0x3a, 0x29, 0xf5, 0xa7, 0x4c, 0x4e, 0xb1, 0x4d, 0x45,
0xfd, 0xab, 0x09, 0x37, 0x2b, 0x76, 0xfc, 0xc1, 0x5a, 0x50, 0x94, 0x9f, 0xd8, 0x6f, 0xd9, 0x54,
0x9f, 0xec, 0x0e, 0x80, 0x3d, 0xf6, 0xa6, 0x6e, 0x68, 0x05, 0x76, 0x88, 0x2b, 0x96, 0x33, 0xcb,
0x04, 0xe9, 0xd9, 0x21, 0xbb, 0x05, 0xe5, 0xc9, 0x0b, 0x2b, 0x18, 0xf8, 0xce, 0x24, 0x44, 0xe2,
0x29, 0x9b, 0xa5, 0xc9, 0x8b, 0x1e, 0x7e, 0xb3, 0x77, 0xa1, 0xe4, 0x4d, 0xc3, 0x89, 0xe7, 0xb8,
0xa1, 0xa4, 0x97, 0x86, 0x1c, 0xc8, 0xc1, 0x34, 0x3c, 0x14, 0x60, 0x33, 0x42, 0x60, 0x6f, 0x43,
0x6d, 0xe0, 0xb9, 0x27, 0x8e, 0x3f, 0x26, 0x8e, 0xd0, 0x5a, 0xc0, 0xbe, 0x92, 0x40, 0xe3, 0x0f,
0xb2, 0x50, 0xe9, 0xfb, 0xb6, 0x1b, 0xd8, 0x03, 0x01, 0x60, 0x6b, 0x50, 0x0c, 0x2f, 0xad, 0x33,
0x3b, 0x38, 0xc3, 0xa9, 0x96, 0xcd, 0x85, 0xf0, 0x72, 0xc7, 0x0e, 0xce, 0xd8, 0x2a, 0x2c, 0xd0,
0x28, 0x71, 0x42, 0x39, 0x53, 0x7e, 0x89, 0x03, 0xe2, 0x4e, 0xc7, 0x56, 0xb2, 0xab, 0x1c, 0x52,
0x4c, 0xd3, 0x9d, 0x8e, 0x37, 0x75, 0xb8, 0x98, 0xfc, 0xb1, 0xd8, 0x6e, 0xea, 0x80, 0xa6, 0x57,
0x46, 0x08, 0xf6, 0xf1, 0x26, 0x54, 0x65, 0x31, 0x77, 0x4e, 0xcf, 0x68, 0x8e, 0x05, 0xb3, 0x42,
0x08, 0x08, 0x12, 0x2d, 0x84, 0xce, 0x98, 0x5b, 0x41, 0x68, 0x8f, 0x27, 0x72, 0x4a, 0x65, 0x01,
0xe9, 0x09, 0x00, 0x16, 0x7b, 0xa1, 0x3d, 0xb2, 0x4e, 0x38, 0x0f, 0x5a, 0x45, 0x59, 0x2c, 0x20,
0xdb, 0x9c, 0x07, 0xec, 0x1b, 0x50, 0x1f, 0xf2, 0x20, 0xb4, 0xe4, 0x66, 0xf0, 0xa0, 0x55, 0xc2,
0x93, 0x5f, 0x13, 0xd0, 0xb6, 0x02, 0xb2, 0xdb, 0x00, 0xbe, 0x7d, 0x61, 0x89, 0x85, 0xe0, 0x97,
0xad, 0x32, 0xed, 0x82, 0x6f, 0x5f, 0xf4, 0x2f, 0x77, 0xf8, 0xa5, 0xa0, 0x9a, 0x67, 0x3c, 0xd4,
0x16, 0x2d, 0x90, 0xd4, 0x69, 0xec, 0x02, 0xd3, 0xc0, 0x5b, 0x3c, 0xb4, 0x9d, 0x51, 0xc0, 0x3e,
0x80, 0x6a, 0xa8, 0x21, 0x23, 0x1b, 0xac, 0x44, 0x24, 0xa4, 0x55, 0x30, 0x13, 0x78, 0xc6, 0x19,
0x94, 0xb6, 0x39, 0xdf, 0x75, 0xc6, 0x4e, 0xc8, 0x56, 0xa1, 0x70, 0xe2, 0x5c, 0x72, 0x22, 0xf6,
0xdc, 0xce, 0x0d, 0x93, 0x3e, 0xd9, 0x5d, 0x00, 0xfc, 0xc3, 0x1a, 0x47, 0xd4, 0xb4, 0x73, 0xc3,
0x2c, 0x23, 0x6c, 0x2f, 0xb0, 0x43, 0xb6, 0x0e, 0xc5, 0x09, 0xf7, 0x07, 0x5c, 0xed, 0xdb, 0xce,
0x0d, 0x53, 0x01, 0x36, 0x8a, 0x50, 0x18, 0x89, 0xd6, 0x8d, 0x3f, 0x2a, 0x40, 0xa5, 0xc7, 0xdd,
0xe8, 0x94, 0x31, 0xc8, 0x8b, 0x05, 0x91, 0x27, 0x0b, 0xff, 0x66, 0x6f, 0x41, 0x05, 0x97, 0x2e,
0x08, 0x7d, 0xc7, 0x3d, 0x25, 0xaa, 0xde, 0xc8, 0xb6, 0x32, 0x26, 0x08, 0x70, 0x0f, 0xa1, 0xac,
0x09, 0x39, 0x7b, 0xac, 0xa8, 0x5a, 0xfc, 0xc9, 0x6e, 0x42, 0xc9, 0x1e, 0x87, 0x34, 0xbc, 0x2a,
0x82, 0x8b, 0xf6, 0x38, 0xc4, 0xa1, 0xbd, 0x09, 0xd5, 0x89, 0x7d, 0x35, 0x16, 0x67, 0x39, 0x22,
0x87, 0xaa, 0x59, 0x91, 0x30, 0x24, 0x88, 0xa7, 0xb0, 0xa4, 0xa3, 0xa8, 0xce, 0x0b, 0x51, 0xe7,
0x8b, 0x1a, 0xb6, 0x1c, 0xc3, 0x7d, 0x68, 0xa8, 0x3a, 0x3e, 0xcd, 0x07, 0xc9, 0xa4, 0x6c, 0xd6,
0x25, 0x58, 0xcd, 0xf2, 0x01, 0x34, 0x4f, 0x1c, 0xd7, 0x1e, 0x59, 0x83, 0x51, 0x78, 0x6e, 0x0d,
0xf9, 0x28, 0xb4, 0x91, 0x62, 0x0a, 0x66, 0x1d, 0xe1, 0x9b, 0xa3, 0xf0, 0x7c, 0x4b, 0x40, 0xd9,
0xb7, 0xa0, 0x7c, 0xc2, 0xb9, 0x85, 0x8b, 0xd5, 0x2a, 0x25, 0x0e, 0x9e, 0xda, 0x21, 0xb3, 0x74,
0xa2, 0xf6, 0xea, 0x5b, 0xd0, 0xf4, 0xa6, 0xe1, 0xa9, 0xe7, 0xb8, 0xa7, 0x96, 0xe0, 0x77, 0x96,
0x33, 0x44, 0x1a, 0xca, 0x6f, 0x64, 0x9f, 0x64, 0xcc, 0xba, 0x2a, 0x13, 0x9c, 0xa7, 0x3b, 0x64,
0xef, 0x40, 0x63, 0x64, 0x07, 0xa1, 0x75, 0xe6, 0x4d, 0xac, 0xc9, 0xf4, 0xf8, 0x05, 0xbf, 0x6a,
0xd5, 0x70, 0x21, 0x6a, 0x02, 0xbc, 0xe3, 0x4d, 0x0e, 0x11, 0x28, 0x28, 0x1b, 0xc7, 0x49, 0x83,
0x80, 0x7b, 0x99, 0x07, 0x35, 0xb3, 0x2c, 0x20, 0xd4, 0xe9, 0x67, 0xb0, 0x84, 0xdb, 0x33, 0x98,
0x06, 0xa1, 0x37, 0xb6, 0x04, 0xaf, 0xf6, 0x87, 0x41, 0xab, 0x82, 0xb4, 0xf6, 0x4d, 0x39, 0x58,
0x6d, 0x8f, 0x1f, 0x6d, 0xf1, 0x20, 0xdc, 0x44, 0x64, 0x93, 0x70, 0xc5, 0x85, 0x7e, 0x65, 0x2e,
0x0e, 0x67, 0xe1, 0xec, 0x5b, 0xc0, 0xec, 0xd1, 0xc8, 0xbb, 0xb0, 0x02, 0x3e, 0x3a, 0xb1, 0xe4,
0x22, 0xb6, 0xea, 0xf7, 0x32, 0x0f, 0x4a, 0x66, 0x13, 0x4b, 0x7a, 0x7c, 0x74, 0x72, 0x48, 0x70,
0xf6, 0x01, 0xe0, 0x61, 0xb2, 0x4e, 0xb8, 0x1d, 0x4e, 0x7d, 0x1e, 0xb4, 0x1a, 0xf7, 0x72, 0x0f,
0xea, 0x4f, 0x17, 0xa3, 0xf5, 0x42, 0xf0, 0x86, 0x13, 0x9a, 0x55, 0x81, 0x27, 0xbf, 0x83, 0xf5,
0x2d, 0x58, 0x4d, 0x1f, 0x92, 0x20, 0x2a, 0xb1, 0x2a, 0x82, 0x18, 0xf3, 0xa6, 0xf8, 0x93, 0x2d,
0x43, 0xe1, 0xdc, 0x1e, 0x4d, 0xb9, 0xe4, 0xe9, 0xf4, 0xf1, 0x61, 0xf6, 0xfb, 0x19, 0xe3, 0x0f,
0x33, 0x50, 0xa5, 0x59, 0x4a, 0x59, 0xe4, 0x2d, 0xa8, 0x29, 0x6a, 0xe0, 0xbe, 0xef, 0xf9, 0x92,
0xab, 0x29, 0xca, 0xeb, 0x08, 0x98, 0xb8, 0x55, 0x14, 0xd2, 0xc4, 0xe7, 0xce, 0xd8, 0x3e, 0x55,
0x4d, 0x2b, 0x52, 0x3a, 0x94, 0x60, 0xf6, 0x5e, 0xdc, 0x9e, 0xef, 0x4d, 0x43, 0x2e, 0xef, 0xbc,
0xaa, 0x9c, 0x9e, 0x29, 0x60, 0x51, 0xeb, 0xf8, 0xf5, 0x1a, 0x74, 0x6e, 0xfc, 0x4e, 0x06, 0x98,
0x18, 0x76, 0xdf, 0xa3, 0x06, 0x24, 0x85, 0xce, 0xd6, 0xcc, 0xbc, 0xf6, 0x09, 0xc9, 0xbe, 0xec,
0x84, 0x18, 0x50, 0xa0, 0xb1, 0xe7, 0x53, 0xc6, 0x4e, 0x45, 0x3f, 0xca, 0x97, 0x72, 0xcd, 0xbc,
0xf1, 0x3f, 0x73, 0xb0, 0xbc, 0x49, 0x57, 0x76, 0x7b, 0x30, 0xe0, 0x93, 0xe8, 0xec, 0xdc, 0x85,
0x8a, 0xeb, 0x0d, 0xb9, 0xa2, 0x58, 0x1a, 0x18, 0x08, 0x90, 0x46, 0xae, 0x67, 0xb6, 0xe3, 0xd2,
0xc0, 0x69, 0x31, 0xcb, 0x08, 0xc1, 0x61, 0xbf, 0x03, 0x8d, 0x09, 0x77, 0x87, 0xfa, 0x11, 0x21,
0xa1, 0xaa, 0x26, 0xc1, 0xf2, 0x74, 0xdc, 0x85, 0xca, 0xc9, 0x94, 0xf0, 0x04, 0x63, 0xc9, 0x23,
0x0d, 0x80, 0x04, 0xb5, 0x89, 0xbf, 0x4c, 0xa6, 0xc1, 0x19, 0x96, 0x16, 0xb0, 0xb4, 0x28, 0xbe,
0x45, 0xd1, 0x1d, 0x80, 0xe1, 0x34, 0x08, 0xe5, 0x89, 0x59, 0xc0, 0xc2, 0xb2, 0x80, 0xd0, 0x89,
0xf9, 0x36, 0x2c, 0x8d, 0xed, 0x4b, 0x0b, 0x69, 0xc7, 0x72, 0x5c, 0xeb, 0x64, 0x84, 0x77, 0x4e,
0x11, 0xf1, 0x9a, 0x63, 0xfb, 0xf2, 0x13, 0x51, 0xd2, 0x75, 0xb7, 0x11, 0x2e, 0xd8, 0x8a, 0x12,
0x77, 0x7c, 0x1e, 0x70, 0xff, 0x9c, 0x23, 0x27, 0xc8, 0x47, 0x32, 0x8d, 0x49, 0x50, 0x31, 0xa2,
0xb1, 0x98, 0x77, 0x38, 0x1a, 0xd0, 0xb1, 0x37, 0x8b, 0x63, 0xc7, 0xdd, 0x09, 0x47, 0x03, 0x71,
0xaf, 0x08, 0x3e, 0x32, 0xe1, 0xbe, 0xf5, 0xe2, 0x02, 0xcf, 0x70, 0x1e, 0xf9, 0xc6, 0x21, 0xf7,
0x9f, 0x5f, 0x88, 0xab, 0x7f, 0x10, 0x20, 0x23, 0xb2, 0xaf, 0x5a, 0x15, 0x3c, 0xe0, 0xa5, 0x41,
0x20, 0x58, 0x90, 0x7d, 0x25, 0x0e, 0xa1, 0x18, 0xad, 0x8d, 0xbb, 0xc0, 0x87, 0xd8, 0x7c, 0x80,
0x1c, 0xb5, 0x86, 0x83, 0x6d, 0xcb, 0x02, 0xd1, 0x4f, 0x20, 0xa8, 0x5e, 0x0d, 0xf6, 0x64, 0x64,
0x9f, 0x06, 0xc8, 0x52, 0x6a, 0x66, 0x55, 0x02, 0xb7, 0x05, 0xcc, 0xf8, 0x94, 0x84, 0x2c, 0x6d,
0x6f, 0xe5, 0x99, 0x11, 0x57, 0x3d, 0x42, 0x70, 0x5f, 0x4b, 0xa6, 0xfc, 0x4a, 0xdb, 0xb4, 0x6c,
0xca, 0xa6, 0x19, 0xbf, 0x97, 0x81, 0xaa, 0x6c, 0x19, 0x85, 0x12, 0xf6, 0x08, 0x98, 0xda, 0xc5,
0xf0, 0xd2, 0x19, 0x5a, 0xc7, 0x57, 0x21, 0x0f, 0x88, 0x68, 0x76, 0x6e, 0x98, 0x4d, 0x59, 0xd6,
0xbf, 0x74, 0x86, 0x1b, 0xa2, 0x84, 0x3d, 0x84, 0x66, 0x02, 0x3f, 0x08, 0x7d, 0xa2, 0xe8, 0x9d,
0x1b, 0x66, 0x5d, 0xc3, 0xee, 0x85, 0xbe, 0x38, 0x23, 0x42, 0xe4, 0x99, 0x86, 0x96, 0xe3, 0x0e,
0xf9, 0x25, 0x92, 0x51, 0xcd, 0xac, 0x10, 0xac, 0x2b, 0x40, 0x1b, 0x75, 0xa8, 0xea, 0xcd, 0x19,
0xa7, 0x50, 0x52, 0xf2, 0x12, 0x0a, 0x0c, 0x33, 0x43, 0x32, 0xcb, 0x61, 0x34, 0x92, 0x9b, 0x50,
0x4a, 0x8e, 0xc0, 0x2c, 0x86, 0xaf, 0xdd, 0xb1, 0xf1, 0x03, 0x68, 0xee, 0x0a, 0xe2, 0x71, 0x05,
0xb1, 0x4a, 0xf9, 0x6f, 0x15, 0x16, 0xb4, 0x43, 0x53, 0x36, 0xe5, 0x97, 0xb8, 0x73, 0xcf, 0xbc,
0x20, 0x94, 0xbd, 0xe0, 0xdf, 0xc6, 0x1f, 0x65, 0x80, 0x75, 0x82, 0xd0, 0x19, 0xdb, 0x21, 0xdf,
0xe6, 0x11, 0x5b, 0x38, 0x80, 0xaa, 0x68, 0xad, 0xef, 0xb5, 0x49, 0x20, 0x23, 0x81, 0xe2, 0x5d,
0x79, 0x8c, 0xe7, 0x2b, 0x3c, 0xd2, 0xb1, 0x89, 0xcd, 0x27, 0x1a, 0x10, 0xa7, 0x2c, 0xb4, 0xfd,
0x53, 0x1e, 0xa2, 0x18, 0x27, 0xe5, 0x7d, 0x20, 0x90, 0x10, 0xe0, 0xd6, 0x7f, 0x15, 0x16, 0xe7,
0xda, 0xd0, 0xf9, 0x72, 0x39, 0x85, 0x2f, 0xe7, 0x74, 0xbe, 0x6c, 0xc1, 0x52, 0x62, 0x5c, 0x92,
0xd2, 0xd6, 0xa0, 0x28, 0x0e, 0x84, 0x10, 0x0e, 0x32, 0x24, 0x55, 0x9e, 0x70, 0x2e, 0xc4, 0xe0,
0xc7, 0xb0, 0x7c, 0xc2, 0xb9, 0x6f, 0x87, 0x58, 0x88, 0x27, 0x46, 0xec, 0x90, 0x6c, 0x78, 0x51,
0x96, 0xf5, 0xec, 0xf0, 0x90, 0xfb, 0x62, 0xa7, 0x8c, 0xff, 0x95, 0x81, 0x86, 0xe0, 0xa0, 0x7b,
0xb6, 0x7b, 0xa5, 0xd6, 0x69, 0x37, 0x75, 0x9d, 0x1e, 0x68, 0x97, 0xa1, 0x86, 0xfd, 0x55, 0x17,
0x29, 0x37, 0xbb, 0x48, 0xec, 0x1e, 0x54, 0x13, 0x63, 0x2d, 0xe0, 0x58, 0x21, 0x88, 0x06, 0xf9,
0xf3, 0x2f, 0xe3, 0x3b, 0xd0, 0x8c, 0x87, 0x2d, 0xd7, 0x90, 0x41, 0x5e, 0x90, 0xa4, 0x6c, 0x00,
0xff, 0x36, 0xfe, 0x65, 0x86, 0x10, 0x37, 0x3d, 0x27, 0x92, 0x4e, 0x05, 0xa2, 0x90, 0x7b, 0x15,
0xa2, 0xf8, 0xfb, 0x5a, 0xa9, 0xfe, 0xe7, 0x9f, 0xac, 0x38, 0x3a, 0x01, 0x77, 0x87, 0x96, 0x3d,
0x1a, 0x21, 0xf3, 0x2d, 0x99, 0x45, 0xf1, 0xdd, 0x1e, 0x8d, 0x8c, 0xfb, 0xb0, 0xa8, 0x8d, 0xee,
0x25, 0xf3, 0xd8, 0x07, 0xb6, 0xeb, 0x04, 0xe1, 0x91, 0x1b, 0x4c, 0x34, 0xc1, 0xed, 0x16, 0x94,
0x05, 0x87, 0x15, 0x23, 0xa3, 0x23, 0x5b, 0x30, 0x05, 0xcb, 0x15, 0xe3, 0x0a, 0xb0, 0xd0, 0xbe,
0x94, 0x85, 0x59, 0x59, 0x68, 0x5f, 0x62, 0xa1, 0xf1, 0x7d, 0x58, 0x4a, 0xb4, 0x27, 0xbb, 0x7e,
0x13, 0x0a, 0xd3, 0xf0, 0xd2, 0x53, 0xa2, 0x79, 0x45, 0x52, 0x88, 0x50, 0x00, 0x4d, 0x2a, 0x31,
0x3e, 0x82, 0xc5, 0x7d, 0x7e, 0x21, 0x0f, 0xb1, 0x1a, 0xc8, 0x3b, 0x90, 0x7f, 0x85, 0x52, 0x88,
0xe5, 0xc6, 0x23, 0x60, 0x7a, 0x65, 0xd9, 0xab, 0xa6, 0x23, 0x66, 0x12, 0x3a, 0xa2, 0xf1, 0x0e,
0xb0, 0x9e, 0x73, 0xea, 0xee, 0xf1, 0x20, 0xb0, 0x4f, 0xa3, 0x63, 0xdf, 0x84, 0xdc, 0x38, 0x38,
0x95, 0x3c, 0x4a, 0xfc, 0x69, 0x7c, 0x07, 0x96, 0x12, 0x78, 0xb2, 0xe1, 0xdb, 0x50, 0x0e, 0x9c,
0x53, 0x17, 0x05, 0x2b, 0xd9, 0x74, 0x0c, 0x30, 0xb6, 0x61, 0xf9, 0x13, 0xee, 0x3b, 0x27, 0x57,
0xaf, 0x6a, 0x3e, 0xd9, 0x4e, 0x76, 0xb6, 0x9d, 0x0e, 0xac, 0xcc, 0xb4, 0x23, 0xbb, 0x27, 0xf2,
0x95, 0x3b, 0x59, 0x32, 0xe9, 0x43, 0xe3, 0x7b, 0x59, 0x9d, 0xef, 0x19, 0x47, 0xc0, 0x36, 0x3d,
0xd7, 0xe5, 0x83, 0xf0, 0x90, 0x73, 0x3f, 0xb6, 0x52, 0xc5, 0xb4, 0x5a, 0x79, 0xba, 0x26, 0x57,
0x76, 0x96, 0x99, 0x4a, 0x22, 0x66, 0x90, 0x9f, 0x70, 0x7f, 0x8c, 0x0d, 0x97, 0x4c, 0xfc, 0xdb,
0x58, 0x81, 0xa5, 0x44, 0xb3, 0x52, 0xaf, 0x7f, 0x02, 0x2b, 0x5b, 0x4e, 0x30, 0x98, 0xef, 0x70,
0x0d, 0x8a, 0x93, 0xe9, 0xb1, 0x95, 0xe4, 0xcb, 0xcf, 0xf9, 0x95, 0xd0, 0xf6, 0x66, 0x6b, 0xc8,
0xb6, 0xfe, 0x6e, 0x06, 0xf2, 0x3b, 0xfd, 0xdd, 0x4d, 0xb6, 0x0e, 0x25, 0xc7, 0x1d, 0x78, 0x63,
0x21, 0x78, 0xd1, 0x9c, 0xa3, 0xef, 0x6b, 0x0f, 0xd8, 0x2d, 0x28, 0xa3, 0xbc, 0x26, 0x54, 0x5b,
0x29, 0xfa, 0x94, 0x04, 0x60, 0xd7, 0x1b, 0xbc, 0x10, 0x3a, 0x35, 0xbf, 0x9c, 0x38, 0x3e, 0x6a,
0xcd, 0x4a, 0x19, 0xce, 0xd3, 0x5d, 0x1f, 0x17, 0x90, 0x46, 0x6c, 0xfc, 0x75, 0x11, 0x8a, 0xf2,
0xb6, 0xa5, 0x9b, 0x3b, 0x74, 0xce, 0x79, 0x7c, 0x73, 0x8b, 0x2f, 0x21, 0x0f, 0xf8, 0x7c, 0xec,
0x85, 0x91, 0xc0, 0x46, 0x7b, 0x50, 0x25, 0xa0, 0x14, 0xd9, 0x34, 0xa1, 0x81, 0x4c, 0x0c, 0x39,
0x42, 0x1a, 0xe8, 0x57, 0xf9, 0x2d, 0x28, 0xaa, 0xbb, 0x3f, 0x1f, 0xe9, 0x34, 0x0b, 0x03, 0x92,
0xd6, 0xd6, 0xa1, 0x34, 0xb0, 0x27, 0xf6, 0xc0, 0x09, 0xaf, 0x24, 0x43, 0x88, 0xbe, 0x45, 0xeb,
0x23, 0x6f, 0x60, 0x8f, 0xac, 0x63, 0x7b, 0x64, 0xbb, 0x03, 0x2e, 0x75, 0xf7, 0x2a, 0x02, 0x37,
0x08, 0x26, 0xf4, 0x73, 0x39, 0x4e, 0x85, 0x45, 0x2a, 0xbc, 0x1c, 0xbd, 0x42, 0x13, 0xc2, 0xa5,
0x37, 0x1e, 0x3b, 0x42, 0xcb, 0x20, 0x31, 0x2c, 0x67, 0x96, 0x09, 0xb2, 0xcd, 0x71, 0xb6, 0xb2,
0xf8, 0x82, 0x96, 0xae, 0x4c, 0x5d, 0x11, 0xf0, 0x53, 0x32, 0x24, 0xcc, 0xcb, 0x62, 0x39, 0x4d,
0x16, 0x7b, 0x17, 0x16, 0xa7, 0x6e, 0xc0, 0xc3, 0x70, 0xc4, 0x87, 0xd1, 0x58, 0x2a, 0x88, 0xd4,
0x8c, 0x0a, 0xd4, 0x70, 0x1e, 0xc1, 0x12, 0x19, 0x1d, 0x02, 0x3b, 0xf4, 0x82, 0x33, 0x27, 0xb0,
0x02, 0xa1, 0x21, 0x91, 0xba, 0xbb, 0x88, 0x45, 0x3d, 0x59, 0xd2, 0x23, 0x15, 0x69, 0x6d, 0x06,
0xdf, 0xe7, 0x03, 0xee, 0x9c, 0xf3, 0x21, 0xca, 0x69, 0x39, 0x73, 0x25, 0x51, 0xc7, 0x94, 0x85,
0x28, 0x74, 0x4f, 0xc7, 0xd6, 0x74, 0x32, 0xb4, 0x85, 0xb0, 0x52, 0x27, 0x61, 0xd8, 0x9d, 0x8e,
0x8f, 0x08, 0xc2, 0x9e, 0x80, 0x92, 0xc4, 0xa4, 0x7c, 0xd8, 0x48, 0xf0, 0x33, 0x41, 0xac, 0x66,
0x55, 0x62, 0x90, 0xa0, 0x98, 0x90, 0x39, 0x9b, 0x33, 0x32, 0x67, 0x0b, 0x8a, 0x13, 0xdf, 0x39,
0xb7, 0x43, 0xde, 0x5a, 0x24, 0x06, 0x2e, 0x3f, 0x05, 0x67, 0x70, 0x5c, 0x27, 0x74, 0xec, 0xd0,
0xf3, 0x5b, 0x0c, 0xcb, 0x62, 0x00, 0x7b, 0x08, 0x8b, 0x48, 0x23, 0x41, 0x68, 0x87, 0xd3, 0x40,
0x4a, 0xa0, 0x4b, 0x48, 0x4c, 0x28, 0x43, 0xf7, 0x10, 0x8e, 0x42, 0x28, 0xfb, 0x0e, 0xac, 0x12,
0x59, 0x60, 0x0d, 0x29, 0x59, 0xa3, 0x40, 0xb0, 0x8c, 0x4b, 0xb1, 0x84, 0xa5, 0x82, 0xbe, 0xa5,
0x7c, 0x2d, 0xa4, 0x83, 0xf7, 0x61, 0x4d, 0x92, 0xc9, 0x5c, 0xad, 0x15, 0xac, 0xb5, 0x4c, 0xc5,
0x33, 0xd5, 0x1e, 0xc1, 0xa2, 0x18, 0x92, 0x33, 0xb0, 0x64, 0x6d, 0x71, 0x12, 0x56, 0xc5, 0xe8,
0x51, 0x53, 0x6a, 0x50, 0xa1, 0x89, 0x65, 0xcf, 0xf9, 0x15, 0xfb, 0x01, 0x34, 0x88, 0x64, 0x50,
0xbd, 0x42, 0x4e, 0xbf, 0x8e, 0x9c, 0x7e, 0x45, 0x59, 0x38, 0xa3, 0x52, 0x64, 0xf6, 0xf5, 0x41,
0xe2, 0x5b, 0x1c, 0x87, 0x91, 0x73, 0xc2, 0x43, 0x67, 0xcc, 0x5b, 0x6b, 0x44, 0x60, 0xea, 0x5b,
0x9c, 0xd4, 0xe9, 0x04, 0x4b, 0x5a, 0xc4, 0x17, 0xe8, 0x0b, 0x69, 0x77, 0xe4, 0x05, 0x5c, 0x99,
0xa8, 0x5a, 0x37, 0xe5, 0x21, 0x14, 0x40, 0xc9, 0xf6, 0x8c, 0x9f, 0x65, 0xe8, 0x1e, 0x93, 0xc7,
0x3e, 0xd0, 0xb4, 0x32, 0x3a, 0xf0, 0x96, 0xe7, 0x8e, 0xae, 0x24, 0x0f, 0x00, 0x02, 0x1d, 0xb8,
0x23, 0x3c, 0x84, 0x8e, 0xab, 0xa3, 0x10, 0xcb, 0xac, 0x2a, 0x20, 0x22, 0xdd, 0x85, 0xca, 0x64,
0x7a, 0x3c, 0x72, 0x06, 0x84, 0x92, 0xa3, 0x56, 0x08, 0x84, 0x08, 0x42, 0x2d, 0x25, 0x42, 0x20,
0x8c, 0x3c, 0x62, 0x54, 0x24, 0x0c, 0x51, 0x90, 0x25, 0x73, 0x1f, 0xb9, 0x40, 0xd5, 0xc4, 0xbf,
0x8d, 0x0d, 0x58, 0x4e, 0x0e, 0x5a, 0xde, 0x17, 0x0f, 0xa1, 0x24, 0x59, 0x8c, 0xb2, 0x57, 0xd4,
0x35, 0x0b, 0xb2, 0xd0, 0xac, 0xa2, 0x72, 0xe3, 0xb7, 0x16, 0x60, 0x49, 0x42, 0x37, 0xc5, 0x8a,
0xf4, 0xa6, 0xe3, 0xb1, 0xed, 0xa7, 0xf0, 0xae, 0xcc, 0xcb, 0x79, 0x57, 0x76, 0x8e, 0x77, 0x25,
0x15, 0x56, 0x62, 0x7d, 0x49, 0x85, 0x55, 0x6c, 0x01, 0xe9, 0x10, 0xba, 0xf9, 0xb2, 0x26, 0xc1,
0x7d, 0x32, 0x93, 0xce, 0x71, 0xda, 0x42, 0x0a, 0xa7, 0xd5, 0xf9, 0xe4, 0xc2, 0x0c, 0x9f, 0x7c,
0x13, 0x68, 0xaf, 0x15, 0xdb, 0x2f, 0x92, 0x5a, 0x81, 0x30, 0x69, 0x03, 0xbd, 0x0f, 0x8d, 0x59,
0xd6, 0x44, 0x3c, 0xb0, 0x9e, 0xc2, 0x98, 0x9c, 0x31, 0xc7, 0x4b, 0x46, 0x43, 0x2e, 0x4b, 0xc6,
0xe4, 0x8c, 0xf9, 0x2e, 0x96, 0x28, 0xfc, 0x0e, 0x00, 0xf5, 0x8d, 0xb4, 0x0e, 0x48, 0xeb, 0xef,
0x24, 0xf7, 0x42, 0x5f, 0xf5, 0x47, 0xe2, 0x63, 0xea, 0x73, 0x24, 0xfe, 0x32, 0xd6, 0x44, 0xba,
0x7f, 0x0e, 0x75, 0x6f, 0xc2, 0x5d, 0x2b, 0x66, 0x11, 0x15, 0x6c, 0xea, 0xed, 0x97, 0x34, 0xd5,
0x55, 0xb8, 0x66, 0x4d, 0xd4, 0x8d, 0x3e, 0xd9, 0x1e, 0x2d, 0x3c, 0xd7, 0x5a, 0xab, 0x7e, 0x85,
0xd6, 0xea, 0x58, 0x39, 0xfa, 0x36, 0xfe, 0x41, 0x06, 0x2a, 0xda, 0xb0, 0xd9, 0x0a, 0x2c, 0x6e,
0x1e, 0x1c, 0x1c, 0x76, 0xcc, 0x76, 0xbf, 0xfb, 0x49, 0xc7, 0xda, 0xdc, 0x3d, 0xe8, 0x75, 0x9a,
0x37, 0x04, 0x78, 0xf7, 0x60, 0xb3, 0xbd, 0x6b, 0x6d, 0x1f, 0x98, 0x9b, 0x0a, 0x9c, 0x61, 0xab,
0xc0, 0xcc, 0xce, 0xde, 0x41, 0xbf, 0x93, 0x80, 0x67, 0x59, 0x13, 0xaa, 0x1b, 0x66, 0xa7, 0xbd,
0xb9, 0x23, 0x21, 0x39, 0xb6, 0x0c, 0xcd, 0xed, 0xa3, 0xfd, 0xad, 0xee, 0xfe, 0x33, 0x6b, 0xb3,
0xbd, 0xbf, 0xd9, 0xd9, 0xed, 0x6c, 0x35, 0xf3, 0xac, 0x06, 0xe5, 0xf6, 0x46, 0x7b, 0x7f, 0xeb,
0x60, 0xbf, 0xb3, 0xd5, 0x2c, 0x18, 0xbf, 0x02, 0xe5, 0x78, 0xa2, 0x15, 0x28, 0x1e, 0xed, 0x3f,
0xdf, 0x3f, 0xf8, 0x74, 0xbf, 0x79, 0x83, 0x95, 0xa1, 0x80, 0xfd, 0x37, 0x33, 0x0c, 0x60, 0x81,
0xfa, 0x6c, 0x66, 0x59, 0x09, 0xf2, 0x1b, 0x07, 0xfd, 0x9d, 0x66, 0xce, 0xf8, 0xf3, 0x0c, 0xac,
0xe0, 0x94, 0x87, 0xb3, 0x4c, 0xe0, 0x1e, 0x54, 0x06, 0x9e, 0x37, 0x11, 0x0a, 0x52, 0x2c, 0x08,
0xe8, 0x20, 0x71, 0xc0, 0x89, 0xe7, 0x9e, 0x78, 0xfe, 0x80, 0x4b, 0x1e, 0x00, 0x08, 0xda, 0x16,
0x10, 0x41, 0x83, 0x92, 0x88, 0x09, 0x83, 0x58, 0x40, 0x85, 0x60, 0x84, 0xb2, 0x0a, 0x0b, 0xc7,
0x3e, 0xb7, 0x07, 0x67, 0xf2, 0xf4, 0xcb, 0x2f, 0xf6, 0xcd, 0x58, 0x75, 0x1f, 0x08, 0x9a, 0x1a,
0xf1, 0x21, 0x1e, 0x81, 0x92, 0xd9, 0x90, 0xf0, 0x4d, 0x09, 0x16, 0x97, 0x88, 0x7d, 0x6c, 0xbb,
0x43, 0xcf, 0xe5, 0x43, 0xa9, 0x21, 0xc4, 0x00, 0xe3, 0x10, 0x56, 0x67, 0xe7, 0x27, 0xf9, 0xc5,
0x07, 0x1a, 0xbf, 0x20, 0x81, 0x7d, 0xfd, 0x7a, 0x52, 0xd0, 0x78, 0xc7, 0x9f, 0xe5, 0x20, 0x2f,
0x04, 0xb8, 0x6b, 0x65, 0x3d, 0x5d, 0x22, 0xcf, 0xcd, 0x79, 0x6d, 0xd0, 0x42, 0x40, 0x37, 0x3b,
0x99, 0xa1, 0xca, 0x08, 0xc1, 0x1b, 0x3d, 0x2a, 0xf6, 0xf9, 0xe0, 0x5c, 0xda, 0xa1, 0xa8, 0xd8,
0xe4, 0x83, 0x73, 0x54, 0x85, 0xec, 0x90, 0xea, 0xd2, 0x79, 0x2f, 0x06, 0x76, 0x88, 0x35, 0x65,
0x11, 0xd6, 0x2b, 0x46, 0x45, 0x58, 0xab, 0x05, 0x45, 0xc7, 0x3d, 0xf6, 0xa6, 0xee, 0x10, 0x8f,
0x77, 0xc9, 0x54, 0x9f, 0xe8, 0x24, 0x42, 0x4e, 0x24, 0xee, 0x0f, 0x3a, 0xcd, 0x25, 0x01, 0xe8,
0x8b, 0x1b, 0xe4, 0x3d, 0x28, 0x07, 0x57, 0xee, 0x40, 0x3f, 0xc3, 0xcb, 0x72, 0x7d, 0xc4, 0xec,
0x1f, 0xf5, 0xae, 0xdc, 0x01, 0x9e, 0xd8, 0x52, 0x20, 0xff, 0x62, 0xef, 0x43, 0x29, 0x32, 0xd7,
0x12, 0x07, 0xbe, 0xa9, 0xd7, 0x50, 0x36, 0x5a, 0xd2, 0x8a, 0x23, 0xd4, 0xf5, 0xe7, 0x50, 0x4b,
0x14, 0xe9, 0xaa, 0x6c, 0x8d, 0x54, 0xd9, 0xb7, 0x75, 0x55, 0x36, 0x66, 0xec, 0xb2, 0x9a, 0xae,
0xda, 0xfe, 0x2a, 0x94, 0xd4, 0xc8, 0xc4, 0x71, 0x92, 0x47, 0xc1, 0xea, 0x7d, 0xb6, 0xbf, 0xd9,
0xbc, 0xc1, 0x1a, 0x50, 0x69, 0x6f, 0xe2, 0x09, 0x45, 0x40, 0x46, 0xa0, 0x1c, 0xb6, 0x7b, 0xbd,
0x08, 0x92, 0x35, 0x18, 0x34, 0xc5, 0xf5, 0x22, 0x46, 0x1c, 0x39, 0x64, 0x3e, 0x80, 0x45, 0x0d,
0x16, 0x6b, 0x7b, 0xe2, 0x3e, 0x9a, 0xd5, 0xf6, 0x50, 0xb6, 0xa7, 0x12, 0x63, 0x0d, 0x56, 0xc4,
0x67, 0xe7, 0x9c, 0xbb, 0x61, 0x6f, 0x7a, 0x4c, 0xee, 0x38, 0xc7, 0x73, 0x85, 0xcc, 0x5f, 0x8e,
0x4a, 0xae, 0x27, 0xa4, 0x47, 0x52, 0x31, 0xcc, 0xe2, 0xf2, 0xaf, 0x6b, 0x3d, 0x60, 0xc5, 0x47,
0xf8, 0x6f, 0x42, 0x41, 0x2c, 0x47, 0x20, 0x31, 0xd7, 0xc3, 0x4e, 0xc7, 0xb4, 0x0e, 0xf6, 0x77,
0xbb, 0xfb, 0x82, 0x19, 0x89, 0xb9, 0x22, 0x60, 0x7b, 0x1b, 0x21, 0x19, 0xa3, 0x09, 0xf5, 0x67,
0x3c, 0xec, 0xba, 0x27, 0x9e, 0x9a, 0xe9, 0x5f, 0x15, 0xa0, 0x11, 0x81, 0x62, 0x05, 0xf3, 0x9c,
0xfb, 0x81, 0xe3, 0xb9, 0x28, 0x2b, 0x96, 0x4d, 0xf5, 0x29, 0x6e, 0x10, 0x67, 0xc8, 0xdd, 0xd0,
0x09, 0xaf, 0xac, 0x84, 0x35, 0xaa, 0xae, 0xc0, 0xf2, 0xa6, 0x5a, 0x86, 0x82, 0x3d, 0x72, 0x6c,
0xe5, 0xc5, 0xa4, 0x0f, 0x01, 0x1d, 0x78, 0x23, 0xcf, 0x47, 0xb1, 0xb0, 0x6c, 0xd2, 0x07, 0x7b,
0x02, 0xcb, 0x42, 0x3c, 0xd5, 0x4d, 0x84, 0x78, 0x46, 0xc9, 0x30, 0xc6, 0xdc, 0xe9, 0xf8, 0x30,
0x36, 0x13, 0x8a, 0x12, 0x71, 0x3f, 0x89, 0x1a, 0x52, 0x20, 0x89, 0x2a, 0x90, 0xa6, 0xb3, 0xe8,
0x4e, 0xc7, 0x6d, 0x2c, 0x89, 0xf0, 0x9f, 0xc2, 0x8a, 0xc0, 0x8f, 0x44, 0x98, 0xa8, 0x46, 0x03,
0x6b, 0x88, 0xc6, 0xba, 0xb2, 0x2c, 0xaa, 0x73, 0x0b, 0xca, 0x34, 0x2a, 0xb1, 0xe3, 0x05, 0x92,
0x70, 0x71, 0x28, 0xdc, 0x0f, 0xe6, 0x1c, 0x8e, 0x0b, 0x74, 0xd9, 0xce, 0x38, 0x1c, 0x35, 0x97,
0x65, 0x69, 0xd6, 0x65, 0xf9, 0x14, 0x56, 0x8e, 0x79, 0x10, 0x5a, 0x67, 0xdc, 0x1e, 0x72, 0x1f,
0x4f, 0x24, 0xb9, 0x26, 0x49, 0x92, 0x5f, 0x12, 0x85, 0x3b, 0x58, 0xd6, 0x57, 0x45, 0x42, 0x96,
0x10, 0x47, 0x8f, 0x0f, 0xad, 0xd0, 0xb3, 0x50, 0xc4, 0xc0, 0x43, 0x5c, 0x32, 0x6b, 0x04, 0xee,
0x7b, 0x9b, 0x02, 0x98, 0xc4, 0x3b, 0xf5, 0xed, 0xc9, 0x99, 0x94, 0xb5, 0x23, 0xbc, 0x67, 0x02,
0xc8, 0x6e, 0x43, 0x31, 0xe4, 0x41, 0xe8, 0x72, 0xf2, 0x0b, 0x91, 0x34, 0xab, 0x40, 0xec, 0x6d,
0x58, 0xc0, 0x3e, 0x82, 0x56, 0x13, 0xe9, 0xbd, 0x1a, 0x33, 0x4b, 0xc7, 0x35, 0x65, 0x99, 0x10,
0xd8, 0xa6, 0xbe, 0x13, 0xb4, 0xaa, 0xe8, 0x0f, 0xc5, 0xbf, 0xd9, 0x0f, 0x35, 0xb6, 0xb0, 0x84,
0x75, 0xd5, 0x9d, 0x3b, 0x43, 0x69, 0xbf, 0x14, 0x0e, 0xf1, 0xa3, 0x7c, 0xa9, 0xd2, 0xac, 0x1a,
0xdf, 0x83, 0x02, 0xad, 0x8e, 0x20, 0x42, 0x5c, 0xbb, 0x8c, 0x24, 0x42, 0x84, 0xb6, 0xa0, 0xe8,
0xf2, 0xf0, 0xc2, 0xf3, 0x5f, 0x28, 0x7b, 0xad, 0xfc, 0x34, 0x7e, 0x8a, 0x86, 0x86, 0xc8, 0x19,
0x4d, 0x3a, 0x93, 0x20, 0x0f, 0xda, 0xde, 0xe0, 0xcc, 0x96, 0xb6, 0x8f, 0x12, 0x02, 0x7a, 0x67,
0xf6, 0x1c, 0x79, 0x64, 0xe7, 0xfd, 0xd1, 0x6f, 0x43, 0x5d, 0xb9, 0xbf, 0x03, 0x6b, 0xc4, 0x4f,
0x42, 0x49, 0xee, 0x55, 0xe9, 0xfb, 0x0e, 0x76, 0xf9, 0x49, 0x68, 0xec, 0xc1, 0xa2, 0x24, 0xc8,
0x83, 0x09, 0x57, 0x5d, 0x7f, 0x3f, 0x4d, 0x66, 0xad, 0x3c, 0x5d, 0x4a, 0x5e, 0x66, 0xe4, 0xd6,
0x4f, 0x08, 0xb2, 0xc6, 0xc7, 0xc0, 0xf4, 0xab, 0x4e, 0xb6, 0x27, 0x25, 0x47, 0x65, 0xe6, 0x56,
0xde, 0xa2, 0x48, 0x3e, 0x75, 0x86, 0x62, 0x75, 0x82, 0xe9, 0x60, 0xa0, 0xc2, 0x12, 0x4a, 0xa6,
0xfa, 0x34, 0xfe, 0x24, 0x03, 0x4b, 0xd8, 0x98, 0x92, 0xb9, 0xa5, 0x34, 0xf1, 0xb5, 0x07, 0x29,
0xf6, 0x47, 0x97, 0x2f, 0xe8, 0xe3, 0xab, 0x1b, 0x16, 0xf3, 0x73, 0x86, 0xc5, 0x6f, 0x42, 0x73,
0xc8, 0x47, 0x0e, 0x46, 0xa8, 0xa8, 0xeb, 0x9a, 0xa4, 0xec, 0x86, 0x82, 0x2b, 0x45, 0xe9, 0x9f,
0x65, 0x60, 0x91, 0xa4, 0x01, 0x54, 0x39, 0xe5, 0x42, 0x7d, 0xa4, 0x74, 0x2c, 0xc9, 0xaa, 0xe4,
0x9c, 0xe2, 0x5b, 0x12, 0xa1, 0x84, 0xbc, 0x73, 0x43, 0xea, 0x5e, 0x12, 0xca, 0x3e, 0x44, 0x3d,
0xc1, 0xb5, 0x10, 0x98, 0x12, 0xf1, 0x92, 0xdc, 0x94, 0x9d, 0x1b, 0xa8, 0x44, 0xb8, 0x08, 0xda,
0x28, 0x09, 0xa5, 0x4f, 0x80, 0x8d, 0x6d, 0xa8, 0x25, 0xba, 0x49, 0x58, 0x3f, 0xab, 0x64, 0xfd,
0x9c, 0xf3, 0x30, 0x64, 0xe7, 0x3d, 0x0c, 0x7f, 0x2f, 0x0f, 0x4c, 0x90, 0xd4, 0xcc, 0xae, 0xcd,
0xb8, 0xe7, 0xb2, 0x73, 0xee, 0xb9, 0x27, 0xc0, 0x34, 0x04, 0xe5, 0x35, 0xcc, 0x45, 0x5e, 0xc3,
0x66, 0x8c, 0x2b, 0x9d, 0x86, 0x4f, 0x60, 0x59, 0x0a, 0x8d, 0x91, 0x3f, 0x0e, 0xcd, 0x5a, 0xb4,
0x3f, 0x8c, 0xa4, 0x47, 0xe5, 0x97, 0x43, 0x13, 0x97, 0x72, 0xcd, 0x09, 0xb5, 0x9c, 0xac, 0x41,
0xe8, 0x9a, 0x13, 0x9a, 0xf8, 0x0c, 0x15, 0x2c, 0xbc, 0x92, 0x0a, 0x8a, 0x73, 0x54, 0xa0, 0x19,
0x27, 0x4a, 0x49, 0xe3, 0x84, 0x01, 0x35, 0xe5, 0x80, 0xa3, 0xb8, 0x03, 0x92, 0x90, 0x2a, 0xd2,
0x0b, 0x87, 0xb1, 0x07, 0x0f, 0xa0, 0xa9, 0x2c, 0x08, 0x91, 0xf9, 0x83, 0x7c, 0xea, 0xd2, 0x00,
0xb5, 0xa9, 0x8c, 0x20, 0x09, 0x63, 0x73, 0x65, 0xc6, 0xd8, 0xfc, 0x2e, 0x2c, 0x06, 0x82, 0x88,
0xac, 0xa9, 0x2b, 0x03, 0x60, 0xf8, 0x10, 0xd5, 0x93, 0x92, 0xd9, 0xc4, 0x82, 0xa3, 0x18, 0x3e,
0xaf, 0xda, 0xd7, 0xe6, 0x55, 0x7b, 0xf6, 0x7e, 0xec, 0xab, 0x0a, 0xce, 0x9c, 0x31, 0x5e, 0xdc,
0x71, 0xb0, 0x88, 0x5c, 0xe0, 0xde, 0x99, 0x33, 0x36, 0x95, 0x63, 0x54, 0x7c, 0x18, 0xff, 0x25,
0x03, 0x4d, 0x41, 0x07, 0x09, 0x3a, 0xff, 0x15, 0xc0, 0x13, 0xf9, 0x9a, 0x64, 0x5e, 0x11, 0xb8,
0x8a, 0xca, 0xbf, 0x07, 0x48, 0xb6, 0x96, 0xd0, 0xc5, 0x24, 0x91, 0xb7, 0x92, 0x44, 0x1e, 0x33,
0xb2, 0x9d, 0x1b, 0x24, 0x64, 0x0b, 0x48, 0x9a, 0x8f, 0x30, 0x9f, 0xe2, 0x23, 0xd4, 0x8e, 0xc2,
0x0e, 0xc0, 0x73, 0x7e, 0xb5, 0xeb, 0x0d, 0x50, 0x0b, 0xba, 0x03, 0x20, 0x08, 0xf2, 0xc4, 0x1e,
0x3b, 0xd2, 0x82, 0x51, 0x30, 0xcb, 0x2f, 0xf8, 0xd5, 0x36, 0x02, 0xc4, 0x6e, 0x88, 0xe2, 0xf8,
0x3c, 0x14, 0xcc, 0xd2, 0x0b, 0x7e, 0x45, 0x87, 0xc1, 0x82, 0xda, 0x73, 0x7e, 0xb5, 0xc5, 0x49,
0x5c, 0xf3, 0x7c, 0x41, 0x09, 0xbe, 0x7d, 0x21, 0xe4, 0xb3, 0x84, 0x7f, 0xaf, 0xe2, 0xdb, 0x17,
0xcf, 0xf9, 0x95, 0xf2, 0x35, 0x16, 0x45, 0xf9, 0xc8, 0x1b, 0xc8, 0x1b, 0x48, 0x45, 0x2a, 0xc4,
0x83, 0x32, 0x17, 0x5e, 0xe0, 0xdf, 0xc6, 0x1f, 0x67, 0xa0, 0x26, 0xc6, 0x8f, 0x0c, 0x4e, 0xac,
0xbb, 0x0a, 0x78, 0xc9, 0xc4, 0x01, 0x2f, 0x4f, 0x25, 0x7f, 0x20, 0x6e, 0x99, 0xbd, 0x9e, 0x5b,
0xe2, 0x02, 0x13, 0xab, 0x7c, 0x0f, 0xca, 0x74, 0xb6, 0xc4, 0x61, 0xcd, 0x25, 0x76, 0x29, 0x31,
0x21, 0xb3, 0x84, 0x68, 0xcf, 0xc9, 0xbf, 0xae, 0x19, 0xb1, 0x68, 0x89, 0xcb, 0x7e, 0x64, 0xba,
0x4a, 0xd9, 0x86, 0x42, 0x9a, 0xab, 0xf6, 0x08, 0x2a, 0x1a, 0x4d, 0xa1, 0xc5, 0x2b, 0x1a, 0x3c,
0x11, 0x60, 0x92, 0x68, 0x12, 0xb3, 0xdf, 0xb9, 0x61, 0xd6, 0x06, 0x3a, 0x60, 0x63, 0x01, 0xf2,
0xa2, 0x92, 0xf1, 0x11, 0x2c, 0x6a, 0xcd, 0x92, 0xc6, 0x97, 0x36, 0xa6, 0x4c, 0xda, 0x98, 0xfe,
0x79, 0x06, 0x96, 0x65, 0x6d, 0x0c, 0x8e, 0x72, 0xc4, 0x75, 0xbd, 0x17, 0x9c, 0xb2, 0x5f, 0x81,
0x9a, 0x68, 0xdd, 0xf2, 0xf9, 0xa9, 0x13, 0x84, 0x5c, 0x79, 0x07, 0x52, 0x0e, 0x87, 0xe0, 0xda,
0x02, 0xd5, 0x94, 0x98, 0xec, 0x23, 0xa8, 0x60, 0x55, 0xd2, 0x49, 0xe5, 0xb6, 0xb4, 0xe6, 0x2b,
0xd2, 0x50, 0x77, 0x6e, 0x98, 0x10, 0x44, 0x5f, 0x1b, 0x65, 0x28, 0x86, 0xbe, 0x73, 0x7a, 0xca,
0x7d, 0x63, 0x35, 0x1a, 0x9a, 0x38, 0x69, 0xbc, 0x17, 0xf2, 0x89, 0x10, 0x82, 0x8c, 0xff, 0x96,
0x81, 0x8a, 0x3c, 0x3b, 0x5f, 0xdb, 0x25, 0xb0, 0xae, 0x45, 0xf7, 0x91, 0xfa, 0x19, 0x07, 0xf3,
0xdd, 0x87, 0xc6, 0x58, 0x08, 0x44, 0x42, 0x60, 0x4f, 0xf8, 0x03, 0xea, 0x0a, 0x2c, 0xe5, 0x91,
0x47, 0xb0, 0x84, 0xe2, 0x49, 0x60, 0x85, 0xce, 0xc8, 0x52, 0x85, 0x32, 0x92, 0x6e, 0x91, 0x8a,
0xfa, 0xce, 0x68, 0x4f, 0x16, 0x88, 0x5b, 0x3a, 0x08, 0xed, 0x53, 0x2e, 0x45, 0x5f, 0xfa, 0x30,
0x5a, 0xb0, 0x3a, 0x23, 0xab, 0x2b, 0x3d, 0xe3, 0x1f, 0xd6, 0x60, 0x6d, 0xae, 0x48, 0xea, 0x1b,
0x91, 0x1d, 0x7c, 0xe4, 0x8c, 0x8f, 0xbd, 0xc8, 0xdc, 0x94, 0xd1, 0xec, 0xe0, 0xbb, 0xa2, 0x44,
0x99, 0x9b, 0x38, 0xac, 0x28, 0x82, 0x40, 0x7b, 0x51, 0x24, 0xce, 0x67, 0x51, 0xd8, 0x7c, 0x2f,
0xc9, 0xa8, 0x66, 0xbb, 0x53, 0x70, 0xfd, 0xfa, 0x5b, 0x9a, 0xcc, 0xc1, 0x02, 0x76, 0x02, 0xad,
0x88, 0xee, 0xa4, 0x7c, 0xa4, 0xe9, 0x26, 0xa2, 0xa7, 0x6f, 0xbd, 0xa2, 0xa7, 0x84, 0x21, 0xc2,
0x5c, 0x55, 0xe4, 0x4a, 0x8d, 0x45, 0xfd, 0x9c, 0xc3, 0x1b, 0xaa, 0x1f, 0x94, 0x75, 0xe6, 0x7b,
0xcb, 0xbf, 0xd6, 0xbc, 0xd0, 0xc0, 0x92, 0xec, 0xf2, 0x96, 0x6c, 0x38, 0x2a, 0xd2, 0xfb, 0x3d,
0x83, 0xd5, 0x0b, 0xdb, 0x09, 0xd5, 0xfc, 0x34, 0xb5, 0xa8, 0x80, 0xfd, 0x3d, 0x7d, 0x45, 0x7f,
0x9f, 0x52, 0xe5, 0x84, 0xf4, 0xb7, 0x7c, 0x31, 0x0f, 0x0c, 0xd6, 0xff, 0x53, 0x16, 0xea, 0xc9,
0x56, 0xc4, 0xa1, 0x96, 0x7c, 0x48, 0xc9, 0x13, 0x52, 0x1e, 0x97, 0x66, 0xd0, 0x7d, 0x92, 0x23,
0xe6, 0x0d, 0xb4, 0xd9, 0x14, 0x03, 0xad, 0x6e, 0x17, 0xcd, 0xbd, 0xca, 0x7f, 0x94, 0x7f, 0x2d,
0xff, 0x51, 0x21, 0xcd, 0x7f, 0x74, 0xbd, 0xd3, 0x61, 0xe1, 0x6b, 0x39, 0x1d, 0x8a, 0xd7, 0x3b,
0x1d, 0xd6, 0xff, 0x3a, 0x03, 0x6c, 0x9e, 0x52, 0xd9, 0x33, 0xb2, 0x45, 0xbb, 0x7c, 0x24, 0xb9,
0xd8, 0xb7, 0x5f, 0x8f, 0xda, 0xd5, 0x06, 0xa9, 0xda, 0xec, 0x31, 0x2c, 0xe9, 0xb1, 0xb7, 0xba,
0xaa, 0x52, 0x33, 0x99, 0x5e, 0x14, 0x2b, 0xb4, 0x9a, 0xf3, 0x2c, 0xff, 0x4a, 0xe7, 0x59, 0xe1,
0x95, 0xce, 0xb3, 0x85, 0xa4, 0xf3, 0x6c, 0xfd, 0xef, 0x64, 0x60, 0x29, 0x85, 0xa8, 0x7e, 0x71,
0x73, 0x16, 0xb4, 0x90, 0x60, 0x31, 0x59, 0x49, 0x0b, 0x1a, 0x77, 0x59, 0xff, 0x02, 0x6a, 0x89,
0x43, 0xf4, 0x8b, 0xeb, 0x7e, 0x56, 0xd1, 0x22, 0x52, 0xd6, 0x15, 0xad, 0xf5, 0xbf, 0xcc, 0x02,
0x9b, 0x3f, 0xc7, 0xbf, 0xcc, 0x21, 0xcc, 0x2f, 0x52, 0x6e, 0x7e, 0x91, 0xfe, 0xdf, 0xdd, 0x2b,
0xef, 0xc2, 0xa2, 0xcc, 0x17, 0xd0, 0x1c, 0x0f, 0x44, 0x28, 0xcd, 0xa8, 0x40, 0x8d, 0xe2, 0x7b,
0xb3, 0x7e, 0xcb, 0x52, 0x22, 0x44, 0x5a, 0xbb, 0x58, 0x93, 0xee, 0x4b, 0x63, 0x1d, 0x5a, 0x72,
0x69, 0xe6, 0x4d, 0x75, 0xbf, 0x93, 0x8f, 0xb4, 0x64, 0x2c, 0x94, 0x42, 0xf1, 0x77, 0xa0, 0xaa,
0x5f, 0x36, 0x72, 0x1f, 0x66, 0x3c, 0x4e, 0x42, 0x1c, 0xf6, 0xb4, 0xd3, 0xba, 0x09, 0xe4, 0x47,
0x18, 0x46, 0xd5, 0x48, 0x82, 0x78, 0x89, 0xe1, 0x19, 0x85, 0xa3, 0xc4, 0xe6, 0xff, 0x7f, 0x50,
0x4f, 0xda, 0xad, 0xa4, 0xa8, 0x97, 0x26, 0x1d, 0x8a, 0xda, 0x09, 0x43, 0x16, 0xfb, 0x21, 0x34,
0x67, 0xed, 0x5e, 0x32, 0x7e, 0xf3, 0x9a, 0xfa, 0x0d, 0x27, 0x69, 0x0a, 0x63, 0x3b, 0xb0, 0x9c,
0x76, 0xdd, 0xe2, 0xae, 0x5c, 0xaf, 0x16, 0xb0, 0xf9, 0x2b, 0x95, 0x7d, 0x5f, 0x9a, 0x37, 0x0b,
0x69, 0x8e, 0x18, 0x6d, 0xb1, 0x1f, 0xd1, 0x7f, 0x9a, 0xa1, 0xf3, 0x1c, 0x20, 0x86, 0xb1, 0x26,
0x54, 0x0f, 0x0e, 0x3b, 0xfb, 0xd6, 0xe6, 0x4e, 0x7b, 0x7f, 0xbf, 0xb3, 0xdb, 0xbc, 0xc1, 0x18,
0xd4, 0xd1, 0x83, 0xb2, 0x15, 0xc1, 0x32, 0x02, 0x26, 0x6d, 0xbf, 0x0a, 0x96, 0x65, 0xcb, 0xd0,
0xec, 0xee, 0xcf, 0x40, 0x73, 0xac, 0x05, 0xcb, 0x87, 0x1d, 0x72, 0xba, 0x24, 0xda, 0xcd, 0x0b,
0x11, 0x4e, 0x4e, 0x57, 0x88, 0x70, 0x94, 0x6d, 0x22, 0xa9, 0x4f, 0x49, 0x36, 0xbf, 0x9b, 0x81,
0x95, 0x99, 0x82, 0x38, 0x86, 0x98, 0xe4, 0x9a, 0xa4, 0x44, 0x53, 0x45, 0xa0, 0xa2, 0xe1, 0x77,
0x61, 0x31, 0x52, 0xf5, 0x66, 0xf8, 0x52, 0x33, 0x2a, 0x50, 0xc8, 0x8f, 0x61, 0x49, 0xd3, 0x18,
0x67, 0x4e, 0x28, 0xd3, 0x8a, 0x64, 0x05, 0x63, 0x2d, 0x8a, 0xd5, 0x9c, 0x19, 0xf5, 0x90, 0x52,
0x58, 0xf4, 0x82, 0xd8, 0xfa, 0x9b, 0x1c, 0xaf, 0xfa, 0x14, 0xaa, 0x7c, 0x82, 0x10, 0x92, 0xa3,
0xd5, 0x37, 0x5c, 0x75, 0xff, 0xfb, 0x0b, 0xc0, 0x3e, 0x9e, 0x72, 0xff, 0x0a, 0x63, 0x84, 0x83,
0x57, 0x05, 0xcd, 0x28, 0xb5, 0x28, 0xfb, 0x5a, 0x79, 0x00, 0x69, 0x71, 0xf8, 0xf9, 0x57, 0xc7,
0xe1, 0x17, 0x5e, 0x15, 0x87, 0xff, 0x16, 0xd4, 0x9c, 0x53, 0xd7, 0x13, 0x0c, 0x48, 0xc8, 0x26,
0x41, 0x6b, 0xe1, 0x5e, 0xee, 0x41, 0xd5, 0xac, 0x4a, 0xa0, 0x90, 0x4c, 0x02, 0xf6, 0x51, 0x8c,
0xc4, 0x87, 0xa7, 0x98, 0x33, 0xa2, 0xb3, 0x9e, 0xce, 0xf0, 0x94, 0x4b, 0x2d, 0x10, 0xed, 0x22,
0xaa, 0xb2, 0x80, 0x07, 0xec, 0x6d, 0xa8, 0x07, 0xde, 0x54, 0x88, 0x7a, 0x6a, 0x19, 0xc8, 0x3e,
0x5c, 0x25, 0xe8, 0xa1, 0x72, 0x06, 0x2c, 0x4d, 0x03, 0x6e, 0x8d, 0x9d, 0x20, 0x10, 0x17, 0xf4,
0xc0, 0x73, 0x43, 0xdf, 0x1b, 0x49, 0x93, 0xef, 0xe2, 0x34, 0xe0, 0x7b, 0x54, 0xb2, 0x49, 0x05,
0xec, 0xbb, 0xf1, 0x90, 0x26, 0xb6, 0xe3, 0x07, 0x2d, 0xc0, 0x21, 0xa9, 0x99, 0xa2, 0x44, 0x65,
0x3b, 0x7e, 0x34, 0x16, 0xf1, 0x11, 0xcc, 0xe4, 0x07, 0x54, 0x66, 0xf3, 0x03, 0x7e, 0x92, 0x9e,
0x1f, 0x50, 0xc3, 0xa6, 0x9f, 0xc8, 0xa6, 0xe7, 0xb7, 0xf8, 0x2b, 0xa5, 0x09, 0xcc, 0xa7, 0x3d,
0xd4, 0xbf, 0x4a, 0xda, 0x43, 0x23, 0x2d, 0xed, 0xe1, 0x3d, 0xa8, 0x60, 0x40, 0xba, 0x75, 0xe6,
0xb8, 0xa1, 0x32, 0x61, 0x37, 0xf5, 0x88, 0xf5, 0x1d, 0xa1, 0x4c, 0x83, 0xaf, 0xfe, 0x0c, 0xe6,
0x33, 0x10, 0x16, 0x7f, 0x89, 0x19, 0x08, 0x32, 0x70, 0xfe, 0x11, 0x94, 0xd4, 0x3e, 0x31, 0x06,
0xf9, 0x13, 0xdf, 0x1b, 0x2b, 0xd3, 0x9e, 0xf8, 0x9b, 0xd5, 0x21, 0x1b, 0x7a, 0xb2, 0x72, 0x36,
0xf4, 0x8c, 0xdf, 0x80, 0x8a, 0x46, 0x6a, 0xec, 0x4d, 0x32, 0x22, 0x08, 0x69, 0x59, 0x6a, 0xc9,
0xb4, 0x8a, 0x65, 0x09, 0xed, 0x0e, 0x05, 0xbf, 0x19, 0x3a, 0x3e, 0xc7, 0x5c, 0x21, 0xcb, 0xe7,
0xe7, 0xdc, 0x0f, 0x94, 0xa9, 0xb5, 0x19, 0x15, 0x98, 0x04, 0x37, 0xfe, 0x26, 0x2c, 0x25, 0xf6,
0x56, 0xb2, 0x88, 0xb7, 0x61, 0x01, 0xd7, 0x4d, 0xb9, 0xc2, 0x92, 0x99, 0x00, 0xb2, 0x0c, 0x93,
0x40, 0xc9, 0x4a, 0x6c, 0x4d, 0x7c, 0xef, 0x18, 0x3b, 0xc9, 0x98, 0x15, 0x09, 0x3b, 0xf4, 0xbd,
0x63, 0xe3, 0xcf, 0x72, 0x90, 0xdb, 0xf1, 0x26, 0x7a, 0x84, 0x45, 0x66, 0x2e, 0xc2, 0x42, 0xaa,
0x00, 0x56, 0x24, 0xe2, 0x4b, 0xa9, 0x0d, 0xed, 0xa3, 0x4a, 0xcc, 0x7f, 0x00, 0x75, 0xc1, 0x27,
0x42, 0x4f, 0xe8, 0x50, 0x17, 0xb6, 0x4f, 0x79, 0x01, 0x39, 0x3a, 0x7c, 0xf6, 0x38, 0xec, 0x7b,
0xdb, 0x04, 0x67, 0xcb, 0x90, 0x8b, 0x04, 0x58, 0x2c, 0x16, 0x9f, 0x42, 0xb9, 0xc6, 0x08, 0xb9,
0x2b, 0xe9, 0xeb, 0x91, 0x5f, 0xec, 0xdb, 0xb0, 0x94, 0x6c, 0x97, 0x58, 0x91, 0x94, 0x48, 0xf4,
0x86, 0x91, 0x27, 0xdd, 0x04, 0xc1, 0x47, 0x08, 0x47, 0xba, 0x65, 0x4f, 0x38, 0xc7, 0x22, 0x8d,
0xe9, 0x95, 0x12, 0x4c, 0xef, 0x2e, 0x54, 0xc2, 0xd1, 0xb9, 0x35, 0xb1, 0xaf, 0x46, 0x9e, 0x3d,
0x94, 0xe7, 0x1b, 0xc2, 0xd1, 0xf9, 0x21, 0x41, 0xd8, 0x63, 0x80, 0xf1, 0x64, 0x22, 0xcf, 0x1e,
0x9a, 0x1b, 0x63, 0x52, 0xde, 0x3b, 0x3c, 0x24, 0x92, 0x33, 0xcb, 0xe3, 0xc9, 0x84, 0xfe, 0x64,
0x5b, 0x50, 0x4f, 0xcd, 0xe7, 0xb9, 0xa3, 0x02, 0xba, 0xbc, 0xc9, 0xa3, 0x94, 0xc3, 0x59, 0x1b,
0xe8, 0xb0, 0xf5, 0x1f, 0x02, 0xfb, 0x39, 0xb3, 0x6a, 0xfa, 0x50, 0x8e, 0xc6, 0xa7, 0x27, 0xa5,
0x60, 0x88, 0x66, 0x25, 0x91, 0x94, 0xd2, 0x1e, 0x0e, 0x7d, 0xc1, 0x17, 0xe9, 0xc2, 0x8c, 0x58,
0x3e, 0x68, 0x37, 0x66, 0x9b, 0xf8, 0xbe, 0xf1, 0x17, 0x19, 0x28, 0x50, 0x86, 0xcc, 0x3b, 0xd0,
0x20, 0xfc, 0x28, 0x5a, 0x45, 0x7a, 0x88, 0xe8, 0xde, 0xed, 0xcb, 0x40, 0x15, 0x71, 0x2c, 0xb4,
0xec, 0xbe, 0x6c, 0xb4, 0xf3, 0x5a, 0x86, 0xdf, 0x5d, 0x28, 0x47, 0x5d, 0x6b, 0xa4, 0x53, 0x52,
0x3d, 0xb3, 0x37, 0x20, 0x7f, 0xe6, 0x4d, 0x94, 0x2e, 0x0e, 0xf1, 0x4a, 0x9a, 0x08, 0x8f, 0xc7,
0x22, 0xfa, 0xa0, 0xc1, 0x4b, 0x1d, 0x32, 0xea, 0x04, 0xc9, 0x60, 0x7e, 0x8e, 0x0b, 0x29, 0x73,
0x3c, 0x82, 0x86, 0xe0, 0x03, 0x9a, 0xa7, 0xf6, 0xfa, 0x4b, 0xf3, 0x9b, 0x42, 0xc2, 0x1b, 0x8c,
0xa6, 0x43, 0xae, 0x5b, 0x42, 0x30, 0x74, 0x42, 0xc2, 0x95, 0x7a, 0x60, 0xfc, 0x7e, 0x86, 0xf8,
0x8b, 0x68, 0x97, 0x3d, 0x80, 0xbc, 0xb8, 0xdf, 0x66, 0x2c, 0x75, 0x51, 0xac, 0xac, 0xc0, 0x33,
0x11, 0x03, 0x53, 0x62, 0xa7, 0xe3, 0x64, 0xeb, 0x35, 0xb3, 0xe2, 0x4e, 0xc7, 0x91, 0x31, 0xe1,
0x1b, 0x6a, 0x5a, 0x33, 0x8a, 0x38, 0xcd, 0x3e, 0x3a, 0xa6, 0x8f, 0xb4, 0x18, 0x8c, 0x7c, 0xe2,
0xc6, 0x54, 0x52, 0xe0, 0xf0, 0x94, 0x6b, 0xb1, 0x17, 0x7f, 0x98, 0x85, 0x5a, 0x62, 0x44, 0x18,
0x84, 0x22, 0x2e, 0x00, 0xb2, 0x02, 0xcb, 0xfd, 0x06, 0x01, 0x92, 0x82, 0xba, 0xb6, 0x4e, 0xd9,
0xc4, 0x3a, 0x45, 0x3e, 0xe9, 0x9c, 0xee, 0x93, 0x7e, 0x02, 0xe5, 0x38, 0xab, 0x33, 0x39, 0x24,
0xd1, 0x9f, 0x8a, 0x18, 0x8e, 0x91, 0x62, 0x2f, 0x76, 0x41, 0xf7, 0x62, 0xff, 0x40, 0x73, 0x7a,
0x2e, 0x60, 0x33, 0x46, 0xda, 0x8a, 0xfe, 0x72, 0x82, 0x22, 0x3e, 0x82, 0x8a, 0x36, 0x78, 0xdd,
0xb9, 0x99, 0x49, 0x38, 0x37, 0xa3, 0xd8, 0xfe, 0x6c, 0x1c, 0xdb, 0x6f, 0xfc, 0x56, 0x16, 0x6a,
0xe2, 0x7c, 0x39, 0xee, 0xe9, 0xa1, 0x37, 0x72, 0x06, 0x68, 0x15, 0x8e, 0x4e, 0x98, 0x14, 0xb4,
0xd4, 0x39, 0x93, 0x47, 0x8c, 0xe4, 0x2c, 0x3d, 0x85, 0x89, 0x98, 0x74, 0x94, 0xc2, 0x64, 0x40,
0x4d, 0x30, 0xc6, 0x63, 0x3b, 0xe0, 0x5a, 0xce, 0xa9, 0x59, 0x39, 0xe1, 0x7c, 0xc3, 0x0e, 0x88,
0x43, 0x7e, 0x1b, 0x96, 0x04, 0x0e, 0x66, 0x6f, 0x8c, 0x9d, 0xd1, 0xc8, 0x21, 0x4c, 0x32, 0x35,
0x34, 0x4f, 0x38, 0x37, 0xed, 0x90, 0xef, 0x89, 0x02, 0x99, 0xa2, 0x5a, 0x1a, 0x3a, 0x81, 0x7d,
0x1c, 0x87, 0x0a, 0x45, 0xdf, 0xe8, 0xcb, 0xb1, 0x2f, 0x35, 0x5f, 0x0e, 0xa5, 0x71, 0x55, 0xc6,
0xf6, 0x65, 0xe4, 0xcb, 0x99, 0xa1, 0xa4, 0xe2, 0x2c, 0x25, 0x19, 0xff, 0x35, 0x0b, 0x15, 0x8d,
0x2c, 0x5f, 0xe7, 0x76, 0xbd, 0x33, 0x67, 0xc5, 0x2f, 0xeb, 0x06, 0xfb, 0xb7, 0x92, 0x5d, 0xa2,
0xcb, 0x97, 0x92, 0x61, 0x35, 0x02, 0xbe, 0x05, 0x65, 0x71, 0xea, 0xde, 0x43, 0xa3, 0x98, 0x4c,
0xe5, 0x46, 0xc0, 0xe1, 0xf4, 0x58, 0x15, 0x3e, 0xc5, 0xc2, 0x42, 0x5c, 0xf8, 0x54, 0x14, 0xbe,
0x2c, 0x3e, 0xf0, 0x7b, 0x50, 0x95, 0xad, 0xe2, 0x9e, 0xe2, 0x74, 0xe3, 0x53, 0x9f, 0xd8, 0x6f,
0xb3, 0x42, 0xdd, 0xd1, 0xe6, 0xcb, 0x8a, 0x4f, 0x55, 0xc5, 0xd2, 0xab, 0x2a, 0x3e, 0xa5, 0x0f,
0x63, 0x3b, 0x0a, 0xb9, 0xc4, 0x70, 0x03, 0xc5, 0xc7, 0x1e, 0xc3, 0x92, 0x62, 0x57, 0x53, 0xd7,
0x76, 0x5d, 0x6f, 0xea, 0x0e, 0xb8, 0x0a, 0xfa, 0x67, 0xb2, 0xe8, 0x28, 0x2e, 0x31, 0x86, 0x51,
0x56, 0x18, 0x85, 0x2d, 0x3c, 0x84, 0x02, 0xc9, 0xe5, 0x24, 0x7c, 0xa4, 0x33, 0x2e, 0x42, 0x61,
0x0f, 0xa0, 0x40, 0xe2, 0x79, 0xf6, 0x5a, 0x66, 0x43, 0x08, 0xc6, 0x23, 0x68, 0xa0, 0x88, 0xa9,
0x71, 0xdc, 0x97, 0x49, 0x25, 0xc6, 0x32, 0xb0, 0x7d, 0x3a, 0x44, 0x7a, 0x38, 0xcd, 0xff, 0xc8,
0x41, 0x45, 0x03, 0x0b, 0xb6, 0x88, 0x01, 0x18, 0xd6, 0xd0, 0xb1, 0xc7, 0x5c, 0xf9, 0x1e, 0x6a,
// 11219 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x7d, 0x6b, 0x8f, 0x1c, 0x49,
0x72, 0x18, 0xfb, 0x35, 0xdd, 0x1d, 0xfd, 0x9c, 0x9c, 0x57, 0x73, 0xb8, 0x5c, 0x72, 0x6b, 0xf7,
0x96, 0x3c, 0xee, 0x1d, 0xc9, 0xe5, 0x1d, 0xf7, 0x4e, 0xbb, 0xf6, 0xe9, 0x7a, 0x66, 0x7a, 0x38,
0x7d, 0x9c, 0xd7, 0x56, 0xf7, 0xec, 0x6a, 0x4f, 0x96, 0xeb, 0x6a, 0xba, 0x73, 0x66, 0x4a, 0xec,
0xae, 0xea, 0xad, 0xaa, 0x9e, 0xc7, 0x1d, 0xd6, 0x1f, 0xfc, 0x10, 0x0c, 0xbf, 0x00, 0xc1, 0x96,
0x01, 0xcb, 0x16, 0x6c, 0xd8, 0x30, 0x0c, 0xc3, 0x80, 0x20, 0xe3, 0x64, 0xc0, 0x1f, 0xfc, 0x5d,
0x5f, 0x6c, 0xe8, 0x83, 0xe4, 0x2f, 0x86, 0x20, 0x40, 0xb0, 0x7c, 0xfe, 0xaa, 0x9f, 0x60, 0x64,
0x44, 0x66, 0x55, 0x56, 0x77, 0x0d, 0xc9, 0xbd, 0x5b, 0xdf, 0x17, 0x72, 0x2a, 0x32, 0xf2, 0x1d,
0x19, 0x19, 0x8f, 0x8c, 0x68, 0x28, 0xfb, 0x93, 0xc1, 0xc3, 0x89, 0xef, 0x85, 0x1e, 0x2b, 0x8c,
0x5c, 0x7f, 0x32, 0x58, 0x7f, 0xe3, 0xd4, 0xf3, 0x4e, 0x47, 0xfc, 0x91, 0x3d, 0x71, 0x1e, 0xd9,
0xae, 0xeb, 0x85, 0x76, 0xe8, 0x78, 0x6e, 0x40, 0x48, 0xc6, 0x8f, 0xa0, 0xfe, 0x8c, 0xbb, 0x3d,
0xce, 0x87, 0x26, 0xff, 0x7c, 0xca, 0x83, 0x90, 0xbd, 0x07, 0x8b, 0x36, 0xff, 0x31, 0xe7, 0x43,
0x6b, 0x62, 0x07, 0xc1, 0xe4, 0xcc, 0xb7, 0x03, 0xde, 0xca, 0xdc, 0xcd, 0xdc, 0xaf, 0x9a, 0x4d,
0x2a, 0x38, 0x8c, 0xe0, 0xec, 0x2d, 0xa8, 0x06, 0x02, 0x95, 0xbb, 0xa1, 0xef, 0x4d, 0xae, 0x5a,
0x59, 0xc4, 0xab, 0x08, 0x58, 0x87, 0x40, 0xc6, 0x08, 0x1a, 0x51, 0x0f, 0xc1, 0xc4, 0x73, 0x03,
0xce, 0x1e, 0xc3, 0xf2, 0xc0, 0x99, 0x9c, 0x71, 0xdf, 0xc2, 0xca, 0x63, 0x97, 0x8f, 0x3d, 0xd7,
0x19, 0xb4, 0x32, 0x77, 0x73, 0xf7, 0xcb, 0x26, 0xa3, 0x32, 0x51, 0x63, 0x4f, 0x96, 0xb0, 0x7b,
0xd0, 0xe0, 0x2e, 0xc1, 0xf9, 0x10, 0x6b, 0xc9, 0xae, 0xea, 0x31, 0x58, 0x54, 0x30, 0xfe, 0x7e,
0x16, 0x16, 0xbb, 0xae, 0x13, 0x7e, 0x6a, 0x8f, 0x46, 0x3c, 0x54, 0x73, 0xba, 0x07, 0x8d, 0x0b,
0x04, 0xe0, 0x9c, 0x2e, 0x3c, 0x7f, 0x28, 0x67, 0x54, 0x27, 0xf0, 0xa1, 0x84, 0x5e, 0x3b, 0xb2,
0xec, 0xb5, 0x23, 0x4b, 0x5d, 0xae, 0xdc, 0x35, 0xcb, 0x75, 0x0f, 0x1a, 0x3e, 0x1f, 0x78, 0xe7,
0xdc, 0xbf, 0xb2, 0x2e, 0x1c, 0x77, 0xe8, 0x5d, 0xb4, 0xf2, 0x77, 0x33, 0xf7, 0x0b, 0x66, 0x5d,
0x81, 0x3f, 0x45, 0x28, 0xdb, 0x80, 0xc6, 0xe0, 0xcc, 0x76, 0x5d, 0x3e, 0xb2, 0x8e, 0xed, 0xc1,
0x8b, 0xe9, 0x24, 0x68, 0x15, 0xee, 0x66, 0xee, 0x57, 0x9e, 0xdc, 0x7c, 0x88, 0xbb, 0xfa, 0x70,
0xf3, 0xcc, 0x76, 0x37, 0xb0, 0xa4, 0xe7, 0xda, 0x93, 0xe0, 0xcc, 0x0b, 0xcd, 0xba, 0xac, 0x41,
0xe0, 0xc0, 0x58, 0x06, 0xa6, 0xaf, 0x04, 0xad, 0xbd, 0xf1, 0x9f, 0x32, 0xb0, 0x74, 0xe4, 0x8e,
0xbc, 0xc1, 0x8b, 0x9f, 0x73, 0x89, 0x52, 0xe6, 0x90, 0x7d, 0xdd, 0x39, 0xe4, 0xbe, 0xec, 0x1c,
0x56, 0x61, 0x39, 0x39, 0x58, 0x39, 0x0b, 0x0e, 0x2b, 0xa2, 0xf6, 0x29, 0x57, 0xc3, 0x52, 0xd3,
0xf8, 0x3a, 0x34, 0x07, 0x53, 0xdf, 0xe7, 0xee, 0xdc, 0x3c, 0x1a, 0x12, 0x1e, 0x4d, 0xe4, 0x2d,
0xa8, 0xba, 0xfc, 0x22, 0x46, 0x93, 0xb4, 0xeb, 0xf2, 0x0b, 0x85, 0x62, 0xb4, 0x60, 0x75, 0xb6,
0x1b, 0x39, 0x80, 0x9f, 0x65, 0x20, 0x7f, 0x14, 0x5e, 0x7a, 0xec, 0x29, 0x54, 0xed, 0xe1, 0xd0,
0xe7, 0x41, 0x60, 0x85, 0x57, 0x13, 0x3a, 0x29, 0xf5, 0x27, 0x4c, 0x4e, 0xb1, 0x4d, 0x45, 0xfd,
0xab, 0x09, 0x37, 0x2b, 0x76, 0xfc, 0xc1, 0x5a, 0x50, 0x94, 0x9f, 0xd8, 0x6f, 0xd9, 0x54, 0x9f,
0xec, 0x36, 0x80, 0x3d, 0xf6, 0xa6, 0x6e, 0x68, 0x05, 0x76, 0x88, 0x2b, 0x96, 0x33, 0xcb, 0x04,
0xe9, 0xd9, 0x21, 0xbb, 0x05, 0xe5, 0xc9, 0x0b, 0x2b, 0x18, 0xf8, 0xce, 0x24, 0x44, 0xe2, 0x29,
0x9b, 0xa5, 0xc9, 0x8b, 0x1e, 0x7e, 0xb3, 0xf7, 0xa0, 0xe4, 0x4d, 0xc3, 0x89, 0xe7, 0xb8, 0xa1,
0xa4, 0x97, 0x86, 0x1c, 0xc8, 0xc1, 0x34, 0x3c, 0x14, 0x60, 0x33, 0x42, 0x60, 0xef, 0x40, 0x6d,
0xe0, 0xb9, 0x27, 0x8e, 0x3f, 0x26, 0x8e, 0xd0, 0x5a, 0xc0, 0xbe, 0x92, 0x40, 0xe3, 0x0f, 0xb2,
0x50, 0xe9, 0xfb, 0xb6, 0x1b, 0xd8, 0x03, 0x01, 0x60, 0x6b, 0x50, 0x0c, 0x2f, 0xad, 0x33, 0x3b,
0x38, 0xc3, 0xa9, 0x96, 0xcd, 0x85, 0xf0, 0x72, 0xc7, 0x0e, 0xce, 0xd8, 0x2a, 0x2c, 0xd0, 0x28,
0x71, 0x42, 0x39, 0x53, 0x7e, 0x89, 0x03, 0xe2, 0x4e, 0xc7, 0x56, 0xb2, 0xab, 0x1c, 0x52, 0x4c,
0xd3, 0x9d, 0x8e, 0x37, 0x75, 0xb8, 0x98, 0xfc, 0xb1, 0xd8, 0x6e, 0xea, 0x80, 0xa6, 0x57, 0x46,
0x08, 0xf6, 0xf1, 0x16, 0x54, 0x65, 0x31, 0x77, 0x4e, 0xcf, 0x68, 0x8e, 0x05, 0xb3, 0x42, 0x08,
0x08, 0x12, 0x2d, 0x84, 0xce, 0x98, 0x5b, 0x41, 0x68, 0x8f, 0x27, 0x72, 0x4a, 0x65, 0x01, 0xe9,
0x09, 0x00, 0x16, 0x7b, 0xa1, 0x3d, 0xb2, 0x4e, 0x38, 0x0f, 0x5a, 0x45, 0x59, 0x2c, 0x20, 0xdb,
0x9c, 0x07, 0xec, 0x6b, 0x50, 0x1f, 0xf2, 0x20, 0xb4, 0xe4, 0x66, 0xf0, 0xa0, 0x55, 0xc2, 0x93,
0x5f, 0x13, 0xd0, 0xb6, 0x02, 0xb2, 0x37, 0x00, 0x7c, 0xfb, 0xc2, 0x12, 0x0b, 0xc1, 0x2f, 0x5b,
0x65, 0xda, 0x05, 0xdf, 0xbe, 0xe8, 0x5f, 0xee, 0xf0, 0x4b, 0x41, 0x35, 0xcf, 0x78, 0xa8, 0x2d,
0x5a, 0x20, 0xa9, 0xd3, 0xd8, 0x05, 0xa6, 0x81, 0xb7, 0x78, 0x68, 0x3b, 0xa3, 0x80, 0x7d, 0x00,
0xd5, 0x50, 0x43, 0x46, 0x36, 0x58, 0x89, 0x48, 0x48, 0xab, 0x60, 0x26, 0xf0, 0x8c, 0x33, 0x28,
0x6d, 0x73, 0xbe, 0xeb, 0x8c, 0x9d, 0x90, 0xad, 0x42, 0xe1, 0xc4, 0xb9, 0xe4, 0x44, 0xec, 0xb9,
0x9d, 0x1b, 0x26, 0x7d, 0xb2, 0x3b, 0x00, 0xf8, 0x87, 0x35, 0x8e, 0xa8, 0x69, 0xe7, 0x86, 0x59,
0x46, 0xd8, 0x5e, 0x60, 0x87, 0x6c, 0x1d, 0x8a, 0x13, 0xee, 0x0f, 0xb8, 0xda, 0xb7, 0x9d, 0x1b,
0xa6, 0x02, 0x6c, 0x14, 0xa1, 0x30, 0x12, 0xad, 0x1b, 0x7f, 0x54, 0x80, 0x4a, 0x8f, 0xbb, 0xd1,
0x29, 0x63, 0x90, 0x17, 0x0b, 0x22, 0x4f, 0x16, 0xfe, 0xcd, 0xde, 0x86, 0x0a, 0x2e, 0x5d, 0x10,
0xfa, 0x8e, 0x7b, 0x4a, 0x54, 0xbd, 0x91, 0x6d, 0x65, 0x4c, 0x10, 0xe0, 0x1e, 0x42, 0x59, 0x13,
0x72, 0xf6, 0x58, 0x51, 0xb5, 0xf8, 0x93, 0xdd, 0x84, 0x92, 0x3d, 0x0e, 0x69, 0x78, 0x55, 0x04,
0x17, 0xed, 0x71, 0x88, 0x43, 0x7b, 0x0b, 0xaa, 0x13, 0xfb, 0x6a, 0x2c, 0xce, 0x72, 0x44, 0x0e,
0x55, 0xb3, 0x22, 0x61, 0x48, 0x10, 0x4f, 0x60, 0x49, 0x47, 0x51, 0x9d, 0x17, 0xa2, 0xce, 0x17,
0x35, 0x6c, 0x39, 0x86, 0x7b, 0xd0, 0x50, 0x75, 0x7c, 0x9a, 0x0f, 0x92, 0x49, 0xd9, 0xac, 0x4b,
0xb0, 0x9a, 0xe5, 0x7d, 0x68, 0x9e, 0x38, 0xae, 0x3d, 0xb2, 0x06, 0xa3, 0xf0, 0xdc, 0x1a, 0xf2,
0x51, 0x68, 0x23, 0xc5, 0x14, 0xcc, 0x3a, 0xc2, 0x37, 0x47, 0xe1, 0xf9, 0x96, 0x80, 0xb2, 0x6f,
0x40, 0xf9, 0x84, 0x73, 0x0b, 0x17, 0xab, 0x55, 0x4a, 0x1c, 0x3c, 0xb5, 0x43, 0x66, 0xe9, 0x44,
0xed, 0xd5, 0x37, 0xa0, 0xe9, 0x4d, 0xc3, 0x53, 0xcf, 0x71, 0x4f, 0x2d, 0xc1, 0xef, 0x2c, 0x67,
0x88, 0x34, 0x94, 0xdf, 0xc8, 0x3e, 0xce, 0x98, 0x75, 0x55, 0x26, 0x38, 0x4f, 0x77, 0xc8, 0xde,
0x85, 0xc6, 0xc8, 0x0e, 0x42, 0xeb, 0xcc, 0x9b, 0x58, 0x93, 0xe9, 0xf1, 0x0b, 0x7e, 0xd5, 0xaa,
0xe1, 0x42, 0xd4, 0x04, 0x78, 0xc7, 0x9b, 0x1c, 0x22, 0x50, 0x50, 0x36, 0x8e, 0x93, 0x06, 0x01,
0x77, 0x33, 0xf7, 0x6b, 0x66, 0x59, 0x40, 0xa8, 0xd3, 0xcf, 0x60, 0x09, 0xb7, 0x67, 0x30, 0x0d,
0x42, 0x6f, 0x6c, 0x09, 0x5e, 0xed, 0x0f, 0x83, 0x56, 0x05, 0x69, 0xed, 0xeb, 0x72, 0xb0, 0xda,
0x1e, 0x3f, 0xdc, 0xe2, 0x41, 0xb8, 0x89, 0xc8, 0x26, 0xe1, 0x8a, 0x0b, 0xfd, 0xca, 0x5c, 0x1c,
0xce, 0xc2, 0xd9, 0x37, 0x80, 0xd9, 0xa3, 0x91, 0x77, 0x61, 0x05, 0x7c, 0x74, 0x62, 0xc9, 0x45,
0x6c, 0xd5, 0xef, 0x66, 0xee, 0x97, 0xcc, 0x26, 0x96, 0xf4, 0xf8, 0xe8, 0xe4, 0x90, 0xe0, 0xec,
0x03, 0xc0, 0xc3, 0x64, 0x9d, 0x70, 0x3b, 0x9c, 0xfa, 0x3c, 0x68, 0x35, 0xee, 0xe6, 0xee, 0xd7,
0x9f, 0x2c, 0x46, 0xeb, 0x85, 0xe0, 0x0d, 0x27, 0x34, 0xab, 0x02, 0x4f, 0x7e, 0x07, 0xeb, 0x5b,
0xb0, 0x9a, 0x3e, 0x24, 0x41, 0x54, 0x62, 0x55, 0x04, 0x31, 0xe6, 0x4d, 0xf1, 0x27, 0x5b, 0x86,
0xc2, 0xb9, 0x3d, 0x9a, 0x72, 0xc9, 0xd3, 0xe9, 0xe3, 0xc3, 0xec, 0x77, 0x33, 0xc6, 0x1f, 0x66,
0xa0, 0x4a, 0xb3, 0x94, 0xb2, 0xc8, 0xdb, 0x50, 0x53, 0xd4, 0xc0, 0x7d, 0xdf, 0xf3, 0x25, 0x57,
0x53, 0x94, 0xd7, 0x11, 0x30, 0x71, 0xab, 0x28, 0xa4, 0x89, 0xcf, 0x9d, 0xb1, 0x7d, 0xaa, 0x9a,
0x56, 0xa4, 0x74, 0x28, 0xc1, 0xec, 0xfd, 0xb8, 0x3d, 0xdf, 0x9b, 0x86, 0x5c, 0xde, 0x79, 0x55,
0x39, 0x3d, 0x53, 0xc0, 0xa2, 0xd6, 0xf1, 0xeb, 0x35, 0xe8, 0xdc, 0xf8, 0x9d, 0x0c, 0x30, 0x31,
0xec, 0xbe, 0x47, 0x0d, 0x48, 0x0a, 0x9d, 0xad, 0x99, 0x79, 0xed, 0x13, 0x92, 0x7d, 0xd9, 0x09,
0x31, 0xa0, 0x40, 0x63, 0xcf, 0xa7, 0x8c, 0x9d, 0x8a, 0x7e, 0x90, 0x2f, 0xe5, 0x9a, 0x79, 0xe3,
0x7f, 0xe5, 0x60, 0x79, 0x93, 0xae, 0xec, 0xf6, 0x60, 0xc0, 0x27, 0xd1, 0xd9, 0xb9, 0x03, 0x15,
0xd7, 0x1b, 0x72, 0x45, 0xb1, 0x34, 0x30, 0x10, 0x20, 0x8d, 0x5c, 0xcf, 0x6c, 0xc7, 0xa5, 0x81,
0xd3, 0x62, 0x96, 0x11, 0x82, 0xc3, 0x7e, 0x17, 0x1a, 0x13, 0xee, 0x0e, 0xf5, 0x23, 0x42, 0x42,
0x55, 0x4d, 0x82, 0xe5, 0xe9, 0xb8, 0x03, 0x95, 0x93, 0x29, 0xe1, 0x09, 0xc6, 0x92, 0x47, 0x1a,
0x00, 0x09, 0x6a, 0x13, 0x7f, 0x99, 0x4c, 0x83, 0x33, 0x2c, 0x2d, 0x60, 0x69, 0x51, 0x7c, 0x8b,
0xa2, 0xdb, 0x00, 0xc3, 0x69, 0x10, 0xca, 0x13, 0xb3, 0x80, 0x85, 0x65, 0x01, 0xa1, 0x13, 0xf3,
0x4d, 0x58, 0x1a, 0xdb, 0x97, 0x16, 0xd2, 0x8e, 0xe5, 0xb8, 0xd6, 0xc9, 0x08, 0xef, 0x9c, 0x22,
0xe2, 0x35, 0xc7, 0xf6, 0xe5, 0x27, 0xa2, 0xa4, 0xeb, 0x6e, 0x23, 0x5c, 0xb0, 0x15, 0x25, 0xee,
0xf8, 0x3c, 0xe0, 0xfe, 0x39, 0x47, 0x4e, 0x90, 0x8f, 0x64, 0x1a, 0x93, 0xa0, 0x62, 0x44, 0x63,
0x31, 0xef, 0x70, 0x34, 0xa0, 0x63, 0x6f, 0x16, 0xc7, 0x8e, 0xbb, 0x13, 0x8e, 0x06, 0xe2, 0x5e,
0x11, 0x7c, 0x64, 0xc2, 0x7d, 0xeb, 0xc5, 0x05, 0x9e, 0xe1, 0x3c, 0xf2, 0x8d, 0x43, 0xee, 0x3f,
0xbf, 0x10, 0x57, 0xff, 0x20, 0x40, 0x46, 0x64, 0x5f, 0xb5, 0x2a, 0x78, 0xc0, 0x4b, 0x83, 0x40,
0xb0, 0x20, 0xfb, 0x4a, 0x1c, 0x42, 0x31, 0x5a, 0x1b, 0x77, 0x81, 0x0f, 0xb1, 0xf9, 0x00, 0x39,
0x6a, 0x0d, 0x07, 0xdb, 0x96, 0x05, 0xa2, 0x9f, 0x40, 0x50, 0xbd, 0x1a, 0xec, 0xc9, 0xc8, 0x3e,
0x0d, 0x90, 0xa5, 0xd4, 0xcc, 0xaa, 0x04, 0x6e, 0x0b, 0x98, 0xf1, 0x29, 0x09, 0x59, 0xda, 0xde,
0xca, 0x33, 0x23, 0xae, 0x7a, 0x84, 0xe0, 0xbe, 0x96, 0x4c, 0xf9, 0x95, 0xb6, 0x69, 0xd9, 0x94,
0x4d, 0x33, 0x7e, 0x2f, 0x03, 0x55, 0xd9, 0x32, 0x0a, 0x25, 0xec, 0x21, 0x30, 0xb5, 0x8b, 0xe1,
0xa5, 0x33, 0xb4, 0x8e, 0xaf, 0x42, 0x1e, 0x10, 0xd1, 0xec, 0xdc, 0x30, 0x9b, 0xb2, 0xac, 0x7f,
0xe9, 0x0c, 0x37, 0x44, 0x09, 0x7b, 0x00, 0xcd, 0x04, 0x7e, 0x10, 0xfa, 0x44, 0xd1, 0x3b, 0x37,
0xcc, 0xba, 0x86, 0xdd, 0x0b, 0x7d, 0x71, 0x46, 0x84, 0xc8, 0x33, 0x0d, 0x2d, 0xc7, 0x1d, 0xf2,
0x4b, 0x24, 0xa3, 0x9a, 0x59, 0x21, 0x58, 0x57, 0x80, 0x36, 0xea, 0x50, 0xd5, 0x9b, 0x33, 0x4e,
0xa1, 0xa4, 0xe4, 0x25, 0x14, 0x18, 0x66, 0x86, 0x64, 0x96, 0xc3, 0x68, 0x24, 0x37, 0xa1, 0x94,
0x1c, 0x81, 0x59, 0x0c, 0x5f, 0xbb, 0x63, 0xe3, 0x7b, 0xd0, 0xdc, 0x15, 0xc4, 0xe3, 0x0a, 0x62,
0x95, 0xf2, 0xdf, 0x2a, 0x2c, 0x68, 0x87, 0xa6, 0x6c, 0xca, 0x2f, 0x71, 0xe7, 0x9e, 0x79, 0x41,
0x28, 0x7b, 0xc1, 0xbf, 0x8d, 0x3f, 0xca, 0x00, 0xeb, 0x04, 0xa1, 0x33, 0xb6, 0x43, 0xbe, 0xcd,
0x23, 0xb6, 0x70, 0x00, 0x55, 0xd1, 0x5a, 0xdf, 0x6b, 0x93, 0x40, 0x46, 0x02, 0xc5, 0x7b, 0xf2,
0x18, 0xcf, 0x57, 0x78, 0xa8, 0x63, 0x13, 0x9b, 0x4f, 0x34, 0x20, 0x4e, 0x59, 0x68, 0xfb, 0xa7,
0x3c, 0x44, 0x31, 0x4e, 0xca, 0xfb, 0x40, 0x20, 0x21, 0xc0, 0xad, 0xff, 0x2a, 0x2c, 0xce, 0xb5,
0xa1, 0xf3, 0xe5, 0x72, 0x0a, 0x5f, 0xce, 0xe9, 0x7c, 0xd9, 0x82, 0xa5, 0xc4, 0xb8, 0x24, 0xa5,
0xad, 0x41, 0x51, 0x1c, 0x08, 0x21, 0x1c, 0x64, 0x48, 0xaa, 0x3c, 0xe1, 0x5c, 0x88, 0xc1, 0x8f,
0x60, 0xf9, 0x84, 0x73, 0xdf, 0x0e, 0xb1, 0x10, 0x4f, 0x8c, 0xd8, 0x21, 0xd9, 0xf0, 0xa2, 0x2c,
0xeb, 0xd9, 0xe1, 0x21, 0xf7, 0xc5, 0x4e, 0x19, 0xff, 0x3b, 0x03, 0x0d, 0xc1, 0x41, 0xf7, 0x6c,
0xf7, 0x4a, 0xad, 0xd3, 0x6e, 0xea, 0x3a, 0xdd, 0xd7, 0x2e, 0x43, 0x0d, 0xfb, 0xcb, 0x2e, 0x52,
0x6e, 0x76, 0x91, 0xd8, 0x5d, 0xa8, 0x26, 0xc6, 0x5a, 0xc0, 0xb1, 0x42, 0x10, 0x0d, 0xf2, 0x17,
0x5f, 0xc6, 0x77, 0xa1, 0x19, 0x0f, 0x5b, 0xae, 0x21, 0x83, 0xbc, 0x20, 0x49, 0xd9, 0x00, 0xfe,
0x6d, 0xfc, 0xab, 0x0c, 0x21, 0x6e, 0x7a, 0x4e, 0x24, 0x9d, 0x0a, 0x44, 0x21, 0xf7, 0x2a, 0x44,
0xf1, 0xf7, 0xb5, 0x52, 0xfd, 0x2f, 0x3e, 0x59, 0x71, 0x74, 0x02, 0xee, 0x0e, 0x2d, 0x7b, 0x34,
0x42, 0xe6, 0x5b, 0x32, 0x8b, 0xe2, 0xbb, 0x3d, 0x1a, 0x19, 0xf7, 0x60, 0x51, 0x1b, 0xdd, 0x4b,
0xe6, 0xb1, 0x0f, 0x6c, 0xd7, 0x09, 0xc2, 0x23, 0x37, 0x98, 0x68, 0x82, 0xdb, 0x2d, 0x28, 0x0b,
0x0e, 0x2b, 0x46, 0x46, 0x47, 0xb6, 0x60, 0x0a, 0x96, 0x2b, 0xc6, 0x15, 0x60, 0xa1, 0x7d, 0x29,
0x0b, 0xb3, 0xb2, 0xd0, 0xbe, 0xc4, 0x42, 0xe3, 0xbb, 0xb0, 0x94, 0x68, 0x4f, 0x76, 0xfd, 0x16,
0x14, 0xa6, 0xe1, 0xa5, 0xa7, 0x44, 0xf3, 0x8a, 0xa4, 0x10, 0xa1, 0x00, 0x9a, 0x54, 0x62, 0x7c,
0x04, 0x8b, 0xfb, 0xfc, 0x42, 0x1e, 0x62, 0x35, 0x90, 0x77, 0x21, 0xff, 0x0a, 0xa5, 0x10, 0xcb,
0x8d, 0x87, 0xc0, 0xf4, 0xca, 0xb2, 0x57, 0x4d, 0x47, 0xcc, 0x24, 0x74, 0x44, 0xe3, 0x5d, 0x60,
0x3d, 0xe7, 0xd4, 0xdd, 0xe3, 0x41, 0x60, 0x9f, 0x46, 0xc7, 0xbe, 0x09, 0xb9, 0x71, 0x70, 0x2a,
0x79, 0x94, 0xf8, 0xd3, 0xf8, 0x16, 0x2c, 0x25, 0xf0, 0x64, 0xc3, 0x6f, 0x40, 0x39, 0x70, 0x4e,
0x5d, 0x14, 0xac, 0x64, 0xd3, 0x31, 0xc0, 0xd8, 0x86, 0xe5, 0x4f, 0xb8, 0xef, 0x9c, 0x5c, 0xbd,
0xaa, 0xf9, 0x64, 0x3b, 0xd9, 0xd9, 0x76, 0x3a, 0xb0, 0x32, 0xd3, 0x8e, 0xec, 0x9e, 0xc8, 0x57,
0xee, 0x64, 0xc9, 0xa4, 0x0f, 0x8d, 0xef, 0x65, 0x75, 0xbe, 0x67, 0x1c, 0x01, 0xdb, 0xf4, 0x5c,
0x97, 0x0f, 0xc2, 0x43, 0xce, 0xfd, 0xd8, 0x4a, 0x15, 0xd3, 0x6a, 0xe5, 0xc9, 0x9a, 0x5c, 0xd9,
0x59, 0x66, 0x2a, 0x89, 0x98, 0x41, 0x7e, 0xc2, 0xfd, 0x31, 0x36, 0x5c, 0x32, 0xf1, 0x6f, 0x63,
0x05, 0x96, 0x12, 0xcd, 0x4a, 0xbd, 0xfe, 0x31, 0xac, 0x6c, 0x39, 0xc1, 0x60, 0xbe, 0xc3, 0x35,
0x28, 0x4e, 0xa6, 0xc7, 0x56, 0x92, 0x2f, 0x3f, 0xe7, 0x57, 0x42, 0xdb, 0x9b, 0xad, 0x21, 0xdb,
0xfa, 0xbb, 0x19, 0xc8, 0xef, 0xf4, 0x77, 0x37, 0xd9, 0x3a, 0x94, 0x1c, 0x77, 0xe0, 0x8d, 0x85,
0xe0, 0x45, 0x73, 0x8e, 0xbe, 0xaf, 0x3d, 0x60, 0xb7, 0xa0, 0x8c, 0xf2, 0x9a, 0x50, 0x6d, 0xa5,
0xe8, 0x53, 0x12, 0x80, 0x5d, 0x6f, 0xf0, 0x42, 0xe8, 0xd4, 0xfc, 0x72, 0xe2, 0xf8, 0xa8, 0x35,
0x2b, 0x65, 0x38, 0x4f, 0x77, 0x7d, 0x5c, 0x40, 0x1a, 0xb1, 0xf1, 0x57, 0x45, 0x28, 0xca, 0xdb,
0x96, 0x6e, 0xee, 0xd0, 0x39, 0xe7, 0xf1, 0xcd, 0x2d, 0xbe, 0x84, 0x3c, 0xe0, 0xf3, 0xb1, 0x17,
0x46, 0x02, 0x1b, 0xed, 0x41, 0x95, 0x80, 0x52, 0x64, 0xd3, 0x84, 0x06, 0x32, 0x31, 0xe4, 0x08,
0x69, 0xa0, 0x5f, 0xe5, 0xb7, 0xa0, 0xa8, 0xee, 0xfe, 0x7c, 0xa4, 0xd3, 0x2c, 0x0c, 0x48, 0x5a,
0x5b, 0x87, 0xd2, 0xc0, 0x9e, 0xd8, 0x03, 0x27, 0xbc, 0x92, 0x0c, 0x21, 0xfa, 0x16, 0xad, 0x8f,
0xbc, 0x81, 0x3d, 0xb2, 0x8e, 0xed, 0x91, 0xed, 0x0e, 0xb8, 0xd4, 0xdd, 0xab, 0x08, 0xdc, 0x20,
0x98, 0xd0, 0xcf, 0xe5, 0x38, 0x15, 0x16, 0xa9, 0xf0, 0x72, 0xf4, 0x0a, 0x4d, 0x08, 0x97, 0xde,
0x78, 0xec, 0x08, 0x2d, 0x83, 0xc4, 0xb0, 0x9c, 0x59, 0x26, 0xc8, 0x36, 0xc7, 0xd9, 0xca, 0xe2,
0x0b, 0x5a, 0xba, 0x32, 0x75, 0x45, 0xc0, 0x4f, 0xc9, 0x90, 0x30, 0x2f, 0x8b, 0xe5, 0x34, 0x59,
0xec, 0x3d, 0x58, 0x9c, 0xba, 0x01, 0x0f, 0xc3, 0x11, 0x1f, 0x46, 0x63, 0xa9, 0x20, 0x52, 0x33,
0x2a, 0x50, 0xc3, 0x79, 0x08, 0x4b, 0x64, 0x74, 0x08, 0xec, 0xd0, 0x0b, 0xce, 0x9c, 0xc0, 0x0a,
0x84, 0x86, 0x44, 0xea, 0xee, 0x22, 0x16, 0xf5, 0x64, 0x49, 0x8f, 0x54, 0xa4, 0xb5, 0x19, 0x7c,
0x9f, 0x0f, 0xb8, 0x73, 0xce, 0x87, 0x28, 0xa7, 0xe5, 0xcc, 0x95, 0x44, 0x1d, 0x53, 0x16, 0xa2,
0xd0, 0x3d, 0x1d, 0x5b, 0xd3, 0xc9, 0xd0, 0x16, 0xc2, 0x4a, 0x9d, 0x84, 0x61, 0x77, 0x3a, 0x3e,
0x22, 0x08, 0x7b, 0x0c, 0x4a, 0x12, 0x93, 0xf2, 0x61, 0x23, 0xc1, 0xcf, 0x04, 0xb1, 0x9a, 0x55,
0x89, 0x41, 0x82, 0x62, 0x42, 0xe6, 0x6c, 0xce, 0xc8, 0x9c, 0x2d, 0x28, 0x4e, 0x7c, 0xe7, 0xdc,
0x0e, 0x79, 0x6b, 0x91, 0x18, 0xb8, 0xfc, 0x14, 0x9c, 0xc1, 0x71, 0x9d, 0xd0, 0xb1, 0x43, 0xcf,
0x6f, 0x31, 0x2c, 0x8b, 0x01, 0xec, 0x01, 0x2c, 0x22, 0x8d, 0x04, 0xa1, 0x1d, 0x4e, 0x03, 0x29,
0x81, 0x2e, 0x21, 0x31, 0xa1, 0x0c, 0xdd, 0x43, 0x38, 0x0a, 0xa1, 0xec, 0x5b, 0xb0, 0x4a, 0x64,
0x81, 0x35, 0xa4, 0x64, 0x8d, 0x02, 0xc1, 0x32, 0x2e, 0xc5, 0x12, 0x96, 0x0a, 0xfa, 0x96, 0xf2,
0xb5, 0x90, 0x0e, 0x9e, 0xc2, 0x9a, 0x24, 0x93, 0xb9, 0x5a, 0x2b, 0x58, 0x6b, 0x99, 0x8a, 0x67,
0xaa, 0x3d, 0x84, 0x45, 0x31, 0x24, 0x67, 0x60, 0xc9, 0xda, 0xe2, 0x24, 0xac, 0x8a, 0xd1, 0xa3,
0xa6, 0xd4, 0xa0, 0x42, 0x13, 0xcb, 0x9e, 0xf3, 0x2b, 0xf6, 0x3d, 0x68, 0x10, 0xc9, 0xa0, 0x7a,
0x85, 0x9c, 0x7e, 0x1d, 0x39, 0xfd, 0x8a, 0xb2, 0x70, 0x46, 0xa5, 0xc8, 0xec, 0xeb, 0x83, 0xc4,
0xb7, 0x38, 0x0e, 0x23, 0xe7, 0x84, 0x87, 0xce, 0x98, 0xb7, 0xd6, 0x88, 0xc0, 0xd4, 0xb7, 0x38,
0xa9, 0xd3, 0x09, 0x96, 0xb4, 0x88, 0x2f, 0xd0, 0x17, 0xd2, 0xee, 0xc8, 0x0b, 0xb8, 0x32, 0x51,
0xb5, 0x6e, 0xca, 0x43, 0x28, 0x80, 0x92, 0xed, 0x19, 0x3f, 0xcd, 0xd0, 0x3d, 0x26, 0x8f, 0x7d,
0xa0, 0x69, 0x65, 0x74, 0xe0, 0x2d, 0xcf, 0x1d, 0x5d, 0x49, 0x1e, 0x00, 0x04, 0x3a, 0x70, 0x47,
0x78, 0x08, 0x1d, 0x57, 0x47, 0x21, 0x96, 0x59, 0x55, 0x40, 0x44, 0xba, 0x03, 0x95, 0xc9, 0xf4,
0x78, 0xe4, 0x0c, 0x08, 0x25, 0x47, 0xad, 0x10, 0x08, 0x11, 0x84, 0x5a, 0x4a, 0x84, 0x40, 0x18,
0x79, 0xc4, 0xa8, 0x48, 0x18, 0xa2, 0x20, 0x4b, 0xe6, 0x3e, 0x72, 0x81, 0xaa, 0x89, 0x7f, 0x1b,
0x1b, 0xb0, 0x9c, 0x1c, 0xb4, 0xbc, 0x2f, 0x1e, 0x40, 0x49, 0xb2, 0x18, 0x65, 0xaf, 0xa8, 0x6b,
0x16, 0x64, 0xa1, 0x59, 0x45, 0xe5, 0xc6, 0x6f, 0x2d, 0xc0, 0x92, 0x84, 0x6e, 0x8a, 0x15, 0xe9,
0x4d, 0xc7, 0x63, 0xdb, 0x4f, 0xe1, 0x5d, 0x99, 0x97, 0xf3, 0xae, 0xec, 0x1c, 0xef, 0x4a, 0x2a,
0xac, 0xc4, 0xfa, 0x92, 0x0a, 0xab, 0xd8, 0x02, 0xd2, 0x21, 0x74, 0xf3, 0x65, 0x4d, 0x82, 0xfb,
0x64, 0x26, 0x9d, 0xe3, 0xb4, 0x85, 0x14, 0x4e, 0xab, 0xf3, 0xc9, 0x85, 0x19, 0x3e, 0xf9, 0x16,
0xd0, 0x5e, 0x2b, 0xb6, 0x5f, 0x24, 0xb5, 0x02, 0x61, 0xd2, 0x06, 0x7a, 0x0f, 0x1a, 0xb3, 0xac,
0x89, 0x78, 0x60, 0x3d, 0x85, 0x31, 0x39, 0x63, 0x8e, 0x97, 0x8c, 0x86, 0x5c, 0x96, 0x8c, 0xc9,
0x19, 0xf3, 0x5d, 0x2c, 0x51, 0xf8, 0x1d, 0x00, 0xea, 0x1b, 0x69, 0x1d, 0x90, 0xd6, 0xdf, 0x4d,
0xee, 0x85, 0xbe, 0xea, 0x0f, 0xc5, 0xc7, 0xd4, 0xe7, 0x48, 0xfc, 0x65, 0xac, 0x89, 0x74, 0xff,
0x1c, 0xea, 0xde, 0x84, 0xbb, 0x56, 0xcc, 0x22, 0x2a, 0xd8, 0xd4, 0x3b, 0x2f, 0x69, 0xaa, 0xab,
0x70, 0xcd, 0x9a, 0xa8, 0x1b, 0x7d, 0xb2, 0x3d, 0x5a, 0x78, 0xae, 0xb5, 0x56, 0xfd, 0x12, 0xad,
0xd5, 0xb1, 0x72, 0xf4, 0x6d, 0xfc, 0x83, 0x0c, 0x54, 0xb4, 0x61, 0xb3, 0x15, 0x58, 0xdc, 0x3c,
0x38, 0x38, 0xec, 0x98, 0xed, 0x7e, 0xf7, 0x93, 0x8e, 0xb5, 0xb9, 0x7b, 0xd0, 0xeb, 0x34, 0x6f,
0x08, 0xf0, 0xee, 0xc1, 0x66, 0x7b, 0xd7, 0xda, 0x3e, 0x30, 0x37, 0x15, 0x38, 0xc3, 0x56, 0x81,
0x99, 0x9d, 0xbd, 0x83, 0x7e, 0x27, 0x01, 0xcf, 0xb2, 0x26, 0x54, 0x37, 0xcc, 0x4e, 0x7b, 0x73,
0x47, 0x42, 0x72, 0x6c, 0x19, 0x9a, 0xdb, 0x47, 0xfb, 0x5b, 0xdd, 0xfd, 0x67, 0xd6, 0x66, 0x7b,
0x7f, 0xb3, 0xb3, 0xdb, 0xd9, 0x6a, 0xe6, 0x59, 0x0d, 0xca, 0xed, 0x8d, 0xf6, 0xfe, 0xd6, 0xc1,
0x7e, 0x67, 0xab, 0x59, 0x30, 0x7e, 0x05, 0xca, 0xf1, 0x44, 0x2b, 0x50, 0x3c, 0xda, 0x7f, 0xbe,
0x7f, 0xf0, 0xe9, 0x7e, 0xf3, 0x06, 0x2b, 0x43, 0x01, 0xfb, 0x6f, 0x66, 0x18, 0xc0, 0x02, 0xf5,
0xd9, 0xcc, 0xb2, 0x12, 0xe4, 0x37, 0x0e, 0xfa, 0x3b, 0xcd, 0x9c, 0xf1, 0xe7, 0x19, 0x58, 0xc1,
0x29, 0x0f, 0x67, 0x99, 0xc0, 0x5d, 0xa8, 0x0c, 0x3c, 0x6f, 0x22, 0x14, 0xa4, 0x58, 0x10, 0xd0,
0x41, 0xe2, 0x80, 0x13, 0xcf, 0x3d, 0xf1, 0xfc, 0x01, 0x97, 0x3c, 0x00, 0x10, 0xb4, 0x2d, 0x20,
0x82, 0x06, 0x25, 0x11, 0x13, 0x06, 0xb1, 0x80, 0x0a, 0xc1, 0x08, 0x65, 0x15, 0x16, 0x8e, 0x7d,
0x6e, 0x0f, 0xce, 0xe4, 0xe9, 0x97, 0x5f, 0xec, 0xeb, 0xb1, 0xea, 0x3e, 0x10, 0x34, 0x35, 0xe2,
0x43, 0x3c, 0x02, 0x25, 0xb3, 0x21, 0xe1, 0x9b, 0x12, 0x2c, 0x2e, 0x11, 0xfb, 0xd8, 0x76, 0x87,
0x9e, 0xcb, 0x87, 0x52, 0x43, 0x88, 0x01, 0xc6, 0x21, 0xac, 0xce, 0xce, 0x4f, 0xf2, 0x8b, 0x0f,
0x34, 0x7e, 0x41, 0x02, 0xfb, 0xfa, 0xf5, 0xa4, 0xa0, 0xf1, 0x8e, 0x7f, 0x9c, 0x87, 0xbc, 0x10,
0xe0, 0xae, 0x95, 0xf5, 0x74, 0x89, 0x3c, 0x37, 0xe7, 0xb5, 0x41, 0x0b, 0x01, 0xdd, 0xec, 0x64,
0x86, 0x2a, 0x23, 0x04, 0x6f, 0xf4, 0xa8, 0xd8, 0xe7, 0x83, 0x73, 0x69, 0x87, 0xa2, 0x62, 0x93,
0x0f, 0xce, 0x51, 0x15, 0xb2, 0x43, 0xaa, 0x4b, 0xe7, 0xbd, 0x18, 0xd8, 0x21, 0xd6, 0x94, 0x45,
0x58, 0xaf, 0x18, 0x15, 0x61, 0xad, 0x16, 0x14, 0x1d, 0xf7, 0xd8, 0x9b, 0xba, 0x43, 0x3c, 0xde,
0x25, 0x53, 0x7d, 0xa2, 0x93, 0x08, 0x39, 0x91, 0xb8, 0x3f, 0xe8, 0x34, 0x97, 0x04, 0xa0, 0x2f,
0x6e, 0x90, 0xf7, 0xa1, 0x1c, 0x5c, 0xb9, 0x03, 0xfd, 0x0c, 0x2f, 0xcb, 0xf5, 0x11, 0xb3, 0x7f,
0xd8, 0xbb, 0x72, 0x07, 0x78, 0x62, 0x4b, 0x81, 0xfc, 0x8b, 0x3d, 0x85, 0x52, 0x64, 0xae, 0x25,
0x0e, 0x7c, 0x53, 0xaf, 0xa1, 0x6c, 0xb4, 0xa4, 0x15, 0x47, 0xa8, 0xec, 0x11, 0x2c, 0xa0, 0x4d,
0x35, 0x68, 0x55, 0xb1, 0x92, 0x12, 0xd3, 0xc5, 0x30, 0xd0, 0x3f, 0xc3, 0x87, 0x68, 0x5f, 0x35,
0x25, 0xda, 0xfa, 0x73, 0xa8, 0x25, 0xda, 0xd2, 0x75, 0xdf, 0x1a, 0xe9, 0xbe, 0xef, 0xe8, 0xba,
0x6f, 0x7c, 0x13, 0xc8, 0x6a, 0xba, 0x2e, 0xfc, 0xab, 0x50, 0x52, 0x53, 0x11, 0xe7, 0x4f, 0x9e,
0x1d, 0xab, 0xf7, 0xd9, 0xfe, 0x66, 0xf3, 0x06, 0x6b, 0x40, 0xa5, 0xbd, 0x89, 0x47, 0x1a, 0x01,
0x19, 0x81, 0x72, 0xd8, 0xee, 0xf5, 0x22, 0x48, 0xd6, 0xd8, 0x86, 0xe6, 0xec, 0x48, 0x05, 0x4d,
0x86, 0x0a, 0x26, 0x2d, 0xce, 0x31, 0x40, 0x68, 0x36, 0x64, 0x44, 0x26, 0xf1, 0x99, 0x3e, 0x8c,
0xa7, 0xd0, 0x14, 0xf7, 0x9a, 0x58, 0xaa, 0x40, 0xb3, 0xdc, 0x8e, 0x84, 0x48, 0xa6, 0x5b, 0x9d,
0x4b, 0x66, 0x85, 0x60, 0xd8, 0x95, 0xf1, 0x01, 0x2c, 0x6a, 0xd5, 0x62, 0x4d, 0x54, 0xdc, 0x95,
0xb3, 0x9a, 0x28, 0xea, 0x1d, 0x54, 0x62, 0xac, 0xc1, 0x8a, 0xf8, 0xec, 0x9c, 0x73, 0x37, 0xec,
0x4d, 0x8f, 0xc9, 0x55, 0xe8, 0x78, 0xae, 0xd0, 0x47, 0xca, 0x51, 0xc9, 0xf5, 0x44, 0xfe, 0x50,
0x2a, 0xad, 0x59, 0x24, 0x8d, 0x75, 0xad, 0x07, 0xac, 0xf8, 0x10, 0xff, 0x4d, 0x28, 0xaf, 0xe5,
0x08, 0x24, 0x96, 0xf5, 0xb0, 0xd3, 0x31, 0xad, 0x83, 0xfd, 0xdd, 0xee, 0xbe, 0x60, 0x94, 0x62,
0x59, 0x11, 0xb0, 0xbd, 0x8d, 0x90, 0x8c, 0xd1, 0x84, 0xfa, 0x33, 0x1e, 0x76, 0xdd, 0x13, 0x4f,
0xb9, 0xc5, 0x7e, 0x56, 0x80, 0x46, 0x04, 0x8a, 0x95, 0xdf, 0x73, 0xee, 0x07, 0x8e, 0xe7, 0xa2,
0x1c, 0x5b, 0x36, 0xd5, 0xa7, 0xb8, 0xdd, 0x9c, 0x21, 0x77, 0x43, 0x27, 0xbc, 0xb2, 0x12, 0x96,
0xb2, 0xba, 0x02, 0xcb, 0x5b, 0x74, 0x19, 0x0a, 0xf6, 0xc8, 0xb1, 0x95, 0x87, 0x95, 0x3e, 0x04,
0x74, 0xe0, 0x8d, 0x3c, 0x1f, 0x45, 0xd6, 0xb2, 0x49, 0x1f, 0xec, 0x31, 0x2c, 0x0b, 0xd1, 0x59,
0x37, 0x5f, 0x22, 0xff, 0x20, 0xa3, 0x1d, 0x73, 0xa7, 0xe3, 0xc3, 0xd8, 0x84, 0x29, 0x4a, 0xc4,
0xdd, 0x29, 0x6a, 0x48, 0x61, 0x29, 0xaa, 0x40, 0x5a, 0xd8, 0xa2, 0x3b, 0x1d, 0xb7, 0xb1, 0x24,
0xc2, 0x7f, 0x02, 0x2b, 0x02, 0x3f, 0x12, 0xaf, 0xa2, 0x1a, 0x0d, 0xac, 0x21, 0x1a, 0xeb, 0xca,
0xb2, 0xa8, 0xce, 0x2d, 0x28, 0xd3, 0xa8, 0xc4, 0x8e, 0x17, 0x48, 0xfa, 0xc6, 0xa1, 0x70, 0x3f,
0x98, 0x73, 0x86, 0x2e, 0x90, 0x20, 0x30, 0xe3, 0x0c, 0xd5, 0xdc, 0xa9, 0xa5, 0x59, 0x77, 0xea,
0x13, 0x58, 0x39, 0x16, 0x24, 0x78, 0xc6, 0xed, 0x21, 0xf7, 0xad, 0x98, 0xb0, 0x49, 0xcb, 0x58,
0x12, 0x85, 0x3b, 0x58, 0x16, 0x9d, 0x03, 0x21, 0xe7, 0x08, 0xb6, 0xc0, 0x87, 0x56, 0xe8, 0x59,
0x28, 0xfe, 0x20, 0x83, 0x29, 0x99, 0x35, 0x02, 0xf7, 0xbd, 0x4d, 0x01, 0x4c, 0xe2, 0x9d, 0xfa,
0xf6, 0xe4, 0x4c, 0xea, 0x01, 0x11, 0xde, 0x33, 0x01, 0x64, 0x6f, 0x40, 0x51, 0x90, 0xbc, 0xcb,
0xc9, 0x67, 0x45, 0x92, 0xb6, 0x02, 0xb1, 0x77, 0x60, 0x01, 0xfb, 0x08, 0x5a, 0x4d, 0xa4, 0xf7,
0x6a, 0xcc, 0xc8, 0x1d, 0xd7, 0x94, 0x65, 0x42, 0x98, 0x9c, 0xfa, 0x0e, 0x71, 0x99, 0xb2, 0x89,
0x7f, 0xb3, 0xef, 0x6b, 0x2c, 0x6b, 0x09, 0xeb, 0x2a, 0x79, 0x60, 0x86, 0xd2, 0xae, 0xe3, 0x5e,
0x5f, 0x29, 0x33, 0xfa, 0x41, 0xbe, 0x54, 0x69, 0x56, 0x8d, 0xef, 0x40, 0x81, 0x56, 0x47, 0x10,
0x21, 0xae, 0x5d, 0x46, 0x12, 0x21, 0x42, 0x5b, 0x50, 0x74, 0x79, 0x78, 0xe1, 0xf9, 0x2f, 0x94,
0x2d, 0x59, 0x7e, 0x1a, 0x3f, 0x46, 0x23, 0x48, 0xe4, 0x28, 0x27, 0x7d, 0x4e, 0x90, 0x07, 0x6d,
0x6f, 0x70, 0x66, 0x4b, 0xbb, 0x4c, 0x09, 0x01, 0xbd, 0x33, 0x7b, 0x8e, 0x3c, 0xb2, 0xf3, 0xbe,
0xf2, 0x77, 0xa0, 0xae, 0x5c, 0xf3, 0x81, 0x35, 0xe2, 0x27, 0xa1, 0x24, 0xf7, 0xaa, 0xf4, 0xcb,
0x07, 0xbb, 0xfc, 0x24, 0x34, 0xf6, 0x60, 0x51, 0x12, 0xe4, 0xc1, 0x84, 0xab, 0xae, 0xbf, 0x9b,
0x26, 0x4f, 0x57, 0x9e, 0x2c, 0x25, 0x2f, 0x5a, 0x7a, 0x72, 0x90, 0x10, 0xb2, 0x8d, 0x8f, 0x81,
0xe9, 0xd7, 0xb0, 0x6c, 0x4f, 0x4a, 0xb5, 0xca, 0x04, 0xaf, 0x3c, 0x59, 0x91, 0xec, 0xec, 0x0c,
0xc5, 0xea, 0x04, 0xd3, 0xc1, 0x40, 0x3d, 0x99, 0x28, 0x99, 0xea, 0xd3, 0xf8, 0x93, 0x0c, 0x2c,
0x61, 0x63, 0x4a, 0x1f, 0x90, 0x4c, 0xf6, 0xe7, 0x1e, 0xa4, 0xd8, 0x1f, 0x5d, 0xf6, 0xa1, 0x8f,
0x2f, 0x6f, 0xf4, 0xcc, 0xcf, 0x19, 0x3d, 0xbf, 0x0e, 0xcd, 0x21, 0x1f, 0x39, 0xf8, 0x7a, 0x46,
0x89, 0x12, 0xa4, 0x01, 0x34, 0x14, 0x5c, 0x29, 0x71, 0xff, 0x3c, 0x03, 0x8b, 0x24, 0xa9, 0xa0,
0x3a, 0x2c, 0x17, 0xea, 0x23, 0xa5, 0xff, 0x49, 0x56, 0x25, 0xe7, 0x14, 0xdf, 0xe0, 0x08, 0x25,
0xe4, 0x9d, 0x1b, 0x52, 0x2f, 0x94, 0x50, 0xf6, 0x21, 0xea, 0x30, 0xae, 0x85, 0xc0, 0x94, 0xd7,
0x38, 0xc9, 0x4d, 0xd9, 0xb9, 0x81, 0x0a, 0x8e, 0x8b, 0xa0, 0x8d, 0x92, 0x50, 0x48, 0x05, 0xd8,
0xd8, 0x86, 0x5a, 0xa2, 0x9b, 0x84, 0x65, 0xb6, 0x4a, 0x96, 0xd9, 0x39, 0xef, 0x47, 0x76, 0xde,
0xfb, 0xf1, 0xf7, 0xf2, 0xc0, 0x04, 0x49, 0xcd, 0xec, 0xda, 0x8c, 0xeb, 0x30, 0x3b, 0xe7, 0x3a,
0x7c, 0x0c, 0x4c, 0x43, 0x50, 0x1e, 0xcd, 0x5c, 0xe4, 0xd1, 0x6c, 0xc6, 0xb8, 0xd2, 0xa1, 0xf9,
0x18, 0x96, 0xa5, 0x40, 0x1b, 0xf9, 0x0a, 0xd1, 0xe4, 0x46, 0xfb, 0xc3, 0x48, 0xb2, 0x55, 0x3e,
0x43, 0x34, 0xbf, 0x29, 0xb7, 0x61, 0x60, 0x87, 0xd2, 0x52, 0x85, 0x6e, 0xc3, 0x9e, 0x3d, 0x67,
0xfa, 0x5e, 0x78, 0x25, 0x15, 0x14, 0xe7, 0xa8, 0x40, 0x33, 0x9c, 0x94, 0x92, 0x86, 0x13, 0x03,
0x6a, 0xca, 0x39, 0x48, 0x6f, 0x22, 0x48, 0x7a, 0xab, 0x48, 0x0f, 0x21, 0xbe, 0x8b, 0xb8, 0x0f,
0x4d, 0x65, 0xdd, 0x88, 0x4c, 0x33, 0xe4, 0xef, 0x97, 0xc6, 0xb1, 0x4d, 0x65, 0xa0, 0x49, 0x18,
0xc2, 0x2b, 0x33, 0x86, 0xf0, 0xf7, 0x60, 0x31, 0x10, 0x44, 0x64, 0x4d, 0x5d, 0xf9, 0x38, 0x87,
0x0f, 0x51, 0x75, 0x2a, 0x99, 0x4d, 0x2c, 0x38, 0x8a, 0xe1, 0xf3, 0x66, 0x87, 0xda, 0xbc, 0xd9,
0x81, 0x3d, 0x8d, 0xfd, 0x68, 0xc1, 0x99, 0x33, 0xc6, 0x8b, 0x3b, 0x7e, 0xc8, 0x22, 0x17, 0xb8,
0x77, 0xe6, 0x8c, 0x4d, 0xe5, 0xb4, 0x15, 0x1f, 0xc6, 0x7f, 0xcd, 0x40, 0x53, 0xd0, 0x41, 0x82,
0xce, 0x7f, 0x05, 0xf0, 0x44, 0xbe, 0x26, 0x99, 0x57, 0x04, 0xae, 0xa2, 0xf2, 0xef, 0x00, 0x92,
0xad, 0x25, 0xf4, 0x44, 0x49, 0xe4, 0xad, 0x24, 0x91, 0xc7, 0x8c, 0x6c, 0xe7, 0x06, 0x29, 0x00,
0x02, 0x92, 0xe6, 0xbf, 0xcc, 0xa7, 0xf8, 0x2f, 0xb5, 0xa3, 0xb0, 0x03, 0xf0, 0x9c, 0x5f, 0xed,
0x7a, 0x03, 0xd4, 0xd0, 0x6e, 0x03, 0x08, 0x82, 0x3c, 0xb1, 0xc7, 0x8e, 0xb4, 0xae, 0x14, 0xcc,
0xf2, 0x0b, 0x7e, 0xb5, 0x8d, 0x00, 0xb1, 0x1b, 0xa2, 0x38, 0x3e, 0x0f, 0x05, 0xb3, 0xf4, 0x82,
0x5f, 0xd1, 0x61, 0xb0, 0xa0, 0xf6, 0x9c, 0x5f, 0x6d, 0x71, 0x12, 0xd7, 0x3c, 0x5f, 0x50, 0x82,
0x6f, 0x5f, 0x08, 0xf9, 0x2c, 0xe1, 0x7b, 0xac, 0xf8, 0xf6, 0xc5, 0x73, 0x7e, 0xa5, 0xfc, 0xa0,
0x45, 0x51, 0x3e, 0xf2, 0x06, 0xf2, 0x06, 0x52, 0xaf, 0x28, 0xe2, 0x41, 0x99, 0x0b, 0x2f, 0xf0,
0x6f, 0xe3, 0x8f, 0x33, 0x50, 0x13, 0xe3, 0x47, 0x06, 0x27, 0xd6, 0x5d, 0x3d, 0xc6, 0xc9, 0xc4,
0x8f, 0x71, 0x9e, 0x48, 0xfe, 0x40, 0xdc, 0x32, 0x7b, 0x3d, 0xb7, 0xc4, 0x05, 0x26, 0x56, 0xf9,
0x3e, 0x94, 0xe9, 0x6c, 0x89, 0xc3, 0x9a, 0x4b, 0xec, 0x52, 0x62, 0x42, 0x66, 0x09, 0xd1, 0x9e,
0x93, 0xef, 0x5f, 0x33, 0xb0, 0xd1, 0x12, 0x97, 0xfd, 0xc8, 0xac, 0x96, 0xb2, 0x0d, 0x85, 0x34,
0x37, 0xf2, 0x11, 0x54, 0x34, 0x9a, 0x42, 0x6b, 0x5c, 0x34, 0x78, 0x22, 0xc0, 0x24, 0xd1, 0x24,
0x66, 0xbf, 0x73, 0xc3, 0xac, 0x0d, 0x74, 0xc0, 0xc6, 0x02, 0xe4, 0x45, 0x25, 0xe3, 0x23, 0x58,
0xd4, 0x9a, 0x25, 0x6d, 0x34, 0x6d, 0x4c, 0x99, 0xb4, 0x31, 0xfd, 0x8b, 0x0c, 0x2c, 0xcb, 0xda,
0xf8, 0x70, 0xcb, 0x11, 0xd7, 0xf5, 0x5e, 0x70, 0xca, 0x7e, 0x05, 0x6a, 0xa2, 0x75, 0xcb, 0xe7,
0xa7, 0x4e, 0x10, 0x72, 0xe5, 0xb9, 0x48, 0x39, 0x1c, 0x82, 0x6b, 0x0b, 0x54, 0x53, 0x62, 0xb2,
0x8f, 0xa0, 0x82, 0x55, 0x49, 0x5f, 0x96, 0xdb, 0xd2, 0x9a, 0xaf, 0x48, 0x43, 0xdd, 0xb9, 0x61,
0x42, 0x10, 0x7d, 0x6d, 0x94, 0xa1, 0x18, 0xfa, 0xce, 0xe9, 0x29, 0xf7, 0x8d, 0xd5, 0x68, 0x68,
0xe2, 0xa4, 0xf1, 0x5e, 0xc8, 0x27, 0x42, 0x08, 0x32, 0xfe, 0x7b, 0x06, 0x2a, 0xf2, 0xec, 0xfc,
0xdc, 0xee, 0x8a, 0x75, 0xed, 0xe5, 0x21, 0xa9, 0xc6, 0xf1, 0x43, 0xc3, 0x7b, 0xd0, 0x18, 0x0b,
0x81, 0x48, 0x08, 0xec, 0x09, 0x5f, 0x45, 0x5d, 0x81, 0xa5, 0x3c, 0xf2, 0x10, 0x96, 0x50, 0x3c,
0x09, 0xac, 0xd0, 0x19, 0x59, 0xaa, 0x50, 0xbe, 0xf2, 0x5b, 0xa4, 0xa2, 0xbe, 0x33, 0xda, 0x93,
0x05, 0xe2, 0x96, 0x0e, 0x42, 0xfb, 0x94, 0x4b, 0xd1, 0x97, 0x3e, 0x8c, 0x16, 0xac, 0xce, 0xc8,
0xea, 0x4a, 0xcf, 0xf8, 0x87, 0x35, 0x58, 0x9b, 0x2b, 0x92, 0xfa, 0x46, 0x64, 0xa3, 0x1f, 0x39,
0xe3, 0x63, 0x2f, 0x32, 0x85, 0x65, 0x34, 0x1b, 0xfd, 0xae, 0x28, 0x51, 0xa6, 0x30, 0x0e, 0x2b,
0x8a, 0x20, 0xd0, 0x96, 0x15, 0x89, 0xf3, 0x59, 0x14, 0x36, 0xdf, 0x4f, 0x32, 0xaa, 0xd9, 0xee,
0x14, 0x5c, 0xbf, 0xfe, 0x96, 0x26, 0x73, 0xb0, 0x80, 0x9d, 0x40, 0x2b, 0xa2, 0x3b, 0x29, 0x1f,
0x69, 0xba, 0x89, 0xe8, 0xe9, 0x1b, 0xaf, 0xe8, 0x29, 0x61, 0x24, 0x31, 0x57, 0x15, 0xb9, 0x52,
0x63, 0x51, 0x3f, 0xe7, 0xf0, 0xa6, 0xea, 0x07, 0x65, 0x9d, 0xf9, 0xde, 0xf2, 0xaf, 0x35, 0x2f,
0x34, 0xfe, 0x24, 0xbb, 0xbc, 0x25, 0x1b, 0x8e, 0x8a, 0xf4, 0x7e, 0xcf, 0x60, 0xf5, 0xc2, 0x76,
0x42, 0x35, 0x3f, 0x4d, 0x2d, 0x2a, 0x60, 0x7f, 0x4f, 0x5e, 0xd1, 0xdf, 0xa7, 0x54, 0x39, 0x21,
0xfd, 0x2d, 0x5f, 0xcc, 0x03, 0x83, 0xf5, 0xff, 0x9c, 0x85, 0x7a, 0xb2, 0x15, 0x71, 0xa8, 0x25,
0x1f, 0x52, 0xf2, 0x84, 0x94, 0xc7, 0xa5, 0x89, 0x76, 0x9f, 0xe4, 0x88, 0x79, 0xe3, 0x71, 0x36,
0xc5, 0x78, 0xac, 0xdb, 0x6c, 0x73, 0xaf, 0xf2, 0x6d, 0xe5, 0x5f, 0xcb, 0xb7, 0x55, 0x48, 0xf3,
0x6d, 0x5d, 0xef, 0x10, 0x59, 0xf8, 0xb9, 0x1c, 0x22, 0xc5, 0xeb, 0x1d, 0x22, 0xeb, 0x7f, 0x95,
0x01, 0x36, 0x4f, 0xa9, 0xec, 0x19, 0xd9, 0xc9, 0x5d, 0x3e, 0x92, 0x5c, 0xec, 0x9b, 0xaf, 0x47,
0xed, 0x6a, 0x83, 0x54, 0x6d, 0xf6, 0x08, 0x96, 0xf4, 0x77, 0xc1, 0xba, 0xaa, 0x52, 0x33, 0x99,
0x5e, 0x14, 0x2b, 0xb4, 0x9a, 0x63, 0x2f, 0xff, 0x4a, 0xc7, 0x5e, 0xe1, 0x95, 0x8e, 0xbd, 0x85,
0xa4, 0x63, 0x6f, 0xfd, 0xef, 0x64, 0x60, 0x29, 0x85, 0xa8, 0xbe, 0xba, 0x39, 0x0b, 0x5a, 0x48,
0xb0, 0x98, 0xac, 0xa4, 0x05, 0x8d, 0xbb, 0xac, 0xff, 0x04, 0x6a, 0x89, 0x43, 0xf4, 0xd5, 0x75,
0x3f, 0xab, 0x68, 0x11, 0x29, 0xeb, 0x8a, 0xd6, 0xfa, 0x5f, 0x66, 0x81, 0xcd, 0x9f, 0xe3, 0x5f,
0xe6, 0x10, 0xe6, 0x17, 0x29, 0x37, 0xbf, 0x48, 0xff, 0xff, 0xee, 0x95, 0xf7, 0x60, 0x51, 0xc6,
0x32, 0x68, 0x4e, 0x11, 0x22, 0x94, 0x66, 0x54, 0xa0, 0x46, 0xf1, 0x9d, 0x59, 0x9f, 0x6a, 0x29,
0xf1, 0x7c, 0x5b, 0xbb, 0x58, 0x93, 0xae, 0x55, 0x63, 0x1d, 0x5a, 0x72, 0x69, 0xe6, 0x4d, 0x75,
0xbf, 0x93, 0x8f, 0xb4, 0x64, 0x2c, 0x94, 0x42, 0xf1, 0xb7, 0xa0, 0xaa, 0x5f, 0x36, 0x72, 0x1f,
0x66, 0xbc, 0x61, 0x42, 0x1c, 0xf6, 0xb4, 0xd3, 0xba, 0x09, 0xe4, 0xe3, 0x18, 0x46, 0xd5, 0x48,
0x82, 0x78, 0x89, 0x51, 0x1c, 0x85, 0xa3, 0xc4, 0xe6, 0xff, 0x35, 0xa8, 0x27, 0xed, 0x56, 0x52,
0xd4, 0x4b, 0x93, 0x0e, 0x45, 0xed, 0x84, 0x21, 0x8b, 0x7d, 0x1f, 0x9a, 0xb3, 0x76, 0x2f, 0xf9,
0xb6, 0xf4, 0x9a, 0xfa, 0x0d, 0x27, 0x69, 0x0a, 0x63, 0x3b, 0xb0, 0x9c, 0x76, 0xdd, 0xe2, 0xae,
0x5c, 0xaf, 0x16, 0xb0, 0xf9, 0x2b, 0x95, 0x7d, 0x57, 0x9a, 0x37, 0x0b, 0x69, 0x4e, 0x22, 0x6d,
0xb1, 0x1f, 0xd2, 0x7f, 0x9a, 0xa1, 0xf3, 0x1c, 0x20, 0x86, 0xb1, 0x26, 0x54, 0x0f, 0x0e, 0x3b,
0xfb, 0xd6, 0xe6, 0x4e, 0x7b, 0x7f, 0xbf, 0xb3, 0xdb, 0xbc, 0xc1, 0x18, 0xd4, 0xd1, 0xbb, 0xb3,
0x15, 0xc1, 0x32, 0x02, 0x26, 0xcd, 0xcc, 0x0a, 0x96, 0x65, 0xcb, 0xd0, 0xec, 0xee, 0xcf, 0x40,
0x73, 0xac, 0x05, 0xcb, 0x87, 0x1d, 0x72, 0x08, 0x25, 0xda, 0xcd, 0x0b, 0x11, 0x4e, 0x4e, 0x57,
0x88, 0x70, 0x14, 0x09, 0x23, 0xa9, 0x4f, 0x49, 0x36, 0xbf, 0x9b, 0x81, 0x95, 0x99, 0x82, 0xf8,
0x7d, 0x33, 0xc9, 0x35, 0x49, 0x89, 0xa6, 0x8a, 0x40, 0x45, 0xc3, 0xef, 0xc1, 0x62, 0xa4, 0xea,
0xcd, 0xf0, 0xa5, 0x66, 0x54, 0xa0, 0x90, 0x1f, 0xc1, 0x92, 0xa6, 0x31, 0xce, 0x9c, 0x50, 0xa6,
0x15, 0xc9, 0x0a, 0xc6, 0x5a, 0xf4, 0x8e, 0x74, 0x66, 0xd4, 0x43, 0x0a, 0xaf, 0xd1, 0x0b, 0x62,
0xeb, 0x6f, 0x72, 0xbc, 0xea, 0x53, 0xa8, 0xf2, 0x09, 0x42, 0x48, 0x8e, 0x56, 0xdf, 0x70, 0xd5,
0xfd, 0xef, 0x2f, 0x00, 0xfb, 0x78, 0xca, 0xfd, 0x2b, 0x7c, 0xbf, 0x1c, 0xbc, 0xea, 0x41, 0x8f,
0x52, 0x8b, 0xb2, 0xaf, 0x15, 0xa3, 0x90, 0x16, 0x23, 0x90, 0x7f, 0x75, 0x8c, 0x40, 0xe1, 0x55,
0x31, 0x02, 0x6f, 0x43, 0xcd, 0x39, 0x75, 0x3d, 0xc1, 0x80, 0x84, 0x6c, 0x12, 0xb4, 0x16, 0xee,
0xe6, 0xee, 0x57, 0xcd, 0xaa, 0x04, 0x0a, 0xc9, 0x24, 0x60, 0x1f, 0xc5, 0x48, 0x7c, 0x78, 0x8a,
0xf1, 0x2c, 0x3a, 0xeb, 0xe9, 0x0c, 0x4f, 0xb9, 0xd4, 0x02, 0xd1, 0x2e, 0xa2, 0x2a, 0x0b, 0x78,
0xc0, 0xde, 0x81, 0x7a, 0xe0, 0x4d, 0x85, 0xa8, 0xa7, 0x96, 0x81, 0xec, 0xc3, 0x55, 0x82, 0x1e,
0x2a, 0x67, 0xc0, 0xd2, 0x34, 0xe0, 0xd6, 0xd8, 0x09, 0x02, 0x71, 0x41, 0x0f, 0x3c, 0x37, 0xf4,
0xbd, 0x91, 0x34, 0xf9, 0x2e, 0x4e, 0x03, 0xbe, 0x47, 0x25, 0x9b, 0x54, 0xc0, 0xbe, 0x1d, 0x0f,
0x69, 0x62, 0x3b, 0x7e, 0xd0, 0x02, 0x1c, 0x92, 0x9a, 0x29, 0x4a, 0x54, 0xb6, 0xe3, 0x47, 0x63,
0x11, 0x1f, 0xc1, 0x4c, 0xec, 0x42, 0x65, 0x36, 0x76, 0xe1, 0x47, 0xe9, 0xb1, 0x0b, 0x35, 0x6c,
0xfa, 0xb1, 0x6c, 0x7a, 0x7e, 0x8b, 0xbf, 0x54, 0x08, 0xc3, 0x7c, 0x48, 0x46, 0xfd, 0xcb, 0x84,
0x64, 0x34, 0xd2, 0x42, 0x32, 0xde, 0x87, 0x0a, 0x3e, 0x96, 0xb7, 0xce, 0x1c, 0x37, 0x54, 0x26,
0xec, 0xa6, 0xfe, 0x9a, 0x7e, 0x47, 0x28, 0xd3, 0xe0, 0xab, 0x3f, 0x83, 0xf9, 0xe8, 0x88, 0xc5,
0x5f, 0x62, 0x74, 0x84, 0x7c, 0xd4, 0xff, 0x10, 0x4a, 0x6a, 0x9f, 0x18, 0x83, 0xfc, 0x89, 0xef,
0x8d, 0x95, 0x69, 0x4f, 0xfc, 0xcd, 0xea, 0x90, 0x0d, 0x3d, 0x59, 0x39, 0x1b, 0x7a, 0xc6, 0x6f,
0x40, 0x45, 0x23, 0x35, 0xf6, 0x16, 0x19, 0x11, 0x84, 0xb4, 0x2c, 0xb5, 0x64, 0x5a, 0xc5, 0xb2,
0x84, 0x76, 0x87, 0x82, 0xdf, 0x0c, 0x1d, 0x9f, 0x63, 0x1c, 0x93, 0xe5, 0xf3, 0x73, 0xee, 0x07,
0xca, 0xd4, 0xda, 0x8c, 0x0a, 0x4c, 0x82, 0x1b, 0x7f, 0x13, 0x96, 0x12, 0x7b, 0x2b, 0x59, 0xc4,
0x3b, 0xb0, 0x80, 0xeb, 0xa6, 0x5c, 0x61, 0xc9, 0x28, 0x05, 0x59, 0x86, 0x01, 0xaa, 0x64, 0x25,
0xb6, 0x26, 0xbe, 0x77, 0x8c, 0x9d, 0x64, 0xcc, 0x8a, 0x84, 0x1d, 0xfa, 0xde, 0xb1, 0xf1, 0x67,
0x39, 0xc8, 0xed, 0x78, 0x13, 0xfd, 0xf5, 0x47, 0x66, 0xee, 0xf5, 0x87, 0x54, 0x01, 0xac, 0x48,
0xc4, 0x97, 0x52, 0x1b, 0xda, 0x47, 0x95, 0x98, 0x7f, 0x1f, 0xea, 0x82, 0x4f, 0x84, 0x9e, 0xd0,
0xa1, 0x2e, 0x6c, 0x9f, 0x62, 0x16, 0x72, 0x74, 0xf8, 0xec, 0x71, 0xd8, 0xf7, 0xb6, 0x09, 0xce,
0x96, 0x21, 0x17, 0x09, 0xb0, 0x58, 0x2c, 0x3e, 0x85, 0x72, 0x8d, 0xaf, 0xf7, 0xae, 0xa4, 0xaf,
0x47, 0x7e, 0xb1, 0x6f, 0xc2, 0x52, 0xb2, 0x5d, 0x62, 0x45, 0x52, 0x22, 0xd1, 0x1b, 0x46, 0x9e,
0x74, 0x13, 0x04, 0x1f, 0x21, 0x1c, 0xe9, 0x32, 0x3e, 0xe1, 0x1c, 0x8b, 0x34, 0xa6, 0x57, 0x4a,
0x30, 0xbd, 0x3b, 0x50, 0x09, 0x47, 0xe7, 0xd6, 0xc4, 0xbe, 0x1a, 0x79, 0xf6, 0x50, 0x9e, 0x6f,
0x08, 0x47, 0xe7, 0x87, 0x04, 0x61, 0x8f, 0x00, 0xc6, 0x93, 0x89, 0x3c, 0x7b, 0x68, 0x6e, 0x8c,
0x49, 0x79, 0xef, 0xf0, 0x90, 0x48, 0xce, 0x2c, 0x8f, 0x27, 0x13, 0xfa, 0x93, 0x6d, 0x41, 0x3d,
0x35, 0xd6, 0xe8, 0xb6, 0x7a, 0x6c, 0xe6, 0x4d, 0x1e, 0xa6, 0x1c, 0xce, 0xda, 0x40, 0x87, 0xad,
0x7f, 0x1f, 0xd8, 0x2f, 0x18, 0xf1, 0xd3, 0x87, 0x72, 0x34, 0x3e, 0x3d, 0x60, 0x06, 0x9f, 0x8f,
0x56, 0x12, 0x01, 0x33, 0xed, 0xe1, 0xd0, 0x17, 0x7c, 0x91, 0x2e, 0xcc, 0x88, 0xe5, 0x83, 0x76,
0x63, 0xb6, 0x89, 0xef, 0x1b, 0x7f, 0x91, 0x81, 0x02, 0x45, 0xef, 0xbc, 0x0b, 0x0d, 0xc2, 0x8f,
0x5e, 0xd2, 0x48, 0x0f, 0x11, 0xdd, 0xbb, 0x7d, 0xf9, 0x88, 0x46, 0x1c, 0x0b, 0x2d, 0xf2, 0x30,
0x1b, 0xed, 0xbc, 0x16, 0x7d, 0x78, 0x07, 0xca, 0x51, 0xd7, 0x1a, 0xe9, 0x94, 0x54, 0xcf, 0xec,
0x4d, 0xc8, 0x9f, 0x79, 0x13, 0xa5, 0x8b, 0x43, 0xbc, 0x92, 0x26, 0xc2, 0xe3, 0xb1, 0x88, 0x3e,
0x68, 0xf0, 0x52, 0x87, 0x8c, 0x3a, 0x41, 0x32, 0x98, 0x9f, 0xe3, 0x42, 0xca, 0x1c, 0x8f, 0xa0,
0x21, 0xf8, 0x80, 0xe6, 0xa9, 0xbd, 0xfe, 0xd2, 0xfc, 0xba, 0x90, 0xf0, 0x06, 0xa3, 0xe9, 0x90,
0xeb, 0x96, 0x10, 0x7c, 0xd6, 0x21, 0xe1, 0x4a, 0x3d, 0x30, 0x7e, 0x3f, 0x43, 0xfc, 0x45, 0xb4,
0xcb, 0xee, 0x43, 0x5e, 0xdc, 0x6f, 0x33, 0x96, 0xba, 0xe8, 0x1d, 0xaf, 0xc0, 0x33, 0x11, 0x03,
0xc3, 0x75, 0xa7, 0xe3, 0x64, 0xeb, 0x35, 0xb3, 0xe2, 0x4e, 0xc7, 0x91, 0x31, 0xe1, 0x6b, 0x6a,
0x5a, 0x33, 0x8a, 0x38, 0xcd, 0x3e, 0x3a, 0xa6, 0x0f, 0xb5, 0xf7, 0x21, 0xf9, 0xc4, 0x8d, 0xa9,
0xa4, 0xc0, 0xe1, 0x29, 0xd7, 0xde, 0x85, 0xfc, 0x61, 0x16, 0x6a, 0x89, 0x11, 0xe1, 0x03, 0x19,
0x71, 0x01, 0x90, 0x15, 0x58, 0xee, 0x37, 0x08, 0x90, 0x14, 0xd4, 0xb5, 0x75, 0xca, 0x26, 0xd6,
0x29, 0xf2, 0x49, 0xe7, 0x74, 0x9f, 0xf4, 0x63, 0x28, 0xc7, 0x11, 0xa7, 0xc9, 0x21, 0x89, 0xfe,
0xd4, 0x6b, 0xe6, 0x18, 0x29, 0xf6, 0x62, 0x17, 0x74, 0x2f, 0xf6, 0xf7, 0x34, 0xa7, 0xe7, 0x02,
0x36, 0x63, 0xa4, 0xad, 0xe8, 0x2f, 0xc5, 0xe5, 0x69, 0x7c, 0x04, 0x15, 0x6d, 0xf0, 0xba, 0x73,
0x33, 0x93, 0x70, 0x6e, 0x46, 0x71, 0x07, 0xd9, 0x38, 0xee, 0xc0, 0xf8, 0xad, 0x2c, 0xd4, 0xc4,
0xf9, 0x72, 0xdc, 0xd3, 0x43, 0x6f, 0xe4, 0x0c, 0xd0, 0x2a, 0x1c, 0x9d, 0x30, 0x29, 0x68, 0xa9,
0x73, 0x26, 0x8f, 0x18, 0xc9, 0x59, 0x7a, 0x78, 0x15, 0x31, 0xe9, 0x28, 0xbc, 0xca, 0x80, 0x9a,
0x60, 0x8c, 0xc7, 0x76, 0xc0, 0xb5, 0x78, 0x58, 0xb3, 0x72, 0xc2, 0xf9, 0x86, 0x1d, 0x10, 0x87,
0xfc, 0x26, 0x2c, 0x09, 0x1c, 0x8c, 0x2c, 0x19, 0x3b, 0xa3, 0x91, 0x43, 0x98, 0x64, 0x6a, 0x68,
0x9e, 0x70, 0x6e, 0xda, 0x21, 0xdf, 0x13, 0x05, 0x32, 0x7c, 0xb6, 0x34, 0x74, 0x02, 0xfb, 0x38,
0x7e, 0xc6, 0x14, 0x7d, 0xa3, 0x2f, 0xc7, 0xbe, 0xd4, 0x7c, 0x39, 0x14, 0x62, 0x56, 0x19, 0xdb,
0x97, 0x91, 0x2f, 0x67, 0x86, 0x92, 0x8a, 0xb3, 0x94, 0x64, 0xfc, 0xb7, 0x2c, 0x54, 0x34, 0xb2,
0x7c, 0x9d, 0xdb, 0xf5, 0xf6, 0x9c, 0x15, 0xbf, 0xac, 0x1b, 0xec, 0xdf, 0x4e, 0x76, 0x89, 0x2e,
0x5f, 0x0a, 0xd4, 0xd5, 0x08, 0xf8, 0x16, 0x94, 0xc5, 0xa9, 0x7b, 0x1f, 0x8d, 0x62, 0x32, 0xcc,
0x1c, 0x01, 0x87, 0xd3, 0x63, 0x55, 0xf8, 0x04, 0x0b, 0x0b, 0x71, 0xe1, 0x13, 0x51, 0xf8, 0xb2,
0xb7, 0x8b, 0xdf, 0x81, 0xaa, 0x6c, 0x15, 0xf7, 0x14, 0xa7, 0x1b, 0x9f, 0xfa, 0xc4, 0x7e, 0x9b,
0x15, 0xea, 0x8e, 0x36, 0x5f, 0x56, 0x7c, 0xa2, 0x2a, 0x96, 0x5e, 0x55, 0xf1, 0x09, 0x7d, 0x18,
0xdb, 0xd1, 0x73, 0x50, 0x7c, 0x6e, 0xa0, 0xf8, 0xd8, 0x23, 0x58, 0x52, 0xec, 0x6a, 0xea, 0xda,
0xae, 0xeb, 0x4d, 0xdd, 0x01, 0x57, 0x01, 0x09, 0x4c, 0x16, 0x1d, 0xc5, 0x25, 0xc6, 0x30, 0x8a,
0x58, 0xa3, 0x67, 0x0b, 0x0f, 0xa0, 0x40, 0x72, 0x39, 0x09, 0x1f, 0xe9, 0x8c, 0x8b, 0x50, 0xd8,
0x7d, 0x28, 0x90, 0x78, 0x9e, 0xbd, 0x96, 0xd9, 0x10, 0x82, 0xf1, 0x10, 0x1a, 0x28, 0x62, 0x6a,
0x1c, 0xf7, 0x65, 0x52, 0x89, 0xb1, 0x0c, 0x6c, 0x9f, 0x0e, 0x91, 0xfe, 0x9c, 0xe6, 0x7f, 0xe6,
0xa0, 0xa2, 0x81, 0x05, 0x5b, 0xc4, 0x07, 0x18, 0xd6, 0xd0, 0xb1, 0xc7, 0x5c, 0xf9, 0x1e, 0x6a,
0x66, 0x0d, 0xa1, 0x5b, 0x12, 0x28, 0x2e, 0x05, 0xfb, 0xfc, 0xd4, 0xf2, 0xa6, 0xa1, 0x35, 0xe4,
0xa7, 0x3e, 0xe7, 0x52, 0x58, 0xaa, 0xda, 0xe7, 0xa7, 0x07, 0xd3, 0x70, 0x0b, 0x61, 0x02, 0x4b,
0x10, 0xb5, 0x86, 0x25, 0x63, 0x06, 0xc6, 0xf6, 0x65, 0x8c, 0x25, 0x03, 0x57, 0x68, 0x89, 0xf2,
0x51, 0xe0, 0x0a, 0xa9, 0x2d, 0xb3, 0x9c, 0xbc, 0x30, 0xcf, 0xc9, 0xbf, 0x0b, 0xab, 0xc4, 0xc9,
0x25, 0x8f, 0xb0, 0x66, 0x48, 0x6a, 0x19, 0x4b, 0xe5, 0x24, 0x35, 0xf9, 0xab, 0x29, 0x66, 0xa0,
0xce, 0x47, 0xe0, 0xfc, 0x94, 0x4e, 0x54, 0xc6, 0x14, 0x33, 0x93, 0x8d, 0xf7, 0x9c, 0x9f, 0x72,
0x81, 0x89, 0x8e, 0x51, 0x1d, 0x53, 0x86, 0xa1, 0x8e, 0x1d, 0x77, 0x16, 0xd3, 0xbe, 0x4c, 0x62,
0x96, 0x25, 0xa6, 0x7d, 0xa9, 0x63, 0xbe, 0x0f, 0x6b, 0x63, 0x3e, 0x74, 0xec, 0x64, 0xb3, 0x56,
0x2c, 0x41, 0x2c, 0x53, 0xb1, 0x56, 0xa7, 0x47, 0x1a, 0xa4, 0x58, 0x8d, 0x9f, 0x7a, 0xe3, 0x63,
0x87, 0x2e, 0x4f, 0x72, 0xd5, 0xe6, 0xcd, 0xba, 0x3b, 0x1d, 0xff, 0x18, 0xc1, 0xa2, 0x4a, 0x60,
0xd4, 0xa0, 0xd2, 0x0b, 0xbd, 0x89, 0xda, 0xe6, 0x3a, 0x54, 0xe9, 0x53, 0xa6, 0x74, 0xdc, 0x82,
0x9b, 0x48, 0x9b, 0x7d, 0x6f, 0xe2, 0x8d, 0xbc, 0xd3, 0xab, 0x84, 0x41, 0xe9, 0xbf, 0x67, 0x60,
0x29, 0x51, 0x2a, 0xcf, 0xf9, 0x77, 0xe9, 0x60, 0x45, 0x71, 0xf9, 0x44, 0xce, 0x8b, 0xda, 0xe5,
0x43, 0x88, 0x74, 0xaa, 0x54, 0xac, 0x7e, 0x3b, 0xce, 0x27, 0x55, 0x15, 0x89, 0xb6, 0x5b, 0xf3,
0xb4, 0x2d, 0xeb, 0xab, 0x4c, 0x53, 0xd5, 0xc4, 0xff, 0x2f, 0x43, 0x85, 0x87, 0x72, 0xca, 0xb9,
0x64, 0x30, 0xa4, 0x6e, 0x7c, 0x52, 0x23, 0x88, 0x2d, 0x52, 0x81, 0xf1, 0x6f, 0x32, 0x00, 0xf1,
0xe8, 0x30, 0x1c, 0x33, 0xba, 0x40, 0xe9, 0xa9, 0x16, 0xed, 0xb2, 0x7c, 0x13, 0xaa, 0x51, 0xc4,
0x58, 0x7c, 0x25, 0x57, 0x14, 0x4c, 0xdc, 0xcb, 0xf7, 0xa1, 0x71, 0x3a, 0xf2, 0x8e, 0x51, 0x74,
0x92, 0x17, 0x28, 0x25, 0xb6, 0xd4, 0x09, 0xac, 0xae, 0xc5, 0xf8, 0x02, 0xcf, 0xa7, 0x06, 0x95,
0xe9, 0xd7, 0xb1, 0xf1, 0xdb, 0xd9, 0x28, 0x74, 0x26, 0x5e, 0x89, 0x97, 0xeb, 0x19, 0x5f, 0xc7,
0x03, 0xfb, 0x32, 0xcf, 0xc3, 0x47, 0x50, 0xf7, 0x89, 0x3b, 0x2a, 0xd6, 0x99, 0x7f, 0x09, 0xeb,
0xac, 0xf9, 0x89, 0x2b, 0xf7, 0x9b, 0xd0, 0xb4, 0x87, 0xe7, 0xdc, 0x0f, 0x1d, 0x34, 0xd6, 0xa2,
0xa0, 0x26, 0x83, 0x55, 0x34, 0x38, 0x4a, 0x44, 0xf7, 0xa1, 0x21, 0xd3, 0x8c, 0x22, 0x4c, 0xf9,
0x70, 0x41, 0x0c, 0x16, 0x88, 0xc6, 0xbf, 0x57, 0xb1, 0x3a, 0xc9, 0xdd, 0x7d, 0xf9, 0xaa, 0xe8,
0x33, 0xcc, 0xce, 0xfb, 0x56, 0x24, 0x21, 0x49, 0x1b, 0xb0, 0xe4, 0x47, 0x04, 0x94, 0x16, 0xe0,
0xe4, 0xb2, 0xe6, 0x5f, 0x67, 0x59, 0x8d, 0x3f, 0xce, 0x40, 0x71, 0xc7, 0x9b, 0x08, 0xbd, 0x5c,
0xc8, 0x73, 0x78, 0x4c, 0xa2, 0x14, 0xbf, 0x05, 0xf1, 0xd9, 0x1d, 0xbe, 0x3c, 0x2c, 0x3f, 0x55,
0xde, 0xa8, 0x25, 0xe5, 0x8d, 0x1f, 0xc0, 0x2d, 0xf4, 0x46, 0xf8, 0xde, 0xc4, 0xf3, 0xc5, 0x51,
0xb5, 0x47, 0x24, 0x77, 0x78, 0x6e, 0x78, 0xa6, 0x78, 0xe7, 0xcd, 0x13, 0xce, 0x0f, 0x35, 0x8c,
0xbd, 0x08, 0x01, 0xf3, 0x55, 0x46, 0xe1, 0xb9, 0x45, 0xaa, 0xa2, 0x14, 0x8c, 0x88, 0xa3, 0x36,
0x44, 0x41, 0x07, 0xe1, 0x28, 0x1a, 0x19, 0xdf, 0x87, 0x72, 0x64, 0x75, 0x60, 0xef, 0x42, 0xf9,
0xcc, 0x9b, 0x48, 0xd3, 0x44, 0x26, 0x91, 0xba, 0x20, 0x67, 0x6d, 0x96, 0xce, 0xe8, 0x8f, 0xc0,
0xf8, 0xb3, 0x22, 0x14, 0xbb, 0xee, 0xb9, 0xe7, 0x0c, 0x30, 0xda, 0x67, 0xcc, 0xc7, 0x9e, 0xca,
0x75, 0x14, 0x7f, 0xa3, 0x47, 0x3f, 0x7e, 0x7e, 0x20, 0x27, 0x3d, 0xfa, 0xd1, 0xc3, 0x03, 0x2b,
0xb0, 0xe0, 0xeb, 0xef, 0x07, 0x14, 0x7c, 0x8c, 0x3f, 0x8c, 0x94, 0xb6, 0x82, 0x96, 0x2b, 0x2a,
0xda, 0xa2, 0xbc, 0x76, 0x5c, 0x32, 0xca, 0x3d, 0x29, 0x23, 0x04, 0x17, 0xec, 0x36, 0x14, 0x65,
0xa6, 0x00, 0xc5, 0x5d, 0x53, 0xc0, 0xa0, 0x04, 0x21, 0x35, 0xf8, 0x9c, 0xbc, 0x49, 0x91, 0x44,
0x25, 0xf4, 0x74, 0x09, 0xdc, 0x12, 0xb4, 0x76, 0x17, 0x2a, 0x84, 0x4f, 0x28, 0x25, 0x19, 0x9f,
0x83, 0x20, 0x44, 0x48, 0x79, 0x86, 0xa3, 0x9c, 0xfa, 0x0c, 0x07, 0x86, 0x73, 0x45, 0x5c, 0x96,
0xa6, 0x08, 0xf4, 0xf8, 0x82, 0x06, 0x57, 0x6f, 0xd0, 0x48, 0xe5, 0x9e, 0x52, 0xb1, 0x94, 0x72,
0xff, 0x16, 0xd4, 0x4e, 0xec, 0xd1, 0xe8, 0xd8, 0x1e, 0xbc, 0x20, 0x9d, 0xb4, 0x4a, 0x66, 0x38,
0x05, 0x44, 0xa5, 0xf4, 0x2e, 0x54, 0xb4, 0x5d, 0xc6, 0xe0, 0x9b, 0xbc, 0x09, 0xf1, 0xfe, 0xce,
0x9a, 0x9a, 0xea, 0xaf, 0x61, 0x6a, 0xd2, 0x82, 0x90, 0x1a, 0xc9, 0x20, 0xa4, 0x5b, 0xc8, 0x4d,
0x65, 0xa0, 0x4a, 0x93, 0x32, 0xfd, 0xed, 0xe1, 0x10, 0x03, 0x55, 0xe8, 0x59, 0x2d, 0x5c, 0x3c,
0x2a, 0x5f, 0x24, 0xa1, 0x96, 0x60, 0x84, 0x72, 0x87, 0xec, 0xa5, 0x13, 0xdb, 0x19, 0x62, 0xd0,
0x27, 0xa9, 0xb1, 0x45, 0x7b, 0x1c, 0x1e, 0xda, 0xce, 0x90, 0xdd, 0x83, 0xaa, 0x2a, 0xc6, 0xdb,
0x71, 0x89, 0xd6, 0x5f, 0x16, 0x8b, 0x3b, 0xd1, 0x80, 0x5a, 0x84, 0x31, 0x8e, 0xf3, 0xa9, 0x2a,
0x12, 0x05, 0xe9, 0xe0, 0x3d, 0x74, 0xfe, 0x87, 0x1c, 0xb3, 0xa6, 0xea, 0x4f, 0x6f, 0xc9, 0xb9,
0x4a, 0x2a, 0x55, 0xff, 0x63, 0xa4, 0x83, 0x49, 0x98, 0x42, 0x10, 0x23, 0x17, 0xcd, 0x6a, 0x42,
0x10, 0x93, 0xa8, 0xe8, 0xa2, 0x21, 0x04, 0xf6, 0x7d, 0x4d, 0x91, 0x6a, 0x21, 0xf2, 0xed, 0x99,
0xf6, 0xaf, 0x51, 0xa1, 0x04, 0xf5, 0x3a, 0x81, 0xb8, 0x65, 0x02, 0xee, 0x0e, 0x31, 0x01, 0xaa,
0x64, 0x96, 0x9d, 0xe0, 0x39, 0x01, 0x7e, 0xb1, 0x1a, 0x56, 0x1b, 0xaa, 0xfa, 0x34, 0x59, 0x09,
0xf2, 0x07, 0x87, 0x9d, 0xfd, 0xe6, 0x0d, 0x56, 0x81, 0x62, 0xaf, 0xd3, 0xef, 0xef, 0x76, 0xb6,
0x9a, 0x19, 0x56, 0x85, 0x52, 0x94, 0xc6, 0x91, 0x15, 0x5f, 0xed, 0xcd, 0xcd, 0xce, 0x61, 0xbf,
0xb3, 0xd5, 0xcc, 0xfd, 0x28, 0x5f, 0xca, 0x36, 0x73, 0xc6, 0x9f, 0xe7, 0xa0, 0xa2, 0xad, 0xc2,
0xcb, 0x99, 0xf1, 0x1d, 0x00, 0x54, 0x69, 0xe2, 0x38, 0xa6, 0xbc, 0x59, 0x16, 0x10, 0xda, 0x7c,
0xdd, 0x58, 0x9e, 0xa3, 0x27, 0x24, 0x94, 0xb1, 0xfc, 0x2d, 0xa8, 0xd1, 0x6b, 0x0c, 0xba, 0xbb,
0xae, 0x60, 0x56, 0x09, 0x28, 0x59, 0x35, 0xe6, 0x81, 0x21, 0x12, 0x66, 0x08, 0xc8, 0xdc, 0x6c,
0x02, 0x61, 0x8e, 0x00, 0x26, 0x78, 0x04, 0xde, 0xe8, 0x9c, 0x13, 0x06, 0x49, 0x84, 0x15, 0x09,
0xeb, 0xcb, 0x44, 0x34, 0xc9, 0x0f, 0xb5, 0x44, 0xa4, 0x82, 0x59, 0x25, 0xa0, 0xec, 0xe8, 0xdb,
0x8a, 0x80, 0x4a, 0x48, 0x40, 0x6b, 0xf3, 0xd4, 0x90, 0x20, 0x9e, 0xdd, 0x39, 0x7b, 0x56, 0x19,
0x09, 0xe3, 0x1b, 0xf3, 0xf5, 0x5e, 0x6d, 0xd7, 0x62, 0xef, 0x02, 0x1b, 0x4f, 0x26, 0x56, 0x8a,
0xa5, 0x29, 0x6f, 0x36, 0xc6, 0x93, 0x49, 0x5f, 0x33, 0xc4, 0xfc, 0x02, 0x8c, 0x60, 0x9f, 0x03,
0x6b, 0x8b, 0x03, 0x8c, 0x43, 0x8c, 0x4c, 0xa8, 0x31, 0x5b, 0xce, 0xe8, 0x6c, 0x39, 0x85, 0xfb,
0x65, 0x53, 0xb9, 0xdf, 0xcb, 0xf8, 0x84, 0xb1, 0x0d, 0x95, 0x43, 0xed, 0xad, 0x97, 0x7b, 0xe2,
0x86, 0x50, 0xaf, 0xbc, 0xd0, 0xdd, 0x41, 0xc6, 0x2d, 0x5f, 0x3e, 0xee, 0xa2, 0x8d, 0x26, 0xab,
0x8d, 0xc6, 0xf8, 0xd7, 0x19, 0xca, 0xa3, 0x8f, 0x06, 0x1f, 0x3f, 0x2f, 0xa3, 0xfc, 0x40, 0x71,
0xbe, 0x60, 0x45, 0xf9, 0x7f, 0x64, 0xaa, 0x1f, 0x0e, 0xcd, 0xf2, 0x4e, 0x4e, 0x02, 0xae, 0x32,
0x5f, 0x2a, 0x08, 0x3b, 0x40, 0x90, 0x12, 0xbe, 0x85, 0x84, 0xef, 0x50, 0xfb, 0x81, 0xcc, 0x80,
0x11, 0xc2, 0xf7, 0x9e, 0x7d, 0x29, 0x7b, 0x0d, 0x84, 0x08, 0x22, 0x0d, 0xd5, 0x2a, 0xdf, 0x27,
0xfa, 0x36, 0xfe, 0x85, 0x4c, 0x69, 0x9c, 0x5d, 0xdf, 0x87, 0x50, 0x8a, 0x5a, 0x4d, 0xde, 0xb0,
0x0a, 0x33, 0x2a, 0x17, 0xf7, 0x38, 0x6a, 0xe5, 0x89, 0x11, 0xd3, 0xe1, 0x42, 0x67, 0x43, 0x57,
0x1b, 0xf5, 0xb7, 0x80, 0x9d, 0x38, 0xfe, 0x2c, 0x32, 0x1d, 0xb6, 0x26, 0x96, 0x68, 0xd8, 0xc6,
0x11, 0x2c, 0x29, 0x2e, 0xa1, 0x69, 0x04, 0xc9, 0xcd, 0xcb, 0xbc, 0x82, 0xc9, 0x67, 0xe7, 0x98,
0xbc, 0xf1, 0xb3, 0x3c, 0x14, 0xd5, 0xbb, 0x49, 0x69, 0x6f, 0xfd, 0x94, 0x93, 0x6f, 0xfd, 0xb4,
0x12, 0xef, 0x42, 0xe0, 0xd6, 0xcb, 0xfb, 0xfe, 0xfe, 0xec, 0x95, 0xad, 0x19, 0xcd, 0x13, 0xd7,
0xf6, 0x2a, 0xe4, 0x27, 0x76, 0x78, 0x86, 0x06, 0x32, 0x22, 0x1e, 0xfc, 0x56, 0xc6, 0xf4, 0x42,
0xd2, 0x98, 0x9e, 0xf6, 0x2e, 0x12, 0x89, 0xa4, 0x73, 0xef, 0x22, 0xdd, 0x02, 0x92, 0x2f, 0xb4,
0x78, 0x98, 0x12, 0x02, 0xc4, 0x5d, 0x94, 0x14, 0x47, 0x4a, 0xb3, 0xe2, 0xc8, 0x6b, 0x8b, 0x0a,
0xdf, 0x85, 0x05, 0xca, 0x29, 0x96, 0x79, 0x4d, 0xea, 0x42, 0x91, 0x6b, 0xa8, 0xfe, 0xa7, 0x20,
0x58, 0x53, 0xe2, 0xea, 0x8f, 0x8c, 0x54, 0x12, 0x8f, 0x8c, 0xe8, 0x46, 0xfe, 0x6a, 0xd2, 0xc8,
0xff, 0x00, 0x9a, 0xd1, 0x82, 0xa2, 0xc9, 0xcc, 0x0d, 0x64, 0x46, 0x47, 0x5d, 0xc1, 0x05, 0x97,
0xdc, 0x0f, 0xe2, 0x0b, 0xb1, 0x9e, 0xb8, 0x10, 0x05, 0x0f, 0x6b, 0x87, 0x21, 0x1f, 0x4f, 0x42,
0x79, 0x21, 0x62, 0xcc, 0xb7, 0x3e, 0xc0, 0x64, 0xc6, 0x5f, 0x0d, 0xca, 0xdd, 0x7d, 0x6b, 0x7b,
0xb7, 0xfb, 0x6c, 0xa7, 0xdf, 0xcc, 0x88, 0xcf, 0xde, 0xd1, 0xe6, 0x66, 0xa7, 0xb3, 0x85, 0x37,
0x0e, 0xc0, 0xc2, 0x76, 0xbb, 0x2b, 0x6e, 0x9f, 0x9c, 0xf1, 0xbb, 0x59, 0xa8, 0x68, 0xcd, 0xb3,
0xf7, 0xa3, 0x55, 0xa1, 0x77, 0x28, 0xee, 0xcc, 0x0f, 0xe1, 0x91, 0x62, 0xc5, 0xda, 0xb2, 0x44,
0xaf, 0x40, 0x65, 0xaf, 0x7d, 0x05, 0x8a, 0xbd, 0x03, 0x0d, 0x9b, 0x5a, 0x88, 0x56, 0x41, 0x9a,
0x83, 0x25, 0x58, 0x2e, 0x02, 0x46, 0x81, 0xc5, 0xf7, 0x89, 0xc0, 0xcb, 0xab, 0xc0, 0xab, 0xe8,
0x4a, 0xc1, 0xc5, 0x2a, 0x9e, 0xd8, 0xce, 0x68, 0xea, 0x73, 0xe9, 0xbe, 0x8d, 0x6e, 0x66, 0x82,
0x9a, 0xaa, 0xd8, 0xf8, 0x00, 0x20, 0x1e, 0x73, 0x72, 0x71, 0x6e, 0x24, 0x17, 0x27, 0xa3, 0x2d,
0x4e, 0xd6, 0xd8, 0x22, 0x36, 0x22, 0x17, 0x3a, 0xf2, 0x54, 0x7f, 0x1b, 0x94, 0x45, 0xca, 0xc2,
0x38, 0xcc, 0xc9, 0x88, 0x87, 0x2a, 0x37, 0x72, 0x51, 0x96, 0x74, 0xa3, 0x02, 0x95, 0xaa, 0x1c,
0xb7, 0x12, 0x73, 0x23, 0x49, 0x92, 0xb3, 0xdc, 0x48, 0xa2, 0x9a, 0x51, 0xb9, 0xb1, 0x0e, 0xad,
0x2d, 0x2e, 0x5a, 0x6b, 0x8f, 0x46, 0x33, 0xc3, 0x31, 0x6e, 0xc1, 0xcd, 0x94, 0x32, 0x69, 0x84,
0xf8, 0x18, 0x56, 0xda, 0x94, 0x06, 0xf9, 0x8b, 0xca, 0xc5, 0x30, 0x5a, 0xb0, 0x3a, 0xdb, 0xa4,
0xec, 0x6c, 0x1b, 0x16, 0xb7, 0xf8, 0xf1, 0xf4, 0x74, 0x97, 0x9f, 0xc7, 0x1d, 0x31, 0xc8, 0x07,
0x67, 0xde, 0x85, 0x5c, 0x1f, 0xfc, 0x5b, 0x9c, 0xe1, 0x91, 0xc0, 0xb1, 0x82, 0x09, 0x1f, 0x28,
0x8b, 0x28, 0x42, 0x7a, 0x13, 0x3e, 0x30, 0xde, 0x07, 0xa6, 0xb7, 0x23, 0xd7, 0x4b, 0x68, 0x09,
0xd3, 0x63, 0x2b, 0xb8, 0x0a, 0x42, 0x3e, 0x56, 0xcf, 0x9c, 0x40, 0x30, 0x3d, 0xee, 0x11, 0xc4,
0xb8, 0x0f, 0xd5, 0x43, 0xfb, 0xca, 0xe4, 0x9f, 0xcb, 0x2c, 0x83, 0x35, 0x28, 0x4e, 0xec, 0x2b,
0xc1, 0x06, 0x22, 0xe7, 0x08, 0x16, 0x1b, 0x7f, 0x90, 0x87, 0x05, 0xc2, 0x64, 0xf7, 0xe8, 0x25,
0x42, 0xc7, 0xc5, 0x63, 0xa8, 0x18, 0xa5, 0x06, 0x9a, 0xe3, 0xa5, 0xd9, 0x79, 0x5e, 0x2a, 0x0d,
0x68, 0xea, 0x05, 0x06, 0x65, 0xc6, 0x76, 0xa7, 0x63, 0xf5, 0xec, 0x02, 0xbb, 0x0d, 0xe5, 0x38,
0x9d, 0x2b, 0x1f, 0xbf, 0x34, 0x49, 0x49, 0x5c, 0x49, 0x47, 0x63, 0xac, 0x8b, 0xd0, 0xe8, 0xd4,
0x15, 0x21, 0xd9, 0xa5, 0x0e, 0x4a, 0x55, 0x78, 0x8a, 0x2a, 0x7f, 0x25, 0xa9, 0xf0, 0xcc, 0x29,
0x36, 0xa5, 0x57, 0x2b, 0x36, 0x64, 0x59, 0x7b, 0x89, 0x62, 0x03, 0xaf, 0xa1, 0xd8, 0xbc, 0x86,
0x93, 0xef, 0x26, 0x94, 0xf0, 0xde, 0xd7, 0xb8, 0xa7, 0xb8, 0xef, 0x05, 0xf7, 0xfc, 0x9e, 0x26,
0xfa, 0x53, 0x84, 0xc1, 0xad, 0xf8, 0x98, 0x98, 0xfc, 0xf3, 0x5f, 0x8e, 0xf3, 0xe4, 0x33, 0x28,
0x4a, 0xa8, 0x20, 0x68, 0xd7, 0x1e, 0xab, 0x47, 0x6c, 0xf0, 0x6f, 0xb1, 0x6c, 0xf8, 0xf2, 0xc6,
0xe7, 0x53, 0xc7, 0xe7, 0x43, 0xf5, 0xcc, 0x81, 0x83, 0x67, 0x54, 0x40, 0xc4, 0x04, 0x85, 0x1a,
0xe2, 0x7a, 0x17, 0xae, 0x4c, 0x72, 0x2e, 0x3a, 0xc1, 0x73, 0xf1, 0x69, 0x30, 0x68, 0xe2, 0x33,
0x56, 0x13, 0xcf, 0x57, 0x97, 0x93, 0xf1, 0xb3, 0x0c, 0x34, 0xe5, 0xe9, 0x8a, 0xca, 0x74, 0x2d,
0xa0, 0x70, 0x9d, 0x43, 0xfc, 0xe5, 0x8f, 0x16, 0x18, 0x50, 0x43, 0xe3, 0x47, 0x74, 0x53, 0x91,
0xf1, 0xa6, 0x22, 0x80, 0xdb, 0xf2, 0xb6, 0x7a, 0x03, 0x2a, 0x2a, 0x1c, 0x73, 0xec, 0x8c, 0xd4,
0xa3, 0xb2, 0x14, 0x8f, 0xb9, 0xe7, 0x8c, 0xd4, 0x45, 0xe7, 0xdb, 0x32, 0x9f, 0x2a, 0x83, 0x17,
0x9d, 0x69, 0x87, 0xdc, 0xf8, 0xcf, 0x19, 0x58, 0xd4, 0xa6, 0x22, 0xcf, 0xed, 0x87, 0x50, 0x8d,
0xde, 0x8f, 0xe3, 0x91, 0xe4, 0xb5, 0x96, 0x64, 0x34, 0x71, 0xb5, 0xca, 0x20, 0x82, 0x04, 0x62,
0x30, 0x43, 0xfb, 0x0a, 0xc7, 0x1b, 0x4c, 0xc7, 0x4a, 0xb9, 0x19, 0xda, 0x57, 0xdb, 0x9c, 0xf7,
0xa6, 0x63, 0xa1, 0xba, 0x5e, 0x70, 0xfe, 0x22, 0x42, 0x20, 0x99, 0x0b, 0x04, 0x4c, 0x62, 0x18,
0x50, 0x1b, 0x7b, 0x6e, 0x78, 0x16, 0xa1, 0x48, 0xa9, 0x13, 0x81, 0x84, 0x63, 0xfc, 0x69, 0x16,
0x96, 0xc8, 0xc4, 0x26, 0x4d, 0x9b, 0x92, 0x75, 0xb5, 0x60, 0x81, 0xac, 0x8d, 0xc4, 0xbc, 0x76,
0x6e, 0x98, 0xf2, 0x9b, 0x7d, 0xf7, 0x35, 0xcd, 0x82, 0x2a, 0x65, 0xeb, 0x9a, 0xe5, 0xcf, 0xcd,
0x2f, 0xff, 0xf5, 0xcb, 0x9b, 0xe6, 0x71, 0x2b, 0xa4, 0x79, 0xdc, 0x5e, 0xc7, 0xcf, 0x35, 0x97,
0xd7, 0x54, 0x94, 0x38, 0x5a, 0x5e, 0xd3, 0xfb, 0xb0, 0x96, 0xc0, 0x41, 0x6e, 0xed, 0x9c, 0x38,
0x5c, 0xe5, 0x90, 0x2f, 0x6b, 0xd8, 0x3d, 0x55, 0xb6, 0x51, 0x84, 0x42, 0x30, 0xf0, 0x26, 0xdc,
0x58, 0x85, 0xe5, 0xe4, 0xaa, 0xca, 0x6b, 0xe2, 0xf7, 0x32, 0xd0, 0x92, 0xf1, 0x11, 0x8e, 0x7b,
0xba, 0xe3, 0x04, 0xa1, 0xe7, 0x47, 0xef, 0xac, 0xdd, 0x01, 0x08, 0x42, 0xdb, 0x97, 0xda, 0x26,
0xc9, 0xc1, 0x65, 0x84, 0xa0, 0x26, 0x79, 0x13, 0x4a, 0xdc, 0x1d, 0x52, 0x21, 0x51, 0x43, 0x91,
0xbb, 0x43, 0xa5, 0x87, 0xce, 0xc9, 0xdf, 0xb5, 0xa4, 0x7a, 0x21, 0x13, 0x2c, 0xc5, 0xea, 0xf0,
0x73, 0xbc, 0x78, 0xf3, 0x51, 0x82, 0xe5, 0x9e, 0x7d, 0x89, 0xd1, 0x86, 0x81, 0xf1, 0x4f, 0xb3,
0xd0, 0x88, 0xc7, 0x47, 0xd9, 0xd9, 0x09, 0xfe, 0x2d, 0x47, 0x15, 0xf3, 0xef, 0x7b, 0x92, 0x1c,
0x1c, 0x21, 0xbf, 0x6b, 0x86, 0xc7, 0x12, 0x1d, 0xce, 0xae, 0xcb, 0x0c, 0xa8, 0x28, 0x0c, 0x6f,
0x1a, 0x6a, 0xcf, 0x1d, 0x95, 0x09, 0xe5, 0x60, 0x1a, 0x0a, 0x85, 0x4b, 0x68, 0x9e, 0x8e, 0x2b,
0x55, 0x9e, 0x82, 0x3d, 0x0e, 0xbb, 0xf8, 0x8a, 0xb2, 0x00, 0x8b, 0x6a, 0xb4, 0x91, 0x02, 0x4b,
0xe0, 0x37, 0x49, 0xce, 0xa6, 0x9d, 0x43, 0x19, 0x5b, 0x17, 0x42, 0xe9, 0x41, 0xc9, 0x48, 0x08,
0x7d, 0x03, 0x2a, 0xd4, 0x78, 0x9c, 0xc6, 0x96, 0x37, 0xcb, 0xd8, 0x03, 0x96, 0x4b, 0x23, 0x90,
0x37, 0x4d, 0xa8, 0xbe, 0x40, 0x5d, 0x61, 0xf8, 0xc1, 0x3f, 0xca, 0xc0, 0xcd, 0x94, 0x6d, 0x93,
0xa7, 0x7c, 0x13, 0x16, 0x4f, 0xa2, 0x42, 0xb5, 0xba, 0x74, 0xd4, 0x57, 0x15, 0x5b, 0x4d, 0xae,
0xa9, 0xd9, 0x3c, 0x49, 0x02, 0x62, 0xa5, 0x8b, 0x76, 0x30, 0x91, 0xa9, 0x88, 0x4a, 0x17, 0x6d,
0x23, 0xe9, 0x3b, 0x87, 0xb0, 0xde, 0xb9, 0x14, 0x1c, 0x63, 0x53, 0x7f, 0x06, 0x5c, 0x91, 0x51,
0xd2, 0xc0, 0x9c, 0x79, 0x2d, 0x03, 0xf3, 0x90, 0x12, 0xb2, 0xa2, 0xb6, 0xbe, 0x4e, 0x23, 0x78,
0x81, 0x8a, 0x3a, 0xf4, 0x8c, 0xb9, 0xca, 0x96, 0x1c, 0x44, 0xcf, 0x97, 0x1b, 0x01, 0x34, 0xf6,
0xa6, 0xa3, 0xd0, 0x89, 0x5f, 0x34, 0x67, 0xdf, 0x95, 0x75, 0xb0, 0x1f, 0xb5, 0x6a, 0xa9, 0x1d,
0x41, 0xd4, 0x11, 0x2e, 0xd6, 0x58, 0x34, 0x64, 0xcd, 0xf7, 0xd7, 0x18, 0x27, 0x7b, 0x30, 0x6e,
0xc2, 0x5a, 0xfc, 0x45, 0xcb, 0xa6, 0xae, 0x9a, 0x7f, 0x95, 0xa1, 0xd0, 0xe6, 0xe4, 0xeb, 0xea,
0xac, 0x03, 0x4b, 0x81, 0xe3, 0x9e, 0x8e, 0xb8, 0xde, 0x7c, 0x20, 0x17, 0x61, 0x25, 0x39, 0x36,
0xf9, 0x02, 0xbb, 0xb9, 0x48, 0x35, 0xe2, 0xd6, 0x02, 0xb6, 0x71, 0xdd, 0x20, 0x63, 0xb2, 0x98,
0x59, 0x8d, 0xf9, 0xc1, 0x77, 0xa1, 0x9e, 0xec, 0x88, 0x7d, 0x4f, 0x26, 0x23, 0xc6, 0xa3, 0xca,
0xcd, 0xe4, 0x95, 0xc5, 0x04, 0x51, 0x89, 0xd7, 0x3e, 0x30, 0xfe, 0x71, 0x06, 0x5a, 0x26, 0x17,
0x94, 0xab, 0x8d, 0x52, 0xd1, 0xcc, 0x87, 0x73, 0xad, 0x5e, 0x3f, 0x57, 0x95, 0xe3, 0xa8, 0x46,
0xf4, 0xad, 0x6b, 0x37, 0x63, 0xe7, 0xc6, 0xdc, 0x8c, 0x36, 0x4a, 0xb0, 0x40, 0x28, 0xc6, 0x1a,
0xac, 0xc8, 0xf1, 0xa8, 0xb1, 0xc4, 0xde, 0xc3, 0x44, 0x8f, 0x09, 0xef, 0xe1, 0x3a, 0xb4, 0xe8,
0xb9, 0x3c, 0x7d, 0x12, 0xb2, 0xe2, 0x16, 0xb0, 0x3d, 0x7b, 0x60, 0xfb, 0x9e, 0xe7, 0x1e, 0x72,
0x5f, 0x06, 0x8a, 0xa2, 0x84, 0x89, 0xce, 0x35, 0x25, 0x0a, 0xd3, 0x97, 0x7a, 0xe4, 0xcd, 0x73,
0x55, 0x5c, 0x0c, 0x7d, 0x19, 0x26, 0x2c, 0x6d, 0xd8, 0x2f, 0xb8, 0x6a, 0x49, 0x2d, 0xd1, 0x47,
0x50, 0x99, 0x44, 0x8d, 0xaa, 0x75, 0x57, 0x19, 0xcb, 0xf3, 0xdd, 0x9a, 0x3a, 0xb6, 0xf1, 0x14,
0x96, 0x93, 0x6d, 0x4a, 0xd6, 0xb1, 0x0e, 0xa5, 0xb1, 0x84, 0xc9, 0xd1, 0x45, 0xdf, 0xc6, 0xef,
0x94, 0xa0, 0x28, 0xf5, 0x39, 0xf6, 0x08, 0xf2, 0x03, 0x15, 0x9b, 0x14, 0x3f, 0x84, 0x21, 0x4b,
0xd5, 0xff, 0x9b, 0x18, 0xa1, 0x24, 0xf0, 0xd8, 0x47, 0x50, 0x4f, 0x7a, 0x45, 0x67, 0xd2, 0x21,
0x93, 0xee, 0xcc, 0xda, 0x60, 0xc6, 0xff, 0x55, 0x8e, 0x2f, 0x47, 0x92, 0x19, 0x4a, 0x67, 0xda,
0xed, 0xe9, 0xb9, 0x42, 0xde, 0x0e, 0xce, 0x6c, 0xeb, 0xe9, 0xfb, 0x1f, 0xc8, 0x7c, 0xc8, 0x0a,
0x02, 0x7b, 0x67, 0xf6, 0xd3, 0xf7, 0x3f, 0x98, 0x95, 0xa4, 0x29, 0x25, 0x4e, 0x97, 0xa4, 0x97,
0xa1, 0x40, 0xaf, 0x99, 0x51, 0x90, 0x09, 0x7d, 0xb0, 0x27, 0xb0, 0x2c, 0xd5, 0x56, 0x4b, 0x86,
0x03, 0x13, 0x17, 0x2c, 0x51, 0x0e, 0x8e, 0x2c, 0xeb, 0x61, 0x11, 0xd9, 0x86, 0x56, 0x61, 0xe1,
0x2c, 0x7e, 0x9a, 0xae, 0x66, 0xca, 0x2f, 0xe3, 0x4f, 0x0b, 0x50, 0xd1, 0x16, 0x85, 0x55, 0xa1,
0x64, 0x76, 0x7a, 0x1d, 0xf3, 0x93, 0xce, 0x56, 0xf3, 0x06, 0x7b, 0x00, 0x6f, 0x77, 0xf7, 0x37,
0x0f, 0x4c, 0xb3, 0xb3, 0xd9, 0xb7, 0x0e, 0x4c, 0x4b, 0xbd, 0x91, 0x72, 0xd8, 0xfe, 0x6c, 0xaf,
0xb3, 0xdf, 0xb7, 0xb6, 0x3a, 0xfd, 0x76, 0x77, 0xb7, 0xd7, 0xcc, 0xb0, 0xdb, 0xd0, 0x8a, 0x31,
0x55, 0x71, 0x7b, 0xef, 0xe0, 0x68, 0xbf, 0xdf, 0xcc, 0xb2, 0xbb, 0x70, 0x6b, 0xbb, 0xbb, 0xdf,
0xde, 0xb5, 0x62, 0x9c, 0xcd, 0xdd, 0xfe, 0x27, 0x56, 0xe7, 0xd7, 0x0e, 0xbb, 0xe6, 0x67, 0xcd,
0x5c, 0x1a, 0x82, 0x50, 0xc6, 0x55, 0x0b, 0x79, 0x76, 0x13, 0x56, 0x08, 0x81, 0xaa, 0x58, 0xfd,
0x83, 0x03, 0xab, 0x77, 0x70, 0xb0, 0xdf, 0x2c, 0xb0, 0x45, 0xa8, 0x75, 0xf7, 0x3f, 0x69, 0xef,
0x76, 0xb7, 0x2c, 0xb3, 0xd3, 0xde, 0xdd, 0x6b, 0x2e, 0xb0, 0x25, 0x68, 0xcc, 0xe2, 0x15, 0x45,
0x13, 0x0a, 0xef, 0x60, 0xbf, 0x7b, 0xb0, 0x6f, 0x7d, 0xd2, 0x31, 0x7b, 0xdd, 0x83, 0xfd, 0x66,
0x89, 0xad, 0x02, 0x4b, 0x16, 0xed, 0xec, 0xb5, 0x37, 0x9b, 0x65, 0xb6, 0x02, 0x8b, 0x49, 0xf8,
0xf3, 0xce, 0x67, 0x4d, 0x60, 0x2d, 0x58, 0xa6, 0x81, 0x59, 0x1b, 0x9d, 0xdd, 0x83, 0x4f, 0xad,
0xbd, 0xee, 0x7e, 0x77, 0xef, 0x68, 0xaf, 0x59, 0xc1, 0x47, 0x98, 0x3a, 0x1d, 0xab, 0xbb, 0xdf,
0x3b, 0xda, 0xde, 0xee, 0x6e, 0x76, 0x3b, 0xfb, 0xfd, 0x66, 0x95, 0x7a, 0x4e, 0x9b, 0x78, 0x4d,
0x54, 0x90, 0x39, 0x03, 0xd6, 0x56, 0xb7, 0xd7, 0xde, 0xd8, 0xed, 0x6c, 0x35, 0xeb, 0xec, 0x0e,
0xdc, 0xec, 0x77, 0xf6, 0x0e, 0x0f, 0xcc, 0xb6, 0xf9, 0x99, 0xca, 0x29, 0xb0, 0xb6, 0xdb, 0xdd,
0xdd, 0x23, 0xb3, 0xd3, 0x6c, 0xb0, 0x37, 0xe1, 0x8e, 0xd9, 0xf9, 0xf8, 0xa8, 0x6b, 0x76, 0xb6,
0xac, 0xfd, 0x83, 0xad, 0x8e, 0xb5, 0xdd, 0x69, 0xf7, 0x8f, 0xcc, 0x8e, 0xb5, 0xd7, 0xed, 0xf5,
0xba, 0xfb, 0xcf, 0x9a, 0x4d, 0xf6, 0x36, 0xdc, 0x8b, 0x50, 0xa2, 0x06, 0x66, 0xb0, 0x16, 0xc5,
0xfc, 0xd4, 0x96, 0xee, 0x77, 0x7e, 0xad, 0x6f, 0x1d, 0x76, 0x3a, 0x66, 0x93, 0xb1, 0x75, 0x58,
0x8d, 0xbb, 0xa7, 0x0e, 0x64, 0xdf, 0x4b, 0xa2, 0xec, 0xb0, 0x63, 0xee, 0xb5, 0xf7, 0xc5, 0x06,
0x27, 0xca, 0x96, 0xc5, 0xb0, 0xe3, 0xb2, 0xd9, 0x61, 0xaf, 0x30, 0x06, 0x75, 0x6d, 0x57, 0xb6,
0xdb, 0x66, 0x73, 0x95, 0x35, 0xa0, 0xb2, 0x77, 0x78, 0x68, 0xf5, 0xbb, 0x7b, 0x9d, 0x83, 0xa3,
0x7e, 0x73, 0x8d, 0xad, 0x40, 0xb3, 0xbb, 0xdf, 0xef, 0x98, 0x62, 0xaf, 0x55, 0xd5, 0xff, 0x5d,
0x64, 0xcb, 0xd0, 0x50, 0x23, 0x55, 0xd0, 0xbf, 0x2a, 0xb2, 0x35, 0x60, 0x47, 0xfb, 0x66, 0xa7,
0xbd, 0x25, 0x16, 0x2e, 0x2a, 0xf8, 0x3f, 0x45, 0xe9, 0x21, 0xf9, 0x59, 0x2e, 0xba, 0xac, 0xe3,
0x90, 0x83, 0xe4, 0x43, 0xa5, 0x55, 0xed, 0x81, 0xd1, 0x57, 0x3d, 0x21, 0xae, 0xa9, 0x56, 0xb9,
0x39, 0xd5, 0x6a, 0x4e, 0x77, 0xaf, 0xe9, 0xb2, 0xdf, 0x5b, 0x50, 0x1b, 0xd3, 0xa3, 0xa5, 0xf2,
0x71, 0x42, 0x90, 0xf1, 0x37, 0x04, 0xa4, 0x97, 0x09, 0xe7, 0xde, 0xd0, 0x2e, 0xcc, 0xbf, 0xa1,
0x9d, 0x26, 0xdf, 0x2f, 0xa4, 0xc9, 0xf7, 0x0f, 0x61, 0x91, 0x58, 0x93, 0xe3, 0x3a, 0x63, 0xa5,
0x35, 0x93, 0x14, 0xd8, 0x40, 0x16, 0x45, 0x70, 0xa5, 0x4e, 0x28, 0x95, 0x43, 0xb2, 0x90, 0xa2,
0xd4, 0x36, 0x12, 0x9a, 0x06, 0x71, 0x8e, 0x48, 0xd3, 0x88, 0x7a, 0xb0, 0x2f, 0xe3, 0x1e, 0x2a,
0x5a, 0x0f, 0x04, 0xc7, 0x1e, 0x1e, 0xc2, 0x22, 0xbf, 0x0c, 0x7d, 0xdb, 0xf2, 0x26, 0xf6, 0xe7,
0x53, 0x74, 0xe1, 0xda, 0xa8, 0xc3, 0x57, 0xcd, 0x06, 0x16, 0x1c, 0x20, 0x7c, 0xcb, 0x0e, 0xed,
0x87, 0x5f, 0x42, 0x45, 0x7b, 0xd0, 0x96, 0xad, 0xc1, 0xd2, 0xa7, 0xdd, 0xfe, 0x7e, 0xa7, 0xd7,
0xb3, 0x0e, 0x8f, 0x36, 0x9e, 0x77, 0x3e, 0xb3, 0x76, 0xda, 0xbd, 0x9d, 0xe6, 0x0d, 0x71, 0x68,
0xf7, 0x3b, 0xbd, 0x7e, 0x67, 0x2b, 0x01, 0xcf, 0xb0, 0x37, 0x60, 0xfd, 0x68, 0xff, 0xa8, 0xd7,
0xd9, 0xb2, 0xd2, 0xea, 0x65, 0x05, 0x95, 0xca, 0xf2, 0x94, 0xea, 0xb9, 0x87, 0x3f, 0x84, 0x7a,
0xf2, 0x95, 0x45, 0x06, 0xb0, 0xb0, 0xdb, 0x79, 0xd6, 0xde, 0xfc, 0x8c, 0x9e, 0x69, 0xeb, 0xf5,
0xdb, 0xfd, 0xee, 0xa6, 0x25, 0x9f, 0x65, 0x13, 0x1c, 0x21, 0xc3, 0x2a, 0x50, 0x6c, 0xef, 0x6f,
0xee, 0x1c, 0x98, 0xbd, 0x66, 0xf6, 0xe1, 0x47, 0xd0, 0x9c, 0xf5, 0x47, 0x25, 0x1c, 0x78, 0x2f,
0xf3, 0xf4, 0x3d, 0xfc, 0x77, 0x39, 0x80, 0x38, 0x61, 0x40, 0xb0, 0x9a, 0xad, 0x76, 0xbf, 0xbd,
0x7b, 0x20, 0xa6, 0x61, 0x1e, 0xf4, 0x05, 0x07, 0x31, 0x3b, 0x1f, 0x37, 0x6f, 0xa4, 0x96, 0x1c,
0x1c, 0xf6, 0x9b, 0x19, 0xb1, 0x62, 0xdd, 0xfd, 0x6e, 0xbf, 0xdb, 0xde, 0xb5, 0xcc, 0x83, 0xa3,
0xee, 0xfe, 0x33, 0x7a, 0xb0, 0x0a, 0xb9, 0xec, 0xd1, 0xe1, 0xb6, 0x79, 0xb0, 0xdf, 0xb7, 0x7a,
0x3b, 0x47, 0xfd, 0x2d, 0x7c, 0xee, 0x6a, 0xd3, 0xec, 0x1e, 0x52, 0x9b, 0xf9, 0x97, 0x21, 0x88,
0xa6, 0x0b, 0x62, 0xcd, 0x9f, 0x1d, 0xf4, 0x7a, 0xdd, 0x43, 0xeb, 0xe3, 0xa3, 0x8e, 0xd9, 0xed,
0xf4, 0xb0, 0xe2, 0x42, 0x0a, 0x5c, 0xe0, 0x17, 0x05, 0x6f, 0xee, 0xef, 0x7e, 0x22, 0x99, 0xa7,
0x40, 0x2d, 0x25, 0x41, 0x02, 0xab, 0x2c, 0x78, 0x8a, 0xe0, 0x3e, 0x29, 0x2d, 0xc3, 0x35, 0x65,
0xa2, 0x5e, 0x45, 0xf0, 0xd5, 0xb9, 0xcd, 0xc0, 0x6a, 0xd5, 0xf4, 0x22, 0x51, 0x0b, 0x59, 0x6e,
0x74, 0x41, 0x6d, 0x6d, 0x99, 0x58, 0xa1, 0x3e, 0x07, 0x15, 0xb8, 0x0d, 0xb1, 0x51, 0x82, 0x3d,
0x09, 0x94, 0xa6, 0xfa, 0x10, 0x25, 0x8b, 0x4f, 0x7f, 0x3b, 0x07, 0x75, 0x4a, 0xde, 0xa2, 0xdf,
0x13, 0xe2, 0x3e, 0xdb, 0x83, 0xa2, 0xfc, 0x61, 0x2a, 0xb6, 0x12, 0x3d, 0x5b, 0xa4, 0xff, 0x14,
0xd6, 0xfa, 0xea, 0x2c, 0x58, 0x8a, 0x63, 0x4b, 0x7f, 0xfb, 0x4f, 0xfe, 0xf2, 0x9f, 0x64, 0x6b,
0xac, 0xf2, 0xf8, 0xfc, 0xbd, 0xc7, 0xa7, 0xdc, 0x0d, 0x44, 0x1b, 0x7f, 0x03, 0x20, 0xfe, 0xb9,
0x25, 0xd6, 0x8a, 0x9c, 0x50, 0x33, 0xbf, 0x45, 0xb5, 0x7e, 0x33, 0xa5, 0x44, 0xb6, 0x7b, 0x13,
0xdb, 0x5d, 0x32, 0xea, 0xa2, 0x5d, 0xc7, 0x75, 0x42, 0xfa, 0xe9, 0xa5, 0x0f, 0x33, 0x0f, 0xd9,
0x10, 0xaa, 0xfa, 0x0f, 0x21, 0x31, 0x25, 0x29, 0xa5, 0xfc, 0x94, 0xd3, 0xfa, 0xad, 0xd4, 0x32,
0x25, 0x83, 0x62, 0x1f, 0x2b, 0x46, 0x53, 0xf4, 0x31, 0x45, 0x8c, 0xb8, 0x97, 0x11, 0x49, 0xe5,
0xf1, 0xef, 0x1d, 0xb1, 0xdb, 0x9a, 0x5c, 0x35, 0xf7, 0x6b, 0x4b, 0xeb, 0x77, 0xae, 0x29, 0x95,
0x7d, 0xdd, 0xc1, 0xbe, 0xd6, 0x0c, 0x26, 0xfa, 0x1a, 0x20, 0x8e, 0xfa, 0xb5, 0xa5, 0x0f, 0x33,
0x0f, 0x9f, 0xfe, 0xc5, 0x03, 0x28, 0x47, 0xc1, 0x9c, 0xec, 0x37, 0xa1, 0x96, 0xc8, 0xae, 0x63,
0x6a, 0x1a, 0x69, 0xc9, 0x78, 0xeb, 0xb7, 0xd3, 0x0b, 0x65, 0xc7, 0x6f, 0x60, 0xc7, 0x2d, 0xb6,
0x2a, 0x3a, 0x96, 0xd9, 0x6b, 0x8f, 0x31, 0x07, 0x95, 0x1e, 0x81, 0x7a, 0xa1, 0x69, 0x1f, 0xd4,
0xd9, 0xed, 0x59, 0x8d, 0x20, 0xd1, 0xdb, 0x9d, 0x6b, 0x4a, 0x65, 0x77, 0xb7, 0xb1, 0xbb, 0x55,
0xb6, 0xac, 0x77, 0xa7, 0x42, 0x2f, 0x19, 0xc7, 0x87, 0xd7, 0xf4, 0x9f, 0x03, 0x62, 0x77, 0xe2,
0x67, 0xb2, 0x52, 0x7e, 0x26, 0x28, 0x22, 0x91, 0xf9, 0xdf, 0x0a, 0x32, 0x5a, 0xd8, 0x15, 0x63,
0xb8, 0x7d, 0xfa, 0xaf, 0x01, 0xb1, 0x63, 0xa8, 0x68, 0x2f, 0xe8, 0xb3, 0x9b, 0xd7, 0xbe, 0xf6,
0xbf, 0xbe, 0x9e, 0x56, 0x94, 0x36, 0x15, 0xbd, 0xfd, 0xc7, 0x27, 0x9c, 0xb3, 0x5f, 0x87, 0x72,
0xf4, 0x2e, 0x3b, 0x5b, 0xd3, 0xde, 0xc9, 0xd7, 0xdf, 0x91, 0x5f, 0x6f, 0xcd, 0x17, 0xa4, 0x11,
0x9f, 0xde, 0xba, 0x20, 0xbe, 0x4f, 0xa1, 0xa2, 0xbd, 0xbd, 0x1e, 0x4d, 0x60, 0xfe, 0x7d, 0xf7,
0x68, 0x02, 0x29, 0x4f, 0xb5, 0x1b, 0x8b, 0xd8, 0x45, 0x85, 0x95, 0x91, 0xbe, 0xc3, 0x4b, 0x2f,
0x60, 0xbb, 0xb0, 0x22, 0x35, 0xad, 0x63, 0xfe, 0x55, 0xb6, 0x21, 0xe5, 0x17, 0x98, 0x9e, 0x64,
0xd8, 0x47, 0x50, 0x52, 0x4f, 0xec, 0xb3, 0xd5, 0xf4, 0x9f, 0x0a, 0x58, 0x5f, 0x9b, 0x83, 0x4b,
0xb5, 0xe8, 0x33, 0x80, 0xf8, 0xa1, 0xf7, 0x88, 0x49, 0xcc, 0x3d, 0x1c, 0x1f, 0x51, 0xc0, 0xfc,
0xab, 0xf0, 0xc6, 0x2a, 0x4e, 0xb0, 0xc9, 0x90, 0x49, 0xb8, 0xfc, 0x42, 0xbd, 0x40, 0xf9, 0x13,
0xa8, 0x68, 0x6f, 0xbd, 0x47, 0xcb, 0x37, 0xff, 0x4e, 0x7c, 0xb4, 0x7c, 0x29, 0x4f, 0xc3, 0x1b,
0xeb, 0xd8, 0xfa, 0xb2, 0xd1, 0x10, 0xad, 0x0b, 0x51, 0x4b, 0x8a, 0x3c, 0x62, 0x83, 0xce, 0xa0,
0x96, 0x78, 0xd0, 0x3d, 0x3a, 0xa1, 0x69, 0xcf, 0xc5, 0x47, 0x27, 0x34, 0xf5, 0x0d, 0x78, 0x45,
0x67, 0xc6, 0xa2, 0xe8, 0xe7, 0x1c, 0x51, 0xb4, 0x9e, 0x7e, 0x0c, 0x15, 0xed, 0x71, 0xf6, 0x68,
0x2e, 0xf3, 0xef, 0xc0, 0x47, 0x73, 0x49, 0x7b, 0xcb, 0x7d, 0x19, 0xfb, 0xa8, 0x1b, 0x48, 0x0a,
0xf8, 0xbe, 0x9f, 0x68, 0xfb, 0x37, 0xa1, 0x9e, 0x7c, 0xaf, 0x3d, 0x3a, 0xfb, 0xa9, 0x0f, 0xbf,
0x47, 0x67, 0xff, 0x9a, 0x47, 0xde, 0x25, 0x49, 0x3f, 0x5c, 0x8a, 0x3a, 0x79, 0xfc, 0x85, 0x4c,
0x4b, 0xf9, 0x92, 0x7d, 0x2c, 0x18, 0x9c, 0x7c, 0x5e, 0x92, 0xad, 0x69, 0x54, 0xab, 0x3f, 0x42,
0x19, 0x9d, 0x97, 0xb9, 0x97, 0x28, 0x93, 0xc4, 0x8c, 0x8d, 0xb3, 0x67, 0xb0, 0x14, 0x11, 0x73,
0xf4, 0x5e, 0x64, 0x10, 0xcd, 0x21, 0xf5, 0x55, 0xca, 0xf5, 0xe6, 0x6c, 0xe9, 0x93, 0x0c, 0x5d,
0x7f, 0xf8, 0x4a, 0x9f, 0x76, 0xfd, 0xe9, 0x4f, 0x46, 0x6a, 0xd7, 0x5f, 0xe2, 0x31, 0xbf, 0xd9,
0xeb, 0x2f, 0x74, 0x44, 0x1b, 0x2e, 0x34, 0x66, 0x5f, 0x6f, 0xbc, 0x73, 0xdd, 0xdb, 0x05, 0xd4,
0xfc, 0x1b, 0x2f, 0x7f, 0xda, 0x20, 0xc9, 0x8a, 0x14, 0x37, 0x7d, 0x2c, 0x83, 0x4f, 0xd8, 0x6f,
0x40, 0x55, 0x7f, 0x2c, 0x9a, 0xe9, 0x3c, 0x61, 0xb6, 0xa7, 0x5b, 0xa9, 0x65, 0x49, 0x2a, 0x61,
0x55, 0xbd, 0x1b, 0xf6, 0x09, 0xac, 0x46, 0xcb, 0xac, 0xe7, 0xad, 0x07, 0xec, 0x6e, 0x4a, 0x36,
0x7b, 0x62, 0xb1, 0x6f, 0x5e, 0x9b, 0xee, 0xfe, 0x24, 0x23, 0xa8, 0x2f, 0xf9, 0x6a, 0x6d, 0x7c,
0xf3, 0xa4, 0x3d, 0xd6, 0x1b, 0xdf, 0x3c, 0xa9, 0x4f, 0xdd, 0x2a, 0xea, 0x63, 0x4b, 0x89, 0x35,
0xa2, 0xb0, 0x5c, 0xf6, 0x63, 0x68, 0x68, 0x49, 0xf9, 0xbd, 0x2b, 0x77, 0x10, 0x9d, 0xa4, 0xf9,
0x27, 0xe1, 0xd6, 0xd3, 0x6c, 0x93, 0xc6, 0x1a, 0xb6, 0xbf, 0x68, 0x24, 0x16, 0x47, 0x9c, 0xa2,
0x4d, 0xa8, 0xe8, 0x09, 0xff, 0x2f, 0x69, 0x77, 0x4d, 0x2b, 0xd2, 0x5f, 0x1f, 0x7b, 0x92, 0x61,
0xbb, 0xd0, 0x9c, 0x7d, 0x2c, 0x29, 0xe2, 0x29, 0x69, 0x0f, 0x3c, 0xad, 0xcf, 0x14, 0x26, 0x9e,
0x58, 0x62, 0x87, 0x94, 0xd8, 0x11, 0xfd, 0x5c, 0x91, 0xe7, 0xcf, 0xde, 0xea, 0xc9, 0x9f, 0x31,
0x8a, 0x5a, 0x4b, 0xfb, 0x01, 0xab, 0x07, 0x99, 0x27, 0x19, 0xf6, 0xbb, 0x19, 0xa8, 0x26, 0x1e,
0x28, 0x49, 0x84, 0xce, 0xcf, 0xcc, 0xb3, 0xa5, 0x97, 0xe9, 0x13, 0x35, 0x4c, 0x5c, 0xc4, 0xdd,
0x87, 0x3f, 0x4a, 0x6c, 0xd2, 0x17, 0x09, 0xd7, 0xde, 0xa3, 0xd9, 0xdf, 0x33, 0xfa, 0x72, 0x16,
0x41, 0x7f, 0xe9, 0xef, 0xcb, 0x27, 0x19, 0xf6, 0x1f, 0x32, 0x50, 0x4f, 0xfa, 0xec, 0xa3, 0xe9,
0xa6, 0x46, 0x07, 0x44, 0xa4, 0x74, 0x8d, 0xa3, 0xff, 0xc7, 0x38, 0xca, 0xfe, 0x43, 0x33, 0x31,
0x4a, 0xf9, 0xde, 0xf2, 0xcf, 0x37, 0x5a, 0xf6, 0x21, 0xfd, 0x7c, 0xa0, 0x0a, 0x65, 0x62, 0xf3,
0x3f, 0x37, 0x17, 0x91, 0x9f, 0xfe, 0xe3, 0x6c, 0xb8, 0x09, 0x3f, 0xa1, 0xdf, 0xed, 0x51, 0x91,
0x31, 0x82, 0x8a, 0x5f, 0xb7, 0xbe, 0xf1, 0x36, 0xce, 0xe9, 0x0d, 0xe3, 0x66, 0x62, 0x4e, 0xb3,
0x82, 0x47, 0x9b, 0x46, 0x27, 0x7f, 0x5b, 0x2d, 0xbe, 0x39, 0xe7, 0x7e, 0x6f, 0xed, 0xfa, 0x41,
0x8e, 0x69, 0x90, 0x12, 0x3d, 0x71, 0xd4, 0x5e, 0xb3, 0x19, 0xe3, 0x21, 0x8e, 0xf5, 0x6d, 0xe3,
0xee, 0xb5, 0x63, 0x7d, 0x8c, 0xfe, 0x77, 0x31, 0xe2, 0x43, 0x80, 0x38, 0xd4, 0x90, 0xcd, 0x04,
0xbc, 0x45, 0x0c, 0x68, 0x3e, 0x1a, 0x31, 0x79, 0x9e, 0x55, 0x5c, 0x9c, 0x68, 0xf1, 0xd7, 0x89,
0x9d, 0x46, 0xa1, 0x78, 0xba, 0xf4, 0x95, 0x8c, 0x0a, 0x4c, 0x48, 0x5f, 0xb3, 0xed, 0x27, 0x98,
0x69, 0x14, 0x77, 0x77, 0x04, 0xb5, 0x5d, 0xcf, 0x7b, 0x31, 0x9d, 0x44, 0xe1, 0xed, 0xc9, 0xa0,
0x98, 0x1d, 0x3b, 0x38, 0x5b, 0x9f, 0x99, 0x85, 0x71, 0x0f, 0x9b, 0x5a, 0x67, 0x2d, 0xad, 0xa9,
0xc7, 0x5f, 0xc4, 0xf1, 0x8d, 0x5f, 0x32, 0x1b, 0x16, 0x23, 0x1e, 0x1d, 0xc7, 0x10, 0x26, 0x9b,
0x49, 0x70, 0xe6, 0xd9, 0x2e, 0x12, 0x6a, 0x82, 0x1a, 0xed, 0xe3, 0x40, 0xb5, 0xf9, 0x24, 0xc3,
0x0e, 0xa1, 0xba, 0xc5, 0x07, 0x98, 0xa8, 0x8f, 0xa1, 0x25, 0x4b, 0x89, 0x30, 0x05, 0x8a, 0x49,
0x59, 0xaf, 0x25, 0x80, 0xc9, 0x7b, 0x6b, 0x62, 0x5f, 0xf9, 0xfc, 0xf3, 0xc7, 0x5f, 0xc8, 0xa0,
0x95, 0x2f, 0xd5, 0xbd, 0xa5, 0x82, 0x7a, 0x12, 0xf7, 0xd6, 0x4c, 0x14, 0x50, 0xe2, 0xde, 0x9a,
0x8b, 0x02, 0x4a, 0x2c, 0xb5, 0x0a, 0x2a, 0x62, 0x23, 0x58, 0x9c, 0x0b, 0x1c, 0x8a, 0xae, 0xac,
0xeb, 0xc2, 0x8d, 0xd6, 0xef, 0x5d, 0x8f, 0x90, 0xec, 0xed, 0x61, 0xb2, 0xb7, 0x1e, 0xd4, 0xe8,
0xf1, 0xc1, 0x63, 0x4e, 0x29, 0x7b, 0x33, 0xef, 0xdd, 0xe8, 0xf9, 0x80, 0xb3, 0x17, 0x0c, 0x96,
0x25, 0x25, 0x1c, 0xcc, 0x95, 0x63, 0xbf, 0x0e, 0x95, 0x67, 0x3c, 0x54, 0x39, 0x7a, 0x91, 0x8c,
0x3d, 0x93, 0xb4, 0xb7, 0x9e, 0x92, 0xe2, 0x97, 0xa4, 0x19, 0x6c, 0xed, 0x31, 0x1f, 0x9e, 0x72,
0x62, 0x4e, 0x96, 0x33, 0xfc, 0x92, 0xfd, 0x1a, 0x36, 0x1e, 0xa5, 0x46, 0xaf, 0x6a, 0x49, 0x58,
0x7a, 0xe3, 0x8d, 0x19, 0x78, 0x5a, 0xcb, 0xae, 0x37, 0xe4, 0x9a, 0xac, 0xe7, 0x42, 0x45, 0x7b,
0x42, 0x21, 0x3a, 0x40, 0xf3, 0x4f, 0x66, 0x44, 0x07, 0x28, 0xe5, 0xc5, 0x05, 0xe3, 0x01, 0xf6,
0x63, 0xb0, 0x7b, 0x71, 0x3f, 0xf4, 0xca, 0x42, 0xdc, 0xd3, 0xe3, 0x2f, 0xec, 0x71, 0xf8, 0x25,
0xfb, 0x14, 0x9f, 0xf8, 0xd6, 0x73, 0x10, 0x63, 0xa5, 0x61, 0x36, 0x5d, 0x31, 0x5a, 0x2c, 0xad,
0x28, 0xa9, 0x48, 0x50, 0x57, 0x28, 0xc9, 0xbd, 0x0f, 0xd0, 0x0b, 0xbd, 0xc9, 0x96, 0xcd, 0xc7,
0x9e, 0x1b, 0xf3, 0xda, 0x38, 0x2b, 0x2e, 0xe6, 0x5f, 0x5a, 0x6a, 0x1c, 0xfb, 0x54, 0xd3, 0xb2,
0x12, 0x69, 0x9c, 0x8a, 0xb8, 0xae, 0x4d, 0x9c, 0x8b, 0x16, 0x24, 0x25, 0x79, 0xee, 0x49, 0x86,
0xb5, 0x01, 0xe2, 0xc8, 0xb1, 0x48, 0x67, 0x9a, 0x0b, 0x4a, 0x8b, 0xd8, 0x5e, 0x4a, 0x98, 0xd9,
0x21, 0x94, 0xe3, 0x90, 0x9b, 0xb5, 0xf8, 0x45, 0x98, 0x44, 0x80, 0x4e, 0x74, 0x83, 0xcf, 0x85,
0xbb, 0x18, 0x4d, 0x5c, 0x2a, 0x60, 0x25, 0xb1, 0x54, 0x27, 0x9c, 0x07, 0xcc, 0x81, 0x25, 0x1a,
0x60, 0x24, 0x2e, 0x61, 0x36, 0x57, 0xf4, 0x92, 0xfb, 0x7c, 0xe4, 0x49, 0x74, 0x9a, 0x53, 0xe3,
0x27, 0x12, 0xa6, 0x1f, 0x41, 0xad, 0x94, 0x49, 0x26, 0x58, 0xf3, 0x18, 0x16, 0xe7, 0x5c, 0xf4,
0xd1, 0x91, 0xbe, 0x2e, 0xe6, 0x22, 0x3a, 0xd2, 0xd7, 0x7a, 0xf7, 0x8d, 0x15, 0xec, 0xb2, 0x61,
0x00, 0xaa, 0x7a, 0x17, 0x4e, 0x38, 0x38, 0x13, 0xdd, 0xfd, 0xdb, 0x0c, 0x2c, 0xa5, 0x38, 0xe1,
0xd9, 0x9b, 0xca, 0x6a, 0x70, 0xad, 0x83, 0x7e, 0x3d, 0xd5, 0x59, 0x6b, 0xf4, 0xb0, 0x9f, 0x3d,
0xf6, 0x3c, 0x71, 0xb1, 0x91, 0xaf, 0x54, 0x9e, 0xcc, 0x97, 0x0a, 0x15, 0xa9, 0x12, 0xc5, 0xe7,
0xb0, 0x46, 0x03, 0x69, 0x8f, 0x46, 0x33, 0x8e, 0xe4, 0x37, 0xe6, 0x7e, 0x5e, 0x3c, 0xe1, 0x1c,
0x5f, 0xbf, 0xfe, 0xe7, 0xc7, 0xaf, 0x11, 0xa7, 0x69, 0xa8, 0x6c, 0x0a, 0xcd, 0x59, 0x07, 0x2d,
0xbb, 0xbe, 0xad, 0xf5, 0xbb, 0x09, 0xfd, 0x37, 0xc5, 0xa9, 0xfb, 0x0d, 0xec, 0xec, 0xae, 0xb1,
0x9e, 0xb6, 0x2e, 0xa4, 0x12, 0x8b, 0xfd, 0xf8, 0x5b, 0x91, 0x37, 0x79, 0x66, 0x9e, 0xaa, 0x83,
0xeb, 0x7c, 0xdf, 0x91, 0x06, 0x9e, 0xee, 0x8c, 0x7e, 0x07, 0xbb, 0xbf, 0x67, 0xdc, 0x4a, 0xeb,
0xde, 0xa7, 0x2a, 0xa4, 0x8b, 0xaf, 0xcd, 0x9e, 0x6b, 0x35, 0x82, 0x7b, 0x69, 0xfb, 0x7d, 0xad,
0x2e, 0x34, 0xb3, 0xd6, 0x37, 0x50, 0xb6, 0xab, 0xea, 0xde, 0xe3, 0xe8, 0xf8, 0xa4, 0xb8, 0xa9,
0xa3, 0xe3, 0x93, 0xe6, 0x6e, 0x4e, 0xca, 0x35, 0xca, 0xd1, 0xfc, 0x61, 0xe6, 0xe1, 0xc6, 0xfd,
0x1f, 0x7f, 0xe3, 0xd4, 0x09, 0xcf, 0xa6, 0xc7, 0x8f, 0x06, 0xde, 0xf8, 0xf1, 0x48, 0x59, 0x1b,
0x65, 0xca, 0xf3, 0xe3, 0x91, 0x3b, 0x7c, 0x8c, 0xcd, 0x1e, 0x2f, 0x4c, 0x7c, 0x2f, 0xf4, 0xbe,
0xf3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xac, 0x73, 0xd7, 0x79, 0x41, 0x81, 0x00, 0x00,
0x10, 0xb5, 0x86, 0x25, 0xdf, 0x0c, 0x8c, 0xed, 0xcb, 0x18, 0x4b, 0x3e, 0x5c, 0xa1, 0x25, 0xca,
0x47, 0x0f, 0x57, 0x48, 0x6d, 0x99, 0xe5, 0xe4, 0x85, 0x79, 0x4e, 0xfe, 0x6d, 0x58, 0x25, 0x4e,
0x2e, 0x79, 0x84, 0x35, 0x43, 0x52, 0xcb, 0x58, 0x2a, 0x27, 0xa9, 0xc9, 0x5f, 0x4d, 0x31, 0x03,
0x75, 0x3e, 0x02, 0xe7, 0xc7, 0x74, 0xa2, 0x32, 0xa6, 0x98, 0x99, 0x6c, 0xbc, 0xe7, 0xfc, 0x98,
0x0b, 0x4c, 0x74, 0x8c, 0xea, 0x98, 0xf2, 0x89, 0xec, 0xd8, 0x71, 0x67, 0x31, 0xed, 0xcb, 0x24,
0x66, 0x59, 0x62, 0xda, 0x97, 0x3a, 0xe6, 0x53, 0x58, 0x1b, 0xf3, 0xa1, 0x63, 0x27, 0x9b, 0xb5,
0x62, 0x09, 0x62, 0x99, 0x8a, 0xb5, 0x3a, 0x3d, 0xd2, 0x20, 0xc5, 0x6a, 0xfc, 0xd8, 0x1b, 0x1f,
0x3b, 0x74, 0x79, 0x92, 0xab, 0x36, 0x6f, 0xd6, 0xdd, 0xe9, 0xf8, 0x87, 0x08, 0x16, 0x55, 0x02,
0xa3, 0x06, 0x95, 0x5e, 0xe8, 0x4d, 0xd4, 0x36, 0xd7, 0xa1, 0x4a, 0x9f, 0x32, 0xdc, 0xe4, 0x16,
0xdc, 0x44, 0xda, 0xec, 0x7b, 0x13, 0x6f, 0xe4, 0x9d, 0x5e, 0x25, 0x0c, 0x4a, 0xff, 0x23, 0x03,
0x4b, 0x89, 0x52, 0x79, 0xce, 0xbf, 0x4d, 0x07, 0x2b, 0x8a, 0x19, 0x20, 0x72, 0x5e, 0xd4, 0x2e,
0x1f, 0x42, 0xa4, 0x53, 0xa5, 0xe2, 0x08, 0xda, 0x71, 0xac, 0xab, 0xaa, 0x48, 0xb4, 0xdd, 0x9a,
0xa7, 0x6d, 0x59, 0x5f, 0x45, 0xc1, 0xaa, 0x26, 0xfe, 0xba, 0x7c, 0xc6, 0x3c, 0x94, 0x53, 0xce,
0x25, 0x1f, 0x6a, 0xea, 0xc6, 0x27, 0x35, 0x82, 0xd8, 0x22, 0x15, 0x18, 0xff, 0x36, 0x03, 0x10,
0x8f, 0x0e, 0x9f, 0x8a, 0x46, 0x17, 0x28, 0xa5, 0x91, 0xd1, 0x2e, 0xcb, 0xb7, 0xa0, 0x1a, 0xbd,
0x18, 0x8b, 0xaf, 0xe4, 0x8a, 0x82, 0x89, 0x7b, 0xf9, 0x1e, 0x34, 0x4e, 0x47, 0xde, 0x31, 0x8a,
0x4e, 0xf2, 0x02, 0xa5, 0xa0, 0x9b, 0x3a, 0x81, 0xd5, 0xb5, 0x18, 0x5f, 0xe0, 0xf9, 0xd4, 0x47,
0x65, 0xfa, 0x75, 0x6c, 0xfc, 0x76, 0x36, 0x7a, 0x3a, 0x13, 0xaf, 0xc4, 0xcb, 0xf5, 0x8c, 0x9f,
0xc7, 0x03, 0xfb, 0x32, 0xcf, 0xc3, 0x47, 0x50, 0xf7, 0x89, 0x3b, 0x2a, 0xd6, 0x99, 0x7f, 0x09,
0xeb, 0xac, 0xf9, 0x89, 0x2b, 0xf7, 0xeb, 0xd0, 0xb4, 0x87, 0xe7, 0xdc, 0x0f, 0x1d, 0x34, 0xd6,
0xa2, 0xa0, 0x26, 0x1f, 0xab, 0x68, 0x70, 0x94, 0x88, 0xee, 0x41, 0x43, 0x86, 0x40, 0x45, 0x98,
0x32, 0xa9, 0x42, 0x0c, 0x16, 0x88, 0xc6, 0x7f, 0x50, 0x6f, 0x75, 0x92, 0xbb, 0xfb, 0xf2, 0x55,
0xd1, 0x67, 0x98, 0x9d, 0xf7, 0xad, 0x48, 0x42, 0x92, 0x36, 0x60, 0xc9, 0x8f, 0x08, 0x28, 0x2d,
0xc0, 0xc9, 0x65, 0xcd, 0xbf, 0xce, 0xb2, 0x1a, 0x7f, 0x9c, 0x81, 0xe2, 0x8e, 0x37, 0x11, 0x7a,
0xb9, 0x90, 0xe7, 0xf0, 0x98, 0x44, 0xe1, 0x87, 0x0b, 0xe2, 0xb3, 0x3b, 0x7c, 0x79, 0xc8, 0x40,
0xaa, 0xbc, 0x51, 0x4b, 0xca, 0x1b, 0xdf, 0x83, 0x5b, 0xe8, 0x8d, 0xf0, 0xbd, 0x89, 0xe7, 0x8b,
0xa3, 0x6a, 0x8f, 0x48, 0xee, 0xf0, 0xdc, 0xf0, 0x4c, 0xf1, 0xce, 0x9b, 0x27, 0x9c, 0x1f, 0x6a,
0x18, 0x7b, 0x11, 0x02, 0xc6, 0xd2, 0x8c, 0xc2, 0x73, 0x8b, 0x54, 0x45, 0x29, 0x18, 0x11, 0x47,
0x6d, 0x88, 0x82, 0x0e, 0xc2, 0x51, 0x34, 0x32, 0xbe, 0x0b, 0xe5, 0xc8, 0xea, 0xc0, 0xde, 0x83,
0xf2, 0x99, 0x37, 0x91, 0xa6, 0x89, 0x4c, 0x22, 0xac, 0x42, 0xce, 0xda, 0x2c, 0x9d, 0xd1, 0x1f,
0x81, 0xf1, 0x67, 0x45, 0x28, 0x76, 0xdd, 0x73, 0xcf, 0x19, 0xe0, 0x6b, 0x9f, 0x31, 0x1f, 0x7b,
0x2a, 0x0e, 0x53, 0xfc, 0x8d, 0x1e, 0xfd, 0x38, 0x35, 0x42, 0x4e, 0x7a, 0xf4, 0xa3, 0xa4, 0x08,
0x2b, 0xb0, 0xe0, 0xeb, 0xb9, 0x0d, 0x0a, 0x3e, 0xbe, 0x3f, 0x8c, 0x94, 0xb6, 0x82, 0x16, 0xc7,
0x2a, 0xda, 0xa2, 0x98, 0x7b, 0x5c, 0x32, 0x8a, 0x8b, 0x29, 0x23, 0x04, 0x17, 0xec, 0x0d, 0x28,
0xca, 0x28, 0x06, 0x7a, 0x13, 0x4e, 0x0f, 0x06, 0x25, 0x08, 0xa9, 0xc1, 0xe7, 0xe4, 0x4d, 0x8a,
0x24, 0x2a, 0xa1, 0xa7, 0x4b, 0xe0, 0x96, 0xa0, 0xb5, 0x3b, 0x50, 0x21, 0x7c, 0x42, 0x29, 0xc9,
0xf7, 0x39, 0x08, 0x42, 0x84, 0x94, 0x14, 0x21, 0xe5, 0xd4, 0x14, 0x21, 0xf8, 0x9c, 0x2b, 0xe2,
0xb2, 0x34, 0x45, 0xa0, 0xc4, 0x10, 0x1a, 0x5c, 0xe5, 0xc7, 0x91, 0xca, 0x3d, 0x85, 0x89, 0x29,
0xe5, 0xfe, 0x6d, 0xa8, 0x9d, 0xd8, 0xa3, 0xd1, 0xb1, 0x3d, 0x78, 0x41, 0x3a, 0x69, 0x95, 0xcc,
0x70, 0x0a, 0x88, 0x4a, 0xe9, 0x1d, 0xa8, 0x68, 0xbb, 0x8c, 0x8f, 0x6f, 0xf2, 0x26, 0xc4, 0xfb,
0x3b, 0x6b, 0x6a, 0xaa, 0xbf, 0x86, 0xa9, 0x49, 0x7b, 0x84, 0xd4, 0x48, 0x3e, 0x42, 0xba, 0x85,
0xdc, 0x54, 0x3e, 0x54, 0x69, 0x52, 0x16, 0x02, 0x7b, 0x38, 0xc4, 0x87, 0x2a, 0x94, 0xf2, 0x0b,
0x17, 0x8f, 0xca, 0x17, 0x49, 0xa8, 0x25, 0x18, 0xa1, 0xdc, 0x26, 0x7b, 0xe9, 0xc4, 0x76, 0x86,
0xf8, 0xe8, 0x93, 0xd4, 0xd8, 0xa2, 0x3d, 0x0e, 0x0f, 0x6d, 0x67, 0xc8, 0xee, 0x42, 0x55, 0x15,
0xe3, 0xed, 0xb8, 0x44, 0xeb, 0x2f, 0x8b, 0xc5, 0x9d, 0x68, 0x40, 0x2d, 0xc2, 0x18, 0xc7, 0xb1,
0x5e, 0x15, 0x89, 0x82, 0x74, 0xf0, 0x3e, 0x3a, 0xff, 0x43, 0x8e, 0x11, 0x5d, 0xf5, 0x27, 0xb7,
0xe4, 0x5c, 0x25, 0x95, 0xaa, 0xff, 0xf1, 0xa5, 0x83, 0x49, 0x98, 0x42, 0x10, 0x23, 0x17, 0xcd,
0x6a, 0x42, 0x10, 0x93, 0xa8, 0xe8, 0xa2, 0x21, 0x04, 0xf6, 0x5d, 0x4d, 0x91, 0x6a, 0x21, 0xf2,
0x1b, 0x33, 0xed, 0x5f, 0xf7, 0xe6, 0xfd, 0x36, 0x80, 0x13, 0x88, 0x5b, 0x26, 0xe0, 0xee, 0x10,
0x83, 0xb3, 0x4a, 0x66, 0xd9, 0x09, 0x9e, 0x13, 0xe0, 0xab, 0xd5, 0xb0, 0xda, 0x50, 0xd5, 0xa7,
0xc9, 0x4a, 0x90, 0x3f, 0x38, 0xec, 0xec, 0x37, 0x6f, 0xb0, 0x0a, 0x14, 0x7b, 0x9d, 0x7e, 0x7f,
0xb7, 0xb3, 0xd5, 0xcc, 0xb0, 0x2a, 0x94, 0xa2, 0x10, 0x93, 0xac, 0xf8, 0x6a, 0x6f, 0x6e, 0x76,
0x0e, 0xfb, 0x9d, 0xad, 0x66, 0xee, 0x07, 0xf9, 0x52, 0xb6, 0x99, 0x33, 0xfe, 0x3c, 0x07, 0x15,
0x6d, 0x15, 0x5e, 0xce, 0x8c, 0x6f, 0x03, 0xa0, 0x4a, 0x13, 0xbf, 0x63, 0xca, 0x9b, 0x65, 0x01,
0xa1, 0xcd, 0xd7, 0x8d, 0xe5, 0x39, 0x4a, 0x6f, 0xa1, 0x8c, 0xe5, 0x6f, 0x43, 0x8d, 0x32, 0x45,
0xe8, 0xee, 0xba, 0x82, 0x59, 0x25, 0xa0, 0x64, 0xd5, 0x18, 0xa3, 0x86, 0x48, 0x18, 0xbd, 0x20,
0xe3, 0xc6, 0x09, 0x84, 0xf1, 0x0b, 0x18, 0x7c, 0x12, 0x78, 0xa3, 0x73, 0x4e, 0x18, 0x24, 0x11,
0x56, 0x24, 0xac, 0x2f, 0x83, 0xe4, 0x24, 0x3f, 0xd4, 0x82, 0xa4, 0x0a, 0x66, 0x95, 0x80, 0xb2,
0xa3, 0x6f, 0x2a, 0x02, 0x2a, 0x21, 0x01, 0xad, 0xcd, 0x53, 0x43, 0x82, 0x78, 0x76, 0xe7, 0xec,
0x59, 0x65, 0x24, 0x8c, 0xaf, 0xcd, 0xd7, 0x7b, 0xb5, 0x5d, 0x8b, 0xbd, 0x07, 0x6c, 0x3c, 0x99,
0x58, 0x29, 0x96, 0xa6, 0xbc, 0xd9, 0x18, 0x4f, 0x26, 0x7d, 0xcd, 0x10, 0xf3, 0x15, 0x18, 0xc1,
0x3e, 0x07, 0xd6, 0x16, 0x07, 0x18, 0x87, 0x18, 0x99, 0x50, 0x63, 0xb6, 0x9c, 0xd1, 0xd9, 0x72,
0x0a, 0xf7, 0xcb, 0xa6, 0x72, 0xbf, 0x97, 0xf1, 0x09, 0x63, 0x1b, 0x2a, 0x87, 0x5a, 0x1e, 0x9a,
0xbb, 0xe2, 0x86, 0x50, 0x19, 0x68, 0xe8, 0xee, 0x20, 0xe3, 0x96, 0x2f, 0x13, 0xcf, 0x68, 0xa3,
0xc9, 0x6a, 0xa3, 0x31, 0xfe, 0x4d, 0x86, 0x62, 0xfc, 0xa3, 0xc1, 0xc7, 0xa9, 0x6f, 0x94, 0x1f,
0x28, 0x8e, 0x65, 0xac, 0x28, 0xff, 0x8f, 0x0c, 0x43, 0xc4, 0xa1, 0x59, 0xde, 0xc9, 0x49, 0xc0,
0x55, 0x54, 0x4e, 0x05, 0x61, 0x07, 0x08, 0x52, 0xc2, 0xb7, 0x90, 0xf0, 0x1d, 0x6a, 0x3f, 0x90,
0xd1, 0x39, 0x42, 0xf8, 0xde, 0xb3, 0x2f, 0x65, 0xaf, 0x81, 0x10, 0x41, 0xa4, 0xa1, 0x5a, 0xc5,
0x22, 0x45, 0xdf, 0xc6, 0xbf, 0x94, 0xe1, 0x96, 0xb3, 0xeb, 0xfb, 0x00, 0x4a, 0x51, 0xab, 0xc9,
0x1b, 0x56, 0x61, 0x46, 0xe5, 0xe2, 0x1e, 0x47, 0xad, 0x3c, 0x31, 0x62, 0x3a, 0x5c, 0xe8, 0x6c,
0xe8, 0x6a, 0xa3, 0xfe, 0x06, 0xb0, 0x13, 0xc7, 0x9f, 0x45, 0xa6, 0xc3, 0xd6, 0xc4, 0x12, 0x0d,
0xdb, 0x38, 0x82, 0x25, 0xc5, 0x25, 0x34, 0x8d, 0x20, 0xb9, 0x79, 0x99, 0x57, 0x30, 0xf9, 0xec,
0x1c, 0x93, 0x37, 0x7e, 0x9a, 0x87, 0xa2, 0xca, 0xe9, 0x94, 0x96, 0x87, 0xa8, 0x9c, 0xcc, 0x43,
0xd4, 0x4a, 0xe4, 0xac, 0xc0, 0xad, 0x97, 0xf7, 0xfd, 0xbd, 0xd9, 0x2b, 0x5b, 0x33, 0x9a, 0x27,
0xae, 0xed, 0x55, 0xc8, 0x4f, 0xec, 0xf0, 0x0c, 0x0d, 0x64, 0x44, 0x3c, 0xf8, 0xad, 0x8c, 0xe9,
0x85, 0xa4, 0x31, 0x3d, 0x2d, 0x67, 0x13, 0x89, 0xa4, 0x73, 0x39, 0x9b, 0x6e, 0x01, 0xc9, 0x17,
0xda, 0x7b, 0x98, 0x12, 0x02, 0xc4, 0x5d, 0x94, 0x14, 0x47, 0x4a, 0xb3, 0xe2, 0xc8, 0x6b, 0x8b,
0x0a, 0xdf, 0x86, 0x05, 0x8a, 0x77, 0x96, 0x31, 0x57, 0xea, 0x42, 0x91, 0x6b, 0xa8, 0xfe, 0xa7,
0x47, 0xb0, 0xa6, 0xc4, 0xd5, 0x13, 0xa0, 0x54, 0x12, 0x09, 0x50, 0x74, 0x23, 0x7f, 0x35, 0x69,
0xe4, 0xbf, 0x0f, 0xcd, 0x68, 0x41, 0xd1, 0x64, 0xe6, 0x06, 0x32, 0xa2, 0xa3, 0xae, 0xe0, 0x82,
0x4b, 0xee, 0x07, 0xf1, 0x85, 0x58, 0x4f, 0x5c, 0x88, 0x82, 0x87, 0xb5, 0xc3, 0x90, 0x8f, 0x27,
0xa1, 0xbc, 0x10, 0xf1, 0xcd, 0xb7, 0x3e, 0xc0, 0x64, 0x34, 0x62, 0x0d, 0xca, 0xdd, 0x7d, 0x6b,
0x7b, 0xb7, 0xfb, 0x6c, 0xa7, 0xdf, 0xcc, 0x88, 0xcf, 0xde, 0xd1, 0xe6, 0x66, 0xa7, 0xb3, 0x85,
0x37, 0x0e, 0xc0, 0xc2, 0x76, 0xbb, 0x2b, 0x6e, 0x9f, 0x9c, 0xf1, 0xbb, 0x59, 0xa8, 0x68, 0xcd,
0xb3, 0xa7, 0xd1, 0xaa, 0x50, 0x8e, 0x8c, 0xdb, 0xf3, 0x43, 0x78, 0xa8, 0x58, 0xb1, 0xb6, 0x2c,
0x51, 0x86, 0xaa, 0xec, 0xb5, 0x19, 0xaa, 0xd8, 0xbb, 0xd0, 0xb0, 0xa9, 0x85, 0x68, 0x15, 0xa4,
0x39, 0x58, 0x82, 0xe5, 0x22, 0xe0, 0x2b, 0xb0, 0xf8, 0x3e, 0x11, 0x78, 0x79, 0xf5, 0xf0, 0x2a,
0xba, 0x52, 0x70, 0xb1, 0x8a, 0x27, 0xb6, 0x33, 0x9a, 0xfa, 0x5c, 0xba, 0x6f, 0xa3, 0x9b, 0x99,
0xa0, 0xa6, 0x2a, 0x36, 0x3e, 0x00, 0x88, 0xc7, 0x9c, 0x5c, 0x9c, 0x1b, 0xc9, 0xc5, 0xc9, 0x68,
0x8b, 0x93, 0x35, 0xb6, 0x88, 0x8d, 0xc8, 0x85, 0x8e, 0x3c, 0xd5, 0xdf, 0x04, 0x65, 0x91, 0xb2,
0xf0, 0x1d, 0xe6, 0x64, 0xc4, 0x43, 0x15, 0xb7, 0xb9, 0x28, 0x4b, 0xba, 0x51, 0x81, 0x0a, 0xa3,
0x8e, 0x5b, 0x89, 0xb9, 0x91, 0x24, 0xc9, 0x59, 0x6e, 0x24, 0x51, 0xcd, 0xa8, 0xdc, 0x58, 0x87,
0xd6, 0x16, 0x17, 0xad, 0xb5, 0x47, 0xa3, 0x99, 0xe1, 0x18, 0xb7, 0xe0, 0x66, 0x4a, 0x99, 0x34,
0x42, 0x7c, 0x0c, 0x2b, 0x6d, 0x0a, 0xd1, 0xfc, 0xaa, 0x62, 0x31, 0x8c, 0x16, 0xac, 0xce, 0x36,
0x29, 0x3b, 0xdb, 0x86, 0xc5, 0x2d, 0x7e, 0x3c, 0x3d, 0xdd, 0xe5, 0xe7, 0x71, 0x47, 0x0c, 0xf2,
0xc1, 0x99, 0x77, 0x21, 0xd7, 0x07, 0xff, 0x16, 0x67, 0x78, 0x24, 0x70, 0xac, 0x60, 0xc2, 0x07,
0xca, 0x22, 0x8a, 0x90, 0xde, 0x84, 0x0f, 0x8c, 0xa7, 0xc0, 0xf4, 0x76, 0xe4, 0x7a, 0x09, 0x2d,
0x61, 0x7a, 0x6c, 0x05, 0x57, 0x41, 0xc8, 0xc7, 0x2a, 0x05, 0x0b, 0x04, 0xd3, 0xe3, 0x1e, 0x41,
0x8c, 0x7b, 0x50, 0x3d, 0xb4, 0xaf, 0x4c, 0xfe, 0xb9, 0x8c, 0x32, 0x58, 0x83, 0xe2, 0xc4, 0xbe,
0x12, 0x6c, 0x20, 0x72, 0x8e, 0x60, 0xb1, 0xf1, 0x07, 0x79, 0x58, 0x20, 0x4c, 0x76, 0x97, 0xb2,
0x24, 0x3a, 0x2e, 0x1e, 0x43, 0xc5, 0x28, 0x35, 0xd0, 0x1c, 0x2f, 0xcd, 0xce, 0xf3, 0x52, 0x69,
0x40, 0x53, 0xd9, 0x21, 0x94, 0x19, 0xdb, 0x9d, 0x8e, 0x55, 0x4a, 0x88, 0x64, 0x9c, 0x62, 0x3e,
0xce, 0x82, 0x49, 0x41, 0x5c, 0x49, 0x47, 0x63, 0xac, 0x8b, 0xd0, 0xe8, 0xd4, 0x15, 0x21, 0xd9,
0xa5, 0x0e, 0x4a, 0x55, 0x78, 0x8a, 0x2a, 0x7e, 0x25, 0xa9, 0xf0, 0xcc, 0x29, 0x36, 0xa5, 0x57,
0x2b, 0x36, 0x64, 0x59, 0x7b, 0x89, 0x62, 0x03, 0xaf, 0xa1, 0xd8, 0xbc, 0x86, 0x93, 0xef, 0x26,
0x94, 0xf0, 0xde, 0xd7, 0xb8, 0xa7, 0xb8, 0xef, 0x05, 0xf7, 0xfc, 0x8e, 0x26, 0xfa, 0xd3, 0x0b,
0x83, 0x5b, 0xf1, 0x31, 0x31, 0xf9, 0xe7, 0xbf, 0x1c, 0xe7, 0xc9, 0x67, 0x50, 0x94, 0x50, 0x41,
0xd0, 0xae, 0x3d, 0x56, 0x09, 0x76, 0xf0, 0x6f, 0xb1, 0x6c, 0x98, 0x15, 0xe4, 0xf3, 0xa9, 0xe3,
0xf3, 0xa1, 0x4a, 0xc1, 0xe0, 0xe0, 0x19, 0x15, 0x10, 0x31, 0x41, 0xa1, 0x86, 0xb8, 0xde, 0x85,
0x2b, 0x03, 0xb0, 0x8b, 0x4e, 0xf0, 0x5c, 0x7c, 0x1a, 0x0c, 0x9a, 0x98, 0x62, 0x6b, 0xe2, 0xf9,
0xea, 0x72, 0x32, 0x7e, 0x9a, 0x81, 0xa6, 0x3c, 0x5d, 0x51, 0x99, 0xae, 0x05, 0x14, 0xae, 0x73,
0x88, 0xbf, 0x3c, 0xa1, 0x82, 0x01, 0x35, 0x34, 0x7e, 0x44, 0x37, 0x15, 0x19, 0x6f, 0x2a, 0x02,
0xb8, 0x2d, 0x6f, 0xab, 0x37, 0xa1, 0xa2, 0x9e, 0x63, 0x8e, 0x9d, 0x91, 0x4a, 0x78, 0x4b, 0xef,
0x31, 0xf7, 0x9c, 0x91, 0xba, 0xe8, 0x7c, 0x5b, 0xc6, 0x53, 0x65, 0xf0, 0xa2, 0x33, 0xed, 0x90,
0x1b, 0xff, 0x25, 0x03, 0x8b, 0xda, 0x54, 0xe4, 0xb9, 0xfd, 0x10, 0xaa, 0x51, 0x6e, 0x3b, 0x1e,
0x49, 0x5e, 0x6b, 0x49, 0x46, 0x13, 0x57, 0xab, 0x0c, 0x22, 0x48, 0x20, 0x06, 0x33, 0xb4, 0xaf,
0x70, 0xbc, 0xc1, 0x74, 0xac, 0x94, 0x9b, 0xa1, 0x7d, 0xb5, 0xcd, 0x79, 0x6f, 0x3a, 0x16, 0xaa,
0xeb, 0x05, 0xe7, 0x2f, 0x22, 0x04, 0x92, 0xb9, 0x40, 0xc0, 0x24, 0x86, 0x01, 0xb5, 0xb1, 0xe7,
0x86, 0x67, 0x11, 0x8a, 0x94, 0x3a, 0x11, 0x48, 0x38, 0xc6, 0x9f, 0x66, 0x61, 0x89, 0x4c, 0x6c,
0xd2, 0xb4, 0x29, 0x59, 0x57, 0x0b, 0x16, 0xc8, 0xda, 0x48, 0xcc, 0x6b, 0xe7, 0x86, 0x29, 0xbf,
0xd9, 0xb7, 0x5f, 0xd3, 0x2c, 0xa8, 0x42, 0xb6, 0xae, 0x59, 0xfe, 0xdc, 0xfc, 0xf2, 0x5f, 0xbf,
0xbc, 0x69, 0x1e, 0xb7, 0x42, 0x9a, 0xc7, 0xed, 0x75, 0xfc, 0x5c, 0x73, 0x71, 0x4d, 0x45, 0x89,
0xa3, 0xc5, 0x35, 0x3d, 0x85, 0xb5, 0x04, 0x0e, 0x72, 0x6b, 0xe7, 0xc4, 0xe1, 0x2a, 0xbe, 0x7d,
0x59, 0xc3, 0xee, 0xa9, 0xb2, 0x8d, 0x22, 0x14, 0x82, 0x81, 0x37, 0xe1, 0xc6, 0x2a, 0x2c, 0x27,
0x57, 0x55, 0x5e, 0x13, 0xbf, 0x97, 0x81, 0x96, 0x7c, 0x1f, 0xe1, 0xb8, 0xa7, 0x3b, 0x4e, 0x10,
0x7a, 0x7e, 0x94, 0x03, 0xee, 0x36, 0x40, 0x10, 0xda, 0xbe, 0xd4, 0x36, 0x65, 0x44, 0x37, 0x42,
0x50, 0x93, 0xbc, 0x09, 0x25, 0xee, 0x0e, 0xa9, 0x90, 0xa8, 0xa1, 0xc8, 0xdd, 0xa1, 0xd2, 0x43,
0xe7, 0xe4, 0xef, 0x5a, 0x52, 0xbd, 0x90, 0x01, 0x96, 0x62, 0x75, 0xf8, 0x39, 0x5e, 0xbc, 0xf9,
0x28, 0xc0, 0x72, 0xcf, 0xbe, 0xc4, 0xd7, 0x86, 0x81, 0xf1, 0xcf, 0xb2, 0xd0, 0x88, 0xc7, 0x47,
0xd1, 0xd9, 0x2f, 0x8f, 0x33, 0xbf, 0x2b, 0xc9, 0xc1, 0x11, 0xf2, 0xbb, 0x66, 0x78, 0x2c, 0xd1,
0xe1, 0xec, 0xba, 0xcc, 0x80, 0x8a, 0xc2, 0xf0, 0xa6, 0xa1, 0x96, 0x8a, 0xa9, 0x4c, 0x28, 0x07,
0xd3, 0x50, 0x28, 0x5c, 0x42, 0xf3, 0x74, 0x5c, 0xa9, 0xf2, 0x14, 0xec, 0x71, 0xd8, 0xc5, 0x0c,
0xcf, 0x02, 0x2c, 0xaa, 0xd1, 0x46, 0x0a, 0x2c, 0x81, 0xdf, 0x24, 0x39, 0x9b, 0x76, 0x0e, 0x65,
0x6c, 0x5d, 0x08, 0xa5, 0x64, 0x97, 0x91, 0x10, 0xfa, 0x26, 0x54, 0xa8, 0xf1, 0x38, 0x8c, 0x2d,
0x6f, 0x96, 0xb1, 0x07, 0x2c, 0x97, 0x46, 0x20, 0x6f, 0x9a, 0x50, 0x7d, 0x81, 0xba, 0xc2, 0xe7,
0x07, 0xff, 0x28, 0x03, 0x37, 0x53, 0xb6, 0x4d, 0x9e, 0xf2, 0x4d, 0x58, 0x3c, 0x89, 0x0a, 0xd5,
0xea, 0xd2, 0x51, 0x5f, 0x55, 0x6c, 0x35, 0xb9, 0xa6, 0x66, 0xf3, 0x24, 0x09, 0x88, 0x95, 0x2e,
0xda, 0xc1, 0x44, 0xa4, 0x22, 0x2a, 0x5d, 0xb4, 0x8d, 0xa4, 0xef, 0x1c, 0xc2, 0x7a, 0xe7, 0x52,
0x70, 0x8c, 0x4d, 0x3d, 0x45, 0xb9, 0x22, 0xa3, 0xa4, 0x81, 0x39, 0xf3, 0x5a, 0x06, 0xe6, 0x21,
0x05, 0x64, 0x45, 0x6d, 0xfd, 0x3c, 0x8d, 0xe0, 0x05, 0x2a, 0xea, 0x50, 0x8a, 0x75, 0x15, 0x2d,
0x39, 0x88, 0x52, 0xab, 0x1b, 0x01, 0x34, 0xf6, 0xa6, 0xa3, 0xd0, 0x89, 0xb3, 0xad, 0xb3, 0x6f,
0xcb, 0x3a, 0xd8, 0x8f, 0x5a, 0xb5, 0xd4, 0x8e, 0x20, 0xea, 0x08, 0x17, 0x6b, 0x2c, 0x1a, 0xb2,
0xe6, 0xfb, 0x6b, 0x8c, 0x93, 0x3d, 0x18, 0x37, 0x61, 0x2d, 0xfe, 0xa2, 0x65, 0x53, 0x57, 0xcd,
0xbf, 0xce, 0xd0, 0xd3, 0xe6, 0x64, 0xe6, 0x77, 0xd6, 0x81, 0xa5, 0xc0, 0x71, 0x4f, 0x47, 0x5c,
0x6f, 0x3e, 0x90, 0x8b, 0xb0, 0x92, 0x1c, 0x9b, 0xcc, 0x0e, 0x6f, 0x2e, 0x52, 0x8d, 0xb8, 0xb5,
0x80, 0x6d, 0x5c, 0x37, 0xc8, 0x98, 0x2c, 0x66, 0x56, 0x63, 0x7e, 0xf0, 0x5d, 0xa8, 0x27, 0x3b,
0x62, 0xdf, 0x91, 0xc1, 0x88, 0xf1, 0xa8, 0x72, 0x33, 0x71, 0x65, 0x31, 0x41, 0x54, 0xe2, 0xb5,
0x0f, 0x8c, 0x7f, 0x92, 0x81, 0x96, 0xc9, 0x05, 0xe5, 0x6a, 0xa3, 0x54, 0x34, 0xf3, 0xe1, 0x5c,
0xab, 0xd7, 0xcf, 0x55, 0xc5, 0x38, 0xaa, 0x11, 0x7d, 0xe3, 0xda, 0xcd, 0xd8, 0xb9, 0x31, 0x37,
0xa3, 0x8d, 0x12, 0x2c, 0x10, 0x8a, 0xb1, 0x06, 0x2b, 0x72, 0x3c, 0x6a, 0x2c, 0xb1, 0xf7, 0x30,
0xd1, 0x63, 0xc2, 0x7b, 0xb8, 0x0e, 0x2d, 0x4a, 0xe5, 0xa7, 0x4f, 0x42, 0x56, 0xdc, 0x02, 0xb6,
0x67, 0x0f, 0x6c, 0xdf, 0xf3, 0xdc, 0x43, 0xee, 0xcb, 0x87, 0xa2, 0x28, 0x61, 0xa2, 0x73, 0x4d,
0x89, 0xc2, 0xf4, 0xa5, 0x12, 0xd0, 0x79, 0xae, 0x7a, 0x17, 0x43, 0x5f, 0x86, 0x09, 0x4b, 0x1b,
0xf6, 0x0b, 0xae, 0x5a, 0x52, 0x4b, 0xf4, 0x11, 0x54, 0x26, 0x51, 0xa3, 0x6a, 0xdd, 0x55, 0xc4,
0xf2, 0x7c, 0xb7, 0xa6, 0x8e, 0x6d, 0x3c, 0x81, 0xe5, 0x64, 0x9b, 0x92, 0x75, 0xac, 0x43, 0x69,
0x2c, 0x61, 0x72, 0x74, 0xd1, 0xb7, 0xf1, 0x3b, 0x25, 0x28, 0x4a, 0x7d, 0x8e, 0x3d, 0x84, 0xfc,
0x40, 0xbd, 0x4d, 0x8a, 0x13, 0x61, 0xc8, 0x52, 0xf5, 0xff, 0x26, 0xbe, 0x50, 0x12, 0x78, 0xec,
0x23, 0xa8, 0x27, 0xbd, 0xa2, 0x33, 0xe1, 0x90, 0x49, 0x77, 0x66, 0x6d, 0x30, 0xe3, 0xff, 0x2a,
0xc7, 0x97, 0x23, 0xc9, 0x0c, 0xa5, 0x33, 0xed, 0xf6, 0xf4, 0x5c, 0x21, 0x6f, 0x07, 0x67, 0xb6,
0xf5, 0xe4, 0xe9, 0x07, 0x32, 0x1e, 0xb2, 0x82, 0xc0, 0xde, 0x99, 0xfd, 0xe4, 0xe9, 0x07, 0xb3,
0x92, 0x34, 0x85, 0xc4, 0xe9, 0x92, 0xf4, 0x32, 0x14, 0x28, 0xd3, 0x1a, 0x3d, 0x32, 0xa1, 0x0f,
0xf6, 0x18, 0x96, 0xa5, 0xda, 0x6a, 0xc9, 0xe7, 0xc0, 0xc4, 0x05, 0x4b, 0x14, 0x83, 0x23, 0xcb,
0x7a, 0x58, 0x44, 0xb6, 0xa1, 0x55, 0x58, 0x38, 0x8b, 0xd3, 0xe6, 0xd5, 0x4c, 0xf9, 0x65, 0xfc,
0x69, 0x01, 0x2a, 0xda, 0xa2, 0xb0, 0x2a, 0x94, 0xcc, 0x4e, 0xaf, 0x63, 0x7e, 0xd2, 0xd9, 0x6a,
0xde, 0x60, 0xf7, 0xe1, 0x9d, 0xee, 0xfe, 0xe6, 0x81, 0x69, 0x76, 0x36, 0xfb, 0xd6, 0x81, 0x69,
0xa9, 0x74, 0x2c, 0x87, 0xed, 0xcf, 0xf6, 0x3a, 0xfb, 0x7d, 0x6b, 0xab, 0xd3, 0x6f, 0x77, 0x77,
0x7b, 0xcd, 0x0c, 0x7b, 0x03, 0x5a, 0x31, 0xa6, 0x2a, 0x6e, 0xef, 0x1d, 0x1c, 0xed, 0xf7, 0x9b,
0x59, 0x76, 0x07, 0x6e, 0x6d, 0x77, 0xf7, 0xdb, 0xbb, 0x56, 0x8c, 0xb3, 0xb9, 0xdb, 0xff, 0xc4,
0xea, 0xfc, 0xda, 0x61, 0xd7, 0xfc, 0xac, 0x99, 0x4b, 0x43, 0x10, 0xca, 0xb8, 0x6a, 0x21, 0xcf,
0x6e, 0xc2, 0x0a, 0x21, 0x50, 0x15, 0xab, 0x7f, 0x70, 0x60, 0xf5, 0x0e, 0x0e, 0xf6, 0x9b, 0x05,
0xb6, 0x08, 0xb5, 0xee, 0xfe, 0x27, 0xed, 0xdd, 0xee, 0x96, 0x65, 0x76, 0xda, 0xbb, 0x7b, 0xcd,
0x05, 0xb6, 0x04, 0x8d, 0x59, 0xbc, 0xa2, 0x68, 0x42, 0xe1, 0x1d, 0xec, 0x77, 0x0f, 0xf6, 0xad,
0x4f, 0x3a, 0x66, 0xaf, 0x7b, 0xb0, 0xdf, 0x2c, 0xb1, 0x55, 0x60, 0xc9, 0xa2, 0x9d, 0xbd, 0xf6,
0x66, 0xb3, 0xcc, 0x56, 0x60, 0x31, 0x09, 0x7f, 0xde, 0xf9, 0xac, 0x09, 0xac, 0x05, 0xcb, 0x34,
0x30, 0x6b, 0xa3, 0xb3, 0x7b, 0xf0, 0xa9, 0xb5, 0xd7, 0xdd, 0xef, 0xee, 0x1d, 0xed, 0x35, 0x2b,
0x98, 0x20, 0xaa, 0xd3, 0xb1, 0xba, 0xfb, 0xbd, 0xa3, 0xed, 0xed, 0xee, 0x66, 0xb7, 0xb3, 0xdf,
0x6f, 0x56, 0xa9, 0xe7, 0xb4, 0x89, 0xd7, 0x44, 0x05, 0x19, 0x33, 0x60, 0x6d, 0x75, 0x7b, 0xed,
0x8d, 0xdd, 0xce, 0x56, 0xb3, 0xce, 0x6e, 0xc3, 0xcd, 0x7e, 0x67, 0xef, 0xf0, 0xc0, 0x6c, 0x9b,
0x9f, 0xa9, 0x98, 0x02, 0x6b, 0xbb, 0xdd, 0xdd, 0x3d, 0x32, 0x3b, 0xcd, 0x06, 0x7b, 0x0b, 0x6e,
0x9b, 0x9d, 0x8f, 0x8f, 0xba, 0x66, 0x67, 0xcb, 0xda, 0x3f, 0xd8, 0xea, 0x58, 0xdb, 0x9d, 0x76,
0xff, 0xc8, 0xec, 0x58, 0x7b, 0xdd, 0x5e, 0xaf, 0xbb, 0xff, 0xac, 0xd9, 0x64, 0xef, 0xc0, 0xdd,
0x08, 0x25, 0x6a, 0x60, 0x06, 0x6b, 0x51, 0xcc, 0x4f, 0x6d, 0xe9, 0x7e, 0xe7, 0xd7, 0xfa, 0xd6,
0x61, 0xa7, 0x63, 0x36, 0x19, 0x5b, 0x87, 0xd5, 0xb8, 0x7b, 0xea, 0x40, 0xf6, 0xbd, 0x24, 0xca,
0x0e, 0x3b, 0xe6, 0x5e, 0x7b, 0x5f, 0x6c, 0x70, 0xa2, 0x6c, 0x59, 0x0c, 0x3b, 0x2e, 0x9b, 0x1d,
0xf6, 0x0a, 0x63, 0x50, 0xd7, 0x76, 0x65, 0xbb, 0x6d, 0x36, 0x57, 0x59, 0x03, 0x2a, 0x7b, 0x87,
0x87, 0x56, 0xbf, 0xbb, 0xd7, 0x39, 0x38, 0xea, 0x37, 0xd7, 0xd8, 0x0a, 0x34, 0xbb, 0xfb, 0xfd,
0x8e, 0x29, 0xf6, 0x5a, 0x55, 0xfd, 0x3f, 0x45, 0xb6, 0x0c, 0x0d, 0x35, 0x52, 0x05, 0xfd, 0x59,
0x91, 0xad, 0x01, 0x3b, 0xda, 0x37, 0x3b, 0xed, 0x2d, 0xb1, 0x70, 0x51, 0xc1, 0xff, 0x2d, 0x4a,
0x0f, 0xc9, 0x4f, 0x73, 0xd1, 0x65, 0x1d, 0x3f, 0x39, 0x48, 0x26, 0x51, 0xad, 0x6a, 0xc9, 0x4f,
0x5f, 0x95, 0xde, 0x5c, 0x53, 0xad, 0x72, 0x73, 0xaa, 0xd5, 0x9c, 0xee, 0x5e, 0xd3, 0x65, 0xbf,
0xb7, 0xa1, 0x36, 0xa6, 0x84, 0xaa, 0x32, 0x71, 0x22, 0xc8, 0xf7, 0x37, 0x04, 0xa4, 0xac, 0x89,
0x73, 0xf9, 0xbd, 0x0b, 0xf3, 0xf9, 0xbd, 0xd3, 0xe4, 0xfb, 0x85, 0x34, 0xf9, 0xfe, 0x01, 0x2c,
0x12, 0x6b, 0x72, 0x5c, 0x67, 0xac, 0xb4, 0x66, 0x92, 0x02, 0x1b, 0xc8, 0xa2, 0x08, 0xae, 0xd4,
0x09, 0xa5, 0x72, 0x48, 0x16, 0x52, 0x94, 0xda, 0x46, 0x42, 0xd3, 0x20, 0xce, 0x11, 0x69, 0x1a,
0x51, 0x0f, 0xf6, 0x65, 0xdc, 0x43, 0x45, 0xeb, 0x81, 0xe0, 0xd8, 0xc3, 0x03, 0x58, 0xe4, 0x97,
0xa1, 0x6f, 0x5b, 0xde, 0xc4, 0xfe, 0x7c, 0x8a, 0x2e, 0x5c, 0x1b, 0x75, 0xf8, 0xaa, 0xd9, 0xc0,
0x82, 0x03, 0x84, 0x6f, 0xd9, 0xa1, 0xfd, 0xe0, 0x0b, 0xa8, 0x68, 0xc9, 0x76, 0xd9, 0x1a, 0x2c,
0x7d, 0xda, 0xed, 0xef, 0x77, 0x7a, 0x3d, 0xeb, 0xf0, 0x68, 0xe3, 0x79, 0xe7, 0x33, 0x6b, 0xa7,
0xdd, 0xdb, 0x69, 0xde, 0x10, 0x87, 0x76, 0xbf, 0xd3, 0xeb, 0x77, 0xb6, 0x12, 0xf0, 0x0c, 0x7b,
0x13, 0xd6, 0x8f, 0xf6, 0x8f, 0x7a, 0x9d, 0x2d, 0x2b, 0xad, 0x5e, 0x56, 0x50, 0xa9, 0x2c, 0x4f,
0xa9, 0x9e, 0x7b, 0xf0, 0x7d, 0xa8, 0x27, 0x33, 0x40, 0x32, 0x80, 0x85, 0xdd, 0xce, 0xb3, 0xf6,
0xe6, 0x67, 0x94, 0x42, 0xae, 0xd7, 0x6f, 0xf7, 0xbb, 0x9b, 0x96, 0x4c, 0x19, 0x27, 0x38, 0x42,
0x86, 0x55, 0xa0, 0xd8, 0xde, 0xdf, 0xdc, 0x39, 0x30, 0x7b, 0xcd, 0xec, 0x83, 0x8f, 0xa0, 0x39,
0xeb, 0x8f, 0x4a, 0x38, 0xf0, 0x5e, 0xe6, 0xe9, 0x7b, 0xf0, 0xef, 0x73, 0x00, 0x71, 0xc0, 0x80,
0x60, 0x35, 0x5b, 0xed, 0x7e, 0x7b, 0xf7, 0x40, 0x4c, 0xc3, 0x3c, 0xe8, 0x0b, 0x0e, 0x62, 0x76,
0x3e, 0x6e, 0xde, 0x48, 0x2d, 0x39, 0x38, 0xec, 0x37, 0x33, 0x62, 0xc5, 0xba, 0xfb, 0xdd, 0x7e,
0xb7, 0xbd, 0x6b, 0x99, 0x07, 0x47, 0xdd, 0xfd, 0x67, 0x94, 0x1b, 0x0b, 0xb9, 0xec, 0xd1, 0xe1,
0xb6, 0x79, 0xb0, 0xdf, 0xb7, 0x7a, 0x3b, 0x47, 0xfd, 0x2d, 0xcc, 0xac, 0xb5, 0x69, 0x76, 0x0f,
0xa9, 0xcd, 0xfc, 0xcb, 0x10, 0x44, 0xd3, 0x05, 0xb1, 0xe6, 0xcf, 0x0e, 0x7a, 0xbd, 0xee, 0xa1,
0xf5, 0xf1, 0x51, 0xc7, 0xec, 0x76, 0x7a, 0x58, 0x71, 0x21, 0x05, 0x2e, 0xf0, 0x8b, 0x82, 0x37,
0xf7, 0x77, 0x3f, 0x91, 0xcc, 0x53, 0xa0, 0x96, 0x92, 0x20, 0x81, 0x55, 0x16, 0x3c, 0x45, 0x70,
0x9f, 0x94, 0x96, 0xe1, 0x9a, 0x32, 0x51, 0xaf, 0x22, 0xf8, 0xea, 0xdc, 0x66, 0x60, 0xb5, 0x6a,
0x7a, 0x91, 0xa8, 0x85, 0x2c, 0x37, 0xba, 0xa0, 0xb6, 0xb6, 0x4c, 0xac, 0x50, 0x9f, 0x83, 0x0a,
0xdc, 0x86, 0xd8, 0x28, 0xc1, 0x9e, 0x04, 0x4a, 0x53, 0x7d, 0x88, 0x92, 0xc5, 0x27, 0xbf, 0x9d,
0x83, 0x3a, 0x05, 0x6f, 0xd1, 0x6f, 0x1d, 0x71, 0x9f, 0xed, 0x41, 0x51, 0xfe, 0x68, 0x16, 0x5b,
0x89, 0xd2, 0x16, 0xe9, 0x3f, 0xd3, 0xb5, 0xbe, 0x3a, 0x0b, 0x96, 0xe2, 0xd8, 0xd2, 0xdf, 0xfe,
0x93, 0xbf, 0xfc, 0xa7, 0xd9, 0x1a, 0xab, 0x3c, 0x3a, 0x7f, 0xff, 0xd1, 0x29, 0x77, 0x03, 0xd1,
0xc6, 0xdf, 0x00, 0x88, 0x7f, 0x0a, 0x8a, 0xb5, 0x22, 0x27, 0xd4, 0xcc, 0xef, 0x64, 0xad, 0xdf,
0x4c, 0x29, 0x91, 0xed, 0xde, 0xc4, 0x76, 0x97, 0x8c, 0xba, 0x68, 0xd7, 0x71, 0x9d, 0x90, 0x7e,
0x16, 0xea, 0xc3, 0xcc, 0x03, 0x36, 0x84, 0xaa, 0xfe, 0x23, 0x4d, 0x4c, 0x49, 0x4a, 0x29, 0x3f,
0x33, 0xb5, 0x7e, 0x2b, 0xb5, 0x4c, 0xc9, 0xa0, 0xd8, 0xc7, 0x8a, 0xd1, 0x14, 0x7d, 0x4c, 0x11,
0x23, 0xee, 0x65, 0x44, 0x52, 0x79, 0xfc, 0x5b, 0x4c, 0xec, 0x0d, 0x4d, 0xae, 0x9a, 0xfb, 0x25,
0xa8, 0xf5, 0xdb, 0xd7, 0x94, 0xca, 0xbe, 0x6e, 0x63, 0x5f, 0x6b, 0x06, 0x13, 0x7d, 0x0d, 0x10,
0x47, 0xfd, 0x12, 0xd4, 0x87, 0x99, 0x07, 0x4f, 0xfe, 0xe2, 0x3e, 0x94, 0xa3, 0xc7, 0x9c, 0xec,
0x37, 0xa1, 0x96, 0x88, 0xae, 0x63, 0x6a, 0x1a, 0x69, 0xc1, 0x78, 0xeb, 0x6f, 0xa4, 0x17, 0xca,
0x8e, 0xdf, 0xc4, 0x8e, 0x5b, 0x6c, 0x55, 0x74, 0x2c, 0xa3, 0xd7, 0x1e, 0x61, 0x0c, 0x2a, 0x25,
0x81, 0x7a, 0xa1, 0x69, 0x1f, 0xd4, 0xd9, 0x1b, 0xb3, 0x1a, 0x41, 0xa2, 0xb7, 0xdb, 0xd7, 0x94,
0xca, 0xee, 0xde, 0xc0, 0xee, 0x56, 0xd9, 0xb2, 0xde, 0x9d, 0x7a, 0x7a, 0xc9, 0x38, 0x26, 0x5e,
0xd3, 0x7f, 0xaa, 0x88, 0xdd, 0x8e, 0xd3, 0x64, 0xa5, 0xfc, 0x84, 0x51, 0x44, 0x22, 0xf3, 0xbf,
0x63, 0x64, 0xb4, 0xb0, 0x2b, 0xc6, 0x70, 0xfb, 0xf4, 0x5f, 0x2a, 0x62, 0xc7, 0x50, 0xd1, 0xb2,
0xfb, 0xb3, 0x9b, 0xd7, 0xfe, 0x12, 0xc1, 0xfa, 0x7a, 0x5a, 0x51, 0xda, 0x54, 0xf4, 0xf6, 0x1f,
0x9d, 0x70, 0xce, 0x7e, 0x1d, 0xca, 0x51, 0xce, 0x78, 0xb6, 0xa6, 0xe5, 0xf0, 0xd7, 0x73, 0xdc,
0xaf, 0xb7, 0xe6, 0x0b, 0xd2, 0x88, 0x4f, 0x6f, 0x5d, 0x10, 0xdf, 0xa7, 0x50, 0xd1, 0xf2, 0xc2,
0x47, 0x13, 0x98, 0xcf, 0x3d, 0x1f, 0x4d, 0x20, 0x25, 0x8d, 0xbc, 0xb1, 0x88, 0x5d, 0x54, 0x58,
0x19, 0xe9, 0x3b, 0xbc, 0xf4, 0x02, 0xb6, 0x0b, 0x2b, 0x52, 0xd3, 0x3a, 0xe6, 0x5f, 0x66, 0x1b,
0x52, 0x7e, 0x1d, 0xea, 0x71, 0x86, 0x7d, 0x04, 0x25, 0x95, 0xfe, 0x9f, 0xad, 0xa6, 0xff, 0x8c,
0xc1, 0xfa, 0xda, 0x1c, 0x5c, 0xaa, 0x45, 0x9f, 0x01, 0xc4, 0x49, 0xe8, 0x23, 0x26, 0x31, 0x97,
0xd4, 0x3e, 0xa2, 0x80, 0xf9, 0x8c, 0xf5, 0xc6, 0x2a, 0x4e, 0xb0, 0xc9, 0x90, 0x49, 0xb8, 0xfc,
0x42, 0x65, 0xc7, 0xfc, 0x11, 0x54, 0xb4, 0x3c, 0xf4, 0xd1, 0xf2, 0xcd, 0xe7, 0xb0, 0x8f, 0x96,
0x2f, 0x25, 0x6d, 0xbd, 0xb1, 0x8e, 0xad, 0x2f, 0x1b, 0x0d, 0xd1, 0xba, 0x10, 0xb5, 0xa4, 0xc8,
0x23, 0x36, 0xe8, 0x0c, 0x6a, 0x89, 0x64, 0xf3, 0xd1, 0x09, 0x4d, 0x4b, 0x65, 0x1f, 0x9d, 0xd0,
0xd4, 0xfc, 0xf4, 0x8a, 0xce, 0x8c, 0x45, 0xd1, 0xcf, 0x39, 0xa2, 0x68, 0x3d, 0xfd, 0x10, 0x2a,
0x5a, 0xe2, 0xf8, 0x68, 0x2e, 0xf3, 0x39, 0xea, 0xa3, 0xb9, 0xa4, 0xe5, 0x99, 0x5f, 0xc6, 0x3e,
0xea, 0x06, 0x92, 0x02, 0xe6, 0xf7, 0x13, 0x6d, 0xff, 0x26, 0xd4, 0x93, 0xb9, 0xe4, 0xa3, 0xb3,
0x9f, 0x9a, 0x94, 0x3e, 0x3a, 0xfb, 0xd7, 0x24, 0xa0, 0x97, 0x24, 0xfd, 0x60, 0x29, 0xea, 0xe4,
0xd1, 0x4f, 0x64, 0x58, 0xca, 0x17, 0xec, 0x63, 0xc1, 0xe0, 0x64, 0x7a, 0x49, 0xb6, 0xa6, 0x51,
0xad, 0x9e, 0xa7, 0x32, 0x3a, 0x2f, 0x73, 0x99, 0x28, 0x93, 0xc4, 0x8c, 0x8d, 0xb3, 0x67, 0xb0,
0x14, 0x11, 0x73, 0x94, 0x2f, 0x32, 0x88, 0xe6, 0x90, 0x9a, 0x95, 0x72, 0xbd, 0x39, 0x5b, 0xfa,
0x38, 0x43, 0xd7, 0x1f, 0x66, 0xe9, 0xd3, 0xae, 0x3f, 0x3d, 0x65, 0xa4, 0x76, 0xfd, 0x25, 0x92,
0xf9, 0xcd, 0x5e, 0x7f, 0xa1, 0x23, 0xda, 0x70, 0xa1, 0x31, 0x9b, 0xbd, 0xf1, 0xf6, 0x75, 0xb9,
0x0b, 0xa8, 0xf9, 0x37, 0x5f, 0x9e, 0xda, 0x20, 0xc9, 0x8a, 0x14, 0x37, 0x7d, 0x24, 0x1f, 0x9f,
0xb0, 0xdf, 0x80, 0xaa, 0x9e, 0xc8, 0x9a, 0xe9, 0x3c, 0x61, 0xb6, 0xa7, 0x5b, 0xa9, 0x65, 0x49,
0x2a, 0x61, 0x55, 0xbd, 0x1b, 0xf6, 0x09, 0xac, 0x46, 0xcb, 0xac, 0xc7, 0xad, 0x07, 0xec, 0x4e,
0x4a, 0x34, 0x7b, 0x62, 0xb1, 0x6f, 0x5e, 0x1b, 0xee, 0xfe, 0x38, 0x23, 0xa8, 0x2f, 0x99, 0x51,
0x37, 0xbe, 0x79, 0xd2, 0x12, 0x09, 0xc7, 0x37, 0x4f, 0x6a, 0x1a, 0x5e, 0x45, 0x7d, 0x6c, 0x29,
0xb1, 0x46, 0xf4, 0x2c, 0x97, 0xfd, 0x10, 0x1a, 0x5a, 0x50, 0x7e, 0xef, 0xca, 0x1d, 0x44, 0x27,
0x69, 0x3e, 0x25, 0xdc, 0x7a, 0x9a, 0x6d, 0xd2, 0x58, 0xc3, 0xf6, 0x17, 0x8d, 0xc4, 0xe2, 0x88,
0x53, 0xb4, 0x09, 0x15, 0x3d, 0xe0, 0xff, 0x25, 0xed, 0xae, 0x69, 0x45, 0x7a, 0xf6, 0xb1, 0xc7,
0x19, 0xb6, 0x0b, 0xcd, 0xd9, 0x64, 0x49, 0x11, 0x4f, 0x49, 0x4b, 0xf0, 0xb4, 0x3e, 0x53, 0x98,
0x48, 0xb1, 0xc4, 0x0e, 0x29, 0xb0, 0x23, 0xfa, 0x29, 0x25, 0xcf, 0x9f, 0xbd, 0xd5, 0x93, 0x3f,
0xb1, 0x14, 0xb5, 0x96, 0xf6, 0xe3, 0x5a, 0xf7, 0x33, 0x8f, 0x33, 0xec, 0x77, 0x33, 0x50, 0x4d,
0x24, 0x28, 0x49, 0x3c, 0x9d, 0x9f, 0x99, 0x67, 0x4b, 0x2f, 0xd3, 0x27, 0x6a, 0x98, 0xb8, 0x88,
0xbb, 0x0f, 0x7e, 0x90, 0xd8, 0xa4, 0x9f, 0x24, 0x5c, 0x7b, 0x0f, 0x67, 0x7f, 0x6b, 0xe9, 0x8b,
0x59, 0x04, 0x3d, 0xd3, 0xdf, 0x17, 0x8f, 0x33, 0xec, 0x3f, 0x66, 0xa0, 0x9e, 0xf4, 0xd9, 0x47,
0xd3, 0x4d, 0x7d, 0x1d, 0x10, 0x91, 0xd2, 0x35, 0x8e, 0xfe, 0x1f, 0xe2, 0x28, 0xfb, 0x0f, 0xcc,
0xc4, 0x28, 0x65, 0x2e, 0xe8, 0x5f, 0x6c, 0xb4, 0xec, 0x43, 0xfa, 0x69, 0x43, 0xf5, 0x94, 0x89,
0xcd, 0xff, 0x14, 0x5e, 0x44, 0x7e, 0xfa, 0x0f, 0xc7, 0xe1, 0x26, 0xfc, 0x88, 0x7e, 0x53, 0x48,
0xbd, 0x8c, 0x11, 0x54, 0xfc, 0xba, 0xf5, 0x8d, 0x77, 0x70, 0x4e, 0x6f, 0x1a, 0x37, 0x13, 0x73,
0x9a, 0x15, 0x3c, 0xda, 0x34, 0x3a, 0xf9, 0xbb, 0x6f, 0xf1, 0xcd, 0x39, 0xf7, 0x5b, 0x70, 0xd7,
0x0f, 0x72, 0x4c, 0x83, 0x94, 0xe8, 0x89, 0xa3, 0xf6, 0x9a, 0xcd, 0x18, 0x0f, 0x70, 0xac, 0xef,
0x18, 0x77, 0xae, 0x1d, 0xeb, 0x23, 0xf4, 0xbf, 0x8b, 0x11, 0x1f, 0x02, 0xc4, 0x4f, 0x0d, 0xd9,
0xcc, 0x83, 0xb7, 0x88, 0x01, 0xcd, 0xbf, 0x46, 0x4c, 0x9e, 0x67, 0xf5, 0x2e, 0x4e, 0xb4, 0xf8,
0xeb, 0xc4, 0x4e, 0xa3, 0xa7, 0x78, 0xba, 0xf4, 0x95, 0x7c, 0x15, 0x98, 0x90, 0xbe, 0x66, 0xdb,
0x4f, 0x30, 0xd3, 0xe8, 0xdd, 0xdd, 0x11, 0xd4, 0x76, 0x3d, 0xef, 0xc5, 0x74, 0x12, 0x3d, 0x6f,
0x4f, 0x3e, 0x8a, 0xd9, 0xb1, 0x83, 0xb3, 0xf5, 0x99, 0x59, 0x18, 0x77, 0xb1, 0xa9, 0x75, 0xd6,
0xd2, 0x9a, 0x7a, 0xf4, 0x93, 0xf8, 0x7d, 0xe3, 0x17, 0xcc, 0x86, 0xc5, 0x88, 0x47, 0xc7, 0x6f,
0x08, 0x93, 0xcd, 0x24, 0x38, 0xf3, 0x6c, 0x17, 0x09, 0x35, 0x41, 0x8d, 0xf6, 0x51, 0xa0, 0xda,
0x7c, 0x9c, 0x61, 0x87, 0x50, 0xdd, 0xe2, 0x03, 0x0c, 0xd4, 0xc7, 0xa7, 0x25, 0x4b, 0x89, 0x67,
0x0a, 0xf4, 0x26, 0x65, 0xbd, 0x96, 0x00, 0x26, 0xef, 0xad, 0x89, 0x7d, 0xe5, 0xf3, 0xcf, 0x1f,
0xfd, 0x44, 0x3e, 0x5a, 0xf9, 0x42, 0xdd, 0x5b, 0xea, 0x51, 0x4f, 0xe2, 0xde, 0x9a, 0x79, 0x05,
0x94, 0xb8, 0xb7, 0xe6, 0x5e, 0x01, 0x25, 0x96, 0x5a, 0x3d, 0x2a, 0x62, 0x23, 0x58, 0x9c, 0x7b,
0x38, 0x14, 0x5d, 0x59, 0xd7, 0x3d, 0x37, 0x5a, 0xbf, 0x7b, 0x3d, 0x42, 0xb2, 0xb7, 0x07, 0xc9,
0xde, 0x7a, 0x50, 0xa3, 0xe4, 0x83, 0xc7, 0x9c, 0x42, 0xf6, 0x66, 0xf2, 0xdd, 0xe8, 0xf1, 0x80,
0xb3, 0x17, 0x0c, 0x96, 0x25, 0x25, 0x1c, 0x8c, 0x95, 0x63, 0xbf, 0x0e, 0x95, 0x67, 0x3c, 0x54,
0x31, 0x7a, 0x91, 0x8c, 0x3d, 0x13, 0xb4, 0xb7, 0x9e, 0x12, 0xe2, 0x97, 0xa4, 0x19, 0x6c, 0xed,
0x11, 0x1f, 0x9e, 0x72, 0x62, 0x4e, 0x96, 0x33, 0xfc, 0x82, 0xfd, 0x1a, 0x36, 0x1e, 0x85, 0x46,
0xaf, 0x6a, 0x41, 0x58, 0x7a, 0xe3, 0x8d, 0x19, 0x78, 0x5a, 0xcb, 0xae, 0x37, 0xe4, 0x9a, 0xac,
0xe7, 0x42, 0x45, 0x4b, 0xa1, 0x10, 0x1d, 0xa0, 0xf9, 0x94, 0x19, 0xd1, 0x01, 0x4a, 0xc9, 0xb8,
0x60, 0xdc, 0xc7, 0x7e, 0x0c, 0x76, 0x37, 0xee, 0x87, 0xb2, 0x2c, 0xc4, 0x3d, 0x3d, 0xfa, 0x89,
0x3d, 0x0e, 0xbf, 0x60, 0x9f, 0x62, 0x8a, 0x6f, 0x3d, 0x06, 0x31, 0x56, 0x1a, 0x66, 0xc3, 0x15,
0xa3, 0xc5, 0xd2, 0x8a, 0x92, 0x8a, 0x04, 0x75, 0x85, 0x92, 0xdc, 0x53, 0x80, 0x5e, 0xe8, 0x4d,
0xb6, 0x6c, 0x3e, 0xf6, 0xdc, 0x98, 0xd7, 0xc6, 0x51, 0x71, 0x31, 0xff, 0xd2, 0x42, 0xe3, 0xd8,
0xa7, 0x9a, 0x96, 0x95, 0x08, 0xe3, 0x54, 0xc4, 0x75, 0x6d, 0xe0, 0x5c, 0xb4, 0x20, 0x29, 0xc1,
0x73, 0x8f, 0x33, 0xac, 0x0d, 0x10, 0xbf, 0x1c, 0x8b, 0x74, 0xa6, 0xb9, 0x47, 0x69, 0x11, 0xdb,
0x4b, 0x79, 0x66, 0x76, 0x08, 0xe5, 0xf8, 0xc9, 0xcd, 0x5a, 0x9c, 0x11, 0x26, 0xf1, 0x40, 0x27,
0xba, 0xc1, 0xe7, 0x9e, 0xbb, 0x18, 0x4d, 0x5c, 0x2a, 0x60, 0x25, 0xb1, 0x54, 0x27, 0x9c, 0x07,
0xcc, 0x81, 0x25, 0x1a, 0x60, 0x24, 0x2e, 0x61, 0x34, 0x57, 0x94, 0xc9, 0x7d, 0xfe, 0xe5, 0x49,
0x74, 0x9a, 0x53, 0xdf, 0x4f, 0x24, 0x4c, 0x3f, 0x82, 0x5a, 0x29, 0x92, 0x4c, 0xb0, 0xe6, 0x31,
0x2c, 0xce, 0xb9, 0xe8, 0xa3, 0x23, 0x7d, 0xdd, 0x9b, 0x8b, 0xe8, 0x48, 0x5f, 0xeb, 0xdd, 0x37,
0x56, 0xb0, 0xcb, 0x86, 0x01, 0xa8, 0xea, 0x5d, 0x38, 0xe1, 0xe0, 0x4c, 0x74, 0xf7, 0xef, 0x32,
0xb0, 0x94, 0xe2, 0x84, 0x67, 0x6f, 0x29, 0xab, 0xc1, 0xb5, 0x0e, 0xfa, 0xf5, 0x54, 0x67, 0xad,
0xd1, 0xc3, 0x7e, 0xf6, 0xd8, 0xf3, 0xc4, 0xc5, 0x46, 0xbe, 0x52, 0x79, 0x32, 0x5f, 0x2a, 0x54,
0xa4, 0x4a, 0x14, 0x9f, 0xc3, 0x1a, 0x0d, 0xa4, 0x3d, 0x1a, 0xcd, 0x38, 0x92, 0xdf, 0x9c, 0xfb,
0xe9, 0xf3, 0x84, 0x73, 0x7c, 0xfd, 0xfa, 0x9f, 0x46, 0xbf, 0x46, 0x9c, 0xa6, 0xa1, 0xb2, 0x29,
0x34, 0x67, 0x1d, 0xb4, 0xec, 0xfa, 0xb6, 0xd6, 0xef, 0x24, 0xf4, 0xdf, 0x14, 0xa7, 0xee, 0xd7,
0xb0, 0xb3, 0x3b, 0xc6, 0x7a, 0xda, 0xba, 0x90, 0x4a, 0x2c, 0xf6, 0xe3, 0x6f, 0x45, 0xde, 0xe4,
0x99, 0x79, 0xaa, 0x0e, 0xae, 0xf3, 0x7d, 0x47, 0x1a, 0x78, 0xba, 0x33, 0xfa, 0x5d, 0xec, 0xfe,
0xae, 0x71, 0x2b, 0xad, 0x7b, 0x9f, 0xaa, 0x90, 0x2e, 0xbe, 0x36, 0x7b, 0xae, 0xd5, 0x08, 0xee,
0xa6, 0xed, 0xf7, 0xb5, 0xba, 0xd0, 0xcc, 0x5a, 0xdf, 0x40, 0xd9, 0xae, 0xaa, 0x7b, 0x8f, 0xa3,
0xe3, 0x93, 0xe2, 0xa6, 0x8e, 0x8e, 0x4f, 0x9a, 0xbb, 0x39, 0x29, 0xd7, 0x28, 0x47, 0xf3, 0x87,
0x99, 0x07, 0x1b, 0xf7, 0x7e, 0xf8, 0xb5, 0x53, 0x27, 0x3c, 0x9b, 0x1e, 0x3f, 0x1c, 0x78, 0xe3,
0x47, 0x23, 0x65, 0x6d, 0x94, 0x21, 0xcf, 0x8f, 0x46, 0xee, 0xf0, 0x11, 0x36, 0x7b, 0xbc, 0x30,
0xf1, 0xbd, 0xd0, 0xfb, 0xd6, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x0d, 0x5f, 0xbc, 0x91, 0xdd,
0x81, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

@ -269,10 +269,18 @@ func request_Lightning_DisconnectPeer_0(ctx context.Context, marshaler runtime.M
}
var (
filter_Lightning_ListPeers_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
func request_Lightning_ListPeers_0(ctx context.Context, marshaler runtime.Marshaler, client LightningClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq ListPeersRequest
var metadata runtime.ServerMetadata
if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_Lightning_ListPeers_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.ListPeers(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err

@ -1571,9 +1571,32 @@ message Peer {
/// Features advertised by the remote peer in their init message.
map<uint32, Feature> features = 11;
/*
The latest errors received from our peer with timestamps, limited to the 10
most recent errors. These errors are tracked across peer connections, but
are not persisted across lnd restarts. Note that these errors are only
stored for peers that we have channels open with, to prevent peers from
spamming us with errors at no cost.
*/
repeated TimestampedError errors = 12;
}
message TimestampedError {
// The unix timestamp in seconds when the error occurred.
uint64 timestamp = 1;
// The string representation of the error sent by our peer.
string error = 2;
}
message ListPeersRequest {
/*
If true, only the last error that our peer sent us will be returned with
the peer's information, rather than the full set of historic errors we have
stored.
*/
bool latest_error = 1;
}
message ListPeersResponse {
/// The list of currently connected peers

@ -1186,6 +1186,16 @@
}
}
},
"parameters": [
{
"name": "latest_error",
"description": "If true, only the last error that our peer sent us will be returned with\nthe peer's information, rather than the full set of historic errors we have\nstored.",
"in": "query",
"required": false,
"type": "boolean",
"format": "boolean"
}
],
"tags": [
"Lightning"
]
@ -3819,6 +3829,13 @@
"$ref": "#/definitions/lnrpcFeature"
},
"description": "/ Features advertised by the remote peer in their init message."
},
"errors": {
"type": "array",
"items": {
"$ref": "#/definitions/lnrpcTimestampedError"
},
"description": "The latest errors received from our peer with timestamps, limited to the 10\nmost recent errors. These errors are tracked across peer connections, but\nare not persisted across lnd restarts. Note that these errors are only\nstored for peers that we have channels open with, to prevent peers from\nspamming us with errors at no cost."
}
}
},
@ -4270,6 +4287,20 @@
"lnrpcStopResponse": {
"type": "object"
},
"lnrpcTimestampedError": {
"type": "object",
"properties": {
"timestamp": {
"type": "string",
"format": "uint64",
"description": "The unix timestamp in seconds when the error occurred."
},
"error": {
"type": "string",
"description": "The string representation of the error sent by our peer."
}
}
},
"lnrpcTransaction": {
"type": "object",
"properties": {

81
peer.go

@ -28,6 +28,7 @@ import (
"github.com/lightningnetwork/lnd/lnwallet"
"github.com/lightningnetwork/lnd/lnwire"
"github.com/lightningnetwork/lnd/pool"
"github.com/lightningnetwork/lnd/queue"
"github.com/lightningnetwork/lnd/ticker"
)
@ -52,6 +53,9 @@ const (
// messages to be sent across the wire, requested by objects outside
// this struct.
outgoingQueueLen = 50
// errorBufferSize is the number of historic peer errors that we store.
errorBufferSize = 10
)
// outgoingMsg packages an lnwire.Message to be sent out on the wire, along with
@ -91,6 +95,13 @@ type channelCloseUpdate struct {
Success bool
}
// timestampedError is a timestamped error that is used to store the most recent
// errors we have experienced with our peers.
type timestampedError struct {
error error
timestamp time.Time
}
// peer is an active peer on the Lightning Network. This struct is responsible
// for managing any channel state related to this peer. To do so, it has
// several helper goroutines to handle events such as HTLC timeouts, new
@ -216,6 +227,14 @@ type peer struct {
// peer's chansync message with its own over and over again.
resentChanSyncMsg map[lnwire.ChannelID]struct{}
// errorBuffer stores a set of errors related to a peer. It contains
// error messages that our peer has recently sent us over the wire and
// records of unknown messages that were sent to us and, so that we can
// track a full record of the communication errors we have had with our
// peer. If we choose to disconnect from a peer, it also stores the
// reason we had for disconnecting.
errorBuffer *queue.CircularBuffer
// writePool is the task pool to that manages reuse of write buffers.
// Write tasks are submitted to the pool in order to conserve the total
// number of write buffers allocated at any one time, and decouple write
@ -233,12 +252,15 @@ type peer struct {
var _ lnpeer.Peer = (*peer)(nil)
// newPeer creates a new peer from an establish connection object, and a
// pointer to the main server.
// pointer to the main server. It takes an error buffer which may contain errors
// from a previous connection with the peer if we have been connected to them
// before.
func newPeer(conn net.Conn, connReq *connmgr.ConnReq, server *server,
addr *lnwire.NetAddress, inbound bool,
features, legacyFeatures *lnwire.FeatureVector,
chanActiveTimeout time.Duration,
outgoingCltvRejectDelta uint32) (
outgoingCltvRejectDelta uint32,
errBuffer *queue.CircularBuffer) (
*peer, error) {
nodePub := addr.IdentityKey
@ -276,6 +298,8 @@ func newPeer(conn net.Conn, connReq *connmgr.ConnReq, server *server,
chanActiveTimeout: chanActiveTimeout,
errorBuffer: errBuffer,
writePool: server.writePool,
readPool: server.readPool,
@ -338,6 +362,7 @@ func (p *peer) Start() error {
msg := <-msgChan
if msg, ok := msg.(*lnwire.Init); ok {
if err := p.handleInitMsg(msg); err != nil {
p.storeError(err)
return err
}
} else {
@ -668,7 +693,10 @@ func (p *peer) Disconnect(reason error) {
return
}
peerLog.Infof("Disconnecting %s, reason: %v", p, reason)
err := fmt.Errorf("disconnecting %s, reason: %v", p, reason)
p.storeError(err)
peerLog.Infof(err.Error())
// Ensure that the TCP connection is properly closed before continuing.
p.conn.Close()
@ -1026,12 +1054,17 @@ out:
peerLog.Infof("unable to read message from %v: %v",
p, err)
switch err.(type) {
// If we could not read our peer's message due to an
// unknown type or invalid alias, we continue processing
// as normal. We store unknown message and address
// types, as they may provide debugging insight.
switch e := err.(type) {
// If this is just a message we don't yet recognize,
// we'll continue processing as normal as this allows
// us to introduce new messages in a forwards
// compatible manner.
case *lnwire.UnknownMessage:
p.storeError(e)
idleTimer.Reset(idleTimeout)
continue
@ -1040,12 +1073,15 @@ out:
// simply continue parsing the remainder of their
// messages.
case *lnwire.ErrUnknownAddrType:
p.storeError(e)
idleTimer.Reset(idleTimeout)
continue
// If the NodeAnnouncement has an invalid alias, then
// we'll log that error above and continue so we can
// continue to read messges from the peer.
// continue to read messages from the peer. We do not
// store this error because it is of little debugging
// value.
case *lnwire.ErrInvalidNodeAlias:
idleTimer.Reset(idleTimeout)
continue
@ -1141,8 +1177,13 @@ out:
discStream.AddMsg(msg)
default:
peerLog.Errorf("unknown message %v received from peer "+
"%v", uint16(msg.MsgType()), p)
// If the message we received is unknown to us, store
// the type to track the failure.
err := fmt.Errorf("unknown message type %v received",
uint16(msg.MsgType()))
p.storeError(err)
peerLog.Errorf("peer: %v, %v", p, err)
}
if isLinkUpdate {
@ -1181,13 +1222,39 @@ func (p *peer) isActiveChannel(chanID lnwire.ChannelID) bool {
return ok
}
// storeError stores an error in our peer's buffer of recent errors with the
// current timestamp. Errors are only stored if we have at least one active
// channel with the peer to mitigate dos attack vectors where a peer costlessly
// connects to us and spams us with errors.
func (p *peer) storeError(err error) {
p.activeChanMtx.RLock()
channelCount := len(p.activeChannels)
p.activeChanMtx.RUnlock()
// If we do not have any active channels with the peer, we do not store
// errors as a dos mitigation.
if channelCount == 0 {
peerLog.Tracef("no channels with peer: %v, not storing err", p)
return
}
p.errorBuffer.Add(
&timestampedError{timestamp: time.Now(), error: err},
)
}
// handleError processes an error message read from the remote peer. The boolean
// returns indicates whether the message should be delivered to a targeted peer.
// It stores the error we received from the peer in memory if we have a channel
// open with the peer.
//
// NOTE: This method should only be called from within the readHandler.
func (p *peer) handleError(msg *lnwire.Error) bool {
key := p.addr.IdentityKey
// Store the error we have received.
p.storeError(msg)
switch {
// In the case of an all-zero channel ID we want to forward the error to

116
queue/circular_buf.go Normal file

@ -0,0 +1,116 @@
package queue
import (
"errors"
)
// errInvalidSize is returned when an invalid size for a buffer is provided.
var errInvalidSize = errors.New("buffer size must be > 0")
// CircularBuffer is a buffer which retains a set of values in memory, and
// overwrites the oldest item in the buffer when a new item needs to be
// written.
type CircularBuffer struct {
// total is the total number of items that have been added to the
// buffer.
total int
// items is the set of buffered items.
items []interface{}
}
// NewCircularBuffer returns a new circular buffer with the size provided. It
// will fail if a zero or negative size parameter is provided.
func NewCircularBuffer(size int) (*CircularBuffer, error) {
if size <= 0 {
return nil, errInvalidSize
}
return &CircularBuffer{
total: 0,
// Create a slice with length and capacity equal to the size of
// the buffer so that we do not need to resize the underlying
// array when we add items.
items: make([]interface{}, size),
}, nil
}
// index returns the index that should be written to next.
func (c *CircularBuffer) index() int {
return c.total % len(c.items)
}
// Add adds an item to the buffer, overwriting the oldest item if the buffer
// is full.
func (c *CircularBuffer) Add(item interface{}) {
// Set the item in the next free index in the items array.
c.items[c.index()] = item
// Increment the total number of items that we have stored.
c.total++
}
// List returns a copy of the items in the buffer ordered from the oldest to
// newest item.
func (c *CircularBuffer) List() []interface{} {
size := cap(c.items)
index := c.index()
switch {
// If no items have been stored yet, we can just return a nil list.
case c.total == 0:
return nil
// If we have added fewer items than the buffer size, we can simply
// return the total number of items from the beginning of the list
// to the index. This special case is added because the oldest item
// is at the beginning of the underlying array, not at the index when
// we have not filled the array yet.
case c.total < size:
resp := make([]interface{}, c.total)
copy(resp, c.items[:c.index()])
return resp
}
resp := make([]interface{}, size)
// Get the items in the underlying array from index to end, the first
// item in this slice will be the oldest item in the list.
firstHalf := c.items[index:]
// Copy the first set into our response slice from index 0, so that
// the response returned is from oldest to newest.
copy(resp, firstHalf)
// Get the items in the underlying array from beginning until the write
// index, the last item in this slice will be the newest item in the
// list.
secondHalf := c.items[:index]
// Copy the second set of items into the response slice offset by the
// length of the first set of items so that we return a response which
// is ordered from oldest to newest entry.
copy(resp[len(firstHalf):], secondHalf)
return resp
}
// Total returns the total number of items that have been added to the buffer.
func (c *CircularBuffer) Total() int {
return c.total
}
// Latest returns the item that was most recently added to the buffer.
func (c *CircularBuffer) Latest() interface{} {
// If no items have been added yet, return nil.
if c.total == 0 {
return nil
}
// The latest item is one before our total, mod by length.
latest := (c.total - 1) % len(c.items)
// Return the latest item added.
return c.items[latest]
}

198
queue/circular_buf_test.go Normal file

@ -0,0 +1,198 @@
package queue
import (
"reflect"
"testing"
)
// TestNewCircularBuffer tests the size parameter check when creating a circular
// buffer.
func TestNewCircularBuffer(t *testing.T) {
tests := []struct {
name string
size int
expectedError error
}{
{
name: "zero size",
size: 0,
expectedError: errInvalidSize,
},
{
name: "negative size",
size: -1,
expectedError: errInvalidSize,
},
{
name: "ok size",
size: 1,
expectedError: nil,
},
}
for _, test := range tests {
test := test
t.Run(test.name, func(t *testing.T) {
_, err := NewCircularBuffer(test.size)
if err != test.expectedError {
t.Fatalf("expected: %v, got: %v",
test.expectedError, err)
}
})
}
}
// TestCircularBuffer tests the adding and listing of items in a circular
// buffer.
func TestCircularBuffer(t *testing.T) {
tests := []struct {
name string
size int
itemCount int
expectedItems []interface{}
}{
{
name: "no elements",
size: 5,
itemCount: 0,
expectedItems: nil,
},
{
name: "single element",
size: 5,
itemCount: 1,
expectedItems: []interface{}{
0,
},
},
{
name: "no wrap, not full",
size: 5,
itemCount: 4,
expectedItems: []interface{}{
0, 1, 2, 3,
},
},
{
name: "no wrap, exactly full",
size: 5,
itemCount: 5,
expectedItems: []interface{}{
0, 1, 2, 3, 4,
},
},
{
// The underlying array should contain {5, 1, 2, 3, 4}.
name: "wrap, one over",
size: 5,
itemCount: 6,
expectedItems: []interface{}{
1, 2, 3, 4, 5,
},
},
{
// The underlying array should contain {5, 6, 2, 3, 4}.
name: "wrap, two over",
size: 5,
itemCount: 7,
expectedItems: []interface{}{
2, 3, 4, 5, 6,
},
},
}
for _, test := range tests {
test := test
t.Run(test.name, func(t *testing.T) {
t.Parallel()
buffer, err := NewCircularBuffer(test.size)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
for i := 0; i < test.itemCount; i++ {
buffer.Add(i)
}
// List the items in the buffer and check that the list
// is as expected.
list := buffer.List()
if !reflect.DeepEqual(test.expectedItems, list) {
t.Fatalf("expected %v, got: %v",
test.expectedItems, list)
}
})
}
}
// TestLatest tests fetching of the last item added to a circular buffer.
func TestLatest(t *testing.T) {
tests := []struct {
name string
size int
// items is the number of items to add to the buffer.
items int
// expectedItem is the value we expect from Latest().
expectedItem interface{}
}{
{
name: "no items",
size: 3,
items: 0,
expectedItem: nil,
},
{
name: "one item",
size: 3,
items: 1,
expectedItem: 0,
},
{
name: "exactly full",
size: 3,
items: 3,
expectedItem: 2,
},
{
name: "overflow to index 0",
size: 3,
items: 4,
expectedItem: 3,
},
{
name: "overflow twice to index 0",
size: 3,
items: 7,
expectedItem: 6,
},
}
for _, test := range tests {
test := test
t.Run(test.name, func(t *testing.T) {
//t.Parallel()
buffer, err := NewCircularBuffer(test.size)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
for i := 0; i < test.items; i++ {
buffer.Add(i)
}
latest := buffer.Latest()
if !reflect.DeepEqual(latest, test.expectedItem) {
t.Fatalf("expected: %v, got: %v",
test.expectedItem, latest)
}
})
}
}

@ -2459,6 +2459,33 @@ func (r *rpcServer) ListPeers(ctx context.Context,
Features: features,
}
var peerErrors []interface{}
// If we only want the most recent error, get the most recent
// error from the buffer and add it to our list of errors if
// it is non-nil. If we want all the stored errors, simply
// add the full list to our set of errors.
if in.LatestError {
latestErr := serverPeer.errorBuffer.Latest()
if latestErr != nil {
peerErrors = []interface{}{latestErr}
}
} else {
peerErrors = serverPeer.errorBuffer.List()
}
// Add the relevant peer errors to our response.
for _, error := range peerErrors {
tsError := error.(*timestampedError)
rpcErr := &lnrpc.TimestampedError{
Timestamp: uint64(tsError.timestamp.Unix()),
Error: tsError.error.Error(),
}
peer.Errors = append(peer.Errors, rpcErr)
}
resp.Peers = append(resp.Peers, peer)
}

@ -53,6 +53,7 @@ import (
"github.com/lightningnetwork/lnd/netann"
"github.com/lightningnetwork/lnd/peernotifier"
"github.com/lightningnetwork/lnd/pool"
"github.com/lightningnetwork/lnd/queue"
"github.com/lightningnetwork/lnd/routing"
"github.com/lightningnetwork/lnd/routing/localchans"
"github.com/lightningnetwork/lnd/routing/route"
@ -176,6 +177,12 @@ type server struct {
persistentConnReqs map[string][]*connmgr.ConnReq
persistentRetryCancels map[string]chan struct{}
// peerErrors keeps a set of peer error buffers for peers that have
// disconnected from us. This allows us to track historic peer errors
// over connections. The string of the peer's compressed pubkey is used
// as a key for this map.
peerErrors map[string]*queue.CircularBuffer
// ignorePeerTermination tracks peers for which the server has initiated
// a disconnect. Adding a peer to this map causes the peer termination
// watcher to short circuit in the event that peers are purposefully
@ -425,6 +432,7 @@ func newServer(listenAddrs []net.Addr, chanDB *channeldb.DB,
persistentPeersBackoff: make(map[string]time.Duration),
persistentConnReqs: make(map[string][]*connmgr.ConnReq),
persistentRetryCancels: make(map[string]chan struct{}),
peerErrors: make(map[string]*queue.CircularBuffer),
ignorePeerTermination: make(map[*peer]struct{}),
scheduledPeerConnection: make(map[string]func()),
@ -2782,6 +2790,19 @@ func (s *server) peerConnected(conn net.Conn, connReq *connmgr.ConnReq,
initFeatures := s.featureMgr.Get(feature.SetInit)
legacyFeatures := s.featureMgr.Get(feature.SetLegacyGlobal)
// Lookup past error caches for the peer in the server. If no buffer is
// found, create a fresh buffer.
pkStr := string(peerAddr.IdentityKey.SerializeCompressed())
errBuffer, ok := s.peerErrors[pkStr]
if !ok {
var err error
errBuffer, err = queue.NewCircularBuffer(errorBufferSize)
if err != nil {
srvrLog.Errorf("unable to create peer %v", err)
return
}
}
// Now that we've established a connection, create a peer, and it to the
// set of currently active peers. Configure the peer with the incoming
// and outgoing broadcast deltas to prevent htlcs from being accepted or
@ -2791,7 +2812,7 @@ func (s *server) peerConnected(conn net.Conn, connReq *connmgr.ConnReq,
p, err := newPeer(
conn, connReq, s, peerAddr, inbound, initFeatures,
legacyFeatures, cfg.ChanEnableTimeout,
defaultOutgoingCltvRejectDelta,
defaultOutgoingCltvRejectDelta, errBuffer,
)
if err != nil {
srvrLog.Errorf("unable to create peer %v", err)
@ -2803,6 +2824,11 @@ func (s *server) peerConnected(conn net.Conn, connReq *connmgr.ConnReq,
s.addPeer(p)
// Once we have successfully added the peer to the server, we can
// delete the previous error buffer from the server's map of error
// buffers.
delete(s.peerErrors, pkStr)
// Dispatch a goroutine to asynchronously start the peer. This process
// includes sending and receiving Init messages, which would be a DOS
// vector if we held the server's mutex throughout the procedure.
@ -3097,6 +3123,12 @@ func (s *server) removePeer(p *peer) {
delete(s.outboundPeers, pubStr)
}
// Copy the peer's error buffer across to the server if it has any items
// in it so that we can restore peer errors across connections.
if p.errorBuffer.Total() > 0 {
s.peerErrors[pubStr] = p.errorBuffer
}
// Inform the peer notifier of a peer offline event so that it can be
// reported to clients listening for peer events.
var pubKey [33]byte