diff --git a/api/client/client.go b/api/client/client.go index 76841923728c3..e83abae30ce25 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -94,6 +94,7 @@ import ( kubewaitingcontainerpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/kubewaitingcontainer/v1" loginrulepb "github.com/gravitational/teleport/api/gen/proto/go/teleport/loginrule/v1" machineidv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" + mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" notificationsv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/notifications/v1" oktapb "github.com/gravitational/teleport/api/gen/proto/go/teleport/okta/v1" pluginspb "github.com/gravitational/teleport/api/gen/proto/go/teleport/plugins/v1" @@ -673,9 +674,9 @@ type Config struct { // MFAPromptConstructor is used to create MFA prompts when needed. // If nil, the client will not prompt for MFA. MFAPromptConstructor mfa.PromptConstructor - // SSOMFACeremonyConstructor is used to handle SSO MFA when needed. + // MFACeremonyConstructor is used to handle SSO or Browser MFA when needed. // If nil, the client will not prompt for MFA. - SSOMFACeremonyConstructor mfa.SSOMFACeremonyConstructor + MFACeremonyConstructor mfa.MFACeremonyConstructor } // CheckAndSetDefaults checks and sets default config values. @@ -742,9 +743,9 @@ func (c *Client) SetMFAPromptConstructor(pc mfa.PromptConstructor) { c.c.MFAPromptConstructor = pc } -// SetSSOMFACeremonyConstructor sets the SSO MFA ceremony constructor for this client. -func (c *Client) SetSSOMFACeremonyConstructor(scc mfa.SSOMFACeremonyConstructor) { - c.c.SSOMFACeremonyConstructor = scc +// SetMFACeremonyConstructor sets the MFA ceremony constructor for this client. +func (c *Client) SetMFACeremonyConstructor(mcc mfa.MFACeremonyConstructor) { + c.c.MFACeremonyConstructor = mcc } // Close closes the Client connection to the auth server. @@ -5521,6 +5522,11 @@ func (c *Client) StableUNIXUsersClient() stableunixusersv1.StableUNIXUsersServic return stableunixusersv1.NewStableUNIXUsersServiceClient(c.conn) } +// MFAServiceClient returns a client for the MFA service. +func (c *Client) MFAServiceClient() mfav1.MFAServiceClient { + return mfav1.NewMFAServiceClient(c.conn) +} + // GetCertAuthority retrieves a CA by type and domain. func (c *Client) GetCertAuthority(ctx context.Context, id types.CertAuthID, loadKeys bool) (types.CertAuthority, error) { trust := c.TrustClient() diff --git a/api/client/mfa.go b/api/client/mfa.go index 8db9af2b318f0..b4e8299447a07 100644 --- a/api/client/mfa.go +++ b/api/client/mfa.go @@ -30,7 +30,7 @@ func (c *Client) PerformMFACeremony(ctx context.Context, challengeRequest *proto mfaCeremony := &mfa.Ceremony{ CreateAuthenticateChallenge: c.CreateAuthenticateChallenge, PromptConstructor: c.c.MFAPromptConstructor, - SSOMFACeremonyConstructor: c.c.SSOMFACeremonyConstructor, + MFACeremonyConstructor: c.c.MFACeremonyConstructor, } return mfaCeremony.Run(ctx, challengeRequest, promptOpts...) } diff --git a/api/client/proto/authservice.pb.go b/api/client/proto/authservice.pb.go index 5a5061b9e855b..ad3e88ddc096f 100644 --- a/api/client/proto/authservice.pb.go +++ b/api/client/proto/authservice.pb.go @@ -6739,10 +6739,12 @@ type MFAAuthenticateChallenge struct { // SSO Challenge is an SSO MFA challenge. If set, the client can go to the // IdP redirect URL to perform an MFA check in the IdP and obtain an MFA token. // This token paired with the request id can then be used as MFA verification. - SSOChallenge *SSOChallenge `protobuf:"bytes,5,opt,name=SSOChallenge,proto3" json:"SSOChallenge,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + SSOChallenge *SSOChallenge `protobuf:"bytes,5,opt,name=SSOChallenge,proto3" json:"SSOChallenge,omitempty"` + // Browser Challenge is an MFA challenge that the user solves in the browser. + BrowserMFAChallenge *BrowserMFAChallenge `protobuf:"bytes,6,opt,name=BrowserMFAChallenge,proto3" json:"BrowserMFAChallenge,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *MFAAuthenticateChallenge) Reset() { *m = MFAAuthenticateChallenge{} } @@ -6806,6 +6808,13 @@ func (m *MFAAuthenticateChallenge) GetSSOChallenge() *SSOChallenge { return nil } +func (m *MFAAuthenticateChallenge) GetBrowserMFAChallenge() *BrowserMFAChallenge { + if m != nil { + return m.BrowserMFAChallenge + } + return nil +} + // MFAAuthenticateResponse is a response to MFAAuthenticateChallenge using one // of the MFA devices registered for a user. type MFAAuthenticateResponse struct { @@ -6813,6 +6822,7 @@ type MFAAuthenticateResponse struct { // *MFAAuthenticateResponse_TOTP // *MFAAuthenticateResponse_Webauthn // *MFAAuthenticateResponse_SSO + // *MFAAuthenticateResponse_Browser Response isMFAAuthenticateResponse_Response `protobuf_oneof:"Response"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -6867,10 +6877,14 @@ type MFAAuthenticateResponse_Webauthn struct { type MFAAuthenticateResponse_SSO struct { SSO *SSOResponse `protobuf:"bytes,4,opt,name=SSO,proto3,oneof" json:"SSO,omitempty"` } +type MFAAuthenticateResponse_Browser struct { + Browser *BrowserMFAResponse `protobuf:"bytes,5,opt,name=Browser,proto3,oneof" json:"Browser,omitempty"` +} func (*MFAAuthenticateResponse_TOTP) isMFAAuthenticateResponse_Response() {} func (*MFAAuthenticateResponse_Webauthn) isMFAAuthenticateResponse_Response() {} func (*MFAAuthenticateResponse_SSO) isMFAAuthenticateResponse_Response() {} +func (*MFAAuthenticateResponse_Browser) isMFAAuthenticateResponse_Response() {} func (m *MFAAuthenticateResponse) GetResponse() isMFAAuthenticateResponse_Response { if m != nil { @@ -6900,12 +6914,20 @@ func (m *MFAAuthenticateResponse) GetSSO() *SSOResponse { return nil } +func (m *MFAAuthenticateResponse) GetBrowser() *BrowserMFAResponse { + if x, ok := m.GetResponse().(*MFAAuthenticateResponse_Browser); ok { + return x.Browser + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*MFAAuthenticateResponse) XXX_OneofWrappers() []interface{} { return []interface{}{ (*MFAAuthenticateResponse_TOTP)(nil), (*MFAAuthenticateResponse_Webauthn)(nil), (*MFAAuthenticateResponse_SSO)(nil), + (*MFAAuthenticateResponse_Browser)(nil), } } @@ -7122,6 +7144,113 @@ func (m *SSOResponse) GetToken() string { return "" } +// BrowserMFAChallenge contains browser MFA request details to perform a browser MFA check. +type BrowserMFAChallenge struct { + // RequestId is the ID of a browser MFA request. + RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BrowserMFAChallenge) Reset() { *m = BrowserMFAChallenge{} } +func (m *BrowserMFAChallenge) String() string { return proto.CompactTextString(m) } +func (*BrowserMFAChallenge) ProtoMessage() {} +func (*BrowserMFAChallenge) Descriptor() ([]byte, []int) { + return fileDescriptor_0ffcffcda38ae159, []int{100} +} +func (m *BrowserMFAChallenge) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BrowserMFAChallenge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BrowserMFAChallenge.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *BrowserMFAChallenge) XXX_Merge(src proto.Message) { + xxx_messageInfo_BrowserMFAChallenge.Merge(m, src) +} +func (m *BrowserMFAChallenge) XXX_Size() int { + return m.Size() +} +func (m *BrowserMFAChallenge) XXX_DiscardUnknown() { + xxx_messageInfo_BrowserMFAChallenge.DiscardUnknown(m) +} + +var xxx_messageInfo_BrowserMFAChallenge proto.InternalMessageInfo + +func (m *BrowserMFAChallenge) GetRequestId() string { + if m != nil { + return m.RequestId + } + return "" +} + +// BrowserMFAResponse is a response to BrowserMFAChallenge. +type BrowserMFAResponse struct { + // RequestId is the ID of a browser MFA request. + RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` + // WebauthnResponse is the WebAuthn credential assertion response from the browser MFA flow. + WebauthnResponse *webauthn.CredentialAssertionResponse `protobuf:"bytes,2,opt,name=webauthn_response,json=webauthnResponse,proto3" json:"webauthn_response,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BrowserMFAResponse) Reset() { *m = BrowserMFAResponse{} } +func (m *BrowserMFAResponse) String() string { return proto.CompactTextString(m) } +func (*BrowserMFAResponse) ProtoMessage() {} +func (*BrowserMFAResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_0ffcffcda38ae159, []int{101} +} +func (m *BrowserMFAResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BrowserMFAResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BrowserMFAResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *BrowserMFAResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_BrowserMFAResponse.Merge(m, src) +} +func (m *BrowserMFAResponse) XXX_Size() int { + return m.Size() +} +func (m *BrowserMFAResponse) XXX_DiscardUnknown() { + xxx_messageInfo_BrowserMFAResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_BrowserMFAResponse proto.InternalMessageInfo + +func (m *BrowserMFAResponse) GetRequestId() string { + if m != nil { + return m.RequestId + } + return "" +} + +func (m *BrowserMFAResponse) GetWebauthnResponse() *webauthn.CredentialAssertionResponse { + if m != nil { + return m.WebauthnResponse + } + return nil +} + // MFARegisterChallenge is a challenge for registering a new MFA device. type MFARegisterChallenge struct { // Request depends on the type of the MFA device being registered. @@ -7139,7 +7268,7 @@ func (m *MFARegisterChallenge) Reset() { *m = MFARegisterChallenge{} } func (m *MFARegisterChallenge) String() string { return proto.CompactTextString(m) } func (*MFARegisterChallenge) ProtoMessage() {} func (*MFARegisterChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{100} + return fileDescriptor_0ffcffcda38ae159, []int{102} } func (m *MFARegisterChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7228,7 +7357,7 @@ func (m *MFARegisterResponse) Reset() { *m = MFARegisterResponse{} } func (m *MFARegisterResponse) String() string { return proto.CompactTextString(m) } func (*MFARegisterResponse) ProtoMessage() {} func (*MFARegisterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{101} + return fileDescriptor_0ffcffcda38ae159, []int{103} } func (m *MFARegisterResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7331,7 +7460,7 @@ func (m *TOTPRegisterChallenge) Reset() { *m = TOTPRegisterChallenge{} } func (m *TOTPRegisterChallenge) String() string { return proto.CompactTextString(m) } func (*TOTPRegisterChallenge) ProtoMessage() {} func (*TOTPRegisterChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{102} + return fileDescriptor_0ffcffcda38ae159, []int{104} } func (m *TOTPRegisterChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7430,7 +7559,7 @@ func (m *TOTPRegisterResponse) Reset() { *m = TOTPRegisterResponse{} } func (m *TOTPRegisterResponse) String() string { return proto.CompactTextString(m) } func (*TOTPRegisterResponse) ProtoMessage() {} func (*TOTPRegisterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{103} + return fileDescriptor_0ffcffcda38ae159, []int{105} } func (m *TOTPRegisterResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7484,7 +7613,7 @@ func (m *AddMFADeviceRequest) Reset() { *m = AddMFADeviceRequest{} } func (m *AddMFADeviceRequest) String() string { return proto.CompactTextString(m) } func (*AddMFADeviceRequest) ProtoMessage() {} func (*AddMFADeviceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{104} + return fileDescriptor_0ffcffcda38ae159, []int{106} } func (m *AddMFADeviceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7524,7 +7653,7 @@ func (m *AddMFADeviceResponse) Reset() { *m = AddMFADeviceResponse{} } func (m *AddMFADeviceResponse) String() string { return proto.CompactTextString(m) } func (*AddMFADeviceResponse) ProtoMessage() {} func (*AddMFADeviceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{105} + return fileDescriptor_0ffcffcda38ae159, []int{107} } func (m *AddMFADeviceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7564,7 +7693,7 @@ func (m *DeleteMFADeviceRequest) Reset() { *m = DeleteMFADeviceRequest{} func (m *DeleteMFADeviceRequest) String() string { return proto.CompactTextString(m) } func (*DeleteMFADeviceRequest) ProtoMessage() {} func (*DeleteMFADeviceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{106} + return fileDescriptor_0ffcffcda38ae159, []int{108} } func (m *DeleteMFADeviceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7604,7 +7733,7 @@ func (m *DeleteMFADeviceResponse) Reset() { *m = DeleteMFADeviceResponse func (m *DeleteMFADeviceResponse) String() string { return proto.CompactTextString(m) } func (*DeleteMFADeviceResponse) ProtoMessage() {} func (*DeleteMFADeviceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{107} + return fileDescriptor_0ffcffcda38ae159, []int{109} } func (m *DeleteMFADeviceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7659,7 +7788,7 @@ func (m *DeleteMFADeviceSyncRequest) Reset() { *m = DeleteMFADeviceSyncR func (m *DeleteMFADeviceSyncRequest) String() string { return proto.CompactTextString(m) } func (*DeleteMFADeviceSyncRequest) ProtoMessage() {} func (*DeleteMFADeviceSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{108} + return fileDescriptor_0ffcffcda38ae159, []int{110} } func (m *DeleteMFADeviceSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7739,7 +7868,7 @@ func (m *AddMFADeviceSyncRequest) Reset() { *m = AddMFADeviceSyncRequest func (m *AddMFADeviceSyncRequest) String() string { return proto.CompactTextString(m) } func (*AddMFADeviceSyncRequest) ProtoMessage() {} func (*AddMFADeviceSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{109} + return fileDescriptor_0ffcffcda38ae159, []int{111} } func (m *AddMFADeviceSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7815,7 +7944,7 @@ func (m *AddMFADeviceSyncResponse) Reset() { *m = AddMFADeviceSyncRespon func (m *AddMFADeviceSyncResponse) String() string { return proto.CompactTextString(m) } func (*AddMFADeviceSyncResponse) ProtoMessage() {} func (*AddMFADeviceSyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{110} + return fileDescriptor_0ffcffcda38ae159, []int{112} } func (m *AddMFADeviceSyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7870,7 +7999,7 @@ func (m *GetMFADevicesRequest) Reset() { *m = GetMFADevicesRequest{} } func (m *GetMFADevicesRequest) String() string { return proto.CompactTextString(m) } func (*GetMFADevicesRequest) ProtoMessage() {} func (*GetMFADevicesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{111} + return fileDescriptor_0ffcffcda38ae159, []int{113} } func (m *GetMFADevicesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7918,7 +8047,7 @@ func (m *GetMFADevicesResponse) Reset() { *m = GetMFADevicesResponse{} } func (m *GetMFADevicesResponse) String() string { return proto.CompactTextString(m) } func (*GetMFADevicesResponse) ProtoMessage() {} func (*GetMFADevicesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{112} + return fileDescriptor_0ffcffcda38ae159, []int{114} } func (m *GetMFADevicesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7965,7 +8094,7 @@ func (m *UserSingleUseCertsRequest) Reset() { *m = UserSingleUseCertsReq func (m *UserSingleUseCertsRequest) String() string { return proto.CompactTextString(m) } func (*UserSingleUseCertsRequest) ProtoMessage() {} func (*UserSingleUseCertsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{113} + return fileDescriptor_0ffcffcda38ae159, []int{115} } func (m *UserSingleUseCertsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8005,7 +8134,7 @@ func (m *UserSingleUseCertsResponse) Reset() { *m = UserSingleUseCertsRe func (m *UserSingleUseCertsResponse) String() string { return proto.CompactTextString(m) } func (*UserSingleUseCertsResponse) ProtoMessage() {} func (*UserSingleUseCertsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{114} + return fileDescriptor_0ffcffcda38ae159, []int{116} } func (m *UserSingleUseCertsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8054,7 +8183,7 @@ func (m *IsMFARequiredRequest) Reset() { *m = IsMFARequiredRequest{} } func (m *IsMFARequiredRequest) String() string { return proto.CompactTextString(m) } func (*IsMFARequiredRequest) ProtoMessage() {} func (*IsMFARequiredRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{115} + return fileDescriptor_0ffcffcda38ae159, []int{117} } func (m *IsMFARequiredRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8192,7 +8321,7 @@ func (m *StreamSessionEventsRequest) Reset() { *m = StreamSessionEventsR func (m *StreamSessionEventsRequest) String() string { return proto.CompactTextString(m) } func (*StreamSessionEventsRequest) ProtoMessage() {} func (*StreamSessionEventsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{116} + return fileDescriptor_0ffcffcda38ae159, []int{118} } func (m *StreamSessionEventsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8250,7 +8379,7 @@ func (m *NodeLogin) Reset() { *m = NodeLogin{} } func (m *NodeLogin) String() string { return proto.CompactTextString(m) } func (*NodeLogin) ProtoMessage() {} func (*NodeLogin) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{117} + return fileDescriptor_0ffcffcda38ae159, []int{119} } func (m *NodeLogin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8304,7 +8433,7 @@ func (m *AdminAction) Reset() { *m = AdminAction{} } func (m *AdminAction) String() string { return proto.CompactTextString(m) } func (*AdminAction) ProtoMessage() {} func (*AdminAction) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{118} + return fileDescriptor_0ffcffcda38ae159, []int{120} } func (m *AdminAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8349,7 +8478,7 @@ func (m *IsMFARequiredResponse) Reset() { *m = IsMFARequiredResponse{} } func (m *IsMFARequiredResponse) String() string { return proto.CompactTextString(m) } func (*IsMFARequiredResponse) ProtoMessage() {} func (*IsMFARequiredResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{119} + return fileDescriptor_0ffcffcda38ae159, []int{121} } func (m *IsMFARequiredResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8421,7 +8550,7 @@ func (m *GetEventsRequest) Reset() { *m = GetEventsRequest{} } func (m *GetEventsRequest) String() string { return proto.CompactTextString(m) } func (*GetEventsRequest) ProtoMessage() {} func (*GetEventsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{120} + return fileDescriptor_0ffcffcda38ae159, []int{122} } func (m *GetEventsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8529,7 +8658,7 @@ func (m *GetSessionEventsRequest) Reset() { *m = GetSessionEventsRequest func (m *GetSessionEventsRequest) String() string { return proto.CompactTextString(m) } func (*GetSessionEventsRequest) ProtoMessage() {} func (*GetSessionEventsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{121} + return fileDescriptor_0ffcffcda38ae159, []int{123} } func (m *GetSessionEventsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8609,7 +8738,7 @@ func (m *Events) Reset() { *m = Events{} } func (m *Events) String() string { return proto.CompactTextString(m) } func (*Events) ProtoMessage() {} func (*Events) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{122} + return fileDescriptor_0ffcffcda38ae159, []int{124} } func (m *Events) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8667,7 +8796,7 @@ func (m *GetLocksRequest) Reset() { *m = GetLocksRequest{} } func (m *GetLocksRequest) String() string { return proto.CompactTextString(m) } func (*GetLocksRequest) ProtoMessage() {} func (*GetLocksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{123} + return fileDescriptor_0ffcffcda38ae159, []int{125} } func (m *GetLocksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8722,7 +8851,7 @@ func (m *GetLocksResponse) Reset() { *m = GetLocksResponse{} } func (m *GetLocksResponse) String() string { return proto.CompactTextString(m) } func (*GetLocksResponse) ProtoMessage() {} func (*GetLocksResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{124} + return fileDescriptor_0ffcffcda38ae159, []int{126} } func (m *GetLocksResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8776,7 +8905,7 @@ func (m *ListLocksRequest) Reset() { *m = ListLocksRequest{} } func (m *ListLocksRequest) String() string { return proto.CompactTextString(m) } func (*ListLocksRequest) ProtoMessage() {} func (*ListLocksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{125} + return fileDescriptor_0ffcffcda38ae159, []int{127} } func (m *ListLocksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8842,7 +8971,7 @@ func (m *ListLocksResponse) Reset() { *m = ListLocksResponse{} } func (m *ListLocksResponse) String() string { return proto.CompactTextString(m) } func (*ListLocksResponse) ProtoMessage() {} func (*ListLocksResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{126} + return fileDescriptor_0ffcffcda38ae159, []int{128} } func (m *ListLocksResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8897,7 +9026,7 @@ func (m *GetLockRequest) Reset() { *m = GetLockRequest{} } func (m *GetLockRequest) String() string { return proto.CompactTextString(m) } func (*GetLockRequest) ProtoMessage() {} func (*GetLockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{127} + return fileDescriptor_0ffcffcda38ae159, []int{129} } func (m *GetLockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8945,7 +9074,7 @@ func (m *DeleteLockRequest) Reset() { *m = DeleteLockRequest{} } func (m *DeleteLockRequest) String() string { return proto.CompactTextString(m) } func (*DeleteLockRequest) ProtoMessage() {} func (*DeleteLockRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{128} + return fileDescriptor_0ffcffcda38ae159, []int{130} } func (m *DeleteLockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8995,7 +9124,7 @@ func (m *ReplaceRemoteLocksRequest) Reset() { *m = ReplaceRemoteLocksReq func (m *ReplaceRemoteLocksRequest) String() string { return proto.CompactTextString(m) } func (*ReplaceRemoteLocksRequest) ProtoMessage() {} func (*ReplaceRemoteLocksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{129} + return fileDescriptor_0ffcffcda38ae159, []int{131} } func (m *ReplaceRemoteLocksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9055,7 +9184,7 @@ func (m *ListAppsRequest) Reset() { *m = ListAppsRequest{} } func (m *ListAppsRequest) String() string { return proto.CompactTextString(m) } func (*ListAppsRequest) ProtoMessage() {} func (*ListAppsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{130} + return fileDescriptor_0ffcffcda38ae159, []int{132} } func (m *ListAppsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9113,7 +9242,7 @@ func (m *ListAppsResponse) Reset() { *m = ListAppsResponse{} } func (m *ListAppsResponse) String() string { return proto.CompactTextString(m) } func (*ListAppsResponse) ProtoMessage() {} func (*ListAppsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{131} + return fileDescriptor_0ffcffcda38ae159, []int{133} } func (m *ListAppsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9171,7 +9300,7 @@ func (m *ListDatabasesRequest) Reset() { *m = ListDatabasesRequest{} } func (m *ListDatabasesRequest) String() string { return proto.CompactTextString(m) } func (*ListDatabasesRequest) ProtoMessage() {} func (*ListDatabasesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{132} + return fileDescriptor_0ffcffcda38ae159, []int{134} } func (m *ListDatabasesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9229,7 +9358,7 @@ func (m *ListDatabasesResponse) Reset() { *m = ListDatabasesResponse{} } func (m *ListDatabasesResponse) String() string { return proto.CompactTextString(m) } func (*ListDatabasesResponse) ProtoMessage() {} func (*ListDatabasesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{133} + return fileDescriptor_0ffcffcda38ae159, []int{135} } func (m *ListDatabasesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9285,7 +9414,7 @@ func (m *GetWindowsDesktopServicesResponse) Reset() { *m = GetWindowsDes func (m *GetWindowsDesktopServicesResponse) String() string { return proto.CompactTextString(m) } func (*GetWindowsDesktopServicesResponse) ProtoMessage() {} func (*GetWindowsDesktopServicesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{134} + return fileDescriptor_0ffcffcda38ae159, []int{136} } func (m *GetWindowsDesktopServicesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9334,7 +9463,7 @@ func (m *GetWindowsDesktopServiceRequest) Reset() { *m = GetWindowsDeskt func (m *GetWindowsDesktopServiceRequest) String() string { return proto.CompactTextString(m) } func (*GetWindowsDesktopServiceRequest) ProtoMessage() {} func (*GetWindowsDesktopServiceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{135} + return fileDescriptor_0ffcffcda38ae159, []int{137} } func (m *GetWindowsDesktopServiceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9383,7 +9512,7 @@ func (m *GetWindowsDesktopServiceResponse) Reset() { *m = GetWindowsDesk func (m *GetWindowsDesktopServiceResponse) String() string { return proto.CompactTextString(m) } func (*GetWindowsDesktopServiceResponse) ProtoMessage() {} func (*GetWindowsDesktopServiceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{136} + return fileDescriptor_0ffcffcda38ae159, []int{138} } func (m *GetWindowsDesktopServiceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9432,7 +9561,7 @@ func (m *DeleteWindowsDesktopServiceRequest) Reset() { *m = DeleteWindow func (m *DeleteWindowsDesktopServiceRequest) String() string { return proto.CompactTextString(m) } func (*DeleteWindowsDesktopServiceRequest) ProtoMessage() {} func (*DeleteWindowsDesktopServiceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{137} + return fileDescriptor_0ffcffcda38ae159, []int{139} } func (m *DeleteWindowsDesktopServiceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9493,7 +9622,7 @@ func (m *ListWindowsDesktopsRequest) Reset() { *m = ListWindowsDesktopsR func (m *ListWindowsDesktopsRequest) String() string { return proto.CompactTextString(m) } func (*ListWindowsDesktopsRequest) ProtoMessage() {} func (*ListWindowsDesktopsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{138} + return fileDescriptor_0ffcffcda38ae159, []int{140} } func (m *ListWindowsDesktopsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9579,7 +9708,7 @@ func (m *ListWindowsDesktopsResponse) Reset() { *m = ListWindowsDesktops func (m *ListWindowsDesktopsResponse) String() string { return proto.CompactTextString(m) } func (*ListWindowsDesktopsResponse) ProtoMessage() {} func (*ListWindowsDesktopsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{139} + return fileDescriptor_0ffcffcda38ae159, []int{141} } func (m *ListWindowsDesktopsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9635,7 +9764,7 @@ func (m *GetWindowsDesktopsResponse) Reset() { *m = GetWindowsDesktopsRe func (m *GetWindowsDesktopsResponse) String() string { return proto.CompactTextString(m) } func (*GetWindowsDesktopsResponse) ProtoMessage() {} func (*GetWindowsDesktopsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{140} + return fileDescriptor_0ffcffcda38ae159, []int{142} } func (m *GetWindowsDesktopsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9688,7 +9817,7 @@ func (m *DeleteWindowsDesktopRequest) Reset() { *m = DeleteWindowsDeskto func (m *DeleteWindowsDesktopRequest) String() string { return proto.CompactTextString(m) } func (*DeleteWindowsDesktopRequest) ProtoMessage() {} func (*DeleteWindowsDesktopRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{141} + return fileDescriptor_0ffcffcda38ae159, []int{143} } func (m *DeleteWindowsDesktopRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9766,7 +9895,7 @@ func (m *WindowsDesktopCertRequest) Reset() { *m = WindowsDesktopCertReq func (m *WindowsDesktopCertRequest) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopCertRequest) ProtoMessage() {} func (*WindowsDesktopCertRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{142} + return fileDescriptor_0ffcffcda38ae159, []int{144} } func (m *WindowsDesktopCertRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9844,7 +9973,7 @@ func (m *WindowsDesktopCertResponse) Reset() { *m = WindowsDesktopCertRe func (m *WindowsDesktopCertResponse) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopCertResponse) ProtoMessage() {} func (*WindowsDesktopCertResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{143} + return fileDescriptor_0ffcffcda38ae159, []int{145} } func (m *WindowsDesktopCertResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9893,7 +10022,7 @@ func (m *DesktopBootstrapScriptResponse) Reset() { *m = DesktopBootstrap func (m *DesktopBootstrapScriptResponse) String() string { return proto.CompactTextString(m) } func (*DesktopBootstrapScriptResponse) ProtoMessage() {} func (*DesktopBootstrapScriptResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{144} + return fileDescriptor_0ffcffcda38ae159, []int{146} } func (m *DesktopBootstrapScriptResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9944,7 +10073,7 @@ func (m *ListSAMLIdPServiceProvidersRequest) Reset() { *m = ListSAMLIdPS func (m *ListSAMLIdPServiceProvidersRequest) String() string { return proto.CompactTextString(m) } func (*ListSAMLIdPServiceProvidersRequest) ProtoMessage() {} func (*ListSAMLIdPServiceProvidersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{145} + return fileDescriptor_0ffcffcda38ae159, []int{147} } func (m *ListSAMLIdPServiceProvidersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10004,7 +10133,7 @@ func (m *ListSAMLIdPServiceProvidersResponse) Reset() { *m = ListSAMLIdP func (m *ListSAMLIdPServiceProvidersResponse) String() string { return proto.CompactTextString(m) } func (*ListSAMLIdPServiceProvidersResponse) ProtoMessage() {} func (*ListSAMLIdPServiceProvidersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{146} + return fileDescriptor_0ffcffcda38ae159, []int{148} } func (m *ListSAMLIdPServiceProvidersResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10067,7 +10196,7 @@ func (m *GetSAMLIdPServiceProviderRequest) Reset() { *m = GetSAMLIdPServ func (m *GetSAMLIdPServiceProviderRequest) String() string { return proto.CompactTextString(m) } func (*GetSAMLIdPServiceProviderRequest) ProtoMessage() {} func (*GetSAMLIdPServiceProviderRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{147} + return fileDescriptor_0ffcffcda38ae159, []int{149} } func (m *GetSAMLIdPServiceProviderRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10116,7 +10245,7 @@ func (m *DeleteSAMLIdPServiceProviderRequest) Reset() { *m = DeleteSAMLI func (m *DeleteSAMLIdPServiceProviderRequest) String() string { return proto.CompactTextString(m) } func (*DeleteSAMLIdPServiceProviderRequest) ProtoMessage() {} func (*DeleteSAMLIdPServiceProviderRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{148} + return fileDescriptor_0ffcffcda38ae159, []int{150} } func (m *DeleteSAMLIdPServiceProviderRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10167,7 +10296,7 @@ func (m *ListUserGroupsRequest) Reset() { *m = ListUserGroupsRequest{} } func (m *ListUserGroupsRequest) String() string { return proto.CompactTextString(m) } func (*ListUserGroupsRequest) ProtoMessage() {} func (*ListUserGroupsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{149} + return fileDescriptor_0ffcffcda38ae159, []int{151} } func (m *ListUserGroupsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10227,7 +10356,7 @@ func (m *ListUserGroupsResponse) Reset() { *m = ListUserGroupsResponse{} func (m *ListUserGroupsResponse) String() string { return proto.CompactTextString(m) } func (*ListUserGroupsResponse) ProtoMessage() {} func (*ListUserGroupsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{150} + return fileDescriptor_0ffcffcda38ae159, []int{152} } func (m *ListUserGroupsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10290,7 +10419,7 @@ func (m *GetUserGroupRequest) Reset() { *m = GetUserGroupRequest{} } func (m *GetUserGroupRequest) String() string { return proto.CompactTextString(m) } func (*GetUserGroupRequest) ProtoMessage() {} func (*GetUserGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{151} + return fileDescriptor_0ffcffcda38ae159, []int{153} } func (m *GetUserGroupRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10339,7 +10468,7 @@ func (m *DeleteUserGroupRequest) Reset() { *m = DeleteUserGroupRequest{} func (m *DeleteUserGroupRequest) String() string { return proto.CompactTextString(m) } func (*DeleteUserGroupRequest) ProtoMessage() {} func (*DeleteUserGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{152} + return fileDescriptor_0ffcffcda38ae159, []int{154} } func (m *DeleteUserGroupRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10388,7 +10517,7 @@ func (m *CertAuthorityRequest) Reset() { *m = CertAuthorityRequest{} } func (m *CertAuthorityRequest) String() string { return proto.CompactTextString(m) } func (*CertAuthorityRequest) ProtoMessage() {} func (*CertAuthorityRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{153} + return fileDescriptor_0ffcffcda38ae159, []int{155} } func (m *CertAuthorityRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10437,7 +10566,7 @@ func (m *CRL) Reset() { *m = CRL{} } func (m *CRL) String() string { return proto.CompactTextString(m) } func (*CRL) ProtoMessage() {} func (*CRL) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{154} + return fileDescriptor_0ffcffcda38ae159, []int{156} } func (m *CRL) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10507,7 +10636,7 @@ func (m *ChangeUserAuthenticationRequest) Reset() { *m = ChangeUserAuthe func (m *ChangeUserAuthenticationRequest) String() string { return proto.CompactTextString(m) } func (*ChangeUserAuthenticationRequest) ProtoMessage() {} func (*ChangeUserAuthenticationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{155} + return fileDescriptor_0ffcffcda38ae159, []int{157} } func (m *ChangeUserAuthenticationRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10593,7 +10722,7 @@ func (m *ChangeUserAuthenticationResponse) Reset() { *m = ChangeUserAuth func (m *ChangeUserAuthenticationResponse) String() string { return proto.CompactTextString(m) } func (*ChangeUserAuthenticationResponse) ProtoMessage() {} func (*ChangeUserAuthenticationResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{156} + return fileDescriptor_0ffcffcda38ae159, []int{158} } func (m *ChangeUserAuthenticationResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10666,7 +10795,7 @@ func (m *StartAccountRecoveryRequest) Reset() { *m = StartAccountRecover func (m *StartAccountRecoveryRequest) String() string { return proto.CompactTextString(m) } func (*StartAccountRecoveryRequest) ProtoMessage() {} func (*StartAccountRecoveryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{157} + return fileDescriptor_0ffcffcda38ae159, []int{159} } func (m *StartAccountRecoveryRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10741,7 +10870,7 @@ func (m *VerifyAccountRecoveryRequest) Reset() { *m = VerifyAccountRecov func (m *VerifyAccountRecoveryRequest) String() string { return proto.CompactTextString(m) } func (*VerifyAccountRecoveryRequest) ProtoMessage() {} func (*VerifyAccountRecoveryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{158} + return fileDescriptor_0ffcffcda38ae159, []int{160} } func (m *VerifyAccountRecoveryRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10856,7 +10985,7 @@ func (m *CompleteAccountRecoveryRequest) Reset() { *m = CompleteAccountR func (m *CompleteAccountRecoveryRequest) String() string { return proto.CompactTextString(m) } func (*CompleteAccountRecoveryRequest) ProtoMessage() {} func (*CompleteAccountRecoveryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{159} + return fileDescriptor_0ffcffcda38ae159, []int{161} } func (m *CompleteAccountRecoveryRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10962,7 +11091,7 @@ func (m *RecoveryCodes) Reset() { *m = RecoveryCodes{} } func (m *RecoveryCodes) String() string { return proto.CompactTextString(m) } func (*RecoveryCodes) ProtoMessage() {} func (*RecoveryCodes) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{160} + return fileDescriptor_0ffcffcda38ae159, []int{162} } func (m *RecoveryCodes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11025,7 +11154,7 @@ func (m *CreateAccountRecoveryCodesRequest) Reset() { *m = CreateAccount func (m *CreateAccountRecoveryCodesRequest) String() string { return proto.CompactTextString(m) } func (*CreateAccountRecoveryCodesRequest) ProtoMessage() {} func (*CreateAccountRecoveryCodesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{161} + return fileDescriptor_0ffcffcda38ae159, []int{163} } func (m *CreateAccountRecoveryCodesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11076,7 +11205,7 @@ func (m *GetAccountRecoveryTokenRequest) Reset() { *m = GetAccountRecove func (m *GetAccountRecoveryTokenRequest) String() string { return proto.CompactTextString(m) } func (*GetAccountRecoveryTokenRequest) ProtoMessage() {} func (*GetAccountRecoveryTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{162} + return fileDescriptor_0ffcffcda38ae159, []int{164} } func (m *GetAccountRecoveryTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11124,7 +11253,7 @@ func (m *GetAccountRecoveryCodesRequest) Reset() { *m = GetAccountRecove func (m *GetAccountRecoveryCodesRequest) String() string { return proto.CompactTextString(m) } func (*GetAccountRecoveryCodesRequest) ProtoMessage() {} func (*GetAccountRecoveryCodesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{163} + return fileDescriptor_0ffcffcda38ae159, []int{165} } func (m *GetAccountRecoveryCodesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11166,7 +11295,7 @@ func (m *UserCredentials) Reset() { *m = UserCredentials{} } func (m *UserCredentials) String() string { return proto.CompactTextString(m) } func (*UserCredentials) ProtoMessage() {} func (*UserCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{164} + return fileDescriptor_0ffcffcda38ae159, []int{166} } func (m *UserCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11220,7 +11349,7 @@ func (m *ContextUser) Reset() { *m = ContextUser{} } func (m *ContextUser) String() string { return proto.CompactTextString(m) } func (*ContextUser) ProtoMessage() {} func (*ContextUser) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{165} + return fileDescriptor_0ffcffcda38ae159, []int{167} } func (m *ContextUser) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11260,7 +11389,7 @@ func (m *Passwordless) Reset() { *m = Passwordless{} } func (m *Passwordless) String() string { return proto.CompactTextString(m) } func (*Passwordless) ProtoMessage() {} func (*Passwordless) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{166} + return fileDescriptor_0ffcffcda38ae159, []int{168} } func (m *Passwordless) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11320,7 +11449,14 @@ type CreateAuthenticateChallengeRequest struct { // ProxyAddress is the proxy address that the user is using to connect to the Proxy. // When using SSO MFA, this address is required to determine which URL to redirect the // user to when there are multiple options. - ProxyAddress string `protobuf:"bytes,8,opt,name=ProxyAddress,proto3" json:"proxy_address,omitempty"` + ProxyAddress string `protobuf:"bytes,8,opt,name=ProxyAddress,proto3" json:"proxy_address,omitempty"` + // BrowserMFATSHRedirectURL should be supplied if the client supports Browser MFA checks. + // This is used by tsh to provide the tsh callback URL for browser MFA flows. + BrowserMFATSHRedirectURL string `protobuf:"bytes,9,opt,name=BrowserMFATSHRedirectURL,proto3" json:"browser_mfa_tsh_redirect_url,omitempty"` + // BrowserMFARequestID should be supplied when the browser is generating an MFA challenge + // for browser MFA. The auth server will look up the SSOMFASession with this ID to retrieve + // the challenge extensions and validate the requesting user matches the session owner. + BrowserMFARequestID string `protobuf:"bytes,10,opt,name=BrowserMFARequestID,proto3" json:"browser_mfa_request_id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -11330,7 +11466,7 @@ func (m *CreateAuthenticateChallengeRequest) Reset() { *m = CreateAuthen func (m *CreateAuthenticateChallengeRequest) String() string { return proto.CompactTextString(m) } func (*CreateAuthenticateChallengeRequest) ProtoMessage() {} func (*CreateAuthenticateChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{167} + return fileDescriptor_0ffcffcda38ae159, []int{169} } func (m *CreateAuthenticateChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11450,6 +11586,20 @@ func (m *CreateAuthenticateChallengeRequest) GetProxyAddress() string { return "" } +func (m *CreateAuthenticateChallengeRequest) GetBrowserMFATSHRedirectURL() string { + if m != nil { + return m.BrowserMFATSHRedirectURL + } + return "" +} + +func (m *CreateAuthenticateChallengeRequest) GetBrowserMFARequestID() string { + if m != nil { + return m.BrowserMFARequestID + } + return "" +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*CreateAuthenticateChallengeRequest) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -11478,7 +11628,7 @@ func (m *CreatePrivilegeTokenRequest) Reset() { *m = CreatePrivilegeToke func (m *CreatePrivilegeTokenRequest) String() string { return proto.CompactTextString(m) } func (*CreatePrivilegeTokenRequest) ProtoMessage() {} func (*CreatePrivilegeTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{168} + return fileDescriptor_0ffcffcda38ae159, []int{170} } func (m *CreatePrivilegeTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11547,7 +11697,7 @@ func (m *CreateRegisterChallengeRequest) Reset() { *m = CreateRegisterCh func (m *CreateRegisterChallengeRequest) String() string { return proto.CompactTextString(m) } func (*CreateRegisterChallengeRequest) ProtoMessage() {} func (*CreateRegisterChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{169} + return fileDescriptor_0ffcffcda38ae159, []int{171} } func (m *CreateRegisterChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11624,7 +11774,7 @@ func (m *IdentityCenterAccount) Reset() { *m = IdentityCenterAccount{} } func (m *IdentityCenterAccount) String() string { return proto.CompactTextString(m) } func (*IdentityCenterAccount) ProtoMessage() {} func (*IdentityCenterAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{170} + return fileDescriptor_0ffcffcda38ae159, []int{172} } func (m *IdentityCenterAccount) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11697,7 +11847,7 @@ func (m *IdentityCenterPermissionSet) Reset() { *m = IdentityCenterPermi func (m *IdentityCenterPermissionSet) String() string { return proto.CompactTextString(m) } func (*IdentityCenterPermissionSet) ProtoMessage() {} func (*IdentityCenterPermissionSet) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{171} + return fileDescriptor_0ffcffcda38ae159, []int{173} } func (m *IdentityCenterPermissionSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11769,7 +11919,7 @@ func (m *IdentityCenterAccountAssignment) Reset() { *m = IdentityCenterA func (m *IdentityCenterAccountAssignment) String() string { return proto.CompactTextString(m) } func (*IdentityCenterAccountAssignment) ProtoMessage() {} func (*IdentityCenterAccountAssignment) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{172} + return fileDescriptor_0ffcffcda38ae159, []int{174} } func (m *IdentityCenterAccountAssignment) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11862,7 +12012,7 @@ func (m *ListInstallersRequest) Reset() { *m = ListInstallersRequest{} } func (m *ListInstallersRequest) String() string { return proto.CompactTextString(m) } func (*ListInstallersRequest) ProtoMessage() {} func (*ListInstallersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{173} + return fileDescriptor_0ffcffcda38ae159, []int{175} } func (m *ListInstallersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11920,7 +12070,7 @@ func (m *ListInstallersResponse) Reset() { *m = ListInstallersResponse{} func (m *ListInstallersResponse) String() string { return proto.CompactTextString(m) } func (*ListInstallersResponse) ProtoMessage() {} func (*ListInstallersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{174} + return fileDescriptor_0ffcffcda38ae159, []int{176} } func (m *ListInstallersResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11995,7 +12145,7 @@ func (m *PaginatedResource) Reset() { *m = PaginatedResource{} } func (m *PaginatedResource) String() string { return proto.CompactTextString(m) } func (*PaginatedResource) ProtoMessage() {} func (*PaginatedResource) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{175} + return fileDescriptor_0ffcffcda38ae159, []int{177} } func (m *PaginatedResource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12247,7 +12397,7 @@ func (m *ListUnifiedResourcesRequest) Reset() { *m = ListUnifiedResource func (m *ListUnifiedResourcesRequest) String() string { return proto.CompactTextString(m) } func (*ListUnifiedResourcesRequest) ProtoMessage() {} func (*ListUnifiedResourcesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{176} + return fileDescriptor_0ffcffcda38ae159, []int{178} } func (m *ListUnifiedResourcesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12384,7 +12534,7 @@ func (m *ListUnifiedResourcesResponse) Reset() { *m = ListUnifiedResourc func (m *ListUnifiedResourcesResponse) String() string { return proto.CompactTextString(m) } func (*ListUnifiedResourcesResponse) ProtoMessage() {} func (*ListUnifiedResourcesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{177} + return fileDescriptor_0ffcffcda38ae159, []int{179} } func (m *ListUnifiedResourcesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12480,7 +12630,7 @@ func (m *ListResourcesRequest) Reset() { *m = ListResourcesRequest{} } func (m *ListResourcesRequest) String() string { return proto.CompactTextString(m) } func (*ListResourcesRequest) ProtoMessage() {} func (*ListResourcesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{178} + return fileDescriptor_0ffcffcda38ae159, []int{180} } func (m *ListResourcesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12631,7 +12781,7 @@ func (m *ResolveSSHTargetRequest) Reset() { *m = ResolveSSHTargetRequest func (m *ResolveSSHTargetRequest) String() string { return proto.CompactTextString(m) } func (*ResolveSSHTargetRequest) ProtoMessage() {} func (*ResolveSSHTargetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{179} + return fileDescriptor_0ffcffcda38ae159, []int{181} } func (m *ResolveSSHTargetRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12708,7 +12858,7 @@ func (m *ResolveSSHTargetResponse) Reset() { *m = ResolveSSHTargetRespon func (m *ResolveSSHTargetResponse) String() string { return proto.CompactTextString(m) } func (*ResolveSSHTargetResponse) ProtoMessage() {} func (*ResolveSSHTargetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{180} + return fileDescriptor_0ffcffcda38ae159, []int{182} } func (m *ResolveSSHTargetResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12760,7 +12910,7 @@ func (m *GetSSHTargetsRequest) Reset() { *m = GetSSHTargetsRequest{} } func (m *GetSSHTargetsRequest) String() string { return proto.CompactTextString(m) } func (*GetSSHTargetsRequest) ProtoMessage() {} func (*GetSSHTargetsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{181} + return fileDescriptor_0ffcffcda38ae159, []int{183} } func (m *GetSSHTargetsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12816,7 +12966,7 @@ func (m *GetSSHTargetsResponse) Reset() { *m = GetSSHTargetsResponse{} } func (m *GetSSHTargetsResponse) String() string { return proto.CompactTextString(m) } func (*GetSSHTargetsResponse) ProtoMessage() {} func (*GetSSHTargetsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{182} + return fileDescriptor_0ffcffcda38ae159, []int{184} } func (m *GetSSHTargetsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12871,7 +13021,7 @@ func (m *ListResourcesResponse) Reset() { *m = ListResourcesResponse{} } func (m *ListResourcesResponse) String() string { return proto.CompactTextString(m) } func (*ListResourcesResponse) ProtoMessage() {} func (*ListResourcesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{183} + return fileDescriptor_0ffcffcda38ae159, []int{185} } func (m *ListResourcesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12936,7 +13086,7 @@ func (m *CreateSessionTrackerRequest) Reset() { *m = CreateSessionTracke func (m *CreateSessionTrackerRequest) String() string { return proto.CompactTextString(m) } func (*CreateSessionTrackerRequest) ProtoMessage() {} func (*CreateSessionTrackerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{184} + return fileDescriptor_0ffcffcda38ae159, []int{186} } func (m *CreateSessionTrackerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12985,7 +13135,7 @@ func (m *GetSessionTrackerRequest) Reset() { *m = GetSessionTrackerReque func (m *GetSessionTrackerRequest) String() string { return proto.CompactTextString(m) } func (*GetSessionTrackerRequest) ProtoMessage() {} func (*GetSessionTrackerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{185} + return fileDescriptor_0ffcffcda38ae159, []int{187} } func (m *GetSessionTrackerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13034,7 +13184,7 @@ func (m *RemoveSessionTrackerRequest) Reset() { *m = RemoveSessionTracke func (m *RemoveSessionTrackerRequest) String() string { return proto.CompactTextString(m) } func (*RemoveSessionTrackerRequest) ProtoMessage() {} func (*RemoveSessionTrackerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{186} + return fileDescriptor_0ffcffcda38ae159, []int{188} } func (m *RemoveSessionTrackerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13082,7 +13232,7 @@ func (m *SessionTrackerUpdateState) Reset() { *m = SessionTrackerUpdateS func (m *SessionTrackerUpdateState) String() string { return proto.CompactTextString(m) } func (*SessionTrackerUpdateState) ProtoMessage() {} func (*SessionTrackerUpdateState) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{187} + return fileDescriptor_0ffcffcda38ae159, []int{189} } func (m *SessionTrackerUpdateState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13130,7 +13280,7 @@ func (m *SessionTrackerAddParticipant) Reset() { *m = SessionTrackerAddP func (m *SessionTrackerAddParticipant) String() string { return proto.CompactTextString(m) } func (*SessionTrackerAddParticipant) ProtoMessage() {} func (*SessionTrackerAddParticipant) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{188} + return fileDescriptor_0ffcffcda38ae159, []int{190} } func (m *SessionTrackerAddParticipant) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13178,7 +13328,7 @@ func (m *SessionTrackerRemoveParticipant) Reset() { *m = SessionTrackerR func (m *SessionTrackerRemoveParticipant) String() string { return proto.CompactTextString(m) } func (*SessionTrackerRemoveParticipant) ProtoMessage() {} func (*SessionTrackerRemoveParticipant) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{189} + return fileDescriptor_0ffcffcda38ae159, []int{191} } func (m *SessionTrackerRemoveParticipant) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13227,7 +13377,7 @@ func (m *SessionTrackerUpdateExpiry) Reset() { *m = SessionTrackerUpdate func (m *SessionTrackerUpdateExpiry) String() string { return proto.CompactTextString(m) } func (*SessionTrackerUpdateExpiry) ProtoMessage() {} func (*SessionTrackerUpdateExpiry) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{190} + return fileDescriptor_0ffcffcda38ae159, []int{192} } func (m *SessionTrackerUpdateExpiry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13282,7 +13432,7 @@ func (m *UpdateSessionTrackerRequest) Reset() { *m = UpdateSessionTracke func (m *UpdateSessionTrackerRequest) String() string { return proto.CompactTextString(m) } func (*UpdateSessionTrackerRequest) ProtoMessage() {} func (*UpdateSessionTrackerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{191} + return fileDescriptor_0ffcffcda38ae159, []int{193} } func (m *UpdateSessionTrackerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13396,7 +13546,14 @@ type PresenceMFAChallengeRequest struct { SSOClientRedirectURL string `protobuf:"bytes,2,opt,name=SSOClientRedirectURL,proto3" json:"sso_client_redirect_url,omitempty"` // ProxyAddress is the address of the proxy the client is connected to, used // to select a redirect URL for connectors that have more than one. - ProxyAddress string `protobuf:"bytes,3,opt,name=ProxyAddress,proto3" json:"proxy_address,omitempty"` + ProxyAddress string `protobuf:"bytes,3,opt,name=ProxyAddress,proto3" json:"proxy_address,omitempty"` + // BrowserMFATSHRedirectURL should be supplied if the client supports Browser MFA. + // If unset, the server will only return non-Browser MFA challenges. + BrowserMFATSHRedirectURL string `protobuf:"bytes,4,opt,name=BrowserMFATSHRedirectURL,proto3" json:"browser_mfa_tsh_redirect_url,omitempty"` + // BrowserMFARequestID should be supplied when the browser is generating an MFA challenge + // for browser MFA. The auth server will look up the MFASession with this ID to retrieve + // the challenge extensions and validate the requesting user matches the session owner. + BrowserMfaRequestId string `protobuf:"bytes,5,opt,name=browser_mfa_request_id,json=browserMfaRequestId,proto3" json:"browser_mfa_request_id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -13406,7 +13563,7 @@ func (m *PresenceMFAChallengeRequest) Reset() { *m = PresenceMFAChalleng func (m *PresenceMFAChallengeRequest) String() string { return proto.CompactTextString(m) } func (*PresenceMFAChallengeRequest) ProtoMessage() {} func (*PresenceMFAChallengeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{192} + return fileDescriptor_0ffcffcda38ae159, []int{194} } func (m *PresenceMFAChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13456,6 +13613,20 @@ func (m *PresenceMFAChallengeRequest) GetProxyAddress() string { return "" } +func (m *PresenceMFAChallengeRequest) GetBrowserMFATSHRedirectURL() string { + if m != nil { + return m.BrowserMFATSHRedirectURL + } + return "" +} + +func (m *PresenceMFAChallengeRequest) GetBrowserMfaRequestId() string { + if m != nil { + return m.BrowserMfaRequestId + } + return "" +} + // PresenceMFAChallengeSend is a presence challenge request or response. type PresenceMFAChallengeSend struct { // Types that are valid to be assigned to Request: @@ -13471,7 +13642,7 @@ func (m *PresenceMFAChallengeSend) Reset() { *m = PresenceMFAChallengeSe func (m *PresenceMFAChallengeSend) String() string { return proto.CompactTextString(m) } func (*PresenceMFAChallengeSend) ProtoMessage() {} func (*PresenceMFAChallengeSend) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{193} + return fileDescriptor_0ffcffcda38ae159, []int{195} } func (m *PresenceMFAChallengeSend) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13558,7 +13729,7 @@ func (m *GetDomainNameResponse) Reset() { *m = GetDomainNameResponse{} } func (m *GetDomainNameResponse) String() string { return proto.CompactTextString(m) } func (*GetDomainNameResponse) ProtoMessage() {} func (*GetDomainNameResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{194} + return fileDescriptor_0ffcffcda38ae159, []int{196} } func (m *GetDomainNameResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13607,7 +13778,7 @@ func (m *GetClusterCACertResponse) Reset() { *m = GetClusterCACertRespon func (m *GetClusterCACertResponse) String() string { return proto.CompactTextString(m) } func (*GetClusterCACertResponse) ProtoMessage() {} func (*GetClusterCACertResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{195} + return fileDescriptor_0ffcffcda38ae159, []int{197} } func (m *GetClusterCACertResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13655,7 +13826,7 @@ func (m *GetLicenseResponse) Reset() { *m = GetLicenseResponse{} } func (m *GetLicenseResponse) String() string { return proto.CompactTextString(m) } func (*GetLicenseResponse) ProtoMessage() {} func (*GetLicenseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{196} + return fileDescriptor_0ffcffcda38ae159, []int{198} } func (m *GetLicenseResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13703,7 +13874,7 @@ func (m *ListReleasesResponse) Reset() { *m = ListReleasesResponse{} } func (m *ListReleasesResponse) String() string { return proto.CompactTextString(m) } func (*ListReleasesResponse) ProtoMessage() {} func (*ListReleasesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{197} + return fileDescriptor_0ffcffcda38ae159, []int{199} } func (m *ListReleasesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13752,7 +13923,7 @@ func (m *GetOIDCAuthRequestRequest) Reset() { *m = GetOIDCAuthRequestReq func (m *GetOIDCAuthRequestRequest) String() string { return proto.CompactTextString(m) } func (*GetOIDCAuthRequestRequest) ProtoMessage() {} func (*GetOIDCAuthRequestRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{198} + return fileDescriptor_0ffcffcda38ae159, []int{200} } func (m *GetOIDCAuthRequestRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13801,7 +13972,7 @@ func (m *GetSAMLAuthRequestRequest) Reset() { *m = GetSAMLAuthRequestReq func (m *GetSAMLAuthRequestRequest) String() string { return proto.CompactTextString(m) } func (*GetSAMLAuthRequestRequest) ProtoMessage() {} func (*GetSAMLAuthRequestRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{199} + return fileDescriptor_0ffcffcda38ae159, []int{201} } func (m *GetSAMLAuthRequestRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13850,7 +14021,7 @@ func (m *GetGithubAuthRequestRequest) Reset() { *m = GetGithubAuthReques func (m *GetGithubAuthRequestRequest) String() string { return proto.CompactTextString(m) } func (*GetGithubAuthRequestRequest) ProtoMessage() {} func (*GetGithubAuthRequestRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{200} + return fileDescriptor_0ffcffcda38ae159, []int{202} } func (m *GetGithubAuthRequestRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13903,7 +14074,7 @@ func (m *ListOIDCConnectorsRequest) Reset() { *m = ListOIDCConnectorsReq func (m *ListOIDCConnectorsRequest) String() string { return proto.CompactTextString(m) } func (*ListOIDCConnectorsRequest) ProtoMessage() {} func (*ListOIDCConnectorsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{201} + return fileDescriptor_0ffcffcda38ae159, []int{203} } func (m *ListOIDCConnectorsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13968,7 +14139,7 @@ func (m *ListOIDCConnectorsResponse) Reset() { *m = ListOIDCConnectorsRe func (m *ListOIDCConnectorsResponse) String() string { return proto.CompactTextString(m) } func (*ListOIDCConnectorsResponse) ProtoMessage() {} func (*ListOIDCConnectorsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{202} + return fileDescriptor_0ffcffcda38ae159, []int{204} } func (m *ListOIDCConnectorsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14024,7 +14195,7 @@ func (m *CreateOIDCConnectorRequest) Reset() { *m = CreateOIDCConnectorR func (m *CreateOIDCConnectorRequest) String() string { return proto.CompactTextString(m) } func (*CreateOIDCConnectorRequest) ProtoMessage() {} func (*CreateOIDCConnectorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{203} + return fileDescriptor_0ffcffcda38ae159, []int{205} } func (m *CreateOIDCConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14073,7 +14244,7 @@ func (m *UpdateOIDCConnectorRequest) Reset() { *m = UpdateOIDCConnectorR func (m *UpdateOIDCConnectorRequest) String() string { return proto.CompactTextString(m) } func (*UpdateOIDCConnectorRequest) ProtoMessage() {} func (*UpdateOIDCConnectorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{204} + return fileDescriptor_0ffcffcda38ae159, []int{206} } func (m *UpdateOIDCConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14122,7 +14293,7 @@ func (m *UpsertOIDCConnectorRequest) Reset() { *m = UpsertOIDCConnectorR func (m *UpsertOIDCConnectorRequest) String() string { return proto.CompactTextString(m) } func (*UpsertOIDCConnectorRequest) ProtoMessage() {} func (*UpsertOIDCConnectorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{205} + return fileDescriptor_0ffcffcda38ae159, []int{207} } func (m *UpsertOIDCConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14171,7 +14342,7 @@ func (m *CreateSAMLConnectorRequest) Reset() { *m = CreateSAMLConnectorR func (m *CreateSAMLConnectorRequest) String() string { return proto.CompactTextString(m) } func (*CreateSAMLConnectorRequest) ProtoMessage() {} func (*CreateSAMLConnectorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{206} + return fileDescriptor_0ffcffcda38ae159, []int{208} } func (m *CreateSAMLConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14220,7 +14391,7 @@ func (m *UpdateSAMLConnectorRequest) Reset() { *m = UpdateSAMLConnectorR func (m *UpdateSAMLConnectorRequest) String() string { return proto.CompactTextString(m) } func (*UpdateSAMLConnectorRequest) ProtoMessage() {} func (*UpdateSAMLConnectorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{207} + return fileDescriptor_0ffcffcda38ae159, []int{209} } func (m *UpdateSAMLConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14269,7 +14440,7 @@ func (m *UpsertSAMLConnectorRequest) Reset() { *m = UpsertSAMLConnectorR func (m *UpsertSAMLConnectorRequest) String() string { return proto.CompactTextString(m) } func (*UpsertSAMLConnectorRequest) ProtoMessage() {} func (*UpsertSAMLConnectorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{208} + return fileDescriptor_0ffcffcda38ae159, []int{210} } func (m *UpsertSAMLConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14325,7 +14496,7 @@ func (m *ListSAMLConnectorsRequest) Reset() { *m = ListSAMLConnectorsReq func (m *ListSAMLConnectorsRequest) String() string { return proto.CompactTextString(m) } func (*ListSAMLConnectorsRequest) ProtoMessage() {} func (*ListSAMLConnectorsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{209} + return fileDescriptor_0ffcffcda38ae159, []int{211} } func (m *ListSAMLConnectorsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14397,7 +14568,7 @@ func (m *ListSAMLConnectorsResponse) Reset() { *m = ListSAMLConnectorsRe func (m *ListSAMLConnectorsResponse) String() string { return proto.CompactTextString(m) } func (*ListSAMLConnectorsResponse) ProtoMessage() {} func (*ListSAMLConnectorsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{210} + return fileDescriptor_0ffcffcda38ae159, []int{212} } func (m *ListSAMLConnectorsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14457,7 +14628,7 @@ func (m *ListGithubConnectorsRequest) Reset() { *m = ListGithubConnector func (m *ListGithubConnectorsRequest) String() string { return proto.CompactTextString(m) } func (*ListGithubConnectorsRequest) ProtoMessage() {} func (*ListGithubConnectorsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{211} + return fileDescriptor_0ffcffcda38ae159, []int{213} } func (m *ListGithubConnectorsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14522,7 +14693,7 @@ func (m *ListGithubConnectorsResponse) Reset() { *m = ListGithubConnecto func (m *ListGithubConnectorsResponse) String() string { return proto.CompactTextString(m) } func (*ListGithubConnectorsResponse) ProtoMessage() {} func (*ListGithubConnectorsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{212} + return fileDescriptor_0ffcffcda38ae159, []int{214} } func (m *ListGithubConnectorsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14578,7 +14749,7 @@ func (m *CreateGithubConnectorRequest) Reset() { *m = CreateGithubConnec func (m *CreateGithubConnectorRequest) String() string { return proto.CompactTextString(m) } func (*CreateGithubConnectorRequest) ProtoMessage() {} func (*CreateGithubConnectorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{213} + return fileDescriptor_0ffcffcda38ae159, []int{215} } func (m *CreateGithubConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14627,7 +14798,7 @@ func (m *UpdateGithubConnectorRequest) Reset() { *m = UpdateGithubConnec func (m *UpdateGithubConnectorRequest) String() string { return proto.CompactTextString(m) } func (*UpdateGithubConnectorRequest) ProtoMessage() {} func (*UpdateGithubConnectorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{214} + return fileDescriptor_0ffcffcda38ae159, []int{216} } func (m *UpdateGithubConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14676,7 +14847,7 @@ func (m *UpsertGithubConnectorRequest) Reset() { *m = UpsertGithubConnec func (m *UpsertGithubConnectorRequest) String() string { return proto.CompactTextString(m) } func (*UpsertGithubConnectorRequest) ProtoMessage() {} func (*UpsertGithubConnectorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{215} + return fileDescriptor_0ffcffcda38ae159, []int{217} } func (m *UpsertGithubConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14727,7 +14898,7 @@ func (m *GetSSODiagnosticInfoRequest) Reset() { *m = GetSSODiagnosticInf func (m *GetSSODiagnosticInfoRequest) String() string { return proto.CompactTextString(m) } func (*GetSSODiagnosticInfoRequest) ProtoMessage() {} func (*GetSSODiagnosticInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{216} + return fileDescriptor_0ffcffcda38ae159, []int{218} } func (m *GetSSODiagnosticInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14793,7 +14964,7 @@ func (m *SystemRoleAssertion) Reset() { *m = SystemRoleAssertion{} } func (m *SystemRoleAssertion) String() string { return proto.CompactTextString(m) } func (*SystemRoleAssertion) ProtoMessage() {} func (*SystemRoleAssertion) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{217} + return fileDescriptor_0ffcffcda38ae159, []int{219} } func (m *SystemRoleAssertion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14863,7 +15034,7 @@ func (m *SystemRoleAssertionSet) Reset() { *m = SystemRoleAssertionSet{} func (m *SystemRoleAssertionSet) String() string { return proto.CompactTextString(m) } func (*SystemRoleAssertionSet) ProtoMessage() {} func (*SystemRoleAssertionSet) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{218} + return fileDescriptor_0ffcffcda38ae159, []int{220} } func (m *SystemRoleAssertionSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14926,7 +15097,7 @@ func (m *InventoryConnectedServiceCountsRequest) Reset() { func (m *InventoryConnectedServiceCountsRequest) String() string { return proto.CompactTextString(m) } func (*InventoryConnectedServiceCountsRequest) ProtoMessage() {} func (*InventoryConnectedServiceCountsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{219} + return fileDescriptor_0ffcffcda38ae159, []int{221} } func (m *InventoryConnectedServiceCountsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14968,7 +15139,7 @@ func (m *InventoryConnectedServiceCounts) Reset() { *m = InventoryConnec func (m *InventoryConnectedServiceCounts) String() string { return proto.CompactTextString(m) } func (*InventoryConnectedServiceCounts) ProtoMessage() {} func (*InventoryConnectedServiceCounts) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{220} + return fileDescriptor_0ffcffcda38ae159, []int{222} } func (m *InventoryConnectedServiceCounts) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15022,7 +15193,7 @@ func (m *InventoryPingRequest) Reset() { *m = InventoryPingRequest{} } func (m *InventoryPingRequest) String() string { return proto.CompactTextString(m) } func (*InventoryPingRequest) ProtoMessage() {} func (*InventoryPingRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{221} + return fileDescriptor_0ffcffcda38ae159, []int{223} } func (m *InventoryPingRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15079,7 +15250,7 @@ func (m *InventoryPingResponse) Reset() { *m = InventoryPingResponse{} } func (m *InventoryPingResponse) String() string { return proto.CompactTextString(m) } func (*InventoryPingResponse) ProtoMessage() {} func (*InventoryPingResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{222} + return fileDescriptor_0ffcffcda38ae159, []int{224} } func (m *InventoryPingResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15128,7 +15299,7 @@ func (m *GetClusterAlertsResponse) Reset() { *m = GetClusterAlertsRespon func (m *GetClusterAlertsResponse) String() string { return proto.CompactTextString(m) } func (*GetClusterAlertsResponse) ProtoMessage() {} func (*GetClusterAlertsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{223} + return fileDescriptor_0ffcffcda38ae159, []int{225} } func (m *GetClusterAlertsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15175,7 +15346,7 @@ func (m *GetAlertAcksRequest) Reset() { *m = GetAlertAcksRequest{} } func (m *GetAlertAcksRequest) String() string { return proto.CompactTextString(m) } func (*GetAlertAcksRequest) ProtoMessage() {} func (*GetAlertAcksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{224} + return fileDescriptor_0ffcffcda38ae159, []int{226} } func (m *GetAlertAcksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15217,7 +15388,7 @@ func (m *GetAlertAcksResponse) Reset() { *m = GetAlertAcksResponse{} } func (m *GetAlertAcksResponse) String() string { return proto.CompactTextString(m) } func (*GetAlertAcksResponse) ProtoMessage() {} func (*GetAlertAcksResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{225} + return fileDescriptor_0ffcffcda38ae159, []int{227} } func (m *GetAlertAcksResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15266,7 +15437,7 @@ func (m *DeleteClusterAlertRequest) Reset() { *m = DeleteClusterAlertReq func (m *DeleteClusterAlertRequest) String() string { return proto.CompactTextString(m) } func (*DeleteClusterAlertRequest) ProtoMessage() {} func (*DeleteClusterAlertRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{226} + return fileDescriptor_0ffcffcda38ae159, []int{228} } func (m *DeleteClusterAlertRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15316,7 +15487,7 @@ func (m *ClearAlertAcksRequest) Reset() { *m = ClearAlertAcksRequest{} } func (m *ClearAlertAcksRequest) String() string { return proto.CompactTextString(m) } func (*ClearAlertAcksRequest) ProtoMessage() {} func (*ClearAlertAcksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{227} + return fileDescriptor_0ffcffcda38ae159, []int{229} } func (m *ClearAlertAcksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15365,7 +15536,7 @@ func (m *UpsertClusterAlertRequest) Reset() { *m = UpsertClusterAlertReq func (m *UpsertClusterAlertRequest) String() string { return proto.CompactTextString(m) } func (*UpsertClusterAlertRequest) ProtoMessage() {} func (*UpsertClusterAlertRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{228} + return fileDescriptor_0ffcffcda38ae159, []int{230} } func (m *UpsertClusterAlertRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15414,7 +15585,7 @@ func (m *GetConnectionDiagnosticRequest) Reset() { *m = GetConnectionDia func (m *GetConnectionDiagnosticRequest) String() string { return proto.CompactTextString(m) } func (*GetConnectionDiagnosticRequest) ProtoMessage() {} func (*GetConnectionDiagnosticRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{229} + return fileDescriptor_0ffcffcda38ae159, []int{231} } func (m *GetConnectionDiagnosticRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15465,7 +15636,7 @@ func (m *AppendDiagnosticTraceRequest) Reset() { *m = AppendDiagnosticTr func (m *AppendDiagnosticTraceRequest) String() string { return proto.CompactTextString(m) } func (*AppendDiagnosticTraceRequest) ProtoMessage() {} func (*AppendDiagnosticTraceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{230} + return fileDescriptor_0ffcffcda38ae159, []int{232} } func (m *AppendDiagnosticTraceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15520,7 +15691,7 @@ func (m *SubmitUsageEventRequest) Reset() { *m = SubmitUsageEventRequest func (m *SubmitUsageEventRequest) String() string { return proto.CompactTextString(m) } func (*SubmitUsageEventRequest) ProtoMessage() {} func (*SubmitUsageEventRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{231} + return fileDescriptor_0ffcffcda38ae159, []int{233} } func (m *SubmitUsageEventRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15567,7 +15738,7 @@ func (m *GetLicenseRequest) Reset() { *m = GetLicenseRequest{} } func (m *GetLicenseRequest) String() string { return proto.CompactTextString(m) } func (*GetLicenseRequest) ProtoMessage() {} func (*GetLicenseRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{232} + return fileDescriptor_0ffcffcda38ae159, []int{234} } func (m *GetLicenseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15607,7 +15778,7 @@ func (m *ListReleasesRequest) Reset() { *m = ListReleasesRequest{} } func (m *ListReleasesRequest) String() string { return proto.CompactTextString(m) } func (*ListReleasesRequest) ProtoMessage() {} func (*ListReleasesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{233} + return fileDescriptor_0ffcffcda38ae159, []int{235} } func (m *ListReleasesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15651,7 +15822,7 @@ func (m *CreateTokenV2Request) Reset() { *m = CreateTokenV2Request{} } func (m *CreateTokenV2Request) String() string { return proto.CompactTextString(m) } func (*CreateTokenV2Request) ProtoMessage() {} func (*CreateTokenV2Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{234} + return fileDescriptor_0ffcffcda38ae159, []int{236} } func (m *CreateTokenV2Request) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15728,7 +15899,7 @@ func (m *UpsertTokenV2Request) Reset() { *m = UpsertTokenV2Request{} } func (m *UpsertTokenV2Request) String() string { return proto.CompactTextString(m) } func (*UpsertTokenV2Request) ProtoMessage() {} func (*UpsertTokenV2Request) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{235} + return fileDescriptor_0ffcffcda38ae159, []int{237} } func (m *UpsertTokenV2Request) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15803,7 +15974,7 @@ func (m *GetHeadlessAuthenticationRequest) Reset() { *m = GetHeadlessAut func (m *GetHeadlessAuthenticationRequest) String() string { return proto.CompactTextString(m) } func (*GetHeadlessAuthenticationRequest) ProtoMessage() {} func (*GetHeadlessAuthenticationRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{236} + return fileDescriptor_0ffcffcda38ae159, []int{238} } func (m *GetHeadlessAuthenticationRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15861,7 +16032,7 @@ func (m *UpdateHeadlessAuthenticationStateRequest) Reset() { func (m *UpdateHeadlessAuthenticationStateRequest) String() string { return proto.CompactTextString(m) } func (*UpdateHeadlessAuthenticationStateRequest) ProtoMessage() {} func (*UpdateHeadlessAuthenticationStateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{237} + return fileDescriptor_0ffcffcda38ae159, []int{239} } func (m *UpdateHeadlessAuthenticationStateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15927,7 +16098,7 @@ func (m *ExportUpgradeWindowsRequest) Reset() { *m = ExportUpgradeWindow func (m *ExportUpgradeWindowsRequest) String() string { return proto.CompactTextString(m) } func (*ExportUpgradeWindowsRequest) ProtoMessage() {} func (*ExportUpgradeWindowsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{238} + return fileDescriptor_0ffcffcda38ae159, []int{240} } func (m *ExportUpgradeWindowsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15993,7 +16164,7 @@ func (m *ExportUpgradeWindowsResponse) Reset() { *m = ExportUpgradeWindo func (m *ExportUpgradeWindowsResponse) String() string { return proto.CompactTextString(m) } func (*ExportUpgradeWindowsResponse) ProtoMessage() {} func (*ExportUpgradeWindowsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{239} + return fileDescriptor_0ffcffcda38ae159, []int{241} } func (m *ExportUpgradeWindowsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16068,7 +16239,7 @@ func (m *ListAccessRequestsRequest) Reset() { *m = ListAccessRequestsReq func (m *ListAccessRequestsRequest) String() string { return proto.CompactTextString(m) } func (*ListAccessRequestsRequest) ProtoMessage() {} func (*ListAccessRequestsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{240} + return fileDescriptor_0ffcffcda38ae159, []int{242} } func (m *ListAccessRequestsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16147,7 +16318,7 @@ func (m *ListAccessRequestsResponse) Reset() { *m = ListAccessRequestsRe func (m *ListAccessRequestsResponse) String() string { return proto.CompactTextString(m) } func (*ListAccessRequestsResponse) ProtoMessage() {} func (*ListAccessRequestsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{241} + return fileDescriptor_0ffcffcda38ae159, []int{243} } func (m *ListAccessRequestsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16203,7 +16374,7 @@ func (m *AccessRequestAllowedPromotionRequest) Reset() { *m = AccessRequ func (m *AccessRequestAllowedPromotionRequest) String() string { return proto.CompactTextString(m) } func (*AccessRequestAllowedPromotionRequest) ProtoMessage() {} func (*AccessRequestAllowedPromotionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{242} + return fileDescriptor_0ffcffcda38ae159, []int{244} } func (m *AccessRequestAllowedPromotionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16252,7 +16423,7 @@ func (m *AccessRequestAllowedPromotionResponse) Reset() { *m = AccessReq func (m *AccessRequestAllowedPromotionResponse) String() string { return proto.CompactTextString(m) } func (*AccessRequestAllowedPromotionResponse) ProtoMessage() {} func (*AccessRequestAllowedPromotionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{243} + return fileDescriptor_0ffcffcda38ae159, []int{245} } func (m *AccessRequestAllowedPromotionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16311,7 +16482,7 @@ func (m *ListProvisionTokensRequest) Reset() { *m = ListProvisionTokensR func (m *ListProvisionTokensRequest) String() string { return proto.CompactTextString(m) } func (*ListProvisionTokensRequest) ProtoMessage() {} func (*ListProvisionTokensRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{244} + return fileDescriptor_0ffcffcda38ae159, []int{246} } func (m *ListProvisionTokensRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16384,7 +16555,7 @@ func (m *ListProvisionTokensResponse) Reset() { *m = ListProvisionTokens func (m *ListProvisionTokensResponse) String() string { return proto.CompactTextString(m) } func (*ListProvisionTokensResponse) ProtoMessage() {} func (*ListProvisionTokensResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{245} + return fileDescriptor_0ffcffcda38ae159, []int{247} } func (m *ListProvisionTokensResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16442,7 +16613,7 @@ func (m *ListKubernetesClustersRequest) Reset() { *m = ListKubernetesClu func (m *ListKubernetesClustersRequest) String() string { return proto.CompactTextString(m) } func (*ListKubernetesClustersRequest) ProtoMessage() {} func (*ListKubernetesClustersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{246} + return fileDescriptor_0ffcffcda38ae159, []int{248} } func (m *ListKubernetesClustersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16500,7 +16671,7 @@ func (m *ListKubernetesClustersResponse) Reset() { *m = ListKubernetesCl func (m *ListKubernetesClustersResponse) String() string { return proto.CompactTextString(m) } func (*ListKubernetesClustersResponse) ProtoMessage() {} func (*ListKubernetesClustersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{247} + return fileDescriptor_0ffcffcda38ae159, []int{249} } func (m *ListKubernetesClustersResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16558,7 +16729,7 @@ func (m *ListSnowflakeSessionsRequest) Reset() { *m = ListSnowflakeSessi func (m *ListSnowflakeSessionsRequest) String() string { return proto.CompactTextString(m) } func (*ListSnowflakeSessionsRequest) ProtoMessage() {} func (*ListSnowflakeSessionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{248} + return fileDescriptor_0ffcffcda38ae159, []int{250} } func (m *ListSnowflakeSessionsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16616,7 +16787,7 @@ func (m *ListSnowflakeSessionsResponse) Reset() { *m = ListSnowflakeSess func (m *ListSnowflakeSessionsResponse) String() string { return proto.CompactTextString(m) } func (*ListSnowflakeSessionsResponse) ProtoMessage() {} func (*ListSnowflakeSessionsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{249} + return fileDescriptor_0ffcffcda38ae159, []int{251} } func (m *ListSnowflakeSessionsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16775,6 +16946,8 @@ func init() { proto.RegisterType((*TOTPResponse)(nil), "proto.TOTPResponse") proto.RegisterType((*SSOChallenge)(nil), "proto.SSOChallenge") proto.RegisterType((*SSOResponse)(nil), "proto.SSOResponse") + proto.RegisterType((*BrowserMFAChallenge)(nil), "proto.BrowserMFAChallenge") + proto.RegisterType((*BrowserMFAResponse)(nil), "proto.BrowserMFAResponse") proto.RegisterType((*MFARegisterChallenge)(nil), "proto.MFARegisterChallenge") proto.RegisterType((*MFARegisterResponse)(nil), "proto.MFARegisterResponse") proto.RegisterType((*TOTPRegisterChallenge)(nil), "proto.TOTPRegisterChallenge") @@ -16937,996 +17110,1006 @@ func init() { } var fileDescriptor_0ffcffcda38ae159 = []byte{ - // 15819 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0xbd, 0x59, 0x8c, 0x1c, 0x59, - 0x76, 0x18, 0xca, 0xac, 0x35, 0xeb, 0xd4, 0x96, 0x75, 0xab, 0x8a, 0x95, 0xac, 0x22, 0x99, 0x64, - 0xb0, 0xc9, 0x66, 0xf7, 0xf4, 0x70, 0x29, 0x76, 0xf7, 0xf4, 0x32, 0xdd, 0x3d, 0x99, 0x59, 0x49, - 0x56, 0x91, 0xb5, 0x64, 0x47, 0xd6, 0xd2, 0x9b, 0x26, 0x27, 0x98, 0x79, 0x59, 0x15, 0x62, 0x66, - 0x44, 0x4e, 0x44, 0x24, 0xd9, 0x1c, 0x69, 0xf4, 0x9e, 0x34, 0x6f, 0xd1, 0xcf, 0x7b, 0x4f, 0x0f, - 0x90, 0x04, 0x3d, 0x3c, 0xc3, 0xb2, 0x01, 0x1b, 0x06, 0x0c, 0x18, 0xf0, 0x8f, 0xa1, 0x2f, 0xd9, - 0xb0, 0x01, 0xc3, 0x63, 0xc1, 0x86, 0x0c, 0xd8, 0xfa, 0xf1, 0x47, 0xc9, 0x1e, 0xc0, 0x3f, 0x05, - 0xff, 0x08, 0x86, 0x0d, 0x78, 0x04, 0x01, 0xc6, 0x5d, 0xe3, 0xde, 0x58, 0x32, 0xb3, 0xc8, 0xea, - 0x96, 0x7f, 0xc8, 0xca, 0x7b, 0x96, 0x7b, 0xe3, 0xdc, 0xed, 0x9c, 0x73, 0xcf, 0x3d, 0x17, 0x6e, - 0x05, 0xb8, 0x85, 0x3b, 0xae, 0x17, 0xdc, 0x6e, 0xe1, 0x43, 0xab, 0xf1, 0xe2, 0x76, 0xa3, 0x65, - 0x63, 0x27, 0xb8, 0xdd, 0xf1, 0xdc, 0xc0, 0xbd, 0x6d, 0x75, 0x83, 0x23, 0x1f, 0x7b, 0xcf, 0xec, - 0x06, 0xbe, 0x45, 0x4b, 0xd0, 0x28, 0xfd, 0x6f, 0x79, 0xe1, 0xd0, 0x3d, 0x74, 0x19, 0x0e, 0xf9, - 0x8b, 0x01, 0x97, 0x57, 0x0e, 0x5d, 0xf7, 0xb0, 0x85, 0x19, 0xf1, 0xe3, 0xee, 0x93, 0xdb, 0xb8, - 0xdd, 0x09, 0x5e, 0x70, 0x60, 0x21, 0x0a, 0x0c, 0xec, 0x36, 0xf6, 0x03, 0xab, 0xdd, 0xe1, 0x08, - 0x6f, 0xc8, 0xa6, 0x58, 0x41, 0x40, 0x20, 0x81, 0xed, 0x3a, 0xb7, 0x9f, 0xdd, 0x55, 0x7f, 0x72, - 0xd4, 0x9b, 0x3d, 0x5b, 0xdd, 0xc0, 0x5e, 0xe0, 0x0f, 0x84, 0x89, 0x9f, 0x61, 0x27, 0xe0, 0x98, - 0x6f, 0xf5, 0xc4, 0xb4, 0x1d, 0x82, 0xea, 0x7a, 0xe2, 0x6b, 0xde, 0xee, 0x89, 0xed, 0xe1, 0x1f, - 0x77, 0x49, 0x93, 0x1f, 0xb7, 0x70, 0xdd, 0x73, 0x5b, 0xd8, 0x8f, 0x7d, 0x22, 0xa7, 0x0a, 0x5e, - 0x74, 0xb0, 0xcf, 0x9a, 0x21, 0xfe, 0xe3, 0xa8, 0x57, 0x93, 0x51, 0xe9, 0xbf, 0x1c, 0xe5, 0xbb, - 0xc9, 0x28, 0xcf, 0xf1, 0x63, 0xd2, 0x6f, 0x8e, 0xfc, 0xa3, 0x0f, 0xba, 0x67, 0x75, 0x3a, 0xd8, - 0x0b, 0xff, 0xe0, 0xe8, 0x17, 0x24, 0x7a, 0xfb, 0x89, 0x45, 0xba, 0xa1, 0xfd, 0xc4, 0x8a, 0x7d, - 0x46, 0xd7, 0xb7, 0x0e, 0x31, 0x6f, 0xfe, 0xb3, 0xbb, 0xea, 0x4f, 0x86, 0x6a, 0xfc, 0x61, 0x06, - 0x46, 0x0f, 0xac, 0xa0, 0x71, 0x84, 0x3e, 0x81, 0xd1, 0x47, 0xb6, 0xd3, 0xf4, 0xf3, 0x99, 0x2b, - 0xc3, 0x37, 0x27, 0x57, 0x73, 0xb7, 0xd8, 0xa7, 0x50, 0x20, 0x01, 0x94, 0x96, 0x7e, 0x7e, 0x5c, - 0x38, 0x77, 0x72, 0x5c, 0x98, 0x7d, 0x4a, 0xd0, 0xde, 0x72, 0xdb, 0x76, 0x40, 0xc7, 0x8f, 0xc9, - 0xe8, 0xd0, 0x1e, 0xcc, 0x17, 0x5b, 0x2d, 0xf7, 0x79, 0xd5, 0xf2, 0x02, 0xdb, 0x6a, 0xd5, 0xba, - 0x8d, 0x06, 0xf6, 0xfd, 0xfc, 0xd0, 0x95, 0xcc, 0xcd, 0x6c, 0xe9, 0xda, 0xc9, 0x71, 0xa1, 0x60, - 0x11, 0x70, 0xbd, 0xc3, 0xe0, 0x75, 0x9f, 0x21, 0x28, 0x8c, 0x92, 0xe8, 0x8d, 0x3f, 0x19, 0x83, - 0xdc, 0xba, 0xeb, 0x07, 0x65, 0x32, 0x6a, 0x4c, 0xd6, 0x71, 0xe8, 0x1a, 0x8c, 0x91, 0xb2, 0x8d, - 0xb5, 0x7c, 0xe6, 0x4a, 0xe6, 0xe6, 0x44, 0x69, 0xf2, 0xe4, 0xb8, 0x30, 0x7e, 0xe4, 0xfa, 0x41, - 0xdd, 0x6e, 0x9a, 0x1c, 0x84, 0xde, 0x80, 0xec, 0xb6, 0xdb, 0xc4, 0xdb, 0x56, 0x1b, 0xd3, 0x56, - 0x4c, 0x94, 0xa6, 0x4f, 0x8e, 0x0b, 0x13, 0x8e, 0xdb, 0xc4, 0x75, 0xc7, 0x6a, 0x63, 0x53, 0x82, - 0xd1, 0x3e, 0x8c, 0x98, 0x6e, 0x0b, 0xe7, 0x87, 0x29, 0x5a, 0xe9, 0xe4, 0xb8, 0x30, 0x42, 0xc6, - 0xc5, 0x2f, 0x8f, 0x0b, 0xef, 0x1e, 0xda, 0xc1, 0x51, 0xf7, 0xf1, 0xad, 0x86, 0xdb, 0xbe, 0x7d, - 0xe8, 0x59, 0xcf, 0x6c, 0x36, 0xd0, 0xad, 0xd6, 0xed, 0x70, 0x3a, 0x74, 0x6c, 0xde, 0xef, 0xb5, - 0x17, 0x7e, 0x80, 0xdb, 0x84, 0x93, 0x49, 0xf9, 0xa1, 0x03, 0x58, 0x28, 0x36, 0x9b, 0x36, 0xa3, - 0xa8, 0x7a, 0xb6, 0xd3, 0xb0, 0x3b, 0x56, 0xcb, 0xcf, 0x8f, 0x5c, 0x19, 0xbe, 0x39, 0xc1, 0x85, - 0x22, 0xe1, 0xf5, 0x8e, 0x44, 0x50, 0x84, 0x92, 0xc8, 0x00, 0xdd, 0x83, 0xec, 0xda, 0x76, 0x8d, - 0xb4, 0xdd, 0xcf, 0x8f, 0x52, 0x66, 0x4b, 0x27, 0xc7, 0x85, 0xf9, 0xa6, 0xe3, 0xd3, 0x4f, 0x53, - 0x19, 0x48, 0x44, 0xf4, 0x2e, 0x4c, 0x55, 0xbb, 0x8f, 0x5b, 0x76, 0x63, 0x77, 0xb3, 0xf6, 0x08, - 0xbf, 0xc8, 0x8f, 0x5d, 0xc9, 0xdc, 0x9c, 0x2a, 0xa1, 0x93, 0xe3, 0xc2, 0x4c, 0x87, 0x96, 0xd7, - 0x83, 0x96, 0x5f, 0x7f, 0x8a, 0x5f, 0x98, 0x1a, 0x5e, 0x48, 0x57, 0xab, 0xad, 0x13, 0xba, 0xf1, - 0x18, 0x9d, 0xef, 0x1f, 0xa9, 0x74, 0x0c, 0x0f, 0xdd, 0x06, 0x30, 0x71, 0xdb, 0x0d, 0x70, 0xb1, - 0xd9, 0xf4, 0xf2, 0x59, 0x2a, 0xdb, 0xd9, 0x93, 0xe3, 0xc2, 0xa4, 0x47, 0x4b, 0xeb, 0x56, 0xb3, - 0xe9, 0x99, 0x0a, 0x0a, 0x2a, 0x43, 0xd6, 0x74, 0x99, 0x80, 0xf3, 0x13, 0x57, 0x32, 0x37, 0x27, - 0x57, 0x67, 0xf9, 0x30, 0x14, 0xc5, 0xa5, 0xf3, 0x27, 0xc7, 0x05, 0xe4, 0xf1, 0x5f, 0xea, 0x57, - 0x0a, 0x0c, 0x54, 0x80, 0xf1, 0x6d, 0xb7, 0x6c, 0x35, 0x8e, 0x70, 0x1e, 0xe8, 0xd8, 0x1b, 0x3d, - 0x39, 0x2e, 0x64, 0xbe, 0x6b, 0x8a, 0x52, 0xf4, 0x0c, 0x26, 0xc3, 0x8e, 0xf2, 0xf3, 0x93, 0x54, - 0x7c, 0xbb, 0x27, 0xc7, 0x85, 0xf3, 0x3e, 0x2d, 0x66, 0x4b, 0x42, 0xc8, 0xfb, 0x15, 0x46, 0x81, - 0x5a, 0x11, 0xfa, 0x0a, 0x16, 0xc3, 0x9f, 0x45, 0xdf, 0xc7, 0x1e, 0xe1, 0xb1, 0xb1, 0x96, 0x9f, - 0xa6, 0x92, 0xb9, 0x71, 0x72, 0x5c, 0x30, 0x94, 0x16, 0xd4, 0x2d, 0x81, 0x52, 0xb7, 0x9b, 0xca, - 0x97, 0x26, 0x33, 0x79, 0x38, 0x92, 0x9d, 0xca, 0x4d, 0x9b, 0x97, 0xf6, 0x1c, 0xb6, 0xae, 0x25, - 0x22, 0x19, 0x7f, 0x95, 0x01, 0xb4, 0xd3, 0xc1, 0x4e, 0xad, 0xb6, 0x4e, 0xe6, 0x93, 0x98, 0x4e, - 0x6f, 0xc1, 0x04, 0xeb, 0x38, 0xd2, 0xbb, 0x43, 0xb4, 0x77, 0x67, 0x4e, 0x8e, 0x0b, 0xc0, 0x7b, - 0x97, 0xf4, 0x6c, 0x88, 0x80, 0xae, 0xc3, 0xf0, 0xee, 0xee, 0x26, 0x9d, 0x2b, 0xc3, 0xa5, 0xf9, - 0x93, 0xe3, 0xc2, 0x70, 0x10, 0xb4, 0x7e, 0x79, 0x5c, 0xc8, 0xae, 0x75, 0x3d, 0x2a, 0x16, 0x93, - 0xc0, 0xd1, 0x75, 0x18, 0x2f, 0xb7, 0xba, 0x7e, 0x80, 0xbd, 0xfc, 0x48, 0x38, 0x49, 0x1b, 0xac, - 0xc8, 0x14, 0x30, 0xf4, 0x1d, 0x18, 0xd9, 0xf3, 0xb1, 0x97, 0x1f, 0xa5, 0xfd, 0x3d, 0xcd, 0xfb, - 0x9b, 0x14, 0xed, 0xaf, 0x96, 0xb2, 0x64, 0x26, 0x76, 0x7d, 0xec, 0x99, 0x14, 0x09, 0xdd, 0x82, - 0x51, 0xd6, 0x69, 0x63, 0x74, 0x91, 0x9a, 0x96, 0xa3, 0xa3, 0x85, 0xf7, 0xdf, 0x2d, 0x4d, 0x9c, - 0x1c, 0x17, 0x46, 0x69, 0xe7, 0x99, 0x0c, 0xed, 0xe1, 0x48, 0x36, 0x93, 0x1b, 0x32, 0xb3, 0x84, - 0x96, 0x4c, 0x0b, 0xe3, 0x3b, 0x30, 0xa9, 0x7c, 0x3e, 0xba, 0x08, 0x23, 0xe4, 0x7f, 0xba, 0x88, - 0x4c, 0xb1, 0xca, 0xc8, 0xe6, 0x64, 0xd2, 0x52, 0xe3, 0x4f, 0xe7, 0x21, 0x47, 0x28, 0xb5, 0x95, - 0xe7, 0x26, 0x48, 0x6e, 0x7c, 0x51, 0x99, 0x3a, 0x39, 0x2e, 0x64, 0xbb, 0xbc, 0x2c, 0xac, 0x0b, - 0xd5, 0x60, 0xbc, 0xf2, 0x75, 0xc7, 0xf6, 0xb0, 0x4f, 0x45, 0x35, 0xb9, 0xba, 0x7c, 0x8b, 0x6d, - 0xb1, 0xb7, 0xc4, 0x16, 0x7b, 0x6b, 0x57, 0x6c, 0xb1, 0xa5, 0x4b, 0x7c, 0x71, 0x9d, 0xc3, 0x8c, - 0x24, 0xec, 0xef, 0xdf, 0xf9, 0xf3, 0x42, 0xc6, 0x14, 0x9c, 0xd0, 0x5b, 0x30, 0x76, 0xdf, 0xf5, - 0xda, 0x56, 0xc0, 0x65, 0xba, 0x70, 0x72, 0x5c, 0xc8, 0x3d, 0xa1, 0x25, 0xca, 0x10, 0xe1, 0x38, - 0xe8, 0x3e, 0xcc, 0x98, 0x6e, 0x37, 0xc0, 0xbb, 0xae, 0xe8, 0x89, 0x51, 0x4a, 0x75, 0xf9, 0xe4, - 0xb8, 0xb0, 0xec, 0x11, 0x48, 0x3d, 0x70, 0xeb, 0xbc, 0x4b, 0x14, 0xfa, 0x08, 0x15, 0xaa, 0xc0, - 0x4c, 0x91, 0xae, 0xc6, 0x5c, 0x0a, 0x4c, 0xfe, 0x13, 0xa5, 0x4b, 0x27, 0xc7, 0x85, 0x0b, 0x16, - 0x85, 0xd4, 0xf9, 0x9e, 0xaa, 0xae, 0x3c, 0x11, 0x22, 0xb4, 0x0d, 0x73, 0x8f, 0xba, 0x8f, 0xb1, - 0xe7, 0xe0, 0x00, 0xfb, 0xa2, 0x45, 0xe3, 0xb4, 0x45, 0x57, 0x4e, 0x8e, 0x0b, 0x17, 0x9f, 0x4a, - 0x60, 0x42, 0x9b, 0xe2, 0xa4, 0x08, 0xc3, 0x2c, 0x6f, 0xe8, 0x9a, 0x15, 0x58, 0x8f, 0x2d, 0x1f, - 0xd3, 0x45, 0x66, 0x72, 0xf5, 0x3c, 0x13, 0xf1, 0xad, 0x08, 0xb4, 0x74, 0x8d, 0x4b, 0x79, 0x45, - 0x7e, 0x7b, 0x93, 0x83, 0x94, 0x8a, 0xa2, 0x3c, 0xc9, 0x5a, 0x2b, 0xf7, 0x91, 0x09, 0xda, 0x5a, - 0xba, 0xd6, 0xca, 0x7d, 0x44, 0x5d, 0x85, 0xe4, 0x8e, 0xb2, 0x09, 0xa3, 0x7b, 0x64, 0xb7, 0xa5, - 0x6b, 0xd0, 0xcc, 0xea, 0x55, 0xde, 0xa2, 0xe8, 0x78, 0xba, 0x45, 0x7e, 0x50, 0x44, 0x3a, 0x93, - 0x66, 0xe9, 0x0e, 0xad, 0xee, 0xad, 0x14, 0x86, 0x3e, 0x05, 0xe0, 0xad, 0x2a, 0x76, 0x3a, 0xf9, - 0x49, 0xfa, 0x91, 0x73, 0xfa, 0x47, 0x16, 0x3b, 0x9d, 0xd2, 0x65, 0xfe, 0x7d, 0xe7, 0xe5, 0xf7, - 0x59, 0x9d, 0x8e, 0xc2, 0x4d, 0x61, 0x82, 0x3e, 0x81, 0x29, 0xba, 0x44, 0x89, 0x1e, 0x9d, 0xa2, - 0x3d, 0xba, 0x72, 0x72, 0x5c, 0x58, 0xa2, 0xab, 0x4f, 0x42, 0x7f, 0x6a, 0x04, 0xe8, 0x37, 0x60, - 0x91, 0xb3, 0x3b, 0xb0, 0x9d, 0xa6, 0xfb, 0xdc, 0x5f, 0xc3, 0xfe, 0xd3, 0xc0, 0xed, 0xd0, 0xe5, - 0x6c, 0x72, 0xf5, 0xa2, 0xde, 0x3c, 0x1d, 0xa7, 0xf4, 0x26, 0x6f, 0xa9, 0x21, 0x5b, 0xfa, 0x9c, - 0x21, 0xd4, 0x9b, 0x0c, 0x43, 0x5d, 0xf0, 0x12, 0x59, 0xa0, 0x0d, 0x98, 0xdd, 0xf3, 0xb1, 0xf6, - 0x0d, 0x33, 0x74, 0xbd, 0x2f, 0x90, 0x1e, 0xee, 0xfa, 0x4c, 0xb5, 0x4b, 0xfa, 0x8e, 0x28, 0x1d, - 0x32, 0x01, 0xad, 0x79, 0x6e, 0x27, 0x32, 0xc6, 0x67, 0xa9, 0x44, 0x8c, 0x93, 0xe3, 0xc2, 0xe5, - 0xa6, 0xe7, 0x76, 0xea, 0xe9, 0x03, 0x3d, 0x81, 0x1a, 0xfd, 0x10, 0xce, 0x97, 0x5d, 0xc7, 0xc1, - 0x0d, 0xb2, 0x22, 0xae, 0xd9, 0xd6, 0xa1, 0xe3, 0xfa, 0x81, 0xdd, 0xd8, 0x58, 0xcb, 0xe7, 0xc2, - 0xe5, 0xbe, 0x21, 0x31, 0xea, 0x4d, 0x89, 0xa2, 0x2f, 0xf7, 0x29, 0x5c, 0xd0, 0x97, 0x30, 0xcd, - 0xeb, 0xc2, 0x1e, 0x1d, 0x9a, 0x73, 0xbd, 0x07, 0x9a, 0x44, 0x66, 0x1b, 0xb7, 0x27, 0x7e, 0x32, - 0x55, 0x48, 0xe7, 0x85, 0xbe, 0x82, 0xc9, 0xad, 0xfb, 0x45, 0x13, 0xfb, 0x1d, 0xd7, 0xf1, 0x71, - 0x1e, 0xd1, 0x1e, 0xbd, 0xcc, 0x59, 0x6f, 0xdd, 0x2f, 0x16, 0xbb, 0xc1, 0x11, 0x76, 0x02, 0xbb, - 0x61, 0x05, 0x58, 0x60, 0x95, 0x96, 0xc9, 0xc8, 0x6b, 0x3f, 0xb1, 0xea, 0x1e, 0x2f, 0x51, 0xbe, - 0x42, 0x65, 0x87, 0x96, 0x21, 0x5b, 0xab, 0xad, 0x6f, 0xba, 0x87, 0xb6, 0x93, 0x9f, 0x27, 0xc2, - 0x30, 0xe5, 0x6f, 0xb4, 0x0b, 0xe3, 0xd5, 0xae, 0xd7, 0x71, 0x7d, 0x9c, 0x5f, 0xa4, 0x1f, 0x74, - 0xad, 0xd7, 0xcc, 0xe1, 0xa8, 0xa5, 0x45, 0xb2, 0x74, 0x76, 0xd8, 0x0f, 0xa5, 0x56, 0xc1, 0x0a, - 0xfd, 0x00, 0xa6, 0x6a, 0xb5, 0xf5, 0x70, 0x8f, 0x3b, 0x4f, 0x17, 0xfc, 0x8b, 0x27, 0xc7, 0x85, - 0x3c, 0x51, 0x5d, 0xc2, 0x7d, 0x4e, 0x1d, 0xed, 0x2a, 0x05, 0xe1, 0xb0, 0xbb, 0x59, 0x0b, 0x39, - 0x2c, 0x85, 0x1c, 0x88, 0xd2, 0x94, 0xcc, 0x41, 0xa5, 0x40, 0xff, 0x20, 0x03, 0x57, 0x54, 0x96, - 0xc5, 0xd0, 0x6c, 0xaa, 0x05, 0x56, 0x80, 0xdb, 0xd8, 0x09, 0xf2, 0x17, 0xa8, 0xa4, 0xbf, 0x2b, - 0xcd, 0xbe, 0x5b, 0xaa, 0x71, 0xf5, 0xec, 0xee, 0xad, 0x24, 0xa2, 0xd2, 0xea, 0xc9, 0x71, 0xe1, - 0x96, 0xfe, 0x1d, 0x75, 0x85, 0xae, 0xee, 0x0b, 0x4c, 0xa5, 0x6d, 0x7d, 0x9b, 0x42, 0xdb, 0xab, - 0x7e, 0x40, 0x62, 0x7b, 0x97, 0x5f, 0xba, 0xbd, 0xba, 0xd4, 0xfa, 0xb7, 0xb7, 0x5f, 0x53, 0x50, - 0x03, 0x56, 0x4c, 0x6c, 0xfb, 0x7e, 0x97, 0xa8, 0x3f, 0x64, 0x7a, 0x6f, 0xb4, 0x89, 0xb9, 0xe4, - 0x3a, 0x4c, 0x9f, 0x5c, 0xa1, 0x6b, 0xc3, 0xd5, 0x93, 0xe3, 0xc2, 0x25, 0x4f, 0xa2, 0xb1, 0x25, - 0xc2, 0x56, 0x11, 0xcd, 0x5e, 0x5c, 0x8c, 0xcf, 0x60, 0x42, 0xae, 0xd8, 0x68, 0x1c, 0x86, 0x8b, - 0xad, 0x56, 0xee, 0x1c, 0xf9, 0xa3, 0x56, 0x5b, 0xcf, 0x65, 0xd0, 0x0c, 0x40, 0xb8, 0x4d, 0xe5, - 0x86, 0xd0, 0x14, 0x64, 0xc5, 0x36, 0x92, 0x1b, 0xa6, 0xf8, 0x9d, 0x4e, 0x6e, 0x04, 0x21, 0x98, - 0xd1, 0x17, 0xb3, 0xdc, 0xa8, 0xf1, 0xcf, 0x33, 0x30, 0x21, 0x27, 0x21, 0x9a, 0x85, 0xc9, 0xbd, - 0xed, 0x5a, 0xb5, 0x52, 0xde, 0xb8, 0xbf, 0x51, 0x59, 0xcb, 0x9d, 0x43, 0x97, 0xe0, 0xc2, 0x6e, - 0x6d, 0xbd, 0xbe, 0x56, 0xaa, 0x6f, 0xee, 0x94, 0x8b, 0x9b, 0xf5, 0xaa, 0xb9, 0xf3, 0xd9, 0xe7, - 0xf5, 0xdd, 0xbd, 0xed, 0xed, 0xca, 0x66, 0x2e, 0x83, 0xf2, 0xb0, 0x40, 0xc0, 0x8f, 0xf6, 0x4a, - 0x15, 0x15, 0x21, 0x37, 0x84, 0xae, 0xc2, 0xa5, 0x24, 0x48, 0x7d, 0xbd, 0x52, 0x5c, 0xdb, 0xac, - 0xd4, 0x6a, 0xb9, 0x61, 0xb4, 0x04, 0xf3, 0x04, 0xa5, 0x58, 0xad, 0x6a, 0xb4, 0x23, 0xa4, 0x15, - 0xbc, 0xd2, 0xca, 0x67, 0x95, 0x72, 0x6e, 0x54, 0x30, 0x23, 0x98, 0xc5, 0x83, 0x5a, 0xbd, 0x6c, - 0x56, 0xd6, 0x2a, 0xdb, 0xbb, 0x1b, 0xc5, 0xcd, 0xaa, 0xb9, 0x53, 0x26, 0xcc, 0xc6, 0x8c, 0x16, - 0x4c, 0x2a, 0x33, 0x13, 0x5d, 0x84, 0x7c, 0xb9, 0x62, 0xee, 0xd6, 0xab, 0x7b, 0x66, 0x75, 0xa7, - 0x56, 0xa9, 0xeb, 0x5f, 0x15, 0x85, 0x6e, 0xee, 0x3c, 0xd8, 0xd8, 0xae, 0x93, 0xa2, 0x5a, 0x2e, - 0x43, 0x6a, 0xd3, 0xa0, 0xb5, 0x8d, 0xed, 0x07, 0x9b, 0x95, 0xfa, 0x5e, 0xad, 0xc2, 0x51, 0x86, - 0x98, 0x82, 0xf7, 0x70, 0x24, 0xbb, 0x90, 0x5b, 0x54, 0x54, 0x54, 0x73, 0x31, 0x71, 0x38, 0x19, - 0xbf, 0x35, 0x14, 0xd3, 0x18, 0xd0, 0x2a, 0x4c, 0xd6, 0x98, 0x0b, 0x85, 0xae, 0xa2, 0xcc, 0x9e, - 0xcc, 0x9d, 0x1c, 0x17, 0xa6, 0xb8, 0x67, 0x85, 0x2d, 0x90, 0x2a, 0x12, 0x51, 0x02, 0xab, 0x64, - 0x51, 0x6a, 0xb8, 0x2d, 0x55, 0x09, 0xec, 0xf0, 0x32, 0x53, 0x42, 0xd1, 0xaa, 0xa2, 0x2e, 0x32, - 0xe3, 0x92, 0x1a, 0x30, 0x42, 0x5d, 0x54, 0x55, 0x07, 0xa9, 0x38, 0xae, 0x86, 0x83, 0x86, 0x6b, - 0x79, 0x94, 0x26, 0x41, 0x55, 0x91, 0x78, 0xe8, 0x0d, 0xa1, 0x18, 0x33, 0x63, 0x90, 0xea, 0x12, - 0x11, 0x33, 0x86, 0xeb, 0xc4, 0x46, 0x37, 0x65, 0xdf, 0x46, 0x1f, 0x46, 0x47, 0x25, 0x17, 0x06, - 0x65, 0x16, 0xd9, 0x9e, 0xcd, 0x08, 0x2a, 0x2a, 0xc0, 0x28, 0x5b, 0xd0, 0x99, 0x3c, 0xa8, 0x2a, - 0xde, 0x22, 0x05, 0x26, 0x2b, 0x37, 0xfe, 0xd5, 0x88, 0xaa, 0xc3, 0x10, 0xd5, 0x5b, 0x91, 0x37, - 0x55, 0xbd, 0xa9, 0x9c, 0x69, 0x29, 0xb1, 0x1c, 0x59, 0x67, 0x52, 0xcb, 0x71, 0x38, 0xb4, 0x1c, - 0xf9, 0x8a, 0xc1, 0x2c, 0xc7, 0x10, 0x85, 0xf4, 0x22, 0xd7, 0x0a, 0x29, 0xd7, 0x91, 0xb0, 0x17, - 0xb9, 0x26, 0xc9, 0x7b, 0x51, 0x41, 0x42, 0x1f, 0x00, 0x14, 0x0f, 0x6a, 0xd4, 0x44, 0x32, 0xb7, - 0xb9, 0x66, 0x4c, 0xf7, 0x30, 0xeb, 0xb9, 0xcf, 0x2d, 0x30, 0x4f, 0x35, 0x31, 0x15, 0x6c, 0x54, - 0x82, 0xe9, 0xe2, 0x4f, 0xba, 0x1e, 0xde, 0x68, 0x92, 0x6d, 0x30, 0x60, 0xb6, 0xf4, 0x04, 0xdb, - 0x0f, 0x2c, 0x02, 0xa8, 0xdb, 0x1c, 0xa2, 0x30, 0xd0, 0x49, 0xd0, 0x0e, 0xcc, 0x3d, 0x28, 0x57, - 0xf9, 0xb8, 0x2a, 0x36, 0x1a, 0x6e, 0xd7, 0x09, 0xb8, 0x3a, 0x4c, 0x97, 0xa9, 0xc3, 0x46, 0xa7, - 0x2e, 0xc6, 0xa0, 0xc5, 0xc0, 0xaa, 0x3e, 0x1c, 0xa3, 0x45, 0xd7, 0x60, 0x78, 0xcf, 0xdc, 0xe0, - 0x86, 0xf6, 0xdc, 0xc9, 0x71, 0x61, 0xba, 0xeb, 0xd9, 0x0a, 0x09, 0x81, 0xa2, 0xf7, 0x01, 0x76, - 0x2d, 0xef, 0x10, 0x07, 0x55, 0xd7, 0x0b, 0xa8, 0x3e, 0x3b, 0x5d, 0xba, 0x70, 0x72, 0x5c, 0x58, - 0x0c, 0x68, 0x69, 0x9d, 0xac, 0xe2, 0xea, 0x47, 0x87, 0xc8, 0xe8, 0x05, 0x14, 0x8a, 0x07, 0xb5, - 0xb2, 0x87, 0xe9, 0x17, 0x58, 0xad, 0xaa, 0xe7, 0x12, 0x95, 0x27, 0x2c, 0xf0, 0xa9, 0xb6, 0x3b, - 0x51, 0xba, 0x7d, 0x72, 0x5c, 0xf8, 0x0e, 0x91, 0x62, 0x43, 0x82, 0x3a, 0x0c, 0x57, 0x29, 0x51, - 0x87, 0x66, 0x3f, 0xbe, 0x0f, 0x47, 0xb2, 0x43, 0xb9, 0x61, 0x73, 0xa2, 0x86, 0x7d, 0x9f, 0x59, - 0xb2, 0x2d, 0x98, 0x79, 0x80, 0x03, 0x32, 0x67, 0x84, 0x65, 0xd6, 0x7b, 0x44, 0x7d, 0x1f, 0x26, - 0x0f, 0xec, 0xe0, 0xa8, 0x86, 0x1b, 0x1e, 0x0e, 0x84, 0x57, 0x8a, 0xf6, 0xf6, 0x73, 0x3b, 0x38, - 0xaa, 0xfb, 0xac, 0x5c, 0xd5, 0x58, 0x14, 0x74, 0xa3, 0x02, 0xb3, 0xbc, 0x36, 0x69, 0x08, 0xae, - 0xea, 0x0c, 0x33, 0x94, 0x21, 0x1d, 0x71, 0x2a, 0x43, 0x9d, 0xcd, 0x3f, 0x1a, 0x82, 0xc5, 0xf2, - 0x91, 0xe5, 0x1c, 0xe2, 0xaa, 0xe5, 0xfb, 0xcf, 0x5d, 0xaf, 0xa9, 0x34, 0x9e, 0x5a, 0xc1, 0xb1, - 0xc6, 0x53, 0xb3, 0x77, 0x15, 0x26, 0x77, 0x5a, 0x4d, 0x41, 0xc3, 0x2d, 0x74, 0x5a, 0x97, 0xdb, - 0x6a, 0xd6, 0x3b, 0x82, 0x97, 0x8a, 0x44, 0x68, 0xb6, 0xf1, 0x73, 0x49, 0x33, 0x1c, 0xd2, 0x38, - 0xf8, 0xb9, 0x42, 0xa3, 0x20, 0xa1, 0x0a, 0xcc, 0xd5, 0x70, 0xc3, 0x75, 0x9a, 0xf7, 0xad, 0x46, - 0xe0, 0x7a, 0xbb, 0xee, 0x53, 0xec, 0xf0, 0xb9, 0x44, 0x4d, 0x1e, 0x9f, 0x02, 0xeb, 0x4f, 0x28, - 0xb4, 0x1e, 0x10, 0xb0, 0x19, 0xa7, 0x40, 0x3b, 0x90, 0x3d, 0xe0, 0xbe, 0x4d, 0x6e, 0xd6, 0x5f, - 0xbf, 0x25, 0x9d, 0x9d, 0x61, 0xaf, 0x4a, 0xc7, 0x84, 0xd4, 0x20, 0xe9, 0x2a, 0x2a, 0x30, 0x4d, - 0xc9, 0xc4, 0xf8, 0x59, 0x06, 0x16, 0x37, 0x6d, 0x3f, 0xa8, 0xe1, 0xb6, 0xd5, 0x39, 0x72, 0x3d, - 0x2c, 0x7b, 0x61, 0x05, 0x26, 0x3a, 0xd6, 0x21, 0xae, 0xfb, 0xf6, 0x4f, 0x58, 0xcf, 0x8f, 0x9a, - 0x59, 0x52, 0x50, 0xb3, 0x7f, 0x82, 0xd1, 0x25, 0x00, 0x0a, 0xa4, 0x0d, 0x65, 0x0b, 0x93, 0x49, - 0xd1, 0x59, 0x33, 0x6f, 0xc1, 0xd8, 0x13, 0xbb, 0x45, 0x6c, 0xd0, 0x61, 0x6e, 0x35, 0x72, 0xff, - 0x8d, 0xa8, 0xe5, 0x3e, 0x85, 0x9a, 0x1c, 0xcb, 0x08, 0xe0, 0x7c, 0xb4, 0x11, 0x5c, 0xa1, 0x5d, - 0x05, 0xf0, 0x65, 0x29, 0x77, 0xa0, 0xa2, 0x28, 0xb7, 0xfd, 0x7b, 0xa6, 0x82, 0x85, 0x6e, 0xc0, - 0xac, 0x83, 0xbf, 0x0e, 0xea, 0xb1, 0x16, 0x4e, 0x93, 0xe2, 0xaa, 0x68, 0xa5, 0xb1, 0x07, 0xd3, - 0xd5, 0x56, 0xf7, 0xd0, 0x76, 0xc8, 0x5a, 0x5f, 0xc3, 0x3f, 0x46, 0x6b, 0x00, 0x61, 0x01, 0xaf, - 0x6c, 0x9e, 0x57, 0x16, 0x02, 0xf6, 0xef, 0xf1, 0x05, 0x93, 0x96, 0x50, 0x3b, 0xd7, 0x54, 0xe8, - 0x8c, 0xff, 0x3e, 0x0c, 0x88, 0x0b, 0x91, 0xaa, 0x50, 0x35, 0x1c, 0x10, 0xbd, 0xe3, 0x3c, 0x0c, - 0x49, 0xa7, 0xea, 0xd8, 0xc9, 0x71, 0x61, 0xc8, 0x6e, 0x9a, 0x43, 0x1b, 0x6b, 0xe8, 0x6d, 0x18, - 0xa5, 0x68, 0xb4, 0x8d, 0x33, 0xb2, 0x3e, 0x95, 0x03, 0x5b, 0xf3, 0xe9, 0x66, 0x6b, 0x32, 0x64, - 0xf4, 0x0e, 0x4c, 0xac, 0xe1, 0x16, 0x3e, 0xb4, 0x02, 0x57, 0xac, 0xe2, 0xcc, 0x4d, 0x29, 0x0a, - 0x95, 0xf9, 0x16, 0x62, 0xa2, 0xb7, 0x60, 0xcc, 0xc4, 0x96, 0xef, 0x3a, 0xaa, 0x93, 0xc3, 0xa3, - 0x25, 0xaa, 0x93, 0x83, 0xe1, 0xa0, 0xdf, 0xcb, 0xc0, 0x64, 0xd1, 0x71, 0xb8, 0xfb, 0xcf, 0xe7, - 0x23, 0x6e, 0xf1, 0x96, 0xf4, 0x97, 0x6f, 0x5a, 0x8f, 0x71, 0x6b, 0xdf, 0x6a, 0x75, 0xb1, 0x5f, - 0xfa, 0x8a, 0xd8, 0x9d, 0xff, 0xfe, 0xb8, 0xf0, 0xe1, 0x29, 0x1c, 0x7a, 0xa1, 0xe7, 0x7d, 0xd7, - 0xb3, 0xec, 0xc0, 0x27, 0x8b, 0xa5, 0x15, 0x56, 0xa8, 0xae, 0x19, 0x4a, 0x3b, 0xc2, 0x2d, 0x79, - 0xac, 0xdf, 0x96, 0x8c, 0xda, 0x30, 0x5b, 0xf4, 0xfd, 0x6e, 0x1b, 0xd7, 0x02, 0xcb, 0x0b, 0x76, - 0xed, 0x36, 0xa6, 0xfb, 0x40, 0x6f, 0x97, 0xd1, 0xeb, 0x3f, 0x3f, 0x2e, 0x64, 0x88, 0xa9, 0x6b, - 0x51, 0x52, 0xa2, 0xe6, 0x78, 0x41, 0x3d, 0xb0, 0x55, 0xad, 0x82, 0x3a, 0x8f, 0xa2, 0xbc, 0x8d, - 0x6b, 0x52, 0xd3, 0xdc, 0x58, 0x4b, 0xeb, 0x71, 0xa3, 0x0c, 0x17, 0x1f, 0xe0, 0xc0, 0xc4, 0x3e, - 0x0e, 0xc4, 0xfa, 0x40, 0x07, 0x64, 0xe8, 0x82, 0x1f, 0xa7, 0xbf, 0x25, 0x31, 0xed, 0x7e, 0xb6, - 0x26, 0x08, 0x88, 0xf1, 0xbf, 0x65, 0xa0, 0x50, 0xf6, 0x30, 0xb3, 0x12, 0x53, 0x18, 0xf5, 0x5e, - 0xb7, 0x2f, 0xc2, 0xc8, 0xee, 0x8b, 0x8e, 0xf0, 0xb5, 0x51, 0x28, 0xe9, 0x14, 0x93, 0x96, 0x0e, - 0xe8, 0x8a, 0x34, 0xbe, 0x84, 0x4b, 0x64, 0xe6, 0xa6, 0xb7, 0xe1, 0x15, 0x96, 0x11, 0xe3, 0xa7, - 0x70, 0x39, 0x8d, 0x39, 0x5f, 0x1e, 0xee, 0xc1, 0x24, 0x51, 0xf8, 0x18, 0x83, 0xe8, 0xfa, 0x40, - 0x16, 0x78, 0x8a, 0x4e, 0xd6, 0x87, 0xae, 0xf8, 0x31, 0xf8, 0xfa, 0xf0, 0x04, 0x16, 0x4d, 0xec, - 0xe0, 0xe7, 0xc4, 0x5e, 0xd1, 0x3c, 0x95, 0x05, 0x18, 0x65, 0x0b, 0x78, 0xac, 0x7b, 0x58, 0xf9, - 0xe9, 0xbc, 0xbe, 0xc6, 0x34, 0x4c, 0x56, 0x6d, 0xe7, 0x90, 0x73, 0x37, 0xfe, 0x70, 0x14, 0xa6, - 0xd8, 0x6f, 0xb9, 0x06, 0x6a, 0x1a, 0x58, 0x66, 0x10, 0x0d, 0xec, 0x3d, 0x98, 0x26, 0x2a, 0x0c, - 0xf6, 0xf6, 0xb1, 0x47, 0xf6, 0x75, 0xde, 0xcb, 0xd4, 0x41, 0xe1, 0x53, 0x40, 0xfd, 0x19, 0x83, - 0x98, 0x3a, 0x22, 0xda, 0x84, 0x19, 0x56, 0x70, 0x1f, 0x5b, 0x41, 0x37, 0xf4, 0xb1, 0xce, 0x72, - 0x6f, 0x81, 0x28, 0x66, 0xd3, 0x8e, 0xf3, 0x7a, 0xc2, 0x0b, 0xcd, 0x08, 0x2d, 0xfa, 0x04, 0x66, - 0xab, 0x9e, 0xfb, 0xf5, 0x0b, 0x45, 0xe7, 0x64, 0x2b, 0x0f, 0xf3, 0x2b, 0x10, 0x50, 0x5d, 0xd5, - 0x3c, 0xa3, 0xd8, 0xe8, 0x0d, 0xc8, 0x6e, 0xf8, 0x25, 0xd7, 0xb3, 0x9d, 0x43, 0xba, 0xfe, 0x64, - 0xd9, 0x51, 0x93, 0xed, 0xd7, 0x1f, 0xd3, 0x42, 0x53, 0x82, 0x23, 0x87, 0x22, 0xe3, 0xfd, 0x0f, - 0x45, 0xee, 0x00, 0x6c, 0xba, 0x56, 0xb3, 0xd8, 0x6a, 0x95, 0x8b, 0x3e, 0x55, 0xee, 0xb8, 0x9e, - 0xd1, 0x72, 0xad, 0x66, 0xdd, 0x6a, 0xb5, 0xea, 0x0d, 0xcb, 0x37, 0x15, 0x1c, 0xf4, 0x05, 0x5c, - 0xf0, 0xed, 0x43, 0x87, 0x7e, 0x5c, 0xdd, 0x6a, 0x1d, 0xba, 0x9e, 0x1d, 0x1c, 0xb5, 0xeb, 0x7e, - 0xd7, 0x0e, 0x98, 0x07, 0x73, 0x66, 0xf5, 0xb2, 0xd8, 0x9d, 0x04, 0x5e, 0x51, 0xa0, 0xd5, 0x08, - 0x96, 0xb9, 0xe4, 0x27, 0x03, 0xd0, 0x01, 0x4c, 0x6f, 0xda, 0x0d, 0xec, 0xf8, 0x98, 0xba, 0xa4, - 0x5f, 0x50, 0x8d, 0xaf, 0xf7, 0x42, 0x45, 0x84, 0x38, 0xdd, 0x52, 0x89, 0xe8, 0xb2, 0xa4, 0xf3, - 0x21, 0x63, 0xc1, 0x6f, 0xb8, 0x1d, 0xec, 0x53, 0x7b, 0xad, 0xeb, 0x53, 0x2f, 0x27, 0xd9, 0x69, - 0x58, 0x87, 0xd6, 0x28, 0xac, 0x46, 0x41, 0xe6, 0x94, 0xaf, 0xfc, 0x7a, 0x38, 0x92, 0x1d, 0xcb, - 0x8d, 0x9b, 0xb3, 0x9c, 0xdd, 0x81, 0xe5, 0x39, 0xb6, 0x73, 0xe8, 0x1b, 0x7f, 0x85, 0x20, 0x2b, - 0x7b, 0xf8, 0x96, 0x6a, 0x98, 0x73, 0x65, 0x8d, 0x0e, 0xf6, 0xd0, 0xe7, 0x6c, 0x2a, 0x18, 0xe8, - 0x02, 0x35, 0xd5, 0xb9, 0x9a, 0x38, 0x4e, 0x16, 0x16, 0xab, 0xd3, 0x31, 0x49, 0x19, 0x59, 0x30, - 0xd7, 0x4a, 0x74, 0xb8, 0x65, 0xd9, 0x82, 0xd9, 0x7c, 0x6c, 0x0e, 0xad, 0x95, 0xc8, 0x4a, 0xb5, - 0xb3, 0xb1, 0x56, 0xa6, 0x23, 0x27, 0xcb, 0x56, 0x2a, 0xd7, 0x6e, 0x36, 0x4c, 0x5a, 0x4a, 0xa0, - 0xb5, 0xe2, 0xd6, 0x26, 0x1f, 0x1d, 0x14, 0xea, 0x5b, 0xed, 0x96, 0x49, 0x4b, 0x89, 0xe9, 0xc5, - 0xdc, 0x87, 0x65, 0xd7, 0x09, 0x3c, 0xb7, 0xe5, 0x53, 0x7b, 0x22, 0xcb, 0x46, 0x2f, 0xf7, 0x3b, - 0x36, 0x38, 0xc8, 0x8c, 0xa0, 0xa2, 0x03, 0x58, 0x2a, 0x36, 0x9f, 0x59, 0x4e, 0x03, 0x37, 0x19, - 0xe4, 0xc0, 0xf5, 0x9e, 0x3e, 0x69, 0xb9, 0xcf, 0x7d, 0x3a, 0xbc, 0xb2, 0xdc, 0x4d, 0xcf, 0x51, - 0x84, 0x1b, 0xf3, 0xb9, 0x40, 0x32, 0xd3, 0xa8, 0xc9, 0x0a, 0x52, 0x6e, 0xb9, 0xdd, 0x26, 0x1f, - 0x74, 0x74, 0x05, 0x69, 0x90, 0x02, 0x93, 0x95, 0x13, 0x29, 0xad, 0xd7, 0xb6, 0xe8, 0x90, 0xe2, - 0x52, 0x3a, 0xf2, 0xdb, 0x26, 0x29, 0x43, 0xd7, 0x61, 0x5c, 0x58, 0x91, 0xec, 0x14, 0x8e, 0x9e, - 0xfe, 0x08, 0xeb, 0x51, 0xc0, 0x48, 0xaf, 0x9b, 0xb8, 0xe1, 0x3e, 0xc3, 0xde, 0x8b, 0xb2, 0xdb, - 0xc4, 0xc2, 0x85, 0xcb, 0x5d, 0x94, 0x0c, 0x50, 0x6f, 0x10, 0x88, 0xa9, 0x23, 0x92, 0x0a, 0x98, - 0x3a, 0xe3, 0xe7, 0x67, 0xc3, 0x0a, 0x98, 0xba, 0xe3, 0x9b, 0x02, 0x86, 0xd6, 0x60, 0xae, 0xd8, - 0x0d, 0xdc, 0xb6, 0x15, 0xd8, 0x8d, 0xbd, 0xce, 0xa1, 0x67, 0x91, 0x4a, 0x72, 0x94, 0x80, 0x5a, - 0xd5, 0x96, 0x00, 0xd6, 0xbb, 0x1c, 0x6a, 0xc6, 0x09, 0xd0, 0xbb, 0x30, 0xb5, 0xe1, 0x33, 0x37, - 0xbd, 0xe5, 0xe3, 0x26, 0xf5, 0xb5, 0xf2, 0x56, 0xda, 0x7e, 0x9d, 0x3a, 0xed, 0xeb, 0xc4, 0x0e, - 0x6f, 0x9a, 0x1a, 0x1e, 0x32, 0x60, 0xac, 0xe8, 0xfb, 0xb6, 0x1f, 0x50, 0x17, 0x6a, 0xb6, 0x04, - 0x27, 0xc7, 0x85, 0x31, 0x8b, 0x96, 0x98, 0x1c, 0x82, 0x0e, 0x60, 0x72, 0x0d, 0x13, 0x33, 0x6e, - 0xd7, 0xeb, 0xfa, 0x01, 0x75, 0x88, 0x4e, 0xae, 0x5e, 0xe0, 0xc3, 0x5e, 0x81, 0xf0, 0xb1, 0xcc, - 0x8c, 0x96, 0x26, 0x2d, 0xaf, 0x07, 0x04, 0xa0, 0x2a, 0x20, 0x0a, 0x3e, 0xb1, 0x51, 0x39, 0xcd, - 0xba, 0xdd, 0x24, 0x2b, 0xd3, 0x02, 0x6d, 0x03, 0xb5, 0x51, 0xf9, 0x52, 0x58, 0x3f, 0xa2, 0x10, - 0xd5, 0x46, 0xd5, 0x48, 0x50, 0x23, 0x76, 0xf2, 0xb3, 0xa8, 0x79, 0xf7, 0x75, 0xa0, 0x68, 0xe2, - 0x29, 0xcf, 0x85, 0xbe, 0x0f, 0x93, 0xe5, 0xae, 0x1f, 0xb8, 0xed, 0xdd, 0x23, 0xdc, 0xc6, 0xd4, - 0x39, 0xcb, 0x2d, 0xf1, 0x06, 0x2d, 0xae, 0x07, 0xa4, 0x5c, 0xfd, 0x4c, 0x05, 0x1d, 0x7d, 0x0a, - 0x48, 0x98, 0xd4, 0x0f, 0xc8, 0xf8, 0x70, 0xc8, 0x58, 0xa6, 0xfe, 0x59, 0xee, 0xee, 0x13, 0x96, - 0x78, 0xfd, 0x50, 0x82, 0x55, 0xdf, 0x7d, 0x9c, 0x98, 0x34, 0x88, 0x35, 0xf1, 0x81, 0x67, 0x75, - 0x8e, 0xf2, 0xf9, 0xd0, 0x58, 0xe4, 0x1f, 0x75, 0x48, 0xca, 0x35, 0xc5, 0x2f, 0x44, 0x47, 0x35, - 0x00, 0xf6, 0x93, 0xa8, 0x05, 0xdc, 0xa3, 0x9b, 0xd7, 0xe4, 0x45, 0x00, 0x42, 0x56, 0xd4, 0xf6, - 0xe6, 0x6c, 0x5b, 0xb6, 0xd6, 0x9b, 0x0a, 0x1b, 0xf4, 0x14, 0x72, 0xec, 0xd7, 0x96, 0xeb, 0xd8, - 0x01, 0xdb, 0x69, 0x96, 0x35, 0xb7, 0x7c, 0x14, 0x2c, 0x2a, 0xa0, 0xc7, 0x21, 0xbc, 0x82, 0xb6, - 0x84, 0x2a, 0xd5, 0xc4, 0x18, 0xa3, 0x2a, 0x4c, 0x56, 0x3d, 0xb7, 0xd9, 0x6d, 0x04, 0x54, 0xf7, - 0x5a, 0xa1, 0x2b, 0x31, 0xe2, 0xf5, 0x28, 0x10, 0x26, 0x93, 0x0e, 0x2b, 0xa8, 0x93, 0x1d, 0x45, - 0x95, 0x89, 0x82, 0x88, 0x4a, 0x30, 0x56, 0x75, 0x5b, 0x76, 0xe3, 0x45, 0xfe, 0x22, 0x6d, 0xf4, - 0x82, 0x60, 0x46, 0x0b, 0x45, 0x53, 0xa9, 0xa2, 0xdf, 0xa1, 0x45, 0xaa, 0xa2, 0xcf, 0x90, 0x50, - 0x11, 0xa6, 0x3f, 0x25, 0x03, 0xc6, 0x76, 0x1d, 0xc7, 0xb2, 0x3d, 0x9c, 0xbf, 0x44, 0xfb, 0x85, - 0x1e, 0x59, 0xfd, 0x58, 0x05, 0xa8, 0xc3, 0x59, 0xa3, 0x40, 0x1b, 0x30, 0xbb, 0xe1, 0xd7, 0x02, - 0xcf, 0xee, 0xe0, 0x2d, 0xcb, 0xb1, 0x0e, 0x71, 0x33, 0x7f, 0x39, 0x3c, 0x33, 0xb2, 0xc9, 0xde, - 0x43, 0x60, 0xf5, 0x36, 0x03, 0xaa, 0x67, 0x46, 0x11, 0x3a, 0xf4, 0x19, 0x2c, 0x54, 0xbe, 0x0e, - 0xc8, 0x88, 0x69, 0x15, 0xbb, 0x4d, 0x3b, 0xa8, 0x05, 0xae, 0x67, 0x1d, 0xe2, 0x7c, 0x81, 0xf2, - 0x7b, 0xed, 0xe4, 0xb8, 0x70, 0x05, 0x73, 0x78, 0xdd, 0x22, 0x08, 0x75, 0x9f, 0x61, 0xa8, 0xb1, - 0x1d, 0x49, 0x1c, 0x88, 0xf4, 0x6b, 0xdd, 0x0e, 0xb1, 0x41, 0xa8, 0xf4, 0xaf, 0x68, 0xd2, 0x57, - 0x20, 0x4c, 0xfa, 0x3e, 0x2b, 0x88, 0x49, 0x5f, 0x41, 0x44, 0x26, 0xa0, 0x87, 0xae, 0xed, 0x14, - 0x1b, 0x81, 0xfd, 0x0c, 0x73, 0x1f, 0x8a, 0x9f, 0xbf, 0x4a, 0x5b, 0x4a, 0xcf, 0xb7, 0x7e, 0xd5, - 0xb5, 0x9d, 0xba, 0x45, 0xc1, 0x75, 0x9f, 0xc3, 0xd5, 0x39, 0x12, 0xa7, 0x46, 0x3f, 0x84, 0xf3, - 0x5b, 0xee, 0x63, 0xbb, 0x85, 0xd9, 0x92, 0xc3, 0xc4, 0x42, 0xcf, 0x04, 0x0c, 0xca, 0x97, 0x9e, - 0x6f, 0xb5, 0x29, 0x46, 0x9d, 0xaf, 0x56, 0x6d, 0x89, 0xa3, 0x9e, 0x6f, 0x25, 0x73, 0x41, 0x15, - 0x98, 0xa2, 0xf3, 0xb2, 0x45, 0x7f, 0xfa, 0xf9, 0x6b, 0x54, 0x6b, 0xbe, 0x1a, 0xd1, 0xef, 0x6e, - 0x55, 0x14, 0x9c, 0x8a, 0x13, 0x78, 0x2f, 0x4c, 0x8d, 0x0c, 0x7d, 0x0c, 0xcb, 0xd1, 0xe1, 0x5d, - 0x76, 0x9d, 0x27, 0xf6, 0x61, 0xd7, 0xc3, 0xcd, 0xfc, 0x6b, 0xa4, 0xa9, 0x66, 0x0f, 0x0c, 0xb4, - 0x0f, 0xf3, 0xca, 0xdc, 0x5e, 0xc3, 0x6d, 0x77, 0xcb, 0x6d, 0xe2, 0xfc, 0x8d, 0xb0, 0x97, 0xd5, - 0x25, 0xa1, 0xde, 0xc4, 0x6d, 0xb7, 0xde, 0x76, 0x9b, 0x58, 0x0b, 0x6b, 0x8a, 0x33, 0x20, 0xc3, - 0xa7, 0x4c, 0x43, 0xd2, 0x36, 0xaa, 0x26, 0x26, 0xa3, 0xae, 0xc1, 0xac, 0xd7, 0xd7, 0x43, 0xc6, - 0x2c, 0x64, 0xad, 0x6e, 0x77, 0xea, 0x9e, 0x82, 0xa1, 0x0e, 0x9f, 0x24, 0x0e, 0xcb, 0x07, 0x30, - 0x17, 0x13, 0x0a, 0xca, 0xc1, 0xf0, 0x53, 0xfc, 0x82, 0x69, 0xe5, 0x26, 0xf9, 0x13, 0xbd, 0x05, - 0xa3, 0xcf, 0x88, 0x4d, 0x4c, 0x75, 0x9c, 0xf0, 0xc8, 0x5c, 0x21, 0xdd, 0x70, 0x9e, 0xb8, 0x26, - 0x43, 0xfa, 0x60, 0xe8, 0xbd, 0xcc, 0xc3, 0x91, 0xec, 0x64, 0x6e, 0x8a, 0xc5, 0x99, 0x3c, 0x1c, - 0xc9, 0x4e, 0xe7, 0x66, 0x1e, 0x8e, 0x64, 0xaf, 0xe7, 0x6e, 0x98, 0x8b, 0x54, 0x19, 0x28, 0x3a, - 0xae, 0xf3, 0xa2, 0x6d, 0xff, 0x84, 0x9a, 0x5d, 0xc4, 0x60, 0x28, 0xc2, 0x6c, 0x84, 0x19, 0xca, - 0xc3, 0x38, 0x76, 0x88, 0xa1, 0xd2, 0x64, 0x2a, 0x98, 0x29, 0x7e, 0xa2, 0x05, 0x18, 0x6d, 0xd9, - 0x6d, 0x3b, 0xa0, 0xad, 0x19, 0x35, 0xd9, 0x0f, 0xe3, 0x0f, 0x32, 0x80, 0xe2, 0x3b, 0x20, 0xba, - 0x1d, 0x61, 0xc3, 0xd4, 0x74, 0x5e, 0xa4, 0x1e, 0xff, 0x09, 0xee, 0x9f, 0xc2, 0x3c, 0x1b, 0x82, - 0x62, 0xaf, 0x56, 0xea, 0x62, 0x7b, 0x44, 0x02, 0x58, 0xf5, 0xb5, 0x72, 0x30, 0xdd, 0xd9, 0x37, - 0x69, 0xd3, 0xba, 0xb0, 0x98, 0xb8, 0xf7, 0xa1, 0x2d, 0x58, 0x6c, 0xbb, 0x4e, 0x70, 0xd4, 0x7a, - 0x21, 0xb6, 0x3e, 0x5e, 0x1b, 0x35, 0x2b, 0xd9, 0x72, 0x9f, 0x88, 0x60, 0xce, 0xf3, 0x62, 0xce, - 0x91, 0xd6, 0xc3, 0x1d, 0x9f, 0xe2, 0x4b, 0x0c, 0x13, 0xe6, 0x62, 0x5b, 0x08, 0xfa, 0x08, 0xa6, - 0x1a, 0xd4, 0xc8, 0xd6, 0x6a, 0x62, 0x1b, 0xa8, 0x52, 0xae, 0xae, 0x0e, 0xac, 0x9c, 0x7d, 0xca, - 0xdf, 0xcd, 0xc0, 0x52, 0xca, 0xe6, 0x71, 0x7a, 0x51, 0x7f, 0x0e, 0xe7, 0xdb, 0xd6, 0xd7, 0x75, - 0x8f, 0xfa, 0x50, 0xea, 0x9e, 0xe5, 0x44, 0xa4, 0x4d, 0x47, 0x76, 0x32, 0x86, 0x3a, 0x65, 0xda, - 0xd6, 0xd7, 0x26, 0x45, 0x30, 0x09, 0x9c, 0xb5, 0xf3, 0x07, 0x30, 0xad, 0x6d, 0x17, 0xa7, 0x6e, - 0x9c, 0x71, 0x17, 0xe6, 0xd6, 0x70, 0x0b, 0x07, 0x78, 0x60, 0xbf, 0xb1, 0x51, 0x05, 0x08, 0x1d, - 0x7e, 0xa8, 0xa4, 0xfe, 0x4a, 0x77, 0xf4, 0x31, 0xd3, 0x22, 0x74, 0xf6, 0x99, 0x0a, 0x95, 0xf1, - 0xaf, 0x87, 0x00, 0xf1, 0xf5, 0xde, 0xc3, 0x56, 0x5b, 0x34, 0xe3, 0x7d, 0x98, 0x62, 0x9e, 0x12, - 0x56, 0x4c, 0x9b, 0x33, 0x29, 0xcd, 0x1f, 0x15, 0xb4, 0x7e, 0xce, 0xd4, 0x50, 0x09, 0xa9, 0x89, - 0x99, 0x8b, 0x87, 0x92, 0x0e, 0x69, 0xa4, 0x2a, 0x88, 0x90, 0xaa, 0xbf, 0xd1, 0x27, 0x30, 0x53, - 0x76, 0xdb, 0x1d, 0x22, 0x13, 0x4e, 0x3c, 0xcc, 0xdd, 0x67, 0xbc, 0x5e, 0x0d, 0xb8, 0x7e, 0xce, - 0x8c, 0xa0, 0xa3, 0x6d, 0x98, 0xbf, 0xdf, 0xea, 0xfa, 0x47, 0x45, 0xa7, 0x59, 0x6e, 0xb9, 0xbe, - 0xe0, 0x32, 0xc2, 0xad, 0x42, 0xbe, 0x5a, 0xc7, 0x31, 0xd6, 0xcf, 0x99, 0x49, 0x84, 0xe8, 0x3a, - 0x8c, 0x56, 0x9e, 0x91, 0x5d, 0x44, 0xc4, 0x83, 0xf1, 0x70, 0xd5, 0x1d, 0x07, 0xef, 0x3c, 0x59, - 0x3f, 0x67, 0x32, 0x68, 0x69, 0x02, 0xc6, 0x85, 0x27, 0xe2, 0x36, 0xd1, 0xf0, 0xa5, 0x38, 0x99, - 0x4d, 0x88, 0x96, 0x21, 0xbb, 0xd7, 0x21, 0x06, 0xb2, 0x70, 0x4f, 0x99, 0xf2, 0xb7, 0xf1, 0x96, - 0x2e, 0x69, 0x74, 0x11, 0xc2, 0x73, 0x05, 0x8e, 0xac, 0x1c, 0x34, 0xac, 0xeb, 0xc2, 0xed, 0x8d, - 0xad, 0xd5, 0x3b, 0x14, 0xa9, 0x37, 0x17, 0x95, 0xb5, 0xb1, 0x98, 0x28, 0x3c, 0xe3, 0x33, 0xb8, - 0xbc, 0xd7, 0xf1, 0xb1, 0x17, 0x14, 0x3b, 0x9d, 0x96, 0xdd, 0x60, 0xe7, 0xdc, 0xd4, 0x63, 0x21, - 0x06, 0xcb, 0xbb, 0x30, 0xc6, 0x0a, 0xf8, 0x30, 0x11, 0x63, 0xb0, 0xd8, 0xe9, 0x70, 0x3f, 0xc9, - 0x3d, 0x66, 0x6b, 0x30, 0xcf, 0x87, 0xc9, 0xb1, 0x8d, 0xdf, 0xc9, 0xc0, 0x65, 0x36, 0x03, 0x52, - 0x59, 0x7f, 0x07, 0x26, 0x68, 0xb4, 0x68, 0xc7, 0x6a, 0x88, 0x39, 0xc1, 0xc2, 0x66, 0x45, 0xa1, - 0x19, 0xc2, 0x95, 0x38, 0xdc, 0xa1, 0xf4, 0x38, 0x5c, 0x31, 0xc1, 0x86, 0x13, 0x27, 0xd8, 0xa7, - 0x60, 0xf0, 0x16, 0xb5, 0x5a, 0xb1, 0x46, 0xf9, 0x2f, 0xd3, 0x2a, 0xe3, 0x77, 0x87, 0x61, 0xe9, - 0x01, 0x76, 0xb0, 0x67, 0xd1, 0xef, 0xd4, 0x3c, 0x7d, 0x6a, 0xfc, 0x5e, 0xa6, 0x67, 0xfc, 0x5e, - 0x41, 0xf8, 0x6f, 0x87, 0xa8, 0xff, 0x36, 0x16, 0x5c, 0x48, 0xac, 0xdf, 0x3d, 0x73, 0x83, 0x7f, - 0x16, 0xb5, 0x7e, 0xbb, 0x9e, 0xcd, 0x0e, 0xd9, 0x36, 0xc2, 0xd8, 0xbf, 0x91, 0xbe, 0xfe, 0x91, - 0x79, 0x1e, 0x0b, 0x35, 0xce, 0x63, 0xff, 0xf4, 0x88, 0xbf, 0x6d, 0x18, 0x63, 0x6e, 0x67, 0x7a, - 0xb4, 0x3b, 0xb9, 0xfa, 0x26, 0x9f, 0x53, 0x29, 0x1f, 0xc8, 0x7d, 0xd4, 0x74, 0xd7, 0x67, 0x43, - 0x20, 0xa0, 0x05, 0x26, 0xe7, 0x82, 0xae, 0xc3, 0x8c, 0xd5, 0x0d, 0x8e, 0x5c, 0x8f, 0x58, 0x44, - 0x64, 0xd4, 0xb0, 0xa3, 0x4b, 0x73, 0x5a, 0x96, 0x12, 0x95, 0x71, 0xf9, 0x53, 0x98, 0x54, 0x38, - 0x0d, 0xa2, 0x3f, 0x48, 0x2f, 0x39, 0xd1, 0x93, 0x9d, 0x43, 0xe6, 0x70, 0x57, 0xf4, 0x07, 0xe3, - 0x43, 0xc8, 0xc7, 0x1b, 0xcd, 0xbd, 0x87, 0xfd, 0x9c, 0x95, 0xc6, 0x1a, 0x2c, 0x3c, 0xc0, 0x01, - 0x1d, 0xdf, 0x74, 0xae, 0x29, 0xa1, 0xab, 0x91, 0xe9, 0x28, 0x16, 0x5f, 0x5a, 0x48, 0xc6, 0xa1, - 0x32, 0x99, 0x6b, 0xb0, 0x18, 0xe1, 0xc2, 0xeb, 0xff, 0x00, 0xc6, 0x79, 0x91, 0x5c, 0x78, 0x79, - 0xfc, 0x3b, 0x7e, 0xcc, 0x01, 0xfb, 0xab, 0x6c, 0x78, 0x73, 0xce, 0xa6, 0x20, 0x30, 0x8e, 0xd8, - 0xb9, 0x50, 0xc8, 0xf5, 0x4c, 0x4e, 0xa7, 0x10, 0xd0, 0xc0, 0x57, 0x36, 0xbc, 0x4c, 0xfa, 0xb7, - 0xe1, 0xc1, 0x52, 0xac, 0x26, 0xfe, 0x01, 0xb7, 0x21, 0x2b, 0x14, 0xf7, 0xc8, 0x99, 0x90, 0xfa, - 0x05, 0xa6, 0x44, 0x1a, 0xd8, 0xbf, 0xfc, 0x2b, 0xf4, 0x1c, 0xa0, 0xe6, 0xb8, 0xcf, 0x9f, 0xb4, - 0xac, 0xa7, 0x38, 0x56, 0xf1, 0x47, 0x90, 0xad, 0xf5, 0xaf, 0x98, 0xcd, 0x32, 0x51, 0xb9, 0x29, - 0x49, 0x8c, 0x16, 0x2c, 0xd3, 0x43, 0xb5, 0xe2, 0xd6, 0xe6, 0x46, 0xb3, 0xfa, 0x4d, 0x0b, 0xf0, - 0x19, 0xac, 0x24, 0xd6, 0xf6, 0x4d, 0x0b, 0xf1, 0x8f, 0x47, 0x60, 0x89, 0xed, 0x39, 0xf1, 0x11, - 0x3c, 0xf8, 0x8a, 0xf4, 0xad, 0x44, 0x45, 0xdc, 0x49, 0x88, 0x8a, 0xa0, 0x24, 0x6a, 0x54, 0x84, - 0x16, 0x0b, 0xf1, 0x5e, 0x72, 0x2c, 0x04, 0xf5, 0x8e, 0xe9, 0xb1, 0x10, 0xd1, 0x08, 0x88, 0x4a, - 0x7a, 0x04, 0x04, 0x3d, 0x27, 0x4c, 0x88, 0x80, 0x48, 0x8a, 0x7b, 0x88, 0x44, 0x2b, 0x66, 0xcf, - 0x36, 0x5a, 0xf1, 0x06, 0x8c, 0x17, 0x3b, 0x1d, 0x25, 0xfa, 0x97, 0x76, 0x8f, 0xd5, 0xe9, 0x30, - 0xe1, 0x09, 0xa0, 0xd8, 0x0e, 0x20, 0x61, 0x3b, 0x78, 0x1f, 0x80, 0x99, 0x6a, 0xb4, 0xe3, 0x26, - 0x29, 0x06, 0x35, 0x04, 0xb8, 0x89, 0x47, 0x3a, 0x4e, 0xf5, 0xfb, 0x84, 0xc8, 0x4c, 0xff, 0x37, - 0xf6, 0x21, 0x1f, 0x1f, 0x3e, 0x67, 0xb0, 0x74, 0xfd, 0x51, 0x06, 0x2e, 0x71, 0x5d, 0x28, 0x32, - 0xc1, 0x4f, 0x3f, 0x3a, 0xdf, 0x81, 0x29, 0x4e, 0xbb, 0x1b, 0x4e, 0x04, 0x16, 0x86, 0x22, 0x16, - 0x63, 0xb6, 0xa2, 0x6b, 0x68, 0xe8, 0x1d, 0xc8, 0xd2, 0x3f, 0xc2, 0x73, 0x3c, 0x22, 0x99, 0x09, - 0x8a, 0x5a, 0x8f, 0x9e, 0xe6, 0x49, 0x54, 0xe3, 0x2b, 0xb8, 0x9c, 0xd6, 0xf0, 0x33, 0x90, 0xcb, - 0x3f, 0xcd, 0xc0, 0x0a, 0x67, 0xaf, 0x2d, 0x15, 0x2f, 0xb5, 0xeb, 0x9c, 0xe2, 0xce, 0xc0, 0x43, - 0x98, 0x24, 0x15, 0x8a, 0x76, 0x47, 0xe2, 0x12, 0x42, 0xc8, 0x9a, 0x15, 0x58, 0x3c, 0x48, 0xcd, - 0x6a, 0xb7, 0x84, 0xcb, 0xc6, 0x54, 0x89, 0x8d, 0x2f, 0xe0, 0x62, 0xf2, 0x27, 0x9c, 0x81, 0x7c, - 0x1e, 0xc2, 0x72, 0xc2, 0xa6, 0xf0, 0x72, 0x7b, 0xf2, 0xe7, 0xb0, 0x92, 0xc8, 0xeb, 0x0c, 0x9a, - 0xb9, 0x4e, 0x34, 0x8e, 0xe0, 0x0c, 0xba, 0xd0, 0x38, 0x80, 0x0b, 0x09, 0x9c, 0xce, 0xa0, 0x89, - 0x0f, 0x60, 0x49, 0x2a, 0xe4, 0xaf, 0xd4, 0xc2, 0x2d, 0xb8, 0xc4, 0x18, 0x9d, 0x4d, 0xaf, 0x3c, - 0x82, 0x15, 0xce, 0xee, 0x0c, 0xa4, 0xb7, 0x0e, 0x17, 0x43, 0xbb, 0x3b, 0x41, 0x4f, 0x1a, 0x78, - 0x91, 0x31, 0x36, 0xe1, 0x4a, 0xc8, 0x29, 0x45, 0x69, 0x18, 0x9c, 0x1b, 0x53, 0x07, 0xc3, 0x5e, - 0x3a, 0x93, 0x1e, 0x3d, 0x80, 0xf3, 0x1a, 0xd3, 0x33, 0x53, 0x95, 0x36, 0x60, 0x9e, 0x31, 0xd6, - 0x55, 0xe7, 0x55, 0x55, 0x75, 0x9e, 0x5c, 0x9d, 0x0b, 0x59, 0xf2, 0xb0, 0x82, 0x04, 0x6d, 0x7a, - 0x8b, 0x6a, 0xd3, 0x02, 0x25, 0x6c, 0xe1, 0x3b, 0x30, 0xb6, 0xab, 0x06, 0x29, 0x24, 0x30, 0x63, - 0x36, 0x05, 0x23, 0xe3, 0xc8, 0x86, 0x09, 0x0b, 0x44, 0xad, 0x52, 0xf8, 0xbd, 0x7a, 0x58, 0xc5, - 0xaf, 0xb2, 0x90, 0xaf, 0x78, 0x1b, 0xdf, 0x80, 0xb1, 0xa0, 0x77, 0x1b, 0x4d, 0x8e, 0x30, 0xb0, - 0x7a, 0xf6, 0x43, 0xb8, 0xc4, 0x0c, 0xee, 0xf0, 0x04, 0x58, 0x37, 0x8a, 0x3f, 0x8a, 0xd8, 0xdb, - 0x17, 0x78, 0x9d, 0x51, 0xfc, 0x14, 0xb3, 0xfb, 0xb1, 0x98, 0x9b, 0x69, 0xfc, 0x07, 0xba, 0xcf, - 0x2a, 0xec, 0xe8, 0xa1, 0x44, 0x3b, 0xfa, 0x1a, 0x5c, 0x95, 0x76, 0x74, 0xb4, 0x1a, 0xd1, 0x21, - 0xc6, 0x17, 0xb0, 0xc2, 0x3e, 0x54, 0x04, 0x0e, 0xeb, 0xcd, 0xf8, 0x30, 0xf2, 0x99, 0x4b, 0xfc, - 0x33, 0x75, 0xec, 0x94, 0x8f, 0xfc, 0xbf, 0x32, 0x62, 0xc9, 0x48, 0x66, 0xfe, 0x6d, 0x3b, 0x16, - 0xb6, 0xa1, 0x20, 0x05, 0xa2, 0xb7, 0xe8, 0xe5, 0xbc, 0x0a, 0x5b, 0xb0, 0xa8, 0xb2, 0xb1, 0x1b, - 0x78, 0xff, 0x2e, 0x3d, 0x9a, 0x7b, 0x9b, 0x4c, 0x6b, 0x5a, 0x20, 0x86, 0x64, 0x3e, 0x41, 0x6e, - 0x14, 0xdf, 0x94, 0x98, 0x46, 0x1d, 0x2e, 0xc6, 0xbb, 0xc2, 0x6e, 0x88, 0x4b, 0x49, 0xe8, 0x13, - 0xb2, 0x04, 0xd1, 0x12, 0xde, 0x19, 0xa9, 0x4c, 0xc5, 0x3a, 0xc4, 0xc8, 0x05, 0x95, 0x61, 0x88, - 0xa5, 0x32, 0xf2, 0xfd, 0xa4, 0x76, 0x31, 0x1e, 0x7e, 0x0a, 0x48, 0x80, 0xca, 0x35, 0x53, 0x54, - 0x7d, 0x01, 0x86, 0xcb, 0x35, 0x93, 0xdf, 0x8a, 0xa4, 0x9a, 0x6c, 0xc3, 0xf7, 0x4c, 0x52, 0x16, - 0xb5, 0x28, 0x86, 0x06, 0xb0, 0x28, 0x1e, 0x8e, 0x64, 0x87, 0x73, 0x23, 0x26, 0xaa, 0xd9, 0x87, - 0xce, 0x81, 0x1d, 0x1c, 0xc9, 0x0a, 0x8b, 0xc6, 0x97, 0x30, 0xaf, 0x55, 0xcf, 0x67, 0x78, 0xcf, - 0x6b, 0x99, 0x44, 0x1f, 0x2f, 0x17, 0x69, 0xa4, 0x13, 0xf5, 0xcc, 0x4c, 0xb1, 0xf5, 0xb2, 0x61, - 0xd5, 0x69, 0x5e, 0x01, 0x53, 0x00, 0x8d, 0x7f, 0x37, 0xa2, 0x70, 0x57, 0x2e, 0xbb, 0xf6, 0xf8, - 0xba, 0xbb, 0x00, 0x6c, 0x84, 0x28, 0x1f, 0x47, 0x14, 0xd8, 0x49, 0x1e, 0x40, 0xc4, 0xb6, 0x14, - 0x53, 0x41, 0x1a, 0xf4, 0x32, 0x2c, 0xbf, 0x65, 0xc0, 0x88, 0xc4, 0xfd, 0x6f, 0x79, 0xcb, 0x80, - 0xb3, 0xf6, 0x4d, 0x15, 0x09, 0xfd, 0x30, 0x7a, 0xc3, 0x6b, 0x94, 0x9e, 0x04, 0xbe, 0x26, 0x42, - 0x03, 0xe2, 0xdf, 0x76, 0xba, 0x4b, 0x5e, 0xcf, 0x61, 0x91, 0xd0, 0xda, 0x4f, 0xa8, 0x61, 0x54, - 0xf9, 0x3a, 0xc0, 0x0e, 0xdb, 0x9b, 0xc6, 0x68, 0x3d, 0xd7, 0x7b, 0xd4, 0x13, 0x22, 0xf3, 0x63, - 0x86, 0x90, 0x4f, 0x1d, 0x4b, 0x98, 0x99, 0xcc, 0x1f, 0xbd, 0x0d, 0x93, 0x65, 0x73, 0xb3, 0xe2, - 0x34, 0x3b, 0xae, 0x2d, 0x0d, 0x3e, 0x44, 0x07, 0x91, 0xd7, 0xaa, 0x63, 0x51, 0x9e, 0x31, 0x55, - 0x34, 0xa2, 0x72, 0x94, 0xcd, 0xcd, 0x35, 0xb7, 0x6d, 0xd9, 0x0e, 0x8f, 0x71, 0xa7, 0x2a, 0x07, - 0xa1, 0x69, 0xd2, 0x52, 0x33, 0x44, 0x30, 0x6e, 0xf4, 0xbc, 0x4d, 0x93, 0x85, 0x91, 0xdd, 0xf2, - 0xee, 0x66, 0x2e, 0x63, 0xdc, 0x06, 0x50, 0x5a, 0x06, 0x30, 0xb6, 0xbd, 0x63, 0x6e, 0x15, 0x37, - 0x73, 0xe7, 0xd0, 0x22, 0xcc, 0x1d, 0x6c, 0x6c, 0xaf, 0xed, 0x1c, 0xd4, 0xea, 0xb5, 0xad, 0xa2, - 0xb9, 0x5b, 0x2e, 0x9a, 0x6b, 0xb9, 0x8c, 0xf1, 0x15, 0x2c, 0xe8, 0x12, 0x39, 0xd3, 0x41, 0x1b, - 0xc0, 0xbc, 0xd4, 0xdf, 0x1e, 0x1e, 0xec, 0x2a, 0xc1, 0xe6, 0xdc, 0xd8, 0x8d, 0x06, 0xd7, 0x71, - 0xb3, 0x98, 0x4f, 0x3b, 0x05, 0x09, 0xbd, 0xc1, 0xd4, 0xa0, 0x68, 0xfa, 0x03, 0x1a, 0x89, 0x18, - 0xea, 0x41, 0x74, 0xa9, 0xfc, 0x1e, 0x2c, 0xe8, 0xb5, 0x0e, 0xea, 0x95, 0x7b, 0x8d, 0x46, 0xe1, - 0x2b, 0x77, 0x29, 0x11, 0x52, 0x4f, 0x53, 0xf8, 0x4a, 0xfc, 0x3d, 0xc8, 0x71, 0xac, 0x70, 0x17, - 0xbf, 0x26, 0xbc, 0xab, 0x99, 0x84, 0x9b, 0xdc, 0xe2, 0xaa, 0x8a, 0x0b, 0x39, 0x1a, 0x5a, 0xc9, - 0x28, 0x59, 0x05, 0x0b, 0x30, 0xba, 0x19, 0x9e, 0x72, 0x99, 0xec, 0x07, 0xbd, 0x52, 0x18, 0x58, - 0x5e, 0x20, 0x42, 0x19, 0x27, 0x4c, 0xf9, 0x9b, 0x28, 0x0c, 0xf7, 0xd5, 0x38, 0xef, 0x39, 0xa5, - 0x2e, 0x11, 0xe2, 0xcd, 0xfe, 0x37, 0x4c, 0x98, 0x53, 0x2a, 0x3c, 0x45, 0x53, 0x51, 0x1e, 0xc6, - 0xb7, 0xf1, 0xd7, 0x4a, 0xfd, 0xe2, 0xa7, 0xf1, 0x2e, 0xcc, 0xf1, 0x10, 0x58, 0x45, 0x4c, 0x57, - 0x79, 0xc2, 0x89, 0x8c, 0x76, 0xeb, 0x9d, 0xb3, 0xa4, 0x20, 0x42, 0xb7, 0xd7, 0x69, 0xbe, 0x24, - 0x1d, 0xd9, 0x58, 0x4e, 0x49, 0xf7, 0xba, 0x38, 0x1c, 0xeb, 0xd7, 0x9d, 0xff, 0xc7, 0x10, 0xe4, - 0x23, 0x5e, 0x95, 0xf2, 0x91, 0xd5, 0x6a, 0x61, 0xe7, 0x10, 0xa3, 0x9b, 0x30, 0xb2, 0xbb, 0xb3, - 0x5b, 0xe5, 0x5e, 0x61, 0x11, 0xe6, 0x41, 0x8a, 0x24, 0x8e, 0x49, 0x31, 0xd0, 0x23, 0x98, 0x13, - 0x01, 0xfe, 0x12, 0xc4, 0x7b, 0xe8, 0x52, 0xef, 0xeb, 0x02, 0x71, 0x3a, 0xb2, 0xa4, 0x50, 0x9f, - 0xcd, 0x8f, 0xbb, 0xb6, 0x87, 0x9b, 0xd4, 0xd3, 0x15, 0xc6, 0x4c, 0x28, 0x10, 0x53, 0x45, 0x43, - 0xdf, 0x83, 0xa9, 0x5a, 0x6d, 0x27, 0xac, 0x7d, 0x54, 0x3b, 0x38, 0x53, 0x41, 0xa6, 0x86, 0xc8, - 0xae, 0x9d, 0x19, 0x7f, 0x9c, 0x81, 0xa5, 0x14, 0xf7, 0x12, 0x7a, 0x43, 0x93, 0xc3, 0xbc, 0x22, - 0x07, 0x81, 0xb2, 0x7e, 0x8e, 0x0b, 0xa2, 0xac, 0x5c, 0x97, 0x18, 0x3e, 0xc5, 0x75, 0x89, 0xf5, - 0x73, 0xe1, 0x15, 0x09, 0x74, 0x03, 0x86, 0x6b, 0xb5, 0x1d, 0x7e, 0xda, 0x80, 0xc2, 0x2f, 0x50, - 0x90, 0x09, 0x42, 0x09, 0x20, 0x2b, 0x8a, 0x8c, 0x59, 0x98, 0xd6, 0x3a, 0xc6, 0x30, 0x60, 0x4a, - 0x6d, 0x21, 0xe9, 0xfd, 0xb2, 0xdb, 0x94, 0xbd, 0x4f, 0xfe, 0x36, 0x7e, 0xaa, 0xcb, 0x8c, 0xa8, - 0xf1, 0xe2, 0x18, 0xdb, 0x6e, 0x8a, 0x03, 0x31, 0x5e, 0xb2, 0xd1, 0x44, 0x57, 0x61, 0xca, 0xc3, - 0x4d, 0xdb, 0xc3, 0x8d, 0xa0, 0xde, 0xf5, 0xf8, 0x75, 0x39, 0x73, 0x52, 0x94, 0xed, 0x79, 0x2d, - 0xf4, 0x1d, 0x18, 0x63, 0xe7, 0xeb, 0xfc, 0xeb, 0x85, 0x51, 0x54, 0xab, 0xed, 0x6c, 0xdd, 0x2f, - 0xb2, 0xf3, 0x7f, 0x93, 0xa3, 0x18, 0x25, 0x98, 0x54, 0xbe, 0xaa, 0x5f, 0xed, 0x0b, 0x30, 0xaa, - 0xaa, 0xfd, 0xec, 0x87, 0xf1, 0xff, 0x66, 0x60, 0x81, 0x0e, 0x83, 0x43, 0x9b, 0x6c, 0x0f, 0xe1, - 0xb7, 0xac, 0x6a, 0x9d, 0x76, 0x51, 0xeb, 0xb4, 0x08, 0xae, 0xec, 0xbd, 0x0f, 0x62, 0xbd, 0x77, - 0x31, 0xa9, 0xf7, 0xe8, 0x12, 0x60, 0xbb, 0x8e, 0xda, 0x69, 0xea, 0x29, 0xe6, 0x1f, 0x64, 0x60, - 0x5e, 0x69, 0x93, 0xfc, 0xc0, 0xbb, 0x5a, 0x93, 0x56, 0x12, 0x9a, 0x14, 0x1b, 0x4f, 0xa5, 0x58, - 0x8b, 0x5e, 0xeb, 0xd5, 0xa2, 0xa4, 0xe1, 0xa4, 0x0d, 0x93, 0xff, 0x94, 0x81, 0xc5, 0x44, 0x19, - 0xa0, 0xf3, 0xc4, 0x5e, 0x68, 0x78, 0x38, 0xe0, 0x92, 0xe7, 0xbf, 0x48, 0xf9, 0x86, 0xef, 0x77, - 0xb1, 0xc7, 0xe5, 0xce, 0x7f, 0xa1, 0xd7, 0x60, 0xba, 0x8a, 0x3d, 0xdb, 0x6d, 0xb2, 0x3b, 0x43, - 0x2c, 0x68, 0x7b, 0xda, 0xd4, 0x0b, 0xd1, 0x45, 0x98, 0x90, 0x41, 0xc7, 0xcc, 0x67, 0x6d, 0x86, - 0x05, 0x84, 0xf7, 0x9a, 0x7d, 0xc8, 0xce, 0xc3, 0x08, 0x31, 0xff, 0x45, 0x16, 0x60, 0xe1, 0x41, - 0x66, 0x07, 0x5a, 0xe2, 0x27, 0xa1, 0xf8, 0xd4, 0xa4, 0xe3, 0x98, 0x26, 0xae, 0x31, 0xf9, 0x2f, - 0x34, 0x43, 0x6f, 0x3e, 0x50, 0x4d, 0x82, 0xde, 0x78, 0xf8, 0x00, 0x16, 0x92, 0xe4, 0x9a, 0x34, - 0x0b, 0x38, 0xed, 0x90, 0xa4, 0xfd, 0x02, 0xe6, 0x8b, 0xcd, 0x66, 0x38, 0x5c, 0x59, 0xaf, 0xca, - 0xeb, 0xa9, 0x43, 0xb9, 0x61, 0xae, 0x06, 0x8f, 0x6c, 0x38, 0x76, 0x60, 0xce, 0x57, 0xbe, 0xb6, - 0xfd, 0xc0, 0x76, 0x0e, 0x15, 0x47, 0xb3, 0x79, 0x7e, 0x1b, 0x3f, 0x4f, 0x18, 0x02, 0x44, 0xe3, - 0xd0, 0x79, 0xb3, 0xf2, 0x04, 0xe6, 0x0b, 0x0a, 0xdb, 0x70, 0xe9, 0x5a, 0xd2, 0xf9, 0x86, 0x80, - 0xe1, 0x62, 0xe3, 0xa9, 0xf1, 0x3d, 0x38, 0xcf, 0x96, 0xfd, 0x5e, 0x8d, 0xe7, 0xcd, 0x56, 0xfd, - 0xe2, 0xc6, 0x7b, 0xc2, 0x73, 0xd5, 0xb3, 0x65, 0xe6, 0x94, 0xd6, 0x16, 0x5a, 0xe5, 0x7f, 0xce, - 0xc0, 0x72, 0x84, 0xb4, 0xf6, 0xc2, 0x69, 0x88, 0x3d, 0xe7, 0x46, 0xf4, 0x66, 0x09, 0xd5, 0x95, - 0x98, 0x43, 0xd8, 0x6e, 0xca, 0xcb, 0x25, 0xe8, 0x36, 0x00, 0x23, 0x56, 0x54, 0x1c, 0x7a, 0x1c, - 0xc2, 0xc3, 0xcd, 0xa8, 0x92, 0xa3, 0xa0, 0xa0, 0x2e, 0x24, 0xc9, 0x9d, 0xcf, 0x91, 0x7e, 0xe7, - 0x05, 0x34, 0x59, 0x13, 0xe6, 0xe4, 0xf5, 0x94, 0x83, 0x83, 0x24, 0xfe, 0xc6, 0xff, 0x3d, 0x0c, - 0x4b, 0x6a, 0x07, 0xbe, 0xcc, 0xb7, 0x56, 0x61, 0xb2, 0xec, 0x3a, 0x01, 0xfe, 0x3a, 0x50, 0x92, - 0xe5, 0x20, 0x19, 0xa4, 0x21, 0x21, 0x5c, 0x1d, 0x67, 0x05, 0x75, 0xa2, 0xeb, 0x69, 0x61, 0xb3, - 0x21, 0x22, 0x2a, 0xc3, 0xf4, 0x36, 0x7e, 0x1e, 0x13, 0x20, 0x0d, 0xdd, 0x75, 0xf0, 0xf3, 0xba, - 0x22, 0x44, 0x35, 0x9e, 0x52, 0xa3, 0x41, 0x8f, 0x61, 0x46, 0x0c, 0x2e, 0x4d, 0x98, 0xcb, 0xea, - 0xce, 0xab, 0x0f, 0x67, 0x96, 0x7c, 0x86, 0xd4, 0x90, 0x22, 0xc3, 0x08, 0x47, 0xf2, 0xe9, 0xac, - 0x46, 0x96, 0x4f, 0x45, 0xdf, 0xda, 0x15, 0x88, 0x16, 0x18, 0x1d, 0xcd, 0xa3, 0xa2, 0xb2, 0x30, - 0xaa, 0x90, 0x8f, 0xf7, 0x07, 0xaf, 0xed, 0x6d, 0x18, 0x63, 0xa5, 0x5c, 0x55, 0x12, 0x79, 0xd0, - 0x24, 0x36, 0xf3, 0x7d, 0x34, 0xf9, 0xae, 0xc4, 0xca, 0x8c, 0x75, 0xea, 0x4f, 0x93, 0x38, 0x52, - 0x59, 0xbd, 0x13, 0xed, 0x5e, 0x1a, 0x73, 0x2e, 0xba, 0x57, 0x0d, 0x51, 0x12, 0x37, 0xa6, 0xca, - 0xd4, 0x25, 0xa9, 0x72, 0xe2, 0x0d, 0x7b, 0x13, 0xc6, 0x79, 0x51, 0x24, 0x43, 0x5b, 0x38, 0xfd, - 0x04, 0x82, 0xf1, 0x01, 0x5c, 0xa0, 0xfe, 0x51, 0xdb, 0x39, 0x6c, 0xe1, 0x3d, 0x5f, 0xbb, 0x17, - 0xd4, 0x6f, 0x5a, 0x7f, 0x1f, 0x96, 0x93, 0x68, 0xfb, 0xce, 0x6c, 0x96, 0x33, 0xe9, 0xcf, 0x86, - 0x60, 0x61, 0xc3, 0x57, 0x15, 0x2e, 0x2e, 0x89, 0x5b, 0x49, 0xb9, 0x7f, 0xa8, 0x4c, 0xd6, 0xcf, - 0x25, 0xe5, 0xf6, 0x79, 0x5b, 0xb9, 0x04, 0x3f, 0xd4, 0x2b, 0xa9, 0x0f, 0xd9, 0xb6, 0xe4, 0x35, - 0xf8, 0x1b, 0x30, 0xb2, 0x4d, 0x96, 0xea, 0x61, 0xde, 0x77, 0x8c, 0x82, 0x14, 0xd1, 0x4b, 0xe8, - 0x64, 0x8b, 0x24, 0x3f, 0xd0, 0xfd, 0xd8, 0x55, 0xf7, 0x91, 0xfe, 0x49, 0x6b, 0xd6, 0xcf, 0xc5, - 0x6e, 0xbd, 0xbf, 0x0b, 0x93, 0xc5, 0x66, 0x9b, 0xc5, 0xc6, 0xba, 0x4e, 0x64, 0x5a, 0x2a, 0x90, - 0xf5, 0x73, 0xa6, 0x8a, 0x88, 0xae, 0xb3, 0xeb, 0x25, 0x63, 0x29, 0x89, 0x7c, 0x88, 0xb2, 0x56, - 0xec, 0x74, 0x4a, 0x59, 0x18, 0x63, 0xd7, 0xaf, 0x8d, 0x2f, 0x60, 0x99, 0xc7, 0x37, 0x31, 0x6f, - 0x30, 0x8d, 0x82, 0xf2, 0xc3, 0x10, 0xb6, 0x5e, 0x31, 0x49, 0x97, 0x01, 0xa8, 0x2d, 0xb4, 0xe1, - 0x34, 0xf1, 0xd7, 0x3c, 0xc0, 0x52, 0x29, 0x31, 0xde, 0x81, 0x09, 0x29, 0x21, 0xaa, 0xf0, 0x2b, - 0x9b, 0x1d, 0x95, 0xd6, 0x82, 0x76, 0xb7, 0x5f, 0x5c, 0xe8, 0xbf, 0xa0, 0x7d, 0x3b, 0x4f, 0xb5, - 0xc5, 0x2c, 0x04, 0x1b, 0x16, 0x23, 0x83, 0x20, 0xcc, 0xfc, 0x22, 0x75, 0x74, 0x16, 0x01, 0x2a, - 0x7f, 0x47, 0x55, 0xf8, 0xa1, 0x81, 0x54, 0x78, 0xe3, 0x9f, 0x0d, 0x51, 0xe3, 0x32, 0x26, 0x8f, - 0x88, 0x5f, 0x4f, 0xf5, 0x2d, 0x96, 0x60, 0x82, 0x7e, 0xfd, 0x9a, 0xb8, 0xcf, 0xda, 0x3b, 0x3c, - 0x27, 0xfb, 0xf3, 0xe3, 0xc2, 0x39, 0x1a, 0x93, 0x13, 0x92, 0xa1, 0x8f, 0x61, 0xbc, 0xe2, 0x34, - 0x29, 0x87, 0xe1, 0x53, 0x70, 0x10, 0x44, 0xa4, 0x4f, 0x68, 0x93, 0x77, 0xc9, 0x14, 0x66, 0xee, - 0x20, 0x53, 0x29, 0x09, 0xad, 0xdc, 0xd1, 0x34, 0x2b, 0x77, 0x2c, 0x62, 0xe5, 0x1a, 0x30, 0xba, - 0xe3, 0x35, 0x79, 0x42, 0xad, 0x99, 0xd5, 0x29, 0x2e, 0x38, 0x5a, 0x66, 0x32, 0x10, 0xd3, 0xd7, - 0x2c, 0xaf, 0x71, 0xc4, 0xb5, 0x1e, 0xfe, 0xcb, 0xf8, 0x2f, 0x19, 0x58, 0x7a, 0x80, 0x83, 0xc4, - 0xb1, 0xa5, 0x49, 0x2b, 0xf3, 0xca, 0xd2, 0x1a, 0x7a, 0x19, 0x69, 0x49, 0x69, 0x0c, 0xa7, 0x49, - 0x63, 0x24, 0x4d, 0x1a, 0xa3, 0xa9, 0xd2, 0x30, 0x1e, 0xc0, 0x18, 0xfb, 0x54, 0x62, 0xe1, 0x6f, - 0x04, 0xb8, 0x1d, 0x5a, 0xf8, 0x6a, 0xd0, 0xa1, 0xc9, 0x60, 0x44, 0xc1, 0xdc, 0xb4, 0x7c, 0xd5, - 0xc2, 0xe7, 0x3f, 0x8d, 0x1f, 0xd1, 0xec, 0x00, 0x9b, 0x6e, 0xe3, 0xa9, 0xe2, 0x59, 0x1e, 0x67, - 0x33, 0x37, 0x7a, 0x4a, 0x41, 0xb0, 0x18, 0xc4, 0x14, 0x18, 0xe8, 0x0a, 0x4c, 0x6e, 0x38, 0xf7, - 0x5d, 0xaf, 0x81, 0x77, 0x9c, 0x16, 0xe3, 0x9e, 0x35, 0xd5, 0x22, 0xee, 0x41, 0xe1, 0x35, 0x84, - 0x6e, 0x09, 0x5a, 0x10, 0x71, 0x4b, 0x90, 0xb2, 0xfd, 0x55, 0x93, 0xc1, 0x8c, 0x17, 0xcc, 0x83, - 0xa2, 0xb5, 0xed, 0x55, 0x82, 0x6a, 0xde, 0x88, 0xdc, 0x99, 0x57, 0x3f, 0x2b, 0x72, 0x5d, 0xfe, - 0x47, 0xcc, 0x97, 0x12, 0x6b, 0x74, 0xab, 0x47, 0xa3, 0x29, 0x6c, 0xe0, 0x63, 0x1b, 0xe6, 0x7d, - 0x22, 0xb4, 0xbd, 0xdc, 0x15, 0xd2, 0xaf, 0xd1, 0x0f, 0xf1, 0x31, 0x5c, 0x30, 0x71, 0xa7, 0x65, - 0x11, 0x45, 0xb6, 0xed, 0x32, 0x7c, 0x29, 0xb4, 0x2b, 0x09, 0xd7, 0x5b, 0xf5, 0xc0, 0x19, 0xd9, - 0x1f, 0x43, 0x3d, 0xfa, 0x63, 0x0d, 0x66, 0x79, 0x04, 0x97, 0xea, 0xd0, 0x6a, 0xa9, 0x0e, 0x2d, - 0xfa, 0x83, 0x74, 0x12, 0xbb, 0xd0, 0xfd, 0x34, 0xf4, 0x68, 0xf9, 0x7c, 0x74, 0x1b, 0x75, 0xd6, - 0xab, 0x8c, 0x0b, 0x97, 0xec, 0x1d, 0x98, 0xb2, 0xc2, 0xf0, 0x49, 0x21, 0xe0, 0xa9, 0x30, 0x30, - 0x74, 0xff, 0x9e, 0xa9, 0x61, 0xa0, 0x0b, 0x90, 0xa5, 0x62, 0x0e, 0x6b, 0x18, 0x77, 0xb8, 0xcf, - 0x8a, 0x1f, 0xe8, 0x89, 0x7d, 0xf5, 0x4c, 0x0e, 0xf4, 0x3a, 0xec, 0x40, 0x4f, 0xe1, 0x29, 0xa3, - 0xae, 0x26, 0x44, 0x6e, 0x9b, 0xe8, 0x6c, 0x11, 0xc8, 0xfb, 0xf7, 0xcc, 0x10, 0x67, 0xe0, 0xf1, - 0xd1, 0x86, 0xab, 0x0f, 0x70, 0xa0, 0x6f, 0xd9, 0xe1, 0x09, 0x08, 0xaf, 0x7d, 0x1d, 0xb2, 0xbe, - 0x7e, 0x7a, 0x23, 0xee, 0xc6, 0x26, 0x12, 0xee, 0xdf, 0x13, 0xe7, 0xb3, 0x9c, 0x8f, 0xfc, 0xcb, - 0xf8, 0x04, 0x0a, 0x69, 0xd5, 0x0d, 0x16, 0x6b, 0x6e, 0xc3, 0x95, 0x74, 0x06, 0xbc, 0xb9, 0x15, - 0x10, 0x27, 0x3d, 0x7c, 0x31, 0xee, 0xd7, 0x5a, 0xfd, 0x70, 0x88, 0xff, 0x61, 0x94, 0x44, 0xd4, - 0xed, 0x2b, 0x34, 0xf7, 0xef, 0x0f, 0xb3, 0xd8, 0x3d, 0x9d, 0xc5, 0x2b, 0x8c, 0x6b, 0x54, 0x81, - 0xb1, 0x96, 0xf5, 0x18, 0xb7, 0xfc, 0xfc, 0x30, 0xed, 0x89, 0xef, 0xf2, 0x65, 0x3b, 0xbd, 0x16, - 0x96, 0xdc, 0x81, 0xdf, 0xfc, 0xe1, 0xc4, 0xe8, 0x2e, 0x2c, 0x74, 0x3c, 0xdc, 0x14, 0xc7, 0x11, - 0x1d, 0x8f, 0x1f, 0xe5, 0xb3, 0x4d, 0x62, 0x5e, 0xc2, 0x2a, 0x12, 0x84, 0x5e, 0x87, 0x59, 0x9f, - 0xee, 0x85, 0xa4, 0x5d, 0xcf, 0x5d, 0xaf, 0xc9, 0x33, 0x29, 0x99, 0x33, 0xac, 0xf8, 0x11, 0x2f, - 0x45, 0xbf, 0x06, 0xe7, 0x23, 0xa9, 0x90, 0xea, 0x7c, 0x41, 0x1c, 0xe3, 0x1e, 0x9a, 0xa4, 0xee, - 0x60, 0x4b, 0x63, 0xe9, 0x26, 0x8f, 0xf4, 0xbd, 0x92, 0xcc, 0x42, 0xbd, 0xda, 0xf3, 0x3c, 0x81, - 0x7e, 0xf9, 0x7d, 0x98, 0x54, 0xbe, 0x37, 0x21, 0x28, 0x77, 0x41, 0x0d, 0xca, 0x9d, 0x50, 0x83, - 0x6f, 0xdb, 0x2c, 0xf2, 0x31, 0x26, 0x45, 0x99, 0xa2, 0x20, 0xcb, 0xdb, 0x22, 0x66, 0xc1, 0x52, - 0xe2, 0x87, 0xec, 0xdf, 0x33, 0x25, 0x62, 0xaf, 0x05, 0xa4, 0x4e, 0x03, 0x84, 0xd2, 0x6a, 0x2b, - 0x42, 0x76, 0x6d, 0xb0, 0xda, 0xd8, 0x64, 0x13, 0x35, 0x9a, 0x92, 0xcc, 0xf8, 0x91, 0x38, 0x6c, - 0xd6, 0x29, 0x06, 0x4b, 0x2a, 0x31, 0xc8, 0xe9, 0xb2, 0xf1, 0x4f, 0x32, 0x70, 0x41, 0x67, 0xae, - 0x9e, 0x22, 0xe6, 0x94, 0x53, 0x44, 0x76, 0x78, 0xf8, 0x9a, 0x7e, 0xaa, 0xc5, 0x38, 0x0f, 0x45, - 0x4f, 0xb1, 0x2e, 0xab, 0xe7, 0x85, 0x53, 0xf1, 0x83, 0xc2, 0x8b, 0xea, 0x29, 0x17, 0x77, 0x7e, - 0xc9, 0x02, 0xf4, 0x16, 0xcc, 0xf1, 0x7b, 0x7d, 0x3e, 0x6f, 0x5a, 0xb9, 0xc8, 0xae, 0x94, 0x9b, - 0x71, 0x80, 0x71, 0x07, 0x96, 0x93, 0x3e, 0x40, 0x71, 0x6b, 0xc9, 0x03, 0x2b, 0x6e, 0xbe, 0xad, - 0xc1, 0x65, 0x91, 0xa1, 0xd3, 0x75, 0x03, 0x3f, 0xf0, 0xac, 0x4e, 0xad, 0xe1, 0xd9, 0x9d, 0x90, - 0xca, 0x80, 0x31, 0x56, 0xc2, 0x45, 0xcb, 0x22, 0x01, 0x18, 0x0e, 0x87, 0x18, 0xbf, 0x99, 0x01, - 0x43, 0x0b, 0xb3, 0xa5, 0x8b, 0x4a, 0xd5, 0x73, 0x9f, 0xd9, 0x4d, 0xe5, 0xf4, 0xfd, 0x0d, 0xed, - 0x24, 0x87, 0xdd, 0x75, 0x8f, 0x5e, 0x04, 0xe2, 0xaa, 0xde, 0x9d, 0xc8, 0xe9, 0x0a, 0xb3, 0xa3, - 0xc5, 0xe0, 0x53, 0xed, 0x68, 0x71, 0xea, 0xf2, 0xdf, 0x32, 0x70, 0xad, 0x67, 0x1b, 0xf8, 0xf7, - 0x3c, 0x86, 0x5c, 0x14, 0xc6, 0x87, 0x64, 0x41, 0x09, 0xbb, 0x8b, 0x73, 0xd8, 0xbf, 0xcb, 0x6e, - 0x1b, 0x89, 0xf0, 0xd4, 0x8e, 0xe4, 0x1c, 0xe3, 0x77, 0xfa, 0xd6, 0xd3, 0x24, 0x5d, 0x6e, 0x60, - 0xb5, 0xca, 0xd4, 0x9f, 0x39, 0x1c, 0xde, 0x1c, 0x0b, 0x48, 0x69, 0x3d, 0x9a, 0x0b, 0x4c, 0x41, - 0x36, 0x7e, 0x40, 0x37, 0x91, 0xe4, 0x46, 0x0f, 0xb6, 0xae, 0x97, 0xe1, 0x5a, 0x24, 0xf4, 0xeb, - 0x25, 0x98, 0x04, 0x6c, 0xb7, 0xdf, 0xf3, 0xb1, 0xf7, 0xc0, 0x73, 0xbb, 0x9d, 0x6f, 0xa7, 0xd7, - 0xff, 0x24, 0xc3, 0x62, 0xf1, 0xd5, 0x6a, 0x79, 0x47, 0x97, 0x01, 0xc2, 0xd2, 0x84, 0x1c, 0x2c, - 0x14, 0xb0, 0x7f, 0x97, 0x79, 0x10, 0xe9, 0x21, 0xe9, 0x21, 0x63, 0xa0, 0x90, 0x7d, 0xbb, 0x3d, - 0x79, 0x8f, 0xc6, 0x7b, 0xc9, 0xda, 0x07, 0x93, 0xfb, 0xbb, 0xc2, 0x9d, 0x7b, 0x4a, 0xba, 0x23, - 0x58, 0x20, 0x2b, 0x40, 0x51, 0x5c, 0x02, 0x11, 0x54, 0x55, 0x9e, 0x7f, 0x87, 0x51, 0x7d, 0xff, - 0x97, 0xc7, 0x85, 0xf7, 0x4e, 0x93, 0x0b, 0x5d, 0xf0, 0xdc, 0x95, 0x39, 0x7b, 0x8c, 0x25, 0x18, - 0x2e, 0x9b, 0x9b, 0x74, 0x01, 0x35, 0x37, 0xe5, 0x02, 0x6a, 0x6e, 0x1a, 0x7f, 0x31, 0x04, 0x05, - 0x96, 0x1d, 0x8d, 0x86, 0x09, 0x86, 0x4e, 0x58, 0x25, 0xee, 0x70, 0x50, 0x7f, 0x69, 0x24, 0xfb, - 0xd9, 0xd0, 0x20, 0xd9, 0xcf, 0x7e, 0x0d, 0x52, 0x3c, 0xf0, 0x03, 0x38, 0x35, 0x5f, 0x3f, 0x39, - 0x2e, 0x5c, 0x0b, 0x9d, 0x9a, 0x0c, 0x9a, 0xe4, 0xdd, 0x4c, 0xa9, 0x22, 0xee, 0x8e, 0x1d, 0x79, - 0x09, 0x77, 0xec, 0x1d, 0x18, 0xa7, 0xbe, 0x99, 0x8d, 0x2a, 0x0f, 0xdc, 0xa7, 0xc3, 0x93, 0xa6, - 0x61, 0xac, 0xdb, 0x6a, 0x4a, 0x65, 0x81, 0x66, 0xfc, 0xfe, 0x10, 0x5c, 0x49, 0x97, 0x39, 0x6f, - 0xdb, 0x1a, 0x40, 0x18, 0xa0, 0xd8, 0x2b, 0x20, 0x92, 0xce, 0x9d, 0xe7, 0xf8, 0xb1, 0x0c, 0x48, - 0x56, 0xe8, 0x88, 0xa2, 0x2d, 0x32, 0x78, 0x44, 0x4e, 0x87, 0xb5, 0xc4, 0x1e, 0x3c, 0xc3, 0x3f, - 0x2f, 0xd2, 0x32, 0xfc, 0xf3, 0x32, 0xf4, 0x18, 0x96, 0xaa, 0x9e, 0xfd, 0xcc, 0x0a, 0xf0, 0x23, - 0xfc, 0x82, 0x5d, 0x09, 0xad, 0xf0, 0x7b, 0xa0, 0x2c, 0x2d, 0xcb, 0xcd, 0x93, 0xe3, 0xc2, 0x6b, - 0x1d, 0x86, 0x42, 0xb3, 0xcb, 0xb2, 0x9c, 0x02, 0xf5, 0xf8, 0xd5, 0xd0, 0x34, 0x46, 0xc6, 0xbf, - 0xcc, 0xc0, 0x0a, 0xf5, 0x26, 0xf0, 0x53, 0x24, 0x51, 0xf9, 0x4b, 0xc5, 0xc5, 0xab, 0x1f, 0xc8, - 0xc7, 0x22, 0x8d, 0x8b, 0xd7, 0x32, 0x9c, 0x98, 0x1a, 0x1a, 0xda, 0x80, 0x49, 0xfe, 0x9b, 0xce, - 0xbf, 0x61, 0xea, 0xc7, 0x58, 0x8c, 0x26, 0x8d, 0x62, 0x9e, 0x6f, 0x3a, 0xb0, 0x39, 0x33, 0x7a, - 0xa7, 0xcb, 0x54, 0x69, 0x8d, 0x5f, 0x0c, 0xc1, 0xc5, 0x7d, 0xec, 0xd9, 0x4f, 0x5e, 0xa4, 0x7c, - 0xcc, 0x0e, 0x2c, 0x88, 0x22, 0x96, 0x25, 0x4c, 0x9b, 0x62, 0x2c, 0x27, 0xb8, 0x68, 0x2a, 0x4f, - 0x33, 0x26, 0x66, 0x5c, 0x22, 0xe1, 0x29, 0x22, 0xde, 0xdf, 0x86, 0x6c, 0x24, 0x47, 0x21, 0xed, - 0x7f, 0x31, 0x43, 0xc3, 0xae, 0x5a, 0x3f, 0x67, 0x4a, 0x4c, 0xf4, 0xb3, 0xf4, 0x93, 0x77, 0xee, - 0xc9, 0xed, 0x77, 0x9c, 0x43, 0x27, 0x2c, 0x99, 0xac, 0x96, 0x02, 0x4d, 0x98, 0xb0, 0xeb, 0xe7, - 0xcc, 0xb4, 0x9a, 0x4a, 0x93, 0x30, 0x51, 0xa4, 0x61, 0x08, 0x1e, 0x6e, 0x1a, 0xff, 0x75, 0x08, - 0x2e, 0x8b, 0xeb, 0x9d, 0x29, 0x62, 0xfe, 0x0c, 0x96, 0x44, 0x51, 0xb1, 0x43, 0x14, 0x06, 0xdc, - 0xd4, 0x25, 0xcd, 0xf2, 0xf2, 0x0b, 0x49, 0x5b, 0x1c, 0x27, 0x14, 0x76, 0x1a, 0xf9, 0xd9, 0x1c, - 0xe6, 0x7c, 0x9c, 0x94, 0x31, 0x92, 0x1e, 0xaa, 0xa8, 0x6b, 0xa6, 0x26, 0x1a, 0x6d, 0xfd, 0x6c, - 0xc6, 0x0e, 0x83, 0x46, 0x5e, 0xf5, 0x30, 0x68, 0xfd, 0x5c, 0xf4, 0x38, 0xa8, 0x34, 0x03, 0x53, - 0xdb, 0xf8, 0x79, 0x28, 0xf7, 0xff, 0x3d, 0x13, 0x49, 0x21, 0x44, 0x34, 0x0c, 0x96, 0x4b, 0x28, - 0x13, 0x26, 0xde, 0xa3, 0x29, 0x84, 0x54, 0x0d, 0x83, 0xa1, 0x6e, 0xc0, 0x38, 0x8b, 0xcd, 0x69, - 0x0e, 0xe0, 0x98, 0x94, 0xf7, 0x34, 0xd9, 0xe5, 0xf9, 0x26, 0xf3, 0x51, 0x72, 0x7a, 0xe3, 0x11, - 0x5c, 0xe5, 0x57, 0x74, 0xf4, 0xce, 0xa7, 0x15, 0x9d, 0x72, 0xfb, 0x32, 0x2c, 0xb8, 0xfc, 0x00, - 0x47, 0x97, 0x1e, 0xed, 0x1e, 0xeb, 0x27, 0x30, 0xab, 0x95, 0x4b, 0x8e, 0x54, 0x2b, 0x95, 0x63, - 0x48, 0xb2, 0x8e, 0x62, 0x1b, 0x57, 0x92, 0xaa, 0x50, 0x1b, 0x6b, 0x60, 0x9a, 0x60, 0xdf, 0x53, - 0xd2, 0xb0, 0x9e, 0x62, 0xd5, 0xbb, 0xa9, 0xcc, 0x6b, 0xb6, 0xe2, 0xb1, 0x14, 0xc9, 0x62, 0xe7, - 0x95, 0x50, 0x63, 0x5a, 0x3b, 0xda, 0x34, 0x66, 0x60, 0x4a, 0x80, 0x5a, 0xd8, 0xf7, 0x8d, 0xbf, - 0x39, 0x06, 0x06, 0x17, 0x6c, 0x52, 0xc0, 0x91, 0x90, 0xc7, 0xe3, 0x58, 0x63, 0xf9, 0x46, 0x75, - 0x5e, 0xcd, 0x1f, 0x1f, 0x42, 0xd9, 0xc8, 0xa3, 0x7a, 0x5e, 0x62, 0x4a, 0xda, 0xf5, 0x73, 0x66, - 0xec, 0xeb, 0xbf, 0x4c, 0x59, 0x26, 0xd9, 0x64, 0xbb, 0x7e, 0x72, 0x5c, 0xb8, 0x9a, 0xb2, 0x4c, - 0x6a, 0x7c, 0x93, 0x97, 0x4c, 0x53, 0x3f, 0xe1, 0x1d, 0x7e, 0x99, 0x13, 0x5e, 0x32, 0x23, 0xd5, - 0x33, 0xde, 0x3d, 0x5d, 0x96, 0x7c, 0x3e, 0x8a, 0x60, 0x24, 0x15, 0xc4, 0x33, 0xf9, 0x28, 0x25, - 0x1a, 0x57, 0x8d, 0x0d, 0xb2, 0x21, 0xa7, 0x1c, 0xc1, 0x94, 0x8f, 0x70, 0xe3, 0x29, 0x3f, 0xfa, - 0x12, 0xf1, 0x29, 0x49, 0x47, 0x80, 0xec, 0x8d, 0x0f, 0x36, 0xcf, 0x19, 0xa0, 0xde, 0x20, 0xa4, - 0x6a, 0x26, 0xa2, 0x28, 0x5b, 0xf4, 0x13, 0x98, 0x97, 0x5d, 0x1d, 0x89, 0x50, 0x9d, 0x5c, 0x7d, - 0x2d, 0x4c, 0x3b, 0xdf, 0x7e, 0x62, 0xdd, 0x7a, 0x76, 0xf7, 0x56, 0x02, 0x2e, 0x4b, 0x70, 0xd3, - 0x10, 0x00, 0x25, 0x3c, 0x55, 0x3d, 0xb7, 0x4f, 0x20, 0x44, 0x9f, 0xc3, 0x42, 0xad, 0xb6, 0xc3, - 0xee, 0xe2, 0x99, 0x22, 0x5e, 0xc9, 0xdc, 0xe4, 0xf1, 0xaa, 0xb4, 0xbb, 0x7d, 0xdf, 0xad, 0xf3, - 0x3b, 0x7c, 0x6a, 0x94, 0x93, 0xea, 0xc8, 0x49, 0x62, 0x81, 0x3e, 0x81, 0x29, 0x9a, 0x42, 0xb0, - 0xd8, 0x6c, 0x7a, 0xa4, 0x63, 0xb2, 0xe1, 0x46, 0xcb, 0xb2, 0x0d, 0x5a, 0x0c, 0xa0, 0x3e, 0x26, - 0xa0, 0x12, 0xa8, 0x91, 0x43, 0xbf, 0x2b, 0xef, 0xaa, 0x11, 0x5d, 0xc6, 0x6e, 0x61, 0xee, 0xfe, - 0x14, 0x33, 0x23, 0x25, 0xea, 0x21, 0xf3, 0x0d, 0x47, 0x3d, 0xfc, 0xc3, 0x21, 0x71, 0x43, 0x2f, - 0x1e, 0x78, 0x72, 0xea, 0xe0, 0x87, 0xc4, 0x2f, 0x18, 0x68, 0xa3, 0x4f, 0x6c, 0x1c, 0x2a, 0x89, - 0xd0, 0x11, 0x99, 0x5b, 0x74, 0x46, 0x1e, 0xc3, 0x86, 0x00, 0x2d, 0x9a, 0x84, 0xaa, 0x55, 0x0a, - 0x55, 0x34, 0x2e, 0x61, 0xf8, 0xd5, 0xe3, 0x12, 0x7e, 0x0a, 0x8b, 0xe2, 0x6a, 0x6c, 0x19, 0x3b, - 0x01, 0xf6, 0x44, 0x04, 0xd3, 0x4c, 0x98, 0xa3, 0x95, 0x66, 0xe3, 0xcd, 0xc1, 0x70, 0xd1, 0xdc, - 0xe6, 0x3e, 0x37, 0xf2, 0x27, 0xba, 0xa2, 0x07, 0x08, 0xb3, 0x3b, 0xcf, 0x5a, 0x38, 0xf0, 0x15, - 0xd2, 0x5c, 0xe6, 0xa8, 0x09, 0x7d, 0xa1, 0x6a, 0x91, 0x51, 0x86, 0x15, 0xbd, 0xfa, 0x2a, 0xf6, - 0xda, 0x36, 0x55, 0xde, 0x6b, 0x38, 0x10, 0x95, 0x66, 0xc2, 0x4a, 0x91, 0x7a, 0x21, 0x85, 0xdb, - 0x91, 0x7f, 0x39, 0x04, 0x85, 0xc4, 0x8f, 0x28, 0xfa, 0xbe, 0x7d, 0xe8, 0xd0, 0xd4, 0x4e, 0x17, - 0x61, 0xe4, 0x91, 0xed, 0x34, 0x55, 0x4b, 0xf4, 0xa9, 0xed, 0x34, 0x4d, 0x5a, 0x4a, 0x8c, 0x98, - 0x5a, 0xf7, 0x31, 0x45, 0x50, 0x6c, 0x6c, 0xbf, 0xfb, 0xb8, 0x4e, 0x90, 0x54, 0x23, 0x86, 0xa3, - 0xa1, 0xeb, 0x30, 0x2e, 0x12, 0x88, 0x0e, 0x87, 0xfe, 0x3c, 0x91, 0x39, 0x54, 0xc0, 0xd0, 0x47, - 0x90, 0xdd, 0xc2, 0x81, 0xd5, 0xb4, 0x02, 0x8b, 0x8f, 0x1d, 0xf1, 0xba, 0x98, 0x28, 0x2e, 0xe5, - 0xf8, 0x16, 0x9f, 0x6d, 0xf3, 0x12, 0x53, 0x92, 0x50, 0x01, 0xda, 0x7e, 0xa7, 0x65, 0xbd, 0x90, - 0xc1, 0xf8, 0x44, 0x80, 0x61, 0x11, 0x7a, 0x57, 0x0f, 0x41, 0x0b, 0xc3, 0x09, 0x12, 0x05, 0x12, - 0x06, 0xa8, 0xad, 0xd3, 0xb0, 0xb8, 0x50, 0xd4, 0x3c, 0xf9, 0xaf, 0x91, 0x48, 0xad, 0x61, 0x9a, - 0x3a, 0xa1, 0x51, 0x63, 0x5e, 0x97, 0x0d, 0xc7, 0x0f, 0xc8, 0x5c, 0xf3, 0xce, 0xe4, 0xe0, 0x86, - 0xe7, 0xbd, 0x56, 0x99, 0x86, 0x79, 0xaf, 0x6d, 0x59, 0x1a, 0xf1, 0xa9, 0x48, 0xf4, 0xfd, 0xbb, - 0xa6, 0x82, 0x35, 0xf0, 0xe1, 0xcd, 0x3f, 0x06, 0x98, 0xab, 0x5a, 0x87, 0xb6, 0x43, 0xb4, 0x2b, - 0x13, 0xfb, 0x6e, 0xd7, 0x6b, 0x60, 0x54, 0x84, 0x19, 0xfd, 0x2e, 0x4f, 0x9f, 0x9b, 0x4a, 0x44, - 0x81, 0xd4, 0xcb, 0xd0, 0x2a, 0x4c, 0xc8, 0x34, 0x29, 0x5c, 0xeb, 0x4b, 0x48, 0x9f, 0xb2, 0x7e, - 0xce, 0x0c, 0xd1, 0xd0, 0xfb, 0x5a, 0x5c, 0xc9, 0xac, 0xcc, 0xf8, 0x43, 0x71, 0x57, 0xd9, 0x65, - 0x0b, 0x47, 0xcb, 0xfa, 0x25, 0x43, 0x4d, 0x7e, 0x14, 0x0b, 0x35, 0x19, 0xd5, 0x5a, 0x1c, 0xf3, - 0x78, 0x53, 0xa5, 0x3d, 0xf5, 0x35, 0xa4, 0x84, 0x20, 0x94, 0x2f, 0x60, 0xf2, 0x51, 0xf7, 0x31, - 0x16, 0x41, 0x35, 0x63, 0x5c, 0x91, 0x8d, 0xde, 0x50, 0xe3, 0xf0, 0xfd, 0x7b, 0x6c, 0x41, 0x7a, - 0xda, 0x7d, 0x8c, 0xe3, 0xcf, 0x6c, 0x11, 0x0d, 0x42, 0x61, 0x86, 0x8e, 0x20, 0x17, 0xbd, 0x4c, - 0xc6, 0x47, 0x67, 0x8f, 0x2b, 0x70, 0x34, 0x99, 0x9e, 0xf2, 0x98, 0x17, 0xbb, 0xe2, 0xa2, 0x55, - 0x12, 0xe3, 0x8a, 0x7e, 0x0a, 0x8b, 0x89, 0x67, 0x51, 0xf2, 0x3a, 0x7f, 0xef, 0x63, 0x2e, 0xba, - 0x1d, 0x47, 0x8f, 0x55, 0xb8, 0x73, 0x56, 0xab, 0x39, 0xb9, 0x16, 0xd4, 0x84, 0xd9, 0xc8, 0x25, - 0x29, 0xfe, 0x02, 0x61, 0xfa, 0xb5, 0x2b, 0xaa, 0x41, 0x8a, 0x53, 0xc9, 0xc4, 0xba, 0xa2, 0x2c, - 0xd1, 0x26, 0x4c, 0x48, 0xbf, 0x1c, 0xcf, 0x9c, 0x9b, 0xe4, 0x83, 0xcc, 0x9f, 0x1c, 0x17, 0x16, - 0x42, 0x1f, 0xa4, 0xc6, 0x33, 0x64, 0x80, 0x7e, 0x2b, 0x03, 0xe7, 0x93, 0x7d, 0xb4, 0xf9, 0x29, - 0xca, 0xbb, 0xaf, 0x0b, 0x9b, 0x5a, 0xc1, 0xf4, 0x0a, 0xb9, 0xdd, 0x0c, 0x53, 0x2d, 0x08, 0x5f, - 0xb6, 0x56, 0x6f, 0x4a, 0x4d, 0xe8, 0x0e, 0xc0, 0xa1, 0x1d, 0xf0, 0x3e, 0xa6, 0xa9, 0x58, 0xe3, - 0x13, 0x84, 0x34, 0xfb, 0xd0, 0x0e, 0x78, 0x4f, 0xff, 0x9d, 0x4c, 0xdf, 0x2d, 0x82, 0x66, 0x68, - 0x9d, 0x5c, 0xbd, 0xd1, 0x6b, 0xfd, 0x0c, 0xb1, 0x4b, 0x77, 0x4e, 0x8e, 0x0b, 0x6f, 0xc9, 0x34, - 0x9f, 0x0d, 0x8a, 0x25, 0x12, 0x46, 0xd4, 0x2d, 0x89, 0xa7, 0x7d, 0x4f, 0xdf, 0x5d, 0xea, 0x2d, - 0x18, 0xa3, 0x5e, 0x32, 0x3f, 0x3f, 0x4d, 0xed, 0x48, 0x9a, 0x9c, 0x92, 0xfa, 0xd2, 0x54, 0xb5, - 0x8c, 0xe3, 0xa0, 0x75, 0x62, 0x8f, 0x51, 0xcd, 0x55, 0xac, 0xb9, 0x3c, 0x95, 0x2d, 0xb7, 0xe9, - 0x19, 0x48, 0x64, 0x7c, 0xd3, 0x9e, 0x9b, 0xd3, 0xc9, 0x4a, 0x00, 0x59, 0x8f, 0x2f, 0x77, 0x0f, - 0x47, 0xb2, 0x23, 0xb9, 0x51, 0x96, 0x78, 0x8f, 0xcd, 0x4b, 0x71, 0x40, 0x7b, 0x55, 0xae, 0x4d, - 0x3b, 0x5e, 0x72, 0xc7, 0x18, 0xbf, 0x9d, 0x65, 0x47, 0x7e, 0x7b, 0x8e, 0xfd, 0xc4, 0x0e, 0x97, - 0x50, 0xd5, 0x11, 0x1f, 0x3e, 0xf8, 0xca, 0xcd, 0xe4, 0x94, 0xa7, 0x5d, 0xa5, 0xcf, 0x7e, 0xa8, - 0xaf, 0xcf, 0xfe, 0x9e, 0x12, 0x94, 0xa3, 0x64, 0xfc, 0x97, 0x67, 0xbe, 0xaa, 0x43, 0x4f, 0x46, - 0xeb, 0x7c, 0x05, 0x63, 0xec, 0x5c, 0x93, 0x46, 0x42, 0x4d, 0xae, 0xde, 0x52, 0xce, 0x7d, 0x53, - 0x9a, 0xaf, 0x1e, 0xfc, 0xf2, 0xae, 0xa1, 0x05, 0x5a, 0xd7, 0xb0, 0xe3, 0xe0, 0x5d, 0x98, 0xaf, - 0xc6, 0x8f, 0x7c, 0xb9, 0x87, 0x94, 0x5a, 0x07, 0x49, 0xa7, 0xc5, 0xaa, 0x7e, 0x9b, 0x40, 0x8e, - 0x2a, 0x30, 0x53, 0xd3, 0x8e, 0x86, 0xd5, 0x37, 0x11, 0x23, 0x67, 0xc9, 0x6a, 0x74, 0xab, 0x4e, - 0x84, 0x7e, 0x00, 0x63, 0x35, 0xd7, 0x0b, 0x4a, 0x2f, 0xf8, 0xb2, 0x2a, 0xc2, 0x46, 0x58, 0x61, - 0xe9, 0x82, 0x78, 0x17, 0xd2, 0x77, 0xbd, 0xa0, 0xfe, 0x58, 0x4b, 0x8b, 0xca, 0x50, 0xd0, 0x0b, - 0x58, 0x48, 0x3a, 0x6c, 0xe6, 0xeb, 0xe6, 0x59, 0x9d, 0x47, 0x27, 0xd1, 0xa3, 0x2d, 0xfa, 0x40, - 0x26, 0xfb, 0xa2, 0xa2, 0xcf, 0x2e, 0x49, 0x4d, 0x84, 0x89, 0x77, 0xbb, 0x74, 0x59, 0xa4, 0x92, - 0xb0, 0xfc, 0xe8, 0xab, 0xaa, 0x66, 0x8c, 0x14, 0x55, 0x61, 0x6e, 0xcf, 0xc7, 0x55, 0x0f, 0x3f, - 0xb3, 0xf1, 0x73, 0xc1, 0x0f, 0xc2, 0x2c, 0xa5, 0x84, 0x5f, 0x87, 0x41, 0x93, 0x18, 0xc6, 0x89, - 0xd1, 0xfb, 0x00, 0x55, 0xdb, 0x71, 0x70, 0x93, 0x06, 0x56, 0x4d, 0x52, 0x56, 0xf4, 0xf4, 0xa5, - 0x43, 0x4b, 0xeb, 0xae, 0xd3, 0x52, 0x45, 0xaa, 0x20, 0xa3, 0x12, 0x4c, 0x6f, 0x38, 0x8d, 0x56, - 0x97, 0x07, 0x46, 0xfa, 0x74, 0x49, 0xe5, 0xd9, 0x93, 0x6d, 0x06, 0xa8, 0xc7, 0x56, 0x03, 0x9d, - 0x04, 0x3d, 0x02, 0xc4, 0x0b, 0xcc, 0xf0, 0xc5, 0x69, 0xbe, 0x2e, 0x50, 0x63, 0x4f, 0x30, 0xa2, - 0xc3, 0x5d, 0x4b, 0x4a, 0x1c, 0x23, 0x7b, 0x95, 0xc3, 0xff, 0xbf, 0x9d, 0x81, 0x8b, 0xc9, 0x73, - 0x89, 0x2b, 0x72, 0x3b, 0x30, 0x21, 0x0b, 0xe5, 0x1d, 0x66, 0xe1, 0x25, 0x88, 0xe8, 0x60, 0x6c, - 0x42, 0x8b, 0x25, 0x4a, 0xfd, 0xfa, 0x90, 0xc7, 0x4b, 0x1c, 0xdd, 0xfd, 0x9f, 0x59, 0x16, 0x73, - 0x14, 0x5b, 0xa7, 0x3e, 0xa1, 0x09, 0xf8, 0x68, 0x99, 0x72, 0x12, 0xc5, 0x9d, 0xd2, 0xac, 0x3c, - 0x9a, 0xfc, 0x56, 0x23, 0x40, 0xef, 0xa8, 0xd1, 0xa0, 0x43, 0xca, 0x03, 0x9e, 0xa2, 0x50, 0xfd, - 0x84, 0x30, 0x4c, 0xf4, 0x0d, 0x2d, 0xe8, 0x70, 0xe0, 0x45, 0x6f, 0x64, 0xd0, 0x45, 0x6f, 0x4f, - 0x2e, 0x7a, 0x2c, 0xb1, 0xdb, 0xeb, 0xca, 0xa2, 0x77, 0xf6, 0xab, 0xdd, 0xd8, 0x59, 0xaf, 0x76, - 0xe3, 0xaf, 0xb6, 0xda, 0x65, 0x5f, 0x72, 0xb5, 0xbb, 0x0f, 0x33, 0xdb, 0x18, 0x37, 0x95, 0x33, - 0xd5, 0x89, 0x70, 0x9b, 0x75, 0x30, 0xf5, 0x96, 0x27, 0x1d, 0xac, 0x46, 0xa8, 0x52, 0x57, 0x4d, - 0xf8, 0xeb, 0x59, 0x35, 0x27, 0xcf, 0x78, 0xd5, 0x9c, 0x7a, 0x95, 0x55, 0x33, 0xb6, 0xf4, 0x4d, - 0x9f, 0x7a, 0xe9, 0x7b, 0x95, 0xd5, 0xea, 0x6f, 0x0c, 0xc1, 0x12, 0x99, 0x00, 0xad, 0x67, 0xb8, - 0x56, 0x5b, 0xe7, 0xc1, 0xb2, 0x61, 0xdc, 0xe6, 0x91, 0xeb, 0x8b, 0xfb, 0x66, 0xf4, 0x6f, 0x52, - 0xd6, 0x71, 0xbd, 0x40, 0xb8, 0x21, 0xc8, 0xdf, 0xa8, 0x14, 0x89, 0x24, 0x7b, 0x33, 0x4c, 0x86, - 0x9a, 0xc4, 0xf7, 0xdb, 0x0e, 0x23, 0x7b, 0x15, 0xf1, 0x94, 0x21, 0x1f, 0xff, 0x0a, 0xbe, 0x8e, - 0xbf, 0x0e, 0x3c, 0x2b, 0x07, 0x37, 0x8b, 0xa3, 0x8a, 0xb8, 0xc9, 0xc1, 0xc6, 0xc7, 0xf4, 0xc2, - 0x8a, 0x64, 0xe0, 0x2b, 0xf2, 0x5d, 0x57, 0xe4, 0xbb, 0xce, 0xe5, 0x5b, 0x55, 0xe4, 0x4b, 0xfe, - 0x36, 0x4a, 0xf4, 0x9a, 0x8a, 0x4a, 0x2f, 0xef, 0xbd, 0x8e, 0xf3, 0x24, 0x1b, 0x7c, 0x1f, 0x89, - 0x35, 0x41, 0xc0, 0x8d, 0x3f, 0xe3, 0xaf, 0x7a, 0xfd, 0xcf, 0xb8, 0x1d, 0xbd, 0x4a, 0xdc, 0xc6, - 0xcf, 0xc2, 0xe4, 0x61, 0x3c, 0xd1, 0x99, 0x67, 0x35, 0x9e, 0x86, 0x81, 0x33, 0x3f, 0x24, 0x6b, - 0xa9, 0x0a, 0xe0, 0x56, 0xd3, 0x92, 0x94, 0x94, 0x0a, 0xdc, 0xbf, 0x2b, 0x16, 0x59, 0x9e, 0x43, - 0x8d, 0x15, 0xeb, 0x8b, 0xac, 0x4a, 0x40, 0x6f, 0x62, 0xcc, 0x1a, 0x26, 0xcb, 0x7d, 0x95, 0xd8, - 0x82, 0x77, 0xe3, 0xd9, 0x9b, 0xa8, 0xc9, 0x19, 0x66, 0x6f, 0x52, 0xc5, 0x18, 0xe6, 0x71, 0xda, - 0x83, 0x15, 0x13, 0xb7, 0xdd, 0x67, 0xf8, 0x6c, 0xd9, 0x7e, 0x09, 0x17, 0x74, 0x86, 0xec, 0xde, - 0x3b, 0x7b, 0x43, 0xec, 0xe3, 0xe4, 0x97, 0xc7, 0x38, 0x01, 0x7b, 0x79, 0x8c, 0x3d, 0xf2, 0x43, - 0xfe, 0x54, 0xf7, 0x66, 0x0a, 0x33, 0x5c, 0xb8, 0xa8, 0x33, 0x2f, 0x36, 0x9b, 0x55, 0xcb, 0x0b, - 0xec, 0x86, 0xdd, 0xb1, 0x9c, 0x00, 0xed, 0xc0, 0xa4, 0xf2, 0x33, 0xe2, 0x10, 0x52, 0x20, 0x5c, - 0x6f, 0x0c, 0x0b, 0xb4, 0xa7, 0x0e, 0xc2, 0x62, 0x03, 0x43, 0x21, 0x2a, 0x1e, 0x22, 0x32, 0xb5, - 0xce, 0x12, 0x4c, 0x2b, 0x3f, 0xe5, 0x09, 0x12, 0x5d, 0x60, 0x95, 0x1a, 0x74, 0x81, 0xe9, 0x24, - 0x46, 0x03, 0x96, 0x93, 0x84, 0xc6, 0x5f, 0xd3, 0xa9, 0x84, 0x09, 0x68, 0xfb, 0xdf, 0xd9, 0x98, - 0x4d, 0x4b, 0x3e, 0x6b, 0xfc, 0x3f, 0x23, 0xb0, 0xc2, 0x3b, 0xe3, 0x2c, 0x7b, 0x1c, 0xfd, 0x08, - 0x26, 0x95, 0x3e, 0xe6, 0x42, 0xbf, 0x22, 0x6e, 0xad, 0xa7, 0x8d, 0x05, 0xe6, 0xb8, 0xea, 0xd2, - 0x82, 0x7a, 0xa4, 0xbb, 0xd7, 0xcf, 0x99, 0x2a, 0x4b, 0xd4, 0x82, 0x19, 0xbd, 0xa3, 0xb9, 0xef, - 0xee, 0x5a, 0x62, 0x25, 0x3a, 0xaa, 0x78, 0x30, 0xa7, 0x59, 0x4f, 0xec, 0xee, 0xf5, 0x73, 0x66, - 0x84, 0x37, 0xfa, 0x1a, 0xe6, 0x62, 0xbd, 0xcc, 0x7d, 0xcc, 0x37, 0x12, 0x2b, 0x8c, 0x61, 0xb3, - 0xd3, 0x31, 0x8f, 0x16, 0xa7, 0x56, 0x1b, 0xaf, 0x04, 0x35, 0x61, 0x4a, 0xed, 0x78, 0xee, 0x5c, - 0xbc, 0xda, 0x43, 0x94, 0x0c, 0x91, 0x29, 0xd0, 0x5c, 0x96, 0xb4, 0xef, 0x5f, 0xe8, 0x27, 0x7e, - 0x1a, 0x72, 0x16, 0xc6, 0xd8, 0x6f, 0xe3, 0x2f, 0x32, 0xb0, 0x52, 0xf5, 0xb0, 0x8f, 0x9d, 0x06, - 0xd6, 0xee, 0xff, 0xbd, 0xe2, 0x88, 0x48, 0x3b, 0x6c, 0x1b, 0x3a, 0xfb, 0xc3, 0xb6, 0xe1, 0x53, - 0x1e, 0xb6, 0x19, 0xff, 0x22, 0x03, 0xf9, 0xa4, 0x6f, 0xae, 0x61, 0xa7, 0x89, 0xaa, 0x90, 0x8b, - 0x0a, 0x81, 0x4f, 0x39, 0x43, 0x3e, 0x98, 0x92, 0x2a, 0xae, 0xf5, 0x73, 0x66, 0x8c, 0x1a, 0x6d, - 0xc3, 0x9c, 0x52, 0xc6, 0x0f, 0xbb, 0x86, 0x06, 0x39, 0xec, 0x22, 0x43, 0x24, 0x46, 0xaa, 0x9e, - 0x15, 0xae, 0xd3, 0x6d, 0x9b, 0x05, 0x13, 0x13, 0x4b, 0x47, 0xb9, 0x83, 0x01, 0x61, 0x29, 0xef, - 0x37, 0x76, 0xfa, 0x45, 0x4b, 0xc5, 0x5d, 0x6a, 0x89, 0x62, 0x7c, 0x9f, 0x6e, 0x2f, 0xdc, 0x4d, - 0xcc, 0xb2, 0xd7, 0x48, 0x66, 0x57, 0x60, 0x74, 0x77, 0xb3, 0x56, 0x2e, 0xf2, 0x5c, 0x38, 0x2c, - 0x63, 0x5c, 0xcb, 0xaf, 0x37, 0x2c, 0x93, 0x01, 0x8c, 0x0f, 0x01, 0x3d, 0xc0, 0x01, 0x7f, 0xb1, - 0x4b, 0xd2, 0x5d, 0x87, 0x71, 0x5e, 0xc4, 0x29, 0xe9, 0x39, 0x0e, 0x7f, 0x39, 0xcc, 0x14, 0x30, - 0xa3, 0x2a, 0x0c, 0xc5, 0x16, 0xd6, 0xee, 0x91, 0xbc, 0x07, 0x59, 0x8f, 0x97, 0x71, 0xa5, 0x61, - 0x46, 0x3e, 0x53, 0x49, 0x8b, 0xd9, 0xf9, 0xa2, 0xc0, 0x31, 0xe5, 0x5f, 0xc6, 0x26, 0xcd, 0xee, - 0xb8, 0xb3, 0xb1, 0x56, 0x26, 0x52, 0xe5, 0xc2, 0x12, 0xdd, 0x71, 0x9b, 0x5e, 0x9f, 0x0c, 0xb0, - 0x9a, 0x09, 0x87, 0x8a, 0x86, 0xae, 0x40, 0x3c, 0xa7, 0xa9, 0x82, 0x62, 0xdc, 0x93, 0xb9, 0x22, - 0x13, 0xb8, 0xa5, 0x3d, 0xb7, 0xb8, 0x4d, 0xb3, 0x60, 0x3e, 0xa0, 0xa1, 0x95, 0x67, 0xd1, 0x88, - 0x9f, 0xc0, 0x05, 0x22, 0x24, 0xf2, 0x4d, 0x65, 0xd7, 0x71, 0x70, 0x23, 0x70, 0xcf, 0xe4, 0x34, - 0x08, 0x5d, 0x05, 0xed, 0x81, 0x5b, 0x16, 0x71, 0x67, 0x4e, 0x3e, 0x57, 0x9e, 0xb9, 0xfd, 0x75, - 0x76, 0x2f, 0x24, 0x5a, 0x37, 0xef, 0xa6, 0x77, 0x01, 0x1a, 0xb2, 0x94, 0x77, 0x94, 0x48, 0x71, - 0xaa, 0x91, 0xec, 0xdf, 0x33, 0x15, 0xcc, 0x81, 0x0f, 0x8e, 0x2c, 0x58, 0x66, 0xda, 0x97, 0xc6, - 0x4c, 0x7c, 0x7a, 0x19, 0x26, 0x64, 0x99, 0x8c, 0x10, 0x49, 0xac, 0x9c, 0xa5, 0x4b, 0x92, 0x0d, - 0x30, 0x43, 0x3a, 0x52, 0x05, 0x5b, 0x0e, 0xbf, 0xe1, 0x2a, 0x7c, 0xec, 0x05, 0xdf, 0x68, 0x15, - 0x61, 0x82, 0xd8, 0xd3, 0x54, 0xa1, 0xe1, 0xef, 0xaf, 0x0e, 0x22, 0xa8, 0x6f, 0xb8, 0x0a, 0x22, - 0xa8, 0x6f, 0xae, 0x8a, 0xbf, 0x95, 0x61, 0x93, 0x49, 0xa3, 0xf8, 0x96, 0x26, 0x13, 0x7a, 0x0d, - 0x66, 0x1c, 0xb7, 0xfe, 0xc4, 0x6d, 0xb5, 0xdc, 0xe7, 0x64, 0xbb, 0x63, 0x51, 0x3c, 0x59, 0x73, - 0xca, 0x71, 0xef, 0xd3, 0xc2, 0x3d, 0xaf, 0x25, 0xa7, 0x5c, 0xb4, 0x85, 0x03, 0x4c, 0xb9, 0x88, - 0x18, 0x5e, 0x6a, 0xca, 0xfd, 0x3a, 0x3b, 0x69, 0x60, 0xab, 0xd7, 0xb7, 0xbe, 0xdc, 0xfc, 0xaf, - 0xdc, 0xbb, 0x19, 0xaf, 0x5e, 0x6e, 0x0c, 0xf1, 0xcf, 0x17, 0xc7, 0x7a, 0x11, 0xa2, 0x97, 0x5c, - 0x73, 0xb0, 0xc8, 0xb5, 0x1c, 0x61, 0x27, 0x24, 0x50, 0x89, 0x0f, 0xc3, 0xd4, 0x06, 0xf4, 0x18, - 0x88, 0x18, 0x2e, 0xb2, 0xe9, 0xf4, 0x2d, 0x54, 0x43, 0xa6, 0xd4, 0x37, 0x5b, 0xcd, 0xff, 0x97, - 0x61, 0x99, 0x9f, 0x6b, 0x3b, 0x6b, 0xb6, 0x75, 0xe8, 0xb8, 0x7e, 0x60, 0x37, 0xe8, 0x9b, 0x53, - 0x61, 0x88, 0xa3, 0xb2, 0x13, 0x2a, 0x11, 0x23, 0x34, 0xc4, 0xd1, 0xea, 0x06, 0x47, 0xf2, 0x01, - 0x25, 0x1a, 0x3e, 0x12, 0xc5, 0x46, 0xef, 0xc3, 0xb4, 0x52, 0x24, 0xcd, 0x2c, 0xf6, 0xa8, 0xa6, - 0x4a, 0x6e, 0x37, 0x4d, 0x1d, 0xd3, 0xf8, 0xab, 0x0c, 0xcc, 0xd7, 0x5e, 0xf8, 0x01, 0x6e, 0xd3, - 0x2c, 0xf7, 0x22, 0xf5, 0x16, 0xf5, 0xf4, 0x52, 0xf7, 0x85, 0xdc, 0xc4, 0xf9, 0xc3, 0xe8, 0x34, - 0x89, 0xa3, 0xa6, 0xdc, 0x4a, 0x44, 0xfa, 0x9c, 0xa0, 0xe0, 0x20, 0x5b, 0xc1, 0x9e, 0x13, 0x14, - 0xc5, 0x3a, 0xa9, 0x8a, 0x8e, 0x7c, 0x80, 0xb0, 0x25, 0x5c, 0x79, 0xad, 0x11, 0x5b, 0xd4, 0xa7, - 0xa5, 0xd4, 0xa1, 0x17, 0xd2, 0xfe, 0xf2, 0xb8, 0xf0, 0xee, 0x69, 0x2e, 0x68, 0x84, 0xac, 0x4d, - 0xa5, 0x1a, 0xe3, 0x67, 0x43, 0x70, 0x3e, 0xe1, 0xfb, 0x6b, 0x38, 0xf8, 0xeb, 0x10, 0xc1, 0x33, - 0x98, 0x0c, 0x1b, 0xc3, 0x5c, 0x7a, 0x13, 0xa5, 0x5d, 0xfa, 0xfa, 0x5d, 0x28, 0x03, 0xff, 0x4c, - 0x84, 0xa0, 0x56, 0x64, 0xdc, 0x84, 0x1b, 0x1b, 0xce, 0x33, 0xec, 0x04, 0xae, 0xf7, 0x82, 0x8f, - 0x5b, 0xdc, 0xe4, 0xe7, 0xac, 0xd4, 0xd7, 0x23, 0x63, 0x65, 0x7f, 0x73, 0x08, 0x0a, 0x7d, 0x50, - 0xd1, 0xff, 0x9f, 0x61, 0xcf, 0x1d, 0xcb, 0x12, 0xbe, 0x14, 0xbd, 0x2f, 0x4e, 0xb9, 0x7b, 0xd3, - 0xdf, 0xd2, 0x7e, 0xb1, 0xa3, 0x80, 0x0f, 0x7e, 0xeb, 0xcf, 0x5f, 0xfa, 0x4b, 0xf5, 0xb6, 0x2c, - 0xff, 0x00, 0x50, 0xbc, 0x82, 0x7e, 0x8e, 0xc9, 0x11, 0xd5, 0x31, 0xb9, 0x0f, 0x0b, 0xf2, 0x13, - 0x94, 0xa7, 0xa2, 0x69, 0x9e, 0x06, 0x6d, 0xc0, 0x28, 0xe3, 0xc2, 0x00, 0xe0, 0xef, 0xd8, 0x6e, - 0xba, 0x87, 0xfc, 0xb9, 0xdd, 0xa1, 0x7c, 0xc6, 0x54, 0x4a, 0x8d, 0xfb, 0xb0, 0x18, 0xe1, 0xcb, - 0xd7, 0xf5, 0xef, 0x82, 0xbc, 0x3c, 0x49, 0x19, 0x0f, 0x97, 0xe6, 0x7e, 0x79, 0x5c, 0x98, 0x0e, - 0xec, 0x36, 0xbe, 0x15, 0x3e, 0x19, 0x20, 0xfe, 0x32, 0xb6, 0x54, 0x93, 0xa5, 0xd8, 0x52, 0xf3, - 0xda, 0xa0, 0xbb, 0x30, 0xc6, 0x4a, 0x22, 0x89, 0xb9, 0x55, 0xec, 0xd2, 0xc8, 0xcf, 0x8f, 0x0b, - 0xe7, 0x4c, 0x8e, 0x68, 0x2c, 0xd2, 0xeb, 0x59, 0xf4, 0x47, 0x31, 0x4c, 0x14, 0x60, 0xec, 0xb1, - 0x87, 0x6a, 0xc2, 0x62, 0x99, 0xfc, 0x7b, 0xa4, 0x18, 0x26, 0x3e, 0x10, 0x07, 0x0c, 0x02, 0xcf, - 0x71, 0x9f, 0xb7, 0x70, 0x93, 0x3d, 0x7d, 0x58, 0x9a, 0xe2, 0x07, 0x0c, 0x23, 0x16, 0x61, 0x40, - 0xc9, 0x8c, 0x77, 0xe1, 0x02, 0xbb, 0xd7, 0xa5, 0xb6, 0x28, 0x4c, 0x69, 0x9b, 0xb5, 0xc8, 0xef, - 0x30, 0x07, 0xde, 0x38, 0xfd, 0xbd, 0xd1, 0x34, 0x3e, 0x81, 0xc5, 0x72, 0x0b, 0x5b, 0x5e, 0xb4, - 0x9d, 0xf4, 0x59, 0x0b, 0x8a, 0xa3, 0x05, 0x5f, 0x0a, 0x36, 0xa6, 0x00, 0x12, 0xdb, 0x88, 0x6d, - 0x06, 0x49, 0x15, 0xdf, 0x86, 0x51, 0xfa, 0x3b, 0x72, 0x29, 0x28, 0x41, 0x6a, 0x0c, 0xcf, 0xf8, - 0x98, 0x46, 0x9d, 0xf3, 0x01, 0x6e, 0xbb, 0x4e, 0xb8, 0xf2, 0x0f, 0x76, 0x4d, 0xed, 0x7f, 0x81, - 0x8b, 0xc5, 0x4e, 0x07, 0x3b, 0xcd, 0x90, 0x70, 0xd7, 0xb3, 0x06, 0xbc, 0xb1, 0x8e, 0x8a, 0x30, - 0x4a, 0xb1, 0xa5, 0xc3, 0x89, 0x37, 0x37, 0xa1, 0x39, 0x14, 0x8f, 0x67, 0x3c, 0xa5, 0x15, 0x30, - 0x4a, 0xa3, 0x09, 0x4b, 0xb5, 0xee, 0xe3, 0xb6, 0x1d, 0xd0, 0x90, 0x4d, 0x9a, 0x3f, 0x44, 0xd4, - 0xbd, 0x21, 0x9e, 0x2e, 0x63, 0xc2, 0xb8, 0x19, 0x46, 0x27, 0xd3, 0xa8, 0x4f, 0x9e, 0x53, 0xe4, - 0xd9, 0xdd, 0x5b, 0x21, 0x29, 0x4d, 0x30, 0xc2, 0x6a, 0xa1, 0x60, 0xfe, 0xbc, 0x99, 0x31, 0x0f, - 0x73, 0xaa, 0x7d, 0xcc, 0x46, 0xd6, 0x22, 0xcc, 0xeb, 0x76, 0x2f, 0x2b, 0xfe, 0x0a, 0x16, 0x98, - 0xee, 0xc1, 0xb2, 0x9f, 0xaf, 0x86, 0xc9, 0xbc, 0x87, 0xf6, 0x57, 0x23, 0xe1, 0x71, 0x34, 0x38, - 0x44, 0xbe, 0xbd, 0xb1, 0xbf, 0xca, 0x6e, 0x0e, 0x3d, 0x5b, 0xd5, 0x5c, 0x3f, 0x43, 0xfb, 0xab, - 0xa5, 0x71, 0x9e, 0xf9, 0x95, 0x70, 0x67, 0xdd, 0xff, 0x8d, 0x70, 0x5f, 0xa5, 0x97, 0x55, 0xd7, - 0xb1, 0x45, 0x03, 0xcb, 0x93, 0xaf, 0xfc, 0xcd, 0xc0, 0x90, 0x1c, 0xd6, 0x43, 0x76, 0xd3, 0xf8, - 0xa3, 0x0c, 0xdc, 0x64, 0x5a, 0x50, 0x32, 0x1d, 0x35, 0x82, 0x53, 0x88, 0xd1, 0x7b, 0x30, 0xea, - 0x2b, 0xde, 0x64, 0x83, 0xb7, 0xbc, 0x17, 0x27, 0x46, 0x80, 0x8a, 0x30, 0xa5, 0x86, 0x3f, 0x0f, - 0x96, 0x35, 0xce, 0x9c, 0x6c, 0x3f, 0xb1, 0x64, 0x48, 0xf4, 0x53, 0x58, 0xa9, 0x7c, 0x4d, 0x06, - 0x04, 0x7f, 0x57, 0x9a, 0x9f, 0x0e, 0x86, 0x57, 0xca, 0x66, 0x77, 0xf9, 0x88, 0x11, 0xe1, 0xac, - 0xac, 0xe1, 0xd1, 0x62, 0x64, 0xc0, 0x14, 0x67, 0xe1, 0x85, 0x71, 0xb2, 0xa6, 0x56, 0x66, 0xfc, - 0xdb, 0x0c, 0x5c, 0x4c, 0xae, 0x8d, 0x2f, 0x48, 0x1b, 0x30, 0x57, 0xb6, 0x1c, 0xd7, 0xb1, 0x1b, - 0x56, 0xab, 0xd6, 0x38, 0xc2, 0xcd, 0xae, 0xcc, 0x0f, 0x2b, 0x57, 0xa7, 0x43, 0xec, 0x08, 0x72, - 0x81, 0x62, 0xc6, 0xa9, 0xd0, 0xbb, 0x70, 0x9e, 0x06, 0x0d, 0xb2, 0x35, 0xbb, 0x85, 0x3d, 0xc9, - 0x8f, 0xb5, 0x2c, 0x05, 0x8a, 0xee, 0x08, 0x25, 0xab, 0xb9, 0xe7, 0xd8, 0x81, 0x24, 0x62, 0xd1, - 0xcb, 0x49, 0x20, 0xe3, 0x4f, 0xb9, 0x29, 0xa6, 0xbf, 0xbd, 0x19, 0xa6, 0x49, 0x16, 0x99, 0x7e, - 0x33, 0x5a, 0x10, 0xa4, 0x86, 0xad, 0xa7, 0xfc, 0x45, 0x6f, 0xc1, 0x48, 0x4d, 0x9c, 0x6e, 0xcd, - 0x44, 0xde, 0x69, 0xe6, 0x14, 0x04, 0x6e, 0x52, 0x2c, 0x74, 0x19, 0x60, 0x0d, 0xfb, 0x0d, 0xec, - 0xd0, 0x07, 0xb5, 0x99, 0x31, 0xa2, 0x94, 0x84, 0x99, 0x8a, 0x46, 0xd2, 0x32, 0x15, 0x8d, 0xea, - 0x99, 0x8a, 0x8c, 0x67, 0xcc, 0x72, 0x8b, 0x7e, 0x10, 0xef, 0xa4, 0x8f, 0x63, 0xef, 0x6f, 0xeb, - 0xd6, 0x9b, 0x06, 0xdc, 0xbf, 0x17, 0x7b, 0x5a, 0x3b, 0x3d, 0x2d, 0x71, 0x15, 0x5e, 0xd3, 0x70, - 0x8b, 0xc4, 0x96, 0xc4, 0xcd, 0xaa, 0xe7, 0xb6, 0xdd, 0x40, 0x7b, 0x00, 0x88, 0x3f, 0x40, 0x1f, - 0xaa, 0xd1, 0x7c, 0x54, 0x46, 0x8a, 0x8d, 0x5f, 0x87, 0xeb, 0x7d, 0x38, 0xf2, 0x8f, 0xaa, 0xc1, - 0x9c, 0x15, 0x81, 0x89, 0x63, 0x8a, 0xeb, 0x49, 0xdf, 0x15, 0x65, 0xe4, 0x9b, 0x71, 0x7a, 0xe3, - 0xf7, 0x33, 0x4c, 0x90, 0xfa, 0x22, 0xf4, 0x0a, 0x69, 0xa3, 0xaf, 0xc0, 0x24, 0x1f, 0x2a, 0xa1, - 0xd2, 0x69, 0xaa, 0x45, 0xe8, 0x35, 0x98, 0xe6, 0x21, 0x01, 0x6e, 0x10, 0xde, 0xd9, 0x35, 0xf5, - 0x42, 0xe3, 0x88, 0x19, 0xc7, 0xb1, 0x76, 0x49, 0xcf, 0xab, 0xfe, 0xe4, 0x46, 0xda, 0x62, 0x2a, - 0x1e, 0xdb, 0xe8, 0xd1, 0xa5, 0x5f, 0xc2, 0x25, 0x52, 0x53, 0x2c, 0xe4, 0xf7, 0x4c, 0xa2, 0xc0, - 0x7f, 0x2f, 0x03, 0x97, 0xd3, 0xb8, 0xf3, 0x4f, 0x79, 0x04, 0xf3, 0x4a, 0xd4, 0x2f, 0x8f, 0x2d, - 0x16, 0xdf, 0xd5, 0x23, 0x20, 0xd9, 0x44, 0x4f, 0x63, 0x4c, 0x07, 0x36, 0xbd, 0xbf, 0x60, 0xc6, - 0x7f, 0xc2, 0x03, 0x75, 0xaf, 0xfe, 0xcd, 0x5f, 0x33, 0x81, 0xa6, 0x3f, 0x7e, 0xf7, 0x4d, 0x3d, - 0x18, 0xf7, 0x66, 0x13, 0xa6, 0x6a, 0x0d, 0xb7, 0x83, 0x7d, 0xfe, 0x9e, 0xe9, 0x25, 0xb8, 0x50, - 0x2b, 0xef, 0x54, 0x2b, 0xb5, 0x7a, 0x6d, 0xb7, 0xb8, 0xbb, 0x57, 0xab, 0xeb, 0xf9, 0xec, 0x2f, - 0xc0, 0xa2, 0x0e, 0xae, 0x6c, 0x17, 0x4b, 0x9b, 0x95, 0xb5, 0x5c, 0x06, 0x2d, 0xc3, 0x79, 0x1d, - 0xb4, 0xb6, 0x51, 0x63, 0xb0, 0xa1, 0x37, 0x77, 0xb5, 0x77, 0xde, 0x51, 0x1e, 0x16, 0xaa, 0xe6, - 0xce, 0xda, 0x5e, 0x79, 0xb7, 0xbe, 0xfb, 0x79, 0xb5, 0x52, 0xdf, 0xdb, 0x7e, 0xb4, 0xbd, 0x73, - 0xb0, 0xcd, 0x72, 0xe1, 0x6b, 0x90, 0xdd, 0x4a, 0x71, 0x2b, 0x97, 0x41, 0x0b, 0x90, 0xd3, 0x8a, - 0x2b, 0x7b, 0xa5, 0xdc, 0xd0, 0x9b, 0x5f, 0x69, 0xef, 0x97, 0xa3, 0x8b, 0x90, 0xaf, 0xed, 0x55, - 0xab, 0x3b, 0xa6, 0xe4, 0xaa, 0xb6, 0x7c, 0x11, 0xe6, 0x34, 0xe8, 0x7d, 0xb3, 0x52, 0xc9, 0x65, - 0x48, 0x53, 0xb4, 0xe2, 0xaa, 0x59, 0xd9, 0xda, 0xd8, 0xdb, 0xca, 0x0d, 0xbd, 0x59, 0x57, 0xaf, - 0xee, 0xa0, 0x15, 0x58, 0x5a, 0xab, 0xec, 0x6f, 0x94, 0x2b, 0x49, 0xbc, 0x17, 0x20, 0xa7, 0x02, - 0x77, 0x77, 0x76, 0xab, 0x8c, 0xb5, 0x5a, 0x7a, 0x50, 0x29, 0x15, 0xf7, 0x76, 0xd7, 0xb7, 0x73, - 0xc3, 0xc6, 0x48, 0x76, 0x28, 0x37, 0xf4, 0xe6, 0x8f, 0xb4, 0x7b, 0x3d, 0xa4, 0xf9, 0x1c, 0x7d, - 0xaf, 0x56, 0x7c, 0x90, 0x5e, 0x05, 0x83, 0x6e, 0xdd, 0x2f, 0xe6, 0x32, 0xa4, 0xb7, 0xb4, 0xd2, - 0x6a, 0xb1, 0x56, 0x3b, 0xd8, 0x31, 0xd7, 0x36, 0x2b, 0xb5, 0x5a, 0x6e, 0xe8, 0xcd, 0x7d, 0x2d, - 0xd3, 0x21, 0xa9, 0x61, 0xeb, 0x7e, 0xb1, 0x6e, 0x56, 0x3e, 0xdd, 0xdb, 0x30, 0x2b, 0x6b, 0xf1, - 0x1a, 0x34, 0xe8, 0xe7, 0x95, 0x5a, 0x2e, 0x83, 0xe6, 0x61, 0x56, 0x2b, 0xdd, 0xde, 0xc9, 0x0d, - 0xbd, 0x79, 0x83, 0x27, 0xbd, 0x43, 0x33, 0x00, 0x6b, 0x95, 0x5a, 0xb9, 0xb2, 0xbd, 0xb6, 0xb1, - 0xfd, 0x20, 0x77, 0x0e, 0x4d, 0xc3, 0x44, 0x51, 0xfe, 0xcc, 0xbc, 0x59, 0x12, 0x8f, 0x48, 0x2b, - 0xfb, 0x1b, 0x9a, 0x84, 0xf1, 0xb5, 0xca, 0xfd, 0xe2, 0xde, 0xe6, 0x6e, 0xee, 0x1c, 0xf9, 0x51, - 0x36, 0x2b, 0xc5, 0x5d, 0x3a, 0x82, 0x26, 0x60, 0x94, 0x0c, 0x9d, 0x4a, 0x6e, 0x08, 0x65, 0x61, - 0x64, 0xaf, 0x56, 0x31, 0x73, 0xc3, 0xab, 0x7f, 0xf9, 0xf7, 0x32, 0x30, 0x49, 0x54, 0x1e, 0x11, - 0xda, 0xfe, 0x15, 0x9c, 0x57, 0x0d, 0x58, 0xb2, 0xd5, 0xf3, 0x17, 0x73, 0x2f, 0x89, 0x1b, 0x98, - 0x1d, 0x9f, 0x16, 0x48, 0x34, 0xaa, 0xfd, 0x2e, 0x17, 0xc4, 0x95, 0x29, 0xf7, 0xb9, 0x93, 0x84, - 0x70, 0x33, 0x73, 0x27, 0x83, 0x4c, 0x7a, 0x60, 0x24, 0x01, 0x62, 0x56, 0x44, 0x2d, 0x67, 0x56, - 0xce, 0x3f, 0x6b, 0x39, 0x05, 0x5c, 0xeb, 0xb6, 0xdb, 0x96, 0xf7, 0x02, 0xfd, 0x1a, 0x18, 0x2a, - 0xcf, 0x14, 0xab, 0xfd, 0xbb, 0x83, 0x59, 0xe7, 0xa2, 0xce, 0x1b, 0x83, 0xa1, 0xa3, 0x87, 0x30, - 0x4d, 0x6c, 0x59, 0x89, 0x86, 0x56, 0xa2, 0x84, 0x8a, 0x09, 0xbd, 0x7c, 0x31, 0x19, 0x28, 0x5f, - 0xab, 0x9a, 0xa2, 0x1f, 0xe2, 0x07, 0x96, 0xd3, 0xc0, 0x3e, 0x5a, 0x54, 0xaf, 0xe0, 0x38, 0x0d, - 0xfe, 0xc8, 0xc1, 0xf2, 0x5c, 0xa4, 0x78, 0xff, 0xee, 0x9d, 0x0c, 0xaa, 0xd1, 0xcc, 0x82, 0x9a, - 0x51, 0x8c, 0xc4, 0x5d, 0x8b, 0xb8, 0xb5, 0xcc, 0x5a, 0x53, 0x90, 0x4f, 0xd0, 0xa6, 0x58, 0xd3, - 0xdb, 0x80, 0xe2, 0x36, 0x23, 0xba, 0x12, 0x8e, 0x83, 0x64, 0x73, 0x72, 0xf9, 0x7c, 0x2c, 0x48, - 0xa1, 0x42, 0xac, 0x06, 0xc2, 0x2f, 0x6e, 0xfc, 0x4a, 0x7e, 0xa9, 0x76, 0x71, 0x2a, 0xbf, 0x0a, - 0xcc, 0xf0, 0x2b, 0xc5, 0xdc, 0x2a, 0x46, 0xbd, 0xec, 0xf1, 0x54, 0x36, 0x0f, 0xa8, 0xdc, 0xa5, - 0x65, 0x8d, 0x96, 0x43, 0xb9, 0x44, 0xcd, 0xed, 0xe5, 0x95, 0x44, 0x18, 0x97, 0xd7, 0x7d, 0x98, - 0xd1, 0x8d, 0x74, 0x24, 0x3a, 0x3c, 0xd1, 0x76, 0x4f, 0x6d, 0x50, 0x1d, 0x96, 0xb6, 0x2c, 0xdb, - 0x09, 0x2c, 0xdb, 0xe1, 0x9b, 0x8f, 0x38, 0x7b, 0x46, 0x85, 0x1e, 0x87, 0xd1, 0x35, 0xec, 0x34, - 0x65, 0xa7, 0xa6, 0xbd, 0xec, 0x40, 0xa7, 0x61, 0x4d, 0xd8, 0x9a, 0x7a, 0x60, 0x01, 0x32, 0xf4, - 0x67, 0xca, 0x93, 0x62, 0x45, 0x96, 0xd3, 0xc2, 0x9b, 0xd0, 0x16, 0x35, 0x76, 0x23, 0x1c, 0x95, - 0x31, 0x76, 0x6a, 0x76, 0x79, 0x7a, 0xb1, 0x3d, 0xb0, 0xa3, 0x71, 0x4a, 0x3e, 0x4a, 0x11, 0x5c, - 0x2a, 0xb3, 0x3b, 0x19, 0xf4, 0x15, 0x5d, 0x25, 0x12, 0xd9, 0x1d, 0xd8, 0xc1, 0x11, 0xb7, 0x22, - 0x56, 0x12, 0x19, 0xf0, 0x89, 0xd7, 0x83, 0xbb, 0x09, 0x0b, 0x49, 0x11, 0x55, 0x52, 0xa0, 0x3d, - 0xc2, 0xad, 0x52, 0x47, 0x81, 0x49, 0x4c, 0xf6, 0x66, 0x7a, 0x27, 0xf5, 0x08, 0xe8, 0x49, 0xe5, - 0xf9, 0x7d, 0x98, 0x21, 0xa3, 0xe4, 0x11, 0xc6, 0x9d, 0x62, 0xcb, 0x7e, 0x86, 0x7d, 0x24, 0xd2, - 0x4f, 0xcb, 0xa2, 0x34, 0xda, 0x9b, 0x19, 0xf4, 0x1d, 0x98, 0x3c, 0xb0, 0x82, 0xc6, 0x11, 0x4f, - 0xb7, 0x2a, 0xb2, 0xb1, 0xd2, 0xb2, 0x65, 0xf1, 0x8b, 0x02, 0xef, 0x64, 0xd0, 0x47, 0x30, 0xfe, - 0x00, 0x07, 0xf4, 0xee, 0xdc, 0x55, 0x79, 0x7e, 0xcf, 0x02, 0xf9, 0x36, 0x1c, 0x19, 0x9e, 0x2d, - 0x1a, 0x1c, 0x0d, 0x2f, 0x44, 0xb7, 0x01, 0xd8, 0x02, 0x43, 0x39, 0x44, 0xc1, 0xcb, 0xb1, 0x66, - 0xa3, 0x07, 0x44, 0xa1, 0x20, 0x2b, 0xc8, 0xa0, 0x55, 0xa6, 0xc9, 0x68, 0x13, 0x66, 0xe4, 0x83, - 0x5b, 0xdb, 0x34, 0xbd, 0x84, 0x11, 0x61, 0xe6, 0x9f, 0x82, 0xdb, 0x07, 0x64, 0x56, 0xb0, 0xd7, - 0xb2, 0x69, 0x1e, 0x02, 0xba, 0x32, 0x2f, 0xa9, 0xc9, 0x0c, 0xd4, 0x25, 0x59, 0x08, 0x91, 0xa1, - 0x29, 0xb4, 0xeb, 0xae, 0x1f, 0xe8, 0xb4, 0xb2, 0x24, 0x99, 0xf6, 0x57, 0x61, 0x59, 0xad, 0x57, - 0xcf, 0x03, 0x1e, 0xae, 0xe1, 0x69, 0xe9, 0xc5, 0x97, 0xaf, 0xf6, 0xc0, 0xe0, 0x7e, 0x90, 0xe1, - 0xdf, 0x1e, 0xca, 0xd0, 0xe5, 0x64, 0x0d, 0xe6, 0x45, 0x5d, 0x3b, 0x1d, 0xec, 0xd4, 0x6a, 0xeb, - 0xf4, 0xb1, 0xa4, 0x0b, 0x22, 0x5b, 0x6f, 0x58, 0x26, 0xb8, 0xa3, 0x38, 0x88, 0x6c, 0xa5, 0x5a, - 0xbe, 0x01, 0xd4, 0x2b, 0x0b, 0x41, 0xb8, 0x95, 0x26, 0x26, 0xa8, 0x7e, 0xc4, 0x9c, 0xba, 0x9a, - 0x11, 0xbd, 0xbf, 0x8a, 0x7a, 0x38, 0x12, 0x96, 0x53, 0x4c, 0xf1, 0x3b, 0x19, 0xf4, 0x39, 0xa0, - 0xb8, 0x69, 0x2f, 0x45, 0x98, 0xea, 0xc6, 0x90, 0x22, 0xec, 0xe1, 0x17, 0x78, 0x00, 0x8b, 0x32, - 0xdb, 0x88, 0x52, 0xeb, 0x2a, 0x4a, 0x69, 0x4d, 0x5a, 0x2b, 0xd1, 0x27, 0x30, 0xcf, 0x07, 0xad, - 0x0a, 0x40, 0x39, 0xb9, 0xfe, 0x70, 0xeb, 0x3e, 0x75, 0x9c, 0x3e, 0x84, 0xc5, 0x5a, 0x44, 0x62, - 0x2c, 0x02, 0xef, 0x82, 0xce, 0x82, 0x16, 0xd6, 0x70, 0xc0, 0x44, 0x96, 0xcc, 0xeb, 0x11, 0x20, - 0xe6, 0x5c, 0x15, 0xec, 0x9e, 0xd9, 0xf8, 0x39, 0xba, 0x14, 0x69, 0x3a, 0x29, 0xa4, 0x68, 0x74, - 0x01, 0x4b, 0xfd, 0xb2, 0x5d, 0xf6, 0xd6, 0x3b, 0x2d, 0x2d, 0x5b, 0x1d, 0xeb, 0xb1, 0xdd, 0xb2, - 0x03, 0x1b, 0x93, 0x0e, 0x50, 0x09, 0x54, 0x90, 0xe8, 0x80, 0x0b, 0xa9, 0x18, 0xe8, 0x09, 0x3d, - 0xb3, 0x64, 0x09, 0x82, 0x13, 0xc0, 0x37, 0xe4, 0x8c, 0x4f, 0x46, 0x08, 0x55, 0xa8, 0xde, 0x78, - 0xe8, 0x37, 0x68, 0xee, 0xda, 0xde, 0x6e, 0x10, 0xf4, 0x9d, 0x24, 0x6f, 0x55, 0x8a, 0x23, 0x67, - 0xf9, 0xad, 0xc1, 0x90, 0xa5, 0xe3, 0x69, 0xfa, 0x01, 0x0e, 0xaa, 0xad, 0xee, 0xa1, 0x4d, 0x5f, - 0x1b, 0x46, 0xd2, 0x2f, 0x21, 0x8b, 0xf8, 0xf8, 0x17, 0x59, 0xbc, 0x42, 0x40, 0x0d, 0xff, 0x18, - 0x6d, 0x40, 0x8e, 0xed, 0x33, 0x0a, 0x8b, 0x4b, 0x31, 0x16, 0x1c, 0xc5, 0xf2, 0xac, 0xb6, 0x9f, - 0x3a, 0x2a, 0x6e, 0xc3, 0x08, 0x51, 0x77, 0x91, 0x98, 0xfb, 0xaa, 0x62, 0x3c, 0xaf, 0x95, 0xc9, - 0x17, 0x23, 0x16, 0x69, 0x1f, 0xf9, 0x38, 0x10, 0x79, 0x4b, 0x58, 0x30, 0xc1, 0xb5, 0x50, 0xa9, - 0x88, 0x43, 0xc3, 0x25, 0x26, 0x92, 0x63, 0x6b, 0xff, 0x1e, 0x92, 0xef, 0x6f, 0x27, 0x30, 0xbd, - 0xa1, 0xe9, 0x3e, 0xa7, 0xe3, 0xfb, 0x84, 0x3d, 0xe8, 0x1f, 0x27, 0xf2, 0xd1, 0x6b, 0xfa, 0x75, - 0xa0, 0x14, 0xa6, 0xd7, 0xfb, 0x60, 0xc9, 0x57, 0x2d, 0xc6, 0x79, 0x2a, 0x41, 0xb4, 0x18, 0xca, - 0x80, 0xfc, 0x16, 0x8c, 0xa6, 0x95, 0xd6, 0xed, 0xaf, 0xd2, 0x25, 0x9a, 0x6c, 0xfa, 0x44, 0xc5, - 0xef, 0x7a, 0x1e, 0x76, 0x18, 0x71, 0x9a, 0xfe, 0x94, 0x44, 0xfd, 0x31, 0x5d, 0x4a, 0x15, 0x6a, - 0xe6, 0x34, 0xeb, 0xc7, 0x82, 0xbd, 0x49, 0x76, 0x27, 0x83, 0xde, 0x83, 0x2c, 0x6f, 0x23, 0x21, - 0xd2, 0x1a, 0xed, 0xf7, 0x68, 0x35, 0xa5, 0x04, 0xd6, 0x19, 0xb4, 0xcd, 0x3a, 0x4e, 0xda, 0x28, - 0x63, 0x6d, 0x7e, 0x8f, 0x28, 0x0f, 0xcd, 0x97, 0xa1, 0x2c, 0x0b, 0x2d, 0x82, 0x52, 0xe6, 0x35, - 0xd3, 0x44, 0x95, 0x73, 0x4f, 0x26, 0xc4, 0x0e, 0xa0, 0xc9, 0xf8, 0x64, 0x4e, 0x2d, 0x69, 0x07, - 0x68, 0xc5, 0xfd, 0x74, 0x87, 0x0d, 0xc8, 0x15, 0x1b, 0x74, 0x67, 0xab, 0xe1, 0xb6, 0xd5, 0x39, - 0x72, 0x3d, 0x2c, 0x8d, 0xba, 0x28, 0x40, 0xf0, 0x5a, 0x94, 0x9a, 0x12, 0x07, 0x6c, 0x62, 0x8b, - 0xa6, 0xc7, 0x5e, 0x92, 0xaa, 0x52, 0x04, 0x94, 0x4c, 0xd1, 0xc3, 0xe8, 0x5a, 0x28, 0x13, 0xb3, - 0xb3, 0xf5, 0x6a, 0x6c, 0x3e, 0xa0, 0x0b, 0x93, 0x44, 0xf6, 0xe5, 0x8e, 0x27, 0x8b, 0xa4, 0xb9, - 0x2b, 0x62, 0xa0, 0x25, 0xea, 0x16, 0xcc, 0x50, 0x7f, 0x5e, 0x58, 0x72, 0x51, 0x99, 0x3f, 0x61, - 0x71, 0xd4, 0x81, 0x10, 0x85, 0xca, 0x34, 0xc6, 0xb3, 0x3c, 0x51, 0xaa, 0x94, 0x72, 0x5a, 0x63, - 0xd2, 0xbe, 0xe6, 0x7b, 0x30, 0x53, 0x21, 0xfb, 0x5d, 0xb7, 0x69, 0xb3, 0x37, 0x2c, 0x90, 0xfe, - 0xf8, 0x40, 0x2a, 0xe1, 0xba, 0x78, 0x55, 0x90, 0x92, 0x72, 0x4f, 0x8b, 0xd8, 0x72, 0x95, 0x32, - 0xf1, 0x29, 0x0b, 0x82, 0x2d, 0x7f, 0x46, 0x84, 0x7a, 0x42, 0xb8, 0x6b, 0x65, 0x89, 0x29, 0xcc, - 0xc5, 0x30, 0x39, 0x3c, 0xbf, 0xa9, 0x7f, 0x5d, 0xb3, 0xd8, 0x63, 0x70, 0xc1, 0x3b, 0xae, 0x53, - 0x7f, 0xa6, 0xbc, 0x6a, 0x9e, 0xc2, 0x33, 0x05, 0xde, 0x6f, 0x68, 0xcb, 0xbc, 0xcf, 0xc5, 0x56, - 0x2b, 0x46, 0xec, 0xa3, 0x37, 0x74, 0xee, 0x49, 0x38, 0xfd, 0x6a, 0xa0, 0x1e, 0x11, 0xa6, 0x94, - 0x16, 0x3b, 0x1d, 0xb6, 0xc6, 0x5f, 0x96, 0xeb, 0x8f, 0x0e, 0x88, 0x7b, 0x44, 0xa2, 0x70, 0x3e, - 0x54, 0x1e, 0xd2, 0x51, 0x1b, 0x3e, 0x7d, 0x8e, 0x54, 0x7f, 0x40, 0xf4, 0xe5, 0x77, 0xa9, 0xa3, - 0x46, 0x80, 0x72, 0x7b, 0x13, 0x6f, 0x08, 0x08, 0x7f, 0x34, 0x52, 0x07, 0x6a, 0xfc, 0x7d, 0xf5, - 0xe5, 0xcb, 0x69, 0x60, 0x79, 0x20, 0x93, 0xe3, 0x83, 0x29, 0x6c, 0xe0, 0x65, 0x6d, 0x5b, 0x8b, - 0xb7, 0xb1, 0x90, 0x0a, 0x97, 0x9f, 0x9c, 0x8b, 0xbe, 0x6c, 0x2f, 0x99, 0xa6, 0x3c, 0x79, 0x9f, - 0xda, 0x27, 0xf7, 0x61, 0x41, 0xed, 0x51, 0xf9, 0xdd, 0x69, 0x9b, 0x49, 0x1a, 0x9f, 0x5d, 0x58, - 0x4c, 0x7c, 0x88, 0x5e, 0x6a, 0x06, 0xbd, 0x9e, 0xa9, 0x4f, 0xe5, 0x8a, 0xe1, 0x3c, 0x77, 0x7c, - 0x44, 0x0e, 0x0a, 0xe4, 0x26, 0x9e, 0x0c, 0x8e, 0x6e, 0xe2, 0x69, 0x58, 0x5c, 0xa0, 0x5f, 0xd1, - 0x0d, 0x35, 0x56, 0xc7, 0x55, 0xc5, 0x53, 0x92, 0x52, 0x81, 0xd1, 0x0b, 0x45, 0x8e, 0x81, 0x85, - 0x04, 0x70, 0xba, 0x88, 0xaf, 0xa5, 0xf3, 0x54, 0xb3, 0x6b, 0x2f, 0x26, 0x1e, 0xa0, 0x48, 0x79, - 0xf7, 0x3a, 0xba, 0x59, 0x7e, 0xad, 0x37, 0x12, 0xaf, 0x63, 0x5f, 0x64, 0x3c, 0x4e, 0x95, 0x7e, - 0x32, 0xb8, 0xbf, 0x39, 0xbf, 0x2c, 0xc7, 0xdc, 0xe0, 0x62, 0x49, 0xe3, 0xd6, 0x94, 0x9e, 0x33, - 0x91, 0xad, 0x83, 0xb5, 0x31, 0xe2, 0x39, 0xd3, 0x80, 0xa2, 0x85, 0xd7, 0x7a, 0xe2, 0x28, 0x46, - 0x35, 0xfa, 0x92, 0xb9, 0xd2, 0xf4, 0x2a, 0x54, 0x57, 0x5a, 0x22, 0xff, 0x2b, 0xe9, 0x08, 0x2a, - 0x73, 0x8b, 0xc5, 0x9f, 0xe8, 0x28, 0x3e, 0x52, 0xad, 0xd5, 0x08, 0x2c, 0x3a, 0xfe, 0x12, 0x51, - 0xd4, 0x2a, 0x0e, 0xc4, 0x3c, 0x4f, 0x91, 0x52, 0x12, 0x70, 0x20, 0xcd, 0x6a, 0x07, 0xf2, 0x61, - 0x67, 0x46, 0x3e, 0xe0, 0x94, 0x5d, 0x29, 0x84, 0x71, 0x21, 0x5c, 0x2b, 0xa2, 0x1c, 0x5f, 0x8f, - 0xad, 0x26, 0x29, 0x82, 0xe9, 0x59, 0x05, 0xdb, 0x33, 0x94, 0x0c, 0xca, 0x2b, 0xa1, 0x5f, 0x3e, - 0x2c, 0x4d, 0xd8, 0x33, 0x54, 0x20, 0x9f, 0x24, 0x9b, 0x54, 0x95, 0x0f, 0x01, 0xe9, 0x5f, 0x7d, - 0x29, 0x89, 0x4f, 0xa4, 0x9b, 0x4a, 0x30, 0xc7, 0xd4, 0x88, 0x41, 0x18, 0x26, 0x9d, 0x88, 0xde, - 0xc9, 0x84, 0xdb, 0x83, 0xf2, 0x81, 0x42, 0x47, 0x8d, 0x02, 0x4e, 0xb3, 0x3d, 0x0c, 0xd2, 0xa4, - 0x34, 0x3e, 0x6b, 0x30, 0xc9, 0x3e, 0x9b, 0xed, 0xfa, 0x17, 0x34, 0x79, 0x6b, 0x1b, 0xfe, 0xb2, - 0x26, 0x25, 0x7d, 0xaf, 0x2f, 0xd3, 0x63, 0x01, 0x51, 0x9c, 0xde, 0x8a, 0x95, 0x38, 0x0f, 0x5f, - 0x55, 0x18, 0xe8, 0x7b, 0x1d, 0x92, 0xcb, 0x8a, 0xfa, 0x16, 0x4a, 0x88, 0xae, 0x77, 0x7e, 0x04, - 0x18, 0x1e, 0x2f, 0x48, 0x89, 0xb2, 0x2f, 0xbb, 0x18, 0x15, 0xb4, 0xf6, 0x71, 0xe9, 0xe2, 0x41, - 0xaa, 0x98, 0xfb, 0x7c, 0x5e, 0xba, 0x1d, 0x30, 0xcf, 0xdf, 0xb5, 0xa6, 0xbe, 0x0f, 0x91, 0x69, - 0xec, 0xbc, 0xe6, 0x11, 0x91, 0xb1, 0x01, 0xa9, 0x6c, 0xaa, 0x70, 0x9e, 0xa9, 0xa5, 0xb1, 0x4c, - 0x62, 0xaf, 0x69, 0x5a, 0x6b, 0x14, 0x9c, 0xae, 0xb4, 0xca, 0x8d, 0x24, 0x95, 0x63, 0x32, 0xb8, - 0x9f, 0xd8, 0x7e, 0xa8, 0x6c, 0x24, 0x51, 0x5a, 0x1f, 0xdd, 0x8c, 0x6a, 0xac, 0x31, 0x94, 0xfe, - 0x1b, 0x15, 0x0f, 0xd1, 0x8b, 0x24, 0xba, 0x33, 0x34, 0x39, 0xe8, 0xc0, 0x74, 0x29, 0x98, 0x62, - 0x2e, 0xa5, 0x70, 0x4b, 0x02, 0xf6, 0x6b, 0xe1, 0x17, 0xca, 0xea, 0xab, 0x53, 0xfa, 0xd2, 0x7d, - 0x92, 0x86, 0xd0, 0xff, 0x6c, 0x70, 0x31, 0xfe, 0x81, 0x76, 0x03, 0x4b, 0x15, 0x23, 0x11, 0x9a, - 0xfe, 0xfd, 0x0f, 0x84, 0x8a, 0x18, 0xe5, 0x77, 0x3e, 0xe2, 0xcc, 0xef, 0xd7, 0xb0, 0xaf, 0xc4, - 0x0e, 0x11, 0xf9, 0x26, 0xbb, 0x81, 0xa3, 0x3b, 0x44, 0x02, 0x46, 0x3f, 0xee, 0xeb, 0x30, 0x5b, - 0xb3, 0x0f, 0x1d, 0x41, 0x56, 0xae, 0x99, 0xd2, 0xfa, 0x53, 0xca, 0xa2, 0xcb, 0x95, 0x06, 0x92, - 0xc9, 0x16, 0x16, 0x84, 0xd9, 0x22, 0xc1, 0xd8, 0x0b, 0x50, 0x8c, 0x46, 0x71, 0xc3, 0xaf, 0x24, - 0xc2, 0xe2, 0x0c, 0xa5, 0xde, 0xf4, 0xf0, 0x60, 0x57, 0x32, 0x54, 0x0b, 0xa3, 0x0c, 0x75, 0x98, - 0x8c, 0xb2, 0x19, 0x7f, 0x80, 0xe9, 0x73, 0xf6, 0xaa, 0xf7, 0x4a, 0x79, 0xa6, 0x3e, 0xe2, 0x3c, - 0x42, 0x1f, 0xc3, 0x84, 0x7c, 0xc6, 0x5f, 0x9e, 0x7b, 0x28, 0x0f, 0xfb, 0x33, 0xa2, 0x7c, 0x1c, - 0xc0, 0x2b, 0xac, 0x8b, 0x1b, 0xa6, 0x32, 0xfb, 0x12, 0x63, 0x65, 0x68, 0xde, 0x36, 0x1d, 0x18, - 0x55, 0xd6, 0x92, 0x71, 0x78, 0x05, 0xef, 0x08, 0x0f, 0x15, 0xfd, 0xa8, 0xbc, 0xee, 0x41, 0x4c, - 0xff, 0xae, 0x77, 0x84, 0x7b, 0x4a, 0x23, 0x0b, 0x8b, 0x52, 0xc8, 0xbe, 0x07, 0x53, 0x6c, 0x12, - 0xd0, 0xdf, 0xab, 0x0a, 0xa1, 0x28, 0x4c, 0x21, 0x7c, 0x4f, 0x9c, 0xa5, 0xd1, 0xfa, 0x74, 0x60, - 0x6f, 0xdd, 0xe5, 0x63, 0xe1, 0x0e, 0xd3, 0x5a, 0x1a, 0x16, 0xf5, 0x1b, 0xde, 0x55, 0x98, 0x52, - 0x9f, 0xe8, 0x95, 0x63, 0x27, 0xe1, 0x91, 0x6d, 0x39, 0x76, 0x92, 0x1e, 0xc9, 0x0e, 0xcf, 0x9a, - 0x3e, 0x17, 0xce, 0x9a, 0x90, 0xe9, 0x25, 0xad, 0x59, 0x31, 0xbe, 0x97, 0xd3, 0xc0, 0x51, 0xd6, - 0x35, 0xc8, 0x45, 0xdf, 0x13, 0x96, 0x96, 0x6e, 0xca, 0xc3, 0xcf, 0xd2, 0x7c, 0x4e, 0x7d, 0x88, - 0xb8, 0x2a, 0x0e, 0x66, 0x74, 0xbe, 0x57, 0x93, 0x1b, 0xa5, 0xb2, 0x4e, 0x3f, 0xa9, 0x99, 0xd6, - 0x9e, 0x16, 0x56, 0x7d, 0x10, 0xb1, 0xa7, 0x8b, 0x55, 0x7d, 0x32, 0xe1, 0x35, 0x62, 0x5b, 0xa4, - 0x38, 0x49, 0x8c, 0x15, 0x90, 0x6e, 0x98, 0xfe, 0x89, 0xdb, 0xfb, 0xc6, 0x1d, 0xa0, 0x5f, 0x81, - 0xa5, 0x94, 0x3c, 0xd2, 0xe8, 0x7a, 0xc4, 0xf5, 0x9e, 0x9c, 0x67, 0x5a, 0x0e, 0x90, 0xc4, 0x37, - 0xff, 0xb7, 0x68, 0x00, 0x8c, 0x76, 0x6b, 0x36, 0x76, 0x08, 0x7c, 0x10, 0xde, 0x36, 0x0c, 0x85, - 0x9c, 0x78, 0xdd, 0x16, 0xd5, 0xa8, 0x05, 0xa6, 0x5f, 0x7d, 0x8e, 0x9f, 0x03, 0x27, 0x30, 0x5c, - 0x4e, 0x66, 0x48, 0x96, 0x11, 0x71, 0x90, 0x18, 0xe1, 0xaa, 0x1e, 0x24, 0x26, 0xde, 0xf3, 0xd6, - 0x0e, 0x12, 0x53, 0x6e, 0x63, 0x57, 0x61, 0x3e, 0xe1, 0xb6, 0xb4, 0x1c, 0x66, 0xe9, 0x37, 0xa9, - 0x53, 0x25, 0x50, 0x15, 0xfa, 0x5d, 0x32, 0xc7, 0xf4, 0x8b, 0xd3, 0xa9, 0x1c, 0x1f, 0x12, 0x8e, - 0xb1, 0xbb, 0xd0, 0x28, 0x05, 0xbd, 0xf7, 0xc2, 0x64, 0x0a, 0x75, 0x41, 0xa7, 0x5a, 0x55, 0xda, - 0x97, 0x76, 0xeb, 0x3a, 0xb5, 0x7d, 0x15, 0x31, 0x55, 0x93, 0xdb, 0x37, 0xa8, 0xc2, 0x20, 0xcf, - 0x74, 0x23, 0x89, 0x08, 0xb4, 0x0f, 0x55, 0xca, 0x97, 0x53, 0xca, 0xd1, 0x36, 0x0d, 0x96, 0x8b, - 0x96, 0x2a, 0x56, 0x7e, 0x72, 0xa6, 0x83, 0x54, 0x7e, 0x6c, 0x8a, 0x68, 0x17, 0x85, 0x4f, 0x33, - 0x45, 0x22, 0x37, 0x8c, 0xf9, 0x14, 0xd1, 0xaf, 0x2a, 0x9f, 0x6a, 0x8a, 0x44, 0x18, 0xaa, 0x53, - 0x24, 0xc2, 0xf5, 0x4a, 0xc4, 0xf1, 0xd0, 0x7b, 0x8a, 0xa4, 0xdc, 0x9e, 0x96, 0x53, 0x24, 0x2a, - 0x81, 0xa8, 0x57, 0x26, 0x75, 0xc0, 0x44, 0x25, 0x20, 0xa7, 0x48, 0x32, 0xc7, 0xf4, 0x2b, 0xf3, - 0xa9, 0x1c, 0xe5, 0x14, 0xd1, 0x39, 0xa6, 0xa0, 0x0f, 0x38, 0x45, 0xa2, 0x95, 0xe8, 0x53, 0xe4, - 0x54, 0xed, 0x93, 0x53, 0x24, 0xb9, 0x7d, 0xa7, 0x9e, 0x22, 0x91, 0xec, 0x1a, 0xda, 0x87, 0x26, - 0x4d, 0x91, 0x28, 0x3e, 0x9b, 0x22, 0xd1, 0xd2, 0x88, 0x23, 0xac, 0xc7, 0x14, 0x89, 0x52, 0x7e, - 0x4a, 0xf9, 0x45, 0x6e, 0x3f, 0x0f, 0x32, 0x49, 0x52, 0x2f, 0x4e, 0xa3, 0x03, 0xea, 0xee, 0x8d, - 0x5e, 0x6a, 0x1f, 0x68, 0xa2, 0x5c, 0x4c, 0x63, 0x4a, 0xa7, 0x0a, 0xd7, 0x6e, 0x13, 0x38, 0x87, - 0x53, 0x21, 0xe5, 0x2a, 0xbf, 0xa6, 0xdd, 0xa6, 0xde, 0xb7, 0xdf, 0x17, 0xbd, 0x14, 0x95, 0x87, - 0xee, 0xc8, 0x4c, 0xbe, 0x5d, 0xde, 0x43, 0x22, 0xfb, 0x64, 0x60, 0x36, 0x7b, 0xf0, 0xed, 0x75, - 0x39, 0xbe, 0x07, 0x5f, 0x69, 0x42, 0x46, 0xf9, 0xa6, 0x92, 0xf4, 0x9e, 0x40, 0x9f, 0x89, 0x13, - 0xb5, 0x28, 0xdd, 0x6a, 0xc4, 0x28, 0x3d, 0x75, 0x4b, 0xa5, 0x71, 0x1a, 0x6d, 0xe9, 0x69, 0x27, - 0xd2, 0x96, 0x50, 0xaa, 0x62, 0x19, 0x67, 0x22, 0x1f, 0xad, 0x4e, 0xa6, 0x54, 0x08, 0xda, 0xa5, - 0x87, 0x07, 0xf1, 0x72, 0xe5, 0xe0, 0x21, 0x2d, 0xb5, 0x4d, 0x5f, 0xae, 0xb1, 0xfc, 0x00, 0x2a, - 0xd7, 0xb4, 0xe4, 0x01, 0x92, 0x6b, 0x9c, 0xfa, 0x13, 0xea, 0x0a, 0xe5, 0x37, 0x90, 0x9d, 0x27, - 0x6e, 0x7f, 0xcf, 0x65, 0x88, 0x4b, 0x63, 0x36, 0xbf, 0xcf, 0x4f, 0xa0, 0x45, 0x61, 0xaa, 0xf0, - 0x93, 0xe8, 0xd1, 0x27, 0x90, 0xe3, 0xeb, 0x67, 0xc8, 0x20, 0x09, 0x31, 0xb5, 0xeb, 0x4a, 0xc2, - 0x71, 0x3a, 0x40, 0x0b, 0x06, 0x71, 0x98, 0x0e, 0x22, 0x89, 0x74, 0x8f, 0x20, 0xd9, 0xca, 0x77, - 0xbd, 0xae, 0x1f, 0xe0, 0x66, 0xdc, 0x93, 0xa7, 0x37, 0x46, 0x44, 0x10, 0xe9, 0xe8, 0xfb, 0xab, - 0x68, 0x83, 0x2e, 0x9e, 0x7a, 0x71, 0x2f, 0xb7, 0x69, 0x32, 0x1b, 0xba, 0xb6, 0x6d, 0xc9, 0xeb, - 0xaa, 0x7a, 0x9b, 0xd2, 0xea, 0x4e, 0x6d, 0x94, 0x08, 0xc8, 0xe0, 0x72, 0x1a, 0xf0, 0x13, 0xd3, - 0xe4, 0xf4, 0x21, 0x8d, 0x65, 0x61, 0xbe, 0xd7, 0x7e, 0xe2, 0x89, 0x5e, 0xfc, 0x42, 0x15, 0x98, - 0x10, 0xc4, 0xfd, 0xa5, 0x12, 0xa5, 0x26, 0x52, 0x61, 0xdf, 0xf2, 0x03, 0x98, 0x25, 0xc3, 0x36, - 0xb0, 0x02, 0xbb, 0xd1, 0x87, 0x99, 0x0c, 0xc9, 0x50, 0x90, 0xf7, 0x57, 0xd1, 0x57, 0xec, 0x00, - 0x28, 0x72, 0x93, 0x4d, 0x3b, 0x00, 0x4a, 0xbe, 0x7d, 0xa7, 0x1d, 0x00, 0xa5, 0x5d, 0x84, 0x5b, - 0x83, 0x69, 0xed, 0x1e, 0xb3, 0x34, 0x4f, 0x93, 0x6e, 0x37, 0xf7, 0x18, 0x91, 0xd3, 0xda, 0x7d, - 0x65, 0xc9, 0x25, 0xe9, 0x16, 0x73, 0x2a, 0x97, 0x8f, 0x60, 0x92, 0xf7, 0x7b, 0xcf, 0x2e, 0x4b, - 0xf7, 0xc8, 0x2e, 0x2a, 0x77, 0x23, 0xba, 0x4d, 0x3b, 0x28, 0xbb, 0xce, 0x13, 0xfb, 0xb0, 0x6f, - 0xef, 0xc5, 0x49, 0xf6, 0x57, 0xd1, 0x97, 0xf4, 0x2d, 0x6d, 0x0e, 0xda, 0xc6, 0xc1, 0x73, 0xd7, - 0x7b, 0x6a, 0x3b, 0x87, 0x7d, 0x58, 0x5e, 0xd1, 0x59, 0x46, 0xe9, 0xc4, 0x08, 0xff, 0x12, 0x96, - 0x6b, 0xe9, 0xcc, 0xfb, 0x32, 0xe9, 0xbd, 0x11, 0xd6, 0xe0, 0x22, 0x0d, 0x4a, 0x3b, 0x6d, 0xdb, - 0x7b, 0x32, 0xfd, 0x9c, 0xa5, 0x57, 0x13, 0x27, 0x43, 0x0d, 0xd7, 0x6b, 0xf6, 0xe7, 0x58, 0xd0, - 0x43, 0xf0, 0x23, 0x64, 0x42, 0x18, 0x9f, 0xc3, 0x85, 0x5a, 0x2a, 0xeb, 0x7e, 0x2c, 0xfa, 0x29, - 0xd5, 0x2b, 0x54, 0x14, 0xa7, 0x6c, 0x77, 0x4f, 0x9e, 0x1b, 0x74, 0xf5, 0x25, 0x3b, 0x66, 0xd5, - 0xc3, 0x4f, 0xb0, 0x47, 0x2f, 0x7a, 0xf4, 0xbb, 0xe2, 0xa0, 0xa3, 0x8b, 0x2f, 0xdf, 0x80, 0xb9, - 0x5a, 0x8c, 0x55, 0x1a, 0x49, 0xbf, 0x63, 0xcb, 0x79, 0xfa, 0xa5, 0x03, 0xb6, 0xab, 0x4f, 0x3c, - 0xde, 0xe4, 0x03, 0x1c, 0xec, 0x6d, 0xf4, 0x91, 0x92, 0xb8, 0xd9, 0x24, 0x10, 0xf7, 0xef, 0x12, - 0xca, 0x9a, 0x42, 0x19, 0xc7, 0x48, 0x9d, 0xbc, 0x3f, 0x10, 0xa7, 0x65, 0x7d, 0xab, 0x4d, 0xe3, - 0x70, 0x8f, 0x2e, 0xd8, 0xfc, 0xb2, 0xc3, 0x52, 0xa8, 0xac, 0xb0, 0x92, 0xd0, 0xd7, 0xaa, 0xdc, - 0x7b, 0xf0, 0x51, 0x91, 0x19, 0xd9, 0x6c, 0x78, 0xf0, 0xb2, 0xcb, 0xb1, 0x4b, 0x30, 0x3d, 0x59, - 0x30, 0x3f, 0xf9, 0xa6, 0xdb, 0x78, 0xaa, 0xfa, 0xc9, 0xc9, 0xef, 0xa8, 0x7f, 0x97, 0x94, 0xed, - 0xaf, 0xf2, 0x6d, 0x89, 0xfc, 0xd0, 0x42, 0x2c, 0x69, 0x41, 0xb8, 0x2d, 0x45, 0xcb, 0x65, 0x84, - 0x30, 0x75, 0xb2, 0x33, 0x6a, 0xd5, 0xc9, 0xae, 0x91, 0xe7, 0xe3, 0x00, 0x4e, 0x7f, 0x4f, 0x38, - 0x97, 0x69, 0x83, 0xf5, 0x96, 0xa5, 0x8a, 0x56, 0xfa, 0x95, 0x29, 0x91, 0xee, 0x57, 0x56, 0x3f, - 0xb4, 0xc7, 0x4d, 0x32, 0x13, 0x77, 0x5a, 0xf4, 0xfe, 0x45, 0xdb, 0x65, 0x34, 0xa1, 0x9b, 0x20, - 0x0e, 0xea, 0x1f, 0x69, 0x39, 0xcf, 0x03, 0xea, 0xb4, 0x8e, 0x93, 0xf9, 0x57, 0xe3, 0xb0, 0xb0, - 0x2b, 0xd4, 0x38, 0xbf, 0x3b, 0x19, 0xb4, 0x0d, 0xe7, 0x1f, 0xe0, 0x80, 0xaf, 0x91, 0x26, 0xf6, - 0x03, 0xcf, 0x6e, 0x04, 0x3d, 0x8f, 0xb1, 0x85, 0x99, 0x97, 0x40, 0xb3, 0xff, 0x36, 0xe1, 0x57, - 0x4b, 0xe6, 0xd7, 0x93, 0xae, 0x47, 0x70, 0x3e, 0x3f, 0xcf, 0x3a, 0x4d, 0x13, 0xd3, 0xa7, 0xc8, - 0x38, 0x0b, 0x6e, 0x4b, 0x27, 0xcd, 0x85, 0x8f, 0x72, 0x71, 0xc3, 0xf5, 0x43, 0xc8, 0xf2, 0x08, - 0xb6, 0x70, 0xb8, 0x8a, 0x82, 0xe8, 0x70, 0x0d, 0xcb, 0xf9, 0x70, 0xbb, 0x05, 0x63, 0xac, 0xc6, - 0xd4, 0xdd, 0x7c, 0x4a, 0xad, 0x10, 0xdd, 0x85, 0x09, 0x19, 0xda, 0x86, 0x34, 0x50, 0xea, 0x47, - 0xdd, 0x85, 0x09, 0x66, 0x81, 0x0e, 0x4e, 0xf2, 0x21, 0x4c, 0xc8, 0x58, 0xb8, 0x53, 0xab, 0x19, - 0x9f, 0xc0, 0xb4, 0x1a, 0x15, 0x77, 0xfa, 0x5e, 0xf8, 0x88, 0x46, 0x2a, 0x88, 0x43, 0xbc, 0xfe, - 0xfa, 0xa0, 0xc0, 0xe4, 0xfd, 0xc1, 0x63, 0x14, 0x42, 0x7a, 0x35, 0x46, 0x41, 0x96, 0x26, 0xc5, - 0x28, 0x28, 0x40, 0x99, 0xa3, 0x6f, 0x52, 0x69, 0x4a, 0xaa, 0x28, 0xe6, 0x62, 0x2d, 0x41, 0x1f, - 0x8a, 0xcb, 0x9c, 0x92, 0x38, 0x8e, 0xd4, 0x43, 0xfe, 0x33, 0xac, 0xcb, 0x5e, 0x86, 0x58, 0xee, - 0x14, 0x7d, 0x9b, 0x3d, 0x48, 0x44, 0x45, 0xff, 0x6e, 0x48, 0xe3, 0xb2, 0x43, 0xd5, 0xcd, 0x78, - 0x62, 0x86, 0x54, 0x46, 0x97, 0xd3, 0x73, 0x31, 0xd0, 0x8e, 0xc5, 0xec, 0xc5, 0xbf, 0x04, 0x8e, - 0x6a, 0x48, 0x5e, 0x6a, 0x9e, 0x09, 0xed, 0x56, 0x42, 0x8f, 0x7c, 0x11, 0x0f, 0xa9, 0x7d, 0x1f, - 0x43, 0x48, 0x95, 0x62, 0x8f, 0x14, 0x12, 0xa1, 0x43, 0x23, 0xce, 0xae, 0x07, 0x59, 0x2f, 0xff, - 0x08, 0x1b, 0x17, 0x67, 0xc3, 0x6e, 0x43, 0xc4, 0x43, 0x0f, 0xfe, 0xb1, 0xe9, 0x2d, 0x5b, 0x49, - 0x08, 0x15, 0xe9, 0xdb, 0xe5, 0x69, 0xec, 0x7e, 0x85, 0x6a, 0xd3, 0x89, 0x6f, 0xe2, 0xa5, 0x33, - 0xbb, 0xa9, 0x44, 0x2e, 0x25, 0x52, 0xca, 0x2e, 0x7e, 0x4a, 0x2f, 0xe3, 0x26, 0x3f, 0xb9, 0x77, - 0xa3, 0x0f, 0x17, 0x21, 0x89, 0xd7, 0xfb, 0xe2, 0xc9, 0xc0, 0x83, 0x15, 0xa6, 0x51, 0x24, 0xd7, - 0xd7, 0xe7, 0x09, 0xc1, 0x84, 0x58, 0x10, 0x19, 0x6c, 0x9e, 0xcc, 0x50, 0x0f, 0x36, 0xef, 0xf9, - 0x0d, 0x69, 0xe2, 0xff, 0x14, 0x0a, 0x61, 0x48, 0xd5, 0xe9, 0x3a, 0x21, 0x3d, 0xc6, 0x19, 0xc5, - 0x24, 0xe5, 0xa3, 0x5e, 0x2f, 0xda, 0x2c, 0x5f, 0x4d, 0x93, 0xb0, 0xaf, 0x06, 0x1f, 0xd3, 0xe0, - 0xb2, 0x08, 0x5b, 0xd5, 0xf6, 0x8f, 0x91, 0xc6, 0x6d, 0xff, 0x34, 0xee, 0x0f, 0x44, 0x74, 0x6c, - 0xe4, 0x69, 0xcb, 0xb4, 0x47, 0x32, 0x7b, 0x1c, 0x10, 0xf0, 0xbb, 0xcf, 0x67, 0xc2, 0x28, 0x3e, - 0x96, 0x4e, 0xcf, 0x48, 0xc6, 0x53, 0x45, 0x18, 0x19, 0x3d, 0x06, 0x4f, 0xff, 0x93, 0xfc, 0x7c, - 0xca, 0xa8, 0x39, 0xfd, 0x70, 0xb1, 0xc2, 0xfb, 0xbe, 0x3a, 0xab, 0xb2, 0x9a, 0x63, 0x21, 0x0e, - 0x8a, 0x1e, 0xa0, 0x25, 0x61, 0xc8, 0x80, 0xc8, 0xbc, 0xa8, 0x82, 0x94, 0x13, 0xc3, 0xd0, 0xf5, - 0xec, 0xe0, 0x45, 0xd9, 0xdc, 0x0c, 0x9d, 0x3c, 0x2a, 0x40, 0xf0, 0x06, 0x01, 0x34, 0x37, 0xd1, - 0x17, 0x74, 0xa1, 0xe2, 0xec, 0x4b, 0xae, 0x1b, 0xf8, 0x81, 0x67, 0x75, 0x6a, 0xf4, 0xf5, 0xe2, - 0xd4, 0x8f, 0x0e, 0x2f, 0x9b, 0x24, 0x91, 0x29, 0xb1, 0xef, 0x3c, 0x13, 0x76, 0x52, 0x26, 0x40, - 0x79, 0x6d, 0x31, 0x09, 0xd8, 0xc3, 0x8e, 0xac, 0x89, 0xdc, 0xd7, 0x67, 0xc9, 0xb4, 0x0e, 0x4b, - 0x29, 0xf9, 0x13, 0x65, 0x30, 0x44, 0xef, 0xfc, 0x8a, 0xcb, 0xbd, 0x2b, 0x46, 0x5f, 0xc2, 0x62, - 0x62, 0x82, 0x45, 0x79, 0x72, 0xd1, 0x2b, 0xfd, 0x62, 0x3f, 0xe6, 0x4f, 0x21, 0xcf, 0x2e, 0xb2, - 0xd1, 0x0b, 0x16, 0x5a, 0xae, 0xbd, 0xf0, 0x1a, 0x65, 0x0a, 0x42, 0x74, 0x37, 0x48, 0xc7, 0x93, - 0x49, 0x48, 0x16, 0x68, 0x2e, 0x2f, 0xf1, 0xdc, 0x32, 0x7f, 0x74, 0x5f, 0x4e, 0xbc, 0x24, 0x60, - 0xaf, 0xbb, 0x9a, 0x55, 0x58, 0xdc, 0xc7, 0x9e, 0xfd, 0xe4, 0x45, 0x94, 0xa1, 0x90, 0x4c, 0x22, - 0xb4, 0x17, 0xc7, 0xcf, 0x60, 0xa9, 0xec, 0xb6, 0x3b, 0xfc, 0xf6, 0xb5, 0xc6, 0x53, 0x46, 0xb6, - 0x24, 0xc3, 0xfb, 0xc7, 0x1e, 0x2e, 0xcb, 0xeb, 0xe1, 0x2a, 0x5d, 0x99, 0xa6, 0x25, 0xb8, 0xa9, - 0x47, 0xe7, 0x24, 0xa0, 0x84, 0xb7, 0xc6, 0x84, 0x61, 0xac, 0xd2, 0xef, 0xd2, 0x41, 0x18, 0xa1, - 0x63, 0x9e, 0x52, 0x65, 0x10, 0x26, 0xc1, 0x7b, 0xdf, 0xb1, 0x4d, 0xe0, 0xca, 0x2a, 0x4c, 0xe7, - 0x3a, 0x40, 0x6b, 0xb7, 0xc5, 0xde, 0xa2, 0x3f, 0x8f, 0x1f, 0xb9, 0x79, 0x91, 0xf8, 0x76, 0x7e, - 0x62, 0x3b, 0x95, 0x6c, 0x3b, 0xad, 0x56, 0x0f, 0x05, 0x2e, 0xe1, 0x21, 0x6c, 0x62, 0xb1, 0xa9, - 0xb4, 0xbd, 0x56, 0xeb, 0x18, 0x31, 0x3f, 0xdf, 0x98, 0xd1, 0xdf, 0xe2, 0xd6, 0x6e, 0x30, 0xc6, - 0xde, 0xfd, 0xd6, 0x6e, 0x30, 0x26, 0x3c, 0xe0, 0xfd, 0x01, 0x4c, 0xd5, 0xd4, 0x6f, 0x49, 0x68, - 0x73, 0xea, 0x18, 0x93, 0xb7, 0x1f, 0xfb, 0x8b, 0xa2, 0x47, 0x28, 0xb8, 0xdc, 0xc7, 0x06, 0x12, - 0x4a, 0x6a, 0x60, 0x9b, 0xf6, 0x8e, 0x98, 0x66, 0x87, 0x46, 0x9f, 0x52, 0xd4, 0xec, 0xd0, 0xf8, - 0xd3, 0x63, 0xfc, 0x70, 0x3c, 0xfa, 0x52, 0xa6, 0x76, 0x38, 0x9e, 0xf2, 0x24, 0xad, 0x76, 0x38, - 0x9e, 0xfa, 0xd4, 0x26, 0x8b, 0xc2, 0x0b, 0x5f, 0x4e, 0x53, 0xa3, 0xf0, 0x62, 0xef, 0xb1, 0xa9, - 0x51, 0x78, 0x09, 0x8f, 0xad, 0xd5, 0x20, 0x17, 0x7d, 0x0a, 0x4e, 0xfa, 0x0c, 0x53, 0x5e, 0xba, - 0x93, 0xf1, 0x76, 0xa9, 0x6f, 0xc8, 0x55, 0x68, 0x03, 0xc3, 0xa7, 0x5e, 0x7a, 0xb8, 0x9f, 0x64, - 0xdb, 0x12, 0x5e, 0x94, 0x79, 0xa4, 0x26, 0x96, 0x62, 0x0f, 0xc4, 0xf4, 0xf0, 0xce, 0x47, 0x13, - 0x4a, 0x45, 0x5e, 0x94, 0xb9, 0x0f, 0x39, 0x96, 0x0f, 0x3c, 0xcc, 0x5f, 0x1d, 0x86, 0x13, 0xc7, - 0xd3, 0x94, 0xf7, 0x18, 0x29, 0xb9, 0x68, 0xf6, 0x5e, 0x29, 0xb0, 0x94, 0xb4, 0xbe, 0x3d, 0xc6, - 0x3f, 0x84, 0x39, 0x7a, 0xa5, 0x2b, 0x32, 0x96, 0xb6, 0x77, 0xf9, 0x42, 0x02, 0x44, 0xaa, 0xbd, - 0x53, 0x6a, 0x46, 0x5f, 0xf9, 0x49, 0x09, 0x69, 0x7e, 0x97, 0x57, 0x12, 0x61, 0x9c, 0x51, 0xc0, - 0x72, 0x4c, 0x26, 0xbf, 0x04, 0x1d, 0xde, 0x8a, 0xed, 0x81, 0x23, 0xaa, 0x79, 0x73, 0x10, 0x54, - 0x5e, 0x2b, 0x96, 0x0f, 0xdd, 0x24, 0xbc, 0x0b, 0xfe, 0x7a, 0xc2, 0xa5, 0x32, 0x0d, 0x23, 0x9a, - 0x0a, 0x23, 0xed, 0x91, 0x72, 0x74, 0x20, 0x1e, 0x57, 0x48, 0xa9, 0xa9, 0x1f, 0x83, 0xd4, 0x1e, - 0x3c, 0x10, 0xcf, 0x29, 0x9c, 0x35, 0xe3, 0xc7, 0x70, 0x31, 0x72, 0x53, 0x4d, 0x67, 0xfc, 0x66, - 0xf2, 0x75, 0xb6, 0x44, 0xf1, 0xa4, 0xdb, 0x15, 0x57, 0xe2, 0x37, 0xda, 0x22, 0xfd, 0x7e, 0xda, - 0x85, 0x94, 0xef, 0x2e, 0xf2, 0x85, 0x79, 0x7d, 0x77, 0x09, 0x8b, 0x93, 0x76, 0x17, 0x15, 0x2a, - 0x4f, 0x08, 0xa6, 0x78, 0xc2, 0x06, 0xf6, 0x5e, 0xfd, 0xb2, 0x9e, 0xc5, 0x81, 0x16, 0x26, 0xed, - 0xb4, 0xfc, 0x19, 0x7c, 0xf4, 0x11, 0xcc, 0x86, 0x79, 0x1c, 0x18, 0x8b, 0x04, 0xb4, 0x1e, 0xde, - 0xcd, 0xd9, 0x30, 0x99, 0xc3, 0xe9, 0xc9, 0xd7, 0xc5, 0xfe, 0x16, 0x92, 0x5f, 0x8a, 0xdd, 0xeb, - 0xd3, 0xbe, 0x61, 0x90, 0x6d, 0x4e, 0x91, 0xed, 0x69, 0x7b, 0xa7, 0x41, 0xa7, 0x5b, 0x72, 0xaa, - 0x6a, 0x75, 0xba, 0xf5, 0x4c, 0xa7, 0x2d, 0x55, 0xf4, 0x14, 0x3e, 0x5b, 0x70, 0x8d, 0xa6, 0xe5, - 0xaa, 0xb2, 0x84, 0xc6, 0xc9, 0x58, 0xe9, 0x6d, 0x8f, 0x26, 0xf3, 0x6a, 0xc1, 0xd5, 0xbe, 0xb9, - 0xba, 0xd1, 0x6d, 0x2d, 0x7c, 0xab, 0x7f, 0x56, 0xef, 0x1e, 0xd6, 0xd1, 0x42, 0x52, 0xca, 0x6b, - 0xb9, 0x79, 0xf7, 0xc8, 0xbe, 0x2d, 0x37, 0xef, 0x9e, 0x39, 0xb3, 0x3f, 0xa3, 0xd9, 0x7f, 0xf8, - 0x1e, 0x45, 0x53, 0xed, 0x61, 0xc7, 0x72, 0x1a, 0xb8, 0xcf, 0x41, 0xe1, 0x55, 0xfd, 0x18, 0x3d, - 0x46, 0x48, 0xed, 0xae, 0xcb, 0xdc, 0x5a, 0x4c, 0x63, 0xde, 0x9f, 0x49, 0x8f, 0xdb, 0x14, 0x97, - 0xb5, 0x24, 0x89, 0x83, 0xb7, 0x3c, 0xa5, 0xbc, 0xb4, 0xf6, 0xf3, 0xff, 0x78, 0x39, 0xf3, 0xf3, - 0x5f, 0x5c, 0xce, 0xfc, 0x9b, 0x5f, 0x5c, 0xce, 0xfc, 0x87, 0x5f, 0x5c, 0xce, 0x7c, 0xb1, 0x3a, - 0xd8, 0x33, 0x14, 0xec, 0x01, 0xbf, 0xdb, 0x8c, 0xdd, 0x18, 0xfd, 0xef, 0xde, 0xff, 0x08, 0x00, - 0x00, 0xff, 0xff, 0x94, 0x58, 0xf0, 0xe2, 0xe6, 0xf8, 0x00, 0x00, + // 15976 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0xbd, 0x59, 0x8c, 0x5c, 0x59, + 0x76, 0x18, 0xc8, 0xc8, 0x3d, 0x4f, 0xe4, 0x12, 0x79, 0x33, 0x93, 0x19, 0xcc, 0x24, 0x19, 0xe4, + 0x63, 0x91, 0xc5, 0xaa, 0xae, 0xe6, 0x92, 0xac, 0xaa, 0xae, 0xa5, 0xab, 0xaa, 0x23, 0x22, 0x83, + 0xcc, 0x24, 0x73, 0x89, 0x7a, 0x91, 0x4b, 0x6d, 0xea, 0xe8, 0xc7, 0x88, 0xcb, 0xcc, 0x27, 0x46, + 0xbc, 0x17, 0xfd, 0xde, 0x0b, 0xb2, 0xd8, 0x52, 0x6b, 0x46, 0xea, 0x19, 0x48, 0x3f, 0xa3, 0xd1, + 0x00, 0x92, 0xa0, 0xc1, 0x0c, 0xa0, 0x19, 0xc0, 0x86, 0x01, 0x03, 0x06, 0xfc, 0x63, 0xe8, 0xcb, + 0x36, 0x6c, 0xc0, 0x70, 0x5b, 0xb0, 0x21, 0x03, 0x96, 0x7e, 0xfc, 0x91, 0xb2, 0x1b, 0xf0, 0x4f, + 0xc2, 0x3f, 0x86, 0x17, 0xc0, 0x2d, 0x08, 0x30, 0xee, 0xfa, 0xee, 0x7d, 0x4b, 0x44, 0x24, 0x99, + 0x55, 0xf2, 0x0f, 0x99, 0x71, 0xcf, 0x72, 0xef, 0x3b, 0x77, 0x3b, 0xe7, 0xdc, 0x73, 0xcf, 0x85, + 0x5b, 0x01, 0x6e, 0xe1, 0x8e, 0xeb, 0x05, 0xb7, 0x5b, 0xf8, 0xd0, 0x6a, 0xbc, 0xb8, 0xdd, 0x68, + 0xd9, 0xd8, 0x09, 0x6e, 0x77, 0x3c, 0x37, 0x70, 0x6f, 0x5b, 0xdd, 0xe0, 0xc8, 0xc7, 0xde, 0x33, + 0xbb, 0x81, 0x6f, 0xd1, 0x12, 0x34, 0x4a, 0xff, 0x5b, 0x5e, 0x38, 0x74, 0x0f, 0x5d, 0x86, 0x43, + 0xfe, 0x62, 0xc0, 0xe5, 0x95, 0x43, 0xd7, 0x3d, 0x6c, 0x61, 0x46, 0xfc, 0xb8, 0xfb, 0xe4, 0x36, + 0x6e, 0x77, 0x82, 0x17, 0x1c, 0x58, 0x88, 0x02, 0x03, 0xbb, 0x8d, 0xfd, 0xc0, 0x6a, 0x77, 0x38, + 0xc2, 0x1b, 0xb2, 0x29, 0x56, 0x10, 0x10, 0x48, 0x60, 0xbb, 0xce, 0xed, 0x67, 0x77, 0xd5, 0x9f, + 0x1c, 0xf5, 0x66, 0xcf, 0x56, 0x37, 0xb0, 0x17, 0xf8, 0x03, 0x61, 0xe2, 0x67, 0xd8, 0x09, 0x38, + 0xe6, 0x5b, 0x3d, 0x31, 0x6d, 0x87, 0xa0, 0xba, 0x9e, 0xf8, 0x9a, 0xb7, 0x7b, 0x62, 0x7b, 0xf8, + 0xc7, 0x5d, 0xd2, 0xe4, 0xc7, 0x2d, 0x5c, 0xf7, 0xdc, 0x16, 0xf6, 0x63, 0x9f, 0xc8, 0xa9, 0x82, + 0x17, 0x1d, 0xec, 0xb3, 0x66, 0x88, 0xff, 0x38, 0xea, 0xd5, 0x64, 0x54, 0xfa, 0x2f, 0x47, 0xf9, + 0x6e, 0x32, 0xca, 0x73, 0xfc, 0x98, 0xf4, 0x9b, 0x23, 0xff, 0xe8, 0x83, 0xee, 0x59, 0x9d, 0x0e, + 0xf6, 0xc2, 0x3f, 0x38, 0xfa, 0x05, 0x89, 0xde, 0x7e, 0x62, 0x91, 0x6e, 0x68, 0x3f, 0xb1, 0x62, + 0x9f, 0xd1, 0xf5, 0xad, 0x43, 0xcc, 0x9b, 0xff, 0xec, 0xae, 0xfa, 0x93, 0xa1, 0x1a, 0x7f, 0x9c, + 0x81, 0xd1, 0x03, 0x2b, 0x68, 0x1c, 0xa1, 0x4f, 0x60, 0xf4, 0x91, 0xed, 0x34, 0xfd, 0x7c, 0xe6, + 0xca, 0xf0, 0xcd, 0xec, 0x6a, 0xee, 0x16, 0xfb, 0x14, 0x0a, 0x24, 0x80, 0xd2, 0xd2, 0xcf, 0x8f, + 0x0b, 0xe7, 0x4e, 0x8e, 0x0b, 0xb3, 0x4f, 0x09, 0xda, 0x5b, 0x6e, 0xdb, 0x0e, 0xe8, 0xf8, 0x31, + 0x19, 0x1d, 0xda, 0x83, 0xf9, 0x62, 0xab, 0xe5, 0x3e, 0xaf, 0x5a, 0x5e, 0x60, 0x5b, 0xad, 0x5a, + 0xb7, 0xd1, 0xc0, 0xbe, 0x9f, 0x1f, 0xba, 0x92, 0xb9, 0x39, 0x51, 0xba, 0x76, 0x72, 0x5c, 0x28, + 0x58, 0x04, 0x5c, 0xef, 0x30, 0x78, 0xdd, 0x67, 0x08, 0x0a, 0xa3, 0x24, 0x7a, 0xe3, 0x4f, 0xc7, + 0x20, 0xb7, 0xee, 0xfa, 0x41, 0x99, 0x8c, 0x1a, 0x93, 0x75, 0x1c, 0xba, 0x06, 0x63, 0xa4, 0x6c, + 0x63, 0x2d, 0x9f, 0xb9, 0x92, 0xb9, 0x39, 0x59, 0xca, 0x9e, 0x1c, 0x17, 0xc6, 0x8f, 0x5c, 0x3f, + 0xa8, 0xdb, 0x4d, 0x93, 0x83, 0xd0, 0x1b, 0x30, 0xb1, 0xed, 0x36, 0xf1, 0xb6, 0xd5, 0xc6, 0xb4, + 0x15, 0x93, 0xa5, 0xe9, 0x93, 0xe3, 0xc2, 0xa4, 0xe3, 0x36, 0x71, 0xdd, 0xb1, 0xda, 0xd8, 0x94, + 0x60, 0xb4, 0x0f, 0x23, 0xa6, 0xdb, 0xc2, 0xf9, 0x61, 0x8a, 0x56, 0x3a, 0x39, 0x2e, 0x8c, 0x90, + 0x71, 0xf1, 0xcb, 0xe3, 0xc2, 0xbb, 0x87, 0x76, 0x70, 0xd4, 0x7d, 0x7c, 0xab, 0xe1, 0xb6, 0x6f, + 0x1f, 0x7a, 0xd6, 0x33, 0x9b, 0x0d, 0x74, 0xab, 0x75, 0x3b, 0x9c, 0x0e, 0x1d, 0x9b, 0xf7, 0x7b, + 0xed, 0x85, 0x1f, 0xe0, 0x36, 0xe1, 0x64, 0x52, 0x7e, 0xe8, 0x00, 0x16, 0x8a, 0xcd, 0xa6, 0xcd, + 0x28, 0xaa, 0x9e, 0xed, 0x34, 0xec, 0x8e, 0xd5, 0xf2, 0xf3, 0x23, 0x57, 0x86, 0x6f, 0x4e, 0x72, + 0xa1, 0x48, 0x78, 0xbd, 0x23, 0x11, 0x14, 0xa1, 0x24, 0x32, 0x40, 0xf7, 0x60, 0x62, 0x6d, 0xbb, + 0x46, 0xda, 0xee, 0xe7, 0x47, 0x29, 0xb3, 0xa5, 0x93, 0xe3, 0xc2, 0x7c, 0xd3, 0xf1, 0xe9, 0xa7, + 0xa9, 0x0c, 0x24, 0x22, 0x7a, 0x17, 0xa6, 0xaa, 0xdd, 0xc7, 0x2d, 0xbb, 0xb1, 0xbb, 0x59, 0x7b, + 0x84, 0x5f, 0xe4, 0xc7, 0xae, 0x64, 0x6e, 0x4e, 0x95, 0xd0, 0xc9, 0x71, 0x61, 0xa6, 0x43, 0xcb, + 0xeb, 0x41, 0xcb, 0xaf, 0x3f, 0xc5, 0x2f, 0x4c, 0x0d, 0x2f, 0xa4, 0xab, 0xd5, 0xd6, 0x09, 0xdd, + 0x78, 0x8c, 0xce, 0xf7, 0x8f, 0x54, 0x3a, 0x86, 0x87, 0x6e, 0x03, 0x98, 0xb8, 0xed, 0x06, 0xb8, + 0xd8, 0x6c, 0x7a, 0xf9, 0x09, 0x2a, 0xdb, 0xd9, 0x93, 0xe3, 0x42, 0xd6, 0xa3, 0xa5, 0x75, 0xab, + 0xd9, 0xf4, 0x4c, 0x05, 0x05, 0x95, 0x61, 0xc2, 0x74, 0x99, 0x80, 0xf3, 0x93, 0x57, 0x32, 0x37, + 0xb3, 0xab, 0xb3, 0x7c, 0x18, 0x8a, 0xe2, 0xd2, 0xf9, 0x93, 0xe3, 0x02, 0xf2, 0xf8, 0x2f, 0xf5, + 0x2b, 0x05, 0x06, 0x2a, 0xc0, 0xf8, 0xb6, 0x5b, 0xb6, 0x1a, 0x47, 0x38, 0x0f, 0x74, 0xec, 0x8d, + 0x9e, 0x1c, 0x17, 0x32, 0xdf, 0x35, 0x45, 0x29, 0x7a, 0x06, 0xd9, 0xb0, 0xa3, 0xfc, 0x7c, 0x96, + 0x8a, 0x6f, 0xf7, 0xe4, 0xb8, 0x70, 0xde, 0xa7, 0xc5, 0x6c, 0x49, 0x08, 0x79, 0xbf, 0xc2, 0x28, + 0x50, 0x2b, 0x42, 0x5f, 0xc1, 0x62, 0xf8, 0xb3, 0xe8, 0xfb, 0xd8, 0x23, 0x3c, 0x36, 0xd6, 0xf2, + 0xd3, 0x54, 0x32, 0x37, 0x4e, 0x8e, 0x0b, 0x86, 0xd2, 0x82, 0xba, 0x25, 0x50, 0xea, 0x76, 0x53, + 0xf9, 0xd2, 0x64, 0x26, 0x0f, 0x47, 0x26, 0xa6, 0x72, 0xd3, 0xe6, 0xa5, 0x3d, 0x87, 0xad, 0x6b, + 0x89, 0x48, 0xc6, 0x5f, 0x67, 0x00, 0xed, 0x74, 0xb0, 0x53, 0xab, 0xad, 0x93, 0xf9, 0x24, 0xa6, + 0xd3, 0x5b, 0x30, 0xc9, 0x3a, 0x8e, 0xf4, 0xee, 0x10, 0xed, 0xdd, 0x99, 0x93, 0xe3, 0x02, 0xf0, + 0xde, 0x25, 0x3d, 0x1b, 0x22, 0xa0, 0xeb, 0x30, 0xbc, 0xbb, 0xbb, 0x49, 0xe7, 0xca, 0x70, 0x69, + 0xfe, 0xe4, 0xb8, 0x30, 0x1c, 0x04, 0xad, 0x5f, 0x1e, 0x17, 0x26, 0xd6, 0xba, 0x1e, 0x15, 0x8b, + 0x49, 0xe0, 0xe8, 0x3a, 0x8c, 0x97, 0x5b, 0x5d, 0x3f, 0xc0, 0x5e, 0x7e, 0x24, 0x9c, 0xa4, 0x0d, + 0x56, 0x64, 0x0a, 0x18, 0xfa, 0x0e, 0x8c, 0xec, 0xf9, 0xd8, 0xcb, 0x8f, 0xd2, 0xfe, 0x9e, 0xe6, + 0xfd, 0x4d, 0x8a, 0xf6, 0x57, 0x4b, 0x13, 0x64, 0x26, 0x76, 0x7d, 0xec, 0x99, 0x14, 0x09, 0xdd, + 0x82, 0x51, 0xd6, 0x69, 0x63, 0x74, 0x91, 0x9a, 0x96, 0xa3, 0xa3, 0x85, 0xf7, 0xdf, 0x2d, 0x4d, + 0x9e, 0x1c, 0x17, 0x46, 0x69, 0xe7, 0x99, 0x0c, 0xed, 0xe1, 0xc8, 0x44, 0x26, 0x37, 0x64, 0x4e, + 0x10, 0x5a, 0x32, 0x2d, 0x8c, 0xef, 0x40, 0x56, 0xf9, 0x7c, 0x74, 0x11, 0x46, 0xc8, 0xff, 0x74, + 0x11, 0x99, 0x62, 0x95, 0x91, 0xcd, 0xc9, 0xa4, 0xa5, 0xc6, 0x9f, 0xcd, 0x43, 0x8e, 0x50, 0x6a, + 0x2b, 0xcf, 0x4d, 0x90, 0xdc, 0xf8, 0xa2, 0x32, 0x75, 0x72, 0x5c, 0x98, 0xe8, 0xf2, 0xb2, 0xb0, + 0x2e, 0x54, 0x83, 0xf1, 0xca, 0xd7, 0x1d, 0xdb, 0xc3, 0x3e, 0x15, 0x55, 0x76, 0x75, 0xf9, 0x16, + 0xdb, 0x62, 0x6f, 0x89, 0x2d, 0xf6, 0xd6, 0xae, 0xd8, 0x62, 0x4b, 0x97, 0xf8, 0xe2, 0x3a, 0x87, + 0x19, 0x49, 0xd8, 0xdf, 0xbf, 0xf7, 0x97, 0x85, 0x8c, 0x29, 0x38, 0xa1, 0xb7, 0x60, 0xec, 0xbe, + 0xeb, 0xb5, 0xad, 0x80, 0xcb, 0x74, 0xe1, 0xe4, 0xb8, 0x90, 0x7b, 0x42, 0x4b, 0x94, 0x21, 0xc2, + 0x71, 0xd0, 0x7d, 0x98, 0x31, 0xdd, 0x6e, 0x80, 0x77, 0x5d, 0xd1, 0x13, 0xa3, 0x94, 0xea, 0xf2, + 0xc9, 0x71, 0x61, 0xd9, 0x23, 0x90, 0x7a, 0xe0, 0xd6, 0x79, 0x97, 0x28, 0xf4, 0x11, 0x2a, 0x54, + 0x81, 0x99, 0x22, 0x5d, 0x8d, 0xb9, 0x14, 0x98, 0xfc, 0x27, 0x4b, 0x97, 0x4e, 0x8e, 0x0b, 0x17, + 0x2c, 0x0a, 0xa9, 0xf3, 0x3d, 0x55, 0x5d, 0x79, 0x22, 0x44, 0x68, 0x1b, 0xe6, 0x1e, 0x75, 0x1f, + 0x63, 0xcf, 0xc1, 0x01, 0xf6, 0x45, 0x8b, 0xc6, 0x69, 0x8b, 0xae, 0x9c, 0x1c, 0x17, 0x2e, 0x3e, + 0x95, 0xc0, 0x84, 0x36, 0xc5, 0x49, 0x11, 0x86, 0x59, 0xde, 0xd0, 0x35, 0x2b, 0xb0, 0x1e, 0x5b, + 0x3e, 0xa6, 0x8b, 0x4c, 0x76, 0xf5, 0x3c, 0x13, 0xf1, 0xad, 0x08, 0xb4, 0x74, 0x8d, 0x4b, 0x79, + 0x45, 0x7e, 0x7b, 0x93, 0x83, 0x94, 0x8a, 0xa2, 0x3c, 0xc9, 0x5a, 0x2b, 0xf7, 0x91, 0x49, 0xda, + 0x5a, 0xba, 0xd6, 0xca, 0x7d, 0x44, 0x5d, 0x85, 0xe4, 0x8e, 0xb2, 0x09, 0xa3, 0x7b, 0x64, 0xb7, + 0xa5, 0x6b, 0xd0, 0xcc, 0xea, 0x55, 0xde, 0xa2, 0xe8, 0x78, 0xba, 0x45, 0x7e, 0x50, 0x44, 0x3a, + 0x93, 0x66, 0xe9, 0x0e, 0xad, 0xee, 0xad, 0x14, 0x86, 0x3e, 0x05, 0xe0, 0xad, 0x2a, 0x76, 0x3a, + 0xf9, 0x2c, 0xfd, 0xc8, 0x39, 0xfd, 0x23, 0x8b, 0x9d, 0x4e, 0xe9, 0x32, 0xff, 0xbe, 0xf3, 0xf2, + 0xfb, 0xac, 0x4e, 0x47, 0xe1, 0xa6, 0x30, 0x41, 0x9f, 0xc0, 0x14, 0x5d, 0xa2, 0x44, 0x8f, 0x4e, + 0xd1, 0x1e, 0x5d, 0x39, 0x39, 0x2e, 0x2c, 0xd1, 0xd5, 0x27, 0xa1, 0x3f, 0x35, 0x02, 0xf4, 0x1b, + 0xb0, 0xc8, 0xd9, 0x1d, 0xd8, 0x4e, 0xd3, 0x7d, 0xee, 0xaf, 0x61, 0xff, 0x69, 0xe0, 0x76, 0xe8, + 0x72, 0x96, 0x5d, 0xbd, 0xa8, 0x37, 0x4f, 0xc7, 0x29, 0xbd, 0xc9, 0x5b, 0x6a, 0xc8, 0x96, 0x3e, + 0x67, 0x08, 0xf5, 0x26, 0xc3, 0x50, 0x17, 0xbc, 0x44, 0x16, 0x68, 0x03, 0x66, 0xf7, 0x7c, 0xac, + 0x7d, 0xc3, 0x0c, 0x5d, 0xef, 0x0b, 0xa4, 0x87, 0xbb, 0x3e, 0x53, 0xed, 0x92, 0xbe, 0x23, 0x4a, + 0x87, 0x4c, 0x40, 0x6b, 0x9e, 0xdb, 0x89, 0x8c, 0xf1, 0x59, 0x2a, 0x11, 0xe3, 0xe4, 0xb8, 0x70, + 0xb9, 0xe9, 0xb9, 0x9d, 0x7a, 0xfa, 0x40, 0x4f, 0xa0, 0x46, 0x3f, 0x84, 0xf3, 0x65, 0xd7, 0x71, + 0x70, 0x83, 0xac, 0x88, 0x6b, 0xb6, 0x75, 0xe8, 0xb8, 0x7e, 0x60, 0x37, 0x36, 0xd6, 0xf2, 0xb9, + 0x70, 0xb9, 0x6f, 0x48, 0x8c, 0x7a, 0x53, 0xa2, 0xe8, 0xcb, 0x7d, 0x0a, 0x17, 0xf4, 0x25, 0x4c, + 0xf3, 0xba, 0xb0, 0x47, 0x87, 0xe6, 0x5c, 0xef, 0x81, 0x26, 0x91, 0xd9, 0xc6, 0xed, 0x89, 0x9f, + 0x4c, 0x15, 0xd2, 0x79, 0xa1, 0xaf, 0x20, 0xbb, 0x75, 0xbf, 0x68, 0x62, 0xbf, 0xe3, 0x3a, 0x3e, + 0xce, 0x23, 0xda, 0xa3, 0x97, 0x39, 0xeb, 0xad, 0xfb, 0xc5, 0x62, 0x37, 0x38, 0xc2, 0x4e, 0x60, + 0x37, 0xac, 0x00, 0x0b, 0xac, 0xd2, 0x32, 0x19, 0x79, 0xed, 0x27, 0x56, 0xdd, 0xe3, 0x25, 0xca, + 0x57, 0xa8, 0xec, 0xd0, 0x32, 0x4c, 0xd4, 0x6a, 0xeb, 0x9b, 0xee, 0xa1, 0xed, 0xe4, 0xe7, 0x89, + 0x30, 0x4c, 0xf9, 0x1b, 0xed, 0xc2, 0x78, 0xb5, 0xeb, 0x75, 0x5c, 0x1f, 0xe7, 0x17, 0xe9, 0x07, + 0x5d, 0xeb, 0x35, 0x73, 0x38, 0x6a, 0x69, 0x91, 0x2c, 0x9d, 0x1d, 0xf6, 0x43, 0xa9, 0x55, 0xb0, + 0x42, 0x3f, 0x80, 0xa9, 0x5a, 0x6d, 0x3d, 0xdc, 0xe3, 0xce, 0xd3, 0x05, 0xff, 0xe2, 0xc9, 0x71, + 0x21, 0x4f, 0x54, 0x97, 0x70, 0x9f, 0x53, 0x47, 0xbb, 0x4a, 0x41, 0x38, 0xec, 0x6e, 0xd6, 0x42, + 0x0e, 0x4b, 0x21, 0x07, 0xa2, 0x34, 0x25, 0x73, 0x50, 0x29, 0xd0, 0xdf, 0xcb, 0xc0, 0x15, 0x95, + 0x65, 0x31, 0x34, 0x9b, 0x6a, 0x81, 0x15, 0xe0, 0x36, 0x76, 0x82, 0xfc, 0x05, 0x2a, 0xe9, 0xef, + 0x4a, 0xb3, 0xef, 0x96, 0x6a, 0x5c, 0x3d, 0xbb, 0x7b, 0x2b, 0x89, 0xa8, 0xb4, 0x7a, 0x72, 0x5c, + 0xb8, 0xa5, 0x7f, 0x47, 0x5d, 0xa1, 0xab, 0xfb, 0x02, 0x53, 0x69, 0x5b, 0xdf, 0xa6, 0xd0, 0xf6, + 0xaa, 0x1f, 0x90, 0xd8, 0xde, 0xe5, 0x97, 0x6e, 0xaf, 0x2e, 0xb5, 0xfe, 0xed, 0xed, 0xd7, 0x14, + 0xd4, 0x80, 0x15, 0x13, 0xdb, 0xbe, 0xdf, 0x25, 0xea, 0x0f, 0x99, 0xde, 0x1b, 0x6d, 0x62, 0x2e, + 0xb9, 0x0e, 0xd3, 0x27, 0x57, 0xe8, 0xda, 0x70, 0xf5, 0xe4, 0xb8, 0x70, 0xc9, 0x93, 0x68, 0x6c, + 0x89, 0xb0, 0x55, 0x44, 0xb3, 0x17, 0x17, 0xe3, 0x33, 0x98, 0x94, 0x2b, 0x36, 0x1a, 0x87, 0xe1, + 0x62, 0xab, 0x95, 0x3b, 0x47, 0xfe, 0xa8, 0xd5, 0xd6, 0x73, 0x19, 0x34, 0x03, 0x10, 0x6e, 0x53, + 0xb9, 0x21, 0x34, 0x05, 0x13, 0x62, 0x1b, 0xc9, 0x0d, 0x53, 0xfc, 0x4e, 0x27, 0x37, 0x82, 0x10, + 0xcc, 0xe8, 0x8b, 0x59, 0x6e, 0xd4, 0xf8, 0x67, 0x19, 0x98, 0x94, 0x93, 0x10, 0xcd, 0x42, 0x76, + 0x6f, 0xbb, 0x56, 0xad, 0x94, 0x37, 0xee, 0x6f, 0x54, 0xd6, 0x72, 0xe7, 0xd0, 0x25, 0xb8, 0xb0, + 0x5b, 0x5b, 0xaf, 0xaf, 0x95, 0xea, 0x9b, 0x3b, 0xe5, 0xe2, 0x66, 0xbd, 0x6a, 0xee, 0x7c, 0xf6, + 0x79, 0x7d, 0x77, 0x6f, 0x7b, 0xbb, 0xb2, 0x99, 0xcb, 0xa0, 0x3c, 0x2c, 0x10, 0xf0, 0xa3, 0xbd, + 0x52, 0x45, 0x45, 0xc8, 0x0d, 0xa1, 0xab, 0x70, 0x29, 0x09, 0x52, 0x5f, 0xaf, 0x14, 0xd7, 0x36, + 0x2b, 0xb5, 0x5a, 0x6e, 0x18, 0x2d, 0xc1, 0x3c, 0x41, 0x29, 0x56, 0xab, 0x1a, 0xed, 0x08, 0x69, + 0x05, 0xaf, 0xb4, 0xf2, 0x59, 0xa5, 0x9c, 0x1b, 0x15, 0xcc, 0x08, 0x66, 0xf1, 0xa0, 0x56, 0x2f, + 0x9b, 0x95, 0xb5, 0xca, 0xf6, 0xee, 0x46, 0x71, 0xb3, 0x6a, 0xee, 0x94, 0x09, 0xb3, 0x31, 0xa3, + 0x05, 0x59, 0x65, 0x66, 0xa2, 0x8b, 0x90, 0x2f, 0x57, 0xcc, 0xdd, 0x7a, 0x75, 0xcf, 0xac, 0xee, + 0xd4, 0x2a, 0x75, 0xfd, 0xab, 0xa2, 0xd0, 0xcd, 0x9d, 0x07, 0x1b, 0xdb, 0x75, 0x52, 0x54, 0xcb, + 0x65, 0x48, 0x6d, 0x1a, 0xb4, 0xb6, 0xb1, 0xfd, 0x60, 0xb3, 0x52, 0xdf, 0xab, 0x55, 0x38, 0xca, + 0x10, 0x53, 0xf0, 0x1e, 0x8e, 0x4c, 0x2c, 0xe4, 0x16, 0x15, 0x15, 0xd5, 0x5c, 0x4c, 0x1c, 0x4e, + 0xc6, 0x6f, 0x0d, 0xc5, 0x34, 0x06, 0xb4, 0x0a, 0xd9, 0x1a, 0x73, 0xa1, 0xd0, 0x55, 0x94, 0xd9, + 0x93, 0xb9, 0x93, 0xe3, 0xc2, 0x14, 0xf7, 0xac, 0xb0, 0x05, 0x52, 0x45, 0x22, 0x4a, 0x60, 0x95, + 0x2c, 0x4a, 0x0d, 0xb7, 0xa5, 0x2a, 0x81, 0x1d, 0x5e, 0x66, 0x4a, 0x28, 0x5a, 0x55, 0xd4, 0x45, + 0x66, 0x5c, 0x52, 0x03, 0x46, 0xa8, 0x8b, 0xaa, 0xea, 0x20, 0x15, 0xc7, 0xd5, 0x70, 0xd0, 0x70, + 0x2d, 0x8f, 0xd2, 0x24, 0xa8, 0x2a, 0x12, 0x0f, 0xbd, 0x21, 0x14, 0x63, 0x66, 0x0c, 0x52, 0x5d, + 0x22, 0x62, 0xc6, 0x70, 0x9d, 0xd8, 0xe8, 0xa6, 0xec, 0xdb, 0xe8, 0xc3, 0xe8, 0xa8, 0xe4, 0xc2, + 0xa0, 0xcc, 0x22, 0xdb, 0xb3, 0x19, 0x41, 0x45, 0x05, 0x18, 0x65, 0x0b, 0x3a, 0x93, 0x07, 0x55, + 0xc5, 0x5b, 0xa4, 0xc0, 0x64, 0xe5, 0xc6, 0xbf, 0x1c, 0x51, 0x75, 0x18, 0xa2, 0x7a, 0x2b, 0xf2, + 0xa6, 0xaa, 0x37, 0x95, 0x33, 0x2d, 0x25, 0x96, 0x23, 0xeb, 0x4c, 0x6a, 0x39, 0x0e, 0x87, 0x96, + 0x23, 0x5f, 0x31, 0x98, 0xe5, 0x18, 0xa2, 0x90, 0x5e, 0xe4, 0x5a, 0x21, 0xe5, 0x3a, 0x12, 0xf6, + 0x22, 0xd7, 0x24, 0x79, 0x2f, 0x2a, 0x48, 0xe8, 0x03, 0x80, 0xe2, 0x41, 0x8d, 0x9a, 0x48, 0xe6, + 0x36, 0xd7, 0x8c, 0xe9, 0x1e, 0x66, 0x3d, 0xf7, 0xb9, 0x05, 0xe6, 0xa9, 0x26, 0xa6, 0x82, 0x8d, + 0x4a, 0x30, 0x5d, 0xfc, 0x49, 0xd7, 0xc3, 0x1b, 0x4d, 0xb2, 0x0d, 0x06, 0xcc, 0x96, 0x9e, 0x64, + 0xfb, 0x81, 0x45, 0x00, 0x75, 0x9b, 0x43, 0x14, 0x06, 0x3a, 0x09, 0xda, 0x81, 0xb9, 0x07, 0xe5, + 0x2a, 0x1f, 0x57, 0xc5, 0x46, 0xc3, 0xed, 0x3a, 0x01, 0x57, 0x87, 0xe9, 0x32, 0x75, 0xd8, 0xe8, + 0xd4, 0xc5, 0x18, 0xb4, 0x18, 0x58, 0xd5, 0x87, 0x63, 0xb4, 0xe8, 0x1a, 0x0c, 0xef, 0x99, 0x1b, + 0xdc, 0xd0, 0x9e, 0x3b, 0x39, 0x2e, 0x4c, 0x77, 0x3d, 0x5b, 0x21, 0x21, 0x50, 0xf4, 0x3e, 0xc0, + 0xae, 0xe5, 0x1d, 0xe2, 0xa0, 0xea, 0x7a, 0x01, 0xd5, 0x67, 0xa7, 0x4b, 0x17, 0x4e, 0x8e, 0x0b, + 0x8b, 0x01, 0x2d, 0xad, 0x93, 0x55, 0x5c, 0xfd, 0xe8, 0x10, 0x19, 0xbd, 0x80, 0x42, 0xf1, 0xa0, + 0x56, 0xf6, 0x30, 0xfd, 0x02, 0xab, 0x55, 0xf5, 0x5c, 0xa2, 0xf2, 0x84, 0x05, 0x3e, 0xd5, 0x76, + 0x27, 0x4b, 0xb7, 0x4f, 0x8e, 0x0b, 0xdf, 0x21, 0x52, 0x6c, 0x48, 0x50, 0x87, 0xe1, 0x2a, 0x25, + 0xea, 0xd0, 0xec, 0xc7, 0xf7, 0xe1, 0xc8, 0xc4, 0x50, 0x6e, 0xd8, 0x9c, 0xac, 0x61, 0xdf, 0x67, + 0x96, 0x6c, 0x0b, 0x66, 0x1e, 0xe0, 0x80, 0xcc, 0x19, 0x61, 0x99, 0xf5, 0x1e, 0x51, 0xdf, 0x87, + 0xec, 0x81, 0x1d, 0x1c, 0xd5, 0x70, 0xc3, 0xc3, 0x81, 0xf0, 0x4a, 0xd1, 0xde, 0x7e, 0x6e, 0x07, + 0x47, 0x75, 0x9f, 0x95, 0xab, 0x1a, 0x8b, 0x82, 0x6e, 0x54, 0x60, 0x96, 0xd7, 0x26, 0x0d, 0xc1, + 0x55, 0x9d, 0x61, 0x86, 0x32, 0xa4, 0x23, 0x4e, 0x65, 0xa8, 0xb3, 0xf9, 0x07, 0x43, 0xb0, 0x58, + 0x3e, 0xb2, 0x9c, 0x43, 0x5c, 0xb5, 0x7c, 0xff, 0xb9, 0xeb, 0x35, 0x95, 0xc6, 0x53, 0x2b, 0x38, + 0xd6, 0x78, 0x6a, 0xf6, 0xae, 0x42, 0x76, 0xa7, 0xd5, 0x14, 0x34, 0xdc, 0x42, 0xa7, 0x75, 0xb9, + 0xad, 0x66, 0xbd, 0x23, 0x78, 0xa9, 0x48, 0x84, 0x66, 0x1b, 0x3f, 0x97, 0x34, 0xc3, 0x21, 0x8d, + 0x83, 0x9f, 0x2b, 0x34, 0x0a, 0x12, 0xaa, 0xc0, 0x5c, 0x0d, 0x37, 0x5c, 0xa7, 0x79, 0xdf, 0x6a, + 0x04, 0xae, 0xb7, 0xeb, 0x3e, 0xc5, 0x0e, 0x9f, 0x4b, 0xd4, 0xe4, 0xf1, 0x29, 0xb0, 0xfe, 0x84, + 0x42, 0xeb, 0x01, 0x01, 0x9b, 0x71, 0x0a, 0xb4, 0x03, 0x13, 0x07, 0xdc, 0xb7, 0xc9, 0xcd, 0xfa, + 0xeb, 0xb7, 0xa4, 0xb3, 0x33, 0xec, 0x55, 0xe9, 0x98, 0x90, 0x1a, 0x24, 0x5d, 0x45, 0x05, 0xa6, + 0x29, 0x99, 0x18, 0x3f, 0xcb, 0xc0, 0xe2, 0xa6, 0xed, 0x07, 0x35, 0xdc, 0xb6, 0x3a, 0x47, 0xae, + 0x87, 0x65, 0x2f, 0xac, 0xc0, 0x64, 0xc7, 0x3a, 0xc4, 0x75, 0xdf, 0xfe, 0x09, 0xeb, 0xf9, 0x51, + 0x73, 0x82, 0x14, 0xd4, 0xec, 0x9f, 0x60, 0x74, 0x09, 0x80, 0x02, 0x69, 0x43, 0xd9, 0xc2, 0x64, + 0x52, 0x74, 0xd6, 0xcc, 0x5b, 0x30, 0xf6, 0xc4, 0x6e, 0x11, 0x1b, 0x74, 0x98, 0x5b, 0x8d, 0xdc, + 0x7f, 0x23, 0x6a, 0xb9, 0x4f, 0xa1, 0x26, 0xc7, 0x32, 0x02, 0x38, 0x1f, 0x6d, 0x04, 0x57, 0x68, + 0x57, 0x01, 0x7c, 0x59, 0xca, 0x1d, 0xa8, 0x28, 0xca, 0x6d, 0xff, 0x9e, 0xa9, 0x60, 0xa1, 0x1b, + 0x30, 0xeb, 0xe0, 0xaf, 0x83, 0x7a, 0xac, 0x85, 0xd3, 0xa4, 0xb8, 0x2a, 0x5a, 0x69, 0xec, 0xc1, + 0x74, 0xb5, 0xd5, 0x3d, 0xb4, 0x1d, 0xb2, 0xd6, 0xd7, 0xf0, 0x8f, 0xd1, 0x1a, 0x40, 0x58, 0xc0, + 0x2b, 0x9b, 0xe7, 0x95, 0x85, 0x80, 0xfd, 0x7b, 0x7c, 0xc1, 0xa4, 0x25, 0xd4, 0xce, 0x35, 0x15, + 0x3a, 0xe3, 0xbf, 0x0f, 0x03, 0xe2, 0x42, 0xa4, 0x2a, 0x54, 0x0d, 0x07, 0x44, 0xef, 0x38, 0x0f, + 0x43, 0xd2, 0xa9, 0x3a, 0x76, 0x72, 0x5c, 0x18, 0xb2, 0x9b, 0xe6, 0xd0, 0xc6, 0x1a, 0x7a, 0x1b, + 0x46, 0x29, 0x1a, 0x6d, 0xe3, 0x8c, 0xac, 0x4f, 0xe5, 0xc0, 0xd6, 0x7c, 0xba, 0xd9, 0x9a, 0x0c, + 0x19, 0xbd, 0x03, 0x93, 0x6b, 0xb8, 0x85, 0x0f, 0xad, 0xc0, 0x15, 0xab, 0x38, 0x73, 0x53, 0x8a, + 0x42, 0x65, 0xbe, 0x85, 0x98, 0xe8, 0x2d, 0x18, 0x33, 0xb1, 0xe5, 0xbb, 0x8e, 0xea, 0xe4, 0xf0, + 0x68, 0x89, 0xea, 0xe4, 0x60, 0x38, 0xe8, 0x0f, 0x32, 0x90, 0x2d, 0x3a, 0x0e, 0x77, 0xff, 0xf9, + 0x7c, 0xc4, 0x2d, 0xde, 0x92, 0xfe, 0xf2, 0x4d, 0xeb, 0x31, 0x6e, 0xed, 0x5b, 0xad, 0x2e, 0xf6, + 0x4b, 0x5f, 0x11, 0xbb, 0xf3, 0xdf, 0x1e, 0x17, 0x3e, 0x3c, 0x85, 0x43, 0x2f, 0xf4, 0xbc, 0xef, + 0x7a, 0x96, 0x1d, 0xf8, 0x64, 0xb1, 0xb4, 0xc2, 0x0a, 0xd5, 0x35, 0x43, 0x69, 0x47, 0xb8, 0x25, + 0x8f, 0xf5, 0xdb, 0x92, 0x51, 0x1b, 0x66, 0x8b, 0xbe, 0xdf, 0x6d, 0xe3, 0x5a, 0x60, 0x79, 0xc1, + 0xae, 0xdd, 0xc6, 0x74, 0x1f, 0xe8, 0xed, 0x32, 0x7a, 0xfd, 0xe7, 0xc7, 0x85, 0x0c, 0x31, 0x75, + 0x2d, 0x4a, 0x4a, 0xd4, 0x1c, 0x2f, 0xa8, 0x07, 0xb6, 0xaa, 0x55, 0x50, 0xe7, 0x51, 0x94, 0xb7, + 0x71, 0x4d, 0x6a, 0x9a, 0x1b, 0x6b, 0x69, 0x3d, 0x6e, 0x94, 0xe1, 0xe2, 0x03, 0x1c, 0x98, 0xd8, + 0xc7, 0x81, 0x58, 0x1f, 0xe8, 0x80, 0x0c, 0x5d, 0xf0, 0xe3, 0xf4, 0xb7, 0x24, 0xa6, 0xdd, 0xcf, + 0xd6, 0x04, 0x01, 0x31, 0xfe, 0xb7, 0x0c, 0x14, 0xca, 0x1e, 0x66, 0x56, 0x62, 0x0a, 0xa3, 0xde, + 0xeb, 0xf6, 0x45, 0x18, 0xd9, 0x7d, 0xd1, 0x11, 0xbe, 0x36, 0x0a, 0x25, 0x9d, 0x62, 0xd2, 0xd2, + 0x01, 0x5d, 0x91, 0xc6, 0x97, 0x70, 0x89, 0xcc, 0xdc, 0xf4, 0x36, 0xbc, 0xc2, 0x32, 0x62, 0xfc, + 0x14, 0x2e, 0xa7, 0x31, 0xe7, 0xcb, 0xc3, 0x3d, 0xc8, 0x12, 0x85, 0x8f, 0x31, 0x88, 0xae, 0x0f, + 0x64, 0x81, 0xa7, 0xe8, 0x64, 0x7d, 0xe8, 0x8a, 0x1f, 0x83, 0xaf, 0x0f, 0x4f, 0x60, 0xd1, 0xc4, + 0x0e, 0x7e, 0x4e, 0xec, 0x15, 0xcd, 0x53, 0x59, 0x80, 0x51, 0xb6, 0x80, 0xc7, 0xba, 0x87, 0x95, + 0x9f, 0xce, 0xeb, 0x6b, 0x4c, 0x43, 0xb6, 0x6a, 0x3b, 0x87, 0x9c, 0xbb, 0xf1, 0xc7, 0xa3, 0x30, + 0xc5, 0x7e, 0xcb, 0x35, 0x50, 0xd3, 0xc0, 0x32, 0x83, 0x68, 0x60, 0xef, 0xc1, 0x34, 0x51, 0x61, + 0xb0, 0xb7, 0x8f, 0x3d, 0xb2, 0xaf, 0xf3, 0x5e, 0xa6, 0x0e, 0x0a, 0x9f, 0x02, 0xea, 0xcf, 0x18, + 0xc4, 0xd4, 0x11, 0xd1, 0x26, 0xcc, 0xb0, 0x82, 0xfb, 0xd8, 0x0a, 0xba, 0xa1, 0x8f, 0x75, 0x96, + 0x7b, 0x0b, 0x44, 0x31, 0x9b, 0x76, 0x9c, 0xd7, 0x13, 0x5e, 0x68, 0x46, 0x68, 0xd1, 0x27, 0x30, + 0x5b, 0xf5, 0xdc, 0xaf, 0x5f, 0x28, 0x3a, 0x27, 0x5b, 0x79, 0x98, 0x5f, 0x81, 0x80, 0xea, 0xaa, + 0xe6, 0x19, 0xc5, 0x46, 0x6f, 0xc0, 0xc4, 0x86, 0x5f, 0x72, 0x3d, 0xdb, 0x39, 0xa4, 0xeb, 0xcf, + 0x04, 0x3b, 0x6a, 0xb2, 0xfd, 0xfa, 0x63, 0x5a, 0x68, 0x4a, 0x70, 0xe4, 0x50, 0x64, 0xbc, 0xff, + 0xa1, 0xc8, 0x1d, 0x80, 0x4d, 0xd7, 0x6a, 0x16, 0x5b, 0xad, 0x72, 0xd1, 0xa7, 0xca, 0x1d, 0xd7, + 0x33, 0x5a, 0xae, 0xd5, 0xac, 0x5b, 0xad, 0x56, 0xbd, 0x61, 0xf9, 0xa6, 0x82, 0x83, 0xbe, 0x80, + 0x0b, 0xbe, 0x7d, 0xe8, 0xd0, 0x8f, 0xab, 0x5b, 0xad, 0x43, 0xd7, 0xb3, 0x83, 0xa3, 0x76, 0xdd, + 0xef, 0xda, 0x01, 0xf3, 0x60, 0xce, 0xac, 0x5e, 0x16, 0xbb, 0x93, 0xc0, 0x2b, 0x0a, 0xb4, 0x1a, + 0xc1, 0x32, 0x97, 0xfc, 0x64, 0x00, 0x3a, 0x80, 0xe9, 0x4d, 0xbb, 0x81, 0x1d, 0x1f, 0x53, 0x97, + 0xf4, 0x0b, 0xaa, 0xf1, 0xf5, 0x5e, 0xa8, 0x88, 0x10, 0xa7, 0x5b, 0x2a, 0x11, 0x5d, 0x96, 0x74, + 0x3e, 0x64, 0x2c, 0xf8, 0x0d, 0xb7, 0x83, 0x7d, 0x6a, 0xaf, 0x75, 0x7d, 0xea, 0xe5, 0x24, 0x3b, + 0x0d, 0xeb, 0xd0, 0x1a, 0x85, 0xd5, 0x28, 0xc8, 0x9c, 0xf2, 0x95, 0x5f, 0x0f, 0x47, 0x26, 0xc6, + 0x72, 0xe3, 0xe6, 0x2c, 0x67, 0x77, 0x60, 0x79, 0x8e, 0xed, 0x1c, 0xfa, 0xc6, 0x5f, 0x23, 0x98, + 0x90, 0x3d, 0x7c, 0x4b, 0x35, 0xcc, 0xb9, 0xb2, 0x46, 0x07, 0x7b, 0xe8, 0x73, 0x36, 0x15, 0x0c, + 0x74, 0x81, 0x9a, 0xea, 0x5c, 0x4d, 0x1c, 0x27, 0x0b, 0x8b, 0xd5, 0xe9, 0x98, 0xa4, 0x8c, 0x2c, + 0x98, 0x6b, 0x25, 0x3a, 0xdc, 0x26, 0xd8, 0x82, 0xd9, 0x7c, 0x6c, 0x0e, 0xad, 0x95, 0xc8, 0x4a, + 0xb5, 0xb3, 0xb1, 0x56, 0xa6, 0x23, 0x67, 0x82, 0xad, 0x54, 0xae, 0xdd, 0x6c, 0x98, 0xb4, 0x94, + 0x40, 0x6b, 0xc5, 0xad, 0x4d, 0x3e, 0x3a, 0x28, 0xd4, 0xb7, 0xda, 0x2d, 0x93, 0x96, 0x12, 0xd3, + 0x8b, 0xb9, 0x0f, 0xcb, 0xae, 0x13, 0x78, 0x6e, 0xcb, 0xa7, 0xf6, 0xc4, 0x04, 0x1b, 0xbd, 0xdc, + 0xef, 0xd8, 0xe0, 0x20, 0x33, 0x82, 0x8a, 0x0e, 0x60, 0xa9, 0xd8, 0x7c, 0x66, 0x39, 0x0d, 0xdc, + 0x64, 0x90, 0x03, 0xd7, 0x7b, 0xfa, 0xa4, 0xe5, 0x3e, 0xf7, 0xe9, 0xf0, 0x9a, 0xe0, 0x6e, 0x7a, + 0x8e, 0x22, 0xdc, 0x98, 0xcf, 0x05, 0x92, 0x99, 0x46, 0x4d, 0x56, 0x90, 0x72, 0xcb, 0xed, 0x36, + 0xf9, 0xa0, 0xa3, 0x2b, 0x48, 0x83, 0x14, 0x98, 0xac, 0x9c, 0x48, 0x69, 0xbd, 0xb6, 0x45, 0x87, + 0x14, 0x97, 0xd2, 0x91, 0xdf, 0x36, 0x49, 0x19, 0xba, 0x0e, 0xe3, 0xc2, 0x8a, 0x64, 0xa7, 0x70, + 0xf4, 0xf4, 0x47, 0x58, 0x8f, 0x02, 0x46, 0x7a, 0xdd, 0xc4, 0x0d, 0xf7, 0x19, 0xf6, 0x5e, 0x94, + 0xdd, 0x26, 0x16, 0x2e, 0x5c, 0xee, 0xa2, 0x64, 0x80, 0x7a, 0x83, 0x40, 0x4c, 0x1d, 0x91, 0x54, + 0xc0, 0xd4, 0x19, 0x3f, 0x3f, 0x1b, 0x56, 0xc0, 0xd4, 0x1d, 0xdf, 0x14, 0x30, 0xb4, 0x06, 0x73, + 0xc5, 0x6e, 0xe0, 0xb6, 0xad, 0xc0, 0x6e, 0xec, 0x75, 0x0e, 0x3d, 0x8b, 0x54, 0x92, 0xa3, 0x04, + 0xd4, 0xaa, 0xb6, 0x04, 0xb0, 0xde, 0xe5, 0x50, 0x33, 0x4e, 0x80, 0xde, 0x85, 0xa9, 0x0d, 0x9f, + 0xb9, 0xe9, 0x2d, 0x1f, 0x37, 0xa9, 0xaf, 0x95, 0xb7, 0xd2, 0xf6, 0xeb, 0xd4, 0x69, 0x5f, 0x27, + 0x76, 0x78, 0xd3, 0xd4, 0xf0, 0x90, 0x01, 0x63, 0x45, 0xdf, 0xb7, 0xfd, 0x80, 0xba, 0x50, 0x27, + 0x4a, 0x70, 0x72, 0x5c, 0x18, 0xb3, 0x68, 0x89, 0xc9, 0x21, 0xe8, 0x00, 0xb2, 0x6b, 0x98, 0x98, + 0x71, 0xbb, 0x5e, 0xd7, 0x0f, 0xa8, 0x43, 0x34, 0xbb, 0x7a, 0x81, 0x0f, 0x7b, 0x05, 0xc2, 0xc7, + 0x32, 0x33, 0x5a, 0x9a, 0xb4, 0xbc, 0x1e, 0x10, 0x80, 0xaa, 0x80, 0x28, 0xf8, 0xc4, 0x46, 0xe5, + 0x34, 0xeb, 0x76, 0x93, 0xac, 0x4c, 0x0b, 0xb4, 0x0d, 0xd4, 0x46, 0xe5, 0x4b, 0x61, 0xfd, 0x88, + 0x42, 0x54, 0x1b, 0x55, 0x23, 0x41, 0x8d, 0xd8, 0xc9, 0xcf, 0xa2, 0xe6, 0xdd, 0xd7, 0x81, 0xa2, + 0x89, 0xa7, 0x3c, 0x17, 0xfa, 0x3e, 0x64, 0xcb, 0x5d, 0x3f, 0x70, 0xdb, 0xbb, 0x47, 0xb8, 0x8d, + 0xa9, 0x73, 0x96, 0x5b, 0xe2, 0x0d, 0x5a, 0x5c, 0x0f, 0x48, 0xb9, 0xfa, 0x99, 0x0a, 0x3a, 0xfa, + 0x14, 0x90, 0x30, 0xa9, 0x1f, 0x90, 0xf1, 0xe1, 0x90, 0xb1, 0x4c, 0xfd, 0xb3, 0xdc, 0xdd, 0x27, + 0x2c, 0xf1, 0xfa, 0xa1, 0x04, 0xab, 0xbe, 0xfb, 0x38, 0x31, 0x69, 0x10, 0x6b, 0xe2, 0x03, 0xcf, + 0xea, 0x1c, 0xe5, 0xf3, 0xa1, 0xb1, 0xc8, 0x3f, 0xea, 0x90, 0x94, 0x6b, 0x8a, 0x5f, 0x88, 0x8e, + 0x6a, 0x00, 0xec, 0x27, 0x51, 0x0b, 0xb8, 0x47, 0x37, 0xaf, 0xc9, 0x8b, 0x00, 0x84, 0xac, 0xa8, + 0xed, 0xcd, 0xd9, 0xb6, 0x6c, 0xad, 0x37, 0x15, 0x36, 0xe8, 0x29, 0xe4, 0xd8, 0xaf, 0x2d, 0xd7, + 0xb1, 0x03, 0xb6, 0xd3, 0x2c, 0x6b, 0x6e, 0xf9, 0x28, 0x58, 0x54, 0x40, 0x8f, 0x43, 0x78, 0x05, + 0x6d, 0x09, 0x55, 0xaa, 0x89, 0x31, 0x46, 0x55, 0xc8, 0x56, 0x3d, 0xb7, 0xd9, 0x6d, 0x04, 0x54, + 0xf7, 0x5a, 0xa1, 0x2b, 0x31, 0xe2, 0xf5, 0x28, 0x10, 0x26, 0x93, 0x0e, 0x2b, 0xa8, 0x93, 0x1d, + 0x45, 0x95, 0x89, 0x82, 0x88, 0x4a, 0x30, 0x56, 0x75, 0x5b, 0x76, 0xe3, 0x45, 0xfe, 0x22, 0x6d, + 0xf4, 0x82, 0x60, 0x46, 0x0b, 0x45, 0x53, 0xa9, 0xa2, 0xdf, 0xa1, 0x45, 0xaa, 0xa2, 0xcf, 0x90, + 0x50, 0x11, 0xa6, 0x3f, 0x25, 0x03, 0xc6, 0x76, 0x1d, 0xc7, 0xb2, 0x3d, 0x9c, 0xbf, 0x44, 0xfb, + 0x85, 0x1e, 0x59, 0xfd, 0x58, 0x05, 0xa8, 0xc3, 0x59, 0xa3, 0x40, 0x1b, 0x30, 0xbb, 0xe1, 0xd7, + 0x02, 0xcf, 0xee, 0xe0, 0x2d, 0xcb, 0xb1, 0x0e, 0x71, 0x33, 0x7f, 0x39, 0x3c, 0x33, 0xb2, 0xc9, + 0xde, 0x43, 0x60, 0xf5, 0x36, 0x03, 0xaa, 0x67, 0x46, 0x11, 0x3a, 0xf4, 0x19, 0x2c, 0x54, 0xbe, + 0x0e, 0xc8, 0x88, 0x69, 0x15, 0xbb, 0x4d, 0x3b, 0xa8, 0x05, 0xae, 0x67, 0x1d, 0xe2, 0x7c, 0x81, + 0xf2, 0x7b, 0xed, 0xe4, 0xb8, 0x70, 0x05, 0x73, 0x78, 0xdd, 0x22, 0x08, 0x75, 0x9f, 0x61, 0xa8, + 0xb1, 0x1d, 0x49, 0x1c, 0x88, 0xf4, 0x6b, 0xdd, 0x0e, 0xb1, 0x41, 0xa8, 0xf4, 0xaf, 0x68, 0xd2, + 0x57, 0x20, 0x4c, 0xfa, 0x3e, 0x2b, 0x88, 0x49, 0x5f, 0x41, 0x44, 0x26, 0xa0, 0x87, 0xae, 0xed, + 0x14, 0x1b, 0x81, 0xfd, 0x0c, 0x73, 0x1f, 0x8a, 0x9f, 0xbf, 0x4a, 0x5b, 0x4a, 0xcf, 0xb7, 0x7e, + 0xd5, 0xb5, 0x9d, 0xba, 0x45, 0xc1, 0x75, 0x9f, 0xc3, 0xd5, 0x39, 0x12, 0xa7, 0x46, 0x3f, 0x84, + 0xf3, 0x5b, 0xee, 0x63, 0xbb, 0x85, 0xd9, 0x92, 0xc3, 0xc4, 0x42, 0xcf, 0x04, 0x0c, 0xca, 0x97, + 0x9e, 0x6f, 0xb5, 0x29, 0x46, 0x9d, 0xaf, 0x56, 0x6d, 0x89, 0xa3, 0x9e, 0x6f, 0x25, 0x73, 0x41, + 0x15, 0x98, 0xa2, 0xf3, 0xb2, 0x45, 0x7f, 0xfa, 0xf9, 0x6b, 0x54, 0x6b, 0xbe, 0x1a, 0xd1, 0xef, + 0x6e, 0x55, 0x14, 0x9c, 0x8a, 0x13, 0x78, 0x2f, 0x4c, 0x8d, 0x0c, 0x7d, 0x0c, 0xcb, 0xd1, 0xe1, + 0x5d, 0x76, 0x9d, 0x27, 0xf6, 0x61, 0xd7, 0xc3, 0xcd, 0xfc, 0x6b, 0xa4, 0xa9, 0x66, 0x0f, 0x0c, + 0xb4, 0x0f, 0xf3, 0xca, 0xdc, 0x5e, 0xc3, 0x6d, 0x77, 0xcb, 0x6d, 0xe2, 0xfc, 0x8d, 0xb0, 0x97, + 0xd5, 0x25, 0xa1, 0xde, 0xc4, 0x6d, 0xb7, 0xde, 0x76, 0x9b, 0x58, 0x0b, 0x6b, 0x8a, 0x33, 0x20, + 0xc3, 0xa7, 0x4c, 0x43, 0xd2, 0x36, 0xaa, 0x26, 0x26, 0xa3, 0xae, 0xc1, 0xac, 0xd7, 0xd7, 0x43, + 0xc6, 0x2c, 0x64, 0xad, 0x6e, 0x77, 0xea, 0x9e, 0x82, 0xa1, 0x0e, 0x9f, 0x24, 0x0e, 0xcb, 0x07, + 0x30, 0x17, 0x13, 0x0a, 0xca, 0xc1, 0xf0, 0x53, 0xfc, 0x82, 0x69, 0xe5, 0x26, 0xf9, 0x13, 0xbd, + 0x05, 0xa3, 0xcf, 0x88, 0x4d, 0x4c, 0x75, 0x9c, 0xf0, 0xc8, 0x5c, 0x21, 0xdd, 0x70, 0x9e, 0xb8, + 0x26, 0x43, 0xfa, 0x60, 0xe8, 0xbd, 0xcc, 0xc3, 0x91, 0x89, 0x6c, 0x6e, 0x8a, 0xc5, 0x99, 0x3c, + 0x1c, 0x99, 0x98, 0xce, 0xcd, 0x3c, 0x1c, 0x99, 0xb8, 0x9e, 0xbb, 0x61, 0x2e, 0x52, 0x65, 0xa0, + 0xe8, 0xb8, 0xce, 0x8b, 0xb6, 0xfd, 0x13, 0x6a, 0x76, 0x11, 0x83, 0xa1, 0x08, 0xb3, 0x11, 0x66, + 0x28, 0x0f, 0xe3, 0xd8, 0x21, 0x86, 0x4a, 0x93, 0xa9, 0x60, 0xa6, 0xf8, 0x89, 0x16, 0x60, 0xb4, + 0x65, 0xb7, 0xed, 0x80, 0xb6, 0x66, 0xd4, 0x64, 0x3f, 0x8c, 0x3f, 0xca, 0x00, 0x8a, 0xef, 0x80, + 0xe8, 0x76, 0x84, 0x0d, 0x53, 0xd3, 0x79, 0x91, 0x7a, 0xfc, 0x27, 0xb8, 0x7f, 0x0a, 0xf3, 0x6c, + 0x08, 0x8a, 0xbd, 0x5a, 0xa9, 0x8b, 0xed, 0x11, 0x09, 0x60, 0xd5, 0xd7, 0xca, 0xc1, 0x74, 0x67, + 0xdf, 0xa4, 0x4d, 0xeb, 0xc2, 0x62, 0xe2, 0xde, 0x87, 0xb6, 0x60, 0xb1, 0xed, 0x3a, 0xc1, 0x51, + 0xeb, 0x85, 0xd8, 0xfa, 0x78, 0x6d, 0xd4, 0xac, 0x64, 0xcb, 0x7d, 0x22, 0x82, 0x39, 0xcf, 0x8b, + 0x39, 0x47, 0x5a, 0x0f, 0x77, 0x7c, 0x8a, 0x2f, 0x31, 0x4c, 0x98, 0x8b, 0x6d, 0x21, 0xe8, 0x23, + 0x98, 0x6a, 0x50, 0x23, 0x5b, 0xab, 0x89, 0x6d, 0xa0, 0x4a, 0xb9, 0xba, 0x3a, 0xb0, 0x72, 0xf6, + 0x29, 0x7f, 0x3b, 0x03, 0x4b, 0x29, 0x9b, 0xc7, 0xe9, 0x45, 0xfd, 0x39, 0x9c, 0x6f, 0x5b, 0x5f, + 0xd7, 0x3d, 0xea, 0x43, 0xa9, 0x7b, 0x96, 0x13, 0x91, 0x36, 0x1d, 0xd9, 0xc9, 0x18, 0xea, 0x94, + 0x69, 0x5b, 0x5f, 0x9b, 0x14, 0xc1, 0x24, 0x70, 0xd6, 0xce, 0x1f, 0xc0, 0xb4, 0xb6, 0x5d, 0x9c, + 0xba, 0x71, 0xc6, 0x5d, 0x98, 0x5b, 0xc3, 0x2d, 0x1c, 0xe0, 0x81, 0xfd, 0xc6, 0x46, 0x15, 0x20, + 0x74, 0xf8, 0xa1, 0x92, 0xfa, 0x2b, 0xdd, 0xd1, 0xc7, 0x4c, 0x8b, 0xd0, 0xd9, 0x67, 0x2a, 0x54, + 0xc6, 0xbf, 0x1a, 0x02, 0xc4, 0xd7, 0x7b, 0x0f, 0x5b, 0x6d, 0xd1, 0x8c, 0xf7, 0x61, 0x8a, 0x79, + 0x4a, 0x58, 0x31, 0x6d, 0x4e, 0x56, 0x9a, 0x3f, 0x2a, 0x68, 0xfd, 0x9c, 0xa9, 0xa1, 0x12, 0x52, + 0x13, 0x33, 0x17, 0x0f, 0x25, 0x1d, 0xd2, 0x48, 0x55, 0x10, 0x21, 0x55, 0x7f, 0xa3, 0x4f, 0x60, + 0xa6, 0xec, 0xb6, 0x3b, 0x44, 0x26, 0x9c, 0x78, 0x98, 0xbb, 0xcf, 0x78, 0xbd, 0x1a, 0x70, 0xfd, + 0x9c, 0x19, 0x41, 0x47, 0xdb, 0x30, 0x7f, 0xbf, 0xd5, 0xf5, 0x8f, 0x8a, 0x4e, 0xb3, 0xdc, 0x72, + 0x7d, 0xc1, 0x65, 0x84, 0x5b, 0x85, 0x7c, 0xb5, 0x8e, 0x63, 0xac, 0x9f, 0x33, 0x93, 0x08, 0xd1, + 0x75, 0x18, 0xad, 0x3c, 0x23, 0xbb, 0x88, 0x88, 0x07, 0xe3, 0xe1, 0xaa, 0x3b, 0x0e, 0xde, 0x79, + 0xb2, 0x7e, 0xce, 0x64, 0xd0, 0xd2, 0x24, 0x8c, 0x0b, 0x4f, 0xc4, 0x6d, 0xa2, 0xe1, 0x4b, 0x71, + 0x32, 0x9b, 0x10, 0x2d, 0xc3, 0xc4, 0x5e, 0x87, 0x18, 0xc8, 0xc2, 0x3d, 0x65, 0xca, 0xdf, 0xc6, + 0x5b, 0xba, 0xa4, 0xd1, 0x45, 0x08, 0xcf, 0x15, 0x38, 0xb2, 0x72, 0xd0, 0xb0, 0xae, 0x0b, 0xb7, + 0x37, 0xb6, 0x56, 0xef, 0x50, 0xa4, 0xde, 0x5c, 0x54, 0xd6, 0xc6, 0x62, 0xa2, 0xf0, 0x8c, 0xcf, + 0xe0, 0xf2, 0x5e, 0xc7, 0xc7, 0x5e, 0x50, 0xec, 0x74, 0x5a, 0x76, 0x83, 0x9d, 0x73, 0x53, 0x8f, + 0x85, 0x18, 0x2c, 0xef, 0xc2, 0x18, 0x2b, 0xe0, 0xc3, 0x44, 0x8c, 0xc1, 0x62, 0xa7, 0xc3, 0xfd, + 0x24, 0xf7, 0x98, 0xad, 0xc1, 0x3c, 0x1f, 0x26, 0xc7, 0x36, 0x7e, 0x2f, 0x03, 0x97, 0xd9, 0x0c, + 0x48, 0x65, 0xfd, 0x1d, 0x98, 0xa4, 0xd1, 0xa2, 0x1d, 0xab, 0x21, 0xe6, 0x04, 0x0b, 0x9b, 0x15, + 0x85, 0x66, 0x08, 0x57, 0xe2, 0x70, 0x87, 0xd2, 0xe3, 0x70, 0xc5, 0x04, 0x1b, 0x4e, 0x9c, 0x60, + 0x9f, 0x82, 0xc1, 0x5b, 0xd4, 0x6a, 0xc5, 0x1a, 0xe5, 0xbf, 0x4c, 0xab, 0x8c, 0xdf, 0x1f, 0x86, + 0xa5, 0x07, 0xd8, 0xc1, 0x9e, 0x45, 0xbf, 0x53, 0xf3, 0xf4, 0xa9, 0xf1, 0x7b, 0x99, 0x9e, 0xf1, + 0x7b, 0x05, 0xe1, 0xbf, 0x1d, 0xa2, 0xfe, 0xdb, 0x58, 0x70, 0x21, 0xb1, 0x7e, 0xf7, 0xcc, 0x0d, + 0xfe, 0x59, 0xd4, 0xfa, 0xed, 0x7a, 0x36, 0x3b, 0x64, 0xdb, 0x08, 0x63, 0xff, 0x46, 0xfa, 0xfa, + 0x47, 0xe6, 0x79, 0x2c, 0xd4, 0x38, 0x8f, 0xfd, 0xd3, 0x23, 0xfe, 0xb6, 0x61, 0x8c, 0xb9, 0x9d, + 0xe9, 0xd1, 0x6e, 0x76, 0xf5, 0x4d, 0x3e, 0xa7, 0x52, 0x3e, 0x90, 0xfb, 0xa8, 0xe9, 0xae, 0xcf, + 0x86, 0x40, 0x40, 0x0b, 0x4c, 0xce, 0x05, 0x5d, 0x87, 0x19, 0xab, 0x1b, 0x1c, 0xb9, 0x1e, 0xb1, + 0x88, 0xc8, 0xa8, 0x61, 0x47, 0x97, 0xe6, 0xb4, 0x2c, 0x25, 0x2a, 0xe3, 0xf2, 0xa7, 0x90, 0x55, + 0x38, 0x0d, 0xa2, 0x3f, 0x48, 0x2f, 0x39, 0xd1, 0x93, 0x9d, 0x43, 0xe6, 0x70, 0x57, 0xf4, 0x07, + 0xe3, 0x43, 0xc8, 0xc7, 0x1b, 0xcd, 0xbd, 0x87, 0xfd, 0x9c, 0x95, 0xc6, 0x1a, 0x2c, 0x3c, 0xc0, + 0x01, 0x1d, 0xdf, 0x74, 0xae, 0x29, 0xa1, 0xab, 0x91, 0xe9, 0x28, 0x16, 0x5f, 0x5a, 0x48, 0xc6, + 0xa1, 0x32, 0x99, 0x6b, 0xb0, 0x18, 0xe1, 0xc2, 0xeb, 0xff, 0x00, 0xc6, 0x79, 0x91, 0x5c, 0x78, + 0x79, 0xfc, 0x3b, 0x7e, 0xcc, 0x01, 0xfb, 0xab, 0x6c, 0x78, 0x73, 0xce, 0xa6, 0x20, 0x30, 0x8e, + 0xd8, 0xb9, 0x50, 0xc8, 0xf5, 0x4c, 0x4e, 0xa7, 0x10, 0xd0, 0xc0, 0x57, 0x36, 0xbc, 0x4c, 0xfa, + 0xb7, 0xe1, 0xc1, 0x52, 0xac, 0x26, 0xfe, 0x01, 0xb7, 0x61, 0x42, 0x28, 0xee, 0x91, 0x33, 0x21, + 0xf5, 0x0b, 0x4c, 0x89, 0x34, 0xb0, 0x7f, 0xf9, 0x57, 0xe8, 0x39, 0x40, 0xcd, 0x71, 0x9f, 0x3f, + 0x69, 0x59, 0x4f, 0x71, 0xac, 0xe2, 0x8f, 0x60, 0xa2, 0xd6, 0xbf, 0x62, 0x36, 0xcb, 0x44, 0xe5, + 0xa6, 0x24, 0x31, 0x5a, 0xb0, 0x4c, 0x0f, 0xd5, 0x8a, 0x5b, 0x9b, 0x1b, 0xcd, 0xea, 0x37, 0x2d, + 0xc0, 0x67, 0xb0, 0x92, 0x58, 0xdb, 0x37, 0x2d, 0xc4, 0x7f, 0x38, 0x02, 0x4b, 0x6c, 0xcf, 0x89, + 0x8f, 0xe0, 0xc1, 0x57, 0xa4, 0x6f, 0x25, 0x2a, 0xe2, 0x4e, 0x42, 0x54, 0x04, 0x25, 0x51, 0xa3, + 0x22, 0xb4, 0x58, 0x88, 0xf7, 0x92, 0x63, 0x21, 0xa8, 0x77, 0x4c, 0x8f, 0x85, 0x88, 0x46, 0x40, + 0x54, 0xd2, 0x23, 0x20, 0xe8, 0x39, 0x61, 0x42, 0x04, 0x44, 0x52, 0xdc, 0x43, 0x24, 0x5a, 0x71, + 0xe2, 0x6c, 0xa3, 0x15, 0x6f, 0xc0, 0x78, 0xb1, 0xd3, 0x51, 0xa2, 0x7f, 0x69, 0xf7, 0x58, 0x9d, + 0x0e, 0x13, 0x9e, 0x00, 0x8a, 0xed, 0x00, 0x12, 0xb6, 0x83, 0xf7, 0x01, 0x98, 0xa9, 0x46, 0x3b, + 0x2e, 0x4b, 0x31, 0xa8, 0x21, 0xc0, 0x4d, 0x3c, 0xd2, 0x71, 0xaa, 0xdf, 0x27, 0x44, 0x66, 0xfa, + 0xbf, 0xb1, 0x0f, 0xf9, 0xf8, 0xf0, 0x39, 0x83, 0xa5, 0xeb, 0x4f, 0x32, 0x70, 0x89, 0xeb, 0x42, + 0x91, 0x09, 0x7e, 0xfa, 0xd1, 0xf9, 0x0e, 0x4c, 0x71, 0xda, 0xdd, 0x70, 0x22, 0xb0, 0x30, 0x14, + 0xb1, 0x18, 0xb3, 0x15, 0x5d, 0x43, 0x43, 0xef, 0xc0, 0x04, 0xfd, 0x23, 0x3c, 0xc7, 0x23, 0x92, + 0x99, 0xa4, 0xa8, 0xf5, 0xe8, 0x69, 0x9e, 0x44, 0x35, 0xbe, 0x82, 0xcb, 0x69, 0x0d, 0x3f, 0x03, + 0xb9, 0xfc, 0x93, 0x0c, 0xac, 0x70, 0xf6, 0xda, 0x52, 0xf1, 0x52, 0xbb, 0xce, 0x29, 0xee, 0x0c, + 0x3c, 0x84, 0x2c, 0xa9, 0x50, 0xb4, 0x3b, 0x12, 0x97, 0x10, 0x42, 0xd6, 0xac, 0xc0, 0xe2, 0x41, + 0x6a, 0x56, 0xbb, 0x25, 0x5c, 0x36, 0xa6, 0x4a, 0x6c, 0x7c, 0x01, 0x17, 0x93, 0x3f, 0xe1, 0x0c, + 0xe4, 0xf3, 0x10, 0x96, 0x13, 0x36, 0x85, 0x97, 0xdb, 0x93, 0x3f, 0x87, 0x95, 0x44, 0x5e, 0x67, + 0xd0, 0xcc, 0x75, 0xa2, 0x71, 0x04, 0x67, 0xd0, 0x85, 0xc6, 0x01, 0x5c, 0x48, 0xe0, 0x74, 0x06, + 0x4d, 0x7c, 0x00, 0x4b, 0x52, 0x21, 0x7f, 0xa5, 0x16, 0x6e, 0xc1, 0x25, 0xc6, 0xe8, 0x6c, 0x7a, + 0xe5, 0x11, 0xac, 0x70, 0x76, 0x67, 0x20, 0xbd, 0x75, 0xb8, 0x18, 0xda, 0xdd, 0x09, 0x7a, 0xd2, + 0xc0, 0x8b, 0x8c, 0xb1, 0x09, 0x57, 0x42, 0x4e, 0x29, 0x4a, 0xc3, 0xe0, 0xdc, 0x98, 0x3a, 0x18, + 0xf6, 0xd2, 0x99, 0xf4, 0xe8, 0x01, 0x9c, 0xd7, 0x98, 0x9e, 0x99, 0xaa, 0xb4, 0x01, 0xf3, 0x8c, + 0xb1, 0xae, 0x3a, 0xaf, 0xaa, 0xaa, 0x73, 0x76, 0x75, 0x2e, 0x64, 0xc9, 0xc3, 0x0a, 0x12, 0xb4, + 0xe9, 0x2d, 0xaa, 0x4d, 0x0b, 0x94, 0xb0, 0x85, 0xef, 0xc0, 0xd8, 0xae, 0x1a, 0xa4, 0x90, 0xc0, + 0x8c, 0xd9, 0x14, 0x8c, 0x8c, 0x23, 0x1b, 0x26, 0x2c, 0x10, 0xb5, 0x4a, 0xe1, 0xf7, 0xea, 0x61, + 0x15, 0xbf, 0xca, 0x42, 0xbe, 0xe2, 0x6d, 0x7c, 0x03, 0xc6, 0x82, 0xde, 0x6d, 0x34, 0x39, 0xc2, + 0xc0, 0xea, 0xd9, 0x0f, 0xe1, 0x12, 0x33, 0xb8, 0xc3, 0x13, 0x60, 0xdd, 0x28, 0xfe, 0x28, 0x62, + 0x6f, 0x5f, 0xe0, 0x75, 0x46, 0xf1, 0x53, 0xcc, 0xee, 0xc7, 0x62, 0x6e, 0xa6, 0xf1, 0x1f, 0xe8, + 0x3e, 0xab, 0xb0, 0xa3, 0x87, 0x12, 0xed, 0xe8, 0x6b, 0x70, 0x55, 0xda, 0xd1, 0xd1, 0x6a, 0x44, + 0x87, 0x18, 0x5f, 0xc0, 0x0a, 0xfb, 0x50, 0x11, 0x38, 0xac, 0x37, 0xe3, 0xc3, 0xc8, 0x67, 0x2e, + 0xf1, 0xcf, 0xd4, 0xb1, 0x53, 0x3e, 0xf2, 0xff, 0xc8, 0x88, 0x25, 0x23, 0x99, 0xf9, 0xb7, 0xed, + 0x58, 0xd8, 0x86, 0x82, 0x14, 0x88, 0xde, 0xa2, 0x97, 0xf3, 0x2a, 0x6c, 0xc1, 0xa2, 0xca, 0xc6, + 0x6e, 0xe0, 0xfd, 0xbb, 0xf4, 0x68, 0xee, 0x6d, 0x32, 0xad, 0x69, 0x81, 0x18, 0x92, 0xf9, 0x04, + 0xb9, 0x51, 0x7c, 0x53, 0x62, 0x1a, 0x75, 0xb8, 0x18, 0xef, 0x0a, 0xbb, 0x21, 0x2e, 0x25, 0xa1, + 0x4f, 0xc8, 0x12, 0x44, 0x4b, 0x78, 0x67, 0xa4, 0x32, 0x15, 0xeb, 0x10, 0x23, 0x17, 0x54, 0x86, + 0x21, 0x96, 0xca, 0xc8, 0xf7, 0x93, 0xda, 0xc5, 0x78, 0xf8, 0x29, 0x20, 0x01, 0x2a, 0xd7, 0x4c, + 0x51, 0xf5, 0x05, 0x18, 0x2e, 0xd7, 0x4c, 0x7e, 0x2b, 0x92, 0x6a, 0xb2, 0x0d, 0xdf, 0x33, 0x49, + 0x59, 0xd4, 0xa2, 0x18, 0x1a, 0xc0, 0xa2, 0x78, 0x38, 0x32, 0x31, 0x9c, 0x1b, 0x31, 0x51, 0xcd, + 0x3e, 0x74, 0x0e, 0xec, 0xe0, 0x48, 0x56, 0x58, 0x34, 0xbe, 0x84, 0x79, 0xad, 0x7a, 0x3e, 0xc3, + 0x7b, 0x5e, 0xcb, 0x24, 0xfa, 0x78, 0xb9, 0x48, 0x23, 0x9d, 0xa8, 0x67, 0x66, 0x8a, 0xad, 0x97, + 0x0d, 0xab, 0x4e, 0xf3, 0x0a, 0x98, 0x02, 0x68, 0xfc, 0xf9, 0x88, 0xc2, 0x5d, 0xb9, 0xec, 0xda, + 0xe3, 0xeb, 0xee, 0x02, 0xb0, 0x11, 0xa2, 0x7c, 0x1c, 0x51, 0x60, 0xb3, 0x3c, 0x80, 0x88, 0x6d, + 0x29, 0xa6, 0x82, 0x34, 0xe8, 0x65, 0x58, 0x7e, 0xcb, 0x80, 0x11, 0x89, 0xfb, 0xdf, 0xf2, 0x96, + 0x01, 0x67, 0xed, 0x9b, 0x2a, 0x12, 0xfa, 0x61, 0xf4, 0x86, 0xd7, 0x28, 0x3d, 0x09, 0x7c, 0x4d, + 0x84, 0x06, 0xc4, 0xbf, 0xed, 0x74, 0x97, 0xbc, 0x9e, 0xc3, 0x22, 0xa1, 0xb5, 0x9f, 0x50, 0xc3, + 0xa8, 0xf2, 0x75, 0x80, 0x1d, 0xb6, 0x37, 0x8d, 0xd1, 0x7a, 0xae, 0xf7, 0xa8, 0x27, 0x44, 0xe6, + 0xc7, 0x0c, 0x21, 0x9f, 0x3a, 0x96, 0x30, 0x33, 0x99, 0x3f, 0x7a, 0x1b, 0xb2, 0x65, 0x73, 0xb3, + 0xe2, 0x34, 0x3b, 0xae, 0x2d, 0x0d, 0x3e, 0x44, 0x07, 0x91, 0xd7, 0xaa, 0x63, 0x51, 0x9e, 0x31, + 0x55, 0x34, 0xa2, 0x72, 0x94, 0xcd, 0xcd, 0x35, 0xb7, 0x6d, 0xd9, 0x0e, 0x8f, 0x71, 0xa7, 0x2a, + 0x07, 0xa1, 0x69, 0xd2, 0x52, 0x33, 0x44, 0x30, 0x6e, 0xf4, 0xbc, 0x4d, 0x33, 0x01, 0x23, 0xbb, + 0xe5, 0xdd, 0xcd, 0x5c, 0xc6, 0xb8, 0x0d, 0xa0, 0xb4, 0x0c, 0x60, 0x6c, 0x7b, 0xc7, 0xdc, 0x2a, + 0x6e, 0xe6, 0xce, 0xa1, 0x45, 0x98, 0x3b, 0xd8, 0xd8, 0x5e, 0xdb, 0x39, 0xa8, 0xd5, 0x6b, 0x5b, + 0x45, 0x73, 0xb7, 0x5c, 0x34, 0xd7, 0x72, 0x19, 0xe3, 0x2b, 0x58, 0xd0, 0x25, 0x72, 0xa6, 0x83, + 0x36, 0x80, 0x79, 0xa9, 0xbf, 0x3d, 0x3c, 0xd8, 0x55, 0x82, 0xcd, 0xb9, 0xb1, 0x1b, 0x0d, 0xae, + 0xe3, 0x66, 0x31, 0x9f, 0x76, 0x0a, 0x12, 0x7a, 0x83, 0xa9, 0x41, 0xd1, 0xf4, 0x07, 0x34, 0x12, + 0x31, 0xd4, 0x83, 0xe8, 0x52, 0xf9, 0x3d, 0x58, 0xd0, 0x6b, 0x1d, 0xd4, 0x2b, 0xf7, 0x1a, 0x8d, + 0xc2, 0x57, 0xee, 0x52, 0x22, 0xa4, 0x9e, 0xa6, 0xf0, 0x95, 0xf8, 0x7b, 0x90, 0xe3, 0x58, 0xe1, + 0x2e, 0x7e, 0x4d, 0x78, 0x57, 0x33, 0x09, 0x37, 0xb9, 0xc5, 0x55, 0x15, 0x17, 0x72, 0x34, 0xb4, + 0x92, 0x51, 0xb2, 0x0a, 0x16, 0x60, 0x74, 0x33, 0x3c, 0xe5, 0x32, 0xd9, 0x0f, 0x7a, 0xa5, 0x30, + 0xb0, 0xbc, 0x40, 0x84, 0x32, 0x4e, 0x9a, 0xf2, 0x37, 0x51, 0x18, 0xee, 0xab, 0x71, 0xde, 0x73, + 0x4a, 0x5d, 0x22, 0xc4, 0x9b, 0xfd, 0x6f, 0x98, 0x30, 0xa7, 0x54, 0x78, 0x8a, 0xa6, 0xa2, 0x3c, + 0x8c, 0x6f, 0xe3, 0xaf, 0x95, 0xfa, 0xc5, 0x4f, 0xe3, 0x5d, 0x98, 0xe3, 0x21, 0xb0, 0x8a, 0x98, + 0xae, 0xf2, 0x84, 0x13, 0x19, 0xed, 0xd6, 0x3b, 0x67, 0x49, 0x41, 0x84, 0x6e, 0xaf, 0xd3, 0x7c, + 0x49, 0x3a, 0xb2, 0xb1, 0x9c, 0x92, 0xee, 0x75, 0x71, 0x38, 0xd6, 0xaf, 0x3b, 0xff, 0x7c, 0x08, + 0xf2, 0x11, 0xaf, 0x4a, 0xf9, 0xc8, 0x6a, 0xb5, 0xb0, 0x73, 0x88, 0xd1, 0x4d, 0x18, 0xd9, 0xdd, + 0xd9, 0xad, 0x72, 0xaf, 0xb0, 0x08, 0xf3, 0x20, 0x45, 0x12, 0xc7, 0xa4, 0x18, 0xe8, 0x11, 0xcc, + 0x89, 0x00, 0x7f, 0x09, 0xe2, 0x3d, 0x74, 0xa9, 0xf7, 0x75, 0x81, 0x38, 0x1d, 0x59, 0x52, 0xa8, + 0xcf, 0xe6, 0xc7, 0x5d, 0xdb, 0xc3, 0x4d, 0xea, 0xe9, 0x0a, 0x63, 0x26, 0x14, 0x88, 0xa9, 0xa2, + 0xa1, 0xef, 0xc1, 0x54, 0xad, 0xb6, 0x13, 0xd6, 0x3e, 0xaa, 0x1d, 0x9c, 0xa9, 0x20, 0x53, 0x43, + 0x44, 0x9b, 0x30, 0x5f, 0xf2, 0xdc, 0xe7, 0x3e, 0xf6, 0xb6, 0xee, 0x17, 0x43, 0xfa, 0x31, 0xed, + 0xd4, 0x2b, 0x01, 0xc3, 0x4c, 0x22, 0x63, 0x97, 0xd8, 0x8c, 0xff, 0x92, 0x81, 0xa5, 0x14, 0x67, + 0x15, 0x7a, 0x43, 0x93, 0xea, 0xbc, 0x22, 0x55, 0x81, 0xb2, 0x7e, 0x8e, 0x8b, 0xb5, 0xac, 0x5c, + 0xbe, 0x18, 0x3e, 0xc5, 0xe5, 0x8b, 0xf5, 0x73, 0xe1, 0x85, 0x0b, 0x74, 0x03, 0x86, 0x6b, 0xb5, + 0x1d, 0x7e, 0x76, 0x81, 0x42, 0x79, 0x28, 0xc8, 0x04, 0x01, 0xbd, 0x03, 0xe3, 0xfc, 0x83, 0xb8, + 0xec, 0x2e, 0xc4, 0xbe, 0x5d, 0x21, 0x11, 0xb8, 0x25, 0x80, 0x09, 0x51, 0x6c, 0xcc, 0xc2, 0xb4, + 0x36, 0x3a, 0x0c, 0x03, 0xa6, 0xd4, 0x0f, 0x23, 0x43, 0xb0, 0xec, 0x36, 0xe5, 0x10, 0x24, 0x7f, + 0x1b, 0x3f, 0xd5, 0x3b, 0x8e, 0xd8, 0x12, 0xe2, 0x2c, 0xdd, 0x6e, 0x8a, 0x53, 0x39, 0x5e, 0xb2, + 0xd1, 0x44, 0x57, 0x61, 0xca, 0xc3, 0x4d, 0xdb, 0xc3, 0x8d, 0xa0, 0xde, 0xf5, 0xf8, 0x9d, 0x3d, + 0x33, 0x2b, 0xca, 0xf6, 0xbc, 0x16, 0xfa, 0x0e, 0x8c, 0xb1, 0x43, 0x7e, 0x2e, 0x34, 0x61, 0x99, + 0xd5, 0x6a, 0x3b, 0x5b, 0xf7, 0x8b, 0x2c, 0x08, 0xc1, 0xe4, 0x28, 0x46, 0x09, 0xb2, 0x8a, 0x30, + 0xfa, 0xd5, 0xbe, 0x00, 0xa3, 0xaa, 0xed, 0xc1, 0x7e, 0x18, 0x6f, 0x27, 0x0e, 0xa1, 0x3e, 0xbc, + 0x8c, 0xdf, 0xce, 0x00, 0x8a, 0xcb, 0xb6, 0x5f, 0x0b, 0x4c, 0x98, 0x13, 0x43, 0x40, 0xba, 0x3b, + 0xf9, 0x58, 0x1a, 0x6c, 0x70, 0x98, 0x39, 0x79, 0x2b, 0x47, 0xf4, 0xdb, 0xff, 0x95, 0x81, 0x05, + 0xda, 0x84, 0x43, 0x9b, 0xec, 0xb1, 0xe1, 0x17, 0xac, 0x6a, 0x63, 0xf5, 0xa2, 0x36, 0x56, 0x23, + 0xb8, 0x72, 0xd0, 0x7e, 0x10, 0x1b, 0xb4, 0x17, 0x93, 0xda, 0x45, 0xd7, 0x51, 0xdb, 0x75, 0xd4, + 0xb1, 0xaa, 0x1e, 0x05, 0xff, 0x51, 0x06, 0xe6, 0x95, 0x36, 0x49, 0xf1, 0xdc, 0xd5, 0x9a, 0xb4, + 0x92, 0xd0, 0xa4, 0xd8, 0x34, 0x2a, 0xc5, 0x5a, 0xf4, 0x5a, 0xaf, 0x16, 0x25, 0xcd, 0x22, 0x6d, + 0x98, 0xff, 0x87, 0x0c, 0x2c, 0x26, 0xca, 0x00, 0x9d, 0x27, 0x46, 0x57, 0xc3, 0xc3, 0x01, 0xef, + 0x37, 0xfe, 0x8b, 0x94, 0x6f, 0xf8, 0x7e, 0x17, 0x7b, 0x7c, 0xdc, 0xf0, 0x5f, 0xe8, 0x35, 0x98, + 0xae, 0x62, 0xcf, 0x76, 0x9b, 0xec, 0xe2, 0x15, 0x8b, 0x7c, 0x9f, 0x36, 0xf5, 0x42, 0x74, 0x11, + 0x26, 0x65, 0xe4, 0x36, 0x73, 0xfc, 0x9b, 0x61, 0x01, 0xe1, 0xbd, 0x66, 0x1f, 0xb2, 0x43, 0x45, + 0x42, 0xcc, 0x7f, 0x91, 0x5d, 0x4c, 0xb8, 0xe1, 0xd9, 0xa9, 0xa0, 0xf8, 0x49, 0x28, 0x3e, 0x35, + 0xe9, 0x3c, 0xa4, 0xd9, 0x7f, 0x4c, 0xfe, 0x0b, 0xcd, 0xd0, 0xeb, 0x23, 0x54, 0x1d, 0xa3, 0xd7, + 0x46, 0x3e, 0x80, 0x85, 0x24, 0xb9, 0x26, 0xcd, 0x62, 0x4e, 0x3b, 0x24, 0x69, 0xbf, 0x80, 0xf9, + 0x62, 0xb3, 0x19, 0x4e, 0x37, 0xd6, 0xab, 0xf2, 0x8e, 0xef, 0x50, 0x6e, 0x98, 0xdb, 0x12, 0x23, + 0x1b, 0x8e, 0x1d, 0x98, 0xf3, 0x95, 0xaf, 0x6d, 0x3f, 0xb0, 0x9d, 0x43, 0x65, 0x26, 0x98, 0xe7, + 0xb7, 0xf1, 0xf3, 0x84, 0x21, 0x40, 0xd4, 0x36, 0x9d, 0x37, 0x2b, 0x4f, 0x60, 0xbe, 0xa0, 0xb0, + 0x0d, 0x17, 0xee, 0x25, 0x9d, 0x6f, 0x08, 0x18, 0x2e, 0x36, 0x9e, 0x1a, 0xdf, 0x83, 0xf3, 0x6c, + 0xef, 0xec, 0xd5, 0x78, 0xde, 0x6c, 0xf5, 0x70, 0xc1, 0x78, 0x4f, 0xb8, 0xff, 0x7a, 0xb6, 0xcc, + 0x9c, 0xd2, 0xda, 0x42, 0xab, 0xfc, 0x8f, 0x19, 0x58, 0x8e, 0x90, 0xd6, 0x5e, 0x38, 0x0d, 0xb1, + 0x71, 0xdf, 0x88, 0x5e, 0xcf, 0xa1, 0x0a, 0x27, 0xf3, 0xaa, 0xdb, 0x4d, 0x79, 0x43, 0x07, 0xdd, + 0x06, 0x60, 0xc4, 0x8a, 0x9e, 0x48, 0xcf, 0x94, 0x78, 0xcc, 0x1e, 0xd5, 0x14, 0x15, 0x14, 0xd4, + 0x85, 0x24, 0xb9, 0xf3, 0x39, 0xd2, 0xef, 0xd0, 0x85, 0x66, 0xbc, 0xc2, 0x9c, 0xbc, 0x9e, 0x72, + 0xfa, 0x92, 0xc4, 0xdf, 0xf8, 0xdd, 0x61, 0x58, 0x52, 0x3b, 0xf0, 0x65, 0xbe, 0xb5, 0x0a, 0xd9, + 0xb2, 0xeb, 0x04, 0xf8, 0xeb, 0x40, 0xc9, 0x38, 0x84, 0x64, 0xa4, 0x8b, 0x84, 0x70, 0x9b, 0x86, + 0x15, 0xd4, 0x89, 0xc2, 0xac, 0xc5, 0x1e, 0x87, 0x88, 0xa8, 0x0c, 0xd3, 0xdb, 0xf8, 0x79, 0x4c, + 0x80, 0x34, 0xfe, 0xd9, 0xc1, 0xcf, 0xeb, 0x8a, 0x10, 0xd5, 0xa0, 0x54, 0x8d, 0x06, 0x3d, 0x86, + 0x19, 0x31, 0xb8, 0x34, 0x61, 0x2e, 0xab, 0xea, 0x8b, 0x3e, 0x9c, 0x59, 0x06, 0x1f, 0x52, 0x43, + 0x8a, 0x0c, 0x23, 0x1c, 0xc9, 0xa7, 0xb3, 0x1a, 0x59, 0x52, 0x1a, 0x5d, 0x3f, 0x52, 0x20, 0x5a, + 0x74, 0x79, 0x34, 0x19, 0x8d, 0xca, 0xc2, 0xa8, 0x42, 0x3e, 0xde, 0x1f, 0xbc, 0xb6, 0xb7, 0x61, + 0x8c, 0x95, 0x72, 0x7d, 0x53, 0x24, 0x93, 0x93, 0xd8, 0xcc, 0x81, 0xd4, 0xe4, 0xbb, 0x2a, 0x2b, + 0x33, 0xd6, 0xa9, 0x53, 0x52, 0xe2, 0x48, 0x8d, 0xff, 0x4e, 0xb4, 0x7b, 0x69, 0xe0, 0xbe, 0xe8, + 0x5e, 0x35, 0xce, 0x4b, 0x5c, 0x3b, 0x2b, 0x53, 0xbf, 0xae, 0xca, 0x89, 0x37, 0xec, 0x4d, 0x18, + 0xe7, 0x45, 0x91, 0x34, 0x77, 0xe1, 0xf4, 0x13, 0x08, 0xc6, 0x07, 0x70, 0x81, 0x3a, 0x99, 0x6d, + 0xe7, 0xb0, 0x85, 0xf7, 0x7c, 0xed, 0x72, 0x55, 0xbf, 0x69, 0xfd, 0x7d, 0x58, 0x4e, 0xa2, 0xed, + 0x3b, 0xb3, 0x59, 0xe2, 0xa9, 0xbf, 0x18, 0x82, 0x85, 0x0d, 0x5f, 0xd5, 0x5a, 0xb9, 0x24, 0x6e, + 0x25, 0x25, 0x50, 0xa2, 0x32, 0x59, 0x3f, 0x97, 0x94, 0x20, 0xe9, 0x6d, 0x25, 0x93, 0xc0, 0x50, + 0xaf, 0xcc, 0x48, 0x64, 0xdb, 0x92, 0xb9, 0x04, 0x6e, 0xc0, 0xc8, 0x36, 0x59, 0xaa, 0x87, 0x79, + 0xdf, 0x31, 0x0a, 0x52, 0x44, 0x6f, 0xf2, 0x93, 0x2d, 0x92, 0xfc, 0x40, 0xf7, 0x63, 0xf9, 0x02, + 0x46, 0xfa, 0x67, 0xfe, 0x59, 0x3f, 0x17, 0x4b, 0x1d, 0xf0, 0x2e, 0x64, 0x8b, 0xcd, 0x36, 0x0b, + 0x30, 0x76, 0x9d, 0xc8, 0xb4, 0x54, 0x20, 0xeb, 0xe7, 0x4c, 0x15, 0x11, 0x5d, 0x67, 0x77, 0x74, + 0xc6, 0x52, 0xb2, 0x21, 0x11, 0x1d, 0xb5, 0xd8, 0xe9, 0x94, 0x26, 0x60, 0x8c, 0xdd, 0x61, 0x37, + 0xbe, 0x80, 0x65, 0x1e, 0x24, 0xc6, 0x5c, 0xea, 0x34, 0x94, 0xcc, 0x0f, 0xe3, 0x00, 0x7b, 0x05, + 0x76, 0x5d, 0x06, 0xa0, 0x06, 0xe5, 0x86, 0xd3, 0xc4, 0x5f, 0xf3, 0x28, 0x55, 0xa5, 0xc4, 0x78, + 0x07, 0x26, 0xa5, 0x84, 0xa8, 0xd5, 0xa4, 0x6c, 0x76, 0x54, 0x5a, 0x0b, 0x5a, 0x82, 0x04, 0x91, + 0x15, 0xe1, 0x82, 0xf6, 0xed, 0x3c, 0x5f, 0x19, 0x33, 0xb3, 0x6c, 0x58, 0x8c, 0x0c, 0x82, 0x30, + 0x7d, 0x8e, 0x34, 0x74, 0x58, 0x18, 0xad, 0xfc, 0x1d, 0xb5, 0x83, 0x86, 0x06, 0xb2, 0x83, 0x8c, + 0x7f, 0x3a, 0x44, 0x2d, 0xf4, 0x98, 0x3c, 0x22, 0xce, 0x51, 0xd5, 0x41, 0x5b, 0x82, 0x49, 0xfa, + 0xf5, 0x6b, 0xe2, 0x52, 0x70, 0xef, 0x18, 0xa7, 0x89, 0x9f, 0x1f, 0x17, 0xce, 0xd1, 0xc0, 0xa6, + 0x90, 0x0c, 0x7d, 0x0c, 0xe3, 0x15, 0xa7, 0x49, 0x39, 0x0c, 0x9f, 0x82, 0x83, 0x20, 0x22, 0x7d, + 0x42, 0x9b, 0xbc, 0x4b, 0xa6, 0x30, 0xf3, 0xa9, 0x99, 0x4a, 0x49, 0xe8, 0x2a, 0x18, 0x4d, 0x73, + 0x15, 0x8c, 0x45, 0x5c, 0x05, 0x06, 0x8c, 0xee, 0x78, 0x4d, 0x9e, 0x95, 0x6c, 0x66, 0x75, 0x8a, + 0x0b, 0x8e, 0x96, 0x99, 0x0c, 0xc4, 0xf4, 0x35, 0xcb, 0x6b, 0x1c, 0x71, 0xad, 0x87, 0xff, 0x32, + 0xfe, 0x73, 0x06, 0x96, 0x1e, 0xe0, 0x20, 0x71, 0x6c, 0x69, 0xd2, 0xca, 0xbc, 0xb2, 0xb4, 0x86, + 0x5e, 0x46, 0x5a, 0x52, 0x1a, 0xc3, 0x69, 0xd2, 0x18, 0x49, 0x93, 0xc6, 0x68, 0xaa, 0x34, 0x8c, + 0x07, 0x30, 0xc6, 0x3e, 0x15, 0x5d, 0x83, 0xd1, 0x8d, 0x00, 0xb7, 0x43, 0x37, 0x89, 0x1a, 0xb9, + 0x69, 0x32, 0x18, 0x51, 0x30, 0x37, 0x2d, 0x5f, 0x75, 0x93, 0xf0, 0x9f, 0xc6, 0x8f, 0x68, 0x8a, + 0x85, 0x4d, 0xb7, 0xf1, 0x54, 0x71, 0xcf, 0x8f, 0xb3, 0x99, 0x1b, 0x3d, 0xea, 0x21, 0x58, 0x0c, + 0x62, 0x0a, 0x0c, 0x74, 0x05, 0xb2, 0x1b, 0xce, 0x7d, 0xd7, 0x6b, 0xe0, 0x1d, 0xa7, 0xc5, 0xb8, + 0x4f, 0x98, 0x6a, 0x11, 0x77, 0x43, 0xf1, 0x1a, 0x42, 0xdf, 0x0e, 0x2d, 0x88, 0xf8, 0x76, 0x48, + 0xd9, 0xfe, 0xaa, 0xc9, 0x60, 0xc6, 0x0b, 0xe6, 0x86, 0xd2, 0xda, 0xf6, 0x2a, 0x91, 0x49, 0x6f, + 0x44, 0x12, 0x0f, 0xa8, 0x9f, 0x15, 0xc9, 0x39, 0xf0, 0x23, 0xe6, 0x90, 0x8a, 0x35, 0xba, 0xd5, + 0xa3, 0xd1, 0x14, 0x36, 0xf0, 0xd9, 0x17, 0x73, 0xe1, 0x11, 0xda, 0x5e, 0x3e, 0x1f, 0xe9, 0x1c, + 0xea, 0x87, 0xf8, 0x18, 0x2e, 0x98, 0xb8, 0xd3, 0xb2, 0x88, 0x22, 0xdb, 0x76, 0x19, 0xbe, 0x14, + 0xda, 0x95, 0x84, 0x3b, 0xc2, 0x7a, 0xf4, 0x91, 0xec, 0x8f, 0xa1, 0x1e, 0xfd, 0xb1, 0x06, 0xb3, + 0x3c, 0x0c, 0x4e, 0xf5, 0x0a, 0xb6, 0x54, 0xaf, 0x20, 0xfd, 0x41, 0x3a, 0x89, 0xdd, 0x8a, 0x7f, + 0x1a, 0xba, 0x05, 0x7d, 0x3e, 0xba, 0x8d, 0x3a, 0xeb, 0x55, 0xc6, 0x85, 0x4b, 0xf6, 0x0e, 0x4c, + 0x59, 0x61, 0x0c, 0xaa, 0x10, 0xf0, 0x54, 0x18, 0x5d, 0xbb, 0x7f, 0xcf, 0xd4, 0x30, 0xd0, 0x05, + 0x98, 0xa0, 0x62, 0x0e, 0x6b, 0x18, 0x77, 0xb8, 0xe3, 0x8f, 0x9f, 0x8a, 0x8a, 0x7d, 0xf5, 0x4c, + 0x4e, 0x45, 0x3b, 0xec, 0x54, 0x54, 0xe1, 0x29, 0x43, 0xd7, 0x26, 0x45, 0x82, 0xa0, 0xe8, 0x6c, + 0x11, 0xc8, 0xfb, 0xf7, 0xcc, 0x10, 0x67, 0xe0, 0xf1, 0xd1, 0x86, 0xab, 0x0f, 0x70, 0xa0, 0x6f, + 0xd9, 0xe1, 0x31, 0x12, 0xaf, 0x7d, 0x1d, 0x26, 0x7c, 0xfd, 0x08, 0x4c, 0x5c, 0x30, 0x4e, 0x24, + 0xdc, 0xbf, 0x27, 0x0e, 0xb9, 0x39, 0x1f, 0xf9, 0x97, 0xf1, 0x09, 0x14, 0xd2, 0xaa, 0x1b, 0x2c, + 0x60, 0xdf, 0x86, 0x2b, 0xe9, 0x0c, 0x78, 0x73, 0x2b, 0x20, 0x8e, 0xcb, 0xf8, 0x62, 0xdc, 0xaf, + 0xb5, 0xfa, 0x09, 0x1b, 0xff, 0xc3, 0x28, 0x89, 0xd0, 0xe5, 0x57, 0x68, 0xee, 0xdf, 0x1d, 0x66, + 0x01, 0x90, 0x3a, 0x8b, 0x57, 0x18, 0xd7, 0xa8, 0x02, 0x63, 0x2d, 0xeb, 0x31, 0x6e, 0xf9, 0xf9, + 0x61, 0xda, 0x13, 0xdf, 0xe5, 0xcb, 0x76, 0x7a, 0x2d, 0x2c, 0x43, 0x06, 0xbf, 0x3e, 0xc5, 0x89, + 0xd1, 0x5d, 0x58, 0xe8, 0x78, 0xb8, 0x29, 0xce, 0x74, 0x3a, 0x1e, 0x8f, 0x87, 0x60, 0x9b, 0xc4, + 0xbc, 0x84, 0x55, 0x24, 0x08, 0xbd, 0x0e, 0xb3, 0x3e, 0xdd, 0x0b, 0x49, 0xbb, 0x9e, 0xbb, 0x5e, + 0x93, 0xa7, 0xa3, 0x32, 0x67, 0x58, 0xf1, 0x23, 0x5e, 0x8a, 0x7e, 0x0d, 0xce, 0x47, 0xf2, 0x49, + 0xd5, 0xf9, 0x82, 0x38, 0xc6, 0x3d, 0x34, 0x49, 0xdd, 0xc1, 0x96, 0xc6, 0xd2, 0x4d, 0x1e, 0x2e, + 0x7d, 0x25, 0x99, 0x85, 0x7a, 0x3f, 0xea, 0x79, 0x02, 0xfd, 0xf2, 0xfb, 0x90, 0x55, 0xbe, 0x37, + 0x21, 0xb2, 0x79, 0x41, 0x8d, 0x6c, 0x9e, 0x54, 0x23, 0x98, 0xdb, 0x2c, 0x7c, 0x34, 0x26, 0x45, + 0x99, 0xe7, 0x61, 0x82, 0xb7, 0x45, 0xcc, 0x82, 0xa5, 0xc4, 0x0f, 0xd9, 0xbf, 0x67, 0x4a, 0xc4, + 0x5e, 0x0b, 0x48, 0x9d, 0x46, 0x59, 0xa5, 0xd5, 0x56, 0x84, 0x89, 0xb5, 0xc1, 0x6a, 0x63, 0x93, + 0x4d, 0xd4, 0x68, 0x4a, 0x32, 0xe3, 0x47, 0xe2, 0xc4, 0x5e, 0xa7, 0x18, 0x2c, 0x33, 0xc7, 0x20, + 0x47, 0xf4, 0xc6, 0x3f, 0xce, 0xc0, 0x05, 0x9d, 0xb9, 0x7a, 0x14, 0x9b, 0x53, 0x8e, 0x62, 0xd9, + 0x09, 0xec, 0x6b, 0xfa, 0xd1, 0x20, 0xe3, 0x3c, 0x14, 0x3d, 0x0a, 0xbc, 0xac, 0x1e, 0xba, 0x4e, + 0xc5, 0x4f, 0x5b, 0x2f, 0xaa, 0x47, 0x85, 0xdc, 0xf9, 0x25, 0x0b, 0xd0, 0x5b, 0x30, 0xc7, 0x2f, + 0x47, 0xfa, 0xbc, 0x69, 0xe5, 0x22, 0xbb, 0x97, 0x6f, 0xc6, 0x01, 0xc6, 0x1d, 0x58, 0x4e, 0xfa, + 0x00, 0xc5, 0xad, 0x25, 0x4f, 0xfd, 0xb8, 0xf9, 0xb6, 0x06, 0x97, 0x45, 0x9a, 0x53, 0xd7, 0x0d, + 0xfc, 0xc0, 0xb3, 0x3a, 0xb5, 0x86, 0x67, 0x77, 0x42, 0x2a, 0x03, 0xc6, 0x58, 0x09, 0x17, 0x2d, + 0x0b, 0xa7, 0x60, 0x38, 0x1c, 0x62, 0xfc, 0x66, 0x06, 0x0c, 0x2d, 0x56, 0x99, 0x2e, 0x2a, 0x55, + 0xcf, 0x7d, 0x66, 0x37, 0x95, 0x10, 0x86, 0x37, 0xb4, 0xe3, 0x30, 0x96, 0x30, 0x20, 0x7a, 0x9b, + 0x8a, 0xab, 0x7a, 0x77, 0x22, 0x47, 0x54, 0xcc, 0x8e, 0x16, 0x83, 0x4f, 0xb5, 0xa3, 0xc5, 0xd1, + 0xd5, 0x7f, 0xcb, 0xc0, 0xb5, 0x9e, 0x6d, 0xe0, 0xdf, 0xf3, 0x18, 0x72, 0x51, 0x18, 0x1f, 0x92, + 0x05, 0x25, 0x76, 0x31, 0xce, 0x61, 0xff, 0x2e, 0xbb, 0xb2, 0x25, 0x62, 0x7c, 0x3b, 0x92, 0x73, + 0x8c, 0xdf, 0xe9, 0x5b, 0x4f, 0x33, 0x9d, 0xb9, 0x81, 0xd5, 0x2a, 0x53, 0x7f, 0xe6, 0x70, 0x78, + 0xfd, 0x2e, 0x20, 0xa5, 0xf5, 0x68, 0x42, 0x35, 0x05, 0xd9, 0xf8, 0x01, 0xdd, 0x44, 0x92, 0x1b, + 0x3d, 0xd8, 0xba, 0x5e, 0x86, 0x6b, 0x91, 0xf8, 0xb9, 0x97, 0x60, 0x12, 0xb0, 0xdd, 0x7e, 0xcf, + 0xc7, 0xde, 0x03, 0xcf, 0xed, 0x76, 0xbe, 0x9d, 0x5e, 0xff, 0xd3, 0x0c, 0xbb, 0xd0, 0xa0, 0x56, + 0xcb, 0x3b, 0xba, 0x0c, 0x10, 0x96, 0x26, 0x24, 0xb2, 0xa1, 0x80, 0xfd, 0xbb, 0xcc, 0x83, 0x48, + 0x4f, 0x9a, 0x0f, 0x19, 0x03, 0x85, 0xec, 0xdb, 0xed, 0xc9, 0x7b, 0x34, 0x68, 0x4e, 0xd6, 0x3e, + 0x98, 0xdc, 0xdf, 0x15, 0xee, 0xdc, 0x53, 0xd2, 0x1d, 0xc1, 0x02, 0x59, 0x01, 0x8a, 0xe2, 0x26, + 0x8d, 0xa0, 0xaa, 0xf2, 0x24, 0x46, 0x8c, 0xea, 0xfb, 0xbf, 0x3c, 0x2e, 0xbc, 0x77, 0x9a, 0x84, + 0xf2, 0x82, 0xe7, 0xae, 0x4c, 0x7c, 0x64, 0x2c, 0xc1, 0x70, 0xd9, 0xdc, 0xa4, 0x0b, 0xa8, 0xb9, + 0x29, 0x17, 0x50, 0x73, 0xd3, 0xf8, 0x4f, 0x43, 0x50, 0x60, 0x29, 0xe6, 0x68, 0xac, 0x65, 0xe8, + 0x84, 0x55, 0x82, 0x37, 0x07, 0xf5, 0x97, 0x46, 0x52, 0xc8, 0x0d, 0x0d, 0x92, 0x42, 0xee, 0xd7, + 0x20, 0xc5, 0x03, 0x3f, 0x80, 0x53, 0xf3, 0xf5, 0x93, 0xe3, 0xc2, 0xb5, 0xd0, 0xa9, 0xc9, 0xa0, + 0x49, 0xde, 0xcd, 0x94, 0x2a, 0xe2, 0xee, 0xd8, 0x91, 0x97, 0x70, 0xc7, 0xde, 0x81, 0x71, 0xea, + 0x9b, 0xd9, 0xa8, 0xf2, 0xdb, 0x0f, 0x74, 0x78, 0xd2, 0x5c, 0x96, 0x75, 0x5b, 0xcd, 0x4b, 0x2d, + 0xd0, 0x8c, 0x3f, 0x1c, 0x82, 0x2b, 0xe9, 0x32, 0xe7, 0x6d, 0x5b, 0x03, 0x08, 0xa3, 0x3c, 0x7b, + 0x45, 0x95, 0xd2, 0xb9, 0xf3, 0x1c, 0x3f, 0x96, 0x51, 0xdd, 0x0a, 0x1d, 0x51, 0xb4, 0x45, 0x1a, + 0x94, 0xc8, 0x11, 0xbb, 0x96, 0x1d, 0x85, 0x3f, 0x93, 0xc0, 0x8b, 0xb4, 0x67, 0x12, 0x78, 0x19, + 0x7a, 0x0c, 0x4b, 0x55, 0xcf, 0x7e, 0x66, 0x05, 0xf8, 0x11, 0x7e, 0xc1, 0xee, 0xd5, 0x56, 0xf8, + 0x65, 0x5a, 0x96, 0xdb, 0xe6, 0xe6, 0xc9, 0x71, 0xe1, 0xb5, 0x0e, 0x43, 0xa1, 0x29, 0x7a, 0x59, + 0x62, 0x86, 0x7a, 0xfc, 0x7e, 0x6d, 0x1a, 0x23, 0xe3, 0x5f, 0x64, 0x60, 0x85, 0x7a, 0x13, 0xf8, + 0x29, 0x92, 0xa8, 0xfc, 0xa5, 0x2e, 0x17, 0xa8, 0x1f, 0xc8, 0xc7, 0x22, 0xbd, 0x5c, 0xa0, 0xa5, + 0x89, 0x31, 0x35, 0x34, 0xb4, 0x01, 0x59, 0xfe, 0x9b, 0xce, 0xbf, 0x61, 0xea, 0xc7, 0x58, 0x8c, + 0x66, 0xde, 0x62, 0x9e, 0x6f, 0x3a, 0xb0, 0x39, 0x33, 0x7a, 0x31, 0xce, 0x54, 0x69, 0x8d, 0x5f, + 0x0c, 0xc1, 0xc5, 0x7d, 0xec, 0xd9, 0x4f, 0x5e, 0xa4, 0x7c, 0xcc, 0x0e, 0x2c, 0x88, 0x22, 0x96, + 0x6a, 0x4d, 0x9b, 0x62, 0x2c, 0xb1, 0xba, 0x68, 0x2a, 0xcf, 0xd5, 0x26, 0x66, 0x5c, 0x22, 0xe1, + 0x29, 0xae, 0x0d, 0xbc, 0x0d, 0x13, 0x91, 0x44, 0x8f, 0xb4, 0xff, 0xc5, 0x0c, 0x0d, 0xbb, 0x6a, + 0xfd, 0x9c, 0x29, 0x31, 0xd1, 0xcf, 0xd2, 0x03, 0x0e, 0xb8, 0x27, 0xb7, 0xdf, 0x71, 0x0e, 0x9d, + 0xb0, 0x64, 0xb2, 0x5a, 0x0a, 0x34, 0x61, 0xc2, 0xae, 0x9f, 0x33, 0xd3, 0x6a, 0x2a, 0x65, 0x61, + 0xb2, 0x48, 0x63, 0x39, 0x3c, 0xdc, 0x34, 0xfe, 0xeb, 0x10, 0x5c, 0x16, 0x77, 0x64, 0x53, 0xc4, + 0xfc, 0x19, 0x2c, 0x89, 0xa2, 0x62, 0x87, 0x28, 0x0c, 0xb8, 0xa9, 0x4b, 0x9a, 0x3d, 0x6e, 0x20, + 0x24, 0x6d, 0x71, 0x9c, 0x50, 0xd8, 0x69, 0xe4, 0x67, 0x73, 0x98, 0xf3, 0x71, 0x52, 0xda, 0x4d, + 0x7a, 0xa8, 0xa2, 0xae, 0x99, 0x9a, 0x68, 0xb4, 0xf5, 0xb3, 0x19, 0x3b, 0x0c, 0x1a, 0x79, 0xd5, + 0xc3, 0xa0, 0xf5, 0x73, 0xd1, 0xe3, 0xa0, 0xd2, 0x0c, 0x4c, 0x6d, 0xe3, 0xe7, 0xa1, 0xdc, 0xff, + 0xf7, 0x4c, 0x24, 0x0f, 0x13, 0xd1, 0x30, 0x58, 0x42, 0xa6, 0x4c, 0x98, 0xbd, 0x90, 0xe6, 0x61, + 0x52, 0x35, 0x0c, 0x86, 0xba, 0x01, 0xe3, 0x2c, 0xc0, 0xa9, 0x39, 0x80, 0x63, 0x52, 0x5e, 0x76, + 0x65, 0x19, 0x08, 0x9a, 0xcc, 0x47, 0xc9, 0xe9, 0x8d, 0x47, 0x70, 0x95, 0xdf, 0x73, 0xd2, 0x3b, + 0x9f, 0x56, 0x74, 0xca, 0xed, 0xcb, 0xb0, 0xe0, 0xf2, 0x03, 0x1c, 0x5d, 0x7a, 0xb4, 0xcb, 0xc0, + 0x9f, 0xc0, 0xac, 0x56, 0x2e, 0x39, 0x52, 0xad, 0x54, 0x8e, 0x21, 0xc9, 0x3a, 0x8a, 0x6d, 0x5c, + 0x49, 0xaa, 0x42, 0x6d, 0xac, 0x81, 0xe9, 0x2b, 0x05, 0x9e, 0x92, 0xcb, 0xf6, 0x14, 0xab, 0xde, + 0x4d, 0x65, 0x5e, 0xb3, 0x15, 0x8f, 0xe5, 0x99, 0x16, 0x3b, 0xaf, 0x84, 0x1a, 0xd3, 0xda, 0xd1, + 0xa6, 0x31, 0x03, 0x53, 0x02, 0xd4, 0xc2, 0xbe, 0x6f, 0x1c, 0x8f, 0x83, 0xc1, 0x05, 0x9b, 0x14, + 0xb5, 0x25, 0xe4, 0xf1, 0x38, 0xd6, 0x58, 0xbe, 0x51, 0x9d, 0x57, 0x93, 0xf0, 0x87, 0x50, 0x36, + 0xf2, 0xa8, 0x9e, 0x97, 0x98, 0xd7, 0x77, 0xfd, 0x9c, 0x19, 0xfb, 0xfa, 0x2f, 0x53, 0x96, 0x49, + 0x36, 0xd9, 0xae, 0x9f, 0x1c, 0x17, 0xae, 0xa6, 0x2c, 0x93, 0x1a, 0xdf, 0xe4, 0x25, 0xd3, 0xd4, + 0x4f, 0x78, 0x87, 0x5f, 0xe6, 0x84, 0x97, 0xcc, 0x48, 0xf5, 0x8c, 0x77, 0x4f, 0x97, 0x25, 0x9f, + 0x8f, 0x22, 0x06, 0x4b, 0x05, 0xf1, 0x74, 0x48, 0x4a, 0x89, 0xc6, 0x55, 0x63, 0x83, 0x6c, 0xc8, + 0x29, 0x47, 0x30, 0xe5, 0x23, 0xdc, 0x78, 0xca, 0x8f, 0xbe, 0x44, 0x7c, 0x4a, 0xd2, 0x11, 0x20, + 0x7b, 0x28, 0x85, 0xcd, 0x73, 0x06, 0xa8, 0x37, 0x08, 0xa9, 0x9a, 0xce, 0x29, 0xca, 0x16, 0xfd, + 0x04, 0xe6, 0x65, 0x57, 0x47, 0xc2, 0x7c, 0xb3, 0xab, 0xaf, 0x85, 0xb9, 0xfb, 0xdb, 0x4f, 0xac, + 0x5b, 0xcf, 0xee, 0xde, 0x4a, 0xc0, 0x65, 0x59, 0x82, 0x1a, 0x02, 0xa0, 0xc4, 0xf8, 0xaa, 0xe7, + 0xf6, 0x09, 0x84, 0xe8, 0x73, 0x58, 0xa8, 0xd5, 0x76, 0xd8, 0x85, 0x46, 0x53, 0xc4, 0x5b, 0x99, + 0x9b, 0x3c, 0xe8, 0x97, 0x76, 0xb7, 0xef, 0xbb, 0x75, 0x7e, 0x11, 0x52, 0x8d, 0xd2, 0x52, 0x1d, + 0x39, 0x49, 0x2c, 0xd0, 0x27, 0x30, 0x45, 0xf3, 0x30, 0x16, 0x9b, 0x4d, 0x8f, 0x74, 0xcc, 0x44, + 0xb8, 0xd1, 0xb2, 0x94, 0x8d, 0x16, 0x03, 0xa8, 0x2f, 0x32, 0xa8, 0x04, 0xe8, 0x09, 0xe4, 0xc3, + 0x58, 0xaa, 0xdd, 0xda, 0xba, 0xda, 0x3e, 0x76, 0xd5, 0xf3, 0xcd, 0x93, 0xe3, 0xc2, 0x8d, 0xc7, + 0x0c, 0x87, 0xae, 0xae, 0x81, 0x7f, 0x94, 0xd6, 0xc8, 0x54, 0x5e, 0x68, 0x5f, 0x0d, 0xf5, 0x92, + 0x99, 0x57, 0xf9, 0x4d, 0x51, 0x9a, 0x10, 0x45, 0xad, 0x22, 0x0c, 0xe4, 0x52, 0x65, 0x9b, 0xc0, + 0x40, 0x8d, 0x7c, 0xfa, 0x7d, 0x79, 0x61, 0x91, 0xe8, 0x62, 0x76, 0x0b, 0x73, 0xf7, 0xad, 0x98, + 0xd9, 0x29, 0x51, 0x1b, 0x99, 0x6f, 0x38, 0x6a, 0xe3, 0xef, 0x0f, 0x89, 0x6b, 0x9a, 0xf1, 0xc0, + 0x99, 0x53, 0x07, 0x6f, 0x24, 0x7e, 0xc1, 0x40, 0x8a, 0x4a, 0x62, 0xe3, 0x50, 0x49, 0x84, 0xbe, + 0xc8, 0x04, 0xb3, 0x33, 0xf2, 0x18, 0x39, 0x04, 0x68, 0xd1, 0x30, 0x54, 0x2d, 0x54, 0xa8, 0xa2, + 0x71, 0x15, 0xc3, 0xaf, 0x1e, 0x57, 0xf1, 0x53, 0x58, 0x14, 0xf7, 0xa3, 0xcb, 0xd8, 0x09, 0xb0, + 0x27, 0x22, 0xb0, 0x66, 0xc2, 0x44, 0xbd, 0x34, 0x25, 0x73, 0x0e, 0x86, 0x8b, 0xe6, 0x36, 0xf7, + 0x19, 0x92, 0x3f, 0xd1, 0x15, 0x3d, 0x4a, 0x9c, 0x5d, 0x7c, 0xd7, 0x62, 0xc2, 0xaf, 0x90, 0xe6, + 0x32, 0x47, 0x53, 0xe8, 0xcb, 0x55, 0x8b, 0x8c, 0x32, 0xac, 0xe8, 0xd5, 0x57, 0xb1, 0xd7, 0xb6, + 0xa9, 0xf1, 0x51, 0xc3, 0x81, 0xa8, 0x34, 0x13, 0x56, 0x8a, 0xd4, 0x5b, 0x49, 0xdc, 0x0e, 0xfe, + 0xab, 0x21, 0x28, 0x24, 0x7e, 0x44, 0xd1, 0xf7, 0xed, 0x43, 0x87, 0xe6, 0xf7, 0xba, 0x08, 0x23, + 0x8f, 0x6c, 0xa7, 0xa9, 0x5a, 0xd2, 0x4f, 0x6d, 0xa7, 0x69, 0xd2, 0x52, 0x62, 0x84, 0xd5, 0xba, + 0x8f, 0x29, 0x82, 0xe2, 0x23, 0xf0, 0xbb, 0x8f, 0xeb, 0x04, 0x49, 0x35, 0xc2, 0x38, 0x1a, 0xba, + 0x0e, 0xe3, 0x22, 0x8b, 0xec, 0x70, 0xe8, 0x8f, 0x14, 0xe9, 0x63, 0x05, 0x0c, 0x7d, 0x04, 0x13, + 0x5b, 0x38, 0xb0, 0x9a, 0x56, 0x60, 0xf1, 0xb1, 0x23, 0x9e, 0x98, 0x13, 0xc5, 0xa5, 0x1c, 0x57, + 0x51, 0x26, 0xda, 0xbc, 0xc4, 0x94, 0x24, 0x54, 0x80, 0xb6, 0xdf, 0x69, 0x59, 0x2f, 0xe4, 0x8d, + 0x0c, 0x22, 0xc0, 0xb0, 0x08, 0xbd, 0xab, 0x87, 0xd0, 0x85, 0xe1, 0x10, 0x89, 0x02, 0x09, 0x03, + 0xec, 0xd6, 0x69, 0x58, 0x5f, 0x28, 0x6a, 0x9e, 0x01, 0xda, 0x48, 0xa4, 0xd6, 0x30, 0x4d, 0x9d, + 0xd0, 0xa8, 0x31, 0xaf, 0xd1, 0x86, 0xe3, 0x07, 0x64, 0xae, 0x79, 0x67, 0x72, 0xf0, 0xc4, 0x93, + 0x9f, 0xab, 0x4c, 0xc3, 0xe4, 0xe7, 0xb6, 0x2c, 0x8d, 0xf8, 0x84, 0x24, 0xfa, 0xfe, 0x5d, 0x53, + 0xc1, 0x1a, 0xf8, 0xf0, 0xe9, 0x1f, 0x01, 0xcc, 0x55, 0xad, 0x43, 0xdb, 0x21, 0xda, 0xa1, 0x89, + 0x7d, 0xb7, 0xeb, 0x35, 0x30, 0x2a, 0xc2, 0x8c, 0x7e, 0xa1, 0xab, 0xcf, 0x75, 0x35, 0xa2, 0x00, + 0xeb, 0x65, 0x68, 0x15, 0x26, 0x65, 0xae, 0x1c, 0xae, 0xb5, 0x26, 0xe4, 0xd0, 0x59, 0x3f, 0x67, + 0x86, 0x68, 0xe8, 0x7d, 0x2d, 0x2e, 0x66, 0x56, 0xa6, 0x7d, 0xa2, 0xb8, 0xab, 0xec, 0xc6, 0x8d, + 0xa3, 0xa5, 0x7e, 0x93, 0xa1, 0x32, 0x3f, 0x8a, 0x85, 0xca, 0x8c, 0x6a, 0x2d, 0x8e, 0x79, 0xec, + 0xa9, 0xd1, 0x91, 0xfa, 0x24, 0x56, 0x42, 0x10, 0xcd, 0x17, 0x90, 0x7d, 0xd4, 0x7d, 0x8c, 0x45, + 0x50, 0x90, 0x88, 0x44, 0x8f, 0x5e, 0x53, 0xe4, 0xf0, 0xfd, 0x7b, 0x6c, 0x41, 0x7a, 0xda, 0x7d, + 0x8c, 0xe3, 0x6f, 0xad, 0x11, 0x0d, 0x48, 0x61, 0x86, 0x8e, 0x20, 0x17, 0xbd, 0x51, 0xc8, 0x47, + 0x67, 0x8f, 0x7b, 0x90, 0x34, 0xa3, 0xa2, 0xf2, 0xa2, 0x1b, 0xbb, 0xe7, 0xa4, 0x55, 0x12, 0xe3, + 0x8a, 0x7e, 0x0a, 0x8b, 0x89, 0x67, 0x69, 0x32, 0xa7, 0x43, 0xef, 0x63, 0x3a, 0xaa, 0x4e, 0x44, + 0x8f, 0x85, 0xb8, 0x73, 0x59, 0xab, 0x39, 0xb9, 0x16, 0xd4, 0x84, 0xd9, 0xc8, 0x4d, 0x39, 0xfe, + 0x0c, 0x65, 0xfa, 0xdd, 0x3b, 0xaa, 0x01, 0x8b, 0x53, 0xd5, 0xc4, 0xba, 0xa2, 0x2c, 0xd1, 0x26, + 0x4c, 0x4a, 0xbf, 0x22, 0x4f, 0x9f, 0x9c, 0xe4, 0x43, 0xcd, 0x9f, 0x1c, 0x17, 0x16, 0x42, 0x1f, + 0xaa, 0xc6, 0x33, 0x64, 0x80, 0x7e, 0x2b, 0x03, 0xe7, 0x93, 0x7d, 0xcc, 0xf9, 0x29, 0xca, 0xbb, + 0xaf, 0x0b, 0x9e, 0x5a, 0xf1, 0x34, 0x8f, 0x80, 0xdd, 0x0c, 0xf3, 0x6d, 0x08, 0x5f, 0xbc, 0x56, + 0x6f, 0x4a, 0x4d, 0xe8, 0x0e, 0xc0, 0xa1, 0x1d, 0xf0, 0x3e, 0xa6, 0xf9, 0x78, 0xe3, 0x13, 0x84, + 0x34, 0xfb, 0xd0, 0x0e, 0x78, 0x4f, 0xff, 0xad, 0x4c, 0xdf, 0x2d, 0x82, 0xa6, 0xe9, 0xcd, 0xae, + 0xde, 0xe8, 0xb5, 0x7e, 0x86, 0xd8, 0xa5, 0x3b, 0x27, 0xc7, 0x85, 0xb7, 0x64, 0xae, 0xd7, 0x06, + 0xc5, 0x12, 0x59, 0x43, 0xea, 0x96, 0xc4, 0xd3, 0xbe, 0xa7, 0xef, 0x2e, 0xf5, 0x16, 0x8c, 0x51, + 0x2f, 0x9f, 0x9f, 0x9f, 0xa6, 0x76, 0x30, 0xcd, 0x50, 0x4a, 0x7d, 0x81, 0xaa, 0x5a, 0xc9, 0x71, + 0xd0, 0x3a, 0xb1, 0x27, 0xa9, 0xe6, 0x2d, 0xd6, 0x5c, 0x9e, 0xcf, 0x98, 0xfb, 0x24, 0x18, 0x48, + 0x68, 0x78, 0xda, 0x9b, 0x83, 0x3a, 0x59, 0x09, 0x60, 0xc2, 0xe3, 0xcb, 0xdd, 0xc3, 0x91, 0x89, + 0x91, 0xdc, 0x28, 0xcb, 0xbe, 0xc8, 0xe6, 0xa5, 0x38, 0x60, 0xbe, 0x2a, 0xd7, 0xa6, 0x1d, 0x2f, + 0xb9, 0x63, 0x8c, 0xdf, 0x99, 0x60, 0x47, 0x96, 0x7b, 0x8e, 0xfd, 0xc4, 0x0e, 0x97, 0x50, 0xf5, + 0x20, 0x21, 0x7c, 0xf5, 0x97, 0x9b, 0xf9, 0x29, 0xef, 0xfb, 0xca, 0x33, 0x87, 0xa1, 0xbe, 0x67, + 0x0e, 0xf7, 0x94, 0xa0, 0x22, 0xe5, 0xd9, 0x07, 0x79, 0x66, 0xad, 0x3a, 0x24, 0x65, 0xb4, 0xd1, + 0x57, 0x30, 0xc6, 0xce, 0x65, 0x69, 0x24, 0x57, 0x76, 0xf5, 0x96, 0x72, 0x6e, 0x9d, 0xd2, 0x7c, + 0xf5, 0xe0, 0x9a, 0x77, 0x0d, 0x2d, 0xd0, 0xba, 0x86, 0x1d, 0x67, 0xef, 0xc2, 0x7c, 0x35, 0x7e, + 0x64, 0xcd, 0x3d, 0xbc, 0xd4, 0xba, 0x49, 0x3a, 0xed, 0x56, 0xf5, 0xdb, 0x04, 0x72, 0x54, 0x81, + 0x99, 0x9a, 0x76, 0xb4, 0xad, 0x3e, 0x8c, 0x19, 0x39, 0x0b, 0x57, 0xa3, 0x73, 0x75, 0x22, 0xf4, + 0x03, 0x18, 0xab, 0xb9, 0x5e, 0x50, 0x7a, 0xc1, 0x97, 0x55, 0x11, 0xf6, 0xc2, 0x0a, 0x4b, 0x17, + 0xc4, 0xe3, 0xa0, 0xbe, 0xeb, 0x05, 0xf5, 0xc7, 0x5a, 0x6e, 0x5c, 0x86, 0x82, 0x5e, 0xc0, 0x42, + 0xd2, 0x61, 0x39, 0x5f, 0x37, 0xcf, 0xea, 0x3c, 0x3d, 0x89, 0x1e, 0x6d, 0xd1, 0x57, 0x52, 0xd9, + 0x17, 0x15, 0x7d, 0x76, 0x53, 0x6e, 0x32, 0xcc, 0xbe, 0xdc, 0xa5, 0xcb, 0x22, 0x95, 0x84, 0xe5, + 0x47, 0x9f, 0xd6, 0x35, 0x63, 0xa4, 0xa8, 0x0a, 0x73, 0x7b, 0x3e, 0xae, 0x7a, 0xf8, 0x99, 0x8d, + 0x9f, 0x0b, 0x7e, 0x10, 0xa6, 0xaa, 0x25, 0xfc, 0x3a, 0x0c, 0x9a, 0xc4, 0x30, 0x4e, 0x8c, 0xde, + 0x07, 0xa8, 0xda, 0x8e, 0x83, 0x9b, 0x34, 0x30, 0x2c, 0x4b, 0x59, 0xd1, 0xd3, 0xa3, 0x0e, 0x2d, + 0xad, 0xbb, 0x4e, 0x4b, 0x15, 0xa9, 0x82, 0x8c, 0x4a, 0x30, 0xbd, 0xe1, 0x34, 0x5a, 0x5d, 0x1e, + 0xd8, 0xe9, 0xd3, 0x25, 0x95, 0xa7, 0xd0, 0xb6, 0x19, 0xa0, 0x1e, 0x5b, 0x0d, 0x74, 0x12, 0xf4, + 0x08, 0x10, 0x2f, 0x30, 0xc3, 0x67, 0xc7, 0xf9, 0xba, 0x40, 0x8d, 0x55, 0xc1, 0x88, 0x0e, 0x77, + 0x2d, 0x33, 0x75, 0x8c, 0xec, 0x55, 0x82, 0x17, 0xfe, 0xff, 0x0c, 0x5c, 0x4c, 0x9e, 0x4b, 0x5c, + 0x91, 0xdb, 0x81, 0x49, 0x59, 0x28, 0x2f, 0xb2, 0x0b, 0x2f, 0x47, 0x44, 0x07, 0x63, 0x13, 0x5a, + 0x2c, 0x51, 0xea, 0xd7, 0x87, 0x3c, 0x5e, 0xe2, 0xe8, 0xf1, 0xb7, 0x27, 0x58, 0xcc, 0x54, 0x6c, + 0x9d, 0xfa, 0x84, 0x66, 0x61, 0xa4, 0x65, 0xca, 0x49, 0x1a, 0x77, 0xaa, 0xb3, 0xf2, 0x68, 0x06, + 0x64, 0x8d, 0x00, 0xbd, 0xa3, 0x46, 0xb3, 0x0e, 0x29, 0xaf, 0xb8, 0x8a, 0x42, 0xf5, 0x13, 0xc2, + 0x30, 0xd7, 0x37, 0xb4, 0xa0, 0xc9, 0x81, 0x17, 0xbd, 0x91, 0x41, 0x17, 0xbd, 0x3d, 0xb9, 0xe8, + 0xb1, 0xec, 0x7e, 0xaf, 0x2b, 0x8b, 0xde, 0xd9, 0xaf, 0x76, 0x63, 0x67, 0xbd, 0xda, 0x8d, 0xbf, + 0xda, 0x6a, 0x37, 0xf1, 0x92, 0xab, 0xdd, 0x7d, 0x98, 0xd9, 0xc6, 0xb8, 0xa9, 0x9c, 0x09, 0x4f, + 0x86, 0xdb, 0xac, 0x83, 0xa9, 0xb7, 0x3f, 0xe9, 0x60, 0x38, 0x42, 0x95, 0xba, 0x6a, 0xc2, 0xdf, + 0xcc, 0xaa, 0x99, 0x3d, 0xe3, 0x55, 0x73, 0xea, 0x55, 0x56, 0xcd, 0xd8, 0xd2, 0x37, 0x7d, 0xea, + 0xa5, 0xef, 0x55, 0x56, 0xab, 0xff, 0x77, 0x08, 0x96, 0xc8, 0x04, 0x68, 0x3d, 0xc3, 0xb5, 0xda, + 0x3a, 0x0f, 0xf6, 0x0d, 0xe3, 0x4e, 0x8f, 0x5c, 0x5f, 0xdc, 0x97, 0xa3, 0x7f, 0x93, 0xb2, 0x8e, + 0xeb, 0x05, 0xc2, 0x0d, 0x41, 0xfe, 0x46, 0xa5, 0x48, 0x24, 0xdc, 0x9b, 0x61, 0x46, 0xdc, 0x24, + 0xbe, 0xdf, 0x76, 0x18, 0xdc, 0xab, 0x88, 0xa7, 0x0c, 0xf9, 0xf8, 0x57, 0xf0, 0x75, 0xfc, 0x75, + 0xe0, 0xa9, 0x59, 0xb8, 0x59, 0x1c, 0x55, 0xc4, 0x4d, 0x0e, 0x36, 0x3e, 0xa6, 0x17, 0x6e, 0x24, + 0x03, 0x5f, 0x91, 0xef, 0xba, 0x22, 0xdf, 0x75, 0x2e, 0xdf, 0xaa, 0x22, 0x5f, 0xf2, 0xb7, 0x51, + 0xa2, 0xd7, 0x6c, 0x54, 0x7a, 0x79, 0x5d, 0x79, 0x9c, 0x67, 0x5a, 0xe1, 0xfb, 0x48, 0xac, 0x09, + 0x02, 0x6e, 0xfc, 0x05, 0x7f, 0xda, 0xed, 0x7f, 0xc6, 0xed, 0xe8, 0x55, 0xe2, 0x4e, 0x7e, 0x16, + 0x66, 0x90, 0xe3, 0xd9, 0xee, 0x3c, 0xab, 0xf1, 0x34, 0x0c, 0xfc, 0xf9, 0x21, 0x59, 0x4b, 0x55, + 0x00, 0xb7, 0x9a, 0x96, 0xa4, 0xa4, 0x54, 0xe0, 0xfe, 0x5d, 0xb1, 0xc8, 0xf2, 0x44, 0x7a, 0xac, + 0x58, 0x5f, 0x64, 0x55, 0x02, 0x7a, 0x93, 0x64, 0xd6, 0x30, 0x59, 0x02, 0xb4, 0xc4, 0x16, 0xbc, + 0x1b, 0x4f, 0xe1, 0x45, 0x4d, 0xce, 0x30, 0x85, 0x97, 0x2a, 0xc6, 0x30, 0x99, 0xd7, 0x1e, 0xac, + 0x98, 0xb8, 0xed, 0x3e, 0xc3, 0x67, 0xcb, 0xf6, 0x4b, 0xb8, 0xa0, 0x33, 0x64, 0xc9, 0x0f, 0xd8, + 0x43, 0x72, 0x1f, 0x27, 0x3f, 0x3f, 0xc7, 0x09, 0xd8, 0xf3, 0x73, 0xec, 0xa5, 0x27, 0xf2, 0xa7, + 0xba, 0x37, 0x53, 0x98, 0xe1, 0xc2, 0x45, 0x9d, 0x79, 0xb1, 0xd9, 0xac, 0x5a, 0x5e, 0x60, 0x37, + 0xec, 0x8e, 0xe5, 0x04, 0x68, 0x07, 0xb2, 0xca, 0xcf, 0x88, 0x43, 0x48, 0x81, 0x70, 0xbd, 0x31, + 0x2c, 0xd0, 0xde, 0xbb, 0x08, 0x8b, 0x0d, 0x0c, 0x85, 0xa8, 0x78, 0x88, 0xc8, 0xd4, 0x3a, 0x4b, + 0x30, 0xad, 0xfc, 0x94, 0x27, 0x60, 0x74, 0x81, 0x55, 0x6a, 0xd0, 0x05, 0xa6, 0x93, 0x18, 0x0d, + 0x58, 0x4e, 0x12, 0x1a, 0x7f, 0x52, 0xa9, 0x12, 0x66, 0x21, 0xee, 0x7f, 0xe7, 0x64, 0x36, 0x2d, + 0x03, 0xb1, 0xf1, 0x7f, 0x8e, 0xc0, 0x0a, 0xef, 0x8c, 0xb3, 0xec, 0x71, 0xf4, 0x23, 0xc8, 0x2a, + 0x7d, 0xcc, 0x85, 0x7e, 0x45, 0x24, 0x1b, 0x48, 0x1b, 0x0b, 0xcc, 0x71, 0xd5, 0xa5, 0x05, 0xf5, + 0x48, 0x77, 0xaf, 0x9f, 0x33, 0x55, 0x96, 0xa8, 0x05, 0x33, 0x7a, 0x47, 0x73, 0xdf, 0xdd, 0xb5, + 0xc4, 0x4a, 0x74, 0x54, 0xf1, 0x6a, 0x52, 0xb3, 0x9e, 0xd8, 0xdd, 0xeb, 0xe7, 0xcc, 0x08, 0x6f, + 0xf4, 0x35, 0xcc, 0xc5, 0x7a, 0x99, 0xfb, 0x98, 0x6f, 0x24, 0x56, 0x18, 0xc3, 0x66, 0xa7, 0x7b, + 0x1e, 0x2d, 0x4e, 0xad, 0x36, 0x5e, 0x09, 0x6a, 0xc2, 0x94, 0xda, 0xf1, 0xdc, 0xb9, 0x78, 0xb5, + 0x87, 0x28, 0x19, 0x22, 0x53, 0xa0, 0xb9, 0x2c, 0x69, 0xdf, 0xbf, 0xd0, 0x4f, 0x2c, 0x35, 0xe4, + 0x09, 0x18, 0x63, 0xbf, 0x8d, 0xdf, 0x1d, 0x86, 0x95, 0xaa, 0x87, 0x7d, 0xec, 0x34, 0xb0, 0x76, + 0x7f, 0xf1, 0x15, 0x47, 0x44, 0xda, 0x61, 0xe1, 0xd0, 0xd9, 0x1f, 0x16, 0x0e, 0x9f, 0xe5, 0x61, + 0xe1, 0xc8, 0x19, 0x1e, 0x16, 0xde, 0x83, 0xf3, 0xc9, 0xa7, 0x81, 0xfc, 0xb0, 0x61, 0x9e, 0x43, + 0xb7, 0x9e, 0x58, 0xa6, 0x4c, 0x0b, 0xf1, 0xcf, 0x33, 0x90, 0x4f, 0xea, 0x90, 0x1a, 0x76, 0x9a, + 0xa8, 0x0a, 0xb9, 0x68, 0x0f, 0xf1, 0xf5, 0xc0, 0x90, 0x4f, 0xfa, 0xa4, 0xf6, 0xe5, 0xfa, 0x39, + 0x33, 0x46, 0x8d, 0xb6, 0x61, 0x4e, 0x29, 0xd3, 0xf2, 0x49, 0xf4, 0x39, 0x89, 0x23, 0xe3, 0x37, + 0x46, 0xaa, 0x1e, 0x64, 0xae, 0x53, 0x9d, 0x82, 0x45, 0x6a, 0x13, 0x33, 0x4c, 0xb9, 0xe0, 0x02, + 0x61, 0x29, 0x1f, 0x54, 0xec, 0x68, 0x8e, 0x96, 0x8a, 0x8b, 0xea, 0x12, 0xc5, 0xf8, 0x3e, 0xdd, + 0xfb, 0xb8, 0x0f, 0x9b, 0xe5, 0x57, 0x92, 0xcc, 0xae, 0xc0, 0xe8, 0xee, 0x66, 0xad, 0x5c, 0xe4, + 0xd9, 0x9a, 0x58, 0x4e, 0xc3, 0x96, 0x5f, 0x6f, 0x58, 0x26, 0x03, 0x18, 0x1f, 0x02, 0x7a, 0x80, + 0x03, 0xfe, 0xa6, 0x9c, 0xa4, 0xbb, 0x0e, 0xe3, 0xbc, 0x88, 0x53, 0xd2, 0x43, 0x26, 0xfe, 0xb6, + 0x9d, 0x29, 0x60, 0x46, 0x55, 0x58, 0xb1, 0x2d, 0xac, 0x5d, 0xd2, 0x79, 0x0f, 0x26, 0x3c, 0x5e, + 0xc6, 0x35, 0x9a, 0x19, 0xf9, 0x90, 0x2a, 0x2d, 0x66, 0x87, 0x9f, 0x02, 0xc7, 0x94, 0x7f, 0x19, + 0x9b, 0x34, 0xff, 0xe8, 0xce, 0xc6, 0x5a, 0x99, 0x48, 0x95, 0x0b, 0x4b, 0x74, 0xc7, 0x6d, 0x7a, + 0x37, 0x35, 0xc0, 0x6a, 0xae, 0x26, 0x2a, 0x1a, 0xba, 0x3c, 0xf2, 0xac, 0xbb, 0x0a, 0x8a, 0x71, + 0x4f, 0x66, 0x33, 0x4d, 0xe0, 0x96, 0xf6, 0x20, 0xe8, 0x36, 0xcd, 0xd3, 0xfa, 0x80, 0xc6, 0xad, + 0x9e, 0x45, 0x23, 0x7e, 0x02, 0x17, 0x88, 0x90, 0xc8, 0x37, 0x95, 0x5d, 0xc7, 0xc1, 0x8d, 0xc0, + 0x3d, 0x93, 0xa3, 0x2a, 0x74, 0x15, 0xb4, 0x27, 0x98, 0x59, 0x38, 0xa3, 0x99, 0x7d, 0xae, 0x3c, + 0xc4, 0xfc, 0xeb, 0xec, 0xd2, 0x4d, 0xb4, 0x6e, 0xde, 0x4d, 0xef, 0x02, 0x34, 0x64, 0x29, 0xef, + 0x28, 0x91, 0x84, 0x57, 0x23, 0xd9, 0xbf, 0x67, 0x2a, 0x98, 0x03, 0x9f, 0x6a, 0x59, 0xb0, 0xcc, + 0x54, 0x43, 0x8d, 0x99, 0xf8, 0xf4, 0x32, 0x4c, 0xca, 0x32, 0x19, 0x7e, 0x93, 0x58, 0x39, 0x4b, + 0xe8, 0x25, 0x1b, 0x60, 0x86, 0x74, 0xa4, 0x0a, 0xb6, 0x56, 0x7f, 0xc3, 0x55, 0xf8, 0xd8, 0x0b, + 0xbe, 0xd1, 0x2a, 0xc2, 0x14, 0xc6, 0xa7, 0xa9, 0x42, 0xc3, 0xdf, 0x5f, 0x1d, 0x44, 0x50, 0xdf, + 0x70, 0x15, 0x44, 0x50, 0xdf, 0x5c, 0x15, 0xff, 0x5f, 0x86, 0x4d, 0x26, 0x8d, 0xe2, 0x5b, 0x9a, + 0x4c, 0xe8, 0x35, 0x98, 0x71, 0xdc, 0xfa, 0x13, 0xb7, 0xd5, 0x72, 0x9f, 0x93, 0x6d, 0x8e, 0x85, + 0x48, 0x4d, 0x98, 0x53, 0x8e, 0x7b, 0x9f, 0x16, 0xee, 0x79, 0x2d, 0x39, 0xe5, 0xa2, 0x2d, 0x1c, + 0x60, 0xca, 0x45, 0xc4, 0xf0, 0x52, 0x53, 0xee, 0xd7, 0xd9, 0x31, 0x08, 0x5b, 0xbd, 0xbe, 0xf5, + 0xe5, 0xe6, 0x7f, 0xe5, 0xae, 0xd7, 0x78, 0xf5, 0x72, 0x63, 0x88, 0x7f, 0xbe, 0x38, 0x73, 0x8c, + 0x10, 0xbd, 0xe4, 0x9a, 0x83, 0x45, 0x36, 0xf0, 0x08, 0x3b, 0x21, 0x81, 0x4a, 0x7c, 0x18, 0xa6, + 0x36, 0xa0, 0xc7, 0x40, 0xc4, 0x70, 0x91, 0x4d, 0xa7, 0x6f, 0xa1, 0x1a, 0x32, 0xa5, 0xbe, 0xd9, + 0x6a, 0xfe, 0xef, 0x0c, 0xcb, 0x4d, 0x5e, 0xdb, 0x59, 0xb3, 0xad, 0x43, 0xc7, 0xf5, 0x03, 0xbb, + 0x41, 0x5f, 0x45, 0x0b, 0xe3, 0x47, 0x95, 0x9d, 0x50, 0x09, 0x67, 0xa1, 0xf1, 0xa3, 0x56, 0x37, + 0x38, 0x92, 0xfa, 0x1b, 0x8d, 0x6d, 0x89, 0x62, 0xa3, 0xf7, 0x61, 0x5a, 0x29, 0x92, 0x36, 0x20, + 0x7b, 0xf6, 0x55, 0x25, 0xb7, 0x9b, 0xa6, 0x8e, 0x69, 0xfc, 0x75, 0x06, 0xe6, 0x6b, 0x2f, 0xfc, + 0x00, 0xb7, 0xe9, 0x3b, 0x0c, 0x22, 0x63, 0x17, 0x75, 0x43, 0x53, 0xdf, 0x8a, 0xdc, 0xc4, 0xf9, + 0xd3, 0xfd, 0x34, 0xcd, 0xa8, 0xa6, 0x79, 0x4b, 0x44, 0xfa, 0xe0, 0xa5, 0xe0, 0x20, 0x5b, 0xc1, + 0x1e, 0xbc, 0x14, 0xc5, 0x3a, 0xa9, 0x8a, 0x8e, 0x7c, 0x80, 0xb0, 0x25, 0x5c, 0xb3, 0xae, 0x11, + 0x43, 0xd9, 0xa7, 0xa5, 0xd4, 0xdb, 0x18, 0xd2, 0xfe, 0xf2, 0xb8, 0xf0, 0xee, 0x69, 0x6e, 0xbf, + 0x84, 0xac, 0x4d, 0xa5, 0x1a, 0xe3, 0x67, 0x43, 0x70, 0x3e, 0xe1, 0xfb, 0x6b, 0x38, 0xf8, 0x9b, + 0x10, 0xc1, 0x33, 0xc8, 0x86, 0x8d, 0x61, 0xfe, 0xc6, 0xc9, 0xd2, 0x2e, 0x7d, 0x9f, 0x31, 0x94, + 0x81, 0x7f, 0x26, 0x42, 0x50, 0x2b, 0x32, 0x6e, 0xc2, 0x8d, 0x0d, 0xe7, 0x19, 0x76, 0x02, 0xd7, + 0x7b, 0xc1, 0xc7, 0x2d, 0x6e, 0xf2, 0x43, 0x60, 0xea, 0x88, 0x92, 0x81, 0xc8, 0xbf, 0x39, 0x04, + 0x85, 0x3e, 0xa8, 0xe8, 0xff, 0xc9, 0xb0, 0x07, 0xb9, 0x65, 0x09, 0x5f, 0x8a, 0xde, 0x17, 0x47, + 0xf0, 0xbd, 0xe9, 0x6f, 0x69, 0xbf, 0xd8, 0x39, 0xc5, 0x07, 0xbf, 0xf5, 0x97, 0x2f, 0xfd, 0xa5, + 0x7a, 0x5b, 0x96, 0x7f, 0x00, 0x28, 0x5e, 0x41, 0x3f, 0xaf, 0xe9, 0x88, 0xea, 0x35, 0xdd, 0x87, + 0x05, 0xf9, 0x09, 0xca, 0x63, 0xe6, 0x34, 0x09, 0x86, 0x36, 0x60, 0x94, 0x71, 0x61, 0x00, 0xf0, + 0x97, 0x96, 0x37, 0xdd, 0x43, 0xfe, 0x20, 0xf4, 0x50, 0x3e, 0x63, 0x2a, 0xa5, 0xc6, 0x7d, 0x58, + 0x8c, 0xf0, 0xe5, 0xeb, 0xfa, 0x77, 0x41, 0xde, 0x4c, 0xa5, 0x8c, 0x87, 0x4b, 0x73, 0xbf, 0x3c, + 0x2e, 0x4c, 0x07, 0x76, 0x1b, 0xdf, 0x0a, 0x1f, 0xb5, 0x10, 0x7f, 0x19, 0x5b, 0xaa, 0xc9, 0x52, + 0x6c, 0xa9, 0x49, 0x83, 0xd0, 0x5d, 0x18, 0x63, 0x25, 0x91, 0xd4, 0xf1, 0x2a, 0x76, 0x69, 0xe4, + 0xe7, 0xc7, 0x85, 0x73, 0x26, 0x47, 0x34, 0x16, 0xe9, 0xdd, 0x37, 0xfa, 0xa3, 0x18, 0x66, 0x61, + 0x30, 0xf6, 0xd8, 0x53, 0x4a, 0x61, 0xb1, 0x4c, 0x4f, 0x3f, 0x52, 0x0c, 0xb3, 0x4a, 0x88, 0xd3, + 0x0f, 0x81, 0xe7, 0xb8, 0xcf, 0x5b, 0xb8, 0xc9, 0x1e, 0xe7, 0x2c, 0x4d, 0xf1, 0xd3, 0x8f, 0x11, + 0x8b, 0x30, 0xa0, 0x64, 0xc6, 0xbb, 0x70, 0x81, 0x5d, 0x9a, 0x53, 0x5b, 0x14, 0x26, 0x5d, 0x9e, + 0xb0, 0xc8, 0xef, 0x30, 0x3d, 0xe1, 0x38, 0xfd, 0xbd, 0xd1, 0x34, 0x3e, 0x81, 0xc5, 0x72, 0x0b, + 0x5b, 0x5e, 0xb4, 0x9d, 0xf4, 0xe1, 0x15, 0x8a, 0xa3, 0x45, 0x86, 0x0a, 0x36, 0xa6, 0x00, 0x12, + 0xdb, 0x88, 0x6d, 0x06, 0x49, 0x15, 0xdf, 0x86, 0x51, 0xfa, 0x3b, 0x72, 0xe3, 0x2a, 0x41, 0x6a, + 0x0c, 0xcf, 0xf8, 0x98, 0x86, 0xf4, 0xf3, 0x01, 0x6e, 0xbb, 0x4e, 0xb8, 0xf2, 0x0f, 0x76, 0x07, + 0xf0, 0x7f, 0x81, 0x8b, 0xc5, 0x4e, 0x07, 0x3b, 0xcd, 0x90, 0x70, 0xd7, 0xb3, 0x06, 0x4c, 0x07, + 0x80, 0x8a, 0x30, 0x4a, 0xb1, 0xa5, 0x37, 0x8c, 0x37, 0x37, 0xa1, 0x39, 0x14, 0x8f, 0xe7, 0xe4, + 0xa5, 0x15, 0x30, 0x4a, 0xa3, 0x09, 0x4b, 0xb5, 0xee, 0xe3, 0xb6, 0x1d, 0xd0, 0x78, 0x52, 0x9a, + 0x9c, 0x45, 0xd4, 0xbd, 0x21, 0x1e, 0xd7, 0x63, 0xc2, 0xb8, 0x19, 0x86, 0x7e, 0xd3, 0x90, 0x54, + 0x9e, 0xb0, 0xe5, 0xd9, 0xdd, 0x5b, 0x21, 0x29, 0xcd, 0xde, 0xc2, 0x6a, 0xa1, 0x60, 0xfe, 0x00, + 0x9f, 0x31, 0x0f, 0x73, 0xaa, 0x7d, 0xcc, 0x46, 0xd6, 0x22, 0xcc, 0xeb, 0x76, 0x2f, 0x2b, 0xfe, + 0x0a, 0x16, 0x98, 0xee, 0xc1, 0xf2, 0xf3, 0xaf, 0x86, 0xe9, 0xe6, 0x87, 0xf6, 0x57, 0x23, 0xb1, + 0x7b, 0x34, 0x72, 0x45, 0xbe, 0x0e, 0xb3, 0xbf, 0xca, 0xae, 0x65, 0x3d, 0x5b, 0xd5, 0xfc, 0x52, + 0x43, 0xfb, 0xab, 0xa5, 0x71, 0x9e, 0x9b, 0x98, 0x70, 0x67, 0xdd, 0xff, 0x8d, 0x70, 0x5f, 0xa5, + 0x37, 0x81, 0xd7, 0xb1, 0x45, 0xa3, 0xf6, 0x93, 0xef, 0x53, 0xce, 0xc0, 0x90, 0x1c, 0xd6, 0x43, + 0x76, 0xd3, 0xf8, 0x93, 0x0c, 0xdc, 0x64, 0x5a, 0x50, 0x32, 0x1d, 0x35, 0x82, 0x53, 0x88, 0xd1, + 0x7b, 0x30, 0xea, 0x2b, 0xae, 0x6e, 0x83, 0xb7, 0xbc, 0x17, 0x27, 0x46, 0x80, 0x8a, 0x30, 0xa5, + 0xc6, 0x66, 0x0f, 0x96, 0x92, 0xcf, 0xcc, 0xb6, 0x9f, 0x58, 0x32, 0x5e, 0xfb, 0x29, 0xac, 0x54, + 0xbe, 0x26, 0x03, 0x82, 0xbf, 0x7c, 0xce, 0x8f, 0x2e, 0xc3, 0xfb, 0x7a, 0xb3, 0xbb, 0x7c, 0xc4, + 0x88, 0x58, 0x5b, 0xd6, 0xf0, 0x68, 0x31, 0x32, 0x60, 0x8a, 0xb3, 0xf0, 0xc2, 0x20, 0x5e, 0x53, + 0x2b, 0x33, 0xfe, 0x4d, 0x06, 0x2e, 0x26, 0xd7, 0xc6, 0x17, 0xa4, 0x0d, 0x98, 0x2b, 0x5b, 0x8e, + 0xeb, 0xd8, 0x0d, 0xab, 0x55, 0x6b, 0x1c, 0xe1, 0x66, 0x57, 0x66, 0x30, 0x96, 0xab, 0xd3, 0x21, + 0x76, 0x04, 0xb9, 0x40, 0x31, 0xe3, 0x54, 0xe8, 0x5d, 0x38, 0x4f, 0x23, 0x1a, 0xd9, 0x9a, 0xdd, + 0xc2, 0x9e, 0xe4, 0xc7, 0x5a, 0x96, 0x02, 0x45, 0x77, 0x84, 0x92, 0xd5, 0xdc, 0x73, 0xec, 0x40, + 0x12, 0xb1, 0xd0, 0xea, 0x24, 0x90, 0xf1, 0x67, 0xdc, 0x14, 0xd3, 0x5f, 0x87, 0x0d, 0x13, 0x79, + 0x8b, 0x5c, 0xd4, 0x19, 0x2d, 0x42, 0x53, 0xc3, 0xd6, 0x93, 0x52, 0xa3, 0xb7, 0x60, 0xa4, 0x26, + 0x8e, 0xde, 0x66, 0x22, 0x2f, 0x89, 0x73, 0x0a, 0x02, 0x37, 0x29, 0x16, 0xba, 0x0c, 0xb0, 0x86, + 0xfd, 0x06, 0x76, 0xe8, 0x93, 0xef, 0xcc, 0x18, 0x51, 0x4a, 0xc2, 0x34, 0x50, 0x23, 0x69, 0x69, + 0xa0, 0x46, 0xf5, 0x34, 0x50, 0xc6, 0x33, 0x66, 0xb9, 0x45, 0x3f, 0x88, 0x77, 0xd2, 0xc7, 0xb1, + 0x17, 0xe2, 0x75, 0xeb, 0x4d, 0x03, 0xee, 0xdf, 0x8b, 0x3d, 0xfe, 0x9e, 0x9e, 0x38, 0xbb, 0x0a, + 0xaf, 0x69, 0xb8, 0x45, 0x62, 0x4b, 0xe2, 0x66, 0xd5, 0x73, 0xdb, 0x6e, 0xa0, 0x3d, 0x51, 0x35, + 0x6b, 0xa9, 0x78, 0x72, 0x13, 0x8f, 0x16, 0x1b, 0xbf, 0x0e, 0xd7, 0xfb, 0x70, 0xe4, 0x1f, 0x55, + 0x83, 0x39, 0x2b, 0x02, 0x13, 0x67, 0x28, 0xd7, 0x93, 0xbe, 0x2b, 0xca, 0xc8, 0x37, 0xe3, 0xf4, + 0xc6, 0x1f, 0x66, 0x98, 0x20, 0xf5, 0x45, 0xe8, 0x15, 0x12, 0x9b, 0x5f, 0x81, 0x2c, 0x1f, 0x2a, + 0xa1, 0xd2, 0x69, 0xaa, 0x45, 0xe8, 0x35, 0x98, 0xe6, 0xf1, 0x0a, 0x6e, 0x10, 0x5e, 0x88, 0x36, + 0xf5, 0x42, 0xe3, 0x88, 0x19, 0xc7, 0xb1, 0x76, 0x49, 0xcf, 0xab, 0xfe, 0x28, 0x4c, 0xda, 0x62, + 0x2a, 0x9e, 0x83, 0xe9, 0xd1, 0xa5, 0x5f, 0xc2, 0x25, 0x52, 0x53, 0x2c, 0x1e, 0xf9, 0x4c, 0x42, + 0xd4, 0xff, 0x20, 0x03, 0x97, 0xd3, 0xb8, 0xf3, 0x4f, 0x79, 0x04, 0xf3, 0x4a, 0x48, 0x32, 0x0f, + 0x7c, 0x16, 0xdf, 0xd5, 0x23, 0x5a, 0xda, 0x44, 0x4f, 0x63, 0x4c, 0x07, 0x36, 0xbd, 0xbf, 0x60, + 0xc6, 0x7f, 0xc2, 0x13, 0x8a, 0xaf, 0xfe, 0xcd, 0x5f, 0x33, 0x81, 0xa6, 0x3f, 0xcf, 0xf8, 0x4d, + 0x3d, 0x69, 0xf8, 0x66, 0x13, 0xa6, 0x6a, 0x0d, 0xb7, 0x83, 0x7d, 0xfe, 0xe2, 0xee, 0x25, 0xb8, + 0x50, 0x2b, 0xef, 0x54, 0x2b, 0xb5, 0x7a, 0x6d, 0xb7, 0xb8, 0xbb, 0x57, 0xab, 0xeb, 0x2f, 0x2e, + 0x5c, 0x80, 0x45, 0x1d, 0x5c, 0xd9, 0x2e, 0x96, 0x36, 0x2b, 0x6b, 0xb9, 0x0c, 0x5a, 0x86, 0xf3, + 0x3a, 0x68, 0x6d, 0xa3, 0xc6, 0x60, 0x43, 0x6f, 0xee, 0x42, 0xb6, 0xea, 0xb9, 0xcd, 0x6e, 0x83, + 0x3d, 0x64, 0x9f, 0x87, 0x85, 0xaa, 0xb9, 0xb3, 0xb6, 0x57, 0xde, 0xad, 0xef, 0x7e, 0x5e, 0xad, + 0xd4, 0xf7, 0xb6, 0x1f, 0x6d, 0xef, 0x1c, 0x6c, 0xb3, 0xd7, 0x1a, 0x34, 0xc8, 0x6e, 0xa5, 0xb8, + 0x95, 0xcb, 0xa0, 0x05, 0xc8, 0x69, 0xc5, 0x95, 0xbd, 0x52, 0x6e, 0xe8, 0xcd, 0xaf, 0xb4, 0x17, + 0xf6, 0xd1, 0x45, 0xc8, 0xd7, 0xf6, 0xaa, 0xd5, 0x1d, 0x53, 0x72, 0x55, 0x5b, 0xbe, 0x08, 0x73, + 0x1a, 0xf4, 0xbe, 0x59, 0xa9, 0xe4, 0x32, 0xa4, 0x29, 0x5a, 0x71, 0xd5, 0xac, 0x6c, 0x6d, 0xec, + 0x6d, 0xe5, 0x86, 0xde, 0xac, 0xab, 0xf7, 0x8a, 0xd0, 0x0a, 0x2c, 0xad, 0x55, 0xf6, 0x37, 0xca, + 0x95, 0x24, 0xde, 0x0b, 0x90, 0x53, 0x81, 0xbb, 0x3b, 0xbb, 0x55, 0xc6, 0x5a, 0x2d, 0x3d, 0xa8, + 0x94, 0x8a, 0x7b, 0xbb, 0xeb, 0xdb, 0xb9, 0x61, 0x63, 0x64, 0x62, 0x28, 0x37, 0xf4, 0xe6, 0x8f, + 0xb4, 0x4b, 0x47, 0xa4, 0xf9, 0x1c, 0x7d, 0xaf, 0x56, 0x7c, 0x90, 0x5e, 0x05, 0x83, 0x6e, 0xdd, + 0x2f, 0xe6, 0x32, 0xa4, 0xb7, 0xb4, 0xd2, 0x6a, 0xb1, 0x56, 0x3b, 0xd8, 0x31, 0xd7, 0x36, 0x2b, + 0xb5, 0x5a, 0x6e, 0xe8, 0xcd, 0x7d, 0x2d, 0x8d, 0x24, 0xa9, 0x61, 0xeb, 0x7e, 0xb1, 0x6e, 0x56, + 0x3e, 0xdd, 0xdb, 0x30, 0x2b, 0x6b, 0xf1, 0x1a, 0x34, 0xe8, 0xe7, 0x95, 0x5a, 0x2e, 0x83, 0xe6, + 0x61, 0x56, 0x2b, 0xdd, 0xde, 0xc9, 0x0d, 0xbd, 0x79, 0x83, 0x67, 0x14, 0x44, 0x33, 0x00, 0x6b, + 0x95, 0x5a, 0xb9, 0xb2, 0xbd, 0xb6, 0xb1, 0xfd, 0x20, 0x77, 0x0e, 0x4d, 0xc3, 0x64, 0x51, 0xfe, + 0xcc, 0xbc, 0x59, 0x12, 0xcf, 0x9c, 0x2b, 0xfb, 0x1b, 0xca, 0xc2, 0xf8, 0x5a, 0xe5, 0x7e, 0x71, + 0x6f, 0x73, 0x37, 0x77, 0x8e, 0xfc, 0x28, 0x9b, 0x95, 0xe2, 0x2e, 0x1d, 0x41, 0x93, 0x30, 0x4a, + 0x86, 0x4e, 0x25, 0x37, 0x84, 0x26, 0x60, 0x64, 0xaf, 0x56, 0x31, 0x73, 0xc3, 0xab, 0x7f, 0xf5, + 0x77, 0x32, 0x90, 0x25, 0x2a, 0x8f, 0x88, 0xbb, 0xff, 0x0a, 0xce, 0xab, 0x06, 0x2c, 0xd9, 0xea, + 0xf9, 0x9b, 0xce, 0x97, 0xc4, 0xf5, 0xd6, 0x8e, 0x4f, 0x0b, 0x24, 0x1a, 0xd5, 0x7e, 0x97, 0x0b, + 0xe2, 0x3e, 0x97, 0xfb, 0xdc, 0x49, 0x42, 0xb8, 0x99, 0xb9, 0x93, 0x41, 0x26, 0x3d, 0x30, 0x92, + 0x00, 0x31, 0x2b, 0xa2, 0x96, 0x33, 0x2b, 0xe7, 0x9f, 0xb5, 0x9c, 0x02, 0xae, 0x75, 0xdb, 0x6d, + 0xcb, 0x7b, 0x81, 0x7e, 0x0d, 0x0c, 0x95, 0x67, 0x8a, 0xd5, 0xfe, 0xdd, 0xc1, 0xac, 0x73, 0x51, + 0xe7, 0x8d, 0xc1, 0xd0, 0xd1, 0x43, 0x98, 0x26, 0xb6, 0xac, 0x44, 0x43, 0x2b, 0x51, 0x42, 0xc5, + 0x84, 0x5e, 0xbe, 0x98, 0x0c, 0x94, 0xef, 0xa9, 0x4d, 0xd1, 0x0f, 0xf1, 0x03, 0xcb, 0x69, 0x60, + 0x1f, 0x2d, 0xaa, 0xf7, 0x83, 0x9c, 0x06, 0x7f, 0x86, 0x63, 0x79, 0x2e, 0x52, 0xbc, 0x7f, 0xf7, + 0x4e, 0x06, 0xd5, 0x68, 0xda, 0x46, 0xcd, 0x28, 0x46, 0xe2, 0x22, 0x48, 0xdc, 0x5a, 0x66, 0xad, + 0x29, 0xc8, 0x47, 0x92, 0x53, 0xac, 0xe9, 0x6d, 0x40, 0x71, 0x9b, 0x11, 0x5d, 0x09, 0xc7, 0x41, + 0xb2, 0x39, 0xb9, 0x7c, 0x3e, 0x16, 0x41, 0x51, 0x21, 0x56, 0x03, 0xe1, 0x17, 0x37, 0x7e, 0x25, + 0xbf, 0x54, 0xbb, 0x38, 0x95, 0x5f, 0x05, 0x66, 0xf8, 0x7d, 0x6d, 0x6e, 0x15, 0xa3, 0x5e, 0xf6, + 0x78, 0x2a, 0x9b, 0x07, 0x54, 0xee, 0xd2, 0xb2, 0x46, 0xcb, 0xa1, 0x5c, 0xa2, 0xe6, 0xf6, 0xf2, + 0x4a, 0x22, 0x8c, 0xcb, 0xeb, 0x3e, 0xcc, 0xe8, 0x46, 0x3a, 0x12, 0x1d, 0x9e, 0x68, 0xbb, 0xa7, + 0x36, 0xa8, 0x0e, 0x4b, 0x5b, 0x96, 0xed, 0x04, 0x96, 0xed, 0xf0, 0xcd, 0x47, 0x9c, 0x3d, 0xa3, + 0x42, 0x8f, 0xc3, 0xe8, 0x1a, 0x76, 0x9a, 0xb2, 0x53, 0xd3, 0xde, 0x1e, 0xa1, 0xd3, 0xb0, 0x26, + 0x6c, 0x4d, 0x3d, 0xea, 0x01, 0x19, 0xfa, 0x43, 0xfa, 0x49, 0x81, 0x2c, 0xcb, 0x69, 0xb1, 0x57, + 0x68, 0x8b, 0x1a, 0xbb, 0x11, 0x8e, 0xca, 0x18, 0x3b, 0x35, 0xbb, 0x3c, 0xcd, 0x1a, 0x10, 0xd8, + 0xd1, 0x20, 0x2a, 0x1f, 0xa5, 0x08, 0x2e, 0x95, 0xd9, 0x9d, 0x0c, 0xfa, 0x8a, 0xae, 0x12, 0x89, + 0xec, 0x0e, 0xec, 0xe0, 0x88, 0x5b, 0x11, 0x2b, 0x89, 0x0c, 0xf8, 0xc4, 0xeb, 0xc1, 0xdd, 0x84, + 0x85, 0xa4, 0x70, 0x2f, 0x29, 0xd0, 0x1e, 0xb1, 0x60, 0xa9, 0xa3, 0xc0, 0x24, 0x26, 0x7b, 0x33, + 0xbd, 0x93, 0x7a, 0x44, 0x1b, 0xa5, 0xf2, 0xfc, 0x3e, 0xcc, 0x90, 0x51, 0xf2, 0x08, 0xe3, 0x4e, + 0xb1, 0x65, 0x3f, 0xc3, 0x3e, 0x12, 0xb9, 0xbd, 0x65, 0x51, 0x1a, 0xed, 0xcd, 0x0c, 0xfa, 0x0e, + 0x64, 0x0f, 0xac, 0xa0, 0x71, 0xc4, 0x73, 0xd9, 0x8a, 0x54, 0xb7, 0xb4, 0x6c, 0x59, 0xfc, 0xa2, + 0xc0, 0x3b, 0x19, 0xf4, 0x11, 0x8c, 0x3f, 0xc0, 0x01, 0xbd, 0xd8, 0x77, 0x55, 0x9e, 0xdf, 0xb3, + 0x28, 0xc3, 0x0d, 0x47, 0xc6, 0x8e, 0x8b, 0x06, 0x47, 0x63, 0x1f, 0xd1, 0x6d, 0x00, 0xb6, 0xc0, + 0x50, 0x0e, 0x51, 0xf0, 0x72, 0xac, 0xd9, 0xe8, 0x01, 0x51, 0x28, 0xc8, 0x0a, 0x32, 0x68, 0x95, + 0x69, 0x32, 0xda, 0x84, 0x19, 0xf9, 0x24, 0xdc, 0x36, 0xcd, 0xdd, 0x61, 0x44, 0x98, 0xf9, 0xa7, + 0xe0, 0xf6, 0x01, 0x99, 0x15, 0xec, 0x3d, 0x77, 0x9a, 0xe4, 0x81, 0xae, 0xcc, 0x4b, 0x6a, 0xa6, + 0x08, 0x75, 0x49, 0x16, 0x42, 0x64, 0x68, 0x0a, 0xed, 0xba, 0xeb, 0x07, 0x3a, 0xad, 0x2c, 0x49, + 0xa6, 0xfd, 0x55, 0x58, 0x56, 0xeb, 0xd5, 0x93, 0xac, 0x87, 0x6b, 0x78, 0x5a, 0xee, 0xf6, 0xe5, + 0xab, 0x3d, 0x30, 0xb8, 0x1f, 0x64, 0xf8, 0x77, 0x86, 0x32, 0x74, 0x39, 0x59, 0x83, 0x79, 0x51, + 0xd7, 0x4e, 0x07, 0x3b, 0xb5, 0xda, 0x3a, 0x7d, 0xce, 0x4b, 0x3c, 0x73, 0xa3, 0x94, 0x09, 0xee, + 0x28, 0x0e, 0x22, 0x5b, 0xa9, 0x96, 0xcc, 0x01, 0xf5, 0x4a, 0xf1, 0x10, 0x6e, 0xa5, 0x89, 0xd9, + 0xbf, 0x1f, 0x31, 0xa7, 0xae, 0x66, 0x44, 0xef, 0xaf, 0xa2, 0x1e, 0x8e, 0x84, 0xe5, 0x14, 0x53, + 0xfc, 0x4e, 0x06, 0x7d, 0x0e, 0x28, 0x6e, 0xda, 0x4b, 0x11, 0xa6, 0xba, 0x31, 0xa4, 0x08, 0x7b, + 0xf8, 0x05, 0x1e, 0xc0, 0xa2, 0x4c, 0xe5, 0xa2, 0xd4, 0xba, 0x8a, 0x52, 0x5a, 0x93, 0xd6, 0x4a, + 0xf4, 0x09, 0xcc, 0xf3, 0x41, 0xab, 0x02, 0x50, 0x4e, 0xae, 0x3f, 0xdc, 0xba, 0x4f, 0x1d, 0xa7, + 0x0f, 0x61, 0xb1, 0x16, 0x91, 0x18, 0x0b, 0x0f, 0xbc, 0xa0, 0xb3, 0xa0, 0x85, 0x35, 0x1c, 0x30, + 0x91, 0x25, 0xf3, 0x7a, 0x04, 0x88, 0x39, 0x57, 0x05, 0xbb, 0x67, 0x36, 0x7e, 0x8e, 0x2e, 0x45, + 0x9a, 0x4e, 0x0a, 0x29, 0x1a, 0x5d, 0xc0, 0x52, 0xbf, 0x6c, 0x97, 0xc6, 0x3a, 0xb1, 0xd2, 0xb2, + 0xd5, 0xb1, 0x1e, 0xdb, 0x2d, 0x3b, 0xb0, 0x31, 0xe9, 0x00, 0x95, 0x40, 0x05, 0x89, 0x0e, 0xb8, + 0x90, 0x8a, 0x81, 0x9e, 0xd0, 0x33, 0x4b, 0x96, 0x7d, 0x39, 0x01, 0x7c, 0x43, 0xce, 0xf8, 0x64, + 0x84, 0x50, 0x85, 0xea, 0x8d, 0x87, 0x7e, 0x83, 0x26, 0x06, 0xee, 0xed, 0x06, 0x41, 0xdf, 0x49, + 0xf2, 0x56, 0xa5, 0x38, 0x72, 0x96, 0xdf, 0x1a, 0x0c, 0x59, 0x3a, 0x9e, 0xa6, 0x1f, 0xe0, 0xa0, + 0xda, 0xea, 0x1e, 0xda, 0xf4, 0x3d, 0x6c, 0x24, 0xfd, 0x12, 0xb2, 0x88, 0x8f, 0x7f, 0x91, 0x22, + 0x2d, 0x04, 0xd4, 0xf0, 0x8f, 0xd1, 0x06, 0xe4, 0xd8, 0x3e, 0xa3, 0xb0, 0xb8, 0x14, 0x63, 0xc1, + 0x51, 0x2c, 0xcf, 0x6a, 0xfb, 0xa9, 0xa3, 0xe2, 0x36, 0x8c, 0x10, 0x75, 0x17, 0x89, 0xb9, 0xaf, + 0x2a, 0xc6, 0xf3, 0x5a, 0x99, 0x7c, 0x8e, 0x63, 0x91, 0xf6, 0x91, 0x8f, 0x03, 0x91, 0x14, 0x86, + 0x05, 0x13, 0x5c, 0x0b, 0x95, 0x8a, 0x38, 0x34, 0x5c, 0x62, 0x22, 0x09, 0xcc, 0xf6, 0xef, 0x21, + 0xf9, 0x42, 0x7c, 0x02, 0xd3, 0x1b, 0x9a, 0xee, 0x73, 0x3a, 0xbe, 0x4f, 0x60, 0x89, 0x87, 0xe7, + 0x47, 0x88, 0x7c, 0xf4, 0x9a, 0x7e, 0x57, 0x29, 0x85, 0xe9, 0xf5, 0x3e, 0x58, 0xf2, 0xc9, 0x90, + 0x71, 0x9e, 0xa7, 0x11, 0x2d, 0x86, 0x32, 0x20, 0xbf, 0x05, 0xa3, 0x69, 0xa5, 0x75, 0xfb, 0xab, + 0x74, 0x89, 0x26, 0x9b, 0x3e, 0x51, 0xf1, 0xbb, 0x9e, 0x87, 0x1d, 0x46, 0x9c, 0xa6, 0x3f, 0x25, + 0x51, 0x7f, 0x4c, 0x97, 0x52, 0x85, 0x9a, 0x39, 0xcd, 0xfa, 0xb1, 0x60, 0xaf, 0xe6, 0xdd, 0xc9, + 0xa0, 0xf7, 0x60, 0x82, 0xb7, 0x91, 0x10, 0x69, 0x8d, 0xf6, 0x7b, 0xb4, 0x9a, 0x52, 0x02, 0xeb, + 0x0c, 0xda, 0x66, 0x1d, 0x27, 0x6d, 0x94, 0xb1, 0x36, 0xbf, 0x47, 0x94, 0x87, 0xe6, 0xcb, 0x50, + 0x96, 0x85, 0x16, 0x41, 0x29, 0xf3, 0x9a, 0x69, 0xa2, 0xca, 0xb9, 0x27, 0x13, 0x62, 0x07, 0xd0, + 0x4c, 0x87, 0x32, 0x61, 0x99, 0xb4, 0x03, 0xb4, 0xe2, 0x7e, 0xba, 0xc3, 0x06, 0xe4, 0x8a, 0x0d, + 0xba, 0xb3, 0xd5, 0x70, 0xdb, 0xea, 0x1c, 0xb9, 0x1e, 0x96, 0x46, 0x5d, 0x14, 0x20, 0x78, 0x2d, + 0x4a, 0x4d, 0x89, 0x03, 0x36, 0xb1, 0x45, 0x73, 0x8f, 0x2f, 0x49, 0x55, 0x29, 0x02, 0x4a, 0xa6, + 0xe8, 0x61, 0x74, 0x2d, 0x94, 0x89, 0xd9, 0xd9, 0x7a, 0x35, 0x36, 0x1f, 0xd0, 0x85, 0x49, 0x22, + 0xfb, 0x72, 0xc7, 0x93, 0x45, 0xd2, 0xdc, 0x15, 0x01, 0xda, 0x12, 0x75, 0x0b, 0x66, 0xa8, 0x3f, + 0x2f, 0x2c, 0xb9, 0xa8, 0xcc, 0x9f, 0xb0, 0x38, 0xea, 0x40, 0x88, 0x42, 0x65, 0x8e, 0xe8, 0x59, + 0x9e, 0x85, 0x56, 0x4a, 0x39, 0xad, 0x31, 0x69, 0x5f, 0xf3, 0x3d, 0x98, 0xa9, 0x90, 0xfd, 0xae, + 0xdb, 0xb4, 0xd9, 0x03, 0x21, 0x48, 0x7f, 0xd9, 0x21, 0x95, 0x70, 0x5d, 0xbc, 0x7b, 0x49, 0x49, + 0xb9, 0xa7, 0x45, 0x6c, 0xb9, 0x4a, 0x99, 0xf8, 0x94, 0x05, 0xc1, 0x96, 0xbf, 0xd1, 0x42, 0x3d, + 0x21, 0xdc, 0xb5, 0xb2, 0xc4, 0x14, 0xe6, 0x62, 0x98, 0x79, 0x9f, 0xa7, 0x11, 0xb8, 0xae, 0x59, + 0xec, 0x31, 0xb8, 0xe0, 0x1d, 0xd7, 0xa9, 0x3f, 0x53, 0xde, 0xdd, 0x4f, 0xe1, 0x99, 0x02, 0xef, + 0x37, 0xb4, 0x65, 0x52, 0xed, 0x62, 0xab, 0x15, 0x23, 0xf6, 0xd1, 0x1b, 0x3a, 0xf7, 0x24, 0x9c, + 0x7e, 0x35, 0x50, 0x8f, 0x08, 0x53, 0x4a, 0x8b, 0x9d, 0x0e, 0x5b, 0xe3, 0x2f, 0xcb, 0xf5, 0x47, + 0x07, 0xc4, 0x3d, 0x22, 0x51, 0x38, 0x1f, 0x2a, 0x0f, 0xe9, 0xa8, 0x0d, 0x1f, 0xe7, 0x47, 0xaa, + 0x3f, 0x40, 0x96, 0x46, 0x75, 0xd4, 0x08, 0x50, 0x6e, 0x6f, 0xe2, 0x81, 0x06, 0xe1, 0x8f, 0x46, + 0xea, 0x40, 0x55, 0xca, 0x05, 0xbf, 0xcb, 0x69, 0x60, 0x79, 0x20, 0x93, 0xe3, 0x83, 0x29, 0x6c, + 0xe0, 0x65, 0x6d, 0x5b, 0x8b, 0xb7, 0xb1, 0x90, 0x0a, 0x97, 0x9f, 0x9c, 0x93, 0x7d, 0x1c, 0x65, + 0x1a, 0x05, 0xf4, 0xeb, 0x93, 0xfb, 0xb0, 0xa0, 0xf6, 0xa8, 0xfc, 0xee, 0xb4, 0xcd, 0x24, 0x8d, + 0xcf, 0x2e, 0x2c, 0x86, 0x4b, 0xb2, 0xca, 0xe8, 0x5a, 0x6c, 0xc1, 0x4e, 0x10, 0x63, 0x1a, 0x57, + 0x0c, 0xe7, 0xb9, 0xe3, 0x23, 0x72, 0x50, 0x20, 0x37, 0xf1, 0x64, 0x70, 0x74, 0x13, 0x4f, 0xc3, + 0xe2, 0x02, 0xfd, 0x8a, 0x6e, 0xa8, 0xb1, 0x3a, 0xae, 0x2a, 0x9e, 0x92, 0x94, 0x0a, 0x8c, 0x5e, + 0x28, 0x72, 0x0c, 0x2c, 0x24, 0x80, 0xd3, 0x45, 0x7c, 0x2d, 0x9d, 0xa7, 0x9a, 0xba, 0x7c, 0x31, + 0xf1, 0x00, 0x45, 0xca, 0xbb, 0xd7, 0xd1, 0xcd, 0xf2, 0x6b, 0xbd, 0x91, 0x78, 0x1d, 0xfb, 0x22, + 0x9d, 0x74, 0xaa, 0xf4, 0x93, 0xc1, 0xfd, 0xcd, 0xf9, 0x65, 0x39, 0xe6, 0x06, 0x17, 0x4b, 0x1a, + 0xb7, 0xa6, 0xf4, 0x9c, 0x89, 0x54, 0x22, 0xac, 0x8d, 0x11, 0xcf, 0x99, 0x06, 0x14, 0x2d, 0xbc, + 0xd6, 0x13, 0x47, 0x31, 0xaa, 0xd1, 0x97, 0xcc, 0x95, 0xa6, 0x57, 0xa1, 0xba, 0xd2, 0x12, 0xf9, + 0x5f, 0x49, 0x47, 0x50, 0x99, 0x5b, 0x2c, 0xfe, 0x44, 0x47, 0xf1, 0x91, 0x6a, 0xad, 0x46, 0x60, + 0xd1, 0xf1, 0x97, 0x88, 0xa2, 0x56, 0x71, 0x20, 0xe6, 0x79, 0x8a, 0x94, 0x92, 0x80, 0x03, 0x69, + 0x56, 0x3b, 0x90, 0x0f, 0x3b, 0x33, 0xf2, 0x01, 0xa7, 0xec, 0x4a, 0x21, 0x8c, 0x0b, 0xe1, 0x5a, + 0x11, 0xe5, 0xf8, 0x7a, 0x6c, 0x35, 0x49, 0x11, 0x4c, 0xcf, 0x2a, 0xd8, 0x9e, 0xa1, 0xa4, 0xa7, + 0x5e, 0x09, 0xfd, 0xf2, 0x61, 0x69, 0xc2, 0x9e, 0xa1, 0x02, 0xf9, 0x24, 0xd9, 0xa4, 0xaa, 0x7c, + 0x08, 0x48, 0xff, 0xea, 0x4b, 0x49, 0x7c, 0x22, 0xdd, 0x54, 0x82, 0x39, 0xa6, 0x46, 0x0c, 0xc2, + 0x30, 0xe9, 0x44, 0xf4, 0x4e, 0x26, 0xdc, 0x1e, 0x94, 0x0f, 0x14, 0x3a, 0x6a, 0x14, 0x70, 0x9a, + 0xed, 0x61, 0x90, 0x26, 0xa5, 0xf1, 0x59, 0x83, 0x2c, 0xfb, 0x6c, 0xb6, 0xeb, 0x5f, 0xd0, 0xe4, + 0xad, 0x6d, 0xf8, 0xcb, 0x9a, 0x94, 0xf4, 0xbd, 0xbe, 0x4c, 0x8f, 0x05, 0x44, 0x71, 0x7a, 0x2b, + 0x56, 0xe2, 0x3c, 0x7c, 0x55, 0x61, 0xa0, 0x8f, 0xa1, 0x48, 0x2e, 0x2b, 0xea, 0x43, 0x33, 0x21, + 0xba, 0xde, 0xf9, 0x11, 0x60, 0x78, 0xbc, 0x20, 0x25, 0xca, 0xbe, 0xec, 0x62, 0x54, 0xd0, 0xda, + 0xc7, 0xa5, 0x8b, 0x07, 0xa9, 0x62, 0xee, 0xf3, 0x79, 0xe9, 0x76, 0xc0, 0x3c, 0x7f, 0x79, 0x9d, + 0xfa, 0x3e, 0x44, 0x1a, 0xb4, 0xf3, 0x9a, 0x47, 0x44, 0xc6, 0x06, 0xa4, 0xb2, 0xa9, 0xc2, 0x79, + 0xa6, 0x96, 0xc6, 0xd2, 0x9c, 0xbd, 0xa6, 0x69, 0xad, 0x51, 0x70, 0xba, 0xd2, 0x2a, 0x37, 0x92, + 0x54, 0x8e, 0xc9, 0xe0, 0x7e, 0x62, 0xfb, 0xa1, 0xb2, 0x91, 0x44, 0x69, 0x7d, 0x74, 0x33, 0xaa, + 0xb1, 0xc6, 0x50, 0xfa, 0x6f, 0x54, 0x3c, 0x44, 0x2f, 0x92, 0x85, 0xcf, 0xd0, 0xe4, 0xa0, 0x03, + 0xd3, 0xa5, 0x60, 0x8a, 0xb9, 0x94, 0xc2, 0x2d, 0x09, 0xd8, 0xaf, 0x85, 0x5f, 0x28, 0xab, 0xaf, + 0x4e, 0xe9, 0x4b, 0xf7, 0x49, 0x1a, 0x42, 0xff, 0xb3, 0xc1, 0xc5, 0xf8, 0x07, 0xda, 0x0d, 0x2c, + 0x55, 0x8c, 0x44, 0x68, 0xfa, 0xf7, 0x3f, 0x10, 0x2a, 0x62, 0x94, 0xdf, 0xf9, 0x88, 0x33, 0xbf, + 0x5f, 0xc3, 0xbe, 0x12, 0x3b, 0x44, 0xe4, 0x9b, 0xec, 0x06, 0x8e, 0xee, 0x10, 0x09, 0x18, 0xfd, + 0xb8, 0xaf, 0xc3, 0x6c, 0xcd, 0x3e, 0x74, 0x04, 0x59, 0xb9, 0x66, 0x4a, 0xeb, 0x4f, 0x29, 0x8b, + 0x2e, 0x57, 0x1a, 0x48, 0x66, 0x82, 0x58, 0x10, 0x66, 0x8b, 0x04, 0x63, 0x2f, 0x40, 0x31, 0x1a, + 0xc5, 0x0d, 0xbf, 0x92, 0x08, 0x8b, 0x33, 0x94, 0x7a, 0xd3, 0xc3, 0x83, 0x5d, 0xc9, 0x50, 0x2d, + 0x8c, 0x32, 0xd4, 0x61, 0x32, 0xca, 0x66, 0xfc, 0x01, 0x0e, 0x4c, 0xb7, 0x85, 0x55, 0xef, 0x15, + 0x0d, 0x62, 0x8f, 0xf8, 0x81, 0x98, 0xf3, 0x08, 0x7d, 0x0c, 0x93, 0xd4, 0x21, 0x46, 0x1d, 0x4e, + 0x4b, 0xaa, 0x8b, 0x8c, 0x94, 0x08, 0xa2, 0x7c, 0x1c, 0xc0, 0x2b, 0xac, 0x8b, 0x1b, 0xa6, 0x32, + 0x35, 0x14, 0x63, 0x65, 0x68, 0xde, 0x36, 0x1d, 0x18, 0x55, 0xd6, 0x92, 0x71, 0x78, 0x05, 0xef, + 0x08, 0x0f, 0x15, 0xfd, 0xa8, 0xbc, 0xee, 0x41, 0x4c, 0xff, 0xae, 0x77, 0x84, 0x7b, 0x4a, 0x23, + 0x0b, 0x8b, 0x52, 0xc8, 0xbe, 0x07, 0x53, 0x6c, 0x12, 0xd0, 0xdf, 0xab, 0x0a, 0xa1, 0x28, 0x4c, + 0x21, 0x7c, 0x4f, 0x9c, 0xa5, 0xd1, 0xfa, 0x74, 0x60, 0x6f, 0xdd, 0xe5, 0x63, 0xe1, 0x0e, 0xd3, + 0x5a, 0x1a, 0x16, 0xf5, 0x1b, 0xde, 0x55, 0x98, 0x52, 0xdf, 0x3f, 0x96, 0x63, 0x27, 0xe1, 0x05, + 0x73, 0x39, 0x76, 0x92, 0x5e, 0x20, 0x0f, 0xcf, 0x9a, 0x3e, 0x17, 0xce, 0x9a, 0x90, 0xe9, 0x25, + 0xad, 0x59, 0x31, 0xbe, 0x97, 0xd3, 0xc0, 0x51, 0xd6, 0x35, 0xc8, 0x45, 0x1f, 0x6b, 0x96, 0x96, + 0x6e, 0xca, 0xab, 0xda, 0xd2, 0x7c, 0x4e, 0x7d, 0xe5, 0xb9, 0x2a, 0x0e, 0x66, 0x74, 0xbe, 0x57, + 0x93, 0x1b, 0xa5, 0xb2, 0x4e, 0x3f, 0xa9, 0x99, 0xd6, 0xde, 0x6d, 0x56, 0x7d, 0x10, 0xb1, 0x77, + 0xa1, 0x55, 0x7d, 0x32, 0xe1, 0xa9, 0x67, 0x5b, 0xe4, 0x5f, 0x49, 0x8c, 0x15, 0x90, 0x6e, 0x98, + 0xfe, 0x59, 0xf1, 0xfb, 0xc6, 0x1d, 0xa0, 0x5f, 0x81, 0xa5, 0x94, 0x24, 0xd7, 0xe8, 0x7a, 0xc4, + 0xf5, 0x9e, 0x9c, 0x04, 0x5b, 0x0e, 0x90, 0xa4, 0x17, 0xe6, 0xd1, 0x16, 0x0d, 0x80, 0xd1, 0x6e, + 0xcd, 0xc6, 0x0e, 0x81, 0x0f, 0xc2, 0xdb, 0x86, 0xa1, 0x90, 0x13, 0xaf, 0xdb, 0xa2, 0x1a, 0xb5, + 0xc0, 0xf4, 0xab, 0xcf, 0xf1, 0x73, 0xe0, 0x04, 0x86, 0xcb, 0xc9, 0x0c, 0xc9, 0x32, 0x22, 0x0e, + 0x12, 0x23, 0x5c, 0xd5, 0x83, 0xc4, 0xc4, 0x7b, 0xde, 0xda, 0x41, 0x62, 0xca, 0x6d, 0xec, 0x2a, + 0xcc, 0x27, 0xdc, 0x96, 0x96, 0xc3, 0x2c, 0xfd, 0x26, 0x75, 0xaa, 0x04, 0xaa, 0x42, 0xbf, 0x4b, + 0xe6, 0x98, 0x7e, 0x71, 0x3a, 0x95, 0xe3, 0x43, 0xc2, 0x31, 0x76, 0x17, 0x1a, 0xa5, 0xa0, 0xf7, + 0x5e, 0x98, 0x4c, 0xa1, 0x2e, 0xe8, 0x54, 0xab, 0x4a, 0xfb, 0xd2, 0x6e, 0x5d, 0xa7, 0xb6, 0xaf, + 0x22, 0xa6, 0x6a, 0x72, 0xfb, 0x06, 0x55, 0x18, 0xe4, 0x99, 0x6e, 0x24, 0x11, 0x81, 0xf6, 0xa1, + 0x4a, 0xf9, 0x72, 0x4a, 0x39, 0xda, 0xa6, 0xc1, 0x72, 0xd1, 0x52, 0xc5, 0xca, 0x4f, 0xce, 0x74, + 0x90, 0xca, 0x8f, 0x4d, 0x11, 0xed, 0xa2, 0xf0, 0x69, 0xa6, 0x48, 0xe4, 0x86, 0x31, 0x9f, 0x22, + 0xfa, 0x55, 0xe5, 0x53, 0x4d, 0x91, 0x08, 0x43, 0x75, 0x8a, 0x44, 0xb8, 0x5e, 0x89, 0x38, 0x1e, + 0x7a, 0x4f, 0x91, 0x94, 0xdb, 0xd3, 0x72, 0x8a, 0x44, 0x25, 0x10, 0xf5, 0xca, 0xa4, 0x0e, 0x98, + 0xa8, 0x04, 0xe4, 0x14, 0x49, 0xe6, 0x98, 0x7e, 0x65, 0x3e, 0x95, 0xa3, 0x9c, 0x22, 0x3a, 0xc7, + 0x14, 0xf4, 0x01, 0xa7, 0x48, 0xb4, 0x12, 0x7d, 0x8a, 0x9c, 0xaa, 0x7d, 0x72, 0x8a, 0x24, 0xb7, + 0xef, 0xd4, 0x53, 0x24, 0x92, 0x5d, 0x43, 0xfb, 0xd0, 0xa4, 0x29, 0x12, 0xc5, 0x67, 0x53, 0x24, + 0x5a, 0x1a, 0x71, 0x84, 0xf5, 0x98, 0x22, 0x51, 0xca, 0x4f, 0x29, 0xbf, 0xc8, 0xed, 0xe7, 0x41, + 0x26, 0x49, 0xea, 0xc5, 0x69, 0x74, 0x40, 0xdd, 0xbd, 0xd1, 0x4b, 0xed, 0x03, 0x4d, 0x94, 0x8b, + 0x69, 0x4c, 0xe9, 0x54, 0xe1, 0xda, 0x6d, 0x02, 0xe7, 0x70, 0x2a, 0xa4, 0x5c, 0xe5, 0xd7, 0xb4, + 0xdb, 0xd4, 0xfb, 0xf6, 0xfb, 0xa2, 0x97, 0xa2, 0xf2, 0xd0, 0x1d, 0x99, 0xc9, 0xb7, 0xcb, 0x7b, + 0x48, 0x64, 0x9f, 0x0c, 0xcc, 0x66, 0x0f, 0xbe, 0xbd, 0x2e, 0xc7, 0xf7, 0xe0, 0x2b, 0x4d, 0xc8, + 0x28, 0xdf, 0x54, 0x92, 0xde, 0x13, 0xe8, 0x33, 0x71, 0xa2, 0x16, 0xa5, 0x5b, 0x8d, 0x18, 0xa5, + 0xa7, 0x6e, 0xa9, 0x34, 0x4e, 0xa3, 0x2d, 0x3d, 0xed, 0x44, 0xda, 0x12, 0x4a, 0x55, 0x2c, 0xe3, + 0x4c, 0xe4, 0xa3, 0xd5, 0xc9, 0x94, 0x0a, 0x41, 0xbb, 0xf4, 0xf0, 0x20, 0x5e, 0xae, 0x1c, 0x3c, + 0xa4, 0xa5, 0xb6, 0xe9, 0xcb, 0x35, 0x96, 0x1f, 0x40, 0xe5, 0x9a, 0x96, 0x3c, 0x40, 0x72, 0x8d, + 0x53, 0x7f, 0x42, 0x5d, 0xa1, 0xfc, 0x06, 0xb2, 0xf3, 0xc4, 0xed, 0xef, 0xb9, 0x0c, 0x71, 0x69, + 0xcc, 0xe6, 0xf7, 0xf9, 0x09, 0xb4, 0x28, 0x4c, 0x15, 0x7e, 0x12, 0x3d, 0xfa, 0x04, 0x72, 0x7c, + 0xfd, 0x0c, 0x19, 0x24, 0x21, 0xa6, 0x76, 0x5d, 0x49, 0x38, 0x4e, 0x07, 0x68, 0xc1, 0x20, 0x0e, + 0xd3, 0x41, 0x24, 0x91, 0xee, 0x11, 0x24, 0x5b, 0xf9, 0xae, 0xd7, 0xf5, 0x03, 0xdc, 0x8c, 0x7b, + 0xf2, 0xf4, 0xc6, 0x88, 0x08, 0x22, 0x1d, 0x7d, 0x7f, 0x15, 0x6d, 0xd0, 0xc5, 0x53, 0x2f, 0xee, + 0xe5, 0x36, 0x4d, 0x66, 0x43, 0xd7, 0xb6, 0x2d, 0x79, 0x5d, 0x55, 0x6f, 0x53, 0x5a, 0xdd, 0xa9, + 0x8d, 0x12, 0x01, 0x19, 0x5c, 0x4e, 0x03, 0x7e, 0x62, 0x9a, 0x9c, 0x3e, 0xa4, 0xb1, 0x2c, 0xcc, + 0xf7, 0xda, 0x4f, 0x3c, 0xd1, 0x8b, 0x5f, 0xa8, 0x02, 0x93, 0x82, 0xb8, 0xbf, 0x54, 0xa2, 0xd4, + 0x44, 0x2a, 0xec, 0x5b, 0x7e, 0x00, 0xb3, 0x64, 0xd8, 0x06, 0x56, 0x60, 0x37, 0xfa, 0x30, 0x93, + 0x21, 0x19, 0x0a, 0xf2, 0xfe, 0x2a, 0xfa, 0x8a, 0x1d, 0x00, 0x45, 0x6e, 0xb2, 0x69, 0x07, 0x40, + 0xc9, 0xb7, 0xef, 0xb4, 0x03, 0xa0, 0xb4, 0x8b, 0x70, 0x6b, 0x30, 0xad, 0xdd, 0x63, 0x96, 0xe6, + 0x69, 0xd2, 0xed, 0xe6, 0x1e, 0x23, 0x72, 0x5a, 0xbb, 0xaf, 0x2c, 0xb9, 0x24, 0xdd, 0x62, 0x4e, + 0xe5, 0xf2, 0x11, 0x64, 0x79, 0xbf, 0xf7, 0xec, 0xb2, 0x74, 0x8f, 0xec, 0xa2, 0x72, 0x37, 0xa2, + 0xdb, 0xb4, 0x83, 0xb2, 0xeb, 0x3c, 0xb1, 0x0f, 0xfb, 0xf6, 0x5e, 0x9c, 0x64, 0x7f, 0x15, 0x7d, + 0x49, 0x1f, 0x2a, 0xe7, 0xa0, 0x6d, 0x1c, 0x3c, 0x77, 0xbd, 0xa7, 0xb6, 0x73, 0xd8, 0x87, 0xe5, + 0x15, 0x9d, 0x65, 0x94, 0x4e, 0x8c, 0xf0, 0x2f, 0x61, 0xb9, 0x96, 0xce, 0xbc, 0x2f, 0x93, 0xde, + 0x1b, 0x61, 0x0d, 0x2e, 0xd2, 0xa0, 0xb4, 0xd3, 0xb6, 0xbd, 0x27, 0xd3, 0xcf, 0x59, 0x7a, 0x35, + 0x71, 0x32, 0xd4, 0x70, 0xbd, 0x66, 0x7f, 0x8e, 0x05, 0x3d, 0x04, 0x3f, 0x42, 0x26, 0x84, 0xf1, + 0x39, 0x5c, 0xa8, 0xa5, 0xb2, 0xee, 0xc7, 0xa2, 0x9f, 0x52, 0xbd, 0x42, 0x45, 0x71, 0xca, 0x76, + 0xf7, 0xe4, 0xb9, 0x41, 0x57, 0x5f, 0xb2, 0x63, 0x56, 0x3d, 0xfc, 0x04, 0x7b, 0xf4, 0xa2, 0x47, + 0xbf, 0x2b, 0x0e, 0x3a, 0xba, 0xf8, 0xf2, 0x0d, 0x98, 0xab, 0xc5, 0x58, 0xa5, 0x91, 0xf4, 0x3b, + 0xb6, 0x9c, 0xa7, 0x5f, 0x3a, 0x60, 0xbb, 0xfa, 0xc4, 0xe3, 0x65, 0x1f, 0xe0, 0x60, 0x6f, 0xa3, + 0x8f, 0x94, 0xc4, 0xcd, 0x26, 0x81, 0xb8, 0x7f, 0x97, 0x50, 0xd6, 0x14, 0xca, 0x38, 0x46, 0xea, + 0xe4, 0xfd, 0x81, 0x38, 0x2d, 0xeb, 0x5b, 0x6d, 0x1a, 0x87, 0x7b, 0x74, 0xc1, 0xe6, 0x97, 0x1d, + 0x96, 0x42, 0x65, 0x85, 0x95, 0x84, 0xbe, 0x56, 0xe5, 0xde, 0x83, 0x8f, 0x8a, 0xcc, 0xc8, 0x66, + 0xc3, 0x83, 0x97, 0x5d, 0x8e, 0x5d, 0x82, 0xe9, 0xc9, 0x82, 0xf9, 0xc9, 0x37, 0xdd, 0xc6, 0x53, + 0xd5, 0x4f, 0x4e, 0x7e, 0x47, 0xfd, 0xbb, 0xa4, 0x6c, 0x7f, 0x95, 0x6f, 0x4b, 0xe4, 0x87, 0x16, + 0x62, 0x49, 0x0b, 0xc2, 0x6d, 0x29, 0x5a, 0x2e, 0x23, 0x84, 0xa9, 0x93, 0x9d, 0x51, 0xab, 0x4e, + 0x76, 0x8d, 0x3c, 0x1f, 0x07, 0x70, 0xfa, 0x7b, 0xc2, 0xb9, 0x4c, 0x1b, 0xac, 0xb7, 0x2c, 0x55, + 0xb4, 0xd2, 0xaf, 0x4c, 0x89, 0x74, 0xbf, 0xb2, 0xfa, 0xa1, 0x3d, 0x6e, 0x92, 0x99, 0xb8, 0xd3, + 0xa2, 0xf7, 0x2f, 0xda, 0x2e, 0xa3, 0x09, 0xdd, 0x04, 0x71, 0x50, 0xff, 0x48, 0xcb, 0x79, 0x1e, + 0x50, 0xa7, 0x75, 0x9c, 0x4c, 0x0e, 0x1b, 0x87, 0x85, 0x5d, 0xa1, 0xc6, 0xf9, 0xdd, 0xc9, 0xa0, + 0x6d, 0x38, 0xff, 0x00, 0x07, 0x7c, 0x8d, 0x34, 0xb1, 0x1f, 0x78, 0x76, 0x23, 0xe8, 0x79, 0x8c, + 0x2d, 0xcc, 0xbc, 0x04, 0x9a, 0xfd, 0xb7, 0x09, 0xbf, 0x5a, 0x32, 0xbf, 0x9e, 0x74, 0x3d, 0x82, + 0xf3, 0xf9, 0x79, 0xd6, 0x69, 0x9a, 0x98, 0x3e, 0x45, 0xc6, 0x59, 0x70, 0x5b, 0x3a, 0x69, 0x2e, + 0x7c, 0x31, 0x8c, 0x1b, 0xae, 0x1f, 0xc2, 0x04, 0x8f, 0x60, 0x0b, 0x87, 0xab, 0x28, 0x88, 0x0e, + 0xd7, 0xb0, 0x9c, 0x0f, 0xb7, 0x5b, 0x30, 0xc6, 0x6a, 0x4c, 0xdd, 0xcd, 0xa7, 0xd4, 0x0a, 0xd1, + 0x5d, 0x98, 0x94, 0xa1, 0x6d, 0x48, 0x03, 0xa5, 0x7e, 0xd4, 0x5d, 0x98, 0x64, 0x16, 0xe8, 0xe0, + 0x24, 0x1f, 0xc2, 0xa4, 0x8c, 0x85, 0x3b, 0xb5, 0x9a, 0xf1, 0x09, 0x4c, 0xab, 0x51, 0x71, 0xa7, + 0xef, 0x85, 0x8f, 0x68, 0xa4, 0x82, 0x38, 0xc4, 0xeb, 0xaf, 0x0f, 0x0a, 0x4c, 0xde, 0x1f, 0x3c, + 0x46, 0x21, 0xa4, 0x57, 0x63, 0x14, 0x64, 0x69, 0x52, 0x8c, 0x82, 0x02, 0x94, 0x39, 0xfa, 0xb2, + 0x4a, 0x53, 0x52, 0x45, 0x31, 0x17, 0x6b, 0x09, 0xfa, 0x50, 0x5c, 0xe6, 0x94, 0xc4, 0x71, 0xa4, + 0x1e, 0xf2, 0x9f, 0x61, 0x5d, 0xf6, 0x32, 0xc4, 0x72, 0xa7, 0xe8, 0xdb, 0xec, 0x41, 0x22, 0x2a, + 0xfa, 0x77, 0x43, 0x1a, 0x97, 0x1d, 0xaa, 0x6e, 0xc6, 0x13, 0x33, 0xa4, 0x32, 0xba, 0x9c, 0x9e, + 0x8b, 0x81, 0x76, 0x2c, 0x66, 0xcf, 0x11, 0x26, 0x70, 0x54, 0x43, 0xf2, 0x52, 0xf3, 0x4c, 0x68, + 0xb7, 0x12, 0x7a, 0xe4, 0x8b, 0x78, 0x48, 0xed, 0xfb, 0x18, 0x42, 0xaa, 0x14, 0x7b, 0xa4, 0x90, + 0x08, 0x1d, 0x1a, 0x71, 0x76, 0x3d, 0xc8, 0x7a, 0xf9, 0x47, 0xd8, 0xb8, 0x38, 0x1b, 0x76, 0x1b, + 0x22, 0x1e, 0x7a, 0xf0, 0x8f, 0x4d, 0x6f, 0xd9, 0x4a, 0x42, 0xa8, 0x48, 0xdf, 0x2e, 0x4f, 0x63, + 0xf7, 0x2b, 0x54, 0x9b, 0x4e, 0x7c, 0xb0, 0x2f, 0x9d, 0xd9, 0x4d, 0x25, 0x72, 0x29, 0x91, 0x52, + 0x76, 0xf1, 0x53, 0x7a, 0x19, 0x37, 0xf9, 0x3d, 0xc0, 0x1b, 0x7d, 0xb8, 0x08, 0x49, 0xbc, 0xde, + 0x17, 0x4f, 0x06, 0x1e, 0xac, 0x30, 0x8d, 0x22, 0xb9, 0xbe, 0x3e, 0xef, 0x1b, 0x26, 0xc4, 0x82, + 0xc8, 0x60, 0xf3, 0x64, 0x86, 0x7a, 0xb0, 0x79, 0xcf, 0x6f, 0x48, 0x13, 0xff, 0xa7, 0x50, 0x08, + 0x43, 0xaa, 0x4e, 0xd7, 0x09, 0xe9, 0x31, 0xce, 0x28, 0x26, 0x29, 0x1f, 0xf5, 0x7a, 0x6e, 0x67, + 0xf9, 0x6a, 0x9a, 0x84, 0x7d, 0x35, 0xf8, 0x98, 0x06, 0x97, 0x45, 0xd8, 0xaa, 0xb6, 0x7f, 0x8c, + 0x34, 0x6e, 0xfb, 0xa7, 0x71, 0x7f, 0x20, 0xa2, 0x63, 0x23, 0xef, 0x6e, 0xa6, 0xbd, 0xe0, 0xd9, + 0xe3, 0x80, 0x80, 0xdf, 0x7d, 0x3e, 0x13, 0x46, 0xf1, 0xb1, 0x74, 0x7a, 0x46, 0x32, 0x9e, 0x2a, + 0xc2, 0xc8, 0xe8, 0x31, 0x78, 0xfa, 0x9f, 0xe4, 0xe7, 0x53, 0x46, 0xcd, 0xe9, 0x87, 0x8b, 0x15, + 0xde, 0xf7, 0xd5, 0x59, 0x95, 0xd5, 0x1c, 0x0b, 0x71, 0x50, 0xf4, 0x00, 0x2d, 0x09, 0x43, 0x06, + 0x44, 0xe6, 0x45, 0x15, 0xa4, 0x9c, 0x18, 0x86, 0xae, 0x67, 0x07, 0x2f, 0xca, 0xe6, 0x66, 0xe8, + 0xe4, 0x51, 0x01, 0x82, 0x37, 0x08, 0xa0, 0xb9, 0x89, 0xbe, 0xa0, 0x0b, 0x15, 0x67, 0x5f, 0x72, + 0xdd, 0xc0, 0x0f, 0x3c, 0xab, 0x53, 0xa3, 0x4f, 0x2b, 0xa7, 0x7e, 0x74, 0x78, 0xd9, 0x24, 0x89, + 0x4c, 0x89, 0x7d, 0xe7, 0x99, 0xb0, 0x93, 0x32, 0x01, 0xca, 0x6b, 0x8b, 0x49, 0xc0, 0x1e, 0x76, + 0x64, 0x4d, 0xe4, 0xbe, 0x3e, 0x4b, 0xa6, 0x75, 0x58, 0x4a, 0xc9, 0x9f, 0x28, 0x83, 0x21, 0x7a, + 0xe7, 0x57, 0x5c, 0xee, 0x5d, 0x31, 0xfa, 0x12, 0x16, 0x13, 0x13, 0x2c, 0xca, 0x93, 0x8b, 0x5e, + 0xe9, 0x17, 0xfb, 0x31, 0x7f, 0x0a, 0x79, 0x76, 0x91, 0x8d, 0x5e, 0xb0, 0xd0, 0x72, 0xed, 0x85, + 0xd7, 0x28, 0x53, 0x10, 0xa2, 0xbb, 0x41, 0x3a, 0x9e, 0x4c, 0x42, 0xb2, 0x40, 0x73, 0x79, 0x89, + 0xb7, 0xa0, 0x71, 0xc3, 0x7d, 0x86, 0xbd, 0x17, 0x72, 0xe2, 0x25, 0x01, 0x7b, 0xdd, 0xd5, 0xac, + 0xc2, 0xe2, 0x3e, 0xf6, 0xec, 0x27, 0x2f, 0xa2, 0x0c, 0x85, 0x64, 0x12, 0xa1, 0xbd, 0x38, 0x7e, + 0x06, 0x4b, 0x65, 0xb7, 0xdd, 0xe1, 0xb7, 0xaf, 0x35, 0x9e, 0x32, 0xb2, 0x25, 0x19, 0xde, 0x3f, + 0xf6, 0x70, 0x59, 0x5e, 0x0f, 0x57, 0xe9, 0xca, 0x34, 0x2d, 0xc1, 0x4d, 0x3d, 0x3a, 0x27, 0x01, + 0x25, 0xbc, 0x35, 0x26, 0x0c, 0x63, 0x95, 0x7e, 0x97, 0x0e, 0xc2, 0x08, 0x1d, 0xf3, 0x94, 0x2a, + 0x83, 0x30, 0x09, 0xde, 0xfb, 0x8e, 0x6d, 0x02, 0x57, 0x56, 0x61, 0x3a, 0xd7, 0x01, 0x5a, 0xbb, + 0x2d, 0xf6, 0x16, 0xfd, 0xed, 0xfe, 0xc8, 0xcd, 0x8b, 0xc4, 0x87, 0xfd, 0x13, 0xdb, 0xa9, 0x64, + 0xdb, 0x69, 0xb5, 0x7a, 0x28, 0x70, 0x09, 0xaf, 0x74, 0x13, 0x8b, 0x4d, 0xa5, 0xed, 0xb5, 0x5a, + 0xc7, 0x88, 0xf9, 0xf9, 0xc6, 0x8c, 0xfe, 0x50, 0xb8, 0x76, 0x83, 0x31, 0xf6, 0x28, 0xb9, 0x76, + 0x83, 0x31, 0xe1, 0x75, 0xf1, 0x0f, 0x60, 0xaa, 0xa6, 0x7e, 0x4b, 0x42, 0x9b, 0x53, 0xc7, 0x98, + 0xbc, 0xfd, 0xd8, 0x5f, 0x14, 0x3d, 0x42, 0xc1, 0xe5, 0x3e, 0x36, 0x90, 0x50, 0x52, 0x03, 0xdb, + 0xb4, 0x47, 0xce, 0x34, 0x3b, 0x34, 0xfa, 0xce, 0xa3, 0x66, 0x87, 0xc6, 0xdf, 0x45, 0xe3, 0x87, + 0xe3, 0xd1, 0x67, 0x3c, 0xb5, 0xc3, 0xf1, 0x94, 0xf7, 0x72, 0xb5, 0xc3, 0xf1, 0xd4, 0x77, 0x40, + 0x59, 0x14, 0x5e, 0xf8, 0xac, 0x9b, 0x1a, 0x85, 0x17, 0x7b, 0x2c, 0x4e, 0x8d, 0xc2, 0x4b, 0x78, + 0x09, 0xae, 0x06, 0xb9, 0xe8, 0x3b, 0x75, 0xd2, 0x67, 0x98, 0xf2, 0x0c, 0x9f, 0x8c, 0xb7, 0x4b, + 0x7d, 0xe0, 0xae, 0x42, 0x1b, 0x18, 0x3e, 0xf5, 0xd2, 0xc3, 0xfd, 0x24, 0xdb, 0x96, 0xf0, 0xa2, + 0xcc, 0x23, 0x35, 0xb1, 0x14, 0x7b, 0x20, 0xa6, 0x87, 0x77, 0x3e, 0x9a, 0x50, 0x2a, 0xf2, 0xa2, + 0xcc, 0x7d, 0xc8, 0xb1, 0x7c, 0xe0, 0x61, 0xfe, 0xea, 0x30, 0x9c, 0x38, 0x9e, 0xa6, 0xbc, 0xc7, + 0x48, 0xc9, 0x45, 0xb3, 0xf7, 0x4a, 0x81, 0xa5, 0xa4, 0xf5, 0xed, 0x31, 0xfe, 0x21, 0xcc, 0xd1, + 0x2b, 0x5d, 0x91, 0xb1, 0xb4, 0xbd, 0xcb, 0x17, 0x12, 0x20, 0x52, 0xed, 0x9d, 0x52, 0x33, 0xfa, + 0xca, 0x4f, 0x4a, 0x48, 0xf3, 0xbb, 0xbc, 0x92, 0x08, 0xe3, 0x8c, 0x02, 0x96, 0x63, 0x32, 0xf9, + 0x99, 0xea, 0xf0, 0x56, 0x6c, 0x0f, 0x1c, 0x51, 0xcd, 0x9b, 0x83, 0xa0, 0xf2, 0x5a, 0xb1, 0x7c, + 0xe8, 0x26, 0xe1, 0xd1, 0xf2, 0xd7, 0x13, 0x2e, 0x95, 0x69, 0x18, 0xd1, 0x54, 0x18, 0x69, 0x2f, + 0xa8, 0xa3, 0x03, 0xf1, 0xb8, 0x42, 0x4a, 0x4d, 0xfd, 0x18, 0xa4, 0xf6, 0xe0, 0x81, 0x78, 0x4e, + 0xe1, 0xac, 0x19, 0x3f, 0x86, 0x8b, 0x91, 0x9b, 0x6a, 0x3a, 0xe3, 0x37, 0x93, 0xaf, 0xb3, 0x25, + 0x8a, 0x27, 0xdd, 0xae, 0xb8, 0x12, 0xbf, 0xd1, 0x16, 0xe9, 0xf7, 0xd3, 0x2e, 0xa4, 0x7c, 0x77, + 0x91, 0xcf, 0xdf, 0xeb, 0xbb, 0x4b, 0x58, 0x9c, 0xb4, 0xbb, 0xa8, 0x50, 0x79, 0x42, 0x30, 0xc5, + 0x13, 0x36, 0xb0, 0xc7, 0xf4, 0x97, 0xf5, 0x2c, 0x0e, 0xb4, 0x30, 0x69, 0xa7, 0xe5, 0x6f, 0xf4, + 0xa3, 0x8f, 0x60, 0x36, 0xcc, 0xe3, 0xc0, 0x58, 0x24, 0xa0, 0xf5, 0xf0, 0x6e, 0xce, 0x86, 0xc9, + 0x1c, 0x4e, 0x4f, 0xbe, 0x2e, 0xf6, 0xb7, 0x90, 0xfc, 0x52, 0xec, 0x5e, 0x9f, 0xf6, 0x0d, 0x83, + 0x6c, 0x73, 0x8a, 0x6c, 0x4f, 0xdb, 0x3b, 0x0d, 0x3a, 0xdd, 0x92, 0x53, 0x55, 0xab, 0xd3, 0xad, + 0x67, 0x3a, 0x6d, 0xa9, 0xa2, 0xa7, 0xf0, 0xd9, 0x82, 0x6b, 0x34, 0x2d, 0x57, 0x95, 0x25, 0x34, + 0x4e, 0xc6, 0x4a, 0x6f, 0x7b, 0x34, 0x99, 0x57, 0x0b, 0xae, 0xf6, 0xcd, 0xd5, 0x8d, 0x6e, 0x6b, + 0xe1, 0x5b, 0xfd, 0xb3, 0x7a, 0xf7, 0xb0, 0x8e, 0x16, 0x92, 0x52, 0x5e, 0xcb, 0xcd, 0xbb, 0x47, + 0xf6, 0x6d, 0xb9, 0x79, 0xf7, 0xcc, 0x99, 0xfd, 0x19, 0xcd, 0xfe, 0xc3, 0xf7, 0x28, 0x9a, 0x6a, + 0x0f, 0x3b, 0x96, 0xd3, 0xc0, 0x7d, 0x0e, 0x0a, 0xaf, 0xea, 0xc7, 0xe8, 0x31, 0x42, 0x6a, 0x77, + 0x5d, 0xe6, 0xd6, 0x62, 0x1a, 0xf3, 0xfe, 0x4c, 0x7a, 0xdc, 0xa6, 0xb8, 0xac, 0x25, 0x49, 0x1c, + 0xbc, 0xe5, 0x29, 0xe5, 0xa5, 0xb5, 0x9f, 0xff, 0xfb, 0xcb, 0x99, 0x9f, 0xff, 0xe2, 0x72, 0xe6, + 0x5f, 0xff, 0xe2, 0x72, 0xe6, 0xdf, 0xfd, 0xe2, 0x72, 0xe6, 0x8b, 0xd5, 0xc1, 0x9e, 0xa1, 0x60, + 0xaf, 0x0b, 0xde, 0x66, 0xec, 0xc6, 0xe8, 0x7f, 0xf7, 0xfe, 0x47, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x88, 0xc9, 0x32, 0x05, 0x88, 0xfb, 0x00, 0x00, } func (m *Watch) Marshal() (dAtA []byte, err error) { @@ -22832,6 +23015,18 @@ func (m *MFAAuthenticateChallenge) MarshalToSizedBuffer(dAtA []byte) (int, error i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.BrowserMFAChallenge != nil { + { + size, err := m.BrowserMFAChallenge.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAuthservice(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } if m.SSOChallenge != nil { { size, err := m.SSOChallenge.MarshalToSizedBuffer(dAtA[:i]) @@ -22975,6 +23170,27 @@ func (m *MFAAuthenticateResponse_SSO) MarshalToSizedBuffer(dAtA []byte) (int, er } return len(dAtA) - i, nil } +func (m *MFAAuthenticateResponse_Browser) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MFAAuthenticateResponse_Browser) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.Browser != nil { + { + size, err := m.Browser.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAuthservice(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + return len(dAtA) - i, nil +} func (m *TOTPChallenge) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -23130,6 +23346,86 @@ func (m *SSOResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *BrowserMFAChallenge) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *BrowserMFAChallenge) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BrowserMFAChallenge) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.RequestId) > 0 { + i -= len(m.RequestId) + copy(dAtA[i:], m.RequestId) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.RequestId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *BrowserMFAResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *BrowserMFAResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BrowserMFAResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if m.WebauthnResponse != nil { + { + size, err := m.WebauthnResponse.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAuthservice(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.RequestId) > 0 { + i -= len(m.RequestId) + copy(dAtA[i:], m.RequestId) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.RequestId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *MFARegisterChallenge) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -24166,20 +24462,20 @@ func (m *GetEventsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x22 } } - n67, err67 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.EndDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.EndDate):]) - if err67 != nil { - return 0, err67 + n70, err70 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.EndDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.EndDate):]) + if err70 != nil { + return 0, err70 } - i -= n67 - i = encodeVarintAuthservice(dAtA, i, uint64(n67)) + i -= n70 + i = encodeVarintAuthservice(dAtA, i, uint64(n70)) i-- dAtA[i] = 0x1a - n68, err68 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.StartDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.StartDate):]) - if err68 != nil { - return 0, err68 + n71, err71 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.StartDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.StartDate):]) + if err71 != nil { + return 0, err71 } - i -= n68 - i = encodeVarintAuthservice(dAtA, i, uint64(n68)) + i -= n71 + i = encodeVarintAuthservice(dAtA, i, uint64(n71)) i-- dAtA[i] = 0x12 if len(m.Namespace) > 0 { @@ -24233,20 +24529,20 @@ func (m *GetSessionEventsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) i-- dAtA[i] = 0x18 } - n69, err69 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.EndDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.EndDate):]) - if err69 != nil { - return 0, err69 + n72, err72 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.EndDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.EndDate):]) + if err72 != nil { + return 0, err72 } - i -= n69 - i = encodeVarintAuthservice(dAtA, i, uint64(n69)) + i -= n72 + i = encodeVarintAuthservice(dAtA, i, uint64(n72)) i-- dAtA[i] = 0x12 - n70, err70 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.StartDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.StartDate):]) - if err70 != nil { - return 0, err70 + n73, err73 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.StartDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.StartDate):]) + if err73 != nil { + return 0, err73 } - i -= n70 - i = encodeVarintAuthservice(dAtA, i, uint64(n70)) + i -= n73 + i = encodeVarintAuthservice(dAtA, i, uint64(n73)) i-- dAtA[i] = 0xa return len(dAtA) - i, nil @@ -26034,12 +26330,12 @@ func (m *RecoveryCodes) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n79, err79 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err79 != nil { - return 0, err79 + n82, err82 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err82 != nil { + return 0, err82 } - i -= n79 - i = encodeVarintAuthservice(dAtA, i, uint64(n79)) + i -= n82 + i = encodeVarintAuthservice(dAtA, i, uint64(n82)) i-- dAtA[i] = 0x12 if len(m.Codes) > 0 { @@ -26268,6 +26564,20 @@ func (m *CreateAuthenticateChallengeRequest) MarshalToSizedBuffer(dAtA []byte) ( i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.BrowserMFARequestID) > 0 { + i -= len(m.BrowserMFARequestID) + copy(dAtA[i:], m.BrowserMFARequestID) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.BrowserMFARequestID))) + i-- + dAtA[i] = 0x52 + } + if len(m.BrowserMFATSHRedirectURL) > 0 { + i -= len(m.BrowserMFATSHRedirectURL) + copy(dAtA[i:], m.BrowserMFATSHRedirectURL) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.BrowserMFATSHRedirectURL))) + i-- + dAtA[i] = 0x4a + } if len(m.ProxyAddress) > 0 { i -= len(m.ProxyAddress) copy(dAtA[i:], m.ProxyAddress) @@ -27907,12 +28217,12 @@ func (m *SessionTrackerUpdateExpiry) MarshalToSizedBuffer(dAtA []byte) (int, err copy(dAtA[i:], m.XXX_unrecognized) } if m.Expires != nil { - n109, err109 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) - if err109 != nil { - return 0, err109 + n112, err112 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) + if err112 != nil { + return 0, err112 } - i -= n109 - i = encodeVarintAuthservice(dAtA, i, uint64(n109)) + i -= n112 + i = encodeVarintAuthservice(dAtA, i, uint64(n112)) i-- dAtA[i] = 0xa } @@ -28070,6 +28380,20 @@ func (m *PresenceMFAChallengeRequest) MarshalToSizedBuffer(dAtA []byte) (int, er i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.BrowserMfaRequestId) > 0 { + i -= len(m.BrowserMfaRequestId) + copy(dAtA[i:], m.BrowserMfaRequestId) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.BrowserMfaRequestId))) + i-- + dAtA[i] = 0x2a + } + if len(m.BrowserMFATSHRedirectURL) > 0 { + i -= len(m.BrowserMFATSHRedirectURL) + copy(dAtA[i:], m.BrowserMFATSHRedirectURL) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.BrowserMFATSHRedirectURL))) + i-- + dAtA[i] = 0x22 + } if len(m.ProxyAddress) > 0 { i -= len(m.ProxyAddress) copy(dAtA[i:], m.ProxyAddress) @@ -32722,6 +33046,10 @@ func (m *MFAAuthenticateChallenge) Size() (n int) { l = m.SSOChallenge.Size() n += 1 + l + sovAuthservice(uint64(l)) } + if m.BrowserMFAChallenge != nil { + l = m.BrowserMFAChallenge.Size() + n += 1 + l + sovAuthservice(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -32779,6 +33107,18 @@ func (m *MFAAuthenticateResponse_SSO) Size() (n int) { } return n } +func (m *MFAAuthenticateResponse_Browser) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Browser != nil { + l = m.Browser.Size() + n += 1 + l + sovAuthservice(uint64(l)) + } + return n +} func (m *TOTPChallenge) Size() (n int) { if m == nil { return 0 @@ -32851,6 +33191,42 @@ func (m *SSOResponse) Size() (n int) { return n } +func (m *BrowserMFAChallenge) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.RequestId) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *BrowserMFAResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.RequestId) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + if m.WebauthnResponse != nil { + l = m.WebauthnResponse.Size() + n += 1 + l + sovAuthservice(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *MFARegisterChallenge) Size() (n int) { if m == nil { return 0 @@ -34346,6 +34722,14 @@ func (m *CreateAuthenticateChallengeRequest) Size() (n int) { if l > 0 { n += 1 + l + sovAuthservice(uint64(l)) } + l = len(m.BrowserMFATSHRedirectURL) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + l = len(m.BrowserMFARequestID) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -35193,6 +35577,14 @@ func (m *PresenceMFAChallengeRequest) Size() (n int) { if l > 0 { n += 1 + l + sovAuthservice(uint64(l)) } + l = len(m.BrowserMFATSHRedirectURL) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + l = len(m.BrowserMfaRequestId) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -49047,6 +49439,42 @@ func (m *MFAAuthenticateChallenge) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BrowserMFAChallenge", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.BrowserMFAChallenge == nil { + m.BrowserMFAChallenge = &BrowserMFAChallenge{} + } + if err := m.BrowserMFAChallenge.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) @@ -49203,6 +49631,41 @@ func (m *MFAAuthenticateResponse) Unmarshal(dAtA []byte) error { } m.Response = &MFAAuthenticateResponse_SSO{v} iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Browser", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &BrowserMFAResponse{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Response = &MFAAuthenticateResponse_Browser{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) @@ -49625,6 +50088,208 @@ func (m *SSOResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *BrowserMFAChallenge) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: BrowserMFAChallenge: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BrowserMFAChallenge: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequestId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RequestId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAuthservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuthservice + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *BrowserMFAResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: BrowserMFAResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BrowserMFAResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequestId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RequestId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WebauthnResponse", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.WebauthnResponse == nil { + m.WebauthnResponse = &webauthn.CredentialAssertionResponse{} + } + if err := m.WebauthnResponse.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAuthservice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAuthservice + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *MFARegisterChallenge) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -57581,6 +58246,70 @@ func (m *CreateAuthenticateChallengeRequest) Unmarshal(dAtA []byte) error { } m.ProxyAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BrowserMFATSHRedirectURL", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BrowserMFATSHRedirectURL = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BrowserMFARequestID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BrowserMFARequestID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) @@ -61935,6 +62664,70 @@ func (m *PresenceMFAChallengeRequest) Unmarshal(dAtA []byte) error { } m.ProxyAddress = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BrowserMFATSHRedirectURL", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BrowserMFATSHRedirectURL = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BrowserMfaRequestId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAuthservice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthAuthservice + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAuthservice + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BrowserMfaRequestId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) diff --git a/api/constants/constants.go b/api/constants/constants.go index 23f656a7c7fc0..e2d5946b4e69a 100644 --- a/api/constants/constants.go +++ b/api/constants/constants.go @@ -67,6 +67,9 @@ const ( // Github means authentication will happen remotely using a Github connector. Github = "github" + // BrowserMFA is for CLI flows that delegate MFA to the browser. + BrowserMFA = "browser_mfa" + // HumanDateFormatSeconds is a human readable date formatting with seconds HumanDateFormatSeconds = "Jan 2 2006 15:04:05 UTC" diff --git a/api/gen/proto/go/teleport/mfa/v1/challenge.pb.go b/api/gen/proto/go/teleport/mfa/v1/challenge.pb.go new file mode 100644 index 0000000000000..6fd604a88fb4f --- /dev/null +++ b/api/gen/proto/go/teleport/mfa/v1/challenge.pb.go @@ -0,0 +1,579 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: teleport/mfa/v1/challenge.proto + +package mfav1 + +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + webauthn "github.com/gravitational/teleport/api/types/webauthn" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// BrowserMFAChallenge contains browser MFA request details to perform a browser MFA check. +type BrowserMFAChallenge struct { + // RequestId is the ID of a browser MFA request. + RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BrowserMFAChallenge) Reset() { *m = BrowserMFAChallenge{} } +func (m *BrowserMFAChallenge) String() string { return proto.CompactTextString(m) } +func (*BrowserMFAChallenge) ProtoMessage() {} +func (*BrowserMFAChallenge) Descriptor() ([]byte, []int) { + return fileDescriptor_1f1f9c8bc6573320, []int{0} +} +func (m *BrowserMFAChallenge) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BrowserMFAChallenge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BrowserMFAChallenge.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *BrowserMFAChallenge) XXX_Merge(src proto.Message) { + xxx_messageInfo_BrowserMFAChallenge.Merge(m, src) +} +func (m *BrowserMFAChallenge) XXX_Size() int { + return m.Size() +} +func (m *BrowserMFAChallenge) XXX_DiscardUnknown() { + xxx_messageInfo_BrowserMFAChallenge.DiscardUnknown(m) +} + +var xxx_messageInfo_BrowserMFAChallenge proto.InternalMessageInfo + +func (m *BrowserMFAChallenge) GetRequestId() string { + if m != nil { + return m.RequestId + } + return "" +} + +// BrowserMFAResponse is a response to BrowserMFAChallenge. +type BrowserMFAResponse struct { + // RequestId is the ID of a browser MFA request. + RequestId string `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"` + // WebauthnResponse is the WebAuthn credential assertion response from the browser MFA flow. + WebauthnResponse *webauthn.CredentialAssertionResponse `protobuf:"bytes,2,opt,name=webauthn_response,json=webauthnResponse,proto3" json:"webauthn_response,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BrowserMFAResponse) Reset() { *m = BrowserMFAResponse{} } +func (m *BrowserMFAResponse) String() string { return proto.CompactTextString(m) } +func (*BrowserMFAResponse) ProtoMessage() {} +func (*BrowserMFAResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_1f1f9c8bc6573320, []int{1} +} +func (m *BrowserMFAResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BrowserMFAResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BrowserMFAResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *BrowserMFAResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_BrowserMFAResponse.Merge(m, src) +} +func (m *BrowserMFAResponse) XXX_Size() int { + return m.Size() +} +func (m *BrowserMFAResponse) XXX_DiscardUnknown() { + xxx_messageInfo_BrowserMFAResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_BrowserMFAResponse proto.InternalMessageInfo + +func (m *BrowserMFAResponse) GetRequestId() string { + if m != nil { + return m.RequestId + } + return "" +} + +func (m *BrowserMFAResponse) GetWebauthnResponse() *webauthn.CredentialAssertionResponse { + if m != nil { + return m.WebauthnResponse + } + return nil +} + +func init() { + proto.RegisterType((*BrowserMFAChallenge)(nil), "teleport.mfa.v1.BrowserMFAChallenge") + proto.RegisterType((*BrowserMFAResponse)(nil), "teleport.mfa.v1.BrowserMFAResponse") +} + +func init() { proto.RegisterFile("teleport/mfa/v1/challenge.proto", fileDescriptor_1f1f9c8bc6573320) } + +var fileDescriptor_1f1f9c8bc6573320 = []byte{ + // 272 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0xb1, 0x4e, 0xf3, 0x30, + 0x14, 0x85, 0xe5, 0x7f, 0xf8, 0xa5, 0x9a, 0x01, 0x08, 0x4b, 0x85, 0x44, 0xa9, 0x2a, 0x21, 0x75, + 0x21, 0x57, 0x01, 0x36, 0xa6, 0xb6, 0x12, 0x82, 0x81, 0x25, 0x03, 0x03, 0x4b, 0x75, 0x93, 0xdc, + 0x38, 0x96, 0x1c, 0x3b, 0xd8, 0x4e, 0xaa, 0x3e, 0x01, 0xaf, 0xc6, 0xc8, 0x23, 0xa0, 0x3c, 0x09, + 0xa2, 0xd4, 0x41, 0x62, 0x61, 0xb3, 0x8e, 0xcf, 0x77, 0xcf, 0xbd, 0x87, 0x9f, 0x7b, 0x52, 0xd4, + 0x18, 0xeb, 0xa1, 0x2e, 0x11, 0xba, 0x04, 0xf2, 0x0a, 0x95, 0x22, 0x2d, 0x28, 0x6e, 0xac, 0xf1, + 0x26, 0x3a, 0x0c, 0x86, 0xb8, 0x2e, 0x31, 0xee, 0x92, 0xd3, 0xcb, 0x81, 0x50, 0x24, 0x30, 0xdf, + 0x82, 0xdf, 0x36, 0xe4, 0x60, 0x43, 0x19, 0xb6, 0xbe, 0xd2, 0xc3, 0xe3, 0x9b, 0x9f, 0xdd, 0xf0, + 0x93, 0xa5, 0x35, 0x1b, 0x47, 0xf6, 0xf1, 0x6e, 0xb1, 0x0a, 0xc3, 0xa3, 0x33, 0xce, 0x2d, 0xbd, + 0xb4, 0xe4, 0xfc, 0x5a, 0x16, 0x63, 0x36, 0x65, 0xf3, 0x51, 0x3a, 0xda, 0x2b, 0x0f, 0xc5, 0xec, + 0x95, 0xf1, 0xe8, 0x07, 0x4b, 0xc9, 0x35, 0x46, 0xbb, 0xbf, 0xa8, 0x28, 0xe5, 0xc7, 0x21, 0x7d, + 0x6d, 0xf7, 0xcc, 0xf8, 0xdf, 0x94, 0xcd, 0x0f, 0xae, 0x2e, 0xe2, 0x61, 0xaf, 0x95, 0xa5, 0x82, + 0xb4, 0x97, 0xa8, 0x16, 0xce, 0x91, 0xf5, 0xd2, 0xe8, 0x10, 0x90, 0x1e, 0x05, 0x57, 0x50, 0x96, + 0x4f, 0x6f, 0xfd, 0x84, 0xbd, 0xf7, 0x13, 0xf6, 0xd1, 0x4f, 0xd8, 0xf3, 0xbd, 0x90, 0xbe, 0x6a, + 0xb3, 0x38, 0x37, 0x35, 0x08, 0x8b, 0x9d, 0xf4, 0xf8, 0xc5, 0xa3, 0x82, 0xa1, 0x15, 0x6c, 0x24, + 0x08, 0xd2, 0xb0, 0x3b, 0x1f, 0x84, 0x81, 0x5f, 0x0d, 0xdf, 0xd6, 0x25, 0x76, 0x49, 0xf6, 0x7f, + 0xf7, 0x7f, 0xfd, 0x19, 0x00, 0x00, 0xff, 0xff, 0x88, 0xd3, 0x34, 0xfc, 0x81, 0x01, 0x00, 0x00, +} + +func (m *BrowserMFAChallenge) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *BrowserMFAChallenge) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BrowserMFAChallenge) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.RequestId) > 0 { + i -= len(m.RequestId) + copy(dAtA[i:], m.RequestId) + i = encodeVarintChallenge(dAtA, i, uint64(len(m.RequestId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *BrowserMFAResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *BrowserMFAResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BrowserMFAResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if m.WebauthnResponse != nil { + { + size, err := m.WebauthnResponse.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintChallenge(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.RequestId) > 0 { + i -= len(m.RequestId) + copy(dAtA[i:], m.RequestId) + i = encodeVarintChallenge(dAtA, i, uint64(len(m.RequestId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintChallenge(dAtA []byte, offset int, v uint64) int { + offset -= sovChallenge(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *BrowserMFAChallenge) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.RequestId) + if l > 0 { + n += 1 + l + sovChallenge(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *BrowserMFAResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.RequestId) + if l > 0 { + n += 1 + l + sovChallenge(uint64(l)) + } + if m.WebauthnResponse != nil { + l = m.WebauthnResponse.Size() + n += 1 + l + sovChallenge(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func sovChallenge(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozChallenge(x uint64) (n int) { + return sovChallenge(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *BrowserMFAChallenge) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenge + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: BrowserMFAChallenge: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BrowserMFAChallenge: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequestId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenge + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthChallenge + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenge + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RequestId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipChallenge(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthChallenge + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *BrowserMFAResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenge + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: BrowserMFAResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BrowserMFAResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RequestId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenge + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthChallenge + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenge + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RequestId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WebauthnResponse", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenge + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthChallenge + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthChallenge + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.WebauthnResponse == nil { + m.WebauthnResponse = &webauthn.CredentialAssertionResponse{} + } + if err := m.WebauthnResponse.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipChallenge(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthChallenge + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipChallenge(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowChallenge + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowChallenge + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowChallenge + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthChallenge + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupChallenge + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthChallenge + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthChallenge = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowChallenge = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupChallenge = fmt.Errorf("proto: unexpected end of group") +) diff --git a/api/gen/proto/go/teleport/mfa/v1/service.pb.go b/api/gen/proto/go/teleport/mfa/v1/service.pb.go new file mode 100644 index 0000000000000..cf0488e689528 --- /dev/null +++ b/api/gen/proto/go/teleport/mfa/v1/service.pb.go @@ -0,0 +1,530 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: teleport/mfa/v1/service.proto + +package mfav1 + +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// CompleteBrowserMFAChallengeRequest is used to complete an MFA response +// during a browser-based MFA authentication flow. +type CompleteBrowserMFAChallengeRequest struct { + BrowserMfaResponse *BrowserMFAResponse `protobuf:"bytes,1,opt,name=browser_mfa_response,json=browserMfaResponse,proto3" json:"browser_mfa_response,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CompleteBrowserMFAChallengeRequest) Reset() { *m = CompleteBrowserMFAChallengeRequest{} } +func (m *CompleteBrowserMFAChallengeRequest) String() string { return proto.CompactTextString(m) } +func (*CompleteBrowserMFAChallengeRequest) ProtoMessage() {} +func (*CompleteBrowserMFAChallengeRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_62d1ff43205b9484, []int{0} +} +func (m *CompleteBrowserMFAChallengeRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CompleteBrowserMFAChallengeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CompleteBrowserMFAChallengeRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CompleteBrowserMFAChallengeRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CompleteBrowserMFAChallengeRequest.Merge(m, src) +} +func (m *CompleteBrowserMFAChallengeRequest) XXX_Size() int { + return m.Size() +} +func (m *CompleteBrowserMFAChallengeRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CompleteBrowserMFAChallengeRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CompleteBrowserMFAChallengeRequest proto.InternalMessageInfo + +func (m *CompleteBrowserMFAChallengeRequest) GetBrowserMfaResponse() *BrowserMFAResponse { + if m != nil { + return m.BrowserMfaResponse + } + return nil +} + +// CompleteBrowserMFAChallengeResponse contains the redirect URL to send +// the user back to after successfully completing browser-based MFA authentication. +type CompleteBrowserMFAChallengeResponse struct { + // tsh_redirect_url is the callback URL to tsh's local HTTP server with the encrypted WebAuthn response. + // Format: http://127.0.0.1:[random_port]/callback?response={encrypted_webauthn_response} + TshRedirectUrl string `protobuf:"bytes,1,opt,name=tsh_redirect_url,json=tshRedirectUrl,proto3" json:"tsh_redirect_url,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CompleteBrowserMFAChallengeResponse) Reset() { *m = CompleteBrowserMFAChallengeResponse{} } +func (m *CompleteBrowserMFAChallengeResponse) String() string { return proto.CompactTextString(m) } +func (*CompleteBrowserMFAChallengeResponse) ProtoMessage() {} +func (*CompleteBrowserMFAChallengeResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_62d1ff43205b9484, []int{1} +} +func (m *CompleteBrowserMFAChallengeResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CompleteBrowserMFAChallengeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CompleteBrowserMFAChallengeResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CompleteBrowserMFAChallengeResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CompleteBrowserMFAChallengeResponse.Merge(m, src) +} +func (m *CompleteBrowserMFAChallengeResponse) XXX_Size() int { + return m.Size() +} +func (m *CompleteBrowserMFAChallengeResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CompleteBrowserMFAChallengeResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CompleteBrowserMFAChallengeResponse proto.InternalMessageInfo + +func (m *CompleteBrowserMFAChallengeResponse) GetTshRedirectUrl() string { + if m != nil { + return m.TshRedirectUrl + } + return "" +} + +func init() { + proto.RegisterType((*CompleteBrowserMFAChallengeRequest)(nil), "teleport.mfa.v1.CompleteBrowserMFAChallengeRequest") + proto.RegisterType((*CompleteBrowserMFAChallengeResponse)(nil), "teleport.mfa.v1.CompleteBrowserMFAChallengeResponse") +} + +func init() { proto.RegisterFile("teleport/mfa/v1/service.proto", fileDescriptor_62d1ff43205b9484) } + +var fileDescriptor_62d1ff43205b9484 = []byte{ + // 301 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x91, 0xcd, 0x4a, 0xc4, 0x30, + 0x14, 0x85, 0xc9, 0x46, 0x30, 0x82, 0x4a, 0x70, 0x21, 0x23, 0x8e, 0x32, 0xb3, 0x99, 0x55, 0x42, + 0x67, 0xdc, 0xb9, 0x9a, 0x19, 0x18, 0xdc, 0x14, 0xa1, 0x32, 0x2e, 0xdc, 0x94, 0xb4, 0xde, 0xb6, + 0x81, 0xa4, 0xa9, 0x49, 0x5a, 0x17, 0xbe, 0x80, 0x6f, 0xe0, 0x2b, 0xb9, 0xf4, 0x11, 0xa4, 0x4f, + 0x22, 0xf4, 0x47, 0xa1, 0xc2, 0x88, 0xdb, 0x7b, 0xce, 0xbd, 0x5f, 0x72, 0x0e, 0x3e, 0x77, 0x20, + 0xa1, 0xd0, 0xc6, 0x31, 0x95, 0x70, 0x56, 0x79, 0xcc, 0x82, 0xa9, 0x44, 0x0c, 0xb4, 0x30, 0xda, + 0x69, 0x72, 0xd4, 0xcb, 0x54, 0x25, 0x9c, 0x56, 0xde, 0xe8, 0x62, 0xe8, 0x8f, 0x33, 0x2e, 0x25, + 0xe4, 0x69, 0xb7, 0x31, 0x79, 0xc1, 0x93, 0xb5, 0x56, 0x85, 0x04, 0x07, 0x2b, 0xa3, 0x9f, 0x2d, + 0x18, 0x7f, 0xb3, 0x5c, 0xf7, 0xa6, 0x00, 0x9e, 0x4a, 0xb0, 0x8e, 0x6c, 0xf1, 0x49, 0xd4, 0xaa, + 0xa1, 0x4a, 0x78, 0x68, 0xc0, 0x16, 0x3a, 0xb7, 0x70, 0x8a, 0x2e, 0xd1, 0xec, 0x60, 0x3e, 0xa5, + 0x03, 0x2c, 0xfd, 0x39, 0x15, 0x74, 0xd6, 0x80, 0x74, 0x07, 0xfc, 0x84, 0xf7, 0xb3, 0xc9, 0x2d, + 0x9e, 0xee, 0x84, 0xb7, 0x36, 0x32, 0xc3, 0xc7, 0xce, 0x66, 0xa1, 0x81, 0x47, 0x61, 0x20, 0x76, + 0x61, 0x69, 0x64, 0x43, 0xde, 0x0f, 0x0e, 0x9d, 0xcd, 0x82, 0x6e, 0xbc, 0x35, 0x72, 0xfe, 0x86, + 0x30, 0xf6, 0x37, 0xcb, 0xbb, 0x36, 0x14, 0xf2, 0x8a, 0xf0, 0xd9, 0x0e, 0x00, 0x59, 0xfc, 0x7a, + 0xf8, 0xdf, 0x59, 0x8c, 0xae, 0xfe, 0xb7, 0xd4, 0xfe, 0x61, 0x75, 0xff, 0x5e, 0x8f, 0xd1, 0x47, + 0x3d, 0x46, 0x9f, 0xf5, 0x18, 0x3d, 0xdc, 0xa4, 0xc2, 0x65, 0x65, 0x44, 0x63, 0xad, 0x58, 0x6a, + 0x78, 0x25, 0x1c, 0x77, 0x42, 0xe7, 0x5c, 0xb2, 0xef, 0xbe, 0x78, 0x21, 0x58, 0x0a, 0x39, 0x6b, + 0x6a, 0x62, 0xa9, 0x66, 0x83, 0x26, 0xaf, 0x55, 0xc2, 0x2b, 0x2f, 0xda, 0x6b, 0xf4, 0xc5, 0x57, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x7b, 0x75, 0x18, 0xd0, 0x19, 0x02, 0x00, 0x00, +} + +func (m *CompleteBrowserMFAChallengeRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CompleteBrowserMFAChallengeRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CompleteBrowserMFAChallengeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if m.BrowserMfaResponse != nil { + { + size, err := m.BrowserMfaResponse.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintService(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CompleteBrowserMFAChallengeResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CompleteBrowserMFAChallengeResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CompleteBrowserMFAChallengeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + if len(m.TshRedirectUrl) > 0 { + i -= len(m.TshRedirectUrl) + copy(dAtA[i:], m.TshRedirectUrl) + i = encodeVarintService(dAtA, i, uint64(len(m.TshRedirectUrl))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintService(dAtA []byte, offset int, v uint64) int { + offset -= sovService(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *CompleteBrowserMFAChallengeRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BrowserMfaResponse != nil { + l = m.BrowserMfaResponse.Size() + n += 1 + l + sovService(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *CompleteBrowserMFAChallengeResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.TshRedirectUrl) + if l > 0 { + n += 1 + l + sovService(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func sovService(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozService(x uint64) (n int) { + return sovService(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *CompleteBrowserMFAChallengeRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CompleteBrowserMFAChallengeRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CompleteBrowserMFAChallengeRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BrowserMfaResponse", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthService + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthService + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.BrowserMfaResponse == nil { + m.BrowserMfaResponse = &BrowserMFAResponse{} + } + if err := m.BrowserMfaResponse.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipService(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthService + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CompleteBrowserMFAChallengeResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CompleteBrowserMFAChallengeResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CompleteBrowserMFAChallengeResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TshRedirectUrl", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowService + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthService + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthService + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TshRedirectUrl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipService(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthService + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipService(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowService + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowService + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowService + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthService + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupService + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthService + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthService = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowService = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupService = fmt.Errorf("proto: unexpected end of group") +) diff --git a/api/gen/proto/go/teleport/mfa/v1/service_grpc.pb.go b/api/gen/proto/go/teleport/mfa/v1/service_grpc.pb.go new file mode 100644 index 0000000000000..cc591660babbf --- /dev/null +++ b/api/gen/proto/go/teleport/mfa/v1/service_grpc.pb.go @@ -0,0 +1,155 @@ +// Copyright 2025 Gravitational, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc (unknown) +// source: teleport/mfa/v1/service.proto + +package mfav1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + MFAService_CompleteBrowserMFAChallenge_FullMethodName = "/teleport.mfa.v1.MFAService/CompleteBrowserMFAChallenge" +) + +// MFAServiceClient is the client API for MFAService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// MFAService defines the Multi-Factor Authentication (MFA) service. While this service is currently focused on user +// sessions, new MFA related RPCs should be added here instead of the AuthService, to maintain a clear separation of +// concerns instead of further bloating the AuthService. +type MFAServiceClient interface { + // CompleteBrowserMFAChallenge completes a browser MFA challenge request by encrypting + // it and returning it to the browser. + // This is called when a user has been sent to the browser to solve an MFA challenge + // that was triggered by tsh or tctl. When the user solves the MFA challenge, the + // response is sent to this RPC. CompleteBrowserMFAChallenge receives the MFA + // response, encrypts it, appends it to tsh/tctl's callback URL and returns it to the browser. + // More info: https://github.com/gravitational/teleport/blob/master/rfd/0233-tsh-browser-mfa.md + CompleteBrowserMFAChallenge(ctx context.Context, in *CompleteBrowserMFAChallengeRequest, opts ...grpc.CallOption) (*CompleteBrowserMFAChallengeResponse, error) +} + +type mFAServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewMFAServiceClient(cc grpc.ClientConnInterface) MFAServiceClient { + return &mFAServiceClient{cc} +} + +func (c *mFAServiceClient) CompleteBrowserMFAChallenge(ctx context.Context, in *CompleteBrowserMFAChallengeRequest, opts ...grpc.CallOption) (*CompleteBrowserMFAChallengeResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CompleteBrowserMFAChallengeResponse) + err := c.cc.Invoke(ctx, MFAService_CompleteBrowserMFAChallenge_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MFAServiceServer is the server API for MFAService service. +// All implementations should embed UnimplementedMFAServiceServer +// for forward compatibility. +// +// MFAService defines the Multi-Factor Authentication (MFA) service. While this service is currently focused on user +// sessions, new MFA related RPCs should be added here instead of the AuthService, to maintain a clear separation of +// concerns instead of further bloating the AuthService. +type MFAServiceServer interface { + // CompleteBrowserMFAChallenge completes a browser MFA challenge request by encrypting + // it and returning it to the browser. + // This is called when a user has been sent to the browser to solve an MFA challenge + // that was triggered by tsh or tctl. When the user solves the MFA challenge, the + // response is sent to this RPC. CompleteBrowserMFAChallenge receives the MFA + // response, encrypts it, appends it to tsh/tctl's callback URL and returns it to the browser. + // More info: https://github.com/gravitational/teleport/blob/master/rfd/0233-tsh-browser-mfa.md + CompleteBrowserMFAChallenge(context.Context, *CompleteBrowserMFAChallengeRequest) (*CompleteBrowserMFAChallengeResponse, error) +} + +// UnimplementedMFAServiceServer should be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedMFAServiceServer struct{} + +func (UnimplementedMFAServiceServer) CompleteBrowserMFAChallenge(context.Context, *CompleteBrowserMFAChallengeRequest) (*CompleteBrowserMFAChallengeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CompleteBrowserMFAChallenge not implemented") +} +func (UnimplementedMFAServiceServer) testEmbeddedByValue() {} + +// UnsafeMFAServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MFAServiceServer will +// result in compilation errors. +type UnsafeMFAServiceServer interface { + mustEmbedUnimplementedMFAServiceServer() +} + +func RegisterMFAServiceServer(s grpc.ServiceRegistrar, srv MFAServiceServer) { + // If the following call pancis, it indicates UnimplementedMFAServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&MFAService_ServiceDesc, srv) +} + +func _MFAService_CompleteBrowserMFAChallenge_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CompleteBrowserMFAChallengeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MFAServiceServer).CompleteBrowserMFAChallenge(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MFAService_CompleteBrowserMFAChallenge_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MFAServiceServer).CompleteBrowserMFAChallenge(ctx, req.(*CompleteBrowserMFAChallengeRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// MFAService_ServiceDesc is the grpc.ServiceDesc for MFAService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var MFAService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "teleport.mfa.v1.MFAService", + HandlerType: (*MFAServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CompleteBrowserMFAChallenge", + Handler: _MFAService_CompleteBrowserMFAChallenge_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "teleport/mfa/v1/service.proto", +} diff --git a/api/mfa/ceremony.go b/api/mfa/ceremony.go index a6f438a8e568e..3e994ebc9c0ad 100644 --- a/api/mfa/ceremony.go +++ b/api/mfa/ceremony.go @@ -33,21 +33,21 @@ type Ceremony struct { CreateAuthenticateChallenge CreateAuthenticateChallengeFunc // PromptConstructor creates a prompt to prompt the user to solve an authentication challenge. PromptConstructor PromptConstructor - // SSOMFACeremonyConstructor is an optional SSO MFA ceremony constructor. If provided, - // the MFA ceremony will also attempt to retrieve an SSO MFA challenge. - SSOMFACeremonyConstructor SSOMFACeremonyConstructor + // MFACeremonyConstructor is an optional MFA ceremony constructor. If provided, + // the MFA ceremony will also attempt to retrieve an MFA challenge. + MFACeremonyConstructor MFACeremonyConstructor } -// SSOMFACeremony is an SSO MFA ceremony. -type SSOMFACeremony interface { +// CallbackCeremony is an SSO/Browser callback ceremony. +type CallbackCeremony interface { GetClientCallbackURL() string GetProxyAddress() string Run(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) Close() } -// SSOMFACeremonyConstructor constructs a new SSO MFA ceremony. -type SSOMFACeremonyConstructor func(ctx context.Context) (SSOMFACeremony, error) +// MFACeremonyConstructor constructs a new SSO or Browser MFA ceremony. +type MFACeremonyConstructor func(ctx context.Context) (CallbackCeremony, error) // CreateAuthenticateChallengeFunc is a function that creates an authentication challenge. type CreateAuthenticateChallengeFunc func(ctx context.Context, req *proto.CreateAuthenticateChallengeRequest) (*proto.MFAAuthenticateChallenge, error) @@ -61,16 +61,16 @@ func (c *Ceremony) Run(ctx context.Context, req *proto.CreateAuthenticateChallen return nil, trace.BadParameter("mfa ceremony must have CreateAuthenticateChallenge set in order to begin") } - // If available, prepare an SSO MFA ceremony and set the client redirect URL in the challenge - // request to request an SSO challenge in addition to other challenges. - if c.SSOMFACeremonyConstructor != nil { - ssoMFACeremony, err := c.SSOMFACeremonyConstructor(ctx) + // If available, prepare an MFA ceremony and set the client redirect URL in the challenge + // request to request an SSO or Browser MFA challenge in addition to other challenges. + if c.MFACeremonyConstructor != nil { + mfaCeremony, err := c.MFACeremonyConstructor(ctx) if err != nil { - // We may fail to start the SSO MFA flow in cases where the Proxy is down or broken. Fall - // back to skipping SSO MFA, especially since SSO MFA may not even be allowed on the server. - slog.DebugContext(ctx, "Failed to attempt SSO MFA, continuing with other MFA methods", "error", err) + // We may fail to start the MFA flow in cases where the Proxy is down or broken. Fall + // back to skipping SSO/Browser MFA, especially since SSO/Browser MFA may not even be allowed on the server. + slog.DebugContext(ctx, "Failed to attempt SSO/Browser MFA, continuing with other MFA methods", "error", err) } else { - defer ssoMFACeremony.Close() + defer mfaCeremony.Close() // req may be nil in cases where the ceremony's CreateAuthenticateChallenge sources // its own req or uses a different e.g. login. We should still provide the sso client @@ -79,9 +79,13 @@ func (c *Ceremony) Run(ctx context.Context, req *proto.CreateAuthenticateChallen req = new(proto.CreateAuthenticateChallengeRequest) } - req.SSOClientRedirectURL = ssoMFACeremony.GetClientCallbackURL() - req.ProxyAddress = ssoMFACeremony.GetProxyAddress() - promptOpts = append(promptOpts, withSSOMFACeremony(ssoMFACeremony)) + req.SSOClientRedirectURL = mfaCeremony.GetClientCallbackURL() + // Reuse the same callback server for Browser MFA because only one of + // SSO MFA or Browser MFA can be used. Sending both redirect URLs + // indicates to the server that both methods are available. + req.BrowserMFATSHRedirectURL = mfaCeremony.GetClientCallbackURL() + req.ProxyAddress = mfaCeremony.GetProxyAddress() + promptOpts = append(promptOpts, withSSOMFACeremony(mfaCeremony)) } } diff --git a/api/mfa/ceremony_test.go b/api/mfa/ceremony_test.go index 35cf8289720fc..a26946005ed13 100644 --- a/api/mfa/ceremony_test.go +++ b/api/mfa/ceremony_test.go @@ -160,15 +160,15 @@ func TestMFACeremony_SSO(t *testing.T) { } return mfa.PromptFunc(func(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { - if cfg.SSOMFACeremony == nil { - return nil, trace.BadParameter("expected sso mfa ceremony") + if cfg.CallbackCeremony == nil { + return nil, trace.BadParameter("expected mfa ceremony") } - return cfg.SSOMFACeremony.Run(ctx, chal) + return cfg.CallbackCeremony.Run(ctx, chal) }) }, - SSOMFACeremonyConstructor: func(ctx context.Context) (mfa.SSOMFACeremony, error) { - return &mockSSOMFACeremony{ + MFACeremonyConstructor: func(ctx context.Context) (mfa.CallbackCeremony, error) { + return &mockMFACeremony{ clientCallbackURL: "client-redirect", prompt: func(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { return testMFAResponse, nil @@ -187,23 +187,81 @@ func TestMFACeremony_SSO(t *testing.T) { require.Equal(t, testMFAResponse, resp) } -type mockSSOMFACeremony struct { +func TestMFACeremony_BrowserMFA(t *testing.T) { + t.Parallel() + ctx := context.Background() + expectedCallbackURL := "http://localhost:12345/?secret=X" + + testMFAChallenge := &proto.MFAAuthenticateChallenge{ + BrowserMFAChallenge: &proto.BrowserMFAChallenge{ + RequestId: "request-id", + }, + } + testMFAResponse := &proto.MFAAuthenticateResponse{ + Response: &proto.MFAAuthenticateResponse_Browser{ + Browser: &proto.BrowserMFAResponse{ + RequestId: "request-id", + }, + }, + } + + browserMFACeremony := &mfa.Ceremony{ + CreateAuthenticateChallenge: func(ctx context.Context, req *proto.CreateAuthenticateChallengeRequest) (*proto.MFAAuthenticateChallenge, error) { + require.NotNil(t, req) + require.Equal(t, expectedCallbackURL, req.BrowserMFATSHRedirectURL) + return testMFAChallenge, nil + }, + PromptConstructor: func(opts ...mfa.PromptOpt) mfa.Prompt { + cfg := new(mfa.PromptConfig) + for _, opt := range opts { + opt(cfg) + } + + return mfa.PromptFunc(func(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { + if cfg.CallbackCeremony == nil { + return nil, trace.BadParameter("expected mfa ceremony") + } + + return cfg.CallbackCeremony.Run(ctx, chal) + }) + }, + MFACeremonyConstructor: func(ctx context.Context) (mfa.CallbackCeremony, error) { + return &mockMFACeremony{ + clientCallbackURL: expectedCallbackURL, + prompt: func(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { + return testMFAResponse, nil + }, + }, nil + }, + } + + resp, err := browserMFACeremony.Run(ctx, &proto.CreateAuthenticateChallengeRequest{ + ChallengeExtensions: &mfav1.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + }, + MFARequiredCheck: &proto.IsMFARequiredRequest{}, + }) + require.NoError(t, err) + require.Equal(t, testMFAResponse, resp) +} + +type mockMFACeremony struct { clientCallbackURL string prompt mfa.PromptFunc } // GetClientCallbackURL returns the client callback URL. -func (m *mockSSOMFACeremony) GetClientCallbackURL() string { +func (m *mockMFACeremony) GetClientCallbackURL() string { return m.clientCallbackURL } -func (m *mockSSOMFACeremony) GetProxyAddress() string { +func (m *mockMFACeremony) GetProxyAddress() string { return "" } // Run the SSO MFA ceremony. -func (m *mockSSOMFACeremony) Run(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { +func (m *mockMFACeremony) Run(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { return m.prompt(ctx, chal) } -func (m *mockSSOMFACeremony) Close() {} +func (m *mockMFACeremony) Close() {} diff --git a/api/mfa/prompt.go b/api/mfa/prompt.go index 9efd9fcb1fe44..95eb568820e0a 100644 --- a/api/mfa/prompt.go +++ b/api/mfa/prompt.go @@ -54,8 +54,8 @@ type PromptConfig struct { // Extensions are the challenge extensions used to create the prompt's challenge. // Used to enrich certain prompts. Extensions *mfav1.ChallengeExtensions - // SSOMFACeremony is an SSO MFA ceremony. - SSOMFACeremony SSOMFACeremony + // CallbackCeremony is an SSO or Browser MFA ceremony. + CallbackCeremony CallbackCeremony } // DeviceDescriptor is a descriptor for a device, such as "registered". @@ -121,8 +121,8 @@ func WithPromptChallengeExtensions(exts *mfav1.ChallengeExtensions) PromptOpt { } // withSSOMFACeremony sets the SSO MFA ceremony for the MFA prompt. -func withSSOMFACeremony(ssoMFACeremony SSOMFACeremony) PromptOpt { +func withSSOMFACeremony(ssoMFACeremony CallbackCeremony) PromptOpt { return func(cfg *PromptConfig) { - cfg.SSOMFACeremony = ssoMFACeremony + cfg.CallbackCeremony = ssoMFACeremony } } diff --git a/api/proto/teleport/legacy/client/proto/authservice.proto b/api/proto/teleport/legacy/client/proto/authservice.proto index 66171602c1283..d13da4f3d4e1c 100644 --- a/api/proto/teleport/legacy/client/proto/authservice.proto +++ b/api/proto/teleport/legacy/client/proto/authservice.proto @@ -1317,6 +1317,8 @@ message MFAAuthenticateChallenge { // IdP redirect URL to perform an MFA check in the IdP and obtain an MFA token. // This token paired with the request id can then be used as MFA verification. SSOChallenge SSOChallenge = 5; + // Browser Challenge is an MFA challenge that the user solves in the browser. + BrowserMFAChallenge BrowserMFAChallenge = 6; } // MFAAuthenticateResponse is a response to MFAAuthenticateChallenge using one @@ -1327,6 +1329,7 @@ message MFAAuthenticateResponse { TOTPResponse TOTP = 2; webauthn.CredentialAssertionResponse Webauthn = 3; SSOResponse SSO = 4; + BrowserMFAResponse Browser = 5; } } @@ -1361,6 +1364,20 @@ message SSOResponse { string token = 2; } +// BrowserMFAChallenge contains browser MFA request details to perform a browser MFA check. +message BrowserMFAChallenge { + // RequestId is the ID of a browser MFA request. + string request_id = 1; +} + +// BrowserMFAResponse is a response to BrowserMFAChallenge. +message BrowserMFAResponse { + // RequestId is the ID of a browser MFA request. + string request_id = 1; + // WebauthnResponse is the WebAuthn credential assertion response from the browser MFA flow. + webauthn.CredentialAssertionResponse webauthn_response = 2; +} + // MFARegisterChallenge is a challenge for registering a new MFA device. message MFARegisterChallenge { // Request depends on the type of the MFA device being registered. @@ -2096,6 +2113,13 @@ message CreateAuthenticateChallengeRequest { // When using SSO MFA, this address is required to determine which URL to redirect the // user to when there are multiple options. string ProxyAddress = 8 [(gogoproto.jsontag) = "proxy_address,omitempty"]; + // BrowserMFATSHRedirectURL should be supplied if the client supports Browser MFA checks. + // This is used by tsh to provide the tsh callback URL for browser MFA flows. + string BrowserMFATSHRedirectURL = 9 [(gogoproto.jsontag) = "browser_mfa_tsh_redirect_url,omitempty"]; + // BrowserMFARequestID should be supplied when the browser is generating an MFA challenge + // for browser MFA. The auth server will look up the SSOMFASession with this ID to retrieve + // the challenge extensions and validate the requesting user matches the session owner. + string BrowserMFARequestID = 10 [(gogoproto.jsontag) = "browser_mfa_request_id,omitempty"]; } // CreatePrivilegeTokenRequest defines a request to obtain a privilege token. @@ -2481,6 +2505,13 @@ message PresenceMFAChallengeRequest { // ProxyAddress is the address of the proxy the client is connected to, used // to select a redirect URL for connectors that have more than one. string ProxyAddress = 3 [(gogoproto.jsontag) = "proxy_address,omitempty"]; + // BrowserMFATSHRedirectURL should be supplied if the client supports Browser MFA. + // If unset, the server will only return non-Browser MFA challenges. + string BrowserMFATSHRedirectURL = 4 [(gogoproto.jsontag) = "browser_mfa_tsh_redirect_url,omitempty"]; + // BrowserMFARequestID should be supplied when the browser is generating an MFA challenge + // for browser MFA. The auth server will look up the MFASession with this ID to retrieve + // the challenge extensions and validate the requesting user matches the session owner. + string browser_mfa_request_id = 5; } // PresenceMFAChallengeSend is a presence challenge request or response. diff --git a/api/proto/teleport/legacy/types/events/events.proto b/api/proto/teleport/legacy/types/events/events.proto index 0489bfb30136c..72c1d10ff2ebf 100644 --- a/api/proto/teleport/legacy/types/events/events.proto +++ b/api/proto/teleport/legacy/types/events/events.proto @@ -3793,6 +3793,9 @@ message MFADeviceMetadata { string DeviceID = 2 [(gogoproto.jsontag) = "mfa_device_uuid"]; // Type is the type of this MFA device. string DeviceType = 3 [(gogoproto.jsontag) = "mfa_device_type"]; + // MFAViaBrowser is true when the user used the Browser MFA flow to MFA in the + // browser to authenticate a CLI session. + bool MFAViaBrowser = 4 [(gogoproto.jsontag) = "mfa_via_browser,omitempty"]; } // MFADeviceAdd is emitted when a user adds an MFA device. diff --git a/api/proto/teleport/legacy/types/mfa_device.proto b/api/proto/teleport/legacy/types/mfa_device.proto new file mode 100644 index 0000000000000..2590b3b2ea875 --- /dev/null +++ b/api/proto/teleport/legacy/types/mfa_device.proto @@ -0,0 +1,24 @@ +// Copyright 2025 Gravitational, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package types; + +option go_package = "github.com/gravitational/teleport/api/types"; + +// BrowserMFADevice is a synthetic MFA device that is made available if a user +// has at least one WebAuthn device and no SSO MFA setup. This message doesn't +// require any fields, it just needs to exist so it can be an MFA option. +message BrowserMFADevice {} diff --git a/api/proto/teleport/legacy/types/types.proto b/api/proto/teleport/legacy/types/types.proto index ce5bcf8d33732..a984625f503cd 100644 --- a/api/proto/teleport/legacy/types/types.proto +++ b/api/proto/teleport/legacy/types/types.proto @@ -22,6 +22,7 @@ import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; import "teleport/attestation/v1/attestation.proto"; import "teleport/componentfeatures/v1/component_features.proto"; +import "teleport/legacy/types/mfa_device.proto"; import "teleport/legacy/types/resources.proto"; import "teleport/legacy/types/trusted_device_requirement.proto"; import "teleport/legacy/types/wrappers/wrappers.proto"; @@ -2802,6 +2803,20 @@ message AuthPreferenceSpecV2 { // StableUnixUserConfig contains the cluster-wide configuration for stable // UNIX users. StableUNIXUserConfig stable_unix_user_config = 22; + + reserved 23; // AllowBrowserAuthentication replaced by AllowCLIAuthViaBrowser + reserved "AllowBrowserAuthentication"; + + // AllowCLIAuthViaBrowser enables/disables browser-based authentication for + // authenticating CLI sessions. + // When set to false, authentication flows that require a browser will be disabled. + // Defaults to true if the Webauthn is configured, defaults to false + // otherwise. + BoolValue AllowCLIAuthViaBrowser = 24 [ + (gogoproto.nullable) = true, + (gogoproto.jsontag) = "allow_cli_auth_via_browser,omitempty", + (gogoproto.customtype) = "BoolOption" + ]; } // StableUNIXUserConfig contains the cluster-wide configuration for stable UNIX @@ -4682,6 +4697,7 @@ message MFADevice { U2FDevice u2f = 9; WebauthnDevice webauthn = 10; SSOMFADevice sso = 11; + BrowserMFADevice browser = 12; } } diff --git a/api/proto/teleport/mfa/v1/challenge.proto b/api/proto/teleport/mfa/v1/challenge.proto new file mode 100644 index 0000000000000..4afce94aba64e --- /dev/null +++ b/api/proto/teleport/mfa/v1/challenge.proto @@ -0,0 +1,35 @@ +// Copyright 2025 Gravitational, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package teleport.mfa.v1; + +import "teleport/legacy/types/webauthn/webauthn.proto"; + +option go_package = "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1;mfav1"; + +// BrowserMFAChallenge contains browser MFA request details to perform a browser MFA check. +message BrowserMFAChallenge { + // RequestId is the ID of a browser MFA request. + string request_id = 1; +} + +// BrowserMFAResponse is a response to BrowserMFAChallenge. +message BrowserMFAResponse { + // RequestId is the ID of a browser MFA request. + string request_id = 1; + // WebauthnResponse is the WebAuthn credential assertion response from the browser MFA flow. + webauthn.CredentialAssertionResponse webauthn_response = 2; +} diff --git a/api/proto/teleport/mfa/v1/service.proto b/api/proto/teleport/mfa/v1/service.proto new file mode 100644 index 0000000000000..2a134bfc4b69c --- /dev/null +++ b/api/proto/teleport/mfa/v1/service.proto @@ -0,0 +1,49 @@ +// Copyright 2025 Gravitational, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +syntax = "proto3"; + +package teleport.mfa.v1; + +import "teleport/mfa/v1/challenge.proto"; + +option go_package = "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1;mfav1"; + +// MFAService defines the Multi-Factor Authentication (MFA) service. While this service is currently focused on user +// sessions, new MFA related RPCs should be added here instead of the AuthService, to maintain a clear separation of +// concerns instead of further bloating the AuthService. +service MFAService { + // CompleteBrowserMFAChallenge completes a browser MFA challenge request by encrypting + // it and returning it to the browser. + // This is called when a user has been sent to the browser to solve an MFA challenge + // that was triggered by tsh or tctl. When the user solves the MFA challenge, the + // response is sent to this RPC. CompleteBrowserMFAChallenge receives the MFA + // response, encrypts it, appends it to tsh/tctl's callback URL and returns it to the browser. + // More info: https://github.com/gravitational/teleport/blob/master/rfd/0233-tsh-browser-mfa.md + rpc CompleteBrowserMFAChallenge(CompleteBrowserMFAChallengeRequest) returns (CompleteBrowserMFAChallengeResponse); +} + +// CompleteBrowserMFAChallengeRequest is used to complete an MFA response +// during a browser-based MFA authentication flow. +message CompleteBrowserMFAChallengeRequest { + BrowserMFAResponse browser_mfa_response = 1; +} + +// CompleteBrowserMFAChallengeResponse contains the redirect URL to send +// the user back to after successfully completing browser-based MFA authentication. +message CompleteBrowserMFAChallengeResponse { + // tsh_redirect_url is the callback URL to tsh's local HTTP server with the encrypted WebAuthn response. + // Format: http://127.0.0.1:[random_port]/callback?response={encrypted_webauthn_response} + string tsh_redirect_url = 1; +} diff --git a/api/types/authentication.go b/api/types/authentication.go index d02a3519288a4..d495155f695c6 100644 --- a/api/types/authentication.go +++ b/api/types/authentication.go @@ -124,6 +124,11 @@ type AuthPreference interface { // SetAllowHeadless sets the value of the allow headless setting. SetAllowHeadless(b bool) + // GetAllowCLIAuthViaBrowser returns if cli auth via browser is allowed by cluster settings. + GetAllowCLIAuthViaBrowser() bool + // SetAllowCLIAuthViaBrowser sets the value of the allow cli auth via browser setting. + SetAllowCLIAuthViaBrowser(b bool) + // SetRequireMFAType sets the type of MFA requirement enforced for this cluster. SetRequireMFAType(RequireMFAType) // GetRequireMFAType returns the type of MFA requirement enforced for this cluster. @@ -459,6 +464,22 @@ func (c *AuthPreferenceV2) SetAllowHeadless(b bool) { c.Spec.AllowHeadless = NewBoolOption(b) } +// GetAllowCLIAuthViaBrowser returns whether cli auth via browser is +// allowed. If it's not explicitly configured, it defaults to true when +// WebAuthn is enabled as a second factor. +func (c *AuthPreferenceV2) GetAllowCLIAuthViaBrowser() bool { + if c.Spec.AllowCLIAuthViaBrowser != nil { + return c.Spec.AllowCLIAuthViaBrowser.Value + } + + // Default to enabled when WebAuthn is enabled. + return c.IsSecondFactorWebauthnAllowed() +} + +func (c *AuthPreferenceV2) SetAllowCLIAuthViaBrowser(b bool) { + c.Spec.AllowCLIAuthViaBrowser = NewBoolOption(b) +} + // SetRequireMFAType sets the type of MFA requirement enforced for this cluster. func (c *AuthPreferenceV2) SetRequireMFAType(t RequireMFAType) { c.Spec.RequireMFAType = t @@ -801,6 +822,11 @@ func (c *AuthPreferenceV2) CheckAndSetDefaults() error { return trace.BadParameter("missing required Webauthn configuration for headless=true") } + // Validate AllowCLIAuthViaBrowser. WebAuthn is required for cli auth via browser. + if !hasWebauthn && c.Spec.AllowCLIAuthViaBrowser != nil && c.Spec.AllowCLIAuthViaBrowser.Value { + return trace.BadParameter("missing required Webauthn configuration for allow_cli_auth_via_browser=true") + } + // Prevent local lockout by disabling local second factor methods. if c.GetAllowLocalAuth() && c.IsSecondFactorEnforced() && !c.IsSecondFactorLocalAllowed() { if c.IsSecondFactorSSOAllowed() { diff --git a/api/types/authentication_authpreference_test.go b/api/types/authentication_authpreference_test.go index 1f674985fa7b1..a5483ae852e6d 100644 --- a/api/types/authentication_authpreference_test.go +++ b/api/types/authentication_authpreference_test.go @@ -632,6 +632,83 @@ func TestAuthPreferenceV2_CheckAndSetDefaults_secondFactor(t *testing.T) { }, wantErr: "invalid local connector", }, + // AllowCLIAuthViaBrowser + { + name: "OK AllowCLIAuthViaBrowser defaults to false without Webauthn", + secondFactors: []constants.SecondFactorType{ + constants.SecondFactorOff, + constants.SecondFactorOTP, + }, + spec: types.AuthPreferenceSpecV2{ + Type: constants.Local, + AllowCLIAuthViaBrowser: nil, // aka unset + }, + assertFn: func(t *testing.T, cap *types.AuthPreferenceV2) { + assert.False(t, cap.GetAllowCLIAuthViaBrowser(), "AllowCLIAuthViaBrowser") + }, + }, + { + name: "OK AllowCLIAuthViaBrowser=false without Webauthn", + secondFactors: []constants.SecondFactorType{ + constants.SecondFactorOff, + constants.SecondFactorOTP, + }, + spec: types.AuthPreferenceSpecV2{ + Type: constants.Local, + AllowCLIAuthViaBrowser: types.NewBoolOption(false), + }, + assertFn: func(t *testing.T, cap *types.AuthPreferenceV2) { + assert.False(t, cap.GetAllowCLIAuthViaBrowser(), "AllowCLIAuthViaBrowser") + }, + }, + { + name: "NOK AllowCLIAuthViaBrowser=true without Webauthn", + secondFactors: []constants.SecondFactorType{ + constants.SecondFactorOff, + constants.SecondFactorOTP, + }, + spec: types.AuthPreferenceSpecV2{ + Type: constants.Local, + AllowCLIAuthViaBrowser: types.NewBoolOption(true), + }, + wantErr: "required Webauthn", + }, + { + name: "OK AllowCLIAuthViaBrowser defaults to true with Webauthn", + secondFactors: secondFactorWebActive, + spec: types.AuthPreferenceSpecV2{ + Type: constants.Local, + Webauthn: minimalWeb, + AllowCLIAuthViaBrowser: nil, // aka unset + }, + assertFn: func(t *testing.T, cap *types.AuthPreferenceV2) { + assert.True(t, cap.GetAllowCLIAuthViaBrowser(), "AllowCLIAuthViaBrowser") + }, + }, + { + name: "OK AllowCLIAuthViaBrowser=false with Webauthn", + secondFactors: secondFactorWebActive, + spec: types.AuthPreferenceSpecV2{ + Type: constants.Local, + Webauthn: minimalWeb, + AllowCLIAuthViaBrowser: types.NewBoolOption(false), + }, + assertFn: func(t *testing.T, cap *types.AuthPreferenceV2) { + assert.False(t, cap.GetAllowCLIAuthViaBrowser(), "AllowCLIAuthViaBrowser") + }, + }, + { + name: "OK AllowCLIAuthViaBrowser=true with Webauthn", + secondFactors: secondFactorWebActive, + spec: types.AuthPreferenceSpecV2{ + Type: constants.Local, + Webauthn: minimalWeb, + AllowCLIAuthViaBrowser: types.NewBoolOption(true), + }, + assertFn: func(t *testing.T, cap *types.AuthPreferenceV2) { + assert.True(t, cap.GetAllowCLIAuthViaBrowser(), "AllowCLIAuthViaBrowser") + }, + }, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { diff --git a/api/types/events/events.pb.go b/api/types/events/events.pb.go index cbc68219f7719..d557ad7044f72 100644 --- a/api/types/events/events.pb.go +++ b/api/types/events/events.pb.go @@ -6495,7 +6495,10 @@ type MFADeviceMetadata struct { // ID is the UUID of the MFA device generated by Teleport. DeviceID string `protobuf:"bytes,2,opt,name=DeviceID,proto3" json:"mfa_device_uuid"` // Type is the type of this MFA device. - DeviceType string `protobuf:"bytes,3,opt,name=DeviceType,proto3" json:"mfa_device_type"` + DeviceType string `protobuf:"bytes,3,opt,name=DeviceType,proto3" json:"mfa_device_type"` + // MFAViaBrowser is true when the user used the Browser MFA flow to MFA in the + // browser to authenticate a CLI session. + MFAViaBrowser bool `protobuf:"varint,4,opt,name=MFAViaBrowser,proto3" json:"mfa_via_browser,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -20027,1416 +20030,1419 @@ func init() { } var fileDescriptor_007ba1c3d6266d56 = []byte{ - // 22544 bytes of a gzipped FileDescriptorProto + // 22579 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x79, 0x78, 0x1c, 0x49, 0x76, 0x18, 0x88, 0xa3, 0x0e, 0x14, 0x80, 0x87, 0x83, 0x40, 0xf0, 0x2a, 0xb2, 0xc9, 0xae, 0xee, 0xea, 0x1e, 0x0e, 0xd9, 0xd3, 0x43, 0x76, 0xb3, 0x8f, 0x99, 0x9e, 0xee, 0x99, 0xee, 0x42, 0x01, 0x20, 0x8a, 0xc4, 0x51, 0x9d, 0x05, 0x92, 0xdd, 0x73, 0x95, 0x12, 0x95, 0x41, 0x20, 0x1b, 0x85, - 0xcc, 0x9a, 0xcc, 0x2c, 0x80, 0x68, 0xff, 0x7e, 0xbb, 0x96, 0x2d, 0xeb, 0xb0, 0x47, 0xd2, 0xec, - 0x8c, 0xa5, 0x91, 0x47, 0xb6, 0x77, 0x74, 0x78, 0x57, 0x96, 0x64, 0x69, 0xe5, 0xf5, 0x4a, 0xd6, - 0x65, 0x49, 0x96, 0xb5, 0x1a, 0x9d, 0xd6, 0x61, 0x69, 0xb5, 0x92, 0x0c, 0x49, 0xe3, 0xf5, 0xb7, - 0xbb, 0x58, 0xd9, 0xab, 0xb5, 0xb5, 0x96, 0x2c, 0x5b, 0xfe, 0xf6, 0x8b, 0x17, 0x91, 0x99, 0x91, - 0x91, 0x59, 0x85, 0xb3, 0x05, 0xa2, 0x89, 0x7f, 0x48, 0xd4, 0x7b, 0x2f, 0x5e, 0x44, 0xbe, 0x78, - 0x11, 0xf1, 0x22, 0xe2, 0xc5, 0x7b, 0x70, 0xc5, 0xa3, 0x4d, 0xda, 0xb2, 0x1d, 0xef, 0x5a, 0x93, - 0x2e, 0xe9, 0x8d, 0x8d, 0x6b, 0xde, 0x46, 0x8b, 0xba, 0xd7, 0xe8, 0x1a, 0xb5, 0x3c, 0xff, 0xbf, - 0xab, 0x2d, 0xc7, 0xf6, 0x6c, 0x92, 0xe3, 0xbf, 0xce, 0x9f, 0x5a, 0xb2, 0x97, 0x6c, 0x04, 0x5d, - 0x63, 0x7f, 0x71, 0xec, 0xf9, 0x0b, 0x4b, 0xb6, 0xbd, 0xd4, 0xa4, 0xd7, 0xf0, 0xd7, 0x62, 0xfb, - 0xde, 0x35, 0xd7, 0x73, 0xda, 0x0d, 0x4f, 0x60, 0x0b, 0x2a, 0xd6, 0x33, 0x57, 0xa9, 0xeb, 0xe9, - 0xab, 0x2d, 0x41, 0xf0, 0xa8, 0x4a, 0xb0, 0xee, 0xe8, 0xad, 0x16, 0x75, 0x44, 0xe5, 0xe7, 0xdf, - 0x1b, 0xb4, 0x53, 0x6f, 0x34, 0xa8, 0xeb, 0x36, 0x4d, 0xd7, 0xbb, 0xb6, 0xf6, 0xac, 0xf4, 0x4b, - 0x10, 0x3e, 0x9e, 0xfc, 0x41, 0xf8, 0xaf, 0x20, 0x79, 0x7f, 0x32, 0x89, 0x5f, 0xa3, 0x52, 0x75, - 0xf1, 0xb3, 0x69, 0xe8, 0x9f, 0xa5, 0x9e, 0x6e, 0xe8, 0x9e, 0x4e, 0x2e, 0x40, 0x6f, 0xc5, 0x32, - 0xe8, 0xfd, 0x7c, 0xea, 0xb1, 0xd4, 0xe5, 0xcc, 0x78, 0x6e, 0x6b, 0xb3, 0x90, 0xa6, 0xa6, 0xc6, - 0x81, 0xe4, 0x22, 0x64, 0x17, 0x36, 0x5a, 0x34, 0x9f, 0x7e, 0x2c, 0x75, 0x79, 0x60, 0x7c, 0x60, - 0x6b, 0xb3, 0xd0, 0x8b, 0x42, 0xd3, 0x10, 0x4c, 0x1e, 0x87, 0x74, 0x65, 0x22, 0x9f, 0x41, 0xe4, - 0xd8, 0xd6, 0x66, 0x61, 0xb8, 0x6d, 0x1a, 0x4f, 0xdb, 0xab, 0xa6, 0x47, 0x57, 0x5b, 0xde, 0x86, - 0x96, 0xae, 0x4c, 0x90, 0x4b, 0x90, 0x2d, 0xdb, 0x06, 0xcd, 0x67, 0x91, 0x88, 0x6c, 0x6d, 0x16, - 0x46, 0x1a, 0xb6, 0x41, 0x25, 0x2a, 0xc4, 0x93, 0xd7, 0x20, 0xbb, 0x60, 0xae, 0xd2, 0x7c, 0xef, - 0x63, 0xa9, 0xcb, 0x83, 0xd7, 0xcf, 0x5f, 0xe5, 0xe2, 0xbb, 0xea, 0x8b, 0xef, 0xea, 0x82, 0x2f, - 0xdf, 0xf1, 0xd1, 0x2f, 0x6d, 0x16, 0x7a, 0xb6, 0x36, 0x0b, 0x59, 0x26, 0xf2, 0xcf, 0xfc, 0x5e, - 0x21, 0xa5, 0x61, 0x49, 0xf2, 0x0a, 0x0c, 0x96, 0x9b, 0x6d, 0xd7, 0xa3, 0xce, 0x9c, 0xbe, 0x4a, - 0xf3, 0x39, 0xac, 0xf0, 0xfc, 0xd6, 0x66, 0xe1, 0x4c, 0x83, 0x83, 0xeb, 0x96, 0xbe, 0x2a, 0x57, - 0x2c, 0x93, 0x17, 0xff, 0x71, 0x0a, 0x4e, 0xd4, 0xa8, 0xeb, 0x9a, 0xb6, 0x15, 0xc8, 0xe6, 0x3d, - 0x30, 0x20, 0x40, 0x95, 0x09, 0x94, 0xcf, 0xc0, 0x78, 0xdf, 0xd6, 0x66, 0x21, 0xe3, 0x9a, 0x86, - 0x16, 0x62, 0xc8, 0x33, 0xd0, 0x77, 0xd7, 0xf4, 0x96, 0x67, 0xa7, 0x4a, 0x42, 0x4e, 0x67, 0xb6, - 0x36, 0x0b, 0x64, 0xdd, 0xf4, 0x96, 0xeb, 0xab, 0xf7, 0x74, 0xa9, 0x42, 0x9f, 0x8c, 0xcc, 0xc0, - 0x68, 0xd5, 0x31, 0xd7, 0x74, 0x8f, 0xde, 0xa2, 0x1b, 0x55, 0xbb, 0x69, 0x36, 0x36, 0x84, 0x14, - 0x1f, 0xdb, 0xda, 0x2c, 0x5c, 0x68, 0x71, 0x5c, 0x7d, 0x85, 0x6e, 0xd4, 0x5b, 0x88, 0x95, 0x98, - 0xc4, 0x4a, 0x16, 0xbf, 0x7d, 0x00, 0x86, 0x6e, 0xbb, 0xd4, 0x09, 0xda, 0x7d, 0x09, 0xb2, 0xec, - 0xb7, 0x68, 0x32, 0xca, 0xbc, 0xed, 0x52, 0x47, 0x96, 0x39, 0xc3, 0x93, 0x2b, 0xd0, 0x3b, 0x63, - 0x2f, 0x99, 0x96, 0x68, 0xf6, 0xc9, 0xad, 0xcd, 0xc2, 0x89, 0x26, 0x03, 0x48, 0x94, 0x9c, 0x82, - 0x7c, 0x04, 0x86, 0x2a, 0xab, 0x4c, 0x87, 0x6c, 0x4b, 0xf7, 0x6c, 0x47, 0xb4, 0x16, 0xa5, 0x6b, - 0x4a, 0x70, 0xa9, 0x60, 0x84, 0x9e, 0x7c, 0x08, 0xa0, 0x74, 0xb7, 0xa6, 0xd9, 0x4d, 0x5a, 0xd2, - 0xe6, 0x84, 0x32, 0x60, 0x69, 0x7d, 0xdd, 0xad, 0x3b, 0x76, 0x93, 0xd6, 0x75, 0x47, 0xae, 0x56, - 0xa2, 0x26, 0x93, 0x30, 0x52, 0xc2, 0x51, 0xa1, 0xd1, 0x4f, 0xb5, 0xa9, 0xeb, 0xb9, 0xf9, 0xde, - 0xc7, 0x32, 0x97, 0x07, 0xc6, 0x2f, 0x6e, 0x6d, 0x16, 0xce, 0xf1, 0xf1, 0x52, 0x77, 0x04, 0x4a, - 0x62, 0xa1, 0x14, 0x22, 0xe3, 0x30, 0x5c, 0x7a, 0xbb, 0xed, 0xd0, 0x8a, 0x41, 0x2d, 0xcf, 0xf4, - 0x36, 0x84, 0x86, 0x5c, 0xd8, 0xda, 0x2c, 0xe4, 0x75, 0x86, 0xa8, 0x9b, 0x02, 0x23, 0x31, 0x89, - 0x16, 0x21, 0xf3, 0x30, 0x76, 0xa3, 0x5c, 0xad, 0x51, 0x67, 0xcd, 0x6c, 0xd0, 0x52, 0xa3, 0x61, - 0xb7, 0x2d, 0x2f, 0xdf, 0x87, 0x7c, 0x1e, 0xdf, 0xda, 0x2c, 0x5c, 0x5c, 0x6a, 0xb4, 0xea, 0x2e, - 0xc7, 0xd6, 0x75, 0x8e, 0x96, 0x98, 0xc5, 0xcb, 0x92, 0x8f, 0xc2, 0xf0, 0x82, 0xc3, 0xb4, 0xd0, - 0x98, 0xa0, 0x0c, 0x9e, 0xef, 0x47, 0xfd, 0x3f, 0x73, 0x55, 0xcc, 0x54, 0x1c, 0xea, 0xf7, 0x2c, - 0x6f, 0xac, 0xc7, 0x0b, 0xd4, 0x0d, 0xc4, 0xc9, 0x8d, 0x8d, 0xb0, 0x22, 0x14, 0xf2, 0xec, 0xe3, - 0x4d, 0x87, 0x1a, 0x31, 0x6d, 0x1b, 0xc0, 0x36, 0x5f, 0xd9, 0xda, 0x2c, 0xbc, 0xc7, 0x11, 0x34, - 0xf5, 0xae, 0x6a, 0xd7, 0x91, 0x15, 0x99, 0x84, 0x7e, 0xa6, 0x4d, 0xb7, 0x4c, 0xcb, 0xc8, 0xc3, - 0x63, 0xa9, 0xcb, 0x23, 0xd7, 0x47, 0xfd, 0xd6, 0xfb, 0xf0, 0xf1, 0xb3, 0x5b, 0x9b, 0x85, 0x93, - 0x4c, 0x07, 0xeb, 0x2b, 0xa6, 0x25, 0x4f, 0x11, 0x41, 0x51, 0x36, 0x8a, 0xc6, 0x6d, 0x0f, 0x87, - 0xee, 0x60, 0x38, 0x8a, 0x16, 0x6d, 0x4f, 0x1d, 0xb6, 0x3e, 0x19, 0x29, 0xc3, 0xf0, 0xb8, 0xed, - 0x55, 0x2c, 0xd7, 0xd3, 0xad, 0x06, 0xad, 0x4c, 0xe4, 0x87, 0xb0, 0x1c, 0xaa, 0x05, 0x2b, 0x67, - 0x0a, 0x4c, 0x3d, 0x32, 0x29, 0x45, 0xcb, 0x90, 0x59, 0x00, 0xd6, 0x84, 0x79, 0xc7, 0x64, 0x03, - 0x61, 0x18, 0xdb, 0x4f, 0xe4, 0xf6, 0x73, 0xcc, 0xf8, 0xb9, 0xad, 0xcd, 0xc2, 0x69, 0xfc, 0x02, - 0x1b, 0x01, 0xb2, 0xae, 0x86, 0x64, 0xe4, 0x45, 0x18, 0x60, 0xbf, 0x98, 0xea, 0xba, 0xf9, 0x11, - 0x54, 0xd3, 0xfc, 0xd6, 0x66, 0xe1, 0x14, 0x96, 0x64, 0x7a, 0x2e, 0x6b, 0x68, 0x48, 0x4a, 0x3e, - 0x97, 0xe2, 0xed, 0x58, 0x70, 0x74, 0xd3, 0x73, 0xf3, 0x27, 0x50, 0x0b, 0x4e, 0x5f, 0x0d, 0x66, - 0xee, 0x19, 0x7d, 0x91, 0x36, 0xef, 0xe8, 0xcd, 0x36, 0x75, 0xc7, 0x3f, 0xce, 0x26, 0xc0, 0xdf, - 0xde, 0x2c, 0xbc, 0xbc, 0x64, 0x7a, 0xcb, 0xed, 0xc5, 0xab, 0x0d, 0x7b, 0xf5, 0xda, 0x92, 0xa3, - 0xaf, 0x99, 0x9e, 0xee, 0x99, 0xb6, 0xa5, 0x37, 0xaf, 0x85, 0x6b, 0x4b, 0xcb, 0x54, 0x16, 0x83, - 0xab, 0xbc, 0x86, 0xe0, 0x6b, 0x3c, 0xfc, 0xa9, 0x7e, 0x0d, 0x27, 0x22, 0x15, 0x38, 0xc1, 0x7e, - 0xc9, 0xd3, 0xea, 0x28, 0xca, 0xb8, 0xb0, 0xb5, 0x59, 0x78, 0x04, 0xcb, 0x77, 0x98, 0x5b, 0xd5, - 0x72, 0xc5, 0x3f, 0xc9, 0xc2, 0x08, 0xd3, 0x7d, 0x69, 0x9a, 0x2a, 0xb1, 0x19, 0x97, 0x41, 0x18, - 0x81, 0xdb, 0xd2, 0x1b, 0x54, 0xcc, 0x58, 0xa8, 0x2d, 0x96, 0x0f, 0x94, 0xb9, 0x2a, 0xf4, 0xe4, - 0x0a, 0xf4, 0x73, 0x50, 0x65, 0x42, 0x4c, 0x62, 0xc3, 0x5b, 0x9b, 0x85, 0x01, 0x17, 0x61, 0x75, - 0xd3, 0xd0, 0x02, 0x34, 0x9b, 0x45, 0xf8, 0xdf, 0xd3, 0xb6, 0xeb, 0x31, 0xe6, 0x62, 0x0e, 0x43, - 0x75, 0x11, 0x05, 0x96, 0x05, 0x4a, 0x9e, 0x45, 0xa2, 0x85, 0xc8, 0x4b, 0x00, 0x1c, 0x52, 0x32, - 0x0c, 0x47, 0x4c, 0x64, 0xa8, 0x1b, 0x82, 0x85, 0x6e, 0x18, 0xf2, 0x2c, 0x28, 0x11, 0x93, 0x55, - 0x18, 0xe2, 0xbf, 0xb0, 0x33, 0xf9, 0x2c, 0x36, 0x78, 0xfd, 0xb2, 0xaf, 0x6c, 0x51, 0xe9, 0x5c, - 0x95, 0x49, 0x27, 0x2d, 0xcf, 0xd9, 0x18, 0x2f, 0x88, 0x85, 0xef, 0xac, 0xa8, 0xaa, 0x89, 0x38, - 0x79, 0xca, 0x95, 0xcb, 0xb0, 0xf5, 0x70, 0xca, 0x76, 0xd6, 0x75, 0xc7, 0xa0, 0xc6, 0xf8, 0x86, - 0xbc, 0x1e, 0xde, 0xf3, 0xc1, 0xf5, 0x45, 0x79, 0x88, 0xcb, 0xe4, 0x6c, 0x70, 0x71, 0x6e, 0xb5, - 0xf6, 0x22, 0x0e, 0xed, 0xbe, 0x98, 0xb4, 0xdc, 0xf6, 0xa2, 0x3a, 0x9c, 0xa3, 0x65, 0xd8, 0x94, - 0xcb, 0x01, 0x77, 0xa8, 0xc3, 0x16, 0x4b, 0x9c, 0xdd, 0xc4, 0x94, 0x2b, 0x98, 0xac, 0x71, 0x4c, - 0x9c, 0x87, 0x28, 0x72, 0xfe, 0x55, 0x18, 0x8b, 0x89, 0x82, 0x8c, 0x42, 0x66, 0x85, 0x6e, 0x70, - 0x75, 0xd1, 0xd8, 0x9f, 0xe4, 0x14, 0xf4, 0xae, 0xb1, 0xe1, 0xc1, 0xd5, 0x40, 0xe3, 0x3f, 0x3e, - 0x94, 0xfe, 0x60, 0x8a, 0xad, 0xec, 0xa4, 0x6c, 0x5b, 0x16, 0x6d, 0x78, 0xf2, 0xe2, 0xfe, 0x22, - 0x0c, 0xcc, 0xd8, 0x0d, 0xbd, 0x89, 0xfd, 0xc8, 0xf5, 0x0e, 0x47, 0x2a, 0xeb, 0xc0, 0xab, 0x4d, - 0x86, 0x91, 0x47, 0x6a, 0x40, 0xca, 0x14, 0x40, 0xa3, 0xab, 0xb6, 0x47, 0xb1, 0x60, 0x3a, 0x54, - 0x00, 0x2c, 0xe8, 0x20, 0x4a, 0x56, 0x80, 0x90, 0x98, 0x5c, 0x83, 0xfe, 0x2a, 0xb3, 0x67, 0x1a, - 0x76, 0x53, 0x28, 0x1f, 0x2e, 0xb9, 0x68, 0xe3, 0xc8, 0x73, 0xa2, 0x4f, 0x54, 0x9c, 0x86, 0x91, - 0x72, 0xd3, 0xa4, 0x96, 0x27, 0xb7, 0x9a, 0x8d, 0xac, 0xd2, 0x12, 0xb5, 0x3c, 0xb9, 0xd5, 0x38, - 0x16, 0x75, 0x06, 0x55, 0xe7, 0x17, 0x24, 0x2d, 0xfe, 0x72, 0x06, 0xce, 0xdd, 0x6a, 0x2f, 0x52, - 0xc7, 0xa2, 0x1e, 0x75, 0xc5, 0xc0, 0x0c, 0xb8, 0xce, 0xc1, 0x58, 0x0c, 0x29, 0xb8, 0xa3, 0x41, - 0xb2, 0x12, 0x20, 0xfd, 0xf1, 0x2e, 0xaf, 0x6a, 0xb1, 0xa2, 0x64, 0x1a, 0x4e, 0x84, 0x40, 0xd6, - 0x08, 0x37, 0x9f, 0xc6, 0xb9, 0xf0, 0xd1, 0xad, 0xcd, 0xc2, 0x79, 0x89, 0x1b, 0x6b, 0xb6, 0xac, - 0xc1, 0x6a, 0x31, 0x72, 0x0b, 0x46, 0x43, 0xd0, 0x0d, 0xc7, 0x6e, 0xb7, 0xdc, 0x7c, 0x06, 0x59, - 0xe1, 0x14, 0x24, 0xb1, 0x5a, 0x42, 0xa4, 0x6c, 0x28, 0xa9, 0x05, 0xc9, 0x57, 0xa5, 0x64, 0x6e, - 0x62, 0x14, 0x66, 0x71, 0x14, 0x7e, 0xc0, 0x1f, 0x85, 0x1d, 0x85, 0x74, 0x55, 0x2d, 0x29, 0x06, - 0xa5, 0xd2, 0x8c, 0xd8, 0xa0, 0x8c, 0xd5, 0x78, 0xbe, 0x0c, 0xa7, 0x13, 0x79, 0xed, 0x4a, 0xab, - 0xff, 0x75, 0x46, 0xe6, 0x52, 0xb5, 0x8d, 0xa0, 0x33, 0xe7, 0xe5, 0xce, 0xac, 0xda, 0x06, 0x4e, - 0xdb, 0xa9, 0xd0, 0x46, 0x91, 0x1a, 0xdb, 0xb2, 0x0d, 0x75, 0xe2, 0x8e, 0x97, 0x25, 0x9f, 0x84, - 0x33, 0x31, 0x20, 0x9f, 0xae, 0xb9, 0xf6, 0x5f, 0xda, 0xda, 0x2c, 0x14, 0x13, 0xb8, 0xaa, 0xb3, - 0x77, 0x07, 0x2e, 0x44, 0x87, 0xb3, 0x92, 0xd4, 0x6d, 0xcb, 0xd3, 0x4d, 0x4b, 0xac, 0x36, 0x7c, - 0x94, 0xbc, 0x77, 0x6b, 0xb3, 0xf0, 0x84, 0xac, 0x83, 0x3e, 0x8d, 0xda, 0xf8, 0x4e, 0x7c, 0x88, - 0x01, 0xf9, 0x04, 0x54, 0x65, 0x55, 0x5f, 0xf2, 0x77, 0x26, 0x97, 0xb7, 0x36, 0x0b, 0x4f, 0x26, - 0xd6, 0x61, 0x32, 0x2a, 0xd9, 0x12, 0xea, 0xc4, 0x89, 0x68, 0x40, 0x42, 0xdc, 0x9c, 0x6d, 0x50, - 0xfc, 0x86, 0x5e, 0xe4, 0x5f, 0xdc, 0xda, 0x2c, 0x3c, 0x2a, 0xf1, 0xb7, 0x6c, 0x83, 0xaa, 0xcd, - 0x4f, 0x28, 0x5d, 0xfc, 0xfd, 0x0c, 0x9c, 0xb9, 0x6b, 0x5a, 0x86, 0xbd, 0xee, 0x4e, 0x50, 0x77, - 0xc5, 0xb3, 0x5b, 0x41, 0x47, 0x7f, 0x0c, 0x4e, 0x47, 0x31, 0xc2, 0xb6, 0x14, 0x9d, 0xfd, 0x9e, - 0xad, 0xcd, 0xc2, 0xe3, 0xeb, 0x9c, 0xa0, 0x6e, 0x70, 0x0a, 0xdf, 0x38, 0x95, 0x2a, 0x4d, 0xe6, - 0xc1, 0x56, 0x0f, 0x01, 0x91, 0xe6, 0x39, 0x5c, 0x3d, 0x7c, 0x56, 0xca, 0x4a, 0x27, 0x93, 0x93, - 0xe7, 0x21, 0x37, 0x61, 0xaf, 0xea, 0xa6, 0x25, 0x7a, 0x10, 0x67, 0xfc, 0xa0, 0x2d, 0x88, 0x91, - 0x8a, 0x0a, 0x5a, 0x56, 0xa7, 0x68, 0x0c, 0x6e, 0x5f, 0xa4, 0x5d, 0x82, 0x5f, 0x54, 0xd9, 0xc6, - 0xc8, 0xe4, 0xa4, 0x0d, 0xc3, 0xa2, 0x09, 0x91, 0xf5, 0xf5, 0x59, 0x7f, 0x64, 0x27, 0x4b, 0xf1, - 0x6a, 0xa4, 0x0c, 0x1f, 0xd3, 0xd8, 0x5a, 0xff, 0x33, 0x63, 0x03, 0x3a, 0x5a, 0xcb, 0xf9, 0xd7, - 0x80, 0xc4, 0x59, 0xec, 0x6e, 0x81, 0xca, 0xc0, 0xa3, 0xb5, 0xd2, 0xec, 0x4c, 0xc5, 0xf0, 0x77, - 0x07, 0x55, 0xc7, 0x5e, 0x33, 0x0d, 0x69, 0x82, 0x5e, 0x84, 0xb3, 0x0a, 0x6a, 0x12, 0x37, 0x24, - 0xc1, 0xbe, 0x14, 0xd5, 0xd7, 0xdf, 0x79, 0xb4, 0x04, 0x4d, 0x9d, 0xef, 0x5a, 0xa2, 0xf6, 0x6f, - 0x27, 0x46, 0x6c, 0x18, 0x2a, 0xa8, 0xda, 0xb2, 0xed, 0x78, 0x8d, 0xb6, 0x27, 0x7a, 0x1f, 0x87, - 0x61, 0xac, 0x0e, 0x57, 0x10, 0x75, 0xa9, 0xc2, 0xe7, 0x43, 0xbe, 0x2e, 0x05, 0xa3, 0x25, 0xcf, - 0x73, 0xcc, 0xc5, 0xb6, 0x47, 0x67, 0xf5, 0x56, 0xcb, 0xb4, 0x96, 0x70, 0x3a, 0x1f, 0xbc, 0xfe, - 0x4a, 0x60, 0x06, 0x75, 0x95, 0xc4, 0x55, 0xb5, 0xb8, 0x34, 0x0b, 0xeb, 0x3e, 0xaa, 0xbe, 0xca, - 0x71, 0xf2, 0x2c, 0xac, 0x96, 0x63, 0xb3, 0x70, 0x22, 0xaf, 0x5d, 0x75, 0xdd, 0x67, 0x33, 0x70, - 0x61, 0x7e, 0xc5, 0xd3, 0x35, 0xea, 0xda, 0x6d, 0xa7, 0x41, 0xdd, 0xdb, 0x2d, 0x43, 0xf7, 0x68, - 0x38, 0x19, 0x17, 0xa0, 0xb7, 0x64, 0x18, 0xd4, 0x40, 0x76, 0xbd, 0xfc, 0x04, 0x45, 0x67, 0x00, - 0x8d, 0xc3, 0xc9, 0x7b, 0xa0, 0x4f, 0x94, 0x41, 0xee, 0xbd, 0xe3, 0x83, 0x5b, 0x9b, 0x85, 0xbe, - 0x36, 0x07, 0x69, 0x3e, 0x8e, 0x91, 0x4d, 0xd0, 0x26, 0x65, 0x64, 0x99, 0x90, 0xcc, 0xe0, 0x20, - 0xcd, 0xc7, 0x91, 0xd7, 0x61, 0x04, 0xd9, 0x06, 0xed, 0x11, 0xcb, 0xdb, 0x29, 0x5f, 0xba, 0x72, - 0x63, 0xb9, 0xf5, 0x81, 0xad, 0xa9, 0x3b, 0x7e, 0x01, 0x4d, 0x61, 0x40, 0xee, 0xc2, 0xa8, 0x68, - 0x44, 0xc8, 0xb4, 0xb7, 0x0b, 0xd3, 0xd3, 0x5b, 0x9b, 0x85, 0x31, 0xd1, 0x7e, 0x89, 0x6d, 0x8c, - 0x09, 0x63, 0x2c, 0x9a, 0x1d, 0x32, 0xce, 0x6d, 0xc7, 0x58, 0x7c, 0xb1, 0xcc, 0x58, 0x65, 0x52, - 0x7c, 0x13, 0x86, 0xe4, 0x82, 0xe4, 0x0c, 0x9e, 0x52, 0xf1, 0x71, 0x82, 0xe7, 0x5b, 0xa6, 0x81, - 0x47, 0x53, 0xcf, 0xe2, 0x14, 0xd7, 0x70, 0xcc, 0x16, 0x33, 0x0c, 0x85, 0x92, 0x9f, 0xd8, 0xda, - 0x2c, 0x0c, 0x1a, 0x21, 0x58, 0x93, 0x69, 0x8a, 0xff, 0x21, 0x05, 0x67, 0x18, 0xef, 0x92, 0xeb, - 0x9a, 0x4b, 0xd6, 0xaa, 0x6c, 0x99, 0x3d, 0x0d, 0xb9, 0x1a, 0xd6, 0x27, 0x6a, 0x3a, 0xb5, 0xb5, - 0x59, 0x18, 0xe5, 0x2d, 0x90, 0xa7, 0x3a, 0x4e, 0x13, 0x1c, 0xd1, 0xa4, 0xb7, 0x39, 0xa2, 0x61, - 0xbb, 0x16, 0x4f, 0x77, 0x3c, 0xd3, 0x5a, 0xaa, 0x79, 0xba, 0xd7, 0x76, 0x23, 0xbb, 0x16, 0x81, - 0xa9, 0xbb, 0x88, 0x8a, 0xec, 0x5a, 0x22, 0x85, 0xc8, 0xab, 0x30, 0x34, 0x69, 0x19, 0x21, 0x13, - 0x3e, 0xb5, 0x3e, 0xc2, 0x36, 0x13, 0x14, 0xe1, 0x71, 0x16, 0x91, 0x02, 0xc5, 0x3f, 0x4d, 0x41, - 0x9e, 0x9f, 0xa7, 0xcc, 0x98, 0xae, 0x37, 0x4b, 0x57, 0x17, 0xa5, 0xd9, 0x69, 0xca, 0x3f, 0xa0, - 0x61, 0x38, 0xc9, 0xdc, 0x40, 0x6b, 0x4f, 0x1c, 0xd0, 0x34, 0x4d, 0x37, 0xb6, 0x93, 0x57, 0x4a, - 0x91, 0x0a, 0xf4, 0x71, 0xce, 0xdc, 0x5c, 0x1c, 0xbc, 0x9e, 0xf7, 0x15, 0x41, 0xad, 0x9a, 0x2b, - 0xc3, 0x2a, 0x27, 0x96, 0xcf, 0x06, 0x44, 0x79, 0xb6, 0x73, 0x0d, 0xcb, 0x2c, 0x98, 0x5e, 0xd3, - 0x5f, 0xe7, 0xf9, 0x4c, 0x21, 0xb5, 0xc9, 0x63, 0x48, 0xd9, 0x04, 0x55, 0xca, 0x15, 0xbf, 0x98, - 0x81, 0x51, 0xb5, 0x7e, 0x72, 0x17, 0xfa, 0x6f, 0xda, 0xa6, 0x45, 0x8d, 0x79, 0x0b, 0x3f, 0xb6, - 0xfb, 0x91, 0xa5, 0xbf, 0x73, 0x3b, 0xf9, 0x16, 0x96, 0xa9, 0xcb, 0xfb, 0x1d, 0x3c, 0xc1, 0x0c, - 0x98, 0x91, 0x8f, 0xc2, 0x00, 0xdb, 0x31, 0xac, 0x21, 0xe7, 0xf4, 0xb6, 0x9c, 0x1f, 0x13, 0x9c, - 0x4f, 0x39, 0xbc, 0x50, 0x9c, 0x75, 0xc8, 0x8e, 0xa9, 0xa8, 0x46, 0x75, 0xd7, 0xf6, 0x57, 0x65, - 0x54, 0x51, 0x07, 0x21, 0xb2, 0x8a, 0x72, 0x1a, 0xb6, 0xd1, 0xe1, 0x1f, 0x8b, 0x3d, 0x2a, 0xed, - 0x74, 0xb9, 0xd8, 0xd5, 0xce, 0x94, 0x88, 0x89, 0x05, 0x27, 0x44, 0xdf, 0x2c, 0x9b, 0x2d, 0xdc, - 0x23, 0xa2, 0x15, 0x34, 0x72, 0xfd, 0xd2, 0x55, 0xff, 0x68, 0xe2, 0xaa, 0x74, 0xd0, 0xbd, 0xf6, - 0xec, 0xd5, 0xd9, 0x80, 0x1c, 0xcf, 0x8b, 0x50, 0xbd, 0x15, 0x16, 0xb2, 0xe2, 0xac, 0x46, 0xc8, - 0x8b, 0x5f, 0x9d, 0x86, 0xf7, 0x87, 0x5d, 0xa4, 0xd1, 0x35, 0x93, 0xae, 0x87, 0x1c, 0xc5, 0xc9, - 0x15, 0x1b, 0xad, 0x6e, 0x79, 0x59, 0xb7, 0x96, 0xa8, 0x41, 0xae, 0x40, 0x2f, 0x3f, 0xa3, 0x49, - 0xe1, 0x66, 0x02, 0x67, 0x42, 0xf5, 0x78, 0x86, 0x53, 0x10, 0x1b, 0x72, 0xe2, 0x54, 0x86, 0x2b, - 0x65, 0x29, 0xae, 0x94, 0x3b, 0xa8, 0x51, 0x9c, 0xbb, 0xf0, 0xe5, 0x0a, 0x05, 0x1f, 0x3b, 0x79, - 0x11, 0xd5, 0x9c, 0x7f, 0x09, 0x06, 0x25, 0xe2, 0x5d, 0xad, 0x47, 0x5f, 0xd5, 0x2b, 0x0f, 0x53, - 0xbf, 0x59, 0x62, 0x98, 0x5e, 0x63, 0xc3, 0xcb, 0x75, 0x99, 0xcd, 0xcb, 0xc7, 0xa7, 0x18, 0x44, - 0x08, 0x8a, 0x0e, 0x22, 0x04, 0x91, 0xe7, 0xa0, 0x9f, 0xb3, 0x08, 0x4e, 0x57, 0xf0, 0x64, 0xc6, - 0x41, 0x58, 0xd4, 0xaa, 0x08, 0x08, 0xc9, 0x77, 0xa7, 0xe0, 0x62, 0x57, 0x49, 0xa0, 0xf2, 0x0d, - 0x5e, 0x7f, 0x61, 0x4f, 0x62, 0x1c, 0x7f, 0xff, 0xd6, 0x66, 0xe1, 0x8a, 0xa4, 0x19, 0x8e, 0x44, - 0x53, 0x6f, 0x70, 0x22, 0xa9, 0x5d, 0xdd, 0x9b, 0xc2, 0xb6, 0x36, 0xbc, 0xd2, 0x29, 0x3c, 0x40, - 0xb6, 0x1a, 0x1b, 0x7e, 0x23, 0xb3, 0xe1, 0xd6, 0x46, 0x7c, 0xef, 0x3d, 0x9f, 0x24, 0xa1, 0x9a, - 0x0e, 0x5c, 0x48, 0x03, 0xce, 0x72, 0xcc, 0x84, 0xbe, 0x31, 0x7f, 0x6f, 0xd6, 0xb6, 0xbc, 0x65, - 0xbf, 0x82, 0x5e, 0xf9, 0x04, 0x16, 0x2b, 0x30, 0xf4, 0x8d, 0xba, 0x7d, 0xaf, 0xbe, 0xca, 0xa8, - 0x12, 0xea, 0xe8, 0xc4, 0x89, 0xad, 0x11, 0x62, 0x8c, 0xfb, 0xb3, 0x67, 0x2e, 0x3c, 0x1f, 0xf7, - 0xe7, 0x85, 0xf8, 0x5c, 0xa9, 0x14, 0x4a, 0x9a, 0x32, 0xfb, 0xf6, 0x38, 0x65, 0x56, 0x60, 0x68, - 0xc6, 0x6e, 0xac, 0x04, 0x9a, 0xf7, 0x12, 0xe4, 0x16, 0x74, 0x67, 0x89, 0x7a, 0x28, 0xd6, 0xc1, - 0xeb, 0x63, 0x57, 0xf9, 0xf5, 0x15, 0x23, 0xe2, 0x88, 0xf1, 0x11, 0x31, 0x91, 0xe5, 0x3c, 0xfc, - 0xad, 0x89, 0x02, 0xc5, 0x7f, 0x92, 0x83, 0x21, 0x71, 0xd5, 0x82, 0x6b, 0x1a, 0xf9, 0x50, 0x78, - 0x79, 0x25, 0x66, 0xde, 0xe0, 0xb8, 0x39, 0x38, 0x26, 0x1f, 0x62, 0xcc, 0x7e, 0x65, 0xb3, 0x90, - 0xda, 0xda, 0x2c, 0xf4, 0x68, 0xfd, 0xd2, 0xe9, 0x49, 0xb8, 0xea, 0x4a, 0x66, 0x86, 0x7c, 0x79, - 0xa2, 0x94, 0xe5, 0xab, 0xf0, 0xab, 0xd0, 0x27, 0xda, 0x20, 0x94, 0xf7, 0x6c, 0x78, 0x68, 0x17, - 0xb9, 0x32, 0x52, 0x4a, 0xfb, 0xa5, 0xc8, 0x2b, 0x90, 0xe3, 0x87, 0x58, 0x42, 0x00, 0x67, 0x92, - 0x0f, 0xfd, 0x94, 0xe2, 0xa2, 0x0c, 0x99, 0x06, 0x08, 0x0f, 0xb0, 0x82, 0x1b, 0x32, 0xc1, 0x21, - 0x7e, 0xb4, 0xa5, 0x70, 0x91, 0xca, 0x92, 0x17, 0x61, 0x68, 0x81, 0x3a, 0xab, 0xa6, 0xa5, 0x37, - 0x6b, 0xe6, 0xdb, 0xfe, 0x25, 0x19, 0x9a, 0x1f, 0xae, 0xf9, 0xb6, 0xdc, 0xa7, 0x11, 0x3a, 0xf2, - 0x89, 0xa4, 0x03, 0xa2, 0x3e, 0x6c, 0xc8, 0xe3, 0xdb, 0x9e, 0x9c, 0x28, 0xed, 0x49, 0x38, 0x2f, - 0x7a, 0x1d, 0x86, 0x23, 0x67, 0x03, 0xe2, 0x16, 0xe4, 0x62, 0x9c, 0xb5, 0x74, 0xd0, 0xa1, 0xb0, - 0x8d, 0x72, 0x60, 0x83, 0xa2, 0x62, 0x99, 0x9e, 0xa9, 0x37, 0xcb, 0xf6, 0xea, 0xaa, 0x6e, 0x19, - 0xf9, 0x81, 0x70, 0x50, 0x98, 0x1c, 0x53, 0x6f, 0x70, 0x94, 0x3c, 0x28, 0xa2, 0x85, 0xc8, 0x2d, - 0x18, 0x15, 0x7d, 0xa8, 0xd1, 0x86, 0xed, 0x30, 0x8b, 0x08, 0x2f, 0x39, 0xc4, 0xa8, 0x70, 0x39, - 0xae, 0xee, 0xf8, 0x48, 0x79, 0xcb, 0xa1, 0x16, 0x64, 0x13, 0x70, 0xc5, 0x5a, 0x33, 0x99, 0x11, - 0x3f, 0x84, 0x8d, 0xc1, 0x09, 0xd8, 0xe4, 0x20, 0x79, 0x02, 0x16, 0x54, 0xd2, 0x82, 0x3d, 0xbc, - 0xfd, 0x82, 0x7d, 0x33, 0xdb, 0x3f, 0x38, 0x3a, 0xa4, 0x5e, 0x7b, 0x15, 0xff, 0x7e, 0x06, 0x06, - 0x45, 0x4b, 0x98, 0x91, 0x71, 0x3c, 0x7e, 0xf6, 0x33, 0x7e, 0x12, 0xc7, 0x41, 0xee, 0xa0, 0xc6, - 0x41, 0xf1, 0xd3, 0xe9, 0x60, 0xb2, 0xab, 0x3a, 0xa6, 0xb5, 0xbf, 0xc9, 0xee, 0x12, 0x40, 0x79, - 0xb9, 0x6d, 0xad, 0xf0, 0xeb, 0xfd, 0x74, 0x78, 0xbd, 0xdf, 0x30, 0x35, 0x09, 0x43, 0x2e, 0x42, - 0x76, 0x82, 0xf1, 0x67, 0x3d, 0x33, 0x34, 0x3e, 0xf0, 0x25, 0xce, 0x29, 0xf5, 0x7e, 0x0d, 0xc1, - 0x6c, 0x07, 0x3b, 0xbe, 0xe1, 0x51, 0xbe, 0x67, 0xc8, 0xf0, 0x1d, 0xec, 0x22, 0x03, 0x68, 0x1c, - 0x4e, 0x9e, 0x87, 0xb1, 0x09, 0xda, 0xd4, 0x37, 0x66, 0xcd, 0x66, 0xd3, 0x74, 0x69, 0xc3, 0xb6, - 0x0c, 0x17, 0x85, 0x2c, 0xaa, 0x5b, 0x75, 0xb5, 0x38, 0x01, 0x29, 0x42, 0x6e, 0xfe, 0xde, 0x3d, - 0x97, 0x7a, 0x28, 0xbe, 0xcc, 0x38, 0xb0, 0xb9, 0xdf, 0x46, 0x88, 0x26, 0x30, 0xc5, 0xef, 0x4f, - 0xb1, 0x2d, 0x22, 0x9e, 0xad, 0x84, 0x83, 0x68, 0x3f, 0x22, 0xb9, 0x12, 0x5a, 0x40, 0x69, 0xfc, - 0xda, 0x13, 0xe2, 0x6b, 0xfb, 0x84, 0x15, 0x14, 0xda, 0x3e, 0x89, 0x5f, 0x95, 0xd9, 0xe6, 0xab, - 0x8a, 0xdf, 0x99, 0x81, 0xb3, 0xa2, 0xc5, 0xe5, 0xa6, 0xd9, 0x5a, 0xb4, 0x75, 0xc7, 0xd0, 0x68, - 0x83, 0x9a, 0x6b, 0xf4, 0x68, 0x0e, 0xbc, 0xe8, 0xd0, 0xc9, 0xee, 0x63, 0xe8, 0x5c, 0x8f, 0x1e, - 0x28, 0x72, 0xf3, 0x67, 0x74, 0x6b, 0xb3, 0x30, 0x24, 0x1f, 0x28, 0x46, 0x8f, 0x11, 0x8b, 0x90, - 0x9b, 0xa1, 0xd6, 0x92, 0xb7, 0x8c, 0x4a, 0xd2, 0xcb, 0x95, 0xa4, 0x89, 0x10, 0x4d, 0x60, 0x24, - 0xbe, 0xb8, 0x4f, 0xe9, 0x8b, 0xf3, 0x65, 0x1b, 0x15, 0x4d, 0x26, 0x2a, 0x7e, 0x5b, 0x06, 0x4e, - 0xa9, 0xdd, 0x54, 0xa3, 0x96, 0x71, 0xdc, 0x47, 0x0f, 0x4e, 0x1f, 0x7d, 0x57, 0x16, 0x1e, 0xf1, - 0xcf, 0xa4, 0x97, 0x75, 0x87, 0x1a, 0x13, 0xa6, 0x43, 0x1b, 0x9e, 0xed, 0x6c, 0x1c, 0x61, 0x3b, - 0xf0, 0xe0, 0xba, 0xea, 0x79, 0xc8, 0x89, 0xb3, 0x1c, 0xbe, 0x9e, 0x8d, 0x04, 0x2d, 0x41, 0x68, - 0x6c, 0x25, 0xe4, 0xe7, 0x40, 0x4a, 0x07, 0xe7, 0x76, 0xd2, 0xc1, 0x1f, 0x84, 0xe1, 0x40, 0xf4, - 0x52, 0xf7, 0xa1, 0xd1, 0x68, 0xf8, 0x08, 0xde, 0x81, 0x51, 0x42, 0xac, 0xcd, 0x07, 0x54, 0x26, - 0xd0, 0xa8, 0x1b, 0x16, 0xb5, 0x05, 0xe5, 0x4c, 0x43, 0x93, 0x89, 0x54, 0x55, 0x19, 0xd8, 0x89, - 0xaa, 0x7c, 0xb6, 0x17, 0xce, 0x27, 0xab, 0x8a, 0x46, 0x75, 0xe3, 0x58, 0x53, 0xde, 0x9d, 0x9a, - 0xf2, 0x38, 0x64, 0xab, 0xba, 0xb7, 0x2c, 0x54, 0x04, 0xfd, 0x3e, 0xee, 0x99, 0x4d, 0x5a, 0x6f, - 0xe9, 0xde, 0xb2, 0x86, 0x28, 0x69, 0x6e, 0x02, 0xe4, 0x98, 0x34, 0x37, 0x85, 0x86, 0xc8, 0xe0, - 0x63, 0xa9, 0xcb, 0xd9, 0x24, 0x43, 0x44, 0x55, 0xca, 0xa1, 0x9d, 0x28, 0xe5, 0xe7, 0x7a, 0x3b, - 0xcd, 0x5f, 0x77, 0x1d, 0xd3, 0xa3, 0xc7, 0x5a, 0x79, 0xac, 0x95, 0x87, 0xa0, 0x95, 0xbf, 0x96, - 0x86, 0xe1, 0x60, 0x5f, 0xfa, 0x16, 0x6d, 0x1c, 0xce, 0x3a, 0x1a, 0x6e, 0xe7, 0x32, 0xfb, 0xde, - 0xce, 0xed, 0x47, 0x09, 0x8b, 0xc1, 0xfe, 0x9a, 0x9b, 0x3a, 0x28, 0x65, 0xbe, 0xbf, 0x0e, 0x8e, - 0xc1, 0x1f, 0x87, 0xbe, 0x59, 0xfd, 0xbe, 0xb9, 0xda, 0x5e, 0x15, 0x3b, 0x15, 0x74, 0x01, 0x5e, - 0xd5, 0xef, 0x6b, 0x3e, 0xbc, 0xf8, 0x2f, 0x52, 0x30, 0x22, 0x84, 0x2a, 0x98, 0xef, 0x4b, 0xaa, - 0xa1, 0x74, 0xd2, 0xfb, 0x96, 0x4e, 0x66, 0xef, 0xd2, 0x29, 0xfe, 0xed, 0x0c, 0xe4, 0xa7, 0xcc, - 0x26, 0x5d, 0x70, 0x74, 0xcb, 0xbd, 0x47, 0x1d, 0x71, 0xa4, 0x30, 0xc9, 0x58, 0xed, 0xeb, 0x03, - 0xa5, 0x69, 0x28, 0xbd, 0xa7, 0x69, 0xe8, 0x7d, 0x30, 0x20, 0x1a, 0x13, 0xb8, 0x9f, 0xe3, 0x48, - 0x73, 0x7c, 0xa0, 0x16, 0xe2, 0x19, 0x71, 0xa9, 0xd5, 0x72, 0xec, 0x35, 0xea, 0xf0, 0xeb, 0x50, - 0x41, 0xac, 0xfb, 0x40, 0x2d, 0xc4, 0x4b, 0x9c, 0xa9, 0x6f, 0xff, 0xca, 0x9c, 0xa9, 0xa3, 0x85, - 0x78, 0x72, 0x19, 0xfa, 0x67, 0xec, 0x06, 0x3a, 0x5d, 0x8a, 0xa9, 0x68, 0x68, 0x6b, 0xb3, 0xd0, - 0xdf, 0x14, 0x30, 0x2d, 0xc0, 0x32, 0xca, 0x09, 0x7b, 0xdd, 0x6a, 0xda, 0x3a, 0x77, 0xa4, 0xeb, - 0xe7, 0x94, 0x86, 0x80, 0x69, 0x01, 0x96, 0x51, 0x32, 0x99, 0xa3, 0x83, 0x62, 0x7f, 0xc8, 0xf3, - 0x9e, 0x80, 0x69, 0x01, 0xb6, 0xf8, 0xfd, 0x59, 0xa6, 0xbd, 0xae, 0xf9, 0xf6, 0x43, 0xbf, 0x96, - 0x84, 0x03, 0xa6, 0x77, 0x0f, 0x03, 0xe6, 0xa1, 0x39, 0x13, 0x2d, 0xfe, 0x49, 0x1f, 0x80, 0x90, - 0xfe, 0xe4, 0xf1, 0x66, 0x77, 0x7f, 0x5a, 0x33, 0x01, 0x63, 0x93, 0xd6, 0xb2, 0x6e, 0x35, 0xa8, - 0x11, 0x9e, 0x0c, 0xe7, 0x70, 0x68, 0xa3, 0xe3, 0x3a, 0x15, 0xc8, 0xf0, 0x68, 0x58, 0x8b, 0x17, - 0x20, 0xcf, 0xc2, 0x60, 0xc5, 0xf2, 0xa8, 0xa3, 0x37, 0x3c, 0x73, 0x8d, 0x8a, 0xa9, 0x01, 0x5d, - 0x10, 0xcc, 0x10, 0xac, 0xc9, 0x34, 0xe4, 0x79, 0x18, 0xaa, 0xea, 0x8e, 0x67, 0x36, 0xcc, 0x96, - 0x6e, 0x79, 0x6e, 0xbe, 0x1f, 0x67, 0x34, 0x5c, 0xf6, 0x5b, 0x12, 0x5c, 0x8b, 0x50, 0x91, 0x4f, - 0xc0, 0x00, 0x6e, 0x9b, 0xf1, 0x8d, 0xcd, 0xc0, 0xb6, 0xd7, 0xca, 0x4f, 0x84, 0xae, 0xc6, 0xfc, - 0x80, 0x1b, 0x5d, 0x0d, 0xd4, 0x9b, 0xe5, 0x80, 0x23, 0x79, 0x03, 0xfa, 0x26, 0x2d, 0x03, 0x99, - 0xc3, 0xb6, 0xcc, 0x8b, 0x82, 0xf9, 0x99, 0x90, 0xb9, 0xdd, 0x52, 0x78, 0xfb, 0xec, 0x92, 0x47, - 0xd9, 0xe0, 0x3b, 0x37, 0xca, 0x86, 0xde, 0x81, 0x9b, 0x87, 0xe1, 0x83, 0xba, 0x79, 0x18, 0xd9, - 0xe3, 0xcd, 0x43, 0xf1, 0x6d, 0x18, 0x1c, 0xaf, 0x4e, 0x05, 0xa3, 0xf7, 0x1c, 0x64, 0xaa, 0xc2, - 0x25, 0x26, 0xcb, 0xed, 0x99, 0x96, 0x69, 0x68, 0x0c, 0x46, 0xae, 0x40, 0x7f, 0x19, 0x5d, 0x69, - 0xc5, 0x9d, 0x6f, 0x96, 0xaf, 0x7f, 0x0d, 0x84, 0xa1, 0x47, 0xbd, 0x8f, 0x26, 0xef, 0x81, 0xbe, - 0xaa, 0x63, 0x2f, 0x39, 0xfa, 0xaa, 0x58, 0x83, 0xd1, 0x27, 0xa9, 0xc5, 0x41, 0x9a, 0x8f, 0x2b, - 0x7e, 0x2e, 0xe5, 0x9b, 0xfa, 0xac, 0x44, 0xad, 0x8d, 0xd7, 0x13, 0x58, 0x77, 0x3f, 0x2f, 0xe1, - 0x72, 0x90, 0xe6, 0xe3, 0xc8, 0x15, 0xe8, 0x9d, 0x74, 0x1c, 0xdb, 0x91, 0xdf, 0x25, 0x51, 0x06, - 0x90, 0x2f, 0xe7, 0x91, 0x82, 0x7c, 0x00, 0x06, 0xf9, 0x9c, 0xc3, 0x4f, 0x75, 0x33, 0xdd, 0xee, - 0xb5, 0x65, 0xca, 0xe2, 0x4f, 0x67, 0x24, 0x9b, 0x8d, 0x4b, 0xfc, 0x21, 0xbc, 0x19, 0x79, 0x0e, - 0x32, 0xe3, 0xd5, 0x29, 0x31, 0x01, 0x9e, 0xf4, 0x8b, 0x4a, 0xaa, 0xa2, 0x94, 0x63, 0xd4, 0xe4, - 0x02, 0x64, 0xab, 0x4c, 0x7d, 0x72, 0xa8, 0x1e, 0xfd, 0x5b, 0x9b, 0x85, 0x6c, 0x8b, 0xe9, 0x0f, - 0x42, 0x11, 0xcb, 0x36, 0x40, 0x7c, 0x97, 0xc5, 0xb1, 0xe1, 0xde, 0xe7, 0x02, 0x64, 0x4b, 0xce, - 0xd2, 0x9a, 0x98, 0xb5, 0x10, 0xab, 0x3b, 0x4b, 0x6b, 0x1a, 0x42, 0xc9, 0x35, 0x00, 0x8d, 0x7a, - 0x6d, 0xc7, 0xc2, 0x27, 0x83, 0x03, 0x78, 0x9e, 0x88, 0xb3, 0xa1, 0x83, 0xd0, 0x7a, 0xc3, 0x36, - 0xa8, 0x26, 0x91, 0x14, 0xff, 0x5e, 0x78, 0xb9, 0x35, 0x61, 0xba, 0x2b, 0xc7, 0x5d, 0xb8, 0x8b, - 0x2e, 0xd4, 0xc5, 0x91, 0x6d, 0xbc, 0x93, 0x0a, 0xd0, 0x3b, 0xd5, 0xd4, 0x97, 0x5c, 0xec, 0x43, - 0xe1, 0xb4, 0x78, 0x8f, 0x01, 0x34, 0x0e, 0x57, 0xfa, 0xa9, 0x7f, 0xfb, 0x7e, 0xfa, 0x7c, 0x6f, - 0x30, 0xda, 0xe6, 0xa8, 0xb7, 0x6e, 0x3b, 0xc7, 0x5d, 0xb5, 0xd3, 0xae, 0xba, 0x04, 0x7d, 0x35, - 0xa7, 0x21, 0x1d, 0x77, 0xe0, 0x7e, 0xc0, 0x75, 0x1a, 0xfc, 0xa8, 0xc3, 0x47, 0x32, 0xba, 0x09, - 0xd7, 0x43, 0xba, 0xbe, 0x90, 0xce, 0x70, 0x3d, 0x41, 0x27, 0x90, 0x82, 0xae, 0x6a, 0x3b, 0x9e, - 0xe8, 0xb8, 0x80, 0xae, 0x65, 0x3b, 0x9e, 0xe6, 0x23, 0xc9, 0xfb, 0x00, 0x16, 0xca, 0x55, 0xff, - 0xe1, 0xce, 0x40, 0xe8, 0x74, 0x2a, 0x5e, 0xec, 0x68, 0x12, 0x9a, 0x2c, 0xc0, 0xc0, 0x7c, 0x8b, - 0x3a, 0x7c, 0x2b, 0xc4, 0x1f, 0x01, 0xbe, 0x57, 0x11, 0xad, 0xe8, 0xf7, 0xab, 0xe2, 0xff, 0x80, - 0x9c, 0xaf, 0x2f, 0xb6, 0xff, 0x53, 0x0b, 0x19, 0x91, 0x0f, 0x40, 0xae, 0xc4, 0xed, 0xbc, 0x41, - 0x64, 0x19, 0x88, 0x0c, 0xb7, 0xa0, 0x1c, 0xc5, 0xf7, 0xec, 0x3a, 0xfe, 0xad, 0x09, 0xf2, 0xe2, - 0x15, 0x18, 0x55, 0xab, 0x21, 0x83, 0xd0, 0x57, 0x9e, 0x9f, 0x9b, 0x9b, 0x2c, 0x2f, 0x8c, 0xf6, - 0x90, 0x7e, 0xc8, 0xd6, 0x26, 0xe7, 0x26, 0x46, 0x53, 0xc5, 0xef, 0x95, 0x66, 0x10, 0xa6, 0x5a, - 0xc7, 0xd7, 0xe3, 0xfb, 0xba, 0x3f, 0x1a, 0xc5, 0x3b, 0x61, 0x3c, 0x31, 0x58, 0x35, 0x3d, 0x8f, - 0x1a, 0x62, 0x95, 0xc0, 0x3b, 0x53, 0xef, 0xbe, 0x16, 0xc3, 0x93, 0xa7, 0x61, 0x18, 0x61, 0xe2, - 0x9a, 0x94, 0xef, 0x8f, 0x45, 0x01, 0xe7, 0xbe, 0x16, 0x45, 0x16, 0x7f, 0x21, 0xbc, 0x21, 0x9f, - 0xa1, 0xfa, 0x51, 0xbd, 0x55, 0x7d, 0x40, 0xfa, 0xab, 0xf8, 0x23, 0xbd, 0xfc, 0x39, 0x19, 0x7f, - 0xe3, 0x7d, 0x18, 0xa2, 0x0c, 0x8f, 0x81, 0x33, 0xbb, 0x38, 0x06, 0x7e, 0x1a, 0x72, 0xb3, 0xd4, - 0x5b, 0xb6, 0x7d, 0x37, 0x3d, 0xf4, 0x8b, 0x59, 0x45, 0x88, 0xec, 0x17, 0xc3, 0x69, 0xc8, 0x0a, - 0x10, 0xff, 0x01, 0x77, 0xe0, 0xf1, 0xef, 0x1f, 0x3b, 0x9f, 0x8d, 0xed, 0x53, 0x6a, 0x18, 0xe6, - 0x01, 0xdf, 0xeb, 0x9c, 0x0a, 0x5e, 0x14, 0x48, 0x7e, 0x73, 0x7f, 0xb6, 0x59, 0xc8, 0x71, 0x1a, - 0x2d, 0x81, 0x2d, 0x79, 0x1d, 0x06, 0x66, 0xa7, 0x4a, 0xe2, 0x31, 0x37, 0xf7, 0x0c, 0x39, 0x17, - 0x48, 0xd1, 0x47, 0x04, 0x22, 0xc1, 0xb7, 0x7b, 0xab, 0xf7, 0xf4, 0xf8, 0x5b, 0xee, 0x90, 0x0b, - 0xd3, 0x16, 0xfe, 0x0a, 0x50, 0x9c, 0x2e, 0x04, 0xda, 0x12, 0x7d, 0x1b, 0xa8, 0xca, 0x8a, 0x63, - 0x15, 0x6d, 0xe9, 0xdf, 0xc7, 0xe8, 0x9e, 0x87, 0xb1, 0x52, 0xab, 0xd5, 0x34, 0xa9, 0x81, 0xfa, - 0xa2, 0xb5, 0x9b, 0xd4, 0x15, 0x5e, 0x55, 0xf8, 0xb0, 0x4c, 0xe7, 0xc8, 0x3a, 0x86, 0x10, 0xa8, - 0x3b, 0xed, 0xa8, 0x37, 0x6d, 0xbc, 0x2c, 0x46, 0x6c, 0xe0, 0xec, 0x6d, 0xa7, 0x32, 0x21, 0xfc, - 0xaa, 0x78, 0xc4, 0x06, 0x1f, 0x1c, 0xf5, 0x32, 0x95, 0xc9, 0x8b, 0xdf, 0x9c, 0x86, 0x33, 0x65, - 0x87, 0xea, 0x1e, 0x9d, 0x9d, 0x2a, 0x95, 0xda, 0xe8, 0x0f, 0xd9, 0x6c, 0x52, 0x6b, 0xe9, 0x70, - 0x26, 0x85, 0x97, 0x61, 0x24, 0x68, 0x40, 0xad, 0x61, 0xb7, 0xa8, 0xfc, 0xc4, 0xb3, 0xe1, 0x63, - 0xea, 0x2e, 0x43, 0x69, 0x0a, 0x29, 0xb9, 0x05, 0x27, 0x03, 0x48, 0xa9, 0xd9, 0xb4, 0xd7, 0x35, - 0xda, 0x76, 0xb9, 0xd3, 0x75, 0x3f, 0x77, 0xba, 0x0e, 0x39, 0xe8, 0x0c, 0x5f, 0x77, 0x18, 0x81, - 0x96, 0x54, 0xaa, 0xf8, 0xc5, 0x0c, 0x9c, 0xbd, 0xa3, 0x37, 0x4d, 0x23, 0x14, 0x8d, 0x46, 0xdd, - 0x96, 0x6d, 0xb9, 0xf4, 0x08, 0x8d, 0xf1, 0xc8, 0x40, 0xca, 0x1e, 0xc8, 0x40, 0x8a, 0x77, 0x51, - 0xef, 0xbe, 0xbb, 0x28, 0xb7, 0xa7, 0x2e, 0xfa, 0xc3, 0x14, 0x8c, 0xfa, 0xef, 0x53, 0xe4, 0xb0, - 0x1d, 0xd2, 0xe3, 0x09, 0x3c, 0x80, 0x54, 0x7c, 0xec, 0x11, 0x4f, 0x6a, 0xd0, 0x37, 0x79, 0xbf, - 0x65, 0x3a, 0xd4, 0xdd, 0xc1, 0x03, 0x81, 0x8b, 0xe2, 0xb0, 0x65, 0x8c, 0xf2, 0x22, 0xb1, 0x73, - 0x16, 0x0e, 0xc6, 0x87, 0xc5, 0xfc, 0x85, 0xce, 0xb8, 0x1f, 0x8b, 0x84, 0x3f, 0x2c, 0x16, 0x2f, - 0x79, 0x22, 0x2f, 0xc5, 0x43, 0x52, 0xf2, 0x04, 0x64, 0x16, 0x16, 0x66, 0xc4, 0x3c, 0x8c, 0x31, - 0x60, 0x3c, 0x4f, 0x7e, 0x39, 0xcd, 0xb0, 0xc5, 0xdf, 0x4d, 0xf3, 0xe8, 0x06, 0x7c, 0xb8, 0x1e, - 0x8a, 0x12, 0x8e, 0x43, 0xbf, 0x2f, 0x70, 0xa1, 0x86, 0xc1, 0xe3, 0x12, 0xb5, 0x23, 0xd4, 0xba, - 0x83, 0x87, 0x44, 0x05, 0xff, 0xd1, 0x00, 0xbf, 0x45, 0xc0, 0x7d, 0x11, 0x3e, 0x1a, 0xf0, 0x9f, - 0x0a, 0xbc, 0x0f, 0x06, 0x82, 0x19, 0x4a, 0xbe, 0x3d, 0x08, 0xa6, 0x33, 0x2d, 0xc4, 0x2b, 0x13, - 0x73, 0x6e, 0x1f, 0xcb, 0xb8, 0x2f, 0x5e, 0xde, 0x2b, 0xc7, 0xe2, 0x3d, 0x60, 0xf1, 0x7e, 0x83, - 0x10, 0x2f, 0x7f, 0x68, 0x76, 0x64, 0xc5, 0x7b, 0x60, 0x27, 0xe7, 0xc5, 0x5f, 0x4b, 0x01, 0x61, - 0xcd, 0xaa, 0xea, 0xae, 0xbb, 0x6e, 0x3b, 0x06, 0x7f, 0x88, 0x70, 0x28, 0x82, 0x39, 0xb8, 0xdb, - 0xce, 0xff, 0x7d, 0x00, 0x4e, 0x46, 0x5c, 0xa7, 0x8f, 0xf8, 0x64, 0x75, 0x25, 0x3a, 0x9a, 0xba, - 0xbd, 0x70, 0x7a, 0x52, 0xbe, 0x4e, 0xed, 0x8d, 0xbc, 0x93, 0x94, 0xee, 0x51, 0xdf, 0x0f, 0x43, - 0xe2, 0x07, 0x5b, 0xa1, 0xfd, 0x7b, 0x32, 0x1c, 0xa5, 0x2e, 0x03, 0x68, 0x11, 0x34, 0x79, 0x01, - 0x06, 0xd8, 0x80, 0x59, 0xc2, 0x70, 0x51, 0x7d, 0xe1, 0xeb, 0x21, 0xc3, 0x07, 0xca, 0xeb, 0x49, - 0x40, 0x29, 0xb9, 0xbc, 0xf7, 0xef, 0xe0, 0x8d, 0xda, 0x27, 0x61, 0xb0, 0x64, 0x59, 0x36, 0x0f, - 0x7c, 0xe3, 0x8a, 0x8b, 0x8d, 0x8e, 0x36, 0xfd, 0x13, 0x18, 0xa6, 0x23, 0xa4, 0x4f, 0x34, 0xea, - 0x65, 0x86, 0xe4, 0xba, 0xff, 0x02, 0x8a, 0x3a, 0xc2, 0x3c, 0xc5, 0xcb, 0x1d, 0x47, 0xc0, 0xe2, - 0x0f, 0xa0, 0xb0, 0xf3, 0x86, 0xab, 0x8e, 0xdd, 0xb2, 0x5d, 0x6a, 0x70, 0x41, 0x0d, 0x86, 0x4f, - 0xe0, 0x5b, 0x02, 0x81, 0xcf, 0x2d, 0x23, 0xa1, 0x9b, 0x22, 0x45, 0xc8, 0x3d, 0x38, 0xe5, 0x5f, - 0x33, 0x07, 0x0f, 0x5b, 0x2b, 0x13, 0x2e, 0x3e, 0x1b, 0x18, 0x0c, 0xe3, 0x13, 0x85, 0xa8, 0xf1, - 0x47, 0xfd, 0x4b, 0x15, 0xff, 0x65, 0x6c, 0xdd, 0x34, 0xe4, 0xae, 0x4e, 0xe4, 0x47, 0xbe, 0x02, - 0x06, 0x67, 0xf5, 0xfb, 0x13, 0x6d, 0x71, 0x72, 0x33, 0xbc, 0xf3, 0xbb, 0x9b, 0x55, 0xfd, 0x7e, - 0xdd, 0x10, 0xe5, 0x14, 0x9b, 0x42, 0x66, 0x49, 0xea, 0x70, 0xa6, 0xea, 0xd8, 0xab, 0xb6, 0x47, - 0x0d, 0xe5, 0x8d, 0xe8, 0x89, 0xf0, 0x51, 0x79, 0x4b, 0x50, 0xd4, 0xbb, 0x3c, 0x16, 0xed, 0xc0, - 0x86, 0xac, 0xc2, 0x89, 0x92, 0xeb, 0xb6, 0x57, 0x69, 0x78, 0xbf, 0x35, 0xba, 0xed, 0x67, 0xbc, - 0x57, 0xf8, 0x7d, 0x3f, 0xa2, 0x63, 0x51, 0x7e, 0xbd, 0x55, 0xf7, 0x4c, 0xb9, 0x46, 0xfc, 0x16, - 0x95, 0x37, 0xeb, 0x5d, 0x5f, 0x80, 0x18, 0xc1, 0x22, 0x3f, 0x86, 0xc3, 0x0b, 0x7b, 0x37, 0x10, - 0x3d, 0x46, 0xbf, 0x90, 0x7b, 0x37, 0x52, 0x84, 0x7c, 0x12, 0xce, 0xc7, 0x7a, 0x83, 0x7f, 0x15, - 0xeb, 0x63, 0x12, 0x7d, 0xfa, 0xaa, 0x12, 0x8c, 0x67, 0x59, 0x17, 0x68, 0x5d, 0x38, 0xdc, 0xcc, - 0xf6, 0x8f, 0x8c, 0x9e, 0xd0, 0xce, 0xc6, 0x05, 0xc6, 0x5f, 0x67, 0xfd, 0x9d, 0xb4, 0x32, 0xd3, - 0x71, 0x1b, 0x70, 0x5f, 0x33, 0x9d, 0x3c, 0x63, 0xa5, 0xf7, 0x38, 0x63, 0x3d, 0x19, 0xf7, 0xea, - 0x48, 0x98, 0x86, 0xbe, 0x02, 0x46, 0xfc, 0x12, 0xd8, 0xee, 0x8d, 0x60, 0x29, 0xeb, 0xdc, 0xdd, - 0x17, 0x44, 0x77, 0x8f, 0xa2, 0x11, 0xbc, 0xa1, 0xf4, 0xb1, 0xc2, 0xaf, 0xf8, 0xe3, 0x29, 0x80, - 0x70, 0x90, 0x90, 0xf7, 0x47, 0xe3, 0x0a, 0xa6, 0xc2, 0xab, 0x2e, 0x11, 0x0b, 0x27, 0x12, 0x48, - 0x90, 0x5c, 0x80, 0x2c, 0xc6, 0x4b, 0x4a, 0x87, 0x47, 0xeb, 0x2b, 0xa6, 0x65, 0x68, 0x08, 0x65, - 0x58, 0x29, 0xb0, 0x09, 0x62, 0xd1, 0xad, 0x83, 0x5b, 0xf6, 0x13, 0x70, 0xa2, 0xd6, 0x5e, 0x94, - 0x95, 0x45, 0x0e, 0x82, 0xe1, 0xb6, 0x17, 0x83, 0x77, 0xef, 0x91, 0xa0, 0x58, 0xd1, 0x22, 0xc5, - 0xdf, 0x95, 0x36, 0x17, 0xbe, 0x52, 0x90, 0xcb, 0x90, 0x36, 0x0d, 0xd1, 0xad, 0x49, 0xf3, 0x07, - 0xd7, 0xaa, 0xb4, 0x69, 0x90, 0x59, 0x38, 0xd9, 0xb6, 0x56, 0x2c, 0x7b, 0xdd, 0xaa, 0x37, 0x6c, - 0xcb, 0xf5, 0x1c, 0xdd, 0xb4, 0x3c, 0x37, 0xb8, 0xd7, 0xf5, 0xd7, 0x30, 0x4e, 0x52, 0x0e, 0x29, - 0xa6, 0x7b, 0x34, 0xd2, 0x8e, 0x41, 0xc9, 0x6b, 0x30, 0xa8, 0xaf, 0x63, 0x3c, 0x15, 0xd7, 0x6e, - 0x52, 0x71, 0x75, 0x1b, 0xdc, 0xaf, 0x96, 0xee, 0xd6, 0xca, 0x1c, 0x13, 0xe5, 0x04, 0xfa, 0xba, - 0x2b, 0x10, 0xe3, 0xc3, 0x30, 0x28, 0x35, 0xa4, 0x78, 0x0a, 0x48, 0xbc, 0xf2, 0xe2, 0x0a, 0x9c, - 0x4e, 0xe4, 0x45, 0x2e, 0xc1, 0x09, 0x3f, 0xbe, 0x20, 0x6b, 0x45, 0x5b, 0xc4, 0x4d, 0x1a, 0xd6, - 0x86, 0x19, 0xb8, 0xe4, 0x58, 0x6e, 0x19, 0x23, 0xf1, 0x3d, 0x05, 0x63, 0x21, 0x5d, 0x8b, 0xcf, - 0xf0, 0x3c, 0x6a, 0x91, 0x76, 0xc2, 0xa7, 0xac, 0x72, 0x70, 0xf1, 0xfb, 0x53, 0xca, 0x08, 0x3a, - 0x44, 0xd3, 0x70, 0x47, 0xa3, 0xa6, 0xf8, 0xab, 0x19, 0x18, 0xac, 0xda, 0x8e, 0x27, 0x42, 0x7c, - 0x1d, 0x6d, 0x5b, 0x4d, 0x3a, 0x51, 0xc8, 0xee, 0xe2, 0x44, 0xe1, 0x02, 0x64, 0xa5, 0x67, 0x0d, - 0xfc, 0xee, 0xd1, 0x30, 0x1c, 0x0d, 0xa1, 0xef, 0xf0, 0xd3, 0xae, 0xb8, 0xa3, 0x41, 0xdf, 0xbe, - 0xdd, 0x79, 0xfe, 0x72, 0x1a, 0xe0, 0x8d, 0x67, 0x9f, 0x7d, 0x88, 0xbb, 0xb4, 0xf8, 0xad, 0x29, - 0x38, 0x21, 0xae, 0xef, 0xa5, 0xa8, 0xad, 0x7d, 0xbe, 0xe3, 0x85, 0x3c, 0x57, 0x73, 0x90, 0xe6, - 0xe3, 0x98, 0x69, 0x37, 0x79, 0xdf, 0xf4, 0xf0, 0x06, 0x53, 0x0a, 0xdb, 0x4a, 0x05, 0x4c, 0x36, - 0xed, 0x7c, 0x3a, 0xf2, 0x7e, 0xdf, 0x31, 0x21, 0x13, 0xda, 0xb3, 0xac, 0xc0, 0x64, 0xa2, 0x73, - 0x42, 0xf1, 0x07, 0xb3, 0x90, 0x9d, 0xbc, 0x4f, 0x1b, 0x47, 0xbc, 0x6b, 0xa4, 0xeb, 0x8e, 0xec, - 0x3e, 0xaf, 0x3b, 0xf6, 0xe2, 0x69, 0xf5, 0x6a, 0xd8, 0x9f, 0xb9, 0x68, 0xf5, 0x4a, 0xcf, 0xab, - 0xd5, 0xfb, 0x3d, 0x7d, 0xf4, 0x1c, 0xf5, 0x7e, 0x26, 0x03, 0x99, 0x5a, 0xb9, 0x7a, 0xac, 0x37, - 0x87, 0xaa, 0x37, 0xdd, 0x3d, 0x59, 0x8a, 0xc1, 0xe5, 0x74, 0x7f, 0xe8, 0x3b, 0xae, 0xdc, 0x43, - 0xff, 0x71, 0x06, 0x46, 0x6a, 0x53, 0x0b, 0x55, 0xe9, 0x7e, 0xe8, 0x16, 0xf7, 0xef, 0x45, 0x4f, - 0x53, 0xde, 0xa5, 0x17, 0x62, 0x86, 0xeb, 0xed, 0x8a, 0xe5, 0xbd, 0xf8, 0x3c, 0x46, 0x7b, 0xc5, - 0x23, 0x55, 0xfe, 0x82, 0xc0, 0x35, 0xdf, 0xa6, 0x5f, 0xc4, 0x60, 0x31, 0x3e, 0x03, 0xf2, 0x32, - 0x64, 0x6e, 0x0b, 0x3f, 0xad, 0x4e, 0x7c, 0x9e, 0xbb, 0xce, 0xf9, 0xb0, 0x49, 0x30, 0xd3, 0x36, - 0x0d, 0xe4, 0xc0, 0x4a, 0xb1, 0xc2, 0x37, 0x84, 0xc9, 0xb0, 0xa3, 0xc2, 0x4b, 0x7e, 0xe1, 0x1b, - 0x95, 0x09, 0x52, 0x83, 0xc1, 0x2a, 0x75, 0x56, 0x4d, 0xec, 0x28, 0x7f, 0xce, 0xee, 0xce, 0xe4, - 0xe4, 0xd6, 0x66, 0x61, 0xb0, 0x15, 0x16, 0x42, 0x66, 0x32, 0x17, 0xf2, 0x26, 0x00, 0xb7, 0xaa, - 0x76, 0x18, 0x09, 0xfc, 0x22, 0xee, 0xe7, 0xf9, 0x96, 0x31, 0x61, 0xef, 0x26, 0x31, 0x23, 0x2b, - 0x30, 0x3a, 0x6b, 0x1b, 0xe6, 0x3d, 0x93, 0x3b, 0x64, 0x63, 0x05, 0xb9, 0xed, 0xdd, 0x20, 0xd9, - 0x16, 0x71, 0x55, 0x2a, 0x97, 0x54, 0x4d, 0x8c, 0x71, 0xf1, 0x27, 0x7a, 0x21, 0xcb, 0xba, 0xfd, - 0x78, 0xfc, 0xee, 0x67, 0xfc, 0x96, 0x60, 0xf4, 0xae, 0xed, 0xac, 0x98, 0xd6, 0x52, 0xf0, 0xbe, - 0x46, 0x9c, 0x39, 0xa1, 0x7f, 0xdf, 0x3a, 0xc7, 0xd5, 0x83, 0xa7, 0x38, 0x5a, 0x8c, 0x7c, 0x9b, - 0x11, 0xfc, 0x12, 0x00, 0x0f, 0x32, 0x82, 0x34, 0xfd, 0x61, 0x80, 0x23, 0x1e, 0x82, 0x04, 0x9f, - 0xec, 0xc8, 0x01, 0x8e, 0x42, 0x62, 0x72, 0xc5, 0xf7, 0x90, 0x1a, 0xc0, 0x17, 0x3c, 0x78, 0xb8, - 0x86, 0x1e, 0x52, 0xb2, 0x11, 0xc0, 0x7d, 0xa5, 0xaa, 0x00, 0xd2, 0xad, 0x33, 0x28, 0x82, 0x88, - 0x4c, 0x0e, 0x22, 0x00, 0x6d, 0xc2, 0xa5, 0xb3, 0x26, 0xf1, 0x20, 0x2f, 0x2a, 0x6e, 0x31, 0x24, - 0xc2, 0xad, 0xa3, 0x57, 0x4c, 0xe8, 0x56, 0x39, 0xb4, 0x9d, 0x5b, 0x65, 0xf1, 0x7b, 0x32, 0x30, - 0xc8, 0xb8, 0xd5, 0xda, 0xab, 0xab, 0xba, 0xb3, 0x71, 0xac, 0xc8, 0xfb, 0x51, 0xe4, 0x3a, 0x8c, - 0xc9, 0xcf, 0x68, 0x98, 0xe9, 0xea, 0x47, 0xba, 0x0b, 0x0e, 0x49, 0x54, 0x02, 0x6e, 0x5b, 0xe2, - 0xbc, 0xef, 0x09, 0x30, 0x9e, 0x19, 0xba, 0x5a, 0x9c, 0x57, 0xf1, 0x9b, 0x52, 0x30, 0xaa, 0x42, - 0x03, 0xdd, 0x4f, 0x25, 0xea, 0xfe, 0xd3, 0x30, 0x20, 0x1c, 0x6b, 0x74, 0x43, 0xf8, 0xf9, 0x8e, - 0x6c, 0x6d, 0x16, 0x00, 0x23, 0x3b, 0xd4, 0x1d, 0xaa, 0x1b, 0x5a, 0x48, 0x40, 0x5e, 0x80, 0x21, - 0xfc, 0x71, 0xd7, 0x31, 0x3d, 0x8f, 0xf2, 0xce, 0xc8, 0xf2, 0xdb, 0x3e, 0x5e, 0x60, 0x9d, 0x23, - 0xb4, 0x08, 0x59, 0xf1, 0xe7, 0xd3, 0x30, 0x50, 0x6b, 0x2f, 0xba, 0x1b, 0xae, 0x47, 0x57, 0x8f, - 0xb8, 0x0e, 0xf9, 0x07, 0x37, 0xd9, 0xc4, 0x83, 0x9b, 0x27, 0xfc, 0xa1, 0x25, 0xdd, 0x4a, 0x05, - 0x1b, 0x03, 0xdf, 0x57, 0x39, 0xd4, 0xa2, 0xdc, 0xee, 0xb5, 0xa8, 0xf8, 0x0f, 0xd3, 0x30, 0xca, - 0x5d, 0x3a, 0x26, 0x4c, 0xb7, 0x71, 0x00, 0xcf, 0xcc, 0x0e, 0x5f, 0xa6, 0xfb, 0x73, 0x83, 0xda, - 0xc1, 0xe3, 0xbd, 0xe2, 0x4f, 0xa4, 0x61, 0xb0, 0xd4, 0xf6, 0x96, 0x4b, 0x1e, 0xce, 0x6f, 0x0f, - 0xe5, 0xb1, 0xc7, 0xbe, 0x26, 0xaf, 0xe2, 0xcf, 0xa5, 0x78, 0x0e, 0x80, 0x05, 0x7b, 0x85, 0x5a, - 0x07, 0x70, 0x25, 0x76, 0x10, 0x07, 0xc5, 0x7e, 0x4f, 0x64, 0x76, 0xd7, 0x13, 0x78, 0x91, 0xab, - 0xd9, 0x4d, 0x7a, 0xb4, 0x3f, 0xe3, 0x00, 0x2f, 0x72, 0x7d, 0x81, 0x1c, 0x80, 0xe3, 0xc0, 0xbb, - 0x4b, 0x20, 0x07, 0x70, 0x9e, 0xfb, 0xee, 0x10, 0xc8, 0x4f, 0xa7, 0x60, 0x60, 0xdc, 0xf6, 0x8e, - 0xf8, 0xc0, 0x17, 0x5f, 0x71, 0xb4, 0xd5, 0xdc, 0xff, 0x8a, 0xa3, 0xad, 0x9b, 0xc5, 0x6f, 0x49, - 0xc3, 0x29, 0x91, 0xa7, 0x48, 0x9c, 0xa0, 0x1d, 0x4f, 0xc7, 0x62, 0xb0, 0xc5, 0x45, 0x73, 0x3c, - 0x0f, 0x09, 0xd1, 0x7c, 0x57, 0x06, 0x4e, 0x61, 0x2c, 0x78, 0xb6, 0x1f, 0x7b, 0x17, 0xd8, 0x22, - 0xa4, 0x11, 0x75, 0xcf, 0x99, 0x4d, 0x70, 0xcf, 0xf9, 0xb3, 0xcd, 0xc2, 0x8b, 0xbb, 0x48, 0xf1, - 0x74, 0xb5, 0x86, 0xfb, 0x2c, 0xc6, 0xd5, 0x77, 0xec, 0x71, 0x01, 0x6e, 0xda, 0xa6, 0x25, 0x7c, - 0xe5, 0xb9, 0x99, 0x5c, 0xdb, 0xda, 0x2c, 0x9c, 0x7e, 0xcb, 0x36, 0xad, 0xba, 0xea, 0x30, 0xbf, - 0xdb, 0xfa, 0x42, 0xd6, 0x9a, 0x54, 0x4d, 0xf1, 0xd7, 0x53, 0x70, 0x2e, 0xaa, 0xc5, 0xef, 0x06, - 0xdb, 0xf1, 0x6f, 0xa5, 0xe1, 0xf4, 0x0d, 0x14, 0x4e, 0xe0, 0x62, 0x78, 0x3c, 0x6f, 0x89, 0xc1, - 0x99, 0x20, 0x9b, 0x63, 0x8b, 0xb2, 0xb3, 0x6c, 0x8e, 0x27, 0x75, 0x21, 0x9b, 0x5f, 0x4a, 0xc1, - 0xc9, 0xf9, 0xca, 0x44, 0xf9, 0x5d, 0x32, 0xa2, 0xe2, 0xdf, 0x73, 0xc4, 0x0d, 0xce, 0xd8, 0xf7, - 0x1c, 0x71, 0xd3, 0xf3, 0xb3, 0x69, 0x38, 0x59, 0x2b, 0xcd, 0xce, 0xbc, 0x5b, 0x66, 0xf0, 0xb2, - 0xec, 0x0f, 0xef, 0x1f, 0xa1, 0x09, 0x5b, 0x40, 0xfe, 0xcc, 0x3b, 0xd7, 0x3b, 0xfb, 0xc9, 0xc7, - 0x85, 0x72, 0xc4, 0xa7, 0xee, 0x03, 0x11, 0x0a, 0xd3, 0xfc, 0x08, 0xf5, 0x11, 0xd7, 0xfc, 0x7f, - 0x96, 0x83, 0xc1, 0x5b, 0xed, 0x45, 0x2a, 0x1c, 0xc2, 0x1e, 0xea, 0x73, 0xe3, 0xeb, 0x30, 0x28, - 0xc4, 0x80, 0xf7, 0x23, 0x52, 0x90, 0x5b, 0x11, 0xe4, 0x8b, 0xc7, 0xea, 0x93, 0x89, 0xc8, 0x05, - 0xc8, 0xde, 0xa1, 0xce, 0xa2, 0x1c, 0x2f, 0x61, 0x8d, 0x3a, 0x8b, 0x1a, 0x42, 0xc9, 0x8c, 0xe4, - 0x6f, 0x59, 0xad, 0x60, 0xb2, 0x41, 0x71, 0xe5, 0x88, 0xd9, 0x13, 0x03, 0xb7, 0x60, 0xbd, 0x65, - 0xf2, 0x34, 0x85, 0x72, 0xac, 0x16, 0xb5, 0x24, 0x99, 0x83, 0xb1, 0x88, 0xbb, 0x30, 0x66, 0xda, - 0xeb, 0x4f, 0x60, 0x97, 0x94, 0x63, 0x2f, 0x5e, 0x94, 0xbc, 0x0a, 0x43, 0x3e, 0x10, 0x1d, 0x53, - 0x07, 0xc2, 0xdc, 0x3f, 0x01, 0x2b, 0x25, 0xbf, 0x4a, 0xa4, 0x80, 0xcc, 0x00, 0xaf, 0x40, 0x20, - 0x81, 0x81, 0xe2, 0xac, 0x1d, 0x29, 0x40, 0x5e, 0x40, 0x06, 0xf8, 0x00, 0x11, 0xdd, 0xad, 0x06, - 0x31, 0x98, 0x00, 0x5e, 0x1f, 0x39, 0x02, 0xce, 0x43, 0x46, 0x44, 0xc8, 0xc8, 0x3c, 0x40, 0xe8, - 0x16, 0x23, 0x02, 0xf3, 0xec, 0xda, 0x61, 0x47, 0x62, 0x21, 0xdf, 0x03, 0x0e, 0xef, 0xe5, 0x1e, - 0xb0, 0xf8, 0xcd, 0x19, 0x18, 0x2c, 0xb5, 0xc2, 0x0c, 0x7c, 0xef, 0x87, 0x5c, 0xa9, 0xd5, 0xba, - 0xad, 0x55, 0xe4, 0x84, 0x2a, 0x7a, 0xab, 0x55, 0x6f, 0x3b, 0xa6, 0xfc, 0x5a, 0x81, 0x13, 0x91, - 0x32, 0x0c, 0x97, 0x5a, 0xad, 0x6a, 0x7b, 0xb1, 0x69, 0x36, 0xa4, 0xac, 0x7a, 0x3c, 0x8f, 0x75, - 0xab, 0x55, 0x6f, 0x21, 0x46, 0x4d, 0xac, 0x17, 0x2d, 0x43, 0x3e, 0x89, 0xe1, 0xec, 0x44, 0x8a, - 0x3b, 0x9e, 0x3b, 0xad, 0x18, 0x78, 0xd3, 0x86, 0x6d, 0xbb, 0x1a, 0x10, 0x89, 0x9c, 0x76, 0x7e, - 0xa2, 0x20, 0x56, 0x51, 0x2c, 0xa7, 0x5d, 0xc8, 0x92, 0x3c, 0x03, 0x7d, 0xa5, 0x56, 0x4b, 0xba, - 0xeb, 0x42, 0xb7, 0x38, 0x56, 0x4a, 0xcd, 0xc3, 0x2c, 0xc8, 0xc4, 0x67, 0x89, 0xdb, 0x71, 0xdb, - 0xf1, 0x70, 0x48, 0x0d, 0x87, 0x9f, 0xe5, 0x5f, 0xa7, 0xdb, 0x72, 0x04, 0x29, 0x2d, 0x5a, 0xe6, - 0xfc, 0x2b, 0x30, 0x12, 0x6d, 0xf1, 0xae, 0xf2, 0xde, 0xfc, 0x69, 0x0a, 0xa5, 0x72, 0xc4, 0x9f, - 0xec, 0x3c, 0x07, 0x99, 0x52, 0xab, 0x25, 0x26, 0xb5, 0x93, 0x09, 0x9d, 0xaa, 0xc6, 0x07, 0x29, - 0xb5, 0x5a, 0xfe, 0xa7, 0x1f, 0xf1, 0xb7, 0x7f, 0x7b, 0xfa, 0xf4, 0x9f, 0xe6, 0x9f, 0x7e, 0xb4, - 0xdf, 0xe5, 0x15, 0xbf, 0x90, 0x85, 0x13, 0xa5, 0x56, 0xeb, 0x38, 0xc9, 0xcd, 0x41, 0x45, 0x21, - 0x79, 0x16, 0x40, 0x9a, 0x63, 0xfb, 0x82, 0x97, 0xc9, 0x83, 0xd2, 0xfc, 0x9a, 0x4f, 0x69, 0x12, - 0x91, 0xaf, 0x7e, 0xfd, 0xbb, 0x51, 0xbf, 0xd0, 0x9f, 0x66, 0x60, 0xb7, 0x61, 0xca, 0x60, 0xc7, - 0x61, 0xca, 0xbe, 0x32, 0x83, 0x93, 0xeb, 0x51, 0x8f, 0xda, 0xf8, 0xa0, 0xa8, 0x86, 0xe8, 0xe7, - 0xdc, 0xae, 0xa6, 0x99, 0x9f, 0xca, 0xc8, 0x03, 0x14, 0x33, 0xa7, 0x1c, 0xf7, 0x42, 0xef, 0xbe, - 0xec, 0xf7, 0x11, 0x59, 0x98, 0x22, 0x94, 0x9c, 0x9f, 0x32, 0x53, 0x04, 0x36, 0x6c, 0x30, 0x54, - 0xdd, 0x34, 0x34, 0x85, 0xd6, 0xef, 0xc3, 0xbe, 0x5d, 0xf5, 0xe1, 0x66, 0x1a, 0x83, 0x97, 0x04, - 0x81, 0x11, 0xf7, 0xbf, 0x0d, 0xba, 0x06, 0xc0, 0x1d, 0x2c, 0x82, 0x17, 0x04, 0xc3, 0x3c, 0x06, - 0x1a, 0xcf, 0xa4, 0x29, 0x62, 0xa0, 0x85, 0x24, 0x81, 0x43, 0x56, 0x26, 0xd1, 0x21, 0xeb, 0x0a, - 0xf4, 0x6b, 0xfa, 0xfa, 0xeb, 0x6d, 0x2a, 0x1e, 0xb4, 0xf9, 0x71, 0x87, 0xf5, 0xf5, 0xfa, 0xa7, - 0x18, 0x50, 0x0b, 0xd0, 0xa4, 0x18, 0x44, 0xbf, 0x91, 0x1c, 0x5f, 0xf8, 0x61, 0x7e, 0x10, 0xf3, - 0x66, 0x2f, 0x8a, 0x4e, 0x3e, 0x04, 0x99, 0xd2, 0xdd, 0x9a, 0x90, 0xec, 0x79, 0xe9, 0x89, 0x96, - 0x90, 0x57, 0xc7, 0xb2, 0x77, 0x6b, 0xc5, 0xaf, 0x4c, 0x03, 0x89, 0x53, 0x92, 0x17, 0x61, 0x00, - 0xa1, 0x4b, 0x4c, 0x67, 0xe4, 0x2c, 0xfb, 0xeb, 0x6e, 0xdd, 0x41, 0x68, 0xc4, 0x0a, 0xf5, 0x49, - 0xc9, 0x4b, 0x00, 0xa5, 0xbb, 0x35, 0x3f, 0xa1, 0xb5, 0x9c, 0x65, 0x7f, 0xdd, 0x4d, 0x48, 0x62, - 0x2d, 0x11, 0xa3, 0x01, 0x7b, 0xb7, 0x36, 0x6d, 0xbb, 0x9e, 0x10, 0x35, 0x37, 0x60, 0xd7, 0xdd, - 0xfa, 0xb2, 0xed, 0x7a, 0x11, 0x03, 0x96, 0x93, 0x61, 0xfe, 0xd2, 0xbb, 0x35, 0xfe, 0xd2, 0xd3, - 0xd0, 0xec, 0x20, 0x57, 0x28, 0xcf, 0x5f, 0xba, 0xee, 0xd6, 0xf9, 0x2b, 0x51, 0xa3, 0xee, 0xd8, - 0xcd, 0x68, 0xfe, 0xd2, 0x48, 0xa9, 0xe2, 0xd7, 0xf7, 0xc3, 0xe8, 0x84, 0xee, 0xe9, 0x8b, 0xba, - 0x4b, 0xa5, 0x6d, 0xff, 0x09, 0x1f, 0x16, 0xcd, 0xcf, 0x8d, 0x72, 0x30, 0x16, 0x13, 0xbe, 0x46, - 0x2d, 0x40, 0x5e, 0x0e, 0xf9, 0x56, 0x1d, 0xdb, 0xb3, 0x1b, 0x76, 0x33, 0x92, 0xae, 0x76, 0xb1, - 0xde, 0x12, 0x60, 0x2d, 0x46, 0x48, 0x9e, 0x86, 0x41, 0x1f, 0xc6, 0x76, 0x2a, 0x99, 0x50, 0x67, - 0x8c, 0x45, 0xb6, 0x51, 0xd1, 0x64, 0x34, 0x79, 0x09, 0x86, 0xfc, 0x9f, 0xd2, 0x1e, 0x80, 0xe7, - 0xde, 0x5d, 0x8c, 0x6d, 0xf3, 0x64, 0x52, 0xb9, 0x28, 0xce, 0x6f, 0xbd, 0x91, 0xa2, 0x4a, 0x7a, - 0xdb, 0x08, 0x29, 0xf9, 0x14, 0x8c, 0xf8, 0xbf, 0xc5, 0xce, 0x86, 0xfb, 0x47, 0x3e, 0xed, 0x2b, - 0xa1, 0x2a, 0xd6, 0xab, 0x51, 0x72, 0xbe, 0xc7, 0x79, 0xc4, 0x4f, 0xb3, 0x6a, 0x2c, 0xc6, 0xb7, - 0x38, 0x4a, 0x05, 0xa4, 0x02, 0x63, 0x3e, 0x24, 0xd4, 0xd0, 0xbe, 0x70, 0x6b, 0x6b, 0x2c, 0xd6, - 0x13, 0x95, 0x34, 0x5e, 0x8a, 0x34, 0xe1, 0x42, 0x04, 0x68, 0xb8, 0xcb, 0xe6, 0x3d, 0x4f, 0xec, - 0x4b, 0x45, 0xe2, 0x00, 0x91, 0xa2, 0x3b, 0xe0, 0xca, 0x69, 0xea, 0xe2, 0x09, 0x69, 0x34, 0xcc, - 0x51, 0x57, 0x6e, 0xa4, 0x06, 0xa7, 0x7c, 0xfc, 0x8d, 0x72, 0xb5, 0xea, 0xd8, 0x6f, 0xd1, 0x86, - 0x57, 0x99, 0x10, 0x56, 0x08, 0x06, 0x87, 0x35, 0x16, 0xeb, 0x4b, 0x8d, 0x16, 0x53, 0x0a, 0x86, - 0x8b, 0x32, 0x4f, 0x2c, 0x4c, 0xee, 0xc0, 0x69, 0x09, 0x5e, 0xb1, 0x5c, 0x4f, 0xb7, 0x1a, 0x34, - 0x08, 0xca, 0x84, 0x07, 0x0f, 0x82, 0xab, 0x29, 0x90, 0x51, 0xb6, 0xc9, 0xc5, 0xc9, 0x2b, 0x30, - 0xec, 0x23, 0xf8, 0x75, 0xe7, 0x20, 0x5e, 0x77, 0xe2, 0x90, 0x34, 0x16, 0xeb, 0x6a, 0x40, 0x82, - 0x28, 0xb1, 0xac, 0x51, 0x0b, 0x1b, 0x2d, 0x3f, 0xc5, 0x81, 0xaf, 0x51, 0xde, 0x46, 0x2b, 0x51, - 0x19, 0x19, 0x29, 0x79, 0x35, 0xd4, 0xa8, 0x79, 0xc7, 0x5c, 0x32, 0xfd, 0x14, 0x7a, 0x67, 0x85, - 0x7e, 0xd8, 0x08, 0x4c, 0xd2, 0x0f, 0x4e, 0x7e, 0xbe, 0x04, 0x27, 0x13, 0x74, 0x6c, 0x57, 0xbb, - 0xd2, 0x4f, 0xa7, 0xc3, 0x46, 0x1c, 0xf1, 0xad, 0xe9, 0x38, 0xf4, 0xfb, 0x5f, 0x22, 0x8c, 0x87, - 0x7c, 0xa7, 0xa1, 0xa9, 0xf2, 0xf0, 0xf1, 0x11, 0x71, 0x1c, 0xf1, 0xed, 0xea, 0x41, 0x88, 0xe3, - 0x4b, 0xa9, 0x50, 0x1c, 0x47, 0x7c, 0x0b, 0xfb, 0x73, 0xd9, 0x70, 0x4e, 0x3a, 0xde, 0xc7, 0x1e, - 0x94, 0x99, 0x1c, 0xba, 0xfb, 0xe6, 0x76, 0xe1, 0xee, 0x2b, 0xab, 0x66, 0xdf, 0xde, 0x54, 0x93, - 0xbc, 0x02, 0x83, 0x55, 0xdb, 0xf5, 0x96, 0x1c, 0xea, 0x56, 0x83, 0xc4, 0x37, 0x18, 0x83, 0xa0, - 0x25, 0xc0, 0xf5, 0x56, 0x34, 0x30, 0x9f, 0x44, 0x2e, 0xc5, 0x2b, 0x1c, 0xd8, 0x7d, 0xbc, 0xc2, - 0xe2, 0x6f, 0x66, 0x62, 0xba, 0xc4, 0xcd, 0xde, 0x23, 0xa9, 0x4b, 0x07, 0x30, 0x51, 0x90, 0xeb, - 0xe1, 0x1a, 0xca, 0xf7, 0x07, 0xbd, 0x52, 0x7c, 0xdf, 0x45, 0xb1, 0x3d, 0x88, 0x92, 0x90, 0x8f, - 0xc1, 0xd9, 0x08, 0xa0, 0xaa, 0x3b, 0xfa, 0x2a, 0xf5, 0xc2, 0xe4, 0xd0, 0x18, 0xb1, 0xd1, 0x2f, - 0x5d, 0x6f, 0x05, 0x68, 0x39, 0xe1, 0x74, 0x07, 0x0e, 0x92, 0x62, 0xf6, 0xed, 0xe2, 0xad, 0xf6, - 0xe7, 0x33, 0xa1, 0x99, 0x14, 0x8d, 0xbc, 0xae, 0x51, 0xb7, 0xdd, 0xf4, 0x1e, 0xde, 0x0e, 0xde, - 0x5b, 0x2e, 0xac, 0x69, 0x38, 0x51, 0xba, 0x77, 0x8f, 0x36, 0x3c, 0x3f, 0xa1, 0x84, 0x2b, 0x62, - 0xed, 0xf2, 0x6d, 0x8b, 0x40, 0x89, 0x04, 0x01, 0x6e, 0x24, 0x5d, 0x77, 0xb4, 0x58, 0xf1, 0xb7, - 0xb2, 0x90, 0x0f, 0xb6, 0x0d, 0xc1, 0x7b, 0xcc, 0x43, 0x5c, 0xa2, 0x1f, 0x88, 0x5e, 0x31, 0x61, - 0x2c, 0x14, 0x86, 0x78, 0x08, 0x97, 0xef, 0xc5, 0x6d, 0x49, 0x41, 0x65, 0x16, 0x12, 0xf2, 0x9d, - 0xc8, 0x79, 0xb1, 0x13, 0x21, 0xe1, 0x7b, 0xd7, 0xba, 0xcb, 0x59, 0x68, 0x71, 0xae, 0xe4, 0x1b, - 0x52, 0x70, 0xca, 0xef, 0x94, 0xf9, 0x45, 0x66, 0x92, 0x63, 0x4c, 0x12, 0x7f, 0x17, 0xf4, 0xa1, - 0xce, 0xd5, 0xf1, 0x4e, 0xba, 0x9a, 0x54, 0x98, 0xb7, 0x24, 0x88, 0x0b, 0x15, 0x28, 0x84, 0x8d, - 0x34, 0x3c, 0x14, 0x8a, 0xab, 0x25, 0xd6, 0x7b, 0xfe, 0x06, 0x9c, 0xeb, 0xc8, 0x72, 0x3b, 0x13, - 0xb8, 0x57, 0x36, 0x81, 0x7f, 0x23, 0x15, 0x4e, 0x44, 0x8a, 0x90, 0xc8, 0x55, 0x80, 0x10, 0x24, - 0x36, 0xc5, 0xf8, 0x08, 0x2d, 0x14, 0x9a, 0x26, 0x51, 0x90, 0x79, 0xc8, 0x09, 0xb1, 0xa4, 0x51, - 0x2c, 0xef, 0xdb, 0xa6, 0x17, 0xae, 0xca, 0x72, 0xc0, 0x0d, 0xaf, 0xf8, 0x66, 0xc1, 0xe6, 0xfc, - 0x4b, 0x30, 0xb8, 0xd7, 0xef, 0xfa, 0x86, 0x0c, 0x10, 0x79, 0x07, 0x7b, 0x88, 0xe6, 0xfd, 0x11, - 0x9e, 0xc2, 0x2e, 0x43, 0x3f, 0xfb, 0x04, 0x4c, 0x76, 0x25, 0x05, 0xb7, 0x6f, 0x0b, 0x98, 0x16, - 0x60, 0xc3, 0xd8, 0x90, 0x7d, 0xc9, 0xb1, 0x21, 0x8b, 0xdf, 0x94, 0x81, 0x33, 0x72, 0x87, 0x4c, - 0x50, 0xcc, 0x97, 0x73, 0xdc, 0x29, 0xef, 0x60, 0xa7, 0x14, 0x21, 0xc7, 0x37, 0x2e, 0x22, 0x71, - 0x11, 0x3f, 0x54, 0x42, 0x88, 0x26, 0x30, 0xc5, 0x7f, 0x95, 0x86, 0xe1, 0xc0, 0x38, 0xd4, 0x1d, - 0xf7, 0x21, 0xee, 0x8e, 0x0f, 0xc2, 0x30, 0x46, 0xf7, 0x5b, 0xa5, 0x16, 0x8f, 0x80, 0xd7, 0x2b, - 0x65, 0x1a, 0xf3, 0x11, 0x22, 0x11, 0x65, 0x84, 0x90, 0x69, 0x3f, 0xb7, 0xfc, 0xa4, 0x98, 0x8b, - 0xdc, 0xec, 0xe3, 0xf0, 0xe2, 0xb7, 0x67, 0x60, 0xc8, 0x97, 0xf2, 0xb8, 0x79, 0x54, 0x6f, 0x89, - 0x0e, 0x57, 0xc8, 0xd7, 0x00, 0xaa, 0xb6, 0xe3, 0xe9, 0xcd, 0xb9, 0x50, 0xf3, 0xf1, 0x78, 0xb5, - 0x85, 0x50, 0x5e, 0x46, 0x22, 0xc1, 0xf5, 0x2b, 0x34, 0xab, 0xf9, 0xc4, 0xc4, 0xd7, 0xaf, 0x00, - 0xaa, 0x49, 0x14, 0xc5, 0x1f, 0x4d, 0xc3, 0x09, 0xbf, 0x93, 0x26, 0xef, 0xd3, 0x46, 0xfb, 0x61, - 0x9e, 0x9b, 0xa2, 0xd2, 0xee, 0xdd, 0x56, 0xda, 0xc5, 0x7f, 0x2f, 0x4d, 0x24, 0xe5, 0xa6, 0x7d, - 0x3c, 0x91, 0xfc, 0x45, 0xe8, 0x78, 0xf1, 0xab, 0x32, 0x70, 0xca, 0x97, 0xfa, 0x54, 0xdb, 0xc2, - 0x83, 0x89, 0xb2, 0xde, 0x6c, 0x3e, 0xcc, 0xbb, 0xf1, 0x41, 0x5f, 0x10, 0xf3, 0x22, 0x5c, 0xae, - 0x48, 0x0a, 0x7c, 0x4f, 0x80, 0xeb, 0xb6, 0x69, 0x68, 0x32, 0x11, 0x79, 0x15, 0x86, 0xfc, 0x9f, - 0x25, 0x67, 0xc9, 0xdf, 0x82, 0xe3, 0x35, 0x43, 0x50, 0x48, 0x77, 0x22, 0xd1, 0x43, 0x22, 0x05, - 0x8a, 0xdf, 0x9a, 0x81, 0xf3, 0x77, 0x4d, 0xcb, 0xb0, 0xd7, 0xdd, 0x32, 0x75, 0x3c, 0x1e, 0x6e, - 0x86, 0xca, 0x21, 0xcf, 0x6a, 0x6d, 0xb4, 0xd3, 0xe5, 0x90, 0x67, 0x2e, 0x07, 0x69, 0x3e, 0x8e, - 0xbc, 0x00, 0x43, 0x35, 0xea, 0x98, 0x7a, 0x73, 0xae, 0xbd, 0xba, 0x48, 0x7d, 0xf7, 0x33, 0xf4, - 0xc3, 0x73, 0x11, 0x5e, 0xb7, 0x10, 0xa1, 0x45, 0xc8, 0xc8, 0x39, 0xc8, 0xdc, 0xae, 0xce, 0x89, - 0x8b, 0x23, 0xcc, 0x16, 0xd7, 0x6e, 0x59, 0x1a, 0x83, 0x91, 0xd7, 0xe1, 0x74, 0x59, 0x9b, 0x99, - 0x30, 0x5d, 0x1e, 0x9c, 0xc4, 0xb4, 0xad, 0xaa, 0x8d, 0xd1, 0x22, 0xb3, 0xe1, 0x17, 0x36, 0x9c, - 0x66, 0xdd, 0x90, 0x28, 0xea, 0x2d, 0x24, 0xd1, 0x92, 0x4b, 0x92, 0x2b, 0xd0, 0x7f, 0x8b, 0x6e, - 0xdc, 0x46, 0x3f, 0x89, 0x5e, 0x74, 0x14, 0xc4, 0x8b, 0xd0, 0x15, 0xba, 0x51, 0x6f, 0x33, 0xa0, - 0x16, 0xa0, 0xc9, 0x38, 0x8c, 0x4e, 0xde, 0xf7, 0xa8, 0x65, 0x50, 0x23, 0x28, 0xc2, 0x44, 0xdb, - 0xeb, 0x87, 0x72, 0xe3, 0xb8, 0x7a, 0x58, 0x36, 0x46, 0x8f, 0x3c, 0x44, 0x5a, 0xc6, 0x80, 0x47, - 0x5f, 0x78, 0x47, 0x11, 0xa4, 0x71, 0x94, 0x79, 0x28, 0xf4, 0xc5, 0xdf, 0xee, 0x0b, 0x7a, 0xc7, - 0xcf, 0xf8, 0x7d, 0xe4, 0x0f, 0x41, 0x0f, 0x3b, 0xd3, 0xf7, 0xeb, 0x70, 0x5a, 0x15, 0xa9, 0x13, - 0xe4, 0x54, 0x11, 0x9a, 0xb5, 0xce, 0x09, 0xea, 0x7e, 0xba, 0x6b, 0x71, 0x93, 0xaa, 0x25, 0x97, - 0x54, 0x93, 0x87, 0xf7, 0xed, 0x24, 0x79, 0xf8, 0x53, 0x90, 0x9b, 0xb0, 0x57, 0x75, 0xd3, 0x8f, - 0xf2, 0x85, 0x73, 0x6c, 0x50, 0x2f, 0x62, 0x34, 0x41, 0xc1, 0xf8, 0x8b, 0x8a, 0xb1, 0xcb, 0x06, - 0x42, 0xfe, 0x7e, 0x01, 0x66, 0x43, 0x6b, 0x32, 0x11, 0xb1, 0x61, 0x58, 0x54, 0x27, 0xee, 0x3d, - 0x01, 0xb7, 0xb6, 0x2f, 0xf8, 0x32, 0xea, 0xac, 0x56, 0x57, 0x23, 0xe5, 0xf8, 0x26, 0x97, 0xe7, - 0x34, 0x17, 0x1f, 0xc3, 0x6f, 0x40, 0xb5, 0x28, 0x7f, 0x35, 0x69, 0xf8, 0xe0, 0x0e, 0x92, 0x86, - 0x93, 0x49, 0x18, 0xc3, 0xdc, 0x15, 0xc1, 0x46, 0x97, 0xa9, 0xc4, 0x10, 0x9a, 0xfc, 0x78, 0x9d, - 0xc6, 0xd3, 0x5d, 0xb0, 0x8f, 0xab, 0x37, 0x04, 0x5a, 0x8b, 0x97, 0x60, 0xf3, 0xc8, 0xdc, 0x4c, - 0x09, 0xef, 0xe1, 0xfa, 0xf9, 0x3c, 0x62, 0x35, 0x75, 0x8d, 0xc1, 0xc8, 0x5d, 0x18, 0x62, 0xf3, - 0x5a, 0x30, 0x4c, 0x46, 0x50, 0x53, 0x8a, 0x8a, 0x14, 0x12, 0xa6, 0x3e, 0xbe, 0x7a, 0x35, 0x42, - 0x84, 0x16, 0x61, 0x74, 0xfe, 0x35, 0x20, 0x71, 0x39, 0xed, 0xea, 0x12, 0xef, 0x57, 0xb2, 0xe1, - 0x4e, 0xff, 0xa8, 0xbb, 0x61, 0x1d, 0xc4, 0xfa, 0x17, 0xc9, 0x24, 0xdb, 0xfb, 0x4e, 0x66, 0x92, - 0xcd, 0x1d, 0x6c, 0x26, 0xd9, 0xe8, 0x8c, 0xd6, 0xb7, 0x8f, 0x19, 0xed, 0x23, 0x89, 0x29, 0x78, - 0xf9, 0xfd, 0x88, 0x04, 0x97, 0x57, 0x73, 0x99, 0xbe, 0xf8, 0x7d, 0x29, 0x18, 0x8b, 0xa5, 0xb0, - 0x21, 0xcf, 0x01, 0x70, 0x88, 0x14, 0x66, 0x1a, 0x7d, 0x0a, 0xc3, 0xb4, 0x36, 0xc2, 0x3e, 0x0b, - 0xc9, 0xc8, 0x35, 0xe8, 0xe7, 0xbf, 0x44, 0x18, 0xc0, 0x78, 0x91, 0x76, 0xdb, 0x34, 0xb4, 0x80, - 0x28, 0xac, 0x05, 0x2f, 0xd4, 0x33, 0x89, 0x45, 0xbc, 0x8d, 0x56, 0x50, 0x0b, 0x23, 0x2b, 0x7e, - 0x7d, 0x1a, 0x86, 0x82, 0x06, 0x97, 0x8c, 0xc3, 0xd2, 0xfe, 0x9c, 0xc8, 0x06, 0x94, 0xd9, 0x2e, - 0x1b, 0x90, 0xb2, 0xa4, 0x88, 0xf4, 0x3f, 0x07, 0xf7, 0x70, 0xf1, 0x33, 0x69, 0x38, 0x11, 0xd4, - 0x7a, 0x88, 0x77, 0xb7, 0x0f, 0x90, 0x48, 0xbe, 0x21, 0x05, 0xf9, 0x71, 0xb3, 0xd9, 0x34, 0xad, - 0xa5, 0x8a, 0x75, 0xcf, 0x76, 0x56, 0x71, 0xce, 0x3f, 0xbc, 0x3b, 0x84, 0xe2, 0xd7, 0xa4, 0x60, - 0x4c, 0x34, 0xa8, 0xac, 0x3b, 0xc6, 0xe1, 0x1d, 0xd0, 0xaa, 0x2d, 0x39, 0x3c, 0x7d, 0x29, 0xfe, - 0x70, 0x1a, 0x60, 0xc6, 0x6e, 0xac, 0x1c, 0xf1, 0x77, 0x8f, 0x2f, 0x43, 0x8e, 0xbf, 0x1c, 0x11, - 0x1a, 0x3b, 0x26, 0xde, 0xf7, 0xb1, 0x4f, 0xe3, 0x88, 0xf1, 0x51, 0xb1, 0x32, 0xe4, 0xf8, 0xe3, - 0x93, 0x7c, 0x4a, 0x13, 0x45, 0x58, 0xa5, 0x8c, 0x4e, 0x2c, 0x5d, 0x41, 0xa5, 0x0c, 0x16, 0xad, - 0x74, 0x6b, 0xb3, 0x90, 0x6d, 0xda, 0x8d, 0x15, 0x0d, 0xe9, 0x8b, 0xff, 0x39, 0xc5, 0x65, 0x77, - 0xc4, 0x5f, 0x6f, 0xfb, 0x9f, 0x9f, 0xdd, 0xe5, 0xe7, 0xff, 0xf5, 0x14, 0x9c, 0xd2, 0x68, 0xc3, - 0x5e, 0xa3, 0xce, 0x46, 0xd9, 0x36, 0xe8, 0x0d, 0x6a, 0x51, 0xe7, 0xb0, 0x46, 0xd4, 0x8f, 0x61, - 0x86, 0x83, 0xb0, 0x31, 0xb7, 0x5d, 0x6a, 0x1c, 0x9d, 0xd4, 0x76, 0xc5, 0xff, 0xd2, 0x07, 0xf9, - 0x44, 0xc3, 0xfe, 0xc8, 0x1a, 0x96, 0x1d, 0x77, 0x6b, 0xd9, 0x83, 0xda, 0xad, 0xf5, 0xee, 0x6e, - 0xb7, 0x96, 0xdb, 0xed, 0x6e, 0xad, 0x6f, 0x27, 0xbb, 0xb5, 0x55, 0x75, 0xb7, 0xd6, 0x8f, 0xbb, - 0xb5, 0xe7, 0xba, 0xee, 0xd6, 0x26, 0x2d, 0x63, 0x8f, 0x7b, 0xb5, 0x88, 0xa9, 0x3d, 0xf0, 0x4e, - 0x9a, 0xda, 0x70, 0xb0, 0xa6, 0xf6, 0x5e, 0x36, 0x99, 0x97, 0xd9, 0xa4, 0xd8, 0xb0, 0x1d, 0x83, - 0x1a, 0x62, 0x6f, 0x89, 0xd7, 0x4e, 0x8e, 0x80, 0x69, 0x01, 0x96, 0x3c, 0xaf, 0x98, 0xdf, 0xc3, - 0x68, 0x7e, 0x23, 0x7b, 0xd9, 0xfc, 0x8e, 0x1a, 0xdd, 0x8a, 0xa9, 0x33, 0xb2, 0x77, 0x53, 0xe7, - 0x00, 0xf6, 0x94, 0xff, 0x31, 0x0d, 0x63, 0xd2, 0x66, 0xf6, 0x00, 0x96, 0xe3, 0x12, 0x9c, 0x90, - 0x18, 0xa2, 0x6d, 0x9f, 0x0e, 0xfd, 0x5d, 0xd9, 0xfe, 0x58, 0x75, 0x97, 0x55, 0xe9, 0x59, 0xf5, - 0x7e, 0x3e, 0x5b, 0x31, 0x0b, 0x04, 0xd5, 0xfb, 0x70, 0xde, 0x25, 0xa6, 0xf8, 0xa5, 0x05, 0xf4, - 0x92, 0xcb, 0x57, 0x76, 0x0f, 0x29, 0x6a, 0x57, 0xe0, 0x94, 0xd4, 0x98, 0x52, 0xdb, 0x5b, 0xb6, - 0x1d, 0xd6, 0x8a, 0x5e, 0x11, 0x55, 0xdc, 0xe7, 0x95, 0x40, 0x23, 0x32, 0x6f, 0x86, 0x98, 0xba, - 0xee, 0xa3, 0xb4, 0x44, 0xa6, 0x6c, 0xf3, 0x95, 0x88, 0x20, 0x97, 0x20, 0x8b, 0x72, 0x93, 0xd2, - 0x6f, 0x2a, 0x22, 0x43, 0x3c, 0x79, 0x3a, 0x98, 0x64, 0xd2, 0xe1, 0xab, 0x15, 0x3e, 0xb9, 0xc8, - 0x6f, 0x7e, 0xc5, 0x34, 0xf3, 0x1a, 0x0c, 0x89, 0xe3, 0xd7, 0x5b, 0x74, 0x23, 0xc8, 0xd0, 0x82, - 0xe9, 0xa2, 0xc4, 0xf9, 0x2c, 0x1e, 0x2d, 0x46, 0xbc, 0xe9, 0x22, 0x25, 0x8a, 0xdf, 0x9b, 0x82, - 0x4b, 0x1a, 0xb5, 0xe8, 0xba, 0xbe, 0xd8, 0xa4, 0x52, 0xcb, 0xc5, 0x0a, 0xcc, 0x74, 0xd6, 0x74, - 0x57, 0x75, 0xaf, 0xb1, 0xbc, 0x2f, 0x0d, 0x9a, 0x82, 0x21, 0x79, 0x9d, 0xd8, 0xc5, 0x1a, 0x12, - 0x29, 0x57, 0xfc, 0xbd, 0x2c, 0xf4, 0x8d, 0xdb, 0xde, 0x4d, 0x7b, 0x9f, 0x19, 0xa5, 0xc3, 0xa5, - 0x35, 0xbd, 0x8b, 0x63, 0xc3, 0x67, 0xb0, 0x72, 0x29, 0xc5, 0x12, 0x9e, 0xe2, 0x2e, 0xda, 0xb1, - 0x74, 0x62, 0x3e, 0xd9, 0x2e, 0x73, 0x49, 0xbf, 0x08, 0x03, 0x18, 0xcd, 0x4a, 0xba, 0x76, 0xc1, - 0x77, 0x1c, 0x1e, 0x03, 0xaa, 0x75, 0x84, 0xa4, 0xe4, 0x63, 0x91, 0x28, 0xe0, 0xb9, 0xfd, 0xe7, - 0x9e, 0x96, 0x03, 0x82, 0x3f, 0xc7, 0x6f, 0xec, 0xb1, 0x4d, 0x52, 0xa6, 0x3d, 0x3c, 0x90, 0x53, - 0x9a, 0x14, 0x10, 0x1e, 0x60, 0x5e, 0xe8, 0x32, 0x0c, 0x8f, 0xdb, 0x9e, 0xf4, 0x66, 0x60, 0x20, - 0x7c, 0xd6, 0xce, 0x24, 0x9f, 0xfc, 0x60, 0x20, 0x5a, 0x86, 0x5c, 0x81, 0x5e, 0x9e, 0x92, 0x17, - 0xc2, 0x23, 0x09, 0x4c, 0xc4, 0x2b, 0x3f, 0xa6, 0x44, 0x8a, 0xe2, 0x1f, 0x67, 0x61, 0xc8, 0x2f, - 0x79, 0x48, 0x6a, 0xf6, 0x7e, 0xc8, 0x4d, 0xdb, 0x52, 0xc6, 0x25, 0x7c, 0x92, 0xb0, 0x6c, 0xbb, - 0xca, 0x5b, 0x0b, 0x41, 0xc4, 0x3a, 0x68, 0xce, 0x36, 0xe4, 0x07, 0x35, 0xd8, 0x41, 0x96, 0x6d, - 0xc4, 0x22, 0x27, 0x04, 0x84, 0x6c, 0x3e, 0xc2, 0xb7, 0x48, 0xd2, 0xe5, 0x9e, 0xf2, 0xfe, 0x08, - 0xf1, 0x92, 0x02, 0xe7, 0x76, 0xab, 0xc0, 0x7d, 0x7b, 0x55, 0xe0, 0xfe, 0x83, 0x55, 0xe0, 0x37, - 0x61, 0x08, 0x6b, 0xf2, 0xd3, 0x1a, 0x6f, 0x6f, 0xeb, 0x9c, 0x13, 0xe6, 0xc8, 0x30, 0x6f, 0xb7, - 0x48, 0x6e, 0x8c, 0x56, 0x48, 0x84, 0x95, 0xa2, 0xe6, 0xb0, 0x8f, 0x13, 0x8e, 0xdf, 0x4c, 0x41, - 0x9f, 0x48, 0x3c, 0xb6, 0x2f, 0x8d, 0x7b, 0x0e, 0x06, 0x05, 0x1b, 0x69, 0x99, 0xc6, 0x4b, 0x38, - 0x3f, 0xed, 0x1a, 0x72, 0xd2, 0x64, 0x2a, 0xf2, 0x4a, 0x50, 0x08, 0x9f, 0x1b, 0x66, 0xc2, 0xac, - 0x70, 0x61, 0xae, 0x36, 0x23, 0xfa, 0x8a, 0x38, 0x24, 0x27, 0x17, 0x20, 0x3b, 0xc1, 0x9a, 0x2a, - 0x05, 0x2f, 0x67, 0x4d, 0xd1, 0x10, 0x5a, 0xfc, 0x74, 0x16, 0x46, 0x94, 0xb3, 0xc8, 0xa7, 0x60, - 0x40, 0x9c, 0x05, 0x9a, 0x7e, 0x16, 0x25, 0xbc, 0x85, 0x0b, 0x80, 0x5a, 0x3f, 0xff, 0xb3, 0x62, - 0x90, 0x8f, 0x40, 0x9f, 0xed, 0xa2, 0x75, 0x81, 0xdf, 0x32, 0x12, 0x0e, 0xa1, 0xf9, 0x1a, 0x6b, - 0x3b, 0x1f, 0x1c, 0x82, 0x44, 0xd6, 0x48, 0xdb, 0xc5, 0x4f, 0x7b, 0x1e, 0x06, 0x74, 0xd7, 0xa5, - 0x5e, 0xdd, 0xd3, 0x97, 0xe4, 0xc4, 0x4a, 0x01, 0x50, 0x1e, 0x1d, 0x08, 0x5c, 0xd0, 0x97, 0xc8, - 0x6b, 0x30, 0xdc, 0x70, 0x28, 0xda, 0x1f, 0x7a, 0x93, 0xb5, 0x52, 0xda, 0x69, 0x44, 0x10, 0xf2, - 0xba, 0x1a, 0x22, 0x2a, 0x06, 0xb9, 0x03, 0xc3, 0xe2, 0x73, 0xf8, 0x5b, 0x20, 0x1c, 0x68, 0x23, - 0xe1, 0x8a, 0xc7, 0x45, 0xc2, 0x5f, 0x03, 0x89, 0x27, 0x61, 0x32, 0xb9, 0xcc, 0xd7, 0x90, 0x48, - 0xc9, 0x3c, 0x90, 0x75, 0xba, 0x88, 0x76, 0x08, 0xab, 0x8b, 0xe7, 0x05, 0x11, 0x79, 0xc2, 0xf1, - 0x1d, 0x55, 0x1c, 0x2b, 0x3f, 0x2f, 0x5b, 0xa7, 0x8b, 0xa5, 0x08, 0x92, 0xdc, 0x85, 0xd3, 0xf1, - 0x22, 0xec, 0x93, 0xf9, 0x95, 0xd4, 0x13, 0x5b, 0x9b, 0x85, 0x42, 0x22, 0x81, 0xc4, 0xf6, 0x64, - 0x8c, 0x6d, 0xc5, 0xb8, 0x99, 0xed, 0xef, 0x1b, 0xed, 0xd7, 0x46, 0x58, 0x59, 0xdf, 0xaa, 0x37, - 0x8d, 0xe2, 0x2f, 0xa4, 0x98, 0xf5, 0xce, 0x3e, 0x68, 0x92, 0x09, 0x82, 0xe9, 0xfa, 0xea, 0x2e, - 0x75, 0x7d, 0x35, 0x4c, 0x69, 0x9e, 0x73, 0xbb, 0xcc, 0xae, 0x9a, 0xc0, 0x92, 0xab, 0x90, 0x33, - 0xe4, 0x83, 0xcc, 0x33, 0xd1, 0x4e, 0xf0, 0xeb, 0xd1, 0x04, 0x15, 0xb9, 0x0c, 0x59, 0xb6, 0xba, - 0xa9, 0xa7, 0x18, 0xb2, 0x21, 0xa2, 0x21, 0x45, 0xf1, 0x2f, 0xa7, 0x61, 0x48, 0xfa, 0x9a, 0xeb, - 0xfb, 0xfa, 0x9c, 0x0f, 0xed, 0xac, 0x99, 0xbe, 0x23, 0x1c, 0x6e, 0x6f, 0xfd, 0x26, 0x3f, 0x1f, - 0x88, 0x62, 0x47, 0xd7, 0xa0, 0x42, 0x30, 0x2f, 0x8a, 0x0f, 0xcd, 0xed, 0x7c, 0x47, 0xcf, 0xe8, - 0x6f, 0x66, 0xfb, 0xd3, 0xa3, 0x99, 0x9b, 0xd9, 0xfe, 0xec, 0x68, 0x2f, 0x86, 0x20, 0xc4, 0x9c, - 0x01, 0xfc, 0xb8, 0xc4, 0xba, 0x67, 0x2e, 0x1d, 0xf1, 0xd7, 0x68, 0x07, 0x1b, 0x9e, 0x51, 0x91, - 0xcd, 0x11, 0x7f, 0x9a, 0xf6, 0x8e, 0xca, 0xe6, 0x38, 0x05, 0xba, 0x90, 0xcd, 0x6f, 0xa5, 0x20, - 0x9f, 0x28, 0x9b, 0xd2, 0x21, 0xf9, 0x46, 0x1d, 0x5c, 0x22, 0xf4, 0x2f, 0xa7, 0x61, 0xac, 0x62, - 0x79, 0x74, 0x89, 0x6f, 0x2e, 0x8f, 0xf8, 0x54, 0x71, 0x0b, 0x06, 0xa5, 0x8f, 0x11, 0x7d, 0xfe, - 0x48, 0x70, 0xb0, 0x11, 0xa2, 0x3a, 0x70, 0x92, 0x4b, 0x1f, 0xdc, 0xdb, 0x3e, 0x55, 0xc8, 0x47, - 0x7c, 0xce, 0x39, 0x1a, 0x42, 0x3e, 0xe2, 0x93, 0xd7, 0x03, 0x2a, 0xe4, 0xcf, 0x64, 0xe0, 0x64, - 0x42, 0xe5, 0xe4, 0x12, 0xfa, 0x24, 0x62, 0xc4, 0xc1, 0x54, 0xf8, 0x8a, 0xc0, 0x6d, 0x2f, 0x62, - 0xb0, 0x41, 0xcd, 0x47, 0x92, 0x05, 0x0c, 0xd7, 0x31, 0x5f, 0x99, 0x28, 0x0b, 0xa9, 0x16, 0xa5, - 0xc0, 0x23, 0x0c, 0x9c, 0xf4, 0x65, 0x41, 0x48, 0x0f, 0xdb, 0x34, 0x1a, 0x4a, 0x48, 0x0f, 0x56, - 0x86, 0x7c, 0x1c, 0x06, 0x4a, 0x6f, 0xb7, 0x1d, 0x8a, 0x7c, 0xb9, 0xc4, 0x9f, 0x0c, 0xf8, 0xfa, - 0x88, 0x24, 0xce, 0x3c, 0x3a, 0x09, 0xa3, 0x50, 0x79, 0x87, 0x0c, 0xc9, 0x3c, 0xe4, 0x6e, 0x98, - 0xde, 0x74, 0x7b, 0x51, 0xf4, 0x42, 0x10, 0x95, 0x90, 0x43, 0x93, 0xf8, 0xe2, 0xae, 0x9c, 0x47, - 0x57, 0x97, 0xf7, 0x40, 0xbc, 0x00, 0x99, 0x81, 0xde, 0xd2, 0xdd, 0x9a, 0x56, 0x12, 0x3d, 0xf1, - 0x98, 0x1c, 0x7b, 0xa5, 0xd4, 0x91, 0x1d, 0x46, 0x92, 0xd0, 0xe5, 0x03, 0x12, 0xa4, 0x2f, 0x7e, - 0x7d, 0x0a, 0xce, 0x77, 0x16, 0x1e, 0x79, 0x06, 0xfa, 0x34, 0xbb, 0x49, 0x4b, 0xda, 0x9c, 0xe8, - 0x19, 0x94, 0xa6, 0x9f, 0xfc, 0x5a, 0x96, 0xa6, 0x20, 0x23, 0x1f, 0x86, 0xc1, 0x8a, 0xeb, 0xb6, - 0xa9, 0x53, 0x7b, 0xee, 0xb6, 0x56, 0x11, 0x5b, 0x56, 0xdc, 0x12, 0x99, 0x08, 0xae, 0xbb, 0xcf, - 0x29, 0x21, 0x0f, 0x65, 0xfa, 0xe2, 0xd7, 0xa6, 0xe0, 0x42, 0x37, 0xa1, 0x93, 0xe7, 0xa0, 0x7f, - 0x81, 0x5a, 0xba, 0xe5, 0x55, 0x26, 0x44, 0x93, 0x70, 0x07, 0xe8, 0x21, 0x2c, 0xba, 0x91, 0x09, - 0x08, 0x59, 0x21, 0x7e, 0x7e, 0x1c, 0xb8, 0xbe, 0xf0, 0xb3, 0x6e, 0x84, 0x29, 0x85, 0x7c, 0xc2, - 0xe2, 0xc7, 0xe0, 0x5c, 0xc7, 0x3e, 0x22, 0x1f, 0x81, 0xa1, 0x79, 0x67, 0x49, 0xb7, 0xcc, 0xb7, - 0xf9, 0x10, 0x4b, 0x85, 0xbb, 0x6c, 0x5b, 0x82, 0xcb, 0x3b, 0x3f, 0x99, 0xbe, 0xb8, 0x08, 0xf9, - 0x4e, 0x1d, 0x46, 0xa6, 0x60, 0x04, 0x83, 0xe2, 0x97, 0xac, 0xc6, 0xb2, 0xed, 0x84, 0xb2, 0xc7, - 0xc7, 0x9a, 0x1e, 0xc3, 0xd4, 0x75, 0x44, 0x29, 0x7d, 0xa0, 0x94, 0x2a, 0xfe, 0x72, 0x1a, 0x86, - 0xaa, 0xcd, 0xf6, 0x92, 0x29, 0x2d, 0xcc, 0x7b, 0xde, 0xcf, 0xf8, 0xbb, 0x8b, 0xf4, 0xee, 0x76, - 0x17, 0x6c, 0x3a, 0x73, 0xf6, 0x38, 0x9d, 0xf9, 0xe5, 0xc8, 0x2b, 0x90, 0x6b, 0xe1, 0x77, 0xa8, - 0x57, 0x06, 0xfc, 0xeb, 0x3a, 0x5d, 0x19, 0xf0, 0x32, 0x6c, 0xfe, 0x6a, 0xec, 0x63, 0xfe, 0x0a, - 0xcb, 0x4a, 0x02, 0x0d, 0x17, 0xe1, 0x63, 0x81, 0x1e, 0x88, 0x40, 0xc3, 0x05, 0xf7, 0x58, 0xa0, - 0xfb, 0x10, 0xe8, 0x3f, 0x4a, 0xc3, 0x48, 0xb4, 0x4a, 0xf2, 0x0c, 0x0c, 0xf2, 0x6a, 0xf8, 0xb9, - 0x5b, 0x4a, 0x7a, 0xc8, 0x11, 0x82, 0x35, 0xe0, 0x3f, 0xc4, 0x01, 0xe2, 0x89, 0x65, 0xdd, 0xad, - 0x87, 0x27, 0x60, 0xdc, 0x65, 0xa1, 0x9f, 0x9f, 0xb4, 0x2b, 0x28, 0x6d, 0x64, 0x59, 0x77, 0xcb, - 0xe1, 0x6f, 0x32, 0x09, 0xc4, 0xa1, 0x6d, 0x97, 0x46, 0x19, 0x64, 0x91, 0x01, 0x5f, 0x3d, 0x62, - 0x58, 0x6d, 0x8c, 0xc3, 0x64, 0x36, 0x9f, 0x08, 0x9a, 0x8d, 0xca, 0xd0, 0xdb, 0xfd, 0x14, 0xf9, - 0x89, 0xad, 0xcd, 0xc2, 0x69, 0x89, 0x3e, 0xf9, 0x18, 0x99, 0x13, 0x4c, 0xe8, 0x9e, 0xce, 0x0f, - 0x3d, 0xfc, 0x0e, 0x28, 0xfe, 0x9b, 0xcf, 0xa7, 0xa0, 0x77, 0xde, 0xa2, 0xf3, 0xf7, 0xc8, 0xb3, - 0x30, 0xc0, 0x34, 0x66, 0xc6, 0x66, 0x9d, 0x99, 0x12, 0x3e, 0x43, 0x92, 0x2a, 0x21, 0x62, 0xba, - 0x47, 0x0b, 0xa9, 0xc8, 0xf3, 0x00, 0xe1, 0xbb, 0x5e, 0xa1, 0x7e, 0x44, 0x2e, 0xc3, 0x31, 0xd3, - 0x3d, 0x9a, 0x44, 0xe7, 0x97, 0x12, 0xaf, 0x22, 0x33, 0xf1, 0x52, 0x1c, 0xe3, 0x97, 0x12, 0x03, - 0x64, 0x06, 0x08, 0xfb, 0x55, 0xd5, 0x5d, 0x77, 0xdd, 0x76, 0x8c, 0xf2, 0xb2, 0x6e, 0x2d, 0x51, - 0x75, 0x7b, 0x1a, 0xa7, 0x98, 0xee, 0xd1, 0x12, 0xca, 0x91, 0x0f, 0xc1, 0x90, 0xec, 0x27, 0xae, - 0x3a, 0x3a, 0xc9, 0xb8, 0xe9, 0x1e, 0x2d, 0x42, 0x4b, 0x3e, 0x00, 0x83, 0xe2, 0xf7, 0x4d, 0x5b, - 0x78, 0x51, 0x48, 0xe1, 0xe3, 0x24, 0xd4, 0x74, 0x8f, 0x26, 0x53, 0x4a, 0x95, 0x56, 0x1d, 0xd3, - 0xf2, 0x84, 0x7b, 0xad, 0x5a, 0x29, 0xe2, 0xa4, 0x4a, 0xf1, 0x37, 0xf9, 0x30, 0x0c, 0x07, 0x71, - 0xf9, 0xf0, 0x0d, 0x0b, 0xbf, 0x5d, 0x38, 0xad, 0x14, 0xe6, 0xc8, 0xe9, 0x1e, 0x2d, 0x4a, 0x4d, - 0x2e, 0x43, 0x4e, 0xa3, 0xae, 0xf9, 0xb6, 0xef, 0x22, 0x31, 0x22, 0x0d, 0x74, 0xf3, 0x6d, 0x26, - 0x25, 0x81, 0x67, 0xbd, 0x13, 0xfa, 0x64, 0x88, 0xbb, 0x00, 0xa2, 0xd4, 0x32, 0x69, 0x19, 0xac, - 0x77, 0x24, 0x87, 0x9c, 0xd7, 0xc2, 0x68, 0x85, 0x22, 0x9d, 0xf8, 0xa0, 0x1a, 0x16, 0x46, 0xc6, - 0x4e, 0xf7, 0x68, 0x0a, 0xbd, 0x24, 0xd5, 0x09, 0xd3, 0x5d, 0x11, 0x91, 0xac, 0x55, 0xa9, 0x32, - 0x94, 0x24, 0x55, 0xf6, 0x53, 0xaa, 0x7a, 0x8e, 0x7a, 0xeb, 0xb6, 0xb3, 0x22, 0xe2, 0x56, 0xab, - 0x55, 0x0b, 0xac, 0x54, 0xb5, 0x80, 0xc8, 0x55, 0x87, 0x7e, 0xf5, 0xb1, 0xaa, 0x75, 0x4f, 0x97, - 0xab, 0xe6, 0x47, 0x9d, 0x7e, 0x27, 0xcd, 0x50, 0x7d, 0x8d, 0xe6, 0x4f, 0x24, 0x76, 0x28, 0xe2, - 0xa4, 0x0e, 0xc5, 0xdf, 0xac, 0xd2, 0xaa, 0xed, 0x78, 0x53, 0xb6, 0xb3, 0xae, 0x3b, 0x46, 0x7e, - 0x34, 0x5a, 0xa9, 0x84, 0x62, 0x95, 0x4a, 0x3f, 0x59, 0x07, 0xbd, 0xf1, 0xec, 0xb3, 0x7e, 0xb9, - 0xb1, 0x68, 0x07, 0x85, 0x18, 0xd6, 0x41, 0xe1, 0x2f, 0x52, 0xc0, 0x64, 0xf9, 0x79, 0x82, 0xe4, - 0x83, 0x41, 0x0b, 0xcb, 0xd5, 0xe9, 0x1e, 0x0d, 0xd3, 0xe8, 0x17, 0x21, 0x3b, 0x79, 0x9f, 0x36, - 0xf2, 0x27, 0x91, 0x62, 0xc8, 0xa7, 0x60, 0xb0, 0xe9, 0x1e, 0x0d, 0x71, 0x6c, 0x8a, 0x08, 0x52, - 0xd5, 0xe6, 0x4f, 0x45, 0xa7, 0x88, 0x00, 0xc1, 0xa6, 0x88, 0x30, 0xa1, 0xed, 0x54, 0x3c, 0x21, - 0x6b, 0xfe, 0x74, 0x74, 0xad, 0x51, 0xf1, 0xd3, 0x3d, 0x5a, 0x3c, 0x89, 0xeb, 0x07, 0x22, 0x39, - 0x4a, 0xf3, 0x67, 0x94, 0x98, 0x8d, 0x21, 0x8a, 0x89, 0x4b, 0xce, 0x66, 0x3a, 0x0f, 0x27, 0x79, - 0x8a, 0x73, 0x11, 0x75, 0x51, 0x4c, 0x56, 0x67, 0xa3, 0x3b, 0xc3, 0x04, 0x92, 0xe9, 0x1e, 0x2d, - 0xa9, 0x24, 0x29, 0xc7, 0x72, 0x7d, 0xe6, 0xf3, 0x51, 0x7f, 0x30, 0x05, 0x3d, 0xdd, 0xa3, 0xc5, - 0xb2, 0x83, 0x3e, 0x2f, 0x27, 0xd9, 0xcc, 0x9f, 0x8b, 0x76, 0x62, 0x88, 0x61, 0x9d, 0x28, 0x25, - 0xe3, 0x7c, 0x5e, 0x4e, 0xbc, 0x98, 0x3f, 0x1f, 0x2f, 0x15, 0xce, 0x9c, 0x52, 0x82, 0x46, 0x2d, - 0x39, 0x97, 0x5c, 0xfe, 0x91, 0xa8, 0xe7, 0x48, 0x12, 0xcd, 0x74, 0x8f, 0x96, 0x9c, 0x87, 0x4e, - 0x4b, 0x4e, 0xc2, 0x96, 0xbf, 0xd0, 0x8d, 0x67, 0xd0, 0xba, 0xe4, 0x04, 0x6e, 0x7a, 0x97, 0x94, - 0x58, 0xf9, 0x8b, 0xd1, 0x3d, 0x64, 0x47, 0xc2, 0xe9, 0x1e, 0xad, 0x4b, 0x62, 0xad, 0xdb, 0x1d, - 0xf2, 0x53, 0xe5, 0x1f, 0x45, 0xf6, 0x17, 0xa5, 0x2d, 0x6a, 0x9c, 0x68, 0xba, 0x47, 0xeb, 0x90, - 0xdd, 0xea, 0x76, 0x87, 0xf4, 0x45, 0xf9, 0x42, 0x57, 0xb6, 0x81, 0x3c, 0x3a, 0x24, 0x3f, 0x9a, - 0x4f, 0xcc, 0xfc, 0x93, 0x7f, 0x2c, 0xaa, 0xba, 0x09, 0x24, 0x4c, 0x75, 0x93, 0x72, 0x06, 0xcd, - 0x27, 0xa6, 0xaa, 0xc9, 0x3f, 0xde, 0x85, 0x61, 0xd0, 0xc6, 0xc4, 0x24, 0x37, 0xf3, 0x89, 0xb9, - 0x62, 0xf2, 0xc5, 0x28, 0xc3, 0x04, 0x12, 0xc6, 0x30, 0x29, 0xcb, 0xcc, 0x7c, 0x62, 0x4a, 0x91, - 0xfc, 0x13, 0x5d, 0x18, 0x86, 0x2d, 0x4c, 0x4a, 0x46, 0xf2, 0x81, 0x48, 0x4e, 0x8f, 0xfc, 0x93, - 0xd1, 0x79, 0x43, 0x42, 0xb1, 0x79, 0x43, 0xce, 0xfe, 0x51, 0x8e, 0x05, 0x1c, 0xcf, 0xbf, 0x27, - 0x3a, 0xcc, 0x15, 0x34, 0x1b, 0xe6, 0x6a, 0x88, 0xf2, 0x72, 0x2c, 0x28, 0x72, 0xfe, 0x52, 0x27, - 0x26, 0x88, 0x8e, 0x32, 0xe1, 0x61, 0x94, 0x2b, 0x09, 0x51, 0x79, 0xf3, 0xef, 0x8d, 0xbe, 0x65, - 0x88, 0x11, 0x4c, 0xf7, 0x68, 0x09, 0xb1, 0x7c, 0xb5, 0xe4, 0x10, 0x74, 0xf9, 0xcb, 0xd1, 0x61, - 0x9b, 0x44, 0xc3, 0x86, 0x6d, 0x62, 0xf8, 0xba, 0x99, 0xa4, 0xa7, 0x5f, 0xf9, 0x2b, 0x51, 0xc3, - 0x2c, 0x4e, 0xc1, 0x0c, 0xb3, 0x84, 0x27, 0x63, 0x5a, 0x72, 0x60, 0xb3, 0xfc, 0x53, 0x5d, 0x5b, - 0x88, 0x34, 0x09, 0x2d, 0xe4, 0x71, 0xbe, 0x42, 0xdb, 0xe9, 0x76, 0xab, 0x69, 0xeb, 0x46, 0xfe, - 0x7d, 0x89, 0xb6, 0x13, 0x47, 0x4a, 0xb6, 0x13, 0x07, 0xb0, 0x55, 0x5e, 0x7e, 0xd7, 0x93, 0x7f, - 0x3a, 0xba, 0xca, 0xcb, 0x38, 0xb6, 0xca, 0x47, 0xde, 0x00, 0x95, 0x63, 0x6f, 0x60, 0xf2, 0xef, - 0x8f, 0x2a, 0x80, 0x82, 0x66, 0x0a, 0xa0, 0xbe, 0x9a, 0xf9, 0x64, 0xe7, 0x57, 0x23, 0xf9, 0xab, - 0xd1, 0xb3, 0xb0, 0x4e, 0x74, 0xd3, 0x3d, 0x5a, 0xe7, 0x97, 0x27, 0x95, 0x84, 0x47, 0x20, 0xf9, - 0x6b, 0x51, 0x05, 0x8b, 0x11, 0x30, 0x05, 0x8b, 0x3f, 0x1d, 0xa9, 0x24, 0xbc, 0xe2, 0xc8, 0x3f, - 0xd3, 0x91, 0x55, 0xf0, 0xcd, 0x09, 0x6f, 0x3f, 0x9e, 0x97, 0x9f, 0x61, 0xe4, 0x9f, 0x8d, 0x2e, - 0x76, 0x21, 0x86, 0x2d, 0x76, 0xd2, 0x73, 0x8d, 0xe7, 0xe5, 0x07, 0x08, 0xf9, 0xeb, 0xf1, 0x52, - 0xe1, 0x12, 0x29, 0x3d, 0x54, 0xd0, 0x92, 0xfd, 0xf6, 0xf3, 0xcf, 0x45, 0xb5, 0x2e, 0x89, 0x86, - 0x69, 0x5d, 0xa2, 0xcf, 0xff, 0x54, 0xdc, 0xfd, 0x3e, 0xff, 0xbc, 0xba, 0xcb, 0x8e, 0xe2, 0x99, - 0xe5, 0x13, 0x73, 0xd9, 0x7f, 0x4d, 0x8d, 0x8f, 0x9a, 0x7f, 0x41, 0xb9, 0x57, 0x8f, 0x60, 0x99, - 0x7d, 0xab, 0xc4, 0x53, 0x7d, 0x4d, 0x0d, 0x29, 0x9a, 0x7f, 0x31, 0x99, 0x43, 0xa0, 0x2b, 0x6a, - 0x08, 0xd2, 0xd7, 0xd4, 0x28, 0x9c, 0xf9, 0x0f, 0x24, 0x73, 0x08, 0xa4, 0xab, 0x46, 0xed, 0x7c, - 0x56, 0xca, 0x3d, 0x92, 0xff, 0x60, 0xd4, 0x74, 0x0c, 0x10, 0xcc, 0x74, 0x0c, 0x33, 0x94, 0x3c, - 0x2b, 0xe5, 0xec, 0xc8, 0xbf, 0x14, 0x2b, 0x12, 0x34, 0x56, 0xca, 0xec, 0xf1, 0xac, 0x94, 0xeb, - 0x22, 0xff, 0xa1, 0x58, 0x91, 0xa0, 0x75, 0x52, 0x46, 0x0c, 0xa3, 0xdb, 0xb3, 0xf4, 0xfc, 0xcb, - 0x89, 0x6f, 0x6c, 0x13, 0x28, 0xa7, 0x7b, 0xb4, 0x6e, 0xcf, 0xdb, 0x3f, 0xd9, 0xf9, 0x31, 0x43, - 0xfe, 0x95, 0xe8, 0x10, 0xee, 0x44, 0xc7, 0x86, 0x70, 0xc7, 0x07, 0x11, 0x1f, 0x56, 0x02, 0x08, - 0xe5, 0x3f, 0x1c, 0x9d, 0xe2, 0x22, 0x48, 0x36, 0xc5, 0xa9, 0xe1, 0x86, 0x22, 0x91, 0x71, 0xf2, - 0x1f, 0x89, 0x4e, 0x71, 0x32, 0x8e, 0x4d, 0x71, 0x91, 0x28, 0x3a, 0xe5, 0x58, 0xc0, 0x96, 0xfc, - 0xab, 0xd1, 0x29, 0x4e, 0x41, 0xb3, 0x29, 0x4e, 0x0d, 0xf1, 0xf2, 0x61, 0x25, 0x6e, 0x49, 0xfe, - 0xb5, 0xe4, 0xf6, 0x23, 0x52, 0x6e, 0x3f, 0x8f, 0x72, 0xa2, 0x25, 0x07, 0xe0, 0xc8, 0x97, 0xa2, - 0xe3, 0x37, 0x89, 0x86, 0x8d, 0xdf, 0xc4, 0xe0, 0x1d, 0xea, 0xc6, 0x41, 0x68, 0xd5, 0x78, 0x97, - 0x8d, 0x43, 0x68, 0x8a, 0x24, 0x80, 0x23, 0x7b, 0x64, 0xbe, 0x11, 0x2a, 0x77, 0xd8, 0x23, 0xfb, - 0xdb, 0x20, 0x85, 0x9e, 0xcd, 0xae, 0x31, 0x8f, 0xf8, 0xfc, 0x44, 0x74, 0x76, 0x8d, 0x11, 0xb0, - 0xd9, 0x35, 0xee, 0x47, 0x3f, 0x05, 0xa3, 0x42, 0x8b, 0xf8, 0x93, 0x01, 0xd3, 0x5a, 0xca, 0x4f, - 0x2a, 0xaf, 0x9d, 0x15, 0x3c, 0x9b, 0x9d, 0x54, 0x18, 0xae, 0xd7, 0x1c, 0x56, 0x6e, 0x9a, 0xad, - 0x45, 0x5b, 0x77, 0x8c, 0x1a, 0xb5, 0x8c, 0xfc, 0x94, 0xb2, 0x5e, 0x27, 0xd0, 0xe0, 0x7a, 0x9d, - 0x00, 0xc7, 0xb8, 0x9c, 0x0a, 0x5c, 0xa3, 0x0d, 0x6a, 0xae, 0xd1, 0xfc, 0x0d, 0x64, 0x5b, 0xe8, - 0xc4, 0x56, 0x90, 0x4d, 0xf7, 0x68, 0x9d, 0x38, 0x30, 0x5b, 0x7d, 0x76, 0xa3, 0xf6, 0xfa, 0x4c, - 0x10, 0xf3, 0xa5, 0xea, 0xd0, 0x96, 0xee, 0xd0, 0xfc, 0x74, 0xd4, 0x56, 0x4f, 0x24, 0x62, 0xb6, - 0x7a, 0x22, 0x22, 0xce, 0xd6, 0x1f, 0x0b, 0x95, 0x6e, 0x6c, 0xc3, 0x11, 0x91, 0x5c, 0x9a, 0xcd, - 0x4e, 0x51, 0x04, 0x13, 0xd0, 0x8c, 0x6d, 0x2d, 0xe1, 0x49, 0xc5, 0xcd, 0xe8, 0xec, 0xd4, 0x99, - 0x92, 0xcd, 0x4e, 0x9d, 0xb1, 0x4c, 0xd5, 0xa3, 0x58, 0x3e, 0x06, 0x6f, 0x45, 0x55, 0x3d, 0x81, - 0x84, 0xa9, 0x7a, 0x02, 0x38, 0xce, 0x50, 0xa3, 0x2e, 0xf5, 0xf2, 0x33, 0xdd, 0x18, 0x22, 0x49, - 0x9c, 0x21, 0x82, 0xe3, 0x0c, 0xa7, 0xa8, 0xd7, 0x58, 0xce, 0xcf, 0x76, 0x63, 0x88, 0x24, 0x71, - 0x86, 0x08, 0x66, 0x9b, 0xcd, 0x28, 0x78, 0xbc, 0xdd, 0x5c, 0xf1, 0xfb, 0x6c, 0x2e, 0xba, 0xd9, - 0xec, 0x48, 0xc8, 0x36, 0x9b, 0x1d, 0x91, 0xe4, 0x6b, 0x77, 0xfc, 0x26, 0x21, 0x3f, 0x8f, 0x15, - 0x5e, 0x0d, 0xed, 0x82, 0x9d, 0x94, 0x9a, 0xee, 0xd1, 0x76, 0xfa, 0xe6, 0xe1, 0x7d, 0x81, 0x57, - 0x6e, 0xbe, 0x8a, 0x55, 0x9d, 0x08, 0xce, 0x2a, 0x38, 0x78, 0xba, 0x47, 0x0b, 0xfc, 0x76, 0x3f, - 0x00, 0x83, 0xf8, 0x51, 0x15, 0xcb, 0xf4, 0x26, 0xc6, 0xf3, 0xaf, 0x47, 0xb7, 0x4c, 0x12, 0x8a, - 0x6d, 0x99, 0xa4, 0x9f, 0x6c, 0x12, 0xc7, 0x9f, 0x7c, 0x8a, 0x99, 0x18, 0xcf, 0x6b, 0xd1, 0x49, - 0x3c, 0x82, 0x64, 0x93, 0x78, 0x04, 0x10, 0xd4, 0x3b, 0xe1, 0xd8, 0xad, 0x89, 0xf1, 0x7c, 0x2d, - 0xa1, 0x5e, 0x8e, 0x0a, 0xea, 0xe5, 0x3f, 0x83, 0x7a, 0x6b, 0xcb, 0x6d, 0x6f, 0x82, 0x7d, 0xe3, - 0x42, 0x42, 0xbd, 0x3e, 0x32, 0xa8, 0xd7, 0x07, 0xb0, 0xa9, 0x10, 0x01, 0x55, 0xc7, 0x66, 0x93, - 0xf6, 0x2d, 0xb3, 0xd9, 0xcc, 0xdf, 0x8e, 0x4e, 0x85, 0x2a, 0x9e, 0x4d, 0x85, 0x2a, 0x8c, 0x99, - 0x9e, 0xbc, 0x55, 0x74, 0xb1, 0xbd, 0x94, 0xbf, 0x13, 0x35, 0x3d, 0x43, 0x0c, 0x33, 0x3d, 0xc3, - 0x5f, 0xb8, 0xbb, 0x60, 0xbf, 0x34, 0x7a, 0xcf, 0xa1, 0xee, 0x72, 0xfe, 0xae, 0xb2, 0xbb, 0x90, - 0x70, 0xb8, 0xbb, 0x90, 0x7e, 0x93, 0x25, 0x78, 0x24, 0xb2, 0xd0, 0xf8, 0xb7, 0x36, 0x35, 0xaa, - 0x3b, 0x8d, 0xe5, 0xfc, 0x1b, 0xc8, 0xea, 0x89, 0xc4, 0xa5, 0x2a, 0x4a, 0x3a, 0xdd, 0xa3, 0x75, - 0xe3, 0x84, 0xdb, 0xf2, 0xd7, 0x67, 0x78, 0xf0, 0x6e, 0xad, 0x5a, 0xf6, 0x37, 0xa1, 0x6f, 0x2a, - 0xdb, 0xf2, 0x38, 0x09, 0x6e, 0xcb, 0xe3, 0x60, 0xd2, 0x82, 0x47, 0x95, 0xad, 0xda, 0xac, 0xde, - 0x64, 0xfb, 0x12, 0x6a, 0x54, 0xf5, 0xc6, 0x0a, 0xf5, 0xf2, 0x1f, 0x45, 0xde, 0x97, 0x3a, 0x6c, - 0xf8, 0x14, 0xea, 0xe9, 0x1e, 0x6d, 0x1b, 0x7e, 0xa4, 0x08, 0xd9, 0xda, 0xd4, 0x42, 0x35, 0xff, - 0xb1, 0xe8, 0xf9, 0x26, 0x83, 0x4d, 0xf7, 0x68, 0x88, 0x63, 0x56, 0xda, 0xed, 0xd6, 0x92, 0xa3, - 0x1b, 0x94, 0x1b, 0x5a, 0x68, 0xbb, 0x09, 0x03, 0xf4, 0xe3, 0x51, 0x2b, 0xad, 0x13, 0x1d, 0xb3, - 0xd2, 0x3a, 0xe1, 0x98, 0xa2, 0x46, 0xf2, 0x54, 0xe5, 0x3f, 0x11, 0x55, 0xd4, 0x08, 0x92, 0x29, - 0x6a, 0x34, 0xab, 0xd5, 0x1b, 0x70, 0x26, 0xd8, 0xcf, 0x8b, 0xf5, 0x97, 0x77, 0x5a, 0xfe, 0x93, - 0xc8, 0xe7, 0xd1, 0xd8, 0x65, 0x40, 0x84, 0x6a, 0xba, 0x47, 0xeb, 0x50, 0x9e, 0xad, 0xb8, 0xb1, - 0x5c, 0x91, 0xc2, 0xbc, 0xf8, 0x8a, 0xe8, 0x8a, 0xdb, 0x81, 0x8c, 0xad, 0xb8, 0x1d, 0x50, 0x89, - 0xcc, 0x85, 0x50, 0xf5, 0x6d, 0x98, 0x07, 0x32, 0xed, 0xc4, 0x21, 0x91, 0xb9, 0xb0, 0xd4, 0x16, - 0xb7, 0x61, 0x1e, 0x58, 0x6b, 0x9d, 0x38, 0x90, 0xcb, 0x90, 0xab, 0xd5, 0x66, 0xb5, 0xb6, 0x95, - 0x6f, 0x28, 0xee, 0xc8, 0x08, 0x9d, 0xee, 0xd1, 0x04, 0x9e, 0x99, 0x41, 0x93, 0x4d, 0xdd, 0xf5, - 0xcc, 0x86, 0x8b, 0x23, 0xc6, 0x1f, 0x21, 0x46, 0xd4, 0x0c, 0x4a, 0xa2, 0x61, 0x66, 0x50, 0x12, - 0x9c, 0xd9, 0x8b, 0x65, 0xdd, 0x75, 0x75, 0xcb, 0x70, 0xf4, 0x71, 0x5c, 0x26, 0xa8, 0xf2, 0x6e, - 0x30, 0x82, 0x65, 0xf6, 0x62, 0x14, 0x82, 0x87, 0xef, 0x3e, 0xc4, 0x37, 0x73, 0xee, 0x29, 0x87, - 0xef, 0x0a, 0x1e, 0x0f, 0xdf, 0x15, 0x18, 0xda, 0x9d, 0x3e, 0x4c, 0xa3, 0x4b, 0x26, 0x13, 0x51, - 0x7e, 0x49, 0xb1, 0x3b, 0x55, 0x02, 0xb4, 0x3b, 0x55, 0x60, 0xa4, 0x49, 0xfe, 0x72, 0xbb, 0xdc, - 0xa1, 0x49, 0xe1, 0x2a, 0x1b, 0x2b, 0xc3, 0xd6, 0xef, 0x70, 0x70, 0x4c, 0x6c, 0x58, 0xfa, 0xaa, - 0x3d, 0x31, 0xee, 0x4b, 0xdd, 0x8c, 0xae, 0xdf, 0x1d, 0x09, 0xd9, 0xfa, 0xdd, 0x11, 0xc9, 0x66, - 0x57, 0x7f, 0xa3, 0xb5, 0xac, 0x3b, 0xd4, 0x98, 0x30, 0x1d, 0x3c, 0x59, 0xdc, 0xe0, 0x5b, 0xc3, - 0xb7, 0xa2, 0xb3, 0x6b, 0x17, 0x52, 0x36, 0xbb, 0x76, 0x41, 0x33, 0x23, 0x2f, 0x19, 0xad, 0x51, - 0xdd, 0xc8, 0xaf, 0x44, 0x8d, 0xbc, 0xce, 0x94, 0xcc, 0xc8, 0xeb, 0x8c, 0xed, 0xfc, 0x39, 0x77, - 0x1d, 0xd3, 0xa3, 0xf9, 0xe6, 0x4e, 0x3e, 0x07, 0x49, 0x3b, 0x7f, 0x0e, 0xa2, 0xd9, 0x86, 0x50, - 0xed, 0x90, 0xd5, 0xe8, 0x86, 0x30, 0xde, 0x0d, 0x6a, 0x09, 0x66, 0xb1, 0x88, 0x07, 0x92, 0x79, - 0x2b, 0x6a, 0xb1, 0x08, 0x30, 0xb3, 0x58, 0xc2, 0x27, 0x94, 0x91, 0xb7, 0x6e, 0x79, 0x3b, 0xba, - 0x86, 0xca, 0x38, 0xb6, 0x86, 0x46, 0xde, 0xc5, 0x7d, 0x20, 0xf2, 0x90, 0x23, 0xdf, 0x8a, 0x5a, - 0x1d, 0x12, 0x8a, 0x59, 0x1d, 0xf2, 0x93, 0x8f, 0x32, 0x9c, 0xc0, 0x5b, 0x70, 0xad, 0x1d, 0xdc, - 0xe3, 0x7c, 0x2a, 0xfa, 0x99, 0x0a, 0x9a, 0x7d, 0xa6, 0x02, 0x8a, 0x30, 0x11, 0xd3, 0x96, 0xd3, - 0x81, 0x49, 0x78, 0x3e, 0xa8, 0x80, 0xc8, 0x0c, 0x90, 0x5a, 0x69, 0x76, 0xa6, 0x62, 0x54, 0xe5, - 0x2b, 0x32, 0x37, 0x7a, 0x02, 0x1b, 0xa7, 0x98, 0xee, 0xd1, 0x12, 0xca, 0x91, 0xb7, 0xe0, 0x82, - 0x80, 0x8a, 0x28, 0x03, 0x55, 0xc7, 0x5e, 0x33, 0x8d, 0x60, 0x41, 0xf0, 0xa2, 0x8e, 0x82, 0xdd, - 0x68, 0xa7, 0x7b, 0xb4, 0xae, 0xbc, 0x3a, 0xd7, 0x25, 0xd6, 0x87, 0xf6, 0x4e, 0xea, 0x0a, 0x16, - 0x89, 0xae, 0xbc, 0x3a, 0xd7, 0x25, 0xe4, 0xbe, 0xb6, 0x93, 0xba, 0x82, 0x4e, 0xe8, 0xca, 0x8b, - 0xb8, 0x50, 0xe8, 0x86, 0x2f, 0x35, 0x9b, 0xf9, 0x75, 0xac, 0xee, 0xbd, 0x3b, 0xa9, 0xae, 0x84, - 0x06, 0xe7, 0x76, 0x1c, 0xd9, 0x2c, 0x3d, 0xdf, 0xa2, 0x56, 0x2d, 0xb2, 0x00, 0xdd, 0x8f, 0xce, - 0xd2, 0x31, 0x02, 0x36, 0x4b, 0xc7, 0x80, 0x6c, 0x40, 0xc9, 0xef, 0x81, 0xf2, 0x1b, 0xd1, 0x01, - 0x25, 0xe3, 0xd8, 0x80, 0x8a, 0xbc, 0x1d, 0x9a, 0x87, 0x93, 0xf3, 0x2b, 0x9e, 0xee, 0x5b, 0x90, - 0xae, 0xe8, 0xca, 0xb7, 0x95, 0x4b, 0xa6, 0x38, 0x09, 0x5e, 0x32, 0xc5, 0xc1, 0x6c, 0x8c, 0x30, - 0x70, 0x6d, 0xc3, 0x6a, 0x4c, 0xe9, 0x66, 0xb3, 0xed, 0xd0, 0xfc, 0x5f, 0x8a, 0x8e, 0x11, 0x05, - 0xcd, 0xc6, 0x88, 0x02, 0x62, 0x0b, 0x34, 0x03, 0x95, 0x5c, 0xd7, 0x5c, 0xb2, 0xc4, 0xbe, 0xb2, - 0xdd, 0xf4, 0xf2, 0xff, 0xbf, 0xe8, 0x02, 0x9d, 0x44, 0xc3, 0x16, 0xe8, 0x24, 0x38, 0x9e, 0x3a, - 0xb1, 0x5e, 0x60, 0x8b, 0x87, 0x7c, 0x57, 0xf9, 0xff, 0x57, 0x4e, 0x9d, 0x12, 0x68, 0xf0, 0xd4, - 0x29, 0x01, 0xce, 0xd6, 0x47, 0x6e, 0x93, 0xcd, 0x98, 0xc1, 0x5d, 0xf5, 0x7f, 0x15, 0x5d, 0x1f, - 0x55, 0x3c, 0x5b, 0x1f, 0x55, 0x58, 0x94, 0x8f, 0xe8, 0x82, 0xff, 0xba, 0x13, 0x9f, 0x40, 0xfe, - 0xb1, 0x32, 0xe4, 0x86, 0xcc, 0x47, 0x8c, 0x94, 0xbf, 0x9c, 0xea, 0xc4, 0x28, 0x18, 0x1e, 0xb1, - 0x42, 0x51, 0x46, 0x1a, 0x5d, 0x33, 0xe9, 0x7a, 0xfe, 0x2b, 0x3b, 0x32, 0xe2, 0x04, 0x51, 0x46, - 0x1c, 0x46, 0xde, 0x84, 0x33, 0x21, 0x6c, 0x96, 0xae, 0x2e, 0x06, 0x33, 0xd3, 0x5f, 0x49, 0x45, - 0xcd, 0xe0, 0x64, 0x32, 0x66, 0x06, 0x27, 0x63, 0x92, 0x58, 0x0b, 0xd1, 0xfd, 0xd5, 0x6d, 0x58, - 0x07, 0x12, 0xec, 0xc0, 0x20, 0x89, 0xb5, 0x90, 0xe6, 0x57, 0x6d, 0xc3, 0x3a, 0x90, 0x69, 0x07, - 0x06, 0xe4, 0xeb, 0x52, 0x70, 0x29, 0x19, 0x55, 0x6a, 0x36, 0xa7, 0x6c, 0x27, 0xc4, 0xe5, 0xff, - 0x5a, 0x2a, 0x7a, 0xd0, 0xb0, 0xb3, 0x62, 0xd3, 0x3d, 0xda, 0x0e, 0x2b, 0x20, 0x1f, 0x81, 0xe1, - 0x52, 0xdb, 0x30, 0x3d, 0xbc, 0x78, 0x63, 0x86, 0xf3, 0x57, 0xa7, 0x94, 0x2d, 0x8e, 0x8c, 0xc5, - 0x2d, 0x8e, 0x0c, 0x20, 0x37, 0x61, 0xac, 0x46, 0x1b, 0x6d, 0x0c, 0x4d, 0x41, 0x5b, 0xb6, 0xe3, - 0x31, 0x1e, 0x5f, 0x93, 0x8a, 0x4e, 0x62, 0x31, 0x0a, 0x36, 0x89, 0xc5, 0x80, 0xe4, 0x4e, 0xec, - 0x56, 0x5e, 0x74, 0xe6, 0xd7, 0xa6, 0xba, 0x5e, 0xcb, 0x07, 0x7d, 0x99, 0x5c, 0x9c, 0x54, 0x95, - 0x5b, 0x74, 0xc1, 0xf5, 0xeb, 0x52, 0x5d, 0xae, 0xd1, 0xa5, 0x19, 0x2e, 0x0e, 0x66, 0x1c, 0x23, - 0x77, 0xd7, 0x82, 0xe3, 0x5f, 0x4f, 0x75, 0xb9, 0xf6, 0x0e, 0x39, 0x26, 0x80, 0xc9, 0x0b, 0xdc, - 0x53, 0x44, 0x30, 0xfa, 0x1b, 0xa9, 0xb8, 0xab, 0x48, 0x50, 0x5e, 0x22, 0x64, 0xc5, 0x6e, 0xbb, - 0x81, 0xd2, 0x7f, 0x3a, 0x15, 0xf7, 0xcd, 0x0b, 0x8b, 0x85, 0xbf, 0x08, 0x85, 0xf3, 0x93, 0xf7, - 0x3d, 0xea, 0x58, 0x7a, 0x13, 0xbb, 0xb3, 0xe6, 0xd9, 0x8e, 0xbe, 0x44, 0x27, 0x2d, 0x7d, 0xb1, - 0x49, 0xf3, 0x5f, 0x9f, 0x8a, 0x5a, 0xb0, 0x9d, 0x49, 0x99, 0x05, 0xdb, 0x19, 0x4b, 0x96, 0xe1, - 0x91, 0x24, 0xec, 0x84, 0xe9, 0x62, 0x3d, 0xdf, 0x90, 0x8a, 0x9a, 0xb0, 0x5d, 0x68, 0x99, 0x09, - 0xdb, 0x05, 0x4d, 0xae, 0xc3, 0xc0, 0xb8, 0xed, 0x4f, 0xbf, 0xdf, 0xa8, 0x38, 0x43, 0x06, 0x98, - 0xe9, 0x1e, 0x2d, 0x24, 0x13, 0x65, 0xc4, 0xa0, 0xfe, 0x4c, 0xbc, 0x4c, 0x78, 0xf9, 0x14, 0xfc, - 0x10, 0x65, 0x84, 0xb8, 0xff, 0x9b, 0x78, 0x99, 0xf0, 0x8e, 0x2b, 0xf8, 0xc1, 0x66, 0x12, 0x5e, - 0xe3, 0xec, 0x54, 0x89, 0xd9, 0x6d, 0xe5, 0x65, 0xbd, 0xd9, 0xa4, 0xd6, 0x12, 0xcd, 0x7f, 0x56, - 0x99, 0x49, 0x92, 0xc9, 0xd8, 0x4c, 0x92, 0x8c, 0x21, 0x1f, 0x87, 0xb3, 0x77, 0xf4, 0xa6, 0x69, - 0x84, 0x38, 0x8d, 0xba, 0x2d, 0xdb, 0x72, 0x69, 0xfe, 0x73, 0xa9, 0xe8, 0x6e, 0xba, 0x03, 0x1d, - 0xdb, 0x4d, 0x77, 0x40, 0x91, 0x59, 0x20, 0xb8, 0x8c, 0x06, 0xb3, 0x05, 0x5b, 0x9f, 0xf3, 0x7f, - 0x33, 0x15, 0xb5, 0x53, 0xe3, 0x24, 0xcc, 0x4e, 0x8d, 0x43, 0x49, 0xbd, 0x73, 0x3e, 0xa6, 0xfc, - 0x37, 0xa5, 0xa2, 0xa7, 0x35, 0x9d, 0x08, 0xa7, 0x7b, 0xb4, 0xce, 0x49, 0x9d, 0x6e, 0xc0, 0x68, - 0xad, 0x5a, 0x99, 0x9a, 0x9a, 0xac, 0xdd, 0xa9, 0x4c, 0xe0, 0x53, 0x0d, 0x23, 0xff, 0xcd, 0xca, - 0x8a, 0xa5, 0x12, 0xb0, 0x15, 0x4b, 0x85, 0x91, 0x97, 0x61, 0x88, 0xb5, 0x9f, 0x0d, 0x18, 0xfc, - 0xe4, 0xcf, 0xa7, 0xa2, 0xe6, 0x94, 0x8c, 0x64, 0xe6, 0x94, 0xfc, 0x9b, 0xd4, 0xe0, 0x14, 0x93, - 0x62, 0xd5, 0xa1, 0xf7, 0xa8, 0x43, 0xad, 0x86, 0x3f, 0xa6, 0xbf, 0x25, 0x15, 0xb5, 0x32, 0x92, - 0x88, 0x98, 0x95, 0x91, 0x04, 0x27, 0x2b, 0x70, 0x41, 0x3d, 0x09, 0x92, 0xdf, 0xf5, 0xe6, 0xff, - 0x56, 0x4a, 0x31, 0x86, 0xbb, 0x10, 0xa3, 0x31, 0xdc, 0x05, 0x4f, 0x2c, 0xb8, 0x28, 0x8e, 0x55, - 0x84, 0xc3, 0xa5, 0x5a, 0xdb, 0x17, 0x78, 0x6d, 0xef, 0x09, 0x1d, 0x02, 0xbb, 0x50, 0x4f, 0xf7, - 0x68, 0xdd, 0xd9, 0x31, 0x3d, 0x8b, 0x67, 0x1d, 0xca, 0x7f, 0x6b, 0x2a, 0xd9, 0x23, 0x25, 0xe2, - 0xa6, 0x9c, 0x94, 0xae, 0xe8, 0xcd, 0x4e, 0x39, 0x73, 0xf2, 0x7f, 0x5b, 0x19, 0x6f, 0xc9, 0x64, - 0x6c, 0xbc, 0x75, 0x48, 0xba, 0x73, 0x13, 0xc6, 0xb8, 0x52, 0x57, 0x75, 0x1c, 0x86, 0xd6, 0x12, - 0x35, 0xf2, 0x7f, 0x47, 0x59, 0xed, 0x62, 0x14, 0xe8, 0xda, 0xa3, 0x02, 0xd9, 0xd4, 0x5d, 0x6b, - 0xe9, 0x96, 0x85, 0xc7, 0xac, 0xf9, 0xbf, 0xab, 0x4c, 0xdd, 0x21, 0x0a, 0x1d, 0x77, 0x83, 0x5f, - 0x4c, 0x13, 0xba, 0xe5, 0x9b, 0xcb, 0xff, 0xb7, 0x8a, 0x26, 0x74, 0x23, 0x66, 0x9a, 0xd0, 0x35, - 0x79, 0xdd, 0x9d, 0x0e, 0x6f, 0xec, 0xf3, 0x5f, 0x54, 0x56, 0xe4, 0x44, 0x2a, 0xb6, 0x22, 0x27, - 0x3f, 0xd1, 0xbf, 0xd3, 0xe1, 0x7d, 0x7a, 0xfe, 0xdb, 0xba, 0xf3, 0x0d, 0x57, 0xfa, 0xe4, 0xe7, - 0xed, 0x77, 0x3a, 0xbc, 0xed, 0xce, 0x7f, 0x7b, 0x77, 0xbe, 0xa1, 0x63, 0x5f, 0xf2, 0xd3, 0xf0, - 0x7a, 0xe7, 0x77, 0xd1, 0xf9, 0xef, 0x50, 0xa7, 0xae, 0x0e, 0x84, 0x38, 0x75, 0x75, 0x7a, 0x5c, - 0xbd, 0x08, 0xe7, 0xb8, 0x86, 0xdc, 0x70, 0xf4, 0xd6, 0x72, 0x8d, 0x7a, 0x9e, 0x69, 0x2d, 0xf9, - 0x3b, 0xb1, 0xef, 0x4c, 0x29, 0xc7, 0x63, 0x9d, 0x28, 0xf1, 0x78, 0xac, 0x13, 0x92, 0x29, 0x6f, - 0xec, 0x05, 0x74, 0xfe, 0xef, 0x29, 0xca, 0x1b, 0xa3, 0x60, 0xca, 0x1b, 0x7f, 0x38, 0x7d, 0x33, - 0xe1, 0xa1, 0x6f, 0xfe, 0xbf, 0xeb, 0xcc, 0x2b, 0x68, 0x5f, 0xc2, 0xfb, 0xe0, 0x9b, 0x09, 0xef, - 0x59, 0xf3, 0xff, 0x7d, 0x67, 0x5e, 0xa1, 0x0f, 0x52, 0xfc, 0x19, 0xec, 0x9b, 0x70, 0x86, 0xcf, - 0xe6, 0x53, 0xd4, 0xa0, 0x91, 0x0f, 0xfd, 0x2e, 0x65, 0xec, 0x27, 0x93, 0xe1, 0x91, 0x7b, 0x22, - 0x26, 0x89, 0xb5, 0x68, 0xeb, 0xdf, 0xdf, 0x86, 0x75, 0xb8, 0x21, 0x48, 0xc6, 0xb0, 0xf5, 0x46, - 0x7e, 0xfd, 0x96, 0xff, 0x6e, 0x65, 0xbd, 0x91, 0x91, 0xe8, 0xce, 0x21, 0x3f, 0x95, 0x7b, 0x39, - 0xfa, 0xd2, 0x2b, 0xff, 0x3d, 0x89, 0x85, 0x83, 0x0e, 0x88, 0x3e, 0x0b, 0x7b, 0x39, 0xfa, 0xaa, - 0x29, 0xff, 0xbd, 0x89, 0x85, 0x83, 0x0f, 0x88, 0x3e, 0x81, 0x62, 0x5b, 0xa4, 0xb6, 0x67, 0x73, - 0x56, 0x91, 0xe9, 0xe1, 0x1f, 0xa8, 0x5b, 0xa4, 0x44, 0x32, 0xdc, 0x22, 0x25, 0x62, 0x92, 0x58, - 0x8b, 0xcf, 0xfb, 0xbe, 0x6d, 0x58, 0x4b, 0x1b, 0xbb, 0x44, 0x4c, 0x12, 0x6b, 0xf1, 0xf1, 0xdf, - 0xbf, 0x0d, 0x6b, 0x69, 0x63, 0x97, 0x88, 0x61, 0xe6, 0x58, 0x88, 0xb9, 0x43, 0x1d, 0x37, 0x54, - 0xbf, 0xff, 0x41, 0x31, 0xc7, 0x3a, 0xd0, 0x31, 0x73, 0xac, 0x03, 0x2a, 0x91, 0xbb, 0x10, 0xca, - 0x0f, 0x6c, 0xc7, 0x3d, 0xbc, 0x97, 0xe9, 0x80, 0x4a, 0xe4, 0x2e, 0xe4, 0xf2, 0x0f, 0xb7, 0xe3, - 0x1e, 0x5e, 0xcc, 0x74, 0x40, 0x31, 0xa3, 0xa8, 0xe6, 0xe9, 0x9e, 0xd9, 0x98, 0xb6, 0x5d, 0x4f, - 0x5a, 0xe4, 0xff, 0x47, 0xc5, 0x28, 0x4a, 0x22, 0x62, 0x46, 0x51, 0x12, 0x3c, 0xce, 0x54, 0x48, - 0xe3, 0x1f, 0x75, 0x65, 0x1a, 0x5a, 0x5a, 0x49, 0xf0, 0x38, 0x53, 0x21, 0x84, 0xff, 0xa9, 0x2b, - 0xd3, 0xd0, 0x53, 0x3e, 0x09, 0xce, 0x2c, 0xd3, 0xb2, 0x63, 0xaf, 0x5b, 0x37, 0xe9, 0x3a, 0x6d, - 0x8a, 0x4f, 0xff, 0x41, 0xc5, 0x32, 0x55, 0x09, 0xf0, 0x16, 0x45, 0x81, 0x45, 0x19, 0x89, 0xcf, - 0xfd, 0xa1, 0x8e, 0x8c, 0xc2, 0x63, 0x22, 0x15, 0x16, 0x65, 0x24, 0x3e, 0xf1, 0x1f, 0x77, 0x64, - 0x14, 0x1e, 0x13, 0xa9, 0x30, 0x52, 0x82, 0x11, 0x7c, 0x2b, 0xa1, 0xbb, 0xbe, 0xe7, 0xe7, 0x8f, - 0xa5, 0xa2, 0xb7, 0x5e, 0x51, 0xf4, 0x74, 0x8f, 0xa6, 0x14, 0x90, 0x59, 0x88, 0x4f, 0xfa, 0xf1, - 0x0e, 0x2c, 0x42, 0x7f, 0xc7, 0x28, 0x44, 0x66, 0x21, 0x3e, 0xe6, 0x9f, 0x74, 0x60, 0x11, 0x3a, - 0x3c, 0x46, 0x21, 0xe4, 0x83, 0x30, 0x58, 0x9b, 0x5a, 0xa8, 0xfa, 0x39, 0x51, 0x7f, 0x22, 0xa5, - 0xbc, 0x2a, 0x0a, 0x71, 0xf8, 0xaa, 0x28, 0xfc, 0x49, 0x3e, 0x02, 0xc3, 0x65, 0xdb, 0xf2, 0xf4, - 0x86, 0xbf, 0x01, 0xfd, 0x49, 0xe5, 0x0c, 0x25, 0x82, 0x9d, 0xee, 0xd1, 0xa2, 0xe4, 0x52, 0x79, - 0xd1, 0xf6, 0x9f, 0x4a, 0x2e, 0x1f, 0x34, 0x3d, 0x4a, 0xce, 0x66, 0xb4, 0xbb, 0xb6, 0xb3, 0xd2, - 0xb4, 0x75, 0xc3, 0x8f, 0x5d, 0x2a, 0x1a, 0xf2, 0x4f, 0x95, 0x19, 0x2d, 0x99, 0x8c, 0xcd, 0x68, - 0xc9, 0x98, 0x24, 0xd6, 0xa2, 0x8b, 0x7e, 0x7a, 0x1b, 0xd6, 0xe1, 0x3c, 0x9c, 0x8c, 0x49, 0x62, - 0x2d, 0x3e, 0xff, 0x9f, 0x6d, 0xc3, 0x3a, 0x9c, 0x87, 0x93, 0x31, 0xcc, 0xb4, 0xbe, 0x61, 0x7a, - 0xfe, 0xc3, 0xb6, 0x9f, 0x51, 0x4c, 0xeb, 0x10, 0xc5, 0x4c, 0xeb, 0xf0, 0x17, 0xa1, 0x70, 0x3e, - 0x78, 0x2a, 0x19, 0xee, 0x5d, 0x2b, 0xd6, 0x1a, 0xdb, 0x1f, 0xe7, 0xff, 0x67, 0xe5, 0x54, 0xa4, - 0x33, 0xe9, 0x74, 0x8f, 0xd6, 0x85, 0x11, 0xa9, 0x2a, 0x7e, 0x8a, 0x3c, 0xa8, 0x5f, 0xfe, 0x67, - 0x53, 0x5d, 0x1c, 0x15, 0x39, 0x4d, 0xcc, 0x51, 0x91, 0x83, 0xc5, 0x9c, 0xb5, 0xd8, 0xa4, 0xb7, - 0xe7, 0x2a, 0x6f, 0x48, 0xb3, 0xeb, 0x97, 0xe2, 0x73, 0x56, 0x8c, 0x48, 0xcc, 0x59, 0x31, 0x38, - 0xf9, 0xab, 0x29, 0x78, 0x52, 0x95, 0xef, 0x1b, 0x2f, 0x3c, 0xf3, 0x92, 0x46, 0xd7, 0xec, 0x86, - 0x6c, 0x59, 0xfd, 0x1c, 0xaf, 0xe5, 0xe9, 0x4e, 0xdd, 0x95, 0x54, 0x68, 0xba, 0x47, 0xdb, 0x11, - 0xf3, 0x1d, 0xb4, 0x42, 0x28, 0xcd, 0xcf, 0xef, 0xaa, 0x15, 0x81, 0x0a, 0xed, 0x88, 0xf9, 0x0e, - 0x5a, 0x21, 0x46, 0xc5, 0x2f, 0xec, 0xaa, 0x15, 0xc1, 0x18, 0xd9, 0x11, 0x73, 0xdc, 0x7d, 0xde, - 0xad, 0x55, 0xca, 0x81, 0xaf, 0xcf, 0x86, 0xd5, 0xc8, 0xff, 0xa2, 0xba, 0xfb, 0x54, 0x29, 0x70, - 0xf7, 0xa9, 0x02, 0xd9, 0x72, 0x3f, 0x4d, 0xf5, 0x26, 0xdb, 0x8e, 0xd2, 0xc6, 0x4a, 0xc4, 0x78, - 0xfb, 0x25, 0x65, 0xb9, 0xef, 0x40, 0xc7, 0x96, 0xfb, 0x0e, 0xa8, 0x44, 0xee, 0x42, 0x42, 0xbf, - 0xbc, 0x1d, 0xf7, 0xd0, 0x54, 0xe9, 0x80, 0x4a, 0xe4, 0x2e, 0xb4, 0xe0, 0x9f, 0x6f, 0xc7, 0x3d, - 0x34, 0x55, 0x3a, 0xa0, 0xc8, 0x37, 0xa6, 0xe0, 0x72, 0x52, 0x77, 0xf0, 0xd8, 0x1f, 0xf3, 0x6b, - 0xd4, 0x71, 0x4c, 0xc3, 0xbf, 0x40, 0xfe, 0x15, 0x5e, 0xdf, 0x33, 0xdd, 0xfa, 0x3b, 0xa9, 0xe0, - 0x74, 0x8f, 0xb6, 0xe3, 0x4a, 0x76, 0xd8, 0x22, 0x21, 0x81, 0x5f, 0xdd, 0x75, 0x8b, 0x02, 0x91, - 0xec, 0xb8, 0x12, 0x9c, 0x70, 0xcc, 0x25, 0xd7, 0xb3, 0x1d, 0x5a, 0xb5, 0x9b, 0x66, 0xc3, 0x5f, - 0x6f, 0x7e, 0x4d, 0x9d, 0x70, 0x12, 0x88, 0x70, 0xc2, 0x49, 0x80, 0xc7, 0x99, 0x0a, 0x8d, 0xf9, - 0xf5, 0xae, 0x4c, 0x25, 0x73, 0x2e, 0x01, 0x1e, 0x67, 0x2a, 0xc4, 0xf4, 0x2f, 0xba, 0x32, 0x95, - 0xcc, 0xb9, 0x04, 0x38, 0xb1, 0xe0, 0x62, 0x68, 0xe8, 0x96, 0x96, 0xa8, 0xe5, 0x69, 0x76, 0xb3, - 0x69, 0xb7, 0xbd, 0x05, 0xc7, 0x5c, 0x5a, 0xa2, 0x4e, 0xfe, 0x37, 0x94, 0x03, 0xb2, 0xae, 0xd4, - 0xd3, 0x3d, 0x5a, 0x77, 0x76, 0xc4, 0x83, 0x42, 0x32, 0xc1, 0x94, 0xed, 0x34, 0xe8, 0x84, 0x6d, - 0xd1, 0xfc, 0x6f, 0xa6, 0xa2, 0xd7, 0xd3, 0xdb, 0xd0, 0x4f, 0xf7, 0x68, 0xdb, 0xb1, 0x24, 0x9f, - 0x82, 0x47, 0x93, 0x49, 0xd8, 0x7f, 0x8b, 0x7a, 0x63, 0x25, 0xff, 0xbf, 0xa4, 0xa2, 0x3e, 0x7f, - 0xdd, 0xc9, 0xa7, 0x7b, 0xb4, 0x6d, 0x18, 0x92, 0x09, 0x38, 0x31, 0x5b, 0xae, 0x46, 0x1e, 0x74, - 0xfc, 0x56, 0x4a, 0x79, 0x7e, 0x15, 0xc5, 0xe3, 0xf3, 0xab, 0x28, 0x88, 0xd9, 0x53, 0x21, 0x68, - 0xd2, 0x32, 0xf2, 0xff, 0xab, 0x62, 0x4f, 0x45, 0xb0, 0xe8, 0x5f, 0x2a, 0x03, 0xd8, 0x3c, 0x1b, - 0x02, 0xfc, 0x7b, 0xf9, 0xdf, 0x56, 0xe6, 0xd9, 0x18, 0x05, 0x9b, 0x67, 0x63, 0x40, 0x66, 0xe5, - 0x84, 0xc0, 0x39, 0x5b, 0xb8, 0xfc, 0x9a, 0xb6, 0x95, 0xff, 0x1d, 0xc5, 0xca, 0x49, 0x26, 0x63, - 0x56, 0x4e, 0x32, 0x86, 0xa9, 0xf6, 0xb8, 0xdd, 0xb6, 0x8c, 0x5b, 0x74, 0xa3, 0xa5, 0x9b, 0x8e, - 0xff, 0x0e, 0x29, 0xff, 0xbb, 0x8a, 0x6a, 0x27, 0x11, 0x31, 0xd5, 0x4e, 0x82, 0xc7, 0x98, 0xda, - 0x1e, 0x6f, 0xed, 0xbf, 0xec, 0xc6, 0x54, 0x10, 0xc5, 0x98, 0x0a, 0x38, 0xf9, 0x74, 0x0a, 0xde, - 0x2b, 0x23, 0x6e, 0xda, 0xa6, 0x85, 0x1e, 0xd8, 0x77, 0xa8, 0x13, 0x7c, 0xcf, 0x94, 0x6e, 0x36, - 0xa9, 0x91, 0xdf, 0xe4, 0x15, 0x5d, 0x4b, 0xaa, 0xa8, 0x4b, 0xb9, 0xe9, 0x1e, 0x6d, 0xa7, 0x55, - 0x90, 0x45, 0x38, 0x17, 0x8a, 0x94, 0x59, 0x66, 0xd4, 0xaa, 0xd5, 0x26, 0x6b, 0x9e, 0x43, 0xf5, - 0xd5, 0xfc, 0xef, 0x29, 0x87, 0x6d, 0x1d, 0x29, 0xd1, 0x97, 0xbc, 0x13, 0x92, 0xac, 0xc0, 0x85, - 0x10, 0xe9, 0xdb, 0x85, 0x0b, 0x0b, 0x55, 0x5f, 0x9d, 0x7e, 0x5f, 0x39, 0xa6, 0xed, 0x46, 0x3c, - 0xdd, 0xa3, 0x75, 0x65, 0x86, 0x17, 0x1f, 0xe5, 0xca, 0x2c, 0x6b, 0x83, 0x69, 0x2d, 0x71, 0xbf, - 0xa8, 0x3f, 0x50, 0x2f, 0x3e, 0x14, 0x02, 0xbc, 0xf8, 0x50, 0x60, 0x78, 0x9b, 0x5b, 0xae, 0xcc, - 0xfa, 0x96, 0x02, 0xe7, 0xf4, 0x65, 0xf5, 0x36, 0x57, 0xa5, 0xc0, 0xdb, 0x5c, 0x15, 0xc8, 0xac, - 0x69, 0x11, 0xa0, 0xaa, 0xaa, 0x51, 0xd7, 0x73, 0x4c, 0x7c, 0xa9, 0xe3, 0x9f, 0x69, 0xfe, 0x2b, - 0xc5, 0x9a, 0xee, 0x4c, 0xca, 0xac, 0xe9, 0xce, 0x58, 0xf6, 0xed, 0x77, 0x2c, 0xea, 0x45, 0x2c, - 0x98, 0xff, 0x43, 0xf9, 0x76, 0x95, 0x80, 0x7d, 0xbb, 0x0a, 0x8b, 0x32, 0x12, 0xad, 0xfc, 0x3f, - 0x3b, 0x32, 0x0a, 0xb7, 0xd6, 0x2a, 0x2c, 0xca, 0x48, 0x2c, 0x37, 0x5b, 0x1d, 0x19, 0x85, 0x5b, - 0x6b, 0x15, 0x46, 0xee, 0xc0, 0x69, 0x7f, 0x45, 0x8e, 0xba, 0xf8, 0xfe, 0x5f, 0xca, 0x69, 0x76, - 0x22, 0xd5, 0x74, 0x8f, 0x96, 0x5c, 0x3c, 0x81, 0xaf, 0xf8, 0xdc, 0x3f, 0xec, 0xce, 0x37, 0x3c, - 0x7d, 0x4f, 0x44, 0x24, 0xf0, 0x15, 0x5f, 0xff, 0x6f, 0xba, 0xf3, 0x0d, 0x4f, 0xdf, 0x13, 0x11, - 0x6c, 0x4e, 0xaa, 0x58, 0xe2, 0x3e, 0x6c, 0xd6, 0x36, 0x82, 0x13, 0x94, 0x7f, 0xab, 0xcc, 0x49, - 0x49, 0x44, 0x6c, 0x4e, 0x4a, 0x82, 0xc7, 0x99, 0x0a, 0x19, 0xfc, 0xdf, 0x5d, 0x99, 0x86, 0xd6, - 0x46, 0x12, 0x3c, 0xce, 0x54, 0x08, 0xe0, 0x8f, 0xba, 0x32, 0x0d, 0xad, 0x8d, 0x24, 0x38, 0x13, - 0x6b, 0x00, 0xaf, 0xd1, 0x86, 0x43, 0xfd, 0x63, 0x86, 0xff, 0x47, 0x11, 0x6b, 0x22, 0x15, 0x13, - 0x6b, 0x22, 0x22, 0x81, 0xaf, 0x10, 0xc1, 0xbf, 0xeb, 0xce, 0x37, 0x54, 0x83, 0x44, 0x44, 0x02, - 0x5f, 0x21, 0x85, 0x7f, 0xdf, 0x9d, 0x6f, 0xa8, 0x06, 0x89, 0x88, 0x08, 0xdf, 0x88, 0xd5, 0xf9, - 0xc7, 0x9d, 0xf8, 0x2a, 0x66, 0x67, 0x72, 0xf1, 0x04, 0xbe, 0x42, 0x0e, 0xff, 0x6f, 0x77, 0xbe, - 0x09, 0x72, 0x88, 0x98, 0x9e, 0x71, 0xbe, 0x42, 0x0e, 0xff, 0xa1, 0x3b, 0xdf, 0x04, 0x39, 0x44, - 0xac, 0x4f, 0x74, 0xb9, 0xe1, 0xe6, 0x0e, 0x1e, 0x40, 0x99, 0x6f, 0x53, 0x23, 0xff, 0x27, 0x31, - 0x97, 0x1b, 0x85, 0x82, 0xbb, 0xdc, 0x28, 0x40, 0xa6, 0xb0, 0x1a, 0xf5, 0x1c, 0x93, 0xae, 0xe9, - 0x4d, 0x79, 0x68, 0xfd, 0x59, 0x4a, 0x7d, 0x48, 0x1d, 0x27, 0xe2, 0x0f, 0xa9, 0xe3, 0xf0, 0x38, - 0x53, 0x21, 0xcf, 0xff, 0xd4, 0x95, 0x69, 0x38, 0xb4, 0x92, 0xe0, 0x71, 0xa6, 0x42, 0x98, 0xff, - 0xb9, 0x2b, 0xd3, 0x70, 0x68, 0x25, 0xc1, 0xc9, 0x35, 0xe8, 0xc7, 0x10, 0x8e, 0x5a, 0xdb, 0xca, - 0xff, 0xb9, 0x12, 0xc5, 0xcd, 0x47, 0x4c, 0xf7, 0x68, 0x01, 0xd1, 0x78, 0x1f, 0xf4, 0xe2, 0xea, - 0x76, 0x33, 0xd7, 0xff, 0xc3, 0xa9, 0xd1, 0x1f, 0x49, 0xdd, 0xcc, 0xf5, 0xff, 0x48, 0x6a, 0xf4, - 0x47, 0xd9, 0xff, 0x3f, 0x9a, 0x1a, 0xfd, 0xb1, 0x94, 0x76, 0x4e, 0xb1, 0x70, 0xab, 0x4d, 0x5d, - 0x1c, 0x65, 0x24, 0xa2, 0xf8, 0xcf, 0x44, 0x14, 0x6f, 0x62, 0xf1, 0x8b, 0x29, 0x18, 0xe2, 0x36, - 0x85, 0xc8, 0xd2, 0x71, 0x1e, 0xfa, 0x79, 0x9c, 0x03, 0x3f, 0xac, 0xa4, 0x16, 0xfc, 0x26, 0x97, - 0x60, 0x64, 0x46, 0x77, 0x3d, 0x6c, 0x62, 0xc5, 0x32, 0xe8, 0x7d, 0x8c, 0xf1, 0x95, 0xd1, 0x14, - 0x28, 0x99, 0xe1, 0x74, 0xbc, 0x1c, 0xe6, 0xca, 0xca, 0x6c, 0x9b, 0x9c, 0xa2, 0xff, 0x4b, 0x9b, - 0x85, 0x1e, 0xcc, 0x45, 0xa1, 0x94, 0x2d, 0xfe, 0x42, 0x0a, 0x62, 0x11, 0x18, 0xf6, 0x1e, 0x8d, - 0x76, 0x1e, 0x4e, 0x28, 0xf9, 0xd9, 0x44, 0xa0, 0xb2, 0x1d, 0xa6, 0x6f, 0x53, 0x4b, 0x93, 0xf7, - 0x06, 0x01, 0xb2, 0x6e, 0x6b, 0x33, 0x22, 0xf1, 0x08, 0x4f, 0xf8, 0xee, 0x34, 0x35, 0x09, 0x25, - 0x02, 0xcb, 0x7f, 0xcd, 0xc9, 0x30, 0x65, 0x14, 0xb9, 0x24, 0x42, 0xe3, 0x4a, 0xe9, 0x93, 0xda, - 0x2e, 0x75, 0xe4, 0x74, 0x25, 0x18, 0x0a, 0xf7, 0x23, 0x30, 0x54, 0x59, 0x6d, 0x51, 0xc7, 0xb5, - 0x2d, 0xdd, 0xb3, 0xfd, 0x24, 0xf4, 0x18, 0x64, 0xd3, 0x94, 0xe0, 0x72, 0x90, 0x4d, 0x99, 0x9e, - 0x5c, 0x81, 0x5e, 0xcd, 0x6e, 0x52, 0x37, 0x9f, 0xc1, 0xb4, 0x5f, 0x18, 0xbe, 0xce, 0x61, 0x00, - 0x39, 0x0e, 0x2a, 0x52, 0x30, 0x52, 0x9e, 0xd0, 0x3d, 0x1b, 0x92, 0x62, 0x0e, 0x77, 0x99, 0x94, - 0xa7, 0x81, 0x7f, 0x1a, 0x72, 0x78, 0x06, 0xe9, 0xe6, 0x7b, 0x91, 0x16, 0xe3, 0xab, 0x36, 0x11, - 0x22, 0x87, 0x6b, 0xe5, 0x34, 0xe4, 0x16, 0x8c, 0x86, 0xef, 0x6a, 0x6e, 0x38, 0x76, 0xbb, 0xe5, - 0xe7, 0xf4, 0x2f, 0x6c, 0x6d, 0x16, 0x1e, 0x59, 0x09, 0x70, 0xf5, 0x25, 0x44, 0x4a, 0x2c, 0x62, - 0x05, 0xc9, 0x34, 0x9c, 0x08, 0x61, 0x4c, 0x44, 0xae, 0x48, 0x40, 0x8f, 0xa1, 0x41, 0x25, 0x5e, - 0x4c, 0x9c, 0x32, 0x2b, 0xb5, 0x18, 0xa9, 0x40, 0x9f, 0x9f, 0x41, 0xa5, 0x7f, 0x5b, 0x25, 0x3d, - 0x29, 0x32, 0xa8, 0xf4, 0xc9, 0xb9, 0x53, 0xfc, 0xf2, 0x64, 0x0a, 0x46, 0x34, 0xbb, 0xed, 0xd1, - 0x05, 0x5b, 0x18, 0x18, 0x22, 0xa9, 0x0f, 0xb6, 0xc9, 0x61, 0x98, 0xba, 0x67, 0xd7, 0x1b, 0x1c, - 0x27, 0x87, 0x2b, 0x8d, 0x96, 0x22, 0x73, 0x30, 0x16, 0x7b, 0x81, 0x24, 0x52, 0xfc, 0x60, 0x2e, - 0x0c, 0xe9, 0xf3, 0xe2, 0xcc, 0xe2, 0x45, 0xc9, 0x57, 0xa7, 0x20, 0xb7, 0xe0, 0xe8, 0xa6, 0xe7, - 0x8a, 0x28, 0x6c, 0xa7, 0xaf, 0xae, 0x3b, 0x7a, 0x8b, 0xe9, 0xc7, 0x55, 0xcc, 0xc6, 0x76, 0x47, - 0x6f, 0xb6, 0xa9, 0x3b, 0x7e, 0x97, 0x7d, 0xdd, 0x6f, 0x6f, 0x16, 0x5e, 0xe6, 0x21, 0x77, 0xaf, - 0x36, 0xec, 0xd5, 0x6b, 0x4b, 0x8e, 0xbe, 0x66, 0xf2, 0x7d, 0x96, 0xde, 0xbc, 0xe6, 0xd1, 0x26, - 0xba, 0x53, 0x5e, 0xd3, 0x5b, 0xe6, 0x35, 0xcc, 0x1f, 0x7a, 0x2d, 0xe0, 0xc4, 0x6b, 0x60, 0x2a, - 0xe0, 0xe1, 0x5f, 0xb2, 0x0a, 0x70, 0x1c, 0x99, 0x03, 0x10, 0x9f, 0x5a, 0x6a, 0xb5, 0x44, 0x48, - 0x37, 0xc9, 0x09, 0xd1, 0xc7, 0x70, 0xc5, 0x0e, 0x04, 0xa6, 0xb7, 0xa4, 0x9c, 0x79, 0x9a, 0xc4, - 0x81, 0x69, 0xc1, 0x82, 0x68, 0x91, 0x2f, 0xa6, 0x61, 0x29, 0x40, 0xac, 0x40, 0x25, 0x08, 0x49, - 0x2d, 0x46, 0x16, 0xe1, 0x84, 0xe0, 0x1b, 0xe4, 0xfa, 0x1e, 0x89, 0xce, 0x0a, 0x0a, 0x9a, 0x2b, - 0x6d, 0xd0, 0x46, 0x43, 0x80, 0xe5, 0x3a, 0x94, 0x12, 0x64, 0x1c, 0x86, 0xfd, 0xbf, 0xe7, 0xf4, - 0x55, 0xea, 0xe6, 0x4f, 0xa0, 0xc6, 0x62, 0x5a, 0x33, 0xbf, 0x3c, 0x26, 0x13, 0x92, 0x45, 0x17, - 0x2d, 0x22, 0xf3, 0xe0, 0x5a, 0x3f, 0x9a, 0xc0, 0x43, 0xd5, 0xf9, 0x68, 0x11, 0x52, 0x86, 0xe1, - 0x20, 0xa2, 0xcc, 0xed, 0xdb, 0x95, 0x09, 0x8c, 0x19, 0x27, 0x52, 0x4f, 0x29, 0x39, 0xb0, 0x65, - 0x26, 0x91, 0x32, 0x52, 0x20, 0x61, 0x1e, 0x44, 0x4e, 0x09, 0x24, 0xdc, 0x4a, 0x08, 0x24, 0x5c, - 0x25, 0x1f, 0x86, 0xc1, 0xd2, 0xdd, 0x9a, 0x08, 0x90, 0xec, 0xe6, 0x4f, 0x62, 0xdb, 0x31, 0x24, - 0x32, 0x46, 0x65, 0x16, 0xc1, 0x94, 0xe5, 0xa6, 0xcb, 0xf4, 0x64, 0x12, 0x46, 0x22, 0xd7, 0x13, - 0x6e, 0xfe, 0x14, 0x72, 0xc0, 0x96, 0xeb, 0x88, 0xa9, 0x3b, 0x02, 0x25, 0x0f, 0xaf, 0x68, 0x21, - 0xa6, 0x35, 0x13, 0xa6, 0x8b, 0xf9, 0xf7, 0x35, 0x8a, 0xb1, 0x98, 0x31, 0x02, 0x5d, 0x3f, 0xd7, - 0x1a, 0x43, 0xa0, 0xea, 0x0e, 0xc7, 0xc9, 0x3d, 0xaa, 0x14, 0x23, 0x6f, 0x01, 0xc1, 0x8c, 0xfd, - 0xd4, 0xf0, 0xf7, 0xa6, 0x95, 0x09, 0x37, 0x7f, 0x06, 0xf3, 0x5b, 0x12, 0x35, 0x74, 0x6a, 0x65, - 0x62, 0xfc, 0x92, 0x98, 0x3e, 0x1e, 0xd5, 0x79, 0xa9, 0xba, 0x1f, 0x36, 0xb5, 0x6e, 0x1a, 0x72, - 0x8b, 0x13, 0xb8, 0x92, 0x75, 0x38, 0x5b, 0x75, 0xe8, 0x9a, 0x69, 0xb7, 0x5d, 0x7f, 0xf9, 0xf0, - 0xe7, 0xad, 0xb3, 0xdb, 0xce, 0x5b, 0x8f, 0x8b, 0x8a, 0x4f, 0xb7, 0x1c, 0xba, 0x56, 0xf7, 0x73, - 0x11, 0x46, 0x32, 0x40, 0x75, 0xe2, 0xce, 0xc4, 0x85, 0xf6, 0x89, 0x80, 0x9b, 0xd4, 0xcd, 0xe7, - 0xc3, 0xa9, 0x96, 0x47, 0xfd, 0x36, 0x03, 0x9c, 0x2c, 0x2e, 0xa5, 0x18, 0xd1, 0x80, 0xdc, 0x28, - 0xfb, 0xef, 0x55, 0x4a, 0x8d, 0x86, 0xdd, 0xb6, 0x3c, 0x37, 0x7f, 0x0e, 0x99, 0x15, 0x99, 0x58, - 0x96, 0x1a, 0x41, 0x86, 0xd3, 0xba, 0x2e, 0xf0, 0xb2, 0x58, 0xe2, 0xa5, 0xc9, 0x0c, 0x8c, 0x56, - 0x1d, 0xf4, 0x9e, 0xbb, 0x45, 0x37, 0xb8, 0x1d, 0x8b, 0x81, 0xf0, 0xc4, 0x54, 0xd9, 0xe2, 0x38, - 0x4c, 0x17, 0xd8, 0x42, 0xac, 0xbc, 0xac, 0xa8, 0x25, 0xe5, 0x4c, 0x78, 0x8f, 0xec, 0x2c, 0x13, - 0x1e, 0x85, 0x51, 0xf1, 0xda, 0xe5, 0xbe, 0x47, 0x2d, 0xb6, 0xd4, 0xbb, 0x22, 0xe8, 0x5d, 0x5e, - 0x79, 0x1d, 0x13, 0xe0, 0xf9, 0xd4, 0x21, 0x46, 0x19, 0x0d, 0xc0, 0x72, 0xc3, 0xd4, 0x22, 0xf1, - 0x74, 0x71, 0x17, 0xf7, 0x90, 0x2e, 0xee, 0x45, 0x18, 0xb8, 0x69, 0x9b, 0xfc, 0x79, 0x09, 0x46, - 0xb8, 0x13, 0x69, 0xcc, 0xde, 0xb2, 0x4d, 0xab, 0x8e, 0x39, 0xc1, 0xe4, 0xc8, 0xed, 0x01, 0x29, - 0x99, 0x84, 0x7e, 0x4c, 0x22, 0x57, 0x35, 0x2d, 0x11, 0xc1, 0x2e, 0x30, 0xb7, 0x7c, 0x38, 0x1f, - 0xfd, 0x98, 0x7b, 0xae, 0xde, 0x8a, 0xe4, 0x79, 0x0a, 0x8a, 0x92, 0x8f, 0x42, 0x5e, 0xd1, 0x6b, - 0x3e, 0x30, 0xd9, 0x98, 0x79, 0x0c, 0xc7, 0x4c, 0x2c, 0xdc, 0xb0, 0x4f, 0x30, 0x9e, 0x65, 0x0a, - 0xac, 0x75, 0x2c, 0x4f, 0xae, 0xc3, 0x20, 0x7e, 0x2b, 0x77, 0xe1, 0xc6, 0x08, 0x76, 0xfd, 0x3c, - 0xbb, 0x29, 0x97, 0x0e, 0x87, 0x6b, 0x32, 0x51, 0xf1, 0x0f, 0x52, 0xe1, 0x77, 0x91, 0x82, 0x9f, - 0x4a, 0x8f, 0x9b, 0x62, 0x03, 0x5b, 0x9b, 0x85, 0x5e, 0xfc, 0x1c, 0x91, 0x40, 0x8f, 0x2c, 0xc0, - 0x60, 0xf8, 0xe0, 0xc7, 0xcd, 0xa7, 0xb1, 0xc1, 0x8f, 0xab, 0x72, 0xb8, 0x2a, 0xd1, 0xf0, 0x94, - 0xb5, 0x18, 0x60, 0x58, 0x0f, 0xa1, 0x9a, 0xcc, 0xe6, 0xfc, 0x27, 0x61, 0x54, 0x2d, 0x91, 0x90, - 0x14, 0xf5, 0x79, 0x39, 0x29, 0xaa, 0xec, 0x09, 0x26, 0x6a, 0xb5, 0xa8, 0x21, 0x71, 0x91, 0x93, - 0xa6, 0xbe, 0x04, 0x67, 0x92, 0x89, 0xd8, 0x07, 0x73, 0x93, 0x30, 0x85, 0xe3, 0x0f, 0x3f, 0x18, - 0x4d, 0x42, 0x61, 0x08, 0x16, 0xff, 0x6d, 0x46, 0x5e, 0xad, 0xc9, 0x05, 0xc8, 0xe2, 0xb8, 0x48, - 0x85, 0xe9, 0xd0, 0x30, 0x1f, 0x6d, 0x56, 0x24, 0x84, 0x1c, 0xf0, 0xcf, 0x0f, 0xfd, 0xc0, 0xf2, - 0x23, 0x5b, 0x9b, 0x05, 0x08, 0x53, 0x64, 0x69, 0x21, 0x01, 0xb9, 0x06, 0x50, 0x6d, 0x2f, 0x36, - 0xcd, 0x06, 0x66, 0x29, 0xce, 0x48, 0x81, 0x98, 0x11, 0xca, 0x93, 0x14, 0x4b, 0x24, 0xac, 0x7b, - 0x7d, 0x1f, 0xdf, 0x30, 0x1d, 0x20, 0x76, 0xaf, 0x58, 0xdb, 0x45, 0x6e, 0x5c, 0x89, 0x88, 0x7c, - 0x08, 0x20, 0x5c, 0x3c, 0x84, 0x5d, 0x8e, 0x86, 0x85, 0xbc, 0xd6, 0xc8, 0x86, 0x45, 0x48, 0xcd, - 0x96, 0x59, 0x79, 0xf2, 0xda, 0x10, 0x59, 0x02, 0x71, 0x99, 0x8d, 0xcc, 0x78, 0xf2, 0x74, 0x12, - 0x2d, 0x42, 0xe6, 0x61, 0x2c, 0x36, 0x5f, 0x89, 0xe4, 0x81, 0x8f, 0x6f, 0x6d, 0x16, 0x2e, 0x26, - 0x4c, 0x76, 0xb2, 0x19, 0x17, 0x2b, 0x4b, 0x9e, 0x80, 0xcc, 0x6d, 0xad, 0x22, 0x12, 0x98, 0xf1, - 0xdc, 0x77, 0x91, 0xf4, 0x01, 0x0c, 0x4b, 0x5e, 0x02, 0xe0, 0x39, 0xdb, 0xab, 0xb6, 0xe3, 0xa1, - 0xfd, 0x39, 0xcc, 0xd3, 0xbd, 0xf2, 0x9c, 0xee, 0x75, 0x66, 0xf4, 0xc8, 0x1f, 0x1d, 0x12, 0x17, - 0xff, 0x4a, 0x3a, 0x66, 0x04, 0x31, 0xc1, 0x8b, 0x56, 0x48, 0x9d, 0x8f, 0x82, 0xf7, 0x9b, 0xce, - 0x05, 0x2f, 0x11, 0x91, 0xcb, 0xd0, 0x5f, 0x65, 0x4b, 0x50, 0xc3, 0x6e, 0x0a, 0x55, 0xc0, 0x2c, - 0x16, 0x2d, 0x01, 0xd3, 0x02, 0x2c, 0xb9, 0xce, 0x73, 0x70, 0x5a, 0x4a, 0xe6, 0xd1, 0xb6, 0x80, - 0xa9, 0x29, 0x38, 0x19, 0x8c, 0x95, 0x09, 0x4c, 0xb4, 0x6c, 0x58, 0x26, 0xc1, 0x00, 0x0b, 0xe8, - 0xc2, 0xed, 0x4f, 0xef, 0x76, 0xdb, 0x9f, 0xe2, 0x4f, 0xa6, 0xe2, 0x13, 0x3a, 0x79, 0x3e, 0x9e, - 0xd9, 0x0f, 0xe7, 0xbb, 0x00, 0x28, 0xd7, 0x1a, 0xe4, 0xf8, 0x8b, 0xe4, 0xe8, 0x4b, 0xef, 0x39, - 0x47, 0x5f, 0x66, 0x97, 0x39, 0xfa, 0x8a, 0xff, 0x29, 0xdb, 0x35, 0x0c, 0xc8, 0xa1, 0xe4, 0x72, - 0x79, 0x89, 0x6d, 0xe1, 0x59, 0xed, 0x25, 0x37, 0xb6, 0x11, 0xe5, 0x51, 0x0e, 0xea, 0x3a, 0x1f, - 0x95, 0xae, 0x16, 0xa5, 0x24, 0xaf, 0xc2, 0x90, 0xff, 0x01, 0x98, 0xfb, 0x51, 0xca, 0x59, 0x18, - 0x98, 0x4f, 0x4a, 0x96, 0xc4, 0x48, 0x01, 0xf2, 0x02, 0x0c, 0xa0, 0xf1, 0xdc, 0xd2, 0x1b, 0x7e, - 0x62, 0x50, 0x9e, 0x49, 0xd4, 0x07, 0xca, 0xab, 0x5e, 0x40, 0x49, 0x3e, 0x01, 0x39, 0x91, 0xb0, - 0x3c, 0x87, 0x73, 0xfd, 0xb5, 0x1d, 0xc4, 0x4d, 0xb9, 0x2a, 0x27, 0x2b, 0xe7, 0xdb, 0x61, 0x04, - 0x44, 0xb6, 0xc3, 0x3c, 0x4f, 0xf9, 0x02, 0x9c, 0xac, 0x3a, 0xd4, 0xc0, 0x08, 0x3d, 0x93, 0xf7, - 0x5b, 0x8e, 0x48, 0x25, 0xcf, 0x27, 0x08, 0xb4, 0x86, 0x5a, 0x3e, 0x9a, 0xd9, 0x69, 0x02, 0x2f, - 0x67, 0x27, 0x4c, 0x28, 0xce, 0x4c, 0x64, 0xde, 0x92, 0x5b, 0x74, 0x63, 0xdd, 0x76, 0x0c, 0x9e, - 0x6d, 0x5d, 0x18, 0x0a, 0x42, 0xd0, 0x2b, 0x02, 0x25, 0x9b, 0xc8, 0xd1, 0x42, 0xe7, 0x5f, 0x82, - 0xc1, 0xbd, 0xa6, 0xe9, 0xfe, 0x81, 0x74, 0x87, 0x80, 0x5a, 0x47, 0x33, 0x49, 0xff, 0xb8, 0x32, - 0xdd, 0xc8, 0x76, 0x9d, 0x80, 0x77, 0x6a, 0x7c, 0x30, 0xfd, 0x14, 0xa0, 0x97, 0x07, 0x2d, 0xed, - 0x0d, 0x6d, 0x8b, 0x4f, 0xe1, 0x0b, 0x47, 0x0e, 0x2f, 0xfe, 0x71, 0xba, 0x43, 0xb4, 0xb0, 0x87, - 0x57, 0x66, 0x6c, 0xe1, 0xf1, 0x85, 0x51, 0x99, 0x40, 0xc9, 0x0d, 0x8b, 0x85, 0xc7, 0x07, 0x33, - 0xa3, 0x42, 0x26, 0x22, 0x57, 0x01, 0xaa, 0xba, 0xa3, 0xaf, 0x52, 0x8f, 0xed, 0x8c, 0xf9, 0xd9, - 0x12, 0x5a, 0x21, 0xad, 0x00, 0xaa, 0x49, 0x14, 0xc5, 0xef, 0xca, 0x74, 0x8b, 0xa6, 0x76, 0x2c, - 0xfb, 0xdd, 0xc8, 0xfe, 0x3a, 0x0c, 0x06, 0x92, 0xad, 0x4c, 0xa0, 0xbd, 0x24, 0xca, 0x04, 0xc2, - 0xc7, 0x32, 0x12, 0x11, 0xb9, 0xc2, 0xdb, 0x5a, 0x33, 0xdf, 0xe6, 0x59, 0x95, 0x87, 0x45, 0xbe, - 0x5c, 0xdd, 0xd3, 0xeb, 0xae, 0xf9, 0x36, 0xd5, 0x02, 0x74, 0xf1, 0x9f, 0xa6, 0x13, 0x43, 0xd2, - 0x1d, 0xf7, 0xd1, 0x2e, 0xfa, 0x28, 0x41, 0x88, 0x3c, 0x98, 0xde, 0xb1, 0x10, 0x77, 0x21, 0xc4, - 0x3f, 0x4a, 0x27, 0x86, 0x1e, 0x3c, 0x16, 0xe2, 0x6e, 0x66, 0x8b, 0xa7, 0x61, 0x40, 0xb3, 0xd7, - 0xdd, 0x32, 0xee, 0x89, 0xf8, 0x5c, 0x81, 0x13, 0xb5, 0x63, 0xaf, 0xbb, 0x75, 0xdc, 0xed, 0x68, - 0x21, 0x41, 0xf1, 0x4f, 0xd3, 0x5d, 0x82, 0x33, 0x1e, 0x0b, 0xfe, 0x9d, 0x5c, 0x22, 0x7f, 0x28, - 0x1d, 0x09, 0xfe, 0xf8, 0xf0, 0x0a, 0xfb, 0x1a, 0x40, 0xad, 0xb1, 0x4c, 0x57, 0x75, 0xdc, 0x07, - 0xf7, 0x86, 0x47, 0x16, 0x2e, 0x42, 0xf9, 0x36, 0x58, 0x22, 0x29, 0xfe, 0x70, 0x5a, 0x89, 0x7e, - 0x79, 0x2c, 0xbb, 0x1d, 0xcb, 0x2e, 0xd0, 0x3a, 0x11, 0xd0, 0xf3, 0x58, 0x72, 0x3b, 0x95, 0xdc, - 0xd7, 0xa6, 0x95, 0xd8, 0xa7, 0x0f, 0xad, 0xec, 0xd8, 0x00, 0x8c, 0xc7, 0x64, 0x7d, 0x68, 0x35, - 0xe9, 0x69, 0x18, 0x10, 0x72, 0x08, 0x96, 0x0a, 0x3e, 0xef, 0x73, 0x20, 0x1e, 0xd0, 0x06, 0x04, - 0xc5, 0xbf, 0x96, 0x86, 0x68, 0x4c, 0xda, 0x87, 0x54, 0x87, 0x7e, 0x28, 0x1d, 0x8d, 0xc6, 0xfb, - 0xf0, 0xea, 0xcf, 0x55, 0x80, 0x5a, 0x7b, 0xb1, 0x21, 0xde, 0xbc, 0xf5, 0x4a, 0x27, 0xfc, 0x01, - 0x54, 0x93, 0x28, 0x8a, 0x7f, 0x9e, 0x4e, 0x0c, 0x11, 0xfc, 0xf0, 0x0a, 0xf0, 0x39, 0x3c, 0x15, - 0x6f, 0x58, 0xe1, 0x44, 0x8e, 0x87, 0x90, 0x6c, 0xfc, 0xa9, 0x97, 0x8b, 0x01, 0x21, 0xf9, 0x60, - 0x82, 0xb9, 0x86, 0x57, 0x76, 0xa1, 0xb9, 0x26, 0x1f, 0xe6, 0x4b, 0x86, 0xdb, 0xcf, 0xa7, 0xb7, - 0x8b, 0xa8, 0xfc, 0x30, 0xaf, 0xaa, 0x7d, 0x55, 0x7d, 0x03, 0x33, 0xff, 0xb0, 0x9e, 0x18, 0x1a, - 0x3f, 0xbd, 0xb5, 0x59, 0x18, 0x6b, 0x71, 0x90, 0x7c, 0xc9, 0x2b, 0xa8, 0x8a, 0xff, 0xba, 0x37, - 0x39, 0x9c, 0xef, 0xc3, 0x2b, 0xc2, 0x0b, 0x90, 0xad, 0xea, 0xde, 0xb2, 0xd0, 0x64, 0xbc, 0x0d, - 0x6c, 0xe9, 0xde, 0xb2, 0x86, 0x50, 0x72, 0x05, 0xfa, 0x35, 0x7d, 0x9d, 0x9f, 0x79, 0xf2, 0x9b, - 0x33, 0x3c, 0xd8, 0x71, 0xf4, 0xf5, 0x3a, 0x3f, 0xf7, 0x0c, 0xd0, 0xa4, 0x08, 0xb9, 0x59, 0xea, - 0x2d, 0xdb, 0x86, 0x38, 0xf9, 0x86, 0xad, 0xcd, 0x42, 0x6e, 0x15, 0x21, 0x9a, 0xc0, 0xb0, 0xca, - 0xc6, 0x6d, 0x63, 0x03, 0x6f, 0xbe, 0x86, 0x78, 0x65, 0x8b, 0xb6, 0xb1, 0xa1, 0x21, 0x94, 0x7c, - 0x5d, 0x0a, 0xfa, 0xa6, 0xa9, 0x6e, 0xb0, 0x11, 0x32, 0xd0, 0xcd, 0xbd, 0xe9, 0x8d, 0x83, 0x71, - 0x6f, 0x1a, 0x5b, 0xe6, 0x95, 0xc9, 0x8a, 0x22, 0xea, 0x27, 0x37, 0xa0, 0xbf, 0xac, 0x7b, 0x74, - 0xc9, 0x76, 0x36, 0xd0, 0x61, 0x6b, 0x24, 0xf4, 0xc2, 0x8d, 0xe8, 0x8f, 0x4f, 0xc4, 0x6f, 0xc6, - 0x1a, 0xe2, 0x97, 0x16, 0x14, 0x66, 0x62, 0xe1, 0x37, 0x73, 0xe8, 0xb1, 0x25, 0xc4, 0xc2, 0xaf, - 0xf0, 0x34, 0x81, 0x09, 0x8f, 0x95, 0x87, 0x92, 0x8f, 0x95, 0xd1, 0x7a, 0x44, 0xa7, 0xce, 0xb2, - 0x6d, 0x50, 0xf4, 0x8c, 0x1a, 0x16, 0xd6, 0x23, 0x42, 0xeb, 0x0d, 0xdb, 0x60, 0xd6, 0x63, 0x40, - 0x52, 0xfc, 0xbd, 0x5e, 0x48, 0x0c, 0xfe, 0x79, 0xac, 0xe4, 0xc7, 0x4a, 0x1e, 0x2a, 0xf9, 0x44, - 0x4c, 0xc9, 0xcf, 0xc7, 0xc3, 0xc9, 0x3e, 0xa0, 0x1a, 0xfe, 0xf9, 0x6c, 0x2c, 0x18, 0xf5, 0xc3, - 0xbd, 0xbb, 0x0c, 0xa5, 0xd7, 0xbb, 0xad, 0xf4, 0x82, 0x01, 0x91, 0xdb, 0x76, 0x40, 0xf4, 0xed, - 0x74, 0x40, 0xf4, 0x77, 0x1c, 0x10, 0xa1, 0x82, 0x0c, 0x74, 0x54, 0x90, 0x8a, 0x18, 0x34, 0xd0, - 0x3d, 0x29, 0xf6, 0x85, 0xad, 0xcd, 0xc2, 0x08, 0x1b, 0x4d, 0x89, 0xd9, 0xb0, 0x91, 0x45, 0xf1, - 0x17, 0xb2, 0x5d, 0x22, 0xc8, 0x1f, 0x8a, 0x8e, 0x3c, 0x07, 0x99, 0x52, 0xab, 0x25, 0xf4, 0xe3, - 0xa4, 0x14, 0xbc, 0xbe, 0x43, 0x29, 0x46, 0x4d, 0x3e, 0x04, 0x99, 0xd2, 0xdd, 0x9a, 0x9a, 0x07, - 0xbb, 0x74, 0xb7, 0x26, 0xbe, 0xa4, 0x63, 0xd9, 0xbb, 0x35, 0xf2, 0x4a, 0x98, 0x90, 0x6a, 0xb9, - 0x6d, 0xad, 0x88, 0x8d, 0xa2, 0xf0, 0xeb, 0xf6, 0x3d, 0x79, 0x1a, 0x0c, 0xc5, 0xb6, 0x8b, 0x0a, - 0xad, 0xa2, 0x4d, 0xb9, 0x9d, 0x6b, 0x53, 0xdf, 0xb6, 0xda, 0xd4, 0xbf, 0x53, 0x6d, 0x1a, 0xd8, - 0x81, 0x36, 0xc1, 0xb6, 0xda, 0x34, 0xb8, 0x7f, 0x6d, 0x6a, 0xc1, 0xf9, 0x78, 0xd6, 0x8f, 0x40, - 0x23, 0x34, 0x20, 0x71, 0xac, 0x70, 0x2c, 0xc1, 0xab, 0xff, 0x36, 0xc7, 0xd6, 0xd7, 0x11, 0x5d, - 0x77, 0x19, 0x5e, 0x76, 0x84, 0x8c, 0x97, 0x2e, 0xfe, 0x40, 0xba, 0x73, 0xb2, 0x92, 0xa3, 0x39, - 0xc5, 0x7d, 0x45, 0xa2, 0x94, 0xb2, 0x4a, 0x98, 0x94, 0x8e, 0x52, 0x56, 0xd8, 0x26, 0xc9, 0xec, - 0xfb, 0xd3, 0x9d, 0x32, 0xa8, 0xec, 0x4b, 0x62, 0xef, 0x89, 0x3b, 0xc3, 0xe1, 0x83, 0x10, 0x37, - 0xea, 0x05, 0x37, 0x05, 0x43, 0xb2, 0x10, 0x85, 0x94, 0x76, 0x22, 0xe0, 0x48, 0x39, 0xf2, 0x4a, - 0x90, 0xae, 0x5c, 0xf2, 0x8f, 0x41, 0x4f, 0x37, 0x7f, 0xcc, 0x2a, 0xee, 0x31, 0x32, 0x39, 0x79, - 0x1a, 0x72, 0x53, 0x98, 0xff, 0x53, 0x1e, 0xec, 0x3c, 0x23, 0xa8, 0xec, 0xb5, 0xc2, 0x69, 0x8a, - 0xff, 0x5b, 0x7f, 0xc2, 0xeb, 0xb0, 0x7d, 0x09, 0x4b, 0x52, 0x93, 0xf4, 0x9e, 0xd4, 0xe4, 0x79, - 0xc8, 0xf1, 0x49, 0x45, 0x08, 0x70, 0x44, 0x0e, 0xa1, 0xd5, 0x76, 0x95, 0x62, 0x82, 0x76, 0x9f, - 0x42, 0x7b, 0x11, 0x06, 0xf0, 0x9d, 0x97, 0x74, 0x2c, 0x8b, 0xdb, 0xf2, 0x55, 0x06, 0x54, 0xb7, - 0xf3, 0x21, 0x29, 0x59, 0x03, 0x12, 0x3e, 0x3e, 0x64, 0x2a, 0x48, 0x8d, 0x12, 0xbf, 0x00, 0xeb, - 0xee, 0xbf, 0xfd, 0x94, 0xef, 0x38, 0x6e, 0xfa, 0xa5, 0xf9, 0x9c, 0x40, 0x8d, 0xba, 0xdc, 0x4d, - 0xe8, 0xc8, 0x9d, 0x50, 0x03, 0xd9, 0x80, 0x93, 0x01, 0x74, 0xca, 0xb4, 0x4c, 0x77, 0x19, 0x2b, - 0xee, 0xdb, 0xb6, 0xe2, 0xf7, 0x89, 0x8a, 0x0b, 0x61, 0xc5, 0xf7, 0x44, 0xf9, 0x78, 0xcd, 0x49, - 0x75, 0x90, 0x5b, 0x30, 0x5a, 0x5b, 0xb6, 0x1d, 0x6f, 0x82, 0xba, 0x0d, 0xc7, 0x6c, 0xe1, 0x6b, - 0x7f, 0x3e, 0x9f, 0xa3, 0x1b, 0xb4, 0xcb, 0x70, 0x75, 0x23, 0x44, 0xca, 0x6e, 0xd0, 0x6a, 0x41, - 0x26, 0x77, 0xcd, 0x74, 0x57, 0x66, 0xe8, 0x1a, 0x6d, 0x8a, 0xc9, 0x1e, 0xe5, 0xee, 0x98, 0xee, - 0x4a, 0xbd, 0xc9, 0xa0, 0xb2, 0xdc, 0x03, 0x52, 0xf2, 0x0a, 0xe4, 0xf8, 0x49, 0x94, 0xb0, 0x14, - 0xa4, 0x14, 0x8b, 0x0c, 0xda, 0x41, 0xc5, 0x44, 0x19, 0xf2, 0x89, 0xa4, 0xf7, 0x38, 0x83, 0xd1, - 0x77, 0xfc, 0x31, 0x82, 0x0e, 0x3c, 0x13, 0x9e, 0xe7, 0xc8, 0xa6, 0xdc, 0xd0, 0x1e, 0x4d, 0xb9, - 0xd7, 0x61, 0x38, 0x64, 0x5c, 0xb5, 0x0d, 0xb4, 0x85, 0xa5, 0x37, 0xa0, 0x11, 0x64, 0x07, 0x6e, - 0x51, 0x0e, 0x64, 0x0a, 0xfa, 0x44, 0x56, 0x17, 0xf1, 0x14, 0xe6, 0xd1, 0xe4, 0x8c, 0xa4, 0x9d, - 0xc6, 0xa7, 0x40, 0x47, 0x9c, 0x3c, 0x4f, 0xec, 0xcc, 0xc9, 0xb3, 0xf8, 0x93, 0x29, 0x38, 0xc9, - 0x5a, 0xa3, 0xc8, 0x92, 0xbc, 0x05, 0xc0, 0xc0, 0xc2, 0x2f, 0x2f, 0x85, 0x7e, 0x79, 0xef, 0x93, - 0xbf, 0x51, 0x29, 0x70, 0x35, 0xa4, 0xe6, 0x3e, 0x79, 0x17, 0xfd, 0x87, 0x10, 0x2b, 0xed, 0x45, - 0x5a, 0x8f, 0x39, 0xe7, 0x49, 0xdc, 0xcf, 0x7f, 0x98, 0x3f, 0x31, 0xdb, 0xab, 0x1f, 0xdc, 0xf7, - 0xa5, 0x3b, 0xe6, 0xd0, 0x3a, 0x94, 0xe5, 0x78, 0x1c, 0xfa, 0x7d, 0x5f, 0x45, 0x31, 0x51, 0xc6, - 0xbc, 0xed, 0x3b, 0xd5, 0xed, 0xe3, 0xc9, 0xc7, 0x12, 0x7b, 0x45, 0x2c, 0xc9, 0x8f, 0x74, 0xe9, - 0x07, 0x85, 0x63, 0x12, 0x97, 0x64, 0x81, 0x1d, 0xa2, 0xfd, 0xf2, 0xc0, 0x0b, 0xec, 0x57, 0x53, - 0x1d, 0x73, 0x9d, 0x1d, 0x55, 0x81, 0x15, 0x3f, 0xdb, 0xeb, 0xa7, 0x58, 0xdb, 0xd7, 0x27, 0x3c, - 0x0d, 0x03, 0x22, 0xea, 0x5e, 0xf4, 0x39, 0x82, 0xb8, 0x9d, 0xc0, 0xdb, 0xae, 0x80, 0x80, 0xed, - 0x5c, 0xa4, 0x97, 0x35, 0xd2, 0x73, 0x04, 0xe9, 0x55, 0x8d, 0x26, 0x91, 0xb0, 0xbd, 0xc9, 0xe4, - 0x7d, 0xd3, 0xc3, 0x8d, 0x0e, 0xeb, 0xcb, 0x0c, 0xdf, 0x9b, 0xd0, 0xfb, 0xa6, 0xc7, 0xb7, 0x39, - 0x01, 0x9a, 0xed, 0x3b, 0x84, 0x75, 0xd2, 0x1b, 0xee, 0x3b, 0xf8, 0x8e, 0x28, 0xb0, 0x45, 0x9e, - 0x86, 0x01, 0xe1, 0xe3, 0x2f, 0x3c, 0xe7, 0x44, 0x6b, 0xc5, 0xab, 0x00, 0x6c, 0x6d, 0x40, 0xc0, - 0x38, 0x6a, 0x74, 0x29, 0xf4, 0x15, 0x46, 0x8e, 0x0e, 0x42, 0x34, 0x81, 0x21, 0xd7, 0x61, 0xa4, - 0xe6, 0xe9, 0x96, 0xa1, 0x3b, 0xc6, 0x7c, 0xdb, 0x6b, 0xb5, 0x3d, 0x79, 0x9f, 0xed, 0x7a, 0x86, - 0xdd, 0xf6, 0x34, 0x85, 0x82, 0x3c, 0x03, 0xc3, 0x3e, 0x64, 0xd2, 0x71, 0x6c, 0x47, 0xde, 0x4c, - 0xb9, 0x9e, 0x41, 0x1d, 0x47, 0x8b, 0x12, 0x90, 0x0f, 0xc2, 0x70, 0xc5, 0x0a, 0x82, 0xc8, 0x69, - 0x33, 0x62, 0x6b, 0x85, 0xcf, 0x98, 0xcd, 0x00, 0x51, 0x6f, 0x3b, 0x4d, 0x2d, 0x4a, 0x48, 0x5e, - 0x80, 0xa1, 0x6a, 0x53, 0xf7, 0x98, 0x99, 0x89, 0x26, 0xd4, 0x60, 0xf8, 0xa6, 0xa1, 0x25, 0xe0, - 0xfc, 0x6e, 0x3b, 0x42, 0x26, 0x17, 0x43, 0xab, 0x6d, 0x28, 0xa1, 0x18, 0x33, 0xdb, 0xb4, 0x08, - 0x19, 0xf9, 0x08, 0x9c, 0xf0, 0x7f, 0x8b, 0xb0, 0xb1, 0xe2, 0x99, 0x28, 0xda, 0xba, 0x41, 0xc9, - 0x35, 0x8e, 0xd3, 0x54, 0xe2, 0xe2, 0xef, 0xa4, 0xc4, 0x73, 0x90, 0x40, 0xbf, 0x5e, 0x86, 0x91, - 0x5a, 0x7b, 0x31, 0xb0, 0x4b, 0xfc, 0xa7, 0xf2, 0xc2, 0x9f, 0x5d, 0xc2, 0xf0, 0x8d, 0x72, 0x84, - 0x94, 0x89, 0xcd, 0xd7, 0x77, 0x7c, 0xcd, 0x2c, 0x14, 0x14, 0xc5, 0x16, 0x78, 0xb4, 0xe3, 0x1b, - 0x68, 0x2d, 0x4a, 0xc8, 0x14, 0x35, 0x7c, 0x12, 0x28, 0x2b, 0xaa, 0xf4, 0x8e, 0x50, 0x93, 0x48, - 0x24, 0x5d, 0xc9, 0x76, 0xd2, 0x95, 0xe2, 0x6d, 0xf1, 0xbe, 0xef, 0xce, 0x6c, 0xf0, 0x79, 0x17, - 0x21, 0x7b, 0x67, 0x36, 0xf8, 0x28, 0x3c, 0x76, 0x5b, 0x5b, 0x65, 0xbc, 0x11, 0x4c, 0x9e, 0x80, - 0xdc, 0x9d, 0x59, 0xec, 0x37, 0xde, 0xf2, 0xc1, 0xad, 0xcd, 0x42, 0xdf, 0x9a, 0xe8, 0x31, 0x81, - 0x2a, 0x7e, 0x2e, 0x1b, 0x06, 0x3f, 0xd8, 0xd7, 0x58, 0xae, 0x28, 0xc2, 0x17, 0xf3, 0xd2, 0xe9, - 0x48, 0x20, 0x85, 0x4e, 0x26, 0x4d, 0xb4, 0xdb, 0xe6, 0x63, 0x9f, 0xaa, 0x6e, 0x4d, 0x15, 0xb4, - 0xfa, 0xf6, 0x5f, 0x15, 0x94, 0x3a, 0x11, 0xf4, 0x76, 0x9e, 0x08, 0x5e, 0x86, 0x11, 0xee, 0xb1, - 0xc6, 0xe3, 0x88, 0x79, 0xfe, 0xbe, 0x01, 0x55, 0x86, 0xfa, 0x98, 0x3a, 0xba, 0x6e, 0x69, 0x0a, - 0x69, 0xc2, 0x78, 0xce, 0xed, 0x7e, 0x3c, 0xf7, 0x6d, 0x37, 0x9e, 0x9f, 0x83, 0xfe, 0x52, 0xb5, - 0xc2, 0x89, 0xfb, 0xa5, 0xf7, 0x2a, 0x2d, 0xb3, 0x4e, 0x19, 0x50, 0x36, 0xd5, 0x7c, 0x42, 0xb6, - 0x7f, 0x14, 0x13, 0xdc, 0x80, 0x74, 0x58, 0x84, 0x10, 0x79, 0xff, 0xc8, 0x69, 0x8a, 0x5b, 0xe9, - 0x78, 0x0a, 0xca, 0x87, 0xf7, 0x00, 0xf6, 0x4a, 0xf4, 0x61, 0x00, 0xaa, 0x02, 0x1e, 0x6e, 0xc9, - 0xef, 0x92, 0xf8, 0x19, 0xd7, 0x75, 0xe8, 0xbf, 0x45, 0x37, 0xf8, 0x1b, 0x96, 0x5c, 0x68, 0x45, - 0xaf, 0x08, 0x98, 0xdc, 0x35, 0x3e, 0x5d, 0xf1, 0xc7, 0xd3, 0xf1, 0xe4, 0x9a, 0x0f, 0xaf, 0xb0, - 0x9f, 0x81, 0x3e, 0x14, 0x65, 0xc5, 0x77, 0x5f, 0x40, 0x01, 0xa2, 0xb8, 0xa3, 0xaf, 0xa9, 0x7c, - 0xb2, 0xe2, 0xb7, 0xe5, 0xd4, 0x8c, 0xab, 0x0f, 0xaf, 0xf4, 0x5e, 0x86, 0xc1, 0xb2, 0x6d, 0xb9, - 0x18, 0x86, 0xae, 0xe1, 0x2b, 0x2c, 0x3e, 0x2c, 0x6c, 0x84, 0x60, 0xf9, 0xb8, 0x44, 0xa2, 0xde, - 0x8b, 0xf2, 0xb2, 0xad, 0x3e, 0x8a, 0x1c, 0x17, 0xfa, 0xbe, 0x70, 0xab, 0xbf, 0xc8, 0x80, 0xea, - 0xe1, 0x4c, 0x48, 0x4a, 0x6e, 0x43, 0x7f, 0x79, 0xd9, 0x6c, 0x1a, 0x0e, 0xb5, 0xf0, 0xed, 0x93, - 0xb4, 0x47, 0x8f, 0xf6, 0xe5, 0x55, 0xfc, 0x17, 0x69, 0x79, 0x73, 0x1a, 0xa2, 0x58, 0x24, 0x74, - 0x81, 0x80, 0x9d, 0xff, 0xa6, 0x34, 0x40, 0x58, 0x80, 0x3c, 0x06, 0xe9, 0x60, 0x7d, 0x44, 0x97, - 0xdb, 0x88, 0x06, 0xa5, 0xd1, 0x46, 0x14, 0x63, 0x3b, 0xbd, 0xed, 0xd8, 0xbe, 0x0d, 0x39, 0x7e, - 0x7b, 0x87, 0xaf, 0xe2, 0xa4, 0x28, 0x9b, 0x1d, 0x1b, 0x7c, 0x15, 0xe9, 0xf9, 0x5c, 0x8b, 0x5b, - 0xce, 0xc8, 0x5c, 0xcb, 0x99, 0x9d, 0x6f, 0x40, 0x2f, 0xfe, 0x45, 0x2e, 0x41, 0x16, 0xa5, 0x98, - 0xc2, 0x33, 0x79, 0xb4, 0x33, 0x14, 0xf9, 0x21, 0x9e, 0x75, 0x53, 0xd9, 0xb6, 0x3c, 0xf1, 0xbe, - 0x39, 0x75, 0x79, 0x48, 0xc8, 0x45, 0xc0, 0x22, 0x72, 0x11, 0xb0, 0xe2, 0xcf, 0xa6, 0x13, 0x72, - 0x01, 0x3f, 0xbc, 0xc3, 0xe4, 0x25, 0x00, 0x8c, 0x83, 0xc4, 0xe4, 0xe9, 0x3f, 0x37, 0xc5, 0x51, - 0x82, 0x8c, 0x50, 0x6d, 0x23, 0xe7, 0x0d, 0x21, 0x71, 0xf1, 0xe7, 0x52, 0xb1, 0x04, 0xb2, 0xfb, - 0x92, 0xa3, 0xbc, 0x1d, 0x4b, 0xef, 0x71, 0xff, 0xea, 0xf7, 0x45, 0x66, 0x77, 0x7d, 0x11, 0xfd, - 0x96, 0x03, 0xd8, 0x92, 0x1e, 0xe6, 0xb7, 0xfc, 0x5e, 0x3a, 0x29, 0x9d, 0xee, 0xd1, 0x54, 0xf1, - 0xf0, 0xac, 0x3c, 0xbb, 0x8b, 0xb3, 0xf2, 0x4f, 0xc2, 0x09, 0x25, 0xc9, 0x2c, 0xce, 0xff, 0x52, - 0x64, 0xde, 0xe4, 0x54, 0xb4, 0x9d, 0x23, 0x68, 0x45, 0xc8, 0x8a, 0xff, 0x25, 0xd5, 0x3d, 0xc5, - 0xf0, 0xa1, 0xab, 0x4e, 0x82, 0x00, 0x32, 0x7f, 0x31, 0x02, 0x38, 0x80, 0xf3, 0xaf, 0xa3, 0x2d, - 0x80, 0x07, 0x64, 0xf2, 0x78, 0xa7, 0x05, 0xf0, 0x6d, 0xa9, 0x6d, 0x33, 0x44, 0x1f, 0xb6, 0x0c, - 0x8a, 0xff, 0x32, 0x95, 0x98, 0xc9, 0x79, 0x5f, 0xed, 0x0a, 0x2f, 0x66, 0xd2, 0x7b, 0xb8, 0x98, - 0x99, 0x81, 0x3e, 0xde, 0x06, 0x43, 0xf4, 0xc6, 0x93, 0x5d, 0xd2, 0x49, 0x77, 0xba, 0xf6, 0xf0, - 0x59, 0x14, 0x7f, 0x2a, 0x15, 0x4b, 0x2c, 0x7d, 0x88, 0xdf, 0xb6, 0xa7, 0x6b, 0xcd, 0xe2, 0xef, - 0xa7, 0x93, 0xf3, 0x5a, 0x1f, 0xe2, 0x87, 0x1c, 0xc4, 0x39, 0xfa, 0xde, 0xd6, 0xad, 0x05, 0x18, - 0x89, 0xca, 0x42, 0x2c, 0x5b, 0x8f, 0x26, 0x67, 0xf7, 0xee, 0xd0, 0x0a, 0x85, 0x47, 0xf1, 0x73, - 0xe9, 0x78, 0x4a, 0xee, 0x43, 0x9f, 0x9f, 0xf6, 0x76, 0x09, 0x5e, 0x81, 0x13, 0xe1, 0x97, 0x2c, - 0x98, 0x5e, 0xd3, 0xbf, 0x08, 0xc7, 0xab, 0x59, 0x11, 0x51, 0xad, 0x69, 0xba, 0x5e, 0xdd, 0x63, - 0xc8, 0x48, 0x6c, 0xaf, 0x68, 0x39, 0x45, 0x2a, 0x0f, 0xc8, 0xb2, 0xf5, 0x80, 0x49, 0xe5, 0x01, - 0x59, 0xcb, 0x0e, 0x5d, 0x2a, 0xdf, 0x9d, 0xee, 0x94, 0xb2, 0xfd, 0xd0, 0x65, 0xf3, 0x51, 0xb9, - 0xbf, 0x78, 0xcb, 0x84, 0x94, 0x1e, 0xeb, 0x94, 0x23, 0xbd, 0x03, 0xcf, 0x18, 0x9f, 0xbd, 0x4d, - 0x62, 0x89, 0xc2, 0x7a, 0x40, 0x86, 0xd7, 0xd1, 0x10, 0xd6, 0x03, 0x32, 0xea, 0x1e, 0x3c, 0x61, - 0xfd, 0x48, 0x1a, 0x76, 0x9a, 0xc6, 0xff, 0x58, 0x78, 0xaa, 0xf0, 0x3e, 0x13, 0x99, 0xd9, 0x35, - 0xba, 0x66, 0xd2, 0xf5, 0x43, 0x17, 0xd3, 0x14, 0xe4, 0x78, 0x4b, 0x3a, 0x0b, 0x87, 0xe3, 0x3b, - 0x99, 0x6c, 0xe2, 0x3b, 0x9e, 0x07, 0x71, 0x45, 0xbd, 0x33, 0x91, 0x70, 0xda, 0xe2, 0x9f, 0xa6, - 0x60, 0x18, 0x93, 0xe7, 0xe3, 0xa9, 0xe6, 0x7e, 0xaf, 0xfd, 0xf6, 0x7a, 0x46, 0xb2, 0xb7, 0xd5, - 0xed, 0xc3, 0xfe, 0x69, 0x6d, 0x56, 0x49, 0x77, 0x16, 0x7c, 0xcf, 0x04, 0xf5, 0x74, 0xb3, 0xa9, - 0x96, 0x17, 0x01, 0x9c, 0x7e, 0x3c, 0x0d, 0x63, 0x31, 0x52, 0x72, 0x29, 0x12, 0x32, 0x11, 0xcf, - 0x5d, 0x15, 0x8f, 0x27, 0x1e, 0x3c, 0x71, 0x17, 0x47, 0xc5, 0x97, 0x20, 0x3b, 0xa1, 0x6f, 0xf0, - 0x6f, 0xeb, 0xe5, 0x2c, 0x0d, 0x7d, 0x43, 0x3e, 0x52, 0x44, 0x3c, 0x59, 0x84, 0xd3, 0xc1, 0x15, - 0xe2, 0x82, 0xb9, 0x4a, 0x2b, 0xd6, 0xac, 0xd9, 0x6c, 0x9a, 0xae, 0x70, 0x57, 0x78, 0x7a, 0x6b, - 0xb3, 0x70, 0xd9, 0xb3, 0x3d, 0xbd, 0x59, 0x0f, 0xaf, 0x1e, 0x3d, 0x73, 0x95, 0xd6, 0x4d, 0xab, - 0xbe, 0x8a, 0x94, 0x12, 0xcb, 0x64, 0x56, 0xa4, 0xc2, 0xf3, 0xaa, 0xd7, 0x1a, 0xba, 0x65, 0x51, - 0xa3, 0x62, 0x8d, 0x6f, 0x78, 0x94, 0xbb, 0x39, 0x64, 0xf8, 0x99, 0x27, 0x0f, 0xe4, 0xc3, 0xd1, - 0x8c, 0xf1, 0x22, 0x23, 0xd0, 0x12, 0x0a, 0x15, 0x7f, 0x34, 0x0b, 0x63, 0x35, 0xda, 0x68, 0x3b, - 0xa6, 0xb7, 0xa1, 0xe1, 0xeb, 0x94, 0xa3, 0xa5, 0x3e, 0x7e, 0x4f, 0x67, 0xb7, 0xe9, 0xe9, 0x6b, - 0xd0, 0xe7, 0x7b, 0x20, 0xf0, 0x1b, 0x14, 0x7c, 0x79, 0x28, 0x1c, 0x0f, 0xe4, 0x2b, 0x28, 0x41, - 0x45, 0x9a, 0x70, 0x7e, 0x81, 0x75, 0x53, 0x72, 0x67, 0xe6, 0xf6, 0xd0, 0x99, 0x5d, 0xf8, 0x91, - 0x37, 0xe1, 0x2c, 0x62, 0x13, 0xba, 0xb5, 0x0f, 0xab, 0x42, 0x5b, 0x8f, 0x57, 0x95, 0xdc, 0xb9, - 0x9d, 0xca, 0x93, 0x8f, 0xc2, 0x50, 0x30, 0x40, 0x4c, 0xea, 0x8a, 0xab, 0x99, 0x2e, 0xe3, 0x8c, - 0x87, 0x85, 0x66, 0x60, 0xf4, 0xf7, 0x8f, 0x86, 0x16, 0x8e, 0xf0, 0x2a, 0xfe, 0x4e, 0x0a, 0xce, - 0x4f, 0xde, 0xe7, 0x51, 0x5d, 0x11, 0x51, 0xf3, 0x6c, 0x47, 0x5f, 0xa2, 0x93, 0x96, 0xbe, 0xd8, - 0x3c, 0xfc, 0x95, 0xff, 0xc3, 0xd0, 0x67, 0xf0, 0x8f, 0x12, 0x3a, 0xf5, 0x44, 0xf0, 0x26, 0x30, - 0xa1, 0xd1, 0xe2, 0xfb, 0x35, 0xbf, 0x4c, 0xf1, 0x77, 0x53, 0xf0, 0x48, 0x22, 0xa1, 0xe9, 0xbe, - 0x1b, 0x3e, 0xef, 0x33, 0x99, 0x0e, 0x9f, 0x27, 0x26, 0xd1, 0x2b, 0x30, 0x6a, 0x86, 0x79, 0xd8, - 0xeb, 0x61, 0xac, 0x50, 0xed, 0x84, 0x04, 0xc7, 0xd1, 0xf5, 0x3c, 0x04, 0xce, 0xdb, 0x8e, 0xef, - 0xce, 0xef, 0xd6, 0xdb, 0x8e, 0xc9, 0xc7, 0xa5, 0x76, 0xca, 0x55, 0x7c, 0xfd, 0xdd, 0xdb, 0x8e, - 0xc9, 0x2a, 0xd0, 0xbd, 0x65, 0x6a, 0xe9, 0xf5, 0x75, 0xdb, 0x59, 0x41, 0xbf, 0x1b, 0x3e, 0x38, - 0xb5, 0x13, 0x1c, 0x7e, 0xd7, 0x07, 0x93, 0x27, 0x60, 0x78, 0xa9, 0xd9, 0xa6, 0x41, 0xb4, 0x77, - 0x7e, 0x99, 0xa9, 0x0d, 0x31, 0x60, 0x70, 0x05, 0x74, 0x11, 0x00, 0x89, 0x30, 0xe9, 0x29, 0xbf, - 0xb9, 0xd4, 0x06, 0x18, 0x64, 0x41, 0x74, 0xd7, 0x79, 0xae, 0xd5, 0x5c, 0x48, 0xf5, 0xa6, 0x6d, - 0x2d, 0xd5, 0x3d, 0xea, 0xac, 0x62, 0x43, 0xd1, 0xed, 0x42, 0x3b, 0x83, 0x14, 0x78, 0x37, 0xe4, - 0xce, 0xd8, 0xd6, 0xd2, 0x02, 0x75, 0x56, 0x59, 0x53, 0x9f, 0x06, 0x22, 0x9a, 0xea, 0xe0, 0xa9, - 0x0e, 0xff, 0x38, 0xf4, 0xbb, 0xd0, 0xc4, 0x47, 0xf0, 0xe3, 0x1e, 0xfc, 0xb0, 0x02, 0x0c, 0xf2, - 0x90, 0xd7, 0x5c, 0x68, 0xe8, 0x9c, 0xa5, 0x01, 0x07, 0xa1, 0xbc, 0xce, 0x80, 0xf0, 0x05, 0xe2, - 0xfe, 0x57, 0x9a, 0xf8, 0x55, 0xfc, 0x74, 0x06, 0x08, 0x1e, 0x7a, 0x04, 0x56, 0x03, 0xe6, 0xf4, - 0xdc, 0x8f, 0xa2, 0x85, 0xd3, 0x6a, 0x7a, 0x57, 0xd3, 0xea, 0x09, 0xab, 0xbd, 0x5a, 0xd7, 0x5b, - 0xad, 0xfa, 0x3d, 0xb3, 0x89, 0x6f, 0xe0, 0x71, 0xe1, 0xd3, 0x86, 0xad, 0xf6, 0x6a, 0xa9, 0xd5, - 0x9a, 0xe2, 0x40, 0xf2, 0x14, 0x8c, 0x31, 0x3a, 0xec, 0xa4, 0x80, 0x12, 0xfd, 0x71, 0x34, 0xc6, - 0x00, 0x9d, 0xa7, 0x7c, 0xda, 0x73, 0xd0, 0x2f, 0x78, 0xf2, 0xb5, 0xaa, 0x57, 0xeb, 0xe3, 0xcc, - 0x5c, 0xd6, 0x73, 0x01, 0x1b, 0x3e, 0xb9, 0xf6, 0x6a, 0x03, 0x7e, 0x79, 0xcc, 0x8c, 0x62, 0xb5, - 0x57, 0x79, 0xf8, 0xd2, 0x3e, 0x44, 0x06, 0xbf, 0xc9, 0x25, 0x18, 0x61, 0x5c, 0x02, 0x81, 0xf1, - 0x64, 0x12, 0xbd, 0x9a, 0x02, 0x25, 0xd7, 0xe1, 0x54, 0x04, 0xc2, 0x6d, 0x50, 0xee, 0x3b, 0xd3, - 0xab, 0x25, 0xe2, 0x8a, 0x3f, 0x9c, 0x81, 0x21, 0xd6, 0x1d, 0x6c, 0x7d, 0x3a, 0xa4, 0x8e, 0x38, - 0x0b, 0x7d, 0xb6, 0xb3, 0x54, 0x6f, 0x3b, 0x4d, 0x31, 0xf6, 0x72, 0xb6, 0xb3, 0x74, 0xdb, 0x69, - 0x92, 0xd3, 0x90, 0x63, 0xbd, 0x63, 0x1a, 0x62, 0x88, 0xf5, 0xea, 0xad, 0x56, 0xc5, 0x20, 0x25, - 0xde, 0x21, 0x98, 0x88, 0xa0, 0xde, 0xc0, 0xad, 0x3d, 0xf7, 0xba, 0xe8, 0xe5, 0x2b, 0x5e, 0x0c, - 0x89, 0xfd, 0x84, 0xe9, 0x09, 0xf8, 0x41, 0x80, 0xc2, 0xc2, 0xc0, 0x6d, 0x89, 0xc1, 0xfb, 0x44, - 0x65, 0x21, 0x90, 0x21, 0x0b, 0xbe, 0x89, 0x31, 0xc8, 0x04, 0x90, 0x90, 0x6a, 0xd5, 0x36, 0xcc, - 0x7b, 0x26, 0xe5, 0x4f, 0x70, 0x7b, 0xf9, 0xcd, 0x76, 0x1c, 0xab, 0x8d, 0xfa, 0x4c, 0x66, 0x05, - 0x84, 0xbc, 0xcc, 0x95, 0x90, 0xd3, 0xe1, 0xda, 0xc7, 0xfb, 0x96, 0xdb, 0x69, 0x0a, 0x0a, 0x35, - 0x13, 0xcb, 0xe3, 0x42, 0x58, 0x9c, 0x83, 0x61, 0x74, 0x20, 0xaf, 0xd1, 0x26, 0x6d, 0x78, 0xb6, - 0x43, 0xce, 0x41, 0xe6, 0x96, 0xef, 0x42, 0xce, 0x5f, 0x05, 0xad, 0xd0, 0x0d, 0x8d, 0xc1, 0x48, - 0x31, 0x70, 0x03, 0x48, 0xe3, 0xbd, 0x31, 0x7a, 0x6a, 0xf1, 0xdb, 0x7d, 0xff, 0x4e, 0xbf, 0xf8, - 0xeb, 0x7d, 0x30, 0x5a, 0xab, 0x56, 0xa6, 0xa6, 0x26, 0x6b, 0x77, 0x2a, 0x13, 0x98, 0x3c, 0xd5, - 0x38, 0x14, 0x3b, 0x69, 0x1a, 0xa0, 0x6c, 0x5b, 0x16, 0xc5, 0x64, 0x79, 0x41, 0x7a, 0x9f, 0x30, - 0xa1, 0xb8, 0xc0, 0x74, 0xe0, 0x21, 0x95, 0x25, 0x57, 0xa0, 0x9f, 0x7f, 0x51, 0x65, 0x42, 0xd8, - 0x4f, 0xe8, 0x43, 0xe7, 0xb6, 0xcc, 0x7b, 0xf7, 0xd0, 0xa1, 0x31, 0x40, 0x93, 0x4b, 0xd0, 0x37, - 0x31, 0x57, 0xab, 0x95, 0xe6, 0xfc, 0xab, 0x75, 0x7c, 0x5c, 0x6c, 0x58, 0x6e, 0xdd, 0xd5, 0x2d, - 0x57, 0xf3, 0x91, 0xe4, 0x09, 0xc8, 0x55, 0xaa, 0x48, 0xc6, 0x43, 0x66, 0xa0, 0x83, 0xa2, 0xd9, - 0xe2, 0x54, 0x02, 0x85, 0xf5, 0xde, 0xa9, 0x4c, 0x48, 0xfe, 0x25, 0xbc, 0xde, 0x35, 0xd3, 0xe0, - 0x4e, 0xa4, 0x01, 0x9a, 0xbc, 0x00, 0x43, 0x35, 0xea, 0x98, 0x7a, 0x73, 0xae, 0x8d, 0x5b, 0x4f, - 0x29, 0x04, 0xb7, 0x8b, 0xf0, 0xba, 0x85, 0x08, 0x2d, 0x42, 0x46, 0x2e, 0x40, 0x76, 0xda, 0xb4, - 0xfc, 0xf7, 0xab, 0xf8, 0xc0, 0x71, 0xd9, 0xb4, 0x3c, 0x0d, 0xa1, 0xe4, 0x09, 0xc8, 0xdc, 0x5c, - 0xa8, 0x08, 0x9f, 0x59, 0xe4, 0xf5, 0x96, 0x17, 0x09, 0xe7, 0x7d, 0x73, 0xa1, 0x42, 0x5e, 0x80, - 0x01, 0xb6, 0x28, 0x52, 0xab, 0x41, 0xdd, 0xfc, 0x20, 0x7e, 0x0c, 0xf7, 0xc9, 0xf3, 0x81, 0xb2, - 0x13, 0x4c, 0x40, 0x49, 0x6e, 0xc1, 0xa8, 0x9a, 0x6c, 0x57, 0x38, 0xcb, 0xa2, 0x05, 0xb7, 0x2e, - 0x70, 0x49, 0x51, 0xcc, 0x63, 0x05, 0x89, 0x01, 0x79, 0x15, 0xc6, 0xf6, 0x89, 0x92, 0x1f, 0xed, - 0xe5, 0xad, 0xcd, 0xc2, 0x93, 0x31, 0xa6, 0x75, 0x47, 0x50, 0x49, 0xdc, 0x3b, 0x72, 0x22, 0x1f, - 0x03, 0x28, 0x79, 0x9e, 0x63, 0x2e, 0xb6, 0x99, 0xb9, 0x39, 0xd2, 0xfd, 0x09, 0x66, 0x71, 0x6b, - 0xb3, 0x70, 0x4a, 0x0f, 0xc8, 0x13, 0x1f, 0x62, 0x4a, 0xec, 0xc8, 0xab, 0x30, 0xc4, 0x56, 0x3c, - 0x7f, 0x14, 0x8a, 0x77, 0x28, 0x68, 0x62, 0xb2, 0xb5, 0xb1, 0xee, 0x0a, 0x84, 0x6c, 0x62, 0xca, - 0x05, 0xc8, 0xc7, 0x61, 0x24, 0x32, 0x8e, 0x79, 0xe2, 0x15, 0xc9, 0x0b, 0x35, 0x82, 0xe5, 0xe1, - 0x96, 0xf1, 0x75, 0x49, 0xc0, 0x3a, 0x12, 0x6e, 0x39, 0xca, 0xab, 0xf8, 0xef, 0xd2, 0x70, 0xaa, - 0xd4, 0xf6, 0x96, 0xab, 0x0e, 0x15, 0x0f, 0xa8, 0x0e, 0xe0, 0x84, 0x6f, 0x6f, 0x33, 0xfd, 0x1e, - 0xbd, 0x24, 0x94, 0xf9, 0x20, 0xbb, 0x8f, 0xf9, 0xe0, 0x1e, 0x9c, 0x28, 0x19, 0xab, 0xa6, 0x55, - 0xe2, 0x79, 0x38, 0x67, 0xa7, 0x4a, 0xb8, 0x72, 0x48, 0xa1, 0x34, 0x14, 0xb4, 0xf8, 0x1e, 0x9e, - 0x05, 0x86, 0xa1, 0xea, 0x3a, 0xc7, 0xd5, 0x57, 0xef, 0xe9, 0xf5, 0xc6, 0xb2, 0x6e, 0x2d, 0xb1, - 0xd5, 0x41, 0x29, 0x55, 0xfc, 0x5c, 0x1a, 0x2e, 0xfa, 0xf9, 0x02, 0xa8, 0xc7, 0xb4, 0xd7, 0xb4, - 0x96, 0x22, 0x99, 0x36, 0x1f, 0x42, 0xe9, 0x17, 0x3f, 0x9b, 0x86, 0x0b, 0xea, 0x93, 0xd8, 0x87, - 0x5e, 0x28, 0x7f, 0x94, 0x86, 0x31, 0x6e, 0x97, 0x55, 0x75, 0x6f, 0xb9, 0xcc, 0x35, 0x6a, 0x5f, - 0x92, 0xb8, 0x02, 0xfd, 0x9c, 0x4d, 0xf0, 0x3e, 0x05, 0x17, 0x1f, 0xae, 0xac, 0xb8, 0xe8, 0xf9, - 0x68, 0x32, 0x07, 0xa7, 0x4a, 0xf7, 0xee, 0xd1, 0x86, 0x17, 0xe6, 0x3d, 0x99, 0x0b, 0x13, 0x26, - 0xf0, 0x8c, 0x16, 0x02, 0x1f, 0xe6, 0x13, 0x42, 0x57, 0xfc, 0xc4, 0x72, 0x64, 0x01, 0xce, 0xa8, - 0xf0, 0x1a, 0xdf, 0x01, 0x66, 0xa5, 0x24, 0x17, 0x31, 0x8e, 0xfc, 0x3f, 0xad, 0x43, 0xd9, 0xa4, - 0x56, 0xe2, 0xca, 0xda, 0xdb, 0xad, 0x95, 0xb8, 0xcc, 0x26, 0x96, 0x2b, 0xfe, 0x78, 0x06, 0xa0, - 0xd6, 0xd2, 0x2d, 0x0b, 0xa3, 0x87, 0x3d, 0xbc, 0x0e, 0x85, 0xcf, 0x47, 0xde, 0x0f, 0xed, 0x74, - 0xc8, 0xbc, 0x20, 0xa2, 0xfd, 0x19, 0x6d, 0xc7, 0xf7, 0xb8, 0x0d, 0xa2, 0x8d, 0x21, 0x50, 0x36, - 0x1b, 0x02, 0x4a, 0x52, 0x81, 0x6c, 0xc9, 0x59, 0x72, 0xc5, 0xbb, 0xe0, 0xee, 0x01, 0x10, 0x74, - 0x67, 0x29, 0x79, 0xdd, 0x45, 0x16, 0xc5, 0x6f, 0x4c, 0xc3, 0x39, 0x3e, 0x64, 0x6e, 0x38, 0x7a, - 0x6b, 0xb9, 0x46, 0x3d, 0x0f, 0x37, 0xdc, 0x0f, 0xef, 0x24, 0xf2, 0x85, 0x34, 0x9c, 0xe1, 0x96, - 0xec, 0x14, 0x35, 0x28, 0x3f, 0xb6, 0x38, 0xda, 0x6e, 0x9e, 0xef, 0xb0, 0x70, 0x8e, 0xb6, 0xdf, - 0xe8, 0x01, 0x0a, 0xe7, 0x57, 0xd2, 0x70, 0x26, 0xcc, 0xe0, 0x1a, 0xc9, 0x2a, 0xfe, 0xd0, 0x0b, - 0x67, 0x6f, 0x13, 0x64, 0xa2, 0x48, 0x1f, 0x62, 0x9b, 0x5b, 0x56, 0x85, 0xde, 0x3d, 0xba, 0x07, - 0x26, 0x89, 0xf4, 0x78, 0x08, 0xef, 0x4b, 0x4b, 0x7f, 0x35, 0x0d, 0x67, 0x43, 0x91, 0x8a, 0x3b, - 0xa1, 0xe3, 0x91, 0x7f, 0xf0, 0x32, 0x3d, 0x1e, 0xfa, 0xfb, 0x1a, 0xfa, 0x89, 0x32, 0x3d, 0x1e, - 0xfb, 0xfb, 0xd2, 0xd3, 0xef, 0x49, 0xc3, 0x45, 0x25, 0x6d, 0xbb, 0x66, 0x37, 0x9b, 0x76, 0xdb, - 0x5b, 0x70, 0xcc, 0xa5, 0xa5, 0x43, 0x7a, 0x64, 0x75, 0x70, 0xc7, 0xbe, 0x67, 0x20, 0x27, 0x2e, - 0x5a, 0x30, 0xd1, 0xb8, 0x26, 0x7e, 0xed, 0x51, 0x5a, 0xff, 0x20, 0x0d, 0x85, 0x64, 0x69, 0x4d, - 0xd9, 0x4e, 0x83, 0x4e, 0xd8, 0x16, 0x3d, 0x96, 0x97, 0x24, 0xaf, 0xef, 0x4d, 0xc3, 0xa3, 0xc9, - 0xf2, 0x62, 0xff, 0x2d, 0xea, 0x8d, 0x95, 0x63, 0x71, 0x49, 0xe2, 0xfa, 0xe5, 0x34, 0x9c, 0x62, - 0x7f, 0x9a, 0x8d, 0x69, 0xdb, 0xf5, 0x58, 0x53, 0x0f, 0x60, 0x15, 0xde, 0xdb, 0x8a, 0x71, 0x10, - 0xee, 0xf4, 0x7e, 0xf7, 0x64, 0xf7, 0xd5, 0x3d, 0xbd, 0xfb, 0xd8, 0xd2, 0xc4, 0x05, 0x7a, 0x68, - 0x4b, 0xf0, 0xbb, 0x55, 0xa0, 0x07, 0xb0, 0xfe, 0x3e, 0xcc, 0x02, 0xfd, 0x1b, 0x19, 0x18, 0x2d, - 0x3b, 0xf6, 0xba, 0x75, 0x93, 0xae, 0xd3, 0xe6, 0xa1, 0x0d, 0xf7, 0x07, 0xc2, 0x40, 0x74, 0xf6, - 0x68, 0x20, 0xfa, 0xe5, 0xc8, 0xab, 0x70, 0x22, 0x94, 0xa5, 0x1c, 0x32, 0x1b, 0xaf, 0xf2, 0x1b, - 0x0c, 0x55, 0x7f, 0x8b, 0xe1, 0x44, 0x6c, 0x57, 0x95, 0xba, 0xf8, 0xa7, 0x91, 0xde, 0x78, 0xb8, - 0xcd, 0xf5, 0x7d, 0xf7, 0xc6, 0x6d, 0x38, 0x53, 0x6e, 0x3b, 0x0e, 0xb5, 0xbc, 0xe4, 0x4e, 0xc1, - 0x9b, 0xb4, 0x06, 0xa7, 0xa8, 0xc7, 0x3b, 0xa7, 0x43, 0x61, 0xc6, 0x56, 0x3c, 0xa5, 0x53, 0xd9, - 0xf6, 0x85, 0x6c, 0xdb, 0x9c, 0x22, 0x89, 0x6d, 0x72, 0xe1, 0xe2, 0xcf, 0xa7, 0xe5, 0xae, 0x3f, - 0xb4, 0x59, 0xed, 0x5d, 0xd1, 0xf5, 0xc5, 0x4f, 0x67, 0x60, 0x84, 0x35, 0x6b, 0x41, 0x77, 0x57, - 0x8e, 0x4d, 0x98, 0xfd, 0x2c, 0x10, 0xec, 0x2b, 0x7c, 0x49, 0x8a, 0x08, 0xae, 0x79, 0xb9, 0x15, - 0x0c, 0xde, 0xe9, 0x2b, 0x7c, 0x7c, 0xf1, 0xfb, 0xb2, 0x61, 0x77, 0x1c, 0x1b, 0x40, 0x87, 0xdd, - 0x1d, 0x64, 0x1e, 0x4e, 0x89, 0xb9, 0xcd, 0x07, 0xf1, 0x48, 0x5d, 0x7d, 0x52, 0x0a, 0x76, 0x31, - 0x2d, 0xb6, 0x5d, 0xea, 0xd4, 0x3d, 0xdd, 0x5d, 0x11, 0x11, 0xbb, 0x12, 0x0b, 0x32, 0x86, 0x62, - 0x56, 0x8b, 0x32, 0xec, 0x0f, 0x19, 0xfa, 0x13, 0x62, 0x8c, 0x61, 0x52, 0xc1, 0xe2, 0x0f, 0xa5, - 0x60, 0x54, 0xfd, 0x1c, 0x72, 0x15, 0xfa, 0xd9, 0xef, 0x20, 0xc6, 0x8b, 0xf0, 0x40, 0x0f, 0x39, - 0x72, 0x77, 0x26, 0x9f, 0x86, 0xbc, 0x08, 0x03, 0xe8, 0x39, 0x86, 0x05, 0xd2, 0x61, 0x68, 0x9d, - 0xb0, 0x80, 0xc9, 0xd0, 0xbc, 0x58, 0x48, 0x4a, 0x5e, 0x86, 0xc1, 0x4a, 0xe8, 0x72, 0x2b, 0x2e, - 0xa0, 0xd1, 0xd3, 0x5f, 0x2a, 0x19, 0x12, 0x68, 0x32, 0x75, 0xf1, 0x4b, 0xe9, 0x50, 0xd5, 0x8f, - 0x4d, 0xd3, 0x7d, 0x99, 0xa6, 0x3f, 0x90, 0x81, 0xe1, 0xb2, 0x6d, 0x79, 0x7a, 0xc3, 0x3b, 0x3e, - 0x0c, 0xde, 0xcf, 0x21, 0x1b, 0x29, 0x40, 0xef, 0xe4, 0xaa, 0x6e, 0x36, 0x85, 0xe1, 0x83, 0x91, - 0x0e, 0x29, 0x03, 0x68, 0x1c, 0x4e, 0x6e, 0x60, 0xd8, 0x2b, 0x26, 0xe9, 0xc0, 0x4f, 0x70, 0x24, - 0xcc, 0xc5, 0x20, 0xa1, 0x78, 0x14, 0xa8, 0x06, 0x07, 0xf0, 0x91, 0x23, 0x97, 0x94, 0xfb, 0xec, - 0xf8, 0x60, 0xf4, 0x88, 0xf4, 0xd9, 0xe7, 0x33, 0x70, 0x46, 0xf5, 0x57, 0x3c, 0x1e, 0x70, 0xa2, - 0xf3, 0xfe, 0x12, 0x9c, 0x52, 0x65, 0x33, 0xc1, 0xa4, 0xd1, 0xdb, 0xdd, 0x77, 0xe4, 0xea, 0xd6, - 0x66, 0xe1, 0xb1, 0xb8, 0xab, 0x28, 0xab, 0x2c, 0xd1, 0x9b, 0x24, 0xb1, 0x92, 0xc4, 0x9e, 0x79, - 0x40, 0x1e, 0x45, 0x3f, 0xe4, 0x3d, 0xf3, 0x85, 0x74, 0xbc, 0x67, 0x8e, 0x27, 0x3c, 0xb1, 0x70, - 0xff, 0x62, 0x1a, 0x9e, 0x54, 0x85, 0xf3, 0xc6, 0x0b, 0xcf, 0xbc, 0xa4, 0x51, 0x3f, 0x38, 0xf2, - 0xf1, 0xf4, 0x22, 0x94, 0x18, 0x23, 0x17, 0xeb, 0x6e, 0xf0, 0x50, 0x52, 0x44, 0x2e, 0x66, 0x10, - 0x4d, 0x60, 0x76, 0x20, 0xce, 0xe3, 0x39, 0x61, 0x17, 0xe2, 0xfc, 0xae, 0x6d, 0xc5, 0x79, 0x3c, - 0x90, 0x7d, 0x77, 0xb5, 0x2c, 0xc0, 0x0d, 0xd3, 0x13, 0x21, 0xe4, 0x8f, 0xf8, 0x55, 0x99, 0xe4, - 0xe7, 0x9a, 0xdd, 0x93, 0x9f, 0x6b, 0x18, 0x1f, 0xaa, 0x77, 0x0f, 0xf1, 0xa1, 0x5e, 0x85, 0x3e, - 0x21, 0x47, 0xb1, 0x6f, 0x3f, 0x1b, 0x7e, 0x05, 0x82, 0x3b, 0x55, 0xef, 0x4b, 0xff, 0x3d, 0xd0, - 0xe7, 0xf2, 0x98, 0x69, 0x62, 0x5f, 0x8d, 0xcf, 0x7d, 0x04, 0x48, 0xf3, 0xff, 0x20, 0x17, 0x00, - 0xd3, 0x8b, 0xc9, 0xaf, 0x71, 0x78, 0xba, 0x31, 0xf6, 0x2f, 0xa9, 0x40, 0x9f, 0x78, 0x35, 0x90, - 0x07, 0x7c, 0xd9, 0x11, 0xa8, 0x65, 0xd8, 0xcf, 0xfc, 0xf1, 0x00, 0x3f, 0xb3, 0x16, 0xc4, 0xf2, - 0x9b, 0x6d, 0x01, 0x2a, 0xfe, 0x54, 0x0a, 0x46, 0xd5, 0x42, 0xe4, 0x69, 0xc8, 0xf1, 0xbf, 0xc4, - 0x0e, 0x1d, 0x43, 0xb7, 0xf2, 0x12, 0x72, 0xe8, 0x56, 0x41, 0xfd, 0x02, 0x0c, 0x68, 0xfe, 0x53, - 0x10, 0xb1, 0x43, 0x47, 0xff, 0xdd, 0xe0, 0x7d, 0x48, 0x24, 0xcd, 0x8d, 0x0f, 0x24, 0x4f, 0x40, - 0x66, 0xbe, 0x69, 0x88, 0x8d, 0x39, 0x3e, 0x29, 0xb2, 0x9b, 0x72, 0x5c, 0x5a, 0x86, 0x65, 0x44, - 0x73, 0x74, 0x5d, 0x38, 0x7b, 0x23, 0x91, 0x45, 0xd7, 0x65, 0xa2, 0x39, 0xba, 0x5e, 0xfc, 0xa5, - 0x94, 0xef, 0xbe, 0x3b, 0x63, 0xba, 0x5e, 0xc5, 0x5a, 0xd3, 0x9b, 0x66, 0xd0, 0x11, 0xe4, 0x06, - 0x8c, 0x84, 0x48, 0x29, 0xc4, 0x41, 0x2c, 0x14, 0x10, 0x3e, 0x82, 0x7f, 0x4c, 0x7a, 0xf8, 0x12, - 0x2d, 0x46, 0x2e, 0x49, 0xca, 0x2f, 0x9d, 0x5a, 0xc8, 0xef, 0xe6, 0x85, 0x2b, 0xf6, 0xd0, 0xac, - 0xe9, 0xba, 0xa6, 0xb5, 0xc4, 0x9f, 0x5f, 0x66, 0xf0, 0x25, 0x14, 0x9e, 0x9f, 0xac, 0x72, 0x78, - 0xdd, 0x61, 0x08, 0xf9, 0xfd, 0x8e, 0x5c, 0xa0, 0xf8, 0xe7, 0x29, 0x38, 0xcf, 0x38, 0x61, 0x50, - 0xd2, 0xd8, 0x87, 0xed, 0x6b, 0x00, 0xaf, 0x76, 0x91, 0x94, 0x18, 0xd5, 0x8f, 0xc7, 0xe3, 0x70, - 0x28, 0x84, 0x0a, 0xf7, 0x2e, 0xb2, 0xdf, 0x5b, 0x5c, 0xb8, 0x5f, 0x4c, 0xe1, 0xf5, 0xe0, 0x62, - 0x93, 0xde, 0x9e, 0xab, 0xbc, 0x71, 0x40, 0x17, 0xd8, 0x7b, 0x9d, 0xba, 0x5e, 0x83, 0x51, 0x17, - 0xdb, 0x52, 0x6f, 0x5b, 0xe6, 0x7d, 0x3c, 0xf9, 0x12, 0x1f, 0x73, 0x46, 0xfa, 0x18, 0xa9, 0xad, - 0xda, 0x08, 0xa7, 0xbf, 0x6d, 0x99, 0xf7, 0x31, 0x26, 0xeb, 0x47, 0x30, 0x1e, 0xbe, 0x44, 0x41, - 0xce, 0x43, 0xbf, 0x9f, 0x51, 0x48, 0xe4, 0xe7, 0x09, 0x7e, 0x93, 0x51, 0xc8, 0xb4, 0x4d, 0x03, - 0x9b, 0xd9, 0xab, 0xb1, 0x3f, 0x8b, 0xbf, 0x91, 0x81, 0xb1, 0xd2, 0xdd, 0x5a, 0xa5, 0x1c, 0xbc, - 0x62, 0x10, 0xef, 0x6a, 0x57, 0x77, 0x29, 0x0b, 0x9f, 0x9e, 0x94, 0x61, 0x84, 0xc7, 0x45, 0x10, - 0x49, 0x3b, 0xf8, 0xb9, 0x54, 0x2f, 0x7f, 0x4d, 0x11, 0xc5, 0x48, 0x4a, 0x3a, 0x8c, 0x18, 0x91, - 0xdb, 0xc3, 0x25, 0x0d, 0x38, 0x17, 0x21, 0xad, 0xeb, 0x41, 0xd8, 0x39, 0x3f, 0xe4, 0xc7, 0x7b, - 0xb7, 0x36, 0x0b, 0x4f, 0x74, 0x24, 0x92, 0x58, 0x9f, 0x95, 0x59, 0x87, 0xe1, 0xeb, 0x5c, 0x72, - 0x0b, 0xc6, 0x78, 0x79, 0x3c, 0xb4, 0x0b, 0x9c, 0x24, 0x18, 0x73, 0x29, 0xbc, 0x83, 0x84, 0x94, - 0x43, 0x79, 0x21, 0x92, 0x09, 0x5c, 0xbc, 0x89, 0xbe, 0x0b, 0xa7, 0x39, 0x7d, 0x8b, 0x3a, 0x38, - 0x12, 0x6d, 0xab, 0xee, 0x52, 0x4f, 0x3c, 0xad, 0x1e, 0x7f, 0x62, 0x6b, 0xb3, 0x50, 0x48, 0x24, - 0x90, 0x98, 0x9e, 0x44, 0x82, 0x6a, 0x80, 0xaf, 0x51, 0x4f, 0xf6, 0xd3, 0xc8, 0xed, 0x42, 0xcd, - 0xbf, 0x35, 0x0d, 0x67, 0xa7, 0xa9, 0xde, 0xf4, 0x96, 0xcb, 0xcb, 0xb4, 0xb1, 0x72, 0xec, 0x2a, - 0x1d, 0xb1, 0x5a, 0x12, 0xa5, 0x73, 0x6c, 0x22, 0x77, 0x93, 0xce, 0xb1, 0xc5, 0x2b, 0xa4, 0xf3, - 0xbd, 0x69, 0xb8, 0x9c, 0xb4, 0x39, 0xc0, 0xdb, 0x01, 0x67, 0x7e, 0x8d, 0x3a, 0x8e, 0x69, 0xd0, - 0x43, 0x5c, 0x54, 0x0e, 0xce, 0x1e, 0x96, 0x3b, 0x2c, 0xbb, 0x47, 0x8f, 0xd8, 0x9d, 0x89, 0xeb, - 0x10, 0x93, 0x75, 0x3d, 0x58, 0xe2, 0xfa, 0x96, 0x34, 0x9c, 0xaa, 0x99, 0x4b, 0xae, 0x67, 0x3b, - 0xb4, 0x8a, 0x01, 0x4a, 0x8e, 0x35, 0xa9, 0xa3, 0x68, 0x0e, 0x31, 0x27, 0xde, 0x83, 0x2e, 0x9a, - 0xe3, 0x01, 0x25, 0x44, 0xf3, 0x87, 0x59, 0x38, 0x31, 0x5b, 0xae, 0xfa, 0xa9, 0x7a, 0x3d, 0xdd, - 0x39, 0xa2, 0x19, 0x0b, 0xc2, 0xb3, 0x85, 0xec, 0x1e, 0xce, 0x16, 0x0e, 0xce, 0xbd, 0x40, 0x24, - 0x63, 0xcf, 0xed, 0x2a, 0x19, 0xfb, 0x93, 0x30, 0xb2, 0xda, 0x68, 0xd5, 0xfd, 0xa0, 0x54, 0xa6, - 0x21, 0xc2, 0x41, 0x0d, 0xad, 0x36, 0xfc, 0x44, 0xf3, 0x15, 0x83, 0x14, 0x60, 0xb0, 0xd1, 0x34, - 0xa9, 0xe5, 0xd5, 0x4d, 0xeb, 0x9e, 0x2d, 0x42, 0x40, 0x01, 0x07, 0x55, 0xac, 0x7b, 0x36, 0x23, - 0x70, 0xf1, 0x7b, 0x38, 0x01, 0x8f, 0xf7, 0x04, 0x1c, 0x84, 0x04, 0x57, 0x60, 0x14, 0x4f, 0xf3, - 0x1b, 0x76, 0xd3, 0xcf, 0x62, 0x27, 0xc2, 0x3d, 0x9d, 0xf0, 0xe1, 0x7e, 0x40, 0xb9, 0xa7, 0x60, - 0xcc, 0xb4, 0x96, 0x1c, 0xb6, 0x43, 0xd7, 0xdb, 0x1e, 0x4f, 0xa4, 0x23, 0xc2, 0x3f, 0x9d, 0x10, - 0x88, 0x52, 0xdb, 0xe3, 0xa9, 0x74, 0x2e, 0xc3, 0x28, 0x55, 0x49, 0x31, 0x8a, 0x88, 0x36, 0x42, - 0x23, 0x94, 0xc5, 0x9f, 0xce, 0xc2, 0x70, 0xa8, 0x6e, 0x93, 0x87, 0x74, 0x24, 0xf6, 0x70, 0x2b, - 0x5b, 0xb8, 0x63, 0xea, 0xdb, 0xc5, 0x6d, 0xea, 0xd7, 0xa5, 0xa0, 0x6f, 0x99, 0xea, 0x06, 0x75, - 0x78, 0xc8, 0xaa, 0xc1, 0xeb, 0xa7, 0xaf, 0xae, 0x3b, 0x7a, 0xab, 0x45, 0x1d, 0x11, 0xd4, 0x84, - 0x47, 0x1e, 0x1a, 0x7f, 0x83, 0x15, 0xff, 0xed, 0xcd, 0xc2, 0xcb, 0x4b, 0xa6, 0xb7, 0xdc, 0x5e, - 0xbc, 0xda, 0xb0, 0x57, 0xaf, 0x2d, 0x39, 0xfa, 0x9a, 0xe9, 0xe1, 0xd1, 0xb0, 0xde, 0xbc, 0xe6, - 0xd1, 0x26, 0x86, 0x6e, 0xbc, 0xa6, 0xb7, 0xcc, 0x6b, 0x98, 0xe9, 0xe6, 0x5a, 0xc0, 0x69, 0xc1, - 0xd1, 0x4d, 0xcf, 0xdd, 0xda, 0x2c, 0x8c, 0x89, 0xca, 0xe4, 0x83, 0x33, 0x01, 0x2a, 0xfe, 0x6a, - 0x0a, 0xc6, 0x66, 0xcb, 0xd5, 0x9b, 0xb5, 0xf9, 0x39, 0xad, 0x5a, 0x9e, 0xa5, 0xae, 0xab, 0x2f, - 0x51, 0xf2, 0x1e, 0xe8, 0x13, 0x10, 0x71, 0xca, 0x84, 0xc7, 0x7b, 0x6f, 0xb9, 0xb6, 0xe5, 0xb4, - 0x1a, 0x9a, 0x8f, 0x13, 0x19, 0x99, 0xd2, 0x5d, 0x32, 0x32, 0x15, 0x21, 0xb7, 0x4a, 0xbd, 0x65, - 0xdb, 0x3f, 0x20, 0xc3, 0x33, 0x70, 0x0e, 0xd1, 0xc4, 0xff, 0x64, 0x1e, 0x72, 0x2d, 0xdd, 0xd1, - 0x57, 0xdd, 0xed, 0x6e, 0xcb, 0x1e, 0xc5, 0xd4, 0x91, 0x48, 0x9a, 0x78, 0x3b, 0x26, 0xd8, 0x14, - 0xbf, 0x31, 0x8b, 0xdf, 0x14, 0x84, 0xd4, 0xf8, 0x54, 0x9b, 0xf2, 0x78, 0xba, 0x7b, 0x3e, 0x69, - 0x78, 0x11, 0xb2, 0xed, 0x5d, 0x8e, 0x8e, 0xb6, 0x18, 0x1d, 0xee, 0x9e, 0x46, 0x87, 0x28, 0xe5, - 0x6b, 0x65, 0x76, 0xb7, 0x5a, 0xe9, 0xee, 0xe2, 0x8e, 0x9f, 0xd3, 0x92, 0x39, 0xe8, 0x5b, 0xe5, - 0xdd, 0x2f, 0x06, 0x41, 0x10, 0x28, 0x32, 0xa6, 0x1f, 0xe3, 0xe7, 0x44, 0x4a, 0xe7, 0x31, 0x51, - 0x42, 0xd6, 0x2c, 0x01, 0x8a, 0x68, 0x79, 0xdf, 0x21, 0x6b, 0xf9, 0xdf, 0xcc, 0xc2, 0x99, 0x50, - 0x23, 0xe6, 0x6c, 0xcf, 0xbc, 0x67, 0xf2, 0xeb, 0x95, 0x87, 0x48, 0x2d, 0xa4, 0x0e, 0xee, 0x3d, - 0x88, 0x0e, 0x0e, 0xd5, 0x2c, 0xb7, 0x0b, 0x35, 0x7b, 0x90, 0xd4, 0xe2, 0x67, 0x33, 0x70, 0x2e, - 0x54, 0x8b, 0x19, 0x4c, 0x9d, 0x57, 0xab, 0x4d, 0xd6, 0x3c, 0x87, 0xea, 0xab, 0x47, 0x56, 0x33, - 0xf4, 0x5d, 0x69, 0x86, 0xbe, 0xe7, 0x09, 0x43, 0xee, 0xc9, 0xdc, 0x21, 0xf7, 0xe4, 0x17, 0xb3, - 0x70, 0x21, 0xec, 0x49, 0x71, 0x7e, 0x3f, 0xbd, 0xb0, 0x50, 0x3d, 0xea, 0xb3, 0xff, 0xee, 0x3b, - 0xd3, 0xbf, 0x73, 0xeb, 0x4d, 0xbc, 0x73, 0x0b, 0x17, 0xe4, 0x5c, 0xc7, 0x05, 0xf9, 0x29, 0x18, - 0x70, 0xf4, 0x75, 0xfe, 0x44, 0x40, 0x0e, 0xd3, 0x17, 0x00, 0xb5, 0x7e, 0x47, 0x5f, 0xe7, 0x0f, - 0x10, 0x2e, 0x40, 0x76, 0xd1, 0x36, 0x36, 0xd0, 0x8e, 0x19, 0xe2, 0xb5, 0xb1, 0xdf, 0x1a, 0xfe, - 0x1b, 0x51, 0x91, 0x81, 0x43, 0x56, 0x91, 0xdf, 0xc9, 0xc0, 0xa9, 0x71, 0xbb, 0x6d, 0x19, 0xb7, - 0xe8, 0x46, 0x4b, 0x37, 0x1d, 0x8d, 0x36, 0xec, 0x35, 0xf6, 0x09, 0x7f, 0xf1, 0x2e, 0xb1, 0x07, - 0xb7, 0x6f, 0x7d, 0x1a, 0x06, 0x16, 0xec, 0x15, 0x6a, 0x49, 0x91, 0xb0, 0x31, 0x8d, 0xb9, 0xc7, - 0x80, 0x3c, 0x22, 0x55, 0x48, 0x40, 0x9e, 0x81, 0xbe, 0x71, 0x9b, 0x5f, 0x1e, 0x4a, 0xe9, 0x58, - 0x17, 0x6d, 0x71, 0x69, 0x28, 0x09, 0x4d, 0x90, 0x91, 0x17, 0x61, 0xa0, 0xda, 0x5e, 0x6c, 0x9a, - 0x8d, 0x5b, 0xd4, 0x7f, 0xa9, 0x82, 0x6e, 0xcb, 0x2d, 0x04, 0xd6, 0x57, 0xe8, 0x46, 0x24, 0xaa, - 0x91, 0x4f, 0xca, 0xf3, 0x6d, 0x73, 0xf9, 0x96, 0xed, 0xb6, 0xe5, 0xa1, 0x1a, 0x0d, 0xfb, 0xf9, - 0xb6, 0x39, 0xa2, 0x8e, 0xd7, 0x24, 0x5a, 0x94, 0x90, 0xbc, 0x00, 0x43, 0x3e, 0x60, 0xd6, 0x36, - 0xa8, 0x1c, 0xf7, 0x31, 0x28, 0xb8, 0x6a, 0x1b, 0x54, 0x8b, 0x90, 0x15, 0x7f, 0x46, 0xed, 0x5d, - 0xdb, 0x0b, 0xd6, 0xf7, 0xe3, 0xde, 0xed, 0xd0, 0xbb, 0xf3, 0x30, 0x56, 0x75, 0xe8, 0x9a, 0x69, - 0xb7, 0x5d, 0xb5, 0x97, 0x1f, 0xdf, 0xda, 0x2c, 0x5c, 0x6c, 0x09, 0x64, 0x3d, 0xb1, 0xbb, 0xe3, - 0x65, 0xc9, 0x6b, 0x30, 0x34, 0x47, 0xd7, 0x43, 0x5e, 0x7d, 0x61, 0x74, 0x33, 0x8b, 0xae, 0x27, - 0xb3, 0x89, 0x94, 0x28, 0xfe, 0x4c, 0x1a, 0xde, 0x2b, 0xf7, 0xe3, 0x4d, 0xdb, 0xe4, 0xf9, 0xb8, - 0xef, 0x50, 0x27, 0x30, 0xda, 0xa6, 0x74, 0xb3, 0xb9, 0xcf, 0x60, 0x70, 0xef, 0xf2, 0xae, 0x2d, - 0x7e, 0x39, 0x0d, 0x83, 0xb5, 0x72, 0x65, 0xd6, 0x5f, 0xff, 0xb6, 0x4f, 0x9e, 0x3b, 0x0e, 0xc3, - 0x3c, 0xae, 0x5c, 0xc9, 0x30, 0x1c, 0xea, 0xba, 0x62, 0x5f, 0x87, 0x9d, 0x27, 0x62, 0xc7, 0xe9, - 0x1c, 0x23, 0x5f, 0xa6, 0x46, 0x8a, 0xb0, 0xe9, 0x82, 0xad, 0x8a, 0xf8, 0xb6, 0x5d, 0xec, 0xf8, - 0xc2, 0x57, 0x0e, 0x3a, 0x83, 0xca, 0xd3, 0x45, 0x40, 0x4a, 0x9e, 0x86, 0xdc, 0x2c, 0x5f, 0x95, - 0xb2, 0xa1, 0xa7, 0x06, 0x5f, 0x8d, 0x64, 0x4f, 0x0d, 0x4e, 0x43, 0x2e, 0x41, 0xb6, 0x1a, 0xae, - 0x70, 0x38, 0xa7, 0xb0, 0xb5, 0x4d, 0xf6, 0x60, 0xa8, 0x72, 0xff, 0x92, 0xec, 0x38, 0x5b, 0x9b, - 0x72, 0x3b, 0x08, 0xad, 0xc6, 0x96, 0xab, 0xe4, 0xd0, 0x6a, 0x8c, 0x05, 0x39, 0xe5, 0xa7, 0x8b, - 0xe0, 0x87, 0x49, 0x22, 0x05, 0xc5, 0x06, 0x0c, 0x71, 0x19, 0xbb, 0x2d, 0xdb, 0x72, 0x29, 0x79, - 0x14, 0x80, 0x2b, 0x0a, 0x26, 0xa7, 0xc7, 0xd4, 0xbf, 0x9a, 0x04, 0x09, 0x1a, 0x94, 0xde, 0x77, - 0x83, 0x8a, 0x7f, 0x37, 0x0d, 0x23, 0xac, 0xee, 0xb2, 0xbd, 0xba, 0x6a, 0x5b, 0x13, 0x4c, 0xa5, - 0x27, 0xa0, 0x4f, 0xf4, 0xb6, 0xd0, 0xcc, 0xc0, 0x62, 0x90, 0x14, 0x81, 0x7b, 0xd2, 0x38, 0xfc, - 0x87, 0xac, 0x38, 0xbe, 0xa2, 0x28, 0x0f, 0x4e, 0xb2, 0xe1, 0x83, 0x13, 0xe9, 0x99, 0x89, 0x9c, - 0x74, 0x5a, 0xa2, 0x26, 0xaf, 0xb2, 0xc9, 0x3b, 0x16, 0x89, 0x10, 0x7d, 0x46, 0x22, 0x01, 0x08, - 0xe5, 0xe1, 0x2f, 0x17, 0x20, 0xd3, 0x78, 0x0e, 0x8b, 0xd2, 0x14, 0xdd, 0x76, 0x2a, 0xfa, 0x11, - 0x1c, 0xc7, 0xf5, 0xdf, 0x11, 0xbf, 0xe4, 0x24, 0xc9, 0x3e, 0x45, 0xf1, 0x0b, 0x19, 0x18, 0x65, - 0x45, 0x98, 0x55, 0x6f, 0x5a, 0x4b, 0x18, 0xd8, 0xfd, 0x10, 0x66, 0x8c, 0x57, 0x20, 0xc7, 0xbb, - 0x28, 0xe6, 0x6d, 0x11, 0xe9, 0x3c, 0xb5, 0x34, 0xc7, 0xb0, 0x71, 0xc1, 0x63, 0xa8, 0xcb, 0xe3, - 0x82, 0x07, 0x5b, 0x97, 0xc7, 0x05, 0xa7, 0x21, 0x57, 0xa0, 0x97, 0x2f, 0xb6, 0xbd, 0x61, 0xac, - 0x6c, 0x5c, 0x63, 0xe5, 0x9c, 0x26, 0x7c, 0x95, 0x7d, 0x09, 0x35, 0xd5, 0xf1, 0x2a, 0x96, 0x41, - 0xef, 0x8b, 0x10, 0xdf, 0xd8, 0xc9, 0x2e, 0x83, 0xd6, 0x4d, 0x06, 0x96, 0x73, 0x26, 0x87, 0xc4, - 0x6c, 0x9e, 0xf0, 0xbb, 0x4c, 0x5e, 0xda, 0x71, 0x9e, 0x08, 0x3a, 0x59, 0xad, 0x36, 0x5a, 0xa4, - 0xb8, 0x95, 0x86, 0x31, 0xd1, 0x9f, 0x08, 0x3d, 0x9a, 0xbd, 0xf3, 0x12, 0xc0, 0x82, 0xb0, 0x4a, - 0x83, 0x38, 0xda, 0x28, 0x44, 0xdf, 0x56, 0x8d, 0xe6, 0xb8, 0x97, 0x88, 0x31, 0x67, 0xb5, 0x48, - 0xc0, 0x50, 0x99, 0x90, 0x33, 0xbb, 0x53, 0x01, 0x55, 0x8a, 0x86, 0xc4, 0xe4, 0x1a, 0xf4, 0x4d, - 0x98, 0x6e, 0xab, 0xa9, 0x47, 0xde, 0x73, 0x1b, 0x1c, 0x24, 0x8f, 0x68, 0x41, 0x55, 0xfc, 0xce, - 0x0c, 0x9c, 0x2f, 0xf3, 0x93, 0xed, 0xaa, 0x46, 0x5d, 0xcf, 0x31, 0xb9, 0xd3, 0xdc, 0xf1, 0x9d, - 0x56, 0x2c, 0x39, 0xdf, 0x6e, 0xde, 0xc4, 0xcc, 0xc1, 0xa9, 0x24, 0xa9, 0x8a, 0xf0, 0xe7, 0x18, - 0x7d, 0xd5, 0xbf, 0x62, 0x68, 0xd5, 0x1d, 0x89, 0x42, 0x4b, 0x2c, 0x57, 0xfc, 0xea, 0x34, 0x8c, - 0xde, 0xb1, 0xa8, 0xa7, 0x3a, 0xd0, 0xec, 0x79, 0xdb, 0x1a, 0xee, 0xea, 0xd3, 0xbb, 0xd8, 0xd5, - 0xfb, 0x9b, 0xdd, 0xcc, 0x2e, 0x37, 0xbb, 0xd3, 0x00, 0x8d, 0x7d, 0xb8, 0x3d, 0x84, 0x65, 0x15, - 0x41, 0x84, 0x5a, 0xfa, 0x90, 0x0b, 0x22, 0xbc, 0x67, 0x7d, 0xe8, 0x04, 0xf1, 0x1d, 0x19, 0x38, - 0xed, 0x7b, 0x76, 0x88, 0xf0, 0xe1, 0xc7, 0x0e, 0x66, 0xfb, 0x7a, 0xd0, 0xa7, 0x41, 0x5f, 0x55, - 0xdf, 0x60, 0xf2, 0xdc, 0xce, 0x3a, 0x2e, 0xb0, 0xd5, 0xa5, 0xc5, 0x69, 0x13, 0xed, 0x51, 0x9f, - 0x51, 0x52, 0x2f, 0x1d, 0xc7, 0xf8, 0xdb, 0x4f, 0x8c, 0xbf, 0x77, 0xa4, 0x97, 0xfe, 0x79, 0x3a, - 0xd6, 0x4b, 0xc7, 0x0e, 0x77, 0xfb, 0x8a, 0x1a, 0xf8, 0xed, 0x19, 0x38, 0x55, 0xb1, 0xc4, 0x7b, - 0x80, 0x59, 0xdb, 0x38, 0x90, 0xc8, 0x45, 0xc7, 0x93, 0xd3, 0xc1, 0xaa, 0x7d, 0xbc, 0x93, 0x8e, - 0x9d, 0x70, 0x1f, 0xb8, 0x4e, 0xfa, 0xe5, 0xb4, 0xda, 0x49, 0xc7, 0x53, 0xd3, 0xbe, 0xa6, 0x26, - 0x36, 0xd9, 0x07, 0x02, 0xad, 0xd1, 0x86, 0x43, 0x8f, 0xa3, 0x57, 0x1c, 0xb8, 0x44, 0x8f, 0x27, - 0x92, 0x83, 0x96, 0xe8, 0xf1, 0xa8, 0xdf, 0x97, 0x44, 0x99, 0x21, 0x1e, 0x48, 0xf4, 0xc0, 0x5c, - 0xbb, 0x8f, 0x17, 0xbb, 0x83, 0xdf, 0x2e, 0x29, 0xbd, 0x74, 0x3c, 0x93, 0x3c, 0x70, 0xbd, 0x14, - 0x99, 0x9d, 0x0e, 0xcc, 0xe1, 0xfd, 0x61, 0xdf, 0x2e, 0x69, 0xd4, 0x73, 0x4c, 0xba, 0xa6, 0x37, - 0x8f, 0xb7, 0x4b, 0x0f, 0xee, 0x76, 0x29, 0xda, 0x49, 0xc7, 0x73, 0xd3, 0x03, 0xb9, 0x5d, 0x8a, - 0x76, 0xd2, 0xf1, 0xd4, 0xb4, 0x9f, 0x4e, 0x7a, 0xaa, 0xc1, 0xe3, 0x59, 0xde, 0x32, 0x2d, 0x83, - 0x9c, 0x83, 0xd3, 0xb7, 0x6b, 0x93, 0x5a, 0xfd, 0x56, 0x65, 0x6e, 0xa2, 0x7e, 0x7b, 0xae, 0x56, - 0x9d, 0x2c, 0x57, 0xa6, 0x2a, 0x93, 0x13, 0xa3, 0x3d, 0xe4, 0x24, 0x9c, 0x08, 0x51, 0xd3, 0xb7, - 0x67, 0x4b, 0x73, 0xa3, 0x29, 0x32, 0x06, 0xc3, 0x21, 0x70, 0x7c, 0x7e, 0x61, 0x34, 0x4d, 0x4e, - 0xc1, 0x68, 0x08, 0xaa, 0xbd, 0x59, 0x5b, 0x98, 0x9c, 0x1d, 0xcd, 0x3c, 0xf5, 0x85, 0x14, 0x00, - 0xab, 0x65, 0xde, 0x31, 0x97, 0x4c, 0x8b, 0x3c, 0x02, 0x67, 0x91, 0x68, 0x5e, 0xab, 0xdc, 0xa8, - 0xcc, 0x29, 0x35, 0x9d, 0x86, 0x31, 0x19, 0x39, 0x33, 0x5f, 0x2e, 0xcd, 0x8c, 0xa6, 0x82, 0x06, - 0x08, 0x70, 0xad, 0x36, 0x2f, 0xd5, 0x26, 0x80, 0xf3, 0xb7, 0x16, 0x4a, 0xa3, 0x19, 0x15, 0x5a, - 0x2b, 0x57, 0x66, 0x47, 0xb3, 0xe4, 0x2c, 0x9c, 0x94, 0xa1, 0x93, 0x73, 0x0b, 0x5a, 0xa9, 0x32, - 0x31, 0xda, 0xfb, 0xd4, 0x7b, 0x61, 0x10, 0xef, 0x62, 0x45, 0x4c, 0x8c, 0x21, 0xe8, 0x9f, 0x1f, - 0xaf, 0x4d, 0x6a, 0x77, 0xb0, 0x35, 0x00, 0xb9, 0x89, 0xc9, 0x39, 0xd6, 0xb2, 0xd4, 0x53, 0xff, - 0x31, 0x05, 0x50, 0x9b, 0x5a, 0xa8, 0x0a, 0xc2, 0x41, 0xe8, 0xab, 0xcc, 0xdd, 0x29, 0xcd, 0x54, - 0x18, 0x5d, 0x3f, 0x64, 0xe7, 0xab, 0x93, 0x4c, 0x28, 0x03, 0xd0, 0x5b, 0x9e, 0x99, 0xaf, 0x4d, - 0x8e, 0xa6, 0x19, 0x50, 0x9b, 0x2c, 0x4d, 0x8c, 0x66, 0x18, 0xf0, 0xae, 0x56, 0x59, 0x98, 0x1c, - 0xcd, 0xb2, 0x3f, 0x67, 0x6a, 0x0b, 0xa5, 0x85, 0xd1, 0x5e, 0xf6, 0xe7, 0x14, 0xfe, 0x99, 0x63, - 0xcc, 0x6a, 0x93, 0x0b, 0xf8, 0xa3, 0x8f, 0x35, 0x61, 0xca, 0xff, 0xd5, 0xcf, 0x50, 0x8c, 0xf5, - 0x44, 0x45, 0x1b, 0x1d, 0x60, 0x3f, 0x18, 0x4b, 0xf6, 0x03, 0x58, 0xe3, 0xb4, 0xc9, 0xd9, 0xf9, - 0x3b, 0x93, 0xa3, 0x83, 0x8c, 0xd7, 0xec, 0x2d, 0x06, 0x1e, 0x62, 0x7f, 0x6a, 0xb3, 0xec, 0xcf, - 0x61, 0xc6, 0x49, 0x9b, 0x2c, 0xcd, 0x54, 0x4b, 0x0b, 0xd3, 0xa3, 0x23, 0xac, 0x3d, 0xc8, 0xf3, - 0x04, 0x2f, 0x39, 0x57, 0x9a, 0x9d, 0x1c, 0x1d, 0x15, 0x34, 0x13, 0x33, 0x95, 0xb9, 0x5b, 0xa3, - 0x63, 0xd8, 0x90, 0x37, 0x67, 0xf1, 0x07, 0x61, 0x05, 0xf0, 0xaf, 0x93, 0x4f, 0x7d, 0x1c, 0x72, - 0xf3, 0x35, 0x74, 0x57, 0x38, 0x0b, 0x27, 0xe7, 0x6b, 0xf5, 0x85, 0x37, 0xab, 0x93, 0x4a, 0xc7, - 0x8d, 0xc1, 0xb0, 0x8f, 0x98, 0xa9, 0xcc, 0xdd, 0x7e, 0x83, 0x2b, 0x88, 0x0f, 0x9a, 0x2d, 0x95, - 0xe7, 0x6b, 0xa3, 0x69, 0xd6, 0x8f, 0x3e, 0xe8, 0x6e, 0x65, 0x6e, 0x62, 0xfe, 0x6e, 0x6d, 0x34, - 0xf3, 0xd4, 0x1a, 0x0c, 0x4d, 0xd0, 0x35, 0xb3, 0x41, 0x85, 0x82, 0x5c, 0x84, 0x73, 0x13, 0x93, - 0x77, 0x2a, 0xe5, 0xc9, 0x8e, 0x2a, 0x12, 0x45, 0x97, 0xaa, 0x95, 0xd1, 0x14, 0x39, 0x03, 0x24, - 0x0a, 0xbe, 0x59, 0x9a, 0x9d, 0x1a, 0x4d, 0x93, 0x3c, 0x9c, 0x8a, 0xc2, 0x2b, 0x73, 0x0b, 0xb7, - 0xe7, 0x26, 0x47, 0x33, 0x4f, 0x7d, 0x47, 0x0a, 0x4e, 0x4f, 0x36, 0x75, 0xd7, 0x33, 0x1b, 0x2e, - 0xd5, 0x9d, 0xc6, 0x72, 0x59, 0xf7, 0xe8, 0x92, 0xed, 0x6c, 0x90, 0x22, 0x3c, 0x3a, 0x39, 0x53, - 0xaa, 0x2d, 0x54, 0xca, 0xb5, 0xc9, 0x92, 0x56, 0x9e, 0xae, 0x97, 0x4b, 0x0b, 0x93, 0x37, 0xe6, - 0xb5, 0x37, 0xeb, 0x37, 0x26, 0xe7, 0x26, 0xb5, 0xd2, 0xcc, 0x68, 0x0f, 0x79, 0x02, 0x0a, 0x1d, - 0x68, 0x6a, 0x93, 0xe5, 0xdb, 0x5a, 0x65, 0xe1, 0xcd, 0xd1, 0x14, 0x79, 0x1c, 0x2e, 0x76, 0x24, - 0x62, 0xbf, 0x47, 0xd3, 0xe4, 0x51, 0x38, 0xdf, 0x89, 0xe4, 0xf5, 0x99, 0xd1, 0xcc, 0x53, 0xdf, - 0x92, 0x02, 0x32, 0xdf, 0xa2, 0x56, 0x2d, 0xda, 0xc4, 0xc7, 0xe0, 0x02, 0xd3, 0x8b, 0x7a, 0xe7, - 0x06, 0x3e, 0x0e, 0x17, 0x13, 0x29, 0xa4, 0xe6, 0x15, 0xe0, 0x91, 0x0e, 0x24, 0xa2, 0x71, 0x17, - 0x20, 0x9f, 0x4c, 0x80, 0x4d, 0xfb, 0xc1, 0x14, 0x9c, 0x4e, 0x4c, 0x93, 0x4b, 0x2e, 0xc3, 0x93, - 0xa5, 0x89, 0x59, 0xd6, 0x37, 0xe5, 0x85, 0xca, 0xfc, 0x5c, 0xad, 0x3e, 0x3b, 0x55, 0xaa, 0x33, - 0xed, 0xbb, 0x5d, 0x53, 0x7a, 0xf3, 0x12, 0x14, 0xbb, 0x50, 0x96, 0xa7, 0x4b, 0x73, 0x37, 0xd8, - 0xf0, 0x23, 0x4f, 0xc2, 0x63, 0x1d, 0xe9, 0x26, 0xe7, 0x4a, 0xe3, 0x33, 0x93, 0x13, 0xa3, 0x69, - 0xf2, 0x1e, 0x78, 0xbc, 0x23, 0xd5, 0x44, 0xa5, 0xc6, 0xc9, 0x32, 0x4f, 0xe9, 0x91, 0xe0, 0x8d, - 0xec, 0x2b, 0xcb, 0xf3, 0x73, 0x0b, 0xa5, 0xf2, 0x42, 0x92, 0x66, 0x9f, 0x83, 0xd3, 0x11, 0xec, - 0xf8, 0xed, 0x5a, 0x65, 0x6e, 0xb2, 0x56, 0x1b, 0x4d, 0xc5, 0x50, 0x81, 0x68, 0xd3, 0xe3, 0x13, - 0x5f, 0xfa, 0x83, 0x47, 0x7b, 0xbe, 0xf4, 0xe5, 0x47, 0x53, 0xbf, 0xf2, 0xe5, 0x47, 0x53, 0xbf, - 0xff, 0xe5, 0x47, 0x53, 0x1f, 0xbd, 0xbe, 0x1b, 0x4f, 0x5f, 0x3e, 0x79, 0x2f, 0xe6, 0x70, 0xad, - 0x7c, 0xee, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xcb, 0x34, 0x81, 0x7a, 0x3c, 0x07, 0x02, 0x00, + 0xcc, 0x9a, 0xcc, 0x2c, 0x80, 0x68, 0xff, 0x7e, 0xbb, 0x3e, 0x64, 0x1d, 0xf6, 0x48, 0x9a, 0x9d, + 0xb1, 0x34, 0xf2, 0xc8, 0xf6, 0x8e, 0x0e, 0xef, 0xca, 0x92, 0x2c, 0xad, 0xbc, 0x5e, 0xc9, 0xba, + 0x2c, 0xc9, 0xb2, 0x56, 0xa3, 0xd3, 0x3a, 0x2c, 0xad, 0x56, 0x92, 0x21, 0x69, 0xbc, 0xfe, 0x76, + 0x17, 0x2b, 0x7b, 0xb5, 0x96, 0xd6, 0x92, 0x65, 0xcb, 0xdf, 0x7e, 0xf1, 0x22, 0x32, 0x33, 0x32, + 0x32, 0xab, 0x70, 0xb6, 0x40, 0x34, 0xf1, 0x0f, 0x89, 0x7a, 0xef, 0xc5, 0x8b, 0xc8, 0x17, 0x2f, + 0x22, 0x5e, 0x44, 0xbc, 0x78, 0x0f, 0xae, 0x78, 0xb4, 0x49, 0x5b, 0xb6, 0xe3, 0x5d, 0x6b, 0xd2, + 0x25, 0xbd, 0xb1, 0x71, 0xcd, 0xdb, 0x68, 0x51, 0xf7, 0x1a, 0x5d, 0xa3, 0x96, 0xe7, 0xff, 0x77, + 0xb5, 0xe5, 0xd8, 0x9e, 0x4d, 0x72, 0xfc, 0xd7, 0xf9, 0x53, 0x4b, 0xf6, 0x92, 0x8d, 0xa0, 0x6b, + 0xec, 0x2f, 0x8e, 0x3d, 0x7f, 0x61, 0xc9, 0xb6, 0x97, 0x9a, 0xf4, 0x1a, 0xfe, 0x5a, 0x6c, 0xdf, + 0xbb, 0xe6, 0x7a, 0x4e, 0xbb, 0xe1, 0x09, 0x6c, 0x41, 0xc5, 0x7a, 0xe6, 0x2a, 0x75, 0x3d, 0x7d, + 0xb5, 0x25, 0x08, 0x1e, 0x55, 0x09, 0xd6, 0x1d, 0xbd, 0xd5, 0xa2, 0x8e, 0xa8, 0xfc, 0xfc, 0x7b, + 0x83, 0x76, 0xea, 0x8d, 0x06, 0x75, 0xdd, 0xa6, 0xe9, 0x7a, 0xd7, 0xd6, 0x9e, 0x95, 0x7e, 0x09, + 0xc2, 0xc7, 0x93, 0x3f, 0x08, 0xff, 0x15, 0x24, 0xef, 0x4f, 0x26, 0xf1, 0x6b, 0x54, 0xaa, 0x2e, + 0x7e, 0x36, 0x0d, 0xfd, 0xb3, 0xd4, 0xd3, 0x0d, 0xdd, 0xd3, 0xc9, 0x05, 0xe8, 0xad, 0x58, 0x06, + 0xbd, 0x9f, 0x4f, 0x3d, 0x96, 0xba, 0x9c, 0x19, 0xcf, 0x6d, 0x6d, 0x16, 0xd2, 0xd4, 0xd4, 0x38, + 0x90, 0x5c, 0x84, 0xec, 0xc2, 0x46, 0x8b, 0xe6, 0xd3, 0x8f, 0xa5, 0x2e, 0x0f, 0x8c, 0x0f, 0x6c, + 0x6d, 0x16, 0x7a, 0x51, 0x68, 0x1a, 0x82, 0xc9, 0xe3, 0x90, 0xae, 0x4c, 0xe4, 0x33, 0x88, 0x1c, + 0xdb, 0xda, 0x2c, 0x0c, 0xb7, 0x4d, 0xe3, 0x69, 0x7b, 0xd5, 0xf4, 0xe8, 0x6a, 0xcb, 0xdb, 0xd0, + 0xd2, 0x95, 0x09, 0x72, 0x09, 0xb2, 0x65, 0xdb, 0xa0, 0xf9, 0x2c, 0x12, 0x91, 0xad, 0xcd, 0xc2, + 0x48, 0xc3, 0x36, 0xa8, 0x44, 0x85, 0x78, 0xf2, 0x1a, 0x64, 0x17, 0xcc, 0x55, 0x9a, 0xef, 0x7d, + 0x2c, 0x75, 0x79, 0xf0, 0xfa, 0xf9, 0xab, 0x5c, 0x7c, 0x57, 0x7d, 0xf1, 0x5d, 0x5d, 0xf0, 0xe5, + 0x3b, 0x3e, 0xfa, 0xa5, 0xcd, 0x42, 0xcf, 0xd6, 0x66, 0x21, 0xcb, 0x44, 0xfe, 0x99, 0xdf, 0x2d, + 0xa4, 0x34, 0x2c, 0x49, 0x5e, 0x81, 0xc1, 0x72, 0xb3, 0xed, 0x7a, 0xd4, 0x99, 0xd3, 0x57, 0x69, + 0x3e, 0x87, 0x15, 0x9e, 0xdf, 0xda, 0x2c, 0x9c, 0x69, 0x70, 0x70, 0xdd, 0xd2, 0x57, 0xe5, 0x8a, + 0x65, 0xf2, 0xe2, 0x3f, 0x49, 0xc1, 0x89, 0x1a, 0x75, 0x5d, 0xd3, 0xb6, 0x02, 0xd9, 0xbc, 0x07, + 0x06, 0x04, 0xa8, 0x32, 0x81, 0xf2, 0x19, 0x18, 0xef, 0xdb, 0xda, 0x2c, 0x64, 0x5c, 0xd3, 0xd0, + 0x42, 0x0c, 0x79, 0x06, 0xfa, 0xee, 0x9a, 0xde, 0xf2, 0xec, 0x54, 0x49, 0xc8, 0xe9, 0xcc, 0xd6, + 0x66, 0x81, 0xac, 0x9b, 0xde, 0x72, 0x7d, 0xf5, 0x9e, 0x2e, 0x55, 0xe8, 0x93, 0x91, 0x19, 0x18, + 0xad, 0x3a, 0xe6, 0x9a, 0xee, 0xd1, 0x5b, 0x74, 0xa3, 0x6a, 0x37, 0xcd, 0xc6, 0x86, 0x90, 0xe2, + 0x63, 0x5b, 0x9b, 0x85, 0x0b, 0x2d, 0x8e, 0xab, 0xaf, 0xd0, 0x8d, 0x7a, 0x0b, 0xb1, 0x12, 0x93, + 0x58, 0xc9, 0xe2, 0xb7, 0x0d, 0xc0, 0xd0, 0x6d, 0x97, 0x3a, 0x41, 0xbb, 0x2f, 0x41, 0x96, 0xfd, + 0x16, 0x4d, 0x46, 0x99, 0xb7, 0x5d, 0xea, 0xc8, 0x32, 0x67, 0x78, 0x72, 0x05, 0x7a, 0x67, 0xec, + 0x25, 0xd3, 0x12, 0xcd, 0x3e, 0xb9, 0xb5, 0x59, 0x38, 0xd1, 0x64, 0x00, 0x89, 0x92, 0x53, 0x90, + 0x8f, 0xc0, 0x50, 0x65, 0x95, 0xe9, 0x90, 0x6d, 0xe9, 0x9e, 0xed, 0x88, 0xd6, 0xa2, 0x74, 0x4d, + 0x09, 0x2e, 0x15, 0x8c, 0xd0, 0x93, 0x0f, 0x01, 0x94, 0xee, 0xd6, 0x34, 0xbb, 0x49, 0x4b, 0xda, + 0x9c, 0x50, 0x06, 0x2c, 0xad, 0xaf, 0xbb, 0x75, 0xc7, 0x6e, 0xd2, 0xba, 0xee, 0xc8, 0xd5, 0x4a, + 0xd4, 0x64, 0x12, 0x46, 0x4a, 0x38, 0x2a, 0x34, 0xfa, 0xa9, 0x36, 0x75, 0x3d, 0x37, 0xdf, 0xfb, + 0x58, 0xe6, 0xf2, 0xc0, 0xf8, 0xc5, 0xad, 0xcd, 0xc2, 0x39, 0x3e, 0x5e, 0xea, 0x8e, 0x40, 0x49, + 0x2c, 0x94, 0x42, 0x64, 0x1c, 0x86, 0x4b, 0x6f, 0xb7, 0x1d, 0x5a, 0x31, 0xa8, 0xe5, 0x99, 0xde, + 0x86, 0xd0, 0x90, 0x0b, 0x5b, 0x9b, 0x85, 0xbc, 0xce, 0x10, 0x75, 0x53, 0x60, 0x24, 0x26, 0xd1, + 0x22, 0x64, 0x1e, 0xc6, 0x6e, 0x94, 0xab, 0x35, 0xea, 0xac, 0x99, 0x0d, 0x5a, 0x6a, 0x34, 0xec, + 0xb6, 0xe5, 0xe5, 0xfb, 0x90, 0xcf, 0xe3, 0x5b, 0x9b, 0x85, 0x8b, 0x4b, 0x8d, 0x56, 0xdd, 0xe5, + 0xd8, 0xba, 0xce, 0xd1, 0x12, 0xb3, 0x78, 0x59, 0xf2, 0x51, 0x18, 0x5e, 0x70, 0x98, 0x16, 0x1a, + 0x13, 0x94, 0xc1, 0xf3, 0xfd, 0xa8, 0xff, 0x67, 0xae, 0x8a, 0x99, 0x8a, 0x43, 0xfd, 0x9e, 0xe5, + 0x8d, 0xf5, 0x78, 0x81, 0xba, 0x81, 0x38, 0xb9, 0xb1, 0x11, 0x56, 0x84, 0x42, 0x9e, 0x7d, 0xbc, + 0xe9, 0x50, 0x23, 0xa6, 0x6d, 0x03, 0xd8, 0xe6, 0x2b, 0x5b, 0x9b, 0x85, 0xf7, 0x38, 0x82, 0xa6, + 0xde, 0x55, 0xed, 0x3a, 0xb2, 0x22, 0x93, 0xd0, 0xcf, 0xb4, 0xe9, 0x96, 0x69, 0x19, 0x79, 0x78, + 0x2c, 0x75, 0x79, 0xe4, 0xfa, 0xa8, 0xdf, 0x7a, 0x1f, 0x3e, 0x7e, 0x76, 0x6b, 0xb3, 0x70, 0x92, + 0xe9, 0x60, 0x7d, 0xc5, 0xb4, 0xe4, 0x29, 0x22, 0x28, 0xca, 0x46, 0xd1, 0xb8, 0xed, 0xe1, 0xd0, + 0x1d, 0x0c, 0x47, 0xd1, 0xa2, 0xed, 0xa9, 0xc3, 0xd6, 0x27, 0x23, 0x65, 0x18, 0x1e, 0xb7, 0xbd, + 0x8a, 0xe5, 0x7a, 0xba, 0xd5, 0xa0, 0x95, 0x89, 0xfc, 0x10, 0x96, 0x43, 0xb5, 0x60, 0xe5, 0x4c, + 0x81, 0xa9, 0x47, 0x26, 0xa5, 0x68, 0x19, 0x32, 0x0b, 0xc0, 0x9a, 0x30, 0xef, 0x98, 0x6c, 0x20, + 0x0c, 0x63, 0xfb, 0x89, 0xdc, 0x7e, 0x8e, 0x19, 0x3f, 0xb7, 0xb5, 0x59, 0x38, 0x8d, 0x5f, 0x60, + 0x23, 0x40, 0xd6, 0xd5, 0x90, 0x8c, 0xbc, 0x08, 0x03, 0xec, 0x17, 0x53, 0x5d, 0x37, 0x3f, 0x82, + 0x6a, 0x9a, 0xdf, 0xda, 0x2c, 0x9c, 0xc2, 0x92, 0x4c, 0xcf, 0x65, 0x0d, 0x0d, 0x49, 0xc9, 0xe7, + 0x52, 0xbc, 0x1d, 0x0b, 0x8e, 0x6e, 0x7a, 0x6e, 0xfe, 0x04, 0x6a, 0xc1, 0xe9, 0xab, 0xc1, 0xcc, + 0x3d, 0xa3, 0x2f, 0xd2, 0xe6, 0x1d, 0xbd, 0xd9, 0xa6, 0xee, 0xf8, 0xc7, 0xd9, 0x04, 0xf8, 0x5b, + 0x9b, 0x85, 0x97, 0x97, 0x4c, 0x6f, 0xb9, 0xbd, 0x78, 0xb5, 0x61, 0xaf, 0x5e, 0x5b, 0x72, 0xf4, + 0x35, 0xd3, 0xd3, 0x3d, 0xd3, 0xb6, 0xf4, 0xe6, 0xb5, 0x70, 0x6d, 0x69, 0x99, 0xca, 0x62, 0x70, + 0x95, 0xd7, 0x10, 0x7c, 0x8d, 0x87, 0x3f, 0xd5, 0xaf, 0xe1, 0x44, 0xa4, 0x02, 0x27, 0xd8, 0x2f, + 0x79, 0x5a, 0x1d, 0x45, 0x19, 0x17, 0xb6, 0x36, 0x0b, 0x8f, 0x60, 0xf9, 0x0e, 0x73, 0xab, 0x5a, + 0xae, 0xf8, 0x27, 0x59, 0x18, 0x61, 0xba, 0x2f, 0x4d, 0x53, 0x25, 0x36, 0xe3, 0x32, 0x08, 0x23, + 0x70, 0x5b, 0x7a, 0x83, 0x8a, 0x19, 0x0b, 0xb5, 0xc5, 0xf2, 0x81, 0x32, 0x57, 0x85, 0x9e, 0x5c, + 0x81, 0x7e, 0x0e, 0xaa, 0x4c, 0x88, 0x49, 0x6c, 0x78, 0x6b, 0xb3, 0x30, 0xe0, 0x22, 0xac, 0x6e, + 0x1a, 0x5a, 0x80, 0x66, 0xb3, 0x08, 0xff, 0x7b, 0xda, 0x76, 0x3d, 0xc6, 0x5c, 0xcc, 0x61, 0xa8, + 0x2e, 0xa2, 0xc0, 0xb2, 0x40, 0xc9, 0xb3, 0x48, 0xb4, 0x10, 0x79, 0x09, 0x80, 0x43, 0x4a, 0x86, + 0xe1, 0x88, 0x89, 0x0c, 0x75, 0x43, 0xb0, 0xd0, 0x0d, 0x43, 0x9e, 0x05, 0x25, 0x62, 0xb2, 0x0a, + 0x43, 0xfc, 0x17, 0x76, 0x26, 0x9f, 0xc5, 0x06, 0xaf, 0x5f, 0xf6, 0x95, 0x2d, 0x2a, 0x9d, 0xab, + 0x32, 0xe9, 0xa4, 0xe5, 0x39, 0x1b, 0xe3, 0x05, 0xb1, 0xf0, 0x9d, 0x15, 0x55, 0x35, 0x11, 0x27, + 0x4f, 0xb9, 0x72, 0x19, 0xb6, 0x1e, 0x4e, 0xd9, 0xce, 0xba, 0xee, 0x18, 0xd4, 0x18, 0xdf, 0x90, + 0xd7, 0xc3, 0x7b, 0x3e, 0xb8, 0xbe, 0x28, 0x0f, 0x71, 0x99, 0x9c, 0x0d, 0x2e, 0xce, 0xad, 0xd6, + 0x5e, 0xc4, 0xa1, 0xdd, 0x17, 0x93, 0x96, 0xdb, 0x5e, 0x54, 0x87, 0x73, 0xb4, 0x0c, 0x9b, 0x72, + 0x39, 0xe0, 0x0e, 0x75, 0xd8, 0x62, 0x89, 0xb3, 0x9b, 0x98, 0x72, 0x05, 0x93, 0x35, 0x8e, 0x89, + 0xf3, 0x10, 0x45, 0xce, 0xbf, 0x0a, 0x63, 0x31, 0x51, 0x90, 0x51, 0xc8, 0xac, 0xd0, 0x0d, 0xae, + 0x2e, 0x1a, 0xfb, 0x93, 0x9c, 0x82, 0xde, 0x35, 0x36, 0x3c, 0xb8, 0x1a, 0x68, 0xfc, 0xc7, 0x87, + 0xd2, 0x1f, 0x4c, 0xb1, 0x95, 0x9d, 0x94, 0x6d, 0xcb, 0xa2, 0x0d, 0x4f, 0x5e, 0xdc, 0x5f, 0x84, + 0x81, 0x19, 0xbb, 0xa1, 0x37, 0xb1, 0x1f, 0xb9, 0xde, 0xe1, 0x48, 0x65, 0x1d, 0x78, 0xb5, 0xc9, + 0x30, 0xf2, 0x48, 0x0d, 0x48, 0x99, 0x02, 0x68, 0x74, 0xd5, 0xf6, 0x28, 0x16, 0x4c, 0x87, 0x0a, + 0x80, 0x05, 0x1d, 0x44, 0xc9, 0x0a, 0x10, 0x12, 0x93, 0x6b, 0xd0, 0x5f, 0x65, 0xf6, 0x4c, 0xc3, + 0x6e, 0x0a, 0xe5, 0xc3, 0x25, 0x17, 0x6d, 0x1c, 0x79, 0x4e, 0xf4, 0x89, 0x8a, 0xd3, 0x30, 0x52, + 0x6e, 0x9a, 0xd4, 0xf2, 0xe4, 0x56, 0xb3, 0x91, 0x55, 0x5a, 0xa2, 0x96, 0x27, 0xb7, 0x1a, 0xc7, + 0xa2, 0xce, 0xa0, 0xea, 0xfc, 0x82, 0xa4, 0xc5, 0x5f, 0xca, 0xc0, 0xb9, 0x5b, 0xed, 0x45, 0xea, + 0x58, 0xd4, 0xa3, 0xae, 0x18, 0x98, 0x01, 0xd7, 0x39, 0x18, 0x8b, 0x21, 0x05, 0x77, 0x34, 0x48, + 0x56, 0x02, 0xa4, 0x3f, 0xde, 0xe5, 0x55, 0x2d, 0x56, 0x94, 0x4c, 0xc3, 0x89, 0x10, 0xc8, 0x1a, + 0xe1, 0xe6, 0xd3, 0x38, 0x17, 0x3e, 0xba, 0xb5, 0x59, 0x38, 0x2f, 0x71, 0x63, 0xcd, 0x96, 0x35, + 0x58, 0x2d, 0x46, 0x6e, 0xc1, 0x68, 0x08, 0xba, 0xe1, 0xd8, 0xed, 0x96, 0x9b, 0xcf, 0x20, 0x2b, + 0x9c, 0x82, 0x24, 0x56, 0x4b, 0x88, 0x94, 0x0d, 0x25, 0xb5, 0x20, 0xf9, 0xca, 0x94, 0xcc, 0x4d, + 0x8c, 0xc2, 0x2c, 0x8e, 0xc2, 0x0f, 0xf8, 0xa3, 0xb0, 0xa3, 0x90, 0xae, 0xaa, 0x25, 0xc5, 0xa0, + 0x54, 0x9a, 0x11, 0x1b, 0x94, 0xb1, 0x1a, 0xcf, 0x97, 0xe1, 0x74, 0x22, 0xaf, 0x5d, 0x69, 0xf5, + 0xbf, 0xc9, 0xc8, 0x5c, 0xaa, 0xb6, 0x11, 0x74, 0xe6, 0xbc, 0xdc, 0x99, 0x55, 0xdb, 0xc0, 0x69, + 0x3b, 0x15, 0xda, 0x28, 0x52, 0x63, 0x5b, 0xb6, 0xa1, 0x4e, 0xdc, 0xf1, 0xb2, 0xe4, 0x93, 0x70, + 0x26, 0x06, 0xe4, 0xd3, 0x35, 0xd7, 0xfe, 0x4b, 0x5b, 0x9b, 0x85, 0x62, 0x02, 0x57, 0x75, 0xf6, + 0xee, 0xc0, 0x85, 0xe8, 0x70, 0x56, 0x92, 0xba, 0x6d, 0x79, 0xba, 0x69, 0x89, 0xd5, 0x86, 0x8f, + 0x92, 0xf7, 0x6e, 0x6d, 0x16, 0x9e, 0x90, 0x75, 0xd0, 0xa7, 0x51, 0x1b, 0xdf, 0x89, 0x0f, 0x31, + 0x20, 0x9f, 0x80, 0xaa, 0xac, 0xea, 0x4b, 0xfe, 0xce, 0xe4, 0xf2, 0xd6, 0x66, 0xe1, 0xc9, 0xc4, + 0x3a, 0x4c, 0x46, 0x25, 0x5b, 0x42, 0x9d, 0x38, 0x11, 0x0d, 0x48, 0x88, 0x9b, 0xb3, 0x0d, 0x8a, + 0xdf, 0xd0, 0x8b, 0xfc, 0x8b, 0x5b, 0x9b, 0x85, 0x47, 0x25, 0xfe, 0x96, 0x6d, 0x50, 0xb5, 0xf9, + 0x09, 0xa5, 0x8b, 0xbf, 0x97, 0x81, 0x33, 0x77, 0x4d, 0xcb, 0xb0, 0xd7, 0xdd, 0x09, 0xea, 0xae, + 0x78, 0x76, 0x2b, 0xe8, 0xe8, 0x8f, 0xc1, 0xe9, 0x28, 0x46, 0xd8, 0x96, 0xa2, 0xb3, 0xdf, 0xb3, + 0xb5, 0x59, 0x78, 0x7c, 0x9d, 0x13, 0xd4, 0x0d, 0x4e, 0xe1, 0x1b, 0xa7, 0x52, 0xa5, 0xc9, 0x3c, + 0xd8, 0xea, 0x21, 0x20, 0xd2, 0x3c, 0x87, 0xab, 0x87, 0xcf, 0x4a, 0x59, 0xe9, 0x64, 0x72, 0xf2, + 0x3c, 0xe4, 0x26, 0xec, 0x55, 0xdd, 0xb4, 0x44, 0x0f, 0xe2, 0x8c, 0x1f, 0xb4, 0x05, 0x31, 0x52, + 0x51, 0x41, 0xcb, 0xea, 0x14, 0x8d, 0xc1, 0xed, 0x8b, 0xb4, 0x4b, 0xf0, 0x8b, 0x2a, 0xdb, 0x18, + 0x99, 0x9c, 0xb4, 0x61, 0x58, 0x34, 0x21, 0xb2, 0xbe, 0x3e, 0xeb, 0x8f, 0xec, 0x64, 0x29, 0x5e, + 0x8d, 0x94, 0xe1, 0x63, 0x1a, 0x5b, 0xeb, 0x7f, 0x66, 0x6c, 0x40, 0x47, 0x6b, 0x39, 0xff, 0x1a, + 0x90, 0x38, 0x8b, 0xdd, 0x2d, 0x50, 0x19, 0x78, 0xb4, 0x56, 0x9a, 0x9d, 0xa9, 0x18, 0xfe, 0xee, + 0xa0, 0xea, 0xd8, 0x6b, 0xa6, 0x21, 0x4d, 0xd0, 0x8b, 0x70, 0x56, 0x41, 0x4d, 0xe2, 0x86, 0x24, + 0xd8, 0x97, 0xa2, 0xfa, 0xfa, 0x3b, 0x8f, 0x96, 0xa0, 0xa9, 0xf3, 0x5d, 0x4b, 0xd4, 0xfe, 0xed, + 0xc4, 0x88, 0x0d, 0x43, 0x05, 0x55, 0x5b, 0xb6, 0x1d, 0xaf, 0xd1, 0xf6, 0x44, 0xef, 0xe3, 0x30, + 0x8c, 0xd5, 0xe1, 0x0a, 0xa2, 0x2e, 0x55, 0xf8, 0x7c, 0xc8, 0xd7, 0xa6, 0x60, 0xb4, 0xe4, 0x79, + 0x8e, 0xb9, 0xd8, 0xf6, 0xe8, 0xac, 0xde, 0x6a, 0x99, 0xd6, 0x12, 0x4e, 0xe7, 0x83, 0xd7, 0x5f, + 0x09, 0xcc, 0xa0, 0xae, 0x92, 0xb8, 0xaa, 0x16, 0x97, 0x66, 0x61, 0xdd, 0x47, 0xd5, 0x57, 0x39, + 0x4e, 0x9e, 0x85, 0xd5, 0x72, 0x6c, 0x16, 0x4e, 0xe4, 0xb5, 0xab, 0xae, 0xfb, 0x6c, 0x06, 0x2e, + 0xcc, 0xaf, 0x78, 0xba, 0x46, 0x5d, 0xbb, 0xed, 0x34, 0xa8, 0x7b, 0xbb, 0x65, 0xe8, 0x1e, 0x0d, + 0x27, 0xe3, 0x02, 0xf4, 0x96, 0x0c, 0x83, 0x1a, 0xc8, 0xae, 0x97, 0x9f, 0xa0, 0xe8, 0x0c, 0xa0, + 0x71, 0x38, 0x79, 0x0f, 0xf4, 0x89, 0x32, 0xc8, 0xbd, 0x77, 0x7c, 0x70, 0x6b, 0xb3, 0xd0, 0xd7, + 0xe6, 0x20, 0xcd, 0xc7, 0x31, 0xb2, 0x09, 0xda, 0xa4, 0x8c, 0x2c, 0x13, 0x92, 0x19, 0x1c, 0xa4, + 0xf9, 0x38, 0xf2, 0x3a, 0x8c, 0x20, 0xdb, 0xa0, 0x3d, 0x62, 0x79, 0x3b, 0xe5, 0x4b, 0x57, 0x6e, + 0x2c, 0xb7, 0x3e, 0xb0, 0x35, 0x75, 0xc7, 0x2f, 0xa0, 0x29, 0x0c, 0xc8, 0x5d, 0x18, 0x15, 0x8d, + 0x08, 0x99, 0xf6, 0x76, 0x61, 0x7a, 0x7a, 0x6b, 0xb3, 0x30, 0x26, 0xda, 0x2f, 0xb1, 0x8d, 0x31, + 0x61, 0x8c, 0x45, 0xb3, 0x43, 0xc6, 0xb9, 0xed, 0x18, 0x8b, 0x2f, 0x96, 0x19, 0xab, 0x4c, 0x8a, + 0x6f, 0xc2, 0x90, 0x5c, 0x90, 0x9c, 0xc1, 0x53, 0x2a, 0x3e, 0x4e, 0xf0, 0x7c, 0xcb, 0x34, 0xf0, + 0x68, 0xea, 0x59, 0x9c, 0xe2, 0x1a, 0x8e, 0xd9, 0x62, 0x86, 0xa1, 0x50, 0xf2, 0x13, 0x5b, 0x9b, + 0x85, 0x41, 0x23, 0x04, 0x6b, 0x32, 0x4d, 0xf1, 0x3f, 0xa4, 0xe0, 0x0c, 0xe3, 0x5d, 0x72, 0x5d, + 0x73, 0xc9, 0x5a, 0x95, 0x2d, 0xb3, 0xa7, 0x21, 0x57, 0xc3, 0xfa, 0x44, 0x4d, 0xa7, 0xb6, 0x36, + 0x0b, 0xa3, 0xbc, 0x05, 0xf2, 0x54, 0xc7, 0x69, 0x82, 0x23, 0x9a, 0xf4, 0x36, 0x47, 0x34, 0x6c, + 0xd7, 0xe2, 0xe9, 0x8e, 0x67, 0x5a, 0x4b, 0x35, 0x4f, 0xf7, 0xda, 0x6e, 0x64, 0xd7, 0x22, 0x30, + 0x75, 0x17, 0x51, 0x91, 0x5d, 0x4b, 0xa4, 0x10, 0x79, 0x15, 0x86, 0x26, 0x2d, 0x23, 0x64, 0xc2, + 0xa7, 0xd6, 0x47, 0xd8, 0x66, 0x82, 0x22, 0x3c, 0xce, 0x22, 0x52, 0xa0, 0xf8, 0xa7, 0x29, 0xc8, + 0xf3, 0xf3, 0x94, 0x19, 0xd3, 0xf5, 0x66, 0xe9, 0xea, 0xa2, 0x34, 0x3b, 0x4d, 0xf9, 0x07, 0x34, + 0x0c, 0x27, 0x99, 0x1b, 0x68, 0xed, 0x89, 0x03, 0x9a, 0xa6, 0xe9, 0xc6, 0x76, 0xf2, 0x4a, 0x29, + 0x52, 0x81, 0x3e, 0xce, 0x99, 0x9b, 0x8b, 0x83, 0xd7, 0xf3, 0xbe, 0x22, 0xa8, 0x55, 0x73, 0x65, + 0x58, 0xe5, 0xc4, 0xf2, 0xd9, 0x80, 0x28, 0xcf, 0x76, 0xae, 0x61, 0x99, 0x05, 0xd3, 0x6b, 0xfa, + 0xeb, 0x3c, 0x9f, 0x29, 0xa4, 0x36, 0x79, 0x0c, 0x29, 0x9b, 0xa0, 0x4a, 0xb9, 0xe2, 0x17, 0x33, + 0x30, 0xaa, 0xd6, 0x4f, 0xee, 0x42, 0xff, 0x4d, 0xdb, 0xb4, 0xa8, 0x31, 0x6f, 0xe1, 0xc7, 0x76, + 0x3f, 0xb2, 0xf4, 0x77, 0x6e, 0x27, 0xdf, 0xc2, 0x32, 0x75, 0x79, 0xbf, 0x83, 0x27, 0x98, 0x01, + 0x33, 0xf2, 0x51, 0x18, 0x60, 0x3b, 0x86, 0x35, 0xe4, 0x9c, 0xde, 0x96, 0xf3, 0x63, 0x82, 0xf3, + 0x29, 0x87, 0x17, 0x8a, 0xb3, 0x0e, 0xd9, 0x31, 0x15, 0xd5, 0xa8, 0xee, 0xda, 0xfe, 0xaa, 0x8c, + 0x2a, 0xea, 0x20, 0x44, 0x56, 0x51, 0x4e, 0xc3, 0x36, 0x3a, 0xfc, 0x63, 0xb1, 0x47, 0xa5, 0x9d, + 0x2e, 0x17, 0xbb, 0xda, 0x99, 0x12, 0x31, 0xb1, 0xe0, 0x84, 0xe8, 0x9b, 0x65, 0xb3, 0x85, 0x7b, + 0x44, 0xb4, 0x82, 0x46, 0xae, 0x5f, 0xba, 0xea, 0x1f, 0x4d, 0x5c, 0x95, 0x0e, 0xba, 0xd7, 0x9e, + 0xbd, 0x3a, 0x1b, 0x90, 0xe3, 0x79, 0x11, 0xaa, 0xb7, 0xc2, 0x42, 0x56, 0x9c, 0xd5, 0x08, 0x79, + 0xf1, 0xab, 0xd2, 0xf0, 0xfe, 0xb0, 0x8b, 0x34, 0xba, 0x66, 0xd2, 0xf5, 0x90, 0xa3, 0x38, 0xb9, + 0x62, 0xa3, 0xd5, 0x2d, 0x2f, 0xeb, 0xd6, 0x12, 0x35, 0xc8, 0x15, 0xe8, 0xe5, 0x67, 0x34, 0x29, + 0xdc, 0x4c, 0xe0, 0x4c, 0xa8, 0x1e, 0xcf, 0x70, 0x0a, 0x62, 0x43, 0x4e, 0x9c, 0xca, 0x70, 0xa5, + 0x2c, 0xc5, 0x95, 0x72, 0x07, 0x35, 0x8a, 0x73, 0x17, 0xbe, 0x5c, 0xa1, 0xe0, 0x63, 0x27, 0x2f, + 0xa2, 0x9a, 0xf3, 0x2f, 0xc1, 0xa0, 0x44, 0xbc, 0xab, 0xf5, 0xe8, 0x2b, 0x7b, 0xe5, 0x61, 0xea, + 0x37, 0x4b, 0x0c, 0xd3, 0x6b, 0x6c, 0x78, 0xb9, 0x2e, 0xb3, 0x79, 0xf9, 0xf8, 0x14, 0x83, 0x08, + 0x41, 0xd1, 0x41, 0x84, 0x20, 0xf2, 0x1c, 0xf4, 0x73, 0x16, 0xc1, 0xe9, 0x0a, 0x9e, 0xcc, 0x38, + 0x08, 0x8b, 0x5a, 0x15, 0x01, 0x21, 0xf9, 0xae, 0x14, 0x5c, 0xec, 0x2a, 0x09, 0x54, 0xbe, 0xc1, + 0xeb, 0x2f, 0xec, 0x49, 0x8c, 0xe3, 0xef, 0xdf, 0xda, 0x2c, 0x5c, 0x91, 0x34, 0xc3, 0x91, 0x68, + 0xea, 0x0d, 0x4e, 0x24, 0xb5, 0xab, 0x7b, 0x53, 0xd8, 0xd6, 0x86, 0x57, 0x3a, 0x85, 0x07, 0xc8, + 0x56, 0x63, 0xc3, 0x6f, 0x64, 0x36, 0xdc, 0xda, 0x88, 0xef, 0xbd, 0xe7, 0x93, 0x24, 0x54, 0xd3, + 0x81, 0x0b, 0x69, 0xc0, 0x59, 0x8e, 0x99, 0xd0, 0x37, 0xe6, 0xef, 0xcd, 0xda, 0x96, 0xb7, 0xec, + 0x57, 0xd0, 0x2b, 0x9f, 0xc0, 0x62, 0x05, 0x86, 0xbe, 0x51, 0xb7, 0xef, 0xd5, 0x57, 0x19, 0x55, + 0x42, 0x1d, 0x9d, 0x38, 0xb1, 0x35, 0x42, 0x8c, 0x71, 0x7f, 0xf6, 0xcc, 0x85, 0xe7, 0xe3, 0xfe, + 0xbc, 0x10, 0x9f, 0x2b, 0x95, 0x42, 0x49, 0x53, 0x66, 0xdf, 0x1e, 0xa7, 0xcc, 0x0a, 0x0c, 0xcd, + 0xd8, 0x8d, 0x95, 0x40, 0xf3, 0x5e, 0x82, 0xdc, 0x82, 0xee, 0x2c, 0x51, 0x0f, 0xc5, 0x3a, 0x78, + 0x7d, 0xec, 0x2a, 0xbf, 0xbe, 0x62, 0x44, 0x1c, 0x31, 0x3e, 0x22, 0x26, 0xb2, 0x9c, 0x87, 0xbf, + 0x35, 0x51, 0xa0, 0xf8, 0x4f, 0x73, 0x30, 0x24, 0xae, 0x5a, 0x70, 0x4d, 0x23, 0x1f, 0x0a, 0x2f, + 0xaf, 0xc4, 0xcc, 0x1b, 0x1c, 0x37, 0x07, 0xc7, 0xe4, 0x43, 0x8c, 0xd9, 0x2f, 0x6f, 0x16, 0x52, + 0x5b, 0x9b, 0x85, 0x1e, 0xad, 0x5f, 0x3a, 0x3d, 0x09, 0x57, 0x5d, 0xc9, 0xcc, 0x90, 0x2f, 0x4f, + 0x94, 0xb2, 0x7c, 0x15, 0x7e, 0x15, 0xfa, 0x44, 0x1b, 0x84, 0xf2, 0x9e, 0x0d, 0x0f, 0xed, 0x22, + 0x57, 0x46, 0x4a, 0x69, 0xbf, 0x14, 0x79, 0x05, 0x72, 0xfc, 0x10, 0x4b, 0x08, 0xe0, 0x4c, 0xf2, + 0xa1, 0x9f, 0x52, 0x5c, 0x94, 0x21, 0xd3, 0x00, 0xe1, 0x01, 0x56, 0x70, 0x43, 0x26, 0x38, 0xc4, + 0x8f, 0xb6, 0x14, 0x2e, 0x52, 0x59, 0xf2, 0x22, 0x0c, 0x2d, 0x50, 0x67, 0xd5, 0xb4, 0xf4, 0x66, + 0xcd, 0x7c, 0xdb, 0xbf, 0x24, 0x43, 0xf3, 0xc3, 0x35, 0xdf, 0x96, 0xfb, 0x34, 0x42, 0x47, 0x3e, + 0x91, 0x74, 0x40, 0xd4, 0x87, 0x0d, 0x79, 0x7c, 0xdb, 0x93, 0x13, 0xa5, 0x3d, 0x09, 0xe7, 0x45, + 0xaf, 0xc3, 0x70, 0xe4, 0x6c, 0x40, 0xdc, 0x82, 0x5c, 0x8c, 0xb3, 0x96, 0x0e, 0x3a, 0x14, 0xb6, + 0x51, 0x0e, 0x6c, 0x50, 0x54, 0x2c, 0xd3, 0x33, 0xf5, 0x66, 0xd9, 0x5e, 0x5d, 0xd5, 0x2d, 0x23, + 0x3f, 0x10, 0x0e, 0x0a, 0x93, 0x63, 0xea, 0x0d, 0x8e, 0x92, 0x07, 0x45, 0xb4, 0x10, 0xb9, 0x05, + 0xa3, 0xa2, 0x0f, 0x35, 0xda, 0xb0, 0x1d, 0x66, 0x11, 0xe1, 0x25, 0x87, 0x18, 0x15, 0x2e, 0xc7, + 0xd5, 0x1d, 0x1f, 0x29, 0x6f, 0x39, 0xd4, 0x82, 0x6c, 0x02, 0xae, 0x58, 0x6b, 0x26, 0x33, 0xe2, + 0x87, 0xb0, 0x31, 0x38, 0x01, 0x9b, 0x1c, 0x24, 0x4f, 0xc0, 0x82, 0x4a, 0x5a, 0xb0, 0x87, 0xb7, + 0x5f, 0xb0, 0x6f, 0x66, 0xfb, 0x07, 0x47, 0x87, 0xd4, 0x6b, 0xaf, 0xe2, 0x3f, 0xc8, 0xc0, 0xa0, + 0x68, 0x09, 0x33, 0x32, 0x8e, 0xc7, 0xcf, 0x7e, 0xc6, 0x4f, 0xe2, 0x38, 0xc8, 0x1d, 0xd4, 0x38, + 0x28, 0x7e, 0x3a, 0x1d, 0x4c, 0x76, 0x55, 0xc7, 0xb4, 0xf6, 0x37, 0xd9, 0x5d, 0x02, 0x28, 0x2f, + 0xb7, 0xad, 0x15, 0x7e, 0xbd, 0x9f, 0x0e, 0xaf, 0xf7, 0x1b, 0xa6, 0x26, 0x61, 0xc8, 0x45, 0xc8, + 0x4e, 0x30, 0xfe, 0xac, 0x67, 0x86, 0xc6, 0x07, 0xbe, 0xc4, 0x39, 0xa5, 0xde, 0xaf, 0x21, 0x98, + 0xed, 0x60, 0xc7, 0x37, 0x3c, 0xca, 0xf7, 0x0c, 0x19, 0xbe, 0x83, 0x5d, 0x64, 0x00, 0x8d, 0xc3, + 0xc9, 0xf3, 0x30, 0x36, 0x41, 0x9b, 0xfa, 0xc6, 0xac, 0xd9, 0x6c, 0x9a, 0x2e, 0x6d, 0xd8, 0x96, + 0xe1, 0xa2, 0x90, 0x45, 0x75, 0xab, 0xae, 0x16, 0x27, 0x20, 0x45, 0xc8, 0xcd, 0xdf, 0xbb, 0xe7, + 0x52, 0x0f, 0xc5, 0x97, 0x19, 0x07, 0x36, 0xf7, 0xdb, 0x08, 0xd1, 0x04, 0xa6, 0xf8, 0x7d, 0x29, + 0xb6, 0x45, 0xc4, 0xb3, 0x95, 0x70, 0x10, 0xed, 0x47, 0x24, 0x57, 0x42, 0x0b, 0x28, 0x8d, 0x5f, + 0x7b, 0x42, 0x7c, 0x6d, 0x9f, 0xb0, 0x82, 0x42, 0xdb, 0x27, 0xf1, 0xab, 0x32, 0xdb, 0x7c, 0x55, + 0xf1, 0x3b, 0x32, 0x70, 0x56, 0xb4, 0xb8, 0xdc, 0x34, 0x5b, 0x8b, 0xb6, 0xee, 0x18, 0x1a, 0x6d, + 0x50, 0x73, 0x8d, 0x1e, 0xcd, 0x81, 0x17, 0x1d, 0x3a, 0xd9, 0x7d, 0x0c, 0x9d, 0xeb, 0xd1, 0x03, + 0x45, 0x6e, 0xfe, 0x8c, 0x6e, 0x6d, 0x16, 0x86, 0xe4, 0x03, 0xc5, 0xe8, 0x31, 0x62, 0x11, 0x72, + 0x33, 0xd4, 0x5a, 0xf2, 0x96, 0x51, 0x49, 0x7a, 0xb9, 0x92, 0x34, 0x11, 0xa2, 0x09, 0x8c, 0xc4, + 0x17, 0xf7, 0x29, 0x7d, 0x71, 0xbe, 0x6c, 0xa3, 0xa2, 0xc9, 0x44, 0xc5, 0x6f, 0xcd, 0xc0, 0x29, + 0xb5, 0x9b, 0x6a, 0xd4, 0x32, 0x8e, 0xfb, 0xe8, 0xc1, 0xe9, 0xa3, 0xef, 0xcc, 0xc2, 0x23, 0xfe, + 0x99, 0xf4, 0xb2, 0xee, 0x50, 0x63, 0xc2, 0x74, 0x68, 0xc3, 0xb3, 0x9d, 0x8d, 0x23, 0x6c, 0x07, + 0x1e, 0x5c, 0x57, 0x3d, 0x0f, 0x39, 0x71, 0x96, 0xc3, 0xd7, 0xb3, 0x91, 0xa0, 0x25, 0x08, 0x8d, + 0xad, 0x84, 0xfc, 0x1c, 0x48, 0xe9, 0xe0, 0xdc, 0x4e, 0x3a, 0xf8, 0x83, 0x30, 0x1c, 0x88, 0x5e, + 0xea, 0x3e, 0x34, 0x1a, 0x0d, 0x1f, 0xc1, 0x3b, 0x30, 0x4a, 0x88, 0xb5, 0xf9, 0x80, 0xca, 0x04, + 0x1a, 0x75, 0xc3, 0xa2, 0xb6, 0xa0, 0x9c, 0x69, 0x68, 0x32, 0x91, 0xaa, 0x2a, 0x03, 0x3b, 0x51, + 0x95, 0xcf, 0xf6, 0xc2, 0xf9, 0x64, 0x55, 0xd1, 0xa8, 0x6e, 0x1c, 0x6b, 0xca, 0xbb, 0x53, 0x53, + 0x1e, 0x87, 0x6c, 0x55, 0xf7, 0x96, 0x85, 0x8a, 0xa0, 0xdf, 0xc7, 0x3d, 0xb3, 0x49, 0xeb, 0x2d, + 0xdd, 0x5b, 0xd6, 0x10, 0x25, 0xcd, 0x4d, 0x80, 0x1c, 0x93, 0xe6, 0xa6, 0xd0, 0x10, 0x19, 0x7c, + 0x2c, 0x75, 0x39, 0x9b, 0x64, 0x88, 0xa8, 0x4a, 0x39, 0xb4, 0x13, 0xa5, 0xfc, 0x5c, 0x6f, 0xa7, + 0xf9, 0xeb, 0xae, 0x63, 0x7a, 0xf4, 0x58, 0x2b, 0x8f, 0xb5, 0xf2, 0x10, 0xb4, 0xf2, 0x57, 0xd3, + 0x30, 0x1c, 0xec, 0x4b, 0xdf, 0xa2, 0x8d, 0xc3, 0x59, 0x47, 0xc3, 0xed, 0x5c, 0x66, 0xdf, 0xdb, + 0xb9, 0xfd, 0x28, 0x61, 0x31, 0xd8, 0x5f, 0x73, 0x53, 0x07, 0xa5, 0xcc, 0xf7, 0xd7, 0xc1, 0x31, + 0xf8, 0xe3, 0xd0, 0x37, 0xab, 0xdf, 0x37, 0x57, 0xdb, 0xab, 0x62, 0xa7, 0x82, 0x2e, 0xc0, 0xab, + 0xfa, 0x7d, 0xcd, 0x87, 0x17, 0xff, 0x65, 0x0a, 0x46, 0x84, 0x50, 0x05, 0xf3, 0x7d, 0x49, 0x35, + 0x94, 0x4e, 0x7a, 0xdf, 0xd2, 0xc9, 0xec, 0x5d, 0x3a, 0xc5, 0xbf, 0x93, 0x81, 0xfc, 0x94, 0xd9, + 0xa4, 0x0b, 0x8e, 0x6e, 0xb9, 0xf7, 0xa8, 0x23, 0x8e, 0x14, 0x26, 0x19, 0xab, 0x7d, 0x7d, 0xa0, + 0x34, 0x0d, 0xa5, 0xf7, 0x34, 0x0d, 0xbd, 0x0f, 0x06, 0x44, 0x63, 0x02, 0xf7, 0x73, 0x1c, 0x69, + 0x8e, 0x0f, 0xd4, 0x42, 0x3c, 0x23, 0x2e, 0xb5, 0x5a, 0x8e, 0xbd, 0x46, 0x1d, 0x7e, 0x1d, 0x2a, + 0x88, 0x75, 0x1f, 0xa8, 0x85, 0x78, 0x89, 0x33, 0xf5, 0xed, 0x5f, 0x99, 0x33, 0x75, 0xb4, 0x10, + 0x4f, 0x2e, 0x43, 0xff, 0x8c, 0xdd, 0x40, 0xa7, 0x4b, 0x31, 0x15, 0x0d, 0x6d, 0x6d, 0x16, 0xfa, + 0x9b, 0x02, 0xa6, 0x05, 0x58, 0x46, 0x39, 0x61, 0xaf, 0x5b, 0x4d, 0x5b, 0xe7, 0x8e, 0x74, 0xfd, + 0x9c, 0xd2, 0x10, 0x30, 0x2d, 0xc0, 0x32, 0x4a, 0x26, 0x73, 0x74, 0x50, 0xec, 0x0f, 0x79, 0xde, + 0x13, 0x30, 0x2d, 0xc0, 0x16, 0xbf, 0x2f, 0xcb, 0xb4, 0xd7, 0x35, 0xdf, 0x7e, 0xe8, 0xd7, 0x92, + 0x70, 0xc0, 0xf4, 0xee, 0x61, 0xc0, 0x3c, 0x34, 0x67, 0xa2, 0xc5, 0x3f, 0xe9, 0x03, 0x10, 0xd2, + 0x9f, 0x3c, 0xde, 0xec, 0xee, 0x4f, 0x6b, 0x26, 0x60, 0x6c, 0xd2, 0x5a, 0xd6, 0xad, 0x06, 0x35, + 0xc2, 0x93, 0xe1, 0x1c, 0x0e, 0x6d, 0x74, 0x5c, 0xa7, 0x02, 0x19, 0x1e, 0x0d, 0x6b, 0xf1, 0x02, + 0xe4, 0x59, 0x18, 0xac, 0x58, 0x1e, 0x75, 0xf4, 0x86, 0x67, 0xae, 0x51, 0x31, 0x35, 0xa0, 0x0b, + 0x82, 0x19, 0x82, 0x35, 0x99, 0x86, 0x3c, 0x0f, 0x43, 0x55, 0xdd, 0xf1, 0xcc, 0x86, 0xd9, 0xd2, + 0x2d, 0xcf, 0xcd, 0xf7, 0xe3, 0x8c, 0x86, 0xcb, 0x7e, 0x4b, 0x82, 0x6b, 0x11, 0x2a, 0xf2, 0x09, + 0x18, 0xc0, 0x6d, 0x33, 0xbe, 0xb1, 0x19, 0xd8, 0xf6, 0x5a, 0xf9, 0x89, 0xd0, 0xd5, 0x98, 0x1f, + 0x70, 0xa3, 0xab, 0x81, 0x7a, 0xb3, 0x1c, 0x70, 0x24, 0x6f, 0x40, 0xdf, 0xa4, 0x65, 0x20, 0x73, + 0xd8, 0x96, 0x79, 0x51, 0x30, 0x3f, 0x13, 0x32, 0xb7, 0x5b, 0x0a, 0x6f, 0x9f, 0x5d, 0xf2, 0x28, + 0x1b, 0x7c, 0xe7, 0x46, 0xd9, 0xd0, 0x3b, 0x70, 0xf3, 0x30, 0x7c, 0x50, 0x37, 0x0f, 0x23, 0x7b, + 0xbc, 0x79, 0x28, 0xbe, 0x0d, 0x83, 0xe3, 0xd5, 0xa9, 0x60, 0xf4, 0x9e, 0x83, 0x4c, 0x55, 0xb8, + 0xc4, 0x64, 0xb9, 0x3d, 0xd3, 0x32, 0x0d, 0x8d, 0xc1, 0xc8, 0x15, 0xe8, 0x2f, 0xa3, 0x2b, 0xad, + 0xb8, 0xf3, 0xcd, 0xf2, 0xf5, 0xaf, 0x81, 0x30, 0xf4, 0xa8, 0xf7, 0xd1, 0xe4, 0x3d, 0xd0, 0x57, + 0x75, 0xec, 0x25, 0x47, 0x5f, 0x15, 0x6b, 0x30, 0xfa, 0x24, 0xb5, 0x38, 0x48, 0xf3, 0x71, 0xc5, + 0xcf, 0xa5, 0x7c, 0x53, 0x9f, 0x95, 0xa8, 0xb5, 0xf1, 0x7a, 0x02, 0xeb, 0xee, 0xe7, 0x25, 0x5c, + 0x0e, 0xd2, 0x7c, 0x1c, 0xb9, 0x02, 0xbd, 0x93, 0x8e, 0x63, 0x3b, 0xf2, 0xbb, 0x24, 0xca, 0x00, + 0xf2, 0xe5, 0x3c, 0x52, 0x90, 0x0f, 0xc0, 0x20, 0x9f, 0x73, 0xf8, 0xa9, 0x6e, 0xa6, 0xdb, 0xbd, + 0xb6, 0x4c, 0x59, 0xfc, 0xa9, 0x8c, 0x64, 0xb3, 0x71, 0x89, 0x3f, 0x84, 0x37, 0x23, 0xcf, 0x41, + 0x66, 0xbc, 0x3a, 0x25, 0x26, 0xc0, 0x93, 0x7e, 0x51, 0x49, 0x55, 0x94, 0x72, 0x8c, 0x9a, 0x5c, + 0x80, 0x6c, 0x95, 0xa9, 0x4f, 0x0e, 0xd5, 0xa3, 0x7f, 0x6b, 0xb3, 0x90, 0x6d, 0x31, 0xfd, 0x41, + 0x28, 0x62, 0xd9, 0x06, 0x88, 0xef, 0xb2, 0x38, 0x36, 0xdc, 0xfb, 0x5c, 0x80, 0x6c, 0xc9, 0x59, + 0x5a, 0x13, 0xb3, 0x16, 0x62, 0x75, 0x67, 0x69, 0x4d, 0x43, 0x28, 0xb9, 0x06, 0xa0, 0x51, 0xaf, + 0xed, 0x58, 0xf8, 0x64, 0x70, 0x00, 0xcf, 0x13, 0x71, 0x36, 0x74, 0x10, 0x5a, 0x6f, 0xd8, 0x06, + 0xd5, 0x24, 0x92, 0xe2, 0xdf, 0x0f, 0x2f, 0xb7, 0x26, 0x4c, 0x77, 0xe5, 0xb8, 0x0b, 0x77, 0xd1, + 0x85, 0xba, 0x38, 0xb2, 0x8d, 0x77, 0x52, 0x01, 0x7a, 0xa7, 0x9a, 0xfa, 0x92, 0x8b, 0x7d, 0x28, + 0x9c, 0x16, 0xef, 0x31, 0x80, 0xc6, 0xe1, 0x4a, 0x3f, 0xf5, 0x6f, 0xdf, 0x4f, 0x9f, 0xef, 0x0d, + 0x46, 0xdb, 0x1c, 0xf5, 0xd6, 0x6d, 0xe7, 0xb8, 0xab, 0x76, 0xda, 0x55, 0x97, 0xa0, 0xaf, 0xe6, + 0x34, 0xa4, 0xe3, 0x0e, 0xdc, 0x0f, 0xb8, 0x4e, 0x83, 0x1f, 0x75, 0xf8, 0x48, 0x46, 0x37, 0xe1, + 0x7a, 0x48, 0xd7, 0x17, 0xd2, 0x19, 0xae, 0x27, 0xe8, 0x04, 0x52, 0xd0, 0x55, 0x6d, 0xc7, 0x13, + 0x1d, 0x17, 0xd0, 0xb5, 0x6c, 0xc7, 0xd3, 0x7c, 0x24, 0x79, 0x1f, 0xc0, 0x42, 0xb9, 0xea, 0x3f, + 0xdc, 0x19, 0x08, 0x9d, 0x4e, 0xc5, 0x8b, 0x1d, 0x4d, 0x42, 0x93, 0x05, 0x18, 0x98, 0x6f, 0x51, + 0x87, 0x6f, 0x85, 0xf8, 0x23, 0xc0, 0xf7, 0x2a, 0xa2, 0x15, 0xfd, 0x7e, 0x55, 0xfc, 0x1f, 0x90, + 0xf3, 0xf5, 0xc5, 0xf6, 0x7f, 0x6a, 0x21, 0x23, 0xf2, 0x01, 0xc8, 0x95, 0xb8, 0x9d, 0x37, 0x88, + 0x2c, 0x03, 0x91, 0xe1, 0x16, 0x94, 0xa3, 0xf8, 0x9e, 0x5d, 0xc7, 0xbf, 0x35, 0x41, 0x5e, 0xbc, + 0x02, 0xa3, 0x6a, 0x35, 0x64, 0x10, 0xfa, 0xca, 0xf3, 0x73, 0x73, 0x93, 0xe5, 0x85, 0xd1, 0x1e, + 0xd2, 0x0f, 0xd9, 0xda, 0xe4, 0xdc, 0xc4, 0x68, 0xaa, 0xf8, 0x3d, 0xd2, 0x0c, 0xc2, 0x54, 0xeb, + 0xf8, 0x7a, 0x7c, 0x5f, 0xf7, 0x47, 0xa3, 0x78, 0x27, 0x8c, 0x27, 0x06, 0xab, 0xa6, 0xe7, 0x51, + 0x43, 0xac, 0x12, 0x78, 0x67, 0xea, 0xdd, 0xd7, 0x62, 0x78, 0xf2, 0x34, 0x0c, 0x23, 0x4c, 0x5c, + 0x93, 0xf2, 0xfd, 0xb1, 0x28, 0xe0, 0xdc, 0xd7, 0xa2, 0xc8, 0xe2, 0xcf, 0x87, 0x37, 0xe4, 0x33, + 0x54, 0x3f, 0xaa, 0xb7, 0xaa, 0x0f, 0x48, 0x7f, 0x15, 0x7f, 0xb8, 0x97, 0x3f, 0x27, 0xe3, 0x6f, + 0xbc, 0x0f, 0x43, 0x94, 0xe1, 0x31, 0x70, 0x66, 0x17, 0xc7, 0xc0, 0x4f, 0x43, 0x6e, 0x96, 0x7a, + 0xcb, 0xb6, 0xef, 0xa6, 0x87, 0x7e, 0x31, 0xab, 0x08, 0x91, 0xfd, 0x62, 0x38, 0x0d, 0x59, 0x01, + 0xe2, 0x3f, 0xe0, 0x0e, 0x3c, 0xfe, 0xfd, 0x63, 0xe7, 0xb3, 0xb1, 0x7d, 0x4a, 0x0d, 0xc3, 0x3c, + 0xe0, 0x7b, 0x9d, 0x53, 0xc1, 0x8b, 0x02, 0xc9, 0x6f, 0xee, 0xcf, 0x36, 0x0b, 0x39, 0x4e, 0xa3, + 0x25, 0xb0, 0x25, 0xaf, 0xc3, 0xc0, 0xec, 0x54, 0x49, 0x3c, 0xe6, 0xe6, 0x9e, 0x21, 0xe7, 0x02, + 0x29, 0xfa, 0x88, 0x40, 0x24, 0xf8, 0x76, 0x6f, 0xf5, 0x9e, 0x1e, 0x7f, 0xcb, 0x1d, 0x72, 0x61, + 0xda, 0xc2, 0x5f, 0x01, 0x8a, 0xd3, 0x85, 0x40, 0x5b, 0xa2, 0x6f, 0x03, 0x55, 0x59, 0x71, 0xac, + 0xa2, 0x2d, 0xfd, 0xfb, 0x18, 0xdd, 0xf3, 0x30, 0x56, 0x6a, 0xb5, 0x9a, 0x26, 0x35, 0x50, 0x5f, + 0xb4, 0x76, 0x93, 0xba, 0xc2, 0xab, 0x0a, 0x1f, 0x96, 0xe9, 0x1c, 0x59, 0xc7, 0x10, 0x02, 0x75, + 0xa7, 0x1d, 0xf5, 0xa6, 0x8d, 0x97, 0xc5, 0x88, 0x0d, 0x9c, 0xbd, 0xed, 0x54, 0x26, 0x84, 0x5f, + 0x15, 0x8f, 0xd8, 0xe0, 0x83, 0xa3, 0x5e, 0xa6, 0x32, 0x79, 0xf1, 0x9b, 0xd2, 0x70, 0xa6, 0xec, + 0x50, 0xdd, 0xa3, 0xb3, 0x53, 0xa5, 0x52, 0x1b, 0xfd, 0x21, 0x9b, 0x4d, 0x6a, 0x2d, 0x1d, 0xce, + 0xa4, 0xf0, 0x32, 0x8c, 0x04, 0x0d, 0xa8, 0x35, 0xec, 0x16, 0x95, 0x9f, 0x78, 0x36, 0x7c, 0x4c, + 0xdd, 0x65, 0x28, 0x4d, 0x21, 0x25, 0xb7, 0xe0, 0x64, 0x00, 0x29, 0x35, 0x9b, 0xf6, 0xba, 0x46, + 0xdb, 0x2e, 0x77, 0xba, 0xee, 0xe7, 0x4e, 0xd7, 0x21, 0x07, 0x9d, 0xe1, 0xeb, 0x0e, 0x23, 0xd0, + 0x92, 0x4a, 0x15, 0xbf, 0x98, 0x81, 0xb3, 0x77, 0xf4, 0xa6, 0x69, 0x84, 0xa2, 0xd1, 0xa8, 0xdb, + 0xb2, 0x2d, 0x97, 0x1e, 0xa1, 0x31, 0x1e, 0x19, 0x48, 0xd9, 0x03, 0x19, 0x48, 0xf1, 0x2e, 0xea, + 0xdd, 0x77, 0x17, 0xe5, 0xf6, 0xd4, 0x45, 0x7f, 0x90, 0x82, 0x51, 0xff, 0x7d, 0x8a, 0x1c, 0xb6, + 0x43, 0x7a, 0x3c, 0x81, 0x07, 0x90, 0x8a, 0x8f, 0x3d, 0xe2, 0x49, 0x0d, 0xfa, 0x26, 0xef, 0xb7, + 0x4c, 0x87, 0xba, 0x3b, 0x78, 0x20, 0x70, 0x51, 0x1c, 0xb6, 0x8c, 0x51, 0x5e, 0x24, 0x76, 0xce, + 0xc2, 0xc1, 0xf8, 0xb0, 0x98, 0xbf, 0xd0, 0x19, 0xf7, 0x63, 0x91, 0xf0, 0x87, 0xc5, 0xe2, 0x25, + 0x4f, 0xe4, 0xa5, 0x78, 0x48, 0x4a, 0x9e, 0x80, 0xcc, 0xc2, 0xc2, 0x8c, 0x98, 0x87, 0x31, 0x06, + 0x8c, 0xe7, 0xc9, 0x2f, 0xa7, 0x19, 0xb6, 0xf8, 0x3b, 0x69, 0x1e, 0xdd, 0x80, 0x0f, 0xd7, 0x43, + 0x51, 0xc2, 0x71, 0xe8, 0xf7, 0x05, 0x2e, 0xd4, 0x30, 0x78, 0x5c, 0xa2, 0x76, 0x84, 0x5a, 0x77, + 0xf0, 0x90, 0xa8, 0xe0, 0x3f, 0x1a, 0xe0, 0xb7, 0x08, 0xb8, 0x2f, 0xc2, 0x47, 0x03, 0xfe, 0x53, + 0x81, 0xf7, 0xc1, 0x40, 0x30, 0x43, 0xc9, 0xb7, 0x07, 0xc1, 0x74, 0xa6, 0x85, 0x78, 0x65, 0x62, + 0xce, 0xed, 0x63, 0x19, 0xf7, 0xc5, 0xcb, 0x7b, 0xe5, 0x58, 0xbc, 0x07, 0x2c, 0xde, 0xaf, 0x17, + 0xe2, 0xe5, 0x0f, 0xcd, 0x8e, 0xac, 0x78, 0x0f, 0xec, 0xe4, 0xbc, 0xf8, 0xab, 0x29, 0x20, 0xac, + 0x59, 0x55, 0xdd, 0x75, 0xd7, 0x6d, 0xc7, 0xe0, 0x0f, 0x11, 0x0e, 0x45, 0x30, 0x07, 0x77, 0xdb, + 0xf9, 0xbf, 0x0f, 0xc0, 0xc9, 0x88, 0xeb, 0xf4, 0x11, 0x9f, 0xac, 0xae, 0x44, 0x47, 0x53, 0xb7, + 0x17, 0x4e, 0x4f, 0xca, 0xd7, 0xa9, 0xbd, 0x91, 0x77, 0x92, 0xd2, 0x3d, 0xea, 0xfb, 0x61, 0x48, + 0xfc, 0x60, 0x2b, 0xb4, 0x7f, 0x4f, 0x86, 0xa3, 0xd4, 0x65, 0x00, 0x2d, 0x82, 0x26, 0x2f, 0xc0, + 0x00, 0x1b, 0x30, 0x4b, 0x18, 0x2e, 0xaa, 0x2f, 0x7c, 0x3d, 0x64, 0xf8, 0x40, 0x79, 0x3d, 0x09, + 0x28, 0x25, 0x97, 0xf7, 0xfe, 0x1d, 0xbc, 0x51, 0xfb, 0x24, 0x0c, 0x96, 0x2c, 0xcb, 0xe6, 0x81, + 0x6f, 0x5c, 0x71, 0xb1, 0xd1, 0xd1, 0xa6, 0x7f, 0x02, 0xc3, 0x74, 0x84, 0xf4, 0x89, 0x46, 0xbd, + 0xcc, 0x90, 0x5c, 0xf7, 0x5f, 0x40, 0x51, 0x47, 0x98, 0xa7, 0x78, 0xb9, 0xe3, 0x08, 0x58, 0xfc, + 0x01, 0x14, 0x76, 0xde, 0x70, 0xd5, 0xb1, 0x5b, 0xb6, 0x4b, 0x0d, 0x2e, 0xa8, 0xc1, 0xf0, 0x09, + 0x7c, 0x4b, 0x20, 0xf0, 0xb9, 0x65, 0x24, 0x74, 0x53, 0xa4, 0x08, 0xb9, 0x07, 0xa7, 0xfc, 0x6b, + 0xe6, 0xe0, 0x61, 0x6b, 0x65, 0xc2, 0xc5, 0x67, 0x03, 0x83, 0x61, 0x7c, 0xa2, 0x10, 0x35, 0xfe, + 0xa8, 0x7f, 0xa9, 0xe2, 0xbf, 0x8c, 0xad, 0x9b, 0x86, 0xdc, 0xd5, 0x89, 0xfc, 0xc8, 0x57, 0xc0, + 0xe0, 0xac, 0x7e, 0x7f, 0xa2, 0x2d, 0x4e, 0x6e, 0x86, 0x77, 0x7e, 0x77, 0xb3, 0xaa, 0xdf, 0xaf, + 0x1b, 0xa2, 0x9c, 0x62, 0x53, 0xc8, 0x2c, 0x49, 0x1d, 0xce, 0x54, 0x1d, 0x7b, 0xd5, 0xf6, 0xa8, + 0xa1, 0xbc, 0x11, 0x3d, 0x11, 0x3e, 0x2a, 0x6f, 0x09, 0x8a, 0x7a, 0x97, 0xc7, 0xa2, 0x1d, 0xd8, + 0x90, 0x55, 0x38, 0x51, 0x72, 0xdd, 0xf6, 0x2a, 0x0d, 0xef, 0xb7, 0x46, 0xb7, 0xfd, 0x8c, 0xf7, + 0x0a, 0xbf, 0xef, 0x47, 0x74, 0x2c, 0xca, 0xaf, 0xb7, 0xea, 0x9e, 0x29, 0xd7, 0x88, 0xdf, 0xa2, + 0xf2, 0x66, 0xbd, 0xeb, 0x0b, 0x10, 0x23, 0x58, 0xe4, 0xc7, 0x70, 0x78, 0x61, 0xef, 0x06, 0xa2, + 0xc7, 0xe8, 0x17, 0x72, 0xef, 0x46, 0x8a, 0x90, 0x4f, 0xc2, 0xf9, 0x58, 0x6f, 0xf0, 0xaf, 0x62, + 0x7d, 0x4c, 0xa2, 0x4f, 0x5f, 0x55, 0x82, 0xf1, 0x2c, 0xeb, 0x02, 0xad, 0x0b, 0x87, 0x9b, 0xd9, + 0xfe, 0x91, 0xd1, 0x13, 0xda, 0xd9, 0xb8, 0xc0, 0xf8, 0xeb, 0xac, 0xbf, 0x9b, 0x56, 0x66, 0x3a, + 0x6e, 0x03, 0xee, 0x6b, 0xa6, 0x93, 0x67, 0xac, 0xf4, 0x1e, 0x67, 0xac, 0x27, 0xe3, 0x5e, 0x1d, + 0x09, 0xd3, 0xd0, 0x57, 0xc0, 0x88, 0x5f, 0x02, 0xdb, 0xbd, 0x11, 0x2c, 0x65, 0x9d, 0xbb, 0xfb, + 0x82, 0xe8, 0xee, 0x51, 0x34, 0x82, 0x37, 0x94, 0x3e, 0x56, 0xf8, 0x15, 0x7f, 0x2c, 0x05, 0x10, + 0x0e, 0x12, 0xf2, 0xfe, 0x68, 0x5c, 0xc1, 0x54, 0x78, 0xd5, 0x25, 0x62, 0xe1, 0x44, 0x02, 0x09, + 0x92, 0x0b, 0x90, 0xc5, 0x78, 0x49, 0xe9, 0xf0, 0x68, 0x7d, 0xc5, 0xb4, 0x0c, 0x0d, 0xa1, 0x0c, + 0x2b, 0x05, 0x36, 0x41, 0x2c, 0xba, 0x75, 0x70, 0xcb, 0x7e, 0x02, 0x4e, 0xd4, 0xda, 0x8b, 0xb2, + 0xb2, 0xc8, 0x41, 0x30, 0xdc, 0xf6, 0x62, 0xf0, 0xee, 0x3d, 0x12, 0x14, 0x2b, 0x5a, 0xa4, 0xf8, + 0x3b, 0xd2, 0xe6, 0xc2, 0x57, 0x0a, 0x72, 0x19, 0xd2, 0xa6, 0x21, 0xba, 0x35, 0x69, 0xfe, 0xe0, + 0x5a, 0x95, 0x36, 0x0d, 0x32, 0x0b, 0x27, 0xdb, 0xd6, 0x8a, 0x65, 0xaf, 0x5b, 0xf5, 0x86, 0x6d, + 0xb9, 0x9e, 0xa3, 0x9b, 0x96, 0xe7, 0x06, 0xf7, 0xba, 0xfe, 0x1a, 0xc6, 0x49, 0xca, 0x21, 0xc5, + 0x74, 0x8f, 0x46, 0xda, 0x31, 0x28, 0x79, 0x0d, 0x06, 0xf5, 0x75, 0x8c, 0xa7, 0xe2, 0xda, 0x4d, + 0x2a, 0xae, 0x6e, 0x83, 0xfb, 0xd5, 0xd2, 0xdd, 0x5a, 0x99, 0x63, 0xa2, 0x9c, 0x40, 0x5f, 0x77, + 0x05, 0x62, 0x7c, 0x18, 0x06, 0xa5, 0x86, 0x14, 0x4f, 0x01, 0x89, 0x57, 0x5e, 0x5c, 0x81, 0xd3, + 0x89, 0xbc, 0xc8, 0x25, 0x38, 0xe1, 0xc7, 0x17, 0x64, 0xad, 0x68, 0x8b, 0xb8, 0x49, 0xc3, 0xda, + 0x30, 0x03, 0x97, 0x1c, 0xcb, 0x2d, 0x63, 0x24, 0xbe, 0xa7, 0x60, 0x2c, 0xa4, 0x6b, 0xf1, 0x19, + 0x9e, 0x47, 0x2d, 0xd2, 0x4e, 0xf8, 0x94, 0x55, 0x0e, 0x2e, 0x7e, 0x5f, 0x4a, 0x19, 0x41, 0x87, + 0x68, 0x1a, 0xee, 0x68, 0xd4, 0x14, 0x7f, 0x25, 0x03, 0x83, 0x55, 0xdb, 0xf1, 0x44, 0x88, 0xaf, + 0xa3, 0x6d, 0xab, 0x49, 0x27, 0x0a, 0xd9, 0x5d, 0x9c, 0x28, 0x5c, 0x80, 0xac, 0xf4, 0xac, 0x81, + 0xdf, 0x3d, 0x1a, 0x86, 0xa3, 0x21, 0xf4, 0x1d, 0x7e, 0xda, 0x15, 0x77, 0x34, 0xe8, 0xdb, 0xb7, + 0x3b, 0xcf, 0x5f, 0x4e, 0x03, 0xbc, 0xf1, 0xec, 0xb3, 0x0f, 0x71, 0x97, 0x16, 0xbf, 0x25, 0x05, + 0x27, 0xc4, 0xf5, 0xbd, 0x14, 0xb5, 0xb5, 0xcf, 0x77, 0xbc, 0x90, 0xe7, 0x6a, 0x0e, 0xd2, 0x7c, + 0x1c, 0x33, 0xed, 0x26, 0xef, 0x9b, 0x1e, 0xde, 0x60, 0x4a, 0x61, 0x5b, 0xa9, 0x80, 0xc9, 0xa6, + 0x9d, 0x4f, 0x47, 0xde, 0xef, 0x3b, 0x26, 0x64, 0x42, 0x7b, 0x96, 0x15, 0x98, 0x4c, 0x74, 0x4e, + 0x28, 0xfe, 0x40, 0x16, 0xb2, 0x93, 0xf7, 0x69, 0xe3, 0x88, 0x77, 0x8d, 0x74, 0xdd, 0x91, 0xdd, + 0xe7, 0x75, 0xc7, 0x5e, 0x3c, 0xad, 0x5e, 0x0d, 0xfb, 0x33, 0x17, 0xad, 0x5e, 0xe9, 0x79, 0xb5, + 0x7a, 0xbf, 0xa7, 0x8f, 0x9e, 0xa3, 0xde, 0x4f, 0x67, 0x20, 0x53, 0x2b, 0x57, 0x8f, 0xf5, 0xe6, + 0x50, 0xf5, 0xa6, 0xbb, 0x27, 0x4b, 0x31, 0xb8, 0x9c, 0xee, 0x0f, 0x7d, 0xc7, 0x95, 0x7b, 0xe8, + 0x3f, 0xce, 0xc0, 0x48, 0x6d, 0x6a, 0xa1, 0x2a, 0xdd, 0x0f, 0xdd, 0xe2, 0xfe, 0xbd, 0xe8, 0x69, + 0xca, 0xbb, 0xf4, 0x42, 0xcc, 0x70, 0xbd, 0x5d, 0xb1, 0xbc, 0x17, 0x9f, 0xc7, 0x68, 0xaf, 0x78, + 0xa4, 0xca, 0x5f, 0x10, 0xb8, 0xe6, 0xdb, 0xf4, 0x8b, 0x18, 0x2c, 0xc6, 0x67, 0x40, 0x5e, 0x86, + 0xcc, 0x6d, 0xe1, 0xa7, 0xd5, 0x89, 0xcf, 0x73, 0xd7, 0x39, 0x1f, 0x36, 0x09, 0x66, 0xda, 0xa6, + 0x81, 0x1c, 0x58, 0x29, 0x56, 0xf8, 0x86, 0x30, 0x19, 0x76, 0x54, 0x78, 0xc9, 0x2f, 0x7c, 0xa3, + 0x32, 0x41, 0x6a, 0x30, 0x58, 0xa5, 0xce, 0xaa, 0x89, 0x1d, 0xe5, 0xcf, 0xd9, 0xdd, 0x99, 0x9c, + 0xdc, 0xda, 0x2c, 0x0c, 0xb6, 0xc2, 0x42, 0xc8, 0x4c, 0xe6, 0x42, 0xde, 0x04, 0xe0, 0x56, 0xd5, + 0x0e, 0x23, 0x81, 0x5f, 0xc4, 0xfd, 0x3c, 0xdf, 0x32, 0x26, 0xec, 0xdd, 0x24, 0x66, 0x64, 0x05, + 0x46, 0x67, 0x6d, 0xc3, 0xbc, 0x67, 0x72, 0x87, 0x6c, 0xac, 0x20, 0xb7, 0xbd, 0x1b, 0x24, 0xdb, + 0x22, 0xae, 0x4a, 0xe5, 0x92, 0xaa, 0x89, 0x31, 0x2e, 0xfe, 0x78, 0x2f, 0x64, 0x59, 0xb7, 0x1f, + 0x8f, 0xdf, 0xfd, 0x8c, 0xdf, 0x12, 0x8c, 0xde, 0xb5, 0x9d, 0x15, 0xd3, 0x5a, 0x0a, 0xde, 0xd7, + 0x88, 0x33, 0x27, 0xf4, 0xef, 0x5b, 0xe7, 0xb8, 0x7a, 0xf0, 0x14, 0x47, 0x8b, 0x91, 0x6f, 0x33, + 0x82, 0x5f, 0x02, 0xe0, 0x41, 0x46, 0x90, 0xa6, 0x3f, 0x0c, 0x70, 0xc4, 0x43, 0x90, 0xe0, 0x93, + 0x1d, 0x39, 0xc0, 0x51, 0x48, 0x4c, 0xae, 0xf8, 0x1e, 0x52, 0x03, 0xf8, 0x82, 0x07, 0x0f, 0xd7, + 0xd0, 0x43, 0x4a, 0x36, 0x02, 0xb8, 0xaf, 0x54, 0x15, 0x40, 0xba, 0x75, 0x06, 0x45, 0x10, 0x91, + 0xc9, 0x41, 0x04, 0xa0, 0x4d, 0xb8, 0x74, 0xd6, 0x24, 0x1e, 0xe4, 0x45, 0xc5, 0x2d, 0x86, 0x44, + 0xb8, 0x75, 0xf4, 0x8a, 0x09, 0xdd, 0x2a, 0x87, 0xb6, 0x73, 0xab, 0x2c, 0x7e, 0x77, 0x06, 0x06, + 0x19, 0xb7, 0x5a, 0x7b, 0x75, 0x55, 0x77, 0x36, 0x8e, 0x15, 0x79, 0x3f, 0x8a, 0x5c, 0x87, 0x31, + 0xf9, 0x19, 0x0d, 0x33, 0x5d, 0xfd, 0x48, 0x77, 0xc1, 0x21, 0x89, 0x4a, 0xc0, 0x6d, 0x4b, 0x9c, + 0xf7, 0x3d, 0x01, 0xc6, 0x33, 0x43, 0x57, 0x8b, 0xf3, 0x2a, 0x7e, 0x63, 0x0a, 0x46, 0x55, 0x68, + 0xa0, 0xfb, 0xa9, 0x44, 0xdd, 0x7f, 0x1a, 0x06, 0x84, 0x63, 0x8d, 0x6e, 0x08, 0x3f, 0xdf, 0x91, + 0xad, 0xcd, 0x02, 0x60, 0x64, 0x87, 0xba, 0x43, 0x75, 0x43, 0x0b, 0x09, 0xc8, 0x0b, 0x30, 0x84, + 0x3f, 0xee, 0x3a, 0xa6, 0xe7, 0x51, 0xde, 0x19, 0x59, 0x7e, 0xdb, 0xc7, 0x0b, 0xac, 0x73, 0x84, + 0x16, 0x21, 0x2b, 0xfe, 0x5c, 0x1a, 0x06, 0x6a, 0xed, 0x45, 0x77, 0xc3, 0xf5, 0xe8, 0xea, 0x11, + 0xd7, 0x21, 0xff, 0xe0, 0x26, 0x9b, 0x78, 0x70, 0xf3, 0x84, 0x3f, 0xb4, 0xa4, 0x5b, 0xa9, 0x60, + 0x63, 0xe0, 0xfb, 0x2a, 0x87, 0x5a, 0x94, 0xdb, 0xbd, 0x16, 0x15, 0xff, 0x51, 0x1a, 0x46, 0xb9, + 0x4b, 0xc7, 0x84, 0xe9, 0x36, 0x0e, 0xe0, 0x99, 0xd9, 0xe1, 0xcb, 0x74, 0x7f, 0x6e, 0x50, 0x3b, + 0x78, 0xbc, 0x57, 0xfc, 0xf1, 0x34, 0x0c, 0x96, 0xda, 0xde, 0x72, 0xc9, 0xc3, 0xf9, 0xed, 0xa1, + 0x3c, 0xf6, 0xd8, 0xd7, 0xe4, 0x55, 0xfc, 0xd9, 0x14, 0xcf, 0x01, 0xb0, 0x60, 0xaf, 0x50, 0xeb, + 0x00, 0xae, 0xc4, 0x0e, 0xe2, 0xa0, 0xd8, 0xef, 0x89, 0xcc, 0xee, 0x7a, 0x02, 0x2f, 0x72, 0x35, + 0xbb, 0x49, 0x8f, 0xf6, 0x67, 0x1c, 0xe0, 0x45, 0xae, 0x2f, 0x90, 0x03, 0x70, 0x1c, 0x78, 0x77, + 0x09, 0xe4, 0x00, 0xce, 0x73, 0xdf, 0x1d, 0x02, 0xf9, 0xa9, 0x14, 0x0c, 0x8c, 0xdb, 0xde, 0x11, + 0x1f, 0xf8, 0xe2, 0x2b, 0x8e, 0xb6, 0x9a, 0xfb, 0x5f, 0x71, 0xb4, 0x75, 0xb3, 0xf8, 0xcd, 0x69, + 0x38, 0x25, 0xf2, 0x14, 0x89, 0x13, 0xb4, 0xe3, 0xe9, 0x58, 0x0c, 0xb6, 0xb8, 0x68, 0x8e, 0xe7, + 0x21, 0x21, 0x9a, 0xef, 0xcc, 0xc0, 0x29, 0x8c, 0x05, 0xcf, 0xf6, 0x63, 0xef, 0x02, 0x5b, 0x84, + 0x34, 0xa2, 0xee, 0x39, 0xb3, 0x09, 0xee, 0x39, 0x7f, 0xb6, 0x59, 0x78, 0x71, 0x17, 0x29, 0x9e, + 0xae, 0xd6, 0x70, 0x9f, 0xc5, 0xb8, 0xfa, 0x8e, 0x3d, 0x2e, 0xc0, 0x4d, 0xdb, 0xb4, 0x84, 0xaf, + 0x3c, 0x37, 0x93, 0x6b, 0x5b, 0x9b, 0x85, 0xd3, 0x6f, 0xd9, 0xa6, 0x55, 0x57, 0x1d, 0xe6, 0x77, + 0x5b, 0x5f, 0xc8, 0x5a, 0x93, 0xaa, 0x29, 0xfe, 0x5a, 0x0a, 0xce, 0x45, 0xb5, 0xf8, 0xdd, 0x60, + 0x3b, 0xfe, 0xed, 0x34, 0x9c, 0xbe, 0x81, 0xc2, 0x09, 0x5c, 0x0c, 0x8f, 0xe7, 0x2d, 0x31, 0x38, + 0x13, 0x64, 0x73, 0x6c, 0x51, 0x76, 0x96, 0xcd, 0xf1, 0xa4, 0x2e, 0x64, 0xf3, 0x8b, 0x29, 0x38, + 0x39, 0x5f, 0x99, 0x28, 0xbf, 0x4b, 0x46, 0x54, 0xfc, 0x7b, 0x8e, 0xb8, 0xc1, 0x19, 0xfb, 0x9e, + 0x23, 0x6e, 0x7a, 0x7e, 0x36, 0x0d, 0x27, 0x6b, 0xa5, 0xd9, 0x99, 0x77, 0xcb, 0x0c, 0x5e, 0x96, + 0xfd, 0xe1, 0xfd, 0x23, 0x34, 0x61, 0x0b, 0xc8, 0x9f, 0x79, 0xe7, 0x7a, 0x67, 0x3f, 0xf9, 0xb8, + 0x50, 0x8e, 0xf8, 0xd4, 0x7d, 0x20, 0x42, 0x61, 0x9a, 0x1f, 0xa1, 0x3e, 0xe2, 0x9a, 0xff, 0xcf, + 0x73, 0x30, 0x78, 0xab, 0xbd, 0x48, 0x85, 0x43, 0xd8, 0x43, 0x7d, 0x6e, 0x7c, 0x1d, 0x06, 0x85, + 0x18, 0xf0, 0x7e, 0x44, 0x0a, 0x72, 0x2b, 0x82, 0x7c, 0xf1, 0x58, 0x7d, 0x32, 0x11, 0xb9, 0x00, + 0xd9, 0x3b, 0xd4, 0x59, 0x94, 0xe3, 0x25, 0xac, 0x51, 0x67, 0x51, 0x43, 0x28, 0x99, 0x91, 0xfc, + 0x2d, 0xab, 0x15, 0x4c, 0x36, 0x28, 0xae, 0x1c, 0x31, 0x7b, 0x62, 0xe0, 0x16, 0xac, 0xb7, 0x4c, + 0x9e, 0xa6, 0x50, 0x8e, 0xd5, 0xa2, 0x96, 0x24, 0x73, 0x30, 0x16, 0x71, 0x17, 0xc6, 0x4c, 0x7b, + 0xfd, 0x09, 0xec, 0x92, 0x72, 0xec, 0xc5, 0x8b, 0x92, 0x57, 0x61, 0xc8, 0x07, 0xa2, 0x63, 0xea, + 0x40, 0x98, 0xfb, 0x27, 0x60, 0xa5, 0xe4, 0x57, 0x89, 0x14, 0x90, 0x19, 0xe0, 0x15, 0x08, 0x24, + 0x30, 0x50, 0x9c, 0xb5, 0x23, 0x05, 0xc8, 0x0b, 0xc8, 0x00, 0x1f, 0x20, 0xa2, 0xbb, 0xd5, 0x20, + 0x06, 0x13, 0xc0, 0xeb, 0x23, 0x47, 0xc0, 0x79, 0xc8, 0x88, 0x08, 0x19, 0x99, 0x07, 0x08, 0xdd, + 0x62, 0x44, 0x60, 0x9e, 0x5d, 0x3b, 0xec, 0x48, 0x2c, 0xe4, 0x7b, 0xc0, 0xe1, 0xbd, 0xdc, 0x03, + 0x16, 0xbf, 0x29, 0x03, 0x83, 0xa5, 0x56, 0x98, 0x81, 0xef, 0xfd, 0x90, 0x2b, 0xb5, 0x5a, 0xb7, + 0xb5, 0x8a, 0x9c, 0x50, 0x45, 0x6f, 0xb5, 0xea, 0x6d, 0xc7, 0x94, 0x5f, 0x2b, 0x70, 0x22, 0x52, + 0x86, 0xe1, 0x52, 0xab, 0x55, 0x6d, 0x2f, 0x36, 0xcd, 0x86, 0x94, 0x55, 0x8f, 0xe7, 0xb1, 0x6e, + 0xb5, 0xea, 0x2d, 0xc4, 0xa8, 0x89, 0xf5, 0xa2, 0x65, 0xc8, 0x27, 0x31, 0x9c, 0x9d, 0x48, 0x71, + 0xc7, 0x73, 0xa7, 0x15, 0x03, 0x6f, 0xda, 0xb0, 0x6d, 0x57, 0x03, 0x22, 0x91, 0xd3, 0xce, 0x4f, + 0x14, 0xc4, 0x2a, 0x8a, 0xe5, 0xb4, 0x0b, 0x59, 0x92, 0x67, 0xa0, 0xaf, 0xd4, 0x6a, 0x49, 0x77, + 0x5d, 0xe8, 0x16, 0xc7, 0x4a, 0xa9, 0x79, 0x98, 0x05, 0x99, 0xf8, 0x2c, 0x71, 0x3b, 0x6e, 0x3b, + 0x1e, 0x0e, 0xa9, 0xe1, 0xf0, 0xb3, 0xfc, 0xeb, 0x74, 0x5b, 0x8e, 0x20, 0xa5, 0x45, 0xcb, 0x9c, + 0x7f, 0x05, 0x46, 0xa2, 0x2d, 0xde, 0x55, 0xde, 0x9b, 0x3f, 0x4d, 0xa1, 0x54, 0x8e, 0xf8, 0x93, + 0x9d, 0xe7, 0x20, 0x53, 0x6a, 0xb5, 0xc4, 0xa4, 0x76, 0x32, 0xa1, 0x53, 0xd5, 0xf8, 0x20, 0xa5, + 0x56, 0xcb, 0xff, 0xf4, 0x23, 0xfe, 0xf6, 0x6f, 0x4f, 0x9f, 0xfe, 0x53, 0xfc, 0xd3, 0x8f, 0xf6, + 0xbb, 0xbc, 0xe2, 0x17, 0xb2, 0x70, 0xa2, 0xd4, 0x6a, 0x1d, 0x27, 0xb9, 0x39, 0xa8, 0x28, 0x24, + 0xcf, 0x02, 0x48, 0x73, 0x6c, 0x5f, 0xf0, 0x32, 0x79, 0x50, 0x9a, 0x5f, 0xf3, 0x29, 0x4d, 0x22, + 0xf2, 0xd5, 0xaf, 0x7f, 0x37, 0xea, 0x17, 0xfa, 0xd3, 0x0c, 0xec, 0x36, 0x4c, 0x19, 0xec, 0x38, + 0x4c, 0xd9, 0x5f, 0xc9, 0xe0, 0xe4, 0x7a, 0xd4, 0xa3, 0x36, 0x3e, 0x28, 0xaa, 0x21, 0xfa, 0x39, + 0xb7, 0xab, 0x69, 0xe6, 0x27, 0x33, 0xf2, 0x00, 0xc5, 0xcc, 0x29, 0xc7, 0xbd, 0xd0, 0xbb, 0x2f, + 0xfb, 0x7d, 0x44, 0x16, 0xa6, 0x08, 0x25, 0xe7, 0xa7, 0xcc, 0x14, 0x81, 0x0d, 0x1b, 0x0c, 0x55, + 0x37, 0x0d, 0x4d, 0xa1, 0xf5, 0xfb, 0xb0, 0x6f, 0x57, 0x7d, 0xb8, 0x99, 0xc6, 0xe0, 0x25, 0x41, + 0x60, 0xc4, 0xfd, 0x6f, 0x83, 0xae, 0x01, 0x70, 0x07, 0x8b, 0xe0, 0x05, 0xc1, 0x30, 0x8f, 0x81, + 0xc6, 0x33, 0x69, 0x8a, 0x18, 0x68, 0x21, 0x49, 0xe0, 0x90, 0x95, 0x49, 0x74, 0xc8, 0xba, 0x02, + 0xfd, 0x9a, 0xbe, 0xfe, 0x7a, 0x9b, 0x8a, 0x07, 0x6d, 0x7e, 0xdc, 0x61, 0x7d, 0xbd, 0xfe, 0x29, + 0x06, 0xd4, 0x02, 0x34, 0x29, 0x06, 0xd1, 0x6f, 0x24, 0xc7, 0x17, 0x7e, 0x98, 0x1f, 0xc4, 0xbc, + 0xd9, 0x8b, 0xa2, 0x93, 0x0f, 0x41, 0xa6, 0x74, 0xb7, 0x26, 0x24, 0x7b, 0x5e, 0x7a, 0xa2, 0x25, + 0xe4, 0xd5, 0xb1, 0xec, 0xdd, 0x5a, 0xf1, 0xaf, 0xa4, 0x81, 0xc4, 0x29, 0xc9, 0x8b, 0x30, 0x80, + 0xd0, 0x25, 0xa6, 0x33, 0x72, 0x96, 0xfd, 0x75, 0xb7, 0xee, 0x20, 0x34, 0x62, 0x85, 0xfa, 0xa4, + 0xe4, 0x25, 0x80, 0xd2, 0xdd, 0x9a, 0x9f, 0xd0, 0x5a, 0xce, 0xb2, 0xbf, 0xee, 0x26, 0x24, 0xb1, + 0x96, 0x88, 0xd1, 0x80, 0xbd, 0x5b, 0x9b, 0xb6, 0x5d, 0x4f, 0x88, 0x9a, 0x1b, 0xb0, 0xeb, 0x6e, + 0x7d, 0xd9, 0x76, 0xbd, 0x88, 0x01, 0xcb, 0xc9, 0x30, 0x7f, 0xe9, 0xdd, 0x1a, 0x7f, 0xe9, 0x69, + 0x68, 0x76, 0x90, 0x2b, 0x94, 0xe7, 0x2f, 0x5d, 0x77, 0xeb, 0xfc, 0x95, 0xa8, 0x51, 0x77, 0xec, + 0x66, 0x34, 0x7f, 0x69, 0xa4, 0x54, 0xf1, 0xeb, 0xfa, 0x61, 0x74, 0x42, 0xf7, 0xf4, 0x45, 0xdd, + 0xa5, 0xd2, 0xb6, 0xff, 0x84, 0x0f, 0x8b, 0xe6, 0xe7, 0x46, 0x39, 0x18, 0x8b, 0x09, 0x5f, 0xa3, + 0x16, 0x20, 0x2f, 0x87, 0x7c, 0xab, 0x8e, 0xed, 0xd9, 0x0d, 0xbb, 0x19, 0x49, 0x57, 0xbb, 0x58, + 0x6f, 0x09, 0xb0, 0x16, 0x23, 0x24, 0x4f, 0xc3, 0xa0, 0x0f, 0x63, 0x3b, 0x95, 0x4c, 0xa8, 0x33, + 0xc6, 0x22, 0xdb, 0xa8, 0x68, 0x32, 0x9a, 0xbc, 0x04, 0x43, 0xfe, 0x4f, 0x69, 0x0f, 0xc0, 0x73, + 0xef, 0x2e, 0xc6, 0xb6, 0x79, 0x32, 0xa9, 0x5c, 0x14, 0xe7, 0xb7, 0xde, 0x48, 0x51, 0x25, 0xbd, + 0x6d, 0x84, 0x94, 0x7c, 0x0a, 0x46, 0xfc, 0xdf, 0x62, 0x67, 0xc3, 0xfd, 0x23, 0x9f, 0xf6, 0x95, + 0x50, 0x15, 0xeb, 0xd5, 0x28, 0x39, 0xdf, 0xe3, 0x3c, 0xe2, 0xa7, 0x59, 0x35, 0x16, 0xe3, 0x5b, + 0x1c, 0xa5, 0x02, 0x52, 0x81, 0x31, 0x1f, 0x12, 0x6a, 0x68, 0x5f, 0xb8, 0xb5, 0x35, 0x16, 0xeb, + 0x89, 0x4a, 0x1a, 0x2f, 0x45, 0x9a, 0x70, 0x21, 0x02, 0x34, 0xdc, 0x65, 0xf3, 0x9e, 0x27, 0xf6, + 0xa5, 0x22, 0x71, 0x80, 0x48, 0xd1, 0x1d, 0x70, 0xe5, 0x34, 0x75, 0xf1, 0x84, 0x34, 0x1a, 0xe6, + 0xa8, 0x2b, 0x37, 0x52, 0x83, 0x53, 0x3e, 0xfe, 0x46, 0xb9, 0x5a, 0x75, 0xec, 0xb7, 0x68, 0xc3, + 0xab, 0x4c, 0x08, 0x2b, 0x04, 0x83, 0xc3, 0x1a, 0x8b, 0xf5, 0xa5, 0x46, 0x8b, 0x29, 0x05, 0xc3, + 0x45, 0x99, 0x27, 0x16, 0x26, 0x77, 0xe0, 0xb4, 0x04, 0xaf, 0x58, 0xae, 0xa7, 0x5b, 0x0d, 0x1a, + 0x04, 0x65, 0xc2, 0x83, 0x07, 0xc1, 0xd5, 0x14, 0xc8, 0x28, 0xdb, 0xe4, 0xe2, 0xe4, 0x15, 0x18, + 0xf6, 0x11, 0xfc, 0xba, 0x73, 0x10, 0xaf, 0x3b, 0x71, 0x48, 0x1a, 0x8b, 0x75, 0x35, 0x20, 0x41, + 0x94, 0x58, 0xd6, 0xa8, 0x85, 0x8d, 0x96, 0x9f, 0xe2, 0xc0, 0xd7, 0x28, 0x6f, 0xa3, 0x95, 0xa8, + 0x8c, 0x8c, 0x94, 0xbc, 0x1a, 0x6a, 0xd4, 0xbc, 0x63, 0x2e, 0x99, 0x7e, 0x0a, 0xbd, 0xb3, 0x42, + 0x3f, 0x6c, 0x04, 0x26, 0xe9, 0x07, 0x27, 0x3f, 0x5f, 0x82, 0x93, 0x09, 0x3a, 0xb6, 0xab, 0x5d, + 0xe9, 0xa7, 0xd3, 0x61, 0x23, 0x8e, 0xf8, 0xd6, 0x74, 0x1c, 0xfa, 0xfd, 0x2f, 0x11, 0xc6, 0x43, + 0xbe, 0xd3, 0xd0, 0x54, 0x79, 0xf8, 0xf8, 0x88, 0x38, 0x8e, 0xf8, 0x76, 0xf5, 0x20, 0xc4, 0xf1, + 0xa5, 0x54, 0x28, 0x8e, 0x23, 0xbe, 0x85, 0xfd, 0xd9, 0x6c, 0x38, 0x27, 0x1d, 0xef, 0x63, 0x0f, + 0xca, 0x4c, 0x0e, 0xdd, 0x7d, 0x73, 0xbb, 0x70, 0xf7, 0x95, 0x55, 0xb3, 0x6f, 0x6f, 0xaa, 0x49, + 0x5e, 0x81, 0xc1, 0xaa, 0xed, 0x7a, 0x4b, 0x0e, 0x75, 0xab, 0x41, 0xe2, 0x1b, 0x8c, 0x41, 0xd0, + 0x12, 0xe0, 0x7a, 0x2b, 0x1a, 0x98, 0x4f, 0x22, 0x97, 0xe2, 0x15, 0x0e, 0xec, 0x3e, 0x5e, 0x61, + 0xf1, 0x37, 0x32, 0x31, 0x5d, 0xe2, 0x66, 0xef, 0x91, 0xd4, 0xa5, 0x03, 0x98, 0x28, 0xc8, 0xf5, + 0x70, 0x0d, 0xe5, 0xfb, 0x83, 0x5e, 0x29, 0xbe, 0xef, 0xa2, 0xd8, 0x1e, 0x44, 0x49, 0xc8, 0xc7, + 0xe0, 0x6c, 0x04, 0x50, 0xd5, 0x1d, 0x7d, 0x95, 0x7a, 0x61, 0x72, 0x68, 0x8c, 0xd8, 0xe8, 0x97, + 0xae, 0xb7, 0x02, 0xb4, 0x9c, 0x70, 0xba, 0x03, 0x07, 0x49, 0x31, 0xfb, 0x76, 0xf1, 0x56, 0xfb, + 0xf3, 0x99, 0xd0, 0x4c, 0x8a, 0x46, 0x5e, 0xd7, 0xa8, 0xdb, 0x6e, 0x7a, 0x0f, 0x6f, 0x07, 0xef, + 0x2d, 0x17, 0xd6, 0x34, 0x9c, 0x28, 0xdd, 0xbb, 0x47, 0x1b, 0x9e, 0x9f, 0x50, 0xc2, 0x15, 0xb1, + 0x76, 0xf9, 0xb6, 0x45, 0xa0, 0x44, 0x82, 0x00, 0x37, 0x92, 0xae, 0x3b, 0x5a, 0xac, 0xf8, 0x9b, + 0x59, 0xc8, 0x07, 0xdb, 0x86, 0xe0, 0x3d, 0xe6, 0x21, 0x2e, 0xd1, 0x0f, 0x44, 0xaf, 0x98, 0x30, + 0x16, 0x0a, 0x43, 0x3c, 0x84, 0xcb, 0xf7, 0xe2, 0xb6, 0xa4, 0xa0, 0x32, 0x0b, 0x09, 0xf9, 0x4e, + 0xe4, 0xbc, 0xd8, 0x89, 0x90, 0xf0, 0xbd, 0x6b, 0xdd, 0xe5, 0x2c, 0xb4, 0x38, 0x57, 0xf2, 0xf5, + 0x29, 0x38, 0xe5, 0x77, 0xca, 0xfc, 0x22, 0x33, 0xc9, 0x31, 0x26, 0x89, 0xbf, 0x0b, 0xfa, 0x50, + 0xe7, 0xea, 0x78, 0x27, 0x5d, 0x4d, 0x2a, 0xcc, 0x5b, 0x12, 0xc4, 0x85, 0x0a, 0x14, 0xc2, 0x46, + 0x1a, 0x1e, 0x0a, 0xc5, 0xd5, 0x12, 0xeb, 0x3d, 0x7f, 0x03, 0xce, 0x75, 0x64, 0xb9, 0x9d, 0x09, + 0xdc, 0x2b, 0x9b, 0xc0, 0xbf, 0x9e, 0x0a, 0x27, 0x22, 0x45, 0x48, 0xe4, 0x2a, 0x40, 0x08, 0x12, + 0x9b, 0x62, 0x7c, 0x84, 0x16, 0x0a, 0x4d, 0x93, 0x28, 0xc8, 0x3c, 0xe4, 0x84, 0x58, 0xd2, 0x28, + 0x96, 0xf7, 0x6d, 0xd3, 0x0b, 0x57, 0x65, 0x39, 0xe0, 0x86, 0x57, 0x7c, 0xb3, 0x60, 0x73, 0xfe, + 0x25, 0x18, 0xdc, 0xeb, 0x77, 0x7d, 0x7d, 0x06, 0x88, 0xbc, 0x83, 0x3d, 0x44, 0xf3, 0xfe, 0x08, + 0x4f, 0x61, 0x97, 0xa1, 0x9f, 0x7d, 0x02, 0x26, 0xbb, 0x92, 0x82, 0xdb, 0xb7, 0x05, 0x4c, 0x0b, + 0xb0, 0x61, 0x6c, 0xc8, 0xbe, 0xe4, 0xd8, 0x90, 0xc5, 0x6f, 0xcc, 0xc0, 0x19, 0xb9, 0x43, 0x26, + 0x28, 0xe6, 0xcb, 0x39, 0xee, 0x94, 0x77, 0xb0, 0x53, 0x8a, 0x90, 0xe3, 0x1b, 0x17, 0x91, 0xb8, + 0x88, 0x1f, 0x2a, 0x21, 0x44, 0x13, 0x98, 0xe2, 0xbf, 0x4e, 0xc3, 0x70, 0x60, 0x1c, 0xea, 0x8e, + 0xfb, 0x10, 0x77, 0xc7, 0x07, 0x61, 0x18, 0xa3, 0xfb, 0xad, 0x52, 0x8b, 0x47, 0xc0, 0xeb, 0x95, + 0x32, 0x8d, 0xf9, 0x08, 0x91, 0x88, 0x32, 0x42, 0xc8, 0xb4, 0x9f, 0x5b, 0x7e, 0x52, 0xcc, 0x45, + 0x6e, 0xf6, 0x71, 0x78, 0xf1, 0xdb, 0x32, 0x30, 0xe4, 0x4b, 0x79, 0xdc, 0x3c, 0xaa, 0xb7, 0x44, + 0x87, 0x2b, 0xe4, 0x6b, 0x00, 0x55, 0xdb, 0xf1, 0xf4, 0xe6, 0x5c, 0xa8, 0xf9, 0x78, 0xbc, 0xda, + 0x42, 0x28, 0x2f, 0x23, 0x91, 0xe0, 0xfa, 0x15, 0x9a, 0xd5, 0x7c, 0x62, 0xe2, 0xeb, 0x57, 0x00, + 0xd5, 0x24, 0x8a, 0xe2, 0x8f, 0xa4, 0xe1, 0x84, 0xdf, 0x49, 0x93, 0xf7, 0x69, 0xa3, 0xfd, 0x30, + 0xcf, 0x4d, 0x51, 0x69, 0xf7, 0x6e, 0x2b, 0xed, 0xe2, 0x1f, 0x49, 0x13, 0x49, 0xb9, 0x69, 0x1f, + 0x4f, 0x24, 0x7f, 0x11, 0x3a, 0x5e, 0xfc, 0xca, 0x0c, 0x9c, 0xf2, 0xa5, 0x3e, 0xd5, 0xb6, 0xf0, + 0x60, 0xa2, 0xac, 0x37, 0x9b, 0x0f, 0xf3, 0x6e, 0x7c, 0xd0, 0x17, 0xc4, 0xbc, 0x08, 0x97, 0x2b, + 0x92, 0x02, 0xdf, 0x13, 0xe0, 0xba, 0x6d, 0x1a, 0x9a, 0x4c, 0x44, 0x5e, 0x85, 0x21, 0xff, 0x67, + 0xc9, 0x59, 0xf2, 0xb7, 0xe0, 0x78, 0xcd, 0x10, 0x14, 0xd2, 0x9d, 0x48, 0xf4, 0x90, 0x48, 0x81, + 0xe2, 0xb7, 0x64, 0xe0, 0xfc, 0x5d, 0xd3, 0x32, 0xec, 0x75, 0xb7, 0x4c, 0x1d, 0x8f, 0x87, 0x9b, + 0xa1, 0x72, 0xc8, 0xb3, 0x5a, 0x1b, 0xed, 0x74, 0x39, 0xe4, 0x99, 0xcb, 0x41, 0x9a, 0x8f, 0x23, + 0x2f, 0xc0, 0x50, 0x8d, 0x3a, 0xa6, 0xde, 0x9c, 0x6b, 0xaf, 0x2e, 0x52, 0xdf, 0xfd, 0x0c, 0xfd, + 0xf0, 0x5c, 0x84, 0xd7, 0x2d, 0x44, 0x68, 0x11, 0x32, 0x72, 0x0e, 0x32, 0xb7, 0xab, 0x73, 0xe2, + 0xe2, 0x08, 0xb3, 0xc5, 0xb5, 0x5b, 0x96, 0xc6, 0x60, 0xe4, 0x75, 0x38, 0x5d, 0xd6, 0x66, 0x26, + 0x4c, 0x97, 0x07, 0x27, 0x31, 0x6d, 0xab, 0x6a, 0x63, 0xb4, 0xc8, 0x6c, 0xf8, 0x85, 0x0d, 0xa7, + 0x59, 0x37, 0x24, 0x8a, 0x7a, 0x0b, 0x49, 0xb4, 0xe4, 0x92, 0xe4, 0x0a, 0xf4, 0xdf, 0xa2, 0x1b, + 0xb7, 0xd1, 0x4f, 0xa2, 0x17, 0x1d, 0x05, 0xf1, 0x22, 0x74, 0x85, 0x6e, 0xd4, 0xdb, 0x0c, 0xa8, + 0x05, 0x68, 0x32, 0x0e, 0xa3, 0x93, 0xf7, 0x3d, 0x6a, 0x19, 0xd4, 0x08, 0x8a, 0x30, 0xd1, 0xf6, + 0xfa, 0xa1, 0xdc, 0x38, 0xae, 0x1e, 0x96, 0x8d, 0xd1, 0x23, 0x0f, 0x91, 0x96, 0x31, 0xe0, 0xd1, + 0x17, 0xde, 0x51, 0x04, 0x69, 0x1c, 0x65, 0x1e, 0x0a, 0x7d, 0xf1, 0xb7, 0xfa, 0x82, 0xde, 0xf1, + 0x33, 0x7e, 0x1f, 0xf9, 0x43, 0xd0, 0xc3, 0xce, 0xf4, 0xfd, 0x3a, 0x9c, 0x56, 0x45, 0xea, 0x04, + 0x39, 0x55, 0x84, 0x66, 0xad, 0x73, 0x82, 0xba, 0x9f, 0xee, 0x5a, 0xdc, 0xa4, 0x6a, 0xc9, 0x25, + 0xd5, 0xe4, 0xe1, 0x7d, 0x3b, 0x49, 0x1e, 0xfe, 0x14, 0xe4, 0x26, 0xec, 0x55, 0xdd, 0xf4, 0xa3, + 0x7c, 0xe1, 0x1c, 0x1b, 0xd4, 0x8b, 0x18, 0x4d, 0x50, 0x30, 0xfe, 0xa2, 0x62, 0xec, 0xb2, 0x81, + 0x90, 0xbf, 0x5f, 0x80, 0xd9, 0xd0, 0x9a, 0x4c, 0x44, 0x6c, 0x18, 0x16, 0xd5, 0x89, 0x7b, 0x4f, + 0xc0, 0xad, 0xed, 0x0b, 0xbe, 0x8c, 0x3a, 0xab, 0xd5, 0xd5, 0x48, 0x39, 0xbe, 0xc9, 0xe5, 0x39, + 0xcd, 0xc5, 0xc7, 0xf0, 0x1b, 0x50, 0x2d, 0xca, 0x5f, 0x4d, 0x1a, 0x3e, 0xb8, 0x83, 0xa4, 0xe1, + 0x64, 0x12, 0xc6, 0x30, 0x77, 0x45, 0xb0, 0xd1, 0x65, 0x2a, 0x31, 0x84, 0x26, 0x3f, 0x5e, 0xa7, + 0xf1, 0x74, 0x17, 0xec, 0xe3, 0xea, 0x0d, 0x81, 0xd6, 0xe2, 0x25, 0xd8, 0x3c, 0x32, 0x37, 0x53, + 0xc2, 0x7b, 0xb8, 0x7e, 0x3e, 0x8f, 0x58, 0x4d, 0x5d, 0x63, 0x30, 0x72, 0x17, 0x86, 0xd8, 0xbc, + 0x16, 0x0c, 0x93, 0x11, 0xd4, 0x94, 0xa2, 0x22, 0x85, 0x84, 0xa9, 0x8f, 0xaf, 0x5e, 0x8d, 0x10, + 0xa1, 0x45, 0x18, 0x9d, 0x7f, 0x0d, 0x48, 0x5c, 0x4e, 0xbb, 0xba, 0xc4, 0xfb, 0xe5, 0x6c, 0xb8, + 0xd3, 0x3f, 0xea, 0x6e, 0x58, 0x07, 0xb1, 0xfe, 0x45, 0x32, 0xc9, 0xf6, 0xbe, 0x93, 0x99, 0x64, + 0x73, 0x07, 0x9b, 0x49, 0x36, 0x3a, 0xa3, 0xf5, 0xed, 0x63, 0x46, 0xfb, 0x48, 0x62, 0x0a, 0x5e, + 0x7e, 0x3f, 0x22, 0xc1, 0xe5, 0xd5, 0x5c, 0xa6, 0x2f, 0xfe, 0x51, 0x0a, 0xc6, 0x62, 0x29, 0x6c, + 0xc8, 0x73, 0x00, 0x1c, 0x22, 0x85, 0x99, 0x46, 0x9f, 0xc2, 0x30, 0xad, 0x8d, 0xb0, 0xcf, 0x42, + 0x32, 0x72, 0x0d, 0xfa, 0xf9, 0x2f, 0x11, 0x06, 0x30, 0x5e, 0xa4, 0xdd, 0x36, 0x0d, 0x2d, 0x20, + 0x0a, 0x6b, 0xc1, 0x0b, 0xf5, 0x4c, 0x62, 0x11, 0x6f, 0xa3, 0x15, 0xd4, 0x82, 0x97, 0xe9, 0x65, + 0x18, 0x9e, 0x9d, 0x2a, 0xdd, 0x31, 0xf5, 0x71, 0xc7, 0x5e, 0x77, 0xc5, 0xc5, 0x58, 0x3f, 0xf7, + 0xf0, 0x66, 0xe5, 0xd6, 0x4c, 0xbd, 0xbe, 0xc8, 0x51, 0xf2, 0x65, 0x7e, 0xa4, 0x4c, 0xf1, 0xeb, + 0xd2, 0x30, 0x14, 0x7c, 0x75, 0xc9, 0x38, 0xac, 0x21, 0x94, 0x13, 0x29, 0x85, 0x32, 0xdb, 0xa5, + 0x14, 0x52, 0xd6, 0x25, 0x91, 0x43, 0xe8, 0xe0, 0x5e, 0x3f, 0x7e, 0x26, 0x0d, 0x27, 0x82, 0x5a, + 0x0f, 0xf1, 0x02, 0xf8, 0x01, 0x12, 0xc9, 0xd7, 0xa7, 0x20, 0x3f, 0x6e, 0x36, 0x9b, 0xa6, 0xb5, + 0x54, 0xb1, 0xee, 0xd9, 0xce, 0x2a, 0x2e, 0x1c, 0x87, 0x77, 0x11, 0x51, 0xfc, 0xea, 0x14, 0x8c, + 0x89, 0x06, 0x95, 0x75, 0xc7, 0x38, 0xbc, 0x53, 0x5e, 0xb5, 0x25, 0x87, 0xa7, 0x2f, 0xc5, 0x1f, + 0x4a, 0x03, 0xcc, 0xd8, 0x8d, 0x95, 0x23, 0xfe, 0x78, 0xf2, 0x65, 0xc8, 0xf1, 0xe7, 0x27, 0x42, + 0x63, 0xc7, 0xc4, 0x23, 0x41, 0xf6, 0x69, 0x1c, 0x31, 0x3e, 0x2a, 0x96, 0x97, 0x1c, 0x7f, 0xc1, + 0x92, 0x4f, 0x69, 0xa2, 0x08, 0xab, 0x94, 0xd1, 0x89, 0xf5, 0x2f, 0xa8, 0x94, 0xc1, 0xa2, 0x95, + 0x6e, 0x6d, 0x16, 0xb2, 0x4d, 0xbb, 0xb1, 0xa2, 0x21, 0x7d, 0xf1, 0x3f, 0xa7, 0xb8, 0xec, 0x8e, + 0xf8, 0x13, 0x70, 0xff, 0xf3, 0xb3, 0xbb, 0xfc, 0xfc, 0xbf, 0x91, 0x82, 0x53, 0x1a, 0x6d, 0xd8, + 0x6b, 0xd4, 0xd9, 0x28, 0xdb, 0x06, 0xbd, 0x41, 0x2d, 0xea, 0x1c, 0xd6, 0x88, 0xfa, 0x51, 0x4c, + 0x93, 0x10, 0x36, 0xe6, 0xb6, 0x4b, 0x8d, 0xa3, 0x93, 0x1f, 0xaf, 0xf8, 0x5f, 0xfa, 0x20, 0x9f, + 0xb8, 0x3b, 0x38, 0xb2, 0xd6, 0x69, 0xc7, 0x2d, 0x5f, 0xf6, 0xa0, 0xb6, 0x7c, 0xbd, 0xbb, 0xdb, + 0xf2, 0xe5, 0x76, 0xbb, 0xe5, 0xeb, 0xdb, 0xc9, 0x96, 0x6f, 0x55, 0xdd, 0xf2, 0xf5, 0xe3, 0x96, + 0xef, 0xb9, 0xae, 0x5b, 0xbe, 0x49, 0xcb, 0xd8, 0xe3, 0x86, 0x2f, 0x62, 0xaf, 0x0f, 0xbc, 0x93, + 0xf6, 0x3a, 0x1c, 0xac, 0xbd, 0xbe, 0x97, 0x9d, 0xea, 0x65, 0x36, 0x29, 0x36, 0x6c, 0xc7, 0xa0, + 0x86, 0xd8, 0xa0, 0xe2, 0xdd, 0x95, 0x23, 0x60, 0x5a, 0x80, 0x25, 0xcf, 0x2b, 0x36, 0xfc, 0x30, + 0xda, 0xf0, 0xc8, 0x5e, 0xb6, 0xe1, 0xa3, 0x96, 0xbb, 0x62, 0xea, 0x8c, 0xec, 0xdd, 0xd4, 0x39, + 0x80, 0x8d, 0xe9, 0x7f, 0x4c, 0xc3, 0x98, 0xb4, 0x23, 0x3e, 0x80, 0xe5, 0xb8, 0x04, 0x27, 0x24, + 0x86, 0xb8, 0x41, 0x48, 0x87, 0x4e, 0xb3, 0x6c, 0x93, 0xad, 0xfa, 0xdc, 0xaa, 0xf4, 0xac, 0x7a, + 0x3f, 0x29, 0xae, 0x98, 0x05, 0x82, 0xea, 0x7d, 0x38, 0xef, 0x12, 0x53, 0xfc, 0xd2, 0x02, 0x7a, + 0xc9, 0x6f, 0x2c, 0xbb, 0x87, 0x3c, 0xb7, 0x2b, 0x70, 0x4a, 0x6a, 0x4c, 0xa9, 0xed, 0x2d, 0xdb, + 0x0e, 0x6b, 0x45, 0xaf, 0x08, 0x4d, 0xee, 0xf3, 0x4a, 0xa0, 0x11, 0xe9, 0x3b, 0x43, 0x4c, 0x5d, + 0xf7, 0x51, 0x5a, 0x22, 0xd3, 0xe2, 0xf7, 0xa6, 0x92, 0x6b, 0x23, 0x97, 0x20, 0x8b, 0x72, 0x93, + 0x72, 0x78, 0x2a, 0x22, 0x43, 0x3c, 0x79, 0x3a, 0x98, 0x64, 0xd2, 0xe1, 0xd3, 0x17, 0x3e, 0xb9, + 0xc8, 0x0f, 0x87, 0xc5, 0x34, 0xf3, 0x1a, 0x0c, 0x89, 0x33, 0xdc, 0x5b, 0x74, 0x23, 0x48, 0xf3, + 0x82, 0x39, 0xa7, 0xc4, 0x21, 0x2f, 0x9e, 0x4f, 0x46, 0x5c, 0xf2, 0x22, 0x25, 0x8a, 0xdf, 0x93, + 0x82, 0x4b, 0x1a, 0xb5, 0xe8, 0xba, 0xbe, 0xd8, 0xa4, 0x52, 0xcb, 0xc5, 0x0a, 0xcc, 0x74, 0xd6, + 0x74, 0x57, 0x75, 0xaf, 0xb1, 0xbc, 0x2f, 0x0d, 0x9a, 0x82, 0x21, 0x79, 0x9d, 0xd8, 0xc5, 0x1a, + 0x12, 0x29, 0x57, 0xfc, 0xdd, 0x2c, 0xf4, 0x8d, 0xdb, 0xde, 0x4d, 0x7b, 0x9f, 0x69, 0xa9, 0xc3, + 0xa5, 0x35, 0xbd, 0x8b, 0xb3, 0xc7, 0x67, 0xb0, 0x72, 0x29, 0x4f, 0x13, 0x1e, 0x05, 0x2f, 0xda, + 0xb1, 0x9c, 0x64, 0x3e, 0xd9, 0x2e, 0x13, 0x52, 0xbf, 0x08, 0x03, 0x18, 0x12, 0x4b, 0xba, 0xbb, + 0xc1, 0xc7, 0x20, 0x1e, 0x03, 0xaa, 0x75, 0x84, 0xa4, 0xe4, 0x63, 0x91, 0x50, 0xe2, 0xb9, 0xfd, + 0x27, 0xb0, 0x96, 0xa3, 0x8a, 0x3f, 0xc7, 0xaf, 0xfd, 0xb1, 0x4d, 0x52, 0xba, 0x3e, 0x3c, 0xd5, + 0x53, 0x9a, 0x14, 0x10, 0x1e, 0x60, 0x72, 0xe9, 0x32, 0x0c, 0x8f, 0xdb, 0x9e, 0xf4, 0xf0, 0x60, + 0x20, 0x7c, 0x1b, 0xcf, 0x24, 0x9f, 0xfc, 0xea, 0x20, 0x5a, 0x86, 0x5c, 0x81, 0x5e, 0x9e, 0xd7, + 0x17, 0xc2, 0x73, 0x0d, 0xcc, 0xe6, 0x2b, 0xbf, 0xc8, 0x44, 0x8a, 0xe2, 0x1f, 0x67, 0x61, 0xc8, + 0x2f, 0x79, 0x48, 0x6a, 0xf6, 0x7e, 0xc8, 0x4d, 0xdb, 0x52, 0xda, 0x26, 0x7c, 0xd7, 0xb0, 0x6c, + 0xbb, 0xca, 0x83, 0x0d, 0x41, 0xc4, 0x3a, 0x68, 0xce, 0x36, 0xe4, 0x57, 0x39, 0xd8, 0x41, 0x96, + 0x6d, 0xc4, 0xc2, 0x2f, 0x04, 0x84, 0x6c, 0x3e, 0xc2, 0x07, 0x4d, 0xd2, 0x0d, 0xa1, 0xf2, 0x88, + 0x09, 0xf1, 0x92, 0x02, 0xe7, 0x76, 0xab, 0xc0, 0x7d, 0x7b, 0x55, 0xe0, 0xfe, 0x83, 0x55, 0xe0, + 0x37, 0x61, 0x08, 0x6b, 0xf2, 0x73, 0x23, 0x6f, 0x6f, 0xeb, 0x9c, 0x13, 0xe6, 0xc8, 0x30, 0x6f, + 0xb7, 0xc8, 0x90, 0x8c, 0x56, 0x48, 0x84, 0x95, 0xa2, 0xe6, 0xb0, 0x8f, 0x13, 0x8e, 0xdf, 0x48, + 0x41, 0x9f, 0xc8, 0x5e, 0xb6, 0x2f, 0x8d, 0x7b, 0x0e, 0x06, 0x05, 0x1b, 0x69, 0x99, 0xc6, 0x9b, + 0x3c, 0x3f, 0x77, 0x1b, 0x72, 0xd2, 0x64, 0x2a, 0xf2, 0x4a, 0x50, 0x08, 0xdf, 0x2c, 0x66, 0xc2, + 0xd4, 0x72, 0x61, 0xc2, 0x37, 0x23, 0xfa, 0x14, 0x39, 0x24, 0x27, 0x17, 0x20, 0x3b, 0xc1, 0x9a, + 0x2a, 0x45, 0x40, 0x67, 0x4d, 0xd1, 0x10, 0x5a, 0xfc, 0x74, 0x16, 0x46, 0x94, 0x03, 0xcd, 0xa7, + 0x60, 0x40, 0x1c, 0x28, 0x9a, 0x7e, 0x2a, 0x26, 0xbc, 0xca, 0x0b, 0x80, 0x5a, 0x3f, 0xff, 0xb3, + 0x62, 0x90, 0x8f, 0x40, 0x9f, 0xed, 0xa2, 0x75, 0x81, 0xdf, 0x32, 0x12, 0x0e, 0xa1, 0xf9, 0x1a, + 0x6b, 0x3b, 0x1f, 0x1c, 0x82, 0x44, 0xd6, 0x48, 0xdb, 0xc5, 0x4f, 0x7b, 0x1e, 0x06, 0x74, 0xd7, + 0xa5, 0x5e, 0xdd, 0xd3, 0x97, 0xe4, 0xec, 0x4c, 0x01, 0x50, 0x1e, 0x1d, 0x08, 0x5c, 0xd0, 0x97, + 0xc8, 0x6b, 0x30, 0xdc, 0x70, 0x28, 0xda, 0x1f, 0x7a, 0x93, 0xb5, 0x52, 0xda, 0x69, 0x44, 0x10, + 0xf2, 0xba, 0x1a, 0x22, 0x2a, 0x06, 0xb9, 0x03, 0xc3, 0xe2, 0x73, 0xf8, 0x83, 0x22, 0x1c, 0x68, + 0x23, 0xe1, 0x8a, 0xc7, 0x45, 0xc2, 0x9f, 0x14, 0x89, 0x77, 0x65, 0x32, 0xb9, 0xcc, 0xd7, 0x90, + 0x48, 0xc9, 0x3c, 0x90, 0x75, 0xba, 0x88, 0x76, 0x08, 0xab, 0x8b, 0x27, 0x17, 0x11, 0xc9, 0xc6, + 0xf1, 0x31, 0x56, 0x1c, 0x2b, 0xbf, 0x51, 0x5b, 0xa7, 0x8b, 0xa5, 0x08, 0x92, 0xdc, 0x85, 0xd3, + 0xf1, 0x22, 0xec, 0x93, 0xf9, 0xbd, 0xd6, 0x13, 0x5b, 0x9b, 0x85, 0x42, 0x22, 0x81, 0xc4, 0xf6, + 0x64, 0x8c, 0x6d, 0xc5, 0xb8, 0x99, 0xed, 0xef, 0x1b, 0xed, 0xd7, 0x46, 0x58, 0x59, 0xdf, 0xaa, + 0x37, 0x8d, 0xe2, 0xcf, 0xa7, 0x98, 0xf5, 0xce, 0x3e, 0x68, 0x92, 0x09, 0x82, 0xe9, 0xfa, 0xea, + 0x2e, 0x75, 0x7d, 0x35, 0xcc, 0x8b, 0x9e, 0x73, 0xbb, 0xcc, 0xae, 0x9a, 0xc0, 0x92, 0xab, 0x90, + 0x33, 0xe4, 0x83, 0xcc, 0x33, 0xd1, 0x4e, 0xf0, 0xeb, 0xd1, 0x04, 0x15, 0xb9, 0x0c, 0xd9, 0xb6, + 0x1b, 0xbc, 0xf2, 0x48, 0x34, 0x52, 0x34, 0xa4, 0x28, 0xfe, 0xe5, 0x34, 0x0c, 0x49, 0x5f, 0x73, + 0x7d, 0x5f, 0x9f, 0xf3, 0xa1, 0x9d, 0x35, 0xd3, 0xf7, 0xa6, 0xc3, 0xed, 0xad, 0xdf, 0xe4, 0xe7, + 0x03, 0x51, 0xec, 0xe8, 0x2e, 0x55, 0x08, 0xe6, 0x45, 0xf1, 0xa1, 0xb9, 0x9d, 0xef, 0xe8, 0x19, + 0xfd, 0xcd, 0x6c, 0x7f, 0x7a, 0x34, 0x73, 0x33, 0xdb, 0x9f, 0x1d, 0xed, 0xc5, 0x38, 0x86, 0x98, + 0x78, 0x80, 0x1f, 0x97, 0x58, 0xf7, 0xcc, 0xa5, 0x23, 0xfe, 0xa4, 0xed, 0x60, 0x63, 0x3c, 0x2a, + 0xb2, 0x39, 0xe2, 0xef, 0xdb, 0xde, 0x51, 0xd9, 0x1c, 0xe7, 0x51, 0x17, 0xb2, 0xf9, 0xcd, 0x14, + 0xe4, 0x13, 0x65, 0x53, 0x3a, 0x24, 0x07, 0xab, 0x83, 0xcb, 0xa6, 0xfe, 0xe5, 0x34, 0x8c, 0x55, + 0x2c, 0x8f, 0x2e, 0xf1, 0xcd, 0xe5, 0x11, 0x9f, 0x2a, 0x6e, 0xc1, 0xa0, 0xf4, 0x31, 0xa2, 0xcf, + 0x1f, 0x09, 0x0e, 0x36, 0x42, 0x54, 0x07, 0x4e, 0x72, 0xe9, 0x83, 0x7b, 0x20, 0xa8, 0x0a, 0xf9, + 0x88, 0xcf, 0x39, 0x47, 0x43, 0xc8, 0x47, 0x7c, 0xf2, 0x7a, 0x40, 0x85, 0xfc, 0x99, 0x0c, 0x9c, + 0x4c, 0xa8, 0x9c, 0x5c, 0x42, 0xc7, 0x46, 0x0c, 0x5b, 0x98, 0x0a, 0x9f, 0x22, 0xb8, 0xed, 0x45, + 0x8c, 0x58, 0xa8, 0xf9, 0x48, 0xb2, 0x80, 0x31, 0x3f, 0xe6, 0x2b, 0x13, 0x65, 0x21, 0xd5, 0xa2, + 0x14, 0xbd, 0x84, 0x81, 0x93, 0xbe, 0x2c, 0x88, 0x0b, 0x62, 0x9b, 0x46, 0x43, 0x89, 0x0b, 0xc2, + 0xca, 0x90, 0x8f, 0xc3, 0x40, 0xe9, 0xed, 0xb6, 0x43, 0x91, 0x2f, 0x97, 0xf8, 0x93, 0x01, 0x5f, + 0x1f, 0x91, 0xc4, 0x99, 0x87, 0x38, 0x61, 0x14, 0x2a, 0xef, 0x90, 0x21, 0x99, 0x87, 0xdc, 0x0d, + 0xd3, 0x9b, 0x6e, 0x2f, 0x8a, 0x5e, 0x08, 0x42, 0x1b, 0x72, 0x68, 0x12, 0x5f, 0xdc, 0x95, 0xf3, + 0x10, 0xed, 0xf2, 0x1e, 0x88, 0x17, 0x20, 0x33, 0xd0, 0x5b, 0xba, 0x5b, 0xd3, 0x4a, 0xa2, 0x27, + 0x1e, 0x93, 0x03, 0xb8, 0x94, 0x3a, 0xb2, 0xc3, 0x70, 0x14, 0xba, 0x7c, 0x40, 0x82, 0xf4, 0xc5, + 0xaf, 0x4b, 0xc1, 0xf9, 0xce, 0xc2, 0x23, 0xcf, 0x40, 0x9f, 0x66, 0x37, 0x69, 0x49, 0x9b, 0x13, + 0x3d, 0x83, 0xd2, 0xf4, 0x33, 0x68, 0xcb, 0xd2, 0x14, 0x64, 0xe4, 0xc3, 0x30, 0x58, 0x71, 0xdd, + 0x36, 0x75, 0x6a, 0xcf, 0xdd, 0xd6, 0x2a, 0x62, 0xcb, 0x8a, 0x5b, 0x22, 0x13, 0xc1, 0x75, 0xf7, + 0x39, 0x25, 0x6e, 0xa2, 0x4c, 0x5f, 0xfc, 0x9a, 0x14, 0x5c, 0xe8, 0x26, 0x74, 0xf2, 0x1c, 0xf4, + 0x2f, 0x50, 0x4b, 0xb7, 0xbc, 0xca, 0x84, 0x68, 0x12, 0xee, 0x00, 0x3d, 0x84, 0x45, 0x37, 0x32, + 0x01, 0x21, 0x2b, 0xc4, 0xcf, 0x8f, 0x03, 0xff, 0x19, 0x7e, 0xd6, 0x8d, 0x30, 0xa5, 0x90, 0x4f, + 0x58, 0xfc, 0x18, 0x9c, 0xeb, 0xd8, 0x47, 0xe4, 0x23, 0x30, 0x34, 0xef, 0x2c, 0xe9, 0x96, 0xf9, + 0x36, 0x1f, 0x62, 0xa9, 0x70, 0x97, 0x6d, 0x4b, 0x70, 0x79, 0xe7, 0x27, 0xd3, 0x17, 0x17, 0x21, + 0xdf, 0xa9, 0xc3, 0xc8, 0x14, 0x8c, 0x60, 0x64, 0xfd, 0x92, 0xd5, 0x58, 0xb6, 0x9d, 0x50, 0xf6, + 0xf8, 0xe2, 0xd3, 0x63, 0x98, 0xba, 0x8e, 0x28, 0xa5, 0x0f, 0x94, 0x52, 0xc5, 0x5f, 0x4a, 0xc3, + 0x50, 0xb5, 0xd9, 0x5e, 0x32, 0xa5, 0x85, 0x79, 0xcf, 0xfb, 0x19, 0x7f, 0x77, 0x91, 0xde, 0xdd, + 0xee, 0x82, 0x4d, 0x67, 0xce, 0x1e, 0xa7, 0x33, 0xbf, 0x1c, 0x79, 0x05, 0x72, 0x2d, 0xfc, 0x0e, + 0xf5, 0xca, 0x80, 0x7f, 0x5d, 0xa7, 0x2b, 0x03, 0x5e, 0x86, 0xcd, 0x5f, 0x8d, 0x7d, 0xcc, 0x5f, + 0x61, 0x59, 0x49, 0xa0, 0xe1, 0x22, 0x7c, 0x2c, 0xd0, 0x03, 0x11, 0x68, 0xb8, 0xe0, 0x1e, 0x0b, + 0x74, 0x1f, 0x02, 0xfd, 0xc7, 0x69, 0x18, 0x89, 0x56, 0x49, 0x9e, 0x81, 0x41, 0x5e, 0x0d, 0x3f, + 0x77, 0x4b, 0x49, 0xaf, 0x41, 0x42, 0xb0, 0x06, 0xfc, 0x87, 0x38, 0x40, 0x3c, 0xb1, 0xac, 0xbb, + 0xf5, 0xf0, 0x04, 0x8c, 0xbb, 0x2c, 0xf4, 0xf3, 0x93, 0x76, 0x05, 0xa5, 0x8d, 0x2c, 0xeb, 0x6e, + 0x39, 0xfc, 0x4d, 0x26, 0x81, 0x38, 0xb4, 0xed, 0xd2, 0x28, 0x03, 0xee, 0x4a, 0xc8, 0x57, 0x8f, + 0x18, 0x56, 0x1b, 0xe3, 0x30, 0x99, 0xcd, 0x27, 0x82, 0x66, 0xa3, 0x32, 0xf4, 0x76, 0x3f, 0x45, + 0x7e, 0x62, 0x6b, 0xb3, 0x70, 0x5a, 0xa2, 0x4f, 0x3e, 0x46, 0xe6, 0x04, 0x13, 0xba, 0xa7, 0xf3, + 0x43, 0x0f, 0xbf, 0x03, 0x8a, 0xff, 0xf6, 0xf3, 0x29, 0xe8, 0x9d, 0xb7, 0xe8, 0xfc, 0x3d, 0xf2, + 0x2c, 0x0c, 0x30, 0x8d, 0x99, 0xb1, 0x59, 0x67, 0xa6, 0x84, 0xcf, 0x90, 0xa4, 0x4a, 0x88, 0x98, + 0xee, 0xd1, 0x42, 0x2a, 0xf2, 0x3c, 0x40, 0xf8, 0x38, 0x58, 0xa8, 0x1f, 0x91, 0xcb, 0x70, 0xcc, + 0x74, 0x8f, 0x26, 0xd1, 0xf9, 0xa5, 0xc4, 0xd3, 0xca, 0x4c, 0xbc, 0x14, 0xc7, 0xf8, 0xa5, 0xc4, + 0x00, 0x99, 0x01, 0xc2, 0x7e, 0x55, 0x75, 0xd7, 0x5d, 0xb7, 0x1d, 0xa3, 0xbc, 0xac, 0x5b, 0x4b, + 0x54, 0xdd, 0x9e, 0xc6, 0x29, 0xa6, 0x7b, 0xb4, 0x84, 0x72, 0xe4, 0x43, 0x30, 0x24, 0x3b, 0x9b, + 0xab, 0x8e, 0x4e, 0x32, 0x6e, 0xba, 0x47, 0x8b, 0xd0, 0x92, 0x0f, 0xc0, 0xa0, 0xf8, 0x7d, 0xd3, + 0x16, 0x5e, 0x14, 0x52, 0x0c, 0x3a, 0x09, 0x35, 0xdd, 0xa3, 0xc9, 0x94, 0x52, 0xa5, 0x55, 0xc7, + 0xb4, 0x3c, 0xe1, 0xa3, 0xab, 0x56, 0x8a, 0x38, 0xa9, 0x52, 0xfc, 0x4d, 0x3e, 0x0c, 0xc3, 0x41, + 0x70, 0x3f, 0x7c, 0x08, 0xc3, 0x6f, 0x17, 0x4e, 0x2b, 0x85, 0x39, 0x72, 0xba, 0x47, 0x8b, 0x52, + 0x93, 0xcb, 0x90, 0xd3, 0xa8, 0x6b, 0xbe, 0xed, 0xbb, 0x48, 0x8c, 0x48, 0x03, 0xdd, 0x7c, 0x9b, + 0x49, 0x49, 0xe0, 0x59, 0xef, 0x84, 0x3e, 0x19, 0xe2, 0x2e, 0x80, 0x28, 0xb5, 0x4c, 0x5a, 0x06, + 0xeb, 0x1d, 0xc9, 0x21, 0xe7, 0xb5, 0x30, 0xe4, 0xa1, 0xc8, 0x49, 0x3e, 0xa8, 0xc6, 0x96, 0x91, + 0xb1, 0xd3, 0x3d, 0x9a, 0x42, 0x2f, 0x49, 0x75, 0xc2, 0x74, 0x57, 0x44, 0x38, 0x6c, 0x55, 0xaa, + 0x0c, 0x25, 0x49, 0x95, 0xfd, 0x94, 0xaa, 0x9e, 0xa3, 0xde, 0xba, 0xed, 0xac, 0x88, 0xe0, 0xd7, + 0x6a, 0xd5, 0x02, 0x2b, 0x55, 0x2d, 0x20, 0x72, 0xd5, 0xa1, 0x73, 0x7e, 0xac, 0x6a, 0xdd, 0xd3, + 0xe5, 0xaa, 0xf9, 0x51, 0xa7, 0xdf, 0x49, 0x33, 0x54, 0x5f, 0xa3, 0xf9, 0x13, 0x89, 0x1d, 0x8a, + 0x38, 0xa9, 0x43, 0xf1, 0x37, 0xab, 0xb4, 0x6a, 0x3b, 0xde, 0x94, 0xed, 0xac, 0xeb, 0x8e, 0x91, + 0x1f, 0x8d, 0x56, 0x2a, 0xa1, 0x58, 0xa5, 0xd2, 0x4f, 0xd6, 0x41, 0x6f, 0x3c, 0xfb, 0xac, 0x5f, + 0x6e, 0x2c, 0xda, 0x41, 0x21, 0x86, 0x75, 0x50, 0xf8, 0x8b, 0x14, 0x30, 0xe3, 0x7e, 0x9e, 0x20, + 0xf9, 0x60, 0xd0, 0xc2, 0x72, 0x75, 0xba, 0x47, 0xc3, 0x5c, 0xfc, 0x45, 0xc8, 0x4e, 0xde, 0xa7, + 0x8d, 0xfc, 0x49, 0xa4, 0x18, 0xf2, 0x29, 0x18, 0x6c, 0xba, 0x47, 0x43, 0x1c, 0x9b, 0x22, 0x82, + 0x7c, 0xb7, 0xf9, 0x53, 0xd1, 0x29, 0x22, 0x40, 0xb0, 0x29, 0x22, 0xcc, 0x8a, 0x3b, 0x15, 0xcf, + 0xea, 0x9a, 0x3f, 0x1d, 0x5d, 0x6b, 0x54, 0xfc, 0x74, 0x8f, 0x16, 0xcf, 0x04, 0xfb, 0x81, 0x48, + 0xa2, 0xd3, 0xfc, 0x19, 0x25, 0xf0, 0x63, 0x88, 0x62, 0xe2, 0x92, 0x53, 0xa2, 0xce, 0xc3, 0x49, + 0x9e, 0x27, 0x5d, 0x84, 0x6e, 0x14, 0x93, 0xd5, 0xd9, 0xe8, 0xce, 0x30, 0x81, 0x64, 0xba, 0x47, + 0x4b, 0x2a, 0x49, 0xca, 0xb1, 0x84, 0xa1, 0xf9, 0x7c, 0xd4, 0x1f, 0x4c, 0x41, 0x4f, 0xf7, 0x68, + 0xb1, 0x14, 0xa3, 0xcf, 0xcb, 0x99, 0x3a, 0xf3, 0xe7, 0xa2, 0x9d, 0x18, 0x62, 0x58, 0x27, 0x4a, + 0x19, 0x3d, 0x9f, 0x97, 0xb3, 0x37, 0xe6, 0xcf, 0xc7, 0x4b, 0x85, 0x33, 0xa7, 0x94, 0xe5, 0x51, + 0x4b, 0x4e, 0x48, 0x97, 0x7f, 0x24, 0xea, 0x39, 0x92, 0x44, 0x33, 0xdd, 0xa3, 0x25, 0x27, 0xb3, + 0xd3, 0x92, 0x33, 0xb9, 0xe5, 0x2f, 0x74, 0xe3, 0x19, 0xb4, 0x2e, 0x39, 0x0b, 0x9c, 0xde, 0x25, + 0xaf, 0x56, 0xfe, 0x62, 0x74, 0x0f, 0xd9, 0x91, 0x70, 0xba, 0x47, 0xeb, 0x92, 0x9d, 0xeb, 0x76, + 0x87, 0x24, 0x57, 0xf9, 0x47, 0x91, 0xfd, 0x45, 0x69, 0x8b, 0x1a, 0x27, 0x9a, 0xee, 0xd1, 0x3a, + 0xa4, 0xc8, 0xba, 0xdd, 0x21, 0x07, 0x52, 0xbe, 0xd0, 0x95, 0x6d, 0x20, 0x8f, 0x0e, 0x19, 0x94, + 0xe6, 0x13, 0xd3, 0x07, 0xe5, 0x1f, 0x8b, 0xaa, 0x6e, 0x02, 0x09, 0x53, 0xdd, 0xa4, 0xc4, 0x43, + 0xf3, 0x89, 0xf9, 0x6e, 0xf2, 0x8f, 0x77, 0x61, 0x18, 0xb4, 0x31, 0x31, 0x53, 0xce, 0x7c, 0x62, + 0xc2, 0x99, 0x7c, 0x31, 0xca, 0x30, 0x81, 0x84, 0x31, 0x4c, 0x4a, 0x55, 0x33, 0x9f, 0x98, 0x97, + 0x24, 0xff, 0x44, 0x17, 0x86, 0x61, 0x0b, 0x93, 0x32, 0x9a, 0x7c, 0x20, 0x92, 0x18, 0x24, 0xff, + 0x64, 0x74, 0xde, 0x90, 0x50, 0x6c, 0xde, 0x90, 0x53, 0x88, 0x94, 0x63, 0x51, 0xcb, 0xf3, 0xef, + 0x89, 0x0e, 0x73, 0x05, 0xcd, 0x86, 0xb9, 0x1a, 0xe7, 0xbc, 0x1c, 0x8b, 0xac, 0x9c, 0xbf, 0xd4, + 0x89, 0x09, 0xa2, 0xa3, 0x4c, 0x78, 0x2c, 0xe6, 0x4a, 0x42, 0x68, 0xdf, 0xfc, 0x7b, 0xa3, 0x6f, + 0x19, 0x62, 0x04, 0xd3, 0x3d, 0x5a, 0x42, 0x40, 0x60, 0x2d, 0x39, 0x8e, 0x5d, 0xfe, 0x72, 0x74, + 0xd8, 0x26, 0xd1, 0xb0, 0x61, 0x9b, 0x18, 0x03, 0x6f, 0x26, 0xe9, 0xfd, 0x58, 0xfe, 0x4a, 0xd4, + 0x30, 0x8b, 0x53, 0x30, 0xc3, 0x2c, 0xe1, 0xdd, 0x99, 0x96, 0x1c, 0x1d, 0x2d, 0xff, 0x54, 0xd7, + 0x16, 0x22, 0x4d, 0x42, 0x0b, 0x79, 0xb0, 0xb0, 0xd0, 0x76, 0xba, 0xdd, 0x6a, 0xda, 0xba, 0x91, + 0x7f, 0x5f, 0xa2, 0xed, 0xc4, 0x91, 0x92, 0xed, 0xc4, 0x01, 0x6c, 0x95, 0x97, 0xdf, 0xf5, 0xe4, + 0x9f, 0x8e, 0xae, 0xf2, 0x32, 0x8e, 0xad, 0xf2, 0x91, 0x37, 0x40, 0xe5, 0xd8, 0x1b, 0x98, 0xfc, + 0xfb, 0xa3, 0x0a, 0xa0, 0xa0, 0x99, 0x02, 0xa8, 0xaf, 0x66, 0x3e, 0xd9, 0xf9, 0xd5, 0x48, 0xfe, + 0x6a, 0xf4, 0x2c, 0xac, 0x13, 0xdd, 0x74, 0x8f, 0xd6, 0xf9, 0xe5, 0x49, 0x25, 0xe1, 0x11, 0x48, + 0xfe, 0x5a, 0x54, 0xc1, 0x62, 0x04, 0x4c, 0xc1, 0xe2, 0x4f, 0x47, 0x2a, 0x09, 0xaf, 0x38, 0xf2, + 0xcf, 0x74, 0x64, 0x15, 0x7c, 0x73, 0xc2, 0xdb, 0x8f, 0xe7, 0xe5, 0x67, 0x18, 0xf9, 0x67, 0xa3, + 0x8b, 0x5d, 0x88, 0x61, 0x8b, 0x9d, 0xf4, 0x5c, 0xe3, 0x79, 0xf9, 0x01, 0x42, 0xfe, 0x7a, 0xbc, + 0x54, 0xb8, 0x44, 0x4a, 0x0f, 0x15, 0xb4, 0x64, 0xbf, 0xfd, 0xfc, 0x73, 0x51, 0xad, 0x4b, 0xa2, + 0x61, 0x5a, 0x97, 0xe8, 0xf3, 0x3f, 0x15, 0x77, 0xbf, 0xcf, 0x3f, 0xaf, 0xee, 0xb2, 0xa3, 0x78, + 0x66, 0xf9, 0xc4, 0x5c, 0xf6, 0x5f, 0x53, 0x83, 0xac, 0xe6, 0x5f, 0x50, 0xee, 0xd5, 0x23, 0x58, + 0x66, 0xdf, 0x2a, 0x41, 0x59, 0x5f, 0x53, 0xe3, 0x92, 0xe6, 0x5f, 0x4c, 0xe6, 0x10, 0xe8, 0x8a, + 0x1a, 0xc7, 0xf4, 0x35, 0x35, 0x94, 0x67, 0xfe, 0x03, 0xc9, 0x1c, 0x02, 0xe9, 0xaa, 0xa1, 0x3f, + 0x9f, 0x95, 0x12, 0x98, 0xe4, 0x3f, 0x18, 0x35, 0x1d, 0x03, 0x04, 0x33, 0x1d, 0xc3, 0x34, 0x27, + 0xcf, 0x4a, 0x89, 0x3f, 0xf2, 0x2f, 0xc5, 0x8a, 0x04, 0x8d, 0x95, 0xd2, 0x83, 0x3c, 0x2b, 0x25, + 0xcc, 0xc8, 0x7f, 0x28, 0x56, 0x24, 0x68, 0x9d, 0x94, 0x56, 0xc3, 0xe8, 0xf6, 0xb6, 0x3d, 0xff, + 0x72, 0xe2, 0x43, 0xdd, 0x04, 0xca, 0xe9, 0x1e, 0xad, 0xdb, 0x1b, 0xf9, 0x4f, 0x76, 0x7e, 0xcc, + 0x90, 0x7f, 0x25, 0x3a, 0x84, 0x3b, 0xd1, 0xb1, 0x21, 0xdc, 0xf1, 0x41, 0xc4, 0x87, 0x95, 0x28, + 0x44, 0xf9, 0x0f, 0x47, 0xa7, 0xb8, 0x08, 0x92, 0x4d, 0x71, 0x6a, 0xcc, 0xa2, 0x48, 0x78, 0x9d, + 0xfc, 0x47, 0xa2, 0x53, 0x9c, 0x8c, 0x63, 0x53, 0x5c, 0x24, 0x14, 0x4f, 0x39, 0x16, 0xf5, 0x25, + 0xff, 0x6a, 0x74, 0x8a, 0x53, 0xd0, 0x6c, 0x8a, 0x53, 0xe3, 0xc4, 0x7c, 0x58, 0x09, 0x7e, 0x92, + 0x7f, 0x2d, 0xb9, 0xfd, 0x88, 0x94, 0xdb, 0xcf, 0x43, 0xa5, 0x68, 0xc9, 0x51, 0x3c, 0xf2, 0xa5, + 0xe8, 0xf8, 0x4d, 0xa2, 0x61, 0xe3, 0x37, 0x31, 0x02, 0x88, 0xba, 0x71, 0x10, 0x5a, 0x35, 0xde, + 0x65, 0xe3, 0x10, 0x9a, 0x22, 0x09, 0xe0, 0xc8, 0x1e, 0x99, 0x6f, 0x84, 0xca, 0x1d, 0xf6, 0xc8, + 0xfe, 0x36, 0x48, 0xa1, 0x67, 0xb3, 0x6b, 0xcc, 0x23, 0x3e, 0x3f, 0x11, 0x9d, 0x5d, 0x63, 0x04, + 0x6c, 0x76, 0x8d, 0xfb, 0xd1, 0x4f, 0xc1, 0xa8, 0xd0, 0x22, 0xfe, 0x64, 0xc0, 0xb4, 0x96, 0xf2, + 0x93, 0xca, 0x93, 0x69, 0x05, 0xcf, 0x66, 0x27, 0x15, 0x86, 0xeb, 0x35, 0x87, 0x95, 0x9b, 0x66, + 0x6b, 0xd1, 0xd6, 0x1d, 0xa3, 0x46, 0x2d, 0x23, 0x3f, 0xa5, 0xac, 0xd7, 0x09, 0x34, 0xb8, 0x5e, + 0x27, 0xc0, 0x31, 0xb8, 0xa7, 0x02, 0xd7, 0x68, 0x83, 0x9a, 0x6b, 0x34, 0x7f, 0x03, 0xd9, 0x16, + 0x3a, 0xb1, 0x15, 0x64, 0xd3, 0x3d, 0x5a, 0x27, 0x0e, 0xcc, 0x56, 0x9f, 0xdd, 0xa8, 0xbd, 0x3e, + 0x13, 0x04, 0x8e, 0xa9, 0x3a, 0xb4, 0xa5, 0x3b, 0x34, 0x3f, 0x1d, 0xb5, 0xd5, 0x13, 0x89, 0x98, + 0xad, 0x9e, 0x88, 0x88, 0xb3, 0xf5, 0xc7, 0x42, 0xa5, 0x1b, 0xdb, 0x70, 0x44, 0x24, 0x97, 0x66, + 0xb3, 0x53, 0x14, 0xc1, 0x04, 0x34, 0x63, 0x5b, 0x4b, 0x78, 0x52, 0x71, 0x33, 0x3a, 0x3b, 0x75, + 0xa6, 0x64, 0xb3, 0x53, 0x67, 0x2c, 0x53, 0xf5, 0x28, 0x96, 0x8f, 0xc1, 0x5b, 0x51, 0x55, 0x4f, + 0x20, 0x61, 0xaa, 0x9e, 0x00, 0x8e, 0x33, 0xd4, 0xa8, 0x4b, 0xbd, 0xfc, 0x4c, 0x37, 0x86, 0x48, + 0x12, 0x67, 0x88, 0xe0, 0x38, 0xc3, 0x29, 0xea, 0x35, 0x96, 0xf3, 0xb3, 0xdd, 0x18, 0x22, 0x49, + 0x9c, 0x21, 0x82, 0xd9, 0x66, 0x33, 0x0a, 0x1e, 0x6f, 0x37, 0x57, 0xfc, 0x3e, 0x9b, 0x8b, 0x6e, + 0x36, 0x3b, 0x12, 0xb2, 0xcd, 0x66, 0x47, 0x24, 0xf9, 0x9a, 0x1d, 0xbf, 0x49, 0xc8, 0xcf, 0x63, + 0x85, 0x57, 0x43, 0xbb, 0x60, 0x27, 0xa5, 0xa6, 0x7b, 0xb4, 0x9d, 0xbe, 0x79, 0x78, 0x5f, 0xe0, + 0x95, 0x9b, 0xaf, 0x62, 0x55, 0x27, 0x82, 0xb3, 0x0a, 0x0e, 0x9e, 0xee, 0xd1, 0x02, 0xbf, 0xdd, + 0x0f, 0xc0, 0x20, 0x7e, 0x54, 0xc5, 0x32, 0xbd, 0x89, 0xf1, 0xfc, 0xeb, 0xd1, 0x2d, 0x93, 0x84, + 0x62, 0x5b, 0x26, 0xe9, 0x27, 0x9b, 0xc4, 0xf1, 0x27, 0x9f, 0x62, 0x26, 0xc6, 0xf3, 0x5a, 0x74, + 0x12, 0x8f, 0x20, 0xd9, 0x24, 0x1e, 0x01, 0x04, 0xf5, 0x4e, 0x38, 0x76, 0x6b, 0x62, 0x3c, 0x5f, + 0x4b, 0xa8, 0x97, 0xa3, 0x82, 0x7a, 0xf9, 0xcf, 0xa0, 0xde, 0xda, 0x72, 0xdb, 0x9b, 0x60, 0xdf, + 0xb8, 0x90, 0x50, 0xaf, 0x8f, 0x0c, 0xea, 0xf5, 0x01, 0x6c, 0x2a, 0x44, 0x40, 0xd5, 0xb1, 0xd9, + 0xa4, 0x7d, 0xcb, 0x6c, 0x36, 0xf3, 0xb7, 0xa3, 0x53, 0xa1, 0x8a, 0x67, 0x53, 0xa1, 0x0a, 0x63, + 0xa6, 0x27, 0x6f, 0x15, 0x5d, 0x6c, 0x2f, 0xe5, 0xef, 0x44, 0x4d, 0xcf, 0x10, 0xc3, 0x4c, 0xcf, + 0xf0, 0x17, 0xee, 0x2e, 0xd8, 0x2f, 0x8d, 0xde, 0x73, 0xa8, 0xbb, 0x9c, 0xbf, 0xab, 0xec, 0x2e, + 0x24, 0x1c, 0xee, 0x2e, 0xa4, 0xdf, 0x64, 0x09, 0x1e, 0x89, 0x2c, 0x34, 0xfe, 0xad, 0x4d, 0x8d, + 0xea, 0x4e, 0x63, 0x39, 0xff, 0x06, 0xb2, 0x7a, 0x22, 0x71, 0xa9, 0x8a, 0x92, 0x4e, 0xf7, 0x68, + 0xdd, 0x38, 0xe1, 0xb6, 0xfc, 0xf5, 0x19, 0x1e, 0x01, 0x5c, 0xab, 0x96, 0xfd, 0x4d, 0xe8, 0x9b, + 0xca, 0xb6, 0x3c, 0x4e, 0x82, 0xdb, 0xf2, 0x38, 0x98, 0xb4, 0xe0, 0x51, 0x65, 0xab, 0x36, 0xab, + 0x37, 0xd9, 0xbe, 0x84, 0x1a, 0x55, 0xbd, 0xb1, 0x42, 0xbd, 0xfc, 0x47, 0x91, 0xf7, 0xa5, 0x0e, + 0x1b, 0x3e, 0x85, 0x7a, 0xba, 0x47, 0xdb, 0x86, 0x1f, 0x29, 0x42, 0xb6, 0x36, 0xb5, 0x50, 0xcd, + 0x7f, 0x2c, 0x7a, 0xbe, 0xc9, 0x60, 0xd3, 0x3d, 0x1a, 0xe2, 0x98, 0x95, 0x76, 0xbb, 0xb5, 0xe4, + 0xe8, 0x06, 0xe5, 0x86, 0x16, 0xda, 0x6e, 0xc2, 0x00, 0xfd, 0x78, 0xd4, 0x4a, 0xeb, 0x44, 0xc7, + 0xac, 0xb4, 0x4e, 0x38, 0xa6, 0xa8, 0x91, 0x64, 0x57, 0xf9, 0x4f, 0x44, 0x15, 0x35, 0x82, 0x64, + 0x8a, 0x1a, 0x4d, 0x8d, 0xf5, 0x06, 0x9c, 0x09, 0xf6, 0xf3, 0x62, 0xfd, 0xe5, 0x9d, 0x96, 0xff, + 0x24, 0xf2, 0x79, 0x34, 0x76, 0x19, 0x10, 0xa1, 0x9a, 0xee, 0xd1, 0x3a, 0x94, 0x67, 0x2b, 0x6e, + 0x2c, 0xe1, 0xa4, 0x30, 0x2f, 0xbe, 0x22, 0xba, 0xe2, 0x76, 0x20, 0x63, 0x2b, 0x6e, 0x07, 0x54, + 0x22, 0x73, 0x21, 0x54, 0x7d, 0x1b, 0xe6, 0x81, 0x4c, 0x3b, 0x71, 0x48, 0x64, 0x2e, 0x2c, 0xb5, + 0xc5, 0x6d, 0x98, 0x07, 0xd6, 0x5a, 0x27, 0x0e, 0xe4, 0x32, 0xe4, 0x6a, 0xb5, 0x59, 0xad, 0x6d, + 0xe5, 0x1b, 0x8a, 0x3b, 0x32, 0x42, 0xa7, 0x7b, 0x34, 0x81, 0x67, 0x66, 0xd0, 0x64, 0x53, 0x77, + 0x3d, 0xb3, 0xe1, 0xe2, 0x88, 0xf1, 0x47, 0x88, 0x11, 0x35, 0x83, 0x92, 0x68, 0x98, 0x19, 0x94, + 0x04, 0x67, 0xf6, 0x62, 0x59, 0x77, 0x5d, 0xdd, 0x32, 0x1c, 0x7d, 0x1c, 0x97, 0x09, 0xaa, 0xbc, + 0x1b, 0x8c, 0x60, 0x99, 0xbd, 0x18, 0x85, 0xe0, 0xe1, 0xbb, 0x0f, 0xf1, 0xcd, 0x9c, 0x7b, 0xca, + 0xe1, 0xbb, 0x82, 0xc7, 0xc3, 0x77, 0x05, 0x86, 0x76, 0xa7, 0x0f, 0xd3, 0xe8, 0x92, 0xc9, 0x44, + 0x94, 0x5f, 0x52, 0xec, 0x4e, 0x95, 0x00, 0xed, 0x4e, 0x15, 0x18, 0x69, 0x92, 0xbf, 0xdc, 0x2e, + 0x77, 0x68, 0x52, 0xb8, 0xca, 0xc6, 0xca, 0xb0, 0xf5, 0x3b, 0x1c, 0x1c, 0x13, 0x1b, 0x96, 0xbe, + 0x6a, 0x4f, 0x8c, 0xfb, 0x52, 0x37, 0xa3, 0xeb, 0x77, 0x47, 0x42, 0xb6, 0x7e, 0x77, 0x44, 0xb2, + 0xd9, 0xd5, 0xdf, 0x68, 0x2d, 0xeb, 0x0e, 0x35, 0x26, 0x4c, 0x07, 0x4f, 0x16, 0x37, 0xf8, 0xd6, + 0xf0, 0xad, 0xe8, 0xec, 0xda, 0x85, 0x94, 0xcd, 0xae, 0x5d, 0xd0, 0xcc, 0xc8, 0x4b, 0x46, 0x6b, + 0x54, 0x37, 0xf2, 0x2b, 0x51, 0x23, 0xaf, 0x33, 0x25, 0x33, 0xf2, 0x3a, 0x63, 0x3b, 0x7f, 0xce, + 0x5d, 0xc7, 0xf4, 0x68, 0xbe, 0xb9, 0x93, 0xcf, 0x41, 0xd2, 0xce, 0x9f, 0x83, 0x68, 0xb6, 0x21, + 0x54, 0x3b, 0x64, 0x35, 0xba, 0x21, 0x8c, 0x77, 0x83, 0x5a, 0x82, 0x59, 0x2c, 0xe2, 0x81, 0x64, + 0xde, 0x8a, 0x5a, 0x2c, 0x02, 0xcc, 0x2c, 0x96, 0xf0, 0x09, 0x65, 0xe4, 0xad, 0x5b, 0xde, 0x8e, + 0xae, 0xa1, 0x32, 0x8e, 0xad, 0xa1, 0x91, 0x77, 0x71, 0x1f, 0x88, 0x3c, 0xe4, 0xc8, 0xb7, 0xa2, + 0x56, 0x87, 0x84, 0x62, 0x56, 0x87, 0xfc, 0xe4, 0xa3, 0x0c, 0x27, 0xf0, 0x16, 0x5c, 0x6b, 0x07, + 0xf7, 0x38, 0x9f, 0x8a, 0x7e, 0xa6, 0x82, 0x66, 0x9f, 0xa9, 0x80, 0x22, 0x4c, 0xc4, 0xb4, 0xe5, + 0x74, 0x60, 0x12, 0x9e, 0x0f, 0x2a, 0x20, 0x32, 0x03, 0xa4, 0x56, 0x9a, 0x9d, 0xa9, 0x18, 0x55, + 0xf9, 0x8a, 0xcc, 0x8d, 0x9e, 0xc0, 0xc6, 0x29, 0xa6, 0x7b, 0xb4, 0x84, 0x72, 0xe4, 0x2d, 0xb8, + 0x20, 0xa0, 0x22, 0xca, 0x40, 0xd5, 0xb1, 0xd7, 0x4c, 0x23, 0x58, 0x10, 0xbc, 0xa8, 0xa3, 0x60, + 0x37, 0xda, 0xe9, 0x1e, 0xad, 0x2b, 0xaf, 0xce, 0x75, 0x89, 0xf5, 0xa1, 0xbd, 0x93, 0xba, 0x82, + 0x45, 0xa2, 0x2b, 0xaf, 0xce, 0x75, 0x09, 0xb9, 0xaf, 0xed, 0xa4, 0xae, 0xa0, 0x13, 0xba, 0xf2, + 0x22, 0x2e, 0x14, 0xba, 0xe1, 0x4b, 0xcd, 0x66, 0x7e, 0x1d, 0xab, 0x7b, 0xef, 0x4e, 0xaa, 0x2b, + 0xa1, 0xc1, 0xb9, 0x1d, 0x47, 0x36, 0x4b, 0xcf, 0xb7, 0xa8, 0x55, 0x8b, 0x2c, 0x40, 0xf7, 0xa3, + 0xb3, 0x74, 0x8c, 0x80, 0xcd, 0xd2, 0x31, 0x20, 0x1b, 0x50, 0xf2, 0x7b, 0xa0, 0xfc, 0x46, 0x74, + 0x40, 0xc9, 0x38, 0x36, 0xa0, 0x22, 0x6f, 0x87, 0xe6, 0xe1, 0xe4, 0xfc, 0x8a, 0xa7, 0xfb, 0x16, + 0xa4, 0x2b, 0xba, 0xf2, 0x6d, 0xe5, 0x92, 0x29, 0x4e, 0x82, 0x97, 0x4c, 0x71, 0x30, 0x1b, 0x23, + 0x0c, 0x5c, 0xdb, 0xb0, 0x1a, 0x53, 0xba, 0xd9, 0x6c, 0x3b, 0x34, 0xff, 0x97, 0xa2, 0x63, 0x44, + 0x41, 0xb3, 0x31, 0xa2, 0x80, 0xd8, 0x02, 0xcd, 0x40, 0x25, 0xd7, 0x35, 0x97, 0x2c, 0xb1, 0xaf, + 0x6c, 0x37, 0xbd, 0xfc, 0xff, 0x2f, 0xba, 0x40, 0x27, 0xd1, 0xb0, 0x05, 0x3a, 0x09, 0x8e, 0xa7, + 0x4e, 0xac, 0x17, 0xd8, 0xe2, 0x21, 0xdf, 0x55, 0xfe, 0xff, 0x95, 0x53, 0xa7, 0x04, 0x1a, 0x3c, + 0x75, 0x4a, 0x80, 0xb3, 0xf5, 0x91, 0xdb, 0x64, 0x33, 0x66, 0x70, 0x57, 0xfd, 0x5f, 0x45, 0xd7, + 0x47, 0x15, 0xcf, 0xd6, 0x47, 0x15, 0x16, 0xe5, 0x23, 0xba, 0xe0, 0xbf, 0xee, 0xc4, 0x27, 0x90, + 0x7f, 0xac, 0x0c, 0xb9, 0x21, 0xf3, 0x11, 0x23, 0xe5, 0x2f, 0xa7, 0x3a, 0x31, 0x0a, 0x86, 0x47, + 0xac, 0x50, 0x94, 0x91, 0x46, 0xd7, 0x4c, 0xba, 0x9e, 0xff, 0x2b, 0x1d, 0x19, 0x71, 0x82, 0x28, + 0x23, 0x0e, 0x23, 0x6f, 0xc2, 0x99, 0x10, 0x36, 0x4b, 0x57, 0x17, 0x83, 0x99, 0xe9, 0xaf, 0xa6, + 0xa2, 0x66, 0x70, 0x32, 0x19, 0x33, 0x83, 0x93, 0x31, 0x49, 0xac, 0x85, 0xe8, 0xfe, 0xda, 0x36, + 0xac, 0x03, 0x09, 0x76, 0x60, 0x90, 0xc4, 0x5a, 0x48, 0xf3, 0x2b, 0xb7, 0x61, 0x1d, 0xc8, 0xb4, + 0x03, 0x03, 0xf2, 0xb5, 0x29, 0xb8, 0x94, 0x8c, 0x2a, 0x35, 0x9b, 0x53, 0xb6, 0x13, 0xe2, 0xf2, + 0x7f, 0x3d, 0x15, 0x3d, 0x68, 0xd8, 0x59, 0xb1, 0xe9, 0x1e, 0x6d, 0x87, 0x15, 0x90, 0x8f, 0xc0, + 0x70, 0xa9, 0x6d, 0x98, 0x1e, 0x5e, 0xbc, 0x31, 0xc3, 0xf9, 0xab, 0x52, 0xca, 0x16, 0x47, 0xc6, + 0xe2, 0x16, 0x47, 0x06, 0x90, 0x9b, 0x30, 0x56, 0xa3, 0x8d, 0x36, 0x86, 0xa6, 0xa0, 0x2d, 0xdb, + 0xf1, 0x18, 0x8f, 0xaf, 0x4e, 0x45, 0x27, 0xb1, 0x18, 0x05, 0x9b, 0xc4, 0x62, 0x40, 0x72, 0x27, + 0x76, 0x2b, 0x2f, 0x3a, 0xf3, 0x6b, 0x52, 0x5d, 0xaf, 0xe5, 0x83, 0xbe, 0x4c, 0x2e, 0x4e, 0xaa, + 0xca, 0x2d, 0xba, 0xe0, 0xfa, 0xb5, 0xa9, 0x2e, 0xd7, 0xe8, 0xd2, 0x0c, 0x17, 0x07, 0x33, 0x8e, + 0x91, 0xbb, 0x6b, 0xc1, 0xf1, 0x6f, 0xa4, 0xba, 0x5c, 0x7b, 0x87, 0x1c, 0x13, 0xc0, 0xe4, 0x05, + 0xee, 0x29, 0x22, 0x18, 0xfd, 0xcd, 0x54, 0xdc, 0x55, 0x24, 0x28, 0x2f, 0x11, 0xb2, 0x62, 0xb7, + 0xdd, 0x40, 0xe9, 0x3f, 0x9d, 0x8a, 0xfb, 0xe6, 0x85, 0xc5, 0xc2, 0x5f, 0x84, 0xc2, 0xf9, 0xc9, + 0xfb, 0x1e, 0x75, 0x2c, 0xbd, 0x89, 0xdd, 0x59, 0xf3, 0x6c, 0x47, 0x5f, 0xa2, 0x93, 0x96, 0xbe, + 0xd8, 0xa4, 0xf9, 0xaf, 0x4b, 0x45, 0x2d, 0xd8, 0xce, 0xa4, 0xcc, 0x82, 0xed, 0x8c, 0x25, 0xcb, + 0xf0, 0x48, 0x12, 0x76, 0xc2, 0x74, 0xb1, 0x9e, 0xaf, 0x4f, 0x45, 0x4d, 0xd8, 0x2e, 0xb4, 0xcc, + 0x84, 0xed, 0x82, 0x26, 0xd7, 0x61, 0x60, 0xdc, 0xf6, 0xa7, 0xdf, 0x6f, 0x50, 0x9c, 0x21, 0x03, + 0xcc, 0x74, 0x8f, 0x16, 0x92, 0x89, 0x32, 0x62, 0x50, 0x7f, 0x26, 0x5e, 0x26, 0xbc, 0x7c, 0x0a, + 0x7e, 0x88, 0x32, 0x42, 0xdc, 0xff, 0x4d, 0xbc, 0x4c, 0x78, 0xc7, 0x15, 0xfc, 0x60, 0x33, 0x09, + 0xaf, 0x71, 0x76, 0xaa, 0xc4, 0xec, 0xb6, 0xf2, 0xb2, 0xde, 0x6c, 0x52, 0x6b, 0x89, 0xe6, 0x3f, + 0xab, 0xcc, 0x24, 0xc9, 0x64, 0x6c, 0x26, 0x49, 0xc6, 0x90, 0x8f, 0xc3, 0xd9, 0x3b, 0x7a, 0xd3, + 0x34, 0x42, 0x9c, 0x46, 0xdd, 0x96, 0x6d, 0xb9, 0x34, 0xff, 0xb9, 0x54, 0x74, 0x37, 0xdd, 0x81, + 0x8e, 0xed, 0xa6, 0x3b, 0xa0, 0xc8, 0x2c, 0x10, 0x5c, 0x46, 0x83, 0xd9, 0x82, 0xad, 0xcf, 0xf9, + 0xbf, 0x95, 0x8a, 0xda, 0xa9, 0x71, 0x12, 0x66, 0xa7, 0xc6, 0xa1, 0xa4, 0xde, 0x39, 0xa9, 0x53, + 0xfe, 0x1b, 0x53, 0xd1, 0xd3, 0x9a, 0x4e, 0x84, 0xd3, 0x3d, 0x5a, 0xe7, 0xcc, 0x50, 0x37, 0x60, + 0xb4, 0x56, 0xad, 0x4c, 0x4d, 0x4d, 0xd6, 0xee, 0x54, 0x26, 0xf0, 0xa9, 0x86, 0x91, 0xff, 0x26, + 0x65, 0xc5, 0x52, 0x09, 0xd8, 0x8a, 0xa5, 0xc2, 0xc8, 0xcb, 0x30, 0xc4, 0xda, 0xcf, 0x06, 0x0c, + 0x7e, 0xf2, 0xe7, 0x53, 0x51, 0x73, 0x4a, 0x46, 0x32, 0x73, 0x4a, 0xfe, 0x4d, 0x6a, 0x70, 0x8a, + 0x49, 0xb1, 0xea, 0xd0, 0x7b, 0xd4, 0xa1, 0x56, 0xc3, 0x1f, 0xd3, 0xdf, 0x9c, 0x8a, 0x5a, 0x19, + 0x49, 0x44, 0xcc, 0xca, 0x48, 0x82, 0x93, 0x15, 0xb8, 0xa0, 0x9e, 0x04, 0xc9, 0xef, 0x7a, 0xf3, + 0x7f, 0x3b, 0xa5, 0x18, 0xc3, 0x5d, 0x88, 0xd1, 0x18, 0xee, 0x82, 0x27, 0x16, 0x5c, 0x14, 0xc7, + 0x2a, 0xc2, 0xe1, 0x52, 0xad, 0xed, 0x0b, 0xbc, 0xb6, 0xf7, 0x84, 0x0e, 0x81, 0x5d, 0xa8, 0xa7, + 0x7b, 0xb4, 0xee, 0xec, 0x98, 0x9e, 0xc5, 0x53, 0x17, 0xe5, 0xbf, 0x25, 0x95, 0xec, 0x91, 0x12, + 0x71, 0x53, 0x4e, 0xca, 0x79, 0xf4, 0x66, 0xa7, 0xc4, 0x3b, 0xf9, 0xbf, 0xa3, 0x8c, 0xb7, 0x64, + 0x32, 0x36, 0xde, 0x3a, 0x64, 0xee, 0xb9, 0x09, 0x63, 0x5c, 0xa9, 0xab, 0x3a, 0x0e, 0x43, 0x6b, + 0x89, 0x1a, 0xf9, 0xbf, 0xab, 0xac, 0x76, 0x31, 0x0a, 0x74, 0xed, 0x51, 0x81, 0x6c, 0xea, 0xae, + 0xb5, 0x74, 0xcb, 0xc2, 0x63, 0xd6, 0xfc, 0xdf, 0x53, 0xa6, 0xee, 0x10, 0x85, 0x8e, 0xbb, 0xc1, + 0x2f, 0xa6, 0x09, 0xdd, 0x92, 0xd6, 0xe5, 0xff, 0x5b, 0x45, 0x13, 0xba, 0x11, 0x33, 0x4d, 0xe8, + 0x9a, 0x01, 0xef, 0x4e, 0x87, 0x37, 0xf6, 0xf9, 0x2f, 0x2a, 0x2b, 0x72, 0x22, 0x15, 0x5b, 0x91, + 0x93, 0x9f, 0xe8, 0xdf, 0xe9, 0xf0, 0x3e, 0x3d, 0xff, 0xad, 0xdd, 0xf9, 0x86, 0x2b, 0x7d, 0xf2, + 0xf3, 0xf6, 0x3b, 0x1d, 0xde, 0x76, 0xe7, 0xbf, 0xad, 0x3b, 0xdf, 0xd0, 0xb1, 0x2f, 0xf9, 0x69, + 0x78, 0xbd, 0xf3, 0xbb, 0xe8, 0xfc, 0xb7, 0xab, 0x53, 0x57, 0x07, 0x42, 0x9c, 0xba, 0x3a, 0x3d, + 0xae, 0x5e, 0x84, 0x73, 0x5c, 0x43, 0x6e, 0x38, 0x7a, 0x6b, 0xb9, 0x46, 0x3d, 0xcf, 0xb4, 0x96, + 0xfc, 0x9d, 0xd8, 0x77, 0xa4, 0x94, 0xe3, 0xb1, 0x4e, 0x94, 0x78, 0x3c, 0xd6, 0x09, 0xc9, 0x94, + 0x37, 0xf6, 0x02, 0x3a, 0xff, 0xf7, 0x15, 0xe5, 0x8d, 0x51, 0x30, 0xe5, 0x8d, 0x3f, 0x9c, 0xbe, + 0x99, 0xf0, 0xd0, 0x37, 0xff, 0xdf, 0x75, 0xe6, 0x15, 0xb4, 0x2f, 0xe1, 0x7d, 0xf0, 0xcd, 0x84, + 0xf7, 0xac, 0xf9, 0xff, 0xbe, 0x33, 0xaf, 0xd0, 0x07, 0x29, 0xfe, 0x0c, 0xf6, 0x4d, 0x38, 0xc3, + 0x67, 0xf3, 0x29, 0x6a, 0xd0, 0xc8, 0x87, 0x7e, 0xa7, 0x32, 0xf6, 0x93, 0xc9, 0xf0, 0xc8, 0x3d, + 0x11, 0x93, 0xc4, 0x5a, 0xb4, 0xf5, 0x1f, 0x6c, 0xc3, 0x3a, 0xdc, 0x10, 0x24, 0x63, 0xd8, 0x7a, + 0x23, 0xbf, 0x7e, 0xcb, 0x7f, 0x97, 0xb2, 0xde, 0xc8, 0x48, 0x74, 0xe7, 0x90, 0x9f, 0xca, 0xbd, + 0x1c, 0x7d, 0xe9, 0x95, 0xff, 0xee, 0xc4, 0xc2, 0x41, 0x07, 0x44, 0x9f, 0x85, 0xbd, 0x1c, 0x7d, + 0xd5, 0x94, 0xff, 0x9e, 0xc4, 0xc2, 0xc1, 0x07, 0x44, 0x9f, 0x40, 0xb1, 0x2d, 0x52, 0xdb, 0xb3, + 0x39, 0xab, 0xc8, 0xf4, 0xf0, 0x0f, 0xd5, 0x2d, 0x52, 0x22, 0x19, 0x6e, 0x91, 0x12, 0x31, 0x49, + 0xac, 0xc5, 0xe7, 0x7d, 0xef, 0x36, 0xac, 0xa5, 0x8d, 0x5d, 0x22, 0x26, 0x89, 0xb5, 0xf8, 0xf8, + 0xef, 0xdb, 0x86, 0xb5, 0xb4, 0xb1, 0x4b, 0xc4, 0x30, 0x73, 0x2c, 0xc4, 0xdc, 0xa1, 0x8e, 0x1b, + 0xaa, 0xdf, 0xff, 0xa0, 0x98, 0x63, 0x1d, 0xe8, 0x98, 0x39, 0xd6, 0x01, 0x95, 0xc8, 0x5d, 0x08, + 0xe5, 0xfb, 0xb7, 0xe3, 0x1e, 0xde, 0xcb, 0x74, 0x40, 0x25, 0x72, 0x17, 0x72, 0xf9, 0x47, 0xdb, + 0x71, 0x0f, 0x2f, 0x66, 0x3a, 0xa0, 0x98, 0x51, 0x54, 0xf3, 0x74, 0xcf, 0x6c, 0x4c, 0xdb, 0xae, + 0x27, 0x2d, 0xf2, 0xff, 0xa3, 0x62, 0x14, 0x25, 0x11, 0x31, 0xa3, 0x28, 0x09, 0x1e, 0x67, 0x2a, + 0xa4, 0xf1, 0x8f, 0xbb, 0x32, 0x0d, 0x2d, 0xad, 0x24, 0x78, 0x9c, 0xa9, 0x10, 0xc2, 0xff, 0xd4, + 0x95, 0x69, 0xe8, 0x29, 0x9f, 0x04, 0x67, 0x96, 0x69, 0xd9, 0xb1, 0xd7, 0xad, 0x9b, 0x74, 0x9d, + 0x36, 0xc5, 0xa7, 0xff, 0x80, 0x62, 0x99, 0xaa, 0x04, 0x78, 0x8b, 0xa2, 0xc0, 0xa2, 0x8c, 0xc4, + 0xe7, 0xfe, 0x60, 0x47, 0x46, 0xe1, 0x31, 0x91, 0x0a, 0x8b, 0x32, 0x12, 0x9f, 0xf8, 0x4f, 0x3a, + 0x32, 0x0a, 0x8f, 0x89, 0x54, 0x18, 0x29, 0xc1, 0x08, 0xbe, 0x95, 0xd0, 0x5d, 0xdf, 0xf3, 0xf3, + 0x47, 0x53, 0xd1, 0x5b, 0xaf, 0x28, 0x7a, 0xba, 0x47, 0x53, 0x0a, 0xc8, 0x2c, 0xc4, 0x27, 0xfd, + 0x58, 0x07, 0x16, 0xa1, 0xbf, 0x63, 0x14, 0x22, 0xb3, 0x10, 0x1f, 0xf3, 0x4f, 0x3b, 0xb0, 0x08, + 0x1d, 0x1e, 0xa3, 0x10, 0xf2, 0x41, 0x18, 0xac, 0x4d, 0x2d, 0x54, 0xfd, 0xc4, 0xaa, 0x3f, 0x9e, + 0x52, 0x5e, 0x15, 0x85, 0x38, 0x7c, 0x55, 0x14, 0xfe, 0x24, 0x1f, 0x81, 0xe1, 0xb2, 0x6d, 0x79, + 0x7a, 0xc3, 0xdf, 0x80, 0xfe, 0x84, 0x72, 0x86, 0x12, 0xc1, 0x4e, 0xf7, 0x68, 0x51, 0x72, 0xa9, + 0xbc, 0x68, 0xfb, 0x4f, 0x26, 0x97, 0x0f, 0x9a, 0x1e, 0x25, 0x67, 0x33, 0xda, 0x5d, 0xdb, 0x59, + 0x69, 0xda, 0xba, 0xe1, 0xc7, 0x2e, 0x15, 0x0d, 0xf9, 0x67, 0xca, 0x8c, 0x96, 0x4c, 0xc6, 0x66, + 0xb4, 0x64, 0x4c, 0x12, 0x6b, 0xd1, 0x45, 0x3f, 0xb5, 0x0d, 0xeb, 0x70, 0x1e, 0x4e, 0xc6, 0x24, + 0xb1, 0x16, 0x9f, 0xff, 0xcf, 0xb7, 0x61, 0x1d, 0xce, 0xc3, 0xc9, 0x18, 0x66, 0x5a, 0xdf, 0x30, + 0x3d, 0xff, 0x61, 0xdb, 0x4f, 0x2b, 0xa6, 0x75, 0x88, 0x62, 0xa6, 0x75, 0xf8, 0x8b, 0x50, 0x38, + 0x1f, 0x3c, 0x95, 0x0c, 0xf7, 0xae, 0x15, 0x6b, 0x8d, 0xed, 0x8f, 0xf3, 0xff, 0xb3, 0x72, 0x2a, + 0xd2, 0x99, 0x74, 0xba, 0x47, 0xeb, 0xc2, 0x88, 0x54, 0x15, 0x3f, 0x45, 0x1e, 0xd4, 0x2f, 0xff, + 0x33, 0xa9, 0x2e, 0x8e, 0x8a, 0x9c, 0x26, 0xe6, 0xa8, 0xc8, 0xc1, 0x62, 0xce, 0x5a, 0x6c, 0xd2, + 0xdb, 0x73, 0x95, 0x37, 0xa4, 0xd9, 0xf5, 0x4b, 0xf1, 0x39, 0x2b, 0x46, 0x24, 0xe6, 0xac, 0x18, + 0x9c, 0xfc, 0xb5, 0x14, 0x3c, 0xa9, 0xca, 0xf7, 0x8d, 0x17, 0x9e, 0x79, 0x49, 0xa3, 0x6b, 0x76, + 0x43, 0xb6, 0xac, 0x7e, 0x96, 0xd7, 0xf2, 0x74, 0xa7, 0xee, 0x4a, 0x2a, 0x34, 0xdd, 0xa3, 0xed, + 0x88, 0xf9, 0x0e, 0x5a, 0x21, 0x94, 0xe6, 0xe7, 0x76, 0xd5, 0x8a, 0x40, 0x85, 0x76, 0xc4, 0x7c, + 0x07, 0xad, 0x10, 0xa3, 0xe2, 0xe7, 0x77, 0xd5, 0x8a, 0x60, 0x8c, 0xec, 0x88, 0x39, 0xee, 0x3e, + 0xef, 0xd6, 0x2a, 0xe5, 0xc0, 0xd7, 0x67, 0xc3, 0x6a, 0xe4, 0x7f, 0x41, 0xdd, 0x7d, 0xaa, 0x14, + 0xb8, 0xfb, 0x54, 0x81, 0x6c, 0xb9, 0x9f, 0xa6, 0x7a, 0x93, 0x6d, 0x47, 0x69, 0x63, 0x25, 0x62, + 0xbc, 0xfd, 0xa2, 0xb2, 0xdc, 0x77, 0xa0, 0x63, 0xcb, 0x7d, 0x07, 0x54, 0x22, 0x77, 0x21, 0xa1, + 0x5f, 0xda, 0x8e, 0x7b, 0x68, 0xaa, 0x74, 0x40, 0x25, 0x72, 0x17, 0x5a, 0xf0, 0x2f, 0xb6, 0xe3, + 0x1e, 0x9a, 0x2a, 0x1d, 0x50, 0xe4, 0x1b, 0x52, 0x70, 0x39, 0xa9, 0x3b, 0x78, 0xec, 0x8f, 0xf9, + 0x35, 0xea, 0x38, 0xa6, 0xe1, 0x5f, 0x20, 0xff, 0x32, 0xaf, 0xef, 0x99, 0x6e, 0xfd, 0x9d, 0x54, + 0x70, 0xba, 0x47, 0xdb, 0x71, 0x25, 0x3b, 0x6c, 0x91, 0x90, 0xc0, 0xaf, 0xec, 0xba, 0x45, 0x81, + 0x48, 0x76, 0x5c, 0x09, 0x4e, 0x38, 0xe6, 0x92, 0xeb, 0xd9, 0x0e, 0xad, 0xda, 0x4d, 0xb3, 0xe1, + 0xaf, 0x37, 0xbf, 0xaa, 0x4e, 0x38, 0x09, 0x44, 0x38, 0xe1, 0x24, 0xc0, 0xe3, 0x4c, 0x85, 0xc6, + 0xfc, 0x5a, 0x57, 0xa6, 0x92, 0x39, 0x97, 0x00, 0x8f, 0x33, 0x15, 0x62, 0xfa, 0x97, 0x5d, 0x99, + 0x4a, 0xe6, 0x5c, 0x02, 0x9c, 0x58, 0x70, 0x31, 0x34, 0x74, 0x4b, 0x4b, 0xd4, 0xf2, 0x34, 0xbb, + 0xd9, 0xb4, 0xdb, 0xde, 0x82, 0x63, 0x2e, 0x2d, 0x51, 0x27, 0xff, 0xeb, 0xca, 0x01, 0x59, 0x57, + 0xea, 0xe9, 0x1e, 0xad, 0x3b, 0x3b, 0xe2, 0x41, 0x21, 0x99, 0x60, 0xca, 0x76, 0x1a, 0x74, 0xc2, + 0xb6, 0x68, 0xfe, 0x37, 0x52, 0xd1, 0xeb, 0xe9, 0x6d, 0xe8, 0xa7, 0x7b, 0xb4, 0xed, 0x58, 0x92, + 0x4f, 0xc1, 0xa3, 0xc9, 0x24, 0xec, 0xbf, 0x45, 0xbd, 0xb1, 0x92, 0xff, 0x5f, 0x52, 0x51, 0x9f, + 0xbf, 0xee, 0xe4, 0xd3, 0x3d, 0xda, 0x36, 0x0c, 0xc9, 0x04, 0x9c, 0x98, 0x2d, 0x57, 0x23, 0x0f, + 0x3a, 0x7e, 0x33, 0xa5, 0x3c, 0xbf, 0x8a, 0xe2, 0xf1, 0xf9, 0x55, 0x14, 0xc4, 0xec, 0xa9, 0x10, + 0x34, 0x69, 0x19, 0xf9, 0xff, 0x55, 0xb1, 0xa7, 0x22, 0x58, 0xf4, 0x2f, 0x95, 0x01, 0x6c, 0x9e, + 0x0d, 0x01, 0xfe, 0xbd, 0xfc, 0x6f, 0x29, 0xf3, 0x6c, 0x8c, 0x82, 0xcd, 0xb3, 0x31, 0x20, 0xb3, + 0x72, 0x42, 0xe0, 0x9c, 0x2d, 0x5c, 0x7e, 0x4d, 0xdb, 0xca, 0xff, 0xb6, 0x62, 0xe5, 0x24, 0x93, + 0x31, 0x2b, 0x27, 0x19, 0xc3, 0x54, 0x7b, 0xdc, 0x6e, 0x5b, 0xc6, 0x2d, 0xba, 0xd1, 0xd2, 0x4d, + 0xc7, 0x7f, 0x87, 0x94, 0xff, 0x1d, 0x45, 0xb5, 0x93, 0x88, 0x98, 0x6a, 0x27, 0xc1, 0x63, 0x4c, + 0x6d, 0x8f, 0xb7, 0xf6, 0x5f, 0x75, 0x63, 0x2a, 0x88, 0x62, 0x4c, 0x05, 0x9c, 0x7c, 0x3a, 0x05, + 0xef, 0x95, 0x11, 0x37, 0x6d, 0xd3, 0x42, 0x0f, 0xec, 0x3b, 0xd4, 0x09, 0xbe, 0x67, 0x4a, 0x37, + 0x9b, 0xd4, 0xc8, 0x6f, 0xf2, 0x8a, 0xae, 0x25, 0x55, 0xd4, 0xa5, 0xdc, 0x74, 0x8f, 0xb6, 0xd3, + 0x2a, 0xc8, 0x22, 0x9c, 0x0b, 0x45, 0xca, 0x2c, 0x33, 0x6a, 0xd5, 0x6a, 0x93, 0x35, 0xcf, 0xa1, + 0xfa, 0x6a, 0xfe, 0x77, 0x95, 0xc3, 0xb6, 0x8e, 0x94, 0xe8, 0x4b, 0xde, 0x09, 0x49, 0x56, 0xe0, + 0x42, 0x88, 0xf4, 0xed, 0xc2, 0x85, 0x85, 0xaa, 0xaf, 0x4e, 0xbf, 0xa7, 0x1c, 0xd3, 0x76, 0x23, + 0x9e, 0xee, 0xd1, 0xba, 0x32, 0xc3, 0x8b, 0x8f, 0x72, 0x65, 0x96, 0xb5, 0xc1, 0xb4, 0x96, 0xb8, + 0x5f, 0xd4, 0xef, 0xab, 0x17, 0x1f, 0x0a, 0x01, 0x5e, 0x7c, 0x28, 0x30, 0xbc, 0xcd, 0x2d, 0x57, + 0x66, 0x7d, 0x4b, 0x81, 0x73, 0xfa, 0xb2, 0x7a, 0x9b, 0xab, 0x52, 0xe0, 0x6d, 0xae, 0x0a, 0x64, + 0xd6, 0xb4, 0x08, 0x50, 0x55, 0xd5, 0xa8, 0xeb, 0x39, 0x26, 0xbe, 0xd4, 0xf1, 0xcf, 0x34, 0xff, + 0xb5, 0x62, 0x4d, 0x77, 0x26, 0x65, 0xd6, 0x74, 0x67, 0x2c, 0xfb, 0xf6, 0x3b, 0x16, 0xf5, 0x22, + 0x16, 0xcc, 0xff, 0xa1, 0x7c, 0xbb, 0x4a, 0xc0, 0xbe, 0x5d, 0x85, 0x45, 0x19, 0x89, 0x56, 0xfe, + 0x9f, 0x1d, 0x19, 0x85, 0x5b, 0x6b, 0x15, 0x16, 0x65, 0x24, 0x96, 0x9b, 0xad, 0x8e, 0x8c, 0xc2, + 0xad, 0xb5, 0x0a, 0x23, 0x77, 0xe0, 0xb4, 0xbf, 0x22, 0x47, 0x5d, 0x7c, 0xff, 0x2f, 0xe5, 0x34, + 0x3b, 0x91, 0x6a, 0xba, 0x47, 0x4b, 0x2e, 0x9e, 0xc0, 0x57, 0x7c, 0xee, 0x1f, 0x74, 0xe7, 0x1b, + 0x9e, 0xbe, 0x27, 0x22, 0x12, 0xf8, 0x8a, 0xaf, 0xff, 0xb7, 0xdd, 0xf9, 0x86, 0xa7, 0xef, 0x89, + 0x08, 0x36, 0x27, 0x55, 0x2c, 0x71, 0x1f, 0x36, 0x6b, 0x1b, 0xc1, 0x09, 0xca, 0xbf, 0x53, 0xe6, + 0xa4, 0x24, 0x22, 0x36, 0x27, 0x25, 0xc1, 0xe3, 0x4c, 0x85, 0x0c, 0xfe, 0xef, 0xae, 0x4c, 0x43, + 0x6b, 0x23, 0x09, 0x1e, 0x67, 0x2a, 0x04, 0xf0, 0x87, 0x5d, 0x99, 0x86, 0xd6, 0x46, 0x12, 0x9c, + 0x89, 0x35, 0x80, 0xd7, 0x68, 0xc3, 0xa1, 0xfe, 0x31, 0xc3, 0xff, 0xa3, 0x88, 0x35, 0x91, 0x8a, + 0x89, 0x35, 0x11, 0x91, 0xc0, 0x57, 0x88, 0xe0, 0xdf, 0x77, 0xe7, 0x1b, 0xaa, 0x41, 0x22, 0x22, + 0x81, 0xaf, 0x90, 0xc2, 0x1f, 0x75, 0xe7, 0x1b, 0xaa, 0x41, 0x22, 0x22, 0xc2, 0x37, 0x62, 0x75, + 0xfe, 0x71, 0x27, 0xbe, 0x8a, 0xd9, 0x99, 0x5c, 0x3c, 0x81, 0xaf, 0x90, 0xc3, 0xff, 0xdb, 0x9d, + 0x6f, 0x82, 0x1c, 0x22, 0xa6, 0x67, 0x9c, 0xaf, 0x90, 0xc3, 0x7f, 0xe8, 0xce, 0x37, 0x41, 0x0e, + 0x11, 0xeb, 0x13, 0x5d, 0x6e, 0xb8, 0xb9, 0x83, 0x07, 0x50, 0xe6, 0xdb, 0xd4, 0xc8, 0xff, 0x49, + 0xcc, 0xe5, 0x46, 0xa1, 0xe0, 0x2e, 0x37, 0x0a, 0x90, 0x29, 0xac, 0x46, 0x3d, 0xc7, 0xa4, 0x6b, + 0x7a, 0x53, 0x1e, 0x5a, 0x7f, 0x96, 0x52, 0x1f, 0x52, 0xc7, 0x89, 0xf8, 0x43, 0xea, 0x38, 0x3c, + 0xce, 0x54, 0xc8, 0xf3, 0x3f, 0x75, 0x65, 0x1a, 0x0e, 0xad, 0x24, 0x78, 0x9c, 0xa9, 0x10, 0xe6, + 0x7f, 0xee, 0xca, 0x34, 0x1c, 0x5a, 0x49, 0x70, 0x72, 0x0d, 0xfa, 0x31, 0x84, 0xa3, 0xd6, 0xb6, + 0xf2, 0x7f, 0xae, 0x44, 0x71, 0xf3, 0x11, 0xd3, 0x3d, 0x5a, 0x40, 0x34, 0xde, 0x07, 0xbd, 0xb8, + 0xba, 0xdd, 0xcc, 0xf5, 0xff, 0x50, 0x6a, 0xf4, 0x87, 0x53, 0x37, 0x73, 0xfd, 0x3f, 0x9c, 0x1a, + 0xfd, 0x11, 0xf6, 0xff, 0x8f, 0xa4, 0x46, 0x7f, 0x34, 0xa5, 0x9d, 0x53, 0x2c, 0xdc, 0x6a, 0x53, + 0x17, 0x47, 0x19, 0x89, 0x28, 0xfe, 0x33, 0x11, 0xc5, 0x9b, 0x58, 0xfc, 0x62, 0x0a, 0x86, 0xb8, + 0x4d, 0x21, 0xb2, 0x74, 0x9c, 0x87, 0x7e, 0x1e, 0xe7, 0xc0, 0x0f, 0x2b, 0xa9, 0x05, 0xbf, 0xc9, + 0x25, 0x18, 0x99, 0xd1, 0x5d, 0x0f, 0x9b, 0x58, 0xb1, 0x0c, 0x7a, 0x1f, 0x63, 0x7c, 0x65, 0x34, + 0x05, 0x4a, 0x66, 0x38, 0x1d, 0x2f, 0x87, 0xb9, 0xb2, 0x32, 0xdb, 0x26, 0xa7, 0xe8, 0xff, 0xd2, + 0x66, 0xa1, 0x07, 0x73, 0x51, 0x28, 0x65, 0x8b, 0x3f, 0x9f, 0x82, 0x58, 0x04, 0x86, 0xbd, 0x47, + 0xa3, 0x9d, 0x87, 0x13, 0x4a, 0x7e, 0x36, 0x11, 0xa8, 0x6c, 0x87, 0xe9, 0xdb, 0xd4, 0xd2, 0xe4, + 0xbd, 0x41, 0x80, 0xac, 0xdb, 0xda, 0x8c, 0x48, 0x3c, 0xc2, 0xb3, 0xc6, 0x3b, 0x4d, 0x4d, 0x42, + 0x89, 0xc0, 0xf2, 0x5f, 0x7d, 0x32, 0x4c, 0x19, 0x45, 0x2e, 0x89, 0xd0, 0xb8, 0x52, 0xfa, 0xa4, + 0x76, 0x34, 0xa9, 0x2c, 0x0f, 0x85, 0xfb, 0x11, 0x18, 0xaa, 0xac, 0xb6, 0xa8, 0xe3, 0xda, 0x96, + 0xee, 0xd9, 0x7e, 0x26, 0x7b, 0x0c, 0xb2, 0x69, 0x4a, 0x70, 0x39, 0xc8, 0xa6, 0x4c, 0x4f, 0xae, + 0x40, 0xaf, 0x66, 0x37, 0xa9, 0x9b, 0xcf, 0x60, 0xda, 0x2f, 0x0c, 0x5f, 0xe7, 0x30, 0x80, 0x1c, + 0x07, 0x15, 0x29, 0x18, 0x29, 0xcf, 0x0a, 0x9f, 0x0d, 0x49, 0x31, 0x11, 0xbc, 0x4c, 0xca, 0x73, + 0xc9, 0x3f, 0x0d, 0x39, 0x3c, 0x83, 0x74, 0xf3, 0xbd, 0x48, 0x8b, 0xf1, 0x55, 0x9b, 0x08, 0x91, + 0xc3, 0xb5, 0x72, 0x1a, 0x72, 0x0b, 0x46, 0xc3, 0x77, 0x35, 0x37, 0x1c, 0xbb, 0xdd, 0x72, 0x31, + 0x7b, 0xfd, 0xc0, 0x78, 0x61, 0x6b, 0xb3, 0xf0, 0xc8, 0x4a, 0x80, 0xab, 0x2f, 0x21, 0x52, 0x62, + 0x11, 0x2b, 0x48, 0xa6, 0xe1, 0x44, 0x08, 0x63, 0x22, 0x72, 0x45, 0x16, 0x7b, 0x0c, 0x0d, 0x2a, + 0xf1, 0x62, 0xe2, 0x94, 0x59, 0xa9, 0xc5, 0x48, 0x05, 0xfa, 0xfc, 0x0c, 0x2a, 0xfd, 0xdb, 0x2a, + 0xe9, 0x49, 0x91, 0x41, 0xa5, 0x4f, 0xce, 0x9d, 0xe2, 0x97, 0x27, 0x53, 0x30, 0xa2, 0xd9, 0x6d, + 0x8f, 0x2e, 0xd8, 0xc2, 0xc0, 0x10, 0x49, 0x7d, 0xb0, 0x4d, 0x0e, 0xc3, 0xd4, 0x3d, 0xbb, 0xde, + 0xe0, 0x38, 0x39, 0x5c, 0x69, 0xb4, 0x14, 0x99, 0x83, 0xb1, 0xd8, 0x0b, 0x24, 0x91, 0xe2, 0x07, + 0x73, 0x61, 0x48, 0x9f, 0x17, 0x67, 0x16, 0x2f, 0x4a, 0xbe, 0x2a, 0x05, 0xb9, 0x05, 0x47, 0x37, + 0x3d, 0x57, 0x44, 0x61, 0x3b, 0x7d, 0x75, 0xdd, 0xd1, 0x5b, 0x4c, 0x3f, 0xae, 0x62, 0x36, 0xb6, + 0x3b, 0x7a, 0xb3, 0x4d, 0xdd, 0xf1, 0xbb, 0xec, 0xeb, 0x7e, 0x6b, 0xb3, 0xf0, 0x32, 0x0f, 0xb9, + 0x7b, 0xb5, 0x61, 0xaf, 0x5e, 0x5b, 0x72, 0xf4, 0x35, 0x93, 0xef, 0xb3, 0xf4, 0xe6, 0x35, 0x8f, + 0x36, 0xd1, 0x9d, 0xf2, 0x9a, 0xde, 0x32, 0xaf, 0x61, 0xfe, 0xd0, 0x6b, 0x01, 0x27, 0x5e, 0x03, + 0x53, 0x01, 0x0f, 0xff, 0x92, 0x55, 0x80, 0xe3, 0xc8, 0x1c, 0x80, 0xf8, 0xd4, 0x52, 0xab, 0x25, + 0x42, 0xba, 0x49, 0x4e, 0x88, 0x3e, 0x86, 0x2b, 0x76, 0x20, 0x30, 0xbd, 0x25, 0xe5, 0xcc, 0xd3, + 0x24, 0x0e, 0x4c, 0x0b, 0x16, 0x44, 0x8b, 0x7c, 0x31, 0x0d, 0x4b, 0x01, 0x62, 0x05, 0x2a, 0x41, + 0x48, 0x6a, 0x31, 0xb2, 0x08, 0x27, 0x04, 0xdf, 0x20, 0x61, 0xf8, 0x48, 0x74, 0x56, 0x50, 0xd0, + 0x5c, 0x69, 0x83, 0x36, 0x1a, 0x02, 0x2c, 0xd7, 0xa1, 0x94, 0x20, 0xe3, 0x30, 0xec, 0xff, 0x3d, + 0xa7, 0xaf, 0x52, 0x37, 0x7f, 0x02, 0x35, 0x16, 0xd3, 0x9a, 0xf9, 0xe5, 0x31, 0x99, 0x90, 0x2c, + 0xba, 0x68, 0x11, 0x99, 0x07, 0xd7, 0xfa, 0xd1, 0x04, 0x1e, 0xaa, 0xce, 0x47, 0x8b, 0x88, 0xec, + 0xd6, 0xdc, 0x47, 0xff, 0xf6, 0xed, 0xca, 0x04, 0xc6, 0x8c, 0x1b, 0x08, 0xb3, 0x5b, 0x4b, 0x89, + 0xb4, 0x95, 0xec, 0xd6, 0x61, 0x19, 0x29, 0x90, 0x30, 0x0f, 0x22, 0xa7, 0x04, 0x12, 0x6e, 0x25, + 0x04, 0x12, 0xae, 0x92, 0x0f, 0xc3, 0x60, 0xe9, 0x6e, 0x4d, 0x04, 0x48, 0x76, 0xf3, 0x27, 0xb1, + 0xed, 0x18, 0x12, 0x19, 0xa3, 0x32, 0x8b, 0x60, 0xca, 0x72, 0xd3, 0x65, 0x7a, 0x32, 0x09, 0x23, + 0x91, 0xeb, 0x09, 0x37, 0x7f, 0x0a, 0x39, 0x60, 0xcb, 0x75, 0xc4, 0xd4, 0x1d, 0x81, 0x92, 0x87, + 0x57, 0xb4, 0x10, 0xd3, 0x9a, 0x09, 0xd3, 0xc5, 0x24, 0xfe, 0x1a, 0xc5, 0x58, 0xcc, 0x18, 0x81, + 0xae, 0x9f, 0x6b, 0x8d, 0x21, 0x50, 0x75, 0x87, 0xe3, 0xe4, 0x1e, 0x55, 0x8a, 0x91, 0xb7, 0x80, + 0x60, 0xda, 0x7f, 0x6a, 0xf8, 0x7b, 0xd3, 0xca, 0x84, 0x9b, 0x3f, 0x83, 0xf9, 0x2d, 0x89, 0x1a, + 0x3a, 0xb5, 0x32, 0x31, 0x7e, 0x49, 0x4c, 0x1f, 0x8f, 0xea, 0xbc, 0x54, 0xdd, 0x0f, 0x9b, 0x5a, + 0x37, 0x0d, 0xb9, 0xc5, 0x09, 0x5c, 0xc9, 0x3a, 0x9c, 0xad, 0x3a, 0x74, 0xcd, 0xb4, 0xdb, 0xae, + 0xbf, 0x7c, 0xf8, 0xf3, 0xd6, 0xd9, 0x6d, 0xe7, 0xad, 0xc7, 0x45, 0xc5, 0xa7, 0x5b, 0x0e, 0x5d, + 0xab, 0xfb, 0xb9, 0x08, 0x23, 0x19, 0xa0, 0x3a, 0x71, 0x67, 0xe2, 0x42, 0xfb, 0x44, 0xc0, 0x4d, + 0xea, 0xe6, 0xf3, 0xe1, 0x54, 0xcb, 0xa3, 0x7e, 0x9b, 0x01, 0x4e, 0x16, 0x97, 0x52, 0x8c, 0x68, + 0x40, 0x6e, 0x94, 0xfd, 0xf7, 0x2a, 0xa5, 0x46, 0xc3, 0x6e, 0x5b, 0x9e, 0x9b, 0x3f, 0x87, 0xcc, + 0x8a, 0x4c, 0x2c, 0x4b, 0x8d, 0x20, 0xc3, 0x69, 0x5d, 0x17, 0x78, 0x59, 0x2c, 0xf1, 0xd2, 0x64, + 0x06, 0x46, 0xab, 0x0e, 0x7a, 0xcf, 0xdd, 0xa2, 0x1b, 0xdc, 0x8e, 0xc5, 0x40, 0x78, 0x62, 0xaa, + 0x6c, 0x71, 0x1c, 0xa6, 0x0b, 0x6c, 0x21, 0x56, 0x5e, 0x56, 0xd4, 0x92, 0x72, 0x26, 0xbc, 0x47, + 0x76, 0x96, 0x09, 0x8f, 0xc2, 0xa8, 0x78, 0xed, 0x72, 0xdf, 0xa3, 0x16, 0x5b, 0xea, 0x5d, 0x11, + 0xf4, 0x2e, 0xaf, 0xbc, 0x8e, 0x09, 0xf0, 0x7c, 0xea, 0x10, 0xa3, 0x8c, 0x06, 0x60, 0xb9, 0x61, + 0x6a, 0x91, 0x78, 0xba, 0xb8, 0x8b, 0x7b, 0x48, 0x17, 0xf7, 0x22, 0x0c, 0xdc, 0xb4, 0x4d, 0xfe, + 0xbc, 0x04, 0x23, 0xdc, 0x89, 0x34, 0x66, 0x6f, 0xd9, 0xa6, 0x55, 0xc7, 0x9c, 0x60, 0x72, 0xe4, + 0xf6, 0x80, 0x94, 0x4c, 0x42, 0x3f, 0x26, 0x91, 0xab, 0x9a, 0x96, 0x88, 0x60, 0x17, 0x98, 0x5b, + 0x3e, 0x9c, 0x8f, 0x7e, 0xcc, 0x3d, 0x57, 0x6f, 0x45, 0xf2, 0x3c, 0x05, 0x45, 0xc9, 0x47, 0x21, + 0xaf, 0xe8, 0x35, 0x1f, 0x98, 0x6c, 0xcc, 0x3c, 0x86, 0x63, 0x26, 0x16, 0x6e, 0xd8, 0x27, 0x18, + 0xcf, 0x32, 0x05, 0xd6, 0x3a, 0x96, 0x27, 0xd7, 0x61, 0x10, 0xbf, 0x95, 0xbb, 0x70, 0x63, 0x04, + 0xbb, 0x7e, 0x9e, 0xdd, 0x94, 0x4b, 0x87, 0xc3, 0x35, 0x99, 0xa8, 0xf8, 0xfb, 0xa9, 0xf0, 0xbb, + 0x48, 0xc1, 0x4f, 0xa5, 0xc7, 0x4d, 0xb1, 0x81, 0xad, 0xcd, 0x42, 0x2f, 0x7e, 0x8e, 0x48, 0xa0, + 0x47, 0x16, 0x60, 0x30, 0x7c, 0xf0, 0xe3, 0xe6, 0xd3, 0xd8, 0xe0, 0xc7, 0x55, 0x39, 0x5c, 0x95, + 0x68, 0x78, 0xca, 0x5a, 0x0c, 0x30, 0xac, 0x87, 0x50, 0x4d, 0x66, 0x73, 0xfe, 0x93, 0x30, 0xaa, + 0x96, 0x48, 0x48, 0x8a, 0xfa, 0xbc, 0x9c, 0x14, 0x55, 0xf6, 0x04, 0x13, 0xb5, 0x5a, 0xd4, 0x90, + 0xb8, 0xc8, 0x49, 0x53, 0x5f, 0x82, 0x33, 0xc9, 0x44, 0xec, 0x83, 0xb9, 0x49, 0x98, 0xc2, 0xf1, + 0x87, 0x1f, 0x8c, 0x26, 0xa1, 0x30, 0x04, 0x8b, 0xff, 0x2e, 0x23, 0xaf, 0xd6, 0xe4, 0x02, 0x64, + 0x71, 0x5c, 0xa4, 0xc2, 0x74, 0x68, 0x98, 0x8f, 0x36, 0x2b, 0x12, 0x42, 0x0e, 0xf8, 0xe7, 0x87, + 0x7e, 0x60, 0xf9, 0x91, 0xad, 0xcd, 0x02, 0x84, 0x29, 0xb2, 0xb4, 0x90, 0x80, 0x5c, 0x03, 0xa8, + 0xb6, 0x17, 0x9b, 0x66, 0x03, 0xb3, 0x14, 0x67, 0xa4, 0x40, 0xcc, 0x08, 0xe5, 0x49, 0x8a, 0x25, + 0x12, 0xd6, 0xbd, 0xbe, 0x8f, 0x6f, 0x98, 0x0e, 0x10, 0xbb, 0x57, 0xac, 0xed, 0x22, 0x37, 0xae, + 0x44, 0x44, 0x3e, 0x04, 0x10, 0x2e, 0x1e, 0xc2, 0x2e, 0x47, 0xc3, 0x42, 0x5e, 0x6b, 0x64, 0xc3, + 0x22, 0xa4, 0x66, 0xcb, 0xac, 0x3c, 0x79, 0x6d, 0x88, 0x2c, 0x81, 0xb8, 0xcc, 0x46, 0x66, 0x3c, + 0x79, 0x3a, 0x89, 0x16, 0x21, 0xf3, 0x30, 0x16, 0x9b, 0xaf, 0x44, 0xf2, 0xc0, 0xc7, 0xb7, 0x36, + 0x0b, 0x17, 0x13, 0x26, 0x3b, 0xd9, 0x8c, 0x8b, 0x95, 0x25, 0x4f, 0x40, 0xe6, 0xb6, 0x56, 0x11, + 0x09, 0xcc, 0x78, 0xee, 0xbb, 0x48, 0xfa, 0x00, 0x86, 0x25, 0x2f, 0x01, 0xf0, 0x9c, 0xed, 0x55, + 0xdb, 0xf1, 0xd0, 0xfe, 0x1c, 0xe6, 0xe9, 0x5e, 0x79, 0x4e, 0xf7, 0x3a, 0x33, 0x7a, 0xe4, 0x8f, + 0x0e, 0x89, 0x8b, 0x7f, 0x35, 0x1d, 0x33, 0x82, 0x98, 0xe0, 0x45, 0x2b, 0xa4, 0xce, 0x47, 0xc1, + 0xfb, 0x4d, 0xe7, 0x82, 0x97, 0x88, 0xc8, 0x65, 0xe8, 0xaf, 0xb2, 0x25, 0xa8, 0x61, 0x37, 0x85, + 0x2a, 0x60, 0x16, 0x8b, 0x96, 0x80, 0x69, 0x01, 0x96, 0x5c, 0xe7, 0x39, 0x38, 0x2d, 0x25, 0xf3, + 0x68, 0x5b, 0xc0, 0xd4, 0x14, 0x9c, 0x0c, 0xc6, 0xca, 0x04, 0x26, 0x5a, 0x36, 0x2c, 0x93, 0x60, + 0x80, 0x05, 0x74, 0xe1, 0xf6, 0xa7, 0x77, 0xbb, 0xed, 0x4f, 0xf1, 0x27, 0x52, 0xf1, 0x09, 0x9d, + 0x3c, 0x1f, 0xcf, 0xec, 0x87, 0xf3, 0x5d, 0x00, 0x94, 0x6b, 0x0d, 0x72, 0xfc, 0x45, 0x72, 0xf4, + 0xa5, 0xf7, 0x9c, 0xa3, 0x2f, 0xb3, 0xcb, 0x1c, 0x7d, 0xc5, 0xff, 0x94, 0xed, 0x1a, 0x06, 0xe4, + 0x50, 0x72, 0xb9, 0xbc, 0xc4, 0xb6, 0xf0, 0xac, 0xf6, 0x92, 0x1b, 0xdb, 0x88, 0xf2, 0x28, 0x07, + 0x75, 0x9d, 0x8f, 0x4a, 0x57, 0x8b, 0x52, 0x92, 0x57, 0x61, 0xc8, 0xff, 0x00, 0xcc, 0xfd, 0x28, + 0xe5, 0x2c, 0x0c, 0xcc, 0x27, 0x25, 0x4b, 0x62, 0xa4, 0x00, 0x79, 0x01, 0x06, 0xd0, 0x78, 0x6e, + 0xe9, 0x0d, 0x3f, 0x31, 0x28, 0xcf, 0x24, 0xea, 0x03, 0xe5, 0x55, 0x2f, 0xa0, 0x24, 0x9f, 0x80, + 0x9c, 0x48, 0x58, 0x9e, 0xc3, 0xb9, 0xfe, 0xda, 0x0e, 0xe2, 0xa6, 0x5c, 0x95, 0x93, 0x95, 0xf3, + 0xed, 0x30, 0x02, 0x22, 0xdb, 0x61, 0x9e, 0xa7, 0x7c, 0x01, 0x4e, 0x56, 0x1d, 0x6a, 0x60, 0x84, + 0x9e, 0xc9, 0xfb, 0x2d, 0x47, 0xa4, 0x92, 0xe7, 0x13, 0x04, 0x5a, 0x43, 0x2d, 0x1f, 0xcd, 0xec, + 0x34, 0x81, 0x97, 0xb3, 0x13, 0x26, 0x14, 0x67, 0x26, 0x32, 0x6f, 0xc9, 0x2d, 0xba, 0xb1, 0x6e, + 0x3b, 0x06, 0xcf, 0xb6, 0x2e, 0x0c, 0x05, 0x21, 0xe8, 0x15, 0x81, 0x92, 0x4d, 0xe4, 0x68, 0xa1, + 0xf3, 0x2f, 0xc1, 0xe0, 0x5e, 0xd3, 0x74, 0x7f, 0x7f, 0xba, 0x43, 0x40, 0xad, 0xa3, 0x99, 0xa4, + 0x7f, 0x5c, 0x99, 0x6e, 0x64, 0xbb, 0x4e, 0xc0, 0x3b, 0x35, 0x3e, 0x98, 0x7e, 0x0a, 0xd0, 0xcb, + 0x83, 0x96, 0xf6, 0x86, 0xb6, 0xc5, 0xa7, 0xf0, 0x85, 0x23, 0x87, 0x17, 0xff, 0x38, 0xdd, 0x21, + 0x5a, 0xd8, 0xc3, 0x2b, 0x33, 0xb6, 0xf0, 0xf8, 0xc2, 0xa8, 0x4c, 0xa0, 0xe4, 0x86, 0xc5, 0xc2, + 0xe3, 0x83, 0x99, 0x51, 0x21, 0x13, 0x91, 0xab, 0x00, 0x55, 0xdd, 0xd1, 0x57, 0xa9, 0xc7, 0x76, + 0xc6, 0xfc, 0x6c, 0x09, 0xad, 0x90, 0x56, 0x00, 0xd5, 0x24, 0x8a, 0xe2, 0x77, 0x66, 0xba, 0x45, + 0x53, 0x3b, 0x96, 0xfd, 0x6e, 0x64, 0x7f, 0x1d, 0x06, 0x03, 0xc9, 0x56, 0x26, 0xd0, 0x5e, 0x12, + 0x65, 0x02, 0xe1, 0x63, 0x19, 0x89, 0x88, 0x5c, 0xe1, 0x6d, 0xad, 0x99, 0x6f, 0xf3, 0xac, 0xca, + 0xc3, 0x22, 0x5f, 0xae, 0xee, 0xe9, 0x75, 0xd7, 0x7c, 0x9b, 0x6a, 0x01, 0xba, 0xf8, 0xcf, 0xd2, + 0x89, 0x21, 0xe9, 0x8e, 0xfb, 0x68, 0x17, 0x7d, 0x94, 0x20, 0x44, 0x1e, 0x4c, 0xef, 0x58, 0x88, + 0xbb, 0x10, 0xe2, 0x1f, 0xa6, 0x13, 0x43, 0x0f, 0x1e, 0x0b, 0x71, 0x37, 0xb3, 0xc5, 0xd3, 0x30, + 0xa0, 0xd9, 0xeb, 0x6e, 0x19, 0xf7, 0x44, 0x7c, 0xae, 0xc0, 0x89, 0xda, 0xb1, 0xd7, 0xdd, 0x3a, + 0xee, 0x76, 0xb4, 0x90, 0xa0, 0xf8, 0xa7, 0xe9, 0x2e, 0xc1, 0x19, 0x8f, 0x05, 0xff, 0x4e, 0x2e, + 0x91, 0x3f, 0x98, 0x8e, 0x04, 0x7f, 0x7c, 0x78, 0x85, 0x7d, 0x0d, 0xa0, 0xd6, 0x58, 0xa6, 0xab, + 0x3a, 0xee, 0x83, 0x7b, 0xc3, 0x23, 0x0b, 0x17, 0xa1, 0x7c, 0x1b, 0x2c, 0x91, 0x14, 0x7f, 0x28, + 0xad, 0x44, 0xbf, 0x3c, 0x96, 0xdd, 0x8e, 0x65, 0x17, 0x68, 0x9d, 0x08, 0xe8, 0x79, 0x2c, 0xb9, + 0x9d, 0x4a, 0xee, 0x6b, 0xd2, 0x4a, 0xec, 0xd3, 0x87, 0x56, 0x76, 0x6c, 0x00, 0xc6, 0x63, 0xb2, + 0x3e, 0xb4, 0x9a, 0xf4, 0x34, 0x0c, 0x08, 0x39, 0x04, 0x4b, 0x05, 0x9f, 0xf7, 0x39, 0x10, 0x0f, + 0x68, 0x03, 0x82, 0xe2, 0x5f, 0x4f, 0x43, 0x34, 0x26, 0xed, 0x43, 0xaa, 0x43, 0x3f, 0x98, 0x8e, + 0x46, 0xe3, 0x7d, 0x78, 0xf5, 0xe7, 0x2a, 0x40, 0xad, 0xbd, 0xd8, 0x10, 0x6f, 0xde, 0x7a, 0xa5, + 0x13, 0xfe, 0x00, 0xaa, 0x49, 0x14, 0xc5, 0x3f, 0x4f, 0x27, 0x86, 0x08, 0x7e, 0x78, 0x05, 0xf8, + 0x1c, 0x9e, 0x8a, 0x37, 0xac, 0x70, 0x22, 0xc7, 0x43, 0x48, 0x36, 0xfe, 0xd4, 0xcb, 0xc5, 0x80, + 0x90, 0x7c, 0x30, 0xc1, 0x5c, 0xc3, 0x2b, 0xbb, 0xd0, 0x5c, 0x93, 0x0f, 0xf3, 0x25, 0xc3, 0xed, + 0xe7, 0xd2, 0xdb, 0x45, 0x54, 0x7e, 0x98, 0x57, 0xd5, 0xbe, 0xaa, 0xbe, 0x81, 0x99, 0x7f, 0x58, + 0x4f, 0x0c, 0x8d, 0x9f, 0xde, 0xda, 0x2c, 0x8c, 0xb5, 0x38, 0x48, 0xbe, 0xe4, 0x15, 0x54, 0xc5, + 0x7f, 0xd3, 0x9b, 0x1c, 0xce, 0xf7, 0xe1, 0x15, 0xe1, 0x05, 0xc8, 0x56, 0x75, 0x6f, 0x59, 0x68, + 0x32, 0xde, 0x06, 0xb6, 0x74, 0x6f, 0x59, 0x43, 0x28, 0xb9, 0x02, 0xfd, 0x9a, 0xbe, 0xce, 0xcf, + 0x3c, 0xf9, 0xcd, 0x19, 0x1e, 0xec, 0x38, 0xfa, 0x7a, 0x9d, 0x9f, 0x7b, 0x06, 0x68, 0x52, 0x84, + 0xdc, 0x2c, 0xf5, 0x96, 0x6d, 0x43, 0x9c, 0x7c, 0xc3, 0xd6, 0x66, 0x21, 0xb7, 0x8a, 0x10, 0x4d, + 0x60, 0x58, 0x65, 0xe3, 0xb6, 0xb1, 0x81, 0x37, 0x5f, 0x43, 0xbc, 0xb2, 0x45, 0xdb, 0xd8, 0xd0, + 0x10, 0x4a, 0xbe, 0x36, 0x05, 0x7d, 0xd3, 0x54, 0x37, 0xd8, 0x08, 0x19, 0xe8, 0xe6, 0xde, 0xf4, + 0xc6, 0xc1, 0xb8, 0x37, 0x8d, 0x2d, 0xf3, 0xca, 0x64, 0x45, 0x11, 0xf5, 0x93, 0x1b, 0xd0, 0x5f, + 0xd6, 0x3d, 0xba, 0x64, 0x3b, 0x1b, 0xe8, 0xb0, 0x35, 0x12, 0x7a, 0xe1, 0x46, 0xf4, 0xc7, 0x27, + 0xe2, 0x37, 0x63, 0x0d, 0xf1, 0x4b, 0x0b, 0x0a, 0x33, 0xb1, 0xf0, 0x9b, 0x39, 0xf4, 0xd8, 0x12, + 0x62, 0xe1, 0x57, 0x78, 0x9a, 0xc0, 0x84, 0xc7, 0xca, 0x43, 0xc9, 0xc7, 0xca, 0x68, 0x3d, 0xa2, + 0x53, 0x67, 0xd9, 0x36, 0x28, 0x7a, 0x46, 0x0d, 0x0b, 0xeb, 0x11, 0xa1, 0xf5, 0x86, 0x6d, 0x30, + 0xeb, 0x31, 0x20, 0x29, 0xfe, 0x6e, 0x2f, 0x24, 0x06, 0xff, 0x3c, 0x56, 0xf2, 0x63, 0x25, 0x0f, + 0x95, 0x7c, 0x22, 0xa6, 0xe4, 0xe7, 0xe3, 0xe1, 0x64, 0x1f, 0x50, 0x0d, 0xff, 0x7c, 0x36, 0x16, + 0x8c, 0xfa, 0xe1, 0xde, 0x5d, 0x86, 0xd2, 0xeb, 0xdd, 0x56, 0x7a, 0xc1, 0x80, 0xc8, 0x6d, 0x3b, + 0x20, 0xfa, 0x76, 0x3a, 0x20, 0xfa, 0x3b, 0x0e, 0x88, 0x50, 0x41, 0x06, 0x3a, 0x2a, 0x48, 0x45, + 0x0c, 0x1a, 0xe8, 0x9e, 0x14, 0xfb, 0xc2, 0xd6, 0x66, 0x61, 0x84, 0x8d, 0xa6, 0xc4, 0x6c, 0xd8, + 0xc8, 0xa2, 0xf8, 0xf3, 0xd9, 0x2e, 0x11, 0xe4, 0x0f, 0x45, 0x47, 0x9e, 0x83, 0x4c, 0xa9, 0xd5, + 0x12, 0xfa, 0x71, 0x52, 0x0a, 0x5e, 0xdf, 0xa1, 0x14, 0xa3, 0x26, 0x1f, 0x82, 0x4c, 0xe9, 0x6e, + 0x4d, 0xcd, 0x83, 0x5d, 0xba, 0x5b, 0x13, 0x5f, 0xd2, 0xb1, 0xec, 0xdd, 0x1a, 0x79, 0x25, 0x4c, + 0x48, 0xb5, 0xdc, 0xb6, 0x56, 0xc4, 0x46, 0x51, 0xf8, 0x75, 0xfb, 0x9e, 0x3c, 0x0d, 0x86, 0x62, + 0xdb, 0x45, 0x85, 0x56, 0xd1, 0xa6, 0xdc, 0xce, 0xb5, 0xa9, 0x6f, 0x5b, 0x6d, 0xea, 0xdf, 0xa9, + 0x36, 0x0d, 0xec, 0x40, 0x9b, 0x60, 0x5b, 0x6d, 0x1a, 0xdc, 0xbf, 0x36, 0xb5, 0xe0, 0x7c, 0x3c, + 0xeb, 0x47, 0xa0, 0x11, 0x1a, 0x90, 0x38, 0x56, 0x38, 0x96, 0xe0, 0xd5, 0x7f, 0x9b, 0x63, 0xeb, + 0xeb, 0x88, 0xae, 0xbb, 0x0c, 0x2f, 0x3b, 0x42, 0xc6, 0x4b, 0x17, 0xbf, 0x3f, 0xdd, 0x39, 0x59, + 0xc9, 0xd1, 0x9c, 0xe2, 0xbe, 0x22, 0x51, 0x4a, 0x59, 0x25, 0x4c, 0x4a, 0x47, 0x29, 0x2b, 0x6c, + 0x93, 0x64, 0xf6, 0x7d, 0xe9, 0x4e, 0x19, 0x54, 0xf6, 0x25, 0xb1, 0xf7, 0xc4, 0x9d, 0xe1, 0xf0, + 0x41, 0x88, 0x1b, 0xf5, 0x82, 0x9b, 0x82, 0x21, 0x59, 0x88, 0x42, 0x4a, 0x3b, 0x11, 0x70, 0xa4, + 0x1c, 0x79, 0x25, 0x48, 0x57, 0x2e, 0xf9, 0xc7, 0xa0, 0xa7, 0x9b, 0x3f, 0x66, 0x15, 0xf7, 0x18, + 0x99, 0x9c, 0x3c, 0x0d, 0xb9, 0x29, 0xcc, 0xff, 0x29, 0x0f, 0x76, 0x9e, 0x11, 0x54, 0xf6, 0x5a, + 0xe1, 0x34, 0xc5, 0xff, 0xad, 0x3f, 0xe1, 0x75, 0xd8, 0xbe, 0x84, 0x25, 0xa9, 0x49, 0x7a, 0x4f, + 0x6a, 0xf2, 0x3c, 0xe4, 0xf8, 0xa4, 0x22, 0x04, 0x38, 0x22, 0x87, 0xd0, 0x6a, 0xbb, 0x4a, 0x31, + 0x41, 0xbb, 0x4f, 0xa1, 0xbd, 0x08, 0x03, 0xf8, 0xce, 0x4b, 0x3a, 0x96, 0xc5, 0x6d, 0xf9, 0x2a, + 0x03, 0xaa, 0xdb, 0xf9, 0x90, 0x94, 0xac, 0x01, 0x09, 0x1f, 0x1f, 0x32, 0x15, 0xa4, 0x46, 0x89, + 0x5f, 0x80, 0x75, 0xf7, 0xdf, 0x7e, 0xca, 0x77, 0x1c, 0x37, 0xfd, 0xd2, 0x7c, 0x4e, 0xa0, 0x46, + 0x5d, 0xee, 0x26, 0x74, 0xe4, 0x4e, 0xa8, 0x81, 0x6c, 0xc0, 0xc9, 0x00, 0x3a, 0x65, 0x5a, 0xa6, + 0xbb, 0x8c, 0x15, 0xf7, 0x6d, 0x5b, 0xf1, 0xfb, 0x44, 0xc5, 0x85, 0xb0, 0xe2, 0x7b, 0xa2, 0x7c, + 0xbc, 0xe6, 0xa4, 0x3a, 0xc8, 0x2d, 0x18, 0xad, 0x2d, 0xdb, 0x8e, 0x37, 0x41, 0xdd, 0x86, 0x63, + 0xb6, 0xf0, 0xb5, 0x3f, 0x9f, 0xcf, 0xd1, 0x0d, 0xda, 0x65, 0xb8, 0xba, 0x11, 0x22, 0x65, 0x37, + 0x68, 0xb5, 0x20, 0x93, 0xbb, 0x66, 0xba, 0x2b, 0x33, 0x74, 0x8d, 0x36, 0xc5, 0x64, 0x8f, 0x72, + 0x77, 0x4c, 0x77, 0xa5, 0xde, 0x64, 0x50, 0x59, 0xee, 0x01, 0x29, 0x79, 0x05, 0x72, 0xfc, 0x24, + 0x4a, 0x58, 0x0a, 0x52, 0x8a, 0x45, 0x06, 0xed, 0xa0, 0x62, 0xa2, 0x0c, 0xf9, 0x44, 0xd2, 0x7b, + 0x9c, 0xc1, 0xe8, 0x3b, 0xfe, 0x18, 0x41, 0x07, 0x9e, 0x09, 0xcf, 0x73, 0x64, 0x53, 0x6e, 0x68, + 0x8f, 0xa6, 0xdc, 0xeb, 0x30, 0x1c, 0x32, 0xae, 0xda, 0x06, 0xda, 0xc2, 0xd2, 0x1b, 0xd0, 0x08, + 0xb2, 0x03, 0xb7, 0x28, 0x07, 0x32, 0x05, 0x7d, 0x22, 0xab, 0x8b, 0x78, 0x0a, 0xf3, 0x68, 0x72, + 0x46, 0xd2, 0x4e, 0xe3, 0x53, 0xa0, 0x23, 0x4e, 0x9e, 0x27, 0x76, 0xe6, 0xe4, 0x59, 0xfc, 0x89, + 0x14, 0x9c, 0x64, 0xad, 0x51, 0x64, 0x49, 0xde, 0x02, 0x60, 0x60, 0xe1, 0x97, 0x97, 0x42, 0xbf, + 0xbc, 0xf7, 0xc9, 0xdf, 0xa8, 0x14, 0xb8, 0x1a, 0x52, 0x73, 0x9f, 0xbc, 0x8b, 0xfe, 0x43, 0x88, + 0x95, 0xf6, 0x22, 0xad, 0xc7, 0x9c, 0xf3, 0x24, 0xee, 0xe7, 0x3f, 0xcc, 0x9f, 0x98, 0xed, 0xd5, + 0x0f, 0xee, 0x7b, 0xd3, 0x1d, 0x73, 0x68, 0x1d, 0xca, 0x72, 0x3c, 0x0e, 0xfd, 0xbe, 0xaf, 0xa2, + 0x98, 0x28, 0x63, 0xde, 0xf6, 0x9d, 0xea, 0xf6, 0xf1, 0xe4, 0x63, 0x89, 0xbd, 0x22, 0x96, 0xe4, + 0x47, 0xba, 0xf4, 0x83, 0xc2, 0x31, 0x89, 0x4b, 0xb2, 0xc0, 0x0e, 0xd1, 0x7e, 0x79, 0xe0, 0x05, + 0xf6, 0x2b, 0xa9, 0x8e, 0xb9, 0xce, 0x8e, 0xaa, 0xc0, 0x8a, 0x9f, 0xed, 0xf5, 0x53, 0xac, 0xed, + 0xeb, 0x13, 0x9e, 0x86, 0x01, 0x11, 0x75, 0x2f, 0xfa, 0x1c, 0x41, 0xdc, 0x4e, 0xe0, 0x6d, 0x57, + 0x40, 0xc0, 0x76, 0x2e, 0xd2, 0xcb, 0x1a, 0xe9, 0x39, 0x82, 0xf4, 0xaa, 0x46, 0x93, 0x48, 0xd8, + 0xde, 0x64, 0xf2, 0xbe, 0xe9, 0xe1, 0x46, 0x87, 0xf5, 0x65, 0x86, 0xef, 0x4d, 0xe8, 0x7d, 0xd3, + 0xe3, 0xdb, 0x9c, 0x00, 0xcd, 0xf6, 0x1d, 0xc2, 0x3a, 0xe9, 0x0d, 0xf7, 0x1d, 0x7c, 0x47, 0x14, + 0xd8, 0x22, 0x4f, 0xc3, 0x80, 0xf0, 0xf1, 0x17, 0x9e, 0x73, 0xa2, 0xb5, 0xe2, 0x55, 0x00, 0xb6, + 0x36, 0x20, 0x60, 0x1c, 0x35, 0xba, 0x14, 0xfa, 0x0a, 0x23, 0x47, 0x07, 0x21, 0x9a, 0xc0, 0x90, + 0xeb, 0x30, 0x52, 0xf3, 0x74, 0xcb, 0xd0, 0x1d, 0x63, 0xbe, 0xed, 0xb5, 0xda, 0x9e, 0xbc, 0xcf, + 0x76, 0x3d, 0xc3, 0x6e, 0x7b, 0x9a, 0x42, 0x41, 0x9e, 0x81, 0x61, 0x1f, 0x32, 0xe9, 0x38, 0xb6, + 0x23, 0x6f, 0xa6, 0x5c, 0xcf, 0xa0, 0x8e, 0xa3, 0x45, 0x09, 0xc8, 0x07, 0x61, 0xb8, 0x62, 0x05, + 0x41, 0xe4, 0xb4, 0x19, 0xb1, 0xb5, 0xc2, 0x67, 0xcc, 0x66, 0x80, 0xa8, 0xb7, 0x9d, 0xa6, 0x16, + 0x25, 0x24, 0x2f, 0xc0, 0x50, 0xb5, 0xa9, 0x7b, 0xcc, 0xcc, 0x44, 0x13, 0x6a, 0x30, 0x7c, 0xd3, + 0xd0, 0x12, 0x70, 0x7e, 0xb7, 0x1d, 0x21, 0x93, 0x8b, 0xa1, 0xd5, 0x36, 0x94, 0x50, 0x8c, 0x99, + 0x6d, 0x5a, 0x84, 0x8c, 0x7c, 0x04, 0x4e, 0xf8, 0xbf, 0x45, 0xd8, 0x58, 0xf1, 0x4c, 0x14, 0x6d, + 0xdd, 0xa0, 0xe4, 0x1a, 0xc7, 0x69, 0x2a, 0x71, 0xf1, 0xb7, 0x53, 0xe2, 0x39, 0x48, 0xa0, 0x5f, + 0x2f, 0xc3, 0x48, 0xad, 0xbd, 0x18, 0xd8, 0x25, 0xfe, 0x53, 0x79, 0xe1, 0xcf, 0x2e, 0x61, 0xf8, + 0x46, 0x39, 0x42, 0xca, 0xc4, 0xe6, 0xeb, 0x3b, 0xbe, 0x66, 0x16, 0x0a, 0x8a, 0x62, 0x0b, 0x3c, + 0xda, 0xf1, 0x0d, 0xb4, 0x16, 0x25, 0x64, 0x8a, 0x1a, 0x3e, 0x09, 0x94, 0x15, 0x55, 0x7a, 0x47, + 0xa8, 0x49, 0x24, 0x92, 0xae, 0x64, 0x3b, 0xe9, 0x4a, 0xf1, 0xb6, 0x78, 0xdf, 0x77, 0x67, 0x36, + 0xf8, 0xbc, 0x8b, 0x90, 0xbd, 0x33, 0x1b, 0x7c, 0x14, 0x1e, 0xbb, 0xad, 0xad, 0x32, 0xde, 0x08, + 0x26, 0x4f, 0x40, 0xee, 0xce, 0x2c, 0xf6, 0x1b, 0x6f, 0xf9, 0xe0, 0xd6, 0x66, 0xa1, 0x6f, 0x4d, + 0xf4, 0x98, 0x40, 0x15, 0x3f, 0x97, 0x0d, 0x83, 0x1f, 0xec, 0x6b, 0x2c, 0x57, 0x14, 0xe1, 0x8b, + 0x79, 0xe9, 0x74, 0x24, 0x90, 0x42, 0x27, 0x93, 0x26, 0xda, 0x6d, 0xf3, 0xb1, 0x4f, 0x55, 0xb7, + 0xa6, 0x0a, 0x5a, 0x7d, 0xfb, 0xaf, 0x0a, 0x4a, 0x9d, 0x08, 0x7a, 0x3b, 0x4f, 0x04, 0x2f, 0xc3, + 0x08, 0xf7, 0x58, 0xe3, 0x71, 0xc4, 0x3c, 0x7f, 0xdf, 0x80, 0x2a, 0x43, 0x7d, 0x4c, 0x1d, 0x5d, + 0xb7, 0x34, 0x85, 0x34, 0x61, 0x3c, 0xe7, 0x76, 0x3f, 0x9e, 0xfb, 0xb6, 0x1b, 0xcf, 0xcf, 0x41, + 0x7f, 0xa9, 0x5a, 0xe1, 0xc4, 0xfd, 0xd2, 0x7b, 0x95, 0x96, 0x59, 0xa7, 0x0c, 0x28, 0x9b, 0x6a, + 0x3e, 0x21, 0xdb, 0x3f, 0x8a, 0x09, 0x6e, 0x40, 0x3a, 0x2c, 0x42, 0x88, 0xbc, 0x7f, 0xe4, 0x34, + 0xc5, 0xad, 0x74, 0x3c, 0x05, 0xe5, 0xc3, 0x7b, 0x00, 0x7b, 0x25, 0xfa, 0x30, 0x00, 0x55, 0x01, + 0x0f, 0xb7, 0xe4, 0x77, 0x49, 0xfc, 0x8c, 0xeb, 0x3a, 0xf4, 0xdf, 0xa2, 0x1b, 0xfc, 0x0d, 0x4b, + 0x2e, 0xb4, 0xa2, 0x57, 0x04, 0x4c, 0xee, 0x1a, 0x9f, 0xae, 0xf8, 0x63, 0xe9, 0x78, 0x72, 0xcd, + 0x87, 0x57, 0xd8, 0xcf, 0x40, 0x1f, 0x8a, 0xb2, 0xe2, 0xbb, 0x2f, 0xa0, 0x00, 0x51, 0xdc, 0xd1, + 0xd7, 0x54, 0x3e, 0x59, 0xf1, 0x5b, 0x73, 0x6a, 0xc6, 0xd5, 0x87, 0x57, 0x7a, 0x2f, 0xc3, 0x60, + 0xd9, 0xb6, 0x5c, 0x0c, 0x43, 0xd7, 0xf0, 0x15, 0x16, 0x1f, 0x16, 0x36, 0x42, 0xb0, 0x7c, 0x5c, + 0x22, 0x51, 0xef, 0x45, 0x79, 0xd9, 0x56, 0x1f, 0x45, 0x8e, 0x0b, 0x7d, 0x5f, 0xb8, 0xd5, 0x5f, + 0x64, 0x40, 0xf5, 0x70, 0x26, 0x24, 0x25, 0xb7, 0xa1, 0xbf, 0xbc, 0x6c, 0x36, 0x0d, 0x87, 0x5a, + 0xf8, 0xf6, 0x49, 0xda, 0xa3, 0x47, 0xfb, 0xf2, 0x2a, 0xfe, 0x8b, 0xb4, 0xbc, 0x39, 0x0d, 0x51, + 0x2c, 0x12, 0xba, 0x40, 0xc0, 0xce, 0x7f, 0x63, 0x1a, 0x20, 0x2c, 0x40, 0x1e, 0x83, 0x74, 0xb0, + 0x3e, 0xa2, 0xcb, 0x6d, 0x44, 0x83, 0xd2, 0x68, 0x23, 0x8a, 0xb1, 0x9d, 0xde, 0x76, 0x6c, 0xdf, + 0x86, 0x1c, 0xbf, 0xbd, 0xc3, 0x57, 0x71, 0x52, 0x94, 0xcd, 0x8e, 0x0d, 0xbe, 0x8a, 0xf4, 0x7c, + 0xae, 0xc5, 0x2d, 0x67, 0x64, 0xae, 0xe5, 0xcc, 0xce, 0x37, 0xa0, 0x17, 0xff, 0x22, 0x97, 0x20, + 0x8b, 0x52, 0x4c, 0xe1, 0x99, 0x3c, 0xda, 0x19, 0x8a, 0xfc, 0x10, 0xcf, 0xba, 0xa9, 0x6c, 0x5b, + 0x9e, 0x78, 0xdf, 0x9c, 0xba, 0x3c, 0x24, 0xe4, 0x22, 0x60, 0x11, 0xb9, 0x08, 0x58, 0xf1, 0x67, + 0xd2, 0x09, 0xb9, 0x80, 0x1f, 0xde, 0x61, 0xf2, 0x12, 0x00, 0xc6, 0x41, 0x62, 0xf2, 0xf4, 0x9f, + 0x9b, 0xe2, 0x28, 0x41, 0x46, 0xa8, 0xb6, 0x91, 0xf3, 0x86, 0x90, 0xb8, 0xf8, 0xb3, 0xa9, 0x58, + 0x02, 0xd9, 0x7d, 0xc9, 0x51, 0xde, 0x8e, 0xa5, 0xf7, 0xb8, 0x7f, 0xf5, 0xfb, 0x22, 0xb3, 0xbb, + 0xbe, 0x88, 0x7e, 0xcb, 0x01, 0x6c, 0x49, 0x0f, 0xf3, 0x5b, 0x7e, 0x37, 0x9d, 0x94, 0x4e, 0xf7, + 0x68, 0xaa, 0x78, 0x78, 0x56, 0x9e, 0xdd, 0xc5, 0x59, 0xf9, 0x27, 0xe1, 0x84, 0x92, 0x64, 0x16, + 0xe7, 0x7f, 0x29, 0x32, 0x6f, 0x72, 0x2a, 0xda, 0xce, 0x11, 0xb4, 0x22, 0x64, 0xc5, 0xff, 0x92, + 0xea, 0x9e, 0x62, 0xf8, 0xd0, 0x55, 0x27, 0x41, 0x00, 0x99, 0xbf, 0x18, 0x01, 0x1c, 0xc0, 0xf9, + 0xd7, 0xd1, 0x16, 0xc0, 0x03, 0x32, 0x79, 0xbc, 0xd3, 0x02, 0xf8, 0xd6, 0xd4, 0xb6, 0x19, 0xa2, + 0x0f, 0x5b, 0x06, 0xc5, 0x7f, 0x95, 0x4a, 0xcc, 0xe4, 0xbc, 0xaf, 0x76, 0x85, 0x17, 0x33, 0xe9, + 0x3d, 0x5c, 0xcc, 0xcc, 0x40, 0x1f, 0x6f, 0x83, 0x21, 0x7a, 0xe3, 0xc9, 0x2e, 0xe9, 0xa4, 0x3b, + 0x5d, 0x7b, 0xf8, 0x2c, 0x8a, 0x3f, 0x99, 0x8a, 0x25, 0x96, 0x3e, 0xc4, 0x6f, 0xdb, 0xd3, 0xb5, + 0x66, 0xf1, 0xf7, 0xd2, 0xc9, 0x79, 0xad, 0x0f, 0xf1, 0x43, 0x0e, 0xe2, 0x1c, 0x7d, 0x6f, 0xeb, + 0xd6, 0x02, 0x8c, 0x44, 0x65, 0x21, 0x96, 0xad, 0x47, 0x93, 0xb3, 0x7b, 0x77, 0x68, 0x85, 0xc2, + 0xa3, 0xf8, 0xb9, 0x74, 0x3c, 0x25, 0xf7, 0xa1, 0xcf, 0x4f, 0x7b, 0xbb, 0x04, 0xaf, 0xc0, 0x89, + 0xf0, 0x4b, 0x16, 0x4c, 0xaf, 0xe9, 0x5f, 0x84, 0xe3, 0xd5, 0xac, 0x88, 0xa8, 0xd6, 0x34, 0x5d, + 0xaf, 0xee, 0x31, 0x64, 0x24, 0xb6, 0x57, 0xb4, 0x9c, 0x22, 0x95, 0x07, 0x64, 0xd9, 0x7a, 0xc0, + 0xa4, 0xf2, 0x80, 0xac, 0x65, 0x87, 0x2e, 0x95, 0xef, 0x4a, 0x77, 0x4a, 0xd9, 0x7e, 0xe8, 0xb2, + 0xf9, 0xa8, 0xdc, 0x5f, 0xbc, 0x65, 0x42, 0x4a, 0x8f, 0x75, 0xca, 0x91, 0xde, 0x81, 0x67, 0x8c, + 0xcf, 0xde, 0x26, 0xb1, 0x44, 0x61, 0x3d, 0x20, 0xc3, 0xeb, 0x68, 0x08, 0xeb, 0x01, 0x19, 0x75, + 0x0f, 0x9e, 0xb0, 0x7e, 0x38, 0x0d, 0x3b, 0x4d, 0xe3, 0x7f, 0x2c, 0x3c, 0x55, 0x78, 0x9f, 0x89, + 0xcc, 0xec, 0x1a, 0x5d, 0x33, 0xe9, 0xfa, 0xa1, 0x8b, 0x69, 0x0a, 0x72, 0xbc, 0x25, 0x9d, 0x85, + 0xc3, 0xf1, 0x9d, 0x4c, 0x36, 0xf1, 0x1d, 0xcf, 0x83, 0xb8, 0xa2, 0xde, 0x99, 0x48, 0x38, 0x6d, + 0xf1, 0x4f, 0x53, 0x30, 0x8c, 0xc9, 0xf3, 0xf1, 0x54, 0x73, 0xbf, 0xd7, 0x7e, 0x7b, 0x3d, 0x23, + 0xd9, 0xdb, 0xea, 0xf6, 0x61, 0xff, 0xb4, 0x36, 0xab, 0xa4, 0x3b, 0x0b, 0xbe, 0x67, 0x82, 0x7a, + 0xba, 0xd9, 0x54, 0xcb, 0x8b, 0x00, 0x4e, 0x3f, 0x96, 0x86, 0xb1, 0x18, 0x29, 0xb9, 0x14, 0x09, + 0x99, 0x88, 0xe7, 0xae, 0x8a, 0xc7, 0x13, 0x0f, 0x9e, 0xb8, 0x8b, 0xa3, 0xe2, 0x4b, 0x90, 0x9d, + 0xd0, 0x37, 0xf8, 0xb7, 0xf5, 0x72, 0x96, 0x86, 0xbe, 0x21, 0x1f, 0x29, 0x22, 0x9e, 0x2c, 0xc2, + 0xe9, 0xe0, 0x0a, 0x71, 0xc1, 0x5c, 0xa5, 0x15, 0x6b, 0xd6, 0x6c, 0x36, 0x4d, 0x57, 0xb8, 0x2b, + 0x3c, 0xbd, 0xb5, 0x59, 0xb8, 0xec, 0xd9, 0x9e, 0xde, 0xac, 0x87, 0x57, 0x8f, 0x9e, 0xb9, 0x4a, + 0xeb, 0xa6, 0x55, 0x5f, 0x45, 0x4a, 0x89, 0x65, 0x32, 0x2b, 0x52, 0xe1, 0x79, 0xd5, 0x6b, 0x0d, + 0xdd, 0xb2, 0xa8, 0x51, 0xb1, 0xc6, 0x37, 0x3c, 0xca, 0xdd, 0x1c, 0x32, 0xfc, 0xcc, 0x93, 0x07, + 0xf2, 0xe1, 0x68, 0xc6, 0x78, 0x91, 0x11, 0x68, 0x09, 0x85, 0x8a, 0x3f, 0x92, 0x85, 0xb1, 0x1a, + 0x6d, 0xb4, 0x1d, 0xd3, 0xdb, 0xd0, 0xf0, 0x75, 0xca, 0xd1, 0x52, 0x1f, 0xbf, 0xa7, 0xb3, 0xdb, + 0xf4, 0xf4, 0x35, 0xe8, 0xf3, 0x3d, 0x10, 0xf8, 0x0d, 0x0a, 0xbe, 0x3c, 0x14, 0x8e, 0x07, 0xf2, + 0x15, 0x94, 0xa0, 0x22, 0x4d, 0x38, 0xbf, 0xc0, 0xba, 0x29, 0xb9, 0x33, 0x73, 0x7b, 0xe8, 0xcc, + 0x2e, 0xfc, 0xc8, 0x9b, 0x70, 0x16, 0xb1, 0x09, 0xdd, 0xda, 0x87, 0x55, 0xa1, 0xad, 0xc7, 0xab, + 0x4a, 0xee, 0xdc, 0x4e, 0xe5, 0xc9, 0x47, 0x61, 0x28, 0x18, 0x20, 0x26, 0x75, 0xc5, 0xd5, 0x4c, + 0x97, 0x71, 0xc6, 0xc3, 0x42, 0x33, 0x30, 0xfa, 0xfb, 0x47, 0x43, 0x0b, 0x47, 0x78, 0x15, 0x7f, + 0x3b, 0x05, 0xe7, 0x27, 0xef, 0xf3, 0xa8, 0xae, 0x88, 0xa8, 0x79, 0xb6, 0xa3, 0x2f, 0xd1, 0x49, + 0x4b, 0x5f, 0x6c, 0x1e, 0xfe, 0xca, 0xff, 0x61, 0xe8, 0x33, 0xf8, 0x47, 0x09, 0x9d, 0x7a, 0x22, + 0x78, 0x13, 0x98, 0xd0, 0x68, 0xf1, 0xfd, 0x9a, 0x5f, 0xa6, 0xf8, 0x3b, 0x29, 0x78, 0x24, 0x91, + 0xd0, 0x74, 0xdf, 0x0d, 0x9f, 0xf7, 0x99, 0x4c, 0x87, 0xcf, 0x13, 0x93, 0xe8, 0x15, 0x18, 0x35, + 0xc3, 0x3c, 0xec, 0xf5, 0x30, 0x56, 0xa8, 0x76, 0x42, 0x82, 0xe3, 0xe8, 0x7a, 0x1e, 0x02, 0xe7, + 0x6d, 0xc7, 0x77, 0xe7, 0x77, 0xeb, 0x6d, 0xc7, 0xe4, 0xe3, 0x52, 0x3b, 0xe5, 0x2a, 0xbe, 0xfe, + 0xee, 0x6d, 0xc7, 0x64, 0x15, 0xe8, 0xde, 0x32, 0xb5, 0xf4, 0xfa, 0xba, 0xed, 0xac, 0xa0, 0xdf, + 0x0d, 0x1f, 0x9c, 0xda, 0x09, 0x0e, 0xbf, 0xeb, 0x83, 0xc9, 0x13, 0x30, 0xbc, 0xd4, 0x6c, 0xd3, + 0x20, 0xda, 0x3b, 0xbf, 0xcc, 0xd4, 0x86, 0x18, 0x30, 0xb8, 0x02, 0xba, 0x08, 0x80, 0x44, 0x98, + 0xf4, 0x94, 0xdf, 0x5c, 0x6a, 0x03, 0x0c, 0xb2, 0x20, 0xba, 0xeb, 0x3c, 0xd7, 0x6a, 0x2e, 0xa4, + 0x7a, 0xd3, 0xb6, 0x96, 0xea, 0x1e, 0x75, 0x56, 0xb1, 0xa1, 0xe8, 0x76, 0xa1, 0x9d, 0x41, 0x0a, + 0xbc, 0x1b, 0x72, 0x67, 0x6c, 0x6b, 0x69, 0x81, 0x3a, 0xab, 0xac, 0xa9, 0x4f, 0x03, 0x11, 0x4d, + 0x75, 0xf0, 0x54, 0x87, 0x7f, 0x1c, 0xfa, 0x5d, 0x68, 0xe2, 0x23, 0xf8, 0x71, 0x0f, 0x7e, 0x58, + 0x01, 0x06, 0x79, 0xc8, 0x6b, 0x2e, 0x34, 0x74, 0xce, 0xd2, 0x80, 0x83, 0x50, 0x5e, 0x67, 0x40, + 0xf8, 0x02, 0x71, 0xff, 0x2b, 0x4d, 0xfc, 0x2a, 0x7e, 0x3a, 0x03, 0x04, 0x0f, 0x3d, 0x02, 0xab, + 0x01, 0x73, 0x7a, 0xee, 0x47, 0xd1, 0xc2, 0x69, 0x35, 0xbd, 0xab, 0x69, 0xf5, 0x84, 0xd5, 0x5e, + 0xad, 0xeb, 0xad, 0x56, 0xfd, 0x9e, 0xd9, 0xc4, 0x37, 0xf0, 0xb8, 0xf0, 0x69, 0xc3, 0x56, 0x7b, + 0xb5, 0xd4, 0x6a, 0x4d, 0x71, 0x20, 0x79, 0x0a, 0xc6, 0x18, 0x1d, 0x76, 0x52, 0x40, 0x89, 0xfe, + 0x38, 0x1a, 0x63, 0x80, 0xce, 0x53, 0x3e, 0xed, 0x39, 0xe8, 0x17, 0x3c, 0xf9, 0x5a, 0xd5, 0xab, + 0xf5, 0x71, 0x66, 0x2e, 0xeb, 0xb9, 0x80, 0x0d, 0x9f, 0x5c, 0x7b, 0xb5, 0x01, 0xbf, 0x3c, 0x66, + 0x46, 0xb1, 0xda, 0xab, 0x3c, 0x7c, 0x69, 0x1f, 0x22, 0x83, 0xdf, 0xe4, 0x12, 0x8c, 0x30, 0x2e, + 0x81, 0xc0, 0x78, 0x32, 0x89, 0x5e, 0x4d, 0x81, 0x92, 0xeb, 0x70, 0x2a, 0x02, 0xe1, 0x36, 0x28, + 0xf7, 0x9d, 0xe9, 0xd5, 0x12, 0x71, 0xc5, 0x1f, 0xca, 0xc0, 0x10, 0xeb, 0x0e, 0xb6, 0x3e, 0x1d, + 0x52, 0x47, 0x9c, 0x85, 0x3e, 0xdb, 0x59, 0xaa, 0xb7, 0x9d, 0xa6, 0x18, 0x7b, 0x39, 0xdb, 0x59, + 0xba, 0xed, 0x34, 0xc9, 0x69, 0xc8, 0xb1, 0xde, 0x31, 0x0d, 0x31, 0xc4, 0x7a, 0xf5, 0x56, 0xab, + 0x62, 0x90, 0x12, 0xef, 0x10, 0x4c, 0x44, 0x50, 0x6f, 0xe0, 0xd6, 0x9e, 0x7b, 0x5d, 0xf4, 0xf2, + 0x15, 0x2f, 0x86, 0xc4, 0x7e, 0xc2, 0xf4, 0x04, 0xfc, 0x20, 0x40, 0x61, 0x61, 0xe0, 0xb6, 0xc4, + 0xe0, 0x7d, 0xa2, 0xb2, 0x10, 0xc8, 0x90, 0x05, 0xdf, 0xc4, 0x18, 0x64, 0x02, 0x48, 0x48, 0xb5, + 0x6a, 0x1b, 0xe6, 0x3d, 0x93, 0xf2, 0x27, 0xb8, 0xbd, 0xfc, 0x66, 0x3b, 0x8e, 0xd5, 0x46, 0x7d, + 0x26, 0xb3, 0x02, 0x42, 0x5e, 0xe6, 0x4a, 0xc8, 0xe9, 0x70, 0xed, 0xe3, 0x7d, 0xcb, 0xed, 0x34, + 0x05, 0x85, 0x9a, 0x89, 0xe5, 0x71, 0x21, 0x2c, 0xce, 0xc1, 0x30, 0x3a, 0x90, 0xd7, 0x68, 0x93, + 0x36, 0x3c, 0xdb, 0x21, 0xe7, 0x20, 0x73, 0xcb, 0x77, 0x21, 0xe7, 0xaf, 0x82, 0x56, 0xe8, 0x86, + 0xc6, 0x60, 0xa4, 0x18, 0xb8, 0x01, 0xa4, 0xf1, 0xde, 0x18, 0x3d, 0xb5, 0xf8, 0xed, 0xbe, 0x7f, + 0xa7, 0x5f, 0xfc, 0xb5, 0x3e, 0x18, 0xad, 0x55, 0x2b, 0x53, 0x53, 0x93, 0xb5, 0x3b, 0x95, 0x09, + 0x4c, 0x9e, 0x6a, 0x1c, 0x8a, 0x9d, 0x34, 0x0d, 0x50, 0xb6, 0x2d, 0x8b, 0x62, 0xb2, 0xbc, 0x20, + 0xbd, 0x4f, 0x98, 0x50, 0x5c, 0x60, 0x3a, 0xf0, 0x90, 0xca, 0x92, 0x2b, 0xd0, 0xcf, 0xbf, 0xa8, + 0x32, 0x21, 0xec, 0x27, 0xf4, 0xa1, 0x73, 0x5b, 0xe6, 0xbd, 0x7b, 0xe8, 0xd0, 0x18, 0xa0, 0xc9, + 0x25, 0xe8, 0x9b, 0x98, 0xab, 0xd5, 0x4a, 0x73, 0xfe, 0xd5, 0x3a, 0x3e, 0x2e, 0x36, 0x2c, 0xb7, + 0xee, 0xea, 0x96, 0xab, 0xf9, 0x48, 0xf2, 0x04, 0xe4, 0x2a, 0x55, 0x24, 0xe3, 0x21, 0x33, 0xd0, + 0x41, 0xd1, 0x6c, 0x71, 0x2a, 0x81, 0xc2, 0x7a, 0xef, 0x54, 0x26, 0x24, 0xff, 0x12, 0x5e, 0xef, + 0x9a, 0x69, 0x70, 0x27, 0xd2, 0x00, 0x4d, 0x5e, 0x80, 0xa1, 0x1a, 0x75, 0x4c, 0xbd, 0x39, 0xd7, + 0xc6, 0xad, 0xa7, 0x14, 0x82, 0xdb, 0x45, 0x78, 0xdd, 0x42, 0x84, 0x16, 0x21, 0x23, 0x17, 0x20, + 0x3b, 0x6d, 0x5a, 0xfe, 0xfb, 0x55, 0x7c, 0xe0, 0xb8, 0x6c, 0x5a, 0x9e, 0x86, 0x50, 0xf2, 0x04, + 0x64, 0x6e, 0x2e, 0x54, 0x84, 0xcf, 0x2c, 0xf2, 0x7a, 0xcb, 0x8b, 0x84, 0xf3, 0xbe, 0xb9, 0x50, + 0x21, 0x2f, 0xc0, 0x00, 0x5b, 0x14, 0xa9, 0xd5, 0xa0, 0x6e, 0x7e, 0x10, 0x3f, 0x86, 0xfb, 0xe4, + 0xf9, 0x40, 0xd9, 0x09, 0x26, 0xa0, 0x24, 0xb7, 0x60, 0x54, 0x4d, 0xb6, 0x2b, 0x9c, 0x65, 0xd1, + 0x82, 0x5b, 0x17, 0xb8, 0xa4, 0x28, 0xe6, 0xb1, 0x82, 0xc4, 0x80, 0xbc, 0x0a, 0x63, 0xfb, 0x44, + 0xc9, 0x8f, 0xf6, 0xf2, 0xd6, 0x66, 0xe1, 0xc9, 0x18, 0xd3, 0xba, 0x23, 0xa8, 0x24, 0xee, 0x1d, + 0x39, 0x91, 0x8f, 0x01, 0x94, 0x3c, 0xcf, 0x31, 0x17, 0xdb, 0xcc, 0xdc, 0x1c, 0xe9, 0xfe, 0x04, + 0xb3, 0xb8, 0xb5, 0x59, 0x38, 0xa5, 0x07, 0xe4, 0x89, 0x0f, 0x31, 0x25, 0x76, 0xe4, 0x55, 0x18, + 0x62, 0x2b, 0x9e, 0x3f, 0x0a, 0xc5, 0x3b, 0x14, 0x34, 0x31, 0xd9, 0xda, 0x58, 0x77, 0x05, 0x42, + 0x36, 0x31, 0xe5, 0x02, 0xe4, 0xe3, 0x30, 0x12, 0x19, 0xc7, 0x3c, 0xf1, 0x8a, 0xe4, 0x85, 0x1a, + 0xc1, 0xf2, 0x70, 0xcb, 0xf8, 0xba, 0x24, 0x60, 0x1d, 0x09, 0xb7, 0x1c, 0xe5, 0x55, 0xfc, 0xf7, + 0x69, 0x38, 0x55, 0x6a, 0x7b, 0xcb, 0x55, 0x87, 0x8a, 0x07, 0x54, 0x07, 0x70, 0xc2, 0xb7, 0xb7, + 0x99, 0x7e, 0x8f, 0x5e, 0x12, 0xca, 0x7c, 0x90, 0xdd, 0xc7, 0x7c, 0x70, 0x0f, 0x4e, 0x94, 0x8c, + 0x55, 0xd3, 0x2a, 0xf1, 0x3c, 0x9c, 0xb3, 0x53, 0x25, 0x5c, 0x39, 0xa4, 0x50, 0x1a, 0x0a, 0x5a, + 0x7c, 0x0f, 0xcf, 0x02, 0xc3, 0x50, 0x75, 0x9d, 0xe3, 0xea, 0xab, 0xf7, 0xf4, 0x7a, 0x63, 0x59, + 0xb7, 0x96, 0xd8, 0xea, 0xa0, 0x94, 0x2a, 0x7e, 0x2e, 0x0d, 0x17, 0xfd, 0x7c, 0x01, 0xd4, 0x63, + 0xda, 0x6b, 0x5a, 0x4b, 0x91, 0x4c, 0x9b, 0x0f, 0xa1, 0xf4, 0x8b, 0x9f, 0x4d, 0xc3, 0x05, 0xf5, + 0x49, 0xec, 0x43, 0x2f, 0x94, 0x3f, 0x4c, 0xc3, 0x18, 0xb7, 0xcb, 0xaa, 0xba, 0xb7, 0x5c, 0xe6, + 0x1a, 0xb5, 0x2f, 0x49, 0x5c, 0x81, 0x7e, 0xce, 0x26, 0x78, 0x9f, 0x82, 0x8b, 0x0f, 0x57, 0x56, + 0x5c, 0xf4, 0x7c, 0x34, 0x99, 0x83, 0x53, 0xa5, 0x7b, 0xf7, 0x68, 0xc3, 0x0b, 0xf3, 0x9e, 0xcc, + 0x85, 0x09, 0x13, 0x78, 0x46, 0x0b, 0x81, 0x0f, 0xf3, 0x09, 0xa1, 0x2b, 0x7e, 0x62, 0x39, 0xb2, + 0x00, 0x67, 0x54, 0x78, 0x8d, 0xef, 0x00, 0xb3, 0x52, 0x92, 0x8b, 0x18, 0x47, 0xfe, 0x9f, 0xd6, + 0xa1, 0x6c, 0x52, 0x2b, 0x71, 0x65, 0xed, 0xed, 0xd6, 0x4a, 0x5c, 0x66, 0x13, 0xcb, 0x15, 0x7f, + 0x2c, 0x03, 0x50, 0x6b, 0xe9, 0x96, 0x85, 0xd1, 0xc3, 0x1e, 0x5e, 0x87, 0xc2, 0xe7, 0x23, 0xef, + 0x87, 0x76, 0x3a, 0x64, 0x5e, 0x10, 0xd1, 0xfe, 0x8c, 0xb6, 0xe3, 0x7b, 0xdc, 0x06, 0xd1, 0xc6, + 0x10, 0x28, 0x9b, 0x0d, 0x01, 0x25, 0xa9, 0x40, 0xb6, 0xe4, 0x2c, 0xb9, 0xe2, 0x5d, 0x70, 0xf7, + 0x00, 0x08, 0xba, 0xb3, 0x94, 0xbc, 0xee, 0x22, 0x8b, 0xe2, 0x37, 0xa4, 0xe1, 0x1c, 0x1f, 0x32, + 0x37, 0x1c, 0xbd, 0xb5, 0x5c, 0xa3, 0x9e, 0x87, 0x1b, 0xee, 0x87, 0x77, 0x12, 0xf9, 0x42, 0x1a, + 0xce, 0x70, 0x4b, 0x76, 0x8a, 0x1a, 0x94, 0x1f, 0x5b, 0x1c, 0x6d, 0x37, 0xcf, 0x77, 0x58, 0x38, + 0x47, 0xdb, 0x6f, 0xf4, 0x00, 0x85, 0xf3, 0xcb, 0x69, 0x38, 0x13, 0x66, 0x70, 0x8d, 0x64, 0x15, + 0x7f, 0xe8, 0x85, 0xb3, 0xb7, 0x09, 0x32, 0x51, 0xa4, 0x0f, 0xb1, 0xcd, 0x2d, 0xab, 0x42, 0xef, + 0x1e, 0xdd, 0x03, 0x93, 0x44, 0x7a, 0x3c, 0x84, 0xf7, 0xa5, 0xa5, 0xbf, 0x92, 0x86, 0xb3, 0xa1, + 0x48, 0xc5, 0x9d, 0xd0, 0xf1, 0xc8, 0x3f, 0x78, 0x99, 0x1e, 0x0f, 0xfd, 0x7d, 0x0d, 0xfd, 0x44, + 0x99, 0x1e, 0x8f, 0xfd, 0x7d, 0xe9, 0xe9, 0x77, 0xa7, 0xe1, 0xa2, 0x92, 0xb6, 0x5d, 0xb3, 0x9b, + 0x4d, 0xbb, 0xed, 0x2d, 0x38, 0xe6, 0xd2, 0xd2, 0x21, 0x3d, 0xb2, 0x3a, 0xb8, 0x63, 0xdf, 0x33, + 0x90, 0x13, 0x17, 0x2d, 0x98, 0x68, 0x5c, 0x13, 0xbf, 0xf6, 0x28, 0xad, 0x7f, 0x98, 0x86, 0x42, + 0xb2, 0xb4, 0xa6, 0x6c, 0xa7, 0x41, 0x27, 0x6c, 0x8b, 0x1e, 0xcb, 0x4b, 0x92, 0xd7, 0xf7, 0xa4, + 0xe1, 0xd1, 0x64, 0x79, 0xb1, 0xff, 0x16, 0xf5, 0xc6, 0xca, 0xb1, 0xb8, 0x24, 0x71, 0xfd, 0x52, + 0x1a, 0x4e, 0xb1, 0x3f, 0xcd, 0xc6, 0xb4, 0xed, 0x7a, 0xac, 0xa9, 0x07, 0xb0, 0x0a, 0xef, 0x6d, + 0xc5, 0x38, 0x08, 0x77, 0x7a, 0xbf, 0x7b, 0xb2, 0xfb, 0xea, 0x9e, 0xde, 0x7d, 0x6c, 0x69, 0xe2, + 0x02, 0x3d, 0xb4, 0x25, 0xf8, 0xdd, 0x2a, 0xd0, 0x03, 0x58, 0x7f, 0x1f, 0x66, 0x81, 0xfe, 0xcd, + 0x0c, 0x8c, 0x96, 0x1d, 0x7b, 0xdd, 0xba, 0x49, 0xd7, 0x69, 0xf3, 0xd0, 0x86, 0xfb, 0x03, 0x61, + 0x20, 0x3a, 0x7b, 0x34, 0x10, 0xfd, 0x72, 0xe4, 0x55, 0x38, 0x11, 0xca, 0x52, 0x0e, 0x99, 0x8d, + 0x57, 0xf9, 0x0d, 0x86, 0xaa, 0xbf, 0xc5, 0x70, 0x22, 0xb6, 0xab, 0x4a, 0x5d, 0xfc, 0xd3, 0x48, + 0x6f, 0x3c, 0xdc, 0xe6, 0xfa, 0xbe, 0x7b, 0xe3, 0x36, 0x9c, 0x29, 0xb7, 0x1d, 0x87, 0x5a, 0x5e, + 0x72, 0xa7, 0xe0, 0x4d, 0x5a, 0x83, 0x53, 0xd4, 0xe3, 0x9d, 0xd3, 0xa1, 0x30, 0x63, 0x2b, 0x9e, + 0xd2, 0xa9, 0x6c, 0xfb, 0x42, 0xb6, 0x6d, 0x4e, 0x91, 0xc4, 0x36, 0xb9, 0x70, 0xf1, 0xe7, 0xd2, + 0x72, 0xd7, 0x1f, 0xda, 0xac, 0xf6, 0xae, 0xe8, 0xfa, 0xe2, 0xa7, 0x33, 0x30, 0xc2, 0x9a, 0xb5, + 0xa0, 0xbb, 0x2b, 0xc7, 0x26, 0xcc, 0x7e, 0x16, 0x08, 0xf6, 0x15, 0xbe, 0x24, 0x45, 0x04, 0xd7, + 0xbc, 0xdc, 0x0a, 0x06, 0xef, 0xf4, 0x15, 0x3e, 0xbe, 0xf8, 0xbd, 0xd9, 0xb0, 0x3b, 0x8e, 0x0d, + 0xa0, 0xc3, 0xee, 0x0e, 0x32, 0x0f, 0xa7, 0xc4, 0xdc, 0xe6, 0x83, 0x78, 0xa4, 0xae, 0x3e, 0x29, + 0x05, 0xbb, 0x98, 0x16, 0xdb, 0x2e, 0x75, 0xea, 0x9e, 0xee, 0xae, 0x88, 0x88, 0x5d, 0x89, 0x05, + 0x19, 0x43, 0x31, 0xab, 0x45, 0x19, 0xf6, 0x87, 0x0c, 0xfd, 0x09, 0x31, 0xc6, 0x30, 0xa9, 0x60, + 0xf1, 0x07, 0x53, 0x30, 0xaa, 0x7e, 0x0e, 0xb9, 0x0a, 0xfd, 0xec, 0x77, 0x10, 0xe3, 0x45, 0x78, + 0xa0, 0x87, 0x1c, 0xb9, 0x3b, 0x93, 0x4f, 0x43, 0x5e, 0x84, 0x01, 0xf4, 0x1c, 0xc3, 0x02, 0xe9, + 0x30, 0xb4, 0x4e, 0x58, 0xc0, 0x64, 0x68, 0x5e, 0x2c, 0x24, 0x25, 0x2f, 0xc3, 0x60, 0x25, 0x74, + 0xb9, 0x15, 0x17, 0xd0, 0xe8, 0xe9, 0x2f, 0x95, 0x0c, 0x09, 0x34, 0x99, 0xba, 0xf8, 0xa5, 0x74, + 0xa8, 0xea, 0xc7, 0xa6, 0xe9, 0xbe, 0x4c, 0xd3, 0xef, 0xcf, 0xc0, 0x70, 0xd9, 0xb6, 0x3c, 0xbd, + 0xe1, 0x1d, 0x1f, 0x06, 0xef, 0xe7, 0x90, 0x8d, 0x14, 0xa0, 0x77, 0x72, 0x55, 0x37, 0x9b, 0xc2, + 0xf0, 0xc1, 0x48, 0x87, 0x94, 0x01, 0x34, 0x0e, 0x27, 0x37, 0x30, 0xec, 0x15, 0x93, 0x74, 0xe0, + 0x27, 0x38, 0x12, 0xe6, 0x62, 0x90, 0x50, 0x3c, 0x0a, 0x54, 0x83, 0x03, 0xf8, 0xc8, 0x91, 0x4b, + 0xca, 0x7d, 0x76, 0x7c, 0x30, 0x7a, 0x44, 0xfa, 0xec, 0xf3, 0x19, 0x38, 0xa3, 0xfa, 0x2b, 0x1e, + 0x0f, 0x38, 0xd1, 0x79, 0x7f, 0x09, 0x4e, 0xa9, 0xb2, 0x99, 0x60, 0xd2, 0xe8, 0xed, 0xee, 0x3b, + 0x72, 0x75, 0x6b, 0xb3, 0xf0, 0x58, 0xdc, 0x55, 0x94, 0x55, 0x96, 0xe8, 0x4d, 0x92, 0x58, 0x49, + 0x62, 0xcf, 0x3c, 0x20, 0x8f, 0xa2, 0x1f, 0xf2, 0x9e, 0xf9, 0x42, 0x3a, 0xde, 0x33, 0xc7, 0x13, + 0x9e, 0x58, 0xb8, 0x7f, 0x21, 0x0d, 0x4f, 0xaa, 0xc2, 0x79, 0xe3, 0x85, 0x67, 0x5e, 0xd2, 0xa8, + 0x1f, 0x1c, 0xf9, 0x78, 0x7a, 0x11, 0x4a, 0x8c, 0x91, 0x8b, 0x75, 0x37, 0x78, 0x28, 0x29, 0x22, + 0x17, 0x33, 0x88, 0x26, 0x30, 0x3b, 0x10, 0xe7, 0xf1, 0x9c, 0xb0, 0x0b, 0x71, 0x7e, 0xe7, 0xb6, + 0xe2, 0x3c, 0x1e, 0xc8, 0xbe, 0xbb, 0x5a, 0x16, 0xe0, 0x86, 0xe9, 0x89, 0x10, 0xf2, 0x47, 0xfc, + 0xaa, 0x4c, 0xf2, 0x73, 0xcd, 0xee, 0xc9, 0xcf, 0x35, 0x8c, 0x0f, 0xd5, 0xbb, 0x87, 0xf8, 0x50, + 0xaf, 0x42, 0x9f, 0x90, 0xa3, 0xd8, 0xb7, 0x9f, 0x0d, 0xbf, 0x02, 0xc1, 0x9d, 0xaa, 0xf7, 0xa5, + 0xff, 0x1e, 0xe8, 0x73, 0x79, 0xcc, 0x34, 0xb1, 0xaf, 0xc6, 0xe7, 0x3e, 0x02, 0xa4, 0xf9, 0x7f, + 0x90, 0x0b, 0x80, 0xe9, 0xc5, 0xe4, 0xd7, 0x38, 0x3c, 0xdd, 0x18, 0xfb, 0x97, 0x54, 0xa0, 0x4f, + 0xbc, 0x1a, 0xc8, 0x03, 0xbe, 0xec, 0x08, 0xd4, 0x32, 0xec, 0x67, 0xfe, 0x78, 0x80, 0x9f, 0x59, + 0x0b, 0x62, 0xf9, 0xcd, 0xb6, 0x00, 0x15, 0x7f, 0x32, 0x05, 0xa3, 0x6a, 0x21, 0xf2, 0x34, 0xe4, + 0xf8, 0x5f, 0x62, 0x87, 0x8e, 0xa1, 0x5b, 0x79, 0x09, 0x39, 0x74, 0xab, 0xa0, 0x7e, 0x01, 0x06, + 0x34, 0xff, 0x29, 0x88, 0xd8, 0xa1, 0xa3, 0xff, 0x6e, 0xf0, 0x3e, 0x24, 0x92, 0xe6, 0xc6, 0x07, + 0x92, 0x27, 0x20, 0x33, 0xdf, 0x34, 0xc4, 0xc6, 0x1c, 0x9f, 0x14, 0xd9, 0x4d, 0x39, 0x2e, 0x2d, + 0xc3, 0x32, 0xa2, 0x39, 0xba, 0x2e, 0x9c, 0xbd, 0x91, 0xc8, 0xa2, 0xeb, 0x32, 0xd1, 0x1c, 0x5d, + 0x2f, 0xfe, 0x62, 0xca, 0x77, 0xdf, 0x9d, 0x31, 0x5d, 0xaf, 0x62, 0xad, 0xe9, 0x4d, 0x33, 0xe8, + 0x08, 0x72, 0x03, 0x46, 0x42, 0xa4, 0x14, 0xe2, 0x20, 0x16, 0x0a, 0x08, 0x1f, 0xc1, 0x3f, 0x26, + 0x3d, 0x7c, 0x89, 0x16, 0x23, 0x97, 0x24, 0xe5, 0x97, 0x4e, 0x2d, 0xe4, 0x77, 0xf3, 0xc2, 0x15, + 0x7b, 0x68, 0xd6, 0x74, 0x5d, 0xd3, 0x5a, 0xe2, 0xcf, 0x2f, 0x33, 0xf8, 0x12, 0x0a, 0xcf, 0x4f, + 0x56, 0x39, 0xbc, 0xee, 0x30, 0x84, 0xfc, 0x7e, 0x47, 0x2e, 0x50, 0xfc, 0xf3, 0x14, 0x9c, 0x67, + 0x9c, 0x30, 0x28, 0x69, 0xec, 0xc3, 0xf6, 0x35, 0x80, 0x57, 0xbb, 0x48, 0x4a, 0x8c, 0xea, 0xc7, + 0xe3, 0x71, 0x38, 0x14, 0x42, 0x85, 0x7b, 0x17, 0xd9, 0xef, 0x2d, 0x2e, 0xdc, 0x2f, 0xa4, 0xf0, + 0x7a, 0x70, 0xb1, 0x49, 0x6f, 0xcf, 0x55, 0xde, 0x38, 0xa0, 0x0b, 0xec, 0xbd, 0x4e, 0x5d, 0xaf, + 0xc1, 0xa8, 0x8b, 0x6d, 0xa9, 0xb7, 0x2d, 0xf3, 0x3e, 0x9e, 0x7c, 0x89, 0x8f, 0x39, 0x23, 0x7d, + 0x8c, 0xd4, 0x56, 0x6d, 0x84, 0xd3, 0xdf, 0xb6, 0xcc, 0xfb, 0x18, 0x93, 0xf5, 0x23, 0x18, 0x0f, + 0x5f, 0xa2, 0x20, 0xe7, 0xa1, 0xdf, 0xcf, 0x28, 0x24, 0xf2, 0xf3, 0x04, 0xbf, 0xc9, 0x28, 0x64, + 0xda, 0xa6, 0x81, 0xcd, 0xec, 0xd5, 0xd8, 0x9f, 0xc5, 0x5f, 0xcf, 0xc0, 0x58, 0xe9, 0x6e, 0xad, + 0x52, 0x0e, 0x5e, 0x31, 0x88, 0x77, 0xb5, 0xab, 0xbb, 0x94, 0x85, 0x4f, 0x4f, 0xca, 0x30, 0xc2, + 0xe3, 0x22, 0x88, 0xa4, 0x1d, 0xfc, 0x5c, 0xaa, 0x97, 0xbf, 0xa6, 0x88, 0x62, 0x24, 0x25, 0x1d, + 0x46, 0x8c, 0xc8, 0xed, 0xe1, 0x92, 0x06, 0x9c, 0x8b, 0x90, 0xd6, 0xf5, 0x20, 0xec, 0x9c, 0x1f, + 0xf2, 0xe3, 0xbd, 0x5b, 0x9b, 0x85, 0x27, 0x3a, 0x12, 0x49, 0xac, 0xcf, 0xca, 0xac, 0xc3, 0xf0, + 0x75, 0x2e, 0xb9, 0x05, 0x63, 0xbc, 0x3c, 0x1e, 0xda, 0x05, 0x4e, 0x12, 0x8c, 0xb9, 0x14, 0xde, + 0x41, 0x42, 0xca, 0xa1, 0xbc, 0x10, 0xc9, 0x04, 0x2e, 0xde, 0x44, 0xdf, 0x85, 0xd3, 0x9c, 0xbe, + 0x45, 0x1d, 0x1c, 0x89, 0xb6, 0x55, 0x77, 0xa9, 0x27, 0x9e, 0x56, 0x8f, 0x3f, 0xb1, 0xb5, 0x59, + 0x28, 0x24, 0x12, 0x48, 0x4c, 0x4f, 0x22, 0x41, 0x35, 0xc0, 0xd7, 0xa8, 0x27, 0xfb, 0x69, 0xe4, + 0x76, 0xa1, 0xe6, 0xdf, 0x92, 0x86, 0xb3, 0xd3, 0x54, 0x6f, 0x7a, 0xcb, 0xe5, 0x65, 0xda, 0x58, + 0x39, 0x76, 0x95, 0x8e, 0x58, 0x2d, 0x89, 0xd2, 0x39, 0x36, 0x91, 0xbb, 0x49, 0xe7, 0xd8, 0xe2, + 0x15, 0xd2, 0xf9, 0x9e, 0x34, 0x5c, 0x4e, 0xda, 0x1c, 0xe0, 0xed, 0x80, 0x33, 0xbf, 0x46, 0x1d, + 0xc7, 0x34, 0xe8, 0x21, 0x2e, 0x2a, 0x07, 0x67, 0x0f, 0xcb, 0x1d, 0x96, 0xdd, 0xa3, 0x47, 0xec, + 0xce, 0xc4, 0x75, 0x88, 0xc9, 0xba, 0x1e, 0x2c, 0x71, 0x7d, 0x73, 0x1a, 0x4e, 0xd5, 0xcc, 0x25, + 0xd7, 0xb3, 0x1d, 0x5a, 0xc5, 0x00, 0x25, 0xc7, 0x9a, 0xd4, 0x51, 0x34, 0x87, 0x98, 0x13, 0xef, + 0x41, 0x17, 0xcd, 0xf1, 0x80, 0x12, 0xa2, 0xf9, 0x83, 0x2c, 0x9c, 0x98, 0x2d, 0x57, 0xfd, 0x54, + 0xbd, 0x9e, 0xee, 0x1c, 0xd1, 0x8c, 0x05, 0xe1, 0xd9, 0x42, 0x76, 0x0f, 0x67, 0x0b, 0x07, 0xe7, + 0x5e, 0x20, 0x92, 0xb1, 0xe7, 0x76, 0x95, 0x8c, 0xfd, 0x49, 0x18, 0x59, 0x6d, 0xb4, 0xea, 0x7e, + 0x50, 0x2a, 0xd3, 0x10, 0xe1, 0xa0, 0x86, 0x56, 0x1b, 0x7e, 0xa2, 0xf9, 0x8a, 0x41, 0x0a, 0x30, + 0xd8, 0x68, 0x9a, 0xd4, 0xf2, 0xea, 0xa6, 0x75, 0xcf, 0x16, 0x21, 0xa0, 0x80, 0x83, 0x2a, 0xd6, + 0x3d, 0x9b, 0x11, 0xb8, 0xf8, 0x3d, 0x9c, 0x80, 0xc7, 0x7b, 0x02, 0x0e, 0x42, 0x82, 0x2b, 0x30, + 0x8a, 0xa7, 0xf9, 0x0d, 0xbb, 0xe9, 0x67, 0xb1, 0x13, 0xe1, 0x9e, 0x4e, 0xf8, 0x70, 0x3f, 0xa0, + 0xdc, 0x53, 0x30, 0x66, 0x5a, 0x4b, 0x0e, 0xdb, 0xa1, 0xeb, 0x6d, 0x8f, 0x27, 0xd2, 0x11, 0xe1, + 0x9f, 0x4e, 0x08, 0x44, 0xa9, 0xed, 0xf1, 0x54, 0x3a, 0x97, 0x61, 0x94, 0xaa, 0xa4, 0x18, 0x45, + 0x44, 0x1b, 0xa1, 0x11, 0xca, 0xe2, 0x4f, 0x65, 0x61, 0x38, 0x54, 0xb7, 0xc9, 0x43, 0x3a, 0x12, + 0x7b, 0xb8, 0x95, 0x2d, 0xdc, 0x31, 0xf5, 0xed, 0xe2, 0x36, 0xf5, 0x6b, 0x53, 0xd0, 0xb7, 0x4c, + 0x75, 0x83, 0x3a, 0x3c, 0x64, 0xd5, 0xe0, 0xf5, 0xd3, 0x57, 0xd7, 0x1d, 0xbd, 0xd5, 0xa2, 0x8e, + 0x08, 0x6a, 0xc2, 0x23, 0x0f, 0x8d, 0xbf, 0xc1, 0x8a, 0xff, 0xd6, 0x66, 0xe1, 0xe5, 0x25, 0xd3, + 0x5b, 0x6e, 0x2f, 0x5e, 0x6d, 0xd8, 0xab, 0xd7, 0x96, 0x1c, 0x7d, 0xcd, 0xf4, 0xf0, 0x68, 0x58, + 0x6f, 0x5e, 0xf3, 0x68, 0x13, 0x43, 0x37, 0x5e, 0xd3, 0x5b, 0xe6, 0x35, 0xcc, 0x74, 0x73, 0x2d, + 0xe0, 0xb4, 0xe0, 0xe8, 0xa6, 0xe7, 0x6e, 0x6d, 0x16, 0xc6, 0x44, 0x65, 0xf2, 0xc1, 0x99, 0x00, + 0x15, 0x7f, 0x25, 0x05, 0x63, 0xb3, 0xe5, 0xea, 0xcd, 0xda, 0xfc, 0x9c, 0x56, 0x2d, 0xcf, 0x52, + 0xd7, 0xd5, 0x97, 0x28, 0x79, 0x0f, 0xf4, 0x09, 0x88, 0x38, 0x65, 0xc2, 0xe3, 0xbd, 0xb7, 0x5c, + 0xdb, 0x72, 0x5a, 0x0d, 0xcd, 0xc7, 0x89, 0x8c, 0x4c, 0xe9, 0x2e, 0x19, 0x99, 0x8a, 0x90, 0x5b, + 0xa5, 0xde, 0xb2, 0xed, 0x1f, 0x90, 0xe1, 0x19, 0x38, 0x87, 0x68, 0xe2, 0x7f, 0x32, 0x0f, 0xb9, + 0x96, 0xee, 0xe8, 0xab, 0xee, 0x76, 0xb7, 0x65, 0x8f, 0x62, 0xea, 0x48, 0x24, 0x4d, 0xbc, 0x1d, + 0x13, 0x6c, 0x8a, 0xdf, 0x90, 0xc5, 0x6f, 0x0a, 0x42, 0x6a, 0x7c, 0xaa, 0x4d, 0x79, 0x3c, 0xdd, + 0x3d, 0x9f, 0x34, 0xbc, 0x08, 0xd9, 0xf6, 0x2e, 0x47, 0x47, 0x5b, 0x8c, 0x0e, 0x77, 0x4f, 0xa3, + 0x43, 0x94, 0xf2, 0xb5, 0x32, 0xbb, 0x5b, 0xad, 0x74, 0x77, 0x71, 0xc7, 0xcf, 0x69, 0xc9, 0x1c, + 0xf4, 0xad, 0xf2, 0xee, 0x17, 0x83, 0x20, 0x08, 0x14, 0x19, 0xd3, 0x8f, 0xf1, 0x73, 0x22, 0xa5, + 0xf3, 0x98, 0x28, 0x21, 0x6b, 0x96, 0x00, 0x45, 0xb4, 0xbc, 0xef, 0x90, 0xb5, 0xfc, 0x6f, 0x65, + 0xe1, 0x4c, 0xa8, 0x11, 0x73, 0xb6, 0x67, 0xde, 0x33, 0xf9, 0xf5, 0xca, 0x43, 0xa4, 0x16, 0x52, + 0x07, 0xf7, 0x1e, 0x44, 0x07, 0x87, 0x6a, 0x96, 0xdb, 0x85, 0x9a, 0x3d, 0x48, 0x6a, 0xf1, 0x33, + 0x19, 0x38, 0x17, 0xaa, 0xc5, 0x0c, 0xa6, 0xce, 0xab, 0xd5, 0x26, 0x6b, 0x9e, 0x43, 0xf5, 0xd5, + 0x23, 0xab, 0x19, 0xfa, 0xae, 0x34, 0x43, 0xdf, 0xf3, 0x84, 0x21, 0xf7, 0x64, 0xee, 0x90, 0x7b, + 0xf2, 0x8b, 0x59, 0xb8, 0x10, 0xf6, 0xa4, 0x38, 0xbf, 0x9f, 0x5e, 0x58, 0xa8, 0x1e, 0xf5, 0xd9, + 0x7f, 0xf7, 0x9d, 0xe9, 0xdf, 0xb9, 0xf5, 0x26, 0xde, 0xb9, 0x85, 0x0b, 0x72, 0xae, 0xe3, 0x82, + 0xfc, 0x14, 0x0c, 0x38, 0xfa, 0x3a, 0x7f, 0x22, 0x20, 0x87, 0xe9, 0x0b, 0x80, 0x5a, 0xbf, 0xa3, + 0xaf, 0xf3, 0x07, 0x08, 0x17, 0x20, 0xbb, 0x68, 0x1b, 0x1b, 0x68, 0xc7, 0x0c, 0xf1, 0xda, 0xd8, + 0x6f, 0x0d, 0xff, 0x8d, 0xa8, 0xc8, 0xc0, 0x21, 0xab, 0xc8, 0x6f, 0x67, 0xe0, 0xd4, 0xb8, 0xdd, + 0xb6, 0x8c, 0x5b, 0x74, 0xa3, 0xa5, 0x9b, 0x8e, 0x46, 0x1b, 0xf6, 0x1a, 0xfb, 0x84, 0xbf, 0x78, + 0x97, 0xd8, 0x83, 0xdb, 0xb7, 0x3e, 0x0d, 0x03, 0x0b, 0xf6, 0x0a, 0xb5, 0xa4, 0x48, 0xd8, 0x98, + 0xc6, 0xdc, 0x63, 0x40, 0x1e, 0x91, 0x2a, 0x24, 0x20, 0xcf, 0x40, 0xdf, 0xb8, 0xcd, 0x2f, 0x0f, + 0xa5, 0x74, 0xac, 0x8b, 0xb6, 0xb8, 0x34, 0x94, 0x84, 0x26, 0xc8, 0xc8, 0x8b, 0x30, 0x50, 0x6d, + 0x2f, 0x36, 0xcd, 0xc6, 0x2d, 0xea, 0xbf, 0x54, 0x41, 0xb7, 0xe5, 0x16, 0x02, 0xeb, 0x2b, 0x74, + 0x23, 0x12, 0xd5, 0xc8, 0x27, 0xe5, 0xf9, 0xb6, 0xb9, 0x7c, 0xcb, 0x76, 0xdb, 0xf2, 0x50, 0x8d, + 0x86, 0xfd, 0x7c, 0xdb, 0x1c, 0x51, 0xc7, 0x6b, 0x12, 0x2d, 0x4a, 0x48, 0x5e, 0x80, 0x21, 0x1f, + 0x30, 0x6b, 0x1b, 0x54, 0x8e, 0xfb, 0x18, 0x14, 0x5c, 0xb5, 0x0d, 0xaa, 0x45, 0xc8, 0x8a, 0x3f, + 0xad, 0xf6, 0xae, 0xed, 0x05, 0xeb, 0xfb, 0x71, 0xef, 0x76, 0xe8, 0xdd, 0x79, 0x18, 0xab, 0x3a, + 0x74, 0xcd, 0xb4, 0xdb, 0xae, 0xda, 0xcb, 0x8f, 0x6f, 0x6d, 0x16, 0x2e, 0xb6, 0x04, 0xb2, 0x9e, + 0xd8, 0xdd, 0xf1, 0xb2, 0xe4, 0x35, 0x18, 0x9a, 0xa3, 0xeb, 0x21, 0xaf, 0xbe, 0x30, 0xba, 0x99, + 0x45, 0xd7, 0x93, 0xd9, 0x44, 0x4a, 0x14, 0x7f, 0x3a, 0x0d, 0xef, 0x95, 0xfb, 0xf1, 0xa6, 0x6d, + 0xf2, 0x7c, 0xdc, 0x77, 0xa8, 0x13, 0x18, 0x6d, 0x53, 0xba, 0xd9, 0xdc, 0x67, 0x30, 0xb8, 0x77, + 0x79, 0xd7, 0x16, 0xbf, 0x9c, 0x86, 0xc1, 0x5a, 0xb9, 0x32, 0xeb, 0xaf, 0x7f, 0xdb, 0x27, 0xcf, + 0x1d, 0x87, 0x61, 0x1e, 0x57, 0xae, 0x64, 0x18, 0x0e, 0x75, 0x5d, 0xb1, 0xaf, 0xc3, 0xce, 0x13, + 0xb1, 0xe3, 0x74, 0x8e, 0x91, 0x2f, 0x53, 0x23, 0x45, 0xd8, 0x74, 0xc1, 0x56, 0x45, 0x7c, 0xdb, + 0x2e, 0x76, 0x7c, 0xe1, 0x2b, 0x07, 0x9d, 0x41, 0xe5, 0xe9, 0x22, 0x20, 0x25, 0x4f, 0x43, 0x6e, + 0x96, 0xaf, 0x4a, 0xd9, 0xd0, 0x53, 0x83, 0xaf, 0x46, 0xb2, 0xa7, 0x06, 0xa7, 0x21, 0x97, 0x20, + 0x5b, 0x0d, 0x57, 0x38, 0x9c, 0x53, 0xd8, 0xda, 0x26, 0x7b, 0x30, 0x54, 0xb9, 0x7f, 0x49, 0x76, + 0x9c, 0xad, 0x4d, 0xb9, 0x1d, 0x84, 0x56, 0x63, 0xcb, 0x55, 0x72, 0x68, 0x35, 0xc6, 0x82, 0x9c, + 0xf2, 0xd3, 0x45, 0xf0, 0xc3, 0x24, 0x91, 0x82, 0x62, 0x03, 0x86, 0xb8, 0x8c, 0xdd, 0x96, 0x6d, + 0xb9, 0x94, 0x3c, 0x0a, 0xc0, 0x15, 0x05, 0x93, 0xd3, 0x63, 0xea, 0x5f, 0x4d, 0x82, 0x04, 0x0d, + 0x4a, 0xef, 0xbb, 0x41, 0xc5, 0xbf, 0x97, 0x86, 0x11, 0x56, 0x77, 0xd9, 0x5e, 0x5d, 0xb5, 0xad, + 0x09, 0xa6, 0xd2, 0x13, 0xd0, 0x27, 0x7a, 0x5b, 0x68, 0x66, 0x60, 0x31, 0x48, 0x8a, 0xc0, 0x3d, + 0x69, 0x1c, 0xfe, 0x43, 0x56, 0x1c, 0x5f, 0x51, 0x94, 0x07, 0x27, 0xd9, 0xf0, 0xc1, 0x89, 0xf4, + 0xcc, 0x44, 0x4e, 0x3a, 0x2d, 0x51, 0x93, 0x57, 0xd9, 0xe4, 0x1d, 0x8b, 0x44, 0x88, 0x3e, 0x23, + 0x91, 0x00, 0x84, 0xf2, 0xf0, 0x97, 0x0b, 0x90, 0x69, 0x3c, 0x87, 0x45, 0x69, 0x8a, 0x6e, 0x3b, + 0x15, 0xfd, 0x08, 0x8e, 0xe3, 0xfa, 0xef, 0x88, 0x5f, 0x72, 0x92, 0x64, 0x9f, 0xa2, 0xf8, 0x85, + 0x0c, 0x8c, 0xb2, 0x22, 0xcc, 0xaa, 0x37, 0xad, 0x25, 0x0c, 0xec, 0x7e, 0x08, 0x33, 0xc6, 0x2b, + 0x90, 0xe3, 0x5d, 0x14, 0xf3, 0xb6, 0x88, 0x74, 0x9e, 0x5a, 0x9a, 0x63, 0xd8, 0xb8, 0xe0, 0x31, + 0xd4, 0xe5, 0x71, 0xc1, 0x83, 0xad, 0xcb, 0xe3, 0x82, 0xd3, 0x90, 0x2b, 0xd0, 0xcb, 0x17, 0xdb, + 0xde, 0x30, 0x56, 0x36, 0xae, 0xb1, 0x72, 0x4e, 0x13, 0xbe, 0xca, 0xbe, 0x84, 0x9a, 0xea, 0x78, + 0x15, 0xcb, 0xa0, 0xf7, 0x45, 0x88, 0x6f, 0xec, 0x64, 0x97, 0x41, 0xeb, 0x26, 0x03, 0xcb, 0x39, + 0x93, 0x43, 0x62, 0x36, 0x4f, 0xf8, 0x5d, 0x26, 0x2f, 0xed, 0x38, 0x4f, 0x04, 0x9d, 0xac, 0x56, + 0x1b, 0x2d, 0x52, 0xdc, 0x4a, 0xc3, 0x98, 0xe8, 0x4f, 0x84, 0x1e, 0xcd, 0xde, 0x79, 0x09, 0x60, + 0x41, 0x58, 0xa5, 0x41, 0x1c, 0x6d, 0x14, 0xa2, 0x6f, 0xab, 0x46, 0x73, 0xdc, 0x4b, 0xc4, 0x98, + 0xb3, 0x5a, 0x24, 0x60, 0xa8, 0x4c, 0xc8, 0x99, 0xdd, 0xa9, 0x80, 0x2a, 0x45, 0x43, 0x62, 0x72, + 0x0d, 0xfa, 0x26, 0x4c, 0xb7, 0xd5, 0xd4, 0x23, 0xef, 0xb9, 0x0d, 0x0e, 0x92, 0x47, 0xb4, 0xa0, + 0x2a, 0x7e, 0x47, 0x06, 0xce, 0x97, 0xf9, 0xc9, 0x76, 0x55, 0xa3, 0xae, 0xe7, 0x98, 0xdc, 0x69, + 0xee, 0xf8, 0x4e, 0x2b, 0x96, 0x9c, 0x6f, 0x37, 0x6f, 0x62, 0xe6, 0xe0, 0x54, 0x92, 0x54, 0x45, + 0xf8, 0x73, 0x8c, 0xbe, 0xea, 0x5f, 0x31, 0xb4, 0xea, 0x8e, 0x44, 0xa1, 0x25, 0x96, 0x2b, 0x7e, + 0x55, 0x1a, 0x46, 0xef, 0x58, 0xd4, 0x53, 0x1d, 0x68, 0xf6, 0xbc, 0x6d, 0x0d, 0x77, 0xf5, 0xe9, + 0x5d, 0xec, 0xea, 0xfd, 0xcd, 0x6e, 0x66, 0x97, 0x9b, 0xdd, 0x69, 0x80, 0xc6, 0x3e, 0xdc, 0x1e, + 0xc2, 0xb2, 0x8a, 0x20, 0x42, 0x2d, 0x7d, 0xc8, 0x05, 0x11, 0xde, 0xb3, 0x3e, 0x74, 0x82, 0xf8, + 0xf6, 0x0c, 0x9c, 0xf6, 0x3d, 0x3b, 0x44, 0xf8, 0xf0, 0x63, 0x07, 0xb3, 0x7d, 0x3d, 0xe8, 0xd3, + 0xa0, 0xaf, 0xaa, 0x6f, 0x30, 0x79, 0x6e, 0x67, 0x1d, 0x17, 0xd8, 0xea, 0xd2, 0xe2, 0xb4, 0x89, + 0xf6, 0xa8, 0xcf, 0x28, 0xa9, 0x97, 0x8e, 0x63, 0xfc, 0xed, 0x27, 0xc6, 0xdf, 0x3b, 0xd2, 0x4b, + 0xff, 0x22, 0x1d, 0xeb, 0xa5, 0x63, 0x87, 0xbb, 0x7d, 0x45, 0x0d, 0xfc, 0xb6, 0x0c, 0x9c, 0xaa, + 0x58, 0xe2, 0x3d, 0xc0, 0xac, 0x6d, 0x1c, 0x48, 0xe4, 0xa2, 0xe3, 0xc9, 0xe9, 0x60, 0xd5, 0x3e, + 0xde, 0x49, 0xc7, 0x4e, 0xb8, 0x0f, 0x5c, 0x27, 0xfd, 0x52, 0x5a, 0xed, 0xa4, 0xe3, 0xa9, 0x69, + 0x5f, 0x53, 0x13, 0x9b, 0xec, 0x03, 0x81, 0xd6, 0x68, 0xc3, 0xa1, 0xc7, 0xd1, 0x2b, 0x0e, 0x5c, + 0xa2, 0xc7, 0x13, 0xc9, 0x41, 0x4b, 0xf4, 0x78, 0xd4, 0xef, 0x4b, 0xa2, 0xcc, 0x10, 0x0f, 0x24, + 0x7a, 0x60, 0xae, 0xdd, 0xc7, 0x8b, 0xdd, 0xc1, 0x6f, 0x97, 0x94, 0x5e, 0x3a, 0x9e, 0x49, 0x1e, + 0xb8, 0x5e, 0x8a, 0xcc, 0x4e, 0x07, 0xe6, 0xf0, 0xfe, 0xb0, 0x6f, 0x97, 0x34, 0xea, 0x39, 0x26, + 0x5d, 0xd3, 0x9b, 0xc7, 0xdb, 0xa5, 0x07, 0x77, 0xbb, 0x14, 0xed, 0xa4, 0xe3, 0xb9, 0xe9, 0x81, + 0xdc, 0x2e, 0x45, 0x3b, 0xe9, 0x78, 0x6a, 0xda, 0x4f, 0x27, 0x3d, 0xd5, 0xe0, 0xf1, 0x2c, 0x6f, + 0x99, 0x96, 0x41, 0xce, 0xc1, 0xe9, 0xdb, 0xb5, 0x49, 0xad, 0x7e, 0xab, 0x32, 0x37, 0x51, 0xbf, + 0x3d, 0x57, 0xab, 0x4e, 0x96, 0x2b, 0x53, 0x95, 0xc9, 0x89, 0xd1, 0x1e, 0x72, 0x12, 0x4e, 0x84, + 0xa8, 0xe9, 0xdb, 0xb3, 0xa5, 0xb9, 0xd1, 0x14, 0x19, 0x83, 0xe1, 0x10, 0x38, 0x3e, 0xbf, 0x30, + 0x9a, 0x26, 0xa7, 0x60, 0x34, 0x04, 0xd5, 0xde, 0xac, 0x2d, 0x4c, 0xce, 0x8e, 0x66, 0x9e, 0xfa, + 0x42, 0x0a, 0x80, 0xd5, 0x32, 0xef, 0x98, 0x4b, 0xa6, 0x45, 0x1e, 0x81, 0xb3, 0x48, 0x34, 0xaf, + 0x55, 0x6e, 0x54, 0xe6, 0x94, 0x9a, 0x4e, 0xc3, 0x98, 0x8c, 0x9c, 0x99, 0x2f, 0x97, 0x66, 0x46, + 0x53, 0x41, 0x03, 0x04, 0xb8, 0x56, 0x9b, 0x97, 0x6a, 0x13, 0xc0, 0xf9, 0x5b, 0x0b, 0xa5, 0xd1, + 0x8c, 0x0a, 0xad, 0x95, 0x2b, 0xb3, 0xa3, 0x59, 0x72, 0x16, 0x4e, 0xca, 0xd0, 0xc9, 0xb9, 0x05, + 0xad, 0x54, 0x99, 0x18, 0xed, 0x7d, 0xea, 0xbd, 0x30, 0x88, 0x77, 0xb1, 0x22, 0x26, 0xc6, 0x10, + 0xf4, 0xcf, 0x8f, 0xd7, 0x26, 0xb5, 0x3b, 0xd8, 0x1a, 0x80, 0xdc, 0xc4, 0xe4, 0x1c, 0x6b, 0x59, + 0xea, 0xa9, 0xff, 0x98, 0x02, 0xa8, 0x4d, 0x2d, 0x54, 0x05, 0xe1, 0x20, 0xf4, 0x55, 0xe6, 0xee, + 0x94, 0x66, 0x2a, 0x8c, 0xae, 0x1f, 0xb2, 0xf3, 0xd5, 0x49, 0x26, 0x94, 0x01, 0xe8, 0x2d, 0xcf, + 0xcc, 0xd7, 0x26, 0x47, 0xd3, 0x0c, 0xa8, 0x4d, 0x96, 0x26, 0x46, 0x33, 0x0c, 0x78, 0x57, 0xab, + 0x2c, 0x4c, 0x8e, 0x66, 0xd9, 0x9f, 0x33, 0xb5, 0x85, 0xd2, 0xc2, 0x68, 0x2f, 0xfb, 0x73, 0x0a, + 0xff, 0xcc, 0x31, 0x66, 0xb5, 0xc9, 0x05, 0xfc, 0xd1, 0xc7, 0x9a, 0x30, 0xe5, 0xff, 0xea, 0x67, + 0x28, 0xc6, 0x7a, 0xa2, 0xa2, 0x8d, 0x0e, 0xb0, 0x1f, 0x8c, 0x25, 0xfb, 0x01, 0xac, 0x71, 0xda, + 0xe4, 0xec, 0xfc, 0x9d, 0xc9, 0xd1, 0x41, 0xc6, 0x6b, 0xf6, 0x16, 0x03, 0x0f, 0xb1, 0x3f, 0xb5, + 0x59, 0xf6, 0xe7, 0x30, 0xe3, 0xa4, 0x4d, 0x96, 0x66, 0xaa, 0xa5, 0x85, 0xe9, 0xd1, 0x11, 0xd6, + 0x1e, 0xe4, 0x79, 0x82, 0x97, 0x9c, 0x2b, 0xcd, 0x4e, 0x8e, 0x8e, 0x0a, 0x9a, 0x89, 0x99, 0xca, + 0xdc, 0xad, 0xd1, 0x31, 0x6c, 0xc8, 0x9b, 0xb3, 0xf8, 0x83, 0xb0, 0x02, 0xf8, 0xd7, 0xc9, 0xa7, + 0x3e, 0x0e, 0xb9, 0xf9, 0x1a, 0xba, 0x2b, 0x9c, 0x85, 0x93, 0xf3, 0xb5, 0xfa, 0xc2, 0x9b, 0xd5, + 0x49, 0xa5, 0xe3, 0xc6, 0x60, 0xd8, 0x47, 0xcc, 0x54, 0xe6, 0x6e, 0xbf, 0xc1, 0x15, 0xc4, 0x07, + 0xcd, 0x96, 0xca, 0xf3, 0xb5, 0xd1, 0x34, 0xeb, 0x47, 0x1f, 0x74, 0xb7, 0x32, 0x37, 0x31, 0x7f, + 0xb7, 0x36, 0x9a, 0x79, 0x6a, 0x0d, 0x86, 0x26, 0xe8, 0x9a, 0xd9, 0xa0, 0x42, 0x41, 0x2e, 0xc2, + 0xb9, 0x89, 0xc9, 0x3b, 0x95, 0xf2, 0x64, 0x47, 0x15, 0x89, 0xa2, 0x4b, 0xd5, 0xca, 0x68, 0x8a, + 0x9c, 0x01, 0x12, 0x05, 0xdf, 0x2c, 0xcd, 0x4e, 0x8d, 0xa6, 0x49, 0x1e, 0x4e, 0x45, 0xe1, 0x95, + 0xb9, 0x85, 0xdb, 0x73, 0x93, 0xa3, 0x99, 0xa7, 0xbe, 0x3d, 0x05, 0xa7, 0x27, 0x9b, 0xba, 0xeb, + 0x99, 0x0d, 0x97, 0xea, 0x4e, 0x63, 0xb9, 0xac, 0x7b, 0x74, 0xc9, 0x76, 0x36, 0x48, 0x11, 0x1e, + 0x9d, 0x9c, 0x29, 0xd5, 0x16, 0x2a, 0xe5, 0xda, 0x64, 0x49, 0x2b, 0x4f, 0xd7, 0xcb, 0xa5, 0x85, + 0xc9, 0x1b, 0xf3, 0xda, 0x9b, 0xf5, 0x1b, 0x93, 0x73, 0x93, 0x5a, 0x69, 0x66, 0xb4, 0x87, 0x3c, + 0x01, 0x85, 0x0e, 0x34, 0xb5, 0xc9, 0xf2, 0x6d, 0xad, 0xb2, 0xf0, 0xe6, 0x68, 0x8a, 0x3c, 0x0e, + 0x17, 0x3b, 0x12, 0xb1, 0xdf, 0xa3, 0x69, 0xf2, 0x28, 0x9c, 0xef, 0x44, 0xf2, 0xfa, 0xcc, 0x68, + 0xe6, 0xa9, 0x6f, 0x4e, 0x01, 0x99, 0x6f, 0x51, 0xab, 0x16, 0x6d, 0xe2, 0x63, 0x70, 0x81, 0xe9, + 0x45, 0xbd, 0x73, 0x03, 0x1f, 0x87, 0x8b, 0x89, 0x14, 0x52, 0xf3, 0x0a, 0xf0, 0x48, 0x07, 0x12, + 0xd1, 0xb8, 0x0b, 0x90, 0x4f, 0x26, 0xc0, 0xa6, 0xfd, 0x40, 0x0a, 0x4e, 0x27, 0xa6, 0xc9, 0x25, + 0x97, 0xe1, 0xc9, 0xd2, 0xc4, 0x2c, 0xeb, 0x9b, 0xf2, 0x42, 0x65, 0x7e, 0xae, 0x56, 0x9f, 0x9d, + 0x2a, 0xd5, 0x99, 0xf6, 0xdd, 0xae, 0x29, 0xbd, 0x79, 0x09, 0x8a, 0x5d, 0x28, 0xcb, 0xd3, 0xa5, + 0xb9, 0x1b, 0x6c, 0xf8, 0x91, 0x27, 0xe1, 0xb1, 0x8e, 0x74, 0x93, 0x73, 0xa5, 0xf1, 0x99, 0xc9, + 0x89, 0xd1, 0x34, 0x79, 0x0f, 0x3c, 0xde, 0x91, 0x6a, 0xa2, 0x52, 0xe3, 0x64, 0x99, 0xa7, 0xf4, + 0x48, 0xf0, 0x46, 0xf6, 0x95, 0xe5, 0xf9, 0xb9, 0x85, 0x52, 0x79, 0x21, 0x49, 0xb3, 0xcf, 0xc1, + 0xe9, 0x08, 0x76, 0xfc, 0x76, 0xad, 0x32, 0x37, 0x59, 0xab, 0x8d, 0xa6, 0x62, 0xa8, 0x40, 0xb4, + 0xe9, 0xf1, 0x89, 0x2f, 0xfd, 0xfe, 0xa3, 0x3d, 0x5f, 0xfa, 0xf2, 0xa3, 0xa9, 0x5f, 0xfe, 0xf2, + 0xa3, 0xa9, 0xdf, 0xfb, 0xf2, 0xa3, 0xa9, 0x8f, 0x5e, 0xdf, 0x8d, 0xa7, 0x2f, 0x9f, 0xbc, 0x17, + 0x73, 0xb8, 0x56, 0x3e, 0xf7, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x27, 0xeb, 0xff, 0x50, 0x81, + 0x07, 0x02, 0x00, } func (m *Metadata) Marshal() (dAtA []byte, err error) { @@ -30481,6 +30487,16 @@ func (m *MFADeviceMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.MFAViaBrowser { + i-- + if m.MFAViaBrowser { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } if len(m.DeviceType) > 0 { i -= len(m.DeviceType) copy(dAtA[i:], m.DeviceType) @@ -54097,6 +54113,9 @@ func (m *MFADeviceMetadata) Size() (n int) { if l > 0 { n += 1 + l + sovEvents(uint64(l)) } + if m.MFAViaBrowser { + n += 2 + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -89755,6 +89774,26 @@ func (m *MFADeviceMetadata) Unmarshal(dAtA []byte) error { } m.DeviceType = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MFAViaBrowser", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.MFAViaBrowser = bool(v != 0) default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) diff --git a/api/types/mfa_device.pb.go b/api/types/mfa_device.pb.go new file mode 100644 index 0000000000000..90e8201a20327 --- /dev/null +++ b/api/types/mfa_device.pb.go @@ -0,0 +1,278 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: teleport/legacy/types/mfa_device.proto + +package types + +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// BrowserMFADevice is a synthetic MFA device that is made available if a user +// has at least one WebAuthn device and no SSO MFA setup. This message doesn't +// require any fields, it just needs to exist so it can be an MFA option. +type BrowserMFADevice struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BrowserMFADevice) Reset() { *m = BrowserMFADevice{} } +func (m *BrowserMFADevice) String() string { return proto.CompactTextString(m) } +func (*BrowserMFADevice) ProtoMessage() {} +func (*BrowserMFADevice) Descriptor() ([]byte, []int) { + return fileDescriptor_aee666f88c27ffea, []int{0} +} +func (m *BrowserMFADevice) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BrowserMFADevice) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BrowserMFADevice.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *BrowserMFADevice) XXX_Merge(src proto.Message) { + xxx_messageInfo_BrowserMFADevice.Merge(m, src) +} +func (m *BrowserMFADevice) XXX_Size() int { + return m.Size() +} +func (m *BrowserMFADevice) XXX_DiscardUnknown() { + xxx_messageInfo_BrowserMFADevice.DiscardUnknown(m) +} + +var xxx_messageInfo_BrowserMFADevice proto.InternalMessageInfo + +func init() { + proto.RegisterType((*BrowserMFADevice)(nil), "types.BrowserMFADevice") +} + +func init() { + proto.RegisterFile("teleport/legacy/types/mfa_device.proto", fileDescriptor_aee666f88c27ffea) +} + +var fileDescriptor_aee666f88c27ffea = []byte{ + // 139 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x2b, 0x49, 0xcd, 0x49, + 0x2d, 0xc8, 0x2f, 0x2a, 0xd1, 0xcf, 0x49, 0x4d, 0x4f, 0x4c, 0xae, 0xd4, 0x2f, 0xa9, 0x2c, 0x48, + 0x2d, 0xd6, 0xcf, 0x4d, 0x4b, 0x8c, 0x4f, 0x49, 0x2d, 0xcb, 0x4c, 0x4e, 0xd5, 0x2b, 0x28, 0xca, + 0x2f, 0xc9, 0x17, 0x62, 0x05, 0x8b, 0x2b, 0x09, 0x71, 0x09, 0x38, 0x15, 0xe5, 0x97, 0x17, 0xa7, + 0x16, 0xf9, 0xba, 0x39, 0xba, 0x80, 0x15, 0x38, 0x59, 0x9e, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, + 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x51, 0xda, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, + 0xf9, 0xb9, 0xfa, 0xe9, 0x45, 0x89, 0x65, 0x99, 0x25, 0x89, 0x25, 0x99, 0xf9, 0x79, 0x89, 0x39, + 0xfa, 0x70, 0x9b, 0x12, 0x0b, 0x32, 0x21, 0xd6, 0x24, 0xb1, 0x81, 0x0d, 0x37, 0x06, 0x04, 0x00, + 0x00, 0xff, 0xff, 0x1f, 0x7b, 0xb9, 0x11, 0x86, 0x00, 0x00, 0x00, +} + +func (m *BrowserMFADevice) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *BrowserMFADevice) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BrowserMFADevice) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.XXX_unrecognized != nil { + i -= len(m.XXX_unrecognized) + copy(dAtA[i:], m.XXX_unrecognized) + } + return len(dAtA) - i, nil +} + +func encodeVarintMfaDevice(dAtA []byte, offset int, v uint64) int { + offset -= sovMfaDevice(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *BrowserMFADevice) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func sovMfaDevice(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozMfaDevice(x uint64) (n int) { + return sovMfaDevice(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *BrowserMFADevice) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowMfaDevice + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: BrowserMFADevice: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BrowserMFADevice: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipMfaDevice(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthMfaDevice + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipMfaDevice(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowMfaDevice + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowMfaDevice + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowMfaDevice + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthMfaDevice + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupMfaDevice + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthMfaDevice + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthMfaDevice = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowMfaDevice = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupMfaDevice = fmt.Errorf("proto: unexpected end of group") +) diff --git a/api/types/types.pb.go b/api/types/types.pb.go index 649916cdfcd49..55767734d8a7e 100644 --- a/api/types/types.pb.go +++ b/api/types/types.pb.go @@ -8027,9 +8027,15 @@ type AuthPreferenceSpecV2 struct { // StableUnixUserConfig contains the cluster-wide configuration for stable // UNIX users. StableUnixUserConfig *StableUNIXUserConfig `protobuf:"bytes,22,opt,name=stable_unix_user_config,json=stableUnixUserConfig,proto3" json:"stable_unix_user_config,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // AllowCLIAuthViaBrowser enables/disables browser-based authentication for + // authenticating CLI sessions. + // When set to false, authentication flows that require a browser will be disabled. + // Defaults to true if the Webauthn is configured, defaults to false + // otherwise. + AllowCLIAuthViaBrowser *BoolOption `protobuf:"bytes,24,opt,name=AllowCLIAuthViaBrowser,proto3,customtype=BoolOption" json:"allow_cli_auth_via_browser,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *AuthPreferenceSpecV2) Reset() { *m = AuthPreferenceSpecV2{} } @@ -11791,6 +11797,7 @@ type MFADevice struct { // *MFADevice_U2F // *MFADevice_Webauthn // *MFADevice_Sso + // *MFADevice_Browser Device isMFADevice_Device `protobuf_oneof:"device"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -11848,11 +11855,15 @@ type MFADevice_Webauthn struct { type MFADevice_Sso struct { Sso *SSOMFADevice `protobuf:"bytes,11,opt,name=sso,proto3,oneof" json:"sso,omitempty"` } +type MFADevice_Browser struct { + Browser *BrowserMFADevice `protobuf:"bytes,12,opt,name=browser,proto3,oneof" json:"browser,omitempty"` +} func (*MFADevice_Totp) isMFADevice_Device() {} func (*MFADevice_U2F) isMFADevice_Device() {} func (*MFADevice_Webauthn) isMFADevice_Device() {} func (*MFADevice_Sso) isMFADevice_Device() {} +func (*MFADevice_Browser) isMFADevice_Device() {} func (m *MFADevice) GetDevice() isMFADevice_Device { if m != nil { @@ -11889,6 +11900,13 @@ func (m *MFADevice) GetSso() *SSOMFADevice { return nil } +func (m *MFADevice) GetBrowser() *BrowserMFADevice { + if x, ok := m.GetDevice().(*MFADevice_Browser); ok { + return x.Browser + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*MFADevice) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -11896,6 +11914,7 @@ func (*MFADevice) XXX_OneofWrappers() []interface{} { (*MFADevice_U2F)(nil), (*MFADevice_Webauthn)(nil), (*MFADevice_Sso)(nil), + (*MFADevice_Browser)(nil), } } @@ -25764,2257 +25783,2263 @@ func init() { func init() { proto.RegisterFile("teleport/legacy/types/types.proto", fileDescriptor_9198ee693835762e) } var fileDescriptor_9198ee693835762e = []byte{ - // 35985 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x90, 0x1c, 0x49, - 0x7a, 0x18, 0x76, 0xdd, 0x3d, 0x8f, 0x9e, 0x6f, 0x5e, 0x3d, 0x39, 0x03, 0x60, 0x30, 0xbb, 0xd8, - 0xc1, 0xd6, 0xee, 0x62, 0x81, 0xbd, 0x5d, 0x60, 0x17, 0xb8, 0xc5, 0xdd, 0x3e, 0xee, 0xf6, 0x7a, - 0x1e, 0x00, 0x06, 0x18, 0x00, 0xbd, 0xd5, 0x03, 0x60, 0x8f, 0xf7, 0xa8, 0xab, 0xe9, 0xce, 0x99, - 0xa9, 0x9d, 0xee, 0xae, 0xbe, 0xaa, 0xea, 0x01, 0x46, 0x47, 0xea, 0x61, 0xf1, 0x4c, 0x51, 0xf4, - 0x89, 0x0f, 0x91, 0xe2, 0x29, 0xc2, 0x64, 0x30, 0x6c, 0xd1, 0x96, 0xc5, 0xa0, 0x1f, 0xa4, 0x64, - 0xcb, 0x41, 0x8b, 0x22, 0x6d, 0x51, 0x92, 0x15, 0x36, 0xc5, 0xb0, 0xe4, 0xb0, 0x7d, 0xc1, 0x18, - 0x86, 0x4c, 0xda, 0x21, 0xc3, 0x11, 0x0a, 0xc9, 0x8e, 0x50, 0x84, 0x8f, 0xe1, 0xb0, 0x23, 0xbf, - 0x2f, 0xb3, 0x2a, 0xb3, 0xaa, 0x7a, 0xa6, 0x67, 0x17, 0x4b, 0x11, 0x17, 0xfc, 0x03, 0x4c, 0x7f, - 0xf9, 0x7d, 0x5f, 0x66, 0xe5, 0xf3, 0xcb, 0x2f, 0xbf, 0x07, 0x3c, 0x1f, 0xf1, 0x16, 0xef, 0xfa, - 0x41, 0x74, 0xa9, 0xc5, 0xb7, 0xdd, 0xc6, 0xfe, 0xa5, 0x68, 0xbf, 0xcb, 0x43, 0xfa, 0xf7, 0x62, - 0x37, 0xf0, 0x23, 0x9f, 0x0d, 0xe3, 0x8f, 0x85, 0xb9, 0x6d, 0x7f, 0xdb, 0x47, 0xc8, 0x25, 0xf1, - 0x17, 0x15, 0x2e, 0x3c, 0xb7, 0xed, 0xfb, 0xdb, 0x2d, 0x7e, 0x09, 0x7f, 0x6d, 0xf6, 0xb6, 0x2e, - 0x35, 0x7b, 0x81, 0x1b, 0x79, 0x7e, 0x47, 0x96, 0x2f, 0xa6, 0xcb, 0x23, 0xaf, 0xcd, 0xc3, 0xc8, - 0x6d, 0x77, 0xfb, 0x31, 0x78, 0x18, 0xb8, 0xdd, 0x2e, 0x0f, 0x64, 0xed, 0x0b, 0x17, 0xe2, 0x06, - 0xba, 0x51, 0x24, 0x28, 0x05, 0xf3, 0x4b, 0x7b, 0x6f, 0xe8, 0x3f, 0x25, 0xea, 0xd5, 0x18, 0xb5, - 0xe1, 0xb7, 0xbb, 0x7e, 0x87, 0x77, 0xa2, 0x2d, 0xee, 0x46, 0xbd, 0x80, 0x87, 0x82, 0x20, 0x06, - 0x3a, 0x0a, 0x2a, 0xe9, 0x5e, 0xca, 0xef, 0x83, 0x80, 0x87, 0x7e, 0x2f, 0x68, 0xc4, 0x68, 0x57, - 0xfb, 0x74, 0x55, 0xd0, 0x0b, 0x23, 0xde, 0x74, 0x9a, 0x7c, 0xcf, 0x6b, 0x70, 0x27, 0xe0, 0xdf, - 0xe8, 0x79, 0x01, 0x6f, 0xf3, 0x4e, 0x24, 0xe9, 0x5e, 0xcb, 0xa7, 0x53, 0xdf, 0x99, 0xfa, 0x60, - 0xeb, 0xe7, 0x4b, 0x30, 0x76, 0x8b, 0xf3, 0x6e, 0xb5, 0xe5, 0xed, 0x71, 0xf6, 0x02, 0x0c, 0xdd, - 0x71, 0xdb, 0x7c, 0xbe, 0x70, 0xb6, 0x70, 0x7e, 0x6c, 0x69, 0xfa, 0xf1, 0xc1, 0xe2, 0x78, 0xc8, - 0x83, 0x3d, 0x1e, 0x38, 0x1d, 0xb7, 0xcd, 0x6d, 0x2c, 0x64, 0x9f, 0x86, 0x31, 0xf1, 0x7f, 0xd8, - 0x75, 0x1b, 0x7c, 0xbe, 0x88, 0x98, 0x93, 0x8f, 0x0f, 0x16, 0xc7, 0x3a, 0x0a, 0x68, 0x27, 0xe5, - 0x6c, 0x0d, 0x46, 0x57, 0x1f, 0x75, 0xbd, 0x80, 0x87, 0xf3, 0x43, 0x67, 0x0b, 0xe7, 0xc7, 0x2f, - 0x2f, 0x5c, 0xa4, 0x21, 0xb8, 0xa8, 0x86, 0xe0, 0xe2, 0x86, 0x1a, 0xa3, 0xa5, 0xd9, 0x7f, 0x78, - 0xb0, 0xf8, 0xa9, 0xc7, 0x07, 0x8b, 0xa3, 0x9c, 0x48, 0x7e, 0xe2, 0xf7, 0x16, 0x0b, 0xb6, 0xa2, - 0x67, 0xef, 0xc2, 0xd0, 0xc6, 0x7e, 0x97, 0xcf, 0x8f, 0x9d, 0x2d, 0x9c, 0x9f, 0xba, 0xfc, 0xdc, - 0x45, 0x9a, 0x35, 0x71, 0xe3, 0x93, 0xbf, 0x04, 0xd6, 0x52, 0xf9, 0xf1, 0xc1, 0xe2, 0x90, 0x40, - 0xb1, 0x91, 0x8a, 0xbd, 0x06, 0x23, 0x37, 0xfc, 0x30, 0x5a, 0x5b, 0x99, 0x07, 0x6c, 0xf2, 0x89, - 0xc7, 0x07, 0x8b, 0x33, 0x3b, 0x7e, 0x18, 0x39, 0x5e, 0xf3, 0x55, 0xbf, 0xed, 0x45, 0xbc, 0xdd, - 0x8d, 0xf6, 0x6d, 0x89, 0x64, 0x3d, 0x82, 0x49, 0x83, 0x1f, 0x1b, 0x87, 0xd1, 0x7b, 0x77, 0x6e, - 0xdd, 0xb9, 0xfb, 0xe0, 0x4e, 0xe5, 0x53, 0xac, 0x0c, 0x43, 0x77, 0xee, 0xae, 0xac, 0x56, 0x0a, - 0x6c, 0x14, 0x4a, 0xd5, 0x5a, 0xad, 0x52, 0x64, 0x13, 0x50, 0x5e, 0xa9, 0x6e, 0x54, 0x97, 0xaa, - 0xf5, 0xd5, 0x4a, 0x89, 0xcd, 0xc2, 0xf4, 0x83, 0xb5, 0x3b, 0x2b, 0x77, 0x1f, 0xd4, 0x9d, 0x95, - 0xd5, 0xfa, 0xad, 0x8d, 0xbb, 0xb5, 0xca, 0x10, 0x9b, 0x02, 0xb8, 0x75, 0x6f, 0x69, 0xd5, 0xbe, - 0xb3, 0xba, 0xb1, 0x5a, 0xaf, 0x0c, 0xb3, 0x39, 0xa8, 0x28, 0x12, 0xa7, 0xbe, 0x6a, 0xdf, 0x5f, - 0x5b, 0x5e, 0xad, 0x8c, 0xdc, 0x1c, 0x2a, 0x97, 0x2a, 0x43, 0xf6, 0xe8, 0x3a, 0x77, 0x43, 0xbe, - 0xb6, 0x62, 0xfd, 0xfb, 0x25, 0x28, 0xdf, 0xe6, 0x91, 0xdb, 0x74, 0x23, 0x97, 0x3d, 0x6b, 0x8c, - 0x0f, 0x7e, 0xa2, 0x36, 0x30, 0x2f, 0x64, 0x07, 0x66, 0xf8, 0xf1, 0xc1, 0x62, 0xe1, 0x35, 0x7d, - 0x40, 0xde, 0x81, 0xf1, 0x15, 0x1e, 0x36, 0x02, 0xaf, 0x2b, 0xe6, 0xf2, 0x7c, 0x09, 0xd1, 0x4e, - 0x3f, 0x3e, 0x58, 0x3c, 0xd1, 0x4c, 0xc0, 0x5a, 0x87, 0xe8, 0xd8, 0x6c, 0x0d, 0x46, 0xd6, 0xdd, - 0x4d, 0xde, 0x0a, 0xe7, 0x87, 0xcf, 0x96, 0xce, 0x8f, 0x5f, 0x7e, 0x46, 0x0e, 0x82, 0x6a, 0xe0, - 0x45, 0x2a, 0x5d, 0xed, 0x44, 0xc1, 0xfe, 0xd2, 0xdc, 0xe3, 0x83, 0xc5, 0x4a, 0x0b, 0x01, 0x7a, - 0x07, 0x13, 0x0a, 0xab, 0x27, 0x13, 0x63, 0xe4, 0xc8, 0x89, 0x71, 0xe6, 0x1f, 0x1e, 0x2c, 0x16, - 0xc4, 0x80, 0xc9, 0x89, 0x91, 0xf0, 0x33, 0xa7, 0xc8, 0x65, 0x28, 0xdb, 0x7c, 0xcf, 0x0b, 0xc5, - 0x97, 0x95, 0xf1, 0xcb, 0x4e, 0x3e, 0x3e, 0x58, 0x64, 0x81, 0x84, 0x69, 0xcd, 0x88, 0xf1, 0x16, - 0xde, 0x82, 0x71, 0xad, 0xd5, 0xac, 0x02, 0xa5, 0x5d, 0xbe, 0x4f, 0x3d, 0x6c, 0x8b, 0x3f, 0xd9, - 0x1c, 0x0c, 0xef, 0xb9, 0xad, 0x9e, 0xec, 0x52, 0x9b, 0x7e, 0xbc, 0x5d, 0xfc, 0x5c, 0xe1, 0xe6, - 0x50, 0x79, 0xb4, 0x52, 0xb6, 0x8b, 0x6b, 0x2b, 0xd6, 0x4f, 0x0d, 0x41, 0xd9, 0xf6, 0x69, 0x7f, - 0x60, 0x17, 0x60, 0xb8, 0x1e, 0xb9, 0x91, 0x1a, 0xa6, 0xd9, 0xc7, 0x07, 0x8b, 0xd3, 0x62, 0xef, - 0xe0, 0x5a, 0xfd, 0x84, 0x21, 0x50, 0x6b, 0x3b, 0x6e, 0xa8, 0x86, 0x0b, 0x51, 0xbb, 0x02, 0xa0, - 0xa3, 0x22, 0x06, 0x3b, 0x07, 0x43, 0xb7, 0xfd, 0x26, 0x97, 0x23, 0xc6, 0x1e, 0x1f, 0x2c, 0x4e, - 0xb5, 0xfd, 0xa6, 0x8e, 0x88, 0xe5, 0xec, 0x55, 0x18, 0x5b, 0xee, 0x05, 0x01, 0xef, 0x88, 0xb9, - 0x3e, 0x84, 0xc8, 0x53, 0x8f, 0x0f, 0x16, 0xa1, 0x41, 0x40, 0xc7, 0x6b, 0xda, 0x09, 0x82, 0x18, - 0x86, 0x7a, 0xe4, 0x06, 0x11, 0x6f, 0xce, 0x0f, 0x0f, 0x34, 0x0c, 0x62, 0x7d, 0xce, 0x84, 0x44, - 0x92, 0x1e, 0x06, 0xc9, 0x89, 0xdd, 0x80, 0xf1, 0xeb, 0x81, 0xdb, 0xe0, 0x35, 0x1e, 0x78, 0x7e, - 0x13, 0xc7, 0xb7, 0xb4, 0x74, 0xee, 0xf1, 0xc1, 0xe2, 0xc9, 0x6d, 0x01, 0x76, 0xba, 0x08, 0x4f, - 0xa8, 0xbf, 0x77, 0xb0, 0x58, 0x5e, 0x91, 0x3b, 0xb9, 0xad, 0x93, 0xb2, 0xaf, 0x8b, 0xc1, 0x09, - 0x23, 0xec, 0x5a, 0xde, 0x9c, 0x1f, 0x3d, 0xb2, 0x89, 0x96, 0x6c, 0xe2, 0xc9, 0x96, 0x1b, 0x46, - 0x4e, 0x40, 0x74, 0xa9, 0x76, 0xea, 0x2c, 0xd9, 0x5d, 0x28, 0xd7, 0x1b, 0x3b, 0xbc, 0xd9, 0x6b, - 0x71, 0x9c, 0x32, 0xe3, 0x97, 0x4f, 0xc9, 0x49, 0xad, 0xc6, 0x53, 0x15, 0x2f, 0x2d, 0x48, 0xde, - 0x2c, 0x94, 0x10, 0x7d, 0x3e, 0x29, 0xac, 0xb7, 0xcb, 0xdf, 0xf9, 0x85, 0xc5, 0x4f, 0xfd, 0xd9, - 0xdf, 0x3d, 0xfb, 0x29, 0xeb, 0xbf, 0x28, 0x42, 0x25, 0xcd, 0x84, 0x6d, 0xc1, 0xe4, 0xbd, 0x6e, - 0xd3, 0x8d, 0xf8, 0x72, 0xcb, 0xe3, 0x9d, 0x28, 0xc4, 0x49, 0x72, 0xf8, 0x37, 0xbd, 0x28, 0xeb, - 0x9d, 0xef, 0x21, 0xa1, 0xd3, 0x20, 0xca, 0xd4, 0x57, 0x99, 0x6c, 0x93, 0x7a, 0xea, 0xb8, 0x81, - 0x87, 0x38, 0xc3, 0x8e, 0x57, 0x0f, 0x6d, 0xfd, 0x7d, 0xea, 0x91, 0x6c, 0xe5, 0x04, 0xea, 0x34, - 0x37, 0xf7, 0x71, 0x66, 0x0e, 0x3e, 0x81, 0x04, 0x49, 0xce, 0x04, 0x12, 0x60, 0xeb, 0x0f, 0x0a, - 0x30, 0x65, 0xcb, 0x03, 0xf1, 0x06, 0x77, 0x9b, 0x3c, 0x10, 0xd3, 0xff, 0x96, 0xd7, 0x69, 0xca, - 0x35, 0x85, 0xd3, 0x7f, 0xd7, 0xeb, 0xe8, 0x5b, 0x37, 0x96, 0xb3, 0xd7, 0x61, 0xb4, 0xde, 0xdb, - 0x44, 0xd4, 0x62, 0xb2, 0x03, 0x84, 0xbd, 0x4d, 0x27, 0x85, 0xae, 0xd0, 0xd8, 0x25, 0x18, 0xbd, - 0xcf, 0x83, 0x30, 0xd9, 0x0d, 0xf1, 0x68, 0xd8, 0x23, 0x90, 0x4e, 0x20, 0xb1, 0xd8, 0xf5, 0x64, - 0x47, 0x96, 0x87, 0xda, 0x74, 0x6a, 0x1f, 0x4c, 0xa6, 0x4a, 0x5b, 0x42, 0xf4, 0xa9, 0xa2, 0xb0, - 0xac, 0x7f, 0x51, 0x84, 0xca, 0x8a, 0x1b, 0xb9, 0x9b, 0x6e, 0x28, 0xfb, 0xf3, 0xfe, 0x15, 0xb1, - 0xc7, 0x6b, 0x1f, 0x8a, 0x7b, 0xbc, 0x68, 0xf9, 0x47, 0xfe, 0xbc, 0x97, 0xd2, 0x9f, 0x37, 0x2e, - 0x4e, 0x58, 0xf9, 0x79, 0xc9, 0x47, 0x7d, 0xfe, 0xe8, 0x8f, 0xaa, 0xc8, 0x8f, 0x2a, 0xab, 0x8f, - 0x4a, 0x3e, 0x85, 0x7d, 0x1e, 0x86, 0xea, 0x5d, 0xde, 0x90, 0x9b, 0x88, 0x3a, 0x17, 0xcc, 0x8f, - 0x13, 0x08, 0xf7, 0xaf, 0x2c, 0x4d, 0x48, 0x36, 0x43, 0x61, 0x97, 0x37, 0x6c, 0x24, 0x63, 0xab, - 0x30, 0x22, 0x36, 0xc4, 0x9e, 0x3a, 0x0c, 0xce, 0xe4, 0x33, 0x40, 0x94, 0xfb, 0x57, 0x96, 0xa6, - 0x24, 0x8b, 0x91, 0x10, 0x21, 0xb6, 0x24, 0x16, 0x5b, 0x75, 0xd8, 0xf0, 0xbb, 0x1c, 0x37, 0x8a, - 0x31, 0x9b, 0x7e, 0x68, 0x2b, 0xf2, 0x5f, 0x97, 0x60, 0x2e, 0xaf, 0x4d, 0x7a, 0x27, 0x8d, 0x1c, - 0xd2, 0x49, 0xe7, 0xa1, 0x2c, 0xe4, 0x03, 0x71, 0xe6, 0x52, 0x15, 0x4b, 0x13, 0xa2, 0x3f, 0x76, - 0x24, 0xcc, 0x8e, 0x4b, 0xd9, 0x0b, 0xb1, 0xb8, 0x51, 0x4e, 0xf8, 0x49, 0x71, 0x43, 0x09, 0x19, - 0x62, 0x22, 0xa9, 0xfd, 0x01, 0xa5, 0x92, 0xa4, 0xcf, 0x15, 0x38, 0x99, 0x48, 0x81, 0x84, 0x18, - 0x67, 0x98, 0x3a, 0x71, 0x56, 0xa1, 0xac, 0x3e, 0x6b, 0x7e, 0x02, 0x19, 0xcd, 0xa4, 0x3a, 0xf0, - 0xfe, 0x15, 0x9a, 0x29, 0x4d, 0xf9, 0x5b, 0x67, 0xa3, 0x70, 0xd8, 0x15, 0x28, 0xd7, 0x02, 0xff, - 0xd1, 0xfe, 0xda, 0x4a, 0x38, 0x3f, 0x79, 0xb6, 0x74, 0x7e, 0x6c, 0xe9, 0xd4, 0xe3, 0x83, 0xc5, - 0xd9, 0xae, 0x80, 0x39, 0x5e, 0x53, 0x3f, 0xc6, 0x63, 0x44, 0xb6, 0x08, 0xe3, 0x01, 0x6f, 0xb9, - 0xfb, 0xce, 0x76, 0xe0, 0xf7, 0xba, 0xf3, 0x53, 0xd8, 0xf3, 0x80, 0xa0, 0xeb, 0x02, 0xc2, 0x9e, - 0x81, 0x31, 0x42, 0xf0, 0x9a, 0xe1, 0xfc, 0xb4, 0x60, 0x6b, 0x97, 0x11, 0xb0, 0xd6, 0x0c, 0x6f, - 0x0e, 0x95, 0x0b, 0x95, 0xe2, 0xcd, 0xa1, 0x72, 0xb1, 0x52, 0x22, 0xc9, 0xe7, 0xe6, 0x50, 0x79, - 0xa8, 0x32, 0x7c, 0x73, 0xa8, 0x3c, 0x8c, 0xb2, 0xd0, 0x58, 0x05, 0x6e, 0x0e, 0x95, 0xc7, 0x2b, - 0x13, 0x86, 0x20, 0x82, 0xd5, 0x47, 0x7e, 0xc3, 0x6f, 0xd9, 0xa5, 0x7b, 0xf6, 0x9a, 0x3d, 0xb2, - 0x5c, 0x5d, 0xe6, 0x41, 0x64, 0x97, 0xaa, 0x0f, 0xea, 0xf6, 0xe4, 0xca, 0x7e, 0xc7, 0x6d, 0x7b, - 0x0d, 0x3a, 0xd5, 0xed, 0xd2, 0xf5, 0xe5, 0x9a, 0xd5, 0x81, 0x93, 0xf9, 0x53, 0x89, 0x6d, 0xc0, - 0xc4, 0x86, 0x1b, 0x6c, 0xf3, 0xe8, 0x06, 0x77, 0x5b, 0xd1, 0x0e, 0xb6, 0x7f, 0xfc, 0xf2, 0xac, - 0xec, 0x3e, 0xbd, 0x68, 0xe9, 0x99, 0xc7, 0x07, 0x8b, 0xa7, 0x22, 0x84, 0x38, 0x3b, 0x08, 0xd2, - 0x3a, 0xc4, 0xe0, 0x62, 0x55, 0x61, 0x2a, 0xe9, 0xf9, 0x75, 0x2f, 0x8c, 0xd8, 0x25, 0x18, 0x53, - 0x10, 0xb1, 0xe7, 0x97, 0x72, 0xc7, 0xc8, 0x4e, 0x70, 0xac, 0xbf, 0x5f, 0x04, 0x48, 0x4a, 0x9e, - 0xd2, 0x6d, 0xe1, 0xb3, 0xc6, 0xb6, 0x70, 0x22, 0xbd, 0xaa, 0xfb, 0x6f, 0x08, 0xef, 0xa5, 0x36, - 0x84, 0x53, 0x69, 0xd2, 0x23, 0xb6, 0x02, 0x6d, 0xd1, 0xff, 0xfc, 0x68, 0x32, 0x18, 0x72, 0xb9, - 0x9f, 0x87, 0x78, 0x02, 0xc9, 0x0e, 0xc5, 0x75, 0xdc, 0x55, 0x93, 0x2a, 0x2e, 0x65, 0xa7, 0x41, - 0x4c, 0x30, 0xd9, 0xa9, 0xa3, 0x8f, 0x0f, 0x16, 0x4b, 0xbd, 0xc0, 0xc3, 0x49, 0xc7, 0x2e, 0x81, - 0x9c, 0x76, 0xb2, 0x03, 0xc5, 0x5a, 0x99, 0x69, 0xb8, 0x4e, 0x83, 0x07, 0x51, 0xd2, 0xe3, 0xf3, - 0x05, 0x35, 0x3b, 0x59, 0x17, 0xcc, 0xa9, 0x39, 0x3f, 0x84, 0xd3, 0xe0, 0x7c, 0x6e, 0xaf, 0x5c, - 0x34, 0x50, 0x49, 0xa2, 0x3e, 0xab, 0x0e, 0xe8, 0x26, 0x95, 0x39, 0x19, 0xe9, 0xda, 0xac, 0x80, - 0x5d, 0x01, 0xb1, 0x22, 0x64, 0xef, 0x83, 0xac, 0xa7, 0xfa, 0xa0, 0xbe, 0x74, 0x42, 0x72, 0x9a, - 0x74, 0x1f, 0xea, 0xe4, 0x02, 0x9b, 0xbd, 0x03, 0x62, 0xc9, 0xc8, 0x7e, 0x67, 0x92, 0xe8, 0xfa, - 0x72, 0x6d, 0xb9, 0xe5, 0xf7, 0x9a, 0xf5, 0xf7, 0xd7, 0x13, 0xe2, 0xed, 0x46, 0x57, 0x27, 0xbe, - 0xbe, 0x5c, 0x63, 0xef, 0xc0, 0x70, 0xf5, 0x4f, 0xf5, 0x02, 0x2e, 0x45, 0xb5, 0x09, 0x55, 0xa7, - 0x80, 0x2d, 0x9d, 0x92, 0x84, 0xd3, 0xae, 0xf8, 0xa9, 0x8b, 0xb8, 0x58, 0x2e, 0x6a, 0xde, 0x58, - 0xaf, 0x4b, 0x31, 0x8c, 0xa5, 0xba, 0x65, 0x63, 0x5d, 0x6b, 0x76, 0x64, 0x7c, 0xb5, 0xa0, 0x62, - 0x97, 0xa0, 0x58, 0x5d, 0xc1, 0xcb, 0xe1, 0xf8, 0xe5, 0x31, 0x55, 0xed, 0xca, 0xd2, 0x9c, 0x24, - 0x99, 0x70, 0xf5, 0x65, 0x50, 0xac, 0xae, 0xb0, 0x25, 0x18, 0xbe, 0xbd, 0x5f, 0x7f, 0x7f, 0x5d, - 0x6e, 0xbd, 0x6a, 0xc9, 0x23, 0xec, 0x2e, 0x6e, 0x33, 0x61, 0xd2, 0xe2, 0xf6, 0x7e, 0xf8, 0x8d, - 0x96, 0xde, 0x62, 0x44, 0x63, 0x35, 0x18, 0xab, 0x36, 0xdb, 0x5e, 0xe7, 0x5e, 0xc8, 0x83, 0xf9, - 0x71, 0xe4, 0x33, 0x9f, 0x6a, 0x77, 0x5c, 0xbe, 0x34, 0xff, 0xf8, 0x60, 0x71, 0xce, 0x15, 0x3f, - 0x9d, 0x5e, 0xc8, 0x03, 0x8d, 0x5b, 0xc2, 0x84, 0xd5, 0x00, 0x6e, 0xfb, 0x9d, 0x6d, 0xbf, 0x1a, - 0xb5, 0xdc, 0x30, 0xb5, 0x99, 0x27, 0x05, 0xb1, 0x24, 0x75, 0xa2, 0x2d, 0x60, 0x8e, 0x2b, 0x80, - 0x1a, 0x43, 0x8d, 0x07, 0xbb, 0x06, 0x23, 0x77, 0x03, 0xb7, 0xd1, 0xe2, 0xf3, 0x93, 0xc8, 0x6d, - 0x4e, 0x72, 0x23, 0xa0, 0xfa, 0xd2, 0x79, 0xc9, 0xb0, 0xe2, 0x23, 0x58, 0xbf, 0xb1, 0x11, 0xe2, - 0xc2, 0x03, 0x60, 0xd9, 0x39, 0x99, 0x73, 0x5f, 0xfa, 0xb4, 0x7e, 0x5f, 0x4a, 0x16, 0xfd, 0xb2, - 0xdf, 0x6e, 0xbb, 0x9d, 0x26, 0xd2, 0xde, 0xbf, 0xac, 0x5d, 0xa3, 0xac, 0x6f, 0xc0, 0x4c, 0xa6, - 0xb3, 0x8e, 0xb8, 0xea, 0x7e, 0x01, 0xa6, 0x57, 0xf8, 0x96, 0xdb, 0x6b, 0x45, 0xf1, 0xb9, 0x47, - 0x4b, 0x14, 0x2f, 0x9d, 0x4d, 0x2a, 0x72, 0xd4, 0x61, 0x67, 0xa7, 0x91, 0xad, 0x7f, 0x5c, 0x80, - 0x49, 0xe3, 0xfb, 0xd9, 0x55, 0x18, 0xab, 0xf6, 0x9a, 0x5e, 0x84, 0x23, 0x49, 0x95, 0xd2, 0x78, - 0x09, 0x60, 0x76, 0xbc, 0x14, 0x2a, 0x7b, 0x0b, 0xc0, 0xe6, 0x51, 0xb0, 0xbf, 0xec, 0xf7, 0x3a, - 0x11, 0x36, 0x62, 0x98, 0xae, 0xd3, 0x81, 0x80, 0x3a, 0x0d, 0x01, 0xd6, 0x07, 0x26, 0x41, 0x66, - 0xb7, 0xa0, 0x52, 0xdf, 0xe9, 0x6d, 0x6d, 0xb5, 0xb8, 0x12, 0x1b, 0x42, 0xdc, 0x4a, 0xca, 0x4b, - 0x8b, 0x8f, 0x0f, 0x16, 0x9f, 0x09, 0xa9, 0xcc, 0x51, 0xd2, 0x85, 0x3e, 0xbe, 0x19, 0x42, 0xeb, - 0xaf, 0xe9, 0xb2, 0xa4, 0x3a, 0xdc, 0x5e, 0x8b, 0xb7, 0xa8, 0x42, 0x22, 0xd9, 0x66, 0xb6, 0xa8, - 0x78, 0x83, 0xba, 0x40, 0xdb, 0x45, 0x31, 0xb3, 0x5d, 0x8c, 0xcb, 0xc9, 0x51, 0x72, 0x1f, 0x86, - 0xb4, 0x49, 0xc4, 0x8b, 0xa7, 0xf4, 0xd1, 0x17, 0xcf, 0x7b, 0x30, 0x71, 0xdb, 0xed, 0xb8, 0xdb, - 0xbc, 0x29, 0x7a, 0x92, 0xb6, 0xc3, 0x31, 0x3a, 0x65, 0xdb, 0x04, 0xc7, 0x7e, 0xd7, 0xbf, 0xdb, - 0x20, 0x60, 0x6f, 0xa8, 0xcd, 0x66, 0x38, 0x67, 0xb3, 0x99, 0x94, 0xb5, 0x0f, 0xe3, 0x66, 0x23, - 0xb7, 0x18, 0xeb, 0xd7, 0x01, 0xbf, 0x91, 0xbd, 0x0a, 0x23, 0x36, 0xdf, 0x16, 0xa7, 0x5f, 0x21, - 0x99, 0x37, 0x01, 0x42, 0xf4, 0x8e, 0x21, 0x1c, 0x14, 0xd4, 0x78, 0x33, 0xdc, 0xf1, 0xb6, 0x22, - 0xd9, 0x3b, 0xb1, 0xa0, 0x26, 0xc1, 0x9a, 0xa0, 0x26, 0x21, 0xa6, 0xb2, 0x81, 0x60, 0x62, 0x43, - 0xb6, 0x57, 0xea, 0xb2, 0xd3, 0x54, 0x0f, 0xdb, 0x2b, 0xda, 0xce, 0x16, 0x18, 0x62, 0x96, 0xc0, - 0xc6, 0xa9, 0xd9, 0xc0, 0x89, 0x14, 0xdf, 0xe8, 0x69, 0x6a, 0x12, 0xd0, 0x54, 0x60, 0x25, 0xa8, - 0xac, 0x0e, 0xe3, 0xab, 0xe2, 0x1a, 0xec, 0x2d, 0xbb, 0x8d, 0x1d, 0xd5, 0x49, 0x6a, 0x5b, 0xd5, - 0x4a, 0x92, 0xcd, 0x84, 0x23, 0xb0, 0x21, 0x80, 0xba, 0x0a, 0x48, 0xc3, 0x65, 0x1b, 0x30, 0x5e, - 0xe7, 0x8d, 0x80, 0x47, 0xf5, 0xc8, 0x0f, 0x78, 0xea, 0x94, 0xd0, 0x4a, 0x96, 0x9e, 0x53, 0x37, - 0xf1, 0x10, 0x81, 0x4e, 0x28, 0xa0, 0x3a, 0x57, 0x0d, 0x99, 0xae, 0x54, 0x6d, 0x3f, 0xd8, 0x5f, - 0x59, 0x92, 0x27, 0x47, 0x22, 0x66, 0x10, 0x58, 0xbf, 0x52, 0x09, 0x48, 0x73, 0xd3, 0xbc, 0x52, - 0x11, 0x16, 0x8e, 0xd4, 0x4a, 0x1d, 0x85, 0x53, 0x79, 0x8e, 0x4c, 0x27, 0xbd, 0x8c, 0x60, 0x6d, - 0xa4, 0x9a, 0x21, 0x8a, 0xb6, 0xc6, 0x48, 0x49, 0x2c, 0xd6, 0x05, 0xa6, 0x46, 0x8d, 0x24, 0xc6, - 0x16, 0x0f, 0x43, 0x79, 0xbc, 0x9c, 0x4e, 0x0d, 0x7e, 0x82, 0xb0, 0xf4, 0x92, 0x64, 0x7e, 0x46, - 0x4d, 0x03, 0x79, 0x8b, 0x16, 0x85, 0x5a, 0x3d, 0x39, 0xbc, 0xc5, 0x4e, 0xb2, 0xfa, 0x28, 0xe2, - 0x41, 0xc7, 0x6d, 0xc5, 0x5a, 0x4a, 0xdc, 0x49, 0xb8, 0x84, 0x9a, 0x03, 0xad, 0x21, 0xb3, 0x65, - 0x98, 0xac, 0x86, 0x61, 0xaf, 0xcd, 0x6d, 0xbf, 0xc5, 0xab, 0xf6, 0x1d, 0x3c, 0x8a, 0xc6, 0x96, - 0xce, 0x3c, 0x3e, 0x58, 0x3c, 0xed, 0x62, 0x81, 0x13, 0xf8, 0x2d, 0xee, 0xb8, 0x81, 0x3e, 0xbb, - 0x4d, 0x1a, 0x76, 0x17, 0xe0, 0x6e, 0x97, 0x77, 0xea, 0xdc, 0x0d, 0x1a, 0x3b, 0xa9, 0x93, 0x27, - 0x29, 0x58, 0x7a, 0x56, 0x7e, 0xe1, 0x9c, 0xdf, 0xe5, 0x9d, 0x10, 0x61, 0x7a, 0xab, 0x12, 0x4c, - 0xf6, 0x00, 0xa6, 0xd7, 0xaa, 0xb7, 0x6b, 0x7e, 0xcb, 0x6b, 0xec, 0x4b, 0x61, 0x6e, 0x0a, 0x75, - 0xb7, 0x27, 0x25, 0xd7, 0x54, 0x29, 0x6d, 0x4f, 0x9e, 0xdb, 0x76, 0xba, 0x08, 0x75, 0xa4, 0x48, - 0x97, 0xe6, 0xc2, 0xbe, 0x24, 0xe6, 0x60, 0x28, 0xe4, 0xd3, 0x0d, 0x77, 0x9b, 0xee, 0x14, 0xc9, - 0x9d, 0xb3, 0xfa, 0xa0, 0x7e, 0x51, 0x2b, 0x25, 0xc9, 0x69, 0x81, 0x26, 0x22, 0x42, 0x9d, 0xc8, - 0xdd, 0x0e, 0xcd, 0x89, 0x18, 0x63, 0xb3, 0x9b, 0x00, 0x2b, 0x7e, 0xa3, 0xd7, 0xe6, 0x9d, 0x68, - 0x65, 0x69, 0xbe, 0x62, 0xde, 0xa5, 0xe2, 0x82, 0x64, 0x6b, 0x6b, 0xfa, 0x0d, 0x63, 0x26, 0x6a, - 0xd4, 0xec, 0x07, 0xe1, 0x84, 0xb6, 0x72, 0xb4, 0x59, 0x34, 0x83, 0x6c, 0x9f, 0xcd, 0xae, 0x44, - 0x6d, 0x22, 0x9d, 0x97, 0x35, 0x9c, 0xd5, 0xd6, 0x64, 0xfe, 0x5c, 0xca, 0xaf, 0x64, 0xe1, 0x0b, - 0x50, 0x49, 0x77, 0xc3, 0x31, 0x95, 0x9b, 0x93, 0x95, 0x29, 0xad, 0xef, 0x57, 0x1f, 0x79, 0x61, - 0x14, 0x5a, 0xdf, 0x34, 0xd6, 0xbf, 0xd8, 0x9b, 0x6e, 0xf1, 0xfd, 0x5a, 0xc0, 0xb7, 0xbc, 0x47, - 0xfa, 0xb1, 0xb9, 0xcb, 0xf7, 0x9d, 0x2e, 0x42, 0xf5, 0xbd, 0x29, 0x46, 0x65, 0x9f, 0x81, 0xf2, - 0xad, 0xdb, 0xf5, 0x5b, 0x7c, 0x7f, 0x6d, 0x45, 0x9e, 0xdc, 0x44, 0xd6, 0x0e, 0x1d, 0x41, 0x6a, - 0xcc, 0xf4, 0x18, 0xd3, 0x5a, 0x4a, 0xf6, 0x61, 0x51, 0xf3, 0x72, 0xab, 0x17, 0x46, 0x3c, 0x58, - 0x5b, 0xd1, 0x6b, 0x6e, 0x10, 0x30, 0xb5, 0x2b, 0xc6, 0xa8, 0xd6, 0xff, 0x57, 0xc4, 0x3d, 0x58, - 0x2c, 0xb7, 0xb5, 0x4e, 0x18, 0xb9, 0x9d, 0x06, 0x8f, 0x19, 0xe0, 0x72, 0xf3, 0x24, 0x34, 0xb5, - 0xdc, 0x12, 0x64, 0xb3, 0xea, 0xe2, 0xc0, 0x55, 0x93, 0xac, 0x40, 0x5a, 0xad, 0xb5, 0x15, 0x5d, - 0xf5, 0xae, 0x1e, 0x7f, 0x52, 0x55, 0x26, 0xc8, 0xec, 0x1c, 0x8c, 0xae, 0x55, 0x6f, 0x57, 0x7b, - 0xd1, 0x0e, 0x9e, 0x00, 0x65, 0xba, 0xb0, 0x88, 0xb5, 0xe2, 0xf6, 0xa2, 0x1d, 0x5b, 0x15, 0xb2, - 0x4b, 0x78, 0x11, 0xec, 0xf0, 0x88, 0x54, 0xf4, 0xf2, 0xc8, 0x0f, 0x09, 0x94, 0xba, 0x07, 0x0a, - 0x10, 0x7b, 0x05, 0x86, 0xef, 0xd7, 0x96, 0xd7, 0x56, 0xa4, 0xde, 0x03, 0xcf, 0xc1, 0xbd, 0x6e, - 0xc3, 0x6c, 0x09, 0xa1, 0xb0, 0x55, 0x98, 0xaa, 0xf3, 0x46, 0x2f, 0xf0, 0x22, 0xba, 0xda, 0x87, - 0xf3, 0xa3, 0x58, 0x07, 0xee, 0x33, 0xa1, 0x2c, 0x21, 0x3d, 0x80, 0x5e, 0x57, 0x8a, 0xc8, 0xfa, - 0xcd, 0x42, 0xb2, 0x49, 0xb3, 0x73, 0x86, 0x9c, 0x87, 0x7a, 0x3d, 0x21, 0xd0, 0xe8, 0x7a, 0x3d, - 0x94, 0xf8, 0x6c, 0x60, 0xcb, 0xbd, 0x30, 0xf2, 0xdb, 0xab, 0x9d, 0x66, 0xd7, 0xf7, 0x3a, 0x11, - 0x52, 0x51, 0xe7, 0x5b, 0x8f, 0x0f, 0x16, 0x9f, 0x6b, 0x60, 0xa9, 0xc3, 0x65, 0xb1, 0x93, 0xe2, - 0x92, 0x43, 0xfd, 0x31, 0xc6, 0xc3, 0xfa, 0x47, 0x45, 0xe3, 0x70, 0x15, 0xcd, 0xb3, 0x79, 0xb7, - 0xe5, 0x35, 0x50, 0x21, 0x83, 0x1f, 0x1a, 0xcf, 0x2a, 0x6c, 0x5e, 0x90, 0x94, 0x52, 0x0f, 0x99, - 0xbc, 0x73, 0xa8, 0xd9, 0x17, 0x61, 0x42, 0xc8, 0x39, 0xf2, 0x67, 0x38, 0x5f, 0xc4, 0xce, 0x7e, - 0x16, 0x35, 0xb4, 0x21, 0x0f, 0x62, 0x36, 0x86, 0x80, 0xa4, 0x53, 0xb0, 0x26, 0xcc, 0x6f, 0x04, - 0x6e, 0x27, 0xf4, 0xa2, 0xd5, 0x4e, 0x23, 0xd8, 0x47, 0xb9, 0x6c, 0xb5, 0xe3, 0x6e, 0xb6, 0x78, - 0x53, 0x4a, 0x9a, 0xe7, 0x1f, 0x1f, 0x2c, 0xbe, 0x18, 0x11, 0x8e, 0xc3, 0x63, 0x24, 0x87, 0x13, - 0x96, 0xc6, 0xb9, 0x2f, 0x27, 0x21, 0xc7, 0xa9, 0x6e, 0xc5, 0x07, 0x3a, 0x12, 0x51, 0x50, 0x8e, - 0x8b, 0x47, 0x43, 0x6c, 0x75, 0x7a, 0x33, 0x75, 0x02, 0xeb, 0x6e, 0x9f, 0x8d, 0x12, 0x17, 0x9a, - 0x00, 0x69, 0x33, 0x84, 0x16, 0x1a, 0xee, 0x86, 0xa9, 0x11, 0x4e, 0x50, 0xad, 0x7f, 0x5d, 0x48, - 0xe4, 0x09, 0xf6, 0x2e, 0x8c, 0xcb, 0x25, 0xa8, 0xb1, 0xc1, 0x03, 0x41, 0xad, 0xd7, 0x14, 0x23, - 0x1d, 0x9d, 0xbd, 0x0e, 0xa3, 0xd5, 0xe5, 0x75, 0x6d, 0xb2, 0xa1, 0x66, 0xc5, 0x6d, 0xb4, 0xd2, - 0x54, 0x0a, 0x4d, 0xcc, 0xaa, 0x8d, 0xf5, 0xba, 0xd9, 0xcd, 0x38, 0xab, 0xa2, 0x56, 0x98, 0xd3, - 0xaf, 0x1a, 0xf2, 0xc7, 0xef, 0xc9, 0xff, 0xa9, 0x90, 0x27, 0xb6, 0xb0, 0x25, 0x98, 0x7c, 0xe0, - 0x07, 0xbb, 0x38, 0x61, 0xb4, 0x4e, 0xc0, 0xa9, 0xf4, 0x50, 0x15, 0xa4, 0x3f, 0xc8, 0x24, 0xd1, - 0xdb, 0xa6, 0xf5, 0x86, 0xd9, 0xb6, 0x14, 0x07, 0x83, 0x40, 0x8c, 0x43, 0xcc, 0x31, 0x5e, 0x6e, - 0x38, 0x0e, 0x49, 0x13, 0x8c, 0x35, 0xa1, 0xa3, 0x5b, 0x7f, 0xa7, 0xa0, 0x8b, 0x27, 0xa2, 0x93, - 0x57, 0xfc, 0xb6, 0xeb, 0x75, 0xb4, 0xcf, 0xa1, 0x57, 0x4c, 0x84, 0xa6, 0x5b, 0xa2, 0x21, 0xb3, - 0x2b, 0x50, 0xa6, 0x5f, 0xf1, 0xe6, 0x8d, 0x5a, 0x4e, 0x49, 0x68, 0x9e, 0x3c, 0x0a, 0x31, 0x33, - 0x32, 0xa5, 0xe3, 0x8e, 0xcc, 0x6f, 0x14, 0x74, 0xc9, 0xe2, 0xa3, 0x9e, 0x5e, 0xa9, 0x53, 0xab, - 0x78, 0x9c, 0x53, 0xeb, 0x63, 0x7f, 0xc2, 0x6f, 0x15, 0x60, 0x5c, 0xd3, 0x03, 0x89, 0x6f, 0xa8, - 0x05, 0xfe, 0x87, 0xbc, 0x11, 0x99, 0xdf, 0xd0, 0x25, 0x60, 0xea, 0x1b, 0x62, 0xd4, 0x8f, 0xf3, - 0x0d, 0xcb, 0x30, 0x5a, 0x6d, 0xb5, 0x7c, 0x71, 0x4d, 0xa0, 0x3b, 0xd4, 0x94, 0x92, 0xfa, 0x08, - 0xba, 0x74, 0x5a, 0xbd, 0x30, 0xb9, 0x02, 0x60, 0x88, 0x66, 0x8a, 0xd2, 0xfa, 0xd9, 0x42, 0xcc, - 0x25, 0xd3, 0x29, 0x85, 0x63, 0x76, 0x8a, 0xb8, 0xc4, 0xab, 0xdf, 0x77, 0xf7, 0x78, 0x10, 0x78, - 0x4d, 0xb5, 0x34, 0xf0, 0x12, 0x1f, 0x33, 0xf1, 0x65, 0xa1, 0x7e, 0x89, 0x4f, 0x13, 0x5a, 0xff, - 0xaa, 0x20, 0x6f, 0xb4, 0x03, 0x1f, 0x8b, 0xe6, 0x11, 0x56, 0x3c, 0x8e, 0x48, 0xf1, 0x45, 0x18, - 0xb6, 0x79, 0xd3, 0x0b, 0x65, 0x4f, 0xce, 0xe8, 0xb7, 0x67, 0x2c, 0x48, 0xa4, 0xdc, 0x40, 0xfc, - 0xd4, 0xe5, 0x01, 0x2c, 0x17, 0xd7, 0x8e, 0xb5, 0xf0, 0x5a, 0x8b, 0x3f, 0xf2, 0x68, 0xaf, 0x91, - 0xa2, 0x09, 0x8a, 0x03, 0x5e, 0xe8, 0x6c, 0x89, 0x12, 0x29, 0xb3, 0xea, 0xfb, 0x8a, 0x41, 0x63, - 0x7d, 0x09, 0x20, 0xa9, 0x52, 0x74, 0xa7, 0x9c, 0xec, 0x5e, 0x67, 0x9b, 0x04, 0x4f, 0xd9, 0x07, - 0xd8, 0x9d, 0x8d, 0xb8, 0x4c, 0xde, 0x11, 0xf4, 0xee, 0x4c, 0x13, 0x5a, 0xff, 0x7b, 0x09, 0x8a, - 0x55, 0x9c, 0x6f, 0xb7, 0xf8, 0x7e, 0xe4, 0x6e, 0x5e, 0xf3, 0x5a, 0xc6, 0x5e, 0xb1, 0x8b, 0x50, - 0x67, 0xcb, 0x33, 0xf4, 0x5d, 0x1a, 0xb2, 0xd8, 0x2b, 0x6e, 0x05, 0x9b, 0x6f, 0x22, 0xa1, 0xb6, - 0x57, 0xec, 0x06, 0x9b, 0x6f, 0xa6, 0xc9, 0x62, 0x44, 0x66, 0xc1, 0x08, 0xed, 0x1b, 0x72, 0x89, - 0xc1, 0xe3, 0x83, 0xc5, 0x11, 0xda, 0x5e, 0x6c, 0x59, 0xc2, 0x4e, 0x43, 0xa9, 0x5e, 0xbb, 0x23, - 0x37, 0x78, 0xd4, 0x2b, 0x87, 0xdd, 0x8e, 0x2d, 0x60, 0xa2, 0xce, 0xf5, 0x95, 0x6a, 0x0d, 0xd5, - 0x36, 0xc3, 0x49, 0x9d, 0xad, 0xa6, 0xdb, 0x4d, 0x2b, 0x6e, 0x62, 0x44, 0xf6, 0x79, 0x18, 0xbf, - 0xb5, 0xb2, 0x7c, 0xc3, 0x0f, 0x69, 0x73, 0x1e, 0x49, 0xa6, 0xf1, 0x6e, 0xb3, 0x81, 0x2a, 0xa4, - 0xcc, 0x29, 0xa7, 0xe1, 0x33, 0x07, 0x4e, 0x0a, 0x56, 0x62, 0x48, 0xbc, 0x06, 0x97, 0x2a, 0x84, - 0x3b, 0xc9, 0x33, 0xd7, 0xcb, 0x8f, 0x0f, 0x16, 0x5f, 0xc0, 0x16, 0x84, 0x84, 0xe2, 0x28, 0xe5, - 0x43, 0x8a, 0x6b, 0x1f, 0x36, 0xec, 0x2b, 0x70, 0x22, 0x5b, 0x52, 0x8f, 0x9f, 0xc7, 0xce, 0x3d, - 0x3e, 0x58, 0xb4, 0x72, 0xf9, 0x87, 0xc6, 0xfc, 0xcd, 0x67, 0x62, 0x7d, 0xab, 0x08, 0xe3, 0x9a, - 0x9e, 0x98, 0x7d, 0x46, 0xda, 0x4a, 0x14, 0x8c, 0xeb, 0xa6, 0x86, 0x21, 0x4a, 0x49, 0xa9, 0xd8, - 0xf6, 0x9b, 0x5c, 0x5a, 0x4e, 0x24, 0xda, 0xb2, 0xe2, 0x20, 0xda, 0xb2, 0xb7, 0x00, 0x68, 0x0a, - 0x63, 0x3f, 0x69, 0xd2, 0xa3, 0x66, 0x32, 0xa5, 0x4f, 0xab, 0x04, 0x99, 0xdd, 0x87, 0xd9, 0x8d, - 0xa0, 0x17, 0x46, 0xf5, 0xfd, 0x30, 0xe2, 0x6d, 0xc1, 0xad, 0xe6, 0xfb, 0x2d, 0xb9, 0x7c, 0x5e, - 0x14, 0xb7, 0x3e, 0xb4, 0xf3, 0x72, 0x42, 0x2c, 0xc7, 0x06, 0x38, 0x5d, 0xdf, 0xd7, 0x75, 0x68, - 0x79, 0x0c, 0x2c, 0x1b, 0x26, 0x74, 0x0d, 0x9c, 0x38, 0xf7, 0xe5, 0xbb, 0xb2, 0x7c, 0xea, 0xd1, - 0xce, 0x7d, 0xd9, 0xca, 0xec, 0x3b, 0xb7, 0x49, 0x62, 0x7d, 0x46, 0x57, 0x48, 0x0f, 0xba, 0x2f, - 0x59, 0xff, 0x56, 0x21, 0xd9, 0xe4, 0xef, 0xbf, 0xc1, 0xde, 0x81, 0x11, 0x7a, 0xc7, 0x97, 0xe6, - 0x0e, 0x27, 0x62, 0x0d, 0x8a, 0xfe, 0xc8, 0x4f, 0x2f, 0x41, 0xbf, 0x43, 0xb6, 0x3e, 0x9f, 0xb2, - 0x25, 0x49, 0xfc, 0x88, 0x64, 0xea, 0x93, 0x15, 0x77, 0x7c, 0x2e, 0x79, 0x23, 0xef, 0x11, 0xc9, - 0xfa, 0xad, 0x61, 0x98, 0x32, 0xd1, 0xf4, 0xc7, 0xfe, 0xc2, 0x40, 0x8f, 0xfd, 0x5f, 0x84, 0xb2, - 0x9c, 0x6f, 0x4a, 0x00, 0x7f, 0x11, 0x9f, 0xd6, 0x24, 0xcc, 0x30, 0x62, 0x01, 0x1a, 0x0e, 0xdb, - 0x6f, 0x71, 0x3b, 0xa6, 0x62, 0x97, 0xb5, 0x47, 0xe3, 0x52, 0x22, 0x42, 0x2a, 0xb5, 0xae, 0xbe, - 0x9c, 0xe3, 0xe7, 0xe3, 0xd7, 0x60, 0x44, 0x5c, 0xe7, 0x62, 0x7d, 0x1f, 0xb6, 0x52, 0xdc, 0xf4, - 0x52, 0xd6, 0x6a, 0x84, 0xc4, 0x1e, 0x40, 0x79, 0xdd, 0x0d, 0xa3, 0x3a, 0xe7, 0x9d, 0x01, 0xcc, - 0x78, 0x16, 0x65, 0x57, 0xcd, 0xa2, 0x8d, 0x4c, 0xc8, 0x79, 0x27, 0x65, 0x87, 0x11, 0x33, 0x63, - 0x5f, 0x05, 0x58, 0xf6, 0x3b, 0x51, 0xe0, 0xb7, 0xd6, 0xfd, 0xed, 0xf9, 0x11, 0x54, 0xb4, 0x3c, - 0x97, 0x1a, 0x80, 0x04, 0x81, 0x74, 0x2d, 0xb1, 0x36, 0xb1, 0x41, 0x05, 0x4e, 0xcb, 0xdf, 0xd6, - 0xd7, 0x41, 0x82, 0xcf, 0xae, 0x41, 0x45, 0x69, 0xb1, 0xee, 0x75, 0xb7, 0x03, 0x9c, 0x20, 0xa3, - 0x89, 0x5c, 0xc8, 0x1f, 0x45, 0x4e, 0x4f, 0xc2, 0x8d, 0x73, 0x33, 0x45, 0xc3, 0xbe, 0x02, 0xa7, - 0xd2, 0x30, 0x35, 0xca, 0xe5, 0xe4, 0x0a, 0xa6, 0xb3, 0xcb, 0x99, 0xf7, 0xfd, 0x58, 0xb0, 0xeb, - 0x30, 0x2d, 0x3a, 0xe4, 0x36, 0x77, 0xc3, 0x1e, 0xd9, 0x5a, 0x4a, 0x3d, 0xa0, 0xb2, 0x52, 0x90, - 0xab, 0xb0, 0xe5, 0x37, 0x76, 0x35, 0x24, 0x3b, 0x4d, 0xc5, 0xae, 0xc2, 0x38, 0x19, 0xcf, 0x04, - 0x6b, 0x9d, 0x2d, 0x5f, 0xbe, 0x3b, 0xa9, 0xe7, 0x18, 0x59, 0x72, 0xff, 0xb2, 0x28, 0xb3, 0x75, - 0x44, 0xeb, 0xa0, 0x08, 0x27, 0xf3, 0xeb, 0x60, 0x7f, 0x06, 0x4e, 0xc8, 0xfe, 0x6c, 0xf1, 0x40, - 0xc3, 0x19, 0xc0, 0xac, 0xe8, 0x35, 0x39, 0x4e, 0xcf, 0x37, 0x62, 0x06, 0xf1, 0x86, 0x23, 0x58, - 0xa4, 0x26, 0x45, 0x7e, 0x3d, 0xec, 0xeb, 0x30, 0xae, 0x57, 0x5b, 0x1c, 0xdc, 0x42, 0xeb, 0x90, - 0xba, 0x74, 0x96, 0xcc, 0x85, 0x69, 0x9b, 0x7f, 0xa3, 0xc7, 0xc3, 0x48, 0xd9, 0x88, 0x49, 0x89, - 0xe5, 0x74, 0xa6, 0x16, 0x85, 0x10, 0x2b, 0x29, 0x2b, 0x01, 0x51, 0x3a, 0xca, 0x50, 0xf8, 0x3b, - 0x82, 0x7d, 0x9a, 0x9f, 0xf5, 0xbd, 0x22, 0x9c, 0xea, 0x33, 0x9d, 0xc5, 0x8e, 0xa7, 0x49, 0x86, - 0xb8, 0xe3, 0xa5, 0x04, 0x42, 0x32, 0x30, 0x3d, 0x0b, 0x45, 0x29, 0x81, 0x0d, 0x2d, 0x55, 0x1e, - 0x1f, 0x2c, 0x4e, 0x18, 0x2b, 0xb5, 0xb8, 0xb6, 0xc2, 0x6e, 0xc2, 0x90, 0xe8, 0x86, 0x01, 0xec, - 0xa4, 0x94, 0x8a, 0x7a, 0x2a, 0xf2, 0xf4, 0x0d, 0x02, 0xfb, 0x06, 0x79, 0xb0, 0xcf, 0x40, 0x69, - 0x63, 0x63, 0x1d, 0x77, 0x87, 0x12, 0xce, 0xee, 0xc9, 0x28, 0x6a, 0x19, 0x9b, 0xd1, 0xa4, 0xa0, - 0x8d, 0x7b, 0xc4, 0x16, 0xe8, 0xec, 0x83, 0x94, 0xfd, 0xe6, 0x2b, 0x87, 0x2f, 0xe5, 0xc1, 0xcd, - 0x39, 0x3f, 0x86, 0x15, 0xa5, 0xf5, 0xed, 0x82, 0x32, 0x55, 0x93, 0x93, 0x9f, 0x9d, 0x55, 0xeb, - 0x04, 0x15, 0x19, 0x92, 0x8b, 0x0e, 0x62, 0xcf, 0x01, 0xd0, 0xcf, 0x7b, 0xf7, 0x64, 0xa7, 0x4f, - 0xd8, 0x1a, 0x84, 0xbd, 0x1d, 0xb3, 0x94, 0x8a, 0xe7, 0x12, 0x4a, 0x02, 0xa9, 0xb5, 0x46, 0x65, - 0xb6, 0x89, 0x6a, 0xfd, 0x7a, 0x31, 0x39, 0x35, 0xae, 0x79, 0xad, 0x88, 0x07, 0x6c, 0x81, 0x0e, - 0x81, 0xe4, 0xb2, 0x66, 0xc7, 0xbf, 0xd9, 0x7c, 0x72, 0xa2, 0xd0, 0xa7, 0xc5, 0x47, 0xc7, 0x2b, - 0xda, 0xd1, 0x51, 0xc2, 0xa3, 0x63, 0xaa, 0xef, 0x21, 0xf1, 0x4a, 0xce, 0x4e, 0x88, 0x5b, 0x7f, - 0xce, 0x6e, 0xf7, 0x22, 0x4c, 0xde, 0xf1, 0x57, 0x1f, 0x45, 0x31, 0xa2, 0xd8, 0xf2, 0xcb, 0xb6, - 0x09, 0x14, 0x1c, 0xef, 0xb6, 0x9a, 0x3c, 0xd8, 0xd8, 0x71, 0x3b, 0x86, 0x6d, 0x93, 0x9d, 0x81, - 0x0b, 0xdc, 0x3b, 0xfc, 0xa1, 0x89, 0x4b, 0x26, 0x54, 0x19, 0x78, 0x7a, 0x70, 0xca, 0x99, 0xc1, - 0xb1, 0x7e, 0xb6, 0xa8, 0xba, 0xeb, 0xfe, 0xe5, 0xa7, 0xd4, 0x6e, 0xe5, 0x4d, 0xc3, 0x6e, 0x65, - 0x36, 0x7e, 0xde, 0x8a, 0x4d, 0xc6, 0x2e, 0xe7, 0x5a, 0xad, 0xc4, 0xf6, 0x67, 0x23, 0xf9, 0xf6, - 0x67, 0xbf, 0x5b, 0x86, 0x09, 0x9d, 0x89, 0xe8, 0x9d, 0x6a, 0xb3, 0x19, 0xe8, 0xbd, 0xe3, 0x36, - 0x9b, 0x81, 0x8d, 0x50, 0xc3, 0xdc, 0xac, 0x74, 0xa8, 0xb9, 0xd9, 0xd7, 0x60, 0x6c, 0xb9, 0xdd, - 0x34, 0xcc, 0x4a, 0xac, 0x9c, 0x46, 0x5f, 0x8c, 0x91, 0x68, 0x4d, 0xc7, 0x6f, 0x39, 0x8d, 0x76, - 0x33, 0x6b, 0x4c, 0x92, 0xb0, 0x34, 0x2c, 0xd5, 0x86, 0x3f, 0x8e, 0xa5, 0xda, 0x55, 0x18, 0xbb, - 0x17, 0xf2, 0x8d, 0x5e, 0xa7, 0xc3, 0x5b, 0xd8, 0x4b, 0x65, 0xd2, 0x19, 0xf4, 0x42, 0xee, 0x44, - 0x08, 0xd5, 0x1b, 0x10, 0xa3, 0xea, 0xc3, 0x3e, 0x7a, 0xc8, 0xb0, 0x5f, 0x81, 0x72, 0x8d, 0xf3, - 0x00, 0xfb, 0x74, 0x3c, 0xb9, 0x3b, 0x75, 0x39, 0x0f, 0x1c, 0xd1, 0xb1, 0x86, 0x05, 0x9b, 0x44, - 0x34, 0xcc, 0xde, 0x26, 0x06, 0x35, 0x7b, 0x7b, 0x1e, 0x26, 0xba, 0xbd, 0xcd, 0x96, 0xd7, 0x40, - 0xbe, 0xd2, 0x5e, 0xce, 0x1e, 0x27, 0x98, 0x60, 0x1b, 0xb2, 0x0f, 0x60, 0x12, 0x75, 0x25, 0xf1, - 0x44, 0x9c, 0x32, 0x0e, 0x7c, 0xa3, 0x8c, 0x64, 0xf2, 0x86, 0x00, 0x39, 0x39, 0x36, 0xa3, 0x26, - 0x23, 0x76, 0x13, 0x46, 0xb7, 0xbd, 0xc8, 0xd9, 0xe9, 0x6d, 0xce, 0x4f, 0x1b, 0x06, 0x97, 0xd7, - 0xbd, 0xe8, 0x46, 0x6f, 0x93, 0x86, 0x3c, 0x66, 0x8d, 0x3b, 0xf7, 0xb6, 0x17, 0xed, 0xf4, 0x74, - 0x75, 0xc8, 0xc8, 0x36, 0xe2, 0xa6, 0xed, 0xf7, 0x2a, 0x87, 0xdb, 0xef, 0xcd, 0x98, 0xf6, 0x7b, - 0xcc, 0x01, 0x96, 0xf5, 0x74, 0x99, 0x67, 0xd8, 0xa8, 0xd7, 0x2f, 0x2a, 0x5f, 0x94, 0x8b, 0x19, - 0x17, 0x99, 0x8b, 0x7b, 0x6f, 0x5c, 0x5c, 0x56, 0xc0, 0x6b, 0x12, 0x68, 0xcf, 0x34, 0xd2, 0x20, - 0x56, 0x87, 0x8a, 0xd7, 0x6e, 0xf7, 0x22, 0x77, 0xb3, 0xc5, 0xe5, 0x14, 0x9d, 0x9f, 0x35, 0xec, - 0xa6, 0x8c, 0x09, 0xbe, 0xa6, 0x70, 0xb5, 0x69, 0x6e, 0x4f, 0x7b, 0x26, 0x74, 0xa1, 0x0e, 0x53, - 0xe6, 0x4a, 0x78, 0x02, 0x66, 0x2c, 0x0b, 0x4b, 0x30, 0x97, 0x57, 0xfb, 0x31, 0x1f, 0xdd, 0xc8, - 0x10, 0xb2, 0x5c, 0x19, 0xbb, 0x39, 0x54, 0x86, 0xca, 0x38, 0x99, 0x40, 0xda, 0x50, 0x8b, 0xe7, - 0x95, 0xcd, 0x6e, 0xf5, 0x36, 0x79, 0xd0, 0xe1, 0x11, 0x0f, 0xa5, 0xc6, 0x23, 0xb4, 0x87, 0xaa, - 0xdd, 0x6e, 0x68, 0xfd, 0xcd, 0x22, 0x8c, 0x56, 0x1f, 0xd4, 0xf1, 0x0c, 0x7d, 0x55, 0x37, 0x1a, - 0x28, 0x24, 0x6e, 0x00, 0x89, 0xd1, 0x80, 0x6e, 0x2a, 0x70, 0x29, 0x47, 0x25, 0x87, 0xee, 0x3f, - 0x9a, 0x4a, 0xce, 0x50, 0xc4, 0x25, 0xf6, 0x13, 0xa5, 0x01, 0xec, 0x27, 0xe2, 0x47, 0xa6, 0xa1, - 0xa3, 0x1f, 0x99, 0xde, 0x81, 0xf1, 0xb5, 0x4e, 0xc4, 0xb7, 0x83, 0x64, 0xb7, 0x89, 0xd5, 0x83, - 0x31, 0x58, 0xd7, 0x63, 0x68, 0xd8, 0x62, 0x29, 0xd3, 0xc3, 0x56, 0xfc, 0xa0, 0x85, 0x4b, 0x99, - 0xde, 0xbf, 0x52, 0xba, 0x5d, 0x85, 0x68, 0xad, 0xa4, 0xd6, 0xa9, 0x32, 0x9b, 0x2b, 0x98, 0x1a, - 0x46, 0xea, 0xd8, 0xa5, 0x99, 0x7c, 0xb3, 0x39, 0xeb, 0x2f, 0x17, 0x60, 0x2e, 0x6f, 0xf9, 0xb1, - 0x2f, 0xc0, 0x84, 0x1f, 0x6c, 0xbb, 0x1d, 0xef, 0x4f, 0xd1, 0x17, 0x69, 0x0f, 0x10, 0x3a, 0x5c, - 0xd7, 0x30, 0xea, 0x70, 0xd1, 0x21, 0xda, 0x97, 0x9b, 0xfa, 0xd2, 0xdc, 0x0e, 0xd1, 0xc0, 0xd6, - 0xcf, 0x15, 0x61, 0xbc, 0xda, 0xed, 0x3e, 0xe5, 0xd6, 0xe5, 0x9f, 0x33, 0x8e, 0x63, 0xa5, 0xcf, - 0x89, 0xbf, 0xeb, 0x10, 0x3b, 0xd2, 0xa3, 0x4e, 0xe4, 0xff, 0xbe, 0x04, 0xd3, 0x29, 0x3e, 0xfa, - 0x37, 0x15, 0x06, 0x34, 0x06, 0x2f, 0x0e, 0x68, 0x0c, 0x5e, 0x1a, 0xcc, 0x18, 0x7c, 0xe8, 0xe3, - 0x1c, 0xb1, 0x2f, 0x43, 0xa9, 0xda, 0xed, 0xa6, 0x6d, 0xa2, 0xba, 0xdd, 0xfb, 0x57, 0x48, 0xd1, - 0xe8, 0x76, 0xbb, 0xb6, 0xc0, 0x30, 0xce, 0xbd, 0x91, 0x8f, 0x68, 0xee, 0x3d, 0x7a, 0xf8, 0x71, - 0x51, 0x1e, 0xe8, 0xb8, 0x18, 0x7b, 0x62, 0xc7, 0x85, 0xf5, 0x1a, 0x8c, 0xe1, 0xa7, 0xa2, 0xcd, - 0xf5, 0x59, 0xc0, 0x7d, 0x51, 0x9a, 0x5b, 0x1b, 0x5d, 0x21, 0x77, 0xcc, 0x3f, 0x2c, 0xc0, 0x30, - 0xfe, 0x7e, 0x4a, 0x17, 0xc6, 0x65, 0x63, 0x61, 0x54, 0xb4, 0x85, 0xd1, 0x77, 0x49, 0x68, 0x93, - 0xff, 0x6f, 0x94, 0x00, 0x96, 0xef, 0xda, 0x75, 0x52, 0x97, 0xb3, 0x6b, 0x30, 0xed, 0xb6, 0x5a, - 0xfe, 0x43, 0xde, 0x74, 0xfc, 0xc0, 0xdb, 0xf6, 0x3a, 0xd4, 0x73, 0xca, 0x8e, 0xc8, 0x2c, 0xd2, - 0xdf, 0xf7, 0x65, 0xd1, 0x5d, 0x2a, 0xd1, 0xf9, 0xb4, 0x79, 0xb4, 0xe3, 0x37, 0x95, 0xe6, 0xcc, - 0xe0, 0x23, 0x8b, 0x72, 0xf8, 0xdc, 0xa6, 0x12, 0x9d, 0xcf, 0x0e, 0x6a, 0x02, 0xd5, 0x35, 0xca, - 0xe0, 0x23, 0x8b, 0x72, 0xf8, 0x90, 0xfa, 0x30, 0x64, 0xeb, 0x80, 0xaf, 0x41, 0x0f, 0x9d, 0x46, - 0xc0, 0x9b, 0xbc, 0x13, 0x79, 0x6e, 0x2b, 0x94, 0xba, 0x56, 0x7c, 0x54, 0xc8, 0x14, 0xea, 0xba, - 0x26, 0x2c, 0x5c, 0x4e, 0xca, 0xd8, 0x45, 0x18, 0x6d, 0xbb, 0x8f, 0x1c, 0x77, 0x9b, 0x2c, 0xea, - 0x26, 0x49, 0x37, 0x27, 0x41, 0xfa, 0xd9, 0xd7, 0x76, 0x1f, 0x55, 0xb7, 0xb9, 0xf8, 0x0a, 0xfe, - 0xa8, 0xeb, 0x87, 0xda, 0x57, 0x8c, 0x24, 0x5f, 0x91, 0x2a, 0xd2, 0xbf, 0x42, 0x16, 0xc9, 0xaf, - 0xb0, 0x7e, 0xb9, 0x00, 0xcf, 0xac, 0x61, 0x2b, 0xa2, 0xfd, 0x65, 0xde, 0x89, 0x78, 0x50, 0xe3, - 0x41, 0xdb, 0x43, 0x0b, 0x9f, 0x3a, 0x8f, 0xd8, 0x0b, 0x50, 0xaa, 0xda, 0x77, 0xe4, 0xfc, 0xa5, - 0x43, 0xca, 0xb0, 0xf6, 0x12, 0xa5, 0xb1, 0xfa, 0xb6, 0x78, 0xc4, 0xb3, 0x52, 0x15, 0x26, 0xaa, - 0x61, 0xe8, 0x6d, 0x77, 0xda, 0xe4, 0x47, 0x58, 0x32, 0xec, 0xc9, 0x24, 0x3c, 0xf3, 0xdc, 0xab, - 0x93, 0x58, 0xff, 0x79, 0x01, 0x66, 0xaa, 0xdd, 0xae, 0xd9, 0x64, 0xd3, 0x96, 0xb1, 0x30, 0xb8, - 0x2d, 0xa3, 0x07, 0x53, 0xc6, 0xe7, 0xd2, 0x94, 0x4a, 0x6e, 0x39, 0x87, 0xf4, 0x0c, 0x35, 0xbb, - 0x1b, 0x83, 0x9c, 0xd0, 0x34, 0x85, 0x49, 0x31, 0xb6, 0xfe, 0x93, 0x32, 0xee, 0x21, 0xf2, 0x30, - 0x90, 0x0e, 0x00, 0x85, 0x1c, 0x07, 0x80, 0xb7, 0x40, 0x13, 0xcb, 0xf4, 0x73, 0x59, 0xbb, 0x18, - 0xe8, 0x8a, 0xcf, 0x04, 0x99, 0xed, 0xa6, 0x5d, 0x01, 0x4a, 0xf8, 0x35, 0x2f, 0xa4, 0x17, 0xf0, - 0x13, 0xf1, 0x02, 0xb8, 0x01, 0x6c, 0xad, 0x83, 0xe6, 0x39, 0xbc, 0xbe, 0xeb, 0x75, 0xef, 0xf3, - 0xc0, 0xdb, 0xda, 0x97, 0x0b, 0x00, 0x3b, 0xdf, 0x93, 0xa5, 0x4e, 0xb8, 0xeb, 0x75, 0x9d, 0x3d, - 0x2c, 0xb7, 0x73, 0x68, 0xd8, 0x7b, 0x30, 0x6a, 0xf3, 0x87, 0x81, 0x17, 0x29, 0x6b, 0xd2, 0xa9, - 0x58, 0x8f, 0x8f, 0x50, 0x5a, 0x0b, 0x01, 0xfd, 0xd0, 0x77, 0x45, 0x59, 0xce, 0x2e, 0x93, 0x64, - 0x45, 0x56, 0xa3, 0x93, 0xc9, 0xd7, 0x56, 0x1f, 0xd4, 0xfb, 0x09, 0x56, 0xec, 0x02, 0x0c, 0xa3, - 0x78, 0x26, 0x2f, 0x7e, 0xe8, 0x23, 0x8b, 0x17, 0x25, 0x5d, 0x76, 0x44, 0x0c, 0x54, 0x0b, 0x29, - 0xfb, 0x17, 0x75, 0xf8, 0x68, 0x90, 0xb4, 0x6c, 0x39, 0x76, 0x2c, 0xd9, 0x72, 0x1d, 0x2a, 0x36, - 0xb9, 0xdb, 0x37, 0xab, 0x5d, 0xb4, 0x89, 0x08, 0xe7, 0x01, 0x57, 0xf2, 0xd9, 0xc7, 0x07, 0x8b, - 0xcf, 0x4a, 0x57, 0xfc, 0xa6, 0xe3, 0x76, 0xc9, 0x94, 0xc2, 0xd8, 0x46, 0xd2, 0x94, 0xec, 0x2d, - 0x18, 0x12, 0x5b, 0xaf, 0x74, 0x1a, 0x50, 0x8f, 0xaf, 0xc9, 0x6e, 0x4c, 0x8b, 0xb3, 0xe1, 0x1b, - 0x7b, 0x02, 0x92, 0x30, 0x07, 0xa6, 0xcc, 0xe9, 0x2e, 0x8d, 0x35, 0xe7, 0x93, 0xfe, 0x34, 0xcb, - 0xe5, 0x8b, 0xac, 0x84, 0x39, 0x0d, 0x04, 0xea, 0x2b, 0x20, 0xb5, 0x48, 0x57, 0xa1, 0xbc, 0xb1, - 0x5c, 0xab, 0xf9, 0x41, 0x44, 0xf7, 0xda, 0xe4, 0x64, 0x11, 0x30, 0xdb, 0xed, 0x6c, 0x73, 0x12, - 0x15, 0xa2, 0x46, 0xd7, 0x11, 0x07, 0xb6, 0x21, 0x2a, 0x28, 0x52, 0xf6, 0x55, 0x38, 0x71, 0x2f, - 0xe4, 0xd5, 0xce, 0x3e, 0x0a, 0x0f, 0xda, 0x52, 0x99, 0xc2, 0xa9, 0x87, 0x6f, 0x8a, 0xe2, 0xde, - 0xef, 0x76, 0xf6, 0x1d, 0x12, 0x3a, 0xf2, 0x17, 0x4e, 0x3e, 0x17, 0x76, 0x09, 0x4a, 0xb7, 0x97, - 0x6b, 0xf2, 0x02, 0xac, 0x6c, 0xa9, 0x6f, 0x2f, 0xd7, 0x68, 0x22, 0xb5, 0x4d, 0xdf, 0x94, 0xdb, - 0xcb, 0xb5, 0x4f, 0xce, 0x81, 0xe1, 0x2b, 0xd8, 0x12, 0x36, 0x0f, 0xa3, 0x0d, 0xc2, 0x91, 0xdc, - 0xd4, 0x4f, 0xc6, 0x60, 0xc8, 0x0d, 0xb6, 0xe5, 0x31, 0x68, 0xe3, 0xdf, 0xec, 0x65, 0xa8, 0x04, - 0xbd, 0x8e, 0xe3, 0x86, 0xf4, 0x3a, 0xdb, 0x0b, 0x79, 0x40, 0xdb, 0xac, 0x3d, 0x19, 0xf4, 0x3a, - 0xd5, 0x50, 0x88, 0x85, 0x62, 0xea, 0x5a, 0x7f, 0xab, 0x00, 0xda, 0xfa, 0x29, 0xdb, 0xbc, 0xe9, - 0x05, 0xbc, 0x11, 0xc9, 0xb3, 0x59, 0x3a, 0xb8, 0x13, 0x2c, 0x65, 0x73, 0x8e, 0x30, 0xf6, 0x05, - 0x18, 0x95, 0x67, 0x88, 0xdc, 0x33, 0xd5, 0xba, 0x93, 0x8f, 0x6e, 0x14, 0x09, 0x21, 0x73, 0xfe, - 0x28, 0x22, 0xb1, 0x65, 0xdf, 0x7c, 0xb0, 0xb1, 0xdc, 0x72, 0xbd, 0x76, 0x28, 0x0f, 0x02, 0xdc, - 0x35, 0x3e, 0x7c, 0x18, 0x39, 0x0d, 0x84, 0xea, 0x5b, 0x76, 0x8c, 0x6a, 0x5d, 0x57, 0x6f, 0x7e, - 0x47, 0xf8, 0x72, 0x2c, 0xc2, 0xf0, 0xfd, 0xe4, 0x36, 0xbc, 0x34, 0xf6, 0xf8, 0x60, 0x91, 0xfa, - 0xd6, 0x26, 0xb8, 0xc5, 0x61, 0x2c, 0x9e, 0x77, 0x82, 0x97, 0xf8, 0x81, 0xbc, 0x26, 0x89, 0x97, - 0x98, 0x81, 0x36, 0x42, 0x85, 0x9c, 0xb6, 0xda, 0x69, 0x22, 0x42, 0x11, 0x11, 0xb0, 0x7b, 0x78, - 0xa7, 0x89, 0xd3, 0x54, 0xff, 0x3a, 0x89, 0xa6, 0x49, 0x43, 0x3f, 0x56, 0x80, 0x29, 0x73, 0x8c, - 0xd9, 0x45, 0x18, 0x91, 0x3e, 0xec, 0x05, 0x54, 0xb4, 0x0b, 0x6e, 0x23, 0xe4, 0xbd, 0x6e, 0xf8, - 0xac, 0x4b, 0x2c, 0x21, 0xf4, 0x49, 0x0e, 0x52, 0xe2, 0x41, 0xa1, 0x4f, 0xce, 0x02, 0x5b, 0x95, - 0x31, 0x4b, 0x5c, 0x9e, 0xc3, 0x5e, 0x2b, 0xd2, 0x0d, 0x04, 0x02, 0x84, 0xd8, 0xb2, 0xc4, 0xfa, - 0x8d, 0x02, 0x8c, 0xd0, 0xc6, 0x98, 0x32, 0x0c, 0x2f, 0x1c, 0xc7, 0x30, 0xfc, 0x9b, 0x30, 0x67, - 0xfb, 0x2d, 0x1e, 0x56, 0x3b, 0xfb, 0x0f, 0x77, 0x78, 0xc0, 0x6b, 0x81, 0xbf, 0xa5, 0x6c, 0x19, - 0xc6, 0x2f, 0x3f, 0x6f, 0x6c, 0xc0, 0x79, 0x88, 0xf4, 0x18, 0x1d, 0x88, 0x12, 0xb1, 0x4c, 0xb1, - 0x48, 0xac, 0xd5, 0x94, 0xed, 0x43, 0x6e, 0x25, 0xd6, 0x2f, 0x15, 0x60, 0xa1, 0x3f, 0x6b, 0x3c, - 0x3e, 0xe9, 0xcf, 0x44, 0x6e, 0xa1, 0xe3, 0x93, 0xa0, 0x29, 0x6b, 0x75, 0x0d, 0x99, 0xd9, 0x70, - 0xa2, 0xda, 0x68, 0xf0, 0x6e, 0x24, 0x18, 0x4b, 0x2b, 0xe7, 0x58, 0xae, 0x29, 0x93, 0x2e, 0xcd, - 0x45, 0x04, 0xb2, 0x7b, 0x57, 0x96, 0xdf, 0x38, 0xeb, 0xf2, 0x49, 0xad, 0x3f, 0x28, 0x00, 0xd4, - 0xeb, 0x37, 0x6e, 0xf1, 0xfd, 0x9a, 0xeb, 0xa1, 0xa0, 0x42, 0x7b, 0xcd, 0x2d, 0xb9, 0x39, 0x4c, - 0x48, 0xe3, 0x26, 0xda, 0xa2, 0x76, 0xf9, 0xbe, 0x61, 0xdc, 0xa4, 0x50, 0xe9, 0xab, 0xbc, 0x3d, - 0x37, 0xe2, 0x82, 0x10, 0x5f, 0x26, 0xd4, 0x57, 0x21, 0x34, 0x45, 0xa9, 0x21, 0xb3, 0xaf, 0xc2, - 0x54, 0xf2, 0x2b, 0x36, 0xd1, 0x9a, 0x8a, 0x37, 0x20, 0xb3, 0x70, 0xe9, 0xb9, 0xc7, 0x07, 0x8b, - 0x0b, 0x1a, 0xd7, 0xb4, 0x9d, 0x52, 0x8a, 0xd9, 0xdb, 0x43, 0xff, 0xfc, 0x17, 0x16, 0x0b, 0x68, - 0x47, 0xb7, 0xb1, 0x5e, 0x57, 0x9f, 0x79, 0x0e, 0x86, 0x62, 0xff, 0xa0, 0x09, 0x79, 0xe6, 0x98, - 0xe6, 0x0e, 0x58, 0x2e, 0xa4, 0xcb, 0xe4, 0x7b, 0x70, 0x83, 0x35, 0xbf, 0x43, 0x94, 0xb2, 0xeb, - 0x30, 0x3a, 0x50, 0xcb, 0x71, 0x51, 0xe6, 0xb4, 0x58, 0x51, 0x0b, 0xa1, 0x6b, 0xd9, 0xa6, 0xd7, - 0xad, 0x09, 0x12, 0xba, 0x1a, 0x41, 0xcb, 0x16, 0x30, 0xeb, 0xa0, 0x00, 0x70, 0xf3, 0xc1, 0xc6, - 0xf7, 0xed, 0x30, 0x59, 0x3f, 0x59, 0x84, 0x99, 0xc4, 0xc6, 0x56, 0x7d, 0xe7, 0x67, 0x01, 0x92, - 0x4f, 0x3a, 0xfa, 0x43, 0xbb, 0xf1, 0x87, 0xbe, 0x0d, 0xe3, 0x5a, 0xe5, 0x03, 0x7c, 0x69, 0x37, - 0xf9, 0x52, 0x07, 0x2a, 0xe9, 0x86, 0x7f, 0xcc, 0x6f, 0xed, 0x1a, 0xf8, 0x62, 0xf6, 0xed, 0xb8, - 0x21, 0x99, 0xb4, 0x4f, 0xd2, 0xec, 0x13, 0xbf, 0xf5, 0xd9, 0x27, 0x7e, 0x5b, 0x55, 0xa8, 0x54, - 0xb7, 0xb9, 0xd1, 0x2b, 0xec, 0xb5, 0x9c, 0x1e, 0x41, 0x0d, 0x67, 0x02, 0xd5, 0xfa, 0xc1, 0xfa, - 0xf1, 0x22, 0x4c, 0x8b, 0x99, 0x5c, 0xed, 0x45, 0x3b, 0x7e, 0xe0, 0x45, 0xfb, 0x4f, 0xed, 0xdb, - 0xd4, 0xbb, 0xc6, 0x9d, 0x7f, 0x41, 0x49, 0x27, 0xfa, 0xb7, 0xf5, 0x7f, 0xa2, 0xd2, 0xce, 0xbb, - 0xff, 0x6e, 0x18, 0x66, 0x73, 0xa8, 0xd8, 0xab, 0xc6, 0x83, 0xf7, 0xbc, 0x8a, 0xa3, 0xf4, 0xbd, - 0x83, 0xc5, 0x09, 0x85, 0xbe, 0x91, 0xc4, 0x55, 0xba, 0x6c, 0x5a, 0x57, 0x53, 0x4f, 0xe1, 0xfb, - 0xb7, 0x6e, 0x5d, 0x6d, 0xda, 0x54, 0x5f, 0x80, 0x61, 0x3c, 0x11, 0xa4, 0x8b, 0x02, 0x4a, 0xf4, - 0x78, 0xc6, 0x18, 0x26, 0x86, 0x02, 0xc0, 0x6e, 0xc0, 0xa8, 0xf8, 0xe3, 0xb6, 0xdb, 0x95, 0xd6, - 0x27, 0x2c, 0x56, 0x8a, 0x21, 0xb4, 0xeb, 0x75, 0xb6, 0x75, 0xbd, 0x58, 0x8b, 0x3b, 0x6d, 0xb7, - 0x6b, 0x5c, 0x3d, 0x08, 0xd1, 0xd0, 0xaf, 0x95, 0xfb, 0xeb, 0xd7, 0x0a, 0x47, 0xea, 0xd7, 0xb6, - 0x00, 0xea, 0xde, 0x76, 0xc7, 0xeb, 0x6c, 0x57, 0x5b, 0xdb, 0x32, 0x1a, 0xd5, 0x85, 0xfe, 0xa3, - 0x70, 0x31, 0x41, 0xc6, 0x35, 0xf2, 0x0c, 0x9a, 0x88, 0x11, 0xcc, 0x71, 0x5b, 0xdb, 0x86, 0xab, - 0xb8, 0xc6, 0x99, 0xdd, 0x01, 0xa8, 0x36, 0x22, 0x6f, 0x4f, 0xac, 0x96, 0x50, 0xde, 0x13, 0x54, - 0x93, 0x97, 0xab, 0xb7, 0xf8, 0x3e, 0xde, 0x6d, 0x95, 0xb1, 0x8d, 0x8b, 0xa8, 0x62, 0xd6, 0x1b, - 0x7e, 0xc0, 0x09, 0x07, 0xd6, 0x85, 0x13, 0xd5, 0x66, 0xd3, 0x13, 0xdf, 0xe0, 0xb6, 0x36, 0x28, - 0x8e, 0x18, 0xb2, 0x9e, 0xc8, 0x67, 0x7d, 0x41, 0xd9, 0x87, 0xb8, 0x31, 0x95, 0xa3, 0xc2, 0x8f, - 0xa5, 0xaa, 0xc9, 0x67, 0x6c, 0xd5, 0x61, 0xca, 0xfc, 0x78, 0x33, 0x8a, 0xd6, 0x04, 0x94, 0xed, - 0x7a, 0xd5, 0xa9, 0xdf, 0xa8, 0xbe, 0x51, 0x29, 0xb0, 0x0a, 0x4c, 0xc8, 0x5f, 0x97, 0x9d, 0xcb, - 0x6f, 0x5e, 0xad, 0x14, 0x0d, 0xc8, 0x9b, 0x6f, 0x5c, 0xae, 0x94, 0x16, 0x8a, 0xf3, 0x85, 0x54, - 0x94, 0x88, 0xd1, 0x4a, 0x99, 0x1e, 0x4a, 0xac, 0x5f, 0x29, 0x40, 0x59, 0xb5, 0x9d, 0x5d, 0x85, - 0x52, 0xbd, 0x7e, 0x23, 0x15, 0x67, 0x21, 0x39, 0xdd, 0xe9, 0x04, 0x0b, 0x8d, 0x9d, 0x46, 0x10, - 0x08, 0xba, 0x8d, 0xf5, 0xba, 0x94, 0x93, 0x15, 0x5d, 0x72, 0x5c, 0x12, 0x5d, 0x8e, 0xf3, 0xf9, - 0x55, 0x28, 0xdd, 0x7c, 0xb0, 0x21, 0x6f, 0xf1, 0x8a, 0x2e, 0x39, 0xa6, 0x88, 0xee, 0xc3, 0x87, - 0xfa, 0xb9, 0x2a, 0x08, 0x2c, 0x1b, 0xc6, 0xb5, 0x89, 0x4c, 0x82, 0x61, 0xdb, 0x8f, 0x43, 0x47, - 0x49, 0xc1, 0x50, 0x40, 0x6c, 0x59, 0x22, 0xc4, 0xe5, 0x75, 0xbf, 0xe1, 0xb6, 0xa4, 0x84, 0x89, - 0xe2, 0x72, 0x4b, 0x00, 0x6c, 0x82, 0x5b, 0xbf, 0x59, 0x80, 0x4a, 0x2d, 0xf0, 0x29, 0xbc, 0xd5, - 0x86, 0xbf, 0xcb, 0x3b, 0xf7, 0xdf, 0x60, 0xaf, 0xa9, 0x25, 0x57, 0x88, 0x15, 0xbd, 0xc3, 0xb8, - 0xe4, 0x52, 0x16, 0x09, 0x72, 0xd9, 0x69, 0xd1, 0xb9, 0x8a, 0x83, 0x47, 0xf5, 0x39, 0x22, 0x3a, - 0xd7, 0x22, 0x0c, 0x63, 0x73, 0xe4, 0xe6, 0x88, 0x2d, 0x8f, 0x04, 0xc0, 0x26, 0xb8, 0xb6, 0x37, - 0x1d, 0x14, 0x33, 0xdf, 0x70, 0xf9, 0xfb, 0x2a, 0x32, 0x8e, 0xf9, 0x71, 0x87, 0x98, 0x14, 0xdc, - 0xea, 0x13, 0x19, 0x27, 0xc5, 0x80, 0x3c, 0xbe, 0x2f, 0xd3, 0xd3, 0x1a, 0xf9, 0x4d, 0xea, 0xba, - 0xc8, 0x4c, 0x50, 0x8c, 0x2f, 0xc1, 0x5c, 0xba, 0x7f, 0x51, 0x65, 0x5e, 0x85, 0x69, 0x13, 0xae, - 0xb4, 0xe7, 0xa7, 0x72, 0xeb, 0xbd, 0x7f, 0xd9, 0x4e, 0xe3, 0x5b, 0xbf, 0x5a, 0x84, 0x31, 0xfc, - 0xd3, 0xee, 0x91, 0x94, 0x5f, 0x7d, 0x50, 0x97, 0x8a, 0x3c, 0x5d, 0xca, 0x77, 0x1f, 0x86, 0xca, - 0xc8, 0xd7, 0xd8, 0xb0, 0x62, 0x64, 0x49, 0x4a, 0x4f, 0x88, 0x4a, 0x85, 0x1c, 0x93, 0xd2, 0x5b, - 0x63, 0x98, 0x22, 0x95, 0xc8, 0xe8, 0xb5, 0x43, 0xd7, 0x0e, 0xdd, 0xe4, 0x12, 0xe9, 0xfc, 0x96, - 0xe9, 0xb5, 0x43, 0x68, 0x68, 0x71, 0xf9, 0xa0, 0x2e, 0x6e, 0x22, 0xba, 0xc5, 0xa5, 0x68, 0xa3, - 0x71, 0x0b, 0x91, 0x48, 0xec, 0x2e, 0xcc, 0x54, 0x1f, 0xd4, 0xef, 0x6a, 0xef, 0x74, 0x6b, 0x2b, - 0xf2, 0xad, 0xf2, 0xf9, 0xc7, 0x07, 0x8b, 0x67, 0x04, 0xa5, 0xfe, 0x8a, 0x67, 0x5e, 0xd1, 0xb2, - 0xb4, 0xd6, 0x7f, 0x33, 0x95, 0x1e, 0x11, 0x79, 0x1c, 0x1f, 0x73, 0xe5, 0xbe, 0x03, 0xc3, 0xd5, - 0x56, 0xcb, 0x7f, 0x28, 0xf7, 0x30, 0xa5, 0xb8, 0x89, 0x07, 0x84, 0x4e, 0x5b, 0xd4, 0x6a, 0x1b, - 0x01, 0x38, 0x04, 0x80, 0x2d, 0xc3, 0x58, 0xf5, 0x41, 0x7d, 0x6d, 0x6d, 0x65, 0x63, 0x83, 0x3c, - 0xfb, 0x4b, 0x4b, 0x2f, 0xa9, 0x0e, 0xf7, 0xbc, 0xa6, 0x93, 0xb6, 0x31, 0x4b, 0x6e, 0xc0, 0x09, - 0x1d, 0xfb, 0x3c, 0xc0, 0x4d, 0xdf, 0xeb, 0x90, 0x16, 0x5f, 0xf6, 0xe6, 0x99, 0xc7, 0x07, 0x8b, - 0xe3, 0x1f, 0xfa, 0x5e, 0x47, 0xaa, 0xfd, 0x45, 0xdb, 0x13, 0x24, 0x5b, 0xfb, 0x5b, 0x0c, 0xdd, - 0x92, 0x4f, 0xb6, 0xe7, 0xc3, 0xc9, 0xd0, 0x6d, 0xfa, 0x19, 0x75, 0xb3, 0x42, 0x63, 0x6d, 0x98, - 0xae, 0xf7, 0xb6, 0xb7, 0xb9, 0x38, 0x77, 0xa4, 0x3a, 0x75, 0x44, 0x6a, 0x6e, 0xe2, 0x68, 0x97, - 0x74, 0xa3, 0x77, 0x5b, 0x3d, 0x1e, 0x2e, 0xbd, 0x2a, 0x96, 0xd9, 0x77, 0x0f, 0x16, 0xa5, 0xed, - 0x9a, 0x90, 0x59, 0x43, 0x45, 0x9f, 0x55, 0xa6, 0xa6, 0x79, 0xb3, 0xbb, 0x30, 0x42, 0xef, 0xbc, - 0xd2, 0x53, 0xfd, 0xf9, 0x43, 0x96, 0x34, 0x21, 0xf6, 0xb3, 0xc0, 0xa0, 0x52, 0xf6, 0x00, 0xca, - 0xcb, 0x5e, 0xd0, 0x68, 0xf1, 0xe5, 0x35, 0x29, 0x99, 0xbc, 0x70, 0x08, 0x4b, 0x85, 0x4a, 0xfd, - 0xd2, 0xc0, 0x5f, 0x0d, 0x4f, 0x97, 0x54, 0x14, 0x06, 0xfb, 0xcb, 0x05, 0x78, 0x26, 0x6e, 0x7d, - 0x75, 0x9b, 0x77, 0xa2, 0xdb, 0x6e, 0xd4, 0xd8, 0xe1, 0x81, 0xec, 0xa5, 0xb1, 0xc3, 0x7a, 0xe9, - 0xed, 0x4c, 0x2f, 0x9d, 0x4f, 0x7a, 0xc9, 0x15, 0xcc, 0x9c, 0x36, 0x71, 0xcb, 0xf6, 0xd9, 0x61, - 0xb5, 0x32, 0x07, 0x20, 0xb1, 0x60, 0x90, 0x46, 0xb0, 0x2f, 0x1d, 0xf2, 0xc1, 0x09, 0xb2, 0xf4, - 0x11, 0x8e, 0x7f, 0x1b, 0x4e, 0x1b, 0x31, 0x94, 0xdd, 0x52, 0x61, 0x21, 0x48, 0x66, 0x3a, 0x7b, - 0x08, 0x6f, 0x0a, 0x15, 0x31, 0x7b, 0x48, 0x4c, 0x1a, 0x1a, 0xed, 0x75, 0x77, 0x53, 0x8a, 0x49, - 0x47, 0x8c, 0xf6, 0xba, 0x9b, 0x8c, 0x76, 0xcb, 0x4d, 0x8f, 0xf6, 0xba, 0xbb, 0xc9, 0x96, 0x29, - 0xbc, 0x0e, 0xc5, 0x62, 0x79, 0xee, 0x30, 0x6e, 0x4a, 0x95, 0x99, 0x13, 0x66, 0xe7, 0xcb, 0x30, - 0x56, 0xef, 0xba, 0x0d, 0xde, 0xf2, 0xb6, 0x22, 0x69, 0x56, 0xf4, 0xe2, 0x21, 0xac, 0x62, 0x5c, - 0x69, 0x0e, 0xa1, 0x7e, 0xea, 0x57, 0xc6, 0x18, 0x47, 0xb4, 0x70, 0xa3, 0x76, 0x5b, 0x2a, 0x56, - 0x0f, 0x6b, 0xe1, 0x46, 0xed, 0xb6, 0x94, 0x88, 0xba, 0x6d, 0x43, 0x22, 0xaa, 0xdd, 0x66, 0x5d, - 0x98, 0xda, 0xe0, 0x41, 0xe0, 0x6e, 0xf9, 0x41, 0x9b, 0xd4, 0xf7, 0xe4, 0x4c, 0x7f, 0xe1, 0x30, - 0x7e, 0x06, 0x01, 0x69, 0xad, 0x23, 0x05, 0x73, 0xd2, 0x3a, 0xff, 0x14, 0x7f, 0xd1, 0x27, 0x4b, - 0x5e, 0xb4, 0xd9, 0x6b, 0xec, 0xf2, 0x48, 0xba, 0xd8, 0x1f, 0xd6, 0x27, 0x31, 0x2e, 0xf5, 0xc9, - 0xa6, 0xfa, 0xa9, 0xf7, 0x49, 0x8c, 0x23, 0xa6, 0x81, 0x0c, 0xa2, 0xc3, 0x8e, 0x9c, 0x06, 0x84, - 0x48, 0xd3, 0xa0, 0x5f, 0x34, 0x1d, 0xb6, 0x03, 0x13, 0x4b, 0x7e, 0xaf, 0x23, 0x04, 0xe5, 0xae, - 0xeb, 0x05, 0xf3, 0xb3, 0xc8, 0xf6, 0xe5, 0xc3, 0x1a, 0xac, 0xa1, 0x93, 0x6b, 0xcf, 0xa6, 0x80, - 0x08, 0x59, 0x5c, 0x80, 0xf4, 0x87, 0x38, 0x1d, 0x95, 0x35, 0x61, 0x1c, 0xa7, 0xf2, 0x0a, 0xdf, - 0xf3, 0xbb, 0xe1, 0xfc, 0x1c, 0x56, 0x74, 0xee, 0xa8, 0x45, 0x41, 0xd8, 0x64, 0xa6, 0x82, 0x4b, - 0xc3, 0x69, 0x22, 0x44, 0x7f, 0x1d, 0xd1, 0x10, 0xd9, 0x75, 0x18, 0x5a, 0xed, 0xec, 0xbd, 0x3e, - 0x7f, 0x02, 0xd9, 0x2f, 0x1e, 0xc2, 0x5e, 0xa0, 0xd1, 0x5d, 0x9f, 0x77, 0xf6, 0x5e, 0xd7, 0xef, - 0xfa, 0xa2, 0x24, 0xfd, 0x46, 0x73, 0xf2, 0x38, 0x6f, 0x34, 0xd6, 0xdf, 0x1c, 0x86, 0xc5, 0x23, - 0x3e, 0x89, 0xdd, 0x57, 0x27, 0x24, 0x09, 0x36, 0x9f, 0x1e, 0xac, 0x27, 0x2e, 0x1e, 0x79, 0x78, - 0xbe, 0x03, 0x53, 0x29, 0x79, 0x40, 0x0b, 0xea, 0x9a, 0x92, 0x05, 0xec, 0x14, 0xea, 0xc2, 0x1f, - 0x96, 0x60, 0x08, 0xe5, 0xa5, 0x17, 0xa0, 0x54, 0xef, 0x6d, 0xea, 0xcf, 0xb8, 0xa1, 0x71, 0x68, - 0x88, 0x52, 0xf6, 0x2e, 0x8c, 0x4b, 0x77, 0x4a, 0xed, 0xd2, 0x8d, 0x43, 0xa5, 0x7c, 0x2f, 0xd3, - 0xce, 0x5e, 0x1a, 0x3a, 0x7b, 0x0f, 0x26, 0x6a, 0x5e, 0x97, 0xb7, 0xbc, 0x0e, 0xd7, 0x5c, 0x97, - 0x70, 0x46, 0x75, 0x25, 0x3c, 0xf3, 0xb4, 0xab, 0x13, 0x98, 0x8e, 0x9f, 0x43, 0x83, 0x3b, 0x7e, - 0xbe, 0x07, 0x13, 0x2b, 0x7c, 0xcb, 0xeb, 0x78, 0x86, 0xbc, 0x84, 0x15, 0x37, 0x63, 0xb8, 0x49, - 0x6d, 0x10, 0xb0, 0x25, 0x98, 0xb4, 0x79, 0xd7, 0x0f, 0xbd, 0xc8, 0x0f, 0xf6, 0xef, 0xd9, 0x6b, - 0xd2, 0xc6, 0x0b, 0xf5, 0xbd, 0x41, 0x5c, 0xe0, 0xf4, 0x02, 0xfd, 0x3c, 0x34, 0x49, 0xd8, 0x1d, - 0x98, 0x49, 0x00, 0xa6, 0x4d, 0xa9, 0x7c, 0xc7, 0x8b, 0xf9, 0x64, 0x7d, 0x44, 0xb2, 0xa4, 0x66, - 0x9b, 0x6c, 0xbe, 0x25, 0x3d, 0x4e, 0xd2, 0x6d, 0x0a, 0xf8, 0x56, 0x7e, 0x9b, 0x6c, 0xbe, 0x65, - 0xfd, 0x5a, 0x09, 0x4e, 0xf5, 0xd9, 0x60, 0xd9, 0x1d, 0x73, 0xba, 0xbe, 0x70, 0xf8, 0x7e, 0x7c, - 0xf4, 0x34, 0x5d, 0x87, 0xca, 0xea, 0x2d, 0xd4, 0x53, 0x90, 0x95, 0xc4, 0x72, 0x55, 0xc9, 0xd6, - 0xf8, 0xf9, 0x7c, 0x17, 0xbd, 0xcd, 0x94, 0x75, 0x45, 0xc3, 0x08, 0x2b, 0x96, 0xa1, 0x5c, 0xf8, - 0x73, 0x45, 0x39, 0x6f, 0x53, 0x71, 0xa5, 0x0b, 0xc7, 0x8a, 0x2b, 0xfd, 0x45, 0x98, 0x58, 0xbd, - 0x45, 0xca, 0xd9, 0x1b, 0x4a, 0x1f, 0x28, 0xbb, 0x90, 0xef, 0xaa, 0x57, 0xc1, 0x94, 0x66, 0xd0, - 0xa0, 0x60, 0xf7, 0x60, 0x96, 0xda, 0xe6, 0x6d, 0x79, 0x0d, 0x0a, 0x4f, 0xeb, 0xb9, 0x2d, 0x39, - 0xc3, 0x5e, 0x78, 0x7c, 0xb0, 0xb8, 0xc8, 0x77, 0xd1, 0x8f, 0x4e, 0x96, 0x3b, 0x21, 0x22, 0xe8, - 0x0e, 0x75, 0x39, 0xf4, 0x7a, 0x60, 0x4a, 0x7b, 0x0c, 0x2b, 0x14, 0xb5, 0x89, 0xba, 0x05, 0x2e, - 0x21, 0x59, 0xff, 0xe7, 0x08, 0x2c, 0xf4, 0x17, 0xfe, 0xd8, 0xfb, 0xe6, 0x00, 0x9e, 0x3b, 0x52, - 0x5c, 0x3c, 0x7a, 0x0c, 0x3f, 0x80, 0xb9, 0xd5, 0x4e, 0xc4, 0x83, 0x6e, 0xe0, 0xa9, 0x80, 0x96, - 0x37, 0xfc, 0x50, 0xf9, 0x2d, 0xe2, 0x9b, 0x0d, 0x8f, 0xcb, 0xa5, 0x07, 0x2e, 0x3e, 0x33, 0xea, - 0x6f, 0x36, 0x79, 0x1c, 0xd8, 0x2a, 0x4c, 0x69, 0xf0, 0x56, 0x6f, 0x5b, 0x37, 0xfd, 0xd0, 0x79, - 0xb6, 0x7a, 0xba, 0x53, 0x57, 0x8a, 0x08, 0x7d, 0x23, 0x23, 0x37, 0xf2, 0x1a, 0x37, 0x1f, 0xdc, - 0xaa, 0xcb, 0xe1, 0x24, 0xdf, 0x48, 0x84, 0x3a, 0x1f, 0x3e, 0xdc, 0x35, 0xa4, 0xb7, 0x04, 0x79, - 0xe1, 0xe7, 0x86, 0x8e, 0xb3, 0x13, 0x7e, 0x0e, 0x20, 0x59, 0x4a, 0x7a, 0x2c, 0x96, 0x64, 0xe9, - 0x99, 0xee, 0xcf, 0x0a, 0xca, 0x6e, 0xc0, 0x74, 0xf2, 0xeb, 0xee, 0xc3, 0x8e, 0x7a, 0x7e, 0x25, - 0x25, 0xb6, 0xb6, 0x72, 0x7d, 0x51, 0xa6, 0x5f, 0x08, 0x52, 0x64, 0xec, 0x32, 0x94, 0x1f, 0xf8, - 0xc1, 0xee, 0x96, 0x18, 0xe3, 0xa1, 0xe4, 0xca, 0xf2, 0x50, 0xc2, 0x74, 0xd1, 0x5c, 0xe1, 0x89, - 0xe5, 0xb2, 0xda, 0xd9, 0xf3, 0x02, 0x1f, 0xcd, 0x65, 0x74, 0x2b, 0x57, 0x9e, 0x80, 0x8d, 0x18, - 0x5c, 0x09, 0x98, 0x5d, 0x80, 0xe1, 0x6a, 0x23, 0xf2, 0x03, 0xb9, 0xfd, 0xd1, 0x4c, 0x11, 0x00, - 0x63, 0xa6, 0x08, 0x80, 0xe8, 0x44, 0xb1, 0x27, 0x8d, 0x26, 0x9d, 0x68, 0x6e, 0x44, 0xa2, 0x54, - 0x5c, 0xb9, 0x6c, 0xbe, 0x85, 0x4a, 0x5f, 0x23, 0x6a, 0xfa, 0x56, 0xe6, 0x81, 0x46, 0xa2, 0x89, - 0x6e, 0x4f, 0x46, 0x5c, 0xda, 0x51, 0x60, 0xb7, 0x27, 0x53, 0xc4, 0x78, 0x91, 0x8c, 0xa1, 0xe4, - 0x70, 0xaf, 0x7e, 0xc5, 0x71, 0xae, 0xa4, 0xc3, 0x7d, 0x3c, 0xbd, 0xcc, 0x33, 0x40, 0x27, 0xb0, - 0xfe, 0x3c, 0xf4, 0x5d, 0x6d, 0x42, 0xbc, 0x3e, 0xde, 0x6a, 0x5b, 0x77, 0x07, 0x58, 0x6d, 0xaf, - 0xc6, 0xfe, 0xdc, 0x7a, 0x8c, 0x41, 0x84, 0xe8, 0x82, 0x9d, 0xf4, 0xec, 0x36, 0xa7, 0x7e, 0xe9, - 0x38, 0x53, 0xff, 0xaf, 0x97, 0x8f, 0x33, 0xf5, 0xe5, 0xd0, 0x16, 0x07, 0x1d, 0xda, 0xd2, 0x60, - 0x43, 0xbb, 0x04, 0x93, 0x71, 0xb6, 0x80, 0x9a, 0x1b, 0x19, 0x9b, 0x71, 0x9c, 0xe2, 0xc1, 0xe9, - 0xba, 0x46, 0xf4, 0x5b, 0x93, 0x44, 0x93, 0x4f, 0x90, 0xc3, 0x70, 0x56, 0x3e, 0x49, 0xd1, 0xeb, - 0xe8, 0x62, 0x0f, 0x52, 0xe2, 0x46, 0x1d, 0xbd, 0x83, 0xe5, 0x3c, 0x27, 0x3b, 0x2e, 0x25, 0xa1, - 0x90, 0xe3, 0xb0, 0xf1, 0x90, 0x66, 0x10, 0xa5, 0x97, 0xd8, 0xe8, 0xb1, 0x96, 0x18, 0xf9, 0xa9, - 0x04, 0xeb, 0xfe, 0xb6, 0xa7, 0x7c, 0x48, 0x95, 0x9f, 0x4a, 0xe0, 0xb4, 0x04, 0x34, 0xe5, 0xa7, - 0x42, 0xa8, 0xec, 0x35, 0x18, 0x11, 0x3f, 0xd6, 0x56, 0xe4, 0xa2, 0x40, 0x35, 0x12, 0x12, 0x99, - 0x8e, 0xbb, 0x84, 0xa4, 0xaa, 0x59, 0x6d, 0xbb, 0x5e, 0x4b, 0x2e, 0x85, 0xa4, 0x1a, 0x2e, 0xa0, - 0xe9, 0x6a, 0x10, 0x95, 0x35, 0x60, 0xc2, 0xe6, 0x5b, 0xb5, 0xc0, 0x8f, 0x78, 0x23, 0xe2, 0x4d, - 0x79, 0xd3, 0x55, 0xca, 0x9e, 0x25, 0xdf, 0xa7, 0x5b, 0x3c, 0xfa, 0x78, 0x16, 0xbe, 0x7b, 0xb0, - 0x08, 0x02, 0x44, 0x5e, 0xe1, 0x62, 0xa5, 0x89, 0xf1, 0xef, 0x2a, 0x62, 0x7d, 0xa5, 0xe9, 0x4c, - 0xd9, 0x37, 0xc5, 0x29, 0x13, 0x77, 0x49, 0x52, 0xd9, 0x44, 0x9f, 0xca, 0xde, 0xcc, 0xad, 0x6c, - 0x51, 0xeb, 0xed, 0xdc, 0x4a, 0x73, 0x2b, 0x61, 0x9f, 0x87, 0xf1, 0xe5, 0xb5, 0x65, 0xbf, 0xb3, - 0xe5, 0x6d, 0xd7, 0x6f, 0x54, 0xf1, 0xba, 0x2c, 0xb7, 0x89, 0x86, 0xe7, 0x34, 0x10, 0xee, 0x84, - 0x3b, 0xae, 0x11, 0xb6, 0x27, 0xc1, 0x67, 0xd7, 0x61, 0x4a, 0xfd, 0xb4, 0xf9, 0x96, 0x10, 0x15, - 0xa7, 0xb4, 0x28, 0x12, 0x31, 0x07, 0xd1, 0x11, 0xa6, 0xb4, 0x98, 0x22, 0x13, 0x93, 0x71, 0x85, - 0x77, 0x5b, 0xfe, 0xbe, 0x68, 0xde, 0x86, 0xc7, 0x03, 0xbc, 0x17, 0xcb, 0xc9, 0xd8, 0x8c, 0x4b, - 0x9c, 0xc8, 0x33, 0x4d, 0xaa, 0x4c, 0x22, 0x21, 0x75, 0xca, 0x29, 0x7e, 0xdf, 0x0b, 0xbd, 0x4d, - 0xaf, 0xe5, 0x45, 0xfb, 0xe4, 0x6b, 0x43, 0x62, 0x97, 0x5a, 0x17, 0x7b, 0x71, 0xa9, 0x2e, 0x75, - 0x66, 0x48, 0xad, 0x5f, 0x29, 0xc2, 0xb3, 0x87, 0x69, 0x87, 0x58, 0xdd, 0xdc, 0x07, 0xcf, 0x0f, - 0xa0, 0x51, 0x3a, 0x7a, 0x27, 0x5c, 0xed, 0x73, 0xc5, 0xc1, 0xce, 0xe8, 0xaf, 0xee, 0x4c, 0x5f, - 0x76, 0xf6, 0xe4, 0x36, 0xf7, 0x51, 0x03, 0xc8, 0x5c, 0x85, 0xb1, 0x65, 0xbf, 0x13, 0xf1, 0x47, - 0x51, 0x2a, 0xfe, 0x1a, 0x01, 0xd3, 0xc1, 0x73, 0x14, 0xaa, 0xf5, 0x4f, 0x4a, 0x70, 0xe6, 0x50, - 0xf5, 0x08, 0xdb, 0x30, 0x7b, 0xed, 0xc2, 0x20, 0x3a, 0x95, 0xa3, 0xbb, 0xed, 0x72, 0xc6, 0x53, - 0xe0, 0xe8, 0x08, 0x00, 0x36, 0x30, 0x8a, 0x0a, 0x75, 0xbd, 0xe5, 0x6f, 0xa2, 0x02, 0xcd, 0xeb, - 0x6c, 0xcb, 0x68, 0x52, 0xe4, 0xcd, 0x8e, 0xa5, 0xce, 0x76, 0xcb, 0xdf, 0x24, 0x45, 0x9c, 0xd7, - 0xd1, 0x25, 0xb2, 0x1c, 0xea, 0x85, 0x7f, 0x52, 0x90, 0x1d, 0xff, 0x3a, 0x8c, 0x62, 0xf3, 0xe3, - 0x6e, 0xa7, 0xb7, 0x12, 0xdc, 0xd9, 0x3d, 0xf3, 0xad, 0x84, 0xd0, 0xd8, 0x15, 0x28, 0x2f, 0xbb, - 0xad, 0x96, 0x16, 0xf1, 0x0e, 0xb5, 0x26, 0x0d, 0x84, 0xa5, 0x1c, 0x6b, 0x14, 0xa2, 0x38, 0x0a, - 0xe9, 0x6f, 0xed, 0xfc, 0xc1, 0x0d, 0x58, 0x92, 0xa5, 0x8e, 0x20, 0x0d, 0x19, 0x73, 0xa8, 0xa0, - 0xdf, 0xc6, 0x90, 0x96, 0x43, 0x45, 0x00, 0x8c, 0x1c, 0x2a, 0x02, 0x60, 0xfd, 0xb5, 0x61, 0x78, - 0xee, 0x70, 0xbd, 0x21, 0xbb, 0x67, 0x0e, 0xeb, 0x2b, 0x03, 0x69, 0x1b, 0x8f, 0x1e, 0x57, 0x95, - 0x91, 0x88, 0x3a, 0xe4, 0x7c, 0xd6, 0x35, 0xfc, 0x7b, 0x07, 0x8b, 0x9a, 0xb7, 0xd6, 0x4d, 0xdf, - 0xeb, 0x68, 0x2f, 0xe7, 0xdf, 0xc8, 0x08, 0x0a, 0xe3, 0x97, 0xaf, 0x0e, 0xd6, 0xb2, 0x84, 0x8e, - 0xf6, 0xaa, 0x01, 0x05, 0x0c, 0xf6, 0x01, 0x0c, 0xdd, 0x5d, 0x5b, 0x59, 0x96, 0xcf, 0x58, 0xaf, - 0x0f, 0x56, 0x99, 0xa0, 0x90, 0xd5, 0xa0, 0xd6, 0xc6, 0xf7, 0x9a, 0x0d, 0x5d, 0x6b, 0x23, 0xca, - 0x17, 0xde, 0x86, 0x4a, 0xba, 0x51, 0xec, 0x1c, 0x0c, 0xe1, 0xa7, 0x69, 0x9e, 0xf3, 0xa9, 0xb6, - 0x61, 0xf9, 0xc2, 0x4f, 0x17, 0x00, 0x92, 0x4a, 0x84, 0xb8, 0xb5, 0x16, 0x86, 0xbd, 0x38, 0x0c, - 0x33, 0x8a, 0x5b, 0x1e, 0x42, 0xf4, 0x13, 0x94, 0x70, 0xd8, 0x07, 0xe8, 0xb9, 0x8f, 0x86, 0xca, - 0x38, 0x28, 0x37, 0x36, 0x36, 0x6a, 0x92, 0x9c, 0x8c, 0xc1, 0x50, 0x9c, 0x8f, 0x2d, 0x9c, 0xc9, - 0xd6, 0x7f, 0x27, 0x8a, 0xba, 0x0e, 0xb1, 0xb4, 0xfb, 0x91, 0x2f, 0xdc, 0x96, 0x8b, 0x05, 0xa3, - 0x1e, 0xea, 0x11, 0x67, 0x64, 0xbb, 0x64, 0xd4, 0x43, 0x23, 0x5c, 0x8d, 0x19, 0xf5, 0x50, 0x27, - 0xb2, 0x7e, 0xa9, 0x08, 0xa7, 0xfb, 0xea, 0x98, 0x58, 0xcd, 0x9c, 0xa1, 0x2f, 0x1d, 0xa5, 0x94, - 0x3a, 0x72, 0x72, 0x2e, 0xfc, 0x9a, 0x5a, 0xec, 0x5f, 0x80, 0x89, 0x7a, 0x6f, 0x33, 0x7d, 0x35, - 0xa7, 0x88, 0xa8, 0x1a, 0x5c, 0x17, 0x03, 0x74, 0x7c, 0xf1, 0xfd, 0x2a, 0x4c, 0x8b, 0x34, 0xac, - 0xd6, 0xbc, 0x39, 0xe2, 0x30, 0x53, 0xd9, 0xa8, 0x8f, 0x26, 0x91, 0x18, 0xd6, 0x88, 0x77, 0xdc, - 0x4e, 0xa4, 0x7b, 0x0c, 0x12, 0x44, 0x1f, 0x56, 0x82, 0x58, 0xff, 0x71, 0x31, 0x5f, 0x23, 0x72, - 0x7d, 0xb9, 0x76, 0x1c, 0x8d, 0xc8, 0xf5, 0xe5, 0xda, 0xd1, 0x3d, 0xf5, 0x5f, 0xab, 0x9e, 0x22, - 0x8b, 0x44, 0x3a, 0x64, 0xd4, 0x7b, 0x9b, 0xb2, 0x48, 0x94, 0x07, 0x52, 0x98, 0xb2, 0x48, 0x94, - 0xc8, 0xec, 0x4d, 0x18, 0x5b, 0xf7, 0x29, 0x7c, 0xa3, 0xea, 0x1f, 0x8a, 0xda, 0xa4, 0x80, 0xfa, - 0x89, 0x14, 0x63, 0x8a, 0x4b, 0xa8, 0x39, 0x4d, 0x94, 0x8b, 0x0b, 0xce, 0xda, 0xd4, 0xe4, 0x32, - 0x5f, 0xa5, 0x4c, 0x32, 0xeb, 0x3f, 0x1b, 0x06, 0xeb, 0x68, 0x9d, 0x3a, 0xfb, 0x92, 0xd9, 0x77, - 0x17, 0x07, 0xd6, 0xc6, 0x0f, 0x74, 0xca, 0x55, 0x7b, 0x4d, 0x8f, 0x77, 0x1a, 0x66, 0xa8, 0x44, - 0x09, 0xd3, 0x4f, 0x08, 0x85, 0xf7, 0x51, 0x62, 0xe3, 0x2c, 0xfc, 0x83, 0x52, 0xb2, 0x30, 0x53, - 0xd2, 0x48, 0xe1, 0x23, 0x48, 0x23, 0xec, 0x16, 0x54, 0x74, 0x88, 0xa6, 0x51, 0x45, 0x61, 0xd1, - 0x60, 0x94, 0x6a, 0x54, 0x86, 0xd0, 0x14, 0x69, 0x4a, 0x83, 0x8b, 0x34, 0x29, 0x8d, 0xee, 0xd0, - 0xf1, 0x34, 0xba, 0x32, 0xb4, 0x62, 0x28, 0xcf, 0xf4, 0x61, 0x33, 0xb4, 0x62, 0xce, 0xb9, 0xae, - 0xa3, 0xab, 0xe8, 0x90, 0xf8, 0x53, 0x8b, 0x1e, 0x16, 0x47, 0x87, 0x24, 0xfa, 0xbc, 0xe8, 0x90, - 0x31, 0x89, 0x90, 0x0f, 0xec, 0x5e, 0x87, 0x72, 0x99, 0x8d, 0x26, 0xf2, 0x41, 0xd0, 0xeb, 0x38, - 0xe9, 0x7c, 0x66, 0x31, 0xa2, 0xf5, 0xb7, 0x87, 0xf2, 0xe5, 0xb1, 0xe4, 0xd9, 0xe5, 0x18, 0xf2, - 0x58, 0x4c, 0xf4, 0xc9, 0xcc, 0xd4, 0x7b, 0x30, 0xab, 0xbc, 0x24, 0xb0, 0xf6, 0x26, 0x0f, 0xee, - 0xd9, 0xeb, 0x72, 0x88, 0x51, 0xc1, 0x18, 0xfb, 0x57, 0x74, 0x65, 0xb9, 0xd3, 0x0b, 0x0c, 0x05, - 0x63, 0x0e, 0xfd, 0xc2, 0xdf, 0x52, 0xfa, 0x53, 0x7d, 0x10, 0x30, 0xa8, 0x49, 0x21, 0x6f, 0x10, - 0x7a, 0x3d, 0x63, 0x18, 0x4d, 0x12, 0xda, 0xa9, 0x63, 0x5d, 0xf7, 0x3d, 0x53, 0x3c, 0xd7, 0xf5, - 0xe3, 0x26, 0x97, 0x14, 0x11, 0xdb, 0x86, 0xd3, 0xc9, 0xed, 0x45, 0xbb, 0x9c, 0x21, 0x47, 0xfa, - 0xe0, 0x0b, 0x8f, 0x0f, 0x16, 0x5f, 0xd2, 0x6e, 0x3f, 0xfa, 0x1d, 0x2f, 0xc5, 0xbd, 0x3f, 0x2f, - 0xb1, 0xdf, 0x2e, 0x05, 0x6e, 0xa7, 0xb1, 0xa3, 0xcd, 0x79, 0xdc, 0x6f, 0x37, 0x11, 0x9a, 0x89, - 0xa0, 0x96, 0x20, 0x5b, 0xdf, 0x2d, 0xe6, 0x6b, 0x81, 0xe4, 0xeb, 0xda, 0x31, 0xb4, 0x40, 0x44, - 0x71, 0xf4, 0x29, 0xf1, 0xcf, 0xd5, 0x29, 0xf1, 0x12, 0x8c, 0x6e, 0x88, 0x43, 0x2a, 0x8e, 0x4c, - 0x88, 0x66, 0x43, 0x11, 0x81, 0x6c, 0x55, 0xc6, 0xde, 0x07, 0x56, 0x73, 0x03, 0xde, 0x89, 0x96, - 0xfd, 0x76, 0xd7, 0x0d, 0xa2, 0x36, 0x66, 0x7b, 0xa3, 0xa3, 0x01, 0x4d, 0x44, 0xba, 0x58, 0xea, - 0x34, 0xb4, 0x62, 0x5d, 0x7e, 0xcf, 0x12, 0xb3, 0x4b, 0x30, 0xaa, 0xac, 0x61, 0x4a, 0x49, 0x70, - 0xe7, 0xac, 0x25, 0x8c, 0xc2, 0x12, 0xa7, 0x92, 0xf2, 0xd9, 0x57, 0xe9, 0x15, 0x70, 0x59, 0x2a, - 0xaf, 0x7e, 0xe3, 0x54, 0x8a, 0x31, 0xad, 0xff, 0x6a, 0x04, 0xe6, 0xfb, 0xbd, 0xdc, 0xb1, 0xbb, - 0x66, 0xd7, 0xbe, 0x78, 0xc4, 0x4b, 0xdf, 0xd1, 0x1d, 0xfb, 0xdb, 0xc3, 0x4f, 0x76, 0x3f, 0x37, - 0xb6, 0xe0, 0xe2, 0x47, 0xde, 0x82, 0x4b, 0xc7, 0xdb, 0x82, 0xdf, 0x02, 0xd8, 0xe0, 0xed, 0x6e, - 0xcb, 0x8d, 0x78, 0xfc, 0x28, 0x46, 0x51, 0x7f, 0x25, 0x34, 0xe5, 0xa4, 0x91, 0x20, 0xb3, 0xf7, - 0x60, 0x42, 0xfd, 0xd2, 0xcc, 0x5e, 0x28, 0xdb, 0x94, 0x22, 0x4e, 0xbf, 0xc7, 0xe9, 0x04, 0x62, - 0xef, 0xd0, 0x96, 0x56, 0x1c, 0xfa, 0x80, 0xde, 0x4f, 0xb4, 0x95, 0x69, 0xee, 0x1d, 0x06, 0x89, - 0x90, 0x44, 0x34, 0x80, 0x16, 0xfa, 0x11, 0x25, 0x11, 0x9d, 0x4b, 0xaa, 0x29, 0x69, 0xb2, 0xec, - 0x71, 0x52, 0x3e, 0xfe, 0x71, 0x62, 0x6a, 0x5d, 0x54, 0xd6, 0xd7, 0x1c, 0xad, 0x4b, 0xca, 0xbe, - 0xdc, 0x24, 0x12, 0x4d, 0x21, 0x88, 0xa9, 0x62, 0xc3, 0xa6, 0x34, 0x65, 0x41, 0x46, 0xcd, 0x66, - 0x92, 0x90, 0x4b, 0xd1, 0xde, 0xeb, 0x1b, 0xee, 0xb6, 0x8c, 0x28, 0x23, 0x5d, 0x8a, 0xf6, 0x5e, - 0x77, 0x22, 0x77, 0xdb, 0x74, 0x29, 0x42, 0x34, 0xeb, 0x1f, 0x0c, 0xc3, 0xd9, 0xa3, 0x1e, 0xf0, - 0xd9, 0x16, 0xc0, 0xdd, 0xce, 0xa6, 0xef, 0x06, 0x4d, 0x71, 0xaf, 0x2f, 0x1c, 0x79, 0xfb, 0xd3, - 0x89, 0x2f, 0x26, 0x94, 0xa2, 0x90, 0xcc, 0xde, 0xfd, 0x18, 0x66, 0x6b, 0x9c, 0xd9, 0xd7, 0xa0, - 0x6c, 0xf3, 0x86, 0xbf, 0xc7, 0xe5, 0xf3, 0xc8, 0xf8, 0xe5, 0xcf, 0x0c, 0x5a, 0x8b, 0xa2, 0xc3, - 0x3a, 0x30, 0xb6, 0x41, 0x20, 0x21, 0x76, 0xcc, 0x93, 0x7d, 0x1d, 0xc6, 0x29, 0x95, 0x66, 0x75, - 0x2b, 0x92, 0x4f, 0x28, 0x47, 0xc7, 0x7f, 0x2b, 0x88, 0x55, 0x45, 0xc9, 0x39, 0x1d, 0x77, 0xcb, - 0x70, 0x46, 0xa4, 0xf8, 0x6f, 0x1a, 0xcb, 0x85, 0xff, 0xa8, 0x08, 0x53, 0xe6, 0x07, 0xb3, 0x75, - 0xa8, 0xac, 0x75, 0xbc, 0xc8, 0x73, 0x5b, 0xa6, 0xf3, 0x87, 0x54, 0xa6, 0x79, 0x54, 0xe6, 0xe4, - 0xfa, 0x46, 0x64, 0x28, 0xc5, 0x4e, 0x2d, 0x36, 0xcc, 0x30, 0x22, 0x23, 0x02, 0x4a, 0x6f, 0x20, - 0x77, 0x8e, 0xe7, 0x29, 0x97, 0x47, 0x52, 0xea, 0x50, 0x3a, 0x13, 0x33, 0x74, 0x7b, 0x9a, 0x98, - 0xed, 0x01, 0xbb, 0xdd, 0x0b, 0x23, 0x2a, 0xe1, 0xc1, 0x12, 0xdf, 0xf2, 0x83, 0x41, 0x02, 0xbf, - 0xbd, 0x22, 0x3b, 0xe7, 0xb9, 0x76, 0x2f, 0x8c, 0x9c, 0x40, 0x92, 0x3b, 0x9b, 0x48, 0x9f, 0xea, - 0xa4, 0x9c, 0x1a, 0x16, 0x6e, 0xc3, 0x84, 0x3e, 0x6a, 0x68, 0x2c, 0xec, 0xb5, 0x3d, 0xe5, 0x2e, - 0x47, 0xc6, 0xc2, 0x02, 0x60, 0x13, 0x9c, 0x3d, 0x2b, 0x23, 0xa5, 0x16, 0x13, 0x9b, 0xda, 0x24, - 0x22, 0xaa, 0xf5, 0xc3, 0x05, 0x38, 0x99, 0x6f, 0x68, 0xca, 0x3e, 0x4c, 0xd9, 0xaf, 0x14, 0x0e, - 0xb3, 0xee, 0x51, 0xd6, 0xa9, 0x1f, 0xcd, 0x82, 0xc5, 0xfa, 0x3b, 0x43, 0x99, 0xbb, 0x4d, 0x0e, - 0x47, 0x76, 0x3d, 0x77, 0x1c, 0x0b, 0x9a, 0x34, 0x9a, 0x1d, 0xc7, 0xdc, 0xd1, 0x7b, 0x17, 0xa6, - 0x90, 0x71, 0x32, 0xb9, 0xb4, 0x87, 0x1f, 0x6a, 0xb2, 0xe6, 0x64, 0x92, 0xc2, 0x65, 0x6b, 0xc0, - 0x10, 0xb2, 0xe4, 0x47, 0x5a, 0x4c, 0x1d, 0x4d, 0xfb, 0x45, 0x1c, 0x36, 0xfd, 0xc8, 0xd1, 0xa3, - 0xeb, 0xe4, 0x10, 0xb1, 0xcf, 0xc1, 0xa4, 0x1a, 0x4e, 0xca, 0x2f, 0xa5, 0x39, 0xca, 0xa8, 0xb5, - 0x48, 0x29, 0xa6, 0x6c, 0x13, 0x91, 0xb5, 0x29, 0x66, 0xa5, 0x04, 0xf2, 0x66, 0x35, 0x1a, 0x20, - 0x30, 0xe8, 0xcb, 0x72, 0xf6, 0x3d, 0x43, 0xc9, 0x73, 0x15, 0xad, 0xe3, 0x46, 0xa9, 0xa9, 0x97, - 0xe6, 0xcd, 0xb6, 0x61, 0x52, 0x4b, 0xaa, 0x5b, 0x8d, 0x06, 0xc8, 0xe9, 0xfc, 0x92, 0xac, 0xec, - 0xb4, 0x9e, 0xa9, 0x37, 0x5b, 0x95, 0xc9, 0x97, 0x5d, 0x81, 0x71, 0xec, 0x27, 0x19, 0x4f, 0x45, - 0x7b, 0xd7, 0xa4, 0x5e, 0x55, 0x51, 0x55, 0x74, 0x2c, 0xeb, 0xdb, 0x45, 0x98, 0x22, 0xed, 0x14, - 0x99, 0x28, 0x3f, 0xb5, 0xb6, 0xe4, 0xef, 0x18, 0xb6, 0xe4, 0x2a, 0x0d, 0x91, 0xfe, 0x69, 0x03, - 0x79, 0xfe, 0xec, 0x00, 0xcb, 0xd2, 0x30, 0x1b, 0x26, 0x74, 0xe8, 0xe1, 0x76, 0xdf, 0x6f, 0x24, - 0x19, 0xab, 0xa4, 0xda, 0x11, 0x2d, 0xf9, 0x43, 0xdb, 0xe0, 0x61, 0xfd, 0x58, 0x11, 0x26, 0x35, - 0xcf, 0x9f, 0xa7, 0xb6, 0xe3, 0xdf, 0x36, 0x3a, 0x7e, 0x3e, 0x8e, 0xe0, 0x16, 0x7f, 0xd9, 0x40, - 0xfd, 0xde, 0x83, 0x99, 0x0c, 0x49, 0xda, 0x81, 0xaa, 0x30, 0x88, 0x03, 0xd5, 0xab, 0xd9, 0x04, - 0x34, 0x94, 0xe3, 0x3b, 0xce, 0x1e, 0xa0, 0x67, 0xbc, 0xf9, 0xf1, 0x22, 0xcc, 0xc9, 0x5f, 0x98, - 0xb7, 0x8e, 0xf4, 0xac, 0x4f, 0xed, 0x58, 0x54, 0x8d, 0xb1, 0x58, 0x34, 0xc7, 0x42, 0xfb, 0xc0, - 0xfe, 0x43, 0x62, 0xfd, 0x30, 0xc0, 0x7c, 0x3f, 0x82, 0x81, 0x03, 0xbe, 0x26, 0x21, 0xd0, 0x8a, - 0x03, 0x84, 0x40, 0x5b, 0x87, 0x0a, 0x56, 0x25, 0x5d, 0x8e, 0xc3, 0x7b, 0xf6, 0x9a, 0xec, 0x24, - 0x14, 0x59, 0x28, 0xcd, 0xa0, 0xf4, 0x53, 0x0e, 0x53, 0x6f, 0x92, 0x19, 0x4a, 0xf6, 0xef, 0x15, - 0x60, 0x0a, 0x81, 0xab, 0x7b, 0xe2, 0x66, 0x28, 0x98, 0x0d, 0xc9, 0xd8, 0x58, 0xb1, 0x31, 0x77, - 0x3d, 0x0a, 0xbc, 0xce, 0xb6, 0xb4, 0xe6, 0xde, 0x94, 0xd6, 0xdc, 0xef, 0x92, 0x15, 0xfa, 0xc5, - 0x86, 0xdf, 0xbe, 0xb4, 0x1d, 0xb8, 0x7b, 0x1e, 0x39, 0xb5, 0xb9, 0xad, 0x4b, 0x2a, 0xf8, 0xd2, - 0x25, 0xb7, 0xeb, 0x5d, 0xc2, 0x3e, 0xbd, 0x94, 0x62, 0x85, 0x96, 0xf2, 0xd4, 0x50, 0x8e, 0xd5, - 0xa6, 0x9f, 0x4e, 0xcd, 0x16, 0xb1, 0x1f, 0x80, 0x53, 0xf4, 0x08, 0xb5, 0xec, 0x77, 0x22, 0xaf, - 0xd3, 0xf3, 0x7b, 0xe1, 0x92, 0xdb, 0xd8, 0xed, 0x75, 0x43, 0x19, 0xf9, 0x11, 0xbf, 0xbc, 0x11, - 0x17, 0x3a, 0x9b, 0x54, 0x6a, 0xc4, 0x64, 0xce, 0x67, 0xc0, 0x6e, 0xc0, 0x0c, 0x15, 0x55, 0x7b, - 0x91, 0x5f, 0x6f, 0xb8, 0x2d, 0x21, 0x45, 0x8f, 0x22, 0x57, 0x32, 0x59, 0xed, 0x45, 0xbe, 0x13, - 0x12, 0x5c, 0x7f, 0x49, 0xcd, 0x10, 0xb1, 0x35, 0x98, 0xb6, 0xb9, 0xdb, 0xbc, 0xed, 0x3e, 0x5a, - 0x76, 0xbb, 0x6e, 0xc3, 0x8b, 0x28, 0x71, 0x5c, 0x89, 0xb4, 0x7f, 0x01, 0x77, 0x9b, 0x4e, 0xdb, - 0x7d, 0xe4, 0x34, 0x64, 0xa1, 0x69, 0x08, 0x64, 0xd0, 0xc5, 0xac, 0xbc, 0x4e, 0xcc, 0x6a, 0x2c, - 0xcd, 0xca, 0xeb, 0xf4, 0x67, 0x95, 0xd0, 0x29, 0x56, 0x94, 0x54, 0x98, 0xc2, 0x23, 0x88, 0xbb, - 0x4b, 0x41, 0x63, 0x25, 0x33, 0x11, 0x63, 0xa8, 0x84, 0x34, 0x2b, 0x8d, 0x4e, 0xcc, 0xbc, 0x07, - 0x81, 0x17, 0x71, 0xfd, 0x0b, 0xc7, 0xb1, 0x59, 0xd8, 0xff, 0x18, 0x58, 0xa2, 0xdf, 0x27, 0x66, - 0x28, 0x13, 0x6e, 0xda, 0x47, 0x4e, 0x64, 0xb8, 0xe5, 0x7f, 0x65, 0x86, 0x32, 0xe6, 0xa6, 0x7f, - 0xe7, 0x24, 0x7e, 0xa7, 0xc6, 0xad, 0xcf, 0x87, 0x66, 0x28, 0xd9, 0x1d, 0xd1, 0x69, 0x11, 0xef, - 0x88, 0x19, 0x2d, 0xe3, 0x36, 0x4c, 0x61, 0xd3, 0x5e, 0x94, 0xb2, 0x46, 0x25, 0x50, 0xc5, 0x4e, - 0x4e, 0x14, 0x87, 0x34, 0x31, 0xfb, 0x41, 0x98, 0xbe, 0x17, 0xf2, 0x6b, 0x6b, 0xb5, 0xba, 0xca, - 0xd4, 0x81, 0x8f, 0xff, 0x53, 0x97, 0xdf, 0x38, 0x62, 0xd3, 0xb9, 0xa8, 0xd3, 0x88, 0x03, 0x91, - 0xd3, 0xb8, 0xf5, 0x42, 0xee, 0x6c, 0x79, 0xdd, 0x30, 0xce, 0x52, 0xa5, 0x8f, 0x5b, 0xaa, 0x2a, - 0xeb, 0x06, 0xcc, 0x64, 0xd8, 0xb0, 0x29, 0x00, 0x01, 0x74, 0xee, 0xdd, 0xa9, 0xaf, 0x6e, 0x54, - 0x3e, 0xc5, 0x2a, 0x30, 0x81, 0xbf, 0x57, 0xef, 0x54, 0x97, 0xd6, 0x57, 0x57, 0x2a, 0x05, 0x36, - 0x03, 0x93, 0x08, 0x59, 0x59, 0xab, 0x13, 0xa8, 0x48, 0xc9, 0xb4, 0xed, 0x0a, 0x2d, 0x5d, 0x8a, - 0xa4, 0x29, 0xce, 0x14, 0xeb, 0xaf, 0x16, 0xe1, 0xb4, 0x3a, 0x56, 0x78, 0x24, 0xee, 0xe6, 0x5e, - 0x67, 0xfb, 0x29, 0x3f, 0x1d, 0xae, 0x19, 0xa7, 0xc3, 0x8b, 0xa9, 0x93, 0x3a, 0xf5, 0x95, 0x87, - 0x1c, 0x11, 0xbf, 0x31, 0x06, 0x67, 0x0e, 0xa5, 0x62, 0xef, 0x8b, 0xd3, 0xdc, 0xe3, 0x9d, 0x68, - 0xad, 0xd9, 0xe2, 0x42, 0xae, 0xf5, 0x7b, 0x91, 0x8c, 0x13, 0xf2, 0x02, 0xbe, 0x8d, 0x63, 0xa1, - 0xe3, 0x35, 0x5b, 0xdc, 0x89, 0xa8, 0xd8, 0x98, 0x6e, 0x59, 0x6a, 0xc1, 0xf2, 0x16, 0xe7, 0xdd, - 0x6a, 0xcb, 0xdb, 0xe3, 0x6b, 0x9d, 0x88, 0x07, 0x7b, 0xe8, 0xe7, 0x19, 0xb3, 0xdc, 0xe5, 0xbc, - 0xeb, 0xb8, 0xa2, 0xd4, 0xf1, 0x64, 0xb1, 0xc9, 0x32, 0x43, 0xcd, 0xae, 0x69, 0x2c, 0xf1, 0x6a, - 0x70, 0xdb, 0x7d, 0x24, 0x5d, 0xbb, 0x64, 0xa2, 0xbe, 0x98, 0x25, 0x45, 0xe0, 0x6a, 0xbb, 0x8f, - 0xec, 0x2c, 0x09, 0xfb, 0x2a, 0x9c, 0x90, 0x07, 0x90, 0x0c, 0x12, 0xae, 0xbe, 0x98, 0x42, 0x90, - 0xbf, 0x2c, 0x6e, 0x73, 0x2a, 0xcc, 0x86, 0x0a, 0xfc, 0x9f, 0xf7, 0xd5, 0xf9, 0x5c, 0xd8, 0x86, - 0x38, 0x90, 0x53, 0xdd, 0x71, 0x9b, 0x87, 0xa1, 0x0a, 0xb3, 0x26, 0x75, 0x78, 0x7a, 0x67, 0x3a, - 0x6d, 0x2a, 0xb7, 0xfb, 0x52, 0xb2, 0x1b, 0x30, 0xf5, 0x80, 0x6f, 0xea, 0xe3, 0x33, 0x12, 0x6f, - 0x55, 0x95, 0x87, 0x7c, 0xb3, 0xff, 0xe0, 0xa4, 0xe8, 0x98, 0x87, 0xf6, 0x3b, 0x8f, 0xf6, 0xd7, - 0xc5, 0x6d, 0xbb, 0xc3, 0x03, 0xbc, 0x34, 0x8f, 0xe2, 0x66, 0x30, 0x9f, 0x48, 0xc8, 0x66, 0xb9, - 0x54, 0xf3, 0x62, 0x64, 0xa3, 0x96, 0x84, 0x3b, 0xe2, 0x76, 0x9d, 0x32, 0xed, 0x31, 0xa9, 0xd8, - 0xd7, 0x61, 0xda, 0xf6, 0x7b, 0x91, 0xd7, 0xd9, 0xae, 0x8b, 0x6b, 0x29, 0xdf, 0xa6, 0x03, 0x29, - 0xc9, 0x63, 0x92, 0x2a, 0x95, 0x06, 0xab, 0x04, 0x74, 0x42, 0x09, 0x35, 0x4e, 0x04, 0x93, 0x80, - 0x7d, 0x0d, 0xa6, 0x28, 0xac, 0x72, 0x5c, 0xc1, 0x98, 0x91, 0x64, 0xdd, 0x2c, 0xbc, 0xff, 0x86, - 0xf4, 0xc4, 0x41, 0x68, 0x5e, 0x05, 0x29, 0x6e, 0xec, 0xcb, 0xb2, 0xb3, 0x6a, 0x5e, 0x67, 0x3b, - 0x9e, 0xc6, 0x80, 0x3d, 0xff, 0x5a, 0xd2, 0x25, 0x5d, 0xd1, 0x5c, 0x35, 0x8d, 0xfb, 0xb8, 0x15, - 0x66, 0xf9, 0xb0, 0x08, 0xce, 0x54, 0xc3, 0xd0, 0x0b, 0x23, 0x19, 0x4d, 0x67, 0xf5, 0x11, 0x6f, - 0xf4, 0x04, 0xf2, 0x03, 0x3f, 0xd8, 0xe5, 0x01, 0x79, 0xca, 0x0f, 0x2f, 0x5d, 0x7c, 0x7c, 0xb0, - 0xf8, 0x8a, 0x8b, 0x88, 0x8e, 0x0c, 0xc0, 0xe3, 0x70, 0x85, 0xea, 0x3c, 0x24, 0x5c, 0xed, 0x1b, - 0x0e, 0x67, 0xca, 0xbe, 0x06, 0x27, 0x97, 0xdd, 0x90, 0xaf, 0x75, 0x42, 0xde, 0x09, 0xbd, 0xc8, - 0xdb, 0xe3, 0xb2, 0x53, 0xf1, 0xf0, 0x2b, 0x53, 0x02, 0x9b, 0x86, 0x1b, 0x8a, 0x85, 0x19, 0xa3, - 0x38, 0x72, 0x50, 0xf4, 0xfc, 0x38, 0xf9, 0x5c, 0x98, 0x0d, 0x53, 0xf5, 0xfa, 0x8d, 0x15, 0xcf, - 0x8d, 0xd7, 0xd5, 0x24, 0xf6, 0xd7, 0x2b, 0xf8, 0x0e, 0x1c, 0xee, 0x38, 0x4d, 0xcf, 0x8d, 0x17, - 0x54, 0x9f, 0xce, 0x4a, 0x71, 0xb0, 0x0e, 0x0a, 0x50, 0x49, 0x0f, 0x25, 0xfb, 0x00, 0xc6, 0xc8, - 0x27, 0x8f, 0x87, 0x3b, 0x52, 0x69, 0xa3, 0x5c, 0xbc, 0x62, 0xb8, 0x49, 0x24, 0x03, 0xf4, 0x91, - 0xc7, 0x1f, 0xd7, 0x6d, 0xf0, 0x6f, 0x7c, 0xca, 0x4e, 0x98, 0xb1, 0x26, 0x4c, 0xd0, 0x68, 0x71, - 0xcc, 0xc1, 0x94, 0x8a, 0x31, 0xa4, 0x17, 0xa5, 0xf8, 0x93, 0xe7, 0x09, 0xcd, 0x09, 0x42, 0x30, - 0xaa, 0x30, 0xb8, 0x2e, 0x01, 0x94, 0x15, 0xa1, 0x75, 0x1a, 0x4e, 0xf5, 0x69, 0xb3, 0xb5, 0x87, - 0xcf, 0x43, 0x7d, 0x6a, 0x64, 0x1f, 0xc0, 0x1c, 0x12, 0x2e, 0xfb, 0x9d, 0x0e, 0x6f, 0x44, 0xb8, - 0x1d, 0x29, 0xc3, 0x8e, 0x12, 0xd9, 0xcf, 0xd3, 0xf7, 0x36, 0x62, 0x84, 0x4c, 0x26, 0xef, 0x5c, - 0x0e, 0xd6, 0xbf, 0x28, 0xc2, 0xbc, 0xdc, 0xe1, 0x6c, 0xde, 0xf0, 0x51, 0x65, 0xf9, 0x94, 0x9f, - 0xa8, 0xab, 0xc6, 0x89, 0xfa, 0x42, 0x1c, 0x75, 0x3b, 0xef, 0x23, 0x0f, 0x71, 0x64, 0xbf, 0x97, - 0x72, 0x64, 0x3f, 0x82, 0x11, 0x65, 0x04, 0x9e, 0x57, 0x82, 0x5b, 0x3f, 0x97, 0x76, 0x6b, 0x0d, - 0xca, 0xb7, 0xf8, 0x3e, 0xba, 0x96, 0x8a, 0xfe, 0x8d, 0x92, 0x9b, 0x5b, 0x59, 0x45, 0x2e, 0xb1, - 0xf1, 0x5f, 0xb6, 0x08, 0xc3, 0xe8, 0xa8, 0xaa, 0xc7, 0x19, 0x43, 0x80, 0x4d, 0xff, 0x59, 0xff, - 0x47, 0x01, 0x4e, 0xdf, 0x76, 0x3b, 0x3d, 0xb7, 0x75, 0x8b, 0xef, 0x53, 0xa2, 0xf1, 0x36, 0x0d, - 0xf1, 0x96, 0xb7, 0xcd, 0x2e, 0xc1, 0xa8, 0x4c, 0xde, 0x88, 0xfc, 0xcb, 0xf4, 0xf8, 0x96, 0xcd, - 0xe7, 0xa8, 0xb0, 0xd8, 0x2d, 0x18, 0xd7, 0x82, 0x72, 0x48, 0x7f, 0x6c, 0xd5, 0xf3, 0xaa, 0xcd, - 0xd2, 0xa1, 0x3d, 0x3f, 0x78, 0x87, 0x9b, 0x04, 0xef, 0xb8, 0x03, 0x13, 0x4a, 0x45, 0x86, 0xdc, - 0x4a, 0xf9, 0xdc, 0x16, 0x12, 0xc5, 0x7a, 0x26, 0x48, 0xc7, 0xb8, 0x84, 0x63, 0x68, 0x8e, 0xdf, - 0x2e, 0xc0, 0xd9, 0x74, 0xcf, 0x27, 0xf1, 0x75, 0x3e, 0xea, 0x27, 0xef, 0xc3, 0x89, 0x36, 0x76, - 0x20, 0x06, 0xff, 0x69, 0xc7, 0x5d, 0x28, 0xf7, 0x02, 0xe5, 0x89, 0xdb, 0xb7, 0x93, 0xe9, 0x21, - 0x3d, 0x97, 0x85, 0xfe, 0x90, 0xde, 0xce, 0xd2, 0x5b, 0x3f, 0x53, 0x84, 0x67, 0x0f, 0x9b, 0x93, - 0xb1, 0xa6, 0xbb, 0x90, 0xa7, 0xe9, 0x66, 0x5d, 0x98, 0xc5, 0xfd, 0x62, 0x79, 0x87, 0x37, 0x76, - 0x31, 0xf6, 0xde, 0x2d, 0x1a, 0xb4, 0x7c, 0x53, 0xe7, 0x57, 0x73, 0x4d, 0x9d, 0x4f, 0xd2, 0x26, - 0xd6, 0x40, 0x1e, 0xa4, 0x8a, 0x14, 0x63, 0x60, 0xe7, 0xb1, 0x66, 0x1c, 0x20, 0xc9, 0xb7, 0x2a, - 0x9f, 0x06, 0x5e, 0xee, 0xb3, 0x26, 0xd2, 0x23, 0x83, 0x89, 0x1b, 0x0a, 0xe4, 0x6f, 0xa1, 0x4a, - 0xf4, 0x89, 0x93, 0x40, 0xad, 0x5e, 0xdf, 0x6e, 0xa1, 0x5c, 0xda, 0xf7, 0x60, 0x5a, 0x4b, 0xfb, - 0x8a, 0x73, 0xcb, 0x54, 0xfc, 0xa5, 0x03, 0x2f, 0xd1, 0x5b, 0x6e, 0x8a, 0xc6, 0x9e, 0xe2, 0x3a, - 0x4e, 0x68, 0xfd, 0x64, 0x11, 0x2a, 0xd5, 0x5e, 0xb4, 0x53, 0x0b, 0xf8, 0x16, 0x0f, 0x78, 0xa7, - 0xc1, 0xbf, 0xcf, 0x02, 0x78, 0x98, 0x1f, 0x37, 0x90, 0xfa, 0xef, 0x3b, 0x53, 0x30, 0x97, 0x47, - 0x26, 0xfa, 0x65, 0x23, 0x77, 0xdf, 0x42, 0x3d, 0xd3, 0xb7, 0x0a, 0x30, 0x51, 0xe7, 0x0d, 0xbf, - 0xd3, 0xbc, 0x86, 0x4e, 0x3e, 0xb2, 0x77, 0x5c, 0x92, 0xb8, 0x05, 0xdc, 0xd9, 0x4a, 0x79, 0xff, - 0x7c, 0xef, 0x60, 0xf1, 0x8b, 0x83, 0x29, 0x7a, 0x1a, 0x3e, 0xbe, 0x36, 0x44, 0x98, 0xbb, 0x3f, - 0xae, 0x82, 0x5a, 0x63, 0x1b, 0xd5, 0xb2, 0x25, 0x98, 0x94, 0xa7, 0x9d, 0xaf, 0xa7, 0xbc, 0xa3, - 0xc4, 0x15, 0xaa, 0x20, 0xf3, 0xae, 0x6b, 0x90, 0xb0, 0x2b, 0x50, 0xba, 0x77, 0xf9, 0x9a, 0x1c, - 0x05, 0x15, 0xb3, 0xf3, 0xde, 0xe5, 0x6b, 0xa8, 0x4d, 0x16, 0x13, 0x7a, 0xb2, 0x77, 0xd9, 0xf0, - 0x61, 0xb9, 0x77, 0xf9, 0x1a, 0xfb, 0x33, 0x70, 0x62, 0xc5, 0x0b, 0x65, 0x15, 0x14, 0x4c, 0xa6, - 0x89, 0x41, 0xeb, 0x46, 0xfa, 0xac, 0xce, 0xcf, 0xe6, 0xae, 0xce, 0xe7, 0x9b, 0x31, 0x13, 0x87, - 0x22, 0xd5, 0x34, 0xd3, 0xa9, 0xfd, 0xf2, 0xeb, 0x61, 0x1f, 0xc2, 0x14, 0x9a, 0x2a, 0x60, 0x7c, - 0x1d, 0xcc, 0xc1, 0x3d, 0xda, 0xa7, 0xe6, 0xd7, 0x73, 0x6b, 0x5e, 0x20, 0xab, 0x53, 0x8c, 0xd2, - 0x83, 0xf9, 0xba, 0x0d, 0xa5, 0x99, 0xc1, 0x99, 0xdd, 0x84, 0x69, 0x79, 0x7b, 0xb9, 0xbb, 0xb5, - 0xb1, 0xc3, 0x57, 0xdc, 0x7d, 0xf9, 0x7e, 0x8e, 0x0a, 0x11, 0x79, 0xe5, 0x71, 0xfc, 0x2d, 0x27, - 0xda, 0xe1, 0x4e, 0xd3, 0x35, 0xe4, 0xfc, 0x14, 0x21, 0xfb, 0x26, 0x8c, 0xaf, 0xfb, 0x0d, 0x71, - 0x71, 0xc5, 0x9d, 0x8f, 0x9e, 0xd0, 0xbf, 0x24, 0x36, 0xaa, 0x16, 0x81, 0x53, 0xb7, 0x91, 0xef, - 0x1d, 0x2c, 0xbe, 0x73, 0xdc, 0x69, 0xa3, 0x55, 0x60, 0xeb, 0xb5, 0xb1, 0x65, 0x28, 0x3f, 0xe0, - 0x9b, 0xe2, 0x6b, 0x3b, 0x32, 0xc8, 0x83, 0x5a, 0x75, 0x0a, 0x2c, 0xdd, 0xe4, 0xe4, 0x2f, 0xc3, - 0x4d, 0x4e, 0xc2, 0x58, 0x00, 0x33, 0xd8, 0x3f, 0x35, 0x37, 0x0c, 0x1f, 0xfa, 0x41, 0x13, 0xd3, - 0xe7, 0xf7, 0x73, 0x76, 0xb9, 0x9c, 0xdb, 0xf9, 0xcf, 0x52, 0xe7, 0x77, 0x35, 0x0e, 0x46, 0x24, - 0x96, 0x34, 0x7b, 0xf6, 0x75, 0x98, 0x92, 0xd1, 0x7a, 0x6f, 0x5f, 0xab, 0xe2, 0x4a, 0x98, 0x30, - 0x62, 0xde, 0x99, 0x85, 0xea, 0x85, 0x18, 0x61, 0x71, 0xa0, 0xc9, 0xf6, 0x96, 0x6b, 0x1a, 0x58, - 0xe9, 0x24, 0xac, 0x06, 0xe3, 0x2b, 0x7c, 0xcf, 0x6b, 0x70, 0x0c, 0x96, 0x25, 0x43, 0x41, 0xa8, - 0xc0, 0x66, 0x5a, 0x09, 0x1d, 0xe7, 0x4d, 0x04, 0x50, 0xe8, 0x2d, 0xd3, 0x81, 0x36, 0x46, 0x64, - 0x57, 0xa1, 0xb4, 0xb6, 0x52, 0x93, 0x91, 0x20, 0x66, 0xe2, 0x98, 0xd8, 0x35, 0x99, 0x08, 0x92, - 0x5e, 0xc8, 0xbc, 0xa6, 0x11, 0x47, 0x62, 0x6d, 0xa5, 0xc6, 0xb6, 0x60, 0x92, 0xcc, 0x9e, 0xb9, - 0x4b, 0x7d, 0x3b, 0xdd, 0xa7, 0x6f, 0x2f, 0xe6, 0xf6, 0xed, 0xbc, 0x34, 0xa7, 0x96, 0xd4, 0xfa, - 0xba, 0x37, 0xd8, 0x8a, 0x1b, 0xe1, 0x0a, 0xdf, 0x72, 0x7b, 0x2d, 0xa5, 0xc5, 0xde, 0xd8, 0x58, - 0x47, 0xf7, 0x17, 0x79, 0x23, 0x6c, 0x52, 0x61, 0xdc, 0x7f, 0xfd, 0x03, 0xcd, 0x64, 0xf9, 0xb0, - 0xb7, 0x61, 0xe8, 0xee, 0x6e, 0xe4, 0xca, 0x98, 0x0f, 0xaa, 0x1f, 0x05, 0x48, 0x7d, 0x3e, 0xd9, - 0xad, 0xef, 0x1a, 0x29, 0x75, 0x90, 0x46, 0x0c, 0xc5, 0x0d, 0x37, 0x68, 0x3e, 0x74, 0x03, 0x0c, - 0x04, 0x39, 0x6b, 0xb0, 0xd0, 0x4a, 0x68, 0x28, 0x76, 0x24, 0x20, 0x65, 0x52, 0xa0, 0xb3, 0x60, - 0x3f, 0x00, 0xa7, 0x43, 0x6f, 0xbb, 0x83, 0xf9, 0x08, 0x1c, 0xb7, 0xb5, 0xed, 0x07, 0x5e, 0xb4, - 0xd3, 0x76, 0xc2, 0x9e, 0x17, 0x71, 0x0c, 0xbe, 0x30, 0x15, 0x5f, 0xb8, 0xea, 0x0a, 0xaf, 0xaa, - 0xd0, 0xea, 0x02, 0xcb, 0x3e, 0x15, 0xe6, 0x17, 0xb0, 0x2f, 0xc3, 0xa4, 0xbe, 0x25, 0x87, 0xf3, - 0x27, 0xce, 0x96, 0xce, 0x4f, 0xc5, 0x47, 0x75, 0x7a, 0x0b, 0x57, 0x89, 0x3e, 0xb5, 0x33, 0x22, - 0x34, 0x13, 0x7d, 0x6a, 0xbc, 0x98, 0x0d, 0xa7, 0x42, 0x52, 0x0e, 0xf6, 0x3a, 0xde, 0x23, 0x0c, - 0x48, 0x2c, 0xdd, 0xa4, 0x30, 0x08, 0x43, 0x72, 0xf4, 0xd5, 0x11, 0xeb, 0xde, 0x9d, 0xb5, 0x0f, - 0xee, 0x85, 0x3c, 0x90, 0xde, 0x52, 0x73, 0x44, 0x7b, 0xaf, 0xe3, 0x3d, 0x4a, 0xa0, 0xa4, 0x79, - 0xbc, 0x39, 0x54, 0x66, 0x95, 0x59, 0x7b, 0x46, 0xae, 0x02, 0x39, 0x72, 0xb7, 0xaf, 0x55, 0xed, - 0xd1, 0xda, 0xda, 0xfd, 0x7a, 0xcb, 0x8f, 0xac, 0x1d, 0x98, 0xcb, 0xe3, 0xca, 0xe6, 0x53, 0x12, - 0x68, 0x22, 0x6a, 0x3e, 0x03, 0x63, 0x5b, 0x5e, 0x10, 0x46, 0x4e, 0xcf, 0x23, 0x79, 0x61, 0xd8, - 0x2e, 0x23, 0xe0, 0x9e, 0xd7, 0x64, 0xa7, 0xa1, 0x8c, 0xaf, 0xca, 0xa2, 0xac, 0x84, 0x65, 0xa3, - 0xe2, 0xf7, 0x3d, 0xaf, 0x69, 0xfd, 0x97, 0x05, 0x3c, 0x82, 0xd8, 0x2b, 0x98, 0xf8, 0x21, 0xb6, - 0x31, 0xc3, 0xc7, 0x1b, 0xb7, 0x9b, 0xca, 0x40, 0x4e, 0x28, 0xec, 0x55, 0x18, 0xb9, 0xe6, 0x36, - 0x78, 0x6c, 0xbe, 0x87, 0xc8, 0x5b, 0x08, 0xd1, 0x6f, 0x24, 0x84, 0x23, 0x2e, 0x97, 0xb4, 0x34, - 0xab, 0x51, 0xc4, 0x43, 0xda, 0x3f, 0x97, 0xab, 0xca, 0x64, 0x0f, 0x2f, 0x97, 0x72, 0x49, 0xbb, - 0x09, 0x42, 0xca, 0xd1, 0x3e, 0x97, 0x83, 0xf5, 0x2f, 0x0b, 0xc9, 0x9e, 0xca, 0x5e, 0x86, 0x21, - 0xbb, 0x16, 0xb7, 0x9f, 0x62, 0x28, 0xa6, 0x9a, 0x8f, 0x08, 0xec, 0xcb, 0x70, 0x42, 0xe3, 0x93, - 0xf1, 0xfa, 0x7f, 0x09, 0x43, 0xfc, 0x69, 0x2d, 0xc9, 0x77, 0xfd, 0xcf, 0xe7, 0x81, 0x37, 0xe9, - 0xa4, 0x60, 0x85, 0x77, 0x3c, 0xe2, 0xad, 0x7d, 0xac, 0xce, 0xbb, 0x89, 0x08, 0xe9, 0x8f, 0xcd, - 0xe3, 0x40, 0x11, 0xfe, 0xac, 0x5f, 0x2f, 0x18, 0x7b, 0x25, 0x3b, 0x67, 0x48, 0xf1, 0xb8, 0xae, - 0x53, 0x1a, 0x35, 0x92, 0xe7, 0xdf, 0x02, 0xa8, 0xf6, 0x22, 0x7f, 0xb5, 0x13, 0xf8, 0xad, 0x96, - 0xf4, 0x04, 0xa1, 0xab, 0x56, 0x2f, 0xf2, 0x1d, 0x8e, 0x60, 0x23, 0x76, 0x58, 0x8c, 0x9c, 0x1b, - 0x20, 0xa1, 0xf4, 0x51, 0x03, 0x24, 0x88, 0x7b, 0x89, 0xb1, 0x3d, 0xbc, 0x0e, 0x6a, 0xd2, 0xeb, - 0xae, 0x57, 0x5d, 0x6f, 0xcf, 0x09, 0x5b, 0xbe, 0x11, 0xa1, 0x5a, 0xa2, 0xb1, 0xbf, 0x50, 0x80, - 0x93, 0x14, 0x69, 0xe0, 0x4e, 0xaf, 0xbd, 0xc9, 0x83, 0xfb, 0x6e, 0xcb, 0x6b, 0x26, 0xb9, 0x80, - 0x12, 0xdf, 0x3e, 0xad, 0x9a, 0x7c, 0x7c, 0xd2, 0x52, 0x51, 0xe4, 0x03, 0xa7, 0x83, 0x85, 0xce, - 0x5e, 0x5c, 0xaa, 0x6b, 0xa9, 0xf2, 0xe9, 0xd9, 0x1a, 0x8c, 0xd7, 0xbc, 0xce, 0xb2, 0xdb, 0xd8, - 0xe1, 0x49, 0x84, 0xb0, 0x97, 0x29, 0x70, 0x88, 0x98, 0xc2, 0x8d, 0x1d, 0x7e, 0xc8, 0xd6, 0xad, - 0xd3, 0x5a, 0xbf, 0x52, 0x80, 0xe7, 0x8f, 0x6c, 0xb0, 0xb8, 0x81, 0xae, 0x0e, 0x74, 0x03, 0x95, - 0x58, 0xec, 0x2b, 0x70, 0x42, 0x67, 0xb5, 0x11, 0xb8, 0x9e, 0x1e, 0x23, 0x25, 0xa7, 0x03, 0x22, - 0x81, 0x92, 0x16, 0x5b, 0xf3, 0x99, 0x58, 0xff, 0x4f, 0x01, 0xc6, 0x62, 0x4f, 0xe7, 0xa7, 0xf4, - 0x3a, 0x73, 0xd5, 0xb8, 0xce, 0xa8, 0x64, 0x74, 0xf1, 0x57, 0x91, 0xb1, 0x5f, 0xce, 0x83, 0xc8, - 0xb4, 0xe6, 0x17, 0x8e, 0x80, 0x1f, 0x29, 0xc2, 0xb8, 0xd8, 0xaa, 0xc9, 0x20, 0xe4, 0xfb, 0x2b, - 0xb5, 0x54, 0xfc, 0x5d, 0x03, 0xe5, 0xd1, 0xf9, 0x67, 0x05, 0x7c, 0x28, 0xd4, 0x29, 0x44, 0x6f, - 0x08, 0x90, 0xde, 0x1b, 0xe2, 0x44, 0xb5, 0x11, 0x4a, 0x59, 0x45, 0xd6, 0x65, 0x4f, 0xc8, 0xac, - 0x22, 0x2d, 0x5b, 0xc0, 0xd8, 0x17, 0x61, 0xf8, 0x1e, 0x3e, 0x7b, 0x98, 0x91, 0x96, 0x63, 0xfe, - 0x58, 0x48, 0xfb, 0x7d, 0x2f, 0x34, 0x53, 0xce, 0x10, 0x21, 0xab, 0xc3, 0xe8, 0x72, 0xc0, 0xdd, - 0x88, 0x37, 0x65, 0x87, 0x0c, 0x14, 0xbc, 0xb3, 0x41, 0x24, 0xe9, 0xe0, 0x9d, 0x92, 0x93, 0xd8, - 0xc7, 0x58, 0xf2, 0x8d, 0x68, 0x27, 0x17, 0x3e, 0xb5, 0x83, 0xfe, 0x9e, 0x31, 0xe8, 0x67, 0x32, - 0x83, 0x4e, 0x9f, 0x37, 0xd0, 0xd8, 0xff, 0x66, 0x01, 0x4e, 0xe6, 0x13, 0xb2, 0x17, 0x60, 0xe4, - 0xee, 0x46, 0x2d, 0xb1, 0x4d, 0xc5, 0x4f, 0xf1, 0xbb, 0xa8, 0x14, 0xb2, 0x65, 0x11, 0x7b, 0x0d, - 0x46, 0xde, 0xb7, 0x97, 0x13, 0x13, 0x4c, 0xdc, 0xe0, 0xbe, 0x21, 0x24, 0x2f, 0xe3, 0x54, 0x93, - 0x48, 0xfa, 0xd8, 0x96, 0x9e, 0xd8, 0xd8, 0xfe, 0x78, 0x11, 0xa6, 0xab, 0x8d, 0x06, 0x0f, 0x43, - 0x99, 0x18, 0xf9, 0xa9, 0x1d, 0xd8, 0xfc, 0xd8, 0xd8, 0xc6, 0xb7, 0x0d, 0x34, 0xaa, 0x7f, 0xbf, - 0x40, 0x19, 0x06, 0x04, 0xd5, 0x9e, 0xc7, 0x1f, 0x6e, 0xec, 0x04, 0x3c, 0xdc, 0xf1, 0x5b, 0xcd, - 0x41, 0x13, 0xe0, 0xa3, 0xcc, 0x88, 0xc9, 0x83, 0x75, 0xeb, 0xa0, 0x2d, 0x84, 0x18, 0x32, 0x23, - 0x25, 0x18, 0xbe, 0x04, 0xa3, 0xd5, 0x6e, 0x37, 0xf0, 0xf7, 0x68, 0xd9, 0xcb, 0xa4, 0x52, 0x2e, - 0x81, 0x8c, 0x70, 0xa5, 0x04, 0x12, 0xcd, 0x58, 0xe1, 0x9d, 0x7d, 0xdd, 0x20, 0xb4, 0xc9, 0x3b, - 0xfa, 0xa5, 0x04, 0xcb, 0xad, 0x3a, 0xb0, 0x5a, 0xe0, 0xb7, 0xfd, 0x88, 0x37, 0xe9, 0x7b, 0x30, - 0xca, 0xeb, 0x91, 0x09, 0x39, 0x36, 0xbc, 0xa8, 0x65, 0x24, 0xe4, 0x88, 0x04, 0xc0, 0x26, 0xb8, - 0x38, 0xbb, 0xcf, 0x18, 0x7d, 0xba, 0x12, 0xec, 0xdb, 0xbd, 0xce, 0x6a, 0x27, 0xf0, 0x1a, 0x3b, - 0x18, 0x3e, 0xe3, 0x0e, 0x80, 0xcd, 0xdd, 0xd0, 0xef, 0x68, 0xc2, 0xda, 0x45, 0x21, 0x7e, 0x05, - 0x08, 0xcd, 0xea, 0x1d, 0x66, 0x24, 0xa7, 0x84, 0xca, 0xd6, 0x38, 0xb0, 0x2a, 0x4c, 0xd2, 0x2f, - 0xf1, 0x31, 0xdd, 0x58, 0x10, 0x7f, 0x86, 0x82, 0x59, 0x20, 0xcb, 0x2e, 0x96, 0x98, 0x31, 0xb6, - 0x34, 0x0a, 0xeb, 0xff, 0x1a, 0x86, 0x09, 0x7d, 0x48, 0x99, 0x45, 0x39, 0xf6, 0xfd, 0x40, 0x0f, - 0xb6, 0xec, 0x22, 0xc4, 0x96, 0x25, 0x49, 0xa4, 0xf2, 0xe2, 0x91, 0x91, 0xca, 0x1f, 0xc0, 0x64, - 0x2d, 0xf0, 0x31, 0x65, 0x17, 0x9a, 0x6a, 0xc8, 0xfd, 0x7b, 0x56, 0xd3, 0x1a, 0x88, 0xd9, 0x87, - 0xc6, 0x20, 0x78, 0x2f, 0xeb, 0x4a, 0x6c, 0x47, 0x88, 0xbe, 0x86, 0xce, 0xcc, 0xe0, 0x43, 0x76, - 0x66, 0xe2, 0x4b, 0xf4, 0xec, 0x99, 0xf4, 0xd1, 0xa6, 0x9d, 0x99, 0x80, 0xe8, 0x1b, 0xc4, 0xf0, - 0x93, 0xda, 0x20, 0xd8, 0xcf, 0x14, 0x60, 0xbc, 0xda, 0xe9, 0xc8, 0x08, 0xe8, 0x47, 0x84, 0x57, - 0xfd, 0x8a, 0x34, 0x35, 0x7b, 0xe7, 0x23, 0x99, 0x9a, 0xa1, 0xb0, 0x15, 0xa2, 0xa4, 0x9e, 0x54, - 0x68, 0x04, 0x1d, 0x4c, 0xc0, 0xec, 0x1d, 0xa8, 0xc4, 0x2b, 0x73, 0xad, 0xd3, 0xe4, 0x8f, 0x78, - 0x38, 0x3f, 0x7a, 0xb6, 0x74, 0x7e, 0x52, 0x26, 0x2f, 0xd5, 0x25, 0xf3, 0x34, 0x22, 0xdb, 0x00, - 0x70, 0xe3, 0x25, 0x21, 0x5f, 0xc0, 0x4f, 0x27, 0xaf, 0x95, 0xa9, 0x35, 0xa3, 0x1e, 0x6a, 0xc4, - 0x6f, 0x7c, 0xcd, 0x37, 0x1f, 0x6a, 0xe2, 0xa5, 0xd5, 0x86, 0xe9, 0x6a, 0x18, 0xf6, 0xda, 0xbc, - 0x1e, 0xb9, 0x41, 0x84, 0xf9, 0xde, 0x61, 0x70, 0xc3, 0x6b, 0x17, 0x49, 0xc5, 0x8c, 0x08, 0x22, - 0x27, 0x27, 0xf9, 0x7b, 0x9a, 0x37, 0xa5, 0x8a, 0xb5, 0x4f, 0x65, 0xdb, 0x4b, 0x2b, 0xf5, 0xc7, - 0x0b, 0x70, 0x52, 0x9f, 0xf4, 0xf5, 0xde, 0xa6, 0x4c, 0x75, 0xc6, 0x2e, 0xc2, 0x98, 0x9c, 0x93, - 0xf1, 0x25, 0x32, 0x9b, 0xb6, 0x3e, 0x41, 0x61, 0xab, 0x62, 0x1a, 0x0a, 0x1e, 0xf2, 0xd6, 0x31, - 0x9b, 0xda, 0x5c, 0x45, 0x11, 0xbe, 0xd7, 0xc9, 0xbc, 0xfb, 0xe2, 0xb7, 0x39, 0x3f, 0x05, 0xc4, - 0xfa, 0x02, 0xcc, 0x98, 0x23, 0x51, 0xe7, 0x11, 0xbb, 0x00, 0xa3, 0x6a, 0xf8, 0x0a, 0xf9, 0xc3, - 0xa7, 0xca, 0xad, 0x07, 0xc0, 0x32, 0xf4, 0x21, 0xda, 0x84, 0x8a, 0xfb, 0x39, 0x3d, 0x5d, 0x28, - 0x8b, 0x8c, 0x0c, 0xe2, 0xd2, 0xac, 0x6c, 0xdf, 0xb8, 0x11, 0x85, 0x00, 0xd3, 0xbe, 0x7d, 0x7b, - 0x16, 0x66, 0x73, 0x0e, 0x8a, 0x23, 0x04, 0xb9, 0x45, 0x73, 0x83, 0x18, 0x8b, 0xa3, 0x33, 0xab, - 0x6d, 0xe1, 0x0b, 0x30, 0x7c, 0xe4, 0x76, 0x40, 0xd1, 0x2d, 0x52, 0xbb, 0x00, 0x91, 0x7d, 0x22, - 0xc2, 0x9c, 0x1e, 0xde, 0x7d, 0xf8, 0x89, 0x85, 0x77, 0xc7, 0x40, 0x88, 0xda, 0x26, 0x6e, 0x06, - 0x67, 0xc4, 0x02, 0x27, 0xb3, 0x6d, 0x99, 0x24, 0xc4, 0x23, 0xf4, 0x5b, 0x7b, 0x5c, 0xf2, 0x18, - 0xd5, 0x79, 0x60, 0x41, 0x2e, 0x0f, 0x8d, 0x84, 0xfd, 0x52, 0x01, 0x98, 0x84, 0xe8, 0x7b, 0x56, - 0xf9, 0xb0, 0x3d, 0xab, 0xf9, 0x64, 0xf6, 0xac, 0x33, 0xaa, 0x8d, 0xf9, 0x7b, 0x57, 0x4e, 0xb3, - 0xd8, 0x5f, 0x2f, 0xc0, 0x0c, 0x45, 0xf1, 0xd6, 0x1b, 0x7b, 0x68, 0x64, 0xe6, 0xc6, 0x93, 0x69, - 0xec, 0xb3, 0x21, 0x56, 0xdb, 0xa7, 0xad, 0xd9, 0x46, 0xb1, 0x1f, 0x00, 0x88, 0x57, 0x14, 0xa5, - 0xbe, 0x1b, 0xbf, 0xfc, 0x6c, 0xce, 0x2e, 0x10, 0x23, 0x25, 0xf9, 0xe5, 0xa3, 0x98, 0xce, 0xf0, - 0x81, 0x8c, 0xa1, 0xec, 0xcf, 0x50, 0xa2, 0xaa, 0x18, 0x22, 0x33, 0x22, 0xcc, 0x8f, 0x63, 0x2d, - 0x9f, 0xe9, 0x2f, 0xc8, 0x5d, 0xcc, 0x23, 0xa3, 0x44, 0x89, 0xb1, 0x87, 0x42, 0x10, 0xb5, 0xd3, - 0xc9, 0xaa, 0xd2, 0x14, 0x98, 0x68, 0x04, 0x5b, 0x4f, 0x39, 0xe0, 0xfb, 0xec, 0x6f, 0xa7, 0xd5, - 0x5a, 0xa0, 0xfd, 0x2d, 0xe5, 0x74, 0x8b, 0x20, 0xf6, 0x3e, 0xb0, 0x38, 0xfc, 0x35, 0xc1, 0xb8, - 0xca, 0x0f, 0x4f, 0x8f, 0x05, 0x49, 0x18, 0xed, 0x40, 0x15, 0xeb, 0x93, 0x24, 0x4b, 0xcc, 0x38, - 0xcc, 0xc9, 0x8f, 0x16, 0x50, 0x0a, 0xab, 0xb1, 0xb6, 0x12, 0xce, 0x4f, 0x19, 0xf9, 0x26, 0x92, - 0x92, 0xa5, 0xe7, 0x64, 0x3b, 0x4f, 0xc6, 0xf1, 0x39, 0xcc, 0xd0, 0x15, 0xb9, 0xec, 0xd8, 0x55, - 0x18, 0xc3, 0x28, 0x66, 0x37, 0x94, 0xa5, 0xab, 0xb4, 0xba, 0xc3, 0x78, 0x67, 0xce, 0x8e, 0x69, - 0xaf, 0x9a, 0xa0, 0x8a, 0x3b, 0x0c, 0x49, 0x80, 0xa8, 0xd2, 0x97, 0x4a, 0x9a, 0x66, 0xb0, 0xef, - 0x04, 0x3d, 0x33, 0x42, 0x1e, 0x22, 0xb1, 0xaf, 0xc3, 0xf8, 0x6d, 0xf7, 0x91, 0x52, 0x0b, 0x49, - 0xb5, 0xfd, 0x51, 0x2e, 0x83, 0xf8, 0x35, 0x6d, 0xf7, 0x91, 0xd3, 0xec, 0xa5, 0x43, 0x00, 0x93, - 0xcb, 0xa0, 0xc6, 0x92, 0x7d, 0x15, 0x40, 0x7b, 0x67, 0x60, 0x47, 0x56, 0xf0, 0xbc, 0xca, 0xa2, - 0x92, 0xfb, 0xfe, 0x80, 0xfc, 0x35, 0x86, 0x29, 0xc9, 0x61, 0xee, 0x93, 0x93, 0x1c, 0x4e, 0x7c, - 0x72, 0x92, 0x03, 0x3d, 0x73, 0xd1, 0xd8, 0xe3, 0x0e, 0xbe, 0x2f, 0xb5, 0xfc, 0x87, 0xd5, 0xa6, - 0xcc, 0x0e, 0x2a, 0x78, 0x14, 0xec, 0xa7, 0xaa, 0x48, 0xf1, 0x63, 0x01, 0x54, 0xd2, 0x17, 0x83, - 0xf9, 0x53, 0x86, 0x59, 0xee, 0xa1, 0x97, 0x08, 0x52, 0xb7, 0xca, 0x69, 0xe4, 0xf0, 0x18, 0xae, - 0x0b, 0x75, 0x99, 0x8b, 0xc7, 0x7d, 0x18, 0x97, 0xec, 0xf0, 0x72, 0x3a, 0x6f, 0x58, 0x68, 0x1a, - 0xd5, 0x89, 0x72, 0x69, 0x2f, 0x23, 0x0f, 0xa7, 0xd4, 0xd5, 0x55, 0x67, 0xc4, 0xda, 0x50, 0x59, - 0xf7, 0x3b, 0xdb, 0x1b, 0x3c, 0x68, 0x63, 0x3c, 0x1b, 0xb1, 0x37, 0x9d, 0x36, 0x1c, 0x50, 0x54, - 0xb1, 0x11, 0xf6, 0xc6, 0xeb, 0x6c, 0xd3, 0x67, 0xb4, 0xfc, 0xce, 0xb6, 0x13, 0xf1, 0xa0, 0x4d, - 0x81, 0x72, 0x4c, 0xa3, 0xc0, 0x0c, 0x6b, 0xf6, 0xa7, 0x61, 0x21, 0xb3, 0x42, 0xa9, 0xf5, 0x62, - 0xd9, 0x2f, 0x18, 0x06, 0x1a, 0xe9, 0x72, 0xf4, 0xac, 0xfb, 0x94, 0x3a, 0x8d, 0x70, 0xf1, 0xcb, - 0xc9, 0x67, 0xee, 0x01, 0x87, 0xd4, 0xb0, 0xb0, 0x09, 0xa7, 0xfb, 0xee, 0xab, 0x39, 0x19, 0x33, - 0x2f, 0x99, 0x19, 0x33, 0x4f, 0xf7, 0x93, 0xbf, 0x42, 0x2d, 0x6b, 0xe6, 0xcd, 0xa1, 0xf2, 0x6c, - 0x65, 0xae, 0xbf, 0xe8, 0xfa, 0xdd, 0x62, 0x4a, 0x1e, 0x93, 0x57, 0xe5, 0xb3, 0x50, 0x3c, 0x44, - 0x60, 0x2d, 0xae, 0xad, 0x88, 0xbb, 0x31, 0x4a, 0x6c, 0x5a, 0x92, 0x63, 0x21, 0xb1, 0xe9, 0x12, - 0x1f, 0xca, 0x6e, 0x1f, 0x57, 0x34, 0x7b, 0x17, 0xa6, 0xea, 0xdc, 0x0d, 0x1a, 0x3b, 0xb7, 0xf8, - 0xfe, 0x43, 0x3f, 0x68, 0xaa, 0x10, 0x0b, 0x94, 0x83, 0x05, 0x4b, 0xcc, 0x78, 0x50, 0x3a, 0x2e, - 0x5b, 0x51, 0x11, 0xce, 0x86, 0xb1, 0xf6, 0xd3, 0xb9, 0x47, 0x9c, 0x40, 0x38, 0x2c, 0xf8, 0x19, - 0x7b, 0x33, 0x96, 0xe2, 0xb9, 0x0a, 0x07, 0x2b, 0x5d, 0x5d, 0x25, 0x30, 0x47, 0x98, 0xe7, 0x81, - 0xf5, 0xbb, 0x25, 0x60, 0x54, 0xd3, 0xb2, 0xdb, 0x75, 0x31, 0xa6, 0xa0, 0x87, 0x99, 0x13, 0x2a, - 0x12, 0xc7, 0xdd, 0x6c, 0x71, 0x3d, 0xed, 0x88, 0x74, 0x3b, 0x89, 0xcb, 0x9c, 0xf4, 0x2d, 0x38, - 0x43, 0xd8, 0xe7, 0x1c, 0x2c, 0x7e, 0x9c, 0x73, 0xf0, 0xeb, 0xf0, 0x4c, 0xb5, 0xdb, 0x6d, 0x79, - 0x8d, 0xb8, 0x96, 0x6b, 0x7e, 0xa0, 0x66, 0xaf, 0x11, 0x3a, 0xc9, 0x8d, 0xd1, 0x32, 0x2d, 0x3d, - 0x8c, 0x85, 0x26, 0xc4, 0x92, 0xde, 0x40, 0x8f, 0x7e, 0xaa, 0xf6, 0x89, 0x3c, 0x4d, 0x83, 0x46, - 0xa2, 0x78, 0x78, 0x81, 0x12, 0x62, 0x87, 0x93, 0xac, 0x94, 0xca, 0x50, 0x20, 0x5f, 0x10, 0x8e, - 0x49, 0xd8, 0xbb, 0x30, 0x5e, 0xed, 0x45, 0xbe, 0x64, 0x2c, 0xfd, 0xa5, 0x12, 0xcf, 0x26, 0xd9, - 0x14, 0xe3, 0x5e, 0x9c, 0xa0, 0x5b, 0xbf, 0x5f, 0x82, 0xd3, 0xd9, 0xe1, 0x95, 0xa5, 0xf1, 0xfa, - 0x28, 0x1c, 0xb1, 0x3e, 0xf2, 0x66, 0x43, 0x31, 0x49, 0x9b, 0xfe, 0x24, 0x66, 0x03, 0xc5, 0x33, - 0xfc, 0x88, 0xb3, 0xa1, 0x2e, 0xf6, 0xfa, 0x44, 0x18, 0x1a, 0xfa, 0xa8, 0xc2, 0x90, 0xce, 0x85, - 0x5d, 0x80, 0x61, 0x0a, 0xfa, 0x3a, 0x9c, 0xbc, 0xab, 0xa6, 0xe3, 0xbd, 0x12, 0x06, 0xfb, 0xd3, - 0x70, 0x96, 0xf6, 0xa4, 0xf4, 0xc7, 0x2e, 0xed, 0x2b, 0x8e, 0x72, 0xe0, 0x2e, 0x3f, 0x3e, 0x58, - 0xbc, 0x48, 0xca, 0x3f, 0x27, 0xd3, 0x6d, 0xce, 0xe6, 0xbe, 0xa3, 0x5a, 0xa6, 0x55, 0x72, 0x24, - 0x6f, 0xeb, 0x07, 0x61, 0x9e, 0x72, 0x82, 0xe5, 0xac, 0xe4, 0x23, 0x56, 0x4a, 0xe1, 0x63, 0xaf, - 0x14, 0xeb, 0x71, 0x01, 0x16, 0xfb, 0x55, 0x7f, 0xdc, 0x99, 0x76, 0x13, 0x26, 0x69, 0x77, 0xac, - 0x86, 0xfa, 0x6d, 0x9a, 0x92, 0xcf, 0x62, 0x1d, 0x0e, 0xed, 0xa7, 0x8e, 0x1b, 0x66, 0x5a, 0x69, - 0x92, 0xa6, 0x67, 0x45, 0xe9, 0x49, 0xcc, 0x0a, 0xeb, 0x11, 0x9c, 0x56, 0xd2, 0x40, 0x1c, 0x18, - 0x51, 0x95, 0x8b, 0xaf, 0xdc, 0x4d, 0x54, 0xe5, 0xf8, 0x95, 0x29, 0x51, 0x02, 0xcb, 0xd9, 0x15, - 0x28, 0x57, 0x6b, 0x6b, 0x78, 0xc6, 0xeb, 0x31, 0x34, 0xdd, 0xae, 0x47, 0x42, 0x81, 0x11, 0x77, - 0x4a, 0x22, 0x5a, 0x3f, 0x5a, 0x84, 0x89, 0x5a, 0xab, 0xb7, 0xed, 0x75, 0x56, 0xdc, 0xc8, 0x7d, - 0x6a, 0x15, 0xf3, 0x6f, 0x19, 0x8a, 0xf9, 0xd8, 0xa9, 0x3c, 0xfe, 0xb0, 0x81, 0xb4, 0xf2, 0x3f, - 0x5d, 0x80, 0xe9, 0x84, 0x84, 0x84, 0x91, 0x1b, 0x30, 0x24, 0x7e, 0x48, 0xcd, 0xcf, 0xd9, 0x0c, - 0x63, 0xc4, 0xba, 0x18, 0xff, 0x25, 0x55, 0xe5, 0xae, 0x69, 0x0a, 0x24, 0x8a, 0x17, 0x3e, 0x0b, - 0x63, 0x09, 0xdb, 0xac, 0x8c, 0x33, 0xa7, 0xcb, 0x38, 0x63, 0x7a, 0xfa, 0xef, 0x5f, 0x2d, 0x40, - 0x25, 0xfd, 0x25, 0xec, 0x16, 0x8c, 0x0a, 0x4e, 0x1e, 0x0f, 0xd3, 0x81, 0x92, 0x52, 0x98, 0x17, - 0x25, 0x1a, 0x35, 0x0f, 0x3b, 0x9f, 0x13, 0xc4, 0x56, 0x1c, 0x16, 0x6c, 0x0c, 0x9a, 0x1e, 0x63, - 0xe5, 0xb4, 0xee, 0x55, 0x53, 0x02, 0x3b, 0x99, 0xdf, 0x0f, 0x7a, 0xab, 0xff, 0x5d, 0xa3, 0xd5, - 0x52, 0xb8, 0x3a, 0x67, 0x4c, 0xae, 0xdc, 0xa9, 0x8c, 0x93, 0x06, 0xf3, 0x90, 0xcb, 0x2d, 0xae, - 0xa8, 0xc7, 0x15, 0xcf, 0x6c, 0x63, 0x31, 0x1e, 0x7b, 0x15, 0x46, 0xa8, 0x3e, 0x3d, 0x00, 0x64, - 0x17, 0x21, 0xfa, 0x25, 0x91, 0x70, 0xac, 0x9f, 0x2b, 0xc1, 0xc9, 0xa4, 0x79, 0xf7, 0xba, 0x4d, - 0x37, 0xe2, 0x35, 0x37, 0x70, 0xdb, 0xe1, 0x11, 0x2b, 0xe0, 0x7c, 0xa6, 0x69, 0x32, 0x74, 0x0d, - 0xc1, 0xb4, 0x06, 0x59, 0xa9, 0x06, 0xe1, 0x03, 0x00, 0x35, 0x48, 0x35, 0x83, 0xdd, 0x82, 0x52, - 0x9d, 0x47, 0xf2, 0x6c, 0x39, 0x97, 0xe9, 0x55, 0xbd, 0x5d, 0x17, 0xeb, 0x3c, 0xa2, 0x41, 0xa4, - 0x88, 0xed, 0x46, 0x90, 0x18, 0xc1, 0x85, 0x3d, 0x80, 0x91, 0xd5, 0x47, 0x5d, 0xde, 0x88, 0x30, - 0xf1, 0xa9, 0x16, 0x2d, 0x25, 0x9f, 0x1f, 0xe1, 0x12, 0xcb, 0x39, 0x79, 0xeb, 0x32, 0x93, 0xbc, - 0x4b, 0x76, 0x0b, 0x57, 0xa1, 0xac, 0x2a, 0x3f, 0xce, 0xcc, 0x5d, 0x78, 0x0b, 0xc6, 0xb5, 0x4a, - 0x8e, 0x35, 0xe9, 0x7f, 0xbe, 0x00, 0x20, 0x36, 0x5c, 0x39, 0x71, 0x56, 0x33, 0xb2, 0x70, 0x21, - 0x09, 0x12, 0x2a, 0xf7, 0xee, 0x5d, 0x59, 0x74, 0x88, 0x50, 0xbc, 0x06, 0xd3, 0xf5, 0x5d, 0xaf, - 0x9b, 0xa4, 0xb5, 0x33, 0x24, 0x8e, 0x70, 0xd7, 0xeb, 0x3a, 0x52, 0x6b, 0x95, 0x3e, 0x05, 0xd2, - 0x74, 0xd6, 0xff, 0x5b, 0x80, 0x11, 0xf1, 0xd7, 0xfd, 0xab, 0x4f, 0xe9, 0x96, 0x79, 0xc5, 0xd8, - 0x32, 0x67, 0xb4, 0xbc, 0xb7, 0xb8, 0x71, 0x5c, 0x3d, 0x62, 0xb3, 0x3c, 0x90, 0x03, 0x44, 0xc8, - 0xec, 0x3a, 0x8c, 0x4a, 0x6b, 0x48, 0xe9, 0xf5, 0xa5, 0x27, 0xd2, 0x55, 0x76, 0x92, 0xb1, 0x7a, - 0xcb, 0xef, 0xa6, 0xf5, 0x81, 0x8a, 0x5a, 0xdc, 0x5b, 0x54, 0x82, 0x41, 0xd2, 0x51, 0x26, 0x6c, - 0x96, 0xfd, 0x0e, 0xa5, 0x81, 0x0d, 0x97, 0x4e, 0x49, 0x4e, 0xfd, 0x42, 0x30, 0x56, 0xe5, 0xfb, - 0x65, 0xe9, 0x30, 0x26, 0x27, 0x25, 0x93, 0xfc, 0xa7, 0xcd, 0x36, 0x9c, 0xac, 0xd7, 0x6f, 0xa0, - 0xe5, 0x74, 0xcd, 0x0f, 0xa2, 0x6b, 0x7e, 0xf0, 0x50, 0xc6, 0xbc, 0xaa, 0x9b, 0x56, 0x43, 0x79, - 0xf6, 0xac, 0x2f, 0xe7, 0xda, 0xb3, 0x1e, 0x62, 0x59, 0x64, 0x75, 0xe0, 0x54, 0xbd, 0x7e, 0x83, - 0x24, 0x9e, 0x3f, 0x8a, 0xfa, 0x7e, 0xb5, 0x00, 0x33, 0xf5, 0xfa, 0x8d, 0x54, 0x55, 0xeb, 0x2a, - 0xfb, 0x6b, 0xc1, 0x30, 0x5d, 0xc8, 0xef, 0x08, 0x1c, 0x85, 0x02, 0x49, 0xb0, 0x0d, 0x23, 0xd9, - 0x0d, 0x31, 0x61, 0xb5, 0x38, 0xdf, 0x6c, 0xd1, 0xf0, 0x04, 0xec, 0xf3, 0xa1, 0x89, 0x3b, 0x16, - 0x09, 0x65, 0xe6, 0xf3, 0x8e, 0x80, 0x58, 0xbf, 0x75, 0x92, 0x32, 0xda, 0xaa, 0xd9, 0xf2, 0x79, - 0x98, 0x90, 0xf4, 0xe8, 0x2e, 0x27, 0xad, 0xb8, 0x4e, 0x8b, 0x0d, 0x72, 0x8b, 0xe0, 0x94, 0x4b, - 0xf0, 0x7b, 0x07, 0x8b, 0x43, 0xa2, 0x6b, 0x6c, 0x03, 0x9d, 0xdd, 0x85, 0xc9, 0xdb, 0xee, 0x23, - 0x4d, 0x97, 0x47, 0xce, 0xd0, 0x17, 0xc4, 0xae, 0xd2, 0x76, 0x1f, 0x0d, 0x60, 0x2f, 0x6c, 0xd2, - 0xb3, 0x5d, 0x98, 0x32, 0xbf, 0x49, 0xce, 0xc0, 0xec, 0x88, 0xbd, 0x91, 0x3b, 0x62, 0xa7, 0xbb, - 0x7e, 0x10, 0x39, 0x5b, 0x31, 0xb9, 0x91, 0xbd, 0x39, 0xc5, 0x9a, 0x7d, 0x1e, 0x66, 0xb4, 0x94, - 0x42, 0xd7, 0xfc, 0xa0, 0xed, 0xaa, 0x0b, 0x25, 0x3e, 0x70, 0xa1, 0x21, 0xe1, 0x16, 0x82, 0xed, - 0x2c, 0x26, 0xfb, 0x72, 0x9e, 0x83, 0xf9, 0x70, 0x62, 0x34, 0x9d, 0xe3, 0x60, 0xde, 0xcf, 0x68, - 0x3a, 0xeb, 0x6a, 0xbe, 0x7d, 0x98, 0x53, 0x45, 0x99, 0xbe, 0x7e, 0x20, 0xa7, 0x89, 0x78, 0xe4, - 0xfa, 0x38, 0x4f, 0x5c, 0x86, 0xd2, 0x52, 0xed, 0x1a, 0x3e, 0xcb, 0x2a, 0x0b, 0xca, 0xce, 0x8e, - 0xdb, 0x69, 0xe0, 0x45, 0x4f, 0x7a, 0x24, 0xe9, 0x07, 0xe5, 0x52, 0xed, 0x1a, 0x73, 0x61, 0xb6, - 0xc6, 0x83, 0xb6, 0x17, 0x7d, 0xf0, 0xc6, 0x1b, 0xda, 0x50, 0x95, 0xb1, 0x69, 0x97, 0x64, 0xd3, - 0x16, 0xbb, 0x88, 0xe2, 0x3c, 0x7a, 0xe3, 0x8d, 0xdc, 0x01, 0x89, 0x1b, 0x96, 0xc7, 0x4b, 0x1c, - 0x58, 0xb7, 0xdd, 0x47, 0x89, 0xfb, 0x66, 0x28, 0x43, 0x75, 0x9c, 0x51, 0x53, 0x2b, 0x71, 0xfd, - 0x34, 0x0e, 0x2c, 0x93, 0x48, 0xdc, 0xd3, 0x93, 0x09, 0x16, 0x4a, 0x27, 0xe7, 0x05, 0xa5, 0xab, - 0x56, 0xf1, 0x5c, 0xf4, 0x6b, 0x85, 0x86, 0xce, 0xee, 0xc5, 0xda, 0x06, 0xba, 0x43, 0xc9, 0x08, - 0x83, 0x97, 0x74, 0x6d, 0x03, 0xe9, 0xee, 0x8c, 0xcf, 0x9a, 0x8e, 0x55, 0x54, 0xe4, 0xcf, 0x6a, - 0x9b, 0x5c, 0xb2, 0x4a, 0x8c, 0x89, 0xe3, 0x2b, 0x31, 0x38, 0x0c, 0xad, 0xfb, 0x8d, 0x5d, 0x99, - 0x36, 0xe3, 0x7d, 0xb1, 0x0b, 0xb7, 0xfc, 0xc6, 0xee, 0x93, 0x73, 0x16, 0x41, 0xf6, 0xec, 0x0e, - 0x45, 0x38, 0x0b, 0x9a, 0xb2, 0x4f, 0xa4, 0x03, 0xc2, 0x5c, 0x7c, 0x5f, 0xd3, 0xca, 0x92, 0xb8, - 0x67, 0x41, 0x53, 0x75, 0xad, 0x6d, 0x92, 0x33, 0x0e, 0x95, 0x15, 0x1e, 0xee, 0x46, 0x7e, 0x77, - 0xb9, 0xe5, 0x75, 0x31, 0x68, 0xa0, 0x4c, 0x3c, 0x39, 0xf0, 0x9e, 0xdc, 0x24, 0x7a, 0xa7, 0xa1, - 0x18, 0xd8, 0x19, 0x96, 0xec, 0xcb, 0x30, 0x25, 0x26, 0xf7, 0xea, 0xa3, 0x88, 0x77, 0x68, 0xe4, - 0x67, 0x50, 0xa2, 0x9b, 0xd3, 0xf2, 0xc0, 0xc7, 0x85, 0x34, 0xa7, 0x70, 0xb1, 0xf3, 0x98, 0xc0, - 0x48, 0x39, 0x62, 0xb0, 0x62, 0x4d, 0x98, 0xbf, 0xed, 0x3e, 0x4a, 0x2e, 0x9a, 0xfa, 0x24, 0x65, - 0x38, 0xc1, 0xce, 0x3f, 0x3e, 0x58, 0x7c, 0x51, 0x4c, 0xb0, 0x24, 0x17, 0x6a, 0x9f, 0xf9, 0xda, - 0x97, 0x13, 0xfb, 0x26, 0x9c, 0x92, 0x9f, 0xb5, 0xe2, 0x05, 0xe8, 0xa1, 0xb5, 0x5f, 0xdf, 0x71, - 0xd1, 0x73, 0x7b, 0xb6, 0x4f, 0x87, 0x5d, 0xca, 0xdf, 0x12, 0x55, 0x87, 0x35, 0x15, 0x1f, 0x27, - 0x24, 0x46, 0x76, 0xbf, 0x1a, 0xd8, 0x87, 0x30, 0x45, 0x6f, 0xd1, 0x37, 0xfc, 0x30, 0x42, 0x15, - 0xc1, 0xdc, 0xf1, 0x3c, 0xaa, 0xe8, 0x81, 0x9b, 0x7c, 0x2c, 0x53, 0x2a, 0x85, 0x14, 0x67, 0xf6, - 0x0e, 0x1a, 0x2d, 0x53, 0x52, 0xa0, 0xb5, 0x1a, 0xbe, 0xa9, 0xc8, 0x13, 0xa8, 0xeb, 0x75, 0x1c, - 0x75, 0xf7, 0xef, 0xc6, 0xdb, 0x85, 0x8e, 0xcd, 0x1e, 0xc0, 0x78, 0xbd, 0x7e, 0xe3, 0x9a, 0x27, - 0xe4, 0x92, 0xae, 0x7a, 0x22, 0xc9, 0xb6, 0xf2, 0x85, 0xdc, 0x56, 0x4e, 0x86, 0xe1, 0x8e, 0xb3, - 0xe5, 0xb5, 0xb8, 0xd3, 0xf0, 0xbb, 0xfb, 0xb6, 0xce, 0x29, 0xc7, 0xcb, 0xe8, 0xd4, 0x13, 0xf6, - 0x32, 0x5a, 0x83, 0x69, 0xcd, 0x72, 0x1e, 0x0d, 0xb1, 0xe6, 0x93, 0xb0, 0xe6, 0xba, 0x57, 0x51, - 0x3a, 0x28, 0x45, 0x9a, 0x4e, 0xb9, 0x17, 0x9d, 0x3e, 0xae, 0x7b, 0x91, 0x07, 0x33, 0x34, 0x18, - 0x72, 0x1e, 0xe0, 0x48, 0x2f, 0xf4, 0xe9, 0xc3, 0x0b, 0xb9, 0x7d, 0x38, 0x2b, 0x47, 0x5a, 0x4d, - 0x32, 0xb4, 0xbd, 0xc8, 0x72, 0x65, 0x5b, 0xc0, 0x24, 0xd0, 0x8d, 0xdc, 0x4d, 0x37, 0xe4, 0x58, - 0xd7, 0x33, 0x7d, 0xea, 0x7a, 0x31, 0xb7, 0xae, 0x29, 0x55, 0xd7, 0x26, 0x55, 0x93, 0xc3, 0x91, - 0x75, 0x54, 0x3d, 0x6a, 0x7e, 0x61, 0xc7, 0x3e, 0x6b, 0xe8, 0xf0, 0xb3, 0x08, 0xe4, 0xd8, 0x9c, - 0x9e, 0xb4, 0xe9, 0x7e, 0xcf, 0xe1, 0xcc, 0x1e, 0xc1, 0xc9, 0x6c, 0x2b, 0xb0, 0xce, 0x33, 0x58, - 0xe7, 0x19, 0xa3, 0xce, 0x34, 0x12, 0xcd, 0x1b, 0xf3, 0xb3, 0xd2, 0xb5, 0xf6, 0xe1, 0xcf, 0x7e, - 0xb8, 0x00, 0xa7, 0x6e, 0x5f, 0xab, 0xde, 0xe7, 0x01, 0x89, 0x25, 0x9e, 0xdf, 0x89, 0x83, 0x79, - 0x3c, 0x27, 0xdf, 0x79, 0xd2, 0x4f, 0x85, 0x4a, 0xe2, 0xc0, 0xad, 0x42, 0x88, 0xee, 0x2f, 0xb4, - 0xb7, 0x5c, 0x67, 0x4f, 0x63, 0x91, 0x13, 0xf1, 0xe3, 0x3b, 0xbf, 0xb7, 0x58, 0xb0, 0xfb, 0x55, - 0xc5, 0x5a, 0xb0, 0x60, 0x76, 0x8b, 0x72, 0x00, 0xdb, 0xe1, 0xad, 0xd6, 0xfc, 0x22, 0xce, 0xe8, - 0x57, 0x1f, 0x1f, 0x2c, 0x9e, 0xcf, 0xf4, 0x6e, 0xec, 0x54, 0x26, 0x30, 0xf5, 0x87, 0xaf, 0xfe, - 0xfc, 0x58, 0x3b, 0x47, 0xe8, 0x9e, 0x3f, 0x6b, 0x44, 0xfd, 0xcb, 0x94, 0xc7, 0xa1, 0x2c, 0xcf, - 0x88, 0xf5, 0xde, 0x57, 0x40, 0xb4, 0xb3, 0x9c, 0x6f, 0x0e, 0x95, 0x27, 0x2b, 0x53, 0x39, 0x9e, - 0x51, 0xd6, 0x6f, 0x14, 0x53, 0x07, 0x23, 0x5b, 0x83, 0x51, 0x39, 0xdf, 0xfb, 0x5e, 0x32, 0xce, - 0xe4, 0xce, 0xea, 0x51, 0xb9, 0x74, 0x6c, 0x45, 0xcf, 0x1e, 0x0a, 0x56, 0xf8, 0xd1, 0xf2, 0xc6, - 0xfb, 0x55, 0x3a, 0xf7, 0x10, 0x64, 0x9c, 0xf0, 0x2b, 0xc7, 0xf7, 0x22, 0x36, 0x7d, 0xcd, 0xf1, - 0xa8, 0x57, 0xb5, 0xb1, 0x5d, 0x28, 0xd5, 0xeb, 0x37, 0xe4, 0xa5, 0xf9, 0x4b, 0x72, 0x87, 0xfc, - 0x04, 0x2a, 0x14, 0xb5, 0x58, 0xbf, 0x5e, 0x80, 0x49, 0xe3, 0x64, 0x65, 0x57, 0x35, 0x3f, 0xeb, - 0xe4, 0x55, 0xd8, 0xc0, 0xc1, 0xcd, 0x36, 0xed, 0x81, 0x7d, 0x55, 0x0b, 0x92, 0xdb, 0x87, 0x0e, - 0x17, 0x5b, 0x3a, 0xa8, 0x80, 0x32, 0xb3, 0x2d, 0xf5, 0x33, 0xb3, 0xa5, 0x80, 0x67, 0x43, 0x89, - 0x99, 0x2d, 0xea, 0x57, 0x6c, 0x82, 0x5b, 0xbf, 0xbf, 0x08, 0x53, 0xe6, 0x8d, 0x98, 0xbd, 0x0a, - 0x23, 0xf8, 0xf6, 0xa0, 0xd4, 0x2b, 0xa8, 0x16, 0xc2, 0xe7, 0x09, 0xc3, 0x13, 0x8d, 0x70, 0xd8, - 0x4b, 0x00, 0xb1, 0xcb, 0x86, 0xd2, 0xa9, 0x0f, 0x3f, 0x3e, 0x58, 0x2c, 0xbc, 0x66, 0x6b, 0x05, - 0xec, 0x6b, 0x00, 0x77, 0xfc, 0x26, 0x97, 0x49, 0xe1, 0x4b, 0x87, 0x99, 0x1e, 0xbd, 0x9c, 0x49, - 0x0a, 0x7f, 0xa2, 0xe3, 0x37, 0x79, 0x36, 0x03, 0xbc, 0xc6, 0x91, 0xbd, 0x0d, 0xc3, 0x76, 0xaf, - 0xc5, 0xd5, 0x0b, 0xcd, 0xb8, 0x3a, 0xe1, 0x7a, 0x2d, 0x9e, 0xe8, 0x09, 0x82, 0x5e, 0xda, 0xaa, - 0x56, 0x00, 0xd8, 0x7b, 0x94, 0x2c, 0x5e, 0x26, 0x9e, 0x19, 0x4e, 0xde, 0x22, 0x35, 0xc9, 0x27, - 0x93, 0x7a, 0x46, 0x23, 0x61, 0x77, 0x61, 0x54, 0x7f, 0x44, 0xd3, 0xa2, 0xdd, 0xe8, 0x0f, 0xad, - 0x9a, 0xd2, 0x41, 0xc6, 0xd4, 0x4f, 0xbf, 0xaf, 0x29, 0x2e, 0xec, 0x5d, 0x18, 0x13, 0xec, 0xc5, - 0xce, 0x11, 0xca, 0x5b, 0x0d, 0xbe, 0xa3, 0x68, 0x0d, 0x12, 0xbb, 0x8f, 0x11, 0x5a, 0x3f, 0x26, - 0x60, 0x5f, 0x86, 0xb1, 0x6a, 0xb7, 0x2b, 0xbb, 0xfa, 0x50, 0x93, 0xb4, 0x73, 0x99, 0xae, 0x9e, - 0x73, 0xbb, 0xdd, 0x6c, 0x4f, 0x27, 0xfc, 0xd8, 0x76, 0x1c, 0x6c, 0x75, 0x90, 0x04, 0xff, 0xaf, - 0x64, 0x2a, 0x98, 0x57, 0xf1, 0x43, 0x33, 0x95, 0x98, 0x7c, 0x59, 0x17, 0x2a, 0x89, 0x50, 0x29, - 0xeb, 0x82, 0xc3, 0xea, 0x7a, 0x2d, 0x53, 0x97, 0x3e, 0x80, 0x99, 0xea, 0x32, 0xdc, 0x59, 0x13, - 0xa6, 0xd4, 0x01, 0x25, 0xeb, 0x1b, 0x3f, 0xac, 0xbe, 0x97, 0x32, 0xf5, 0xcd, 0x36, 0x37, 0xb3, - 0xf5, 0xa4, 0x78, 0xb2, 0x77, 0x61, 0x52, 0x41, 0x70, 0x7d, 0xa0, 0x29, 0x98, 0x54, 0x08, 0x36, - 0x37, 0xd1, 0x49, 0xcc, 0xe8, 0x15, 0x03, 0x59, 0xa7, 0xa6, 0xd9, 0x31, 0x69, 0x50, 0xa7, 0x67, - 0x85, 0x89, 0xcc, 0xbe, 0x04, 0xe3, 0x6b, 0x6d, 0xf1, 0x21, 0x7e, 0xc7, 0x8d, 0xb8, 0x74, 0xe5, - 0x56, 0xe6, 0x75, 0x5a, 0x89, 0x36, 0x55, 0x29, 0x2b, 0x7a, 0x52, 0x64, 0x64, 0x45, 0x4f, 0xc0, - 0xa2, 0xf3, 0xe8, 0xd5, 0x54, 0xce, 0x61, 0xe5, 0xe6, 0x7d, 0x26, 0xc7, 0xc4, 0x4d, 0x63, 0x2f, - 0xd3, 0x86, 0x08, 0xa8, 0x7a, 0xb5, 0x4c, 0x25, 0x78, 0xd2, 0x79, 0xb2, 0xcf, 0xc3, 0x78, 0xf5, - 0x41, 0x5d, 0x6c, 0x58, 0x55, 0xfb, 0x4e, 0x38, 0x5f, 0x49, 0x2c, 0xf4, 0xdd, 0x87, 0xf4, 0x6a, - 0xe7, 0xb8, 0x41, 0xca, 0x96, 0x3b, 0xc1, 0x67, 0x1f, 0xc0, 0xdc, 0x03, 0xaf, 0xd3, 0xf4, 0x1f, - 0x86, 0xf2, 0x98, 0x92, 0x1b, 0xdd, 0x4c, 0xf2, 0x14, 0xf8, 0x90, 0xca, 0x63, 0x59, 0x30, 0xb3, - 0xf1, 0xe5, 0x72, 0x60, 0x3f, 0x94, 0xe1, 0x4c, 0x33, 0x88, 0x1d, 0x36, 0x83, 0x2e, 0x67, 0x66, - 0x50, 0xb6, 0xfa, 0xf4, 0x74, 0xca, 0xad, 0x86, 0xf9, 0xc0, 0xcc, 0xf3, 0xfd, 0xa6, 0xef, 0x75, - 0xe6, 0x67, 0x71, 0x2f, 0x7c, 0x26, 0x1d, 0xf0, 0x05, 0xf1, 0x6a, 0x7e, 0xcb, 0x6b, 0xec, 0x53, - 0x9a, 0xbf, 0xb4, 0xcc, 0xff, 0xa1, 0x6f, 0x3c, 0x97, 0xe4, 0xb0, 0x66, 0x5f, 0x82, 0x09, 0xf1, - 0x7f, 0xac, 0x94, 0x98, 0x33, 0x8c, 0xa2, 0x35, 0x4c, 0x59, 0x0f, 0x8e, 0x91, 0xe0, 0x9b, 0xa7, - 0xaf, 0x30, 0x58, 0xb1, 0xb7, 0x00, 0x84, 0xd8, 0x24, 0xb7, 0xe3, 0x13, 0x49, 0x86, 0x2c, 0x94, - 0xba, 0xb2, 0x1b, 0x71, 0x82, 0xcc, 0xde, 0x85, 0x71, 0xf1, 0xab, 0xde, 0x6b, 0xfa, 0x62, 0x6d, - 0x9c, 0x44, 0x5a, 0xf2, 0xaa, 0x17, 0xb4, 0x21, 0xc1, 0x0d, 0xaf, 0xfa, 0x04, 0x9d, 0xdd, 0x80, - 0x69, 0xcc, 0x7b, 0x26, 0x73, 0xe8, 0x78, 0x3c, 0x9c, 0x3f, 0xa5, 0xbd, 0x61, 0x8b, 0x22, 0xc7, - 0x8b, 0xcb, 0xf4, 0xbb, 0x4c, 0x8a, 0x8c, 0x85, 0x30, 0x9b, 0x7d, 0xc3, 0x0d, 0xe7, 0xe7, 0xb1, - 0x93, 0x94, 0x04, 0x9f, 0xc5, 0xa0, 0xfd, 0x58, 0x8c, 0x88, 0xb6, 0x71, 0xa9, 0x47, 0x25, 0xbd, - 0xc2, 0x3c, 0xee, 0xcc, 0x06, 0x76, 0x7d, 0xb9, 0x96, 0x4e, 0xf5, 0x75, 0x1a, 0xbf, 0x00, 0x87, - 0x79, 0xbb, 0xd1, 0x75, 0x0e, 0x49, 0xf7, 0x95, 0x43, 0xcd, 0xfe, 0x14, 0x9c, 0x50, 0x3b, 0x88, - 0x2c, 0x92, 0xf3, 0x7a, 0xe1, 0x98, 0x3b, 0x71, 0x73, 0x33, 0xae, 0x3a, 0x33, 0xa5, 0xf3, 0xab, - 0x60, 0x2e, 0x8c, 0xe3, 0xb0, 0xca, 0x1a, 0x9f, 0x39, 0xac, 0xc6, 0xf3, 0x99, 0x1a, 0x4f, 0xe2, - 0x44, 0xc9, 0x56, 0xa6, 0xf3, 0xa4, 0xdc, 0x1d, 0xb8, 0x8e, 0xe4, 0x6c, 0x7b, 0x16, 0x7b, 0x4b, - 0xe6, 0xee, 0xa0, 0x15, 0x98, 0x99, 0x70, 0x26, 0x89, 0xbe, 0x23, 0xd3, 0x63, 0xd2, 0x19, 0x63, - 0x47, 0xce, 0x58, 0x12, 0x18, 0xc8, 0x62, 0x47, 0x4a, 0xa4, 0x98, 0xd5, 0x47, 0xdd, 0x40, 0xaa, - 0xa8, 0x9e, 0x4b, 0xb2, 0xac, 0x6b, 0xc2, 0x8f, 0xc3, 0x63, 0x0c, 0x7d, 0x4b, 0xc8, 0xe3, 0xc0, - 0xee, 0xc1, 0x6c, 0x7c, 0x6a, 0x6b, 0x8c, 0x17, 0x93, 0x64, 0x52, 0xc9, 0x51, 0x9f, 0xcf, 0x37, - 0x8f, 0x9e, 0xb9, 0x70, 0xca, 0x38, 0xa7, 0x35, 0xd6, 0x67, 0x91, 0xf5, 0xcb, 0xe2, 0x46, 0x66, - 0x1e, 0xf2, 0xf9, 0xec, 0xfb, 0xf1, 0x61, 0x1f, 0xc2, 0x42, 0xfa, 0x6c, 0xd6, 0x6a, 0x79, 0x1e, - 0x6b, 0x79, 0xe5, 0xf1, 0xc1, 0xe2, 0xb9, 0xcc, 0xf1, 0x9e, 0x5f, 0xd1, 0x21, 0xdc, 0xd8, 0xd7, - 0x60, 0xde, 0x3c, 0x9f, 0xb5, 0x9a, 0x2c, 0xac, 0x09, 0x97, 0x4e, 0x7c, 0xb0, 0xe7, 0xd7, 0xd0, - 0x97, 0x07, 0x8b, 0x60, 0x31, 0x77, 0x76, 0x6b, 0xd5, 0xbc, 0x90, 0x7c, 0x50, 0x66, 0x95, 0xe4, - 0x57, 0x77, 0x14, 0x4b, 0xf6, 0x10, 0x9e, 0xcb, 0x3b, 0x26, 0xb4, 0x4a, 0x5f, 0x8c, 0x95, 0xc0, - 0x9f, 0xce, 0x3f, 0x72, 0xf2, 0x6b, 0x3e, 0x82, 0x2d, 0xfb, 0x32, 0x9c, 0xd0, 0xd6, 0x97, 0x56, - 0xdf, 0x4b, 0x58, 0x1f, 0xc6, 0x81, 0xd0, 0x17, 0x66, 0x7e, 0x2d, 0xf9, 0x3c, 0x58, 0x1b, 0x66, - 0xd5, 0x87, 0xa3, 0xb6, 0x5d, 0x1e, 0x3d, 0xe7, 0x8c, 0x5d, 0x35, 0x8b, 0xb1, 0x74, 0x56, 0xee, - 0xaa, 0xf3, 0xcd, 0x4d, 0xa7, 0x9b, 0x10, 0xea, 0x33, 0x3d, 0x87, 0x2f, 0xbb, 0x01, 0x23, 0xf5, - 0xda, 0xda, 0xb5, 0x6b, 0xab, 0xf3, 0x2f, 0x63, 0x0d, 0xca, 0xd3, 0x93, 0x80, 0xc6, 0xa5, 0x49, - 0x9a, 0x63, 0x76, 0xbd, 0xad, 0x2d, 0xe3, 0xc1, 0x8a, 0x50, 0xd9, 0x0f, 0xa1, 0x21, 0xa4, 0xd8, - 0x51, 0xab, 0x61, 0xe8, 0x6d, 0x77, 0x28, 0x4d, 0xd7, 0x2b, 0xc6, 0x7b, 0xbf, 0x4a, 0xdc, 0xb6, - 0x8c, 0x19, 0xea, 0x33, 0xe8, 0x89, 0xc1, 0xad, 0xdc, 0xb9, 0x1d, 0x37, 0x61, 0xa5, 0x6f, 0xe2, - 0xd9, 0x8a, 0x44, 0xbf, 0x6d, 0x7b, 0x91, 0xb3, 0xd3, 0x33, 0x3e, 0x7f, 0xfe, 0xd3, 0x86, 0x85, - 0xef, 0x75, 0x2f, 0xba, 0xd1, 0xdb, 0xd4, 0x7a, 0xed, 0x45, 0x59, 0xe1, 0xb3, 0x74, 0x5b, 0xee, - 0xd3, 0x73, 0x33, 0xdb, 0x29, 0xba, 0x90, 0xfd, 0xf9, 0x02, 0x9c, 0x7c, 0xe0, 0x07, 0xbb, 0x2d, - 0xdf, 0x6d, 0xaa, 0xaf, 0x92, 0x7b, 0xf8, 0xab, 0x87, 0xed, 0xe1, 0x9f, 0xc9, 0xec, 0xe1, 0xd6, - 0x43, 0xc9, 0xc6, 0x89, 0xf3, 0xde, 0x65, 0xf6, 0xf3, 0x3e, 0x55, 0xb1, 0x1f, 0x82, 0xb3, 0xf9, - 0x25, 0xda, 0xa4, 0x7c, 0x0d, 0x27, 0xe5, 0x1b, 0x8f, 0x0f, 0x16, 0x5f, 0xeb, 0x57, 0x53, 0xfe, - 0x04, 0x3d, 0x92, 0x35, 0x7b, 0x1b, 0x4a, 0xb7, 0x97, 0x6b, 0xf3, 0x17, 0x8d, 0xa7, 0xe7, 0xdb, - 0xcb, 0x35, 0xad, 0xa3, 0x48, 0xa3, 0xd9, 0x6e, 0x18, 0x1a, 0xcd, 0xdb, 0xcb, 0xb5, 0x9b, 0x43, - 0xe5, 0xf3, 0x95, 0x0b, 0x37, 0x87, 0xca, 0x17, 0x2a, 0xaf, 0xd8, 0xcf, 0xd6, 0xab, 0xb7, 0xd7, - 0xd7, 0x9a, 0xea, 0x60, 0x56, 0x69, 0xfd, 0xa8, 0x3e, 0xfb, 0xdc, 0x61, 0xa5, 0x49, 0x6b, 0xac, - 0xbf, 0x52, 0x80, 0xc5, 0x23, 0x26, 0x98, 0x38, 0x0b, 0x93, 0xc6, 0xd5, 0xe3, 0xa4, 0x36, 0xe4, - 0x46, 0x1a, 0x17, 0x38, 0xa6, 0xc9, 0x89, 0x49, 0x82, 0x2e, 0xc6, 0x32, 0x7f, 0xad, 0xe6, 0x69, - 0x9e, 0xcd, 0x5b, 0xab, 0xb0, 0xac, 0x75, 0xa8, 0xa4, 0x27, 0x1e, 0xfb, 0x1c, 0x4c, 0xea, 0x89, - 0xd8, 0x94, 0x1a, 0x82, 0xe2, 0x2b, 0x05, 0xdb, 0xc6, 0x61, 0x6a, 0x20, 0x5a, 0xe7, 0x60, 0xca, - 0xec, 0x62, 0x36, 0x07, 0xc3, 0x91, 0xef, 0xb7, 0x24, 0x0f, 0x9b, 0x7e, 0x58, 0x3f, 0x5f, 0x80, - 0xd9, 0x9c, 0x55, 0xcc, 0xce, 0xc1, 0x50, 0xcd, 0x8d, 0x76, 0x74, 0xcb, 0xa4, 0xae, 0x6b, 0x44, - 0x52, 0xc3, 0x72, 0xf6, 0x3a, 0x8c, 0xae, 0xdc, 0xa9, 0xd7, 0xab, 0x77, 0x94, 0xc2, 0x83, 0x0e, - 0xfb, 0x4e, 0xe8, 0x84, 0xae, 0x69, 0xd0, 0x20, 0xd1, 0xd8, 0x6b, 0x30, 0xb2, 0x56, 0x43, 0x02, - 0x2d, 0xa9, 0x9e, 0xd7, 0x4d, 0xe3, 0x4b, 0x24, 0xeb, 0xdb, 0x05, 0x60, 0xd9, 0x2d, 0x89, 0xbd, - 0x01, 0xe3, 0xfa, 0xc6, 0x47, 0xfd, 0x82, 0xaf, 0xbc, 0xda, 0xe2, 0xb4, 0x75, 0x1c, 0xb6, 0x02, - 0xc3, 0x98, 0x9a, 0x3b, 0xb6, 0xa4, 0xc8, 0x5d, 0x7a, 0xa7, 0x32, 0x4b, 0x6f, 0x18, 0xd3, 0x7d, - 0xdb, 0x44, 0x6c, 0xfd, 0x61, 0x01, 0x58, 0xbe, 0x51, 0xe2, 0x40, 0x96, 0x5c, 0x6f, 0x6a, 0x11, - 0x4d, 0x74, 0xab, 0xc4, 0x8e, 0x02, 0xea, 0xaa, 0x86, 0x24, 0xf6, 0xc9, 0x39, 0x43, 0xb5, 0xd5, - 0xdf, 0x0d, 0xfe, 0x02, 0x0c, 0xdf, 0xe7, 0xc1, 0xa6, 0x32, 0x8d, 0x47, 0x73, 0xda, 0x3d, 0x01, - 0xd0, 0x55, 0x3d, 0x88, 0x61, 0x98, 0x47, 0x0e, 0x0f, 0x6a, 0x1e, 0xf9, 0xfb, 0x05, 0x98, 0xcb, - 0xbb, 0x3c, 0x1d, 0xe1, 0xe2, 0x6e, 0xa5, 0xbc, 0xf3, 0xd1, 0xf4, 0x8b, 0x0c, 0x74, 0x63, 0x9f, - 0xfc, 0x45, 0x18, 0x16, 0x3d, 0xa4, 0xa6, 0x05, 0xea, 0xe7, 0x44, 0x17, 0x86, 0x36, 0xc1, 0x05, - 0x42, 0x92, 0x95, 0x69, 0x98, 0x10, 0x28, 0x19, 0x13, 0xc1, 0x05, 0xc2, 0x6d, 0xbf, 0xc9, 0x95, - 0xde, 0x0a, 0x11, 0xda, 0x02, 0x60, 0x13, 0x9c, 0x9d, 0x83, 0xd1, 0xbb, 0x9d, 0x75, 0xee, 0xee, - 0xa9, 0x9c, 0xab, 0x68, 0xaa, 0xe6, 0x77, 0x9c, 0x96, 0x80, 0xd9, 0xaa, 0xd0, 0xfa, 0xe9, 0x02, - 0xcc, 0x64, 0xee, 0x6d, 0x47, 0x7b, 0xf1, 0x1f, 0xee, 0x99, 0x3a, 0xc8, 0xf7, 0x51, 0xf3, 0x87, - 0xf2, 0x9b, 0x6f, 0xfd, 0xb7, 0x23, 0x70, 0xaa, 0x8f, 0x1a, 0x2d, 0xf1, 0x9c, 0x2f, 0x1c, 0xe9, - 0x39, 0xff, 0x15, 0x98, 0x5c, 0x6e, 0xb9, 0x5e, 0x3b, 0xdc, 0xf0, 0x93, 0x16, 0x27, 0x0e, 0x78, - 0x58, 0x26, 0x1d, 0x50, 0x62, 0x4f, 0xad, 0xd3, 0x0d, 0xa4, 0x70, 0x22, 0x3f, 0x2b, 0xc5, 0x1b, - 0xcc, 0x32, 0xbe, 0xeb, 0xa5, 0x3f, 0x26, 0xbe, 0xeb, 0xa6, 0x37, 0xe5, 0xd0, 0x13, 0xf5, 0xa6, - 0xcc, 0x37, 0xb6, 0x1f, 0xfe, 0x38, 0xae, 0x17, 0xcb, 0x69, 0x13, 0xed, 0x91, 0x8c, 0x7d, 0xdf, - 0xd1, 0xb6, 0xd9, 0x37, 0x4c, 0xcf, 0xbf, 0x51, 0x7c, 0xcc, 0x3e, 0xd7, 0xdf, 0xb3, 0xcf, 0x0c, - 0x1f, 0xa5, 0x7b, 0xf8, 0x7d, 0x13, 0xe6, 0xf2, 0xee, 0xe1, 0xf3, 0x65, 0xc3, 0x0c, 0xb8, 0xaf, - 0xcd, 0xf6, 0xe0, 0xb7, 0xf9, 0xdd, 0xdc, 0xdb, 0xbc, 0x8a, 0xc8, 0x30, 0xd6, 0xdf, 0x9d, 0x2d, - 0x59, 0x0b, 0x84, 0x7b, 0x78, 0xdc, 0x06, 0xeb, 0x2f, 0xa6, 0x63, 0x6a, 0xa4, 0xe9, 0xd9, 0x3b, - 0x46, 0xe8, 0xb3, 0x97, 0xb3, 0xa1, 0xcf, 0xf2, 0xc3, 0x68, 0xd0, 0x53, 0xc4, 0xab, 0x30, 0x22, - 0x6d, 0x41, 0xb4, 0x70, 0x24, 0x19, 0x1b, 0x10, 0x89, 0x63, 0xfd, 0x74, 0xd1, 0x0c, 0x1b, 0xf0, - 0xc7, 0x71, 0x5d, 0x5f, 0x80, 0xe1, 0x07, 0x3b, 0x3c, 0x50, 0x47, 0x10, 0x36, 0xe4, 0xa1, 0x00, - 0xe8, 0x0d, 0x41, 0x0c, 0x76, 0x0d, 0xa6, 0x6a, 0x34, 0xcf, 0xd5, 0xe4, 0x1d, 0x4a, 0x74, 0x47, - 0x5d, 0xa9, 0xe1, 0xcc, 0x99, 0xbd, 0x29, 0x2a, 0xeb, 0x7a, 0x6a, 0x88, 0x64, 0x98, 0x37, 0xf2, - 0x60, 0x23, 0x21, 0x65, 0x2a, 0x71, 0xe8, 0x4c, 0xf6, 0x66, 0x3b, 0x05, 0xb5, 0xb6, 0xe0, 0xb9, - 0x43, 0x19, 0x09, 0xd9, 0x00, 0xba, 0xf1, 0xaf, 0x94, 0x05, 0xf9, 0xa1, 0xa4, 0xb6, 0x46, 0x67, - 0xad, 0x27, 0x3e, 0x9e, 0x6b, 0x2b, 0xe8, 0x64, 0xfa, 0x36, 0x4c, 0xe8, 0xfe, 0x0e, 0x92, 0x73, - 0x8e, 0x7b, 0xc4, 0x90, 0x18, 0x10, 0x7b, 0x5c, 0x21, 0xaf, 0x35, 0x43, 0xeb, 0x7f, 0x2d, 0xc1, - 0x7c, 0x3f, 0x2f, 0x47, 0xf6, 0x13, 0x71, 0xc4, 0x1c, 0x74, 0xe1, 0xf3, 0x4d, 0x5f, 0x93, 0xf1, - 0xcb, 0x6f, 0x1f, 0xe1, 0x26, 0x79, 0x31, 0x97, 0x98, 0x8c, 0x9f, 0x63, 0x57, 0x0d, 0x94, 0x03, - 0x78, 0xd3, 0xd9, 0xdc, 0x77, 0x34, 0x7f, 0x5a, 0x3b, 0xbf, 0x62, 0xf6, 0x3e, 0x9c, 0xb0, 0x79, - 0xc3, 0x6f, 0xb7, 0x79, 0xa7, 0xa9, 0xfb, 0x17, 0xca, 0x25, 0x20, 0x83, 0xc7, 0xc4, 0x08, 0x26, - 0xcb, 0x5c, 0x4a, 0x76, 0x07, 0x66, 0x92, 0xe8, 0x74, 0x2a, 0x3f, 0x89, 0x96, 0xc6, 0x2b, 0x89, - 0xa6, 0xa7, 0xb2, 0x93, 0xe8, 0xf7, 0xb1, 0x0c, 0x29, 0xbb, 0x04, 0xb0, 0xec, 0x76, 0x6a, 0x81, - 0xdf, 0xe0, 0x32, 0xc0, 0x43, 0x59, 0x9a, 0x06, 0xba, 0x18, 0xd1, 0x46, 0x80, 0x6d, 0x0d, 0x65, - 0xc1, 0x81, 0x85, 0xfe, 0x1d, 0x95, 0x63, 0xc0, 0xfd, 0x69, 0xd3, 0x2f, 0xe0, 0x44, 0x66, 0xa0, - 0x05, 0x1f, 0xdd, 0xae, 0xfb, 0x9b, 0x30, 0xa1, 0x2f, 0x4c, 0x14, 0x72, 0xc4, 0x6f, 0xb9, 0xed, - 0x90, 0x90, 0x23, 0x00, 0x36, 0xc1, 0x93, 0x67, 0xcc, 0x62, 0xfe, 0x33, 0x66, 0xb2, 0x63, 0x94, - 0x8e, 0xda, 0x31, 0x44, 0xe5, 0x78, 0x86, 0x6a, 0x95, 0xe3, 0x6f, 0xbd, 0x72, 0x8c, 0xd7, 0x67, - 0x13, 0xfc, 0x89, 0x56, 0xfe, 0xf7, 0x54, 0x82, 0x6f, 0xf4, 0xa9, 0x34, 0x3d, 0xa5, 0xa4, 0x4f, - 0x65, 0xf6, 0x7c, 0x48, 0x30, 0x13, 0x51, 0xb7, 0x78, 0xa4, 0xa8, 0x7b, 0x8c, 0xbd, 0x0b, 0xaf, - 0x6d, 0xb4, 0x0b, 0x0c, 0x25, 0xd7, 0x13, 0x37, 0x63, 0xe8, 0xa5, 0xb0, 0xac, 0xef, 0x14, 0xe0, - 0x44, 0xee, 0x73, 0x91, 0xa8, 0x95, 0xde, 0xa5, 0xb4, 0xad, 0x3b, 0xfd, 0x28, 0x45, 0x18, 0xc7, - 0x89, 0x7b, 0x34, 0xf8, 0xb7, 0x58, 0xcf, 0xc3, 0x58, 0x6c, 0xac, 0x20, 0xae, 0x7f, 0x34, 0x74, - 0x14, 0xd8, 0x55, 0xbe, 0x79, 0xff, 0x7c, 0x01, 0x40, 0x34, 0xe1, 0x13, 0x74, 0x2b, 0xa0, 0x3e, - 0xe8, 0xe3, 0x56, 0x90, 0xee, 0x8f, 0x34, 0x9d, 0xf5, 0xf7, 0x8a, 0x30, 0x22, 0xfe, 0x7a, 0x6a, - 0xc3, 0xd9, 0xe7, 0xbb, 0x15, 0x88, 0x4f, 0x3a, 0x24, 0x79, 0xc7, 0x6a, 0x2a, 0x79, 0xc7, 0xac, - 0x4e, 0xa6, 0x72, 0xf1, 0xc6, 0xc1, 0x7f, 0xfa, 0x25, 0xeb, 0xd0, 0xbc, 0x13, 0xfe, 0x71, 0x01, - 0x26, 0x74, 0x62, 0xf6, 0x25, 0x98, 0x52, 0x21, 0xba, 0x29, 0x20, 0x96, 0xb4, 0xd2, 0x50, 0x16, - 0x95, 0x2a, 0x44, 0xb7, 0x1e, 0x40, 0xcb, 0xc0, 0xd7, 0x25, 0x85, 0xae, 0x8e, 0xcc, 0x9a, 0xc0, - 0xda, 0x5b, 0xae, 0xf3, 0x90, 0xbb, 0xbb, 0x3c, 0x8c, 0x1c, 0xb2, 0x7c, 0x93, 0xc6, 0x1c, 0x8a, - 0xfd, 0xed, 0x6b, 0x55, 0x32, 0x7a, 0xc3, 0xb0, 0x00, 0x14, 0x6b, 0x3d, 0x43, 0xa3, 0xbf, 0x50, - 0xb7, 0xb7, 0xdc, 0x07, 0x54, 0x48, 0x74, 0xd6, 0xbf, 0x1c, 0xa1, 0x99, 0x2b, 0x63, 0xfa, 0x6f, - 0xc2, 0xd4, 0xdd, 0xb5, 0x95, 0x65, 0xed, 0xbd, 0xca, 0x4c, 0xab, 0xb0, 0xfa, 0x28, 0xe2, 0x41, - 0xc7, 0x6d, 0x29, 0xd5, 0x4f, 0x22, 0x01, 0xf9, 0x5e, 0xb3, 0x91, 0xff, 0x96, 0x95, 0xe2, 0x28, - 0xea, 0x20, 0x25, 0x53, 0x5c, 0x47, 0x71, 0xc0, 0x3a, 0x42, 0xb7, 0xdd, 0xea, 0x53, 0x87, 0xc9, - 0x91, 0xed, 0xa0, 0x16, 0x68, 0xa7, 0xb7, 0xa9, 0xd5, 0x52, 0x3a, 0xbc, 0x96, 0x17, 0x64, 0x2d, - 0xcf, 0x48, 0xed, 0x64, 0x6e, 0x3d, 0x19, 0xae, 0xc9, 0x9e, 0x33, 0x74, 0xe4, 0x9e, 0xf3, 0x6f, - 0x17, 0x60, 0x84, 0x2e, 0x5b, 0x72, 0x1a, 0xf7, 0xb9, 0xce, 0x3d, 0x78, 0x32, 0xd7, 0xb9, 0x0a, - 0x9e, 0x39, 0xc6, 0x84, 0xa6, 0x32, 0xb6, 0x92, 0x5a, 0x17, 0x2c, 0x96, 0x72, 0xb6, 0xbd, 0x8e, - 0x96, 0xc3, 0xe6, 0xd0, 0x65, 0xc1, 0xd6, 0x92, 0x70, 0x4c, 0xa3, 0x47, 0xc6, 0xe0, 0x50, 0x21, - 0xac, 0x46, 0x65, 0x38, 0x26, 0x33, 0x08, 0xd3, 0x3a, 0x8c, 0xc9, 0x20, 0x4f, 0x4b, 0xfb, 0xd2, - 0xbe, 0xa4, 0x62, 0x58, 0x08, 0x36, 0x97, 0xf6, 0x93, 0x8b, 0xa4, 0x0c, 0x13, 0xe5, 0x6c, 0xea, - 0xde, 0x35, 0x09, 0x03, 0x76, 0x17, 0xc6, 0x92, 0x9c, 0x07, 0x66, 0x8e, 0xb0, 0x18, 0x2e, 0x63, - 0x5e, 0xaa, 0x48, 0x31, 0x39, 0x29, 0x0e, 0x12, 0x1e, 0x6c, 0x1d, 0x2a, 0x68, 0x55, 0xca, 0x9b, - 0xb4, 0x6a, 0xd6, 0x56, 0x28, 0x90, 0x90, 0x14, 0x9f, 0x22, 0x2a, 0x93, 0xcb, 0x2d, 0xe5, 0x90, - 0x9b, 0xa1, 0xb4, 0x7e, 0xaa, 0x08, 0x95, 0xf4, 0xec, 0x63, 0xef, 0xc2, 0x78, 0x9c, 0x73, 0x22, - 0x0e, 0x14, 0x81, 0xef, 0xcc, 0x49, 0x92, 0x0a, 0x23, 0x64, 0x84, 0x8e, 0xce, 0x2e, 0x43, 0x59, - 0x2c, 0xe2, 0x4e, 0x12, 0x32, 0x18, 0xb7, 0xed, 0x9e, 0x84, 0xe9, 0x3a, 0x28, 0x85, 0xc7, 0xea, - 0x30, 0x2b, 0x16, 0x4d, 0xdd, 0xeb, 0x6c, 0xb7, 0xf8, 0xba, 0xbf, 0xed, 0xf7, 0xa2, 0x7b, 0xf6, - 0xba, 0xdc, 0xc3, 0xe9, 0xba, 0xed, 0xb6, 0x5b, 0x46, 0x71, 0xa0, 0xdb, 0x23, 0xe6, 0x51, 0xb3, - 0xd7, 0xe8, 0x98, 0x59, 0x5b, 0x91, 0xe6, 0x61, 0x78, 0xec, 0xa3, 0x59, 0xa3, 0xd1, 0x78, 0x89, - 0xa4, 0xed, 0xac, 0xbf, 0x57, 0x84, 0x71, 0x6d, 0xfa, 0xb1, 0x0b, 0x50, 0x5e, 0x0b, 0xd7, 0xfd, - 0xc6, 0x6e, 0x1c, 0x43, 0x79, 0xf2, 0xf1, 0xc1, 0xe2, 0x98, 0x17, 0x3a, 0x2d, 0x04, 0xda, 0x71, - 0x31, 0x5b, 0x82, 0x49, 0xfa, 0x4b, 0x49, 0xb6, 0xc5, 0x44, 0xcd, 0x4c, 0xc8, 0x39, 0x52, 0xad, - 0x49, 0xc2, 0xbe, 0x0a, 0x40, 0x00, 0x0c, 0x60, 0x53, 0x1a, 0x3c, 0xf4, 0x8e, 0xac, 0x20, 0x27, - 0x74, 0x8d, 0xc6, 0x90, 0x7d, 0x9d, 0x52, 0x5a, 0xa8, 0xe5, 0x32, 0x34, 0x78, 0xec, 0x20, 0xc1, - 0xdf, 0xc9, 0x0f, 0x61, 0xa6, 0xb3, 0x94, 0xc9, 0x32, 0x17, 0x54, 0x3a, 0xf5, 0x6a, 0x84, 0x88, - 0x1a, 0x86, 0xf5, 0xbf, 0x14, 0xb4, 0x45, 0xc6, 0xee, 0xc0, 0x58, 0x3c, 0x81, 0xa4, 0x65, 0x66, - 0x7c, 0xc3, 0x55, 0x70, 0x9b, 0x6f, 0x2d, 0x3d, 0x23, 0x8d, 0x44, 0x67, 0xe3, 0x69, 0x68, 0xac, - 0x39, 0x05, 0x64, 0x5f, 0x84, 0x21, 0xec, 0xba, 0xe2, 0x91, 0x9f, 0xa6, 0x4e, 0xf9, 0x21, 0xd1, - 0x67, 0xf8, 0x21, 0x48, 0xc9, 0x5e, 0x97, 0x5e, 0xf7, 0xd4, 0xf9, 0x53, 0xda, 0x51, 0x2d, 0xda, - 0x11, 0x1f, 0xef, 0x49, 0x14, 0x3b, 0x6d, 0xf6, 0xfc, 0x95, 0x22, 0x54, 0xd2, 0x4b, 0x9b, 0xbd, - 0x07, 0x13, 0xea, 0xf8, 0xbd, 0xe1, 0xca, 0xb4, 0x71, 0x13, 0x32, 0x6d, 0x9b, 0x3a, 0x83, 0x77, - 0x5c, 0xdd, 0x92, 0xd3, 0x36, 0x08, 0x84, 0x2c, 0xb4, 0x21, 0x43, 0xe1, 0x6a, 0x8b, 0x2a, 0xf2, - 0xa3, 0x6e, 0x2a, 0x93, 0x82, 0x42, 0x63, 0x6f, 0x42, 0xe9, 0xf6, 0xb5, 0xaa, 0xf4, 0x93, 0xad, - 0xa4, 0x0f, 0x69, 0xf9, 0x3c, 0x63, 0x98, 0xbf, 0x0b, 0x7c, 0xb6, 0xae, 0x25, 0x1d, 0x19, 0x31, - 0xac, 0x76, 0x15, 0x38, 0xfe, 0xb8, 0xa3, 0xb3, 0x8f, 0xdc, 0x1c, 0x2a, 0x97, 0x2a, 0x43, 0x32, - 0x10, 0xfd, 0xff, 0x50, 0x82, 0xb1, 0xb8, 0x7e, 0xc6, 0x74, 0x97, 0x7f, 0xe9, 0xde, 0x7f, 0x1a, - 0xca, 0x4a, 0xba, 0x93, 0xee, 0xb2, 0xa3, 0xa1, 0x94, 0xec, 0xe6, 0x41, 0x89, 0x71, 0xb4, 0x2b, - 0xd8, 0xea, 0x27, 0x7b, 0x03, 0x62, 0x19, 0xad, 0x9f, 0x30, 0x47, 0x37, 0xf1, 0x18, 0x8d, 0x4d, - 0x41, 0xd1, 0xa3, 0xe0, 0x9e, 0x63, 0x76, 0xd1, 0x6b, 0xb2, 0xf7, 0xa0, 0xec, 0x36, 0xf1, 0xfe, - 0x3a, 0x48, 0xda, 0xfd, 0xb2, 0xe0, 0x46, 0x67, 0x06, 0x52, 0x55, 0x23, 0x56, 0x85, 0x31, 0xca, - 0x96, 0x10, 0xf2, 0xe6, 0x00, 0x07, 0x50, 0xc2, 0x01, 0x93, 0x2c, 0xdc, 0x0b, 0x79, 0x93, 0xbd, - 0x0c, 0x43, 0x62, 0x34, 0xe5, 0x89, 0xa3, 0x84, 0x4a, 0x31, 0x98, 0xd4, 0x61, 0x37, 0x3e, 0x65, - 0x23, 0x02, 0x7b, 0x11, 0x4a, 0xbd, 0xcb, 0x5b, 0xf2, 0x2c, 0xa9, 0x24, 0x09, 0x80, 0x62, 0x34, - 0x51, 0xcc, 0xae, 0x40, 0xf9, 0xa1, 0x99, 0x3b, 0xe6, 0x44, 0x6a, 0x18, 0x63, 0xfc, 0x18, 0x91, - 0xbd, 0x0c, 0xa5, 0x30, 0xf4, 0xa5, 0x5d, 0xe0, 0x6c, 0x6c, 0xac, 0x7d, 0x37, 0x1e, 0x35, 0xc1, - 0x3d, 0x0c, 0xfd, 0xa5, 0x32, 0x8c, 0xd0, 0x01, 0x63, 0x3d, 0x07, 0x90, 0xb4, 0x31, 0x7b, 0x7b, - 0xb6, 0xbe, 0x0a, 0x63, 0x71, 0xdb, 0xd8, 0x19, 0x80, 0x5d, 0xbe, 0xef, 0xec, 0xb8, 0x9d, 0x66, - 0x8b, 0xa4, 0xd3, 0x09, 0x7b, 0x6c, 0x97, 0xef, 0xdf, 0x40, 0x00, 0x3b, 0x05, 0xa3, 0x5d, 0x31, - 0xfc, 0x72, 0x8e, 0x4f, 0xd8, 0x23, 0xdd, 0xde, 0xa6, 0x98, 0xca, 0xf3, 0x30, 0x8a, 0xaf, 0x02, - 0x72, 0x45, 0x4e, 0xda, 0xea, 0xa7, 0xf5, 0xaf, 0x4a, 0x98, 0x9f, 0x54, 0xfb, 0x20, 0xf6, 0x02, - 0x4c, 0x36, 0x02, 0x8e, 0x67, 0x99, 0x2b, 0x24, 0x34, 0x59, 0xcf, 0x44, 0x02, 0x5c, 0x6b, 0xb2, - 0x73, 0x30, 0xdd, 0xed, 0x6d, 0xb6, 0xbc, 0x06, 0xe6, 0x48, 0x6b, 0x6c, 0xca, 0x9c, 0x50, 0x13, - 0xf6, 0x24, 0x81, 0x6f, 0xf1, 0xfd, 0xe5, 0x4d, 0x8c, 0x5e, 0x5b, 0xd1, 0x93, 0x2f, 0x60, 0x6e, - 0x3c, 0x9a, 0x7f, 0xd3, 0x1a, 0x1c, 0x4d, 0x9c, 0x4f, 0xc2, 0x88, 0xeb, 0x6e, 0xf7, 0x3c, 0x52, - 0x42, 0x4c, 0xd8, 0xf2, 0x17, 0xfb, 0x34, 0xcc, 0x24, 0xd9, 0x4c, 0xd4, 0x67, 0x0c, 0xe3, 0x67, - 0x54, 0xe2, 0x82, 0x65, 0x82, 0xb3, 0xd7, 0x80, 0xe9, 0xf5, 0xf9, 0x9b, 0x1f, 0xf2, 0x06, 0xcd, - 0xc9, 0x09, 0x7b, 0x46, 0x2b, 0xb9, 0x8b, 0x05, 0xec, 0x79, 0xd4, 0x45, 0xa1, 0x74, 0x88, 0xdd, - 0x86, 0xe9, 0xbb, 0x51, 0xe5, 0x84, 0x30, 0xd1, 0x77, 0xe7, 0xa1, 0xa2, 0x75, 0x07, 0xe6, 0xb7, - 0xa0, 0x74, 0x48, 0xf6, 0x54, 0x02, 0xb7, 0xbb, 0x6b, 0x4d, 0xf6, 0x01, 0x2c, 0x68, 0x98, 0x94, - 0x49, 0xdc, 0xe1, 0x2d, 0x6f, 0xdb, 0xdb, 0x6c, 0x71, 0x39, 0xdf, 0xb2, 0xb3, 0x3a, 0xbe, 0x8e, - 0xda, 0xf3, 0x09, 0x35, 0xe5, 0x18, 0x5f, 0x95, 0xb4, 0x6c, 0x1d, 0xe6, 0x52, 0x9c, 0x79, 0xd3, - 0xe9, 0x75, 0xfb, 0x86, 0x75, 0x4d, 0x78, 0x32, 0x93, 0x27, 0x6f, 0xde, 0xeb, 0x5a, 0xdf, 0x84, - 0x09, 0x7d, 0x4e, 0x8a, 0x4e, 0xd0, 0xe5, 0x12, 0x39, 0xfb, 0xc6, 0x63, 0xd8, 0x9a, 0xb8, 0x17, - 0x4e, 0x25, 0x28, 0x38, 0x88, 0xb4, 0xbd, 0x4c, 0xc6, 0x50, 0x1c, 0xc2, 0xe7, 0x61, 0xa2, 0xe9, - 0x85, 0xdd, 0x96, 0xbb, 0x8f, 0x86, 0xaa, 0x72, 0xa4, 0xc7, 0x25, 0x0c, 0xf5, 0x8e, 0x4b, 0x30, - 0x93, 0xd9, 0x07, 0x35, 0x49, 0x83, 0xf6, 0xf5, 0xc3, 0x25, 0x0d, 0xab, 0x03, 0x13, 0xfa, 0xb9, - 0x76, 0x44, 0xf2, 0xb2, 0x93, 0x18, 0xad, 0x8b, 0x36, 0xfd, 0x91, 0xc7, 0x07, 0x8b, 0x45, 0xaf, - 0x89, 0x31, 0xba, 0xce, 0x43, 0x59, 0x49, 0x6c, 0x52, 0x50, 0xc2, 0xa7, 0x2f, 0xf5, 0xc2, 0x6f, - 0xc7, 0xa5, 0xd6, 0xcb, 0x30, 0x2a, 0x8f, 0xae, 0xc3, 0x1f, 0xbc, 0xac, 0x6f, 0x15, 0x61, 0xda, - 0xe6, 0x62, 0x63, 0xe5, 0x94, 0xee, 0xf3, 0xa9, 0xbd, 0xa2, 0xe7, 0x47, 0x31, 0x37, 0xbe, 0xed, - 0x90, 0xcc, 0xd5, 0xbf, 0x5c, 0x80, 0xd9, 0x1c, 0x5c, 0x76, 0x19, 0xc6, 0x55, 0x42, 0xeb, 0xa4, - 0x13, 0x31, 0x82, 0x9a, 0xb2, 0x08, 0xc3, 0xce, 0xd4, 0x91, 0xd8, 0x55, 0x18, 0x5b, 0xf1, 0xdc, - 0x56, 0xb5, 0xd9, 0x8c, 0x43, 0x77, 0xa1, 0x9c, 0x8f, 0xd9, 0x68, 0x5d, 0x01, 0xd5, 0x85, 0x98, - 0x18, 0x95, 0xbd, 0x22, 0x27, 0x45, 0x29, 0xee, 0x56, 0x9c, 0x14, 0xdf, 0x3b, 0x58, 0x04, 0x6a, - 0xd3, 0x46, 0x3c, 0x45, 0x30, 0xb3, 0x00, 0x01, 0x13, 0xf7, 0xc4, 0xa7, 0x76, 0xe8, 0xf2, 0x33, - 0x0b, 0xa4, 0x3f, 0x6f, 0xa0, 0x74, 0x81, 0x7f, 0xa9, 0x08, 0x27, 0xf3, 0x09, 0x3f, 0xd2, 0x50, - 0xbe, 0x0a, 0x63, 0x98, 0x86, 0x52, 0xcb, 0x86, 0x32, 0xf5, 0xf8, 0x60, 0x11, 0x28, 0x67, 0x25, - 0xe2, 0x27, 0x08, 0x6c, 0x0b, 0x26, 0xd7, 0xdd, 0x30, 0xba, 0xc1, 0xdd, 0x20, 0xda, 0xe4, 0x6e, - 0x34, 0x80, 0x24, 0xaf, 0x8c, 0x92, 0xe6, 0x51, 0x98, 0xd8, 0x51, 0x94, 0x29, 0x59, 0xdb, 0x64, - 0x1b, 0x4f, 0x94, 0xa1, 0x01, 0x26, 0xca, 0x37, 0x60, 0xba, 0xce, 0xdb, 0x6e, 0x77, 0xc7, 0x0f, - 0x54, 0xd8, 0x91, 0x8b, 0x30, 0x19, 0x83, 0x72, 0x67, 0x8b, 0x59, 0x6c, 0xe0, 0x6b, 0x1d, 0x91, - 0x6c, 0x25, 0x66, 0xb1, 0xf5, 0x57, 0x8b, 0x70, 0xaa, 0xda, 0x90, 0x16, 0xd6, 0xb2, 0x40, 0x39, - 0x82, 0x7c, 0xc2, 0x75, 0xb3, 0x4b, 0x30, 0x76, 0xdb, 0x7d, 0xb4, 0xce, 0xdd, 0x90, 0x87, 0x32, - 0xd5, 0x0e, 0x89, 0xbd, 0xee, 0xa3, 0xe4, 0xa9, 0xd2, 0x4e, 0x70, 0x74, 0x35, 0xc2, 0xd0, 0xc7, - 0x54, 0x23, 0x58, 0x30, 0x72, 0xc3, 0x6f, 0x35, 0xe5, 0x59, 0x2f, 0xed, 0x23, 0x76, 0x10, 0x62, - 0xcb, 0x12, 0xeb, 0xf7, 0x0b, 0x30, 0x15, 0xb7, 0x18, 0x9b, 0xf0, 0x89, 0x77, 0xc9, 0x39, 0x18, - 0xc5, 0x8a, 0xd6, 0x56, 0xf4, 0x43, 0xa3, 0xc5, 0x31, 0xef, 0x76, 0xd3, 0x56, 0x85, 0x7a, 0x4f, - 0x0c, 0x7f, 0xbc, 0x9e, 0xb0, 0xfe, 0x06, 0x9a, 0x5e, 0xe8, 0x5f, 0x29, 0x4e, 0x22, 0xad, 0x21, - 0x85, 0x01, 0x1b, 0x52, 0x7c, 0x62, 0x43, 0x52, 0xea, 0x3b, 0x24, 0x3f, 0x52, 0x84, 0xf1, 0xb8, - 0xb1, 0xdf, 0x67, 0x29, 0x79, 0xe2, 0xef, 0x1a, 0x28, 0x54, 0x58, 0x5d, 0xdb, 0x2b, 0x64, 0x44, - 0xae, 0x2f, 0xc2, 0x88, 0x5c, 0x4c, 0x85, 0x94, 0x43, 0x44, 0x6a, 0x74, 0x97, 0xa6, 0x24, 0xeb, - 0x11, 0x1c, 0xd0, 0xd0, 0x96, 0x74, 0x18, 0x8b, 0xed, 0x01, 0xdf, 0x94, 0x96, 0x38, 0x4f, 0xed, - 0x19, 0x95, 0x1f, 0x8b, 0x2d, 0xf9, 0xb0, 0x81, 0x4e, 0xa7, 0xdf, 0x2e, 0x43, 0x25, 0x4d, 0x72, - 0x74, 0xd2, 0xa3, 0x5a, 0x6f, 0x93, 0xae, 0x2a, 0x94, 0xf4, 0xa8, 0xdb, 0xdb, 0xb4, 0x05, 0x0c, - 0xad, 0xfb, 0x02, 0x6f, 0x0f, 0xbf, 0x7a, 0x42, 0x5a, 0xf7, 0x05, 0xde, 0x9e, 0x61, 0xdd, 0x17, - 0x78, 0x7b, 0xa8, 0x48, 0x58, 0xaf, 0x63, 0x9c, 0x12, 0xbc, 0xa7, 0x48, 0x45, 0x42, 0x2b, 0x4c, - 0x67, 0x72, 0x55, 0x68, 0xe2, 0xa8, 0x5c, 0xe2, 0x6e, 0x20, 0x13, 0xf4, 0xc8, 0xed, 0x0c, 0x8f, - 0xca, 0x4d, 0x04, 0x3b, 0x91, 0x80, 0xdb, 0x3a, 0x12, 0x6b, 0x01, 0xd3, 0x7e, 0xaa, 0x05, 0x7c, - 0xf4, 0xdd, 0x5a, 0x19, 0x33, 0xcf, 0xe9, 0xac, 0x1d, 0x7d, 0x35, 0xe7, 0xf0, 0x7d, 0x92, 0xda, - 0xdf, 0x9a, 0x0c, 0xe0, 0x8d, 0x0a, 0xa4, 0xf2, 0x91, 0xcc, 0x54, 0x7c, 0x25, 0xa0, 0x00, 0xdf, - 0xb1, 0x1a, 0x29, 0x61, 0xc2, 0xbe, 0x00, 0xe3, 0x7a, 0xf4, 0x19, 0x8a, 0x91, 0xf2, 0x2c, 0x85, - 0xdd, 0x4d, 0xc2, 0xce, 0x98, 0x76, 0x3a, 0x7a, 0x98, 0x99, 0x4d, 0x38, 0xb5, 0xec, 0x77, 0xc2, - 0x5e, 0x5b, 0x3d, 0xa3, 0x27, 0x39, 0x27, 0x00, 0x87, 0x02, 0x43, 0x59, 0x34, 0x24, 0x8a, 0x7a, - 0x82, 0x57, 0x41, 0x4a, 0x8c, 0x0b, 0x48, 0x3f, 0x46, 0x6c, 0x03, 0xc6, 0x51, 0x83, 0x2a, 0x2d, - 0x87, 0xc7, 0xcd, 0x6d, 0x23, 0x29, 0x59, 0x11, 0x0b, 0x03, 0x35, 0xc1, 0xf8, 0xfc, 0x11, 0x66, - 0x4c, 0x87, 0x75, 0x36, 0xec, 0xab, 0x30, 0x45, 0x57, 0xb4, 0x07, 0x7c, 0x93, 0xe6, 0xce, 0x84, - 0xa1, 0x89, 0x30, 0x0b, 0xc9, 0x96, 0x44, 0xea, 0xad, 0x1f, 0xf2, 0x4d, 0x1a, 0x7b, 0xc3, 0xd5, - 0xd0, 0xc0, 0x67, 0xf7, 0x60, 0xf6, 0x86, 0x1b, 0x12, 0x50, 0x0b, 0x23, 0x32, 0x89, 0x1a, 0x5a, - 0x74, 0x01, 0xd9, 0x71, 0x43, 0xa5, 0x08, 0xcf, 0x0d, 0x1b, 0x92, 0x47, 0xcf, 0xbe, 0x55, 0x80, - 0x79, 0x43, 0x4f, 0x2e, 0xad, 0x22, 0x31, 0xf8, 0xf6, 0x14, 0x3e, 0x79, 0xa9, 0x80, 0xd5, 0xfd, - 0xd0, 0x68, 0x48, 0x52, 0xaa, 0xf8, 0x20, 0x29, 0xd7, 0x7d, 0x2b, 0xfa, 0xf1, 0x90, 0x0b, 0x15, - 0xd7, 0xf4, 0xb4, 0xb9, 0x50, 0x53, 0xeb, 0x5a, 0xa1, 0x59, 0x57, 0xd3, 0xfd, 0x2d, 0x15, 0x5d, - 0x85, 0x58, 0xd1, 0x85, 0x06, 0xc3, 0x62, 0x20, 0x64, 0x30, 0x3a, 0xfc, 0x61, 0xbd, 0xae, 0xef, - 0x43, 0x52, 0x2c, 0x3c, 0x74, 0x1f, 0xb2, 0xfe, 0xc7, 0x11, 0x98, 0x4e, 0x4d, 0x0b, 0x79, 0x4f, - 0x2d, 0x64, 0xee, 0xa9, 0x75, 0x00, 0x52, 0xf5, 0x0e, 0xa8, 0x93, 0x55, 0xfe, 0xcc, 0xe3, 0x32, - 0x1a, 0x41, 0xbc, 0xa6, 0x34, 0x36, 0x82, 0x29, 0xad, 0xd8, 0x01, 0x75, 0xe4, 0x31, 0x53, 0x5a, - 0xf4, 0x1a, 0xd3, 0x84, 0x0d, 0x5b, 0x84, 0x61, 0x0c, 0xb3, 0xad, 0xbb, 0x93, 0x7b, 0x02, 0x60, - 0x13, 0x9c, 0xbd, 0x00, 0x23, 0x42, 0x88, 0x5a, 0x5b, 0x91, 0x9b, 0x20, 0x9e, 0x2d, 0x42, 0xca, - 0x12, 0x12, 0x8b, 0x2c, 0x62, 0x57, 0x61, 0x82, 0xfe, 0x92, 0xd1, 0xaa, 0x46, 0x4c, 0xfb, 0x5e, - 0xc7, 0x6b, 0xaa, 0x80, 0x55, 0x06, 0x9e, 0xb8, 0x5d, 0xd4, 0x7b, 0xa8, 0xd6, 0x59, 0x5b, 0x91, - 0x49, 0x3b, 0xf0, 0x76, 0x11, 0x12, 0x50, 0x54, 0x91, 0x20, 0x08, 0x59, 0x46, 0x3a, 0x75, 0x95, - 0xf1, 0x4e, 0x89, 0xb2, 0x0c, 0x39, 0x73, 0xd9, 0xb2, 0x84, 0x5d, 0xa0, 0x97, 0x18, 0x14, 0x0b, - 0x29, 0x73, 0x35, 0xbe, 0x5b, 0xa0, 0x62, 0x02, 0x65, 0xc3, 0xb8, 0x58, 0x54, 0x2e, 0xfe, 0x5e, - 0x6d, 0xbb, 0x5e, 0x4b, 0x6e, 0x2b, 0x58, 0x39, 0xe2, 0x72, 0x01, 0xb5, 0x13, 0x04, 0xf6, 0x2e, - 0x4c, 0x51, 0x86, 0xd9, 0x76, 0xdb, 0xef, 0x20, 0xfb, 0xf1, 0xc4, 0x24, 0x4e, 0x66, 0xbd, 0x15, - 0x45, 0x54, 0x4b, 0x0a, 0x57, 0x9c, 0x27, 0xf8, 0xca, 0xdb, 0xa3, 0x37, 0xa2, 0x89, 0xe4, 0x3c, - 0x41, 0xd2, 0x90, 0xe0, 0xb6, 0x8e, 0xc4, 0xde, 0x82, 0x49, 0xf1, 0xf3, 0xba, 0xb7, 0xc7, 0xa9, - 0xc2, 0xc9, 0xc4, 0x54, 0x02, 0xa9, 0xb6, 0x45, 0x09, 0xd5, 0x67, 0x62, 0xb2, 0xf7, 0xe1, 0x04, - 0x72, 0x6a, 0xf8, 0x5d, 0xde, 0xac, 0x6e, 0x6d, 0x79, 0x2d, 0x8f, 0x6c, 0x27, 0xa7, 0x12, 0x1b, - 0x26, 0xaa, 0x18, 0x31, 0x1c, 0x37, 0x41, 0xb1, 0xf3, 0x29, 0xd9, 0x03, 0xa8, 0x2c, 0xf7, 0xc2, - 0xc8, 0x6f, 0x57, 0xa3, 0x28, 0xf0, 0x36, 0x7b, 0x11, 0x0f, 0xe7, 0xa7, 0x8d, 0xe8, 0x45, 0x62, - 0x71, 0xc4, 0x85, 0xa4, 0x0f, 0x6a, 0x20, 0x85, 0xe3, 0xc6, 0x24, 0x76, 0x86, 0x89, 0xf5, 0x4f, - 0x0b, 0x30, 0x69, 0x90, 0xb2, 0x37, 0x61, 0xe2, 0x5a, 0xe0, 0xf1, 0x4e, 0xb3, 0xb5, 0xaf, 0x5d, - 0x54, 0xf1, 0x16, 0xb3, 0x25, 0xe1, 0xf4, 0xd5, 0x06, 0x5a, 0xac, 0xe7, 0x29, 0xe6, 0x1a, 0x36, - 0x5f, 0xa2, 0xa8, 0x06, 0x72, 0x82, 0x96, 0x92, 0x70, 0x6a, 0x38, 0x41, 0xe5, 0xec, 0xd4, 0x50, - 0xd8, 0xe7, 0x61, 0x84, 0xde, 0x83, 0xa5, 0x95, 0xed, 0xe9, 0xbc, 0xcf, 0xa4, 0x08, 0x1a, 0x38, - 0x11, 0xd1, 0x80, 0x28, 0xb4, 0x25, 0x91, 0xf5, 0x33, 0x05, 0x60, 0x59, 0xd4, 0x23, 0xf4, 0x5e, - 0x47, 0x1a, 0x26, 0x7d, 0x31, 0x5e, 0x8d, 0x25, 0x43, 0x67, 0x2e, 0x6a, 0xa2, 0x02, 0xea, 0x78, - 0xb9, 0xea, 0x74, 0x45, 0x1c, 0x15, 0x5b, 0x3f, 0x5c, 0x04, 0x48, 0xb0, 0xd9, 0xe7, 0x28, 0x3f, - 0xe7, 0xfb, 0x3d, 0xb7, 0xe5, 0x6d, 0x79, 0x66, 0xd0, 0x65, 0x64, 0xf2, 0x0d, 0x55, 0x62, 0x9b, - 0x88, 0xec, 0x3d, 0x98, 0xae, 0xd7, 0x4c, 0x5a, 0xcd, 0x43, 0x24, 0xec, 0x3a, 0x29, 0xf2, 0x34, - 0x36, 0x5a, 0xd3, 0xeb, 0xa3, 0x41, 0xd6, 0xf4, 0x34, 0x10, 0xb2, 0x44, 0x6c, 0x2c, 0xf5, 0x9a, - 0x74, 0x82, 0x69, 0xc6, 0xaf, 0x9a, 0xd8, 0xba, 0xb0, 0xeb, 0x74, 0xa5, 0x77, 0x8c, 0xd8, 0x27, - 0x0c, 0xbc, 0xa4, 0x23, 0x87, 0xfb, 0x44, 0xc9, 0xf8, 0x59, 0x54, 0xfb, 0xb5, 0xfd, 0x88, 0x4b, - 0x6d, 0xc7, 0x53, 0x7b, 0xef, 0x49, 0x8c, 0x09, 0x86, 0x0d, 0xe7, 0x7f, 0xe3, 0xeb, 0xa4, 0xc1, - 0xcc, 0x95, 0xe4, 0x92, 0x42, 0x66, 0x05, 0x39, 0x36, 0x36, 0xbf, 0x58, 0x80, 0x13, 0xb9, 0xb4, - 0xec, 0x22, 0x40, 0xa2, 0x53, 0x92, 0xbd, 0x84, 0x3b, 0x66, 0x12, 0x44, 0xcc, 0xd6, 0x30, 0xd8, - 0x57, 0xd2, 0xda, 0xa0, 0xa3, 0x0f, 0xc2, 0x05, 0x15, 0xbb, 0xd3, 0xd4, 0x06, 0xe5, 0xe8, 0x80, - 0xac, 0x5f, 0x2e, 0xc1, 0x8c, 0x16, 0xa3, 0x8c, 0xda, 0x7a, 0x84, 0x77, 0xc3, 0x2e, 0x4c, 0x88, - 0xaf, 0xf1, 0x1a, 0xd2, 0x7b, 0x8d, 0x0c, 0x5f, 0x5e, 0xc9, 0xb8, 0x6f, 0x4b, 0x6e, 0x17, 0x75, - 0x64, 0x32, 0x2a, 0xc5, 0xad, 0x13, 0x1f, 0x24, 0x1a, 0x59, 0xcf, 0x35, 0x83, 0x39, 0x0b, 0x61, - 0x72, 0x65, 0xbf, 0xe3, 0xb6, 0xe3, 0xda, 0xc8, 0x00, 0xe6, 0xd3, 0x7d, 0x6b, 0x33, 0xb0, 0xa9, - 0xba, 0xc4, 0xd1, 0x91, 0xca, 0x72, 0x62, 0x6c, 0x18, 0x54, 0x0b, 0xef, 0xc1, 0x4c, 0xa6, 0xd1, - 0xc7, 0x0a, 0xee, 0xfb, 0x00, 0x58, 0xb6, 0x1d, 0x83, 0x9b, 0x88, 0x8a, 0x33, 0xcf, 0xed, 0x34, - 0xc9, 0x9c, 0xe6, 0xb2, 0x6e, 0x22, 0xfa, 0xbf, 0x15, 0x75, 0x17, 0xfa, 0xa7, 0x7d, 0xd5, 0x7d, - 0xd1, 0xb8, 0x0d, 0x3f, 0xd7, 0x6f, 0x4c, 0xfb, 0x6b, 0x1d, 0xd8, 0x55, 0x90, 0x6b, 0x30, 0x15, - 0x61, 0x26, 0xcb, 0x43, 0xae, 0x54, 0xc2, 0x16, 0x43, 0x87, 0xa7, 0x36, 0xc9, 0x4b, 0x36, 0xfd, - 0xd0, 0xd6, 0xef, 0x77, 0x4b, 0x70, 0xaa, 0x4f, 0x3b, 0xd8, 0x7e, 0x7a, 0x4a, 0x92, 0x4e, 0xe3, - 0x8d, 0xc3, 0x9b, 0xff, 0x24, 0x26, 0x26, 0xfb, 0x1c, 0x85, 0xe4, 0x69, 0x60, 0x86, 0x7e, 0x79, - 0x9b, 0xc7, 0x47, 0x81, 0xdd, 0x18, 0x9a, 0x8e, 0xc5, 0x43, 0x50, 0xf6, 0x1e, 0x0c, 0x63, 0x34, - 0x86, 0x54, 0xcc, 0x55, 0x81, 0x81, 0x70, 0x2d, 0x6a, 0xb0, 0xf8, 0x69, 0x44, 0x0d, 0x16, 0x00, - 0xf6, 0x59, 0x28, 0x55, 0x1f, 0xd4, 0xe5, 0x28, 0x4f, 0xe9, 0xe4, 0x0f, 0xea, 0x49, 0xba, 0x2f, - 0xd7, 0xc8, 0xcb, 0x25, 0x28, 0x04, 0xe1, 0xf5, 0xe5, 0x9a, 0x1c, 0x63, 0x9d, 0xf0, 0xfa, 0x72, - 0x2d, 0x21, 0xdc, 0x36, 0xfd, 0x3d, 0xaf, 0x2f, 0xd7, 0x3e, 0xb9, 0x45, 0xf4, 0xef, 0x14, 0x29, - 0x8e, 0x10, 0x7d, 0xd8, 0x7b, 0x30, 0xa1, 0x0c, 0x89, 0xb5, 0x4d, 0x4f, 0x5a, 0xa8, 0x4b, 0x73, - 0xfd, 0x94, 0xfd, 0x91, 0x41, 0xa0, 0x12, 0xe7, 0xc5, 0x16, 0xf5, 0xba, 0xe9, 0x4e, 0xcc, 0x21, - 0xed, 0x46, 0x67, 0x92, 0xb0, 0x2b, 0x50, 0xde, 0xe0, 0x1d, 0xb7, 0x13, 0xc5, 0xea, 0x55, 0x34, - 0x7b, 0x8e, 0x10, 0x66, 0xca, 0x20, 0x31, 0x22, 0x5a, 0xe8, 0xf6, 0x36, 0xc3, 0x46, 0xe0, 0x61, - 0xbc, 0xb1, 0xf8, 0x64, 0x27, 0x0b, 0x5d, 0xad, 0xc4, 0x64, 0x90, 0x22, 0xb2, 0x7e, 0xb6, 0x00, - 0xa3, 0x72, 0x20, 0x29, 0xe1, 0xe9, 0x76, 0x72, 0x32, 0x49, 0xc7, 0x99, 0x6d, 0x2f, 0xed, 0x38, - 0xb3, 0x4d, 0x41, 0xbd, 0xc6, 0xa4, 0xc7, 0x6a, 0xfc, 0xd0, 0x88, 0xb3, 0x51, 0xf9, 0x62, 0x9b, - 0xf9, 0x2c, 0x63, 0xd4, 0x41, 0x3d, 0x18, 0xad, 0x9f, 0x93, 0x2d, 0xbb, 0xbe, 0x5c, 0x63, 0x97, - 0xa1, 0xbc, 0xee, 0x53, 0x7c, 0x3a, 0x3d, 0x7b, 0x7f, 0x4b, 0xc2, 0xf4, 0x0e, 0x52, 0x78, 0xa2, - 0x7d, 0xb5, 0xc0, 0x97, 0x37, 0x23, 0xad, 0x7d, 0x5d, 0x02, 0xa6, 0xda, 0x17, 0xa3, 0x0e, 0xdc, - 0xbe, 0xaf, 0xe7, 0x6d, 0x12, 0xb4, 0xc1, 0xac, 0xc2, 0x18, 0x86, 0xef, 0xdd, 0xe3, 0xc1, 0xbe, - 0x34, 0x4d, 0x7a, 0xb9, 0xdf, 0x06, 0xb1, 0xa2, 0x10, 0xe5, 0x26, 0x95, 0x50, 0x5a, 0x0f, 0xe0, - 0xec, 0x51, 0xe8, 0xec, 0x0a, 0x94, 0xdc, 0x87, 0x2a, 0xb4, 0xf8, 0xf3, 0xfd, 0x2a, 0xa9, 0x3e, - 0xa8, 0x4b, 0xf6, 0x02, 0xdb, 0xfa, 0xdb, 0x05, 0x3d, 0x9a, 0x44, 0x1a, 0x87, 0x5d, 0x82, 0xb9, - 0x90, 0x47, 0xbd, 0xae, 0xd2, 0x0a, 0x6d, 0xf9, 0x81, 0xe3, 0x06, 0xb2, 0xe7, 0xed, 0x19, 0x2c, - 0x23, 0x5d, 0xd0, 0x35, 0x3f, 0xa8, 0x06, 0x1d, 0x76, 0x16, 0xc6, 0xbd, 0x4e, 0xc4, 0xb7, 0xa5, - 0x7b, 0x19, 0x9d, 0x88, 0x3a, 0x88, 0x5d, 0x87, 0x93, 0xf1, 0x77, 0x39, 0x94, 0x32, 0xad, 0x89, - 0x6e, 0x3f, 0x29, 0x29, 0x9c, 0x92, 0xa5, 0xd9, 0x7e, 0x8b, 0xdb, 0x73, 0x31, 0x01, 0x01, 0x9b, - 0x02, 0x6a, 0xf1, 0x9c, 0x5e, 0xbf, 0x7f, 0x05, 0x7d, 0x44, 0x6e, 0xea, 0xfe, 0xb8, 0xb2, 0x48, - 0xed, 0xcf, 0x0b, 0xfd, 0x7a, 0xe6, 0xfe, 0x15, 0x3b, 0x87, 0xca, 0xfa, 0x83, 0xa2, 0xce, 0xac, - 0xce, 0x83, 0xbd, 0xa7, 0xf8, 0xa4, 0xcd, 0x7f, 0x1b, 0x4d, 0x7f, 0xde, 0x21, 0x07, 0xed, 0x67, - 0x53, 0x07, 0xed, 0x62, 0x3f, 0x16, 0x52, 0xce, 0x1d, 0xf8, 0xa4, 0xfd, 0x76, 0x09, 0x4e, 0xe6, - 0xb7, 0x43, 0xef, 0x9a, 0xc2, 0x21, 0x5d, 0x73, 0x1e, 0xca, 0x37, 0xfc, 0x30, 0xd2, 0xec, 0x46, - 0xf1, 0x45, 0x68, 0x47, 0xc2, 0xec, 0xb8, 0x94, 0xbd, 0x00, 0x23, 0xe2, 0xef, 0x78, 0x8f, 0x45, - 0x7e, 0x18, 0x02, 0xc9, 0x6b, 0xda, 0xb2, 0x88, 0x5d, 0x87, 0xb2, 0x2d, 0x3d, 0x45, 0x53, 0x3d, - 0xad, 0xc0, 0xb1, 0x80, 0xcd, 0x02, 0x09, 0x31, 0x92, 0x6e, 0x48, 0x18, 0xab, 0xc2, 0xa8, 0x9c, - 0x4c, 0x29, 0x6b, 0x82, 0x9c, 0x19, 0x48, 0x4d, 0x91, 0x2f, 0xc8, 0xb6, 0xa2, 0x13, 0xc7, 0x02, - 0xbe, 0x0b, 0xaf, 0xad, 0x28, 0xa7, 0x4f, 0x3c, 0x16, 0xe8, 0xdd, 0xd8, 0x34, 0xd1, 0x8d, 0x11, - 0xd9, 0x22, 0x8c, 0x07, 0xbc, 0xe5, 0xee, 0xd3, 0x99, 0x23, 0xfb, 0x1d, 0x10, 0x44, 0x87, 0xcd, - 0x33, 0x30, 0x46, 0x08, 0x5e, 0x53, 0x6a, 0x81, 0xec, 0x32, 0x02, 0xd6, 0x9a, 0xa1, 0xb5, 0x01, - 0xf3, 0xfd, 0xc6, 0x54, 0xdc, 0x73, 0x23, 0x37, 0xd8, 0xe6, 0x78, 0xa9, 0x68, 0xc9, 0x88, 0x00, - 0x89, 0xc1, 0xd7, 0x06, 0x96, 0xdd, 0xc0, 0x22, 0x7b, 0x22, 0xd2, 0x7e, 0x59, 0xdf, 0x2a, 0x02, - 0x28, 0xe5, 0xe2, 0x53, 0xbb, 0x88, 0x3e, 0x6b, 0x2c, 0x22, 0xcd, 0x2c, 0x0e, 0x3f, 0x6b, 0xa0, - 0xb7, 0xb1, 0xbb, 0x68, 0x75, 0xa6, 0xe1, 0x1f, 0x9d, 0xe3, 0x78, 0x23, 0xd1, 0xbb, 0x4a, 0x2f, - 0x2c, 0x7c, 0x35, 0x21, 0xb8, 0xb5, 0x09, 0x73, 0xd7, 0x79, 0x94, 0x68, 0x61, 0xd5, 0x0b, 0xf9, - 0xe1, 0x6c, 0x5f, 0x85, 0x31, 0x89, 0x1f, 0x1f, 0x8c, 0xa4, 0x32, 0x94, 0x91, 0xce, 0x50, 0x65, - 0xa8, 0x10, 0xc4, 0x86, 0xbb, 0xc2, 0x5b, 0x3c, 0xe2, 0x9f, 0x6c, 0x35, 0x75, 0x60, 0xf4, 0x29, - 0xf8, 0x65, 0x83, 0xd5, 0x70, 0x64, 0xff, 0xdc, 0x87, 0x13, 0x71, 0xdb, 0x9f, 0x24, 0xdf, 0x4b, - 0x30, 0xad, 0x24, 0x38, 0x8d, 0xe3, 0x21, 0x26, 0x52, 0xbf, 0x5b, 0x80, 0x05, 0x45, 0xf1, 0xc0, - 0x8b, 0x0d, 0x7c, 0x07, 0x22, 0x66, 0xef, 0xc2, 0xb8, 0x46, 0x23, 0x1d, 0xa8, 0xf0, 0x39, 0xe5, - 0xa1, 0x17, 0xed, 0x38, 0x21, 0xc1, 0xf5, 0xe7, 0x14, 0x0d, 0x9d, 0x6d, 0xc2, 0x42, 0xbd, 0x7a, - 0x7b, 0x3d, 0x71, 0x81, 0xbc, 0xe3, 0x5f, 0xf3, 0x5b, 0x2d, 0xff, 0xe1, 0x3d, 0x7b, 0x5d, 0xe5, - 0x81, 0xc3, 0x70, 0x4e, 0xf8, 0x36, 0xa3, 0xf9, 0x51, 0x76, 0x7c, 0x67, 0x0b, 0x11, 0x9d, 0x5e, - 0xd0, 0x0a, 0xed, 0x43, 0xb8, 0x58, 0x7f, 0xb7, 0x00, 0xcf, 0xc4, 0xfe, 0x78, 0x39, 0xdf, 0x97, - 0xfa, 0x82, 0xc2, 0x93, 0xfc, 0x82, 0xe2, 0x13, 0xf9, 0x82, 0x3b, 0xc9, 0xf8, 0xac, 0x75, 0xe2, - 0x68, 0x1b, 0xaa, 0xfd, 0x4c, 0x1f, 0x1f, 0x39, 0x2a, 0xcf, 0x66, 0xe2, 0x77, 0x68, 0x61, 0x3a, - 0xac, 0x77, 0xb4, 0x0e, 0xc9, 0x61, 0x68, 0x10, 0x17, 0xd2, 0xc4, 0xdf, 0x2a, 0xc2, 0xf4, 0xdd, - 0xb5, 0x95, 0xe5, 0xd8, 0xdc, 0xef, 0xa9, 0xdd, 0x34, 0xf3, 0x0d, 0xea, 0x8c, 0x6f, 0xeb, 0xbf, - 0x73, 0x5a, 0xf7, 0x60, 0x36, 0xd5, 0x0d, 0x28, 0xe7, 0x7d, 0x81, 0x3c, 0xbc, 0x62, 0xb0, 0x92, - 0xf1, 0x4e, 0xe6, 0xb1, 0xbf, 0x7f, 0xc5, 0x4e, 0x61, 0x5b, 0xff, 0xf3, 0x44, 0x8a, 0xaf, 0xdc, - 0x8c, 0x5f, 0x85, 0xb1, 0xb5, 0x30, 0xec, 0xf1, 0xe0, 0x9e, 0xbd, 0xae, 0xeb, 0xe6, 0x3c, 0x04, - 0x8a, 0x39, 0x64, 0x27, 0x08, 0xec, 0x02, 0x94, 0x65, 0x72, 0x0f, 0xb5, 0xbb, 0xe1, 0x33, 0x49, - 0x9c, 0x1b, 0xc4, 0x8e, 0x8b, 0xd9, 0x9b, 0x30, 0x41, 0x7f, 0xd3, 0x8c, 0x96, 0x1d, 0x8e, 0xda, - 0x78, 0x89, 0x4e, 0x2b, 0xc0, 0x36, 0xd0, 0xd8, 0x2b, 0x50, 0xaa, 0x2e, 0xdb, 0x52, 0xff, 0x2a, - 0xaf, 0x56, 0x81, 0x43, 0x4a, 0x72, 0xe3, 0x9e, 0xbd, 0x6c, 0x8b, 0x0b, 0x92, 0x0a, 0x74, 0x24, - 0x9f, 0x8e, 0x70, 0x06, 0x28, 0xf5, 0x6e, 0x4a, 0x54, 0x40, 0x18, 0xbb, 0x04, 0xa3, 0x2b, 0x64, - 0xa3, 0x2a, 0x1f, 0x8e, 0x28, 0x7d, 0x34, 0x81, 0x8c, 0x80, 0x3d, 0x04, 0x62, 0x17, 0x54, 0xe6, - 0xd4, 0x72, 0xe2, 0x28, 0xd6, 0x27, 0x3d, 0x6a, 0x12, 0xf6, 0x60, 0xec, 0xe8, 0xb0, 0x07, 0xd9, - 0x80, 0x05, 0xf0, 0x24, 0x03, 0x16, 0x6c, 0xc2, 0xa9, 0xeb, 0xa8, 0x2e, 0x35, 0x03, 0x39, 0xde, - 0xb3, 0xd7, 0xe4, 0x03, 0x14, 0xbe, 0xbb, 0x92, 0x46, 0x35, 0x1d, 0x0b, 0xd2, 0xe9, 0x05, 0x9e, - 0xfe, 0x14, 0xde, 0x87, 0x11, 0xfb, 0x00, 0xe6, 0xf2, 0x8a, 0xe4, 0x33, 0x15, 0x86, 0x2c, 0xcc, - 0xaf, 0x40, 0x0f, 0x59, 0x98, 0xc7, 0x81, 0xad, 0x43, 0x85, 0xe0, 0xd5, 0x66, 0xdb, 0xeb, 0xd0, - 0x53, 0xdb, 0x64, 0xe2, 0xf8, 0x2e, 0xb9, 0xba, 0xa2, 0x90, 0x9e, 0xdc, 0x0c, 0x5f, 0xbf, 0x14, - 0x25, 0xfb, 0x89, 0x02, 0x4c, 0xd8, 0x9c, 0x12, 0x46, 0xe0, 0xf6, 0x39, 0x25, 0x1f, 0xed, 0x63, - 0xe7, 0xbb, 0x7a, 0x14, 0x78, 0x9d, 0x6d, 0xe9, 0xc7, 0xb7, 0x21, 0xfd, 0xf8, 0xde, 0xfd, 0x48, - 0x7e, 0x7c, 0xc4, 0x2a, 0x7c, 0x7c, 0xb0, 0x38, 0x11, 0xc8, 0x3a, 0x71, 0x15, 0x19, 0x2d, 0x10, - 0x5d, 0x87, 0xb1, 0x14, 0xee, 0x75, 0x28, 0x5c, 0x3d, 0x6f, 0xd2, 0x47, 0x4e, 0xe3, 0xc6, 0x8e, - 0x5d, 0xe7, 0xd2, 0x26, 0x1e, 0x23, 0x64, 0x3e, 0x34, 0x97, 0x03, 0x5b, 0xa2, 0xe7, 0x3f, 0x71, - 0x94, 0x92, 0x2b, 0x7d, 0x25, 0xd1, 0xcd, 0x28, 0xc7, 0x32, 0x07, 0xa7, 0x91, 0x3e, 0x79, 0x0c, - 0x12, 0x76, 0x09, 0x46, 0x6e, 0xbb, 0x8f, 0xaa, 0xdb, 0x5c, 0xa6, 0x4b, 0x9f, 0x54, 0xdb, 0x1f, - 0x02, 0x97, 0xca, 0xbf, 0x43, 0xce, 0x45, 0x9f, 0xb2, 0x25, 0x1a, 0xfb, 0xb3, 0x05, 0x38, 0x49, - 0xcb, 0x58, 0x7d, 0x65, 0x9d, 0x47, 0x91, 0xe8, 0x07, 0x19, 0xf7, 0xf6, 0x6c, 0xe2, 0x21, 0x91, - 0x8f, 0x87, 0x81, 0x59, 0x2c, 0xb9, 0x33, 0xc4, 0x1d, 0x17, 0xca, 0x52, 0x23, 0x81, 0x40, 0x2e, - 0x3d, 0xdb, 0x80, 0xf1, 0xdb, 0xd7, 0xaa, 0x71, 0xb5, 0xb3, 0xc6, 0x9d, 0xcd, 0xd8, 0xf9, 0x34, - 0xb4, 0x3c, 0xd7, 0x1e, 0x9d, 0x0d, 0x5e, 0x47, 0x6e, 0x2d, 0xaf, 0x62, 0x28, 0x94, 0xb9, 0x44, - 0x4b, 0xd5, 0xdd, 0x6d, 0xf0, 0x74, 0x66, 0x83, 0x18, 0x91, 0xbd, 0x47, 0xde, 0xc6, 0x18, 0x31, - 0x4b, 0xdc, 0xc6, 0x4f, 0x24, 0xc1, 0x89, 0x29, 0x25, 0x82, 0x2c, 0xd0, 0xf5, 0x6b, 0x3a, 0x01, - 0xbb, 0x0b, 0x2a, 0xb4, 0x0a, 0x39, 0x2f, 0x60, 0xf5, 0x27, 0x13, 0x0f, 0x3f, 0x65, 0xb1, 0x42, - 0x3e, 0x0f, 0xe9, 0x86, 0x64, 0x69, 0xd9, 0x3d, 0x98, 0xe7, 0x9d, 0x28, 0x70, 0x1d, 0xaf, 0x29, - 0xc3, 0x98, 0xc6, 0x8f, 0x60, 0x32, 0x49, 0xba, 0x7a, 0xfe, 0x59, 0x15, 0x68, 0x6b, 0x2b, 0xf4, - 0x2c, 0xae, 0x76, 0x4d, 0xfb, 0x04, 0x52, 0xaf, 0x35, 0x4d, 0xb0, 0x74, 0x56, 0xda, 0x87, 0x13, - 0xb9, 0x54, 0x6c, 0x01, 0xca, 0x4d, 0x2f, 0x4c, 0x52, 0x95, 0x95, 0xed, 0xf8, 0x37, 0x3b, 0x03, - 0x40, 0xe1, 0x1f, 0x35, 0x17, 0x83, 0x31, 0x84, 0xe0, 0x8b, 0xe6, 0x4b, 0x30, 0xb5, 0x1d, 0xb8, - 0xdd, 0x1d, 0x87, 0x77, 0x9a, 0x5d, 0xdf, 0xeb, 0xc8, 0xf3, 0xc3, 0x9e, 0x44, 0xe8, 0xaa, 0x04, - 0x5a, 0x9f, 0x55, 0x13, 0x95, 0xbd, 0xa6, 0x3b, 0xf8, 0x97, 0x70, 0x94, 0x46, 0xdb, 0xee, 0x23, - 0xc7, 0xdd, 0xe6, 0x86, 0xbd, 0x90, 0x7c, 0xc7, 0xfb, 0xe9, 0x02, 0x9c, 0xee, 0x3b, 0x17, 0xd9, - 0x55, 0x38, 0xe5, 0x52, 0xa4, 0x13, 0x67, 0x27, 0x8a, 0xba, 0xa1, 0xa3, 0x6e, 0xd6, 0x2a, 0x7c, - 0xdc, 0x09, 0x59, 0x7c, 0x43, 0x94, 0xaa, 0xcb, 0x76, 0xc8, 0xde, 0x83, 0x67, 0xbd, 0x4e, 0xc8, - 0x1b, 0xbd, 0x80, 0x3b, 0x8a, 0x41, 0xc3, 0x6b, 0x06, 0x4e, 0xe0, 0x76, 0xb6, 0x55, 0x7c, 0x03, - 0xfb, 0xb4, 0xc2, 0x91, 0xd1, 0x54, 0x96, 0xbd, 0x66, 0x60, 0x23, 0x82, 0xf5, 0x8b, 0x45, 0x98, - 0xef, 0x37, 0x57, 0xd9, 0x3c, 0x8c, 0xf2, 0x8e, 0xde, 0x9b, 0xea, 0xa7, 0xb8, 0xde, 0xc6, 0x47, - 0xb0, 0xec, 0xcb, 0x72, 0x43, 0x26, 0xe1, 0x42, 0x27, 0x1f, 0xfd, 0xc0, 0x95, 0x3d, 0x39, 0xd1, - 0xd0, 0x8f, 0xdd, 0x33, 0x00, 0xc9, 0x39, 0x4b, 0x4a, 0x55, 0x7b, 0xcc, 0x6d, 0x04, 0xb4, 0x25, - 0xb2, 0x93, 0x30, 0x42, 0xe7, 0x98, 0xf4, 0x04, 0x93, 0xbf, 0x84, 0x40, 0x25, 0x3b, 0x19, 0x0f, - 0xe0, 0xd2, 0xd2, 0x84, 0xd1, 0xd9, 0x23, 0x6d, 0x1a, 0x9c, 0xdc, 0xf9, 0x3c, 0xfa, 0xd1, 0xe7, - 0xb3, 0xf5, 0x17, 0x27, 0x49, 0x58, 0xac, 0xf6, 0xa2, 0x1d, 0x25, 0x5e, 0x5e, 0xce, 0x73, 0xc5, - 0x25, 0x33, 0x75, 0xcd, 0xe5, 0xc5, 0x74, 0xc0, 0x55, 0xcf, 0xea, 0xc5, 0xdc, 0x67, 0xf5, 0x57, - 0x61, 0x6c, 0x79, 0x87, 0x37, 0x76, 0x63, 0xff, 0xc6, 0xb2, 0x7c, 0xb7, 0x14, 0x40, 0x4a, 0xda, - 0x92, 0x20, 0xb0, 0x4b, 0x00, 0x18, 0x01, 0x80, 0x6e, 0x51, 0x5a, 0xe2, 0x35, 0x0c, 0x18, 0x20, - 0x2d, 0xff, 0x34, 0x14, 0x64, 0x5f, 0xb7, 0xaf, 0xe9, 0xa6, 0x82, 0xc4, 0x3e, 0x0c, 0xb6, 0x24, - 0x7a, 0x82, 0x20, 0x3e, 0x4f, 0x3b, 0x41, 0xa4, 0xbc, 0x53, 0xc9, 0x1c, 0x33, 0x3a, 0x12, 0xfb, - 0x2c, 0x8c, 0x2e, 0xf3, 0x20, 0xda, 0xd8, 0x58, 0x47, 0xfb, 0x3c, 0xca, 0x37, 0x56, 0xc6, 0xdc, - 0x50, 0x51, 0xd4, 0xfa, 0xde, 0xc1, 0xe2, 0x64, 0xe4, 0xb5, 0x79, 0x9c, 0x47, 0xc5, 0x56, 0xd8, - 0x6c, 0x09, 0x2a, 0x64, 0x41, 0x94, 0xdc, 0x7f, 0x51, 0xa6, 0x29, 0x93, 0x84, 0x25, 0xcd, 0x8d, - 0x1e, 0xf2, 0xcd, 0x38, 0x33, 0x56, 0x06, 0x9f, 0xad, 0xaa, 0x84, 0x72, 0x7a, 0xb3, 0x21, 0xd9, - 0x43, 0xd3, 0x7b, 0xbd, 0x68, 0x7d, 0x96, 0x82, 0x55, 0x61, 0x72, 0xd9, 0x6f, 0x77, 0xdd, 0xc8, - 0xc3, 0x7c, 0xcf, 0xfb, 0x52, 0x7c, 0xc1, 0xdd, 0xb4, 0xa1, 0x17, 0x18, 0xb2, 0x90, 0x5e, 0xc0, - 0xae, 0xc1, 0x94, 0xed, 0xf7, 0x44, 0xb7, 0x2b, 0xed, 0x14, 0x49, 0x28, 0x68, 0x45, 0x17, 0x88, - 0x12, 0x21, 0x50, 0x49, 0x55, 0x94, 0x11, 0x73, 0xde, 0xa0, 0x62, 0x77, 0x72, 0x5e, 0x8e, 0x75, - 0xb1, 0x44, 0xcf, 0x8f, 0x95, 0x61, 0x96, 0xf3, 0xe8, 0x7c, 0x05, 0xc6, 0xeb, 0xf5, 0xbb, 0x1b, - 0x3c, 0x8c, 0xae, 0xb5, 0xfc, 0x87, 0x28, 0x95, 0x94, 0x65, 0x3a, 0xd7, 0xd0, 0x77, 0x22, 0xb1, - 0x22, 0xb6, 0x5a, 0xfe, 0x43, 0x5b, 0xc7, 0x62, 0x5f, 0x13, 0xfd, 0xa1, 0xc9, 0xf0, 0x32, 0xba, - 0xfe, 0x61, 0xd7, 0x0c, 0x3c, 0xfb, 0x93, 0x45, 0x20, 0x2e, 0x1b, 0x66, 0x67, 0x69, 0xe8, 0xe8, - 0x7e, 0x1b, 0xf8, 0x8f, 0xf6, 0xab, 0xcd, 0x66, 0xc0, 0xc3, 0x50, 0x8a, 0x0f, 0xe4, 0x7e, 0x8b, - 0x4a, 0x38, 0x97, 0x0a, 0x0c, 0xf7, 0x5b, 0x8d, 0x80, 0x2d, 0x0b, 0xb9, 0x56, 0x8c, 0x22, 0xda, - 0x75, 0xae, 0xd5, 0x50, 0x02, 0x90, 0x4f, 0x34, 0x72, 0xcc, 0xc9, 0x02, 0xd4, 0xeb, 0x9a, 0xe2, - 0xab, 0x46, 0xc3, 0xd6, 0x60, 0x9a, 0x00, 0x62, 0x69, 0x51, 0x32, 0xc7, 0xd9, 0x24, 0x9d, 0x94, - 0x64, 0x83, 0x87, 0x29, 0x26, 0x74, 0xd4, 0x63, 0xa8, 0xa4, 0xe8, 0xd8, 0x7b, 0x30, 0x85, 0x99, - 0x72, 0x62, 0x1f, 0x46, 0x3c, 0xc8, 0x27, 0x28, 0x92, 0xbc, 0x2c, 0x49, 0x39, 0x06, 0x4f, 0x84, - 0xe1, 0x4e, 0x4d, 0x39, 0x37, 0x0a, 0x06, 0x68, 0x4a, 0x98, 0x30, 0x38, 0x91, 0x30, 0x90, 0x25, - 0x69, 0x06, 0x51, 0x2b, 0x4c, 0x18, 0xfc, 0x54, 0x01, 0x4e, 0x8b, 0x8a, 0x74, 0x77, 0x45, 0xdc, - 0x14, 0xd0, 0x4e, 0x92, 0xb2, 0x7c, 0xbd, 0x76, 0x51, 0x09, 0x95, 0x17, 0x35, 0xb4, 0x8b, 0x7b, - 0x6f, 0x5c, 0xac, 0x26, 0x3f, 0xeb, 0x8a, 0x88, 0x62, 0x6b, 0xf7, 0xe5, 0xa9, 0x0b, 0xef, 0x61, - 0xb8, 0x93, 0xc7, 0x01, 0x1b, 0x25, 0x1a, 0x9f, 0xdf, 0xa8, 0x53, 0x1f, 0xb9, 0x51, 0x7d, 0x79, - 0xea, 0x8d, 0x8a, 0x5a, 0x61, 0x6e, 0xa3, 0xae, 0xc2, 0x24, 0x8a, 0x56, 0x52, 0xa4, 0x0d, 0x64, - 0x0e, 0x31, 0x5c, 0x13, 0x46, 0x81, 0x3d, 0x21, 0x7e, 0xde, 0x97, 0xbf, 0xd8, 0x67, 0x41, 0x5a, - 0x15, 0xef, 0x08, 0x51, 0xe1, 0x74, 0x72, 0x79, 0x4c, 0xa0, 0xfa, 0xbb, 0x17, 0x42, 0x6f, 0x78, - 0x9d, 0x28, 0xd1, 0xd5, 0x2f, 0x68, 0xba, 0xfa, 0x9b, 0x43, 0xe5, 0xd1, 0x4a, 0xf9, 0xe6, 0x50, - 0x79, 0xa6, 0xc2, 0xec, 0xb1, 0x78, 0x1c, 0xed, 0x13, 0xb9, 0xdf, 0x85, 0x9a, 0x8b, 0x7a, 0xf5, - 0xf6, 0x7a, 0x72, 0xfd, 0xfe, 0xfe, 0x72, 0x05, 0x34, 0xbe, 0xed, 0x10, 0x57, 0xc0, 0x7b, 0x14, - 0x99, 0x42, 0xeb, 0x06, 0xa5, 0xb9, 0x30, 0xc0, 0x69, 0xcd, 0x45, 0x8a, 0xc6, 0x4e, 0x61, 0x5b, - 0xff, 0xe1, 0x64, 0x8a, 0xaf, 0x34, 0xff, 0xb7, 0x60, 0x84, 0x14, 0x13, 0xb2, 0x93, 0xd1, 0x0e, - 0x8c, 0xd4, 0x16, 0xb6, 0x2c, 0x61, 0xa7, 0xa1, 0x54, 0xaf, 0xdf, 0x95, 0x9d, 0x8c, 0x4e, 0x00, - 0x61, 0xe8, 0xdb, 0x02, 0x26, 0x46, 0x08, 0x2d, 0xfb, 0xb5, 0x74, 0x49, 0xe2, 0x60, 0xb4, 0x11, - 0x2a, 0xfa, 0x5b, 0xa9, 0x09, 0x86, 0x92, 0xfe, 0x96, 0x6a, 0x82, 0x44, 0x39, 0xb0, 0x0c, 0xf3, - 0xd5, 0x30, 0xe4, 0x81, 0x98, 0x11, 0xd2, 0x60, 0x3c, 0x90, 0x57, 0x59, 0x79, 0xa2, 0x63, 0xa5, - 0x6e, 0x23, 0xb4, 0xfb, 0x22, 0xb2, 0xf3, 0x50, 0xae, 0xf6, 0x9a, 0x1e, 0xef, 0x34, 0x8c, 0xc0, - 0xac, 0xae, 0x84, 0xd9, 0x71, 0x29, 0x7b, 0x1f, 0x4e, 0xa4, 0x02, 0x3c, 0xcb, 0x1e, 0x18, 0x4d, - 0x36, 0x69, 0x75, 0xd5, 0x4e, 0x8c, 0xdc, 0xa8, 0x4b, 0xf2, 0x29, 0x59, 0x15, 0x2a, 0xab, 0xe8, - 0xfa, 0xba, 0xc2, 0xe9, 0x85, 0xdc, 0x0f, 0xc8, 0xe7, 0x99, 0x14, 0x23, 0x32, 0x04, 0x76, 0x33, - 0x2e, 0xb4, 0x33, 0xe8, 0xec, 0x16, 0xcc, 0xa6, 0x61, 0xe2, 0xa8, 0x27, 0x1d, 0x08, 0x6e, 0x92, - 0x19, 0x2e, 0x78, 0xd8, 0xe7, 0x51, 0xb1, 0x4d, 0x98, 0x49, 0x8c, 0x3c, 0x4d, 0xcd, 0x88, 0xf2, - 0x1d, 0x89, 0xcb, 0x95, 0x76, 0xe4, 0x19, 0x39, 0x19, 0x67, 0x13, 0x83, 0xd1, 0x58, 0x43, 0x62, - 0x67, 0xd9, 0xb1, 0x26, 0x4c, 0xd5, 0xbd, 0xed, 0x8e, 0xd7, 0xd9, 0xbe, 0xc5, 0xf7, 0x6b, 0xae, - 0x17, 0x48, 0x2b, 0xfe, 0xf9, 0xf8, 0x3d, 0x76, 0xbf, 0xdd, 0xe6, 0x51, 0x80, 0xab, 0x5e, 0x94, - 0x63, 0x5c, 0x0f, 0x71, 0xe3, 0x5d, 0x08, 0x89, 0x0e, 0x5d, 0xe1, 0xbb, 0xae, 0x67, 0x48, 0x0b, - 0x26, 0x4f, 0x43, 0x3b, 0x35, 0x31, 0xa0, 0x76, 0xaa, 0x05, 0x33, 0xab, 0x9d, 0x46, 0xb0, 0x8f, - 0x86, 0x0a, 0xaa, 0x71, 0x93, 0x47, 0x34, 0xee, 0x45, 0xd9, 0xb8, 0x67, 0x5d, 0x35, 0xc3, 0xf2, - 0x9a, 0x97, 0x65, 0xcc, 0xea, 0x30, 0x83, 0x57, 0x90, 0xb5, 0x95, 0xda, 0x5a, 0xc7, 0x8b, 0x3c, - 0x37, 0xe2, 0x4d, 0x29, 0x85, 0xc4, 0x49, 0xe6, 0x48, 0x0b, 0xe1, 0x35, 0xbb, 0x8e, 0xa7, 0x50, - 0x74, 0xa6, 0x19, 0xfa, 0xc3, 0x54, 0x01, 0xd3, 0x7f, 0x44, 0xaa, 0x80, 0x35, 0x98, 0x4e, 0x87, - 0xc7, 0xa9, 0x24, 0xc2, 0x43, 0x88, 0x45, 0x42, 0x06, 0xf1, 0x7b, 0x28, 0x75, 0x1a, 0x01, 0xd8, - 0x52, 0x81, 0x71, 0x52, 0x5a, 0x85, 0x19, 0x43, 0xab, 0x60, 0xec, 0x4a, 0xc7, 0xd1, 0x2a, 0xd4, - 0x00, 0xae, 0xf9, 0x41, 0x83, 0x57, 0x31, 0xe6, 0x04, 0x33, 0x52, 0x71, 0x0a, 0xa6, 0x49, 0x21, - 0xad, 0x9f, 0x2d, 0xf1, 0xdb, 0x49, 0x87, 0x0e, 0xd1, 0x78, 0x30, 0x17, 0x4e, 0xd5, 0x02, 0xbe, - 0xc5, 0x83, 0x80, 0x37, 0xe5, 0x85, 0x68, 0xc9, 0xeb, 0x34, 0x55, 0x7e, 0x55, 0x99, 0x8c, 0xa3, - 0xab, 0x50, 0x62, 0x9f, 0x97, 0x4d, 0x42, 0xd2, 0xcf, 0xe6, 0x3e, 0x7c, 0x32, 0x5a, 0x8d, 0xb9, - 0xe3, 0x6a, 0x35, 0x56, 0x61, 0x6a, 0xad, 0xd3, 0x68, 0xf5, 0x9a, 0x5c, 0xda, 0xe6, 0xcb, 0xec, - 0xa8, 0x28, 0x19, 0x7a, 0x54, 0xe2, 0x48, 0x13, 0x7e, 0x7d, 0x5d, 0x99, 0x44, 0x87, 0xea, 0x32, - 0x4e, 0x7e, 0x64, 0x5d, 0x06, 0xab, 0xc2, 0x78, 0x12, 0x40, 0x21, 0x94, 0x02, 0x50, 0xee, 0x48, - 0x2f, 0x27, 0x68, 0xb6, 0x4e, 0x63, 0xdd, 0x85, 0xf9, 0x7e, 0x88, 0xec, 0x0a, 0x0c, 0xfb, 0x62, - 0x00, 0x53, 0xa9, 0xd4, 0xef, 0x8a, 0xe1, 0xa3, 0x69, 0xac, 0xb3, 0x25, 0x5c, 0xeb, 0x07, 0xe0, - 0x64, 0x3e, 0x82, 0x79, 0xe3, 0x2f, 0x1c, 0x75, 0xe3, 0x2f, 0x66, 0x6f, 0xfc, 0xd6, 0x8f, 0x15, - 0x53, 0xad, 0x1d, 0x4c, 0xd5, 0xf0, 0x69, 0xc8, 0x9e, 0x09, 0x92, 0x7f, 0x85, 0xa7, 0x4f, 0x86, - 0xcb, 0x90, 0xbf, 0xf5, 0x4b, 0x15, 0xc4, 0x6c, 0x9a, 0xe0, 0x5e, 0xd0, 0x62, 0x57, 0x61, 0x5c, - 0x9b, 0xee, 0x78, 0xfa, 0xf6, 0x5b, 0x1c, 0x36, 0x6c, 0x25, 0x2b, 0xe0, 0x24, 0xc8, 0xc3, 0x5f, - 0xa9, 0x28, 0xe8, 0x17, 0xab, 0x50, 0xa0, 0x96, 0x11, 0xb2, 0x9e, 0x0b, 0x43, 0x9f, 0x31, 0xc0, - 0x93, 0x5e, 0x9a, 0x09, 0xe0, 0xdf, 0xd6, 0x5f, 0x98, 0x24, 0x19, 0x4e, 0x57, 0x28, 0xf4, 0xf3, - 0xd2, 0x49, 0x29, 0x1a, 0x8a, 0xc7, 0x51, 0x34, 0x94, 0x8e, 0x56, 0x34, 0x0c, 0x1d, 0xa5, 0x68, - 0x48, 0x69, 0x02, 0x86, 0x8f, 0xa9, 0x09, 0x18, 0x3d, 0x96, 0x26, 0xc0, 0x50, 0x52, 0x94, 0x8f, - 0x52, 0x52, 0xfc, 0x89, 0xde, 0xe0, 0x69, 0xd5, 0x1b, 0xe4, 0x09, 0xf9, 0xc7, 0xd2, 0x1b, 0x64, - 0xae, 0xfd, 0x33, 0x4f, 0xe6, 0xda, 0xcf, 0x9e, 0xd8, 0xb5, 0x7f, 0xf6, 0xe3, 0x5e, 0xfb, 0xe7, - 0x9e, 0xe4, 0xb5, 0xff, 0xc4, 0x1f, 0xc7, 0x6b, 0xff, 0xc9, 0x7f, 0x33, 0xd7, 0xfe, 0x2b, 0x50, - 0xae, 0xf9, 0x61, 0x74, 0xcd, 0x0f, 0xda, 0x78, 0xf0, 0x4e, 0xc8, 0x57, 0x16, 0x3f, 0xc4, 0xe4, - 0xc6, 0x6d, 0x43, 0x56, 0x96, 0x88, 0x6c, 0x49, 0x4d, 0x38, 0x75, 0x31, 0x9e, 0x4f, 0x1e, 0xba, - 0xe4, 0x4c, 0x91, 0xf7, 0xe3, 0xec, 0x7c, 0x53, 0xf7, 0xe5, 0x3b, 0x30, 0xa3, 0xfc, 0x04, 0xf1, - 0x68, 0x45, 0x9d, 0xc3, 0xe9, 0x64, 0x65, 0x26, 0x0e, 0x85, 0xaa, 0xd4, 0xc8, 0xb0, 0x9c, 0x26, - 0xed, 0xab, 0x4e, 0x18, 0xa9, 0x8c, 0xde, 0x1c, 0x2a, 0x57, 0x2a, 0x33, 0x03, 0xa8, 0x13, 0x7e, - 0x10, 0x2a, 0xe9, 0x1b, 0xce, 0xd1, 0xc9, 0x37, 0x9e, 0x58, 0x5c, 0x6a, 0x71, 0xff, 0x4a, 0xdf, - 0x30, 0xd8, 0x25, 0x80, 0x5a, 0xe0, 0xed, 0xb9, 0x11, 0xbf, 0xa5, 0x0c, 0xd1, 0x65, 0xb6, 0x19, - 0x82, 0x8a, 0x65, 0x60, 0x6b, 0x28, 0xf1, 0xe5, 0xba, 0x98, 0x77, 0xb9, 0xb6, 0x7e, 0xb4, 0x08, - 0x33, 0x14, 0x90, 0xf5, 0xe9, 0x37, 0xf6, 0xf8, 0x82, 0xa1, 0x32, 0x79, 0x36, 0xc9, 0xa1, 0xa5, - 0x7f, 0xdd, 0x21, 0xe6, 0x1e, 0x5f, 0x85, 0x13, 0x99, 0xae, 0x40, 0xb5, 0xc9, 0x8a, 0x0a, 0x85, - 0x9b, 0x51, 0x9c, 0xcc, 0xe7, 0x57, 0x72, 0xff, 0x8a, 0x9d, 0xa1, 0xb0, 0x7e, 0x65, 0x38, 0xc3, - 0x5f, 0x1a, 0x7e, 0xe8, 0xa6, 0x1c, 0x85, 0xe3, 0x99, 0x72, 0x14, 0x07, 0x33, 0xe5, 0x48, 0xc9, - 0x29, 0xa5, 0x41, 0xe4, 0x94, 0xf7, 0x61, 0x72, 0x83, 0xbb, 0xed, 0x70, 0xc3, 0x97, 0x09, 0x59, - 0xc9, 0x89, 0x52, 0x45, 0xba, 0x15, 0x65, 0xea, 0xd6, 0x1f, 0xbb, 0x6f, 0x44, 0x82, 0x40, 0x9c, - 0xc4, 0x94, 0xa1, 0xd5, 0x36, 0x39, 0xe8, 0xaa, 0x9c, 0xe1, 0x43, 0x54, 0x39, 0x75, 0x98, 0x90, - 0x74, 0x49, 0xc6, 0x91, 0x44, 0xe7, 0x20, 0x8a, 0x10, 0xae, 0x6a, 0x57, 0xd1, 0x0c, 0xa6, 0xe2, - 0xda, 0x49, 0xdd, 0x60, 0x30, 0x11, 0x5d, 0xa0, 0xde, 0x2a, 0x45, 0x17, 0x8c, 0x26, 0x5d, 0xa0, - 0xde, 0x35, 0xa9, 0x0b, 0x34, 0x24, 0xf6, 0x2e, 0x4c, 0x55, 0x6b, 0x6b, 0x3a, 0x59, 0x39, 0xb1, - 0x26, 0x71, 0xbb, 0x9e, 0x63, 0x90, 0xa6, 0x70, 0x0f, 0xbb, 0x7e, 0x8f, 0xfd, 0x11, 0x5d, 0xbf, - 0xd3, 0x17, 0x45, 0x38, 0xe6, 0x45, 0xd1, 0xfa, 0xa7, 0x13, 0x6a, 0x7f, 0xf8, 0x64, 0xdf, 0xf7, - 0xcc, 0x17, 0xbb, 0xd2, 0x31, 0x5f, 0xec, 0x86, 0x8e, 0x12, 0x86, 0x35, 0x99, 0x7b, 0xe4, 0x63, - 0xbf, 0xbe, 0x8d, 0x1e, 0x53, 0x8a, 0x4e, 0x2d, 0xbe, 0xf2, 0x20, 0x8b, 0x2f, 0x57, 0xf2, 0x1e, - 0xfb, 0xf8, 0x92, 0x37, 0x1c, 0x5b, 0xf2, 0xae, 0x27, 0x51, 0x4a, 0xc6, 0x8f, 0x74, 0xfe, 0x3c, - 0x23, 0x75, 0x55, 0x33, 0xf9, 0xf1, 0x76, 0xe3, 0x78, 0x25, 0xdf, 0x57, 0xe2, 0xfc, 0xd7, 0xf3, - 0xc5, 0xf9, 0xc3, 0x0f, 0xa0, 0x3f, 0x11, 0xe8, 0xff, 0x44, 0xa0, 0xff, 0x23, 0x11, 0xe8, 0xef, - 0x02, 0x73, 0x7b, 0xd1, 0x8e, 0x90, 0x8b, 0x1b, 0x18, 0xf3, 0x5d, 0x0c, 0x31, 0x8a, 0xf6, 0x72, - 0x8d, 0x64, 0x4b, 0xf5, 0x35, 0x62, 0x94, 0xa2, 0xce, 0x23, 0x16, 0xac, 0xe7, 0x4d, 0xc1, 0x7a, - 0xb8, 0x32, 0x32, 0xb0, 0x60, 0x1d, 0xe0, 0x3a, 0x7b, 0xe0, 0x06, 0x1d, 0x3c, 0xa6, 0x2e, 0xc1, - 0xa8, 0x8a, 0x3c, 0x5e, 0x48, 0x1e, 0x3c, 0xb2, 0x21, 0xc7, 0x15, 0x16, 0xbb, 0x0c, 0x65, 0x45, - 0xac, 0x67, 0x7b, 0x7c, 0x28, 0x61, 0x46, 0x50, 0x67, 0x09, 0xb3, 0xfe, 0x83, 0x21, 0xb5, 0x97, - 0x8b, 0xcf, 0xa8, 0xb9, 0x81, 0xdb, 0xc6, 0x64, 0xd3, 0xf1, 0x52, 0xd3, 0xc4, 0xfa, 0xd4, 0xea, - 0x4c, 0xf9, 0xdf, 0x99, 0x24, 0x1f, 0x29, 0x74, 0xfc, 0xab, 0x30, 0x22, 0xa5, 0x2a, 0xba, 0x07, - 0xa0, 0x44, 0x91, 0x49, 0x6b, 0x2f, 0x71, 0xd8, 0x5b, 0xe4, 0x79, 0x2b, 0x43, 0xa7, 0x0c, 0x25, - 0xd9, 0xd7, 0xc5, 0xfe, 0x96, 0x93, 0x7d, 0x3d, 0x41, 0x66, 0x57, 0xc9, 0xdb, 0x94, 0x72, 0x9f, - 0x0c, 0x27, 0x81, 0x3c, 0x91, 0x32, 0x9d, 0xf4, 0x24, 0x41, 0x4d, 0xee, 0x29, 0x23, 0xc7, 0x49, - 0xca, 0x30, 0xfa, 0x6f, 0x34, 0x29, 0xc3, 0x2a, 0x80, 0x3c, 0x73, 0x13, 0x33, 0x9b, 0x97, 0x70, - 0x4b, 0x92, 0x2e, 0x1f, 0x51, 0xd4, 0xea, 0x93, 0x63, 0x4e, 0x23, 0xb4, 0xfe, 0x11, 0x83, 0x99, - 0x7a, 0xfd, 0xee, 0x8a, 0xe7, 0x6e, 0x77, 0xfc, 0x30, 0xf2, 0x1a, 0x6b, 0x9d, 0x2d, 0x5f, 0x08, - 0xe9, 0xf1, 0xb9, 0xa0, 0x85, 0xd3, 0x4f, 0xce, 0x84, 0xb8, 0x58, 0x5c, 0x02, 0x57, 0x83, 0x40, - 0x29, 0x63, 0xe9, 0x12, 0xc8, 0x05, 0xc0, 0x26, 0xb8, 0x90, 0x83, 0xeb, 0x3d, 0x74, 0x60, 0x94, - 0xb6, 0x4c, 0x28, 0x07, 0x87, 0x04, 0xb2, 0x55, 0x19, 0xe3, 0xd9, 0x09, 0x2b, 0xef, 0x45, 0xa7, - 0x8c, 0xd4, 0x0e, 0x49, 0x31, 0xad, 0x68, 0x29, 0x95, 0xe0, 0x5e, 0xde, 0x45, 0xb8, 0x6e, 0x93, - 0x9b, 0x59, 0x03, 0xfb, 0x70, 0xc2, 0x08, 0x73, 0x32, 0xe8, 0x5b, 0xdf, 0x2b, 0x52, 0xee, 0xb6, - 0xd0, 0xef, 0x21, 0xe7, 0xc1, 0x4f, 0xcf, 0x1e, 0x9d, 0x5b, 0x03, 0xfb, 0xd1, 0x02, 0x9c, 0xc9, - 0x2d, 0x89, 0x57, 0xf7, 0xb8, 0x91, 0x5e, 0x43, 0xdb, 0x34, 0x28, 0x4f, 0x76, 0xbf, 0xaa, 0x9d, - 0x9c, 0xad, 0xe0, 0xf0, 0x9a, 0xd8, 0xaf, 0x15, 0xe0, 0x94, 0x81, 0x11, 0xef, 0xa1, 0x61, 0x1c, - 0x01, 0x2c, 0x77, 0x5e, 0x7f, 0xf8, 0x64, 0xe6, 0xf5, 0x0b, 0xe6, 0xb7, 0x24, 0xbb, 0xa5, 0xfe, - 0x0d, 0xfd, 0x5a, 0xc8, 0xf6, 0x60, 0x06, 0x8b, 0xd4, 0xbb, 0xa3, 0x98, 0xb3, 0xf2, 0xb9, 0x72, - 0x2e, 0x69, 0x36, 0x85, 0xee, 0x11, 0x12, 0xf7, 0xd2, 0xe5, 0xef, 0x1e, 0x2c, 0x4e, 0x1a, 0xe8, - 0x2a, 0x61, 0x85, 0x93, 0x3c, 0x5e, 0x7a, 0x9d, 0x2d, 0xdf, 0x50, 0xb3, 0xa4, 0xab, 0x60, 0x7f, - 0xb7, 0x40, 0x6f, 0x17, 0xf4, 0x19, 0xd7, 0x02, 0xbf, 0x1d, 0x97, 0x2b, 0xe3, 0xee, 0x3e, 0xdd, - 0xd6, 0x7a, 0x32, 0xdd, 0xf6, 0x12, 0x36, 0x99, 0xf6, 0x04, 0x67, 0x2b, 0xf0, 0xdb, 0x49, 0xf3, - 0xf5, 0x8e, 0xeb, 0xdb, 0x48, 0xf6, 0xe7, 0x0a, 0x70, 0xda, 0x50, 0xb9, 0xea, 0x99, 0xc8, 0x64, - 0x80, 0xa4, 0xd8, 0xc9, 0x50, 0x2b, 0x5a, 0xba, 0x28, 0xe7, 0xff, 0x39, 0x6c, 0x81, 0x16, 0xa9, - 0x5b, 0x20, 0x39, 0x6d, 0xc2, 0xd2, 0x9a, 0xd0, 0xbf, 0x16, 0xe6, 0xc1, 0x0c, 0x5a, 0x8b, 0x19, - 0x4e, 0x08, 0x73, 0xfd, 0x9d, 0x10, 0xe2, 0x2c, 0x96, 0x98, 0x33, 0xa8, 0xbf, 0x27, 0x42, 0x96, - 0x2b, 0xfb, 0x21, 0x38, 0x9d, 0x01, 0xc6, 0xab, 0xed, 0x44, 0xdf, 0xd5, 0xf6, 0xe9, 0xc7, 0x07, - 0x8b, 0x2f, 0xe7, 0xd5, 0x96, 0xb7, 0xd2, 0xfa, 0xd7, 0xc0, 0x5c, 0x80, 0xa4, 0x50, 0xca, 0x44, - 0xf9, 0x13, 0xf4, 0xd3, 0x72, 0x7e, 0x68, 0xf8, 0x62, 0x2f, 0xd7, 0xda, 0xa0, 0x1f, 0x79, 0x09, - 0x12, 0xe3, 0x30, 0xa1, 0xe5, 0x4b, 0xda, 0x97, 0xef, 0x87, 0x7d, 0x2a, 0xf9, 0xee, 0xc1, 0xa2, - 0x81, 0x2d, 0x6e, 0x46, 0x7a, 0x22, 0x26, 0x43, 0x04, 0xd5, 0x11, 0xd9, 0xaf, 0x16, 0x60, 0x4e, - 0x00, 0x92, 0x49, 0x25, 0x3f, 0x6a, 0xfe, 0xb0, 0x59, 0xbf, 0xf3, 0x64, 0x66, 0xfd, 0xf3, 0xd8, - 0x46, 0x7d, 0xd6, 0x67, 0xba, 0x24, 0xb7, 0x71, 0x38, 0xdb, 0x0d, 0xc3, 0x44, 0x63, 0xb6, 0x9f, - 0x1e, 0x60, 0xb6, 0xd3, 0x00, 0x1c, 0x3d, 0xdb, 0xfb, 0xd6, 0xc2, 0x36, 0x60, 0x42, 0x5e, 0x8a, - 0xa8, 0xc3, 0x9e, 0x33, 0x1c, 0x79, 0xf5, 0x22, 0xba, 0xa9, 0xca, 0x74, 0x52, 0x99, 0x2f, 0x34, - 0xb8, 0xb0, 0x0e, 0xcc, 0xd2, 0x6f, 0x53, 0x6b, 0xb5, 0xd8, 0x57, 0x6b, 0x75, 0x5e, 0x7e, 0xd1, - 0x59, 0xc9, 0x3f, 0xa5, 0xbc, 0xd2, 0x23, 0x2e, 0xe6, 0x30, 0x66, 0x5d, 0x60, 0x06, 0x98, 0x16, - 0xed, 0xd9, 0xc3, 0x75, 0x55, 0x2f, 0xcb, 0x3a, 0x17, 0xd3, 0x75, 0xa6, 0x57, 0x6e, 0x0e, 0x6f, - 0xe6, 0xc2, 0xb4, 0x84, 0xfa, 0xbb, 0x9c, 0x76, 0xf8, 0xe7, 0x8d, 0x98, 0x97, 0xa9, 0x52, 0xba, - 0xd9, 0xa9, 0x9a, 0x30, 0x26, 0x69, 0x6a, 0x43, 0x4f, 0xf3, 0x63, 0x77, 0x61, 0xa6, 0xda, 0xed, - 0xb6, 0x3c, 0xde, 0xc4, 0xaf, 0xb4, 0x7b, 0xe2, 0x9b, 0xac, 0x24, 0x7f, 0xb0, 0x4b, 0x85, 0xf2, - 0xba, 0x19, 0xf4, 0x52, 0xdb, 0x4d, 0x86, 0xd6, 0xfa, 0x91, 0x42, 0xa6, 0xd1, 0xec, 0x55, 0x18, - 0xc3, 0x1f, 0x5a, 0x18, 0x35, 0xd4, 0xdd, 0x50, 0x13, 0x51, 0x2b, 0x94, 0x20, 0x08, 0x61, 0x49, - 0x0f, 0xa5, 0x5c, 0x22, 0x61, 0x49, 0x2a, 0x18, 0x12, 0x95, 0xc2, 0xa2, 0x72, 0x0e, 0x2b, 0x25, - 0x42, 0x17, 0x5e, 0x4d, 0xa4, 0x4b, 0x98, 0xf5, 0x9f, 0x16, 0xcd, 0x69, 0xc7, 0xce, 0x6b, 0x72, - 0xbb, 0x16, 0xcc, 0x59, 0xc9, 0xed, 0x9a, 0xb4, 0xfe, 0x8b, 0x05, 0x98, 0xbd, 0xab, 0x65, 0xb5, - 0xdf, 0xf0, 0x71, 0x5c, 0x0e, 0xcf, 0xdf, 0xfe, 0xa4, 0x52, 0x4a, 0xeb, 0xe9, 0xf4, 0xc5, 0x4c, - 0xc1, 0x29, 0x63, 0xe7, 0xb5, 0x07, 0x1d, 0x87, 0xb1, 0x61, 0x5a, 0x66, 0x6f, 0x42, 0x27, 0xf8, - 0x31, 0x93, 0x4b, 0x59, 0x7f, 0xa9, 0x08, 0xe3, 0xda, 0x8a, 0x61, 0x9f, 0x81, 0x09, 0xbd, 0x5a, - 0x5d, 0xf1, 0xa7, 0xb7, 0xd2, 0x36, 0xb0, 0x50, 0xf3, 0xc7, 0xdd, 0xb6, 0xa1, 0xf9, 0x13, 0xeb, - 0x02, 0xa1, 0xc7, 0xbc, 0x09, 0xbd, 0x97, 0x73, 0x13, 0xc2, 0x59, 0xae, 0x69, 0x7a, 0x0e, 0xbd, - 0x0f, 0xbd, 0x9b, 0xbd, 0x0f, 0xa1, 0xd2, 0x49, 0xa3, 0xef, 0x7f, 0x2b, 0xb2, 0x7e, 0xb2, 0x00, - 0x95, 0xf4, 0x9a, 0xfe, 0x44, 0x7a, 0xe5, 0x18, 0xcf, 0x44, 0xdf, 0x2e, 0xc6, 0xb9, 0xd5, 0x54, - 0x44, 0x87, 0xa7, 0xd5, 0xe8, 0xf5, 0xf3, 0xc6, 0x0b, 0xce, 0x33, 0x66, 0xbc, 0x5a, 0x3d, 0xa0, - 0x55, 0x7e, 0x90, 0xea, 0xa1, 0xef, 0xfc, 0xc2, 0xe2, 0xa7, 0xac, 0x2f, 0xc1, 0x5c, 0xba, 0x3b, - 0xf0, 0x15, 0xa7, 0x0a, 0xd3, 0x26, 0x3c, 0x9d, 0x99, 0x31, 0x4d, 0x65, 0xa7, 0xf1, 0xad, 0xdf, - 0x29, 0xa6, 0x79, 0x4b, 0x03, 0x58, 0xb1, 0x47, 0xe9, 0x46, 0x3a, 0x72, 0x8f, 0x22, 0x90, 0xad, - 0xca, 0x8e, 0x93, 0x5d, 0x35, 0x8e, 0x01, 0x50, 0xca, 0x8f, 0x01, 0xc0, 0xae, 0xa6, 0x9c, 0x03, - 0xb4, 0xb8, 0x8a, 0x0f, 0xf9, 0xa6, 0x93, 0x38, 0x08, 0x64, 0x7c, 0x02, 0xe6, 0x8c, 0x24, 0x21, - 0x8a, 0x7e, 0x38, 0xd1, 0xb9, 0x47, 0x58, 0x40, 0xc4, 0xb9, 0xc8, 0xec, 0x06, 0x8c, 0x8a, 0x66, - 0xde, 0x76, 0xbb, 0xf2, 0x71, 0x86, 0xc5, 0x51, 0x4a, 0x5a, 0xf1, 0xfd, 0x50, 0x0b, 0x54, 0xd2, - 0xe2, 0x42, 0x42, 0xd0, 0x27, 0x96, 0x44, 0xb4, 0xfe, 0xef, 0x82, 0x58, 0xff, 0x8d, 0xdd, 0xef, - 0xb3, 0xb4, 0xaa, 0xe2, 0x93, 0x0e, 0xb1, 0xcf, 0xfe, 0x67, 0x45, 0xca, 0x96, 0x27, 0xa7, 0xcf, - 0x5b, 0x30, 0x42, 0xe1, 0x4b, 0xa4, 0x49, 0x9a, 0xce, 0x85, 0x0a, 0x92, 0xa8, 0x8f, 0x14, 0xd9, - 0xc4, 0x96, 0x04, 0xba, 0xea, 0xac, 0x38, 0x90, 0xea, 0x4c, 0xd3, 0xe7, 0x97, 0x9e, 0x98, 0x3e, - 0xff, 0x07, 0xe2, 0xc4, 0x78, 0xd5, 0x68, 0x80, 0x1c, 0x14, 0x67, 0xd3, 0x79, 0x28, 0x33, 0xd9, - 0x42, 0x12, 0x76, 0xec, 0xaa, 0x9e, 0xd9, 0x52, 0x73, 0x46, 0x3f, 0x22, 0x87, 0xa5, 0xf5, 0x1b, - 0x43, 0xd4, 0xc7, 0xb2, 0xa3, 0xce, 0x19, 0x21, 0x37, 0x70, 0x9d, 0xa4, 0x74, 0x9d, 0x14, 0x7c, - 0xe3, 0x1c, 0x0c, 0x89, 0xb9, 0x29, 0x7b, 0x13, 0xf1, 0xc4, 0xfc, 0xd5, 0xf1, 0x44, 0xb9, 0x58, - 0xcb, 0x78, 0x26, 0xe9, 0xe9, 0x8f, 0xf1, 0xd8, 0xd2, 0xd7, 0x32, 0x62, 0x88, 0x2f, 0x88, 0xf3, - 0x3e, 0xe9, 0x5f, 0xf0, 0xff, 0xb3, 0xf7, 0x6d, 0xb1, 0x91, 0x24, 0xc9, 0x61, 0x53, 0xdd, 0x4d, - 0xb2, 0x19, 0x7c, 0x15, 0x73, 0x38, 0xef, 0xd9, 0x79, 0xd4, 0xee, 0x8e, 0x76, 0xb9, 0xb7, 0x8f, - 0x99, 0xbd, 0x7d, 0xcc, 0xdd, 0x3e, 0xae, 0xd8, 0xdd, 0x1c, 0xf6, 0x4c, 0xb3, 0xbb, 0x2f, 0xab, - 0x39, 0xa3, 0xb9, 0xd5, 0xa9, 0x54, 0xd3, 0x5d, 0x24, 0x6b, 0xa7, 0xd9, 0xd5, 0x5b, 0x55, 0xbd, - 0x1c, 0x1e, 0x04, 0xe8, 0x71, 0xb0, 0x0c, 0xc8, 0xd0, 0x5b, 0x86, 0x0f, 0x07, 0x19, 0x16, 0x60, - 0x41, 0xd0, 0x87, 0x60, 0x1b, 0xf6, 0x8f, 0x20, 0x01, 0x86, 0xf5, 0x27, 0x40, 0x90, 0xe5, 0x07, - 0x20, 0xc0, 0xb2, 0xb0, 0x90, 0x4e, 0x30, 0x60, 0x0b, 0xf2, 0x97, 0x60, 0x7f, 0xc8, 0x90, 0x61, - 0x64, 0x64, 0x66, 0x55, 0x56, 0x75, 0x75, 0x93, 0x73, 0xb3, 0x27, 0x5b, 0xb2, 0x7e, 0x08, 0x76, - 0x64, 0x44, 0x54, 0x3e, 0x23, 0x23, 0x23, 0x23, 0x23, 0x0e, 0x76, 0x9d, 0xf1, 0x04, 0xb3, 0x4a, - 0xb2, 0xb9, 0x1a, 0x2c, 0x3f, 0xf0, 0x06, 0x3d, 0xff, 0x30, 0xac, 0xba, 0xe1, 0xe3, 0xc8, 0x1f, - 0x0a, 0x9f, 0x74, 0xb4, 0xfb, 0x1f, 0xf2, 0x12, 0xbb, 0xc7, 0x8b, 0xd4, 0x4b, 0x92, 0x34, 0x11, - 0xd9, 0x80, 0xa5, 0x54, 0xe4, 0x74, 0x71, 0xf7, 0x89, 0x36, 0xce, 0x74, 0xdc, 0x75, 0xd5, 0xc6, - 0x99, 0x22, 0x61, 0xbb, 0xb4, 0xa8, 0xbf, 0x72, 0x03, 0x3a, 0x56, 0x77, 0x81, 0x43, 0xde, 0x84, - 0x32, 0x0f, 0xde, 0x53, 0xaf, 0xaa, 0x97, 0x56, 0x21, 0xc2, 0x32, 0x01, 0xe5, 0x24, 0x22, 0xa9, - 0xc0, 0xd2, 0x86, 0x1f, 0xd5, 0x07, 0x61, 0xe4, 0x0c, 0xba, 0x6e, 0x1c, 0x27, 0x1e, 0x1b, 0xfb, - 0xc8, 0x8f, 0x6c, 0x4f, 0x94, 0xa4, 0xe9, 0xd3, 0x34, 0xac, 0xab, 0xef, 0xfa, 0xde, 0x80, 0x8b, - 0xce, 0x85, 0xa4, 0xab, 0x3f, 0xf6, 0xbd, 0xc1, 0x58, 0x68, 0xf6, 0x04, 0x35, 0x09, 0x92, 0xc3, - 0x1f, 0xd2, 0xd2, 0x52, 0xd3, 0xef, 0xb9, 0x86, 0xc8, 0x69, 0x29, 0x82, 0x8b, 0xbf, 0x02, 0x73, - 0x7c, 0xf1, 0x65, 0xb3, 0xe7, 0x27, 0xb3, 0x8c, 0x4a, 0x0c, 0x62, 0xc0, 0x92, 0x37, 0xb0, 0xb9, - 0xfb, 0xa4, 0x3f, 0xe8, 0xf3, 0xdc, 0x70, 0x65, 0xba, 0xe0, 0x0d, 0xd0, 0x69, 0xb2, 0x35, 0xe8, - 0x1f, 0x19, 0x6f, 0x80, 0x2e, 0x04, 0x6a, 0x9c, 0xac, 0x1b, 0xdd, 0x35, 0xea, 0x55, 0xaa, 0x0a, - 0xc1, 0xae, 0xd7, 0x0b, 0x28, 0x42, 0xf1, 0xad, 0x6c, 0xd3, 0x8d, 0x0e, 0xfd, 0xe0, 0x31, 0x75, - 0xc3, 0x28, 0xf0, 0x78, 0xee, 0x6f, 0x14, 0x23, 0x5f, 0x24, 0xef, 0xc1, 0x0c, 0x3a, 0x81, 0x67, - 0xf6, 0xb5, 0xec, 0x37, 0x36, 0x96, 0xc4, 0xf2, 0x9b, 0x41, 0x8f, 0x72, 0xca, 0x89, 0xc8, 0x6d, - 0x28, 0x55, 0xdd, 0xc1, 0x51, 0x26, 0x95, 0xf0, 0x18, 0x71, 0x2c, 0xce, 0x7a, 0xee, 0xe0, 0x88, - 0x22, 0x89, 0xf1, 0x73, 0x05, 0x38, 0x93, 0x53, 0xad, 0xfb, 0x5f, 0xfc, 0x1b, 0x2a, 0xd3, 0x37, - 0x52, 0x32, 0x5d, 0x5e, 0xd3, 0x4f, 0xec, 0xf8, 0x5c, 0x11, 0xff, 0x4b, 0x1a, 0x9c, 0x4b, 0x2f, - 0x44, 0xf1, 0xea, 0xe3, 0xfe, 0x9b, 0xe4, 0xcb, 0x30, 0xbb, 0xe5, 0x3a, 0x3d, 0x57, 0xe6, 0x0d, - 0xcd, 0x66, 0xe7, 0xe7, 0x85, 0x9c, 0x6d, 0xf2, 0xc0, 0x9f, 0x43, 0x49, 0x55, 0x54, 0x8e, 0x1f, - 0x3e, 0x0c, 0x19, 0x08, 0x2a, 0xef, 0x53, 0x53, 0x9c, 0x5d, 0xbe, 0x55, 0x80, 0x4b, 0x53, 0x68, - 0xd8, 0xc0, 0xb1, 0xa1, 0x57, 0x07, 0x0e, 0xf5, 0x01, 0x84, 0x92, 0x0f, 0x60, 0xa5, 0x23, 0x0e, - 0x2f, 0x72, 0x38, 0x0a, 0x89, 0x5c, 0x90, 0xe7, 0x1a, 0xe9, 0xf4, 0x45, 0xb3, 0xc8, 0xa9, 0xa8, - 0x69, 0xc5, 0xa9, 0x51, 0xd3, 0xd4, 0x20, 0x64, 0xa5, 0xef, 0x32, 0x08, 0xd9, 0xcc, 0xf4, 0x20, - 0x64, 0xb3, 0x99, 0x20, 0x64, 0x0f, 0x61, 0x2d, 0xdd, 0x33, 0x62, 0xfd, 0x27, 0x01, 0xdc, 0xb4, - 0xc9, 0x01, 0xdc, 0xa6, 0x86, 0x30, 0x37, 0x7e, 0x5a, 0x03, 0x3d, 0xcd, 0xfb, 0x59, 0x67, 0xc3, - 0xfb, 0xa9, 0xd9, 0x70, 0x29, 0x7f, 0x36, 0x4c, 0x9e, 0x06, 0xff, 0x5d, 0xcb, 0x36, 0xf6, 0x44, - 0xe3, 0x6f, 0xc0, 0x6c, 0xd5, 0x3f, 0x70, 0x3c, 0x39, 0xec, 0xf8, 0xe0, 0xab, 0x87, 0x10, 0x2a, - 0x4a, 0x4e, 0x16, 0xef, 0xee, 0x1a, 0xcc, 0x34, 0xfd, 0x81, 0x59, 0x15, 0xae, 0xd6, 0xc8, 0x67, - 0xe0, 0x0f, 0x6c, 0xa7, 0x47, 0x79, 0x01, 0x69, 0x00, 0x58, 0xdd, 0xc0, 0x75, 0x07, 0x96, 0xf7, - 0x0d, 0x37, 0xa3, 0x65, 0xb1, 0x1e, 0xea, 0x8f, 0x50, 0x2c, 0xf1, 0xab, 0x67, 0x44, 0xb4, 0x43, - 0xef, 0x1b, 0xea, 0xae, 0xa4, 0xd0, 0xe3, 0xaa, 0x14, 0x71, 0x5d, 0x33, 0xe3, 0x70, 0xf3, 0x7b, - 0xb1, 0x2a, 0x73, 0x3f, 0x85, 0x3d, 0x7c, 0x33, 0x77, 0x38, 0x7e, 0x5f, 0x83, 0x4b, 0x53, 0x68, - 0x3e, 0x87, 0x51, 0xf9, 0xeb, 0xee, 0x70, 0x17, 0x20, 0x21, 0x62, 0x4a, 0xd3, 0x03, 0xaf, 0x27, - 0x9e, 0x5e, 0x2c, 0x71, 0xa5, 0xe9, 0x90, 0x01, 0x54, 0xa5, 0x09, 0x31, 0x98, 0xc6, 0xb1, 0xe5, - 0x7a, 0x7b, 0xfb, 0xdc, 0xc7, 0x6d, 0x89, 0x4b, 0x96, 0x7d, 0x84, 0xa8, 0x1a, 0x07, 0xc7, 0x31, - 0xfe, 0xc3, 0x2c, 0x5c, 0xa0, 0xee, 0x9e, 0xc7, 0xce, 0x64, 0x3b, 0xa1, 0x37, 0xd8, 0x4b, 0x85, - 0x5b, 0x33, 0x32, 0x2b, 0x57, 0xa4, 0xd0, 0x62, 0x90, 0x78, 0x26, 0xbe, 0x0c, 0x65, 0xb6, 0xe7, - 0x2b, 0x8b, 0x17, 0xef, 0xf7, 0x06, 0x7e, 0xcf, 0x15, 0x69, 0x27, 0x64, 0x31, 0x59, 0x17, 0x2a, - 0xa2, 0x92, 0xe4, 0x90, 0xa9, 0x88, 0x7f, 0xf9, 0xd9, 0x55, 0xb0, 0x8e, 0xc2, 0xc8, 0x45, 0xf3, - 0x80, 0x50, 0x13, 0xe3, 0x73, 0x5c, 0x69, 0xc2, 0x39, 0x6e, 0x1b, 0xd6, 0xcc, 0x1e, 0xdf, 0x5b, - 0x9d, 0x7e, 0x3b, 0xf0, 0x06, 0x5d, 0x6f, 0xe8, 0xf4, 0xa5, 0x6d, 0x02, 0x7b, 0xd9, 0x89, 0xcb, - 0xed, 0x61, 0x8c, 0x40, 0x73, 0xc9, 0x58, 0x33, 0xaa, 0x4d, 0x0b, 0x63, 0x79, 0x89, 0xab, 0x5b, - 0x6c, 0x46, 0x6f, 0x10, 0x62, 0x2b, 0x42, 0x1a, 0x17, 0xe3, 0x09, 0x12, 0x2f, 0xea, 0x3b, 0x0d, - 0xeb, 0x9e, 0x48, 0xc3, 0x2a, 0x73, 0x30, 0x71, 0xc7, 0x8c, 0xa8, 0x1f, 0xa2, 0x3f, 0x69, 0x0a, - 0x2f, 0xa1, 0xb3, 0xac, 0x2d, 0x46, 0x57, 0x1e, 0xa3, 0x0b, 0xc3, 0x7d, 0x95, 0x8e, 0xe3, 0x91, - 0xd7, 0xd9, 0x54, 0x38, 0xf0, 0x23, 0x17, 0xa7, 0xf0, 0x7c, 0x72, 0xde, 0x0c, 0x10, 0xca, 0xcf, - 0x9b, 0x0a, 0x0a, 0x79, 0x0f, 0x4e, 0xd7, 0x2a, 0xb7, 0xa4, 0xc1, 0xbd, 0xea, 0x77, 0x47, 0xe8, - 0x48, 0x01, 0xf8, 0x3d, 0x1c, 0x43, 0xb7, 0x7b, 0x8b, 0x49, 0x93, 0x3c, 0x34, 0x72, 0x03, 0xe6, - 0xea, 0x55, 0x55, 0x11, 0x14, 0x89, 0x46, 0x85, 0x77, 0x98, 0x2c, 0x24, 0xad, 0xe4, 0x40, 0xb4, - 0x78, 0xec, 0xc9, 0xe5, 0xc2, 0x09, 0x0e, 0x43, 0xb7, 0xb3, 0x8a, 0xac, 0x92, 0xf5, 0x23, 0xa3, - 0xc8, 0x66, 0xd5, 0xd7, 0x77, 0x91, 0xf4, 0x8e, 0x3b, 0x70, 0x83, 0x24, 0xdb, 0xc7, 0x0c, 0xef, - 0x5b, 0x46, 0xba, 0x17, 0x97, 0xd0, 0x34, 0x22, 0xa1, 0x70, 0xa6, 0x1d, 0xb8, 0x9f, 0x7a, 0xfe, - 0x28, 0x4c, 0x7f, 0x7c, 0x25, 0x51, 0xf6, 0x87, 0x02, 0xc1, 0xce, 0xd6, 0x22, 0x9f, 0x54, 0x24, - 0x56, 0xe5, 0x31, 0x70, 0x2b, 0x7e, 0xcf, 0x0d, 0xb9, 0x04, 0xfa, 0x5b, 0x94, 0x58, 0x55, 0x69, - 0xdb, 0x14, 0xa9, 0xfc, 0x6d, 0x4c, 0xac, 0x3a, 0x86, 0x4b, 0xde, 0x85, 0x19, 0xfc, 0x29, 0xf4, - 0xed, 0xd3, 0x39, 0x6c, 0x13, 0x5d, 0xbb, 0xcb, 0x30, 0x29, 0x27, 0x20, 0x75, 0x98, 0x13, 0x07, - 0xd5, 0xa7, 0x49, 0x0f, 0x28, 0x4e, 0xbc, 0x7c, 0xb6, 0x09, 0x7a, 0xa3, 0x07, 0x8b, 0xea, 0x07, - 0xd9, 0x2a, 0xdb, 0x72, 0xc2, 0x7d, 0xb7, 0xc7, 0x7e, 0x89, 0xcc, 0xbe, 0xb8, 0xca, 0xf6, 0x11, - 0x6a, 0xb3, 0x7a, 0x50, 0x05, 0x85, 0xed, 0xd3, 0xf5, 0x70, 0x27, 0x14, 0x55, 0x11, 0xa6, 0x2b, - 0x0f, 0xcd, 0xa0, 0x3d, 0x2a, 0x8a, 0x8c, 0xaf, 0xc1, 0x5a, 0x73, 0xd4, 0xef, 0x3b, 0x8f, 0xfa, - 0xae, 0xcc, 0xfc, 0x16, 0x39, 0x91, 0x4b, 0x36, 0x60, 0x06, 0xff, 0xc1, 0x0f, 0x2d, 0x27, 0xd9, - 0xb7, 0x15, 0x1c, 0xf4, 0x0e, 0xd6, 0x30, 0x56, 0x1b, 0xfb, 0x99, 0x8a, 0xd5, 0xc6, 0x00, 0xc6, - 0xef, 0x68, 0xb0, 0x26, 0xdd, 0x2f, 0x02, 0xa7, 0xfb, 0xd8, 0x0d, 0x84, 0xc2, 0x75, 0x23, 0x35, - 0xd7, 0x70, 0x11, 0x64, 0xa6, 0x11, 0x9f, 0x75, 0x77, 0x65, 0x25, 0xd2, 0x4a, 0x50, 0x5e, 0x85, - 0x8f, 0xab, 0x0c, 0x79, 0x0f, 0x16, 0xc4, 0x96, 0xab, 0x04, 0xe1, 0xc6, 0x50, 0x91, 0xe2, 0xa0, - 0x9d, 0x75, 0x06, 0x52, 0xd1, 0x51, 0xbf, 0x4b, 0x37, 0xe5, 0x59, 0xf5, 0x8a, 0x7c, 0xfd, 0x2e, - 0xfd, 0x8d, 0x29, 0x53, 0xf7, 0xdf, 0x2c, 0x64, 0xfb, 0x56, 0xcc, 0xdd, 0xb7, 0xd5, 0xe8, 0xa8, - 0x5a, 0x72, 0x50, 0x4e, 0xa2, 0xa3, 0xaa, 0x07, 0xe5, 0x18, 0x35, 0x1e, 0x93, 0xc2, 0x31, 0x63, - 0xf2, 0x81, 0x1c, 0x93, 0xe2, 0xe4, 0x89, 0x71, 0x7a, 0xca, 0x38, 0x58, 0xc9, 0x0a, 0x29, 0x9d, - 0xc8, 0x4c, 0x75, 0x0a, 0xb3, 0x15, 0x71, 0x92, 0xac, 0x64, 0x16, 0x9c, 0x54, 0xdb, 0xd7, 0xcc, - 0xc9, 0x99, 0x1e, 0x23, 0xee, 0xbf, 0x04, 0x8b, 0x66, 0x14, 0x39, 0xdd, 0x7d, 0xb7, 0x57, 0x65, - 0xe2, 0x49, 0x09, 0x7f, 0xe8, 0x08, 0xb8, 0x7a, 0x67, 0xa9, 0xe2, 0xf2, 0x88, 0xf7, 0x4e, 0x28, - 0x9c, 0x8a, 0xe3, 0x88, 0xf7, 0x0c, 0x92, 0x8e, 0x78, 0xcf, 0x20, 0xe4, 0x75, 0x98, 0xab, 0x0f, - 0x3e, 0xf5, 0x58, 0x9f, 0xf0, 0x08, 0x88, 0x68, 0xeb, 0xf3, 0x38, 0x48, 0x15, 0xae, 0x02, 0x8b, - 0xdc, 0x56, 0x8e, 0x59, 0xf3, 0x89, 0x35, 0x45, 0x86, 0x51, 0x16, 0x45, 0xea, 0x11, 0x2a, 0x3e, - 0x77, 0xbd, 0x0d, 0x73, 0xd2, 0x32, 0x0c, 0xc9, 0x0e, 0x22, 0x28, 0xc7, 0xe3, 0xce, 0x48, 0x64, - 0xb6, 0x7e, 0xd4, 0x0c, 0xc5, 0x0b, 0xc9, 0xfa, 0x51, 0x33, 0x14, 0xab, 0xeb, 0x47, 0xcd, 0x55, - 0x1c, 0x1b, 0xd5, 0x16, 0x8f, 0x35, 0xaa, 0xdd, 0x87, 0xc5, 0xb6, 0x13, 0x44, 0x1e, 0xd3, 0x7b, - 0x06, 0x51, 0x78, 0x7e, 0x29, 0x65, 0x87, 0x56, 0x8a, 0x36, 0xae, 0x88, 0x81, 0x3c, 0x3b, 0x54, - 0xf0, 0x53, 0x31, 0x73, 0x14, 0x78, 0xbe, 0x4b, 0xf1, 0xf2, 0xb3, 0xb8, 0x14, 0x63, 0xa7, 0xa2, - 0xed, 0x71, 0x25, 0xb1, 0x85, 0xe1, 0x41, 0x28, 0x63, 0x80, 0x8c, 0x11, 0xc9, 0x0f, 0xc0, 0x22, - 0xfb, 0xbf, 0xed, 0xf7, 0xbd, 0xae, 0xe7, 0x86, 0xe7, 0x75, 0x6c, 0xdc, 0x95, 0xdc, 0xd5, 0x8f, - 0x48, 0x47, 0x96, 0x1b, 0xf1, 0x05, 0x8c, 0x8c, 0xb3, 0x97, 0x0a, 0x29, 0x6e, 0xe4, 0x43, 0x58, - 0x64, 0xb3, 0xef, 0x91, 0x13, 0x72, 0x75, 0x77, 0x35, 0x71, 0x0a, 0xef, 0x09, 0xf8, 0x58, 0xd2, - 0x09, 0x95, 0x80, 0x6d, 0xf3, 0xe6, 0x90, 0x0b, 0x48, 0xa2, 0xcc, 0xf6, 0xe1, 0x98, 0x70, 0x94, - 0x68, 0xe4, 0x2b, 0xb0, 0x68, 0x0e, 0x87, 0x89, 0xc4, 0x39, 0xad, 0x98, 0x20, 0x87, 0x43, 0x3b, - 0x57, 0xea, 0xa4, 0x28, 0xb2, 0x82, 0x79, 0xed, 0xa9, 0x04, 0x33, 0x79, 0x35, 0x3e, 0x01, 0x9c, - 0x49, 0xac, 0xe4, 0xe2, 0x30, 0x9a, 0x3a, 0x4e, 0xf0, 0xc3, 0x40, 0x05, 0x96, 0xb8, 0x41, 0x4f, - 0x6a, 0x33, 0x67, 0xc7, 0x56, 0x4f, 0x8e, 0x52, 0x93, 0xa6, 0xe1, 0x8f, 0xec, 0xbd, 0xc8, 0x73, - 0xfa, 0x22, 0x1b, 0xc8, 0xf9, 0x73, 0xb8, 0x6a, 0xc5, 0x23, 0x7b, 0x2c, 0xc1, 0x94, 0x73, 0x4e, - 0x8a, 0x4b, 0x86, 0xc8, 0xf8, 0x53, 0x0d, 0xce, 0x4d, 0x18, 0xf1, 0x38, 0x57, 0x84, 0x36, 0x3d, - 0x57, 0x04, 0x93, 0x1c, 0x69, 0x3b, 0x0d, 0xb6, 0x7f, 0xfc, 0x4d, 0x5e, 0xac, 0x6f, 0xf9, 0x40, - 0x44, 0x56, 0x47, 0xf1, 0xe9, 0xbb, 0x3e, 0x9a, 0xba, 0x8b, 0xe3, 0x9b, 0x90, 0xc0, 0xe3, 0x95, - 0xe2, 0x81, 0x90, 0x45, 0xd2, 0xc8, 0x78, 0x58, 0x3f, 0xf6, 0x53, 0x2b, 0x38, 0x87, 0xb5, 0xf1, - 0x33, 0x05, 0x58, 0x50, 0xd6, 0x21, 0xb9, 0xa6, 0xbc, 0xf8, 0xd6, 0x79, 0xda, 0x51, 0x85, 0x43, - 0x81, 0xef, 0x44, 0xb8, 0xa8, 0x0a, 0xc7, 0x1b, 0xf4, 0x31, 0xc8, 0x9d, 0x92, 0x4f, 0x23, 0x13, - 0xd5, 0x0e, 0xcb, 0xc9, 0xd7, 0x01, 0x1a, 0x4e, 0x18, 0x99, 0xdd, 0xc8, 0xfb, 0xd4, 0x3d, 0xc1, - 0xa6, 0x23, 0x03, 0xc1, 0x9e, 0xc1, 0x44, 0x57, 0x0e, 0x92, 0x65, 0xf6, 0x08, 0x85, 0x21, 0x1b, - 0x02, 0x35, 0x20, 0xbf, 0x18, 0x82, 0x71, 0x11, 0x22, 0xb1, 0x8c, 0x1f, 0xd7, 0x00, 0x76, 0xea, - 0x15, 0xcc, 0xa0, 0xf3, 0xac, 0x5a, 0x44, 0x7e, 0xf0, 0x78, 0xc9, 0x7d, 0x8a, 0xfe, 0xf0, 0x07, - 0x1a, 0x2c, 0xa7, 0xd1, 0xc8, 0x07, 0xb0, 0x62, 0x75, 0x03, 0xbf, 0xdf, 0x7f, 0xe4, 0x74, 0x1f, - 0x37, 0xbc, 0x81, 0xcb, 0x03, 0x6a, 0xcf, 0xf0, 0xcd, 0x2b, 0x8c, 0x8b, 0xec, 0x3e, 0x2b, 0xa3, - 0x59, 0x64, 0xf2, 0x4d, 0x0d, 0x96, 0xac, 0x7d, 0xff, 0x30, 0x8e, 0x4f, 0x2d, 0x46, 0xf0, 0xeb, - 0x4c, 0x18, 0x84, 0xfb, 0xfe, 0x61, 0x92, 0xe4, 0x3c, 0xe5, 0xac, 0xfb, 0xfe, 0xc9, 0xfc, 0x28, - 0xba, 0x3e, 0x1e, 0x60, 0xa2, 0xf0, 0xb5, 0xd4, 0x47, 0x68, 0xfa, 0x9b, 0xc6, 0x5f, 0x69, 0xb0, - 0x80, 0x47, 0x9d, 0x7e, 0x1f, 0x95, 0xb4, 0xbf, 0x4d, 0x19, 0xb3, 0xe3, 0x76, 0x4d, 0x19, 0xd8, - 0xb7, 0x60, 0x25, 0x83, 0x46, 0x0c, 0x98, 0xb5, 0x30, 0xfa, 0x83, 0x6a, 0x25, 0xe1, 0xf1, 0x20, - 0xa8, 0x28, 0x31, 0x6a, 0x0a, 0xd9, 0xfd, 0x9b, 0x78, 0xaf, 0x7e, 0x0b, 0xc0, 0x93, 0x20, 0x79, - 0x14, 0x22, 0xd9, 0x9a, 0xdc, 0xbf, 0x49, 0x15, 0x2c, 0xa3, 0x09, 0xb3, 0x96, 0x1f, 0x44, 0x1b, - 0x47, 0xfc, 0xf4, 0x51, 0x75, 0xc3, 0xae, 0x7a, 0x71, 0xee, 0xe1, 0xb5, 0x56, 0x97, 0x8a, 0x22, - 0x72, 0x15, 0x66, 0x36, 0x3d, 0xb7, 0xdf, 0x53, 0x1d, 0xaa, 0x77, 0x19, 0x80, 0x72, 0x38, 0x3b, - 0xa1, 0x9d, 0x4d, 0xd2, 0xd6, 0x25, 0x9e, 0xdb, 0xcf, 0xba, 0x6e, 0x2a, 0xa9, 0xfe, 0xbd, 0x1e, - 0x27, 0x77, 0x1a, 0xff, 0xd2, 0x94, 0xae, 0xfe, 0x17, 0x1a, 0x5c, 0x9c, 0x4c, 0xa2, 0x3a, 0x83, - 0x6b, 0x53, 0x9c, 0xc1, 0x5f, 0xcc, 0x5e, 0xf4, 0x22, 0x9a, 0xb8, 0xe8, 0x4d, 0xae, 0x77, 0xab, - 0xe8, 0x8b, 0xdf, 0x75, 0x65, 0xae, 0xba, 0x6b, 0x53, 0xea, 0x8c, 0x88, 0x7c, 0x98, 0x23, 0xa4, - 0xa1, 0x82, 0xd6, 0xf8, 0xd7, 0x25, 0xb8, 0x30, 0x91, 0x82, 0x6c, 0x29, 0x19, 0x30, 0x97, 0xe3, - 0xdc, 0x7b, 0x13, 0xf1, 0x5f, 0xc3, 0xbf, 0xe8, 0x6e, 0x99, 0x7d, 0xf6, 0xd7, 0x8a, 0x33, 0x1f, - 0x16, 0x90, 0xd7, 0x2b, 0xc7, 0xf2, 0xe2, 0xe8, 0xc8, 0x0c, 0xc6, 0x93, 0x20, 0xe2, 0x0b, 0x53, - 0x37, 0x72, 0xbc, 0x7e, 0xa8, 0x2e, 0xbb, 0x1e, 0x07, 0x51, 0x59, 0x96, 0x78, 0xe8, 0x97, 0xf2, - 0x3d, 0xf4, 0x8d, 0xff, 0xad, 0xc1, 0x7c, 0x5c, 0x6d, 0x72, 0x11, 0xce, 0x76, 0xa8, 0x59, 0xa9, - 0xd9, 0x9d, 0x87, 0xed, 0x9a, 0xbd, 0xd3, 0xb4, 0xda, 0xb5, 0x4a, 0x7d, 0xb3, 0x5e, 0xab, 0xea, - 0xa7, 0xc8, 0x2a, 0x2c, 0xed, 0x34, 0xef, 0x35, 0x5b, 0x0f, 0x9a, 0x76, 0x8d, 0xd2, 0x16, 0xd5, - 0x35, 0xb2, 0x04, 0xf3, 0x74, 0xc3, 0xac, 0xd8, 0xcd, 0x56, 0xb5, 0xa6, 0x17, 0x88, 0x0e, 0x8b, - 0x95, 0x56, 0xb3, 0x59, 0xab, 0x74, 0xea, 0xf7, 0xeb, 0x9d, 0x87, 0x7a, 0x91, 0x10, 0x58, 0x46, - 0x84, 0x36, 0xad, 0x37, 0x2b, 0xf5, 0xb6, 0xd9, 0xd0, 0x4b, 0x0c, 0xc6, 0xf0, 0x15, 0xd8, 0x4c, - 0xcc, 0xe8, 0xde, 0xce, 0x46, 0x4d, 0x9f, 0x65, 0x28, 0xec, 0x3f, 0x05, 0x65, 0x8e, 0x7d, 0x1e, - 0x51, 0xaa, 0x66, 0xc7, 0xdc, 0x30, 0xad, 0x9a, 0x5e, 0x26, 0xe7, 0xe0, 0x74, 0x0a, 0x64, 0x37, - 0x5a, 0x77, 0xea, 0x4d, 0x7d, 0x9e, 0xac, 0x81, 0x1e, 0xc3, 0xaa, 0x1b, 0xf6, 0x8e, 0x55, 0xa3, - 0x3a, 0x64, 0xa1, 0x4d, 0x73, 0xbb, 0xa6, 0x2f, 0x18, 0xef, 0xf3, 0x07, 0x99, 0xbc, 0xab, 0xc9, - 0x59, 0x20, 0x56, 0xc7, 0xec, 0xec, 0x58, 0x99, 0xc6, 0x2f, 0xc0, 0x9c, 0xb5, 0x53, 0xa9, 0xd4, - 0x2c, 0x4b, 0xd7, 0x08, 0xc0, 0xec, 0xa6, 0x59, 0x6f, 0xd4, 0xaa, 0x7a, 0xc1, 0xf8, 0x59, 0x0d, - 0x56, 0xa5, 0xca, 0x28, 0xef, 0xbd, 0x9e, 0x71, 0x2d, 0x7e, 0x90, 0x3a, 0x09, 0xcb, 0xd7, 0x75, - 0x99, 0x8f, 0x4c, 0x59, 0x86, 0xbf, 0xa4, 0xc1, 0x99, 0x5c, 0x6c, 0xf2, 0x10, 0x74, 0x59, 0x83, - 0xf8, 0xa5, 0xac, 0x96, 0xd2, 0xb8, 0x25, 0x5d, 0x06, 0x8d, 0xdb, 0x56, 0xe3, 0xed, 0x8a, 0x8e, - 0xb1, 0x39, 0x79, 0x7a, 0x20, 0xe3, 0x5b, 0x1a, 0x9c, 0x9b, 0xf0, 0x19, 0x52, 0x81, 0xd9, 0x38, - 0xdb, 0xdf, 0x14, 0x8f, 0xc3, 0xb5, 0x3f, 0xfc, 0xec, 0xaa, 0x40, 0x64, 0x4b, 0x83, 0xe7, 0xf3, - 0xa3, 0xb3, 0x71, 0xfa, 0x3e, 0xcc, 0xa1, 0xc7, 0xbb, 0xef, 0x42, 0xa6, 0xe7, 0xc5, 0x97, 0xcc, - 0x07, 0xd6, 0xc6, 0x82, 0xe8, 0xbb, 0xa2, 0x73, 0x18, 0x62, 0x12, 0x3d, 0xe3, 0x17, 0x35, 0xa6, - 0x0d, 0x66, 0x11, 0x99, 0x92, 0x9c, 0xa4, 0xcb, 0x32, 0x69, 0x53, 0x6c, 0x1b, 0xa8, 0xde, 0xf2, - 0x14, 0x5b, 0x78, 0x0e, 0xb1, 0x9d, 0x20, 0x15, 0xf6, 0x21, 0x45, 0x43, 0x6e, 0x03, 0xd4, 0x9e, - 0x44, 0x6e, 0x30, 0x70, 0xfa, 0x71, 0x00, 0x1f, 0x1e, 0xa8, 0x4e, 0x40, 0xd3, 0x0a, 0xba, 0x82, - 0x6c, 0xfc, 0x84, 0x06, 0x8b, 0x32, 0x77, 0x58, 0xdf, 0x0d, 0xa2, 0x67, 0x9b, 0x5e, 0xb7, 0x53, - 0xd3, 0x2b, 0x7e, 0x60, 0xa3, 0xf0, 0x67, 0xc5, 0xb9, 0x33, 0xeb, 0xdf, 0x6a, 0xa0, 0x67, 0x11, - 0xc9, 0x07, 0x50, 0xb6, 0xdc, 0x4f, 0xdd, 0xc0, 0x8b, 0x8e, 0x84, 0xa0, 0x94, 0x59, 0x96, 0x39, - 0x8e, 0x28, 0xe3, 0xf3, 0x21, 0x14, 0xbf, 0x68, 0x4c, 0x73, 0x52, 0x79, 0xaf, 0xd8, 0x49, 0x8a, - 0x9f, 0x97, 0x9d, 0xc4, 0xf8, 0xe3, 0x02, 0x9c, 0xbb, 0xe3, 0x46, 0x6a, 0x9b, 0x62, 0x4f, 0x90, - 0x37, 0x4e, 0xd6, 0x2e, 0xa5, 0x25, 0xe7, 0x61, 0x0e, 0x8b, 0xe4, 0xf8, 0x52, 0xf9, 0x93, 0x6c, - 0xc4, 0xf3, 0xba, 0x98, 0x4a, 0xe3, 0x3a, 0xe1, 0xdb, 0xaf, 0x29, 0xa9, 0x18, 0xe3, 0x69, 0x7d, - 0x03, 0x96, 0x31, 0x59, 0xcb, 0x88, 0x2d, 0x07, 0xb7, 0x27, 0xec, 0x45, 0x65, 0x9a, 0x81, 0x92, - 0x75, 0xd0, 0x19, 0xc4, 0xec, 0x3e, 0x1e, 0xf8, 0x87, 0x7d, 0xb7, 0xb7, 0xe7, 0xf6, 0x70, 0x5b, - 0x2f, 0xd3, 0x31, 0xb8, 0xe4, 0xb9, 0x33, 0xe0, 0x67, 0x3d, 0xb7, 0x87, 0x46, 0x1d, 0xc1, 0x33, - 0x81, 0x5e, 0xbc, 0x0d, 0x0b, 0xdf, 0x65, 0x92, 0x56, 0xe3, 0x3f, 0x6b, 0xb0, 0x86, 0x8d, 0x53, - 0x3e, 0x2c, 0x13, 0xe8, 0xcb, 0xde, 0x52, 0x32, 0x0d, 0x3a, 0x0c, 0x94, 0x5e, 0x0a, 0x71, 0x2f, - 0x26, 0x46, 0xa4, 0xc2, 0x09, 0x8c, 0x48, 0x8a, 0x0d, 0xac, 0xf4, 0x79, 0xd9, 0xc0, 0xee, 0x96, - 0xca, 0x45, 0xbd, 0x94, 0x0c, 0xb9, 0xf1, 0xcd, 0x02, 0xcc, 0x51, 0xb7, 0xef, 0x3a, 0xa1, 0x4b, - 0x6e, 0xc0, 0x5c, 0xd3, 0x8f, 0xdc, 0x70, 0xbb, 0xaa, 0x7a, 0x59, 0x0f, 0x18, 0xc8, 0x3e, 0xe8, - 0x51, 0x59, 0xc8, 0x26, 0x7c, 0x3b, 0xf0, 0x7b, 0xa3, 0x6e, 0xa4, 0x4e, 0xf8, 0x21, 0x07, 0x51, - 0x59, 0x46, 0xbe, 0x00, 0xf3, 0x82, 0x73, 0x7c, 0xb3, 0x8c, 0xce, 0xe3, 0x01, 0x07, 0x62, 0x5a, - 0xa7, 0x18, 0x01, 0x75, 0x5a, 0xae, 0x60, 0x94, 0x14, 0x9d, 0x76, 0x4c, 0x67, 0x90, 0xaa, 0xfa, - 0xcc, 0x14, 0x55, 0xfd, 0x0d, 0x98, 0x35, 0xc3, 0xd0, 0x8d, 0x64, 0x3c, 0x8a, 0xc5, 0x24, 0x65, - 0xa0, 0x1b, 0x71, 0xc6, 0x0e, 0x96, 0x53, 0x81, 0x67, 0xfc, 0x45, 0x01, 0x66, 0xf0, 0x5f, 0xbc, - 0xb7, 0x0d, 0xba, 0xfb, 0xa9, 0x7b, 0xdb, 0xa0, 0xbb, 0x4f, 0x11, 0x4a, 0x6e, 0xa2, 0x69, 0x43, - 0x26, 0xc5, 0x14, 0xad, 0x47, 0x9b, 0x7d, 0x2f, 0x01, 0x53, 0x15, 0x27, 0x76, 0x33, 0x28, 0xe6, - 0x46, 0xa1, 0x39, 0x0b, 0x85, 0x96, 0x25, 0x5a, 0x8c, 0xe1, 0xd2, 0xfc, 0x90, 0x16, 0x5a, 0x16, - 0xf6, 0xc6, 0x96, 0x79, 0xeb, 0xad, 0xb7, 0x45, 0x43, 0x79, 0x6f, 0xec, 0x3b, 0xb7, 0xde, 0x7a, - 0x9b, 0x8a, 0x12, 0xd6, 0xbf, 0x58, 0x67, 0xbc, 0xfd, 0xe5, 0xc1, 0x12, 0xb0, 0x7f, 0xb1, 0x6d, - 0x78, 0xd3, 0x4b, 0x13, 0x04, 0x72, 0x0b, 0x16, 0x44, 0xd4, 0x0e, 0xc4, 0x57, 0xa2, 0x6a, 0x88, - 0xa8, 0x1e, 0x9c, 0x42, 0x45, 0xe2, 0xf7, 0x80, 0x62, 0x80, 0x44, 0x0a, 0x38, 0x79, 0x0f, 0x28, - 0x87, 0x30, 0xa4, 0x0a, 0x0a, 0xab, 0x12, 0xbf, 0x48, 0x4c, 0x82, 0x20, 0x60, 0x95, 0xc4, 0x6d, - 0x23, 0x26, 0xc6, 0x89, 0x11, 0x8c, 0x5f, 0x2b, 0x40, 0xb9, 0xdd, 0x1f, 0xed, 0x79, 0x83, 0xfb, - 0x37, 0x09, 0x01, 0x3c, 0xc6, 0xc9, 0xcc, 0x49, 0xec, 0x7f, 0x72, 0x01, 0xca, 0xf2, 0xe4, 0x26, - 0x05, 0x52, 0x28, 0x4e, 0x6d, 0xe7, 0x41, 0x8e, 0xbb, 0x88, 0x8b, 0x27, 0x7f, 0x92, 0x9b, 0x10, - 0x9f, 0xbf, 0x26, 0x1d, 0xd4, 0x4a, 0x6c, 0xb1, 0xd0, 0x18, 0x8d, 0xbc, 0x0a, 0xb8, 0x49, 0x88, - 0xc3, 0x83, 0xb4, 0x80, 0xf3, 0xaa, 0x09, 0x3d, 0x85, 0x93, 0x20, 0x1a, 0x79, 0x33, 0x93, 0xe4, - 0xf0, 0x4c, 0x9a, 0x80, 0xa7, 0xc1, 0x93, 0x24, 0x32, 0xc1, 0xe1, 0x7b, 0xe9, 0x50, 0x89, 0x73, - 0xa9, 0xfb, 0x2d, 0x4e, 0xa9, 0xc4, 0x2a, 0xbc, 0x7f, 0x33, 0x1d, 0x25, 0xf1, 0x77, 0xe7, 0x61, - 0x51, 0xad, 0x0f, 0xa1, 0x70, 0x3a, 0xec, 0xb3, 0xb3, 0xbb, 0xf0, 0x0b, 0x1c, 0x62, 0xa1, 0xd8, - 0x4e, 0xaf, 0xa5, 0x2b, 0xc4, 0xf0, 0xb8, 0x93, 0xa0, 0x0c, 0x37, 0xb2, 0x75, 0x8a, 0xae, 0x86, - 0x09, 0x98, 0xe3, 0x11, 0x13, 0xca, 0xfe, 0x30, 0xdc, 0x73, 0x07, 0x9e, 0xbc, 0xa0, 0x79, 0x3e, - 0xc5, 0xa8, 0x25, 0x0a, 0xc7, 0x78, 0xc5, 0x64, 0xe4, 0x2d, 0x98, 0xf5, 0x87, 0xee, 0xc0, 0xf1, - 0xc4, 0x1e, 0x77, 0x29, 0xc3, 0xc0, 0x1d, 0x98, 0x75, 0x85, 0x50, 0x20, 0x93, 0xd7, 0xa1, 0xe4, - 0x3f, 0x8e, 0xc7, 0xeb, 0x42, 0x9a, 0xe8, 0x71, 0xe4, 0x28, 0x24, 0x88, 0xc8, 0x08, 0x3e, 0x76, - 0x0e, 0x76, 0xc5, 0x88, 0xa5, 0x09, 0xee, 0x3a, 0x07, 0xbb, 0x2a, 0x01, 0x43, 0x24, 0x1f, 0x02, - 0x0c, 0x9d, 0x3d, 0x37, 0xb0, 0x7b, 0xa3, 0xe8, 0x28, 0x93, 0x05, 0x9a, 0x93, 0xb5, 0x59, 0x71, - 0x75, 0x14, 0x1d, 0x29, 0xb4, 0xf3, 0x43, 0x09, 0x24, 0x26, 0xc0, 0x81, 0x13, 0x45, 0x6e, 0x70, - 0xe0, 0x0b, 0xc7, 0xcc, 0x24, 0xd2, 0x25, 0x67, 0xb0, 0x1d, 0x17, 0x2b, 0x1c, 0x14, 0x22, 0xac, - 0xb4, 0x17, 0x38, 0x78, 0x0d, 0x3f, 0x56, 0x69, 0x2f, 0x48, 0xb5, 0x92, 0x21, 0x92, 0x77, 0x61, - 0x0e, 0x53, 0x9b, 0x06, 0x3d, 0x11, 0x87, 0xe6, 0x72, 0x8a, 0xa6, 0xca, 0xcb, 0x14, 0x32, 0x89, - 0xce, 0x6a, 0x2b, 0x62, 0x1a, 0x37, 0xfd, 0x43, 0xbc, 0x17, 0xc8, 0xd6, 0xd6, 0x8a, 0x8b, 0xd5, - 0xda, 0x26, 0x44, 0x6c, 0x28, 0xf7, 0xbc, 0xa8, 0xef, 0x3c, 0x12, 0x97, 0xed, 0xe9, 0xa1, 0xbc, - 0x83, 0x45, 0xea, 0x50, 0x72, 0x64, 0x72, 0x1b, 0xca, 0x32, 0xd2, 0xa8, 0x78, 0xd5, 0x9a, 0xae, - 0xb4, 0x88, 0x2f, 0xaa, 0x56, 0x5a, 0xc4, 0x16, 0x65, 0xfd, 0x13, 0x76, 0xbd, 0x03, 0xf1, 0x18, - 0x35, 0xdd, 0x3f, 0x56, 0xa5, 0xbe, 0xad, 0xf6, 0x0f, 0x43, 0x24, 0x1f, 0xc0, 0x1c, 0x5b, 0xbf, - 0x3d, 0x7f, 0x4f, 0x44, 0xf2, 0x30, 0xd2, 0xfd, 0xc3, 0xcb, 0xc6, 0xa6, 0xab, 0x24, 0x62, 0x0b, - 0xd9, 0x39, 0x0c, 0x6d, 0xaf, 0x8b, 0xa1, 0x6e, 0xb3, 0xcb, 0xd1, 0x7c, 0x60, 0xd5, 0x2b, 0x0a, - 0xd9, 0x8c, 0x73, 0x18, 0xd6, 0xbb, 0xe4, 0x16, 0xcc, 0x60, 0x52, 0x21, 0x11, 0xd7, 0x36, 0x4d, - 0x83, 0xe9, 0x84, 0x54, 0x1a, 0x44, 0x65, 0x03, 0x79, 0x10, 0xe2, 0xfb, 0x1e, 0x91, 0xda, 0x27, - 0xdd, 0x27, 0xdb, 0x16, 0x3e, 0xfa, 0x51, 0xab, 0x28, 0xd0, 0x59, 0x15, 0x07, 0x6e, 0x64, 0x7b, - 0x9f, 0x88, 0xe4, 0x3c, 0xe9, 0xcf, 0x35, 0xdd, 0xa8, 0xfe, 0x55, 0xf5, 0x73, 0x03, 0x37, 0xaa, - 0x7f, 0x22, 0x86, 0x6e, 0x7f, 0xf4, 0x08, 0x8d, 0xef, 0x39, 0x43, 0xb7, 0x3f, 0xca, 0x0e, 0xdd, - 0xfe, 0xe8, 0x11, 0x23, 0xf3, 0x06, 0xd1, 0x68, 0xe0, 0x8a, 0xd7, 0xa5, 0x69, 0xb2, 0x3a, 0x16, - 0xa9, 0x64, 0x1c, 0x99, 0x5c, 0x01, 0x48, 0xbc, 0x1d, 0xf8, 0x3d, 0x12, 0x55, 0x20, 0x5f, 0x2a, - 0xfd, 0xd7, 0x5f, 0xbe, 0xaa, 0x6d, 0x00, 0x94, 0x65, 0x38, 0x24, 0xa6, 0x86, 0xaf, 0xe5, 0xd5, - 0x85, 0x5c, 0x87, 0x45, 0x35, 0x58, 0x93, 0xd8, 0x0c, 0x16, 0x9c, 0xa1, 0x27, 0xc3, 0x35, 0x4d, - 0x4f, 0xdb, 0xf2, 0x0a, 0xac, 0xa6, 0x1e, 0x61, 0x25, 0x6e, 0x8b, 0x54, 0x57, 0x0b, 0x70, 0xef, - 0xad, 0x00, 0x84, 0x91, 0x13, 0x44, 0x76, 0xcf, 0x89, 0x4e, 0x62, 0x46, 0x2e, 0x33, 0x79, 0xce, - 0x7d, 0xde, 0x91, 0xae, 0xea, 0x44, 0x2e, 0x6f, 0x9c, 0xd1, 0x80, 0x0b, 0x13, 0x65, 0x2d, 0x79, - 0x19, 0xf4, 0x5d, 0x47, 0x58, 0x5a, 0xbb, 0xfb, 0xce, 0x60, 0xe0, 0xf6, 0x45, 0xc3, 0x56, 0x24, - 0xbc, 0xc2, 0xc1, 0x82, 0xdb, 0x87, 0x4a, 0xef, 0x28, 0x8b, 0xec, 0x04, 0xbd, 0x23, 0x18, 0xfc, - 0x96, 0x06, 0x97, 0xa7, 0x89, 0x6c, 0x72, 0x11, 0xca, 0xc3, 0xc0, 0xf3, 0xf1, 0x68, 0x20, 0xfa, - 0x50, 0xfe, 0xc6, 0xac, 0x36, 0xa8, 0xc3, 0x46, 0xce, 0x9e, 0x78, 0xd5, 0x44, 0xe7, 0x11, 0xd2, - 0x71, 0xf6, 0x42, 0xd6, 0xc5, 0x3d, 0x77, 0xd7, 0x19, 0xf5, 0x23, 0x3b, 0xec, 0xee, 0xbb, 0x3d, - 0x7c, 0x77, 0x88, 0xfe, 0x9e, 0x54, 0x17, 0x05, 0x96, 0x84, 0x8f, 0xd5, 0x78, 0x66, 0x42, 0x8d, - 0xef, 0x96, 0xca, 0x9a, 0x5e, 0xa0, 0xe8, 0x22, 0x67, 0xfc, 0x68, 0x01, 0xce, 0x4f, 0x92, 0x51, - 0xe4, 0xfd, 0xbc, 0x3e, 0xe0, 0xb7, 0x4b, 0x2a, 0x5c, 0xbd, 0x5d, 0x52, 0x67, 0xcf, 0x2d, 0x88, - 0x5f, 0x0d, 0x1e, 0x17, 0x01, 0x44, 0xc2, 0x18, 0xcd, 0xd0, 0x09, 0xc3, 0x43, 0x26, 0x86, 0x8b, - 0x4a, 0x4c, 0x72, 0x01, 0x53, 0x69, 0x24, 0x8c, 0xbc, 0x03, 0xd0, 0xed, 0xfb, 0xa1, 0x8b, 0x4e, - 0x1c, 0x42, 0xbf, 0xe3, 0x6f, 0x21, 0x62, 0xa8, 0x7a, 0x6b, 0x8f, 0xd0, 0x8a, 0xdf, 0x93, 0xf3, - 0xc9, 0x81, 0x73, 0x13, 0x36, 0x25, 0x36, 0x3c, 0xf8, 0x0c, 0x90, 0xcb, 0x20, 0x91, 0x11, 0x92, - 0x41, 0x78, 0x26, 0xb3, 0x6c, 0x8f, 0x17, 0x26, 0xcd, 0x91, 0x23, 0x20, 0xe3, 0x3b, 0x0f, 0xe3, - 0x2e, 0x7c, 0xff, 0x47, 0x41, 0xcc, 0x9d, 0x43, 0x76, 0x82, 0x3e, 0xb9, 0x0a, 0x0b, 0x32, 0x29, - 0x3a, 0x3b, 0x3f, 0x71, 0xe6, 0x20, 0x40, 0xf7, 0x5c, 0x9c, 0x3c, 0x18, 0x42, 0x98, 0x67, 0xa8, - 0xe2, 0x2b, 0x6f, 0x1e, 0x21, 0x9d, 0xa3, 0xa1, 0x6c, 0xdd, 0x65, 0x39, 0xbf, 0xd3, 0xfa, 0x80, - 0x28, 0xfd, 0x87, 0x9a, 0x1c, 0xfe, 0xf1, 0x0d, 0xf5, 0xb8, 0xfa, 0x11, 0xc0, 0xa7, 0x79, 0xa2, - 0x62, 0xf8, 0x3f, 0xd3, 0x14, 0xe5, 0xaa, 0x13, 0x9a, 0xa2, 0xf8, 0x49, 0x6e, 0xc0, 0x4a, 0xc0, - 0xdd, 0x9f, 0x23, 0x5f, 0xf4, 0x27, 0x4f, 0xe2, 0xb4, 0xc4, 0xc1, 0x1d, 0x1f, 0xfb, 0x54, 0xd4, - 0xeb, 0x6e, 0xdc, 0x61, 0x8a, 0x7e, 0x41, 0x5e, 0x83, 0x79, 0xa6, 0x5f, 0x60, 0x58, 0xa8, 0xcc, - 0x9b, 0x20, 0xc4, 0x43, 0x6d, 0x8d, 0x96, 0x3f, 0x16, 0xff, 0x0b, 0x5e, 0x3f, 0x1e, 0x0b, 0xc0, - 0xb4, 0x54, 0x25, 0x67, 0x61, 0x96, 0x27, 0xf3, 0x17, 0x6d, 0x13, 0xbf, 0xc8, 0x8b, 0xb0, 0xcc, - 0x1f, 0xf2, 0x66, 0x06, 0x76, 0x09, 0xa1, 0xf1, 0xf4, 0x3e, 0x59, 0x06, 0x30, 0x51, 0x89, 0xdf, - 0x28, 0xc8, 0x16, 0xa9, 0x2a, 0x16, 0x39, 0x07, 0x73, 0x7e, 0xb0, 0xa7, 0xf4, 0xef, 0xac, 0x1f, - 0xec, 0xb1, 0xce, 0x7d, 0x09, 0x74, 0xfe, 0x4e, 0x8e, 0xc7, 0x2b, 0x09, 0x8f, 0x06, 0x5d, 0xf1, - 0x56, 0x62, 0x99, 0xc3, 0x77, 0x42, 0x37, 0xb0, 0x8e, 0x06, 0x5d, 0x86, 0x19, 0x86, 0xbe, 0xad, - 0x86, 0x98, 0x13, 0x15, 0x59, 0x0e, 0x43, 0x3f, 0x89, 0x35, 0xd7, 0x23, 0x1b, 0xb0, 0xc4, 0xf8, - 0xc4, 0x91, 0xf2, 0x84, 0x18, 0x7e, 0x6e, 0x5c, 0x03, 0x3c, 0x1a, 0x74, 0x65, 0x15, 0xe9, 0x62, - 0xa8, 0xfc, 0x22, 0xf7, 0x40, 0x57, 0x54, 0x65, 0x7c, 0x38, 0x9d, 0x79, 0x0f, 0x90, 0xb0, 0x51, - 0x54, 0xec, 0xfa, 0x60, 0xd7, 0xa7, 0x2b, 0xdd, 0x34, 0x20, 0x16, 0x47, 0xb3, 0xfa, 0x1c, 0x3d, - 0x2f, 0x9a, 0x1b, 0xa2, 0xab, 0xa8, 0xdd, 0xf7, 0xf7, 0x6c, 0xf7, 0x09, 0x9b, 0x18, 0xc6, 0x3f, - 0xd1, 0xa4, 0xc0, 0xcf, 0x61, 0x4a, 0x0c, 0x58, 0xda, 0x77, 0x42, 0x3b, 0x0c, 0x0f, 0xb8, 0x07, - 0xa3, 0x08, 0x07, 0xbe, 0xb0, 0xef, 0x84, 0x56, 0x78, 0x20, 0x33, 0x53, 0x9d, 0x61, 0x38, 0x18, - 0xb2, 0xdc, 0x56, 0x0f, 0x06, 0xbc, 0x47, 0x4f, 0xef, 0x3b, 0x61, 0x8b, 0x95, 0xa9, 0xf1, 0xcb, - 0x5f, 0x80, 0x65, 0xe4, 0xdb, 0xf5, 0x24, 0x63, 0x8c, 0x49, 0x43, 0x17, 0x19, 0xe3, 0xae, 0xc7, - 0x39, 0x8b, 0xc1, 0xfd, 0xfd, 0x19, 0x38, 0x9b, 0xdf, 0x7b, 0xb8, 0x86, 0x58, 0x9f, 0xe3, 0xeb, - 0x59, 0x51, 0xb7, 0x79, 0x06, 0xe1, 0xf1, 0x84, 0xf2, 0x06, 0xaf, 0x90, 0x3b, 0x78, 0xeb, 0xb0, - 0x8a, 0x8c, 0xc4, 0x11, 0xa4, 0xef, 0x85, 0x91, 0x08, 0x93, 0x43, 0x57, 0x58, 0x01, 0xdf, 0x74, - 0x1a, 0x0c, 0xcc, 0x66, 0xa6, 0xdc, 0x36, 0xfc, 0xc3, 0x01, 0xfb, 0x30, 0xdf, 0x33, 0x96, 0x04, - 0xb4, 0x85, 0x40, 0x72, 0x06, 0x66, 0x9d, 0xe1, 0x90, 0x7d, 0x92, 0x6f, 0x15, 0x33, 0xce, 0x70, - 0xc8, 0x83, 0xb3, 0xf3, 0xc4, 0x77, 0xbb, 0xe8, 0x6f, 0x26, 0x5f, 0x02, 0x2c, 0x22, 0x90, 0xfb, - 0xa0, 0xe1, 0x5b, 0x02, 0x46, 0x2b, 0x51, 0xe6, 0x10, 0x05, 0x9c, 0x61, 0x8c, 0x70, 0x01, 0xca, - 0xd2, 0xf3, 0x81, 0x3f, 0x8e, 0xa2, 0x73, 0x8e, 0xf0, 0x7a, 0x78, 0x0b, 0xce, 0x89, 0x2c, 0x7b, - 0x36, 0x6f, 0xd2, 0x70, 0x28, 0x5e, 0x27, 0xf3, 0x50, 0xdc, 0x74, 0x4d, 0x14, 0xb3, 0x9e, 0x34, - 0x87, 0xc3, 0xf8, 0x8d, 0xf2, 0x45, 0x49, 0xf6, 0xc8, 0xe3, 0xc1, 0xfc, 0xb8, 0xf7, 0x2f, 0x2e, - 0x0e, 0x40, 0xca, 0xf3, 0x02, 0x63, 0x43, 0x45, 0x90, 0xcb, 0x24, 0x5e, 0x49, 0x36, 0x37, 0x7c, - 0x0a, 0xf5, 0x09, 0xef, 0xc7, 0x71, 0xd0, 0x10, 0x4a, 0xde, 0x81, 0x89, 0x73, 0x11, 0xb5, 0xf3, - 0x32, 0x3d, 0xc3, 0xcb, 0xb9, 0x57, 0x73, 0xc3, 0xdf, 0xab, 0x61, 0x21, 0xf9, 0x10, 0x2e, 0xcb, - 0x0a, 0x3a, 0x61, 0xe8, 0xed, 0x0d, 0x6c, 0x39, 0x0a, 0xe8, 0x78, 0x82, 0x1a, 0x7a, 0x99, 0x5e, - 0x10, 0x38, 0x26, 0xa2, 0x54, 0x39, 0x06, 0x7f, 0xdd, 0xfa, 0x06, 0xac, 0x45, 0xde, 0x81, 0x6b, - 0x3f, 0x72, 0xa3, 0x43, 0xd7, 0x1d, 0xd8, 0xde, 0x01, 0xe3, 0xcb, 0x03, 0xc6, 0xcc, 0x53, 0xc2, - 0xca, 0x36, 0x78, 0x51, 0x9d, 0x97, 0x90, 0x36, 0xbc, 0x98, 0xa2, 0xe0, 0xdf, 0x3d, 0x60, 0x1a, - 0xdb, 0x30, 0xf0, 0xf9, 0x4c, 0xf1, 0xfd, 0x21, 0xcf, 0x6c, 0x31, 0x4f, 0xaf, 0x2b, 0x2c, 0xcc, - 0x18, 0xb5, 0xcd, 0x31, 0x1b, 0x0c, 0x51, 0xcc, 0xe8, 0x77, 0x61, 0x45, 0x1c, 0x78, 0x84, 0xb6, - 0x84, 0x23, 0x2e, 0x64, 0x39, 0x3e, 0x0f, 0xe1, 0x69, 0x06, 0x41, 0x80, 0xea, 0x3d, 0x49, 0xf9, - 0x47, 0x1a, 0x9c, 0xc9, 0x3d, 0x31, 0x91, 0x1f, 0x02, 0xfe, 0xe4, 0x35, 0xf2, 0xed, 0xc0, 0xed, - 0x7a, 0x43, 0x0f, 0x63, 0x08, 0xf1, 0x1b, 0x85, 0x5b, 0xd3, 0xce, 0x5a, 0xf8, 0x7c, 0xb6, 0xe3, - 0xd3, 0x98, 0x88, 0x9b, 0x3a, 0xf5, 0x20, 0x03, 0xbe, 0xf8, 0x11, 0x9c, 0xc9, 0x45, 0xcd, 0x31, - 0x41, 0x7e, 0x41, 0x35, 0x41, 0x26, 0x77, 0xc4, 0x99, 0x46, 0x2b, 0xa6, 0x49, 0xd1, 0xbc, 0xdf, - 0x8e, 0x9b, 0x97, 0x39, 0x5b, 0x91, 0x5a, 0x56, 0xba, 0xe6, 0x99, 0x07, 0x24, 0xd1, 0x64, 0x01, - 0xfb, 0x11, 0x9c, 0x11, 0x4b, 0x9c, 0x6f, 0x2e, 0x31, 0x3b, 0x5e, 0xd1, 0xef, 0xcb, 0x63, 0xc7, - 0xd7, 0xfe, 0x1d, 0x86, 0x1f, 0x73, 0x3d, 0xed, 0x8c, 0x03, 0x45, 0x1b, 0x7e, 0xb9, 0x28, 0x05, - 0x6a, 0x4e, 0x75, 0x72, 0x84, 0x87, 0x96, 0x27, 0x3c, 0x4e, 0x2e, 0xb9, 0x9a, 0x40, 0xd4, 0x2d, - 0x43, 0xac, 0x3d, 0xee, 0x00, 0x79, 0x35, 0x9d, 0x08, 0x43, 0x11, 0xc0, 0x7c, 0x31, 0xd2, 0xd5, - 0x6e, 0x16, 0xc4, 0x0e, 0x25, 0x7c, 0xa3, 0x66, 0x9f, 0xe4, 0x3a, 0x44, 0x99, 0x03, 0xea, 0x3d, - 0x72, 0x0d, 0x16, 0xf9, 0x89, 0x38, 0x25, 0xd9, 0x00, 0x61, 0x26, 0x8a, 0xb7, 0xf7, 0xf2, 0xc4, - 0x5b, 0x72, 0xb5, 0x21, 0x94, 0xe1, 0xa3, 0x41, 0x97, 0x4b, 0xb2, 0x8c, 0xdc, 0xb3, 0xe1, 0x82, - 0x22, 0x81, 0x45, 0x0f, 0xc9, 0x36, 0xcd, 0x61, 0x9b, 0x5e, 0x48, 0xb7, 0x29, 0x11, 0xcc, 0xbc, - 0xe7, 0x44, 0xc3, 0xce, 0x3a, 0xb9, 0x70, 0x31, 0x44, 0x3f, 0x59, 0x00, 0x3d, 0x5b, 0x13, 0x62, - 0x40, 0x41, 0xe6, 0xd2, 0x18, 0x77, 0xfe, 0xd9, 0x3a, 0x45, 0x0b, 0x5e, 0x8f, 0xdc, 0x06, 0xc0, - 0xfc, 0xb9, 0x81, 0xbb, 0xe7, 0x3e, 0x11, 0x5a, 0x37, 0xea, 0xc2, 0x09, 0x34, 0x45, 0x33, 0x8f, - 0xf6, 0x51, 0x06, 0x26, 0x37, 0x01, 0xdc, 0x27, 0x3c, 0xc7, 0x89, 0x54, 0x21, 0x72, 0x3e, 0xa3, - 0xd1, 0x79, 0x81, 0x55, 0xef, 0x91, 0x2d, 0x20, 0x92, 0x44, 0xf9, 0x6a, 0xe9, 0x98, 0xaf, 0x6a, - 0x54, 0x17, 0x54, 0x4d, 0xf9, 0x71, 0x71, 0x6e, 0x9d, 0x87, 0x39, 0x91, 0x66, 0x85, 0xfd, 0x2b, - 0x90, 0x8c, 0x1f, 0xd3, 0xe0, 0xda, 0x71, 0xf3, 0x9d, 0x3c, 0x80, 0xb3, 0xe8, 0x32, 0x17, 0xfa, - 0xf1, 0x92, 0xb1, 0xbb, 0x4e, 0x77, 0xdf, 0x15, 0x12, 0xc6, 0xc8, 0x5d, 0x38, 0xc3, 0xa1, 0x65, - 0xb5, 0x94, 0x35, 0x33, 0x1c, 0x5a, 0xa1, 0x2f, 0x7f, 0x57, 0x18, 0xb9, 0x18, 0x90, 0x1e, 0x5c, - 0x9a, 0x42, 0xa9, 0x6c, 0xa5, 0x9a, 0xba, 0x95, 0xbe, 0x04, 0xfa, 0xae, 0xdb, 0x63, 0x67, 0x73, - 0xb7, 0x87, 0x55, 0xfb, 0xf4, 0x16, 0x8e, 0xc9, 0x22, 0x5d, 0x8e, 0xe1, 0x56, 0xe8, 0xdf, 0xbf, - 0x25, 0xbe, 0xf2, 0xeb, 0xb1, 0x96, 0xa8, 0x9a, 0x60, 0xc8, 0x2d, 0x38, 0x9d, 0x09, 0xa6, 0xa5, - 0x44, 0x67, 0x29, 0x9c, 0xd7, 0xe8, 0x2a, 0x2b, 0x4e, 0x87, 0x5f, 0x7c, 0x11, 0x16, 0xd5, 0xdd, - 0x47, 0x4c, 0x05, 0x86, 0xbc, 0xd0, 0x4b, 0xf6, 0x1c, 0xf2, 0x08, 0x96, 0x95, 0x25, 0xcc, 0xb4, - 0xb9, 0x62, 0x8e, 0x9c, 0x51, 0x6b, 0xf3, 0x5a, 0xb2, 0xb6, 0x07, 0xbb, 0x3e, 0xf7, 0x1c, 0x4b, - 0xb3, 0xa0, 0x4b, 0x5d, 0x15, 0xe5, 0xe2, 0x57, 0x95, 0x68, 0x92, 0xa8, 0xb3, 0x5d, 0x86, 0xd2, - 0x20, 0x37, 0x58, 0xfc, 0x80, 0xa7, 0xf0, 0x2f, 0x45, 0xb9, 0x21, 0x91, 0xa3, 0xf8, 0x54, 0x23, - 0xba, 0x6b, 0x24, 0x07, 0x25, 0xd7, 0xf8, 0x74, 0x12, 0x03, 0xc7, 0xab, 0x40, 0x62, 0x73, 0x41, - 0xbc, 0x29, 0x09, 0x39, 0xb6, 0x2a, 0x4b, 0xe2, 0xdd, 0x44, 0x7c, 0xf6, 0x5f, 0xcd, 0xc2, 0xe9, - 0x1c, 0xab, 0x15, 0x79, 0x15, 0x74, 0x6f, 0x10, 0xb9, 0x7b, 0x81, 0x62, 0x0f, 0x49, 0xc6, 0x68, - 0x45, 0x29, 0x13, 0xd7, 0x11, 0xb3, 0x81, 0xbb, 0x17, 0x5f, 0x6d, 0x50, 0xf1, 0x8b, 0x6d, 0x56, - 0x4e, 0x20, 0x2d, 0xed, 0xec, 0x5f, 0x52, 0x87, 0x55, 0x4c, 0x20, 0x14, 0x7a, 0x3e, 0xe6, 0xf6, - 0xc2, 0xf3, 0x4f, 0x29, 0x65, 0xdb, 0xc2, 0x9a, 0xb4, 0x15, 0x24, 0x76, 0x00, 0xa2, 0xfa, 0x30, - 0x03, 0x21, 0x5f, 0x86, 0x8b, 0xaa, 0xfc, 0xca, 0x48, 0x7a, 0x7c, 0x5d, 0x45, 0xcf, 0x25, 0xa2, - 0xa9, 0x9a, 0x92, 0xf9, 0x1b, 0x70, 0x05, 0xe7, 0xa1, 0xd7, 0x1b, 0xda, 0x63, 0x59, 0xdc, 0xb0, - 0xb9, 0x3c, 0x89, 0xcd, 0x45, 0x86, 0x55, 0xef, 0x0d, 0x33, 0x09, 0xdd, 0xb0, 0xd5, 0xed, 0xdc, - 0xdd, 0x80, 0x4b, 0xce, 0xe7, 0xd4, 0xc6, 0x8c, 0xed, 0x05, 0x7c, 0xa6, 0x8f, 0xef, 0x07, 0x7b, - 0xb0, 0x9a, 0x68, 0x76, 0x52, 0xa8, 0x97, 0x71, 0xd1, 0x5f, 0x54, 0x19, 0xca, 0x13, 0x13, 0x97, - 0xa6, 0x3c, 0x3e, 0xce, 0x18, 0xa1, 0x1a, 0x05, 0x6a, 0x94, 0x22, 0x08, 0x49, 0x03, 0xd6, 0x9c, - 0xc3, 0x50, 0xa6, 0x88, 0x0f, 0xe3, 0x6f, 0xcd, 0x8f, 0x7f, 0x4b, 0xde, 0xad, 0x8b, 0x3d, 0x84, - 0x38, 0x87, 0xa1, 0xc8, 0x1c, 0x1f, 0x4a, 0x6e, 0x1f, 0x03, 0xe1, 0xfb, 0x50, 0xaa, 0xde, 0x70, - 0x1c, 0x2f, 0x91, 0x5f, 0x7e, 0x8c, 0x52, 0x8d, 0x65, 0x89, 0xa5, 0x6a, 0xcd, 0x3b, 0xe9, 0xfb, - 0x90, 0x85, 0xd4, 0x65, 0x7e, 0xb6, 0xb7, 0xb9, 0xa3, 0x81, 0x82, 0xaf, 0xda, 0x77, 0x14, 0x30, - 0x1e, 0xe9, 0x31, 0xd6, 0x1d, 0xd6, 0xe3, 0xc0, 0xef, 0xb9, 0xdc, 0x41, 0x9d, 0x2e, 0x21, 0x98, - 0x55, 0x60, 0x3b, 0x31, 0xb3, 0x7c, 0x4b, 0x03, 0x3d, 0xfb, 0x29, 0xf2, 0x1e, 0xcc, 0x72, 0x25, - 0x5b, 0x68, 0x4b, 0x46, 0x7e, 0x9d, 0xf8, 0x48, 0x73, 0x7d, 0x7b, 0xeb, 0x14, 0x15, 0x34, 0xe4, - 0x6d, 0x28, 0xf9, 0x5e, 0x4f, 0x3a, 0x27, 0x5c, 0x9b, 0x46, 0xdb, 0xaa, 0x57, 0x2b, 0x78, 0xa1, - 0xe1, 0xf5, 0x84, 0x5d, 0x60, 0xa3, 0x0c, 0xb3, 0xbc, 0x63, 0x8d, 0x8f, 0xe1, 0xd2, 0x94, 0x0f, - 0x92, 0x1a, 0xac, 0x64, 0x1c, 0x37, 0x4e, 0xe8, 0xd3, 0xe1, 0x24, 0x3e, 0x1d, 0x81, 0x3c, 0x2b, - 0xf6, 0xe1, 0xc2, 0xc4, 0x0a, 0x92, 0xfa, 0x44, 0x09, 0x82, 0xd1, 0x98, 0xb2, 0x65, 0xea, 0x64, - 0xcd, 0x48, 0x17, 0xf1, 0xb5, 0x9f, 0x2a, 0xc0, 0xe9, 0x9c, 0x49, 0xf4, 0xff, 0xad, 0x2a, 0xf1, - 0xeb, 0x9a, 0xe8, 0x8f, 0xb4, 0x30, 0x20, 0x1d, 0x10, 0x7e, 0x41, 0x42, 0x70, 0xdc, 0x98, 0x2c, - 0x38, 0x54, 0x77, 0x0b, 0x11, 0x96, 0x0b, 0x01, 0xaa, 0x53, 0x01, 0x87, 0x3c, 0x83, 0x23, 0x84, - 0x18, 0xbe, 0x8f, 0xe0, 0x4c, 0xae, 0x60, 0x67, 0xa7, 0x6b, 0x7c, 0x8f, 0x90, 0x18, 0x8e, 0xe6, - 0xd8, 0xef, 0x9d, 0x00, 0x8d, 0x92, 0x8f, 0x5c, 0x27, 0x70, 0x03, 0x61, 0xb6, 0x10, 0x46, 0x49, - 0x0e, 0x53, 0xad, 0x16, 0xbd, 0xf4, 0x2e, 0x26, 0x6e, 0x52, 0xc9, 0x36, 0x9c, 0xe6, 0xd2, 0x85, - 0x9f, 0x3e, 0x6d, 0x71, 0xfb, 0x9a, 0xce, 0x0a, 0x87, 0x24, 0x78, 0x2e, 0xe7, 0x27, 0x51, 0x4e, - 0x4d, 0x57, 0xf7, 0xb2, 0x20, 0xa6, 0xbc, 0x9d, 0xcd, 0xc7, 0x26, 0x1b, 0xb0, 0xc0, 0x99, 0x73, - 0xc3, 0x2d, 0x77, 0x9b, 0xb9, 0x3e, 0xf5, 0x0b, 0x15, 0x7c, 0xa6, 0x17, 0xc6, 0xff, 0x93, 0xe7, - 0x61, 0x09, 0x3d, 0x14, 0xed, 0x03, 0xd5, 0x2b, 0x88, 0x2e, 0x22, 0x50, 0x78, 0x03, 0x19, 0xff, - 0x51, 0x93, 0x4d, 0x4d, 0x5d, 0x19, 0xb1, 0x1d, 0x38, 0x74, 0x07, 0xd2, 0x33, 0x6a, 0x9e, 0x8a, - 0x5f, 0x4f, 0xa9, 0x15, 0x90, 0x77, 0x60, 0x91, 0xb1, 0xdd, 0x1b, 0x0d, 0xf8, 0xce, 0x5c, 0x4c, - 0x85, 0x0b, 0xdd, 0xe6, 0x45, 0x6c, 0xd8, 0xb6, 0x4e, 0xd1, 0x85, 0x83, 0xe4, 0x27, 0x79, 0x0d, - 0xe6, 0xc3, 0x83, 0x68, 0xa8, 0xee, 0xe7, 0xf2, 0xfa, 0xdc, 0xda, 0xee, 0xb4, 0x05, 0x49, 0x99, - 0xe1, 0x24, 0xf6, 0xcc, 0x8d, 0x59, 0x7e, 0x81, 0x6e, 0xbc, 0x02, 0x0b, 0x0a, 0x6f, 0xd6, 0x18, - 0xfe, 0xa8, 0x5d, 0x36, 0x86, 0xff, 0x12, 0x83, 0xfd, 0x08, 0xca, 0x92, 0x25, 0x21, 0x50, 0xda, - 0xf7, 0x43, 0xa9, 0x0f, 0xe1, 0xff, 0x0c, 0x86, 0x06, 0x0e, 0xd6, 0xc8, 0x19, 0x8a, 0xff, 0xe3, - 0x11, 0x0f, 0xef, 0x6c, 0x30, 0xf4, 0x3c, 0x3e, 0x64, 0x88, 0x2d, 0x8b, 0x0c, 0xde, 0xe9, 0x87, - 0xfc, 0x79, 0x83, 0xb4, 0x71, 0xc6, 0x67, 0xe3, 0xcc, 0x1d, 0xdb, 0x24, 0xf5, 0x38, 0x75, 0x92, - 0x2b, 0x8c, 0x9f, 0xe4, 0x78, 0x18, 0x48, 0x41, 0xc9, 0xbf, 0x0c, 0x08, 0xe3, 0x27, 0xb9, 0x44, - 0x81, 0x2a, 0xa5, 0x14, 0x28, 0xe5, 0xd6, 0x24, 0x19, 0x3d, 0x7e, 0x10, 0x94, 0xb7, 0x26, 0x59, - 0x95, 0xee, 0x57, 0xe2, 0x19, 0x92, 0xba, 0xe5, 0x23, 0xb7, 0xe0, 0x0c, 0xb7, 0x1a, 0xf2, 0x5c, - 0x7d, 0x59, 0x5d, 0xf2, 0x34, 0x16, 0xf2, 0x44, 0xb5, 0xb1, 0x4e, 0x79, 0xfc, 0xad, 0x00, 0x79, - 0x03, 0xd6, 0xbc, 0x41, 0xe8, 0x76, 0x47, 0x81, 0x6b, 0x87, 0x8f, 0xbd, 0x21, 0xcf, 0x1a, 0x7d, - 0x24, 0xec, 0x79, 0x44, 0x96, 0x59, 0x8f, 0xbd, 0x21, 0x66, 0x90, 0x96, 0x3d, 0xfc, 0xab, 0x05, - 0x79, 0xd7, 0xb4, 0xe1, 0xfb, 0x51, 0x18, 0x05, 0xce, 0x30, 0xe5, 0xc7, 0x40, 0x0e, 0xe0, 0x02, - 0x56, 0xe9, 0x16, 0x26, 0x27, 0xf4, 0x03, 0x79, 0x37, 0x17, 0x2f, 0xb0, 0x85, 0x5b, 0xaf, 0xa7, - 0xed, 0xb4, 0x26, 0xc3, 0x36, 0x55, 0x64, 0xb6, 0xae, 0x14, 0xae, 0x5b, 0xa7, 0xe8, 0x39, 0xce, - 0x73, 0x0c, 0x8b, 0x6c, 0xe5, 0xc8, 0x9a, 0xac, 0x23, 0xc3, 0x46, 0x22, 0x78, 0xd2, 0x5c, 0x55, - 0x91, 0x44, 0x3e, 0x80, 0x79, 0xaf, 0x27, 0xb3, 0x41, 0x16, 0x73, 0xae, 0xd0, 0xeb, 0x3d, 0x9e, - 0xb4, 0x27, 0xe1, 0xc1, 0x96, 0x86, 0x27, 0xa0, 0x1b, 0x4b, 0x29, 0x0d, 0xc7, 0xd8, 0x92, 0xd7, - 0x1a, 0xe3, 0x64, 0x64, 0x39, 0xd9, 0xfb, 0x70, 0x9f, 0x43, 0x29, 0xa0, 0x64, 0xa1, 0x14, 0xbf, - 0x44, 0x97, 0xff, 0x30, 0xbc, 0x74, 0xd2, 0x9e, 0x62, 0x72, 0x63, 0x42, 0xb7, 0xcf, 0xf3, 0x94, - 0x01, 0xe9, 0xde, 0xbb, 0x0e, 0x6a, 0xaa, 0x13, 0x4f, 0x4e, 0x14, 0x09, 0xdb, 0x09, 0x3c, 0xe3, - 0xcf, 0x8b, 0xb0, 0x9c, 0xf6, 0x74, 0x21, 0xaf, 0x40, 0x49, 0x11, 0x97, 0xe7, 0x72, 0xdc, 0x61, - 0x50, 0x48, 0x22, 0xd2, 0x89, 0xc4, 0x23, 0xb9, 0x0b, 0xcb, 0xf8, 0x58, 0x07, 0xd5, 0xb8, 0xc8, - 0x13, 0xb7, 0xb8, 0x27, 0xbd, 0x9f, 0x5d, 0x64, 0xb4, 0x6c, 0x7b, 0x64, 0x85, 0x8a, 0x23, 0x43, - 0x69, 0xb2, 0x23, 0x83, 0x68, 0xca, 0x04, 0x47, 0x86, 0x99, 0x29, 0x8e, 0x0c, 0x09, 0xa5, 0xea, - 0xc8, 0x80, 0xee, 0x2c, 0x73, 0x93, 0xdc, 0x59, 0x12, 0x1a, 0xee, 0xce, 0x92, 0x38, 0x22, 0x94, - 0x27, 0x3a, 0x22, 0x24, 0x34, 0xc2, 0x11, 0x21, 0x71, 0x0d, 0x98, 0x9f, 0xe8, 0x1a, 0xa0, 0x10, - 0x71, 0xd7, 0x80, 0x17, 0x44, 0xc7, 0x06, 0xce, 0xa1, 0x8d, 0x3d, 0x2e, 0xce, 0x47, 0xd8, 0x65, - 0xd4, 0x39, 0x44, 0xa7, 0x7a, 0xa6, 0x9e, 0x08, 0x4f, 0x7c, 0xe3, 0xb7, 0x32, 0x62, 0x48, 0x8e, - 0xf9, 0x8b, 0xb0, 0xcc, 0x77, 0x63, 0x91, 0x8a, 0x82, 0x6f, 0xc7, 0x4b, 0x74, 0x49, 0x42, 0xf9, - 0x6d, 0xc2, 0xf7, 0xc1, 0x4a, 0x8c, 0x26, 0x0c, 0xea, 0x18, 0x25, 0x84, 0xc6, 0xd4, 0xc2, 0x94, - 0xae, 0xf2, 0x0b, 0x44, 0x40, 0xcd, 0x14, 0x3f, 0x6e, 0x8f, 0x7e, 0x15, 0x48, 0x82, 0x16, 0xbf, - 0x4b, 0x2a, 0x21, 0xea, 0x6a, 0x8c, 0x1a, 0x3f, 0x1e, 0xfa, 0x05, 0x2d, 0x73, 0x97, 0xfe, 0xbd, - 0xaa, 0xfe, 0x2b, 0x10, 0x7f, 0xdd, 0x16, 0xf7, 0xa1, 0xb2, 0x05, 0xba, 0x2c, 0x68, 0x0b, 0xb8, - 0xb1, 0x97, 0x35, 0xd8, 0x7e, 0x8f, 0x6a, 0x65, 0xfc, 0x6a, 0x29, 0x75, 0xc5, 0x27, 0x3f, 0xc3, - 0xb4, 0x9c, 0xd0, 0xb7, 0xc5, 0x10, 0x0b, 0x21, 0x7c, 0x7d, 0xc2, 0x34, 0x15, 0x2f, 0x31, 0x2c, - 0xab, 0x45, 0x21, 0x0c, 0x7d, 0xf9, 0x30, 0xc3, 0xe6, 0xc6, 0x2d, 0xe5, 0xd4, 0x27, 0xd9, 0x71, - 0x89, 0xbb, 0x3e, 0x9d, 0x9d, 0xbc, 0x43, 0x61, 0xab, 0x14, 0x8d, 0x5c, 0xf1, 0x2f, 0xf9, 0x81, - 0x1d, 0xc0, 0x6b, 0xf9, 0x30, 0xcd, 0x3c, 0xcf, 0x14, 0x34, 0xc6, 0x1c, 0x7b, 0x09, 0x39, 0xe3, - 0x05, 0x4b, 0xa8, 0xb2, 0xad, 0xc1, 0x22, 0x5e, 0xa0, 0x49, 0x86, 0xa5, 0x1c, 0xc7, 0xa1, 0xf1, - 0xc6, 0x57, 0xea, 0xdb, 0x74, 0x81, 0xd1, 0x49, 0x36, 0xfb, 0x29, 0xa3, 0x6b, 0xa6, 0x92, 0x33, - 0x32, 0x81, 0xcc, 0xd4, 0x1e, 0x48, 0x6e, 0xc7, 0xb0, 0xaa, 0x8a, 0xf5, 0x35, 0x55, 0xe1, 0x2e, - 0x5c, 0x18, 0xbb, 0xf4, 0x89, 0xbf, 0xc4, 0x1d, 0xd9, 0x5e, 0x9a, 0xf0, 0xa5, 0xcc, 0x6d, 0x90, - 0x1b, 0xd0, 0xb3, 0x61, 0x1a, 0x24, 0x3e, 0x82, 0x2f, 0x9f, 0x26, 0x0f, 0xfc, 0x94, 0xd4, 0xc6, - 0x89, 0x1a, 0x55, 0x50, 0xd5, 0x28, 0xf5, 0xaa, 0xad, 0x98, 0xbe, 0x6a, 0xdb, 0x84, 0x6b, 0x4c, - 0xe6, 0x89, 0x99, 0xe3, 0x7e, 0xea, 0x06, 0x47, 0xfe, 0x00, 0xa3, 0x8e, 0x0e, 0xe3, 0xa5, 0xcf, - 0xef, 0x06, 0x2f, 0x33, 0x3c, 0x9c, 0x17, 0x35, 0x81, 0xb5, 0x8d, 0x48, 0x3c, 0x9a, 0xee, 0x3f, - 0x2d, 0xc2, 0xf3, 0x27, 0x98, 0x5c, 0x53, 0xea, 0xfe, 0x95, 0xb4, 0xb2, 0x5f, 0x48, 0x99, 0xff, - 0x19, 0xd3, 0xc4, 0xdc, 0x3d, 0x41, 0xd5, 0xff, 0x21, 0x58, 0xe1, 0xdb, 0x14, 0x7f, 0xfa, 0xb5, - 0x3b, 0xea, 0x9f, 0x60, 0x9f, 0xba, 0x24, 0x03, 0x5b, 0x64, 0x48, 0x71, 0xeb, 0x42, 0xe9, 0x6c, - 0xc5, 0x30, 0xd2, 0x81, 0x05, 0x44, 0xdb, 0x75, 0xbc, 0xfe, 0x89, 0x22, 0x2c, 0xc8, 0xb0, 0x19, - 0x2a, 0x19, 0x7f, 0xe2, 0xca, 0x00, 0x9b, 0xf8, 0x9b, 0xdc, 0x80, 0x95, 0xc1, 0xe8, 0x80, 0xa9, - 0xb1, 0x7c, 0xe6, 0x0a, 0x0f, 0xfb, 0x19, 0xba, 0x34, 0x18, 0x1d, 0x98, 0xc3, 0x21, 0x4e, 0x40, - 0x74, 0xc5, 0x5f, 0x65, 0x78, 0x22, 0x63, 0xb8, 0xc0, 0x9c, 0x45, 0x4c, 0xc6, 0x80, 0x4b, 0x19, - 0x81, 0xbb, 0x06, 0xfc, 0x61, 0x96, 0x48, 0x11, 0xcd, 0x7f, 0x18, 0xff, 0xb3, 0x20, 0x0d, 0xe5, - 0x93, 0x57, 0xe9, 0xdf, 0x0d, 0x51, 0xce, 0x10, 0xbd, 0x04, 0x3a, 0xeb, 0xfa, 0x44, 0x04, 0xc6, - 0x63, 0xb4, 0x3c, 0x18, 0x1d, 0xc4, 0x7d, 0xa7, 0x76, 0xfc, 0xac, 0xda, 0xf1, 0xef, 0x48, 0x43, - 0x74, 0xae, 0x30, 0x9b, 0xdc, 0xe5, 0x4c, 0xbf, 0xbb, 0x71, 0x32, 0x91, 0xf5, 0x77, 0xe3, 0x96, - 0x33, 0x6e, 0x19, 0x2f, 0x84, 0x99, 0x31, 0x2f, 0x84, 0x9c, 0xb5, 0x37, 0x9b, 0xb7, 0xf6, 0xc6, - 0x7c, 0x1e, 0xe6, 0x72, 0x7c, 0x1e, 0x72, 0x17, 0x68, 0xf9, 0x98, 0x05, 0x3a, 0xaf, 0xce, 0x93, - 0xdf, 0x2b, 0xc0, 0xf5, 0x63, 0xf7, 0x8d, 0xbf, 0x1b, 0xe9, 0x9c, 0x91, 0xce, 0xef, 0xcf, 0x3f, - 0x2f, 0x48, 0x7d, 0x39, 0x7d, 0x0c, 0xfe, 0x08, 0x4e, 0xcb, 0x63, 0x30, 0xd7, 0x1b, 0x12, 0xd7, - 0xa0, 0x85, 0x5b, 0x2f, 0xe7, 0x1d, 0x80, 0x11, 0x2d, 0xe7, 0x90, 0xba, 0x2a, 0x8e, 0xbe, 0x49, - 0xf9, 0xff, 0x3b, 0x87, 0x5e, 0xf2, 0x10, 0xce, 0x62, 0x12, 0xb9, 0xae, 0xea, 0xd4, 0x64, 0x07, - 0xee, 0xae, 0xe8, 0xf5, 0xeb, 0x63, 0x87, 0x43, 0xaf, 0xab, 0x54, 0x87, 0xba, 0xbb, 0x5b, 0xa7, - 0xe8, 0x5a, 0x98, 0x03, 0x17, 0xa6, 0xa6, 0xcc, 0xa9, 0xfa, 0x5f, 0x6a, 0x60, 0x1c, 0xdf, 0x6b, - 0x68, 0x00, 0xc9, 0x76, 0xfb, 0x3c, 0x5d, 0x70, 0x94, 0x3e, 0x7c, 0x1e, 0x96, 0x02, 0x77, 0x37, - 0x70, 0xc3, 0xfd, 0x94, 0x95, 0x72, 0x51, 0x00, 0x65, 0xf7, 0xc8, 0x7c, 0x16, 0x4f, 0x75, 0x20, - 0x95, 0x44, 0xb1, 0xbb, 0xf0, 0xe5, 0x69, 0x63, 0xc2, 0x66, 0x96, 0x5a, 0x4d, 0xfe, 0x23, 0x76, - 0x4d, 0x2b, 0xe8, 0x45, 0x2a, 0x32, 0x70, 0xec, 0x7a, 0x7d, 0xd7, 0xf8, 0xcd, 0x58, 0x77, 0xcb, - 0xeb, 0x4e, 0xf2, 0x91, 0xf2, 0x24, 0xb5, 0x38, 0xa6, 0x96, 0xe6, 0x91, 0x9c, 0xc4, 0x9c, 0xdc, - 0xf8, 0x9c, 0xcc, 0xc9, 0xb7, 0xe5, 0xbb, 0x16, 0xb6, 0xab, 0xdc, 0xbf, 0x49, 0x5e, 0x86, 0x39, - 0xfe, 0x94, 0x45, 0x56, 0x77, 0x25, 0x55, 0xdd, 0xfb, 0x37, 0xa9, 0x2c, 0x37, 0xbe, 0x15, 0x3b, - 0xe1, 0x8d, 0x35, 0xe2, 0xfe, 0x4d, 0xf2, 0xce, 0xc9, 0x9e, 0x98, 0x96, 0xe5, 0x13, 0xd3, 0xf8, - 0x79, 0xe9, 0xbb, 0xa9, 0xe7, 0xa5, 0x2f, 0x4c, 0xef, 0x2d, 0xe1, 0xdf, 0xc9, 0xb3, 0x1a, 0xc4, - 0xa1, 0xa9, 0x8d, 0x6f, 0x16, 0xe1, 0xb9, 0xa9, 0x14, 0xe4, 0x32, 0x94, 0xcd, 0x76, 0xbd, 0x93, - 0x8c, 0x32, 0x5b, 0x45, 0x12, 0x42, 0xee, 0xc0, 0xfc, 0x86, 0x13, 0x7a, 0x5d, 0x36, 0xa5, 0x73, - 0xbd, 0x6c, 0xc6, 0xd8, 0xc6, 0xe8, 0x5b, 0xa7, 0x68, 0x42, 0x4b, 0x6c, 0x58, 0xc5, 0x75, 0x91, - 0x4a, 0x45, 0x5d, 0xcc, 0x31, 0xba, 0x8d, 0x31, 0x1c, 0x23, 0x63, 0x92, 0x67, 0x0c, 0x48, 0x1e, - 0x01, 0xb1, 0xac, 0xad, 0x8a, 0x1b, 0x44, 0xc2, 0x0c, 0x15, 0x79, 0xf1, 0x7b, 0xc5, 0x37, 0x8e, - 0xe9, 0xbb, 0x31, 0xba, 0xad, 0x53, 0x34, 0x87, 0x1b, 0xb9, 0x0e, 0x6a, 0xce, 0x74, 0xd4, 0x82, - 0x16, 0xb7, 0x4e, 0x51, 0x18, 0xc6, 0xb9, 0xd3, 0xf3, 0x65, 0xc3, 0x0f, 0x4b, 0xd5, 0x73, 0x72, - 0x6f, 0x3d, 0x45, 0x6a, 0x99, 0x97, 0xa0, 0xdc, 0x96, 0x6e, 0xe0, 0xca, 0x03, 0x71, 0xe9, 0xf2, - 0x4d, 0xe3, 0x52, 0x31, 0xb3, 0x7f, 0x5e, 0x93, 0x66, 0xba, 0xe3, 0xfb, 0x56, 0x49, 0x2c, 0xde, - 0x9b, 0x9e, 0x58, 0xbc, 0xf7, 0x5d, 0x26, 0x16, 0x17, 0x95, 0xf2, 0xe1, 0xe5, 0x13, 0x8f, 0x06, - 0x79, 0x0f, 0x74, 0x4c, 0xbc, 0xec, 0x28, 0x23, 0x9b, 0x8e, 0xa7, 0xce, 0xe3, 0x85, 0xb6, 0x1d, - 0x2f, 0xa0, 0x2b, 0xdd, 0x34, 0xb5, 0xf8, 0xe0, 0xaf, 0x89, 0xac, 0x73, 0xf5, 0x5e, 0x3b, 0x73, - 0xf5, 0xfe, 0xac, 0x51, 0x06, 0x6a, 0xa9, 0x75, 0x2a, 0xf7, 0xba, 0xfc, 0x6f, 0x4d, 0x0e, 0x36, - 0xa0, 0x2c, 0xda, 0x7f, 0x54, 0x84, 0xcb, 0xd3, 0xc8, 0x89, 0x09, 0x7a, 0x8d, 0x47, 0x2e, 0x15, - 0xef, 0x3b, 0xfd, 0x40, 0xcd, 0x82, 0xca, 0xa3, 0x9a, 0xda, 0xbd, 0xb8, 0x90, 0x8e, 0xa1, 0xb3, - 0x71, 0xe6, 0xb0, 0xf8, 0x09, 0x3d, 0x8e, 0xb3, 0x20, 0x65, 0xe3, 0x2c, 0x8b, 0xc9, 0xf3, 0x30, - 0x6b, 0x56, 0xac, 0x24, 0x09, 0x3c, 0xbe, 0x75, 0x75, 0xba, 0x21, 0xbe, 0xa2, 0x14, 0x45, 0xe4, - 0x07, 0x41, 0xcf, 0x66, 0x7b, 0x14, 0xd9, 0xdf, 0x2f, 0x29, 0x1d, 0x32, 0x96, 0x10, 0x12, 0xeb, - 0x9b, 0x24, 0x30, 0x14, 0x39, 0xc1, 0xe8, 0x18, 0x2f, 0x62, 0xc0, 0x6c, 0x3b, 0x70, 0x43, 0x37, - 0x52, 0xdf, 0xa1, 0x0e, 0x11, 0x42, 0x45, 0x89, 0x78, 0x25, 0xea, 0x1c, 0xf1, 0x28, 0x82, 0xb3, - 0x6a, 0xb4, 0x58, 0x7c, 0x56, 0xca, 0xc0, 0x54, 0x41, 0x61, 0x04, 0x0d, 0x67, 0x34, 0xe8, 0xee, - 0xef, 0xd0, 0x86, 0x50, 0x6b, 0x39, 0x41, 0x1f, 0xa1, 0xac, 0x81, 0x21, 0x55, 0x50, 0x8c, 0xbf, - 0xaf, 0xc1, 0x5a, 0x5e, 0x3b, 0x8e, 0xf1, 0xda, 0x79, 0x03, 0x16, 0xf0, 0x86, 0x76, 0xd7, 0x0f, - 0x0e, 0x9c, 0x48, 0x7d, 0xad, 0xab, 0x80, 0x29, 0xde, 0x28, 0x6f, 0xe2, 0xff, 0xe4, 0xaa, 0xdc, - 0xad, 0x94, 0x5c, 0x2e, 0x08, 0x10, 0x1b, 0x97, 0x61, 0x02, 0xd4, 0x7b, 0xed, 0xd6, 0x90, 0x27, - 0x24, 0x7c, 0x13, 0x4a, 0xac, 0x5a, 0x99, 0xd9, 0xcb, 0xe6, 0x8f, 0xb9, 0xdd, 0x10, 0x48, 0xbc, - 0x56, 0xa1, 0x73, 0xd0, 0xa7, 0x88, 0x6c, 0x3c, 0x80, 0xe5, 0x34, 0x06, 0xa9, 0xa5, 0x73, 0xd2, - 0x2c, 0xdc, 0xd2, 0x05, 0xa7, 0x0d, 0xdf, 0xe7, 0x11, 0x23, 0x36, 0x2e, 0xfc, 0xe1, 0x67, 0x57, - 0x81, 0xfd, 0xe4, 0x34, 0x79, 0x39, 0x6b, 0x8c, 0x9f, 0x29, 0xc0, 0x5a, 0x12, 0xd5, 0x4e, 0xae, - 0xa1, 0xbf, 0xb1, 0x11, 0x93, 0xcc, 0x54, 0x44, 0x1f, 0xa9, 0x84, 0x8e, 0x37, 0x70, 0x4a, 0x20, - 0x91, 0x3b, 0x70, 0x7e, 0x12, 0x3e, 0x79, 0x05, 0xe6, 0x31, 0xb8, 0xf2, 0xd0, 0xe9, 0xba, 0xaa, - 0xc8, 0x1d, 0x48, 0x20, 0x4d, 0xca, 0x8d, 0xdf, 0xd3, 0xe0, 0xa2, 0x88, 0x73, 0xb0, 0xed, 0x78, - 0x03, 0xbc, 0x10, 0xec, 0xba, 0x9f, 0x4f, 0xc4, 0xaf, 0x3b, 0x29, 0x39, 0xf6, 0x62, 0x3a, 0x9c, - 0xc5, 0xd8, 0xd7, 0x26, 0xb7, 0x96, 0xbc, 0x8c, 0x01, 0xc3, 0x85, 0x1f, 0x6b, 0x89, 0x87, 0x64, - 0x1c, 0x30, 0x80, 0x1a, 0x92, 0x11, 0x31, 0x8c, 0x1f, 0x81, 0x2b, 0xd3, 0x3f, 0x40, 0xbe, 0x0e, - 0x4b, 0x98, 0x41, 0x7c, 0x67, 0xb8, 0x17, 0x38, 0x3d, 0x57, 0x1a, 0x89, 0xe5, 0x5d, 0x86, 0x5a, - 0xc6, 0xe3, 0x9f, 0x8b, 0x10, 0x81, 0x7b, 0x98, 0x9b, 0x5c, 0x10, 0xa5, 0x82, 0x89, 0xa8, 0xdc, - 0x8c, 0x1f, 0xd5, 0x80, 0x8c, 0xf3, 0x20, 0x6f, 0xc3, 0xe2, 0x4e, 0xa7, 0x62, 0x45, 0x4e, 0x10, - 0x6d, 0xf9, 0xa3, 0x40, 0x04, 0x1f, 0xe7, 0x11, 0xe3, 0xa2, 0xae, 0xcd, 0xaf, 0x7e, 0xf7, 0xfd, - 0x51, 0x40, 0x53, 0x78, 0x98, 0x65, 0xda, 0x75, 0x1f, 0xf7, 0x9c, 0xa3, 0x74, 0x96, 0x69, 0x01, - 0x4b, 0x65, 0x99, 0x16, 0x30, 0xe3, 0x57, 0x34, 0xb8, 0x24, 0x5f, 0xaa, 0xf5, 0x72, 0xea, 0x52, - 0xc1, 0xb8, 0xa8, 0x81, 0xcc, 0xf4, 0x33, 0x4d, 0xd1, 0x5f, 0x95, 0xa1, 0x83, 0xb1, 0x82, 0xa8, - 0xf1, 0x73, 0x5a, 0xf2, 0x15, 0x28, 0x59, 0x91, 0x3f, 0x3c, 0x41, 0xec, 0x60, 0x3d, 0x1e, 0xd1, - 0xc8, 0x1f, 0x22, 0x0b, 0xa4, 0x34, 0x5c, 0x58, 0x53, 0x2b, 0x27, 0x6b, 0x4c, 0xb6, 0x61, 0x4e, - 0x04, 0x9e, 0xcf, 0x78, 0x93, 0x4e, 0x69, 0xd3, 0xc6, 0x8a, 0x0c, 0x50, 0x2c, 0x72, 0xd2, 0x50, - 0xc9, 0xc3, 0xf8, 0x69, 0x0d, 0x16, 0x98, 0xaa, 0x83, 0x16, 0x83, 0x67, 0x9d, 0xd2, 0x69, 0x15, - 0x5a, 0x3a, 0xb2, 0xc7, 0xec, 0x4f, 0xb4, 0x1b, 0xbf, 0x05, 0x2b, 0x19, 0x02, 0x62, 0x60, 0x68, - 0xca, 0xbe, 0xd7, 0x75, 0x78, 0xd2, 0x5a, 0xee, 0x04, 0x9e, 0x82, 0x19, 0x3f, 0xa9, 0xc1, 0x5a, - 0xeb, 0x71, 0xe4, 0x70, 0x0f, 0x0d, 0x3a, 0xea, 0xcb, 0xf5, 0xce, 0xd4, 0x37, 0xf9, 0xe4, 0x91, - 0x47, 0xc1, 0xe3, 0xea, 0x9b, 0x80, 0xd1, 0xb8, 0x94, 0x6c, 0x41, 0x59, 0xec, 0x2f, 0xa1, 0x48, - 0xb1, 0x72, 0x45, 0x31, 0x67, 0x24, 0x8c, 0x05, 0x12, 0x6b, 0x09, 0x8a, 0x30, 0x41, 0x43, 0x63, - 0x6a, 0xe3, 0x2f, 0x34, 0x38, 0x37, 0x81, 0x86, 0xbc, 0x0f, 0x33, 0x18, 0xa1, 0x47, 0x8c, 0xde, - 0xe5, 0x09, 0x9f, 0x88, 0xba, 0xfb, 0xf7, 0x6f, 0xf2, 0x8d, 0xe8, 0x80, 0xfd, 0xa0, 0x9c, 0x8a, - 0x7c, 0x04, 0xf3, 0x66, 0xaf, 0x27, 0x0e, 0x76, 0x85, 0xd4, 0xc1, 0x6e, 0xc2, 0x17, 0x5f, 0x8b, - 0xf1, 0xf9, 0xc1, 0x8e, 0xc7, 0x8a, 0xe8, 0xf5, 0x6c, 0x11, 0x7d, 0x28, 0xe1, 0x77, 0xf1, 0x3d, - 0x58, 0x4e, 0x23, 0x3f, 0x55, 0xc0, 0x94, 0x6f, 0x69, 0xa0, 0xa7, 0xeb, 0xf0, 0xbd, 0x09, 0xad, - 0x9c, 0x37, 0xcc, 0xc7, 0x4c, 0xaa, 0x9f, 0x2b, 0xc0, 0x99, 0xdc, 0x1e, 0x26, 0xaf, 0xc2, 0xac, - 0x39, 0x1c, 0xd6, 0xab, 0x62, 0x56, 0x09, 0x0d, 0x09, 0x6f, 0x36, 0x52, 0xe7, 0x5e, 0x8e, 0x44, - 0xde, 0x84, 0x32, 0x77, 0x04, 0xaa, 0x4a, 0x81, 0x83, 0xb1, 0x62, 0x85, 0x97, 0x52, 0x3a, 0xd9, - 0x89, 0x44, 0x24, 0x9b, 0xb0, 0x2c, 0xa2, 0xac, 0xa2, 0x57, 0x58, 0x9c, 0x33, 0x10, 0x1d, 0xe9, - 0xe4, 0x75, 0x09, 0xf7, 0x27, 0x4b, 0xc9, 0xce, 0x0c, 0x15, 0x69, 0x80, 0x8e, 0x3c, 0x55, 0x4e, - 0x3c, 0xe3, 0x8a, 0xe2, 0x88, 0x39, 0x81, 0xd7, 0x18, 0x65, 0x3c, 0x5c, 0xc9, 0xe3, 0x9b, 0xef, - 0xdd, 0x70, 0x25, 0xdf, 0x38, 0xd1, 0x70, 0xfd, 0x62, 0x89, 0x2f, 0xe6, 0x2c, 0x19, 0xd3, 0x68, - 0x94, 0x14, 0x61, 0xa8, 0xd1, 0xb0, 0x13, 0x9b, 0x88, 0x23, 0x5a, 0x85, 0xb9, 0x8e, 0x48, 0xff, - 0xc4, 0x57, 0xc6, 0x73, 0xb9, 0x55, 0xe0, 0x38, 0xf7, 0x6f, 0x72, 0xf5, 0x45, 0xa4, 0x83, 0xa2, - 0x92, 0x94, 0xdc, 0x87, 0x85, 0x4a, 0xdf, 0x75, 0x06, 0xa3, 0x61, 0xe7, 0x64, 0xfe, 0x07, 0xe7, - 0x45, 0x5b, 0x16, 0xbb, 0x9c, 0x0c, 0xfd, 0x16, 0x50, 0x92, 0xab, 0x8c, 0x48, 0x27, 0x8e, 0x1e, - 0x52, 0x42, 0x5b, 0xe9, 0x1b, 0x53, 0xfa, 0x27, 0x0b, 0x44, 0xba, 0x74, 0x68, 0x1c, 0x11, 0x5e, - 0xc4, 0x86, 0xe5, 0x86, 0x13, 0x46, 0x9d, 0xc0, 0x19, 0x84, 0x98, 0x6b, 0xe2, 0x04, 0x71, 0xb3, - 0x2f, 0x89, 0x0a, 0x73, 0x1b, 0x6a, 0x14, 0x93, 0x72, 0x1b, 0x6a, 0x9a, 0x1d, 0xd3, 0x97, 0x36, - 0xbd, 0x81, 0xd3, 0xf7, 0xbe, 0x21, 0x83, 0x2c, 0x71, 0x7d, 0x69, 0x57, 0x02, 0x69, 0x52, 0x6e, - 0xfc, 0xc0, 0xd8, 0xb8, 0xf1, 0x5a, 0x2e, 0xc0, 0x9c, 0x08, 0xc1, 0xc7, 0x43, 0xd2, 0xb5, 0x6b, - 0xcd, 0x6a, 0xbd, 0x79, 0x47, 0xd7, 0xc8, 0x32, 0x40, 0x9b, 0xb6, 0x2a, 0x35, 0xcb, 0x62, 0xbf, - 0x0b, 0xec, 0xb7, 0x88, 0x57, 0xb7, 0xb9, 0xd3, 0xd0, 0x8b, 0x4a, 0xc8, 0xba, 0x92, 0xf1, 0xbb, - 0x1a, 0x9c, 0xcd, 0x1f, 0x4a, 0xd2, 0x11, 0x8e, 0xfa, 0xdc, 0x13, 0xe5, 0xed, 0xa9, 0xe3, 0x9e, - 0x0b, 0xce, 0x06, 0x3f, 0x8c, 0x78, 0x50, 0xbd, 0x82, 0xbc, 0xe0, 0xe4, 0x51, 0x7a, 0xbc, 0x1e, - 0x2d, 0x78, 0x3d, 0xa3, 0x02, 0xe7, 0x27, 0xf1, 0x48, 0x37, 0x75, 0x05, 0x16, 0xcc, 0x76, 0xbb, - 0x51, 0xaf, 0x98, 0x9d, 0x7a, 0xab, 0xa9, 0x6b, 0x64, 0x1e, 0x66, 0xee, 0xd0, 0xd6, 0x4e, 0x5b, - 0x2f, 0x18, 0x7f, 0xa0, 0xc1, 0x52, 0x3d, 0xf1, 0x94, 0x7d, 0xd6, 0xc5, 0xf7, 0xa5, 0xd4, 0xe2, - 0x3b, 0x1f, 0x87, 0xf7, 0x8c, 0x3f, 0x30, 0x45, 0x83, 0xdc, 0x88, 0x63, 0x30, 0x15, 0x53, 0x1e, - 0x25, 0x2a, 0xb5, 0x8c, 0x6e, 0x13, 0xa7, 0x39, 0x4c, 0xc7, 0x68, 0x52, 0x56, 0xef, 0x3f, 0x2f, - 0xc2, 0xea, 0xd8, 0x77, 0x89, 0x05, 0x73, 0xe6, 0x03, 0xab, 0x55, 0xaf, 0x56, 0x44, 0xeb, 0xae, - 0x26, 0xde, 0x95, 0x98, 0xb5, 0x7b, 0xac, 0xa6, 0x3c, 0xac, 0xd6, 0x61, 0x68, 0xfb, 0x5e, 0xaf, - 0x9b, 0x72, 0xef, 0x95, 0x9c, 0x70, 0x37, 0xfc, 0xc6, 0x28, 0x40, 0x8f, 0x65, 0xd1, 0xf2, 0xd8, - 0x69, 0x53, 0xc2, 0xc7, 0x19, 0xa3, 0x0f, 0xaf, 0xc3, 0xca, 0xc7, 0x59, 0x27, 0xfc, 0x48, 0x13, - 0x66, 0xef, 0x78, 0xd1, 0xd6, 0xe8, 0x91, 0xe8, 0x95, 0x2b, 0x49, 0x0e, 0xe7, 0xad, 0xd1, 0xa3, - 0x71, 0xb6, 0x68, 0x31, 0xe5, 0x21, 0x35, 0x52, 0x2c, 0x05, 0x17, 0x72, 0x0f, 0x66, 0xcc, 0x07, - 0x16, 0x35, 0xc5, 0x0a, 0x55, 0xfc, 0x57, 0xa9, 0x39, 0x81, 0x1b, 0x6b, 0x7d, 0xe0, 0xa4, 0xb8, - 0x71, 0x1e, 0xd9, 0xb0, 0x42, 0xa5, 0xa7, 0x0a, 0x2b, 0xb4, 0xb1, 0x04, 0x0b, 0xe2, 0x50, 0x87, - 0xe7, 0xa5, 0x27, 0x70, 0x3a, 0x67, 0xa8, 0x89, 0x83, 0x5e, 0xf2, 0x78, 0xeb, 0x6e, 0x0e, 0x8e, - 0x0e, 0xf7, 0xdd, 0xc0, 0x1d, 0x1f, 0xbb, 0x74, 0xdd, 0xe5, 0x2c, 0xc9, 0xad, 0x3d, 0x1d, 0x63, - 0x67, 0xfc, 0xb6, 0x06, 0xe7, 0x27, 0x4d, 0x00, 0x76, 0x42, 0x4d, 0x07, 0x2e, 0x3c, 0x1b, 0xe7, - 0x2a, 0x4d, 0x7b, 0xb7, 0x4b, 0x34, 0xf2, 0x21, 0x2c, 0x70, 0x0f, 0x48, 0xeb, 0xcd, 0x1d, 0x5a, - 0x17, 0x2b, 0xf7, 0xb9, 0x3f, 0xfb, 0xec, 0xea, 0x39, 0xe1, 0x34, 0x19, 0xbe, 0x69, 0x8f, 0x02, - 0x2f, 0x21, 0x3d, 0xaf, 0x51, 0x95, 0x82, 0x1d, 0x28, 0x9c, 0x51, 0xcf, 0x73, 0xe5, 0x71, 0x4a, - 0x06, 0x77, 0x13, 0x30, 0x75, 0x7b, 0x97, 0x30, 0xe3, 0x27, 0x34, 0xb8, 0x38, 0x79, 0xb6, 0x31, - 0x95, 0xa1, 0xc3, 0x1d, 0x49, 0x65, 0x78, 0x35, 0x54, 0x19, 0x62, 0x6f, 0x53, 0x95, 0xa7, 0x44, - 0x64, 0x44, 0xc2, 0xf0, 0x27, 0xed, 0x45, 0x48, 0x14, 0xdb, 0x05, 0x55, 0x22, 0x89, 0x68, 0x3c, - 0x84, 0x73, 0x13, 0xe6, 0x26, 0xf9, 0x20, 0x37, 0x03, 0x32, 0x86, 0xcf, 0x50, 0xe3, 0xa3, 0xa4, - 0x52, 0xe9, 0x2b, 0x70, 0xe3, 0xdf, 0x73, 0xd7, 0xe9, 0x9c, 0x89, 0xca, 0xb4, 0x1b, 0xcc, 0xb8, - 0x6b, 0x0e, 0xba, 0xfb, 0x7e, 0x90, 0x0c, 0x16, 0x6a, 0x37, 0x11, 0x2b, 0xb1, 0x1d, 0x2c, 0xca, - 0x0c, 0x5a, 0x86, 0x8a, 0xf8, 0xb0, 0xda, 0x0e, 0xfc, 0x5d, 0x8f, 0xbf, 0xb5, 0xe6, 0x87, 0x52, - 0xb1, 0xa6, 0x5f, 0x52, 0xa6, 0x9b, 0x3a, 0x7d, 0xc6, 0xf0, 0xe3, 0xd4, 0x73, 0x0c, 0xcc, 0x7d, - 0x73, 0xba, 0x58, 0x40, 0xc7, 0x79, 0x1b, 0x7f, 0x58, 0x80, 0xeb, 0xc7, 0x72, 0x3c, 0x69, 0xe2, - 0xe0, 0xd7, 0x01, 0x04, 0x2d, 0xeb, 0x01, 0xc5, 0xe4, 0x24, 0x2b, 0xe3, 0x04, 0x03, 0xaa, 0xa0, - 0x90, 0xc7, 0xf0, 0x9c, 0xfc, 0xd5, 0xed, 0xba, 0xc3, 0x28, 0x64, 0xf5, 0x10, 0xf1, 0xd6, 0xe3, - 0xc0, 0x71, 0xe5, 0x8d, 0x17, 0xff, 0xec, 0xb3, 0xab, 0xd7, 0x63, 0x1e, 0x1c, 0x93, 0x3f, 0xf0, - 0x90, 0xa1, 0xdb, 0xd1, 0xf0, 0x35, 0x9d, 0x17, 0xb9, 0x91, 0xac, 0xa4, 0x52, 0x62, 0xc2, 0x96, - 0x2b, 0x29, 0x59, 0x3f, 0x5b, 0x40, 0x04, 0x23, 0x46, 0xb6, 0xa9, 0xde, 0x65, 0x73, 0xa9, 0x29, - 0x6b, 0xc2, 0x0d, 0x69, 0xbc, 0x9c, 0xe6, 0xd0, 0x18, 0xbf, 0xc0, 0x17, 0x76, 0xae, 0x74, 0x20, - 0x87, 0xb0, 0xc2, 0xb4, 0x0c, 0xa5, 0xb3, 0x85, 0x5c, 0xb9, 0x75, 0xfc, 0x40, 0xd7, 0x23, 0x11, - 0x5f, 0xc8, 0x1a, 0x1d, 0x1c, 0x38, 0xc1, 0xd1, 0xc6, 0x05, 0x99, 0x01, 0x17, 0xb5, 0x19, 0x75, - 0xec, 0x69, 0xf6, 0x2b, 0xc6, 0x9f, 0x16, 0xe0, 0x95, 0xa7, 0xe0, 0x4d, 0xda, 0x30, 0x8f, 0xe7, - 0x79, 0xd4, 0x04, 0x8f, 0xb7, 0x07, 0x9c, 0x15, 0x7b, 0xa3, 0x88, 0x2f, 0x14, 0xeb, 0x81, 0x09, - 0x13, 0x72, 0x97, 0x4d, 0xa7, 0x1e, 0xf2, 0x3b, 0xde, 0x36, 0xb0, 0x26, 0xcd, 0x64, 0xee, 0xa0, - 0x97, 0x70, 0x93, 0x0c, 0x94, 0xd0, 0x89, 0xc5, 0x89, 0xa1, 0x13, 0xdf, 0x82, 0xc5, 0x9a, 0xe2, - 0x60, 0x2b, 0x86, 0x1f, 0x6f, 0x0d, 0x52, 0xde, 0xb8, 0x34, 0x85, 0x46, 0xbe, 0x0c, 0xcb, 0xdc, - 0x7b, 0x40, 0xf4, 0x0e, 0xf7, 0x6d, 0x9b, 0x11, 0x09, 0x61, 0xb0, 0x44, 0x76, 0x75, 0x48, 0x33, - 0xa8, 0x6c, 0x61, 0x9d, 0x65, 0x5a, 0x49, 0xdf, 0x0d, 0x43, 0x73, 0x14, 0xed, 0xb3, 0x5d, 0x87, - 0x9f, 0xd3, 0xc9, 0x3b, 0x30, 0xbb, 0xff, 0x74, 0xb7, 0x73, 0x1c, 0x9d, 0x10, 0x40, 0x4d, 0x5f, - 0x46, 0x78, 0x61, 0xff, 0x93, 0x77, 0x61, 0x06, 0x8d, 0xcc, 0x42, 0xa1, 0x96, 0x86, 0x90, 0xfc, - 0x4f, 0xa3, 0x09, 0x9a, 0x72, 0x02, 0xb6, 0x5a, 0x93, 0xd4, 0xbe, 0x62, 0x3f, 0x96, 0xc6, 0xd7, - 0x38, 0xbb, 0x2f, 0x9d, 0x3f, 0xd8, 0x75, 0x44, 0xbe, 0xdc, 0x75, 0x58, 0x95, 0xb2, 0x77, 0x28, - 0x93, 0xab, 0x08, 0xbf, 0x9b, 0x15, 0x11, 0x85, 0x6a, 0x28, 0x13, 0xac, 0xbc, 0x00, 0xcb, 0x61, - 0xb8, 0x6f, 0x8b, 0xd8, 0x87, 0x8f, 0x65, 0xde, 0x36, 0xba, 0x18, 0x86, 0xfb, 0x3c, 0x08, 0xe2, - 0x3d, 0xf7, 0x88, 0x61, 0xe1, 0x5b, 0x86, 0x04, 0xab, 0xcc, 0xb1, 0xa2, 0x7e, 0x18, 0x63, 0x89, - 0xb0, 0x9d, 0x90, 0x60, 0x19, 0xff, 0xa5, 0x00, 0xf3, 0x0f, 0xd8, 0xe1, 0x15, 0x4d, 0xb2, 0xd3, - 0x4d, 0xbc, 0xb7, 0x60, 0xa1, 0xe1, 0x3b, 0xe2, 0x8a, 0x5e, 0x84, 0x18, 0xe1, 0x8f, 0x9f, 0xfa, - 0xbe, 0x23, 0x6f, 0xfb, 0x43, 0xaa, 0x22, 0x1d, 0x13, 0xb7, 0xf2, 0x2e, 0xcc, 0xf2, 0x15, 0x2e, - 0x6e, 0x1b, 0xa4, 0xf9, 0x22, 0xae, 0xd1, 0x6b, 0xbc, 0x58, 0xb9, 0x43, 0xe6, 0x52, 0x42, 0x3d, - 0x4b, 0x8b, 0x87, 0x4e, 0x8a, 0x01, 0x7a, 0xe6, 0x64, 0x06, 0x68, 0x25, 0x49, 0xc6, 0xec, 0x49, - 0x92, 0x64, 0x5c, 0xbc, 0x0d, 0x0b, 0x4a, 0x7d, 0x9e, 0xca, 0x9a, 0xf1, 0x63, 0x05, 0x58, 0xc2, - 0x56, 0xc5, 0x52, 0xeb, 0x6f, 0xa6, 0x39, 0xfd, 0x4b, 0x29, 0x73, 0xfa, 0x79, 0x75, 0xbc, 0x84, - 0xd3, 0xcf, 0x64, 0x3b, 0xfa, 0x5d, 0x58, 0x1d, 0x43, 0x24, 0x6f, 0xc1, 0x0c, 0xab, 0xbe, 0x34, - 0x3f, 0xea, 0xd9, 0x19, 0x90, 0x24, 0x54, 0x63, 0x0d, 0x0f, 0x29, 0xc7, 0x36, 0xfe, 0x87, 0x06, - 0x8b, 0x22, 0x93, 0xf4, 0x60, 0xd7, 0x3f, 0xb6, 0x3b, 0x6f, 0x64, 0xbb, 0x93, 0x47, 0x61, 0x16, - 0xdd, 0xf9, 0xd7, 0xdd, 0x89, 0xb7, 0x53, 0x9d, 0x78, 0x2e, 0x4e, 0xaf, 0x22, 0x9b, 0x33, 0xa5, - 0x0f, 0x7f, 0x0b, 0x13, 0x8e, 0xa5, 0x11, 0xc9, 0x0f, 0xc2, 0x7c, 0xd3, 0x3d, 0x4c, 0x59, 0xf1, - 0x6e, 0x4c, 0x60, 0xfa, 0x5a, 0x8c, 0xc8, 0xd7, 0x14, 0x7f, 0x80, 0xe8, 0x1e, 0xda, 0x63, 0xbe, - 0x19, 0x09, 0xcb, 0x8b, 0xef, 0xc1, 0x72, 0x9a, 0xec, 0x69, 0xa6, 0xbe, 0x08, 0xca, 0x86, 0x81, - 0xc5, 0xbf, 0x5d, 0x04, 0x48, 0xe2, 0x59, 0xb1, 0x05, 0x98, 0x72, 0x07, 0x93, 0x17, 0xa0, 0x08, - 0x52, 0xe7, 0xb8, 0xf4, 0x12, 0xbb, 0x21, 0x2e, 0xea, 0x0a, 0x93, 0xd3, 0xdf, 0xe0, 0x95, 0xdd, - 0x7d, 0x11, 0x9b, 0xa8, 0xe7, 0xf6, 0x1d, 0xfe, 0xf6, 0xa8, 0xb8, 0xf1, 0x0e, 0x66, 0x3b, 0x8b, - 0xa1, 0xa9, 0x54, 0x23, 0x97, 0xaa, 0x23, 0xa9, 0x53, 0x04, 0xde, 0x60, 0x6f, 0xd3, 0x0f, 0x94, - 0xa8, 0x5b, 0x18, 0xd4, 0xa8, 0xca, 0x68, 0xc6, 0xc2, 0xc6, 0x95, 0x9e, 0x2e, 0x6c, 0x5c, 0x1b, - 0xe6, 0xbd, 0xc1, 0xa7, 0xee, 0x20, 0xf2, 0x83, 0x23, 0xbc, 0xb0, 0x4c, 0x6e, 0x42, 0xd8, 0xf7, - 0xea, 0xb2, 0x8c, 0x0f, 0x0d, 0x2a, 0x9f, 0x31, 0xbe, 0x3a, 0x32, 0x31, 0x30, 0x76, 0xe6, 0x99, - 0xd1, 0x67, 0x79, 0xb4, 0xa9, 0xbb, 0xa5, 0x72, 0x59, 0x9f, 0xbf, 0x5b, 0x2a, 0xcf, 0xeb, 0x40, - 0x15, 0xff, 0x83, 0xd8, 0xbf, 0x40, 0x71, 0x06, 0x48, 0x5f, 0xf4, 0x1b, 0xbf, 0x5c, 0x04, 0x32, - 0x5e, 0x0d, 0xf2, 0x25, 0x58, 0xe0, 0x32, 0xd7, 0x0e, 0xc2, 0x4f, 0xc4, 0x9b, 0x4c, 0xfe, 0x90, - 0x5a, 0x01, 0xab, 0x11, 0xdb, 0x39, 0x98, 0x86, 0x9f, 0xf4, 0xc9, 0x10, 0x4e, 0x63, 0x8f, 0x0f, - 0xdd, 0xc0, 0xf3, 0x7b, 0x36, 0xe6, 0xe3, 0x72, 0xfa, 0x38, 0x7c, 0xc5, 0x8d, 0xaf, 0xfc, 0xd9, - 0x67, 0x57, 0x9f, 0xcb, 0x29, 0x3e, 0xf9, 0xc8, 0x60, 0xdc, 0xa8, 0x36, 0x12, 0xb7, 0x39, 0x2d, - 0xd9, 0x03, 0x5d, 0x65, 0xb9, 0x3b, 0xea, 0xf7, 0xc5, 0xf8, 0xbf, 0xcf, 0x0e, 0x10, 0xd9, 0xb2, - 0x93, 0x7f, 0x6b, 0x39, 0xf9, 0xd6, 0xe6, 0xa8, 0xdf, 0x27, 0xef, 0x00, 0xf8, 0x03, 0xfb, 0xc0, - 0x0b, 0x43, 0x7e, 0x59, 0x1e, 0xbf, 0xe6, 0x4d, 0xa0, 0xea, 0x90, 0xf9, 0x83, 0x6d, 0x0e, 0x24, - 0x5f, 0x04, 0x0c, 0x07, 0x8b, 0x71, 0x92, 0x85, 0x1a, 0xc4, 0x8f, 0x19, 0x12, 0x98, 0x8e, 0x04, - 0xb8, 0xe7, 0x5a, 0xde, 0x37, 0xe4, 0xa3, 0xe7, 0xaf, 0xc1, 0xaa, 0x50, 0xa9, 0x1e, 0x78, 0xd1, - 0xbe, 0x30, 0xd5, 0x3c, 0x8b, 0x9d, 0x47, 0xb1, 0xb3, 0xfc, 0xe6, 0x0c, 0x80, 0xf9, 0xc0, 0x92, - 0x29, 0x08, 0x5e, 0x86, 0x99, 0x0e, 0x63, 0x23, 0x0c, 0xd9, 0xa8, 0xa9, 0x21, 0x5f, 0xf5, 0x1a, - 0x10, 0x31, 0xd8, 0x32, 0xa6, 0xf8, 0x3e, 0x51, 0x1a, 0xb1, 0x71, 0x19, 0xf3, 0x27, 0x8b, 0xa9, - 0x9c, 0x71, 0x02, 0x8b, 0x34, 0x00, 0x92, 0xa4, 0x00, 0xc2, 0x1c, 0xb2, 0x9a, 0x44, 0xd7, 0x16, - 0x05, 0x22, 0x17, 0x6e, 0xf2, 0x08, 0x5d, 0x9d, 0x64, 0x09, 0x1a, 0xb9, 0x07, 0xa5, 0x8e, 0x13, - 0xc7, 0x7c, 0x9b, 0x90, 0x2a, 0xe1, 0x1a, 0x6b, 0x7d, 0x2a, 0x5d, 0xc2, 0x72, 0xe4, 0xec, 0xa9, - 0xb5, 0x43, 0x26, 0xa4, 0x06, 0xb3, 0x6d, 0x27, 0x70, 0x0e, 0xc2, 0x49, 0x29, 0x76, 0x78, 0xa9, - 0xcc, 0xc4, 0x87, 0x40, 0x55, 0x19, 0xe1, 0xc5, 0xe4, 0x16, 0x14, 0x2d, 0x6b, 0x5b, 0xbc, 0xab, - 0x58, 0x4a, 0x8e, 0x21, 0x96, 0xb5, 0xcd, 0xb5, 0xe5, 0x30, 0x3c, 0x50, 0xc8, 0x18, 0x32, 0xf9, - 0x32, 0x2c, 0x28, 0xa7, 0x1b, 0x11, 0x5a, 0x1b, 0xfb, 0x40, 0x79, 0x01, 0xaf, 0x8a, 0x16, 0x05, - 0x9b, 0x34, 0x40, 0xbf, 0x37, 0x7a, 0xe4, 0x9a, 0xc3, 0x21, 0x06, 0x7a, 0xfa, 0xd4, 0x0d, 0xb8, - 0x06, 0x58, 0x4e, 0x92, 0xd8, 0xe1, 0x73, 0xd3, 0x9e, 0x2c, 0x55, 0xed, 0x28, 0x59, 0x4a, 0xd2, - 0x86, 0x55, 0xcb, 0x8d, 0x46, 0x43, 0xee, 0x06, 0xb9, 0xc9, 0xcf, 0xe1, 0x3c, 0x10, 0x37, 0xe6, - 0xfb, 0x0a, 0x59, 0xa1, 0xf4, 0x40, 0xdd, 0x1d, 0x3b, 0x8b, 0x8f, 0x13, 0x93, 0xaf, 0x67, 0x2c, - 0x06, 0x90, 0x35, 0x5a, 0xa9, 0xa5, 0x32, 0xdb, 0xc6, 0xc9, 0x0d, 0x0a, 0xff, 0x89, 0x1b, 0x14, - 0x72, 0x98, 0x90, 0x1a, 0x2c, 0xab, 0xe0, 0xd8, 0x6c, 0x82, 0x21, 0x0e, 0x52, 0x61, 0x5e, 0x53, - 0x76, 0x90, 0x0c, 0x11, 0x79, 0x02, 0xa7, 0x55, 0x88, 0xd3, 0xdf, 0x19, 0x78, 0x51, 0x98, 0x49, - 0xff, 0x9d, 0xa9, 0x02, 0xa2, 0xc8, 0xc6, 0x60, 0xc7, 0xf9, 0x29, 0x16, 0xf6, 0x88, 0x21, 0x28, - 0x1f, 0xcd, 0xfb, 0x84, 0xf1, 0x23, 0x18, 0xc3, 0x61, 0x12, 0x5f, 0x9e, 0x24, 0x12, 0x63, 0x00, - 0xa8, 0x77, 0x4e, 0x22, 0x42, 0x40, 0x3a, 0x49, 0x24, 0x82, 0x18, 0x41, 0x8d, 0x07, 0x0d, 0x50, - 0x97, 0xab, 0x88, 0x23, 0xa0, 0x12, 0x08, 0x2c, 0xe3, 0x67, 0x35, 0x75, 0xbd, 0xaa, 0xa7, 0x7f, - 0x6d, 0xda, 0xe9, 0xff, 0xf5, 0x9c, 0x4c, 0x1f, 0x68, 0xc3, 0x50, 0x32, 0x7d, 0xa8, 0xf9, 0x3d, - 0xc8, 0xcb, 0x50, 0x66, 0xb4, 0xca, 0x79, 0x81, 0xa7, 0x5b, 0xf1, 0xfb, 0x32, 0x23, 0xb7, 0x2c, - 0x36, 0xfe, 0xd7, 0x8c, 0x92, 0x97, 0x4a, 0xac, 0xb9, 0xf7, 0x01, 0xee, 0xfa, 0xde, 0x60, 0xdb, - 0x8d, 0xf6, 0xfd, 0x9e, 0x32, 0xc8, 0x0b, 0x1f, 0xfb, 0xde, 0xc0, 0x3e, 0x40, 0xf0, 0x5f, 0x7e, - 0x76, 0x55, 0x41, 0xa2, 0xca, 0xff, 0xe4, 0x0b, 0x30, 0xcf, 0x7e, 0x75, 0x12, 0xa7, 0x5d, 0x7e, - 0xb7, 0x89, 0xd4, 0x3c, 0x85, 0x74, 0x82, 0x40, 0x6e, 0x63, 0xd2, 0x74, 0x6f, 0x18, 0x29, 0xb5, - 0x95, 0x19, 0xd2, 0xbd, 0x61, 0x94, 0x0d, 0x62, 0xa1, 0x20, 0x93, 0xad, 0xb8, 0xea, 0x1d, 0x91, - 0xc7, 0x4c, 0xe4, 0x66, 0x17, 0x91, 0x30, 0xb0, 0xc8, 0x96, 0x39, 0xce, 0xd4, 0x48, 0x18, 0x19, - 0x32, 0xac, 0x84, 0xb5, 0x55, 0x15, 0xc6, 0xad, 0x19, 0xa5, 0x12, 0xe1, 0x7e, 0x4f, 0x98, 0xaa, - 0x52, 0x95, 0x88, 0x91, 0xc9, 0x06, 0xac, 0xf0, 0x63, 0x61, 0x3b, 0xf0, 0x9f, 0x1c, 0x61, 0x82, - 0xee, 0xd9, 0x64, 0x0f, 0x1b, 0x32, 0x20, 0x1e, 0x4c, 0xd5, 0xcf, 0x67, 0x08, 0xc8, 0x26, 0xcc, - 0xa0, 0xa1, 0x52, 0x3c, 0x50, 0xbd, 0xa4, 0x9a, 0xca, 0xb3, 0xf2, 0x12, 0xf7, 0x0f, 0x34, 0x92, - 0xab, 0xfb, 0x07, 0xa2, 0x92, 0xef, 0x07, 0xa8, 0x0d, 0x02, 0xbf, 0xdf, 0xc7, 0xb4, 0x7d, 0xe5, - 0x54, 0xc0, 0x1c, 0xc1, 0x07, 0xb9, 0x24, 0x48, 0x22, 0x63, 0x0c, 0xfe, 0xb6, 0x33, 0xc9, 0xfd, - 0x14, 0x5e, 0xe4, 0x0b, 0x30, 0x6b, 0x8d, 0x76, 0x77, 0xbd, 0x27, 0x42, 0x78, 0xf1, 0x8c, 0x75, - 0x08, 0x51, 0x85, 0x36, 0xc7, 0x21, 0xef, 0xc1, 0xc2, 0xce, 0xb0, 0xe7, 0x44, 0x2e, 0x5e, 0x6e, - 0x8a, 0x34, 0xa8, 0x28, 0x83, 0x46, 0x08, 0xe6, 0xef, 0x23, 0x54, 0x09, 0xac, 0xa0, 0x13, 0x0f, - 0x56, 0xb7, 0x3a, 0x9d, 0x36, 0x76, 0x8f, 0x7c, 0x65, 0x2f, 0xe2, 0xd1, 0xc8, 0x63, 0xd2, 0x58, - 0xf9, 0xc6, 0x75, 0xa6, 0x03, 0xed, 0x47, 0xd1, 0xd0, 0xe6, 0x5d, 0x2e, 0x03, 0x7c, 0xa9, 0xc2, - 0x74, 0x8c, 0xca, 0xf8, 0x0d, 0x2d, 0xe7, 0x5b, 0xe4, 0x6d, 0x98, 0x8f, 0x81, 0x6a, 0x86, 0xdf, - 0x84, 0xbd, 0xaa, 0x90, 0xc4, 0xa8, 0x6c, 0x16, 0xb1, 0x1f, 0x16, 0x27, 0x54, 0x32, 0xf2, 0x30, - 0xc2, 0x70, 0x8c, 0x52, 0x41, 0x66, 0xa7, 0xd4, 0xa6, 0xcf, 0xe9, 0x14, 0xf3, 0xf6, 0xc0, 0x1f, - 0x23, 0x92, 0x68, 0x46, 0x1d, 0x66, 0xf9, 0x36, 0x88, 0x49, 0x49, 0x45, 0xea, 0x76, 0x25, 0xa5, - 0x25, 0x4f, 0x4a, 0x2a, 0xe0, 0xe3, 0x49, 0x49, 0x15, 0x02, 0xe3, 0x1e, 0xac, 0xe5, 0x4d, 0xb5, - 0x94, 0xb1, 0x5b, 0x3b, 0xa9, 0xb1, 0xfb, 0x8f, 0x8a, 0xb0, 0x88, 0xdc, 0xa4, 0x58, 0x35, 0x61, - 0xc9, 0x1a, 0x3d, 0x8a, 0x13, 0x70, 0x48, 0x3d, 0x08, 0xeb, 0x17, 0xaa, 0x05, 0xaa, 0x77, 0x52, - 0x8a, 0x82, 0xed, 0x3c, 0x52, 0x07, 0xbb, 0x23, 0x9f, 0xd7, 0xc6, 0xf9, 0x40, 0xe5, 0xab, 0x63, - 0xf1, 0xe8, 0x46, 0xdd, 0x79, 0xd2, 0x44, 0x89, 0x26, 0x56, 0x7c, 0x1a, 0x4d, 0xac, 0x74, 0x22, - 0x4d, 0xec, 0x23, 0x58, 0x94, 0x5f, 0x43, 0x1d, 0x6a, 0xe6, 0xd9, 0x74, 0xa8, 0x14, 0x33, 0xd2, - 0x88, 0x75, 0xa9, 0xd9, 0xa9, 0xba, 0x14, 0xba, 0x7c, 0x49, 0xb9, 0x37, 0x44, 0x58, 0x8e, 0x4a, - 0xf5, 0x2c, 0xea, 0x91, 0xf1, 0x27, 0x45, 0x80, 0x3b, 0x95, 0xf6, 0x77, 0xa1, 0xdc, 0xbe, 0x05, - 0xf3, 0x0d, 0x5f, 0xba, 0x0a, 0x29, 0x3e, 0x1a, 0x7d, 0x09, 0x54, 0x17, 0x55, 0x8c, 0x19, 0x2b, - 0xa5, 0xc5, 0xcf, 0x43, 0x29, 0xbd, 0x8d, 0xb7, 0x01, 0x1f, 0xbb, 0xdd, 0xa8, 0x5e, 0x95, 0x23, - 0x8b, 0x2d, 0x97, 0x51, 0xb4, 0xd3, 0xae, 0x22, 0x0a, 0x32, 0xdb, 0x6c, 0x84, 0x17, 0xb2, 0x8c, - 0xd2, 0x25, 0xec, 0xef, 0xb8, 0xd9, 0xc8, 0x50, 0x67, 0x32, 0xf0, 0x97, 0x2a, 0xed, 0x33, 0x64, - 0x9f, 0xf3, 0x68, 0x7e, 0x35, 0x7e, 0x4e, 0x32, 0x37, 0xad, 0x87, 0x8c, 0xb1, 0x1e, 0x9a, 0xf8, - 0x88, 0xc4, 0xf8, 0x5d, 0x4d, 0xcd, 0xe4, 0xfc, 0x5d, 0x0c, 0xf5, 0xbb, 0x00, 0xb1, 0xaf, 0xa6, - 0x1c, 0xeb, 0x38, 0x40, 0x13, 0x87, 0xaa, 0xbd, 0x9c, 0xe0, 0x2a, 0xad, 0x29, 0x7e, 0x5e, 0xad, - 0xe9, 0xc0, 0x42, 0xeb, 0x71, 0xe4, 0x24, 0xce, 0xbd, 0x60, 0xc5, 0x07, 0x50, 0x14, 0x6b, 0x45, - 0xbc, 0xcc, 0x39, 0xa3, 0x9c, 0x68, 0x53, 0x87, 0xd9, 0xb2, 0x3c, 0xcc, 0x52, 0x85, 0xd0, 0xf8, - 0x2b, 0x0d, 0x56, 0xd4, 0x18, 0x93, 0x47, 0x83, 0x2e, 0xf9, 0x80, 0xe7, 0x89, 0xd3, 0x52, 0xf6, - 0x08, 0x05, 0x89, 0xc9, 0xeb, 0xa3, 0x41, 0x97, 0x9f, 0x5b, 0x9c, 0x43, 0xb5, 0xb2, 0x8c, 0x90, - 0x3c, 0x82, 0xc5, 0xb6, 0xdf, 0xef, 0xb3, 0xe5, 0x16, 0x7c, 0x2a, 0x4e, 0xf7, 0x8c, 0x51, 0xf6, - 0x22, 0x42, 0x56, 0x68, 0xe3, 0x79, 0x61, 0xd7, 0x3a, 0x37, 0x64, 0xdb, 0xb7, 0x27, 0xe8, 0x12, - 0xb6, 0xdf, 0xc2, 0xe0, 0x1b, 0x2a, 0xcf, 0x44, 0xd5, 0x48, 0x67, 0x24, 0x56, 0x6b, 0xc9, 0x8a, - 0xb1, 0x9e, 0x53, 0x54, 0x0d, 0xe3, 0xef, 0x69, 0x70, 0x6d, 0xbc, 0x69, 0x95, 0xbe, 0x3f, 0xea, - 0x75, 0x02, 0xc7, 0xeb, 0x37, 0xfc, 0xbd, 0x90, 0xe7, 0xd7, 0xda, 0x4b, 0xee, 0x35, 0x45, 0x7e, - 0xad, 0x3d, 0x2f, 0x9b, 0x5f, 0x0b, 0x63, 0xf2, 0xbc, 0x09, 0x65, 0xeb, 0xab, 0xd6, 0x57, 0x47, - 0xae, 0xb4, 0x7d, 0x71, 0xf9, 0x10, 0x7e, 0x12, 0xda, 0x9f, 0x30, 0xa0, 0xba, 0xdd, 0x48, 0x44, - 0xe3, 0x00, 0xae, 0x8c, 0x57, 0xa3, 0x76, 0xcf, 0x32, 0x47, 0x3d, 0x2f, 0xc2, 0x4a, 0x48, 0x01, - 0xa2, 0x7d, 0x0e, 0x02, 0xc4, 0xf8, 0x67, 0x45, 0x20, 0xe3, 0xdf, 0x53, 0xb7, 0x0b, 0xed, 0xff, - 0xc2, 0xc1, 0x3d, 0x23, 0xd1, 0x4b, 0x4f, 0x75, 0xe0, 0xfd, 0x04, 0xf4, 0x2e, 0x1b, 0x36, 0x3b, - 0x62, 0xe3, 0x66, 0xf7, 0xfd, 0x78, 0xf7, 0xfa, 0xbe, 0x89, 0x53, 0x38, 0x3d, 0xce, 0x5c, 0x04, - 0x66, 0x99, 0xa8, 0x1b, 0x71, 0x37, 0x3d, 0x2f, 0x3c, 0x58, 0x76, 0x1f, 0x87, 0xb6, 0xc3, 0xc6, - 0x88, 0x7f, 0x70, 0x36, 0xe5, 0x6c, 0x3d, 0x7d, 0x44, 0xb9, 0x60, 0x4c, 0x33, 0x50, 0xb7, 0x4e, - 0xf7, 0x71, 0x18, 0xe3, 0x1a, 0xdf, 0xd6, 0x60, 0x2d, 0x6f, 0x72, 0x33, 0x9d, 0x42, 0x55, 0x32, - 0xd2, 0xa7, 0x59, 0x55, 0x2f, 0xc9, 0x9c, 0x66, 0xd3, 0x44, 0xd9, 0xae, 0x2f, 0x3c, 0xd5, 0x66, - 0xfa, 0xa7, 0x45, 0x58, 0xe4, 0x2e, 0x4a, 0x5b, 0xae, 0xd3, 0x8f, 0xf6, 0xd9, 0x3c, 0x12, 0xb7, - 0x55, 0xea, 0x43, 0x16, 0x71, 0xaf, 0x95, 0xca, 0x60, 0x27, 0xee, 0xb4, 0x6e, 0x41, 0xb9, 0xcd, - 0xc4, 0x42, 0xd7, 0xef, 0xab, 0xd7, 0x1b, 0x43, 0x01, 0x53, 0x97, 0x8c, 0xc4, 0x43, 0x5d, 0x5e, - 0xbd, 0x9e, 0xe4, 0xba, 0x3c, 0x42, 0x52, 0xba, 0x3c, 0xbf, 0xa8, 0x7c, 0x02, 0xa7, 0x13, 0xaf, - 0xb3, 0xf8, 0x0a, 0xf4, 0x04, 0x6f, 0x76, 0xd7, 0xc5, 0xfd, 0xef, 0x95, 0xc4, 0x91, 0x0d, 0xef, - 0x4a, 0xb1, 0x34, 0x93, 0x0e, 0x2f, 0xef, 0x13, 0xe4, 0x1e, 0xe8, 0x09, 0x58, 0xe4, 0xe9, 0xe3, - 0x47, 0x33, 0x8c, 0xcb, 0xa9, 0xb0, 0x1d, 0x4b, 0xd9, 0x37, 0x46, 0xc8, 0xb6, 0xef, 0x04, 0x56, - 0x4b, 0x9e, 0xe7, 0x4b, 0x77, 0x88, 0x98, 0x17, 0xde, 0xbe, 0xaa, 0xdb, 0x77, 0x86, 0x8c, 0x8d, - 0x91, 0xbc, 0xb4, 0x9d, 0x4b, 0xc6, 0x48, 0x5c, 0xd7, 0xaa, 0x63, 0x24, 0xb0, 0xd6, 0x7f, 0x56, - 0x83, 0x95, 0xba, 0xb9, 0x2d, 0x72, 0xcf, 0xf3, 0x5e, 0xbd, 0x0e, 0xcf, 0xd5, 0xcd, 0x6d, 0xbb, - 0xdd, 0x6a, 0xd4, 0x2b, 0x0f, 0xed, 0xdc, 0x0c, 0xb1, 0xcf, 0xc1, 0x85, 0x71, 0x94, 0xc4, 0x41, - 0xef, 0x32, 0x9c, 0x1f, 0x2f, 0x96, 0x59, 0x64, 0xf3, 0x89, 0x65, 0xc2, 0xd9, 0xe2, 0xfa, 0x87, - 0xb0, 0x22, 0x33, 0xa6, 0x76, 0x1a, 0x16, 0x9e, 0xf0, 0x56, 0x60, 0xe1, 0x7e, 0x8d, 0xd6, 0x37, - 0x1f, 0xda, 0x9b, 0x3b, 0x8d, 0x86, 0x7e, 0x8a, 0x2c, 0xc1, 0xbc, 0x00, 0x54, 0x4c, 0x5d, 0x23, - 0x8b, 0x50, 0xae, 0x37, 0xad, 0x5a, 0x65, 0x87, 0xd6, 0xf4, 0xc2, 0xfa, 0x3f, 0xd6, 0x60, 0x89, - 0x9f, 0xd9, 0x02, 0xd1, 0xa2, 0x2b, 0x70, 0x71, 0xa7, 0x5d, 0x35, 0x3b, 0x35, 0x9a, 0xdf, 0x9c, - 0x33, 0xb0, 0x9a, 0x29, 0x6f, 0xdd, 0xd3, 0x35, 0x72, 0x09, 0xce, 0x65, 0xc0, 0xd5, 0xba, 0x65, - 0x6e, 0xf0, 0x56, 0x5c, 0x80, 0x33, 0x99, 0xc2, 0x76, 0xbd, 0xd9, 0xac, 0x55, 0xf5, 0x22, 0x6b, - 0xe0, 0xd8, 0xe7, 0x68, 0xcd, 0xac, 0x32, 0x52, 0xbd, 0xb4, 0xfe, 0x21, 0x2c, 0xb7, 0xe3, 0xd7, - 0x88, 0xe8, 0xff, 0x37, 0x07, 0x45, 0x6a, 0x3e, 0xd0, 0x4f, 0x11, 0x80, 0xd9, 0xf6, 0xbd, 0x8a, - 0x75, 0xf3, 0xa6, 0xae, 0x91, 0x05, 0x98, 0xbb, 0x53, 0x69, 0xdb, 0xf7, 0xb6, 0x2d, 0xbd, 0xc0, - 0x7e, 0x98, 0x0f, 0x2c, 0xfc, 0x51, 0x5c, 0x7f, 0x03, 0xbd, 0x5e, 0x9e, 0x1c, 0x35, 0xbc, 0x30, - 0x72, 0x07, 0x6e, 0x80, 0x7d, 0xb4, 0x08, 0x65, 0xcb, 0x65, 0x9a, 0x58, 0xe4, 0xf2, 0x0e, 0xda, - 0x1e, 0xf5, 0x23, 0x6f, 0xd8, 0x77, 0x9f, 0xe8, 0xda, 0xfa, 0x6d, 0x58, 0xa1, 0xfe, 0x88, 0x9d, - 0x20, 0xad, 0x88, 0x61, 0xec, 0x1d, 0x61, 0x9b, 0x9b, 0xe6, 0xf6, 0x46, 0xfd, 0xce, 0x4e, 0x6b, - 0xc7, 0xb2, 0xb7, 0xcd, 0x4e, 0x65, 0x8b, 0x7b, 0x1f, 0x6e, 0xb7, 0xac, 0x8e, 0x4d, 0x6b, 0x95, - 0x5a, 0xb3, 0xa3, 0x6b, 0xeb, 0x3f, 0x83, 0x77, 0x51, 0x5d, 0x7f, 0xd0, 0xdb, 0x74, 0xba, 0x91, - 0x1f, 0x60, 0x85, 0x0d, 0xb8, 0x62, 0xd5, 0x2a, 0xad, 0x66, 0xd5, 0xde, 0x34, 0x2b, 0x9d, 0x16, - 0xcd, 0x4b, 0xa1, 0x7c, 0x11, 0xce, 0xe6, 0xe0, 0xb4, 0x3a, 0x6d, 0x5d, 0x23, 0x57, 0xe1, 0x52, - 0x4e, 0xd9, 0x83, 0xda, 0x86, 0xb9, 0xd3, 0xd9, 0x6a, 0xea, 0x85, 0x09, 0xc4, 0x96, 0xd5, 0xd2, - 0x8b, 0xeb, 0xff, 0x40, 0x83, 0xe5, 0x9d, 0x50, 0x3c, 0x85, 0xde, 0x41, 0xd7, 0x83, 0x6b, 0x70, - 0x79, 0xc7, 0xaa, 0x51, 0xbb, 0xd3, 0xba, 0x57, 0x6b, 0xda, 0x3b, 0x96, 0x79, 0x27, 0x5b, 0x9b, - 0xab, 0x70, 0x49, 0xc1, 0xa0, 0xb5, 0x4a, 0xeb, 0x7e, 0x8d, 0xda, 0x6d, 0xd3, 0xb2, 0x1e, 0xb4, - 0x68, 0x55, 0xd7, 0xd8, 0x17, 0x73, 0x10, 0xb6, 0x37, 0x4d, 0x5e, 0x9b, 0x54, 0x59, 0xb3, 0xf6, - 0xc0, 0x6c, 0xd8, 0x1b, 0xad, 0x8e, 0x5e, 0x5c, 0xdf, 0x66, 0x87, 0x2b, 0x4c, 0x64, 0xca, 0x1f, - 0xac, 0x95, 0xa1, 0xd4, 0x6c, 0x35, 0x6b, 0x59, 0x9f, 0xd5, 0x45, 0x28, 0x9b, 0xed, 0x36, 0x6d, - 0xdd, 0xc7, 0xc9, 0x03, 0x30, 0x5b, 0xad, 0x35, 0xeb, 0x38, 0x5b, 0x16, 0xa1, 0xdc, 0xa6, 0xad, - 0xed, 0x56, 0xa7, 0x56, 0xd5, 0x4b, 0xeb, 0x26, 0xac, 0xf2, 0x2d, 0x41, 0x30, 0xc5, 0x0b, 0xcb, - 0x25, 0x98, 0xdf, 0x69, 0x56, 0x6b, 0x9b, 0xf5, 0x26, 0xb6, 0x65, 0x19, 0xc0, 0xda, 0x6a, 0xd1, - 0x8e, 0xdd, 0xa9, 0xd1, 0x6d, 0x9e, 0x99, 0xba, 0xd1, 0x6a, 0xde, 0xe1, 0x3f, 0x0b, 0xeb, 0x54, - 0xaa, 0x01, 0xb2, 0x5e, 0x5d, 0x9f, 0xfb, 0x98, 0x56, 0x6b, 0x9b, 0xe6, 0x4e, 0xa3, 0x23, 0x46, - 0xf9, 0xa1, 0x4d, 0x6b, 0x5f, 0xdd, 0xa9, 0x59, 0x1d, 0x4b, 0xd7, 0x88, 0x0e, 0x8b, 0xcd, 0x5a, - 0xad, 0x6a, 0xd9, 0xb4, 0x76, 0xbf, 0x5e, 0x7b, 0xa0, 0x17, 0x58, 0xb5, 0xf8, 0xff, 0xac, 0x92, - 0xeb, 0xbf, 0xa2, 0x01, 0xe1, 0x79, 0x64, 0xb7, 0xfc, 0x30, 0x62, 0xbd, 0x8f, 0x93, 0xee, 0x0a, - 0x5c, 0xdc, 0x62, 0xb3, 0x05, 0x7b, 0x67, 0xbb, 0x55, 0xcd, 0xf6, 0xfa, 0x59, 0x20, 0x99, 0xf2, - 0xd6, 0xe6, 0x26, 0xae, 0xac, 0xd3, 0x19, 0x78, 0x95, 0xb6, 0xda, 0x7a, 0xe1, 0x62, 0xa1, 0xac, - 0x91, 0x73, 0x63, 0x85, 0xf7, 0x6a, 0xb5, 0xb6, 0x5e, 0x64, 0xa3, 0x9c, 0x29, 0x90, 0xab, 0x9e, - 0x93, 0x97, 0xd6, 0x7f, 0x42, 0x83, 0xb3, 0xbc, 0x9a, 0x52, 0x84, 0xc4, 0x55, 0xbd, 0x0c, 0xe7, - 0x45, 0x76, 0xec, 0xbc, 0x8a, 0xae, 0x81, 0x9e, 0x2a, 0xe5, 0xd5, 0x3c, 0x03, 0xab, 0x29, 0x28, - 0xd6, 0xa3, 0xc0, 0x04, 0x64, 0x0a, 0xbc, 0x51, 0xb3, 0x3a, 0x76, 0x6d, 0x73, 0x93, 0x0d, 0x09, - 0x56, 0xa4, 0xb8, 0x6e, 0xc0, 0x6a, 0xc5, 0x0d, 0xa2, 0xda, 0x93, 0xc8, 0x1d, 0x84, 0x9e, 0x3f, - 0xc0, 0x2a, 0x2c, 0xc1, 0x7c, 0xed, 0xfb, 0x3b, 0xb5, 0xa6, 0x55, 0x6f, 0x35, 0xf5, 0x53, 0xeb, - 0x97, 0x33, 0x38, 0x52, 0x14, 0x58, 0xd6, 0x96, 0x7e, 0x6a, 0xdd, 0x81, 0x25, 0xf9, 0x48, 0x98, - 0x4f, 0xac, 0x2b, 0x70, 0x51, 0x4e, 0x57, 0x14, 0x2b, 0xd9, 0x26, 0x9c, 0x87, 0xb5, 0xf1, 0xf2, - 0x5a, 0x47, 0xd7, 0xd8, 0x28, 0x64, 0x4a, 0x18, 0xbc, 0xb0, 0xfe, 0x4d, 0x0d, 0x96, 0x62, 0xcf, - 0x15, 0x9c, 0x68, 0x57, 0xe1, 0xd2, 0xf6, 0xa6, 0x69, 0x57, 0x6b, 0xf7, 0xeb, 0x95, 0x9a, 0x7d, - 0xaf, 0xde, 0xac, 0x66, 0x3e, 0x72, 0x01, 0xce, 0xe4, 0x20, 0xe0, 0x57, 0xce, 0xc3, 0x5a, 0xb6, - 0xa8, 0xc3, 0x56, 0x7b, 0x81, 0x75, 0x7d, 0xb6, 0x24, 0x5e, 0xea, 0xc5, 0xf5, 0xfb, 0xb0, 0x6c, - 0x99, 0xdb, 0x8d, 0x4d, 0x3f, 0xe8, 0xba, 0xe6, 0x28, 0xda, 0x1f, 0x30, 0xb9, 0xbb, 0xd9, 0xa2, - 0x95, 0x9a, 0x8d, 0x28, 0x99, 0x1a, 0x9c, 0x86, 0x15, 0xb5, 0xf0, 0x61, 0x8d, 0x4d, 0x5f, 0x02, - 0xcb, 0x2a, 0xb0, 0xd9, 0xd2, 0x0b, 0xeb, 0x3f, 0x00, 0x8b, 0xc2, 0x9d, 0x8d, 0xf7, 0xdf, 0x39, - 0x38, 0xad, 0xfe, 0x6e, 0xbb, 0x83, 0x9e, 0x37, 0xd8, 0xd3, 0x4f, 0x65, 0x0b, 0xe8, 0x68, 0x30, - 0x60, 0x05, 0x28, 0x12, 0xd4, 0x82, 0x8e, 0x1b, 0x1c, 0x78, 0x03, 0x27, 0x72, 0x7b, 0x7a, 0x61, - 0xfd, 0x35, 0x58, 0x4a, 0x65, 0x46, 0x66, 0x03, 0xd7, 0x68, 0x09, 0x19, 0xbe, 0x5d, 0xab, 0xd6, - 0x77, 0xb6, 0xf5, 0x19, 0x26, 0x0c, 0xb6, 0xea, 0x77, 0xb6, 0x74, 0x58, 0xff, 0x79, 0x0d, 0x96, - 0xd9, 0x7a, 0xf4, 0x02, 0x77, 0x7b, 0xd3, 0x94, 0x43, 0xcd, 0xa6, 0x19, 0xcf, 0xb7, 0x5e, 0xb3, - 0x2c, 0xee, 0xed, 0x7d, 0x19, 0xce, 0x8b, 0x1f, 0xb6, 0xd9, 0xac, 0xda, 0x5b, 0x26, 0xad, 0x3e, - 0x30, 0x29, 0x9b, 0x7b, 0x0f, 0xf5, 0x02, 0x2e, 0x28, 0x05, 0x62, 0x77, 0x5a, 0x3b, 0x95, 0x2d, - 0xbd, 0xc8, 0xe6, 0x6f, 0x0a, 0xde, 0xae, 0x37, 0xf5, 0x12, 0x2e, 0xcf, 0x31, 0x6c, 0x64, 0xcb, - 0xca, 0x67, 0xd6, 0xbf, 0xa3, 0xc1, 0x39, 0xcb, 0xdb, 0x1b, 0x38, 0xd1, 0x28, 0x70, 0xcd, 0xfe, - 0x9e, 0x1f, 0x78, 0xd1, 0xfe, 0x81, 0x35, 0xf2, 0x22, 0x97, 0xbc, 0x0c, 0x2f, 0x5a, 0xf5, 0x3b, - 0x4d, 0xb3, 0xc3, 0x96, 0x97, 0xd9, 0xb8, 0xd3, 0xa2, 0xf5, 0xce, 0xd6, 0xb6, 0x6d, 0xed, 0xd4, - 0xc7, 0x66, 0xde, 0x0b, 0x70, 0x6d, 0x32, 0x6a, 0xa3, 0x76, 0xc7, 0xac, 0x3c, 0xd4, 0xb5, 0xe9, - 0x0c, 0x37, 0xcc, 0x86, 0xd9, 0xac, 0xd4, 0xaa, 0xf6, 0xfd, 0x9b, 0x7a, 0x81, 0xbc, 0x08, 0xd7, - 0x27, 0xa3, 0x6e, 0xd6, 0xdb, 0x16, 0x43, 0x2b, 0x4e, 0xff, 0xee, 0x96, 0xb5, 0xcd, 0xb0, 0x4a, - 0xeb, 0xdf, 0xd6, 0xe0, 0xfc, 0xa4, 0xfc, 0x1c, 0xe4, 0x06, 0x18, 0xb5, 0x66, 0x87, 0x9a, 0xf5, - 0xaa, 0x5d, 0xa1, 0xb5, 0x6a, 0xad, 0xd9, 0xa9, 0x9b, 0x0d, 0xcb, 0xb6, 0x5a, 0x3b, 0x6c, 0x36, - 0x25, 0x4e, 0xf9, 0xcf, 0xc3, 0xd5, 0x29, 0x78, 0xad, 0x7a, 0xb5, 0xa2, 0x6b, 0xe4, 0x26, 0xbc, - 0x3a, 0x05, 0xc9, 0x7a, 0x68, 0x75, 0x6a, 0xdb, 0x6a, 0x89, 0x5e, 0x58, 0xff, 0x6f, 0x1a, 0x3c, - 0x37, 0x35, 0xd1, 0x86, 0xca, 0xd4, 0x44, 0x15, 0xc9, 0x6e, 0xd4, 0xad, 0x8e, 0xdd, 0x7a, 0xd0, - 0xac, 0x51, 0xa5, 0xa2, 0xea, 0x78, 0x7c, 0x01, 0x5e, 0x3a, 0x9e, 0xa4, 0xdd, 0xd8, 0xb9, 0x53, - 0x67, 0x13, 0xee, 0x55, 0x78, 0xf9, 0x78, 0x6c, 0x81, 0xa1, 0x17, 0xc8, 0xbb, 0xf0, 0xc5, 0x93, - 0x32, 0xc7, 0x99, 0x26, 0x29, 0x8b, 0x28, 0x9c, 0xf3, 0x43, 0xe3, 0xb3, 0x91, 0xc4, 0x92, 0xe9, - 0x83, 0x70, 0x1d, 0x9e, 0x9b, 0x88, 0x25, 0x86, 0xe0, 0x79, 0xb8, 0x3a, 0x11, 0x85, 0x0f, 0x80, - 0x5e, 0x58, 0xff, 0x08, 0x2e, 0x4e, 0x0e, 0xcf, 0xcc, 0xf6, 0xc6, 0x74, 0x77, 0x96, 0xa1, 0x54, - 0x65, 0x3b, 0xba, 0xa6, 0x3c, 0x2c, 0xc1, 0x95, 0x48, 0x6b, 0xf5, 0xed, 0x36, 0x13, 0xfa, 0x62, - 0x23, 0xc5, 0x9d, 0xf2, 0x47, 0xb5, 0x38, 0xf5, 0x49, 0xc2, 0x33, 0xfb, 0x96, 0x85, 0xee, 0x34, - 0x9b, 0x5c, 0x2f, 0x58, 0x81, 0x85, 0x56, 0x67, 0xab, 0x46, 0xed, 0x1a, 0xa5, 0x2d, 0xaa, 0x17, - 0xd8, 0x4e, 0xbc, 0xd3, 0x64, 0x62, 0xac, 0x45, 0xeb, 0x5f, 0x43, 0x05, 0xe1, 0x3c, 0xac, 0x59, - 0x0d, 0xb3, 0x72, 0xcf, 0x6e, 0xb6, 0x3a, 0x76, 0xbd, 0x69, 0x57, 0xb6, 0xcc, 0x66, 0xb3, 0xd6, - 0xd0, 0x81, 0xed, 0x4f, 0xad, 0x7b, 0x1d, 0xd3, 0xae, 0xb4, 0x9a, 0x9b, 0xf5, 0x3b, 0x82, 0xc5, - 0x1a, 0xce, 0xf8, 0x49, 0xd1, 0x94, 0xd8, 0xe4, 0x40, 0x1a, 0x31, 0x44, 0xd6, 0xc3, 0x66, 0x45, - 0x6a, 0xa9, 0x95, 0xf1, 0x7d, 0xf1, 0x25, 0x78, 0x61, 0x2a, 0xb6, 0x54, 0xdb, 0x35, 0xb6, 0x92, - 0xa6, 0x62, 0x8a, 0xf6, 0xad, 0xff, 0x9e, 0x06, 0x97, 0xa6, 0x78, 0x5b, 0xb2, 0xe9, 0xb8, 0x55, - 0x33, 0xab, 0x0d, 0x36, 0xb3, 0x58, 0x37, 0xb0, 0x41, 0xe4, 0x4f, 0x61, 0x72, 0x77, 0xbd, 0x97, - 0xe1, 0xc5, 0xe9, 0xe8, 0x89, 0x0a, 0xf6, 0x12, 0xbc, 0x30, 0x1d, 0x55, 0xa8, 0x64, 0x05, 0xb2, - 0x0e, 0x37, 0xa6, 0x63, 0xc6, 0xaa, 0x5c, 0x71, 0xfd, 0xa7, 0x34, 0x38, 0x9b, 0x7f, 0x7f, 0xc5, - 0xea, 0x56, 0x6f, 0x5a, 0x1d, 0xb3, 0xd1, 0xb0, 0xdb, 0x26, 0x35, 0xb7, 0xed, 0x5a, 0x93, 0xb6, - 0x1a, 0x8d, 0x3c, 0xfd, 0xe3, 0x05, 0xb8, 0x36, 0x19, 0xd5, 0xaa, 0xd0, 0x7a, 0x9b, 0x6d, 0xb1, - 0x06, 0x5c, 0x99, 0x8c, 0x55, 0xab, 0x57, 0x6a, 0x7a, 0x61, 0xe3, 0xfd, 0xdf, 0xf9, 0x93, 0x2b, - 0xa7, 0x7e, 0xe7, 0x3b, 0x57, 0xb4, 0x7f, 0xf7, 0x9d, 0x2b, 0xda, 0x1f, 0x7f, 0xe7, 0x8a, 0xf6, - 0xb5, 0x57, 0xf8, 0xfb, 0x92, 0xd7, 0xba, 0xfe, 0xc1, 0xeb, 0x7b, 0x81, 0xf3, 0xa9, 0x17, 0x89, - 0x9b, 0xe7, 0xd7, 0xe5, 0xf5, 0xe3, 0xeb, 0xce, 0xd0, 0x7b, 0x1d, 0xcd, 0x1b, 0x8f, 0x66, 0xf1, - 0xb4, 0xfc, 0xe6, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0xd0, 0x04, 0xe4, 0x90, 0xdc, 0x0d, 0x02, - 0x00, + // 36086 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x6b, 0x90, 0x1c, 0x59, + 0x76, 0x18, 0x06, 0x4f, 0x55, 0xf5, 0xa3, 0xfa, 0xf4, 0xab, 0xfa, 0x76, 0x03, 0x68, 0xf4, 0x0c, + 0xa6, 0x31, 0x39, 0x33, 0x18, 0x60, 0x76, 0x06, 0x98, 0x01, 0x76, 0xb0, 0x3b, 0x8f, 0xdd, 0xd9, + 0xea, 0x07, 0x80, 0x06, 0x1a, 0x40, 0x4f, 0x56, 0x03, 0x3d, 0xcb, 0x7d, 0xe4, 0x66, 0x57, 0xdd, + 0xee, 0xce, 0x41, 0x55, 0x66, 0x6d, 0x66, 0x56, 0x03, 0xad, 0x25, 0xf5, 0xf8, 0xc4, 0xfd, 0x28, + 0x8a, 0x5e, 0xf1, 0x21, 0x52, 0xa4, 0x22, 0x4c, 0x06, 0xc3, 0x16, 0x6d, 0x59, 0x0c, 0xfa, 0x41, + 0x4a, 0xb6, 0x1c, 0xb4, 0x28, 0xd2, 0x16, 0x25, 0x59, 0x61, 0x53, 0x8c, 0x90, 0x1c, 0xb6, 0x37, + 0x18, 0xcd, 0xb0, 0x49, 0x3b, 0x64, 0x38, 0x42, 0x21, 0xf9, 0x87, 0x22, 0xbc, 0x0c, 0x87, 0x1d, + 0xf7, 0x9c, 0x7b, 0x33, 0xef, 0xcd, 0xcc, 0xea, 0xc7, 0x0c, 0x86, 0x22, 0x36, 0xf8, 0x07, 0xe8, + 0x3a, 0xf7, 0x9c, 0x73, 0x6f, 0xde, 0xe7, 0xb9, 0xe7, 0x9e, 0x07, 0xbc, 0x10, 0xf3, 0x36, 0xef, + 0x06, 0x61, 0x7c, 0xa9, 0xcd, 0xb7, 0xdd, 0xe6, 0xde, 0xa5, 0x78, 0xaf, 0xcb, 0x23, 0xfa, 0xf7, + 0x62, 0x37, 0x0c, 0xe2, 0x80, 0x0d, 0xe2, 0x8f, 0xb9, 0x99, 0xed, 0x60, 0x3b, 0x40, 0xc8, 0x25, + 0xf1, 0x17, 0x15, 0xce, 0x3d, 0xbf, 0x1d, 0x04, 0xdb, 0x6d, 0x7e, 0x09, 0x7f, 0x6d, 0xf6, 0xb6, + 0x2e, 0xb5, 0x7a, 0xa1, 0x1b, 0x7b, 0x81, 0x2f, 0xcb, 0xe7, 0xb3, 0xe5, 0xb1, 0xd7, 0xe1, 0x51, + 0xec, 0x76, 0xba, 0xfd, 0x18, 0x3c, 0x0c, 0xdd, 0x6e, 0x97, 0x87, 0xb2, 0xf6, 0xb9, 0x0b, 0x49, + 0x03, 0xdd, 0x38, 0x16, 0x94, 0x82, 0xf9, 0xa5, 0xdd, 0x37, 0xf5, 0x9f, 0x12, 0xf5, 0x6a, 0x82, + 0xda, 0x0c, 0x3a, 0xdd, 0xc0, 0xe7, 0x7e, 0xbc, 0xc5, 0xdd, 0xb8, 0x17, 0xf2, 0x48, 0x10, 0x24, + 0x40, 0x47, 0x41, 0x25, 0xdd, 0xb9, 0xe2, 0x3e, 0xe8, 0x6c, 0xb9, 0x4e, 0x8b, 0xef, 0x7a, 0x4d, + 0x2e, 0xf1, 0x5e, 0x2e, 0xc6, 0x0b, 0x79, 0x14, 0xf4, 0xc2, 0x66, 0xc2, 0xee, 0x6a, 0x9f, 0x2e, + 0x0d, 0x7b, 0x51, 0xcc, 0x5b, 0x92, 0xa5, 0x13, 0xf2, 0x6f, 0xf6, 0xbc, 0x90, 0x77, 0xb8, 0x1f, + 0x4b, 0xba, 0xd7, 0x8b, 0xe9, 0x54, 0x7f, 0x64, 0x3a, 0xc6, 0xfa, 0x85, 0x0a, 0x8c, 0xdc, 0xe2, + 0xbc, 0x5b, 0x6f, 0x7b, 0xbb, 0x9c, 0xbd, 0x08, 0x03, 0x77, 0xdc, 0x0e, 0x9f, 0x2d, 0x9d, 0x2d, + 0x9d, 0x1f, 0x59, 0x98, 0x7c, 0xbc, 0x3f, 0x3f, 0x1a, 0xf1, 0x70, 0x97, 0x87, 0x8e, 0xef, 0x76, + 0xb8, 0x8d, 0x85, 0xec, 0x33, 0x30, 0x22, 0xfe, 0x8f, 0xba, 0x6e, 0x93, 0xcf, 0x96, 0x11, 0x73, + 0xfc, 0xf1, 0xfe, 0xfc, 0x88, 0xaf, 0x80, 0x76, 0x5a, 0xce, 0x56, 0x60, 0x78, 0xf9, 0x51, 0xd7, + 0x0b, 0x79, 0x34, 0x3b, 0x70, 0xb6, 0x74, 0x7e, 0xf4, 0xf2, 0xdc, 0x45, 0x1a, 0xaa, 0x8b, 0x6a, + 0xa8, 0x2e, 0xae, 0xab, 0xb1, 0x5c, 0x98, 0xfe, 0xc7, 0xfb, 0xf3, 0xcf, 0x3c, 0xde, 0x9f, 0x1f, + 0xe6, 0x44, 0xf2, 0x13, 0xbf, 0x3f, 0x5f, 0xb2, 0x15, 0x3d, 0x7b, 0x0f, 0x06, 0xd6, 0xf7, 0xba, + 0x7c, 0x76, 0xe4, 0x6c, 0xe9, 0xfc, 0xc4, 0xe5, 0xe7, 0x2f, 0xd2, 0xec, 0x4a, 0x1a, 0x9f, 0xfe, + 0x25, 0xb0, 0x16, 0xaa, 0x8f, 0xf7, 0xe7, 0x07, 0x04, 0x8a, 0x8d, 0x54, 0xec, 0x75, 0x18, 0xba, + 0x11, 0x44, 0xf1, 0xca, 0xd2, 0x2c, 0x60, 0x93, 0x4f, 0x3c, 0xde, 0x9f, 0x9f, 0xda, 0x09, 0xa2, + 0xd8, 0xf1, 0x5a, 0xaf, 0x05, 0x1d, 0x2f, 0xe6, 0x9d, 0x6e, 0xbc, 0x67, 0x4b, 0x24, 0xeb, 0x11, + 0x8c, 0x1b, 0xfc, 0xd8, 0x28, 0x0c, 0xdf, 0xbb, 0x73, 0xeb, 0xce, 0xdd, 0x8d, 0x3b, 0xb5, 0x67, + 0x58, 0x15, 0x06, 0xee, 0xdc, 0x5d, 0x5a, 0xae, 0x95, 0xd8, 0x30, 0x54, 0xea, 0x6b, 0x6b, 0xb5, + 0x32, 0x1b, 0x83, 0xea, 0x52, 0x7d, 0xbd, 0xbe, 0x50, 0x6f, 0x2c, 0xd7, 0x2a, 0x6c, 0x1a, 0x26, + 0x37, 0x56, 0xee, 0x2c, 0xdd, 0xdd, 0x68, 0x38, 0x4b, 0xcb, 0x8d, 0x5b, 0xeb, 0x77, 0xd7, 0x6a, + 0x03, 0x6c, 0x02, 0xe0, 0xd6, 0xbd, 0x85, 0x65, 0xfb, 0xce, 0xf2, 0xfa, 0x72, 0xa3, 0x36, 0xc8, + 0x66, 0xa0, 0xa6, 0x48, 0x9c, 0xc6, 0xb2, 0x7d, 0x7f, 0x65, 0x71, 0xb9, 0x36, 0x74, 0x73, 0xa0, + 0x5a, 0xa9, 0x0d, 0xd8, 0xc3, 0xab, 0xdc, 0x8d, 0xf8, 0xca, 0x92, 0xf5, 0xef, 0x57, 0xa0, 0x7a, + 0x9b, 0xc7, 0x6e, 0xcb, 0x8d, 0x5d, 0xf6, 0x9c, 0x31, 0x3e, 0xf8, 0x89, 0xda, 0xc0, 0xbc, 0x98, + 0x1f, 0x98, 0xc1, 0xc7, 0xfb, 0xf3, 0xa5, 0xd7, 0xf5, 0x01, 0x79, 0x17, 0x46, 0x97, 0x78, 0xd4, + 0x0c, 0xbd, 0xae, 0x98, 0xf3, 0xb3, 0x15, 0x44, 0x3b, 0xfd, 0x78, 0x7f, 0xfe, 0x44, 0x2b, 0x05, + 0x6b, 0x1d, 0xa2, 0x63, 0xb3, 0x15, 0x18, 0x5a, 0x75, 0x37, 0x79, 0x3b, 0x9a, 0x1d, 0x3c, 0x5b, + 0x39, 0x3f, 0x7a, 0xf9, 0x59, 0x39, 0x08, 0xaa, 0x81, 0x17, 0xa9, 0x74, 0xd9, 0x8f, 0xc3, 0xbd, + 0x85, 0x99, 0xc7, 0xfb, 0xf3, 0xb5, 0x36, 0x02, 0xf4, 0x0e, 0x26, 0x14, 0xd6, 0x48, 0x27, 0xc6, + 0xd0, 0xa1, 0x13, 0xe3, 0xcc, 0x3f, 0xde, 0x9f, 0x2f, 0x89, 0x01, 0x93, 0x13, 0x23, 0xe5, 0x67, + 0x4e, 0x91, 0xcb, 0x50, 0xb5, 0xf9, 0xae, 0x17, 0x89, 0x2f, 0xab, 0xe2, 0x97, 0x9d, 0x7c, 0xbc, + 0x3f, 0xcf, 0x42, 0x09, 0xd3, 0x9a, 0x91, 0xe0, 0xcd, 0xbd, 0x0d, 0xa3, 0x5a, 0xab, 0x59, 0x0d, + 0x2a, 0x0f, 0xf8, 0x1e, 0xf5, 0xb0, 0x2d, 0xfe, 0x64, 0x33, 0x30, 0xb8, 0xeb, 0xb6, 0x7b, 0xb2, + 0x4b, 0x6d, 0xfa, 0xf1, 0x4e, 0xf9, 0xf3, 0xa5, 0x9b, 0x03, 0xd5, 0xe1, 0x5a, 0xd5, 0x2e, 0xaf, + 0x2c, 0x59, 0x3f, 0x35, 0x00, 0x55, 0x3b, 0xa0, 0x7d, 0x84, 0x5d, 0x80, 0xc1, 0x46, 0xec, 0xc6, + 0x6a, 0x98, 0xa6, 0x1f, 0xef, 0xcf, 0x4f, 0x8a, 0x3d, 0x86, 0x6b, 0xf5, 0x13, 0x86, 0x40, 0x5d, + 0xdb, 0x71, 0x23, 0x35, 0x5c, 0x88, 0xda, 0x15, 0x00, 0x1d, 0x15, 0x31, 0xd8, 0x39, 0x18, 0xb8, + 0x1d, 0xb4, 0xb8, 0x1c, 0x31, 0xf6, 0x78, 0x7f, 0x7e, 0xa2, 0x13, 0xb4, 0x74, 0x44, 0x2c, 0x67, + 0xaf, 0xc1, 0xc8, 0x62, 0x2f, 0x0c, 0xb9, 0x2f, 0xe6, 0xfa, 0x00, 0x22, 0x4f, 0x3c, 0xde, 0x9f, + 0x87, 0x26, 0x01, 0x1d, 0xaf, 0x65, 0xa7, 0x08, 0x62, 0x18, 0x1a, 0xb1, 0x1b, 0xc6, 0xbc, 0x35, + 0x3b, 0x78, 0xa4, 0x61, 0x10, 0xeb, 0x73, 0x2a, 0x22, 0x92, 0xec, 0x30, 0x48, 0x4e, 0xec, 0x06, + 0x8c, 0x5e, 0x0f, 0xdd, 0x26, 0x5f, 0xe3, 0xa1, 0x17, 0xb4, 0x70, 0x7c, 0x2b, 0x0b, 0xe7, 0x1e, + 0xef, 0xcf, 0x9f, 0xdc, 0x16, 0x60, 0xa7, 0x8b, 0xf0, 0x94, 0xfa, 0x7b, 0xfb, 0xf3, 0xd5, 0x25, + 0xb9, 0xe3, 0xdb, 0x3a, 0x29, 0xfb, 0x86, 0x18, 0x9c, 0x28, 0xc6, 0xae, 0xe5, 0xad, 0xd9, 0xe1, + 0x43, 0x9b, 0x68, 0xc9, 0x26, 0x9e, 0x6c, 0xbb, 0x51, 0xec, 0x84, 0x44, 0x97, 0x69, 0xa7, 0xce, + 0x92, 0xdd, 0x85, 0x6a, 0xa3, 0xb9, 0xc3, 0x5b, 0xbd, 0x36, 0xc7, 0x29, 0x33, 0x7a, 0xf9, 0x94, + 0x9c, 0xd4, 0x6a, 0x3c, 0x55, 0xf1, 0xc2, 0x9c, 0xe4, 0xcd, 0x22, 0x09, 0xd1, 0xe7, 0x93, 0xc2, + 0x7a, 0xa7, 0xfa, 0x73, 0xbf, 0x38, 0xff, 0xcc, 0x9f, 0xff, 0xbd, 0xb3, 0xcf, 0x58, 0xff, 0x45, + 0x19, 0x6a, 0x59, 0x26, 0x6c, 0x0b, 0xc6, 0xef, 0x75, 0x5b, 0x6e, 0xcc, 0x17, 0xdb, 0x1e, 0xf7, + 0xe3, 0x08, 0x27, 0xc9, 0xc1, 0xdf, 0xf4, 0x92, 0xac, 0x77, 0xb6, 0x87, 0x84, 0x4e, 0x93, 0x28, + 0x33, 0x5f, 0x65, 0xb2, 0x4d, 0xeb, 0x69, 0xe0, 0x06, 0x1e, 0xe1, 0x0c, 0x3b, 0x5e, 0x3d, 0xb4, + 0xf5, 0xf7, 0xa9, 0x47, 0xb2, 0x95, 0x13, 0xc8, 0x6f, 0x6d, 0xee, 0xe1, 0xcc, 0x3c, 0xfa, 0x04, + 0x12, 0x24, 0x05, 0x13, 0x48, 0x80, 0xad, 0x3f, 0x2c, 0xc1, 0x84, 0x2d, 0x0f, 0xc4, 0x1b, 0xdc, + 0x6d, 0xf1, 0x50, 0x4c, 0xff, 0x5b, 0x9e, 0xdf, 0x92, 0x6b, 0x0a, 0xa7, 0xff, 0x03, 0xcf, 0xd7, + 0xb7, 0x6e, 0x2c, 0x67, 0x6f, 0xc0, 0x70, 0xa3, 0xb7, 0x89, 0xa8, 0xe5, 0x74, 0x07, 0x88, 0x7a, + 0x9b, 0x4e, 0x06, 0x5d, 0xa1, 0xb1, 0x4b, 0x30, 0x7c, 0x9f, 0x87, 0x51, 0xba, 0x1b, 0xe2, 0xd1, + 0xb0, 0x4b, 0x20, 0x9d, 0x40, 0x62, 0xb1, 0xeb, 0xe9, 0x8e, 0x2c, 0x0f, 0xb5, 0xc9, 0xcc, 0x3e, + 0x98, 0x4e, 0x95, 0x8e, 0x84, 0xe8, 0x53, 0x45, 0x61, 0x59, 0xff, 0xb2, 0x0c, 0xb5, 0x25, 0x37, + 0x76, 0x37, 0xdd, 0x48, 0xf6, 0xe7, 0xfd, 0x2b, 0x62, 0x8f, 0xd7, 0x3e, 0x14, 0xf7, 0x78, 0xd1, + 0xf2, 0x8f, 0xfd, 0x79, 0x2f, 0x67, 0x3f, 0x6f, 0x54, 0x9c, 0xb0, 0xf2, 0xf3, 0xd2, 0x8f, 0xfa, + 0xc2, 0xe1, 0x1f, 0x55, 0x93, 0x1f, 0x55, 0x55, 0x1f, 0x95, 0x7e, 0x0a, 0xfb, 0x02, 0x0c, 0x34, + 0xba, 0xbc, 0x29, 0x37, 0x11, 0x75, 0x2e, 0x98, 0x1f, 0x27, 0x10, 0xee, 0x5f, 0x59, 0x18, 0x93, + 0x6c, 0x06, 0xa2, 0x2e, 0x6f, 0xda, 0x48, 0xc6, 0x96, 0x61, 0x48, 0x6c, 0x88, 0x3d, 0x75, 0x18, + 0x9c, 0x29, 0x66, 0x80, 0x28, 0xf7, 0xaf, 0x2c, 0x4c, 0x48, 0x16, 0x43, 0x11, 0x42, 0x6c, 0x49, + 0x2c, 0xb6, 0xea, 0xa8, 0x19, 0x74, 0x39, 0x6e, 0x14, 0x23, 0x36, 0xfd, 0xd0, 0x56, 0xe4, 0xbf, + 0xa9, 0xc0, 0x4c, 0x51, 0x9b, 0xf4, 0x4e, 0x1a, 0x3a, 0xa0, 0x93, 0xce, 0x43, 0x55, 0xc8, 0x07, + 0xe2, 0xcc, 0xa5, 0x2a, 0x16, 0xc6, 0x44, 0x7f, 0xec, 0x48, 0x98, 0x9d, 0x94, 0xb2, 0x17, 0x13, + 0x71, 0xa3, 0x9a, 0xf2, 0x93, 0xe2, 0x86, 0x12, 0x32, 0xc4, 0x44, 0x52, 0xfb, 0x03, 0x4a, 0x25, + 0x69, 0x9f, 0x2b, 0x70, 0x3a, 0x91, 0x42, 0x09, 0x31, 0xce, 0x30, 0x75, 0xe2, 0x2c, 0x43, 0x55, + 0x7d, 0xd6, 0xec, 0x18, 0x32, 0x9a, 0xca, 0x74, 0xe0, 0xfd, 0x2b, 0x34, 0x53, 0x5a, 0xf2, 0xb7, + 0xce, 0x46, 0xe1, 0xb0, 0x2b, 0x50, 0x5d, 0x0b, 0x83, 0x47, 0x7b, 0x2b, 0x4b, 0xd1, 0xec, 0xf8, + 0xd9, 0xca, 0xf9, 0x91, 0x85, 0x53, 0x8f, 0xf7, 0xe7, 0xa7, 0xbb, 0x02, 0xe6, 0x78, 0x2d, 0xfd, + 0x18, 0x4f, 0x10, 0xd9, 0x3c, 0x8c, 0x86, 0xbc, 0xed, 0xee, 0x39, 0xdb, 0x61, 0xd0, 0xeb, 0xce, + 0x4e, 0x60, 0xcf, 0x03, 0x82, 0xae, 0x0b, 0x08, 0x7b, 0x16, 0x46, 0x08, 0xc1, 0x6b, 0x45, 0xb3, + 0x93, 0x82, 0xad, 0x5d, 0x45, 0xc0, 0x4a, 0x2b, 0xba, 0x39, 0x50, 0x2d, 0xd5, 0xca, 0x37, 0x07, + 0xaa, 0xe5, 0x5a, 0x85, 0x24, 0x9f, 0x9b, 0x03, 0xd5, 0x81, 0xda, 0xe0, 0xcd, 0x81, 0xea, 0x20, + 0xca, 0x42, 0x23, 0x35, 0xb8, 0x39, 0x50, 0x1d, 0xad, 0x8d, 0x19, 0x82, 0x08, 0x56, 0x1f, 0x07, + 0xcd, 0xa0, 0x6d, 0x57, 0xee, 0xd9, 0x2b, 0xf6, 0xd0, 0x62, 0x7d, 0x91, 0x87, 0xb1, 0x5d, 0xa9, + 0x6f, 0x34, 0xec, 0xf1, 0xa5, 0x3d, 0xdf, 0xed, 0x78, 0x4d, 0x3a, 0xd5, 0xed, 0xca, 0xf5, 0xc5, + 0x35, 0xcb, 0x87, 0x93, 0xc5, 0x53, 0x89, 0xad, 0xc3, 0xd8, 0xba, 0x1b, 0x6e, 0xf3, 0xf8, 0x06, + 0x77, 0xdb, 0xf1, 0x0e, 0xb6, 0x7f, 0xf4, 0xf2, 0xb4, 0xec, 0x3e, 0xbd, 0x68, 0xe1, 0xd9, 0xc7, + 0xfb, 0xf3, 0xa7, 0x62, 0x84, 0x38, 0x3b, 0x08, 0xd2, 0x3a, 0xc4, 0xe0, 0x62, 0xd5, 0x61, 0x22, + 0xed, 0xf9, 0x55, 0x2f, 0x8a, 0xd9, 0x25, 0x18, 0x51, 0x10, 0xb1, 0xe7, 0x57, 0x0a, 0xc7, 0xc8, + 0x4e, 0x71, 0xac, 0x7f, 0x58, 0x06, 0x48, 0x4b, 0x9e, 0xd2, 0x6d, 0xe1, 0x73, 0xc6, 0xb6, 0x70, + 0x22, 0xbb, 0xaa, 0xfb, 0x6f, 0x08, 0xef, 0x67, 0x36, 0x84, 0x53, 0x59, 0xd2, 0x43, 0xb6, 0x02, + 0x6d, 0xd1, 0xff, 0xc2, 0x70, 0x3a, 0x18, 0x72, 0xb9, 0x9f, 0x87, 0x64, 0x02, 0xc9, 0x0e, 0xc5, + 0x75, 0xdc, 0x55, 0x93, 0x2a, 0x29, 0x65, 0xa7, 0x41, 0x4c, 0x30, 0xd9, 0xa9, 0xc3, 0x8f, 0xf7, + 0xe7, 0x2b, 0xbd, 0xd0, 0xc3, 0x49, 0xc7, 0x2e, 0x81, 0x9c, 0x76, 0xb2, 0x03, 0xc5, 0x5a, 0x99, + 0x6a, 0xba, 0x4e, 0x93, 0x87, 0x71, 0xda, 0xe3, 0xb3, 0x25, 0x35, 0x3b, 0x59, 0x17, 0xcc, 0xa9, + 0x39, 0x3b, 0x80, 0xd3, 0xe0, 0x7c, 0x61, 0xaf, 0x5c, 0x34, 0x50, 0x49, 0xa2, 0x3e, 0xab, 0x0e, + 0xe8, 0x16, 0x95, 0x39, 0x39, 0xe9, 0xda, 0xac, 0x80, 0x5d, 0x01, 0xb1, 0x22, 0x64, 0xef, 0x83, + 0xac, 0xa7, 0xbe, 0xd1, 0x58, 0x38, 0x21, 0x39, 0x8d, 0xbb, 0x0f, 0x75, 0x72, 0x81, 0xcd, 0xde, + 0x05, 0xb1, 0x64, 0x64, 0xbf, 0x33, 0x49, 0x74, 0x7d, 0x71, 0x6d, 0xb1, 0x1d, 0xf4, 0x5a, 0x8d, + 0x0f, 0x56, 0x53, 0xe2, 0xed, 0x66, 0x57, 0x27, 0xbe, 0xbe, 0xb8, 0xc6, 0xde, 0x85, 0xc1, 0xfa, + 0x9f, 0xe9, 0x85, 0x5c, 0x8a, 0x6a, 0x63, 0xaa, 0x4e, 0x01, 0x5b, 0x38, 0x25, 0x09, 0x27, 0x5d, + 0xf1, 0x53, 0x17, 0x71, 0xb1, 0x5c, 0xd4, 0xbc, 0xbe, 0xda, 0x90, 0x62, 0x18, 0xcb, 0x74, 0xcb, + 0xfa, 0xaa, 0xd6, 0xec, 0xd8, 0xf8, 0x6a, 0x41, 0xc5, 0x2e, 0x41, 0xb9, 0xbe, 0x84, 0x97, 0xc3, + 0xd1, 0xcb, 0x23, 0xaa, 0xda, 0xa5, 0x85, 0x19, 0x49, 0x32, 0xe6, 0xea, 0xcb, 0xa0, 0x5c, 0x5f, + 0x62, 0x0b, 0x30, 0x78, 0x7b, 0xaf, 0xf1, 0xc1, 0xaa, 0xdc, 0x7a, 0xd5, 0x92, 0x47, 0xd8, 0x5d, + 0xdc, 0x66, 0xa2, 0xb4, 0xc5, 0x9d, 0xbd, 0xe8, 0x9b, 0x6d, 0xbd, 0xc5, 0x88, 0xc6, 0xd6, 0x60, + 0xa4, 0xde, 0xea, 0x78, 0xfe, 0xbd, 0x88, 0x87, 0xb3, 0xa3, 0xc8, 0x67, 0x36, 0xd3, 0xee, 0xa4, + 0x7c, 0x61, 0xf6, 0xf1, 0xfe, 0xfc, 0x8c, 0x2b, 0x7e, 0x3a, 0xbd, 0x88, 0x87, 0x1a, 0xb7, 0x94, + 0x09, 0x5b, 0x03, 0xb8, 0x1d, 0xf8, 0xdb, 0x41, 0x3d, 0x6e, 0xbb, 0x51, 0x66, 0x33, 0x4f, 0x0b, + 0x12, 0x49, 0xea, 0x44, 0x47, 0xc0, 0x1c, 0x57, 0x00, 0x35, 0x86, 0x1a, 0x0f, 0x76, 0x0d, 0x86, + 0xee, 0x86, 0x6e, 0xb3, 0xcd, 0x67, 0xc7, 0x91, 0xdb, 0x8c, 0xe4, 0x46, 0x40, 0xf5, 0xa5, 0xb3, + 0x92, 0x61, 0x2d, 0x40, 0xb0, 0x7e, 0x63, 0x23, 0xc4, 0xb9, 0x0d, 0x60, 0xf9, 0x39, 0x59, 0x70, + 0x5f, 0xfa, 0x8c, 0x7e, 0x5f, 0x4a, 0x17, 0xfd, 0x62, 0xd0, 0xe9, 0xb8, 0x7e, 0x0b, 0x69, 0xef, + 0x5f, 0xd6, 0xae, 0x51, 0xd6, 0x37, 0x61, 0x2a, 0xd7, 0x59, 0x87, 0x5c, 0x75, 0xbf, 0x08, 0x93, + 0x4b, 0x7c, 0xcb, 0xed, 0xb5, 0xe3, 0xe4, 0xdc, 0xa3, 0x25, 0x8a, 0x97, 0xce, 0x16, 0x15, 0x39, + 0xea, 0xb0, 0xb3, 0xb3, 0xc8, 0xd6, 0x3f, 0x2d, 0xc1, 0xb8, 0xf1, 0xfd, 0xec, 0x2a, 0x8c, 0xd4, + 0x7b, 0x2d, 0x2f, 0xc6, 0x91, 0xa4, 0x4a, 0x69, 0xbc, 0x04, 0x30, 0x3f, 0x5e, 0x0a, 0x95, 0xbd, + 0x0d, 0x60, 0xf3, 0x38, 0xdc, 0x5b, 0x0c, 0x7a, 0x7e, 0x8c, 0x8d, 0x18, 0xa4, 0xeb, 0x74, 0x28, + 0xa0, 0x4e, 0x53, 0x80, 0xf5, 0x81, 0x49, 0x91, 0xd9, 0x2d, 0xa8, 0x35, 0x76, 0x7a, 0x5b, 0x5b, + 0x6d, 0xae, 0xc4, 0x86, 0x08, 0xb7, 0x92, 0xea, 0xc2, 0xfc, 0xe3, 0xfd, 0xf9, 0x67, 0x23, 0x2a, + 0x73, 0x94, 0x74, 0xa1, 0x8f, 0x6f, 0x8e, 0xd0, 0xfa, 0x1b, 0xba, 0x2c, 0xa9, 0x0e, 0xb7, 0xd7, + 0x93, 0x2d, 0xaa, 0x94, 0x4a, 0xb6, 0xb9, 0x2d, 0x2a, 0xd9, 0xa0, 0x2e, 0xd0, 0x76, 0x51, 0xce, + 0x6d, 0x17, 0xa3, 0x72, 0x72, 0x54, 0xdc, 0x87, 0x11, 0x6d, 0x12, 0xc9, 0xe2, 0xa9, 0x7c, 0xfc, + 0xc5, 0xf3, 0x3e, 0x8c, 0xdd, 0x76, 0x7d, 0x77, 0x9b, 0xb7, 0x44, 0x4f, 0xd2, 0x76, 0x38, 0x42, + 0xa7, 0x6c, 0x87, 0xe0, 0xd8, 0xef, 0xfa, 0x77, 0x1b, 0x04, 0xec, 0x4d, 0xb5, 0xd9, 0x0c, 0x16, + 0x6c, 0x36, 0xe3, 0xb2, 0xf6, 0x41, 0xdc, 0x6c, 0xe4, 0x16, 0x63, 0xfd, 0x06, 0xe0, 0x37, 0xb2, + 0xd7, 0x60, 0xc8, 0xe6, 0xdb, 0xe2, 0xf4, 0x2b, 0xa5, 0xf3, 0x26, 0x44, 0x88, 0xde, 0x31, 0x84, + 0x83, 0x82, 0x1a, 0x6f, 0x45, 0x3b, 0xde, 0x56, 0x2c, 0x7b, 0x27, 0x11, 0xd4, 0x24, 0x58, 0x13, + 0xd4, 0x24, 0xc4, 0x54, 0x36, 0x10, 0x4c, 0x6c, 0xc8, 0xf6, 0x52, 0x43, 0x76, 0x9a, 0xea, 0x61, + 0x7b, 0x49, 0xdb, 0xd9, 0x42, 0x43, 0xcc, 0x12, 0xd8, 0x38, 0x35, 0x9b, 0x38, 0x91, 0x92, 0x1b, + 0x3d, 0x4d, 0x4d, 0x02, 0x9a, 0x0a, 0xac, 0x14, 0x95, 0x35, 0x60, 0x74, 0x59, 0x5c, 0x83, 0xbd, + 0x45, 0xb7, 0xb9, 0xa3, 0x3a, 0x49, 0x6d, 0xab, 0x5a, 0x49, 0xba, 0x99, 0x70, 0x04, 0x36, 0x05, + 0x50, 0x57, 0x01, 0x69, 0xb8, 0x6c, 0x1d, 0x46, 0x1b, 0xbc, 0x19, 0xf2, 0xb8, 0x11, 0x07, 0x21, + 0xcf, 0x9c, 0x12, 0x5a, 0xc9, 0xc2, 0xf3, 0xea, 0x26, 0x1e, 0x21, 0xd0, 0x89, 0x04, 0x54, 0xe7, + 0xaa, 0x21, 0xd3, 0x95, 0xaa, 0x13, 0x84, 0x7b, 0x4b, 0x0b, 0xf2, 0xe4, 0x48, 0xc5, 0x0c, 0x02, + 0xeb, 0x57, 0x2a, 0x01, 0x69, 0x6d, 0x9a, 0x57, 0x2a, 0xc2, 0xc2, 0x91, 0x5a, 0x6a, 0xa0, 0x70, + 0x2a, 0xcf, 0x91, 0xc9, 0xb4, 0x97, 0x11, 0xac, 0x8d, 0x54, 0x2b, 0x42, 0xd1, 0xd6, 0x18, 0x29, + 0x89, 0xc5, 0xba, 0xc0, 0xd4, 0xa8, 0x91, 0xc4, 0xd8, 0xe6, 0x51, 0x24, 0x8f, 0x97, 0xd3, 0x99, + 0xc1, 0x4f, 0x11, 0x16, 0x5e, 0x96, 0xcc, 0xcf, 0xa8, 0x69, 0x20, 0x6f, 0xd1, 0xa2, 0x50, 0xab, + 0xa7, 0x80, 0xb7, 0xd8, 0x49, 0x96, 0x1f, 0xc5, 0x3c, 0xf4, 0xdd, 0x76, 0xa2, 0xa5, 0xc4, 0x9d, + 0x84, 0x4b, 0xa8, 0x39, 0xd0, 0x1a, 0x32, 0x5b, 0x84, 0xf1, 0x7a, 0x14, 0xf5, 0x3a, 0xdc, 0x0e, + 0xda, 0xbc, 0x6e, 0xdf, 0xc1, 0xa3, 0x68, 0x64, 0xe1, 0xcc, 0xe3, 0xfd, 0xf9, 0xd3, 0x2e, 0x16, + 0x38, 0x61, 0xd0, 0xe6, 0x8e, 0x1b, 0xea, 0xb3, 0xdb, 0xa4, 0x61, 0x77, 0x01, 0xee, 0x76, 0xb9, + 0xdf, 0xe0, 0x6e, 0xd8, 0xdc, 0xc9, 0x9c, 0x3c, 0x69, 0xc1, 0xc2, 0x73, 0xf2, 0x0b, 0x67, 0x82, + 0x2e, 0xf7, 0x23, 0x84, 0xe9, 0xad, 0x4a, 0x31, 0xd9, 0x06, 0x4c, 0xae, 0xd4, 0x6f, 0xaf, 0x05, + 0x6d, 0xaf, 0xb9, 0x27, 0x85, 0xb9, 0x09, 0xd4, 0xdd, 0x9e, 0x94, 0x5c, 0x33, 0xa5, 0xb4, 0x3d, + 0x79, 0x6e, 0xc7, 0xe9, 0x22, 0xd4, 0x91, 0x22, 0x5d, 0x96, 0x0b, 0xfb, 0xb2, 0x98, 0x83, 0x91, + 0x90, 0x4f, 0xd7, 0xdd, 0x6d, 0xba, 0x53, 0xa4, 0x77, 0xce, 0xfa, 0x46, 0xe3, 0xa2, 0x56, 0x4a, + 0x92, 0xd3, 0x1c, 0x4d, 0x44, 0x84, 0x3a, 0xb1, 0xbb, 0x1d, 0x99, 0x13, 0x31, 0xc1, 0x66, 0x37, + 0x01, 0x96, 0x82, 0x66, 0xaf, 0xc3, 0xfd, 0x78, 0x69, 0x61, 0xb6, 0x66, 0xde, 0xa5, 0x92, 0x82, + 0x74, 0x6b, 0x6b, 0x05, 0x4d, 0x63, 0x26, 0x6a, 0xd4, 0xec, 0x07, 0xe1, 0x84, 0xb6, 0x72, 0xb4, + 0x59, 0x34, 0x85, 0x6c, 0x9f, 0xcb, 0xaf, 0x44, 0x6d, 0x22, 0x9d, 0x97, 0x35, 0x9c, 0xd5, 0xd6, + 0x64, 0xf1, 0x5c, 0x2a, 0xae, 0x64, 0xee, 0x8b, 0x50, 0xcb, 0x76, 0xc3, 0x31, 0x95, 0x9b, 0xe3, + 0xb5, 0x09, 0xad, 0xef, 0x97, 0x1f, 0x79, 0x51, 0x1c, 0x59, 0xdf, 0x32, 0xd6, 0xbf, 0xd8, 0x9b, + 0x6e, 0xf1, 0xbd, 0xb5, 0x90, 0x6f, 0x79, 0x8f, 0xf4, 0x63, 0xf3, 0x01, 0xdf, 0x73, 0xba, 0x08, + 0xd5, 0xf7, 0xa6, 0x04, 0x95, 0x7d, 0x16, 0xaa, 0xb7, 0x6e, 0x37, 0x6e, 0xf1, 0xbd, 0x95, 0x25, + 0x79, 0x72, 0x13, 0x59, 0x27, 0x72, 0x04, 0xa9, 0x31, 0xd3, 0x13, 0x4c, 0x6b, 0x21, 0xdd, 0x87, + 0x45, 0xcd, 0x8b, 0xed, 0x5e, 0x14, 0xf3, 0x70, 0x65, 0x49, 0xaf, 0xb9, 0x49, 0xc0, 0xcc, 0xae, + 0x98, 0xa0, 0x5a, 0xff, 0x6f, 0x19, 0xf7, 0x60, 0xb1, 0xdc, 0x56, 0xfc, 0x28, 0x76, 0xfd, 0x26, + 0x4f, 0x18, 0xe0, 0x72, 0xf3, 0x24, 0x34, 0xb3, 0xdc, 0x52, 0x64, 0xb3, 0xea, 0xf2, 0x91, 0xab, + 0x26, 0x59, 0x81, 0xb4, 0x5a, 0x2b, 0x4b, 0xba, 0xea, 0x5d, 0x3d, 0xfe, 0x64, 0xaa, 0x4c, 0x91, + 0xd9, 0x39, 0x18, 0x5e, 0xa9, 0xdf, 0xae, 0xf7, 0xe2, 0x1d, 0x3c, 0x01, 0xaa, 0x74, 0x61, 0x11, + 0x6b, 0xc5, 0xed, 0xc5, 0x3b, 0xb6, 0x2a, 0x64, 0x97, 0xf0, 0x22, 0xe8, 0xf3, 0x98, 0x54, 0xf4, + 0xf2, 0xc8, 0x8f, 0x08, 0x94, 0xb9, 0x07, 0x0a, 0x10, 0x7b, 0x15, 0x06, 0xef, 0xaf, 0x2d, 0xae, + 0x2c, 0x49, 0xbd, 0x07, 0x9e, 0x83, 0xbb, 0xdd, 0xa6, 0xd9, 0x12, 0x42, 0x61, 0xcb, 0x30, 0xd1, + 0xe0, 0xcd, 0x5e, 0xe8, 0xc5, 0x74, 0xb5, 0x8f, 0x66, 0x87, 0xb1, 0x0e, 0xdc, 0x67, 0x22, 0x59, + 0x42, 0x7a, 0x00, 0xbd, 0xae, 0x0c, 0x91, 0xf5, 0x5b, 0xa5, 0x74, 0x93, 0x66, 0xe7, 0x0c, 0x39, + 0x0f, 0xf5, 0x7a, 0x42, 0xa0, 0xd1, 0xf5, 0x7a, 0x28, 0xf1, 0xd9, 0xc0, 0x16, 0x7b, 0x51, 0x1c, + 0x74, 0x96, 0xfd, 0x56, 0x37, 0xf0, 0xfc, 0x18, 0xa9, 0xa8, 0xf3, 0xad, 0xc7, 0xfb, 0xf3, 0xcf, + 0x37, 0xb1, 0xd4, 0xe1, 0xb2, 0xd8, 0xc9, 0x70, 0x29, 0xa0, 0xfe, 0x04, 0xe3, 0x61, 0xfd, 0x93, + 0xb2, 0x71, 0xb8, 0x8a, 0xe6, 0xd9, 0xbc, 0xdb, 0xf6, 0x9a, 0xa8, 0x90, 0xc1, 0x0f, 0x4d, 0x66, + 0x15, 0x36, 0x2f, 0x4c, 0x4b, 0xa9, 0x87, 0x4c, 0xde, 0x05, 0xd4, 0xec, 0x4b, 0x30, 0x26, 0xe4, + 0x1c, 0xf9, 0x33, 0x9a, 0x2d, 0x63, 0x67, 0x3f, 0x87, 0x1a, 0xda, 0x88, 0x87, 0x09, 0x1b, 0x43, + 0x40, 0xd2, 0x29, 0x58, 0x0b, 0x66, 0xd7, 0x43, 0xd7, 0x8f, 0xbc, 0x78, 0xd9, 0x6f, 0x86, 0x7b, + 0x28, 0x97, 0x2d, 0xfb, 0xee, 0x66, 0x9b, 0xb7, 0xa4, 0xa4, 0x79, 0xfe, 0xf1, 0xfe, 0xfc, 0x4b, + 0x31, 0xe1, 0x38, 0x3c, 0x41, 0x72, 0x38, 0x61, 0x69, 0x9c, 0xfb, 0x72, 0x12, 0x72, 0x9c, 0xea, + 0x56, 0x7c, 0xa0, 0x23, 0x11, 0x05, 0xe5, 0xb8, 0x64, 0x34, 0xc4, 0x56, 0xa7, 0x37, 0x53, 0x27, + 0xb0, 0xee, 0xf6, 0xd9, 0x28, 0x71, 0xa1, 0x09, 0x90, 0x36, 0x43, 0x68, 0xa1, 0xe1, 0x6e, 0x98, + 0x19, 0xe1, 0x14, 0xd5, 0xfa, 0x37, 0xa5, 0x54, 0x9e, 0x60, 0xef, 0xc1, 0xa8, 0x5c, 0x82, 0x1a, + 0x1b, 0x3c, 0x10, 0xd4, 0x7a, 0xcd, 0x30, 0xd2, 0xd1, 0xd9, 0x1b, 0x30, 0x5c, 0x5f, 0x5c, 0xd5, + 0x26, 0x1b, 0x6a, 0x56, 0xdc, 0x66, 0x3b, 0x4b, 0xa5, 0xd0, 0xc4, 0xac, 0x5a, 0x5f, 0x6d, 0x98, + 0xdd, 0x8c, 0xb3, 0x2a, 0x6e, 0x47, 0x05, 0xfd, 0xaa, 0x21, 0x7f, 0xf2, 0x9e, 0xfc, 0x1f, 0x4b, + 0x45, 0x62, 0x0b, 0x5b, 0x80, 0xf1, 0x8d, 0x20, 0x7c, 0x80, 0x13, 0x46, 0xeb, 0x04, 0x9c, 0x4a, + 0x0f, 0x55, 0x41, 0xf6, 0x83, 0x4c, 0x12, 0xbd, 0x6d, 0x5a, 0x6f, 0x98, 0x6d, 0xcb, 0x70, 0x30, + 0x08, 0xc4, 0x38, 0x24, 0x1c, 0x93, 0xe5, 0x86, 0xe3, 0x90, 0x36, 0xc1, 0x58, 0x13, 0x3a, 0xba, + 0xf5, 0xf7, 0x4a, 0xba, 0x78, 0x22, 0x3a, 0x79, 0x29, 0xe8, 0xb8, 0x9e, 0xaf, 0x7d, 0x0e, 0xbd, + 0x62, 0x22, 0x34, 0xdb, 0x12, 0x0d, 0x99, 0x5d, 0x81, 0x2a, 0xfd, 0x4a, 0x36, 0x6f, 0xd4, 0x72, + 0x4a, 0x42, 0xf3, 0xe4, 0x51, 0x88, 0xb9, 0x91, 0xa9, 0x1c, 0x77, 0x64, 0x7e, 0xb3, 0xa4, 0x4b, + 0x16, 0x1f, 0xf7, 0xf4, 0xca, 0x9c, 0x5a, 0xe5, 0xe3, 0x9c, 0x5a, 0x9f, 0xf8, 0x13, 0x7e, 0xbb, + 0x04, 0xa3, 0x9a, 0x1e, 0x48, 0x7c, 0xc3, 0x5a, 0x18, 0x7c, 0xc4, 0x9b, 0xb1, 0xf9, 0x0d, 0x5d, + 0x02, 0x66, 0xbe, 0x21, 0x41, 0xfd, 0x24, 0xdf, 0xb0, 0x08, 0xc3, 0xf5, 0x76, 0x3b, 0x10, 0xd7, + 0x04, 0xba, 0x43, 0x4d, 0x28, 0xa9, 0x8f, 0xa0, 0x0b, 0xa7, 0xd5, 0x0b, 0x93, 0x2b, 0x00, 0x86, + 0x68, 0xa6, 0x28, 0xad, 0x9f, 0x2d, 0x25, 0x5c, 0x72, 0x9d, 0x52, 0x3a, 0x66, 0xa7, 0x88, 0x4b, + 0xbc, 0xfa, 0x7d, 0x77, 0x97, 0x87, 0xa1, 0xd7, 0x52, 0x4b, 0x03, 0x2f, 0xf1, 0x09, 0x93, 0x40, + 0x16, 0xea, 0x97, 0xf8, 0x2c, 0xa1, 0xf5, 0xaf, 0x4b, 0xf2, 0x46, 0x7b, 0xe4, 0x63, 0xd1, 0x3c, + 0xc2, 0xca, 0xc7, 0x11, 0x29, 0xbe, 0x04, 0x83, 0x36, 0x6f, 0x79, 0x91, 0xec, 0xc9, 0x29, 0xfd, + 0xf6, 0x8c, 0x05, 0xa9, 0x94, 0x1b, 0x8a, 0x9f, 0xba, 0x3c, 0x80, 0xe5, 0xe2, 0xda, 0xb1, 0x12, + 0x5d, 0x6b, 0xf3, 0x47, 0x1e, 0xed, 0x35, 0x52, 0x34, 0x41, 0x71, 0xc0, 0x8b, 0x9c, 0x2d, 0x51, + 0x22, 0x65, 0x56, 0x7d, 0x5f, 0x31, 0x68, 0xac, 0x2f, 0x03, 0xa4, 0x55, 0x8a, 0xee, 0x94, 0x93, + 0xdd, 0xf3, 0xb7, 0x49, 0xf0, 0x94, 0x7d, 0x80, 0xdd, 0xd9, 0x4c, 0xca, 0xe4, 0x1d, 0x41, 0xef, + 0xce, 0x2c, 0xa1, 0xf5, 0xbf, 0x57, 0xa0, 0x5c, 0xc7, 0xf9, 0x76, 0x8b, 0xef, 0xc5, 0xee, 0xe6, + 0x35, 0xaf, 0x6d, 0xec, 0x15, 0x0f, 0x10, 0xea, 0x6c, 0x79, 0x86, 0xbe, 0x4b, 0x43, 0x16, 0x7b, + 0xc5, 0xad, 0x70, 0xf3, 0x2d, 0x24, 0xd4, 0xf6, 0x8a, 0x07, 0xe1, 0xe6, 0x5b, 0x59, 0xb2, 0x04, + 0x91, 0x59, 0x30, 0x44, 0xfb, 0x86, 0x5c, 0x62, 0xf0, 0x78, 0x7f, 0x7e, 0x88, 0xb6, 0x17, 0x5b, + 0x96, 0xb0, 0xd3, 0x50, 0x69, 0xac, 0xdd, 0x91, 0x1b, 0x3c, 0xea, 0x95, 0xa3, 0xae, 0x6f, 0x0b, + 0x98, 0xa8, 0x73, 0x75, 0xa9, 0xbe, 0x86, 0x6a, 0x9b, 0xc1, 0xb4, 0xce, 0x76, 0xcb, 0xed, 0x66, + 0x15, 0x37, 0x09, 0x22, 0xfb, 0x02, 0x8c, 0xde, 0x5a, 0x5a, 0xbc, 0x11, 0x44, 0xb4, 0x39, 0x0f, + 0xa5, 0xd3, 0xf8, 0x41, 0xab, 0x89, 0x2a, 0xa4, 0xdc, 0x29, 0xa7, 0xe1, 0x33, 0x07, 0x4e, 0x0a, + 0x56, 0x62, 0x48, 0xbc, 0x26, 0x97, 0x2a, 0x84, 0x3b, 0xe9, 0x33, 0xd7, 0x2b, 0x8f, 0xf7, 0xe7, + 0x5f, 0xc4, 0x16, 0x44, 0x84, 0xe2, 0x28, 0xe5, 0x43, 0x86, 0x6b, 0x1f, 0x36, 0xec, 0xab, 0x70, + 0x22, 0x5f, 0xd2, 0x48, 0x9e, 0xc7, 0xce, 0x3d, 0xde, 0x9f, 0xb7, 0x0a, 0xf9, 0x47, 0xc6, 0xfc, + 0x2d, 0x66, 0x62, 0x7d, 0xbb, 0x0c, 0xa3, 0x9a, 0x9e, 0x98, 0x7d, 0x56, 0xda, 0x4a, 0x94, 0x8c, + 0xeb, 0xa6, 0x86, 0x21, 0x4a, 0x49, 0xa9, 0xd8, 0x09, 0x5a, 0x5c, 0x5a, 0x4e, 0xa4, 0xda, 0xb2, + 0xf2, 0x51, 0xb4, 0x65, 0x6f, 0x03, 0xd0, 0x14, 0xc6, 0x7e, 0xd2, 0xa4, 0x47, 0xcd, 0x64, 0x4a, + 0x9f, 0x56, 0x29, 0x32, 0xbb, 0x0f, 0xd3, 0xeb, 0x61, 0x2f, 0x8a, 0x1b, 0x7b, 0x51, 0xcc, 0x3b, + 0x82, 0xdb, 0x5a, 0x10, 0xb4, 0xe5, 0xf2, 0x79, 0x49, 0xdc, 0xfa, 0xd0, 0xce, 0xcb, 0x89, 0xb0, + 0x1c, 0x1b, 0xe0, 0x74, 0x83, 0x40, 0xd7, 0xa1, 0x15, 0x31, 0xb0, 0x6c, 0x18, 0xd3, 0x35, 0x70, + 0xe2, 0xdc, 0x97, 0xef, 0xca, 0xf2, 0xa9, 0x47, 0x3b, 0xf7, 0x65, 0x2b, 0xf3, 0xef, 0xdc, 0x26, + 0x89, 0xf5, 0x59, 0x5d, 0x21, 0x7d, 0xd4, 0x7d, 0xc9, 0xfa, 0xff, 0x95, 0xd2, 0x4d, 0xfe, 0xfe, + 0x9b, 0xec, 0x5d, 0x18, 0xa2, 0x77, 0x7c, 0x69, 0xee, 0x70, 0x22, 0xd1, 0xa0, 0xe8, 0x8f, 0xfc, + 0xf4, 0x12, 0xf4, 0xbb, 0x64, 0xeb, 0xf3, 0x8c, 0x2d, 0x49, 0x92, 0x47, 0x24, 0x53, 0x9f, 0xac, + 0xb8, 0xe3, 0x73, 0xc9, 0x9b, 0x45, 0x8f, 0x48, 0xd6, 0x6f, 0x0f, 0xc2, 0x84, 0x89, 0xa6, 0x3f, + 0xf6, 0x97, 0x8e, 0xf4, 0xd8, 0xff, 0x25, 0xa8, 0xca, 0xf9, 0xa6, 0x04, 0xf0, 0x97, 0xf0, 0x69, + 0x4d, 0xc2, 0x0c, 0x23, 0x16, 0xa0, 0xe1, 0xb0, 0x83, 0x36, 0xb7, 0x13, 0x2a, 0x76, 0x59, 0x7b, + 0x34, 0xae, 0xa4, 0x22, 0xa4, 0x52, 0xeb, 0xea, 0xcb, 0x39, 0x79, 0x3e, 0x7e, 0x1d, 0x86, 0xc4, + 0x75, 0x2e, 0xd1, 0xf7, 0x61, 0x2b, 0xc5, 0x4d, 0x2f, 0x63, 0xad, 0x46, 0x48, 0x6c, 0x03, 0xaa, + 0xab, 0x6e, 0x14, 0x37, 0x38, 0xf7, 0x8f, 0x60, 0xc6, 0x33, 0x2f, 0xbb, 0x6a, 0x1a, 0x6d, 0x64, + 0x22, 0xce, 0xfd, 0x8c, 0x1d, 0x46, 0xc2, 0x8c, 0x7d, 0x0d, 0x60, 0x31, 0xf0, 0xe3, 0x30, 0x68, + 0xaf, 0x06, 0xdb, 0xb3, 0x43, 0xa8, 0x68, 0x79, 0x3e, 0x33, 0x00, 0x29, 0x02, 0xe9, 0x5a, 0x12, + 0x6d, 0x62, 0x93, 0x0a, 0x9c, 0x76, 0xb0, 0xad, 0xaf, 0x83, 0x14, 0x9f, 0x5d, 0x83, 0x9a, 0xd2, + 0x62, 0xdd, 0xeb, 0x6e, 0x87, 0x38, 0x41, 0x86, 0x53, 0xb9, 0x90, 0x3f, 0x8a, 0x9d, 0x9e, 0x84, + 0x1b, 0xe7, 0x66, 0x86, 0x86, 0x7d, 0x15, 0x4e, 0x65, 0x61, 0x6a, 0x94, 0xab, 0xe9, 0x15, 0x4c, + 0x67, 0x57, 0x30, 0xef, 0xfb, 0xb1, 0x60, 0xd7, 0x61, 0x52, 0x74, 0xc8, 0x6d, 0xee, 0x46, 0x3d, + 0xb2, 0xb5, 0x94, 0x7a, 0x40, 0x65, 0xa5, 0x20, 0x57, 0x61, 0x3b, 0x68, 0x3e, 0xd0, 0x90, 0xec, + 0x2c, 0x15, 0xbb, 0x0a, 0xa3, 0x64, 0x3c, 0x13, 0xae, 0xf8, 0x5b, 0x81, 0x7c, 0x77, 0x52, 0xcf, + 0x31, 0xb2, 0xe4, 0xfe, 0x65, 0x51, 0x66, 0xeb, 0x88, 0xd6, 0x7e, 0x19, 0x4e, 0x16, 0xd7, 0xc1, + 0xfe, 0x1c, 0x9c, 0x90, 0xfd, 0xd9, 0xe6, 0xa1, 0x86, 0x73, 0x04, 0xb3, 0xa2, 0xd7, 0xe5, 0x38, + 0xbd, 0xd0, 0x4c, 0x18, 0x24, 0x1b, 0x8e, 0x60, 0x91, 0x99, 0x14, 0xc5, 0xf5, 0xb0, 0x6f, 0xc0, + 0xa8, 0x5e, 0x6d, 0xf9, 0xe8, 0x16, 0x5a, 0x07, 0xd4, 0xa5, 0xb3, 0x64, 0x2e, 0x4c, 0xda, 0xfc, + 0x9b, 0x3d, 0x1e, 0xc5, 0xca, 0x46, 0x4c, 0x4a, 0x2c, 0xa7, 0x73, 0xb5, 0x28, 0x84, 0x44, 0x49, + 0x59, 0x0b, 0x89, 0xd2, 0x51, 0x06, 0xc5, 0x3f, 0x27, 0xd8, 0x67, 0xf9, 0x59, 0xdf, 0x2b, 0xc3, + 0xa9, 0x3e, 0xd3, 0x59, 0xec, 0x78, 0x9a, 0x64, 0x88, 0x3b, 0x5e, 0x46, 0x20, 0x24, 0x03, 0xd3, + 0xb3, 0x50, 0x96, 0x12, 0xd8, 0xc0, 0x42, 0xed, 0xf1, 0xfe, 0xfc, 0x98, 0xb1, 0x52, 0xcb, 0x2b, + 0x4b, 0xec, 0x26, 0x0c, 0x88, 0x6e, 0x38, 0x82, 0x9d, 0x94, 0x52, 0x51, 0x4f, 0xc4, 0x9e, 0xbe, + 0x41, 0x60, 0xdf, 0x20, 0x0f, 0xf6, 0x59, 0xa8, 0xac, 0xaf, 0xaf, 0xe2, 0xee, 0x50, 0xc1, 0xd9, + 0x3d, 0x1e, 0xc7, 0x6d, 0x63, 0x33, 0x1a, 0x17, 0xb4, 0x49, 0x8f, 0xd8, 0x02, 0x9d, 0x7d, 0x98, + 0xb1, 0xdf, 0x7c, 0xf5, 0xe0, 0xa5, 0x7c, 0x74, 0x73, 0xce, 0x4f, 0x60, 0x45, 0x69, 0x7d, 0xa7, + 0xa4, 0x4c, 0xd5, 0xe4, 0xe4, 0x67, 0x67, 0xd5, 0x3a, 0x41, 0x45, 0x86, 0xe4, 0xa2, 0x83, 0xd8, + 0xf3, 0x00, 0xf4, 0xf3, 0xde, 0x3d, 0xd9, 0xe9, 0x63, 0xb6, 0x06, 0x61, 0xef, 0x24, 0x2c, 0xa5, + 0xe2, 0xb9, 0x82, 0x92, 0x40, 0x66, 0xad, 0x51, 0x99, 0x6d, 0xa2, 0x5a, 0xbf, 0x51, 0x4e, 0x4f, + 0x8d, 0x6b, 0x5e, 0x3b, 0xe6, 0x21, 0x9b, 0xa3, 0x43, 0x20, 0xbd, 0xac, 0xd9, 0xc9, 0x6f, 0x36, + 0x9b, 0x9e, 0x28, 0xf4, 0x69, 0xc9, 0xd1, 0xf1, 0xaa, 0x76, 0x74, 0x54, 0xf0, 0xe8, 0x98, 0xe8, + 0x7b, 0x48, 0xbc, 0x5a, 0xb0, 0x13, 0xe2, 0xd6, 0x5f, 0xb0, 0xdb, 0xbd, 0x04, 0xe3, 0x77, 0x82, + 0xe5, 0x47, 0x71, 0x82, 0x28, 0xb6, 0xfc, 0xaa, 0x6d, 0x02, 0x05, 0xc7, 0xbb, 0xed, 0x16, 0x0f, + 0xd7, 0x77, 0x5c, 0xdf, 0xb0, 0x6d, 0xb2, 0x73, 0x70, 0x81, 0x7b, 0x87, 0x3f, 0x34, 0x71, 0xc9, + 0x84, 0x2a, 0x07, 0xcf, 0x0e, 0x4e, 0x35, 0x37, 0x38, 0xd6, 0xcf, 0x96, 0x55, 0x77, 0xdd, 0xbf, + 0xfc, 0x94, 0xda, 0xad, 0xbc, 0x65, 0xd8, 0xad, 0x4c, 0x27, 0xcf, 0x5b, 0x89, 0xc9, 0xd8, 0xe5, + 0x42, 0xab, 0x95, 0xc4, 0xfe, 0x6c, 0xa8, 0xd8, 0xfe, 0xec, 0xf7, 0xaa, 0x30, 0xa6, 0x33, 0x11, + 0xbd, 0x53, 0x6f, 0xb5, 0x42, 0xbd, 0x77, 0xdc, 0x56, 0x2b, 0xb4, 0x11, 0x6a, 0x98, 0x9b, 0x55, + 0x0e, 0x34, 0x37, 0xfb, 0x3a, 0x8c, 0x2c, 0x76, 0x5a, 0x86, 0x59, 0x89, 0x55, 0xd0, 0xe8, 0x8b, + 0x09, 0x12, 0xad, 0xe9, 0xe4, 0x2d, 0xa7, 0xd9, 0x69, 0xe5, 0x8d, 0x49, 0x52, 0x96, 0x86, 0xa5, + 0xda, 0xe0, 0x27, 0xb1, 0x54, 0xbb, 0x0a, 0x23, 0xf7, 0x22, 0xbe, 0xde, 0xf3, 0x7d, 0xde, 0xc6, + 0x5e, 0xaa, 0x92, 0xce, 0xa0, 0x17, 0x71, 0x27, 0x46, 0xa8, 0xde, 0x80, 0x04, 0x55, 0x1f, 0xf6, + 0xe1, 0x03, 0x86, 0xfd, 0x0a, 0x54, 0xd7, 0x38, 0x0f, 0xb1, 0x4f, 0x47, 0xd3, 0xbb, 0x53, 0x97, + 0xf3, 0xd0, 0x11, 0x1d, 0x6b, 0x58, 0xb0, 0x49, 0x44, 0xc3, 0xec, 0x6d, 0xec, 0xa8, 0x66, 0x6f, + 0x2f, 0xc0, 0x58, 0xb7, 0xb7, 0xd9, 0xf6, 0x9a, 0xc8, 0x57, 0xda, 0xcb, 0xd9, 0xa3, 0x04, 0x13, + 0x6c, 0x23, 0xf6, 0x21, 0x8c, 0xa3, 0xae, 0x24, 0x99, 0x88, 0x13, 0xc6, 0x81, 0x6f, 0x94, 0x91, + 0x4c, 0xde, 0x14, 0x20, 0xa7, 0xc0, 0x66, 0xd4, 0x64, 0xc4, 0x6e, 0xc2, 0xf0, 0xb6, 0x17, 0x3b, + 0x3b, 0xbd, 0xcd, 0xd9, 0x49, 0xc3, 0xe0, 0xf2, 0xba, 0x17, 0xdf, 0xe8, 0x6d, 0xd2, 0x90, 0x27, + 0xac, 0x71, 0xe7, 0xde, 0xf6, 0xe2, 0x9d, 0x9e, 0xae, 0x0e, 0x19, 0xda, 0x46, 0xdc, 0xac, 0xfd, + 0x5e, 0xed, 0x60, 0xfb, 0xbd, 0x29, 0xd3, 0x7e, 0x8f, 0x39, 0xc0, 0xf2, 0x1e, 0x31, 0xb3, 0x0c, + 0x1b, 0xf5, 0xc6, 0x45, 0xe5, 0x8b, 0x72, 0x31, 0xe7, 0x4a, 0x73, 0x71, 0xf7, 0xcd, 0x8b, 0x8b, + 0x0a, 0x78, 0x4d, 0x02, 0xed, 0xa9, 0x66, 0x16, 0xc4, 0x1a, 0x50, 0xf3, 0x3a, 0x9d, 0x5e, 0xec, + 0x6e, 0xb6, 0xb9, 0x9c, 0xa2, 0xb3, 0xd3, 0x86, 0xdd, 0x94, 0x31, 0xc1, 0x57, 0x14, 0xae, 0x36, + 0xcd, 0xed, 0x49, 0xcf, 0x84, 0xce, 0x35, 0x60, 0xc2, 0x5c, 0x09, 0x4f, 0xc0, 0x8c, 0x65, 0x6e, + 0x01, 0x66, 0x8a, 0x6a, 0x3f, 0xe6, 0xa3, 0x1b, 0x19, 0x42, 0x56, 0x6b, 0x23, 0x37, 0x07, 0xaa, + 0x50, 0x1b, 0x25, 0x13, 0x48, 0x1b, 0xd6, 0x92, 0x79, 0x65, 0xb3, 0x5b, 0xbd, 0x4d, 0x1e, 0xfa, + 0x3c, 0xe6, 0x91, 0xd4, 0x78, 0x44, 0xf6, 0x40, 0xbd, 0xdb, 0x8d, 0xac, 0xbf, 0x5d, 0x86, 0xe1, + 0xfa, 0x46, 0x03, 0xcf, 0xd0, 0xd7, 0x74, 0xa3, 0x81, 0x52, 0xea, 0x06, 0x90, 0x1a, 0x0d, 0xe8, + 0xa6, 0x02, 0x97, 0x0a, 0x54, 0x72, 0xe8, 0xfe, 0xa3, 0xa9, 0xe4, 0x0c, 0x45, 0x5c, 0x6a, 0x3f, + 0x51, 0x39, 0x82, 0xfd, 0x44, 0xf2, 0xc8, 0x34, 0x70, 0xf8, 0x23, 0xd3, 0xbb, 0x30, 0xba, 0xe2, + 0xc7, 0x7c, 0x3b, 0x4c, 0x77, 0x9b, 0x44, 0x3d, 0x98, 0x80, 0x75, 0x3d, 0x86, 0x86, 0x2d, 0x96, + 0x32, 0x3d, 0x6c, 0x25, 0x0f, 0x5a, 0xb8, 0x94, 0xe9, 0xfd, 0x2b, 0xa3, 0xdb, 0x55, 0x88, 0xd6, + 0x52, 0x66, 0x9d, 0x2a, 0xb3, 0xb9, 0x92, 0xa9, 0x61, 0xa4, 0x8e, 0x5d, 0x98, 0x2a, 0x36, 0x9b, + 0xb3, 0xfe, 0x6a, 0x09, 0x66, 0x8a, 0x96, 0x1f, 0xfb, 0x22, 0x8c, 0x05, 0xe1, 0xb6, 0xeb, 0x7b, + 0x7f, 0x86, 0xbe, 0x48, 0x7b, 0x80, 0xd0, 0xe1, 0xba, 0x86, 0x51, 0x87, 0x8b, 0x0e, 0xd1, 0xbe, + 0xdc, 0xd4, 0x97, 0x16, 0x76, 0x88, 0x06, 0xb6, 0x7e, 0xbe, 0x0c, 0xa3, 0xf5, 0x6e, 0xf7, 0x29, + 0xb7, 0x2e, 0xff, 0xbc, 0x71, 0x1c, 0x2b, 0x7d, 0x4e, 0xf2, 0x5d, 0x07, 0xd8, 0x91, 0x1e, 0x76, + 0x22, 0xff, 0xf7, 0x15, 0x98, 0xcc, 0xf0, 0xd1, 0xbf, 0xa9, 0x74, 0x44, 0x63, 0xf0, 0xf2, 0x11, + 0x8d, 0xc1, 0x2b, 0x47, 0x33, 0x06, 0x1f, 0xf8, 0x24, 0x47, 0xec, 0x2b, 0x50, 0xa9, 0x77, 0xbb, + 0x59, 0x9b, 0xa8, 0x6e, 0xf7, 0xfe, 0x15, 0x52, 0x34, 0xba, 0xdd, 0xae, 0x2d, 0x30, 0x8c, 0x73, + 0x6f, 0xe8, 0x63, 0x9a, 0x7b, 0x0f, 0x1f, 0x7c, 0x5c, 0x54, 0x8f, 0x74, 0x5c, 0x8c, 0x3c, 0xb1, + 0xe3, 0xc2, 0x7a, 0x1d, 0x46, 0xf0, 0x53, 0xd1, 0xe6, 0xfa, 0x2c, 0xe0, 0xbe, 0x28, 0xcd, 0xad, + 0x8d, 0xae, 0x90, 0x3b, 0xe6, 0x1f, 0x95, 0x60, 0x10, 0x7f, 0x3f, 0xa5, 0x0b, 0xe3, 0xb2, 0xb1, + 0x30, 0x6a, 0xda, 0xc2, 0xe8, 0xbb, 0x24, 0xb4, 0xc9, 0xff, 0xb7, 0x2a, 0x00, 0x8b, 0x77, 0xed, + 0x06, 0xa9, 0xcb, 0xd9, 0x35, 0x98, 0x74, 0xdb, 0xed, 0xe0, 0x21, 0x6f, 0x39, 0x41, 0xe8, 0x6d, + 0x7b, 0x3e, 0xf5, 0x9c, 0xb2, 0x23, 0x32, 0x8b, 0xf4, 0xf7, 0x7d, 0x59, 0x74, 0x97, 0x4a, 0x74, + 0x3e, 0x1d, 0x1e, 0xef, 0x04, 0x2d, 0xa5, 0x39, 0x33, 0xf8, 0xc8, 0xa2, 0x02, 0x3e, 0xb7, 0xa9, + 0x44, 0xe7, 0xb3, 0x83, 0x9a, 0x40, 0x75, 0x8d, 0x32, 0xf8, 0xc8, 0xa2, 0x02, 0x3e, 0xa4, 0x3e, + 0x8c, 0xd8, 0x2a, 0xe0, 0x6b, 0xd0, 0x43, 0xa7, 0x19, 0xf2, 0x16, 0xf7, 0x63, 0xcf, 0x6d, 0x47, + 0x52, 0xd7, 0x8a, 0x8f, 0x0a, 0xb9, 0x42, 0x5d, 0xd7, 0x84, 0x85, 0x8b, 0x69, 0x19, 0xbb, 0x08, + 0xc3, 0x1d, 0xf7, 0x91, 0xe3, 0x6e, 0x93, 0x45, 0xdd, 0x38, 0xe9, 0xe6, 0x24, 0x48, 0x3f, 0xfb, + 0x3a, 0xee, 0xa3, 0xfa, 0x36, 0x17, 0x5f, 0xc1, 0x1f, 0x75, 0x83, 0x48, 0xfb, 0x8a, 0xa1, 0xf4, + 0x2b, 0x32, 0x45, 0xfa, 0x57, 0xc8, 0x22, 0xf9, 0x15, 0xd6, 0xaf, 0x94, 0xe0, 0xd9, 0x15, 0x6c, + 0x45, 0xbc, 0xb7, 0xc8, 0xfd, 0x98, 0x87, 0x6b, 0x3c, 0xec, 0x78, 0x68, 0xe1, 0xd3, 0xe0, 0x31, + 0x7b, 0x11, 0x2a, 0x75, 0xfb, 0x8e, 0x9c, 0xbf, 0x74, 0x48, 0x19, 0xd6, 0x5e, 0xa2, 0x34, 0x51, + 0xdf, 0x96, 0x0f, 0x79, 0x56, 0xaa, 0xc3, 0x58, 0x3d, 0x8a, 0xbc, 0x6d, 0xbf, 0x43, 0x7e, 0x84, + 0x15, 0xc3, 0x9e, 0x4c, 0xc2, 0x73, 0xcf, 0xbd, 0x3a, 0x89, 0xf5, 0x9f, 0x97, 0x60, 0xaa, 0xde, + 0xed, 0x9a, 0x4d, 0x36, 0x6d, 0x19, 0x4b, 0x47, 0xb7, 0x65, 0xf4, 0x60, 0xc2, 0xf8, 0x5c, 0x9a, + 0x52, 0xe9, 0x2d, 0xe7, 0x80, 0x9e, 0xa1, 0x66, 0x77, 0x13, 0x90, 0x13, 0x99, 0xa6, 0x30, 0x19, + 0xc6, 0xd6, 0x7f, 0x52, 0xc5, 0x3d, 0x44, 0x1e, 0x06, 0xd2, 0x01, 0xa0, 0x54, 0xe0, 0x00, 0xf0, + 0x36, 0x68, 0x62, 0x99, 0x7e, 0x2e, 0x6b, 0x17, 0x03, 0x5d, 0xf1, 0x99, 0x22, 0xb3, 0x07, 0x59, + 0x57, 0x80, 0x0a, 0x7e, 0xcd, 0x8b, 0xd9, 0x05, 0xfc, 0x44, 0xbc, 0x00, 0x6e, 0x00, 0x5b, 0xf1, + 0xd1, 0x3c, 0x87, 0x37, 0x1e, 0x78, 0xdd, 0xfb, 0x3c, 0xf4, 0xb6, 0xf6, 0xe4, 0x02, 0xc0, 0xce, + 0xf7, 0x64, 0xa9, 0x13, 0x3d, 0xf0, 0xba, 0xce, 0x2e, 0x96, 0xdb, 0x05, 0x34, 0xec, 0x7d, 0x18, + 0xb6, 0xf9, 0xc3, 0xd0, 0x8b, 0x95, 0x35, 0xe9, 0x44, 0xa2, 0xc7, 0x47, 0x28, 0xad, 0x85, 0x90, + 0x7e, 0xe8, 0xbb, 0xa2, 0x2c, 0x67, 0x97, 0x49, 0xb2, 0x22, 0xab, 0xd1, 0xf1, 0xf4, 0x6b, 0xeb, + 0x1b, 0x8d, 0x7e, 0x82, 0x15, 0xbb, 0x00, 0x83, 0x28, 0x9e, 0xc9, 0x8b, 0x1f, 0xfa, 0xc8, 0xe2, + 0x45, 0x49, 0x97, 0x1d, 0x11, 0x03, 0xd5, 0x42, 0xca, 0xfe, 0x45, 0x1d, 0x3e, 0x1a, 0x24, 0x2b, + 0x5b, 0x8e, 0x1c, 0x4b, 0xb6, 0x5c, 0x85, 0x9a, 0x4d, 0xee, 0xf6, 0xad, 0x7a, 0x17, 0x6d, 0x22, + 0xa2, 0x59, 0xc0, 0x95, 0x7c, 0xf6, 0xf1, 0xfe, 0xfc, 0x73, 0xd2, 0x15, 0xbf, 0xe5, 0xb8, 0x5d, + 0x32, 0xa5, 0x30, 0xb6, 0x91, 0x2c, 0x25, 0x7b, 0x1b, 0x06, 0xc4, 0xd6, 0x2b, 0x9d, 0x06, 0xd4, + 0xe3, 0x6b, 0xba, 0x1b, 0xd3, 0xe2, 0x6c, 0x06, 0xc6, 0x9e, 0x80, 0x24, 0xcc, 0x81, 0x09, 0x73, + 0xba, 0x4b, 0x63, 0xcd, 0xd9, 0xb4, 0x3f, 0xcd, 0x72, 0xf9, 0x22, 0x2b, 0x61, 0x4e, 0x13, 0x81, + 0xfa, 0x0a, 0xc8, 0x2c, 0xd2, 0x65, 0xa8, 0xae, 0x2f, 0xae, 0xad, 0x05, 0x61, 0x4c, 0xf7, 0xda, + 0xf4, 0x64, 0x11, 0x30, 0xdb, 0xf5, 0xb7, 0x39, 0x89, 0x0a, 0x71, 0xb3, 0xeb, 0x88, 0x03, 0xdb, + 0x10, 0x15, 0x14, 0x29, 0xfb, 0x1a, 0x9c, 0xb8, 0x17, 0xf1, 0xba, 0xbf, 0x87, 0xc2, 0x83, 0xb6, + 0x54, 0x26, 0x70, 0xea, 0xe1, 0x9b, 0xa2, 0xb8, 0xf7, 0xbb, 0xfe, 0x9e, 0x43, 0x42, 0x47, 0xf1, + 0xc2, 0x29, 0xe6, 0xc2, 0x2e, 0x41, 0xe5, 0xf6, 0xe2, 0x9a, 0xbc, 0x00, 0x2b, 0x5b, 0xea, 0xdb, + 0x8b, 0x6b, 0x34, 0x91, 0x3a, 0xa6, 0x6f, 0xca, 0xed, 0xc5, 0xb5, 0x4f, 0xcf, 0x81, 0xe1, 0xab, + 0xd8, 0x12, 0x36, 0x0b, 0xc3, 0x4d, 0xc2, 0x91, 0xdc, 0xd4, 0x4f, 0xc6, 0x60, 0xc0, 0x0d, 0xb7, + 0xe5, 0x31, 0x68, 0xe3, 0xdf, 0xec, 0x15, 0xa8, 0x85, 0x3d, 0xdf, 0x71, 0x23, 0x7a, 0x9d, 0xed, + 0x45, 0x3c, 0xa4, 0x6d, 0xd6, 0x1e, 0x0f, 0x7b, 0x7e, 0x3d, 0x12, 0x62, 0xa1, 0x98, 0xba, 0xd6, + 0xdf, 0x29, 0x81, 0xb6, 0x7e, 0xaa, 0x36, 0x6f, 0x79, 0x21, 0x6f, 0xc6, 0xf2, 0x6c, 0x96, 0x0e, + 0xee, 0x04, 0xcb, 0xd8, 0x9c, 0x23, 0x8c, 0x7d, 0x11, 0x86, 0xe5, 0x19, 0x22, 0xf7, 0x4c, 0xb5, + 0xee, 0xe4, 0xa3, 0x1b, 0x45, 0x42, 0xc8, 0x9d, 0x3f, 0x8a, 0x48, 0x6c, 0xd9, 0x37, 0x37, 0xd6, + 0x17, 0xdb, 0xae, 0xd7, 0x89, 0xe4, 0x41, 0x80, 0xbb, 0xc6, 0x47, 0x0f, 0x63, 0xa7, 0x89, 0x50, + 0x7d, 0xcb, 0x4e, 0x50, 0xad, 0xeb, 0xea, 0xcd, 0xef, 0x10, 0x5f, 0x8e, 0x79, 0x18, 0xbc, 0x9f, + 0xde, 0x86, 0x17, 0x46, 0x1e, 0xef, 0xcf, 0x53, 0xdf, 0xda, 0x04, 0xb7, 0x38, 0x8c, 0x24, 0xf3, + 0x4e, 0xf0, 0x12, 0x3f, 0x90, 0xd7, 0x38, 0xf1, 0x12, 0x33, 0xd0, 0x46, 0xa8, 0x90, 0xd3, 0x96, + 0xfd, 0x16, 0x22, 0x94, 0x11, 0x01, 0xbb, 0x87, 0xfb, 0x2d, 0x9c, 0xa6, 0xfa, 0xd7, 0x49, 0x34, + 0x4d, 0x1a, 0xfa, 0xb1, 0x12, 0x4c, 0x98, 0x63, 0xcc, 0x2e, 0xc2, 0x90, 0xf4, 0x61, 0x2f, 0xa1, + 0xa2, 0x5d, 0x70, 0x1b, 0x22, 0xef, 0x75, 0xc3, 0x67, 0x5d, 0x62, 0x09, 0xa1, 0x4f, 0x72, 0x90, + 0x12, 0x0f, 0x0a, 0x7d, 0x72, 0x16, 0xd8, 0xaa, 0x8c, 0x59, 0xe2, 0xf2, 0x1c, 0xf5, 0xda, 0xb1, + 0x6e, 0x20, 0x10, 0x22, 0xc4, 0x96, 0x25, 0xd6, 0x6f, 0x96, 0x60, 0x88, 0x36, 0xc6, 0x8c, 0x61, + 0x78, 0xe9, 0x38, 0x86, 0xe1, 0xdf, 0x82, 0x19, 0x3b, 0x68, 0xf3, 0xa8, 0xee, 0xef, 0x3d, 0xdc, + 0xe1, 0x21, 0x5f, 0x0b, 0x83, 0x2d, 0x65, 0xcb, 0x30, 0x7a, 0xf9, 0x05, 0x63, 0x03, 0x2e, 0x42, + 0xa4, 0xc7, 0xe8, 0x50, 0x94, 0x88, 0x65, 0x8a, 0x45, 0x62, 0xad, 0x66, 0x6c, 0x1f, 0x0a, 0x2b, + 0xb1, 0x7e, 0xb9, 0x04, 0x73, 0xfd, 0x59, 0xe3, 0xf1, 0x49, 0x7f, 0xa6, 0x72, 0x0b, 0x1d, 0x9f, + 0x04, 0xcd, 0x58, 0xab, 0x6b, 0xc8, 0xcc, 0x86, 0x13, 0xf5, 0x66, 0x93, 0x77, 0x63, 0xc1, 0x58, + 0x5a, 0x39, 0x27, 0x72, 0x4d, 0x95, 0x74, 0x69, 0x2e, 0x22, 0x90, 0xdd, 0xbb, 0xb2, 0xfc, 0xc6, + 0x59, 0x57, 0x4c, 0x6a, 0xfd, 0x61, 0x09, 0xa0, 0xd1, 0xb8, 0x71, 0x8b, 0xef, 0xad, 0xb9, 0x1e, + 0x0a, 0x2a, 0xb4, 0xd7, 0xdc, 0x92, 0x9b, 0xc3, 0x98, 0x34, 0x6e, 0xa2, 0x2d, 0xea, 0x01, 0xdf, + 0x33, 0x8c, 0x9b, 0x14, 0x2a, 0x7d, 0x95, 0xb7, 0xeb, 0xc6, 0x5c, 0x10, 0xe2, 0xcb, 0x84, 0xfa, + 0x2a, 0x84, 0x66, 0x28, 0x35, 0x64, 0xf6, 0x35, 0x98, 0x48, 0x7f, 0x25, 0x26, 0x5a, 0x13, 0xc9, + 0x06, 0x64, 0x16, 0x2e, 0x3c, 0xff, 0x78, 0x7f, 0x7e, 0x4e, 0xe3, 0x9a, 0xb5, 0x53, 0xca, 0x30, + 0x7b, 0x67, 0xe0, 0x5f, 0xfc, 0xe2, 0x7c, 0x09, 0xed, 0xe8, 0xd6, 0x57, 0x1b, 0xea, 0x33, 0xcf, + 0xc1, 0x40, 0xe2, 0x1f, 0x34, 0x26, 0xcf, 0x1c, 0xd3, 0xdc, 0x01, 0xcb, 0x85, 0x74, 0x99, 0x7e, + 0x0f, 0x6e, 0xb0, 0xe6, 0x77, 0x88, 0x52, 0x76, 0x1d, 0x86, 0x8f, 0xd4, 0x72, 0x5c, 0x94, 0x05, + 0x2d, 0x56, 0xd4, 0x42, 0xe8, 0x5a, 0xb4, 0xe9, 0x75, 0x6b, 0x8c, 0x84, 0xae, 0x66, 0xd8, 0xb6, + 0x05, 0xcc, 0xda, 0x2f, 0x01, 0xdc, 0xdc, 0x58, 0xff, 0xbe, 0x1d, 0x26, 0xeb, 0x27, 0xcb, 0x30, + 0x95, 0xda, 0xd8, 0xaa, 0xef, 0xfc, 0x1c, 0x40, 0xfa, 0x49, 0x87, 0x7f, 0x68, 0x37, 0xf9, 0xd0, + 0x77, 0x60, 0x54, 0xab, 0xfc, 0x08, 0x5f, 0xda, 0x4d, 0xbf, 0xd4, 0x81, 0x5a, 0xb6, 0xe1, 0x9f, + 0xf0, 0x5b, 0xbb, 0x06, 0xbe, 0x98, 0x7d, 0x3b, 0x6e, 0x44, 0x26, 0xed, 0xe3, 0x34, 0xfb, 0xc4, + 0x6f, 0x7d, 0xf6, 0x89, 0xdf, 0x56, 0x1d, 0x6a, 0xf5, 0x6d, 0x6e, 0xf4, 0x0a, 0x7b, 0xbd, 0xa0, + 0x47, 0x50, 0xc3, 0x99, 0x42, 0xb5, 0x7e, 0xb0, 0x7e, 0xbc, 0x0c, 0x93, 0x62, 0x26, 0xd7, 0x7b, + 0xf1, 0x4e, 0x10, 0x7a, 0xf1, 0xde, 0x53, 0xfb, 0x36, 0xf5, 0x9e, 0x71, 0xe7, 0x9f, 0x53, 0xd2, + 0x89, 0xfe, 0x6d, 0xfd, 0x9f, 0xa8, 0xb4, 0xf3, 0xee, 0xbf, 0x1b, 0x84, 0xe9, 0x02, 0x2a, 0xf6, + 0x9a, 0xf1, 0xe0, 0x3d, 0xab, 0xe2, 0x28, 0x7d, 0x6f, 0x7f, 0x7e, 0x4c, 0xa1, 0xaf, 0xa7, 0x71, + 0x95, 0x2e, 0x9b, 0xd6, 0xd5, 0xd4, 0x53, 0xf8, 0xfe, 0xad, 0x5b, 0x57, 0x9b, 0x36, 0xd5, 0x17, + 0x60, 0x10, 0x4f, 0x04, 0xe9, 0xa2, 0x80, 0x12, 0x3d, 0x9e, 0x31, 0x86, 0x89, 0xa1, 0x00, 0xb0, + 0x1b, 0x30, 0x2c, 0xfe, 0xb8, 0xed, 0x76, 0xa5, 0xf5, 0x09, 0x4b, 0x94, 0x62, 0x08, 0xed, 0x7a, + 0xfe, 0xb6, 0xae, 0x17, 0x6b, 0x73, 0xa7, 0xe3, 0x76, 0x8d, 0xab, 0x07, 0x21, 0x1a, 0xfa, 0xb5, + 0x6a, 0x7f, 0xfd, 0x5a, 0xe9, 0x50, 0xfd, 0xda, 0x16, 0x40, 0xc3, 0xdb, 0xf6, 0x3d, 0x7f, 0xbb, + 0xde, 0xde, 0x96, 0xd1, 0xa8, 0x2e, 0xf4, 0x1f, 0x85, 0x8b, 0x29, 0x32, 0xae, 0x91, 0x67, 0xd1, + 0x44, 0x8c, 0x60, 0x8e, 0xdb, 0xde, 0x36, 0x5c, 0xc5, 0x35, 0xce, 0xec, 0x0e, 0x40, 0xbd, 0x19, + 0x7b, 0xbb, 0x62, 0xb5, 0x44, 0xf2, 0x9e, 0xa0, 0x9a, 0xbc, 0x58, 0xbf, 0xc5, 0xf7, 0xf0, 0x6e, + 0xab, 0x8c, 0x6d, 0x5c, 0x44, 0x15, 0xb3, 0xde, 0xf0, 0x03, 0x4e, 0x39, 0xb0, 0x2e, 0x9c, 0xa8, + 0xb7, 0x5a, 0x9e, 0xf8, 0x06, 0xb7, 0xbd, 0x4e, 0x71, 0xc4, 0x90, 0xf5, 0x58, 0x31, 0xeb, 0x0b, + 0xca, 0x3e, 0xc4, 0x4d, 0xa8, 0x1c, 0x15, 0x7e, 0x2c, 0x53, 0x4d, 0x31, 0x63, 0xab, 0x01, 0x13, + 0xe6, 0xc7, 0x9b, 0x51, 0xb4, 0xc6, 0xa0, 0x6a, 0x37, 0xea, 0x4e, 0xe3, 0x46, 0xfd, 0xcd, 0x5a, + 0x89, 0xd5, 0x60, 0x4c, 0xfe, 0xba, 0xec, 0x5c, 0x7e, 0xeb, 0x6a, 0xad, 0x6c, 0x40, 0xde, 0x7a, + 0xf3, 0x72, 0xad, 0x32, 0x57, 0x9e, 0x2d, 0x65, 0xa2, 0x44, 0x0c, 0xd7, 0xaa, 0xf4, 0x50, 0x62, + 0xfd, 0x6a, 0x09, 0xaa, 0xaa, 0xed, 0xec, 0x2a, 0x54, 0x1a, 0x8d, 0x1b, 0x99, 0x38, 0x0b, 0xe9, + 0xe9, 0x4e, 0x27, 0x58, 0x64, 0xec, 0x34, 0x82, 0x40, 0xd0, 0xad, 0xaf, 0x36, 0xa4, 0x9c, 0xac, + 0xe8, 0xd2, 0xe3, 0x92, 0xe8, 0x0a, 0x9c, 0xcf, 0xaf, 0x42, 0xe5, 0xe6, 0xc6, 0xba, 0xbc, 0xc5, + 0x2b, 0xba, 0xf4, 0x98, 0x22, 0xba, 0x8f, 0x1e, 0xea, 0xe7, 0xaa, 0x20, 0xb0, 0x6c, 0x18, 0xd5, + 0x26, 0x32, 0x09, 0x86, 0x9d, 0x20, 0x09, 0x1d, 0x25, 0x05, 0x43, 0x01, 0xb1, 0x65, 0x89, 0x10, + 0x97, 0x57, 0x83, 0xa6, 0xdb, 0x96, 0x12, 0x26, 0x8a, 0xcb, 0x6d, 0x01, 0xb0, 0x09, 0x6e, 0xfd, + 0x56, 0x09, 0x6a, 0x6b, 0x61, 0x40, 0xe1, 0xad, 0xd6, 0x83, 0x07, 0xdc, 0xbf, 0xff, 0x26, 0x7b, + 0x5d, 0x2d, 0xb9, 0x52, 0xa2, 0xe8, 0x1d, 0xc4, 0x25, 0x97, 0xb1, 0x48, 0x90, 0xcb, 0x4e, 0x8b, + 0xce, 0x55, 0x3e, 0x7a, 0x54, 0x9f, 0x43, 0xa2, 0x73, 0xcd, 0xc3, 0x20, 0x36, 0x47, 0x6e, 0x8e, + 0xd8, 0xf2, 0x58, 0x00, 0x6c, 0x82, 0x6b, 0x7b, 0xd3, 0x7e, 0x39, 0xf7, 0x0d, 0x97, 0xbf, 0xaf, + 0x22, 0xe3, 0x98, 0x1f, 0x77, 0x80, 0x49, 0xc1, 0xad, 0x3e, 0x91, 0x71, 0x32, 0x0c, 0xc8, 0xe3, + 0xfb, 0x32, 0x3d, 0xad, 0x91, 0xdf, 0xa4, 0xae, 0x8b, 0xcc, 0x05, 0xc5, 0xf8, 0x32, 0xcc, 0x64, + 0xfb, 0x17, 0x55, 0xe6, 0x75, 0x98, 0x34, 0xe1, 0x4a, 0x7b, 0x7e, 0xaa, 0xb0, 0xde, 0xfb, 0x97, + 0xed, 0x2c, 0xbe, 0xf5, 0x6b, 0x65, 0x18, 0xc1, 0x3f, 0xed, 0x1e, 0x49, 0xf9, 0xf5, 0x8d, 0x86, + 0x54, 0xe4, 0xe9, 0x52, 0xbe, 0xfb, 0x30, 0x52, 0x46, 0xbe, 0xc6, 0x86, 0x95, 0x20, 0x4b, 0x52, + 0x7a, 0x42, 0x54, 0x2a, 0xe4, 0x84, 0x94, 0xde, 0x1a, 0xa3, 0x0c, 0xa9, 0x44, 0x46, 0xaf, 0x1d, + 0xba, 0x76, 0xe8, 0x26, 0x97, 0x48, 0x17, 0xb4, 0x4d, 0xaf, 0x1d, 0x42, 0x43, 0x8b, 0xcb, 0x8d, + 0x86, 0xb8, 0x89, 0xe8, 0x16, 0x97, 0xa2, 0x8d, 0xc6, 0x2d, 0x44, 0x22, 0xb1, 0xbb, 0x30, 0x55, + 0xdf, 0x68, 0xdc, 0xd5, 0xde, 0xe9, 0x56, 0x96, 0xe4, 0x5b, 0xe5, 0x0b, 0x8f, 0xf7, 0xe7, 0xcf, + 0x08, 0x4a, 0xfd, 0x15, 0xcf, 0xbc, 0xa2, 0xe5, 0x69, 0xad, 0xff, 0x66, 0x22, 0x3b, 0x22, 0xf2, + 0x38, 0x3e, 0xe6, 0xca, 0x7d, 0x17, 0x06, 0xeb, 0xed, 0x76, 0xf0, 0x50, 0xee, 0x61, 0x4a, 0x71, + 0x93, 0x0c, 0x08, 0x9d, 0xb6, 0xa8, 0xd5, 0x36, 0x02, 0x70, 0x08, 0x00, 0x5b, 0x84, 0x91, 0xfa, + 0x46, 0x63, 0x65, 0x65, 0x69, 0x7d, 0x9d, 0x3c, 0xfb, 0x2b, 0x0b, 0x2f, 0xab, 0x0e, 0xf7, 0xbc, + 0x96, 0x93, 0xb5, 0x31, 0x4b, 0x6f, 0xc0, 0x29, 0x1d, 0xfb, 0x02, 0xc0, 0xcd, 0xc0, 0xf3, 0x49, + 0x8b, 0x2f, 0x7b, 0xf3, 0xcc, 0xe3, 0xfd, 0xf9, 0xd1, 0x8f, 0x02, 0xcf, 0x97, 0x6a, 0x7f, 0xd1, + 0xf6, 0x14, 0xc9, 0xd6, 0xfe, 0x16, 0x43, 0xb7, 0x10, 0x90, 0xed, 0xf9, 0x60, 0x3a, 0x74, 0x9b, + 0x41, 0x4e, 0xdd, 0xac, 0xd0, 0x58, 0x07, 0x26, 0x1b, 0xbd, 0xed, 0x6d, 0x2e, 0xce, 0x1d, 0xa9, + 0x4e, 0x1d, 0x92, 0x9a, 0x9b, 0x24, 0xda, 0x25, 0xdd, 0xe8, 0xdd, 0x76, 0x8f, 0x47, 0x0b, 0xaf, + 0x89, 0x65, 0xf6, 0xdd, 0xfd, 0x79, 0x69, 0xbb, 0x26, 0x64, 0xd6, 0x48, 0xd1, 0xe7, 0x95, 0xa9, + 0x59, 0xde, 0xec, 0x2e, 0x0c, 0xd1, 0x3b, 0xaf, 0xf4, 0x54, 0x7f, 0xe1, 0x80, 0x25, 0x4d, 0x88, + 0xfd, 0x2c, 0x30, 0xa8, 0x94, 0x6d, 0x40, 0x75, 0xd1, 0x0b, 0x9b, 0x6d, 0xbe, 0xb8, 0x22, 0x25, + 0x93, 0x17, 0x0f, 0x60, 0xa9, 0x50, 0xa9, 0x5f, 0x9a, 0xf8, 0xab, 0xe9, 0xe9, 0x92, 0x8a, 0xc2, + 0x60, 0x7f, 0xb5, 0x04, 0xcf, 0x26, 0xad, 0xaf, 0x6f, 0x73, 0x3f, 0xbe, 0xed, 0xc6, 0xcd, 0x1d, + 0x1e, 0xca, 0x5e, 0x1a, 0x39, 0xa8, 0x97, 0xde, 0xc9, 0xf5, 0xd2, 0xf9, 0xb4, 0x97, 0x5c, 0xc1, + 0xcc, 0xe9, 0x10, 0xb7, 0x7c, 0x9f, 0x1d, 0x54, 0x2b, 0x73, 0x00, 0x52, 0x0b, 0x06, 0x69, 0x04, + 0xfb, 0xf2, 0x01, 0x1f, 0x9c, 0x22, 0x4b, 0x1f, 0xe1, 0xe4, 0xb7, 0xe1, 0xb4, 0x91, 0x40, 0xd9, + 0x2d, 0x15, 0x16, 0x82, 0x64, 0xa6, 0xb3, 0x07, 0xf0, 0xa6, 0x50, 0x11, 0xd3, 0x07, 0xc4, 0xa4, + 0xa1, 0xd1, 0x5e, 0x75, 0x37, 0xa5, 0x98, 0x74, 0xc8, 0x68, 0xaf, 0xba, 0xe9, 0x68, 0xb7, 0xdd, + 0xec, 0x68, 0xaf, 0xba, 0x9b, 0x6c, 0x91, 0xc2, 0xeb, 0x50, 0x2c, 0x96, 0xe7, 0x0f, 0xe2, 0xa6, + 0x54, 0x99, 0x05, 0x61, 0x76, 0xbe, 0x02, 0x23, 0x8d, 0xae, 0xdb, 0xe4, 0x6d, 0x6f, 0x2b, 0x96, + 0x66, 0x45, 0x2f, 0x1d, 0xc0, 0x2a, 0xc1, 0x95, 0xe6, 0x10, 0xea, 0xa7, 0x7e, 0x65, 0x4c, 0x70, + 0x44, 0x0b, 0xd7, 0xd7, 0x6e, 0x4b, 0xc5, 0xea, 0x41, 0x2d, 0x5c, 0x5f, 0xbb, 0x2d, 0x25, 0xa2, + 0x6e, 0xc7, 0x90, 0x88, 0xd6, 0x6e, 0xb3, 0x2e, 0x4c, 0xac, 0xf3, 0x30, 0x74, 0xb7, 0x82, 0xb0, + 0x43, 0xea, 0x7b, 0x72, 0xa6, 0xbf, 0x70, 0x10, 0x3f, 0x83, 0x80, 0xb4, 0xd6, 0xb1, 0x82, 0x39, + 0x59, 0x9d, 0x7f, 0x86, 0xbf, 0xe8, 0x93, 0x05, 0x2f, 0xde, 0xec, 0x35, 0x1f, 0xf0, 0x58, 0xba, + 0xd8, 0x1f, 0xd4, 0x27, 0x09, 0x2e, 0xf5, 0xc9, 0xa6, 0xfa, 0xa9, 0xf7, 0x49, 0x82, 0x23, 0xa6, + 0x81, 0x0c, 0xa2, 0xc3, 0x0e, 0x9d, 0x06, 0x84, 0x48, 0xd3, 0xa0, 0x5f, 0x34, 0x1d, 0xb6, 0x03, + 0x63, 0x0b, 0x41, 0xcf, 0x17, 0x82, 0x72, 0xd7, 0xf5, 0xc2, 0xd9, 0x69, 0x64, 0xfb, 0xca, 0x41, + 0x0d, 0xd6, 0xd0, 0xc9, 0xb5, 0x67, 0x53, 0x40, 0x84, 0x2c, 0x2e, 0x40, 0xfa, 0x43, 0x9c, 0x8e, + 0xca, 0x5a, 0x30, 0x8a, 0x53, 0x79, 0x89, 0xef, 0x06, 0xdd, 0x68, 0x76, 0x06, 0x2b, 0x3a, 0x77, + 0xd8, 0xa2, 0x20, 0x6c, 0x32, 0x53, 0xc1, 0xa5, 0xe1, 0xb4, 0x10, 0xa2, 0xbf, 0x8e, 0x68, 0x88, + 0xec, 0x3a, 0x0c, 0x2c, 0xfb, 0xbb, 0x6f, 0xcc, 0x9e, 0x40, 0xf6, 0xf3, 0x07, 0xb0, 0x17, 0x68, + 0x74, 0xd7, 0xe7, 0xfe, 0xee, 0x1b, 0xfa, 0x5d, 0x5f, 0x94, 0x64, 0xdf, 0x68, 0x4e, 0x1e, 0xe7, + 0x8d, 0xc6, 0xfa, 0xdb, 0x83, 0x30, 0x7f, 0xc8, 0x27, 0xb1, 0xfb, 0xea, 0x84, 0x24, 0xc1, 0xe6, + 0x33, 0x47, 0xeb, 0x89, 0x8b, 0x87, 0x1e, 0x9e, 0xef, 0xc2, 0x44, 0x46, 0x1e, 0xd0, 0x82, 0xba, + 0x66, 0x64, 0x01, 0x3b, 0x83, 0x3a, 0xf7, 0x47, 0x15, 0x18, 0x40, 0x79, 0xe9, 0x45, 0xa8, 0x34, + 0x7a, 0x9b, 0xfa, 0x33, 0x6e, 0x64, 0x1c, 0x1a, 0xa2, 0x94, 0xbd, 0x07, 0xa3, 0xd2, 0x9d, 0x52, + 0xbb, 0x74, 0xe3, 0x50, 0x29, 0xdf, 0xcb, 0xac, 0xb3, 0x97, 0x86, 0xce, 0xde, 0x87, 0xb1, 0x35, + 0xaf, 0xcb, 0xdb, 0x9e, 0xcf, 0x35, 0xd7, 0x25, 0x9c, 0x51, 0x5d, 0x09, 0xcf, 0x3d, 0xed, 0xea, + 0x04, 0xa6, 0xe3, 0xe7, 0xc0, 0xd1, 0x1d, 0x3f, 0xdf, 0x87, 0xb1, 0x25, 0xbe, 0xe5, 0xf9, 0x9e, + 0x21, 0x2f, 0x61, 0xc5, 0xad, 0x04, 0x6e, 0x52, 0x1b, 0x04, 0x6c, 0x01, 0xc6, 0x6d, 0xde, 0x0d, + 0x22, 0x2f, 0x0e, 0xc2, 0xbd, 0x7b, 0xf6, 0x8a, 0xb4, 0xf1, 0x42, 0x7d, 0x6f, 0x98, 0x14, 0x38, + 0xbd, 0x50, 0x3f, 0x0f, 0x4d, 0x12, 0x76, 0x07, 0xa6, 0x52, 0x80, 0x69, 0x53, 0x2a, 0xdf, 0xf1, + 0x12, 0x3e, 0x79, 0x1f, 0x91, 0x3c, 0xa9, 0xd9, 0x26, 0x9b, 0x6f, 0x49, 0x8f, 0x93, 0x6c, 0x9b, + 0x42, 0xbe, 0x55, 0xdc, 0x26, 0x9b, 0x6f, 0x59, 0xbf, 0x5e, 0x81, 0x53, 0x7d, 0x36, 0x58, 0x76, + 0xc7, 0x9c, 0xae, 0x2f, 0x1e, 0xbc, 0x1f, 0x1f, 0x3e, 0x4d, 0x57, 0xa1, 0xb6, 0x7c, 0x0b, 0xf5, + 0x14, 0x64, 0x25, 0xb1, 0x58, 0x57, 0xb2, 0x35, 0x7e, 0x3e, 0x7f, 0x80, 0xde, 0x66, 0xca, 0xba, + 0xa2, 0x69, 0x84, 0x15, 0xcb, 0x51, 0xce, 0xfd, 0x85, 0xb2, 0x9c, 0xb7, 0x99, 0xb8, 0xd2, 0xa5, + 0x63, 0xc5, 0x95, 0xfe, 0x12, 0x8c, 0x2d, 0xdf, 0x22, 0xe5, 0xec, 0x0d, 0xa5, 0x0f, 0x94, 0x5d, + 0xc8, 0x1f, 0xa8, 0x57, 0xc1, 0x8c, 0x66, 0xd0, 0xa0, 0x60, 0xf7, 0x60, 0x9a, 0xda, 0xe6, 0x6d, + 0x79, 0x4d, 0x0a, 0x4f, 0xeb, 0xb9, 0x6d, 0x39, 0xc3, 0x5e, 0x7c, 0xbc, 0x3f, 0x3f, 0xcf, 0x1f, + 0xa0, 0x1f, 0x9d, 0x2c, 0x77, 0x22, 0x44, 0xd0, 0x1d, 0xea, 0x0a, 0xe8, 0xf5, 0xc0, 0x94, 0xf6, + 0x08, 0x56, 0x28, 0x6a, 0x13, 0x75, 0x0b, 0x5c, 0x42, 0xb2, 0xfe, 0xcf, 0x21, 0x98, 0xeb, 0x2f, + 0xfc, 0xb1, 0x0f, 0xcc, 0x01, 0x3c, 0x77, 0xa8, 0xb8, 0x78, 0xf8, 0x18, 0x7e, 0x08, 0x33, 0xcb, + 0x7e, 0xcc, 0xc3, 0x6e, 0xe8, 0xa9, 0x80, 0x96, 0x37, 0x82, 0x48, 0xf9, 0x2d, 0xe2, 0x9b, 0x0d, + 0x4f, 0xca, 0xa5, 0x07, 0x2e, 0x3e, 0x33, 0xea, 0x6f, 0x36, 0x45, 0x1c, 0xd8, 0x32, 0x4c, 0x68, + 0xf0, 0x76, 0x6f, 0x5b, 0x37, 0xfd, 0xd0, 0x79, 0xb6, 0x7b, 0xba, 0x53, 0x57, 0x86, 0x08, 0x7d, + 0x23, 0x63, 0x37, 0xf6, 0x9a, 0x37, 0x37, 0x6e, 0x35, 0xe4, 0x70, 0x92, 0x6f, 0x24, 0x42, 0x9d, + 0x8f, 0x1e, 0x3e, 0x30, 0xa4, 0xb7, 0x14, 0x79, 0xee, 0xe7, 0x07, 0x8e, 0xb3, 0x13, 0x7e, 0x1e, + 0x20, 0x5d, 0x4a, 0x7a, 0x2c, 0x96, 0x74, 0xe9, 0x99, 0xee, 0xcf, 0x0a, 0xca, 0x6e, 0xc0, 0x64, + 0xfa, 0xeb, 0xee, 0x43, 0x5f, 0x3d, 0xbf, 0x92, 0x12, 0x5b, 0x5b, 0xb9, 0x81, 0x28, 0xd3, 0x2f, + 0x04, 0x19, 0x32, 0x76, 0x19, 0xaa, 0x1b, 0x41, 0xf8, 0x60, 0x4b, 0x8c, 0xf1, 0x40, 0x7a, 0x65, + 0x79, 0x28, 0x61, 0xba, 0x68, 0xae, 0xf0, 0xc4, 0x72, 0x59, 0xf6, 0x77, 0xbd, 0x30, 0x40, 0x73, + 0x19, 0xdd, 0xca, 0x95, 0xa7, 0x60, 0x23, 0x06, 0x57, 0x0a, 0x66, 0x17, 0x60, 0xb0, 0xde, 0x8c, + 0x83, 0x50, 0x6e, 0x7f, 0x34, 0x53, 0x04, 0xc0, 0x98, 0x29, 0x02, 0x20, 0x3a, 0x51, 0xec, 0x49, + 0xc3, 0x69, 0x27, 0x9a, 0x1b, 0x91, 0x28, 0x15, 0x57, 0x2e, 0x9b, 0x6f, 0xa1, 0xd2, 0xd7, 0x88, + 0x9a, 0xbe, 0x95, 0x7b, 0xa0, 0x91, 0x68, 0xa2, 0xdb, 0xd3, 0x11, 0x97, 0x76, 0x14, 0xd8, 0xed, + 0xe9, 0x14, 0x31, 0x5e, 0x24, 0x13, 0x28, 0x39, 0xdc, 0xab, 0x5f, 0x49, 0x9c, 0x2b, 0xe9, 0x70, + 0x9f, 0x4c, 0x2f, 0xf3, 0x0c, 0xd0, 0x09, 0xac, 0xbf, 0x08, 0x7d, 0x57, 0x9b, 0x10, 0xaf, 0x8f, + 0xb7, 0xda, 0x56, 0xdd, 0x23, 0xac, 0xb6, 0xd7, 0x12, 0x7f, 0x6e, 0x3d, 0xc6, 0x20, 0x42, 0x74, + 0xc1, 0x4e, 0x7a, 0x76, 0x9b, 0x53, 0xbf, 0x72, 0x9c, 0xa9, 0xff, 0x37, 0xab, 0xc7, 0x99, 0xfa, + 0x72, 0x68, 0xcb, 0x47, 0x1d, 0xda, 0xca, 0xd1, 0x86, 0x76, 0x01, 0xc6, 0x93, 0x6c, 0x01, 0x6b, + 0x6e, 0x6c, 0x6c, 0xc6, 0x49, 0x8a, 0x07, 0xa7, 0xeb, 0x1a, 0xd1, 0x6f, 0x4d, 0x12, 0x4d, 0x3e, + 0x41, 0x0e, 0x83, 0x79, 0xf9, 0x24, 0x43, 0xaf, 0xa3, 0x8b, 0x3d, 0x48, 0x89, 0x1b, 0x0d, 0xf4, + 0x0e, 0x96, 0xf3, 0x9c, 0xec, 0xb8, 0x94, 0x84, 0x42, 0x8e, 0xc3, 0xc6, 0x43, 0x9a, 0x41, 0x94, + 0x5d, 0x62, 0xc3, 0xc7, 0x5a, 0x62, 0xe4, 0xa7, 0x12, 0xae, 0x06, 0xdb, 0x9e, 0xf2, 0x21, 0x55, + 0x7e, 0x2a, 0xa1, 0xd3, 0x16, 0xd0, 0x8c, 0x9f, 0x0a, 0xa1, 0xb2, 0xd7, 0x61, 0x48, 0xfc, 0x58, + 0x59, 0x92, 0x8b, 0x02, 0xd5, 0x48, 0x48, 0x64, 0x3a, 0xee, 0x12, 0x92, 0xaa, 0x66, 0xb9, 0xe3, + 0x7a, 0x6d, 0xb9, 0x14, 0xd2, 0x6a, 0xb8, 0x80, 0x66, 0xab, 0x41, 0x54, 0xd6, 0x84, 0x31, 0x9b, + 0x6f, 0xad, 0x85, 0x41, 0xcc, 0x9b, 0x31, 0x6f, 0xc9, 0x9b, 0xae, 0x52, 0xf6, 0x2c, 0x04, 0x01, + 0xdd, 0xe2, 0xd1, 0xc7, 0xb3, 0xf4, 0xdd, 0xfd, 0x79, 0x10, 0x20, 0xf2, 0x0a, 0x17, 0x2b, 0x4d, + 0x8c, 0x7f, 0x57, 0x11, 0xeb, 0x2b, 0x4d, 0x67, 0xca, 0xbe, 0x25, 0x4e, 0x99, 0xa4, 0x4b, 0xd2, + 0xca, 0xc6, 0xfa, 0x54, 0xf6, 0x56, 0x61, 0x65, 0xf3, 0x5a, 0x6f, 0x17, 0x56, 0x5a, 0x58, 0x09, + 0xfb, 0x02, 0x8c, 0x2e, 0xae, 0x2c, 0x06, 0xfe, 0x96, 0xb7, 0xdd, 0xb8, 0x51, 0xc7, 0xeb, 0xb2, + 0xdc, 0x26, 0x9a, 0x9e, 0xd3, 0x44, 0xb8, 0x13, 0xed, 0xb8, 0x46, 0xd8, 0x9e, 0x14, 0x9f, 0x5d, + 0x87, 0x09, 0xf5, 0xd3, 0xe6, 0x5b, 0x42, 0x54, 0x9c, 0xd0, 0xa2, 0x48, 0x24, 0x1c, 0x44, 0x47, + 0x98, 0xd2, 0x62, 0x86, 0x4c, 0x4c, 0xc6, 0x25, 0xde, 0x6d, 0x07, 0x7b, 0xa2, 0x79, 0xeb, 0x1e, + 0x0f, 0xf1, 0x5e, 0x2c, 0x27, 0x63, 0x2b, 0x29, 0x71, 0x62, 0xcf, 0x34, 0xa9, 0x32, 0x89, 0x84, + 0xd4, 0x29, 0xa7, 0xf8, 0x7d, 0x2f, 0xf2, 0x36, 0xbd, 0xb6, 0x17, 0xef, 0x91, 0xaf, 0x0d, 0x89, + 0x5d, 0x6a, 0x5d, 0xec, 0x26, 0xa5, 0xba, 0xd4, 0x99, 0x23, 0xb5, 0x7e, 0xb5, 0x0c, 0xcf, 0x1d, + 0xa4, 0x1d, 0x62, 0x0d, 0x73, 0x1f, 0x3c, 0x7f, 0x04, 0x8d, 0xd2, 0xe1, 0x3b, 0xe1, 0x72, 0x9f, + 0x2b, 0x0e, 0x76, 0x46, 0x7f, 0x75, 0x67, 0xf6, 0xb2, 0xb3, 0x2b, 0xb7, 0xb9, 0x8f, 0x1b, 0x40, + 0xe6, 0x2a, 0x8c, 0x2c, 0x06, 0x7e, 0xcc, 0x1f, 0xc5, 0x99, 0xf8, 0x6b, 0x04, 0xcc, 0x06, 0xcf, + 0x51, 0xa8, 0xd6, 0x3f, 0xab, 0xc0, 0x99, 0x03, 0xd5, 0x23, 0x6c, 0xdd, 0xec, 0xb5, 0x0b, 0x47, + 0xd1, 0xa9, 0x1c, 0xde, 0x6d, 0x97, 0x73, 0x9e, 0x02, 0x87, 0x47, 0x00, 0xb0, 0x81, 0x51, 0x54, + 0xa8, 0xeb, 0xed, 0x60, 0x13, 0x15, 0x68, 0x9e, 0xbf, 0x2d, 0xa3, 0x49, 0x91, 0x37, 0x3b, 0x96, + 0x3a, 0xdb, 0xed, 0x60, 0x93, 0x14, 0x71, 0x9e, 0xaf, 0x4b, 0x64, 0x05, 0xd4, 0x73, 0xff, 0xac, + 0x24, 0x3b, 0xfe, 0x0d, 0x18, 0xc6, 0xe6, 0x27, 0xdd, 0x4e, 0x6f, 0x25, 0xb8, 0xb3, 0x7b, 0xe6, + 0x5b, 0x09, 0xa1, 0xb1, 0x2b, 0x50, 0x5d, 0x74, 0xdb, 0x6d, 0x2d, 0xe2, 0x1d, 0x6a, 0x4d, 0x9a, + 0x08, 0xcb, 0x38, 0xd6, 0x28, 0x44, 0x71, 0x14, 0xd2, 0xdf, 0xda, 0xf9, 0x83, 0x1b, 0xb0, 0x24, + 0xcb, 0x1c, 0x41, 0x1a, 0x32, 0xe6, 0x50, 0x41, 0xbf, 0x8d, 0x01, 0x2d, 0x87, 0x8a, 0x00, 0x18, + 0x39, 0x54, 0x04, 0xc0, 0xfa, 0x1b, 0x83, 0xf0, 0xfc, 0xc1, 0x7a, 0x43, 0x76, 0xcf, 0x1c, 0xd6, + 0x57, 0x8f, 0xa4, 0x6d, 0x3c, 0x7c, 0x5c, 0x55, 0x46, 0x22, 0xea, 0x90, 0xf3, 0x79, 0xd7, 0xf0, + 0xef, 0xed, 0xcf, 0x6b, 0xde, 0x5a, 0x37, 0x03, 0xcf, 0xd7, 0x5e, 0xce, 0xbf, 0x99, 0x13, 0x14, + 0x46, 0x2f, 0x5f, 0x3d, 0x5a, 0xcb, 0x52, 0x3a, 0xda, 0xab, 0x8e, 0x28, 0x60, 0xb0, 0x0f, 0x61, + 0xe0, 0xee, 0xca, 0xd2, 0xa2, 0x7c, 0xc6, 0x7a, 0xe3, 0x68, 0x95, 0x09, 0x0a, 0x59, 0x0d, 0x6a, + 0x6d, 0x02, 0xaf, 0xd5, 0xd4, 0xb5, 0x36, 0xa2, 0x7c, 0xee, 0x1d, 0xa8, 0x65, 0x1b, 0xc5, 0xce, + 0xc1, 0x00, 0x7e, 0x9a, 0xe6, 0x39, 0x9f, 0x69, 0x1b, 0x96, 0xcf, 0xfd, 0x74, 0x09, 0x20, 0xad, + 0x44, 0x88, 0x5b, 0x2b, 0x51, 0xd4, 0x4b, 0xc2, 0x30, 0xa3, 0xb8, 0xe5, 0x21, 0x44, 0x3f, 0x41, + 0x09, 0x87, 0x7d, 0x88, 0x9e, 0xfb, 0x68, 0xa8, 0x8c, 0x83, 0x72, 0x63, 0x7d, 0x7d, 0x4d, 0x92, + 0x93, 0x31, 0x18, 0x8a, 0xf3, 0x89, 0x85, 0x33, 0xd9, 0xfa, 0xef, 0xc4, 0x71, 0xd7, 0x21, 0x96, + 0x76, 0x3f, 0xf2, 0xb9, 0xdb, 0x72, 0xb1, 0x60, 0xd4, 0x43, 0x3d, 0xe2, 0x8c, 0x6c, 0x97, 0x8c, + 0x7a, 0x68, 0x84, 0xab, 0x31, 0xa3, 0x1e, 0xea, 0x44, 0xd6, 0x2f, 0x97, 0xe1, 0x74, 0x5f, 0x1d, + 0x13, 0x5b, 0x33, 0x67, 0xe8, 0xcb, 0x87, 0x29, 0xa5, 0x0e, 0x9d, 0x9c, 0x73, 0xbf, 0xae, 0x16, + 0xfb, 0x17, 0x61, 0xac, 0xd1, 0xdb, 0xcc, 0x5e, 0xcd, 0x29, 0x22, 0xaa, 0x06, 0xd7, 0xc5, 0x00, + 0x1d, 0x5f, 0x7c, 0xbf, 0x0a, 0xd3, 0x22, 0x0d, 0xab, 0x35, 0x6f, 0x8e, 0x24, 0xcc, 0x54, 0x3e, + 0xea, 0xa3, 0x49, 0x24, 0x86, 0x35, 0xe6, 0xbe, 0xeb, 0xc7, 0xba, 0xc7, 0x20, 0x41, 0xf4, 0x61, + 0x25, 0x88, 0xf5, 0x1f, 0x97, 0x8b, 0x35, 0x22, 0xd7, 0x17, 0xd7, 0x8e, 0xa3, 0x11, 0xb9, 0xbe, + 0xb8, 0x76, 0x78, 0x4f, 0xfd, 0xd7, 0xaa, 0xa7, 0xc8, 0x22, 0x91, 0x0e, 0x19, 0xf5, 0xde, 0xa6, + 0x2c, 0x12, 0xe5, 0x81, 0x14, 0x65, 0x2c, 0x12, 0x25, 0x32, 0x7b, 0x0b, 0x46, 0x56, 0x03, 0x0a, + 0xdf, 0xa8, 0xfa, 0x87, 0xa2, 0x36, 0x29, 0xa0, 0x7e, 0x22, 0x25, 0x98, 0xe2, 0x12, 0x6a, 0x4e, + 0x13, 0xe5, 0xe2, 0x82, 0xb3, 0x36, 0x33, 0xb9, 0xcc, 0x57, 0x29, 0x93, 0xcc, 0xfa, 0xcf, 0x06, + 0xc1, 0x3a, 0x5c, 0xa7, 0xce, 0xbe, 0x6c, 0xf6, 0xdd, 0xc5, 0x23, 0x6b, 0xe3, 0x8f, 0x74, 0xca, + 0xd5, 0x7b, 0x2d, 0x8f, 0xfb, 0x4d, 0x33, 0x54, 0xa2, 0x84, 0xe9, 0x27, 0x84, 0xc2, 0xfb, 0x38, + 0xb1, 0x71, 0xe6, 0xfe, 0x51, 0x25, 0x5d, 0x98, 0x19, 0x69, 0xa4, 0xf4, 0x31, 0xa4, 0x11, 0x76, + 0x0b, 0x6a, 0x3a, 0x44, 0xd3, 0xa8, 0xa2, 0xb0, 0x68, 0x30, 0xca, 0x34, 0x2a, 0x47, 0x68, 0x8a, + 0x34, 0x95, 0xa3, 0x8b, 0x34, 0x19, 0x8d, 0xee, 0xc0, 0xf1, 0x34, 0xba, 0x32, 0xb4, 0x62, 0x24, + 0xcf, 0xf4, 0x41, 0x33, 0xb4, 0x62, 0xc1, 0xb9, 0xae, 0xa3, 0xab, 0xe8, 0x90, 0xf8, 0x53, 0x8b, + 0x1e, 0x96, 0x44, 0x87, 0x24, 0xfa, 0xa2, 0xe8, 0x90, 0x09, 0x89, 0x90, 0x0f, 0xec, 0x9e, 0x4f, + 0xb9, 0xcc, 0x86, 0x53, 0xf9, 0x20, 0xec, 0xf9, 0x4e, 0x36, 0x9f, 0x59, 0x82, 0x68, 0xfd, 0xdd, + 0x81, 0x62, 0x79, 0x2c, 0x7d, 0x76, 0x39, 0x86, 0x3c, 0x96, 0x10, 0x7d, 0x3a, 0x33, 0xf5, 0x1e, + 0x4c, 0x2b, 0x2f, 0x09, 0xac, 0xbd, 0xc5, 0xc3, 0x7b, 0xf6, 0xaa, 0x1c, 0x62, 0x54, 0x30, 0x26, + 0xfe, 0x15, 0x5d, 0x59, 0xee, 0xf4, 0x42, 0x43, 0xc1, 0x58, 0x40, 0x3f, 0xf7, 0x77, 0x94, 0xfe, + 0x54, 0x1f, 0x04, 0x0c, 0x6a, 0x52, 0x2a, 0x1a, 0x84, 0x5e, 0xcf, 0x18, 0x46, 0x93, 0x84, 0x76, + 0xea, 0x44, 0xd7, 0x7d, 0xcf, 0x14, 0xcf, 0x75, 0xfd, 0xb8, 0xc9, 0x25, 0x43, 0xc4, 0xb6, 0xe1, + 0x74, 0x7a, 0x7b, 0xd1, 0x2e, 0x67, 0xc8, 0x91, 0x3e, 0xf8, 0xc2, 0xe3, 0xfd, 0xf9, 0x97, 0xb5, + 0xdb, 0x8f, 0x7e, 0xc7, 0xcb, 0x70, 0xef, 0xcf, 0x4b, 0xec, 0xb7, 0x0b, 0xa1, 0xeb, 0x37, 0x77, + 0xb4, 0x39, 0x8f, 0xfb, 0xed, 0x26, 0x42, 0x73, 0x11, 0xd4, 0x52, 0x64, 0xeb, 0xbb, 0xe5, 0x62, + 0x2d, 0x90, 0x7c, 0x5d, 0x3b, 0x86, 0x16, 0x88, 0x28, 0x0e, 0x3f, 0x25, 0xfe, 0x85, 0x3a, 0x25, + 0x5e, 0x86, 0xe1, 0x75, 0x71, 0x48, 0x25, 0x91, 0x09, 0xd1, 0x6c, 0x28, 0x26, 0x90, 0xad, 0xca, + 0xd8, 0x07, 0xc0, 0xd6, 0xdc, 0x90, 0xfb, 0xf1, 0x62, 0xd0, 0xe9, 0xba, 0x61, 0xdc, 0xc1, 0x6c, + 0x6f, 0x74, 0x34, 0xa0, 0x89, 0x48, 0x17, 0x4b, 0x9d, 0xa6, 0x56, 0xac, 0xcb, 0xef, 0x79, 0x62, + 0x76, 0x09, 0x86, 0x95, 0x35, 0x4c, 0x25, 0x0d, 0xee, 0x9c, 0xb7, 0x84, 0x51, 0x58, 0xe2, 0x54, + 0x52, 0x3e, 0xfb, 0x2a, 0xbd, 0x02, 0x2e, 0x4b, 0xe5, 0xd5, 0x6f, 0x9c, 0x4a, 0x09, 0xa6, 0xf5, + 0x5f, 0x0d, 0xc1, 0x6c, 0xbf, 0x97, 0x3b, 0x76, 0xd7, 0xec, 0xda, 0x97, 0x0e, 0x79, 0xe9, 0x3b, + 0xbc, 0x63, 0x7f, 0x67, 0xf0, 0xc9, 0xee, 0xe7, 0xc6, 0x16, 0x5c, 0xfe, 0xd8, 0x5b, 0x70, 0xe5, + 0x78, 0x5b, 0xf0, 0xdb, 0x00, 0xeb, 0xbc, 0xd3, 0x6d, 0xbb, 0x31, 0x4f, 0x1e, 0xc5, 0x28, 0xea, + 0xaf, 0x84, 0x66, 0x9c, 0x34, 0x52, 0x64, 0xf6, 0x3e, 0x8c, 0xa9, 0x5f, 0x9a, 0xd9, 0x0b, 0x65, + 0x9b, 0x52, 0xc4, 0xd9, 0xf7, 0x38, 0x9d, 0x40, 0xec, 0x1d, 0xda, 0xd2, 0x4a, 0x42, 0x1f, 0xd0, + 0xfb, 0x89, 0xb6, 0x32, 0xcd, 0xbd, 0xc3, 0x20, 0x11, 0x92, 0x88, 0x06, 0xd0, 0x42, 0x3f, 0xa2, + 0x24, 0xa2, 0x73, 0xc9, 0x34, 0x25, 0x4b, 0x96, 0x3f, 0x4e, 0xaa, 0xc7, 0x3f, 0x4e, 0x4c, 0xad, + 0x8b, 0xca, 0xfa, 0x5a, 0xa0, 0x75, 0xc9, 0xd8, 0x97, 0x9b, 0x44, 0xa2, 0x29, 0x04, 0x31, 0x55, + 0x6c, 0xd8, 0x94, 0x96, 0x2c, 0xc8, 0xa9, 0xd9, 0x4c, 0x12, 0x72, 0x29, 0xda, 0x7d, 0x63, 0xdd, + 0xdd, 0x96, 0x11, 0x65, 0xa4, 0x4b, 0xd1, 0xee, 0x1b, 0x4e, 0xec, 0x6e, 0x9b, 0x2e, 0x45, 0x88, + 0x66, 0xfd, 0xa3, 0x41, 0x38, 0x7b, 0xd8, 0x03, 0x3e, 0xdb, 0x02, 0xb8, 0xeb, 0x6f, 0x06, 0x6e, + 0xd8, 0x12, 0xf7, 0xfa, 0xd2, 0xa1, 0xb7, 0x3f, 0x9d, 0xf8, 0x62, 0x4a, 0x29, 0x0a, 0xc9, 0xec, + 0x3d, 0x48, 0x60, 0xb6, 0xc6, 0x99, 0x7d, 0x1d, 0xaa, 0x36, 0x6f, 0x06, 0xbb, 0x5c, 0x3e, 0x8f, + 0x8c, 0x5e, 0xfe, 0xec, 0x51, 0x6b, 0x51, 0x74, 0x58, 0x07, 0xc6, 0x36, 0x08, 0x25, 0xc4, 0x4e, + 0x78, 0xb2, 0x6f, 0xc0, 0x28, 0xa5, 0xd2, 0xac, 0x6f, 0xc5, 0xf2, 0x09, 0xe5, 0xf0, 0xf8, 0x6f, + 0x25, 0xb1, 0xaa, 0x28, 0x39, 0xa7, 0xe3, 0x6e, 0x19, 0xce, 0x88, 0x14, 0xff, 0x4d, 0x63, 0x39, + 0xf7, 0x1f, 0x95, 0x61, 0xc2, 0xfc, 0x60, 0xb6, 0x0a, 0xb5, 0x15, 0xdf, 0x8b, 0x3d, 0xb7, 0x6d, + 0x3a, 0x7f, 0x48, 0x65, 0x9a, 0x47, 0x65, 0x4e, 0xa1, 0x6f, 0x44, 0x8e, 0x52, 0xec, 0xd4, 0x62, + 0xc3, 0x8c, 0x62, 0x32, 0x22, 0xa0, 0xf4, 0x06, 0x72, 0xe7, 0x78, 0x81, 0x72, 0x79, 0xa4, 0xa5, + 0x0e, 0xa5, 0x33, 0x31, 0x43, 0xb7, 0x67, 0x89, 0xd9, 0x2e, 0xb0, 0xdb, 0xbd, 0x28, 0xa6, 0x12, + 0x1e, 0x2e, 0xf0, 0xad, 0x20, 0x3c, 0x4a, 0xe0, 0xb7, 0x57, 0x65, 0xe7, 0x3c, 0xdf, 0xe9, 0x45, + 0xb1, 0x13, 0x4a, 0x72, 0x67, 0x13, 0xe9, 0x33, 0x9d, 0x54, 0x50, 0xc3, 0xdc, 0x6d, 0x18, 0xd3, + 0x47, 0x0d, 0x8d, 0x85, 0xbd, 0x8e, 0xa7, 0xdc, 0xe5, 0xc8, 0x58, 0x58, 0x00, 0x6c, 0x82, 0xb3, + 0xe7, 0x64, 0xa4, 0xd4, 0x72, 0x6a, 0x53, 0x9b, 0x46, 0x44, 0xb5, 0x7e, 0xb8, 0x04, 0x27, 0x8b, + 0x0d, 0x4d, 0xd9, 0x47, 0x19, 0xfb, 0x95, 0xd2, 0x41, 0xd6, 0x3d, 0xca, 0x3a, 0xf5, 0xe3, 0x59, + 0xb0, 0x58, 0x7f, 0x6f, 0x20, 0x77, 0xb7, 0x29, 0xe0, 0xc8, 0xae, 0x17, 0x8e, 0x63, 0x49, 0x93, + 0x46, 0xf3, 0xe3, 0x58, 0x38, 0x7a, 0xef, 0xc1, 0x04, 0x32, 0x4e, 0x27, 0x97, 0xf6, 0xf0, 0x43, + 0x4d, 0xd6, 0x9c, 0x4c, 0x32, 0xb8, 0x6c, 0x05, 0x18, 0x42, 0x16, 0x82, 0x58, 0x8b, 0xa9, 0xa3, + 0x69, 0xbf, 0x88, 0xc3, 0x66, 0x10, 0x3b, 0x7a, 0x74, 0x9d, 0x02, 0x22, 0xf6, 0x79, 0x18, 0x57, + 0xc3, 0x49, 0xf9, 0xa5, 0x34, 0x47, 0x19, 0xb5, 0x16, 0x29, 0xc5, 0x94, 0x6d, 0x22, 0xb2, 0x0e, + 0xc5, 0xac, 0x94, 0x40, 0xde, 0xaa, 0xc7, 0x47, 0x08, 0x0c, 0xfa, 0x8a, 0x9c, 0x7d, 0xcf, 0x52, + 0xf2, 0x5c, 0x45, 0xeb, 0xb8, 0x71, 0x66, 0xea, 0x65, 0x79, 0xb3, 0x6d, 0x18, 0xd7, 0x92, 0xea, + 0xd6, 0xe3, 0x23, 0xe4, 0x74, 0x7e, 0x59, 0x56, 0x76, 0x5a, 0xcf, 0xd4, 0x9b, 0xaf, 0xca, 0xe4, + 0xcb, 0xae, 0xc0, 0x28, 0xf6, 0x93, 0x8c, 0xa7, 0xa2, 0xbd, 0x6b, 0x52, 0xaf, 0xaa, 0xa8, 0x2a, + 0x3a, 0x96, 0xf5, 0x9d, 0x32, 0x4c, 0x90, 0x76, 0x8a, 0x4c, 0x94, 0x9f, 0x5a, 0x5b, 0xf2, 0x77, + 0x0d, 0x5b, 0x72, 0x95, 0x86, 0x48, 0xff, 0xb4, 0x23, 0x79, 0xfe, 0xec, 0x00, 0xcb, 0xd3, 0x30, + 0x1b, 0xc6, 0x74, 0xe8, 0xc1, 0x76, 0xdf, 0x6f, 0xa6, 0x19, 0xab, 0xa4, 0xda, 0x11, 0x2d, 0xf9, + 0x23, 0xdb, 0xe0, 0x61, 0xfd, 0x58, 0x19, 0xc6, 0x35, 0xcf, 0x9f, 0xa7, 0xb6, 0xe3, 0xdf, 0x31, + 0x3a, 0x7e, 0x36, 0x89, 0xe0, 0x96, 0x7c, 0xd9, 0x91, 0xfa, 0xbd, 0x07, 0x53, 0x39, 0x92, 0xac, + 0x03, 0x55, 0xe9, 0x28, 0x0e, 0x54, 0xaf, 0xe5, 0x13, 0xd0, 0x50, 0x8e, 0xef, 0x24, 0x7b, 0x80, + 0x9e, 0xf1, 0xe6, 0xc7, 0xcb, 0x30, 0x23, 0x7f, 0x61, 0xde, 0x3a, 0xd2, 0xb3, 0x3e, 0xb5, 0x63, + 0x51, 0x37, 0xc6, 0x62, 0xde, 0x1c, 0x0b, 0xed, 0x03, 0xfb, 0x0f, 0x89, 0xf5, 0xc3, 0x00, 0xb3, + 0xfd, 0x08, 0x8e, 0x1c, 0xf0, 0x35, 0x0d, 0x81, 0x56, 0x3e, 0x42, 0x08, 0xb4, 0x55, 0xa8, 0x61, + 0x55, 0xd2, 0xe5, 0x38, 0xba, 0x67, 0xaf, 0xc8, 0x4e, 0x42, 0x91, 0x85, 0xd2, 0x0c, 0x4a, 0x3f, + 0xe5, 0x28, 0xf3, 0x26, 0x99, 0xa3, 0x64, 0xff, 0x5e, 0x09, 0x26, 0x10, 0xb8, 0xbc, 0x2b, 0x6e, + 0x86, 0x82, 0xd9, 0x80, 0x8c, 0x8d, 0x95, 0x18, 0x73, 0x37, 0xe2, 0xd0, 0xf3, 0xb7, 0xa5, 0x35, + 0xf7, 0xa6, 0xb4, 0xe6, 0x7e, 0x8f, 0xac, 0xd0, 0x2f, 0x36, 0x83, 0xce, 0xa5, 0xed, 0xd0, 0xdd, + 0xf5, 0xc8, 0xa9, 0xcd, 0x6d, 0x5f, 0x52, 0xc1, 0x97, 0x2e, 0xb9, 0x5d, 0xef, 0x12, 0xf6, 0xe9, + 0xa5, 0x0c, 0x2b, 0xb4, 0x94, 0xa7, 0x86, 0x72, 0xac, 0x36, 0xfb, 0x74, 0x6a, 0xb6, 0x88, 0xfd, + 0x00, 0x9c, 0xa2, 0x47, 0xa8, 0xc5, 0xc0, 0x8f, 0x3d, 0xbf, 0x17, 0xf4, 0xa2, 0x05, 0xb7, 0xf9, + 0xa0, 0xd7, 0x8d, 0x64, 0xe4, 0x47, 0xfc, 0xf2, 0x66, 0x52, 0xe8, 0x6c, 0x52, 0xa9, 0x11, 0x93, + 0xb9, 0x98, 0x01, 0xbb, 0x01, 0x53, 0x54, 0x54, 0xef, 0xc5, 0x41, 0xa3, 0xe9, 0xb6, 0x85, 0x14, + 0x3d, 0x8c, 0x5c, 0xc9, 0x64, 0xb5, 0x17, 0x07, 0x4e, 0x44, 0x70, 0xfd, 0x25, 0x35, 0x47, 0xc4, + 0x56, 0x60, 0xd2, 0xe6, 0x6e, 0xeb, 0xb6, 0xfb, 0x68, 0xd1, 0xed, 0xba, 0x4d, 0x2f, 0xa6, 0xc4, + 0x71, 0x15, 0xd2, 0xfe, 0x85, 0xdc, 0x6d, 0x39, 0x1d, 0xf7, 0x91, 0xd3, 0x94, 0x85, 0xa6, 0x21, + 0x90, 0x41, 0x97, 0xb0, 0xf2, 0xfc, 0x84, 0xd5, 0x48, 0x96, 0x95, 0xe7, 0xf7, 0x67, 0x95, 0xd2, + 0x29, 0x56, 0x94, 0x54, 0x98, 0xc2, 0x23, 0x88, 0xbb, 0x4b, 0x49, 0x63, 0x25, 0x33, 0x11, 0x63, + 0xa8, 0x84, 0x2c, 0x2b, 0x8d, 0x4e, 0xcc, 0xbc, 0x8d, 0xd0, 0x8b, 0xb9, 0xfe, 0x85, 0xa3, 0xd8, + 0x2c, 0xec, 0x7f, 0x0c, 0x2c, 0xd1, 0xef, 0x13, 0x73, 0x94, 0x29, 0x37, 0xed, 0x23, 0xc7, 0x72, + 0xdc, 0x8a, 0xbf, 0x32, 0x47, 0x99, 0x70, 0xd3, 0xbf, 0x73, 0x1c, 0xbf, 0x53, 0xe3, 0xd6, 0xe7, + 0x43, 0x73, 0x94, 0xec, 0x8e, 0xe8, 0xb4, 0x98, 0xfb, 0x62, 0x46, 0xcb, 0xb8, 0x0d, 0x13, 0xd8, + 0xb4, 0x97, 0xa4, 0xac, 0x51, 0x0b, 0x55, 0xb1, 0x53, 0x10, 0xc5, 0x21, 0x4b, 0xcc, 0x7e, 0x10, + 0x26, 0xef, 0x45, 0xfc, 0xda, 0xca, 0x5a, 0x43, 0x65, 0xea, 0xc0, 0xc7, 0xff, 0x89, 0xcb, 0x6f, + 0x1e, 0xb2, 0xe9, 0x5c, 0xd4, 0x69, 0xc4, 0x81, 0xc8, 0x69, 0xdc, 0x7a, 0x11, 0x77, 0xb6, 0xbc, + 0x6e, 0x94, 0x64, 0xa9, 0xd2, 0xc7, 0x2d, 0x53, 0x95, 0x75, 0x03, 0xa6, 0x72, 0x6c, 0xd8, 0x04, + 0x80, 0x00, 0x3a, 0xf7, 0xee, 0x34, 0x96, 0xd7, 0x6b, 0xcf, 0xb0, 0x1a, 0x8c, 0xe1, 0xef, 0xe5, + 0x3b, 0xf5, 0x85, 0xd5, 0xe5, 0xa5, 0x5a, 0x89, 0x4d, 0xc1, 0x38, 0x42, 0x96, 0x56, 0x1a, 0x04, + 0x2a, 0x53, 0x32, 0x6d, 0xbb, 0x46, 0x4b, 0x97, 0x22, 0x69, 0x8a, 0x33, 0xc5, 0xfa, 0xeb, 0x65, + 0x38, 0xad, 0x8e, 0x15, 0x1e, 0x8b, 0xbb, 0xb9, 0xe7, 0x6f, 0x3f, 0xe5, 0xa7, 0xc3, 0x35, 0xe3, + 0x74, 0x78, 0x29, 0x73, 0x52, 0x67, 0xbe, 0xf2, 0x80, 0x23, 0xe2, 0x37, 0x47, 0xe0, 0xcc, 0x81, + 0x54, 0xec, 0x03, 0x71, 0x9a, 0x7b, 0xdc, 0x8f, 0x57, 0x5a, 0x6d, 0x2e, 0xe4, 0xda, 0xa0, 0x17, + 0xcb, 0x38, 0x21, 0x2f, 0xe2, 0xdb, 0x38, 0x16, 0x3a, 0x5e, 0xab, 0xcd, 0x9d, 0x98, 0x8a, 0x8d, + 0xe9, 0x96, 0xa7, 0x16, 0x2c, 0x6f, 0x71, 0xde, 0xad, 0xb7, 0xbd, 0x5d, 0xbe, 0xe2, 0xc7, 0x3c, + 0xdc, 0x45, 0x3f, 0xcf, 0x84, 0xe5, 0x03, 0xce, 0xbb, 0x8e, 0x2b, 0x4a, 0x1d, 0x4f, 0x16, 0x9b, + 0x2c, 0x73, 0xd4, 0xec, 0x9a, 0xc6, 0x12, 0xaf, 0x06, 0xb7, 0xdd, 0x47, 0xd2, 0xb5, 0x4b, 0x26, + 0xea, 0x4b, 0x58, 0x52, 0x04, 0xae, 0x8e, 0xfb, 0xc8, 0xce, 0x93, 0xb0, 0xaf, 0xc1, 0x09, 0x79, + 0x00, 0xc9, 0x20, 0xe1, 0xea, 0x8b, 0x29, 0x04, 0xf9, 0x2b, 0xe2, 0x36, 0xa7, 0xc2, 0x6c, 0xa8, + 0xc0, 0xff, 0x45, 0x5f, 0x5d, 0xcc, 0x85, 0xad, 0x8b, 0x03, 0x39, 0xd3, 0x1d, 0xb7, 0x79, 0x14, + 0xa9, 0x30, 0x6b, 0x52, 0x87, 0xa7, 0x77, 0xa6, 0xd3, 0xa1, 0x72, 0xbb, 0x2f, 0x25, 0xbb, 0x01, + 0x13, 0x1b, 0x7c, 0x53, 0x1f, 0x9f, 0xa1, 0x64, 0xab, 0xaa, 0x3d, 0xe4, 0x9b, 0xfd, 0x07, 0x27, + 0x43, 0xc7, 0x3c, 0xb4, 0xdf, 0x79, 0xb4, 0xb7, 0x2a, 0x6e, 0xdb, 0x3e, 0x0f, 0xf1, 0xd2, 0x3c, + 0x8c, 0x9b, 0xc1, 0x6c, 0x2a, 0x21, 0x9b, 0xe5, 0x52, 0xcd, 0x8b, 0x91, 0x8d, 0xda, 0x12, 0xee, + 0x88, 0xdb, 0x75, 0xc6, 0xb4, 0xc7, 0xa4, 0x62, 0xdf, 0x80, 0x49, 0x3b, 0xe8, 0xc5, 0x9e, 0xbf, + 0xdd, 0x10, 0xd7, 0x52, 0xbe, 0x4d, 0x07, 0x52, 0x9a, 0xc7, 0x24, 0x53, 0x2a, 0x0d, 0x56, 0x09, + 0xe8, 0x44, 0x12, 0x6a, 0x9c, 0x08, 0x26, 0x01, 0xfb, 0x3a, 0x4c, 0x50, 0x58, 0xe5, 0xa4, 0x82, + 0x11, 0x23, 0xc9, 0xba, 0x59, 0x78, 0xff, 0x4d, 0xe9, 0x89, 0x83, 0xd0, 0xa2, 0x0a, 0x32, 0xdc, + 0xd8, 0x57, 0x64, 0x67, 0xad, 0x79, 0xfe, 0x76, 0x32, 0x8d, 0x01, 0x7b, 0xfe, 0xf5, 0xb4, 0x4b, + 0xba, 0xa2, 0xb9, 0x6a, 0x1a, 0xf7, 0x71, 0x2b, 0xcc, 0xf3, 0x61, 0x31, 0x9c, 0xa9, 0x47, 0x91, + 0x17, 0xc5, 0x32, 0x9a, 0xce, 0xf2, 0x23, 0xde, 0xec, 0x09, 0xe4, 0x8d, 0x20, 0x7c, 0xc0, 0x43, + 0xf2, 0x94, 0x1f, 0x5c, 0xb8, 0xf8, 0x78, 0x7f, 0xfe, 0x55, 0x17, 0x11, 0x1d, 0x19, 0x80, 0xc7, + 0xe1, 0x0a, 0xd5, 0x79, 0x48, 0xb8, 0xda, 0x37, 0x1c, 0xcc, 0x94, 0x7d, 0x1d, 0x4e, 0x2e, 0xba, + 0x11, 0x5f, 0xf1, 0x23, 0xee, 0x47, 0x5e, 0xec, 0xed, 0x72, 0xd9, 0xa9, 0x78, 0xf8, 0x55, 0x29, + 0x81, 0x4d, 0xd3, 0x8d, 0xc4, 0xc2, 0x4c, 0x50, 0x1c, 0x39, 0x28, 0x7a, 0x7e, 0x9c, 0x62, 0x2e, + 0xcc, 0x86, 0x89, 0x46, 0xe3, 0xc6, 0x92, 0xe7, 0x26, 0xeb, 0x6a, 0x1c, 0xfb, 0xeb, 0x55, 0x7c, + 0x07, 0x8e, 0x76, 0x9c, 0x96, 0xe7, 0x26, 0x0b, 0xaa, 0x4f, 0x67, 0x65, 0x38, 0x58, 0xfb, 0x25, + 0xa8, 0x65, 0x87, 0x92, 0x7d, 0x08, 0x23, 0xe4, 0x93, 0xc7, 0xa3, 0x1d, 0xa9, 0xb4, 0x51, 0x2e, + 0x5e, 0x09, 0xdc, 0x24, 0x92, 0x01, 0xfa, 0xc8, 0xe3, 0x8f, 0xeb, 0x36, 0xf8, 0x37, 0x9e, 0xb1, + 0x53, 0x66, 0xac, 0x05, 0x63, 0x34, 0x5a, 0x1c, 0x73, 0x30, 0x65, 0x62, 0x0c, 0xe9, 0x45, 0x19, + 0xfe, 0xe4, 0x79, 0x42, 0x73, 0x82, 0x10, 0x8c, 0x2a, 0x0c, 0xae, 0x0b, 0x00, 0x55, 0x45, 0x68, + 0x9d, 0x86, 0x53, 0x7d, 0xda, 0x6c, 0xed, 0xe2, 0xf3, 0x50, 0x9f, 0x1a, 0xd9, 0x87, 0x30, 0x83, + 0x84, 0x8b, 0x81, 0xef, 0xf3, 0x66, 0x8c, 0xdb, 0x91, 0x32, 0xec, 0xa8, 0x90, 0xfd, 0x3c, 0x7d, + 0x6f, 0x33, 0x41, 0xc8, 0x65, 0xf2, 0x2e, 0xe4, 0x60, 0xfd, 0xcb, 0x32, 0xcc, 0xca, 0x1d, 0xce, + 0xe6, 0xcd, 0x00, 0x55, 0x96, 0x4f, 0xf9, 0x89, 0xba, 0x6c, 0x9c, 0xa8, 0x2f, 0x26, 0x51, 0xb7, + 0x8b, 0x3e, 0xf2, 0x00, 0x47, 0xf6, 0x7b, 0x19, 0x47, 0xf6, 0x43, 0x18, 0x51, 0x46, 0xe0, 0x59, + 0x25, 0xb8, 0xf5, 0x73, 0x69, 0xb7, 0x56, 0xa0, 0x7a, 0x8b, 0xef, 0xa1, 0x6b, 0xa9, 0xe8, 0xdf, + 0x38, 0xbd, 0xb9, 0x55, 0x55, 0xe4, 0x12, 0x1b, 0xff, 0x65, 0xf3, 0x30, 0x88, 0x8e, 0xaa, 0x7a, + 0x9c, 0x31, 0x04, 0xd8, 0xf4, 0x9f, 0xf5, 0x7f, 0x94, 0xe0, 0xf4, 0x6d, 0xd7, 0xef, 0xb9, 0xed, + 0x5b, 0x7c, 0x8f, 0x12, 0x8d, 0x77, 0x68, 0x88, 0xb7, 0xbc, 0x6d, 0x76, 0x09, 0x86, 0x65, 0xf2, + 0x46, 0xe4, 0x5f, 0xa5, 0xc7, 0xb7, 0x7c, 0x3e, 0x47, 0x85, 0xc5, 0x6e, 0xc1, 0xa8, 0x16, 0x94, + 0x43, 0xfa, 0x63, 0xab, 0x9e, 0x57, 0x6d, 0x96, 0x0e, 0xed, 0xc5, 0xc1, 0x3b, 0xdc, 0x34, 0x78, + 0xc7, 0x1d, 0x18, 0x53, 0x2a, 0x32, 0xe4, 0x56, 0x29, 0xe6, 0x36, 0x97, 0x2a, 0xd6, 0x73, 0x41, + 0x3a, 0x46, 0x25, 0x1c, 0x43, 0x73, 0xfc, 0x4e, 0x09, 0xce, 0x66, 0x7b, 0x3e, 0x8d, 0xaf, 0xf3, + 0x71, 0x3f, 0x79, 0x0f, 0x4e, 0x74, 0xb0, 0x03, 0x31, 0xf8, 0x4f, 0x27, 0xe9, 0x42, 0xb9, 0x17, + 0x28, 0x4f, 0xdc, 0xbe, 0x9d, 0x4c, 0x0f, 0xe9, 0x85, 0x2c, 0xf4, 0x87, 0xf4, 0x4e, 0x9e, 0xde, + 0xfa, 0x99, 0x32, 0x3c, 0x77, 0xd0, 0x9c, 0x4c, 0x34, 0xdd, 0xa5, 0x22, 0x4d, 0x37, 0xeb, 0xc2, + 0x34, 0xee, 0x17, 0x8b, 0x3b, 0xbc, 0xf9, 0x00, 0x63, 0xef, 0xdd, 0xa2, 0x41, 0x2b, 0x36, 0x75, + 0x7e, 0xad, 0xd0, 0xd4, 0xf9, 0x24, 0x6d, 0x62, 0x4d, 0xe4, 0x41, 0xaa, 0x48, 0x31, 0x06, 0x76, + 0x11, 0x6b, 0xc6, 0x01, 0xd2, 0x7c, 0xab, 0xf2, 0x69, 0xe0, 0x95, 0x3e, 0x6b, 0x22, 0x3b, 0x32, + 0x98, 0xb8, 0xa1, 0x44, 0xfe, 0x16, 0xaa, 0x44, 0x9f, 0x38, 0x29, 0xd4, 0xea, 0xf5, 0xed, 0x16, + 0xca, 0xa5, 0x7d, 0x0f, 0x26, 0xb5, 0xb4, 0xaf, 0x38, 0xb7, 0x4c, 0xc5, 0x5f, 0x36, 0xf0, 0x12, + 0xbd, 0xe5, 0x66, 0x68, 0xec, 0x09, 0xae, 0xe3, 0x44, 0xd6, 0x4f, 0x96, 0xa1, 0x56, 0xef, 0xc5, + 0x3b, 0x6b, 0x21, 0xdf, 0xe2, 0x21, 0xf7, 0x9b, 0xfc, 0xfb, 0x2c, 0x80, 0x87, 0xf9, 0x71, 0x47, + 0x52, 0xff, 0xfd, 0xd6, 0x24, 0xcc, 0x14, 0x91, 0x89, 0x7e, 0x59, 0x2f, 0xdc, 0xb7, 0x50, 0xcf, + 0xf4, 0xed, 0x12, 0x8c, 0x35, 0x78, 0x33, 0xf0, 0x5b, 0xd7, 0xd0, 0xc9, 0x47, 0xf6, 0x8e, 0x4b, + 0x12, 0xb7, 0x80, 0x3b, 0x5b, 0x19, 0xef, 0x9f, 0xef, 0xed, 0xcf, 0x7f, 0xe9, 0x68, 0x8a, 0x9e, + 0x66, 0x80, 0xaf, 0x0d, 0x31, 0xe6, 0xee, 0x4f, 0xaa, 0xa0, 0xd6, 0xd8, 0x46, 0xb5, 0x6c, 0x01, + 0xc6, 0xe5, 0x69, 0x17, 0xe8, 0x29, 0xef, 0x28, 0x71, 0x85, 0x2a, 0xc8, 0xbd, 0xeb, 0x1a, 0x24, + 0xec, 0x0a, 0x54, 0xee, 0x5d, 0xbe, 0x26, 0x47, 0x41, 0xc5, 0xec, 0xbc, 0x77, 0xf9, 0x1a, 0x6a, + 0x93, 0xc5, 0x84, 0x1e, 0xef, 0x5d, 0x36, 0x7c, 0x58, 0xee, 0x5d, 0xbe, 0xc6, 0xfe, 0x1c, 0x9c, + 0x58, 0xf2, 0x22, 0x59, 0x05, 0x05, 0x93, 0x69, 0x61, 0xd0, 0xba, 0xa1, 0x3e, 0xab, 0xf3, 0x73, + 0x85, 0xab, 0xf3, 0x85, 0x56, 0xc2, 0xc4, 0xa1, 0x48, 0x35, 0xad, 0x6c, 0x6a, 0xbf, 0xe2, 0x7a, + 0xd8, 0x47, 0x30, 0x81, 0xa6, 0x0a, 0x18, 0x5f, 0x07, 0x73, 0x70, 0x0f, 0xf7, 0xa9, 0xf9, 0x8d, + 0xc2, 0x9a, 0xe7, 0xc8, 0xea, 0x14, 0xa3, 0xf4, 0x60, 0xbe, 0x6e, 0x43, 0x69, 0x66, 0x70, 0x66, + 0x37, 0x61, 0x52, 0xde, 0x5e, 0xee, 0x6e, 0xad, 0xef, 0xf0, 0x25, 0x77, 0x4f, 0xbe, 0x9f, 0xa3, + 0x42, 0x44, 0x5e, 0x79, 0x9c, 0x60, 0xcb, 0x89, 0x77, 0xb8, 0xd3, 0x72, 0x0d, 0x39, 0x3f, 0x43, + 0xc8, 0xbe, 0x05, 0xa3, 0xab, 0x41, 0x53, 0x5c, 0x5c, 0x71, 0xe7, 0xa3, 0x27, 0xf4, 0x2f, 0x8b, + 0x8d, 0xaa, 0x4d, 0xe0, 0xcc, 0x6d, 0xe4, 0x7b, 0xfb, 0xf3, 0xef, 0x1e, 0x77, 0xda, 0x68, 0x15, + 0xd8, 0x7a, 0x6d, 0x6c, 0x11, 0xaa, 0x1b, 0x7c, 0x53, 0x7c, 0xad, 0x2f, 0x83, 0x3c, 0xa8, 0x55, + 0xa7, 0xc0, 0xd2, 0x4d, 0x4e, 0xfe, 0x32, 0xdc, 0xe4, 0x24, 0x8c, 0x85, 0x30, 0x85, 0xfd, 0xb3, + 0xe6, 0x46, 0xd1, 0xc3, 0x20, 0x6c, 0x61, 0xfa, 0xfc, 0x7e, 0xce, 0x2e, 0x97, 0x0b, 0x3b, 0xff, + 0x39, 0xea, 0xfc, 0xae, 0xc6, 0xc1, 0x88, 0xc4, 0x92, 0x65, 0xcf, 0xbe, 0x01, 0x13, 0x32, 0x5a, + 0xef, 0xed, 0x6b, 0x75, 0x5c, 0x09, 0x63, 0x46, 0xcc, 0x3b, 0xb3, 0x50, 0xbd, 0x10, 0x23, 0x2c, + 0x09, 0x34, 0xd9, 0xd9, 0x72, 0x4d, 0x03, 0x2b, 0x9d, 0x84, 0xad, 0xc1, 0xe8, 0x12, 0xdf, 0xf5, + 0x9a, 0x1c, 0x83, 0x65, 0xc9, 0x50, 0x10, 0x2a, 0xb0, 0x99, 0x56, 0x42, 0xc7, 0x79, 0x0b, 0x01, + 0x14, 0x7a, 0xcb, 0x74, 0xa0, 0x4d, 0x10, 0xd9, 0x55, 0xa8, 0xac, 0x2c, 0xad, 0xc9, 0x48, 0x10, + 0x53, 0x49, 0x4c, 0xec, 0x35, 0x99, 0x08, 0x92, 0x5e, 0xc8, 0xbc, 0x96, 0x11, 0x47, 0x62, 0x65, + 0x69, 0x8d, 0x6d, 0xc1, 0x38, 0x99, 0x3d, 0x73, 0x97, 0xfa, 0x76, 0xb2, 0x4f, 0xdf, 0x5e, 0x2c, + 0xec, 0xdb, 0x59, 0x69, 0x4e, 0x2d, 0xa9, 0xf5, 0x75, 0x6f, 0xb0, 0x15, 0x37, 0xc2, 0x25, 0xbe, + 0xe5, 0xf6, 0xda, 0x4a, 0x8b, 0xbd, 0xbe, 0xbe, 0x8a, 0xee, 0x2f, 0xf2, 0x46, 0xd8, 0xa2, 0xc2, + 0xa4, 0xff, 0xfa, 0x07, 0x9a, 0xc9, 0xf3, 0x61, 0xef, 0xc0, 0xc0, 0xdd, 0x07, 0xb1, 0x2b, 0x63, + 0x3e, 0xa8, 0x7e, 0x14, 0x20, 0xf5, 0xf9, 0x64, 0xb7, 0xfe, 0xc0, 0x48, 0xa9, 0x83, 0x34, 0x62, + 0x28, 0x6e, 0xb8, 0x61, 0xeb, 0xa1, 0x1b, 0x62, 0x20, 0xc8, 0x69, 0x83, 0x85, 0x56, 0x42, 0x43, + 0xb1, 0x23, 0x01, 0x19, 0x93, 0x02, 0x9d, 0x05, 0xfb, 0x01, 0x38, 0x1d, 0x79, 0xdb, 0x3e, 0xe6, + 0x23, 0x70, 0xdc, 0xf6, 0x76, 0x10, 0x7a, 0xf1, 0x4e, 0xc7, 0x89, 0x7a, 0x5e, 0xcc, 0x31, 0xf8, + 0xc2, 0x44, 0x72, 0xe1, 0x6a, 0x28, 0xbc, 0xba, 0x42, 0x6b, 0x08, 0x2c, 0xfb, 0x54, 0x54, 0x5c, + 0xc0, 0xbe, 0x02, 0xe3, 0xfa, 0x96, 0x1c, 0xcd, 0x9e, 0x38, 0x5b, 0x39, 0x3f, 0x91, 0x1c, 0xd5, + 0xd9, 0x2d, 0x5c, 0x25, 0xfa, 0xd4, 0xce, 0x88, 0xc8, 0x4c, 0xf4, 0xa9, 0xf1, 0x62, 0x36, 0x9c, + 0x8a, 0x48, 0x39, 0xd8, 0xf3, 0xbd, 0x47, 0x18, 0x90, 0x58, 0xba, 0x49, 0x61, 0x10, 0x86, 0xf4, + 0xe8, 0x6b, 0x20, 0xd6, 0xbd, 0x3b, 0x2b, 0x1f, 0xde, 0x8b, 0x78, 0x28, 0xbd, 0xa5, 0x66, 0x88, + 0xf6, 0x9e, 0xef, 0x3d, 0x4a, 0xa1, 0xec, 0x87, 0x4b, 0x70, 0x12, 0x67, 0xc2, 0xe2, 0xea, 0x8a, + 0xd8, 0xde, 0xee, 0x7b, 0xee, 0x42, 0x18, 0x3c, 0x8c, 0x78, 0x38, 0x3b, 0xdb, 0x67, 0xa6, 0xbd, + 0x53, 0x38, 0xd3, 0x5e, 0x92, 0x41, 0xfa, 0xdb, 0x1e, 0x6e, 0xa0, 0xce, 0xae, 0xe7, 0x3a, 0x9b, + 0xc4, 0x49, 0xbf, 0x5d, 0x17, 0xd7, 0x45, 0x0a, 0xd0, 0x9b, 0x03, 0x55, 0x56, 0x9b, 0xbe, 0x39, + 0x50, 0x3d, 0x55, 0x9b, 0xb5, 0xa7, 0xe4, 0x92, 0x94, 0xd3, 0xe8, 0xf6, 0xb5, 0xba, 0x3d, 0xbc, + 0xb6, 0x72, 0xbf, 0xd1, 0x0e, 0x62, 0x7b, 0x0e, 0xb9, 0x48, 0x5a, 0xc1, 0x89, 0xfb, 0xb1, 0x4c, + 0xcd, 0x6f, 0xed, 0xc0, 0x4c, 0xd1, 0xe7, 0xb3, 0xd9, 0x8c, 0xa8, 0x9c, 0xca, 0xc4, 0xcf, 0xc2, + 0xc8, 0x96, 0x17, 0x46, 0xb1, 0xd3, 0xf3, 0x48, 0xb0, 0x19, 0xb4, 0xab, 0x08, 0xb8, 0xe7, 0xb5, + 0xd8, 0x69, 0xa8, 0xe2, 0xf3, 0xb7, 0x28, 0xab, 0x60, 0xd9, 0xb0, 0xf8, 0x7d, 0xcf, 0x6b, 0x59, + 0xff, 0x65, 0x09, 0xcf, 0x4a, 0xf6, 0x2a, 0x66, 0xa8, 0x48, 0x8c, 0xe1, 0xf0, 0x95, 0xc9, 0xed, + 0x66, 0x52, 0xa5, 0x13, 0x0a, 0x7b, 0x0d, 0x86, 0xae, 0xb9, 0x4d, 0x9e, 0xd8, 0x19, 0x22, 0xf2, + 0x16, 0x42, 0xf4, 0xab, 0x13, 0xe1, 0x88, 0x5b, 0x30, 0xed, 0x21, 0xf5, 0x38, 0xe6, 0x11, 0x6d, + 0xf4, 0x8b, 0x75, 0x65, 0x5b, 0x88, 0xb7, 0x60, 0xb9, 0xf7, 0xb8, 0x29, 0x42, 0x26, 0x22, 0x40, + 0x21, 0x07, 0xeb, 0x5f, 0x95, 0xd2, 0xcd, 0x9f, 0xbd, 0x02, 0x03, 0xf6, 0x5a, 0xd2, 0x7e, 0x0a, + 0xf6, 0x98, 0x69, 0x3e, 0x22, 0xb0, 0xaf, 0xc0, 0x09, 0x8d, 0x4f, 0x2e, 0x3c, 0xc1, 0xcb, 0x18, + 0x8b, 0x50, 0x6b, 0x49, 0x71, 0x8c, 0x82, 0x62, 0x1e, 0x78, 0xe5, 0x4f, 0x0b, 0x96, 0xb8, 0xef, + 0x11, 0x6f, 0xed, 0x63, 0x75, 0xde, 0x2d, 0x44, 0xc8, 0x7e, 0x6c, 0x11, 0x07, 0x0a, 0x45, 0x68, + 0xfd, 0x46, 0xc9, 0xd8, 0xd4, 0xd9, 0x39, 0xe3, 0xba, 0x81, 0x1b, 0x50, 0x46, 0xf5, 0x47, 0x17, + 0x8f, 0xb7, 0x01, 0xea, 0xbd, 0x38, 0x58, 0xf6, 0xc3, 0xa0, 0xdd, 0x96, 0x2e, 0x2b, 0x74, 0x27, + 0xec, 0xc5, 0x81, 0xc3, 0x11, 0x6c, 0x04, 0x39, 0x4b, 0x90, 0x0b, 0x23, 0x39, 0x54, 0x3e, 0x6e, + 0x24, 0x07, 0x71, 0x81, 0x32, 0xf6, 0xb1, 0x37, 0x40, 0x2d, 0x08, 0xdd, 0x47, 0xac, 0xeb, 0xed, + 0x3a, 0x51, 0x3b, 0x30, 0x42, 0x69, 0x4b, 0x34, 0xf6, 0x97, 0x4a, 0x70, 0x92, 0x42, 0x22, 0xdc, + 0xe9, 0x75, 0x36, 0x79, 0x78, 0xdf, 0x6d, 0x7b, 0xad, 0x34, 0x69, 0x51, 0xea, 0x84, 0xa8, 0x55, + 0x53, 0x8c, 0x4f, 0xea, 0x34, 0x0a, 0xd1, 0xe0, 0xf8, 0x58, 0xe8, 0xec, 0x26, 0xa5, 0xfa, 0x82, + 0x2f, 0xa6, 0x67, 0x2b, 0x30, 0xba, 0xe6, 0xf9, 0x8b, 0x6e, 0x73, 0x87, 0xa7, 0xa1, 0xcc, 0x5e, + 0xa1, 0x08, 0x27, 0x62, 0x0a, 0x37, 0x77, 0xf8, 0x01, 0x67, 0x8c, 0x4e, 0x6b, 0xfd, 0x6a, 0x09, + 0x5e, 0x38, 0xb4, 0xc1, 0xe2, 0xaa, 0xbc, 0x7c, 0xa4, 0xab, 0xb2, 0xc4, 0x62, 0x5f, 0x85, 0x13, + 0x3a, 0xab, 0xf5, 0xd0, 0xf5, 0xf4, 0x60, 0x2e, 0x05, 0x1d, 0x10, 0x0b, 0x94, 0xac, 0x7c, 0x5d, + 0xcc, 0xc4, 0xfa, 0xbf, 0x4b, 0x30, 0x92, 0xb8, 0x64, 0x3f, 0xa5, 0xf7, 0xae, 0xab, 0xc6, 0xbd, + 0x4b, 0x65, 0xcd, 0x4b, 0xbe, 0x8a, 0xac, 0x12, 0x0b, 0x5e, 0x6e, 0x26, 0x35, 0x07, 0x76, 0x04, + 0xfc, 0x48, 0x19, 0x46, 0xc5, 0x56, 0x4d, 0x96, 0x2b, 0xdf, 0x5f, 0x39, 0xb0, 0x92, 0xef, 0x3a, + 0x52, 0xc2, 0x9f, 0xff, 0xa5, 0x84, 0x2f, 0x9a, 0x3a, 0x85, 0xe8, 0x0d, 0x01, 0xd2, 0x7b, 0x43, + 0x1c, 0xfd, 0x36, 0x42, 0x29, 0xfd, 0xc9, 0xaa, 0xec, 0x09, 0x99, 0xfe, 0xa4, 0x6d, 0x0b, 0x18, + 0xfb, 0x12, 0x0c, 0xde, 0xc3, 0xf7, 0x19, 0x33, 0x24, 0x74, 0xc2, 0x1f, 0x0b, 0x69, 0xbf, 0xef, + 0x45, 0x66, 0x6e, 0x1c, 0x22, 0x64, 0x0d, 0x18, 0x5e, 0x0c, 0xb9, 0x1b, 0xf3, 0x96, 0xec, 0x90, + 0x23, 0x45, 0x19, 0x6d, 0x12, 0x49, 0x36, 0xca, 0xa8, 0xe4, 0x24, 0xf6, 0x31, 0x96, 0x7e, 0x23, + 0x1a, 0xf4, 0x45, 0x4f, 0xed, 0xa0, 0xbf, 0x6f, 0x0c, 0xfa, 0x99, 0xdc, 0xa0, 0xd3, 0xe7, 0x1d, + 0x69, 0xec, 0x7f, 0xab, 0x04, 0x27, 0x8b, 0x09, 0xd9, 0x8b, 0x30, 0x74, 0x77, 0x7d, 0x2d, 0x35, + 0xa2, 0xc5, 0x4f, 0x09, 0xba, 0xa8, 0xbd, 0xb2, 0x65, 0x11, 0x7b, 0x1d, 0x86, 0x3e, 0xb0, 0x17, + 0x53, 0x5b, 0x51, 0xdc, 0xe0, 0xbe, 0x29, 0x44, 0x44, 0xe3, 0x54, 0x93, 0x48, 0xfa, 0xd8, 0x56, + 0x9e, 0xd8, 0xd8, 0xfe, 0x78, 0x19, 0x26, 0xeb, 0xcd, 0x26, 0x8f, 0x22, 0x99, 0xc1, 0xf9, 0xa9, + 0x1d, 0xd8, 0xe2, 0x20, 0xde, 0xc6, 0xb7, 0x1d, 0x69, 0x54, 0xff, 0x61, 0x89, 0x52, 0x21, 0x08, + 0xaa, 0x5d, 0x8f, 0x3f, 0x5c, 0xdf, 0x09, 0x79, 0xb4, 0x13, 0xb4, 0x5b, 0x47, 0xcd, 0xd4, 0x8f, + 0x32, 0x23, 0x66, 0x39, 0xd6, 0xcd, 0x98, 0xb6, 0x10, 0x62, 0xc8, 0x8c, 0x94, 0x09, 0xf9, 0x12, + 0x0c, 0xd7, 0xbb, 0xdd, 0x30, 0xd8, 0xa5, 0x65, 0x2f, 0xb3, 0x5f, 0xb9, 0x04, 0x32, 0xe2, 0xaa, + 0x12, 0x48, 0x34, 0x63, 0x89, 0xfb, 0x7b, 0xba, 0xe5, 0x6a, 0x8b, 0xfb, 0xfa, 0xed, 0x09, 0xcb, + 0xad, 0x06, 0xb0, 0xb5, 0x30, 0xe8, 0x04, 0x31, 0x6f, 0xd1, 0xf7, 0x60, 0x38, 0xda, 0x43, 0x33, + 0x87, 0xac, 0x7b, 0x71, 0xdb, 0xc8, 0x1c, 0x12, 0x0b, 0x80, 0x4d, 0x70, 0x71, 0x76, 0x9f, 0x31, + 0xfa, 0x74, 0x29, 0xdc, 0xb3, 0x7b, 0xfe, 0xb2, 0x1f, 0x7a, 0xcd, 0x1d, 0x8c, 0xf3, 0x71, 0x07, + 0xc0, 0xe6, 0x6e, 0x14, 0xf8, 0x9a, 0xb0, 0x76, 0x51, 0x88, 0x5f, 0x21, 0x42, 0xf3, 0x0a, 0x92, + 0x29, 0xc9, 0x29, 0xa5, 0xb2, 0x35, 0x0e, 0xac, 0x0e, 0xe3, 0xf4, 0x4b, 0x7c, 0x4c, 0x37, 0x11, + 0xc4, 0x9f, 0xa5, 0xa8, 0x1b, 0xc8, 0xb2, 0x8b, 0x25, 0x66, 0x30, 0x30, 0x8d, 0xc2, 0xfa, 0xbf, + 0x06, 0x61, 0x4c, 0x1f, 0x52, 0x66, 0xc1, 0x10, 0xc5, 0x14, 0xd7, 0xa3, 0x42, 0xbb, 0x08, 0xb1, + 0x65, 0x49, 0x1a, 0x52, 0xbd, 0x7c, 0x68, 0x48, 0xf5, 0x0d, 0x18, 0x5f, 0x0b, 0x03, 0xcc, 0x2d, + 0x86, 0x36, 0x25, 0x72, 0xff, 0x9e, 0xd6, 0xd4, 0x1b, 0x62, 0xf6, 0xa1, 0xd5, 0x0a, 0x5e, 0x20, + 0xbb, 0x12, 0xdb, 0x11, 0xa2, 0xaf, 0xa1, 0xdc, 0x33, 0xf8, 0x90, 0x41, 0x9c, 0xf8, 0x12, 0x3d, + 0xcd, 0x27, 0x7d, 0xb4, 0x69, 0x10, 0x27, 0x20, 0xfa, 0x06, 0x31, 0xf8, 0xa4, 0x36, 0x08, 0xf6, + 0x33, 0x25, 0x18, 0xad, 0xfb, 0xbe, 0x0c, 0xd5, 0x7e, 0x48, 0x1c, 0xd8, 0xaf, 0x4a, 0x9b, 0xb8, + 0x77, 0x3f, 0x96, 0x4d, 0x1c, 0x0a, 0x5b, 0x11, 0x4a, 0xea, 0x69, 0x85, 0x46, 0x74, 0xc4, 0x14, + 0xcc, 0xde, 0x85, 0x5a, 0xb2, 0x32, 0x57, 0xfc, 0x16, 0x7f, 0xc4, 0xa3, 0xd9, 0xe1, 0xb3, 0x95, + 0xf3, 0xe3, 0x32, 0xcb, 0xaa, 0x2e, 0x99, 0x67, 0x11, 0xd9, 0x3a, 0x80, 0x9b, 0x2c, 0x09, 0xf9, + 0x54, 0x7f, 0x3a, 0x7d, 0x56, 0xcd, 0xac, 0x19, 0xf5, 0xa2, 0x24, 0x7e, 0xa3, 0xd9, 0x81, 0xf9, + 0xa2, 0x94, 0x2c, 0xad, 0x0e, 0x4c, 0xd6, 0xa3, 0xa8, 0xd7, 0xe1, 0x8d, 0xd8, 0x0d, 0x63, 0x4c, + 0x4c, 0x0f, 0x47, 0xb7, 0x10, 0x77, 0x91, 0x54, 0xcc, 0x88, 0x30, 0x76, 0x0a, 0xb2, 0xd4, 0x67, + 0x79, 0x53, 0x4e, 0x5b, 0xfb, 0x54, 0xbe, 0xbd, 0xb4, 0x52, 0x7f, 0xbc, 0x04, 0x27, 0xf5, 0x49, + 0xdf, 0xe8, 0x6d, 0xca, 0x9c, 0x6c, 0xec, 0x22, 0x8c, 0xc8, 0x39, 0x99, 0x5c, 0x22, 0xf3, 0xf9, + 0xf5, 0x53, 0x14, 0xb6, 0x2c, 0xa6, 0xa1, 0xe0, 0x21, 0x6f, 0x1d, 0xd3, 0x99, 0xcd, 0x55, 0x14, + 0xe1, 0xc3, 0xe2, 0x33, 0x34, 0x3f, 0xc5, 0x6f, 0x73, 0x7e, 0x0a, 0x88, 0xf5, 0x45, 0x98, 0x32, + 0x47, 0xa2, 0xc1, 0x63, 0x76, 0x01, 0x86, 0xd5, 0xf0, 0x95, 0x8a, 0x87, 0x4f, 0x95, 0x5b, 0x1b, + 0xc0, 0x72, 0xf4, 0x11, 0x1a, 0xaf, 0x8a, 0xfb, 0x39, 0xbd, 0xb1, 0x28, 0xd3, 0x91, 0x1c, 0xe2, + 0xc2, 0xb4, 0x6c, 0xdf, 0xa8, 0x11, 0x2e, 0x01, 0xf3, 0xd3, 0x7d, 0x67, 0x1a, 0xa6, 0x0b, 0x0e, + 0x8a, 0x43, 0x04, 0xb9, 0x79, 0x73, 0x83, 0x18, 0x49, 0xc2, 0x48, 0xab, 0x6d, 0xe1, 0x8b, 0x30, + 0x78, 0xe8, 0x76, 0x40, 0x61, 0x38, 0x32, 0xbb, 0x00, 0x91, 0x7d, 0x2a, 0xc2, 0x9c, 0x1e, 0x87, + 0x7e, 0xf0, 0x89, 0xc5, 0xa1, 0xc7, 0x88, 0x8d, 0xda, 0x26, 0x6e, 0x46, 0x91, 0xc4, 0x02, 0x27, + 0xb7, 0x6d, 0x99, 0x24, 0xc4, 0x23, 0x0a, 0xda, 0xbb, 0x5c, 0xf2, 0x18, 0xd6, 0x79, 0x60, 0x41, + 0x21, 0x0f, 0x8d, 0x84, 0xfd, 0x72, 0x09, 0x98, 0x84, 0xe8, 0x7b, 0x56, 0xf5, 0xa0, 0x3d, 0xab, + 0xf5, 0x64, 0xf6, 0xac, 0x33, 0xaa, 0x8d, 0xc5, 0x7b, 0x57, 0x41, 0xb3, 0xd8, 0xdf, 0x2c, 0xc1, + 0x14, 0x85, 0x1b, 0xd7, 0x1b, 0x7b, 0x60, 0x08, 0xe9, 0xe6, 0x93, 0x69, 0xec, 0x73, 0x11, 0x56, + 0xdb, 0xa7, 0xad, 0xf9, 0x46, 0xb1, 0x1f, 0x00, 0x48, 0x56, 0x14, 0xe5, 0xe8, 0x1b, 0xbd, 0xfc, + 0x5c, 0xc1, 0x2e, 0x90, 0x20, 0xa5, 0x89, 0xf0, 0xe3, 0x84, 0xce, 0x70, 0xd6, 0x4c, 0xa0, 0xec, + 0xcf, 0x51, 0x46, 0xad, 0x04, 0x22, 0x53, 0x37, 0xcc, 0x8e, 0x62, 0x2d, 0x9f, 0xed, 0x2f, 0xc8, + 0x5d, 0x2c, 0x22, 0xa3, 0x8c, 0x8e, 0x89, 0x2b, 0x45, 0x18, 0x77, 0xb2, 0x59, 0xb5, 0xb2, 0x14, + 0x98, 0x11, 0x05, 0x5b, 0x4f, 0xc9, 0xea, 0xfb, 0xec, 0x6f, 0xa7, 0xd5, 0x5a, 0xa0, 0xfd, 0x2d, + 0xe3, 0x1d, 0x8c, 0x20, 0xf6, 0x01, 0xb0, 0x24, 0x4e, 0x37, 0xc1, 0xb8, 0x4a, 0x64, 0x4f, 0xaf, + 0x1a, 0x69, 0xbc, 0xef, 0x50, 0x15, 0xeb, 0x93, 0x24, 0x4f, 0xcc, 0x38, 0xcc, 0xc8, 0x8f, 0x16, + 0x50, 0x8a, 0xff, 0xb1, 0xb2, 0x14, 0xcd, 0x4e, 0x18, 0x89, 0x31, 0xd2, 0x92, 0x85, 0xe7, 0x65, + 0x3b, 0x4f, 0x26, 0x81, 0x44, 0xcc, 0x18, 0x1b, 0x85, 0xec, 0xd8, 0x55, 0x18, 0xc1, 0x70, 0x6b, + 0x37, 0x94, 0x49, 0xae, 0x34, 0x0f, 0xc4, 0xc0, 0x6c, 0xce, 0x8e, 0x69, 0x58, 0x9b, 0xa2, 0x8a, + 0x3b, 0x0c, 0x49, 0x80, 0xf8, 0xf6, 0x20, 0x95, 0x34, 0xad, 0x70, 0xcf, 0x09, 0x7b, 0x66, 0x28, + 0x3f, 0x44, 0x62, 0xdf, 0x80, 0xd1, 0xdb, 0xee, 0x23, 0xa5, 0x16, 0x92, 0xef, 0x0b, 0x87, 0xf9, + 0x36, 0xe2, 0xd7, 0x74, 0xdc, 0x47, 0x4e, 0xab, 0x97, 0x8d, 0x55, 0x4c, 0xbe, 0x8d, 0x1a, 0x4b, + 0xf6, 0x35, 0x00, 0xed, 0x41, 0x84, 0x1d, 0x5a, 0xc1, 0x0b, 0x2a, 0xdd, 0x4b, 0xe1, 0x43, 0x09, + 0xf2, 0xd7, 0x18, 0x66, 0x24, 0x87, 0x99, 0x4f, 0x4f, 0x72, 0x38, 0xf1, 0xe9, 0x49, 0x0e, 0xf4, + 0x1e, 0x47, 0x63, 0x8f, 0x3b, 0xf8, 0x9e, 0x7c, 0x8e, 0x38, 0xa8, 0x36, 0x65, 0x1f, 0x51, 0xc3, + 0xa3, 0x60, 0x2f, 0x53, 0x45, 0x86, 0x1f, 0x0b, 0xa1, 0x96, 0xbd, 0x18, 0xcc, 0x9e, 0x32, 0xec, + 0x87, 0x0f, 0xbc, 0x44, 0x90, 0xba, 0x55, 0x4e, 0x23, 0x87, 0x27, 0x70, 0x5d, 0xa8, 0xcb, 0x5d, + 0x3c, 0xee, 0xc3, 0xa8, 0x64, 0x87, 0x97, 0xd3, 0x59, 0xc3, 0x94, 0xd4, 0xa8, 0x4e, 0x94, 0x4b, + 0xc3, 0x1e, 0x79, 0x38, 0x65, 0xae, 0xae, 0x3a, 0x23, 0xd6, 0x81, 0xda, 0x6a, 0xe0, 0x6f, 0xaf, + 0xf3, 0xb0, 0x83, 0x81, 0x77, 0xc4, 0xde, 0x74, 0xda, 0xf0, 0x94, 0x51, 0xc5, 0x46, 0x7c, 0x1e, + 0xcf, 0xdf, 0xa6, 0xcf, 0x68, 0x07, 0xfe, 0xb6, 0x13, 0xf3, 0xb0, 0x43, 0x11, 0x7d, 0x4c, 0xeb, + 0xc5, 0x1c, 0x6b, 0xf6, 0x67, 0x61, 0x2e, 0xb7, 0x42, 0xa9, 0xf5, 0x62, 0xd9, 0xcf, 0x19, 0x96, + 0x24, 0xd9, 0x72, 0x74, 0x01, 0x7c, 0x46, 0x9d, 0x46, 0xb8, 0xf8, 0xe5, 0xe4, 0x33, 0xf7, 0x80, + 0x03, 0x6a, 0x98, 0xdb, 0x84, 0xd3, 0x7d, 0xf7, 0xd5, 0x82, 0xd4, 0x9e, 0x97, 0xcc, 0xd4, 0x9e, + 0xa7, 0xfb, 0xc9, 0x5f, 0x91, 0x96, 0xde, 0xf3, 0xe6, 0x40, 0x75, 0xba, 0x36, 0xd3, 0x5f, 0x74, + 0xfd, 0x6e, 0x39, 0x23, 0x8f, 0xc9, 0xab, 0xf2, 0x59, 0x28, 0x1f, 0x20, 0xb0, 0x96, 0x57, 0x96, + 0xc4, 0xdd, 0x18, 0x25, 0x36, 0x2d, 0x1b, 0x73, 0xcf, 0x7c, 0xd0, 0x22, 0xd9, 0xed, 0x93, 0x8a, + 0x66, 0xef, 0xc1, 0x44, 0x83, 0xbb, 0x61, 0x73, 0xe7, 0x16, 0xdf, 0x7b, 0x18, 0x84, 0x2d, 0x15, + 0x0b, 0x82, 0x92, 0xc5, 0x60, 0x89, 0x19, 0xb8, 0x4a, 0xc7, 0x65, 0x4b, 0x2a, 0x14, 0xdb, 0x20, + 0xd6, 0x7e, 0xba, 0xf0, 0x88, 0x13, 0x08, 0x07, 0x45, 0x69, 0x63, 0x6f, 0x25, 0x52, 0x3c, 0x57, + 0x71, 0x6b, 0xa5, 0x4f, 0xae, 0x04, 0x16, 0x08, 0xf3, 0x3c, 0xb4, 0x7e, 0xaf, 0x02, 0x8c, 0x6a, + 0x5a, 0x74, 0xbb, 0x2e, 0x06, 0x3f, 0xf4, 0x30, 0xc5, 0x43, 0x4d, 0xe2, 0xb8, 0x9b, 0x6d, 0xae, + 0xe7, 0x47, 0x91, 0xfe, 0x31, 0x49, 0x99, 0x93, 0xbd, 0x05, 0xe7, 0x08, 0xfb, 0x9c, 0x83, 0xe5, + 0x4f, 0x72, 0x0e, 0x7e, 0x03, 0x9e, 0xad, 0x77, 0xbb, 0x6d, 0xaf, 0x99, 0xd4, 0x72, 0x2d, 0x08, + 0xd5, 0xec, 0x35, 0x62, 0x3c, 0xb9, 0x09, 0x5a, 0xae, 0xa5, 0x07, 0xb1, 0xd0, 0x84, 0x58, 0xd2, + 0x1b, 0xe8, 0x61, 0x5a, 0xd5, 0x3e, 0x51, 0xa4, 0x69, 0xd0, 0x48, 0x14, 0x0f, 0x2f, 0x54, 0x42, + 0xec, 0x60, 0x9a, 0x3e, 0x53, 0x59, 0x34, 0x14, 0x0b, 0xc2, 0x09, 0x09, 0x7b, 0x0f, 0x46, 0xeb, + 0xbd, 0x38, 0x90, 0x8c, 0xa5, 0x63, 0x57, 0xea, 0x82, 0x25, 0x9b, 0x62, 0xdc, 0x8b, 0x53, 0x74, + 0xeb, 0x0f, 0x2a, 0x70, 0x3a, 0x3f, 0xbc, 0xb2, 0x34, 0x59, 0x1f, 0xa5, 0x43, 0xd6, 0x47, 0xd1, + 0x6c, 0x28, 0xa7, 0xf9, 0xdd, 0x9f, 0xc4, 0x6c, 0xa0, 0xc0, 0x8b, 0x1f, 0x73, 0x36, 0x34, 0xc4, + 0x5e, 0x9f, 0x0a, 0x43, 0x03, 0x1f, 0x57, 0x18, 0xd2, 0xb9, 0xb0, 0x0b, 0x30, 0x48, 0xd1, 0x69, + 0x07, 0xd3, 0x77, 0xd5, 0x6c, 0x60, 0x5a, 0xc2, 0x60, 0x7f, 0x16, 0xce, 0xd2, 0x9e, 0x94, 0xfd, + 0xd8, 0x85, 0x3d, 0xc5, 0x51, 0x0e, 0xdc, 0xe5, 0xc7, 0xfb, 0xf3, 0x17, 0x49, 0xf9, 0xe7, 0xe4, + 0xba, 0xcd, 0xd9, 0xdc, 0x73, 0x54, 0xcb, 0xb4, 0x4a, 0x0e, 0xe5, 0x6d, 0xfd, 0x20, 0xcc, 0x52, + 0xf2, 0xb2, 0x82, 0x95, 0x7c, 0xc8, 0x4a, 0x29, 0x7d, 0xe2, 0x95, 0x62, 0x3d, 0x2e, 0xc1, 0x7c, + 0xbf, 0xea, 0x8f, 0x3b, 0xd3, 0x6e, 0xc2, 0x38, 0xed, 0x8e, 0xf5, 0x48, 0xbf, 0x4d, 0x53, 0x96, + 0x5c, 0xac, 0xc3, 0xa1, 0xfd, 0xd4, 0x71, 0xa3, 0x5c, 0x2b, 0x4d, 0xd2, 0xec, 0xac, 0xa8, 0x3c, + 0x89, 0x59, 0x61, 0x3d, 0x82, 0xd3, 0x4a, 0x1a, 0x48, 0x22, 0x38, 0xaa, 0x72, 0xf1, 0x95, 0x0f, + 0x52, 0x55, 0x39, 0x7e, 0x65, 0x46, 0x94, 0xc0, 0x72, 0x76, 0x05, 0xaa, 0xf5, 0xb5, 0x15, 0x3c, + 0xe3, 0xf5, 0x60, 0x9f, 0x6e, 0xd7, 0x23, 0xa1, 0xc0, 0x08, 0x90, 0x25, 0x11, 0xad, 0x1f, 0x2d, + 0xc3, 0xd8, 0x5a, 0xbb, 0xb7, 0xed, 0xf9, 0x4b, 0x6e, 0xec, 0x3e, 0xb5, 0x8a, 0xf9, 0xb7, 0x0d, + 0xc5, 0x7c, 0xe2, 0xfd, 0x9e, 0x7c, 0xd8, 0x91, 0xb4, 0xf2, 0x3f, 0x5d, 0x82, 0xc9, 0x94, 0x84, + 0x84, 0x91, 0x1b, 0x30, 0x20, 0x7e, 0x48, 0xcd, 0xcf, 0xd9, 0x1c, 0x63, 0xc4, 0xba, 0x98, 0xfc, + 0x25, 0x55, 0xe5, 0xae, 0x69, 0xb3, 0x24, 0x8a, 0xe7, 0x3e, 0x07, 0x23, 0x29, 0xdb, 0xbc, 0x8c, + 0x33, 0xa3, 0xcb, 0x38, 0x23, 0x7a, 0x9e, 0xf2, 0x5f, 0x2b, 0x41, 0x2d, 0xfb, 0x25, 0xec, 0x16, + 0x0c, 0x0b, 0x4e, 0x1e, 0x8f, 0xb2, 0x11, 0x9d, 0x32, 0x98, 0x17, 0x25, 0x1a, 0x35, 0x0f, 0x3b, + 0x9f, 0x13, 0xc4, 0x56, 0x1c, 0xe6, 0x6c, 0x8c, 0xee, 0x9e, 0x60, 0x15, 0xb4, 0xee, 0x35, 0x53, + 0x02, 0x3b, 0x59, 0xdc, 0x0f, 0x7a, 0xab, 0xff, 0x5d, 0xa3, 0xd5, 0x52, 0xb8, 0x3a, 0x67, 0x4c, + 0xae, 0xc2, 0xa9, 0x8c, 0x93, 0x06, 0x13, 0xa6, 0xcb, 0x2d, 0xae, 0xac, 0x07, 0x40, 0xcf, 0x6d, + 0x63, 0x09, 0x1e, 0x7b, 0x0d, 0x86, 0xa8, 0x3e, 0x3d, 0x52, 0x65, 0x17, 0x21, 0xfa, 0x25, 0x91, + 0x70, 0xac, 0x9f, 0xaf, 0xc0, 0xc9, 0xb4, 0x79, 0xf7, 0xba, 0x2d, 0x37, 0xe6, 0x6b, 0x6e, 0xe8, + 0x76, 0xa2, 0x43, 0x56, 0xc0, 0xf9, 0x5c, 0xd3, 0x64, 0x8c, 0x1d, 0x82, 0x69, 0x0d, 0xb2, 0x32, + 0x0d, 0xc2, 0x07, 0x00, 0x6a, 0x90, 0x6a, 0x06, 0xbb, 0x05, 0x95, 0x06, 0x8f, 0xe5, 0xd9, 0x72, + 0x2e, 0xd7, 0xab, 0x7a, 0xbb, 0x2e, 0x36, 0x78, 0x4c, 0x83, 0x48, 0xa1, 0xe5, 0x8d, 0x68, 0x36, + 0x82, 0x0b, 0xdb, 0x80, 0xa1, 0xe5, 0x47, 0x5d, 0xde, 0x8c, 0x31, 0x43, 0xab, 0x16, 0xd6, 0xa5, + 0x98, 0x1f, 0xe1, 0x12, 0xcb, 0x19, 0x79, 0xeb, 0x32, 0xb3, 0xd1, 0x4b, 0x76, 0x73, 0x57, 0xa1, + 0xaa, 0x2a, 0x3f, 0xce, 0xcc, 0x9d, 0x7b, 0x1b, 0x46, 0xb5, 0x4a, 0x8e, 0x35, 0xe9, 0x7f, 0xa1, + 0x04, 0x20, 0x36, 0x5c, 0x39, 0x71, 0x96, 0x73, 0xb2, 0x70, 0x29, 0x8d, 0x66, 0x2a, 0xf7, 0xee, + 0x07, 0xb2, 0xe8, 0x00, 0xa1, 0x78, 0x05, 0x26, 0x1b, 0x0f, 0xbc, 0x6e, 0x9a, 0x7f, 0xcf, 0x90, + 0x38, 0xa2, 0x07, 0x5e, 0xd7, 0x91, 0x5a, 0xab, 0xec, 0x29, 0x90, 0xa5, 0xb3, 0xfe, 0x9f, 0x12, + 0x0c, 0x89, 0xbf, 0xee, 0x5f, 0x7d, 0x4a, 0xb7, 0xcc, 0x2b, 0xc6, 0x96, 0x39, 0xa5, 0x25, 0xe8, + 0xc5, 0x8d, 0xe3, 0xea, 0x21, 0x9b, 0xe5, 0xbe, 0x1c, 0x20, 0x42, 0x66, 0xd7, 0x61, 0x58, 0x9a, + 0x6d, 0x4a, 0xf7, 0x34, 0x3d, 0xe3, 0xaf, 0x32, 0xe8, 0x4c, 0xd4, 0x5b, 0x41, 0x37, 0xab, 0x0f, + 0x54, 0xd4, 0xe2, 0xde, 0xa2, 0x32, 0x21, 0x92, 0x8e, 0x32, 0x65, 0xb3, 0x18, 0xf8, 0x94, 0xaf, + 0x36, 0x5a, 0x38, 0x25, 0x39, 0xf5, 0x8b, 0x15, 0x59, 0x97, 0xef, 0x97, 0x95, 0x83, 0x98, 0x9c, + 0x94, 0x4c, 0x8a, 0x9f, 0x36, 0x3b, 0x70, 0xb2, 0xd1, 0xb8, 0x81, 0x26, 0xde, 0x6b, 0x41, 0x18, + 0x5f, 0x0b, 0xc2, 0x87, 0x32, 0x38, 0x57, 0xc3, 0xb4, 0x1a, 0x2a, 0x32, 0x87, 0x7c, 0xa5, 0xd0, + 0x1c, 0xf2, 0x00, 0xcb, 0x22, 0xcb, 0x87, 0x53, 0x8d, 0xc6, 0x0d, 0x92, 0x78, 0xfe, 0x38, 0xea, + 0xfb, 0xb5, 0x12, 0x4c, 0x35, 0x1a, 0x37, 0x32, 0x55, 0xad, 0xaa, 0x34, 0xb5, 0x25, 0xc3, 0x74, + 0xa1, 0xb8, 0x23, 0x70, 0x14, 0x4a, 0x24, 0xc1, 0x36, 0x8d, 0xac, 0x3c, 0xc4, 0x84, 0xad, 0x25, + 0x89, 0x71, 0xcb, 0x86, 0xcb, 0x62, 0x9f, 0x0f, 0x4d, 0xfd, 0xc6, 0x48, 0x28, 0x33, 0x9f, 0x77, + 0x04, 0xc4, 0xfa, 0xed, 0x93, 0x94, 0x7a, 0x57, 0xcd, 0x96, 0x2f, 0xc0, 0x98, 0xa4, 0x47, 0xbf, + 0x3e, 0x69, 0xc5, 0x75, 0x5a, 0x6c, 0x90, 0x5b, 0x04, 0xa7, 0xa4, 0x87, 0xdf, 0xdb, 0x9f, 0x1f, + 0x10, 0x5d, 0x63, 0x1b, 0xe8, 0xec, 0x2e, 0x8c, 0xdf, 0x76, 0x1f, 0x69, 0xba, 0x3c, 0xf2, 0xda, + 0xbe, 0x20, 0x76, 0x95, 0x8e, 0xfb, 0xe8, 0x08, 0x86, 0xcd, 0x26, 0x3d, 0x7b, 0x00, 0x13, 0xe6, + 0x37, 0xc9, 0x19, 0x98, 0x1f, 0xb1, 0x37, 0x0b, 0x47, 0xec, 0x74, 0x37, 0x08, 0x63, 0x67, 0x2b, + 0x21, 0x37, 0xd2, 0x4c, 0x67, 0x58, 0xb3, 0x2f, 0xc0, 0x94, 0x96, 0xfb, 0xe8, 0x5a, 0x10, 0x76, + 0x5c, 0x75, 0xa1, 0xc4, 0x07, 0x2e, 0x34, 0x24, 0xdc, 0x42, 0xb0, 0x9d, 0xc7, 0x64, 0x5f, 0x29, + 0xf2, 0x84, 0x1f, 0x4c, 0xad, 0xbb, 0x0b, 0x3c, 0xe1, 0xfb, 0x59, 0x77, 0xe7, 0x7d, 0xe2, 0xb7, + 0x0f, 0xf2, 0xfe, 0xa8, 0xd2, 0xd7, 0x1f, 0xc9, 0xbb, 0x23, 0x19, 0xb9, 0x3e, 0x5e, 0x1e, 0x97, + 0xa1, 0xb2, 0xb0, 0x76, 0x0d, 0x9f, 0x65, 0x95, 0x05, 0xa5, 0xbf, 0xe3, 0xfa, 0x4d, 0xbc, 0xe8, + 0x49, 0xd7, 0x29, 0xfd, 0xa0, 0x5c, 0x58, 0xbb, 0xc6, 0x5c, 0x98, 0x5e, 0xe3, 0x61, 0xc7, 0x8b, + 0x3f, 0x7c, 0xf3, 0x4d, 0x6d, 0xa8, 0xaa, 0xd8, 0xb4, 0x4b, 0xb2, 0x69, 0xf3, 0x5d, 0x44, 0x71, + 0x1e, 0xbd, 0xf9, 0x66, 0xe1, 0x80, 0x24, 0x0d, 0x2b, 0xe2, 0x25, 0x0e, 0xac, 0xdb, 0xee, 0xa3, + 0xd4, 0xcf, 0x34, 0x92, 0x31, 0x45, 0xce, 0xa8, 0xa9, 0x95, 0xfa, 0xa8, 0x1a, 0x07, 0x96, 0x49, + 0x24, 0xee, 0xe9, 0xe9, 0x04, 0x8b, 0xa4, 0x37, 0xf6, 0x9c, 0xd2, 0x55, 0xab, 0xc0, 0x33, 0xfa, + 0xb5, 0x42, 0x43, 0x67, 0xf7, 0x12, 0x6d, 0x03, 0xdd, 0xa1, 0x64, 0x28, 0xc4, 0x4b, 0xba, 0xb6, + 0x81, 0x74, 0x77, 0xc6, 0x67, 0x4d, 0x26, 0x2a, 0x2a, 0x72, 0xbc, 0xb5, 0x4d, 0x2e, 0x79, 0x25, + 0xc6, 0xd8, 0xf1, 0x95, 0x18, 0x1c, 0x06, 0x56, 0x83, 0xe6, 0x03, 0x99, 0xdf, 0xe3, 0x03, 0xb1, + 0x0b, 0xb7, 0x83, 0xe6, 0x83, 0x27, 0xe7, 0xd5, 0x82, 0xec, 0xd9, 0x1d, 0x0a, 0xc5, 0x16, 0xb6, + 0x64, 0x9f, 0x48, 0x4f, 0x89, 0x99, 0xe4, 0xbe, 0xa6, 0x95, 0xa5, 0x01, 0xda, 0xc2, 0x96, 0xea, + 0x5a, 0xdb, 0x24, 0x67, 0x1c, 0x6a, 0x4b, 0x3c, 0x7a, 0x10, 0x07, 0xdd, 0xc5, 0xb6, 0xd7, 0xc5, + 0xe8, 0x86, 0x32, 0x43, 0xe6, 0x91, 0xf7, 0xe4, 0x16, 0xd1, 0x3b, 0x4d, 0xc5, 0xc0, 0xce, 0xb1, + 0x64, 0x5f, 0x81, 0x09, 0x31, 0xb9, 0x97, 0x1f, 0xc5, 0xdc, 0xa7, 0x91, 0x9f, 0x42, 0x89, 0x6e, + 0x46, 0x4b, 0x58, 0x9f, 0x14, 0xd2, 0x9c, 0xc2, 0xc5, 0xce, 0x13, 0x02, 0x23, 0x37, 0x8a, 0xc1, + 0x8a, 0xb5, 0x60, 0xf6, 0xb6, 0xfb, 0x28, 0xbd, 0x68, 0xea, 0x93, 0x94, 0xe1, 0x04, 0x3b, 0xff, + 0x78, 0x7f, 0xfe, 0x25, 0x31, 0xc1, 0xd2, 0xa4, 0xad, 0x7d, 0xe6, 0x6b, 0x5f, 0x4e, 0xec, 0x5b, + 0x70, 0x4a, 0x7e, 0xd6, 0x92, 0x17, 0xa2, 0x2b, 0xd9, 0x5e, 0x63, 0xc7, 0x45, 0x17, 0xf3, 0xe9, + 0x3e, 0x1d, 0x76, 0xa9, 0x78, 0x4b, 0x54, 0x1d, 0xd6, 0x52, 0x7c, 0x9c, 0x88, 0x18, 0xd9, 0xfd, + 0x6a, 0x60, 0x1f, 0xc1, 0x04, 0xbd, 0x45, 0xdf, 0x08, 0xa2, 0x18, 0x55, 0x04, 0x33, 0xc7, 0x73, + 0xfd, 0xa2, 0x07, 0x6e, 0x72, 0x06, 0xcd, 0xa8, 0x14, 0x32, 0x9c, 0xd9, 0xbb, 0x68, 0xb4, 0x4c, + 0xd9, 0x8b, 0x56, 0xd6, 0xf0, 0x4d, 0x45, 0x9e, 0x40, 0x5d, 0xcf, 0x77, 0xd4, 0xdd, 0xbf, 0x9b, + 0x6c, 0x17, 0x3a, 0x36, 0xdb, 0x80, 0xd1, 0x46, 0xe3, 0xc6, 0x35, 0x4f, 0xc8, 0x25, 0x5d, 0xf5, + 0x44, 0x92, 0x6f, 0xe5, 0x8b, 0x85, 0xad, 0x1c, 0x8f, 0xa2, 0x1d, 0x67, 0xcb, 0x6b, 0x73, 0xa7, + 0x19, 0x74, 0xf7, 0x6c, 0x9d, 0x53, 0x81, 0x3b, 0xd4, 0xa9, 0x27, 0xec, 0x0e, 0xb5, 0x02, 0x93, + 0x9a, 0xe5, 0x3c, 0x1a, 0x62, 0xcd, 0xa6, 0xf1, 0xd7, 0x75, 0xf7, 0xa7, 0x6c, 0xf4, 0x8c, 0x2c, + 0x9d, 0xf2, 0x83, 0x3a, 0x7d, 0x5c, 0x3f, 0x28, 0x0f, 0xa6, 0x68, 0x30, 0xe4, 0x3c, 0xc0, 0x91, + 0x9e, 0xeb, 0xd3, 0x87, 0x17, 0x0a, 0xfb, 0x70, 0x5a, 0x8e, 0xb4, 0x9a, 0x64, 0x68, 0x7b, 0x91, + 0xe7, 0xca, 0xb6, 0x80, 0x49, 0xa0, 0x1b, 0xbb, 0x9b, 0x6e, 0xc4, 0xb1, 0xae, 0x67, 0xfb, 0xd4, + 0xf5, 0x52, 0x61, 0x5d, 0x13, 0xaa, 0xae, 0x4d, 0xaa, 0xa6, 0x80, 0x23, 0xf3, 0x55, 0x3d, 0x6a, + 0x7e, 0x61, 0xc7, 0x3e, 0x67, 0xe8, 0xf0, 0xf3, 0x08, 0xe4, 0x81, 0x9d, 0x9d, 0xb4, 0xd9, 0x7e, + 0x2f, 0xe0, 0xcc, 0x1e, 0xc1, 0xc9, 0x7c, 0x2b, 0xb0, 0xce, 0x33, 0x58, 0xe7, 0x19, 0xa3, 0xce, + 0x2c, 0x12, 0xcd, 0x1b, 0xf3, 0xb3, 0xb2, 0xb5, 0xf6, 0xe1, 0xcf, 0x7e, 0xb8, 0x04, 0xa7, 0x6e, + 0x5f, 0xab, 0xdf, 0xe7, 0x21, 0x89, 0x25, 0x5e, 0xe0, 0x27, 0x51, 0x47, 0x9e, 0x97, 0xef, 0x3c, + 0xd9, 0xa7, 0x42, 0x25, 0x71, 0xe0, 0x56, 0x21, 0x44, 0xf7, 0x17, 0x3b, 0x5b, 0xae, 0xb3, 0xab, + 0xb1, 0x28, 0x08, 0x4d, 0xf2, 0x73, 0xbf, 0x3f, 0x5f, 0xb2, 0xfb, 0x55, 0xc5, 0xda, 0x30, 0x67, + 0x76, 0x8b, 0xf2, 0x54, 0xdb, 0xe1, 0xed, 0xf6, 0xec, 0x3c, 0xce, 0xe8, 0xd7, 0x1e, 0xef, 0xcf, + 0x9f, 0xcf, 0xf5, 0x6e, 0xe2, 0xfd, 0x26, 0x30, 0xf5, 0x87, 0xaf, 0xfe, 0xfc, 0x58, 0xa7, 0x40, + 0xe8, 0x9e, 0x3d, 0x6b, 0x84, 0x27, 0xcc, 0x95, 0x27, 0x31, 0x37, 0xcf, 0x88, 0xf5, 0xde, 0x57, + 0x40, 0xb4, 0xf3, 0x9c, 0x6f, 0x0e, 0x54, 0xc7, 0x6b, 0x13, 0x05, 0x5e, 0x53, 0xd6, 0x6f, 0x96, + 0x33, 0x07, 0x23, 0x5b, 0x81, 0x61, 0x39, 0xdf, 0xfb, 0x5e, 0x32, 0xce, 0x14, 0xce, 0xea, 0x61, + 0xb9, 0x74, 0x6c, 0x45, 0xcf, 0x1e, 0x0a, 0x56, 0xf8, 0xd1, 0xf2, 0xc6, 0xfb, 0x35, 0x3a, 0xf7, + 0x10, 0x64, 0x9c, 0xf0, 0x4b, 0xc7, 0x77, 0x77, 0x36, 0x9d, 0xe2, 0xf1, 0xa8, 0x57, 0xb5, 0xb1, + 0x07, 0x50, 0x69, 0x34, 0x6e, 0xc8, 0x4b, 0xf3, 0x97, 0xe5, 0x0e, 0xf9, 0x29, 0x54, 0x28, 0x6a, + 0xb1, 0x7e, 0xa3, 0x04, 0xe3, 0xc6, 0xc9, 0xca, 0xae, 0x6a, 0x0e, 0xe1, 0xe9, 0xab, 0xb0, 0x81, + 0x83, 0x9b, 0x6d, 0xd6, 0x55, 0xfc, 0xaa, 0x16, 0xcd, 0xb7, 0x0f, 0x1d, 0x2e, 0xb6, 0x6c, 0xf4, + 0x03, 0x65, 0x66, 0x5b, 0xe9, 0x67, 0x66, 0x4b, 0x91, 0xd9, 0x06, 0x52, 0x33, 0x5b, 0xd4, 0xaf, + 0xd8, 0x04, 0xb7, 0xfe, 0x60, 0x1e, 0x26, 0xcc, 0x1b, 0x31, 0x7b, 0x0d, 0x86, 0xf0, 0xed, 0x41, + 0xa9, 0x57, 0x50, 0x2d, 0x84, 0xcf, 0x13, 0x86, 0x27, 0x1a, 0xe1, 0xb0, 0x97, 0x01, 0x12, 0x97, + 0x0d, 0xa5, 0x53, 0x1f, 0x7c, 0xbc, 0x3f, 0x5f, 0x7a, 0xdd, 0xd6, 0x0a, 0xd8, 0xd7, 0x01, 0xee, + 0x04, 0x2d, 0x2e, 0xb3, 0xd7, 0x57, 0x0e, 0x32, 0x3d, 0x7a, 0x25, 0x97, 0xbd, 0xfe, 0x84, 0x1f, + 0xb4, 0x78, 0x3e, 0x55, 0xbd, 0xc6, 0x91, 0xbd, 0x03, 0x83, 0x76, 0xaf, 0xcd, 0xd5, 0x0b, 0xcd, + 0xa8, 0x3a, 0xe1, 0x7a, 0x6d, 0x9e, 0xea, 0x09, 0xc2, 0x5e, 0xd6, 0xaa, 0x56, 0x00, 0xd8, 0xfb, + 0x94, 0xd5, 0x5e, 0x66, 0xc8, 0x19, 0x4c, 0xdf, 0x22, 0x35, 0xc9, 0x27, 0x97, 0x23, 0x47, 0x23, + 0x61, 0x77, 0x61, 0x58, 0x7f, 0x44, 0xd3, 0xc2, 0xf2, 0xe8, 0x0f, 0xad, 0x9a, 0xd2, 0x41, 0x06, + 0xff, 0xcf, 0xbe, 0xaf, 0x29, 0x2e, 0xec, 0x3d, 0x18, 0x11, 0xec, 0xc5, 0xce, 0x11, 0xc9, 0x5b, + 0x0d, 0xbe, 0xa3, 0x68, 0x0d, 0x12, 0xbb, 0x8f, 0x91, 0x03, 0x20, 0x21, 0x60, 0x5f, 0x81, 0x91, + 0x7a, 0xb7, 0x2b, 0xbb, 0xfa, 0x40, 0x93, 0xb4, 0x73, 0xb9, 0xae, 0x9e, 0x71, 0xbb, 0xdd, 0x7c, + 0x4f, 0xa7, 0xfc, 0xd8, 0x76, 0x12, 0x15, 0x56, 0x56, 0x70, 0xa0, 0x19, 0xd9, 0xab, 0xb9, 0x0a, + 0x66, 0x55, 0xa0, 0xd3, 0x5c, 0x25, 0x26, 0x5f, 0xd6, 0x85, 0x5a, 0x2a, 0x54, 0xca, 0xba, 0xe0, + 0xa0, 0xba, 0x5e, 0xcf, 0xd5, 0xa5, 0x0f, 0x60, 0xae, 0xba, 0x1c, 0x77, 0xd6, 0x82, 0x09, 0x75, + 0x40, 0xc9, 0xfa, 0x46, 0x0f, 0xaa, 0xef, 0xe5, 0x5c, 0x7d, 0xd3, 0xad, 0xcd, 0x7c, 0x3d, 0x19, + 0x9e, 0xec, 0x3d, 0x18, 0x57, 0x10, 0x5c, 0x1f, 0x68, 0x0a, 0x26, 0x15, 0x82, 0xad, 0x4d, 0x74, + 0x12, 0x33, 0x7a, 0xc5, 0x40, 0xd6, 0xa9, 0x69, 0x76, 0x8c, 0x1b, 0xd4, 0xd9, 0x59, 0x61, 0x22, + 0xb3, 0x2f, 0xc3, 0xe8, 0x4a, 0x47, 0x7c, 0x48, 0xe0, 0xbb, 0x31, 0x97, 0x3e, 0xe7, 0xca, 0xbc, + 0x4e, 0x2b, 0xd1, 0xa6, 0x2a, 0xa5, 0x6f, 0x4f, 0x8b, 0x8c, 0xf4, 0xed, 0x29, 0x58, 0x74, 0x1e, + 0xbd, 0x9a, 0xca, 0x39, 0xac, 0xfc, 0xd1, 0xcf, 0x14, 0x98, 0xb8, 0x69, 0xec, 0x65, 0x7e, 0x13, + 0x01, 0x55, 0xaf, 0x96, 0x99, 0x4c, 0x54, 0x3a, 0x4f, 0xf6, 0x05, 0x18, 0xad, 0x6f, 0x34, 0xc4, + 0x86, 0x55, 0xb7, 0xef, 0x44, 0xb3, 0xb5, 0xd4, 0x42, 0xdf, 0x7d, 0x48, 0xaf, 0x76, 0x8e, 0x1b, + 0x66, 0x6c, 0xb9, 0x53, 0x7c, 0xf6, 0x21, 0xcc, 0x6c, 0x78, 0x7e, 0x2b, 0x78, 0x18, 0xc9, 0x63, + 0x4a, 0x6e, 0x74, 0x53, 0xe9, 0x53, 0xe0, 0x43, 0x2a, 0x4f, 0x64, 0xc1, 0xdc, 0xc6, 0x57, 0xc8, + 0x81, 0xfd, 0x50, 0x8e, 0x33, 0xcd, 0x20, 0x76, 0xd0, 0x0c, 0xba, 0x9c, 0x9b, 0x41, 0xf9, 0xea, + 0xb3, 0xd3, 0xa9, 0xb0, 0x1a, 0x16, 0x00, 0x33, 0xcf, 0xf7, 0x9b, 0x81, 0xe7, 0xcf, 0x4e, 0xe3, + 0x5e, 0xf8, 0x6c, 0x36, 0x32, 0x0d, 0xe2, 0xad, 0x05, 0x6d, 0xaf, 0xb9, 0x47, 0xf9, 0x08, 0xb3, + 0x32, 0xff, 0x47, 0x81, 0xf1, 0x5c, 0x52, 0xc0, 0x9a, 0x7d, 0x19, 0xc6, 0xc4, 0xff, 0x89, 0x52, + 0x62, 0xc6, 0x30, 0x8a, 0xd6, 0x30, 0x65, 0x3d, 0x38, 0x46, 0x82, 0x6f, 0x91, 0xbe, 0xc2, 0x60, + 0xc5, 0xde, 0x06, 0x10, 0x62, 0x93, 0xdc, 0x8e, 0x4f, 0xa4, 0xa9, 0xbc, 0x50, 0xea, 0xca, 0x6f, + 0xc4, 0x29, 0x32, 0x7b, 0x0f, 0x46, 0xc5, 0xaf, 0x46, 0xaf, 0x15, 0x88, 0xb5, 0x71, 0x12, 0x69, + 0xc9, 0xfd, 0x5f, 0xd0, 0x46, 0x04, 0x37, 0xdc, 0xff, 0x53, 0x74, 0x76, 0x03, 0x26, 0x31, 0x41, + 0x9b, 0x4c, 0xf6, 0xe3, 0xf1, 0x68, 0xf6, 0x94, 0xf6, 0x86, 0x2d, 0x8a, 0x1c, 0x2f, 0x29, 0xd3, + 0xef, 0x32, 0x19, 0x32, 0x16, 0xc1, 0x74, 0xfe, 0x0d, 0x37, 0x9a, 0x9d, 0xc5, 0x4e, 0x52, 0x12, + 0x7c, 0x1e, 0x83, 0xf6, 0x63, 0x31, 0x22, 0xda, 0xc6, 0xa5, 0x1e, 0x95, 0xf4, 0x0a, 0x8b, 0xb8, + 0x33, 0x1b, 0xd8, 0xf5, 0xc5, 0xb5, 0x6c, 0x4e, 0xb2, 0xd3, 0xf8, 0x05, 0x38, 0xcc, 0xdb, 0xcd, + 0xae, 0x73, 0x40, 0x5e, 0xb2, 0x02, 0x6a, 0xf6, 0x67, 0xe0, 0x84, 0xda, 0x41, 0x64, 0x91, 0x9c, + 0xd7, 0x73, 0xc7, 0xdc, 0x89, 0x5b, 0x9b, 0x49, 0xd5, 0xb9, 0x29, 0x5d, 0x5c, 0x05, 0x73, 0x61, + 0x14, 0x87, 0x55, 0xd6, 0xf8, 0xec, 0x41, 0x35, 0x9e, 0xcf, 0xd5, 0x78, 0x12, 0x27, 0x4a, 0xbe, + 0x32, 0x9d, 0x27, 0x25, 0x19, 0xc1, 0x75, 0x24, 0x67, 0xdb, 0x73, 0xd8, 0x5b, 0x32, 0xc9, 0x08, + 0xad, 0xc0, 0xdc, 0x84, 0x33, 0x49, 0xf4, 0x1d, 0x99, 0x1e, 0x93, 0xce, 0x18, 0x3b, 0x72, 0xce, + 0x92, 0xc0, 0x40, 0x16, 0x3b, 0x52, 0x2a, 0xc5, 0x2c, 0x3f, 0xea, 0x86, 0x52, 0x45, 0xf5, 0x7c, + 0x9a, 0x0e, 0x5e, 0x13, 0x7e, 0x1c, 0x9e, 0x60, 0xe8, 0x5b, 0x42, 0x11, 0x07, 0x76, 0x0f, 0xa6, + 0x93, 0x53, 0x5b, 0x63, 0x3c, 0x9f, 0x66, 0xbd, 0x4a, 0x8f, 0xfa, 0x62, 0xbe, 0x45, 0xf4, 0xcc, + 0x85, 0x53, 0xc6, 0x39, 0xad, 0xb1, 0x3e, 0x8b, 0xac, 0x5f, 0x11, 0x37, 0x32, 0xf3, 0x90, 0x2f, + 0x66, 0xdf, 0x8f, 0x0f, 0xfb, 0x08, 0xe6, 0xb2, 0x67, 0xb3, 0x56, 0xcb, 0x0b, 0x58, 0xcb, 0xab, + 0x8f, 0xf7, 0xe7, 0xcf, 0xe5, 0x8e, 0xf7, 0xe2, 0x8a, 0x0e, 0xe0, 0xc6, 0xbe, 0x0e, 0xb3, 0xe6, + 0xf9, 0xac, 0xd5, 0x64, 0x61, 0x4d, 0xb8, 0x74, 0x92, 0x83, 0xbd, 0xb8, 0x86, 0xbe, 0x3c, 0x58, + 0x0c, 0xf3, 0x85, 0xb3, 0x5b, 0xab, 0xe6, 0xc5, 0xf4, 0x83, 0x72, 0xab, 0xa4, 0xb8, 0xba, 0xc3, + 0x58, 0xb2, 0x87, 0xf0, 0x7c, 0xd1, 0x31, 0xa1, 0x55, 0xfa, 0x52, 0xa2, 0x04, 0xfe, 0x4c, 0xf1, + 0x91, 0x53, 0x5c, 0xf3, 0x21, 0x6c, 0xd9, 0x57, 0xe0, 0x84, 0xb6, 0xbe, 0xb4, 0xfa, 0x5e, 0xc6, + 0xfa, 0x30, 0x0e, 0x84, 0xbe, 0x30, 0x8b, 0x6b, 0x29, 0xe6, 0xc1, 0x3a, 0x30, 0xad, 0x3e, 0x1c, + 0xb5, 0xed, 0xf2, 0xe8, 0x39, 0x67, 0xec, 0xaa, 0x79, 0x8c, 0x85, 0xb3, 0x72, 0x57, 0x9d, 0x6d, + 0x6d, 0x3a, 0xdd, 0x94, 0x50, 0x9f, 0xe9, 0x05, 0x7c, 0xd9, 0x0d, 0x18, 0x6a, 0xac, 0xad, 0x5c, + 0xbb, 0xb6, 0x3c, 0xfb, 0x0a, 0xd6, 0xa0, 0x3c, 0x3d, 0x09, 0x68, 0x5c, 0x9a, 0xa4, 0x39, 0x66, + 0xd7, 0xdb, 0xda, 0x32, 0x1e, 0xac, 0x08, 0x95, 0xfd, 0x10, 0x1a, 0x42, 0x8a, 0x1d, 0xb5, 0x1e, + 0x45, 0xde, 0xb6, 0x4f, 0xf9, 0xc4, 0x5e, 0x35, 0xde, 0xfb, 0x55, 0x86, 0xb9, 0x45, 0x4c, 0xa5, + 0x9f, 0x43, 0x4f, 0x0d, 0x6e, 0xe5, 0xce, 0xed, 0xb8, 0x29, 0x2b, 0x7d, 0x13, 0xcf, 0x57, 0x24, + 0xfa, 0x6d, 0xdb, 0x8b, 0x9d, 0x9d, 0x9e, 0xf1, 0xf9, 0xb3, 0x9f, 0x31, 0x2c, 0x7c, 0xaf, 0x7b, + 0xf1, 0x8d, 0xde, 0xa6, 0xd6, 0x6b, 0x2f, 0xc9, 0x0a, 0x9f, 0xa3, 0xdb, 0x72, 0x9f, 0x9e, 0x9b, + 0xda, 0xce, 0xd0, 0x45, 0xec, 0x2f, 0x96, 0xe0, 0xe4, 0x46, 0x10, 0x3e, 0x68, 0x07, 0x6e, 0x4b, + 0x7d, 0x95, 0xdc, 0xc3, 0x5f, 0x3b, 0x68, 0x0f, 0xff, 0x6c, 0x6e, 0x0f, 0xb7, 0x1e, 0x4a, 0x36, + 0x4e, 0x92, 0xa0, 0x2f, 0xb7, 0x9f, 0xf7, 0xa9, 0x8a, 0xfd, 0x10, 0x9c, 0x2d, 0x2e, 0xd1, 0x26, + 0xe5, 0xeb, 0x38, 0x29, 0xdf, 0x7c, 0xbc, 0x3f, 0xff, 0x7a, 0xbf, 0x9a, 0x8a, 0x27, 0xe8, 0xa1, + 0xac, 0xd9, 0x3b, 0x50, 0xb9, 0xbd, 0xb8, 0x36, 0x7b, 0xd1, 0x78, 0x7a, 0xbe, 0xbd, 0xb8, 0xa6, + 0x75, 0x14, 0x69, 0x34, 0x3b, 0x4d, 0x43, 0xa3, 0x79, 0x7b, 0x71, 0xed, 0xe6, 0x40, 0xf5, 0x7c, + 0xed, 0xc2, 0xcd, 0x81, 0xea, 0x85, 0xda, 0xab, 0xf6, 0x73, 0x8d, 0xfa, 0xed, 0xd5, 0x95, 0x96, + 0x3a, 0x98, 0x55, 0xfe, 0x41, 0xaa, 0xcf, 0x3e, 0x77, 0x50, 0x69, 0xda, 0x1a, 0xeb, 0xaf, 0x95, + 0x60, 0xfe, 0x90, 0x09, 0x26, 0xce, 0xc2, 0xb4, 0x71, 0x8d, 0x24, 0xfb, 0x0e, 0xb9, 0x91, 0x26, + 0x05, 0x8e, 0x69, 0x72, 0x62, 0x92, 0xa0, 0x8b, 0xb1, 0x4c, 0xb4, 0xab, 0x79, 0x9a, 0xe7, 0x13, + 0xec, 0x2a, 0x2c, 0x6b, 0x15, 0x6a, 0xd9, 0x89, 0xc7, 0x3e, 0x0f, 0xe3, 0x7a, 0xc6, 0x38, 0xa5, + 0x86, 0xa0, 0x40, 0x50, 0xe1, 0xb6, 0x71, 0x98, 0x1a, 0x88, 0xd6, 0x39, 0x98, 0x30, 0xbb, 0x98, + 0xcd, 0xc0, 0x60, 0x1c, 0x04, 0x6d, 0xc9, 0xc3, 0xa6, 0x1f, 0xd6, 0x2f, 0x94, 0x60, 0xba, 0x60, + 0x15, 0xb3, 0x73, 0x30, 0xb0, 0xe6, 0xc6, 0x3b, 0xba, 0x65, 0x52, 0xd7, 0x35, 0x42, 0xbe, 0x61, + 0x39, 0x7b, 0x03, 0x86, 0x97, 0xee, 0x34, 0x1a, 0xf5, 0x3b, 0x4a, 0xe1, 0x41, 0x87, 0xbd, 0x1f, + 0x39, 0x91, 0x6b, 0x1a, 0x34, 0x48, 0x34, 0xf6, 0x3a, 0x0c, 0xad, 0xac, 0x21, 0x81, 0x96, 0xfd, + 0xcf, 0xeb, 0x66, 0xf1, 0x25, 0x92, 0xf5, 0x9d, 0x12, 0xb0, 0xfc, 0x96, 0xc4, 0xde, 0x84, 0x51, + 0x7d, 0xe3, 0xa3, 0x7e, 0xc1, 0x57, 0x5e, 0x6d, 0x71, 0xda, 0x3a, 0x0e, 0x5b, 0x82, 0x41, 0xcc, + 0x21, 0x9e, 0x58, 0x52, 0x14, 0x2e, 0xbd, 0x53, 0xb9, 0xa5, 0x37, 0x88, 0x79, 0xc9, 0x6d, 0x22, + 0xb6, 0xfe, 0xa8, 0x04, 0xac, 0xd8, 0x28, 0xf1, 0x48, 0x96, 0x5c, 0x6f, 0x69, 0x11, 0x4d, 0x74, + 0xab, 0x44, 0x5f, 0x01, 0x75, 0x55, 0x43, 0x1a, 0xfb, 0xe4, 0x9c, 0xa1, 0xda, 0xea, 0xef, 0x06, + 0x7f, 0x01, 0x06, 0xef, 0xf3, 0x70, 0x53, 0x99, 0xc6, 0xa3, 0x39, 0xed, 0xae, 0x00, 0xe8, 0xaa, + 0x1e, 0xc4, 0x30, 0xcc, 0x23, 0x07, 0x8f, 0x6a, 0x1e, 0xf9, 0x07, 0x25, 0x98, 0x29, 0xba, 0x3c, + 0x1d, 0xe2, 0xe2, 0x6e, 0x65, 0xbc, 0xf3, 0xd1, 0xf4, 0x8b, 0x0c, 0x74, 0x13, 0x9f, 0xfc, 0x79, + 0x18, 0x14, 0x3d, 0xa4, 0xa6, 0x05, 0xea, 0xe7, 0x44, 0x17, 0x46, 0x36, 0xc1, 0x05, 0x42, 0x9a, + 0x3e, 0x6a, 0x90, 0x10, 0x28, 0x6b, 0x14, 0xc1, 0x05, 0xc2, 0xed, 0xa0, 0xc5, 0x95, 0xde, 0x0a, + 0x11, 0x3a, 0x02, 0x60, 0x13, 0x9c, 0x9d, 0x83, 0xe1, 0xbb, 0xfe, 0x2a, 0x77, 0x77, 0x55, 0x72, + 0x58, 0x34, 0x55, 0x0b, 0x7c, 0xa7, 0x2d, 0x60, 0xb6, 0x2a, 0xb4, 0x7e, 0xba, 0x04, 0x53, 0xb9, + 0x7b, 0xdb, 0xe1, 0x5e, 0xfc, 0x07, 0x7b, 0xa6, 0x1e, 0xe5, 0xfb, 0xa8, 0xf9, 0x03, 0xc5, 0xcd, + 0xb7, 0xfe, 0xdb, 0x21, 0x38, 0xd5, 0x47, 0x8d, 0x96, 0x7a, 0xce, 0x97, 0x0e, 0xf5, 0x9c, 0xff, + 0x2a, 0x8c, 0x2f, 0xb6, 0x5d, 0xaf, 0x13, 0xad, 0x07, 0x69, 0x8b, 0x53, 0x07, 0x3c, 0x2c, 0x93, + 0x0e, 0x28, 0x89, 0xa7, 0xd6, 0xe9, 0x26, 0x52, 0x38, 0x71, 0x90, 0x97, 0xe2, 0x0d, 0x66, 0x39, + 0xdf, 0xf5, 0xca, 0x9f, 0x10, 0xdf, 0x75, 0xd3, 0x9b, 0x72, 0xe0, 0x89, 0x7a, 0x53, 0x16, 0x1b, + 0xdb, 0x0f, 0x7e, 0x12, 0xd7, 0x8b, 0xc5, 0xac, 0x89, 0xf6, 0x50, 0xce, 0xbe, 0xef, 0x70, 0xdb, + 0xec, 0x1b, 0xa6, 0xe7, 0xdf, 0x30, 0x3e, 0x66, 0x9f, 0xeb, 0xef, 0xd9, 0x67, 0x86, 0x8f, 0xd2, + 0x3d, 0xfc, 0xbe, 0x05, 0x33, 0x45, 0xf7, 0xf0, 0xd9, 0xaa, 0x61, 0x06, 0xdc, 0xd7, 0x66, 0xfb, + 0xe8, 0xb7, 0xf9, 0x07, 0x85, 0xb7, 0x79, 0x15, 0x91, 0x61, 0xa4, 0xbf, 0x3b, 0x5b, 0xba, 0x16, + 0x08, 0xf7, 0xe0, 0xb8, 0x0d, 0xd6, 0x5f, 0xce, 0xc6, 0xd4, 0xc8, 0xd2, 0xb3, 0x77, 0x8d, 0xd0, + 0x67, 0xaf, 0xe4, 0x43, 0x9f, 0x15, 0x87, 0xd1, 0xa0, 0xa7, 0x88, 0xd7, 0x60, 0x48, 0xda, 0x82, + 0x68, 0xe1, 0x48, 0x72, 0x36, 0x20, 0x12, 0xc7, 0xfa, 0xe9, 0xb2, 0x19, 0x36, 0xe0, 0x4f, 0xe2, + 0xba, 0xbe, 0x00, 0x83, 0x1b, 0x3b, 0x3c, 0x54, 0x47, 0x10, 0x36, 0xe4, 0xa1, 0x00, 0xe8, 0x0d, + 0x41, 0x0c, 0x76, 0x0d, 0x26, 0xd6, 0x68, 0x9e, 0xab, 0xc9, 0x3b, 0x90, 0xea, 0x8e, 0xba, 0x52, + 0xc3, 0x59, 0x30, 0x7b, 0x33, 0x54, 0xd6, 0xf5, 0xcc, 0x10, 0xc9, 0x30, 0x6f, 0xe4, 0xc1, 0x46, + 0x42, 0xca, 0x44, 0xea, 0xd0, 0x99, 0xee, 0xcd, 0x76, 0x06, 0x6a, 0x6d, 0xc1, 0xf3, 0x07, 0x32, + 0x12, 0xb2, 0x01, 0x74, 0x93, 0x5f, 0x19, 0x0b, 0xf2, 0x03, 0x49, 0x6d, 0x8d, 0xce, 0x5a, 0x4d, + 0x7d, 0x3c, 0x57, 0x96, 0xd0, 0xc9, 0xf4, 0x1d, 0x18, 0xd3, 0xfd, 0x1d, 0x24, 0xe7, 0x02, 0xf7, + 0x88, 0x01, 0x31, 0x20, 0xf6, 0xa8, 0x42, 0x5e, 0x69, 0x45, 0xd6, 0xff, 0x5a, 0x81, 0xd9, 0x7e, + 0x5e, 0x8e, 0xec, 0x27, 0x92, 0x88, 0x39, 0xe8, 0xc2, 0x17, 0x98, 0xbe, 0x26, 0xa3, 0x97, 0xdf, + 0x39, 0xc4, 0x4d, 0xf2, 0x62, 0x21, 0x31, 0x19, 0x3f, 0x27, 0xae, 0x1a, 0x28, 0x07, 0xf0, 0x96, + 0xb3, 0xb9, 0xe7, 0x68, 0xfe, 0xb4, 0x76, 0x71, 0xc5, 0xec, 0x03, 0x38, 0x61, 0xf3, 0x66, 0xd0, + 0xe9, 0x70, 0xbf, 0xa5, 0xfb, 0x17, 0xca, 0x25, 0x20, 0x83, 0xc7, 0x24, 0x08, 0x26, 0xcb, 0x42, + 0x4a, 0x76, 0x07, 0xa6, 0xd2, 0xe8, 0x74, 0x2a, 0x91, 0x8a, 0x96, 0x6f, 0x2c, 0x8d, 0xa6, 0xa7, + 0xd2, 0xa8, 0xe8, 0xf7, 0xb1, 0x1c, 0x29, 0xbb, 0x04, 0xb0, 0xe8, 0xfa, 0x6b, 0x61, 0xd0, 0xe4, + 0x32, 0xc0, 0x43, 0x55, 0x9a, 0x06, 0xba, 0x18, 0xd1, 0x46, 0x80, 0x6d, 0x0d, 0x65, 0xce, 0x81, + 0xb9, 0xfe, 0x1d, 0x55, 0x60, 0xc0, 0xfd, 0x19, 0xd3, 0x2f, 0xe0, 0x44, 0x6e, 0xa0, 0x05, 0x1f, + 0xdd, 0xae, 0xfb, 0x5b, 0x30, 0xa6, 0x2f, 0x4c, 0x14, 0x72, 0xc4, 0x6f, 0xb9, 0xed, 0x90, 0x90, + 0x23, 0x00, 0x36, 0xc1, 0xd3, 0x67, 0xcc, 0x72, 0xf1, 0x33, 0x66, 0xba, 0x63, 0x54, 0x0e, 0xdb, + 0x31, 0x44, 0xe5, 0x78, 0x86, 0x6a, 0x95, 0xe3, 0x6f, 0xbd, 0x72, 0x8c, 0xd7, 0x67, 0x13, 0xfc, + 0x89, 0x56, 0xfe, 0x0f, 0x54, 0x26, 0x72, 0xf4, 0xa9, 0x34, 0x3d, 0xa5, 0xa4, 0x4f, 0x65, 0xfe, + 0x7c, 0x48, 0x31, 0x53, 0x51, 0xb7, 0x7c, 0xa8, 0xa8, 0x7b, 0x8c, 0xbd, 0x0b, 0xaf, 0x6d, 0xb4, + 0x0b, 0x0c, 0xa4, 0xd7, 0x13, 0x37, 0x67, 0xe8, 0xa5, 0xb0, 0xac, 0x9f, 0x2b, 0xc1, 0x89, 0xc2, + 0xe7, 0x22, 0x51, 0x2b, 0xbd, 0x4b, 0x69, 0x5b, 0x77, 0xf6, 0x51, 0x8a, 0x30, 0x8e, 0x13, 0xf7, + 0xe8, 0xe8, 0xdf, 0x62, 0xbd, 0x00, 0x23, 0x89, 0xb1, 0x82, 0xb8, 0xfe, 0xd1, 0xd0, 0x51, 0x60, + 0x57, 0xf9, 0xe6, 0xfd, 0x0b, 0x25, 0x00, 0xd1, 0x84, 0x4f, 0xd1, 0xad, 0x80, 0xfa, 0xa0, 0x8f, + 0x5b, 0x41, 0xb6, 0x3f, 0xb2, 0x74, 0xd6, 0x3f, 0x28, 0xc3, 0x90, 0xf8, 0xeb, 0xa9, 0x8d, 0xbb, + 0x5f, 0xec, 0x56, 0x20, 0x3e, 0xe9, 0x80, 0x2c, 0x23, 0xcb, 0x99, 0x2c, 0x23, 0xd3, 0x3a, 0x99, + 0x4a, 0x1a, 0x9c, 0x04, 0xff, 0xe9, 0x97, 0x55, 0x44, 0xf3, 0x4e, 0xf8, 0xa7, 0x25, 0x18, 0xd3, + 0x89, 0xd9, 0x97, 0x61, 0x42, 0xc5, 0x12, 0xa7, 0x80, 0x58, 0xd2, 0x4a, 0x43, 0x59, 0x54, 0xaa, + 0x58, 0xe2, 0x7a, 0x00, 0x2d, 0x03, 0x5f, 0x97, 0x14, 0xba, 0x3a, 0x32, 0x6b, 0x01, 0xeb, 0x6c, + 0xb9, 0xce, 0x43, 0xee, 0x3e, 0xe0, 0x51, 0xec, 0x90, 0xe5, 0x9b, 0x34, 0xe6, 0x50, 0xec, 0x6f, + 0x5f, 0xab, 0x93, 0xd1, 0x1b, 0x86, 0x05, 0xa0, 0xa0, 0xf0, 0x39, 0x1a, 0xfd, 0x85, 0xba, 0xb3, + 0xe5, 0x6e, 0x50, 0x21, 0xd1, 0x59, 0xff, 0x6a, 0x88, 0x66, 0xae, 0x4c, 0x3e, 0xb0, 0x09, 0x13, + 0x77, 0x57, 0x96, 0x16, 0xb5, 0xf7, 0x2a, 0x33, 0xff, 0xc3, 0xf2, 0xa3, 0x98, 0x87, 0xbe, 0xdb, + 0x56, 0xaa, 0x9f, 0x54, 0x02, 0x0a, 0xbc, 0x56, 0xb3, 0xf8, 0x2d, 0x2b, 0xc3, 0x51, 0xd4, 0x41, + 0x4a, 0xa6, 0xa4, 0x8e, 0xf2, 0x11, 0xeb, 0x88, 0xdc, 0x4e, 0xbb, 0x4f, 0x1d, 0x26, 0x47, 0xb6, + 0x83, 0x5a, 0xa0, 0x9d, 0xde, 0xa6, 0x56, 0x4b, 0xe5, 0xe0, 0x5a, 0x5e, 0x94, 0xb5, 0x3c, 0x2b, + 0xb5, 0x93, 0x85, 0xf5, 0xe4, 0xb8, 0xa6, 0x7b, 0xce, 0xc0, 0xa1, 0x7b, 0xce, 0xff, 0xbf, 0x04, + 0x43, 0x74, 0xd9, 0x92, 0xd3, 0xb8, 0xcf, 0x75, 0x6e, 0xe3, 0xc9, 0x5c, 0xe7, 0x6a, 0x78, 0xe6, + 0x18, 0x13, 0x9a, 0xca, 0xd8, 0x52, 0x66, 0x5d, 0xb0, 0x44, 0xca, 0xd9, 0xf6, 0x7c, 0x2d, 0xd9, + 0xce, 0x81, 0xcb, 0x82, 0xad, 0xa4, 0xe1, 0x98, 0x86, 0x0f, 0x8d, 0xc1, 0xa1, 0x42, 0x58, 0x0d, + 0xcb, 0x70, 0x4c, 0x66, 0x10, 0xa6, 0x55, 0x18, 0x91, 0x41, 0x9e, 0x16, 0xf6, 0xa4, 0x7d, 0x49, + 0xcd, 0xb0, 0x10, 0x6c, 0x2d, 0xec, 0xa5, 0x17, 0x49, 0x19, 0x26, 0xca, 0xd9, 0xd4, 0xbd, 0x6b, + 0x52, 0x06, 0xec, 0x2e, 0x8c, 0xa4, 0xc9, 0x19, 0xcc, 0x64, 0x66, 0x09, 0x5c, 0xc6, 0xbc, 0x54, + 0x91, 0x62, 0x0a, 0x72, 0x31, 0xa4, 0x3c, 0xd8, 0x2a, 0xd4, 0xd0, 0xaa, 0x94, 0xb7, 0x68, 0xd5, + 0xac, 0x2c, 0x51, 0x20, 0x21, 0x29, 0x3e, 0xc5, 0x54, 0x26, 0x97, 0x5b, 0xc6, 0x21, 0x37, 0x47, + 0x69, 0xfd, 0x54, 0x19, 0x6a, 0xd9, 0xd9, 0xc7, 0xde, 0x83, 0xd1, 0x24, 0x39, 0x46, 0x12, 0x28, + 0x02, 0xdf, 0x99, 0xd3, 0x6c, 0x1a, 0x46, 0xc8, 0x08, 0x1d, 0x9d, 0x5d, 0x86, 0xaa, 0x58, 0xc4, + 0x7e, 0x1a, 0x32, 0x18, 0xb7, 0xed, 0x9e, 0x84, 0xe9, 0x3a, 0x28, 0x85, 0xc7, 0x1a, 0x30, 0x2d, + 0x16, 0x4d, 0xc3, 0xf3, 0xb7, 0xdb, 0x7c, 0x35, 0xd8, 0x0e, 0x7a, 0xf1, 0x3d, 0x7b, 0x55, 0xee, + 0xe1, 0x74, 0xdd, 0x76, 0x3b, 0x6d, 0xa3, 0x38, 0xd4, 0xed, 0x11, 0x8b, 0xa8, 0xd9, 0xeb, 0x74, + 0xcc, 0xac, 0x2c, 0x49, 0xf3, 0x30, 0x3c, 0xf6, 0xd1, 0xac, 0xd1, 0x68, 0xbc, 0x44, 0xd2, 0x76, + 0xd6, 0xdf, 0x2f, 0xc3, 0xa8, 0x36, 0xfd, 0xd8, 0x05, 0xa8, 0xae, 0x44, 0xab, 0x41, 0xf3, 0x41, + 0x12, 0x43, 0x79, 0xfc, 0xf1, 0xfe, 0xfc, 0x88, 0x17, 0x39, 0x6d, 0x04, 0xda, 0x49, 0x31, 0x5b, + 0x80, 0x71, 0xfa, 0x4b, 0x49, 0xb6, 0xe5, 0x54, 0xcd, 0x4c, 0xc8, 0x05, 0x52, 0xad, 0x49, 0xc2, + 0xbe, 0x06, 0x40, 0x00, 0x0c, 0x60, 0x53, 0x39, 0x7a, 0xe8, 0x1d, 0x59, 0x41, 0x41, 0xe8, 0x1a, + 0x8d, 0x21, 0xfb, 0x06, 0xe5, 0xde, 0x50, 0xcb, 0x65, 0xe0, 0xe8, 0xb1, 0x83, 0x04, 0x7f, 0xa7, + 0x38, 0x84, 0x99, 0xce, 0x52, 0x66, 0xf5, 0x9c, 0x53, 0x79, 0xdf, 0xeb, 0x31, 0x22, 0x6a, 0x18, + 0xd6, 0xff, 0x5c, 0xd2, 0x16, 0x19, 0xbb, 0x03, 0x23, 0xc9, 0x04, 0x92, 0x96, 0x99, 0xc9, 0x0d, + 0x57, 0xc1, 0x6d, 0xbe, 0xb5, 0xf0, 0xac, 0x34, 0x12, 0x9d, 0x4e, 0xa6, 0xa1, 0xb1, 0xe6, 0x14, + 0x90, 0x7d, 0x09, 0x06, 0xb0, 0xeb, 0xca, 0x87, 0x7e, 0x9a, 0x3a, 0xe5, 0x07, 0x44, 0x9f, 0xe1, + 0x87, 0x20, 0x25, 0x7b, 0x43, 0x7a, 0xdd, 0x53, 0xe7, 0x4f, 0x68, 0x47, 0xb5, 0x68, 0x47, 0x72, + 0xbc, 0xa7, 0x51, 0xec, 0xb4, 0xd9, 0xf3, 0xd7, 0xca, 0x50, 0xcb, 0x2e, 0x6d, 0xf6, 0x3e, 0x8c, + 0xa9, 0xe3, 0xf7, 0x86, 0x2b, 0xf3, 0xdb, 0x8d, 0xc9, 0xfc, 0x72, 0xea, 0x0c, 0xde, 0x71, 0x75, + 0x4b, 0x4e, 0xdb, 0x20, 0x10, 0xb2, 0xd0, 0xba, 0x0c, 0x85, 0xab, 0x2d, 0xaa, 0x38, 0x88, 0xbb, + 0x99, 0x94, 0x0f, 0x0a, 0x8d, 0xbd, 0x05, 0x95, 0xdb, 0xd7, 0xea, 0xd2, 0x4f, 0xb6, 0x96, 0x3d, + 0xa4, 0xe5, 0xf3, 0x8c, 0x61, 0xfe, 0x2e, 0xf0, 0xd9, 0xaa, 0x96, 0x1d, 0x65, 0xc8, 0xb0, 0xda, + 0x55, 0xe0, 0xe4, 0xe3, 0x0e, 0x4f, 0x93, 0x72, 0x73, 0xa0, 0x5a, 0xa9, 0x0d, 0xc8, 0x40, 0xf4, + 0x3f, 0x32, 0x00, 0x23, 0x49, 0xfd, 0x8c, 0xe9, 0x2e, 0xff, 0xd2, 0xbd, 0xff, 0x34, 0x54, 0x95, + 0x74, 0x27, 0xdd, 0x65, 0x87, 0x23, 0x29, 0xd9, 0xcd, 0x82, 0x12, 0xe3, 0x68, 0x57, 0xb0, 0xd5, + 0x4f, 0xf6, 0x26, 0x24, 0x32, 0x5a, 0x3f, 0x61, 0x8e, 0x6e, 0xe2, 0x09, 0x1a, 0x9b, 0x80, 0xb2, + 0x47, 0xc1, 0x3d, 0x47, 0xec, 0xb2, 0xd7, 0x62, 0xef, 0x43, 0xd5, 0x6d, 0xe1, 0xfd, 0x55, 0x99, + 0x38, 0x1e, 0x34, 0x69, 0xaa, 0x82, 0x1b, 0x9d, 0x19, 0x48, 0x55, 0x8f, 0x59, 0x1d, 0x46, 0x28, + 0x5b, 0x42, 0xc4, 0x5b, 0x47, 0x38, 0x80, 0x52, 0x0e, 0x98, 0x64, 0xe1, 0x5e, 0xc4, 0x5b, 0xec, + 0x15, 0x18, 0x10, 0xa3, 0x29, 0x4f, 0x1c, 0x25, 0x54, 0x8a, 0xc1, 0xa4, 0x0e, 0xbb, 0xf1, 0x8c, + 0x8d, 0x08, 0xec, 0x25, 0xa8, 0xf4, 0x2e, 0x6f, 0xc9, 0xb3, 0xa4, 0x96, 0x66, 0x2a, 0x4a, 0xd0, + 0x44, 0x31, 0xbb, 0x02, 0xd5, 0x87, 0x66, 0x92, 0x9b, 0x13, 0x99, 0x61, 0x4c, 0xf0, 0x13, 0x44, + 0xf6, 0x0a, 0x54, 0xa2, 0x28, 0x90, 0x76, 0x81, 0xd3, 0x89, 0xb1, 0xf6, 0xdd, 0x64, 0xd4, 0x04, + 0xf7, 0x28, 0x0a, 0xd8, 0x15, 0x18, 0x96, 0x39, 0x2e, 0xd0, 0x31, 0x2a, 0x3d, 0xd3, 0x64, 0x6e, + 0x0a, 0x9d, 0x40, 0x61, 0x2e, 0x54, 0x61, 0x88, 0x4e, 0x25, 0xeb, 0x79, 0x80, 0xf4, 0xc3, 0xf2, + 0x57, 0x6e, 0xeb, 0x6b, 0x30, 0x92, 0x7c, 0x10, 0x3b, 0x03, 0xf0, 0x80, 0xef, 0x39, 0x3b, 0xae, + 0xdf, 0x6a, 0x93, 0x48, 0x3b, 0x66, 0x8f, 0x3c, 0xe0, 0x7b, 0x37, 0x10, 0xc0, 0x4e, 0xc1, 0x70, + 0x57, 0xcc, 0x19, 0xb9, 0x30, 0xc6, 0xec, 0xa1, 0x6e, 0x6f, 0x53, 0xcc, 0xff, 0x59, 0x18, 0xc6, + 0xa7, 0x04, 0xb9, 0x8c, 0xc7, 0x6d, 0xf5, 0xd3, 0xfa, 0xd7, 0x15, 0xcc, 0xbe, 0xaa, 0xf5, 0x02, + 0x7b, 0x11, 0xc6, 0x9b, 0x21, 0xc7, 0x03, 0xd0, 0x15, 0x62, 0x9d, 0xac, 0x67, 0x2c, 0x05, 0xae, + 0xb4, 0xd8, 0x39, 0x98, 0xec, 0xf6, 0x36, 0xdb, 0x5e, 0x13, 0x33, 0xc0, 0x35, 0x37, 0x65, 0xc6, + 0xab, 0x31, 0x7b, 0x9c, 0xc0, 0xb7, 0xf8, 0xde, 0xe2, 0x26, 0x86, 0xbc, 0xad, 0xe9, 0x19, 0x1b, + 0x30, 0xf3, 0x1f, 0x4d, 0xda, 0x49, 0x0d, 0x8e, 0x76, 0xd1, 0x27, 0x61, 0xc8, 0x75, 0xb7, 0x7b, + 0x1e, 0x69, 0x2e, 0xc6, 0x6c, 0xf9, 0x8b, 0x7d, 0x06, 0xa6, 0xd2, 0x5c, 0x2d, 0xea, 0x33, 0x06, + 0xf1, 0x33, 0x6a, 0x49, 0xc1, 0x22, 0xc1, 0xd9, 0xeb, 0xc0, 0xf4, 0xfa, 0x82, 0xcd, 0x8f, 0x78, + 0x93, 0x26, 0xf2, 0x98, 0x3d, 0xa5, 0x95, 0xdc, 0xc5, 0x02, 0xf6, 0x02, 0x2a, 0xb0, 0x50, 0xa4, + 0xc4, 0x6e, 0xc3, 0xe4, 0xe4, 0xa8, 0xa7, 0x42, 0x98, 0xe8, 0xbb, 0xf3, 0x50, 0xd3, 0xba, 0x03, + 0x93, 0x62, 0x50, 0xb2, 0x27, 0x7b, 0x22, 0x85, 0xdb, 0xdd, 0x95, 0x16, 0xfb, 0x10, 0xe6, 0x34, + 0x4c, 0xca, 0x93, 0xee, 0xf0, 0xb6, 0xb7, 0xed, 0x6d, 0xb6, 0xb9, 0x9c, 0xa4, 0xf9, 0xa5, 0x90, + 0xdc, 0x61, 0xed, 0xd9, 0x94, 0x9a, 0x32, 0xa8, 0x2f, 0x4b, 0x5a, 0xb6, 0x0a, 0x33, 0x19, 0xce, + 0xbc, 0xe5, 0xf4, 0xba, 0x7d, 0x63, 0xc1, 0xa6, 0x3c, 0x99, 0xc9, 0x93, 0xb7, 0xee, 0x75, 0xad, + 0x6f, 0xc1, 0x98, 0x3e, 0x91, 0x45, 0x27, 0xe8, 0xc2, 0x8c, 0x9c, 0x7d, 0xa3, 0x09, 0x6c, 0x45, + 0x5c, 0x26, 0x27, 0x52, 0x14, 0x1c, 0x44, 0xda, 0x93, 0xc6, 0x13, 0x28, 0x0e, 0xe1, 0x0b, 0x30, + 0xd6, 0xf2, 0xa2, 0x6e, 0xdb, 0xdd, 0x43, 0xeb, 0x56, 0x39, 0xd2, 0xa3, 0x12, 0x86, 0xca, 0xca, + 0x05, 0x98, 0xca, 0x6d, 0x9e, 0x9a, 0x78, 0x42, 0x87, 0xc1, 0xc1, 0xe2, 0x89, 0xe5, 0xc3, 0x98, + 0x7e, 0x18, 0x1e, 0x92, 0x9a, 0xed, 0x24, 0x86, 0xf8, 0xa2, 0x93, 0x62, 0xe8, 0xf1, 0xfe, 0x7c, + 0xd9, 0x6b, 0x61, 0x60, 0xaf, 0xf3, 0x50, 0x55, 0x62, 0x9e, 0x94, 0xae, 0xf0, 0xbd, 0x4c, 0x99, + 0x05, 0xd8, 0x49, 0xa9, 0xf5, 0x0a, 0x0c, 0xcb, 0xf3, 0xee, 0xe0, 0x57, 0x32, 0xeb, 0xdb, 0x65, + 0x98, 0xb4, 0xb9, 0xd8, 0x8d, 0x39, 0x25, 0x33, 0x7d, 0x6a, 0xef, 0xf5, 0xc5, 0xa1, 0xcf, 0x8d, + 0x6f, 0x3b, 0x20, 0x2f, 0xf7, 0xaf, 0x94, 0x60, 0xba, 0x00, 0x97, 0x5d, 0x86, 0x51, 0x95, 0xae, + 0x3b, 0xed, 0x44, 0x0c, 0xbb, 0xa6, 0xcc, 0xc8, 0xb0, 0x33, 0x75, 0x24, 0x76, 0x15, 0x46, 0x96, + 0x3c, 0xb7, 0x5d, 0x6f, 0xb5, 0x92, 0x78, 0x5f, 0x78, 0x39, 0xc0, 0x5c, 0xbb, 0xae, 0x80, 0xea, + 0x92, 0x4f, 0x82, 0xca, 0x5e, 0x95, 0x93, 0xa2, 0x92, 0x74, 0x2b, 0x4e, 0x8a, 0xef, 0xed, 0xcf, + 0x03, 0xb5, 0x69, 0x3d, 0x99, 0x22, 0x98, 0x8e, 0x80, 0x80, 0xa9, 0x4f, 0xe3, 0x53, 0x3b, 0x74, + 0xc5, 0xe9, 0x08, 0xb2, 0x9f, 0x77, 0xa4, 0x64, 0x88, 0x7f, 0xa5, 0x0c, 0x27, 0x8b, 0x09, 0x3f, + 0xd6, 0x50, 0xbe, 0x06, 0x23, 0x98, 0x64, 0x53, 0x4b, 0xa1, 0x32, 0xf1, 0x78, 0x7f, 0x1e, 0x28, + 0x23, 0x27, 0xe2, 0xa7, 0x08, 0x6c, 0x0b, 0xc6, 0x57, 0xdd, 0x28, 0xbe, 0xc1, 0xdd, 0x30, 0xde, + 0xe4, 0x6e, 0x7c, 0x04, 0xf1, 0x5f, 0x59, 0x32, 0xcd, 0xa2, 0x04, 0xb2, 0xa3, 0x28, 0x33, 0x02, + 0xba, 0xc9, 0x36, 0x99, 0x28, 0x03, 0x47, 0x98, 0x28, 0xdf, 0x84, 0xc9, 0x06, 0xef, 0xb8, 0xdd, + 0x9d, 0x20, 0x54, 0xb1, 0x4a, 0x2e, 0xc2, 0x78, 0x02, 0x2a, 0x9c, 0x2d, 0x66, 0xb1, 0x81, 0xaf, + 0x75, 0x44, 0xba, 0x95, 0x98, 0xc5, 0xd6, 0x5f, 0x2f, 0xc3, 0xa9, 0x7a, 0x53, 0x9a, 0x65, 0xcb, + 0x02, 0xe5, 0x3d, 0xf2, 0x29, 0xd7, 0xcd, 0x2e, 0xc1, 0xc8, 0x6d, 0xf7, 0xd1, 0x2a, 0x77, 0x23, + 0x1e, 0xc9, 0xfc, 0x3c, 0x24, 0x2b, 0xbb, 0x8f, 0xd2, 0xf7, 0x4d, 0x3b, 0xc5, 0xd1, 0x75, 0x0f, + 0x03, 0x9f, 0x50, 0xf7, 0x60, 0xc1, 0xd0, 0x8d, 0xa0, 0xdd, 0x92, 0x67, 0xbd, 0x34, 0xaa, 0xd8, + 0x41, 0x88, 0x2d, 0x4b, 0xac, 0x3f, 0x28, 0xc1, 0x44, 0xd2, 0x62, 0x6c, 0xc2, 0xa7, 0xde, 0x25, + 0xe7, 0x60, 0x18, 0x2b, 0x5a, 0x59, 0xd2, 0x0f, 0x8d, 0x36, 0xc7, 0xac, 0xe2, 0x2d, 0x5b, 0x15, + 0xea, 0x3d, 0x31, 0xf8, 0xc9, 0x7a, 0xc2, 0xfa, 0x5b, 0x68, 0xaf, 0xa1, 0x7f, 0xa5, 0x38, 0x89, + 0xb4, 0x86, 0x94, 0x8e, 0xd8, 0x90, 0xf2, 0x13, 0x1b, 0x92, 0x4a, 0xdf, 0x21, 0xf9, 0x91, 0x32, + 0x8c, 0x26, 0x8d, 0xfd, 0x3e, 0xcb, 0xe3, 0x93, 0x7c, 0xd7, 0x91, 0xe2, 0x8b, 0x35, 0xb4, 0xbd, + 0x42, 0x86, 0xf1, 0xfa, 0x12, 0x0c, 0xc9, 0xc5, 0x54, 0xca, 0x78, 0x51, 0x64, 0x46, 0x77, 0x61, + 0x42, 0xb2, 0x1e, 0xc2, 0x01, 0x8d, 0x6c, 0x49, 0x87, 0x01, 0xdc, 0x36, 0xf8, 0xa6, 0x34, 0xdf, + 0x79, 0x6a, 0xcf, 0xa8, 0xe2, 0x00, 0x6e, 0xe9, 0x87, 0x1d, 0xe9, 0x74, 0xfa, 0x9d, 0x2a, 0xd4, + 0xb2, 0x24, 0x87, 0x67, 0x4a, 0x5a, 0xeb, 0x6d, 0xd2, 0x55, 0x85, 0x32, 0x25, 0x75, 0x7b, 0x9b, + 0xb6, 0x80, 0xa1, 0x49, 0x60, 0xe8, 0xed, 0xe2, 0x57, 0x8f, 0x49, 0x93, 0xc0, 0xd0, 0xdb, 0x35, + 0x4c, 0x02, 0x43, 0x6f, 0x17, 0xb5, 0x0f, 0xab, 0x0d, 0x0c, 0x6e, 0x82, 0xf7, 0x14, 0xa9, 0x7d, + 0x68, 0x47, 0xd9, 0x3c, 0xb5, 0x0a, 0x4d, 0x1c, 0x95, 0x0b, 0xdc, 0x0d, 0x65, 0x56, 0x1f, 0xb9, + 0x9d, 0xe1, 0x51, 0xb9, 0x89, 0x60, 0x27, 0x16, 0x70, 0x5b, 0x47, 0x62, 0x6d, 0x60, 0xda, 0x4f, + 0xb5, 0x80, 0x0f, 0xbf, 0x90, 0x2b, 0x0b, 0xe8, 0x19, 0x9d, 0xb5, 0xa3, 0xaf, 0xe6, 0x02, 0xbe, + 0x4f, 0x52, 0x65, 0xbc, 0x26, 0xa3, 0x7e, 0xa3, 0xd6, 0xa9, 0x7a, 0x28, 0x33, 0x15, 0x94, 0x09, + 0x28, 0x2a, 0x78, 0xa2, 0x7b, 0x4a, 0x99, 0xb0, 0x2f, 0xc2, 0xa8, 0x1e, 0xb2, 0x86, 0x02, 0xab, + 0x3c, 0x47, 0xb1, 0x7a, 0xd3, 0x58, 0x35, 0xa6, 0x71, 0x8f, 0x1e, 0x9b, 0x66, 0x13, 0x4e, 0x2d, + 0x06, 0x7e, 0xd4, 0xeb, 0xa8, 0xb7, 0xf7, 0x34, 0x51, 0x05, 0xe0, 0x50, 0x60, 0xfc, 0x8b, 0xa6, + 0x44, 0x51, 0xef, 0xf6, 0x2a, 0xb2, 0x89, 0x71, 0x01, 0xe9, 0xc7, 0x88, 0xad, 0xc3, 0x28, 0xaa, + 0x5d, 0xa5, 0xb9, 0xf1, 0xa8, 0xb9, 0x6d, 0xa4, 0x25, 0x4b, 0x62, 0x61, 0xa0, 0xfa, 0x18, 0xdf, + 0x4c, 0xa2, 0x9c, 0xbd, 0xb1, 0xce, 0x86, 0x7d, 0x0d, 0x26, 0xe8, 0x8a, 0xb6, 0xc1, 0x37, 0x69, + 0xee, 0x8c, 0x19, 0xea, 0x0b, 0xb3, 0x90, 0x0c, 0x50, 0xa4, 0xb2, 0xfb, 0x21, 0xdf, 0xa4, 0xb1, + 0x37, 0xfc, 0x13, 0x0d, 0x7c, 0x76, 0x0f, 0xa6, 0x6f, 0xb8, 0x11, 0x01, 0xb5, 0xd8, 0x23, 0xe3, + 0xa8, 0xd6, 0x45, 0xbf, 0x91, 0x1d, 0x37, 0x52, 0xda, 0xf3, 0xc2, 0x58, 0x23, 0x45, 0xf4, 0xec, + 0xdb, 0x25, 0x98, 0x35, 0x94, 0xeb, 0xd2, 0x94, 0x12, 0x23, 0x76, 0x4f, 0xe0, 0x3b, 0x99, 0x8a, + 0x72, 0xdd, 0x0f, 0x8d, 0x86, 0x24, 0xa3, 0xbf, 0x0f, 0xd3, 0x72, 0xdd, 0x21, 0xa3, 0x1f, 0x0f, + 0xb9, 0x50, 0x71, 0x4d, 0x4f, 0x9a, 0x0b, 0x35, 0xb3, 0xae, 0x15, 0x9a, 0x75, 0x35, 0xdb, 0xdf, + 0x52, 0x3b, 0x56, 0x4a, 0xb4, 0x63, 0x68, 0x65, 0x2c, 0x06, 0x42, 0x46, 0xb0, 0xc3, 0x1f, 0xd6, + 0x1b, 0xfa, 0x3e, 0x24, 0xc5, 0xc2, 0x03, 0xf7, 0x21, 0xeb, 0x7f, 0x18, 0x82, 0xc9, 0xcc, 0xb4, + 0x90, 0xf7, 0xd4, 0x52, 0xee, 0x9e, 0xda, 0x00, 0x20, 0xfd, 0xf0, 0x11, 0x15, 0xb9, 0xca, 0x09, + 0x7a, 0x54, 0x86, 0x30, 0x48, 0xd6, 0x94, 0xc6, 0x46, 0x30, 0xa5, 0x15, 0x7b, 0x44, 0xc5, 0x7a, + 0xc2, 0x94, 0x16, 0xbd, 0xc6, 0x34, 0x65, 0xc3, 0xe6, 0x61, 0x10, 0x63, 0x73, 0xeb, 0x3e, 0xe8, + 0x9e, 0x00, 0xd8, 0x04, 0x67, 0x2f, 0xc2, 0x90, 0x10, 0xa2, 0x56, 0x96, 0xe4, 0x26, 0x88, 0x67, + 0x8b, 0x90, 0xb2, 0x84, 0xc4, 0x22, 0x8b, 0xd8, 0x55, 0x18, 0xa3, 0xbf, 0x64, 0x88, 0xab, 0x21, + 0xd3, 0x28, 0xd8, 0xf1, 0x5a, 0x2a, 0xca, 0x95, 0x81, 0x27, 0x6e, 0x17, 0x8d, 0x1e, 0xaa, 0x75, + 0x56, 0x96, 0x64, 0xa6, 0x0f, 0xbc, 0x5d, 0x44, 0x04, 0x14, 0x55, 0xa4, 0x08, 0x42, 0x96, 0x91, + 0x9e, 0x60, 0x55, 0xbc, 0x53, 0xa2, 0x2c, 0x43, 0x1e, 0x60, 0xb6, 0x2c, 0x61, 0x17, 0xe8, 0xf9, + 0x06, 0xc5, 0x42, 0xca, 0xcb, 0x8d, 0x8f, 0x1d, 0xa8, 0x98, 0x40, 0xd9, 0x30, 0x29, 0x16, 0x95, + 0x8b, 0xbf, 0x97, 0x3b, 0xae, 0xd7, 0x96, 0xdb, 0x0a, 0x56, 0x8e, 0xb8, 0x5c, 0x40, 0xed, 0x14, + 0x81, 0xbd, 0x07, 0x13, 0x94, 0x96, 0xb6, 0xd3, 0x09, 0x7c, 0x64, 0x3f, 0x9a, 0xda, 0xd1, 0xc9, + 0x9c, 0xbe, 0xa2, 0x88, 0x6a, 0xc9, 0xe0, 0x8a, 0xf3, 0x04, 0x9f, 0x86, 0x7b, 0xf4, 0xb0, 0x34, + 0x96, 0x9e, 0x27, 0x48, 0x1a, 0x11, 0xdc, 0xd6, 0x91, 0xd8, 0xdb, 0x30, 0x2e, 0x7e, 0x5e, 0xf7, + 0x76, 0x39, 0x55, 0x38, 0x9e, 0xda, 0x57, 0x20, 0xd5, 0xb6, 0x28, 0xa1, 0xfa, 0x4c, 0x4c, 0xf6, + 0x01, 0x9c, 0x40, 0x4e, 0xcd, 0xa0, 0xcb, 0x5b, 0xf5, 0xad, 0x2d, 0xaf, 0xed, 0x91, 0xc1, 0xe5, + 0x44, 0x6a, 0xf8, 0x44, 0x15, 0x23, 0x86, 0xe3, 0xa6, 0x28, 0x76, 0x31, 0x25, 0xdb, 0x80, 0xda, + 0x62, 0x2f, 0x8a, 0x83, 0x4e, 0x3d, 0x8e, 0x43, 0x6f, 0xb3, 0x17, 0xf3, 0x68, 0x76, 0xd2, 0x08, + 0x79, 0x24, 0x16, 0x47, 0x52, 0x48, 0xfa, 0xa0, 0x26, 0x52, 0x38, 0x6e, 0x42, 0x62, 0xe7, 0x98, + 0x58, 0xff, 0xbc, 0x04, 0xe3, 0x06, 0x29, 0x7b, 0x0b, 0xc6, 0xae, 0x85, 0x1e, 0xf7, 0x5b, 0xed, + 0x3d, 0xed, 0xa2, 0x8a, 0xb7, 0x98, 0x2d, 0x09, 0xa7, 0xaf, 0x36, 0xd0, 0x12, 0x3d, 0x4f, 0xb9, + 0xd0, 0x1a, 0xfa, 0x12, 0x85, 0x42, 0x90, 0x13, 0xb4, 0x92, 0xc6, 0x60, 0xc3, 0x09, 0x2a, 0x67, + 0xa7, 0x86, 0xc2, 0xbe, 0x00, 0x43, 0xf4, 0x88, 0x2c, 0x4d, 0x73, 0x4f, 0x17, 0x7d, 0x26, 0x85, + 0xdd, 0xc0, 0x89, 0x88, 0x56, 0x47, 0x91, 0x2d, 0x89, 0xac, 0x9f, 0x29, 0x01, 0xcb, 0xa3, 0x1e, + 0xa2, 0xf7, 0x3a, 0xd4, 0x9a, 0xe9, 0x4b, 0xc9, 0x6a, 0xac, 0x18, 0x8a, 0x76, 0x51, 0x13, 0x15, + 0x50, 0xc7, 0xcb, 0x55, 0xa7, 0x2b, 0xe2, 0xa8, 0xd8, 0xfa, 0xe1, 0x32, 0x40, 0x8a, 0xcd, 0x3e, + 0x4f, 0x49, 0x3d, 0x3f, 0xe8, 0xb9, 0x6d, 0x6f, 0xcb, 0x33, 0x23, 0x35, 0x23, 0x93, 0x6f, 0xaa, + 0x12, 0xdb, 0x44, 0x64, 0xef, 0xc3, 0x64, 0x63, 0xcd, 0xa4, 0xd5, 0xdc, 0x4a, 0xa2, 0xae, 0x93, + 0x21, 0xcf, 0x62, 0xa3, 0x09, 0xbe, 0x3e, 0x1a, 0x64, 0x82, 0x4f, 0x03, 0x21, 0x4b, 0xc4, 0xc6, + 0xd2, 0x58, 0x93, 0x9e, 0x33, 0xad, 0xe4, 0x29, 0x14, 0x5b, 0x17, 0x75, 0x9d, 0xae, 0x74, 0xa9, + 0x11, 0xfb, 0x84, 0x81, 0x97, 0x76, 0xe4, 0x60, 0x9f, 0xd0, 0x1a, 0x3f, 0x8b, 0x6a, 0xbf, 0x4e, + 0x10, 0x73, 0xa9, 0xed, 0x78, 0x6a, 0xef, 0x3d, 0xa9, 0x05, 0xc2, 0xa0, 0x11, 0x31, 0xc0, 0xf8, + 0x3a, 0x69, 0x65, 0x73, 0x25, 0xbd, 0xa4, 0x90, 0x2d, 0x42, 0x81, 0x61, 0xce, 0x2f, 0x95, 0xe0, + 0x44, 0x21, 0x2d, 0xbb, 0x08, 0x90, 0xea, 0x94, 0x64, 0x2f, 0xe1, 0x8e, 0x99, 0x46, 0x1e, 0xb3, + 0x35, 0x0c, 0xf6, 0xd5, 0xac, 0x36, 0xe8, 0xf0, 0x83, 0x70, 0x4e, 0x05, 0xfc, 0x34, 0xb5, 0x41, + 0x05, 0x3a, 0x20, 0xeb, 0x57, 0x2a, 0x30, 0xa5, 0x05, 0x36, 0xa3, 0xb6, 0x1e, 0xe2, 0x12, 0xf1, + 0x00, 0xc6, 0xc4, 0xd7, 0x78, 0x4d, 0xe9, 0xf2, 0x46, 0xd6, 0x32, 0xaf, 0xe6, 0x7c, 0xbe, 0x25, + 0xb7, 0x8b, 0x3a, 0x32, 0x59, 0xa2, 0xe2, 0xd6, 0x89, 0x0f, 0x12, 0xcd, 0xbc, 0xbb, 0x9b, 0xc1, + 0x9c, 0x45, 0x30, 0xbe, 0xb4, 0xe7, 0xbb, 0x9d, 0xa4, 0x36, 0xb2, 0x9a, 0xf9, 0x4c, 0xdf, 0xda, + 0x0c, 0x6c, 0xaa, 0x2e, 0xf5, 0x8e, 0xa4, 0xb2, 0x82, 0xc0, 0x1c, 0x06, 0xd5, 0xdc, 0xfb, 0x30, + 0x95, 0x6b, 0xf4, 0xb1, 0x22, 0x02, 0x6f, 0x00, 0xcb, 0xb7, 0xe3, 0xe8, 0x76, 0xa5, 0xe2, 0xcc, + 0x73, 0xfd, 0x16, 0xd9, 0xe0, 0x5c, 0xd6, 0xed, 0x4a, 0xff, 0xb7, 0xb2, 0xee, 0x77, 0xff, 0xb4, + 0xaf, 0xba, 0x2f, 0x19, 0xb7, 0xe1, 0xe7, 0xfb, 0x8d, 0x69, 0x7f, 0xad, 0x03, 0xbb, 0x0a, 0x72, + 0x0d, 0x66, 0xc2, 0xd2, 0xe4, 0x79, 0xc8, 0x95, 0x4a, 0xd8, 0x62, 0xe8, 0xf0, 0xd4, 0x26, 0x79, + 0xc9, 0xa6, 0x1f, 0xda, 0xfa, 0xfd, 0x6e, 0x05, 0x4e, 0xf5, 0x69, 0x07, 0xdb, 0xcb, 0x4e, 0x49, + 0xd2, 0x69, 0xbc, 0x79, 0x70, 0xf3, 0x9f, 0xc4, 0xc4, 0x64, 0x9f, 0xa7, 0x38, 0x3e, 0x4d, 0x4c, + 0xeb, 0x2f, 0x6f, 0xf3, 0xf8, 0x28, 0xf0, 0x20, 0x81, 0x66, 0x03, 0xf8, 0x10, 0x94, 0xbd, 0x0f, + 0x83, 0x18, 0xc2, 0x21, 0x13, 0xa8, 0x55, 0x60, 0x20, 0x5c, 0x0b, 0x35, 0x2c, 0x7e, 0x1a, 0xa1, + 0x86, 0x05, 0x80, 0x7d, 0x0e, 0x2a, 0xf5, 0x8d, 0x86, 0x1c, 0xe5, 0x09, 0x9d, 0x7c, 0xa3, 0x91, + 0xe6, 0x08, 0x73, 0x8d, 0x64, 0x5e, 0x82, 0x42, 0x10, 0x5e, 0x5f, 0x5c, 0x93, 0x63, 0xac, 0x13, + 0x5e, 0x5f, 0x5c, 0x4b, 0x09, 0xb7, 0x4d, 0x27, 0xd1, 0xeb, 0x8b, 0x6b, 0x9f, 0xde, 0x22, 0xfa, + 0x77, 0xca, 0x14, 0x7c, 0x88, 0x3e, 0xec, 0x7d, 0x18, 0x53, 0xd6, 0xc7, 0xda, 0xa6, 0x27, 0xcd, + 0xda, 0xa5, 0x8d, 0x7f, 0xc6, 0x68, 0xc9, 0x20, 0x50, 0xd9, 0xf6, 0x12, 0x33, 0x7c, 0xdd, 0xde, + 0x27, 0xe1, 0x90, 0xf5, 0xbd, 0x33, 0x49, 0xd8, 0x15, 0xa8, 0xae, 0x73, 0xdf, 0xf5, 0xe3, 0x44, + 0xbd, 0x8a, 0xb6, 0xd2, 0x31, 0xc2, 0x4c, 0x19, 0x24, 0x41, 0x44, 0xb3, 0xde, 0xde, 0x66, 0xd4, + 0x0c, 0x3d, 0x0c, 0x52, 0x96, 0x9c, 0xec, 0x64, 0xd6, 0xab, 0x95, 0x98, 0x0c, 0x32, 0x44, 0xd6, + 0xcf, 0x96, 0x60, 0x58, 0x0e, 0x24, 0x65, 0x49, 0xdd, 0x4e, 0x4f, 0x26, 0xe9, 0x6d, 0xb3, 0xed, + 0x65, 0xbd, 0x6d, 0xb6, 0x29, 0x12, 0xd8, 0x88, 0x74, 0x73, 0x4d, 0x1e, 0x1a, 0x71, 0x36, 0x2a, + 0x07, 0x6e, 0x33, 0x09, 0x66, 0x82, 0x7a, 0x54, 0xb7, 0x47, 0xeb, 0xe7, 0x65, 0xcb, 0xae, 0x2f, + 0xae, 0xb1, 0xcb, 0x50, 0x5d, 0x0d, 0x28, 0xa8, 0x9d, 0x9e, 0xf2, 0xbf, 0x2d, 0x61, 0x7a, 0x07, + 0x29, 0x3c, 0xd1, 0xbe, 0xb5, 0x30, 0x90, 0x37, 0x23, 0xad, 0x7d, 0x5d, 0x02, 0x66, 0xda, 0x97, + 0xa0, 0x1e, 0xb9, 0x7d, 0xdf, 0x28, 0xda, 0x24, 0x68, 0x83, 0x59, 0x86, 0x11, 0x8c, 0xf9, 0xbb, + 0xcb, 0xc3, 0x3d, 0x69, 0xcf, 0xf4, 0x4a, 0xbf, 0x0d, 0x62, 0x49, 0x21, 0xca, 0x4d, 0x2a, 0xa5, + 0xb4, 0x36, 0xe0, 0xec, 0x61, 0xe8, 0xec, 0x0a, 0x54, 0xdc, 0x87, 0x2a, 0x1e, 0xf9, 0x0b, 0xfd, + 0x2a, 0xa9, 0x6f, 0x34, 0x24, 0x7b, 0x81, 0x6d, 0xfd, 0xdd, 0x92, 0x1e, 0x82, 0x22, 0x8b, 0xc3, + 0x2e, 0xc1, 0x4c, 0xc4, 0xe3, 0x5e, 0x57, 0x69, 0x85, 0xb6, 0x82, 0xd0, 0x71, 0x43, 0xd9, 0xf3, + 0xf6, 0x14, 0x96, 0x91, 0x2e, 0xe8, 0x5a, 0x10, 0xd6, 0x43, 0x9f, 0x9d, 0x85, 0x51, 0xcf, 0x8f, + 0xf9, 0xb6, 0xf4, 0x49, 0xa3, 0x13, 0x51, 0x07, 0xb1, 0xeb, 0x70, 0x32, 0xf9, 0x2e, 0x87, 0xf2, + 0xac, 0xb5, 0xd0, 0x57, 0x28, 0x23, 0x85, 0x53, 0x86, 0x35, 0x3b, 0x68, 0x73, 0x7b, 0x26, 0x21, + 0x20, 0x60, 0x4b, 0x40, 0x2d, 0x5e, 0xd0, 0xeb, 0xf7, 0xaf, 0xa0, 0x63, 0xc9, 0x4d, 0xdd, 0x89, + 0x57, 0x16, 0xa9, 0xfd, 0x79, 0xae, 0x5f, 0xcf, 0xdc, 0xbf, 0x62, 0x17, 0x50, 0x59, 0x7f, 0x58, + 0xd6, 0x99, 0x35, 0x78, 0xb8, 0xfb, 0x14, 0x9f, 0xb4, 0xc5, 0x6f, 0xa3, 0xd9, 0xcf, 0x3b, 0xe0, + 0xa0, 0xfd, 0x5c, 0xe6, 0xa0, 0x9d, 0xef, 0xc7, 0x42, 0xca, 0xb9, 0x47, 0x3e, 0x69, 0xbf, 0x53, + 0x81, 0x93, 0xc5, 0xed, 0xd0, 0xbb, 0xa6, 0x74, 0x40, 0xd7, 0x9c, 0x87, 0xea, 0x8d, 0x20, 0x8a, + 0x35, 0x63, 0x53, 0x7c, 0x11, 0xda, 0x91, 0x30, 0x3b, 0x29, 0x65, 0x2f, 0xc2, 0x90, 0xf8, 0x3b, + 0xd9, 0x63, 0x91, 0x1f, 0xc6, 0x4d, 0xf2, 0x5a, 0xb6, 0x2c, 0x62, 0xd7, 0xa1, 0x6a, 0x4b, 0xf7, + 0xd2, 0x4c, 0x4f, 0x2b, 0x70, 0x22, 0x60, 0xb3, 0x50, 0x42, 0x8c, 0x4c, 0x1d, 0x12, 0xc6, 0xea, + 0x30, 0x2c, 0x27, 0x53, 0xc6, 0x9a, 0xa0, 0x60, 0x06, 0x52, 0x53, 0xe4, 0x0b, 0xb2, 0xad, 0xe8, + 0xc4, 0xb1, 0x80, 0xef, 0xc2, 0x2b, 0x4b, 0xca, 0x53, 0x14, 0x8f, 0x05, 0x7a, 0x37, 0x36, 0xed, + 0x7a, 0x13, 0x44, 0x36, 0x0f, 0xa3, 0x21, 0x6f, 0xbb, 0x7b, 0x74, 0xe6, 0xc8, 0x7e, 0x07, 0x04, + 0xd1, 0x61, 0xf3, 0x2c, 0x8c, 0x10, 0x82, 0xd7, 0x92, 0x5a, 0x20, 0xbb, 0x8a, 0x80, 0x95, 0x56, + 0x64, 0xad, 0xc3, 0x6c, 0xbf, 0x31, 0x15, 0xf7, 0xdc, 0xd8, 0x0d, 0xb7, 0x39, 0x5e, 0x2a, 0xda, + 0x32, 0x8c, 0x40, 0x6a, 0x25, 0xb6, 0x8e, 0x65, 0x37, 0xb0, 0xc8, 0x1e, 0x8b, 0xb5, 0x5f, 0xd6, + 0xb7, 0xcb, 0x00, 0x4a, 0xb9, 0xf8, 0xd4, 0x2e, 0xa2, 0xcf, 0x19, 0x8b, 0x48, 0xb3, 0xa5, 0xc3, + 0xcf, 0x3a, 0xd2, 0xdb, 0xd8, 0x5d, 0xb4, 0x3a, 0xd3, 0xf0, 0x0f, 0x4f, 0x8c, 0xbc, 0x9e, 0xea, + 0x5d, 0xa5, 0xeb, 0x16, 0xbe, 0x9a, 0x10, 0xdc, 0xda, 0x84, 0x99, 0xeb, 0x3c, 0x4e, 0xb5, 0xb0, + 0xea, 0x85, 0xfc, 0x60, 0xb6, 0xaf, 0xc1, 0x88, 0xc4, 0x4f, 0x0e, 0x46, 0x52, 0x19, 0xca, 0xf0, + 0x68, 0xa8, 0x32, 0x54, 0x08, 0x62, 0xc3, 0x5d, 0xe2, 0x6d, 0x1e, 0xf3, 0x4f, 0xb7, 0x9a, 0x06, + 0x30, 0xfa, 0x14, 0xfc, 0xb2, 0xa3, 0xd5, 0x70, 0x68, 0xff, 0xdc, 0x87, 0x13, 0x49, 0xdb, 0x9f, + 0x24, 0xdf, 0x4b, 0x30, 0xa9, 0x24, 0x38, 0x8d, 0xe3, 0x01, 0x26, 0x52, 0xbf, 0x57, 0x82, 0x39, + 0x45, 0xb1, 0xe1, 0x25, 0x56, 0xc1, 0x47, 0x22, 0x66, 0xef, 0xc1, 0xa8, 0x46, 0x23, 0xbd, 0xae, + 0xf0, 0x39, 0xe5, 0xa1, 0x17, 0xef, 0x38, 0x11, 0xc1, 0xf5, 0xe7, 0x14, 0x0d, 0x9d, 0x6d, 0xc2, + 0x5c, 0xa3, 0x7e, 0x7b, 0x35, 0xf5, 0x9b, 0xbc, 0x13, 0x5c, 0x0b, 0xda, 0xed, 0xe0, 0xe1, 0x3d, + 0x7b, 0x55, 0x25, 0x8f, 0xc3, 0x18, 0x50, 0xf8, 0x36, 0xa3, 0x39, 0x5f, 0xfa, 0x81, 0xb3, 0x85, + 0x88, 0x4e, 0x2f, 0x6c, 0x47, 0xf6, 0x01, 0x5c, 0xac, 0xbf, 0x5f, 0x82, 0x67, 0x13, 0x27, 0xbe, + 0x82, 0xef, 0xcb, 0x7c, 0x41, 0xe9, 0x49, 0x7e, 0x41, 0xf9, 0x89, 0x7c, 0xc1, 0x9d, 0x74, 0x7c, + 0x56, 0xfc, 0x24, 0x44, 0x87, 0x6a, 0x3f, 0xd3, 0xc7, 0x47, 0x8e, 0xca, 0x73, 0xb9, 0xa0, 0x1f, + 0x5a, 0x6c, 0x0f, 0xeb, 0x5d, 0xad, 0x43, 0x0a, 0x18, 0x1a, 0xc4, 0xa5, 0x2c, 0xf1, 0xb7, 0xcb, + 0x30, 0x79, 0x77, 0x65, 0x69, 0x31, 0x31, 0xf7, 0x7b, 0x6a, 0x37, 0xcd, 0x62, 0x83, 0x3a, 0xe3, + 0xdb, 0xfa, 0xef, 0x9c, 0xd6, 0x3d, 0x98, 0xce, 0x74, 0x03, 0xca, 0x79, 0x5f, 0x24, 0xb7, 0xb0, + 0x04, 0xac, 0x64, 0xbc, 0x93, 0x45, 0xec, 0xef, 0x5f, 0xb1, 0x33, 0xd8, 0xd6, 0xff, 0x34, 0x96, + 0xe1, 0x2b, 0x37, 0xe3, 0xd7, 0x60, 0x64, 0x25, 0x8a, 0x7a, 0x3c, 0xbc, 0x67, 0xaf, 0xea, 0xba, + 0x39, 0x0f, 0x81, 0x62, 0x0e, 0xd9, 0x29, 0x02, 0xbb, 0x00, 0x55, 0x99, 0x11, 0x44, 0xed, 0x6e, + 0xf8, 0x4c, 0x92, 0x24, 0x14, 0xb1, 0x93, 0x62, 0xf6, 0x16, 0x8c, 0xd1, 0xdf, 0x34, 0xa3, 0x65, + 0x87, 0xa3, 0x36, 0x5e, 0xa2, 0xd3, 0x0a, 0xb0, 0x0d, 0x34, 0xf6, 0x2a, 0x54, 0xea, 0x8b, 0xb6, + 0xd4, 0xbf, 0xca, 0xab, 0x55, 0xe8, 0x90, 0x92, 0xdc, 0xb8, 0x67, 0x2f, 0xda, 0xe2, 0x82, 0xa4, + 0xa2, 0x23, 0xc9, 0xa7, 0x23, 0x9c, 0x01, 0x4a, 0xbd, 0x9b, 0x11, 0x15, 0x10, 0xc6, 0x2e, 0xc1, + 0xf0, 0x12, 0xd9, 0xa8, 0xca, 0x87, 0x23, 0xca, 0x39, 0x4d, 0x20, 0x23, 0xca, 0x0f, 0x81, 0xd8, + 0x05, 0x95, 0x6e, 0xb5, 0x9a, 0x7a, 0x97, 0xf5, 0xc9, 0xa9, 0x9a, 0xc6, 0x4a, 0x18, 0x39, 0x3c, + 0x56, 0x42, 0x3e, 0xca, 0x01, 0x3c, 0xc9, 0x28, 0x07, 0x9b, 0x70, 0xea, 0x3a, 0xaa, 0x4b, 0xcd, + 0xe8, 0x8f, 0xf7, 0xec, 0x15, 0xf9, 0x00, 0x85, 0xef, 0xae, 0xa4, 0x51, 0xcd, 0x06, 0x90, 0x74, + 0x7a, 0xa1, 0xa7, 0x3f, 0x85, 0xf7, 0x61, 0xc4, 0x3e, 0x84, 0x99, 0xa2, 0x22, 0xf9, 0x4c, 0x85, + 0x71, 0x0e, 0x8b, 0x2b, 0xd0, 0xe3, 0x1c, 0x16, 0x71, 0x60, 0xab, 0x50, 0x23, 0x78, 0xbd, 0xd5, + 0xf1, 0x7c, 0x7a, 0x6a, 0x1b, 0x4f, 0xbd, 0xe5, 0x25, 0x57, 0x57, 0x14, 0xd2, 0x93, 0x9b, 0xe1, + 0x20, 0x98, 0xa1, 0x64, 0x3f, 0x51, 0x82, 0x31, 0x9b, 0x53, 0x96, 0x09, 0xdc, 0x3e, 0x27, 0xe4, + 0xa3, 0x7d, 0xe2, 0xb1, 0xd7, 0x88, 0x43, 0xcf, 0xdf, 0x96, 0xce, 0x7f, 0xeb, 0xd2, 0xf9, 0xef, + 0xbd, 0x8f, 0xe5, 0xfc, 0x47, 0xac, 0xa2, 0xc7, 0xfb, 0xf3, 0x63, 0xa1, 0xac, 0x13, 0x57, 0x91, + 0xd1, 0x02, 0xd1, 0x75, 0x18, 0x80, 0xe1, 0x9e, 0x4f, 0x31, 0xee, 0x79, 0x8b, 0x3e, 0x72, 0x12, + 0x37, 0x76, 0xec, 0x3a, 0x97, 0x36, 0xf1, 0x04, 0x21, 0xf7, 0xa1, 0x85, 0x1c, 0xd8, 0x02, 0x3d, + 0xff, 0x89, 0xa3, 0x94, 0xfc, 0xef, 0x6b, 0xa9, 0x6e, 0x46, 0x79, 0xa3, 0x39, 0x38, 0x8d, 0xf4, + 0xc9, 0x63, 0x90, 0xb0, 0x4b, 0x30, 0x74, 0xdb, 0x7d, 0x54, 0xdf, 0xe6, 0x32, 0xc7, 0xfa, 0xb8, + 0xda, 0xfe, 0x10, 0xb8, 0x50, 0xfd, 0x5d, 0xf2, 0x48, 0x7a, 0xc6, 0x96, 0x68, 0xec, 0xcf, 0x97, + 0xe0, 0x24, 0x2d, 0x63, 0xf5, 0x95, 0x0d, 0x1e, 0xc7, 0xa2, 0x1f, 0x64, 0xb0, 0xdc, 0xb3, 0xa9, + 0x5b, 0x45, 0x31, 0x1e, 0x46, 0x73, 0xb1, 0xe4, 0xce, 0x90, 0x74, 0x5c, 0x24, 0x4b, 0x8d, 0xac, + 0x03, 0x85, 0xf4, 0x6c, 0x1d, 0x46, 0x6f, 0x5f, 0xab, 0x27, 0xd5, 0x4e, 0x1b, 0x77, 0x36, 0x63, + 0xe7, 0xd3, 0xd0, 0x8a, 0xfc, 0x81, 0x74, 0x36, 0x78, 0x1d, 0xb9, 0xb5, 0xb8, 0x8c, 0xf1, 0x53, + 0x66, 0x52, 0x2d, 0x55, 0xf7, 0x41, 0x93, 0x67, 0xd3, 0x21, 0x24, 0x88, 0xec, 0x7d, 0x72, 0x51, + 0xc6, 0x30, 0x5b, 0xe2, 0x36, 0x7e, 0x22, 0x8d, 0x68, 0x4c, 0x79, 0x14, 0x64, 0x81, 0xae, 0x5f, + 0xd3, 0x09, 0xd8, 0x5d, 0x50, 0xf1, 0x58, 0xc8, 0x79, 0x01, 0xab, 0x3f, 0x99, 0xba, 0x05, 0x2a, + 0x8b, 0x15, 0xf2, 0x79, 0xc8, 0x36, 0x24, 0x4f, 0xcb, 0xee, 0xc1, 0x2c, 0xf7, 0xe3, 0xd0, 0x75, + 0xbc, 0x96, 0x8c, 0x7d, 0x9a, 0x3c, 0x82, 0xc9, 0xcc, 0xea, 0xea, 0xf9, 0x67, 0x59, 0xa0, 0xad, + 0x2c, 0xd1, 0xb3, 0xb8, 0xda, 0x35, 0xed, 0x13, 0x48, 0xbd, 0xd2, 0x32, 0xc1, 0xd2, 0xc3, 0x69, + 0x0f, 0x4e, 0x14, 0x52, 0xb1, 0x39, 0xa8, 0xb6, 0xbc, 0x28, 0xcd, 0x6f, 0x56, 0xb5, 0x93, 0xdf, + 0xec, 0x0c, 0x00, 0xc5, 0x8c, 0xd4, 0x5c, 0x0c, 0x46, 0x10, 0x82, 0x2f, 0x9a, 0x2f, 0xc3, 0xc4, + 0x76, 0xe8, 0x76, 0x77, 0x1c, 0xee, 0xb7, 0xba, 0x81, 0xe7, 0xcb, 0xf3, 0xc3, 0x1e, 0x47, 0xe8, + 0xb2, 0x04, 0x5a, 0x9f, 0x53, 0x13, 0x95, 0xbd, 0xae, 0x47, 0x05, 0xa8, 0xe0, 0x28, 0x0d, 0x77, + 0xdc, 0x47, 0x8e, 0xbb, 0xcd, 0x0d, 0x7b, 0x21, 0xf9, 0x8e, 0xf7, 0xd3, 0x25, 0x38, 0xdd, 0x77, + 0x2e, 0xb2, 0xab, 0x70, 0xca, 0xa5, 0xf0, 0x28, 0xce, 0x4e, 0x1c, 0x77, 0x23, 0x47, 0xdd, 0xac, + 0x55, 0xcc, 0xb9, 0x13, 0xb2, 0xf8, 0x86, 0x28, 0x55, 0x97, 0xed, 0x88, 0xbd, 0x0f, 0xcf, 0x79, + 0x7e, 0xc4, 0x9b, 0xbd, 0x90, 0x3b, 0x8a, 0x41, 0xd3, 0x6b, 0x85, 0x4e, 0xe8, 0xfa, 0xdb, 0x2a, + 0x28, 0x82, 0x7d, 0x5a, 0xe1, 0xc8, 0x10, 0x2c, 0x8b, 0x5e, 0x2b, 0xb4, 0x11, 0xc1, 0xfa, 0xa5, + 0x32, 0xcc, 0xf6, 0x9b, 0xab, 0x6c, 0x16, 0x86, 0xb9, 0xaf, 0xf7, 0xa6, 0xfa, 0x29, 0xae, 0xb7, + 0xc9, 0x11, 0x2c, 0xfb, 0xb2, 0xda, 0x94, 0x99, 0xbb, 0xd0, 0xc9, 0x47, 0x3f, 0x70, 0x65, 0x4f, + 0x8e, 0x35, 0xf5, 0x63, 0xf7, 0x0c, 0x40, 0x7a, 0xce, 0x92, 0x52, 0xd5, 0x1e, 0x71, 0x9b, 0x21, + 0x6d, 0x89, 0xec, 0x24, 0x0c, 0xd1, 0x39, 0x26, 0xdd, 0xc7, 0xe4, 0x2f, 0x21, 0x50, 0xc9, 0x4e, + 0xc6, 0x03, 0xb8, 0xb2, 0x30, 0x66, 0x74, 0xf6, 0x50, 0x87, 0x06, 0xa7, 0x70, 0x3e, 0x0f, 0x7f, + 0xfc, 0xf9, 0x6c, 0xfd, 0xe5, 0x71, 0x12, 0x16, 0xeb, 0xbd, 0x78, 0x47, 0x89, 0x97, 0x97, 0x8b, + 0xfc, 0x77, 0xc9, 0x4c, 0x5d, 0x73, 0x79, 0x31, 0xbd, 0x76, 0xd5, 0xb3, 0x7a, 0xb9, 0xf0, 0x59, + 0xfd, 0x35, 0x18, 0x59, 0xdc, 0xe1, 0xcd, 0x07, 0x89, 0x53, 0x64, 0x55, 0xbe, 0x5b, 0x0a, 0x20, + 0x65, 0x7a, 0x49, 0x11, 0xd8, 0x25, 0x00, 0x0c, 0x1b, 0x40, 0xb7, 0x28, 0x2d, 0x5b, 0x1b, 0x46, + 0x19, 0x90, 0x96, 0x7f, 0x1a, 0x0a, 0xb2, 0x6f, 0xd8, 0xd7, 0x74, 0x53, 0x41, 0x62, 0x1f, 0x85, + 0x5b, 0x12, 0x3d, 0x45, 0x10, 0x9f, 0xa7, 0x9d, 0x20, 0x52, 0xde, 0xa9, 0xe5, 0x8e, 0x19, 0x1d, + 0x89, 0x7d, 0x0e, 0x86, 0x17, 0x79, 0x18, 0xaf, 0xaf, 0xaf, 0xa2, 0x7d, 0x1e, 0x25, 0x29, 0xab, + 0x62, 0x42, 0xa9, 0x38, 0x6e, 0x7f, 0x6f, 0x7f, 0x7e, 0x3c, 0xf6, 0x3a, 0x3c, 0x49, 0xbe, 0x62, + 0x2b, 0x6c, 0xb6, 0x00, 0x35, 0xb2, 0x20, 0x4a, 0xef, 0xbf, 0x28, 0xd3, 0x54, 0x49, 0xc2, 0x92, + 0xe6, 0x46, 0x0f, 0xf9, 0x66, 0x92, 0x4e, 0x2b, 0x87, 0xcf, 0x96, 0x55, 0x16, 0x3a, 0xbd, 0xd9, + 0x90, 0xee, 0xa1, 0xd9, 0xbd, 0x5e, 0xb4, 0x3e, 0x4f, 0xc1, 0xea, 0x30, 0xbe, 0x18, 0x74, 0xba, + 0x6e, 0xec, 0x61, 0x92, 0xe8, 0x3d, 0x29, 0xbe, 0xe0, 0x6e, 0xda, 0xd4, 0x0b, 0x0c, 0x59, 0x48, + 0x2f, 0x60, 0xd7, 0x60, 0xc2, 0x0e, 0x7a, 0xa2, 0xdb, 0x95, 0x76, 0x8a, 0x24, 0x14, 0xb4, 0xa2, + 0x0b, 0x45, 0x89, 0x10, 0xa8, 0xa4, 0x2a, 0xca, 0x08, 0x54, 0x6f, 0x50, 0xb1, 0x3b, 0x05, 0x2f, + 0xc7, 0xba, 0x58, 0xa2, 0x27, 0xd5, 0xca, 0x31, 0x2b, 0x78, 0x74, 0xbe, 0x02, 0xa3, 0x8d, 0xc6, + 0xdd, 0x75, 0x1e, 0xc5, 0xd7, 0xda, 0xc1, 0x43, 0x94, 0x4a, 0xaa, 0x32, 0x07, 0x6c, 0x14, 0x38, + 0xb1, 0x58, 0x11, 0x5b, 0xed, 0xe0, 0xa1, 0xad, 0x63, 0xb1, 0xaf, 0x8b, 0xfe, 0xd0, 0x64, 0x78, + 0x19, 0x92, 0xff, 0xa0, 0x6b, 0x06, 0x9e, 0xfd, 0xe9, 0x22, 0x10, 0x97, 0x0d, 0xb3, 0xb3, 0x34, + 0x74, 0xf4, 0xd9, 0x0d, 0x83, 0x47, 0x7b, 0xf5, 0x56, 0x2b, 0xe4, 0x51, 0x24, 0xc5, 0x07, 0xf2, + 0xd9, 0x45, 0x25, 0x9c, 0x4b, 0x05, 0x86, 0xcf, 0xae, 0x46, 0xc0, 0x16, 0x85, 0x5c, 0x2b, 0x46, + 0x11, 0xed, 0x3a, 0x57, 0xd6, 0x50, 0x02, 0x90, 0x4f, 0x34, 0x72, 0xcc, 0xc9, 0x02, 0xd4, 0xeb, + 0x9a, 0xe2, 0xab, 0x46, 0xc3, 0x56, 0x60, 0x92, 0x00, 0x62, 0x69, 0x51, 0x06, 0xc8, 0xe9, 0x34, + 0x07, 0x95, 0x64, 0x83, 0x87, 0x29, 0x66, 0x81, 0xd4, 0x03, 0xaf, 0x64, 0xe8, 0xd8, 0xfb, 0x30, + 0x81, 0xe9, 0x75, 0x12, 0x1f, 0x46, 0x3c, 0xc8, 0xc7, 0x28, 0xfc, 0xbc, 0x2c, 0xc9, 0x78, 0x13, + 0x8f, 0x45, 0xd1, 0xce, 0x9a, 0x72, 0x6e, 0x14, 0x0c, 0xd0, 0x94, 0x30, 0x65, 0x70, 0x22, 0x65, + 0x20, 0x4b, 0xb2, 0x0c, 0xe2, 0x76, 0x94, 0x32, 0xf8, 0xa9, 0x12, 0x9c, 0x16, 0x15, 0xe9, 0xee, + 0x8a, 0xb8, 0x29, 0xa0, 0x9d, 0x24, 0xa5, 0x06, 0x7b, 0xfd, 0xa2, 0x12, 0x2a, 0x2f, 0x6a, 0x68, + 0x17, 0x77, 0xdf, 0xbc, 0x58, 0x4f, 0x7f, 0x36, 0x14, 0x11, 0x05, 0xe4, 0xee, 0xcb, 0x53, 0x17, + 0xde, 0xa3, 0x68, 0xa7, 0x88, 0x03, 0x36, 0x4a, 0x34, 0xbe, 0xb8, 0x51, 0xa7, 0x3e, 0x76, 0xa3, + 0xfa, 0xf2, 0xd4, 0x1b, 0x15, 0xb7, 0xa3, 0xc2, 0x46, 0x5d, 0x85, 0x71, 0x14, 0xad, 0xa4, 0x48, + 0x1b, 0xca, 0xc4, 0x63, 0xb8, 0x26, 0x8c, 0x02, 0x7b, 0x4c, 0xfc, 0xbc, 0x2f, 0x7f, 0xb1, 0xcf, + 0x81, 0xb4, 0x2a, 0xde, 0x11, 0xa2, 0xc2, 0xe9, 0xf4, 0xf2, 0x98, 0x42, 0xf5, 0x77, 0x2f, 0x84, + 0xde, 0xf0, 0xfc, 0x38, 0xd5, 0xd5, 0xcf, 0x69, 0xba, 0xfa, 0x9b, 0x03, 0xd5, 0xe1, 0x5a, 0xf5, + 0xe6, 0x40, 0x75, 0xaa, 0xc6, 0xec, 0x91, 0x64, 0x1c, 0xed, 0x13, 0x85, 0xdf, 0x85, 0x9a, 0x8b, + 0x46, 0xfd, 0xf6, 0x6a, 0x7a, 0xfd, 0xfe, 0xfe, 0x72, 0x05, 0x34, 0xbe, 0xed, 0x00, 0x57, 0xc0, + 0x7b, 0x14, 0xce, 0x42, 0xeb, 0x06, 0xa5, 0xb9, 0x30, 0xc0, 0x59, 0xcd, 0x45, 0x86, 0xc6, 0xce, + 0x60, 0x5b, 0xff, 0xe1, 0x78, 0x86, 0xaf, 0x34, 0xff, 0xb7, 0x60, 0x88, 0x14, 0x13, 0xb2, 0x93, + 0xd1, 0x0e, 0x8c, 0xd4, 0x16, 0xb6, 0x2c, 0x61, 0xa7, 0xa1, 0xd2, 0x68, 0xdc, 0x95, 0x9d, 0x8c, + 0x4e, 0x00, 0x51, 0x14, 0xd8, 0x02, 0x26, 0x46, 0x08, 0x2d, 0xfb, 0xb5, 0x1c, 0x4b, 0xe2, 0x60, + 0xb4, 0x11, 0x2a, 0xfa, 0x5b, 0xa9, 0x09, 0x06, 0xd2, 0xfe, 0x96, 0x6a, 0x82, 0x54, 0x39, 0xb0, + 0x08, 0xb3, 0xf5, 0x28, 0xe2, 0xa1, 0x98, 0x11, 0xd2, 0x60, 0x3c, 0x94, 0x57, 0x59, 0x79, 0xa2, + 0x63, 0xa5, 0x6e, 0x33, 0xb2, 0xfb, 0x22, 0xb2, 0xf3, 0x50, 0xad, 0xf7, 0x5a, 0x1e, 0xf7, 0x9b, + 0x46, 0x34, 0x57, 0x57, 0xc2, 0xec, 0xa4, 0x94, 0x7d, 0x00, 0x27, 0x32, 0x51, 0xa1, 0x65, 0x0f, + 0x0c, 0xa7, 0x9b, 0xb4, 0xba, 0x6a, 0xa7, 0x46, 0x6e, 0xd4, 0x25, 0xc5, 0x94, 0xac, 0x0e, 0xb5, + 0x65, 0x74, 0x7d, 0x5d, 0xe2, 0xf4, 0x42, 0x1e, 0x84, 0xe4, 0xf3, 0x4c, 0x8a, 0x11, 0x19, 0x37, + 0xbb, 0x95, 0x14, 0xda, 0x39, 0x74, 0x76, 0x0b, 0xa6, 0xb3, 0x30, 0x71, 0xd4, 0x93, 0x0e, 0x04, + 0x37, 0xc9, 0x1c, 0x17, 0x3c, 0xec, 0x8b, 0xa8, 0xd8, 0x26, 0x4c, 0xa5, 0x46, 0x9e, 0xa6, 0x66, + 0x44, 0xf9, 0x8e, 0x24, 0xe5, 0x4a, 0x3b, 0xf2, 0xac, 0x9c, 0x8c, 0xd3, 0xa9, 0xc1, 0x68, 0xa2, + 0x21, 0xb1, 0xf3, 0xec, 0x58, 0x0b, 0x26, 0x1a, 0xde, 0xb6, 0xef, 0xf9, 0xdb, 0xb7, 0xf8, 0xde, + 0x9a, 0xeb, 0x85, 0xd2, 0x8a, 0x7f, 0x36, 0x79, 0x8f, 0xdd, 0xeb, 0x74, 0x78, 0x1c, 0xe2, 0xaa, + 0x17, 0xe5, 0x18, 0x0c, 0x44, 0xdc, 0x78, 0xe7, 0x22, 0xa2, 0x43, 0x57, 0xf8, 0xae, 0xeb, 0x19, + 0xd2, 0x82, 0xc9, 0xd3, 0xd0, 0x4e, 0x8d, 0x1d, 0x51, 0x3b, 0xd5, 0x86, 0xa9, 0x65, 0xbf, 0x19, + 0xee, 0xa1, 0xa1, 0x82, 0x6a, 0xdc, 0xf8, 0x21, 0x8d, 0x7b, 0x49, 0x36, 0xee, 0x39, 0x57, 0xcd, + 0xb0, 0xa2, 0xe6, 0xe5, 0x19, 0xb3, 0x06, 0x4c, 0xe1, 0x15, 0x64, 0x65, 0x69, 0x6d, 0xc5, 0xf7, + 0x62, 0xcf, 0x8d, 0x79, 0x4b, 0x4a, 0x21, 0x49, 0x66, 0x3a, 0xd2, 0x42, 0x78, 0xad, 0xae, 0xe3, + 0x29, 0x14, 0x9d, 0x69, 0x8e, 0xfe, 0x20, 0x55, 0xc0, 0xe4, 0x1f, 0x93, 0x2a, 0x60, 0x05, 0x26, + 0xb3, 0x31, 0x75, 0x6a, 0xa9, 0xf0, 0x10, 0x61, 0x91, 0x90, 0x41, 0x82, 0x1e, 0x4a, 0x9d, 0x46, + 0xd4, 0xb6, 0x4c, 0x34, 0x9d, 0x8c, 0x56, 0x61, 0xca, 0xd0, 0x2a, 0x18, 0xbb, 0xd2, 0x71, 0xb4, + 0x0a, 0x6b, 0x00, 0xd7, 0x82, 0xb0, 0xc9, 0xeb, 0x18, 0xa8, 0x82, 0x19, 0xf9, 0x3b, 0x05, 0xd3, + 0xb4, 0x90, 0xd6, 0xcf, 0x96, 0xf8, 0xed, 0x64, 0xe3, 0x8d, 0x68, 0x3c, 0x98, 0x0b, 0xa7, 0xd6, + 0x42, 0xbe, 0xc5, 0xc3, 0x90, 0xb7, 0xe4, 0x85, 0x68, 0xc1, 0xf3, 0x5b, 0x2a, 0x29, 0xab, 0xcc, + 0xe0, 0xd1, 0x55, 0x28, 0x89, 0xcf, 0xcb, 0x26, 0x21, 0xe9, 0x67, 0x73, 0x1f, 0x3e, 0x39, 0xad, + 0xc6, 0xcc, 0x71, 0xb5, 0x1a, 0xcb, 0x30, 0xb1, 0xe2, 0x37, 0xdb, 0xbd, 0x16, 0x97, 0xb6, 0xf9, + 0x32, 0xa5, 0x2a, 0x4a, 0x86, 0x1e, 0x95, 0x38, 0xd2, 0x84, 0x5f, 0x5f, 0x57, 0x26, 0xd1, 0x81, + 0xba, 0x8c, 0x93, 0x1f, 0x5b, 0x97, 0xc1, 0xea, 0x30, 0x9a, 0x06, 0x50, 0x88, 0xa4, 0x00, 0x54, + 0x38, 0xd2, 0x8b, 0x29, 0x9a, 0xad, 0xd3, 0x58, 0x77, 0x61, 0xb6, 0x1f, 0x22, 0xbb, 0x02, 0x83, + 0x81, 0x18, 0xc0, 0x4c, 0xfe, 0xf5, 0xbb, 0x62, 0xf8, 0x68, 0x1a, 0xeb, 0x6c, 0x09, 0xd7, 0xfa, + 0x01, 0x38, 0x59, 0x8c, 0x60, 0xde, 0xf8, 0x4b, 0x87, 0xdd, 0xf8, 0xcb, 0xf9, 0x1b, 0xbf, 0xf5, + 0x63, 0xe5, 0x4c, 0x6b, 0x8f, 0xa6, 0x6a, 0xf8, 0x0c, 0xe4, 0xcf, 0x04, 0xc9, 0xbf, 0xc6, 0xb3, + 0x27, 0xc3, 0x65, 0x28, 0xde, 0xfa, 0xa5, 0x0a, 0x62, 0x3a, 0x4b, 0x70, 0x2f, 0x6c, 0xb3, 0xab, + 0x30, 0xaa, 0x4d, 0x77, 0x3c, 0x7d, 0xfb, 0x2d, 0x0e, 0x1b, 0xb6, 0xd2, 0x15, 0x70, 0x12, 0xe4, + 0xe1, 0xaf, 0x54, 0x14, 0xf4, 0x8b, 0xd5, 0x28, 0xba, 0xcb, 0x10, 0x59, 0xcf, 0x45, 0x51, 0xc0, + 0x18, 0xe0, 0x49, 0x2f, 0xcd, 0x04, 0xf0, 0x6f, 0xeb, 0x2f, 0x8d, 0x93, 0x0c, 0xa7, 0x2b, 0x14, + 0xfa, 0x79, 0xe9, 0x64, 0x14, 0x0d, 0xe5, 0xe3, 0x28, 0x1a, 0x2a, 0x87, 0x2b, 0x1a, 0x06, 0x0e, + 0x53, 0x34, 0x64, 0x34, 0x01, 0x83, 0xc7, 0xd4, 0x04, 0x0c, 0x1f, 0x4b, 0x13, 0x60, 0x28, 0x29, + 0xaa, 0x87, 0x29, 0x29, 0xfe, 0x54, 0x6f, 0xf0, 0xb4, 0xea, 0x0d, 0x8a, 0x84, 0xfc, 0x63, 0xe9, + 0x0d, 0x72, 0xd7, 0xfe, 0xa9, 0x27, 0x73, 0xed, 0x67, 0x4f, 0xec, 0xda, 0x3f, 0xfd, 0x49, 0xaf, + 0xfd, 0x33, 0x4f, 0xf2, 0xda, 0x7f, 0xe2, 0x4f, 0xe2, 0xb5, 0xff, 0xe4, 0xbf, 0x9d, 0x6b, 0xff, + 0x15, 0xa8, 0xae, 0x05, 0x51, 0x7c, 0x2d, 0x08, 0x3b, 0x78, 0xf0, 0x8e, 0xc9, 0x57, 0x96, 0x20, + 0xc2, 0x8c, 0xc8, 0x1d, 0x43, 0x56, 0x96, 0x88, 0x6c, 0x41, 0x4d, 0x38, 0x75, 0x31, 0x9e, 0x4d, + 0x1f, 0xba, 0xe4, 0x4c, 0x91, 0xf7, 0xe3, 0xfc, 0x7c, 0x53, 0xf7, 0xe5, 0x3b, 0x30, 0xa5, 0xfc, + 0x04, 0xf1, 0x68, 0x45, 0x9d, 0xc3, 0xe9, 0x74, 0x65, 0xa6, 0x0e, 0x85, 0xaa, 0xd4, 0x48, 0xcb, + 0x9c, 0x25, 0xed, 0xab, 0x4e, 0x18, 0xaa, 0x0d, 0xdf, 0x1c, 0xa8, 0xd6, 0x6a, 0x53, 0x47, 0x50, + 0x27, 0xfc, 0x20, 0xd4, 0xb2, 0x37, 0x9c, 0xc3, 0x33, 0x76, 0x3c, 0xb1, 0x60, 0xd6, 0xe2, 0xfe, + 0x95, 0xbd, 0x61, 0xb0, 0x4b, 0x00, 0x6b, 0xa1, 0xb7, 0xeb, 0xc6, 0xfc, 0x96, 0x32, 0x44, 0x97, + 0x29, 0x6a, 0x08, 0x2a, 0x96, 0x81, 0xad, 0xa1, 0x24, 0x97, 0xeb, 0x72, 0xd1, 0xe5, 0xda, 0xfa, + 0xd1, 0x32, 0x4c, 0x51, 0x14, 0xd7, 0xa7, 0xdf, 0xd8, 0xe3, 0x8b, 0x86, 0xca, 0xe4, 0xb9, 0x34, + 0xf1, 0x96, 0xfe, 0x75, 0x07, 0x98, 0x7b, 0x7c, 0x0d, 0x4e, 0xe4, 0xba, 0x02, 0xd5, 0x26, 0x4b, + 0x2a, 0x7e, 0x6e, 0x4e, 0x71, 0x32, 0x5b, 0x5c, 0xc9, 0xfd, 0x2b, 0x76, 0x8e, 0xc2, 0xfa, 0xd5, + 0xc1, 0x1c, 0x7f, 0x69, 0xf8, 0xa1, 0x9b, 0x72, 0x94, 0x8e, 0x67, 0xca, 0x51, 0x3e, 0x9a, 0x29, + 0x47, 0x46, 0x4e, 0xa9, 0x1c, 0x45, 0x4e, 0xf9, 0x00, 0xc6, 0xd7, 0xb9, 0xdb, 0x89, 0xd6, 0x03, + 0x99, 0xc5, 0x95, 0x9c, 0x28, 0x55, 0x78, 0x5c, 0x51, 0xa6, 0x6e, 0xfd, 0x89, 0xfb, 0x46, 0x2c, + 0x08, 0xc4, 0x49, 0x4c, 0x69, 0x5d, 0x6d, 0x93, 0x83, 0xae, 0xca, 0x19, 0x3c, 0x40, 0x95, 0xd3, + 0x80, 0x31, 0x49, 0x97, 0xa6, 0x29, 0x49, 0x75, 0x0e, 0xa2, 0x08, 0xe1, 0xaa, 0x76, 0x15, 0xcd, + 0x60, 0x22, 0xa9, 0x9d, 0xd4, 0x0d, 0x06, 0x13, 0xd1, 0x05, 0xea, 0xad, 0x52, 0x74, 0xc1, 0x70, + 0xda, 0x05, 0xea, 0x5d, 0x93, 0xba, 0x40, 0x43, 0x62, 0xef, 0xc1, 0x44, 0x7d, 0x6d, 0x45, 0x27, + 0xab, 0xa6, 0xd6, 0x24, 0x6e, 0xd7, 0x73, 0x0c, 0xd2, 0x0c, 0xee, 0x41, 0xd7, 0xef, 0x91, 0x3f, + 0xa6, 0xeb, 0x77, 0xf6, 0xa2, 0x08, 0xc7, 0xbc, 0x28, 0x5a, 0xff, 0x7c, 0x4c, 0xed, 0x0f, 0x9f, + 0xee, 0xfb, 0x9e, 0xf9, 0x62, 0x57, 0x39, 0xe6, 0x8b, 0xdd, 0xc0, 0x61, 0xc2, 0xb0, 0x26, 0x73, + 0x0f, 0x7d, 0xe2, 0xd7, 0xb7, 0xe1, 0x63, 0x4a, 0xd1, 0x99, 0xc5, 0x57, 0x3d, 0xca, 0xe2, 0x2b, + 0x94, 0xbc, 0x47, 0x3e, 0xb9, 0xe4, 0x0d, 0xc7, 0x96, 0xbc, 0x1b, 0x69, 0x94, 0x92, 0xd1, 0x43, + 0x9d, 0x3f, 0xcf, 0x48, 0x5d, 0xd5, 0x54, 0x71, 0x90, 0xde, 0x24, 0x5e, 0xc9, 0xf7, 0x95, 0x38, + 0xff, 0x8d, 0x62, 0x71, 0xfe, 0xe0, 0x03, 0xe8, 0x4f, 0x05, 0xfa, 0x3f, 0x15, 0xe8, 0xff, 0x58, + 0x04, 0xfa, 0xbb, 0xc0, 0xdc, 0x5e, 0xbc, 0x23, 0xe4, 0xe2, 0x26, 0x06, 0x8a, 0x17, 0x43, 0x8c, + 0xa2, 0xbd, 0x5c, 0x23, 0xf9, 0x52, 0x7d, 0x8d, 0x18, 0xa5, 0xa8, 0xf3, 0x48, 0x04, 0xeb, 0x59, + 0x53, 0xb0, 0x1e, 0xac, 0x0d, 0x1d, 0x59, 0xb0, 0x0e, 0x71, 0x9d, 0x6d, 0xb8, 0xa1, 0x8f, 0xc7, + 0xd4, 0x25, 0x18, 0x56, 0xe1, 0xca, 0x4b, 0xe9, 0x83, 0x47, 0x3e, 0x4e, 0xb9, 0xc2, 0x62, 0x97, + 0xa1, 0xaa, 0x88, 0xf5, 0x14, 0x91, 0x0f, 0x25, 0xcc, 0x88, 0x04, 0x2d, 0x61, 0xd6, 0x7f, 0x30, + 0xa0, 0xf6, 0x72, 0xf1, 0x19, 0x6b, 0x6e, 0xe8, 0x76, 0x30, 0x43, 0x75, 0xb2, 0xd4, 0x34, 0xb1, + 0x3e, 0xb3, 0x3a, 0x33, 0xfe, 0x77, 0x26, 0xc9, 0xc7, 0x8a, 0x37, 0xff, 0x1a, 0x0c, 0x49, 0xa9, + 0x8a, 0xee, 0x01, 0x28, 0x51, 0xe4, 0x72, 0xe1, 0x4b, 0x1c, 0xf6, 0x36, 0x79, 0xde, 0xca, 0xd0, + 0x29, 0x03, 0x69, 0xca, 0x76, 0xb1, 0xbf, 0x15, 0xa4, 0x6c, 0x4f, 0x91, 0xd9, 0x55, 0xf2, 0x36, + 0xa5, 0x84, 0x29, 0x83, 0x69, 0x20, 0x4f, 0xa4, 0xcc, 0x66, 0x4a, 0x49, 0x51, 0xd3, 0x7b, 0xca, + 0xd0, 0x71, 0x32, 0x39, 0x0c, 0xff, 0x5b, 0xcd, 0xe4, 0xb0, 0x0c, 0x20, 0xcf, 0xdc, 0xd4, 0xcc, + 0xe6, 0x65, 0xdc, 0x92, 0xa4, 0xcb, 0x47, 0x1c, 0xb7, 0xfb, 0x24, 0xa6, 0xd3, 0x08, 0xad, 0x7f, + 0xc2, 0x60, 0xaa, 0xd1, 0xb8, 0xbb, 0xe4, 0xb9, 0xdb, 0x7e, 0x10, 0xc5, 0x5e, 0x73, 0xc5, 0xdf, + 0x0a, 0x84, 0x90, 0x9e, 0x9c, 0x0b, 0x5a, 0x0c, 0xfe, 0xf4, 0x4c, 0x48, 0x8a, 0xc5, 0x25, 0x70, + 0x39, 0x0c, 0x95, 0x32, 0x96, 0x2e, 0x81, 0x5c, 0x00, 0x6c, 0x82, 0x0b, 0x39, 0xb8, 0xd1, 0x43, + 0x07, 0x46, 0x69, 0xcb, 0x84, 0x72, 0x70, 0x44, 0x20, 0x5b, 0x95, 0x31, 0x9e, 0x9f, 0xb0, 0xf2, + 0x5e, 0x74, 0xca, 0xc8, 0x07, 0x91, 0x16, 0xd3, 0x8a, 0x96, 0x52, 0x09, 0xee, 0xe5, 0x5d, 0x84, + 0xeb, 0x36, 0xb9, 0xb9, 0x35, 0xb0, 0x07, 0x27, 0x8c, 0x30, 0x27, 0x47, 0x7d, 0xeb, 0x7b, 0x55, + 0xca, 0xdd, 0x16, 0xfa, 0x3d, 0x14, 0x3c, 0xf8, 0xe9, 0x29, 0xa7, 0x0b, 0x6b, 0x60, 0x3f, 0x5a, + 0x82, 0x33, 0x85, 0x25, 0xc9, 0xea, 0x1e, 0x35, 0x72, 0x72, 0x68, 0x9b, 0x06, 0x25, 0xd7, 0xee, + 0x57, 0xb5, 0x53, 0xb0, 0x15, 0x1c, 0x5c, 0x13, 0xfb, 0xf5, 0x12, 0x9c, 0x32, 0x30, 0x92, 0x3d, + 0x34, 0x4a, 0x22, 0x80, 0x15, 0xce, 0xeb, 0x8f, 0x9e, 0xcc, 0xbc, 0x7e, 0xd1, 0xfc, 0x96, 0x74, + 0xb7, 0xd4, 0xbf, 0xa1, 0x5f, 0x0b, 0xd9, 0x2e, 0x4c, 0x61, 0x91, 0x7a, 0x77, 0x14, 0x73, 0x56, + 0x3e, 0x57, 0xce, 0xa4, 0xcd, 0xa6, 0xd0, 0x3d, 0x42, 0xe2, 0x5e, 0xb8, 0xfc, 0xdd, 0xfd, 0xf9, + 0x71, 0x03, 0x5d, 0x65, 0xb9, 0x70, 0xd2, 0xc7, 0x4b, 0xcf, 0xdf, 0x0a, 0x0c, 0x35, 0x4b, 0xb6, + 0x0a, 0xf6, 0xf7, 0x4b, 0xf4, 0x76, 0x41, 0x9f, 0x71, 0x2d, 0x0c, 0x3a, 0x49, 0xb9, 0x32, 0xee, + 0xee, 0xd3, 0x6d, 0xed, 0x27, 0xd3, 0x6d, 0x2f, 0x63, 0x93, 0x69, 0x4f, 0x70, 0xb6, 0xc2, 0xa0, + 0x93, 0x36, 0x5f, 0xef, 0xb8, 0xbe, 0x8d, 0x64, 0x7f, 0xa1, 0x04, 0xa7, 0x0d, 0x95, 0xab, 0x9e, + 0xbe, 0x4c, 0x06, 0x48, 0x4a, 0x9c, 0x0c, 0xb5, 0xa2, 0x85, 0x8b, 0x72, 0xfe, 0x9f, 0xc3, 0x16, + 0x68, 0x91, 0xba, 0x05, 0x92, 0xd3, 0x21, 0x2c, 0xad, 0x09, 0xfd, 0x6b, 0x61, 0x1e, 0x4c, 0xa1, + 0xb5, 0x98, 0xe1, 0x84, 0x30, 0xd3, 0xdf, 0x09, 0x21, 0x49, 0x7d, 0x89, 0x89, 0x86, 0xfa, 0x7b, + 0x22, 0xe4, 0xb9, 0xb2, 0x1f, 0x82, 0xd3, 0x39, 0x60, 0xb2, 0xda, 0x4e, 0xf4, 0x5d, 0x6d, 0x9f, + 0x79, 0xbc, 0x3f, 0xff, 0x4a, 0x51, 0x6d, 0x45, 0x2b, 0xad, 0x7f, 0x0d, 0xcc, 0x05, 0x48, 0x0b, + 0xa5, 0x4c, 0x54, 0x3c, 0x41, 0x3f, 0x23, 0xe7, 0x87, 0x86, 0x2f, 0xf6, 0x72, 0xad, 0x0d, 0xfa, + 0x91, 0x97, 0x22, 0x31, 0x0e, 0x63, 0x5a, 0x92, 0xa5, 0x3d, 0xf9, 0x7e, 0xd8, 0xa7, 0x92, 0xef, + 0xee, 0xcf, 0x1b, 0xd8, 0xe2, 0x66, 0xa4, 0x67, 0x6f, 0x32, 0x44, 0x50, 0x1d, 0x91, 0xfd, 0x5a, + 0x09, 0x66, 0x04, 0x20, 0x9d, 0x54, 0xf2, 0xa3, 0x66, 0x0f, 0x9a, 0xf5, 0x3b, 0x4f, 0x66, 0xd6, + 0xbf, 0x80, 0x6d, 0xd4, 0x67, 0x7d, 0xae, 0x4b, 0x0a, 0x1b, 0x87, 0xb3, 0xdd, 0x30, 0x4c, 0x34, + 0x66, 0xfb, 0xe9, 0x23, 0xcc, 0x76, 0x1a, 0x80, 0xc3, 0x67, 0x7b, 0xdf, 0x5a, 0xd8, 0x3a, 0x8c, + 0xc9, 0x4b, 0x11, 0x75, 0xd8, 0xf3, 0x86, 0x23, 0xaf, 0x5e, 0x44, 0x37, 0x55, 0x99, 0x83, 0x2a, + 0xf7, 0x85, 0x06, 0x17, 0xe6, 0xc3, 0x34, 0xfd, 0x36, 0xb5, 0x56, 0xf3, 0x7d, 0xb5, 0x56, 0xe7, + 0xe5, 0x17, 0x9d, 0x95, 0xfc, 0x33, 0xca, 0x2b, 0x3d, 0xe2, 0x62, 0x01, 0x63, 0xd6, 0x05, 0x66, + 0x80, 0x69, 0xd1, 0x9e, 0x3d, 0x58, 0x57, 0xf5, 0x8a, 0xac, 0x73, 0x3e, 0x5b, 0x67, 0x76, 0xe5, + 0x16, 0xf0, 0x66, 0x2e, 0x4c, 0x4a, 0x68, 0xf0, 0x80, 0xd3, 0x0e, 0xff, 0x82, 0x11, 0xf3, 0x32, + 0x53, 0x4a, 0x37, 0x3b, 0x55, 0x13, 0xc6, 0x24, 0xcd, 0x6c, 0xe8, 0x59, 0x7e, 0xec, 0x2e, 0x4c, + 0xd5, 0xbb, 0xdd, 0xb6, 0xc7, 0x5b, 0xf8, 0x95, 0x76, 0x4f, 0x7c, 0x93, 0x95, 0x26, 0x1d, 0x76, + 0xa9, 0x50, 0x5e, 0x37, 0xc3, 0x5e, 0x66, 0xbb, 0xc9, 0xd1, 0x5a, 0x3f, 0x52, 0xca, 0x35, 0x9a, + 0xbd, 0x06, 0x23, 0xf8, 0x43, 0x0b, 0xa3, 0x86, 0xba, 0x1b, 0x6a, 0x22, 0x6a, 0x85, 0x52, 0x04, + 0x21, 0x2c, 0xe9, 0xa1, 0x94, 0x2b, 0x24, 0x2c, 0x49, 0x05, 0x43, 0xaa, 0x52, 0x98, 0x57, 0xce, + 0x61, 0x95, 0x54, 0xe8, 0xc2, 0xab, 0x89, 0x74, 0x09, 0xb3, 0xfe, 0xd3, 0xb2, 0x39, 0xed, 0xd8, + 0x79, 0x4d, 0x6e, 0xd7, 0x82, 0x39, 0x2b, 0xb9, 0x5d, 0x93, 0xd6, 0x7f, 0xa9, 0x04, 0xd3, 0x77, + 0xb5, 0x54, 0xf8, 0xeb, 0x01, 0x8e, 0xcb, 0xc1, 0x49, 0xdf, 0x9f, 0x54, 0x1e, 0x6a, 0x3d, 0x07, + 0xbf, 0x98, 0x29, 0x38, 0x65, 0xec, 0xa2, 0xf6, 0xa0, 0xe3, 0x30, 0x36, 0x4c, 0x4b, 0x07, 0x4e, + 0xe8, 0x04, 0x3f, 0x66, 0x46, 0x2a, 0xeb, 0xaf, 0x94, 0x61, 0x54, 0x5b, 0x31, 0xec, 0xb3, 0x30, + 0xa6, 0x57, 0xab, 0x2b, 0xfe, 0xf4, 0x56, 0xda, 0x06, 0x16, 0x6a, 0xfe, 0xb8, 0xdb, 0x31, 0x34, + 0x7f, 0x62, 0x5d, 0x20, 0xf4, 0x98, 0x37, 0xa1, 0xf7, 0x0b, 0x6e, 0x42, 0x38, 0xcb, 0x35, 0x4d, + 0xcf, 0x81, 0xf7, 0xa1, 0xf7, 0xf2, 0xf7, 0x21, 0x54, 0x3a, 0x69, 0xf4, 0xfd, 0x6f, 0x45, 0xd6, + 0x4f, 0x96, 0xa0, 0x96, 0x5d, 0xd3, 0x9f, 0x4a, 0xaf, 0x1c, 0xe3, 0x99, 0xe8, 0x3b, 0xe5, 0x24, + 0x21, 0x9b, 0x8a, 0xe8, 0xf0, 0xb4, 0x1a, 0xbd, 0x7e, 0xc1, 0x78, 0xc1, 0x79, 0xd6, 0x8c, 0x57, + 0xab, 0x07, 0xb4, 0x2a, 0x0e, 0x52, 0x3d, 0xf0, 0x73, 0xbf, 0x38, 0xff, 0x8c, 0xf5, 0x65, 0x98, + 0xc9, 0x76, 0x07, 0xbe, 0xe2, 0xd4, 0x61, 0xd2, 0x84, 0x67, 0xd3, 0x39, 0x66, 0xa9, 0xec, 0x2c, + 0xbe, 0xf5, 0xbb, 0xe5, 0x2c, 0x6f, 0x69, 0x00, 0x2b, 0xf6, 0x28, 0xdd, 0x48, 0x47, 0xee, 0x51, + 0x04, 0xb2, 0x55, 0xd9, 0x71, 0x52, 0xb2, 0x26, 0x31, 0x00, 0x2a, 0xc5, 0x31, 0x00, 0xd8, 0xd5, + 0x8c, 0x73, 0x80, 0x16, 0x57, 0xf1, 0x21, 0xdf, 0x74, 0x52, 0x07, 0x81, 0x9c, 0x4f, 0xc0, 0x8c, + 0x91, 0x24, 0x44, 0xd1, 0x0f, 0xa6, 0x3a, 0xf7, 0x18, 0x0b, 0x88, 0xb8, 0x10, 0x99, 0xdd, 0x80, + 0x61, 0xd1, 0xcc, 0xdb, 0x6e, 0x57, 0x3e, 0xce, 0xb0, 0x24, 0x4a, 0x49, 0x3b, 0xb9, 0x1f, 0x6a, + 0x81, 0x4a, 0xda, 0x5c, 0x48, 0x08, 0xff, 0x1f, 0x7b, 0xef, 0x1a, 0xe3, 0x48, 0x92, 0x1c, 0x06, + 0x4f, 0x91, 0xec, 0x6e, 0x76, 0xf4, 0xab, 0x3a, 0xa7, 0xe7, 0x3d, 0x3b, 0x8f, 0xda, 0xdd, 0xd1, + 0x6e, 0xef, 0xed, 0x63, 0x66, 0x6f, 0x1f, 0x73, 0xb7, 0x8f, 0x63, 0x93, 0xec, 0x69, 0xce, 0xb0, + 0x49, 0x5e, 0x15, 0x7b, 0x46, 0x73, 0xab, 0x53, 0xa9, 0x86, 0xac, 0xee, 0xae, 0x1d, 0x36, 0x8b, + 0xcb, 0x2a, 0x6e, 0x4f, 0x1f, 0x04, 0xe8, 0x71, 0xf8, 0xf4, 0x01, 0x32, 0xf4, 0x96, 0xe1, 0xc3, + 0x41, 0x86, 0x05, 0x58, 0x10, 0xf4, 0x43, 0xb0, 0x0d, 0xfb, 0x8f, 0x20, 0x01, 0x86, 0xf4, 0x4f, + 0x80, 0x20, 0xcb, 0x0f, 0x40, 0x80, 0x65, 0x61, 0x21, 0x9d, 0x60, 0xc0, 0x16, 0xe4, 0x5f, 0x82, + 0xfd, 0x43, 0x86, 0x0c, 0x23, 0x23, 0x23, 0xab, 0xb2, 0x8a, 0x45, 0x76, 0xcf, 0xcd, 0x9e, 0x6c, + 0xc9, 0xfa, 0xd3, 0x68, 0x46, 0x46, 0x44, 0xe5, 0x33, 0x32, 0x32, 0x32, 0x32, 0x42, 0x9d, 0x58, + 0x84, 0x68, 0xfc, 0xa5, 0xc6, 0xd7, 0x7f, 0xe7, 0xf1, 0xdf, 0xb1, 0x5c, 0xac, 0xbc, 0x49, 0x53, + 0xfc, 0xb3, 0xff, 0x34, 0x27, 0x52, 0xec, 0xd1, 0xf4, 0xb9, 0x0d, 0xb3, 0x22, 0x7c, 0x09, 0xb9, + 0xa4, 0xa9, 0x5c, 0x44, 0x41, 0x1c, 0xf5, 0x51, 0x44, 0x36, 0x31, 0x89, 0x40, 0x35, 0x9d, 0xe5, + 0x4e, 0x64, 0x3a, 0x53, 0xec, 0xf9, 0xf9, 0xcf, 0xcd, 0x9e, 0xff, 0xb5, 0x28, 0x9b, 0x5e, 0x29, + 0x3c, 0x41, 0x0e, 0x8a, 0x6b, 0xe9, 0xe4, 0x95, 0x63, 0xd9, 0x42, 0x62, 0x76, 0xec, 0x6d, 0x35, + 0x1d, 0xa6, 0xf2, 0x18, 0xfd, 0x98, 0xc4, 0x97, 0xc6, 0x6f, 0x17, 0x44, 0x1f, 0x53, 0x47, 0xdd, + 0x48, 0x84, 0xdc, 0xc0, 0x75, 0x92, 0xb2, 0x75, 0x8a, 0xe0, 0x1b, 0x37, 0xa0, 0xc0, 0xe7, 0x26, + 0xf5, 0x26, 0xe2, 0xf1, 0xf9, 0xab, 0xe2, 0xf1, 0x72, 0xbe, 0x96, 0x71, 0x4f, 0x52, 0x73, 0x26, + 0xe3, 0xb6, 0xa5, 0xae, 0x65, 0xc4, 0xe0, 0x2d, 0x88, 0xf2, 0x3e, 0xa9, 0x2d, 0x38, 0xd8, 0x75, + 0xc6, 0xb3, 0xd2, 0x2a, 0x19, 0xea, 0xaa, 0xb0, 0xfc, 0xc0, 0xeb, 0x77, 0xfd, 0xc3, 0xa0, 0xe2, + 0x06, 0x8f, 0x43, 0x7f, 0x40, 0x3e, 0xe9, 0x68, 0xf7, 0x3f, 0x14, 0x25, 0x76, 0x57, 0x14, 0xa9, + 0x97, 0x24, 0x49, 0x22, 0xb6, 0x01, 0x4b, 0x89, 0xc8, 0xe9, 0x74, 0xf7, 0x89, 0x36, 0xce, 0x64, + 0xdc, 0x75, 0xd5, 0xc6, 0x99, 0x20, 0xe1, 0xbb, 0x34, 0xd5, 0x5f, 0xb9, 0x01, 0x1d, 0xab, 0x3b, + 0xe1, 0xb0, 0x37, 0xa1, 0x28, 0x82, 0xf7, 0xd4, 0x2a, 0xea, 0xa5, 0x55, 0x80, 0xb0, 0x54, 0x40, + 0x39, 0x89, 0xc8, 0xca, 0xb0, 0xb4, 0xe1, 0x87, 0xb5, 0x7e, 0x10, 0x3a, 0xfd, 0x8e, 0x1b, 0xc5, + 0x89, 0xc7, 0xc6, 0x3e, 0xf2, 0x43, 0xdb, 0xa3, 0x92, 0x24, 0x7d, 0x92, 0x86, 0x77, 0xf5, 0x5d, + 0xdf, 0xeb, 0x0b, 0xd1, 0xb9, 0x10, 0x77, 0xf5, 0xc7, 0xbe, 0xd7, 0x1f, 0x0b, 0xcd, 0x1e, 0xa3, + 0xc6, 0x41, 0x72, 0xc4, 0x43, 0x5a, 0xb3, 0xd0, 0xf0, 0xbb, 0xae, 0x41, 0x89, 0x30, 0x29, 0xb8, + 0xf8, 0x2b, 0x30, 0x27, 0x16, 0x5f, 0x3a, 0xe5, 0x7e, 0x3c, 0xcb, 0x4c, 0x89, 0xc1, 0x0c, 0x58, + 0xf2, 0xfa, 0xb6, 0x70, 0x9f, 0xf4, 0xfb, 0x3d, 0x91, 0x1b, 0xae, 0x68, 0x2e, 0x78, 0x7d, 0x74, + 0x9a, 0x6c, 0xf6, 0x7b, 0x47, 0xc6, 0x1b, 0xa0, 0x93, 0x40, 0x8d, 0x32, 0x7c, 0xa3, 0xbb, 0x46, + 0xad, 0x62, 0xaa, 0x42, 0xb0, 0xe3, 0x75, 0x87, 0x26, 0x42, 0xf1, 0xad, 0x6c, 0xc3, 0x0d, 0x0f, + 0xfd, 0xe1, 0x63, 0xd3, 0x0d, 0xc2, 0xa1, 0x27, 0x12, 0x86, 0xa3, 0x18, 0xf9, 0x22, 0x7b, 0x0f, + 0x66, 0xd0, 0x09, 0x3c, 0xb5, 0xaf, 0xa5, 0xbf, 0xb1, 0xb1, 0x44, 0xcb, 0x6f, 0x06, 0x3d, 0xca, + 0x4d, 0x41, 0xc4, 0x6e, 0x43, 0xa1, 0xe2, 0xf6, 0x8f, 0x52, 0xf9, 0x87, 0xc7, 0x88, 0x23, 0x71, + 0xd6, 0x75, 0xfb, 0x47, 0x26, 0x92, 0x18, 0x3f, 0x97, 0x83, 0x33, 0x19, 0xd5, 0xba, 0xff, 0xc5, + 0xbf, 0xa5, 0x32, 0x7d, 0x23, 0x21, 0xd3, 0xe5, 0x35, 0xfd, 0xc4, 0x8e, 0xcf, 0x14, 0xf1, 0xbf, + 0xa4, 0xc1, 0xb9, 0xe4, 0x42, 0xa4, 0x57, 0x1f, 0xf7, 0xdf, 0x64, 0x5f, 0x86, 0xd9, 0x2d, 0xd7, + 0xe9, 0xba, 0x32, 0xd9, 0x68, 0x3a, 0xa5, 0xbf, 0x28, 0x14, 0x6c, 0xe3, 0x07, 0xfe, 0x02, 0xca, + 0x2a, 0x54, 0x39, 0x71, 0xf8, 0x30, 0x64, 0x20, 0xa8, 0xac, 0x4f, 0x4d, 0x71, 0x76, 0xf9, 0x56, + 0x0e, 0x2e, 0x4d, 0xa1, 0xe1, 0x03, 0xc7, 0x87, 0x5e, 0x1d, 0x38, 0xd4, 0x07, 0x10, 0xca, 0x3e, + 0x80, 0x95, 0x36, 0x1d, 0x5e, 0xe4, 0x70, 0xe4, 0x62, 0xb9, 0x20, 0xcf, 0x35, 0xd2, 0xe9, 0xcb, + 0x4c, 0x23, 0x27, 0xa2, 0xa6, 0xe5, 0xa7, 0x46, 0x4d, 0x53, 0x83, 0x90, 0x15, 0xbe, 0xcb, 0x20, + 0x64, 0x33, 0xd3, 0x83, 0x90, 0xcd, 0xa6, 0x82, 0x90, 0x3d, 0x84, 0xb5, 0x64, 0xcf, 0xd0, 0xfa, + 0x8f, 0x03, 0xb8, 0x69, 0x93, 0x03, 0xb8, 0x4d, 0x0d, 0x61, 0x6e, 0xfc, 0xb4, 0x06, 0x7a, 0x92, + 0xf7, 0xb3, 0xce, 0x86, 0xf7, 0x13, 0xb3, 0xe1, 0x52, 0xf6, 0x6c, 0x98, 0x3c, 0x0d, 0xfe, 0x9b, + 0x96, 0x6e, 0xec, 0x89, 0xc6, 0xdf, 0x80, 0xd9, 0x8a, 0x7f, 0xe0, 0x78, 0x72, 0xd8, 0xf1, 0xc1, + 0x57, 0x17, 0x21, 0x26, 0x95, 0x9c, 0x2c, 0xde, 0xdd, 0x35, 0x98, 0x69, 0xf8, 0xfd, 0x52, 0x85, + 0x5c, 0xad, 0x91, 0x4f, 0xdf, 0xef, 0xdb, 0x4e, 0xd7, 0x14, 0x05, 0xac, 0x0e, 0x60, 0x75, 0x86, + 0xae, 0xdb, 0xb7, 0xbc, 0x6f, 0xb8, 0x29, 0x2d, 0x8b, 0xf7, 0x50, 0x6f, 0x84, 0x62, 0x49, 0x5c, + 0x3d, 0x23, 0xa2, 0x1d, 0x78, 0xdf, 0x50, 0x77, 0x25, 0x85, 0x1e, 0x57, 0x25, 0xc5, 0x75, 0x4d, + 0x8d, 0xc3, 0xcd, 0xef, 0xc5, 0xaa, 0xcc, 0xfc, 0x14, 0xf6, 0xf0, 0xcd, 0xcc, 0xe1, 0xf8, 0x03, + 0x0d, 0x2e, 0x4d, 0xa1, 0xf9, 0x1c, 0x46, 0xe5, 0x6f, 0xba, 0xc3, 0x5d, 0x80, 0x98, 0x88, 0x2b, + 0x4d, 0x0f, 0xbc, 0x2e, 0x3d, 0xbd, 0x58, 0x12, 0x4a, 0xd3, 0x21, 0x07, 0xa8, 0x4a, 0x13, 0x62, + 0x70, 0x8d, 0x63, 0xcb, 0xf5, 0xf6, 0xf6, 0x85, 0x8f, 0xdb, 0x92, 0x90, 0x2c, 0xfb, 0x08, 0x51, + 0x35, 0x0e, 0x81, 0x63, 0xfc, 0xfb, 0x59, 0xb8, 0x60, 0xba, 0x7b, 0x1e, 0x3f, 0x93, 0xed, 0x04, + 0x5e, 0x7f, 0x2f, 0x11, 0x6e, 0xcd, 0x48, 0xad, 0x5c, 0x4a, 0xa1, 0xc5, 0x21, 0xd1, 0x4c, 0x7c, + 0x19, 0x8a, 0x7c, 0xcf, 0x57, 0x16, 0x2f, 0xde, 0xef, 0xf5, 0xfd, 0xae, 0x4b, 0x69, 0x27, 0x64, + 0x31, 0x5b, 0x27, 0x15, 0x51, 0x49, 0x72, 0xc8, 0x55, 0xc4, 0xbf, 0xfa, 0xec, 0x2a, 0x58, 0x47, + 0x41, 0xe8, 0xa2, 0x79, 0x80, 0xd4, 0xc4, 0xe8, 0x1c, 0x57, 0x98, 0x70, 0x8e, 0xdb, 0x86, 0xb5, + 0x52, 0x57, 0xec, 0xad, 0x4e, 0xaf, 0x35, 0xf4, 0xfa, 0x1d, 0x6f, 0xe0, 0xf4, 0xa4, 0x6d, 0x02, + 0x7b, 0xd9, 0x89, 0xca, 0xed, 0x41, 0x84, 0x60, 0x66, 0x92, 0xf1, 0x66, 0x54, 0x1a, 0x16, 0xc6, + 0xf2, 0xa2, 0xab, 0x5b, 0x6c, 0x46, 0xb7, 0x1f, 0x60, 0x2b, 0x02, 0x33, 0x2a, 0xc6, 0x13, 0x24, + 0x5e, 0xd4, 0xb7, 0xeb, 0xd6, 0x3d, 0x4a, 0xc3, 0x2a, 0x73, 0x30, 0x09, 0xc7, 0x8c, 0xb0, 0x17, + 0xa0, 0x3f, 0x69, 0x02, 0x2f, 0xa6, 0xb3, 0xac, 0x2d, 0x4e, 0x57, 0x1c, 0xa3, 0x0b, 0x82, 0x7d, + 0x95, 0x4e, 0xe0, 0xb1, 0xd7, 0xf9, 0x54, 0x38, 0xf0, 0x43, 0x17, 0xa7, 0xf0, 0x7c, 0x7c, 0xde, + 0x1c, 0x22, 0x54, 0x9c, 0x37, 0x15, 0x14, 0xf6, 0x1e, 0x9c, 0xae, 0x96, 0x6f, 0x49, 0x83, 0x7b, + 0xc5, 0xef, 0x8c, 0xd0, 0x91, 0x02, 0xf0, 0x7b, 0x38, 0x86, 0x6e, 0xe7, 0x16, 0x97, 0x26, 0x59, + 0x68, 0xec, 0x06, 0xcc, 0xd5, 0x2a, 0xaa, 0x22, 0x48, 0x89, 0x46, 0xc9, 0x3b, 0x4c, 0x16, 0xb2, + 0x66, 0x7c, 0x20, 0x5a, 0x3c, 0xf6, 0xe4, 0x72, 0xe1, 0x04, 0x87, 0xa1, 0xdb, 0x69, 0x45, 0x56, + 0xc9, 0xfa, 0x91, 0x52, 0x64, 0xd3, 0xea, 0xeb, 0xbb, 0x48, 0x7a, 0xc7, 0xed, 0xbb, 0xc3, 0x38, + 0xdb, 0xc7, 0x8c, 0xe8, 0x5b, 0x4e, 0xba, 0x17, 0x95, 0x98, 0x49, 0x44, 0x66, 0xc2, 0x99, 0xd6, + 0xd0, 0xfd, 0xd4, 0xf3, 0x47, 0x41, 0xf2, 0xe3, 0x2b, 0xb1, 0xb2, 0x3f, 0x20, 0x04, 0x3b, 0x5d, + 0x8b, 0x6c, 0x52, 0x4a, 0xac, 0x2a, 0x62, 0xe0, 0x96, 0xfd, 0xae, 0x1b, 0x08, 0x09, 0xf4, 0x77, + 0x28, 0xb1, 0xaa, 0xd2, 0xb6, 0x29, 0x52, 0xf9, 0xdb, 0x98, 0x58, 0x75, 0x0c, 0x97, 0xbd, 0x0b, + 0x33, 0xf8, 0x93, 0xf4, 0xed, 0xd3, 0x19, 0x6c, 0x63, 0x5d, 0xbb, 0xc3, 0x31, 0x4d, 0x41, 0xc0, + 0x6a, 0x30, 0x47, 0x07, 0xd5, 0xa7, 0x49, 0x0f, 0x48, 0x27, 0x5e, 0x31, 0xdb, 0x88, 0xde, 0xe8, + 0xc2, 0xa2, 0xfa, 0x41, 0xbe, 0xca, 0xb6, 0x9c, 0x60, 0xdf, 0xed, 0xf2, 0x5f, 0x94, 0xd9, 0x17, + 0x57, 0xd9, 0x3e, 0x42, 0x6d, 0x5e, 0x0f, 0x53, 0x41, 0xe1, 0xfb, 0x74, 0x2d, 0xd8, 0x09, 0xa8, + 0x2a, 0x64, 0xba, 0xf2, 0xd0, 0x0c, 0xda, 0x35, 0xa9, 0xc8, 0xf8, 0x1a, 0xac, 0x35, 0x46, 0xbd, + 0x9e, 0xf3, 0xa8, 0xe7, 0xca, 0xcc, 0x6f, 0xa1, 0x13, 0xba, 0x6c, 0x03, 0x66, 0xf0, 0x1f, 0xfc, + 0xd0, 0x72, 0x9c, 0xb2, 0x5b, 0xc1, 0x41, 0xef, 0x60, 0x0d, 0x63, 0xb5, 0xf1, 0x9f, 0x89, 0x58, + 0x6d, 0x1c, 0x60, 0xfc, 0xae, 0x06, 0x6b, 0xd2, 0xfd, 0x62, 0xe8, 0x74, 0x1e, 0xbb, 0x43, 0x52, + 0xb8, 0x6e, 0x24, 0xe6, 0x1a, 0x2e, 0x82, 0xd4, 0x34, 0x12, 0xb3, 0xee, 0xae, 0xac, 0x44, 0x52, + 0x09, 0xca, 0xaa, 0xf0, 0x71, 0x95, 0x61, 0xef, 0xc1, 0x02, 0x6d, 0xb9, 0x4a, 0x10, 0x6e, 0x0c, + 0x15, 0x49, 0x07, 0xed, 0xb4, 0x33, 0x90, 0x8a, 0x8e, 0xfa, 0x5d, 0xb2, 0x29, 0xcf, 0xaa, 0x57, + 0x64, 0xeb, 0x77, 0xc9, 0x6f, 0x4c, 0x99, 0xba, 0xbf, 0xbd, 0x90, 0xee, 0x5b, 0x9a, 0xbb, 0x6f, + 0xab, 0xd1, 0x51, 0xb5, 0xf8, 0xa0, 0x1c, 0x47, 0x47, 0x55, 0x0f, 0xca, 0x11, 0x6a, 0x34, 0x26, + 0xb9, 0x63, 0xc6, 0xe4, 0x03, 0x39, 0x26, 0xf9, 0xc9, 0x13, 0xe3, 0xf4, 0x94, 0x71, 0xb0, 0xe2, + 0x15, 0x52, 0x38, 0x91, 0x99, 0xea, 0x14, 0x66, 0x2b, 0x12, 0x24, 0x69, 0xc9, 0x4c, 0x9c, 0x54, + 0xdb, 0xd7, 0xcc, 0xc9, 0x99, 0x1e, 0x23, 0xee, 0xbf, 0x04, 0x8b, 0xa5, 0x30, 0x74, 0x3a, 0xfb, + 0x6e, 0xb7, 0xc2, 0xc5, 0x93, 0x12, 0xfe, 0xd0, 0x21, 0xb8, 0x7a, 0x67, 0xa9, 0xe2, 0x8a, 0x88, + 0xf7, 0x4e, 0x40, 0x4e, 0xc5, 0x51, 0xc4, 0x7b, 0x0e, 0x49, 0x46, 0xbc, 0xe7, 0x10, 0xf6, 0x3a, + 0xcc, 0xd5, 0xfa, 0x9f, 0x7a, 0xbc, 0x4f, 0x44, 0x04, 0x44, 0xb4, 0xf5, 0x79, 0x02, 0xa4, 0x0a, + 0x57, 0xc2, 0x62, 0xb7, 0x95, 0x63, 0xd6, 0x7c, 0x6c, 0x4d, 0x91, 0x61, 0x94, 0xa9, 0x48, 0x3d, + 0x42, 0x45, 0xe7, 0xae, 0xb7, 0x61, 0x4e, 0x5a, 0x86, 0x21, 0xde, 0x41, 0x88, 0x72, 0x3c, 0xee, + 0x8c, 0x44, 0xe6, 0xeb, 0x47, 0xcd, 0x50, 0xbc, 0x10, 0xaf, 0x1f, 0x35, 0x43, 0xb1, 0xba, 0x7e, + 0xd4, 0x5c, 0xc5, 0x91, 0x51, 0x6d, 0xf1, 0x58, 0xa3, 0xda, 0x7d, 0x58, 0x6c, 0x39, 0xc3, 0xd0, + 0xe3, 0x7a, 0x4f, 0x3f, 0x0c, 0xce, 0x2f, 0x25, 0xec, 0xd0, 0x4a, 0xd1, 0xc6, 0x15, 0x1a, 0xc8, + 0xb3, 0x03, 0x05, 0x3f, 0x11, 0x33, 0x47, 0x81, 0x67, 0xbb, 0x14, 0x2f, 0x3f, 0x8b, 0x4b, 0x31, + 0x76, 0x2a, 0xda, 0x1e, 0x57, 0x62, 0x5b, 0x18, 0x1e, 0x84, 0x52, 0x06, 0xc8, 0x08, 0x91, 0xfd, + 0x00, 0x2c, 0xf2, 0xff, 0x5b, 0x7e, 0xcf, 0xeb, 0x78, 0x6e, 0x70, 0x5e, 0xc7, 0xc6, 0x5d, 0xc9, + 0x5c, 0xfd, 0x88, 0x74, 0x64, 0xb9, 0xa1, 0x58, 0xc0, 0xc8, 0x38, 0x7d, 0xa9, 0x90, 0xe0, 0xc6, + 0x3e, 0x84, 0x45, 0x3e, 0xfb, 0x1e, 0x39, 0x81, 0x50, 0x77, 0x57, 0x63, 0xa7, 0xf0, 0x2e, 0xc1, + 0xc7, 0x92, 0x4e, 0xa8, 0x04, 0x7c, 0x9b, 0x2f, 0x0d, 0x84, 0x80, 0x64, 0xca, 0x6c, 0x1f, 0x8c, + 0x09, 0x47, 0x89, 0xc6, 0xbe, 0x02, 0x8b, 0xa5, 0xc1, 0x20, 0x96, 0x38, 0xa7, 0x15, 0x13, 0xe4, + 0x60, 0x60, 0x67, 0x4a, 0x9d, 0x04, 0x45, 0x5a, 0x30, 0xaf, 0x3d, 0x95, 0x60, 0x66, 0xaf, 0x46, + 0x27, 0x80, 0x33, 0xb1, 0x95, 0x9c, 0x0e, 0xa3, 0x89, 0xe3, 0x84, 0x38, 0x0c, 0x94, 0x61, 0x49, + 0x18, 0xf4, 0xa4, 0x36, 0x73, 0x76, 0x6c, 0xf5, 0x64, 0x28, 0x35, 0x49, 0x1a, 0xf1, 0xc8, 0xde, + 0x0b, 0x3d, 0xa7, 0x47, 0xd9, 0x40, 0xce, 0x9f, 0xc3, 0x55, 0x4b, 0x8f, 0xec, 0xb1, 0x04, 0x53, + 0xce, 0x39, 0x09, 0x2e, 0x29, 0x22, 0xe3, 0xcf, 0x34, 0x38, 0x37, 0x61, 0xc4, 0xa3, 0x5c, 0x11, + 0xda, 0xf4, 0x5c, 0x11, 0x5c, 0x72, 0x24, 0xed, 0x34, 0xd8, 0xfe, 0xf1, 0x37, 0x79, 0x91, 0xbe, + 0xe5, 0x03, 0xa3, 0xac, 0x8e, 0xf4, 0xe9, 0xbb, 0x3e, 0x9a, 0xba, 0xf3, 0xe3, 0x9b, 0x10, 0xe1, + 0x89, 0x4a, 0x89, 0x40, 0xc8, 0x94, 0x34, 0x32, 0x1a, 0xd6, 0x8f, 0xfd, 0xc4, 0x0a, 0xce, 0x60, + 0x6d, 0xfc, 0x4c, 0x0e, 0x16, 0x94, 0x75, 0xc8, 0xae, 0x29, 0x2f, 0xbe, 0x75, 0x91, 0x76, 0x54, + 0xe1, 0x90, 0x13, 0x3b, 0x11, 0x2e, 0xaa, 0xdc, 0xf1, 0x06, 0x7d, 0x0c, 0x72, 0xa7, 0xe4, 0xd3, + 0x48, 0x45, 0xb5, 0xc3, 0x72, 0xf6, 0x75, 0x80, 0xba, 0x13, 0x84, 0xa5, 0x4e, 0xe8, 0x7d, 0xea, + 0x9e, 0x60, 0xd3, 0x91, 0x81, 0x60, 0xcf, 0x60, 0xa2, 0x2b, 0x07, 0xc9, 0x52, 0x7b, 0x84, 0xc2, + 0x90, 0x0f, 0x81, 0x1a, 0x90, 0x9f, 0x86, 0x60, 0x5c, 0x84, 0x48, 0x2c, 0xe3, 0xc7, 0x35, 0x80, + 0x9d, 0x5a, 0x19, 0x33, 0xe8, 0x3c, 0xab, 0x16, 0x91, 0x1d, 0x3c, 0x5e, 0x72, 0x9f, 0xa2, 0x3f, + 0xfc, 0xa1, 0x06, 0xcb, 0x49, 0x34, 0xf6, 0x01, 0xac, 0x58, 0x9d, 0xa1, 0xdf, 0xeb, 0x3d, 0x72, + 0x3a, 0x8f, 0xeb, 0x5e, 0xdf, 0x15, 0x01, 0xb5, 0x67, 0xc4, 0xe6, 0x15, 0x44, 0x45, 0x76, 0x8f, + 0x97, 0x99, 0x69, 0x64, 0xf6, 0x4d, 0x0d, 0x96, 0xac, 0x7d, 0xff, 0x30, 0x8a, 0x4f, 0x4d, 0x23, + 0xf8, 0x75, 0x2e, 0x0c, 0x82, 0x7d, 0xff, 0x30, 0x4e, 0x72, 0x9e, 0x70, 0xd6, 0x7d, 0xff, 0x64, + 0x7e, 0x14, 0x1d, 0x1f, 0x0f, 0x30, 0x61, 0xf0, 0x5a, 0xe2, 0x23, 0x66, 0xf2, 0x9b, 0xc6, 0x5f, + 0x6b, 0xb0, 0x80, 0x47, 0x9d, 0x5e, 0x0f, 0x95, 0xb4, 0xbf, 0x4b, 0x19, 0xb3, 0xa3, 0x76, 0x4d, + 0x19, 0xd8, 0xb7, 0x60, 0x25, 0x85, 0xc6, 0x0c, 0x98, 0xb5, 0x30, 0xfa, 0x83, 0x6a, 0x25, 0x11, + 0xf1, 0x20, 0x4c, 0x2a, 0x31, 0xaa, 0x0a, 0xd9, 0xfd, 0x9b, 0x78, 0xaf, 0x7e, 0x0b, 0xc0, 0x93, + 0x20, 0x79, 0x14, 0x62, 0xe9, 0x9a, 0xdc, 0xbf, 0x69, 0x2a, 0x58, 0x46, 0x03, 0x66, 0x2d, 0x7f, + 0x18, 0x6e, 0x1c, 0x89, 0xd3, 0x47, 0xc5, 0x0d, 0x3a, 0xea, 0xc5, 0xb9, 0x87, 0xd7, 0x5a, 0x1d, + 0x93, 0x8a, 0xd8, 0x55, 0x98, 0xd9, 0xf4, 0xdc, 0x5e, 0x57, 0x75, 0xa8, 0xde, 0xe5, 0x00, 0x53, + 0xc0, 0xf9, 0x09, 0xed, 0x6c, 0x9c, 0xb6, 0x2e, 0xf6, 0xdc, 0x7e, 0xd6, 0x75, 0x53, 0x4e, 0xf4, + 0xef, 0xf5, 0x28, 0xb9, 0xd3, 0xf8, 0x97, 0xa6, 0x74, 0xf5, 0xbf, 0xd0, 0xe0, 0xe2, 0x64, 0x12, + 0xd5, 0x19, 0x5c, 0x9b, 0xe2, 0x0c, 0xfe, 0x62, 0xfa, 0xa2, 0x17, 0xd1, 0xe8, 0xa2, 0x37, 0xbe, + 0xde, 0xad, 0xa0, 0x2f, 0x7e, 0xc7, 0x95, 0xb9, 0xea, 0xae, 0x4d, 0xa9, 0x33, 0x22, 0x8a, 0x61, + 0x0e, 0x91, 0xc6, 0x24, 0x5a, 0xe3, 0x5f, 0x17, 0xe0, 0xc2, 0x44, 0x0a, 0xb6, 0xa5, 0x64, 0xc0, + 0x5c, 0x8e, 0x72, 0xef, 0x4d, 0xc4, 0x7f, 0x0d, 0xff, 0xa2, 0xbb, 0x65, 0xfa, 0xd9, 0x5f, 0x33, + 0xca, 0x7c, 0x98, 0x43, 0x5e, 0xaf, 0x1c, 0xcb, 0x4b, 0xa0, 0x23, 0x33, 0x18, 0x4f, 0x82, 0x88, + 0x2f, 0x4c, 0xdd, 0xd0, 0xf1, 0x7a, 0x81, 0xba, 0xec, 0xba, 0x02, 0x64, 0xca, 0xb2, 0xd8, 0x43, + 0xbf, 0x90, 0xed, 0xa1, 0x6f, 0xfc, 0x2f, 0x0d, 0xe6, 0xa3, 0x6a, 0xb3, 0x8b, 0x70, 0xb6, 0x6d, + 0x96, 0xca, 0x55, 0xbb, 0xfd, 0xb0, 0x55, 0xb5, 0x77, 0x1a, 0x56, 0xab, 0x5a, 0xae, 0x6d, 0xd6, + 0xaa, 0x15, 0xfd, 0x14, 0x5b, 0x85, 0xa5, 0x9d, 0xc6, 0xbd, 0x46, 0xf3, 0x41, 0xc3, 0xae, 0x9a, + 0x66, 0xd3, 0xd4, 0x35, 0xb6, 0x04, 0xf3, 0xe6, 0x46, 0xa9, 0x6c, 0x37, 0x9a, 0x95, 0xaa, 0x9e, + 0x63, 0x3a, 0x2c, 0x96, 0x9b, 0x8d, 0x46, 0xb5, 0xdc, 0xae, 0xdd, 0xaf, 0xb5, 0x1f, 0xea, 0x79, + 0xc6, 0x60, 0x19, 0x11, 0x5a, 0x66, 0xad, 0x51, 0xae, 0xb5, 0x4a, 0x75, 0xbd, 0xc0, 0x61, 0x1c, + 0x5f, 0x81, 0xcd, 0x44, 0x8c, 0xee, 0xed, 0x6c, 0x54, 0xf5, 0x59, 0x8e, 0xc2, 0xff, 0x53, 0x50, + 0xe6, 0xf8, 0xe7, 0x11, 0xa5, 0x52, 0x6a, 0x97, 0x36, 0x4a, 0x56, 0x55, 0x2f, 0xb2, 0x73, 0x70, + 0x3a, 0x01, 0xb2, 0xeb, 0xcd, 0x3b, 0xb5, 0x86, 0x3e, 0xcf, 0xd6, 0x40, 0x8f, 0x60, 0x95, 0x0d, + 0x7b, 0xc7, 0xaa, 0x9a, 0x3a, 0xa4, 0xa1, 0x8d, 0xd2, 0x76, 0x55, 0x5f, 0x30, 0xde, 0x17, 0x0f, + 0x32, 0x45, 0x57, 0xb3, 0xb3, 0xc0, 0xac, 0x76, 0xa9, 0xbd, 0x63, 0xa5, 0x1a, 0xbf, 0x00, 0x73, + 0xd6, 0x4e, 0xb9, 0x5c, 0xb5, 0x2c, 0x5d, 0x63, 0x00, 0xb3, 0x9b, 0xa5, 0x5a, 0xbd, 0x5a, 0xd1, + 0x73, 0xc6, 0xcf, 0x6a, 0xb0, 0x2a, 0x55, 0x46, 0x79, 0xef, 0xf5, 0x8c, 0x6b, 0xf1, 0x83, 0xc4, + 0x49, 0x58, 0xbe, 0xae, 0x4b, 0x7d, 0x64, 0xca, 0x32, 0xfc, 0x25, 0x0d, 0xce, 0x64, 0x62, 0xb3, + 0x87, 0xa0, 0xcb, 0x1a, 0x44, 0x2f, 0x65, 0xb5, 0x84, 0xc6, 0x2d, 0xe9, 0x52, 0x68, 0xc2, 0xb6, + 0x1a, 0x6d, 0x57, 0xe6, 0x18, 0x9b, 0x93, 0xa7, 0x07, 0x32, 0xbe, 0xa5, 0xc1, 0xb9, 0x09, 0x9f, + 0x61, 0x65, 0x98, 0x8d, 0xb2, 0xfd, 0x4d, 0xf1, 0x38, 0x5c, 0xfb, 0xa3, 0xcf, 0xae, 0x12, 0x22, + 0x5f, 0x1a, 0x22, 0x9f, 0x9f, 0x39, 0x1b, 0xa5, 0xef, 0xc3, 0x1c, 0x7a, 0xa2, 0xfb, 0x2e, 0xa4, + 0x7a, 0x9e, 0xbe, 0x54, 0x7a, 0x60, 0x6d, 0x2c, 0x50, 0xdf, 0xe5, 0x9d, 0xc3, 0x00, 0x93, 0xe8, + 0x19, 0xbf, 0xa8, 0x71, 0x6d, 0x30, 0x8d, 0xc8, 0x95, 0xe4, 0x38, 0x5d, 0x56, 0xc9, 0x6c, 0xd0, + 0xb6, 0x81, 0xea, 0xad, 0x48, 0xb1, 0x85, 0xe7, 0x10, 0xdb, 0x19, 0x26, 0xc2, 0x3e, 0x24, 0x68, + 0xd8, 0x6d, 0x80, 0xea, 0x93, 0xd0, 0x1d, 0xf6, 0x9d, 0x5e, 0x14, 0xc0, 0x47, 0x04, 0xaa, 0x23, + 0x68, 0x52, 0x41, 0x57, 0x90, 0x8d, 0x9f, 0xd0, 0x60, 0x51, 0xe6, 0x0e, 0xeb, 0xb9, 0xc3, 0xf0, + 0xd9, 0xa6, 0xd7, 0xed, 0xc4, 0xf4, 0x8a, 0x1e, 0xd8, 0x28, 0xfc, 0x79, 0x71, 0xe6, 0xcc, 0xfa, + 0x37, 0x1a, 0xe8, 0x69, 0x44, 0xf6, 0x01, 0x14, 0x2d, 0xf7, 0x53, 0x77, 0xe8, 0x85, 0x47, 0x24, + 0x28, 0x65, 0x96, 0x65, 0x81, 0x43, 0x65, 0x62, 0x3e, 0x04, 0xf4, 0xcb, 0x8c, 0x68, 0x4e, 0x2a, + 0xef, 0x15, 0x3b, 0x49, 0xfe, 0xf3, 0xb2, 0x93, 0x18, 0x7f, 0x92, 0x83, 0x73, 0x77, 0xdc, 0x50, + 0x6d, 0x53, 0xe4, 0x09, 0xf2, 0xc6, 0xc9, 0xda, 0xa5, 0xb4, 0xe4, 0x3c, 0xcc, 0x61, 0x91, 0x1c, + 0x5f, 0x53, 0xfe, 0x64, 0x1b, 0xd1, 0xbc, 0xce, 0x27, 0xd2, 0xb8, 0x4e, 0xf8, 0xf6, 0x6b, 0x4a, + 0x2a, 0xc6, 0x68, 0x5a, 0xdf, 0x80, 0x65, 0x4c, 0xd6, 0x32, 0xe2, 0xcb, 0xc1, 0xed, 0x92, 0xbd, + 0xa8, 0x68, 0xa6, 0xa0, 0x6c, 0x1d, 0x74, 0x0e, 0x29, 0x75, 0x1e, 0xf7, 0xfd, 0xc3, 0x9e, 0xdb, + 0xdd, 0x73, 0xbb, 0xb8, 0xad, 0x17, 0xcd, 0x31, 0xb8, 0xe4, 0xb9, 0xd3, 0x17, 0x67, 0x3d, 0xb7, + 0x8b, 0x46, 0x1d, 0xe2, 0x19, 0x43, 0x2f, 0xde, 0x86, 0x85, 0xef, 0x32, 0x49, 0xab, 0xf1, 0x9f, + 0x34, 0x58, 0xc3, 0xc6, 0x29, 0x1f, 0x96, 0x09, 0xf4, 0x65, 0x6f, 0x29, 0x99, 0x06, 0x1d, 0x0e, + 0x4a, 0x2e, 0x85, 0xa8, 0x17, 0x63, 0x23, 0x52, 0xee, 0x04, 0x46, 0x24, 0xc5, 0x06, 0x56, 0xf8, + 0xbc, 0x6c, 0x60, 0x77, 0x0b, 0xc5, 0xbc, 0x5e, 0x88, 0x87, 0xdc, 0xf8, 0x66, 0x0e, 0xe6, 0x4c, + 0xb7, 0xe7, 0x3a, 0x81, 0xcb, 0x6e, 0xc0, 0x5c, 0xc3, 0x0f, 0xdd, 0x60, 0xbb, 0xa2, 0x7a, 0x59, + 0xf7, 0x39, 0xc8, 0x3e, 0xe8, 0x9a, 0xb2, 0x90, 0x4f, 0xf8, 0xd6, 0xd0, 0xef, 0x8e, 0x3a, 0xa1, + 0x3a, 0xe1, 0x07, 0x02, 0x64, 0xca, 0x32, 0xf6, 0x05, 0x98, 0x27, 0xce, 0xd1, 0xcd, 0x32, 0x3a, + 0x8f, 0x0f, 0x05, 0x10, 0xd3, 0x3a, 0x45, 0x08, 0xa8, 0xd3, 0x0a, 0x05, 0xa3, 0xa0, 0xe8, 0xb4, + 0x63, 0x3a, 0x83, 0x54, 0xd5, 0x67, 0xa6, 0xa8, 0xea, 0x6f, 0xc0, 0x6c, 0x29, 0x08, 0xdc, 0x50, + 0xc6, 0xa3, 0x58, 0x8c, 0x53, 0x06, 0xba, 0xa1, 0x60, 0xec, 0x60, 0xb9, 0x49, 0x78, 0xc6, 0x5f, + 0xe6, 0x60, 0x06, 0xff, 0xc5, 0x7b, 0xdb, 0x61, 0x67, 0x3f, 0x71, 0x6f, 0x3b, 0xec, 0xec, 0x9b, + 0x08, 0x65, 0x37, 0xd1, 0xb4, 0x21, 0x93, 0x62, 0x52, 0xeb, 0xd1, 0x66, 0xdf, 0x8d, 0xc1, 0xa6, + 0x8a, 0x13, 0xb9, 0x19, 0xe4, 0x33, 0xa3, 0xd0, 0x9c, 0x85, 0x5c, 0xd3, 0xa2, 0x16, 0x63, 0xb8, + 0x34, 0x3f, 0x30, 0x73, 0x4d, 0x0b, 0x7b, 0x63, 0xab, 0x74, 0xeb, 0xad, 0xb7, 0xa9, 0xa1, 0xa2, + 0x37, 0xf6, 0x9d, 0x5b, 0x6f, 0xbd, 0x6d, 0x52, 0x09, 0xef, 0x5f, 0xac, 0x33, 0xde, 0xfe, 0x8a, + 0x60, 0x09, 0xd8, 0xbf, 0xd8, 0x36, 0xbc, 0xe9, 0x35, 0x63, 0x04, 0x76, 0x0b, 0x16, 0x28, 0x6a, + 0x07, 0xe2, 0x2b, 0x51, 0x35, 0x28, 0xaa, 0x87, 0xa0, 0x50, 0x91, 0xc4, 0x3d, 0x20, 0x0d, 0x10, + 0xa5, 0x80, 0x93, 0xf7, 0x80, 0x72, 0x08, 0x03, 0x53, 0x41, 0xe1, 0x55, 0x12, 0x17, 0x89, 0x71, + 0x10, 0x04, 0xac, 0x12, 0xdd, 0x36, 0x62, 0x62, 0x9c, 0x08, 0xc1, 0xf8, 0xb5, 0x1c, 0x14, 0x5b, + 0xbd, 0xd1, 0x9e, 0xd7, 0xbf, 0x7f, 0x93, 0x31, 0xc0, 0x63, 0x9c, 0xcc, 0x9c, 0xc4, 0xff, 0x67, + 0x17, 0xa0, 0x28, 0x4f, 0x6e, 0x52, 0x20, 0x05, 0x74, 0x6a, 0x3b, 0x0f, 0x72, 0xdc, 0x29, 0x2e, + 0x9e, 0xfc, 0xc9, 0x6e, 0x42, 0x74, 0xfe, 0x9a, 0x74, 0x50, 0x2b, 0xf0, 0xc5, 0x62, 0x46, 0x68, + 0xec, 0x55, 0xc0, 0x4d, 0x82, 0x0e, 0x0f, 0xd2, 0x02, 0x2e, 0xaa, 0x46, 0x7a, 0x8a, 0x20, 0x41, + 0x34, 0xf6, 0x66, 0x2a, 0xc9, 0xe1, 0x99, 0x24, 0x81, 0x48, 0x83, 0x27, 0x49, 0x64, 0x82, 0xc3, + 0xf7, 0x92, 0xa1, 0x12, 0xe7, 0x12, 0xf7, 0x5b, 0x82, 0x52, 0x89, 0x55, 0x78, 0xff, 0x66, 0x32, + 0x4a, 0xe2, 0xef, 0xcd, 0xc3, 0xa2, 0x5a, 0x1f, 0x66, 0xc2, 0xe9, 0xa0, 0xc7, 0xcf, 0xee, 0xe4, + 0x17, 0x38, 0xc0, 0x42, 0xda, 0x4e, 0xaf, 0x25, 0x2b, 0xc4, 0xf1, 0x84, 0x93, 0xa0, 0x0c, 0x37, + 0xb2, 0x75, 0xca, 0x5c, 0x0d, 0x62, 0xb0, 0xc0, 0x63, 0x25, 0x28, 0xfa, 0x83, 0x60, 0xcf, 0xed, + 0x7b, 0xf2, 0x82, 0xe6, 0xf9, 0x04, 0xa3, 0x26, 0x15, 0x8e, 0xf1, 0x8a, 0xc8, 0xd8, 0x5b, 0x30, + 0xeb, 0x0f, 0xdc, 0xbe, 0xe3, 0xd1, 0x1e, 0x77, 0x29, 0xc5, 0xc0, 0xed, 0x97, 0x6a, 0x0a, 0x21, + 0x21, 0xb3, 0xd7, 0xa1, 0xe0, 0x3f, 0x8e, 0xc6, 0xeb, 0x42, 0x92, 0xe8, 0x71, 0xe8, 0x28, 0x24, + 0x88, 0xc8, 0x09, 0x3e, 0x76, 0x0e, 0x76, 0x69, 0xc4, 0x92, 0x04, 0x77, 0x9d, 0x83, 0x5d, 0x95, + 0x80, 0x23, 0xb2, 0x0f, 0x01, 0x06, 0xce, 0x9e, 0x3b, 0xb4, 0xbb, 0xa3, 0xf0, 0x28, 0x95, 0x05, + 0x5a, 0x90, 0xb5, 0x78, 0x71, 0x65, 0x14, 0x1e, 0x29, 0xb4, 0xf3, 0x03, 0x09, 0x64, 0x25, 0x80, + 0x03, 0x27, 0x0c, 0xdd, 0xe1, 0x81, 0x4f, 0x8e, 0x99, 0x71, 0xa4, 0x4b, 0xc1, 0x60, 0x3b, 0x2a, + 0x56, 0x38, 0x28, 0x44, 0x58, 0x69, 0x6f, 0xe8, 0xe0, 0x35, 0xfc, 0x58, 0xa5, 0xbd, 0x61, 0xa2, + 0x95, 0x1c, 0x91, 0xbd, 0x0b, 0x73, 0x98, 0xda, 0x74, 0xd8, 0xa5, 0x38, 0x34, 0x97, 0x13, 0x34, + 0x15, 0x51, 0xa6, 0x90, 0x49, 0x74, 0x5e, 0x5b, 0x8a, 0x69, 0xdc, 0xf0, 0x0f, 0xf1, 0x5e, 0x20, + 0x5d, 0x5b, 0x2b, 0x2a, 0x56, 0x6b, 0x1b, 0x13, 0xf1, 0xa1, 0xdc, 0xf3, 0xc2, 0x9e, 0xf3, 0x88, + 0x2e, 0xdb, 0x93, 0x43, 0x79, 0x07, 0x8b, 0xd4, 0xa1, 0x14, 0xc8, 0xec, 0x36, 0x14, 0x65, 0xa4, + 0x51, 0x7a, 0xd5, 0x9a, 0xac, 0x34, 0xc5, 0x17, 0x55, 0x2b, 0x4d, 0xb1, 0x45, 0x79, 0xff, 0x04, + 0x1d, 0xef, 0x80, 0x1e, 0xa3, 0x26, 0xfb, 0xc7, 0x2a, 0xd7, 0xb6, 0xd5, 0xfe, 0xe1, 0x88, 0xec, + 0x03, 0x98, 0xe3, 0xeb, 0xb7, 0xeb, 0xef, 0x51, 0x24, 0x0f, 0x23, 0xd9, 0x3f, 0xa2, 0x6c, 0x6c, + 0xba, 0x4a, 0x22, 0xbe, 0x90, 0x9d, 0xc3, 0xc0, 0xf6, 0x3a, 0x18, 0xea, 0x36, 0xbd, 0x1c, 0x4b, + 0x0f, 0xac, 0x5a, 0x59, 0x21, 0x9b, 0x71, 0x0e, 0x83, 0x5a, 0x87, 0xdd, 0x82, 0x19, 0x4c, 0x2a, + 0x44, 0x71, 0x6d, 0x93, 0x34, 0x98, 0x4e, 0x48, 0xa5, 0x41, 0x54, 0x3e, 0x90, 0x07, 0x01, 0xbe, + 0xef, 0xa1, 0xd4, 0x3e, 0xc9, 0x3e, 0xd9, 0xb6, 0xf0, 0xd1, 0x8f, 0x5a, 0x45, 0x42, 0xe7, 0x55, + 0xec, 0xbb, 0xa1, 0xed, 0x7d, 0x42, 0xc9, 0x79, 0x92, 0x9f, 0x6b, 0xb8, 0x61, 0xed, 0xab, 0xea, + 0xe7, 0xfa, 0x6e, 0x58, 0xfb, 0x84, 0x86, 0x6e, 0x7f, 0xf4, 0x08, 0x8d, 0xef, 0x19, 0x43, 0xb7, + 0x3f, 0x4a, 0x0f, 0xdd, 0xfe, 0xe8, 0x11, 0x27, 0xf3, 0xfa, 0xe1, 0xa8, 0xef, 0xd2, 0xeb, 0xd2, + 0x24, 0x59, 0x0d, 0x8b, 0x54, 0x32, 0x81, 0xcc, 0xae, 0x00, 0xc4, 0xde, 0x0e, 0xe2, 0x1e, 0xc9, + 0x54, 0x20, 0x5f, 0x2a, 0xfc, 0x97, 0x5f, 0xbe, 0xaa, 0x6d, 0x00, 0x14, 0x65, 0x38, 0x24, 0xae, + 0x86, 0xaf, 0x65, 0xd5, 0x85, 0x5d, 0x87, 0x45, 0x35, 0x58, 0x13, 0x6d, 0x06, 0x0b, 0xce, 0xc0, + 0x93, 0xe1, 0x9a, 0xa6, 0xa7, 0x6d, 0x79, 0x05, 0x56, 0x13, 0x8f, 0xb0, 0x62, 0xb7, 0x45, 0x53, + 0x57, 0x0b, 0x70, 0xef, 0x2d, 0x03, 0x04, 0xa1, 0x33, 0x0c, 0xed, 0xae, 0x13, 0x9e, 0xc4, 0x8c, + 0x5c, 0xe4, 0xf2, 0x5c, 0xf8, 0xbc, 0x23, 0x5d, 0xc5, 0x09, 0x5d, 0xd1, 0x38, 0xa3, 0x0e, 0x17, + 0x26, 0xca, 0x5a, 0xf6, 0x32, 0xe8, 0xbb, 0x0e, 0x59, 0x5a, 0x3b, 0xfb, 0x4e, 0xbf, 0xef, 0xf6, + 0xa8, 0x61, 0x2b, 0x12, 0x5e, 0x16, 0x60, 0xe2, 0xf6, 0xa1, 0xd2, 0x3b, 0xca, 0x22, 0x3b, 0x41, + 0xef, 0x10, 0x83, 0xdf, 0xd2, 0xe0, 0xf2, 0x34, 0x91, 0xcd, 0x2e, 0x42, 0x71, 0x30, 0xf4, 0x7c, + 0x3c, 0x1a, 0x50, 0x1f, 0xca, 0xdf, 0x98, 0xd5, 0x06, 0x75, 0xd8, 0xd0, 0xd9, 0xa3, 0x57, 0x4d, + 0xe6, 0x3c, 0x42, 0xda, 0xce, 0x5e, 0xc0, 0xbb, 0xb8, 0xeb, 0xee, 0x3a, 0xa3, 0x5e, 0x68, 0x07, + 0x9d, 0x7d, 0xb7, 0x8b, 0xef, 0x0e, 0xd1, 0xdf, 0xd3, 0xd4, 0xa9, 0xc0, 0x92, 0xf0, 0xb1, 0x1a, + 0xcf, 0x4c, 0xa8, 0xf1, 0xdd, 0x42, 0x51, 0xd3, 0x73, 0x26, 0xba, 0xc8, 0x19, 0x3f, 0x9a, 0x83, + 0xf3, 0x93, 0x64, 0x14, 0x7b, 0x3f, 0xab, 0x0f, 0xc4, 0xed, 0x92, 0x0a, 0x57, 0x6f, 0x97, 0xd4, + 0xd9, 0x73, 0x0b, 0xa2, 0x57, 0x83, 0xc7, 0x45, 0x00, 0x91, 0x30, 0x4e, 0x33, 0x70, 0x82, 0xe0, + 0x90, 0x8b, 0xe1, 0xbc, 0x12, 0x93, 0x9c, 0x60, 0x2a, 0x8d, 0x84, 0xb1, 0x77, 0x00, 0x3a, 0x3d, + 0x3f, 0x70, 0xd1, 0x89, 0x83, 0xf4, 0x3b, 0xf1, 0x16, 0x22, 0x82, 0xaa, 0xb7, 0xf6, 0x08, 0x2d, + 0xfb, 0x5d, 0x39, 0x9f, 0x1c, 0x38, 0x37, 0x61, 0x53, 0xe2, 0xc3, 0x83, 0xcf, 0x00, 0x85, 0x0c, + 0xa2, 0x8c, 0x90, 0x1c, 0x22, 0x32, 0x99, 0xa5, 0x7b, 0x3c, 0x37, 0x69, 0x8e, 0x1c, 0x01, 0x1b, + 0xdf, 0x79, 0x38, 0x77, 0xf2, 0xfd, 0x1f, 0x0d, 0x23, 0xee, 0x02, 0xb2, 0x33, 0xec, 0xb1, 0xab, + 0xb0, 0x20, 0x93, 0xa2, 0xf3, 0xf3, 0x93, 0x60, 0x0e, 0x04, 0xba, 0xe7, 0xe2, 0xe4, 0xc1, 0x10, + 0xc2, 0x22, 0x43, 0x95, 0x58, 0x79, 0xf3, 0x08, 0x69, 0x1f, 0x0d, 0x64, 0xeb, 0x2e, 0xcb, 0xf9, + 0x9d, 0xd4, 0x07, 0xa8, 0xf4, 0x1f, 0x6a, 0x72, 0xf8, 0xc7, 0x37, 0xd4, 0xe3, 0xea, 0xc7, 0x00, + 0x9f, 0xe6, 0x51, 0xc5, 0xf0, 0x7f, 0xae, 0x29, 0xca, 0x55, 0x47, 0x9a, 0x22, 0xfd, 0x64, 0x37, + 0x60, 0x65, 0x28, 0xdc, 0x9f, 0x43, 0x9f, 0xfa, 0x53, 0x24, 0x71, 0x5a, 0x12, 0xe0, 0xb6, 0x8f, + 0x7d, 0x4a, 0xf5, 0xba, 0x1b, 0x75, 0x98, 0xa2, 0x5f, 0xb0, 0xd7, 0x60, 0x9e, 0xeb, 0x17, 0x18, + 0x16, 0x2a, 0xf5, 0x26, 0x08, 0xf1, 0x50, 0x5b, 0x33, 0x8b, 0x1f, 0xd3, 0xff, 0xc4, 0xeb, 0xc7, + 0x23, 0x01, 0x98, 0x94, 0xaa, 0xec, 0x2c, 0xcc, 0x8a, 0x64, 0xfe, 0xd4, 0x36, 0xfa, 0xc5, 0x5e, + 0x84, 0x65, 0xf1, 0x90, 0x37, 0x35, 0xb0, 0x4b, 0x08, 0x8d, 0xa6, 0xf7, 0xc9, 0x32, 0x80, 0x51, + 0x25, 0x7e, 0x23, 0x27, 0x5b, 0xa4, 0xaa, 0x58, 0xec, 0x1c, 0xcc, 0xf9, 0xc3, 0x3d, 0xa5, 0x7f, + 0x67, 0xfd, 0xe1, 0x1e, 0xef, 0xdc, 0x97, 0x40, 0x17, 0xef, 0xe4, 0x44, 0xbc, 0x92, 0xe0, 0xa8, + 0xdf, 0xa1, 0xb7, 0x12, 0xcb, 0x02, 0xbe, 0x13, 0xb8, 0x43, 0xeb, 0xa8, 0xdf, 0xe1, 0x98, 0x41, + 0xe0, 0xdb, 0x6a, 0x88, 0x39, 0xaa, 0xc8, 0x72, 0x10, 0xf8, 0x71, 0xac, 0xb9, 0x2e, 0xdb, 0x80, + 0x25, 0xce, 0x27, 0x8a, 0x94, 0x47, 0x62, 0xf8, 0xb9, 0x71, 0x0d, 0xf0, 0xa8, 0xdf, 0x91, 0x55, + 0x34, 0x17, 0x03, 0xe5, 0x17, 0xbb, 0x07, 0xba, 0xa2, 0x2a, 0xe3, 0xc3, 0xe9, 0xd4, 0x7b, 0x80, + 0x98, 0x8d, 0xa2, 0x62, 0xd7, 0xfa, 0xbb, 0xbe, 0xb9, 0xd2, 0x49, 0x02, 0x22, 0x71, 0x34, 0xab, + 0xcf, 0x99, 0xe7, 0xa9, 0xb9, 0x01, 0xba, 0x8a, 0xda, 0x3d, 0x7f, 0xcf, 0x76, 0x9f, 0xf0, 0x89, + 0x61, 0xfc, 0x13, 0x4d, 0x0a, 0xfc, 0x0c, 0xa6, 0xcc, 0x80, 0xa5, 0x7d, 0x27, 0xb0, 0x83, 0xe0, + 0x40, 0x78, 0x30, 0x52, 0x38, 0xf0, 0x85, 0x7d, 0x27, 0xb0, 0x82, 0x03, 0x99, 0x99, 0xea, 0x0c, + 0xc7, 0xc1, 0x90, 0xe5, 0xb6, 0x7a, 0x30, 0x10, 0x3d, 0x7a, 0x7a, 0xdf, 0x09, 0x9a, 0xbc, 0x4c, + 0x8d, 0x5f, 0xfe, 0x02, 0x2c, 0x23, 0xdf, 0x8e, 0x27, 0x19, 0x63, 0x4c, 0x1a, 0x73, 0x91, 0x33, + 0xee, 0x78, 0x82, 0x33, 0x0d, 0xee, 0x1f, 0xcc, 0xc0, 0xd9, 0xec, 0xde, 0xc3, 0x35, 0xc4, 0xfb, + 0x1c, 0x5f, 0xcf, 0x52, 0xdd, 0xe6, 0x39, 0x44, 0xc4, 0x13, 0xca, 0x1a, 0xbc, 0x5c, 0xe6, 0xe0, + 0xad, 0xc3, 0x2a, 0x32, 0xa2, 0x23, 0x48, 0xcf, 0x0b, 0x42, 0x0a, 0x93, 0x63, 0xae, 0xf0, 0x02, + 0xb1, 0xe9, 0xd4, 0x39, 0x98, 0xcf, 0x4c, 0xb9, 0x6d, 0xf8, 0x87, 0x7d, 0xfe, 0x61, 0xb1, 0x67, + 0x2c, 0x11, 0xb4, 0x89, 0x40, 0x76, 0x06, 0x66, 0x9d, 0xc1, 0x80, 0x7f, 0x52, 0x6c, 0x15, 0x33, + 0xce, 0x60, 0x20, 0x82, 0xb3, 0x8b, 0xc4, 0x77, 0xbb, 0xe8, 0x6f, 0x26, 0x5f, 0x02, 0x2c, 0x22, + 0x50, 0xf8, 0xa0, 0xe1, 0x5b, 0x02, 0x4e, 0x2b, 0x51, 0xe6, 0x10, 0x05, 0x9c, 0x41, 0x84, 0x70, + 0x01, 0x8a, 0xd2, 0xf3, 0x41, 0x3c, 0x8e, 0x32, 0xe7, 0x1c, 0xf2, 0x7a, 0x78, 0x0b, 0xce, 0x51, + 0x96, 0x3d, 0x5b, 0x34, 0x69, 0x30, 0xa0, 0xd7, 0xc9, 0x22, 0x14, 0xb7, 0xb9, 0x46, 0xc5, 0xbc, + 0x27, 0x4b, 0x83, 0x41, 0xf4, 0x46, 0xf9, 0xa2, 0x24, 0x7b, 0xe4, 0x89, 0x60, 0x7e, 0xc2, 0xfb, + 0x17, 0x17, 0x07, 0x20, 0xe5, 0x79, 0xc2, 0xd8, 0x50, 0x11, 0xe4, 0x32, 0x89, 0x56, 0x92, 0x2d, + 0x0c, 0x9f, 0xa4, 0x3e, 0xe1, 0xfd, 0x38, 0x0e, 0x1a, 0x42, 0xd9, 0x3b, 0x30, 0x71, 0x2e, 0xa2, + 0x76, 0x5e, 0x34, 0xcf, 0x88, 0x72, 0xe1, 0xd5, 0x5c, 0xf7, 0xf7, 0xaa, 0x58, 0xc8, 0x3e, 0x84, + 0xcb, 0xb2, 0x82, 0x4e, 0x10, 0x78, 0x7b, 0x7d, 0x5b, 0x8e, 0x02, 0x3a, 0x9e, 0xa0, 0x86, 0x5e, + 0x34, 0x2f, 0x10, 0x4e, 0x09, 0x51, 0x2a, 0x02, 0x43, 0xbc, 0x6e, 0x7d, 0x03, 0xd6, 0x42, 0xef, + 0xc0, 0xb5, 0x1f, 0xb9, 0xe1, 0xa1, 0xeb, 0xf6, 0x6d, 0xef, 0x80, 0xf3, 0x15, 0x01, 0x63, 0xe6, + 0x4d, 0xc6, 0xcb, 0x36, 0x44, 0x51, 0x4d, 0x94, 0xb0, 0x16, 0xbc, 0x98, 0xa0, 0x10, 0xdf, 0x3d, + 0xe0, 0x1a, 0xdb, 0x60, 0xe8, 0x8b, 0x99, 0xe2, 0xfb, 0x03, 0x91, 0xd9, 0x62, 0xde, 0xbc, 0xae, + 0xb0, 0x28, 0x45, 0xa8, 0x2d, 0x81, 0x59, 0xe7, 0x88, 0x34, 0xa3, 0xdf, 0x85, 0x15, 0x3a, 0xf0, + 0x90, 0xb6, 0x84, 0x23, 0x4e, 0xb2, 0x1c, 0x9f, 0x87, 0x88, 0x34, 0x83, 0x40, 0xa0, 0x5a, 0x57, + 0x52, 0xfe, 0xb1, 0x06, 0x67, 0x32, 0x4f, 0x4c, 0xec, 0x87, 0x40, 0x3c, 0x79, 0x0d, 0x7d, 0x7b, + 0xe8, 0x76, 0xbc, 0x81, 0x87, 0x31, 0x84, 0xc4, 0x8d, 0xc2, 0xad, 0x69, 0x67, 0x2d, 0x7c, 0x3e, + 0xdb, 0xf6, 0xcd, 0x88, 0x48, 0x98, 0x3a, 0xf5, 0x61, 0x0a, 0x7c, 0xf1, 0x23, 0x38, 0x93, 0x89, + 0x9a, 0x61, 0x82, 0xfc, 0x82, 0x6a, 0x82, 0x8c, 0xef, 0x88, 0x53, 0x8d, 0x56, 0x4c, 0x93, 0xd4, + 0xbc, 0xdf, 0x89, 0x9a, 0x97, 0x3a, 0x5b, 0xb1, 0x6a, 0x5a, 0xba, 0x66, 0x99, 0x07, 0x24, 0xd1, + 0x64, 0x01, 0xfb, 0x11, 0x9c, 0xa1, 0x25, 0x2e, 0x36, 0x97, 0x88, 0x9d, 0xa8, 0xe8, 0xf7, 0x65, + 0xb1, 0x13, 0x6b, 0xff, 0x0e, 0xc7, 0x8f, 0xb8, 0x9e, 0x76, 0xc6, 0x81, 0xd4, 0x86, 0x5f, 0xce, + 0x4b, 0x81, 0x9a, 0x51, 0x9d, 0x0c, 0xe1, 0xa1, 0x65, 0x09, 0x8f, 0x93, 0x4b, 0xae, 0x06, 0x30, + 0x75, 0xcb, 0xa0, 0xb5, 0x27, 0x1c, 0x20, 0xaf, 0x26, 0x13, 0x61, 0x28, 0x02, 0x58, 0x2c, 0x46, + 0x73, 0xb5, 0x93, 0x06, 0xf1, 0x43, 0x89, 0xd8, 0xa8, 0xf9, 0x27, 0x85, 0x0e, 0x51, 0x14, 0x80, + 0x5a, 0x97, 0x5d, 0x83, 0x45, 0x71, 0x22, 0x4e, 0x48, 0x36, 0x40, 0x58, 0x09, 0xc5, 0xdb, 0x7b, + 0x59, 0xe2, 0x2d, 0xbe, 0xda, 0x20, 0x65, 0xf8, 0xa8, 0xdf, 0x11, 0x92, 0x2c, 0x25, 0xf7, 0x6c, + 0xb8, 0xa0, 0x48, 0x60, 0xea, 0x21, 0xd9, 0xa6, 0x39, 0x6c, 0xd3, 0x0b, 0xc9, 0x36, 0xc5, 0x82, + 0x59, 0xf4, 0x1c, 0x35, 0xec, 0xac, 0x93, 0x09, 0xa7, 0x21, 0xfa, 0xc9, 0x1c, 0xe8, 0xe9, 0x9a, + 0x30, 0x03, 0x72, 0x32, 0x97, 0xc6, 0xb8, 0xf3, 0xcf, 0xd6, 0x29, 0x33, 0xe7, 0x75, 0xd9, 0x6d, + 0x00, 0xcc, 0x9f, 0x3b, 0x74, 0xf7, 0xdc, 0x27, 0xa4, 0x75, 0xa3, 0x2e, 0x1c, 0x43, 0x13, 0x34, + 0xf3, 0x68, 0x1f, 0xe5, 0x60, 0x76, 0x13, 0xc0, 0x7d, 0x22, 0x72, 0x9c, 0x48, 0x15, 0x22, 0xe3, + 0x33, 0x9a, 0x39, 0x4f, 0x58, 0xb5, 0x2e, 0xdb, 0x02, 0x26, 0x49, 0x94, 0xaf, 0x16, 0x8e, 0xf9, + 0xaa, 0x66, 0xea, 0x44, 0xd5, 0x90, 0x1f, 0xa7, 0x73, 0xeb, 0x3c, 0xcc, 0x51, 0x9a, 0x15, 0xfe, + 0x2f, 0x21, 0x19, 0x3f, 0xa6, 0xc1, 0xb5, 0xe3, 0xe6, 0x3b, 0x7b, 0x00, 0x67, 0xd1, 0x65, 0x2e, + 0xf0, 0xa3, 0x25, 0x63, 0x77, 0x9c, 0xce, 0xbe, 0x4b, 0x12, 0xc6, 0xc8, 0x5c, 0x38, 0x83, 0x81, + 0x65, 0x35, 0x95, 0x35, 0x33, 0x18, 0x58, 0x81, 0x2f, 0x7f, 0x97, 0x39, 0x39, 0x0d, 0x48, 0x17, + 0x2e, 0x4d, 0xa1, 0x54, 0xb6, 0x52, 0x4d, 0xdd, 0x4a, 0x5f, 0x02, 0x7d, 0xd7, 0xed, 0xf2, 0xb3, + 0xb9, 0xdb, 0xc5, 0xaa, 0x7d, 0x7a, 0x0b, 0xc7, 0x64, 0xd1, 0x5c, 0x8e, 0xe0, 0x56, 0xe0, 0xdf, + 0xbf, 0x45, 0x5f, 0xf9, 0xf5, 0x48, 0x4b, 0x54, 0x4d, 0x30, 0xec, 0x16, 0x9c, 0x4e, 0x05, 0xd3, + 0x52, 0xa2, 0xb3, 0xe4, 0xce, 0x6b, 0xe6, 0x2a, 0x2f, 0x4e, 0x86, 0x5f, 0x7c, 0x11, 0x16, 0xd5, + 0xdd, 0x87, 0xa6, 0x02, 0x47, 0x5e, 0xe8, 0xc6, 0x7b, 0x0e, 0x7b, 0x04, 0xcb, 0xca, 0x12, 0xe6, + 0xda, 0x5c, 0x3e, 0x43, 0xce, 0xa8, 0xb5, 0x79, 0x2d, 0x5e, 0xdb, 0xfd, 0x5d, 0x5f, 0x78, 0x8e, + 0x25, 0x59, 0x98, 0x4b, 0x1d, 0x15, 0xe5, 0xe2, 0x57, 0x95, 0x68, 0x92, 0xa8, 0xb3, 0x5d, 0x86, + 0x42, 0x3f, 0x33, 0x58, 0x7c, 0x5f, 0xa4, 0xf0, 0x2f, 0x84, 0x99, 0x21, 0x91, 0xc3, 0xe8, 0x54, + 0x43, 0xdd, 0x35, 0x92, 0x83, 0x92, 0x69, 0x7c, 0x3a, 0x89, 0x81, 0xe3, 0x55, 0x60, 0x91, 0xb9, + 0x20, 0xda, 0x94, 0x48, 0x8e, 0xad, 0xca, 0x92, 0x68, 0x37, 0xa1, 0xcf, 0xfe, 0xab, 0x59, 0x38, + 0x9d, 0x61, 0xb5, 0x62, 0xaf, 0x82, 0xee, 0xf5, 0x43, 0x77, 0x6f, 0xa8, 0xd8, 0x43, 0xe2, 0x31, + 0x5a, 0x51, 0xca, 0xe8, 0x3a, 0x62, 0x76, 0xe8, 0xee, 0x45, 0x57, 0x1b, 0x26, 0xfd, 0xe2, 0x9b, + 0x95, 0x33, 0x94, 0x96, 0x76, 0xfe, 0x2f, 0xab, 0xc1, 0x2a, 0x26, 0x10, 0x0a, 0x3c, 0x1f, 0x73, + 0x7b, 0xe1, 0xf9, 0xa7, 0x90, 0xb0, 0x6d, 0x61, 0x4d, 0x5a, 0x0a, 0x12, 0x3f, 0x00, 0x99, 0xfa, + 0x20, 0x05, 0x61, 0x5f, 0x86, 0x8b, 0xaa, 0xfc, 0x4a, 0x49, 0x7a, 0x7c, 0x5d, 0x65, 0x9e, 0x8b, + 0x45, 0x53, 0x25, 0x21, 0xf3, 0x37, 0xe0, 0x0a, 0xce, 0x43, 0xaf, 0x3b, 0xb0, 0xc7, 0xb2, 0xb8, + 0x61, 0x73, 0x45, 0x12, 0x9b, 0x8b, 0x1c, 0xab, 0xd6, 0x1d, 0xa4, 0x12, 0xba, 0x61, 0xab, 0x5b, + 0x99, 0xbb, 0x81, 0x90, 0x9c, 0xcf, 0xa9, 0x8d, 0x19, 0xdb, 0x0b, 0xc4, 0x4c, 0x1f, 0xdf, 0x0f, + 0xf6, 0x60, 0x35, 0xd6, 0xec, 0xa4, 0x50, 0x2f, 0xe2, 0xa2, 0xbf, 0xa8, 0x32, 0x94, 0x27, 0x26, + 0x21, 0x4d, 0x45, 0x7c, 0x9c, 0x31, 0x42, 0x35, 0x0a, 0xd4, 0x28, 0x41, 0x10, 0xb0, 0x3a, 0xac, + 0x39, 0x87, 0x81, 0x4c, 0x11, 0x1f, 0x44, 0xdf, 0x9a, 0x1f, 0xff, 0x96, 0xbc, 0x5b, 0xa7, 0x3d, + 0x84, 0x39, 0x87, 0x01, 0x65, 0x8e, 0x0f, 0x24, 0xb7, 0x8f, 0x81, 0x89, 0x7d, 0x28, 0x51, 0x6f, + 0x38, 0x8e, 0x17, 0xe5, 0x97, 0x1f, 0xa3, 0x54, 0x63, 0x59, 0x62, 0xa9, 0x5a, 0xf3, 0x76, 0xf2, + 0x3e, 0x64, 0x21, 0x71, 0x99, 0x9f, 0xee, 0x6d, 0xe1, 0x68, 0xa0, 0xe0, 0xab, 0xf6, 0x1d, 0x05, + 0x8c, 0x47, 0x7a, 0x8c, 0x75, 0x87, 0xf5, 0x38, 0xf0, 0xbb, 0xae, 0x70, 0x50, 0x37, 0x97, 0x10, + 0xcc, 0x2b, 0xb0, 0x1d, 0x9b, 0x59, 0xbe, 0xa5, 0x81, 0x9e, 0xfe, 0x14, 0x7b, 0x0f, 0x66, 0x85, + 0x92, 0x4d, 0xda, 0x92, 0x91, 0x5d, 0x27, 0x31, 0xd2, 0x42, 0xdf, 0xde, 0x3a, 0x65, 0x12, 0x0d, + 0x7b, 0x1b, 0x0a, 0xbe, 0xd7, 0x95, 0xce, 0x09, 0xd7, 0xa6, 0xd1, 0x36, 0x6b, 0x95, 0x32, 0x5e, + 0x68, 0x78, 0x5d, 0xb2, 0x0b, 0x6c, 0x14, 0x61, 0x56, 0x74, 0xac, 0xf1, 0x31, 0x5c, 0x9a, 0xf2, + 0x41, 0x56, 0x85, 0x95, 0x94, 0xe3, 0xc6, 0x09, 0x7d, 0x3a, 0x9c, 0xd8, 0xa7, 0x63, 0x28, 0xcf, + 0x8a, 0x3d, 0xb8, 0x30, 0xb1, 0x82, 0xac, 0x36, 0x51, 0x82, 0x60, 0x34, 0xa6, 0x74, 0x99, 0x3a, + 0x59, 0x53, 0xd2, 0x85, 0xbe, 0xf6, 0x53, 0x39, 0x38, 0x9d, 0x31, 0x89, 0xfe, 0x9f, 0x55, 0x25, + 0x7e, 0x5d, 0xa3, 0xfe, 0x48, 0x0a, 0x03, 0xd6, 0x06, 0xf2, 0x0b, 0x22, 0xc1, 0x71, 0x63, 0xb2, + 0xe0, 0x50, 0xdd, 0x2d, 0x28, 0x2c, 0x17, 0x02, 0x54, 0xa7, 0x02, 0x01, 0x79, 0x06, 0x47, 0x08, + 0x1a, 0xbe, 0x8f, 0xe0, 0x4c, 0xa6, 0x60, 0xe7, 0xa7, 0x6b, 0x7c, 0x8f, 0x10, 0x1b, 0x8e, 0xe6, + 0xf8, 0xef, 0x9d, 0x21, 0x1a, 0x25, 0x1f, 0xb9, 0xce, 0xd0, 0x1d, 0x92, 0xd9, 0x82, 0x8c, 0x92, + 0x02, 0xa6, 0x5a, 0x2d, 0xba, 0xc9, 0x5d, 0x8c, 0x6e, 0x52, 0xd9, 0x36, 0x9c, 0x16, 0xd2, 0x45, + 0x9c, 0x3e, 0x6d, 0xba, 0x7d, 0x4d, 0x66, 0x85, 0x43, 0x12, 0x3c, 0x97, 0x8b, 0x93, 0xa8, 0xa0, + 0x36, 0x57, 0xf7, 0xd2, 0x20, 0xae, 0xbc, 0x9d, 0xcd, 0xc6, 0x66, 0x1b, 0xb0, 0x20, 0x98, 0x0b, + 0xc3, 0xad, 0x70, 0x9b, 0xb9, 0x3e, 0xf5, 0x0b, 0x65, 0x7c, 0xa6, 0x17, 0x44, 0xff, 0xb3, 0xe7, + 0x61, 0x09, 0x3d, 0x14, 0xed, 0x03, 0xd5, 0x2b, 0xc8, 0x5c, 0x44, 0x20, 0x79, 0x03, 0x19, 0xff, + 0x41, 0x93, 0x4d, 0x4d, 0x5c, 0x19, 0xf1, 0x1d, 0x38, 0x70, 0xfb, 0xd2, 0x33, 0x6a, 0xde, 0xa4, + 0x5f, 0x4f, 0xa9, 0x15, 0xb0, 0x77, 0x60, 0x91, 0xb3, 0xdd, 0x1b, 0xf5, 0xc5, 0xce, 0x9c, 0x4f, + 0x84, 0x0b, 0xdd, 0x16, 0x45, 0x7c, 0xd8, 0xb6, 0x4e, 0x99, 0x0b, 0x07, 0xf1, 0x4f, 0xf6, 0x1a, + 0xcc, 0x07, 0x07, 0xe1, 0x40, 0xdd, 0xcf, 0xe5, 0xf5, 0xb9, 0xb5, 0xdd, 0x6e, 0x11, 0x49, 0x91, + 0xe3, 0xc4, 0xf6, 0xcc, 0x8d, 0x59, 0x71, 0x81, 0x6e, 0xbc, 0x02, 0x0b, 0x0a, 0x6f, 0xde, 0x18, + 0xf1, 0xa8, 0x5d, 0x36, 0x46, 0xfc, 0xa2, 0xc1, 0x7e, 0x04, 0x45, 0xc9, 0x92, 0x31, 0x28, 0xec, + 0xfb, 0x81, 0xd4, 0x87, 0xf0, 0x7f, 0x0e, 0x43, 0x03, 0x07, 0x6f, 0xe4, 0x8c, 0x89, 0xff, 0xe3, + 0x11, 0x0f, 0xef, 0x6c, 0x30, 0xf4, 0x3c, 0x3e, 0x64, 0x88, 0x2c, 0x8b, 0x1c, 0xde, 0xee, 0x05, + 0xe2, 0x79, 0x83, 0xb4, 0x71, 0x46, 0x67, 0xe3, 0xd4, 0x1d, 0xdb, 0x24, 0xf5, 0x38, 0x71, 0x92, + 0xcb, 0x8d, 0x9f, 0xe4, 0x44, 0x18, 0x48, 0xa2, 0x14, 0x5f, 0x06, 0x84, 0x89, 0x93, 0x5c, 0xac, + 0x40, 0x15, 0x12, 0x0a, 0x94, 0x72, 0x6b, 0x12, 0x8f, 0x9e, 0x38, 0x08, 0xca, 0x5b, 0x93, 0xb4, + 0x4a, 0xf7, 0x2b, 0xd1, 0x0c, 0x49, 0xdc, 0xf2, 0xb1, 0x5b, 0x70, 0x46, 0x58, 0x0d, 0x45, 0xae, + 0xbe, 0xb4, 0x2e, 0x79, 0x1a, 0x0b, 0x45, 0xa2, 0xda, 0x48, 0xa7, 0x3c, 0xfe, 0x56, 0x80, 0xbd, + 0x01, 0x6b, 0x5e, 0x3f, 0x70, 0x3b, 0xa3, 0xa1, 0x6b, 0x07, 0x8f, 0xbd, 0x81, 0xc8, 0x1a, 0x7d, + 0x44, 0xf6, 0x3c, 0x26, 0xcb, 0xac, 0xc7, 0xde, 0x00, 0x33, 0x48, 0xcb, 0x1e, 0xfe, 0xd5, 0x9c, + 0xbc, 0x6b, 0xda, 0xf0, 0xfd, 0x30, 0x08, 0x87, 0xce, 0x20, 0xe1, 0xc7, 0xc0, 0x0e, 0xe0, 0x02, + 0x56, 0xe9, 0x16, 0x26, 0x27, 0xf4, 0x87, 0xf2, 0x6e, 0x2e, 0x5a, 0x60, 0x0b, 0xb7, 0x5e, 0x4f, + 0xda, 0x69, 0x4b, 0x1c, 0xbb, 0xa4, 0x22, 0xf3, 0x75, 0xa5, 0x70, 0xdd, 0x3a, 0x65, 0x9e, 0x13, + 0x3c, 0xc7, 0xb0, 0xd8, 0x56, 0x86, 0xac, 0x49, 0x3b, 0x32, 0x6c, 0xc4, 0x82, 0x27, 0xc9, 0x55, + 0x15, 0x49, 0xec, 0x03, 0x98, 0xf7, 0xba, 0x32, 0x1b, 0x64, 0x3e, 0xe3, 0x0a, 0xbd, 0xd6, 0x15, + 0x49, 0x7b, 0x62, 0x1e, 0x7c, 0x69, 0x78, 0x04, 0xdd, 0x58, 0x4a, 0x68, 0x38, 0xc6, 0x96, 0xbc, + 0xd6, 0x18, 0x27, 0x63, 0xcb, 0xf1, 0xde, 0x87, 0xfb, 0x1c, 0x4a, 0x01, 0x25, 0x0b, 0x25, 0xfd, + 0xa2, 0x2e, 0xff, 0x61, 0x78, 0xe9, 0xa4, 0x3d, 0xc5, 0xe5, 0xc6, 0x84, 0x6e, 0x9f, 0x17, 0x29, + 0x03, 0x92, 0xbd, 0x77, 0x1d, 0xd4, 0x54, 0x27, 0x9e, 0x9c, 0x28, 0x12, 0xb6, 0x33, 0xf4, 0x8c, + 0xbf, 0xc8, 0xc3, 0x72, 0xd2, 0xd3, 0x85, 0xbd, 0x02, 0x05, 0x45, 0x5c, 0x9e, 0xcb, 0x70, 0x87, + 0x41, 0x21, 0x89, 0x48, 0x27, 0x12, 0x8f, 0xec, 0x2e, 0x2c, 0xe3, 0x63, 0x1d, 0x54, 0xe3, 0x42, + 0x8f, 0x6e, 0x71, 0x4f, 0x7a, 0x3f, 0xbb, 0xc8, 0x69, 0xf9, 0xf6, 0xc8, 0x0b, 0x15, 0x47, 0x86, + 0xc2, 0x64, 0x47, 0x06, 0x6a, 0xca, 0x04, 0x47, 0x86, 0x99, 0x29, 0x8e, 0x0c, 0x31, 0xa5, 0xea, + 0xc8, 0x80, 0xee, 0x2c, 0x73, 0x93, 0xdc, 0x59, 0x62, 0x1a, 0xe1, 0xce, 0x12, 0x3b, 0x22, 0x14, + 0x27, 0x3a, 0x22, 0xc4, 0x34, 0xe4, 0x88, 0x10, 0xbb, 0x06, 0xcc, 0x4f, 0x74, 0x0d, 0x50, 0x88, + 0x84, 0x6b, 0xc0, 0x0b, 0xd4, 0xb1, 0x43, 0xe7, 0xd0, 0xc6, 0x1e, 0xa7, 0xf3, 0x11, 0x76, 0x99, + 0xe9, 0x1c, 0xa2, 0x53, 0x3d, 0x57, 0x4f, 0xc8, 0x13, 0xdf, 0xf8, 0xad, 0x94, 0x18, 0x92, 0x63, + 0xfe, 0x22, 0x2c, 0x8b, 0xdd, 0x98, 0x52, 0x51, 0x88, 0xed, 0x78, 0xc9, 0x5c, 0x92, 0x50, 0x71, + 0x9b, 0xf0, 0x7d, 0xb0, 0x12, 0xa1, 0x91, 0x41, 0x1d, 0xa3, 0x84, 0x98, 0x11, 0x35, 0x99, 0xd2, + 0x55, 0x7e, 0x43, 0x0a, 0xa8, 0x99, 0xe0, 0x27, 0xec, 0xd1, 0xaf, 0x02, 0x8b, 0xd1, 0xa2, 0x77, + 0x49, 0x05, 0x44, 0x5d, 0x8d, 0x50, 0xa3, 0xc7, 0x43, 0xbf, 0xa0, 0xa5, 0xee, 0xd2, 0xbf, 0x57, + 0xd5, 0x7f, 0x05, 0xa2, 0xaf, 0xdb, 0x74, 0x1f, 0x2a, 0x5b, 0xa0, 0xcb, 0x82, 0x16, 0xc1, 0x8d, + 0xbd, 0xb4, 0xc1, 0xf6, 0x7b, 0x54, 0x2b, 0xe3, 0x57, 0x0b, 0x89, 0x2b, 0x3e, 0xf9, 0x19, 0xae, + 0xe5, 0x04, 0xbe, 0x4d, 0x43, 0x4c, 0x42, 0xf8, 0xfa, 0x84, 0x69, 0x4a, 0x2f, 0x31, 0x2c, 0xab, + 0x69, 0x42, 0x10, 0xf8, 0xf2, 0x61, 0x86, 0x2d, 0x8c, 0x5b, 0xca, 0xa9, 0x4f, 0xb2, 0x13, 0x12, + 0x77, 0x7d, 0x3a, 0x3b, 0x79, 0x87, 0xc2, 0x57, 0x29, 0x1a, 0xb9, 0xa2, 0x5f, 0xf2, 0x03, 0x3b, + 0x80, 0xd7, 0xf2, 0x41, 0x92, 0x79, 0x96, 0x29, 0x68, 0x8c, 0x39, 0xf6, 0x12, 0x72, 0xc6, 0x0b, + 0x96, 0x40, 0x65, 0x5b, 0x85, 0x45, 0xbc, 0x40, 0x93, 0x0c, 0x0b, 0x19, 0x8e, 0x43, 0xe3, 0x8d, + 0x2f, 0xd7, 0xb6, 0xcd, 0x05, 0x4e, 0x27, 0xd9, 0xec, 0x27, 0x8c, 0xae, 0xa9, 0x4a, 0xce, 0xc8, + 0x04, 0x32, 0x53, 0x7b, 0x20, 0xbe, 0x1d, 0xc3, 0xaa, 0x2a, 0xd6, 0xd7, 0x44, 0x85, 0x3b, 0x70, + 0x61, 0xec, 0xd2, 0x27, 0xfa, 0x92, 0x70, 0x64, 0x7b, 0x69, 0xc2, 0x97, 0x52, 0xb7, 0x41, 0xee, + 0xd0, 0x3c, 0x1b, 0x24, 0x41, 0xf4, 0x11, 0x7c, 0xf9, 0x34, 0x79, 0xe0, 0xa7, 0xa4, 0x36, 0x8e, + 0xd5, 0xa8, 0x9c, 0xaa, 0x46, 0xa9, 0x57, 0x6d, 0xf9, 0xe4, 0x55, 0xdb, 0x26, 0x5c, 0xe3, 0x32, + 0x8f, 0x66, 0x8e, 0xfb, 0xa9, 0x3b, 0x3c, 0xf2, 0xfb, 0x18, 0x75, 0x74, 0x10, 0x2d, 0x7d, 0x71, + 0x37, 0x78, 0x99, 0xe3, 0xe1, 0xbc, 0xa8, 0x12, 0xd6, 0x36, 0x22, 0x89, 0x68, 0xba, 0xff, 0x34, + 0x0f, 0xcf, 0x9f, 0x60, 0x72, 0x4d, 0xa9, 0xfb, 0x57, 0x92, 0xca, 0x7e, 0x2e, 0x61, 0xfe, 0xe7, + 0x4c, 0x63, 0x73, 0xf7, 0x04, 0x55, 0xff, 0x87, 0x60, 0x45, 0x6c, 0x53, 0xe2, 0xe9, 0xd7, 0xee, + 0xa8, 0x77, 0x82, 0x7d, 0xea, 0x92, 0x0c, 0x6c, 0x91, 0x22, 0xc5, 0xad, 0x0b, 0xa5, 0xb3, 0x15, + 0xc1, 0x58, 0x1b, 0x16, 0x10, 0x6d, 0xd7, 0xf1, 0x7a, 0x27, 0x8a, 0xb0, 0x20, 0xc3, 0x66, 0xa8, + 0x64, 0xe2, 0x89, 0x2b, 0x07, 0x6c, 0xe2, 0x6f, 0x76, 0x03, 0x56, 0xfa, 0xa3, 0x03, 0xae, 0xc6, + 0x8a, 0x99, 0x4b, 0x1e, 0xf6, 0x33, 0xe6, 0x52, 0x7f, 0x74, 0x50, 0x1a, 0x0c, 0x70, 0x02, 0xa2, + 0x2b, 0xfe, 0x2a, 0xc7, 0xa3, 0x8c, 0xe1, 0x84, 0x39, 0x8b, 0x98, 0x9c, 0x81, 0x90, 0x32, 0x84, + 0xbb, 0x06, 0xe2, 0x61, 0x16, 0xa5, 0x88, 0x16, 0x3f, 0x8c, 0xff, 0x91, 0x93, 0x86, 0xf2, 0xc9, + 0xab, 0xf4, 0xef, 0x87, 0x28, 0x63, 0x88, 0x5e, 0x02, 0x9d, 0x77, 0x7d, 0x2c, 0x02, 0xa3, 0x31, + 0x5a, 0xee, 0x8f, 0x0e, 0xa2, 0xbe, 0x53, 0x3b, 0x7e, 0x56, 0xed, 0xf8, 0x77, 0xa4, 0x21, 0x3a, + 0x53, 0x98, 0x4d, 0xee, 0x72, 0xae, 0xdf, 0xdd, 0x38, 0x99, 0xc8, 0xfa, 0xfb, 0x71, 0xcb, 0x18, + 0xb7, 0x94, 0x17, 0xc2, 0xcc, 0x98, 0x17, 0x42, 0xc6, 0xda, 0x9b, 0xcd, 0x5a, 0x7b, 0x63, 0x3e, + 0x0f, 0x73, 0x19, 0x3e, 0x0f, 0x99, 0x0b, 0xb4, 0x78, 0xcc, 0x02, 0x9d, 0x57, 0xe7, 0xc9, 0xef, + 0xe7, 0xe0, 0xfa, 0xb1, 0xfb, 0xc6, 0xdf, 0x8f, 0x74, 0xc6, 0x48, 0x67, 0xf7, 0xe7, 0x5f, 0xe4, + 0xa4, 0xbe, 0x9c, 0x3c, 0x06, 0x7f, 0x04, 0xa7, 0xe5, 0x31, 0x58, 0xe8, 0x0d, 0xb1, 0x6b, 0xd0, + 0xc2, 0xad, 0x97, 0xb3, 0x0e, 0xc0, 0x88, 0x96, 0x71, 0x48, 0x5d, 0xa5, 0xa3, 0x6f, 0x5c, 0xfe, + 0x7f, 0xcf, 0xa1, 0x97, 0x3d, 0x84, 0xb3, 0x98, 0x44, 0xae, 0xa3, 0x3a, 0x35, 0xd9, 0x43, 0x77, + 0x97, 0x7a, 0xfd, 0xfa, 0xd8, 0xe1, 0xd0, 0xeb, 0x28, 0xd5, 0x31, 0xdd, 0xdd, 0xad, 0x53, 0xe6, + 0x5a, 0x90, 0x01, 0x27, 0x53, 0x53, 0xea, 0x54, 0xfd, 0x2f, 0x35, 0x30, 0x8e, 0xef, 0x35, 0x34, + 0x80, 0xa4, 0xbb, 0x7d, 0xde, 0x5c, 0x70, 0x94, 0x3e, 0x7c, 0x1e, 0x96, 0x86, 0xee, 0xee, 0xd0, + 0x0d, 0xf6, 0x13, 0x56, 0xca, 0x45, 0x02, 0xca, 0xee, 0x91, 0xf9, 0x2c, 0x9e, 0xea, 0x40, 0x2a, + 0x89, 0x22, 0x77, 0xe1, 0xcb, 0xd3, 0xc6, 0x84, 0xcf, 0x2c, 0xb5, 0x9a, 0xe2, 0x47, 0xe4, 0x9a, + 0x96, 0xd3, 0xf3, 0x26, 0x65, 0xe0, 0xd8, 0xf5, 0x7a, 0xae, 0xf1, 0x9b, 0x91, 0xee, 0x96, 0xd5, + 0x9d, 0xec, 0x23, 0xe5, 0x49, 0x6a, 0x7e, 0x4c, 0x2d, 0xcd, 0x22, 0x39, 0x89, 0x39, 0xb9, 0xfe, + 0x39, 0x99, 0x93, 0x6f, 0xcb, 0x77, 0x2d, 0x7c, 0x57, 0xb9, 0x7f, 0x93, 0xbd, 0x0c, 0x73, 0xe2, + 0x29, 0x8b, 0xac, 0xee, 0x4a, 0xa2, 0xba, 0xf7, 0x6f, 0x9a, 0xb2, 0xdc, 0xf8, 0x56, 0xe4, 0x84, + 0x37, 0xd6, 0x88, 0xfb, 0x37, 0xd9, 0x3b, 0x27, 0x7b, 0x62, 0x5a, 0x94, 0x4f, 0x4c, 0xa3, 0xe7, + 0xa5, 0xef, 0x26, 0x9e, 0x97, 0xbe, 0x30, 0xbd, 0xb7, 0xc8, 0xbf, 0x53, 0x64, 0x35, 0x88, 0x42, + 0x53, 0x1b, 0xdf, 0xcc, 0xc3, 0x73, 0x53, 0x29, 0xd8, 0x65, 0x28, 0x96, 0x5a, 0xb5, 0x76, 0x3c, + 0xca, 0x7c, 0x15, 0x49, 0x08, 0xbb, 0x03, 0xf3, 0x1b, 0x4e, 0xe0, 0x75, 0xf8, 0x94, 0xce, 0xf4, + 0xb2, 0x19, 0x63, 0x1b, 0xa1, 0x6f, 0x9d, 0x32, 0x63, 0x5a, 0x66, 0xc3, 0x2a, 0xae, 0x8b, 0x44, + 0x2a, 0xea, 0x7c, 0x86, 0xd1, 0x6d, 0x8c, 0xe1, 0x18, 0x19, 0x97, 0x3c, 0x63, 0x40, 0xf6, 0x08, + 0x98, 0x65, 0x6d, 0x95, 0xdd, 0x61, 0x48, 0x66, 0xa8, 0xd0, 0x8b, 0xde, 0x2b, 0xbe, 0x71, 0x4c, + 0xdf, 0x8d, 0xd1, 0x6d, 0x9d, 0x32, 0x33, 0xb8, 0xb1, 0xeb, 0xa0, 0xe6, 0x4c, 0x47, 0x2d, 0x68, + 0x71, 0xeb, 0x94, 0x09, 0x83, 0x28, 0x77, 0x7a, 0xb6, 0x6c, 0xf8, 0x61, 0xa9, 0x7a, 0x4e, 0xee, + 0xad, 0xa7, 0x48, 0x2d, 0xf3, 0x12, 0x14, 0x5b, 0xd2, 0x0d, 0x5c, 0x79, 0x20, 0x2e, 0x5d, 0xbe, + 0xcd, 0xa8, 0x94, 0x66, 0xf6, 0xcf, 0x6b, 0xd2, 0x4c, 0x77, 0x7c, 0xdf, 0x2a, 0x89, 0xc5, 0xbb, + 0xd3, 0x13, 0x8b, 0x77, 0xbf, 0xcb, 0xc4, 0xe2, 0x54, 0x29, 0x1f, 0x5e, 0x3e, 0xf1, 0x68, 0xb0, + 0xf7, 0x40, 0xc7, 0xc4, 0xcb, 0x8e, 0x32, 0xb2, 0xc9, 0x78, 0xea, 0x22, 0x5e, 0x68, 0xcb, 0xf1, + 0x86, 0xe6, 0x4a, 0x27, 0x49, 0x4d, 0x1f, 0xfc, 0x35, 0xca, 0x3a, 0x57, 0xeb, 0xb6, 0x52, 0x57, + 0xef, 0xcf, 0x1a, 0x65, 0xa0, 0x9a, 0x58, 0xa7, 0x72, 0xaf, 0xcb, 0xfe, 0xd6, 0xe4, 0x60, 0x03, + 0xca, 0xa2, 0xfd, 0x47, 0x79, 0xb8, 0x3c, 0x8d, 0x9c, 0x95, 0x40, 0xaf, 0x8a, 0xc8, 0xa5, 0xf4, + 0xbe, 0xd3, 0x1f, 0xaa, 0x59, 0x50, 0x45, 0x54, 0x53, 0xbb, 0x1b, 0x15, 0x9a, 0x63, 0xe8, 0x7c, + 0x9c, 0x05, 0x2c, 0x7a, 0x42, 0x8f, 0xe3, 0x4c, 0xa4, 0x7c, 0x9c, 0x65, 0x31, 0x7b, 0x1e, 0x66, + 0x4b, 0x65, 0x2b, 0x4e, 0x02, 0x8f, 0x6f, 0x5d, 0x9d, 0x4e, 0x80, 0xaf, 0x28, 0xa9, 0x88, 0xfd, + 0x20, 0xe8, 0xe9, 0x6c, 0x8f, 0x94, 0xfd, 0xfd, 0x92, 0xd2, 0x21, 0x63, 0x09, 0x21, 0xb1, 0xbe, + 0x71, 0x02, 0x43, 0xca, 0x09, 0x66, 0x8e, 0xf1, 0x62, 0x06, 0xcc, 0xb6, 0x86, 0x6e, 0xe0, 0x86, + 0xea, 0x3b, 0xd4, 0x01, 0x42, 0x4c, 0x2a, 0xa1, 0x57, 0xa2, 0xce, 0x91, 0x88, 0x22, 0x38, 0xab, + 0x46, 0x8b, 0xc5, 0x67, 0xa5, 0x1c, 0x6c, 0x2a, 0x28, 0x9c, 0xa0, 0xee, 0x8c, 0xfa, 0x9d, 0xfd, + 0x1d, 0xb3, 0x4e, 0x6a, 0xad, 0x20, 0xe8, 0x21, 0x94, 0x37, 0x30, 0x30, 0x15, 0x14, 0xe3, 0xff, + 0xd7, 0x60, 0x2d, 0xab, 0x1d, 0xc7, 0x78, 0xed, 0xbc, 0x01, 0x0b, 0x78, 0x43, 0xbb, 0xeb, 0x0f, + 0x0f, 0x9c, 0x50, 0x7d, 0xad, 0xab, 0x80, 0x4d, 0xbc, 0x51, 0xde, 0xc4, 0xff, 0xd9, 0x55, 0xb9, + 0x5b, 0x29, 0xb9, 0x5c, 0x10, 0x40, 0x1b, 0x97, 0x51, 0x02, 0xa8, 0x75, 0x5b, 0xcd, 0x81, 0x48, + 0x48, 0xf8, 0x26, 0x14, 0x78, 0xb5, 0x52, 0xb3, 0x97, 0xcf, 0x9f, 0xd2, 0x76, 0x9d, 0x90, 0x44, + 0xad, 0x02, 0xe7, 0xa0, 0x67, 0x22, 0xb2, 0xf1, 0x00, 0x96, 0x93, 0x18, 0xac, 0x9a, 0xcc, 0x49, + 0xb3, 0x70, 0x4b, 0x27, 0x4e, 0x1b, 0xbe, 0x2f, 0x22, 0x46, 0x6c, 0x5c, 0xf8, 0xa3, 0xcf, 0xae, + 0x02, 0xff, 0x29, 0x68, 0xb2, 0x72, 0xd6, 0x18, 0x3f, 0x93, 0x83, 0xb5, 0x38, 0xaa, 0x9d, 0x5c, + 0x43, 0x7f, 0x6b, 0x23, 0x26, 0x95, 0x12, 0x11, 0x7d, 0xa4, 0x12, 0x3a, 0xde, 0xc0, 0x29, 0x81, + 0x44, 0xee, 0xc0, 0xf9, 0x49, 0xf8, 0xec, 0x15, 0x98, 0xc7, 0xe0, 0xca, 0x03, 0xa7, 0xe3, 0xaa, + 0x22, 0xb7, 0x2f, 0x81, 0x66, 0x5c, 0x6e, 0xfc, 0xbe, 0x06, 0x17, 0x29, 0xce, 0xc1, 0xb6, 0xe3, + 0xf5, 0xf1, 0x42, 0xb0, 0xe3, 0x7e, 0x3e, 0x11, 0xbf, 0xee, 0x24, 0xe4, 0xd8, 0x8b, 0xc9, 0x70, + 0x16, 0x63, 0x5f, 0x9b, 0xdc, 0x5a, 0xf6, 0x32, 0x06, 0x0c, 0x27, 0x3f, 0xd6, 0x82, 0x08, 0xc9, + 0xd8, 0xe7, 0x00, 0x35, 0x24, 0x23, 0x62, 0x18, 0x3f, 0x02, 0x57, 0xa6, 0x7f, 0x80, 0x7d, 0x1d, + 0x96, 0x30, 0x83, 0xf8, 0xce, 0x60, 0x6f, 0xe8, 0x74, 0x5d, 0x69, 0x24, 0x96, 0x77, 0x19, 0x6a, + 0x99, 0x88, 0x7f, 0x4e, 0x21, 0x02, 0xf7, 0x30, 0x37, 0x39, 0x11, 0x25, 0x82, 0x89, 0xa8, 0xdc, + 0x8c, 0x1f, 0xd5, 0x80, 0x8d, 0xf3, 0x60, 0x6f, 0xc3, 0xe2, 0x4e, 0xbb, 0x6c, 0x85, 0xce, 0x30, + 0xdc, 0xf2, 0x47, 0x43, 0x0a, 0x3e, 0x2e, 0x22, 0xc6, 0x85, 0x1d, 0x5b, 0x5c, 0xfd, 0xee, 0xfb, + 0xa3, 0xa1, 0x99, 0xc0, 0xc3, 0x2c, 0xd3, 0xae, 0xfb, 0xb8, 0xeb, 0x1c, 0x25, 0xb3, 0x4c, 0x13, + 0x2c, 0x91, 0x65, 0x9a, 0x60, 0xc6, 0xaf, 0x68, 0x70, 0x49, 0xbe, 0x54, 0xeb, 0x66, 0xd4, 0xa5, + 0x8c, 0x71, 0x51, 0x87, 0x32, 0xd3, 0xcf, 0x34, 0x45, 0x7f, 0x55, 0x86, 0x0e, 0xc6, 0x0a, 0xa2, + 0xc6, 0x2f, 0x68, 0xd9, 0x57, 0xa0, 0x60, 0x85, 0xfe, 0xe0, 0x04, 0xb1, 0x83, 0xf5, 0x68, 0x44, + 0x43, 0x7f, 0x80, 0x2c, 0x90, 0xd2, 0x70, 0x61, 0x4d, 0xad, 0x9c, 0xac, 0x31, 0xdb, 0x86, 0x39, + 0x0a, 0x3c, 0x9f, 0xf2, 0x26, 0x9d, 0xd2, 0xa6, 0x8d, 0x15, 0x19, 0xa0, 0x98, 0x72, 0xd2, 0x98, + 0x92, 0x87, 0xf1, 0xd3, 0x1a, 0x2c, 0x70, 0x55, 0x07, 0x2d, 0x06, 0xcf, 0x3a, 0xa5, 0x93, 0x2a, + 0xb4, 0x74, 0x64, 0x8f, 0xd8, 0x9f, 0x68, 0x37, 0x7e, 0x0b, 0x56, 0x52, 0x04, 0xcc, 0xc0, 0xd0, + 0x94, 0x3d, 0xaf, 0xe3, 0x88, 0xa4, 0xb5, 0xc2, 0x09, 0x3c, 0x01, 0x33, 0x7e, 0x52, 0x83, 0xb5, + 0xe6, 0xe3, 0xd0, 0x11, 0x1e, 0x1a, 0xe6, 0xa8, 0x27, 0xd7, 0x3b, 0x57, 0xdf, 0xe4, 0x93, 0x47, + 0x11, 0x05, 0x4f, 0xa8, 0x6f, 0x04, 0x33, 0xa3, 0x52, 0xb6, 0x05, 0x45, 0xda, 0x5f, 0x02, 0x4a, + 0xb1, 0x72, 0x45, 0x31, 0x67, 0xc4, 0x8c, 0x09, 0x89, 0xb7, 0x04, 0x45, 0x18, 0xd1, 0x98, 0x11, + 0xb5, 0xf1, 0x97, 0x1a, 0x9c, 0x9b, 0x40, 0xc3, 0xde, 0x87, 0x19, 0x8c, 0xd0, 0x43, 0xa3, 0x77, + 0x79, 0xc2, 0x27, 0xc2, 0xce, 0xfe, 0xfd, 0x9b, 0x62, 0x23, 0x3a, 0xe0, 0x3f, 0x4c, 0x41, 0xc5, + 0x3e, 0x82, 0xf9, 0x52, 0xb7, 0x4b, 0x07, 0xbb, 0x5c, 0xe2, 0x60, 0x37, 0xe1, 0x8b, 0xaf, 0x45, + 0xf8, 0xe2, 0x60, 0x27, 0x62, 0x45, 0x74, 0xbb, 0x36, 0x45, 0x1f, 0x8a, 0xf9, 0x5d, 0x7c, 0x0f, + 0x96, 0x93, 0xc8, 0x4f, 0x15, 0x30, 0xe5, 0x5b, 0x1a, 0xe8, 0xc9, 0x3a, 0x7c, 0x6f, 0x42, 0x2b, + 0x67, 0x0d, 0xf3, 0x31, 0x93, 0xea, 0xe7, 0x72, 0x70, 0x26, 0xb3, 0x87, 0xd9, 0xab, 0x30, 0x5b, + 0x1a, 0x0c, 0x6a, 0x15, 0x9a, 0x55, 0xa4, 0x21, 0xe1, 0xcd, 0x46, 0xe2, 0xdc, 0x2b, 0x90, 0xd8, + 0x9b, 0x50, 0x14, 0x8e, 0x40, 0x15, 0x29, 0x70, 0x30, 0x56, 0x2c, 0x79, 0x29, 0x25, 0x93, 0x9d, + 0x48, 0x44, 0xb6, 0x09, 0xcb, 0x14, 0x65, 0x15, 0xbd, 0xc2, 0xa2, 0x9c, 0x81, 0xe8, 0x48, 0x27, + 0xaf, 0x4b, 0x84, 0x3f, 0x59, 0x42, 0x76, 0xa6, 0xa8, 0x58, 0x1d, 0x74, 0xe4, 0xa9, 0x72, 0x12, + 0x19, 0x57, 0x14, 0x47, 0xcc, 0x09, 0xbc, 0xc6, 0x28, 0xa3, 0xe1, 0x8a, 0x1f, 0xdf, 0x7c, 0xef, + 0x86, 0x2b, 0xfe, 0xc6, 0x89, 0x86, 0xeb, 0x17, 0x0b, 0x62, 0x31, 0xa7, 0xc9, 0xb8, 0x46, 0xa3, + 0xa4, 0x08, 0x43, 0x8d, 0x86, 0x9f, 0xd8, 0x28, 0x8e, 0x68, 0x05, 0xe6, 0xda, 0x94, 0xfe, 0x49, + 0xac, 0x8c, 0xe7, 0x32, 0xab, 0x20, 0x70, 0xee, 0xdf, 0x14, 0xea, 0x0b, 0xa5, 0x83, 0x32, 0x25, + 0x29, 0xbb, 0x0f, 0x0b, 0xe5, 0x9e, 0xeb, 0xf4, 0x47, 0x83, 0xf6, 0xc9, 0xfc, 0x0f, 0xce, 0x53, + 0x5b, 0x16, 0x3b, 0x82, 0x0c, 0xfd, 0x16, 0x50, 0x92, 0xab, 0x8c, 0x58, 0x3b, 0x8a, 0x1e, 0x52, + 0x40, 0x5b, 0xe9, 0x1b, 0x53, 0xfa, 0x27, 0x0d, 0x44, 0xba, 0x64, 0x68, 0x1c, 0x0a, 0x2f, 0x62, + 0xc3, 0x72, 0xdd, 0x09, 0xc2, 0xf6, 0xd0, 0xe9, 0x07, 0x98, 0x6b, 0xe2, 0x04, 0x71, 0xb3, 0x2f, + 0x51, 0x85, 0x85, 0x0d, 0x35, 0x8c, 0x48, 0x85, 0x0d, 0x35, 0xc9, 0x8e, 0xeb, 0x4b, 0x9b, 0x5e, + 0xdf, 0xe9, 0x79, 0xdf, 0x90, 0x41, 0x96, 0x84, 0xbe, 0xb4, 0x2b, 0x81, 0x66, 0x5c, 0x6e, 0xfc, + 0xc0, 0xd8, 0xb8, 0x89, 0x5a, 0x2e, 0xc0, 0x1c, 0x85, 0xe0, 0x13, 0x21, 0xe9, 0x5a, 0xd5, 0x46, + 0xa5, 0xd6, 0xb8, 0xa3, 0x6b, 0x6c, 0x19, 0xa0, 0x65, 0x36, 0xcb, 0x55, 0xcb, 0xe2, 0xbf, 0x73, + 0xfc, 0x37, 0xc5, 0xab, 0xdb, 0xdc, 0xa9, 0xeb, 0x79, 0x25, 0x64, 0x5d, 0xc1, 0xf8, 0x3d, 0x0d, + 0xce, 0x66, 0x0f, 0x25, 0x6b, 0x93, 0xa3, 0xbe, 0xf0, 0x44, 0x79, 0x7b, 0xea, 0xb8, 0x67, 0x82, + 0xd3, 0xc1, 0x0f, 0x43, 0x11, 0x54, 0x2f, 0x27, 0x2f, 0x38, 0x45, 0x94, 0x1e, 0xaf, 0x6b, 0xe6, + 0xbc, 0xae, 0x51, 0x86, 0xf3, 0x93, 0x78, 0x24, 0x9b, 0xba, 0x02, 0x0b, 0xa5, 0x56, 0xab, 0x5e, + 0x2b, 0x97, 0xda, 0xb5, 0x66, 0x43, 0xd7, 0xd8, 0x3c, 0xcc, 0xdc, 0x31, 0x9b, 0x3b, 0x2d, 0x3d, + 0x67, 0xfc, 0xa1, 0x06, 0x4b, 0xb5, 0xd8, 0x53, 0xf6, 0x59, 0x17, 0xdf, 0x97, 0x12, 0x8b, 0xef, + 0x7c, 0x14, 0xde, 0x33, 0xfa, 0xc0, 0x14, 0x0d, 0x72, 0x23, 0x8a, 0xc1, 0x94, 0x4f, 0x78, 0x94, + 0xa8, 0xd4, 0x32, 0xba, 0x4d, 0x94, 0xe6, 0x30, 0x19, 0xa3, 0x49, 0x59, 0xbd, 0xff, 0x3c, 0x0f, + 0xab, 0x63, 0xdf, 0x65, 0x16, 0xcc, 0x95, 0x1e, 0x58, 0xcd, 0x5a, 0xa5, 0x4c, 0xad, 0xbb, 0x1a, + 0x7b, 0x57, 0x62, 0xd6, 0xee, 0xb1, 0x9a, 0x8a, 0xb0, 0x5a, 0x87, 0x81, 0xed, 0x7b, 0xdd, 0x4e, + 0xc2, 0xbd, 0x57, 0x72, 0xc2, 0xdd, 0xf0, 0x1b, 0xa3, 0x21, 0x7a, 0x2c, 0x53, 0xcb, 0x23, 0xa7, + 0x4d, 0x09, 0x1f, 0x67, 0x8c, 0x3e, 0xbc, 0x0e, 0x2f, 0x1f, 0x67, 0x1d, 0xf3, 0x63, 0x0d, 0x98, + 0xbd, 0xe3, 0x85, 0x5b, 0xa3, 0x47, 0xd4, 0x2b, 0x57, 0xe2, 0x1c, 0xce, 0x5b, 0xa3, 0x47, 0xe3, + 0x6c, 0xd1, 0x62, 0x2a, 0x42, 0x6a, 0x24, 0x58, 0x12, 0x17, 0x76, 0x0f, 0x66, 0x4a, 0x0f, 0x2c, + 0xb3, 0x44, 0x2b, 0x54, 0xf1, 0x5f, 0x35, 0x4b, 0x13, 0xb8, 0xf1, 0xd6, 0x0f, 0x9d, 0x04, 0x37, + 0xc1, 0x23, 0x1d, 0x56, 0xa8, 0xf0, 0x54, 0x61, 0x85, 0x36, 0x96, 0x60, 0x81, 0x0e, 0x75, 0x78, + 0x5e, 0x7a, 0x02, 0xa7, 0x33, 0x86, 0x9a, 0x39, 0xe8, 0x25, 0x8f, 0xb7, 0xee, 0xa5, 0xfe, 0xd1, + 0xe1, 0xbe, 0x3b, 0x74, 0xc7, 0xc7, 0x2e, 0x59, 0x77, 0x39, 0x4b, 0x32, 0x6b, 0x6f, 0x8e, 0xb1, + 0x33, 0x7e, 0x47, 0x83, 0xf3, 0x93, 0x26, 0x00, 0x3f, 0xa1, 0x26, 0x03, 0x17, 0x9e, 0x8d, 0x72, + 0x95, 0x26, 0xbd, 0xdb, 0x25, 0x1a, 0xfb, 0x10, 0x16, 0x84, 0x07, 0xa4, 0xf5, 0xe6, 0x8e, 0x59, + 0xa3, 0x95, 0xfb, 0xdc, 0x9f, 0x7f, 0x76, 0xf5, 0x1c, 0x39, 0x4d, 0x06, 0x6f, 0xda, 0xa3, 0xa1, + 0x17, 0x93, 0x9e, 0xd7, 0x4c, 0x95, 0x82, 0x1f, 0x28, 0x9c, 0x51, 0xd7, 0x73, 0xe5, 0x71, 0x4a, + 0x06, 0x77, 0x23, 0x98, 0xba, 0xbd, 0x4b, 0x98, 0xf1, 0x13, 0x1a, 0x5c, 0x9c, 0x3c, 0xdb, 0xb8, + 0xca, 0xd0, 0x16, 0x8e, 0xa4, 0x32, 0xbc, 0x1a, 0xaa, 0x0c, 0x91, 0xb7, 0xa9, 0xca, 0x53, 0x22, + 0x72, 0x22, 0x32, 0xfc, 0x49, 0x7b, 0x11, 0x12, 0x45, 0x76, 0x41, 0x95, 0x48, 0x22, 0x1a, 0x0f, + 0xe1, 0xdc, 0x84, 0xb9, 0xc9, 0x3e, 0xc8, 0xcc, 0x80, 0x8c, 0xe1, 0x33, 0xd4, 0xf8, 0x28, 0x89, + 0x54, 0xfa, 0x0a, 0xdc, 0xf8, 0x77, 0xc2, 0x75, 0x3a, 0x63, 0xa2, 0x72, 0xed, 0x06, 0x33, 0xee, + 0x96, 0xfa, 0x9d, 0x7d, 0x7f, 0x18, 0x0f, 0x16, 0x6a, 0x37, 0x21, 0x2f, 0xb1, 0x1d, 0x2c, 0x4a, + 0x0d, 0x5a, 0x8a, 0x8a, 0xf9, 0xb0, 0xda, 0x1a, 0xfa, 0xbb, 0x9e, 0x78, 0x6b, 0x2d, 0x0e, 0xa5, + 0xb4, 0xa6, 0x5f, 0x52, 0xa6, 0x9b, 0x3a, 0x7d, 0xc6, 0xf0, 0xa3, 0xd4, 0x73, 0x1c, 0x2c, 0x7c, + 0x73, 0x3a, 0x58, 0x60, 0x8e, 0xf3, 0x36, 0xfe, 0x28, 0x07, 0xd7, 0x8f, 0xe5, 0x78, 0xd2, 0xc4, + 0xc1, 0xaf, 0x03, 0x10, 0x2d, 0xef, 0x01, 0xc5, 0xe4, 0x24, 0x2b, 0xe3, 0x0c, 0xfb, 0xa6, 0x82, + 0xc2, 0x1e, 0xc3, 0x73, 0xf2, 0x57, 0xa7, 0xe3, 0x0e, 0xc2, 0x80, 0xd7, 0x83, 0xe2, 0xad, 0x47, + 0x81, 0xe3, 0x8a, 0x1b, 0x2f, 0xfe, 0xf9, 0x67, 0x57, 0xaf, 0x47, 0x3c, 0x04, 0xa6, 0x78, 0xe0, + 0x21, 0x43, 0xb7, 0xa3, 0xe1, 0x6b, 0x3a, 0x2f, 0x76, 0x23, 0x5e, 0x49, 0x85, 0xd8, 0x84, 0x2d, + 0x57, 0x52, 0xbc, 0x7e, 0xb6, 0x80, 0x11, 0x23, 0x4e, 0xb6, 0xa9, 0xde, 0x65, 0x0b, 0xa9, 0x29, + 0x6b, 0x22, 0x0c, 0x69, 0xa2, 0xdc, 0xcc, 0xa0, 0x31, 0x7e, 0x41, 0x2c, 0xec, 0x4c, 0xe9, 0xc0, + 0x0e, 0x61, 0x85, 0x6b, 0x19, 0x4a, 0x67, 0x93, 0x5c, 0xb9, 0x75, 0xfc, 0x40, 0xd7, 0x42, 0x8a, + 0x2f, 0x64, 0x8d, 0x0e, 0x0e, 0x9c, 0xe1, 0xd1, 0xc6, 0x05, 0x99, 0x01, 0x17, 0xb5, 0x19, 0x75, + 0xec, 0xcd, 0xf4, 0x57, 0x8c, 0x3f, 0xcb, 0xc1, 0x2b, 0x4f, 0xc1, 0x9b, 0xb5, 0x60, 0x1e, 0xcf, + 0xf3, 0xa8, 0x09, 0x1e, 0x6f, 0x0f, 0x38, 0x4b, 0x7b, 0x23, 0xc5, 0x17, 0x8a, 0xf4, 0xc0, 0x98, + 0x09, 0xbb, 0xcb, 0xa7, 0x53, 0x17, 0xf9, 0x1d, 0x6f, 0x1b, 0x58, 0x93, 0x66, 0x32, 0xb7, 0xdf, + 0x8d, 0xb9, 0x49, 0x06, 0x4a, 0xe8, 0xc4, 0xfc, 0xc4, 0xd0, 0x89, 0x6f, 0xc1, 0x62, 0x55, 0x71, + 0xb0, 0xa5, 0xe1, 0xc7, 0x5b, 0x83, 0x84, 0x37, 0xae, 0x99, 0x40, 0x63, 0x5f, 0x86, 0x65, 0xe1, + 0x3d, 0x40, 0xbd, 0x23, 0x7c, 0xdb, 0x66, 0x28, 0x21, 0x0c, 0x96, 0xc8, 0xae, 0x0e, 0xcc, 0x14, + 0x2a, 0x5f, 0x58, 0x67, 0xb9, 0x56, 0xd2, 0x73, 0x83, 0xa0, 0x34, 0x0a, 0xf7, 0xf9, 0xae, 0x23, + 0xce, 0xe9, 0xec, 0x1d, 0x98, 0xdd, 0x7f, 0xba, 0xdb, 0x39, 0x81, 0xce, 0x18, 0xa0, 0xa6, 0x2f, + 0x23, 0xbc, 0xf0, 0xff, 0xd9, 0xbb, 0x30, 0x83, 0x46, 0x66, 0x52, 0xa8, 0xa5, 0x21, 0x24, 0xfb, + 0xd3, 0x68, 0x82, 0x36, 0x05, 0x01, 0x5f, 0xad, 0x71, 0x6a, 0x5f, 0xda, 0x8f, 0xa5, 0xf1, 0x35, + 0xca, 0xee, 0x6b, 0xce, 0x1f, 0xec, 0x3a, 0x94, 0x2f, 0x77, 0x1d, 0x56, 0xa5, 0xec, 0x1d, 0xc8, + 0xe4, 0x2a, 0xe4, 0x77, 0xb3, 0x42, 0x51, 0xa8, 0x06, 0x32, 0xc1, 0xca, 0x0b, 0xb0, 0x1c, 0x04, + 0xfb, 0x36, 0xc5, 0x3e, 0x7c, 0x2c, 0xf3, 0xb6, 0x99, 0x8b, 0x41, 0xb0, 0x2f, 0x82, 0x20, 0xde, + 0x73, 0x8f, 0x38, 0x16, 0xbe, 0x65, 0x88, 0xb1, 0x8a, 0x02, 0x2b, 0xec, 0x05, 0x11, 0x16, 0x85, + 0xed, 0x84, 0x18, 0xcb, 0xf8, 0xcf, 0x39, 0x98, 0x7f, 0xc0, 0x0f, 0xaf, 0x68, 0x92, 0x9d, 0x6e, + 0xe2, 0xbd, 0x05, 0x0b, 0x75, 0xdf, 0xa1, 0x2b, 0x7a, 0x0a, 0x31, 0x22, 0x1e, 0x3f, 0xf5, 0x7c, + 0x47, 0xde, 0xf6, 0x07, 0xa6, 0x8a, 0x74, 0x4c, 0xdc, 0xca, 0xbb, 0x30, 0x2b, 0x56, 0x38, 0xdd, + 0x36, 0x48, 0xf3, 0x45, 0x54, 0xa3, 0xd7, 0x44, 0xb1, 0x72, 0x87, 0x2c, 0xa4, 0x84, 0x7a, 0x96, + 0xa6, 0x87, 0x4e, 0x8a, 0x01, 0x7a, 0xe6, 0x64, 0x06, 0x68, 0x25, 0x49, 0xc6, 0xec, 0x49, 0x92, + 0x64, 0x5c, 0xbc, 0x0d, 0x0b, 0x4a, 0x7d, 0x9e, 0xca, 0x9a, 0xf1, 0x63, 0x39, 0x58, 0xc2, 0x56, + 0x45, 0x52, 0xeb, 0x6f, 0xa7, 0x39, 0xfd, 0x4b, 0x09, 0x73, 0xfa, 0x79, 0x75, 0xbc, 0xc8, 0xe9, + 0x67, 0xb2, 0x1d, 0xfd, 0x2e, 0xac, 0x8e, 0x21, 0xb2, 0xb7, 0x60, 0x86, 0x57, 0x5f, 0x9a, 0x1f, + 0xf5, 0xf4, 0x0c, 0x88, 0x13, 0xaa, 0xf1, 0x86, 0x07, 0xa6, 0xc0, 0x36, 0xfe, 0xbb, 0x06, 0x8b, + 0x94, 0x49, 0xba, 0xbf, 0xeb, 0x1f, 0xdb, 0x9d, 0x37, 0xd2, 0xdd, 0x29, 0xa2, 0x30, 0x53, 0x77, + 0xfe, 0x4d, 0x77, 0xe2, 0xed, 0x44, 0x27, 0x9e, 0x8b, 0xd2, 0xab, 0xc8, 0xe6, 0x4c, 0xe9, 0xc3, + 0xdf, 0xc2, 0x84, 0x63, 0x49, 0x44, 0xf6, 0x83, 0x30, 0xdf, 0x70, 0x0f, 0x13, 0x56, 0xbc, 0x1b, + 0x13, 0x98, 0xbe, 0x16, 0x21, 0x8a, 0x35, 0x25, 0x1e, 0x20, 0xba, 0x87, 0xf6, 0x98, 0x6f, 0x46, + 0xcc, 0xf2, 0xe2, 0x7b, 0xb0, 0x9c, 0x24, 0x7b, 0x9a, 0xa9, 0x4f, 0x41, 0xd9, 0x30, 0xb0, 0xf8, + 0xb7, 0xf3, 0x00, 0x71, 0x3c, 0x2b, 0xbe, 0x00, 0x13, 0xee, 0x60, 0xf2, 0x02, 0x14, 0x41, 0xea, + 0x1c, 0x97, 0x5e, 0x62, 0x37, 0xe8, 0xa2, 0x2e, 0x37, 0x39, 0xfd, 0x0d, 0x5e, 0xd9, 0xdd, 0xa7, + 0xd8, 0x44, 0x5d, 0xb7, 0xe7, 0x88, 0xb7, 0x47, 0xf9, 0x8d, 0x77, 0x30, 0xdb, 0x59, 0x04, 0x4d, + 0xa4, 0x1a, 0xb9, 0x54, 0x19, 0x49, 0x9d, 0x62, 0xe8, 0xf5, 0xf7, 0x36, 0xfd, 0xa1, 0x12, 0x75, + 0x0b, 0x83, 0x1a, 0x55, 0x38, 0xcd, 0x58, 0xd8, 0xb8, 0xc2, 0xd3, 0x85, 0x8d, 0x6b, 0xc1, 0xbc, + 0xd7, 0xff, 0xd4, 0xed, 0x87, 0xfe, 0xf0, 0x08, 0x2f, 0x2c, 0xe3, 0x9b, 0x10, 0xfe, 0xbd, 0x9a, + 0x2c, 0x13, 0x43, 0x83, 0xca, 0x67, 0x84, 0xaf, 0x8e, 0x4c, 0x04, 0x8c, 0x9c, 0x79, 0x66, 0xf4, + 0x59, 0x11, 0x6d, 0xea, 0x6e, 0xa1, 0x58, 0xd4, 0xe7, 0xef, 0x16, 0x8a, 0xf3, 0x3a, 0x98, 0x8a, + 0xff, 0x41, 0xe4, 0x5f, 0xa0, 0x38, 0x03, 0x24, 0x2f, 0xfa, 0x8d, 0x5f, 0xce, 0x03, 0x1b, 0xaf, + 0x06, 0xfb, 0x12, 0x2c, 0x08, 0x99, 0x6b, 0x0f, 0x83, 0x4f, 0xe8, 0x4d, 0xa6, 0x78, 0x48, 0xad, + 0x80, 0xd5, 0x88, 0xed, 0x02, 0x6c, 0x06, 0x9f, 0xf4, 0xd8, 0x00, 0x4e, 0x63, 0x8f, 0x0f, 0xdc, + 0xa1, 0xe7, 0x77, 0x6d, 0xcc, 0xc7, 0xe5, 0xf4, 0x70, 0xf8, 0xf2, 0x1b, 0x5f, 0xf9, 0xf3, 0xcf, + 0xae, 0x3e, 0x97, 0x51, 0x7c, 0xf2, 0x91, 0xc1, 0xb8, 0x51, 0x2d, 0x24, 0x6e, 0x09, 0x5a, 0xb6, + 0x07, 0xba, 0xca, 0x72, 0x77, 0xd4, 0xeb, 0xd1, 0xf8, 0xbf, 0xcf, 0x0f, 0x10, 0xe9, 0xb2, 0x93, + 0x7f, 0x6b, 0x39, 0xfe, 0xd6, 0xe6, 0xa8, 0xd7, 0x63, 0xef, 0x00, 0xf8, 0x7d, 0xfb, 0xc0, 0x0b, + 0x02, 0x71, 0x59, 0x1e, 0xbd, 0xe6, 0x8d, 0xa1, 0xea, 0x90, 0xf9, 0xfd, 0x6d, 0x01, 0x64, 0x5f, + 0x04, 0x0c, 0x07, 0x8b, 0x71, 0x92, 0x49, 0x0d, 0x12, 0xc7, 0x0c, 0x09, 0x4c, 0x46, 0x02, 0xdc, + 0x73, 0x2d, 0xef, 0x1b, 0xf2, 0xd1, 0xf3, 0xd7, 0x60, 0x95, 0x54, 0xaa, 0x07, 0x5e, 0xb8, 0x4f, + 0xa6, 0x9a, 0x67, 0xb1, 0xf3, 0x28, 0x76, 0x96, 0xdf, 0x9c, 0x01, 0x28, 0x3d, 0xb0, 0x64, 0x0a, + 0x82, 0x97, 0x61, 0xa6, 0xcd, 0xd9, 0x90, 0x21, 0x1b, 0x35, 0x35, 0xe4, 0xab, 0x5e, 0x03, 0x22, + 0x06, 0x5f, 0xc6, 0x26, 0xbe, 0x4f, 0x94, 0x46, 0x6c, 0x5c, 0xc6, 0xe2, 0xc9, 0x62, 0x22, 0x67, + 0x1c, 0x61, 0xb1, 0x3a, 0x40, 0x9c, 0x14, 0x80, 0xcc, 0x21, 0xab, 0x71, 0x74, 0x6d, 0x2a, 0xa0, + 0x5c, 0xb8, 0xf1, 0x23, 0x74, 0x75, 0x92, 0xc5, 0x68, 0xec, 0x1e, 0x14, 0xda, 0x4e, 0x14, 0xf3, + 0x6d, 0x42, 0xaa, 0x84, 0x6b, 0xbc, 0xf5, 0x89, 0x74, 0x09, 0xcb, 0xa1, 0xb3, 0xa7, 0xd6, 0x0e, + 0x99, 0xb0, 0x2a, 0xcc, 0xb6, 0x9c, 0xa1, 0x73, 0x10, 0x4c, 0x4a, 0xb1, 0x23, 0x4a, 0x65, 0x26, + 0x3e, 0x04, 0xaa, 0xca, 0x88, 0x28, 0x66, 0xb7, 0x20, 0x6f, 0x59, 0xdb, 0xf4, 0xae, 0x62, 0x29, + 0x3e, 0x86, 0x58, 0xd6, 0xb6, 0xd0, 0x96, 0x83, 0xe0, 0x40, 0x21, 0xe3, 0xc8, 0xec, 0xcb, 0xb0, + 0xa0, 0x9c, 0x6e, 0x28, 0xb4, 0x36, 0xf6, 0x81, 0xf2, 0x02, 0x5e, 0x15, 0x2d, 0x0a, 0x36, 0xab, + 0x83, 0x7e, 0x6f, 0xf4, 0xc8, 0x2d, 0x0d, 0x06, 0x18, 0xe8, 0xe9, 0x53, 0x77, 0x28, 0x34, 0xc0, + 0x62, 0x9c, 0xc4, 0x0e, 0x9f, 0x9b, 0x76, 0x65, 0xa9, 0x6a, 0x47, 0x49, 0x53, 0xb2, 0x16, 0xac, + 0x5a, 0x6e, 0x38, 0x1a, 0x08, 0x37, 0xc8, 0x4d, 0x71, 0x0e, 0x17, 0x81, 0xb8, 0x31, 0xdf, 0x57, + 0xc0, 0x0b, 0xa5, 0x07, 0xea, 0xee, 0xd8, 0x59, 0x7c, 0x9c, 0x98, 0x7d, 0x3d, 0x65, 0x31, 0x80, + 0xb4, 0xd1, 0x4a, 0x2d, 0x95, 0xd9, 0x36, 0x4e, 0x6e, 0x50, 0xf8, 0x8f, 0xc2, 0xa0, 0x90, 0xc1, + 0x84, 0x55, 0x61, 0x59, 0x05, 0x47, 0x66, 0x13, 0x0c, 0x71, 0x90, 0x08, 0xf3, 0x9a, 0xb0, 0x83, + 0xa4, 0x88, 0xd8, 0x13, 0x38, 0xad, 0x42, 0x9c, 0xde, 0x4e, 0xdf, 0x0b, 0x83, 0x54, 0xfa, 0xef, + 0x54, 0x15, 0x10, 0x45, 0x36, 0x06, 0x3b, 0xce, 0x4f, 0xb0, 0xb0, 0x47, 0x1c, 0x41, 0xf9, 0x68, + 0xd6, 0x27, 0x8c, 0x1f, 0xc1, 0x18, 0x0e, 0x93, 0xf8, 0x8a, 0x24, 0x91, 0x18, 0x03, 0x40, 0xbd, + 0x73, 0xa2, 0x08, 0x01, 0xc9, 0x24, 0x91, 0x08, 0xe2, 0x04, 0x55, 0x11, 0x34, 0x40, 0x5d, 0xae, + 0x14, 0x47, 0x40, 0x25, 0x20, 0x2c, 0xe3, 0x67, 0x35, 0x75, 0xbd, 0xaa, 0xa7, 0x7f, 0x6d, 0xda, + 0xe9, 0xff, 0xf5, 0x8c, 0x4c, 0x1f, 0x68, 0xc3, 0x50, 0x32, 0x7d, 0xa8, 0xf9, 0x3d, 0xd8, 0xcb, + 0x50, 0xe4, 0xb4, 0xca, 0x79, 0x41, 0xa4, 0x5b, 0xf1, 0x7b, 0x32, 0x23, 0xb7, 0x2c, 0x36, 0xfe, + 0xe7, 0x8c, 0x92, 0x97, 0x8a, 0xd6, 0xdc, 0xfb, 0x00, 0x77, 0x7d, 0xaf, 0xbf, 0xed, 0x86, 0xfb, + 0x7e, 0x57, 0x19, 0xe4, 0x85, 0x8f, 0x7d, 0xaf, 0x6f, 0x1f, 0x20, 0xf8, 0xaf, 0x3e, 0xbb, 0xaa, + 0x20, 0x99, 0xca, 0xff, 0xec, 0x0b, 0x30, 0xcf, 0x7f, 0xb5, 0x63, 0xa7, 0x5d, 0x71, 0xb7, 0x89, + 0xd4, 0x22, 0x85, 0x74, 0x8c, 0xc0, 0x6e, 0x63, 0xd2, 0x74, 0x6f, 0x10, 0x2a, 0xb5, 0x95, 0x19, + 0xd2, 0xbd, 0x41, 0x98, 0x0e, 0x62, 0xa1, 0x20, 0xb3, 0xad, 0xa8, 0xea, 0x6d, 0xca, 0x63, 0x46, + 0xb9, 0xd9, 0x29, 0x12, 0x06, 0x16, 0xd9, 0x32, 0xc7, 0x99, 0x1a, 0x09, 0x23, 0x45, 0x86, 0x95, + 0xb0, 0xb6, 0x2a, 0x64, 0xdc, 0x9a, 0x51, 0x2a, 0x11, 0xec, 0x77, 0xc9, 0x54, 0x95, 0xa8, 0x44, + 0x84, 0xcc, 0x36, 0x60, 0x45, 0x1c, 0x0b, 0x5b, 0x43, 0xff, 0xc9, 0x11, 0x26, 0xe8, 0x9e, 0x8d, + 0xf7, 0xb0, 0x01, 0x07, 0xe2, 0xc1, 0x54, 0xfd, 0x7c, 0x8a, 0x80, 0x6d, 0xc2, 0x0c, 0x1a, 0x2a, + 0xe9, 0x81, 0xea, 0x25, 0xd5, 0x54, 0x9e, 0x96, 0x97, 0xb8, 0x7f, 0xa0, 0x91, 0x5c, 0xdd, 0x3f, + 0x10, 0x95, 0x7d, 0x3f, 0x40, 0xb5, 0x3f, 0xf4, 0x7b, 0x3d, 0x4c, 0xdb, 0x57, 0x4c, 0x04, 0xcc, + 0x21, 0x3e, 0xc8, 0x25, 0x46, 0xa2, 0x8c, 0x31, 0xf8, 0xdb, 0x4e, 0x25, 0xf7, 0x53, 0x78, 0xb1, + 0x2f, 0xc0, 0xac, 0x35, 0xda, 0xdd, 0xf5, 0x9e, 0x90, 0xf0, 0x12, 0x19, 0xeb, 0x10, 0xa2, 0x0a, + 0x6d, 0x81, 0xc3, 0xde, 0x83, 0x85, 0x9d, 0x41, 0xd7, 0x09, 0x5d, 0xbc, 0xdc, 0xa4, 0x34, 0xa8, + 0x28, 0x83, 0x46, 0x08, 0x16, 0xef, 0x23, 0x54, 0x09, 0xac, 0xa0, 0x33, 0x0f, 0x56, 0xb7, 0xda, + 0xed, 0x16, 0x76, 0x8f, 0x7c, 0x65, 0x4f, 0xf1, 0x68, 0xe4, 0x31, 0x69, 0xac, 0x7c, 0xe3, 0x3a, + 0xd7, 0x81, 0xf6, 0xc3, 0x70, 0x60, 0x8b, 0x2e, 0x97, 0x01, 0xbe, 0x54, 0x61, 0x3a, 0x46, 0x65, + 0xfc, 0x86, 0x96, 0xf1, 0x2d, 0xf6, 0x36, 0xcc, 0x47, 0x40, 0x35, 0xc3, 0x6f, 0xcc, 0x5e, 0x55, + 0x48, 0x22, 0x54, 0x3e, 0x8b, 0xf8, 0x0f, 0x4b, 0x10, 0x2a, 0x19, 0x79, 0x38, 0x61, 0x30, 0x46, + 0xa9, 0x20, 0xf3, 0x53, 0x6a, 0xc3, 0x17, 0x74, 0x8a, 0x79, 0xbb, 0xef, 0x8f, 0x11, 0x49, 0x34, + 0xa3, 0x06, 0xb3, 0x62, 0x1b, 0xc4, 0xa4, 0xa4, 0x94, 0xba, 0x5d, 0x49, 0x69, 0x29, 0x92, 0x92, + 0x12, 0x7c, 0x3c, 0x29, 0xa9, 0x42, 0x60, 0xdc, 0x83, 0xb5, 0xac, 0xa9, 0x96, 0x30, 0x76, 0x6b, + 0x27, 0x35, 0x76, 0xff, 0x71, 0x1e, 0x16, 0x91, 0x9b, 0x14, 0xab, 0x25, 0x58, 0xb2, 0x46, 0x8f, + 0xa2, 0x04, 0x1c, 0x52, 0x0f, 0xc2, 0xfa, 0x05, 0x6a, 0x81, 0xea, 0x9d, 0x94, 0xa0, 0xe0, 0x3b, + 0x8f, 0xd4, 0xc1, 0xee, 0xc8, 0xe7, 0xb5, 0x51, 0x3e, 0x50, 0xf9, 0xea, 0x98, 0x1e, 0xdd, 0xa8, + 0x3b, 0x4f, 0x92, 0x28, 0xd6, 0xc4, 0xf2, 0x4f, 0xa3, 0x89, 0x15, 0x4e, 0xa4, 0x89, 0x7d, 0x04, + 0x8b, 0xf2, 0x6b, 0xa8, 0x43, 0xcd, 0x3c, 0x9b, 0x0e, 0x95, 0x60, 0xc6, 0xea, 0x91, 0x2e, 0x35, + 0x3b, 0x55, 0x97, 0x42, 0x97, 0x2f, 0x29, 0xf7, 0x06, 0x08, 0xcb, 0x50, 0xa9, 0x9e, 0x45, 0x3d, + 0x32, 0xfe, 0x34, 0x0f, 0x70, 0xa7, 0xdc, 0xfa, 0x2e, 0x94, 0xdb, 0xb7, 0x60, 0xbe, 0xee, 0x4b, + 0x57, 0x21, 0xc5, 0x47, 0xa3, 0x27, 0x81, 0xea, 0xa2, 0x8a, 0x30, 0x23, 0xa5, 0x34, 0xff, 0x79, + 0x28, 0xa5, 0xb7, 0xf1, 0x36, 0xe0, 0x63, 0xb7, 0x13, 0xd6, 0x2a, 0x72, 0x64, 0xb1, 0xe5, 0x32, + 0x8a, 0x76, 0xd2, 0x55, 0x44, 0x41, 0xe6, 0x9b, 0x0d, 0x79, 0x21, 0xcb, 0x28, 0x5d, 0x64, 0x7f, + 0xc7, 0xcd, 0x46, 0x86, 0x3a, 0x93, 0x81, 0xbf, 0x54, 0x69, 0x9f, 0x22, 0xfb, 0x9c, 0x47, 0xf3, + 0xab, 0xd1, 0x73, 0x92, 0xb9, 0x69, 0x3d, 0x64, 0x8c, 0xf5, 0xd0, 0xc4, 0x47, 0x24, 0xc6, 0xef, + 0x69, 0x6a, 0x26, 0xe7, 0xef, 0x62, 0xa8, 0xdf, 0x05, 0x88, 0x7c, 0x35, 0xe5, 0x58, 0x47, 0x01, + 0x9a, 0x04, 0x54, 0xed, 0xe5, 0x18, 0x57, 0x69, 0x4d, 0xfe, 0xf3, 0x6a, 0x4d, 0x1b, 0x16, 0x9a, + 0x8f, 0x43, 0x27, 0x76, 0xee, 0x05, 0x2b, 0x3a, 0x80, 0xa2, 0x58, 0xcb, 0xe3, 0x65, 0xce, 0x19, + 0xe5, 0x44, 0x9b, 0x38, 0xcc, 0x16, 0xe5, 0x61, 0xd6, 0x54, 0x08, 0x8d, 0xbf, 0xd6, 0x60, 0x45, + 0x8d, 0x31, 0x79, 0xd4, 0xef, 0xb0, 0x0f, 0x44, 0x9e, 0x38, 0x2d, 0x61, 0x8f, 0x50, 0x90, 0xb8, + 0xbc, 0x3e, 0xea, 0x77, 0xc4, 0xb9, 0xc5, 0x39, 0x54, 0x2b, 0xcb, 0x09, 0xd9, 0x23, 0x58, 0x6c, + 0xf9, 0xbd, 0x1e, 0x5f, 0x6e, 0xc3, 0x4f, 0xe9, 0x74, 0xcf, 0x19, 0xa5, 0x2f, 0x22, 0x64, 0x85, + 0x36, 0x9e, 0x27, 0xbb, 0xd6, 0xb9, 0x01, 0xdf, 0xbe, 0x3d, 0xa2, 0x8b, 0xd9, 0x7e, 0x0b, 0x83, + 0x6f, 0xa8, 0x3c, 0x63, 0x55, 0x23, 0x99, 0x91, 0x58, 0xad, 0x25, 0x2f, 0xc6, 0x7a, 0x4e, 0x51, + 0x35, 0x8c, 0xff, 0x4f, 0x83, 0x6b, 0xe3, 0x4d, 0x2b, 0xf7, 0xfc, 0x51, 0xb7, 0x3d, 0x74, 0xbc, + 0x5e, 0xdd, 0xdf, 0x0b, 0x44, 0x7e, 0xad, 0xbd, 0xf8, 0x5e, 0x93, 0xf2, 0x6b, 0xed, 0x79, 0xe9, + 0xfc, 0x5a, 0x18, 0x93, 0xe7, 0x4d, 0x28, 0x5a, 0x5f, 0xb5, 0xbe, 0x3a, 0x72, 0xa5, 0xed, 0x4b, + 0xc8, 0x87, 0xe0, 0x93, 0xc0, 0xfe, 0x84, 0x03, 0xd5, 0xed, 0x46, 0x22, 0x1a, 0x07, 0x70, 0x65, + 0xbc, 0x1a, 0xd5, 0x7b, 0x56, 0x69, 0xd4, 0xf5, 0x42, 0xac, 0x84, 0x14, 0x20, 0xda, 0xe7, 0x20, + 0x40, 0x8c, 0x7f, 0x96, 0x07, 0x36, 0xfe, 0x3d, 0x75, 0xbb, 0xd0, 0xfe, 0x0f, 0x1c, 0xdc, 0x53, + 0x12, 0xbd, 0xf0, 0x54, 0x07, 0xde, 0x4f, 0x40, 0xef, 0xf0, 0x61, 0xb3, 0x43, 0x3e, 0x6e, 0x76, + 0xcf, 0x8f, 0x76, 0xaf, 0xef, 0x9b, 0x38, 0x85, 0x93, 0xe3, 0x2c, 0x44, 0x60, 0x9a, 0x89, 0xba, + 0x11, 0x77, 0x92, 0xf3, 0xc2, 0x83, 0x65, 0xf7, 0x71, 0x60, 0x3b, 0x7c, 0x8c, 0xc4, 0x07, 0x67, + 0x13, 0xce, 0xd6, 0xd3, 0x47, 0x54, 0x08, 0xc6, 0x24, 0x03, 0x75, 0xeb, 0x74, 0x1f, 0x07, 0x11, + 0xae, 0xf1, 0x6d, 0x0d, 0xd6, 0xb2, 0x26, 0x37, 0xd7, 0x29, 0x54, 0x25, 0x23, 0x79, 0x9a, 0x55, + 0xf5, 0x92, 0xd4, 0x69, 0x36, 0x49, 0x94, 0xee, 0xfa, 0xdc, 0x53, 0x6d, 0xa6, 0x7f, 0x96, 0x87, + 0x45, 0xe1, 0xa2, 0xb4, 0xe5, 0x3a, 0xbd, 0x70, 0x9f, 0xcf, 0x23, 0xba, 0xad, 0x52, 0x1f, 0xb2, + 0xd0, 0xbd, 0x56, 0x22, 0x83, 0x1d, 0xdd, 0x69, 0xdd, 0x82, 0x62, 0x8b, 0x8b, 0x85, 0x8e, 0xdf, + 0x53, 0xaf, 0x37, 0x06, 0x04, 0x53, 0x97, 0x8c, 0xc4, 0x43, 0x5d, 0x5e, 0xbd, 0x9e, 0x14, 0xba, + 0x3c, 0x42, 0x12, 0xba, 0xbc, 0xb8, 0xa8, 0x7c, 0x02, 0xa7, 0x63, 0xaf, 0xb3, 0xe8, 0x0a, 0xf4, + 0x04, 0x6f, 0x76, 0xd7, 0xe9, 0xfe, 0xf7, 0x4a, 0xec, 0xc8, 0x86, 0x77, 0xa5, 0x58, 0x9a, 0x4a, + 0x87, 0x97, 0xf5, 0x09, 0x76, 0x0f, 0xf4, 0x18, 0x4c, 0x79, 0xfa, 0xc4, 0xd1, 0x0c, 0xe3, 0x72, + 0x2a, 0x6c, 0xc7, 0x52, 0xf6, 0x8d, 0x11, 0xf2, 0xed, 0x3b, 0x86, 0x55, 0xe3, 0xe7, 0xf9, 0xd2, + 0x1d, 0x22, 0xe2, 0x85, 0xb7, 0xaf, 0xea, 0xf6, 0x9d, 0x22, 0xe3, 0x63, 0x24, 0x2f, 0x6d, 0xe7, + 0xe2, 0x31, 0xa2, 0xeb, 0x5a, 0x75, 0x8c, 0x08, 0x6b, 0xfd, 0x67, 0x35, 0x58, 0xa9, 0x95, 0xb6, + 0x29, 0xf7, 0xbc, 0xe8, 0xd5, 0xeb, 0xf0, 0x5c, 0xad, 0xb4, 0x6d, 0xb7, 0x9a, 0xf5, 0x5a, 0xf9, + 0xa1, 0x9d, 0x99, 0x21, 0xf6, 0x39, 0xb8, 0x30, 0x8e, 0x12, 0x3b, 0xe8, 0x5d, 0x86, 0xf3, 0xe3, + 0xc5, 0x32, 0x8b, 0x6c, 0x36, 0xb1, 0x4c, 0x38, 0x9b, 0x5f, 0xff, 0x10, 0x56, 0x64, 0xc6, 0xd4, + 0x76, 0xdd, 0xc2, 0x13, 0xde, 0x0a, 0x2c, 0xdc, 0xaf, 0x9a, 0xb5, 0xcd, 0x87, 0xf6, 0xe6, 0x4e, + 0xbd, 0xae, 0x9f, 0x62, 0x4b, 0x30, 0x4f, 0x80, 0x72, 0x49, 0xd7, 0xd8, 0x22, 0x14, 0x6b, 0x0d, + 0xab, 0x5a, 0xde, 0x31, 0xab, 0x7a, 0x6e, 0xfd, 0x1f, 0x6b, 0xb0, 0x24, 0xce, 0x6c, 0x43, 0x6a, + 0xd1, 0x15, 0xb8, 0xb8, 0xd3, 0xaa, 0x94, 0xda, 0x55, 0x33, 0xbb, 0x39, 0x67, 0x60, 0x35, 0x55, + 0xde, 0xbc, 0xa7, 0x6b, 0xec, 0x12, 0x9c, 0x4b, 0x81, 0x2b, 0x35, 0xab, 0xb4, 0x21, 0x5a, 0x71, + 0x01, 0xce, 0xa4, 0x0a, 0x5b, 0xb5, 0x46, 0xa3, 0x5a, 0xd1, 0xf3, 0xbc, 0x81, 0x63, 0x9f, 0x33, + 0xab, 0xa5, 0x0a, 0x27, 0xd5, 0x0b, 0xeb, 0x1f, 0xc2, 0x72, 0x2b, 0x7a, 0x8d, 0x88, 0xfe, 0x7f, + 0x73, 0x90, 0x37, 0x4b, 0x0f, 0xf4, 0x53, 0x0c, 0x60, 0xb6, 0x75, 0xaf, 0x6c, 0xdd, 0xbc, 0xa9, + 0x6b, 0x6c, 0x01, 0xe6, 0xee, 0x94, 0x5b, 0xf6, 0xbd, 0x6d, 0x4b, 0xcf, 0xf1, 0x1f, 0xa5, 0x07, + 0x16, 0xfe, 0xc8, 0xaf, 0xbf, 0x81, 0x5e, 0x2f, 0x4f, 0x8e, 0xea, 0x5e, 0x10, 0xba, 0x7d, 0x77, + 0x88, 0x7d, 0xb4, 0x08, 0x45, 0xcb, 0xe5, 0x9a, 0x58, 0xe8, 0x8a, 0x0e, 0xda, 0x1e, 0xf5, 0x42, + 0x6f, 0xd0, 0x73, 0x9f, 0xe8, 0xda, 0xfa, 0x6d, 0x58, 0x31, 0xfd, 0x11, 0x3f, 0x41, 0x5a, 0x21, + 0xc7, 0xd8, 0x3b, 0xc2, 0x36, 0x37, 0x4a, 0xdb, 0x1b, 0xb5, 0x3b, 0x3b, 0xcd, 0x1d, 0xcb, 0xde, + 0x2e, 0xb5, 0xcb, 0x5b, 0xc2, 0xfb, 0x70, 0xbb, 0x69, 0xb5, 0x6d, 0xb3, 0x5a, 0xae, 0x36, 0xda, + 0xba, 0xb6, 0xfe, 0x33, 0x78, 0x17, 0xd5, 0xf1, 0xfb, 0xdd, 0x4d, 0xa7, 0x13, 0xfa, 0x43, 0xac, + 0xb0, 0x01, 0x57, 0xac, 0x6a, 0xb9, 0xd9, 0xa8, 0xd8, 0x9b, 0xa5, 0x72, 0xbb, 0x69, 0x66, 0xa5, + 0x50, 0xbe, 0x08, 0x67, 0x33, 0x70, 0x9a, 0xed, 0x96, 0xae, 0xb1, 0xab, 0x70, 0x29, 0xa3, 0xec, + 0x41, 0x75, 0xa3, 0xb4, 0xd3, 0xde, 0x6a, 0xe8, 0xb9, 0x09, 0xc4, 0x96, 0xd5, 0xd4, 0xf3, 0xeb, + 0xff, 0x40, 0x83, 0xe5, 0x9d, 0x80, 0x9e, 0x42, 0xef, 0xa0, 0xeb, 0xc1, 0x35, 0xb8, 0xbc, 0x63, + 0x55, 0x4d, 0xbb, 0xdd, 0xbc, 0x57, 0x6d, 0xd8, 0x3b, 0x56, 0xe9, 0x4e, 0xba, 0x36, 0x57, 0xe1, + 0x92, 0x82, 0x61, 0x56, 0xcb, 0xcd, 0xfb, 0x55, 0xd3, 0x6e, 0x95, 0x2c, 0xeb, 0x41, 0xd3, 0xac, + 0xe8, 0x1a, 0xff, 0x62, 0x06, 0xc2, 0xf6, 0x66, 0x49, 0xd4, 0x26, 0x51, 0xd6, 0xa8, 0x3e, 0x28, + 0xd5, 0xed, 0x8d, 0x66, 0x5b, 0xcf, 0xaf, 0x6f, 0xf3, 0xc3, 0x15, 0x26, 0x32, 0x15, 0x0f, 0xd6, + 0x8a, 0x50, 0x68, 0x34, 0x1b, 0xd5, 0xb4, 0xcf, 0xea, 0x22, 0x14, 0x4b, 0xad, 0x96, 0xd9, 0xbc, + 0x8f, 0x93, 0x07, 0x60, 0xb6, 0x52, 0x6d, 0xd4, 0x70, 0xb6, 0x2c, 0x42, 0xb1, 0x65, 0x36, 0xb7, + 0x9b, 0xed, 0x6a, 0x45, 0x2f, 0xac, 0x97, 0x60, 0x55, 0x6c, 0x09, 0xc4, 0x14, 0x2f, 0x2c, 0x97, + 0x60, 0x7e, 0xa7, 0x51, 0xa9, 0x6e, 0xd6, 0x1a, 0xd8, 0x96, 0x65, 0x00, 0x6b, 0xab, 0x69, 0xb6, + 0xed, 0x76, 0xd5, 0xdc, 0x16, 0x99, 0xa9, 0xeb, 0xcd, 0xc6, 0x1d, 0xf1, 0x33, 0xb7, 0x6e, 0x4a, + 0x35, 0x40, 0xd6, 0xab, 0xe3, 0x0b, 0x1f, 0xd3, 0x4a, 0x75, 0xb3, 0xb4, 0x53, 0x6f, 0xd3, 0x28, + 0x3f, 0xb4, 0xcd, 0xea, 0x57, 0x77, 0xaa, 0x56, 0xdb, 0xd2, 0x35, 0xa6, 0xc3, 0x62, 0xa3, 0x5a, + 0xad, 0x58, 0xb6, 0x59, 0xbd, 0x5f, 0xab, 0x3e, 0xd0, 0x73, 0xbc, 0x5a, 0xe2, 0x7f, 0x5e, 0xc9, + 0xf5, 0x5f, 0xd1, 0x80, 0x89, 0x3c, 0xb2, 0x5b, 0x7e, 0x10, 0xf2, 0xde, 0xc7, 0x49, 0x77, 0x05, + 0x2e, 0x6e, 0xf1, 0xd9, 0x82, 0xbd, 0xb3, 0xdd, 0xac, 0xa4, 0x7b, 0xfd, 0x2c, 0xb0, 0x54, 0x79, + 0x73, 0x73, 0x13, 0x57, 0xd6, 0xe9, 0x14, 0xbc, 0x62, 0x36, 0x5b, 0x7a, 0xee, 0x62, 0xae, 0xa8, + 0xb1, 0x73, 0x63, 0x85, 0xf7, 0xaa, 0xd5, 0x96, 0x9e, 0xe7, 0xa3, 0x9c, 0x2a, 0x90, 0xab, 0x5e, + 0x90, 0x17, 0xd6, 0x7f, 0x42, 0x83, 0xb3, 0xa2, 0x9a, 0x52, 0x84, 0x44, 0x55, 0xbd, 0x0c, 0xe7, + 0x29, 0x3b, 0x76, 0x56, 0x45, 0xd7, 0x40, 0x4f, 0x94, 0x8a, 0x6a, 0x9e, 0x81, 0xd5, 0x04, 0x14, + 0xeb, 0x91, 0xe3, 0x02, 0x32, 0x01, 0xde, 0xa8, 0x5a, 0x6d, 0xbb, 0xba, 0xb9, 0xc9, 0x87, 0x04, + 0x2b, 0x92, 0x5f, 0x37, 0x60, 0xb5, 0xec, 0x0e, 0xc3, 0xea, 0x93, 0xd0, 0xed, 0x07, 0x9e, 0xdf, + 0xc7, 0x2a, 0x2c, 0xc1, 0x7c, 0xf5, 0xfb, 0xdb, 0xd5, 0x86, 0x55, 0x6b, 0x36, 0xf4, 0x53, 0xeb, + 0x97, 0x53, 0x38, 0x52, 0x14, 0x58, 0xd6, 0x96, 0x7e, 0x6a, 0xdd, 0x81, 0x25, 0xf9, 0x48, 0x58, + 0x4c, 0xac, 0x2b, 0x70, 0x51, 0x4e, 0x57, 0x14, 0x2b, 0xe9, 0x26, 0x9c, 0x87, 0xb5, 0xf1, 0xf2, + 0x6a, 0x5b, 0xd7, 0xf8, 0x28, 0xa4, 0x4a, 0x38, 0x3c, 0xb7, 0xfe, 0x4d, 0x0d, 0x96, 0x22, 0xcf, + 0x15, 0x9c, 0x68, 0x57, 0xe1, 0xd2, 0xf6, 0x66, 0xc9, 0xae, 0x54, 0xef, 0xd7, 0xca, 0x55, 0xfb, + 0x5e, 0xad, 0x51, 0x49, 0x7d, 0xe4, 0x02, 0x9c, 0xc9, 0x40, 0xc0, 0xaf, 0x9c, 0x87, 0xb5, 0x74, + 0x51, 0x9b, 0xaf, 0xf6, 0x1c, 0xef, 0xfa, 0x74, 0x49, 0xb4, 0xd4, 0xf3, 0xeb, 0xf7, 0x61, 0xd9, + 0x2a, 0x6d, 0xd7, 0x37, 0xfd, 0x61, 0xc7, 0x2d, 0x8d, 0xc2, 0xfd, 0x3e, 0x97, 0xbb, 0x9b, 0x4d, + 0xb3, 0x5c, 0xb5, 0x11, 0x25, 0x55, 0x83, 0xd3, 0xb0, 0xa2, 0x16, 0x3e, 0xac, 0xf2, 0xe9, 0xcb, + 0x60, 0x59, 0x05, 0x36, 0x9a, 0x7a, 0x6e, 0xfd, 0x07, 0x60, 0x91, 0xdc, 0xd9, 0x44, 0xff, 0x9d, + 0x83, 0xd3, 0xea, 0xef, 0x96, 0xdb, 0xef, 0x7a, 0xfd, 0x3d, 0xfd, 0x54, 0xba, 0xc0, 0x1c, 0xf5, + 0xfb, 0xbc, 0x00, 0x45, 0x82, 0x5a, 0xd0, 0x76, 0x87, 0x07, 0x5e, 0xdf, 0x09, 0xdd, 0xae, 0x9e, + 0x5b, 0x7f, 0x0d, 0x96, 0x12, 0x99, 0x91, 0xf9, 0xc0, 0xd5, 0x9b, 0x24, 0xc3, 0xb7, 0xab, 0x95, + 0xda, 0xce, 0xb6, 0x3e, 0xc3, 0x85, 0xc1, 0x56, 0xed, 0xce, 0x96, 0x0e, 0xeb, 0x3f, 0xaf, 0xc1, + 0x32, 0x5f, 0x8f, 0xde, 0xd0, 0xdd, 0xde, 0x2c, 0xc9, 0xa1, 0xe6, 0xd3, 0x4c, 0xe4, 0x5b, 0xaf, + 0x5a, 0x96, 0xf0, 0xf6, 0xbe, 0x0c, 0xe7, 0xe9, 0x87, 0x5d, 0x6a, 0x54, 0xec, 0xad, 0x92, 0x59, + 0x79, 0x50, 0x32, 0xf9, 0xdc, 0x7b, 0xa8, 0xe7, 0x70, 0x41, 0x29, 0x10, 0xbb, 0xdd, 0xdc, 0x29, + 0x6f, 0xe9, 0x79, 0x3e, 0x7f, 0x13, 0xf0, 0x56, 0xad, 0xa1, 0x17, 0x70, 0x79, 0x8e, 0x61, 0x23, + 0x5b, 0x5e, 0x3e, 0xb3, 0xfe, 0x1d, 0x0d, 0xce, 0x59, 0xde, 0x5e, 0xdf, 0x09, 0x47, 0x43, 0xb7, + 0xd4, 0xdb, 0xf3, 0x87, 0x5e, 0xb8, 0x7f, 0x60, 0x8d, 0xbc, 0xd0, 0x65, 0x2f, 0xc3, 0x8b, 0x56, + 0xed, 0x4e, 0xa3, 0xd4, 0xe6, 0xcb, 0xab, 0x54, 0xbf, 0xd3, 0x34, 0x6b, 0xed, 0xad, 0x6d, 0xdb, + 0xda, 0xa9, 0x8d, 0xcd, 0xbc, 0x17, 0xe0, 0xda, 0x64, 0xd4, 0x7a, 0xf5, 0x4e, 0xa9, 0xfc, 0x50, + 0xd7, 0xa6, 0x33, 0xdc, 0x28, 0xd5, 0x4b, 0x8d, 0x72, 0xb5, 0x62, 0xdf, 0xbf, 0xa9, 0xe7, 0xd8, + 0x8b, 0x70, 0x7d, 0x32, 0xea, 0x66, 0xad, 0x65, 0x71, 0xb4, 0xfc, 0xf4, 0xef, 0x6e, 0x59, 0xdb, + 0x1c, 0xab, 0xb0, 0xfe, 0x6d, 0x0d, 0xce, 0x4f, 0xca, 0xcf, 0xc1, 0x6e, 0x80, 0x51, 0x6d, 0xb4, + 0xcd, 0x52, 0xad, 0x62, 0x97, 0xcd, 0x6a, 0xa5, 0xda, 0x68, 0xd7, 0x4a, 0x75, 0xcb, 0xb6, 0x9a, + 0x3b, 0x7c, 0x36, 0xc5, 0x4e, 0xf9, 0xcf, 0xc3, 0xd5, 0x29, 0x78, 0xcd, 0x5a, 0xa5, 0xac, 0x6b, + 0xec, 0x26, 0xbc, 0x3a, 0x05, 0xc9, 0x7a, 0x68, 0xb5, 0xab, 0xdb, 0x6a, 0x89, 0x9e, 0x5b, 0xff, + 0xaf, 0x1a, 0x3c, 0x37, 0x35, 0xd1, 0x86, 0xca, 0xb4, 0x84, 0x2a, 0x92, 0x5d, 0xaf, 0x59, 0x6d, + 0xbb, 0xf9, 0xa0, 0x51, 0x35, 0x95, 0x8a, 0xaa, 0xe3, 0xf1, 0x05, 0x78, 0xe9, 0x78, 0x92, 0x56, + 0x7d, 0xe7, 0x4e, 0x8d, 0x4f, 0xb8, 0x57, 0xe1, 0xe5, 0xe3, 0xb1, 0x09, 0x43, 0xcf, 0xb1, 0x77, + 0xe1, 0x8b, 0x27, 0x65, 0x8e, 0x33, 0x4d, 0x52, 0xe6, 0x51, 0x38, 0x67, 0x87, 0xc6, 0xe7, 0x23, + 0x89, 0x25, 0xd3, 0x07, 0xe1, 0x3a, 0x3c, 0x37, 0x11, 0x8b, 0x86, 0xe0, 0x79, 0xb8, 0x3a, 0x11, + 0x45, 0x0c, 0x80, 0x9e, 0x5b, 0xff, 0x08, 0x2e, 0x4e, 0x0e, 0xcf, 0xcc, 0xf7, 0xc6, 0x64, 0x77, + 0x16, 0xa1, 0x50, 0xe1, 0x3b, 0xba, 0xa6, 0x3c, 0x2c, 0xc1, 0x95, 0x68, 0x56, 0x6b, 0xdb, 0x2d, + 0x2e, 0xf4, 0x69, 0x23, 0xc5, 0x9d, 0xf2, 0x47, 0xb5, 0x28, 0xf5, 0x49, 0xcc, 0x33, 0xfd, 0x96, + 0xc5, 0xdc, 0x69, 0x34, 0x84, 0x5e, 0xb0, 0x02, 0x0b, 0xcd, 0xf6, 0x56, 0xd5, 0xb4, 0xab, 0xa6, + 0xd9, 0x34, 0xf5, 0x1c, 0xdf, 0x89, 0x77, 0x1a, 0x5c, 0x8c, 0x35, 0xcd, 0xda, 0xd7, 0x50, 0x41, + 0x38, 0x0f, 0x6b, 0x56, 0xbd, 0x54, 0xbe, 0x67, 0x37, 0x9a, 0x6d, 0xbb, 0xd6, 0xb0, 0xcb, 0x5b, + 0xa5, 0x46, 0xa3, 0x5a, 0xd7, 0x81, 0xef, 0x4f, 0xcd, 0x7b, 0xed, 0x92, 0x5d, 0x6e, 0x36, 0x36, + 0x6b, 0x77, 0x88, 0xc5, 0x1a, 0xce, 0xf8, 0x49, 0xd1, 0x94, 0xf8, 0xe4, 0x40, 0x1a, 0x1a, 0x22, + 0xeb, 0x61, 0xa3, 0x2c, 0xb5, 0xd4, 0xf2, 0xf8, 0xbe, 0xf8, 0x12, 0xbc, 0x30, 0x15, 0x5b, 0xaa, + 0xed, 0x1a, 0x5f, 0x49, 0x53, 0x31, 0xa9, 0x7d, 0xeb, 0xbf, 0xaf, 0xc1, 0xa5, 0x29, 0xde, 0x96, + 0x7c, 0x3a, 0x6e, 0x55, 0x4b, 0x95, 0x3a, 0x9f, 0x59, 0xbc, 0x1b, 0xf8, 0x20, 0x8a, 0xa7, 0x30, + 0x99, 0xbb, 0xde, 0xcb, 0xf0, 0xe2, 0x74, 0xf4, 0x58, 0x05, 0x7b, 0x09, 0x5e, 0x98, 0x8e, 0x4a, + 0x2a, 0x59, 0x8e, 0xad, 0xc3, 0x8d, 0xe9, 0x98, 0x91, 0x2a, 0x97, 0x5f, 0xff, 0x29, 0x0d, 0xce, + 0x66, 0xdf, 0x5f, 0xf1, 0xba, 0xd5, 0x1a, 0x56, 0xbb, 0x54, 0xaf, 0xdb, 0xad, 0x92, 0x59, 0xda, + 0xb6, 0xab, 0x0d, 0xb3, 0x59, 0xaf, 0x67, 0xe9, 0x1f, 0x2f, 0xc0, 0xb5, 0xc9, 0xa8, 0x56, 0xd9, + 0xac, 0xb5, 0xf8, 0x16, 0x6b, 0xc0, 0x95, 0xc9, 0x58, 0xd5, 0x5a, 0xb9, 0xaa, 0xe7, 0x36, 0xde, + 0xff, 0xdd, 0x3f, 0xbd, 0x72, 0xea, 0x77, 0xbf, 0x73, 0x45, 0xfb, 0xb7, 0xdf, 0xb9, 0xa2, 0xfd, + 0xc9, 0x77, 0xae, 0x68, 0x5f, 0x7b, 0x45, 0xbc, 0x2f, 0x79, 0xad, 0xe3, 0x1f, 0xbc, 0xbe, 0x37, + 0x74, 0x3e, 0xf5, 0x42, 0xba, 0x79, 0x7e, 0x5d, 0x5e, 0x3f, 0xbe, 0xee, 0x0c, 0xbc, 0xd7, 0xd1, + 0xbc, 0xf1, 0x68, 0x16, 0x4f, 0xcb, 0x6f, 0xfe, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2e, 0x46, + 0xed, 0x7b, 0xe2, 0x0e, 0x02, 0x00, } func (this *SSHKeyPair) Equal(that interface{}) bool { @@ -38727,6 +38752,20 @@ func (m *AuthPreferenceSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.AllowCLIAuthViaBrowser != nil { + { + size := m.AllowCLIAuthViaBrowser.Size() + i -= size + if _, err := m.AllowCLIAuthViaBrowser.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xc2 + } if m.StableUnixUserConfig != nil { { size, err := m.StableUnixUserConfig.MarshalToSizedBuffer(dAtA[:i]) @@ -38742,20 +38781,20 @@ func (m *AuthPreferenceSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0xb2 } if len(m.SecondFactors) > 0 { - dAtA133 := make([]byte, len(m.SecondFactors)*10) - var j132 int + dAtA134 := make([]byte, len(m.SecondFactors)*10) + var j133 int for _, num := range m.SecondFactors { for num >= 1<<7 { - dAtA133[j132] = uint8(uint64(num)&0x7f | 0x80) + dAtA134[j133] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j132++ + j133++ } - dAtA133[j132] = uint8(num) - j132++ + dAtA134[j133] = uint8(num) + j133++ } - i -= j132 - copy(dAtA[i:], dAtA133[:j132]) - i = encodeVarintTypes(dAtA, i, uint64(j132)) + i -= j133 + copy(dAtA[i:], dAtA134[:j133]) + i = encodeVarintTypes(dAtA, i, uint64(j133)) i-- dAtA[i] = 0x1 i-- @@ -39428,12 +39467,12 @@ func (m *UserTokenSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n149, err149 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err149 != nil { - return 0, err149 + n150, err150 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err150 != nil { + return 0, err150 } - i -= n149 - i = encodeVarintTypes(dAtA, i, uint64(n149)) + i -= n150 + i = encodeVarintTypes(dAtA, i, uint64(n150)) i-- dAtA[i] = 0x22 if m.Usage != 0 { @@ -39550,12 +39589,12 @@ func (m *UserTokenSecretsSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n152, err152 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err152 != nil { - return 0, err152 + n153, err153 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err153 != nil { + return 0, err153 } - i -= n152 - i = encodeVarintTypes(dAtA, i, uint64(n152)) + i -= n153 + i = encodeVarintTypes(dAtA, i, uint64(n153)) i-- dAtA[i] = 0x1a if len(m.QRCode) > 0 { @@ -39803,12 +39842,12 @@ func (m *AccessReview) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if m.AssumeStartTime != nil { - n155, err155 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.AssumeStartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.AssumeStartTime):]) - if err155 != nil { - return 0, err155 + n156, err156 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.AssumeStartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.AssumeStartTime):]) + if err156 != nil { + return 0, err156 } - i -= n155 - i = encodeVarintTypes(dAtA, i, uint64(n155)) + i -= n156 + i = encodeVarintTypes(dAtA, i, uint64(n156)) i-- dAtA[i] = 0x52 } @@ -39825,20 +39864,20 @@ func (m *AccessReview) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x4a } if len(m.ThresholdIndexes) > 0 { - dAtA158 := make([]byte, len(m.ThresholdIndexes)*10) - var j157 int + dAtA159 := make([]byte, len(m.ThresholdIndexes)*10) + var j158 int for _, num := range m.ThresholdIndexes { for num >= 1<<7 { - dAtA158[j157] = uint8(uint64(num)&0x7f | 0x80) + dAtA159[j158] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j157++ + j158++ } - dAtA158[j157] = uint8(num) - j157++ + dAtA159[j158] = uint8(num) + j158++ } - i -= j157 - copy(dAtA[i:], dAtA158[:j157]) - i = encodeVarintTypes(dAtA, i, uint64(j157)) + i -= j158 + copy(dAtA[i:], dAtA159[:j158]) + i = encodeVarintTypes(dAtA, i, uint64(j158)) i-- dAtA[i] = 0x3a } @@ -39852,12 +39891,12 @@ func (m *AccessReview) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x32 - n160, err160 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err160 != nil { - return 0, err160 + n161, err161 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err161 != nil { + return 0, err161 } - i -= n160 - i = encodeVarintTypes(dAtA, i, uint64(n160)) + i -= n161 + i = encodeVarintTypes(dAtA, i, uint64(n161)) i-- dAtA[i] = 0x2a if len(m.Reason) > 0 { @@ -39960,20 +39999,20 @@ func (m *ThresholdIndexSet) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if len(m.Indexes) > 0 { - dAtA163 := make([]byte, len(m.Indexes)*10) - var j162 int + dAtA164 := make([]byte, len(m.Indexes)*10) + var j163 int for _, num := range m.Indexes { for num >= 1<<7 { - dAtA163[j162] = uint8(uint64(num)&0x7f | 0x80) + dAtA164[j163] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j162++ + j163++ } - dAtA163[j162] = uint8(num) - j162++ + dAtA164[j163] = uint8(num) + j163++ } - i -= j162 - copy(dAtA[i:], dAtA163[:j162]) - i = encodeVarintTypes(dAtA, i, uint64(j162)) + i -= j163 + copy(dAtA[i:], dAtA164[:j163]) + i = encodeVarintTypes(dAtA, i, uint64(j163)) i-- dAtA[i] = 0xa } @@ -40097,24 +40136,24 @@ func (m *AccessRequestSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0xba } if m.ResourceExpiry != nil { - n166, err166 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.ResourceExpiry, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.ResourceExpiry):]) - if err166 != nil { - return 0, err166 + n167, err167 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.ResourceExpiry, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.ResourceExpiry):]) + if err167 != nil { + return 0, err167 } - i -= n166 - i = encodeVarintTypes(dAtA, i, uint64(n166)) + i -= n167 + i = encodeVarintTypes(dAtA, i, uint64(n167)) i-- dAtA[i] = 0x1 i-- dAtA[i] = 0xb2 } if m.AssumeStartTime != nil { - n167, err167 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.AssumeStartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.AssumeStartTime):]) - if err167 != nil { - return 0, err167 + n168, err168 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.AssumeStartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.AssumeStartTime):]) + if err168 != nil { + return 0, err168 } - i -= n167 - i = encodeVarintTypes(dAtA, i, uint64(n167)) + i -= n168 + i = encodeVarintTypes(dAtA, i, uint64(n168)) i-- dAtA[i] = 0x1 i-- @@ -40134,22 +40173,22 @@ func (m *AccessRequestSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0xa2 } - n169, err169 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.SessionTTL, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.SessionTTL):]) - if err169 != nil { - return 0, err169 + n170, err170 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.SessionTTL, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.SessionTTL):]) + if err170 != nil { + return 0, err170 } - i -= n169 - i = encodeVarintTypes(dAtA, i, uint64(n169)) + i -= n170 + i = encodeVarintTypes(dAtA, i, uint64(n170)) i-- dAtA[i] = 0x1 i-- dAtA[i] = 0x92 - n170, err170 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.MaxDuration, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.MaxDuration):]) - if err170 != nil { - return 0, err170 + n171, err171 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.MaxDuration, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.MaxDuration):]) + if err171 != nil { + return 0, err171 } - i -= n170 - i = encodeVarintTypes(dAtA, i, uint64(n170)) + i -= n171 + i = encodeVarintTypes(dAtA, i, uint64(n171)) i-- dAtA[i] = 0x1 i-- @@ -40282,21 +40321,21 @@ func (m *AccessRequestSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x32 } - n174, err174 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err174 != nil { - return 0, err174 - } - i -= n174 - i = encodeVarintTypes(dAtA, i, uint64(n174)) - i-- - dAtA[i] = 0x2a - n175, err175 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + n175, err175 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) if err175 != nil { return 0, err175 } i -= n175 i = encodeVarintTypes(dAtA, i, uint64(n175)) i-- + dAtA[i] = 0x2a + n176, err176 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err176 != nil { + return 0, err176 + } + i -= n176 + i = encodeVarintTypes(dAtA, i, uint64(n176)) + i-- dAtA[i] = 0x22 if m.State != 0 { i = encodeVarintTypes(dAtA, i, uint64(m.State)) @@ -41337,12 +41376,12 @@ func (m *RoleOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0xfa } - n189, err189 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.MFAVerificationInterval, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.MFAVerificationInterval):]) - if err189 != nil { - return 0, err189 + n190, err190 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.MFAVerificationInterval, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.MFAVerificationInterval):]) + if err190 != nil { + return 0, err190 } - i -= n189 - i = encodeVarintTypes(dAtA, i, uint64(n189)) + i -= n190 + i = encodeVarintTypes(dAtA, i, uint64(n190)) i-- dAtA[i] = 0x1 i-- @@ -43546,12 +43585,12 @@ func (m *UserSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x42 - n222, err222 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err222 != nil { - return 0, err222 + n223, err223 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err223 != nil { + return 0, err223 } - i -= n222 - i = encodeVarintTypes(dAtA, i, uint64(n222)) + i -= n223 + i = encodeVarintTypes(dAtA, i, uint64(n223)) i-- dAtA[i] = 0x3a { @@ -43707,21 +43746,21 @@ func (m *LoginStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n225, err225 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockExpires):]) - if err225 != nil { - return 0, err225 - } - i -= n225 - i = encodeVarintTypes(dAtA, i, uint64(n225)) - i-- - dAtA[i] = 0x22 - n226, err226 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockedTime):]) + n226, err226 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockExpires):]) if err226 != nil { return 0, err226 } i -= n226 i = encodeVarintTypes(dAtA, i, uint64(n226)) i-- + dAtA[i] = 0x22 + n227, err227 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockedTime):]) + if err227 != nil { + return 0, err227 + } + i -= n227 + i = encodeVarintTypes(dAtA, i, uint64(n227)) + i-- dAtA[i] = 0x1a if len(m.LockedMessage) > 0 { i -= len(m.LockedMessage) @@ -43777,12 +43816,12 @@ func (m *CreatedBy) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x1a - n228, err228 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):]) - if err228 != nil { - return 0, err228 + n229, err229 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):]) + if err229 != nil { + return 0, err229 } - i -= n228 - i = encodeVarintTypes(dAtA, i, uint64(n228)) + i -= n229 + i = encodeVarintTypes(dAtA, i, uint64(n229)) i-- dAtA[i] = 0x12 if m.Connector != nil { @@ -43900,21 +43939,21 @@ func (m *MFADevice) MarshalToSizedBuffer(dAtA []byte) (int, error) { } } } - n231, err231 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastUsed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastUsed):]) - if err231 != nil { - return 0, err231 - } - i -= n231 - i = encodeVarintTypes(dAtA, i, uint64(n231)) - i-- - dAtA[i] = 0x3a - n232, err232 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.AddedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.AddedAt):]) + n232, err232 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastUsed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastUsed):]) if err232 != nil { return 0, err232 } i -= n232 i = encodeVarintTypes(dAtA, i, uint64(n232)) i-- + dAtA[i] = 0x3a + n233, err233 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.AddedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.AddedAt):]) + if err233 != nil { + return 0, err233 + } + i -= n233 + i = encodeVarintTypes(dAtA, i, uint64(n233)) + i-- dAtA[i] = 0x32 if len(m.Id) > 0 { i -= len(m.Id) @@ -44041,6 +44080,27 @@ func (m *MFADevice_Sso) MarshalToSizedBuffer(dAtA []byte) (int, error) { } return len(dAtA) - i, nil } +func (m *MFADevice_Browser) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MFADevice_Browser) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.Browser != nil { + { + size, err := m.Browser.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + } + return len(dAtA) - i, nil +} func (m *TOTPDevice) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -44610,12 +44670,12 @@ func (m *TunnelConnectionSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) i-- dAtA[i] = 0x22 } - n244, err244 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) - if err244 != nil { - return 0, err244 + n246, err246 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) + if err246 != nil { + return 0, err246 } - i -= n244 - i = encodeVarintTypes(dAtA, i, uint64(n244)) + i -= n246 + i = encodeVarintTypes(dAtA, i, uint64(n246)) i-- dAtA[i] = 0x1a if len(m.ProxyName) > 0 { @@ -44707,12 +44767,12 @@ func (m *AcquireSemaphoreRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) i-- dAtA[i] = 0x2a } - n245, err245 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err245 != nil { - return 0, err245 + n247, err247 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err247 != nil { + return 0, err247 } - i -= n245 - i = encodeVarintTypes(dAtA, i, uint64(n245)) + i -= n247 + i = encodeVarintTypes(dAtA, i, uint64(n247)) i-- dAtA[i] = 0x22 if m.MaxLeases != 0 { @@ -44761,12 +44821,12 @@ func (m *SemaphoreLease) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n246, err246 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err246 != nil { - return 0, err246 + n248, err248 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err248 != nil { + return 0, err248 } - i -= n246 - i = encodeVarintTypes(dAtA, i, uint64(n246)) + i -= n248 + i = encodeVarintTypes(dAtA, i, uint64(n248)) i-- dAtA[i] = 0x2a if len(m.LeaseID) > 0 { @@ -44824,12 +44884,12 @@ func (m *SemaphoreLeaseRef) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - n247, err247 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err247 != nil { - return 0, err247 + n249, err249 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err249 != nil { + return 0, err249 } - i -= n247 - i = encodeVarintTypes(dAtA, i, uint64(n247)) + i -= n249 + i = encodeVarintTypes(dAtA, i, uint64(n249)) i-- dAtA[i] = 0x12 if len(m.LeaseID) > 0 { @@ -45101,28 +45161,28 @@ func (m *WebSessionSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x48 } - n254, err254 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LoginTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LoginTime):]) - if err254 != nil { - return 0, err254 + n256, err256 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LoginTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LoginTime):]) + if err256 != nil { + return 0, err256 } - i -= n254 - i = encodeVarintTypes(dAtA, i, uint64(n254)) + i -= n256 + i = encodeVarintTypes(dAtA, i, uint64(n256)) i-- dAtA[i] = 0x42 - n255, err255 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err255 != nil { - return 0, err255 + n257, err257 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err257 != nil { + return 0, err257 } - i -= n255 - i = encodeVarintTypes(dAtA, i, uint64(n255)) + i -= n257 + i = encodeVarintTypes(dAtA, i, uint64(n257)) i-- dAtA[i] = 0x3a - n256, err256 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.BearerTokenExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.BearerTokenExpires):]) - if err256 != nil { - return 0, err256 + n258, err258 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.BearerTokenExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.BearerTokenExpires):]) + if err258 != nil { + return 0, err258 } - i -= n256 - i = encodeVarintTypes(dAtA, i, uint64(n256)) + i -= n258 + i = encodeVarintTypes(dAtA, i, uint64(n258)) i-- dAtA[i] = 0x32 if len(m.BearerToken) > 0 { @@ -45355,20 +45415,20 @@ func (m *SAMLSessionData) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x22 } - n257, err257 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.ExpireTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.ExpireTime):]) - if err257 != nil { - return 0, err257 + n259, err259 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.ExpireTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.ExpireTime):]) + if err259 != nil { + return 0, err259 } - i -= n257 - i = encodeVarintTypes(dAtA, i, uint64(n257)) + i -= n259 + i = encodeVarintTypes(dAtA, i, uint64(n259)) i-- dAtA[i] = 0x1a - n258, err258 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreateTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreateTime):]) - if err258 != nil { - return 0, err258 + n260, err260 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreateTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreateTime):]) + if err260 != nil { + return 0, err260 } - i -= n258 - i = encodeVarintTypes(dAtA, i, uint64(n258)) + i -= n260 + i = encodeVarintTypes(dAtA, i, uint64(n260)) i-- dAtA[i] = 0x12 if len(m.ID) > 0 { @@ -45650,12 +45710,12 @@ func (m *RemoteClusterStatusV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n262, err262 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) - if err262 != nil { - return 0, err262 + n264, err264 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) + if err264 != nil { + return 0, err264 } - i -= n262 - i = encodeVarintTypes(dAtA, i, uint64(n262)) + i -= n264 + i = encodeVarintTypes(dAtA, i, uint64(n264)) i-- dAtA[i] = 0x12 if len(m.Connection) > 0 { @@ -48943,12 +49003,12 @@ func (m *GithubAuthRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x62 } if m.Expires != nil { - n310, err310 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) - if err310 != nil { - return 0, err310 + n312, err312 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) + if err312 != nil { + return 0, err312 } - i -= n310 - i = encodeVarintTypes(dAtA, i, uint64(n310)) + i -= n312 + i = encodeVarintTypes(dAtA, i, uint64(n312)) i-- dAtA[i] = 0x5a } @@ -49960,21 +50020,21 @@ func (m *LockSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x2a } - n328, err328 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedAt):]) - if err328 != nil { - return 0, err328 + n330, err330 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedAt):]) + if err330 != nil { + return 0, err330 } - i -= n328 - i = encodeVarintTypes(dAtA, i, uint64(n328)) + i -= n330 + i = encodeVarintTypes(dAtA, i, uint64(n330)) i-- dAtA[i] = 0x22 if m.Expires != nil { - n329, err329 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) - if err329 != nil { - return 0, err329 + n331, err331 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) + if err331 != nil { + return 0, err331 } - i -= n329 - i = encodeVarintTypes(dAtA, i, uint64(n329)) + i -= n331 + i = encodeVarintTypes(dAtA, i, uint64(n331)) i-- dAtA[i] = 0x1a } @@ -50772,12 +50832,12 @@ func (m *RegisterUsingTokenRequest) MarshalToSizedBuffer(dAtA []byte) (int, erro dAtA[i] = 0x6a } if m.Expires != nil { - n341, err341 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) - if err341 != nil { - return 0, err341 + n343, err343 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) + if err343 != nil { + return 0, err343 } - i -= n341 - i = encodeVarintTypes(dAtA, i, uint64(n341)) + i -= n343 + i = encodeVarintTypes(dAtA, i, uint64(n343)) i-- dAtA[i] = 0x62 } @@ -50957,12 +51017,12 @@ func (m *RecoveryCodesSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n344, err344 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err344 != nil { - return 0, err344 + n346, err346 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err346 != nil { + return 0, err346 } - i -= n344 - i = encodeVarintTypes(dAtA, i, uint64(n344)) + i -= n346 + i = encodeVarintTypes(dAtA, i, uint64(n346)) i-- dAtA[i] = 0x12 if len(m.Codes) > 0 { @@ -51342,20 +51402,20 @@ func (m *SessionTrackerSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x32 } - n348, err348 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err348 != nil { - return 0, err348 + n350, err350 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err350 != nil { + return 0, err350 } - i -= n348 - i = encodeVarintTypes(dAtA, i, uint64(n348)) + i -= n350 + i = encodeVarintTypes(dAtA, i, uint64(n350)) i-- dAtA[i] = 0x2a - n349, err349 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err349 != nil { - return 0, err349 + n351, err351 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err351 != nil { + return 0, err351 } - i -= n349 - i = encodeVarintTypes(dAtA, i, uint64(n349)) + i -= n351 + i = encodeVarintTypes(dAtA, i, uint64(n351)) i-- dAtA[i] = 0x22 if m.State != 0 { @@ -51466,12 +51526,12 @@ func (m *Participant) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x2a } - n350, err350 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastActive, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastActive):]) - if err350 != nil { - return 0, err350 + n352, err352 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastActive, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastActive):]) + if err352 != nil { + return 0, err352 } - i -= n350 - i = encodeVarintTypes(dAtA, i, uint64(n350)) + i -= n352 + i = encodeVarintTypes(dAtA, i, uint64(n352)) i-- dAtA[i] = 0x22 if len(m.Mode) > 0 { @@ -52183,12 +52243,12 @@ func (m *ClusterAlertSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n363, err363 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err363 != nil { - return 0, err363 + n365, err365 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err365 != nil { + return 0, err365 } - i -= n363 - i = encodeVarintTypes(dAtA, i, uint64(n363)) + i -= n365 + i = encodeVarintTypes(dAtA, i, uint64(n365)) i-- dAtA[i] = 0x1a if len(m.Message) > 0 { @@ -52318,12 +52378,12 @@ func (m *AlertAcknowledgement) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n364, err364 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err364 != nil { - return 0, err364 + n366, err366 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err366 != nil { + return 0, err366 } - i -= n364 - i = encodeVarintTypes(dAtA, i, uint64(n364)) + i -= n366 + i = encodeVarintTypes(dAtA, i, uint64(n366)) i-- dAtA[i] = 0x22 if len(m.Reason) > 0 { @@ -53098,12 +53158,12 @@ func (m *PluginGithubSettings) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n389, err389 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.StartDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.StartDate):]) - if err389 != nil { - return 0, err389 + n391, err391 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.StartDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.StartDate):]) + if err391 != nil { + return 0, err391 } - i -= n389 - i = encodeVarintTypes(dAtA, i, uint64(n389)) + i -= n391 + i = encodeVarintTypes(dAtA, i, uint64(n391)) i-- dAtA[i] = 0x22 if len(m.OrganizationName) > 0 { @@ -55457,12 +55517,12 @@ func (m *PluginStatusV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x32 } - n407, err407 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastSyncTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastSyncTime):]) - if err407 != nil { - return 0, err407 + n409, err409 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastSyncTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastSyncTime):]) + if err409 != nil { + return 0, err409 } - i -= n407 - i = encodeVarintTypes(dAtA, i, uint64(n407)) + i -= n409 + i = encodeVarintTypes(dAtA, i, uint64(n409)) i-- dAtA[i] = 0x1a if len(m.ErrorMessage) > 0 { @@ -55912,22 +55972,22 @@ func (m *PluginOktaStatusDetailsAppGroupSync) MarshalToSizedBuffer(dAtA []byte) dAtA[i] = 0x28 } if m.LastFailed != nil { - n419, err419 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):]) - if err419 != nil { - return 0, err419 + n421, err421 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):]) + if err421 != nil { + return 0, err421 } - i -= n419 - i = encodeVarintTypes(dAtA, i, uint64(n419)) + i -= n421 + i = encodeVarintTypes(dAtA, i, uint64(n421)) i-- dAtA[i] = 0x22 } if m.LastSuccessful != nil { - n420, err420 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):]) - if err420 != nil { - return 0, err420 + n422, err422 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):]) + if err422 != nil { + return 0, err422 } - i -= n420 - i = encodeVarintTypes(dAtA, i, uint64(n420)) + i -= n422 + i = encodeVarintTypes(dAtA, i, uint64(n422)) i-- dAtA[i] = 0x1a } @@ -55986,22 +56046,22 @@ func (m *PluginOktaStatusDetailsUsersSync) MarshalToSizedBuffer(dAtA []byte) (in dAtA[i] = 0x28 } if m.LastFailed != nil { - n421, err421 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):]) - if err421 != nil { - return 0, err421 + n423, err423 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):]) + if err423 != nil { + return 0, err423 } - i -= n421 - i = encodeVarintTypes(dAtA, i, uint64(n421)) + i -= n423 + i = encodeVarintTypes(dAtA, i, uint64(n423)) i-- dAtA[i] = 0x22 } if m.LastSuccessful != nil { - n422, err422 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):]) - if err422 != nil { - return 0, err422 + n424, err424 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):]) + if err424 != nil { + return 0, err424 } - i -= n422 - i = encodeVarintTypes(dAtA, i, uint64(n422)) + i -= n424 + i = encodeVarintTypes(dAtA, i, uint64(n424)) i-- dAtA[i] = 0x1a } @@ -56120,22 +56180,22 @@ func (m *PluginOktaStatusDetailsAccessListsSync) MarshalToSizedBuffer(dAtA []byt } } if m.LastFailed != nil { - n423, err423 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):]) - if err423 != nil { - return 0, err423 + n425, err425 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):]) + if err425 != nil { + return 0, err425 } - i -= n423 - i = encodeVarintTypes(dAtA, i, uint64(n423)) + i -= n425 + i = encodeVarintTypes(dAtA, i, uint64(n425)) i-- dAtA[i] = 0x22 } if m.LastSuccessful != nil { - n424, err424 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):]) - if err424 != nil { - return 0, err424 + n426, err426 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):]) + if err426 != nil { + return 0, err426 } - i -= n424 - i = encodeVarintTypes(dAtA, i, uint64(n424)) + i -= n426 + i = encodeVarintTypes(dAtA, i, uint64(n426)) i-- dAtA[i] = 0x1a } @@ -56189,22 +56249,22 @@ func (m *PluginOktaStatusSystemLogExporter) MarshalToSizedBuffer(dAtA []byte) (i dAtA[i] = 0x4a } if m.LastFailed != nil { - n425, err425 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):]) - if err425 != nil { - return 0, err425 + n427, err427 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):]) + if err427 != nil { + return 0, err427 } - i -= n425 - i = encodeVarintTypes(dAtA, i, uint64(n425)) + i -= n427 + i = encodeVarintTypes(dAtA, i, uint64(n427)) i-- dAtA[i] = 0x22 } if m.LastSuccessful != nil { - n426, err426 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):]) - if err426 != nil { - return 0, err426 + n428, err428 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):]) + if err428 != nil { + return 0, err428 } - i -= n426 - i = encodeVarintTypes(dAtA, i, uint64(n426)) + i -= n428 + i = encodeVarintTypes(dAtA, i, uint64(n428)) i-- dAtA[i] = 0x1a } @@ -56370,12 +56430,12 @@ func (m *PluginOAuth2AccessTokenCredentials) MarshalToSizedBuffer(dAtA []byte) ( i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n431, err431 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err431 != nil { - return 0, err431 + n433, err433 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err433 != nil { + return 0, err433 } - i -= n431 - i = encodeVarintTypes(dAtA, i, uint64(n431)) + i -= n433 + i = encodeVarintTypes(dAtA, i, uint64(n433)) i-- dAtA[i] = 0x1a if len(m.RefreshToken) > 0 { @@ -57333,20 +57393,20 @@ func (m *ScheduledAgentUpgradeWindow) MarshalToSizedBuffer(dAtA []byte) (int, er i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n446, err446 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Stop, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Stop):]) - if err446 != nil { - return 0, err446 + n448, err448 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Stop, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Stop):]) + if err448 != nil { + return 0, err448 } - i -= n446 - i = encodeVarintTypes(dAtA, i, uint64(n446)) + i -= n448 + i = encodeVarintTypes(dAtA, i, uint64(n448)) i-- dAtA[i] = 0x12 - n447, err447 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Start, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Start):]) - if err447 != nil { - return 0, err447 + n449, err449 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Start, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Start):]) + if err449 != nil { + return 0, err449 } - i -= n447 - i = encodeVarintTypes(dAtA, i, uint64(n447)) + i -= n449 + i = encodeVarintTypes(dAtA, i, uint64(n449)) i-- dAtA[i] = 0xa return len(dAtA) - i, nil @@ -57773,12 +57833,12 @@ func (m *OktaAssignmentSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x30 } - n454, err454 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastTransition, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastTransition):]) - if err454 != nil { - return 0, err454 + n456, err456 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastTransition, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastTransition):]) + if err456 != nil { + return 0, err456 } - i -= n454 - i = encodeVarintTypes(dAtA, i, uint64(n454)) + i -= n456 + i = encodeVarintTypes(dAtA, i, uint64(n456)) i-- dAtA[i] = 0x2a if m.Status != 0 { @@ -57786,12 +57846,12 @@ func (m *OktaAssignmentSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x20 } - n455, err455 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CleanupTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CleanupTime):]) - if err455 != nil { - return 0, err455 + n457, err457 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CleanupTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CleanupTime):]) + if err457 != nil { + return 0, err457 } - i -= n455 - i = encodeVarintTypes(dAtA, i, uint64(n455)) + i -= n457 + i = encodeVarintTypes(dAtA, i, uint64(n457)) i-- dAtA[i] = 0x1a if len(m.Targets) > 0 { @@ -58406,20 +58466,20 @@ func (m *AWSRolesAnywhereProfileSyncIterationSummary) MarshalToSizedBuffer(dAtA i-- dAtA[i] = 0x1a } - n467, err467 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.EndTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.EndTime):]) - if err467 != nil { - return 0, err467 + n469, err469 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.EndTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.EndTime):]) + if err469 != nil { + return 0, err469 } - i -= n467 - i = encodeVarintTypes(dAtA, i, uint64(n467)) + i -= n469 + i = encodeVarintTypes(dAtA, i, uint64(n469)) i-- dAtA[i] = 0x12 - n468, err468 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.StartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.StartTime):]) - if err468 != nil { - return 0, err468 + n470, err470 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.StartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.StartTime):]) + if err470 != nil { + return 0, err470 } - i -= n468 - i = encodeVarintTypes(dAtA, i, uint64(n468)) + i -= n470 + i = encodeVarintTypes(dAtA, i, uint64(n470)) i-- dAtA[i] = 0xa return len(dAtA) - i, nil @@ -59786,12 +59846,12 @@ func (m *AccessGraphSync) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x1a } } - n490, err490 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.PollInterval, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.PollInterval):]) - if err490 != nil { - return 0, err490 + n492, err492 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.PollInterval, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.PollInterval):]) + if err492 != nil { + return 0, err492 } - i -= n490 - i = encodeVarintTypes(dAtA, i, uint64(n490)) + i -= n492 + i = encodeVarintTypes(dAtA, i, uint64(n492)) i-- dAtA[i] = 0x12 if len(m.AWS) > 0 { @@ -60055,12 +60115,12 @@ func (m *TargetHealth) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x2a } if m.TransitionTimestamp != nil { - n495, err495 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.TransitionTimestamp, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.TransitionTimestamp):]) - if err495 != nil { - return 0, err495 + n497, err497 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.TransitionTimestamp, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.TransitionTimestamp):]) + if err497 != nil { + return 0, err497 } - i -= n495 - i = encodeVarintTypes(dAtA, i, uint64(n495)) + i -= n497 + i = encodeVarintTypes(dAtA, i, uint64(n497)) i-- dAtA[i] = 0x22 } @@ -63794,6 +63854,10 @@ func (m *AuthPreferenceSpecV2) Size() (n int) { l = m.StableUnixUserConfig.Size() n += 2 + l + sovTypes(uint64(l)) } + if m.AllowCLIAuthViaBrowser != nil { + l = m.AllowCLIAuthViaBrowser.Size() + n += 2 + l + sovTypes(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -66067,6 +66131,18 @@ func (m *MFADevice_Sso) Size() (n int) { } return n } +func (m *MFADevice_Browser) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Browser != nil { + l = m.Browser.Size() + n += 1 + l + sovTypes(uint64(l)) + } + return n +} func (m *TOTPDevice) Size() (n int) { if m == nil { return 0 @@ -97953,6 +98029,42 @@ func (m *AuthPreferenceSpecV2) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 24: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowCLIAuthViaBrowser", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AllowCLIAuthViaBrowser == nil { + m.AllowCLIAuthViaBrowser = &BoolOption{} + } + if err := m.AllowCLIAuthViaBrowser.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -112531,6 +112643,41 @@ func (m *MFADevice) Unmarshal(dAtA []byte) error { } m.Device = &MFADevice_Sso{v} iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Browser", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &BrowserMFADevice{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Device = &MFADevice_Browser{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) diff --git a/buf.yaml b/buf.yaml index 78c295da2dd3e..75a1d298c43f0 100644 --- a/buf.yaml +++ b/buf.yaml @@ -59,12 +59,14 @@ lint: PACKAGE_DIRECTORY_MATCH: - api/proto/teleport/legacy/client/proto/joinservice.proto - api/proto/teleport/legacy/types/device.proto + - api/proto/teleport/legacy/types/mfa_device.proto - api/proto/teleport/legacy/types/trusted_device_requirement.proto - api/proto/teleport/legacy/types/resources.proto - api/proto/teleport/legacy/types/webauthn/webauthn.proto PACKAGE_VERSION_SUFFIX: - api/proto/teleport/legacy/client/proto/joinservice.proto - api/proto/teleport/legacy/types/device.proto + - api/proto/teleport/legacy/types/mfa_device.proto - api/proto/teleport/legacy/types/trusted_device_requirement.proto - api/proto/teleport/legacy/types/resources.proto - api/proto/teleport/legacy/types/webauthn/webauthn.proto diff --git a/docs/pages/reference/infrastructure-as-code/terraform-provider/data-sources/auth_preference.mdx b/docs/pages/reference/infrastructure-as-code/terraform-provider/data-sources/auth_preference.mdx index 149dc2fcb54e3..7e40290c3a5de 100644 --- a/docs/pages/reference/infrastructure-as-code/terraform-provider/data-sources/auth_preference.mdx +++ b/docs/pages/reference/infrastructure-as-code/terraform-provider/data-sources/auth_preference.mdx @@ -31,6 +31,7 @@ Teleport Terraform provider. Optional: +- `allow_cli_auth_via_browser` (Boolean) AllowCLIAuthViaBrowser enables/disables browser-based authentication for authenticating CLI sessions. When set to false, authentication flows that require a browser will be disabled. Defaults to true if the Webauthn is configured, defaults to false otherwise. - `allow_headless` (Boolean) AllowHeadless enables/disables headless support. Headless authentication requires Webauthn to work. Defaults to true if the Webauthn is configured, defaults to false otherwise. - `allow_local_auth` (Boolean) AllowLocalAuth is true if local authentication is enabled. - `allow_passwordless` (Boolean) AllowPasswordless enables/disables passwordless support. Passwordless requires Webauthn to work. Defaults to true if the Webauthn is configured, defaults to false otherwise. diff --git a/docs/pages/reference/infrastructure-as-code/terraform-provider/resources/auth_preference.mdx b/docs/pages/reference/infrastructure-as-code/terraform-provider/resources/auth_preference.mdx index abbdc638183f9..dc1f759699f29 100644 --- a/docs/pages/reference/infrastructure-as-code/terraform-provider/resources/auth_preference.mdx +++ b/docs/pages/reference/infrastructure-as-code/terraform-provider/resources/auth_preference.mdx @@ -50,6 +50,7 @@ resource "teleport_auth_preference" "example" { Optional: +- `allow_cli_auth_via_browser` (Boolean) AllowCLIAuthViaBrowser enables/disables browser-based authentication for authenticating CLI sessions. When set to false, authentication flows that require a browser will be disabled. Defaults to true if the Webauthn is configured, defaults to false otherwise. - `allow_headless` (Boolean) AllowHeadless enables/disables headless support. Headless authentication requires Webauthn to work. Defaults to true if the Webauthn is configured, defaults to false otherwise. - `allow_local_auth` (Boolean) AllowLocalAuth is true if local authentication is enabled. - `allow_passwordless` (Boolean) AllowPasswordless enables/disables passwordless support. Passwordless requires Webauthn to work. Defaults to true if the Webauthn is configured, defaults to false otherwise. diff --git a/gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service.pb.go b/gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service.pb.go index d6532b6889ffc..093bc967da88f 100644 --- a/gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service.pb.go +++ b/gen/proto/go/teleport/lib/teleterm/v1/tshd_events_service.pb.go @@ -24,6 +24,7 @@ package teletermv1 import ( + v1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -773,6 +774,8 @@ type PromptMFARequest struct { // per-session MFA but we may still need to know that the user has TOTP // configured as an option. PerSessionMfa bool `protobuf:"varint,7,opt,name=per_session_mfa,json=perSessionMfa,proto3" json:"per_session_mfa,omitempty"` + // BrowserMFAChallenge is sent when browser-based MFA is supported. + Browser *v1.BrowserMFAChallenge `protobuf:"bytes,8,opt,name=browser,proto3" json:"browser,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -849,6 +852,13 @@ func (x *PromptMFARequest) GetPerSessionMfa() bool { return false } +func (x *PromptMFARequest) GetBrowser() *v1.BrowserMFAChallenge { + if x != nil { + return x.Browser + } + return nil +} + // SSOChallenge contains SSO challenge details. type SSOChallenge struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -1593,7 +1603,7 @@ var File_teleport_lib_teleterm_v1_tshd_events_service_proto protoreflect.FileDes const file_teleport_lib_teleterm_v1_tshd_events_service_proto_rawDesc = "" + "\n" + - "2teleport/lib/teleterm/v1/tshd_events_service.proto\x12\x18teleport.lib.teleterm.v1\x1a\"teleport/lib/teleterm/v1/app.proto\"\xff\x01\n" + + "2teleport/lib/teleterm/v1/tshd_events_service.proto\x12\x18teleport.lib.teleterm.v1\x1a\"teleport/lib/teleterm/v1/app.proto\x1a\x1fteleport/mfa/v1/challenge.proto\"\xff\x01\n" + "\x0eReloginRequest\x12(\n" + "\x10root_cluster_uri\x18\x01 \x01(\tR\x0erootClusterUri\x12`\n" + "\x14gateway_cert_expired\x18\x02 \x01(\v2,.teleport.lib.teleterm.v1.GatewayCertExpiredH\x00R\x12gatewayCertExpired\x12W\n" + @@ -1637,7 +1647,7 @@ const file_teleport_lib_teleterm_v1_tshd_events_service_proto_rawDesc = "" + "\x10root_cluster_uri\x18\x01 \x01(\tR\x0erootClusterUri\x12<\n" + "\x1aheadless_authentication_id\x18\x02 \x01(\tR\x18headlessAuthenticationId\x12I\n" + "!headless_authentication_client_ip\x18\x03 \x01(\tR\x1eheadlessAuthenticationClientIp\"+\n" + - ")SendPendingHeadlessAuthenticationResponse\"\xf5\x01\n" + + ")SendPendingHeadlessAuthenticationResponse\"\xb5\x02\n" + "\x10PromptMFARequest\x12\x16\n" + "\x06reason\x18\x02 \x01(\tR\x06reason\x12\x12\n" + "\x04totp\x18\x03 \x01(\bR\x04totp\x12\x1a\n" + @@ -1645,7 +1655,8 @@ const file_teleport_lib_teleterm_v1_tshd_events_service_proto_rawDesc = "" + "\vcluster_uri\x18\x05 \x01(\tR\n" + "clusterUri\x128\n" + "\x03sso\x18\x06 \x01(\v2&.teleport.lib.teleterm.v1.SSOChallengeR\x03sso\x12&\n" + - "\x0fper_session_mfa\x18\a \x01(\bR\rperSessionMfaJ\x04\b\x01\x10\x02R\x10root_cluster_uri\"\x9e\x01\n" + + "\x0fper_session_mfa\x18\a \x01(\bR\rperSessionMfa\x12>\n" + + "\abrowser\x18\b \x01(\v2$.teleport.mfa.v1.BrowserMFAChallengeR\abrowserJ\x04\b\x01\x10\x02R\x10root_cluster_uri\"\x9e\x01\n" + "\fSSOChallenge\x12!\n" + "\fconnector_id\x18\x01 \x01(\tR\vconnectorId\x12%\n" + "\x0econnector_type\x18\x02 \x01(\tR\rconnectorType\x12!\n" + @@ -1739,6 +1750,7 @@ var file_teleport_lib_teleterm_v1_tshd_events_service_proto_goTypes = []any{ (*ReportUnexpectedVnetShutdownResponse)(nil), // 27: teleport.lib.teleterm.v1.ReportUnexpectedVnetShutdownResponse (*RouteToApp)(nil), // 28: teleport.lib.teleterm.v1.RouteToApp (*PortRange)(nil), // 29: teleport.lib.teleterm.v1.PortRange + (*v1.BrowserMFAChallenge)(nil), // 30: teleport.mfa.v1.BrowserMFAChallenge } var file_teleport_lib_teleterm_v1_tshd_events_service_proto_depIdxs = []int32{ 1, // 0: teleport.lib.teleterm.v1.ReloginRequest.gateway_cert_expired:type_name -> teleport.lib.teleterm.v1.GatewayCertExpired @@ -1751,32 +1763,33 @@ var file_teleport_lib_teleterm_v1_tshd_events_service_proto_depIdxs = []int32{ 8, // 7: teleport.lib.teleterm.v1.CannotProxyVnetConnection.invalid_local_port:type_name -> teleport.lib.teleterm.v1.InvalidLocalPort 29, // 8: teleport.lib.teleterm.v1.InvalidLocalPort.tcp_ports:type_name -> teleport.lib.teleterm.v1.PortRange 13, // 9: teleport.lib.teleterm.v1.PromptMFARequest.sso:type_name -> teleport.lib.teleterm.v1.SSOChallenge - 25, // 10: teleport.lib.teleterm.v1.GetUsageReportingSettingsResponse.usage_reporting_settings:type_name -> teleport.lib.teleterm.v1.UsageReportingSettings - 0, // 11: teleport.lib.teleterm.v1.TshdEventsService.Relogin:input_type -> teleport.lib.teleterm.v1.ReloginRequest - 4, // 12: teleport.lib.teleterm.v1.TshdEventsService.SendNotification:input_type -> teleport.lib.teleterm.v1.SendNotificationRequest - 10, // 13: teleport.lib.teleterm.v1.TshdEventsService.SendPendingHeadlessAuthentication:input_type -> teleport.lib.teleterm.v1.SendPendingHeadlessAuthenticationRequest - 12, // 14: teleport.lib.teleterm.v1.TshdEventsService.PromptMFA:input_type -> teleport.lib.teleterm.v1.PromptMFARequest - 15, // 15: teleport.lib.teleterm.v1.TshdEventsService.PromptHardwareKeyPIN:input_type -> teleport.lib.teleterm.v1.PromptHardwareKeyPINRequest - 17, // 16: teleport.lib.teleterm.v1.TshdEventsService.PromptHardwareKeyTouch:input_type -> teleport.lib.teleterm.v1.PromptHardwareKeyTouchRequest - 19, // 17: teleport.lib.teleterm.v1.TshdEventsService.PromptHardwareKeyPINChange:input_type -> teleport.lib.teleterm.v1.PromptHardwareKeyPINChangeRequest - 21, // 18: teleport.lib.teleterm.v1.TshdEventsService.ConfirmHardwareKeySlotOverwrite:input_type -> teleport.lib.teleterm.v1.ConfirmHardwareKeySlotOverwriteRequest - 23, // 19: teleport.lib.teleterm.v1.TshdEventsService.GetUsageReportingSettings:input_type -> teleport.lib.teleterm.v1.GetUsageReportingSettingsRequest - 26, // 20: teleport.lib.teleterm.v1.TshdEventsService.ReportUnexpectedVnetShutdown:input_type -> teleport.lib.teleterm.v1.ReportUnexpectedVnetShutdownRequest - 3, // 21: teleport.lib.teleterm.v1.TshdEventsService.Relogin:output_type -> teleport.lib.teleterm.v1.ReloginResponse - 9, // 22: teleport.lib.teleterm.v1.TshdEventsService.SendNotification:output_type -> teleport.lib.teleterm.v1.SendNotificationResponse - 11, // 23: teleport.lib.teleterm.v1.TshdEventsService.SendPendingHeadlessAuthentication:output_type -> teleport.lib.teleterm.v1.SendPendingHeadlessAuthenticationResponse - 14, // 24: teleport.lib.teleterm.v1.TshdEventsService.PromptMFA:output_type -> teleport.lib.teleterm.v1.PromptMFAResponse - 16, // 25: teleport.lib.teleterm.v1.TshdEventsService.PromptHardwareKeyPIN:output_type -> teleport.lib.teleterm.v1.PromptHardwareKeyPINResponse - 18, // 26: teleport.lib.teleterm.v1.TshdEventsService.PromptHardwareKeyTouch:output_type -> teleport.lib.teleterm.v1.PromptHardwareKeyTouchResponse - 20, // 27: teleport.lib.teleterm.v1.TshdEventsService.PromptHardwareKeyPINChange:output_type -> teleport.lib.teleterm.v1.PromptHardwareKeyPINChangeResponse - 22, // 28: teleport.lib.teleterm.v1.TshdEventsService.ConfirmHardwareKeySlotOverwrite:output_type -> teleport.lib.teleterm.v1.ConfirmHardwareKeySlotOverwriteResponse - 24, // 29: teleport.lib.teleterm.v1.TshdEventsService.GetUsageReportingSettings:output_type -> teleport.lib.teleterm.v1.GetUsageReportingSettingsResponse - 27, // 30: teleport.lib.teleterm.v1.TshdEventsService.ReportUnexpectedVnetShutdown:output_type -> teleport.lib.teleterm.v1.ReportUnexpectedVnetShutdownResponse - 21, // [21:31] is the sub-list for method output_type - 11, // [11:21] is the sub-list for method input_type - 11, // [11:11] is the sub-list for extension type_name - 11, // [11:11] is the sub-list for extension extendee - 0, // [0:11] is the sub-list for field type_name + 30, // 10: teleport.lib.teleterm.v1.PromptMFARequest.browser:type_name -> teleport.mfa.v1.BrowserMFAChallenge + 25, // 11: teleport.lib.teleterm.v1.GetUsageReportingSettingsResponse.usage_reporting_settings:type_name -> teleport.lib.teleterm.v1.UsageReportingSettings + 0, // 12: teleport.lib.teleterm.v1.TshdEventsService.Relogin:input_type -> teleport.lib.teleterm.v1.ReloginRequest + 4, // 13: teleport.lib.teleterm.v1.TshdEventsService.SendNotification:input_type -> teleport.lib.teleterm.v1.SendNotificationRequest + 10, // 14: teleport.lib.teleterm.v1.TshdEventsService.SendPendingHeadlessAuthentication:input_type -> teleport.lib.teleterm.v1.SendPendingHeadlessAuthenticationRequest + 12, // 15: teleport.lib.teleterm.v1.TshdEventsService.PromptMFA:input_type -> teleport.lib.teleterm.v1.PromptMFARequest + 15, // 16: teleport.lib.teleterm.v1.TshdEventsService.PromptHardwareKeyPIN:input_type -> teleport.lib.teleterm.v1.PromptHardwareKeyPINRequest + 17, // 17: teleport.lib.teleterm.v1.TshdEventsService.PromptHardwareKeyTouch:input_type -> teleport.lib.teleterm.v1.PromptHardwareKeyTouchRequest + 19, // 18: teleport.lib.teleterm.v1.TshdEventsService.PromptHardwareKeyPINChange:input_type -> teleport.lib.teleterm.v1.PromptHardwareKeyPINChangeRequest + 21, // 19: teleport.lib.teleterm.v1.TshdEventsService.ConfirmHardwareKeySlotOverwrite:input_type -> teleport.lib.teleterm.v1.ConfirmHardwareKeySlotOverwriteRequest + 23, // 20: teleport.lib.teleterm.v1.TshdEventsService.GetUsageReportingSettings:input_type -> teleport.lib.teleterm.v1.GetUsageReportingSettingsRequest + 26, // 21: teleport.lib.teleterm.v1.TshdEventsService.ReportUnexpectedVnetShutdown:input_type -> teleport.lib.teleterm.v1.ReportUnexpectedVnetShutdownRequest + 3, // 22: teleport.lib.teleterm.v1.TshdEventsService.Relogin:output_type -> teleport.lib.teleterm.v1.ReloginResponse + 9, // 23: teleport.lib.teleterm.v1.TshdEventsService.SendNotification:output_type -> teleport.lib.teleterm.v1.SendNotificationResponse + 11, // 24: teleport.lib.teleterm.v1.TshdEventsService.SendPendingHeadlessAuthentication:output_type -> teleport.lib.teleterm.v1.SendPendingHeadlessAuthenticationResponse + 14, // 25: teleport.lib.teleterm.v1.TshdEventsService.PromptMFA:output_type -> teleport.lib.teleterm.v1.PromptMFAResponse + 16, // 26: teleport.lib.teleterm.v1.TshdEventsService.PromptHardwareKeyPIN:output_type -> teleport.lib.teleterm.v1.PromptHardwareKeyPINResponse + 18, // 27: teleport.lib.teleterm.v1.TshdEventsService.PromptHardwareKeyTouch:output_type -> teleport.lib.teleterm.v1.PromptHardwareKeyTouchResponse + 20, // 28: teleport.lib.teleterm.v1.TshdEventsService.PromptHardwareKeyPINChange:output_type -> teleport.lib.teleterm.v1.PromptHardwareKeyPINChangeResponse + 22, // 29: teleport.lib.teleterm.v1.TshdEventsService.ConfirmHardwareKeySlotOverwrite:output_type -> teleport.lib.teleterm.v1.ConfirmHardwareKeySlotOverwriteResponse + 24, // 30: teleport.lib.teleterm.v1.TshdEventsService.GetUsageReportingSettings:output_type -> teleport.lib.teleterm.v1.GetUsageReportingSettingsResponse + 27, // 31: teleport.lib.teleterm.v1.TshdEventsService.ReportUnexpectedVnetShutdown:output_type -> teleport.lib.teleterm.v1.ReportUnexpectedVnetShutdownResponse + 22, // [22:32] is the sub-list for method output_type + 12, // [12:22] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_teleport_lib_teleterm_v1_tshd_events_service_proto_init() } diff --git a/gen/proto/ts/teleport/legacy/types/webauthn/webauthn_pb.ts b/gen/proto/ts/teleport/legacy/types/webauthn/webauthn_pb.ts new file mode 100644 index 0000000000000..210bd37449c57 --- /dev/null +++ b/gen/proto/ts/teleport/legacy/types/webauthn/webauthn_pb.ts @@ -0,0 +1,1480 @@ +/* eslint-disable */ +// @generated by protobuf-ts 2.9.3 with parameter add_pb_suffix,eslint_disable,generate_dependencies,server_grpc1,ts_nocheck +// @generated from protobuf file "teleport/legacy/types/webauthn/webauthn.proto" (package "webauthn", syntax proto3) +// tslint:disable +// @ts-nocheck +// +// Copyright 2021 Gravitational, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +import type { BinaryWriteOptions } from "@protobuf-ts/runtime"; +import type { IBinaryWriter } from "@protobuf-ts/runtime"; +import { WireType } from "@protobuf-ts/runtime"; +import type { BinaryReadOptions } from "@protobuf-ts/runtime"; +import type { IBinaryReader } from "@protobuf-ts/runtime"; +import { UnknownFieldHandler } from "@protobuf-ts/runtime"; +import type { PartialMessage } from "@protobuf-ts/runtime"; +import { reflectionMergePartial } from "@protobuf-ts/runtime"; +import { MessageType } from "@protobuf-ts/runtime"; +// ----------------------------------------------------------------------------- +// Assertion (aka login). +// ----------------------------------------------------------------------------- + +/** + * Credential assertion used for login ceremonies. + * + * @generated from protobuf message webauthn.CredentialAssertion + */ +export interface CredentialAssertion { + /** + * @generated from protobuf field: webauthn.PublicKeyCredentialRequestOptions public_key = 1; + */ + publicKey?: PublicKeyCredentialRequestOptions; +} +/** + * Request options necessary for credential assertions, aka login ceremonies. + * See https://www.w3.org/TR/webauthn-2/#dictionary-assertion-options or + * refer to navigator.credentials.get in your browser. + * + * @generated from protobuf message webauthn.PublicKeyCredentialRequestOptions + */ +export interface PublicKeyCredentialRequestOptions { + /** + * Raw challenge used for assertion. + * + * @generated from protobuf field: bytes challenge = 1; + */ + challenge: Uint8Array; + /** + * Timeout in milliseconds. + * + * @generated from protobuf field: int64 timeout_ms = 2; + */ + timeoutMs: bigint; + /** + * Relying Party ID. + * + * @generated from protobuf field: string rp_id = 3; + */ + rpId: string; + /** + * Allowed credentials for assertion. + * + * @generated from protobuf field: repeated webauthn.CredentialDescriptor allow_credentials = 4; + */ + allowCredentials: CredentialDescriptor[]; + /** + * Extensions supplied by the Relying Party. + * + * @generated from protobuf field: webauthn.AuthenticationExtensionsClientInputs extensions = 5; + */ + extensions?: AuthenticationExtensionsClientInputs; + /** + * User verification requirement. + * + * @generated from protobuf field: string user_verification = 6; + */ + userVerification: string; +} +/** + * Assertion response returned by the authenticator. + * Refer to navigator.credentials.get in your browser. + * + * Note: assertion responses return both "rawId" and "id" (RawURLEncoding of + * "id"), but it seemed pointless to have both here. + * + * @generated from protobuf message webauthn.CredentialAssertionResponse + */ +export interface CredentialAssertionResponse { + /** + * Type of the credential, usually "public-key". + * + * @generated from protobuf field: string type = 1; + */ + type: string; + /** + * Raw Credential ID. + * + * @generated from protobuf field: bytes raw_id = 2; + */ + rawId: Uint8Array; + /** + * Assertion response from the authenticator. + * + * @generated from protobuf field: webauthn.AuthenticatorAssertionResponse response = 3; + */ + response?: AuthenticatorAssertionResponse; + /** + * Extensions supplied by the authenticator. + * + * @generated from protobuf field: webauthn.AuthenticationExtensionsClientOutputs extensions = 4; + */ + extensions?: AuthenticationExtensionsClientOutputs; +} +/** + * Authenticator assertion response. + * https://www.w3.org/TR/webauthn-2/#authenticatorassertionresponse + * + * @generated from protobuf message webauthn.AuthenticatorAssertionResponse + */ +export interface AuthenticatorAssertionResponse { + /** + * Raw client data JSON, exactly as signed by the authenticator. + * https://www.w3.org/TR/webauthn-2/#dictdef-collectedclientdata. + * + * @generated from protobuf field: bytes client_data_json = 1; + */ + clientDataJson: Uint8Array; + /** + * Raw authenticator data, exactly as signed by the authenticator. + * https://www.w3.org/TR/webauthn-2/#sctn-authenticator-data. + * + * @generated from protobuf field: bytes authenticator_data = 2; + */ + authenticatorData: Uint8Array; + /** + * Raw assertion signature performed authenticatorData|clientDataJSON. + * https://www.w3.org/TR/webauthn-2/#assertion-signature. + * + * @generated from protobuf field: bytes signature = 3; + */ + signature: Uint8Array; + /** + * Raw user handle returned by the authenticator, if any. + * + * @generated from protobuf field: bytes user_handle = 4; + */ + userHandle: Uint8Array; +} +// ----------------------------------------------------------------------------- +// Creation (aka registration). +// ----------------------------------------------------------------------------- + +/** + * Credential creation used for registration ceremonies. + * + * @generated from protobuf message webauthn.CredentialCreation + */ +export interface CredentialCreation { + /** + * @generated from protobuf field: webauthn.PublicKeyCredentialCreationOptions public_key = 1; + */ + publicKey?: PublicKeyCredentialCreationOptions; +} +/** + * Request options necessary for credential creation, aka registration + * ceremonies. + * See + * https://www.w3.org/TR/webauthn-2/#dictdef-publickeycredentialcreationoptions + * or refer to navigator.credentials.create in your browser. + * + * @generated from protobuf message webauthn.PublicKeyCredentialCreationOptions + */ +export interface PublicKeyCredentialCreationOptions { + /** + * Raw challenge used for creation. + * + * @generated from protobuf field: bytes challenge = 1; + */ + challenge: Uint8Array; + /** + * Relying party information. + * + * @generated from protobuf field: webauthn.RelyingPartyEntity rp = 2; + */ + rp?: RelyingPartyEntity; + /** + * User information. + * + * @generated from protobuf field: webauthn.UserEntity user = 3; + */ + user?: UserEntity; + /** + * Desired properties for the credential to be created, from most to least + * preferred. + * + * @generated from protobuf field: repeated webauthn.CredentialParameter credential_parameters = 4; + */ + credentialParameters: CredentialParameter[]; + /** + * Timeout in milliseconds. + * + * @generated from protobuf field: int64 timeout_ms = 5; + */ + timeoutMs: bigint; + /** + * Credentials excluded from the ceremony. + * + * @generated from protobuf field: repeated webauthn.CredentialDescriptor exclude_credentials = 6; + */ + excludeCredentials: CredentialDescriptor[]; + /** + * Attestation requested, defaulting to "none". + * https://www.w3.org/TR/webauthn-2/#enumdef-attestationconveyancepreference. + * + * @generated from protobuf field: string attestation = 7; + */ + attestation: string; + /** + * Extensions supplied by the Relying Party. + * + * @generated from protobuf field: webauthn.AuthenticationExtensionsClientInputs extensions = 8; + */ + extensions?: AuthenticationExtensionsClientInputs; + /** + * Authenticator selection criteria for the new credential. + * + * @generated from protobuf field: webauthn.AuthenticatorSelection authenticator_selection = 9; + */ + authenticatorSelection?: AuthenticatorSelection; +} +/** + * Credential creation response returned by the authenticator. + * Refer to navigator.credentials.create in your browser. + * + * Note: creation responses return both "rawId" and "id" (RawURLEncoding of + * "id"), but it seemed pointless to have both here. + * + * @generated from protobuf message webauthn.CredentialCreationResponse + */ +export interface CredentialCreationResponse { + /** + * Type of the credential, usually "public-key". + * + * @generated from protobuf field: string type = 1; + */ + type: string; + /** + * Raw Credential ID. + * + * @generated from protobuf field: bytes raw_id = 2; + */ + rawId: Uint8Array; + /** + * Attestation response from the authenticator. + * + * @generated from protobuf field: webauthn.AuthenticatorAttestationResponse response = 3; + */ + response?: AuthenticatorAttestationResponse; + /** + * Extensions supplied by the authenticator. + * + * @generated from protobuf field: webauthn.AuthenticationExtensionsClientOutputs extensions = 4; + */ + extensions?: AuthenticationExtensionsClientOutputs; +} +/** + * Attestation response from the authentication, ie, the response to a + * credential creation request. + * https://www.w3.org/TR/webauthn-2/#authenticatorattestationresponse. + * + * @generated from protobuf message webauthn.AuthenticatorAttestationResponse + */ +export interface AuthenticatorAttestationResponse { + /** + * Raw client data JSON, exactly as signed by the authenticator. + * https://www.w3.org/TR/webauthn-2/#dictdef-collectedclientdata. + * + * @generated from protobuf field: bytes client_data_json = 1; + */ + clientDataJson: Uint8Array; + /** + * Raw attestation object. + * https://www.w3.org/TR/webauthn-2/#attestation-object + * + * @generated from protobuf field: bytes attestation_object = 2; + */ + attestationObject: Uint8Array; +} +// ----------------------------------------------------------------------------- +// Common WebAuthn objects. +// ----------------------------------------------------------------------------- + +/** + * Extensions supplied by the Relying Party during credential assertion or + * creation. + * https://www.w3.org/TR/webauthn-2/#client-extension-input + * + * @generated from protobuf message webauthn.AuthenticationExtensionsClientInputs + */ +export interface AuthenticationExtensionsClientInputs { + /** + * U2F application ID to be used by the authenticator, if any. + * Only available if using U2F compatibility mode. + * https://www.w3.org/TR/webauthn-2/#sctn-appid-extension. + * + * @generated from protobuf field: string app_id = 1; + */ + appId: string; + /** + * Enables the credProps extension. + * https://w3c.github.io/webauthn/#sctn-authenticator-credential-properties-extension + * + * @generated from protobuf field: bool cred_props = 2; + */ + credProps: boolean; +} +/** + * Extensions supplied by the authenticator to the Relying Party, during + * credential assertion or creation. + * https://www.w3.org/TR/webauthn-2/#client-extension-output. + * + * @generated from protobuf message webauthn.AuthenticationExtensionsClientOutputs + */ +export interface AuthenticationExtensionsClientOutputs { + /** + * If true, the AppID extension was used by the authenticator, which changes + * the rpIdHash accordingly. + * https://www.w3.org/TR/webauthn-2/#sctn-appid-extension. + * + * @generated from protobuf field: bool app_id = 1; + */ + appId: boolean; + /** + * Credential properties per credProps extension. + * https://w3c.github.io/webauthn/#sctn-authenticator-credential-properties-extension. + * + * @generated from protobuf field: webauthn.CredentialPropertiesOutput cred_props = 2; + */ + credProps?: CredentialPropertiesOutput; +} +/** + * CredentialPropertiesOutput is the output of the credProps extension. + * + * @generated from protobuf message webauthn.CredentialPropertiesOutput + */ +export interface CredentialPropertiesOutput { + /** + * If true, the created credential is a resident key (regardless of the + * AuthenticatorSelection.require_resident_key value). + * OPTIONAL by specification. + * + * @generated from protobuf field: bool rk = 1; + */ + rk: boolean; +} +/** + * Authenticator selection criteria. + * Restricts the choice of authenticator for credential creation. + * + * @generated from protobuf message webauthn.AuthenticatorSelection + */ +export interface AuthenticatorSelection { + /** + * Authenticator attachment, empty means no particular attachment is + * required. + * + * @generated from protobuf field: string authenticator_attachment = 1; + */ + authenticatorAttachment: string; + /** + * Resident key requirement, if true the authenticator must create a resident + * key. + * + * @generated from protobuf field: bool require_resident_key = 2; + */ + requireResidentKey: boolean; + /** + * User verification requirement for authenticators. + * + * @generated from protobuf field: string user_verification = 3; + */ + userVerification: string; +} +/** + * Public key credential descriptor. + * https://www.w3.org/TR/webauthn-2/#dictdef-publickeycredentialdescriptor. + * + * @generated from protobuf message webauthn.CredentialDescriptor + */ +export interface CredentialDescriptor { + /** + * Type of the credential, usually "public-key". + * + * @generated from protobuf field: string type = 1; + */ + type: string; + /** + * Raw Credential ID. + * + * @generated from protobuf field: bytes id = 2; + */ + id: Uint8Array; +} +/** + * Parameters for credential creation. + * https://www.w3.org/TR/webauthn-2/#dictdef-publickeycredentialparameters. + * + * @generated from protobuf message webauthn.CredentialParameter + */ +export interface CredentialParameter { + /** + * Credential type, usually "public-key". + * https://www.w3.org/TR/webauthn-2/#enumdef-publickeycredentialtype. + * + * @generated from protobuf field: string type = 1; + */ + type: string; + /** + * COSE algorithm specifier. + * Most authenticators support exclusively ES256(-7). + * https://www.w3.org/TR/webauthn-2/#typedefdef-cosealgorithmidentifier. + * + * @generated from protobuf field: int32 alg = 2; + */ + alg: number; +} +/** + * Relying Party information. + * See https://www.w3.org/TR/webauthn-2/#dictdef-publickeycredentialrpentity and + * https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredentialCreationOptions/rp. + * + * @generated from protobuf message webauthn.RelyingPartyEntity + */ +export interface RelyingPartyEntity { + /** + * @generated from protobuf field: string id = 1; + */ + id: string; + /** + * @generated from protobuf field: string name = 2; + */ + name: string; +} +/** + * User information. + * See https://www.w3.org/TR/webauthn-2/#dictdef-publickeycredentialuserentity + * and + * https://developer.mozilla.org/en-US/docs/Web/API/PublicKeyCredentialCreationOptions/user. + * + * @generated from protobuf message webauthn.UserEntity + */ +export interface UserEntity { + /** + * Raw ID of the user. + * + * @generated from protobuf field: bytes id = 1; + */ + id: Uint8Array; + /** + * Human-palatable name for a user account. + * The Relying Party _may_ let the user choose this value. + * + * @generated from protobuf field: string name = 2; + */ + name: string; + /** + * Human-palatable name for the user account, intended only for display. + * The Relying Party _should_ let the user choose this value. + * + * @generated from protobuf field: string display_name = 3; + */ + displayName: string; +} +// @generated message type with reflection information, may provide speed optimized methods +class CredentialAssertion$Type extends MessageType { + constructor() { + super("webauthn.CredentialAssertion", [ + { no: 1, name: "public_key", kind: "message", T: () => PublicKeyCredentialRequestOptions } + ]); + } + create(value?: PartialMessage): CredentialAssertion { + const message = globalThis.Object.create((this.messagePrototype!)); + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CredentialAssertion): CredentialAssertion { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* webauthn.PublicKeyCredentialRequestOptions public_key */ 1: + message.publicKey = PublicKeyCredentialRequestOptions.internalBinaryRead(reader, reader.uint32(), options, message.publicKey); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: CredentialAssertion, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* webauthn.PublicKeyCredentialRequestOptions public_key = 1; */ + if (message.publicKey) + PublicKeyCredentialRequestOptions.internalBinaryWrite(message.publicKey, writer.tag(1, WireType.LengthDelimited).fork(), options).join(); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.CredentialAssertion + */ +export const CredentialAssertion = new CredentialAssertion$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class PublicKeyCredentialRequestOptions$Type extends MessageType { + constructor() { + super("webauthn.PublicKeyCredentialRequestOptions", [ + { no: 1, name: "challenge", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }, + { no: 2, name: "timeout_ms", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ }, + { no: 3, name: "rp_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 4, name: "allow_credentials", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => CredentialDescriptor }, + { no: 5, name: "extensions", kind: "message", T: () => AuthenticationExtensionsClientInputs }, + { no: 6, name: "user_verification", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value?: PartialMessage): PublicKeyCredentialRequestOptions { + const message = globalThis.Object.create((this.messagePrototype!)); + message.challenge = new Uint8Array(0); + message.timeoutMs = 0n; + message.rpId = ""; + message.allowCredentials = []; + message.userVerification = ""; + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PublicKeyCredentialRequestOptions): PublicKeyCredentialRequestOptions { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bytes challenge */ 1: + message.challenge = reader.bytes(); + break; + case /* int64 timeout_ms */ 2: + message.timeoutMs = reader.int64().toBigInt(); + break; + case /* string rp_id */ 3: + message.rpId = reader.string(); + break; + case /* repeated webauthn.CredentialDescriptor allow_credentials */ 4: + message.allowCredentials.push(CredentialDescriptor.internalBinaryRead(reader, reader.uint32(), options)); + break; + case /* webauthn.AuthenticationExtensionsClientInputs extensions */ 5: + message.extensions = AuthenticationExtensionsClientInputs.internalBinaryRead(reader, reader.uint32(), options, message.extensions); + break; + case /* string user_verification */ 6: + message.userVerification = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: PublicKeyCredentialRequestOptions, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* bytes challenge = 1; */ + if (message.challenge.length) + writer.tag(1, WireType.LengthDelimited).bytes(message.challenge); + /* int64 timeout_ms = 2; */ + if (message.timeoutMs !== 0n) + writer.tag(2, WireType.Varint).int64(message.timeoutMs); + /* string rp_id = 3; */ + if (message.rpId !== "") + writer.tag(3, WireType.LengthDelimited).string(message.rpId); + /* repeated webauthn.CredentialDescriptor allow_credentials = 4; */ + for (let i = 0; i < message.allowCredentials.length; i++) + CredentialDescriptor.internalBinaryWrite(message.allowCredentials[i], writer.tag(4, WireType.LengthDelimited).fork(), options).join(); + /* webauthn.AuthenticationExtensionsClientInputs extensions = 5; */ + if (message.extensions) + AuthenticationExtensionsClientInputs.internalBinaryWrite(message.extensions, writer.tag(5, WireType.LengthDelimited).fork(), options).join(); + /* string user_verification = 6; */ + if (message.userVerification !== "") + writer.tag(6, WireType.LengthDelimited).string(message.userVerification); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.PublicKeyCredentialRequestOptions + */ +export const PublicKeyCredentialRequestOptions = new PublicKeyCredentialRequestOptions$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class CredentialAssertionResponse$Type extends MessageType { + constructor() { + super("webauthn.CredentialAssertionResponse", [ + { no: 1, name: "type", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 2, name: "raw_id", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }, + { no: 3, name: "response", kind: "message", T: () => AuthenticatorAssertionResponse }, + { no: 4, name: "extensions", kind: "message", T: () => AuthenticationExtensionsClientOutputs } + ]); + } + create(value?: PartialMessage): CredentialAssertionResponse { + const message = globalThis.Object.create((this.messagePrototype!)); + message.type = ""; + message.rawId = new Uint8Array(0); + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CredentialAssertionResponse): CredentialAssertionResponse { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string type */ 1: + message.type = reader.string(); + break; + case /* bytes raw_id */ 2: + message.rawId = reader.bytes(); + break; + case /* webauthn.AuthenticatorAssertionResponse response */ 3: + message.response = AuthenticatorAssertionResponse.internalBinaryRead(reader, reader.uint32(), options, message.response); + break; + case /* webauthn.AuthenticationExtensionsClientOutputs extensions */ 4: + message.extensions = AuthenticationExtensionsClientOutputs.internalBinaryRead(reader, reader.uint32(), options, message.extensions); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: CredentialAssertionResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* string type = 1; */ + if (message.type !== "") + writer.tag(1, WireType.LengthDelimited).string(message.type); + /* bytes raw_id = 2; */ + if (message.rawId.length) + writer.tag(2, WireType.LengthDelimited).bytes(message.rawId); + /* webauthn.AuthenticatorAssertionResponse response = 3; */ + if (message.response) + AuthenticatorAssertionResponse.internalBinaryWrite(message.response, writer.tag(3, WireType.LengthDelimited).fork(), options).join(); + /* webauthn.AuthenticationExtensionsClientOutputs extensions = 4; */ + if (message.extensions) + AuthenticationExtensionsClientOutputs.internalBinaryWrite(message.extensions, writer.tag(4, WireType.LengthDelimited).fork(), options).join(); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.CredentialAssertionResponse + */ +export const CredentialAssertionResponse = new CredentialAssertionResponse$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class AuthenticatorAssertionResponse$Type extends MessageType { + constructor() { + super("webauthn.AuthenticatorAssertionResponse", [ + { no: 1, name: "client_data_json", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }, + { no: 2, name: "authenticator_data", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }, + { no: 3, name: "signature", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }, + { no: 4, name: "user_handle", kind: "scalar", T: 12 /*ScalarType.BYTES*/ } + ]); + } + create(value?: PartialMessage): AuthenticatorAssertionResponse { + const message = globalThis.Object.create((this.messagePrototype!)); + message.clientDataJson = new Uint8Array(0); + message.authenticatorData = new Uint8Array(0); + message.signature = new Uint8Array(0); + message.userHandle = new Uint8Array(0); + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AuthenticatorAssertionResponse): AuthenticatorAssertionResponse { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bytes client_data_json */ 1: + message.clientDataJson = reader.bytes(); + break; + case /* bytes authenticator_data */ 2: + message.authenticatorData = reader.bytes(); + break; + case /* bytes signature */ 3: + message.signature = reader.bytes(); + break; + case /* bytes user_handle */ 4: + message.userHandle = reader.bytes(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: AuthenticatorAssertionResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* bytes client_data_json = 1; */ + if (message.clientDataJson.length) + writer.tag(1, WireType.LengthDelimited).bytes(message.clientDataJson); + /* bytes authenticator_data = 2; */ + if (message.authenticatorData.length) + writer.tag(2, WireType.LengthDelimited).bytes(message.authenticatorData); + /* bytes signature = 3; */ + if (message.signature.length) + writer.tag(3, WireType.LengthDelimited).bytes(message.signature); + /* bytes user_handle = 4; */ + if (message.userHandle.length) + writer.tag(4, WireType.LengthDelimited).bytes(message.userHandle); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.AuthenticatorAssertionResponse + */ +export const AuthenticatorAssertionResponse = new AuthenticatorAssertionResponse$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class CredentialCreation$Type extends MessageType { + constructor() { + super("webauthn.CredentialCreation", [ + { no: 1, name: "public_key", kind: "message", T: () => PublicKeyCredentialCreationOptions } + ]); + } + create(value?: PartialMessage): CredentialCreation { + const message = globalThis.Object.create((this.messagePrototype!)); + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CredentialCreation): CredentialCreation { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* webauthn.PublicKeyCredentialCreationOptions public_key */ 1: + message.publicKey = PublicKeyCredentialCreationOptions.internalBinaryRead(reader, reader.uint32(), options, message.publicKey); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: CredentialCreation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* webauthn.PublicKeyCredentialCreationOptions public_key = 1; */ + if (message.publicKey) + PublicKeyCredentialCreationOptions.internalBinaryWrite(message.publicKey, writer.tag(1, WireType.LengthDelimited).fork(), options).join(); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.CredentialCreation + */ +export const CredentialCreation = new CredentialCreation$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class PublicKeyCredentialCreationOptions$Type extends MessageType { + constructor() { + super("webauthn.PublicKeyCredentialCreationOptions", [ + { no: 1, name: "challenge", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }, + { no: 2, name: "rp", kind: "message", T: () => RelyingPartyEntity }, + { no: 3, name: "user", kind: "message", T: () => UserEntity }, + { no: 4, name: "credential_parameters", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => CredentialParameter }, + { no: 5, name: "timeout_ms", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ }, + { no: 6, name: "exclude_credentials", kind: "message", repeat: 1 /*RepeatType.PACKED*/, T: () => CredentialDescriptor }, + { no: 7, name: "attestation", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 8, name: "extensions", kind: "message", T: () => AuthenticationExtensionsClientInputs }, + { no: 9, name: "authenticator_selection", kind: "message", T: () => AuthenticatorSelection } + ]); + } + create(value?: PartialMessage): PublicKeyCredentialCreationOptions { + const message = globalThis.Object.create((this.messagePrototype!)); + message.challenge = new Uint8Array(0); + message.credentialParameters = []; + message.timeoutMs = 0n; + message.excludeCredentials = []; + message.attestation = ""; + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PublicKeyCredentialCreationOptions): PublicKeyCredentialCreationOptions { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bytes challenge */ 1: + message.challenge = reader.bytes(); + break; + case /* webauthn.RelyingPartyEntity rp */ 2: + message.rp = RelyingPartyEntity.internalBinaryRead(reader, reader.uint32(), options, message.rp); + break; + case /* webauthn.UserEntity user */ 3: + message.user = UserEntity.internalBinaryRead(reader, reader.uint32(), options, message.user); + break; + case /* repeated webauthn.CredentialParameter credential_parameters */ 4: + message.credentialParameters.push(CredentialParameter.internalBinaryRead(reader, reader.uint32(), options)); + break; + case /* int64 timeout_ms */ 5: + message.timeoutMs = reader.int64().toBigInt(); + break; + case /* repeated webauthn.CredentialDescriptor exclude_credentials */ 6: + message.excludeCredentials.push(CredentialDescriptor.internalBinaryRead(reader, reader.uint32(), options)); + break; + case /* string attestation */ 7: + message.attestation = reader.string(); + break; + case /* webauthn.AuthenticationExtensionsClientInputs extensions */ 8: + message.extensions = AuthenticationExtensionsClientInputs.internalBinaryRead(reader, reader.uint32(), options, message.extensions); + break; + case /* webauthn.AuthenticatorSelection authenticator_selection */ 9: + message.authenticatorSelection = AuthenticatorSelection.internalBinaryRead(reader, reader.uint32(), options, message.authenticatorSelection); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: PublicKeyCredentialCreationOptions, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* bytes challenge = 1; */ + if (message.challenge.length) + writer.tag(1, WireType.LengthDelimited).bytes(message.challenge); + /* webauthn.RelyingPartyEntity rp = 2; */ + if (message.rp) + RelyingPartyEntity.internalBinaryWrite(message.rp, writer.tag(2, WireType.LengthDelimited).fork(), options).join(); + /* webauthn.UserEntity user = 3; */ + if (message.user) + UserEntity.internalBinaryWrite(message.user, writer.tag(3, WireType.LengthDelimited).fork(), options).join(); + /* repeated webauthn.CredentialParameter credential_parameters = 4; */ + for (let i = 0; i < message.credentialParameters.length; i++) + CredentialParameter.internalBinaryWrite(message.credentialParameters[i], writer.tag(4, WireType.LengthDelimited).fork(), options).join(); + /* int64 timeout_ms = 5; */ + if (message.timeoutMs !== 0n) + writer.tag(5, WireType.Varint).int64(message.timeoutMs); + /* repeated webauthn.CredentialDescriptor exclude_credentials = 6; */ + for (let i = 0; i < message.excludeCredentials.length; i++) + CredentialDescriptor.internalBinaryWrite(message.excludeCredentials[i], writer.tag(6, WireType.LengthDelimited).fork(), options).join(); + /* string attestation = 7; */ + if (message.attestation !== "") + writer.tag(7, WireType.LengthDelimited).string(message.attestation); + /* webauthn.AuthenticationExtensionsClientInputs extensions = 8; */ + if (message.extensions) + AuthenticationExtensionsClientInputs.internalBinaryWrite(message.extensions, writer.tag(8, WireType.LengthDelimited).fork(), options).join(); + /* webauthn.AuthenticatorSelection authenticator_selection = 9; */ + if (message.authenticatorSelection) + AuthenticatorSelection.internalBinaryWrite(message.authenticatorSelection, writer.tag(9, WireType.LengthDelimited).fork(), options).join(); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.PublicKeyCredentialCreationOptions + */ +export const PublicKeyCredentialCreationOptions = new PublicKeyCredentialCreationOptions$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class CredentialCreationResponse$Type extends MessageType { + constructor() { + super("webauthn.CredentialCreationResponse", [ + { no: 1, name: "type", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 2, name: "raw_id", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }, + { no: 3, name: "response", kind: "message", T: () => AuthenticatorAttestationResponse }, + { no: 4, name: "extensions", kind: "message", T: () => AuthenticationExtensionsClientOutputs } + ]); + } + create(value?: PartialMessage): CredentialCreationResponse { + const message = globalThis.Object.create((this.messagePrototype!)); + message.type = ""; + message.rawId = new Uint8Array(0); + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CredentialCreationResponse): CredentialCreationResponse { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string type */ 1: + message.type = reader.string(); + break; + case /* bytes raw_id */ 2: + message.rawId = reader.bytes(); + break; + case /* webauthn.AuthenticatorAttestationResponse response */ 3: + message.response = AuthenticatorAttestationResponse.internalBinaryRead(reader, reader.uint32(), options, message.response); + break; + case /* webauthn.AuthenticationExtensionsClientOutputs extensions */ 4: + message.extensions = AuthenticationExtensionsClientOutputs.internalBinaryRead(reader, reader.uint32(), options, message.extensions); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: CredentialCreationResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* string type = 1; */ + if (message.type !== "") + writer.tag(1, WireType.LengthDelimited).string(message.type); + /* bytes raw_id = 2; */ + if (message.rawId.length) + writer.tag(2, WireType.LengthDelimited).bytes(message.rawId); + /* webauthn.AuthenticatorAttestationResponse response = 3; */ + if (message.response) + AuthenticatorAttestationResponse.internalBinaryWrite(message.response, writer.tag(3, WireType.LengthDelimited).fork(), options).join(); + /* webauthn.AuthenticationExtensionsClientOutputs extensions = 4; */ + if (message.extensions) + AuthenticationExtensionsClientOutputs.internalBinaryWrite(message.extensions, writer.tag(4, WireType.LengthDelimited).fork(), options).join(); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.CredentialCreationResponse + */ +export const CredentialCreationResponse = new CredentialCreationResponse$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class AuthenticatorAttestationResponse$Type extends MessageType { + constructor() { + super("webauthn.AuthenticatorAttestationResponse", [ + { no: 1, name: "client_data_json", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }, + { no: 2, name: "attestation_object", kind: "scalar", T: 12 /*ScalarType.BYTES*/ } + ]); + } + create(value?: PartialMessage): AuthenticatorAttestationResponse { + const message = globalThis.Object.create((this.messagePrototype!)); + message.clientDataJson = new Uint8Array(0); + message.attestationObject = new Uint8Array(0); + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AuthenticatorAttestationResponse): AuthenticatorAttestationResponse { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bytes client_data_json */ 1: + message.clientDataJson = reader.bytes(); + break; + case /* bytes attestation_object */ 2: + message.attestationObject = reader.bytes(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: AuthenticatorAttestationResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* bytes client_data_json = 1; */ + if (message.clientDataJson.length) + writer.tag(1, WireType.LengthDelimited).bytes(message.clientDataJson); + /* bytes attestation_object = 2; */ + if (message.attestationObject.length) + writer.tag(2, WireType.LengthDelimited).bytes(message.attestationObject); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.AuthenticatorAttestationResponse + */ +export const AuthenticatorAttestationResponse = new AuthenticatorAttestationResponse$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class AuthenticationExtensionsClientInputs$Type extends MessageType { + constructor() { + super("webauthn.AuthenticationExtensionsClientInputs", [ + { no: 1, name: "app_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 2, name: "cred_props", kind: "scalar", T: 8 /*ScalarType.BOOL*/ } + ]); + } + create(value?: PartialMessage): AuthenticationExtensionsClientInputs { + const message = globalThis.Object.create((this.messagePrototype!)); + message.appId = ""; + message.credProps = false; + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AuthenticationExtensionsClientInputs): AuthenticationExtensionsClientInputs { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string app_id */ 1: + message.appId = reader.string(); + break; + case /* bool cred_props */ 2: + message.credProps = reader.bool(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: AuthenticationExtensionsClientInputs, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* string app_id = 1; */ + if (message.appId !== "") + writer.tag(1, WireType.LengthDelimited).string(message.appId); + /* bool cred_props = 2; */ + if (message.credProps !== false) + writer.tag(2, WireType.Varint).bool(message.credProps); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.AuthenticationExtensionsClientInputs + */ +export const AuthenticationExtensionsClientInputs = new AuthenticationExtensionsClientInputs$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class AuthenticationExtensionsClientOutputs$Type extends MessageType { + constructor() { + super("webauthn.AuthenticationExtensionsClientOutputs", [ + { no: 1, name: "app_id", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }, + { no: 2, name: "cred_props", kind: "message", T: () => CredentialPropertiesOutput } + ]); + } + create(value?: PartialMessage): AuthenticationExtensionsClientOutputs { + const message = globalThis.Object.create((this.messagePrototype!)); + message.appId = false; + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AuthenticationExtensionsClientOutputs): AuthenticationExtensionsClientOutputs { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bool app_id */ 1: + message.appId = reader.bool(); + break; + case /* webauthn.CredentialPropertiesOutput cred_props */ 2: + message.credProps = CredentialPropertiesOutput.internalBinaryRead(reader, reader.uint32(), options, message.credProps); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: AuthenticationExtensionsClientOutputs, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* bool app_id = 1; */ + if (message.appId !== false) + writer.tag(1, WireType.Varint).bool(message.appId); + /* webauthn.CredentialPropertiesOutput cred_props = 2; */ + if (message.credProps) + CredentialPropertiesOutput.internalBinaryWrite(message.credProps, writer.tag(2, WireType.LengthDelimited).fork(), options).join(); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.AuthenticationExtensionsClientOutputs + */ +export const AuthenticationExtensionsClientOutputs = new AuthenticationExtensionsClientOutputs$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class CredentialPropertiesOutput$Type extends MessageType { + constructor() { + super("webauthn.CredentialPropertiesOutput", [ + { no: 1, name: "rk", kind: "scalar", T: 8 /*ScalarType.BOOL*/ } + ]); + } + create(value?: PartialMessage): CredentialPropertiesOutput { + const message = globalThis.Object.create((this.messagePrototype!)); + message.rk = false; + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CredentialPropertiesOutput): CredentialPropertiesOutput { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bool rk */ 1: + message.rk = reader.bool(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: CredentialPropertiesOutput, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* bool rk = 1; */ + if (message.rk !== false) + writer.tag(1, WireType.Varint).bool(message.rk); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.CredentialPropertiesOutput + */ +export const CredentialPropertiesOutput = new CredentialPropertiesOutput$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class AuthenticatorSelection$Type extends MessageType { + constructor() { + super("webauthn.AuthenticatorSelection", [ + { no: 1, name: "authenticator_attachment", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 2, name: "require_resident_key", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }, + { no: 3, name: "user_verification", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value?: PartialMessage): AuthenticatorSelection { + const message = globalThis.Object.create((this.messagePrototype!)); + message.authenticatorAttachment = ""; + message.requireResidentKey = false; + message.userVerification = ""; + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AuthenticatorSelection): AuthenticatorSelection { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string authenticator_attachment */ 1: + message.authenticatorAttachment = reader.string(); + break; + case /* bool require_resident_key */ 2: + message.requireResidentKey = reader.bool(); + break; + case /* string user_verification */ 3: + message.userVerification = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: AuthenticatorSelection, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* string authenticator_attachment = 1; */ + if (message.authenticatorAttachment !== "") + writer.tag(1, WireType.LengthDelimited).string(message.authenticatorAttachment); + /* bool require_resident_key = 2; */ + if (message.requireResidentKey !== false) + writer.tag(2, WireType.Varint).bool(message.requireResidentKey); + /* string user_verification = 3; */ + if (message.userVerification !== "") + writer.tag(3, WireType.LengthDelimited).string(message.userVerification); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.AuthenticatorSelection + */ +export const AuthenticatorSelection = new AuthenticatorSelection$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class CredentialDescriptor$Type extends MessageType { + constructor() { + super("webauthn.CredentialDescriptor", [ + { no: 1, name: "type", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 2, name: "id", kind: "scalar", T: 12 /*ScalarType.BYTES*/ } + ]); + } + create(value?: PartialMessage): CredentialDescriptor { + const message = globalThis.Object.create((this.messagePrototype!)); + message.type = ""; + message.id = new Uint8Array(0); + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CredentialDescriptor): CredentialDescriptor { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string type */ 1: + message.type = reader.string(); + break; + case /* bytes id */ 2: + message.id = reader.bytes(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: CredentialDescriptor, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* string type = 1; */ + if (message.type !== "") + writer.tag(1, WireType.LengthDelimited).string(message.type); + /* bytes id = 2; */ + if (message.id.length) + writer.tag(2, WireType.LengthDelimited).bytes(message.id); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.CredentialDescriptor + */ +export const CredentialDescriptor = new CredentialDescriptor$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class CredentialParameter$Type extends MessageType { + constructor() { + super("webauthn.CredentialParameter", [ + { no: 1, name: "type", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 2, name: "alg", kind: "scalar", T: 5 /*ScalarType.INT32*/ } + ]); + } + create(value?: PartialMessage): CredentialParameter { + const message = globalThis.Object.create((this.messagePrototype!)); + message.type = ""; + message.alg = 0; + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CredentialParameter): CredentialParameter { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string type */ 1: + message.type = reader.string(); + break; + case /* int32 alg */ 2: + message.alg = reader.int32(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: CredentialParameter, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* string type = 1; */ + if (message.type !== "") + writer.tag(1, WireType.LengthDelimited).string(message.type); + /* int32 alg = 2; */ + if (message.alg !== 0) + writer.tag(2, WireType.Varint).int32(message.alg); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.CredentialParameter + */ +export const CredentialParameter = new CredentialParameter$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class RelyingPartyEntity$Type extends MessageType { + constructor() { + super("webauthn.RelyingPartyEntity", [ + { no: 1, name: "id", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 2, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value?: PartialMessage): RelyingPartyEntity { + const message = globalThis.Object.create((this.messagePrototype!)); + message.id = ""; + message.name = ""; + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RelyingPartyEntity): RelyingPartyEntity { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string id */ 1: + message.id = reader.string(); + break; + case /* string name */ 2: + message.name = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: RelyingPartyEntity, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* string id = 1; */ + if (message.id !== "") + writer.tag(1, WireType.LengthDelimited).string(message.id); + /* string name = 2; */ + if (message.name !== "") + writer.tag(2, WireType.LengthDelimited).string(message.name); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.RelyingPartyEntity + */ +export const RelyingPartyEntity = new RelyingPartyEntity$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class UserEntity$Type extends MessageType { + constructor() { + super("webauthn.UserEntity", [ + { no: 1, name: "id", kind: "scalar", T: 12 /*ScalarType.BYTES*/ }, + { no: 2, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 3, name: "display_name", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value?: PartialMessage): UserEntity { + const message = globalThis.Object.create((this.messagePrototype!)); + message.id = new Uint8Array(0); + message.name = ""; + message.displayName = ""; + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UserEntity): UserEntity { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* bytes id */ 1: + message.id = reader.bytes(); + break; + case /* string name */ 2: + message.name = reader.string(); + break; + case /* string display_name */ 3: + message.displayName = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: UserEntity, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* bytes id = 1; */ + if (message.id.length) + writer.tag(1, WireType.LengthDelimited).bytes(message.id); + /* string name = 2; */ + if (message.name !== "") + writer.tag(2, WireType.LengthDelimited).string(message.name); + /* string display_name = 3; */ + if (message.displayName !== "") + writer.tag(3, WireType.LengthDelimited).string(message.displayName); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message webauthn.UserEntity + */ +export const UserEntity = new UserEntity$Type(); diff --git a/gen/proto/ts/teleport/lib/teleterm/v1/tshd_events_service_pb.ts b/gen/proto/ts/teleport/lib/teleterm/v1/tshd_events_service_pb.ts index 9baf7216fb509..57a075a38d37c 100644 --- a/gen/proto/ts/teleport/lib/teleterm/v1/tshd_events_service_pb.ts +++ b/gen/proto/ts/teleport/lib/teleterm/v1/tshd_events_service_pb.ts @@ -31,6 +31,7 @@ import { UnknownFieldHandler } from "@protobuf-ts/runtime"; import type { PartialMessage } from "@protobuf-ts/runtime"; import { reflectionMergePartial } from "@protobuf-ts/runtime"; import { MessageType } from "@protobuf-ts/runtime"; +import { BrowserMFAChallenge } from "../../../mfa/v1/challenge_pb"; import { PortRange } from "./app_pb"; import { RouteToApp } from "./app_pb"; /** @@ -290,6 +291,12 @@ export interface PromptMFARequest { * @generated from protobuf field: bool per_session_mfa = 7; */ perSessionMfa: boolean; + /** + * BrowserMFAChallenge is sent when browser-based MFA is supported. + * + * @generated from protobuf field: teleport.mfa.v1.BrowserMFAChallenge browser = 8; + */ + browser?: BrowserMFAChallenge; } /** * SSOChallenge contains SSO challenge details. @@ -1127,7 +1134,8 @@ class PromptMFARequest$Type extends MessageType { { no: 4, name: "webauthn", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }, { no: 5, name: "cluster_uri", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, { no: 6, name: "sso", kind: "message", T: () => SSOChallenge }, - { no: 7, name: "per_session_mfa", kind: "scalar", T: 8 /*ScalarType.BOOL*/ } + { no: 7, name: "per_session_mfa", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }, + { no: 8, name: "browser", kind: "message", T: () => BrowserMFAChallenge } ]); } create(value?: PartialMessage): PromptMFARequest { @@ -1164,6 +1172,9 @@ class PromptMFARequest$Type extends MessageType { case /* bool per_session_mfa */ 7: message.perSessionMfa = reader.bool(); break; + case /* teleport.mfa.v1.BrowserMFAChallenge browser */ 8: + message.browser = BrowserMFAChallenge.internalBinaryRead(reader, reader.uint32(), options, message.browser); + break; default: let u = options.readUnknownField; if (u === "throw") @@ -1194,6 +1205,9 @@ class PromptMFARequest$Type extends MessageType { /* bool per_session_mfa = 7; */ if (message.perSessionMfa !== false) writer.tag(7, WireType.Varint).bool(message.perSessionMfa); + /* teleport.mfa.v1.BrowserMFAChallenge browser = 8; */ + if (message.browser) + BrowserMFAChallenge.internalBinaryWrite(message.browser, writer.tag(8, WireType.LengthDelimited).fork(), options).join(); let u = options.writeUnknownFields; if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); diff --git a/gen/proto/ts/teleport/mfa/v1/challenge_pb.ts b/gen/proto/ts/teleport/mfa/v1/challenge_pb.ts new file mode 100644 index 0000000000000..a4a94146f1321 --- /dev/null +++ b/gen/proto/ts/teleport/mfa/v1/challenge_pb.ts @@ -0,0 +1,163 @@ +/* eslint-disable */ +// @generated by protobuf-ts 2.9.3 with parameter add_pb_suffix,eslint_disable,generate_dependencies,server_grpc1,ts_nocheck +// @generated from protobuf file "teleport/mfa/v1/challenge.proto" (package "teleport.mfa.v1", syntax proto3) +// tslint:disable +// @ts-nocheck +// +// Copyright 2025 Gravitational, Inc +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +import type { BinaryWriteOptions } from "@protobuf-ts/runtime"; +import type { IBinaryWriter } from "@protobuf-ts/runtime"; +import { WireType } from "@protobuf-ts/runtime"; +import type { BinaryReadOptions } from "@protobuf-ts/runtime"; +import type { IBinaryReader } from "@protobuf-ts/runtime"; +import { UnknownFieldHandler } from "@protobuf-ts/runtime"; +import type { PartialMessage } from "@protobuf-ts/runtime"; +import { reflectionMergePartial } from "@protobuf-ts/runtime"; +import { MessageType } from "@protobuf-ts/runtime"; +import { CredentialAssertionResponse } from "../../legacy/types/webauthn/webauthn_pb"; +/** + * BrowserMFAChallenge contains browser MFA request details to perform a browser MFA check. + * + * @generated from protobuf message teleport.mfa.v1.BrowserMFAChallenge + */ +export interface BrowserMFAChallenge { + /** + * RequestId is the ID of a browser MFA request. + * + * @generated from protobuf field: string request_id = 1; + */ + requestId: string; +} +/** + * BrowserMFAResponse is a response to BrowserMFAChallenge. + * + * @generated from protobuf message teleport.mfa.v1.BrowserMFAResponse + */ +export interface BrowserMFAResponse { + /** + * RequestId is the ID of a browser MFA request. + * + * @generated from protobuf field: string request_id = 1; + */ + requestId: string; + /** + * WebauthnResponse is the WebAuthn credential assertion response from the browser MFA flow. + * + * @generated from protobuf field: webauthn.CredentialAssertionResponse webauthn_response = 2; + */ + webauthnResponse?: CredentialAssertionResponse; +} +// @generated message type with reflection information, may provide speed optimized methods +class BrowserMFAChallenge$Type extends MessageType { + constructor() { + super("teleport.mfa.v1.BrowserMFAChallenge", [ + { no: 1, name: "request_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ } + ]); + } + create(value?: PartialMessage): BrowserMFAChallenge { + const message = globalThis.Object.create((this.messagePrototype!)); + message.requestId = ""; + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: BrowserMFAChallenge): BrowserMFAChallenge { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string request_id */ 1: + message.requestId = reader.string(); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: BrowserMFAChallenge, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* string request_id = 1; */ + if (message.requestId !== "") + writer.tag(1, WireType.LengthDelimited).string(message.requestId); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message teleport.mfa.v1.BrowserMFAChallenge + */ +export const BrowserMFAChallenge = new BrowserMFAChallenge$Type(); +// @generated message type with reflection information, may provide speed optimized methods +class BrowserMFAResponse$Type extends MessageType { + constructor() { + super("teleport.mfa.v1.BrowserMFAResponse", [ + { no: 1, name: "request_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ }, + { no: 2, name: "webauthn_response", kind: "message", T: () => CredentialAssertionResponse } + ]); + } + create(value?: PartialMessage): BrowserMFAResponse { + const message = globalThis.Object.create((this.messagePrototype!)); + message.requestId = ""; + if (value !== undefined) + reflectionMergePartial(this, message, value); + return message; + } + internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: BrowserMFAResponse): BrowserMFAResponse { + let message = target ?? this.create(), end = reader.pos + length; + while (reader.pos < end) { + let [fieldNo, wireType] = reader.tag(); + switch (fieldNo) { + case /* string request_id */ 1: + message.requestId = reader.string(); + break; + case /* webauthn.CredentialAssertionResponse webauthn_response */ 2: + message.webauthnResponse = CredentialAssertionResponse.internalBinaryRead(reader, reader.uint32(), options, message.webauthnResponse); + break; + default: + let u = options.readUnknownField; + if (u === "throw") + throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`); + let d = reader.skip(wireType); + if (u !== false) + (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d); + } + } + return message; + } + internalBinaryWrite(message: BrowserMFAResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter { + /* string request_id = 1; */ + if (message.requestId !== "") + writer.tag(1, WireType.LengthDelimited).string(message.requestId); + /* webauthn.CredentialAssertionResponse webauthn_response = 2; */ + if (message.webauthnResponse) + CredentialAssertionResponse.internalBinaryWrite(message.webauthnResponse, writer.tag(2, WireType.LengthDelimited).fork(), options).join(); + let u = options.writeUnknownFields; + if (u !== false) + (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); + return writer; + } +} +/** + * @generated MessageType for protobuf message teleport.mfa.v1.BrowserMFAResponse + */ +export const BrowserMFAResponse = new BrowserMFAResponse$Type(); diff --git a/integrations/terraform/protoc-gen-terraform-teleport.yaml b/integrations/terraform/protoc-gen-terraform-teleport.yaml index fb9dc045ab5c6..5f97d9d76b7bc 100644 --- a/integrations/terraform/protoc-gen-terraform-teleport.yaml +++ b/integrations/terraform/protoc-gen-terraform-teleport.yaml @@ -186,6 +186,7 @@ exclude_fields: # AuthPreference - "AuthPreferenceV2.Metadata.Name" # It's a singleton resource + - "AuthPreferenceV2.Spec.AllowBrowserAuthentication" # Deprecated, use AllowCLIAuthViaBrowser # ClusterMaintenanceConfig - "ClusterMaintenanceConfigV1.Metadata.Name" # It's a singleton resource @@ -238,6 +239,7 @@ computed_fields: # Auth preference - "AuthPreferenceV2.Spec.AllowPasswordless" - "AuthPreferenceV2.Spec.AllowHeadless" + - "AuthPreferenceV2.Spec.AllowCLIAuthViaBrowser" - "AuthPreferenceV2.Spec.DisconnectExpiredCert" - "AuthPreferenceV2.Spec.AllowLocalAuth" - "AuthPreferenceV2.Spec.SecondFactor" diff --git a/integrations/terraform/tfschema/types_terraform.go b/integrations/terraform/tfschema/types_terraform.go index 8537185b4729b..11869e87fce04 100644 --- a/integrations/terraform/tfschema/types_terraform.go +++ b/integrations/terraform/tfschema/types_terraform.go @@ -2385,6 +2385,12 @@ func GenSchemaAuthPreferenceV2(ctx context.Context) (github_com_hashicorp_terraf }, "spec": { Attributes: github_com_hashicorp_terraform_plugin_framework_tfsdk.SingleNestedAttributes(map[string]github_com_hashicorp_terraform_plugin_framework_tfsdk.Attribute{ + "allow_cli_auth_via_browser": GenSchemaBoolOption(ctx, github_com_hashicorp_terraform_plugin_framework_tfsdk.Attribute{ + Computed: true, + Description: "AllowCLIAuthViaBrowser enables/disables browser-based authentication for authenticating CLI sessions. When set to false, authentication flows that require a browser will be disabled. Defaults to true if the Webauthn is configured, defaults to false otherwise.", + Optional: true, + PlanModifiers: []github_com_hashicorp_terraform_plugin_framework_tfsdk.AttributePlanModifier{github_com_hashicorp_terraform_plugin_framework_tfsdk.UseStateForUnknown()}, + }), "allow_headless": GenSchemaBoolOption(ctx, github_com_hashicorp_terraform_plugin_framework_tfsdk.Attribute{ Computed: true, Description: "AllowHeadless enables/disables headless support. Headless authentication requires Webauthn to work. Defaults to true if the Webauthn is configured, defaults to false otherwise.", @@ -26254,6 +26260,13 @@ func CopyAuthPreferenceV2FromTerraform(_ context.Context, tf github_com_hashicor } } } + { + a, ok := tf.Attrs["allow_cli_auth_via_browser"] + if !ok { + diags.Append(attrReadMissingDiag{"AuthPreferenceV2.Spec.AllowCLIAuthViaBrowser"}) + } + CopyFromBoolOption(diags, a, &obj.AllowCLIAuthViaBrowser) + } } } } @@ -27623,6 +27636,15 @@ func CopyAuthPreferenceV2ToTerraform(ctx context.Context, obj *github_com_gravit } } } + { + t, ok := tf.AttrTypes["allow_cli_auth_via_browser"] + if !ok { + diags.Append(attrWriteMissingDiag{"AuthPreferenceV2.Spec.AllowCLIAuthViaBrowser"}) + } else { + v := CopyToBoolOption(diags, obj.AllowCLIAuthViaBrowser, t, tf.Attrs["allow_cli_auth_via_browser"]) + tf.Attrs["allow_cli_auth_via_browser"] = v + } + } } v.Unknown = false tf.Attrs["spec"] = v diff --git a/lib/auth/auth.go b/lib/auth/auth.go index 47d614541bd3f..7d4c7275360e2 100644 --- a/lib/auth/auth.go +++ b/lib/auth/auth.go @@ -94,6 +94,7 @@ import ( "github.com/gravitational/teleport/lib/auth/keystore" "github.com/gravitational/teleport/lib/auth/machineid/machineidv1" "github.com/gravitational/teleport/lib/auth/machineid/workloadidentityv1" + "github.com/gravitational/teleport/lib/auth/mfatypes" "github.com/gravitational/teleport/lib/auth/okta" "github.com/gravitational/teleport/lib/auth/recordingencryption" "github.com/gravitational/teleport/lib/auth/recordingmetadata" @@ -1528,6 +1529,11 @@ type Server struct { // normally be fetched from the GitHub API. Used for testing. GithubUserAndTeamsOverride func() (*GithubUserResponse, []GithubTeamResponse, error) + // ObserveBrowserMFAChallengeExtensionsForTesting, if set, is called with the resolved + // challenge extensions when a BrowserMFARequestID is provided to + // CreateAuthenticateChallenge. Used for testing. + ObserveBrowserMFAChallengeExtensionsForTesting func(*mfav1.ChallengeExtensions) + // AWSRolesAnywhereCreateSessionOverride overrides the AWS Roles Anywhere Create Session API wrapper with a mocked one. // Used for testing. AWSRolesAnywhereCreateSessionOverride func(ctx context.Context, req createsession.CreateSessionRequest) (*createsession.CreateSessionResponse, error) @@ -4424,6 +4430,37 @@ func (a *Server) CreateAuthenticateChallenge(ctx context.Context, req *proto.Cre return nil } + // If a BrowserMFARequestID is provided, look up the request and apply its challenge extensions. + var browserMFAReq *services.MFASessionData + if req.BrowserMFARequestID != "" { + if req.ChallengeExtensions != nil { + return nil, trace.BadParameter("challenge extensions must not be set when a browser MFA request ID is provided") + } + + var err error + browserMFAReq, err = a.GetMFASession(ctx, req.BrowserMFARequestID) + if err != nil { + a.logger.WarnContext(ctx, "Failed to read MFA session for browser MFA request", "error", err) + return nil, trace.AccessDenied("invalid browser MFA request") + } + + chalExts := browserMFAReq.ChallengeExtensions + if chalExts == nil { + a.logger.WarnContext(ctx, "MFA session for browser MFA recorded with empty challenge extensions", "request_id", req.BrowserMFARequestID) + return nil, trace.BadParameter("stored session lacks challenge extensions") + } + + // Replace the challenge extensions with the ones found in the MFA object. + // These are the ones from the original tsh request. + challengeExtensions = mfatypes.ChallengeExtensionsToProto(chalExts) + + // Used for testing. If observer function is set, call it with + // challenge extensions from MFA session. + if a.ObserveBrowserMFAChallengeExtensionsForTesting != nil { + a.ObserveBrowserMFAChallengeExtensionsForTesting(challengeExtensions) + } + } + switch req.GetRequest().(type) { case *proto.CreateAuthenticateChallengeRequest_UserCredentials: username = req.GetUserCredentials().GetUsername() @@ -4482,7 +4519,27 @@ func (a *Server) CreateAuthenticateChallenge(ctx context.Context, req *proto.Cre } } - challenges, err := a.mfaAuthChallenge(ctx, username, req.SSOClientRedirectURL, req.ProxyAddress, challengeExtensions) + if browserMFAReq != nil && browserMFAReq.Username != username { + a.logger.WarnContext( + ctx, + "Username stored in MFA session does not match requester's username", + "request_id", req.BrowserMFARequestID, + "session_username", browserMFAReq.Username, + "requestor_username", username, + ) + return nil, trace.AccessDenied("invalid browser MFA request") + } + + // When completing a Browser MFA flow, only a WebAuthn challenge is needed, so + // clear the redirect URL so SSO and Browser MFA challenges are not generated. + clientRedirectURL := "" + if req.BrowserMFARequestID == "" { + // Both SSO and Browser MFA redirect URLs point to the same callback server on tsh. + // So we can take either one and generate an auth challenge with it. + clientRedirectURL = cmp.Or(req.SSOClientRedirectURL, req.BrowserMFATSHRedirectURL) + } + + challenges, err := a.mfaAuthChallenge(ctx, username, clientRedirectURL, req.ProxyAddress, challengeExtensions) if err != nil { // Do not obfuscate config-related errors. if errors.Is(err, types.ErrPasswordlessRequiresWebauthn) || errors.Is(err, types.ErrPasswordlessDisabledBySettings) { @@ -8002,7 +8059,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, ssoClientRedirectURL, proxyAddress string, challengeExtensions *mfav1.ChallengeExtensions) (*proto.MFAAuthenticateChallenge, error) { +func (a *Server) mfaAuthChallenge(ctx context.Context, user, clientRedirectURL, proxyAddress string, challengeExtensions *mfav1.ChallengeExtensions) (*proto.MFAAuthenticateChallenge, error) { isPasswordless := challengeExtensions.Scope == mfav1.ChallengeScope_CHALLENGE_SCOPE_PASSWORDLESS_LOGIN // Check what kind of MFA is enabled. @@ -8013,6 +8070,7 @@ func (a *Server) mfaAuthChallenge(ctx context.Context, user, ssoClientRedirectUR enableTOTP := apref.IsSecondFactorTOTPAllowed() enableWebauthn := apref.IsSecondFactorWebauthnAllowed() enableSSO := apref.IsSecondFactorSSOAllowed() + enableBrowserMFA := apref.GetAllowCLIAuthViaBrowser() // Fetch configurations. The IsSecondFactor*Allowed calls above already // include the necessary checks of config empty, disabled, etc. @@ -8107,8 +8165,24 @@ func (a *Server) mfaAuthChallenge(ctx context.Context, user, ssoClientRedirectUR // If the user has an SSO device and the client provided a redirect URL to handle // the MFA SSO flow, create an SSO challenge. - if enableSSO && groupedDevs.SSO != nil && ssoClientRedirectURL != "" { - if challenge.SSOChallenge, err = a.beginSSOMFAChallenge(ctx, user, groupedDevs.SSO.GetSso(), ssoClientRedirectURL, proxyAddress, challengeExtensions); err != nil { + if enableSSO && groupedDevs.SSO != nil && clientRedirectURL != "" { + if challenge.SSOChallenge, err = a.beginSSOMFAChallenge(ctx, user, groupedDevs.SSO.GetSso(), clientRedirectURL, proxyAddress, challengeExtensions); err != nil { + return nil, trace.Wrap(err) + } + } + + // If the user has a WebAuthn device, return a Browser MFA challenge. This + // challenge is useful in cases where a user only has a browser-associated + // WebAuthn device, but is trying to MFA via a CLI tool (tsh, tctl etc.) + if enableBrowserMFA && groupedDevs.Browser != nil && clientRedirectURL != "" { + if challenge.BrowserMFAChallenge, err = a.BeginBrowserMFAChallenge( + ctx, + mfatypes.BeginBrowserMFAChallengeParams{ + User: user, + BrowserMFATSHRedirectURL: clientRedirectURL, + Ext: challengeExtensions, + }, + ); err != nil { return nil, trace.Wrap(err) } } @@ -8138,6 +8212,7 @@ type devicesByType struct { TOTP bool Webauthn []*types.MFADevice SSO *types.MFADevice + Browser *types.MFADevice } func groupByDeviceType(devs []*types.MFADevice) devicesByType { @@ -8156,6 +8231,18 @@ func groupByDeviceType(devs []*types.MFADevice) devicesByType { logger.WarnContext(context.Background(), "Skipping MFA device with unknown type", "device_type", logutils.TypeAttr(dev.Device)) } } + + // Create a synthetic Browser device if the user has a WebAuthn device. + // This enables browser-based MFA for users who have WebAuthn/passkey devices. + if len(res.Webauthn) > 0 { + res.Browser = &types.MFADevice{ + Id: "browser", + Device: &types.MFADevice_Browser{ + Browser: &types.BrowserMFADevice{}, + }, + } + } + return res } @@ -8167,7 +8254,7 @@ func groupByDeviceType(devs []*types.MFADevice) devicesByType { // Use only for registration purposes. func (a *Server) validateMFAAuthResponseForRegister(ctx context.Context, resp *proto.MFAAuthenticateResponse, username string, requiredExtensions *mfav1.ChallengeExtensions) (hasDevices bool, err error) { // Let users without a useable device go through registration. - if resp == nil || (resp.GetTOTP() == nil && resp.GetWebauthn() == nil && resp.GetSSO() == nil) { + if resp == nil || (resp.GetTOTP() == nil && resp.GetWebauthn() == nil && resp.GetSSO() == nil && resp.GetBrowser() == nil) { devices, err := a.Services.GetMFADevices(ctx, username, false /* withSecrets */) if err != nil { return false, trace.Wrap(err) @@ -8186,8 +8273,9 @@ func (a *Server) validateMFAAuthResponseForRegister(ctx context.Context, resp *p hasTOTP := authPref.IsSecondFactorTOTPAllowed() && devsByType.TOTP hasWebAuthn := authPref.IsSecondFactorWebauthnAllowed() && len(devsByType.Webauthn) > 0 hasSSO := authPref.IsSecondFactorSSOAllowed() && devsByType.SSO != nil + hasBrowser := authPref.GetAllowCLIAuthViaBrowser() && devsByType.Browser != nil - if hasTOTP || hasWebAuthn || hasSSO { + if hasTOTP || hasWebAuthn || hasSSO || hasBrowser { return false, trace.BadParameter("second factor authentication required") } @@ -8255,6 +8343,7 @@ func (a *Server) ValidateMFAAuthResponse( auditEvent.Code = events.ValidateMFAAuthResponseCode auditEvent.Success = true deviceMetadata := mfaDeviceEventMetadata(authData.Device) + deviceMetadata.MFAViaBrowser = authData.MFAViaBrowser auditEvent.MFADevice = &deviceMetadata auditEvent.ChallengeAllowReuse = authData.AllowReuse == mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_YES } @@ -8367,6 +8456,9 @@ func (a *Server) validateMFAAuthResponseInternal( case *proto.MFAAuthenticateResponse_SSO: mfaAuthData, err := a.verifySSOMFASession(ctx, user, res.SSO.RequestId, res.SSO.Token, requiredExtensions) return mfaAuthData, trace.Wrap(err) + case *proto.MFAAuthenticateResponse_Browser: + mfaAuthData, err := a.VerifyBrowserMFASession(ctx, user, res.Browser.RequestId, res.Browser.WebauthnResponse, requiredExtensions) + return mfaAuthData, trace.Wrap(err) default: return nil, trace.BadParameter("unknown or missing MFAAuthenticateResponse type %T", resp.Response) } diff --git a/lib/auth/auth_login_test.go b/lib/auth/auth_login_test.go index 51902146bd4c9..5fe05199299ed 100644 --- a/lib/auth/auth_login_test.go +++ b/lib/auth/auth_login_test.go @@ -1694,7 +1694,7 @@ func TestSSOPasswordBypass(t *testing.T) { // proxyClient.AuthenticateSSHUser to something else (eg, // proxyClient.AuthenticateWebUser). // Optional. - authenticateOverride func(context.Context, authclient.AuthenticateSSHRequest) (*authclient.SSHLoginResponse, error) + authenticateOverride func(context.Context, authclient.AuthenticateSSHRequest) (*authclient.CLILoginResponse, error) }{ { name: "OTP", @@ -1716,7 +1716,7 @@ func TestSSOPasswordBypass(t *testing.T) { { name: "AuthenticateWeb", setSecondFactor: solveWebauthn, - authenticateOverride: func(ctx context.Context, req authclient.AuthenticateSSHRequest) (*authclient.SSHLoginResponse, error) { + authenticateOverride: func(ctx context.Context, req authclient.AuthenticateSSHRequest) (*authclient.CLILoginResponse, error) { // We only care about the error here, it's OK to swallow the session. _, err := proxyClient.AuthenticateWebUser(ctx, req.AuthenticateUserRequest) return nil, err diff --git a/lib/auth/auth_test.go b/lib/auth/auth_test.go index ed8a0cd201200..eee2256cf4628 100644 --- a/lib/auth/auth_test.go +++ b/lib/auth/auth_test.go @@ -966,7 +966,7 @@ func TestAuthenticateUser_mfaDeviceLocked(t *testing.T) { proxyClient, err := testServer.NewClient(authtest.TestBuiltin(types.RoleProxy)) require.NoError(t, err, "NewClient") - authenticateSSH := func(dev *authtest.Device) (*authclient.SSHLoginResponse, error) { + authenticateSSH := func(dev *authtest.Device) (*authclient.CLILoginResponse, error) { chal, err := proxyClient.CreateAuthenticateChallenge(ctx, &proto.CreateAuthenticateChallengeRequest{ Request: &proto.CreateAuthenticateChallengeRequest_UserCredentials{ UserCredentials: &proto.UserCredentials{ diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go index 8c9b8e52b53fb..8076ff72f886c 100644 --- a/lib/auth/auth_with_roles.go +++ b/lib/auth/auth_with_roles.go @@ -598,7 +598,7 @@ func (a *ServerWithRoles) AuthenticateWebUser(ctx context.Context, req authclien // AuthenticateSSHUser authenticates SSH console user, creates and returns a pair of signed TLS and SSH // short lived certificates as a result -func (a *ServerWithRoles) AuthenticateSSHUser(ctx context.Context, req authclient.AuthenticateSSHRequest) (*authclient.SSHLoginResponse, error) { +func (a *ServerWithRoles) AuthenticateSSHUser(ctx context.Context, req authclient.AuthenticateSSHRequest) (*authclient.CLILoginResponse, error) { // authentication request has its own authentication, however this limits the requests // types to proxies to make it harder to break if !a.hasBuiltinRole(types.RoleProxy) { @@ -7574,7 +7574,7 @@ func (a *ServerWithRoles) CreateRegisterChallenge(ctx context.Context, req *prot // Device trust: authorize device before issuing a register challenge without an MFA response or privilege token. // This is an exceptional case for users registering their first MFA challenge through `tsh`. - if mfaResp := req.GetExistingMFAResponse(); mfaResp.GetTOTP() == nil && mfaResp.GetWebauthn() == nil { + if mfaResp := req.GetExistingMFAResponse(); mfaResp.GetTOTP() == nil && mfaResp.GetWebauthn() == nil && mfaResp.GetBrowser() == nil { if err := a.enforceGlobalModeTrustedDevice(ctx); err != nil { return nil, trace.Wrap(err, "device trust is required for users to register their first MFA device") } diff --git a/lib/auth/authclient/clt.go b/lib/auth/authclient/clt.go index 3a4a2e4da9501..cbce4b4b7d696 100644 --- a/lib/auth/authclient/clt.go +++ b/lib/auth/authclient/clt.go @@ -50,6 +50,7 @@ import ( inventoryv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/inventory/v1" loginrulepb "github.com/gravitational/teleport/api/gen/proto/go/teleport/loginrule/v1" machineidv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/machineid/v1" + mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" notificationsv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/notifications/v1" pluginspb "github.com/gravitational/teleport/api/gen/proto/go/teleport/plugins/v1" recordingmetadatav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/recordingmetadata/v1" @@ -1332,6 +1333,9 @@ type AuthenticateUserRequest struct { Webauthn *wantypes.CredentialAssertionResponse `json:"webauthn,omitempty"` // OTP is a password and second factor, used for MFA authentication OTP *OTPCreds `json:"otp,omitempty"` + // BrowserMFA is a Browser MFA message that a CLI client has sent to the proxy + // containing a WebAuthn response for auth + BrowserMFA *proto.BrowserMFAResponse `json:"browser,omitempty"` // Session is a web session credential used to authenticate web sessions Session *SessionCreds `json:"session,omitempty"` // ClientMetadata includes forwarded information about a client @@ -1359,7 +1363,7 @@ func (a *AuthenticateUserRequest) CheckAndSetDefaults() error { case a.Username == "" && a.Webauthn != nil: // OK, passwordless. case a.Username == "": return trace.BadParameter("missing parameter 'username'") - case a.Pass == nil && a.Webauthn == nil && a.OTP == nil && a.Session == nil && a.HeadlessAuthenticationID == "": + case a.Pass == nil && a.Webauthn == nil && a.OTP == nil && a.Session == nil && a.HeadlessAuthenticationID == "" && a.BrowserMFA == nil: return trace.BadParameter("at least one authentication method is required") } return nil @@ -1422,9 +1426,9 @@ func (a *AuthenticateSSHRequest) CheckAndSetDefaults() error { return nil } -// SSHLoginResponse is a response returned by web proxy, it preserves backwards compatibility +// CLILoginResponse is a response returned by web proxy, it preserves backwards compatibility // on the wire, which is the primary reason for non-matching json tags -type SSHLoginResponse struct { +type CLILoginResponse struct { // User contains a logged-in user information Username string `json:"username"` // Cert is a PEM encoded signed certificate @@ -1440,8 +1444,15 @@ type SSHLoginResponse struct { // ClientOptions contains some options that the cluster wants the client to // use. ClientOptions ClientOptions `json:"client_options"` + // BrowserMFAWebauthnResponse is a webauthn response for the browser MFA flow + // Exists in SSHLoginResponse as this is the payload used by the SSO redirector + // (lib/client/sso/redirector.go). + BrowserMFAWebauthnResponse *wantypes.CredentialAssertionResponse `json:"browser_mfa_webauthn_response,omitempty"` } +// TODO(danielashare): Remove this alias once e no longer references it +type SSHLoginResponse = CLILoginResponse + // ClientOptions contains options passed from the control plane to the client at // login time. type ClientOptions struct { @@ -1599,7 +1610,7 @@ type ClientI interface { AuthenticateWebUser(ctx context.Context, req AuthenticateUserRequest) (types.WebSession, error) // AuthenticateSSHUser authenticates SSH console user, creates and returns a pair of signed TLS and SSH // short-lived certificates as a result - AuthenticateSSHUser(ctx context.Context, req AuthenticateSSHRequest) (*SSHLoginResponse, error) + AuthenticateSSHUser(ctx context.Context, req AuthenticateSSHRequest) (*CLILoginResponse, error) // Ping gets basic info about the auth server. Ping(ctx context.Context) (proto.PingResponse, error) @@ -1793,6 +1804,9 @@ type ClientI interface { // StableUNIXUsersClient returns a client for the stable UNIX users API. StableUNIXUsersClient() stableunixusersv1.StableUNIXUsersServiceClient + // MFAServiceClient returns a client for the MFA service. + MFAServiceClient() mfav1.MFAServiceClient + // CloneHTTPClient creates a new HTTP client with the same configuration. CloneHTTPClient(params ...roundtrip.ClientParam) (*HTTPClient, error) diff --git a/lib/auth/authclient/http_client.go b/lib/auth/authclient/http_client.go index 4a3abe7573b9b..c9cea30fa16a6 100644 --- a/lib/auth/authclient/http_client.go +++ b/lib/auth/authclient/http_client.go @@ -498,7 +498,7 @@ func (c *HTTPClient) AuthenticateWebUser(ctx context.Context, req AuthenticateUs // AuthenticateSSHUser authenticates SSH console user, creates and returns a pair of signed TLS and SSH // short lived certificates as a result -func (c *HTTPClient) AuthenticateSSHUser(ctx context.Context, req AuthenticateSSHRequest) (*SSHLoginResponse, error) { +func (c *HTTPClient) AuthenticateSSHUser(ctx context.Context, req AuthenticateSSHRequest) (*CLILoginResponse, error) { out, err := c.PostJSON( ctx, c.Endpoint("users", url.PathEscape(req.Username), "ssh", "authenticate"), @@ -507,7 +507,7 @@ func (c *HTTPClient) AuthenticateSSHUser(ctx context.Context, req AuthenticateSS if err != nil { return nil, trace.Wrap(err) } - var re SSHLoginResponse + var re CLILoginResponse if err := json.Unmarshal(out.Bytes(), &re); err != nil { return nil, trace.Wrap(err) } diff --git a/lib/auth/browser_mfa.go b/lib/auth/browser_mfa.go new file mode 100644 index 0000000000000..c6e71961f307d --- /dev/null +++ b/lib/auth/browser_mfa.go @@ -0,0 +1,219 @@ +// Teleport +// Copyright (C) 2026 Gravitational, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package auth + +import ( + "context" + "net/url" + + "github.com/google/uuid" + "github.com/gravitational/trace" + + "github.com/gravitational/teleport/api/client/proto" + "github.com/gravitational/teleport/api/constants" + mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" + "github.com/gravitational/teleport/lib/auth/internal/browsermfa" + "github.com/gravitational/teleport/lib/auth/mfatypes" + wanlib "github.com/gravitational/teleport/lib/auth/webauthn" + wantypes "github.com/gravitational/teleport/lib/auth/webauthntypes" + "github.com/gravitational/teleport/lib/authz" + "github.com/gravitational/teleport/lib/client/sso" + "github.com/gravitational/teleport/lib/services" +) + +// CompleteBrowserMFAChallenge completes an MFA challenge response by returning the redirect URL with encrypted response. +func (a *Server) CompleteBrowserMFAChallenge(ctx context.Context, requestID string, webauthnResponse *webauthnpb.CredentialAssertionResponse) (string, error) { + const notFoundErrMsg = "mfa session data not found" + // Retrieve the MFA session + mfaSession, err := a.GetMFASession(ctx, requestID) + if trace.IsNotFound(err) { + return "", trace.AccessDenied("%s", notFoundErrMsg) + } else if err != nil { + return "", trace.Wrap(err) + } + + user, err := authz.UserFromContext(ctx) + if err != nil { + return "", trace.Wrap(err) + } + + if mfaSession.Username != user.GetIdentity().Username { + return "", trace.AccessDenied("%s", notFoundErrMsg) + } + + // Valid WebAuthn response, encrypt and return it + u, err := url.Parse(mfaSession.TSHRedirectURL) + if err != nil { + return "", trace.Wrap(err) + } + + wr := wantypes.CredentialAssertionResponseFromProto(webauthnResponse) + clientRedirectURL, err := browsermfa.EncryptBrowserMFAResponse(u, wr) + if err != nil { + return "", trace.Wrap(err) + } + + return clientRedirectURL, nil +} + +// BeginBrowserMFAChallenge creates a new Browser MFA auth request and session +// data for the given params and stores it in the backend. +func (a *Server) BeginBrowserMFAChallenge(ctx context.Context, params mfatypes.BeginBrowserMFAChallengeParams) (*proto.BrowserMFAChallenge, error) { + if err := sso.ValidateClientRedirect(params.BrowserMFATSHRedirectURL, sso.CeremonyTypeMFA, nil); err != nil { + return nil, trace.Wrap(err, InvalidClientRedirectErrorMessage) + } + + requestID := uuid.NewString() + browserChal := &proto.BrowserMFAChallenge{ + RequestId: requestID, + } + + sessionData := &services.MFASessionData{ + Username: params.User, + RequestID: requestID, + ConnectorID: constants.BrowserMFA, + ConnectorType: constants.BrowserMFA, + TSHRedirectURL: params.BrowserMFATSHRedirectURL, + ChallengeExtensions: &mfatypes.ChallengeExtensions{ + Scope: params.Ext.Scope, + AllowReuse: params.Ext.AllowReuse, + UserVerificationRequirement: params.Ext.UserVerificationRequirement, + }, + } + + if err := a.UpsertMFASessionData(ctx, sessionData); err != nil { + return nil, trace.Wrap(err) + } + + return browserChal, nil +} + +// VerifyBrowserMFASession verifies that the given Browser MFA webauthn response matches an existing MFA session +// for the user and session ID. It also checks the required extensions, and finishes by deleting +// the MFA session if reuse is not allowed. +func (a *Server) VerifyBrowserMFASession(ctx context.Context, username, sessionID string, webauthnResponse *webauthnpb.CredentialAssertionResponse, requiredExtensions *mfav1.ChallengeExtensions) (*authz.MFAAuthData, error) { + if requiredExtensions == nil { + return nil, trace.BadParameter("requested challenge extensions must be supplied.") + } + + if webauthnResponse == nil { + return nil, trace.BadParameter("webauthn response must be supplied") + } + + const notFoundErrMsg = "browser MFA session data not found" + mfaSess, err := a.GetMFASessionData(ctx, sessionID) + if trace.IsNotFound(err) { + return nil, trace.NotFound("%s", notFoundErrMsg) + } else if err != nil { + return nil, trace.Wrap(err) + } + + // Verify the user's name matches. + if mfaSess.Username != username { + return nil, trace.NotFound("%s", notFoundErrMsg) + } + + // Verify this is a Browser MFA session and not an SSO MFA session. + if mfaSess.TSHRedirectURL == "" || mfaSess.ConnectorType != constants.BrowserMFA { + a.logger.WarnContext(ctx, + "The Browser MFA flow was used to access a SSO MFA session.", + "request_id", mfaSess.RequestID, + "connector_type", mfaSess.ConnectorType, + "username", username, + ) + return nil, trace.NotFound("%s", notFoundErrMsg) + } + + // Check if the MFA session matches the user's Browser MFA settings. + devs, err := a.Services.GetMFADevices(ctx, username, false /* withSecrets */) + if err != nil { + return nil, trace.Wrap(err) + } + + // Check the user has a Browser MFA device + groupedDevs := groupByDeviceType(devs) + if groupedDevs.Browser == nil { + if len(groupedDevs.Webauthn) == 0 { + a.logger.DebugContext(ctx, + "Browser MFA not available: user has no WebAuthn devices registered", + "user", username, + ) + } + return nil, trace.AccessDenied("browser MFA not available") + } + + // Check if the given scope is satisfied by the challenge scope. + if requiredExtensions.Scope != mfaSess.ChallengeExtensions.Scope { + return nil, trace.AccessDenied( + "required scope %q is not satisfied by the given browser MFA session with scope %q", + requiredExtensions.Scope, + mfaSess.ChallengeExtensions.Scope, + ) + } + + // If this session is reusable, but this context forbids reusable sessions, return an error. + reuseNotPermitted := requiredExtensions.AllowReuse == mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_NO + sessionAllowsReuse := mfaSess.ChallengeExtensions.AllowReuse == mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_YES + if reuseNotPermitted && sessionAllowsReuse { + return nil, trace.AccessDenied("the given browser MFA session allows reuse, but reuse is not permitted in this context") + } + + // Convert from protobuf type to wantypes + wanResp := wantypes.CredentialAssertionResponseFromProto(webauthnResponse) + + cap, err := a.GetAuthPreference(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + waConfig, err := cap.GetWebauthn() + if err != nil { + return nil, trace.Wrap(err) + } + u2f, err := cap.GetU2F() + if err != nil && !trace.IsNotFound(err) { + return nil, trace.Wrap(err) + } + + loginFlow := &wanlib.LoginFlow{ + Webauthn: waConfig, + U2F: u2f, + Identity: a.Services, + } + + // Verify webauthn response + loginData, err := loginFlow.Finish(ctx, username, wanResp, &mfav1.ChallengeExtensions{ + Scope: mfaSess.ChallengeExtensions.Scope, + AllowReuse: mfaSess.ChallengeExtensions.AllowReuse, + }) + if err != nil { + return nil, trace.AccessDenied("failed to verify WebAuthn response: %v", err) + } + + if mfaSess.ChallengeExtensions.AllowReuse != mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_YES { + if err := a.DeleteMFASessionData(ctx, sessionID); err != nil { + return nil, trace.Wrap(err) + } + } + + return &authz.MFAAuthData{ + Device: loginData.Device, + User: username, + AllowReuse: mfaSess.ChallengeExtensions.AllowReuse, + MFAViaBrowser: true, + }, nil +} diff --git a/lib/auth/browser_mfa_test.go b/lib/auth/browser_mfa_test.go new file mode 100644 index 0000000000000..6f73584bacf2c --- /dev/null +++ b/lib/auth/browser_mfa_test.go @@ -0,0 +1,974 @@ +// Teleport +// Copyright (C) 2026 Gravitational, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package auth_test + +import ( + "context" + "encoding/base64" + "encoding/json" + "net/url" + "testing" + + "github.com/google/uuid" + "github.com/gravitational/trace" + "github.com/jonboulle/clockwork" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/gravitational/teleport/api/client/proto" + "github.com/gravitational/teleport/api/constants" + mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" + "github.com/gravitational/teleport/api/types" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" + "github.com/gravitational/teleport/lib/auth" + "github.com/gravitational/teleport/lib/auth/authclient" + "github.com/gravitational/teleport/lib/auth/authtest" + "github.com/gravitational/teleport/lib/auth/internal/browsermfa" + "github.com/gravitational/teleport/lib/auth/mfatypes" + wanlib "github.com/gravitational/teleport/lib/auth/webauthn" + wantypes "github.com/gravitational/teleport/lib/auth/webauthntypes" + "github.com/gravitational/teleport/lib/authz" + "github.com/gravitational/teleport/lib/secret" + "github.com/gravitational/teleport/lib/services" +) + +const browserMFARedirectURL = "http://localhost:12345/callback?secret_key=test-key" + +type testEnv struct { + server *authtest.Server + auth *auth.Server + clock *clockwork.FakeClock + authPref types.AuthPreference + webauthnUser types.User + webauthnDev *authtest.Device + samlUser types.User + samlWebauthnUser types.User +} + +func newBrowserMFATestEnv(t *testing.T) testEnv { + t.Helper() + ctx := t.Context() + + fakeClock := clockwork.NewFakeClock() + testServer, err := authtest.NewTestServer(authtest.ServerConfig{ + Auth: authtest.AuthServerConfig{ + Dir: t.TempDir(), + Clock: fakeClock, + }, + }) + require.NoError(t, err) + t.Cleanup(func() { assert.NoError(t, testServer.Close()) }) + + a := testServer.Auth() + + // Register a proxy server so getProxyPublicAddr returns a valid address. + proxy, err := types.NewServer("test-proxy", types.KindProxy, types.ServerSpecV2{ + PublicAddrs: []string{"proxy.example.com:443"}, + }) + require.NoError(t, err) + err = a.UpsertProxy(ctx, proxy) + require.NoError(t, err) + + // Enable WebAuthn support. + authPref, err := types.NewAuthPreference(types.AuthPreferenceSpecV2{ + Type: constants.Local, + SecondFactor: constants.SecondFactorWebauthn, + Webauthn: &types.Webauthn{ + RPID: "localhost", + }, + AllowCLIAuthViaBrowser: types.NewBoolOption(true), + }) + require.NoError(t, err) + _, err = a.UpsertAuthPreference(ctx, authPref) + require.NoError(t, err) + + // Create a user with a WebAuthn device. + webauthnUser, _, err := authtest.CreateUserAndRole(a, "webauthn-user", []string{"role"}, nil) + require.NoError(t, err) + + // Add a WebAuthn device for the webauthn user. + webauthnUserClient, err := testServer.NewClient(authtest.TestUser(webauthnUser.GetName())) + require.NoError(t, err) + webauthnDev, err := authtest.RegisterTestDevice(ctx, webauthnUserClient, "webauthn-device", proto.DeviceType_DEVICE_TYPE_WEBAUTHN, nil /* authenticator */) + require.NoError(t, err) + + // Create a fake SAML user with SSO MFA enabled who shouldn't get Browser MFA challenge + // because they don't have webauthn. + samlUser, samlRole, err := authtest.CreateUserAndRole(a, "saml-user", []string{"role"}, nil) + require.NoError(t, err) + + // Create a fake SAML user with SSO MFA enabled and a webauthn device, who will get Browser MFA. + samlMFAUser, samlMFARole, err := authtest.CreateUserAndRole(a, "saml-webauthn-user", []string{"role"}, nil) + require.NoError(t, err) + err = a.UpsertMFADevice(ctx, samlMFAUser.GetName(), webauthnDev.MFA) + require.NoError(t, err) + + samlConnector, err := types.NewSAMLConnector("saml", types.SAMLConnectorSpecV2{ + AssertionConsumerService: "http://localhost:65535/acs", + Issuer: "test", + SSO: "https://localhost:65535/sso", + AttributesToRoles: []types.AttributeMapping{ + {Name: "groups", Value: "admin", Roles: []string{samlRole.GetName(), samlMFARole.GetName()}}, + }, + MFASettings: &types.SAMLConnectorMFASettings{ + Enabled: true, + Issuer: "test", + Sso: "https://localhost:65535/sso", + }, + }) + require.NoError(t, err) + _, err = a.UpsertSAMLConnector(ctx, samlConnector) + require.NoError(t, err) + + connectorRef := &types.ConnectorRef{ + ID: samlConnector.GetName(), + Type: samlConnector.GetKind(), + } + samlUser.SetCreatedBy(types.CreatedBy{Time: fakeClock.Now(), Connector: connectorRef}) + _, err = a.UpsertUser(ctx, samlUser) + require.NoError(t, err) + + samlMFAUser.SetCreatedBy(types.CreatedBy{Time: fakeClock.Now(), Connector: connectorRef}) + _, err = a.UpsertUser(ctx, samlMFAUser) + require.NoError(t, err) + + return testEnv{ + server: testServer, + auth: a, + clock: fakeClock, + authPref: authPref, + webauthnUser: webauthnUser, + webauthnDev: webauthnDev, + samlUser: samlUser, + samlWebauthnUser: samlMFAUser, + } +} + +func TestEncryptBrowserMFAResponse(t *testing.T) { + t.Parallel() + + secretKey, err := secret.NewKey() + require.NoError(t, err) + + webauthnResponse := &wantypes.CredentialAssertionResponse{ + PublicKeyCredential: wantypes.PublicKeyCredential{ + Credential: wantypes.Credential{ + ID: "test-credential-id", + Type: "public-key", + }, + RawID: []byte("test-raw-id"), + }, + AssertionResponse: wantypes.AuthenticatorAssertionResponse{ + AuthenticatorResponse: wantypes.AuthenticatorResponse{ + ClientDataJSON: []byte(`{"type":"webauthn.get","challenge":"test-challenge"}`), + }, + AuthenticatorData: []byte("test-authenticator-data"), + Signature: []byte("test-signature"), + }, + } + + tests := []struct { + name string + redirectURL string + webauthnResponse *wantypes.CredentialAssertionResponse + assertError func(t *testing.T, err error) + assertRedirectURL func(t *testing.T, redirectURL string) + }{ + { + name: "OK valid inputs", + redirectURL: "http://127.0.0.1:62972/callback?secret_key=" + secretKey.String(), + webauthnResponse: webauthnResponse, + assertError: func(t *testing.T, err error) { + require.NoError(t, err) + }, + assertRedirectURL: func(t *testing.T, redirectURL string) { + // Parse the returned URL + u, err := url.Parse(redirectURL) + require.NoError(t, err) + + // Verify the response parameter exists + response := u.Query().Get("response") + require.NotEmpty(t, response, "response parameter should be present") + + // Verify we can decrypt the response + plaintext, err := secretKey.Open([]byte(response)) + require.NoError(t, err) + + // Verify the decrypted content + var loginResponse authclient.CLILoginResponse + err = json.Unmarshal(plaintext, &loginResponse) + require.NoError(t, err) + require.NotNil(t, loginResponse.BrowserMFAWebauthnResponse) + assert.Equal(t, webauthnResponse.ID, loginResponse.BrowserMFAWebauthnResponse.ID) + }, + }, + { + name: "NOK missing secret_key", + redirectURL: "http://127.0.0.1:62972/callback", + webauthnResponse: webauthnResponse, + assertError: func(t *testing.T, err error) { + require.Error(t, err) + assert.True(t, trace.IsBadParameter(err), "expected bad parameter error but got %v", err) + assert.Contains(t, err.Error(), "missing secret_key") + }, + assertRedirectURL: func(t *testing.T, redirectURL string) { + require.Fail(t, "should not reach here, expected an error") + }, + }, + { + name: "NOK invalid secret_key format", + redirectURL: "http://127.0.0.1:62972/callback?secret_key=invalid-not-hex", + webauthnResponse: webauthnResponse, + assertError: func(t *testing.T, err error) { + require.Error(t, err) + assert.Contains(t, err.Error(), "encoding/hex") + }, + assertRedirectURL: func(t *testing.T, redirectURL string) { + require.Fail(t, "should not reach here, expected an error") + }, + }, + { + name: "NOK invalid URL", + redirectURL: "://invalid-url", + webauthnResponse: webauthnResponse, + assertError: func(t *testing.T, err error) { + // This will fail during url.Parse + require.Error(t, err) + }, + assertRedirectURL: func(t *testing.T, redirectURL string) { + require.Fail(t, "should not reach here, expected an error") + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + redirectURL, err := url.Parse(tt.redirectURL) + if err != nil { + tt.assertError(t, err) + return + } + + result, err := browsermfa.EncryptBrowserMFAResponse(redirectURL, tt.webauthnResponse) + tt.assertError(t, err) + if err == nil { + tt.assertRedirectURL(t, result) + } + }) + } +} + +func TestCompleteBrowserMFAChallenge(t *testing.T) { + t.Parallel() + ctx := t.Context() + + env := newBrowserMFATestEnv(t) + a := env.auth + username := env.webauthnUser.GetName() + + secretKey, err := secret.NewKey() + require.NoError(t, err) + + rawID := env.webauthnDev.MFA.GetWebauthn().CredentialId + webauthnResponse := &wantypes.CredentialAssertionResponse{ + PublicKeyCredential: wantypes.PublicKeyCredential{ + Credential: wantypes.Credential{ + ID: base64.RawURLEncoding.EncodeToString(rawID), + Type: "public-key", + }, + RawID: rawID, + }, + AssertionResponse: wantypes.AuthenticatorAssertionResponse{ + AuthenticatorResponse: wantypes.AuthenticatorResponse{ + ClientDataJSON: []byte(`{"type":"webauthn.get","challenge":"test-challenge"}`), + }, + AuthenticatorData: []byte("test-authenticator-data"), + Signature: []byte("test-signature"), + }, + } + + tests := []struct { + name string + setupSession func(t *testing.T) string + assertError require.ErrorAssertionFunc + assertResult func(t *testing.T, result string) + }{ + { + name: "NOK missing MFA session", + setupSession: func(t *testing.T) string { + return "non-existent-request-id" + }, + assertError: func(t require.TestingT, err error, i ...interface{}) { + require.Error(t, err) + assert.True(t, trace.IsAccessDenied(err), "expected access denied error but got %v", err) + }, + }, + { + name: "NOK username mismatch", + setupSession: func(t *testing.T) string { + requestID := uuid.NewString() + redirectURL := "http://127.0.0.1:62972/callback?secret_key=" + secretKey.String() + session := &services.MFASessionData{ + RequestID: requestID, + Username: "other-user", // mismatch username + TSHRedirectURL: redirectURL, + ConnectorID: "test-connector", + ConnectorType: "test", + ChallengeExtensions: &mfatypes.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + AllowReuse: mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_YES, + UserVerificationRequirement: "required", + }, + } + err := a.UpsertMFASessionData(ctx, session) + require.NoError(t, err) + return requestID + }, + assertError: func(t require.TestingT, err error, i ...interface{}) { + require.Error(t, err) + assert.True(t, trace.IsAccessDenied(err), "expected access denied error but got %v", err) + }, + }, + { + name: "NOK invalid redirect URL in session", + setupSession: func(t *testing.T) string { + requestID := uuid.NewString() + session := &services.MFASessionData{ + RequestID: requestID, + Username: username, + TSHRedirectURL: "://invalid-url", + ConnectorID: "test-connector", + ConnectorType: "test", + ChallengeExtensions: &mfatypes.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + }, + } + err := a.UpsertMFASessionData(ctx, session) + require.NoError(t, err) + return requestID + }, + assertError: func(t require.TestingT, err error, i ...interface{}) { + require.Error(t, err) + }, + }, + { + name: "OK valid response", + setupSession: func(t *testing.T) string { + requestID := uuid.NewString() + redirectURL := "http://127.0.0.1:62972/callback?secret_key=" + secretKey.String() + session := &services.MFASessionData{ + RequestID: requestID, + Username: username, + TSHRedirectURL: redirectURL, + ConnectorID: "test-connector", + ConnectorType: "test", + ChallengeExtensions: &mfatypes.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + }, + } + err := a.UpsertMFASessionData(ctx, session) + require.NoError(t, err) + return requestID + }, + assertError: func(t require.TestingT, err error, i ...interface{}) { + require.NoError(t, err) + }, + assertResult: func(t *testing.T, result string) { + u, err := url.Parse(result) + require.NoError(t, err) + assert.Equal(t, "127.0.0.1:62972", u.Host) + assert.Equal(t, "/callback", u.Path) + + response := u.Query().Get("response") + require.NotEmpty(t, response, "response parameter should be present") + + plaintext, err := secretKey.Open([]byte(response)) + require.NoError(t, err) + + var loginResponse authclient.CLILoginResponse + err = json.Unmarshal(plaintext, &loginResponse) + require.NoError(t, err) + require.NotNil(t, loginResponse.BrowserMFAWebauthnResponse) + assert.Equal(t, webauthnResponse.ID, loginResponse.BrowserMFAWebauthnResponse.ID) + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + requestID := tt.setupSession(t) + userCtx := authz.ContextWithUser(ctx, authtest.TestUserWithRoles(username, []string{"role"}).I) + result, err := a.CompleteBrowserMFAChallenge( + userCtx, + requestID, + wantypes.CredentialAssertionResponseToProto(webauthnResponse), + ) + tt.assertError(t, err) + if tt.assertResult != nil { + tt.assertResult(t, result) + } + }) + } +} + +func TestCreateAuthenticateChallenge_BrowserMFARequestID(t *testing.T) { + t.Parallel() + ctx := t.Context() + + env := newBrowserMFATestEnv(t) + a := env.auth + + password := []byte("test-password") + require.NoError(t, a.UpsertPassword(env.webauthnUser.GetName(), password)) + + userCredsRequest := &proto.CreateAuthenticateChallengeRequest_UserCredentials{ + UserCredentials: &proto.UserCredentials{ + Username: env.webauthnUser.GetName(), + Password: password, + }, + } + + tests := []struct { + name string + setup func(t *testing.T) + request *proto.CreateAuthenticateChallengeRequest + checkError func(t *testing.T, err error) + wantExtensions *mfav1.ChallengeExtensions + }{ + { + name: "NOK invalid browser MFA request ID", + request: &proto.CreateAuthenticateChallengeRequest{ + Request: userCredsRequest, + BrowserMFARequestID: "non-existent-id", + }, + checkError: func(t *testing.T, err error) { + assert.ErrorAs(t, err, new(*trace.AccessDeniedError), "CreateAuthenticateChallenge error mismatch") + assert.ErrorContains(t, err, "invalid browser MFA request") + }, + }, + { + name: "NOK challenge extensions set with browser MFA request ID", + request: &proto.CreateAuthenticateChallengeRequest{ + Request: userCredsRequest, + BrowserMFARequestID: "some-request-id", + ChallengeExtensions: &mfav1.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + }, + }, + checkError: func(t *testing.T, err error) { + assert.ErrorAs(t, err, new(*trace.BadParameterError), "CreateAuthenticateChallenge error mismatch") + assert.ErrorContains(t, err, "challenge extensions must not be set") + }, + }, + { + name: "OK browser MFA challenge extensions applied from MFA session", + setup: func(t *testing.T) { + session := &services.MFASessionData{ + RequestID: "test-request-1", + Username: env.webauthnUser.GetName(), + ConnectorID: constants.BrowserMFA, + ConnectorType: constants.BrowserMFA, + ChallengeExtensions: &mfatypes.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + AllowReuse: mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_NO, + UserVerificationRequirement: "required", + }, + } + err := a.UpsertMFASessionData(ctx, session) + require.NoError(t, err) + }, + request: &proto.CreateAuthenticateChallengeRequest{ + Request: userCredsRequest, + BrowserMFARequestID: "test-request-1", + }, + wantExtensions: &mfav1.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + AllowReuse: mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_NO, + UserVerificationRequirement: "required", + }, + }, + { + name: "NOK nil challenge extensions", + setup: func(t *testing.T) { + session := &services.MFASessionData{ + RequestID: "test-request-2", + Username: env.webauthnUser.GetName(), + ConnectorID: constants.BrowserMFA, + ConnectorType: constants.BrowserMFA, + ChallengeExtensions: nil, + } + err := a.UpsertMFASessionData(ctx, session) + require.NoError(t, err) + }, + request: &proto.CreateAuthenticateChallengeRequest{ + Request: userCredsRequest, + BrowserMFARequestID: "test-request-2", + }, + checkError: func(t *testing.T, err error) { + assert.ErrorAs(t, err, new(*trace.BadParameterError), "CreateAuthenticateChallenge error mismatch") + assert.ErrorContains(t, err, "stored session lacks challenge extensions") + }, + }, + { + name: "NOK username mismatch", + setup: func(t *testing.T) { + session := &services.MFASessionData{ + RequestID: "test-request-3", + Username: "mismatch", + ConnectorID: constants.BrowserMFA, + ConnectorType: constants.BrowserMFA, + ChallengeExtensions: &mfatypes.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + }, + } + err := a.UpsertMFASessionData(ctx, session) + require.NoError(t, err) + }, + request: &proto.CreateAuthenticateChallengeRequest{ + Request: userCredsRequest, + BrowserMFARequestID: "test-request-3", + }, + checkError: func(t *testing.T, err error) { + assert.ErrorAs(t, err, new(*trace.AccessDeniedError), "CreateAuthenticateChallenge error mismatch") + assert.ErrorContains(t, err, "invalid browser MFA request") + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + + if tt.setup != nil { + tt.setup(t) + } + + var gotExtensions *mfav1.ChallengeExtensions + a.ObserveBrowserMFAChallengeExtensionsForTesting = func(ext *mfav1.ChallengeExtensions) { + gotExtensions = ext + } + + challenge, err := a.CreateAuthenticateChallenge(ctx, tt.request) + + if tt.checkError != nil { + tt.checkError(t, err) + return + } + + require.NoError(t, err) + require.NotNil(t, challenge) + assert.NotNil(t, challenge.WebauthnChallenge, "expected WebAuthn challenge to be present") + + if tt.wantExtensions != nil { + require.Equal(t, tt.wantExtensions, gotExtensions) + } + }) + } +} + +func newBrowserMFASessionData(sessionID, username string, ext *mfav1.ChallengeExtensions) *services.MFASessionData { + challengeExt := &mfatypes.ChallengeExtensions{} + if ext != nil { + challengeExt.Scope = ext.Scope + challengeExt.AllowReuse = ext.AllowReuse + challengeExt.UserVerificationRequirement = ext.UserVerificationRequirement + } + + return &services.MFASessionData{ + RequestID: sessionID, + Username: username, + ConnectorID: constants.BrowserMFA, + ConnectorType: constants.BrowserMFA, + ChallengeExtensions: challengeExt, + TSHRedirectURL: browserMFARedirectURL, + } +} + +func beginAndSolveBrowserMFAWebauthn(t *testing.T, env testEnv, ext *mfav1.ChallengeExtensions) *webauthnpb.CredentialAssertionResponse { + t.Helper() + + waConfig, err := env.authPref.GetWebauthn() + require.NoError(t, err) + + loginFlow := &wanlib.LoginFlow{ + Webauthn: waConfig, + Identity: env.auth.Services, + } + + assertion, err := loginFlow.Begin(t.Context(), env.webauthnUser.GetName(), ext) + require.NoError(t, err) + + assertionResp, err := env.webauthnDev.Key.SignAssertion(env.webauthnDev.Origin(), assertion) + require.NoError(t, err) + + return wantypes.CredentialAssertionResponseToProto(assertionResp) +} + +func TestBrowserMFAChallengeCreation(t *testing.T) { + t.Parallel() + ctx := t.Context() + + env := newBrowserMFATestEnv(t) + a := env.auth + + // Create a standard user without MFA devices. + standardUser, _, err := authtest.CreateUserAndRole(a, "standard", []string{"role"}, nil) + require.NoError(t, err) + + loginExt := &mfav1.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + } + + for _, tt := range []struct { + name string + username string + setup func(t *testing.T) + challengeRequest *proto.CreateAuthenticateChallengeRequest + checkError func(t *testing.T, err error) + assertChallenge func(t *testing.T, chal *proto.MFAAuthenticateChallenge) + }{ + { + name: "NOK user without WebAuthn devices", + username: standardUser.GetName(), + challengeRequest: &proto.CreateAuthenticateChallengeRequest{ + ChallengeExtensions: loginExt, + BrowserMFATSHRedirectURL: browserMFARedirectURL, + }, + assertChallenge: func(t *testing.T, chal *proto.MFAAuthenticateChallenge) { + assert.Nil(t, chal.BrowserMFAChallenge, "should not return Browser MFA challenge for user without WebAuthn devices") + }, + }, + { + name: "NOK BrowserMFATSHRedirectURL not provided", + username: env.webauthnUser.GetName(), + challengeRequest: &proto.CreateAuthenticateChallengeRequest{ + ChallengeExtensions: loginExt, + BrowserMFATSHRedirectURL: "", + }, + assertChallenge: func(t *testing.T, chal *proto.MFAAuthenticateChallenge) { + assert.Nil(t, chal.BrowserMFAChallenge, "should not return Browser MFA challenge when BrowserMFATSHRedirectURL is empty") + }, + }, + { + name: "NOK Browser authentication disabled by auth preference", + username: env.webauthnUser.GetName(), + challengeRequest: &proto.CreateAuthenticateChallengeRequest{ + ChallengeExtensions: loginExt, + BrowserMFATSHRedirectURL: browserMFARedirectURL, + }, + setup: func(t *testing.T) { + // Disable Browser authentication. + env.authPref.SetAllowCLIAuthViaBrowser(false) + _, err = a.UpsertAuthPreference(ctx, env.authPref) + require.NoError(t, err) + t.Cleanup(func() { + env.authPref.SetAllowCLIAuthViaBrowser(true) + _, err = a.UpsertAuthPreference(ctx, env.authPref) + assert.NoError(t, err) + }) + }, + assertChallenge: func(t *testing.T, chal *proto.MFAAuthenticateChallenge) { + assert.Nil(t, chal.BrowserMFAChallenge, "should not return Browser MFA challenge when AllowBrowserAuthentication is false") + }, + }, + { + name: "NOK SSO MFA user without webauthn should not get Browser MFA", + username: env.samlUser.GetName(), + challengeRequest: &proto.CreateAuthenticateChallengeRequest{ + ChallengeExtensions: loginExt, + BrowserMFATSHRedirectURL: browserMFARedirectURL, + }, + assertChallenge: func(t *testing.T, chal *proto.MFAAuthenticateChallenge) { + assert.Nil(t, chal.BrowserMFAChallenge, "SSO MFA users should not get Browser MFA challenge when webauthn not available") + }, + }, + { + name: "OK SSO MFA user gets Browser MFA when webauthn available", + username: env.samlWebauthnUser.GetName(), + challengeRequest: &proto.CreateAuthenticateChallengeRequest{ + ChallengeExtensions: loginExt, + BrowserMFATSHRedirectURL: browserMFARedirectURL, + }, + assertChallenge: func(t *testing.T, chal *proto.MFAAuthenticateChallenge) { + assert.NotNil(t, chal.BrowserMFAChallenge, "expected Browser MFA challenge to be returned") + assert.NotEmpty(t, chal.BrowserMFAChallenge.RequestId, "request ID should be generated") + + sd, err := a.GetMFASessionData(ctx, chal.BrowserMFAChallenge.RequestId) + require.NoError(t, err) + assert.Equal(t, &services.MFASessionData{ + RequestID: chal.BrowserMFAChallenge.RequestId, + Username: env.samlWebauthnUser.GetName(), + ConnectorID: constants.BrowserMFA, + ConnectorType: constants.BrowserMFA, + TSHRedirectURL: browserMFARedirectURL, + ChallengeExtensions: &mfatypes.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + }, + }, sd) + }, + }, + { + name: "OK WebAuthn user gets Browser MFA challenge", + username: env.webauthnUser.GetName(), + challengeRequest: &proto.CreateAuthenticateChallengeRequest{ + ChallengeExtensions: loginExt, + BrowserMFATSHRedirectURL: browserMFARedirectURL, + }, + assertChallenge: func(t *testing.T, chal *proto.MFAAuthenticateChallenge) { + require.NotNil(t, chal.BrowserMFAChallenge, "expected Browser MFA challenge to be returned") + assert.NotEmpty(t, chal.BrowserMFAChallenge.RequestId, "request ID should be generated") + + // Find SSO MFA session data tied to the challenge. + // Browser MFA reuses the SSO MFA session data storage. + sd, err := a.GetMFASessionData(ctx, chal.BrowserMFAChallenge.RequestId) + require.NoError(t, err) + assert.Equal(t, &services.MFASessionData{ + RequestID: chal.BrowserMFAChallenge.RequestId, + Username: env.webauthnUser.GetName(), + ConnectorID: constants.BrowserMFA, + ConnectorType: constants.BrowserMFA, + TSHRedirectURL: browserMFARedirectURL, + ChallengeExtensions: &mfatypes.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + }, + }, sd) + }, + }, + { + name: "OK allow reuse", + username: env.webauthnUser.GetName(), + challengeRequest: &proto.CreateAuthenticateChallengeRequest{ + ChallengeExtensions: &mfav1.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_USER_SESSION, + AllowReuse: mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_YES, + }, + BrowserMFATSHRedirectURL: browserMFARedirectURL, + }, + assertChallenge: func(t *testing.T, chal *proto.MFAAuthenticateChallenge) { + require.NotNil(t, chal.BrowserMFAChallenge, "expected Browser MFA challenge to be returned") + + // We should find SSO MFA session data tied to the challenge by request ID. + sd, err := a.GetMFASessionData(ctx, chal.BrowserMFAChallenge.RequestId) + require.NoError(t, err) + assert.Equal(t, mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_YES, sd.ChallengeExtensions.AllowReuse) + }, + }, + } { + t.Run(tt.name, func(t *testing.T) { + userClient, err := env.server.NewClient(authtest.TestUser(tt.username)) + require.NoError(t, err) + + if tt.setup != nil { + tt.setup(t) + } + + chal, err := userClient.CreateAuthenticateChallenge(ctx, tt.challengeRequest) + + if tt.checkError != nil { + require.Error(t, err) + tt.checkError(t, err) + return + } + + require.NoError(t, err) + require.NotNil(t, chal) + if tt.assertChallenge != nil { + tt.assertChallenge(t, chal) + } + }) + } +} + +func TestVerifyBrowserMFASession(t *testing.T) { + t.Parallel() + ctx := context.Background() + + const notFoundErrMsg = "browser MFA session data not found" + loginExt := &mfav1.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + } + + t.Run("bad parameter when requiredExtensions or webauthnResponse is nil", func(t *testing.T) { + env := newBrowserMFATestEnv(t) + sessionID := "session-id" + err := env.auth.UpsertMFASessionData(ctx, newBrowserMFASessionData(sessionID, env.webauthnUser.GetName(), loginExt)) + require.NoError(t, err) + + validResp := beginAndSolveBrowserMFAWebauthn(t, env, loginExt) + + for _, tt := range []struct { + name string + requiredExtensions *mfav1.ChallengeExtensions + webauthnResponse *webauthnpb.CredentialAssertionResponse + wantErr string + }{ + { + name: "missing required extensions", + webauthnResponse: validResp, + wantErr: "requested challenge extensions must be supplied", + }, + { + name: "missing webauthn response", + requiredExtensions: loginExt, + wantErr: "webauthn response must be supplied", + }, + } { + t.Run(tt.name, func(t *testing.T) { + authData, err := env.auth.VerifyBrowserMFASession(ctx, env.webauthnUser.GetName(), sessionID, tt.webauthnResponse, tt.requiredExtensions) + require.Nil(t, authData) + require.True(t, trace.IsBadParameter(err), "expected bad parameter error but got %v", err) + require.ErrorContains(t, err, tt.wantErr) + }) + } + }) + + t.Run("same not found error for missing session and username mismatch", func(t *testing.T) { + env := newBrowserMFATestEnv(t) + + for _, tt := range []struct { + name string + setup func(t *testing.T) + }{ + { + name: "session not found", // MFASessionData not created + }, + { + name: "username mismatch", + setup: func(t *testing.T) { + err := env.auth.UpsertMFASessionData(ctx, newBrowserMFASessionData("session-id", "someone-else", loginExt)) + require.NoError(t, err) + }, + }, + } { + t.Run(tt.name, func(t *testing.T) { + if tt.setup != nil { + tt.setup(t) + } + + mad, err := env.auth.VerifyBrowserMFASession(ctx, env.webauthnUser.GetName(), "session-id", &webauthnpb.CredentialAssertionResponse{}, loginExt) + require.Nil(t, mad) + require.True(t, trace.IsNotFound(err), "expected not found error but got %v", err) + require.EqualError(t, err, notFoundErrMsg) + }) + } + }) + + t.Run("access denied when user has no webauthn devices", func(t *testing.T) { + env := newBrowserMFATestEnv(t) + user, _, err := authtest.CreateUserAndRole(env.auth, "standard-user", []string{"role"}, nil) + require.NoError(t, err) + err = env.auth.UpsertMFASessionData(ctx, newBrowserMFASessionData("no-device-session", user.GetName(), loginExt)) + require.NoError(t, err) + + mad, err := env.auth.VerifyBrowserMFASession(ctx, user.GetName(), "no-device-session", &webauthnpb.CredentialAssertionResponse{}, loginExt) + require.Nil(t, mad) + require.ErrorIs(t, err, trace.AccessDenied("browser MFA not available")) + }) + + t.Run("access denied when scope or allow reuse does not match", func(t *testing.T) { + for _, tt := range []struct { + name string + sessionID string + sessionExtensions *mfav1.ChallengeExtensions + requiredExtensions *mfav1.ChallengeExtensions + wantErr string + }{ + { + name: "scope mismatch", + sessionID: "scope-mismatch", + sessionExtensions: &mfav1.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + }, + requiredExtensions: &mfav1.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_ADMIN_ACTION, + }, + wantErr: "required scope", + }, + { + name: "reuse mismatch", + sessionID: "reuse-mismatch", + sessionExtensions: &mfav1.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_USER_SESSION, + AllowReuse: mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_YES, + }, + requiredExtensions: &mfav1.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_USER_SESSION, + AllowReuse: mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_NO, + }, + wantErr: "reuse is not permitted", + }, + } { + t.Run(tt.name, func(t *testing.T) { + env := newBrowserMFATestEnv(t) + err := env.auth.UpsertMFASessionData(ctx, newBrowserMFASessionData(tt.sessionID, env.webauthnUser.GetName(), tt.sessionExtensions)) + require.NoError(t, err) + + authData, err := env.auth.VerifyBrowserMFASession(ctx, env.webauthnUser.GetName(), tt.sessionID, &webauthnpb.CredentialAssertionResponse{}, tt.requiredExtensions) + require.Nil(t, authData) + require.True(t, trace.IsAccessDenied(err), "expected access denied error but got %v", err) + require.ErrorContains(t, err, tt.wantErr) + }) + } + }) + + t.Run("deletes session when reuse is not allowed", func(t *testing.T) { + env := newBrowserMFATestEnv(t) + sessionID := "no-reuse-success" + sessionExt := &mfav1.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + AllowReuse: mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_NO, + } + err := env.auth.UpsertMFASessionData(ctx, newBrowserMFASessionData(sessionID, env.webauthnUser.GetName(), sessionExt)) + require.NoError(t, err) + + webResp := beginAndSolveBrowserMFAWebauthn(t, env, sessionExt) + + authData, err := env.auth.VerifyBrowserMFASession(ctx, env.webauthnUser.GetName(), sessionID, webResp, sessionExt) + require.NoError(t, err) + require.NotNil(t, authData) + + _, err = env.auth.GetMFASessionData(ctx, sessionID) + require.True(t, trace.IsNotFound(err), "expected session to be deleted but got %v", err) + }) + + t.Run("returns login data on success and session reuse maintained", func(t *testing.T) { + env := newBrowserMFATestEnv(t) + sessionID := "reuse-success" + sessionExt := &mfav1.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_USER_SESSION, + AllowReuse: mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_YES, + } + sd := newBrowserMFASessionData(sessionID, env.webauthnUser.GetName(), sessionExt) + err := env.auth.UpsertMFASessionData(ctx, sd) + require.NoError(t, err) + + webResp := beginAndSolveBrowserMFAWebauthn(t, env, sessionExt) + + authData, err := env.auth.VerifyBrowserMFASession(ctx, env.webauthnUser.GetName(), sessionID, webResp, sessionExt) + require.NoError(t, err) + require.Equal(t, &authz.MFAAuthData{ + Device: authData.Device, + User: env.webauthnUser.GetName(), + AllowReuse: mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_YES, + MFAViaBrowser: true, + }, authData) + require.Equal(t, env.webauthnDev.MFA.GetName(), authData.Device.GetName()) + + storedSession, err := env.auth.GetMFASessionData(ctx, sessionID) + require.NoError(t, err) + require.Equal(t, mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_YES, storedSession.ChallengeExtensions.AllowReuse) + }) +} diff --git a/lib/auth/clusterconfig/clusterconfigv1/service_test.go b/lib/auth/clusterconfig/clusterconfigv1/service_test.go index 82a11f2844510..0266bce13a6c1 100644 --- a/lib/auth/clusterconfig/clusterconfigv1/service_test.go +++ b/lib/auth/clusterconfig/clusterconfigv1/service_test.go @@ -1438,6 +1438,9 @@ func TestAuditEventsEmitted(t *testing.T) { require.Empty(t, cmp.Diff(&mfaEnabledEvent, evt)) p.Spec.SecondFactor = constants.SecondFactorOTP + // Set AllowCLIAuthViaBrowser back to nil as it has materialized as true + // from the previous authPref setup + p.Spec.AllowCLIAuthViaBrowser = nil _, err = env.UpsertAuthPreference(ctx, &clusterconfigpb.UpsertAuthPreferenceRequest{AuthPreference: p}) require.NoError(t, err) diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index 860187b75596b..15769a27385bd 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -19,6 +19,7 @@ package auth import ( + "cmp" "context" "crypto/tls" "errors" @@ -120,6 +121,7 @@ import ( "github.com/gravitational/teleport/lib/auth/loginrule/loginrulev1" "github.com/gravitational/teleport/lib/auth/machineid/machineidv1" "github.com/gravitational/teleport/lib/auth/machineid/workloadidentityv1" + "github.com/gravitational/teleport/lib/auth/mfa/mfav1" "github.com/gravitational/teleport/lib/auth/notifications/notificationsv1" "github.com/gravitational/teleport/lib/auth/presence/presencev1" "github.com/gravitational/teleport/lib/auth/recordingencryption/recordingencryptionv1" @@ -2626,7 +2628,25 @@ 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() chalExt := &mfav1pb.ChallengeExtensions{Scope: mfav1pb.ChallengeScope_CHALLENGE_SCOPE_USER_SESSION} - authChallenge, err := actx.authServer.mfaAuthChallenge(ctx, user, challengeReq.SSOClientRedirectURL, challengeReq.ProxyAddress, chalExt) + + // When completing a Browser MFA flow, only a WebAuthn challenge is needed, so + // clear the redirect URL so SSO and Browser MFA challenges are not generated. + clientRedirectURL := "" + if challengeReq.BrowserMfaRequestId == "" { + // Both SSO and Browser MFA redirect URLs point to the same callback server on tsh. + // So we can take either one and generate an auth challenge with it. + ssoURL := challengeReq.SSOClientRedirectURL + browserURL := challengeReq.BrowserMFATSHRedirectURL + clientRedirectURL = cmp.Or(ssoURL, browserURL) + if ssoURL != "" && browserURL != "" && ssoURL != browserURL { + slog.WarnContext(ctx, "SSO and Browser MFA redirect URLs do not match, this is a bug.", + // Strip out the sensitive query params before printing + "sso_url", strings.Split(ssoURL, "?")[0], + "browser_url", strings.Split(browserURL, "?")[0], + ) + } + } + authChallenge, err := actx.authServer.mfaAuthChallenge(ctx, user, clientRedirectURL, challengeReq.ProxyAddress, chalExt) if err != nil { return trace.Wrap(err) } @@ -6633,6 +6653,15 @@ func NewGRPCServer(cfg GRPCServerConfig) (*GRPCServer, error) { } decisionpb.RegisterDecisionServiceServer(server, decisionService) + mfaService, err := mfav1.NewService(mfav1.ServiceConfig{ + Authorizer: cfg.Authorizer, + AuthServer: cfg.AuthServer, + }) + if err != nil { + return nil, trace.Wrap(err) + } + mfav1pb.RegisterMFAServiceServer(server, mfaService) + healthCheckConfigSvc, err := healthcheckconfigv1.NewService(healthcheckconfigv1.ServiceConfig{ Authorizer: cfg.Authorizer, Backend: cfg.AuthServer.Services.HealthCheckConfig, diff --git a/lib/auth/internal/browsermfa/browser_mfa.go b/lib/auth/internal/browsermfa/browser_mfa.go new file mode 100644 index 0000000000000..ee6c052690e58 --- /dev/null +++ b/lib/auth/internal/browsermfa/browser_mfa.go @@ -0,0 +1,66 @@ +// Teleport +// Copyright (C) 2026 Gravitational, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package browsermfa + +import ( + "encoding/json" + "net/url" + + "github.com/gravitational/trace" + + "github.com/gravitational/teleport/lib/auth/authclient" + wantypes "github.com/gravitational/teleport/lib/auth/webauthntypes" + "github.com/gravitational/teleport/lib/secret" +) + +// Payload type required by (lib/client/sso/redirector.go). +type ssoRedirectorResponse = authclient.CLILoginResponse + +// EncryptBrowserMFAResponse encrypts a browser MFA webauthn response and returns the redirect URL with the encrypted response. +func EncryptBrowserMFAResponse(redirectURL *url.URL, webauthnResponse *wantypes.CredentialAssertionResponse) (string, error) { + // Extract secret out of the redirect URL. + secretKey := redirectURL.Query().Get("secret_key") + if secretKey == "" { + return "", trace.BadParameter("missing secret_key") + } + + // AES-GCM based symmetric cipher. + key, err := secret.ParseKey([]byte(secretKey)) + if err != nil { + return "", trace.Wrap(err, "parse secret key") + } + + // Build response payload. + consoleResponse := ssoRedirectorResponse{ + BrowserMFAWebauthnResponse: webauthnResponse, + } + out, err := json.Marshal(consoleResponse) + if err != nil { + return "", trace.Wrap(err, "marshaling response payload") + } + + // Base64 and encrypt the response payload. + ciphertext, err := key.Seal(out) + if err != nil { + return "", trace.Wrap(err, "seal response with secret key") + } + + // Place ciphertext into the redirect URL. + redirectURL.RawQuery = url.Values{"response": {string(ciphertext)}}.Encode() + + return redirectURL.String(), nil +} diff --git a/lib/auth/methods.go b/lib/auth/methods.go index df4815cce5ff3..b06d416d125ca 100644 --- a/lib/auth/methods.go +++ b/lib/auth/methods.go @@ -454,6 +454,25 @@ func (a *Server) authenticateUserInternal( return mfaData.Device, nil } authErr = authenticateWebauthnError + case req.BrowserMFA != nil: + authenticateFn = func() (*types.MFADevice, error) { + if req.Pass != nil { + if err = a.checkPasswordWOToken(ctx, user, req.Pass.Password); err != nil { + return nil, trace.Wrap(err) + } + } + mfaResponse := &proto.MFAAuthenticateResponse{ + Response: &proto.MFAAuthenticateResponse_Browser{ + Browser: req.BrowserMFA, + }, + } + mfaData, err := a.ValidateMFAAuthResponse(ctx, mfaResponse, user, &requiredExt) + if err != nil { + return nil, trace.Wrap(err) + } + return mfaData.Device, nil + } + authErr = authenticateWebauthnError case req.OTP != nil: authenticateFn = func() (*types.MFADevice, error) { // OTP cannot be validated by validateMFAAuthResponse because we need to @@ -760,7 +779,7 @@ func (a *Server) AuthenticateWebUser(ctx context.Context, req authclient.Authent // AuthenticateSSHUser authenticates an SSH user and returns SSH and TLS // certificates for the public key in req. -func (a *Server) AuthenticateSSHUser(ctx context.Context, req authclient.AuthenticateSSHRequest) (*authclient.SSHLoginResponse, error) { +func (a *Server) AuthenticateSSHUser(ctx context.Context, req authclient.AuthenticateSSHRequest) (*authclient.CLILoginResponse, error) { if err := req.CheckAndSetDefaults(); err != nil { return nil, trace.Wrap(err) } @@ -870,7 +889,7 @@ func (a *Server) AuthenticateSSHUser(ctx context.Context, req authclient.Authent a.logger.WarnContext(ctx, "Failed to calculate client options for local login", "username", user.GetName(), "error", err) } - return &authclient.SSHLoginResponse{ + return &authclient.CLILoginResponse{ Username: user.GetName(), Cert: certs.SSH, TLSCert: certs.TLS, diff --git a/lib/auth/mfa/mfav1/mocks_test.go b/lib/auth/mfa/mfav1/mocks_test.go new file mode 100644 index 0000000000000..766acff9183d2 --- /dev/null +++ b/lib/auth/mfa/mfav1/mocks_test.go @@ -0,0 +1,77 @@ +// Teleport +// Copyright (C) 2025 Gravitational, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package mfav1_test + +import ( + "context" + "sync" + + "github.com/gravitational/trace" + + "github.com/gravitational/teleport/api/types" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" + "github.com/gravitational/teleport/lib/auth/authtest" + "github.com/gravitational/teleport/lib/services" +) + +// mockAuthServer is a mock implementation of AuthServer for testing MFA challenges. +type mockAuthServer struct { + *authtest.Server + + // requestIDs stores valid request IDs. + requestIDs sync.Map +} + +// NewMockAuthServer creates a new instance of mockAuthServer. +func NewMockAuthServer(cfg authtest.ServerConfig, devices []*types.MFADevice) (*mockAuthServer, error) { + // The authtest.AuthServer implementation currently does not support SSO MFA devices like it does for TOTP and + // Webauthn. We work around this by wrapping the Identity service with our mock that returns the provided SSO MFA + // devices after merging with any registered devices during the test. Additionally, this mock AuthServer that wraps + // authtest.AuthServer overrides the SSO MFA challenge methods to provide mock implementations. Support for SSO MFA + // devices will be added in https://github.com/gravitational/teleport/issues/62271. + // TODO(cthach): Remove this workaround once authtest.AuthServer supports SSO MFA devices. + authServer, err := authtest.NewTestServer(cfg) + if err != nil { + return nil, trace.Wrap(err) + } + + // Wrap the Identity service to allow mocking MFA devices. + authServer.Auth().Identity = &mockAuthServerIdentity{Identity: authServer.Auth().Identity, devices: devices} + + return &mockAuthServer{Server: authServer}, nil +} + +// CompleteBrowserMFAChallenge mocks the completion of a browser MFA challenge. +func (m *mockAuthServer) CompleteBrowserMFAChallenge( + ctx context.Context, + requestID string, + webauthnResponse *webauthnpb.CredentialAssertionResponse, +) (string, error) { + _, ok := m.requestIDs.Load(requestID) + if !ok { + return "", trace.NotFound("invalid browser MFA challenge request ID %q", requestID) + } + + // Return a mock redirect URL for testing + return "http://127.0.0.1:62972/callback?response=mock-encrypted-response", nil +} + +type mockAuthServerIdentity struct { + services.Identity + + devices []*types.MFADevice +} diff --git a/lib/auth/mfa/mfav1/service.go b/lib/auth/mfa/mfav1/service.go new file mode 100644 index 0000000000000..453f709b16a6e --- /dev/null +++ b/lib/auth/mfa/mfav1/service.go @@ -0,0 +1,108 @@ +// Teleport +// Copyright (C) 2025 Gravitational, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package mfav1 + +import ( + "context" + "log/slog" + + "github.com/gravitational/trace" + + "github.com/gravitational/teleport" + mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" + "github.com/gravitational/teleport/lib/authz" +) + +// AuthServer defines the subset of lib/auth.Server methods used by the MFA service. +type AuthServer interface { + CompleteBrowserMFAChallenge( + ctx context.Context, + requestID string, + webauthnResponse *webauthnpb.CredentialAssertionResponse, + ) (string, error) +} + +// ServiceConfig holds creation parameters for [Service]. +type ServiceConfig struct { + Authorizer authz.Authorizer + AuthServer AuthServer +} + +// Service implements the teleport.decision.v1alpha1.DecisionService gRPC API. +type Service struct { + mfav1.UnimplementedMFAServiceServer + + logger *slog.Logger + authorizer authz.Authorizer + authServer AuthServer +} + +// NewService creates a new [Service] instance. +func NewService(cfg ServiceConfig) (*Service, error) { + switch { + case cfg.Authorizer == nil: + return nil, trace.BadParameter("param Authorizer is required for MFA service") + case cfg.AuthServer == nil: + return nil, trace.BadParameter("param AuthServer is required for MFA service") + } + + return &Service{ + logger: slog.With(teleport.ComponentKey, "mfa.service"), + authorizer: cfg.Authorizer, + authServer: cfg.AuthServer, + }, nil +} + +// CompleteBrowserMFAChallenge takes a MFA response from the browser and returns +// it via an encrypted response parameter in a callback URL for the browser to +// return to tsh. +func (s *Service) CompleteBrowserMFAChallenge(ctx context.Context, req *mfav1.CompleteBrowserMFAChallengeRequest) (*mfav1.CompleteBrowserMFAChallengeResponse, error) { + authCtx, err := s.authorizer.Authorize(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + if !authz.IsLocalOrRemoteUser(*authCtx) { + return nil, trace.AccessDenied("only local or remote users can complete a browser MFA challenge") + } + + if req.BrowserMfaResponse == nil { + return nil, trace.BadParameter("missing browser_mfa_response in request") + } + + if req.BrowserMfaResponse.RequestId == "" { + return nil, trace.BadParameter("missing request_id in browser_mfa_response") + } + + if req.BrowserMfaResponse.WebauthnResponse == nil { + return nil, trace.BadParameter("missing webauthn_response in browser_mfa_response") + } + + tshRedirectURL, err := s.authServer.CompleteBrowserMFAChallenge( + ctx, + req.BrowserMfaResponse.RequestId, + req.BrowserMfaResponse.WebauthnResponse, + ) + if err != nil { + return nil, trace.Wrap(err) + } + + return &mfav1.CompleteBrowserMFAChallengeResponse{ + TshRedirectUrl: tshRedirectURL, + }, nil +} diff --git a/lib/auth/mfa/mfav1/service_test.go b/lib/auth/mfa/mfav1/service_test.go new file mode 100644 index 0000000000000..bf39497df7ac0 --- /dev/null +++ b/lib/auth/mfa/mfav1/service_test.go @@ -0,0 +1,204 @@ +// Teleport +// Copyright (C) 2025 Gravitational, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package mfav1_test + +import ( + "testing" + + "github.com/gravitational/trace" + "github.com/stretchr/testify/require" + + mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" + "github.com/gravitational/teleport/api/types" + webauthnpb "github.com/gravitational/teleport/api/types/webauthn" + "github.com/gravitational/teleport/lib/auth/authtest" + mfav1impl "github.com/gravitational/teleport/lib/auth/mfa/mfav1" + "github.com/gravitational/teleport/lib/authz" + "github.com/gravitational/teleport/lib/events/eventstest" +) + +const ( + sourceCluster = "test-cluster" +) + +func TestCompleteBrowserMFAChallenge_Success(t *testing.T) { + t.Parallel() + + authServer, service, _, user := setupAuthServer(t, nil) + + requestID := "test-request-id" + authServer.requestIDs.Store(requestID, struct{}{}) + + ctx := authz.ContextWithUser(t.Context(), authtest.TestUserWithRoles(user.GetName(), user.GetRoles()).I) + + resp, err := service.CompleteBrowserMFAChallenge( + ctx, + &mfav1.CompleteBrowserMFAChallengeRequest{ + BrowserMfaResponse: &mfav1.BrowserMFAResponse{ + RequestId: requestID, + WebauthnResponse: &webauthnpb.CredentialAssertionResponse{ + Type: "public-key", + }, + }, + }, + ) + require.NoError(t, err) + require.NotNil(t, resp) + require.NotEmpty(t, resp.TshRedirectUrl) + require.Contains(t, resp.TshRedirectUrl, "127.0.0.1") +} + +func TestCompleteBrowserMFAChallenge_NonUserDenied(t *testing.T) { + t.Parallel() + + _, service, _, _ := setupAuthServer(t, nil) + + // Use a context with a non-user role (proxy). + ctx := authz.ContextWithUser(t.Context(), authtest.TestBuiltin(types.RoleProxy).I) + + resp, err := service.CompleteBrowserMFAChallenge( + ctx, + &mfav1.CompleteBrowserMFAChallengeRequest{ + BrowserMfaResponse: &mfav1.BrowserMFAResponse{ + RequestId: "test-request-id", + WebauthnResponse: &webauthnpb.CredentialAssertionResponse{ + Type: "public-key", + }, + }, + }, + ) + require.Error(t, err) + require.True(t, trace.IsAccessDenied(err)) + require.ErrorContains(t, err, "only local or remote users can complete a browser MFA challenge") + require.Nil(t, resp) +} + +func TestCompleteBrowserMFAChallenge_InvalidRequest(t *testing.T) { + t.Parallel() + + authServer, service, _, user := setupAuthServer(t, nil) + + ctx := authz.ContextWithUser(t.Context(), authtest.TestUserWithRoles(user.GetName(), user.GetRoles()).I) + + for _, testCase := range []struct { + name string + req *mfav1.CompleteBrowserMFAChallengeRequest + expectedError string + }{ + { + name: "missing BrowserMfaResponse", + req: &mfav1.CompleteBrowserMFAChallengeRequest{ + BrowserMfaResponse: nil, + }, + expectedError: "missing browser_mfa_response in request", + }, + { + name: "missing RequestId", + req: &mfav1.CompleteBrowserMFAChallengeRequest{ + BrowserMfaResponse: &mfav1.BrowserMFAResponse{ + RequestId: "", + WebauthnResponse: &webauthnpb.CredentialAssertionResponse{ + Type: "public-key", + }, + }, + }, + expectedError: "missing request_id in browser_mfa_response", + }, + { + name: "missing WebauthnResponse", + req: &mfav1.CompleteBrowserMFAChallengeRequest{ + BrowserMfaResponse: &mfav1.BrowserMFAResponse{ + RequestId: "test-request-id", + WebauthnResponse: nil, + }, + }, + expectedError: "missing webauthn_response in browser_mfa_response", + }, + { + name: "non-existent RequestId", + req: func() *mfav1.CompleteBrowserMFAChallengeRequest { + return &mfav1.CompleteBrowserMFAChallengeRequest{ + BrowserMfaResponse: &mfav1.BrowserMFAResponse{ + RequestId: "non-existent-request-id", + WebauthnResponse: &webauthnpb.CredentialAssertionResponse{ + Type: "public-key", + }, + }, + } + }(), + expectedError: "invalid browser MFA challenge request ID", + }, + } { + t.Run(testCase.name, func(t *testing.T) { + // For the "invalid RequestId" test, ensure we have at least one valid ID stored. + if testCase.name == "invalid RequestId" { + authServer.requestIDs.Store("valid-id", struct{}{}) + } + + resp, err := service.CompleteBrowserMFAChallenge(ctx, testCase.req) + require.Error(t, err) + require.ErrorContains(t, err, testCase.expectedError) + require.Nil(t, resp) + }) + } +} + +func setupAuthServer(t *testing.T, devices []*types.MFADevice) (*mockAuthServer, *mfav1impl.Service, *eventstest.MockRecorderEmitter, types.User) { + t.Helper() + + emitter := &eventstest.MockRecorderEmitter{} + + authServer, err := NewMockAuthServer(authtest.ServerConfig{ + Auth: authtest.AuthServerConfig{ + AuditLog: &eventstest.MockAuditLog{Emitter: emitter}, + ClusterName: sourceCluster, + Dir: t.TempDir(), + AuthPreferenceSpec: &types.AuthPreferenceSpecV2{ + SecondFactors: []types.SecondFactorType{ + types.SecondFactorType_SECOND_FACTOR_TYPE_WEBAUTHN, + types.SecondFactorType_SECOND_FACTOR_TYPE_SSO, + }, + Webauthn: &types.Webauthn{ + RPID: "localhost", + }, + }, + }, + }, + devices, + ) + require.NoError(t, err) + + t.Cleanup(func() { + if err := authServer.Close(); err != nil { + t.Logf("Failed to close auth server: %v", err) + } + }) + + role, err := authtest.CreateRole(t.Context(), authServer.Auth(), "test-role", types.RoleSpecV6{}) + require.NoError(t, err) + + user, err := authtest.CreateUser(t.Context(), authServer.Auth(), "test-user", role) + require.NoError(t, err) + + service, err := mfav1impl.NewService(mfav1impl.ServiceConfig{ + Authorizer: authServer.AuthServer.Authorizer, + AuthServer: authServer, + }) + require.NoError(t, err) + + return authServer, service, emitter, user +} diff --git a/lib/auth/mfatypes/browser.go b/lib/auth/mfatypes/browser.go new file mode 100644 index 0000000000000..264fed5ac6e9c --- /dev/null +++ b/lib/auth/mfatypes/browser.go @@ -0,0 +1,29 @@ +// Teleport +// Copyright (C) 2026 Gravitational, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package mfatypes + +import ( + mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" +) + +// BeginBrowserMFAChallengeParams contains parameters for lib/auth/Server.BeginBrowserMFAChallenge. This struct is in this +// package in order to avoid a circular dependency between lib/auth and lib/auth/mfa/mfav1. +type BeginBrowserMFAChallengeParams struct { + User string + BrowserMFATSHRedirectURL string + Ext *mfav1.ChallengeExtensions +} diff --git a/lib/auth/mfatypes/proto.go b/lib/auth/mfatypes/proto.go new file mode 100644 index 0000000000000..ff7c5f389b03c --- /dev/null +++ b/lib/auth/mfatypes/proto.go @@ -0,0 +1,32 @@ +// Teleport +// Copyright (C) 2026 Gravitational, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package mfatypes + +import mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" + +// ChallengeExtensionsToProto converts a ChallengeExtensions to its protobuf representation. +func ChallengeExtensionsToProto(chalExts *ChallengeExtensions) *mfav1.ChallengeExtensions { + if chalExts == nil { + return nil + } + + return &mfav1.ChallengeExtensions{ + Scope: chalExts.Scope, + AllowReuse: chalExts.AllowReuse, + UserVerificationRequirement: chalExts.UserVerificationRequirement, + } +} diff --git a/lib/auth/sso_mfa.go b/lib/auth/sso_mfa.go index 7b343442d27f0..57483000cf7f5 100644 --- a/lib/auth/sso_mfa.go +++ b/lib/auth/sso_mfa.go @@ -73,7 +73,13 @@ func (a *Server) beginSSOMFAChallenge(ctx context.Context, user string, sso *typ return nil, trace.BadParameter("unsupported sso connector type %v", sso.ConnectorType) } - if err := a.upsertSSOMFASession(ctx, user, chal.RequestId, sso.ConnectorId, sso.ConnectorType, ext); err != nil { + if err := a.upsertMFASession(ctx, upsertMFASessionParams{ + user: user, + sessionID: chal.RequestId, + connectorID: sso.ConnectorId, + connectorType: sso.ConnectorType, + ext: ext, + }); err != nil { return nil, trace.Wrap(err) } @@ -89,7 +95,7 @@ func (a *Server) verifySSOMFASession(ctx context.Context, username, sessionID, t } const notFoundErrMsg = "mfa sso session data not found" - mfaSess, err := a.GetSSOMFASessionData(ctx, sessionID) + mfaSess, err := a.GetMFASessionData(ctx, sessionID) if trace.IsNotFound(err) { return nil, trace.AccessDenied("%s", notFoundErrMsg) } else if err != nil { @@ -101,6 +107,17 @@ func (a *Server) verifySSOMFASession(ctx context.Context, username, sessionID, t return nil, trace.AccessDenied("%s", notFoundErrMsg) } + // Verify this is an SSO MFA session and not a Browser MFA session. + if mfaSess.TSHRedirectURL != "" || mfaSess.ConnectorType == constants.BrowserMFA { + a.logger.WarnContext(ctx, + "The SSO MFA flow was used to access a Browser MFA session.", + "request_id", mfaSess.RequestID, + "connector_type", mfaSess.ConnectorType, + "username", username, + ) + return nil, trace.NotFound("%s", notFoundErrMsg) + } + // Check if the MFA session matches the user's SSO MFA settings. devs, err := a.Services.GetMFADevices(ctx, username, false /* withSecrets */) if err != nil { @@ -130,7 +147,7 @@ func (a *Server) verifySSOMFASession(ctx context.Context, username, sessionID, t } if mfaSess.ChallengeExtensions.AllowReuse != mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_YES { - if err := a.DeleteSSOMFASessionData(ctx, sessionID); err != nil { + if err := a.DeleteMFASessionData(ctx, sessionID); err != nil { return nil, trace.Wrap(err) } } @@ -142,42 +159,64 @@ func (a *Server) verifySSOMFASession(ctx context.Context, username, sessionID, t }, nil } -// upsertSSOMFASession upserts a new unverified SSO MFA session for the given username, -// sessionID, connector details, and challenge extensions. -func (a *Server) upsertSSOMFASession(ctx context.Context, user string, sessionID string, connectorID string, connectorType string, ext *mfav1.ChallengeExtensions) error { - err := a.UpsertSSOMFASessionData(ctx, &services.SSOMFASessionData{ - Username: user, - RequestID: sessionID, - ConnectorID: connectorID, - ConnectorType: connectorType, +// upsertMFASessionParams are the parameters for upsertMFASession. +type upsertMFASessionParams struct { + user string + sessionID string + connectorID string + connectorType string + tshRedirectURL string + ext *mfav1.ChallengeExtensions +} + +// upsertMFASession upserts a new unverified MFA session for the given username, +// sessionID, connector details, and challenge extensions. This is used by both +// SSO MFA and Browser MFA. +func (a *Server) upsertMFASession(ctx context.Context, params upsertMFASessionParams) error { + data := &services.MFASessionData{ + Username: params.user, + RequestID: params.sessionID, + ConnectorID: params.connectorID, + ConnectorType: params.connectorType, + TSHRedirectURL: params.tshRedirectURL, ChallengeExtensions: &mfatypes.ChallengeExtensions{ - Scope: ext.Scope, - AllowReuse: ext.AllowReuse, + Scope: params.ext.Scope, + AllowReuse: params.ext.AllowReuse, }, - }) - return trace.Wrap(err) + } + + return trace.Wrap(a.UpsertMFASessionData(ctx, data)) } -// UpsertSSOMFASessionWithToken upserts the given SSO MFA session with a random mfa token. -func (a *Server) UpsertSSOMFASessionWithToken(ctx context.Context, sd *services.SSOMFASessionData) (token string, err error) { +// UpsertMFASessionWithToken upserts the given SSO MFA session with a random mfa token. +func (a *Server) UpsertMFASessionWithToken(ctx context.Context, sd *services.MFASessionData) (token string, err error) { sd.Token, err = utils.CryptoRandomHex(defaults.TokenLenBytes) if err != nil { return "", trace.Wrap(err) } - if err := a.UpsertSSOMFASessionData(ctx, sd); err != nil { + if err := a.UpsertMFASessionData(ctx, sd); err != nil { return "", trace.Wrap(err) } return sd.Token, nil } -// GetSSOMFASession returns the SSO MFA session for the given username and sessionID. -func (a *Server) GetSSOMFASession(ctx context.Context, sessionID string) (*services.SSOMFASessionData, error) { - sd, err := a.GetSSOMFASessionData(ctx, sessionID) +// GetMFASession returns the MFA session for the given username and sessionID. +func (a *Server) GetMFASession(ctx context.Context, sessionID string) (*services.MFASessionData, error) { + sd, err := a.GetMFASessionData(ctx, sessionID) if err != nil { return nil, trace.Wrap(err) } return sd, nil } + +// TODO(danielashare): Remove these wrapper functions once `e` points to the renamed versions +func (a *Server) UpsertSSOMFASessionWithToken(ctx context.Context, sd *services.MFASessionData) (token string, err error) { + return a.UpsertMFASessionWithToken(ctx, sd) +} + +func (a *Server) GetSSOMFASession(ctx context.Context, sessionID string) (*services.MFASessionData, error) { + return a.GetMFASession(ctx, sessionID) +} diff --git a/lib/auth/sso_mfa_test.go b/lib/auth/sso_mfa_test.go index 6822b706ea5a8..7d1fcba359026 100644 --- a/lib/auth/sso_mfa_test.go +++ b/lib/auth/sso_mfa_test.go @@ -274,9 +274,9 @@ func TestSSOMFAChallenge_Creation(t *testing.T) { assert.True(t, req.CheckUser) // We should find non validated SSO MFA session data tied to the challenge by auth request ID. - sd, err := a.GetSSOMFASessionData(ctx, chal.SSOChallenge.RequestId) + sd, err := a.GetMFASessionData(ctx, chal.SSOChallenge.RequestId) require.NoError(t, err) - assert.Equal(t, &services.SSOMFASessionData{ + assert.Equal(t, &services.MFASessionData{ RequestID: chal.SSOChallenge.RequestId, Username: samlUser.GetName(), ConnectorID: samlConnector.GetName(), @@ -313,9 +313,9 @@ func TestSSOMFAChallenge_Creation(t *testing.T) { assert.True(t, req.CheckUser) // We should find non validated SSO MFA session data tied to the challenge by auth request ID. - sd, err := a.GetSSOMFASessionData(ctx, chal.SSOChallenge.RequestId) + sd, err := a.GetMFASessionData(ctx, chal.SSOChallenge.RequestId) require.NoError(t, err) - assert.Equal(t, &services.SSOMFASessionData{ + assert.Equal(t, &services.MFASessionData{ RequestID: chal.SSOChallenge.RequestId, Username: oidcUser.GetName(), ConnectorID: oidcConnector.GetName(), @@ -341,7 +341,7 @@ func TestSSOMFAChallenge_Creation(t *testing.T) { require.NotNil(t, chal.SSOChallenge, "expected SSO challenge to be returned") // We should find non validated SSO MFA session data tied to the challenge by auth request ID. - sd, err := a.GetSSOMFASessionData(ctx, chal.SSOChallenge.RequestId) + sd, err := a.GetMFASessionData(ctx, chal.SSOChallenge.RequestId) require.NoError(t, err) assert.Equal(t, mfav1.ChallengeAllowReuse_CHALLENGE_ALLOW_REUSE_YES, sd.ChallengeExtensions.AllowReuse) }, @@ -455,7 +455,7 @@ func TestSSOMFAChallenge_Validation(t *testing.T) { for _, tt := range []struct { name string username string - sd *services.SSOMFASessionData + sd *services.MFASessionData ssoResponse *proto.SSOResponse requiredExtensions *mfav1.ChallengeExtensions assertValidation func(t *testing.T, mad *authz.MFAAuthData, err error) @@ -485,7 +485,7 @@ func TestSSOMFAChallenge_Validation(t *testing.T) { { name: "NOK mismatch user", username: samlUser.GetName(), - sd: &services.SSOMFASessionData{ + sd: &services.MFASessionData{ RequestID: "request1", Username: "wrong-user", ConnectorID: samlConnector.GetName(), @@ -509,7 +509,7 @@ func TestSSOMFAChallenge_Validation(t *testing.T) { { name: "NOK mismatch token", username: samlUser.GetName(), - sd: &services.SSOMFASessionData{ + sd: &services.MFASessionData{ RequestID: "request2", Username: samlUser.GetName(), ConnectorID: samlConnector.GetName(), @@ -533,7 +533,7 @@ func TestSSOMFAChallenge_Validation(t *testing.T) { { name: "NOK non validated session data", username: samlUser.GetName(), - sd: &services.SSOMFASessionData{ + sd: &services.MFASessionData{ RequestID: "request2", Username: samlUser.GetName(), ConnectorID: samlConnector.GetName(), @@ -556,7 +556,7 @@ func TestSSOMFAChallenge_Validation(t *testing.T) { { name: "NOK mismatch scope", username: samlUser.GetName(), - sd: &services.SSOMFASessionData{ + sd: &services.MFASessionData{ RequestID: "request3", Username: samlUser.GetName(), ConnectorID: samlConnector.GetName(), @@ -580,7 +580,7 @@ func TestSSOMFAChallenge_Validation(t *testing.T) { { name: "NOK reuse not allowed", username: samlUser.GetName(), - sd: &services.SSOMFASessionData{ + sd: &services.MFASessionData{ RequestID: "request4", Username: samlUser.GetName(), ConnectorID: samlConnector.GetName(), @@ -606,7 +606,7 @@ func TestSSOMFAChallenge_Validation(t *testing.T) { { name: "NOK sso mfa not enabled by auth connector", username: noMFASAMLUser.GetName(), - sd: &services.SSOMFASessionData{ + sd: &services.MFASessionData{ RequestID: "request5", Username: noMFASAMLUser.GetName(), ConnectorID: noMFASAMLConnector.GetName(), @@ -630,7 +630,7 @@ func TestSSOMFAChallenge_Validation(t *testing.T) { { name: "NOK non sso user", username: standardUser.GetName(), - sd: &services.SSOMFASessionData{ + sd: &services.MFASessionData{ RequestID: "request6", Username: standardUser.GetName(), ConnectorID: samlConnector.GetName(), @@ -654,7 +654,7 @@ func TestSSOMFAChallenge_Validation(t *testing.T) { { name: "OK sso user", username: samlUser.GetName(), - sd: &services.SSOMFASessionData{ + sd: &services.MFASessionData{ RequestID: "request7", Username: samlUser.GetName(), ConnectorID: samlConnector.GetName(), @@ -684,7 +684,7 @@ func TestSSOMFAChallenge_Validation(t *testing.T) { { name: "OK sso user allow reuse", username: samlUser.GetName(), - sd: &services.SSOMFASessionData{ + sd: &services.MFASessionData{ RequestID: "request8", Username: samlUser.GetName(), ConnectorID: samlConnector.GetName(), @@ -715,7 +715,7 @@ func TestSSOMFAChallenge_Validation(t *testing.T) { } { t.Run(tt.name, func(t *testing.T) { if tt.sd != nil { - err := a.UpsertSSOMFASessionData(ctx, tt.sd) + err := a.UpsertMFASessionData(ctx, tt.sd) require.NoError(t, err) } diff --git a/lib/authz/permissions.go b/lib/authz/permissions.go index 4f7dece5e540d..9f247729bba5c 100644 --- a/lib/authz/permissions.go +++ b/lib/authz/permissions.go @@ -227,6 +227,8 @@ type MFAAuthData struct { // AllowReuse determines whether the MFA challenge response used to authenticate // can be reused. AllowReuse MFAAuthData may be denied for specific actions. AllowReuse mfav1.ChallengeAllowReuse + // MFAViaBrowser indicates that this MFA device was used as part of the Browser MFA flow. + MFAViaBrowser bool } // authorizer creates new local authorizer diff --git a/lib/client/api.go b/lib/client/api.go index acdcb7dd479f0..803dca29e41d2 100644 --- a/lib/client/api.go +++ b/lib/client/api.go @@ -371,6 +371,9 @@ type Config struct { // PreferSSO prefers SSO in favor of other MFA methods. PreferSSO bool + // PreferBrowser prefers browser-based WebAuthn MFA in favor of other MFA methods. + PreferBrowser bool + // CheckVersions will check that client version is compatible // with auth server version when connecting. CheckVersions bool @@ -501,8 +504,8 @@ type Config struct { // MFAPromptConstructor is a custom MFA prompt constructor to use when prompting for MFA. MFAPromptConstructor func(cfg *libmfa.PromptConfig) mfa.Prompt - // SSOMFACeremonyConstructor is a custom SSO MFA ceremony constructor. - SSOMFACeremonyConstructor func(rd *sso.Redirector) mfa.SSOMFACeremony + // MFACeremonyConstructor is a custom SSO/Browser MFA ceremony constructor. + MFACeremonyConstructor func(rd *sso.Redirector) mfa.CallbackCeremony // DisableSSHResumption disables transparent SSH connection resumption. DisableSSHResumption bool @@ -3239,7 +3242,7 @@ func (tc *TeleportClient) ConnectToCluster(ctx context.Context) (_ *ClusterClien return nil, trace.NewAggregate(err, pclt.Close()) } authClientCfg.MFAPromptConstructor = tc.NewMFAPrompt - authClientCfg.SSOMFACeremonyConstructor = tc.NewSSOMFACeremony + authClientCfg.MFACeremonyConstructor = tc.NewRedirectorMFACeremony authClient, err := authclient.NewClient(authClientCfg) if err != nil { @@ -3772,7 +3775,7 @@ func (tc *TeleportClient) getSSHLoginFunc(pr *webclient.PingResponse) (SSHLoginF return nil, trace.BadParameter("headless disallowed by cluster settings") } if tc.AllowHeadless { - return func(ctx context.Context, keyRing *KeyRing) (*authclient.SSHLoginResponse, error) { + return func(ctx context.Context, keyRing *KeyRing) (*authclient.CLILoginResponse, error) { return tc.headlessLogin(ctx, keyRing) }, nil } @@ -3788,7 +3791,7 @@ func (tc *TeleportClient) getSSHLoginFunc(pr *webclient.PingResponse) (SSHLoginF return tc.pwdlessLogin, nil } - return func(ctx context.Context, keyRing *KeyRing) (*authclient.SSHLoginResponse, error) { + return func(ctx context.Context, keyRing *KeyRing) (*authclient.CLILoginResponse, error) { return tc.localLogin(ctx, keyRing, pr.Auth.SecondFactor) }, nil default: @@ -3966,7 +3969,7 @@ func (tc *TeleportClient) canDefaultToPasswordless(pr *webclient.PingResponse) b } // SSHLoginFunc is a function which carries out authn with an auth server and returns an auth response. -type SSHLoginFunc func(context.Context, *KeyRing) (*authclient.SSHLoginResponse, error) +type SSHLoginFunc func(context.Context, *KeyRing) (*authclient.CLILoginResponse, error) // SSHLogin uses the given login function to login the client. This function handles // private key logic and parsing the resulting auth response. @@ -3978,7 +3981,7 @@ func (tc *TeleportClient) SSHLogin(ctx context.Context, sshLoginFunc SSHLoginFun ) defer span.End() - var response *authclient.SSHLoginResponse + var response *authclient.CLILoginResponse keyRing, err := tc.loginWithHardwareKeyRetry(ctx, func(ctx context.Context, keyRing *KeyRing) error { var err error response, err = sshLoginFunc(ctx, keyRing) @@ -4171,7 +4174,7 @@ func (tc *TeleportClient) NewSSHLogin(keyRing *KeyRing) (SSHLogin, error) { }, nil } -func (tc *TeleportClient) pwdlessLogin(ctx context.Context, keyRing *KeyRing) (*authclient.SSHLoginResponse, error) { +func (tc *TeleportClient) pwdlessLogin(ctx context.Context, keyRing *KeyRing) (*authclient.CLILoginResponse, error) { ctx, span := tc.Tracer.Start( ctx, "teleportClient/pwdlessLogin", @@ -4203,7 +4206,7 @@ func (tc *TeleportClient) pwdlessLogin(ctx context.Context, keyRing *KeyRing) (* } // localLogin asks for a password and performs an MFA ceremony. -func (tc *TeleportClient) localLogin(ctx context.Context, keyRing *KeyRing, _ constants.SecondFactorType) (*authclient.SSHLoginResponse, error) { +func (tc *TeleportClient) localLogin(ctx context.Context, keyRing *KeyRing, _ constants.SecondFactorType) (*authclient.CLILoginResponse, error) { ctx, span := tc.Tracer.Start( ctx, "teleportClient/localLogin", @@ -4222,15 +4225,16 @@ func (tc *TeleportClient) localLogin(ctx context.Context, keyRing *KeyRing, _ co } response, err := SSHAgentMFALogin(ctx, SSHLoginMFA{ - SSHLogin: sshLogin, - User: tc.Username, - Password: password, - MFAPromptConstructor: tc.NewMFAPrompt, + SSHLogin: sshLogin, + User: tc.Username, + Password: password, + MFAPromptConstructor: tc.NewMFAPrompt, + MFACeremonyConstructor: tc.NewRedirectorMFACeremony, }) return response, trace.Wrap(err) } -func (tc *TeleportClient) headlessLogin(ctx context.Context, keyRing *KeyRing) (*authclient.SSHLoginResponse, error) { +func (tc *TeleportClient) headlessLogin(ctx context.Context, keyRing *KeyRing) (*authclient.CLILoginResponse, error) { if tc.MockHeadlessLogin != nil { return tc.MockHeadlessLogin(ctx, keyRing) } @@ -4271,13 +4275,13 @@ func (tc *TeleportClient) headlessLogin(ctx context.Context, keyRing *KeyRing) ( } // SSOLoginFunc is a function used in tests to mock SSO logins. -type SSOLoginFunc func(ctx context.Context, connectorID string, keyRing *KeyRing, protocol string) (*authclient.SSHLoginResponse, error) +type SSOLoginFunc func(ctx context.Context, connectorID string, keyRing *KeyRing, protocol string) (*authclient.CLILoginResponse, error) // SSOLoginFn returns a function that will carry out SSO login. A browser window will be opened // for the user to authenticate through SSO. On completion they will be redirected to a success // page and the resulting login session will be captured and returned. func (tc *TeleportClient) SSOLoginFn(connectorID, connectorName, connectorType string) SSHLoginFunc { - return func(ctx context.Context, keyRing *KeyRing) (*authclient.SSHLoginResponse, error) { + return func(ctx context.Context, keyRing *KeyRing) (*authclient.CLILoginResponse, error) { if tc.MockSSOLogin != nil { // sso login response is being mocked for testing purposes return tc.MockSSOLogin(ctx, connectorID, keyRing, connectorType) @@ -5383,10 +5387,10 @@ func (tc *TeleportClient) NewKubernetesServiceClient(ctx context.Context, cluste Credentials: []client.Credentials{ client.LoadTLS(tlsConfig), }, - ALPNConnUpgradeRequired: tc.TLSRoutingConnUpgradeRequired, - InsecureAddressDiscovery: tc.InsecureSkipVerify, - MFAPromptConstructor: tc.NewMFAPrompt, - SSOMFACeremonyConstructor: tc.NewSSOMFACeremony, + ALPNConnUpgradeRequired: tc.TLSRoutingConnUpgradeRequired, + InsecureAddressDiscovery: tc.InsecureSkipVerify, + MFAPromptConstructor: tc.NewMFAPrompt, + MFACeremonyConstructor: tc.NewRedirectorMFACeremony, }) if err != nil { return nil, trace.Wrap(err) diff --git a/lib/client/api_login_test.go b/lib/client/api_login_test.go index 14601b3ed0561..de8bd3ec3b77b 100644 --- a/lib/client/api_login_test.go +++ b/lib/client/api_login_test.go @@ -151,6 +151,7 @@ func TestTeleportClient_Login_local(t *testing.T) { authConnector string allowStdinHijack bool preferOTP bool + preferBrowser bool hasTouchIDCredentials bool authenticatorAttachment wancli.AuthenticatorAttachment scope string @@ -316,6 +317,7 @@ func TestTeleportClient_Login_local(t *testing.T) { tc.AllowStdinHijack = test.allowStdinHijack tc.AuthConnector = test.authConnector tc.PreferOTP = test.preferOTP + tc.PreferBrowser = test.preferBrowser tc.AuthenticatorAttachment = test.authenticatorAttachment inputReader := test.makeInputReader(password, otpKey, clock) tc.StdinFunc = func() prompt.StdinReader { return inputReader } @@ -336,6 +338,16 @@ func TestTeleportClient_Login_local(t *testing.T) { ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() + // Only enable BrowserAuthentication for tests that explicitly request it + if test.preferBrowser != false { + authServer := sa.Auth.GetAuthServer() + authPref, err := authServer.GetAuthPreference(ctx) + require.NoError(t, err) + authPref.SetAllowCLIAuthViaBrowser(true) + _, err = authServer.UpsertAuthPreference(ctx, authPref) + require.NoError(t, err) + } + // Test. clock.Advance(30 * time.Second) keyRing, err := tc.Login(ctx) @@ -377,6 +389,7 @@ func TestTeleportClient_DeviceLogin(t *testing.T) { authPref.SetSecondFactor(constants.SecondFactorOff) authPref.SetAllowPasswordless(false) authPref.SetAllowHeadless(false) + authPref.SetAllowCLIAuthViaBrowser(false) _, err = authServer.UpsertAuthPreference(ctx, authPref) require.NoError(t, err, "UpsertAuthPreference failed") @@ -597,6 +610,8 @@ func newStandaloneTeleport(t *testing.T, clock clockwork.Clock) *standaloneBundl Webauthn: &types.Webauthn{ RPID: "localhost", }, + // Disable by default and enable for tests that require it + AllowCLIAuthViaBrowser: types.NewBoolOption(false), SignatureAlgorithmSuite: types.SignatureAlgorithmSuite_SIGNATURE_ALGORITHM_SUITE_BALANCED_V1, }) require.NoError(t, err) diff --git a/lib/client/mfa.go b/lib/client/mfa.go index 9ee70b4d8bcfb..c42263497e96c 100644 --- a/lib/client/mfa.go +++ b/lib/client/mfa.go @@ -34,7 +34,7 @@ func (tc *TeleportClient) NewMFACeremony() *mfa.Ceremony { return &mfa.Ceremony{ CreateAuthenticateChallenge: tc.createAuthenticateChallenge, PromptConstructor: tc.NewMFAPrompt, - SSOMFACeremonyConstructor: tc.NewSSOMFACeremony, + MFACeremonyConstructor: tc.NewRedirectorMFACeremony, } } @@ -64,6 +64,7 @@ func (tc *TeleportClient) NewMFAPrompt(opts ...mfa.PromptOpt) mfa.Prompt { Writer: tc.Stderr, PreferOTP: tc.PreferOTP, PreferSSO: tc.PreferSSO, + PreferBrowser: tc.PreferBrowser, AllowStdinHijack: tc.AllowStdinHijack, StdinFunc: tc.StdinFunc, }) @@ -86,8 +87,8 @@ func (tc *TeleportClient) newPromptConfig(opts ...mfa.PromptOpt) *libmfa.PromptC return cfg } -// NewSSOMFACeremony creates a new SSO MFA ceremony. -func (tc *TeleportClient) NewSSOMFACeremony(ctx context.Context) (mfa.SSOMFACeremony, error) { +// NewRedirectorMFACeremony creates a new redirector for SSO or Browser MFA ceremony. +func (tc *TeleportClient) NewRedirectorMFACeremony(ctx context.Context) (mfa.CallbackCeremony, error) { rdConfig, err := tc.ssoRedirectorConfig(ctx, "" /*connectorDisplayName*/) if err != nil { return nil, trace.Wrap(err) @@ -98,8 +99,8 @@ func (tc *TeleportClient) NewSSOMFACeremony(ctx context.Context) (mfa.SSOMFACere return nil, trace.Wrap(err, "failed to create a redirector for SSO MFA") } - if tc.SSOMFACeremonyConstructor != nil { - return tc.SSOMFACeremonyConstructor(rd), nil + if tc.MFACeremonyConstructor != nil { + return tc.MFACeremonyConstructor(rd), nil } return sso.NewCLIMFACeremony(rd), nil diff --git a/lib/client/mfa/cli.go b/lib/client/mfa/cli.go index 545ff76fb8cba..662aa35e58141 100644 --- a/lib/client/mfa/cli.go +++ b/lib/client/mfa/cli.go @@ -19,6 +19,7 @@ package mfa import ( + "cmp" "context" "fmt" "io" @@ -46,6 +47,8 @@ const ( cliMFATypeWebauthn = "WEBAUTHN" // cliMFATypeSSO is the CLI display name for SSO. cliMFATypeSSO = "SSO" + // cliMFATypeBrowserMFA is the CLI display name for Browser MFA. + cliMFATypeBrowserMFA = "BROWSER" ) // CLIPromptConfig contains CLI prompt config options. @@ -65,9 +68,14 @@ type CLIPromptConfig struct { // PreferSSO favors SSO challenges, if applicable. // Takes precedence over AuthenticatorAttachment settings. PreferSSO bool + // PreferBrowser favors browser-based WebAuthn challenges, if applicable. + // Takes precedence over AuthenticatorAttachment settings. + PreferBrowser bool // StdinFunc allows tests to override prompt.Stdin(). // If nil prompt.Stdin() is used. StdinFunc func() prompt.StdinReader + // RuntimeOS overrides runtime.GOOS. Intended for tests only. + RuntimeOS string } // CLIPrompt is the default CLI mfa prompt implementation. @@ -100,124 +108,265 @@ func (c *CLIPrompt) writer() io.Writer { return c.cfg.Writer } +func (c *CLIPrompt) getOS() string { + return cmp.Or(c.cfg.RuntimeOS, runtime.GOOS) +} + +// mfaPromptState represents which MFA methods are available to prompt. +type mfaPromptState struct { + promptWebauthn bool + promptSSO bool + promptOTP bool + promptBrowser bool +} + +// filterMFAMethods determines which MFA method(s) to prompt for based on available methods, +// user preferences, and configuration. It prints a message to the user if multiple methods +// are available and returns the filtered state and list of available methods. +func (c *CLIPrompt) filterMFAMethods(state mfaPromptState, isPerSessionMFA bool, availableMethods []string) (mfaPromptState, bool) { + var chosenMethods []string + var userSpecifiedMethod bool + + // Prefer whatever method is requested by the client. + switch { + case c.cfg.PreferBrowser && state.promptBrowser: + chosenMethods = []string{cliMFATypeBrowserMFA} + state.promptWebauthn, state.promptOTP, state.promptSSO = false, false, false + userSpecifiedMethod = true + case c.cfg.PreferSSO && state.promptSSO: + chosenMethods = []string{cliMFATypeSSO} + state.promptWebauthn, state.promptOTP, state.promptBrowser = false, false, false + userSpecifiedMethod = true + case c.cfg.PreferOTP && state.promptOTP: + chosenMethods = []string{cliMFATypeOTP} + state.promptWebauthn, state.promptSSO, state.promptBrowser = false, false, false + userSpecifiedMethod = true + case c.cfg.AuthenticatorAttachment != wancli.AttachmentAuto: + chosenMethods = []string{cliMFATypeWebauthn} + state.promptSSO, state.promptOTP, state.promptBrowser = false, false, false + userSpecifiedMethod = true + } + + // Use stronger auth methods if hijack is not allowed. + if !c.cfg.AllowStdinHijack && state.promptWebauthn { + state.promptOTP = false + } + + // If no user preference was specified, set initial MFA preference + if !userSpecifiedMethod { + // We should never prompt for OTP when per-session MFA is enabled. As long as other MFA methods are available, + // we can completely ignore OTP. The promptOTP case in [Run] will return an error in the case that no other methods + // are available. + if isPerSessionMFA && (state.promptWebauthn || state.promptSSO || state.promptBrowser) { + state.promptOTP = false + } + + // Determine initial method to show based on MFA hierarchy: + // Webauthn > SSO > Browser > OTP. + switch { + case state.promptWebauthn: + chosenMethods = []string{cliMFATypeWebauthn} + // Allow dual prompt with OTP. + if state.promptOTP { + chosenMethods = append(chosenMethods, cliMFATypeOTP) + } + case state.promptSSO: + chosenMethods = []string{cliMFATypeSSO} + case state.promptBrowser: + chosenMethods = []string{cliMFATypeBrowserMFA} + case state.promptOTP: + chosenMethods = []string{cliMFATypeOTP} + } + } + + // If there are multiple options and we chose fewer without explicit user preference, + // notify the user about the available methods and how to select a specific one. + if len(availableMethods) > len(chosenMethods) && len(chosenMethods) > 0 && !userSpecifiedMethod { + availableMethodsString := strings.ToLower(strings.Join(availableMethods, ",")) + const msg = "" + + "Available MFA methods [%v]. Continuing with %v.\r\n" + + "If you wish to perform MFA with another method, specify with flag --mfa-mode=<%v> or environment variable TELEPORT_MFA_MODE=<%v>.\r\n\r\n" + fmt.Fprintf(c.writer(), msg, strings.Join(availableMethods, ", "), strings.Join(chosenMethods, " and "), availableMethodsString, availableMethodsString) + } + + return state, userSpecifiedMethod +} + // Run prompts the user to complete an MFA authentication challenge. func (c *CLIPrompt) Run(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { if c.cfg.PromptReason != "" { - fmt.Fprintln(c.writer(), c.cfg.PromptReason) + fmt.Fprintf(c.writer(), "%s\r\n", c.cfg.PromptReason) } - promptOTP := chal.TOTP != nil - promptWebauthn := chal.WebauthnChallenge != nil - promptSSO := chal.SSOChallenge != nil + // Initialize prompt state from the challenge. + state := mfaPromptState{ + promptOTP: chal.TOTP != nil, + promptWebauthn: chal.WebauthnChallenge != nil, + promptSSO: chal.SSOChallenge != nil, + promptBrowser: chal.BrowserMFAChallenge != nil, + } // No prompt to run, no-op. - if !promptOTP && !promptWebauthn && !promptSSO { + if !state.promptOTP && !state.promptWebauthn && !state.promptSSO && !state.promptBrowser { return &proto.MFAAuthenticateResponse{}, nil } isPerSessionMFA := c.cfg.Extensions.GetScope() == mfav1.ChallengeScope_CHALLENGE_SCOPE_USER_SESSION + + // Build list of available methods from the challenge before filtering + // out unsupported methods. This list is used in user-facing messages. var availableMethods []string - if promptWebauthn { + if state.promptWebauthn { availableMethods = append(availableMethods, cliMFATypeWebauthn) } - if promptSSO { + if state.promptSSO { availableMethods = append(availableMethods, cliMFATypeSSO) } - if promptOTP && !isPerSessionMFA { + if state.promptOTP && !isPerSessionMFA { availableMethods = append(availableMethods, cliMFATypeOTP) } + if state.promptBrowser { + availableMethods = append(availableMethods, cliMFATypeBrowserMFA) + } // Check off unsupported methods. - if promptWebauthn && !c.cfg.WebauthnSupported { - promptWebauthn = false - slog.DebugContext(ctx, "hardware device MFA not supported by your platform") + if state.promptWebauthn && !c.cfg.WebauthnSupported { + state.promptWebauthn = false + slog.DebugContext(ctx, "Disabling WebAuthn: hardware device MFA not supported by your platform") } - if promptSSO && c.cfg.SSOMFACeremony == nil { - promptSSO = false - slog.DebugContext(ctx, "SSO MFA not supported by this client, this is likely a bug") + if state.promptSSO && c.cfg.CallbackCeremony == nil { + state.promptSSO = false + slog.DebugContext(ctx, "Disabling SSO MFA: SSO MFA ceremony not available (this is likely a bug)") } - // Short circuit if OTP was preferred by --mfa-mode during per-session MFA - if c.cfg.PreferOTP && promptOTP && isPerSessionMFA { - return nil, trace.AccessDenied("only WebAuthn and SSO MFA methods are supported with per-session MFA, can not specify --mfa-mode=otp") + if state.promptBrowser && (chal.WebauthnChallenge == nil || c.cfg.CallbackCeremony == nil) { + state.promptBrowser = false + slog.DebugContext( + ctx, + "Disabling Browser MFA: user needs at least one webauthn device and client needs to support SSO MFA Ceremony", + "webauthn_available", chal.WebauthnChallenge != nil, + "mfa_ceremony_available (if false, this is a bug)", c.cfg.CallbackCeremony != nil, + ) } - // Prefer whatever method is requested by the client. - var chosenMethods []string - var userSpecifiedMethod bool - switch { - case c.cfg.PreferSSO && promptSSO: - chosenMethods = []string{cliMFATypeSSO} - promptWebauthn, promptOTP = false, false - userSpecifiedMethod = true - case c.cfg.PreferOTP && promptOTP: - chosenMethods = []string{cliMFATypeOTP} - promptWebauthn, promptSSO = false, false - userSpecifiedMethod = true - case c.cfg.AuthenticatorAttachment != wancli.AttachmentAuto: - chosenMethods = []string{cliMFATypeWebauthn} - promptSSO, promptOTP = false, false - userSpecifiedMethod = true + // Short circuit if OTP was preferred by --mfa-mode during per-session MFA. + if c.cfg.PreferOTP && state.promptOTP && isPerSessionMFA { + return nil, trace.AccessDenied("only WebAuthn, SSO MFA, and Browser MFA methods are supported with per-session MFA, cannot specify --mfa-mode=otp") } - // Use stronger auth methods if hijack is not allowed. - if !c.cfg.AllowStdinHijack && promptWebauthn { - promptOTP = false + // Determine which method(s) to use and print options if multiple are available. + var userSpecifiedMethod bool + state, userSpecifiedMethod = c.filterMFAMethods(state, isPerSessionMFA, availableMethods) + + // Perform MFA with automatic fallback to other methods on failure. + // In order: WebAuthn > SSO > Browser MFA > OTP + return c.promptWithFallback(ctx, chal, state, availableMethods, isPerSessionMFA, userSpecifiedMethod) +} + +func (c *CLIPrompt) promptWithFallback(ctx context.Context, chal *proto.MFAAuthenticateChallenge, state mfaPromptState, availableMethods []string, isPerSessionMFA, userSpecifiedMethod bool) (*proto.MFAAuthenticateResponse, error) { + var lastErr error + + // If the user is running Windows and hasn't marked Browser MFA as preferred, + // skip Browser MFA. They will have access to the same MFA methods using the + // WebAuthn.dll prompt. + skipBrowserMFAFallback := false + if state.promptBrowser && !c.cfg.PreferBrowser && c.getOS() == constants.WindowsOS { + skipBrowserMFAFallback = true + slog.DebugContext(ctx, "Skipping Browser MFA fallback on Windows (WebAuthn.dll provides same functionality)") } - // If we have multiple viable options, prefer Webauthn > SSO > OTP. - switch { - case promptWebauthn: - chosenMethods = []string{cliMFATypeWebauthn} - promptSSO = false - // Allow dual prompt with OTP. - if promptOTP { - chosenMethods = append(chosenMethods, cliMFATypeOTP) + // Retry loop for fallback behavior. + for { + // Determine current method to try based on priority order. + var currentMethod string + switch { + case state.promptWebauthn: + currentMethod = cliMFATypeWebauthn + case state.promptSSO: + currentMethod = cliMFATypeSSO + case state.promptBrowser && !skipBrowserMFAFallback: + currentMethod = cliMFATypeBrowserMFA + case state.promptOTP: + currentMethod = cliMFATypeOTP + default: + // No more methods to try. + slog.DebugContext(ctx, "No more MFA methods to try", + "last_error", lastErr, + "available_methods", strings.Join(availableMethods, ", "), + ) + if lastErr != nil { + return nil, trace.Wrap(lastErr) + } + return nil, trace.BadParameter("client does not support any available MFA methods [%v], see debug logs for details", strings.Join(availableMethods, ", ")) } - case promptSSO: - chosenMethods = []string{cliMFATypeSSO} - promptOTP = false - case promptOTP: - chosenMethods = []string{cliMFATypeOTP} - } - // If there are multiple options and we chose one without it being specifically - // requested by the user, notify the user about it and how to request a specific method. - if len(availableMethods) > len(chosenMethods) && len(chosenMethods) > 0 && !userSpecifiedMethod { - availableMethodsString := strings.ToLower(strings.Join(availableMethods, ",")) - const msg = "" + - "Available MFA methods [%v]. Continuing with %v.\n" + - "If you wish to perform MFA with another method, specify with flag --mfa-mode=<%v> or environment variable TELEPORT_MFA_MODE=<%v>.\n\n" - fmt.Fprintf(c.writer(), msg, strings.Join(availableMethods, ", "), strings.Join(chosenMethods, " and "), availableMethodsString, availableMethodsString) - } + // If we're retrying after a failure, inform the user. + if lastErr != nil { + fmt.Fprintf(c.writer(), "Attempting MFA authentication with %s\r\n", currentMethod) + } - // We should never prompt for OTP when per-session MFA is enabled. As long as other MFA methods are available, - // we can completely ignore OTP. The promptOTP case below will return an error in the case that no other methods - // are available. - if isPerSessionMFA && (promptWebauthn || promptSSO) { - promptOTP = false - } + // Perform the chosen ceremony based on the filtered state. + var resp *proto.MFAAuthenticateResponse + var err error + + switch { + case state.promptWebauthn: + if state.promptOTP { + resp, err = c.promptWebauthnAndOTP(ctx, chal) + } else { + resp, err = c.promptWebauthn(ctx, chal, c.getWebauthnPrompt(ctx)) + } + case state.promptSSO: + resp, err = c.promptSSO(ctx, chal) + case state.promptBrowser && !skipBrowserMFAFallback: + resp, err = c.promptBrowser(ctx, chal) + case state.promptOTP: + if isPerSessionMFA { + return nil, trace.AccessDenied("only WebAuthn, SSO MFA, and Browser MFA methods are supported with per-session MFA") + } + resp, err = c.promptOTP(ctx, c.cfg.Quiet) + } - switch { - case promptOTP && promptWebauthn: - resp, err := c.promptWebauthnAndOTP(ctx, chal) - return resp, trace.Wrap(err) - case promptWebauthn: - resp, err := c.promptWebauthn(ctx, chal, c.getWebauthnPrompt(ctx)) - return resp, trace.Wrap(err) - case promptSSO: - resp, err := c.promptSSO(ctx, chal) - return resp, trace.Wrap(err) - case promptOTP: - if isPerSessionMFA { - return nil, trace.AccessDenied("only WebAuthn and SSO MFA methods are supported with per-session MFA") + // MFA successful + if err == nil { + slog.DebugContext(ctx, "MFA authentication successful", "method", currentMethod) + return resp, nil + } + + slog.ErrorContext(ctx, "MFA authentication failed", + "method", currentMethod, + "error", err, + "user_specified", userSpecifiedMethod, + ) + + // Don't fall back if the user explicitly chose this method. + if userSpecifiedMethod { + return nil, trace.Wrap(err) + } + + // Print error message about the failure. + fmt.Fprintf(c.writer(), "MFA authentication with %s failed, check logs for details\r\n", currentMethod) + + // Don't fall back if the context is done (e.g. user canceled or request timed out). + if ctx.Err() != nil { + return nil, trace.Wrap(err) } - resp, err := c.promptOTP(ctx, c.cfg.Quiet) - return resp, trace.Wrap(err) - default: - return nil, trace.BadParameter("client does not support any available MFA methods [%v], see debug logs for details", strings.Join(availableMethods, ", ")) + // Disable the failed method and loop to try the next one. + // Fallback only moves forward in priority order: WebAuthn > SSO > Browser MFA > OTP + switch currentMethod { + case cliMFATypeWebauthn: + state.promptWebauthn = false + case cliMFATypeSSO: + state.promptSSO = false + case cliMFATypeBrowserMFA: + state.promptBrowser = false + case cliMFATypeOTP: + state.promptOTP = false + } + + lastErr = err } } @@ -271,13 +420,13 @@ func (c *CLIPrompt) promptDevicePrefix() string { func (c *CLIPrompt) promptWebauthnAndOTP(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { var message string - if runtime.GOOS == constants.WindowsOS { + if c.getOS() == constants.WindowsOS { message = "Follow the OS dialogs for platform authentication, or enter an OTP code here:" webauthnwin.SetPromptPlatformMessage("") } else { message = fmt.Sprintf("Tap any %ssecurity key or enter a code from a %sOTP device", c.promptDevicePrefix(), c.promptDevicePrefix()) } - fmt.Fprintln(c.writer(), message) + fmt.Fprintf(c.writer(), "%s\r\n", message) // Prepare to fire OTP goroutine. otpCtx, otpCancel := context.WithCancel(ctx) @@ -366,6 +515,19 @@ func (w *webauthnPromptWithOTP) PromptPIN() (string, error) { } func (c *CLIPrompt) promptSSO(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { - resp, err := c.cfg.SSOMFACeremony.Run(ctx, chal) + // MFACeremony.Run can handle either SSO or Browser MFA. It defaults to SSO MFA, + // but to be safe, copy and remove the Browser MFA challenge here. + ssoChal := *chal + ssoChal.BrowserMFAChallenge = nil + resp, err := c.cfg.CallbackCeremony.Run(ctx, &ssoChal) + return resp, trace.Wrap(err) +} + +func (c *CLIPrompt) promptBrowser(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { + // MFACeremony.Run can handle either SSO or Browser MFA. It defaults to SSO MFA, + // so remove copy and remove the SSO challenge so Browser MFA is used. + browserChal := *chal + browserChal.SSOChallenge = nil + resp, err := c.cfg.CallbackCeremony.Run(ctx, &browserChal) return resp, trace.Wrap(err) } diff --git a/lib/client/mfa/cli_test.go b/lib/client/mfa/cli_test.go index 7756aac331a09..6db94d7f51b88 100644 --- a/lib/client/mfa/cli_test.go +++ b/lib/client/mfa/cli_test.go @@ -29,6 +29,7 @@ import ( "github.com/stretchr/testify/require" "github.com/gravitational/teleport/api/client/proto" + "github.com/gravitational/teleport/api/constants" mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" webauthnpb "github.com/gravitational/teleport/api/types/webauthn" "github.com/gravitational/teleport/api/utils/prompt" @@ -155,11 +156,38 @@ func TestCLIPrompt(t *testing.T) { }, }, }, + { + name: "OK prefer browser when specified", + expectStdOut: "", // stdout is handled internally in the MFA ceremony, which is mocked in this test. + challenge: &proto.MFAAuthenticateChallenge{ + WebauthnChallenge: &webauthnpb.CredentialAssertion{}, + TOTP: &proto.TOTPChallenge{}, + SSOChallenge: &proto.SSOChallenge{}, + BrowserMFAChallenge: &proto.BrowserMFAChallenge{}, + }, + modifyPromptConfig: func(cfg *mfa.CLIPromptConfig) { + cfg.PreferBrowser = true + cfg.CallbackCeremony = &mockSSOMFACeremony{ + runFunc: func(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { + return &proto.MFAAuthenticateResponse{ + Response: &proto.MFAAuthenticateResponse_Browser{ + Browser: &proto.BrowserMFAResponse{RequestId: "request-id"}, + }, + }, nil + }, + } + }, + expectResp: &proto.MFAAuthenticateResponse{ + Response: &proto.MFAAuthenticateResponse_Browser{ + Browser: &proto.BrowserMFAResponse{RequestId: "request-id"}, + }, + }, + }, { name: "OK prefer webauthn over sso", expectStdOut: "" + - "Available MFA methods [WEBAUTHN, SSO]. Continuing with WEBAUTHN.\n" + - "If you wish to perform MFA with another method, specify with flag --mfa-mode= or environment variable TELEPORT_MFA_MODE=.\n\n" + + "Available MFA methods [WEBAUTHN, SSO]. Continuing with WEBAUTHN.\r\n" + + "If you wish to perform MFA with another method, specify with flag --mfa-mode= or environment variable TELEPORT_MFA_MODE=.\r\n\r\n" + "Tap any security key\n", challenge: &proto.MFAAuthenticateChallenge{ WebauthnChallenge: &webauthnpb.CredentialAssertion{}, @@ -174,9 +202,9 @@ func TestCLIPrompt(t *testing.T) { { name: "OK prefer webauthn+otp over sso", expectStdOut: "" + - "Available MFA methods [WEBAUTHN, SSO, OTP]. Continuing with WEBAUTHN and OTP.\n" + - "If you wish to perform MFA with another method, specify with flag --mfa-mode= or environment variable TELEPORT_MFA_MODE=.\n\n" + - "Tap any security key or enter a code from a OTP device\n", + "Available MFA methods [WEBAUTHN, SSO, OTP]. Continuing with WEBAUTHN and OTP.\r\n" + + "If you wish to perform MFA with another method, specify with flag --mfa-mode= or environment variable TELEPORT_MFA_MODE=.\r\n\r\n" + + "Tap any security key or enter a code from a OTP device\r\n", challenge: &proto.MFAAuthenticateChallenge{ WebauthnChallenge: &webauthnpb.CredentialAssertion{}, TOTP: &proto.TOTPChallenge{}, @@ -194,8 +222,8 @@ func TestCLIPrompt(t *testing.T) { { name: "OK prefer sso over otp", expectStdOut: "" + - "Available MFA methods [SSO, OTP]. Continuing with SSO.\n" + - "If you wish to perform MFA with another method, specify with flag --mfa-mode= or environment variable TELEPORT_MFA_MODE=.\n\n", + "Available MFA methods [SSO, OTP]. Continuing with SSO.\r\n" + + "If you wish to perform MFA with another method, specify with flag --mfa-mode= or environment variable TELEPORT_MFA_MODE=.\r\n\r\n", challenge: &proto.MFAAuthenticateChallenge{ TOTP: &proto.TOTPChallenge{}, SSOChallenge: &proto.SSOChallenge{}, @@ -212,8 +240,8 @@ func TestCLIPrompt(t *testing.T) { { name: "OK prefer webauthn over otp when stdin hijack disallowed", expectStdOut: "" + - "Available MFA methods [WEBAUTHN, OTP]. Continuing with WEBAUTHN.\n" + - "If you wish to perform MFA with another method, specify with flag --mfa-mode= or environment variable TELEPORT_MFA_MODE=.\n\n" + + "Available MFA methods [WEBAUTHN, OTP]. Continuing with WEBAUTHN.\r\n" + + "If you wish to perform MFA with another method, specify with flag --mfa-mode= or environment variable TELEPORT_MFA_MODE=.\r\n\r\n" + "Tap any security key\n", challenge: &proto.MFAAuthenticateChallenge{ WebauthnChallenge: &webauthnpb.CredentialAssertion{}, @@ -228,9 +256,9 @@ func TestCLIPrompt(t *testing.T) { { name: "OK webauthn or otp with stdin hijack allowed, choose webauthn", expectStdOut: "" + - "Available MFA methods [WEBAUTHN, SSO, OTP]. Continuing with WEBAUTHN and OTP.\n" + - "If you wish to perform MFA with another method, specify with flag --mfa-mode= or environment variable TELEPORT_MFA_MODE=.\n\n" + - "Tap any security key or enter a code from a OTP device\n", + "Available MFA methods [WEBAUTHN, SSO, OTP]. Continuing with WEBAUTHN and OTP.\r\n" + + "If you wish to perform MFA with another method, specify with flag --mfa-mode= or environment variable TELEPORT_MFA_MODE=.\r\n\r\n" + + "Tap any security key or enter a code from a OTP device\r\n", challenge: &proto.MFAAuthenticateChallenge{ WebauthnChallenge: &webauthnpb.CredentialAssertion{}, TOTP: &proto.TOTPChallenge{}, @@ -248,9 +276,9 @@ func TestCLIPrompt(t *testing.T) { { name: "OK webauthn or otp with stdin hijack allowed, choose otp", expectStdOut: "" + - "Available MFA methods [WEBAUTHN, SSO, OTP]. Continuing with WEBAUTHN and OTP.\n" + - "If you wish to perform MFA with another method, specify with flag --mfa-mode= or environment variable TELEPORT_MFA_MODE=.\n\n" + - "Tap any security key or enter a code from a OTP device\n", + "Available MFA methods [WEBAUTHN, SSO, OTP]. Continuing with WEBAUTHN and OTP.\r\n" + + "If you wish to perform MFA with another method, specify with flag --mfa-mode= or environment variable TELEPORT_MFA_MODE=.\r\n\r\n" + + "Tap any security key or enter a code from a OTP device\r\n", stdin: "123456", challenge: &proto.MFAAuthenticateChallenge{ WebauthnChallenge: &webauthnpb.CredentialAssertion{}, @@ -270,7 +298,7 @@ func TestCLIPrompt(t *testing.T) { }, { name: "NOK no webauthn response", - expectStdOut: "Tap any security key\n", + expectStdOut: "Tap any security key\nMFA authentication with WEBAUTHN failed, check logs for details\r\n", challenge: &proto.MFAAuthenticateChallenge{ WebauthnChallenge: &webauthnpb.CredentialAssertion{}, }, @@ -278,7 +306,7 @@ func TestCLIPrompt(t *testing.T) { }, { name: "NOK no sso response", - expectStdOut: "", + expectStdOut: "MFA authentication with SSO failed, check logs for details\r\n", challenge: &proto.MFAAuthenticateChallenge{ SSOChallenge: &proto.SSOChallenge{}, }, @@ -286,7 +314,7 @@ func TestCLIPrompt(t *testing.T) { }, { name: "NOK no otp response", - expectStdOut: "Enter an OTP code from a device:\n", + expectStdOut: "Enter an OTP code from a device:\nMFA authentication with OTP failed, check logs for details\r\n", challenge: &proto.MFAAuthenticateChallenge{ TOTP: &proto.TOTPChallenge{}, }, @@ -294,7 +322,7 @@ func TestCLIPrompt(t *testing.T) { }, { name: "NOK no webauthn or otp response", - expectStdOut: "Tap any security key or enter a code from a OTP device\n", + expectStdOut: "Tap any security key or enter a code from a OTP device\r\nMFA authentication with WEBAUTHN failed, check logs for details\r\n", challenge: &proto.MFAAuthenticateChallenge{ WebauthnChallenge: &webauthnpb.CredentialAssertion{}, TOTP: &proto.TOTPChallenge{}, @@ -313,10 +341,9 @@ func TestCLIPrompt(t *testing.T) { modifyPromptConfig: func(cfg *mfa.CLIPromptConfig) { cfg.AllowStdinHijack = true }, - expectStdOut: `Tap any security key or enter a code from a OTP device -Detected security key tap -Enter your security key PIN: -`, + expectStdOut: "Tap any security key or enter a code from a OTP device\r\n" + + "Detected security key tap\n" + + "Enter your security key PIN:\n", expectResp: &proto.MFAAuthenticateResponse{ Response: &proto.MFAAuthenticateResponse_Webauthn{ Webauthn: &webauthnpb.CredentialAssertionResponse{ @@ -411,7 +438,7 @@ Enter your security key PIN: }, modifyPromptConfig: func(cfg *mfa.CLIPromptConfig) { cfg.WebauthnSupported = false - cfg.SSOMFACeremony = nil + cfg.CallbackCeremony = nil }, expectErr: trace.BadParameter("client does not support any available MFA methods [WEBAUTHN, SSO], see debug logs for details"), }, @@ -425,7 +452,7 @@ Enter your security key PIN: Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_USER_SESSION, } }, - expectErr: trace.AccessDenied("only WebAuthn and SSO MFA methods are supported with per-session MFA"), + expectErr: trace.AccessDenied("only WebAuthn, SSO MFA, and Browser MFA methods are supported with per-session MFA"), }, { name: "NOK prefer otp with per-session MFA", @@ -438,7 +465,7 @@ Enter your security key PIN: } cfg.PreferOTP = true }, - expectErr: trace.AccessDenied("only WebAuthn and SSO MFA methods are supported with per-session MFA, can not specify --mfa-mode=otp"), + expectErr: trace.AccessDenied("only WebAuthn, SSO MFA, and Browser MFA methods are supported with per-session MFA, cannot specify --mfa-mode=otp"), }, { name: "OK webauthn or otp with stdin hijack and per-session MFA, no choice presented", @@ -500,6 +527,80 @@ Enter your security key PIN: }, }, }, + { + name: "NOK browser fallback skipped on windows when not preferred", + expectStdOut: "" + + "Available MFA methods [WEBAUTHN, BROWSER]. Continuing with WEBAUTHN.\r\n" + + "If you wish to perform MFA with another method, specify with flag --mfa-mode= or environment variable TELEPORT_MFA_MODE=.\r\n\r\n" + + "Tap any security key\n" + + "MFA authentication with WEBAUTHN failed, check logs for details\r\n", + challenge: &proto.MFAAuthenticateChallenge{ + WebauthnChallenge: &webauthnpb.CredentialAssertion{}, + BrowserMFAChallenge: &proto.BrowserMFAChallenge{}, + }, + makeWebauthnLoginFunc: func(_ *prompt.FakeReader) mfa.WebauthnLoginFunc { + return func(ctx context.Context, origin string, assertion *wantypes.CredentialAssertion, prompt wancli.LoginPrompt, opts *wancli.LoginOpts) (*proto.MFAAuthenticateResponse, string, error) { + if _, err := prompt.PromptTouch(); err != nil { + return nil, "", trace.Wrap(err) + } + return nil, "", context.DeadlineExceeded + } + }, + modifyPromptConfig: func(cfg *mfa.CLIPromptConfig) { + cfg.RuntimeOS = constants.WindowsOS + cfg.CallbackCeremony = &mockSSOMFACeremony{ + runFunc: func(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { + return &proto.MFAAuthenticateResponse{ + Response: &proto.MFAAuthenticateResponse_Browser{ + Browser: &proto.BrowserMFAResponse{RequestId: "request-id"}, + }, + }, nil + }, + } + }, + expectErr: context.DeadlineExceeded, + }, + { + name: "OK prompt fallback webauthn > SSO > browser MFA", + expectStdOut: "" + + "Available MFA methods [WEBAUTHN, BROWSER]. Continuing with WEBAUTHN.\r\n" + + "If you wish to perform MFA with another method, specify with flag --mfa-mode= or environment variable TELEPORT_MFA_MODE=.\r\n\r\n" + + "Tap any security key\n" + + "MFA authentication with WEBAUTHN failed, check logs for details\r\n" + + "Attempting MFA authentication with BROWSER\r\n", + challenge: &proto.MFAAuthenticateChallenge{ + WebauthnChallenge: &webauthnpb.CredentialAssertion{}, + BrowserMFAChallenge: &proto.BrowserMFAChallenge{}, + }, + makeWebauthnLoginFunc: func(_ *prompt.FakeReader) mfa.WebauthnLoginFunc { + return func(ctx context.Context, origin string, assertion *wantypes.CredentialAssertion, prompt wancli.LoginPrompt, opts *wancli.LoginOpts) (*proto.MFAAuthenticateResponse, string, error) { + if _, err := prompt.PromptTouch(); err != nil { + return nil, "", trace.Wrap(err) + } + return nil, "", errors.New("webauthn device not found") + } + }, + modifyPromptConfig: func(cfg *mfa.CLIPromptConfig) { + cfg.CallbackCeremony = &mockSSOMFACeremony{ + runFunc: func(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { + return &proto.MFAAuthenticateResponse{ + Response: &proto.MFAAuthenticateResponse_Browser{ + Browser: &proto.BrowserMFAResponse{ + RequestId: "request-id", + }, + }, + }, nil + }, + } + }, + expectResp: &proto.MFAAuthenticateResponse{ + Response: &proto.MFAAuthenticateResponse_Browser{ + Browser: &proto.BrowserMFAResponse{ + RequestId: "request-id", + }, + }, + }, + }, } { t.Run(tc.name, func(t *testing.T) { ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond) @@ -529,7 +630,7 @@ Enter your security key PIN: } } - cfg.SSOMFACeremony = &mockSSOMFACeremony{ + cfg.CallbackCeremony = &mockSSOMFACeremony{ mfaResp: tc.expectResp, } @@ -563,6 +664,7 @@ Enter your security key PIN: type mockSSOMFACeremony struct { mfaResp *proto.MFAAuthenticateResponse + runFunc func(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) } func (m *mockSSOMFACeremony) GetClientCallbackURL() string { @@ -575,6 +677,9 @@ func (m *mockSSOMFACeremony) GetProxyAddress() string { // Run the SSO MFA ceremony. func (m *mockSSOMFACeremony) Run(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { + if m.runFunc != nil { + return m.runFunc(ctx, chal) + } if m.mfaResp == nil { return nil, context.DeadlineExceeded } diff --git a/lib/client/mfa_test.go b/lib/client/mfa_test.go index bb24f3fb14a03..64d639fe8cbd2 100644 --- a/lib/client/mfa_test.go +++ b/lib/client/mfa_test.go @@ -65,8 +65,9 @@ func TestPromptMFAChallenge_usingNonRegisteredDevice(t *testing.T) { } challengeWebauthnOTP := &proto.MFAAuthenticateChallenge{ - TOTP: &proto.TOTPChallenge{}, // non-nil enables OTP prompt - WebauthnChallenge: challengeWebauthnOnly.WebauthnChallenge, + TOTP: &proto.TOTPChallenge{}, // non-nil enables OTP prompt + WebauthnChallenge: challengeWebauthnOnly.WebauthnChallenge, + BrowserMFAChallenge: nil, } tests := []struct { @@ -82,7 +83,8 @@ func TestPromptMFAChallenge_usingNonRegisteredDevice(t *testing.T) { name: "webauthn and OTP", challenge: challengeWebauthnOTP, customizePrompt: func(p *mfa.CLIPromptConfig) { - p.AllowStdinHijack = true // required for OTP+WebAuthn prompt. + // Specify cross-platform WebAuthn to prevent fallback to Browser MFA. + p.AuthenticatorAttachment = wancli.AttachmentCrossPlatform }, }, } diff --git a/lib/client/presence.go b/lib/client/presence.go index 7cda8ea9ec5e1..80bfb35c2f2cb 100644 --- a/lib/client/presence.go +++ b/lib/client/presence.go @@ -77,7 +77,7 @@ func RunPresenceTask(ctx context.Context, term io.Writer, maintainer PresenceMai } presenceCeremony := &mfa.Ceremony{ - SSOMFACeremonyConstructor: baseCeremony.SSOMFACeremonyConstructor, + MFACeremonyConstructor: baseCeremony.MFACeremonyConstructor, PromptConstructor: func(opts ...mfa.PromptOpt) mfa.Prompt { return mfa.PromptFunc(func(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { // Replace normal output with terminal messages specific to moderated sessions. @@ -99,9 +99,10 @@ func RunPresenceTask(ctx context.Context, term io.Writer, maintainer PresenceMai req := &proto.PresenceMFAChallengeSend{ Request: &proto.PresenceMFAChallengeSend_ChallengeRequest{ ChallengeRequest: &proto.PresenceMFAChallengeRequest{ - SessionID: sessionID, - SSOClientRedirectURL: chalReq.SSOClientRedirectURL, - ProxyAddress: chalReq.ProxyAddress, + SessionID: sessionID, + SSOClientRedirectURL: chalReq.SSOClientRedirectURL, + BrowserMFATSHRedirectURL: chalReq.BrowserMFATSHRedirectURL, + ProxyAddress: chalReq.ProxyAddress, }, }, } diff --git a/lib/client/sso/ceremony.go b/lib/client/sso/ceremony.go index ddeebd021d217..f4e8d75018e8f 100644 --- a/lib/client/sso/ceremony.go +++ b/lib/client/sso/ceremony.go @@ -25,7 +25,9 @@ import ( "github.com/gravitational/teleport/api/client/proto" "github.com/gravitational/teleport/api/mfa" + apiutils "github.com/gravitational/teleport/api/utils" "github.com/gravitational/teleport/lib/auth/authclient" + wantypes "github.com/gravitational/teleport/lib/auth/webauthntypes" ) // Ceremony is a customizable SSO login ceremony. @@ -33,14 +35,14 @@ type Ceremony struct { clientCallbackURL string Init CeremonyInit HandleRedirect func(ctx context.Context, redirectURL string) error - GetCallbackResponse func(ctx context.Context) (*authclient.SSHLoginResponse, error) + GetCallbackResponse func(ctx context.Context) (*authclient.CLILoginResponse, error) } // CeremonyInit initializes an SSO login ceremony. type CeremonyInit func(ctx context.Context, clientCallbackURL string) (redirectURL string, err error) // Run the SSO ceremony. -func (c *Ceremony) Run(ctx context.Context) (*authclient.SSHLoginResponse, error) { +func (c *Ceremony) Run(ctx context.Context) (*authclient.CLILoginResponse, error) { redirectURL, err := c.Init(ctx, c.clientCallbackURL) if err != nil { return nil, trace.Wrap(err) @@ -69,14 +71,14 @@ type SAMLCeremony struct { clientCallbackURL string Init SAMLCeremonyInit HandleRequest func(ctx context.Context, redirectURL, postformData string) error - GetCallbackResponse func(ctx context.Context) (*authclient.SSHLoginResponse, error) + GetCallbackResponse func(ctx context.Context) (*authclient.CLILoginResponse, error) } // SAMLCeremonyInit initializes an SAML based SSO login ceremony. type SAMLCeremonyInit func(ctx context.Context, clientCallbackURL string) (redirectURL, postformData string, err error) // Run the SAML SSO ceremony. -func (c *SAMLCeremony) Run(ctx context.Context) (*authclient.SSHLoginResponse, error) { +func (c *SAMLCeremony) Run(ctx context.Context) (*authclient.CLILoginResponse, error) { redirectURL, postformData, err := c.Init(ctx, c.clientCallbackURL) if err != nil { return nil, trace.Wrap(err) @@ -107,6 +109,10 @@ type MFACeremony struct { ProxyAddress string HandleRedirect func(ctx context.Context, redirectURL string) error GetCallbackMFAToken func(ctx context.Context) (string, error) + GetCallbackWebauthn func(ctx context.Context) (*wantypes.CredentialAssertionResponse, error) + // GetCallbackResponse returns the response from the server without assuming + // if it is SSO or Browser MFA, so it can be inspected and actioned. + GetCallbackResponse func(ctx context.Context) (*authclient.CLILoginResponse, error) } // GetClientCallbackURL returns the client callback URL. @@ -119,25 +125,93 @@ func (m *MFACeremony) GetProxyAddress() string { return m.ProxyAddress } -// Run the SSO MFA ceremony. +// Run the SSO/Browser MFA ceremony. func (m *MFACeremony) Run(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { - if err := m.HandleRedirect(ctx, chal.SSOChallenge.RedirectUrl); err != nil { - return nil, trace.Wrap(err) - } + switch { + // If both SSO and Browser MFA challenges are set then Connect has initiated + // this MFA ceremony. In which case, don't print the redirect URL and listen + // for either response to be returned. + case chal.SSOChallenge != nil && chal.BrowserMFAChallenge != nil: + if m.GetCallbackResponse == nil { + return nil, trace.BadParameter("GetCallbackResponse is required for combined SSO and Browser MFA challenges") + } - mfaToken, err := m.GetCallbackMFAToken(ctx) - if err != nil { - return nil, trace.Wrap(err) - } + loginResp, err := m.GetCallbackResponse(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + switch { + case loginResp.MFAToken != "": + return &proto.MFAAuthenticateResponse{ + Response: &proto.MFAAuthenticateResponse_SSO{ + SSO: &proto.SSOResponse{ + RequestId: chal.SSOChallenge.RequestId, + Token: loginResp.MFAToken, + }, + }, + }, nil + case loginResp.BrowserMFAWebauthnResponse != nil: + return &proto.MFAAuthenticateResponse{ + Response: &proto.MFAAuthenticateResponse_Browser{ + Browser: &proto.BrowserMFAResponse{ + RequestId: chal.BrowserMFAChallenge.RequestId, + WebauthnResponse: wantypes.CredentialAssertionResponseToProto(loginResp.BrowserMFAWebauthnResponse), + }, + }, + }, nil + default: + return nil, trace.BadParameter("login response missing both SSO MFA token and Browser WebAuthn response") + } + case chal.SSOChallenge != nil: + if err := m.HandleRedirect(ctx, chal.SSOChallenge.RedirectUrl); err != nil { + return nil, trace.Wrap(err) + } - return &proto.MFAAuthenticateResponse{ - Response: &proto.MFAAuthenticateResponse_SSO{ - SSO: &proto.SSOResponse{ - RequestId: chal.SSOChallenge.RequestId, - Token: mfaToken, + mfaToken, err := m.GetCallbackMFAToken(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + return &proto.MFAAuthenticateResponse{ + Response: &proto.MFAAuthenticateResponse_SSO{ + SSO: &proto.SSOResponse{ + RequestId: chal.SSOChallenge.RequestId, + Token: mfaToken, + }, }, - }, - }, nil + }, nil + case chal.BrowserMFAChallenge != nil: + redirectURL, err := apiutils.ParseURL(m.ProxyAddress) + if err != nil { + return nil, trace.Wrap(err) + } + if redirectURL == nil { + return nil, trace.BadParameter("proxy address is required for browser MFA") + } + redirectURL.Scheme = "https" + redirectURL.Path = WebBrowserMFAPath + chal.BrowserMFAChallenge.RequestId + + if err := m.HandleRedirect(ctx, redirectURL.String()); err != nil { + return nil, trace.Wrap(err) + } + + webauthnResp, err := m.GetCallbackWebauthn(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + return &proto.MFAAuthenticateResponse{ + Response: &proto.MFAAuthenticateResponse_Browser{ + Browser: &proto.BrowserMFAResponse{ + RequestId: chal.BrowserMFAChallenge.RequestId, + WebauthnResponse: wantypes.CredentialAssertionResponseToProto(webauthnResp), + }, + }, + }, nil + default: + return nil, trace.BadParameter("no SSO or Browser challenge provided") + } } // Close closes resources associated with the SSO MFA ceremony. @@ -167,15 +241,28 @@ func NewCLIMFACeremony(rd *Redirector) *MFACeremony { return loginResp.MFAToken, nil }, + GetCallbackWebauthn: func(ctx context.Context) (*wantypes.CredentialAssertionResponse, error) { + loginResp, err := rd.WaitForResponse(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + if loginResp.BrowserMFAWebauthnResponse == nil { + return nil, trace.BadParameter("login response for Browser MFA flow missing WebAuthn response") + } + + return loginResp.BrowserMFAWebauthnResponse, nil + }, } } -// NewConnectMFACeremony creates a new Teleport Connect SSO ceremony from the given redirector. -func NewConnectMFACeremony(rd *Redirector) mfa.SSOMFACeremony { +// NewConnectMFACeremony creates a new Teleport Connect SSO/Browser ceremony from the given redirector. +func NewConnectMFACeremony(rd *Redirector) mfa.CallbackCeremony { return &MFACeremony{ - close: rd.Close, - ClientCallbackURL: rd.ClientCallbackURL, - ProxyAddress: rd.ProxyAddr, + close: rd.Close, + ClientCallbackURL: rd.ClientCallbackURL, + ProxyAddress: rd.ProxyAddr, + GetCallbackResponse: rd.WaitForResponse, HandleRedirect: func(ctx context.Context, redirectURL string) error { // Connect handles redirect on the Electron side. return nil @@ -192,5 +279,17 @@ func NewConnectMFACeremony(rd *Redirector) mfa.SSOMFACeremony { return loginResp.MFAToken, nil }, + GetCallbackWebauthn: func(ctx context.Context) (*wantypes.CredentialAssertionResponse, error) { + loginResp, err := rd.WaitForResponse(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + if loginResp.BrowserMFAWebauthnResponse == nil { + return nil, trace.BadParameter("login response for Browser MFA flow missing WebAuthn response") + } + + return loginResp.BrowserMFAWebauthnResponse, nil + }, } } diff --git a/lib/client/sso/ceremony_test.go b/lib/client/sso/ceremony_test.go index 6f0a7289d1482..98a6d4f74486d 100644 --- a/lib/client/sso/ceremony_test.go +++ b/lib/client/sso/ceremony_test.go @@ -34,12 +34,18 @@ import ( "github.com/gravitational/teleport" "github.com/gravitational/teleport/api/client/proto" + mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" + "github.com/gravitational/teleport/lib/auth/authtest" + "github.com/gravitational/teleport/lib/auth/mfatypes" + wantypes "github.com/gravitational/teleport/lib/auth/webauthntypes" + "github.com/gravitational/teleport/lib/authz" "github.com/gravitational/teleport/lib/client/sso" "github.com/gravitational/teleport/lib/web" ) func TestCLICeremony(t *testing.T) { - ctx := context.Background() + t.Parallel() + ctx := t.Context() mockProxy := newMockProxy(t) username := "alice" @@ -101,7 +107,8 @@ func TestCLICeremony(t *testing.T) { } func TestCLISAMLCeremony(t *testing.T) { - ctx := context.Background() + t.Parallel() + ctx := t.Context() const username = "alice" mockProxy := newMockProxy(t) @@ -132,6 +139,7 @@ func TestCLISAMLCeremony(t *testing.T) { }, } { t.Run(tt.name, func(t *testing.T) { + t.Parallel() // Capture stderr. stderr := &bytes.Buffer{} @@ -230,10 +238,11 @@ const postform = ` ` func TestCLICeremony_MFA(t *testing.T) { + t.Parallel() const token = "sso-mfa-token" - const requestID = "soo-mfa-request-id" + const requestID = "sso-mfa-request-id" - ctx := context.Background() + ctx := t.Context() mockProxy := newMockProxy(t) // Capture stderr. @@ -297,3 +306,102 @@ func TestCLICeremony_MFA(t *testing.T) { assert.Equal(t, token, mfaResponse.GetSSO().Token) assert.Equal(t, requestID, mfaResponse.GetSSO().RequestId) } + +func TestCLICeremony_BrowserMFA(t *testing.T) { + t.Parallel() + ctx := t.Context() + mockProxy := newMockProxy(t) + const username = "alice" + + // 1. User runs "tsh login" with browser MFA. tsh creates a redirector that + // opens a local callback server and will later open a browser to the proxy. + stderr := bytes.NewBuffer([]byte{}) + rd, err := sso.NewRedirector(sso.RedirectorConfig{ + ProxyAddr: mockProxy.URL, + Browser: teleport.BrowserNone, + Stderr: stderr, + }) + require.NoError(t, err) + + testServer, err := authtest.NewTestServer(authtest.ServerConfig{ + Auth: authtest.AuthServerConfig{ + Dir: t.TempDir(), + }, + }) + require.NoError(t, err) + t.Cleanup(func() { assert.NoError(t, testServer.Close()) }) + + auth := testServer.Auth() + + // 2. The proxy issues a browser MFA challenge tied to the + // redirector's callback URL so the result is delivered back to tsh. + chal, err := auth.BeginBrowserMFAChallenge(ctx, mfatypes.BeginBrowserMFAChallengeParams{ + User: username, + BrowserMFATSHRedirectURL: rd.ClientCallbackURL, + Ext: &mfav1.ChallengeExtensions{ + Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, + }, + }) + require.NoError(t, err) + + // 3. User solves the WebAuthn challenge in their browser. Pre-compute the + // success redirect URL that the proxy would produce after validating the + // response. In reality this would happen after the CLI ceremony that is + // created below, but we need the redirect URL before we test the CLI ceremony. + webauthnResponse := &wantypes.CredentialAssertionResponse{ + PublicKeyCredential: wantypes.PublicKeyCredential{ + Credential: wantypes.Credential{ID: "fake-id", Type: "public-key"}, + }, + AssertionResponse: wantypes.AuthenticatorAssertionResponse{ + AuthenticatorResponse: wantypes.AuthenticatorResponse{ + ClientDataJSON: []byte(`{"type":"webauthn.get","challenge":"test"}`), + }, + AuthenticatorData: []byte("test-data"), + Signature: []byte("test-sig"), + }, + } + + userCtx := authz.ContextWithUser(ctx, authtest.TestUserWithRoles(username, []string{"role"}).I) + successResponseURL, err := auth.CompleteBrowserMFAChallenge( + userCtx, + chal.RequestId, + wantypes.CredentialAssertionResponseToProto(webauthnResponse), + ) + require.NoError(t, err) + + ceremony := sso.NewCLIMFACeremony(rd) + t.Cleanup(ceremony.Close) + + // 4. tsh opens the browser to the MFA URL (HandleRedirect). We intercept + // this to simulate the browser hitting the proxy's success redirect, which + // delivers the MFA result to tsh's local callback server. + baseHandleRedirect := ceremony.HandleRedirect + ceremony.HandleRedirect = func(ctx context.Context, redirectURL string) error { + if err := baseHandleRedirect(ctx, redirectURL); err != nil { + return trace.Wrap(err) + } + + // Simulate the browser calling the redirect URL it gets from the proxy + // that redirects the MFA result to tsh + resp, err := http.Get(successResponseURL) + require.NoError(t, err) + defer resp.Body.Close() + + // User should be redirected to success screen. + body, err := io.ReadAll(resp.Body) + require.NoError(t, err) + require.Equal(t, sso.LoginSuccessRedirectURL, string(body)) + return nil + } + + // 5. tsh ceremony completes and the MFA response is returned to the caller. + mfaResponse, err := ceremony.Run(ctx, &proto.MFAAuthenticateChallenge{ + BrowserMFAChallenge: &proto.BrowserMFAChallenge{ + RequestId: chal.RequestId, + }, + }) + require.NoError(t, err) + require.NotNil(t, mfaResponse.GetBrowser()) + assert.Equal(t, wantypes.CredentialAssertionResponseToProto(webauthnResponse), mfaResponse.GetBrowser().WebauthnResponse) + assert.Equal(t, chal.RequestId, mfaResponse.GetBrowser().RequestId) +} diff --git a/lib/client/sso/redirector.go b/lib/client/sso/redirector.go index 79ca609f2b886..c29ded5aedd33 100644 --- a/lib/client/sso/redirector.go +++ b/lib/client/sso/redirector.go @@ -93,6 +93,9 @@ const ( // on this page in order to capture the SSO MFA response regardless of what page the challenge // was requested from. WebMFARedirect = "/web/sso_confirm" + + // WebBrowserMFAPath is the path for browser-based MFA flows. + WebBrowserMFAPath = "/web/mfa/browser/" ) // RedirectorConfig is configuration for an sso redirector. @@ -138,7 +141,7 @@ type Redirector struct { // the data key secret.Key // responseC is a channel to receive responses - responseC chan *authclient.SSHLoginResponse + responseC chan *authclient.CLILoginResponse // errorC will contain errors errorC chan error // doneC will be closed when the redirector is closed. @@ -195,7 +198,7 @@ func NewRedirector(config RedirectorConfig) (*Redirector, error) { proxyURL: proxyURL, mux: http.NewServeMux(), key: key, - responseC: make(chan *authclient.SSHLoginResponse, 1), + responseC: make(chan *authclient.CLILoginResponse, 1), errorC: make(chan error, 1), doneC: make(chan struct{}), } @@ -267,16 +270,16 @@ func (rd *Redirector) processLoginURL(redirectURL, postForm string) error { // If a command was found to launch the browser, create and start it. if err := OpenURLInBrowser(rd.Browser, clickableURL); err != nil { - fmt.Fprintf(rd.Stderr, "Failed to open a browser window for login: %v\n", err) + fmt.Fprintf(rd.Stderr, "Failed to open a browser window for login: %v\r\n", err) } // Print the URL to the screen, in case the command that launches the browser did not run. // If Browser is set to the special string teleport.BrowserNone, no browser will be opened. if rd.Browser == teleport.BrowserNone { - fmt.Fprintf(rd.Stderr, "Use the following URL to authenticate:\n %v\n", clickableURL) + fmt.Fprintf(rd.Stderr, "Use the following URL to authenticate:\r\n %v\r\n", clickableURL) } else { fmt.Fprintf(rd.Stderr, "If browser window does not open automatically, open it by ") - fmt.Fprintf(rd.Stderr, "clicking on the link:\n %v\n", clickableURL) + fmt.Fprintf(rd.Stderr, "clicking on the link:\r\n %v\r\n", clickableURL) } return nil @@ -354,7 +357,7 @@ func OpenURLInBrowser(browser string, URL string) error { } // WaitForResponse waits for a response from the callback handler. -func (rd *Redirector) WaitForResponse(ctx context.Context) (*authclient.SSHLoginResponse, error) { +func (rd *Redirector) WaitForResponse(ctx context.Context) (*authclient.CLILoginResponse, error) { slog.InfoContext(ctx, "Waiting for response", "callback_url", rd.server.URL) select { case err := <-rd.ErrorC(): @@ -382,7 +385,7 @@ func (rd *Redirector) Done() <-chan struct{} { } // ResponseC returns a channel with response -func (rd *Redirector) ResponseC() <-chan *authclient.SSHLoginResponse { +func (rd *Redirector) ResponseC() <-chan *authclient.CLILoginResponse { return rd.responseC } @@ -393,7 +396,7 @@ func (rd *Redirector) ErrorC() <-chan error { // callback is used by Teleport proxy to send back credentials // issued by Teleport proxy -func (rd *Redirector) callback(w http.ResponseWriter, r *http.Request) (*authclient.SSHLoginResponse, error) { +func (rd *Redirector) callback(w http.ResponseWriter, r *http.Request) (*authclient.CLILoginResponse, error) { if r.URL.Path != "/callback" { return nil, trace.NotFound("path not found") } @@ -410,7 +413,7 @@ func (rd *Redirector) callback(w http.ResponseWriter, r *http.Request) (*authcli return nil, trace.BadParameter("failed to decrypt response: in %v, err: %v", r.URL.String(), err) } - var re authclient.SSHLoginResponse + var re authclient.CLILoginResponse err = json.Unmarshal(plaintext, &re) if err != nil { return nil, trace.BadParameter("failed to decrypt response: in %v, err: %v", r.URL.String(), err) @@ -427,7 +430,7 @@ func (rd *Redirector) Close() { // wrapCallback is a helper wrapper method that wraps callback HTTP handler // and sends a result to the channel and redirect users to error page -func (rd *Redirector) wrapCallback(fn func(http.ResponseWriter, *http.Request) (*authclient.SSHLoginResponse, error)) http.Handler { +func (rd *Redirector) wrapCallback(fn func(http.ResponseWriter, *http.Request) (*authclient.CLILoginResponse, error)) http.Handler { // Generate possible redirect URLs from the proxy URL. clone := *rd.proxyURL clone.Path = LoginFailedRedirectURL diff --git a/lib/client/weblogin.go b/lib/client/weblogin.go index b67bdd1184a56..f1ba27eb74693 100644 --- a/lib/client/weblogin.go +++ b/lib/client/weblogin.go @@ -112,6 +112,10 @@ type MFAChallengeRequest struct { Pass string `json:"pass"` // Passwordless explicitly requests a passwordless/usernameless challenge. Passwordless bool `json:"passwordless"` + // BrowserMFATSHRedirectURL is the redirect url that tsh provides with a + // secret key that the server will use to return a WebAuthn response to. + // Format: http://localhost:12345/callback?secret_key=X + BrowserMFATSHRedirectURL string `json:"browser_mfa_tsh_redirect_url,omitempty"` } // MFAChallengeResponse holds the response to a MFA challenge. @@ -124,6 +128,9 @@ type MFAChallengeResponse struct { SSOResponse *SSOResponse `json:"sso_response"` // TODO(Joerger): DELETE IN v19.0.0, WebauthnResponse used instead. WebauthnAssertionResponse *wantypes.CredentialAssertionResponse `json:"webauthnAssertionResponse"` + // BrowserMFAResponse is a response the browser completing an MFA challenge + // as part of the Browser MFA flow. + BrowserMFAResponse *BrowserMFAResponse `json:"browser_response"` } // SSOResponse is a json compatible [proto.SSOResponse]. @@ -132,6 +139,12 @@ type SSOResponse struct { Token string `json:"token,omitempty"` } +// BrowserMFAResponse is a json compatible [proto.BrowserMFAResponse]. +type BrowserMFAResponse struct { + RequestID string `json:"requestId,omitempty"` + WebauthnResponse *wantypes.CredentialAssertionResponse `json:"webauthnResponse,omitempty"` +} + // GetOptionalMFAResponseProtoReq converts response to a type proto.MFAAuthenticateResponse, // if there were any responses set. Otherwise returns nil. func (r *MFAChallengeResponse) GetOptionalMFAResponseProtoReq() (*proto.MFAAuthenticateResponse, error) { @@ -257,6 +270,9 @@ type AuthenticateSSHUserRequest struct { WebauthnChallengeResponse *wantypes.CredentialAssertionResponse `json:"webauthn_challenge_response"` // TOTPCode is a code from the TOTP device. TOTPCode string `json:"totp_code"` + // BrowserMFAResponse is a response from a Browser MFA flow containing a + // webauthn response. + BrowserMFAResponse *BrowserMFAResponse `json:"browser_response,omitempty"` // UserPublicKeys is embedded and holds user SSH and TLS public keys that // should be used as the subject of issued certificates, and optional // hardware key attestation statements for each key. @@ -357,6 +373,9 @@ type SSHLoginMFA struct { SSHLogin // MFAPromptConstructor is a custom MFA prompt constructor to use when prompting for MFA. MFAPromptConstructor mfa.PromptConstructor + // MFACeremonyConstructor is an optional MFA ceremony constructor. + // Currently used for Browser MFA during the login process. + MFACeremonyConstructor mfa.MFACeremonyConstructor // User is the login username. User string // Password is the login password. @@ -405,6 +424,8 @@ type MFAAuthenticateChallenge struct { TOTPChallenge bool `json:"totp_challenge"` // SSOChallenge is an SSO MFA challenge. SSOChallenge *SSOChallenge `json:"sso_challenge"` + // BrowserMFAChallenge is a Browser MFA challenge. + BrowserMFAChallenge *BrowserMFAChallenge `json:"browser_challenge"` } // SSOChallenge is a json compatible [proto.SSOChallenge]. @@ -449,6 +470,25 @@ type TOTPRegisterChallenge struct { QRCode []byte `json:"qrCode"` } +// BrowserMFAChallenge is a json compatible [proto.BrowserMFAChallenge]. +type BrowserMFAChallenge struct { + RequestID string `json:"requestId,omitempty"` +} + +// BrowserChallengeToProto converts an BrowserChallenge to proto format. +func BrowserChallengeToProto(browserChal *BrowserMFAChallenge) *proto.BrowserMFAChallenge { + return &proto.BrowserMFAChallenge{ + RequestId: browserChal.RequestID, + } +} + +// BrowserChallengeFromProto converts a BrowserChallenge to json compatible format +func BrowserChallengeFromProto(browserChal *proto.BrowserMFAChallenge) *BrowserMFAChallenge { + return &BrowserMFAChallenge{ + RequestID: browserChal.RequestId, + } +} + // initClient creates a new client to the HTTPS web proxy. func initClient(proxyAddr string, insecure bool, pool *x509.CertPool, extraHeaders map[string]string, opts ...roundtrip.ClientParam) (*WebClient, *url.URL, error) { log := slog.With(teleport.ComponentKey, teleport.ComponentClient) @@ -506,7 +546,7 @@ func initClient(proxyAddr string, insecure bool, pool *x509.CertPool, extraHeade } // SSHAgentHeadlessLogin begins the headless login ceremony, returning new user certificates if successful. -func SSHAgentHeadlessLogin(ctx context.Context, login SSHLoginHeadless) (*authclient.SSHLoginResponse, error) { +func SSHAgentHeadlessLogin(ctx context.Context, login SSHLoginHeadless) (*authclient.CLILoginResponse, error) { clt, _, err := initClient(login.ProxyAddr, login.Insecure, login.Pool, login.ExtraHeaders) if err != nil { return nil, trace.Wrap(err) @@ -536,7 +576,7 @@ func SSHAgentHeadlessLogin(ctx context.Context, login SSHLoginHeadless) (*authcl return nil, trace.Wrap(err) } - var out authclient.SSHLoginResponse + var out authclient.CLILoginResponse err = json.Unmarshal(re.Bytes(), &out) if err != nil { return nil, trace.Wrap(err) @@ -550,7 +590,7 @@ func SSHAgentHeadlessLogin(ctx context.Context, login SSHLoginHeadless) (*authcl // end user. // // Returns the SSH certificate if authn is successful or an error. -func SSHAgentPasswordlessLogin(ctx context.Context, login SSHLoginPasswordless) (*authclient.SSHLoginResponse, error) { +func SSHAgentPasswordlessLogin(ctx context.Context, login SSHLoginPasswordless) (*authclient.CLILoginResponse, error) { webClient, webURL, err := initClient(login.ProxyAddr, login.Insecure, login.Pool, login.ExtraHeaders) if err != nil { return nil, trace.Wrap(err) @@ -620,7 +660,7 @@ func SSHAgentPasswordlessLogin(ctx context.Context, login SSHLoginPasswordless) return nil, trace.Wrap(err) } - loginResp := &authclient.SSHLoginResponse{} + loginResp := &authclient.CLILoginResponse{} if err := json.Unmarshal(loginRespJSON.Bytes(), loginResp); err != nil { return nil, trace.Wrap(err) } @@ -631,7 +671,7 @@ func SSHAgentPasswordlessLogin(ctx context.Context, login SSHLoginPasswordless) // If the credentials are valid, the proxy will return a challenge. We then // prompt the user to provide 2nd factor and pass the response to the proxy. // If the authentication succeeds, we will get a temporary certificate back. -func SSHAgentMFALogin(ctx context.Context, login SSHLoginMFA) (*authclient.SSHLoginResponse, error) { +func SSHAgentMFALogin(ctx context.Context, login SSHLoginMFA) (*authclient.CLILoginResponse, error) { clt, _, err := initClient(login.ProxyAddr, login.Insecure, login.Pool, login.ExtraHeaders) if err != nil { return nil, trace.Wrap(err) @@ -664,6 +704,11 @@ func SSHAgentMFALogin(ctx context.Context, login SSHLoginMFA) (*authclient.SSHLo challengeResp.TOTPCode = r.TOTP.Code case *proto.MFAAuthenticateResponse_Webauthn: challengeResp.WebauthnChallengeResponse = wantypes.CredentialAssertionResponseFromProto(r.Webauthn) + case *proto.MFAAuthenticateResponse_Browser: + challengeResp.BrowserMFAResponse = &BrowserMFAResponse{ + RequestID: r.Browser.RequestId, + WebauthnResponse: wantypes.CredentialAssertionResponseFromProto(r.Browser.WebauthnResponse), + } default: // No challenge was sent, so we send back just username/password. } @@ -673,7 +718,7 @@ func SSHAgentMFALogin(ctx context.Context, login SSHLoginMFA) (*authclient.SSHLo return nil, trace.Wrap(err) } - loginResp := &authclient.SSHLoginResponse{} + loginResp := &authclient.CLILoginResponse{} return loginResp, trace.Wrap(json.Unmarshal(loginRespJSON.Bytes(), loginResp)) } @@ -684,6 +729,9 @@ func newMFALoginCeremony(clt *WebClient, login SSHLoginMFA) *mfa.Ceremony { User: login.User, Pass: login.Password, } + if req != nil && req.BrowserMFATSHRedirectURL != "" { + beginReq.BrowserMFATSHRedirectURL = req.BrowserMFATSHRedirectURL + } challengeJSON, err := clt.PostJSON(ctx, clt.Endpoint("webapi", "mfa", "login", "begin"), beginReq) if err != nil { return nil, trace.Wrap(err) @@ -702,9 +750,13 @@ func newMFALoginCeremony(clt *WebClient, login SSHLoginMFA) *mfa.Ceremony { if challenge.WebauthnChallenge != nil { chal.WebauthnChallenge = wantypes.CredentialAssertionToProto(challenge.WebauthnChallenge) } + if challenge.BrowserMFAChallenge != nil { + chal.BrowserMFAChallenge = BrowserChallengeToProto(challenge.BrowserMFAChallenge) + } return chal, nil }, - PromptConstructor: login.MFAPromptConstructor, + PromptConstructor: login.MFAPromptConstructor, + MFACeremonyConstructor: login.MFACeremonyConstructor, } } diff --git a/lib/config/fileconf.go b/lib/config/fileconf.go index 688e218f1ace8..61376885457b2 100644 --- a/lib/config/fileconf.go +++ b/lib/config/fileconf.go @@ -1244,6 +1244,13 @@ type AuthenticationConfig struct { // otherwise. Headless *types.BoolOption `yaml:"headless"` + // AllowCLIAuthViaBrowser enables/disables browser-based authentication for + // authenticating CLI sessions. + // When set to false, authentication flows that require a browser will be disabled. + // Defaults to true if the Webauthn is configured, defaults to false + // otherwise. + AllowCLIAuthViaBrowser *types.BoolOption `yaml:"allow_cli_auth_via_browser"` + // DeviceTrust holds settings related to trusted device verification. // Requires Teleport Enterprise. DeviceTrust *DeviceTrust `yaml:"device_trust,omitempty"` @@ -1337,6 +1344,7 @@ func (a *AuthenticationConfig) Parse() (types.AuthPreference, error) { AllowLocalAuth: a.LocalAuth, AllowPasswordless: a.Passwordless, AllowHeadless: a.Headless, + AllowCLIAuthViaBrowser: a.AllowCLIAuthViaBrowser, DeviceTrust: dt, DefaultSessionTTL: a.DefaultSessionTTL, HardwareKey: h, diff --git a/lib/config/fileconf_test.go b/lib/config/fileconf_test.go index 89eb4d100d87d..885ae57379512 100644 --- a/lib/config/fileconf_test.go +++ b/lib/config/fileconf_test.go @@ -485,6 +485,66 @@ func TestAuthenticationSection(t *testing.T) { LastUID: 10, }, }, + }, { + desc: "Local auth with browser authentication enabled", + mutate: func(cfg cfgMap) { + cfg["auth_service"].(cfgMap)["authentication"] = cfgMap{ + "type": "local", + "webauthn": cfgMap{ + "rp_id": "example.com", + }, + "allow_cli_auth_via_browser": "true", + } + }, + expected: &AuthenticationConfig{ + Type: "local", + Webauthn: &Webauthn{ + RPID: "example.com", + }, + AllowCLIAuthViaBrowser: types.NewBoolOption(true), + }, + }, { + desc: "Local auth with browser authentication disabled", + mutate: func(cfg cfgMap) { + cfg["auth_service"].(cfgMap)["authentication"] = cfgMap{ + "type": "local", + "webauthn": cfgMap{ + "rp_id": "example.com", + }, + "allow_cli_auth_via_browser": "false", + } + }, + expected: &AuthenticationConfig{ + Type: "local", + Webauthn: &Webauthn{ + RPID: "example.com", + }, + AllowCLIAuthViaBrowser: types.NewBoolOption(false), + }, + }, { + desc: "Local auth with browser authentication disabled without WebAuthn", + mutate: func(cfg cfgMap) { + cfg["auth_service"].(cfgMap)["authentication"] = cfgMap{ + "type": "local", + "allow_cli_auth_via_browser": "false", + } + }, + expected: &AuthenticationConfig{ + Type: "local", + AllowCLIAuthViaBrowser: types.NewBoolOption(false), + }, + }, { + desc: "Local auth with browser authentication empty string", + mutate: func(cfg cfgMap) { + cfg["auth_service"].(cfgMap)["authentication"] = cfgMap{ + "type": "local", + "allow_cli_auth_via_browser": "", + } + }, + expected: &AuthenticationConfig{ + Type: "local", + AllowCLIAuthViaBrowser: &types.BoolOption{}, + }, }, } for _, tt := range tests { diff --git a/lib/services/identity.go b/lib/services/identity.go index c0c448ac135a0..093f3fe91dc76 100644 --- a/lib/services/identity.go +++ b/lib/services/identity.go @@ -268,9 +268,22 @@ type Identity interface { // GetGithubAuthRequest retrieves Github auth request by the token GetGithubAuthRequest(ctx context.Context, stateToken string) (*types.GithubAuthRequest, error) - // UpsertSSOMFASessionData creates or updates SSO MFA session data in + // UpsertMFASessionData creates or updates MFA session data in // storage, for the purpose of later verifying an MFA authentication attempt. - // SSO MFA session data is expected to expire according to backend settings. + // MFA session data is expected to expire according to backend settings. + // Used for both SSO and Browser MFA. + UpsertMFASessionData(ctx context.Context, sd *MFASessionData) error + + // GetMFASessionData retrieves SSO or Browser MFA session data by ID. + GetMFASessionData(ctx context.Context, sessionID string) (*MFASessionData, error) + + // DeleteMFASessionData deletes SSO or Browser MFA session data by ID. + DeleteMFASessionData(ctx context.Context, sessionID string) error + + // TODO(danielashare): Remove deprecated *SSOMFASessionData functions once teleport.e is using the new functions + // UpsertSSOMFASessionData creates or updates SSO MFA session data in + // storage, for the purpose of later verifying an SSO MFA authentication + // attempt. UpsertSSOMFASessionData(ctx context.Context, sd *SSOMFASessionData) error // GetSSOMFASessionData retrieves SSO MFA session data by ID. diff --git a/lib/services/local/users.go b/lib/services/local/users.go index 0b13599e41fe1..6fa46467efb1b 100644 --- a/lib/services/local/users.go +++ b/lib/services/local/users.go @@ -1953,7 +1953,7 @@ func (s *IdentityService) GetSSODiagnosticInfo(ctx context.Context, authKind str return &req, nil } -func (s *IdentityService) UpsertSSOMFASessionData(ctx context.Context, sd *services.SSOMFASessionData) error { +func (s *IdentityService) UpsertMFASessionData(ctx context.Context, sd *services.MFASessionData) error { switch { case sd == nil: return trace.BadParameter("missing parameter sd") @@ -1979,7 +1979,7 @@ func (s *IdentityService) UpsertSSOMFASessionData(ctx context.Context, sd *servi return trace.Wrap(err) } -func (s *IdentityService) GetSSOMFASessionData(ctx context.Context, sessionID string) (*services.SSOMFASessionData, error) { +func (s *IdentityService) GetMFASessionData(ctx context.Context, sessionID string) (*services.MFASessionData, error) { if sessionID == "" { return nil, trace.BadParameter("missing parameter sessionID") } @@ -1988,11 +1988,11 @@ func (s *IdentityService) GetSSOMFASessionData(ctx context.Context, sessionID st if err != nil { return nil, trace.Wrap(err) } - sd := &services.SSOMFASessionData{} + sd := &services.MFASessionData{} return sd, trace.Wrap(json.Unmarshal(item.Value, sd)) } -func (s *IdentityService) DeleteSSOMFASessionData(ctx context.Context, sessionID string) error { +func (s *IdentityService) DeleteMFASessionData(ctx context.Context, sessionID string) error { if sessionID == "" { return trace.BadParameter("missing parameter sessionID") } @@ -2000,6 +2000,24 @@ func (s *IdentityService) DeleteSSOMFASessionData(ctx context.Context, sessionID return trace.Wrap(s.Delete(ctx, ssoMFASessionDataKey(sessionID))) } +// TODO(danielashare): Remove these aliased functions once `e` no longer references them +func (s *IdentityService) UpsertSSOMFASessionData(ctx context.Context, sd *services.SSOMFASessionData) error { + return trace.Wrap(s.UpsertMFASessionData(ctx, sd)) +} + +func (s *IdentityService) GetSSOMFASessionData(ctx context.Context, sessionID string) (*services.SSOMFASessionData, error) { + sd, err := s.GetMFASessionData(ctx, sessionID) + if err != nil { + return nil, trace.Wrap(err) + } + return sd, nil +} + +// Deprecated: use DeleteMFASessionData. +func (s *IdentityService) DeleteSSOMFASessionData(ctx context.Context, sessionID string) error { + return trace.Wrap(s.DeleteMFASessionData(ctx, sessionID)) +} + func ssoMFASessionDataKey(sessionID string) backend.Key { return backend.NewKey(webPrefix, ssoMFASessionData, sessionID) } diff --git a/lib/services/local/users_test.go b/lib/services/local/users_test.go index 90fe5c1953f4b..8097a9c05500a 100644 --- a/lib/services/local/users_test.go +++ b/lib/services/local/users_test.go @@ -1753,35 +1753,35 @@ func TestIdentityService_SSOMFASessionDataCRUD(t *testing.T) { identity := newIdentityService(t, clockwork.NewFakeClock()) // Verify create. - sd := &services.SSOMFASessionData{ + sd := &services.MFASessionData{ RequestID: "request", Username: "alice", ConnectorID: "saml", ConnectorType: "saml", } - err := identity.UpsertSSOMFASessionData(ctx, sd) + err := identity.UpsertMFASessionData(ctx, sd) require.NoError(t, err) // Verify read. - got, err := identity.GetSSOMFASessionData(ctx, sd.RequestID) + got, err := identity.GetMFASessionData(ctx, sd.RequestID) require.NoError(t, err) if diff := cmp.Diff(sd, got); diff != "" { - t.Fatalf("GetSSOMFASessionData() mismatch (-want +got):\n%s", diff) + t.Fatalf("GetMFASessionData() mismatch (-want +got):\n%s", diff) } // Verify update. sd.Token = "token" - err = identity.UpsertSSOMFASessionData(ctx, sd) + err = identity.UpsertMFASessionData(ctx, sd) require.NoError(t, err) - got, err = identity.GetSSOMFASessionData(ctx, sd.RequestID) + got, err = identity.GetMFASessionData(ctx, sd.RequestID) require.NoError(t, err) if diff := cmp.Diff(sd, got); diff != "" { - t.Fatalf("GetSSOMFASessionData() mismatch (-want +got):\n%s", diff) + t.Fatalf("GetMFASessionData() mismatch (-want +got):\n%s", diff) } // Verify delete. - err = identity.DeleteSSOMFASessionData(ctx, sd.RequestID) + err = identity.DeleteMFASessionData(ctx, sd.RequestID) require.NoError(t, err) - _, err = identity.GetSSOMFASessionData(ctx, sd.RequestID) + _, err = identity.GetMFASessionData(ctx, sd.RequestID) require.True(t, trace.IsNotFound(err)) } diff --git a/lib/services/sso_mfa.go b/lib/services/sso_mfa.go index a43e557fb38f6..6bcb38d12e0eb 100644 --- a/lib/services/sso_mfa.go +++ b/lib/services/sso_mfa.go @@ -20,9 +20,12 @@ package services import "github.com/gravitational/teleport/lib/auth/mfatypes" -// SSOMFASessionData SSO MFA Session data. -type SSOMFASessionData struct { - // RequestID is the ID of the corresponding SSO Auth request, which is used to +// TODO(danielashare): Remove alias once `e` no longer references it +type SSOMFASessionData = MFASessionData + +// MFASessionData is MFA Session data for SSO MFA or Browser MFA. +type MFASessionData struct { + // RequestID is the ID of the corresponding Auth request, which is used to // identity this session. RequestID string `json:"request_id,omitempty"` // Username is the Teleport username. @@ -35,4 +38,7 @@ type SSOMFASessionData struct { ConnectorType string `json:"connector_type,omitempty"` // ChallengeExtensions are Teleport extensions that apply to this SSO MFA session. ChallengeExtensions *mfatypes.ChallengeExtensions `json:"challenge_extensions"` + // TSHRedirectURL is the redirect URL used to return a WebAuthn response back to tsh. + // This is used exclusively by Browser MFA. + TSHRedirectURL string `json:"tsh_redirect_url,omitempty"` } diff --git a/lib/teleterm/clusters/cluster.go b/lib/teleterm/clusters/cluster.go index 3085bbe343536..8115d1e02acc5 100644 --- a/lib/teleterm/clusters/cluster.go +++ b/lib/teleterm/clusters/cluster.go @@ -323,9 +323,13 @@ func (c *Cluster) GetProfileStatusError() error { } // GetProxyHost returns proxy address (hostname:port) of the root cluster, even when called on a -// Cluster that represents a leaf cluster. +// Cluster that represents a leaf cluster. Falls back to WebProxyAddr when the profile status has +// not been loaded yet (e.g., before the first login). func (c *Cluster) GetProxyHost() string { - return c.status.ProxyURL.Host + if c.status.ProxyURL.Host != "" { + return c.status.ProxyURL.Host + } + return c.WebProxyAddr } // HasDeviceTrustExtensions indicates if the cert contains all required diff --git a/lib/teleterm/clusters/cluster_auth.go b/lib/teleterm/clusters/cluster_auth.go index 9f576e31b3bb8..fcbba714b0023 100644 --- a/lib/teleterm/clusters/cluster_auth.go +++ b/lib/teleterm/clusters/cluster_auth.go @@ -142,7 +142,7 @@ func (c *Cluster) updateClientFromPingResponse(ctx context.Context) (*webclient. return pingResp, nil } -type SSHLoginFunc func(context.Context, *keys.PrivateKey) (*authclient.SSHLoginResponse, error) +type SSHLoginFunc func(context.Context, *keys.PrivateKey) (*authclient.CLILoginResponse, error) func (c *Cluster) login(ctx context.Context, sshLoginFunc client.SSHLoginFunc) error { // TODO(alex-kovoy): SiteName needs to be reset if trying to login to a cluster with @@ -187,17 +187,18 @@ func (c *Cluster) login(ctx context.Context, sshLoginFunc client.SSHLoginFunc) e } func (c *Cluster) localMFALogin(user, password string) client.SSHLoginFunc { - return func(ctx context.Context, keyRing *client.KeyRing) (*authclient.SSHLoginResponse, error) { + return func(ctx context.Context, keyRing *client.KeyRing) (*authclient.CLILoginResponse, error) { sshLogin, err := c.clusterClient.NewSSHLogin(keyRing) if err != nil { return nil, trace.Wrap(err) } response, err := client.SSHAgentMFALogin(ctx, client.SSHLoginMFA{ - SSHLogin: sshLogin, - User: user, - Password: password, - MFAPromptConstructor: c.clusterClient.NewMFAPrompt, + SSHLogin: sshLogin, + User: user, + Password: password, + MFAPromptConstructor: c.clusterClient.NewMFAPrompt, + MFACeremonyConstructor: c.clusterClient.NewRedirectorMFACeremony, }) if err != nil { return nil, trace.Wrap(err) @@ -211,7 +212,7 @@ func (c *Cluster) ssoLogin(providerType, providerName string) client.SSHLoginFun } func (c *Cluster) passwordlessLogin(stream api.TerminalService_LoginPasswordlessServer) client.SSHLoginFunc { - return func(ctx context.Context, keyRing *client.KeyRing) (*authclient.SSHLoginResponse, error) { + return func(ctx context.Context, keyRing *client.KeyRing) (*authclient.CLILoginResponse, error) { sshLogin, err := c.clusterClient.NewSSHLogin(keyRing) if err != nil { return nil, trace.Wrap(err) diff --git a/lib/teleterm/clusters/cluster_gateways.go b/lib/teleterm/clusters/cluster_gateways.go index d84189e4b81fd..e13b74e48d17d 100644 --- a/lib/teleterm/clusters/cluster_gateways.go +++ b/lib/teleterm/clusters/cluster_gateways.go @@ -55,7 +55,7 @@ type CreateGatewayParams struct { // CreateGateway creates a gateway func (c *Cluster) CreateGateway(ctx context.Context, params CreateGatewayParams) (gateway.Gateway, error) { c.clusterClient.MFAPromptConstructor = params.MFAPromptConstructor - c.clusterClient.SSOMFACeremonyConstructor = sso.NewConnectMFACeremony + c.clusterClient.MFACeremonyConstructor = sso.NewConnectMFACeremony switch { case params.TargetURI.IsDB(): diff --git a/lib/teleterm/daemon/daemon.go b/lib/teleterm/daemon/daemon.go index cdff2ac53c927..bcc7e197c044c 100644 --- a/lib/teleterm/daemon/daemon.go +++ b/lib/teleterm/daemon/daemon.go @@ -303,7 +303,7 @@ func (s *Service) ResolveClusterURI(uri uri.ResourceURI) (*clusters.Cluster, *cl // Custom MFAPromptConstructor gets removed during the calls to Login and LoginPasswordless RPCs. // Those RPCs assume that the default CLI prompt is in use. clusterClient.MFAPromptConstructor = s.NewMFAPromptConstructor(cluster.URI) - clusterClient.SSOMFACeremonyConstructor = sso.NewConnectMFACeremony + clusterClient.MFACeremonyConstructor = sso.NewConnectMFACeremony return cluster, clusterClient, nil } diff --git a/lib/teleterm/daemon/mfaprompt.go b/lib/teleterm/daemon/mfaprompt.go index 1ebb62c9366dc..939c7eaf048f8 100644 --- a/lib/teleterm/daemon/mfaprompt.go +++ b/lib/teleterm/daemon/mfaprompt.go @@ -73,10 +73,11 @@ func (s *Service) promptAppMFA(ctx context.Context, in *api.PromptMFARequest) (* func (p *mfaPrompt) Run(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { promptOTP := chal.TOTP != nil promptWebauthn := chal.WebauthnChallenge != nil && p.cfg.WebauthnSupported - promptSSO := chal.SSOChallenge != nil && p.cfg.SSOMFACeremony != nil + promptSSO := chal.SSOChallenge != nil && p.cfg.CallbackCeremony != nil + promptBrowserMfa := chal.BrowserMFAChallenge != nil && p.cfg.CallbackCeremony != nil // No prompt to run, no-op. - if !promptOTP && !promptWebauthn && !promptSSO { + if !promptOTP && !promptWebauthn && !promptSSO && !promptBrowserMfa { return &proto.MFAAuthenticateResponse{}, nil } @@ -95,14 +96,15 @@ func (p *mfaPrompt) Run(ctx context.Context, chal *proto.MFAAuthenticateChalleng return resp, trace.Wrap(err) } - return libmfa.HandleConcurrentMFAPrompts(ctx, chal, appPrompt, p.maybePromptWebauthn, p.maybePromptSSO) + return libmfa.HandleConcurrentMFAPrompts(ctx, chal, appPrompt, p.maybePromptWebauthn, p.maybePromptBrowserOrSSO) } // promptApp handles the client modal, cancellation, and TOTP. func (p *mfaPrompt) promptApp(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { promptOTP := chal.TOTP != nil promptWebauthn := chal.WebauthnChallenge != nil && p.cfg.WebauthnSupported - promptSSO := chal.SSOChallenge != nil && p.cfg.SSOMFACeremony != nil + promptSSO := chal.SSOChallenge != nil && p.cfg.CallbackCeremony != nil + promptBrowserMfa := chal.BrowserMFAChallenge != nil && p.cfg.CallbackCeremony != nil scope := p.cfg.Extensions.GetScope() var ssoChallenge *api.SSOChallenge @@ -115,12 +117,20 @@ func (p *mfaPrompt) promptApp(ctx context.Context, chal *proto.MFAAuthenticateCh } } + var browserMfaChallenge *mfav1.BrowserMFAChallenge + if promptBrowserMfa { + browserMfaChallenge = &mfav1.BrowserMFAChallenge{ + RequestId: chal.BrowserMFAChallenge.RequestId, + } + } + resp, err := p.promptAppMFA(ctx, &api.PromptMFARequest{ ClusterUri: p.resourceURI.GetClusterURI().String(), Reason: p.cfg.PromptReason, Totp: promptOTP, Webauthn: promptWebauthn, Sso: ssoChallenge, + Browser: browserMfaChallenge, PerSessionMfa: scope == mfav1.ChallengeScope_CHALLENGE_SCOPE_USER_SESSION, }) if err != nil { @@ -148,12 +158,12 @@ func (p *mfaPrompt) maybePromptWebauthn(ctx context.Context, chal *proto.MFAAuth return resp, nil } -// Prompt SSO if it's a supported method. -func (p *mfaPrompt) maybePromptSSO(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { - if chal.SSOChallenge == nil || p.cfg.SSOMFACeremony == nil { +// Prompt Browser/SSO if it's a supported method. +func (p *mfaPrompt) maybePromptBrowserOrSSO(ctx context.Context, chal *proto.MFAAuthenticateChallenge) (*proto.MFAAuthenticateResponse, error) { + if (chal.SSOChallenge == nil && chal.BrowserMFAChallenge == nil) || p.cfg.CallbackCeremony == nil { return nil, nil } - resp, err := p.cfg.SSOMFACeremony.Run(ctx, chal) + resp, err := p.cfg.CallbackCeremony.Run(ctx, chal) return resp, trace.Wrap(err) } diff --git a/lib/web/apiserver.go b/lib/web/apiserver.go index 860bc297f28e5..5edc32c1f3927 100644 --- a/lib/web/apiserver.go +++ b/lib/web/apiserver.go @@ -1151,6 +1151,8 @@ func (h *Handler) bindDefaultEndpoints() { h.GET("/webapi/headless/:headless_authentication_id", h.WithAuth(h.getHeadless)) h.PUT("/webapi/headless/:headless_authentication_id", h.WithAuth(h.putHeadlessState)) + h.PUT("/webapi/mfa/browser/:request_id", h.WithAuth(h.putBrowserMFA)) + h.GET("/webapi/sites/:site/user-groups", h.WithClusterAuth(h.getUserGroups)) // Fetches the user's preferences @@ -2617,7 +2619,7 @@ func ConstructSSHResponse(response AuthParams) (*url.URL, error) { if err != nil { return nil, trace.Wrap(err) } - consoleResponse := authclient.SSHLoginResponse{ + consoleResponse := authclient.CLILoginResponse{ Username: response.Username, Cert: response.Cert, TLSCert: response.TLSCert, @@ -3099,6 +3101,7 @@ func (h *Handler) getResetPasswordToken(ctx context.Context, tokenID string) (in // // {"user": "alex", "pass": "abcdef123456"} // {"passwordless": true} +// {"user": "alex", "pass": "abcdef123456", "BrowserMFATSHRedirectURL": "http://localhost:12345/callback?secret_key=X"} // // Successful response: // @@ -3130,6 +3133,8 @@ func (h *Handler) mfaLoginBegin(w http.ResponseWriter, r *http.Request, p httpro mfaReq.ChallengeExtensions = &mfav1.ChallengeExtensions{ Scope: mfav1.ChallengeScope_CHALLENGE_SCOPE_LOGIN, } + + mfaReq.BrowserMFATSHRedirectURL = req.BrowserMFATSHRedirectURL } mfaChallenge, err := h.auth.proxyClient.CreateAuthenticateChallenge(r.Context(), mfaReq) diff --git a/lib/web/apiserver_login_test.go b/lib/web/apiserver_login_test.go index dc3eb99f816bd..1d5ccfa9098df 100644 --- a/lib/web/apiserver_login_test.go +++ b/lib/web/apiserver_login_test.go @@ -637,10 +637,10 @@ func configureClusterForMFA(t *testing.T, env *webPack, spec *types.AuthPreferen } } -func validateSSHLoginResponse(t *testing.T, resp []byte, expectedSubjectSSHPub ssh.PublicKey, expectedSubjectTLSPub crypto.PublicKey) *authclient.SSHLoginResponse { +func validateSSHLoginResponse(t *testing.T, resp []byte, expectedSubjectSSHPub ssh.PublicKey, expectedSubjectTLSPub crypto.PublicKey) *authclient.CLILoginResponse { t.Helper() - var loginResp authclient.SSHLoginResponse + var loginResp authclient.CLILoginResponse require.NoError(t, json.Unmarshal(resp, &loginResp)) assert.NotEmpty(t, loginResp.Username) assert.NotEmpty(t, loginResp.HostSigners) diff --git a/lib/web/apiserver_test.go b/lib/web/apiserver_test.go index c070ccb1a3131..5093a6aed538c 100644 --- a/lib/web/apiserver_test.go +++ b/lib/web/apiserver_test.go @@ -3467,7 +3467,7 @@ func TestConstructSSHResponse(t *testing.T) { plaintext, err := key.Open([]byte(rawresp.Query().Get("response"))) require.NoError(t, err) - var resp *authclient.SSHLoginResponse + var resp *authclient.CLILoginResponse err = json.Unmarshal(plaintext, &resp) require.NoError(t, err) require.Equal(t, "foo", resp.Username) @@ -11028,7 +11028,7 @@ func stateTokenFromConsoleLoginResponse(t *testing.T, responseBody []byte) strin // - in a query param // - in a redirect URL // - in an HTML document -func sshLoginResponseFromCallbackResponse(t *testing.T, responseBody io.Reader, secretKey secret.Key) *authclient.SSHLoginResponse { +func sshLoginResponseFromCallbackResponse(t *testing.T, responseBody io.Reader, secretKey secret.Key) *authclient.CLILoginResponse { // First pull the URL from the HTML meta redirect. redirectURL, err := app.GetURLFromMetaRedirect(responseBody) require.NoError(t, err) @@ -11044,7 +11044,7 @@ func sshLoginResponseFromCallbackResponse(t *testing.T, responseBody io.Reader, require.NoError(t, err, "unencrypting github callback response") // Then unmarshal the JSON. - var sshLoginResponse authclient.SSHLoginResponse + var sshLoginResponse authclient.CLILoginResponse require.NoError(t, json.Unmarshal(callbackPlaintext, &sshLoginResponse)) return &sshLoginResponse } diff --git a/lib/web/browser_mfa.go b/lib/web/browser_mfa.go new file mode 100644 index 0000000000000..ebc2d5a39813a --- /dev/null +++ b/lib/web/browser_mfa.go @@ -0,0 +1,69 @@ +// Teleport +// Copyright (C) 2026 Gravitational, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package web + +import ( + "net/http" + + "github.com/gravitational/trace" + "github.com/julienschmidt/httprouter" + + mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" + "github.com/gravitational/teleport/lib/client" + "github.com/gravitational/teleport/lib/httplib" +) + +// putBrowserMFA accepts a webauthn response from a Browser MFA attempt which is +// sent to CompleteBrowserMFAChallenge for verification. Once verified a tsh +// redirect URL with an encrypted webauthn response is returned. +func (h *Handler) putBrowserMFA(_ http.ResponseWriter, r *http.Request, params httprouter.Params, sctx *SessionContext) (any, error) { + requestID := params.ByName("request_id") + if requestID == "" { + return "", trace.BadParameter("request is missing request ID") + } + + var req client.MFAChallengeResponse + if err := httplib.ReadResourceJSON(r, &req); err != nil { + return nil, trace.Wrap(err) + } + + mfaResp, err := req.GetOptionalMFAResponseProtoReq() + if err != nil { + return nil, trace.Wrap(err) + } + + if mfaResp == nil { + return nil, trace.Errorf("mfa response is nil") + } + + clt, err := sctx.GetClient() + if err != nil { + return nil, trace.Wrap(err) + } + + resp, err := clt.MFAServiceClient().CompleteBrowserMFAChallenge(r.Context(), &mfav1.CompleteBrowserMFAChallengeRequest{ + BrowserMfaResponse: &mfav1.BrowserMFAResponse{ + RequestId: requestID, + WebauthnResponse: mfaResp.GetWebauthn(), + }, + }) + if err != nil { + return nil, trace.Wrap(err) + } + + return resp.TshRedirectUrl, nil +} diff --git a/lib/web/desktop.go b/lib/web/desktop.go index 94ce49747c0d1..d4f086b772684 100644 --- a/lib/web/desktop.go +++ b/lib/web/desktop.go @@ -392,7 +392,7 @@ func (h *Handler) performSessionMFACeremony( mfaCeremony := &mfa.Ceremony{ CreateAuthenticateChallenge: sctx.cfg.RootClient.CreateAuthenticateChallenge, - SSOMFACeremonyConstructor: func(_ context.Context) (mfa.SSOMFACeremony, error) { + MFACeremonyConstructor: func(_ context.Context) (mfa.CallbackCeremony, error) { u, err := url.Parse(sso.WebMFARedirect) if err != nil { return nil, trace.Wrap(err) diff --git a/lib/web/mfa.go b/lib/web/mfa.go index e9840d6623a7a..7fdad5736d4ce 100644 --- a/lib/web/mfa.go +++ b/lib/web/mfa.go @@ -176,6 +176,7 @@ type CreateAuthenticateChallengeRequest struct { ChallengeAllowReuse bool `json:"challenge_allow_reuse"` UserVerificationRequirement string `json:"user_verification_requirement"` ProxyAddress string `json:"proxy_address"` + BrowserMFARequestID string `json:"browser_mfa_request_id"` } // createAuthenticateChallengeHandle creates and returns MFA authentication challenges for the user in context (logged in user). @@ -253,18 +254,27 @@ func (h *Handler) createAuthenticateChallengeHandle(w http.ResponseWriter, r *ht query.Set("channel_id", channelID) ssoClientRedirectURL.RawQuery = query.Encode() - chal, err := clt.CreateAuthenticateChallenge(ctx, &proto.CreateAuthenticateChallengeRequest{ - Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ - ContextUser: &proto.ContextUser{}, - }, - MFARequiredCheck: mfaRequiredCheckProto, - ChallengeExtensions: &mfav1.ChallengeExtensions{ + // If BrowserMFARequestID is set, don't set the challenge extensions. + // They will be gotten from the stored MFASession on the backend and + // applied to the challenge. + var challengeExtensions *mfav1.ChallengeExtensions + if req.BrowserMFARequestID == "" { + challengeExtensions = &mfav1.ChallengeExtensions{ Scope: mfav1.ChallengeScope(req.ChallengeScope), AllowReuse: allowReuse, UserVerificationRequirement: req.UserVerificationRequirement, + } + } + + chal, err := clt.CreateAuthenticateChallenge(ctx, &proto.CreateAuthenticateChallengeRequest{ + Request: &proto.CreateAuthenticateChallengeRequest_ContextUser{ + ContextUser: &proto.ContextUser{}, }, + MFARequiredCheck: mfaRequiredCheckProto, + ChallengeExtensions: challengeExtensions, SSOClientRedirectURL: ssoClientRedirectURL.String(), ProxyAddress: req.ProxyAddress, + BrowserMFARequestID: req.BrowserMFARequestID, }) if err != nil { return nil, trace.Wrap(err) @@ -647,5 +657,8 @@ func makeAuthenticateChallenge(protoChal *proto.MFAAuthenticateChallenge, ssoCha chal.SSOChallenge = client.SSOChallengeFromProto(protoChal.GetSSOChallenge()) chal.SSOChallenge.ChannelID = ssoChannelID } + if protoChal.GetBrowserMFAChallenge() != nil { + chal.BrowserMFAChallenge = client.BrowserChallengeFromProto(protoChal.GetBrowserMFAChallenge()) + } return chal } diff --git a/lib/web/sessions.go b/lib/web/sessions.go index 32c7d138a4946..a7896a7e5de6f 100644 --- a/lib/web/sessions.go +++ b/lib/web/sessions.go @@ -50,6 +50,7 @@ import ( apiutils "github.com/gravitational/teleport/api/utils" apisshutils "github.com/gravitational/teleport/api/utils/sshutils" "github.com/gravitational/teleport/lib/auth/authclient" + "github.com/gravitational/teleport/lib/auth/webauthntypes" "github.com/gravitational/teleport/lib/authz" "github.com/gravitational/teleport/lib/client" "github.com/gravitational/teleport/lib/modules" @@ -953,7 +954,7 @@ func (s *sessionCache) AuthenticateWebUser( func (s *sessionCache) AuthenticateSSHUser( ctx context.Context, c client.AuthenticateSSHUserRequest, clientMeta *authclient.ForwardedClientMetadata, -) (*authclient.SSHLoginResponse, error) { +) (*authclient.CLILoginResponse, error) { authReq := authclient.AuthenticateUserRequest{ Username: c.User, Scope: c.Scope, @@ -973,6 +974,12 @@ func (s *sessionCache) AuthenticateSSHUser( Token: c.TOTPCode, } } + if c.BrowserMFAResponse != nil { + authReq.BrowserMFA = &proto.BrowserMFAResponse{ + RequestId: c.BrowserMFAResponse.RequestID, + WebauthnResponse: webauthntypes.CredentialAssertionResponseToProto(c.BrowserMFAResponse.WebauthnResponse), + } + } return s.proxyClient.AuthenticateSSHUser(ctx, authclient.AuthenticateSSHRequest{ AuthenticateUserRequest: authReq, CompatibilityMode: c.Compatibility, diff --git a/lib/web/terminal.go b/lib/web/terminal.go index a0eb5dc622690..7eb0fcd6d9805 100644 --- a/lib/web/terminal.go +++ b/lib/web/terminal.go @@ -628,7 +628,7 @@ func newMFACeremony(stream *terminal.WSStream, createAuthenticateChallenge mfa.C return &mfa.Ceremony{ CreateAuthenticateChallenge: createAuthenticateChallenge, - SSOMFACeremonyConstructor: func(ctx context.Context) (mfa.SSOMFACeremony, error) { + MFACeremonyConstructor: func(ctx context.Context) (mfa.CallbackCeremony, error) { u, err := url.Parse(sso.WebMFARedirect) if err != nil { diff --git a/proto/teleport/lib/teleterm/v1/tshd_events_service.proto b/proto/teleport/lib/teleterm/v1/tshd_events_service.proto index ad06c8fbf8bda..a9de43fb28f22 100644 --- a/proto/teleport/lib/teleterm/v1/tshd_events_service.proto +++ b/proto/teleport/lib/teleterm/v1/tshd_events_service.proto @@ -21,6 +21,7 @@ syntax = "proto3"; package teleport.lib.teleterm.v1; import "teleport/lib/teleterm/v1/app.proto"; +import "teleport/mfa/v1/challenge.proto"; option go_package = "github.com/gravitational/teleport/gen/proto/go/teleport/lib/teleterm/v1;teletermv1"; @@ -191,6 +192,8 @@ message PromptMFARequest { // per-session MFA but we may still need to know that the user has TOTP // configured as an option. bool per_session_mfa = 7; + // BrowserMFAChallenge is sent when browser-based MFA is supported. + teleport.mfa.v1.BrowserMFAChallenge browser = 8; } // SSOChallenge contains SSO challenge details. diff --git a/tool/tctl/common/client/auth.go b/tool/tctl/common/client/auth.go index 1d05b8195c438..fd83af4c61f82 100644 --- a/tool/tctl/common/client/auth.go +++ b/tool/tctl/common/client/auth.go @@ -39,6 +39,7 @@ import ( "github.com/gravitational/teleport/lib/utils" "github.com/gravitational/teleport/tool/common" tctlcfg "github.com/gravitational/teleport/tool/tctl/common/config" + tctlmfa "github.com/gravitational/teleport/tool/tctl/common/mfa" ) // InitFunc initiates connection to auth service, makes ping request and return the client instance. @@ -98,13 +99,20 @@ func GetInitFunc(ccf tctlcfg.GlobalCLIFlags, cfg *servicecfg.Config) InitFunc { return nil, nil, trace.NewAggregate(err, client.Close()) } proxyAddr := resp.ProxyPublicAddr + mfaOpts, err := tctlmfa.ParseMFAMode(ccf.MFAMode) + if err != nil { + return nil, nil, trace.Wrap(err) + } client.SetMFAPromptConstructor(func(opts ...mfa.PromptOpt) mfa.Prompt { promptCfg := libmfa.NewPromptConfig(proxyAddr, opts...) + promptCfg.AuthenticatorAttachment = mfaOpts.AuthenticatorAttachment return libmfa.NewCLIPrompt(&libmfa.CLIPromptConfig{ - PromptConfig: *promptCfg, + PromptConfig: *promptCfg, + PreferSSO: mfaOpts.PreferSSO, + PreferBrowser: mfaOpts.PreferBrowser, }) }) - client.SetSSOMFACeremonyConstructor(func(ctx context.Context) (mfa.SSOMFACeremony, error) { + client.SetMFACeremonyConstructor(func(ctx context.Context) (mfa.CallbackCeremony, error) { rdConfig := sso.RedirectorConfig{ ProxyAddr: proxyAddr, } diff --git a/tool/tctl/common/config/global.go b/tool/tctl/common/config/global.go index 33e67aed92d00..8279003b0962d 100644 --- a/tool/tctl/common/config/global.go +++ b/tool/tctl/common/config/global.go @@ -56,6 +56,8 @@ type GlobalCLIFlags struct { // Insecure, when set, skips validation of server TLS certificate when // connecting through a proxy (specified in AuthServerAddr). Insecure bool + // MFAMode is the preferred mode for MFA assertions. + MFAMode string } // ApplyConfig takes configuration values from the config file and applies them diff --git a/tool/tctl/common/mfa/mfa_modes.go b/tool/tctl/common/mfa/mfa_modes.go new file mode 100644 index 0000000000000..0c295d6d00408 --- /dev/null +++ b/tool/tctl/common/mfa/mfa_modes.go @@ -0,0 +1,64 @@ +// Teleport +// Copyright (C) 2026 Gravitational, Inc. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package mfa + +import ( + "fmt" + + wancli "github.com/gravitational/teleport/lib/auth/webauthncli" +) + +const ( + // mfaModeAuto automatically chooses the best MFA device(s), without any + // restrictions. + MFAModeAuto = "auto" + // MFAModeCrossPlatform utilizes only cross-platform devices, such as + // pluggable hardware keys. + // Implies Webauthn. + MFAModeCrossPlatform = "cross-platform" + // MFAModePlatform utilizes only platform devices, such as Touch ID. + // Implies Webauthn. + MFAModePlatform = "platform" + // MFAModeSSO utilizes only SSO devices. + MFAModeSSO = "sso" + // MFAModeBrowser utilizes browser-based WebAuthn MFA. + MFAModeBrowser = "browser" +) + +type MFAModeOpts struct { + AuthenticatorAttachment wancli.AuthenticatorAttachment + PreferSSO bool + PreferBrowser bool +} + +func ParseMFAMode(mode string) (*MFAModeOpts, error) { + opts := &MFAModeOpts{} + switch mode { + case "", MFAModeAuto: + case MFAModeCrossPlatform: + opts.AuthenticatorAttachment = wancli.AttachmentCrossPlatform + case MFAModePlatform: + opts.AuthenticatorAttachment = wancli.AttachmentPlatform + case MFAModeSSO: + opts.PreferSSO = true + case MFAModeBrowser: + opts.PreferBrowser = true + default: + return nil, fmt.Errorf("invalid MFA mode: %q", mode) + } + return opts, nil +} diff --git a/tool/tctl/common/tctl.go b/tool/tctl/common/tctl.go index 916edf6cd6e4e..6197adab29d8d 100644 --- a/tool/tctl/common/tctl.go +++ b/tool/tctl/common/tctl.go @@ -41,6 +41,7 @@ import ( "github.com/gravitational/teleport/tool/common" commonclient "github.com/gravitational/teleport/tool/tctl/common/client" tctlcfg "github.com/gravitational/teleport/tool/tctl/common/config" + "github.com/gravitational/teleport/tool/tctl/common/mfa" ) const ( @@ -52,6 +53,7 @@ const ( const ( identityFileEnvVar = "TELEPORT_IDENTITY_FILE" authAddrEnvVar = "TELEPORT_AUTH_SERVER" + mfaModeEnvVar = "TELEPORT_MFA_MODE" ) // CLICommand is an interface that must be implemented by every top-level CLI command. @@ -163,6 +165,11 @@ func TryRun(ctx context.Context, commands []CLICommand, args []string) error { StringVar(&ccf.IdentityFilePath) app.Flag("insecure", "When specifying a proxy address in --auth-server, do not verify its TLS certificate. Danger: any data you send can be intercepted or modified by an attacker."). BoolVar(&ccf.Insecure) + modes := []string{mfa.MFAModeAuto, mfa.MFAModeCrossPlatform, mfa.MFAModePlatform, mfa.MFAModeSSO, mfa.MFAModeBrowser} + app.Flag("mfa-mode", fmt.Sprintf("Preferred mode for MFA assertions (%v).", strings.Join(modes, ", "))). + Default(mfa.MFAModeAuto). + Envar(mfaModeEnvVar). + EnumVar(&ccf.MFAMode, modes...) app.HelpFlag.Short('h') // parse CLI commands+flags: diff --git a/tool/tctl/common/tctl_test.go b/tool/tctl/common/tctl_test.go index b060f4185227c..e214ef75b5b34 100644 --- a/tool/tctl/common/tctl_test.go +++ b/tool/tctl/common/tctl_test.go @@ -232,6 +232,9 @@ func TestConnect(t *testing.T) { // set tsh home to a fake path so that the existence of a real // ~/.tsh does not interfere with the test result. cfg.TeleportHome = t.TempDir() + // set data dir to a fake path so that the existence of a real + // /var/lib/teleport does not interfere with the test result. + cfg.DataDir = t.TempDir() if tc.modifyConfig != nil { tc.modifyConfig(cfg) } diff --git a/tool/tctl/sso/tester/command.go b/tool/tctl/sso/tester/command.go index 6ee92757c77e3..46a74b8bce3bf 100644 --- a/tool/tctl/sso/tester/command.go +++ b/tool/tctl/sso/tester/command.go @@ -186,7 +186,7 @@ type AuthRequestInfo struct { // SSOLoginConsoleRequestFn allows customizing issuance of SSOLoginConsoleReq. Optional. type SSOLoginConsoleRequestFn func(req client.SSOLoginConsoleReq) (*client.SSOLoginConsoleResponse, error) -func (cmd *SSOTestCommand) runSSOLoginFlow(ctx context.Context, connectorType string, c *authclient.Client, initiateSSOLoginFn SSOLoginConsoleRequestFn) (*authclient.SSHLoginResponse, error) { +func (cmd *SSOTestCommand) runSSOLoginFlow(ctx context.Context, connectorType string, c *authclient.Client, initiateSSOLoginFn SSOLoginConsoleRequestFn) (*authclient.CLILoginResponse, error) { proxies, err := clientutils.CollectWithFallback(ctx, c.ListProxyServers, func(context.Context) ([]types.Server, error) { //nolint:staticcheck // TODO(kiosion) DELETE IN 21.0.0 return c.GetProxies() @@ -254,7 +254,7 @@ func GetDiagMessage(present bool, show bool, msg string) string { return "" } -func (cmd *SSOTestCommand) reportLoginResult(authKind string, diag *types.SSODiagnosticInfo, infoErr error, loginResponse *authclient.SSHLoginResponse, loginErr error) (errResult error) { +func (cmd *SSOTestCommand) reportLoginResult(authKind string, diag *types.SSODiagnosticInfo, infoErr error, loginResponse *authclient.CLILoginResponse, loginErr error) (errResult error) { success := diag != nil && diag.Success // check for errors diff --git a/tool/tsh/common/tsh.go b/tool/tsh/common/tsh.go index 542c8e9fb572d..fad948a2d53bb 100644 --- a/tool/tsh/common/tsh.go +++ b/tool/tsh/common/tsh.go @@ -133,6 +133,8 @@ const ( mfaModeOTP = "otp" // mfaModeSSO utilizes only SSO devices. mfaModeSSO = "sso" + // mfaModeBrowser utilizes browser-based WebAuthn MFA via local server. + mfaModeBrowser = "browser" ) const ( @@ -948,8 +950,8 @@ func Run(ctx context.Context, args []string, opts ...CliOption) error { app.Flag("bind-addr", "Override host:port used when opening a browser for cluster logins").Envar(bindAddrEnvVar).StringVar(&cf.BindAddr) app.Flag("callback", "Override the base URL (host:port) of the link shown when opening a browser for cluster logins. Must be used with --bind-addr.").StringVar(&cf.CallbackAddr) app.Flag("browser-login", browserHelp).Hidden().Envar(browserEnvVar).StringVar(&cf.Browser) - modes := []string{mfaModeAuto, mfaModeCrossPlatform, mfaModePlatform, mfaModeOTP, mfaModeSSO} - app.Flag("mfa-mode", fmt.Sprintf("Preferred mode for MFA and Passwordless assertions (%v)", strings.Join(modes, ", "))). + modes := []string{mfaModeAuto, mfaModeCrossPlatform, mfaModePlatform, mfaModeOTP, mfaModeSSO, mfaModeBrowser} + app.Flag("mfa-mode", fmt.Sprintf("Preferred mode for MFA and Passwordless assertions (%v).", strings.Join(modes, ", "))). Default(mfaModeAuto). Envar(mfaModeEnvVar). EnumVar(&cf.MFAMode, modes...) @@ -5106,6 +5108,7 @@ func loadClientConfigFromCLIConf(cf *CLIConf, proxy string) (*client.Config, err c.AuthenticatorAttachment = mfaOpts.AuthenticatorAttachment c.PreferOTP = mfaOpts.PreferOTP c.PreferSSO = mfaOpts.PreferSSO + c.PreferBrowser = mfaOpts.PreferBrowser // If agent forwarding was specified on the command line enable it. c.ForwardAgent = options.ForwardAgent @@ -5328,6 +5331,7 @@ type mfaModeOpts struct { AuthenticatorAttachment wancli.AuthenticatorAttachment PreferOTP bool PreferSSO bool + PreferBrowser bool } func parseMFAMode(mode string) (*mfaModeOpts, error) { @@ -5342,6 +5346,8 @@ func parseMFAMode(mode string) (*mfaModeOpts, error) { opts.PreferOTP = true case mfaModeSSO: opts.PreferSSO = true + case mfaModeBrowser: + opts.PreferBrowser = true default: return nil, fmt.Errorf("invalid MFA mode: %q", mode) } diff --git a/tool/tsh/common/tsh_test.go b/tool/tsh/common/tsh_test.go index 5b9d79d257766..2b80c07d2d413 100644 --- a/tool/tsh/common/tsh_test.go +++ b/tool/tsh/common/tsh_test.go @@ -170,7 +170,7 @@ func handleReexec() { // is re-executed. if addr := os.Getenv(tshBinMockHeadlessAddrEnv); addr != "" { runOpts = append(runOpts, func(c *CLIConf) error { - c.MockHeadlessLogin = func(ctx context.Context, keyRing *client.KeyRing) (*authclient.SSHLoginResponse, error) { + c.MockHeadlessLogin = func(ctx context.Context, keyRing *client.KeyRing) (*authclient.CLILoginResponse, error) { conn, err := net.Dial("tcp", addr) if err != nil { return nil, trace.Wrap(err, "dialing mock headless server") @@ -204,7 +204,7 @@ func handleReexec() { if err != nil { return nil, trace.Wrap(err, "reading reply from mock headless server") } - var loginResp authclient.SSHLoginResponse + var loginResp authclient.CLILoginResponse if err := json.Unmarshal(reply, &loginResp); err != nil { return nil, trace.Wrap(err, "decoding reply from mock headless server") } @@ -1623,6 +1623,7 @@ func TestSSHOnMultipleNodes(t *testing.T) { Webauthn: &types.Webauthn{ RPID: cluster, }, + AllowCLIAuthViaBrowser: types.NewBoolOption(false), }, } } @@ -1783,7 +1784,8 @@ func TestSSHOnMultipleNodes(t *testing.T) { Webauthn: &types.Webauthn{ RPID: "localhost", }, - RequireMFAType: types.RequireMFAType_SESSION, + RequireMFAType: types.RequireMFAType_SESSION, + AllowCLIAuthViaBrowser: types.NewBoolOption(false), }, }, proxyAddr: rootProxyAddr.String(), @@ -1811,7 +1813,8 @@ func TestSSHOnMultipleNodes(t *testing.T) { Webauthn: &types.Webauthn{ RPID: "localhost", }, - RequireMFAType: types.RequireMFAType_SESSION, + RequireMFAType: types.RequireMFAType_SESSION, + AllowCLIAuthViaBrowser: types.NewBoolOption(false), }, }, proxyAddr: rootProxyAddr.String(), @@ -1836,7 +1839,8 @@ func TestSSHOnMultipleNodes(t *testing.T) { Webauthn: &types.Webauthn{ RPID: "localhost", }, - RequireMFAType: types.RequireMFAType_SESSION, + RequireMFAType: types.RequireMFAType_SESSION, + AllowCLIAuthViaBrowser: types.NewBoolOption(false), }, }, proxyAddr: rootProxyAddr.String(), @@ -1856,6 +1860,7 @@ func TestSSHOnMultipleNodes(t *testing.T) { Webauthn: &types.Webauthn{ RPID: "localhost", }, + AllowCLIAuthViaBrowser: types.NewBoolOption(false), }, }, proxyAddr: rootProxyAddr.String(), @@ -1928,6 +1933,7 @@ func TestSSHOnMultipleNodes(t *testing.T) { Webauthn: &types.Webauthn{ RPID: "localhost", }, + AllowCLIAuthViaBrowser: types.NewBoolOption(false), }, }, proxyAddr: rootProxyAddr.String(), @@ -1953,6 +1959,7 @@ func TestSSHOnMultipleNodes(t *testing.T) { Webauthn: &types.Webauthn{ RPID: "localhost", }, + AllowCLIAuthViaBrowser: types.NewBoolOption(false), }, }, proxyAddr: rootProxyAddr.String(), @@ -1977,6 +1984,7 @@ func TestSSHOnMultipleNodes(t *testing.T) { Webauthn: &types.Webauthn{ RPID: "localhost", }, + AllowCLIAuthViaBrowser: types.NewBoolOption(false), }, }, proxyAddr: rootProxyAddr.String(), @@ -2145,6 +2153,11 @@ func TestSSHOnMultipleNodes(t *testing.T) { // so we can assert how many times sign was called. device.SetCounter(0) + // Sleep before attempting to access the nodes to give them time to show + // up on the server, otherwise a `no target host specified` error is returned. + // 400ms was the lowest sleep that consistently fixed the test. + time.Sleep(400 * time.Millisecond) + args := []string{"ssh", "-d", "--insecure"} if tt.headless { args = append(args, "--headless", "--proxy", tt.proxyAddr, "--user", user.GetName()) @@ -2156,18 +2169,22 @@ func TestSSHOnMultipleNodes(t *testing.T) { } args = append(args, tt.target, "echo", "test", "&&", "echo", "error", ">&2") - err = Run(ctx, - args, - setHomePath(tmpHomePath), - func(conf *CLIConf) error { - conf.overrideStdin = stdin - conf.OverrideStdout = stdout - conf.overrideStderr = stderr - conf.MockHeadlessLogin = mockHeadlessLogin(t, tt.auth, user) - conf.WebauthnLogin = tt.webauthnLogin - return nil - }, - ) + var runOpts []CliOption + runOpts = append(runOpts, setHomePath(tmpHomePath)) + // Only add SSO mock for non-headless tests + if !tt.headless { + runOpts = append(runOpts, setMockSSOLogin(tt.auth, user, connector.GetName())) + } + runOpts = append(runOpts, func(conf *CLIConf) error { + conf.overrideStdin = stdin + conf.OverrideStdout = stdout + conf.overrideStderr = stderr + conf.MockHeadlessLogin = mockHeadlessLogin(t, tt.auth, user) + conf.WebauthnLogin = tt.webauthnLogin + return nil + }) + + err = Run(ctx, args, runOpts...) tt.errAssertion(t, err) tt.stdoutAssertion(t, stdout.String()) @@ -4507,7 +4524,7 @@ func mockConnector(t *testing.T) types.OIDCConnector { } func mockSSOLogin(authServer *auth.Server, user types.User) client.SSOLoginFunc { - return func(ctx context.Context, connectorID string, keyRing *client.KeyRing, protocol string) (*authclient.SSHLoginResponse, error) { + return func(ctx context.Context, connectorID string, keyRing *client.KeyRing, protocol string) (*authclient.CLILoginResponse, error) { // generate certificates for our user clusterName, err := authServer.GetClusterName(ctx) if err != nil { @@ -4542,7 +4559,7 @@ func mockSSOLogin(authServer *auth.Server, user types.User) client.SSOLoginFunc } // build login response - return &authclient.SSHLoginResponse{ + return &authclient.CLILoginResponse{ Username: user.GetName(), Cert: sshCert, TLSCert: tlsCert, @@ -4552,7 +4569,7 @@ func mockSSOLogin(authServer *auth.Server, user types.User) client.SSOLoginFunc } func mockHeadlessLogin(t *testing.T, authServer *auth.Server, user types.User) client.SSHLoginFunc { - return func(ctx context.Context, keyRing *client.KeyRing) (*authclient.SSHLoginResponse, error) { + return func(ctx context.Context, keyRing *client.KeyRing) (*authclient.CLILoginResponse, error) { // generate certificates for our user clusterName, err := authServer.GetClusterName(ctx) require.NoError(t, err) @@ -4577,7 +4594,7 @@ func mockHeadlessLogin(t *testing.T, authServer *auth.Server, user types.User) c require.NoError(t, err) // build login response - return &authclient.SSHLoginResponse{ + return &authclient.CLILoginResponse{ Username: user.GetName(), Cert: sshCert, TLSCert: tlsCert, diff --git a/web/packages/design/src/CardError/CardError.jsx b/web/packages/design/src/CardError/CardError.jsx index 76b2b1564fb5e..15262ad844b66 100644 --- a/web/packages/design/src/CardError/CardError.jsx +++ b/web/packages/design/src/CardError/CardError.jsx @@ -121,3 +121,10 @@ export const LogoutFailed = ({ message, loginUrl }) => ( const HyperLink = styled.a` color: ${({ theme }) => theme.colors.buttons.link.default}; `; + +export const BadRequest = ({ message, ...rest }) => ( + +
400 Bad Request
+ +
+); diff --git a/web/packages/design/src/CardError/index.js b/web/packages/design/src/CardError/index.js index c35217bd9a008..422add8bb3615 100644 --- a/web/packages/design/src/CardError/index.js +++ b/web/packages/design/src/CardError/index.js @@ -23,7 +23,16 @@ import CardError, { LogoutFailed, NotFound, Offline, + BadRequest, } from './CardError'; export default CardError; -export { Failed, LoginFailed, AccessDenied, NotFound, Offline, LogoutFailed }; +export { + Failed, + LoginFailed, + AccessDenied, + NotFound, + Offline, + LogoutFailed, + BadRequest, +}; diff --git a/web/packages/shared/redirects/index.ts b/web/packages/shared/redirects/index.ts index 616f1096cdd21..1771d970ce758 100644 --- a/web/packages/shared/redirects/index.ts +++ b/web/packages/shared/redirects/index.ts @@ -17,5 +17,6 @@ */ import { processRedirectUri } from './processRedirectUri'; +import { validateClientRedirect } from './urlValidation'; -export { processRedirectUri }; +export { processRedirectUri, validateClientRedirect }; diff --git a/web/packages/shared/redirects/urlValidation.test.ts b/web/packages/shared/redirects/urlValidation.test.ts new file mode 100644 index 0000000000000..3ee3e52421cf0 --- /dev/null +++ b/web/packages/shared/redirects/urlValidation.test.ts @@ -0,0 +1,54 @@ +/** + * Teleport + * Copyright (C) 2026 Gravitational, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import { validateClientRedirect } from './urlValidation'; + +describe('validateClientRedirect', () => { + test.each([ + 'http://localhost:12345?response=abc', + 'https://localhost:12345?response=abc', + 'http://127.0.0.1:12345?response=abc', + 'http://[::1]:12345?response=abc', + ])('accepts loopback URL: %s', url => { + expect(() => validateClientRedirect(url)).not.toThrow(); + }); + + test('rejects empty URL', () => { + expect(() => validateClientRedirect('')).toThrow( + 'redirect URL must not be empty' + ); + }); + + test('rejects non-local address', () => { + expect(() => + validateClientRedirect('http://example.com:12345?response=abc') + ).toThrow('example.com is not a valid local address'); + }); + + test('rejects unsupported protocol', () => { + expect(() => + validateClientRedirect('ftp://localhost:12345?response=abc') + ).toThrow('ftp: is not a valid protocol'); + }); + + test('rejects URL with credentials', () => { + expect(() => + validateClientRedirect('http://user:pass@localhost:12345?response=abc') + ).toThrow('redirect URL must not contain credentials'); + }); +}); diff --git a/web/packages/shared/redirects/urlValidation.ts b/web/packages/shared/redirects/urlValidation.ts new file mode 100644 index 0000000000000..9ac4142d9f9e7 --- /dev/null +++ b/web/packages/shared/redirects/urlValidation.ts @@ -0,0 +1,63 @@ +/** + * Teleport + * Copyright (C) 2026 Gravitational, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +const ALLOWED_HOSTS = ['localhost', '127.0.0.1', '[::1]']; + +/** + * Validates that a redirect URL points to a valid local address, uses an + * allowed protocol, and does not expose URL-based credentials. + * + * This function is intended for validating client-side redirect URLs used in + * flows such as browser MFA, where the redirect target must be a local address + * (e.g. tsh, tctl etc) rather than an arbitrary external URL. + * + * Throws an error if any of the following conditions are not met: + * - The URL must not be empty. + * - The hostname must be one of the allowed local hosts: localhost, 127.0.0.1, or [::1]. + * - The protocol must be http: or https:. + * - The URL must not contain a username or password. + * + * @param url - The redirect URL string to validate. + * @throws {Error} If the URL is empty, has a disallowed host, uses an invalid protocol, + * or contains embedded credentials. + * + * @example + * validateClientRedirect('http://localhost:8080/callback') // valid, does not throw + * validateClientRedirect('http://evil.com/callback') // throws: not a valid local address + * validateClientRedirect('ftp://localhost/callback') // throws: not a valid protocol + * validateClientRedirect('http://user:pass@localhost/') // throws: must not contain credentials + */ +export function validateClientRedirect(url: string) { + if (url === '') { + throw new Error('redirect URL must not be empty'); + } + + const parsedUrl = new URL(url); + + if (!ALLOWED_HOSTS.includes(parsedUrl.hostname)) { + throw new Error(`${parsedUrl.hostname} is not a valid local address`); + } + + if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') { + throw new Error(`${parsedUrl.protocol} is not a valid protocol`); + } + + if (parsedUrl.username || parsedUrl.password) { + throw new Error('redirect URL must not contain credentials'); + } +} diff --git a/web/packages/teleport/src/BrowserMFA/BrowserMFA.story.tsx b/web/packages/teleport/src/BrowserMFA/BrowserMFA.story.tsx new file mode 100644 index 0000000000000..97d54dda9ace9 --- /dev/null +++ b/web/packages/teleport/src/BrowserMFA/BrowserMFA.story.tsx @@ -0,0 +1,37 @@ +/** + * Teleport + * Copyright (C) 2026 Gravitational, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import { BrowserMfaAccessDenied, BrowserMfaProcessing } from './BrowserMFA'; + +export default { + title: 'Teleport/BrowserMFA', +}; + +export function Processing() { + return ; +} + +export function AccessDenied() { + return ; +} + +export function AccessDeniedWithLongMessage() { + return ( + + ); +} diff --git a/web/packages/teleport/src/BrowserMFA/BrowserMFA.test.tsx b/web/packages/teleport/src/BrowserMFA/BrowserMFA.test.tsx new file mode 100644 index 0000000000000..d25ad4c238533 --- /dev/null +++ b/web/packages/teleport/src/BrowserMFA/BrowserMFA.test.tsx @@ -0,0 +1,140 @@ +/** + * Teleport + * Copyright (C) 2026 Gravitational, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import { MemoryRouter, Route } from 'react-router'; + +import { render, screen, waitFor } from 'design/utils/testing'; +import { validateClientRedirect } from 'shared/redirects/urlValidation'; + +import { BrowserMfa } from 'teleport/BrowserMFA/BrowserMFA'; +import cfg from 'teleport/config'; +import { useMfa, shouldShowMfaPrompt } from 'teleport/lib/useMfa'; +import auth from 'teleport/services/auth'; + +const mockGetChallengeResponse = jest.fn(); +const mockSubmit = jest.fn(); + +jest.mock('teleport/lib/useMfa', () => ({ + useMfa: jest.fn(), + shouldShowMfaPrompt: jest.fn(), +})); + +jest.mock('shared/redirects/urlValidation', () => ({ + validateClientRedirect: jest.fn((url: string) => url), +})); + +type SetupOptions = { + showMFAPrompt?: boolean; + path?: string; + onRedirect?: (url: string) => void; + browserMfaPutResponse?: Promise; + validateRedirect?: (url: string) => string; +}; + +function setup({ + showMFAPrompt = false, + path = '/web/mfa/browser/12345', + onRedirect = jest.fn(), + browserMfaPutResponse = Promise.resolve( + 'http://localhost:12345?response=abc' + ), + validateRedirect = (url: string) => url, +}: SetupOptions = {}) { + (shouldShowMfaPrompt as jest.Mock).mockReturnValue(showMFAPrompt); + (validateClientRedirect as jest.Mock).mockImplementation(validateRedirect); + + mockGetChallengeResponse.mockResolvedValue({ webauthn_response: {} }); + + jest + .spyOn(auth, 'browserMfaPut') + .mockImplementation(() => browserMfaPutResponse); + + render( + + + + + + ); +} + +describe('BrowserMFA', () => { + beforeEach(() => { + jest.clearAllMocks(); + (useMfa as jest.Mock).mockReturnValue({ + getChallengeResponse: mockGetChallengeResponse, + attempt: { status: '' }, + challenge: null, + submit: mockSubmit, + }); + }); + + test('shows MFA prompt', async () => { + setup({ showMFAPrompt: true }); + + expect(await screen.findByText('Verify Your Identity')).toBeInTheDocument(); + }); + + test('calls auth.browserMfaPut with the request ID from the URL', async () => { + const onRedirect = jest.fn(); + setup({ onRedirect }); + + await waitFor(() => expect(auth.browserMfaPut).toHaveBeenCalled()); + + expect(auth.browserMfaPut).toHaveBeenCalledWith( + expect.anything(), + '12345', + expect.any(AbortSignal) + ); + + expect(onRedirect).toHaveBeenCalledWith( + 'http://localhost:12345?response=abc' + ); + }); + + test('shows loading indicator while processing', async () => { + const onRedirect = jest.fn(); + const neverResolves = new Promise(() => {}); + + setup({ onRedirect, browserMfaPutResponse: neverResolves }); + + expect(await screen.findByTestId('indicator')).toBeInTheDocument(); + expect(onRedirect).not.toHaveBeenCalled(); + }); + + test('shows access denied when redirect URL is invalid', async () => { + const onRedirect = jest.fn(); + + setup({ + onRedirect, + validateRedirect: () => { + throw new Error('Invalid redirect URL'); + }, + }); + + expect(await screen.findByText('Invalid redirect URL')).toBeInTheDocument(); + expect(onRedirect).not.toHaveBeenCalled(); + }); + + test('shows error when request ID not included', async () => { + setup({ path: '/web/mfa/browser' }); + + expect(await screen.findByText('Missing request ID')).toBeInTheDocument(); + expect(auth.browserMfaPut).not.toHaveBeenCalled(); + }); +}); diff --git a/web/packages/teleport/src/BrowserMFA/BrowserMFA.tsx b/web/packages/teleport/src/BrowserMFA/BrowserMFA.tsx new file mode 100644 index 0000000000000..07df330f9ddc1 --- /dev/null +++ b/web/packages/teleport/src/BrowserMFA/BrowserMFA.tsx @@ -0,0 +1,118 @@ +/** + * Teleport + * Copyright (C) 2026 Gravitational, Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +import { useEffect } from 'react'; +import { useParams } from 'react-router'; + +import { Flex, Indicator } from 'design'; +import { AccessDenied, BadRequest } from 'design/CardError'; +import useAttempt from 'shared/hooks/useAttemptNext'; + +import AuthnDialog from 'teleport/components/AuthnDialog'; +import { useMfa, shouldShowMfaPrompt } from 'teleport/lib/useMfa'; +import auth from 'teleport/services/auth'; + +import { validateClientRedirect } from '../../../shared/redirects/urlValidation'; + +interface BrowserMfaProps { + // onRedirect is used for testing only. + onRedirect?: (url: string) => void; +} + +export function BrowserMfa({ onRedirect = redirectTo }: BrowserMfaProps) { + const { requestId } = useParams<{ requestId: string }>(); + const { attempt, setAttempt } = useAttempt('processing'); + + const mfa = useMfa({ + isMfaRequired: true, + req: { + browserMfaRequestId: requestId, + }, + }); + + useEffect(() => { + const abortController = new AbortController(); + + async function promptWebauthnAndRedirect() { + try { + if (!requestId) { + setAttempt({ + status: 'failed', + statusText: 'Missing request ID', + statusCode: 400, + }); + return; + } + + // Get the tsh redirect URL + const tshRedirectUrl = await auth.browserMfaPut( + mfa, + requestId, + abortController.signal + ); + + // Validate that it points to localhost + validateClientRedirect(tshRedirectUrl); + + // Redirect to the validated URL + onRedirect(tshRedirectUrl); + } catch (err) { + setAttempt({ + status: 'failed', + statusText: err.message, + }); + } + } + + promptWebauthnAndRedirect(); + return () => abortController.abort(); + }, []); // eslint-disable-line react-hooks/exhaustive-deps -- Only run the effect once on mount + + if (attempt.status === 'failed') { + if (attempt.statusCode === 400) { + return ; + } + return ; + } + + if (shouldShowMfaPrompt(mfa)) { + return ; + } + + return ; +} + +export function BrowserMfaProcessing() { + return ( + + + + ); +} + +interface BrowserMfaAccessDeniedProps { + statusText: string; +} + +export function BrowserMfaAccessDenied(props: BrowserMfaAccessDeniedProps) { + return ; +} + +function redirectTo(url: string): void { + window.location.replace(url); +} diff --git a/web/packages/teleport/src/Login/useLogin.ts b/web/packages/teleport/src/Login/useLogin.ts index 1b0015a85c7ae..4ace09c9b6f5f 100644 --- a/web/packages/teleport/src/Login/useLogin.ts +++ b/web/packages/teleport/src/Login/useLogin.ts @@ -42,7 +42,10 @@ export default function useLogin() { const [showMotd, setShowMotd] = useState(() => { const redirectUri = history.getRedirectParam(); - if (redirectUri?.includes('headless')) { + if ( + redirectUri?.includes('headless') || + redirectUri?.includes('/mfa/browser') + ) { return false; } return !!cfg.getMotd(); diff --git a/web/packages/teleport/src/Teleport.tsx b/web/packages/teleport/src/Teleport.tsx index 2ac05b69d88b6..aead304f72132 100644 --- a/web/packages/teleport/src/Teleport.tsx +++ b/web/packages/teleport/src/Teleport.tsx @@ -33,6 +33,7 @@ import { UserContextProvider } from 'teleport/User'; import { NewCredentials } from 'teleport/Welcome/NewCredentials'; import { AppLauncher } from './AppLauncher'; +import { BrowserMfa } from './BrowserMFA/BrowserMFA'; import cfg from './config'; import { ConsoleWithContext as Console } from './Console'; import { DesktopSessionContainer as DesktopSession } from './DesktopSession'; @@ -222,6 +223,11 @@ export function getSharedPrivateRoutes() { path={cfg.routes.headlessSso} component={HeadlessRequest} />, + , ]; } diff --git a/web/packages/teleport/src/config.ts b/web/packages/teleport/src/config.ts index 5a1c99225dfa1..13cac27711df8 100644 --- a/web/packages/teleport/src/config.ts +++ b/web/packages/teleport/src/config.ts @@ -228,6 +228,7 @@ const cfg = { userResetContinue: '/web/reset/:tokenId/continue', kubernetes: '/web/cluster/:clusterId/kubernetes', headlessSso: `/web/headless/:requestId`, + browserMfa: `/web/mfa/browser/:requestId?`, integrations: '/web/integrations', integrationOverview: '/web/integrations/overview/:type/:name', integrationStatus: '/web/integrations/status/:type/:name/:subPage?', @@ -388,6 +389,8 @@ const cfg = { headlessSsoPath: `/v1/webapi/headless/:requestId`, + browserMfaPath: `/v1/webapi/mfa/browser/:requestId`, + mfaCreateRegistrationChallengePath: '/v1/webapi/mfa/token/:tokenId/registerchallenge', @@ -1093,6 +1096,10 @@ const cfg = { return generatePath(cfg.api.headlessSsoPath, { requestId }); }, + getBrowserMfaPath(requestId: string) { + return generatePath(cfg.api.browserMfaPath, { requestId }); + }, + getUserInviteTokenRoute(tokenId = '') { return generatePath(cfg.routes.userInvite, { tokenId }); }, diff --git a/web/packages/teleport/src/services/auth/auth.ts b/web/packages/teleport/src/services/auth/auth.ts index 22d9f5b32fb76..989c23161029d 100644 --- a/web/packages/teleport/src/services/auth/auth.ts +++ b/web/packages/teleport/src/services/auth/auth.ts @@ -251,6 +251,16 @@ const auth = { return api.put(cfg.getHeadlessSsoPath(transactionId), request); }, + browserMfaPut(mfa: MfaState, requestId: string, abortSignal: AbortSignal) { + return mfa.getChallengeResponse().then((res: MfaChallengeResponse) => { + const request = { + ...res, + }; + + return api.put(cfg.getBrowserMfaPath(requestId), request, abortSignal); + }); + }, + // getChallenge gets an MFA challenge for the provided parameters. If is_mfa_required_req // is provided and it is found that MFA is not required, returns undefined instead. async getMfaChallenge( @@ -266,6 +276,7 @@ const auth = { challenge_allow_reuse: req.allowReuse, user_verification_requirement: req.userVerificationRequirement, proxy_address: cfg.baseUrl, + browser_mfa_request_id: req.browserMfaRequestId, }, abortSignal ) diff --git a/web/packages/teleport/src/services/auth/types.ts b/web/packages/teleport/src/services/auth/types.ts index 5a4717f70a137..10b684080ee39 100644 --- a/web/packages/teleport/src/services/auth/types.ts +++ b/web/packages/teleport/src/services/auth/types.ts @@ -62,12 +62,24 @@ export type ResetPasswordWithWebauthnReqWithEvent = { eventMeta?: EventMeta; }; -export type CreateAuthenticateChallengeRequest = { - scope: MfaChallengeScope; - allowReuse?: boolean; - isMfaRequiredRequest?: IsMfaRequiredRequest; - userVerificationRequirement?: UserVerificationRequirement; -}; +// CreateAuthenticateChallengeRequest is the request used when creating an MFA +// challenge. If browserMfaRequestId is set, scope is optional because auth +// will set the scope when creating the challenge. +export type CreateAuthenticateChallengeRequest = + | { + browserMfaRequestId: string; + scope?: MfaChallengeScope; + allowReuse?: boolean; + isMfaRequiredRequest?: IsMfaRequiredRequest; + userVerificationRequirement?: UserVerificationRequirement; + } + | { + browserMfaRequestId?: never; + scope: MfaChallengeScope; + allowReuse?: boolean; + isMfaRequiredRequest?: IsMfaRequiredRequest; + userVerificationRequirement?: UserVerificationRequirement; + }; export type ChangePasswordReq = { oldPassword: string; diff --git a/web/packages/teleterm/src/ui/ModalsHost/ModalsHost.tsx b/web/packages/teleterm/src/ui/ModalsHost/ModalsHost.tsx index 005724559aa0a..1eb3f75af3c94 100644 --- a/web/packages/teleterm/src/ui/ModalsHost/ModalsHost.tsx +++ b/web/packages/teleterm/src/ui/ModalsHost/ModalsHost.tsx @@ -206,6 +206,7 @@ function renderDialog({ }} // This function needs to be stable between renders. onSsoContinue={dialog.onSsoContinue} + onBrowserMfaContinue={dialog.onBrowserMfaContinue} onCancel={() => { handleClose(); dialog.onCancel(); diff --git a/web/packages/teleterm/src/ui/ModalsHost/modals/ReAuthenticate/ReAuthenticate.story.tsx b/web/packages/teleterm/src/ui/ModalsHost/modals/ReAuthenticate/ReAuthenticate.story.tsx index 5bf9a80e31a7c..bf8c9149f19b9 100644 --- a/web/packages/teleterm/src/ui/ModalsHost/modals/ReAuthenticate/ReAuthenticate.story.tsx +++ b/web/packages/teleterm/src/ui/ModalsHost/modals/ReAuthenticate/ReAuthenticate.story.tsx @@ -55,6 +55,7 @@ export const WithWebauthn = () => ( 'You somehow submitted a form while only Webauthn was available.' ); }} + onBrowserMfaContinue={() => {}} /> ); @@ -69,6 +70,7 @@ export const WithTotp = () => ( onSsoContinue={() => {}} onCancel={() => {}} onOtpSubmit={showToken} + onBrowserMfaContinue={() => {}} /> ); @@ -83,6 +85,7 @@ export const WithTotpPerSessionMfa = () => ( onSsoContinue={() => {}} onCancel={() => {}} onOtpSubmit={showToken} + onBrowserMfaContinue={() => {}} /> ); @@ -106,6 +109,28 @@ export const WithSso = () => ( 'You somehow submitted a form while only SSO was available.' ); }} + onBrowserMfaContinue={() => {}} + /> + +); + +export const WithBrowserMfa = () => ( + + {}} + onCancel={() => {}} + onOtpSubmit={() => { + window.alert( + 'You somehow submitted a form while only Browser MFA was available.' + ); + }} + onBrowserMfaContinue={() => {}} /> ); @@ -127,6 +152,7 @@ export const WithWebauthnAndTotpAndSSO = () => ( onSsoContinue={() => {}} onCancel={() => {}} onOtpSubmit={showToken} + onBrowserMfaContinue={() => {}} /> ); @@ -148,6 +174,26 @@ export const WithWebauthnAndTotpAndSSOPerSessionMfa = () => ( onSsoContinue={() => {}} onCancel={() => {}} onOtpSubmit={showToken} + onBrowserMfaContinue={() => {}} + /> + +); + +export const WithWebauthnAndTotpAndBrowserMfa = () => ( + + {}} + onCancel={() => {}} + onOtpSubmit={showToken} + onBrowserMfaContinue={() => {}} /> ); @@ -165,6 +211,7 @@ export const MultilineTitle = () => ( onSsoContinue={() => {}} onCancel={() => {}} onOtpSubmit={showToken} + onBrowserMfaContinue={() => {}} /> ); @@ -181,6 +228,7 @@ export const ForLeafCluster = () => ( onSsoContinue={() => {}} onCancel={() => {}} onOtpSubmit={showToken} + onBrowserMfaContinue={() => {}} /> ); diff --git a/web/packages/teleterm/src/ui/ModalsHost/modals/ReAuthenticate/ReAuthenticate.tsx b/web/packages/teleterm/src/ui/ModalsHost/modals/ReAuthenticate/ReAuthenticate.tsx index e976ad25187d8..9b39a536bf091 100644 --- a/web/packages/teleterm/src/ui/ModalsHost/modals/ReAuthenticate/ReAuthenticate.tsx +++ b/web/packages/teleterm/src/ui/ModalsHost/modals/ReAuthenticate/ReAuthenticate.tsx @@ -54,9 +54,10 @@ export const ReAuthenticate: FC<{ onCancel: () => void; onOtpSubmit: (otp: string) => void; onSsoContinue: (redirectUrl: string) => void; + onBrowserMfaContinue: (redirectUrl: string) => void; hidden?: boolean; }> = props => { - const { promptMfaRequest: req, onSsoContinue } = props; + const { promptMfaRequest: req, onSsoContinue, onBrowserMfaContinue } = props; const availableMfaTypes = makeAvailableMfaTypes(req); @@ -64,15 +65,6 @@ export const ReAuthenticate: FC<{ availableMfaTypes[0] ); - useEffect(() => { - // If SSO is the selected value, open the redirect window instead of waiting for the user to - // select SSO. This handles both a situation where the user selects the SSO option and a - // situation where SSO is already selected when the component renders. - if (selectedMfaType.value === 'sso') { - onSsoContinue(req.sso.redirectUrl); - } - }, [selectedMfaType.value, req.sso?.redirectUrl, onSsoContinue]); - const [otpToken, setOtpToken] = useState(''); const { clusterUri } = req; @@ -90,6 +82,39 @@ export const ReAuthenticate: FC<{ const clusterName = routing.parseClusterName(clusterUri); const isLeafCluster = routing.isLeafCluster(clusterUri); + // maybeOpenBrowser opens the browser if the given mfaType is SSO of Browser MFA + function maybeOpenBrowser(mfaType: AvailableMfaType) { + switch (mfaType.value) { + case 'sso': + onSsoContinue(req.sso?.redirectUrl); + break; + case 'browsermfa': + onBrowserMfaContinue( + `https://${rootClusterProxyHost}/web/mfa/browser/${req.browser.requestId}` + ); + break; + } + } + + // selectMfaType is a wrapper for setSelectedMfaType that will also open the + // browser if the user has selected SSO or Browser MFA + function selectMfaType(mfaType: AvailableMfaType) { + setSelectedMfaType(mfaType); + + // Open the browser if the user selected SSO or Browser MFA + maybeOpenBrowser(mfaType); + } + + // If there is only one available MFA type, the user may not get a dropdown + // to select the MFA type. If the only available type is SSO or Browser MFA, + // open the browser now. + useEffect(() => { + if (availableMfaTypes.length === 1) { + selectMfaType(availableMfaTypes[0]); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + let $totpPrompt = ( { - setSelectedMfaType(mfaType); + selectMfaType(mfaType); }} /> )} @@ -207,6 +232,15 @@ export const ReAuthenticate: FC<{ {selectedMfaType.value === 'sso' && ( )} + + {selectedMfaType.value === 'browsermfa' && ( + + + Please follow the steps in the browser to authenticate. + + + + )} @@ -233,11 +267,12 @@ export const ReAuthenticate: FC<{ ); }; -type MfaType = 'webauthn' | 'totp' | 'sso'; +type MfaType = 'webauthn' | 'totp' | 'sso' | 'browsermfa'; type AvailableMfaType = Option; const totp = { value: 'totp' as MfaType, label: 'Authenticator App' }; const webauthn = { value: 'webauthn' as MfaType, label: 'Hardware Key' }; +const browsermfa = { value: 'browsermfa' as MfaType, label: 'Browser MFA' }; function makeAvailableMfaTypes(req: PromptMFARequest): AvailableMfaType[] { let availableMfaTypes: AvailableMfaType[] = []; @@ -257,6 +292,10 @@ function makeAvailableMfaTypes(req: PromptMFARequest): AvailableMfaType[] { }); } + if (req.browser) { + availableMfaTypes.push(browsermfa); + } + // This shouldn't happen but is technically allowed by the req data structure. if (availableMfaTypes.length === 0) { availableMfaTypes.push(webauthn); diff --git a/web/packages/teleterm/src/ui/services/modals/modalsService.ts b/web/packages/teleterm/src/ui/services/modals/modalsService.ts index 9ec419b86109e..e6bc6cb20bb58 100644 --- a/web/packages/teleterm/src/ui/services/modals/modalsService.ts +++ b/web/packages/teleterm/src/ui/services/modals/modalsService.ts @@ -261,6 +261,7 @@ export interface DialogReAuthenticate { promptMfaRequest: tshdEventsApi.PromptMFARequest; onSuccess(totpCode: string): void; onSsoContinue(redirectUrl: string): void; + onBrowserMfaContinue(redirectUrl: string): void; onCancel(): void; } diff --git a/web/packages/teleterm/src/ui/tshdEvents.ts b/web/packages/teleterm/src/ui/tshdEvents.ts index 8ce8805b4c2a6..110832d6f0260 100644 --- a/web/packages/teleterm/src/ui/tshdEvents.ts +++ b/web/packages/teleterm/src/ui/tshdEvents.ts @@ -61,6 +61,9 @@ export function createTshdEventsContextBridgeService( onSsoContinue: (redirectUrl: string) => { window.open(redirectUrl); }, + onBrowserMfaContinue: (redirectUrl: string) => { + window.open(redirectUrl); + }, onCancel: () => resolve({ hasCanceledModal: true,