diff --git a/api/client/client.go b/api/client/client.go index 070dd63927b83..6747829c86403 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -477,7 +477,7 @@ func (c *Client) dialGRPC(ctx context.Context, addr string) error { otelUnaryClientInterceptor(), metadata.UnaryClientInterceptor, interceptors.GRPCClientUnaryErrorInterceptor, - interceptors.WithMFAUnaryInterceptor(c.performMFACeremony), + interceptors.WithMFAUnaryInterceptor(c.performAdminActionMFACeremony), breaker.UnaryClientInterceptor(cb), ), grpc.WithChainStreamInterceptor( diff --git a/api/client/mfa.go b/api/client/mfa.go index cc81ca66405d6..a4538f2913c77 100644 --- a/api/client/mfa.go +++ b/api/client/mfa.go @@ -23,17 +23,19 @@ import ( "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/mfa" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" ) -// performMFACeremony retrieves an MFA challenge from the server, prompts the -// user to answer the challenge, and returns the resulting MFA response. -func (c *Client) performMFACeremony(ctx context.Context, promptOpts ...mfa.PromptOpt) (*proto.MFAAuthenticateResponse, error) { +// performAdminActionMFACeremony retrieves an MFA challenge from the server, +// prompts the user to answer the challenge, and returns the resulting MFA response. +func (c *Client) performAdminActionMFACeremony(ctx context.Context, promptOpts ...mfa.PromptOpt) (*proto.MFAAuthenticateResponse, error) { if c.c.MFAPromptConstructor == nil { return nil, trace.BadParameter("missing PromptAdminRequestMFA field, client cannot perform MFA ceremony") } chal, err := c.CreateAuthenticateChallenge(ctx, &proto.CreateAuthenticateChallengeRequest{ Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{}, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_ADMIN_ACTION, }) if err != nil { return nil, trace.Wrap(err) diff --git a/api/client/mfa_test.go b/api/client/mfa_test.go index 22ae22d69cd40..9550c4f4b2d2c 100644 --- a/api/client/mfa_test.go +++ b/api/client/mfa_test.go @@ -70,7 +70,7 @@ func TestPerformMFACeremony(t *testing.T) { clt, err := New(ctx, cfg) require.NoError(t, err) - resp, err := clt.performMFACeremony(ctx) + resp, err := clt.performAdminActionMFACeremony(ctx) require.NoError(t, err) require.Equal(t, mfaTestResp.Response, resp.Response) } diff --git a/api/client/proto/authservice.pb.go b/api/client/proto/authservice.pb.go index e8526cbd4ea07..0c1054def1549 100644 --- a/api/client/proto/authservice.pb.go +++ b/api/client/proto/authservice.pb.go @@ -10424,10 +10424,13 @@ type CreateAuthenticateChallengeRequest struct { // MFA verification should run in the cluster that holds the target resource. // If you are issuing challenges from the root cluster, but accessing a leaf, // call [AuthService.IsMFARequired] in the leaf instead of setting this field. - MFARequiredCheck *IsMFARequiredRequest `protobuf:"bytes,5,opt,name=MFARequiredCheck,proto3" json:"mfa_required_check,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + MFARequiredCheck *IsMFARequiredRequest `protobuf:"bytes,5,opt,name=MFARequiredCheck,proto3" json:"mfa_required_check,omitempty"` + // Scope is a authorization scope for this MFA challenge. + // Required. Only applies to webauthn challenges. + Scope webauthn.ChallengeScope `protobuf:"varint,6,opt,name=Scope,proto3,enum=webauthn.ChallengeScope" json:"scope,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *CreateAuthenticateChallengeRequest) Reset() { *m = CreateAuthenticateChallengeRequest{} } @@ -10533,6 +10536,13 @@ func (m *CreateAuthenticateChallengeRequest) GetMFARequiredCheck() *IsMFARequire return nil } +func (m *CreateAuthenticateChallengeRequest) GetScope() webauthn.ChallengeScope { + if m != nil { + return m.Scope + } + return webauthn.ChallengeScope_CHALLENGE_SCOPE_UNSPECIFIED +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*CreateAuthenticateChallengeRequest) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -15208,866 +15218,868 @@ func init() { } var fileDescriptor_0ffcffcda38ae159 = []byte{ - // 13739 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0xbd, 0x5b, 0x6c, 0x5c, 0x49, - 0x7a, 0x18, 0xcc, 0x6e, 0x92, 0x22, 0xf9, 0xf1, 0xd6, 0x2a, 0x92, 0x22, 0xd5, 0xa2, 0xd4, 0xd2, - 0xd1, 0x48, 0xa3, 0xd1, 0xee, 0xea, 0x42, 0xcd, 0xcc, 0xce, 0x7d, 0xb6, 0xbb, 0x49, 0x91, 0x94, - 0x78, 0xe9, 0x39, 0xcd, 0xcb, 0xcc, 0xee, 0x78, 0x7b, 0x0f, 0xbb, 0x4b, 0xe4, 0xf9, 0xd5, 0x3c, - 0xa7, 0xf7, 0x9c, 0xd3, 0xba, 0xac, 0x7f, 0xfb, 0xff, 0x1d, 0x27, 0x46, 0x5e, 0xe2, 0x38, 0x80, - 0x1d, 0xd8, 0x88, 0x01, 0x27, 0x48, 0x02, 0x24, 0x01, 0x02, 0xf8, 0x25, 0xf0, 0x43, 0x9e, 0x82, - 0x04, 0xc8, 0x26, 0x80, 0x81, 0x00, 0x76, 0x10, 0x20, 0x0f, 0x74, 0xbc, 0x40, 0x5e, 0x08, 0xfb, - 0x21, 0x08, 0x92, 0x20, 0x0b, 0x04, 0x08, 0xea, 0x7a, 0xaa, 0xce, 0xad, 0x9b, 0x92, 0x66, 0x93, - 0x17, 0x89, 0x5d, 0xf5, 0x7d, 0x5f, 0x55, 0x7d, 0x55, 0xa7, 0xea, 0xab, 0xaf, 0xbe, 0x0b, 0xdc, - 0x09, 0x70, 0x1b, 0x77, 0x5c, 0x2f, 0xb8, 0xdb, 0xc6, 0x87, 0x56, 0xf3, 0xe5, 0xdd, 0x66, 0xdb, - 0xc6, 0x4e, 0x70, 0xb7, 0xe3, 0xb9, 0x81, 0x7b, 0xd7, 0xea, 0x06, 0x47, 0x3e, 0xf6, 0x9e, 0xd9, - 0x4d, 0x7c, 0x87, 0x96, 0xa0, 0x61, 0xfa, 0x5f, 0x71, 0xf6, 0xd0, 0x3d, 0x74, 0x19, 0x0c, 0xf9, - 0x8b, 0x55, 0x16, 0x2f, 0x1d, 0xba, 0xee, 0x61, 0x1b, 0x33, 0xe4, 0x83, 0xee, 0x93, 0xbb, 0xf8, - 0xb8, 0x13, 0xbc, 0xe4, 0x95, 0xa5, 0x68, 0x65, 0x60, 0x1f, 0x63, 0x3f, 0xb0, 0x8e, 0x3b, 0x1c, - 0xe0, 0x1d, 0xd9, 0x15, 0x2b, 0x08, 0x48, 0x4d, 0x60, 0xbb, 0xce, 0xdd, 0x67, 0xf7, 0xd5, 0x9f, - 0x1c, 0xf4, 0x56, 0x66, 0xaf, 0x9b, 0xd8, 0x0b, 0xfc, 0xbe, 0x20, 0xf1, 0x33, 0xec, 0x04, 0xb1, - 0xe6, 0x39, 0x64, 0xf0, 0xb2, 0x83, 0x7d, 0x06, 0x22, 0xfe, 0xe3, 0xa0, 0xd7, 0x92, 0x41, 0xe9, - 0xbf, 0x1c, 0xe4, 0x3b, 0xc9, 0x20, 0xcf, 0xf1, 0x01, 0xe1, 0xa9, 0x23, 0xff, 0xe8, 0x01, 0xee, - 0x59, 0x9d, 0x0e, 0xf6, 0xc2, 0x3f, 0x62, 0x7d, 0xed, 0xfa, 0xd6, 0x21, 0xe6, 0x7d, 0x7c, 0x76, - 0x5f, 0xfd, 0xc9, 0x40, 0x8d, 0x3f, 0xc8, 0xc1, 0xf0, 0xbe, 0x15, 0x34, 0x8f, 0xd0, 0xe7, 0x30, - 0xfc, 0xd8, 0x76, 0x5a, 0xfe, 0x42, 0xee, 0xea, 0xe0, 0xad, 0xf1, 0xa5, 0xc2, 0x1d, 0xd6, 0x5f, - 0x5a, 0x49, 0x2a, 0x2a, 0xf3, 0x3f, 0x3d, 0x29, 0x0d, 0x9c, 0x9e, 0x94, 0xa6, 0x9f, 0x12, 0xb0, - 0x6f, 0xbb, 0xc7, 0x76, 0x40, 0x27, 0xd0, 0x64, 0x78, 0x68, 0x17, 0x66, 0xca, 0xed, 0xb6, 0xfb, - 0xbc, 0x66, 0x79, 0x81, 0x6d, 0xb5, 0xeb, 0xdd, 0x66, 0x13, 0xfb, 0xfe, 0x42, 0xfe, 0x6a, 0xee, - 0xd6, 0x68, 0xe5, 0xfa, 0xe9, 0x49, 0xa9, 0x64, 0x91, 0xea, 0x46, 0x87, 0xd5, 0x37, 0x7c, 0x06, - 0xa0, 0x10, 0x4a, 0xc2, 0x37, 0xfe, 0x62, 0x18, 0x0a, 0x6b, 0xae, 0x1f, 0x54, 0xc9, 0xb4, 0x99, - 0xf8, 0xc7, 0x5d, 0xec, 0x07, 0xe8, 0x3a, 0x9c, 0x23, 0x65, 0xeb, 0xcb, 0x0b, 0xb9, 0xab, 0xb9, - 0x5b, 0x63, 0x95, 0xf1, 0xd3, 0x93, 0xd2, 0xc8, 0x91, 0xeb, 0x07, 0x0d, 0xbb, 0x65, 0xf2, 0x2a, - 0xf4, 0x0e, 0x8c, 0x6e, 0xb9, 0x2d, 0xbc, 0x65, 0x1d, 0x63, 0xda, 0x8b, 0xb1, 0xca, 0xe4, 0xe9, - 0x49, 0x69, 0xcc, 0x71, 0x5b, 0xb8, 0xe1, 0x58, 0xc7, 0xd8, 0x94, 0xd5, 0x68, 0x0f, 0x86, 0x4c, - 0xb7, 0x8d, 0x17, 0x06, 0x29, 0x58, 0xe5, 0xf4, 0xa4, 0x34, 0xe4, 0xb9, 0x6d, 0xfc, 0xf3, 0x93, - 0xd2, 0xfb, 0x87, 0x76, 0x70, 0xd4, 0x3d, 0xb8, 0xd3, 0x74, 0x8f, 0xef, 0x1e, 0x7a, 0xd6, 0x33, - 0x9b, 0xad, 0x34, 0xab, 0x7d, 0x37, 0x5c, 0x8f, 0x1d, 0x9b, 0x4f, 0x6e, 0xfd, 0xa5, 0x1f, 0xe0, - 0x63, 0x42, 0xc9, 0xa4, 0xf4, 0xd0, 0x3e, 0xcc, 0x96, 0x5b, 0x2d, 0x9b, 0x61, 0xd4, 0x3c, 0xdb, - 0x69, 0xda, 0x1d, 0xab, 0xed, 0x2f, 0x0c, 0x5d, 0x1d, 0xbc, 0x35, 0xc6, 0x99, 0x22, 0xeb, 0x1b, - 0x1d, 0x09, 0xa0, 0x30, 0x25, 0x91, 0x00, 0x7a, 0x00, 0xa3, 0xcb, 0x5b, 0x75, 0xd2, 0x77, 0x7f, - 0x61, 0x98, 0x12, 0x9b, 0x3f, 0x3d, 0x29, 0xcd, 0xb4, 0x1c, 0x9f, 0x0e, 0x4d, 0x25, 0x20, 0x01, - 0xd1, 0xfb, 0x30, 0x51, 0xeb, 0x1e, 0xb4, 0xed, 0xe6, 0xce, 0x46, 0xfd, 0x31, 0x7e, 0xb9, 0x70, - 0xee, 0x6a, 0xee, 0xd6, 0x44, 0x05, 0x9d, 0x9e, 0x94, 0xa6, 0x3a, 0xb4, 0xbc, 0x11, 0xb4, 0xfd, - 0xc6, 0x53, 0xfc, 0xd2, 0xd4, 0xe0, 0x42, 0xbc, 0x7a, 0x7d, 0x8d, 0xe0, 0x8d, 0xc4, 0xf0, 0x7c, - 0xff, 0x48, 0xc5, 0x63, 0x70, 0xe8, 0x2e, 0x80, 0x89, 0x8f, 0xdd, 0x00, 0x97, 0x5b, 0x2d, 0x6f, - 0x61, 0x94, 0xf2, 0x76, 0xfa, 0xf4, 0xa4, 0x34, 0xee, 0xd1, 0xd2, 0x86, 0xd5, 0x6a, 0x79, 0xa6, - 0x02, 0x82, 0xaa, 0x30, 0x6a, 0xba, 0x8c, 0xc1, 0x0b, 0x63, 0x57, 0x73, 0xb7, 0xc6, 0x97, 0xa6, - 0xf9, 0x32, 0x14, 0xc5, 0x95, 0x0b, 0xa7, 0x27, 0x25, 0xe4, 0xf1, 0x5f, 0xea, 0x28, 0x05, 0x04, - 0x2a, 0xc1, 0xc8, 0x96, 0x5b, 0xb5, 0x9a, 0x47, 0x78, 0x01, 0xe8, 0xda, 0x1b, 0x3e, 0x3d, 0x29, - 0xe5, 0xbe, 0x63, 0x8a, 0x52, 0xf4, 0x0c, 0xc6, 0xc3, 0x89, 0xf2, 0x17, 0xc6, 0x29, 0xfb, 0x76, - 0x4e, 0x4f, 0x4a, 0x17, 0x7c, 0x5a, 0xdc, 0x20, 0x53, 0xaf, 0x70, 0xf0, 0x35, 0x56, 0x81, 0xda, - 0xd0, 0xa3, 0xa1, 0xd1, 0x89, 0xc2, 0xa4, 0x79, 0x79, 0xd7, 0xf1, 0x03, 0xeb, 0xa0, 0x8d, 0xc3, - 0xaa, 0xb2, 0xef, 0x63, 0x8f, 0xd0, 0x5b, 0x5f, 0x36, 0xfe, 0x57, 0x0e, 0xd0, 0x76, 0x07, 0x3b, - 0xf5, 0xfa, 0x1a, 0x59, 0xf1, 0x62, 0xc1, 0x7f, 0x1b, 0xc6, 0x18, 0x6b, 0x09, 0xff, 0xf3, 0x94, - 0xff, 0x53, 0xa7, 0x27, 0x25, 0xe0, 0xfc, 0x27, 0xbc, 0x0f, 0x01, 0xd0, 0x0d, 0x18, 0xdc, 0xd9, - 0xd9, 0xa0, 0xab, 0x79, 0xb0, 0x32, 0x73, 0x7a, 0x52, 0x1a, 0x0c, 0x82, 0xf6, 0xcf, 0x4f, 0x4a, - 0xa3, 0xcb, 0x5d, 0x8f, 0x76, 0xdc, 0x24, 0xf5, 0xe8, 0x06, 0x8c, 0x54, 0xdb, 0x5d, 0x3f, 0xc0, - 0xde, 0xc2, 0x50, 0xf8, 0x19, 0x35, 0x59, 0x91, 0x29, 0xea, 0xd0, 0xb7, 0x60, 0x68, 0xd7, 0xc7, - 0xde, 0xc2, 0x30, 0x9d, 0x91, 0x49, 0x3e, 0x23, 0xa4, 0x68, 0x6f, 0xa9, 0x32, 0x4a, 0xbe, 0x95, - 0xae, 0x8f, 0x3d, 0x93, 0x02, 0xa1, 0x3b, 0x30, 0xcc, 0xd8, 0x7a, 0x8e, 0x6e, 0x23, 0x93, 0x72, - 0xfe, 0xda, 0x78, 0xef, 0xfd, 0xca, 0xd8, 0xe9, 0x49, 0x69, 0x98, 0xb2, 0xd7, 0x1c, 0x16, 0x4c, - 0xc9, 0x15, 0xf2, 0xe6, 0x28, 0xc1, 0x25, 0x0b, 0xd7, 0xf8, 0x16, 0x8c, 0x2b, 0xc3, 0x47, 0x8b, - 0x30, 0x44, 0xfe, 0xa7, 0x9f, 0xf9, 0x04, 0x6b, 0x8c, 0xec, 0xdf, 0x26, 0x2d, 0x35, 0x7e, 0x7f, - 0x1a, 0x0a, 0x04, 0x53, 0xdb, 0x1b, 0x34, 0x56, 0xe5, 0x7a, 0xb1, 0xea, 0x16, 0xc8, 0xb6, 0xf9, - 0x26, 0x31, 0x71, 0x7a, 0x52, 0x1a, 0xed, 0xf2, 0xb2, 0xb0, 0x67, 0xa8, 0x0e, 0x23, 0x2b, 0x2f, - 0x3a, 0xb6, 0x87, 0x7d, 0xca, 0xd8, 0xf1, 0xa5, 0xe2, 0x1d, 0x76, 0x66, 0xdd, 0x11, 0x67, 0xd6, - 0x9d, 0x1d, 0x71, 0x66, 0x55, 0x2e, 0xf3, 0xcd, 0xf2, 0x3c, 0x66, 0x28, 0xe1, 0x6a, 0xfa, 0xad, - 0x3f, 0x2b, 0xe5, 0x4c, 0x41, 0x09, 0x7d, 0x1b, 0xce, 0x3d, 0x74, 0xbd, 0x63, 0x2b, 0xe0, 0x33, - 0x30, 0x7b, 0x7a, 0x52, 0x2a, 0x3c, 0xa1, 0x25, 0xca, 0xe2, 0xe6, 0x30, 0xe8, 0x21, 0x4c, 0x99, - 0x6e, 0x37, 0xc0, 0x3b, 0xae, 0x98, 0xb7, 0x61, 0x8a, 0x75, 0xe5, 0xf4, 0xa4, 0x54, 0xf4, 0x48, - 0x4d, 0x23, 0x70, 0x1b, 0x7c, 0x02, 0x15, 0xfc, 0x08, 0x16, 0x5a, 0x81, 0xa9, 0x32, 0xdd, 0x5d, - 0x39, 0xcf, 0xd8, 0x6c, 0x8d, 0x55, 0x2e, 0x9f, 0x9e, 0x94, 0x2e, 0x5a, 0xb4, 0xa6, 0xe1, 0xf1, - 0x2a, 0x95, 0x8c, 0x8e, 0x84, 0xb6, 0xe0, 0xfc, 0xe3, 0xee, 0x01, 0xf6, 0x1c, 0x1c, 0x60, 0x5f, - 0xf4, 0x68, 0x84, 0xf6, 0xe8, 0xea, 0xe9, 0x49, 0x69, 0xf1, 0xa9, 0xac, 0x4c, 0xe8, 0x53, 0x1c, - 0x15, 0x61, 0x98, 0xe6, 0x1d, 0x5d, 0xb6, 0x02, 0xeb, 0xc0, 0xf2, 0x31, 0xdd, 0x34, 0xc6, 0x97, - 0x2e, 0x30, 0x16, 0xdf, 0x89, 0xd4, 0x56, 0xae, 0x73, 0x2e, 0x5f, 0x92, 0x63, 0x6f, 0xf1, 0x2a, - 0xa5, 0xa1, 0x28, 0x4d, 0xb2, 0x77, 0xca, 0x73, 0x61, 0x8c, 0xf6, 0x96, 0xee, 0x9d, 0xf2, 0x5c, - 0x50, 0x77, 0x15, 0x79, 0x42, 0x6c, 0xc0, 0xf0, 0x2e, 0x39, 0x3d, 0xe9, 0x9e, 0x32, 0xb5, 0x74, - 0x8d, 0xf7, 0x28, 0xba, 0xfa, 0xee, 0x90, 0x1f, 0x14, 0x90, 0x7e, 0x77, 0xd3, 0xf4, 0xc4, 0x55, - 0xcf, 0x4a, 0x5a, 0x87, 0xbe, 0x00, 0xe0, 0xbd, 0x2a, 0x77, 0x3a, 0x0b, 0xe3, 0x74, 0x90, 0xe7, - 0xf5, 0x41, 0x96, 0x3b, 0x9d, 0xca, 0x15, 0x3e, 0xbe, 0x0b, 0x72, 0x7c, 0x56, 0xa7, 0xa3, 0x50, - 0x53, 0x88, 0xa0, 0xcf, 0x61, 0x82, 0x6e, 0x39, 0x62, 0x46, 0x27, 0xe8, 0x8c, 0x5e, 0x3a, 0x3d, - 0x29, 0xcd, 0x93, 0x0f, 0x2e, 0x69, 0x3e, 0x35, 0x04, 0xf4, 0xab, 0x30, 0xc7, 0xc9, 0xed, 0xdb, - 0x4e, 0xcb, 0x7d, 0xee, 0x2f, 0x63, 0xff, 0x69, 0xe0, 0x76, 0x16, 0x26, 0x69, 0xf7, 0x16, 0xf5, - 0xee, 0xe9, 0x30, 0x95, 0xdb, 0xbc, 0xa7, 0x86, 0xec, 0xe9, 0x73, 0x06, 0xd0, 0x68, 0x31, 0x08, - 0xa5, 0xd9, 0xe4, 0x66, 0xd0, 0x3a, 0x4c, 0xef, 0xfa, 0x58, 0x1b, 0xc3, 0x14, 0xdd, 0xbf, 0x4b, - 0x64, 0x86, 0xbb, 0x3e, 0x6e, 0xa4, 0x8d, 0x23, 0x8a, 0x87, 0x4c, 0x40, 0xcb, 0x9e, 0xdb, 0x89, - 0xac, 0xf1, 0x69, 0xca, 0x11, 0xe3, 0xf4, 0xa4, 0x74, 0xa5, 0xe5, 0xb9, 0x9d, 0x46, 0xfa, 0x42, - 0x4f, 0xc0, 0x46, 0x3f, 0x84, 0x0b, 0x55, 0xd7, 0x71, 0x70, 0x93, 0xec, 0x9f, 0xcb, 0xb6, 0x75, - 0xe8, 0xb8, 0x7e, 0x60, 0x37, 0xd7, 0x97, 0x17, 0x0a, 0x74, 0x0d, 0xdd, 0x24, 0xa3, 0x6f, 0x4a, - 0x88, 0x46, 0x4b, 0x82, 0x34, 0xec, 0x96, 0x42, 0x3b, 0x85, 0x0a, 0xfa, 0x01, 0x4c, 0xf2, 0xb6, - 0xb0, 0x47, 0x97, 0xe6, 0xf9, 0xec, 0x85, 0x26, 0x81, 0xd9, 0x41, 0xec, 0x89, 0x9f, 0x4c, 0xb4, - 0xd1, 0x69, 0xa1, 0xaf, 0x61, 0x7c, 0xf3, 0x61, 0xd9, 0xc4, 0x7e, 0xc7, 0x75, 0x7c, 0xbc, 0x80, - 0xe8, 0x8c, 0x5e, 0xe1, 0xa4, 0x37, 0x1f, 0x96, 0xcb, 0xdd, 0xe0, 0x08, 0x3b, 0x81, 0xdd, 0xb4, - 0x02, 0x2c, 0xa0, 0x2a, 0x45, 0xb2, 0xf2, 0x8e, 0x9f, 0x58, 0x0d, 0x8f, 0x97, 0x28, 0xa3, 0x50, - 0xc9, 0xa1, 0x22, 0x8c, 0xd6, 0xeb, 0x6b, 0x1b, 0xee, 0xa1, 0xed, 0x2c, 0xcc, 0x10, 0x66, 0x98, - 0xf2, 0x37, 0x3a, 0x80, 0x39, 0x45, 0x40, 0x6f, 0x90, 0xff, 0xf1, 0x31, 0x76, 0x82, 0x85, 0x59, - 0xda, 0x87, 0xef, 0xc8, 0x1b, 0xc6, 0x1d, 0x55, 0x8e, 0x7f, 0x76, 0xff, 0x4e, 0x39, 0xfc, 0x59, - 0x17, 0x48, 0xe6, 0xac, 0x95, 0x50, 0x8a, 0x76, 0x60, 0xa4, 0xd6, 0xf5, 0x3a, 0xae, 0x8f, 0x17, - 0xe6, 0x28, 0xd3, 0xae, 0x67, 0x7d, 0x9d, 0x1c, 0xb4, 0x32, 0x47, 0xb6, 0xe7, 0x0e, 0xfb, 0xa1, - 0x8c, 0x4c, 0x90, 0x32, 0xbe, 0x84, 0x31, 0xf9, 0x31, 0xa3, 0x11, 0x18, 0x2c, 0xb7, 0xdb, 0x85, - 0x01, 0xf2, 0x47, 0xbd, 0xbe, 0x56, 0xc8, 0xa1, 0x29, 0x80, 0x70, 0x07, 0x2b, 0xe4, 0xd1, 0x04, - 0x8c, 0x8a, 0x1d, 0xa6, 0x30, 0x48, 0xe1, 0x3b, 0x9d, 0xc2, 0x10, 0x42, 0x30, 0xa5, 0xaf, 0xf3, - 0xc2, 0xb0, 0xf1, 0x02, 0xc6, 0xe4, 0xf4, 0xa0, 0x69, 0x18, 0xdf, 0xdd, 0xaa, 0xd7, 0x56, 0xaa, - 0xeb, 0x0f, 0xd7, 0x57, 0x96, 0x0b, 0x03, 0xe8, 0x32, 0x5c, 0xdc, 0xa9, 0xaf, 0x35, 0x96, 0x2b, - 0x8d, 0x8d, 0xed, 0x6a, 0x79, 0xa3, 0x51, 0x33, 0xb7, 0xbf, 0xfc, 0xaa, 0xb1, 0xb3, 0xbb, 0xb5, - 0xb5, 0xb2, 0x51, 0xc8, 0xa1, 0x05, 0x98, 0x25, 0xd5, 0x8f, 0x77, 0x2b, 0x2b, 0x2a, 0x40, 0x21, - 0x8f, 0xae, 0xc1, 0xe5, 0xa4, 0x9a, 0xc6, 0xda, 0x4a, 0x79, 0x79, 0x63, 0xa5, 0x5e, 0x2f, 0x0c, - 0x1a, 0x6d, 0x18, 0x57, 0x58, 0x80, 0x16, 0x61, 0xa1, 0xba, 0x62, 0xee, 0x34, 0x6a, 0xbb, 0x66, - 0x6d, 0xbb, 0xbe, 0xd2, 0xd0, 0x3b, 0x12, 0xad, 0xdd, 0xd8, 0x5e, 0x5d, 0xdf, 0x6a, 0x90, 0xa2, - 0x7a, 0x21, 0x47, 0x5a, 0xd3, 0x6a, 0xeb, 0xeb, 0x5b, 0xab, 0x1b, 0x2b, 0x8d, 0xdd, 0xfa, 0x0a, - 0x07, 0xc9, 0x1b, 0xff, 0x21, 0x17, 0xdb, 0xd0, 0xd1, 0x12, 0x8c, 0xd7, 0xd9, 0x95, 0x91, 0x2e, - 0x72, 0x26, 0xbe, 0x17, 0x4e, 0x4f, 0x4a, 0x13, 0xfc, 0x26, 0xc9, 0xd6, 0xaf, 0x0a, 0x44, 0xce, - 0xe8, 0x1a, 0x99, 0xcf, 0xa6, 0xdb, 0x56, 0xcf, 0xe8, 0x0e, 0x2f, 0x33, 0x65, 0x2d, 0x5a, 0x52, - 0x4e, 0x73, 0x26, 0xcb, 0x53, 0x79, 0x51, 0x9c, 0xe6, 0xea, 0xce, 0x2e, 0xcf, 0xf5, 0xa5, 0x70, - 0xe2, 0xf8, 0x21, 0x4c, 0x71, 0x12, 0x4e, 0x12, 0x09, 0x67, 0x74, 0x53, 0xf6, 0x4a, 0xf4, 0x71, - 0x74, 0xba, 0xf9, 0x08, 0xe9, 0x61, 0x10, 0xd9, 0x12, 0xcd, 0x08, 0x28, 0x2a, 0xc1, 0x30, 0xfb, - 0x88, 0xd8, 0x20, 0xa9, 0xb0, 0xd4, 0x26, 0x05, 0x26, 0x2b, 0x37, 0x7e, 0x73, 0x50, 0x3d, 0x37, - 0x88, 0x70, 0xa4, 0x30, 0x91, 0x0a, 0x47, 0x94, 0x79, 0xb4, 0x94, 0xc8, 0x41, 0x75, 0xec, 0xfb, - 0x54, 0xac, 0xe4, 0x14, 0xa9, 0x1c, 0xe4, 0xb3, 0x42, 0x72, 0x53, 0x0a, 0x01, 0x88, 0xac, 0xce, - 0x84, 0x22, 0x2a, 0xab, 0x0f, 0x86, 0xb2, 0x3a, 0x17, 0x9b, 0x98, 0xac, 0x1e, 0x82, 0x90, 0x89, - 0xe4, 0xe7, 0x36, 0xed, 0xc3, 0x50, 0x38, 0x91, 0xfc, 0xac, 0xe7, 0x13, 0xa9, 0x00, 0xa1, 0x8f, - 0x00, 0xca, 0xfb, 0x75, 0x2a, 0xf2, 0x9a, 0x5b, 0x5c, 0x76, 0xa1, 0xbb, 0x8c, 0xf5, 0xdc, 0x67, - 0xbb, 0xbb, 0xe5, 0xa9, 0x42, 0xbd, 0x02, 0x8d, 0x2a, 0x30, 0x59, 0xfe, 0x49, 0xd7, 0xc3, 0xeb, - 0x2d, 0xb2, 0x51, 0x05, 0xec, 0xf6, 0x32, 0x56, 0x59, 0x3c, 0x3d, 0x29, 0x2d, 0x58, 0xa4, 0xa2, - 0x61, 0xf3, 0x1a, 0x85, 0x80, 0x8e, 0x82, 0xb6, 0xe1, 0xfc, 0x6a, 0xb5, 0xc6, 0x97, 0x56, 0xb9, - 0xd9, 0x74, 0xbb, 0x4e, 0xc0, 0x05, 0x96, 0x6b, 0xa7, 0x27, 0xa5, 0xcb, 0x87, 0xcd, 0x4e, 0x43, - 0x2c, 0x43, 0x8b, 0x55, 0xab, 0x12, 0x4b, 0x0c, 0xd7, 0x68, 0xc3, 0xd4, 0x2a, 0x0e, 0xc8, 0x52, - 0x12, 0xd2, 0x67, 0xf6, 0x9c, 0x7c, 0x02, 0xe3, 0xfb, 0x76, 0x70, 0x54, 0xc7, 0x4d, 0x0f, 0x07, - 0xe2, 0x6e, 0x4c, 0x39, 0xf0, 0xdc, 0x0e, 0x8e, 0x1a, 0x3e, 0x2b, 0x57, 0xf7, 0x59, 0x05, 0xdc, - 0x58, 0x81, 0x69, 0xde, 0x9a, 0x14, 0x76, 0x97, 0x74, 0x82, 0x39, 0x4a, 0x90, 0xce, 0x82, 0x4a, - 0x50, 0x27, 0xf3, 0xcf, 0xf2, 0x30, 0x57, 0x3d, 0xb2, 0x9c, 0x43, 0x5c, 0xb3, 0x7c, 0xff, 0xb9, - 0xeb, 0xb5, 0x94, 0xce, 0x53, 0x49, 0x3f, 0xd6, 0x79, 0x2a, 0xda, 0x2f, 0xc1, 0xf8, 0x76, 0xbb, - 0x25, 0x70, 0xf8, 0x2d, 0x84, 0xb6, 0xe5, 0xb6, 0x5b, 0x8d, 0x8e, 0xa0, 0xa5, 0x02, 0x11, 0x9c, - 0x2d, 0xfc, 0x5c, 0xe2, 0x0c, 0x86, 0x38, 0x0e, 0x7e, 0xae, 0xe0, 0x28, 0x40, 0x68, 0x05, 0xce, - 0xd7, 0x71, 0xd3, 0x75, 0x5a, 0x0f, 0xad, 0x66, 0xe0, 0x7a, 0x3b, 0xee, 0x53, 0xec, 0xf0, 0xf5, - 0x45, 0x05, 0x35, 0x9f, 0x56, 0x36, 0x9e, 0xd0, 0xda, 0x46, 0x40, 0xaa, 0xcd, 0x38, 0x06, 0xda, - 0x86, 0xd1, 0x7d, 0xae, 0x46, 0xe1, 0x57, 0x97, 0x1b, 0x77, 0xa4, 0x5e, 0xa5, 0xea, 0x61, 0xba, - 0x28, 0xac, 0xb6, 0xbc, 0x7c, 0xc9, 0x73, 0x8f, 0x6e, 0x2e, 0x02, 0xd2, 0x94, 0x44, 0x8c, 0x5d, - 0x98, 0xac, 0xb5, 0xbb, 0x87, 0xb6, 0x43, 0xb6, 0x81, 0x3a, 0xfe, 0x31, 0x5a, 0x06, 0x08, 0x0b, - 0xb8, 0xde, 0x64, 0x86, 0x5f, 0x78, 0xc2, 0x8a, 0xbd, 0x07, 0xfc, 0x43, 0xa2, 0x25, 0x54, 0x42, - 0x35, 0x15, 0x3c, 0xe3, 0x7f, 0x0e, 0x02, 0xe2, 0x13, 0x40, 0x8f, 0xb4, 0x3a, 0x0e, 0xc8, 0xb9, - 0x70, 0x01, 0xf2, 0x52, 0xbd, 0x71, 0xee, 0xf4, 0xa4, 0x94, 0xb7, 0x5b, 0x66, 0x7e, 0x7d, 0x19, - 0xbd, 0x0b, 0xc3, 0x14, 0x8c, 0xf2, 0x7f, 0x4a, 0xb6, 0xa7, 0x52, 0x60, 0x3b, 0x07, 0x3d, 0x6a, - 0x4d, 0x06, 0x8c, 0xde, 0x83, 0xb1, 0x65, 0xdc, 0xc6, 0x87, 0x56, 0xe0, 0x8a, 0xaf, 0x9b, 0x29, - 0x0c, 0x44, 0xa1, 0xb2, 0xe6, 0x42, 0x48, 0x72, 0x3d, 0x31, 0xb1, 0xe5, 0xbb, 0x8e, 0x7a, 0x3d, - 0xf1, 0x68, 0x89, 0x7a, 0x3d, 0x61, 0x30, 0xe8, 0x77, 0x72, 0x30, 0x5e, 0x76, 0x1c, 0x7e, 0x11, - 0xf7, 0x39, 0xd7, 0xe7, 0xee, 0x48, 0xf5, 0xd4, 0x86, 0x75, 0x80, 0xdb, 0x7b, 0x56, 0xbb, 0x8b, - 0xfd, 0xca, 0xd7, 0x44, 0x62, 0xfc, 0x8f, 0x27, 0xa5, 0x8f, 0xcf, 0x70, 0xb5, 0x0e, 0x15, 0x5d, - 0x3b, 0x9e, 0x65, 0x07, 0xfe, 0xe9, 0x49, 0x69, 0xce, 0x0a, 0x1b, 0x54, 0xbf, 0x1b, 0xa5, 0x1f, - 0xe8, 0x1d, 0xf5, 0x4e, 0xca, 0xf7, 0xe2, 0xc8, 0x1d, 0x9f, 0x5f, 0x47, 0xd1, 0x31, 0x4c, 0x97, - 0x7d, 0xbf, 0x7b, 0x8c, 0xeb, 0x81, 0xe5, 0x05, 0xe4, 0x3e, 0x47, 0xf7, 0x87, 0xec, 0xcb, 0xde, - 0xdb, 0x3f, 0x3d, 0x29, 0xe5, 0x88, 0x90, 0x6a, 0x51, 0x54, 0x22, 0xe4, 0x78, 0x41, 0x23, 0xb0, - 0xd5, 0x03, 0x87, 0x5e, 0xfb, 0xa2, 0xb4, 0x8d, 0xeb, 0x52, 0x12, 0x58, 0x5f, 0x4e, 0x9b, 0x71, - 0xa3, 0x0a, 0x8b, 0xab, 0x38, 0x30, 0xb1, 0x8f, 0x03, 0xf1, 0x8d, 0xd0, 0x15, 0x1e, 0x2a, 0xc3, - 0x46, 0xe8, 0x6f, 0x89, 0x4c, 0xa7, 0x9f, 0x7d, 0x17, 0xa2, 0xc6, 0xf8, 0xab, 0x39, 0x28, 0x55, - 0x3d, 0xcc, 0xe4, 0xbb, 0x14, 0x42, 0xd9, 0x7b, 0xd7, 0x22, 0x0c, 0xed, 0xbc, 0xec, 0x88, 0x5b, - 0x32, 0xad, 0x25, 0x93, 0x62, 0xd2, 0xd2, 0x3e, 0x55, 0x0e, 0xc6, 0x13, 0x98, 0x33, 0xb1, 0x83, - 0x9f, 0x5b, 0x07, 0x6d, 0xac, 0xdd, 0xda, 0x4b, 0x30, 0xcc, 0x3e, 0xf4, 0xd8, 0x10, 0x58, 0xf9, - 0xd9, 0x34, 0x20, 0xc6, 0x3f, 0xce, 0x43, 0x81, 0x0d, 0xb7, 0xe2, 0x06, 0xfd, 0x8d, 0x8f, 0x8f, - 0x20, 0xdf, 0x43, 0x69, 0x72, 0x33, 0xe4, 0xf6, 0x60, 0x28, 0x8b, 0xd0, 0xae, 0x92, 0x23, 0x55, - 0x54, 0x92, 0x01, 0xb1, 0x45, 0xc7, 0x74, 0x7d, 0x31, 0xcd, 0x07, 0xfa, 0x8d, 0x1c, 0x9c, 0x63, - 0xcb, 0x38, 0xfb, 0x43, 0xd9, 0x7f, 0x33, 0x1f, 0x4a, 0x21, 0xa0, 0x7f, 0xa9, 0x9f, 0x2d, 0xab, - 0x33, 0xfe, 0x69, 0x1e, 0xce, 0x2b, 0xbc, 0xe2, 0x42, 0xfd, 0x3b, 0x4c, 0x94, 0x52, 0x18, 0x46, - 0xb5, 0xa7, 0x44, 0x94, 0x6a, 0x84, 0x9a, 0x11, 0xca, 0xb9, 0x77, 0x60, 0x94, 0x0c, 0x29, 0xaa, - 0x68, 0xa5, 0x07, 0x3a, 0x03, 0x15, 0xd5, 0x7d, 0x73, 0xef, 0x2e, 0x8c, 0xd2, 0x3f, 0xc9, 0x8c, - 0x0c, 0xa5, 0xcf, 0x88, 0x04, 0x42, 0x36, 0xc0, 0x23, 0xd7, 0x76, 0x36, 0x71, 0x70, 0xe4, 0xb6, - 0xb8, 0x68, 0xb1, 0x4e, 0xb6, 0xdd, 0xff, 0xc7, 0xb5, 0x9d, 0xc6, 0x31, 0x2d, 0x3e, 0xab, 0x22, - 0x2f, 0x24, 0x68, 0x2a, 0xc4, 0x8d, 0x7b, 0x50, 0x20, 0x3b, 0x64, 0xff, 0x4b, 0xcb, 0x98, 0x05, - 0xb4, 0x8a, 0x83, 0x8a, 0xab, 0x9d, 0xdd, 0xc6, 0x24, 0x8c, 0xd7, 0x6c, 0xe7, 0x50, 0xfc, 0xfc, - 0xc3, 0x41, 0x98, 0x60, 0xbf, 0xf9, 0x0c, 0x44, 0x24, 0xac, 0x5c, 0x3f, 0x12, 0xd6, 0x07, 0x30, - 0x49, 0x44, 0x14, 0xec, 0xed, 0x61, 0x8f, 0x48, 0x76, 0x7c, 0x3e, 0xe8, 0x15, 0xd1, 0xa7, 0x15, - 0x8d, 0x67, 0xac, 0xc6, 0xd4, 0x01, 0xd1, 0x06, 0x4c, 0xb1, 0x82, 0x87, 0xd8, 0x0a, 0xba, 0xa1, - 0x96, 0x6b, 0x9a, 0xdf, 0xa5, 0x44, 0x31, 0xdb, 0x3e, 0x39, 0xad, 0x27, 0xbc, 0xd0, 0x8c, 0xe0, - 0xa2, 0xcf, 0x61, 0xba, 0xe6, 0xb9, 0x2f, 0x5e, 0x2a, 0x32, 0x25, 0x3b, 0x41, 0xd8, 0xad, 0x8b, - 0x54, 0x35, 0x54, 0xc9, 0x32, 0x0a, 0x4d, 0xd6, 0xd4, 0xba, 0x5f, 0x71, 0x3d, 0xdb, 0x39, 0xa4, - 0xb3, 0x39, 0xca, 0xd6, 0x94, 0xed, 0x37, 0x0e, 0x68, 0xa1, 0x29, 0xab, 0x23, 0x6a, 0xe6, 0x91, - 0xde, 0x6a, 0xe6, 0x7b, 0x00, 0x1b, 0xae, 0xd5, 0x2a, 0xb7, 0xdb, 0xd5, 0xb2, 0x4f, 0x55, 0x4c, - 0x5c, 0x66, 0x6a, 0xbb, 0x56, 0xab, 0x61, 0xb5, 0xdb, 0x8d, 0xa6, 0xe5, 0x9b, 0x0a, 0xcc, 0xa3, - 0xa1, 0xd1, 0x73, 0x85, 0x11, 0x73, 0x7a, 0xc3, 0x6e, 0x62, 0xc7, 0xc7, 0xfb, 0x96, 0xe7, 0xd8, - 0xce, 0xa1, 0x6f, 0xfc, 0xfe, 0x38, 0x8c, 0xca, 0x21, 0xdf, 0x51, 0x2f, 0x84, 0x5c, 0x12, 0xa3, - 0x3b, 0x54, 0xa8, 0x06, 0x33, 0x15, 0x08, 0x74, 0x91, 0x5e, 0x11, 0xb9, 0x0c, 0x38, 0x42, 0x56, - 0xb7, 0xd5, 0xe9, 0x98, 0xa4, 0x8c, 0x9c, 0x04, 0xcb, 0x15, 0xca, 0xff, 0x51, 0x76, 0x12, 0xb4, - 0x0e, 0xcc, 0xfc, 0x72, 0x85, 0xac, 0xb2, 0xed, 0xf5, 0xe5, 0x2a, 0x65, 0xe5, 0x28, 0x5b, 0x65, - 0xae, 0xdd, 0x6a, 0x9a, 0xb4, 0x94, 0xd4, 0xd6, 0xcb, 0x9b, 0x1b, 0x9c, 0x5d, 0xb4, 0xd6, 0xb7, - 0x8e, 0xdb, 0x26, 0x2d, 0x25, 0x37, 0x13, 0xa6, 0xd1, 0xa8, 0xba, 0x4e, 0xe0, 0xb9, 0x6d, 0x9f, - 0x0a, 0xd0, 0xa3, 0x6c, 0x3a, 0xb9, 0x2a, 0xa4, 0xc9, 0xab, 0xcc, 0x08, 0x28, 0xda, 0x87, 0xf9, - 0x72, 0xeb, 0x99, 0xe5, 0x34, 0x71, 0x8b, 0xd5, 0xec, 0xbb, 0xde, 0xd3, 0x27, 0x6d, 0xf7, 0xb9, - 0x4f, 0xf9, 0x3d, 0xca, 0x35, 0x87, 0x1c, 0x44, 0x68, 0x56, 0x9e, 0x0b, 0x20, 0x33, 0x0d, 0x9b, - 0xec, 0x92, 0xd5, 0xb6, 0xdb, 0x6d, 0xf1, 0x59, 0xa0, 0xbb, 0x64, 0x93, 0x14, 0x98, 0xac, 0x9c, - 0x70, 0x69, 0xad, 0xbe, 0x49, 0xf5, 0x74, 0x9c, 0x4b, 0x47, 0xfe, 0xb1, 0x49, 0xca, 0xd0, 0x0d, - 0x18, 0x11, 0x97, 0x2c, 0xa6, 0xe8, 0xa7, 0xea, 0x6b, 0x71, 0xb9, 0x12, 0x75, 0xe4, 0x93, 0x30, - 0x71, 0xd3, 0x7d, 0x86, 0xbd, 0x97, 0x55, 0xb7, 0x85, 0x85, 0x56, 0x89, 0x6b, 0x4d, 0x58, 0x45, - 0xa3, 0x49, 0x6a, 0x4c, 0x1d, 0x90, 0x34, 0xc0, 0xe4, 0x34, 0x7f, 0x61, 0x3a, 0x6c, 0x80, 0xc9, - 0x71, 0xbe, 0x29, 0xea, 0xd0, 0x32, 0x9c, 0x2f, 0x77, 0x03, 0xf7, 0xd8, 0x0a, 0xec, 0xe6, 0x6e, - 0xe7, 0xd0, 0xb3, 0x48, 0x23, 0x05, 0x8a, 0x40, 0x6f, 0x92, 0x96, 0xa8, 0x6c, 0x74, 0x79, 0xad, - 0x19, 0x47, 0x40, 0xef, 0xc3, 0xc4, 0xba, 0xcf, 0x34, 0x87, 0x96, 0x8f, 0x5b, 0x54, 0xfd, 0xc3, - 0x7b, 0x69, 0xfb, 0x0d, 0xaa, 0x47, 0x6c, 0x90, 0xbb, 0x67, 0xcb, 0xd4, 0xe0, 0x90, 0x01, 0xe7, - 0xca, 0xbe, 0x6f, 0xfb, 0x01, 0xd5, 0xea, 0x8c, 0x56, 0xe0, 0xf4, 0xa4, 0x74, 0xce, 0xa2, 0x25, - 0x26, 0xaf, 0x41, 0xfb, 0x30, 0xbe, 0x8c, 0xc9, 0xbd, 0x65, 0xc7, 0xeb, 0xfa, 0x01, 0xd5, 0xd1, - 0x8c, 0x2f, 0x5d, 0xe4, 0x1f, 0xb6, 0x52, 0xc3, 0xd7, 0x32, 0xbb, 0x91, 0xb4, 0x68, 0x79, 0x23, - 0x20, 0x15, 0xaa, 0x64, 0xa5, 0xc0, 0x93, 0x4b, 0x19, 0xc7, 0x59, 0xb3, 0x5b, 0xe4, 0x53, 0x9d, - 0xa5, 0x7d, 0xa0, 0x97, 0x32, 0xbe, 0x37, 0x34, 0x8e, 0x68, 0x8d, 0x7a, 0x29, 0xd3, 0x50, 0x50, - 0x33, 0xa6, 0x8c, 0x9e, 0xd3, 0x14, 0x8e, 0x7a, 0xa5, 0xe8, 0xe2, 0x19, 0x55, 0xd5, 0x9f, 0xc0, - 0x78, 0xb5, 0xeb, 0x07, 0xee, 0xf1, 0xce, 0x11, 0x3e, 0xc6, 0x0b, 0x17, 0xc2, 0xab, 0x67, 0x93, - 0x16, 0x37, 0x02, 0x52, 0xae, 0x0e, 0x53, 0x01, 0x47, 0x5f, 0x00, 0x12, 0x77, 0xc8, 0x55, 0xb2, - 0x3e, 0x1c, 0xb2, 0x96, 0x17, 0xe6, 0xe9, 0x58, 0xe9, 0xc5, 0x51, 0x5c, 0x3d, 0x1b, 0x87, 0xb2, - 0x5a, 0x55, 0x27, 0xc6, 0x91, 0x49, 0x87, 0x58, 0x17, 0x57, 0x3d, 0xab, 0x73, 0xb4, 0xb0, 0x10, - 0xde, 0x04, 0xf9, 0xa0, 0x0e, 0x49, 0xb9, 0x26, 0xd1, 0x86, 0xe0, 0xa8, 0x0e, 0xc0, 0x7e, 0x6e, - 0x90, 0x89, 0xbf, 0x48, 0xf9, 0xb5, 0xa0, 0xf1, 0x8b, 0x54, 0x08, 0x5e, 0x5d, 0xa4, 0x72, 0x32, - 0x23, 0xdb, 0xb6, 0xb5, 0xd9, 0x54, 0xc8, 0xa0, 0xa7, 0x50, 0x60, 0xbf, 0x36, 0x5d, 0xc7, 0x0e, - 0xd8, 0xd6, 0x5b, 0xd4, 0x34, 0x85, 0xd1, 0x6a, 0xd1, 0x00, 0xd5, 0xd0, 0xf2, 0x06, 0x8e, 0x65, - 0xad, 0xd2, 0x4c, 0x8c, 0x30, 0xaa, 0xc1, 0x78, 0xcd, 0x73, 0x5b, 0xdd, 0x66, 0x40, 0x85, 0xca, - 0x4b, 0xf4, 0x32, 0x83, 0x78, 0x3b, 0x4a, 0x0d, 0xe3, 0x49, 0x87, 0x15, 0x34, 0xc8, 0xb9, 0xac, - 0xf2, 0x44, 0x01, 0x7c, 0x34, 0x34, 0x3a, 0x5e, 0x98, 0x60, 0x8f, 0x6c, 0x8f, 0x86, 0x46, 0x27, - 0x0b, 0x53, 0xc6, 0xef, 0xe6, 0x00, 0xc5, 0x57, 0x37, 0xba, 0x0b, 0x23, 0xd8, 0x21, 0x02, 0x68, - 0x8b, 0xef, 0xd2, 0xf4, 0x4c, 0xe2, 0x45, 0xaa, 0x26, 0x90, 0x17, 0xa1, 0x2f, 0x60, 0x86, 0x7d, - 0x0c, 0xe2, 0x3b, 0x6c, 0xdb, 0xc7, 0x76, 0x40, 0x77, 0xee, 0x61, 0x36, 0xff, 0x09, 0xd5, 0xaa, - 0xe2, 0x80, 0x57, 0xd3, 0xaf, 0x76, 0x83, 0x54, 0x1a, 0x5d, 0x98, 0x4b, 0x5c, 0xd7, 0x68, 0x13, - 0xe6, 0x8e, 0x5d, 0x27, 0x38, 0x6a, 0xbf, 0x14, 0xcb, 0x9a, 0xb7, 0x96, 0xa3, 0xad, 0xd1, 0xa9, - 0x4c, 0x04, 0x30, 0x67, 0x78, 0x31, 0xa7, 0x48, 0xdb, 0x79, 0x34, 0x34, 0x9a, 0x2f, 0x0c, 0xca, - 0x91, 0x18, 0x26, 0x9c, 0x8f, 0x2d, 0x0f, 0xf4, 0x29, 0x4c, 0x34, 0xa9, 0xf8, 0xa7, 0xb5, 0xc4, - 0x3e, 0x0e, 0xa5, 0x5c, 0xe5, 0x3b, 0x2b, 0x67, 0x43, 0xf9, 0x87, 0x39, 0x98, 0x4f, 0x59, 0x18, - 0x67, 0x67, 0xf5, 0x57, 0x70, 0xe1, 0xd8, 0x7a, 0xd1, 0xf0, 0xa8, 0x28, 0xd6, 0xf0, 0x2c, 0x27, - 0xc2, 0xed, 0xb7, 0x4e, 0x4f, 0x4a, 0x57, 0x93, 0x21, 0x54, 0x43, 0x82, 0x63, 0xeb, 0x85, 0x49, - 0x01, 0x4c, 0x52, 0xcf, 0xfa, 0x79, 0x1f, 0xce, 0x33, 0xb1, 0xad, 0x6f, 0x75, 0x8d, 0x51, 0x03, - 0xa8, 0xe3, 0x63, 0xab, 0x73, 0xe4, 0x92, 0x03, 0xbe, 0xa2, 0xfe, 0xe2, 0xd7, 0x7d, 0xc4, 0xaf, - 0xdf, 0xb2, 0x62, 0xef, 0x81, 0xd0, 0xb2, 0x09, 0x48, 0x53, 0xc1, 0x32, 0xfe, 0x38, 0x0f, 0xa8, - 0xdc, 0x6d, 0xd9, 0x41, 0x3d, 0xf0, 0xb0, 0x75, 0x2c, 0xba, 0xf1, 0x21, 0x4c, 0x30, 0x09, 0x9c, - 0x15, 0xd3, 0xee, 0x8c, 0x2f, 0xcd, 0xf0, 0xcf, 0x41, 0xad, 0x5a, 0x1b, 0x30, 0x35, 0x50, 0x82, - 0x6a, 0x62, 0x76, 0xab, 0xa4, 0xa8, 0x79, 0x0d, 0x55, 0xad, 0x22, 0xa8, 0xea, 0x6f, 0xf4, 0x39, - 0x4c, 0x55, 0xdd, 0xe3, 0x0e, 0xe1, 0x09, 0x47, 0x1e, 0xe4, 0x17, 0x11, 0xde, 0xae, 0x56, 0xb9, - 0x36, 0x60, 0x46, 0xc0, 0xd1, 0x16, 0xcc, 0x3c, 0x6c, 0x77, 0xfd, 0xa3, 0xb2, 0xd3, 0xaa, 0xb6, - 0x5d, 0x5f, 0x50, 0x19, 0xe2, 0x37, 0x66, 0x2e, 0x38, 0xc6, 0x21, 0xd6, 0x06, 0xcc, 0x24, 0x44, - 0x74, 0x03, 0x86, 0x57, 0x9e, 0x61, 0x27, 0x90, 0x4f, 0xcd, 0xdc, 0x56, 0x65, 0xdb, 0xc1, 0xdb, - 0x4f, 0xd6, 0x06, 0x4c, 0x56, 0x5b, 0x19, 0x83, 0x11, 0x21, 0x34, 0xdf, 0x25, 0x67, 0xaf, 0x64, - 0x67, 0x3d, 0xb0, 0x82, 0xae, 0x8f, 0x8a, 0x30, 0xba, 0xdb, 0x21, 0xb2, 0x9c, 0xb8, 0x11, 0x9b, - 0xf2, 0xb7, 0xf1, 0x6d, 0x9d, 0xd3, 0x68, 0x51, 0xd5, 0x92, 0x32, 0xe0, 0xb0, 0xc0, 0x58, 0xd3, - 0x99, 0x9b, 0x0d, 0xad, 0xb5, 0x9b, 0x8f, 0xb4, 0x5b, 0x88, 0xf2, 0xda, 0x98, 0x4b, 0x64, 0x9e, - 0xf1, 0x25, 0x5c, 0xd9, 0xed, 0xf8, 0xd8, 0x0b, 0xca, 0x9d, 0x4e, 0xdb, 0x6e, 0xb2, 0xa7, 0x0e, - 0x2a, 0x5c, 0x8b, 0xc5, 0xf2, 0x3e, 0x9c, 0x63, 0x05, 0x7c, 0x99, 0x88, 0x35, 0x58, 0xee, 0x74, - 0xb8, 0x48, 0xff, 0x80, 0x49, 0x01, 0x4c, 0x48, 0x37, 0x39, 0xb4, 0xf1, 0x5b, 0x39, 0xb8, 0xc2, - 0xbe, 0x80, 0x54, 0xd2, 0xdf, 0x82, 0x31, 0x6a, 0x2a, 0xd2, 0xb1, 0x9a, 0xda, 0xad, 0xcf, 0x11, - 0x85, 0x66, 0x58, 0xaf, 0x18, 0xe1, 0xe4, 0xd3, 0x8d, 0x70, 0xc4, 0x07, 0x36, 0x98, 0xf8, 0x81, - 0x7d, 0x01, 0x06, 0xef, 0x51, 0xbb, 0x1d, 0xeb, 0x94, 0xff, 0x2a, 0xbd, 0x32, 0xfe, 0x32, 0x0f, - 0xf3, 0xab, 0xd8, 0xc1, 0x9e, 0x45, 0xc7, 0xa9, 0x29, 0x38, 0xd4, 0xc7, 0xfe, 0x5c, 0xe6, 0x63, - 0xbf, 0xbc, 0xbd, 0xe7, 0x53, 0x6e, 0xef, 0x17, 0x61, 0x70, 0xd7, 0x5c, 0xe7, 0xc3, 0xa2, 0x72, - 0x69, 0xd7, 0xb3, 0x4d, 0x52, 0x86, 0xd6, 0x43, 0x43, 0x81, 0xa1, 0x9e, 0xba, 0xa3, 0x19, 0xfe, - 0x70, 0x3a, 0xc2, 0x0d, 0x05, 0x74, 0xf3, 0x80, 0x2d, 0x45, 0x45, 0x40, 0xb6, 0x9b, 0xdb, 0xfc, - 0x9b, 0x4a, 0x19, 0x20, 0xbf, 0xed, 0xaf, 0x38, 0x81, 0xf7, 0x92, 0x2d, 0x01, 0x76, 0xe9, 0x17, - 0x57, 0xfd, 0xe2, 0x17, 0x30, 0xae, 0x80, 0xa0, 0x02, 0x0c, 0x3e, 0xe5, 0x46, 0x12, 0x63, 0x26, - 0xf9, 0x13, 0x7d, 0x1b, 0x86, 0x9f, 0x59, 0xed, 0x2e, 0xe6, 0xdb, 0xc8, 0x85, 0x50, 0x25, 0x51, - 0x0f, 0xc8, 0xc6, 0xce, 0x74, 0x12, 0x26, 0x03, 0xfa, 0x28, 0xff, 0x41, 0xce, 0xf8, 0x18, 0x16, - 0xe2, 0xbd, 0xe1, 0x37, 0xd8, 0x5e, 0x4a, 0x1d, 0x63, 0x19, 0x66, 0x57, 0x71, 0x40, 0x17, 0x2e, - 0xfd, 0x88, 0x14, 0x1b, 0x8e, 0xc8, 0x77, 0x96, 0xf1, 0x76, 0x61, 0xd4, 0x61, 0x2e, 0x42, 0x85, - 0xb7, 0xff, 0x11, 0x8c, 0xf0, 0x22, 0xb9, 0xa3, 0x72, 0xab, 0x36, 0x7c, 0xc0, 0x2b, 0xf6, 0x96, - 0xd8, 0xba, 0xe5, 0x94, 0x4d, 0x81, 0x60, 0x1c, 0xc1, 0x05, 0x72, 0x48, 0x86, 0x54, 0xe5, 0x72, - 0xbc, 0x04, 0x63, 0x1d, 0x72, 0xcc, 0xfb, 0xf6, 0x4f, 0xd8, 0x32, 0x1a, 0x36, 0x47, 0x49, 0x41, - 0xdd, 0xfe, 0x09, 0x46, 0x97, 0x01, 0x68, 0x25, 0x1d, 0x26, 0xdf, 0x05, 0x28, 0x38, 0xd3, 0x62, - 0x21, 0xa0, 0xc6, 0x32, 0x6c, 0xdd, 0x98, 0xf4, 0x6f, 0xc3, 0x83, 0xf9, 0x58, 0x4b, 0x7c, 0x00, - 0x77, 0x61, 0x94, 0x77, 0xcc, 0x8f, 0xe8, 0x97, 0xd5, 0x11, 0x98, 0x12, 0x08, 0xdd, 0x84, 0x69, - 0x07, 0xbf, 0x08, 0x1a, 0xb1, 0x3e, 0x4c, 0x92, 0xe2, 0x9a, 0xe8, 0x87, 0xf1, 0x4b, 0x54, 0xa7, - 0x58, 0x77, 0xdc, 0xe7, 0x4f, 0xda, 0xd6, 0x53, 0x1c, 0x6b, 0xf8, 0x53, 0x18, 0xad, 0xf7, 0x6e, - 0x98, 0x7d, 0x3e, 0xa2, 0x71, 0x53, 0xa2, 0x18, 0x6d, 0x28, 0x92, 0x21, 0x91, 0x8b, 0xe7, 0x7a, - 0xab, 0xf6, 0x4d, 0x33, 0xf0, 0x19, 0x5c, 0x4a, 0x6c, 0xed, 0x9b, 0x66, 0xe2, 0x9f, 0xe7, 0x61, - 0x9e, 0x1d, 0x26, 0xf1, 0x15, 0xdc, 0xff, 0x56, 0xf3, 0x0b, 0x79, 0x79, 0xbb, 0x97, 0xf0, 0xf2, - 0x46, 0x51, 0xd4, 0x97, 0x37, 0xed, 0xbd, 0xed, 0x83, 0xe4, 0xf7, 0x36, 0x7a, 0x21, 0xd5, 0xdf, - 0xdb, 0xa2, 0xaf, 0x6c, 0x2b, 0xe9, 0xaf, 0x6c, 0xf4, 0xcd, 0x21, 0xe1, 0x95, 0x2d, 0xe1, 0x6d, - 0x8d, 0x89, 0xae, 0xc6, 0x1e, 0x2c, 0xc4, 0x59, 0xfc, 0x06, 0x3e, 0xef, 0x3f, 0xca, 0xc1, 0x65, - 0x2e, 0x08, 0x44, 0x3e, 0x82, 0xb3, 0xcf, 0xe0, 0x7b, 0x30, 0xc1, 0x71, 0x77, 0xc2, 0xc5, 0x52, - 0x39, 0x7f, 0x7a, 0x52, 0x9a, 0x14, 0x1b, 0x16, 0xdb, 0xf5, 0x34, 0x30, 0xf4, 0x9e, 0xa2, 0xe3, - 0x64, 0x7a, 0x73, 0x22, 0xdd, 0x8f, 0x31, 0x65, 0x68, 0xaa, 0xa6, 0xd3, 0xf8, 0x1a, 0xae, 0xa4, - 0x75, 0xfc, 0x0d, 0xf0, 0xe5, 0x5f, 0xe4, 0xe0, 0x12, 0x27, 0xaf, 0x7d, 0x4e, 0xaf, 0xb4, 0x33, - 0x9f, 0xc1, 0xba, 0xee, 0x11, 0x8c, 0x93, 0x06, 0x45, 0xbf, 0x07, 0xf9, 0xf1, 0xc3, 0xa5, 0xeb, - 0xb0, 0x66, 0xd9, 0x0a, 0x2c, 0x6e, 0x2f, 0x60, 0x1d, 0xb7, 0x1b, 0xa2, 0xff, 0x2a, 0xb2, 0xf1, - 0x7d, 0x58, 0x4c, 0x1e, 0xc2, 0x1b, 0xe0, 0xcf, 0x23, 0x28, 0x26, 0x6c, 0x9c, 0xaf, 0x76, 0x6e, - 0x7d, 0x05, 0x97, 0x12, 0x69, 0xbd, 0x81, 0x6e, 0xae, 0x91, 0x53, 0x39, 0x78, 0x03, 0x53, 0x68, - 0xec, 0xc3, 0xc5, 0x04, 0x4a, 0x6f, 0xa0, 0x8b, 0xab, 0x30, 0x2f, 0xa5, 0xd1, 0xd7, 0xea, 0xe1, - 0x26, 0x5c, 0x66, 0x84, 0xde, 0xcc, 0xac, 0x3c, 0x86, 0x4b, 0x9c, 0xdc, 0x1b, 0xe0, 0xde, 0x1a, - 0x2c, 0x86, 0x97, 0xce, 0x04, 0x59, 0xa2, 0xef, 0x4d, 0xc6, 0xd8, 0x80, 0xab, 0x21, 0xa5, 0x94, - 0x83, 0xb5, 0x7f, 0x6a, 0x4c, 0x64, 0x0a, 0x67, 0xe9, 0x8d, 0xcc, 0xe8, 0x3e, 0x5c, 0xd0, 0x88, - 0xbe, 0x31, 0x71, 0x62, 0x1d, 0x66, 0x18, 0x61, 0x5d, 0xbc, 0x5c, 0x52, 0xc5, 0xcb, 0xf1, 0xa5, - 0xf3, 0x21, 0x49, 0x5a, 0xbc, 0xf7, 0x20, 0x41, 0xe2, 0xdc, 0xa4, 0x12, 0xa7, 0x00, 0x09, 0x7b, - 0xf8, 0x1e, 0x9c, 0x63, 0x25, 0xbc, 0x7f, 0x09, 0xc4, 0x98, 0x40, 0xcd, 0xd0, 0x38, 0xb0, 0xf1, - 0x43, 0xb8, 0xcc, 0x6e, 0x6b, 0xa1, 0x62, 0x5f, 0xbf, 0x51, 0x7d, 0x1a, 0xb9, 0xac, 0x5d, 0xe4, - 0x74, 0xa3, 0xf0, 0x29, 0x77, 0xb6, 0x03, 0xb1, 0xb6, 0xd3, 0xe8, 0xf7, 0xe5, 0x09, 0x21, 0x2e, - 0x61, 0xf9, 0xc4, 0x4b, 0xd8, 0x75, 0xb8, 0x26, 0x2f, 0x61, 0xd1, 0x66, 0xe4, 0x63, 0xd5, 0xf7, - 0xe1, 0x12, 0x1b, 0xa8, 0xb0, 0x81, 0xd2, 0xbb, 0xf1, 0x71, 0x64, 0x98, 0xf3, 0x7c, 0x98, 0x3a, - 0x74, 0xca, 0x20, 0xff, 0x46, 0x4e, 0x7c, 0x72, 0xc9, 0xc4, 0x7f, 0xd1, 0xb7, 0xd2, 0x2d, 0x28, - 0x49, 0x86, 0xe8, 0x3d, 0x7a, 0xb5, 0x2b, 0xe9, 0x26, 0xcc, 0xa9, 0x64, 0xec, 0x26, 0xde, 0xbb, - 0x4f, 0x35, 0xae, 0xef, 0x92, 0xcf, 0x82, 0x16, 0x88, 0x65, 0xb7, 0x90, 0xc0, 0x37, 0x0a, 0x6f, - 0x4a, 0x48, 0xa3, 0x01, 0x8b, 0xf1, 0xa9, 0xb0, 0x9b, 0xc2, 0xfc, 0x15, 0x7d, 0x4e, 0x3e, 0x61, - 0x5a, 0xc2, 0x27, 0x23, 0x95, 0xa8, 0xf8, 0x8e, 0x19, 0xba, 0xc0, 0x32, 0x0c, 0xb1, 0xd5, 0x44, - 0xc6, 0x4f, 0x5a, 0x17, 0xeb, 0xe1, 0x57, 0x00, 0x89, 0xaa, 0x6a, 0xdd, 0x14, 0x4d, 0x5f, 0x84, - 0xc1, 0x6a, 0xdd, 0xe4, 0x56, 0xf7, 0xf4, 0x56, 0xdc, 0xf4, 0x3d, 0x93, 0x94, 0x45, 0xa5, 0xd6, - 0x7c, 0x1f, 0x52, 0xeb, 0xa3, 0xa1, 0xd1, 0xc1, 0xc2, 0x90, 0x89, 0xea, 0xf6, 0xa1, 0xb3, 0x6f, - 0x07, 0x47, 0xb2, 0xc1, 0xb2, 0xf1, 0x03, 0x98, 0xd1, 0x9a, 0xe7, 0x5f, 0x71, 0xa6, 0xbb, 0x00, - 0xba, 0x09, 0x23, 0xd5, 0x32, 0xb5, 0x3a, 0xa0, 0xd7, 0xfa, 0x09, 0xb6, 0xdf, 0x34, 0xad, 0x06, - 0x75, 0x09, 0x33, 0x45, 0xa5, 0xf1, 0x0f, 0x86, 0x14, 0xea, 0x8a, 0x13, 0x46, 0xc6, 0xe8, 0xee, - 0x03, 0xb0, 0x15, 0xa2, 0x0c, 0x8e, 0x08, 0x80, 0xe3, 0xfc, 0xa1, 0x94, 0x6d, 0xc9, 0xa6, 0x02, - 0xd4, 0xaf, 0x93, 0x06, 0x37, 0x98, 0x64, 0x48, 0xc2, 0x9a, 0x40, 0x1a, 0x4c, 0x72, 0xd2, 0xbe, - 0xa9, 0x02, 0xa1, 0x1f, 0x46, 0x6d, 0x89, 0x87, 0xa9, 0x7a, 0xfd, 0x2d, 0xf1, 0xe2, 0x13, 0x1f, - 0xdb, 0xd9, 0xcc, 0x89, 0x9f, 0xc3, 0x1c, 0xc1, 0xb5, 0x9f, 0x50, 0x83, 0xe1, 0x95, 0x17, 0x01, - 0x76, 0xd8, 0xde, 0x7e, 0x8e, 0xb6, 0x73, 0x23, 0xa3, 0x9d, 0x10, 0x98, 0x6b, 0x98, 0x43, 0x3a, - 0x0d, 0x2c, 0xeb, 0xcc, 0x64, 0xfa, 0x74, 0x11, 0x99, 0x1b, 0x2b, 0x4e, 0xab, 0xe3, 0xda, 0xf2, - 0x52, 0xc1, 0x16, 0x91, 0xd7, 0x6e, 0x60, 0x5e, 0x6e, 0xaa, 0x40, 0xc6, 0xcd, 0x4c, 0x6b, 0xdb, - 0x51, 0x18, 0xda, 0xa9, 0xee, 0x6c, 0x14, 0x72, 0xc6, 0x5d, 0x00, 0xa5, 0x25, 0x80, 0x73, 0x5b, - 0xdb, 0xe6, 0x66, 0x79, 0xa3, 0x30, 0x80, 0xe6, 0xe0, 0xfc, 0xfe, 0xfa, 0xd6, 0xf2, 0xf6, 0x7e, - 0xbd, 0x51, 0xdf, 0x2c, 0x9b, 0x3b, 0xd5, 0xb2, 0xb9, 0x5c, 0xc8, 0x19, 0x5f, 0xc3, 0xac, 0x3e, - 0xc2, 0x37, 0xba, 0x08, 0x03, 0x98, 0x91, 0xf2, 0xcc, 0xa3, 0xfd, 0x1d, 0xc5, 0xe0, 0x8f, 0x5f, - 0x90, 0xa2, 0x46, 0x01, 0xfc, 0x2a, 0xc5, 0x3f, 0x23, 0x05, 0x48, 0x33, 0xe5, 0xc8, 0x67, 0x9a, - 0x72, 0x18, 0xdf, 0x85, 0x59, 0xbd, 0xd5, 0x7e, 0x35, 0x39, 0x6f, 0x51, 0x4b, 0x48, 0xc5, 0x0a, - 0x9f, 0xdc, 0xd4, 0xc3, 0x2e, 0xf2, 0x9d, 0xf5, 0xbb, 0x50, 0xe0, 0x50, 0xe1, 0xc9, 0x7b, 0x5d, - 0xa8, 0xda, 0x72, 0x09, 0x1e, 0x43, 0x5c, 0xdd, 0x66, 0xbc, 0x2f, 0x4c, 0x54, 0xd4, 0x16, 0xae, - 0x71, 0xaf, 0xbd, 0x9c, 0xe6, 0x98, 0xc4, 0x11, 0x69, 0x15, 0xc1, 0xdb, 0xed, 0xb4, 0x5e, 0x11, - 0x8f, 0xec, 0xb1, 0x67, 0xc4, 0x7b, 0x5b, 0x3c, 0x32, 0xf4, 0xe2, 0xc4, 0x1f, 0xe7, 0x60, 0x21, - 0x62, 0x78, 0x5f, 0x3d, 0xb2, 0xda, 0x6d, 0xec, 0x1c, 0x62, 0x74, 0x0b, 0x86, 0x76, 0xb6, 0x77, - 0x6a, 0x5c, 0x09, 0x37, 0xcb, 0x3f, 0x27, 0x52, 0x24, 0x61, 0x4c, 0x0a, 0x81, 0x1e, 0xc3, 0x79, - 0x61, 0x9f, 0x28, 0xab, 0xf8, 0xe5, 0xe9, 0x72, 0xb6, 0xb5, 0x63, 0x1c, 0x0f, 0xbd, 0xcb, 0xbd, - 0x04, 0x7e, 0xdc, 0xb5, 0x3d, 0xdc, 0xa2, 0x8a, 0x85, 0xf0, 0x4d, 0x4e, 0xa9, 0x31, 0x55, 0x30, - 0xe6, 0xc1, 0x65, 0xfc, 0x4e, 0x0e, 0xe6, 0x53, 0x1c, 0x09, 0xd0, 0x3b, 0xda, 0x70, 0x66, 0x94, - 0xe1, 0x08, 0x90, 0xb5, 0x01, 0x3e, 0x9e, 0xaa, 0x62, 0xb4, 0x39, 0x78, 0x06, 0xa3, 0xcd, 0xb5, - 0x81, 0xd0, 0x50, 0xb3, 0x02, 0x30, 0x2a, 0xca, 0x8d, 0x69, 0x98, 0xd4, 0xf8, 0x66, 0x18, 0x30, - 0xa1, 0xb6, 0x4c, 0x26, 0xa7, 0xea, 0xb6, 0xe4, 0xe4, 0x90, 0xbf, 0x8d, 0xbf, 0x95, 0x83, 0x59, - 0x3a, 0xc4, 0x43, 0x9b, 0xec, 0x1a, 0x21, 0x87, 0x96, 0xb4, 0x91, 0x2c, 0x6a, 0x23, 0x89, 0xc0, - 0xca, 0x21, 0x7d, 0x14, 0x1b, 0xd2, 0x62, 0xd2, 0x90, 0xe8, 0xf2, 0xb6, 0x5d, 0x47, 0x1b, 0x89, - 0xf2, 0xd2, 0xf1, 0xbb, 0x39, 0x98, 0x51, 0xfa, 0x24, 0xfb, 0x7f, 0x5f, 0xeb, 0xd2, 0xa5, 0x84, - 0x2e, 0xc5, 0x98, 0x5c, 0x89, 0xf5, 0xe8, 0xad, 0xac, 0x1e, 0xf5, 0xe4, 0xf1, 0x7f, 0xce, 0xc1, - 0x5c, 0x22, 0x0f, 0xd0, 0x05, 0x22, 0x16, 0x36, 0x3d, 0x1c, 0x70, 0xf6, 0xf2, 0x5f, 0xa4, 0x7c, - 0xdd, 0xf7, 0xbb, 0xd8, 0xe3, 0x8a, 0x35, 0xfe, 0x0b, 0xbd, 0x05, 0x93, 0x35, 0xec, 0xd9, 0x6e, - 0x8b, 0x99, 0xf3, 0x32, 0x1b, 0xa4, 0x49, 0x53, 0x2f, 0x44, 0x8b, 0x30, 0x56, 0x6e, 0x1f, 0xba, - 0x9e, 0x1d, 0x1c, 0xb1, 0xc7, 0xa6, 0x31, 0x33, 0x2c, 0x20, 0xb4, 0x97, 0xed, 0x43, 0x61, 0x56, - 0x37, 0x69, 0xf2, 0x5f, 0x68, 0x01, 0x46, 0x84, 0x32, 0x8a, 0xaa, 0xb2, 0x4c, 0xf1, 0x93, 0x60, - 0x7c, 0x61, 0xd2, 0x45, 0x40, 0x3d, 0x5b, 0x4d, 0xfe, 0x0b, 0x4d, 0x51, 0x83, 0x4c, 0xea, 0xb7, - 0x4a, 0x0d, 0x31, 0x3f, 0x82, 0xd9, 0x24, 0xbe, 0x26, 0x2d, 0x21, 0x8e, 0x9b, 0x97, 0xb8, 0xff, - 0x7f, 0x1e, 0x66, 0xca, 0xad, 0xd6, 0xe6, 0xc3, 0x32, 0x7b, 0x91, 0x16, 0x7b, 0xc3, 0xbb, 0x30, - 0xb4, 0xee, 0xf0, 0x47, 0x57, 0xe5, 0xa1, 0x3d, 0x0e, 0x49, 0xa0, 0xc8, 0x0c, 0x92, 0xff, 0x91, - 0x09, 0x33, 0x2b, 0x2f, 0x6c, 0x3f, 0xb0, 0x9d, 0x43, 0xd5, 0xaf, 0x27, 0xdf, 0x8f, 0x5f, 0xcf, - 0xda, 0x80, 0x99, 0x84, 0x8c, 0x76, 0xe0, 0xc2, 0x16, 0x7e, 0x9e, 0xb0, 0xc4, 0xa4, 0xbb, 0xa3, - 0xb2, 0x11, 0xc4, 0x56, 0x56, 0x0a, 0xae, 0xba, 0x82, 0x7f, 0x23, 0x4f, 0xbd, 0xa1, 0x95, 0x81, - 0xf1, 0x96, 0x77, 0x61, 0x56, 0xe9, 0x50, 0xb8, 0x8f, 0x31, 0x9e, 0x94, 0x92, 0x87, 0xa3, 0x7e, - 0x68, 0x89, 0xe8, 0x68, 0x1f, 0xe6, 0xf5, 0x4e, 0x85, 0x94, 0xf5, 0x8f, 0x25, 0x09, 0x64, 0x6d, - 0xc0, 0x4c, 0xc3, 0x46, 0x4b, 0x30, 0x58, 0x6e, 0x3e, 0xe5, 0x6c, 0x49, 0x9e, 0x32, 0x36, 0xb2, - 0x72, 0xf3, 0xe9, 0xda, 0x80, 0x49, 0x80, 0xb5, 0xef, 0xe5, 0x5f, 0xe5, 0x60, 0x3e, 0x65, 0x86, - 0xd1, 0x15, 0x00, 0x56, 0xa8, 0x9c, 0x18, 0x4a, 0x09, 0x11, 0x34, 0xb9, 0x49, 0xc3, 0xcb, 0x0e, - 0x9b, 0x99, 0x29, 0xe9, 0x39, 0x18, 0x56, 0x98, 0x0a, 0x10, 0xaa, 0x09, 0xeb, 0x1f, 0xe6, 0xc0, - 0xa8, 0x6f, 0xeb, 0x4a, 0x8d, 0x66, 0xf6, 0x13, 0x75, 0x5c, 0x54, 0x49, 0x70, 0xd5, 0x6c, 0x35, - 0x3a, 0x0a, 0x39, 0x68, 0x74, 0x0b, 0xce, 0xb1, 0x42, 0x3e, 0x87, 0x22, 0x9a, 0x40, 0x08, 0xcc, - 0xeb, 0x8d, 0xbf, 0x9b, 0x83, 0x0b, 0xec, 0xc4, 0x8c, 0x7d, 0x1a, 0xdf, 0xd5, 0x3e, 0x8d, 0x6b, - 0xb2, 0xc3, 0x49, 0xc0, 0xda, 0xd7, 0x51, 0xd1, 0xbd, 0xdd, 0xfa, 0xfd, 0x2a, 0x54, 0x24, 0x75, - 0xdd, 0xfe, 0xfd, 0x9c, 0xd0, 0x54, 0xc5, 0x97, 0xee, 0x0a, 0x4c, 0xbc, 0xda, 0x92, 0xd5, 0xd0, - 0xd0, 0x7b, 0x6c, 0x45, 0xe5, 0xb3, 0x47, 0x9a, 0xb9, 0xa8, 0x3e, 0x81, 0x62, 0x3a, 0x6b, 0x7a, - 0x2d, 0x2b, 0xe3, 0x61, 0x02, 0xf6, 0xab, 0x4c, 0xe7, 0x5f, 0xe4, 0x62, 0x84, 0xea, 0x2f, 0x9d, - 0xa6, 0x98, 0xd2, 0x9b, 0x51, 0x53, 0xf5, 0x54, 0xf3, 0x5f, 0xb5, 0xbb, 0xf9, 0xf0, 0x4d, 0x84, - 0xaf, 0x4e, 0x2a, 0xb5, 0xaa, 0x9f, 0x45, 0x37, 0x79, 0x43, 0x1c, 0xec, 0xcb, 0xd1, 0x91, 0xc6, - 0x61, 0xc0, 0x1c, 0xbd, 0x91, 0xe2, 0xf1, 0x98, 0x44, 0xdf, 0xf8, 0xcd, 0x41, 0xfd, 0x1b, 0x78, - 0x95, 0xb1, 0xd6, 0x60, 0xbc, 0xea, 0x3a, 0x01, 0x7e, 0x11, 0x28, 0x5e, 0xf6, 0x48, 0x9a, 0x60, - 0xc8, 0x1a, 0x7e, 0x5f, 0x62, 0x05, 0x0d, 0x22, 0xbc, 0x6b, 0xe6, 0x6a, 0x21, 0x20, 0xaa, 0xc2, - 0xe4, 0x16, 0x7e, 0x1e, 0x63, 0x20, 0x35, 0x99, 0x73, 0xf0, 0xf3, 0x86, 0xc2, 0x44, 0xd5, 0x2c, - 0x4f, 0xc3, 0x41, 0x07, 0x30, 0x25, 0xf6, 0xbf, 0x7e, 0x8f, 0x01, 0xe6, 0x87, 0x4e, 0x5a, 0x48, - 0xe1, 0x61, 0x84, 0xe2, 0x9b, 0xdf, 0x99, 0x8c, 0x1a, 0x2c, 0xc4, 0xe7, 0x83, 0xb7, 0xf6, 0x6e, - 0xaf, 0x55, 0xcc, 0x94, 0x53, 0x2d, 0x7d, 0x45, 0xaf, 0x51, 0x85, 0xa1, 0x84, 0x91, 0x1a, 0xa0, - 0x7b, 0xd1, 0xe9, 0xa5, 0xb6, 0x9e, 0x62, 0x7a, 0x55, 0xdb, 0x26, 0xe1, 0x82, 0x51, 0xa5, 0x3a, - 0x57, 0x95, 0x12, 0xef, 0xd8, 0x6d, 0x18, 0xe1, 0x45, 0x91, 0xe0, 0x2b, 0xe1, 0xf7, 0x25, 0x00, - 0x8c, 0xdf, 0xcb, 0xc1, 0x45, 0xaa, 0x01, 0xb6, 0x9d, 0xc3, 0x36, 0xde, 0xf5, 0x75, 0x2f, 0x8a, - 0xef, 0x68, 0x5b, 0xe6, 0x7c, 0x8a, 0x1b, 0xec, 0x37, 0xb5, 0x51, 0xfe, 0x41, 0x0e, 0x8a, 0x49, - 0x7d, 0x7b, 0xb3, 0x7b, 0xe5, 0x1d, 0x7e, 0xbd, 0xce, 0x6b, 0x56, 0x8f, 0xb2, 0x4d, 0x31, 0x58, - 0x32, 0x48, 0xf2, 0xbf, 0xb6, 0x49, 0xfe, 0xf7, 0x1c, 0xcc, 0xae, 0xfb, 0xea, 0x55, 0x86, 0x33, - 0xee, 0x4e, 0x52, 0x28, 0x03, 0x3a, 0xaf, 0x6b, 0x03, 0x49, 0xa1, 0x0a, 0xde, 0x55, 0x9c, 0x46, - 0xf3, 0x59, 0x31, 0x0a, 0x88, 0xd0, 0x2c, 0x9d, 0x5f, 0x6f, 0xc2, 0xd0, 0x16, 0x11, 0x14, 0x07, - 0xf9, 0xfa, 0x63, 0x18, 0xa4, 0x88, 0xfa, 0x77, 0x92, 0x2e, 0x93, 0x1f, 0xe8, 0x61, 0xcc, 0x8b, - 0x74, 0xa8, 0xb7, 0x0f, 0xfe, 0xda, 0x40, 0xd4, 0xa1, 0xb4, 0x32, 0x0a, 0xe7, 0x76, 0x2c, 0xef, - 0x10, 0x07, 0xc6, 0xf7, 0xa1, 0xc8, 0x4d, 0xa4, 0x98, 0x4e, 0x9d, 0x1a, 0x52, 0xf9, 0xa1, 0x15, - 0x5c, 0x96, 0x59, 0xd3, 0x15, 0x00, 0xea, 0xb1, 0xb4, 0xee, 0xb4, 0xf0, 0x0b, 0x66, 0x87, 0x67, - 0x2a, 0x25, 0xc6, 0x7b, 0x30, 0x26, 0x87, 0x40, 0xef, 0xba, 0x8a, 0x2c, 0x4c, 0x87, 0x33, 0xab, - 0xf9, 0xb5, 0x0a, 0x67, 0x56, 0x1b, 0xe6, 0x22, 0x53, 0x11, 0xba, 0x93, 0xcb, 0x3b, 0x28, 0xb5, - 0x1a, 0x34, 0xe5, 0xef, 0xe8, 0x15, 0x35, 0xdf, 0xd7, 0x15, 0xd5, 0xa8, 0xc2, 0xf9, 0xd8, 0xfa, - 0x40, 0x88, 0x7a, 0x72, 0x33, 0x2d, 0x0d, 0x39, 0x50, 0xeb, 0xf5, 0x35, 0x52, 0xb6, 0xb3, 0x51, - 0x67, 0xee, 0x45, 0xa4, 0x6c, 0x67, 0xa3, 0x5e, 0x39, 0xc7, 0xd6, 0x9b, 0xf1, 0x4f, 0xf2, 0x54, - 0x79, 0x11, 0xe3, 0x5c, 0x44, 0x0f, 0xac, 0xea, 0xa2, 0x2b, 0x30, 0x46, 0xf9, 0xb4, 0x2c, 0xfc, - 0xf5, 0xb2, 0x6d, 0x81, 0x46, 0x7f, 0x7a, 0x52, 0x1a, 0xa0, 0x06, 0x40, 0x21, 0x1a, 0xfa, 0x0c, - 0x46, 0x56, 0x9c, 0x16, 0xa5, 0x30, 0x78, 0x06, 0x0a, 0x02, 0x89, 0xcc, 0x1e, 0xed, 0x32, 0x11, - 0x05, 0xb9, 0xfa, 0xd0, 0x54, 0x4a, 0xe8, 0xe4, 0x50, 0x03, 0xcb, 0x61, 0x3a, 0xb1, 0xec, 0x07, - 0x75, 0xe9, 0x27, 0x5d, 0x10, 0x61, 0x82, 0xc6, 0x4c, 0xf9, 0x1b, 0x19, 0x30, 0xbc, 0xed, 0xb5, - 0x78, 0xa8, 0x8f, 0xa9, 0xa5, 0x09, 0xce, 0x7d, 0x5a, 0x66, 0xb2, 0x2a, 0xe3, 0xbf, 0xe6, 0x60, - 0x7e, 0x15, 0x07, 0x89, 0xab, 0x4d, 0xe3, 0x4a, 0xee, 0xb5, 0xb9, 0x92, 0x7f, 0x15, 0xae, 0xc8, - 0x51, 0x0f, 0xa6, 0x8d, 0x7a, 0x28, 0x6d, 0xd4, 0xc3, 0xe9, 0xa3, 0x5e, 0x85, 0x73, 0x6c, 0xa8, - 0xe8, 0x3a, 0x0c, 0xaf, 0x07, 0xf8, 0x38, 0x54, 0x6a, 0xa9, 0x96, 0x8c, 0x26, 0xab, 0x23, 0x37, - 0xd2, 0x0d, 0xcb, 0x0f, 0x84, 0x43, 0xdb, 0x98, 0x29, 0x7e, 0x1a, 0x3f, 0xa2, 0x9e, 0xbe, 0x1b, - 0x6e, 0xf3, 0xa9, 0xf2, 0xe2, 0x30, 0xc2, 0xbe, 0xe5, 0xe8, 0x0b, 0x15, 0x81, 0x62, 0x35, 0xa6, - 0x80, 0x40, 0x57, 0x61, 0x7c, 0xdd, 0x79, 0xe8, 0x7a, 0x4d, 0xbc, 0xed, 0xb4, 0x19, 0xf5, 0x51, - 0x53, 0x2d, 0xe2, 0x9a, 0x38, 0xde, 0x42, 0xa8, 0x89, 0xa3, 0x05, 0x11, 0x4d, 0x1c, 0x29, 0xdb, - 0x5b, 0x32, 0x59, 0x1d, 0x57, 0xf4, 0x91, 0xbf, 0xb3, 0xd4, 0x5b, 0x52, 0x0f, 0xd6, 0x0b, 0xf0, - 0x00, 0x2e, 0x9a, 0xb8, 0xd3, 0xb6, 0x88, 0xc0, 0x79, 0xec, 0x32, 0x78, 0x39, 0xe6, 0xab, 0x09, - 0x1e, 0x50, 0xba, 0x5d, 0x8b, 0xec, 0x72, 0x3e, 0xa3, 0xcb, 0xc7, 0x70, 0x6d, 0x15, 0x07, 0xfa, - 0xde, 0x18, 0xbe, 0x67, 0xf0, 0xc1, 0xaf, 0xc1, 0xa8, 0xaf, 0xbf, 0xc5, 0x5c, 0x11, 0x4f, 0x80, - 0x49, 0x88, 0x7b, 0x0f, 0xc4, 0x6b, 0x25, 0xa7, 0x23, 0xff, 0x32, 0x3e, 0x87, 0x52, 0x5a, 0x73, - 0xfd, 0x99, 0x1d, 0xdb, 0x70, 0x35, 0x9d, 0x80, 0x3c, 0x4c, 0xc5, 0xbb, 0x8d, 0x54, 0x1d, 0x64, - 0xf7, 0x56, 0x7f, 0xea, 0xe1, 0x7f, 0x18, 0x15, 0x61, 0x80, 0xf9, 0x1a, 0xdd, 0x6d, 0x50, 0x93, - 0x08, 0x9d, 0x40, 0xc8, 0xd7, 0x32, 0x8c, 0x8a, 0x32, 0xce, 0xd7, 0xf9, 0xc4, 0x9e, 0x0a, 0x86, - 0xb6, 0x04, 0x01, 0x89, 0x66, 0xfc, 0x48, 0x3c, 0x0f, 0xea, 0x18, 0xfd, 0xb9, 0x75, 0xf6, 0xf3, - 0x1e, 0x68, 0xb8, 0x70, 0x51, 0xa7, 0xad, 0x3e, 0xfb, 0x14, 0x94, 0x67, 0x1f, 0xf6, 0xda, 0x73, - 0x55, 0x7f, 0x86, 0xc8, 0xf3, 0x75, 0x19, 0x16, 0xa1, 0x2b, 0xea, 0xe3, 0xce, 0x44, 0xdc, 0x0f, - 0xf6, 0x1e, 0x14, 0x93, 0x1a, 0x54, 0x14, 0x4a, 0xf2, 0x05, 0x81, 0xc7, 0xba, 0xfa, 0xb5, 0x1c, - 0x18, 0x9a, 0x95, 0x1b, 0x9d, 0xa1, 0x9a, 0xe7, 0x3e, 0xb3, 0x5b, 0xca, 0xc3, 0xe4, 0x3b, 0x62, - 0x63, 0x63, 0x56, 0xfc, 0xd4, 0xbb, 0x2b, 0x6a, 0x1e, 0xcf, 0x77, 0xbb, 0x7b, 0x30, 0xb2, 0x85, - 0x5f, 0x84, 0xdb, 0x0f, 0x93, 0x60, 0xa9, 0xe5, 0xdb, 0x53, 0xac, 0x46, 0x51, 0x10, 0x60, 0x44, - 0x7c, 0xba, 0x9e, 0xd9, 0x07, 0xde, 0xff, 0x03, 0x28, 0x44, 0xeb, 0xf8, 0xdc, 0x97, 0x14, 0x8b, - 0x9e, 0x38, 0x85, 0xbd, 0xfb, 0xcc, 0x41, 0x40, 0x58, 0x87, 0x75, 0x24, 0xe5, 0x18, 0xbd, 0xb3, - 0xf7, 0x1e, 0x7d, 0x08, 0xb0, 0xe3, 0x06, 0x56, 0xbb, 0x4a, 0x75, 0x80, 0x83, 0xa1, 0x3f, 0x45, - 0x40, 0x4a, 0x1b, 0xd1, 0x70, 0x0f, 0x0a, 0xb0, 0xf1, 0x3d, 0xfa, 0x45, 0x26, 0x77, 0xba, 0xbf, - 0x8f, 0xa4, 0x0a, 0xd7, 0x23, 0x56, 0x25, 0xaf, 0x40, 0x24, 0x80, 0x39, 0xc2, 0x7e, 0x22, 0xc2, - 0xac, 0x7a, 0x6e, 0xb7, 0xf3, 0x8b, 0x99, 0xf5, 0x7f, 0x9b, 0x63, 0xa6, 0xb0, 0x6a, 0xb3, 0x7c, - 0xa2, 0xab, 0x00, 0x61, 0x69, 0xc4, 0x25, 0x42, 0x56, 0xec, 0xdd, 0x67, 0x77, 0x77, 0xfa, 0xde, - 0x74, 0xc8, 0x08, 0x28, 0x68, 0xbf, 0xd8, 0x99, 0x7c, 0x40, 0x4d, 0x49, 0x64, 0xeb, 0xfd, 0xf1, - 0xfd, 0x7d, 0xa1, 0xa3, 0x3a, 0x23, 0xde, 0x11, 0xcc, 0x92, 0x6f, 0x97, 0xdc, 0x6b, 0x5c, 0xcf, - 0x0e, 0x84, 0x6b, 0x0e, 0xaa, 0x71, 0x57, 0x7a, 0x86, 0xf5, 0xc9, 0xcf, 0x4f, 0x4a, 0x1f, 0x9c, - 0xc5, 0x2f, 0x59, 0xd0, 0xdc, 0x91, 0xee, 0xf7, 0xc6, 0x3c, 0x0c, 0x56, 0xcd, 0x0d, 0xba, 0x55, - 0x99, 0x1b, 0x72, 0xab, 0x32, 0x37, 0x8c, 0xff, 0x92, 0x87, 0x12, 0x0b, 0xf6, 0x41, 0x2d, 0x90, - 0xc2, 0x1b, 0x96, 0x62, 0xd2, 0xd4, 0xaf, 0xa6, 0x22, 0x12, 0xcc, 0x23, 0xdf, 0x4f, 0x30, 0x8f, - 0x5f, 0x7e, 0x75, 0xad, 0x72, 0xe5, 0xed, 0xd3, 0x93, 0xd2, 0xf5, 0x50, 0x9d, 0xc0, 0x6a, 0x93, - 0xf4, 0x0a, 0x29, 0x4d, 0xc4, 0x15, 0x21, 0x43, 0xaf, 0xa0, 0x08, 0xb9, 0x07, 0x23, 0xf4, 0xc2, - 0xb2, 0x5e, 0xe3, 0x76, 0xb3, 0x74, 0x79, 0xd2, 0xb8, 0x3c, 0x0d, 0x5b, 0x8d, 0x6b, 0x26, 0xc0, - 0x8c, 0xbf, 0x9d, 0x87, 0xab, 0xe9, 0x3c, 0xe7, 0x7d, 0x5b, 0x06, 0x08, 0x6d, 0x9f, 0xb2, 0x6c, - 0xad, 0xe8, 0xb7, 0xf3, 0x1c, 0x1f, 0x48, 0x5b, 0x47, 0x05, 0x8f, 0x48, 0x2d, 0xc2, 0x67, 0x35, - 0xf2, 0x5a, 0xa8, 0xb9, 0xb2, 0xf2, 0xb0, 0x99, 0xbc, 0x48, 0x0b, 0x9b, 0xc9, 0xcb, 0xd0, 0x01, - 0xcc, 0xd7, 0x3c, 0xfb, 0x99, 0x15, 0xe0, 0xc7, 0xf8, 0x65, 0xcd, 0x6d, 0xdb, 0xcd, 0x97, 0x2b, - 0xdc, 0x75, 0x8b, 0x39, 0x22, 0xdf, 0x3a, 0x3d, 0x29, 0xbd, 0xd5, 0x61, 0x20, 0xe4, 0xc3, 0x6c, - 0x74, 0x28, 0x50, 0x23, 0xee, 0xcd, 0x95, 0x46, 0xc8, 0xf8, 0x37, 0x39, 0xb8, 0x44, 0x05, 0x6a, - 0xfe, 0xf2, 0x22, 0x1a, 0x7f, 0x25, 0x93, 0x5b, 0x75, 0x80, 0x7c, 0x2d, 0x52, 0x93, 0x5b, 0xcd, - 0xa7, 0xd7, 0xd4, 0xc0, 0xd0, 0x3a, 0x8c, 0xf3, 0xdf, 0x8a, 0xfa, 0x7c, 0x4e, 0xd9, 0xb0, 0xe8, - 0x52, 0x67, 0x3a, 0x27, 0xba, 0xb0, 0x39, 0x31, 0xea, 0x78, 0x68, 0xaa, 0xb8, 0xc6, 0xcf, 0xf2, - 0xb0, 0xb8, 0x87, 0x3d, 0xfb, 0xc9, 0xcb, 0x94, 0xc1, 0x6c, 0xc3, 0xac, 0x28, 0x62, 0x01, 0x3f, - 0xb4, 0x4f, 0x8c, 0x05, 0xe6, 0x13, 0x5d, 0xe5, 0x11, 0x43, 0xc4, 0x17, 0x97, 0x88, 0x78, 0x06, - 0x63, 0xda, 0x77, 0x61, 0x34, 0x12, 0x72, 0x87, 0xce, 0xbf, 0xf8, 0x42, 0xc3, 0xa9, 0x5a, 0x1b, - 0x30, 0x25, 0x24, 0xfa, 0xf5, 0xf4, 0x27, 0x5c, 0xae, 0x7f, 0xe8, 0xa5, 0x48, 0xa5, 0x1f, 0x2c, - 0xf9, 0x58, 0x2d, 0xa5, 0x36, 0xe1, 0x83, 0x5d, 0x1b, 0x30, 0xd3, 0x5a, 0xaa, 0x8c, 0xc3, 0x58, - 0x99, 0x3e, 0x4b, 0x93, 0x8b, 0xfb, 0x7f, 0xcb, 0xc3, 0x15, 0xe1, 0x36, 0x95, 0xc2, 0xe6, 0x2f, - 0x61, 0x5e, 0x14, 0x95, 0x3b, 0x44, 0x60, 0xc0, 0x2d, 0x9d, 0xd3, 0x2c, 0x38, 0xa6, 0xe0, 0xb4, - 0xc5, 0x61, 0x42, 0x66, 0xa7, 0xa1, 0xbf, 0x19, 0x35, 0xea, 0x67, 0x49, 0x01, 0x90, 0xa8, 0x3a, - 0x53, 0xdd, 0x33, 0x35, 0xd6, 0x68, 0xfb, 0x67, 0x2b, 0xa6, 0x86, 0x1d, 0x7a, 0x5d, 0x35, 0xec, - 0xda, 0x40, 0x54, 0x11, 0x5b, 0x99, 0x82, 0x89, 0x2d, 0xfc, 0x3c, 0xe4, 0xfb, 0x5f, 0xcb, 0x45, - 0x9c, 0xe6, 0x89, 0x84, 0xc1, 0xbc, 0xe7, 0x73, 0x61, 0x0c, 0x1d, 0xea, 0x34, 0xaf, 0x4a, 0x18, - 0x0c, 0x74, 0x1d, 0x46, 0x98, 0xad, 0x46, 0xab, 0x8f, 0xbb, 0xb9, 0xf4, 0x7f, 0x62, 0x2e, 0xa5, - 0x2d, 0x76, 0x4d, 0xe7, 0xf8, 0xc6, 0x63, 0xb8, 0xc6, 0xad, 0xff, 0xf5, 0xc9, 0xa7, 0x0d, 0x9d, - 0xf1, 0xf8, 0x32, 0x2c, 0xb8, 0xb2, 0x8a, 0xa3, 0x5b, 0x8f, 0xe6, 0x1f, 0xf6, 0x39, 0x4c, 0x6b, - 0xe5, 0x92, 0x22, 0x95, 0x4a, 0xe5, 0x1a, 0x92, 0xa4, 0xa3, 0xd0, 0xc6, 0xd5, 0xa4, 0x26, 0xd4, - 0xce, 0x1a, 0x98, 0x46, 0xb9, 0xf4, 0xc2, 0x57, 0x76, 0xff, 0x0c, 0xbb, 0xde, 0x2d, 0xe5, 0xbb, - 0x66, 0x3b, 0x1e, 0x0b, 0x84, 0x27, 0x4e, 0x5e, 0x59, 0x6b, 0x4c, 0x6a, 0x8f, 0x0a, 0xc6, 0x14, - 0x4c, 0x88, 0xaa, 0x36, 0xf6, 0x7d, 0xe3, 0x37, 0x86, 0xc0, 0xe0, 0x8c, 0x4d, 0xd2, 0xb9, 0x0a, - 0x7e, 0x1c, 0xc4, 0x3a, 0xcb, 0x0f, 0xaa, 0x0b, 0xaa, 0x66, 0x39, 0xac, 0x65, 0x2b, 0x8f, 0xca, - 0x79, 0xcd, 0xb0, 0x54, 0x5b, 0x79, 0xb1, 0xd1, 0xff, 0x20, 0x65, 0x9b, 0x64, 0x1f, 0xdb, 0x8d, - 0xd3, 0x93, 0xd2, 0xb5, 0x94, 0x6d, 0x52, 0xa3, 0x9b, 0xbc, 0x65, 0x9a, 0xfa, 0xdb, 0xca, 0xe0, - 0xab, 0xbc, 0xad, 0x90, 0x2f, 0x52, 0x7d, 0x5d, 0xd9, 0xd5, 0x79, 0xc9, 0xbf, 0x47, 0x61, 0xd5, - 0xa2, 0x56, 0x71, 0xdf, 0x75, 0xa5, 0x44, 0xa3, 0xaa, 0x91, 0x41, 0x36, 0x14, 0x14, 0x95, 0x65, - 0xf5, 0x08, 0x37, 0x9f, 0xf2, 0xb7, 0x20, 0xf1, 0x4c, 0x9d, 0xa4, 0xb8, 0x66, 0x81, 0x76, 0xd9, - 0x77, 0xce, 0x2a, 0x1a, 0x4d, 0x82, 0xaa, 0xfa, 0xde, 0x47, 0xc9, 0xaa, 0x2a, 0xfb, 0xdf, 0x96, - 0xee, 0x1e, 0xe4, 0xcc, 0xb6, 0xdb, 0x98, 0xfb, 0x36, 0x89, 0x15, 0x90, 0xf2, 0xae, 0x96, 0xfb, - 0x86, 0xdf, 0xd5, 0xfe, 0x30, 0x2f, 0x9c, 0x5c, 0x62, 0xaf, 0xef, 0x67, 0x7f, 0x5e, 0x4b, 0x1c, - 0x41, 0x5f, 0x07, 0x5a, 0xb2, 0xa1, 0x44, 0x45, 0x7b, 0x82, 0xcf, 0xa7, 0x3c, 0xc1, 0x6b, 0xef, - 0x95, 0x41, 0x8f, 0x37, 0xf9, 0xc1, 0xd7, 0x7f, 0xf9, 0xfa, 0xe7, 0x23, 0x70, 0xbe, 0x66, 0x1d, - 0xda, 0x0e, 0xd9, 0x38, 0x4d, 0xec, 0xbb, 0x5d, 0xaf, 0x89, 0x51, 0x19, 0xa6, 0x74, 0x0b, 0xe6, - 0x1e, 0xf6, 0xd9, 0xe4, 0x6c, 0xd0, 0xcb, 0xd0, 0x12, 0x8c, 0x49, 0xcf, 0x62, 0xbe, 0xa1, 0x27, - 0x78, 0x1c, 0xaf, 0x0d, 0x98, 0x21, 0x18, 0xfa, 0x50, 0x7b, 0xe8, 0x98, 0x96, 0x4e, 0xf2, 0x14, - 0x76, 0x89, 0x99, 0x98, 0x3a, 0x6e, 0x4b, 0x3f, 0x94, 0xd8, 0x63, 0xc1, 0x8f, 0x62, 0x6f, 0x1f, - 0xc3, 0x5a, 0x8f, 0x63, 0x5a, 0x23, 0x7a, 0x1e, 0xa7, 0x46, 0x1b, 0x8e, 0xbf, 0x8a, 0xa0, 0xef, - 0xc3, 0xf8, 0xe3, 0xee, 0x01, 0x16, 0xaf, 0x3c, 0xe7, 0xf8, 0x19, 0x15, 0xb5, 0xcb, 0xe7, 0xf5, - 0x7b, 0x0f, 0xd8, 0x1c, 0x3c, 0xed, 0x1e, 0xe0, 0x78, 0x18, 0x6b, 0xb2, 0x39, 0x28, 0xc4, 0xd0, - 0x11, 0x14, 0xa2, 0x26, 0xf4, 0x3c, 0x80, 0x5c, 0x86, 0xe1, 0x3f, 0x0d, 0x9f, 0xa1, 0x04, 0xcb, - 0x66, 0x86, 0xbd, 0x5a, 0x23, 0x31, 0xaa, 0xe8, 0x57, 0x60, 0x2e, 0x51, 0x67, 0xc7, 0x43, 0x66, - 0xf7, 0x52, 0x07, 0xd2, 0x8d, 0x35, 0xc2, 0x35, 0xe1, 0x95, 0xa7, 0xb5, 0x9c, 0xdc, 0x0a, 0x6a, - 0xc1, 0x74, 0xc4, 0x34, 0x9c, 0x47, 0xec, 0x4f, 0x37, 0x36, 0xa7, 0x87, 0x83, 0x08, 0xab, 0x9a, - 0xd8, 0x56, 0x94, 0x24, 0xda, 0x80, 0x31, 0x79, 0xe5, 0xa6, 0x41, 0x7e, 0x92, 0xd5, 0x0b, 0x0b, - 0xa7, 0x27, 0xa5, 0xd9, 0x50, 0xbd, 0xa0, 0xd1, 0x0c, 0x09, 0xa0, 0x9f, 0xc0, 0x35, 0xb9, 0x44, - 0xb7, 0xbd, 0x64, 0x45, 0x0c, 0x0f, 0xc6, 0x7d, 0x3b, 0xba, 0xc2, 0xd3, 0xe0, 0xf7, 0xee, 0xaf, - 0x0d, 0x98, 0xbd, 0xc9, 0x56, 0x00, 0x46, 0x3d, 0xfe, 0x51, 0x3e, 0x1a, 0x1a, 0x1d, 0x2a, 0x0c, - 0xb3, 0x75, 0x23, 0x4c, 0xee, 0xff, 0xc7, 0x39, 0xe6, 0xc3, 0xba, 0xeb, 0xd8, 0x4f, 0xec, 0xf0, - 0xfb, 0x55, 0x15, 0x3c, 0x61, 0x76, 0x0e, 0x2e, 0x7e, 0xa5, 0xe4, 0xe1, 0x90, 0xba, 0xa0, 0x7c, - 0x4f, 0x5d, 0xd0, 0x03, 0xe5, 0xbd, 0x43, 0x09, 0x0a, 0xc9, 0x8e, 0x59, 0x5d, 0xf7, 0x12, 0x3e, - 0x84, 0x7c, 0x0d, 0xe7, 0x68, 0x78, 0x3a, 0xf6, 0x98, 0x34, 0xbe, 0x74, 0x87, 0xef, 0x5a, 0x19, - 0xdd, 0x67, 0xf1, 0xec, 0xb8, 0x5f, 0x3a, 0x8d, 0x21, 0xd9, 0xa6, 0x05, 0x6a, 0x30, 0x3a, 0x06, - 0x82, 0x76, 0x60, 0xa6, 0xe6, 0xe1, 0x16, 0x37, 0xfc, 0xee, 0x78, 0xfc, 0x7e, 0xcc, 0x6e, 0xde, - 0x34, 0x76, 0x77, 0x47, 0x54, 0x37, 0xb0, 0xac, 0x57, 0xcf, 0x93, 0x04, 0x74, 0xb4, 0x02, 0x53, - 0x75, 0x6c, 0x79, 0xcd, 0xa3, 0xc7, 0xf8, 0x25, 0x39, 0x71, 0xb5, 0x80, 0xf7, 0x3e, 0xad, 0x21, - 0xe3, 0xa5, 0x55, 0xaa, 0xbd, 0x82, 0x8e, 0x84, 0xbe, 0x07, 0xe7, 0xea, 0xae, 0x17, 0x54, 0x5e, - 0xf2, 0x6f, 0x5a, 0x3c, 0x37, 0xb0, 0xc2, 0xca, 0x45, 0x11, 0xf4, 0xdf, 0x77, 0xbd, 0xa0, 0x71, - 0xa0, 0xb2, 0x8f, 0xe3, 0xa1, 0x97, 0x30, 0xab, 0x7f, 0x4f, 0x0f, 0xed, 0x36, 0xd9, 0x84, 0x46, - 0xf9, 0x49, 0x9f, 0xf4, 0xd1, 0x32, 0x90, 0xca, 0x2d, 0x4e, 0xfd, 0x6a, 0xf4, 0xab, 0x7d, 0x42, - 0xeb, 0xd5, 0x94, 0x21, 0x49, 0xf8, 0x68, 0x93, 0xe6, 0x4a, 0x60, 0x23, 0x2a, 0xfb, 0xcc, 0xe4, - 0x7a, 0x2c, 0x0c, 0x61, 0xd4, 0xa5, 0xdf, 0x24, 0xe5, 0x84, 0xe5, 0x47, 0x53, 0x60, 0x98, 0x31, - 0x54, 0x54, 0x83, 0xf3, 0xbb, 0x3e, 0xae, 0x79, 0xf8, 0x99, 0x8d, 0x9f, 0x0b, 0x7a, 0x2c, 0x0e, - 0x17, 0x9d, 0x26, 0x42, 0xaf, 0xc3, 0x6a, 0x93, 0x08, 0xc6, 0x91, 0xd1, 0x87, 0x00, 0x35, 0xdb, - 0x71, 0x70, 0x8b, 0xbe, 0x59, 0x8d, 0x53, 0x52, 0x54, 0xab, 0xd7, 0xa1, 0xa5, 0x0d, 0xd7, 0x69, - 0xab, 0x2c, 0x55, 0x80, 0x8b, 0x1f, 0xc2, 0xb8, 0xb2, 0xc4, 0x12, 0xe2, 0x1a, 0xcc, 0xaa, 0x71, - 0x0d, 0xc6, 0xd4, 0xf8, 0x05, 0x7f, 0x2f, 0x07, 0x8b, 0xc9, 0x4b, 0x97, 0x1f, 0xf7, 0xdb, 0x30, - 0x26, 0x0b, 0xa5, 0x97, 0x8e, 0x10, 0xf6, 0x22, 0xe7, 0x2d, 0xfb, 0x7e, 0xc4, 0x87, 0xae, 0x8e, - 0x37, 0xa4, 0xf1, 0x0a, 0x1a, 0xd8, 0x7f, 0x39, 0x02, 0xb3, 0xa4, 0x8f, 0xb1, 0x6d, 0xe1, 0x73, - 0x1a, 0x9f, 0x84, 0x96, 0x29, 0x0a, 0x45, 0xae, 0x5b, 0x60, 0xe5, 0xd1, 0x98, 0x49, 0x1a, 0x02, - 0x7a, 0x4f, 0x7d, 0xbf, 0xce, 0x2b, 0xc9, 0x10, 0x44, 0xa1, 0x3a, 0x84, 0xf0, 0x61, 0xfb, 0x1d, - 0xed, 0xf9, 0xb4, 0xef, 0x3d, 0x66, 0xa8, 0xdf, 0x3d, 0x66, 0x57, 0xee, 0x31, 0x2c, 0xee, 0xc5, - 0xdb, 0xca, 0x1e, 0xf3, 0xe6, 0x37, 0x97, 0x73, 0x6f, 0x7a, 0x73, 0x19, 0x79, 0xbd, 0xcd, 0x65, - 0xf4, 0x15, 0x37, 0x97, 0x87, 0x30, 0xb5, 0x85, 0x71, 0x4b, 0x51, 0x8d, 0xb3, 0xef, 0x9b, 0xeb, - 0x03, 0xa8, 0xd2, 0x23, 0x49, 0x3f, 0x1e, 0xc1, 0x4a, 0xdd, 0xa4, 0xe0, 0xff, 0xcc, 0x26, 0x35, - 0xfe, 0x86, 0x37, 0xa9, 0x89, 0xd7, 0xd8, 0xa4, 0x5e, 0x67, 0xa7, 0xf9, 0x8c, 0x5a, 0x92, 0xd5, - 0xeb, 0x6b, 0xfc, 0x95, 0x5e, 0x79, 0x16, 0x5f, 0x73, 0x7d, 0x61, 0x22, 0x4f, 0xff, 0x26, 0x65, - 0x35, 0xd7, 0x13, 0x4f, 0x8b, 0xf4, 0x6f, 0xa3, 0x42, 0xed, 0xc7, 0x54, 0x7c, 0xe9, 0x5f, 0x31, - 0xc2, 0xdd, 0x13, 0xf9, 0xfe, 0x14, 0x15, 0xb8, 0x4d, 0x51, 0x6f, 0xfc, 0xfb, 0x1c, 0x7b, 0x42, - 0xfa, 0xbf, 0x71, 0x9b, 0x7b, 0x9d, 0x67, 0x9d, 0x5f, 0x0f, 0xc3, 0x16, 0xf0, 0x10, 0x0b, 0x9e, - 0xd5, 0x7c, 0x1a, 0xbe, 0xab, 0xfd, 0x90, 0x7c, 0xa3, 0x6a, 0x05, 0x8d, 0xe8, 0x18, 0xde, 0x2a, - 0xf4, 0xca, 0xbd, 0xfb, 0xe2, 0xe3, 0xe5, 0xd1, 0x1b, 0x58, 0xb1, 0xfe, 0xf1, 0xaa, 0x08, 0xd4, - 0x09, 0x66, 0xda, 0x30, 0x99, 0xd7, 0x7d, 0x62, 0x0f, 0xde, 0x8f, 0xfb, 0x8d, 0x53, 0xb1, 0x35, - 0xf4, 0x1b, 0x57, 0xd9, 0x18, 0x7a, 0x90, 0xef, 0xc2, 0x25, 0x13, 0x1f, 0xbb, 0xcf, 0xf0, 0x9b, - 0x25, 0xfb, 0x03, 0xb8, 0xa8, 0x13, 0x64, 0x6e, 0x52, 0x2c, 0x5a, 0xf8, 0x67, 0xc9, 0x31, 0xc6, - 0x39, 0x02, 0x8b, 0x31, 0xce, 0xc2, 0xc0, 0x92, 0x3f, 0xd5, 0x3d, 0x9f, 0xd6, 0x19, 0x2e, 0x2c, - 0xea, 0xc4, 0xcb, 0xad, 0x16, 0x4d, 0xeb, 0xd6, 0xb4, 0x3b, 0x96, 0x13, 0xa0, 0x6d, 0x18, 0x57, - 0x7e, 0x46, 0x2e, 0x95, 0x4a, 0x0d, 0x3f, 0xfe, 0xc3, 0x02, 0x2d, 0xf6, 0x5f, 0x58, 0x6c, 0x60, - 0x28, 0x45, 0xd9, 0x43, 0x58, 0xa6, 0xb6, 0x59, 0x81, 0x49, 0xe5, 0xa7, 0x54, 0x30, 0xd1, 0x50, - 0x95, 0x4a, 0x0b, 0x3a, 0xc3, 0x74, 0x14, 0xa3, 0x09, 0xc5, 0x24, 0xa6, 0xd1, 0x68, 0x4d, 0x2f, - 0xd1, 0x4a, 0x18, 0xf7, 0xa9, 0xb7, 0x55, 0xd3, 0x74, 0x5a, 0xcc, 0x27, 0xe3, 0x6f, 0x0e, 0xc1, - 0x25, 0x3e, 0x19, 0x6f, 0x72, 0xc6, 0xd1, 0x8f, 0x60, 0x5c, 0x99, 0x63, 0xce, 0xf4, 0xab, 0xc2, - 0x7c, 0x32, 0x6d, 0x2d, 0xb0, 0xcb, 0x6f, 0x97, 0x16, 0x34, 0x22, 0xd3, 0x4d, 0x2e, 0xbf, 0xea, - 0xb2, 0x69, 0xc3, 0x94, 0x3e, 0xd1, 0xfc, 0xfe, 0x7f, 0x3d, 0xb1, 0x11, 0x1d, 0x54, 0x44, 0x90, - 0x6d, 0x35, 0x12, 0xa7, 0x9b, 0x5c, 0xe3, 0x23, 0x8b, 0xe8, 0x05, 0x9c, 0x8f, 0xcd, 0x32, 0x57, - 0xeb, 0xdc, 0x4c, 0x6c, 0x30, 0x06, 0xcd, 0x94, 0x67, 0x1e, 0x2d, 0x4e, 0x6d, 0x36, 0xde, 0x08, - 0x6a, 0xc1, 0x84, 0x3a, 0xf1, 0x5c, 0x41, 0x71, 0x2d, 0x83, 0x95, 0x0c, 0x90, 0x09, 0x66, 0x9c, - 0x97, 0x74, 0xee, 0x5f, 0xea, 0x0a, 0x41, 0x0d, 0x78, 0x14, 0xce, 0xb1, 0xdf, 0x64, 0x0b, 0xa8, - 0x79, 0xd8, 0xc7, 0x4e, 0x13, 0xab, 0x96, 0xb0, 0xaf, 0xbb, 0x05, 0xfc, 0xeb, 0x1c, 0x2c, 0x24, - 0xd1, 0xad, 0x63, 0xa7, 0x85, 0x6a, 0x50, 0x88, 0x36, 0xc4, 0x57, 0xb5, 0x21, 0x83, 0x74, 0xa6, - 0x76, 0x69, 0x6d, 0xc0, 0x8c, 0x61, 0xa3, 0x2d, 0x38, 0xaf, 0x94, 0x9d, 0xd1, 0xe4, 0x38, 0x8e, - 0xaa, 0x6a, 0x31, 0xd7, 0xe8, 0xc9, 0xb8, 0xec, 0x1e, 0x5b, 0xb6, 0x43, 0x84, 0x54, 0x25, 0xf4, - 0x13, 0x84, 0xa5, 0x9c, 0x37, 0x4c, 0x2f, 0x47, 0x4b, 0x85, 0x1f, 0x81, 0x04, 0x31, 0x3e, 0xa1, - 0x3b, 0x38, 0xd7, 0xe6, 0x30, 0x57, 0x5c, 0x49, 0xec, 0x2a, 0x0c, 0xef, 0x6c, 0xd4, 0xab, 0x65, - 0xee, 0xd8, 0xcb, 0xc2, 0x41, 0xb4, 0xfd, 0x46, 0xd3, 0x32, 0x59, 0x85, 0xf1, 0x31, 0x8d, 0xf3, - 0xcd, 0xa3, 0x44, 0x4b, 0xbc, 0x1b, 0x30, 0xc2, 0x8b, 0x38, 0x26, 0x35, 0x41, 0x6a, 0x73, 0x28, - 0x51, 0x67, 0xd4, 0x84, 0x8c, 0xdf, 0xc6, 0x96, 0xaf, 0x1c, 0xcc, 0x1f, 0xc0, 0xa8, 0xc7, 0xcb, - 0xf8, 0xb9, 0x3c, 0x25, 0x73, 0x3e, 0xd0, 0x62, 0xa6, 0xf9, 0x14, 0x30, 0xa6, 0xfc, 0xcb, 0xd8, - 0xa0, 0xa1, 0x5b, 0xb6, 0xd7, 0x97, 0xab, 0x84, 0xab, 0x9c, 0x59, 0x62, 0x3a, 0xee, 0x52, 0xab, - 0xde, 0x00, 0xab, 0x6e, 0xbd, 0x94, 0x35, 0xf4, 0x23, 0xe7, 0x01, 0x8b, 0x14, 0x10, 0xe3, 0x81, - 0x0c, 0x04, 0x93, 0x40, 0x2d, 0x2d, 0x77, 0xc1, 0x16, 0x0d, 0x71, 0xb3, 0x4a, 0x8d, 0x1b, 0xde, - 0x44, 0x27, 0x2c, 0x28, 0xb2, 0x63, 0x9e, 0x8c, 0x8a, 0x67, 0xd2, 0x72, 0xe5, 0xd6, 0x58, 0x85, - 0x31, 0x59, 0x26, 0x5f, 0x2a, 0x18, 0xaf, 0x34, 0xf8, 0xbd, 0x07, 0xcc, 0x03, 0xba, 0x29, 0x09, - 0x84, 0x78, 0xa4, 0x09, 0xf6, 0xdd, 0x7d, 0xc3, 0x4d, 0xf8, 0xd8, 0x0b, 0xbe, 0xd1, 0x26, 0xc2, - 0x18, 0x48, 0x67, 0x69, 0x42, 0x83, 0xdf, 0x5b, 0xea, 0x87, 0x51, 0xdf, 0x70, 0x13, 0x84, 0x51, - 0xdf, 0x5c, 0x13, 0x58, 0x04, 0x8b, 0x62, 0x8b, 0x34, 0xd6, 0xc8, 0x4a, 0xbc, 0x11, 0xa1, 0xe2, - 0x8c, 0x60, 0x64, 0xce, 0x07, 0x86, 0x45, 0xc6, 0xac, 0x5f, 0x40, 0x33, 0x84, 0x61, 0xdf, 0x6c, - 0x33, 0xbf, 0x97, 0x63, 0xa1, 0xab, 0xea, 0xdb, 0x4a, 0x0e, 0x3b, 0xe7, 0x89, 0xab, 0x3c, 0xa4, - 0x2a, 0x5f, 0xfb, 0x63, 0xdb, 0x69, 0xa9, 0x0f, 0xa9, 0x56, 0x37, 0x38, 0x92, 0xc1, 0x8b, 0x9f, - 0xda, 0x4e, 0xcb, 0x8c, 0x42, 0xa3, 0x0f, 0x61, 0x52, 0x29, 0x92, 0xd2, 0x1a, 0x0b, 0x56, 0xaf, - 0xa2, 0xdb, 0x2d, 0x53, 0x87, 0x34, 0x7e, 0x3b, 0x0f, 0x17, 0x76, 0x3b, 0x3e, 0xf5, 0x76, 0x58, - 0x77, 0x9e, 0x61, 0x27, 0x70, 0xbd, 0x97, 0xd4, 0xee, 0x1a, 0xbd, 0x07, 0xc3, 0x6b, 0xb8, 0xdd, - 0x76, 0xf9, 0xc8, 0x2f, 0x8b, 0x57, 0xcc, 0x28, 0x34, 0x05, 0x5a, 0x1b, 0x30, 0x19, 0x34, 0xfa, - 0x10, 0xc6, 0xd6, 0xb0, 0xe5, 0x05, 0x07, 0xd8, 0x12, 0xc2, 0xaa, 0x08, 0x9e, 0xae, 0xa0, 0x70, - 0x80, 0xb5, 0x01, 0x33, 0x84, 0x46, 0x4b, 0xe4, 0x1e, 0xe7, 0x1c, 0x4a, 0xc7, 0xef, 0x94, 0x06, - 0x09, 0xcc, 0xda, 0x80, 0x49, 0x61, 0xd1, 0x26, 0x4c, 0x96, 0x0f, 0xb1, 0x13, 0x6c, 0xe2, 0xc0, - 0x6a, 0x59, 0x81, 0xc5, 0x85, 0x9a, 0x1b, 0x69, 0xc8, 0x1a, 0xf0, 0xda, 0x80, 0xa9, 0x63, 0x57, - 0x86, 0x61, 0x70, 0xd3, 0x3f, 0x34, 0x4e, 0x72, 0xb0, 0xb0, 0xec, 0x3e, 0x77, 0x12, 0x19, 0xf3, - 0x5d, 0x9d, 0x31, 0xc2, 0x27, 0x27, 0x01, 0x3e, 0xc2, 0x9a, 0x77, 0x61, 0xa8, 0x66, 0x3b, 0x87, - 0x91, 0x73, 0x3c, 0x01, 0x8f, 0x40, 0xd1, 0x11, 0xda, 0xce, 0x21, 0xda, 0x10, 0x02, 0x14, 0x57, - 0xf2, 0x0c, 0x6a, 0x52, 0x5b, 0x02, 0xb6, 0x0a, 0x1d, 0x0a, 0x4a, 0xec, 0xb7, 0x18, 0xe0, 0x3b, - 0x30, 0x9f, 0xd2, 0x2e, 0x77, 0xc6, 0x26, 0x63, 0x1b, 0xa2, 0xa7, 0xd2, 0xdb, 0x30, 0x97, 0x38, - 0x05, 0x31, 0xc0, 0x7f, 0x94, 0xb4, 0x96, 0xd8, 0xc8, 0x17, 0x60, 0x44, 0xe4, 0xd8, 0x60, 0x17, - 0x77, 0xf1, 0x93, 0x7a, 0x11, 0xd0, 0xeb, 0x76, 0x18, 0x06, 0x58, 0xfc, 0x46, 0x7b, 0x4a, 0xc4, - 0x9f, 0x41, 0xaa, 0x25, 0xfa, 0xe8, 0x35, 0xd2, 0x0b, 0x4b, 0x5a, 0xa4, 0xcd, 0x35, 0xd7, 0x0f, - 0x1c, 0x69, 0xe4, 0x66, 0xca, 0xdf, 0xe8, 0x36, 0x14, 0x56, 0x5e, 0x04, 0xd8, 0x73, 0xac, 0x36, - 0xcf, 0x36, 0xc0, 0xf3, 0xc6, 0x9a, 0xb1, 0x72, 0xf4, 0x01, 0xcc, 0x47, 0xcb, 0xc4, 0x28, 0x99, - 0x1b, 0x48, 0x5a, 0xb5, 0xf1, 0xa7, 0x79, 0x1a, 0xb8, 0x38, 0x63, 0x69, 0x12, 0xee, 0x6e, 0xd7, - 0x39, 0xb7, 0xf2, 0xdb, 0x75, 0xb4, 0x08, 0x63, 0xdb, 0x75, 0x2d, 0x51, 0x89, 0x19, 0x16, 0x90, - 0x6e, 0x93, 0x21, 0x94, 0xbd, 0xe6, 0x91, 0x1d, 0xe0, 0x66, 0xd0, 0xf5, 0x78, 0xbc, 0x26, 0x33, - 0x56, 0x8e, 0x0c, 0x98, 0x58, 0x6d, 0xdb, 0x07, 0x4d, 0x41, 0x8c, 0xb1, 0x40, 0x2b, 0x43, 0x37, - 0x61, 0x6a, 0xdd, 0xf1, 0x03, 0xab, 0xdd, 0x66, 0x79, 0x5c, 0x78, 0xe2, 0x6c, 0x33, 0x52, 0x4a, - 0xda, 0xad, 0xba, 0x4e, 0x60, 0xd9, 0x0e, 0xf6, 0xcc, 0xae, 0x13, 0xd8, 0xc7, 0x98, 0x8f, 0x3d, - 0x56, 0x8e, 0xde, 0x85, 0x39, 0x59, 0xb6, 0xed, 0x35, 0x8f, 0xb0, 0x1f, 0x78, 0x34, 0xc5, 0x16, - 0x8d, 0x4c, 0x63, 0x26, 0x57, 0xd2, 0x16, 0xda, 0x6e, 0xb7, 0xb5, 0xe2, 0x3c, 0xb3, 0x3d, 0xd7, - 0xa1, 0xe9, 0x30, 0x47, 0x79, 0x0b, 0x91, 0x72, 0xa3, 0x96, 0xf8, 0xd5, 0xbe, 0xc6, 0x12, 0x34, - 0x4e, 0x73, 0xb0, 0x98, 0xf8, 0x61, 0x89, 0xcd, 0x5b, 0x45, 0xce, 0x45, 0xd6, 0xef, 0x6d, 0x18, - 0xa2, 0xbb, 0x39, 0x53, 0x0c, 0x08, 0x33, 0x10, 0x8a, 0xcf, 0x48, 0x91, 0x5a, 0x93, 0xc2, 0xa0, - 0x55, 0xa9, 0xc4, 0x1d, 0xa4, 0x62, 0xeb, 0xdd, 0xe8, 0x9e, 0x99, 0xd0, 0xb8, 0xaa, 0xcc, 0x15, - 0x6a, 0xdb, 0xd7, 0xd1, 0xb9, 0xfd, 0x69, 0x0e, 0x4a, 0x3d, 0xf6, 0x13, 0x39, 0xa6, 0x5c, 0x1f, - 0x63, 0x7a, 0x24, 0xc7, 0xc4, 0x1c, 0x4e, 0x96, 0xfa, 0xdb, 0xb3, 0xde, 0xf4, 0xb0, 0xaa, 0x80, - 0xe2, 0x27, 0x0f, 0xfa, 0x0e, 0x8c, 0xd5, 0xeb, 0x6b, 0xda, 0x3b, 0x7f, 0x4c, 0x13, 0x18, 0x42, - 0x18, 0xef, 0xc3, 0x05, 0x49, 0x84, 0x45, 0x4e, 0x57, 0xbc, 0xda, 0xf8, 0x59, 0x2f, 0x5d, 0xf0, - 0xc2, 0x02, 0xe3, 0x4f, 0x86, 0x62, 0x88, 0xf5, 0xee, 0xf1, 0xb1, 0xe5, 0xbd, 0x44, 0x65, 0x1d, - 0x71, 0xb0, 0xe7, 0x21, 0x5b, 0x19, 0xfa, 0xe9, 0x49, 0x69, 0x40, 0xa1, 0x8e, 0xde, 0x82, 0x49, - 0xfa, 0x41, 0x3a, 0x4d, 0xcc, 0xf4, 0x80, 0x79, 0x16, 0x02, 0x44, 0x2b, 0x44, 0x7b, 0x30, 0xc9, - 0xd7, 0x3a, 0xfd, 0x2d, 0x96, 0xd8, 0xbd, 0xe8, 0x12, 0xd3, 0xba, 0x77, 0x47, 0x43, 0x61, 0x93, - 0xa1, 0x93, 0x41, 0x5f, 0xc1, 0x94, 0xd8, 0xd8, 0x38, 0x61, 0xf6, 0xc8, 0x79, 0x3f, 0x9b, 0xb0, - 0x8e, 0xc3, 0x28, 0x47, 0x08, 0x91, 0x2e, 0xf3, 0xed, 0x9a, 0x53, 0x1e, 0xee, 0xa7, 0xcb, 0x1a, - 0x0a, 0xef, 0xb2, 0x56, 0x56, 0xfc, 0x1e, 0xa0, 0xf8, 0xb8, 0x7a, 0xad, 0xa6, 0x49, 0x65, 0x35, - 0x15, 0xcb, 0x30, 0x93, 0x30, 0x80, 0x33, 0x91, 0xf8, 0x1e, 0xa0, 0x78, 0x4f, 0xcf, 0x42, 0xc1, - 0xb8, 0x05, 0x37, 0x25, 0x0b, 0xe4, 0x6a, 0xd0, 0x68, 0x8a, 0xdb, 0xfe, 0xaf, 0xe5, 0xa1, 0xd4, - 0x03, 0x14, 0xfd, 0x9d, 0x5c, 0x94, 0xdb, 0x6c, 0x35, 0x7e, 0x18, 0xe5, 0x76, 0x32, 0x7e, 0x02, - 0xdb, 0x2b, 0x1f, 0xfd, 0x95, 0x3f, 0x7b, 0xe5, 0x83, 0x3a, 0x3e, 0x65, 0x67, 0xe7, 0xd6, 0x90, - 0xca, 0x2d, 0x13, 0x66, 0x35, 0x11, 0xa7, 0x9f, 0xbd, 0xfb, 0x0a, 0x00, 0x4f, 0xe8, 0xb4, 0xe1, - 0x1e, 0x72, 0x9f, 0x40, 0xa5, 0xc4, 0x78, 0x08, 0x73, 0x11, 0x9a, 0x5c, 0x03, 0xf1, 0x1d, 0x90, - 0xde, 0x4b, 0x94, 0xe8, 0x60, 0xe5, 0xfc, 0xcf, 0x4f, 0x4a, 0x93, 0xe4, 0x04, 0xbc, 0x13, 0x06, - 0x28, 0x16, 0x7f, 0x19, 0x9b, 0xaa, 0x0e, 0xa5, 0xdc, 0xd6, 0x7c, 0xc0, 0xef, 0xc3, 0x39, 0x56, - 0x12, 0x09, 0x03, 0xaa, 0x42, 0xf3, 0x3d, 0x81, 0x03, 0x1a, 0x73, 0xd4, 0x63, 0x83, 0xfe, 0x28, - 0x87, 0xbe, 0x81, 0xc6, 0x2e, 0x0b, 0x1d, 0x1f, 0x16, 0xcb, 0x50, 0xa3, 0x43, 0xe5, 0xd0, 0x87, - 0x51, 0x3c, 0x56, 0x09, 0x38, 0xc7, 0x7d, 0xde, 0xc6, 0xad, 0x43, 0x9a, 0x37, 0xba, 0x32, 0xc1, - 0x1f, 0xab, 0x86, 0x2c, 0x42, 0x80, 0xa2, 0x19, 0x9f, 0xc3, 0x5c, 0xb5, 0x8d, 0x2d, 0x2f, 0xda, - 0x1e, 0xba, 0x09, 0x23, 0xb4, 0x4c, 0xb7, 0x37, 0xb3, 0x48, 0x11, 0xb5, 0x37, 0xe3, 0x95, 0xc6, - 0x06, 0x5c, 0x64, 0x37, 0x30, 0x75, 0x48, 0xa1, 0xbe, 0x63, 0x98, 0xfe, 0x8e, 0xd8, 0xfb, 0x27, - 0x8c, 0x9e, 0xc1, 0x19, 0x9f, 0x51, 0x83, 0xd2, 0xa4, 0x94, 0xe1, 0xfd, 0x79, 0xa0, 0xfc, 0x7f, - 0xb0, 0x58, 0xee, 0x74, 0xb0, 0xd3, 0x0a, 0x11, 0x77, 0x3c, 0xab, 0x4f, 0xcf, 0x3e, 0x54, 0x86, - 0x61, 0x0a, 0x2d, 0x95, 0xc5, 0xbc, 0xbb, 0x09, 0xdd, 0xa1, 0x70, 0x3c, 0x2e, 0x1c, 0x6d, 0x80, - 0x61, 0x1a, 0x2d, 0x98, 0xaf, 0x77, 0x0f, 0x8e, 0x6d, 0x96, 0x47, 0x9b, 0x7a, 0xc7, 0x8a, 0xb6, - 0xd7, 0x45, 0xb6, 0x0f, 0xc6, 0x8c, 0x5b, 0x61, 0x2a, 0x70, 0x6a, 0xe8, 0xc6, 0x3d, 0x66, 0x9f, - 0xdd, 0xbf, 0x13, 0xa2, 0xd2, 0xdb, 0x0a, 0x6b, 0x85, 0x56, 0xf3, 0x8c, 0x20, 0xc6, 0x0c, 0x9c, - 0x57, 0x15, 0x6f, 0x6c, 0x85, 0xcc, 0xc1, 0x8c, 0xae, 0x50, 0x63, 0xc5, 0x5f, 0xc3, 0x2c, 0xbb, - 0xf0, 0xb3, 0xb8, 0xae, 0x4b, 0x61, 0x08, 0xd3, 0xfc, 0xde, 0x52, 0xc4, 0x3c, 0x8e, 0x9a, 0xef, - 0xc8, 0x88, 0xdd, 0x7b, 0x4b, 0xcc, 0x29, 0xe0, 0xd9, 0x92, 0xa6, 0xb6, 0xcd, 0xef, 0x2d, 0x55, - 0x46, 0x78, 0x7c, 0x3c, 0x42, 0x9d, 0x4d, 0xff, 0x37, 0x42, 0x7d, 0x89, 0xfa, 0xa1, 0xad, 0x61, - 0x8b, 0xda, 0x8c, 0x26, 0x7b, 0xf3, 0x4c, 0x41, 0xde, 0x6e, 0x09, 0x29, 0xdb, 0x6e, 0x19, 0x7f, - 0x94, 0x83, 0x5b, 0x4c, 0x16, 0x49, 0xc6, 0xa3, 0xda, 0xb5, 0x14, 0x64, 0xf4, 0x01, 0xb0, 0x3c, - 0xb2, 0x5c, 0xe0, 0x33, 0x78, 0xcf, 0xb3, 0x28, 0x31, 0x04, 0x54, 0x86, 0x09, 0xd5, 0xe2, 0xb3, - 0xbf, 0x50, 0x2c, 0xe6, 0xf8, 0xf1, 0x13, 0x4b, 0x5a, 0x81, 0x3e, 0x85, 0x4b, 0x2b, 0x2f, 0xc8, - 0x82, 0xe0, 0xa7, 0x13, 0x7f, 0x31, 0x0e, 0xbd, 0x45, 0xa6, 0x77, 0xf8, 0x8a, 0xd1, 0xc5, 0xe0, - 0x68, 0x31, 0xb9, 0x1e, 0x88, 0x03, 0x4e, 0x4a, 0xaf, 0x63, 0xa6, 0x56, 0x66, 0xfc, 0x49, 0x0e, - 0x16, 0x93, 0x5b, 0xe3, 0x1b, 0xcb, 0x3a, 0x9c, 0xaf, 0x5a, 0x8e, 0xeb, 0xd8, 0x4d, 0xab, 0x5d, - 0x6f, 0x1e, 0xe1, 0x56, 0x57, 0x86, 0x02, 0x94, 0xbb, 0x0c, 0xb9, 0xee, 0x70, 0x74, 0x01, 0x62, - 0xc6, 0xb1, 0xd0, 0xfb, 0x70, 0x81, 0x1a, 0x0d, 0xb2, 0xbd, 0xb7, 0x8d, 0x3d, 0x49, 0x8f, 0xf5, - 0x2c, 0xa5, 0x16, 0xdd, 0x83, 0x19, 0x76, 0xa8, 0xb4, 0x76, 0x1d, 0x3b, 0x90, 0x48, 0xec, 0x56, - 0x94, 0x54, 0x65, 0xd4, 0xe0, 0x2d, 0x2d, 0xcf, 0x54, 0xb9, 0xdd, 0x76, 0x9f, 0xe3, 0x56, 0xcd, - 0x73, 0x8f, 0xdd, 0x40, 0x0b, 0x76, 0xcf, 0x73, 0x00, 0x86, 0x1a, 0x17, 0xce, 0xcb, 0x48, 0xb1, - 0xf1, 0xff, 0xc2, 0x8d, 0x1e, 0x14, 0x39, 0xbf, 0xea, 0x70, 0xde, 0x8a, 0xd4, 0x89, 0x87, 0xb1, - 0x1b, 0x82, 0x5f, 0x59, 0x84, 0x7c, 0x33, 0x8e, 0x7f, 0x7b, 0x47, 0x4b, 0x1b, 0x86, 0x16, 0x60, - 0xb6, 0x66, 0x6e, 0x2f, 0xef, 0x56, 0x77, 0x1a, 0x3b, 0x5f, 0xd5, 0x56, 0x1a, 0xbb, 0x5b, 0x8f, - 0xb7, 0xb6, 0xf7, 0xb7, 0x58, 0xcc, 0x4e, 0xad, 0x66, 0x67, 0xa5, 0xbc, 0x59, 0xc8, 0xa1, 0x59, - 0x28, 0x68, 0xc5, 0x2b, 0xbb, 0x95, 0x42, 0xfe, 0x76, 0x43, 0xb5, 0xe8, 0x45, 0x97, 0x60, 0x7e, - 0x79, 0x65, 0x6f, 0xbd, 0xba, 0x22, 0x68, 0xaa, 0xf1, 0x42, 0x67, 0xa1, 0xa0, 0x56, 0xee, 0x6c, - 0xef, 0xd4, 0x58, 0x52, 0x7e, 0xb5, 0x74, 0x7f, 0xa5, 0x52, 0xde, 0xdd, 0x59, 0xdb, 0x2a, 0x0c, - 0x1a, 0x43, 0xa3, 0xf9, 0x42, 0xfe, 0xf6, 0x8f, 0x34, 0x73, 0x5f, 0xb4, 0x08, 0x0b, 0x1c, 0x7c, - 0xb7, 0x5e, 0x5e, 0x4d, 0x6f, 0x82, 0xd5, 0x6e, 0x3e, 0x2c, 0x17, 0x72, 0xe8, 0x32, 0x5c, 0xd4, - 0x4a, 0x6b, 0xe5, 0x7a, 0x7d, 0x7f, 0xdb, 0x64, 0x99, 0xfd, 0xf3, 0xb7, 0xf7, 0xb4, 0xc0, 0x18, - 0xa4, 0x85, 0xcd, 0x87, 0xe5, 0x86, 0xb9, 0xf2, 0xc5, 0xee, 0xba, 0xb9, 0xb2, 0x1c, 0x6f, 0x41, - 0xab, 0xfd, 0x6a, 0xa5, 0x5e, 0xc8, 0xa1, 0x19, 0x98, 0xd6, 0x4a, 0xb7, 0xb6, 0x0b, 0xf9, 0xdb, - 0x37, 0x79, 0xd8, 0x03, 0x34, 0x05, 0xb0, 0xbc, 0x52, 0xaf, 0xae, 0x6c, 0x2d, 0xaf, 0x6f, 0xad, - 0x16, 0x06, 0xd0, 0x24, 0x8c, 0x95, 0xe5, 0xcf, 0xdc, 0xed, 0x8f, 0x60, 0x3a, 0x72, 0x63, 0x22, - 0x10, 0xf2, 0xb2, 0x51, 0x18, 0x20, 0x3c, 0x92, 0x3f, 0xe9, 0x35, 0x97, 0x5d, 0x7e, 0x0a, 0xb9, - 0xa5, 0xbf, 0xfc, 0xbd, 0x1c, 0x8c, 0x93, 0xed, 0x40, 0x98, 0x7d, 0x7e, 0xad, 0x5c, 0x30, 0xf8, - 0x67, 0xc0, 0x13, 0x30, 0xa5, 0xde, 0x26, 0xe8, 0xc9, 0x50, 0xcc, 0x50, 0x5c, 0x51, 0x80, 0x5b, - 0xb9, 0x7b, 0x39, 0x64, 0xd2, 0x57, 0x9a, 0x88, 0xbc, 0x2d, 0x29, 0x27, 0x5f, 0x89, 0x8a, 0x97, - 0x33, 0xc5, 0x74, 0xf4, 0xcb, 0x60, 0xa8, 0x34, 0x53, 0xa4, 0xd2, 0xef, 0xf4, 0x27, 0x7d, 0x8a, - 0x36, 0x6f, 0xf6, 0x07, 0x8e, 0x1e, 0xc1, 0x24, 0x91, 0xd7, 0x24, 0x18, 0xba, 0x14, 0x45, 0x54, - 0x44, 0xc4, 0xe2, 0x62, 0x72, 0xa5, 0x8c, 0xff, 0x3e, 0x41, 0x07, 0xc2, 0x2e, 0x5b, 0x3e, 0x12, - 0xce, 0x71, 0xa2, 0x84, 0xd9, 0xe9, 0x14, 0xcf, 0x47, 0x8a, 0xf7, 0xee, 0xdf, 0xcb, 0xa1, 0x3a, - 0x8d, 0x29, 0xa1, 0x09, 0x7e, 0x48, 0xd8, 0x21, 0xc7, 0x25, 0x42, 0xd6, 0x9b, 0x92, 0xcc, 0x68, - 0x94, 0x22, 0x31, 0x6e, 0x01, 0x8a, 0xcb, 0x53, 0xe8, 0x6a, 0xb8, 0x0e, 0x92, 0x45, 0xad, 0xe2, - 0x85, 0xd8, 0xe3, 0xfb, 0x0a, 0x39, 0x51, 0xd1, 0x0a, 0x4c, 0x71, 0xcf, 0x17, 0x2e, 0xe1, 0xa1, - 0x2c, 0x19, 0x31, 0x95, 0xcc, 0x2a, 0xe5, 0x93, 0x94, 0x12, 0x51, 0x31, 0x1c, 0x47, 0x54, 0x74, - 0x2c, 0x5e, 0x4a, 0xac, 0xe3, 0xe3, 0x7b, 0x08, 0x53, 0xba, 0xc0, 0x89, 0xc4, 0x04, 0x25, 0xca, - 0xa1, 0xa9, 0x1d, 0x6a, 0xc0, 0xfc, 0xa6, 0x65, 0x53, 0x75, 0x13, 0x7f, 0xe2, 0x15, 0x0f, 0xb4, - 0xa8, 0x94, 0xf1, 0x62, 0x5b, 0xc7, 0x4e, 0xab, 0xd8, 0x2b, 0x06, 0x13, 0xfd, 0x6c, 0xea, 0x42, - 0x6e, 0xd2, 0x1f, 0xb8, 0x91, 0xa1, 0x67, 0xa9, 0x4b, 0xb2, 0x59, 0x28, 0xa6, 0x99, 0xd9, 0xa0, - 0x4d, 0x2a, 0xb8, 0x45, 0x28, 0x2a, 0x6b, 0xe2, 0xcc, 0xe4, 0x16, 0xa8, 0xff, 0x55, 0x60, 0x47, - 0xed, 0x65, 0x7c, 0x94, 0xc2, 0xb8, 0x54, 0x62, 0xf7, 0x72, 0xe8, 0x6b, 0xfa, 0x55, 0x27, 0x92, - 0xdb, 0xb7, 0x83, 0x23, 0x6e, 0xb3, 0x76, 0x29, 0x91, 0x00, 0xff, 0x50, 0x32, 0xa8, 0x9b, 0x30, - 0x9b, 0x64, 0xd9, 0x23, 0x19, 0x9a, 0x61, 0xf6, 0x93, 0xba, 0x0a, 0x4c, 0x22, 0x7e, 0xb6, 0xd2, - 0x27, 0x29, 0xc3, 0xb0, 0x24, 0x95, 0xe6, 0x27, 0x30, 0x45, 0x56, 0xc9, 0x63, 0x8c, 0x3b, 0xe5, - 0xb6, 0xfd, 0x0c, 0xfb, 0x48, 0xc4, 0x27, 0x93, 0x45, 0x69, 0xb8, 0xb7, 0x72, 0xe8, 0x5b, 0x30, - 0xbe, 0x6f, 0x05, 0xcd, 0x23, 0x1e, 0x18, 0x47, 0xc4, 0xcd, 0xa1, 0x65, 0x45, 0xf1, 0x8b, 0x56, - 0xde, 0xcb, 0xa1, 0x4f, 0x61, 0x64, 0x15, 0x07, 0xd4, 0x0f, 0xe4, 0x9a, 0x7c, 0xe4, 0x66, 0x06, - 0x65, 0xeb, 0x8e, 0x34, 0x3f, 0x15, 0x1d, 0x8e, 0x2a, 0xb7, 0xd0, 0x5d, 0x00, 0xb6, 0x21, 0x50, - 0x0a, 0xd1, 0xea, 0x62, 0xac, 0xdb, 0x68, 0x95, 0x1c, 0xfc, 0x6d, 0x1c, 0xe0, 0x7e, 0x9b, 0x4c, - 0xe3, 0xd1, 0x06, 0x4c, 0xc9, 0x90, 0xf9, 0x5b, 0xd4, 0x0b, 0xd2, 0x88, 0x10, 0xf3, 0xcf, 0x40, - 0xed, 0x23, 0xf2, 0x55, 0xb0, 0x9c, 0x6a, 0x32, 0x76, 0x1b, 0x4a, 0x8b, 0xe6, 0x26, 0x99, 0xc8, - 0xc0, 0x14, 0xdc, 0x35, 0xd7, 0x0f, 0x74, 0x5c, 0x59, 0x92, 0x8c, 0x8b, 0xa1, 0xa8, 0xb6, 0xab, - 0xc7, 0x71, 0x0b, 0xf7, 0xdc, 0xb4, 0xf0, 0x73, 0xc5, 0x6b, 0x19, 0x10, 0x6c, 0xbb, 0xa3, 0x3b, - 0xc9, 0x32, 0xb9, 0xd1, 0xb3, 0x66, 0xb6, 0x3b, 0xd8, 0xa9, 0xd7, 0xd7, 0x68, 0x40, 0x2e, 0xf1, - 0xa6, 0xa6, 0x94, 0x09, 0xc2, 0x28, 0x5e, 0x45, 0x4e, 0x3d, 0xcd, 0x23, 0x0e, 0x65, 0xf9, 0xc9, - 0x85, 0xa7, 0x5e, 0x62, 0xc8, 0xb1, 0xc7, 0x4c, 0xc7, 0xa0, 0x65, 0x64, 0xdd, 0x5b, 0x42, 0xc5, - 0x24, 0x39, 0x95, 0x7f, 0xd8, 0x17, 0x92, 0xea, 0xf6, 0x1e, 0xdc, 0xcb, 0xa1, 0x15, 0x98, 0x91, - 0x4e, 0xab, 0x61, 0x15, 0x4a, 0x41, 0xc8, 0x38, 0x61, 0xe6, 0x12, 0xc8, 0xec, 0x2d, 0x65, 0x10, - 0x4a, 0x2c, 0x47, 0x9f, 0xc3, 0x0c, 0x5f, 0x9b, 0x5a, 0x7f, 0x0a, 0x72, 0x9b, 0xe1, 0xa2, 0x7d, - 0x6a, 0x4f, 0x1e, 0xc1, 0x5c, 0x3d, 0xc2, 0x1d, 0x66, 0xf0, 0x75, 0x51, 0x27, 0x41, 0x0b, 0xeb, - 0x38, 0x60, 0xec, 0x49, 0xa6, 0xf5, 0x18, 0x10, 0xd3, 0x07, 0x08, 0x72, 0xcf, 0x6c, 0xfc, 0x1c, - 0x5d, 0x8e, 0x74, 0x9d, 0x14, 0x52, 0x30, 0xba, 0x4f, 0xa5, 0x8e, 0x6c, 0x87, 0x25, 0xfe, 0x63, - 0xb9, 0xca, 0xad, 0x8e, 0x75, 0x60, 0xb7, 0xed, 0xc0, 0xc6, 0x64, 0xa9, 0xaa, 0x08, 0x6a, 0x95, - 0x58, 0x0f, 0x17, 0x53, 0x21, 0xd0, 0xaf, 0xd2, 0x70, 0x51, 0xd9, 0x77, 0x13, 0xf4, 0xad, 0xa4, - 0xec, 0xd4, 0x29, 0xb7, 0xab, 0xe2, 0xb7, 0xfb, 0x03, 0xe6, 0x8b, 0xf1, 0x33, 0x98, 0x5c, 0xc5, - 0x01, 0xcb, 0x2e, 0xbe, 0x6c, 0x05, 0x16, 0x92, 0xfa, 0x02, 0x59, 0xc4, 0xd7, 0xa0, 0x88, 0xf5, - 0x10, 0x56, 0xd4, 0xf1, 0x8f, 0xd1, 0x3a, 0x14, 0xd8, 0x36, 0xaf, 0x90, 0xb8, 0x1c, 0x23, 0xc1, - 0x41, 0x2c, 0xcf, 0x3a, 0xf6, 0x53, 0x67, 0xeb, 0x2e, 0x7b, 0xde, 0x45, 0x32, 0x31, 0xb3, 0x22, - 0x47, 0xce, 0x68, 0x65, 0x32, 0xa2, 0x27, 0x99, 0x11, 0x13, 0xfb, 0x38, 0x10, 0xde, 0xad, 0x2c, - 0xd9, 0xd9, 0xf5, 0xf0, 0x4c, 0x8f, 0xd7, 0x86, 0x9f, 0x79, 0x24, 0x12, 0xc3, 0xde, 0x03, 0x24, - 0x13, 0xc0, 0x25, 0x10, 0xbd, 0xa9, 0x89, 0x1e, 0x67, 0xa3, 0xfb, 0x19, 0x8c, 0x31, 0xb4, 0x8a, - 0x1b, 0xc8, 0xfd, 0x51, 0x96, 0x08, 0xcc, 0x85, 0x78, 0x05, 0x1f, 0xe9, 0x27, 0x30, 0xc6, 0xbe, - 0x2a, 0x15, 0x5f, 0x96, 0xf4, 0xda, 0xe1, 0x3f, 0x84, 0xf1, 0x55, 0x1c, 0x54, 0x5c, 0xea, 0x52, - 0xec, 0xcb, 0x0f, 0x49, 0x29, 0x13, 0x14, 0x26, 0x95, 0xbe, 0xef, 0x2d, 0xdd, 0xcb, 0xa1, 0x77, - 0xe9, 0x19, 0x49, 0x5d, 0x91, 0xe7, 0x42, 0x34, 0x25, 0xa9, 0x71, 0x04, 0xc5, 0x18, 0xfc, 0xeb, - 0xf9, 0x1c, 0x39, 0xc4, 0x89, 0x88, 0xdd, 0xf5, 0x3c, 0xec, 0x30, 0xe4, 0x34, 0x79, 0x28, 0x09, - 0xfb, 0x33, 0xba, 0x3f, 0x2a, 0xd8, 0xcc, 0xbc, 0xbe, 0x17, 0x09, 0x96, 0x1a, 0xe1, 0x5e, 0x0e, - 0x7d, 0x00, 0xa3, 0xbc, 0x8f, 0x04, 0x49, 0xeb, 0xb4, 0x9f, 0xd1, 0x6b, 0x8a, 0x09, 0x8c, 0xf7, - 0xb4, 0xcf, 0x3a, 0x4c, 0x1a, 0x77, 0x59, 0x9f, 0x3f, 0x20, 0xc2, 0x40, 0xeb, 0x55, 0x30, 0xab, - 0x42, 0x2a, 0xa0, 0x98, 0x0b, 0xda, 0xdc, 0xaa, 0x7c, 0xce, 0x24, 0x42, 0xe4, 0x7a, 0x1a, 0x03, - 0x46, 0x86, 0x72, 0x90, 0x72, 0xbd, 0x56, 0xdc, 0x6b, 0xa5, 0xac, 0x43, 0xa1, 0xdc, 0xa4, 0xc7, - 0x95, 0x4c, 0x23, 0x2d, 0x2f, 0x55, 0xd1, 0x0a, 0x41, 0x6b, 0x2e, 0x9a, 0x95, 0x7a, 0x03, 0x5b, - 0x34, 0xc4, 0xdd, 0xbc, 0x14, 0x7d, 0x22, 0x55, 0xc9, 0x18, 0x19, 0x97, 0xa8, 0xd9, 0x2a, 0xb9, - 0xf6, 0xb5, 0x5f, 0x8f, 0xcc, 0x47, 0x74, 0xa7, 0x53, 0x52, 0x6c, 0x5f, 0x88, 0xe2, 0xcb, 0xeb, - 0xa6, 0xb0, 0xad, 0x95, 0xa0, 0x65, 0x98, 0xe6, 0x01, 0xb5, 0x24, 0x5b, 0xd2, 0xb0, 0xd3, 0x9a, - 0xff, 0x2e, 0x4c, 0xad, 0x90, 0x93, 0xa8, 0xdb, 0xb2, 0x59, 0x58, 0x4f, 0xa4, 0xc7, 0x69, 0x4c, - 0x45, 0x5c, 0x13, 0xd9, 0x48, 0x94, 0xdc, 0xd3, 0xf2, 0x1b, 0x8e, 0xa7, 0xf7, 0x2e, 0xce, 0x0a, - 0xb2, 0x6a, 0x9a, 0x6a, 0xae, 0x8b, 0x98, 0x4f, 0xc9, 0xf6, 0x8c, 0x6e, 0x68, 0x57, 0xdc, 0xb4, - 0x94, 0xcd, 0x09, 0x42, 0xed, 0x97, 0x4a, 0x62, 0xbd, 0x14, 0x9a, 0xd9, 0x69, 0xa0, 0x53, 0xc7, - 0x2d, 0x03, 0xf1, 0x25, 0xa6, 0x6b, 0x46, 0xef, 0xe8, 0xd4, 0x33, 0x52, 0x3a, 0xa7, 0xb6, 0x40, - 0x55, 0x08, 0x7a, 0x36, 0x61, 0x74, 0x25, 0x3b, 0xe9, 0xb1, 0xa2, 0x42, 0x48, 0x49, 0x43, 0xfc, - 0x88, 0x2e, 0xb3, 0x30, 0xfb, 0x1e, 0x52, 0x2f, 0xe4, 0xd1, 0xe4, 0x83, 0x52, 0x52, 0x4c, 0x4e, - 0x29, 0x5c, 0x83, 0xe9, 0x48, 0xb2, 0x5e, 0xa9, 0x39, 0x4a, 0x4e, 0x17, 0x5c, 0xbc, 0x92, 0x56, - 0x2d, 0xf5, 0xa4, 0x85, 0x68, 0x86, 0x53, 0x39, 0xe4, 0x94, 0xec, 0xb2, 0x72, 0xc8, 0xa9, 0xa9, - 0x51, 0x1f, 0x41, 0x21, 0x9a, 0x5c, 0x51, 0x12, 0x4d, 0xc9, 0xba, 0x98, 0x3a, 0x27, 0x0f, 0x61, - 0x56, 0x9d, 0x51, 0x39, 0xee, 0xb4, 0xdd, 0x3f, 0x8d, 0xce, 0x0e, 0xcc, 0x25, 0xe6, 0x42, 0x94, - 0xb2, 0x41, 0x56, 0xa6, 0xc4, 0x54, 0xaa, 0x18, 0x2e, 0x24, 0xa7, 0x43, 0x45, 0x6f, 0xe9, 0x8a, - 0x89, 0xe4, 0xe4, 0x90, 0xc5, 0x1b, 0x3d, 0xa0, 0x38, 0x43, 0xbf, 0xa6, 0x27, 0x60, 0xac, 0x8d, - 0x6b, 0x8a, 0xaa, 0x22, 0xa5, 0x01, 0x23, 0x0b, 0x44, 0xae, 0x81, 0xd9, 0xa4, 0x74, 0xcc, 0xa9, - 0x2c, 0xbe, 0x9e, 0x4e, 0x33, 0x5c, 0x58, 0x7b, 0x22, 0x6a, 0x5d, 0x2a, 0x67, 0x32, 0xd3, 0x66, - 0x66, 0xdc, 0x75, 0x8b, 0x72, 0x3d, 0xf4, 0xdf, 0xe5, 0x74, 0xbd, 0xd5, 0x6c, 0x52, 0xb2, 0xd6, - 0xa8, 0x5a, 0x29, 0x29, 0x17, 0xa7, 0x64, 0x43, 0x66, 0xb6, 0xd7, 0x3d, 0xa6, 0x62, 0xd2, 0xa9, - 0xab, 0x2a, 0xa6, 0x44, 0xd2, 0x57, 0xd3, 0x01, 0xc2, 0x15, 0x91, 0x90, 0x75, 0x5a, 0xae, 0x88, - 0xf4, 0xfc, 0xd7, 0x72, 0x45, 0x64, 0x25, 0xad, 0x36, 0xc5, 0x47, 0x97, 0xc2, 0x96, 0x8c, 0x14, - 0xa5, 0x19, 0xf7, 0xb8, 0x85, 0x70, 0xe2, 0x22, 0xdd, 0x3e, 0xeb, 0xb4, 0x7d, 0x0d, 0x17, 0x53, - 0xd3, 0x91, 0xa2, 0xb7, 0x63, 0x1f, 0x74, 0x0a, 0x27, 0xd2, 0x7b, 0x3a, 0xa9, 0x65, 0x12, 0x95, - 0x3a, 0xb6, 0x48, 0xd2, 0xd2, 0xd8, 0x8e, 0x9d, 0x90, 0xd1, 0x74, 0x95, 0x4a, 0xbe, 0x4a, 0x56, - 0xd2, 0xd4, 0xb1, 0x5e, 0x4e, 0xa2, 0xe3, 0xc7, 0xf7, 0x54, 0xa5, 0x5f, 0x42, 0x12, 0x8b, 0x56, - 0x9c, 0x65, 0x4f, 0xed, 0xa7, 0x6b, 0x69, 0x74, 0x96, 0xe9, 0x3d, 0x42, 0x24, 0x29, 0x45, 0x17, - 0x35, 0x36, 0x69, 0xa7, 0x64, 0x51, 0x1b, 0x9c, 0x7e, 0x40, 0x56, 0xa9, 0x32, 0x5b, 0x26, 0x45, - 0x4d, 0xed, 0xc5, 0xa5, 0x38, 0x0d, 0x4d, 0x91, 0x2d, 0xb9, 0xc0, 0x7a, 0xb3, 0x18, 0x65, 0x8e, - 0xd6, 0xa1, 0xf4, 0x21, 0x21, 0x95, 0x35, 0x3d, 0xba, 0x94, 0x2e, 0xa1, 0xce, 0xf0, 0xc4, 0x6f, - 0x34, 0xac, 0xb4, 0x88, 0xcf, 0x72, 0x41, 0x6a, 0xe5, 0x94, 0xd2, 0x0c, 0x25, 0x4c, 0x8d, 0xda, - 0xff, 0x26, 0xe4, 0x77, 0x95, 0x7b, 0x68, 0x66, 0xfa, 0xd7, 0x04, 0xe9, 0x4c, 0xee, 0xca, 0xa9, - 0x14, 0x33, 0x13, 0xbe, 0xa6, 0xf6, 0xf4, 0x87, 0xca, 0xae, 0x1c, 0xcb, 0xe2, 0x8a, 0x6e, 0x45, - 0x45, 0xb3, 0xb4, 0x44, 0xaf, 0x19, 0xbb, 0xfe, 0x6c, 0x52, 0x02, 0x58, 0x45, 0xb3, 0x9c, 0x9a, - 0x1d, 0x36, 0x81, 0x0b, 0x72, 0x7b, 0x4b, 0xa1, 0x96, 0x91, 0x0e, 0x36, 0xb5, 0x87, 0xdf, 0x57, - 0xb6, 0xb7, 0x48, 0xda, 0x56, 0xa9, 0x29, 0xe8, 0x91, 0xd7, 0x35, 0x95, 0xf6, 0x16, 0xb5, 0x18, - 0x8f, 0xe7, 0x5c, 0x95, 0xb2, 0x4b, 0x56, 0x46, 0xd6, 0x44, 0xc5, 0xf3, 0x5c, 0x7c, 0x88, 0x84, - 0xde, 0x85, 0x88, 0xda, 0xb8, 0x57, 0xc7, 0xe4, 0x3e, 0x9c, 0x90, 0xab, 0x35, 0xb2, 0x0f, 0xa7, - 0x67, 0x73, 0xcd, 0xb8, 0xe8, 0x4c, 0xd7, 0xed, 0x43, 0x47, 0x49, 0xb5, 0x2a, 0xaf, 0x39, 0xf1, - 0xec, 0xaf, 0x72, 0x8b, 0x49, 0xca, 0xcc, 0xba, 0x4d, 0x24, 0x1c, 0x26, 0x9f, 0xab, 0x49, 0x33, - 0x51, 0x31, 0x3d, 0x57, 0xa8, 0xdc, 0x6e, 0x12, 0xb3, 0x6c, 0x2a, 0x04, 0xd5, 0x8c, 0x95, 0x92, - 0x60, 0x42, 0xf2, 0x4c, 0x49, 0x30, 0x31, 0xc5, 0xe5, 0x5d, 0xaa, 0x57, 0x31, 0xdd, 0x36, 0x56, - 0xf5, 0x2a, 0x4a, 0x1e, 0xc7, 0x88, 0x5a, 0x03, 0x7d, 0x4c, 0x95, 0x1a, 0xd9, 0x9a, 0x90, 0x79, - 0x9d, 0x92, 0x9a, 0x6f, 0x1a, 0xc2, 0x84, 0x96, 0x48, 0x57, 0x33, 0x65, 0xb4, 0xf9, 0x9e, 0x50, - 0x6a, 0x68, 0x68, 0xb1, 0x14, 0x97, 0x51, 0xb4, 0xef, 0xc2, 0x44, 0x98, 0xce, 0x72, 0x6f, 0x49, - 0x41, 0x8c, 0xe4, 0xb8, 0x8c, 0x22, 0x7e, 0x20, 0x5e, 0x54, 0x68, 0x7b, 0x7a, 0x65, 0xb6, 0xfe, - 0xe3, 0x33, 0xa1, 0x44, 0xd1, 0x7a, 0x1a, 0x4b, 0x8e, 0x99, 0xb1, 0xf3, 0x4e, 0xa8, 0x99, 0x7c, - 0xe4, 0xbc, 0x26, 0x24, 0x4e, 0x93, 0xf3, 0x9a, 0x94, 0x8e, 0x8c, 0xf6, 0x86, 0xde, 0xb5, 0xbf, - 0x12, 0x1a, 0x83, 0x90, 0xe8, 0xe5, 0xcc, 0xa4, 0x62, 0xc5, 0x2b, 0xd9, 0x99, 0xb8, 0x42, 0xd2, - 0x75, 0x28, 0x44, 0xd3, 0x0e, 0xa1, 0xa4, 0xc4, 0x70, 0x4a, 0x7e, 0x28, 0x79, 0x87, 0x4b, 0xcd, - 0x57, 0x54, 0x13, 0x7a, 0x7b, 0x9d, 0x6e, 0x4a, 0x7a, 0x30, 0x95, 0x74, 0xb6, 0x58, 0x15, 0x66, - 0x20, 0x52, 0x2f, 0xc2, 0xb1, 0x0c, 0x47, 0xaa, 0x58, 0x95, 0x90, 0xb4, 0xc8, 0x16, 0x01, 0x17, - 0x92, 0x53, 0x98, 0xbe, 0xa3, 0xdf, 0x50, 0x33, 0xa2, 0x4c, 0xf6, 0x7c, 0x7d, 0x46, 0xbf, 0x04, - 0xf3, 0x29, 0xc1, 0x00, 0xd1, 0x8d, 0x88, 0x06, 0x38, 0x39, 0x58, 0x60, 0x31, 0x2b, 0xd3, 0x1f, - 0xda, 0xa4, 0x66, 0x0b, 0x9a, 0x6b, 0x65, 0xec, 0x29, 0x70, 0xdf, 0x0e, 0x8e, 0x58, 0xee, 0x4a, - 0x65, 0xcf, 0x4c, 0xf4, 0xc9, 0x44, 0x75, 0x7a, 0xdf, 0xd0, 0x4a, 0x13, 0x5e, 0x03, 0x13, 0x08, - 0x16, 0x93, 0x09, 0xd2, 0x4c, 0xe1, 0x35, 0xf1, 0xa6, 0x14, 0xed, 0xa6, 0x3a, 0xfc, 0x24, 0x6f, - 0xd2, 0xd4, 0x6e, 0xd6, 0x84, 0x80, 0x94, 0x4c, 0x31, 0xdd, 0x05, 0x36, 0x95, 0xe2, 0x23, 0x42, - 0x31, 0xe6, 0xd5, 0x8a, 0x52, 0xc0, 0xb3, 0x77, 0x0f, 0x53, 0x9c, 0xb7, 0x3a, 0xd6, 0x92, 0xd2, - 0xbf, 0x34, 0xff, 0xd9, 0xd4, 0xfe, 0xad, 0x88, 0xef, 0x29, 0xb9, 0x7f, 0xfd, 0x9e, 0xb8, 0xf2, - 0x5d, 0x2e, 0xe2, 0x58, 0xad, 0x0d, 0x54, 0x29, 0x2f, 0xa6, 0x94, 0xa3, 0x2d, 0x6a, 0x87, 0x14, - 0x2d, 0x55, 0x2e, 0x9e, 0xc9, 0x9e, 0xdb, 0xa9, 0xf4, 0xd8, 0x3a, 0xd6, 0x3c, 0x5f, 0xcf, 0xb2, - 0x8e, 0x23, 0x2e, 0xb3, 0x7c, 0x1d, 0x6b, 0xa5, 0x67, 0x5b, 0xc7, 0x11, 0x82, 0xfa, 0x3a, 0x8e, - 0x76, 0x33, 0x7a, 0x91, 0x4f, 0x9d, 0xd5, 0x68, 0x37, 0xe5, 0x3a, 0x4e, 0xa6, 0x98, 0xee, 0xa1, - 0x9c, 0x4a, 0x51, 0xae, 0x63, 0x9d, 0x62, 0x0a, 0x78, 0x9f, 0xeb, 0x38, 0xda, 0x88, 0xbe, 0x8e, - 0xcf, 0xd4, 0x3f, 0xb9, 0x8e, 0x93, 0xfb, 0x77, 0xe6, 0x75, 0x1c, 0x71, 0xe9, 0xd7, 0x06, 0x9a, - 0xb4, 0x8e, 0xa3, 0xf0, 0x6c, 0x1d, 0x47, 0x4b, 0x23, 0x0a, 0x94, 0x8c, 0x75, 0x1c, 0xc5, 0xfc, - 0x82, 0xd2, 0x8b, 0xb8, 0x23, 0xf7, 0xb3, 0x92, 0x53, 0x3d, 0x99, 0xd1, 0x3e, 0xd5, 0xde, 0x45, - 0xca, 0xfb, 0x5b, 0xcd, 0x8b, 0x69, 0x44, 0xe9, 0x7a, 0xde, 0x13, 0x4c, 0x8c, 0x76, 0x57, 0x57, - 0x4d, 0x25, 0x7b, 0x63, 0x67, 0x74, 0x78, 0x8f, 0xac, 0x9b, 0x56, 0x06, 0xdd, 0x2c, 0x67, 0xf2, - 0x0c, 0xba, 0xf2, 0x1e, 0x13, 0xa5, 0x9b, 0x8a, 0x92, 0xbd, 0xbe, 0xbf, 0x14, 0xef, 0x17, 0x51, - 0xbc, 0xa5, 0xc8, 0xcd, 0xe8, 0xcc, 0x3d, 0x95, 0x37, 0xa4, 0x68, 0x4f, 0xcf, 0xba, 0xce, 0x37, - 0x85, 0xf4, 0x10, 0x8b, 0x42, 0x11, 0x19, 0xb4, 0xba, 0xd6, 0x53, 0x6b, 0xd0, 0x0e, 0x55, 0xd5, - 0xc6, 0xcb, 0x15, 0x35, 0x6f, 0x5a, 0xb8, 0x8b, 0x9e, 0x54, 0x63, 0xfe, 0xf4, 0x2a, 0xd5, 0x34, - 0x67, 0x7b, 0x49, 0x35, 0x8e, 0xfd, 0x39, 0x55, 0x7d, 0x71, 0x07, 0x20, 0xe7, 0x89, 0x9b, 0x7e, - 0x4f, 0x99, 0xd1, 0x6c, 0xa5, 0x08, 0x2c, 0x35, 0x51, 0xfb, 0x84, 0x3f, 0xd0, 0x89, 0xc2, 0x54, - 0xe6, 0x27, 0xe1, 0xa3, 0xcf, 0xa1, 0xc0, 0xb7, 0xb7, 0x90, 0x40, 0x12, 0x60, 0xea, 0xd4, 0x55, - 0x84, 0xc6, 0xad, 0x8f, 0x1e, 0xf4, 0xa3, 0x69, 0xeb, 0x87, 0x13, 0xe9, 0x6a, 0x29, 0x72, 0x1c, - 0xee, 0x78, 0x5d, 0x3f, 0xc0, 0xad, 0xb8, 0x3a, 0x49, 0xef, 0x8c, 0xb0, 0xd8, 0xd0, 0xc1, 0xf7, - 0x96, 0xd0, 0x3a, 0xdd, 0xdb, 0xf4, 0xe2, 0x2c, 0x7d, 0x5b, 0x32, 0x19, 0xba, 0xf5, 0xac, 0x49, - 0x4f, 0x13, 0xbd, 0x4f, 0x69, 0x6d, 0xa7, 0x77, 0x4a, 0xb2, 0xa8, 0xcf, 0xd1, 0xa5, 0xb1, 0x88, - 0x5d, 0x88, 0x99, 0xee, 0xaf, 0x17, 0x67, 0xa2, 0xbe, 0x2f, 0xe8, 0x7b, 0x30, 0x26, 0x90, 0x7b, - 0x33, 0x24, 0x8a, 0x4d, 0x19, 0xb2, 0x0c, 0x93, 0x9a, 0x63, 0x8f, 0xbc, 0xdd, 0x24, 0xb9, 0xfb, - 0x64, 0xcc, 0xf3, 0xa4, 0xe6, 0xc0, 0x23, 0xa9, 0x24, 0xb9, 0xf5, 0xa4, 0x52, 0xf9, 0x14, 0xc6, - 0x39, 0x4b, 0x33, 0xb9, 0x91, 0xae, 0x6c, 0x9b, 0x53, 0x0c, 0xa2, 0xbb, 0x2d, 0x3b, 0xa8, 0xba, - 0xce, 0x13, 0xfb, 0xb0, 0x27, 0x63, 0xe2, 0x28, 0x7b, 0x4b, 0x68, 0x8f, 0x26, 0x68, 0x13, 0x69, - 0xf3, 0x70, 0xf0, 0xdc, 0xf5, 0x9e, 0xda, 0xce, 0x61, 0x0f, 0x92, 0x57, 0x75, 0x92, 0x51, 0x3c, - 0x46, 0xb7, 0x9e, 0x4e, 0xb7, 0x27, 0x7e, 0x86, 0xb2, 0x6d, 0x91, 0xda, 0xf2, 0x9c, 0xb5, 0xc7, - 0xe9, 0x0f, 0x8f, 0x17, 0x43, 0x53, 0x62, 0x13, 0x37, 0x5d, 0xaf, 0xd5, 0x9b, 0x58, 0x49, 0x37, - 0xdc, 0x8d, 0xa0, 0xed, 0x2d, 0x11, 0xaa, 0xf5, 0x54, 0xaa, 0xbd, 0xb0, 0x33, 0x4e, 0xab, 0x4b, - 0x74, 0xec, 0x67, 0xec, 0x6d, 0xf6, 0xae, 0x45, 0x4e, 0x9a, 0x9a, 0x87, 0x9f, 0x60, 0x8f, 0xda, - 0x83, 0xf7, 0xb2, 0x84, 0xd6, 0xc1, 0xf7, 0x96, 0x08, 0x95, 0x7a, 0x8c, 0x4a, 0x1a, 0x74, 0x96, - 0x4a, 0x9e, 0x0e, 0xad, 0xcf, 0xde, 0xa4, 0x91, 0xf9, 0x80, 0x3e, 0x79, 0xec, 0xae, 0xf7, 0xe0, - 0x88, 0xf0, 0x50, 0x10, 0x80, 0x7b, 0xf7, 0x09, 0x66, 0x5d, 0xc1, 0x8c, 0x43, 0xa4, 0xb6, 0xf9, - 0x3d, 0xf1, 0xb6, 0xd1, 0xb3, 0xd9, 0x34, 0x0a, 0x0f, 0xe8, 0xf6, 0xc6, 0x8d, 0xa0, 0x15, 0xad, - 0xa0, 0x96, 0x1a, 0xb5, 0x38, 0xa9, 0xda, 0x43, 0xfb, 0xa8, 0xcc, 0x6e, 0x74, 0x6a, 0x12, 0x55, - 0xc5, 0x1a, 0x22, 0x31, 0xbb, 0x6a, 0x94, 0x04, 0xd3, 0x6a, 0x6e, 0xb8, 0xcd, 0xa7, 0xaa, 0x56, - 0x53, 0xc9, 0xca, 0x59, 0xd4, 0x73, 0x66, 0xf2, 0x4d, 0x9c, 0x26, 0xce, 0x54, 0x4d, 0xb5, 0xd4, - 0xbc, 0x9c, 0xaa, 0x56, 0x53, 0xcf, 0x20, 0xfa, 0x40, 0xa8, 0x0b, 0x69, 0x83, 0x3a, 0xe5, 0x54, - 0xd6, 0x48, 0x4d, 0x21, 0x45, 0xd2, 0x35, 0x85, 0x6a, 0x47, 0xd3, 0xb7, 0x0b, 0x14, 0x4f, 0x21, - 0x2a, 0xef, 0x1f, 0xa9, 0xd9, 0x45, 0x33, 0x2c, 0xae, 0x66, 0x12, 0x72, 0x25, 0xcb, 0x1b, 0x5b, - 0x7a, 0x1e, 0xe5, 0xa2, 0x6e, 0x3e, 0x74, 0x2f, 0x87, 0xb6, 0xe0, 0xc2, 0x2a, 0x0e, 0xf8, 0x06, - 0x66, 0x62, 0x3f, 0xf0, 0xec, 0x66, 0x90, 0xf9, 0xd0, 0x27, 0xae, 0x1b, 0x09, 0x38, 0x7b, 0xef, - 0x12, 0x7a, 0xf5, 0x64, 0x7a, 0x99, 0x78, 0x19, 0xd6, 0xb8, 0xfc, 0xf5, 0xe0, 0x2c, 0x5d, 0x4c, - 0x5f, 0xe2, 0x23, 0xcc, 0x66, 0x26, 0x1d, 0xb5, 0x10, 0x86, 0xd5, 0xe7, 0x17, 0xa8, 0x3b, 0x70, - 0x8e, 0x21, 0xa5, 0x9e, 0x91, 0x13, 0x2a, 0x0e, 0xba, 0x2f, 0xcc, 0x36, 0x09, 0x8a, 0x56, 0x95, - 0xda, 0xaf, 0xfb, 0x30, 0xc6, 0x6e, 0x4b, 0xfd, 0xa3, 0x7c, 0x2c, 0x8c, 0x3b, 0xb3, 0x3a, 0x96, - 0x86, 0xfc, 0x39, 0x4c, 0xaa, 0xf6, 0x32, 0x67, 0x67, 0xe4, 0xa7, 0xf4, 0x39, 0x56, 0xbc, 0x7a, - 0xa4, 0xe3, 0xcf, 0x45, 0x52, 0x2d, 0x70, 0x96, 0xb2, 0x0d, 0x52, 0x26, 0x1d, 0x4f, 0xeb, 0xfe, - 0xf9, 0x18, 0x36, 0xfa, 0x58, 0xf8, 0x46, 0x49, 0xe4, 0x38, 0x50, 0x06, 0xcf, 0xa6, 0x18, 0x9b, - 0x5f, 0x05, 0x59, 0x6e, 0xb0, 0x3d, 0xbb, 0xdd, 0xcf, 0xb3, 0x71, 0x6f, 0xd6, 0xa5, 0x51, 0xd9, - 0xa6, 0x82, 0x57, 0x2c, 0x09, 0x48, 0x3a, 0xa1, 0x2b, 0xe9, 0x79, 0x43, 0xe8, 0x64, 0x3c, 0xa2, - 0x17, 0xbb, 0x78, 0x02, 0xf9, 0xb4, 0xe1, 0x65, 0xe4, 0x21, 0x09, 0x6f, 0xb2, 0x71, 0x72, 0x19, - 0x68, 0x59, 0x17, 0x63, 0xee, 0xad, 0xf9, 0x46, 0xc8, 0xad, 0x0b, 0xb3, 0xc3, 0xfe, 0x07, 0x9b, - 0x21, 0x04, 0x25, 0x3c, 0x54, 0xf7, 0x9c, 0x8b, 0x34, 0x72, 0xbf, 0x44, 0xe5, 0xbf, 0xe4, 0xfc, - 0xcf, 0xa9, 0xc4, 0x6e, 0x29, 0xb6, 0x0e, 0xd9, 0x99, 0xa3, 0x9f, 0x52, 0xa7, 0xb3, 0xe4, 0x34, - 0x29, 0x37, 0x7b, 0x50, 0x11, 0x9c, 0x78, 0xbb, 0x27, 0x9c, 0x7c, 0xf6, 0xbc, 0xc4, 0x4e, 0xd8, - 0xe4, 0xf6, 0x7a, 0xa4, 0x7d, 0x49, 0x78, 0x89, 0x4e, 0x49, 0xae, 0x2c, 0x08, 0xea, 0x36, 0x9d, - 0x99, 0x63, 0x48, 0x63, 0xff, 0x17, 0x50, 0x0a, 0x0d, 0x3a, 0xce, 0x36, 0x09, 0xe9, 0x12, 0x3d, - 0x8a, 0xa7, 0x9c, 0x46, 0x59, 0x91, 0xe9, 0x8b, 0xd7, 0xd2, 0x38, 0xec, 0x2b, 0x96, 0x42, 0xdc, - 0x14, 0x2d, 0x92, 0x30, 0x28, 0x2d, 0xf5, 0x50, 0x86, 0x6a, 0x95, 0x7b, 0xe1, 0xbd, 0x11, 0x42, - 0xf1, 0xd9, 0x3e, 0x3b, 0x21, 0x69, 0x6f, 0x11, 0x21, 0x64, 0x64, 0x4c, 0xef, 0x59, 0xcc, 0xc9, - 0xa2, 0x53, 0x71, 0xd6, 0x09, 0xb5, 0x42, 0xcf, 0xb3, 0x78, 0x5e, 0x6c, 0x29, 0xcb, 0xa5, 0xe6, - 0xe8, 0x96, 0xb3, 0x9b, 0x91, 0x54, 0xbb, 0x4a, 0x3e, 0x53, 0xd6, 0x84, 0x96, 0x94, 0xb7, 0x6a, - 0x6e, 0x84, 0x9a, 0x82, 0x84, 0x6c, 0xbd, 0x45, 0x10, 0x95, 0xe6, 0x06, 0xaa, 0x8b, 0xb0, 0xaa, - 0x49, 0x31, 0x50, 0xa4, 0x97, 0x4d, 0x52, 0x65, 0xc6, 0xed, 0xa2, 0x2e, 0x02, 0xa9, 0xbe, 0x49, - 0xa2, 0x0d, 0x98, 0x4f, 0x89, 0x1c, 0x23, 0x1f, 0x4d, 0xb3, 0x23, 0xcb, 0x14, 0xb3, 0x1b, 0x46, - 0x3f, 0x80, 0xb9, 0xc4, 0xd0, 0x32, 0x52, 0xf1, 0x9b, 0x15, 0x78, 0xa6, 0x17, 0xf1, 0xa7, 0xb0, - 0x90, 0x96, 0x41, 0x37, 0xf4, 0xfa, 0xc9, 0x4e, 0x6b, 0x2c, 0xf7, 0xd4, 0x9e, 0xa9, 0x78, 0xb7, - 0x60, 0x36, 0x29, 0x2b, 0xad, 0xfc, 0x38, 0x32, 0x52, 0xd6, 0x26, 0xba, 0x16, 0xd5, 0x60, 0x2e, - 0x31, 0x33, 0xac, 0xe4, 0x4c, 0x56, 0xde, 0xd8, 0x44, 0x8a, 0x5f, 0xc2, 0x7c, 0x4a, 0x1a, 0xd4, - 0xf0, 0x05, 0x3c, 0x33, 0x4d, 0x6a, 0x86, 0xfd, 0x50, 0x31, 0x3d, 0xc3, 0xa6, 0x34, 0x1b, 0xeb, - 0x99, 0x84, 0xb3, 0x98, 0x98, 0x76, 0x18, 0xed, 0xd0, 0x45, 0x98, 0x94, 0x72, 0x53, 0x5d, 0x84, - 0x19, 0x29, 0x39, 0x53, 0x5c, 0xc2, 0xe6, 0x53, 0xb2, 0x6c, 0x66, 0x50, 0xed, 0xa3, 0xb7, 0x5b, - 0x62, 0xff, 0xd7, 0x73, 0x21, 0x46, 0x4c, 0x91, 0x13, 0x13, 0x25, 0x26, 0xf6, 0x53, 0x89, 0xa5, - 0xd0, 0x6e, 0x67, 0x88, 0x41, 0x48, 0x0d, 0xa6, 0x40, 0x20, 0xa9, 0xee, 0x7c, 0x52, 0xc5, 0xcd, - 0xda, 0x51, 0x63, 0xc8, 0x54, 0xf0, 0xfc, 0x08, 0x26, 0xea, 0x6a, 0xe3, 0x09, 0x8d, 0xa4, 0x2e, - 0x0a, 0xe9, 0x5b, 0xd3, 0xbb, 0xef, 0x19, 0xca, 0x1e, 0x79, 0x38, 0xf4, 0x35, 0x8a, 0x54, 0x8b, - 0x15, 0x2d, 0x5d, 0x89, 0xdc, 0xa9, 0x93, 0x32, 0x01, 0x49, 0x8b, 0x95, 0xe4, 0x0c, 0x27, 0x0d, - 0x16, 0x60, 0x3d, 0x9a, 0xe8, 0x09, 0x19, 0xbd, 0x13, 0x98, 0x49, 0x4b, 0xf3, 0xcc, 0x4c, 0x51, - 0xcc, 0xbc, 0x26, 0x4c, 0xd0, 0xa2, 0x9a, 0xd7, 0xc4, 0xd2, 0xbe, 0xa8, 0xe6, 0x35, 0x09, 0x39, - 0x5d, 0x56, 0x28, 0xad, 0x30, 0x32, 0x7d, 0x86, 0xc2, 0x40, 0x92, 0x49, 0x08, 0x80, 0xff, 0x58, - 0x0d, 0xc9, 0xc1, 0xe2, 0xd9, 0x67, 0x68, 0x3c, 0xa3, 0xa1, 0x38, 0x22, 0x01, 0xf0, 0x1f, 0x41, - 0x21, 0x1a, 0xcb, 0x4b, 0xaa, 0xa3, 0x52, 0x82, 0x7c, 0x65, 0x2c, 0x31, 0x08, 0x23, 0x76, 0x49, - 0xa5, 0x4f, 0x2c, 0x88, 0x57, 0xf1, 0x62, 0x42, 0x8d, 0x14, 0xd7, 0x26, 0xd4, 0xf8, 0x5e, 0xd2, - 0x42, 0x2c, 0x21, 0xe8, 0x57, 0xf1, 0x52, 0x62, 0x1d, 0x27, 0x14, 0xb0, 0xdc, 0x7b, 0xc9, 0x99, - 0xfb, 0x42, 0xb7, 0xa6, 0x0c, 0x18, 0xd1, 0xcc, 0xed, 0x7e, 0x40, 0x79, 0xab, 0x58, 0xc6, 0xd3, - 0x8f, 0x43, 0xa1, 0xb7, 0x13, 0xdc, 0x0f, 0x34, 0x88, 0xd0, 0x78, 0x2a, 0x7c, 0x44, 0x4f, 0xca, - 0x4e, 0x88, 0xf6, 0x45, 0x7c, 0xf3, 0x94, 0x96, 0x7a, 0x11, 0x48, 0x9d, 0xc1, 0x7d, 0x11, 0xd1, - 0xfc, 0x4d, 0x13, 0x3e, 0x80, 0xc5, 0x88, 0x77, 0x83, 0x4e, 0xf8, 0x76, 0xb2, 0x0b, 0x44, 0x22, - 0x7b, 0xd2, 0xe5, 0xe1, 0xab, 0x71, 0x57, 0x88, 0xc8, 0xbc, 0x9f, 0x75, 0xaf, 0xda, 0x84, 0x29, - 0xba, 0x3d, 0x88, 0x7c, 0x93, 0x61, 0x24, 0x17, 0xbd, 0x38, 0x1a, 0x52, 0x28, 0x5a, 0x2b, 0xdd, - 0xc0, 0x27, 0xb8, 0x8b, 0x2c, 0xcb, 0x5e, 0x59, 0xd4, 0xfd, 0x66, 0x69, 0x61, 0xd2, 0xe9, 0xc3, - 0x93, 0x62, 0xa2, 0x4f, 0x61, 0x3a, 0xf4, 0x9c, 0x65, 0x24, 0x12, 0xc0, 0x32, 0x94, 0x50, 0xd3, - 0xa1, 0xfb, 0xec, 0xd9, 0xd1, 0xd7, 0xc4, 0x11, 0x12, 0xa2, 0x5f, 0x8e, 0x79, 0x85, 0x68, 0x63, - 0xe8, 0xe7, 0x24, 0x51, 0x78, 0x7b, 0xd6, 0xd9, 0x69, 0xd2, 0xcf, 0x2d, 0x39, 0x70, 0x9d, 0xfa, - 0xb9, 0x65, 0x06, 0xd7, 0x93, 0x62, 0x6b, 0x0a, 0x9d, 0x4d, 0xb8, 0x4e, 0x03, 0x9b, 0xd4, 0xb0, - 0xd3, 0xb2, 0x9d, 0xc3, 0x64, 0xa8, 0xf4, 0xbe, 0x47, 0xc3, 0xa1, 0xb4, 0xe1, 0x5a, 0xcf, 0xc8, - 0x7d, 0xe8, 0xae, 0x66, 0x11, 0xd2, 0x3b, 0xc6, 0x5f, 0x96, 0x27, 0x56, 0x52, 0x00, 0x3c, 0x79, - 0x3e, 0x66, 0xc4, 0xe2, 0x93, 0xe7, 0x63, 0x66, 0x04, 0xbd, 0x2f, 0x69, 0xd2, 0x00, 0x7e, 0xb6, - 0xd0, 0x60, 0x45, 0xd8, 0x61, 0x21, 0x7d, 0x33, 0x9f, 0x54, 0xae, 0xe9, 0x0f, 0x89, 0x31, 0x44, - 0x7a, 0x17, 0xb9, 0xc2, 0x6f, 0x50, 0x69, 0xc4, 0x7b, 0x13, 0xc9, 0xb0, 0x44, 0xbe, 0xc2, 0x16, - 0xe0, 0x99, 0x7b, 0x9e, 0x52, 0x5e, 0x59, 0xfe, 0xe9, 0x9f, 0x5f, 0xc9, 0xfd, 0xf4, 0x67, 0x57, - 0x72, 0xff, 0xee, 0x67, 0x57, 0x72, 0xff, 0xe9, 0x67, 0x57, 0x72, 0xdf, 0x5f, 0xea, 0x2f, 0xb0, - 0x6c, 0xb3, 0x6d, 0x63, 0x27, 0xb8, 0xcb, 0xc8, 0x9d, 0xa3, 0xff, 0x3d, 0xf8, 0xdf, 0x01, 0x00, - 0x00, 0xff, 0xff, 0x0d, 0x3d, 0x3a, 0xf6, 0xa5, 0xdb, 0x00, 0x00, + // 13768 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0xbd, 0x5b, 0x6c, 0x1c, 0x49, + 0x96, 0x18, 0xca, 0x2a, 0x92, 0x22, 0x79, 0xf8, 0x2a, 0x05, 0x49, 0x91, 0x2a, 0x51, 0x2a, 0x29, + 0xd5, 0x52, 0xab, 0x35, 0x33, 0x7a, 0x50, 0xdd, 0x3d, 0xfd, 0xee, 0xa9, 0x2a, 0x52, 0x24, 0x25, + 0x3e, 0xaa, 0xb3, 0xf8, 0xe8, 0x9e, 0xe9, 0x9d, 0x9a, 0x64, 0x55, 0x88, 0xcc, 0xab, 0x62, 0x66, + 0x4d, 0x66, 0x96, 0x1e, 0xb3, 0x77, 0xf7, 0xde, 0xbd, 0x7b, 0xbd, 0xf0, 0x8f, 0xd7, 0x6b, 0x60, + 0xd7, 0xd8, 0x85, 0x17, 0x58, 0x1b, 0xb6, 0x01, 0xdb, 0x80, 0x81, 0xfd, 0x31, 0xf6, 0xc3, 0x5f, + 0x86, 0x0d, 0x78, 0x6c, 0x63, 0x01, 0x03, 0xbb, 0x86, 0x01, 0x7f, 0x70, 0xbd, 0x03, 0xf8, 0x87, + 0xd8, 0xfd, 0x30, 0x0c, 0xdb, 0xf0, 0x00, 0x06, 0x8c, 0x78, 0x66, 0x44, 0xbe, 0xaa, 0x28, 0xa9, + 0xc7, 0xfe, 0x91, 0x58, 0x11, 0xe7, 0x9c, 0x88, 0x38, 0x11, 0x19, 0x71, 0xe2, 0xc4, 0x79, 0xc0, + 0x9d, 0x00, 0xb7, 0x71, 0xc7, 0xf5, 0x82, 0xbb, 0x6d, 0x7c, 0x68, 0x35, 0x5f, 0xde, 0x6d, 0xb6, + 0x6d, 0xec, 0x04, 0x77, 0x3b, 0x9e, 0x1b, 0xb8, 0x77, 0xad, 0x6e, 0x70, 0xe4, 0x63, 0xef, 0x99, + 0xdd, 0xc4, 0x77, 0x68, 0x09, 0x1a, 0xa6, 0xff, 0x15, 0x67, 0x0f, 0xdd, 0x43, 0x97, 0xc1, 0x90, + 0xbf, 0x58, 0x65, 0xf1, 0xd2, 0xa1, 0xeb, 0x1e, 0xb6, 0x31, 0x43, 0x3e, 0xe8, 0x3e, 0xb9, 0x8b, + 0x8f, 0x3b, 0xc1, 0x4b, 0x5e, 0x59, 0x8a, 0x56, 0x06, 0xf6, 0x31, 0xf6, 0x03, 0xeb, 0xb8, 0xc3, + 0x01, 0xde, 0x91, 0x5d, 0xb1, 0x82, 0x80, 0xd4, 0x04, 0xb6, 0xeb, 0xdc, 0x7d, 0x76, 0x5f, 0xfd, + 0xc9, 0x41, 0x6f, 0x65, 0xf6, 0xba, 0x89, 0xbd, 0xc0, 0xef, 0x0b, 0x12, 0x3f, 0xc3, 0x4e, 0x10, + 0x6b, 0x9e, 0x43, 0x06, 0x2f, 0x3b, 0xd8, 0x67, 0x20, 0xe2, 0x3f, 0x0e, 0x7a, 0x2d, 0x19, 0x94, + 0xfe, 0xcb, 0x41, 0xbe, 0x93, 0x0c, 0xf2, 0x1c, 0x1f, 0x10, 0x9e, 0x3a, 0xf2, 0x8f, 0x1e, 0xe0, + 0x9e, 0xd5, 0xe9, 0x60, 0x2f, 0xfc, 0x23, 0xd6, 0xd7, 0xae, 0x6f, 0x1d, 0x62, 0xde, 0xc7, 0x67, + 0xf7, 0xd5, 0x9f, 0x0c, 0xd4, 0xf8, 0x83, 0x1c, 0x0c, 0xef, 0x5b, 0x41, 0xf3, 0x08, 0x7d, 0x0e, + 0xc3, 0x8f, 0x6d, 0xa7, 0xe5, 0x2f, 0xe4, 0xae, 0x0e, 0xde, 0x1a, 0x5f, 0x2a, 0xdc, 0x61, 0xfd, + 0xa5, 0x95, 0xa4, 0xa2, 0x32, 0xff, 0xd3, 0x93, 0xd2, 0xc0, 0xe9, 0x49, 0x69, 0xfa, 0x29, 0x01, + 0xfb, 0xb6, 0x7b, 0x6c, 0x07, 0x74, 0x02, 0x4d, 0x86, 0x87, 0x76, 0x61, 0xa6, 0xdc, 0x6e, 0xbb, + 0xcf, 0x6b, 0x96, 0x17, 0xd8, 0x56, 0xbb, 0xde, 0x6d, 0x36, 0xb1, 0xef, 0x2f, 0xe4, 0xaf, 0xe6, + 0x6e, 0x8d, 0x56, 0xae, 0x9f, 0x9e, 0x94, 0x4a, 0x16, 0xa9, 0x6e, 0x74, 0x58, 0x7d, 0xc3, 0x67, + 0x00, 0x0a, 0xa1, 0x24, 0x7c, 0xe3, 0x2f, 0x86, 0xa1, 0xb0, 0xe6, 0xfa, 0x41, 0x95, 0x4c, 0x9b, + 0x89, 0x7f, 0xdc, 0xc5, 0x7e, 0x80, 0xae, 0xc3, 0x39, 0x52, 0xb6, 0xbe, 0xbc, 0x90, 0xbb, 0x9a, + 0xbb, 0x35, 0x56, 0x19, 0x3f, 0x3d, 0x29, 0x8d, 0x1c, 0xb9, 0x7e, 0xd0, 0xb0, 0x5b, 0x26, 0xaf, + 0x42, 0xef, 0xc0, 0xe8, 0x96, 0xdb, 0xc2, 0x5b, 0xd6, 0x31, 0xa6, 0xbd, 0x18, 0xab, 0x4c, 0x9e, + 0x9e, 0x94, 0xc6, 0x1c, 0xb7, 0x85, 0x1b, 0x8e, 0x75, 0x8c, 0x4d, 0x59, 0x8d, 0xf6, 0x60, 0xc8, + 0x74, 0xdb, 0x78, 0x61, 0x90, 0x82, 0x55, 0x4e, 0x4f, 0x4a, 0x43, 0x9e, 0xdb, 0xc6, 0x3f, 0x3f, + 0x29, 0xbd, 0x7f, 0x68, 0x07, 0x47, 0xdd, 0x83, 0x3b, 0x4d, 0xf7, 0xf8, 0xee, 0xa1, 0x67, 0x3d, + 0xb3, 0xd9, 0x4a, 0xb3, 0xda, 0x77, 0xc3, 0xf5, 0xd8, 0xb1, 0xf9, 0xe4, 0xd6, 0x5f, 0xfa, 0x01, + 0x3e, 0x26, 0x94, 0x4c, 0x4a, 0x0f, 0xed, 0xc3, 0x6c, 0xb9, 0xd5, 0xb2, 0x19, 0x46, 0xcd, 0xb3, + 0x9d, 0xa6, 0xdd, 0xb1, 0xda, 0xfe, 0xc2, 0xd0, 0xd5, 0xc1, 0x5b, 0x63, 0x9c, 0x29, 0xb2, 0xbe, + 0xd1, 0x91, 0x00, 0x0a, 0x53, 0x12, 0x09, 0xa0, 0x07, 0x30, 0xba, 0xbc, 0x55, 0x27, 0x7d, 0xf7, + 0x17, 0x86, 0x29, 0xb1, 0xf9, 0xd3, 0x93, 0xd2, 0x4c, 0xcb, 0xf1, 0xe9, 0xd0, 0x54, 0x02, 0x12, + 0x10, 0xbd, 0x0f, 0x13, 0xb5, 0xee, 0x41, 0xdb, 0x6e, 0xee, 0x6c, 0xd4, 0x1f, 0xe3, 0x97, 0x0b, + 0xe7, 0xae, 0xe6, 0x6e, 0x4d, 0x54, 0xd0, 0xe9, 0x49, 0x69, 0xaa, 0x43, 0xcb, 0x1b, 0x41, 0xdb, + 0x6f, 0x3c, 0xc5, 0x2f, 0x4d, 0x0d, 0x2e, 0xc4, 0xab, 0xd7, 0xd7, 0x08, 0xde, 0x48, 0x0c, 0xcf, + 0xf7, 0x8f, 0x54, 0x3c, 0x06, 0x87, 0xee, 0x02, 0x98, 0xf8, 0xd8, 0x0d, 0x70, 0xb9, 0xd5, 0xf2, + 0x16, 0x46, 0x29, 0x6f, 0xa7, 0x4f, 0x4f, 0x4a, 0xe3, 0x1e, 0x2d, 0x6d, 0x58, 0xad, 0x96, 0x67, + 0x2a, 0x20, 0xa8, 0x0a, 0xa3, 0xa6, 0xcb, 0x18, 0xbc, 0x30, 0x76, 0x35, 0x77, 0x6b, 0x7c, 0x69, + 0x9a, 0x2f, 0x43, 0x51, 0x5c, 0xb9, 0x70, 0x7a, 0x52, 0x42, 0x1e, 0xff, 0xa5, 0x8e, 0x52, 0x40, + 0xa0, 0x12, 0x8c, 0x6c, 0xb9, 0x55, 0xab, 0x79, 0x84, 0x17, 0x80, 0xae, 0xbd, 0xe1, 0xd3, 0x93, + 0x52, 0xee, 0x3b, 0xa6, 0x28, 0x45, 0xcf, 0x60, 0x3c, 0x9c, 0x28, 0x7f, 0x61, 0x9c, 0xb2, 0x6f, + 0xe7, 0xf4, 0xa4, 0x74, 0xc1, 0xa7, 0xc5, 0x0d, 0x32, 0xf5, 0x0a, 0x07, 0x5f, 0x63, 0x15, 0xa8, + 0x0d, 0x3d, 0x1a, 0x1a, 0x9d, 0x28, 0x4c, 0x9a, 0x97, 0x77, 0x1d, 0x3f, 0xb0, 0x0e, 0xda, 0x38, + 0xac, 0x2a, 0xfb, 0x3e, 0xf6, 0x08, 0xbd, 0xf5, 0x65, 0xe3, 0x7f, 0xe6, 0x00, 0x6d, 0x77, 0xb0, + 0x53, 0xaf, 0xaf, 0x91, 0x15, 0x2f, 0x16, 0xfc, 0xb7, 0x61, 0x8c, 0xb1, 0x96, 0xf0, 0x3f, 0x4f, + 0xf9, 0x3f, 0x75, 0x7a, 0x52, 0x02, 0xce, 0x7f, 0xc2, 0xfb, 0x10, 0x00, 0xdd, 0x80, 0xc1, 0x9d, + 0x9d, 0x0d, 0xba, 0x9a, 0x07, 0x2b, 0x33, 0xa7, 0x27, 0xa5, 0xc1, 0x20, 0x68, 0xff, 0xfc, 0xa4, + 0x34, 0xba, 0xdc, 0xf5, 0x68, 0xc7, 0x4d, 0x52, 0x8f, 0x6e, 0xc0, 0x48, 0xb5, 0xdd, 0xf5, 0x03, + 0xec, 0x2d, 0x0c, 0x85, 0x9f, 0x51, 0x93, 0x15, 0x99, 0xa2, 0x0e, 0x7d, 0x0b, 0x86, 0x76, 0x7d, + 0xec, 0x2d, 0x0c, 0xd3, 0x19, 0x99, 0xe4, 0x33, 0x42, 0x8a, 0xf6, 0x96, 0x2a, 0xa3, 0xe4, 0x5b, + 0xe9, 0xfa, 0xd8, 0x33, 0x29, 0x10, 0xba, 0x03, 0xc3, 0x8c, 0xad, 0xe7, 0xe8, 0x36, 0x32, 0x29, + 0xe7, 0xaf, 0x8d, 0xf7, 0xde, 0xaf, 0x8c, 0x9d, 0x9e, 0x94, 0x86, 0x29, 0x7b, 0xcd, 0x61, 0xc1, + 0x94, 0x5c, 0x21, 0x6f, 0x8e, 0x12, 0x5c, 0xb2, 0x70, 0x8d, 0x6f, 0xc1, 0xb8, 0x32, 0x7c, 0xb4, + 0x08, 0x43, 0xe4, 0x7f, 0xfa, 0x99, 0x4f, 0xb0, 0xc6, 0xc8, 0xfe, 0x6d, 0xd2, 0x52, 0xe3, 0xf7, + 0xa7, 0xa1, 0x40, 0x30, 0xb5, 0xbd, 0x41, 0x63, 0x55, 0xae, 0x17, 0xab, 0x6e, 0x81, 0x6c, 0x9b, + 0x6f, 0x12, 0x13, 0xa7, 0x27, 0xa5, 0xd1, 0x2e, 0x2f, 0x0b, 0x7b, 0x86, 0xea, 0x30, 0xb2, 0xf2, + 0xa2, 0x63, 0x7b, 0xd8, 0xa7, 0x8c, 0x1d, 0x5f, 0x2a, 0xde, 0x61, 0x67, 0xd6, 0x1d, 0x71, 0x66, + 0xdd, 0xd9, 0x11, 0x67, 0x56, 0xe5, 0x32, 0xdf, 0x2c, 0xcf, 0x63, 0x86, 0x12, 0xae, 0xa6, 0xdf, + 0xfa, 0xb3, 0x52, 0xce, 0x14, 0x94, 0xd0, 0xb7, 0xe1, 0xdc, 0x43, 0xd7, 0x3b, 0xb6, 0x02, 0x3e, + 0x03, 0xb3, 0xa7, 0x27, 0xa5, 0xc2, 0x13, 0x5a, 0xa2, 0x2c, 0x6e, 0x0e, 0x83, 0x1e, 0xc2, 0x94, + 0xe9, 0x76, 0x03, 0xbc, 0xe3, 0x8a, 0x79, 0x1b, 0xa6, 0x58, 0x57, 0x4e, 0x4f, 0x4a, 0x45, 0x8f, + 0xd4, 0x34, 0x02, 0xb7, 0xc1, 0x27, 0x50, 0xc1, 0x8f, 0x60, 0xa1, 0x15, 0x98, 0x2a, 0xd3, 0xdd, + 0x95, 0xf3, 0x8c, 0xcd, 0xd6, 0x58, 0xe5, 0xf2, 0xe9, 0x49, 0xe9, 0xa2, 0x45, 0x6b, 0x1a, 0x1e, + 0xaf, 0x52, 0xc9, 0xe8, 0x48, 0x68, 0x0b, 0xce, 0x3f, 0xee, 0x1e, 0x60, 0xcf, 0xc1, 0x01, 0xf6, + 0x45, 0x8f, 0x46, 0x68, 0x8f, 0xae, 0x9e, 0x9e, 0x94, 0x16, 0x9f, 0xca, 0xca, 0x84, 0x3e, 0xc5, + 0x51, 0x11, 0x86, 0x69, 0xde, 0xd1, 0x65, 0x2b, 0xb0, 0x0e, 0x2c, 0x1f, 0xd3, 0x4d, 0x63, 0x7c, + 0xe9, 0x02, 0x63, 0xf1, 0x9d, 0x48, 0x6d, 0xe5, 0x3a, 0xe7, 0xf2, 0x25, 0x39, 0xf6, 0x16, 0xaf, + 0x52, 0x1a, 0x8a, 0xd2, 0x24, 0x7b, 0xa7, 0x3c, 0x17, 0xc6, 0x68, 0x6f, 0xe9, 0xde, 0x29, 0xcf, + 0x05, 0x75, 0x57, 0x91, 0x27, 0xc4, 0x06, 0x0c, 0xef, 0x92, 0xd3, 0x93, 0xee, 0x29, 0x53, 0x4b, + 0xd7, 0x78, 0x8f, 0xa2, 0xab, 0xef, 0x0e, 0xf9, 0x41, 0x01, 0xe9, 0x77, 0x37, 0x4d, 0x4f, 0x5c, + 0xf5, 0xac, 0xa4, 0x75, 0xe8, 0x0b, 0x00, 0xde, 0xab, 0x72, 0xa7, 0xb3, 0x30, 0x4e, 0x07, 0x79, + 0x5e, 0x1f, 0x64, 0xb9, 0xd3, 0xa9, 0x5c, 0xe1, 0xe3, 0xbb, 0x20, 0xc7, 0x67, 0x75, 0x3a, 0x0a, + 0x35, 0x85, 0x08, 0xfa, 0x1c, 0x26, 0xe8, 0x96, 0x23, 0x66, 0x74, 0x82, 0xce, 0xe8, 0xa5, 0xd3, + 0x93, 0xd2, 0x3c, 0xf9, 0xe0, 0x92, 0xe6, 0x53, 0x43, 0x40, 0xbf, 0x0a, 0x73, 0x9c, 0xdc, 0xbe, + 0xed, 0xb4, 0xdc, 0xe7, 0xfe, 0x32, 0xf6, 0x9f, 0x06, 0x6e, 0x67, 0x61, 0x92, 0x76, 0x6f, 0x51, + 0xef, 0x9e, 0x0e, 0x53, 0xb9, 0xcd, 0x7b, 0x6a, 0xc8, 0x9e, 0x3e, 0x67, 0x00, 0x8d, 0x16, 0x83, + 0x50, 0x9a, 0x4d, 0x6e, 0x06, 0xad, 0xc3, 0xf4, 0xae, 0x8f, 0xb5, 0x31, 0x4c, 0xd1, 0xfd, 0xbb, + 0x44, 0x66, 0xb8, 0xeb, 0xe3, 0x46, 0xda, 0x38, 0xa2, 0x78, 0xc8, 0x04, 0xb4, 0xec, 0xb9, 0x9d, + 0xc8, 0x1a, 0x9f, 0xa6, 0x1c, 0x31, 0x4e, 0x4f, 0x4a, 0x57, 0x5a, 0x9e, 0xdb, 0x69, 0xa4, 0x2f, + 0xf4, 0x04, 0x6c, 0xf4, 0x43, 0xb8, 0x50, 0x75, 0x1d, 0x07, 0x37, 0xc9, 0xfe, 0xb9, 0x6c, 0x5b, + 0x87, 0x8e, 0xeb, 0x07, 0x76, 0x73, 0x7d, 0x79, 0xa1, 0x40, 0xd7, 0xd0, 0x4d, 0x32, 0xfa, 0xa6, + 0x84, 0x68, 0xb4, 0x24, 0x48, 0xc3, 0x6e, 0x29, 0xb4, 0x53, 0xa8, 0xa0, 0x1f, 0xc0, 0x24, 0x6f, + 0x0b, 0x7b, 0x74, 0x69, 0x9e, 0xcf, 0x5e, 0x68, 0x12, 0x98, 0x1d, 0xc4, 0x9e, 0xf8, 0xc9, 0x44, + 0x1b, 0x9d, 0x16, 0xfa, 0x1a, 0xc6, 0x37, 0x1f, 0x96, 0x4d, 0xec, 0x77, 0x5c, 0xc7, 0xc7, 0x0b, + 0x88, 0xce, 0xe8, 0x15, 0x4e, 0x7a, 0xf3, 0x61, 0xb9, 0xdc, 0x0d, 0x8e, 0xb0, 0x13, 0xd8, 0x4d, + 0x2b, 0xc0, 0x02, 0xaa, 0x52, 0x24, 0x2b, 0xef, 0xf8, 0x89, 0xd5, 0xf0, 0x78, 0x89, 0x32, 0x0a, + 0x95, 0x1c, 0x2a, 0xc2, 0x68, 0xbd, 0xbe, 0xb6, 0xe1, 0x1e, 0xda, 0xce, 0xc2, 0x0c, 0x61, 0x86, + 0x29, 0x7f, 0xa3, 0x03, 0x98, 0x53, 0x04, 0xf4, 0x06, 0xf9, 0x1f, 0x1f, 0x63, 0x27, 0x58, 0x98, + 0xa5, 0x7d, 0xf8, 0x8e, 0xbc, 0x61, 0xdc, 0x51, 0xe5, 0xf8, 0x67, 0xf7, 0xef, 0x94, 0xc3, 0x9f, + 0x75, 0x81, 0x64, 0xce, 0x5a, 0x09, 0xa5, 0x68, 0x07, 0x46, 0x6a, 0x5d, 0xaf, 0xe3, 0xfa, 0x78, + 0x61, 0x8e, 0x32, 0xed, 0x7a, 0xd6, 0xd7, 0xc9, 0x41, 0x2b, 0x73, 0x64, 0x7b, 0xee, 0xb0, 0x1f, + 0xca, 0xc8, 0x04, 0x29, 0xe3, 0x4b, 0x18, 0x93, 0x1f, 0x33, 0x1a, 0x81, 0xc1, 0x72, 0xbb, 0x5d, + 0x18, 0x20, 0x7f, 0xd4, 0xeb, 0x6b, 0x85, 0x1c, 0x9a, 0x02, 0x08, 0x77, 0xb0, 0x42, 0x1e, 0x4d, + 0xc0, 0xa8, 0xd8, 0x61, 0x0a, 0x83, 0x14, 0xbe, 0xd3, 0x29, 0x0c, 0x21, 0x04, 0x53, 0xfa, 0x3a, + 0x2f, 0x0c, 0x1b, 0x2f, 0x60, 0x4c, 0x4e, 0x0f, 0x9a, 0x86, 0xf1, 0xdd, 0xad, 0x7a, 0x6d, 0xa5, + 0xba, 0xfe, 0x70, 0x7d, 0x65, 0xb9, 0x30, 0x80, 0x2e, 0xc3, 0xc5, 0x9d, 0xfa, 0x5a, 0x63, 0xb9, + 0xd2, 0xd8, 0xd8, 0xae, 0x96, 0x37, 0x1a, 0x35, 0x73, 0xfb, 0xcb, 0xaf, 0x1a, 0x3b, 0xbb, 0x5b, + 0x5b, 0x2b, 0x1b, 0x85, 0x1c, 0x5a, 0x80, 0x59, 0x52, 0xfd, 0x78, 0xb7, 0xb2, 0xa2, 0x02, 0x14, + 0xf2, 0xe8, 0x1a, 0x5c, 0x4e, 0xaa, 0x69, 0xac, 0xad, 0x94, 0x97, 0x37, 0x56, 0xea, 0xf5, 0xc2, + 0xa0, 0xd1, 0x86, 0x71, 0x85, 0x05, 0x68, 0x11, 0x16, 0xaa, 0x2b, 0xe6, 0x4e, 0xa3, 0xb6, 0x6b, + 0xd6, 0xb6, 0xeb, 0x2b, 0x0d, 0xbd, 0x23, 0xd1, 0xda, 0x8d, 0xed, 0xd5, 0xf5, 0xad, 0x06, 0x29, + 0xaa, 0x17, 0x72, 0xa4, 0x35, 0xad, 0xb6, 0xbe, 0xbe, 0xb5, 0xba, 0xb1, 0xd2, 0xd8, 0xad, 0xaf, + 0x70, 0x90, 0xbc, 0xf1, 0xef, 0x73, 0xb1, 0x0d, 0x1d, 0x2d, 0xc1, 0x78, 0x9d, 0x5d, 0x19, 0xe9, + 0x22, 0x67, 0xe2, 0x7b, 0xe1, 0xf4, 0xa4, 0x34, 0xc1, 0x6f, 0x92, 0x6c, 0xfd, 0xaa, 0x40, 0xe4, + 0x8c, 0xae, 0x91, 0xf9, 0x6c, 0xba, 0x6d, 0xf5, 0x8c, 0xee, 0xf0, 0x32, 0x53, 0xd6, 0xa2, 0x25, + 0xe5, 0x34, 0x67, 0xb2, 0x3c, 0x95, 0x17, 0xc5, 0x69, 0xae, 0xee, 0xec, 0xf2, 0x5c, 0x5f, 0x0a, + 0x27, 0x8e, 0x1f, 0xc2, 0x14, 0x27, 0xe1, 0x24, 0x91, 0x70, 0x46, 0x37, 0x65, 0xaf, 0x44, 0x1f, + 0x47, 0xa7, 0x9b, 0x8f, 0x90, 0x1e, 0x06, 0x91, 0x2d, 0xd1, 0x8c, 0x80, 0xa2, 0x12, 0x0c, 0xb3, + 0x8f, 0x88, 0x0d, 0x92, 0x0a, 0x4b, 0x6d, 0x52, 0x60, 0xb2, 0x72, 0xe3, 0x37, 0x07, 0xd5, 0x73, + 0x83, 0x08, 0x47, 0x0a, 0x13, 0xa9, 0x70, 0x44, 0x99, 0x47, 0x4b, 0x89, 0x1c, 0x54, 0xc7, 0xbe, + 0x4f, 0xc5, 0x4a, 0x4e, 0x91, 0xca, 0x41, 0x3e, 0x2b, 0x24, 0x37, 0xa5, 0x10, 0x80, 0xc8, 0xea, + 0x4c, 0x28, 0xa2, 0xb2, 0xfa, 0x60, 0x28, 0xab, 0x73, 0xb1, 0x89, 0xc9, 0xea, 0x21, 0x08, 0x99, + 0x48, 0x7e, 0x6e, 0xd3, 0x3e, 0x0c, 0x85, 0x13, 0xc9, 0xcf, 0x7a, 0x3e, 0x91, 0x0a, 0x10, 0xfa, + 0x08, 0xa0, 0xbc, 0x5f, 0xa7, 0x22, 0xaf, 0xb9, 0xc5, 0x65, 0x17, 0xba, 0xcb, 0x58, 0xcf, 0x7d, + 0xb6, 0xbb, 0x5b, 0x9e, 0x2a, 0xd4, 0x2b, 0xd0, 0xa8, 0x02, 0x93, 0xe5, 0x9f, 0x74, 0x3d, 0xbc, + 0xde, 0x22, 0x1b, 0x55, 0xc0, 0x6e, 0x2f, 0x63, 0x95, 0xc5, 0xd3, 0x93, 0xd2, 0x82, 0x45, 0x2a, + 0x1a, 0x36, 0xaf, 0x51, 0x08, 0xe8, 0x28, 0x68, 0x1b, 0xce, 0xaf, 0x56, 0x6b, 0x7c, 0x69, 0x95, + 0x9b, 0x4d, 0xb7, 0xeb, 0x04, 0x5c, 0x60, 0xb9, 0x76, 0x7a, 0x52, 0xba, 0x7c, 0xd8, 0xec, 0x34, + 0xc4, 0x32, 0xb4, 0x58, 0xb5, 0x2a, 0xb1, 0xc4, 0x70, 0x8d, 0x36, 0x4c, 0xad, 0xe2, 0x80, 0x2c, + 0x25, 0x21, 0x7d, 0x66, 0xcf, 0xc9, 0x27, 0x30, 0xbe, 0x6f, 0x07, 0x47, 0x75, 0xdc, 0xf4, 0x70, + 0x20, 0xee, 0xc6, 0x94, 0x03, 0xcf, 0xed, 0xe0, 0xa8, 0xe1, 0xb3, 0x72, 0x75, 0x9f, 0x55, 0xc0, + 0x8d, 0x15, 0x98, 0xe6, 0xad, 0x49, 0x61, 0x77, 0x49, 0x27, 0x98, 0xa3, 0x04, 0xe9, 0x2c, 0xa8, + 0x04, 0x75, 0x32, 0xff, 0x24, 0x0f, 0x73, 0xd5, 0x23, 0xcb, 0x39, 0xc4, 0x35, 0xcb, 0xf7, 0x9f, + 0xbb, 0x5e, 0x4b, 0xe9, 0x3c, 0x95, 0xf4, 0x63, 0x9d, 0xa7, 0xa2, 0xfd, 0x12, 0x8c, 0x6f, 0xb7, + 0x5b, 0x02, 0x87, 0xdf, 0x42, 0x68, 0x5b, 0x6e, 0xbb, 0xd5, 0xe8, 0x08, 0x5a, 0x2a, 0x10, 0xc1, + 0xd9, 0xc2, 0xcf, 0x25, 0xce, 0x60, 0x88, 0xe3, 0xe0, 0xe7, 0x0a, 0x8e, 0x02, 0x84, 0x56, 0xe0, + 0x7c, 0x1d, 0x37, 0x5d, 0xa7, 0xf5, 0xd0, 0x6a, 0x06, 0xae, 0xb7, 0xe3, 0x3e, 0xc5, 0x0e, 0x5f, + 0x5f, 0x54, 0x50, 0xf3, 0x69, 0x65, 0xe3, 0x09, 0xad, 0x6d, 0x04, 0xa4, 0xda, 0x8c, 0x63, 0xa0, + 0x6d, 0x18, 0xdd, 0xe7, 0x6a, 0x14, 0x7e, 0x75, 0xb9, 0x71, 0x47, 0xea, 0x55, 0xaa, 0x1e, 0xa6, + 0x8b, 0xc2, 0x6a, 0xcb, 0xcb, 0x97, 0x3c, 0xf7, 0xe8, 0xe6, 0x22, 0x20, 0x4d, 0x49, 0xc4, 0xd8, + 0x85, 0xc9, 0x5a, 0xbb, 0x7b, 0x68, 0x3b, 0x64, 0x1b, 0xa8, 0xe3, 0x1f, 0xa3, 0x65, 0x80, 0xb0, + 0x80, 0xeb, 0x4d, 0x66, 0xf8, 0x85, 0x27, 0xac, 0xd8, 0x7b, 0xc0, 0x3f, 0x24, 0x5a, 0x42, 0x25, + 0x54, 0x53, 0xc1, 0x33, 0xfe, 0xc7, 0x20, 0x20, 0x3e, 0x01, 0xf4, 0x48, 0xab, 0xe3, 0x80, 0x9c, + 0x0b, 0x17, 0x20, 0x2f, 0xd5, 0x1b, 0xe7, 0x4e, 0x4f, 0x4a, 0x79, 0xbb, 0x65, 0xe6, 0xd7, 0x97, + 0xd1, 0xbb, 0x30, 0x4c, 0xc1, 0x28, 0xff, 0xa7, 0x64, 0x7b, 0x2a, 0x05, 0xb6, 0x73, 0xd0, 0xa3, + 0xd6, 0x64, 0xc0, 0xe8, 0x3d, 0x18, 0x5b, 0xc6, 0x6d, 0x7c, 0x68, 0x05, 0xae, 0xf8, 0xba, 0x99, + 0xc2, 0x40, 0x14, 0x2a, 0x6b, 0x2e, 0x84, 0x24, 0xd7, 0x13, 0x13, 0x5b, 0xbe, 0xeb, 0xa8, 0xd7, + 0x13, 0x8f, 0x96, 0xa8, 0xd7, 0x13, 0x06, 0x83, 0x7e, 0x27, 0x07, 0xe3, 0x65, 0xc7, 0xe1, 0x17, + 0x71, 0x9f, 0x73, 0x7d, 0xee, 0x8e, 0x54, 0x4f, 0x6d, 0x58, 0x07, 0xb8, 0xbd, 0x67, 0xb5, 0xbb, + 0xd8, 0xaf, 0x7c, 0x4d, 0x24, 0xc6, 0xff, 0x70, 0x52, 0xfa, 0xf8, 0x0c, 0x57, 0xeb, 0x50, 0xd1, + 0xb5, 0xe3, 0x59, 0x76, 0xe0, 0x9f, 0x9e, 0x94, 0xe6, 0xac, 0xb0, 0x41, 0xf5, 0xbb, 0x51, 0xfa, + 0x81, 0xde, 0x51, 0xef, 0xa4, 0x7c, 0x2f, 0x8e, 0xdc, 0xf1, 0xf9, 0x75, 0x14, 0x1d, 0xc3, 0x74, + 0xd9, 0xf7, 0xbb, 0xc7, 0xb8, 0x1e, 0x58, 0x5e, 0x40, 0xee, 0x73, 0x74, 0x7f, 0xc8, 0xbe, 0xec, + 0xbd, 0xfd, 0xd3, 0x93, 0x52, 0x8e, 0x08, 0xa9, 0x16, 0x45, 0x25, 0x42, 0x8e, 0x17, 0x34, 0x02, + 0x5b, 0x3d, 0x70, 0xe8, 0xb5, 0x2f, 0x4a, 0xdb, 0xb8, 0x2e, 0x25, 0x81, 0xf5, 0xe5, 0xb4, 0x19, + 0x37, 0xaa, 0xb0, 0xb8, 0x8a, 0x03, 0x13, 0xfb, 0x38, 0x10, 0xdf, 0x08, 0x5d, 0xe1, 0xa1, 0x32, + 0x6c, 0x84, 0xfe, 0x96, 0xc8, 0x74, 0xfa, 0xd9, 0x77, 0x21, 0x6a, 0x8c, 0xff, 0x3f, 0x07, 0xa5, + 0xaa, 0x87, 0x99, 0x7c, 0x97, 0x42, 0x28, 0x7b, 0xef, 0x5a, 0x84, 0xa1, 0x9d, 0x97, 0x1d, 0x71, + 0x4b, 0xa6, 0xb5, 0x64, 0x52, 0x4c, 0x5a, 0xda, 0xa7, 0xca, 0xc1, 0x78, 0x02, 0x73, 0x26, 0x76, + 0xf0, 0x73, 0xeb, 0xa0, 0x8d, 0xb5, 0x5b, 0x7b, 0x09, 0x86, 0xd9, 0x87, 0x1e, 0x1b, 0x02, 0x2b, + 0x3f, 0x9b, 0x06, 0xc4, 0xf8, 0x87, 0x79, 0x28, 0xb0, 0xe1, 0x56, 0xdc, 0xa0, 0xbf, 0xf1, 0xf1, + 0x11, 0xe4, 0x7b, 0x28, 0x4d, 0x6e, 0x86, 0xdc, 0x1e, 0x0c, 0x65, 0x11, 0xda, 0x55, 0x72, 0xa4, + 0x8a, 0x4a, 0x32, 0x20, 0xb6, 0xe8, 0x98, 0xae, 0x2f, 0xa6, 0xf9, 0x40, 0xbf, 0x91, 0x83, 0x73, + 0x6c, 0x19, 0x67, 0x7f, 0x28, 0xfb, 0x6f, 0xe6, 0x43, 0x29, 0x04, 0xf4, 0x2f, 0xf5, 0xb3, 0x65, + 0x75, 0xc6, 0x3f, 0xce, 0xc3, 0x79, 0x85, 0x57, 0x5c, 0xa8, 0x7f, 0x87, 0x89, 0x52, 0x0a, 0xc3, + 0xa8, 0xf6, 0x94, 0x88, 0x52, 0x8d, 0x50, 0x33, 0x42, 0x39, 0xf7, 0x0e, 0x8c, 0x92, 0x21, 0x45, + 0x15, 0xad, 0xf4, 0x40, 0x67, 0xa0, 0xa2, 0xba, 0x6f, 0xee, 0xdd, 0x85, 0x51, 0xfa, 0x27, 0x99, + 0x91, 0xa1, 0xf4, 0x19, 0x91, 0x40, 0xc8, 0x06, 0x78, 0xe4, 0xda, 0xce, 0x26, 0x0e, 0x8e, 0xdc, + 0x16, 0x17, 0x2d, 0xd6, 0xc9, 0xb6, 0xfb, 0x7f, 0xb9, 0xb6, 0xd3, 0x38, 0xa6, 0xc5, 0x67, 0x55, + 0xe4, 0x85, 0x04, 0x4d, 0x85, 0xb8, 0x71, 0x0f, 0x0a, 0x64, 0x87, 0xec, 0x7f, 0x69, 0x19, 0xb3, + 0x80, 0x56, 0x71, 0x50, 0x71, 0xb5, 0xb3, 0xdb, 0x98, 0x84, 0xf1, 0x9a, 0xed, 0x1c, 0x8a, 0x9f, + 0x7f, 0x38, 0x08, 0x13, 0xec, 0x37, 0x9f, 0x81, 0x88, 0x84, 0x95, 0xeb, 0x47, 0xc2, 0xfa, 0x00, + 0x26, 0x89, 0x88, 0x82, 0xbd, 0x3d, 0xec, 0x11, 0xc9, 0x8e, 0xcf, 0x07, 0xbd, 0x22, 0xfa, 0xb4, + 0xa2, 0xf1, 0x8c, 0xd5, 0x98, 0x3a, 0x20, 0xda, 0x80, 0x29, 0x56, 0xf0, 0x10, 0x5b, 0x41, 0x37, + 0xd4, 0x72, 0x4d, 0xf3, 0xbb, 0x94, 0x28, 0x66, 0xdb, 0x27, 0xa7, 0xf5, 0x84, 0x17, 0x9a, 0x11, + 0x5c, 0xf4, 0x39, 0x4c, 0xd7, 0x3c, 0xf7, 0xc5, 0x4b, 0x45, 0xa6, 0x64, 0x27, 0x08, 0xbb, 0x75, + 0x91, 0xaa, 0x86, 0x2a, 0x59, 0x46, 0xa1, 0xc9, 0x9a, 0x5a, 0xf7, 0x2b, 0xae, 0x67, 0x3b, 0x87, + 0x74, 0x36, 0x47, 0xd9, 0x9a, 0xb2, 0xfd, 0xc6, 0x01, 0x2d, 0x34, 0x65, 0x75, 0x44, 0xcd, 0x3c, + 0xd2, 0x5b, 0xcd, 0x7c, 0x0f, 0x60, 0xc3, 0xb5, 0x5a, 0xe5, 0x76, 0xbb, 0x5a, 0xf6, 0xa9, 0x8a, + 0x89, 0xcb, 0x4c, 0x6d, 0xd7, 0x6a, 0x35, 0xac, 0x76, 0xbb, 0xd1, 0xb4, 0x7c, 0x53, 0x81, 0x79, + 0x34, 0x34, 0x7a, 0xae, 0x30, 0x62, 0x4e, 0x6f, 0xd8, 0x4d, 0xec, 0xf8, 0x78, 0xdf, 0xf2, 0x1c, + 0xdb, 0x39, 0xf4, 0x8d, 0xdf, 0x1f, 0x87, 0x51, 0x39, 0xe4, 0x3b, 0xea, 0x85, 0x90, 0x4b, 0x62, + 0x74, 0x87, 0x0a, 0xd5, 0x60, 0xa6, 0x02, 0x81, 0x2e, 0xd2, 0x2b, 0x22, 0x97, 0x01, 0x47, 0xc8, + 0xea, 0xb6, 0x3a, 0x1d, 0x93, 0x94, 0x91, 0x93, 0x60, 0xb9, 0x42, 0xf9, 0x3f, 0xca, 0x4e, 0x82, + 0xd6, 0x81, 0x99, 0x5f, 0xae, 0x90, 0x55, 0xb6, 0xbd, 0xbe, 0x5c, 0xa5, 0xac, 0x1c, 0x65, 0xab, + 0xcc, 0xb5, 0x5b, 0x4d, 0x93, 0x96, 0x92, 0xda, 0x7a, 0x79, 0x73, 0x83, 0xb3, 0x8b, 0xd6, 0xfa, + 0xd6, 0x71, 0xdb, 0xa4, 0xa5, 0xe4, 0x66, 0xc2, 0x34, 0x1a, 0x55, 0xd7, 0x09, 0x3c, 0xb7, 0xed, + 0x53, 0x01, 0x7a, 0x94, 0x4d, 0x27, 0x57, 0x85, 0x34, 0x79, 0x95, 0x19, 0x01, 0x45, 0xfb, 0x30, + 0x5f, 0x6e, 0x3d, 0xb3, 0x9c, 0x26, 0x6e, 0xb1, 0x9a, 0x7d, 0xd7, 0x7b, 0xfa, 0xa4, 0xed, 0x3e, + 0xf7, 0x29, 0xbf, 0x47, 0xb9, 0xe6, 0x90, 0x83, 0x08, 0xcd, 0xca, 0x73, 0x01, 0x64, 0xa6, 0x61, + 0x93, 0x5d, 0xb2, 0xda, 0x76, 0xbb, 0x2d, 0x3e, 0x0b, 0x74, 0x97, 0x6c, 0x92, 0x02, 0x93, 0x95, + 0x13, 0x2e, 0xad, 0xd5, 0x37, 0xa9, 0x9e, 0x8e, 0x73, 0xe9, 0xc8, 0x3f, 0x36, 0x49, 0x19, 0xba, + 0x01, 0x23, 0xe2, 0x92, 0xc5, 0x14, 0xfd, 0x54, 0x7d, 0x2d, 0x2e, 0x57, 0xa2, 0x8e, 0x7c, 0x12, + 0x26, 0x6e, 0xba, 0xcf, 0xb0, 0xf7, 0xb2, 0xea, 0xb6, 0xb0, 0xd0, 0x2a, 0x71, 0xad, 0x09, 0xab, + 0x68, 0x34, 0x49, 0x8d, 0xa9, 0x03, 0x92, 0x06, 0x98, 0x9c, 0xe6, 0x2f, 0x4c, 0x87, 0x0d, 0x30, + 0x39, 0xce, 0x37, 0x45, 0x1d, 0x5a, 0x86, 0xf3, 0xe5, 0x6e, 0xe0, 0x1e, 0x5b, 0x81, 0xdd, 0xdc, + 0xed, 0x1c, 0x7a, 0x16, 0x69, 0xa4, 0x40, 0x11, 0xe8, 0x4d, 0xd2, 0x12, 0x95, 0x8d, 0x2e, 0xaf, + 0x35, 0xe3, 0x08, 0xe8, 0x7d, 0x98, 0x58, 0xf7, 0x99, 0xe6, 0xd0, 0xf2, 0x71, 0x8b, 0xaa, 0x7f, + 0x78, 0x2f, 0x6d, 0xbf, 0x41, 0xf5, 0x88, 0x0d, 0x72, 0xf7, 0x6c, 0x99, 0x1a, 0x1c, 0x32, 0xe0, + 0x5c, 0xd9, 0xf7, 0x6d, 0x3f, 0xa0, 0x5a, 0x9d, 0xd1, 0x0a, 0x9c, 0x9e, 0x94, 0xce, 0x59, 0xb4, + 0xc4, 0xe4, 0x35, 0x68, 0x1f, 0xc6, 0x97, 0x31, 0xb9, 0xb7, 0xec, 0x78, 0x5d, 0x3f, 0xa0, 0x3a, + 0x9a, 0xf1, 0xa5, 0x8b, 0xfc, 0xc3, 0x56, 0x6a, 0xf8, 0x5a, 0x66, 0x37, 0x92, 0x16, 0x2d, 0x6f, + 0x04, 0xa4, 0x42, 0x95, 0xac, 0x14, 0x78, 0x72, 0x29, 0xe3, 0x38, 0x6b, 0x76, 0x8b, 0x7c, 0xaa, + 0xb3, 0xb4, 0x0f, 0xf4, 0x52, 0xc6, 0xf7, 0x86, 0xc6, 0x11, 0xad, 0x51, 0x2f, 0x65, 0x1a, 0x0a, + 0x6a, 0xc6, 0x94, 0xd1, 0x73, 0x9a, 0xc2, 0x51, 0xaf, 0x14, 0x5d, 0x3c, 0xa3, 0xaa, 0xfa, 0x13, + 0x18, 0xaf, 0x76, 0xfd, 0xc0, 0x3d, 0xde, 0x39, 0xc2, 0xc7, 0x78, 0xe1, 0x42, 0x78, 0xf5, 0x6c, + 0xd2, 0xe2, 0x46, 0x40, 0xca, 0xd5, 0x61, 0x2a, 0xe0, 0xe8, 0x0b, 0x40, 0xe2, 0x0e, 0xb9, 0x4a, + 0xd6, 0x87, 0x43, 0xd6, 0xf2, 0xc2, 0x3c, 0x1d, 0x2b, 0xbd, 0x38, 0x8a, 0xab, 0x67, 0xe3, 0x50, + 0x56, 0xab, 0xea, 0xc4, 0x38, 0x32, 0xe9, 0x10, 0xeb, 0xe2, 0xaa, 0x67, 0x75, 0x8e, 0x16, 0x16, + 0xc2, 0x9b, 0x20, 0x1f, 0xd4, 0x21, 0x29, 0xd7, 0x24, 0xda, 0x10, 0x1c, 0xd5, 0x01, 0xd8, 0xcf, + 0x0d, 0x32, 0xf1, 0x17, 0x29, 0xbf, 0x16, 0x34, 0x7e, 0x91, 0x0a, 0xc1, 0xab, 0x8b, 0x54, 0x4e, + 0x66, 0x64, 0xdb, 0xb6, 0x36, 0x9b, 0x0a, 0x19, 0xf4, 0x14, 0x0a, 0xec, 0xd7, 0xa6, 0xeb, 0xd8, + 0x01, 0xdb, 0x7a, 0x8b, 0x9a, 0xa6, 0x30, 0x5a, 0x2d, 0x1a, 0xa0, 0x1a, 0x5a, 0xde, 0xc0, 0xb1, + 0xac, 0x55, 0x9a, 0x89, 0x11, 0x46, 0x35, 0x18, 0xaf, 0x79, 0x6e, 0xab, 0xdb, 0x0c, 0xa8, 0x50, + 0x79, 0x89, 0x5e, 0x66, 0x10, 0x6f, 0x47, 0xa9, 0x61, 0x3c, 0xe9, 0xb0, 0x82, 0x06, 0x39, 0x97, + 0x55, 0x9e, 0x28, 0x80, 0x8f, 0x86, 0x46, 0xc7, 0x0b, 0x13, 0xec, 0x91, 0xed, 0xd1, 0xd0, 0xe8, + 0x64, 0x61, 0xca, 0xf8, 0xdd, 0x1c, 0xa0, 0xf8, 0xea, 0x46, 0x77, 0x61, 0x04, 0x3b, 0x44, 0x00, + 0x6d, 0xf1, 0x5d, 0x9a, 0x9e, 0x49, 0xbc, 0x48, 0xd5, 0x04, 0xf2, 0x22, 0xf4, 0x05, 0xcc, 0xb0, + 0x8f, 0x41, 0x7c, 0x87, 0x6d, 0xfb, 0xd8, 0x0e, 0xe8, 0xce, 0x3d, 0xcc, 0xe6, 0x3f, 0xa1, 0x5a, + 0x55, 0x1c, 0xf0, 0x6a, 0xfa, 0xd5, 0x6e, 0x90, 0x4a, 0xa3, 0x0b, 0x73, 0x89, 0xeb, 0x1a, 0x6d, + 0xc2, 0xdc, 0xb1, 0xeb, 0x04, 0x47, 0xed, 0x97, 0x62, 0x59, 0xf3, 0xd6, 0x72, 0xb4, 0x35, 0x3a, + 0x95, 0x89, 0x00, 0xe6, 0x0c, 0x2f, 0xe6, 0x14, 0x69, 0x3b, 0x8f, 0x86, 0x46, 0xf3, 0x85, 0x41, + 0x39, 0x12, 0xc3, 0x84, 0xf3, 0xb1, 0xe5, 0x81, 0x3e, 0x85, 0x89, 0x26, 0x15, 0xff, 0xb4, 0x96, + 0xd8, 0xc7, 0xa1, 0x94, 0xab, 0x7c, 0x67, 0xe5, 0x6c, 0x28, 0x7f, 0x3f, 0x07, 0xf3, 0x29, 0x0b, + 0xe3, 0xec, 0xac, 0xfe, 0x0a, 0x2e, 0x1c, 0x5b, 0x2f, 0x1a, 0x1e, 0x15, 0xc5, 0x1a, 0x9e, 0xe5, + 0x44, 0xb8, 0xfd, 0xd6, 0xe9, 0x49, 0xe9, 0x6a, 0x32, 0x84, 0x6a, 0x48, 0x70, 0x6c, 0xbd, 0x30, + 0x29, 0x80, 0x49, 0xea, 0x59, 0x3f, 0xef, 0xc3, 0x79, 0x26, 0xb6, 0xf5, 0xad, 0xae, 0x31, 0x6a, + 0x00, 0x75, 0x7c, 0x6c, 0x75, 0x8e, 0x5c, 0x72, 0xc0, 0x57, 0xd4, 0x5f, 0xfc, 0xba, 0x8f, 0xf8, + 0xf5, 0x5b, 0x56, 0xec, 0x3d, 0x10, 0x5a, 0x36, 0x01, 0x69, 0x2a, 0x58, 0xc6, 0x1f, 0xe7, 0x01, + 0x95, 0xbb, 0x2d, 0x3b, 0xa8, 0x07, 0x1e, 0xb6, 0x8e, 0x45, 0x37, 0x3e, 0x84, 0x09, 0x26, 0x81, + 0xb3, 0x62, 0xda, 0x9d, 0xf1, 0xa5, 0x19, 0xfe, 0x39, 0xa8, 0x55, 0x6b, 0x03, 0xa6, 0x06, 0x4a, + 0x50, 0x4d, 0xcc, 0x6e, 0x95, 0x14, 0x35, 0xaf, 0xa1, 0xaa, 0x55, 0x04, 0x55, 0xfd, 0x8d, 0x3e, + 0x87, 0xa9, 0xaa, 0x7b, 0xdc, 0x21, 0x3c, 0xe1, 0xc8, 0x83, 0xfc, 0x22, 0xc2, 0xdb, 0xd5, 0x2a, + 0xd7, 0x06, 0xcc, 0x08, 0x38, 0xda, 0x82, 0x99, 0x87, 0xed, 0xae, 0x7f, 0x54, 0x76, 0x5a, 0xd5, + 0xb6, 0xeb, 0x0b, 0x2a, 0x43, 0xfc, 0xc6, 0xcc, 0x05, 0xc7, 0x38, 0xc4, 0xda, 0x80, 0x99, 0x84, + 0x88, 0x6e, 0xc0, 0xf0, 0xca, 0x33, 0xec, 0x04, 0xf2, 0xa9, 0x99, 0xdb, 0xaa, 0x6c, 0x3b, 0x78, + 0xfb, 0xc9, 0xda, 0x80, 0xc9, 0x6a, 0x2b, 0x63, 0x30, 0x22, 0x84, 0xe6, 0xbb, 0xe4, 0xec, 0x95, + 0xec, 0xac, 0x07, 0x56, 0xd0, 0xf5, 0x51, 0x11, 0x46, 0x77, 0x3b, 0x44, 0x96, 0x13, 0x37, 0x62, + 0x53, 0xfe, 0x36, 0xbe, 0xad, 0x73, 0x1a, 0x2d, 0xaa, 0x5a, 0x52, 0x06, 0x1c, 0x16, 0x18, 0x6b, + 0x3a, 0x73, 0xb3, 0xa1, 0xb5, 0x76, 0xf3, 0x91, 0x76, 0x0b, 0x51, 0x5e, 0x1b, 0x73, 0x89, 0xcc, + 0x33, 0xbe, 0x84, 0x2b, 0xbb, 0x1d, 0x1f, 0x7b, 0x41, 0xb9, 0xd3, 0x69, 0xdb, 0x4d, 0xf6, 0xd4, + 0x41, 0x85, 0x6b, 0xb1, 0x58, 0xde, 0x87, 0x73, 0xac, 0x80, 0x2f, 0x13, 0xb1, 0x06, 0xcb, 0x9d, + 0x0e, 0x17, 0xe9, 0x1f, 0x30, 0x29, 0x80, 0x09, 0xe9, 0x26, 0x87, 0x36, 0x7e, 0x2b, 0x07, 0x57, + 0xd8, 0x17, 0x90, 0x4a, 0xfa, 0x5b, 0x30, 0x46, 0x4d, 0x45, 0x3a, 0x56, 0x53, 0xbb, 0xf5, 0x39, + 0xa2, 0xd0, 0x0c, 0xeb, 0x15, 0x23, 0x9c, 0x7c, 0xba, 0x11, 0x8e, 0xf8, 0xc0, 0x06, 0x13, 0x3f, + 0xb0, 0x2f, 0xc0, 0xe0, 0x3d, 0x6a, 0xb7, 0x63, 0x9d, 0xf2, 0x5f, 0xa5, 0x57, 0xc6, 0x5f, 0xe6, + 0x61, 0x7e, 0x15, 0x3b, 0xd8, 0xb3, 0xe8, 0x38, 0x35, 0x05, 0x87, 0xfa, 0xd8, 0x9f, 0xcb, 0x7c, + 0xec, 0x97, 0xb7, 0xf7, 0x7c, 0xca, 0xed, 0xfd, 0x22, 0x0c, 0xee, 0x9a, 0xeb, 0x7c, 0x58, 0x54, + 0x2e, 0xed, 0x7a, 0xb6, 0x49, 0xca, 0xd0, 0x7a, 0x68, 0x28, 0x30, 0xd4, 0x53, 0x77, 0x34, 0xc3, + 0x1f, 0x4e, 0x47, 0xb8, 0xa1, 0x80, 0x6e, 0x1e, 0xb0, 0xa5, 0xa8, 0x08, 0xc8, 0x76, 0x73, 0x9b, + 0x7f, 0x53, 0x29, 0x03, 0xe4, 0xb7, 0xfd, 0x15, 0x27, 0xf0, 0x5e, 0xb2, 0x25, 0xc0, 0x2e, 0xfd, + 0xe2, 0xaa, 0x5f, 0xfc, 0x02, 0xc6, 0x15, 0x10, 0x54, 0x80, 0xc1, 0xa7, 0xdc, 0x48, 0x62, 0xcc, + 0x24, 0x7f, 0xa2, 0x6f, 0xc3, 0xf0, 0x33, 0xab, 0xdd, 0xc5, 0x7c, 0x1b, 0xb9, 0x10, 0xaa, 0x24, + 0xea, 0x01, 0xd9, 0xd8, 0x99, 0x4e, 0xc2, 0x64, 0x40, 0x1f, 0xe5, 0x3f, 0xc8, 0x19, 0x1f, 0xc3, + 0x42, 0xbc, 0x37, 0xfc, 0x06, 0xdb, 0x4b, 0xa9, 0x63, 0x2c, 0xc3, 0xec, 0x2a, 0x0e, 0xe8, 0xc2, + 0xa5, 0x1f, 0x91, 0x62, 0xc3, 0x11, 0xf9, 0xce, 0x32, 0xde, 0x2e, 0x8c, 0x3a, 0xcc, 0x45, 0xa8, + 0xf0, 0xf6, 0x3f, 0x82, 0x11, 0x5e, 0x24, 0x77, 0x54, 0x6e, 0xd5, 0x86, 0x0f, 0x78, 0xc5, 0xde, + 0x12, 0x5b, 0xb7, 0x9c, 0xb2, 0x29, 0x10, 0x8c, 0x23, 0xb8, 0x40, 0x0e, 0xc9, 0x90, 0xaa, 0x5c, + 0x8e, 0x97, 0x60, 0xac, 0x43, 0x8e, 0x79, 0xdf, 0xfe, 0x09, 0x5b, 0x46, 0xc3, 0xe6, 0x28, 0x29, + 0xa8, 0xdb, 0x3f, 0xc1, 0xe8, 0x32, 0x00, 0xad, 0xa4, 0xc3, 0xe4, 0xbb, 0x00, 0x05, 0x67, 0x5a, + 0x2c, 0x04, 0xd4, 0x58, 0x86, 0xad, 0x1b, 0x93, 0xfe, 0x6d, 0x78, 0x30, 0x1f, 0x6b, 0x89, 0x0f, + 0xe0, 0x2e, 0x8c, 0xf2, 0x8e, 0xf9, 0x11, 0xfd, 0xb2, 0x3a, 0x02, 0x53, 0x02, 0xa1, 0x9b, 0x30, + 0xed, 0xe0, 0x17, 0x41, 0x23, 0xd6, 0x87, 0x49, 0x52, 0x5c, 0x13, 0xfd, 0x30, 0x7e, 0x89, 0xea, + 0x14, 0xeb, 0x8e, 0xfb, 0xfc, 0x49, 0xdb, 0x7a, 0x8a, 0x63, 0x0d, 0x7f, 0x0a, 0xa3, 0xf5, 0xde, + 0x0d, 0xb3, 0xcf, 0x47, 0x34, 0x6e, 0x4a, 0x14, 0xa3, 0x0d, 0x45, 0x32, 0x24, 0x72, 0xf1, 0x5c, + 0x6f, 0xd5, 0xbe, 0x69, 0x06, 0x3e, 0x83, 0x4b, 0x89, 0xad, 0x7d, 0xd3, 0x4c, 0xfc, 0xf3, 0x3c, + 0xcc, 0xb3, 0xc3, 0x24, 0xbe, 0x82, 0xfb, 0xdf, 0x6a, 0x7e, 0x21, 0x2f, 0x6f, 0xf7, 0x12, 0x5e, + 0xde, 0x28, 0x8a, 0xfa, 0xf2, 0xa6, 0xbd, 0xb7, 0x7d, 0x90, 0xfc, 0xde, 0x46, 0x2f, 0xa4, 0xfa, + 0x7b, 0x5b, 0xf4, 0x95, 0x6d, 0x25, 0xfd, 0x95, 0x8d, 0xbe, 0x39, 0x24, 0xbc, 0xb2, 0x25, 0xbc, + 0xad, 0x31, 0xd1, 0xd5, 0xd8, 0x83, 0x85, 0x38, 0x8b, 0xdf, 0xc0, 0xe7, 0xfd, 0x47, 0x39, 0xb8, + 0xcc, 0x05, 0x81, 0xc8, 0x47, 0x70, 0xf6, 0x19, 0x7c, 0x0f, 0x26, 0x38, 0xee, 0x4e, 0xb8, 0x58, + 0x2a, 0xe7, 0x4f, 0x4f, 0x4a, 0x93, 0x62, 0xc3, 0x62, 0xbb, 0x9e, 0x06, 0x86, 0xde, 0x53, 0x74, + 0x9c, 0x4c, 0x6f, 0x4e, 0xa4, 0xfb, 0x31, 0xa6, 0x0c, 0x4d, 0xd5, 0x74, 0x1a, 0x5f, 0xc3, 0x95, + 0xb4, 0x8e, 0xbf, 0x01, 0xbe, 0xfc, 0xb3, 0x1c, 0x5c, 0xe2, 0xe4, 0xb5, 0xcf, 0xe9, 0x95, 0x76, + 0xe6, 0x33, 0x58, 0xd7, 0x3d, 0x82, 0x71, 0xd2, 0xa0, 0xe8, 0xf7, 0x20, 0x3f, 0x7e, 0xb8, 0x74, + 0x1d, 0xd6, 0x2c, 0x5b, 0x81, 0xc5, 0xed, 0x05, 0xac, 0xe3, 0x76, 0x43, 0xf4, 0x5f, 0x45, 0x36, + 0xbe, 0x0f, 0x8b, 0xc9, 0x43, 0x78, 0x03, 0xfc, 0x79, 0x04, 0xc5, 0x84, 0x8d, 0xf3, 0xd5, 0xce, + 0xad, 0xaf, 0xe0, 0x52, 0x22, 0xad, 0x37, 0xd0, 0xcd, 0x35, 0x72, 0x2a, 0x07, 0x6f, 0x60, 0x0a, + 0x8d, 0x7d, 0xb8, 0x98, 0x40, 0xe9, 0x0d, 0x74, 0x71, 0x15, 0xe6, 0xa5, 0x34, 0xfa, 0x5a, 0x3d, + 0xdc, 0x84, 0xcb, 0x8c, 0xd0, 0x9b, 0x99, 0x95, 0xc7, 0x70, 0x89, 0x93, 0x7b, 0x03, 0xdc, 0x5b, + 0x83, 0xc5, 0xf0, 0xd2, 0x99, 0x20, 0x4b, 0xf4, 0xbd, 0xc9, 0x18, 0x1b, 0x70, 0x35, 0xa4, 0x94, + 0x72, 0xb0, 0xf6, 0x4f, 0x8d, 0x89, 0x4c, 0xe1, 0x2c, 0xbd, 0x91, 0x19, 0xdd, 0x87, 0x0b, 0x1a, + 0xd1, 0x37, 0x26, 0x4e, 0xac, 0xc3, 0x0c, 0x23, 0xac, 0x8b, 0x97, 0x4b, 0xaa, 0x78, 0x39, 0xbe, + 0x74, 0x3e, 0x24, 0x49, 0x8b, 0xf7, 0x1e, 0x24, 0x48, 0x9c, 0x9b, 0x54, 0xe2, 0x14, 0x20, 0x61, + 0x0f, 0xdf, 0x83, 0x73, 0xac, 0x84, 0xf7, 0x2f, 0x81, 0x18, 0x13, 0xa8, 0x19, 0x1a, 0x07, 0x36, + 0x7e, 0x08, 0x97, 0xd9, 0x6d, 0x2d, 0x54, 0xec, 0xeb, 0x37, 0xaa, 0x4f, 0x23, 0x97, 0xb5, 0x8b, + 0x9c, 0x6e, 0x14, 0x3e, 0xe5, 0xce, 0x76, 0x20, 0xd6, 0x76, 0x1a, 0xfd, 0xbe, 0x3c, 0x21, 0xc4, + 0x25, 0x2c, 0x9f, 0x78, 0x09, 0xbb, 0x0e, 0xd7, 0xe4, 0x25, 0x2c, 0xda, 0x8c, 0x7c, 0xac, 0xfa, + 0x3e, 0x5c, 0x62, 0x03, 0x15, 0x36, 0x50, 0x7a, 0x37, 0x3e, 0x8e, 0x0c, 0x73, 0x9e, 0x0f, 0x53, + 0x87, 0x4e, 0x19, 0xe4, 0x5f, 0xcb, 0x89, 0x4f, 0x2e, 0x99, 0xf8, 0x2f, 0xfa, 0x56, 0xba, 0x05, + 0x25, 0xc9, 0x10, 0xbd, 0x47, 0xaf, 0x76, 0x25, 0xdd, 0x84, 0x39, 0x95, 0x8c, 0xdd, 0xc4, 0x7b, + 0xf7, 0xa9, 0xc6, 0xf5, 0x5d, 0xf2, 0x59, 0xd0, 0x02, 0xb1, 0xec, 0x16, 0x12, 0xf8, 0x46, 0xe1, + 0x4d, 0x09, 0x69, 0x34, 0x60, 0x31, 0x3e, 0x15, 0x76, 0x53, 0x98, 0xbf, 0xa2, 0xcf, 0xc9, 0x27, + 0x4c, 0x4b, 0xf8, 0x64, 0xa4, 0x12, 0x15, 0xdf, 0x31, 0x43, 0x17, 0x58, 0x86, 0x21, 0xb6, 0x9a, + 0xc8, 0xf8, 0x49, 0xeb, 0x62, 0x3d, 0xfc, 0x0a, 0x20, 0x51, 0x55, 0xad, 0x9b, 0xa2, 0xe9, 0x8b, + 0x30, 0x58, 0xad, 0x9b, 0xdc, 0xea, 0x9e, 0xde, 0x8a, 0x9b, 0xbe, 0x67, 0x92, 0xb2, 0xa8, 0xd4, + 0x9a, 0xef, 0x43, 0x6a, 0x7d, 0x34, 0x34, 0x3a, 0x58, 0x18, 0x32, 0x51, 0xdd, 0x3e, 0x74, 0xf6, + 0xed, 0xe0, 0x48, 0x36, 0x58, 0x36, 0x7e, 0x00, 0x33, 0x5a, 0xf3, 0xfc, 0x2b, 0xce, 0x74, 0x17, + 0x40, 0x37, 0x61, 0xa4, 0x5a, 0xa6, 0x56, 0x07, 0xf4, 0x5a, 0x3f, 0xc1, 0xf6, 0x9b, 0xa6, 0xd5, + 0xa0, 0x2e, 0x61, 0xa6, 0xa8, 0x34, 0xfe, 0xde, 0x90, 0x42, 0x5d, 0x71, 0xc2, 0xc8, 0x18, 0xdd, + 0x7d, 0x00, 0xb6, 0x42, 0x94, 0xc1, 0x11, 0x01, 0x70, 0x9c, 0x3f, 0x94, 0xb2, 0x2d, 0xd9, 0x54, + 0x80, 0xfa, 0x75, 0xd2, 0xe0, 0x06, 0x93, 0x0c, 0x49, 0x58, 0x13, 0x48, 0x83, 0x49, 0x4e, 0xda, + 0x37, 0x55, 0x20, 0xf4, 0xc3, 0xa8, 0x2d, 0xf1, 0x30, 0x55, 0xaf, 0xbf, 0x25, 0x5e, 0x7c, 0xe2, + 0x63, 0x3b, 0x9b, 0x39, 0xf1, 0x73, 0x98, 0x23, 0xb8, 0xf6, 0x13, 0x6a, 0x30, 0xbc, 0xf2, 0x22, + 0xc0, 0x0e, 0xdb, 0xdb, 0xcf, 0xd1, 0x76, 0x6e, 0x64, 0xb4, 0x13, 0x02, 0x73, 0x0d, 0x73, 0x48, + 0xa7, 0x81, 0x65, 0x9d, 0x99, 0x4c, 0x9f, 0x2e, 0x22, 0x73, 0x63, 0xc5, 0x69, 0x75, 0x5c, 0x5b, + 0x5e, 0x2a, 0xd8, 0x22, 0xf2, 0xda, 0x0d, 0xcc, 0xcb, 0x4d, 0x15, 0xc8, 0xb8, 0x99, 0x69, 0x6d, + 0x3b, 0x0a, 0x43, 0x3b, 0xd5, 0x9d, 0x8d, 0x42, 0xce, 0xb8, 0x0b, 0xa0, 0xb4, 0x04, 0x70, 0x6e, + 0x6b, 0xdb, 0xdc, 0x2c, 0x6f, 0x14, 0x06, 0xd0, 0x1c, 0x9c, 0xdf, 0x5f, 0xdf, 0x5a, 0xde, 0xde, + 0xaf, 0x37, 0xea, 0x9b, 0x65, 0x73, 0xa7, 0x5a, 0x36, 0x97, 0x0b, 0x39, 0xe3, 0x6b, 0x98, 0xd5, + 0x47, 0xf8, 0x46, 0x17, 0x61, 0x00, 0x33, 0x52, 0x9e, 0x79, 0xb4, 0xbf, 0xa3, 0x18, 0xfc, 0xf1, + 0x0b, 0x52, 0xd4, 0x28, 0x80, 0x5f, 0xa5, 0xf8, 0x67, 0xa4, 0x00, 0x69, 0xa6, 0x1c, 0xf9, 0x4c, + 0x53, 0x0e, 0xe3, 0xbb, 0x30, 0xab, 0xb7, 0xda, 0xaf, 0x26, 0xe7, 0x2d, 0x6a, 0x09, 0xa9, 0x58, + 0xe1, 0x93, 0x9b, 0x7a, 0xd8, 0x45, 0xbe, 0xb3, 0x7e, 0x17, 0x0a, 0x1c, 0x2a, 0x3c, 0x79, 0xaf, + 0x0b, 0x55, 0x5b, 0x2e, 0xc1, 0x63, 0x88, 0xab, 0xdb, 0x8c, 0xf7, 0x85, 0x89, 0x8a, 0xda, 0xc2, + 0x35, 0xee, 0xb5, 0x97, 0xd3, 0x1c, 0x93, 0x38, 0x22, 0xad, 0x22, 0x78, 0xbb, 0x9d, 0xd6, 0x2b, + 0xe2, 0x91, 0x3d, 0xf6, 0x8c, 0x78, 0x6f, 0x8b, 0x47, 0x86, 0x5e, 0x9c, 0xf8, 0xe3, 0x1c, 0x2c, + 0x44, 0x0c, 0xef, 0xab, 0x47, 0x56, 0xbb, 0x8d, 0x9d, 0x43, 0x8c, 0x6e, 0xc1, 0xd0, 0xce, 0xf6, + 0x4e, 0x8d, 0x2b, 0xe1, 0x66, 0xf9, 0xe7, 0x44, 0x8a, 0x24, 0x8c, 0x49, 0x21, 0xd0, 0x63, 0x38, + 0x2f, 0xec, 0x13, 0x65, 0x15, 0xbf, 0x3c, 0x5d, 0xce, 0xb6, 0x76, 0x8c, 0xe3, 0xa1, 0x77, 0xb9, + 0x97, 0xc0, 0x8f, 0xbb, 0xb6, 0x87, 0x5b, 0x54, 0xb1, 0x10, 0xbe, 0xc9, 0x29, 0x35, 0xa6, 0x0a, + 0xc6, 0x3c, 0xb8, 0x8c, 0xdf, 0xc9, 0xc1, 0x7c, 0x8a, 0x23, 0x01, 0x7a, 0x47, 0x1b, 0xce, 0x8c, + 0x32, 0x1c, 0x01, 0xb2, 0x36, 0xc0, 0xc7, 0x53, 0x55, 0x8c, 0x36, 0x07, 0xcf, 0x60, 0xb4, 0xb9, + 0x36, 0x10, 0x1a, 0x6a, 0x56, 0x00, 0x46, 0x45, 0xb9, 0x31, 0x0d, 0x93, 0x1a, 0xdf, 0x0c, 0x03, + 0x26, 0xd4, 0x96, 0xc9, 0xe4, 0x54, 0xdd, 0x96, 0x9c, 0x1c, 0xf2, 0xb7, 0xf1, 0x37, 0x72, 0x30, + 0x4b, 0x87, 0x78, 0x68, 0x93, 0x5d, 0x23, 0xe4, 0xd0, 0x92, 0x36, 0x92, 0x45, 0x6d, 0x24, 0x11, + 0x58, 0x39, 0xa4, 0x8f, 0x62, 0x43, 0x5a, 0x4c, 0x1a, 0x12, 0x5d, 0xde, 0xb6, 0xeb, 0x68, 0x23, + 0x51, 0x5e, 0x3a, 0x7e, 0x37, 0x07, 0x33, 0x4a, 0x9f, 0x64, 0xff, 0xef, 0x6b, 0x5d, 0xba, 0x94, + 0xd0, 0xa5, 0x18, 0x93, 0x2b, 0xb1, 0x1e, 0xbd, 0x95, 0xd5, 0xa3, 0x9e, 0x3c, 0xfe, 0x4f, 0x39, + 0x98, 0x4b, 0xe4, 0x01, 0xba, 0x40, 0xc4, 0xc2, 0xa6, 0x87, 0x03, 0xce, 0x5e, 0xfe, 0x8b, 0x94, + 0xaf, 0xfb, 0x7e, 0x17, 0x7b, 0x5c, 0xb1, 0xc6, 0x7f, 0xa1, 0xb7, 0x60, 0xb2, 0x86, 0x3d, 0xdb, + 0x6d, 0x31, 0x73, 0x5e, 0x66, 0x83, 0x34, 0x69, 0xea, 0x85, 0x68, 0x11, 0xc6, 0xca, 0xed, 0x43, + 0xd7, 0xb3, 0x83, 0x23, 0xf6, 0xd8, 0x34, 0x66, 0x86, 0x05, 0x84, 0xf6, 0xb2, 0x7d, 0x28, 0xcc, + 0xea, 0x26, 0x4d, 0xfe, 0x0b, 0x2d, 0xc0, 0x88, 0x50, 0x46, 0x51, 0x55, 0x96, 0x29, 0x7e, 0x12, + 0x8c, 0x2f, 0x4c, 0xba, 0x08, 0xa8, 0x67, 0xab, 0xc9, 0x7f, 0xa1, 0x29, 0x6a, 0x90, 0x49, 0xfd, + 0x56, 0xa9, 0x21, 0xe6, 0x47, 0x30, 0x9b, 0xc4, 0xd7, 0xa4, 0x25, 0xc4, 0x71, 0xf3, 0x12, 0xf7, + 0xff, 0xcd, 0xc3, 0x4c, 0xb9, 0xd5, 0xda, 0x7c, 0x58, 0x66, 0x2f, 0xd2, 0x62, 0x6f, 0x78, 0x17, + 0x86, 0xd6, 0x1d, 0xfe, 0xe8, 0xaa, 0x3c, 0xb4, 0xc7, 0x21, 0x09, 0x14, 0x99, 0x41, 0xf2, 0x3f, + 0x32, 0x61, 0x66, 0xe5, 0x85, 0xed, 0x07, 0xb6, 0x73, 0xa8, 0xfa, 0xf5, 0xe4, 0xfb, 0xf1, 0xeb, + 0x59, 0x1b, 0x30, 0x93, 0x90, 0xd1, 0x0e, 0x5c, 0xd8, 0xc2, 0xcf, 0x13, 0x96, 0x98, 0x74, 0x77, + 0x54, 0x36, 0x82, 0xd8, 0xca, 0x4a, 0xc1, 0x55, 0x57, 0xf0, 0x6f, 0xe4, 0xa9, 0x37, 0xb4, 0x32, + 0x30, 0xde, 0xf2, 0x2e, 0xcc, 0x2a, 0x1d, 0x0a, 0xf7, 0x31, 0xc6, 0x93, 0x52, 0xf2, 0x70, 0xd4, + 0x0f, 0x2d, 0x11, 0x1d, 0xed, 0xc3, 0xbc, 0xde, 0xa9, 0x90, 0xb2, 0xfe, 0xb1, 0x24, 0x81, 0xac, + 0x0d, 0x98, 0x69, 0xd8, 0x68, 0x09, 0x06, 0xcb, 0xcd, 0xa7, 0x9c, 0x2d, 0xc9, 0x53, 0xc6, 0x46, + 0x56, 0x6e, 0x3e, 0x5d, 0x1b, 0x30, 0x09, 0xb0, 0xf6, 0xbd, 0xfc, 0x8b, 0x1c, 0xcc, 0xa7, 0xcc, + 0x30, 0xba, 0x02, 0xc0, 0x0a, 0x95, 0x13, 0x43, 0x29, 0x21, 0x82, 0x26, 0x37, 0x69, 0x78, 0xd9, + 0x61, 0x33, 0x33, 0x25, 0x3d, 0x07, 0xc3, 0x0a, 0x53, 0x01, 0x42, 0x35, 0x61, 0xfd, 0xc3, 0x1c, + 0x18, 0xf5, 0x6d, 0x5d, 0xa9, 0xd1, 0xcc, 0x7e, 0xa2, 0x8e, 0x8b, 0x2a, 0x09, 0xae, 0x9a, 0xad, + 0x46, 0x47, 0x21, 0x07, 0x8d, 0x6e, 0xc1, 0x39, 0x56, 0xc8, 0xe7, 0x50, 0x44, 0x13, 0x08, 0x81, + 0x79, 0xbd, 0xf1, 0xb7, 0x73, 0x70, 0x81, 0x9d, 0x98, 0xb1, 0x4f, 0xe3, 0xbb, 0xda, 0xa7, 0x71, + 0x4d, 0x76, 0x38, 0x09, 0x58, 0xfb, 0x3a, 0x2a, 0xba, 0xb7, 0x5b, 0xbf, 0x5f, 0x85, 0x8a, 0xa4, + 0xae, 0xdb, 0xbf, 0x9b, 0x13, 0x9a, 0xaa, 0xf8, 0xd2, 0x5d, 0x81, 0x89, 0x57, 0x5b, 0xb2, 0x1a, + 0x1a, 0x7a, 0x8f, 0xad, 0xa8, 0x7c, 0xf6, 0x48, 0x33, 0x17, 0xd5, 0x27, 0x50, 0x4c, 0x67, 0x4d, + 0xaf, 0x65, 0x65, 0x3c, 0x4c, 0xc0, 0x7e, 0x95, 0xe9, 0xfc, 0x8b, 0x5c, 0x8c, 0x50, 0xfd, 0xa5, + 0xd3, 0x14, 0x53, 0x7a, 0x33, 0x6a, 0xaa, 0x9e, 0x6a, 0xfe, 0xab, 0x76, 0x37, 0x1f, 0xbe, 0x89, + 0xf0, 0xd5, 0x49, 0xa5, 0x56, 0xf5, 0xb3, 0xe8, 0x26, 0x6f, 0x88, 0x83, 0x7d, 0x39, 0x3a, 0xd2, + 0x38, 0x0c, 0x98, 0xa3, 0x37, 0x52, 0x3c, 0x1e, 0x93, 0xe8, 0x1b, 0xbf, 0x39, 0xa8, 0x7f, 0x03, + 0xaf, 0x32, 0xd6, 0x1a, 0x8c, 0x57, 0x5d, 0x27, 0xc0, 0x2f, 0x02, 0xc5, 0xcb, 0x1e, 0x49, 0x13, + 0x0c, 0x59, 0xc3, 0xef, 0x4b, 0xac, 0xa0, 0x41, 0x84, 0x77, 0xcd, 0x5c, 0x2d, 0x04, 0x44, 0x55, + 0x98, 0xdc, 0xc2, 0xcf, 0x63, 0x0c, 0xa4, 0x26, 0x73, 0x0e, 0x7e, 0xde, 0x50, 0x98, 0xa8, 0x9a, + 0xe5, 0x69, 0x38, 0xe8, 0x00, 0xa6, 0xc4, 0xfe, 0xd7, 0xef, 0x31, 0xc0, 0xfc, 0xd0, 0x49, 0x0b, + 0x29, 0x3c, 0x8c, 0x50, 0x7c, 0xf3, 0x3b, 0x93, 0x51, 0x83, 0x85, 0xf8, 0x7c, 0xf0, 0xd6, 0xde, + 0xed, 0xb5, 0x8a, 0x99, 0x72, 0xaa, 0xa5, 0xaf, 0xe8, 0x35, 0xaa, 0x30, 0x94, 0x30, 0x52, 0x03, + 0x74, 0x2f, 0x3a, 0xbd, 0xd4, 0xd6, 0x53, 0x4c, 0xaf, 0x6a, 0xdb, 0x24, 0x5c, 0x30, 0xaa, 0x54, + 0xe7, 0xaa, 0x52, 0xe2, 0x1d, 0xbb, 0x0d, 0x23, 0xbc, 0x28, 0x12, 0x7c, 0x25, 0xfc, 0xbe, 0x04, + 0x80, 0xf1, 0x7b, 0x39, 0xb8, 0x48, 0x35, 0xc0, 0xb6, 0x73, 0xd8, 0xc6, 0xbb, 0xbe, 0xee, 0x45, + 0xf1, 0x1d, 0x6d, 0xcb, 0x9c, 0x4f, 0x71, 0x83, 0xfd, 0xa6, 0x36, 0xca, 0x3f, 0xc8, 0x41, 0x31, + 0xa9, 0x6f, 0x6f, 0x76, 0xaf, 0xbc, 0xc3, 0xaf, 0xd7, 0x79, 0xcd, 0xea, 0x51, 0xb6, 0x29, 0x06, + 0x4b, 0x06, 0x49, 0xfe, 0xd7, 0x36, 0xc9, 0xff, 0x96, 0x83, 0xd9, 0x75, 0x5f, 0xbd, 0xca, 0x70, + 0xc6, 0xdd, 0x49, 0x0a, 0x65, 0x40, 0xe7, 0x75, 0x6d, 0x20, 0x29, 0x54, 0xc1, 0xbb, 0x8a, 0xd3, + 0x68, 0x3e, 0x2b, 0x46, 0x01, 0x11, 0x9a, 0xa5, 0xf3, 0xeb, 0x4d, 0x18, 0xda, 0x22, 0x82, 0xe2, + 0x20, 0x5f, 0x7f, 0x0c, 0x83, 0x14, 0x51, 0xff, 0x4e, 0xd2, 0x65, 0xf2, 0x03, 0x3d, 0x8c, 0x79, + 0x91, 0x0e, 0xf5, 0xf6, 0xc1, 0x5f, 0x1b, 0x88, 0x3a, 0x94, 0x56, 0x46, 0xe1, 0xdc, 0x8e, 0xe5, + 0x1d, 0xe2, 0xc0, 0xf8, 0x3e, 0x14, 0xb9, 0x89, 0x14, 0xd3, 0xa9, 0x53, 0x43, 0x2a, 0x3f, 0xb4, + 0x82, 0xcb, 0x32, 0x6b, 0xba, 0x02, 0x40, 0x3d, 0x96, 0xd6, 0x9d, 0x16, 0x7e, 0xc1, 0xec, 0xf0, + 0x4c, 0xa5, 0xc4, 0x78, 0x0f, 0xc6, 0xe4, 0x10, 0xe8, 0x5d, 0x57, 0x91, 0x85, 0xe9, 0x70, 0x66, + 0x35, 0xbf, 0x56, 0xe1, 0xcc, 0x6a, 0xc3, 0x5c, 0x64, 0x2a, 0x42, 0x77, 0x72, 0x79, 0x07, 0xa5, + 0x56, 0x83, 0xa6, 0xfc, 0x1d, 0xbd, 0xa2, 0xe6, 0xfb, 0xba, 0xa2, 0x1a, 0x55, 0x38, 0x1f, 0x5b, + 0x1f, 0x08, 0x51, 0x4f, 0x6e, 0xa6, 0xa5, 0x21, 0x07, 0x6a, 0xbd, 0xbe, 0x46, 0xca, 0x76, 0x36, + 0xea, 0xcc, 0xbd, 0x88, 0x94, 0xed, 0x6c, 0xd4, 0x2b, 0xe7, 0xd8, 0x7a, 0x33, 0xfe, 0x51, 0x9e, + 0x2a, 0x2f, 0x62, 0x9c, 0x8b, 0xe8, 0x81, 0x55, 0x5d, 0x74, 0x05, 0xc6, 0x28, 0x9f, 0x96, 0x85, + 0xbf, 0x5e, 0xb6, 0x2d, 0xd0, 0xe8, 0x4f, 0x4f, 0x4a, 0x03, 0xd4, 0x00, 0x28, 0x44, 0x43, 0x9f, + 0xc1, 0xc8, 0x8a, 0xd3, 0xa2, 0x14, 0x06, 0xcf, 0x40, 0x41, 0x20, 0x91, 0xd9, 0xa3, 0x5d, 0x26, + 0xa2, 0x20, 0x57, 0x1f, 0x9a, 0x4a, 0x09, 0x9d, 0x1c, 0x6a, 0x60, 0x39, 0x4c, 0x27, 0x96, 0xfd, + 0xa0, 0x2e, 0xfd, 0xa4, 0x0b, 0x22, 0x4c, 0xd0, 0x98, 0x29, 0x7f, 0x23, 0x03, 0x86, 0xb7, 0xbd, + 0x16, 0x0f, 0xf5, 0x31, 0xb5, 0x34, 0xc1, 0xb9, 0x4f, 0xcb, 0x4c, 0x56, 0x65, 0xfc, 0x97, 0x1c, + 0xcc, 0xaf, 0xe2, 0x20, 0x71, 0xb5, 0x69, 0x5c, 0xc9, 0xbd, 0x36, 0x57, 0xf2, 0xaf, 0xc2, 0x15, + 0x39, 0xea, 0xc1, 0xb4, 0x51, 0x0f, 0xa5, 0x8d, 0x7a, 0x38, 0x7d, 0xd4, 0xab, 0x70, 0x8e, 0x0d, + 0x15, 0x5d, 0x87, 0xe1, 0xf5, 0x00, 0x1f, 0x87, 0x4a, 0x2d, 0xd5, 0x92, 0xd1, 0x64, 0x75, 0xe4, + 0x46, 0xba, 0x61, 0xf9, 0x81, 0x70, 0x68, 0x1b, 0x33, 0xc5, 0x4f, 0xe3, 0x47, 0xd4, 0xd3, 0x77, + 0xc3, 0x6d, 0x3e, 0x55, 0x5e, 0x1c, 0x46, 0xd8, 0xb7, 0x1c, 0x7d, 0xa1, 0x22, 0x50, 0xac, 0xc6, + 0x14, 0x10, 0xe8, 0x2a, 0x8c, 0xaf, 0x3b, 0x0f, 0x5d, 0xaf, 0x89, 0xb7, 0x9d, 0x36, 0xa3, 0x3e, + 0x6a, 0xaa, 0x45, 0x5c, 0x13, 0xc7, 0x5b, 0x08, 0x35, 0x71, 0xb4, 0x20, 0xa2, 0x89, 0x23, 0x65, + 0x7b, 0x4b, 0x26, 0xab, 0xe3, 0x8a, 0x3e, 0xf2, 0x77, 0x96, 0x7a, 0x4b, 0xea, 0xc1, 0x7a, 0x01, + 0x1e, 0xc0, 0x45, 0x13, 0x77, 0xda, 0x16, 0x11, 0x38, 0x8f, 0x5d, 0x06, 0x2f, 0xc7, 0x7c, 0x35, + 0xc1, 0x03, 0x4a, 0xb7, 0x6b, 0x91, 0x5d, 0xce, 0x67, 0x74, 0xf9, 0x18, 0xae, 0xad, 0xe2, 0x40, + 0xdf, 0x1b, 0xc3, 0xf7, 0x0c, 0x3e, 0xf8, 0x35, 0x18, 0xf5, 0xf5, 0xb7, 0x98, 0x2b, 0xe2, 0x09, + 0x30, 0x09, 0x71, 0xef, 0x81, 0x78, 0xad, 0xe4, 0x74, 0xe4, 0x5f, 0xc6, 0xe7, 0x50, 0x4a, 0x6b, + 0xae, 0x3f, 0xb3, 0x63, 0x1b, 0xae, 0xa6, 0x13, 0x90, 0x87, 0xa9, 0x78, 0xb7, 0x91, 0xaa, 0x83, + 0xec, 0xde, 0xea, 0x4f, 0x3d, 0xfc, 0x0f, 0xa3, 0x22, 0x0c, 0x30, 0x5f, 0xa3, 0xbb, 0x0d, 0x6a, + 0x12, 0xa1, 0x13, 0x08, 0xf9, 0x5a, 0x86, 0x51, 0x51, 0xc6, 0xf9, 0x3a, 0x9f, 0xd8, 0x53, 0xc1, + 0xd0, 0x96, 0x20, 0x20, 0xd1, 0x8c, 0x1f, 0x89, 0xe7, 0x41, 0x1d, 0xa3, 0x3f, 0xb7, 0xce, 0x7e, + 0xde, 0x03, 0x0d, 0x17, 0x2e, 0xea, 0xb4, 0xd5, 0x67, 0x9f, 0x82, 0xf2, 0xec, 0xc3, 0x5e, 0x7b, + 0xae, 0xea, 0xcf, 0x10, 0x79, 0xbe, 0x2e, 0xc3, 0x22, 0x74, 0x45, 0x7d, 0xdc, 0x99, 0x88, 0xfb, + 0xc1, 0xde, 0x83, 0x62, 0x52, 0x83, 0x8a, 0x42, 0x49, 0xbe, 0x20, 0xf0, 0x58, 0x57, 0xbf, 0x96, + 0x03, 0x43, 0xb3, 0x72, 0xa3, 0x33, 0x54, 0xf3, 0xdc, 0x67, 0x76, 0x4b, 0x79, 0x98, 0x7c, 0x47, + 0x6c, 0x6c, 0xcc, 0x8a, 0x9f, 0x7a, 0x77, 0x45, 0xcd, 0xe3, 0xf9, 0x6e, 0x77, 0x0f, 0x46, 0xb6, + 0xf0, 0x8b, 0x70, 0xfb, 0x61, 0x12, 0x2c, 0xb5, 0x7c, 0x7b, 0x8a, 0xd5, 0x28, 0x0a, 0x02, 0x8c, + 0x88, 0x4f, 0xd7, 0x33, 0xfb, 0xc0, 0xfb, 0x7f, 0x00, 0x85, 0x68, 0x1d, 0x9f, 0xfb, 0x92, 0x62, + 0xd1, 0x13, 0xa7, 0xb0, 0x77, 0x9f, 0x39, 0x08, 0x08, 0xeb, 0xb0, 0x8e, 0xa4, 0x1c, 0xa3, 0x77, + 0xf6, 0xde, 0xa3, 0x0f, 0x01, 0x76, 0xdc, 0xc0, 0x6a, 0x57, 0xa9, 0x0e, 0x70, 0x30, 0xf4, 0xa7, + 0x08, 0x48, 0x69, 0x23, 0x1a, 0xee, 0x41, 0x01, 0x36, 0xbe, 0x47, 0xbf, 0xc8, 0xe4, 0x4e, 0xf7, + 0xf7, 0x91, 0x54, 0xe1, 0x7a, 0xc4, 0xaa, 0xe4, 0x15, 0x88, 0x04, 0x30, 0x47, 0xd8, 0x4f, 0x44, + 0x98, 0x55, 0xcf, 0xed, 0x76, 0x7e, 0x31, 0xb3, 0xfe, 0xaf, 0x73, 0xcc, 0x14, 0x56, 0x6d, 0x96, + 0x4f, 0x74, 0x15, 0x20, 0x2c, 0x8d, 0xb8, 0x44, 0xc8, 0x8a, 0xbd, 0xfb, 0xec, 0xee, 0x4e, 0xdf, + 0x9b, 0x0e, 0x19, 0x01, 0x05, 0xed, 0x17, 0x3b, 0x93, 0x0f, 0xa8, 0x29, 0x89, 0x6c, 0xbd, 0x3f, + 0xbe, 0xbf, 0x2f, 0x74, 0x54, 0x67, 0xc4, 0x3b, 0x82, 0x59, 0xf2, 0xed, 0x92, 0x7b, 0x8d, 0xeb, + 0xd9, 0x81, 0x70, 0xcd, 0x41, 0x35, 0xee, 0x4a, 0xcf, 0xb0, 0x3e, 0xf9, 0xf9, 0x49, 0xe9, 0x83, + 0xb3, 0xf8, 0x25, 0x0b, 0x9a, 0x3b, 0xd2, 0xfd, 0xde, 0x98, 0x87, 0xc1, 0xaa, 0xb9, 0x41, 0xb7, + 0x2a, 0x73, 0x43, 0x6e, 0x55, 0xe6, 0x86, 0xf1, 0x9f, 0xf3, 0x50, 0x62, 0xc1, 0x3e, 0xa8, 0x05, + 0x52, 0x78, 0xc3, 0x52, 0x4c, 0x9a, 0xfa, 0xd5, 0x54, 0x44, 0x82, 0x79, 0xe4, 0xfb, 0x09, 0xe6, + 0xf1, 0xcb, 0xaf, 0xae, 0x55, 0xae, 0xbc, 0x7d, 0x7a, 0x52, 0xba, 0x1e, 0xaa, 0x13, 0x58, 0x6d, + 0x92, 0x5e, 0x21, 0xa5, 0x89, 0xb8, 0x22, 0x64, 0xe8, 0x15, 0x14, 0x21, 0xf7, 0x60, 0x84, 0x5e, + 0x58, 0xd6, 0x6b, 0xdc, 0x6e, 0x96, 0x2e, 0x4f, 0x1a, 0x97, 0xa7, 0x61, 0xab, 0x71, 0xcd, 0x04, + 0x98, 0xf1, 0x37, 0xf3, 0x70, 0x35, 0x9d, 0xe7, 0xbc, 0x6f, 0xcb, 0x00, 0xa1, 0xed, 0x53, 0x96, + 0xad, 0x15, 0xfd, 0x76, 0x9e, 0xe3, 0x03, 0x69, 0xeb, 0xa8, 0xe0, 0x11, 0xa9, 0x45, 0xf8, 0xac, + 0x46, 0x5e, 0x0b, 0x35, 0x57, 0x56, 0x1e, 0x36, 0x93, 0x17, 0x69, 0x61, 0x33, 0x79, 0x19, 0x3a, + 0x80, 0xf9, 0x9a, 0x67, 0x3f, 0xb3, 0x02, 0xfc, 0x18, 0xbf, 0xac, 0xb9, 0x6d, 0xbb, 0xf9, 0x72, + 0x85, 0xbb, 0x6e, 0x31, 0x47, 0xe4, 0x5b, 0xa7, 0x27, 0xa5, 0xb7, 0x3a, 0x0c, 0x84, 0x7c, 0x98, + 0x8d, 0x0e, 0x05, 0x6a, 0xc4, 0xbd, 0xb9, 0xd2, 0x08, 0x19, 0xff, 0x2a, 0x07, 0x97, 0xa8, 0x40, + 0xcd, 0x5f, 0x5e, 0x44, 0xe3, 0xaf, 0x64, 0x72, 0xab, 0x0e, 0x90, 0xaf, 0x45, 0x6a, 0x72, 0xab, + 0xf9, 0xf4, 0x9a, 0x1a, 0x18, 0x5a, 0x87, 0x71, 0xfe, 0x5b, 0x51, 0x9f, 0xcf, 0x29, 0x1b, 0x16, + 0x5d, 0xea, 0x4c, 0xe7, 0x44, 0x17, 0x36, 0x27, 0x46, 0x1d, 0x0f, 0x4d, 0x15, 0xd7, 0xf8, 0x59, + 0x1e, 0x16, 0xf7, 0xb0, 0x67, 0x3f, 0x79, 0x99, 0x32, 0x98, 0x6d, 0x98, 0x15, 0x45, 0x2c, 0xe0, + 0x87, 0xf6, 0x89, 0xb1, 0xc0, 0x7c, 0xa2, 0xab, 0x3c, 0x62, 0x88, 0xf8, 0xe2, 0x12, 0x11, 0xcf, + 0x60, 0x4c, 0xfb, 0x2e, 0x8c, 0x46, 0x42, 0xee, 0xd0, 0xf9, 0x17, 0x5f, 0x68, 0x38, 0x55, 0x6b, + 0x03, 0xa6, 0x84, 0x44, 0xbf, 0x9e, 0xfe, 0x84, 0xcb, 0xf5, 0x0f, 0xbd, 0x14, 0xa9, 0xf4, 0x83, + 0x25, 0x1f, 0xab, 0xa5, 0xd4, 0x26, 0x7c, 0xb0, 0x6b, 0x03, 0x66, 0x5a, 0x4b, 0x95, 0x71, 0x18, + 0x2b, 0xd3, 0x67, 0x69, 0x72, 0x71, 0xff, 0xaf, 0x79, 0xb8, 0x22, 0xdc, 0xa6, 0x52, 0xd8, 0xfc, + 0x25, 0xcc, 0x8b, 0xa2, 0x72, 0x87, 0x08, 0x0c, 0xb8, 0xa5, 0x73, 0x9a, 0x05, 0xc7, 0x14, 0x9c, + 0xb6, 0x38, 0x4c, 0xc8, 0xec, 0x34, 0xf4, 0x37, 0xa3, 0x46, 0xfd, 0x2c, 0x29, 0x00, 0x12, 0x55, + 0x67, 0xaa, 0x7b, 0xa6, 0xc6, 0x1a, 0x6d, 0xff, 0x6c, 0xc5, 0xd4, 0xb0, 0x43, 0xaf, 0xab, 0x86, + 0x5d, 0x1b, 0x88, 0x2a, 0x62, 0x2b, 0x53, 0x30, 0xb1, 0x85, 0x9f, 0x87, 0x7c, 0xff, 0x2b, 0xb9, + 0x88, 0xd3, 0x3c, 0x91, 0x30, 0x98, 0xf7, 0x7c, 0x2e, 0x8c, 0xa1, 0x43, 0x9d, 0xe6, 0x55, 0x09, + 0x83, 0x81, 0xae, 0xc3, 0x08, 0xb3, 0xd5, 0x68, 0xf5, 0x71, 0x37, 0x97, 0xfe, 0x4f, 0xcc, 0xa5, + 0xb4, 0xc5, 0xae, 0xe9, 0x1c, 0xdf, 0x78, 0x0c, 0xd7, 0xb8, 0xf5, 0xbf, 0x3e, 0xf9, 0xb4, 0xa1, + 0x33, 0x1e, 0x5f, 0x86, 0x05, 0x57, 0x56, 0x71, 0x74, 0xeb, 0xd1, 0xfc, 0xc3, 0x3e, 0x87, 0x69, + 0xad, 0x5c, 0x52, 0xa4, 0x52, 0xa9, 0x5c, 0x43, 0x92, 0x74, 0x14, 0xda, 0xb8, 0x9a, 0xd4, 0x84, + 0xda, 0x59, 0x03, 0xd3, 0x28, 0x97, 0x5e, 0xf8, 0xca, 0xee, 0x9f, 0x61, 0xd7, 0xbb, 0xa5, 0x7c, + 0xd7, 0x6c, 0xc7, 0x63, 0x81, 0xf0, 0xc4, 0xc9, 0x2b, 0x6b, 0x8d, 0x49, 0xed, 0x51, 0xc1, 0x98, + 0x82, 0x09, 0x51, 0xd5, 0xc6, 0xbe, 0x6f, 0xfc, 0x9b, 0x21, 0x30, 0x38, 0x63, 0x93, 0x74, 0xae, + 0x82, 0x1f, 0x07, 0xb1, 0xce, 0xf2, 0x83, 0xea, 0x82, 0xaa, 0x59, 0x0e, 0x6b, 0xd9, 0xca, 0xa3, + 0x72, 0x5e, 0x33, 0x2c, 0xd5, 0x56, 0x5e, 0x6c, 0xf4, 0x3f, 0x48, 0xd9, 0x26, 0xd9, 0xc7, 0x76, + 0xe3, 0xf4, 0xa4, 0x74, 0x2d, 0x65, 0x9b, 0xd4, 0xe8, 0x26, 0x6f, 0x99, 0xa6, 0xfe, 0xb6, 0x32, + 0xf8, 0x2a, 0x6f, 0x2b, 0xe4, 0x8b, 0x54, 0x5f, 0x57, 0x76, 0x75, 0x5e, 0xf2, 0xef, 0x51, 0x58, + 0xb5, 0xa8, 0x55, 0xdc, 0x77, 0x5d, 0x29, 0xd1, 0xa8, 0x6a, 0x64, 0x90, 0x0d, 0x05, 0x45, 0x65, + 0x59, 0x3d, 0xc2, 0xcd, 0xa7, 0xfc, 0x2d, 0x48, 0x3c, 0x53, 0x27, 0x29, 0xae, 0x59, 0xa0, 0x5d, + 0xf6, 0x9d, 0xb3, 0x8a, 0x46, 0x93, 0xa0, 0xaa, 0xbe, 0xf7, 0x51, 0xb2, 0xa8, 0x0a, 0xc3, 0xf5, + 0xa6, 0xdb, 0xc1, 0xdc, 0x5c, 0x6f, 0x41, 0x31, 0xfe, 0x10, 0x2b, 0x80, 0xd6, 0xf3, 0x50, 0x2f, + 0xe4, 0x4f, 0xf5, 0x2b, 0x67, 0x75, 0x8a, 0xde, 0xff, 0xb7, 0xa5, 0xcf, 0x08, 0x39, 0xf8, 0xed, + 0x36, 0xe6, 0x0e, 0x52, 0x62, 0x19, 0xa5, 0x3c, 0xce, 0xe5, 0xbe, 0xe1, 0xc7, 0xb9, 0x3f, 0xcc, + 0x0b, 0x4f, 0x99, 0xd8, 0x13, 0xfe, 0xd9, 0xdf, 0xe8, 0x12, 0x47, 0xd0, 0xd7, 0xa9, 0x98, 0x6c, + 0x6d, 0x51, 0xd1, 0xde, 0xf1, 0xf3, 0x29, 0xef, 0xf8, 0xda, 0xa3, 0x67, 0xd0, 0xe3, 0x61, 0x7f, + 0xf0, 0xf5, 0x9f, 0xcf, 0xfe, 0xe9, 0x08, 0x9c, 0xaf, 0x59, 0x87, 0xb6, 0x43, 0x76, 0x5f, 0x13, + 0xfb, 0x6e, 0xd7, 0x6b, 0x62, 0x54, 0x86, 0x29, 0xdd, 0x0c, 0xba, 0x87, 0x91, 0x37, 0x39, 0x60, + 0xf4, 0x32, 0xb4, 0x04, 0x63, 0xd2, 0x3d, 0x99, 0x9f, 0x0a, 0x09, 0x6e, 0xcb, 0x6b, 0x03, 0x66, + 0x08, 0x86, 0x3e, 0xd4, 0x5e, 0x4b, 0xa6, 0xa5, 0xa7, 0x3d, 0x85, 0x5d, 0x62, 0x76, 0xaa, 0x8e, + 0xdb, 0xd2, 0x4f, 0x36, 0xf6, 0xe2, 0xf0, 0xa3, 0xd8, 0x03, 0xca, 0xb0, 0xd6, 0xe3, 0x98, 0xea, + 0x89, 0x1e, 0xea, 0xa9, 0x21, 0x8b, 0xe3, 0x4f, 0x2b, 0xe8, 0xfb, 0x30, 0xfe, 0xb8, 0x7b, 0x80, + 0xc5, 0x53, 0xd1, 0x39, 0x7e, 0xd0, 0x45, 0x8d, 0xfb, 0x79, 0xfd, 0xde, 0x03, 0x36, 0x07, 0x4f, + 0xbb, 0x07, 0x38, 0x1e, 0x0b, 0x9b, 0xec, 0x30, 0x0a, 0x31, 0x74, 0x04, 0x85, 0xa8, 0x1d, 0x3e, + 0x8f, 0x42, 0x97, 0xe1, 0x3d, 0x40, 0x63, 0x70, 0x28, 0x11, 0xb7, 0x99, 0x75, 0xb0, 0xd6, 0x48, + 0x8c, 0x2a, 0xfa, 0x15, 0x98, 0x4b, 0x54, 0xfc, 0xf1, 0xb8, 0xdb, 0xbd, 0x74, 0x8a, 0x74, 0x77, + 0x8e, 0x70, 0x4d, 0xb8, 0xf6, 0x69, 0x2d, 0x27, 0xb7, 0x82, 0x5a, 0x30, 0x1d, 0xb1, 0x2f, 0xe7, + 0x61, 0xff, 0xd3, 0x2d, 0xd6, 0xe9, 0x09, 0x23, 0x62, 0xb3, 0x26, 0xb6, 0x15, 0x25, 0x89, 0x36, + 0x60, 0x4c, 0xde, 0xdb, 0x69, 0xa4, 0xa0, 0x64, 0x1d, 0xc5, 0xc2, 0xe9, 0x49, 0x69, 0x36, 0xd4, + 0x51, 0x68, 0x34, 0x43, 0x02, 0xe8, 0x27, 0x70, 0x4d, 0x2e, 0xd1, 0x6d, 0x2f, 0x59, 0x9b, 0xc3, + 0x23, 0x7a, 0xdf, 0x8e, 0xae, 0xf0, 0x34, 0xf8, 0xbd, 0xfb, 0x6b, 0x03, 0x66, 0x6f, 0xb2, 0x15, + 0x80, 0x51, 0x8f, 0x7f, 0x94, 0x8f, 0x86, 0x46, 0x87, 0x0a, 0xc3, 0x6c, 0xdd, 0x08, 0xbb, 0xfd, + 0xff, 0x7e, 0x8e, 0x39, 0xc2, 0xee, 0x3a, 0xf6, 0x13, 0x3b, 0xfc, 0x7e, 0x55, 0x2d, 0x51, 0x98, + 0xe2, 0x83, 0xcb, 0x70, 0x29, 0xc9, 0x3c, 0xa4, 0x42, 0x29, 0xdf, 0x53, 0xa1, 0xf4, 0x40, 0x79, + 0x34, 0x51, 0x22, 0x4b, 0xb2, 0xb3, 0x5a, 0x57, 0xe0, 0x84, 0xaf, 0x29, 0x5f, 0xc3, 0x39, 0x1a, + 0xe3, 0x8e, 0xbd, 0x48, 0x8d, 0x2f, 0xdd, 0xe1, 0xbb, 0x56, 0x46, 0xf7, 0x59, 0x50, 0x3c, 0xee, + 0xdc, 0x4e, 0x03, 0x51, 0xb6, 0x69, 0x81, 0x1a, 0xd1, 0x8e, 0x81, 0xa0, 0x1d, 0x98, 0xa9, 0x79, + 0xb8, 0xc5, 0xad, 0xc7, 0x3b, 0x1e, 0xbf, 0x64, 0xb3, 0xeb, 0x3b, 0x0d, 0x00, 0xde, 0x11, 0xd5, + 0x0d, 0x2c, 0xeb, 0xd5, 0xf3, 0x24, 0x01, 0x1d, 0xad, 0xc0, 0x54, 0x1d, 0x5b, 0x5e, 0xf3, 0xe8, + 0x31, 0x7e, 0x49, 0x8e, 0x6d, 0x2d, 0x6a, 0xbe, 0x4f, 0x6b, 0xc8, 0x78, 0x69, 0x95, 0x6a, 0xf4, + 0xa0, 0x23, 0xa1, 0xef, 0xc1, 0xb9, 0xba, 0xeb, 0x05, 0x95, 0x97, 0xfc, 0x9b, 0x16, 0x6f, 0x16, + 0xac, 0xb0, 0x72, 0x51, 0x64, 0x0e, 0xf0, 0x5d, 0x2f, 0x68, 0x1c, 0xa8, 0xec, 0xe3, 0x78, 0xe8, + 0x25, 0xcc, 0xea, 0xdf, 0xd3, 0x43, 0xbb, 0x4d, 0x36, 0xa1, 0x51, 0x2e, 0x2e, 0x24, 0x7d, 0xb4, + 0x0c, 0xa4, 0x72, 0x8b, 0x53, 0xbf, 0x1a, 0xfd, 0x6a, 0x9f, 0xd0, 0x7a, 0x35, 0xef, 0x48, 0x12, + 0x3e, 0xda, 0xa4, 0x09, 0x17, 0xd8, 0x88, 0xca, 0x3e, 0xb3, 0xdb, 0x1e, 0x0b, 0xe3, 0x20, 0x75, + 0xe9, 0x37, 0x49, 0x39, 0x61, 0xf9, 0xd1, 0x3c, 0x1a, 0x66, 0x0c, 0x15, 0xd5, 0xe0, 0xfc, 0xae, + 0x8f, 0x6b, 0x1e, 0x7e, 0x66, 0xe3, 0xe7, 0x82, 0x1e, 0x0b, 0xe6, 0x45, 0xa7, 0x89, 0xd0, 0xeb, + 0xb0, 0xda, 0x24, 0x82, 0x71, 0x64, 0xf4, 0x21, 0x40, 0xcd, 0x76, 0x1c, 0xdc, 0xa2, 0x0f, 0x5f, + 0xe3, 0x94, 0x14, 0x55, 0x0d, 0x76, 0x68, 0x69, 0xc3, 0x75, 0xda, 0x2a, 0x4b, 0x15, 0xe0, 0xe2, + 0x87, 0x30, 0xae, 0x2c, 0xb1, 0x84, 0xe0, 0x08, 0xb3, 0x6a, 0x70, 0x84, 0x31, 0x35, 0x08, 0xc2, + 0xdf, 0xc9, 0xc1, 0x62, 0xf2, 0xd2, 0xe5, 0xc7, 0xfd, 0x36, 0x8c, 0xc9, 0x42, 0xe9, 0xea, 0x23, + 0x24, 0xc6, 0xc8, 0x79, 0xcb, 0xbe, 0x1f, 0xf1, 0xa1, 0xab, 0xe3, 0x0d, 0x69, 0xbc, 0x82, 0x1a, + 0xf7, 0x9f, 0x8f, 0xc0, 0x2c, 0xe9, 0x63, 0x6c, 0x5b, 0xf8, 0x9c, 0x06, 0x39, 0xa1, 0x65, 0x8a, + 0x56, 0x92, 0x2b, 0x28, 0x58, 0x79, 0x34, 0xf0, 0x92, 0x86, 0x80, 0xde, 0x53, 0x1f, 0xc1, 0xf3, + 0x4a, 0x46, 0x05, 0x51, 0xa8, 0x0e, 0x21, 0x7c, 0x1d, 0x7f, 0x47, 0x7b, 0x83, 0xed, 0x7b, 0x8f, + 0x19, 0xea, 0x77, 0x8f, 0xd9, 0x95, 0x7b, 0x0c, 0x0b, 0x9e, 0xf1, 0xb6, 0xb2, 0xc7, 0xbc, 0xf9, + 0xcd, 0xe5, 0xdc, 0x9b, 0xde, 0x5c, 0x46, 0x5e, 0x6f, 0x73, 0x19, 0x7d, 0xc5, 0xcd, 0xe5, 0x21, + 0x4c, 0x6d, 0x61, 0xdc, 0x52, 0xf4, 0xeb, 0xec, 0xfb, 0xe6, 0x4a, 0x05, 0xaa, 0x39, 0x49, 0x52, + 0xb2, 0x47, 0xb0, 0x52, 0x37, 0x29, 0xf8, 0xdf, 0xb3, 0x49, 0x8d, 0xbf, 0xe1, 0x4d, 0x6a, 0xe2, + 0x35, 0x36, 0xa9, 0xd7, 0xd9, 0x69, 0x3e, 0xa3, 0xe6, 0x68, 0xf5, 0xfa, 0x1a, 0x7f, 0xea, 0x57, + 0xde, 0xd6, 0xd7, 0x5c, 0x5f, 0xd8, 0xd9, 0xd3, 0xbf, 0x49, 0x59, 0xcd, 0xf5, 0xc4, 0xfb, 0x24, + 0xfd, 0xdb, 0xa8, 0x50, 0x23, 0x34, 0x15, 0x5f, 0x3a, 0x69, 0x8c, 0x70, 0x1f, 0x47, 0xbe, 0x3f, + 0x45, 0x05, 0x6e, 0x53, 0xd4, 0x1b, 0xff, 0x2e, 0xc7, 0xde, 0xa1, 0xfe, 0x4f, 0xdc, 0xe6, 0x5e, + 0xe7, 0x6d, 0xe8, 0xd7, 0xc3, 0xd8, 0x07, 0x3c, 0x4e, 0x83, 0x67, 0x35, 0x9f, 0x86, 0x8f, 0x73, + 0x3f, 0x24, 0xdf, 0xa8, 0x5a, 0x41, 0xc3, 0x42, 0x86, 0xb7, 0x0a, 0xbd, 0x72, 0xef, 0xbe, 0xf8, + 0x78, 0x79, 0x08, 0x08, 0x56, 0xac, 0x7f, 0xbc, 0x2a, 0x02, 0xf5, 0xa4, 0x99, 0x36, 0x4c, 0xe6, + 0xba, 0x9f, 0xd8, 0x83, 0xf7, 0xe3, 0xce, 0xe7, 0x54, 0x6c, 0x0d, 0x9d, 0xcf, 0x55, 0x36, 0x86, + 0x6e, 0xe8, 0xbb, 0x70, 0xc9, 0xc4, 0xc7, 0xee, 0x33, 0xfc, 0x66, 0xc9, 0xfe, 0x00, 0x2e, 0xea, + 0x04, 0x99, 0xaf, 0x15, 0x0b, 0x39, 0xfe, 0x59, 0x72, 0xa0, 0x72, 0x8e, 0xc0, 0x02, 0x95, 0x33, + 0x05, 0x03, 0xf9, 0x53, 0x53, 0x30, 0x90, 0x02, 0xc3, 0x85, 0x45, 0x9d, 0x78, 0xb9, 0xd5, 0xa2, + 0xb9, 0xe1, 0x9a, 0x76, 0xc7, 0x72, 0x02, 0xb4, 0x0d, 0xe3, 0xca, 0xcf, 0xc8, 0xa5, 0x52, 0xa9, + 0xe1, 0xc7, 0x7f, 0x58, 0xa0, 0x05, 0x10, 0x0c, 0x8b, 0x0d, 0x0c, 0xa5, 0x28, 0x7b, 0x08, 0xcb, + 0xd4, 0x36, 0x2b, 0x30, 0xa9, 0xfc, 0x94, 0x5a, 0x2a, 0x1a, 0xef, 0x52, 0x69, 0x41, 0x67, 0x98, + 0x8e, 0x62, 0x34, 0xa1, 0x98, 0xc4, 0x34, 0x1a, 0xf2, 0xe9, 0x25, 0x5a, 0x09, 0x83, 0x47, 0xf5, + 0x36, 0x8d, 0x9a, 0x4e, 0x0b, 0x1c, 0x65, 0xfc, 0xf5, 0x21, 0xb8, 0xc4, 0x27, 0xe3, 0x4d, 0xce, + 0x38, 0xfa, 0x11, 0x8c, 0x2b, 0x73, 0xcc, 0x99, 0x7e, 0x55, 0xd8, 0x60, 0xa6, 0xad, 0x05, 0x76, + 0xf9, 0xed, 0xd2, 0x82, 0x46, 0x64, 0xba, 0xc9, 0xe5, 0x57, 0x5d, 0x36, 0x6d, 0x98, 0xd2, 0x27, + 0x9a, 0xdf, 0xff, 0xaf, 0x27, 0x36, 0xa2, 0x83, 0x8a, 0x30, 0xb4, 0xad, 0x46, 0xe2, 0x74, 0x93, + 0x6b, 0x7c, 0x64, 0x11, 0xbd, 0x80, 0xf3, 0xb1, 0x59, 0xe6, 0x6a, 0x9d, 0x9b, 0x89, 0x0d, 0xc6, + 0xa0, 0x99, 0x06, 0xce, 0xa3, 0xc5, 0xa9, 0xcd, 0xc6, 0x1b, 0x41, 0x2d, 0x98, 0x50, 0x27, 0x9e, + 0x2b, 0x28, 0xae, 0x65, 0xb0, 0x92, 0x01, 0x32, 0xc1, 0x8c, 0xf3, 0x92, 0xce, 0xfd, 0x4b, 0x5d, + 0xab, 0xa8, 0x01, 0x8f, 0xc2, 0x39, 0xf6, 0x9b, 0x6c, 0x01, 0x35, 0x0f, 0xfb, 0xd8, 0x69, 0x62, + 0xd5, 0x9c, 0xf6, 0x75, 0xb7, 0x80, 0x7f, 0x99, 0x83, 0x85, 0x24, 0xba, 0x75, 0xec, 0xb4, 0x50, + 0x0d, 0x0a, 0xd1, 0x86, 0xf8, 0xaa, 0x36, 0x64, 0xa4, 0xcf, 0xd4, 0x2e, 0xad, 0x0d, 0x98, 0x31, + 0x6c, 0xb4, 0x05, 0xe7, 0x95, 0xb2, 0x33, 0xda, 0x2d, 0xc7, 0x51, 0x55, 0x2d, 0xe6, 0x1a, 0x3d, + 0x19, 0x97, 0xdd, 0x63, 0xcb, 0x76, 0x88, 0x90, 0xaa, 0xc4, 0x8f, 0x82, 0xb0, 0x94, 0xf3, 0x86, + 0xe9, 0xe5, 0x68, 0xa9, 0x70, 0x46, 0x90, 0x20, 0xc6, 0x27, 0x74, 0x07, 0xe7, 0xda, 0x1c, 0xe6, + 0xcf, 0x2b, 0x89, 0x5d, 0x85, 0xe1, 0x9d, 0x8d, 0x7a, 0xb5, 0xcc, 0xbd, 0x83, 0x59, 0x4c, 0x89, + 0xb6, 0xdf, 0x68, 0x5a, 0x26, 0xab, 0x30, 0x3e, 0xa6, 0xc1, 0xc2, 0x79, 0xa8, 0x69, 0x89, 0x77, + 0x03, 0x46, 0x78, 0x11, 0xc7, 0xa4, 0x76, 0x4c, 0x6d, 0x0e, 0x25, 0xea, 0x8c, 0x9a, 0x90, 0xf1, + 0xdb, 0xd8, 0xf2, 0x95, 0x83, 0xf9, 0x03, 0x18, 0xf5, 0x78, 0x19, 0x3f, 0x97, 0xa7, 0x64, 0xe2, + 0x08, 0x5a, 0xcc, 0x34, 0x9f, 0x02, 0xc6, 0x94, 0x7f, 0x19, 0x1b, 0x34, 0xfe, 0xcb, 0xf6, 0xfa, + 0x72, 0x95, 0x70, 0x95, 0x33, 0x4b, 0x4c, 0xc7, 0x5d, 0x6a, 0x1a, 0x1c, 0x60, 0xd5, 0x37, 0x98, + 0xb2, 0x86, 0x7e, 0xe4, 0x3c, 0xea, 0x91, 0x02, 0x62, 0x3c, 0x90, 0xd1, 0x64, 0x12, 0xa8, 0xa5, + 0x25, 0x40, 0xd8, 0xa2, 0x71, 0x72, 0x56, 0xa9, 0x85, 0xc4, 0x9b, 0xe8, 0x84, 0x05, 0x45, 0x76, + 0xcc, 0x93, 0x51, 0xf1, 0x74, 0x5c, 0xae, 0xdc, 0x1a, 0xab, 0x30, 0x26, 0xcb, 0xe4, 0x73, 0x07, + 0xe3, 0x95, 0x06, 0xbf, 0xf7, 0x80, 0xb9, 0x51, 0x37, 0x25, 0x81, 0x10, 0x8f, 0x34, 0xc1, 0xbe, + 0xbb, 0x6f, 0xb8, 0x09, 0x1f, 0x7b, 0xc1, 0x37, 0xda, 0x44, 0x18, 0x48, 0xe9, 0x2c, 0x4d, 0x68, + 0xf0, 0x7b, 0x4b, 0xfd, 0x30, 0xea, 0x1b, 0x6e, 0x82, 0x30, 0xea, 0x9b, 0x6b, 0x02, 0x8b, 0x88, + 0x53, 0x6c, 0x91, 0xc6, 0x1a, 0x59, 0x89, 0x37, 0x22, 0x54, 0x9c, 0x11, 0x8c, 0xcc, 0xf9, 0xc0, + 0xb0, 0xc8, 0x98, 0xf5, 0x0b, 0x68, 0x86, 0x30, 0xec, 0x9b, 0x6d, 0xe6, 0xf7, 0x72, 0x2c, 0xfe, + 0x55, 0x7d, 0x5b, 0x49, 0x84, 0xe7, 0x3c, 0x71, 0x95, 0xd7, 0x58, 0xe5, 0x6b, 0x7f, 0x6c, 0x3b, + 0x2d, 0xf5, 0x35, 0xd6, 0xea, 0x06, 0x47, 0x32, 0x02, 0xf2, 0x53, 0xdb, 0x69, 0x99, 0x51, 0x68, + 0xf4, 0x21, 0x4c, 0x2a, 0x45, 0x52, 0x5a, 0x63, 0x11, 0xef, 0x55, 0x74, 0xbb, 0x65, 0xea, 0x90, + 0xc6, 0x6f, 0xe7, 0xe1, 0xc2, 0x6e, 0xc7, 0xa7, 0x2e, 0x13, 0xeb, 0xce, 0x33, 0xec, 0x04, 0xae, + 0xf7, 0x92, 0x1a, 0x6f, 0xa3, 0xf7, 0x60, 0x78, 0x0d, 0xb7, 0xdb, 0x2e, 0x1f, 0xf9, 0x65, 0xf1, + 0x14, 0x1a, 0x85, 0xa6, 0x40, 0x6b, 0x03, 0x26, 0x83, 0x46, 0x1f, 0xc2, 0xd8, 0x1a, 0xb6, 0xbc, + 0xe0, 0x00, 0x5b, 0x42, 0x58, 0x15, 0x11, 0xd8, 0x15, 0x14, 0x0e, 0xb0, 0x36, 0x60, 0x86, 0xd0, + 0x68, 0x89, 0xdc, 0xe3, 0x9c, 0x43, 0xe9, 0x3d, 0x9e, 0xd2, 0x20, 0x81, 0x59, 0x1b, 0x30, 0x29, + 0x2c, 0xda, 0x84, 0xc9, 0xf2, 0x21, 0x76, 0x82, 0x4d, 0x1c, 0x58, 0x2d, 0x2b, 0xb0, 0xb8, 0x50, + 0x73, 0x23, 0x0d, 0x59, 0x03, 0x5e, 0x1b, 0x30, 0x75, 0xec, 0xca, 0x30, 0x0c, 0x6e, 0xfa, 0x87, + 0xc6, 0x49, 0x0e, 0x16, 0x96, 0xdd, 0xe7, 0x4e, 0x22, 0x63, 0xbe, 0xab, 0x33, 0x46, 0x38, 0xf6, + 0x24, 0xc0, 0x47, 0x58, 0xf3, 0x2e, 0x0c, 0xd5, 0x6c, 0xe7, 0x30, 0x72, 0x8e, 0x27, 0xe0, 0x11, + 0x28, 0x3a, 0x42, 0xdb, 0x39, 0x44, 0x1b, 0x42, 0x80, 0xe2, 0x4a, 0x9e, 0x41, 0x4d, 0x6a, 0x4b, + 0xc0, 0x56, 0xa1, 0x43, 0x41, 0x89, 0xfd, 0x16, 0x03, 0x7c, 0x07, 0xe6, 0x53, 0xda, 0xe5, 0x1e, + 0xdd, 0x64, 0x6c, 0x43, 0xf4, 0x54, 0x7a, 0x1b, 0xe6, 0x12, 0xa7, 0x20, 0x06, 0xf8, 0x0f, 0x92, + 0xd6, 0x12, 0x1b, 0xf9, 0x02, 0x8c, 0x88, 0x44, 0x1d, 0xec, 0xe2, 0x2e, 0x7e, 0x52, 0x57, 0x04, + 0x7a, 0xdd, 0x0e, 0x63, 0x09, 0x8b, 0xdf, 0x68, 0x4f, 0x09, 0x1b, 0x34, 0x48, 0xb5, 0x44, 0x1f, + 0xbd, 0x46, 0x8e, 0x62, 0x49, 0x8b, 0xb4, 0xb9, 0xe6, 0xfa, 0x81, 0x23, 0x2d, 0xe5, 0x4c, 0xf9, + 0x1b, 0xdd, 0x86, 0xc2, 0xca, 0x8b, 0x00, 0x7b, 0x8e, 0xd5, 0xe6, 0x29, 0x0b, 0x78, 0xf2, 0x59, + 0x33, 0x56, 0x8e, 0x3e, 0x80, 0xf9, 0x68, 0x99, 0x18, 0x25, 0xf3, 0x25, 0x49, 0xab, 0x36, 0xfe, + 0x34, 0x4f, 0xa3, 0x1f, 0x67, 0x2c, 0x4d, 0xc2, 0xdd, 0xed, 0x3a, 0xe7, 0x56, 0x7e, 0xbb, 0x8e, + 0x16, 0x61, 0x6c, 0xbb, 0xae, 0x65, 0x3b, 0x31, 0xc3, 0x02, 0xd2, 0x6d, 0x32, 0x84, 0xb2, 0xd7, + 0x3c, 0xb2, 0x03, 0xdc, 0x0c, 0xba, 0x1e, 0x0f, 0xfa, 0x64, 0xc6, 0xca, 0x91, 0x01, 0x13, 0xab, + 0x6d, 0xfb, 0xa0, 0x29, 0x88, 0x31, 0x16, 0x68, 0x65, 0xe8, 0x26, 0x4c, 0xad, 0x3b, 0x7e, 0x60, + 0xb5, 0xdb, 0x2c, 0x19, 0x0c, 0xcf, 0xbe, 0x6d, 0x46, 0x4a, 0x49, 0xbb, 0x55, 0xd7, 0x09, 0x2c, + 0xdb, 0xc1, 0x9e, 0xd9, 0x75, 0x02, 0xfb, 0x18, 0xf3, 0xb1, 0xc7, 0xca, 0xd1, 0xbb, 0x30, 0x27, + 0xcb, 0xb6, 0xbd, 0xe6, 0x11, 0xf6, 0x03, 0x8f, 0xe6, 0xe9, 0xa2, 0xe1, 0x6d, 0xcc, 0xe4, 0x4a, + 0xda, 0x42, 0xdb, 0xed, 0xb6, 0x56, 0x9c, 0x67, 0xb6, 0xe7, 0x3a, 0x34, 0xa7, 0xe6, 0x28, 0x6f, + 0x21, 0x52, 0x6e, 0xd4, 0x12, 0xbf, 0xda, 0xd7, 0x58, 0x82, 0xc6, 0x69, 0x0e, 0x16, 0x13, 0x3f, + 0x2c, 0xb1, 0x79, 0xab, 0xc8, 0xb9, 0xc8, 0xfa, 0xbd, 0x0d, 0x43, 0x74, 0x37, 0x67, 0x8a, 0x01, + 0x61, 0x4b, 0x42, 0xf1, 0x19, 0x29, 0x52, 0x6b, 0x52, 0x18, 0xb4, 0x2a, 0x95, 0xb8, 0x83, 0x54, + 0x6c, 0xbd, 0x1b, 0xdd, 0x33, 0x13, 0x1a, 0x57, 0x95, 0xb9, 0x42, 0x6d, 0xfb, 0x3a, 0x3a, 0xb7, + 0x3f, 0xcd, 0x41, 0xa9, 0xc7, 0x7e, 0x22, 0xc7, 0x94, 0xeb, 0x63, 0x4c, 0x8f, 0xe4, 0x98, 0x98, + 0xd7, 0xca, 0x52, 0x7f, 0x7b, 0xd6, 0x9b, 0x1e, 0x56, 0x15, 0x50, 0xfc, 0xe4, 0x41, 0xdf, 0x81, + 0xb1, 0x7a, 0x7d, 0x4d, 0x7b, 0xe7, 0x8f, 0x69, 0x02, 0x43, 0x08, 0xe3, 0x7d, 0xb8, 0x20, 0x89, + 0xb0, 0xf0, 0xeb, 0x8a, 0x6b, 0x1c, 0x3f, 0xeb, 0xa5, 0x1f, 0x5f, 0x58, 0x60, 0xfc, 0xc9, 0x50, + 0x0c, 0xb1, 0xde, 0x3d, 0x3e, 0xb6, 0xbc, 0x97, 0xa8, 0xac, 0x23, 0x0e, 0xf6, 0x3c, 0x64, 0x2b, + 0x43, 0x3f, 0x3d, 0x29, 0x0d, 0x28, 0xd4, 0xd1, 0x5b, 0x30, 0x49, 0x3f, 0x48, 0xa7, 0x89, 0x99, + 0x1e, 0x30, 0xcf, 0xe2, 0x88, 0x68, 0x85, 0x68, 0x0f, 0x26, 0xf9, 0x5a, 0xa7, 0xbf, 0xc5, 0x12, + 0xbb, 0x17, 0x5d, 0x62, 0x5a, 0xf7, 0xee, 0x68, 0x28, 0x6c, 0x32, 0x74, 0x32, 0xe8, 0x2b, 0x98, + 0x12, 0x1b, 0x1b, 0x27, 0xcc, 0x1e, 0x39, 0xef, 0x67, 0x13, 0xd6, 0x71, 0x18, 0xe5, 0x08, 0x21, + 0xd2, 0x65, 0xbe, 0x5d, 0x73, 0xca, 0xc3, 0xfd, 0x74, 0x59, 0x43, 0xe1, 0x5d, 0xd6, 0xca, 0x8a, + 0xdf, 0x03, 0x14, 0x1f, 0x57, 0xaf, 0xd5, 0x34, 0xa9, 0xac, 0xa6, 0x62, 0x19, 0x66, 0x12, 0x06, + 0x70, 0x26, 0x12, 0xdf, 0x03, 0x14, 0xef, 0xe9, 0x59, 0x28, 0x18, 0xb7, 0xe0, 0xa6, 0x64, 0x81, + 0x5c, 0x0d, 0x1a, 0x4d, 0x71, 0xdb, 0xff, 0xb5, 0x3c, 0x94, 0x7a, 0x80, 0xa2, 0xbf, 0x95, 0x8b, + 0x72, 0x9b, 0xad, 0xc6, 0x0f, 0xa3, 0xdc, 0x4e, 0xc6, 0x4f, 0x60, 0x7b, 0xe5, 0xa3, 0xff, 0xef, + 0xcf, 0x5e, 0xf9, 0xa0, 0x8e, 0x4f, 0xd9, 0xd9, 0xb9, 0x35, 0xa4, 0x72, 0xcb, 0x84, 0x59, 0x4d, + 0xc4, 0xe9, 0x67, 0xef, 0xbe, 0x02, 0xc0, 0xb3, 0x42, 0x6d, 0xb8, 0x87, 0xdc, 0xb1, 0x50, 0x29, + 0x31, 0x1e, 0xc2, 0x5c, 0x84, 0x26, 0xd7, 0x40, 0x7c, 0x07, 0xa4, 0x0b, 0x14, 0x25, 0x3a, 0x58, + 0x39, 0xff, 0xf3, 0x93, 0xd2, 0x24, 0x39, 0x01, 0xef, 0x84, 0x51, 0x8e, 0xc5, 0x5f, 0xc6, 0xa6, + 0xaa, 0x43, 0x29, 0xb7, 0x35, 0x47, 0xf2, 0xfb, 0x70, 0x8e, 0x95, 0x44, 0x62, 0x89, 0xaa, 0xd0, + 0x7c, 0x4f, 0xe0, 0x80, 0xc6, 0x1c, 0x75, 0xfb, 0xa0, 0x3f, 0xca, 0xa1, 0x83, 0xa1, 0xb1, 0xcb, + 0xe2, 0xcf, 0x87, 0xc5, 0x32, 0x5e, 0xe9, 0x50, 0x39, 0x74, 0x84, 0x14, 0x8f, 0x55, 0x02, 0xce, + 0x71, 0x9f, 0xb7, 0x71, 0xeb, 0x90, 0x26, 0x9f, 0xae, 0x4c, 0xf0, 0xc7, 0xaa, 0x21, 0x8b, 0x10, + 0xa0, 0x68, 0xc6, 0xe7, 0x30, 0x57, 0x6d, 0x63, 0xcb, 0x8b, 0xb6, 0x87, 0x6e, 0xc2, 0x08, 0x2d, + 0xd3, 0xed, 0xcd, 0x2c, 0x52, 0x44, 0xed, 0xcd, 0x78, 0xa5, 0xb1, 0x01, 0x17, 0xd9, 0x0d, 0x4c, + 0x1d, 0x52, 0xa8, 0xef, 0x18, 0xa6, 0xbf, 0x23, 0x4e, 0x03, 0x09, 0xa3, 0x67, 0x70, 0xc6, 0x67, + 0xd4, 0x2a, 0x35, 0x29, 0xef, 0x78, 0x7f, 0x6e, 0x2c, 0xff, 0x0f, 0x2c, 0x96, 0x3b, 0x1d, 0xec, + 0xb4, 0x42, 0xc4, 0x1d, 0xcf, 0xea, 0xd3, 0x3d, 0x10, 0x95, 0x61, 0x98, 0x42, 0x4b, 0x65, 0x31, + 0xef, 0x6e, 0x42, 0x77, 0x28, 0x1c, 0x0f, 0x2e, 0x47, 0x1b, 0x60, 0x98, 0x46, 0x0b, 0xe6, 0xeb, + 0xdd, 0x83, 0x63, 0x9b, 0x25, 0xe3, 0xa6, 0x2e, 0xb6, 0xa2, 0xed, 0x75, 0x91, 0x32, 0x84, 0x31, + 0xe3, 0x56, 0x98, 0x4f, 0x9c, 0x1a, 0xba, 0x71, 0xb7, 0xdb, 0x67, 0xf7, 0xef, 0x84, 0xa8, 0xf4, + 0xb6, 0xc2, 0x5a, 0xa1, 0xd5, 0x3c, 0xad, 0x88, 0x31, 0x03, 0xe7, 0x55, 0xc5, 0x1b, 0x5b, 0x21, + 0x73, 0x30, 0xa3, 0x2b, 0xd4, 0x58, 0xf1, 0xd7, 0x30, 0xcb, 0x2e, 0xfc, 0x2c, 0x38, 0xec, 0x52, + 0x18, 0x07, 0x35, 0xbf, 0xb7, 0x14, 0x31, 0x8f, 0xa3, 0xe6, 0x3b, 0x32, 0xec, 0xf7, 0xde, 0x12, + 0xf3, 0x2c, 0x78, 0xb6, 0xa4, 0xa9, 0x6d, 0xf3, 0x7b, 0x4b, 0x95, 0x11, 0x1e, 0x64, 0x8f, 0x50, + 0x67, 0xd3, 0xff, 0x8d, 0x50, 0x5f, 0xa2, 0xce, 0x6c, 0x6b, 0xd8, 0xa2, 0x86, 0xa7, 0xc9, 0x2e, + 0x41, 0x53, 0x90, 0xb7, 0x5b, 0x42, 0xca, 0xb6, 0x5b, 0xc6, 0x1f, 0xe5, 0xe0, 0x16, 0x93, 0x45, + 0x92, 0xf1, 0xa8, 0x76, 0x2d, 0x05, 0x19, 0x7d, 0x00, 0x2c, 0x19, 0x2d, 0x17, 0xf8, 0x0c, 0xde, + 0xf3, 0x2c, 0x4a, 0x0c, 0x01, 0x95, 0x61, 0x42, 0xb5, 0xf8, 0xec, 0x2f, 0x9e, 0x8b, 0x39, 0x7e, + 0xfc, 0xc4, 0x92, 0x56, 0xa0, 0x4f, 0xe1, 0xd2, 0xca, 0x0b, 0xb2, 0x20, 0xf8, 0xe9, 0xc4, 0x5f, + 0x8c, 0x43, 0x97, 0x93, 0xe9, 0x1d, 0xbe, 0x62, 0x74, 0x31, 0x38, 0x5a, 0x4c, 0xae, 0x07, 0xe2, + 0x80, 0x93, 0xd2, 0xeb, 0x98, 0xa9, 0x95, 0x19, 0x7f, 0x92, 0x83, 0xc5, 0xe4, 0xd6, 0xf8, 0xc6, + 0xb2, 0x0e, 0xe7, 0xab, 0x96, 0xe3, 0x3a, 0x76, 0xd3, 0x6a, 0xd7, 0x9b, 0x47, 0xb8, 0xd5, 0x95, + 0xf1, 0x04, 0xe5, 0x2e, 0x43, 0xae, 0x3b, 0x1c, 0x5d, 0x80, 0x98, 0x71, 0x2c, 0xf4, 0x3e, 0x5c, + 0xa0, 0x46, 0x83, 0x6c, 0xef, 0x6d, 0x63, 0x4f, 0xd2, 0x63, 0x3d, 0x4b, 0xa9, 0x45, 0xf7, 0x60, + 0x86, 0x1d, 0x2a, 0xad, 0x5d, 0xc7, 0x0e, 0x24, 0x12, 0xbb, 0x15, 0x25, 0x55, 0x19, 0x35, 0x78, + 0x4b, 0x4b, 0x56, 0x55, 0x6e, 0xb7, 0xdd, 0xe7, 0xb8, 0x55, 0xf3, 0xdc, 0x63, 0x37, 0xd0, 0x22, + 0xe6, 0xf3, 0x44, 0x82, 0xa1, 0xc6, 0x85, 0xf3, 0x32, 0x52, 0x6c, 0xfc, 0xdf, 0x70, 0xa3, 0x07, + 0x45, 0xce, 0xaf, 0x3a, 0x9c, 0xb7, 0x22, 0x75, 0xe2, 0x61, 0xec, 0x86, 0xe0, 0x57, 0x16, 0x21, + 0xdf, 0x8c, 0xe3, 0xdf, 0xde, 0xd1, 0x72, 0x8f, 0xa1, 0x05, 0x98, 0xad, 0x99, 0xdb, 0xcb, 0xbb, + 0xd5, 0x9d, 0xc6, 0xce, 0x57, 0xb5, 0x95, 0xc6, 0xee, 0xd6, 0xe3, 0xad, 0xed, 0xfd, 0x2d, 0x16, + 0xf8, 0x53, 0xab, 0xd9, 0x59, 0x29, 0x6f, 0x16, 0x72, 0x68, 0x16, 0x0a, 0x5a, 0xf1, 0xca, 0x6e, + 0xa5, 0x90, 0xbf, 0xdd, 0x50, 0x2d, 0x7a, 0xd1, 0x25, 0x98, 0x5f, 0x5e, 0xd9, 0x5b, 0xaf, 0xae, + 0x08, 0x9a, 0x6a, 0xd0, 0xd1, 0x59, 0x28, 0xa8, 0x95, 0x3b, 0xdb, 0x3b, 0x35, 0x96, 0xd9, 0x5f, + 0x2d, 0xdd, 0x5f, 0xa9, 0x94, 0x77, 0x77, 0xd6, 0xb6, 0x0a, 0x83, 0xc6, 0xd0, 0x68, 0xbe, 0x90, + 0xbf, 0xfd, 0x23, 0xcd, 0xdc, 0x17, 0x2d, 0xc2, 0x02, 0x07, 0xdf, 0xad, 0x97, 0x57, 0xd3, 0x9b, + 0x60, 0xb5, 0x9b, 0x0f, 0xcb, 0x85, 0x1c, 0xba, 0x0c, 0x17, 0xb5, 0xd2, 0x5a, 0xb9, 0x5e, 0xdf, + 0xdf, 0x36, 0x97, 0x37, 0x56, 0xea, 0xf5, 0x42, 0xfe, 0xf6, 0x9e, 0x16, 0x5d, 0x83, 0xb4, 0xb0, + 0xf9, 0xb0, 0xdc, 0x30, 0x57, 0xbe, 0xd8, 0x5d, 0x37, 0x57, 0x96, 0xe3, 0x2d, 0x68, 0xb5, 0x5f, + 0xad, 0xd4, 0x0b, 0x39, 0x34, 0x03, 0xd3, 0x5a, 0xe9, 0xd6, 0x76, 0x21, 0x7f, 0xfb, 0x26, 0x8f, + 0x9d, 0x80, 0xa6, 0x00, 0x96, 0x57, 0xea, 0xd5, 0x95, 0xad, 0xe5, 0xf5, 0xad, 0xd5, 0xc2, 0x00, + 0x9a, 0x84, 0xb1, 0xb2, 0xfc, 0x99, 0xbb, 0xfd, 0x11, 0x4c, 0x47, 0x6e, 0x4c, 0x04, 0x42, 0x5e, + 0x36, 0x0a, 0x03, 0x84, 0x47, 0xf2, 0x27, 0xbd, 0xe6, 0xb2, 0xcb, 0x4f, 0x21, 0xb7, 0xf4, 0x97, + 0xbf, 0x97, 0x83, 0x71, 0xb2, 0x1d, 0x08, 0xb3, 0xcf, 0xaf, 0x95, 0x0b, 0x06, 0xff, 0x0c, 0x78, + 0x16, 0xa7, 0xd4, 0xdb, 0x04, 0x3d, 0x19, 0x8a, 0x19, 0x8a, 0x2b, 0x0a, 0x70, 0x2b, 0x77, 0x2f, + 0x87, 0x4c, 0xfa, 0x4a, 0x13, 0x91, 0xb7, 0x25, 0xe5, 0xe4, 0x2b, 0x51, 0xf1, 0x72, 0xa6, 0x98, + 0x8e, 0x7e, 0x19, 0x0c, 0x95, 0x66, 0x8a, 0x54, 0xfa, 0x9d, 0xfe, 0xa4, 0x4f, 0xd1, 0xe6, 0xcd, + 0xfe, 0xc0, 0xd1, 0x23, 0x98, 0x24, 0xf2, 0x9a, 0x04, 0x43, 0x97, 0xa2, 0x88, 0x8a, 0x88, 0x58, + 0x5c, 0x4c, 0xae, 0x94, 0x41, 0xe4, 0x27, 0xe8, 0x40, 0xd8, 0x65, 0xcb, 0x47, 0xc2, 0xc3, 0x4e, + 0x94, 0x30, 0x3b, 0x9d, 0xe2, 0xf9, 0x48, 0xf1, 0xde, 0xfd, 0x7b, 0x39, 0x54, 0xa7, 0x81, 0x29, + 0x34, 0xc1, 0x0f, 0x09, 0x3b, 0xe4, 0xb8, 0x44, 0xc8, 0x7a, 0x53, 0x92, 0x69, 0x91, 0x52, 0x24, + 0xc6, 0x2d, 0x40, 0x71, 0x79, 0x0a, 0x5d, 0x0d, 0xd7, 0x41, 0xb2, 0xa8, 0x55, 0xbc, 0x10, 0x7b, + 0x7c, 0x5f, 0x21, 0x27, 0x2a, 0x5a, 0x81, 0x29, 0xee, 0x3e, 0xc3, 0x25, 0x3c, 0x94, 0x25, 0x23, + 0xa6, 0x92, 0x59, 0xa5, 0x7c, 0x92, 0x52, 0x22, 0x2a, 0x86, 0xe3, 0x88, 0x8a, 0x8e, 0xc5, 0x4b, + 0x89, 0x75, 0x7c, 0x7c, 0x0f, 0x61, 0x4a, 0x17, 0x38, 0x91, 0x98, 0xa0, 0x44, 0x39, 0x34, 0xb5, + 0x43, 0x0d, 0x98, 0xdf, 0xb4, 0x6c, 0xaa, 0x6e, 0xe2, 0x4f, 0xbc, 0xe2, 0x81, 0x16, 0x95, 0x32, + 0x5e, 0x6c, 0xeb, 0xd8, 0x69, 0x15, 0x7b, 0x05, 0x72, 0xa2, 0x9f, 0x4d, 0x5d, 0xc8, 0x4d, 0xfa, + 0x03, 0x37, 0x32, 0xf4, 0x54, 0x77, 0x49, 0x36, 0x0b, 0xc5, 0x34, 0x33, 0x1b, 0xb4, 0x49, 0x05, + 0xb7, 0x08, 0x45, 0x65, 0x4d, 0x9c, 0x99, 0xdc, 0x02, 0x75, 0xe2, 0x0a, 0xec, 0xa8, 0xbd, 0x8c, + 0x8f, 0x52, 0x18, 0x97, 0x4a, 0xec, 0x5e, 0x0e, 0x7d, 0x4d, 0xbf, 0xea, 0x44, 0x72, 0xfb, 0x76, + 0x70, 0xc4, 0x6d, 0xd6, 0x2e, 0x25, 0x12, 0xe0, 0x1f, 0x4a, 0x06, 0x75, 0x13, 0x66, 0x93, 0x2c, + 0x7b, 0x24, 0x43, 0x33, 0xcc, 0x7e, 0x52, 0x57, 0x81, 0x49, 0xc4, 0xcf, 0x56, 0xfa, 0x24, 0x65, + 0x18, 0x96, 0xa4, 0xd2, 0xfc, 0x04, 0xa6, 0xc8, 0x2a, 0x79, 0x8c, 0x71, 0xa7, 0xdc, 0xb6, 0x9f, + 0x61, 0x1f, 0x89, 0x20, 0x67, 0xb2, 0x28, 0x0d, 0xf7, 0x56, 0x0e, 0x7d, 0x0b, 0xc6, 0xf7, 0xad, + 0xa0, 0x79, 0xc4, 0xa3, 0xeb, 0x88, 0xe0, 0x3b, 0xb4, 0xac, 0x28, 0x7e, 0xd1, 0xca, 0x7b, 0x39, + 0xf4, 0x29, 0x8c, 0xac, 0xe2, 0x80, 0xfa, 0x81, 0x5c, 0x93, 0x8f, 0xdc, 0xcc, 0xa0, 0x6c, 0xdd, + 0x91, 0xe6, 0xa7, 0xa2, 0xc3, 0x51, 0xe5, 0x16, 0xba, 0x0b, 0xc0, 0x36, 0x04, 0x4a, 0x21, 0x5a, + 0x5d, 0x8c, 0x75, 0x1b, 0xad, 0x92, 0x83, 0xbf, 0x8d, 0x03, 0xdc, 0x6f, 0x93, 0x69, 0x3c, 0xda, + 0x80, 0x29, 0x19, 0x77, 0x7f, 0x8b, 0xba, 0x52, 0x1a, 0x11, 0x62, 0xfe, 0x19, 0xa8, 0x7d, 0x44, + 0xbe, 0x0a, 0x96, 0x98, 0x4d, 0x06, 0x80, 0x43, 0x69, 0x21, 0xe1, 0x24, 0x13, 0x19, 0x98, 0x82, + 0xbb, 0xe6, 0xfa, 0x81, 0x8e, 0x2b, 0x4b, 0x92, 0x71, 0x31, 0x14, 0xd5, 0x76, 0xf5, 0x60, 0x70, + 0xe1, 0x9e, 0x9b, 0x16, 0xc3, 0xae, 0x78, 0x2d, 0x03, 0x82, 0x6d, 0x77, 0x74, 0x27, 0x59, 0x26, + 0x37, 0x7a, 0xd6, 0xcc, 0x76, 0x07, 0x3b, 0xf5, 0xfa, 0x1a, 0x8d, 0xea, 0x25, 0xde, 0xd4, 0x94, + 0x32, 0x41, 0x18, 0xc5, 0xab, 0xc8, 0xa9, 0xa7, 0xb9, 0xd5, 0xa1, 0x2c, 0x67, 0xbb, 0xf0, 0xd4, + 0x4b, 0x8c, 0x5b, 0xf6, 0x98, 0xe9, 0x18, 0xb4, 0xb4, 0xae, 0x7b, 0x4b, 0xa8, 0x98, 0x24, 0xa7, + 0xf2, 0x0f, 0xfb, 0x42, 0x52, 0xdd, 0xde, 0x83, 0x7b, 0x39, 0xb4, 0x02, 0x33, 0xd2, 0xf3, 0x35, + 0xac, 0x42, 0x29, 0x08, 0x19, 0x27, 0xcc, 0x5c, 0x02, 0x99, 0xbd, 0xa5, 0x0c, 0x42, 0x89, 0xe5, + 0xe8, 0x73, 0x98, 0xe1, 0x6b, 0x53, 0xeb, 0x4f, 0x41, 0x6e, 0x33, 0x5c, 0xb4, 0x4f, 0xed, 0xc9, + 0x23, 0x98, 0xab, 0x47, 0xb8, 0xc3, 0x0c, 0xbe, 0x2e, 0xea, 0x24, 0x68, 0x61, 0x1d, 0x07, 0x8c, + 0x3d, 0xc9, 0xb4, 0x1e, 0x03, 0x62, 0xfa, 0x00, 0x41, 0xee, 0x99, 0x8d, 0x9f, 0xa3, 0xcb, 0x91, + 0xae, 0x93, 0x42, 0x0a, 0x46, 0xf7, 0xa9, 0xd4, 0x91, 0xed, 0xb0, 0xec, 0x81, 0x2c, 0xe1, 0xb9, + 0xd5, 0xb1, 0x0e, 0xec, 0xb6, 0x1d, 0xd8, 0x98, 0x2c, 0x55, 0x15, 0x41, 0xad, 0x12, 0xeb, 0xe1, + 0x62, 0x2a, 0x04, 0xfa, 0x55, 0x1a, 0x73, 0x2a, 0xfb, 0x6e, 0x82, 0xbe, 0x95, 0x94, 0xe2, 0x3a, + 0xe5, 0x76, 0x55, 0xfc, 0x76, 0x7f, 0xc0, 0x7c, 0x31, 0x7e, 0x06, 0x93, 0xab, 0x38, 0x60, 0x29, + 0xca, 0x97, 0xad, 0xc0, 0x42, 0x52, 0x5f, 0x20, 0x8b, 0xf8, 0x1a, 0x14, 0x01, 0x23, 0xc2, 0x8a, + 0x3a, 0xfe, 0x31, 0x5a, 0x87, 0x02, 0xdb, 0xe6, 0x15, 0x12, 0x97, 0x63, 0x24, 0x38, 0x88, 0xe5, + 0x59, 0xc7, 0x7e, 0xea, 0x6c, 0xdd, 0x65, 0xcf, 0xbb, 0x48, 0x66, 0x77, 0x56, 0xe4, 0xc8, 0x19, + 0xad, 0x4c, 0x86, 0x05, 0x25, 0x33, 0x62, 0x62, 0x1f, 0x07, 0xc2, 0x45, 0x96, 0x65, 0x4c, 0xbb, + 0x1e, 0x9e, 0xe9, 0xf1, 0xda, 0xf0, 0x33, 0x8f, 0x84, 0x73, 0xd8, 0x7b, 0x80, 0x64, 0x16, 0xb9, + 0x04, 0xa2, 0x37, 0x35, 0xd1, 0xe3, 0x6c, 0x74, 0x3f, 0x83, 0x31, 0x86, 0x56, 0x71, 0x03, 0xb9, + 0x3f, 0xca, 0x12, 0x81, 0xb9, 0x10, 0xaf, 0xe0, 0x23, 0xfd, 0x04, 0xc6, 0xd8, 0x57, 0xa5, 0xe2, + 0xcb, 0x92, 0x5e, 0x3b, 0xfc, 0x87, 0x30, 0xbe, 0x8a, 0x83, 0x8a, 0x4b, 0xfd, 0x92, 0x7d, 0xf9, + 0x21, 0x29, 0x65, 0x82, 0xc2, 0xa4, 0xd2, 0xf7, 0xbd, 0xa5, 0x7b, 0x39, 0xf4, 0x2e, 0x3d, 0x23, + 0xa9, 0x3f, 0xf3, 0x5c, 0x88, 0xa6, 0x64, 0x46, 0x8e, 0xa0, 0x18, 0x83, 0x7f, 0x35, 0x9f, 0x23, + 0x87, 0x38, 0x11, 0xb1, 0xbb, 0x9e, 0x87, 0x1d, 0x86, 0x9c, 0x26, 0x0f, 0x25, 0x61, 0x7f, 0x46, + 0xf7, 0x47, 0x05, 0x9b, 0x99, 0xd7, 0xf7, 0x22, 0xc1, 0xf2, 0x2b, 0xdc, 0xcb, 0xa1, 0x0f, 0x60, + 0x94, 0xf7, 0x91, 0x20, 0x69, 0x9d, 0xf6, 0x33, 0x7a, 0x4d, 0x31, 0x81, 0xf1, 0x9e, 0xf6, 0x59, + 0x87, 0x49, 0xe3, 0x2e, 0xeb, 0xf3, 0x07, 0x44, 0x18, 0x68, 0xbd, 0x0a, 0x66, 0x55, 0x48, 0x05, + 0x14, 0x73, 0x41, 0x9b, 0x5b, 0x95, 0xcf, 0x99, 0x44, 0x88, 0x5c, 0x4f, 0x03, 0xc9, 0xc8, 0x78, + 0x10, 0x52, 0xae, 0xd7, 0x8a, 0x7b, 0xad, 0x94, 0x75, 0x28, 0x94, 0x9b, 0xf4, 0xb8, 0x92, 0xb9, + 0xa8, 0xe5, 0xa5, 0x2a, 0x5a, 0x21, 0x68, 0xcd, 0x45, 0x53, 0x5b, 0x6f, 0x60, 0x8b, 0xc6, 0xc9, + 0x9b, 0x97, 0xa2, 0x4f, 0xa4, 0x2a, 0x19, 0x23, 0xe3, 0x12, 0x35, 0x5b, 0x25, 0xd7, 0xbe, 0xf6, + 0xeb, 0x91, 0xf9, 0x88, 0xee, 0x74, 0x4a, 0x9e, 0xee, 0x0b, 0x51, 0x7c, 0x79, 0xdd, 0x14, 0xb6, + 0xb5, 0x12, 0xb4, 0x0c, 0xd3, 0x3c, 0x2a, 0x97, 0x64, 0x4b, 0x1a, 0x76, 0x5a, 0xf3, 0xdf, 0x85, + 0xa9, 0x15, 0x72, 0x12, 0x75, 0x5b, 0x36, 0x8b, 0x0d, 0x8a, 0xf4, 0x60, 0x8f, 0xa9, 0x88, 0x6b, + 0x22, 0xa5, 0x89, 0x92, 0xc0, 0x5a, 0x7e, 0xc3, 0xf1, 0x1c, 0xe1, 0xc5, 0x59, 0x41, 0x56, 0xcd, + 0x75, 0xcd, 0x75, 0x11, 0xf3, 0x29, 0x29, 0xa3, 0xd1, 0x0d, 0xed, 0x8a, 0x9b, 0x96, 0xf7, 0x39, + 0x41, 0xa8, 0xfd, 0x52, 0xc9, 0xce, 0x97, 0x42, 0x33, 0x3b, 0x97, 0x74, 0xea, 0xb8, 0x65, 0x34, + 0xbf, 0xc4, 0x9c, 0xcf, 0xe8, 0x1d, 0x9d, 0x7a, 0x46, 0x5e, 0xe8, 0xd4, 0x16, 0xa8, 0x0a, 0x41, + 0x4f, 0x49, 0x8c, 0xae, 0x64, 0x67, 0x4e, 0x56, 0x54, 0x08, 0x29, 0xb9, 0x8c, 0x1f, 0xd1, 0x65, + 0x16, 0xa6, 0xf0, 0x43, 0xea, 0x85, 0x3c, 0x9a, 0xc1, 0x50, 0x4a, 0x8a, 0xc9, 0x79, 0x89, 0x6b, + 0x30, 0x1d, 0xc9, 0xf8, 0x2b, 0x35, 0x47, 0xc9, 0x39, 0x87, 0x8b, 0x57, 0xd2, 0xaa, 0xa5, 0x9e, + 0xb4, 0x10, 0x4d, 0x93, 0x2a, 0x87, 0x9c, 0x92, 0xa2, 0x56, 0x0e, 0x39, 0x35, 0xbf, 0xea, 0x23, + 0x28, 0x44, 0x33, 0x34, 0x4a, 0xa2, 0x29, 0xa9, 0x1b, 0x53, 0xe7, 0xe4, 0x21, 0xcc, 0xaa, 0x33, + 0x2a, 0xc7, 0x9d, 0xb6, 0xfb, 0xa7, 0xd1, 0xd9, 0x81, 0xb9, 0xc4, 0x84, 0x8a, 0x52, 0x36, 0xc8, + 0x4a, 0xb7, 0x98, 0x4a, 0x15, 0xc3, 0x85, 0xe4, 0x9c, 0xaa, 0xe8, 0x2d, 0x5d, 0x31, 0x91, 0x9c, + 0x61, 0xb2, 0x78, 0xa3, 0x07, 0x14, 0x67, 0xe8, 0xd7, 0xf4, 0x04, 0x8c, 0xb5, 0x71, 0x4d, 0x51, + 0x55, 0xa4, 0x34, 0x60, 0x64, 0x81, 0xc8, 0x35, 0x30, 0x9b, 0x94, 0xd3, 0x39, 0x95, 0xc5, 0xd7, + 0xd3, 0x69, 0x86, 0x0b, 0x6b, 0x4f, 0x84, 0xbe, 0x4b, 0xe5, 0x4c, 0x66, 0xee, 0xcd, 0x8c, 0xbb, + 0x6e, 0x51, 0xae, 0x87, 0xfe, 0xbb, 0x9c, 0xae, 0xb7, 0x9a, 0x4d, 0xca, 0xf8, 0x1a, 0x55, 0x2b, + 0x25, 0x25, 0xf4, 0x94, 0x6c, 0xc8, 0x4c, 0x19, 0xbb, 0xc7, 0x54, 0x4c, 0x3a, 0x75, 0x55, 0xc5, + 0x94, 0x48, 0xfa, 0x6a, 0x3a, 0x40, 0xb8, 0x22, 0x12, 0x52, 0x57, 0xcb, 0x15, 0x91, 0x9e, 0x44, + 0x5b, 0xae, 0x88, 0xac, 0xcc, 0xd7, 0xa6, 0xf8, 0xe8, 0x52, 0xd8, 0x92, 0x91, 0xe7, 0x34, 0xe3, + 0x1e, 0xb7, 0x10, 0x4e, 0x5c, 0xa4, 0xdb, 0x67, 0x9d, 0xb6, 0xaf, 0xe1, 0x62, 0x6a, 0x4e, 0x53, + 0xf4, 0x76, 0xec, 0x83, 0x4e, 0xe1, 0x44, 0x7a, 0x4f, 0x27, 0xb5, 0x74, 0xa4, 0x52, 0xc7, 0x16, + 0xc9, 0x7c, 0x1a, 0xdb, 0xb1, 0x13, 0xd2, 0xa2, 0xae, 0x52, 0xc9, 0x57, 0x49, 0x6d, 0x9a, 0x3a, + 0xd6, 0xcb, 0x49, 0x74, 0xfc, 0xf8, 0x9e, 0xaa, 0xf4, 0x4b, 0x48, 0x62, 0xd1, 0x8a, 0xb3, 0xec, + 0xa9, 0xfd, 0x74, 0x2d, 0x8d, 0xce, 0x32, 0xbd, 0x47, 0x88, 0x4c, 0xa7, 0xe8, 0xa2, 0xc6, 0x26, + 0xed, 0x94, 0x2c, 0x6a, 0x83, 0xd3, 0x0f, 0xc8, 0x2a, 0x55, 0x66, 0xcb, 0xcc, 0xaa, 0xa9, 0xbd, + 0xb8, 0x14, 0xa7, 0xa1, 0x29, 0xb2, 0x25, 0x17, 0x58, 0x6f, 0x16, 0xa3, 0xcc, 0xd1, 0x3a, 0x94, + 0x3e, 0x24, 0xa4, 0xb2, 0xa6, 0x47, 0x97, 0xd2, 0x25, 0xd4, 0x19, 0x9e, 0x3d, 0x8e, 0xc6, 0xa6, + 0x16, 0xf1, 0x59, 0x2e, 0x48, 0xad, 0x9c, 0x52, 0x9a, 0xa1, 0x84, 0xa9, 0x51, 0xfb, 0xdf, 0x84, + 0x24, 0xb1, 0x72, 0x0f, 0xcd, 0xcc, 0x21, 0x9b, 0x20, 0x9d, 0xc9, 0x5d, 0x39, 0x95, 0x62, 0x66, + 0xd6, 0xd8, 0xd4, 0x9e, 0xfe, 0x50, 0xd9, 0x95, 0x63, 0xa9, 0x60, 0xd1, 0xad, 0xa8, 0x68, 0x96, + 0x96, 0x2d, 0x36, 0x63, 0xd7, 0x9f, 0x4d, 0xca, 0x22, 0xab, 0x68, 0x96, 0x53, 0x53, 0xcc, 0x26, + 0x70, 0x41, 0x6e, 0x6f, 0x29, 0xd4, 0x32, 0x72, 0xca, 0xa6, 0xf6, 0xf0, 0xfb, 0xca, 0xf6, 0x16, + 0xc9, 0xfd, 0x2a, 0x35, 0x05, 0x3d, 0x92, 0xc3, 0xa6, 0xd2, 0xde, 0xa2, 0x16, 0xe3, 0xf1, 0xc4, + 0xad, 0x52, 0x76, 0xc9, 0x4a, 0xeb, 0x9a, 0xa8, 0x78, 0x9e, 0x8b, 0x0f, 0x91, 0xd0, 0xbb, 0x10, + 0x51, 0x1b, 0xf7, 0xea, 0x98, 0xdc, 0x87, 0x13, 0x12, 0xbe, 0x46, 0xf6, 0xe1, 0xf4, 0x94, 0xb0, + 0x19, 0x17, 0x9d, 0xe9, 0xba, 0x7d, 0xe8, 0x28, 0xf9, 0x5a, 0xe5, 0x35, 0x27, 0x9e, 0x42, 0x56, + 0x6e, 0x31, 0x49, 0xe9, 0x5d, 0xb7, 0x89, 0x84, 0xc3, 0xe4, 0x73, 0x35, 0xf3, 0x26, 0x2a, 0xa6, + 0x27, 0x1c, 0x95, 0xdb, 0x4d, 0x62, 0xaa, 0x4e, 0x85, 0xa0, 0x9a, 0xf6, 0x52, 0x12, 0x4c, 0xc8, + 0xc0, 0x29, 0x09, 0x26, 0xe6, 0xc9, 0xbc, 0x4b, 0xf5, 0x2a, 0xa6, 0xdb, 0xc6, 0xaa, 0x5e, 0x45, + 0x49, 0x06, 0x19, 0x51, 0x6b, 0xa0, 0x8f, 0xa9, 0x52, 0x23, 0x5b, 0x13, 0x32, 0xaf, 0x53, 0x52, + 0x93, 0x56, 0x43, 0x98, 0x15, 0x13, 0xe9, 0x6a, 0xa6, 0x8c, 0x36, 0xdf, 0x13, 0x4a, 0x0d, 0x0d, + 0x2d, 0x96, 0x27, 0x33, 0x8a, 0xf6, 0x5d, 0x98, 0x08, 0x73, 0x62, 0xee, 0x2d, 0x29, 0x88, 0x91, + 0x44, 0x99, 0x51, 0xc4, 0x0f, 0xc4, 0x8b, 0x0a, 0x6d, 0x4f, 0xaf, 0xcc, 0xd6, 0x7f, 0x7c, 0x26, + 0x94, 0x28, 0x5a, 0x4f, 0x63, 0x19, 0x36, 0x33, 0x76, 0xde, 0x09, 0x35, 0x1d, 0x90, 0x9c, 0xd7, + 0x84, 0xec, 0x6b, 0x72, 0x5e, 0x93, 0x72, 0x9a, 0xd1, 0xde, 0xd0, 0xbb, 0xf6, 0x57, 0x42, 0x63, + 0x10, 0x12, 0xbd, 0x9c, 0x99, 0x99, 0xac, 0x78, 0x25, 0x3b, 0x9d, 0x57, 0x48, 0xba, 0x0e, 0x85, + 0x68, 0xee, 0x22, 0x94, 0x94, 0x5d, 0x4e, 0x49, 0x32, 0x25, 0xef, 0x70, 0xa9, 0x49, 0x8f, 0x6a, + 0x42, 0x6f, 0xaf, 0xd3, 0x4d, 0xc9, 0x31, 0xa6, 0x92, 0xce, 0x16, 0xab, 0xc2, 0x34, 0x46, 0xea, + 0x45, 0x38, 0x96, 0x26, 0x49, 0x15, 0xab, 0x12, 0x32, 0x1f, 0xd9, 0x22, 0xe0, 0x42, 0x72, 0x1e, + 0xd4, 0x77, 0xf4, 0x1b, 0x6a, 0x46, 0xa8, 0xca, 0x9e, 0xaf, 0xcf, 0xe8, 0x97, 0x60, 0x3e, 0x25, + 0x18, 0x20, 0xba, 0x11, 0xd1, 0x00, 0x27, 0x07, 0x0b, 0x2c, 0x66, 0xa5, 0x0b, 0x44, 0x9b, 0xd4, + 0x6c, 0x41, 0x73, 0xad, 0x8c, 0x3d, 0x05, 0xee, 0xdb, 0xc1, 0x11, 0x4b, 0x80, 0xa9, 0xec, 0x99, + 0x89, 0x3e, 0x99, 0xa8, 0x4e, 0xef, 0x1b, 0x5a, 0x69, 0xc2, 0x6b, 0x60, 0x02, 0xc1, 0x62, 0x32, + 0x41, 0x9a, 0x6e, 0xbc, 0x26, 0xde, 0x94, 0xa2, 0xdd, 0x54, 0x87, 0x9f, 0xe4, 0x4d, 0x9a, 0xda, + 0xcd, 0x9a, 0x10, 0x90, 0x92, 0x29, 0xa6, 0xbb, 0xc0, 0xa6, 0x52, 0x7c, 0x44, 0x28, 0xc6, 0xbc, + 0x5a, 0x51, 0x0a, 0x78, 0xf6, 0xee, 0x61, 0x8a, 0xf3, 0x56, 0xc7, 0x5a, 0x52, 0xfa, 0x97, 0xe6, + 0x3f, 0x9b, 0xda, 0xbf, 0x15, 0xf1, 0x3d, 0x25, 0xf7, 0xaf, 0xdf, 0x13, 0x57, 0xbe, 0xcb, 0x45, + 0x1c, 0xab, 0xb5, 0x81, 0x2a, 0xe5, 0xc5, 0x94, 0x72, 0xb4, 0x45, 0xed, 0x90, 0xa2, 0xa5, 0xca, + 0xc5, 0x33, 0xd9, 0x73, 0x3b, 0x95, 0x1e, 0x5b, 0xc7, 0x9a, 0xe7, 0xeb, 0x59, 0xd6, 0x71, 0xc4, + 0x65, 0x96, 0xaf, 0x63, 0xad, 0xf4, 0x6c, 0xeb, 0x38, 0x42, 0x50, 0x5f, 0xc7, 0xd1, 0x6e, 0x46, + 0x2f, 0xf2, 0xa9, 0xb3, 0x1a, 0xed, 0xa6, 0x5c, 0xc7, 0xc9, 0x14, 0xd3, 0x3d, 0x94, 0x53, 0x29, + 0xca, 0x75, 0xac, 0x53, 0x4c, 0x01, 0xef, 0x73, 0x1d, 0x47, 0x1b, 0xd1, 0xd7, 0xf1, 0x99, 0xfa, + 0x27, 0xd7, 0x71, 0x72, 0xff, 0xce, 0xbc, 0x8e, 0x23, 0x2e, 0xfd, 0xda, 0x40, 0x93, 0xd6, 0x71, + 0x14, 0x9e, 0xad, 0xe3, 0x68, 0x69, 0x44, 0x81, 0x92, 0xb1, 0x8e, 0xa3, 0x98, 0x5f, 0x50, 0x7a, + 0x11, 0x77, 0xe4, 0x7e, 0x56, 0x72, 0xaa, 0x27, 0x33, 0xda, 0xa7, 0xda, 0xbb, 0x48, 0x79, 0x7f, + 0xab, 0x79, 0x31, 0x8d, 0x28, 0x5d, 0xcf, 0x7b, 0x82, 0x89, 0xd1, 0xee, 0xea, 0xaa, 0xa9, 0x64, + 0x6f, 0xec, 0x8c, 0x0e, 0xef, 0x91, 0x75, 0xd3, 0xca, 0xa0, 0x9b, 0xe5, 0x4c, 0x9e, 0x41, 0x57, + 0xde, 0x63, 0xa2, 0x74, 0x53, 0x51, 0xb2, 0xd7, 0xf7, 0x97, 0xe2, 0xfd, 0x22, 0x8a, 0xb7, 0x14, + 0xb9, 0x19, 0x9d, 0xb9, 0xa7, 0xf2, 0x86, 0x14, 0xed, 0xe9, 0x59, 0xd7, 0xf9, 0xa6, 0x90, 0x1e, + 0x62, 0x51, 0x28, 0x22, 0x83, 0x56, 0xd7, 0x7a, 0x6a, 0x0d, 0xda, 0xa1, 0xaa, 0xda, 0x78, 0xb9, + 0xa2, 0xe6, 0x4d, 0x0b, 0x77, 0xd1, 0x93, 0x6a, 0xcc, 0x9f, 0x5e, 0xa5, 0x9a, 0xe6, 0x6c, 0x2f, + 0xa9, 0xc6, 0xb1, 0x3f, 0xa7, 0xaa, 0x2f, 0xee, 0x00, 0xe4, 0x3c, 0x71, 0xd3, 0xef, 0x29, 0x33, + 0x9a, 0xad, 0x14, 0x81, 0xa5, 0x26, 0x6a, 0x9f, 0xf0, 0x07, 0x3a, 0x51, 0x98, 0xca, 0xfc, 0x24, + 0x7c, 0xf4, 0x39, 0x14, 0xf8, 0xf6, 0x16, 0x12, 0x48, 0x02, 0x4c, 0x9d, 0xba, 0x8a, 0xd0, 0xb8, + 0xf5, 0xd1, 0x83, 0x7e, 0x34, 0x6d, 0xfd, 0x70, 0x22, 0x5d, 0x2d, 0x45, 0x8e, 0xc3, 0x1d, 0xaf, + 0xeb, 0x07, 0xb8, 0x15, 0x57, 0x27, 0xe9, 0x9d, 0x11, 0x16, 0x1b, 0x3a, 0xf8, 0xde, 0x12, 0x5a, + 0xa7, 0x7b, 0x9b, 0x5e, 0x9c, 0xa5, 0x6f, 0x4b, 0x26, 0x43, 0xb7, 0x9e, 0x35, 0xe9, 0x69, 0xa2, + 0xf7, 0x29, 0xad, 0xed, 0xf4, 0x4e, 0x49, 0x16, 0xf5, 0x39, 0xba, 0x34, 0x16, 0xb1, 0x0b, 0x31, + 0xd3, 0xfd, 0xf5, 0xe2, 0x4c, 0xd4, 0xf7, 0x05, 0x7d, 0x0f, 0xc6, 0x04, 0x72, 0x6f, 0x86, 0x44, + 0xb1, 0x29, 0x43, 0x96, 0x61, 0x52, 0x73, 0xec, 0x91, 0xb7, 0x9b, 0x24, 0x77, 0x9f, 0x8c, 0x79, + 0x9e, 0xd4, 0x1c, 0x78, 0x24, 0x95, 0x24, 0xb7, 0x9e, 0x54, 0x2a, 0x9f, 0xc2, 0x38, 0x67, 0x69, + 0x26, 0x37, 0xd2, 0x95, 0x6d, 0x73, 0x8a, 0x41, 0x74, 0xb7, 0x65, 0x07, 0x55, 0xd7, 0x79, 0x62, + 0x1f, 0xf6, 0x64, 0x4c, 0x1c, 0x65, 0x6f, 0x09, 0xed, 0xd1, 0x2c, 0x6f, 0x22, 0xf7, 0x1e, 0x0e, + 0x9e, 0xbb, 0xde, 0x53, 0xdb, 0x39, 0xec, 0x41, 0xf2, 0xaa, 0x4e, 0x32, 0x8a, 0xc7, 0xe8, 0xd6, + 0xd3, 0xe9, 0xf6, 0xc4, 0xcf, 0x50, 0xb6, 0x2d, 0x52, 0x5b, 0x9e, 0xb3, 0xf6, 0x38, 0xfd, 0xe1, + 0xf1, 0x62, 0x68, 0x4a, 0x6c, 0xe2, 0xa6, 0xeb, 0xb5, 0x7a, 0x13, 0x2b, 0xe9, 0x86, 0xbb, 0x11, + 0xb4, 0xbd, 0x25, 0x42, 0xb5, 0x9e, 0x4a, 0xb5, 0x17, 0x76, 0xc6, 0x69, 0x75, 0x89, 0x8e, 0xfd, + 0x8c, 0xbd, 0xcd, 0xde, 0xb5, 0xc8, 0x49, 0x53, 0xf3, 0xf0, 0x13, 0xec, 0x51, 0x7b, 0xf0, 0x5e, + 0x96, 0xd0, 0x3a, 0xf8, 0xde, 0x12, 0xa1, 0x52, 0x8f, 0x51, 0x49, 0x83, 0xce, 0x52, 0xc9, 0xd3, + 0xa1, 0xf5, 0xd9, 0x9b, 0x34, 0x32, 0x1f, 0xd0, 0x27, 0x8f, 0xdd, 0xf5, 0x1e, 0x1c, 0x11, 0x1e, + 0x0a, 0x02, 0x70, 0xef, 0x3e, 0xc1, 0xac, 0x2b, 0x98, 0x71, 0x88, 0xd4, 0x36, 0xbf, 0x27, 0xde, + 0x36, 0x7a, 0x36, 0x9b, 0x46, 0xe1, 0x01, 0xdd, 0xde, 0xb8, 0x11, 0xb4, 0xa2, 0x15, 0xd4, 0xf2, + 0xab, 0x16, 0x27, 0x55, 0x7b, 0x68, 0x1f, 0x95, 0xd9, 0x8d, 0x4e, 0xcd, 0xc4, 0xaa, 0x58, 0x43, + 0x24, 0xa6, 0x68, 0x8d, 0x92, 0x60, 0x5a, 0xcd, 0x0d, 0xb7, 0xf9, 0x54, 0xd5, 0x6a, 0x2a, 0xa9, + 0x3d, 0x8b, 0x7a, 0xe2, 0x4d, 0xbe, 0x89, 0xd3, 0xec, 0x9b, 0xaa, 0xa9, 0x96, 0x9a, 0xdc, 0x53, + 0xd5, 0x6a, 0xea, 0x69, 0x48, 0x1f, 0x08, 0x75, 0x21, 0x6d, 0x50, 0xa7, 0x9c, 0xca, 0x1a, 0xa9, + 0x29, 0xa4, 0x48, 0xba, 0xa6, 0x50, 0xed, 0x68, 0xfa, 0x76, 0x81, 0xe2, 0x79, 0x48, 0xe5, 0xfd, + 0x23, 0x35, 0x45, 0x69, 0x86, 0xc5, 0xd5, 0x4c, 0x42, 0xc2, 0x65, 0x79, 0x63, 0x4b, 0x4f, 0xc6, + 0x5c, 0xd4, 0xcd, 0x87, 0xee, 0xe5, 0xd0, 0x16, 0x5c, 0x58, 0xc5, 0x01, 0xdf, 0xc0, 0x4c, 0xec, + 0x07, 0x9e, 0xdd, 0x0c, 0x32, 0x1f, 0xfa, 0xc4, 0x75, 0x23, 0x01, 0x67, 0xef, 0x5d, 0x42, 0xaf, + 0x9e, 0x4c, 0x2f, 0x13, 0x2f, 0xc3, 0x1a, 0x97, 0xbf, 0x1e, 0x9c, 0xa5, 0x8b, 0xe9, 0x4b, 0x7c, + 0x84, 0xd9, 0xcc, 0xa4, 0xa3, 0x16, 0xc2, 0xb0, 0xfa, 0xfc, 0x02, 0x75, 0x07, 0xce, 0x31, 0xa4, + 0xd4, 0x33, 0x72, 0x42, 0xc5, 0x41, 0xf7, 0x85, 0xd9, 0x26, 0x41, 0xd1, 0xaa, 0x52, 0xfb, 0x75, + 0x1f, 0xc6, 0xd8, 0x6d, 0xa9, 0x7f, 0x94, 0x8f, 0x85, 0x71, 0x67, 0x56, 0xc7, 0xd2, 0x90, 0x3f, + 0x87, 0x49, 0xd5, 0x5e, 0xe6, 0xec, 0x8c, 0xfc, 0x94, 0x3e, 0xc7, 0x8a, 0x57, 0x8f, 0x74, 0xfc, + 0xb9, 0x48, 0xaa, 0x05, 0xce, 0x52, 0xb6, 0x41, 0xca, 0xcc, 0xe5, 0x69, 0xdd, 0x3f, 0x1f, 0xc3, + 0x46, 0x1f, 0x0b, 0xdf, 0x28, 0x89, 0x1c, 0x07, 0xca, 0xe0, 0xd9, 0x14, 0x63, 0xf3, 0xab, 0x20, + 0xcb, 0x0d, 0xb6, 0x67, 0xb7, 0xfb, 0x79, 0x36, 0xee, 0xcd, 0xba, 0x34, 0x2a, 0xdb, 0x54, 0xf0, + 0x8a, 0x25, 0x01, 0x49, 0x27, 0x74, 0x25, 0x3d, 0x6f, 0x08, 0x9d, 0x8c, 0x47, 0xf4, 0x62, 0x17, + 0xcf, 0x42, 0x9f, 0x36, 0xbc, 0x8c, 0x3c, 0x24, 0xe1, 0x4d, 0x36, 0x4e, 0x2e, 0x03, 0x2d, 0xeb, + 0x62, 0xcc, 0xbd, 0x35, 0xdf, 0x08, 0xb9, 0x75, 0x61, 0x76, 0xd8, 0xff, 0x60, 0x33, 0x84, 0xa0, + 0x84, 0x87, 0xea, 0x9e, 0x73, 0x91, 0x46, 0xee, 0x97, 0xa8, 0xfc, 0x97, 0x9c, 0x44, 0x3a, 0x95, + 0xd8, 0x2d, 0xc5, 0xd6, 0x21, 0x3b, 0xfd, 0xf4, 0x53, 0xea, 0x74, 0x96, 0x9c, 0x26, 0xe5, 0x66, + 0x0f, 0x2a, 0x82, 0x13, 0x6f, 0xf7, 0x84, 0x93, 0xcf, 0x9e, 0x97, 0xd8, 0x09, 0x9b, 0xdc, 0x5e, + 0x8f, 0xb4, 0x2f, 0x09, 0x2f, 0xd1, 0x29, 0x19, 0x9a, 0x05, 0x41, 0xdd, 0xa6, 0x33, 0x73, 0x0c, + 0x69, 0xec, 0xff, 0x02, 0x4a, 0xa1, 0x41, 0xc7, 0xd9, 0x26, 0x21, 0x5d, 0xa2, 0x47, 0xf1, 0xbc, + 0xd5, 0x28, 0x2b, 0x32, 0x7d, 0xf1, 0x5a, 0x1a, 0x87, 0x7d, 0xc5, 0x52, 0x88, 0x9b, 0xa2, 0x45, + 0x12, 0x06, 0xa5, 0xa5, 0x1e, 0xca, 0x50, 0xad, 0x72, 0x2f, 0xbc, 0x37, 0x42, 0x28, 0x3e, 0xdb, + 0x67, 0x27, 0x24, 0xed, 0x2d, 0x22, 0x84, 0x8c, 0x8c, 0xe9, 0x3d, 0x8b, 0x39, 0x59, 0x74, 0x2a, + 0xce, 0x3a, 0xa1, 0x56, 0xe8, 0x79, 0x16, 0x4f, 0xae, 0x2d, 0x65, 0xb9, 0xd4, 0x44, 0xdf, 0x72, + 0x76, 0x33, 0x32, 0x73, 0x57, 0xc9, 0x67, 0xca, 0x9a, 0xd0, 0x32, 0xfb, 0x56, 0xcd, 0x8d, 0x50, + 0x53, 0x90, 0x90, 0xf2, 0xb7, 0x08, 0xa2, 0xd2, 0xdc, 0x40, 0x75, 0x11, 0x56, 0x35, 0x29, 0x06, + 0x8a, 0xf4, 0xb2, 0x49, 0xaa, 0xcc, 0xb8, 0x5d, 0xd4, 0x45, 0x20, 0xd5, 0x37, 0x49, 0xb4, 0x01, + 0xf3, 0x29, 0x91, 0x63, 0xe4, 0xa3, 0x69, 0x76, 0x64, 0x99, 0x62, 0x76, 0xc3, 0xe8, 0x07, 0x30, + 0x97, 0x18, 0x5a, 0x46, 0x2a, 0x7e, 0xb3, 0x02, 0xcf, 0xf4, 0x22, 0xfe, 0x14, 0x16, 0xd2, 0xd2, + 0xf0, 0x86, 0x5e, 0x3f, 0xd9, 0xb9, 0x91, 0xe5, 0x9e, 0xda, 0x33, 0x9f, 0xef, 0x16, 0xcc, 0x26, + 0xa5, 0xb6, 0x95, 0x1f, 0x47, 0x46, 0xde, 0xdb, 0x44, 0xd7, 0xa2, 0x1a, 0xcc, 0x25, 0xa6, 0x97, + 0x95, 0x9c, 0xc9, 0x4a, 0x3e, 0x9b, 0x48, 0xf1, 0x4b, 0x98, 0x4f, 0xc9, 0xa5, 0x1a, 0xbe, 0x80, + 0x67, 0xe6, 0x5a, 0xcd, 0xb0, 0x1f, 0x2a, 0xa6, 0xa7, 0xe9, 0x94, 0x66, 0x63, 0x3d, 0x33, 0x79, + 0x16, 0x13, 0x73, 0x17, 0xa3, 0x1d, 0xba, 0x08, 0x93, 0xf2, 0x76, 0xaa, 0x8b, 0x30, 0x23, 0xaf, + 0x67, 0x8a, 0x4b, 0xd8, 0x7c, 0x4a, 0xaa, 0xce, 0x0c, 0xaa, 0x7d, 0xf4, 0x76, 0x4b, 0xec, 0xff, + 0x7a, 0x2e, 0xc4, 0x88, 0x29, 0x72, 0x62, 0xa2, 0xc4, 0xc4, 0x7e, 0x2a, 0xb1, 0x14, 0xda, 0xed, + 0x0c, 0x31, 0x08, 0xa9, 0xc1, 0x14, 0x08, 0x24, 0xd5, 0x9d, 0x4f, 0xaa, 0xb8, 0x59, 0x3b, 0x6a, + 0x0c, 0x99, 0x0a, 0x9e, 0x1f, 0xc1, 0x44, 0x5d, 0x6d, 0x3c, 0xa1, 0x91, 0xd4, 0x45, 0x21, 0x7d, + 0x6b, 0x7a, 0xf7, 0x3d, 0x43, 0xd9, 0x23, 0x0f, 0x87, 0xbe, 0x46, 0x91, 0x6a, 0xb1, 0xa2, 0xa5, + 0x2b, 0x91, 0x3b, 0x75, 0x52, 0x26, 0x20, 0x69, 0xb1, 0x92, 0x9c, 0xe1, 0xa4, 0xc1, 0x02, 0xac, + 0x47, 0x13, 0x3d, 0x21, 0xa3, 0x77, 0x02, 0x33, 0x69, 0x69, 0x9e, 0x99, 0x29, 0x8a, 0x99, 0xd7, + 0x84, 0x09, 0x5a, 0x54, 0xf3, 0x9a, 0x58, 0xda, 0x17, 0xd5, 0xbc, 0x26, 0x21, 0xa7, 0xcb, 0x0a, + 0xa5, 0x15, 0x46, 0xa6, 0xcf, 0x50, 0x18, 0x48, 0x32, 0x09, 0x01, 0xf0, 0x1f, 0xab, 0x21, 0x39, + 0x58, 0x3c, 0xfb, 0x0c, 0x8d, 0x67, 0x34, 0x14, 0x47, 0x24, 0x00, 0xfe, 0x23, 0x28, 0x44, 0x63, + 0x79, 0x49, 0x75, 0x54, 0x4a, 0x90, 0xaf, 0x8c, 0x25, 0x06, 0x61, 0xc4, 0x2e, 0xa9, 0xf4, 0x89, + 0x05, 0xf1, 0x2a, 0x5e, 0x4c, 0xa8, 0x91, 0xe2, 0xda, 0x84, 0x1a, 0xdf, 0x4b, 0x5a, 0x88, 0x25, + 0x04, 0xfd, 0x2a, 0x5e, 0x4a, 0xac, 0xe3, 0x84, 0x02, 0x96, 0x7b, 0x2f, 0x39, 0x73, 0x5f, 0xe8, + 0xd6, 0x94, 0x01, 0x23, 0x9a, 0xb9, 0xdd, 0x0f, 0x28, 0x6f, 0x15, 0xcb, 0x78, 0xfa, 0x71, 0x28, + 0xf4, 0x76, 0x82, 0xfb, 0x81, 0x06, 0x11, 0x1a, 0x4f, 0x85, 0x8f, 0xe8, 0x49, 0xd9, 0x09, 0xd1, + 0xbe, 0x88, 0x6f, 0x9e, 0xd2, 0x52, 0x2f, 0x02, 0xa9, 0x33, 0xb8, 0x2f, 0x22, 0x9a, 0xbf, 0x69, + 0xc2, 0x07, 0xb0, 0x18, 0xf1, 0x6e, 0xd0, 0x09, 0xdf, 0x4e, 0x76, 0x81, 0x48, 0x64, 0x4f, 0xba, + 0x3c, 0x7c, 0x35, 0xee, 0x0a, 0x11, 0x99, 0xf7, 0xb3, 0xee, 0x55, 0x9b, 0x30, 0x45, 0xb7, 0x07, + 0x91, 0x6f, 0x32, 0x8c, 0xe4, 0xa2, 0x17, 0x47, 0x43, 0x0a, 0x45, 0x6b, 0xa5, 0x1b, 0xf8, 0x04, + 0x77, 0x91, 0x65, 0xd9, 0x2b, 0x8b, 0xba, 0xdf, 0x2c, 0x2d, 0x4c, 0x3a, 0x7d, 0x78, 0x52, 0x4c, + 0xf4, 0x29, 0x4c, 0x87, 0x9e, 0xb3, 0x8c, 0x44, 0x02, 0x58, 0x86, 0x12, 0x6a, 0x3a, 0x74, 0x9f, + 0x3d, 0x3b, 0xfa, 0x9a, 0x38, 0x42, 0x42, 0xf4, 0xcb, 0x31, 0xaf, 0x10, 0x6d, 0x0c, 0xfd, 0x9c, + 0x24, 0x0a, 0x6f, 0xcf, 0x3a, 0x3b, 0x4d, 0xfa, 0xb9, 0x25, 0x07, 0xae, 0x53, 0x3f, 0xb7, 0xcc, + 0xe0, 0x7a, 0x52, 0x6c, 0x4d, 0xa1, 0xb3, 0x09, 0xd7, 0x69, 0x60, 0x93, 0x1a, 0x76, 0x5a, 0xb6, + 0x73, 0x98, 0x0c, 0x95, 0xde, 0xf7, 0x68, 0x38, 0x94, 0x36, 0x5c, 0xeb, 0x19, 0xb9, 0x0f, 0xdd, + 0xd5, 0x2c, 0x42, 0x7a, 0xc7, 0xf8, 0xcb, 0xf2, 0xc4, 0x4a, 0x0a, 0x80, 0x27, 0xcf, 0xc7, 0x8c, + 0x58, 0x7c, 0xf2, 0x7c, 0xcc, 0x8c, 0xa0, 0xf7, 0x25, 0x4d, 0x1a, 0xc0, 0xcf, 0x16, 0x1a, 0xac, + 0x08, 0x3b, 0x2c, 0xa4, 0x6f, 0xe6, 0x93, 0xca, 0x35, 0xfd, 0x21, 0x31, 0x86, 0x48, 0xef, 0x22, + 0x57, 0xf8, 0x0d, 0x2a, 0x8d, 0x78, 0x6f, 0x22, 0x19, 0x96, 0xc8, 0x57, 0xd8, 0x02, 0x3c, 0x73, + 0xcf, 0x53, 0xca, 0x2b, 0xcb, 0x3f, 0xfd, 0xf3, 0x2b, 0xb9, 0x9f, 0xfe, 0xec, 0x4a, 0xee, 0xdf, + 0xfe, 0xec, 0x4a, 0xee, 0x3f, 0xfe, 0xec, 0x4a, 0xee, 0xfb, 0x4b, 0xfd, 0x05, 0x96, 0x6d, 0xb6, + 0x6d, 0xec, 0x04, 0x77, 0x19, 0xb9, 0x73, 0xf4, 0xbf, 0x07, 0xff, 0x2b, 0x00, 0x00, 0xff, 0xff, + 0xc5, 0x47, 0x96, 0xba, 0xea, 0xdb, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -34350,6 +34362,11 @@ func (m *CreateAuthenticateChallengeRequest) MarshalToSizedBuffer(dAtA []byte) ( i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.Scope != 0 { + i = encodeVarintAuthservice(dAtA, i, uint64(m.Scope)) + i-- + dAtA[i] = 0x30 + } if m.MFARequiredCheck != nil { { size, err := m.MFARequiredCheck.MarshalToSizedBuffer(dAtA[:i]) @@ -41597,6 +41614,9 @@ func (m *CreateAuthenticateChallengeRequest) Size() (n int) { l = m.MFARequiredCheck.Size() n += 1 + l + sovAuthservice(uint64(l)) } + if m.Scope != 0 { + n += 1 + sovAuthservice(uint64(m.Scope)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -62317,6 +62337,25 @@ func (m *CreateAuthenticateChallengeRequest) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Scope", wireType) + } + m.Scope = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Scope |= webauthn.ChallengeScope(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) diff --git a/api/proto/teleport/legacy/client/proto/authservice.proto b/api/proto/teleport/legacy/client/proto/authservice.proto index 3581feccc8320..4b7d3a2748751 100644 --- a/api/proto/teleport/legacy/client/proto/authservice.proto +++ b/api/proto/teleport/legacy/client/proto/authservice.proto @@ -1839,6 +1839,9 @@ message CreateAuthenticateChallengeRequest { // If you are issuing challenges from the root cluster, but accessing a leaf, // call [AuthService.IsMFARequired] in the leaf instead of setting this field. IsMFARequiredRequest MFARequiredCheck = 5 [(gogoproto.jsontag) = "mfa_required_check,omitempty"]; + // Scope is a authorization scope for this MFA challenge. + // Required. Only applies to webauthn challenges. + webauthn.ChallengeScope Scope = 6 [(gogoproto.jsontag) = "scope,omitempty"]; } // CreatePrivilegeTokenRequest defines a request to obtain a privilege token. diff --git a/api/proto/teleport/legacy/types/webauthn/webauthn.proto b/api/proto/teleport/legacy/types/webauthn/webauthn.proto index 8b3f0c4a8dfe0..ba04b6287495a 100644 --- a/api/proto/teleport/legacy/types/webauthn/webauthn.proto +++ b/api/proto/teleport/legacy/types/webauthn/webauthn.proto @@ -56,6 +56,39 @@ message SessionData { // "required". // An empty value is treated equivalently to "discouraged". string user_verification = 5 [(gogoproto.jsontag) = "userVerification,omitempty"]; + // Scope authorized by this webauthn session. + ChallengeScope scope = 6 [(gogoproto.jsontag) = "scope,omitempty"]; +} + +// ChallengeScope is a scope authorized by a webauthn challenge's resolution. +enum ChallengeScope { + // Invalid, scope should always be specified. + CHALLENGE_SCOPE_UNSPECIFIED = 0; + // Standard webauthn login. + CHALLENGE_SCOPE_LOGIN = 1; + // Passwordless webauthn login. + CHALLENGE_SCOPE_PASSWORDLESS_LOGIN = 2; + // MFA device management. + CHALLENGE_SCOPE_MANAGE_DEVICES = 3; + // Account recovery. + CHALLENGE_SCOPE_RECOVERY = 4; + // Used for per-session MFA and moderated session presence checks. + CHALLENGE_SCOPE_SESSION = 5; + // Headless login approval. + CHALLENGE_SCOPE_HEADLESS = 6; + // Used for various administrative actions, such as adding, updating, or + // deleting administrative resources (users, roles, etc.). + // + // Note: this scope should not be used for new MFA capabilities that have + // more precise scope. Instead, new scopes should be added. This scope may + // also be split into multiple smaller scopes in the future. + CHALLENGE_SCOPE_ADMIN_ACTION = 7; + // Webauthn credentials resolved from a challenge with this scope can be + // reused for a short span of time before the challenge expires. + // + // This scope for a select few admin actions and will be rejected by other + // admin actions. See the server implementation for details. + CHALLENGE_SCOPE_ADMIN_ACTION_WITH_REUSE = 8; } // User represents a WebAuthn user. diff --git a/api/types/webauthn/webauthn.pb.go b/api/types/webauthn/webauthn.pb.go index 35fdb48a7605a..73a7c37ea8e09 100644 --- a/api/types/webauthn/webauthn.pb.go +++ b/api/types/webauthn/webauthn.pb.go @@ -39,6 +39,71 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +// ChallengeScope is a scope authorized by a webauthn challenge's resolution. +type ChallengeScope int32 + +const ( + // Invalid, scope should always be specified. + ChallengeScope_CHALLENGE_SCOPE_UNSPECIFIED ChallengeScope = 0 + // Standard webauthn login. + ChallengeScope_CHALLENGE_SCOPE_LOGIN ChallengeScope = 1 + // Passwordless webauthn login. + ChallengeScope_CHALLENGE_SCOPE_PASSWORDLESS_LOGIN ChallengeScope = 2 + // MFA device management. + ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES ChallengeScope = 3 + // Account recovery. + ChallengeScope_CHALLENGE_SCOPE_RECOVERY ChallengeScope = 4 + // Used for per-session MFA and moderated session presence checks. + ChallengeScope_CHALLENGE_SCOPE_SESSION ChallengeScope = 5 + // Headless login approval. + ChallengeScope_CHALLENGE_SCOPE_HEADLESS ChallengeScope = 6 + // Used for various administrative actions, such as adding, updating, or + // deleting administrative resources (users, roles, etc.). + // + // Note: this scope should not be used for new MFA capabilities that have + // more precise scope. Instead, new scopes should be added. This scope may + // also be split into multiple smaller scopes in the future. + ChallengeScope_CHALLENGE_SCOPE_ADMIN_ACTION ChallengeScope = 7 + // Webauthn credentials resolved from a challenge with this scope can be + // reused for a short span of time before the challenge expires. + // + // This scope for a select few admin actions and will be rejected by other + // admin actions. See the server implementation for details. + ChallengeScope_CHALLENGE_SCOPE_ADMIN_ACTION_WITH_REUSE ChallengeScope = 8 +) + +var ChallengeScope_name = map[int32]string{ + 0: "CHALLENGE_SCOPE_UNSPECIFIED", + 1: "CHALLENGE_SCOPE_LOGIN", + 2: "CHALLENGE_SCOPE_PASSWORDLESS_LOGIN", + 3: "CHALLENGE_SCOPE_MANAGE_DEVICES", + 4: "CHALLENGE_SCOPE_RECOVERY", + 5: "CHALLENGE_SCOPE_SESSION", + 6: "CHALLENGE_SCOPE_HEADLESS", + 7: "CHALLENGE_SCOPE_ADMIN_ACTION", + 8: "CHALLENGE_SCOPE_ADMIN_ACTION_WITH_REUSE", +} + +var ChallengeScope_value = map[string]int32{ + "CHALLENGE_SCOPE_UNSPECIFIED": 0, + "CHALLENGE_SCOPE_LOGIN": 1, + "CHALLENGE_SCOPE_PASSWORDLESS_LOGIN": 2, + "CHALLENGE_SCOPE_MANAGE_DEVICES": 3, + "CHALLENGE_SCOPE_RECOVERY": 4, + "CHALLENGE_SCOPE_SESSION": 5, + "CHALLENGE_SCOPE_HEADLESS": 6, + "CHALLENGE_SCOPE_ADMIN_ACTION": 7, + "CHALLENGE_SCOPE_ADMIN_ACTION_WITH_REUSE": 8, +} + +func (x ChallengeScope) String() string { + return proto.EnumName(ChallengeScope_name, int32(x)) +} + +func (ChallengeScope) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_0d490a6db28e8798, []int{0} +} + // SessionData stored by the Relying Party during authentication ceremonies. // Mirrors https://pkg.go.dev/github.com/go-webauthn/webauthn/webauthn#SessionData. type SessionData struct { @@ -53,10 +118,12 @@ type SessionData struct { // Requested user verification requirement, either "discouraged" or // "required". // An empty value is treated equivalently to "discouraged". - UserVerification string `protobuf:"bytes,5,opt,name=user_verification,json=userVerification,proto3" json:"userVerification,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + UserVerification string `protobuf:"bytes,5,opt,name=user_verification,json=userVerification,proto3" json:"userVerification,omitempty"` + // Scope authorized by this webauthn session. + Scope ChallengeScope `protobuf:"varint,6,opt,name=scope,proto3,enum=webauthn.ChallengeScope" json:"scope,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *SessionData) Reset() { *m = SessionData{} } @@ -127,6 +194,13 @@ func (m *SessionData) GetUserVerification() string { return "" } +func (m *SessionData) GetScope() ChallengeScope { + if m != nil { + return m.Scope + } + return ChallengeScope_CHALLENGE_SCOPE_UNSPECIFIED +} + // User represents a WebAuthn user. // Used mainly to correlated a WebAuthn user handle with a Teleport user. type User struct { @@ -1220,6 +1294,7 @@ func (m *UserEntity) GetDisplayName() string { } func init() { + proto.RegisterEnum("webauthn.ChallengeScope", ChallengeScope_name, ChallengeScope_value) proto.RegisterType((*SessionData)(nil), "webauthn.SessionData") proto.RegisterType((*User)(nil), "webauthn.User") proto.RegisterType((*CredentialAssertion)(nil), "webauthn.CredentialAssertion") @@ -1244,75 +1319,87 @@ func init() { } var fileDescriptor_0d490a6db28e8798 = []byte{ - // 1073 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x5b, 0x6f, 0x1b, 0x45, - 0x14, 0xd6, 0xda, 0xeb, 0xd4, 0x3e, 0x36, 0x95, 0x3b, 0x71, 0x5b, 0x53, 0x5a, 0xc7, 0x5d, 0x40, - 0xb2, 0xc8, 0xc5, 0x28, 0x88, 0x07, 0x28, 0x17, 0xe5, 0x52, 0x44, 0x12, 0xb5, 0x89, 0xb6, 0x02, - 0x09, 0x5e, 0x56, 0xe3, 0xdd, 0x83, 0x3d, 0x65, 0xbd, 0xbb, 0x9d, 0x99, 0x6d, 0x6a, 0xf1, 0x93, - 0x78, 0xe3, 0x89, 0x37, 0x5e, 0x91, 0x78, 0xe1, 0x17, 0x84, 0x2a, 0x8f, 0xf9, 0x15, 0x68, 0x67, - 0xaf, 0xb6, 0x37, 0x4d, 0x00, 0x89, 0xb7, 0xd9, 0x73, 0xce, 0x77, 0x66, 0xe6, 0x7c, 0xe7, 0x3b, - 0x3b, 0xb0, 0x29, 0xd1, 0xc5, 0xc0, 0xe7, 0x72, 0xe8, 0xe2, 0x98, 0xda, 0xb3, 0xa1, 0x9c, 0x05, - 0x28, 0x86, 0xa7, 0x38, 0xa2, 0xa1, 0x9c, 0x78, 0xd9, 0x62, 0x2b, 0xe0, 0xbe, 0xf4, 0x49, 0x3d, - 0xfd, 0xbe, 0xd7, 0x19, 0xfb, 0x63, 0x5f, 0x19, 0x87, 0xd1, 0x2a, 0xf6, 0x1b, 0x7f, 0x54, 0xa0, - 0xf9, 0x0c, 0x85, 0x60, 0xbe, 0xb7, 0x4f, 0x25, 0x25, 0x1f, 0x43, 0xc3, 0x9e, 0x50, 0xd7, 0x45, - 0x6f, 0x8c, 0x5d, 0xad, 0xaf, 0x0d, 0x5a, 0xbb, 0x77, 0x2f, 0xce, 0xd6, 0x56, 0x33, 0xe3, 0x86, - 0x3f, 0x65, 0x12, 0xa7, 0x81, 0x9c, 0x99, 0x79, 0x24, 0xd9, 0x84, 0x1b, 0xa1, 0x40, 0x6e, 0x31, - 0xa7, 0x5b, 0x51, 0xa0, 0xce, 0xc5, 0xd9, 0x5a, 0x3b, 0x32, 0x1d, 0x38, 0x05, 0xc4, 0x4a, 0x6c, - 0x21, 0x47, 0x70, 0x8b, 0xba, 0xae, 0x7f, 0x6a, 0xd9, 0x1c, 0x1d, 0xf4, 0x24, 0xa3, 0xae, 0xe8, - 0x56, 0xfb, 0xd5, 0x41, 0x6b, 0xb7, 0x77, 0x71, 0xb6, 0x76, 0x4f, 0x39, 0xf7, 0x72, 0x5f, 0x21, - 0x45, 0x7b, 0xd1, 0x47, 0x3e, 0x83, 0x16, 0x47, 0xc1, 0xa2, 0x6f, 0xeb, 0x47, 0x9c, 0x75, 0xf5, - 0xbe, 0x36, 0xa8, 0xef, 0xbe, 0x7d, 0x71, 0xb6, 0x76, 0x3b, 0xb5, 0x1f, 0xe1, 0xac, 0x90, 0xa2, - 0x59, 0x30, 0x47, 0x47, 0x51, 0x27, 0x7f, 0x89, 0x9c, 0xfd, 0xc0, 0x6c, 0x2a, 0x99, 0xef, 0x75, - 0x6b, 0x7d, 0x6d, 0xd0, 0x88, 0x8f, 0x12, 0x39, 0xbf, 0x2d, 0xf8, 0x8a, 0x47, 0x59, 0xf4, 0x19, - 0xeb, 0xa0, 0x7f, 0x23, 0x90, 0x93, 0x77, 0xe1, 0xad, 0x94, 0x26, 0x2b, 0x0a, 0x52, 0x95, 0x6c, - 0x98, 0xad, 0xd4, 0x18, 0x05, 0x19, 0x14, 0x56, 0xf3, 0x6b, 0xec, 0x08, 0x81, 0x3c, 0xca, 0x41, - 0x0e, 0x01, 0x82, 0x70, 0xe4, 0x32, 0x5b, 0x5d, 0x26, 0x02, 0x36, 0xb7, 0xd7, 0xb7, 0x32, 0x5a, - 0x4f, 0x94, 0xef, 0x08, 0x67, 0x39, 0xd6, 0xc4, 0x17, 0x21, 0x0a, 0x79, 0x1c, 0x44, 0x78, 0x61, - 0x36, 0x82, 0x34, 0xc4, 0xf8, 0xad, 0x02, 0x0f, 0xaf, 0x04, 0x90, 0xfb, 0x4b, 0x9c, 0x17, 0xa9, - 0x7d, 0x00, 0x20, 0xd9, 0x14, 0xfd, 0x50, 0x5a, 0x53, 0xa1, 0xd8, 0xad, 0x9a, 0x8d, 0xc4, 0xf2, - 0x44, 0x90, 0x55, 0xa8, 0xf1, 0x20, 0xe2, 0xbd, 0xaa, 0xae, 0xa8, 0xf3, 0xe0, 0x32, 0x7e, 0xf5, - 0x7e, 0x75, 0xd0, 0xdc, 0xee, 0xe5, 0x57, 0xc9, 0x0f, 0xb4, 0x8f, 0xc2, 0xe6, 0x2c, 0x90, 0x3e, - 0x2f, 0xe1, 0xf7, 0x29, 0x00, 0xbe, 0x92, 0xe8, 0x45, 0x3d, 0x2a, 0x14, 0x35, 0xcd, 0xed, 0xad, - 0x3c, 0xcb, 0x4e, 0x28, 0x27, 0x51, 0x68, 0x4c, 0xc1, 0xe3, 0x2c, 0x72, 0xcf, 0x65, 0xe8, 0xc9, - 0x03, 0x2f, 0x08, 0xa5, 0x30, 0x0b, 0x19, 0xc8, 0x7a, 0x19, 0xe3, 0x2b, 0xea, 0xf4, 0xcb, 0x8c, - 0xfe, 0xa5, 0xc1, 0x3b, 0x25, 0x2c, 0x99, 0x28, 0x02, 0xdf, 0x13, 0x48, 0x08, 0xe8, 0x91, 0x00, - 0x13, 0x82, 0xd5, 0x9a, 0xdc, 0x86, 0x15, 0x4e, 0x4f, 0x33, 0x2d, 0x98, 0x35, 0x4e, 0x4f, 0x0f, - 0x1c, 0xb2, 0x0f, 0x75, 0x9e, 0xc0, 0x54, 0xb1, 0x9a, 0xdb, 0x83, 0xd2, 0x5b, 0xf8, 0x7c, 0x69, - 0x1b, 0x33, 0x43, 0x92, 0xe3, 0xb9, 0x6a, 0xe8, 0x2a, 0xcf, 0xf0, 0xba, 0xd5, 0x38, 0x0e, 0xe5, - 0x62, 0x39, 0x8c, 0x5f, 0x35, 0xe8, 0xbd, 0x79, 0x77, 0x32, 0x80, 0xb6, 0xad, 0xf0, 0x96, 0x43, - 0x25, 0xb5, 0x9e, 0x0b, 0xdf, 0x4b, 0xfa, 0xe4, 0x66, 0x6c, 0x8f, 0x46, 0xc7, 0xa1, 0xf0, 0x3d, - 0xb2, 0x09, 0x84, 0x16, 0x73, 0x29, 0x40, 0x52, 0x86, 0x5b, 0x73, 0x1e, 0x35, 0x6d, 0xee, 0x43, - 0x43, 0xb0, 0xb1, 0x47, 0x65, 0xc8, 0xe3, 0x9a, 0xb4, 0xcc, 0xdc, 0x40, 0xd6, 0xa0, 0xa9, 0x88, - 0x9a, 0x50, 0xcf, 0x71, 0x51, 0xdd, 0xb5, 0x65, 0x42, 0x64, 0xfa, 0x5a, 0x59, 0x0c, 0x0a, 0x24, - 0xe7, 0x66, 0x8f, 0xa3, 0xba, 0x33, 0x39, 0x2a, 0x11, 0xd0, 0xc6, 0x1b, 0x05, 0x94, 0x42, 0x4b, - 0x14, 0xf4, 0xb3, 0x0e, 0xc6, 0xd5, 0x88, 0x2b, 0x24, 0xb4, 0x01, 0x15, 0x1e, 0xa8, 0x2a, 0x34, - 0xb7, 0xef, 0xe7, 0x27, 0x31, 0xd1, 0x9d, 0x31, 0x6f, 0x7c, 0x42, 0xb9, 0x9c, 0x3d, 0xf6, 0x24, - 0x93, 0x33, 0xb3, 0xc2, 0x03, 0x32, 0x00, 0x5d, 0xcd, 0x8c, 0xb8, 0x47, 0x3a, 0x79, 0x7c, 0x34, - 0x35, 0x92, 0x38, 0x15, 0x41, 0x4c, 0xb8, 0x9d, 0x0b, 0xcc, 0x0a, 0x28, 0xa7, 0x53, 0x94, 0xc8, - 0x53, 0xa9, 0x3d, 0x28, 0x93, 0xda, 0x49, 0x1a, 0x65, 0x76, 0xec, 0x65, 0xa3, 0x58, 0x90, 0x7b, - 0x6d, 0x51, 0xee, 0xc7, 0xb0, 0x8a, 0xaf, 0x6c, 0x37, 0x74, 0x70, 0x4e, 0xdb, 0x2b, 0xd7, 0xd2, - 0x36, 0x49, 0xa0, 0x45, 0x75, 0xf7, 0xa1, 0x49, 0xa5, 0x44, 0x21, 0x63, 0x1d, 0xde, 0x50, 0x3a, - 0x2a, 0x9a, 0x16, 0xf4, 0x5f, 0xff, 0xcf, 0xfa, 0xff, 0x0e, 0xee, 0xce, 0xf7, 0xa8, 0x40, 0x17, - 0x6d, 0xb5, 0x7b, 0x43, 0x25, 0xef, 0x5f, 0x22, 0xcb, 0x67, 0x69, 0x9c, 0x79, 0x87, 0x96, 0xda, - 0x8d, 0xd7, 0x1a, 0xdc, 0x5b, 0x6e, 0x92, 0x7f, 0x33, 0x2c, 0xbe, 0x5a, 0x1a, 0x16, 0x1f, 0x5c, - 0x36, 0x2c, 0xf2, 0x52, 0xfd, 0x1f, 0xe3, 0xe2, 0x27, 0xe8, 0x5f, 0xb5, 0xfd, 0x3f, 0x9c, 0x17, - 0x79, 0x02, 0xcb, 0x1f, 0x3d, 0x47, 0x5b, 0x66, 0xf3, 0x22, 0xf7, 0x1c, 0x2b, 0x87, 0xf1, 0x39, - 0xbc, 0x77, 0x1d, 0xba, 0xa3, 0xa2, 0xd2, 0x40, 0xfd, 0x95, 0xe2, 0x52, 0xd7, 0x68, 0x10, 0x1c, - 0x38, 0xc6, 0x17, 0xf0, 0xfe, 0xb5, 0x2e, 0xbc, 0x80, 0xaf, 0xa7, 0xf8, 0x5f, 0x34, 0xb8, 0x53, - 0xde, 0x11, 0xe4, 0x13, 0xe8, 0xce, 0x37, 0x15, 0x95, 0x92, 0xda, 0x93, 0x29, 0x7a, 0x32, 0x39, - 0xc3, 0x7c, 0xd3, 0xed, 0x64, 0x6e, 0xf2, 0x21, 0x74, 0x38, 0xbe, 0x08, 0x19, 0x47, 0x6b, 0xee, - 0x1d, 0x53, 0x51, 0x5b, 0x93, 0xc4, 0x67, 0x16, 0xde, 0x2c, 0xa5, 0x7f, 0xb0, 0xea, 0x25, 0x7f, - 0xb0, 0x4f, 0xa1, 0x53, 0x26, 0xc6, 0xd2, 0x66, 0xbc, 0x09, 0x95, 0xac, 0x11, 0x2b, 0xcc, 0x31, - 0x1e, 0x15, 0x9f, 0x28, 0xd9, 0x90, 0x28, 0x85, 0xb6, 0xa1, 0x4a, 0xdd, 0xb1, 0xc2, 0xd6, 0xcc, - 0x68, 0x69, 0xec, 0x03, 0x59, 0x9e, 0x70, 0xc9, 0x16, 0x31, 0xb2, 0xc2, 0x9c, 0x28, 0x97, 0x47, - 0xa7, 0xa8, 0x80, 0x0d, 0x53, 0xad, 0x0f, 0xf5, 0x7a, 0xb5, 0xad, 0x9b, 0x3a, 0xb3, 0x7d, 0xcf, - 0xb0, 0x00, 0xf2, 0xb9, 0x57, 0x40, 0xb7, 0x2e, 0x43, 0x93, 0x87, 0xd0, 0x72, 0x98, 0x08, 0x5c, - 0x3a, 0xb3, 0x94, 0x2f, 0x2e, 0x4c, 0x33, 0xb1, 0x3d, 0x8d, 0x37, 0xd0, 0xdb, 0xb5, 0x78, 0x83, - 0xdd, 0x27, 0xbf, 0x9f, 0xf7, 0xb4, 0x3f, 0xcf, 0x7b, 0xda, 0xeb, 0xf3, 0x9e, 0xf6, 0xfd, 0x97, - 0x63, 0x26, 0x27, 0xe1, 0x68, 0xcb, 0xf6, 0xa7, 0xc3, 0x31, 0xa7, 0x2f, 0x59, 0xdc, 0x7f, 0xd4, - 0x1d, 0x66, 0xef, 0x6e, 0x1a, 0xb0, 0x85, 0x47, 0xf7, 0xa3, 0x74, 0x11, 0x8c, 0x46, 0x2b, 0xea, - 0x5d, 0xfd, 0xd1, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x89, 0xb7, 0x8c, 0x49, 0xa8, 0x0b, 0x00, - 0x00, + // 1272 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcd, 0x72, 0xdb, 0x46, + 0x12, 0x5e, 0x90, 0x20, 0x4d, 0x36, 0xb9, 0x5a, 0x78, 0x24, 0xd9, 0xb4, 0x2d, 0x93, 0x34, 0x76, + 0x37, 0x61, 0x59, 0xb6, 0x98, 0x52, 0x2a, 0x87, 0xc4, 0xf9, 0x29, 0x8a, 0x84, 0x2d, 0x5a, 0x12, + 0xa9, 0x02, 0xfc, 0x53, 0xce, 0x05, 0x35, 0x02, 0x27, 0x14, 0x1c, 0x10, 0x80, 0x67, 0x86, 0x96, + 0x59, 0x79, 0x89, 0xbc, 0x47, 0x6e, 0x39, 0xe5, 0x96, 0x1c, 0x73, 0xcc, 0x13, 0x28, 0x2e, 0x1f, + 0xf5, 0x14, 0x29, 0x0c, 0x48, 0x02, 0x04, 0x21, 0x4b, 0x49, 0xaa, 0x72, 0x1b, 0xf6, 0xd7, 0x5f, + 0x4f, 0xa3, 0xbb, 0xbf, 0x26, 0x00, 0xf7, 0x39, 0x71, 0x88, 0xef, 0x51, 0xde, 0x74, 0xc8, 0x10, + 0x5b, 0x93, 0x26, 0x9f, 0xf8, 0x84, 0x35, 0x4f, 0xc8, 0x11, 0x1e, 0xf3, 0x63, 0x77, 0x7e, 0xd8, + 0xf2, 0xa9, 0xc7, 0x3d, 0x54, 0x98, 0xfd, 0xbe, 0xb9, 0x36, 0xf4, 0x86, 0x9e, 0x30, 0x36, 0x83, + 0x53, 0x88, 0xab, 0xdf, 0x67, 0xa1, 0x64, 0x10, 0xc6, 0x6c, 0xcf, 0xed, 0x60, 0x8e, 0xd1, 0x27, + 0x50, 0xb4, 0x8e, 0xb1, 0xe3, 0x10, 0x77, 0x48, 0x2a, 0x52, 0x5d, 0x6a, 0x94, 0x77, 0xae, 0x9f, + 0x9d, 0xd6, 0x56, 0xe7, 0xc6, 0x7b, 0xde, 0xc8, 0xe6, 0x64, 0xe4, 0xf3, 0x89, 0x1e, 0x79, 0xa2, + 0xfb, 0x70, 0x65, 0xcc, 0x08, 0x35, 0xed, 0x41, 0x25, 0x23, 0x48, 0x6b, 0x67, 0xa7, 0x35, 0x25, + 0x30, 0x75, 0x07, 0x31, 0x46, 0x3e, 0xb4, 0xa0, 0x3d, 0xb8, 0x8a, 0x1d, 0xc7, 0x3b, 0x31, 0x2d, + 0x4a, 0x06, 0xc4, 0xe5, 0x36, 0x76, 0x58, 0x25, 0x5b, 0xcf, 0x36, 0xca, 0x3b, 0xd5, 0xb3, 0xd3, + 0xda, 0x4d, 0x01, 0xb6, 0x23, 0x2c, 0x16, 0x42, 0x49, 0x62, 0xe8, 0x73, 0x28, 0x53, 0xc2, 0xec, + 0xe0, 0xb7, 0xf9, 0x2d, 0x99, 0x54, 0xe4, 0xba, 0xd4, 0x28, 0xec, 0xdc, 0x38, 0x3b, 0xad, 0xad, + 0xcf, 0xec, 0x7b, 0x64, 0x12, 0x0b, 0x51, 0x8a, 0x99, 0x83, 0x54, 0x44, 0xe6, 0xaf, 0x09, 0xb5, + 0xbf, 0xb1, 0x2d, 0xcc, 0x6d, 0xcf, 0xad, 0xe4, 0xea, 0x52, 0xa3, 0x18, 0xa6, 0x12, 0x80, 0xcf, + 0x62, 0x58, 0x3c, 0x95, 0x24, 0x86, 0xda, 0x90, 0x63, 0x96, 0xe7, 0x93, 0x4a, 0xbe, 0x2e, 0x35, + 0x56, 0xb6, 0x2b, 0x5b, 0xf3, 0x6e, 0xb4, 0x67, 0xa5, 0x32, 0x02, 0x7c, 0x67, 0xf5, 0xec, 0xb4, + 0xf6, 0x1f, 0xe1, 0x1a, 0x8b, 0x17, 0x72, 0xd5, 0x4d, 0x90, 0x9f, 0x32, 0x42, 0xd1, 0x7f, 0xe1, + 0xdf, 0xb3, 0x5e, 0x9b, 0xc1, 0x4d, 0xa2, 0x1d, 0x45, 0xbd, 0x3c, 0x33, 0x06, 0x4e, 0x2a, 0x86, + 0xd5, 0xa8, 0x16, 0x2d, 0xc6, 0x08, 0x15, 0x89, 0x3c, 0x06, 0xf0, 0xc7, 0x47, 0x8e, 0x6d, 0x89, + 0x8a, 0x04, 0xc4, 0xd2, 0xf6, 0x66, 0x94, 0xcd, 0xa1, 0xc0, 0xf6, 0xc8, 0x24, 0xe2, 0xea, 0xe4, + 0xd5, 0x98, 0x30, 0xde, 0xf7, 0x03, 0x3e, 0xd3, 0x8b, 0xfe, 0xcc, 0x45, 0xfd, 0x39, 0x03, 0x77, + 0x2e, 0x24, 0xa0, 0x8d, 0xa5, 0xc1, 0x89, 0xcf, 0xc7, 0x6d, 0x00, 0x6e, 0x8f, 0x88, 0x37, 0xe6, + 0xe6, 0x88, 0x89, 0x11, 0xc9, 0xea, 0xc5, 0xa9, 0xe5, 0x80, 0xa1, 0x55, 0xc8, 0x51, 0x3f, 0x18, + 0x9e, 0xac, 0x78, 0x44, 0x99, 0xfa, 0xe7, 0x0d, 0x89, 0x5c, 0xcf, 0x36, 0x4a, 0xdb, 0xd5, 0x58, + 0x61, 0xe7, 0x60, 0x87, 0x30, 0x8b, 0xda, 0x3e, 0xf7, 0x68, 0xca, 0x90, 0xf4, 0x00, 0xc8, 0x1b, + 0x4e, 0xdc, 0x60, 0xd0, 0x99, 0xe8, 0x6f, 0x69, 0x7b, 0x2b, 0x8a, 0xd2, 0x1a, 0xf3, 0xe3, 0xc0, + 0x35, 0xec, 0xa3, 0x36, 0xf7, 0x6c, 0x3b, 0x36, 0x71, 0x79, 0xd7, 0xf5, 0xc7, 0x9c, 0xe9, 0xb1, + 0x08, 0x68, 0x33, 0x6d, 0x6c, 0xf2, 0x22, 0xfb, 0xa5, 0xb1, 0x50, 0x7f, 0x97, 0xe0, 0x56, 0x4a, + 0x97, 0x74, 0xc2, 0x7c, 0xcf, 0x65, 0x04, 0x21, 0x90, 0x03, 0x15, 0x4f, 0x1b, 0x2c, 0xce, 0x68, + 0x1d, 0xf2, 0x14, 0x9f, 0xcc, 0x05, 0xa5, 0xe7, 0x28, 0x3e, 0xe9, 0x0e, 0x50, 0x07, 0x0a, 0x74, + 0x4a, 0x13, 0xc5, 0x2a, 0x6d, 0x37, 0x52, 0x9f, 0xc2, 0xa3, 0x4b, 0xd7, 0xe8, 0x73, 0x26, 0xea, + 0x2f, 0x54, 0x43, 0x16, 0x71, 0x9a, 0x97, 0xad, 0x46, 0x7f, 0xcc, 0x93, 0xe5, 0x50, 0x7f, 0x92, + 0xa0, 0xfa, 0xfe, 0xdb, 0x51, 0x03, 0x14, 0x4b, 0xf0, 0xcd, 0x01, 0xe6, 0xd8, 0x7c, 0xc9, 0x3c, + 0x77, 0x3a, 0x27, 0x2b, 0xa1, 0x3d, 0xd8, 0x3f, 0x8f, 0x99, 0xe7, 0xa2, 0xfb, 0x80, 0x70, 0x3c, + 0x96, 0x20, 0x4c, 0xcb, 0x70, 0x75, 0x01, 0x11, 0x2b, 0x6b, 0x03, 0x8a, 0xcc, 0x1e, 0xba, 0x98, + 0x8f, 0x69, 0x58, 0x93, 0xb2, 0x1e, 0x19, 0x50, 0x0d, 0x4a, 0xa2, 0x51, 0xc7, 0xd8, 0x1d, 0x38, + 0x44, 0x3c, 0x6b, 0x59, 0x87, 0xc0, 0xb4, 0x2b, 0x2c, 0x2a, 0x06, 0x14, 0xf5, 0xa6, 0x4d, 0x49, + 0xa8, 0xe4, 0xbd, 0x14, 0x01, 0xdd, 0x7b, 0xaf, 0x80, 0x66, 0xd4, 0x14, 0x05, 0xfd, 0x20, 0x83, + 0x7a, 0x31, 0xe3, 0x02, 0x09, 0xdd, 0x83, 0x0c, 0xf5, 0x45, 0x15, 0x4a, 0xdb, 0x1b, 0x51, 0x26, + 0x3a, 0x71, 0x26, 0xb6, 0x3b, 0x3c, 0xc4, 0x94, 0x4f, 0x34, 0x97, 0xdb, 0x7c, 0xa2, 0x67, 0xa8, + 0x8f, 0x1a, 0x20, 0x8b, 0x9d, 0x11, 0xce, 0xc8, 0x5a, 0xe4, 0x1f, 0x6c, 0x8d, 0xa9, 0x9f, 0xf0, + 0x40, 0x3a, 0xac, 0x47, 0x02, 0x33, 0x7d, 0x4c, 0xf1, 0x88, 0x70, 0x42, 0x67, 0x52, 0xbb, 0x9d, + 0x26, 0xb5, 0xc3, 0x99, 0x97, 0xbe, 0x66, 0x2d, 0x1b, 0x59, 0x42, 0xee, 0xb9, 0xa4, 0xdc, 0xfb, + 0xb0, 0x4a, 0xde, 0x58, 0xce, 0x78, 0x40, 0x16, 0xb4, 0x9d, 0xbf, 0x94, 0xb6, 0xd1, 0x94, 0x1a, + 0x57, 0x77, 0x1d, 0x4a, 0x98, 0x73, 0xc2, 0x78, 0xa8, 0xc3, 0x2b, 0x42, 0x47, 0x71, 0x53, 0x42, + 0xff, 0x85, 0xbf, 0xad, 0xff, 0x17, 0x70, 0x7d, 0x71, 0x46, 0x19, 0x71, 0x88, 0x25, 0x6e, 0x2f, + 0x8a, 0xe0, 0xf5, 0x73, 0x64, 0x69, 0xcc, 0xfc, 0xf4, 0x6b, 0x38, 0xd5, 0xae, 0xbe, 0x95, 0xe0, + 0xe6, 0xf2, 0x90, 0xfc, 0x95, 0x65, 0xf1, 0x70, 0x69, 0x59, 0xdc, 0x3d, 0x6f, 0x59, 0x44, 0xa5, + 0xfa, 0x27, 0xd6, 0xc5, 0x77, 0x50, 0xbf, 0xe8, 0xfa, 0x3f, 0xb9, 0x2f, 0xa2, 0x00, 0xa6, 0x77, + 0xf4, 0x92, 0x58, 0x7c, 0xbe, 0x2f, 0x22, 0xa4, 0x2f, 0x00, 0xf5, 0x0b, 0xf8, 0xdf, 0x65, 0xda, + 0x1d, 0x14, 0x15, 0xfb, 0xe2, 0x5f, 0x29, 0x2c, 0x75, 0x0e, 0xfb, 0x7e, 0x77, 0xa0, 0x7e, 0x09, + 0xff, 0xbf, 0xd4, 0x03, 0x27, 0xf8, 0x85, 0x19, 0xff, 0x47, 0x09, 0xae, 0xa5, 0x4f, 0x04, 0xfa, + 0x14, 0x2a, 0x8b, 0x43, 0x85, 0x39, 0xc7, 0xd6, 0xf1, 0x88, 0xb8, 0x7c, 0x9a, 0xc3, 0xe2, 0xd0, + 0xb5, 0xe6, 0x30, 0xfa, 0x08, 0xd6, 0x28, 0x79, 0x35, 0xb6, 0x29, 0x31, 0x17, 0x5e, 0x86, 0x32, + 0xe2, 0x6a, 0x34, 0xc5, 0xf4, 0xd8, 0x8b, 0x4f, 0xea, 0x3f, 0x58, 0xf6, 0x9c, 0x7f, 0xb0, 0xcf, + 0x60, 0x2d, 0x4d, 0x8c, 0xa9, 0xc3, 0xb8, 0x02, 0x99, 0xf9, 0x20, 0x66, 0xec, 0x81, 0xfa, 0x20, + 0xfe, 0x8a, 0x32, 0x5f, 0x12, 0xa9, 0x54, 0x05, 0xb2, 0xd8, 0x19, 0x0a, 0x6e, 0x4e, 0x0f, 0x8e, + 0x6a, 0x07, 0xd0, 0xf2, 0x86, 0x9b, 0x5e, 0x11, 0x32, 0x33, 0xf6, 0x20, 0x88, 0xe5, 0xe2, 0x11, + 0x11, 0xc4, 0xa2, 0x2e, 0xce, 0x8f, 0xe5, 0x42, 0x56, 0x91, 0x75, 0xd9, 0xb6, 0x3c, 0x57, 0x35, + 0x01, 0xa2, 0xbd, 0x17, 0x63, 0x97, 0xcf, 0x63, 0xa3, 0x3b, 0x50, 0x1e, 0xd8, 0xcc, 0x77, 0xf0, + 0xc4, 0x14, 0x58, 0x58, 0x98, 0xd2, 0xd4, 0xd6, 0x0b, 0x2f, 0x90, 0x95, 0x5c, 0x78, 0xc1, 0xdd, + 0x5f, 0x32, 0xb0, 0xb2, 0xf8, 0x8a, 0x87, 0x6a, 0x70, 0xab, 0xbd, 0xdb, 0xda, 0xdf, 0xd7, 0x7a, + 0x8f, 0x34, 0xd3, 0x68, 0xf7, 0x0f, 0x35, 0xf3, 0x69, 0xcf, 0x38, 0xd4, 0xda, 0xdd, 0x87, 0x5d, + 0xad, 0xa3, 0xfc, 0x0b, 0xdd, 0x80, 0xf5, 0xa4, 0xc3, 0x7e, 0xff, 0x51, 0xb7, 0xa7, 0x48, 0xe8, + 0x03, 0x50, 0x93, 0xd0, 0x61, 0xcb, 0x30, 0x9e, 0xf7, 0xf5, 0xce, 0xbe, 0x66, 0x18, 0x53, 0xbf, + 0x0c, 0x52, 0xa1, 0x9a, 0xf4, 0x3b, 0x68, 0xf5, 0x5a, 0x8f, 0x34, 0xb3, 0xa3, 0x3d, 0xeb, 0xb6, + 0x35, 0x43, 0xc9, 0xa2, 0x0d, 0xa8, 0x24, 0x7d, 0x74, 0xad, 0xdd, 0x7f, 0xa6, 0xe9, 0x2f, 0x14, + 0x19, 0xdd, 0x82, 0xeb, 0x49, 0xd4, 0xd0, 0x0c, 0xa3, 0xdb, 0xef, 0x29, 0xb9, 0x34, 0xea, 0xae, + 0xd6, 0x12, 0x29, 0x28, 0x79, 0x54, 0x87, 0x8d, 0x24, 0xda, 0xea, 0x1c, 0x74, 0x7b, 0x66, 0xab, + 0xfd, 0x24, 0xe0, 0x5f, 0x41, 0x9b, 0xf0, 0xe1, 0xfb, 0x3c, 0xcc, 0xe7, 0xdd, 0x27, 0xbb, 0xa6, + 0xae, 0x3d, 0x35, 0x34, 0xa5, 0xb0, 0x73, 0xf0, 0xeb, 0xbb, 0xaa, 0xf4, 0xdb, 0xbb, 0xaa, 0xf4, + 0xf6, 0x5d, 0x55, 0xfa, 0xfa, 0xab, 0xa1, 0xcd, 0x8f, 0xc7, 0x47, 0x5b, 0x96, 0x37, 0x6a, 0x0e, + 0x29, 0x7e, 0x6d, 0x87, 0x12, 0xc6, 0x4e, 0x73, 0xfe, 0xfd, 0x83, 0x7d, 0x3b, 0xf1, 0xf1, 0xf3, + 0x60, 0x76, 0xf0, 0x8f, 0x8e, 0xf2, 0xe2, 0xfb, 0xe6, 0xe3, 0x3f, 0x02, 0x00, 0x00, 0xff, 0xff, + 0x01, 0x80, 0x7b, 0x22, 0x30, 0x0d, 0x00, 0x00, } func (m *SessionData) Marshal() (dAtA []byte, err error) { @@ -1339,6 +1426,11 @@ func (m *SessionData) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.Scope != 0 { + i = encodeVarintWebauthn(dAtA, i, uint64(m.Scope)) + i-- + dAtA[i] = 0x30 + } if len(m.UserVerification) > 0 { i -= len(m.UserVerification) copy(dAtA[i:], m.UserVerification) @@ -2250,6 +2342,9 @@ func (m *SessionData) Size() (n int) { if l > 0 { n += 1 + l + sovWebauthn(uint64(l)) } + if m.Scope != 0 { + n += 1 + sovWebauthn(uint64(m.Scope)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -2820,6 +2915,25 @@ func (m *SessionData) Unmarshal(dAtA []byte) error { } m.UserVerification = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Scope", wireType) + } + m.Scope = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowWebauthn + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Scope |= ChallengeScope(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipWebauthn(dAtA[iNdEx:]) diff --git a/e b/e index e5a5a0e9ecd7e..812779fb8f6b0 160000 --- a/e +++ b/e @@ -1 +1 @@ -Subproject commit e5a5a0e9ecd7e12b28f8acf7b81df31591017c55 +Subproject commit 812779fb8f6b0a62ca5cc662da3da8151b3a7052 diff --git a/lib/auth/accountrecovery.go b/lib/auth/accountrecovery.go index 051114c4e73e1..acda85b12ab31 100644 --- a/lib/auth/accountrecovery.go +++ b/lib/auth/accountrecovery.go @@ -32,6 +32,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" apiutils "github.com/gravitational/teleport/api/utils" "github.com/gravitational/teleport/lib/authz" "github.com/gravitational/teleport/lib/defaults" @@ -264,8 +265,8 @@ func (a *Server) VerifyAccountRecovery(ctx context.Context, req *proto.VerifyAcc } if err := a.verifyAuthnWithRecoveryLock(ctx, startToken, func() error { - _, _, err := a.ValidateMFAAuthResponse( - ctx, req.GetMFAAuthenticateResponse(), startToken.GetUser(), false /* passwordless */) + _, _, err := a.ValidateMFAAuthResponseWithScope( + ctx, req.GetMFAAuthenticateResponse(), startToken.GetUser(), webauthnpb.ChallengeScope_CHALLENGE_SCOPE_RECOVERY) return err }); err != nil { return nil, trace.Wrap(err) diff --git a/lib/auth/api.go b/lib/auth/api.go index 8e5203ec07787..a385b2ec79e7c 100644 --- a/lib/auth/api.go +++ b/lib/auth/api.go @@ -28,6 +28,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/api/types/discoveryconfig" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/lib/events" "github.com/gravitational/teleport/lib/services" ) @@ -90,9 +91,11 @@ type accessPoint interface { // ConnectionDiagnosticTraceAppender adds a method to append traces into ConnectionDiagnostics. services.ConnectionDiagnosticTraceAppender - // ValidateMFAAuthResponse validates an MFA or passwordless challenge. - // Returns the device used to solve the challenge (if applicable) and the username. - ValidateMFAAuthResponse(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, passwordless bool) (*types.MFADevice, string, error) + // ValidateMFAAuthResponseWithScope validates an MFA challenge response. If the challenge + // response if of type webauthn, this also validates that the challenge response satisfies + // the given scope. Returns the device used to solve the challenge (if applicable) and the + // username. + ValidateMFAAuthResponseWithScope(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, requiredScope webauthnpb.ChallengeScope) (*types.MFADevice, string, error) } // ReadNodeAccessPoint is a read only API interface implemented by a certificate authority (CA) to be diff --git a/lib/auth/assist/assistv1/test/service_test.go b/lib/auth/assist/assistv1/test/service_test.go index 87a3870b67724..0f6f46dc68ad8 100644 --- a/lib/auth/assist/assistv1/test/service_test.go +++ b/lib/auth/assist/assistv1/test/service_test.go @@ -34,6 +34,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" assistpb "github.com/gravitational/teleport/api/gen/proto/go/assist/v1" "github.com/gravitational/teleport/api/types" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/api/utils/retryutils" "github.com/gravitational/teleport/lib/ai" "github.com/gravitational/teleport/lib/assist" @@ -321,7 +322,7 @@ type testClient struct { services.UserGetter } -func (c *testClient) ValidateMFAAuthResponse(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, passwordless bool) (*types.MFADevice, string, error) { +func (c *testClient) ValidateMFAAuthResponseWithScope(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, scope webauthnpb.ChallengeScope) (*types.MFADevice, string, error) { return nil, "", nil } diff --git a/lib/auth/auth.go b/lib/auth/auth.go index aec475ad1f803..b21e6c535aeb3 100644 --- a/lib/auth/auth.go +++ b/lib/auth/auth.go @@ -70,6 +70,7 @@ import ( "github.com/gravitational/teleport/api/metadata" "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/api/types/wrappers" apiutils "github.com/gravitational/teleport/api/utils" "github.com/gravitational/teleport/api/utils/keys" @@ -2877,11 +2878,12 @@ func (a *Server) PreAuthenticatedSignIn(ctx context.Context, user string, identi // CreateAuthenticateChallenge implements AuthService.CreateAuthenticateChallenge. func (a *Server) CreateAuthenticateChallenge(ctx context.Context, req *proto.CreateAuthenticateChallengeRequest) (*proto.MFAAuthenticateChallenge, error) { var username string - var passwordless bool + scope := req.GetScope() switch req.GetRequest().(type) { case *proto.CreateAuthenticateChallengeRequest_UserCredentials: username = req.GetUserCredentials().GetUsername() + scope = webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN if err := a.WithUserLock(ctx, username, func() error { return a.checkPasswordWOToken(username, req.GetUserCredentials().GetPassword()) @@ -2901,11 +2903,13 @@ func (a *Server) CreateAuthenticateChallenge(ctx context.Context, req *proto.Cre } username = token.GetUser() + scope = webauthnpb.ChallengeScope_CHALLENGE_SCOPE_RECOVERY case *proto.CreateAuthenticateChallengeRequest_Passwordless: - passwordless = true // Allows empty username. + scope = webauthnpb.ChallengeScope_CHALLENGE_SCOPE_PASSWORDLESS_LOGIN default: // unset or CreateAuthenticateChallengeRequest_ContextUser. + // TODO(Joerger): in v16.0.0, require scope to be specified in the request. var err error username, err = authz.GetClientUsername(ctx) if err != nil { @@ -2913,7 +2917,7 @@ func (a *Server) CreateAuthenticateChallenge(ctx context.Context, req *proto.Cre } } - challenges, err := a.mfaAuthChallenge(ctx, username, passwordless) + challenges, err := a.mfaAuthChallenge(ctx, username, scope) if err != nil { log.Error(trace.DebugReport(err)) return nil, trace.AccessDenied("unable to create MFA challenges") @@ -3155,8 +3159,8 @@ func (a *Server) DeleteMFADeviceSync(ctx context.Context, req *proto.DeleteMFADe return trace.Wrap(err) } - if _, _, err := a.ValidateMFAAuthResponse( - ctx, req.ExistingMFAResponse, user, false, /* passwordless */ + if _, _, err := a.ValidateMFAAuthResponseWithScope( + ctx, req.ExistingMFAResponse, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES, ); err != nil { return trace.Wrap(err) } @@ -5637,7 +5641,7 @@ func (a *Server) isMFARequired(ctx context.Context, checker services.AccessCheck // mfaAuthChallenge constructs an MFAAuthenticateChallenge for all MFA devices // registered by the user. -func (a *Server) mfaAuthChallenge(ctx context.Context, user string, passwordless bool) (*proto.MFAAuthenticateChallenge, error) { +func (a *Server) mfaAuthChallenge(ctx context.Context, user string, scope webauthnpb.ChallengeScope) (*proto.MFAAuthenticateChallenge, error) { // Check what kind of MFA is enabled. apref, err := a.GetAuthPreference(ctx) if err != nil { @@ -5666,7 +5670,7 @@ func (a *Server) mfaAuthChallenge(ctx context.Context, user string, passwordless } // Handle passwordless separately, it works differently from MFA. - if passwordless { + if scope == webauthnpb.ChallengeScope_CHALLENGE_SCOPE_PASSWORDLESS_LOGIN { if !enableWebauthn { return nil, trace.BadParameter("passwordless requires WebAuthn") } @@ -5707,7 +5711,7 @@ func (a *Server) mfaAuthChallenge(ctx context.Context, user string, passwordless Webauthn: webConfig, Identity: wanlib.WithDevices(a.Services, groupedDevs.Webauthn), } - assertion, err := webLogin.Begin(ctx, user) + assertion, err := webLogin.Begin(ctx, user, scope) if err != nil { return nil, trace.Wrap(err) } @@ -5781,8 +5785,8 @@ func (a *Server) validateMFAAuthResponseForRegister( } if err := a.WithUserLock(ctx, username, func() error { - _, _, err := a.ValidateMFAAuthResponse( - ctx, resp, username, false /* passwordless */) + _, _, err := a.ValidateMFAAuthResponseWithScope( + ctx, resp, username, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES) return err }); err != nil { return false, trace.Wrap(err) @@ -5791,12 +5795,15 @@ func (a *Server) validateMFAAuthResponseForRegister( return true, nil } -// ValidateMFAAuthResponse validates an MFA or passwordless challenge. -// Returns the device used to solve the challenge (if applicable) and the +// ValidateMFAAuthResponseWithScope validates an MFA challenge response. If the challenge +// response if of type webauthn, this also validates that the challenge response satisfies +// the given scope. Returns the device used to solve the challenge (if applicable) and the // username. -func (a *Server) ValidateMFAAuthResponse(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, passwordless bool) (*types.MFADevice, string, error) { +func (a *Server) ValidateMFAAuthResponseWithScope(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, requiredScope webauthnpb.ChallengeScope) (*types.MFADevice, string, error) { + isPasswordless := requiredScope == webauthnpb.ChallengeScope_CHALLENGE_SCOPE_PASSWORDLESS_LOGIN + // Sanity check user/passwordless. - if user == "" && !passwordless { + if user == "" && !isPasswordless { return nil, "", trace.BadParameter("user required") } @@ -5821,7 +5828,7 @@ func (a *Server) ValidateMFAAuthResponse(ctx context.Context, resp *proto.MFAAut assertionResp := wantypes.CredentialAssertionResponseFromProto(res.Webauthn) var dev *types.MFADevice - if passwordless { + if isPasswordless { webLogin := &wanlib.PasswordlessFlow{ Webauthn: webConfig, Identity: a.Services, @@ -5833,7 +5840,7 @@ func (a *Server) ValidateMFAAuthResponse(ctx context.Context, resp *proto.MFAAut Webauthn: webConfig, Identity: a.Services, } - dev, err = webLogin.Finish(ctx, user, wantypes.CredentialAssertionResponseFromProto(res.Webauthn)) + dev, err = webLogin.Finish(ctx, user, wantypes.CredentialAssertionResponseFromProto(res.Webauthn), requiredScope) } if err != nil { return nil, "", trace.AccessDenied("MFA response validation failed: %v", err) diff --git a/lib/auth/auth_login_test.go b/lib/auth/auth_login_test.go index 65ae15ba4e15b..a1bcdc293162a 100644 --- a/lib/auth/auth_login_test.go +++ b/lib/auth/auth_login_test.go @@ -33,6 +33,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/constants" "github.com/gravitational/teleport/api/types" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/lib/auth/mocku2f" wantypes "github.com/gravitational/teleport/lib/auth/webauthntypes" "github.com/gravitational/teleport/lib/defaults" @@ -185,14 +186,16 @@ func TestCreateAuthenticateChallenge_WithAuth(t *testing.T) { clt, err := srv.NewClient(TestUser(u.username)) require.NoError(t, err) - res, err := clt.CreateAuthenticateChallenge(ctx, &proto.CreateAuthenticateChallengeRequest{}) + res, err := clt.CreateAuthenticateChallenge(ctx, &proto.CreateAuthenticateChallengeRequest{ + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + }) require.NoError(t, err) // MFA authentication works. // TODO(codingllama): Use a public endpoint to verify? mfaResp, err := u.webDev.SolveAuthn(res) require.NoError(t, err) - _, _, err = srv.Auth().ValidateMFAAuthResponse(ctx, mfaResp, u.username, false /* passwordless */) + _, _, err = srv.Auth().ValidateMFAAuthResponseWithScope(ctx, mfaResp, u.username, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) } @@ -414,6 +417,7 @@ func TestCreateAuthenticateChallenge_mfaVerification(t *testing.T) { Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_SESSION, MFARequiredCheck: &proto.IsMFARequiredRequest{ Target: &proto.IsMFARequiredRequest_Node{ Node: &proto.NodeLogin{ @@ -537,6 +541,7 @@ func TestCreateRegisterChallenge(t *testing.T) { Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES, }) require.NoError(t, err, "CreateAuthenticateChallenge") authnSolved, err := u.webDev.SolveAuthn(authnChal) @@ -776,6 +781,7 @@ func TestServer_Authenticate_passwordless(t *testing.T) { Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, // already authenticated }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES, }) require.NoError(t, err) mfaResp, err := webDev.SolveAuthn(mfaChallenge) @@ -975,6 +981,7 @@ func TestServer_Authenticate_nonPasswordlessRequiresUsername(t *testing.T) { Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN, }) require.NoError(t, err) diff --git a/lib/auth/auth_test.go b/lib/auth/auth_test.go index da09bac3d0e8a..70d789dc0931a 100644 --- a/lib/auth/auth_test.go +++ b/lib/auth/auth_test.go @@ -55,6 +55,7 @@ import ( "github.com/gravitational/teleport/api/types/installers" "github.com/gravitational/teleport/api/types/trait" "github.com/gravitational/teleport/api/types/userloginstate" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/api/types/wrappers" "github.com/gravitational/teleport/api/utils/keys" "github.com/gravitational/teleport/api/utils/sshutils" @@ -2202,6 +2203,7 @@ func TestDeleteMFADeviceSync(t *testing.T) { Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES, }) require.NoError(t, err, "CreateAuthenticateChallenge") @@ -2445,6 +2447,7 @@ func TestDeleteMFADeviceSync_lastDevice(t *testing.T) { Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES, }) if err != nil { return err @@ -2576,6 +2579,7 @@ func TestAddMFADeviceSync(t *testing.T) { Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES, }) require.NoError(t, err, "CreateAuthenticateChallenge") diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go index f9cbd14eec68d..cf819b5a8e86c 100644 --- a/lib/auth/auth_with_roles.go +++ b/lib/auth/auth_with_roles.go @@ -45,6 +45,7 @@ import ( "github.com/gravitational/teleport/api/internalutils/stream" "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/api/types/wrappers" apiutils "github.com/gravitational/teleport/api/utils" "github.com/gravitational/teleport/api/utils/keys" @@ -2763,8 +2764,8 @@ func (a *ServerWithRoles) generateUserCerts(ctx context.Context, req proto.UserC var verifiedMFADeviceID string if req.MFAResponse != nil { - dev, _, err := a.authServer.ValidateMFAAuthResponse( - ctx, req.GetMFAResponse(), req.Username, false /* passwordless */) + dev, _, err := a.authServer.ValidateMFAAuthResponseWithScope( + ctx, req.GetMFAResponse(), req.Username, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_SESSION) if err != nil { return nil, trace.Wrap(err) } @@ -6617,7 +6618,7 @@ func (a *ServerWithRoles) UpdateHeadlessAuthenticationState(ctx context.Context, return err } - mfaDevice, _, err := a.authServer.ValidateMFAAuthResponse(ctx, mfaResp, headlessAuthn.User, false /* passwordless */) + mfaDevice, _, err := a.authServer.ValidateMFAAuthResponseWithScope(ctx, mfaResp, headlessAuthn.User, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_HEADLESS) if err != nil { emitHeadlessLoginEvent(ctx, events.UserHeadlessLoginApprovedFailureCode, a.authServer.emitter, headlessAuthn, err) return trace.Wrap(err) @@ -6741,6 +6742,11 @@ func (a *ServerWithRoles) DeleteClusterMaintenanceConfig(ctx context.Context) er return a.authServer.DeleteClusterMaintenanceConfig(ctx) } +// ValidateMFAAuthResponseWithScope not implemented: can only be called locally. +func (a *ServerWithRoles) ValidateMFAAuthResponseWithScope(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, scope webauthnpb.ChallengeScope) (*types.MFADevice, string, error) { + return nil, "", trace.NotImplemented(notImplementedMessage) +} + func emitHeadlessLoginEvent(ctx context.Context, code string, emitter apievents.Emitter, headlessAuthn *types.HeadlessAuthentication, err error) { clientAddr := "" if code == events.UserHeadlessLoginRequestedCode { @@ -6753,7 +6759,6 @@ func emitHeadlessLoginEvent(ctx context.Context, code string, emitter apievents. if code != events.UserHeadlessLoginRequestedCode { // For events.UserHeadlessLoginRequestedCode remote.addr will be the IP of requester. // For other events that IP will be different because user will be approving the request from another machine, - // so we mentioned requester IP in the message. message = fmt.Sprintf("Headless login was requested from the address %s", headlessAuthn.ClientIpAddress) } errorMessage := "" @@ -6869,7 +6874,6 @@ func checkOktaLockTarget(ctx context.Context, authzCtx *authz.Context, users ser // checkOktaLockAccess gates access to update operations on lock records based // on the origin label on the supplied user record. func checkOktaLockAccess(ctx context.Context, authzCtx *authz.Context, locks services.LockGetter, existingLockName string, verb string) error { - existingLock, err := locks.GetLock(ctx, existingLockName) if err != nil && !trace.IsNotFound(err) { return trace.Wrap(err) diff --git a/lib/auth/auth_with_roles_test.go b/lib/auth/auth_with_roles_test.go index 6b6604729959d..0244c385f710d 100644 --- a/lib/auth/auth_with_roles_test.go +++ b/lib/auth/auth_with_roles_test.go @@ -54,6 +54,7 @@ import ( apievents "github.com/gravitational/teleport/api/types/events" "github.com/gravitational/teleport/api/types/installers" wanpb "github.com/gravitational/teleport/api/types/webauthn" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/api/types/wrappers" apiutils "github.com/gravitational/teleport/api/utils" "github.com/gravitational/teleport/api/utils/sshutils" @@ -5830,6 +5831,7 @@ func TestUpdateHeadlessAuthenticationState(t *testing.T) { challenge, err := client.CreateAuthenticateChallenge(ctx, &proto.CreateAuthenticateChallengeRequest{ Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{}, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_HEADLESS, }) require.NoError(t, err) diff --git a/lib/auth/clt.go b/lib/auth/clt.go index da67f6852716d..56261402979bd 100644 --- a/lib/auth/clt.go +++ b/lib/auth/clt.go @@ -41,6 +41,7 @@ import ( userpreferencesv1 "github.com/gravitational/teleport/api/gen/proto/go/userpreferences/v1" "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" accessgraphv1 "github.com/gravitational/teleport/gen/proto/go/accessgraph/v1alpha" "github.com/gravitational/teleport/lib/events" "github.com/gravitational/teleport/lib/services" @@ -494,10 +495,8 @@ func (c *Client) DiscoveryConfigClient() services.DiscoveryConfigs { return c.APIClient.DiscoveryConfigClient() } -// ValidateMFAAuthResponse validates an MFA or passwordless challenge. -// Returns the device used to solve the challenge (if applicable) and the -// username. -func (c *Client) ValidateMFAAuthResponse(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, passwordless bool) (*types.MFADevice, string, error) { +// ValidateMFAAuthResponseWithScope not implemented: can only be called locally. +func (c *Client) ValidateMFAAuthResponseWithScope(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, scope webauthnpb.ChallengeScope) (*types.MFADevice, string, error) { return nil, "", trace.NotImplemented(notImplementedMessage) } @@ -966,7 +965,9 @@ type ClientI interface { // but may result in confusing behavior if it is used outside of those contexts. GetSSHTargets(ctx context.Context, req *proto.GetSSHTargetsRequest) (*proto.GetSSHTargetsResponse, error) - // ValidateMFAAuthResponse validates an MFA or passwordless challenge. - // Returns the device used to solve the challenge (if applicable) and the username. - ValidateMFAAuthResponse(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, passwordless bool) (*types.MFADevice, string, error) + // ValidateMFAAuthResponseWithScope validates an MFA challenge response. If the challenge + // response if of type webauthn, this also validates that the challenge response satisfies + // the given scope. Returns the device used to solve the challenge (if applicable) and the + // username. + ValidateMFAAuthResponseWithScope(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, requiredScope webauthnpb.ChallengeScope) (*types.MFADevice, string, error) } diff --git a/lib/auth/discoveryconfig/discoveryconfigv1/service_test.go b/lib/auth/discoveryconfig/discoveryconfigv1/service_test.go index edda25f5c6ff9..4eb9b690e0f8e 100644 --- a/lib/auth/discoveryconfig/discoveryconfigv1/service_test.go +++ b/lib/auth/discoveryconfig/discoveryconfigv1/service_test.go @@ -32,6 +32,7 @@ import ( "github.com/gravitational/teleport/api/types/discoveryconfig" convert "github.com/gravitational/teleport/api/types/discoveryconfig/convert/v1" "github.com/gravitational/teleport/api/types/header" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/lib/authz" "github.com/gravitational/teleport/lib/backend/memory" "github.com/gravitational/teleport/lib/services" @@ -379,7 +380,7 @@ type testClient struct { services.Presence } -func (c *testClient) ValidateMFAAuthResponse(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, passwordless bool) (*types.MFADevice, string, error) { +func (c *testClient) ValidateMFAAuthResponseWithScope(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, scope webauthnpb.ChallengeScope) (*types.MFADevice, string, error) { return nil, "", nil } diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index 3da38ffc1337e..28f8aeb0e9458 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -62,6 +62,7 @@ import ( "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" "github.com/gravitational/teleport/api/types/installers" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/api/types/wrappers" apiutils "github.com/gravitational/teleport/api/utils" "github.com/gravitational/teleport/lib/auth/assist/assistv1" @@ -2406,8 +2407,7 @@ func (g *GRPCServer) DeleteRole(ctx context.Context, req *authpb.DeleteRoleReque func doMFAPresenceChallenge(ctx context.Context, actx *grpcContext, stream authpb.AuthService_MaintainSessionPresenceServer, challengeReq *authpb.PresenceMFAChallengeRequest) error { user := actx.User.GetName() - const passwordless = false - authChallenge, err := actx.authServer.mfaAuthChallenge(ctx, user, passwordless) + authChallenge, err := actx.authServer.mfaAuthChallenge(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_SESSION) if err != nil { return trace.Wrap(err) } @@ -2429,7 +2429,7 @@ func doMFAPresenceChallenge(ctx context.Context, actx *grpcContext, stream authp return trace.BadParameter("expected MFAAuthenticateResponse, got %T", challengeResp) } - if _, _, err := actx.authServer.ValidateMFAAuthResponse(ctx, challengeResp, user, passwordless); err != nil { + if _, _, err := actx.authServer.ValidateMFAAuthResponseWithScope(ctx, challengeResp, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_SESSION); err != nil { return trace.Wrap(err) } @@ -2563,8 +2563,7 @@ func addMFADeviceAuthChallenge(gctx *grpcContext, stream authpb.AuthService_AddM ctx := stream.Context() // Note: authChallenge may be empty if this user has no existing MFA devices. - const passwordless = false - authChallenge, err := auth.mfaAuthChallenge(ctx, user, passwordless) + authChallenge, err := auth.mfaAuthChallenge(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES) if err != nil { return trace.Wrap(err) } @@ -2585,7 +2584,7 @@ func addMFADeviceAuthChallenge(gctx *grpcContext, stream authpb.AuthService_AddM } // Only validate if there was a challenge. if authChallenge.TOTP != nil || authChallenge.WebauthnChallenge != nil { - if _, _, err := auth.ValidateMFAAuthResponse(ctx, authResp, user, passwordless); err != nil { + if _, _, err := auth.ValidateMFAAuthResponseWithScope(ctx, authResp, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES); err != nil { return trace.Wrap(err) } } @@ -2707,7 +2706,7 @@ func deleteMFADeviceAuthChallenge(gctx *grpcContext, stream authpb.AuthService_D user := gctx.User.GetName() const passwordless = false - authChallenge, err := auth.mfaAuthChallenge(ctx, user, passwordless) + authChallenge, err := auth.mfaAuthChallenge(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES) if err != nil { return trace.Wrap(err) } @@ -2727,7 +2726,7 @@ func deleteMFADeviceAuthChallenge(gctx *grpcContext, stream authpb.AuthService_D if authResp == nil { return trace.BadParameter("expected MFAAuthenticateResponse, got %T", req) } - if _, _, err := auth.ValidateMFAAuthResponse(ctx, authResp, user, passwordless); err != nil { + if _, _, err := auth.ValidateMFAAuthResponseWithScope(ctx, authResp, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES); err != nil { return trace.Wrap(err) } return nil @@ -2938,7 +2937,7 @@ func userSingleUseCertsAuthChallenge(gctx *grpcContext, stream authpb.AuthServic user := gctx.User.GetName() const passwordless = false - challenge, err := auth.mfaAuthChallenge(ctx, user, passwordless) + challenge, err := auth.mfaAuthChallenge(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_SESSION) if err != nil { return nil, trace.Wrap(err) } @@ -2963,7 +2962,7 @@ func userSingleUseCertsAuthChallenge(gctx *grpcContext, stream authpb.AuthServic if authResp == nil { return nil, trace.BadParameter("expected MFAAuthenticateResponse, got %T", req.Request) } - mfaDev, _, err := auth.ValidateMFAAuthResponse(ctx, authResp, user, passwordless) + mfaDev, _, err := auth.ValidateMFAAuthResponseWithScope(ctx, authResp, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_SESSION) if err != nil { return nil, trace.Wrap(err) } diff --git a/lib/auth/grpcserver_test.go b/lib/auth/grpcserver_test.go index 35ac50627b802..c48a5e80a56df 100644 --- a/lib/auth/grpcserver_test.go +++ b/lib/auth/grpcserver_test.go @@ -60,6 +60,7 @@ import ( "github.com/gravitational/teleport/api/observability/tracing" "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/api/types/installers" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/api/utils" "github.com/gravitational/teleport/api/utils/sshutils" "github.com/gravitational/teleport/lib/auth/mocku2f" @@ -526,6 +527,7 @@ func testAddMFADevice(ctx context.Context, t *testing.T, authClient *Client, opt Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES, }) require.NoError(t, err, "CreateAuthenticateChallenge") authnSolved := opts.authHandler(t, authChal) @@ -567,6 +569,7 @@ func testDeleteMFADevice(ctx context.Context, t *testing.T, authClient *Client, Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES, }) require.NoError(t, err, "CreateAuthenticateChallenge") authnSolved := opts.authHandler(t, authnChal) @@ -869,6 +872,7 @@ func TestGenerateUserCerts_deviceAuthz(t *testing.T) { Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES, }) if err != nil { return nil, err @@ -1751,6 +1755,7 @@ func testGenerateUserSingleUseCertsUnary(ctx context.Context, t *testing.T, cl * Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_SESSION, }) require.NoError(t, err, "CreateAuthenticateChallenge") @@ -3369,7 +3374,9 @@ func TestCustomRateLimiting(t *testing.T) { name: "RPC CreateAuthenticateChallenge", burst: defaults.LimiterBurst, fn: func(clt *Client) error { - _, err := clt.CreateAuthenticateChallenge(ctx, &proto.CreateAuthenticateChallengeRequest{}) + _, err := clt.CreateAuthenticateChallenge(ctx, &proto.CreateAuthenticateChallengeRequest{ + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + }) return err }, }, diff --git a/lib/auth/helpers_mfa.go b/lib/auth/helpers_mfa.go index ddadf6e56a91c..769e139e6699d 100644 --- a/lib/auth/helpers_mfa.go +++ b/lib/auth/helpers_mfa.go @@ -29,6 +29,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/types" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/lib/auth/mocku2f" wantypes "github.com/gravitational/teleport/lib/auth/webauthntypes" ) @@ -76,7 +77,8 @@ func NewTestDeviceFromChallenge(c *proto.MFARegisterChallenge, opts ...TestDevic // RegisterTestDevice creates and registers a TestDevice. // TOTP devices require a clock option. func RegisterTestDevice( - ctx context.Context, clt authClientI, devName string, devType proto.DeviceType, authenticator *TestDevice, opts ...TestDeviceOpt) (*TestDevice, error) { + ctx context.Context, clt authClientI, devName string, devType proto.DeviceType, authenticator *TestDevice, opts ...TestDeviceOpt, +) (*TestDevice, error) { dev := &TestDevice{} // Remaining parameters set during registration for _, opt := range opts { opt(dev) @@ -101,12 +103,14 @@ type authClientI interface { } func (d *TestDevice) registerDevice( - ctx context.Context, authClient authClientI, devName string, devType proto.DeviceType, authenticator *TestDevice) error { + ctx context.Context, authClient authClientI, devName string, devType proto.DeviceType, authenticator *TestDevice, +) error { // Re-authenticate using MFA. authnChal, err := authClient.CreateAuthenticateChallenge(ctx, &proto.CreateAuthenticateChallengeRequest{ Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES, }) if err != nil { return trace.Wrap(err) @@ -209,7 +213,6 @@ func (d *TestDevice) solveRegister(c *proto.MFARegisterChallenge) (*proto.MFAReg default: return nil, trace.BadParameter("unexpected challenge type: %T", c.Request) } - } func (d *TestDevice) solveRegisterWebauthn(c *proto.MFARegisterChallenge) (*proto.MFARegisterResponse, error) { diff --git a/lib/auth/integration/integrationv1/service_test.go b/lib/auth/integration/integrationv1/service_test.go index 910ed8ee588db..742daeb802216 100644 --- a/lib/auth/integration/integrationv1/service_test.go +++ b/lib/auth/integration/integrationv1/service_test.go @@ -29,6 +29,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" integrationpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/integration/v1" "github.com/gravitational/teleport/api/types" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/lib/auth/keystore" "github.com/gravitational/teleport/lib/auth/testauthority" "github.com/gravitational/teleport/lib/authz" @@ -331,7 +332,7 @@ type testClient struct { services.UserGetter } -func (c *testClient) ValidateMFAAuthResponse(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, passwordless bool) (*types.MFADevice, string, error) { +func (c *testClient) ValidateMFAAuthResponseWithScope(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, scope webauthnpb.ChallengeScope) (*types.MFADevice, string, error) { return nil, "", nil } diff --git a/lib/auth/methods.go b/lib/auth/methods.go index 3fb063e5a6586..9a13881050eb3 100644 --- a/lib/auth/methods.go +++ b/lib/auth/methods.go @@ -32,6 +32,7 @@ import ( "github.com/gravitational/teleport/api/constants" "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/api/utils/keys" wantypes "github.com/gravitational/teleport/lib/auth/webauthntypes" "github.com/gravitational/teleport/lib/authz" @@ -299,7 +300,7 @@ func (a *Server) authenticateUser(ctx context.Context, req AuthenticateUserReque Webauthn: wantypes.CredentialAssertionResponseToProto(req.Webauthn), }, } - dev, _, err := a.ValidateMFAAuthResponse(ctx, mfaResponse, user, passwordless) + dev, _, err := a.ValidateMFAAuthResponseWithScope(ctx, mfaResponse, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) return dev, trace.Wrap(err) } authErr = authenticateWebauthnError @@ -393,7 +394,7 @@ func (a *Server) authenticatePasswordless(ctx context.Context, req AuthenticateU Webauthn: wantypes.CredentialAssertionResponseToProto(req.Webauthn), }, } - dev, user, err := a.ValidateMFAAuthResponse(ctx, mfaResponse, "", true /* passwordless */) + dev, user, err := a.ValidateMFAAuthResponseWithScope(ctx, mfaResponse, "" /* user */, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_PASSWORDLESS_LOGIN) if err != nil { log.Debugf("Passwordless authentication failed: %v", err) return nil, "", trace.Wrap(authenticateWebauthnError) diff --git a/lib/auth/okta/service_test.go b/lib/auth/okta/service_test.go index 52e3f4090675f..73161dcf59050 100644 --- a/lib/auth/okta/service_test.go +++ b/lib/auth/okta/service_test.go @@ -31,6 +31,7 @@ import ( "github.com/gravitational/teleport/api/constants" oktapb "github.com/gravitational/teleport/api/gen/proto/go/teleport/okta/v1" "github.com/gravitational/teleport/api/types" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/lib/authz" "github.com/gravitational/teleport/lib/backend/memory" "github.com/gravitational/teleport/lib/services" @@ -174,7 +175,7 @@ type testClient struct { services.UserGetter } -func (c *testClient) ValidateMFAAuthResponse(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, passwordless bool) (*types.MFADevice, string, error) { +func (c *testClient) ValidateMFAAuthResponseWithScope(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, scope webauthnpb.ChallengeScope) (*types.MFADevice, string, error) { return nil, "", nil } diff --git a/lib/auth/userloginstate/service_test.go b/lib/auth/userloginstate/service_test.go index cfec14b3bb992..ec06d040240c0 100644 --- a/lib/auth/userloginstate/service_test.go +++ b/lib/auth/userloginstate/service_test.go @@ -35,6 +35,7 @@ import ( "github.com/gravitational/teleport/api/types/trait" "github.com/gravitational/teleport/api/types/userloginstate" conv "github.com/gravitational/teleport/api/types/userloginstate/convert/v1" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/lib/authz" "github.com/gravitational/teleport/lib/backend/memory" "github.com/gravitational/teleport/lib/services" @@ -203,7 +204,7 @@ type testClient struct { services.UserGetter } -func (c *testClient) ValidateMFAAuthResponse(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, passwordless bool) (*types.MFADevice, string, error) { +func (c *testClient) ValidateMFAAuthResponseWithScope(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, scope webauthnpb.ChallengeScope) (*types.MFADevice, string, error) { return nil, "", nil } diff --git a/lib/auth/userpreferences/userpreferencesv1/service_test.go b/lib/auth/userpreferences/userpreferencesv1/service_test.go index 10e489ed6bdf6..3a9166fa7c8e9 100644 --- a/lib/auth/userpreferences/userpreferencesv1/service_test.go +++ b/lib/auth/userpreferences/userpreferencesv1/service_test.go @@ -28,6 +28,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" userpreferencesv1 "github.com/gravitational/teleport/api/gen/proto/go/userpreferences/v1" "github.com/gravitational/teleport/api/types" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/lib/authz" "github.com/gravitational/teleport/lib/backend/memory" "github.com/gravitational/teleport/lib/services" @@ -162,7 +163,7 @@ type testClient struct { services.UserGetter } -func (c *testClient) ValidateMFAAuthResponse(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, passwordless bool) (*types.MFADevice, string, error) { +func (c *testClient) ValidateMFAAuthResponseWithScope(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, scope webauthnpb.ChallengeScope) (*types.MFADevice, string, error) { return nil, "", nil } diff --git a/lib/auth/webauthn/login.go b/lib/auth/webauthn/login.go index e1caabff4c5f9..0e793cf80c3c7 100644 --- a/lib/auth/webauthn/login.go +++ b/lib/auth/webauthn/login.go @@ -34,6 +34,7 @@ import ( "github.com/gravitational/teleport/api/types" wanpb "github.com/gravitational/teleport/api/types/webauthn" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" wantypes "github.com/gravitational/teleport/lib/auth/webauthntypes" ) @@ -67,13 +68,14 @@ type loginFlow struct { sessionData sessionIdentity } -func (f *loginFlow) begin(ctx context.Context, user string, passwordless bool) (*wantypes.CredentialAssertion, error) { - if user == "" && !passwordless { +func (f *loginFlow) begin(ctx context.Context, user string, scope webauthnpb.ChallengeScope) (*wantypes.CredentialAssertion, error) { + isPasswordless := scope == wanpb.ChallengeScope_CHALLENGE_SCOPE_PASSWORDLESS_LOGIN + if user == "" && !isPasswordless { return nil, trace.BadParameter("user required") } var u *webUser - if passwordless { + if isPasswordless { u = &webUser{} // Issue anonymous challenge. } else { webID, err := f.getWebID(ctx, user) @@ -145,7 +147,7 @@ func (f *loginFlow) begin(ctx context.Context, user string, passwordless bool) ( web, err := newWebAuthn(webAuthnParams{ cfg: f.Webauthn, rpID: f.Webauthn.RPID, - requireUserVerification: passwordless, + requireUserVerification: isPasswordless, }) if err != nil { return nil, trace.Wrap(err) @@ -153,7 +155,7 @@ func (f *loginFlow) begin(ctx context.Context, user string, passwordless bool) ( var assertion *protocol.CredentialAssertion var sessionData *wan.SessionData - if passwordless { + if isPasswordless { assertion, sessionData, err = web.BeginDiscoverableLogin(opts...) } else { assertion, sessionData, err = web.BeginLogin(u, opts...) @@ -185,9 +187,10 @@ func (f *loginFlow) getWebID(ctx context.Context, user string) ([]byte, error) { return wla.UserID, nil } -func (f *loginFlow) finish(ctx context.Context, user string, resp *wantypes.CredentialAssertionResponse, passwordless bool) (*types.MFADevice, string, error) { +func (f *loginFlow) finish(ctx context.Context, user string, resp *wantypes.CredentialAssertionResponse, requiredScope webauthnpb.ChallengeScope) (*types.MFADevice, string, error) { + isPasswordless := requiredScope == wanpb.ChallengeScope_CHALLENGE_SCOPE_PASSWORDLESS_LOGIN switch { - case user == "" && !passwordless: + case user == "" && !isPasswordless: return nil, "", trace.BadParameter("user required") case resp == nil: // resp != nil is good enough to proceed, we leave remaining validations to @@ -207,7 +210,7 @@ func (f *loginFlow) finish(ctx context.Context, user string, resp *wantypes.Cred } var webID []byte - if passwordless { + if isPasswordless { webID = parsedResp.Response.UserHandle if len(webID) == 0 { return nil, "", trace.BadParameter("webauthn user handle required for passwordless") @@ -260,6 +263,19 @@ func (f *loginFlow) finish(ctx context.Context, user string, resp *wantypes.Cred } sessionData := sessionFromPB(sessionDataPB) + // Check if the given requiredScope is satisfied by the challenge scope. + switch { + case sessionDataPB.GetScope() == webauthnpb.ChallengeScope_CHALLENGE_SCOPE_UNSPECIFIED: + // old clients do not yet provide a scope, so we only enforce scope opportunistically. + // TODO(Joerger): DELETE IN v16.0.0 + case requiredScope == sessionDataPB.GetScope(): + case requiredScope == webauthnpb.ChallengeScope_CHALLENGE_SCOPE_ADMIN_ACTION_WITH_REUSE && + sessionDataPB.GetScope() == webauthnpb.ChallengeScope_CHALLENGE_SCOPE_ADMIN_ACTION: + // scope "admin action with reuse" is satisfied by challenges with scope "admin action". + default: + return nil, "", trace.AccessDenied("required scope %q is not satisfied by the given webauthn credentials with scope %q", requiredScope, sessionDataPB.GetScope()) + } + // Make sure _all_ credentials in the session are accounted for by the user. // webauthn.ValidateLogin requires it. for _, allowedCred := range sessionData.AllowedCredentialIDs { @@ -277,14 +293,14 @@ func (f *loginFlow) finish(ctx context.Context, user string, resp *wantypes.Cred cfg: f.Webauthn, rpID: rpID, origin: origin, - requireUserVerification: passwordless, + requireUserVerification: isPasswordless, }) if err != nil { return nil, "", trace.Wrap(err) } var credential *wan.Credential - if passwordless { + if isPasswordless { discoverUser := func(_, _ []byte) (wan.User, error) { return u, nil } credential, err = web.ValidateDiscoverableLogin(discoverUser, *sessionData, parsedResp) } else { @@ -315,7 +331,7 @@ func (f *loginFlow) finish(ctx context.Context, user string, resp *wantypes.Cred // The user just solved the challenge, so let's make sure it won't be used // again. if err := f.sessionData.Delete(ctx, user, challenge); err != nil { - log.Warnf("WebAuthn: failed to delete login SessionData for user %v (passwordless = %v)", user, passwordless) + log.Warnf("WebAuthn: failed to delete login SessionData for user %v (scope = %v)", user, requiredScope.String()) } return dev, user, nil diff --git a/lib/auth/webauthn/login_mfa.go b/lib/auth/webauthn/login_mfa.go index 0d8b100ca6029..cee9aff0ac921 100644 --- a/lib/auth/webauthn/login_mfa.go +++ b/lib/auth/webauthn/login_mfa.go @@ -26,6 +26,7 @@ import ( "github.com/gravitational/teleport/api/types" wanpb "github.com/gravitational/teleport/api/types/webauthn" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" wantypes "github.com/gravitational/teleport/lib/auth/webauthntypes" ) @@ -94,28 +95,28 @@ type LoginFlow struct { // assertion. // As a side effect Begin may assign (and record in storage) a WebAuthn ID for // the user. -func (f *LoginFlow) Begin(ctx context.Context, user string) (*wantypes.CredentialAssertion, error) { +func (f *LoginFlow) Begin(ctx context.Context, user string, scope webauthnpb.ChallengeScope) (*wantypes.CredentialAssertion, error) { lf := &loginFlow{ U2F: f.U2F, Webauthn: f.Webauthn, identity: mfaIdentity{f.Identity}, sessionData: (*userSessionStorage)(f), } - return lf.begin(ctx, user, false /* passwordless */) + return lf.begin(ctx, user, scope) } // Finish is the second and last step of the LoginFlow. // It returns the MFADevice used to solve the challenge. If login is successful, // Finish has the side effect of updating the counter and last used timestamp of // the returned device. -func (f *LoginFlow) Finish(ctx context.Context, user string, resp *wantypes.CredentialAssertionResponse) (*types.MFADevice, error) { +func (f *LoginFlow) Finish(ctx context.Context, user string, resp *wantypes.CredentialAssertionResponse, requiredScope webauthnpb.ChallengeScope) (*types.MFADevice, error) { lf := &loginFlow{ U2F: f.U2F, Webauthn: f.Webauthn, identity: mfaIdentity{f.Identity}, sessionData: (*userSessionStorage)(f), } - dev, _, err := lf.finish(ctx, user, resp, false /* passwordless */) + dev, _, err := lf.finish(ctx, user, resp, requiredScope) return dev, trace.Wrap(err) } diff --git a/lib/auth/webauthn/login_passwordless.go b/lib/auth/webauthn/login_passwordless.go index 932df3b2c107b..919165579f523 100644 --- a/lib/auth/webauthn/login_passwordless.go +++ b/lib/auth/webauthn/login_passwordless.go @@ -25,6 +25,7 @@ import ( "github.com/gravitational/teleport/api/types" wanpb "github.com/gravitational/teleport/api/types/webauthn" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" wantypes "github.com/gravitational/teleport/lib/auth/webauthntypes" ) @@ -55,7 +56,7 @@ func (f *PasswordlessFlow) Begin(ctx context.Context) (*wantypes.CredentialAsser identity: passwordlessIdentity{f.Identity}, sessionData: (*globalSessionStorage)(f), } - return lf.begin(ctx, "" /* user */, true /* passwordless */) + return lf.begin(ctx, "" /* user */, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_PASSWORDLESS_LOGIN) } // Finish is the last step of the passwordless login flow. @@ -67,7 +68,7 @@ func (f *PasswordlessFlow) Finish(ctx context.Context, resp *wantypes.Credential identity: passwordlessIdentity{f.Identity}, sessionData: (*globalSessionStorage)(f), } - return lf.finish(ctx, "" /* user */, resp, true /* passwordless */) + return lf.finish(ctx, "" /* user */, resp, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_PASSWORDLESS_LOGIN) } type passwordlessIdentity struct { diff --git a/lib/auth/webauthn/login_test.go b/lib/auth/webauthn/login_test.go index 2b472c81a9ac1..32ddfd44dbb7a 100644 --- a/lib/auth/webauthn/login_test.go +++ b/lib/auth/webauthn/login_test.go @@ -34,6 +34,7 @@ import ( "github.com/gravitational/teleport/api/types" wanpb "github.com/gravitational/teleport/api/types/webauthn" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/lib/auth/mocku2f" wanlib "github.com/gravitational/teleport/lib/auth/webauthn" wantypes "github.com/gravitational/teleport/lib/auth/webauthntypes" @@ -120,7 +121,7 @@ func TestLoginFlow_BeginFinish(t *testing.T) { } // 1st step of the login ceremony. - assertion, err := webLogin.Begin(ctx, user) + assertion, err := webLogin.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) // We care about a few specific settings, for everything else defaults are // OK. @@ -148,7 +149,7 @@ func TestLoginFlow_BeginFinish(t *testing.T) { // 2nd and last step of the login ceremony. beforeLastUsed := time.Now().Add(-1 * time.Second) - loginDevice, err := webLogin.Finish(ctx, user, assertionResp) + loginDevice, err := webLogin.Finish(ctx, user, assertionResp, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) // Last used time and counter are updated. require.True(t, beforeLastUsed.Before(loginDevice.LastUsed)) @@ -222,7 +223,7 @@ func TestLoginFlow_Begin_errors(t *testing.T) { } for _, test := range tests { t.Run(test.name, func(t *testing.T) { - _, err := webLogin.Begin(ctx, test.user) + _, err := webLogin.Begin(ctx, test.user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.True(t, test.assertErrType(err), "got err = %v, want BadParameter", err) require.Contains(t, err.Error(), test.wantErr) }) @@ -260,7 +261,7 @@ func TestLoginFlow_Finish_errors(t *testing.T) { Webauthn: webConfig, Identity: identity, } - assertion, err := webLogin.Begin(ctx, user) + assertion, err := webLogin.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) okResp, err := key.SignAssertion(webOrigin, assertion) require.NoError(t, err) @@ -289,7 +290,7 @@ func TestLoginFlow_Finish_errors(t *testing.T) { name: "NOK assertion with bad origin", user: user, createResp: func() *wantypes.CredentialAssertionResponse { - assertion, err := webLogin.Begin(ctx, user) + assertion, err := webLogin.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) resp, err := key.SignAssertion("https://badorigin.com", assertion) require.NoError(t, err) @@ -300,7 +301,7 @@ func TestLoginFlow_Finish_errors(t *testing.T) { name: "NOK assertion with bad RPID", user: user, createResp: func() *wantypes.CredentialAssertionResponse { - assertion, err := webLogin.Begin(ctx, user) + assertion, err := webLogin.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) assertion.Response.RelyingPartyID = "badrpid.com" @@ -313,7 +314,7 @@ func TestLoginFlow_Finish_errors(t *testing.T) { name: "NOK assertion signed by unknown device", user: user, createResp: func() *wantypes.CredentialAssertionResponse { - assertion, err := webLogin.Begin(ctx, user) + assertion, err := webLogin.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) unknownKey, err := mocku2f.Create() @@ -330,7 +331,7 @@ func TestLoginFlow_Finish_errors(t *testing.T) { name: "NOK assertion with invalid signature", user: user, createResp: func() *wantypes.CredentialAssertionResponse { - assertion, err := webLogin.Begin(ctx, user) + assertion, err := webLogin.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) // Flip a challenge bit, this should be enough to consistently fail // signature checking. @@ -344,7 +345,7 @@ func TestLoginFlow_Finish_errors(t *testing.T) { } for _, test := range tests { t.Run(test.name, func(t *testing.T) { - _, err := webLogin.Finish(ctx, test.user, test.createResp()) + _, err := webLogin.Finish(ctx, test.user, test.createResp(), webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.Error(t, err) }) } @@ -568,7 +569,7 @@ func TestCredentialRPID(t *testing.T) { Identity: identity, } - _, err := webLogin.Begin(ctx, user) + _, err := webLogin.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) assert.NoError(t, err, "Begin failed, expected assertion for `dev1`") }) @@ -578,13 +579,13 @@ func TestCredentialRPID(t *testing.T) { Identity: identity, } - assertion, err := webLogin.Begin(ctx, user) + assertion, err := webLogin.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err, "Begin failed") car, err := dev1Key.SignAssertion(origin, assertion) require.NoError(t, err, "SignAssertion failed") - mfaDev, err := webLogin.Finish(ctx, user, car) + mfaDev, err := webLogin.Finish(ctx, user, car, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err, "Finish failed") assert.Equal(t, rpID, mfaDev.GetWebauthn().CredentialRpId, "CredentialRpId mismatch") }) @@ -595,7 +596,7 @@ func TestCredentialRPID(t *testing.T) { Identity: identity, } - _, err := webLogin.Begin(ctx, user) + _, err := webLogin.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) assert.ErrorIs(t, err, wanlib.ErrInvalidCredentials, "Begin error mismatch") }) @@ -612,7 +613,7 @@ func TestCredentialRPID(t *testing.T) { Webauthn: webOtherRP, Identity: identity, } - assertion, err := webLogin.Begin(ctx, user) + assertion, err := webLogin.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err, "Begin failed, expected assertion for device `other1`") // Verify that we got the correct device. diff --git a/lib/auth/webauthncli/u2f_login_test.go b/lib/auth/webauthncli/u2f_login_test.go index 187a8278cddce..66c1567a93e73 100644 --- a/lib/auth/webauthncli/u2f_login_test.go +++ b/lib/auth/webauthncli/u2f_login_test.go @@ -38,6 +38,7 @@ import ( "github.com/gravitational/teleport/api/types" wanpb "github.com/gravitational/teleport/api/types/webauthn" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/lib/auth/mocku2f" wanlib "github.com/gravitational/teleport/lib/auth/webauthn" wancli "github.com/gravitational/teleport/lib/auth/webauthncli" @@ -141,7 +142,7 @@ func TestLogin(t *testing.T) { } test.setUserPresence.SetUserPresence(true) - assertion, err := loginFlow.Begin(ctx, username) + assertion, err := loginFlow.Begin(ctx, username, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) if test.removeAppID { assertion.Response.Extensions = nil @@ -160,7 +161,7 @@ func TestLogin(t *testing.T) { require.NotNil(t, mfaResp.GetWebauthn()) require.Equal(t, test.wantRawID, mfaResp.GetWebauthn().RawId) - _, err = loginFlow.Finish(ctx, username, wantypes.CredentialAssertionResponseFromProto(mfaResp.GetWebauthn())) + _, err = loginFlow.Finish(ctx, username, wantypes.CredentialAssertionResponseFromProto(mfaResp.GetWebauthn()), webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) }) } @@ -183,7 +184,7 @@ func TestLogin_errors(t *testing.T) { const user = "llama" const origin = "https://localhost" ctx := context.Background() - okAssertion, err := loginFlow.Begin(ctx, user) + okAssertion, err := loginFlow.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) tests := []struct { @@ -216,7 +217,7 @@ func TestLogin_errors(t *testing.T) { name: "NOK assertion missing challenge", origin: origin, getAssertion: func() *wantypes.CredentialAssertion { - assertion, err := loginFlow.Begin(ctx, user) + assertion, err := loginFlow.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) assertion.Response.Challenge = nil return assertion @@ -226,7 +227,7 @@ func TestLogin_errors(t *testing.T) { name: "NOK assertion missing RPID", origin: origin, getAssertion: func() *wantypes.CredentialAssertion { - assertion, err := loginFlow.Begin(ctx, user) + assertion, err := loginFlow.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) assertion.Response.RelyingPartyID = "" return assertion @@ -236,7 +237,7 @@ func TestLogin_errors(t *testing.T) { name: "NOK assertion missing credentials", origin: origin, getAssertion: func() *wantypes.CredentialAssertion { - assertion, err := loginFlow.Begin(ctx, user) + assertion, err := loginFlow.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) assertion.Response.AllowedCredentials = nil return assertion @@ -246,7 +247,7 @@ func TestLogin_errors(t *testing.T) { name: "NOK assertion invalid user verification requirement", origin: origin, getAssertion: func() *wantypes.CredentialAssertion { - assertion, err := loginFlow.Begin(ctx, user) + assertion, err := loginFlow.Begin(ctx, user, webauthnpb.ChallengeScope_CHALLENGE_SCOPE_LOGIN) require.NoError(t, err) assertion.Response.UserVerification = protocol.VerificationRequired return assertion diff --git a/lib/authz/permissions.go b/lib/authz/permissions.go index 6c5e7c2bc7aff..50838c9bf6530 100644 --- a/lib/authz/permissions.go +++ b/lib/authz/permissions.go @@ -39,6 +39,7 @@ import ( "github.com/gravitational/teleport/api/mfa" "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/api/utils" "github.com/gravitational/teleport/api/utils/keys" dtauthz "github.com/gravitational/teleport/lib/devicetrust/authz" @@ -151,9 +152,11 @@ type AuthorizerAccessPoint interface { // GetSessionRecordingConfig returns session recording configuration. GetSessionRecordingConfig(ctx context.Context, opts ...services.MarshalOption) (types.SessionRecordingConfig, error) - // ValidateMFAAuthResponse validates an MFA or passwordless challenge. - // Returns the device used to solve the challenge (if applicable) and the username. - ValidateMFAAuthResponse(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, passwordless bool) (*types.MFADevice, string, error) + // ValidateMFAAuthResponseWithScope validates an MFA challenge response. If the challenge + // response if of type webauthn, this also validates that the challenge response satisfies + // the given scope. Returns the device used to solve the challenge (if applicable) and the + // username. + ValidateMFAAuthResponseWithScope(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, requiredScope webauthnpb.ChallengeScope) (*types.MFADevice, string, error) } // authorizer creates new local authorizer @@ -443,7 +446,7 @@ func (a *authorizer) authorizeAdminAction(ctx context.Context, authContext *Cont return trace.Wrap(err) } - if _, _, err := a.accessPoint.ValidateMFAAuthResponse(ctx, mfaResp, authContext.User.GetName(), false); err != nil { + if _, _, err := a.accessPoint.ValidateMFAAuthResponseWithScope(ctx, mfaResp, authContext.User.GetName(), webauthnpb.ChallengeScope_CHALLENGE_SCOPE_ADMIN_ACTION); err != nil { return trace.Wrap(err) } diff --git a/lib/authz/permissions_test.go b/lib/authz/permissions_test.go index 43e1c1502a256..1867dc84bd5a7 100644 --- a/lib/authz/permissions_test.go +++ b/lib/authz/permissions_test.go @@ -38,6 +38,7 @@ import ( "github.com/gravitational/teleport/api/constants" "github.com/gravitational/teleport/api/mfa" "github.com/gravitational/teleport/api/types" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/api/utils/keys" "github.com/gravitational/teleport/lib/backend/memory" "github.com/gravitational/teleport/lib/modules" @@ -1061,7 +1062,7 @@ type testClient struct { types.Events } -func (c *testClient) ValidateMFAAuthResponse(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, passwordless bool) (*types.MFADevice, string, error) { +func (c *testClient) ValidateMFAAuthResponseWithScope(ctx context.Context, resp *proto.MFAAuthenticateResponse, user string, scope webauthnpb.ChallengeScope) (*types.MFADevice, string, error) { if resp.GetTOTP().Code == validTOTPCode { return &types.MFADevice{}, "", nil } diff --git a/lib/client/api.go b/lib/client/api.go index 2969fd5e8dd34..7223442d0f05a 100644 --- a/lib/client/api.go +++ b/lib/client/api.go @@ -63,6 +63,7 @@ import ( "github.com/gravitational/teleport/api/profile" "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" apiutils "github.com/gravitational/teleport/api/utils" "github.com/gravitational/teleport/api/utils/grpc/interceptors" "github.com/gravitational/teleport/api/utils/keys" @@ -5280,6 +5281,7 @@ func (tc *TeleportClient) HeadlessApprove(ctx context.Context, headlessAuthentic Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_HEADLESS, }) if err != nil { return trace.Wrap(err) diff --git a/lib/client/cluster_client.go b/lib/client/cluster_client.go index 2aec602aa0f85..b28162b3ff8c0 100644 --- a/lib/client/cluster_client.go +++ b/lib/client/cluster_client.go @@ -29,6 +29,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" proxyclient "github.com/gravitational/teleport/api/client/proxy" "github.com/gravitational/teleport/api/mfa" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/lib/auth" "github.com/gravitational/teleport/lib/services" ) @@ -312,6 +313,7 @@ func PerformMFACeremony(ctx context.Context, params PerformMFACeremonyParams) (* Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_SESSION, MFARequiredCheck: mfaRequiredReq, }) if err != nil { diff --git a/lib/teleterm/clusters/cluster_headless.go b/lib/teleterm/clusters/cluster_headless.go index 8897f0aa95700..e15804af62cff 100644 --- a/lib/teleterm/clusters/cluster_headless.go +++ b/lib/teleterm/clusters/cluster_headless.go @@ -25,6 +25,7 @@ import ( "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/types" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" ) // WatchPendingHeadlessAuthentications watches the backend for pending headless authentication requests for the user. @@ -117,6 +118,7 @@ func (c *Cluster) UpdateHeadlessAuthenticationState(ctx context.Context, headles Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_HEADLESS, }) if err != nil { return trace.Wrap(err) diff --git a/lib/web/mfa.go b/lib/web/mfa.go index 85fa932a83082..938c2ec3d7eea 100644 --- a/lib/web/mfa.go +++ b/lib/web/mfa.go @@ -26,6 +26,7 @@ import ( "github.com/julienschmidt/httprouter" "github.com/gravitational/teleport/api/client/proto" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" wantypes "github.com/gravitational/teleport/lib/auth/webauthntypes" "github.com/gravitational/teleport/lib/client" "github.com/gravitational/teleport/lib/httplib" @@ -138,7 +139,10 @@ func (h *Handler) createAuthenticateChallengeHandle(w http.ResponseWriter, r *ht return nil, trace.Wrap(err) } - chal, err := clt.CreateAuthenticateChallenge(r.Context(), &proto.CreateAuthenticateChallengeRequest{}) + chal, err := clt.CreateAuthenticateChallenge(r.Context(), &proto.CreateAuthenticateChallengeRequest{ + // TODO: web client needs to provide scope + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_UNSPECIFIED, + }) if err != nil { return nil, trace.Wrap(err) } @@ -291,7 +295,8 @@ func (r *isMFARequiredRequest) checkAndGetProtoRequest() (*proto.IsMFARequiredRe Protocol: r.Database.Protocol, Database: r.Database.DatabaseName, Username: r.Database.Username, - }}, + }, + }, } } @@ -322,7 +327,8 @@ func (r *isMFARequiredRequest) checkAndGetProtoRequest() (*proto.IsMFARequiredRe WindowsDesktop: &proto.RouteToWindowsDesktop{ WindowsDesktop: r.WindowsDesktop.DesktopName, Login: r.WindowsDesktop.Login, - }}, + }, + }, } } @@ -340,7 +346,8 @@ func (r *isMFARequiredRequest) checkAndGetProtoRequest() (*proto.IsMFARequiredRe Node: &proto.NodeLogin{ Login: r.Node.Login, Node: r.Node.NodeName, - }}, + }, + }, } } diff --git a/tool/tsh/common/mfa.go b/tool/tsh/common/mfa.go index a35efec130611..6a317a7878225 100644 --- a/tool/tsh/common/mfa.go +++ b/tool/tsh/common/mfa.go @@ -38,6 +38,7 @@ import ( "github.com/gravitational/teleport/api/constants" "github.com/gravitational/teleport/api/mfa" "github.com/gravitational/teleport/api/types" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/api/utils/prompt" "github.com/gravitational/teleport/lib/asciitable" "github.com/gravitational/teleport/lib/auth/touchid" @@ -335,7 +336,9 @@ func (c *mfaAddCommand) addDeviceRPC(ctx context.Context, tc *client.TeleportCli // Issue the authn challenge. // Required for the registration challenge. - authChallenge, err := aci.CreateAuthenticateChallenge(ctx, &proto.CreateAuthenticateChallengeRequest{}) + authChallenge, err := aci.CreateAuthenticateChallenge(ctx, &proto.CreateAuthenticateChallengeRequest{ + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES, + }) if err != nil { return trace.Wrap(err) } @@ -597,6 +600,7 @@ func (c *mfaRemoveCommand) run(cf *CLIConf) error { Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ ContextUser: &proto.ContextUser{}, }, + Scope: webauthnpb.ChallengeScope_CHALLENGE_SCOPE_MANAGE_DEVICES, }) if err != nil { return trace.Wrap(err)