looprpc: add autoloop parameters to rpc server

pull/295/head
carla 4 years ago
parent 8166d936e1
commit eb6b476469
No known key found for this signature in database
GPG Key ID: 4CA7FE54A6213C91

@ -362,6 +362,8 @@ type Manager struct {
} }
// Run periodically checks whether we should automatically dispatch a loop out. // Run periodically checks whether we should automatically dispatch a loop out.
// We run this loop even if automated swaps are not currently enabled rather
// than managing starting and stopping the ticker as our parameters are updated.
func (m *Manager) Run(ctx context.Context) error { func (m *Manager) Run(ctx context.Context) error {
m.cfg.AutoOutTicker.Resume() m.cfg.AutoOutTicker.Resume()
defer m.cfg.AutoOutTicker.Stop() defer m.cfg.AutoOutTicker.Stop()

@ -578,11 +578,22 @@ func (s *swapClientServer) GetLiquidityParams(_ context.Context,
SweepFeeRateSatPerVbyte: uint64(satPerByte), SweepFeeRateSatPerVbyte: uint64(satPerByte),
SweepConfTarget: cfg.SweepConfTarget, SweepConfTarget: cfg.SweepConfTarget,
FailureBackoffSec: uint64(cfg.FailureBackOff.Seconds()), FailureBackoffSec: uint64(cfg.FailureBackOff.Seconds()),
AutoLoopOut: cfg.AutoOut,
AutoOutBudgetSat: uint64(cfg.AutoFeeBudget),
AutoMaxInFlight: uint64(cfg.MaxAutoInFlight),
Rules: make( Rules: make(
[]*looprpc.LiquidityRule, 0, len(cfg.ChannelRules), []*looprpc.LiquidityRule, 0, len(cfg.ChannelRules),
), ),
} }
// Zero golang time is different to a zero unix time, so we only set
// our start date if it is non-zero.
if !cfg.AutoFeeStartDate.IsZero() {
rpcCfg.AutoOutBudgetStartSec = uint64(
cfg.AutoFeeStartDate.Unix(),
)
}
for channel, rule := range cfg.ChannelRules { for channel, rule := range cfg.ChannelRules {
rpcRule := &looprpc.LiquidityRule{ rpcRule := &looprpc.LiquidityRule{
ChannelId: channel.ToUint64(), ChannelId: channel.ToUint64(),
@ -617,12 +628,22 @@ func (s *swapClientServer) SetLiquidityParams(_ context.Context,
SweepConfTarget: in.Parameters.SweepConfTarget, SweepConfTarget: in.Parameters.SweepConfTarget,
FailureBackOff: time.Duration(in.Parameters.FailureBackoffSec) * FailureBackOff: time.Duration(in.Parameters.FailureBackoffSec) *
time.Second, time.Second,
AutoOut: in.Parameters.AutoLoopOut,
AutoFeeBudget: btcutil.Amount(in.Parameters.AutoOutBudgetSat),
MaxAutoInFlight: int(in.Parameters.AutoMaxInFlight),
ChannelRules: make( ChannelRules: make(
map[lnwire.ShortChannelID]*liquidity.ThresholdRule, map[lnwire.ShortChannelID]*liquidity.ThresholdRule,
len(in.Parameters.Rules), len(in.Parameters.Rules),
), ),
} }
// Zero unix time is different to zero golang time.
if in.Parameters.AutoOutBudgetStartSec != 0 {
params.AutoFeeStartDate = time.Unix(
int64(in.Parameters.AutoOutBudgetStartSec), 0,
)
}
for _, rule := range in.Parameters.Rules { for _, rule := range in.Parameters.Rules {
var ( var (
shortID = lnwire.NewShortChanIDFromInt(rule.ChannelId) shortID = lnwire.NewShortChanIDFromInt(rule.ChannelId)

@ -1579,7 +1579,26 @@ type LiquidityParameters struct {
//The amount of time we require pass since a channel was part of a failed //The amount of time we require pass since a channel was part of a failed
//swap due to off chain payment failure until it will be considered for swap //swap due to off chain payment failure until it will be considered for swap
//suggestions again, expressed in seconds. //suggestions again, expressed in seconds.
FailureBackoffSec uint64 `protobuf:"varint,9,opt,name=failure_backoff_sec,json=failureBackoffSec,proto3" json:"failure_backoff_sec,omitempty"` FailureBackoffSec uint64 `protobuf:"varint,9,opt,name=failure_backoff_sec,json=failureBackoffSec,proto3" json:"failure_backoff_sec,omitempty"`
//
//Set to true to enable automatic dispatch of loop out swaps. All swaps will
//be limited to the fee categories set by these parameters, and total
//expenditure will be limited to the auto out budget.
AutoLoopOut bool `protobuf:"varint,10,opt,name=auto_loop_out,json=autoLoopOut,proto3" json:"auto_loop_out,omitempty"`
//
//The total budget for automatically dispatched swaps since the budget start
//time, expressed in satoshis.
AutoOutBudgetSat uint64 `protobuf:"varint,11,opt,name=auto_out_budget_sat,json=autoOutBudgetSat,proto3" json:"auto_out_budget_sat,omitempty"`
//
//The start time for auto-out budget, expressed as a unix timestamp in
//seconds. If this value is 0, the budget will be applied for all
//automatically dispatched swaps. Swaps that were completed before this date
//will not be included in budget calculations.
AutoOutBudgetStartSec uint64 `protobuf:"varint,12,opt,name=auto_out_budget_start_sec,json=autoOutBudgetStartSec,proto3" json:"auto_out_budget_start_sec,omitempty"`
//
//The maximum number of automatically dispatched swaps that we allow to be in
//flight at any point in time.
AutoMaxInFlight uint64 `protobuf:"varint,13,opt,name=auto_max_in_flight,json=autoMaxInFlight,proto3" json:"auto_max_in_flight,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -1673,6 +1692,34 @@ func (m *LiquidityParameters) GetFailureBackoffSec() uint64 {
return 0 return 0
} }
func (m *LiquidityParameters) GetAutoLoopOut() bool {
if m != nil {
return m.AutoLoopOut
}
return false
}
func (m *LiquidityParameters) GetAutoOutBudgetSat() uint64 {
if m != nil {
return m.AutoOutBudgetSat
}
return 0
}
func (m *LiquidityParameters) GetAutoOutBudgetStartSec() uint64 {
if m != nil {
return m.AutoOutBudgetStartSec
}
return 0
}
func (m *LiquidityParameters) GetAutoMaxInFlight() uint64 {
if m != nil {
return m.AutoMaxInFlight
}
return 0
}
type LiquidityRule struct { type LiquidityRule struct {
// //
//The short channel ID of the channel that this rule should be applied to. //The short channel ID of the channel that this rule should be applied to.
@ -1930,150 +1977,155 @@ func init() {
func init() { proto.RegisterFile("client.proto", fileDescriptor_014de31d7ac8c57c) } func init() { proto.RegisterFile("client.proto", fileDescriptor_014de31d7ac8c57c) }
var fileDescriptor_014de31d7ac8c57c = []byte{ var fileDescriptor_014de31d7ac8c57c = []byte{
// 2280 bytes of a gzipped FileDescriptorProto // 2365 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xcf, 0x6f, 0x22, 0xc9, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0xcd, 0x6e, 0x23, 0xc7,
0xf5, 0x1f, 0xa0, 0x31, 0xf0, 0x68, 0xa0, 0x5d, 0x9e, 0xb1, 0x31, 0xeb, 0xd5, 0x7a, 0x7a, 0x76, 0xf1, 0x5f, 0x7e, 0x89, 0x64, 0xf1, 0x6b, 0xd4, 0xda, 0x95, 0x28, 0x5a, 0x86, 0xb5, 0x63, 0xef,
0xbe, 0xeb, 0xf1, 0x77, 0xc7, 0x64, 0xbd, 0xa7, 0x8c, 0x76, 0x23, 0x31, 0x18, 0xaf, 0x71, 0x6c, 0xdf, 0xb2, 0x6c, 0x2f, 0xff, 0x96, 0x2f, 0x89, 0x61, 0x07, 0xd0, 0x52, 0x94, 0xc5, 0x8d, 0x44,
0x20, 0x0d, 0x9e, 0xd5, 0x44, 0x91, 0x5a, 0x65, 0x28, 0xdb, 0xad, 0xa5, 0x7f, 0x4c, 0x77, 0x31, 0x32, 0x43, 0x6a, 0x0d, 0x07, 0x01, 0x06, 0x2d, 0xb2, 0x25, 0x0d, 0xcc, 0xf9, 0xd8, 0x99, 0xe6,
0x63, 0x6b, 0x95, 0x44, 0xca, 0x3f, 0xb0, 0x87, 0xfc, 0x07, 0xf9, 0x1b, 0x72, 0x4b, 0x6e, 0xb9, 0xae, 0x04, 0x23, 0x09, 0x90, 0x17, 0xf0, 0x21, 0x6f, 0x90, 0x67, 0xc8, 0x2d, 0x79, 0x84, 0x9c,
0xe6, 0x94, 0x1c, 0x73, 0x8d, 0x14, 0xe5, 0x90, 0xff, 0x21, 0xaa, 0x57, 0xdd, 0x4d, 0x37, 0x06, 0x92, 0x63, 0xae, 0x01, 0x82, 0x1c, 0xf2, 0x08, 0x01, 0x82, 0xaa, 0x9e, 0x19, 0xce, 0x50, 0x94,
0x47, 0x39, 0xe4, 0x46, 0xbf, 0xf7, 0xa9, 0x57, 0xf5, 0x7e, 0xd6, 0xa7, 0x00, 0x75, 0x3c, 0xb5, 0x82, 0x1c, 0x72, 0xe3, 0x54, 0xfd, 0xba, 0xba, 0xeb, 0xbb, 0x8a, 0x50, 0x9d, 0xcc, 0x2c, 0xe1,
0x98, 0xc3, 0x0f, 0x3c, 0xdf, 0xe5, 0x2e, 0x29, 0x4c, 0x5d, 0xd7, 0xf3, 0xbd, 0x71, 0x63, 0xe7, 0xc8, 0xe7, 0x9e, 0xef, 0x4a, 0x97, 0x15, 0x67, 0xae, 0xeb, 0xf9, 0xde, 0xa4, 0xb5, 0x73, 0xe5,
0xda, 0x75, 0xaf, 0xa7, 0xac, 0x49, 0x3d, 0xab, 0x49, 0x1d, 0xc7, 0xe5, 0x94, 0x5b, 0xae, 0x13, 0xba, 0x57, 0x33, 0xd1, 0xe6, 0x9e, 0xd5, 0xe6, 0x8e, 0xe3, 0x4a, 0x2e, 0x2d, 0xd7, 0x09, 0x14,
0x48, 0x98, 0xfe, 0x83, 0x02, 0xd5, 0x33, 0xd7, 0xf5, 0xfa, 0x33, 0x6e, 0xb0, 0x77, 0x33, 0x16, 0x4c, 0xff, 0x21, 0x0f, 0xf5, 0x53, 0xd7, 0xf5, 0x06, 0x73, 0x69, 0x88, 0xd7, 0x73, 0x11, 0x48,
0x70, 0xa2, 0x41, 0x8e, 0xda, 0xbc, 0x9e, 0xd9, 0xcd, 0xec, 0xe5, 0x0c, 0xf1, 0x93, 0x10, 0x50, 0xa6, 0x41, 0x8e, 0xdb, 0xb2, 0x99, 0xd9, 0xcd, 0xec, 0xe5, 0x0c, 0xfc, 0xc9, 0x18, 0xe4, 0xa7,
0x26, 0x2c, 0xe0, 0xf5, 0xec, 0x6e, 0x66, 0xaf, 0x64, 0xe0, 0x6f, 0xd2, 0x84, 0xc7, 0x36, 0xbd, 0x22, 0x90, 0xcd, 0xec, 0x6e, 0x66, 0xaf, 0x6c, 0xd0, 0x6f, 0xd6, 0x86, 0xc7, 0x36, 0xbf, 0x31,
0x35, 0x83, 0x0f, 0xd4, 0x33, 0x7d, 0x77, 0xc6, 0x2d, 0xe7, 0xda, 0xbc, 0x62, 0xac, 0x9e, 0xc3, 0x83, 0xb7, 0xdc, 0x33, 0x7d, 0x77, 0x2e, 0x2d, 0xe7, 0xca, 0xbc, 0x14, 0xa2, 0x99, 0xa3, 0x63,
0x65, 0xeb, 0x36, 0xbd, 0x1d, 0x7e, 0xa0, 0x9e, 0x21, 0x35, 0xc7, 0x8c, 0x91, 0x2f, 0x61, 0x53, 0xeb, 0x36, 0xbf, 0x19, 0xbd, 0xe5, 0x9e, 0xa1, 0x38, 0xc7, 0x42, 0xb0, 0xcf, 0x61, 0x13, 0x0f,
0x2c, 0xf0, 0x7c, 0xe6, 0xd1, 0xbb, 0xd4, 0x12, 0x05, 0x97, 0x6c, 0xd8, 0xf4, 0x76, 0x80, 0xca, 0x78, 0xbe, 0xf0, 0xf8, 0x6d, 0xea, 0x48, 0x9e, 0x8e, 0x6c, 0xd8, 0xfc, 0x66, 0x48, 0xcc, 0xc4,
0xc4, 0xa2, 0x5d, 0x50, 0xe3, 0x5d, 0x04, 0x34, 0x8f, 0x50, 0x08, 0xad, 0x0b, 0xc4, 0xa7, 0x50, 0xa1, 0x5d, 0xa8, 0xc6, 0xb7, 0x20, 0xb4, 0x40, 0x50, 0x08, 0xa5, 0x23, 0xe2, 0x03, 0xa8, 0x27,
0x4d, 0x98, 0x15, 0x07, 0x5f, 0x43, 0x8c, 0x1a, 0x9b, 0x6b, 0xd9, 0x9c, 0xe8, 0x50, 0x11, 0x28, 0xc4, 0xe2, 0xc3, 0xd7, 0x08, 0x53, 0x8d, 0xc5, 0x1d, 0xda, 0x92, 0xe9, 0x50, 0x43, 0x94, 0x6d,
0xdb, 0x72, 0x98, 0x8f, 0x86, 0x0a, 0x08, 0x2a, 0xdb, 0xf4, 0xf6, 0x5c, 0xc8, 0x84, 0xa5, 0xcf, 0x39, 0xc2, 0x27, 0x41, 0x45, 0x02, 0x55, 0x6c, 0x7e, 0x73, 0x86, 0x34, 0x94, 0xf4, 0x09, 0x68,
0x41, 0x13, 0x31, 0x33, 0xdd, 0x19, 0x37, 0xc7, 0x37, 0xd4, 0x71, 0xd8, 0xb4, 0x5e, 0xdc, 0xcd, 0x68, 0x33, 0xd3, 0x9d, 0x4b, 0x73, 0x72, 0xcd, 0x1d, 0x47, 0xcc, 0x9a, 0xa5, 0xdd, 0xcc, 0x5e,
0xec, 0x29, 0xaf, 0xb3, 0xf5, 0x8c, 0x51, 0x9d, 0xca, 0x28, 0xb5, 0xa5, 0x86, 0xec, 0xc3, 0xba, 0xfe, 0x45, 0xb6, 0x99, 0x31, 0xea, 0x33, 0x65, 0xa5, 0x8e, 0xe2, 0xb0, 0x7d, 0x58, 0x77, 0xe7,
0x3b, 0xe3, 0xd7, 0xae, 0x70, 0x42, 0xa0, 0xcd, 0x80, 0xf1, 0x7a, 0x79, 0x37, 0xb7, 0xa7, 0x18, 0xf2, 0xca, 0x45, 0x25, 0x10, 0x6d, 0x06, 0x42, 0x36, 0x2b, 0xbb, 0xb9, 0xbd, 0xbc, 0xd1, 0x88,
0xb5, 0x48, 0x21, 0xb0, 0x43, 0xc6, 0x05, 0x36, 0xf8, 0xc0, 0x98, 0x67, 0x8e, 0x5d, 0xe7, 0xca, 0x18, 0x88, 0x1d, 0x09, 0x89, 0xd8, 0xe0, 0xad, 0x10, 0x9e, 0x39, 0x71, 0x9d, 0x4b, 0x53, 0x72,
0xe4, 0xd4, 0xbf, 0x66, 0xbc, 0x5e, 0xda, 0xcd, 0xec, 0xe5, 0x8d, 0x1a, 0x2a, 0xda, 0xae, 0x73, 0xff, 0x4a, 0xc8, 0x66, 0x79, 0x37, 0xb3, 0x57, 0x30, 0x1a, 0xc4, 0xe8, 0xb8, 0xce, 0xe5, 0x98,
0x35, 0x42, 0x31, 0x79, 0x09, 0xe4, 0x86, 0x4f, 0xc7, 0x08, 0xb5, 0x7c, 0x5b, 0x26, 0xab, 0x5e, 0xc8, 0xec, 0x53, 0x60, 0xd7, 0x72, 0x36, 0x21, 0xa8, 0xe5, 0xdb, 0xca, 0x59, 0xcd, 0x1a, 0x81,
0x41, 0xf0, 0xba, 0xd0, 0xb4, 0x93, 0x0a, 0xf2, 0x0a, 0xb6, 0x31, 0x38, 0xde, 0xec, 0x72, 0x6a, 0xd7, 0x91, 0xd3, 0x49, 0x32, 0xd8, 0x17, 0xb0, 0x4d, 0xc6, 0xf1, 0xe6, 0x17, 0x33, 0x6b, 0x42,
0x8d, 0x51, 0x68, 0x4e, 0x18, 0x9d, 0x4c, 0x2d, 0x87, 0xd5, 0x41, 0x9c, 0xde, 0xd8, 0x12, 0x80, 0x44, 0x73, 0x2a, 0xf8, 0x74, 0x66, 0x39, 0xa2, 0x09, 0xf8, 0x7a, 0x63, 0x0b, 0x01, 0xc3, 0x05,
0xc1, 0x5c, 0x7f, 0x14, 0xaa, 0xc9, 0x63, 0xc8, 0x4f, 0xe9, 0x25, 0x9b, 0xd6, 0x55, 0xcc, 0xab, 0xff, 0x28, 0x64, 0xb3, 0xc7, 0x50, 0x98, 0xf1, 0x0b, 0x31, 0x6b, 0x56, 0xc9, 0xaf, 0xea, 0x43,
0xfc, 0xd0, 0xff, 0x91, 0x81, 0x8a, 0xa8, 0x88, 0xae, 0xb3, 0xba, 0x20, 0x16, 0xd3, 0x92, 0xbd, 0xff, 0x7b, 0x06, 0x6a, 0x18, 0x11, 0x3d, 0xe7, 0xfe, 0x80, 0x58, 0x76, 0x4b, 0xf6, 0x8e, 0x5b,
0x97, 0x96, 0x7b, 0x01, 0xcf, 0xdd, 0x0f, 0xf8, 0x36, 0x14, 0xa7, 0x34, 0xe0, 0xe6, 0x8d, 0xeb, 0xee, 0x18, 0x3c, 0x77, 0xd7, 0xe0, 0xdb, 0x50, 0x9a, 0xf1, 0x40, 0x9a, 0xd7, 0xae, 0x47, 0x31,
0x61, 0x0d, 0xa8, 0x46, 0x41, 0x7c, 0x9f, 0xb8, 0x1e, 0x79, 0x06, 0x15, 0x76, 0xcb, 0x99, 0xef, 0x50, 0x35, 0x8a, 0xf8, 0x7d, 0xe2, 0x7a, 0xec, 0x7d, 0xa8, 0x89, 0x1b, 0x29, 0x7c, 0x87, 0xcf,
0xd0, 0xa9, 0x29, 0x9c, 0xc6, 0xc4, 0x17, 0x0d, 0x35, 0x12, 0x9e, 0xf0, 0xe9, 0x98, 0xec, 0x81, 0x4c, 0x54, 0x9a, 0x1c, 0x5f, 0x32, 0xaa, 0x11, 0xf1, 0x44, 0xce, 0x26, 0x6c, 0x0f, 0xb4, 0xd8,
0x16, 0x87, 0x2a, 0x8a, 0xea, 0x1a, 0x06, 0xaa, 0x1a, 0x05, 0x2a, 0x0c, 0x6a, 0xec, 0x69, 0x21, 0x54, 0x91, 0x55, 0xd7, 0xc8, 0x50, 0xf5, 0xc8, 0x50, 0xa1, 0x51, 0x63, 0x4d, 0x8b, 0x49, 0x4d,
0xe9, 0xe9, 0x3f, 0x33, 0xa0, 0x62, 0x91, 0xb2, 0xc0, 0x73, 0x9d, 0x80, 0x11, 0x02, 0x59, 0x6b, 0xff, 0x91, 0x81, 0x2a, 0x05, 0xa9, 0x08, 0x3c, 0xd7, 0x09, 0x04, 0x63, 0x90, 0xb5, 0xa6, 0xa4,
0x82, 0x7e, 0x96, 0x30, 0xe7, 0x59, 0x6b, 0x22, 0x0e, 0x69, 0x4d, 0xcc, 0xcb, 0x3b, 0xce, 0x02, 0x67, 0x99, 0x7c, 0x9e, 0xb5, 0xa6, 0xf8, 0x48, 0x6b, 0x6a, 0x5e, 0xdc, 0x4a, 0x11, 0x90, 0x0e,
0xf4, 0x41, 0x35, 0x0a, 0xd6, 0xe4, 0xb5, 0xf8, 0x24, 0xcf, 0x41, 0xc5, 0xfd, 0xe9, 0x64, 0xe2, 0x55, 0xa3, 0x68, 0x4d, 0x5f, 0xe0, 0x27, 0x7b, 0x06, 0x55, 0xba, 0x9f, 0x4f, 0xa7, 0xbe, 0x08,
0xb3, 0x20, 0x90, 0xed, 0x81, 0x0b, 0xcb, 0x42, 0xde, 0x92, 0x62, 0x72, 0x00, 0x1b, 0x49, 0x98, 0x02, 0x95, 0x1e, 0x74, 0xb0, 0x82, 0xf4, 0x43, 0x45, 0x66, 0xcf, 0x61, 0x23, 0x09, 0x33, 0x1d,
0xe9, 0x78, 0x87, 0x1f, 0x82, 0x1b, 0xf4, 0xb8, 0x24, 0x53, 0x1a, 0x22, 0x7b, 0xa8, 0x20, 0x9f, 0xef, 0xe0, 0x6d, 0x70, 0x4d, 0x1a, 0x97, 0x95, 0x4b, 0x43, 0x64, 0x9f, 0x18, 0xec, 0x93, 0x30,
0x87, 0x15, 0x10, 0xe1, 0x25, 0x3c, 0x8f, 0x70, 0x2d, 0x01, 0x1f, 0x20, 0xfa, 0x39, 0x54, 0x03, 0x02, 0x22, 0xbc, 0x82, 0x17, 0x08, 0xae, 0x25, 0xe0, 0x43, 0x42, 0x3f, 0x83, 0x7a, 0x20, 0xfc,
0xe6, 0xbf, 0x67, 0xbe, 0x69, 0xb3, 0x20, 0xa0, 0xd7, 0x0c, 0x43, 0x50, 0x32, 0x2a, 0x52, 0x7a, 0x37, 0xc2, 0x37, 0x6d, 0x11, 0x04, 0xfc, 0x4a, 0x90, 0x09, 0xca, 0x46, 0x4d, 0x51, 0xcf, 0x14,
0x2e, 0x85, 0xba, 0x06, 0xd5, 0x73, 0xd7, 0xb1, 0xb8, 0xeb, 0x87, 0x59, 0xd5, 0x7f, 0xaf, 0x00, 0x51, 0xd7, 0xa0, 0x7e, 0xe6, 0x3a, 0x96, 0x74, 0xfd, 0xd0, 0xab, 0xfa, 0xef, 0xf3, 0x00, 0xa8,
0x08, 0xef, 0x87, 0x9c, 0xf2, 0x59, 0xb0, 0xb4, 0xeb, 0x45, 0x34, 0xb2, 0x2b, 0xa3, 0x51, 0x5e, 0xfd, 0x48, 0x72, 0x39, 0x0f, 0x56, 0x66, 0x3d, 0x5a, 0x23, 0x7b, 0xaf, 0x35, 0x2a, 0xcb, 0xd6,
0x8c, 0x86, 0xc2, 0xef, 0x3c, 0x99, 0xe8, 0xea, 0xe1, 0xfa, 0x41, 0x38, 0x7f, 0x0e, 0xc4, 0x1e, 0xc8, 0xcb, 0x5b, 0x4f, 0x39, 0xba, 0x7e, 0xb0, 0xfe, 0x3c, 0xac, 0x3f, 0xcf, 0xf1, 0x8e, 0xf1,
0xa3, 0x3b, 0x8f, 0x19, 0xa8, 0x26, 0x7b, 0x90, 0x0f, 0x38, 0xe5, 0xb2, 0xeb, 0xab, 0x87, 0x24, 0xad, 0x27, 0x0c, 0x62, 0xb3, 0x3d, 0x28, 0x04, 0x92, 0x4b, 0x95, 0xf5, 0xf5, 0x03, 0x96, 0xc2,
0x85, 0x13, 0x67, 0x61, 0x86, 0x04, 0x90, 0xaf, 0xa1, 0x7a, 0x45, 0xad, 0xe9, 0xcc, 0x67, 0xa6, 0xe1, 0x5b, 0x84, 0xa1, 0x00, 0xec, 0x2b, 0xa8, 0x5f, 0x72, 0x6b, 0x36, 0xf7, 0x85, 0xe9, 0x0b,
0xcf, 0x68, 0xe0, 0x3a, 0xf5, 0x2a, 0x2e, 0xd9, 0x8c, 0x97, 0x1c, 0x4b, 0xb5, 0x81, 0x5a, 0xa3, 0x1e, 0xb8, 0x4e, 0xb3, 0x4e, 0x47, 0x36, 0xe3, 0x23, 0xc7, 0x8a, 0x6d, 0x10, 0xd7, 0xa8, 0x5d,
0x72, 0x95, 0xfc, 0x24, 0x9f, 0x41, 0xcd, 0x72, 0x2c, 0x6e, 0xc9, 0x9e, 0xe0, 0x96, 0x1d, 0x4d, 0x26, 0x3f, 0xd9, 0x87, 0xd0, 0xb0, 0x1c, 0x4b, 0x5a, 0x2a, 0x27, 0xa4, 0x65, 0x47, 0xd5, 0xa3,
0x8f, 0xea, 0x5c, 0x3c, 0xb2, 0x6c, 0x71, 0x22, 0x0d, 0xcb, 0x70, 0xe6, 0x4d, 0x28, 0x67, 0x12, 0xbe, 0x20, 0x8f, 0x2d, 0x1b, 0x5f, 0xa4, 0x51, 0x18, 0xce, 0xbd, 0x29, 0x97, 0x42, 0x21, 0x55,
0x29, 0x67, 0x48, 0x55, 0xc8, 0x2f, 0x50, 0x8c, 0xc8, 0xc5, 0x84, 0x17, 0x96, 0x27, 0x7c, 0x79, 0x0d, 0xa9, 0x23, 0xfd, 0x9c, 0xc8, 0x84, 0x5c, 0x76, 0x78, 0x71, 0xb5, 0xc3, 0x57, 0x3b, 0xb0,
0x02, 0xd5, 0x15, 0x09, 0x5c, 0x51, 0x1e, 0x95, 0x55, 0xe5, 0xf1, 0x09, 0x94, 0xc7, 0x6e, 0xc0, 0x7a, 0x8f, 0x03, 0xef, 0x09, 0x8f, 0xda, 0x7d, 0xe1, 0xf1, 0x1e, 0x54, 0x26, 0x6e, 0x20, 0x4d,
0x4d, 0x99, 0x5f, 0x9c, 0x50, 0x39, 0x03, 0x84, 0x68, 0x88, 0x12, 0xf2, 0x14, 0x54, 0x04, 0xb8, 0xe5, 0x5f, 0xaa, 0x50, 0x39, 0x03, 0x90, 0x34, 0x22, 0x0a, 0x7b, 0x0a, 0x55, 0x02, 0xb8, 0xce,
0xce, 0xf8, 0x86, 0x5a, 0x0e, 0x0e, 0x9a, 0x9c, 0x81, 0x8b, 0xfa, 0x52, 0x24, 0xda, 0x4b, 0x42, 0xe4, 0x9a, 0x5b, 0x0e, 0x15, 0x9a, 0x9c, 0x41, 0x87, 0x06, 0x8a, 0x84, 0xe9, 0xa5, 0x20, 0x97,
0xae, 0xae, 0x24, 0x06, 0xe4, 0xcc, 0x44, 0x4c, 0x28, 0x9b, 0x37, 0x4d, 0x2d, 0xd9, 0x34, 0x04, 0x97, 0x0a, 0x03, 0xaa, 0x66, 0x12, 0x26, 0xa4, 0x2d, 0x92, 0xa6, 0x91, 0x4c, 0x1a, 0x06, 0xda,
0xb4, 0x33, 0x2b, 0xe0, 0x22, 0x5b, 0x41, 0x54, 0x4a, 0x3f, 0x81, 0xf5, 0x84, 0x2c, 0x6c, 0xa6, 0xa9, 0x15, 0x48, 0xf4, 0x56, 0x10, 0x85, 0xd2, 0x4f, 0x60, 0x3d, 0x41, 0x0b, 0x93, 0xe9, 0x23,
0x17, 0x90, 0x17, 0xf3, 0x21, 0xa8, 0x67, 0x76, 0x73, 0x7b, 0xe5, 0xc3, 0x8d, 0x7b, 0x89, 0x9e, 0x28, 0x60, 0x7d, 0x08, 0x9a, 0x99, 0xdd, 0xdc, 0x5e, 0xe5, 0x60, 0xe3, 0x8e, 0xa3, 0xe7, 0x81,
0x05, 0x86, 0x44, 0xe8, 0x4f, 0xa1, 0x26, 0x84, 0x5d, 0xe7, 0xca, 0x8d, 0x66, 0x4e, 0x35, 0x6e, 0xa1, 0x10, 0xfa, 0x53, 0x68, 0x20, 0xb1, 0xe7, 0x5c, 0xba, 0x51, 0xcd, 0xa9, 0xc7, 0xa9, 0x58,
0x45, 0x55, 0x14, 0x9e, 0x5e, 0x05, 0x75, 0xc4, 0x7c, 0x3b, 0xde, 0xf2, 0xd7, 0x50, 0xeb, 0x3a, 0xc5, 0xc0, 0xd3, 0xeb, 0x50, 0x1d, 0x0b, 0xdf, 0x8e, 0xaf, 0xfc, 0x35, 0x34, 0x7a, 0x4e, 0x48,
0xa1, 0x24, 0xdc, 0xf0, 0xff, 0xa0, 0x66, 0x5b, 0x8e, 0x1c, 0x4a, 0xd4, 0x76, 0x67, 0x0e, 0x0f, 0x09, 0x2f, 0xfc, 0x3f, 0x68, 0xd8, 0x96, 0xa3, 0x8a, 0x12, 0xb7, 0xdd, 0xb9, 0x23, 0x43, 0x87,
0x13, 0x5e, 0xb1, 0x2d, 0x47, 0xd8, 0x6f, 0xa1, 0x10, 0x71, 0xd1, 0xf0, 0x0a, 0x71, 0x6b, 0x21, 0xd7, 0x6c, 0xcb, 0x41, 0xf9, 0x87, 0x44, 0x24, 0x5c, 0x54, 0xbc, 0x42, 0xdc, 0x5a, 0x88, 0x53,
0x4e, 0xce, 0x2f, 0x89, 0x3b, 0x55, 0x8a, 0x19, 0x2d, 0x7b, 0xaa, 0x14, 0xb3, 0x5a, 0xee, 0x54, 0xf5, 0x4b, 0xe1, 0x5e, 0xe6, 0x4b, 0x19, 0x2d, 0xfb, 0x32, 0x5f, 0xca, 0x6a, 0xb9, 0x97, 0xf9,
0x29, 0xe6, 0x34, 0xe5, 0x54, 0x29, 0x2a, 0x5a, 0xfe, 0x54, 0x29, 0x16, 0xb4, 0xa2, 0xfe, 0xe7, 0x52, 0x4e, 0xcb, 0xbf, 0xcc, 0x97, 0xf2, 0x5a, 0xe1, 0x65, 0xbe, 0x54, 0xd4, 0x4a, 0xfa, 0x9f,
0x0c, 0x68, 0xfd, 0x19, 0xff, 0x9f, 0x1e, 0x01, 0x2f, 0x37, 0xcb, 0x31, 0xc7, 0x53, 0xfe, 0xde, 0x32, 0xa0, 0x0d, 0xe6, 0xf2, 0x7f, 0xfa, 0x04, 0x6a, 0x6e, 0x96, 0x63, 0x4e, 0x66, 0xf2, 0x8d,
0x9c, 0xb0, 0x29, 0xa7, 0x98, 0xee, 0xbc, 0xa1, 0xda, 0x96, 0xd3, 0x9e, 0xf2, 0xf7, 0x47, 0x42, 0x39, 0x15, 0x33, 0xc9, 0xc9, 0xdd, 0x05, 0xa3, 0x6a, 0x5b, 0x4e, 0x67, 0x26, 0xdf, 0x1c, 0x21,
0x16, 0x5d, 0x81, 0x09, 0x54, 0x29, 0x44, 0xd1, 0xdb, 0x18, 0xf5, 0x1f, 0xdc, 0xf9, 0x5d, 0x06, 0x2d, 0x6a, 0x81, 0x09, 0x54, 0x39, 0x44, 0xf1, 0x9b, 0x18, 0xf5, 0x1f, 0xd4, 0xf9, 0x5d, 0x06,
0xd4, 0x9f, 0xcd, 0x5c, 0xce, 0x56, 0x0f, 0x7d, 0x2c, 0xbc, 0xf9, 0xa4, 0xcd, 0xe2, 0x1e, 0x30, 0xaa, 0x3f, 0x9b, 0xbb, 0x52, 0xdc, 0x5f, 0xf4, 0x29, 0xf0, 0x16, 0x95, 0x36, 0x4b, 0x77, 0xc0,
0x9e, 0x4f, 0xd9, 0x7b, 0x43, 0x3b, 0xb7, 0x64, 0x68, 0x3f, 0x78, 0x61, 0x29, 0x0f, 0x5e, 0x58, 0x64, 0x51, 0x65, 0xef, 0x14, 0xed, 0xdc, 0x8a, 0xa2, 0xfd, 0x60, 0xc3, 0xca, 0x3f, 0xd8, 0xb0,
0xfa, 0x0f, 0x19, 0x91, 0xf5, 0xf0, 0x98, 0x61, 0xc8, 0x77, 0x41, 0x8d, 0xae, 0x21, 0x33, 0xa0, 0xf4, 0x1f, 0x32, 0xe8, 0xf5, 0xf0, 0x99, 0xa1, 0xc9, 0x77, 0xa1, 0x1a, 0xb5, 0x21, 0x33, 0xe0,
0xd1, 0x81, 0x21, 0x90, 0xf7, 0xd0, 0x90, 0x22, 0x53, 0xc1, 0x06, 0xc3, 0x1d, 0x83, 0x9b, 0x18, 0xd1, 0x83, 0x21, 0x50, 0x7d, 0x68, 0xc4, 0x69, 0x52, 0xa1, 0x04, 0xa3, 0x1b, 0x83, 0xeb, 0x18,
0x19, 0x32, 0x15, 0xa1, 0x1b, 0x48, 0x55, 0xb8, 0xe0, 0x63, 0x80, 0x44, 0x2c, 0xf3, 0xe8, 0x67, 0x19, 0x4e, 0x2a, 0xc8, 0x1b, 0x2a, 0x56, 0x78, 0xe0, 0x5d, 0x80, 0x84, 0x2d, 0x0b, 0xa4, 0x67,
0x69, 0x9c, 0x08, 0xa4, 0x0c, 0xa1, 0xa2, 0xe5, 0xf5, 0xbf, 0xc8, 0x2a, 0xf8, 0x6f, 0x8f, 0xf4, 0x79, 0x92, 0x30, 0xa4, 0x32, 0x61, 0x5e, 0x2b, 0xe8, 0x7f, 0x56, 0x51, 0xf0, 0xdf, 0x3e, 0xe9,
0x29, 0x54, 0xe7, 0x84, 0x05, 0x31, 0xf2, 0x06, 0x55, 0xbd, 0x88, 0xb1, 0x08, 0xd4, 0xff, 0x87, 0x03, 0xa8, 0x2f, 0x06, 0x16, 0xc2, 0xa8, 0x0e, 0x5a, 0xf5, 0xa2, 0x89, 0x05, 0x51, 0x1f, 0x87,
0x73, 0x44, 0x72, 0x87, 0xf4, 0xb1, 0x6b, 0x42, 0x33, 0x14, 0x8a, 0xd0, 0x24, 0x72, 0x0c, 0x11, 0x75, 0x44, 0xcd, 0x0e, 0xe9, 0x67, 0x37, 0x90, 0x33, 0x42, 0x46, 0x28, 0x92, 0x66, 0x0c, 0xb4,
0x57, 0x7a, 0x67, 0x33, 0x87, 0x9b, 0x48, 0xd8, 0xe4, 0xad, 0x5a, 0xc3, 0x78, 0x4a, 0xf9, 0x91, 0x2b, 0xbf, 0xb5, 0x85, 0x23, 0x4d, 0x1a, 0xd8, 0x54, 0x57, 0x6d, 0x90, 0x3d, 0x15, 0xfd, 0x08,
0xc8, 0xed, 0xc3, 0x0e, 0xea, 0x35, 0xa8, 0x8c, 0xdc, 0xef, 0x98, 0x13, 0x37, 0xdb, 0x57, 0x50, 0x7d, 0xfb, 0xb0, 0x82, 0x7a, 0x03, 0x6a, 0x63, 0xf7, 0x3b, 0xe1, 0xc4, 0xc9, 0xf6, 0x25, 0xd4,
0x8d, 0x04, 0xa1, 0x8b, 0xfb, 0xb0, 0xc6, 0x51, 0x12, 0x76, 0xf7, 0x7c, 0x8c, 0x9f, 0x05, 0x94, 0x23, 0x42, 0xa8, 0xe2, 0x3e, 0xac, 0x49, 0xa2, 0x84, 0xd9, 0xbd, 0x28, 0xe3, 0xa7, 0x01, 0x97,
0x23, 0xd8, 0x08, 0x11, 0xfa, 0x1f, 0xb2, 0x50, 0x8a, 0xa5, 0xa2, 0x48, 0x2e, 0x69, 0xc0, 0x4c, 0x04, 0x36, 0x42, 0x84, 0xfe, 0x87, 0x2c, 0x94, 0x63, 0x2a, 0x06, 0xc9, 0x05, 0x0f, 0x84, 0x69,
0x9b, 0x8e, 0xa9, 0xef, 0xba, 0x4e, 0xd8, 0xe3, 0xaa, 0x10, 0x9e, 0x87, 0x32, 0x31, 0xc2, 0x22, 0xf3, 0x09, 0xf7, 0x5d, 0xd7, 0x09, 0x73, 0xbc, 0x8a, 0xc4, 0xb3, 0x90, 0x86, 0x25, 0x2c, 0xd2,
0x3f, 0x6e, 0x68, 0x70, 0x83, 0xd1, 0x51, 0x8d, 0x72, 0x28, 0x3b, 0xa1, 0xc1, 0x0d, 0x79, 0x01, 0xe3, 0x9a, 0x07, 0xd7, 0x64, 0x9d, 0xaa, 0x51, 0x09, 0x69, 0x27, 0x3c, 0xb8, 0x66, 0x1f, 0x81,
0x5a, 0x04, 0xf1, 0x7c, 0x66, 0xd9, 0xe2, 0xe6, 0x93, 0xf7, 0x73, 0x2d, 0x94, 0x0f, 0x42, 0xb1, 0x16, 0x41, 0x3c, 0x5f, 0x58, 0x36, 0x76, 0x3e, 0xd5, 0x9f, 0x1b, 0x21, 0x7d, 0x18, 0x92, 0xb1,
0x18, 0xf0, 0xb2, 0xc9, 0x4c, 0x8f, 0x5a, 0x13, 0xd3, 0x16, 0x51, 0x94, 0x9c, 0xb3, 0x2a, 0xe5, 0xc0, 0xab, 0x24, 0x33, 0x3d, 0x6e, 0x4d, 0x4d, 0x1b, 0xad, 0xa8, 0x66, 0xce, 0xba, 0xa2, 0x0f,
0x03, 0x6a, 0x4d, 0xce, 0x03, 0xca, 0xc9, 0x17, 0xf0, 0x24, 0x41, 0x4c, 0x13, 0x70, 0xd9, 0xc5, 0xb9, 0x35, 0x3d, 0x0b, 0xb8, 0x64, 0x9f, 0xc1, 0x93, 0xc4, 0x60, 0x9a, 0x80, 0xab, 0x2c, 0x66,
0xc4, 0x8f, 0x99, 0x69, 0xbc, 0xe4, 0x29, 0xa8, 0xe2, 0xc6, 0x30, 0xc7, 0x3e, 0xa3, 0x9c, 0x4d, 0x7e, 0x3c, 0x99, 0xc6, 0x47, 0x9e, 0x42, 0x15, 0x3b, 0x86, 0x39, 0xf1, 0x05, 0x97, 0x62, 0x1a,
0xc2, 0x3e, 0x2e, 0x0b, 0x59, 0x5b, 0x8a, 0x48, 0x1d, 0x0a, 0xec, 0xd6, 0xb3, 0x7c, 0x36, 0xc1, 0xe6, 0x71, 0x05, 0x69, 0x1d, 0x45, 0x62, 0x4d, 0x28, 0x8a, 0x1b, 0xcf, 0xf2, 0xc5, 0x94, 0x3a,
0x1b, 0xa3, 0x68, 0x44, 0x9f, 0x62, 0x71, 0xc0, 0x5d, 0x9f, 0x5e, 0x33, 0xd3, 0xa1, 0x36, 0xc3, 0x46, 0xc9, 0x88, 0x3e, 0xf1, 0x70, 0x20, 0x5d, 0x9f, 0x5f, 0x09, 0xd3, 0xe1, 0xb6, 0xa0, 0xec,
0xee, 0x2e, 0x19, 0xe5, 0x50, 0xd6, 0xa3, 0x36, 0xd3, 0x3f, 0x82, 0xed, 0x6f, 0x18, 0x3f, 0xb3, 0x2e, 0x1b, 0x95, 0x90, 0xd6, 0xe7, 0xb6, 0xd0, 0xdf, 0x81, 0xed, 0xaf, 0x85, 0x3c, 0xb5, 0x5e,
0xde, 0xcd, 0xac, 0x89, 0xc5, 0xef, 0x06, 0xd4, 0xa7, 0xf3, 0x29, 0xf8, 0xa7, 0x1c, 0x6c, 0xa4, 0xcf, 0xad, 0xa9, 0x25, 0x6f, 0x87, 0xdc, 0xe7, 0x8b, 0x2a, 0xf8, 0xaf, 0x3c, 0x6c, 0xa4, 0x59,
0x55, 0x8c, 0x33, 0x5f, 0xdc, 0x40, 0x79, 0x7f, 0x36, 0x65, 0x51, 0x76, 0xe6, 0x37, 0x66, 0x0c, 0x42, 0x0a, 0x1f, 0x3b, 0x50, 0xc1, 0x9f, 0xcf, 0x44, 0xe4, 0x9d, 0x45, 0xc7, 0x8c, 0xc1, 0xc6,
0x36, 0x66, 0x53, 0x66, 0x48, 0x10, 0xf9, 0x1a, 0x76, 0xe6, 0x25, 0xe6, 0x8b, 0x3b, 0x30, 0xa0, 0x7c, 0x26, 0x0c, 0x05, 0x62, 0x5f, 0xc1, 0xce, 0x22, 0xc4, 0x7c, 0xec, 0x81, 0x01, 0x97, 0xa6,
0xdc, 0xf4, 0x98, 0x6f, 0xbe, 0x17, 0x37, 0x3d, 0x46, 0x1f, 0xbb, 0x52, 0x56, 0x9b, 0x41, 0xb9, 0x27, 0x7c, 0xf3, 0x0d, 0x76, 0x7a, 0xb2, 0x3e, 0x65, 0xa5, 0x8a, 0x36, 0x83, 0x4b, 0x8c, 0xb8,
0xa8, 0xb8, 0x01, 0xf3, 0xdf, 0x08, 0x35, 0xf9, 0x0c, 0xb4, 0x24, 0x19, 0x34, 0x3d, 0xcf, 0xc6, 0xa1, 0xf0, 0x5f, 0x21, 0x9b, 0x7d, 0x08, 0x5a, 0x72, 0x18, 0x34, 0x3d, 0xcf, 0x26, 0x4f, 0xe4,
0x4c, 0x28, 0xf1, 0x34, 0x13, 0xf1, 0xf2, 0x6c, 0xf2, 0x12, 0x04, 0xc7, 0x37, 0x53, 0x11, 0xf6, 0xe3, 0x6a, 0x86, 0xf6, 0xf2, 0x6c, 0xf6, 0x29, 0xe0, 0x8c, 0x6f, 0xa6, 0x2c, 0xec, 0xd9, 0x61,
0xec, 0xb0, 0xe9, 0x85, 0x8d, 0x39, 0xf1, 0x17, 0xf0, 0x57, 0xd0, 0x58, 0xfe, 0x60, 0xc0, 0x55, 0xd2, 0xa3, 0x8c, 0xc5, 0xe0, 0x8f, 0xf0, 0x2f, 0xa0, 0xb5, 0x7a, 0x61, 0xa0, 0x53, 0x05, 0x3a,
0x79, 0x5c, 0xb5, 0xb9, 0xe4, 0xd1, 0x20, 0xd6, 0xa6, 0x5f, 0x05, 0x22, 0x83, 0x6b, 0x88, 0x9f, 0xb5, 0xb9, 0x62, 0x69, 0xc0, 0xb3, 0xe9, 0xad, 0x00, 0x3d, 0xb8, 0x46, 0xf8, 0xc5, 0x56, 0x80,
0xbf, 0x0a, 0x44, 0xcf, 0xbc, 0x80, 0xf5, 0x14, 0x49, 0x45, 0x60, 0x01, 0x81, 0xd5, 0x04, 0x51, 0x39, 0xf3, 0x11, 0xac, 0xa7, 0x86, 0x54, 0x02, 0x16, 0x09, 0x58, 0x4f, 0x0c, 0xaa, 0x71, 0x7a,
0x8d, 0xdb, 0x6b, 0x91, 0xc2, 0x17, 0x97, 0x53, 0xf8, 0x03, 0xd8, 0x88, 0x88, 0xcb, 0x25, 0x1d, 0x2d, 0x8f, 0xf0, 0xa5, 0xd5, 0x23, 0xfc, 0x73, 0xd8, 0x88, 0x06, 0x97, 0x0b, 0x3e, 0xf9, 0xce,
0x7f, 0xe7, 0x5e, 0x5d, 0x99, 0x01, 0x1b, 0xe3, 0x50, 0x56, 0x8c, 0xf5, 0x50, 0xf5, 0x5a, 0x6a, 0xbd, 0xbc, 0x34, 0x03, 0x31, 0xa1, 0xa2, 0x9c, 0x37, 0xd6, 0x43, 0xd6, 0x0b, 0xc5, 0x19, 0x89,
0x86, 0x6c, 0xac, 0xff, 0x51, 0x30, 0xee, 0x64, 0x62, 0xb0, 0x41, 0xe5, 0x3b, 0xc3, 0x0c, 0x6f, 0x09, 0xce, 0xca, 0x7c, 0x2e, 0x5d, 0x33, 0xda, 0x3e, 0xa8, 0x1b, 0x97, 0x8c, 0x0a, 0x12, 0xc3,
0x41, 0xc5, 0x28, 0x85, 0x92, 0xee, 0x84, 0x1c, 0x84, 0x54, 0x2b, 0x8b, 0x7c, 0xa8, 0xb1, 0x3c, 0xdd, 0x0c, 0x6d, 0x47, 0x18, 0x5c, 0x4e, 0x2e, 0xe6, 0xd3, 0x2b, 0xa1, 0xca, 0x46, 0x45, 0xd9,
0xbb, 0x09, 0xce, 0xf5, 0x12, 0x88, 0xe5, 0x8c, 0x5d, 0x5b, 0xc4, 0x8f, 0xdf, 0xf8, 0x2c, 0xb8, 0x0e, 0x59, 0x83, 0xb9, 0x7c, 0x41, 0x0c, 0x7c, 0xee, 0x8f, 0x60, 0xfb, 0x0e, 0x5c, 0x72, 0x5f,
0x71, 0xa7, 0x13, 0xcc, 0x51, 0xc5, 0x58, 0x8f, 0x34, 0xa3, 0x48, 0x21, 0xe0, 0xf1, 0xd3, 0x66, 0xd2, 0x43, 0xaa, 0x74, 0xe8, 0x49, 0xfa, 0x10, 0x72, 0xf1, 0x31, 0x1f, 0x03, 0xa3, 0x93, 0x68,
0x0e, 0x57, 0x24, 0x3c, 0xd2, 0xc4, 0x70, 0xfd, 0x2d, 0x6c, 0x0f, 0x57, 0x55, 0x28, 0xf9, 0x0a, 0x18, 0xcb, 0x31, 0x2f, 0x67, 0xd6, 0xd5, 0xb5, 0xa4, 0x69, 0x24, 0x6f, 0x34, 0x90, 0x73, 0xc6,
0xc0, 0x8b, 0xeb, 0x12, 0x3d, 0x29, 0x1f, 0xee, 0xdc, 0x3f, 0xf0, 0xbc, 0x76, 0x8d, 0x04, 0x5e, 0x6f, 0x7a, 0xce, 0x31, 0x91, 0xf5, 0x3f, 0xe2, 0xae, 0x90, 0x0c, 0x29, 0x2a, 0x2d, 0x6a, 0x43,
0xdf, 0x81, 0xc6, 0x32, 0xd3, 0x72, 0x08, 0xe9, 0x4f, 0x60, 0x63, 0x38, 0xbb, 0xbe, 0x66, 0x0b, 0x32, 0xc3, 0xfe, 0x9d, 0x37, 0xca, 0x21, 0xa5, 0x37, 0x65, 0xcf, 0xc3, 0x21, 0x31, 0x4b, 0x93,
0x6c, 0xe4, 0x14, 0x1e, 0xa7, 0xc5, 0xe1, 0xcc, 0x3a, 0x84, 0x62, 0xf4, 0xbe, 0x0b, 0xfb, 0x62, 0x5c, 0x6b, 0x75, 0x5c, 0x26, 0xa6, 0xc5, 0x4f, 0x81, 0x59, 0xce, 0xc4, 0xb5, 0xd1, 0xf3, 0xf2,
0x6b, 0x7e, 0x90, 0xd4, 0x13, 0xd8, 0x28, 0x84, 0x8f, 0xbd, 0xfd, 0xe7, 0x50, 0x8c, 0xf8, 0x2b, 0xda, 0x17, 0xc1, 0xb5, 0x3b, 0x9b, 0x52, 0x74, 0xd5, 0x8c, 0xf5, 0x88, 0x33, 0x8e, 0x18, 0x08,
0x51, 0xa1, 0x78, 0xd6, 0xef, 0x0f, 0xcc, 0xfe, 0xc5, 0x48, 0x7b, 0x44, 0xca, 0x50, 0xc0, 0xaf, 0x8f, 0x97, 0xb2, 0x05, 0x3c, 0xaf, 0xe0, 0x11, 0x27, 0x86, 0xeb, 0xdf, 0xc2, 0xf6, 0xe8, 0xbe,
0x6e, 0x4f, 0xcb, 0xec, 0x07, 0x50, 0x8a, 0xe9, 0x2b, 0xa9, 0x40, 0xa9, 0xdb, 0xeb, 0x8e, 0xba, 0xdc, 0x62, 0x5f, 0x02, 0x78, 0x71, 0x46, 0x91, 0x26, 0x95, 0x83, 0x9d, 0xbb, 0x0f, 0x5e, 0x64,
0xad, 0x51, 0xe7, 0x48, 0x7b, 0x44, 0x9e, 0xc0, 0xfa, 0xc0, 0xe8, 0x74, 0xcf, 0x5b, 0xdf, 0x74, 0x9d, 0x91, 0xc0, 0xeb, 0x3b, 0xd0, 0x5a, 0x25, 0x5a, 0x95, 0x4f, 0xfd, 0x09, 0x6c, 0x8c, 0xe6,
0x4c, 0xa3, 0xf3, 0xa6, 0xd3, 0x3a, 0xeb, 0x1c, 0x69, 0x19, 0x42, 0xa0, 0x7a, 0x32, 0x3a, 0x6b, 0x57, 0x57, 0x62, 0x69, 0x8e, 0x7a, 0x09, 0x8f, 0xd3, 0xe4, 0xb0, 0xda, 0x1e, 0x40, 0x29, 0x8e,
0x9b, 0x83, 0x8b, 0xd7, 0x67, 0xdd, 0xe1, 0x49, 0xe7, 0x48, 0xcb, 0x0a, 0x9b, 0xc3, 0x8b, 0x76, 0x0d, 0x95, 0xd1, 0x5b, 0x8b, 0x87, 0xa4, 0x96, 0x77, 0xa3, 0x18, 0xae, 0xa9, 0xfb, 0xcf, 0xa0,
0xbb, 0x33, 0x1c, 0x6a, 0x39, 0x02, 0xb0, 0x76, 0xdc, 0xea, 0x0a, 0xb0, 0x42, 0x36, 0xa0, 0xd6, 0x14, 0x4d, 0xde, 0xac, 0x0a, 0xa5, 0xd3, 0xc1, 0x60, 0x68, 0x0e, 0xce, 0xc7, 0xda, 0x23, 0x56,
0xed, 0xbd, 0xe9, 0x77, 0xdb, 0x1d, 0x73, 0xd8, 0x19, 0x8d, 0x84, 0x30, 0xbf, 0xff, 0xaf, 0x0c, 0x81, 0x22, 0x7d, 0xf5, 0xfa, 0x5a, 0x66, 0x3f, 0x80, 0x72, 0x3c, 0x78, 0xb3, 0x1a, 0x94, 0x7b,
0x54, 0x52, 0x0c, 0x98, 0x6c, 0xc1, 0x86, 0x58, 0x72, 0x61, 0x88, 0x9d, 0x5a, 0xc3, 0x7e, 0xcf, 0xfd, 0xde, 0xb8, 0x77, 0x38, 0xee, 0x1e, 0x69, 0x8f, 0xd8, 0x13, 0x58, 0x1f, 0x1a, 0xdd, 0xde,
0xec, 0xf5, 0x7b, 0x1d, 0xed, 0x11, 0xf9, 0x08, 0xb6, 0x16, 0x14, 0xfd, 0xe3, 0xe3, 0xf6, 0x49, 0xd9, 0xe1, 0xd7, 0x5d, 0xd3, 0xe8, 0xbe, 0xea, 0x1e, 0x9e, 0x76, 0x8f, 0xb4, 0x0c, 0x63, 0x50,
0x4b, 0x1c, 0x9e, 0x34, 0x60, 0x73, 0x41, 0x39, 0xea, 0x9e, 0x77, 0x84, 0x97, 0x59, 0xb2, 0x0b, 0x3f, 0x19, 0x9f, 0x76, 0xcc, 0xe1, 0xf9, 0x8b, 0xd3, 0xde, 0xe8, 0xa4, 0x7b, 0xa4, 0x65, 0x51,
0x3b, 0x0b, 0xba, 0xe1, 0xb7, 0x9d, 0xce, 0x20, 0x46, 0xe4, 0xc8, 0x73, 0x78, 0xba, 0x80, 0xe8, 0xe6, 0xe8, 0xbc, 0xd3, 0xe9, 0x8e, 0x46, 0x5a, 0x8e, 0x01, 0xac, 0x1d, 0x1f, 0xf6, 0x10, 0x9c,
0xf6, 0x86, 0x17, 0xc7, 0xc7, 0xdd, 0x76, 0xb7, 0xd3, 0x1b, 0x99, 0x6f, 0x5a, 0x67, 0x17, 0x1d, 0x67, 0x1b, 0xd0, 0xe8, 0xf5, 0x5f, 0x0d, 0x7a, 0x9d, 0xae, 0x39, 0xea, 0x8e, 0xc7, 0x48, 0x2c,
0x4d, 0x21, 0x3b, 0x50, 0x5f, 0xdc, 0xa4, 0x73, 0x3e, 0xe8, 0x1b, 0x2d, 0xe3, 0xad, 0x96, 0x27, 0xec, 0xff, 0x33, 0x03, 0xb5, 0xd4, 0xec, 0xce, 0xb6, 0x60, 0x03, 0x8f, 0x9c, 0x1b, 0x78, 0xd3,
0xcf, 0xe0, 0x93, 0x7b, 0x46, 0xda, 0x7d, 0xc3, 0xe8, 0xb4, 0x47, 0x66, 0xeb, 0xbc, 0x7f, 0xd1, 0xe1, 0x68, 0xd0, 0x37, 0xfb, 0x83, 0x7e, 0x57, 0x7b, 0xc4, 0xde, 0x81, 0xad, 0x25, 0xc6, 0xe0,
0x1b, 0x69, 0x6b, 0xfb, 0x4d, 0xc1, 0x32, 0x17, 0x0a, 0x5c, 0x84, 0xec, 0xa2, 0xf7, 0xd3, 0x5e, 0xf8, 0xb8, 0x73, 0x72, 0x88, 0x8f, 0x67, 0x2d, 0xd8, 0x5c, 0x62, 0x8e, 0x7b, 0x67, 0x5d, 0xd4,
0xff, 0xdb, 0x9e, 0xf6, 0x48, 0x44, 0x7e, 0x74, 0x62, 0x74, 0x86, 0x27, 0xfd, 0xb3, 0x23, 0x2d, 0x32, 0xcb, 0x76, 0x61, 0x67, 0x89, 0x37, 0xfa, 0xa6, 0xdb, 0x1d, 0xc6, 0x88, 0x1c, 0x7b, 0x06,
0x73, 0xf8, 0xb7, 0x92, 0x7c, 0xe1, 0xb4, 0xf1, 0x7f, 0x11, 0x62, 0x40, 0x21, 0x4c, 0x33, 0x59, 0x4f, 0x97, 0x10, 0xbd, 0xfe, 0xe8, 0xfc, 0xf8, 0xb8, 0xd7, 0xe9, 0x75, 0xfb, 0x63, 0xf3, 0xd5,
0x95, 0xf8, 0xc6, 0x93, 0x14, 0x4b, 0x8d, 0x2b, 0x6d, 0xeb, 0x37, 0x7f, 0xfd, 0xfb, 0x6f, 0xb3, 0xe1, 0xe9, 0x79, 0x57, 0xcb, 0xb3, 0x1d, 0x68, 0x2e, 0x5f, 0xd2, 0x3d, 0x1b, 0x0e, 0x8c, 0x43,
0xeb, 0xba, 0xda, 0x7c, 0xff, 0x45, 0x53, 0x20, 0x9a, 0xee, 0x8c, 0xbf, 0xca, 0xec, 0x93, 0x3e, 0xe3, 0x5b, 0xad, 0xc0, 0xde, 0x87, 0xf7, 0xee, 0x08, 0xe9, 0x0c, 0x0c, 0xa3, 0xdb, 0x19, 0x9b,
0xac, 0xc9, 0xb7, 0x32, 0xd9, 0x4c, 0x99, 0x8c, 0x1f, 0xcf, 0xab, 0x2c, 0x6e, 0xa2, 0x45, 0x4d, 0x87, 0x67, 0x83, 0xf3, 0xfe, 0x58, 0x5b, 0xdb, 0x6f, 0xe3, 0x7c, 0xbc, 0x14, 0xe0, 0x68, 0xb2,
0x2f, 0xc7, 0x16, 0x2d, 0x47, 0x18, 0xfc, 0x31, 0x14, 0xc2, 0x77, 0x5a, 0xe2, 0x90, 0xe9, 0x97, 0xf3, 0xfe, 0x4f, 0xfb, 0x83, 0x6f, 0xfa, 0xda, 0x23, 0xb4, 0xfc, 0xf8, 0xc4, 0xe8, 0x8e, 0x4e,
0x5b, 0x63, 0x19, 0x95, 0xfe, 0x51, 0x86, 0xfc, 0x1c, 0x4a, 0x31, 0x0b, 0x27, 0xdb, 0x89, 0x1e, 0x06, 0xa7, 0x47, 0x5a, 0xe6, 0xe0, 0xaf, 0x65, 0xb5, 0x9b, 0x75, 0xe8, 0x1f, 0x1d, 0x66, 0x40,
0x4b, 0xf7, 0x47, 0xa3, 0xb1, 0x4c, 0x95, 0x3e, 0x16, 0xa9, 0xc6, 0xc7, 0x42, 0x86, 0x4e, 0x2e, 0x31, 0xaa, 0x03, 0xf7, 0x39, 0xbe, 0xf5, 0x24, 0x35, 0x5f, 0xc7, 0x91, 0xb6, 0xf5, 0x9b, 0xbf,
0x64, 0x1f, 0x08, 0x86, 0x4e, 0xea, 0xa9, 0xed, 0x13, 0xa4, 0x7d, 0xe9, 0xc1, 0xf4, 0x06, 0x9a, 0xfc, 0xed, 0xb7, 0xd9, 0x75, 0xbd, 0xda, 0x7e, 0xf3, 0x59, 0x1b, 0x11, 0x6d, 0x77, 0x2e, 0xbf,
0x7c, 0x4c, 0x48, 0xca, 0x64, 0xf3, 0x7b, 0x6b, 0xf2, 0x4b, 0xf2, 0x0b, 0x50, 0xc3, 0x04, 0x20, 0xc8, 0xec, 0xb3, 0x01, 0xac, 0xa9, 0x2d, 0x9f, 0x6d, 0xa6, 0x44, 0xc6, 0x6b, 0xff, 0x7d, 0x12,
0x8f, 0x26, 0xf3, 0x60, 0x25, 0xc9, 0x7e, 0x63, 0xee, 0xcc, 0x22, 0xe3, 0x5e, 0x62, 0xdd, 0x9d, 0x37, 0x49, 0xa2, 0xa6, 0x57, 0x62, 0x89, 0x96, 0x83, 0x02, 0x7f, 0x0c, 0xc5, 0x70, 0xc3, 0x4c,
0xf1, 0x26, 0x47, 0x6b, 0x97, 0xb1, 0x75, 0xe4, 0x67, 0x09, 0xeb, 0x49, 0xa6, 0x9b, 0xb6, 0x9e, 0x3c, 0x32, 0xbd, 0x73, 0xb6, 0x56, 0x2d, 0x01, 0xff, 0x9f, 0x61, 0x3f, 0x87, 0x72, 0xbc, 0x3f,
0x62, 0x72, 0xfa, 0x2e, 0x5a, 0x6f, 0x90, 0x7a, 0xca, 0xfa, 0x3b, 0x81, 0x69, 0x7e, 0x4f, 0x6d, 0xb0, 0xed, 0x44, 0x8e, 0xa5, 0xf3, 0xa3, 0xd5, 0x5a, 0xc5, 0x4a, 0x3f, 0x8b, 0xd5, 0xe3, 0x67,
0x2e, 0x3c, 0xa8, 0x8a, 0xeb, 0x19, 0x53, 0xfe, 0xa0, 0x0f, 0xf3, 0xa8, 0x2d, 0xbc, 0x5b, 0xf4, 0xd1, 0x6e, 0xc1, 0xce, 0x55, 0x1e, 0xe0, 0x6e, 0xc1, 0x9a, 0xa9, 0xeb, 0x13, 0xeb, 0xc6, 0xca,
0x6d, 0xdc, 0x64, 0x83, 0xac, 0x27, 0x4a, 0x21, 0xf6, 0x60, 0x6e, 0xfd, 0x41, 0x1f, 0x92, 0xd6, 0x87, 0xe9, 0x2d, 0x12, 0xf9, 0x98, 0xb1, 0x94, 0xc8, 0xf6, 0xf7, 0xd6, 0xf4, 0x97, 0xec, 0x17,
0xd3, 0x2e, 0x7c, 0x82, 0xd6, 0xb7, 0xc9, 0x56, 0xd2, 0x7a, 0xd2, 0x83, 0xb7, 0x50, 0x11, 0x7b, 0x50, 0x0d, 0x1d, 0x40, 0x1b, 0x00, 0x5b, 0x18, 0x2b, 0xb9, 0xa6, 0xb4, 0x16, 0xca, 0x2c, 0xef,
0x44, 0x04, 0x2d, 0x48, 0x54, 0x72, 0x8a, 0x05, 0x36, 0xb6, 0xee, 0xc9, 0xd3, 0xdd, 0x41, 0x6a, 0x0a, 0x2b, 0xa4, 0xbb, 0x73, 0xd9, 0x96, 0x24, 0xed, 0x22, 0x96, 0x4e, 0x93, 0x65, 0x42, 0x7a,
0xb8, 0x45, 0x40, 0x79, 0x53, 0x32, 0x3f, 0xc2, 0x81, 0xdc, 0xe7, 0x2e, 0x44, 0x8f, 0xed, 0xac, 0x72, 0x46, 0x4f, 0x4b, 0x4f, 0xcd, 0xa0, 0xfa, 0x2e, 0x49, 0x6f, 0xb1, 0x66, 0x4a, 0xfa, 0x6b,
0x24, 0x36, 0x8d, 0x07, 0xaf, 0x08, 0x7d, 0x07, 0x37, 0xdc, 0x24, 0x8f, 0x71, 0xc3, 0x08, 0xd0, 0xc4, 0xb4, 0xbf, 0xe7, 0xb6, 0x44, 0x0d, 0xea, 0x38, 0x58, 0x90, 0xcb, 0x1f, 0xd4, 0x61, 0x61,
0xf4, 0xa4, 0xfd, 0x5f, 0x01, 0x19, 0x3e, 0xb4, 0xeb, 0xca, 0xcb, 0xaa, 0xf1, 0xec, 0x41, 0x4c, 0xb5, 0xa5, 0x8d, 0x4b, 0xdf, 0xa6, 0x4b, 0x36, 0xd8, 0x7a, 0x22, 0x14, 0x62, 0x0d, 0x16, 0xd2,
0x3a, 0xa0, 0xfa, 0xd2, 0xcd, 0x45, 0x0b, 0x33, 0x50, 0x93, 0xf7, 0x0f, 0x99, 0xfb, 0xb2, 0xe4, 0x1f, 0xd4, 0x21, 0x29, 0x3d, 0xad, 0xc2, 0x7b, 0x24, 0x7d, 0x9b, 0x6d, 0x25, 0xa5, 0x27, 0x35,
0xb6, 0x6a, 0x7c, 0xbc, 0x42, 0x1b, 0xee, 0x56, 0xc7, 0xdd, 0x08, 0xd1, 0xc4, 0x6e, 0x74, 0xc6, 0xf8, 0x16, 0x6a, 0x78, 0x47, 0x34, 0x5a, 0x06, 0x89, 0x48, 0x4e, 0xcd, 0xaf, 0xad, 0xad, 0x3b,
0xdd, 0x66, 0x20, 0x61, 0x97, 0x6b, 0xf8, 0x07, 0xee, 0x97, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xf4, 0x74, 0x76, 0xb0, 0x06, 0x5d, 0x11, 0x70, 0xd9, 0x56, 0x33, 0x2b, 0x93, 0xc0, 0xee, 0x4e,
0xff, 0xa6, 0xdb, 0xca, 0xf7, 0x15, 0x00, 0x00, 0x5d, 0x4c, 0x8f, 0xe5, 0xdc, 0x3b, 0x92, 0xb5, 0x1e, 0x6c, 0x11, 0xfa, 0x0e, 0x5d, 0xb8, 0xc9,
0x1e, 0xd3, 0x85, 0x11, 0xa0, 0xed, 0x29, 0xf9, 0xbf, 0x02, 0x36, 0x7a, 0xe8, 0xd6, 0x7b, 0x9b,
0x55, 0xeb, 0xfd, 0x07, 0x31, 0x69, 0x83, 0xea, 0x2b, 0x2f, 0xc7, 0x14, 0x16, 0x50, 0x4d, 0xf6,
0x1f, 0xb6, 0xd0, 0x65, 0x45, 0xb7, 0x6a, 0xbd, 0x7b, 0x0f, 0x37, 0xbc, 0xad, 0x49, 0xb7, 0x31,
0xa6, 0xe1, 0x6d, 0x38, 0x38, 0xb4, 0x03, 0x05, 0xbb, 0x58, 0xa3, 0xbf, 0x9e, 0x3f, 0xff, 0x77,
0x00, 0x00, 0x00, 0xff, 0xff, 0xd9, 0x97, 0x5c, 0x27, 0xb1, 0x16, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.

@ -762,6 +762,33 @@ message LiquidityParameters{
suggestions again, expressed in seconds. suggestions again, expressed in seconds.
*/ */
uint64 failure_backoff_sec = 9; uint64 failure_backoff_sec = 9;
/*
Set to true to enable automatic dispatch of loop out swaps. All swaps will
be limited to the fee categories set by these parameters, and total
expenditure will be limited to the auto out budget.
*/
bool auto_loop_out = 10;
/*
The total budget for automatically dispatched swaps since the budget start
time, expressed in satoshis.
*/
uint64 auto_out_budget_sat = 11;
/*
The start time for auto-out budget, expressed as a unix timestamp in
seconds. If this value is 0, the budget will be applied for all
automatically dispatched swaps. Swaps that were completed before this date
will not be included in budget calculations.
*/
uint64 auto_out_budget_start_sec = 12;
/*
The maximum number of automatically dispatched swaps that we allow to be in
flight at any point in time.
*/
uint64 auto_max_in_flight = 13;
} }
enum LiquidityRuleType{ enum LiquidityRuleType{

@ -493,6 +493,26 @@
"type": "string", "type": "string",
"format": "uint64", "format": "uint64",
"description": "The amount of time we require pass since a channel was part of a failed\nswap due to off chain payment failure until it will be considered for swap\nsuggestions again, expressed in seconds." "description": "The amount of time we require pass since a channel was part of a failed\nswap due to off chain payment failure until it will be considered for swap\nsuggestions again, expressed in seconds."
},
"auto_loop_out": {
"type": "boolean",
"format": "boolean",
"description": "Set to true to enable automatic dispatch of loop out swaps. All swaps will\nbe limited to the fee categories set by these parameters, and total\nexpenditure will be limited to the auto out budget."
},
"auto_out_budget_sat": {
"type": "string",
"format": "uint64",
"description": "The total budget for automatically dispatched swaps since the budget start\ntime, expressed in satoshis."
},
"auto_out_budget_start_sec": {
"type": "string",
"format": "uint64",
"description": "The start time for auto-out budget, expressed as a unix timestamp in\nseconds. If this value is 0, the budget will be applied for all\nautomatically dispatched swaps. Swaps that were completed before this date\nwill not be included in budget calculations."
},
"auto_max_in_flight": {
"type": "string",
"format": "uint64",
"description": "The maximum number of automatically dispatched swaps that we allow to be in\nflight at any point in time."
} }
} }
}, },

Loading…
Cancel
Save