diff --git a/Makefile b/Makefile index 4c6f543454bea..d4abc044f162a 100644 --- a/Makefile +++ b/Makefile @@ -13,7 +13,7 @@ # Stable releases: "1.0.0" # Pre-releases: "1.0.0-alpha.1", "1.0.0-beta.2", "1.0.0-rc.3" # Master/dev branch: "1.0.0-dev" -VERSION=17.0.0-dev +VERSION=17.0.0-dev.githubproxy.2 DOCKER_IMAGE ?= teleport diff --git a/api/client/alpn_conn_upgrade.go b/api/client/alpn_conn_upgrade.go index d08b1fe7968e4..d9a4486ed78c5 100644 --- a/api/client/alpn_conn_upgrade.go +++ b/api/client/alpn_conn_upgrade.go @@ -93,7 +93,7 @@ func IsALPNConnUpgradeRequired(ctx context.Context, addr string, insecure bool, // Upgrade required when ALPN is not supported on the remote side so // NegotiatedProtocol comes back as empty. result := testConn.ConnectionState().NegotiatedProtocol == "" - logger.DebugContext(ctx, "ALPN connection upgrade test complete", "upgrade_required", result) + logger.WarnContext(ctx, "ALPN connection upgrade test complete", "upgrade_required", result) return result } diff --git a/api/client/client.go b/api/client/client.go index 00d068eb37b3c..c3964a26bc8f8 100644 --- a/api/client/client.go +++ b/api/client/client.go @@ -54,6 +54,7 @@ import ( crownjewelapi "github.com/gravitational/teleport/api/client/crownjewel" "github.com/gravitational/teleport/api/client/discoveryconfig" "github.com/gravitational/teleport/api/client/externalauditstorage" + "github.com/gravitational/teleport/api/client/gitserver" kubewaitingcontainerclient "github.com/gravitational/teleport/api/client/kubewaitingcontainer" "github.com/gravitational/teleport/api/client/okta" "github.com/gravitational/teleport/api/client/proto" @@ -73,6 +74,7 @@ import ( devicepb "github.com/gravitational/teleport/api/gen/proto/go/teleport/devicetrust/v1" discoveryconfigv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/discoveryconfig/v1" externalauditstoragev1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/externalauditstorage/v1" + gitserverv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/gitserver/v1" integrationpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/integration/v1" kubeproto "github.com/gravitational/teleport/api/gen/proto/go/teleport/kube/v1" kubewaitingcontainerpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/kubewaitingcontainer/v1" @@ -3608,6 +3610,8 @@ func (c *Client) ListResources(ctx context.Context, req proto.ListResourcesReque resources[i] = respResource.GetAppServerOrSAMLIdPServiceProvider() case types.KindSAMLIdPServiceProvider: resources[i] = respResource.GetSAMLIdPServiceProvider() + case types.KindGitServer: + resources[i] = respResource.GetGitServer() default: return nil, trace.NotImplemented("resource type %s does not support pagination", req.ResourceType) } @@ -3697,6 +3701,8 @@ func convertEnrichedResource(resource *proto.PaginatedResource) (*types.Enriched return &types.EnrichedResource{ResourceWithLabels: r, Logins: resource.Logins, RequiresRequest: resource.RequiresRequest}, nil } else if r := resource.GetSAMLIdPServiceProvider(); r != nil { return &types.EnrichedResource{ResourceWithLabels: r, RequiresRequest: resource.RequiresRequest}, nil + } else if r := resource.GetGitServer(); r != nil { + return &types.EnrichedResource{ResourceWithLabels: r, Logins: resource.Logins, RequiresRequest: resource.RequiresRequest}, nil } else { return nil, trace.BadParameter("received unsupported resource %T", resource.Resource) } @@ -3819,6 +3825,8 @@ func GetEnrichedResourcePage(ctx context.Context, clt GetResourcesClient, req *p resource = respResource.GetAppServerOrSAMLIdPServiceProvider() case types.KindSAMLIdPServiceProvider: resource = respResource.GetSAMLIdPServiceProvider() + case types.KindGitServer: + resource = respResource.GetGitServer() default: out.Resources = nil return out, trace.NotImplemented("resource type %s does not support pagination", req.ResourceType) @@ -3887,6 +3895,8 @@ func GetResourcePage[T types.ResourceWithLabels](ctx context.Context, clt GetRes resource = respResource.GetAppServerOrSAMLIdPServiceProvider() case types.KindSAMLIdPServiceProvider: resource = respResource.GetSAMLIdPServiceProvider() + case types.KindGitServer: + resource = respResource.GetGitServer() default: out.Resources = nil return out, trace.NotImplemented("resource type %s does not support pagination", req.ResourceType) @@ -4461,10 +4471,11 @@ func (c *Client) integrationsClient() integrationpb.IntegrationServiceClient { // ListIntegrations returns a paginated list of Integrations. // The response includes a nextKey which must be used to fetch the next page. -func (c *Client) ListIntegrations(ctx context.Context, pageSize int, nextKey string) ([]types.Integration, string, error) { +func (c *Client) ListIntegrations(ctx context.Context, pageSize int, nextKey string, withSecrets bool) ([]types.Integration, string, error) { resp, err := c.integrationsClient().ListIntegrations(ctx, &integrationpb.ListIntegrationsRequest{ - Limit: int32(pageSize), - NextKey: nextKey, + Limit: int32(pageSize), + NextKey: nextKey, + WithSecrets: withSecrets, }) if err != nil { return nil, "", trace.Wrap(err) @@ -4483,7 +4494,7 @@ func (c *Client) ListAllIntegrations(ctx context.Context) ([]types.Integration, var result []types.Integration var nextKey string for { - integrations, nextKey, err := c.ListIntegrations(ctx, 0, nextKey) + integrations, nextKey, err := c.ListIntegrations(ctx, 0, nextKey, false /*withSecrets*/) if err != nil { return nil, trace.Wrap(err) } @@ -4495,9 +4506,10 @@ func (c *Client) ListAllIntegrations(ctx context.Context) ([]types.Integration, } // GetIntegration returns an Integration by its name. -func (c *Client) GetIntegration(ctx context.Context, name string) (types.Integration, error) { +func (c *Client) GetIntegration(ctx context.Context, name string, withSecrets bool) (types.Integration, error) { ig, err := c.integrationsClient().GetIntegration(ctx, &integrationpb.GetIntegrationRequest{ - Name: name, + Name: name, + WithSecrets: withSecrets, }) if err != nil { return nil, trace.Wrap(err) @@ -4562,6 +4574,14 @@ func (c *Client) GenerateAWSOIDCToken(ctx context.Context, integration string) ( return resp.GetToken(), nil } +// GenerateGitHubUserCert generates a SSH user certificate for GitHub +// integration. +// TODO maybe just expose c.integrationsClient() +func (c *Client) GenerateGitHubUserCert(ctx context.Context, in *integrationpb.GenerateGitHubUserCertRequest) (*integrationpb.GenerateGitHubUserCertResponse, error) { + resp, err := c.integrationsClient().GenerateGitHubUserCert(ctx, in) + return resp, trace.Wrap(err) +} + // PluginsClient returns an unadorned Plugins client, using the underlying // Auth gRPC connection. // Clients connecting to non-Enterprise clusters, or older Teleport versions, @@ -4667,6 +4687,30 @@ func (c *Client) UserLoginStateClient() *userloginstate.Client { return userloginstate.NewClient(userloginstatev1.NewUserLoginStateServiceClient(c.conn)) } +// TODO +func (c *Client) GitServerClient() *gitserver.Client { + return gitserver.NewClient(gitserverv1.NewGitServerServiceClient(c.conn)) +} +func (c *Client) GetGitServer(ctx context.Context, name string) (types.Server, error) { + return c.GitServerClient().GetGitServer(ctx, name) +} +func (c *Client) UpsertGitServer(ctx context.Context, server types.Server) (types.Server, error) { + return c.GitServerClient().UpsertGitServer(ctx, server) +} +func (c *Client) DeleteGitServer(ctx context.Context, name string) error { + return c.GitServerClient().DeleteGitServer(ctx, name) +} +func (c *Client) DeleteAllGitServers(context.Context) error { + return trace.NotImplemented("not supported on client") +} +func (c *Client) GetGitServers(ctx context.Context) ([]types.Server, error) { + servers, err := GetAllResources[types.Server](ctx, c, &proto.ListResourcesRequest{ + ResourceType: types.KindGitServer, + Namespace: defaults.Namespace, + }) + return servers, trace.Wrap(err) +} + // GetCertAuthority retrieves a CA by type and domain. func (c *Client) GetCertAuthority(ctx context.Context, id types.CertAuthID, loadKeys bool) (types.CertAuthority, error) { ca, err := c.TrustClient().GetCertAuthority(ctx, &trustpb.GetCertAuthorityRequest{ @@ -4914,3 +4958,9 @@ func (c *Client) GetRemoteCluster(ctx context.Context, name string) (types.Remot }) return rc, trace.Wrap(err) } + +// TODO +func (c *Client) CreateGithubAuthRequestForUser(ctx context.Context, req *proto.CreateGithubAuthRequestForUserRequest) (*types.GithubAuthRequest, error) { + resp, err := c.grpc.CreateGithubAuthRequestForUser(ctx, req) + return resp, trace.Wrap(err) +} diff --git a/api/client/gitserver/gitserver.go b/api/client/gitserver/gitserver.go new file mode 100644 index 0000000000000..f1cb44a5f9923 --- /dev/null +++ b/api/client/gitserver/gitserver.go @@ -0,0 +1,62 @@ +// Copyright 2024 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. + +package gitserver + +import ( + "context" + + gitserverv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/gitserver/v1" + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/trace" +) + +type Client struct { + grpcClient gitserverv1.GitServerServiceClient +} + +func NewClient(grpcClient gitserverv1.GitServerServiceClient) *Client { + return &Client{ + grpcClient: grpcClient, + } +} + +// GetGitServer is used to retrieve a Git server object. +func (c *Client) GetGitServer(ctx context.Context, name string) (types.Server, error) { + resp, err := c.grpcClient.GetGitServer(ctx, &gitserverv1.GetGitServerRequest{ + Name: name, + }) + return resp, trace.Wrap(err) +} + +// UpsertGitServer is used to create or replace a Git server object. +func (c *Client) UpsertGitServer(ctx context.Context, server types.Server) (types.Server, error) { + serverV2, ok := server.(*types.ServerV2) + if !ok { + return nil, trace.BadParameter("server object is not *types.ServerV2") + } + + resp, err := c.grpcClient.UpsertGitServer(ctx, &gitserverv1.UpsertGitServerRequest{ + Server: serverV2, + }) + return resp, trace.Wrap(err) +} + +// DeleteGitServer is used to delete a Git server object. +func (c *Client) DeleteGitServer(ctx context.Context, name string) error { + _, err := c.grpcClient.DeleteGitServer(ctx, &gitserverv1.DeleteGitServerRequest{ + Name: name, + }) + return trace.Wrap(err) +} diff --git a/api/client/proto/authservice.pb.go b/api/client/proto/authservice.pb.go index 268a466ed7e69..06ced3e6e0e9b 100644 --- a/api/client/proto/authservice.pb.go +++ b/api/client/proto/authservice.pb.go @@ -322,6 +322,9 @@ const ( // WindowsDesktop means a request for a TLS certificate for access to a specific // windows desktop. UserCertsRequest_WindowsDesktop UserCertsRequest_CertUsage = 5 + // GitServer means a request for an SSH certificate for access to a git + // server, as specified by RouteToGitServer. + UserCertsRequest_GitServer UserCertsRequest_CertUsage = 6 ) var UserCertsRequest_CertUsage_name = map[int32]string{ @@ -331,6 +334,7 @@ var UserCertsRequest_CertUsage_name = map[int32]string{ 3: "Database", 4: "App", 5: "WindowsDesktop", + 6: "GitServer", } var UserCertsRequest_CertUsage_value = map[string]int32{ @@ -340,6 +344,7 @@ var UserCertsRequest_CertUsage_value = map[string]int32{ "Database": 3, "App": 4, "WindowsDesktop": 5, + "GitServer": 6, } func (x UserCertsRequest_CertUsage) String() string { @@ -450,7 +455,7 @@ func (x DatabaseCertRequest_Requester) String() string { } func (DatabaseCertRequest_Requester) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{76, 0} + return fileDescriptor_0ffcffcda38ae159, []int{77, 0} } // Extensions are the extensions to add to the certificate. @@ -478,7 +483,7 @@ func (x DatabaseCertRequest_Extensions) String() string { } func (DatabaseCertRequest_Extensions) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{76, 1} + return fileDescriptor_0ffcffcda38ae159, []int{77, 1} } // Watch specifies watch parameters @@ -927,9 +932,11 @@ type UserCertsRequest struct { SSHPublicKeyAttestationStatement *v1.AttestationStatement `protobuf:"bytes,25,opt,name=SSHPublicKeyAttestationStatement,proto3" json:"ssh_public_key_attestation_statement,omitempty"` // TLSPublicKeyAttestationStatement is an attestation statement for TLSPublicKey. TLSPublicKeyAttestationStatement *v1.AttestationStatement `protobuf:"bytes,26,opt,name=TLSPublicKeyAttestationStatement,proto3" json:"tls_public_key_attestation_statement,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // RouteToGitServer specifies application to issue certificate for. + RouteToGitServer RouteToGitServer `protobuf:"bytes,27,opt,name=RouteToGitServer,proto3" json:"route_to_git_server,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *UserCertsRequest) Reset() { *m = UserCertsRequest{} } @@ -1142,6 +1149,13 @@ func (m *UserCertsRequest) GetTLSPublicKeyAttestationStatement() *v1.Attestation return nil } +func (m *UserCertsRequest) GetRouteToGitServer() RouteToGitServer { + if m != nil { + return m.RouteToGitServer + } + return RouteToGitServer{} +} + // RouteToDatabase combines parameters for database service routing information. type RouteToDatabase struct { // ServiceName is the Teleport database proxy service name the cert is for. @@ -1285,6 +1299,55 @@ func (m *RouteToWindowsDesktop) GetLogin() string { return "" } +// RouteToGitServer combines parameters for Git server routing information. +type RouteToGitServer struct { + // GitHubOrganization is the GitHub organization to embed. + GitHubOrganization string `protobuf:"bytes,1,opt,name=GitHubOrganization,proto3" json:"github_organization"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *RouteToGitServer) Reset() { *m = RouteToGitServer{} } +func (m *RouteToGitServer) String() string { return proto.CompactTextString(m) } +func (*RouteToGitServer) ProtoMessage() {} +func (*RouteToGitServer) Descriptor() ([]byte, []int) { + return fileDescriptor_0ffcffcda38ae159, []int{7} +} +func (m *RouteToGitServer) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RouteToGitServer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RouteToGitServer.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 *RouteToGitServer) XXX_Merge(src proto.Message) { + xxx_messageInfo_RouteToGitServer.Merge(m, src) +} +func (m *RouteToGitServer) XXX_Size() int { + return m.Size() +} +func (m *RouteToGitServer) XXX_DiscardUnknown() { + xxx_messageInfo_RouteToGitServer.DiscardUnknown(m) +} + +var xxx_messageInfo_RouteToGitServer proto.InternalMessageInfo + +func (m *RouteToGitServer) GetGitHubOrganization() string { + if m != nil { + return m.GitHubOrganization + } + return "" +} + // RouteToApp contains parameters for application access certificate requests. type RouteToApp struct { // Name is the application name certificate is being requested for. @@ -1314,7 +1377,7 @@ func (m *RouteToApp) Reset() { *m = RouteToApp{} } func (m *RouteToApp) String() string { return proto.CompactTextString(m) } func (*RouteToApp) ProtoMessage() {} func (*RouteToApp) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{7} + return fileDescriptor_0ffcffcda38ae159, []int{8} } func (m *RouteToApp) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1415,7 +1478,7 @@ func (m *GetUserRequest) Reset() { *m = GetUserRequest{} } func (m *GetUserRequest) String() string { return proto.CompactTextString(m) } func (*GetUserRequest) ProtoMessage() {} func (*GetUserRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{8} + return fileDescriptor_0ffcffcda38ae159, []int{9} } func (m *GetUserRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1471,7 +1534,7 @@ func (m *GetUsersRequest) Reset() { *m = GetUsersRequest{} } func (m *GetUsersRequest) String() string { return proto.CompactTextString(m) } func (*GetUsersRequest) ProtoMessage() {} func (*GetUsersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{9} + return fileDescriptor_0ffcffcda38ae159, []int{10} } func (m *GetUsersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1523,7 +1586,7 @@ func (m *ChangePasswordRequest) Reset() { *m = ChangePasswordRequest{} } func (m *ChangePasswordRequest) String() string { return proto.CompactTextString(m) } func (*ChangePasswordRequest) ProtoMessage() {} func (*ChangePasswordRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{10} + return fileDescriptor_0ffcffcda38ae159, []int{11} } func (m *ChangePasswordRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1599,7 +1662,7 @@ func (m *PluginDataSeq) Reset() { *m = PluginDataSeq{} } func (m *PluginDataSeq) String() string { return proto.CompactTextString(m) } func (*PluginDataSeq) ProtoMessage() {} func (*PluginDataSeq) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{11} + return fileDescriptor_0ffcffcda38ae159, []int{12} } func (m *PluginDataSeq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1667,7 +1730,7 @@ func (m *RequestStateSetter) Reset() { *m = RequestStateSetter{} } func (m *RequestStateSetter) String() string { return proto.CompactTextString(m) } func (*RequestStateSetter) ProtoMessage() {} func (*RequestStateSetter) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{12} + return fileDescriptor_0ffcffcda38ae159, []int{13} } func (m *RequestStateSetter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1750,7 +1813,7 @@ func (m *RequestID) Reset() { *m = RequestID{} } func (m *RequestID) String() string { return proto.CompactTextString(m) } func (*RequestID) ProtoMessage() {} func (*RequestID) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{13} + return fileDescriptor_0ffcffcda38ae159, []int{14} } func (m *RequestID) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1798,7 +1861,7 @@ func (m *GetResetPasswordTokenRequest) Reset() { *m = GetResetPasswordTo func (m *GetResetPasswordTokenRequest) String() string { return proto.CompactTextString(m) } func (*GetResetPasswordTokenRequest) ProtoMessage() {} func (*GetResetPasswordTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{14} + return fileDescriptor_0ffcffcda38ae159, []int{15} } func (m *GetResetPasswordTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1851,7 +1914,7 @@ func (m *CreateResetPasswordTokenRequest) Reset() { *m = CreateResetPass func (m *CreateResetPasswordTokenRequest) String() string { return proto.CompactTextString(m) } func (*CreateResetPasswordTokenRequest) ProtoMessage() {} func (*CreateResetPasswordTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{15} + return fileDescriptor_0ffcffcda38ae159, []int{16} } func (m *CreateResetPasswordTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1917,7 +1980,7 @@ func (m *RenewableCertsRequest) Reset() { *m = RenewableCertsRequest{} } func (m *RenewableCertsRequest) String() string { return proto.CompactTextString(m) } func (*RenewableCertsRequest) ProtoMessage() {} func (*RenewableCertsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{16} + return fileDescriptor_0ffcffcda38ae159, []int{17} } func (m *RenewableCertsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1971,7 +2034,7 @@ func (m *PingRequest) Reset() { *m = PingRequest{} } func (m *PingRequest) String() string { return proto.CompactTextString(m) } func (*PingRequest) ProtoMessage() {} func (*PingRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{17} + return fileDescriptor_0ffcffcda38ae159, []int{18} } func (m *PingRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2029,7 +2092,7 @@ func (m *PingResponse) Reset() { *m = PingResponse{} } func (m *PingResponse) String() string { return proto.CompactTextString(m) } func (*PingResponse) ProtoMessage() {} func (*PingResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{18} + return fileDescriptor_0ffcffcda38ae159, []int{19} } func (m *PingResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2217,7 +2280,7 @@ func (m *Features) Reset() { *m = Features{} } func (m *Features) String() string { return proto.CompactTextString(m) } func (*Features) ProtoMessage() {} func (*Features) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{19} + return fileDescriptor_0ffcffcda38ae159, []int{20} } func (m *Features) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2492,7 +2555,7 @@ func (m *EntitlementInfo) Reset() { *m = EntitlementInfo{} } func (m *EntitlementInfo) String() string { return proto.CompactTextString(m) } func (*EntitlementInfo) ProtoMessage() {} func (*EntitlementInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{20} + return fileDescriptor_0ffcffcda38ae159, []int{21} } func (m *EntitlementInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2559,7 +2622,7 @@ func (m *DeviceTrustFeature) Reset() { *m = DeviceTrustFeature{} } func (m *DeviceTrustFeature) String() string { return proto.CompactTextString(m) } func (*DeviceTrustFeature) ProtoMessage() {} func (*DeviceTrustFeature) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{21} + return fileDescriptor_0ffcffcda38ae159, []int{22} } func (m *DeviceTrustFeature) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2618,7 +2681,7 @@ func (m *AccessRequestsFeature) Reset() { *m = AccessRequestsFeature{} } func (m *AccessRequestsFeature) String() string { return proto.CompactTextString(m) } func (*AccessRequestsFeature) ProtoMessage() {} func (*AccessRequestsFeature) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{22} + return fileDescriptor_0ffcffcda38ae159, []int{23} } func (m *AccessRequestsFeature) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2669,7 +2732,7 @@ func (m *AccessListFeature) Reset() { *m = AccessListFeature{} } func (m *AccessListFeature) String() string { return proto.CompactTextString(m) } func (*AccessListFeature) ProtoMessage() {} func (*AccessListFeature) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{23} + return fileDescriptor_0ffcffcda38ae159, []int{24} } func (m *AccessListFeature) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2721,7 +2784,7 @@ func (m *AccessMonitoringFeature) Reset() { *m = AccessMonitoringFeature func (m *AccessMonitoringFeature) String() string { return proto.CompactTextString(m) } func (*AccessMonitoringFeature) ProtoMessage() {} func (*AccessMonitoringFeature) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{24} + return fileDescriptor_0ffcffcda38ae159, []int{25} } func (m *AccessMonitoringFeature) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2777,7 +2840,7 @@ func (m *PolicyFeature) Reset() { *m = PolicyFeature{} } func (m *PolicyFeature) String() string { return proto.CompactTextString(m) } func (*PolicyFeature) ProtoMessage() {} func (*PolicyFeature) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{25} + return fileDescriptor_0ffcffcda38ae159, []int{26} } func (m *PolicyFeature) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2826,7 +2889,7 @@ func (m *DeleteUserRequest) Reset() { *m = DeleteUserRequest{} } func (m *DeleteUserRequest) String() string { return proto.CompactTextString(m) } func (*DeleteUserRequest) ProtoMessage() {} func (*DeleteUserRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{26} + return fileDescriptor_0ffcffcda38ae159, []int{27} } func (m *DeleteUserRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2874,7 +2937,7 @@ func (m *Semaphores) Reset() { *m = Semaphores{} } func (m *Semaphores) String() string { return proto.CompactTextString(m) } func (*Semaphores) ProtoMessage() {} func (*Semaphores) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{27} + return fileDescriptor_0ffcffcda38ae159, []int{28} } func (m *Semaphores) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2931,7 +2994,7 @@ func (m *AuditStreamRequest) Reset() { *m = AuditStreamRequest{} } func (m *AuditStreamRequest) String() string { return proto.CompactTextString(m) } func (*AuditStreamRequest) ProtoMessage() {} func (*AuditStreamRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{28} + return fileDescriptor_0ffcffcda38ae159, []int{29} } func (m *AuditStreamRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3056,7 +3119,7 @@ func (m *AuditStreamStatus) Reset() { *m = AuditStreamStatus{} } func (m *AuditStreamStatus) String() string { return proto.CompactTextString(m) } func (*AuditStreamStatus) ProtoMessage() {} func (*AuditStreamStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{29} + return fileDescriptor_0ffcffcda38ae159, []int{30} } func (m *AuditStreamStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3104,7 +3167,7 @@ func (m *CreateStream) Reset() { *m = CreateStream{} } func (m *CreateStream) String() string { return proto.CompactTextString(m) } func (*CreateStream) ProtoMessage() {} func (*CreateStream) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{30} + return fileDescriptor_0ffcffcda38ae159, []int{31} } func (m *CreateStream) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3155,7 +3218,7 @@ func (m *ResumeStream) Reset() { *m = ResumeStream{} } func (m *ResumeStream) String() string { return proto.CompactTextString(m) } func (*ResumeStream) ProtoMessage() {} func (*ResumeStream) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{31} + return fileDescriptor_0ffcffcda38ae159, []int{32} } func (m *ResumeStream) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3210,7 +3273,7 @@ func (m *CompleteStream) Reset() { *m = CompleteStream{} } func (m *CompleteStream) String() string { return proto.CompactTextString(m) } func (*CompleteStream) ProtoMessage() {} func (*CompleteStream) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{32} + return fileDescriptor_0ffcffcda38ae159, []int{33} } func (m *CompleteStream) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3250,7 +3313,7 @@ func (m *FlushAndCloseStream) Reset() { *m = FlushAndCloseStream{} } func (m *FlushAndCloseStream) String() string { return proto.CompactTextString(m) } func (*FlushAndCloseStream) ProtoMessage() {} func (*FlushAndCloseStream) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{33} + return fileDescriptor_0ffcffcda38ae159, []int{34} } func (m *FlushAndCloseStream) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3292,7 +3355,7 @@ func (m *UpsertApplicationServerRequest) Reset() { *m = UpsertApplicatio func (m *UpsertApplicationServerRequest) String() string { return proto.CompactTextString(m) } func (*UpsertApplicationServerRequest) ProtoMessage() {} func (*UpsertApplicationServerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{34} + return fileDescriptor_0ffcffcda38ae159, []int{35} } func (m *UpsertApplicationServerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3345,7 +3408,7 @@ func (m *DeleteApplicationServerRequest) Reset() { *m = DeleteApplicatio func (m *DeleteApplicationServerRequest) String() string { return proto.CompactTextString(m) } func (*DeleteApplicationServerRequest) ProtoMessage() {} func (*DeleteApplicationServerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{35} + return fileDescriptor_0ffcffcda38ae159, []int{36} } func (m *DeleteApplicationServerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3408,7 +3471,7 @@ func (m *DeleteAllApplicationServersRequest) Reset() { *m = DeleteAllApp func (m *DeleteAllApplicationServersRequest) String() string { return proto.CompactTextString(m) } func (*DeleteAllApplicationServersRequest) ProtoMessage() {} func (*DeleteAllApplicationServersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{36} + return fileDescriptor_0ffcffcda38ae159, []int{37} } func (m *DeleteAllApplicationServersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3466,7 +3529,7 @@ func (m *GenerateAppTokenRequest) Reset() { *m = GenerateAppTokenRequest func (m *GenerateAppTokenRequest) String() string { return proto.CompactTextString(m) } func (*GenerateAppTokenRequest) ProtoMessage() {} func (*GenerateAppTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{37} + return fileDescriptor_0ffcffcda38ae159, []int{38} } func (m *GenerateAppTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3542,7 +3605,7 @@ func (m *GenerateAppTokenResponse) Reset() { *m = GenerateAppTokenRespon func (m *GenerateAppTokenResponse) String() string { return proto.CompactTextString(m) } func (*GenerateAppTokenResponse) ProtoMessage() {} func (*GenerateAppTokenResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{38} + return fileDescriptor_0ffcffcda38ae159, []int{39} } func (m *GenerateAppTokenResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3591,7 +3654,7 @@ func (m *GetAppSessionRequest) Reset() { *m = GetAppSessionRequest{} } func (m *GetAppSessionRequest) String() string { return proto.CompactTextString(m) } func (*GetAppSessionRequest) ProtoMessage() {} func (*GetAppSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{39} + return fileDescriptor_0ffcffcda38ae159, []int{40} } func (m *GetAppSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3640,7 +3703,7 @@ func (m *GetAppSessionResponse) Reset() { *m = GetAppSessionResponse{} } func (m *GetAppSessionResponse) String() string { return proto.CompactTextString(m) } func (*GetAppSessionResponse) ProtoMessage() {} func (*GetAppSessionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{40} + return fileDescriptor_0ffcffcda38ae159, []int{41} } func (m *GetAppSessionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3698,7 +3761,7 @@ func (m *ListAppSessionsRequest) Reset() { *m = ListAppSessionsRequest{} func (m *ListAppSessionsRequest) String() string { return proto.CompactTextString(m) } func (*ListAppSessionsRequest) ProtoMessage() {} func (*ListAppSessionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{41} + return fileDescriptor_0ffcffcda38ae159, []int{42} } func (m *ListAppSessionsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3764,7 +3827,7 @@ func (m *ListAppSessionsResponse) Reset() { *m = ListAppSessionsResponse func (m *ListAppSessionsResponse) String() string { return proto.CompactTextString(m) } func (*ListAppSessionsResponse) ProtoMessage() {} func (*ListAppSessionsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{42} + return fileDescriptor_0ffcffcda38ae159, []int{43} } func (m *ListAppSessionsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3820,7 +3883,7 @@ func (m *GetSnowflakeSessionsResponse) Reset() { *m = GetSnowflakeSessio func (m *GetSnowflakeSessionsResponse) String() string { return proto.CompactTextString(m) } func (*GetSnowflakeSessionsResponse) ProtoMessage() {} func (*GetSnowflakeSessionsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{43} + return fileDescriptor_0ffcffcda38ae159, []int{44} } func (m *GetSnowflakeSessionsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3878,7 +3941,7 @@ func (m *ListSAMLIdPSessionsRequest) Reset() { *m = ListSAMLIdPSessionsR func (m *ListSAMLIdPSessionsRequest) String() string { return proto.CompactTextString(m) } func (*ListSAMLIdPSessionsRequest) ProtoMessage() {} func (*ListSAMLIdPSessionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{44} + return fileDescriptor_0ffcffcda38ae159, []int{45} } func (m *ListSAMLIdPSessionsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3944,7 +4007,7 @@ func (m *ListSAMLIdPSessionsResponse) Reset() { *m = ListSAMLIdPSessions func (m *ListSAMLIdPSessionsResponse) String() string { return proto.CompactTextString(m) } func (*ListSAMLIdPSessionsResponse) ProtoMessage() {} func (*ListSAMLIdPSessionsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{45} + return fileDescriptor_0ffcffcda38ae159, []int{46} } func (m *ListSAMLIdPSessionsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4020,7 +4083,7 @@ func (m *CreateAppSessionRequest) Reset() { *m = CreateAppSessionRequest func (m *CreateAppSessionRequest) String() string { return proto.CompactTextString(m) } func (*CreateAppSessionRequest) ProtoMessage() {} func (*CreateAppSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{46} + return fileDescriptor_0ffcffcda38ae159, []int{47} } func (m *CreateAppSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4132,7 +4195,7 @@ func (m *CreateAppSessionResponse) Reset() { *m = CreateAppSessionRespon func (m *CreateAppSessionResponse) String() string { return proto.CompactTextString(m) } func (*CreateAppSessionResponse) ProtoMessage() {} func (*CreateAppSessionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{47} + return fileDescriptor_0ffcffcda38ae159, []int{48} } func (m *CreateAppSessionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4185,7 +4248,7 @@ func (m *CreateSnowflakeSessionRequest) Reset() { *m = CreateSnowflakeSe func (m *CreateSnowflakeSessionRequest) String() string { return proto.CompactTextString(m) } func (*CreateSnowflakeSessionRequest) ProtoMessage() {} func (*CreateSnowflakeSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{48} + return fileDescriptor_0ffcffcda38ae159, []int{49} } func (m *CreateSnowflakeSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4247,7 +4310,7 @@ func (m *CreateSnowflakeSessionResponse) Reset() { *m = CreateSnowflakeS func (m *CreateSnowflakeSessionResponse) String() string { return proto.CompactTextString(m) } func (*CreateSnowflakeSessionResponse) ProtoMessage() {} func (*CreateSnowflakeSessionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{49} + return fileDescriptor_0ffcffcda38ae159, []int{50} } func (m *CreateSnowflakeSessionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4300,7 +4363,7 @@ func (m *CreateSAMLIdPSessionRequest) Reset() { *m = CreateSAMLIdPSessio func (m *CreateSAMLIdPSessionRequest) String() string { return proto.CompactTextString(m) } func (*CreateSAMLIdPSessionRequest) ProtoMessage() {} func (*CreateSAMLIdPSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{50} + return fileDescriptor_0ffcffcda38ae159, []int{51} } func (m *CreateSAMLIdPSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4362,7 +4425,7 @@ func (m *CreateSAMLIdPSessionResponse) Reset() { *m = CreateSAMLIdPSessi func (m *CreateSAMLIdPSessionResponse) String() string { return proto.CompactTextString(m) } func (*CreateSAMLIdPSessionResponse) ProtoMessage() {} func (*CreateSAMLIdPSessionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{51} + return fileDescriptor_0ffcffcda38ae159, []int{52} } func (m *CreateSAMLIdPSessionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4411,7 +4474,7 @@ func (m *GetSnowflakeSessionRequest) Reset() { *m = GetSnowflakeSessionR func (m *GetSnowflakeSessionRequest) String() string { return proto.CompactTextString(m) } func (*GetSnowflakeSessionRequest) ProtoMessage() {} func (*GetSnowflakeSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{52} + return fileDescriptor_0ffcffcda38ae159, []int{53} } func (m *GetSnowflakeSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4460,7 +4523,7 @@ func (m *GetSnowflakeSessionResponse) Reset() { *m = GetSnowflakeSession func (m *GetSnowflakeSessionResponse) String() string { return proto.CompactTextString(m) } func (*GetSnowflakeSessionResponse) ProtoMessage() {} func (*GetSnowflakeSessionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{53} + return fileDescriptor_0ffcffcda38ae159, []int{54} } func (m *GetSnowflakeSessionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4509,7 +4572,7 @@ func (m *GetSAMLIdPSessionRequest) Reset() { *m = GetSAMLIdPSessionReque func (m *GetSAMLIdPSessionRequest) String() string { return proto.CompactTextString(m) } func (*GetSAMLIdPSessionRequest) ProtoMessage() {} func (*GetSAMLIdPSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{54} + return fileDescriptor_0ffcffcda38ae159, []int{55} } func (m *GetSAMLIdPSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4558,7 +4621,7 @@ func (m *GetSAMLIdPSessionResponse) Reset() { *m = GetSAMLIdPSessionResp func (m *GetSAMLIdPSessionResponse) String() string { return proto.CompactTextString(m) } func (*GetSAMLIdPSessionResponse) ProtoMessage() {} func (*GetSAMLIdPSessionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{55} + return fileDescriptor_0ffcffcda38ae159, []int{56} } func (m *GetSAMLIdPSessionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4606,7 +4669,7 @@ func (m *DeleteAppSessionRequest) Reset() { *m = DeleteAppSessionRequest func (m *DeleteAppSessionRequest) String() string { return proto.CompactTextString(m) } func (*DeleteAppSessionRequest) ProtoMessage() {} func (*DeleteAppSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{56} + return fileDescriptor_0ffcffcda38ae159, []int{57} } func (m *DeleteAppSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4654,7 +4717,7 @@ func (m *DeleteSnowflakeSessionRequest) Reset() { *m = DeleteSnowflakeSe func (m *DeleteSnowflakeSessionRequest) String() string { return proto.CompactTextString(m) } func (*DeleteSnowflakeSessionRequest) ProtoMessage() {} func (*DeleteSnowflakeSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{57} + return fileDescriptor_0ffcffcda38ae159, []int{58} } func (m *DeleteSnowflakeSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4702,7 +4765,7 @@ func (m *DeleteSAMLIdPSessionRequest) Reset() { *m = DeleteSAMLIdPSessio func (m *DeleteSAMLIdPSessionRequest) String() string { return proto.CompactTextString(m) } func (*DeleteSAMLIdPSessionRequest) ProtoMessage() {} func (*DeleteSAMLIdPSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{58} + return fileDescriptor_0ffcffcda38ae159, []int{59} } func (m *DeleteSAMLIdPSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4751,7 +4814,7 @@ func (m *DeleteUserAppSessionsRequest) Reset() { *m = DeleteUserAppSessi func (m *DeleteUserAppSessionsRequest) String() string { return proto.CompactTextString(m) } func (*DeleteUserAppSessionsRequest) ProtoMessage() {} func (*DeleteUserAppSessionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{59} + return fileDescriptor_0ffcffcda38ae159, []int{60} } func (m *DeleteUserAppSessionsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4800,7 +4863,7 @@ func (m *DeleteUserSAMLIdPSessionsRequest) Reset() { *m = DeleteUserSAML func (m *DeleteUserSAMLIdPSessionsRequest) String() string { return proto.CompactTextString(m) } func (*DeleteUserSAMLIdPSessionsRequest) ProtoMessage() {} func (*DeleteUserSAMLIdPSessionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{60} + return fileDescriptor_0ffcffcda38ae159, []int{61} } func (m *DeleteUserSAMLIdPSessionsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4849,7 +4912,7 @@ func (m *GetWebSessionResponse) Reset() { *m = GetWebSessionResponse{} } func (m *GetWebSessionResponse) String() string { return proto.CompactTextString(m) } func (*GetWebSessionResponse) ProtoMessage() {} func (*GetWebSessionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{61} + return fileDescriptor_0ffcffcda38ae159, []int{62} } func (m *GetWebSessionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4898,7 +4961,7 @@ func (m *GetWebSessionsResponse) Reset() { *m = GetWebSessionsResponse{} func (m *GetWebSessionsResponse) String() string { return proto.CompactTextString(m) } func (*GetWebSessionsResponse) ProtoMessage() {} func (*GetWebSessionsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{62} + return fileDescriptor_0ffcffcda38ae159, []int{63} } func (m *GetWebSessionsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4947,7 +5010,7 @@ func (m *GetWebTokenResponse) Reset() { *m = GetWebTokenResponse{} } func (m *GetWebTokenResponse) String() string { return proto.CompactTextString(m) } func (*GetWebTokenResponse) ProtoMessage() {} func (*GetWebTokenResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{63} + return fileDescriptor_0ffcffcda38ae159, []int{64} } func (m *GetWebTokenResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4996,7 +5059,7 @@ func (m *GetWebTokensResponse) Reset() { *m = GetWebTokensResponse{} } func (m *GetWebTokensResponse) String() string { return proto.CompactTextString(m) } func (*GetWebTokensResponse) ProtoMessage() {} func (*GetWebTokensResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{64} + return fileDescriptor_0ffcffcda38ae159, []int{65} } func (m *GetWebTokensResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5045,7 +5108,7 @@ func (m *UpsertKubernetesServerRequest) Reset() { *m = UpsertKubernetesS func (m *UpsertKubernetesServerRequest) String() string { return proto.CompactTextString(m) } func (*UpsertKubernetesServerRequest) ProtoMessage() {} func (*UpsertKubernetesServerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{65} + return fileDescriptor_0ffcffcda38ae159, []int{66} } func (m *UpsertKubernetesServerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5096,7 +5159,7 @@ func (m *DeleteKubernetesServerRequest) Reset() { *m = DeleteKubernetesS func (m *DeleteKubernetesServerRequest) String() string { return proto.CompactTextString(m) } func (*DeleteKubernetesServerRequest) ProtoMessage() {} func (*DeleteKubernetesServerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{66} + return fileDescriptor_0ffcffcda38ae159, []int{67} } func (m *DeleteKubernetesServerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5150,7 +5213,7 @@ func (m *DeleteAllKubernetesServersRequest) Reset() { *m = DeleteAllKube func (m *DeleteAllKubernetesServersRequest) String() string { return proto.CompactTextString(m) } func (*DeleteAllKubernetesServersRequest) ProtoMessage() {} func (*DeleteAllKubernetesServersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{67} + return fileDescriptor_0ffcffcda38ae159, []int{68} } func (m *DeleteAllKubernetesServersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5192,7 +5255,7 @@ func (m *UpsertDatabaseServerRequest) Reset() { *m = UpsertDatabaseServe func (m *UpsertDatabaseServerRequest) String() string { return proto.CompactTextString(m) } func (*UpsertDatabaseServerRequest) ProtoMessage() {} func (*UpsertDatabaseServerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{68} + return fileDescriptor_0ffcffcda38ae159, []int{69} } func (m *UpsertDatabaseServerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5245,7 +5308,7 @@ func (m *DeleteDatabaseServerRequest) Reset() { *m = DeleteDatabaseServe func (m *DeleteDatabaseServerRequest) String() string { return proto.CompactTextString(m) } func (*DeleteDatabaseServerRequest) ProtoMessage() {} func (*DeleteDatabaseServerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{69} + return fileDescriptor_0ffcffcda38ae159, []int{70} } func (m *DeleteDatabaseServerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5308,7 +5371,7 @@ func (m *DeleteAllDatabaseServersRequest) Reset() { *m = DeleteAllDataba func (m *DeleteAllDatabaseServersRequest) String() string { return proto.CompactTextString(m) } func (*DeleteAllDatabaseServersRequest) ProtoMessage() {} func (*DeleteAllDatabaseServersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{70} + return fileDescriptor_0ffcffcda38ae159, []int{71} } func (m *DeleteAllDatabaseServersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5357,7 +5420,7 @@ func (m *DatabaseServiceV1List) Reset() { *m = DatabaseServiceV1List{} } func (m *DatabaseServiceV1List) String() string { return proto.CompactTextString(m) } func (*DatabaseServiceV1List) ProtoMessage() {} func (*DatabaseServiceV1List) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{71} + return fileDescriptor_0ffcffcda38ae159, []int{72} } func (m *DatabaseServiceV1List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5406,7 +5469,7 @@ func (m *UpsertDatabaseServiceRequest) Reset() { *m = UpsertDatabaseServ func (m *UpsertDatabaseServiceRequest) String() string { return proto.CompactTextString(m) } func (*UpsertDatabaseServiceRequest) ProtoMessage() {} func (*UpsertDatabaseServiceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{72} + return fileDescriptor_0ffcffcda38ae159, []int{73} } func (m *UpsertDatabaseServiceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5453,7 +5516,7 @@ func (m *DeleteAllDatabaseServicesRequest) Reset() { *m = DeleteAllDatab func (m *DeleteAllDatabaseServicesRequest) String() string { return proto.CompactTextString(m) } func (*DeleteAllDatabaseServicesRequest) ProtoMessage() {} func (*DeleteAllDatabaseServicesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{73} + return fileDescriptor_0ffcffcda38ae159, []int{74} } func (m *DeleteAllDatabaseServicesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5498,7 +5561,7 @@ func (m *DatabaseCSRRequest) Reset() { *m = DatabaseCSRRequest{} } func (m *DatabaseCSRRequest) String() string { return proto.CompactTextString(m) } func (*DatabaseCSRRequest) ProtoMessage() {} func (*DatabaseCSRRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{74} + return fileDescriptor_0ffcffcda38ae159, []int{75} } func (m *DatabaseCSRRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5556,7 +5619,7 @@ func (m *DatabaseCSRResponse) Reset() { *m = DatabaseCSRResponse{} } func (m *DatabaseCSRResponse) String() string { return proto.CompactTextString(m) } func (*DatabaseCSRResponse) ProtoMessage() {} func (*DatabaseCSRResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{75} + return fileDescriptor_0ffcffcda38ae159, []int{76} } func (m *DatabaseCSRResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5626,7 +5689,7 @@ func (m *DatabaseCertRequest) Reset() { *m = DatabaseCertRequest{} } func (m *DatabaseCertRequest) String() string { return proto.CompactTextString(m) } func (*DatabaseCertRequest) ProtoMessage() {} func (*DatabaseCertRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{76} + return fileDescriptor_0ffcffcda38ae159, []int{77} } func (m *DatabaseCertRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5720,7 +5783,7 @@ func (m *DatabaseCertResponse) Reset() { *m = DatabaseCertResponse{} } func (m *DatabaseCertResponse) String() string { return proto.CompactTextString(m) } func (*DatabaseCertResponse) ProtoMessage() {} func (*DatabaseCertResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{77} + return fileDescriptor_0ffcffcda38ae159, []int{78} } func (m *DatabaseCertResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5776,7 +5839,7 @@ func (m *SnowflakeJWTRequest) Reset() { *m = SnowflakeJWTRequest{} } func (m *SnowflakeJWTRequest) String() string { return proto.CompactTextString(m) } func (*SnowflakeJWTRequest) ProtoMessage() {} func (*SnowflakeJWTRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{78} + return fileDescriptor_0ffcffcda38ae159, []int{79} } func (m *SnowflakeJWTRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5831,7 +5894,7 @@ func (m *SnowflakeJWTResponse) Reset() { *m = SnowflakeJWTResponse{} } func (m *SnowflakeJWTResponse) String() string { return proto.CompactTextString(m) } func (*SnowflakeJWTResponse) ProtoMessage() {} func (*SnowflakeJWTResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{79} + return fileDescriptor_0ffcffcda38ae159, []int{80} } func (m *SnowflakeJWTResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5880,7 +5943,7 @@ func (m *GetRoleRequest) Reset() { *m = GetRoleRequest{} } func (m *GetRoleRequest) String() string { return proto.CompactTextString(m) } func (*GetRoleRequest) ProtoMessage() {} func (*GetRoleRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{80} + return fileDescriptor_0ffcffcda38ae159, []int{81} } func (m *GetRoleRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5929,7 +5992,7 @@ func (m *GetRolesResponse) Reset() { *m = GetRolesResponse{} } func (m *GetRolesResponse) String() string { return proto.CompactTextString(m) } func (*GetRolesResponse) ProtoMessage() {} func (*GetRolesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{81} + return fileDescriptor_0ffcffcda38ae159, []int{82} } func (m *GetRolesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5984,7 +6047,7 @@ func (m *ListRolesRequest) Reset() { *m = ListRolesRequest{} } func (m *ListRolesRequest) String() string { return proto.CompactTextString(m) } func (*ListRolesRequest) ProtoMessage() {} func (*ListRolesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{82} + return fileDescriptor_0ffcffcda38ae159, []int{83} } func (m *ListRolesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6049,7 +6112,7 @@ func (m *ListRolesResponse) Reset() { *m = ListRolesResponse{} } func (m *ListRolesResponse) String() string { return proto.CompactTextString(m) } func (*ListRolesResponse) ProtoMessage() {} func (*ListRolesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{83} + return fileDescriptor_0ffcffcda38ae159, []int{84} } func (m *ListRolesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6105,7 +6168,7 @@ func (m *CreateRoleRequest) Reset() { *m = CreateRoleRequest{} } func (m *CreateRoleRequest) String() string { return proto.CompactTextString(m) } func (*CreateRoleRequest) ProtoMessage() {} func (*CreateRoleRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{84} + return fileDescriptor_0ffcffcda38ae159, []int{85} } func (m *CreateRoleRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6154,7 +6217,7 @@ func (m *UpdateRoleRequest) Reset() { *m = UpdateRoleRequest{} } func (m *UpdateRoleRequest) String() string { return proto.CompactTextString(m) } func (*UpdateRoleRequest) ProtoMessage() {} func (*UpdateRoleRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{85} + return fileDescriptor_0ffcffcda38ae159, []int{86} } func (m *UpdateRoleRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6203,7 +6266,7 @@ func (m *UpsertRoleRequest) Reset() { *m = UpsertRoleRequest{} } func (m *UpsertRoleRequest) String() string { return proto.CompactTextString(m) } func (*UpsertRoleRequest) ProtoMessage() {} func (*UpsertRoleRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{86} + return fileDescriptor_0ffcffcda38ae159, []int{87} } func (m *UpsertRoleRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6252,7 +6315,7 @@ func (m *DeleteRoleRequest) Reset() { *m = DeleteRoleRequest{} } func (m *DeleteRoleRequest) String() string { return proto.CompactTextString(m) } func (*DeleteRoleRequest) ProtoMessage() {} func (*DeleteRoleRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{87} + return fileDescriptor_0ffcffcda38ae159, []int{88} } func (m *DeleteRoleRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6317,7 +6380,7 @@ func (m *MFAAuthenticateChallenge) Reset() { *m = MFAAuthenticateChallen func (m *MFAAuthenticateChallenge) String() string { return proto.CompactTextString(m) } func (*MFAAuthenticateChallenge) ProtoMessage() {} func (*MFAAuthenticateChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{88} + return fileDescriptor_0ffcffcda38ae159, []int{89} } func (m *MFAAuthenticateChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6383,7 +6446,7 @@ func (m *MFAAuthenticateResponse) Reset() { *m = MFAAuthenticateResponse func (m *MFAAuthenticateResponse) String() string { return proto.CompactTextString(m) } func (*MFAAuthenticateResponse) ProtoMessage() {} func (*MFAAuthenticateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{89} + return fileDescriptor_0ffcffcda38ae159, []int{90} } func (m *MFAAuthenticateResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6468,7 +6531,7 @@ func (m *TOTPChallenge) Reset() { *m = TOTPChallenge{} } func (m *TOTPChallenge) String() string { return proto.CompactTextString(m) } func (*TOTPChallenge) ProtoMessage() {} func (*TOTPChallenge) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{90} + return fileDescriptor_0ffcffcda38ae159, []int{91} } func (m *TOTPChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6509,7 +6572,7 @@ func (m *TOTPResponse) Reset() { *m = TOTPResponse{} } func (m *TOTPResponse) String() string { return proto.CompactTextString(m) } func (*TOTPResponse) ProtoMessage() {} func (*TOTPResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{91} + return fileDescriptor_0ffcffcda38ae159, []int{92} } func (m *TOTPResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6562,7 +6625,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{92} + return fileDescriptor_0ffcffcda38ae159, []int{93} } func (m *MFARegisterChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6651,7 +6714,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{93} + return fileDescriptor_0ffcffcda38ae159, []int{94} } func (m *MFARegisterResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6754,7 +6817,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{94} + return fileDescriptor_0ffcffcda38ae159, []int{95} } func (m *TOTPRegisterChallenge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6853,7 +6916,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{95} + return fileDescriptor_0ffcffcda38ae159, []int{96} } func (m *TOTPRegisterResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6907,7 +6970,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{96} + return fileDescriptor_0ffcffcda38ae159, []int{97} } func (m *AddMFADeviceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6947,7 +7010,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{97} + return fileDescriptor_0ffcffcda38ae159, []int{98} } func (m *AddMFADeviceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6987,7 +7050,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{98} + return fileDescriptor_0ffcffcda38ae159, []int{99} } func (m *DeleteMFADeviceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7027,7 +7090,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{99} + return fileDescriptor_0ffcffcda38ae159, []int{100} } func (m *DeleteMFADeviceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7082,7 +7145,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{100} + return fileDescriptor_0ffcffcda38ae159, []int{101} } func (m *DeleteMFADeviceSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7162,7 +7225,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{101} + return fileDescriptor_0ffcffcda38ae159, []int{102} } func (m *AddMFADeviceSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7238,7 +7301,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{102} + return fileDescriptor_0ffcffcda38ae159, []int{103} } func (m *AddMFADeviceSyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7293,7 +7356,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{103} + return fileDescriptor_0ffcffcda38ae159, []int{104} } func (m *GetMFADevicesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7341,7 +7404,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{104} + return fileDescriptor_0ffcffcda38ae159, []int{105} } func (m *GetMFADevicesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7388,7 +7451,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{105} + return fileDescriptor_0ffcffcda38ae159, []int{106} } func (m *UserSingleUseCertsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7428,7 +7491,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{106} + return fileDescriptor_0ffcffcda38ae159, []int{107} } func (m *UserSingleUseCertsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7467,6 +7530,7 @@ type IsMFARequiredRequest struct { // *IsMFARequiredRequest_WindowsDesktop // *IsMFARequiredRequest_AdminAction // *IsMFARequiredRequest_App + // *IsMFARequiredRequest_GitServer Target isIsMFARequiredRequest_Target `protobuf_oneof:"Target"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -7477,7 +7541,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{107} + return fileDescriptor_0ffcffcda38ae159, []int{108} } func (m *IsMFARequiredRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7530,6 +7594,9 @@ type IsMFARequiredRequest_AdminAction struct { type IsMFARequiredRequest_App struct { App *RouteToApp `protobuf:"bytes,6,opt,name=App,proto3,oneof" json:"App,omitempty"` } +type IsMFARequiredRequest_GitServer struct { + GitServer *RouteToGitServer `protobuf:"bytes,7,opt,name=GitServer,proto3,oneof" json:"GitServer,omitempty"` +} func (*IsMFARequiredRequest_KubernetesCluster) isIsMFARequiredRequest_Target() {} func (*IsMFARequiredRequest_Database) isIsMFARequiredRequest_Target() {} @@ -7537,6 +7604,7 @@ func (*IsMFARequiredRequest_Node) isIsMFARequiredRequest_Target() { func (*IsMFARequiredRequest_WindowsDesktop) isIsMFARequiredRequest_Target() {} func (*IsMFARequiredRequest_AdminAction) isIsMFARequiredRequest_Target() {} func (*IsMFARequiredRequest_App) isIsMFARequiredRequest_Target() {} +func (*IsMFARequiredRequest_GitServer) isIsMFARequiredRequest_Target() {} func (m *IsMFARequiredRequest) GetTarget() isIsMFARequiredRequest_Target { if m != nil { @@ -7587,6 +7655,13 @@ func (m *IsMFARequiredRequest) GetApp() *RouteToApp { return nil } +func (m *IsMFARequiredRequest) GetGitServer() *RouteToGitServer { + if x, ok := m.GetTarget().(*IsMFARequiredRequest_GitServer); ok { + return x.GitServer + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*IsMFARequiredRequest) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -7596,6 +7671,7 @@ func (*IsMFARequiredRequest) XXX_OneofWrappers() []interface{} { (*IsMFARequiredRequest_WindowsDesktop)(nil), (*IsMFARequiredRequest_AdminAction)(nil), (*IsMFARequiredRequest_App)(nil), + (*IsMFARequiredRequest_GitServer)(nil), } } @@ -7615,7 +7691,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{108} + return fileDescriptor_0ffcffcda38ae159, []int{109} } func (m *StreamSessionEventsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7673,7 +7749,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{109} + return fileDescriptor_0ffcffcda38ae159, []int{110} } func (m *NodeLogin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7727,7 +7803,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{110} + return fileDescriptor_0ffcffcda38ae159, []int{111} } func (m *AdminAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7772,7 +7848,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{111} + return fileDescriptor_0ffcffcda38ae159, []int{112} } func (m *IsMFARequiredResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7842,7 +7918,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{112} + return fileDescriptor_0ffcffcda38ae159, []int{113} } func (m *GetEventsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7943,7 +8019,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{113} + return fileDescriptor_0ffcffcda38ae159, []int{114} } func (m *GetSessionEventsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8023,7 +8099,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{114} + return fileDescriptor_0ffcffcda38ae159, []int{115} } func (m *Events) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8081,7 +8157,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{115} + return fileDescriptor_0ffcffcda38ae159, []int{116} } func (m *GetLocksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8136,7 +8212,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{116} + return fileDescriptor_0ffcffcda38ae159, []int{117} } func (m *GetLocksResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8184,7 +8260,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{117} + return fileDescriptor_0ffcffcda38ae159, []int{118} } func (m *GetLockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8232,7 +8308,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{118} + return fileDescriptor_0ffcffcda38ae159, []int{119} } func (m *DeleteLockRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8282,7 +8358,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{119} + return fileDescriptor_0ffcffcda38ae159, []int{120} } func (m *ReplaceRemoteLocksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8338,7 +8414,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{120} + return fileDescriptor_0ffcffcda38ae159, []int{121} } func (m *GetWindowsDesktopServicesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8387,7 +8463,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{121} + return fileDescriptor_0ffcffcda38ae159, []int{122} } func (m *GetWindowsDesktopServiceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8436,7 +8512,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{122} + return fileDescriptor_0ffcffcda38ae159, []int{123} } func (m *GetWindowsDesktopServiceResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8485,7 +8561,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{123} + return fileDescriptor_0ffcffcda38ae159, []int{124} } func (m *DeleteWindowsDesktopServiceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8534,7 +8610,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{124} + return fileDescriptor_0ffcffcda38ae159, []int{125} } func (m *GetWindowsDesktopsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8587,7 +8663,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{125} + return fileDescriptor_0ffcffcda38ae159, []int{126} } func (m *DeleteWindowsDesktopRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8648,7 +8724,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{126} + return fileDescriptor_0ffcffcda38ae159, []int{127} } func (m *WindowsDesktopCertRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8711,7 +8787,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{127} + return fileDescriptor_0ffcffcda38ae159, []int{128} } func (m *WindowsDesktopCertResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8760,7 +8836,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{128} + return fileDescriptor_0ffcffcda38ae159, []int{129} } func (m *DesktopBootstrapScriptResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8811,7 +8887,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{129} + return fileDescriptor_0ffcffcda38ae159, []int{130} } func (m *ListSAMLIdPServiceProvidersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8871,7 +8947,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{130} + return fileDescriptor_0ffcffcda38ae159, []int{131} } func (m *ListSAMLIdPServiceProvidersResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8934,7 +9010,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{131} + return fileDescriptor_0ffcffcda38ae159, []int{132} } func (m *GetSAMLIdPServiceProviderRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8983,7 +9059,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{132} + return fileDescriptor_0ffcffcda38ae159, []int{133} } func (m *DeleteSAMLIdPServiceProviderRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9034,7 +9110,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{133} + return fileDescriptor_0ffcffcda38ae159, []int{134} } func (m *ListUserGroupsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9094,7 +9170,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{134} + return fileDescriptor_0ffcffcda38ae159, []int{135} } func (m *ListUserGroupsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9157,7 +9233,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{135} + return fileDescriptor_0ffcffcda38ae159, []int{136} } func (m *GetUserGroupRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9206,7 +9282,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{136} + return fileDescriptor_0ffcffcda38ae159, []int{137} } func (m *DeleteUserGroupRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9255,7 +9331,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{137} + return fileDescriptor_0ffcffcda38ae159, []int{138} } func (m *CertAuthorityRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9304,7 +9380,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{138} + return fileDescriptor_0ffcffcda38ae159, []int{139} } func (m *CRL) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9374,7 +9450,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{139} + return fileDescriptor_0ffcffcda38ae159, []int{140} } func (m *ChangeUserAuthenticationRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9460,7 +9536,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{140} + return fileDescriptor_0ffcffcda38ae159, []int{141} } func (m *ChangeUserAuthenticationResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9533,7 +9609,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{141} + return fileDescriptor_0ffcffcda38ae159, []int{142} } func (m *StartAccountRecoveryRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9608,7 +9684,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{142} + return fileDescriptor_0ffcffcda38ae159, []int{143} } func (m *VerifyAccountRecoveryRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9723,7 +9799,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{143} + return fileDescriptor_0ffcffcda38ae159, []int{144} } func (m *CompleteAccountRecoveryRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9829,7 +9905,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{144} + return fileDescriptor_0ffcffcda38ae159, []int{145} } func (m *RecoveryCodes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9892,7 +9968,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{145} + return fileDescriptor_0ffcffcda38ae159, []int{146} } func (m *CreateAccountRecoveryCodesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9943,7 +10019,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{146} + return fileDescriptor_0ffcffcda38ae159, []int{147} } func (m *GetAccountRecoveryTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9991,7 +10067,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{147} + return fileDescriptor_0ffcffcda38ae159, []int{148} } func (m *GetAccountRecoveryCodesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10033,7 +10109,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{148} + return fileDescriptor_0ffcffcda38ae159, []int{149} } func (m *UserCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10087,7 +10163,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{149} + return fileDescriptor_0ffcffcda38ae159, []int{150} } func (m *ContextUser) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10127,7 +10203,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{150} + return fileDescriptor_0ffcffcda38ae159, []int{151} } func (m *Passwordless) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10191,7 +10267,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{151} + return fileDescriptor_0ffcffcda38ae159, []int{152} } func (m *CreateAuthenticateChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10325,7 +10401,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{152} + return fileDescriptor_0ffcffcda38ae159, []int{153} } func (m *CreatePrivilegeTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10394,7 +10470,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{153} + return fileDescriptor_0ffcffcda38ae159, []int{154} } func (m *CreateRegisterChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10467,6 +10543,7 @@ type PaginatedResource struct { // *PaginatedResource_UserGroup // *PaginatedResource_AppServerOrSAMLIdPServiceProvider // *PaginatedResource_SAMLIdPServiceProvider + // *PaginatedResource_GitServer Resource isPaginatedResource_Resource `protobuf_oneof:"resource"` // Logins allowed for the included resource. Only to be populated for SSH and Desktops. Logins []string `protobuf:"bytes,13,rep,name=Logins,proto3" json:"logins,omitempty"` @@ -10482,7 +10559,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{154} + return fileDescriptor_0ffcffcda38ae159, []int{155} } func (m *PaginatedResource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10550,6 +10627,9 @@ type PaginatedResource_AppServerOrSAMLIdPServiceProvider struct { type PaginatedResource_SAMLIdPServiceProvider struct { SAMLIdPServiceProvider *types.SAMLIdPServiceProviderV1 `protobuf:"bytes,12,opt,name=SAMLIdPServiceProvider,proto3,oneof" json:"saml_idp_service_provider,omitempty"` } +type PaginatedResource_GitServer struct { + GitServer *types.ServerV2 `protobuf:"bytes,15,opt,name=git_server,json=gitServer,proto3,oneof" json:"git_server,omitempty"` +} func (*PaginatedResource_DatabaseServer) isPaginatedResource_Resource() {} func (*PaginatedResource_AppServer) isPaginatedResource_Resource() {} @@ -10562,6 +10642,7 @@ func (*PaginatedResource_DatabaseService) isPaginatedResource_Resource() func (*PaginatedResource_UserGroup) isPaginatedResource_Resource() {} func (*PaginatedResource_AppServerOrSAMLIdPServiceProvider) isPaginatedResource_Resource() {} func (*PaginatedResource_SAMLIdPServiceProvider) isPaginatedResource_Resource() {} +func (*PaginatedResource_GitServer) isPaginatedResource_Resource() {} func (m *PaginatedResource) GetResource() isPaginatedResource_Resource { if m != nil { @@ -10648,6 +10729,13 @@ func (m *PaginatedResource) GetSAMLIdPServiceProvider() *types.SAMLIdPServicePro return nil } +func (m *PaginatedResource) GetGitServer() *types.ServerV2 { + if x, ok := m.GetResource().(*PaginatedResource_GitServer); ok { + return x.GitServer + } + return nil +} + func (m *PaginatedResource) GetLogins() []string { if m != nil { return m.Logins @@ -10676,6 +10764,7 @@ func (*PaginatedResource) XXX_OneofWrappers() []interface{} { (*PaginatedResource_UserGroup)(nil), (*PaginatedResource_AppServerOrSAMLIdPServiceProvider)(nil), (*PaginatedResource_SAMLIdPServiceProvider)(nil), + (*PaginatedResource_GitServer)(nil), } } @@ -10723,7 +10812,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{155} + return fileDescriptor_0ffcffcda38ae159, []int{156} } func (m *ListUnifiedResourcesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10860,7 +10949,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{156} + return fileDescriptor_0ffcffcda38ae159, []int{157} } func (m *ListUnifiedResourcesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10956,7 +11045,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{157} + return fileDescriptor_0ffcffcda38ae159, []int{158} } func (m *ListResourcesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11092,7 +11181,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{158} + return fileDescriptor_0ffcffcda38ae159, []int{159} } func (m *GetSSHTargetsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11148,7 +11237,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{159} + return fileDescriptor_0ffcffcda38ae159, []int{160} } func (m *GetSSHTargetsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11203,7 +11292,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{160} + return fileDescriptor_0ffcffcda38ae159, []int{161} } func (m *ListResourcesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11268,7 +11357,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{161} + return fileDescriptor_0ffcffcda38ae159, []int{162} } func (m *CreateSessionTrackerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11317,7 +11406,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{162} + return fileDescriptor_0ffcffcda38ae159, []int{163} } func (m *GetSessionTrackerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11366,7 +11455,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{163} + return fileDescriptor_0ffcffcda38ae159, []int{164} } func (m *RemoveSessionTrackerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11414,7 +11503,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{164} + return fileDescriptor_0ffcffcda38ae159, []int{165} } func (m *SessionTrackerUpdateState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11462,7 +11551,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{165} + return fileDescriptor_0ffcffcda38ae159, []int{166} } func (m *SessionTrackerAddParticipant) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11510,7 +11599,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{166} + return fileDescriptor_0ffcffcda38ae159, []int{167} } func (m *SessionTrackerRemoveParticipant) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11559,7 +11648,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{167} + return fileDescriptor_0ffcffcda38ae159, []int{168} } func (m *SessionTrackerUpdateExpiry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11614,7 +11703,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{168} + return fileDescriptor_0ffcffcda38ae159, []int{169} } func (m *UpdateSessionTrackerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11732,7 +11821,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{169} + return fileDescriptor_0ffcffcda38ae159, []int{170} } func (m *PresenceMFAChallengeRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11783,7 +11872,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{170} + return fileDescriptor_0ffcffcda38ae159, []int{171} } func (m *PresenceMFAChallengeSend) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11870,7 +11959,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{171} + return fileDescriptor_0ffcffcda38ae159, []int{172} } func (m *GetDomainNameResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11919,7 +12008,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{172} + return fileDescriptor_0ffcffcda38ae159, []int{173} } func (m *GetClusterCACertResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11967,7 +12056,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{173} + return fileDescriptor_0ffcffcda38ae159, []int{174} } func (m *GetLicenseResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12015,7 +12104,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{174} + return fileDescriptor_0ffcffcda38ae159, []int{175} } func (m *ListReleasesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12064,7 +12153,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{175} + return fileDescriptor_0ffcffcda38ae159, []int{176} } func (m *GetOIDCAuthRequestRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12113,7 +12202,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{176} + return fileDescriptor_0ffcffcda38ae159, []int{177} } func (m *GetSAMLAuthRequestRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12162,7 +12251,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{177} + return fileDescriptor_0ffcffcda38ae159, []int{178} } func (m *GetGithubAuthRequestRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12198,6 +12287,63 @@ func (m *GetGithubAuthRequestRequest) GetStateToken() string { return "" } +type CreateGithubAuthRequestForUserRequest struct { + // CertRequest is the reissue cert request + CertRequest *UserCertsRequest `protobuf:"bytes,1,opt,name=cert_request,json=certRequest,proto3" json:"cert_request,omitempty"` + // RedirectUrl is the redirect url used by client browser. + RedirectUrl string `protobuf:"bytes,2,opt,name=redirect_url,json=redirectUrl,proto3" json:"redirect_url,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CreateGithubAuthRequestForUserRequest) Reset() { *m = CreateGithubAuthRequestForUserRequest{} } +func (m *CreateGithubAuthRequestForUserRequest) String() string { return proto.CompactTextString(m) } +func (*CreateGithubAuthRequestForUserRequest) ProtoMessage() {} +func (*CreateGithubAuthRequestForUserRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_0ffcffcda38ae159, []int{179} +} +func (m *CreateGithubAuthRequestForUserRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CreateGithubAuthRequestForUserRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CreateGithubAuthRequestForUserRequest.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 *CreateGithubAuthRequestForUserRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CreateGithubAuthRequestForUserRequest.Merge(m, src) +} +func (m *CreateGithubAuthRequestForUserRequest) XXX_Size() int { + return m.Size() +} +func (m *CreateGithubAuthRequestForUserRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CreateGithubAuthRequestForUserRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CreateGithubAuthRequestForUserRequest proto.InternalMessageInfo + +func (m *CreateGithubAuthRequestForUserRequest) GetCertRequest() *UserCertsRequest { + if m != nil { + return m.CertRequest + } + return nil +} + +func (m *CreateGithubAuthRequestForUserRequest) GetRedirectUrl() string { + if m != nil { + return m.RedirectUrl + } + return "" +} + // CreateOIDCConnectorRequest is a request for CreateOIDCConnector. type CreateOIDCConnectorRequest struct { // Connector to be created. @@ -12211,7 +12357,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{178} + return fileDescriptor_0ffcffcda38ae159, []int{180} } func (m *CreateOIDCConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12260,7 +12406,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{179} + return fileDescriptor_0ffcffcda38ae159, []int{181} } func (m *UpdateOIDCConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12309,7 +12455,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{180} + return fileDescriptor_0ffcffcda38ae159, []int{182} } func (m *UpsertOIDCConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12358,7 +12504,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{181} + return fileDescriptor_0ffcffcda38ae159, []int{183} } func (m *CreateSAMLConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12407,7 +12553,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{182} + return fileDescriptor_0ffcffcda38ae159, []int{184} } func (m *UpdateSAMLConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12456,7 +12602,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{183} + return fileDescriptor_0ffcffcda38ae159, []int{185} } func (m *UpsertSAMLConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12505,7 +12651,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{184} + return fileDescriptor_0ffcffcda38ae159, []int{186} } func (m *CreateGithubConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12554,7 +12700,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{185} + return fileDescriptor_0ffcffcda38ae159, []int{187} } func (m *UpdateGithubConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12603,7 +12749,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{186} + return fileDescriptor_0ffcffcda38ae159, []int{188} } func (m *UpsertGithubConnectorRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12654,7 +12800,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{187} + return fileDescriptor_0ffcffcda38ae159, []int{189} } func (m *GetSSODiagnosticInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12720,7 +12866,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{188} + return fileDescriptor_0ffcffcda38ae159, []int{190} } func (m *SystemRoleAssertion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12790,7 +12936,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{189} + return fileDescriptor_0ffcffcda38ae159, []int{191} } func (m *SystemRoleAssertionSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12859,7 +13005,7 @@ func (m *UpstreamInventoryOneOf) Reset() { *m = UpstreamInventoryOneOf{} func (m *UpstreamInventoryOneOf) String() string { return proto.CompactTextString(m) } func (*UpstreamInventoryOneOf) ProtoMessage() {} func (*UpstreamInventoryOneOf) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{190} + return fileDescriptor_0ffcffcda38ae159, []int{192} } func (m *UpstreamInventoryOneOf) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12986,7 +13132,7 @@ func (m *DownstreamInventoryOneOf) Reset() { *m = DownstreamInventoryOne func (m *DownstreamInventoryOneOf) String() string { return proto.CompactTextString(m) } func (*DownstreamInventoryOneOf) ProtoMessage() {} func (*DownstreamInventoryOneOf) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{191} + return fileDescriptor_0ffcffcda38ae159, []int{193} } func (m *DownstreamInventoryOneOf) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13085,7 +13231,7 @@ func (m *DownstreamInventoryPing) Reset() { *m = DownstreamInventoryPing func (m *DownstreamInventoryPing) String() string { return proto.CompactTextString(m) } func (*DownstreamInventoryPing) ProtoMessage() {} func (*DownstreamInventoryPing) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{192} + return fileDescriptor_0ffcffcda38ae159, []int{194} } func (m *DownstreamInventoryPing) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13134,7 +13280,7 @@ func (m *UpstreamInventoryPong) Reset() { *m = UpstreamInventoryPong{} } func (m *UpstreamInventoryPong) String() string { return proto.CompactTextString(m) } func (*UpstreamInventoryPong) ProtoMessage() {} func (*UpstreamInventoryPong) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{193} + return fileDescriptor_0ffcffcda38ae159, []int{195} } func (m *UpstreamInventoryPong) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13201,7 +13347,7 @@ func (m *UpstreamInventoryHello) Reset() { *m = UpstreamInventoryHello{} func (m *UpstreamInventoryHello) String() string { return proto.CompactTextString(m) } func (*UpstreamInventoryHello) ProtoMessage() {} func (*UpstreamInventoryHello) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{194} + return fileDescriptor_0ffcffcda38ae159, []int{196} } func (m *UpstreamInventoryHello) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13301,7 +13447,7 @@ func (m *UpstreamInventoryAgentMetadata) Reset() { *m = UpstreamInventor func (m *UpstreamInventoryAgentMetadata) String() string { return proto.CompactTextString(m) } func (*UpstreamInventoryAgentMetadata) ProtoMessage() {} func (*UpstreamInventoryAgentMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{195} + return fileDescriptor_0ffcffcda38ae159, []int{197} } func (m *UpstreamInventoryAgentMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13403,7 +13549,7 @@ func (m *DownstreamInventoryHello) Reset() { *m = DownstreamInventoryHel func (m *DownstreamInventoryHello) String() string { return proto.CompactTextString(m) } func (*DownstreamInventoryHello) ProtoMessage() {} func (*DownstreamInventoryHello) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{196} + return fileDescriptor_0ffcffcda38ae159, []int{198} } func (m *DownstreamInventoryHello) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13506,7 +13652,7 @@ func (m *DownstreamInventoryHello_SupportedCapabilities) String() string { } func (*DownstreamInventoryHello_SupportedCapabilities) ProtoMessage() {} func (*DownstreamInventoryHello_SupportedCapabilities) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{196, 0} + return fileDescriptor_0ffcffcda38ae159, []int{198, 0} } func (m *DownstreamInventoryHello_SupportedCapabilities) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13679,7 +13825,7 @@ func (m *InventoryUpdateLabelsRequest) Reset() { *m = InventoryUpdateLab func (m *InventoryUpdateLabelsRequest) String() string { return proto.CompactTextString(m) } func (*InventoryUpdateLabelsRequest) ProtoMessage() {} func (*InventoryUpdateLabelsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{197} + return fileDescriptor_0ffcffcda38ae159, []int{199} } func (m *InventoryUpdateLabelsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13745,7 +13891,7 @@ func (m *DownstreamInventoryUpdateLabels) Reset() { *m = DownstreamInven func (m *DownstreamInventoryUpdateLabels) String() string { return proto.CompactTextString(m) } func (*DownstreamInventoryUpdateLabels) ProtoMessage() {} func (*DownstreamInventoryUpdateLabels) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{198} + return fileDescriptor_0ffcffcda38ae159, []int{200} } func (m *DownstreamInventoryUpdateLabels) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13810,7 +13956,7 @@ func (m *InventoryHeartbeat) Reset() { *m = InventoryHeartbeat{} } func (m *InventoryHeartbeat) String() string { return proto.CompactTextString(m) } func (*InventoryHeartbeat) ProtoMessage() {} func (*InventoryHeartbeat) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{199} + return fileDescriptor_0ffcffcda38ae159, []int{201} } func (m *InventoryHeartbeat) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13882,7 +14028,7 @@ func (m *UpstreamInventoryGoodbye) Reset() { *m = UpstreamInventoryGoodb func (m *UpstreamInventoryGoodbye) String() string { return proto.CompactTextString(m) } func (*UpstreamInventoryGoodbye) ProtoMessage() {} func (*UpstreamInventoryGoodbye) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{200} + return fileDescriptor_0ffcffcda38ae159, []int{202} } func (m *UpstreamInventoryGoodbye) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13932,7 +14078,7 @@ func (m *InventoryStatusRequest) Reset() { *m = InventoryStatusRequest{} func (m *InventoryStatusRequest) String() string { return proto.CompactTextString(m) } func (*InventoryStatusRequest) ProtoMessage() {} func (*InventoryStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{201} + return fileDescriptor_0ffcffcda38ae159, []int{203} } func (m *InventoryStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13990,7 +14136,7 @@ func (m *InventoryStatusSummary) Reset() { *m = InventoryStatusSummary{} func (m *InventoryStatusSummary) String() string { return proto.CompactTextString(m) } func (*InventoryStatusSummary) ProtoMessage() {} func (*InventoryStatusSummary) Descriptor() ([]byte, []int) { - return fileDescriptor_0ffcffcda38ae159, []int{202} + return fileDescriptor_0ffcffcda38ae159, []int{204} } func (m *InventoryStatusSummary) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14067,7 +14213,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{203} + return fileDescriptor_0ffcffcda38ae159, []int{205} } func (m *InventoryConnectedServiceCountsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14109,7 +14255,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{204} + return fileDescriptor_0ffcffcda38ae159, []int{206} } func (m *InventoryConnectedServiceCounts) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14163,7 +14309,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{205} + return fileDescriptor_0ffcffcda38ae159, []int{207} } func (m *InventoryPingRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14219,7 +14365,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{206} + return fileDescriptor_0ffcffcda38ae159, []int{208} } func (m *InventoryPingResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14268,7 +14414,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{207} + return fileDescriptor_0ffcffcda38ae159, []int{209} } func (m *GetClusterAlertsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14315,7 +14461,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{208} + return fileDescriptor_0ffcffcda38ae159, []int{210} } func (m *GetAlertAcksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14357,7 +14503,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{209} + return fileDescriptor_0ffcffcda38ae159, []int{211} } func (m *GetAlertAcksResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14407,7 +14553,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{210} + return fileDescriptor_0ffcffcda38ae159, []int{212} } func (m *ClearAlertAcksRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14456,7 +14602,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{211} + return fileDescriptor_0ffcffcda38ae159, []int{213} } func (m *UpsertClusterAlertRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14505,7 +14651,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{212} + return fileDescriptor_0ffcffcda38ae159, []int{214} } func (m *GetConnectionDiagnosticRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14556,7 +14702,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{213} + return fileDescriptor_0ffcffcda38ae159, []int{215} } func (m *AppendDiagnosticTraceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14611,7 +14757,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{214} + return fileDescriptor_0ffcffcda38ae159, []int{216} } func (m *SubmitUsageEventRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14658,7 +14804,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{215} + return fileDescriptor_0ffcffcda38ae159, []int{217} } func (m *GetLicenseRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14698,7 +14844,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{216} + return fileDescriptor_0ffcffcda38ae159, []int{218} } func (m *ListReleasesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14742,7 +14888,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{217} + return fileDescriptor_0ffcffcda38ae159, []int{219} } func (m *CreateTokenV2Request) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14819,7 +14965,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{218} + return fileDescriptor_0ffcffcda38ae159, []int{220} } func (m *UpsertTokenV2Request) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14894,7 +15040,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{219} + return fileDescriptor_0ffcffcda38ae159, []int{221} } func (m *GetHeadlessAuthenticationRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14952,7 +15098,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{220} + return fileDescriptor_0ffcffcda38ae159, []int{222} } func (m *UpdateHeadlessAuthenticationStateRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15018,7 +15164,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{221} + return fileDescriptor_0ffcffcda38ae159, []int{223} } func (m *ExportUpgradeWindowsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15084,7 +15230,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{222} + return fileDescriptor_0ffcffcda38ae159, []int{224} } func (m *ExportUpgradeWindowsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15159,7 +15305,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{223} + return fileDescriptor_0ffcffcda38ae159, []int{225} } func (m *ListAccessRequestsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15238,7 +15384,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{224} + return fileDescriptor_0ffcffcda38ae159, []int{226} } func (m *ListAccessRequestsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15294,7 +15440,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{225} + return fileDescriptor_0ffcffcda38ae159, []int{227} } func (m *AccessRequestAllowedPromotionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15343,7 +15489,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{226} + return fileDescriptor_0ffcffcda38ae159, []int{228} } func (m *AccessRequestAllowedPromotionResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15400,6 +15546,7 @@ func init() { proto.RegisterType((*UserCertsRequest)(nil), "proto.UserCertsRequest") proto.RegisterType((*RouteToDatabase)(nil), "proto.RouteToDatabase") proto.RegisterType((*RouteToWindowsDesktop)(nil), "proto.RouteToWindowsDesktop") + proto.RegisterType((*RouteToGitServer)(nil), "proto.RouteToGitServer") proto.RegisterType((*RouteToApp)(nil), "proto.RouteToApp") proto.RegisterType((*GetUserRequest)(nil), "proto.GetUserRequest") proto.RegisterType((*GetUsersRequest)(nil), "proto.GetUsersRequest") @@ -15575,6 +15722,7 @@ func init() { proto.RegisterType((*GetOIDCAuthRequestRequest)(nil), "proto.GetOIDCAuthRequestRequest") proto.RegisterType((*GetSAMLAuthRequestRequest)(nil), "proto.GetSAMLAuthRequestRequest") proto.RegisterType((*GetGithubAuthRequestRequest)(nil), "proto.GetGithubAuthRequestRequest") + proto.RegisterType((*CreateGithubAuthRequestForUserRequest)(nil), "proto.CreateGithubAuthRequestForUserRequest") proto.RegisterType((*CreateOIDCConnectorRequest)(nil), "proto.CreateOIDCConnectorRequest") proto.RegisterType((*UpdateOIDCConnectorRequest)(nil), "proto.UpdateOIDCConnectorRequest") proto.RegisterType((*UpsertOIDCConnectorRequest)(nil), "proto.UpsertOIDCConnectorRequest") @@ -15638,940 +15786,953 @@ func init() { } var fileDescriptor_0ffcffcda38ae159 = []byte{ - // 14921 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7d, 0x59, 0x6c, 0x5c, 0x4b, - 0x76, 0x18, 0xbb, 0xb9, 0x1f, 0x2e, 0x6a, 0x15, 0x49, 0xb1, 0x45, 0x2d, 0x2d, 0x5d, 0xbd, 0x45, - 0x4f, 0xf3, 0x46, 0x0b, 0xdf, 0x32, 0x6f, 0x9b, 0xf7, 0x5e, 0x73, 0x91, 0x48, 0x89, 0xdb, 0xbb, - 0x4d, 0x52, 0x6f, 0xf3, 0xf4, 0x5c, 0x76, 0x97, 0xc8, 0x6b, 0x35, 0xef, 0xed, 0xb9, 0xf7, 0xb6, - 0xf4, 0x34, 0x8e, 0x1d, 0x78, 0x9c, 0x20, 0xfe, 0xc8, 0x62, 0x03, 0x71, 0xe0, 0xc0, 0x1f, 0x4e, - 0x80, 0x04, 0x08, 0x02, 0x24, 0xc8, 0x8f, 0xe1, 0x9f, 0xe4, 0x23, 0xc8, 0x47, 0x26, 0x06, 0x8c, - 0x24, 0xb0, 0xfd, 0x93, 0x0f, 0x3a, 0x19, 0x20, 0x3f, 0x44, 0xf2, 0x61, 0x04, 0x09, 0x90, 0x01, - 0x0c, 0x04, 0x75, 0x6a, 0xb9, 0x55, 0x77, 0xe9, 0x26, 0x25, 0xbd, 0x71, 0x7e, 0x24, 0xf6, 0xa9, - 0x73, 0x4e, 0x55, 0x9d, 0xaa, 0x5b, 0x75, 0xea, 0xd4, 0xa9, 0x73, 0xe0, 0x66, 0x44, 0x5b, 0xb4, - 0xed, 0x07, 0xd1, 0xad, 0x16, 0xdd, 0x77, 0x1a, 0xcf, 0x6e, 0x35, 0x5a, 0x2e, 0xf5, 0xa2, 0x5b, - 0xed, 0xc0, 0x8f, 0xfc, 0x5b, 0x4e, 0x27, 0x3a, 0x08, 0x69, 0xf0, 0xc4, 0x6d, 0xd0, 0x9b, 0x08, - 0x21, 0x83, 0xf8, 0xdf, 0xdc, 0xf4, 0xbe, 0xbf, 0xef, 0x73, 0x1c, 0xf6, 0x17, 0x2f, 0x9c, 0xbb, - 0xb0, 0xef, 0xfb, 0xfb, 0x2d, 0xca, 0x89, 0xf7, 0x3a, 0x8f, 0x6e, 0xd1, 0xc3, 0x76, 0xf4, 0x4c, - 0x14, 0x56, 0x92, 0x85, 0x91, 0x7b, 0x48, 0xc3, 0xc8, 0x39, 0x6c, 0x0b, 0x84, 0x37, 0x54, 0x53, - 0x9c, 0x28, 0x62, 0x25, 0x91, 0xeb, 0x7b, 0xb7, 0x9e, 0xdc, 0xd1, 0x7f, 0x0a, 0xd4, 0xeb, 0x5d, - 0x5b, 0xdd, 0xa0, 0x41, 0x14, 0x9e, 0x08, 0x93, 0x3e, 0xa1, 0x5e, 0x94, 0xaa, 0x5e, 0x60, 0x46, - 0xcf, 0xda, 0x34, 0xe4, 0x28, 0xf2, 0x3f, 0x81, 0x7a, 0x35, 0x1b, 0x15, 0xff, 0x15, 0x28, 0xdf, - 0xcd, 0x46, 0x79, 0x4a, 0xf7, 0x98, 0x4c, 0x3d, 0xf5, 0x47, 0x0f, 0xf4, 0xc0, 0x69, 0xb7, 0x69, - 0x10, 0xff, 0x21, 0xd0, 0xcf, 0x2b, 0xf4, 0xc3, 0x47, 0x0e, 0x13, 0xd1, 0xe1, 0x23, 0x27, 0xd5, - 0x8d, 0x4e, 0xe8, 0xec, 0x53, 0xd1, 0xfc, 0x27, 0x77, 0xf4, 0x9f, 0x1c, 0xd5, 0xfa, 0xfd, 0x02, - 0x0c, 0x3e, 0x74, 0xa2, 0xc6, 0x01, 0xf9, 0x04, 0x06, 0x1f, 0xb8, 0x5e, 0x33, 0x2c, 0x17, 0xae, - 0xf4, 0x5f, 0x1f, 0x9b, 0x2f, 0xdd, 0xe4, 0x5d, 0xc1, 0x42, 0x56, 0xb0, 0x30, 0xfb, 0xd3, 0xa3, - 0x4a, 0xdf, 0xf1, 0x51, 0xe5, 0xcc, 0x63, 0x86, 0xf6, 0xa6, 0x7f, 0xe8, 0x46, 0x38, 0xb6, 0x36, - 0xa7, 0x23, 0x3b, 0x30, 0x55, 0x6d, 0xb5, 0xfc, 0xa7, 0x5b, 0x4e, 0x10, 0xb9, 0x4e, 0xab, 0xd6, - 0x69, 0x34, 0x68, 0x18, 0x96, 0x8b, 0x57, 0x0a, 0xd7, 0x47, 0x16, 0xae, 0x1d, 0x1f, 0x55, 0x2a, - 0x0e, 0x2b, 0xae, 0xb7, 0x79, 0x79, 0x3d, 0xe4, 0x08, 0x1a, 0xa3, 0x2c, 0x7a, 0xeb, 0x8f, 0x86, - 0xa0, 0xb4, 0xe2, 0x87, 0xd1, 0x22, 0x1b, 0x51, 0x9b, 0xfe, 0xa8, 0x43, 0xc3, 0x88, 0x5c, 0x83, - 0x21, 0x06, 0x5b, 0x5d, 0x2a, 0x17, 0xae, 0x14, 0xae, 0x8f, 0x2e, 0x8c, 0x1d, 0x1f, 0x55, 0x86, - 0x0f, 0xfc, 0x30, 0xaa, 0xbb, 0x4d, 0x5b, 0x14, 0x91, 0x37, 0x60, 0x64, 0xc3, 0x6f, 0xd2, 0x0d, - 0xe7, 0x90, 0x62, 0x2b, 0x46, 0x17, 0x26, 0x8e, 0x8f, 0x2a, 0xa3, 0x9e, 0xdf, 0xa4, 0x75, 0xcf, - 0x39, 0xa4, 0xb6, 0x2a, 0x26, 0xbb, 0x30, 0x60, 0xfb, 0x2d, 0x5a, 0xee, 0x47, 0xb4, 0x85, 0xe3, - 0xa3, 0xca, 0x40, 0xe0, 0xb7, 0xe8, 0xcf, 0x8f, 0x2a, 0xef, 0xee, 0xbb, 0xd1, 0x41, 0x67, 0xef, - 0x66, 0xc3, 0x3f, 0xbc, 0xb5, 0x1f, 0x38, 0x4f, 0x5c, 0x3e, 0x09, 0x9d, 0xd6, 0xad, 0x78, 0xaa, - 0xb6, 0x5d, 0x31, 0xee, 0xb5, 0x67, 0x61, 0x44, 0x0f, 0x19, 0x27, 0x1b, 0xf9, 0x91, 0x87, 0x30, - 0x5d, 0x6d, 0x36, 0x5d, 0x4e, 0xb1, 0x15, 0xb8, 0x5e, 0xc3, 0x6d, 0x3b, 0xad, 0xb0, 0x3c, 0x70, - 0xa5, 0xff, 0xfa, 0xa8, 0x10, 0x8a, 0x2a, 0xaf, 0xb7, 0x15, 0x82, 0x26, 0x94, 0x4c, 0x06, 0xe4, - 0x2d, 0x18, 0x59, 0xda, 0xa8, 0xb1, 0xb6, 0x87, 0xe5, 0x41, 0x64, 0x36, 0x7b, 0x7c, 0x54, 0x99, - 0x6a, 0x7a, 0x21, 0x76, 0x4d, 0x67, 0xa0, 0x10, 0xc9, 0xbb, 0x30, 0xbe, 0xd5, 0xd9, 0x6b, 0xb9, - 0x8d, 0xed, 0xb5, 0xda, 0x03, 0xfa, 0xac, 0x3c, 0x74, 0xa5, 0x70, 0x7d, 0x7c, 0x81, 0x1c, 0x1f, - 0x55, 0x26, 0xdb, 0x08, 0xaf, 0x47, 0xad, 0xb0, 0xfe, 0x98, 0x3e, 0xb3, 0x0d, 0xbc, 0x98, 0xae, - 0x56, 0x5b, 0x61, 0x74, 0xc3, 0x29, 0xba, 0x30, 0x3c, 0xd0, 0xe9, 0x38, 0x1e, 0xb9, 0x05, 0x60, - 0xd3, 0x43, 0x3f, 0xa2, 0xd5, 0x66, 0x33, 0x28, 0x8f, 0xa0, 0x6c, 0xcf, 0x1c, 0x1f, 0x55, 0xc6, - 0x02, 0x84, 0xd6, 0x9d, 0x66, 0x33, 0xb0, 0x35, 0x14, 0xb2, 0x08, 0x23, 0xb6, 0xcf, 0x05, 0x5c, - 0x1e, 0xbd, 0x52, 0xb8, 0x3e, 0x36, 0x7f, 0x46, 0x4c, 0x43, 0x09, 0x5e, 0x38, 0x77, 0x7c, 0x54, - 0x21, 0x81, 0xf8, 0xa5, 0xf7, 0x52, 0x62, 0x90, 0x0a, 0x0c, 0x6f, 0xf8, 0x8b, 0x4e, 0xe3, 0x80, - 0x96, 0x01, 0xe7, 0xde, 0xe0, 0xf1, 0x51, 0xa5, 0xf0, 0x5d, 0x5b, 0x42, 0xc9, 0x13, 0x18, 0x8b, - 0x07, 0x2a, 0x2c, 0x8f, 0xa1, 0xf8, 0xb6, 0x8f, 0x8f, 0x2a, 0xe7, 0x42, 0x04, 0xd7, 0xd9, 0xd0, - 0x6b, 0x12, 0x7c, 0x81, 0x59, 0xa0, 0x57, 0x44, 0xbe, 0x86, 0x99, 0xf8, 0x67, 0x35, 0x0c, 0x69, - 0xc0, 0x78, 0xac, 0x2e, 0x95, 0x27, 0x50, 0x32, 0xaf, 0x1d, 0x1f, 0x55, 0x2c, 0xad, 0x05, 0x75, - 0x47, 0xa2, 0xd4, 0xdd, 0xa6, 0xd6, 0xd3, 0x6c, 0x26, 0xf7, 0x07, 0x46, 0xc6, 0x4b, 0x13, 0xf6, - 0xa5, 0x1d, 0x2f, 0x8c, 0x9c, 0xbd, 0x16, 0xcd, 0x44, 0xb2, 0xfe, 0xb2, 0x00, 0x64, 0xb3, 0x4d, - 0xbd, 0x5a, 0x6d, 0x85, 0x7d, 0x4f, 0xf2, 0x73, 0x7a, 0x13, 0x46, 0xf9, 0xc0, 0xb1, 0xd1, 0x2d, - 0xe2, 0xe8, 0x4e, 0x1e, 0x1f, 0x55, 0x40, 0x8c, 0x2e, 0x1b, 0xd9, 0x18, 0x81, 0xbc, 0x0a, 0xfd, - 0xdb, 0xdb, 0x6b, 0xf8, 0xad, 0xf4, 0x2f, 0x4c, 0x1d, 0x1f, 0x55, 0xfa, 0xa3, 0xa8, 0xf5, 0xf3, - 0xa3, 0xca, 0xc8, 0x52, 0x27, 0x40, 0xb1, 0xd8, 0xac, 0x9c, 0xbc, 0x0a, 0xc3, 0x8b, 0xad, 0x4e, - 0x18, 0xd1, 0xa0, 0x3c, 0x10, 0x7f, 0xa4, 0x0d, 0x0e, 0xb2, 0x65, 0x19, 0xf9, 0x0e, 0x0c, 0xec, - 0x84, 0x34, 0x28, 0x0f, 0xe2, 0x78, 0x4f, 0x88, 0xf1, 0x66, 0xa0, 0xdd, 0xf9, 0x85, 0x11, 0xf6, - 0x25, 0x76, 0x42, 0x1a, 0xd8, 0x88, 0x44, 0x6e, 0xc2, 0x20, 0x1f, 0xb4, 0x21, 0x5c, 0xa4, 0x26, - 0xd4, 0xec, 0x68, 0xd1, 0xdd, 0x77, 0x17, 0x46, 0x8f, 0x8f, 0x2a, 0x83, 0x38, 0x78, 0x36, 0x47, - 0xbb, 0x3f, 0x30, 0x52, 0x28, 0x15, 0xed, 0x11, 0x46, 0xcb, 0x3e, 0x0b, 0xeb, 0x3b, 0x30, 0xa6, - 0x75, 0x9f, 0x5c, 0x84, 0x01, 0xf6, 0x3f, 0x2e, 0x22, 0xe3, 0xbc, 0x32, 0xb6, 0x71, 0xd8, 0x08, - 0xb5, 0xfe, 0xd1, 0x14, 0x94, 0x18, 0xa5, 0xb1, 0xf2, 0xdc, 0xd4, 0x45, 0xc5, 0xe9, 0x4a, 0xa6, - 0xa8, 0xca, 0x05, 0x5d, 0x58, 0xd7, 0x41, 0xd5, 0x2e, 0x16, 0xa1, 0xf1, 0xe3, 0xa3, 0xca, 0x48, - 0x47, 0xc0, 0xe2, 0xb6, 0x91, 0x1a, 0x0c, 0x2f, 0x7f, 0xd3, 0x76, 0x03, 0x1a, 0xa2, 0x68, 0xc7, - 0xe6, 0xe7, 0x6e, 0xf2, 0xed, 0xf2, 0xa6, 0xdc, 0x2e, 0x6f, 0x6e, 0xcb, 0xed, 0x72, 0xe1, 0x92, - 0x58, 0x8c, 0xcf, 0x52, 0x4e, 0x12, 0xcf, 0x8f, 0xdf, 0xfa, 0xf3, 0x4a, 0xc1, 0x96, 0x9c, 0xc8, - 0x9b, 0x30, 0x74, 0xd7, 0x0f, 0x0e, 0x9d, 0x48, 0x8c, 0xc1, 0xf4, 0xf1, 0x51, 0xa5, 0xf4, 0x08, - 0x21, 0xda, 0x94, 0x12, 0x38, 0xe4, 0x2e, 0x4c, 0xda, 0x7e, 0x27, 0xa2, 0xdb, 0xbe, 0x1c, 0xb9, - 0x41, 0xa4, 0xba, 0x7c, 0x7c, 0x54, 0x99, 0x0b, 0x58, 0x49, 0x3d, 0xf2, 0xeb, 0x62, 0x08, 0x35, - 0xfa, 0x04, 0x15, 0x59, 0x86, 0xc9, 0x2a, 0xae, 0xde, 0x42, 0x6a, 0x7c, 0xbc, 0x46, 0x17, 0x2e, - 0x1d, 0x1f, 0x55, 0xce, 0x3b, 0x58, 0x52, 0x0f, 0x44, 0x91, 0xce, 0xc6, 0x24, 0x22, 0x1b, 0x70, - 0xf6, 0x41, 0x67, 0x8f, 0x06, 0x1e, 0x8d, 0x68, 0x28, 0x5b, 0x34, 0x8c, 0x2d, 0xba, 0x72, 0x7c, - 0x54, 0xb9, 0xf8, 0x58, 0x15, 0x66, 0xb4, 0x29, 0x4d, 0x4a, 0x28, 0x9c, 0x11, 0x0d, 0x5d, 0x72, - 0x22, 0x67, 0xcf, 0x09, 0x29, 0x2e, 0x4a, 0x63, 0xf3, 0xe7, 0xb8, 0x88, 0x6f, 0x26, 0x4a, 0x17, - 0xae, 0x09, 0x29, 0x5f, 0x50, 0x7d, 0x6f, 0x8a, 0x22, 0xad, 0xa2, 0x24, 0x4f, 0xb6, 0x36, 0xab, - 0x7d, 0x67, 0x14, 0x5b, 0x8b, 0x6b, 0xb3, 0xda, 0x77, 0xf4, 0x55, 0x4b, 0xed, 0x40, 0x6b, 0x30, - 0xb8, 0xc3, 0x76, 0x67, 0x5c, 0xb3, 0x26, 0xe7, 0xaf, 0x8a, 0x16, 0x25, 0xe7, 0xdf, 0x4d, 0xf6, - 0x03, 0x11, 0xf1, 0xcb, 0x3b, 0x83, 0x3b, 0xba, 0xbe, 0x17, 0x63, 0x19, 0xf9, 0x0c, 0x40, 0xb4, - 0xaa, 0xda, 0x6e, 0x97, 0xc7, 0xb0, 0x93, 0x67, 0xcd, 0x4e, 0x56, 0xdb, 0xed, 0x85, 0xcb, 0xa2, - 0x7f, 0xe7, 0x54, 0xff, 0x9c, 0x76, 0x5b, 0xe3, 0xa6, 0x31, 0x21, 0x9f, 0xc0, 0x38, 0x2e, 0x69, - 0x72, 0x44, 0xc7, 0x71, 0x44, 0x2f, 0x1c, 0x1f, 0x55, 0x66, 0x71, 0xb5, 0xca, 0x18, 0x4f, 0x83, - 0x80, 0xfc, 0x1a, 0xcc, 0x08, 0x76, 0x0f, 0x5d, 0xaf, 0xe9, 0x3f, 0x0d, 0x97, 0x68, 0xf8, 0x38, - 0xf2, 0xdb, 0xb8, 0xfc, 0x8d, 0xcd, 0x5f, 0x34, 0x9b, 0x67, 0xe2, 0x2c, 0xdc, 0x10, 0x2d, 0xb5, - 0x54, 0x4b, 0x9f, 0x72, 0x84, 0x7a, 0x93, 0x63, 0xe8, 0x0b, 0x64, 0x26, 0x0b, 0xb2, 0x0a, 0x67, - 0x76, 0x42, 0x6a, 0xf4, 0x61, 0x12, 0xf7, 0x87, 0x0a, 0x1b, 0xe1, 0x4e, 0x48, 0xeb, 0x79, 0xfd, - 0x48, 0xd2, 0x11, 0x1b, 0xc8, 0x52, 0xe0, 0xb7, 0x13, 0x73, 0xfc, 0x0c, 0x4a, 0xc4, 0x3a, 0x3e, - 0xaa, 0x5c, 0x6e, 0x06, 0x7e, 0xbb, 0x9e, 0x3f, 0xd1, 0x33, 0xa8, 0xc9, 0x0f, 0xe0, 0xdc, 0xa2, - 0xef, 0x79, 0xb4, 0xc1, 0x56, 0xd0, 0x25, 0xd7, 0xd9, 0xf7, 0xfc, 0x30, 0x72, 0x1b, 0xab, 0x4b, - 0xe5, 0x52, 0xbc, 0x3d, 0x34, 0x14, 0x46, 0xbd, 0xa9, 0x50, 0xcc, 0xed, 0x21, 0x87, 0x0b, 0xf9, - 0x0a, 0x26, 0x44, 0x5d, 0x34, 0xc0, 0xa9, 0x79, 0xb6, 0xfb, 0x44, 0x53, 0xc8, 0x7c, 0xa3, 0x0f, - 0xe4, 0x4f, 0xae, 0x3a, 0x99, 0xbc, 0xc8, 0xd7, 0x30, 0xb6, 0x7e, 0xb7, 0x6a, 0xd3, 0xb0, 0xed, - 0x7b, 0x21, 0x2d, 0x13, 0x1c, 0xd1, 0xcb, 0x82, 0xf5, 0xfa, 0xdd, 0x6a, 0xb5, 0x13, 0x1d, 0x50, - 0x2f, 0x72, 0x1b, 0x4e, 0x44, 0x25, 0xd6, 0xc2, 0x1c, 0x9b, 0x79, 0x87, 0x8f, 0x9c, 0x7a, 0x20, - 0x20, 0x5a, 0x2f, 0x74, 0x76, 0x64, 0x0e, 0x46, 0x6a, 0xb5, 0x95, 0x35, 0x7f, 0xdf, 0xf5, 0xca, - 0x53, 0x4c, 0x18, 0xb6, 0xfa, 0x4d, 0x1e, 0xc1, 0x8c, 0x76, 0x36, 0xa8, 0xb3, 0xff, 0xe9, 0x21, - 0xf5, 0xa2, 0xf2, 0x34, 0xb6, 0xe1, 0xbb, 0xea, 0x70, 0x73, 0x53, 0x3f, 0x42, 0x3c, 0xb9, 0x73, - 0xb3, 0x1a, 0xff, 0xac, 0x49, 0xa2, 0x85, 0x62, 0xb9, 0x60, 0x4f, 0x3b, 0x19, 0x25, 0x64, 0x1b, - 0x86, 0xb7, 0x3a, 0x41, 0xdb, 0x0f, 0x69, 0x79, 0x06, 0x05, 0x77, 0xad, 0xdb, 0x17, 0x2a, 0x50, - 0x17, 0x66, 0xd8, 0x12, 0xdd, 0xe6, 0x3f, 0xb4, 0xde, 0x49, 0x56, 0xe4, 0x53, 0x18, 0xaf, 0xd5, - 0x56, 0xe2, 0x0d, 0xe5, 0x1c, 0x6e, 0x28, 0x17, 0x8f, 0x8f, 0x2a, 0x65, 0xa6, 0x52, 0xc5, 0x9b, - 0x8a, 0xfe, 0x55, 0xe9, 0x14, 0x8c, 0xc3, 0xf6, 0x5a, 0x2d, 0xe6, 0x30, 0x1b, 0x73, 0x60, 0xca, - 0x5c, 0x36, 0x07, 0x9d, 0x82, 0xfc, 0x8b, 0x02, 0x5c, 0xd1, 0x59, 0x66, 0x09, 0xa6, 0x7c, 0xfe, - 0x79, 0xa4, 0x39, 0x7f, 0x7c, 0x54, 0xb9, 0x69, 0xf6, 0xa3, 0x9e, 0x39, 0x58, 0x5a, 0xdb, 0x7a, - 0x36, 0x05, 0xdb, 0xab, 0x77, 0x20, 0xb3, 0xbd, 0x73, 0xcf, 0xdd, 0x5e, 0x53, 0x6a, 0xbd, 0xdb, - 0xdb, 0xab, 0x29, 0xd6, 0xe7, 0x30, 0xaa, 0x16, 0x6d, 0x32, 0x0c, 0xfd, 0xd5, 0x56, 0xab, 0xd4, - 0xc7, 0xfe, 0xa8, 0xd5, 0x56, 0x4a, 0x05, 0x32, 0x09, 0x10, 0xef, 0x54, 0xa5, 0x22, 0x19, 0x87, - 0x11, 0xb9, 0x93, 0x94, 0xfa, 0x11, 0xbf, 0xdd, 0x2e, 0x0d, 0x10, 0x02, 0x93, 0xe6, 0x7a, 0x56, - 0x1a, 0xb4, 0x7e, 0xbb, 0x00, 0xa3, 0xea, 0x3b, 0x24, 0x67, 0x60, 0x6c, 0x67, 0xa3, 0xb6, 0xb5, - 0xbc, 0xb8, 0x7a, 0x77, 0x75, 0x79, 0xa9, 0xd4, 0x47, 0x2e, 0xc1, 0xf9, 0xed, 0xda, 0x4a, 0x7d, - 0x69, 0xa1, 0xbe, 0xb6, 0xb9, 0x58, 0x5d, 0xab, 0x6f, 0xd9, 0x9b, 0x9f, 0x7f, 0x51, 0xdf, 0xde, - 0xd9, 0xd8, 0x58, 0x5e, 0x2b, 0x15, 0x48, 0x19, 0xa6, 0x59, 0xf1, 0x83, 0x9d, 0x85, 0x65, 0x1d, - 0xa1, 0x54, 0x24, 0x57, 0xe1, 0x52, 0x56, 0x49, 0x7d, 0x65, 0xb9, 0xba, 0xb4, 0xb6, 0x5c, 0xab, - 0x95, 0xfa, 0xc9, 0x2c, 0x4c, 0x31, 0x94, 0xea, 0xd6, 0x96, 0x41, 0x3b, 0x60, 0xb5, 0x60, 0x4c, - 0xfb, 0x00, 0xc8, 0x45, 0x28, 0x2f, 0x2e, 0xdb, 0xdb, 0xf5, 0xad, 0x1d, 0x7b, 0x6b, 0xb3, 0xb6, - 0x5c, 0x37, 0x5b, 0x98, 0x2c, 0x5d, 0xdb, 0xbc, 0xb7, 0xba, 0x51, 0x67, 0xa0, 0x5a, 0xa9, 0xc0, - 0x9a, 0x61, 0x94, 0xd6, 0x56, 0x37, 0xee, 0xad, 0x2d, 0xd7, 0x77, 0x6a, 0xcb, 0x02, 0xa5, 0x68, - 0xfd, 0xa4, 0x98, 0xda, 0xd2, 0xc9, 0x3c, 0x8c, 0xd5, 0xb8, 0xbd, 0x02, 0x97, 0x39, 0x7e, 0x40, - 0x64, 0x3a, 0xda, 0xb8, 0x30, 0x63, 0xf0, 0x15, 0x4c, 0x47, 0x62, 0x5a, 0xda, 0x16, 0xfb, 0x9a, - 0x1b, 0x7e, 0x4b, 0xd7, 0xd2, 0xda, 0x02, 0x66, 0xab, 0x52, 0x32, 0xaf, 0xe9, 0x73, 0xfc, 0xb4, - 0x88, 0x27, 0x12, 0xa9, 0xcf, 0xe9, 0x7b, 0xbb, 0xd2, 0xec, 0xe6, 0xe3, 0x21, 0x15, 0x6a, 0x18, - 0xd2, 0x64, 0xe8, 0x12, 0x0a, 0x8f, 0xbc, 0x21, 0x35, 0x5d, 0x7e, 0xba, 0xc3, 0xcd, 0x3e, 0x71, - 0x2e, 0x11, 0x4a, 0xae, 0xd5, 0xc9, 0xd9, 0x58, 0xc9, 0x87, 0xc9, 0x39, 0x23, 0x84, 0x81, 0xcc, - 0x12, 0xfb, 0xa7, 0x9d, 0x40, 0x25, 0x15, 0x18, 0xe4, 0x2b, 0x2e, 0x97, 0x07, 0xea, 0xd6, 0x2d, - 0x06, 0xb0, 0x39, 0xdc, 0xfa, 0x83, 0x7e, 0x5d, 0xc9, 0x60, 0xba, 0xb4, 0x26, 0x6f, 0xd4, 0xa5, - 0x51, 0xce, 0x08, 0x65, 0x6a, 0x73, 0x8d, 0x86, 0x21, 0x3f, 0xef, 0x14, 0xd5, 0x90, 0x40, 0xc8, - 0x81, 0x75, 0xb7, 0xc9, 0xd4, 0x66, 0x85, 0xc2, 0x8e, 0x8e, 0xfc, 0xab, 0xc2, 0xa3, 0x63, 0x7f, - 0x7c, 0x74, 0x14, 0x9f, 0x26, 0x3f, 0x3a, 0xc6, 0x28, 0x6c, 0xd4, 0x85, 0x9a, 0x87, 0xad, 0x18, - 0x88, 0x47, 0x5d, 0xa8, 0x86, 0x62, 0xd4, 0x35, 0x24, 0xf2, 0x01, 0x40, 0xf5, 0x61, 0x0d, 0xcf, - 0x48, 0xf6, 0x86, 0x50, 0x75, 0x71, 0x53, 0x72, 0x9e, 0x86, 0xe2, 0x08, 0x16, 0xe8, 0x67, 0x4c, - 0x0d, 0x9b, 0x2c, 0xc0, 0x44, 0xf5, 0xc7, 0x9d, 0x80, 0xae, 0x36, 0xd9, 0xbe, 0x16, 0xf1, 0xc3, - 0xf4, 0x28, 0x5f, 0x78, 0x1d, 0x56, 0x50, 0x77, 0x45, 0x89, 0xc6, 0xc0, 0x24, 0x21, 0x9b, 0x70, - 0xf6, 0xde, 0xe2, 0x96, 0x98, 0x87, 0xd5, 0x46, 0xc3, 0xef, 0x78, 0x91, 0xd0, 0x6f, 0xaf, 0x1e, - 0x1f, 0x55, 0x2e, 0xed, 0x37, 0xda, 0x75, 0x39, 0x67, 0x1d, 0x5e, 0xac, 0x2b, 0xb8, 0x29, 0x5a, - 0x72, 0x0d, 0xfa, 0x77, 0xec, 0x55, 0x71, 0xd2, 0x3e, 0x7b, 0x7c, 0x54, 0x99, 0xe8, 0x04, 0xae, - 0x46, 0xc2, 0x4a, 0xad, 0x16, 0x4c, 0xde, 0xa3, 0x11, 0x9b, 0x9c, 0xf2, 0x4c, 0xd3, 0x7d, 0xe8, - 0x3e, 0x82, 0xb1, 0x87, 0x6e, 0x74, 0x50, 0xa3, 0x8d, 0x80, 0x46, 0xd2, 0x9e, 0x83, 0x62, 0x7a, - 0xea, 0x46, 0x07, 0xf5, 0x90, 0xc3, 0xf5, 0xbd, 0x5b, 0x43, 0xb7, 0x96, 0xe1, 0x8c, 0xa8, 0x4d, - 0x1d, 0xa1, 0xe6, 0x4d, 0x86, 0x05, 0x64, 0x88, 0x43, 0xa5, 0x33, 0x34, 0xd9, 0xfc, 0x41, 0x11, - 0x66, 0x16, 0x0f, 0x1c, 0x6f, 0x9f, 0x6e, 0x39, 0x61, 0xf8, 0xd4, 0x0f, 0x9a, 0x5a, 0xe3, 0xf1, - 0xfc, 0x98, 0x6a, 0x3c, 0x1e, 0x18, 0xe7, 0x61, 0x6c, 0xb3, 0xd5, 0x94, 0x34, 0xe2, 0x6c, 0x8b, - 0x75, 0xf9, 0xad, 0x66, 0xbd, 0x2d, 0x79, 0xe9, 0x48, 0x8c, 0x66, 0x83, 0x3e, 0x55, 0x34, 0xfd, - 0x31, 0x8d, 0x47, 0x9f, 0x6a, 0x34, 0x1a, 0x12, 0x59, 0x86, 0xb3, 0x35, 0xda, 0xf0, 0xbd, 0xe6, - 0x5d, 0xa7, 0x11, 0xf9, 0xc1, 0xb6, 0xff, 0x98, 0x7a, 0x62, 0x12, 0xa2, 0xf2, 0x1f, 0x62, 0x61, - 0xfd, 0x11, 0x96, 0xd6, 0x23, 0x56, 0x6c, 0xa7, 0x29, 0xc8, 0x26, 0x8c, 0x3c, 0x14, 0x56, 0x41, - 0x71, 0x20, 0x7e, 0xf5, 0xa6, 0x32, 0x13, 0x2e, 0x06, 0x14, 0x67, 0x8e, 0xd3, 0x52, 0x47, 0x7a, - 0xa5, 0x4b, 0xe1, 0x72, 0x25, 0x31, 0x6d, 0xc5, 0xc4, 0xda, 0x81, 0x89, 0xad, 0x56, 0x67, 0xdf, - 0xf5, 0xd8, 0xc2, 0x52, 0xa3, 0x3f, 0x22, 0x4b, 0x00, 0x31, 0x40, 0xd8, 0xfa, 0xa6, 0xc4, 0x31, - 0x3a, 0x2e, 0xd8, 0x7d, 0x4b, 0x7c, 0x6d, 0x08, 0xc1, 0x53, 0x8f, 0xad, 0xd1, 0x59, 0xff, 0xb7, - 0x1f, 0x88, 0x18, 0x00, 0xdc, 0xe8, 0x6a, 0x34, 0x62, 0x5b, 0xd0, 0x39, 0x28, 0x2a, 0x93, 0xdc, - 0xd0, 0xf1, 0x51, 0xa5, 0xe8, 0x36, 0xed, 0xe2, 0xea, 0x12, 0x79, 0x1b, 0x06, 0x11, 0x0d, 0xe5, - 0x3f, 0xa9, 0xea, 0xd3, 0x39, 0xf0, 0x05, 0x06, 0x77, 0x58, 0x9b, 0x23, 0x93, 0x77, 0x60, 0x74, - 0x89, 0xb6, 0xe8, 0xbe, 0x13, 0xf9, 0x72, 0x09, 0xe0, 0x46, 0x2e, 0x09, 0xd4, 0xe6, 0x5c, 0x8c, - 0xc9, 0x8e, 0xbc, 0x36, 0x75, 0x42, 0xdf, 0xd3, 0x8f, 0xbc, 0x01, 0x42, 0xf4, 0x23, 0x2f, 0xc7, - 0x21, 0xbf, 0x53, 0x80, 0xb1, 0xaa, 0xe7, 0x09, 0xe3, 0x51, 0x28, 0xa4, 0x3e, 0x73, 0x53, 0x59, - 0x5b, 0xd7, 0x9c, 0x3d, 0xda, 0xda, 0x75, 0x5a, 0x1d, 0x1a, 0x2e, 0x7c, 0xcd, 0x4e, 0x21, 0xff, - 0xe5, 0xa8, 0xf2, 0xe1, 0x29, 0xcc, 0x41, 0xb1, 0xdd, 0x76, 0x3b, 0x70, 0xdc, 0x28, 0x3c, 0x3e, - 0xaa, 0xcc, 0x38, 0x71, 0x85, 0xfa, 0x77, 0xa3, 0xb5, 0x23, 0x5e, 0xff, 0x87, 0x7a, 0xad, 0xff, - 0xe4, 0x10, 0xce, 0x54, 0xc3, 0xb0, 0x73, 0x48, 0x6b, 0x91, 0x13, 0x44, 0xdb, 0xee, 0x21, 0xc5, - 0x45, 0xa4, 0xbb, 0x01, 0xe1, 0xf5, 0x9f, 0x1e, 0x55, 0x0a, 0xec, 0xe0, 0xe3, 0x20, 0x29, 0xd3, - 0x6d, 0x82, 0xa8, 0x1e, 0xb9, 0xfa, 0x16, 0x86, 0xa6, 0x84, 0x24, 0x6f, 0xeb, 0x9a, 0x52, 0x3a, - 0x56, 0x97, 0xf2, 0x46, 0xdc, 0x5a, 0x84, 0x8b, 0xf7, 0x68, 0x64, 0xd3, 0x90, 0x46, 0xf2, 0x1b, - 0xc1, 0x19, 0x1e, 0x1b, 0x70, 0x87, 0xf1, 0xb7, 0x22, 0xc6, 0xe1, 0xe7, 0xdf, 0x85, 0x2c, 0xb1, - 0xfe, 0x46, 0x01, 0x2a, 0x8b, 0x01, 0xe5, 0x67, 0x86, 0x1c, 0x46, 0xdd, 0xd7, 0xae, 0x8b, 0x30, - 0xb0, 0xfd, 0xac, 0x2d, 0x2d, 0x2f, 0x58, 0xca, 0x06, 0xc5, 0x46, 0xe8, 0x09, 0x0d, 0x59, 0xd6, - 0x23, 0x98, 0xb1, 0xa9, 0x47, 0x9f, 0x3a, 0x7b, 0x2d, 0x6a, 0xd8, 0x82, 0x2a, 0x30, 0xc8, 0x3f, - 0xf4, 0x54, 0x17, 0x38, 0xfc, 0x74, 0x76, 0x35, 0x6b, 0x02, 0xc6, 0xb6, 0x5c, 0x6f, 0x5f, 0x70, - 0xb7, 0xfe, 0xf6, 0x00, 0x8c, 0xf3, 0xdf, 0xe2, 0x18, 0x94, 0xd8, 0xe2, 0x0a, 0x27, 0xd9, 0xe2, - 0xde, 0x83, 0x09, 0xb6, 0x47, 0xd0, 0x60, 0x97, 0x06, 0x6c, 0x6b, 0x15, 0x92, 0xc0, 0x23, 0x5d, - 0x88, 0x05, 0xf5, 0x27, 0xbc, 0xc4, 0x36, 0x11, 0xc9, 0x1a, 0x4c, 0x72, 0xc0, 0x5d, 0xea, 0x44, - 0x9d, 0xd8, 0x2a, 0x75, 0x46, 0x9c, 0x7b, 0x24, 0x98, 0x4f, 0x4d, 0xc1, 0xeb, 0x91, 0x00, 0xda, - 0x09, 0x5a, 0xf2, 0x09, 0x9c, 0xd9, 0x0a, 0xfc, 0x6f, 0x9e, 0x69, 0x9b, 0x3a, 0xff, 0x3a, 0xf9, - 0x09, 0x89, 0x15, 0xd5, 0xf5, 0xad, 0x3d, 0x89, 0x4d, 0xde, 0x80, 0x91, 0xd5, 0x70, 0xc1, 0x0f, - 0x5c, 0x6f, 0x1f, 0xbf, 0xd1, 0x11, 0x6e, 0xcc, 0x77, 0xc3, 0xfa, 0x1e, 0x02, 0x6d, 0x55, 0x9c, - 0x30, 0x3b, 0x0f, 0xf7, 0x36, 0x3b, 0xdf, 0x06, 0x58, 0xf3, 0x9d, 0x66, 0xb5, 0xd5, 0x5a, 0xac, - 0x86, 0xb8, 0x7b, 0x8a, 0xfd, 0xa8, 0xe5, 0x3b, 0xcd, 0xba, 0xd3, 0x6a, 0xd5, 0x1b, 0x4e, 0x68, - 0x6b, 0x38, 0xe4, 0x4b, 0x38, 0x1f, 0xba, 0xfb, 0x1e, 0x76, 0xae, 0xee, 0xb4, 0xf6, 0xfd, 0xc0, - 0x8d, 0x0e, 0x0e, 0xeb, 0x61, 0xc7, 0x8d, 0xb8, 0xcd, 0x67, 0x72, 0xfe, 0xb2, 0x58, 0xe4, 0x6a, - 0x12, 0xaf, 0x2a, 0xd1, 0x6a, 0x0c, 0xcb, 0x9e, 0x0d, 0xb3, 0x0b, 0xee, 0x0f, 0x8c, 0x0c, 0x95, - 0x86, 0xed, 0x33, 0x6b, 0x6e, 0x83, 0x7a, 0x21, 0x7d, 0xe8, 0x04, 0x9e, 0xeb, 0xed, 0x87, 0xd6, - 0xbf, 0x3c, 0x0b, 0x23, 0x4a, 0x9c, 0x37, 0xf5, 0x43, 0x83, 0xd8, 0x41, 0x71, 0x66, 0xc5, 0x26, - 0x31, 0x5b, 0xc3, 0x20, 0xe7, 0xf1, 0x18, 0x21, 0xf6, 0xee, 0x61, 0x36, 0xd3, 0x9d, 0x76, 0xdb, - 0x66, 0x30, 0xf6, 0x05, 0x2f, 0x2d, 0xe0, 0xd8, 0x8e, 0xf0, 0x2f, 0xb8, 0xb9, 0x67, 0x17, 0x97, - 0x16, 0xd8, 0xa7, 0xb3, 0xb9, 0xba, 0xb4, 0x88, 0xc3, 0x34, 0xc2, 0x3f, 0x1d, 0xdf, 0x6d, 0x36, - 0x6c, 0x84, 0xb2, 0xd2, 0x5a, 0x75, 0x7d, 0x4d, 0x0c, 0x05, 0x96, 0x86, 0xce, 0x61, 0xcb, 0x46, - 0x28, 0x53, 0x3c, 0xb9, 0x75, 0x63, 0xd1, 0xf7, 0xa2, 0xc0, 0x6f, 0x85, 0xa8, 0x1d, 0x8d, 0xf0, - 0xa9, 0x22, 0xcc, 0x22, 0x0d, 0x51, 0x64, 0x27, 0x50, 0xc9, 0x43, 0x98, 0xad, 0x36, 0x9f, 0x38, - 0x5e, 0x83, 0x36, 0x79, 0xc9, 0x43, 0x3f, 0x78, 0xfc, 0xa8, 0xe5, 0x3f, 0x0d, 0x71, 0x2c, 0x47, - 0x84, 0x15, 0x51, 0xa0, 0x48, 0x2b, 0xcb, 0x53, 0x89, 0x64, 0xe7, 0x51, 0xb3, 0xcf, 0x75, 0xb1, - 0xe5, 0x77, 0x9a, 0x62, 0x84, 0xf1, 0x73, 0x6d, 0x30, 0x80, 0xcd, 0xe1, 0x4c, 0x4a, 0x2b, 0xb5, - 0x75, 0x1c, 0x3f, 0x21, 0xa5, 0x83, 0xf0, 0xd0, 0x66, 0x30, 0xf2, 0x2a, 0x0c, 0x4b, 0x1d, 0x9a, - 0x5f, 0x2a, 0xa0, 0x31, 0x5b, 0xea, 0xce, 0xb2, 0x8c, 0x7d, 0x6e, 0x36, 0x6d, 0xf8, 0x4f, 0x68, - 0xf0, 0x6c, 0xd1, 0x6f, 0x52, 0x69, 0x61, 0x12, 0x16, 0x14, 0x5e, 0x50, 0x6f, 0xb0, 0x12, 0xdb, - 0x44, 0x64, 0x15, 0xf0, 0xfd, 0x35, 0x2c, 0x9f, 0x89, 0x2b, 0xe0, 0xfb, 0x6f, 0x68, 0xcb, 0x32, - 0xb2, 0x04, 0x67, 0xab, 0x9d, 0xc8, 0x3f, 0x74, 0x22, 0xb7, 0xb1, 0xd3, 0xde, 0x0f, 0x1c, 0x56, - 0x49, 0x09, 0x09, 0xf0, 0x4c, 0xe1, 0xc8, 0xc2, 0x7a, 0x47, 0x94, 0xda, 0x69, 0x02, 0xf2, 0x2e, - 0x8c, 0xaf, 0x86, 0xdc, 0x8a, 0xe8, 0x84, 0xb4, 0x89, 0xa6, 0x20, 0xd1, 0x4a, 0x37, 0xac, 0xa3, - 0x4d, 0xb1, 0xce, 0x4e, 0x21, 0x4d, 0xdb, 0xc0, 0x23, 0x16, 0x0c, 0x55, 0xc3, 0xd0, 0x0d, 0x23, - 0xb4, 0xf0, 0x8c, 0x2c, 0xc0, 0xf1, 0x51, 0x65, 0xc8, 0x41, 0x88, 0x2d, 0x4a, 0xc8, 0x43, 0x18, - 0x5b, 0xa2, 0x4c, 0x29, 0xdd, 0x0e, 0x3a, 0x61, 0x84, 0xf6, 0x9a, 0xb1, 0xf9, 0xf3, 0x62, 0xd1, - 0xd0, 0x4a, 0xc4, 0x5c, 0xe6, 0x9a, 0x64, 0x13, 0xe1, 0xf5, 0x88, 0x15, 0xe8, 0x3b, 0xa2, 0x86, - 0xcf, 0x34, 0x6e, 0x41, 0xb3, 0xe2, 0x36, 0xd9, 0x32, 0x30, 0x8d, 0x6d, 0x40, 0x8d, 0x5b, 0xac, - 0x3b, 0xf5, 0x03, 0x2c, 0xd1, 0x35, 0x6e, 0x83, 0x84, 0x34, 0x52, 0x86, 0xe9, 0x19, 0xc3, 0xf8, - 0x68, 0x16, 0xca, 0x26, 0x9e, 0xd2, 0x6c, 0xfd, 0x11, 0x8c, 0x2d, 0x76, 0xc2, 0xc8, 0x3f, 0xdc, - 0x3e, 0xa0, 0x87, 0x14, 0x6d, 0x3a, 0xe2, 0x5c, 0xd1, 0x40, 0x70, 0x3d, 0x62, 0x70, 0xbd, 0x9b, - 0x1a, 0x3a, 0xf9, 0x0c, 0x88, 0x3c, 0x20, 0xdc, 0x63, 0xf3, 0xc3, 0x63, 0x73, 0x19, 0xcd, 0x3a, - 0x23, 0xfc, 0x54, 0x20, 0xcf, 0x15, 0xf5, 0x7d, 0x55, 0xac, 0x9b, 0x16, 0xd3, 0xc4, 0xac, 0x41, - 0xbc, 0x89, 0xf7, 0x02, 0xa7, 0x7d, 0x50, 0x2e, 0xc7, 0x1a, 0xbc, 0xe8, 0xd4, 0x3e, 0x83, 0x1b, - 0x9a, 0x48, 0x8c, 0x4e, 0x6a, 0x00, 0xfc, 0xe7, 0x1a, 0x1b, 0x78, 0x6e, 0x08, 0x2a, 0x1b, 0xf2, - 0x62, 0x05, 0x52, 0x56, 0xe7, 0x51, 0xbf, 0xe1, 0x6c, 0x5b, 0xae, 0x31, 0x9a, 0x1a, 0x1b, 0xf2, - 0x18, 0x4a, 0xfc, 0xd7, 0xba, 0xef, 0xb9, 0x11, 0x5f, 0xd6, 0xe7, 0x0c, 0xab, 0x61, 0xb2, 0x58, - 0x56, 0x80, 0xd6, 0x5a, 0x51, 0xc1, 0xa1, 0x2a, 0xd5, 0xaa, 0x49, 0x31, 0x26, 0x5b, 0x30, 0xb6, - 0x15, 0xf8, 0xcd, 0x4e, 0x23, 0x42, 0x65, 0xe0, 0x02, 0xae, 0xcf, 0x44, 0xd4, 0xa3, 0x95, 0x70, - 0x99, 0xb4, 0x39, 0xa0, 0xce, 0x96, 0x6f, 0x5d, 0x26, 0x1a, 0x22, 0x59, 0x80, 0xa1, 0x2d, 0xbf, - 0xe5, 0x36, 0x9e, 0x95, 0x2f, 0x62, 0xa3, 0xa7, 0x25, 0x33, 0x04, 0xca, 0xa6, 0xa2, 0xe6, 0xd9, - 0x46, 0x90, 0xae, 0x79, 0x72, 0x24, 0x52, 0x85, 0x89, 0xcf, 0xd8, 0x84, 0x71, 0x7d, 0xcf, 0x73, - 0xdc, 0x80, 0x96, 0x2f, 0xe1, 0xb8, 0xa0, 0x45, 0xfd, 0x47, 0x7a, 0x81, 0x3e, 0x9d, 0x0d, 0x0a, - 0xb2, 0x0a, 0x67, 0x56, 0xc3, 0x5a, 0x14, 0xb8, 0x6d, 0xba, 0xee, 0x78, 0xce, 0x3e, 0x6d, 0x96, - 0x2f, 0xc7, 0x26, 0x6d, 0x37, 0xac, 0x87, 0x58, 0x56, 0x3f, 0xe4, 0x85, 0xba, 0x49, 0x3b, 0x41, - 0x47, 0x3e, 0x87, 0xe9, 0xe5, 0x6f, 0x22, 0x36, 0x63, 0x5a, 0xd5, 0x4e, 0xd3, 0x8d, 0x6a, 0x91, - 0x1f, 0x38, 0xfb, 0xb4, 0x5c, 0x41, 0x7e, 0xaf, 0x1c, 0x1f, 0x55, 0xae, 0x50, 0x51, 0x5e, 0x77, - 0x18, 0x42, 0x3d, 0xe4, 0x18, 0xfa, 0x55, 0x75, 0x16, 0x07, 0x26, 0xfd, 0x5a, 0xa7, 0xcd, 0x94, - 0x62, 0x94, 0xfe, 0x15, 0x43, 0xfa, 0x5a, 0x09, 0x97, 0x7e, 0xc8, 0x01, 0x29, 0xe9, 0x6b, 0x88, - 0xc4, 0x06, 0x72, 0xdf, 0x77, 0xbd, 0x6a, 0x23, 0x72, 0x9f, 0x50, 0x61, 0x33, 0x08, 0xcb, 0x57, - 0xb1, 0xa5, 0x68, 0x7e, 0xff, 0x65, 0xdf, 0xf5, 0xea, 0x0e, 0x16, 0xd7, 0x85, 0x85, 0xc1, 0x30, - 0xbf, 0xa7, 0xa9, 0xc9, 0x0f, 0xe0, 0xdc, 0xba, 0xbf, 0xe7, 0xb6, 0x28, 0x5f, 0x72, 0xb8, 0x58, - 0xd0, 0x94, 0x68, 0x21, 0x5f, 0x34, 0xbf, 0x1f, 0x22, 0x46, 0x5d, 0xac, 0x56, 0x87, 0x0a, 0x47, - 0x37, 0xbf, 0x67, 0x73, 0x21, 0xcb, 0x30, 0x8e, 0xdf, 0x65, 0x0b, 0x7f, 0x86, 0xe5, 0x6b, 0x78, - 0xf2, 0xba, 0x9a, 0x50, 0xa6, 0x6e, 0x2e, 0x6b, 0x38, 0xcb, 0x5e, 0x14, 0x3c, 0xb3, 0x0d, 0x32, - 0xf2, 0x31, 0xcc, 0x25, 0xa7, 0xf7, 0xa2, 0xef, 0x3d, 0x72, 0xf7, 0x3b, 0x01, 0x6d, 0x96, 0x5f, - 0x61, 0x4d, 0xb5, 0xbb, 0x60, 0xcc, 0x3d, 0x84, 0xb3, 0xa9, 0x2a, 0x48, 0x09, 0xfa, 0x1f, 0x8b, - 0xdb, 0xcc, 0x51, 0x9b, 0xfd, 0x49, 0xde, 0x84, 0xc1, 0x27, 0xec, 0xc8, 0x83, 0x1a, 0x43, 0x7c, - 0x3f, 0xa6, 0x91, 0xae, 0x7a, 0x8f, 0x7c, 0x9b, 0x23, 0x7d, 0x50, 0x7c, 0xaf, 0x70, 0x7f, 0x60, - 0x64, 0xac, 0x34, 0xce, 0x2f, 0xa1, 0xef, 0x0f, 0x8c, 0x4c, 0x94, 0x26, 0xad, 0x2a, 0x9c, 0x49, - 0xe0, 0x93, 0x32, 0x0c, 0x53, 0x8f, 0xa9, 0xd1, 0x4d, 0xae, 0xb3, 0xd8, 0xf2, 0x27, 0x99, 0x86, - 0xc1, 0x96, 0x7b, 0xe8, 0x46, 0x58, 0xe1, 0xa0, 0xcd, 0x7f, 0x58, 0xbf, 0x5b, 0x00, 0x92, 0xde, - 0x32, 0xc8, 0xad, 0x04, 0x1b, 0xae, 0x44, 0x0a, 0x90, 0x6e, 0x66, 0x97, 0xdc, 0x3f, 0x83, 0x29, - 0x3e, 0x66, 0x72, 0x73, 0xd3, 0xea, 0xe2, 0x8b, 0x6a, 0x46, 0xb1, 0x6e, 0x6a, 0x11, 0xc5, 0xb8, - 0x15, 0xae, 0x61, 0xd3, 0x3a, 0x30, 0x93, 0xb9, 0x59, 0x90, 0x75, 0x98, 0x39, 0xf4, 0xbd, 0xe8, - 0xa0, 0xf5, 0x4c, 0xee, 0x15, 0xa2, 0xb6, 0x02, 0xd6, 0x86, 0xeb, 0x63, 0x26, 0x82, 0x3d, 0x25, - 0xc0, 0x82, 0x23, 0xd6, 0x73, 0x7f, 0x60, 0xa4, 0x58, 0xea, 0x57, 0x3d, 0xb1, 0x6c, 0x38, 0x9b, - 0x5a, 0x73, 0xc9, 0xf7, 0x61, 0xbc, 0x81, 0xc7, 0x24, 0xa3, 0x26, 0xbe, 0xe3, 0x68, 0x70, 0xfd, - 0x73, 0xe2, 0x70, 0xde, 0x95, 0x7f, 0x5a, 0x80, 0xd9, 0x9c, 0xd5, 0xf6, 0xf4, 0xa2, 0xfe, 0x02, - 0xce, 0x1d, 0x3a, 0xdf, 0xd4, 0x03, 0x3c, 0x05, 0xd7, 0x03, 0xc7, 0x4b, 0x48, 0x1b, 0x57, 0x92, - 0x6c, 0x0c, 0xdd, 0x13, 0xe8, 0xd0, 0xf9, 0xc6, 0x46, 0x04, 0x9b, 0x95, 0xf3, 0x76, 0x7e, 0x0a, - 0x13, 0xc6, 0xfa, 0x7a, 0xea, 0xc6, 0x59, 0x77, 0xe0, 0xec, 0x12, 0x6d, 0xd1, 0x88, 0x9e, 0xd8, - 0xfa, 0x65, 0x6d, 0x01, 0xd4, 0xe8, 0xa1, 0xd3, 0x3e, 0xf0, 0x99, 0xde, 0xbd, 0xa0, 0xff, 0x12, - 0xd6, 0x13, 0x22, 0x15, 0x7d, 0x59, 0xb0, 0xfb, 0x16, 0xd7, 0xc5, 0x43, 0x85, 0x69, 0x6b, 0x54, - 0xd6, 0x1f, 0x17, 0x81, 0x88, 0x05, 0x32, 0xa0, 0xce, 0xa1, 0x6c, 0xc6, 0xfb, 0x30, 0xce, 0xcf, - 0xba, 0x1c, 0x8c, 0xcd, 0x19, 0x9b, 0x9f, 0x12, 0x5f, 0x9e, 0x5e, 0xb4, 0xd2, 0x67, 0x1b, 0xa8, - 0x8c, 0xd4, 0xa6, 0xfc, 0x90, 0x8e, 0xa4, 0x45, 0x83, 0x54, 0x2f, 0x62, 0xa4, 0xfa, 0x6f, 0xf2, - 0x09, 0x4c, 0x2e, 0xfa, 0x87, 0x6d, 0x26, 0x13, 0x41, 0xdc, 0x2f, 0x0c, 0x20, 0xa2, 0x5e, 0xa3, - 0x70, 0xa5, 0xcf, 0x4e, 0xa0, 0x93, 0x0d, 0x98, 0xba, 0xdb, 0xea, 0x84, 0x07, 0x55, 0xaf, 0xb9, - 0xd8, 0xf2, 0x43, 0xc9, 0x65, 0x40, 0x18, 0x20, 0xc4, 0xf2, 0x96, 0xc6, 0x58, 0xe9, 0xb3, 0xb3, - 0x08, 0xc9, 0xab, 0x30, 0xb8, 0xfc, 0x84, 0x2d, 0xbb, 0xd2, 0x1f, 0x44, 0xb8, 0xab, 0x6d, 0x7a, - 0x74, 0xf3, 0xd1, 0x4a, 0x9f, 0xcd, 0x4b, 0x17, 0x46, 0x61, 0x58, 0x9e, 0x93, 0x6f, 0x31, 0x95, - 0x58, 0x89, 0xb3, 0x16, 0x39, 0x51, 0x27, 0x24, 0x73, 0x30, 0xb2, 0xd3, 0x66, 0xc7, 0x37, 0x69, - 0x60, 0xb0, 0xd5, 0x6f, 0xeb, 0x4d, 0x53, 0xd2, 0xe4, 0xa2, 0x6e, 0x9b, 0xe6, 0xc8, 0x31, 0xc0, - 0x5a, 0x31, 0x85, 0xdb, 0x1d, 0xdb, 0xa8, 0xb7, 0x98, 0xa8, 0xb7, 0x94, 0x94, 0xb5, 0x35, 0x93, - 0x29, 0x3c, 0xeb, 0x73, 0xb8, 0xbc, 0xd3, 0x0e, 0x69, 0x10, 0x55, 0xdb, 0xed, 0x96, 0xdb, 0xe0, - 0xf7, 0x49, 0x78, 0x9e, 0x96, 0x93, 0xe5, 0x5d, 0x18, 0xe2, 0x00, 0x31, 0x4d, 0xe4, 0x1c, 0xac, - 0xb6, 0xdb, 0xe2, 0x14, 0xff, 0x16, 0x57, 0xce, 0xf9, 0xb9, 0xdc, 0x16, 0xd8, 0xd6, 0x6f, 0x15, - 0xe0, 0x32, 0xff, 0x02, 0x72, 0x59, 0x7f, 0x07, 0x46, 0xd1, 0x5b, 0xac, 0xed, 0x34, 0xe4, 0x37, - 0xc1, 0xdd, 0xe6, 0x24, 0xd0, 0x8e, 0xcb, 0x35, 0x3f, 0xbc, 0x62, 0xbe, 0x1f, 0x9e, 0xfc, 0xc0, - 0xfa, 0x33, 0x3f, 0xb0, 0xcf, 0xc0, 0x12, 0x2d, 0x6a, 0xb5, 0x52, 0x8d, 0x0a, 0x9f, 0xa7, 0x55, - 0xd6, 0xff, 0x2c, 0xc2, 0xec, 0x3d, 0xea, 0xd1, 0xc0, 0xc1, 0x7e, 0x1a, 0xf6, 0x22, 0xdd, 0x1f, - 0xa7, 0xd0, 0xd5, 0x1f, 0xa7, 0x22, 0x2d, 0x70, 0x45, 0xb4, 0xc0, 0xa5, 0x9c, 0x8b, 0xd8, 0x71, - 0x71, 0xc7, 0x5e, 0x15, 0xdd, 0xc2, 0xe3, 0x62, 0x27, 0x70, 0xd1, 0xc6, 0x4e, 0x56, 0x63, 0x5f, - 0x9e, 0x81, 0x9e, 0xa6, 0xb8, 0x29, 0xe1, 0xdb, 0x30, 0x2c, 0x7c, 0x79, 0x4c, 0x0f, 0x9e, 0x0d, - 0x18, 0xe2, 0x86, 0x43, 0xbc, 0x09, 0x1a, 0x9b, 0xbf, 0x21, 0xbe, 0xa9, 0x9c, 0x0e, 0x0a, 0x2b, - 0x23, 0x6e, 0xec, 0x7c, 0x0a, 0x44, 0x08, 0xb0, 0x05, 0x97, 0xb9, 0xcf, 0x60, 0x4c, 0x43, 0x39, - 0xc9, 0xde, 0xaf, 0x0c, 0x98, 0x4c, 0x63, 0xf4, 0xf6, 0xb9, 0x2d, 0x54, 0xdb, 0xfb, 0xad, 0x0f, - 0xa1, 0x9c, 0x6e, 0x8d, 0x30, 0x5a, 0xf5, 0xb2, 0x91, 0x59, 0x4b, 0x30, 0x7d, 0x8f, 0x46, 0x38, - 0x71, 0xf1, 0x23, 0xd2, 0x7c, 0xd2, 0x12, 0xdf, 0x99, 0x5c, 0x55, 0xe5, 0x8d, 0x91, 0xfe, 0x95, - 0xd6, 0x60, 0x26, 0xc1, 0x45, 0xd4, 0xff, 0x01, 0x0c, 0x0b, 0x90, 0x5a, 0x51, 0x85, 0x63, 0x2b, - 0xdd, 0x13, 0x05, 0xbb, 0xf3, 0x7c, 0xde, 0x0a, 0xce, 0xb6, 0x24, 0xb0, 0x0e, 0xe0, 0x1c, 0xdb, - 0x66, 0x63, 0xae, 0x6a, 0x3a, 0x5e, 0x80, 0xd1, 0x36, 0x53, 0x14, 0x42, 0xf7, 0xc7, 0x7c, 0x1a, - 0x0d, 0xda, 0x23, 0x0c, 0x50, 0x73, 0x7f, 0x4c, 0xc9, 0x25, 0x00, 0x2c, 0xc4, 0x6e, 0x8a, 0x55, - 0x00, 0xd1, 0xb9, 0x51, 0x90, 0x00, 0x7a, 0xb4, 0xf1, 0x79, 0x63, 0xe3, 0xdf, 0x56, 0x00, 0xb3, - 0xa9, 0x9a, 0x44, 0x07, 0x6e, 0xc1, 0x88, 0x54, 0x61, 0x13, 0xe6, 0x7a, 0xbd, 0x07, 0xb6, 0x42, - 0x22, 0xaf, 0xc1, 0x19, 0x8f, 0x7e, 0x13, 0xd5, 0x53, 0x6d, 0x98, 0x60, 0xe0, 0x2d, 0xd9, 0x0e, - 0xeb, 0x97, 0xd0, 0x44, 0x5b, 0xf3, 0xfc, 0xa7, 0x8f, 0x5a, 0xce, 0x63, 0x9a, 0xaa, 0xf8, 0xfb, - 0x30, 0x52, 0xeb, 0x5d, 0x31, 0xff, 0x7c, 0x64, 0xe5, 0xb6, 0x22, 0xb1, 0x5a, 0x30, 0xc7, 0xba, - 0x54, 0xab, 0xae, 0xaf, 0xad, 0x36, 0xb7, 0xbe, 0x6d, 0x01, 0x3e, 0x81, 0x0b, 0x99, 0xb5, 0x7d, - 0xdb, 0x42, 0xfc, 0x37, 0x03, 0x30, 0xcb, 0x37, 0x93, 0xf4, 0x0c, 0x3e, 0xf9, 0x52, 0xf3, 0x0b, - 0xb9, 0xed, 0xbc, 0x9d, 0x71, 0xdb, 0x89, 0x24, 0xfa, 0x6d, 0xa7, 0x71, 0xc7, 0xf9, 0x5e, 0xf6, - 0x1d, 0x27, 0xda, 0x89, 0xcc, 0x3b, 0xce, 0xe4, 0xcd, 0xe6, 0x72, 0xfe, 0xcd, 0x26, 0x5e, 0xe1, - 0x64, 0xdc, 0x6c, 0x66, 0xdd, 0x67, 0x26, 0xdc, 0x8a, 0x46, 0x5e, 0xae, 0x5b, 0xd1, 0x6b, 0x30, - 0x5c, 0x6d, 0xb7, 0x35, 0x37, 0x3d, 0x1c, 0x1e, 0xa7, 0xdd, 0xe6, 0xc2, 0x93, 0x85, 0x72, 0x9d, - 0x87, 0x8c, 0x75, 0xfe, 0x7d, 0x80, 0x45, 0x7c, 0x4c, 0x80, 0x03, 0x37, 0x86, 0x18, 0xa8, 0xe1, - 0xf3, 0x27, 0x06, 0x38, 0x70, 0xba, 0x05, 0x24, 0x46, 0xe6, 0x8a, 0xbd, 0xb5, 0x0b, 0xe5, 0xf4, - 0xf4, 0x79, 0x09, 0x4b, 0xd7, 0x1f, 0x16, 0xe0, 0x92, 0x50, 0x72, 0x12, 0x1f, 0xf8, 0xe9, 0x67, - 0xe7, 0x3b, 0x30, 0x2e, 0x68, 0xb7, 0xe3, 0x0f, 0x81, 0x5f, 0x2f, 0xcb, 0xc5, 0x98, 0xaf, 0xe8, - 0x06, 0x1a, 0x79, 0x07, 0x46, 0xf0, 0x8f, 0xf8, 0x8a, 0x85, 0x49, 0x66, 0x14, 0x51, 0xeb, 0xc9, - 0x8b, 0x16, 0x85, 0x6a, 0x7d, 0x0d, 0x97, 0xf3, 0x1a, 0xfe, 0x12, 0xe4, 0xf2, 0x6f, 0x0b, 0x70, - 0x41, 0xb0, 0x37, 0x96, 0x8a, 0xe7, 0xda, 0x75, 0x4e, 0xe1, 0xdc, 0x7b, 0x1f, 0xc6, 0x58, 0x85, - 0xb2, 0xdd, 0xfd, 0x62, 0x6b, 0x15, 0x27, 0x87, 0xb8, 0x64, 0xc9, 0x89, 0x1c, 0xe1, 0xac, 0xe2, - 0x1c, 0xb6, 0xa4, 0xf1, 0xc2, 0xd6, 0x89, 0xad, 0x2f, 0xe1, 0x62, 0x76, 0x17, 0x5e, 0x82, 0x7c, - 0xee, 0xc3, 0x5c, 0xc6, 0xa6, 0xf0, 0x7c, 0x7b, 0xf2, 0x17, 0x70, 0x21, 0x93, 0xd7, 0x4b, 0x68, - 0xe6, 0x0a, 0xd3, 0x38, 0xa2, 0x97, 0x30, 0x84, 0xd6, 0x43, 0x38, 0x9f, 0xc1, 0xe9, 0x25, 0x34, - 0xf1, 0x1e, 0xcc, 0x2a, 0x4d, 0xfb, 0x85, 0x5a, 0xb8, 0x0e, 0x97, 0x38, 0xa3, 0x97, 0x33, 0x2a, - 0x0f, 0xe0, 0x82, 0x60, 0xf7, 0x12, 0xa4, 0xb7, 0x02, 0x17, 0xe3, 0x03, 0x75, 0x86, 0x9e, 0x74, - 0xe2, 0x45, 0xc6, 0x5a, 0x83, 0x2b, 0x31, 0xa7, 0x1c, 0xa5, 0xe1, 0xe4, 0xdc, 0xb8, 0x3a, 0x18, - 0x8f, 0xd2, 0x4b, 0x19, 0xd1, 0x87, 0x70, 0xce, 0x60, 0xfa, 0xd2, 0x54, 0xa5, 0x55, 0x98, 0xe2, - 0x8c, 0x4d, 0xd5, 0x79, 0x5e, 0x57, 0x9d, 0xc7, 0xe6, 0xcf, 0xc6, 0x2c, 0x11, 0xbc, 0xfb, 0x56, - 0x86, 0x36, 0xbd, 0x8e, 0xda, 0xb4, 0x44, 0x89, 0x5b, 0xf8, 0x0e, 0x0c, 0x71, 0x88, 0x68, 0x5f, - 0x06, 0x33, 0x7e, 0x58, 0xe0, 0x64, 0x02, 0xd9, 0xfa, 0x01, 0x5c, 0xe2, 0x27, 0xd1, 0xf8, 0x2e, - 0xd1, 0x3c, 0x2d, 0x7e, 0x3f, 0x71, 0x10, 0x3d, 0x2f, 0xf8, 0x26, 0xf1, 0x73, 0xce, 0xa3, 0x7b, - 0x72, 0x6e, 0xe7, 0xf1, 0x3f, 0xd1, 0x43, 0x2f, 0x79, 0xc0, 0x2c, 0x66, 0x1e, 0x30, 0xaf, 0xc1, - 0x55, 0x75, 0xc0, 0x4c, 0x56, 0x23, 0xa7, 0x96, 0xf5, 0x25, 0x5c, 0xe0, 0x1d, 0x95, 0x0e, 0x78, - 0x66, 0x33, 0x3e, 0x4c, 0x74, 0x73, 0x56, 0x74, 0xd3, 0xc4, 0xce, 0xe9, 0xe4, 0xdf, 0x29, 0xc8, - 0x4f, 0x2e, 0x9b, 0xf9, 0x2f, 0xfa, 0xc4, 0xbd, 0x01, 0x15, 0x25, 0x10, 0xb3, 0x45, 0xcf, 0x77, - 0xdc, 0x5e, 0x87, 0x19, 0x9d, 0x8d, 0xdb, 0xa0, 0xbb, 0x77, 0xf0, 0x92, 0xe7, 0x6d, 0xf6, 0x59, - 0x20, 0x40, 0x4e, 0xbb, 0x72, 0x86, 0xdc, 0x10, 0xdf, 0x56, 0x98, 0x56, 0x1d, 0x2e, 0xa6, 0x87, - 0xc2, 0x6d, 0x48, 0xef, 0x7b, 0xf2, 0x09, 0xfb, 0x84, 0x11, 0x22, 0x06, 0x23, 0x97, 0xa9, 0xfc, - 0x8e, 0x39, 0xb9, 0xa4, 0xb2, 0x2c, 0xb9, 0xd4, 0x24, 0xfa, 0xcf, 0x6a, 0x97, 0xf3, 0xe1, 0x57, - 0x81, 0xc8, 0xa2, 0xc5, 0x9a, 0x2d, 0xab, 0x3e, 0x0f, 0xfd, 0x8b, 0x35, 0x5b, 0x3c, 0xfb, 0x41, - 0x4d, 0xb0, 0x11, 0x06, 0x36, 0x83, 0x25, 0x35, 0xf2, 0xe2, 0x09, 0x34, 0xf2, 0xfb, 0x03, 0x23, - 0xfd, 0xa5, 0x01, 0x9b, 0xd4, 0xdc, 0x7d, 0xef, 0xa1, 0x1b, 0x1d, 0xa8, 0x0a, 0xab, 0xd6, 0x57, - 0x30, 0x65, 0x54, 0x2f, 0xbe, 0xe2, 0xae, 0xef, 0x95, 0x98, 0x3e, 0xbb, 0x58, 0x45, 0x07, 0x15, - 0x34, 0x59, 0x8c, 0xf3, 0xf5, 0xa6, 0xe1, 0xd4, 0xf1, 0x31, 0xac, 0x2d, 0x0b, 0xad, 0x7f, 0x32, - 0xa0, 0x71, 0xd7, 0x5e, 0x81, 0x75, 0xe9, 0xdd, 0x1d, 0x00, 0x3e, 0x43, 0xb4, 0xce, 0x31, 0x05, - 0x70, 0x4c, 0xf8, 0x7d, 0xf0, 0x25, 0xd9, 0xd6, 0x90, 0x4e, 0xfa, 0x4a, 0x4c, 0x78, 0xeb, 0x72, - 0x22, 0xf9, 0x30, 0x52, 0x79, 0xeb, 0x0a, 0xd6, 0xa1, 0xad, 0x23, 0x91, 0x1f, 0x24, 0x9f, 0x32, - 0x0c, 0xe2, 0x9d, 0xd2, 0x2b, 0xf2, 0x92, 0x39, 0xdd, 0xb7, 0xd3, 0xbd, 0x66, 0x78, 0x0a, 0x33, - 0x8c, 0xd6, 0x7d, 0x84, 0x07, 0x8b, 0xe5, 0x6f, 0x22, 0xea, 0xf1, 0xb5, 0x7d, 0x08, 0xeb, 0x79, - 0xb5, 0x4b, 0x3d, 0x31, 0xb2, 0xb0, 0xbf, 0xc7, 0x7c, 0xea, 0x54, 0x95, 0xd9, 0xd9, 0xfc, 0x71, - 0x12, 0xd9, 0x6b, 0xcb, 0x5e, 0xb3, 0xed, 0xbb, 0xea, 0xc0, 0xc4, 0x27, 0x51, 0xd0, 0xaa, 0x53, - 0x01, 0xb7, 0x75, 0x24, 0xeb, 0xb5, 0xae, 0x3e, 0xe0, 0x23, 0x30, 0xb0, 0xbd, 0xb8, 0xbd, 0x56, - 0x2a, 0x58, 0xb7, 0x00, 0xb4, 0x9a, 0x00, 0x86, 0x36, 0x36, 0xed, 0xf5, 0xea, 0x5a, 0xa9, 0x8f, - 0xcc, 0xc0, 0xd9, 0x87, 0xab, 0x1b, 0x4b, 0x9b, 0x0f, 0x6b, 0xf5, 0xda, 0x7a, 0xd5, 0xde, 0x5e, - 0xac, 0xda, 0x4b, 0xa5, 0x82, 0xf5, 0x35, 0x4c, 0x9b, 0x3d, 0x7c, 0xa9, 0x93, 0x30, 0x82, 0x29, - 0xa5, 0xcf, 0xdc, 0x7f, 0xb8, 0xad, 0xf9, 0x86, 0x8a, 0xc3, 0x5f, 0xd2, 0xc7, 0x49, 0x1c, 0x13, - 0xc5, 0x67, 0xa4, 0x21, 0x91, 0x37, 0xb8, 0x5a, 0x90, 0x7c, 0xe7, 0xcb, 0xd4, 0x82, 0x7a, 0xac, - 0x17, 0xe0, 0xd2, 0xf7, 0x3d, 0x98, 0x36, 0x6b, 0x3d, 0xa9, 0x95, 0xea, 0x15, 0x74, 0x9a, 0xd5, - 0x1e, 0x01, 0x11, 0xa2, 0x5f, 0x1b, 0x88, 0x95, 0xf5, 0x7b, 0x50, 0x12, 0x58, 0xf1, 0xce, 0x7b, - 0x4d, 0x9a, 0x11, 0x0b, 0x19, 0x4f, 0x16, 0xa5, 0x0b, 0xb7, 0x0f, 0x25, 0xb6, 0x62, 0x0a, 0x4a, - 0x5e, 0xc1, 0x34, 0x0c, 0xae, 0xc5, 0xd7, 0x39, 0x36, 0xff, 0x81, 0x6f, 0x61, 0x22, 0x27, 0x88, - 0xa4, 0x47, 0xd9, 0xa8, 0xad, 0x7e, 0x93, 0x37, 0x60, 0xe8, 0xae, 0xdb, 0x8a, 0x84, 0x69, 0x24, - 0xde, 0xe4, 0x19, 0x5b, 0x5e, 0x60, 0x0b, 0x04, 0xcb, 0x86, 0xb3, 0x5a, 0x85, 0xa7, 0x68, 0x2a, - 0x29, 0xc3, 0xf0, 0x06, 0xfd, 0x46, 0xab, 0x5f, 0xfe, 0xb4, 0xde, 0x85, 0xb3, 0xc2, 0x5b, 0x4f, - 0x13, 0xd3, 0x55, 0xf1, 0xb2, 0xba, 0x60, 0x3c, 0xef, 0x14, 0x2c, 0xb1, 0x88, 0xd1, 0xed, 0xb4, - 0x9b, 0xcf, 0x49, 0xc7, 0x36, 0x8a, 0x53, 0xd2, 0xbd, 0x2e, 0x6f, 0x81, 0x7a, 0x0d, 0xe7, 0x1f, - 0x17, 0xa0, 0x9c, 0xb0, 0x32, 0x2c, 0x1e, 0x38, 0xad, 0x16, 0xf5, 0xf6, 0x29, 0xb9, 0x0e, 0x03, - 0xdb, 0x9b, 0xdb, 0x5b, 0xc2, 0x4a, 0x2a, 0x1d, 0x00, 0x18, 0x48, 0xe1, 0xd8, 0x88, 0x41, 0x1e, - 0xc0, 0x59, 0xe9, 0x8f, 0xab, 0x8a, 0xc4, 0x08, 0x5d, 0xea, 0xee, 0xdd, 0x9b, 0xa6, 0x23, 0x6f, - 0x0b, 0x93, 0xc8, 0x8f, 0x3a, 0x6e, 0x40, 0x9b, 0x68, 0xf9, 0x89, 0x6f, 0xd3, 0xb5, 0x12, 0x5b, - 0x47, 0xe3, 0xef, 0x60, 0xad, 0xdf, 0x29, 0xc0, 0x6c, 0x8e, 0xd5, 0x84, 0xbc, 0x61, 0x74, 0x67, - 0x4a, 0xeb, 0x8e, 0x44, 0x59, 0xe9, 0x13, 0xfd, 0x59, 0xd4, 0x9c, 0x94, 0xfb, 0x4f, 0xe1, 0xa4, - 0xbc, 0xd2, 0x17, 0x3b, 0x26, 0x2f, 0x00, 0x8c, 0x48, 0xb8, 0x75, 0x06, 0x26, 0x0c, 0xb9, 0x59, - 0x16, 0x8c, 0xeb, 0x35, 0xb3, 0xc1, 0x59, 0xf4, 0x9b, 0x6a, 0x70, 0xd8, 0xdf, 0xd6, 0x6f, 0x17, - 0x60, 0x1a, 0xbb, 0xb8, 0xef, 0xb2, 0xa5, 0x2f, 0x96, 0xd0, 0xbc, 0xd1, 0x93, 0x8b, 0x46, 0x4f, - 0x12, 0xb8, 0xaa, 0x4b, 0x1f, 0xa4, 0xba, 0x74, 0x31, 0xab, 0x4b, 0x38, 0xbd, 0x5d, 0xdf, 0x33, - 0x7a, 0xa2, 0x5d, 0x45, 0xfd, 0x6e, 0x01, 0xa6, 0xb4, 0x36, 0xa9, 0xf6, 0xdf, 0x31, 0x9a, 0x74, - 0x21, 0xa3, 0x49, 0x29, 0x21, 0x2f, 0xa4, 0x5a, 0xf4, 0x4a, 0xb7, 0x16, 0xf5, 0x94, 0xf1, 0x7f, - 0x2f, 0xc0, 0x4c, 0xa6, 0x0c, 0xc8, 0x39, 0xa6, 0xdb, 0x36, 0x02, 0x1a, 0x09, 0xf1, 0x8a, 0x5f, - 0x0c, 0xbe, 0x1a, 0x86, 0x1d, 0x1a, 0x88, 0xef, 0x5c, 0xfc, 0x22, 0xaf, 0xc0, 0xc4, 0x16, 0x0d, - 0x5c, 0xbf, 0xc9, 0xdd, 0xd7, 0xb9, 0x5f, 0xe8, 0x84, 0x6d, 0x02, 0xc9, 0x45, 0x18, 0x55, 0x7e, - 0x8d, 0xdc, 0x3e, 0x69, 0xc7, 0x00, 0xc6, 0x7b, 0xc9, 0xdd, 0xe7, 0x97, 0x1a, 0x8c, 0x58, 0xfc, - 0x62, 0x8b, 0x8b, 0xb4, 0x16, 0x0e, 0xf1, 0xc5, 0x45, 0x9a, 0x02, 0xcf, 0xc1, 0xd0, 0x67, 0x36, - 0x4e, 0x02, 0x8c, 0x3e, 0x60, 0x8b, 0x5f, 0x64, 0x12, 0x1d, 0x90, 0xf1, 0xc5, 0x03, 0x3a, 0x1e, - 0x7f, 0x00, 0xd3, 0x59, 0x72, 0xcd, 0x9a, 0x42, 0x82, 0xb6, 0xa8, 0x68, 0xbf, 0x84, 0xa9, 0x6a, - 0xb3, 0xb9, 0x7e, 0xb7, 0xca, 0x7d, 0x0e, 0xc4, 0xa8, 0xf2, 0x8f, 0x87, 0xdb, 0xeb, 0x84, 0xca, - 0x36, 0xb0, 0xea, 0xb9, 0x91, 0x3d, 0xb5, 0xfc, 0x8d, 0x1b, 0x46, 0xae, 0xb7, 0xaf, 0x19, 0x15, - 0xed, 0x73, 0x1b, 0xf4, 0x69, 0xc6, 0x14, 0x60, 0xbb, 0xa9, 0xc9, 0x9b, 0xc3, 0x33, 0x98, 0x4f, - 0x6b, 0x6c, 0xe3, 0xa5, 0x64, 0xd6, 0xe4, 0x1b, 0x17, 0xf4, 0x57, 0x1b, 0x8f, 0xad, 0xef, 0xc1, - 0x39, 0xbe, 0xa4, 0x75, 0x6b, 0xbc, 0x68, 0xb6, 0x6e, 0x03, 0xb5, 0xde, 0x93, 0x56, 0x8a, 0xae, - 0x2d, 0xb3, 0xc7, 0x8d, 0xb6, 0x60, 0x95, 0xff, 0xa3, 0x00, 0x73, 0x09, 0xd2, 0xda, 0x33, 0xaf, - 0x21, 0xd7, 0xd3, 0xd7, 0x92, 0x0e, 0xde, 0xa8, 0x07, 0x70, 0xe3, 0x9f, 0xdb, 0x54, 0x3e, 0xde, - 0xe4, 0x16, 0x00, 0x27, 0xd6, 0xb6, 0x6f, 0x34, 0x7d, 0x0b, 0x27, 0x1b, 0xdc, 0xc0, 0x35, 0x14, - 0xd2, 0x81, 0x2c, 0xb9, 0x8b, 0x6f, 0xa4, 0x97, 0x6d, 0x18, 0x23, 0x6e, 0x50, 0x41, 0x5e, 0xcf, - 0x31, 0x12, 0x67, 0xf1, 0xb7, 0xfe, 0x6e, 0x3f, 0xcc, 0xea, 0x03, 0xf8, 0x3c, 0x7d, 0xdd, 0x82, - 0xb1, 0x45, 0xdf, 0x8b, 0xe8, 0x37, 0x91, 0x16, 0xf1, 0x80, 0xa8, 0x9b, 0x76, 0x55, 0x22, 0x54, - 0x47, 0x0e, 0xa8, 0x33, 0x3d, 0xc6, 0x70, 0x16, 0x8c, 0x11, 0xc9, 0x22, 0x4c, 0x6c, 0xd0, 0xa7, - 0x29, 0x01, 0xa2, 0xc3, 0xa2, 0x47, 0x9f, 0xd6, 0x35, 0x21, 0xea, 0x5e, 0x64, 0x06, 0x0d, 0xd9, - 0x83, 0x49, 0x39, 0xb9, 0x0c, 0x61, 0xce, 0xe9, 0xbb, 0x8a, 0x39, 0x9d, 0x79, 0x44, 0x00, 0x56, - 0x43, 0x8e, 0x0c, 0x13, 0x1c, 0x59, 0xd7, 0x79, 0x8d, 0xfc, 0x91, 0xbb, 0xb9, 0x6d, 0x69, 0x25, - 0x86, 0x3b, 0x68, 0xf2, 0x71, 0xbb, 0xce, 0xc2, 0xda, 0x82, 0x72, 0x7a, 0x3c, 0x44, 0x6d, 0x6f, - 0xc3, 0x10, 0x87, 0x0a, 0x35, 0x40, 0x06, 0xb3, 0x51, 0xd8, 0xfc, 0x9c, 0xce, 0xab, 0xb1, 0x05, - 0xae, 0xb5, 0x82, 0xb6, 0x13, 0x85, 0xa3, 0x14, 0xb1, 0xdb, 0xc9, 0xe1, 0x45, 0x4f, 0x5b, 0x39, - 0xbc, 0xba, 0x9f, 0x89, 0x7c, 0xb8, 0xb0, 0x88, 0xe6, 0x27, 0x9d, 0x93, 0x68, 0xd8, 0x0d, 0x18, - 0x16, 0xa0, 0x44, 0x98, 0x9d, 0xf8, 0xf3, 0x93, 0x08, 0xd6, 0x07, 0x70, 0x1e, 0x6d, 0x61, 0xae, - 0xb7, 0xdf, 0xa2, 0x3b, 0xa1, 0xf1, 0xf4, 0xa0, 0xd7, 0x67, 0xfd, 0x11, 0xcc, 0x65, 0xd1, 0xf6, - 0xfc, 0xb2, 0x79, 0xe0, 0x8b, 0x3f, 0x2b, 0xc2, 0xf4, 0x6a, 0xa8, 0x2b, 0x13, 0x2a, 0xf8, 0x45, - 0x46, 0x40, 0x06, 0x94, 0xc9, 0x4a, 0x5f, 0x56, 0xc0, 0x85, 0xb7, 0xb5, 0x87, 0x8f, 0xc5, 0x6e, - 0x91, 0x16, 0xd8, 0xb6, 0xa5, 0x9e, 0x3e, 0xbe, 0x06, 0x03, 0x1b, 0x6c, 0xa9, 0xee, 0x17, 0x63, - 0xc7, 0x29, 0x18, 0x08, 0x1f, 0x1e, 0xb2, 0x2d, 0x92, 0xfd, 0x20, 0x77, 0x53, 0xcf, 0x1b, 0x07, - 0x7a, 0x47, 0x12, 0x58, 0xe9, 0x4b, 0xbd, 0x74, 0x7c, 0x17, 0xc6, 0xaa, 0xcd, 0x43, 0xee, 0x11, - 0xe8, 0x7b, 0x89, 0xcf, 0x52, 0x2b, 0x59, 0xe9, 0xb3, 0x75, 0x44, 0x76, 0xc2, 0xad, 0xb6, 0xdb, - 0xb8, 0x51, 0x65, 0x45, 0x57, 0x58, 0xe9, 0x43, 0x07, 0xfb, 0x85, 0x11, 0x18, 0xda, 0x76, 0x82, - 0x7d, 0x1a, 0x59, 0x5f, 0xc2, 0x9c, 0x70, 0x52, 0xe1, 0x96, 0x3f, 0x74, 0x65, 0x09, 0x63, 0x3f, - 0xa4, 0x6e, 0x8e, 0x25, 0x97, 0x01, 0x50, 0xcf, 0x5f, 0xf5, 0x9a, 0xf4, 0x1b, 0xe1, 0x25, 0xa7, - 0x41, 0xac, 0x77, 0x60, 0x54, 0x49, 0x08, 0x95, 0x59, 0x6d, 0xb3, 0x43, 0x69, 0x4d, 0x1b, 0xef, - 0x39, 0xe5, 0x23, 0xce, 0xf3, 0x46, 0xdf, 0x45, 0xbc, 0x14, 0xae, 0xfd, 0xba, 0x30, 0x93, 0x98, - 0x04, 0xf1, 0x73, 0x7c, 0xa5, 0x7f, 0x72, 0x37, 0x3e, 0xf5, 0x3b, 0xa9, 0x9e, 0x16, 0x4f, 0xa4, - 0x9e, 0x5a, 0xff, 0xbc, 0x88, 0x07, 0xa7, 0x94, 0x3c, 0x12, 0x36, 0x28, 0xdd, 0x0e, 0xb6, 0x00, - 0xa3, 0xd8, 0xfb, 0x25, 0xf9, 0xac, 0xac, 0xbb, 0x8f, 0xc5, 0xc8, 0x4f, 0x8f, 0x2a, 0x7d, 0xe8, - 0x58, 0x11, 0x93, 0x91, 0x8f, 0x61, 0x78, 0xd9, 0x6b, 0x22, 0x87, 0xfe, 0x53, 0x70, 0x90, 0x44, - 0x6c, 0x4c, 0xb0, 0xc9, 0xdb, 0xec, 0x13, 0xe6, 0xa6, 0x0b, 0x5b, 0x83, 0xc4, 0x27, 0xb8, 0xc1, - 0xbc, 0x13, 0xdc, 0x50, 0xe2, 0x04, 0x67, 0xc1, 0xe0, 0x66, 0xd0, 0x14, 0x51, 0x4e, 0x26, 0xe7, - 0xc7, 0x85, 0xe0, 0x10, 0x66, 0xf3, 0x22, 0xeb, 0x7f, 0x15, 0x60, 0xf6, 0x1e, 0x8d, 0x32, 0xe7, - 0x90, 0x21, 0x95, 0xc2, 0x0b, 0x4b, 0xa5, 0xf8, 0x3c, 0x52, 0x51, 0xbd, 0xee, 0xcf, 0xeb, 0xf5, - 0x40, 0x5e, 0xaf, 0x07, 0xf3, 0x7b, 0x7d, 0x0f, 0x86, 0x78, 0x57, 0xd9, 0x29, 0x75, 0x35, 0xa2, - 0x87, 0xf1, 0x29, 0x55, 0xf7, 0x10, 0xb3, 0x79, 0x19, 0x53, 0x24, 0xd7, 0x9c, 0x50, 0x3f, 0xa5, - 0x8a, 0x9f, 0xd6, 0x0f, 0xf1, 0x41, 0xea, 0x9a, 0xdf, 0x78, 0xac, 0x59, 0x3b, 0x87, 0xf9, 0x17, - 0x9a, 0xb4, 0x8e, 0x33, 0x2c, 0x5e, 0x62, 0x4b, 0x0c, 0x72, 0x05, 0xc6, 0x56, 0xbd, 0xbb, 0x7e, - 0xd0, 0xa0, 0x9b, 0x5e, 0x8b, 0x73, 0x1f, 0xb1, 0x75, 0x90, 0xb0, 0x02, 0x88, 0x1a, 0xe2, 0xa3, - 0x35, 0x02, 0x12, 0x47, 0x6b, 0x06, 0xdb, 0x9d, 0xb7, 0x79, 0x99, 0x30, 0x32, 0xb0, 0xbf, 0xbb, - 0x9d, 0x4a, 0xd5, 0xf1, 0xb5, 0x17, 0xe2, 0x1e, 0x9c, 0xb7, 0x69, 0xbb, 0xe5, 0x30, 0x9d, 0xee, - 0xd0, 0xe7, 0xf8, 0xaa, 0xcf, 0x57, 0x32, 0x1e, 0x93, 0x99, 0xfe, 0x02, 0xaa, 0xc9, 0xc5, 0x2e, - 0x4d, 0x3e, 0x84, 0xab, 0xf7, 0x68, 0x64, 0x2e, 0xa8, 0xb1, 0x2d, 0x55, 0x74, 0x7e, 0x05, 0x46, - 0x42, 0xd3, 0x0e, 0x2c, 0x1f, 0x47, 0x65, 0x12, 0xee, 0xbe, 0x25, 0x6f, 0x4a, 0x04, 0x1f, 0xf5, - 0x97, 0xf5, 0x09, 0x54, 0xf2, 0xaa, 0x3b, 0x99, 0x3b, 0xa7, 0x0b, 0x57, 0xf2, 0x19, 0x88, 0xe6, - 0x2e, 0x83, 0xb4, 0x19, 0x8b, 0x4f, 0xa8, 0x57, 0x6b, 0x4d, 0x33, 0xb3, 0xf8, 0xc3, 0x5a, 0x90, - 0x8e, 0x6d, 0x2f, 0xd0, 0xdc, 0x3a, 0x5e, 0xc7, 0x9a, 0x0c, 0x62, 0xb9, 0x56, 0x61, 0x44, 0xc2, - 0x84, 0x5c, 0x67, 0x33, 0x5b, 0x2a, 0x05, 0xda, 0x94, 0x0c, 0x14, 0x99, 0xf5, 0x43, 0x79, 0x35, - 0x61, 0x52, 0x9c, 0xec, 0x75, 0xe5, 0x49, 0xee, 0x22, 0x2c, 0x1f, 0xce, 0x9b, 0xbc, 0x75, 0x93, - 0x73, 0x49, 0x33, 0x39, 0x73, 0x4b, 0xf3, 0x15, 0xd3, 0x04, 0x5a, 0x14, 0xf3, 0x32, 0x06, 0x91, - 0xcb, 0xba, 0x61, 0x79, 0x3c, 0xfd, 0x5c, 0xf3, 0x36, 0xcc, 0x65, 0x55, 0xa8, 0x9d, 0x03, 0x95, - 0xf5, 0x52, 0xe8, 0x3b, 0x4b, 0x70, 0x59, 0xc6, 0x19, 0xf2, 0xfd, 0x28, 0x8c, 0x02, 0xa7, 0x5d, - 0x6b, 0x04, 0x6e, 0x3b, 0xa6, 0xb2, 0x60, 0x88, 0x43, 0x84, 0x24, 0xf8, 0x35, 0x0f, 0xc7, 0x11, - 0x25, 0xd6, 0xaf, 0x17, 0xc0, 0x32, 0x7c, 0x90, 0x70, 0x9c, 0xb7, 0x02, 0xff, 0x89, 0xdb, 0xd4, - 0xae, 0x56, 0xde, 0x30, 0xcc, 0x7a, 0xfc, 0x49, 0x5c, 0xd2, 0xfd, 0x59, 0xac, 0x99, 0xb7, 0x13, - 0xa6, 0x36, 0xae, 0x78, 0xa2, 0x5f, 0x92, 0x19, 0xd0, 0x45, 0x99, 0xe0, 0xfe, 0x4f, 0x01, 0xae, - 0x75, 0x6d, 0x83, 0xe8, 0xcf, 0x1e, 0x94, 0x92, 0x65, 0x62, 0x06, 0x55, 0x34, 0x9f, 0x84, 0x34, - 0x87, 0xdd, 0x3b, 0xdc, 0xc7, 0x5a, 0xfa, 0xee, 0xb4, 0x15, 0xe7, 0x14, 0xbf, 0xd3, 0xb7, 0x9e, - 0xbc, 0x0f, 0xb0, 0xed, 0x47, 0x4e, 0x6b, 0x11, 0x0d, 0x00, 0xfd, 0xb1, 0xbf, 0x7c, 0xc4, 0xa0, - 0xf5, 0x64, 0x00, 0x04, 0x0d, 0xd9, 0xfa, 0x14, 0xbf, 0xeb, 0xec, 0x46, 0x9f, 0xec, 0x53, 0x5b, - 0x84, 0x6b, 0x89, 0x7b, 0xf1, 0xe7, 0x60, 0x12, 0xc1, 0x0c, 0x13, 0x3f, 0xd3, 0xbd, 0xef, 0x05, - 0x7e, 0xa7, 0xfd, 0x8b, 0x19, 0xf5, 0x3f, 0x2a, 0x70, 0x47, 0x45, 0xbd, 0x5a, 0x31, 0xd0, 0x8b, - 0x00, 0x31, 0x34, 0xe1, 0xb0, 0xae, 0x0a, 0x76, 0xef, 0xf0, 0x23, 0x37, 0x5a, 0xcc, 0xf7, 0x39, - 0x03, 0x8d, 0xec, 0x17, 0x3b, 0x92, 0x6f, 0xe1, 0x65, 0xb8, 0xaa, 0xfd, 0x64, 0x72, 0x7f, 0x57, - 0xda, 0x3f, 0x4e, 0x49, 0x77, 0x00, 0xd3, 0x6c, 0x05, 0xa8, 0x76, 0xa2, 0x03, 0x3f, 0x70, 0x23, - 0xf9, 0xf4, 0x82, 0x6c, 0x89, 0x77, 0xe3, 0x9c, 0xea, 0xa3, 0x9f, 0x1f, 0x55, 0xde, 0x3b, 0x4d, - 0x04, 0x48, 0xc9, 0x73, 0x5b, 0xbd, 0x35, 0xb7, 0x66, 0xa1, 0x7f, 0xd1, 0x5e, 0xc3, 0x05, 0xcf, - 0x5e, 0x53, 0x0b, 0x9e, 0xbd, 0x66, 0xfd, 0x45, 0x11, 0x2a, 0x3c, 0xb2, 0x05, 0xfa, 0x50, 0xc4, - 0x56, 0x0b, 0xcd, 0x29, 0xe3, 0xa4, 0x06, 0x86, 0x44, 0xe4, 0x8a, 0xe2, 0x49, 0x22, 0x57, 0xfc, - 0x0a, 0xe4, 0x98, 0xac, 0x4e, 0x60, 0x05, 0x78, 0xfd, 0xf8, 0xa8, 0x72, 0x2d, 0xb6, 0x02, 0xf0, - 0xd2, 0x2c, 0x73, 0x40, 0x4e, 0x15, 0x69, 0xfb, 0xc5, 0xc0, 0x73, 0xd8, 0x2f, 0x6e, 0xc3, 0x30, - 0x1e, 0x66, 0x56, 0xb7, 0x84, 0x57, 0x23, 0x4e, 0x4f, 0x8c, 0x55, 0x53, 0x77, 0xf5, 0xc0, 0x70, - 0x12, 0xcd, 0xfa, 0x07, 0x45, 0xb8, 0x92, 0x2f, 0x73, 0xd1, 0xb6, 0x25, 0x80, 0xd8, 0x7b, 0xa3, - 0x9b, 0xb7, 0x08, 0x7e, 0x3b, 0x4f, 0xe9, 0x9e, 0xf2, 0xd6, 0xd2, 0xe8, 0x98, 0xee, 0x23, 0x1f, - 0xfa, 0x26, 0xae, 0x0a, 0x8c, 0xf7, 0xbf, 0x22, 0xae, 0xa9, 0x00, 0x19, 0x71, 0x4d, 0x05, 0x8c, - 0xec, 0xc1, 0xec, 0x56, 0xe0, 0x3e, 0x71, 0x22, 0xfa, 0x80, 0x3e, 0xe3, 0x0f, 0x61, 0x96, 0xc5, - 0xeb, 0x17, 0xfe, 0x7a, 0xfb, 0xfa, 0xf1, 0x51, 0xe5, 0x95, 0x36, 0x47, 0xc1, 0xd8, 0x55, 0xfc, - 0xe9, 0x61, 0x3d, 0xfd, 0x20, 0x26, 0x8f, 0x91, 0xf5, 0x1f, 0x0a, 0x70, 0x01, 0xd5, 0x72, 0x61, - 0x76, 0x95, 0x95, 0x3f, 0x97, 0xd3, 0xa0, 0xde, 0x41, 0x31, 0x17, 0xd1, 0x69, 0xd0, 0x78, 0x08, - 0x6d, 0x1b, 0x68, 0x64, 0x15, 0xc6, 0xc4, 0x6f, 0xfc, 0xfe, 0xfa, 0xf1, 0x40, 0x30, 0xa3, 0x2d, - 0x58, 0x38, 0xd5, 0xb9, 0xa9, 0x08, 0x27, 0xb6, 0x60, 0x86, 0xef, 0x05, 0x6d, 0x9d, 0xd6, 0xfa, - 0x59, 0x11, 0x2e, 0xee, 0xd2, 0xc0, 0x7d, 0xf4, 0x2c, 0xa7, 0x33, 0x9b, 0x30, 0x2d, 0x41, 0x3c, - 0xba, 0x85, 0xf1, 0x89, 0xf1, 0xc8, 0x86, 0xb2, 0xa9, 0x22, 0x3c, 0x86, 0xfc, 0xe2, 0x32, 0x09, - 0x4f, 0xe1, 0x0e, 0xf8, 0x36, 0x8c, 0x24, 0xe2, 0xcb, 0xe0, 0xf8, 0xcb, 0x2f, 0x34, 0x1e, 0xaa, - 0x95, 0x3e, 0x5b, 0x61, 0x92, 0xdf, 0xc8, 0xbf, 0xbf, 0x11, 0xa6, 0x8f, 0x5e, 0xf6, 0x4f, 0xfc, - 0x60, 0xd9, 0xc7, 0xea, 0x68, 0xa5, 0x19, 0x1f, 0xec, 0x4a, 0x9f, 0x9d, 0x57, 0xd3, 0xc2, 0x18, - 0x8c, 0x56, 0xf1, 0x4e, 0x8a, 0x9d, 0xdc, 0xff, 0x77, 0x11, 0x2e, 0xcb, 0x47, 0x2d, 0x39, 0x62, - 0xfe, 0x1c, 0x66, 0x25, 0xa8, 0xda, 0x66, 0x0a, 0x03, 0x6d, 0x9a, 0x92, 0xe6, 0xd1, 0x45, 0xa5, - 0xa4, 0x1d, 0x81, 0x13, 0x0b, 0x3b, 0x8f, 0xfc, 0xe5, 0x58, 0x3f, 0x3f, 0xce, 0x8a, 0xf6, 0x83, - 0x56, 0x48, 0x7d, 0xcd, 0x34, 0x44, 0x63, 0xac, 0x9f, 0xcd, 0x94, 0xf5, 0x74, 0xe0, 0x45, 0xad, - 0xa7, 0x2b, 0x7d, 0x49, 0xfb, 0xe9, 0xc2, 0x24, 0x8c, 0x6f, 0xd0, 0xa7, 0xb1, 0xdc, 0xff, 0x66, - 0x21, 0x11, 0x69, 0x80, 0x69, 0x18, 0x3c, 0xe4, 0x40, 0x21, 0x0e, 0x18, 0x83, 0x91, 0x06, 0x74, - 0x0d, 0x83, 0xa3, 0xae, 0xc2, 0x30, 0xbf, 0xa8, 0x6d, 0x9e, 0xe0, 0x84, 0xaf, 0x5e, 0xa7, 0xf0, - 0x27, 0x83, 0x4d, 0x7e, 0xd8, 0x17, 0xf4, 0xd6, 0x03, 0xb8, 0x2a, 0xfc, 0x97, 0xcd, 0xc1, 0xc7, - 0x8a, 0x4e, 0xb9, 0x7d, 0x59, 0x0e, 0x5c, 0xbe, 0x47, 0x93, 0x4b, 0x8f, 0xf1, 0x7a, 0xe7, 0x13, - 0x38, 0x63, 0xc0, 0x15, 0x47, 0xd4, 0x4a, 0xd5, 0x1c, 0x52, 0xac, 0x93, 0xd8, 0xd6, 0x95, 0xac, - 0x2a, 0xf4, 0xc6, 0x5a, 0x14, 0xc3, 0x84, 0x06, 0xf1, 0x15, 0x5b, 0x78, 0x8a, 0x55, 0xef, 0xba, - 0xf6, 0x5d, 0xf3, 0x15, 0x8f, 0xc7, 0x91, 0x93, 0x3b, 0xaf, 0x2a, 0xb5, 0x26, 0x8c, 0xbb, 0x00, - 0x6b, 0x12, 0xc6, 0x65, 0x51, 0x8b, 0x86, 0xa1, 0xf5, 0x93, 0x41, 0xb0, 0x84, 0x60, 0xb3, 0x6e, - 0x9f, 0xa5, 0x3c, 0xf6, 0x52, 0x8d, 0x15, 0x1b, 0xd5, 0x39, 0x3d, 0x3a, 0x65, 0x5c, 0xca, 0x67, - 0x1e, 0xea, 0x79, 0x8d, 0x18, 0x6a, 0xcc, 0xbc, 0x54, 0xef, 0xbf, 0xca, 0x59, 0x26, 0xf9, 0xc7, - 0xf6, 0xea, 0xf1, 0x51, 0xe5, 0x6a, 0xce, 0x32, 0x69, 0xf0, 0xcd, 0x5e, 0x32, 0x6d, 0xf3, 0x4a, - 0xa4, 0xff, 0x79, 0xae, 0x44, 0xd8, 0x17, 0xa9, 0x5f, 0x8a, 0xec, 0x98, 0xb2, 0x14, 0xdf, 0xa3, - 0xbc, 0xd2, 0xd6, 0x8b, 0xc4, 0x83, 0x7f, 0x0d, 0x62, 0x70, 0x35, 0xd8, 0x10, 0x17, 0x4a, 0x9a, - 0xcd, 0x72, 0xf1, 0x80, 0x36, 0x1e, 0x0b, 0x5b, 0xb1, 0xbc, 0xd0, 0xcd, 0xb2, 0x99, 0xf3, 0x48, - 0xc5, 0xfc, 0x3b, 0xe7, 0x05, 0xf5, 0x06, 0x23, 0xd5, 0x03, 0x16, 0x24, 0xd9, 0x92, 0x1f, 0xc3, - 0x94, 0x1a, 0xea, 0x84, 0xfb, 0xd1, 0xd8, 0xfc, 0x2b, 0x71, 0x50, 0xcb, 0xc3, 0x47, 0xce, 0xcd, - 0x27, 0x77, 0x6e, 0x66, 0xe0, 0xf2, 0x77, 0xf0, 0x0d, 0x59, 0xa0, 0xf9, 0x1e, 0xe9, 0x17, 0x5d, - 0x59, 0x84, 0xda, 0x75, 0xf6, 0xdf, 0x57, 0xce, 0xf2, 0x4c, 0x5f, 0x70, 0x5b, 0x54, 0xbc, 0x7a, - 0x91, 0xb3, 0x2f, 0xe7, 0x2a, 0xae, 0xf0, 0x2d, 0x5f, 0xc5, 0xfd, 0xab, 0xa2, 0x7c, 0x22, 0x90, - 0xbe, 0x0d, 0x3d, 0xf5, 0x8d, 0x5c, 0x66, 0x0f, 0x4e, 0xb4, 0x99, 0x66, 0x36, 0x8e, 0x2c, 0xc8, - 0xfb, 0x4c, 0x15, 0x77, 0x6a, 0x52, 0xdd, 0x0d, 0xc4, 0x05, 0xc6, 0x15, 0x27, 0xaa, 0x2e, 0x1a, - 0x55, 0xf2, 0xb2, 0xac, 0xff, 0xc5, 0x2f, 0xcb, 0xfe, 0xf5, 0x28, 0x9c, 0xdd, 0x72, 0xf6, 0x5d, - 0x8f, 0x2d, 0xda, 0x36, 0x0d, 0xfd, 0x4e, 0xd0, 0xa0, 0xa4, 0x0a, 0x93, 0xa6, 0xff, 0x67, 0x0f, - 0xef, 0x56, 0xb6, 0x2f, 0x99, 0x30, 0x32, 0x0f, 0xa3, 0xea, 0xcd, 0xa9, 0xd8, 0x4c, 0x32, 0xde, - 0xa2, 0xae, 0xf4, 0xd9, 0x31, 0x1a, 0x79, 0xdf, 0xb8, 0xdf, 0x39, 0xa3, 0x9e, 0x4f, 0x23, 0xee, - 0x3c, 0x77, 0xd0, 0xf3, 0xfc, 0xa6, 0xb9, 0x21, 0xf2, 0x4b, 0x8c, 0x1f, 0xa6, 0xae, 0x7c, 0x06, - 0x8d, 0x16, 0xa7, 0xec, 0x5e, 0xa8, 0x0b, 0xe4, 0x86, 0x8a, 0xce, 0xb8, 0x0c, 0xfa, 0x12, 0xc6, - 0x1e, 0x74, 0xf6, 0xa8, 0xbc, 0xdc, 0x1a, 0x12, 0xfb, 0x63, 0xd2, 0xab, 0x59, 0x94, 0xef, 0xbe, - 0xc5, 0xc7, 0xe0, 0x71, 0x67, 0x8f, 0xa6, 0x63, 0x90, 0xb3, 0x85, 0x49, 0x63, 0x46, 0x0e, 0xa0, - 0x94, 0x74, 0x40, 0x16, 0x91, 0xda, 0xba, 0xb8, 0x4d, 0x63, 0x28, 0x0f, 0x2d, 0xd2, 0x39, 0x77, - 0x8b, 0x34, 0x2a, 0x49, 0x71, 0x25, 0xbf, 0x0a, 0x33, 0x99, 0x56, 0x47, 0xf5, 0x84, 0xaa, 0xbb, - 0x41, 0x13, 0x17, 0xf5, 0x84, 0xd4, 0xe4, 0x7b, 0x2d, 0xa3, 0xe6, 0xec, 0x5a, 0x48, 0x13, 0xce, - 0x24, 0x1c, 0x6b, 0x45, 0x3a, 0x87, 0x7c, 0x57, 0x5d, 0xdc, 0x98, 0x64, 0x44, 0xd4, 0xcc, 0xba, - 0x92, 0x2c, 0xc9, 0x1a, 0x8c, 0xaa, 0xe3, 0x3e, 0xbe, 0xce, 0xca, 0x36, 0x6d, 0x94, 0x8f, 0x8f, - 0x2a, 0xd3, 0xb1, 0x69, 0xc3, 0xe0, 0x19, 0x33, 0x20, 0xbf, 0x06, 0x57, 0xd5, 0x14, 0xdd, 0x0c, - 0xb2, 0x8d, 0x40, 0x22, 0x92, 0xfa, 0x8d, 0xe4, 0x0c, 0xcf, 0xc3, 0xdf, 0xbd, 0xb3, 0x50, 0x2c, - 0x17, 0x56, 0xfa, 0xec, 0xde, 0xac, 0xc9, 0x4f, 0x0a, 0x70, 0x2e, 0xa7, 0xd6, 0x71, 0xac, 0xb5, - 0xa7, 0x65, 0x0e, 0x95, 0x7b, 0x7c, 0x36, 0xe4, 0x36, 0xe3, 0xe7, 0x75, 0xd2, 0x44, 0x67, 0xf4, - 0x3b, 0xa7, 0x26, 0xf2, 0x26, 0x0c, 0xe1, 0x19, 0x39, 0x2c, 0x4f, 0xa0, 0x16, 0x89, 0x11, 0x6c, - 0xf0, 0x24, 0xad, 0xef, 0x1b, 0x02, 0x87, 0xac, 0x30, 0x6d, 0x0c, 0xf7, 0x2d, 0xa9, 0x3d, 0x89, - 0x78, 0x57, 0x42, 0xa3, 0xe7, 0x45, 0x32, 0xca, 0x85, 0x11, 0x32, 0xdf, 0x24, 0x5b, 0x00, 0x18, - 0x09, 0xc4, 0xaa, 0x74, 0x7f, 0x60, 0x64, 0xa0, 0x34, 0xc8, 0x3f, 0x1c, 0xe9, 0xb1, 0xfd, 0x9b, - 0x23, 0xfc, 0x79, 0xe7, 0x8e, 0xe7, 0x3e, 0x72, 0xe3, 0x05, 0x4c, 0xb7, 0xae, 0xc5, 0xb9, 0x6b, - 0x84, 0xee, 0x9b, 0x93, 0xa5, 0x46, 0x19, 0xe2, 0x8a, 0x3d, 0x0d, 0x71, 0x6f, 0x69, 0x57, 0x56, - 0x5a, 0xf8, 0x49, 0xae, 0xe3, 0x98, 0x86, 0xaf, 0xf8, 0x2e, 0xeb, 0x6b, 0x18, 0xc2, 0x88, 0x91, - 0xfc, 0x3e, 0x70, 0x6c, 0xfe, 0xa6, 0x58, 0xb6, 0xbb, 0x34, 0x9f, 0x87, 0x98, 0x14, 0x4f, 0xb6, - 0xb9, 0xc4, 0x11, 0x60, 0x48, 0x1c, 0x21, 0x64, 0x1b, 0xa6, 0xb6, 0x02, 0xda, 0x14, 0x7e, 0xc3, - 0xed, 0x40, 0x18, 0x27, 0xb8, 0xd9, 0x03, 0xb7, 0xfc, 0xb6, 0x2c, 0xae, 0x53, 0x55, 0xae, 0x6f, - 0xa8, 0x19, 0xe4, 0x64, 0x19, 0x26, 0x6b, 0xd4, 0x09, 0x1a, 0x07, 0x0f, 0xe8, 0x33, 0xa6, 0xee, - 0x18, 0xe9, 0x1a, 0x42, 0x2c, 0x61, 0xfd, 0xc5, 0x22, 0xdd, 0xc7, 0xc3, 0x24, 0x22, 0x9f, 0xc2, - 0x50, 0xcd, 0x0f, 0xa2, 0x85, 0x67, 0x62, 0x51, 0x93, 0x37, 0x46, 0x1c, 0xb8, 0x70, 0x5e, 0xa6, - 0xac, 0x08, 0xfd, 0x20, 0xaa, 0xef, 0x19, 0x21, 0x91, 0x38, 0x0a, 0x79, 0x06, 0xd3, 0xe6, 0x82, - 0x22, 0xdc, 0x59, 0x47, 0x84, 0x9a, 0x95, 0xb5, 0x6a, 0x71, 0x94, 0x85, 0xeb, 0x82, 0xfb, 0x95, - 0xe4, 0xb2, 0xf5, 0x08, 0xcb, 0xf5, 0x28, 0x45, 0x59, 0xf4, 0x64, 0x1d, 0x73, 0x7d, 0xf0, 0x1e, - 0x55, 0x43, 0xee, 0x06, 0x3b, 0x1a, 0x07, 0xdd, 0xea, 0xe0, 0xa2, 0x84, 0x92, 0x70, 0xc2, 0x64, - 0x82, 0x18, 0x3b, 0x45, 0x4a, 0xb6, 0xe0, 0xec, 0x4e, 0x48, 0xb7, 0x02, 0xfa, 0xc4, 0xa5, 0x4f, - 0x25, 0x3f, 0x88, 0x23, 0x14, 0x31, 0x7e, 0x6d, 0x5e, 0x9a, 0xc5, 0x30, 0x4d, 0x4c, 0xde, 0x07, - 0xd8, 0x72, 0x3d, 0x8f, 0x36, 0xf1, 0xda, 0x71, 0x0c, 0x59, 0xa1, 0x49, 0xb5, 0x8d, 0xd0, 0xba, - 0xef, 0xb5, 0x74, 0x91, 0x6a, 0xc8, 0x64, 0x01, 0x26, 0x56, 0xbd, 0x46, 0xab, 0x23, 0xdc, 0x03, - 0x42, 0x5c, 0x50, 0x44, 0xe4, 0x34, 0x97, 0x17, 0xd4, 0x53, 0x1f, 0xb9, 0x49, 0x42, 0x1e, 0x00, - 0x11, 0x00, 0x31, 0x6b, 0x9d, 0xbd, 0x16, 0x15, 0x9f, 0x3b, 0x9a, 0x4a, 0x24, 0x23, 0x9c, 0xee, - 0x46, 0x40, 0xb2, 0x14, 0xd9, 0xdc, 0xfb, 0x30, 0xa6, 0xcd, 0xf9, 0x8c, 0x18, 0x04, 0xd3, 0x7a, - 0x0c, 0x82, 0x51, 0x3d, 0xd6, 0xc0, 0x3f, 0x2e, 0xc0, 0xc5, 0xec, 0x6f, 0x49, 0x28, 0x60, 0x9b, - 0x30, 0xaa, 0x80, 0xea, 0xd5, 0x89, 0x54, 0xfd, 0x13, 0x1a, 0x10, 0xff, 0xa0, 0xe5, 0xca, 0xa3, - 0xf7, 0x3e, 0xe6, 0xf1, 0x1c, 0xf6, 0xf8, 0xbf, 0x35, 0x02, 0xd3, 0xe8, 0x5d, 0x9d, 0x5c, 0xa7, - 0x3e, 0xc1, 0x58, 0x22, 0x08, 0xd3, 0xcc, 0xcb, 0xc2, 0xd2, 0xc4, 0xe1, 0xc9, 0xc0, 0x57, 0x06, - 0x01, 0x79, 0x47, 0xf7, 0x89, 0x28, 0x6a, 0xb9, 0x45, 0x24, 0x50, 0xef, 0x42, 0xec, 0x2c, 0xf1, - 0x86, 0x71, 0x25, 0x7f, 0xe2, 0x45, 0x6f, 0xe0, 0xa4, 0x8b, 0xde, 0x8e, 0x5a, 0xf4, 0x78, 0x8c, - 0x8a, 0xd7, 0xb5, 0x45, 0xef, 0xe5, 0xaf, 0x76, 0x43, 0x2f, 0x7b, 0xb5, 0x1b, 0x7e, 0xb1, 0xd5, - 0x6e, 0xe4, 0x39, 0x57, 0xbb, 0xbb, 0x30, 0xb9, 0x41, 0x69, 0x53, 0xbb, 0x28, 0x19, 0x8d, 0x77, - 0x4f, 0x8f, 0xa2, 0x09, 0x2c, 0xeb, 0xb6, 0x24, 0x41, 0x95, 0xbb, 0x6a, 0xc2, 0x5f, 0xcd, 0xaa, - 0x39, 0xf6, 0x92, 0x57, 0xcd, 0xf1, 0x17, 0x59, 0x35, 0x53, 0x4b, 0xdf, 0xc4, 0xa9, 0x97, 0xbe, - 0x17, 0x59, 0xad, 0x3e, 0x46, 0x97, 0xc2, 0x5a, 0x6d, 0x45, 0x78, 0x8f, 0x68, 0xee, 0x1a, 0x2b, - 0x7e, 0x28, 0x3d, 0xae, 0xf1, 0x6f, 0x06, 0xdb, 0xf2, 0x03, 0x79, 0xe5, 0x8d, 0x7f, 0x5b, 0x0b, - 0xe8, 0x48, 0xa8, 0xd3, 0x2b, 0x77, 0xfd, 0x61, 0xf1, 0x64, 0x4f, 0xac, 0x71, 0xc9, 0x63, 0x94, - 0x2d, 0xcb, 0xad, 0x3f, 0x2b, 0xf0, 0x4b, 0xc9, 0xff, 0x1f, 0x97, 0xca, 0x17, 0xb9, 0x28, 0xfc, - 0x8d, 0xf8, 0x29, 0xbf, 0x08, 0x3b, 0x10, 0x38, 0x8d, 0xc7, 0xf1, 0x4d, 0xed, 0x0f, 0xd8, 0x77, - 0xae, 0x17, 0x60, 0x60, 0xd5, 0xf8, 0xac, 0x68, 0x16, 0xee, 0xde, 0x91, 0x0b, 0x80, 0x88, 0x68, - 0xc0, 0xc1, 0xe6, 0x02, 0xa0, 0x13, 0xa0, 0xaf, 0xdc, 0x19, 0xcb, 0xe6, 0x2f, 0xd1, 0x33, 0x5b, - 0xf0, 0x6e, 0xfa, 0x2d, 0x35, 0x1e, 0x46, 0xe2, 0xb7, 0xd4, 0xba, 0x18, 0xe3, 0x57, 0xd5, 0x3b, - 0x70, 0xc1, 0xa6, 0x87, 0xfe, 0x13, 0xfa, 0x72, 0xd9, 0x7e, 0x05, 0xe7, 0x4d, 0x86, 0xfc, 0xd5, - 0x0d, 0x0f, 0xb6, 0xfe, 0x71, 0x76, 0x88, 0x76, 0x41, 0xc0, 0x43, 0xb4, 0xf3, 0x48, 0xcf, 0xec, - 0x4f, 0x7d, 0xdf, 0xc0, 0x32, 0xcb, 0x87, 0x8b, 0x26, 0xf3, 0x6a, 0xb3, 0x89, 0x99, 0x1c, 0x1b, - 0x6e, 0xdb, 0xf1, 0x22, 0xb2, 0x09, 0x63, 0xda, 0xcf, 0x84, 0xa9, 0x40, 0x2b, 0x11, 0x3a, 0x4d, - 0x0c, 0x30, 0x42, 0x70, 0xc6, 0x60, 0x8b, 0x42, 0x25, 0x29, 0x1e, 0x26, 0x32, 0xbd, 0xce, 0x05, - 0x98, 0xd0, 0x7e, 0x2a, 0x93, 0x25, 0x7e, 0xfc, 0x5a, 0x0d, 0xa6, 0xc0, 0x4c, 0x12, 0xab, 0x01, - 0x73, 0x59, 0x42, 0xc3, 0xe8, 0x4c, 0xcf, 0xc8, 0x72, 0x1c, 0xe7, 0xa9, 0xb7, 0xb7, 0xdd, 0x99, - 0xbc, 0x18, 0x4f, 0xd6, 0xdf, 0x1b, 0x80, 0x0b, 0x62, 0x30, 0x5e, 0xe6, 0x88, 0x93, 0x1f, 0xc2, - 0x98, 0x36, 0xc6, 0x42, 0xe8, 0x57, 0x64, 0xe8, 0xcd, 0xbc, 0xb9, 0xc0, 0x4d, 0x1a, 0x1d, 0x04, - 0xd4, 0x13, 0xc3, 0xbd, 0xd2, 0x67, 0xeb, 0x2c, 0x49, 0x0b, 0x26, 0xcd, 0x81, 0x16, 0x56, 0x9d, - 0x6b, 0x99, 0x95, 0x98, 0xa8, 0x32, 0x90, 0x73, 0xb3, 0x9e, 0x39, 0xdc, 0x2b, 0x7d, 0x76, 0x82, - 0x37, 0xf9, 0x06, 0xce, 0xa6, 0x46, 0x59, 0x18, 0xeb, 0x5e, 0xcb, 0xac, 0x30, 0x85, 0xcd, 0xcd, - 0xb1, 0x01, 0x82, 0x73, 0xab, 0x4d, 0x57, 0x42, 0x9a, 0x30, 0xae, 0x0f, 0xbc, 0x30, 0x3b, 0x5d, - 0xed, 0x22, 0x4a, 0x8e, 0xc8, 0x95, 0x3b, 0x21, 0x4b, 0x1c, 0xfb, 0x67, 0xa6, 0x89, 0xd9, 0x40, - 0x1e, 0x81, 0x21, 0xfe, 0x9b, 0x2d, 0x01, 0x5b, 0x01, 0x0d, 0xa9, 0xd7, 0xa0, 0x86, 0x83, 0xf6, - 0x0b, 0x2e, 0x01, 0xff, 0xbe, 0x00, 0xe5, 0x2c, 0xbe, 0x35, 0xea, 0x35, 0xc9, 0x16, 0x94, 0x92, - 0x15, 0x89, 0x59, 0x6d, 0xa9, 0x58, 0xb9, 0xb9, 0x4d, 0x5a, 0xe9, 0xb3, 0x53, 0xd4, 0x64, 0x03, - 0xce, 0x6a, 0x30, 0x61, 0x5c, 0x2d, 0x9e, 0xc4, 0xb8, 0xca, 0x46, 0x21, 0x45, 0xaa, 0xdb, 0xa6, - 0x57, 0x70, 0x67, 0x5c, 0xf2, 0x0f, 0x1d, 0xd7, 0x63, 0x8a, 0xae, 0x16, 0xea, 0x09, 0x62, 0xa8, - 0x90, 0x0d, 0xb7, 0xb6, 0x22, 0x54, 0x3e, 0x28, 0x51, 0x28, 0xd6, 0x47, 0xb8, 0x82, 0x0b, 0x1b, - 0x1d, 0x7f, 0x9e, 0xaa, 0x98, 0x5d, 0x81, 0xc1, 0xed, 0xb5, 0xda, 0x62, 0x55, 0x3c, 0x76, 0xe5, - 0x21, 0x12, 0x5a, 0x61, 0xbd, 0xe1, 0xd8, 0xbc, 0xc0, 0xfa, 0x10, 0xc8, 0x3d, 0x1a, 0x89, 0x60, - 0xed, 0x8a, 0xee, 0x55, 0x18, 0x16, 0x20, 0x41, 0x89, 0xae, 0x71, 0x2d, 0x81, 0x25, 0xcb, 0xac, - 0x2d, 0x79, 0x4e, 0x68, 0x51, 0x27, 0xd4, 0x36, 0xe6, 0xf7, 0x60, 0x24, 0x10, 0x30, 0xb1, 0x2f, - 0x4f, 0xaa, 0x94, 0x19, 0x08, 0xe6, 0xf6, 0x6c, 0x89, 0x63, 0xab, 0xbf, 0xac, 0x35, 0x0c, 0x67, - 0xb2, 0xb9, 0xba, 0xb4, 0xc8, 0xa4, 0x2a, 0x84, 0x25, 0x87, 0xe3, 0x16, 0xfa, 0x90, 0x47, 0x54, - 0x7f, 0xea, 0x8a, 0xa2, 0xc1, 0x8f, 0x5c, 0x04, 0xf1, 0xd1, 0x50, 0xac, 0xb7, 0x54, 0x70, 0x94, - 0x0c, 0x6e, 0x79, 0xa9, 0x1f, 0x36, 0x30, 0xec, 0xcb, 0x3d, 0x74, 0x97, 0x79, 0x19, 0x8d, 0x70, - 0x60, 0x8e, 0x6f, 0xf3, 0xac, 0x57, 0x22, 0xb9, 0x9d, 0xaf, 0x96, 0xc6, 0x45, 0x18, 0x55, 0x30, - 0x75, 0xf7, 0xc5, 0x65, 0x65, 0xe0, 0xef, 0xbe, 0xc5, 0x5f, 0x05, 0x37, 0x14, 0x83, 0x98, 0x8e, - 0x55, 0xc1, 0xbf, 0xbb, 0x6f, 0xb9, 0x8a, 0x90, 0x06, 0xd1, 0xb7, 0x5a, 0x45, 0x1c, 0x17, 0xe8, - 0x34, 0x55, 0x18, 0xf8, 0xbb, 0xf3, 0x27, 0x11, 0xd4, 0xb7, 0x5c, 0x05, 0x13, 0xd4, 0xb7, 0x57, - 0x05, 0x95, 0x01, 0x94, 0xf8, 0x24, 0x4d, 0x55, 0xb2, 0x9c, 0xae, 0x44, 0x1a, 0xae, 0x13, 0x14, - 0x5d, 0xc7, 0x83, 0xc2, 0x45, 0x2e, 0xac, 0x5f, 0x40, 0x35, 0x4c, 0x60, 0xdf, 0x6e, 0x35, 0xff, - 0xb0, 0xc0, 0xc3, 0x39, 0xd5, 0x36, 0xb5, 0xb4, 0x92, 0xde, 0x23, 0x5f, 0xbb, 0x9a, 0xd7, 0xbe, - 0xf6, 0x07, 0xae, 0xd7, 0xd4, 0xaf, 0xe6, 0x9d, 0x4e, 0x74, 0xa0, 0xc2, 0x1d, 0x3f, 0x76, 0xbd, - 0xa6, 0x9d, 0xc4, 0x26, 0xef, 0xc3, 0x84, 0x06, 0x52, 0xda, 0x1a, 0xcf, 0x19, 0xa1, 0x93, 0xbb, - 0x4d, 0xdb, 0xc4, 0xb4, 0xfe, 0xb2, 0x00, 0x53, 0x19, 0x09, 0x8f, 0xd1, 0x98, 0x81, 0xa7, 0x20, - 0xb5, 0x50, 0x89, 0x64, 0x4c, 0x18, 0x59, 0xc2, 0xd8, 0x24, 0x15, 0x22, 0x46, 0xcb, 0xd7, 0x92, - 0x33, 0x17, 0xb5, 0xb4, 0x60, 0xd9, 0x09, 0x99, 0x75, 0x74, 0x12, 0x02, 0xc4, 0x2d, 0x11, 0x66, - 0xe3, 0x1a, 0x53, 0x69, 0xb5, 0xcc, 0xce, 0x2f, 0x25, 0xb5, 0xb4, 0x56, 0x8d, 0xf5, 0x1b, 0x45, - 0x38, 0x97, 0xd1, 0xff, 0x1a, 0x8d, 0xfe, 0x2a, 0x44, 0x90, 0xc8, 0xaf, 0xdd, 0xff, 0x0b, 0xca, - 0xaf, 0x6d, 0xfd, 0xe7, 0x22, 0x9c, 0xdb, 0x69, 0x87, 0xf8, 0xc2, 0x6a, 0xd5, 0x7b, 0x42, 0xbd, - 0xc8, 0x0f, 0x9e, 0xe1, 0xab, 0x10, 0xf2, 0x0e, 0x0c, 0xae, 0xd0, 0x56, 0xcb, 0x17, 0xf3, 0xff, - 0x92, 0xf4, 0x8e, 0x48, 0x62, 0x23, 0xd2, 0x4a, 0x9f, 0xcd, 0xb1, 0xc9, 0xfb, 0x30, 0xba, 0x42, - 0x9d, 0x20, 0xda, 0xa3, 0x8e, 0x3c, 0xb2, 0xc8, 0x4c, 0x16, 0x1a, 0x89, 0x40, 0x58, 0xe9, 0xb3, - 0x63, 0x6c, 0x32, 0xcf, 0x4e, 0xf3, 0xde, 0xbe, 0x7a, 0x4d, 0x9e, 0x53, 0x21, 0xc3, 0x59, 0xe9, - 0xb3, 0x11, 0x97, 0xac, 0xc3, 0x44, 0x75, 0x9f, 0x7a, 0xd1, 0x3a, 0x8d, 0x9c, 0xa6, 0x13, 0x39, - 0x42, 0xb5, 0x7d, 0x35, 0x8f, 0xd8, 0x40, 0x5e, 0xe9, 0xb3, 0x4d, 0x6a, 0xf2, 0x21, 0x0c, 0xdf, - 0xf3, 0xfd, 0xe6, 0xde, 0x33, 0x2a, 0xd4, 0xd5, 0x4a, 0x1e, 0x23, 0x81, 0xb6, 0xd2, 0x67, 0x4b, - 0x8a, 0x85, 0x41, 0xe8, 0x5f, 0x0f, 0xf7, 0xad, 0xa3, 0x02, 0x94, 0x97, 0xfc, 0xa7, 0x5e, 0xa6, - 0x54, 0xbf, 0x67, 0x4a, 0x55, 0xb2, 0xcf, 0xc0, 0x4f, 0xc8, 0xf5, 0x6d, 0x18, 0xd8, 0x72, 0xbd, - 0xfd, 0x84, 0x2a, 0x98, 0x41, 0xc7, 0xb0, 0x50, 0x3c, 0xae, 0xb7, 0x4f, 0xd6, 0xa4, 0x0e, 0x2e, - 0x6c, 0x8d, 0xfd, 0x86, 0xe2, 0x9f, 0x41, 0xad, 0x63, 0xc7, 0xba, 0x36, 0xff, 0x2d, 0x3b, 0xf8, - 0x06, 0xcc, 0xe6, 0xd4, 0x2b, 0x9e, 0x87, 0xb3, 0xbe, 0x0d, 0xa0, 0x62, 0xf3, 0x3a, 0xcc, 0x64, - 0x8e, 0x5f, 0x0a, 0xf1, 0x9f, 0x65, 0x4d, 0x44, 0xde, 0xf3, 0x32, 0x0c, 0xcb, 0x4c, 0x4c, 0xdc, - 0xf6, 0x23, 0x7f, 0xe2, 0x03, 0x29, 0xf9, 0xa1, 0xca, 0xc0, 0x1e, 0xf2, 0x7b, 0xdc, 0xd5, 0x02, - 0x29, 0xf1, 0xcf, 0xe9, 0x83, 0x17, 0xf8, 0x68, 0x14, 0x2f, 0x56, 0xe7, 0x8a, 0x1f, 0x46, 0x9e, - 0xf2, 0xbc, 0xb5, 0xd5, 0x6f, 0x72, 0x03, 0x4a, 0x32, 0x9d, 0x83, 0xc8, 0x1b, 0x23, 0xb2, 0x81, - 0xdb, 0x29, 0x38, 0x79, 0x0f, 0x66, 0x93, 0x30, 0xd9, 0x4b, 0xfe, 0xc2, 0x2d, 0xaf, 0xd8, 0xfa, - 0xd3, 0x22, 0xc6, 0xba, 0xee, 0x32, 0xaf, 0x99, 0x74, 0x37, 0x6b, 0x42, 0x5a, 0xc5, 0xcd, 0x1a, - 0xb9, 0x08, 0xa3, 0x9b, 0x35, 0x23, 0x9d, 0x95, 0x1d, 0x03, 0x58, 0xb3, 0x59, 0x17, 0xaa, 0x41, - 0xe3, 0xc0, 0x8d, 0x68, 0x23, 0xea, 0x04, 0x62, 0x15, 0xb6, 0x53, 0x70, 0x62, 0xc1, 0xf8, 0xbd, - 0x96, 0xbb, 0xd7, 0x90, 0xcc, 0xb8, 0x08, 0x0c, 0x18, 0x79, 0x0d, 0x26, 0x57, 0xbd, 0x30, 0x72, - 0x5a, 0xad, 0x75, 0x1a, 0x1d, 0xf8, 0x4d, 0x91, 0x90, 0xd3, 0x4e, 0x40, 0x59, 0xbd, 0x8b, 0xbe, - 0x17, 0x39, 0xae, 0x47, 0x03, 0xbb, 0xe3, 0x45, 0xee, 0x21, 0x15, 0x7d, 0x4f, 0xc1, 0xc9, 0xdb, - 0x30, 0xa3, 0x60, 0x9b, 0x41, 0xe3, 0x80, 0x86, 0x51, 0x80, 0x49, 0xee, 0x30, 0xe0, 0x8f, 0x9d, - 0x5d, 0x88, 0x35, 0xb4, 0xfc, 0x4e, 0x73, 0xd9, 0x7b, 0xe2, 0x06, 0xbe, 0x87, 0xb9, 0x29, 0x46, - 0x44, 0x0d, 0x09, 0xb8, 0xf5, 0xfb, 0x23, 0x99, 0x9f, 0xed, 0x8b, 0xcc, 0xc1, 0x2f, 0x60, 0x7c, - 0xd1, 0x69, 0x3b, 0x7b, 0x6e, 0xcb, 0x8d, 0x5c, 0x95, 0x0d, 0xec, 0x9d, 0x1e, 0xdf, 0xbc, 0x4c, - 0xf0, 0x41, 0x9b, 0x3a, 0xb1, 0x6d, 0xb0, 0x9a, 0xfb, 0x8b, 0x21, 0x98, 0xc9, 0xc4, 0x23, 0xd7, - 0x45, 0xda, 0x30, 0xb5, 0xae, 0x8a, 0x64, 0x57, 0x76, 0x12, 0xcc, 0xc6, 0x12, 0x41, 0x8b, 0x2d, - 0xea, 0x78, 0x1d, 0x91, 0xea, 0xca, 0x36, 0x60, 0x6c, 0x2c, 0x99, 0xde, 0xa0, 0x31, 0x43, 0xc7, - 0x69, 0x3b, 0x01, 0x25, 0x57, 0x60, 0x8c, 0x41, 0x24, 0xab, 0x01, 0xfe, 0xc4, 0x4f, 0x03, 0x31, - 0x4e, 0x1b, 0x7e, 0x93, 0x6a, 0x9c, 0x06, 0x39, 0x27, 0x13, 0xca, 0x38, 0x31, 0x88, 0xe4, 0x34, - 0xc4, 0x39, 0x69, 0x20, 0xf2, 0x0a, 0x4c, 0x54, 0xdb, 0x6d, 0x8d, 0x11, 0xe6, 0xb8, 0xb2, 0x4d, - 0x20, 0xb9, 0x0c, 0x50, 0x6d, 0xb7, 0x25, 0x1b, 0xcc, 0x5f, 0x65, 0x6b, 0x10, 0x72, 0x33, 0x0e, - 0x57, 0xa6, 0xb1, 0xc2, 0xeb, 0x04, 0x3b, 0xa3, 0x84, 0xc9, 0x55, 0xc5, 0x76, 0x12, 0x4c, 0x81, - 0xcb, 0x35, 0x01, 0x26, 0x1f, 0xc1, 0xf9, 0x84, 0xdf, 0x85, 0x56, 0x01, 0x9a, 0xfa, 0xed, 0x7c, - 0x04, 0xf2, 0x2e, 0x9c, 0x4b, 0x14, 0xca, 0xea, 0xd0, 0xaa, 0x6f, 0xe7, 0x94, 0x92, 0x0f, 0xa0, - 0x9c, 0x78, 0xb6, 0x1d, 0x57, 0x8a, 0x16, 0x7c, 0x3b, 0xb7, 0x9c, 0x7d, 0x5d, 0x89, 0xf7, 0x5f, - 0xa2, 0x4a, 0xbc, 0xac, 0xb4, 0xb3, 0x0b, 0xc9, 0x0a, 0x54, 0x32, 0x7d, 0x59, 0xb4, 0x8a, 0x31, - 0x2f, 0x97, 0xdd, 0x0b, 0x8d, 0x2c, 0xc0, 0xc5, 0x4c, 0x14, 0xd9, 0x0c, 0xcc, 0xd6, 0x65, 0x77, - 0xc5, 0x21, 0xf3, 0x30, 0x1d, 0xfb, 0xf4, 0x68, 0x4d, 0xc0, 0x44, 0x5d, 0x76, 0x66, 0x19, 0x79, - 0xd3, 0x7c, 0x9c, 0xcf, 0x2b, 0xc3, 0x3c, 0x5d, 0x76, 0xba, 0xc0, 0x3a, 0x2e, 0xc0, 0xc5, 0xcc, - 0x8d, 0x52, 0xea, 0xf3, 0x73, 0x49, 0xc5, 0x51, 0x5b, 0x0b, 0x6e, 0xc0, 0x00, 0x2a, 0xf8, 0xdc, - 0x56, 0x2c, 0x7d, 0x4d, 0x91, 0x9e, 0xb3, 0x62, 0xa5, 0x36, 0xe2, 0x90, 0x7b, 0xea, 0x6e, 0xb0, - 0x1f, 0x2d, 0x19, 0xb7, 0x92, 0x0a, 0x54, 0x46, 0xe5, 0xfa, 0x1d, 0xa1, 0xbc, 0x0d, 0x7c, 0x91, - 0x6b, 0x98, 0x3f, 0x2d, 0x40, 0xa5, 0x87, 0x7e, 0xa0, 0xfa, 0x54, 0x38, 0x41, 0x9f, 0xee, 0xab, - 0x3e, 0xf1, 0xb7, 0xb1, 0xf3, 0x27, 0xd3, 0x41, 0x5e, 0x76, 0xb7, 0xfe, 0xb2, 0x00, 0x24, 0xad, - 0x87, 0x92, 0xef, 0xc2, 0x68, 0xad, 0xb6, 0x62, 0x78, 0xf4, 0xa5, 0x6e, 0x87, 0x62, 0x0c, 0x72, - 0xfb, 0x44, 0x2e, 0x7c, 0xba, 0x03, 0xdf, 0x27, 0x29, 0xbf, 0xc1, 0xfe, 0xae, 0x7e, 0x83, 0x29, - 0xaf, 0xc1, 0xe5, 0x0c, 0x47, 0xb8, 0x81, 0x1e, 0x8e, 0x70, 0x69, 0x2f, 0x37, 0x6b, 0x09, 0xca, - 0x79, 0xaa, 0x2c, 0xae, 0x70, 0x3c, 0xc8, 0x97, 0x76, 0xc3, 0xc5, 0x57, 0x38, 0x13, 0x6c, 0xbd, - 0x0b, 0xe7, 0x14, 0x35, 0xcf, 0x1e, 0xa2, 0x45, 0x20, 0x10, 0xe7, 0x5f, 0x15, 0xe9, 0x20, 0x06, - 0x58, 0x7f, 0x32, 0x90, 0x22, 0xac, 0x75, 0x0e, 0x0f, 0x9d, 0xe0, 0x19, 0xa9, 0x9a, 0x84, 0xfd, - 0x3d, 0x8f, 0x1c, 0x0b, 0x03, 0x3f, 0x3d, 0xaa, 0xf4, 0x69, 0xdc, 0xd9, 0xbe, 0x80, 0x1a, 0x86, - 0xd7, 0xa0, 0xfc, 0x6e, 0xac, 0xc8, 0xa3, 0x2c, 0x19, 0x40, 0xb2, 0x0b, 0x13, 0x62, 0xef, 0xc6, - 0xdf, 0xf2, 0x1b, 0xbb, 0x9d, 0xfc, 0xc6, 0x8c, 0xe6, 0xdd, 0x34, 0x48, 0xf8, 0x6c, 0x34, 0xd9, - 0x90, 0x2f, 0x60, 0x52, 0x6a, 0x6a, 0x82, 0x31, 0xf7, 0x66, 0xba, 0xd3, 0x9d, 0xb1, 0x49, 0xc3, - 0x39, 0x27, 0x18, 0xb1, 0x26, 0xcb, 0xc5, 0x8e, 0x73, 0x1e, 0x3c, 0x49, 0x93, 0x0d, 0x12, 0xd1, - 0x64, 0x03, 0x36, 0xf7, 0x29, 0x90, 0x74, 0xbf, 0x7a, 0x7d, 0x4e, 0x13, 0xda, 0xe7, 0x34, 0x57, - 0x85, 0xa9, 0x8c, 0x0e, 0x9c, 0x8a, 0xc5, 0xa7, 0x40, 0xd2, 0x2d, 0x3d, 0x0d, 0x07, 0xeb, 0x3a, - 0xbc, 0xa6, 0x44, 0xa0, 0x66, 0x83, 0xc1, 0x53, 0x5a, 0xc0, 0x7f, 0xbd, 0x08, 0x95, 0x1e, 0xa8, - 0xe4, 0xf7, 0x0a, 0x49, 0x69, 0xf3, 0xd9, 0xf8, 0x7e, 0x52, 0xda, 0xd9, 0xf4, 0x19, 0x62, 0x5f, - 0xf8, 0xe0, 0x27, 0x7f, 0xfe, 0xdc, 0x27, 0x8f, 0xf4, 0x90, 0x9d, 0x5e, 0x5a, 0x03, 0xba, 0xb4, - 0x6c, 0x98, 0x36, 0xce, 0x6c, 0x27, 0xd9, 0xbc, 0x2e, 0x03, 0x88, 0x5c, 0xa3, 0x6b, 0xfe, 0xbe, - 0xd0, 0x13, 0x35, 0x88, 0x75, 0x17, 0x66, 0x12, 0x3c, 0x85, 0x55, 0xfe, 0xbb, 0xa0, 0x5e, 0x9a, - 0x23, 0xd3, 0xfe, 0x85, 0xb3, 0x3f, 0x3f, 0xaa, 0x4c, 0x30, 0x95, 0xfe, 0x66, 0x1c, 0xc8, 0x5e, - 0xfe, 0x65, 0xad, 0xeb, 0xf7, 0x0a, 0xd5, 0x96, 0x1e, 0x81, 0x87, 0xdc, 0x81, 0x21, 0x0e, 0x49, - 0x84, 0x8b, 0xd6, 0xb1, 0xc5, 0x9a, 0x20, 0x10, 0xad, 0x19, 0x7c, 0x17, 0x8b, 0x3f, 0xaa, 0x71, - 0x1c, 0x07, 0x6b, 0x87, 0xa7, 0x4f, 0x89, 0xc1, 0x2a, 0x24, 0xf5, 0x40, 0x35, 0x8e, 0x37, 0x21, - 0x9d, 0x40, 0x24, 0x9e, 0xe7, 0x3f, 0x6d, 0xd1, 0x26, 0x4f, 0x4d, 0xb7, 0x30, 0x2e, 0x9c, 0x40, - 0x06, 0x1c, 0xc6, 0x00, 0xc9, 0xac, 0x4f, 0x60, 0x86, 0x69, 0x0a, 0x41, 0xb2, 0x3e, 0x4c, 0x9a, - 0xc0, 0x60, 0xa6, 0x67, 0xbd, 0xc3, 0x40, 0xe8, 0x59, 0x2f, 0x0a, 0xad, 0x35, 0x38, 0xcf, 0xad, - 0x92, 0x7a, 0x97, 0xe2, 0x3b, 0x80, 0x41, 0xfc, 0x9d, 0x78, 0x55, 0x99, 0xd1, 0x7b, 0x8e, 0x67, - 0x7d, 0x8c, 0xcf, 0x76, 0xc4, 0x24, 0x75, 0x7d, 0x2f, 0x36, 0x41, 0x9e, 0xec, 0x9d, 0xef, 0x5f, - 0x87, 0x8b, 0xd5, 0x76, 0x9b, 0x7a, 0xcd, 0x98, 0x70, 0x3b, 0x70, 0x4e, 0x18, 0x85, 0x81, 0x54, - 0x61, 0x10, 0xb1, 0xd5, 0x05, 0xaa, 0x68, 0x6e, 0x46, 0x73, 0x10, 0x4f, 0xc4, 0x0f, 0xc5, 0x0a, - 0x38, 0xa5, 0xd5, 0x84, 0xd9, 0x5a, 0x67, 0xef, 0xd0, 0x8d, 0xd0, 0x1f, 0x1f, 0x23, 0x99, 0xc8, - 0xba, 0x57, 0x65, 0xc6, 0x2b, 0x2e, 0x8c, 0xeb, 0xf1, 0xf3, 0x0e, 0x74, 0xe9, 0x17, 0xd1, 0x4d, - 0x9e, 0xdc, 0xb9, 0x19, 0x93, 0xa2, 0xf9, 0x85, 0xd7, 0x82, 0xc5, 0x22, 0x2b, 0x96, 0x35, 0x05, - 0x67, 0xf5, 0xcb, 0x28, 0x3e, 0x43, 0x66, 0x60, 0xca, 0xbc, 0x64, 0xe2, 0xe0, 0xaf, 0x61, 0x9a, - 0x1b, 0xc1, 0x79, 0xfc, 0xef, 0xf9, 0x38, 0xd4, 0x75, 0x71, 0x77, 0x3e, 0xf1, 0x10, 0x00, 0xfd, - 0x83, 0x55, 0x66, 0x87, 0xdd, 0x79, 0xfe, 0xf4, 0xf2, 0xc9, 0xbc, 0x71, 0x95, 0x59, 0xdc, 0x9d, - 0x5f, 0x18, 0x16, 0x71, 0x54, 0x19, 0x77, 0x3e, 0xfc, 0xdf, 0x0a, 0xf7, 0x79, 0x7c, 0xed, 0xbf, - 0x42, 0x1d, 0x7c, 0x99, 0x93, 0xfd, 0x66, 0x7a, 0x12, 0x8a, 0x6e, 0x53, 0x9a, 0x0d, 0xdc, 0xa6, - 0xf5, 0x87, 0x05, 0xb8, 0xce, 0x95, 0xb1, 0x6c, 0x3a, 0xbc, 0x71, 0xca, 0x21, 0x26, 0xef, 0x01, - 0x4f, 0x4d, 0x2f, 0x34, 0x5e, 0x4b, 0xb4, 0xbc, 0x1b, 0x27, 0x4e, 0x40, 0xaa, 0x30, 0xae, 0xbf, - 0x6d, 0x39, 0x59, 0x9c, 0x3a, 0x7b, 0xec, 0xf0, 0x91, 0xa3, 0xde, 0xbb, 0x3c, 0x86, 0x0b, 0xcb, - 0xdf, 0xb0, 0x09, 0x21, 0x76, 0x27, 0x71, 0x72, 0x88, 0xdf, 0xe4, 0x9e, 0xd9, 0x16, 0x33, 0xc6, - 0x3c, 0xd6, 0x27, 0xc1, 0xec, 0x8c, 0x2c, 0x37, 0x38, 0xa5, 0xbe, 0x8f, 0xda, 0x06, 0xcc, 0xfa, - 0x93, 0x02, 0x5c, 0xcc, 0xae, 0x4d, 0x2c, 0x2c, 0xab, 0x70, 0x76, 0xd1, 0xf1, 0x7c, 0xcf, 0x6d, - 0x38, 0xad, 0x5a, 0xe3, 0x80, 0x36, 0x3b, 0x2a, 0xda, 0xaa, 0x5a, 0x65, 0xf6, 0xa9, 0x27, 0xc9, - 0x25, 0x8a, 0x9d, 0xa6, 0x62, 0xa7, 0x43, 0x7c, 0x1e, 0xc1, 0xd7, 0xde, 0x16, 0x0d, 0x14, 0x3f, - 0xde, 0xb2, 0x9c, 0x52, 0x72, 0x5b, 0x5a, 0xfb, 0x9b, 0x3b, 0x9e, 0x1b, 0x29, 0x22, 0x6e, 0xe6, - 0xc9, 0x2a, 0xb2, 0xfe, 0x63, 0x01, 0xce, 0x63, 0x82, 0x25, 0x23, 0x65, 0x63, 0x1c, 0x74, 0x58, - 0xc6, 0xcd, 0x2d, 0x18, 0xcf, 0x3d, 0x0c, 0x6c, 0x33, 0x80, 0x2e, 0x79, 0x13, 0x06, 0x6a, 0xd2, - 0x5b, 0x6b, 0x32, 0x91, 0x0f, 0x57, 0x50, 0xb0, 0x72, 0x1b, 0xb1, 0xd8, 0x9e, 0xb3, 0x44, 0xc3, - 0x06, 0xf5, 0x30, 0x71, 0x31, 0xb7, 0x3a, 0x68, 0x90, 0x38, 0x66, 0xd2, 0x40, 0x5e, 0xcc, 0xa4, - 0x41, 0x33, 0x66, 0x92, 0xf5, 0x84, 0xa7, 0x57, 0x4a, 0x76, 0x48, 0x0c, 0xd2, 0xc7, 0xa9, 0x3c, - 0xc7, 0x7c, 0x1f, 0x38, 0x97, 0xd5, 0x33, 0xa6, 0xa0, 0x27, 0x52, 0x18, 0xe7, 0x07, 0xf9, 0xdd, - 0x82, 0x57, 0x0c, 0xdc, 0x6a, 0xab, 0xe5, 0x3f, 0xa5, 0xcd, 0xad, 0xc0, 0x3f, 0xf4, 0x23, 0x23, - 0xbd, 0x8c, 0x48, 0xf4, 0x1d, 0xdf, 0xe7, 0x88, 0x59, 0x99, 0x00, 0x5b, 0x7f, 0x0d, 0x5e, 0xed, - 0xc1, 0x51, 0x74, 0xaa, 0x06, 0x67, 0x9d, 0x44, 0x99, 0x74, 0xbb, 0x79, 0x35, 0xab, 0x5f, 0x49, - 0x46, 0xa1, 0x9d, 0xa6, 0xbf, 0xb1, 0x6d, 0xe4, 0x06, 0x26, 0x65, 0x98, 0xde, 0xb2, 0x37, 0x97, - 0x76, 0x16, 0xb7, 0xeb, 0xdb, 0x5f, 0x6c, 0x2d, 0xd7, 0x77, 0x36, 0x1e, 0x6c, 0x6c, 0x3e, 0xdc, - 0xe0, 0x51, 0xb2, 0x8d, 0x92, 0xed, 0xe5, 0xea, 0x7a, 0xa9, 0x40, 0xa6, 0xa1, 0x64, 0x80, 0x97, - 0x77, 0x16, 0x4a, 0xc5, 0x1b, 0x5f, 0x1b, 0x39, 0x6f, 0xc9, 0x45, 0x28, 0xd7, 0x76, 0xb6, 0xb6, - 0x36, 0x6d, 0xc5, 0x55, 0x8f, 0xd1, 0x3d, 0x03, 0x67, 0x8d, 0xd2, 0xbb, 0xf6, 0xf2, 0x72, 0xa9, - 0xc0, 0x9a, 0x62, 0x80, 0xb7, 0xec, 0xe5, 0xf5, 0xd5, 0x9d, 0xf5, 0x52, 0xf1, 0x46, 0x5d, 0x7f, - 0x63, 0x46, 0x2e, 0xc0, 0xec, 0xd2, 0xf2, 0xee, 0xea, 0xe2, 0x72, 0x16, 0xef, 0x69, 0x28, 0xe9, - 0x85, 0xdb, 0x9b, 0xdb, 0x5b, 0x9c, 0xb5, 0x0e, 0x7d, 0xb8, 0xbc, 0x50, 0xdd, 0xd9, 0x5e, 0xd9, - 0x28, 0xf5, 0x5b, 0x03, 0x23, 0xc5, 0x52, 0xf1, 0xc6, 0x0f, 0x8d, 0x07, 0x68, 0xac, 0xf9, 0x02, - 0x7d, 0xa7, 0x56, 0xbd, 0x97, 0x5f, 0x05, 0x2f, 0x5d, 0xbf, 0x5b, 0x2d, 0x15, 0xc8, 0x25, 0x38, - 0x6f, 0x40, 0xb7, 0xaa, 0xb5, 0xda, 0xc3, 0x4d, 0x7b, 0x69, 0x6d, 0xb9, 0x56, 0x2b, 0x15, 0x6f, - 0xec, 0x1a, 0x71, 0xe2, 0x58, 0x0d, 0xeb, 0x77, 0xab, 0x75, 0x7b, 0xf9, 0xb3, 0x9d, 0x55, 0x7b, - 0x79, 0x29, 0x5d, 0x83, 0x51, 0xfa, 0xc5, 0x72, 0xad, 0x54, 0x20, 0x53, 0x70, 0xc6, 0x80, 0x6e, - 0x6c, 0x96, 0x8a, 0x37, 0x5e, 0x13, 0xa1, 0xc4, 0xc8, 0x24, 0xc0, 0xd2, 0x72, 0x6d, 0x71, 0x79, - 0x63, 0x69, 0x75, 0xe3, 0x5e, 0xa9, 0x8f, 0x4c, 0xc0, 0x68, 0x55, 0xfd, 0x2c, 0xdc, 0xf8, 0x00, - 0xce, 0x24, 0x8e, 0xf6, 0x0c, 0x43, 0x1d, 0x8a, 0x4b, 0x7d, 0x28, 0x7e, 0xf9, 0x13, 0xed, 0xab, - 0xfc, 0x94, 0x5e, 0x2a, 0xdc, 0x58, 0x90, 0x39, 0x58, 0xb5, 0xef, 0x9c, 0x8c, 0xc1, 0xf0, 0xd2, - 0xf2, 0xdd, 0xea, 0xce, 0xda, 0x76, 0xa9, 0x8f, 0xfd, 0x58, 0xb4, 0x97, 0xab, 0xdb, 0xcb, 0x4b, - 0xa5, 0x02, 0x19, 0x85, 0xc1, 0xda, 0x76, 0x75, 0x7b, 0xb9, 0x54, 0x24, 0x23, 0x30, 0xb0, 0x53, - 0x5b, 0xb6, 0x4b, 0xfd, 0xf3, 0xff, 0xee, 0xf7, 0x0a, 0xdc, 0xc8, 0x28, 0x1f, 0x33, 0x7d, 0xad, - 0x1d, 0x26, 0xc5, 0x92, 0x27, 0x12, 0x4e, 0xe6, 0x9e, 0x1c, 0x51, 0x0b, 0x98, 0xeb, 0x72, 0xeb, - 0x82, 0x08, 0xd7, 0x0b, 0xb7, 0x0b, 0xc4, 0x46, 0x2f, 0x95, 0xc4, 0xd9, 0x4a, 0x71, 0xce, 0x3e, - 0xfe, 0xce, 0x5d, 0xea, 0x7a, 0x24, 0x23, 0xbf, 0x02, 0x96, 0xce, 0x33, 0xe7, 0x04, 0xf2, 0xdd, - 0x93, 0x9d, 0x34, 0x64, 0x9d, 0xaf, 0x9d, 0x0c, 0x9d, 0xdc, 0x87, 0x09, 0xa6, 0x9b, 0x2b, 0x34, - 0x72, 0x21, 0x49, 0xa8, 0x1d, 0x07, 0xe6, 0x2e, 0x66, 0x17, 0xaa, 0x9c, 0x30, 0xe3, 0xd8, 0x11, - 0x7e, 0xb0, 0x0e, 0x89, 0x0c, 0x37, 0x21, 0x21, 0x7c, 0xc5, 0x9f, 0x3b, 0x9b, 0x00, 0xef, 0xde, - 0xb9, 0x5d, 0x20, 0x35, 0x8c, 0xf5, 0x66, 0x28, 0xf9, 0x44, 0xbe, 0xae, 0x4b, 0x6b, 0xff, 0xbc, - 0x35, 0x15, 0x95, 0xc1, 0x31, 0xe7, 0x74, 0xb0, 0x01, 0x24, 0xad, 0x3b, 0x93, 0x2b, 0xf1, 0x3c, - 0xc8, 0x56, 0xab, 0xe7, 0xce, 0xa5, 0x9c, 0x0f, 0x97, 0x99, 0xf6, 0x44, 0x96, 0x61, 0x52, 0xbc, - 0x25, 0x17, 0xda, 0x3c, 0xe9, 0x76, 0x1e, 0xc8, 0x65, 0x73, 0x0f, 0xe5, 0xa4, 0x4e, 0x04, 0x64, - 0x2e, 0xee, 0x47, 0xf2, 0x98, 0x30, 0x77, 0x21, 0xb3, 0x4c, 0xf4, 0xef, 0x2e, 0x4c, 0x9a, 0x87, - 0x0b, 0x22, 0x07, 0x28, 0xf3, 0xcc, 0x91, 0xdb, 0xa0, 0x3a, 0xcc, 0xae, 0x3b, 0x2e, 0xde, 0x95, - 0x08, 0x17, 0x37, 0xe9, 0xa0, 0x46, 0x2a, 0x5d, 0x3c, 0xd6, 0x6a, 0xd4, 0x6b, 0xaa, 0x41, 0xc8, - 0x8b, 0xef, 0x8e, 0x9f, 0x4d, 0x4d, 0xea, 0xc8, 0xa6, 0x83, 0x1f, 0xb1, 0xcc, 0xac, 0xbc, 0x59, - 0x3e, 0x9b, 0x73, 0x79, 0x6e, 0xc6, 0x64, 0x1d, 0x95, 0xf4, 0x04, 0x47, 0x6d, 0x4e, 0x9c, 0x9a, - 0x5d, 0x19, 0x23, 0x1a, 0x68, 0xd9, 0xcc, 0x45, 0x61, 0x48, 0x72, 0x04, 0x97, 0xcb, 0xec, 0x76, - 0x81, 0x7c, 0x8d, 0x5f, 0x75, 0x26, 0xbb, 0x87, 0x6e, 0x74, 0x20, 0xb4, 0x9f, 0x0b, 0x99, 0x0c, - 0xc4, 0x87, 0xd2, 0x85, 0xbb, 0x0d, 0xd3, 0x59, 0x9e, 0xcd, 0x4a, 0xa0, 0x5d, 0xdc, 0x9e, 0x73, - 0x67, 0x81, 0xcd, 0x8e, 0x1a, 0xcd, 0xfc, 0x41, 0xea, 0xe2, 0x58, 0x9b, 0xcb, 0xf3, 0x23, 0x98, - 0x64, 0xb3, 0xe4, 0x01, 0xa5, 0xed, 0x6a, 0xcb, 0x7d, 0x42, 0x43, 0x22, 0x03, 0xf5, 0x2a, 0x50, - 0x1e, 0xed, 0xf5, 0x02, 0xf9, 0x0e, 0x8c, 0x3d, 0x74, 0xa2, 0xc6, 0x81, 0x08, 0x58, 0x29, 0xe3, - 0x59, 0x22, 0x6c, 0x4e, 0xfe, 0xc2, 0xc2, 0xdb, 0x05, 0xf2, 0x7d, 0x18, 0xbe, 0x47, 0x23, 0x7c, - 0xdd, 0x7c, 0x55, 0x39, 0xf9, 0x71, 0xdb, 0xe4, 0xaa, 0xa7, 0x9e, 0xf0, 0xc8, 0x06, 0x27, 0x0d, - 0xb9, 0xe4, 0x16, 0x00, 0x5f, 0x10, 0x90, 0x43, 0xb2, 0x78, 0x2e, 0xd5, 0x6c, 0x72, 0x8f, 0x29, - 0x0f, 0x2d, 0x1a, 0xd1, 0x93, 0x56, 0x99, 0x27, 0xa3, 0x35, 0x98, 0x54, 0x69, 0x74, 0x36, 0x30, - 0xae, 0x88, 0x95, 0x60, 0x16, 0x9e, 0x82, 0xdb, 0x07, 0xec, 0xab, 0xe0, 0x39, 0x64, 0x31, 0x00, - 0x05, 0xae, 0xa4, 0xb3, 0x7a, 0x14, 0x0b, 0x7d, 0x09, 0x95, 0x42, 0xe4, 0x68, 0x1a, 0xed, 0x8a, - 0x1f, 0x46, 0x26, 0xad, 0x82, 0x64, 0xd3, 0xfe, 0x32, 0xcc, 0xe9, 0xf5, 0x9a, 0x11, 0x93, 0xe3, - 0x35, 0x37, 0x2f, 0x10, 0xf3, 0xdc, 0xd5, 0x2e, 0x18, 0xe2, 0xfc, 0xd6, 0xff, 0x9b, 0xc5, 0x02, - 0x2e, 0x27, 0x4b, 0x30, 0x25, 0xeb, 0xda, 0x6c, 0x53, 0xaf, 0x56, 0x5b, 0xc1, 0x94, 0x29, 0xd2, - 0xa5, 0x44, 0x83, 0x49, 0xee, 0x24, 0x5d, 0xc4, 0xb6, 0x3e, 0x23, 0xd0, 0x04, 0xe9, 0x16, 0x7e, - 0x22, 0xde, 0xfa, 0x32, 0x43, 0xf9, 0x3e, 0xe0, 0x46, 0x25, 0x43, 0xf9, 0xdf, 0x9d, 0x27, 0x5d, - 0x0e, 0x40, 0x73, 0x39, 0x47, 0x88, 0xdb, 0x05, 0xf2, 0x05, 0x90, 0xf4, 0x91, 0x44, 0x89, 0x30, - 0xf7, 0xf8, 0xa5, 0x44, 0xd8, 0xe5, 0x3c, 0xb3, 0x0c, 0x53, 0x2a, 0xcc, 0x4c, 0x5c, 0x4e, 0x72, - 0xda, 0xd2, 0x65, 0x07, 0x9b, 0xc9, 0x60, 0xb3, 0x3b, 0xdf, 0x85, 0x51, 0x26, 0x9c, 0x7c, 0x02, - 0x53, 0x62, 0xee, 0x1b, 0xed, 0x29, 0xa9, 0x65, 0x4c, 0x1c, 0x6e, 0x72, 0x5b, 0x72, 0x1f, 0x66, - 0x6a, 0x09, 0xc1, 0x73, 0x87, 0xfa, 0xf3, 0x26, 0x0b, 0x04, 0xd6, 0x68, 0xc4, 0x25, 0x9f, 0xcd, - 0xeb, 0x01, 0x10, 0x6e, 0x5b, 0x92, 0xec, 0x9e, 0xb8, 0xf4, 0x29, 0xb9, 0x94, 0x68, 0x3a, 0x03, - 0x22, 0x1a, 0xae, 0x83, 0xb9, 0x3d, 0xdb, 0xe6, 0x89, 0x94, 0x11, 0x6a, 0x5c, 0xc5, 0x5f, 0x31, - 0x08, 0x8c, 0xdb, 0x7c, 0x31, 0x8e, 0xe7, 0x73, 0x31, 0xc8, 0xaf, 0x61, 0x98, 0xd8, 0xee, 0xa7, - 0x33, 0xf2, 0x9d, 0xac, 0x43, 0x74, 0xce, 0xf9, 0x72, 0xee, 0xcd, 0x93, 0x21, 0xab, 0xf3, 0xf0, - 0xc4, 0x3d, 0x1a, 0x6d, 0xb5, 0x3a, 0xfb, 0x2e, 0xa6, 0xd8, 0x24, 0xca, 0xf6, 0xa4, 0x40, 0x62, - 0x7a, 0xcb, 0xe8, 0x6c, 0x71, 0x41, 0x8d, 0xfe, 0x88, 0xac, 0x42, 0x89, 0x6f, 0x23, 0x1a, 0x8b, - 0x4b, 0x29, 0x16, 0x02, 0xc5, 0x09, 0x9c, 0xc3, 0x30, 0x77, 0xb4, 0x6e, 0x71, 0xdf, 0x27, 0x22, - 0x3f, 0x6d, 0x5d, 0x4f, 0x9d, 0x32, 0x60, 0x2a, 0x74, 0x3e, 0x1b, 0x11, 0x9b, 0x86, 0x34, 0x92, - 0xf1, 0x68, 0x78, 0x82, 0xd5, 0x6b, 0xb1, 0xce, 0x90, 0x2e, 0x8d, 0x57, 0x90, 0x44, 0xec, 0xb4, - 0xdd, 0xb7, 0x88, 0x4a, 0x3a, 0x9b, 0xc1, 0xf4, 0x35, 0x43, 0xb5, 0x39, 0x1d, 0xdf, 0xb7, 0x71, - 0x2b, 0xc3, 0x18, 0x3c, 0x33, 0x71, 0xdb, 0xd8, 0x6f, 0x49, 0x35, 0xa1, 0x51, 0xed, 0xce, 0xe3, - 0xca, 0xc8, 0xf6, 0x5a, 0xa6, 0x09, 0x77, 0x82, 0x80, 0x7a, 0x9c, 0x38, 0x4f, 0x6d, 0xc9, 0xa2, - 0xfe, 0x18, 0x57, 0x30, 0x8d, 0x9a, 0xbf, 0xfb, 0xeb, 0xc5, 0x82, 0x27, 0x04, 0xba, 0x5d, 0x20, - 0xef, 0xc1, 0x88, 0x68, 0x23, 0x23, 0x32, 0x1a, 0x1d, 0x76, 0x69, 0x35, 0x52, 0x02, 0x17, 0x12, - 0xb6, 0xd9, 0xc4, 0xc9, 0x1b, 0x7d, 0xde, 0xe6, 0xf7, 0xd8, 0x9e, 0xdd, 0x7c, 0x1e, 0xca, 0x45, - 0xb9, 0x79, 0x23, 0x65, 0x59, 0x85, 0x84, 0x91, 0xa0, 0x1e, 0xbb, 0x2c, 0x67, 0xc2, 0xd4, 0x6f, - 0x0c, 0x7e, 0xa8, 0x62, 0x98, 0x29, 0xf5, 0xdb, 0x00, 0xf7, 0xda, 0xb2, 0x57, 0xa1, 0x54, 0x6d, - 0xe0, 0x86, 0x52, 0xa3, 0x87, 0x4e, 0xfb, 0xc0, 0x0f, 0xa8, 0x3a, 0xfb, 0x24, 0x0b, 0x24, 0xaf, - 0x19, 0xa5, 0xa0, 0x88, 0x82, 0x35, 0xea, 0x60, 0x84, 0xe8, 0x59, 0xa5, 0xa1, 0x24, 0x8a, 0xb2, - 0x29, 0xba, 0x9c, 0x75, 0xa6, 0x17, 0xd9, 0xe9, 0xac, 0xf5, 0x62, 0x6c, 0x3e, 0xc0, 0x05, 0x43, - 0x21, 0x87, 0x6a, 0x87, 0x50, 0x20, 0x75, 0x2a, 0x94, 0x4f, 0x80, 0x14, 0x6a, 0x55, 0x5e, 0x3d, - 0xc7, 0x62, 0xc9, 0xa3, 0xce, 0xab, 0xfe, 0x7b, 0x30, 0xb9, 0xcc, 0x16, 0xf4, 0x4e, 0xd3, 0xe5, - 0x51, 0xf1, 0x89, 0x19, 0xe6, 0x3c, 0x97, 0x70, 0x45, 0xe6, 0xe0, 0x42, 0x52, 0x61, 0x41, 0x90, - 0x7b, 0x8a, 0x06, 0x93, 0xe3, 0x31, 0x2d, 0xd9, 0x8a, 0xc4, 0x04, 0x78, 0xc2, 0x17, 0x26, 0x83, - 0x59, 0xae, 0x58, 0x56, 0xdb, 0xed, 0x96, 0xb4, 0x6c, 0xf3, 0xeb, 0xfb, 0x57, 0x8d, 0x93, 0x68, - 0xaa, 0x5c, 0xf2, 0x4e, 0xeb, 0x9e, 0x9f, 0x6b, 0x39, 0x71, 0x73, 0x78, 0xe6, 0x94, 0xf7, 0x9a, - 0x8b, 0x2a, 0x8e, 0x75, 0xb5, 0xd5, 0x4a, 0x11, 0x87, 0xe4, 0x0d, 0x93, 0x7b, 0x16, 0x4e, 0xaf, - 0x1a, 0xf0, 0xa4, 0xcf, 0x95, 0xb7, 0x6a, 0xbb, 0xcd, 0x17, 0xcb, 0xcb, 0x6a, 0xc1, 0x30, 0x0b, - 0xd2, 0x27, 0xfd, 0x64, 0xb9, 0x58, 0xdb, 0xef, 0xe3, 0x34, 0x8b, 0x13, 0xe7, 0x12, 0xfd, 0xdc, - 0x9c, 0xcc, 0x1b, 0xac, 0x74, 0xb9, 0x44, 0xa1, 0xda, 0x27, 0xce, 0xa0, 0x06, 0x15, 0x67, 0xe1, - 0x55, 0x06, 0x9e, 0x04, 0x5c, 0xf2, 0xbb, 0x9c, 0x57, 0xac, 0x0c, 0xae, 0xa5, 0x64, 0x72, 0x72, - 0xd5, 0xe5, 0x9c, 0xa4, 0xf7, 0xaa, 0xcb, 0xb9, 0x59, 0xcd, 0xef, 0x43, 0x29, 0x99, 0x17, 0x59, - 0x31, 0xcd, 0x49, 0x98, 0x9c, 0x3b, 0x26, 0x77, 0x61, 0x5a, 0x1f, 0x51, 0xd5, 0xef, 0xbc, 0xd5, - 0x3f, 0x8f, 0xcf, 0x36, 0xcc, 0x64, 0xa6, 0x31, 0x56, 0x5b, 0x6c, 0xb7, 0x24, 0xc7, 0xb9, 0x5c, - 0x29, 0x9c, 0xcb, 0xce, 0x64, 0x4e, 0x5e, 0x31, 0xed, 0x07, 0xd9, 0x79, 0x9d, 0xe7, 0x5e, 0xed, - 0x81, 0x25, 0x04, 0xfa, 0x35, 0xee, 0x80, 0xa9, 0x3a, 0xae, 0x6a, 0x16, 0x85, 0x9c, 0x0a, 0xac, - 0x6e, 0x28, 0x6a, 0x0e, 0x4c, 0x67, 0x14, 0xe7, 0x8b, 0xf8, 0x5a, 0x3e, 0xcf, 0x78, 0x62, 0xed, - 0xca, 0x70, 0xcd, 0xb9, 0x92, 0xe9, 0x9a, 0xf1, 0xba, 0xcb, 0x91, 0x74, 0x4e, 0xcd, 0x87, 0x93, - 0x37, 0x39, 0x8f, 0x5b, 0x53, 0x59, 0x7f, 0x8c, 0x74, 0xd4, 0x49, 0xeb, 0x4f, 0x56, 0x1a, 0x6d, - 0x25, 0x86, 0x6e, 0x89, 0xda, 0xf9, 0x6e, 0xfc, 0x15, 0x37, 0x07, 0x99, 0x55, 0xe8, 0xe6, 0xa0, - 0x4c, 0xfe, 0x57, 0xf2, 0x11, 0x74, 0xe6, 0x0e, 0xbf, 0xfb, 0x4d, 0xe4, 0xd3, 0x26, 0xfa, 0x89, - 0x2b, 0x3b, 0xd7, 0xb6, 0x9a, 0x1b, 0x99, 0x28, 0x7a, 0x15, 0x0f, 0xe5, 0x37, 0x98, 0x23, 0xa5, - 0x2e, 0xc9, 0xc6, 0xbb, 0xab, 0x29, 0x9b, 0x50, 0x8e, 0x07, 0x33, 0xd1, 0x81, 0x53, 0x0e, 0xa5, - 0x14, 0xc6, 0xf9, 0xdc, 0x14, 0xe3, 0xe4, 0xf5, 0xd4, 0x97, 0x9e, 0x23, 0x98, 0xae, 0x55, 0xf0, - 0xf5, 0x5c, 0x0b, 0xff, 0x7c, 0x21, 0xb6, 0x05, 0xeb, 0xd9, 0xc8, 0x53, 0xeb, 0x79, 0x46, 0xaa, - 0xf2, 0x7b, 0xa8, 0x17, 0x6b, 0xe9, 0xc6, 0x73, 0x7b, 0x7d, 0x29, 0x8b, 0x4f, 0x98, 0x5e, 0x71, - 0xb5, 0x76, 0x49, 0x3d, 0x2d, 0x59, 0x70, 0x9a, 0x15, 0xf7, 0x24, 0x4d, 0xcb, 0xe3, 0xb3, 0x04, - 0x63, 0x5a, 0x9e, 0x72, 0x72, 0xde, 0x10, 0x93, 0xb1, 0x87, 0xce, 0x19, 0x9d, 0x33, 0xb7, 0xcf, - 0x45, 0xb4, 0x48, 0xab, 0x6c, 0xe7, 0xb9, 0xad, 0xb8, 0x90, 0xe6, 0x61, 0x58, 0xa3, 0x95, 0x14, - 0x78, 0x6b, 0x2e, 0x26, 0x85, 0x63, 0x34, 0x28, 0xbf, 0x4b, 0x44, 0x17, 0x4d, 0x8f, 0x26, 0xe5, - 0xeb, 0xaf, 0x53, 0x22, 0x19, 0x2a, 0xe6, 0x6c, 0x91, 0xa1, 0x03, 0xcf, 0x29, 0xd3, 0x9a, 0x06, - 0xed, 0x62, 0xe9, 0xd8, 0xc2, 0x17, 0x28, 0x19, 0x89, 0xdb, 0xd5, 0x0a, 0xdb, 0x35, 0xaf, 0x7b, - 0x86, 0xee, 0xa6, 0xd6, 0xec, 0x5c, 0x8e, 0x5d, 0x33, 0xb9, 0xe7, 0xb6, 0xf4, 0x07, 0xda, 0x9a, - 0x9d, 0x4a, 0xcf, 0x4e, 0xae, 0x27, 0x15, 0xb7, 0xbc, 0x0c, 0xee, 0x5d, 0xf6, 0x84, 0xe9, 0xac, - 0xcc, 0xee, 0x9a, 0x79, 0x38, 0x37, 0xed, 0x7b, 0x86, 0x14, 0x6c, 0x39, 0xff, 0x73, 0xb8, 0x75, - 0xc9, 0xf3, 0x9e, 0xdb, 0xc2, 0x2f, 0xb5, 0x85, 0x2e, 0x91, 0x8f, 0x5d, 0x1d, 0xc7, 0x7b, 0x24, - 0x6c, 0xcf, 0xe5, 0xbd, 0x81, 0x6f, 0x96, 0xd2, 0xc9, 0xd4, 0x95, 0x66, 0xd3, 0x2d, 0xd5, 0x7a, - 0xa6, 0xf5, 0x78, 0x26, 0xdd, 0x45, 0xc6, 0xef, 0x5c, 0xc2, 0xf6, 0xdb, 0xab, 0x61, 0x5f, 0xcb, - 0xc5, 0x38, 0x23, 0x09, 0x7b, 0x62, 0x31, 0xce, 0x4f, 0xd3, 0xde, 0xe5, 0x18, 0x74, 0xa6, 0xe6, - 0xee, 0x7b, 0x5a, 0x0e, 0x75, 0x75, 0x08, 0x4a, 0xa7, 0x75, 0x57, 0x4b, 0x4c, 0x56, 0xca, 0xf5, - 0x4d, 0xa6, 0xff, 0x70, 0xed, 0x5d, 0xcf, 0x86, 0x4d, 0xe6, 0xf2, 0x93, 0x80, 0xab, 0xe5, 0x26, - 0x33, 0x7d, 0xb6, 0xc6, 0x50, 0x4f, 0x45, 0xad, 0x18, 0x66, 0x64, 0xc5, 0x56, 0x0c, 0x33, 0x73, - 0x57, 0xdf, 0x42, 0xab, 0x8b, 0xed, 0xb7, 0xa8, 0x6e, 0x75, 0xd1, 0x72, 0x1b, 0x27, 0x8c, 0x1e, - 0xe4, 0x43, 0x34, 0x79, 0x74, 0xb7, 0x93, 0xcc, 0x9a, 0x9c, 0x74, 0xcf, 0x92, 0x51, 0x95, 0x38, - 0x5a, 0xd9, 0xd8, 0x93, 0xb9, 0xab, 0xe7, 0xca, 0xe9, 0x02, 0x41, 0xff, 0x8e, 0xb4, 0x9a, 0x60, - 0x83, 0xcb, 0xa6, 0xb5, 0x29, 0xbf, 0xcd, 0xef, 0x48, 0x93, 0x89, 0x41, 0x96, 0x4a, 0x1b, 0x9d, - 0x24, 0xfb, 0x1e, 0x8c, 0xc7, 0x29, 0xa2, 0x77, 0xe7, 0x35, 0xc2, 0x44, 0xde, 0xe8, 0x24, 0xe1, - 0x7b, 0xf2, 0x5a, 0x05, 0xeb, 0x33, 0x0b, 0xbb, 0xab, 0x00, 0x1f, 0x4b, 0x13, 0x8d, 0xd1, 0xd2, - 0x54, 0xc2, 0xe9, 0x2e, 0x2b, 0xf7, 0xb8, 0x9e, 0xd7, 0x52, 0xcd, 0x8b, 0x8c, 0xcc, 0xb4, 0x6a, - 0x5e, 0x64, 0x65, 0x96, 0x8d, 0xaf, 0x1d, 0xbe, 0x90, 0xf6, 0x88, 0x98, 0xe9, 0x25, 0xa3, 0x59, - 0x29, 0xbe, 0x97, 0xf3, 0x8a, 0x93, 0xac, 0x6b, 0x50, 0x4a, 0x26, 0xe1, 0x54, 0x87, 0xb9, 0x9c, - 0x6c, 0xa9, 0xea, 0x84, 0x98, 0x9b, 0xbd, 0x73, 0x4b, 0x1a, 0xd7, 0x4d, 0xbe, 0x57, 0xb3, 0x1b, - 0xa5, 0xb3, 0xce, 0xb7, 0xb6, 0x4f, 0x18, 0xf9, 0x38, 0xf5, 0x63, 0x76, 0x2a, 0xdf, 0xa7, 0xae, - 0x96, 0x65, 0xa4, 0xf0, 0x74, 0x65, 0xd4, 0xa9, 0xec, 0xb4, 0xe0, 0x6f, 0x98, 0xe7, 0xdf, 0x2e, - 0xc1, 0xdb, 0x7b, 0x5e, 0x41, 0x93, 0x5f, 0x82, 0xd9, 0x9c, 0x38, 0xd7, 0xe4, 0xd5, 0x84, 0x99, - 0x36, 0x3b, 0x0e, 0xb6, 0x9a, 0x20, 0x99, 0x89, 0xb2, 0xd7, 0xd1, 0x77, 0xc1, 0x88, 0x2f, 0x91, - 0xba, 0x0f, 0x7c, 0xe8, 0x46, 0x07, 0x3c, 0x1f, 0xb4, 0xb6, 0xe6, 0x66, 0x06, 0xa6, 0x20, 0x35, - 0x3c, 0xc8, 0x18, 0xd0, 0x8c, 0x2b, 0xc1, 0x0c, 0x86, 0x73, 0xd9, 0x0c, 0xd9, 0xda, 0xc1, 0xe6, - 0x42, 0x46, 0xf0, 0x0f, 0x35, 0x17, 0xf2, 0x03, 0x83, 0xe4, 0x36, 0x73, 0x4b, 0x2a, 0x58, 0xd9, - 0x1c, 0xf3, 0xe3, 0x80, 0xe4, 0x72, 0xbc, 0xcf, 0x38, 0xa6, 0x42, 0x7b, 0x90, 0x1c, 0xf4, 0xee, - 0xab, 0x87, 0x2d, 0xf7, 0x6b, 0x93, 0x6a, 0x5e, 0x6b, 0x5f, 0x5e, 0x10, 0x91, 0xdc, 0xf6, 0x2d, - 0xcb, 0xef, 0x29, 0xbb, 0x7d, 0x27, 0xdd, 0xb1, 0xd5, 0xe5, 0x59, 0x22, 0xba, 0x8c, 0xd1, 0x51, - 0x0d, 0x3e, 0x97, 0x03, 0x27, 0x1b, 0xe8, 0x8c, 0x94, 0x84, 0x6a, 0x27, 0xda, 0xec, 0xf0, 0x35, - 0xb9, 0xfc, 0xf8, 0x3c, 0x36, 0xc2, 0x7f, 0x9c, 0x66, 0x1e, 0x27, 0xe2, 0x86, 0x88, 0x79, 0x6c, - 0x40, 0x4f, 0x37, 0x8f, 0x13, 0x0c, 0xcd, 0x79, 0x9c, 0x6c, 0x66, 0xd2, 0x4c, 0x90, 0x3b, 0xaa, - 0xc9, 0x66, 0xaa, 0x79, 0x9c, 0xcd, 0x31, 0x3f, 0x4c, 0x4b, 0x2e, 0x47, 0x35, 0x8f, 0x4d, 0x8e, - 0x39, 0xe8, 0x27, 0x9c, 0xc7, 0xc9, 0x4a, 0xcc, 0x79, 0x7c, 0xaa, 0xf6, 0xa9, 0x79, 0x9c, 0xdd, - 0xbe, 0x53, 0xcf, 0xe3, 0x44, 0x5c, 0x23, 0xa3, 0xa3, 0x59, 0xf3, 0x38, 0x89, 0xcf, 0xe7, 0x71, - 0x12, 0x9a, 0xb0, 0xcc, 0x74, 0x99, 0xc7, 0x49, 0xca, 0xcf, 0x90, 0x5f, 0x22, 0x26, 0xcb, 0x49, - 0x66, 0x72, 0x6e, 0x38, 0x17, 0xf2, 0x10, 0x6d, 0x83, 0x09, 0xf8, 0xc9, 0x66, 0xf3, 0xc5, 0x3c, - 0xa6, 0x38, 0x9f, 0x77, 0xa5, 0x10, 0x93, 0xcd, 0x35, 0x0d, 0x5f, 0xd9, 0x21, 0x69, 0xba, 0x34, - 0x78, 0x97, 0xcd, 0x9b, 0x66, 0x17, 0xbe, 0xdd, 0x22, 0xea, 0x74, 0xe1, 0xab, 0xce, 0x41, 0x49, - 0xbe, 0xb9, 0x24, 0xdd, 0xe7, 0xf7, 0xe7, 0xf2, 0x76, 0x24, 0x49, 0x37, 0x9f, 0x38, 0x59, 0x9d, - 0xba, 0xa5, 0xea, 0x84, 0x95, 0x6c, 0xe9, 0x69, 0xe7, 0xf9, 0xba, 0xd4, 0x1e, 0x52, 0xa1, 0xb8, - 0x12, 0x9d, 0xd6, 0xe7, 0x7a, 0x6e, 0x09, 0xd9, 0x46, 0x43, 0x70, 0x1a, 0xae, 0x19, 0x91, 0xf3, - 0x62, 0x7e, 0xf5, 0xe4, 0x9a, 0x0a, 0x2a, 0xa4, 0x73, 0xcd, 0x8b, 0x38, 0xa4, 0xb8, 0xa6, 0xa9, - 0x3f, 0x41, 0xd3, 0x99, 0x78, 0xf1, 0xe5, 0x3d, 0xf2, 0xf3, 0xcf, 0x39, 0x53, 0x86, 0xc3, 0x14, - 0xc3, 0x45, 0x3f, 0xb5, 0x8f, 0xc4, 0xf5, 0x9f, 0x04, 0xe6, 0x0a, 0x3f, 0x8b, 0x9e, 0x7c, 0x02, - 0x25, 0xb1, 0xbc, 0xc5, 0x0c, 0xb2, 0x10, 0x73, 0x87, 0x6e, 0x41, 0x5a, 0xec, 0x4e, 0xd0, 0x82, - 0x93, 0x58, 0xea, 0x4e, 0x22, 0x89, 0x7c, 0xb3, 0x16, 0xdb, 0x0e, 0xb7, 0x83, 0x4e, 0x18, 0xd1, - 0x66, 0xda, 0x1c, 0x65, 0x36, 0x46, 0xba, 0x55, 0x98, 0xe8, 0xbb, 0xf3, 0x64, 0x15, 0xd7, 0x36, - 0x13, 0xdc, 0xcd, 0x5e, 0x97, 0xcd, 0x06, 0x97, 0x9e, 0x15, 0xf5, 0xb4, 0xc8, 0x6c, 0x53, 0x5e, - 0xdd, 0xf9, 0x8d, 0x52, 0x22, 0x3a, 0x61, 0xef, 0xf2, 0x44, 0xc4, 0x0f, 0xd4, 0xdc, 0x76, 0xd8, - 0x4b, 0x32, 0xc9, 0xc7, 0x4e, 0xe4, 0x53, 0x18, 0x95, 0xc4, 0xbd, 0x05, 0x92, 0xa4, 0x46, 0x81, - 0x2c, 0xc1, 0x84, 0xf1, 0x92, 0x4b, 0x9d, 0x6e, 0xb2, 0xde, 0x77, 0x75, 0x19, 0xe7, 0x09, 0xe3, - 0xc5, 0x96, 0xe2, 0x92, 0xf5, 0x8e, 0x2b, 0x97, 0xcb, 0xf7, 0x61, 0x4c, 0x88, 0xb4, 0xab, 0x34, - 0xf2, 0x8d, 0x75, 0x33, 0x9a, 0x57, 0x74, 0xa7, 0xe9, 0x46, 0x8b, 0xbe, 0xf7, 0xc8, 0xdd, 0xef, - 0x29, 0x98, 0x34, 0xc9, 0xee, 0x3c, 0xf9, 0x0a, 0xb3, 0x27, 0xcb, 0x9c, 0xd6, 0x34, 0x7a, 0xea, - 0x07, 0x8f, 0x5d, 0x6f, 0xbf, 0x07, 0xcb, 0x2b, 0x26, 0xcb, 0x24, 0x9d, 0x74, 0x3c, 0xf9, 0x0a, - 0xe6, 0x6a, 0xf9, 0xcc, 0x7b, 0x32, 0xe9, 0xbe, 0xbd, 0xd4, 0xe0, 0x22, 0xba, 0xde, 0x9c, 0xb6, - 0xed, 0x5d, 0x99, 0x7e, 0xc1, 0xa3, 0x39, 0x4a, 0x43, 0x7f, 0xc3, 0x0f, 0x9a, 0xbd, 0x39, 0x56, - 0x4c, 0x67, 0xde, 0x04, 0x99, 0x14, 0xc6, 0x17, 0x70, 0xbe, 0x96, 0xcb, 0xba, 0x17, 0x8b, 0x5e, - 0x9a, 0xe4, 0x05, 0x14, 0xc5, 0x29, 0xdb, 0xdd, 0x95, 0xe7, 0x2a, 0xae, 0x69, 0x6c, 0x1f, 0xda, - 0x0a, 0xe8, 0x23, 0x1a, 0xa0, 0xcb, 0x78, 0x2f, 0x67, 0x69, 0x13, 0x5d, 0xf6, 0x7c, 0x15, 0xce, - 0xd6, 0x52, 0xac, 0xf2, 0x48, 0x7a, 0x5d, 0x1e, 0x4d, 0x61, 0x4f, 0x4f, 0xd8, 0xae, 0x1e, 0x2e, - 0x46, 0x63, 0xf7, 0x68, 0xb4, 0xb3, 0xda, 0x43, 0x4a, 0xf2, 0x4d, 0x83, 0x44, 0xdc, 0xbd, 0xc3, - 0x28, 0x6b, 0x1a, 0x65, 0x1a, 0x23, 0xf7, 0xe3, 0xfd, 0x54, 0x5e, 0xa4, 0xf4, 0xac, 0x36, 0x8f, - 0xc3, 0x5b, 0xb8, 0x16, 0x0a, 0xb7, 0x69, 0xcd, 0x04, 0xc9, 0x21, 0xb1, 0xa9, 0x4e, 0xf3, 0xa0, - 0x0e, 0x49, 0x95, 0x1f, 0xff, 0xf8, 0xf4, 0x10, 0xb0, 0xcb, 0x29, 0x77, 0xfa, 0xae, 0x2c, 0xb8, - 0x09, 0x75, 0xcd, 0x6f, 0x3c, 0xd6, 0x4d, 0xa8, 0x5a, 0x7e, 0xfd, 0x39, 0x33, 0xfb, 0xbd, 0x58, - 0xf1, 0x31, 0x05, 0xbe, 0xee, 0x35, 0xa6, 0x67, 0xd8, 0xd7, 0x4d, 0xa8, 0x02, 0x2e, 0x2c, 0x48, - 0x6f, 0x49, 0xdb, 0x22, 0x56, 0x68, 0x72, 0xce, 0x15, 0x8d, 0x32, 0x2b, 0x22, 0x91, 0x69, 0x56, - 0xd4, 0x1b, 0x9a, 0x7f, 0x11, 0x40, 0x6c, 0xda, 0x6e, 0xa1, 0x27, 0xf6, 0xa1, 0xcf, 0x69, 0x62, - 0xe7, 0xdc, 0x74, 0x51, 0x6f, 0xe7, 0xaf, 0x29, 0xe1, 0x32, 0x64, 0x08, 0x5e, 0x45, 0x44, 0x4e, - 0x97, 0xc5, 0xa2, 0xd4, 0x3d, 0x99, 0x6e, 0x17, 0xc8, 0x06, 0x9c, 0xbb, 0x47, 0x23, 0xb1, 0xc6, - 0xd9, 0x34, 0x8c, 0x02, 0xb7, 0x11, 0x75, 0xbd, 0x55, 0x94, 0x67, 0x93, 0x0c, 0x9a, 0xdd, 0xb7, - 0x19, 0xbf, 0x5a, 0x36, 0xbf, 0xae, 0x74, 0x5d, 0xfc, 0x6b, 0xc5, 0x55, 0xc5, 0x69, 0x9a, 0x98, - 0x3f, 0xc5, 0x87, 0xb9, 0xfb, 0x4e, 0x3e, 0x69, 0x29, 0x8e, 0xbe, 0x22, 0x4e, 0x5b, 0x37, 0x61, - 0x88, 0x13, 0xe5, 0x6e, 0xa8, 0xe3, 0x3a, 0x0d, 0xb9, 0x03, 0xa3, 0xca, 0xff, 0x86, 0x18, 0x45, - 0xb9, 0xed, 0xba, 0x03, 0xa3, 0xfc, 0x68, 0x75, 0x72, 0x92, 0x0f, 0x61, 0x54, 0x39, 0xec, 0x9c, - 0x7a, 0xa7, 0xff, 0x04, 0x26, 0x74, 0xd7, 0x9d, 0xd3, 0x0b, 0xf2, 0xfb, 0x78, 0xf7, 0x2b, 0xaf, - 0x58, 0xf2, 0xe9, 0x67, 0x12, 0x41, 0x69, 0x84, 0x48, 0xf9, 0x02, 0x29, 0x81, 0xb9, 0xcd, 0x3f, - 0x9b, 0xa2, 0x26, 0x1f, 0xca, 0xd7, 0x54, 0x8a, 0x38, 0x8d, 0xd4, 0x45, 0x66, 0x93, 0x5c, 0xcc, - 0xcf, 0x43, 0xac, 0x16, 0xd8, 0x9e, 0xcd, 0x3e, 0xc9, 0x1d, 0x75, 0x6f, 0xd1, 0xe5, 0x71, 0xd9, - 0x44, 0x2d, 0x2d, 0x95, 0x0c, 0x2f, 0x9f, 0xd1, 0xe5, 0xfc, 0xfc, 0x79, 0x38, 0x18, 0xf7, 0xf1, - 0x14, 0x98, 0x2a, 0xcd, 0xed, 0x5e, 0x97, 0x7c, 0x7c, 0xf1, 0xb1, 0x37, 0xcd, 0xae, 0x0b, 0x59, - 0xb7, 0x53, 0xb4, 0x78, 0x23, 0xfa, 0x52, 0xd8, 0xad, 0x4a, 0x0f, 0xc8, 0x93, 0x77, 0x36, 0xbf, - 0x65, 0x17, 0x32, 0x6e, 0xc5, 0x7b, 0x8e, 0x45, 0x1e, 0xbb, 0x5f, 0x42, 0xed, 0x30, 0x33, 0x2a, - 0x59, 0x3e, 0xb3, 0xeb, 0x9a, 0x63, 0x45, 0x26, 0xa5, 0xda, 0xf4, 0x1e, 0xe3, 0x33, 0xb5, 0xec, - 0x74, 0x81, 0xaf, 0xf5, 0xe0, 0x22, 0x25, 0xf1, 0x7a, 0x4f, 0x3c, 0x75, 0xc7, 0x7a, 0x81, 0xef, - 0xb0, 0xd9, 0xf5, 0xf5, 0x48, 0x7f, 0x98, 0x71, 0xed, 0xad, 0xdc, 0x4b, 0xb3, 0x19, 0x9a, 0xee, - 0xa5, 0x5d, 0xfb, 0x90, 0x27, 0xfe, 0xcf, 0xa0, 0x12, 0x7b, 0x8f, 0x9c, 0x6e, 0x10, 0xf2, 0xbd, - 0x1a, 0x49, 0x4a, 0x52, 0x21, 0xe9, 0x96, 0x0f, 0x68, 0xee, 0x6a, 0x9e, 0x84, 0x43, 0xcd, 0x2d, - 0x49, 0x78, 0xc5, 0x25, 0x12, 0x67, 0xe6, 0xa5, 0xe0, 0xec, 0x62, 0x87, 0x15, 0xef, 0xf6, 0x5e, - 0x0a, 0xa3, 0xf4, 0x68, 0x9f, 0x9e, 0x91, 0x72, 0xee, 0x48, 0x30, 0xb2, 0xba, 0x0c, 0x6f, 0xef, - 0xab, 0xc7, 0x72, 0xce, 0xb8, 0x9e, 0x7e, 0x40, 0x9d, 0xf8, 0xad, 0x5a, 0x22, 0x88, 0xa1, 0xfe, - 0x3e, 0x38, 0x5d, 0x94, 0x7c, 0x68, 0x95, 0x85, 0xa1, 0x3c, 0xaa, 0xca, 0xb2, 0x0a, 0x06, 0x67, - 0x47, 0x11, 0x3f, 0x70, 0xa3, 0x67, 0x8b, 0xf6, 0x5a, 0x6c, 0x56, 0xd0, 0x0b, 0x24, 0x6f, 0x90, - 0x85, 0xf6, 0x1a, 0xf9, 0x12, 0x97, 0x12, 0xc1, 0x7e, 0xc1, 0xf7, 0xa3, 0x30, 0x0a, 0x9c, 0x76, - 0xad, 0x11, 0xb8, 0xed, 0x28, 0xb7, 0xd3, 0xb1, 0x03, 0x78, 0x16, 0x99, 0xe6, 0x8f, 0x2a, 0x82, - 0xdc, 0x67, 0x45, 0xdf, 0x51, 0x6f, 0x72, 0xb2, 0x0a, 0xbb, 0x9c, 0x5c, 0x6a, 0x32, 0xac, 0xfd, - 0xcb, 0x64, 0x5a, 0x87, 0xd9, 0x9c, 0x98, 0x45, 0xea, 0xf6, 0xb6, 0x7b, 0x4c, 0xa3, 0xb9, 0xee, - 0x15, 0x93, 0xaf, 0x60, 0x26, 0x33, 0xa8, 0x91, 0xb2, 0x40, 0x77, 0x0b, 0x79, 0xd4, 0x8b, 0xf9, - 0x63, 0x28, 0xf3, 0xd7, 0x20, 0xe8, 0xf4, 0x6c, 0xc4, 0xb7, 0x89, 0xdf, 0x08, 0xe5, 0x20, 0x24, - 0xd7, 0xeb, 0x7c, 0x3c, 0xf5, 0xe0, 0x7d, 0x1a, 0x03, 0x9b, 0x24, 0xf2, 0xb2, 0xab, 0x0f, 0x2f, - 0xab, 0xb0, 0xdb, 0x43, 0xa4, 0x2d, 0x98, 0xd9, 0xa5, 0x81, 0xfb, 0xe8, 0x59, 0x92, 0xa1, 0x94, - 0x4c, 0x66, 0x69, 0x37, 0x8e, 0x9f, 0xc3, 0xec, 0xa2, 0x7f, 0xd8, 0x16, 0x4f, 0xfe, 0x0c, 0x9e, - 0xea, 0x2a, 0x3e, 0xbb, 0xbc, 0xb7, 0x23, 0xd4, 0x5c, 0x7e, 0x06, 0x7d, 0xe5, 0xff, 0xd6, 0x33, - 0xc9, 0xbe, 0x7a, 0xb8, 0x66, 0xd2, 0x6f, 0xe3, 0x24, 0xcc, 0x4a, 0xa9, 0xaf, 0x4f, 0xc2, 0x2e, - 0x29, 0xf7, 0x73, 0x1e, 0x90, 0xcd, 0xe6, 0x64, 0xd1, 0xef, 0xc2, 0xf5, 0x04, 0xad, 0xdd, 0x90, - 0x7b, 0x8b, 0x99, 0x6f, 0x3c, 0xe1, 0x71, 0x9d, 0x99, 0x8c, 0x3c, 0xb3, 0x9d, 0x5a, 0x64, 0x87, - 0x56, 0xab, 0x8b, 0x8a, 0x45, 0xf4, 0xd0, 0x0e, 0x0c, 0x13, 0x8d, 0xf8, 0x13, 0x3a, 0x6d, 0xb7, - 0xd5, 0x3a, 0x45, 0x8c, 0x4a, 0xed, 0x07, 0x30, 0x5e, 0xd3, 0x2b, 0xcf, 0xa8, 0x24, 0x77, 0x52, - 0xa8, 0x27, 0x44, 0xbd, 0xdb, 0xde, 0xc5, 0x91, 0x54, 0x6d, 0x3c, 0x27, 0xea, 0x45, 0xae, 0xeb, - 0x8c, 0x91, 0x3c, 0x4e, 0xed, 0x02, 0x59, 0xb9, 0x1d, 0x95, 0xeb, 0x4c, 0x76, 0xbe, 0xb9, 0x3a, - 0x4f, 0x77, 0x93, 0x4c, 0xdd, 0x49, 0xac, 0xde, 0x39, 0x72, 0x95, 0x43, 0x7d, 0xd7, 0xdc, 0x9f, - 0xdc, 0xcf, 0x27, 0x4e, 0x97, 0xa7, 0xfb, 0xf9, 0xa4, 0x92, 0xf0, 0xe9, 0x7e, 0x3e, 0x19, 0x19, - 0xf6, 0x96, 0x91, 0x57, 0x9c, 0x27, 0xa8, 0x8b, 0x31, 0x42, 0xb1, 0xc9, 0x48, 0x47, 0xf4, 0x40, - 0x0f, 0x10, 0xc2, 0xb3, 0x0b, 0x75, 0xb1, 0xb5, 0x26, 0x03, 0x83, 0x24, 0xd2, 0x11, 0xdd, 0x85, - 0x12, 0x4f, 0xb4, 0x10, 0xc7, 0x54, 0x8c, 0xfd, 0x06, 0xd3, 0xf9, 0x1f, 0xba, 0x0c, 0x6a, 0x29, - 0x19, 0x8d, 0x4e, 0x99, 0xcc, 0x72, 0xc2, 0xd4, 0x75, 0x99, 0xaa, 0x10, 0xc7, 0x9c, 0x53, 0x86, - 0xa9, 0x54, 0x18, 0xba, 0xb9, 0xf3, 0x19, 0x25, 0x4a, 0xa5, 0x1c, 0xd7, 0x23, 0xd4, 0xa9, 0x2e, - 0x65, 0x84, 0xad, 0x9b, 0xbb, 0x90, 0x59, 0x26, 0x18, 0x45, 0x3c, 0x4d, 0x74, 0x76, 0x72, 0xeb, - 0xf8, 0x15, 0x58, 0x17, 0x1c, 0x59, 0xcd, 0x8d, 0x93, 0xa0, 0x8a, 0x5a, 0xa9, 0xca, 0x92, 0x94, - 0x91, 0x51, 0xfb, 0xf5, 0x8c, 0x87, 0x1a, 0x06, 0x46, 0xec, 0x0d, 0xd6, 0x3d, 0xbd, 0x37, 0x79, - 0x28, 0xb3, 0xd6, 0xe4, 0xd4, 0xd4, 0x8b, 0x41, 0xee, 0x08, 0x3e, 0x94, 0x79, 0x6a, 0x5e, 0x36, - 0xe3, 0x3d, 0xb8, 0x98, 0x78, 0xfd, 0x61, 0x32, 0xbe, 0x91, 0xfd, 0x44, 0x24, 0x53, 0x3c, 0xf9, - 0x3a, 0xfb, 0x95, 0xf4, 0x2b, 0x91, 0xc4, 0xb8, 0x9f, 0x76, 0xcd, 0x5b, 0x87, 0x49, 0x5c, 0x66, - 0x64, 0x6e, 0xf8, 0x38, 0x3e, 0x8d, 0x09, 0x4e, 0x06, 0x4a, 0x4a, 0x96, 0x2a, 0x97, 0xd9, 0x71, - 0xf1, 0xa2, 0x98, 0x67, 0x9a, 0x9f, 0x33, 0x9f, 0x19, 0x23, 0x30, 0x6b, 0x17, 0x13, 0x09, 0xec, - 0xc9, 0xf7, 0xe1, 0x4c, 0xfc, 0xd0, 0x98, 0xb3, 0xc8, 0x40, 0xeb, 0x62, 0x28, 0x3b, 0x13, 0xbf, - 0x36, 0x3e, 0x3d, 0xf9, 0x8a, 0xdc, 0x8a, 0x62, 0xf2, 0x4b, 0xa9, 0xb7, 0x32, 0x46, 0x1f, 0x4e, - 0xb2, 0x23, 0x69, 0xb2, 0x3d, 0xed, 0xe8, 0x34, 0xf0, 0x73, 0xcb, 0x0e, 0xbd, 0xa8, 0x7f, 0x6e, - 0x5d, 0xc3, 0x43, 0x2a, 0xf5, 0x37, 0x87, 0xcf, 0x3a, 0x5c, 0xc3, 0x70, 0x2d, 0x5b, 0x3c, 0x40, - 0x5f, 0x36, 0x56, 0x7e, 0xdb, 0x93, 0x41, 0x5e, 0x5a, 0x70, 0xb5, 0x67, 0xec, 0x49, 0x72, 0xcb, - 0x70, 0x71, 0xe9, 0x1d, 0xa5, 0xb2, 0xcb, 0xc9, 0x63, 0x3a, 0x2b, 0x84, 0xa3, 0xda, 0x67, 0xbb, - 0x44, 0x93, 0x54, 0xfb, 0x6c, 0xd7, 0x18, 0x90, 0x9f, 0x63, 0x2a, 0x28, 0xb1, 0x47, 0x61, 0x08, - 0x26, 0xea, 0xf1, 0xa0, 0xd4, 0x5d, 0xaf, 0x7d, 0xae, 0x9a, 0x97, 0xa2, 0x29, 0x42, 0x3c, 0xd3, - 0x5c, 0x16, 0x27, 0xb1, 0x3c, 0xe6, 0xbd, 0x99, 0x74, 0x71, 0xad, 0xbe, 0xcc, 0x27, 0xe0, 0xa9, - 0x5b, 0x9e, 0x03, 0x5f, 0x58, 0xfa, 0xe9, 0x7f, 0xbb, 0x5c, 0xf8, 0xe9, 0xcf, 0x2e, 0x17, 0xfe, - 0xd3, 0xcf, 0x2e, 0x17, 0xfe, 0xeb, 0xcf, 0x2e, 0x17, 0xbe, 0x9c, 0x3f, 0x59, 0x68, 0xe4, 0x46, - 0xcb, 0xa5, 0x5e, 0x74, 0x8b, 0xb3, 0x1b, 0xc2, 0xff, 0xde, 0xfa, 0x7f, 0x01, 0x00, 0x00, 0xff, - 0xff, 0x5f, 0x9d, 0x4a, 0x89, 0x89, 0xe9, 0x00, 0x00, + // 15123 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0xbd, 0x5b, 0x6c, 0x5c, 0xc9, + 0x76, 0x18, 0xca, 0xe6, 0x9b, 0x8b, 0x0f, 0xb5, 0x8a, 0xa4, 0xd8, 0xa2, 0x28, 0xb5, 0xb4, 0x35, + 0x9a, 0xd1, 0xe8, 0xcc, 0xd1, 0x83, 0xf3, 0x38, 0xf3, 0x9e, 0x69, 0x3e, 0x44, 0x52, 0xe2, 0x6b, + 0x76, 0x93, 0xd4, 0xbc, 0x7c, 0xfa, 0x6c, 0x76, 0x97, 0xc8, 0x6d, 0x35, 0xf7, 0xee, 0xb3, 0xf7, + 0x6e, 0x69, 0x74, 0x7c, 0xed, 0x0b, 0x1f, 0xdf, 0x8b, 0xeb, 0x8f, 0x7b, 0x7d, 0x6d, 0x20, 0x0e, + 0x1c, 0x38, 0x80, 0x11, 0x20, 0x01, 0x82, 0x00, 0x0e, 0xf2, 0x63, 0xf8, 0x2b, 0x01, 0xf2, 0x95, + 0x13, 0x03, 0x46, 0x12, 0xd8, 0xf9, 0xc9, 0x07, 0x9d, 0x1c, 0x20, 0x3f, 0x44, 0xf2, 0x61, 0x04, + 0x09, 0x90, 0x03, 0x18, 0x08, 0x6a, 0xd5, 0x63, 0x57, 0xed, 0x47, 0x37, 0xa9, 0xd1, 0x1c, 0xe7, + 0x47, 0x62, 0xaf, 0x5a, 0x6b, 0x55, 0xd5, 0xaa, 0xda, 0x55, 0xab, 0x56, 0xad, 0x5a, 0x0b, 0x6e, + 0x47, 0xb4, 0x49, 0x5b, 0x7e, 0x10, 0xdd, 0x69, 0xd2, 0x03, 0xa7, 0xfe, 0xfc, 0x4e, 0xbd, 0xe9, + 0x52, 0x2f, 0xba, 0xd3, 0x0a, 0xfc, 0xc8, 0xbf, 0xe3, 0xb4, 0xa3, 0xc3, 0x90, 0x06, 0x4f, 0xdd, + 0x3a, 0xbd, 0x8d, 0x10, 0x32, 0x80, 0xff, 0xcd, 0x4e, 0x1d, 0xf8, 0x07, 0x3e, 0xc7, 0x61, 0x7f, + 0xf1, 0xc2, 0xd9, 0x4b, 0x07, 0xbe, 0x7f, 0xd0, 0xa4, 0x9c, 0x78, 0xbf, 0xfd, 0xf8, 0x0e, 0x3d, + 0x6a, 0x45, 0xcf, 0x45, 0x61, 0x39, 0x59, 0x18, 0xb9, 0x47, 0x34, 0x8c, 0x9c, 0xa3, 0x96, 0x40, + 0x78, 0x5d, 0x35, 0xc5, 0x89, 0x22, 0x56, 0x12, 0xb9, 0xbe, 0x77, 0xe7, 0xe9, 0x3d, 0xfd, 0xa7, + 0x40, 0xbd, 0xd9, 0xb1, 0xd5, 0x75, 0x1a, 0x44, 0xe1, 0xa9, 0x30, 0xe9, 0x53, 0xea, 0x45, 0xa9, + 0xea, 0x05, 0x66, 0xf4, 0xbc, 0x45, 0x43, 0x8e, 0x22, 0xff, 0x13, 0xa8, 0xd7, 0xb2, 0x51, 0xf1, + 0x5f, 0x81, 0xf2, 0xfd, 0x6c, 0x94, 0x67, 0x74, 0x9f, 0xc9, 0xd4, 0x53, 0x7f, 0x74, 0x41, 0x0f, + 0x9c, 0x56, 0x8b, 0x06, 0xf1, 0x1f, 0x02, 0xfd, 0xa2, 0x42, 0x3f, 0x7a, 0xec, 0x30, 0x11, 0x1d, + 0x3d, 0x76, 0x52, 0xdd, 0x68, 0x87, 0xce, 0x01, 0x15, 0xcd, 0x7f, 0x7a, 0x4f, 0xff, 0xc9, 0x51, + 0xad, 0x3f, 0x2a, 0xc0, 0xc0, 0x23, 0x27, 0xaa, 0x1f, 0x92, 0x4f, 0x60, 0xe0, 0xa1, 0xeb, 0x35, + 0xc2, 0x52, 0xe1, 0x6a, 0xdf, 0xcd, 0xd1, 0xf9, 0xe2, 0x6d, 0xde, 0x15, 0x2c, 0x64, 0x05, 0x0b, + 0x33, 0x3f, 0x3b, 0x2e, 0xf7, 0x9c, 0x1c, 0x97, 0xcf, 0x3d, 0x61, 0x68, 0x6f, 0xf8, 0x47, 0x6e, + 0x84, 0x63, 0x6b, 0x73, 0x3a, 0xb2, 0x0b, 0x93, 0x95, 0x66, 0xd3, 0x7f, 0xb6, 0xed, 0x04, 0x91, + 0xeb, 0x34, 0xab, 0xed, 0x7a, 0x9d, 0x86, 0x61, 0xa9, 0xf7, 0x6a, 0xe1, 0xe6, 0xf0, 0xc2, 0xf5, + 0x93, 0xe3, 0x72, 0xd9, 0x61, 0xc5, 0xb5, 0x16, 0x2f, 0xaf, 0x85, 0x1c, 0x41, 0x63, 0x94, 0x45, + 0x6f, 0xfd, 0xd9, 0x20, 0x14, 0x57, 0xfd, 0x30, 0x5a, 0x64, 0x23, 0x6a, 0xd3, 0x1f, 0xb7, 0x69, + 0x18, 0x91, 0xeb, 0x30, 0xc8, 0x60, 0x6b, 0x4b, 0xa5, 0xc2, 0xd5, 0xc2, 0xcd, 0x91, 0x85, 0xd1, + 0x93, 0xe3, 0xf2, 0xd0, 0xa1, 0x1f, 0x46, 0x35, 0xb7, 0x61, 0x8b, 0x22, 0xf2, 0x3a, 0x0c, 0x6f, + 0xfa, 0x0d, 0xba, 0xe9, 0x1c, 0x51, 0x6c, 0xc5, 0xc8, 0xc2, 0xf8, 0xc9, 0x71, 0x79, 0xc4, 0xf3, + 0x1b, 0xb4, 0xe6, 0x39, 0x47, 0xd4, 0x56, 0xc5, 0x64, 0x0f, 0xfa, 0x6d, 0xbf, 0x49, 0x4b, 0x7d, + 0x88, 0xb6, 0x70, 0x72, 0x5c, 0xee, 0x0f, 0xfc, 0x26, 0xfd, 0xc5, 0x71, 0xf9, 0x9d, 0x03, 0x37, + 0x3a, 0x6c, 0xef, 0xdf, 0xae, 0xfb, 0x47, 0x77, 0x0e, 0x02, 0xe7, 0xa9, 0xcb, 0x27, 0xa1, 0xd3, + 0xbc, 0x13, 0x4f, 0xd5, 0x96, 0x2b, 0xc6, 0xbd, 0xfa, 0x3c, 0x8c, 0xe8, 0x11, 0xe3, 0x64, 0x23, + 0x3f, 0xf2, 0x08, 0xa6, 0x2a, 0x8d, 0x86, 0xcb, 0x29, 0xb6, 0x03, 0xd7, 0xab, 0xbb, 0x2d, 0xa7, + 0x19, 0x96, 0xfa, 0xaf, 0xf6, 0xdd, 0x1c, 0x11, 0x42, 0x51, 0xe5, 0xb5, 0x96, 0x42, 0xd0, 0x84, + 0x92, 0xc9, 0x80, 0xbc, 0x09, 0xc3, 0x4b, 0x9b, 0x55, 0xd6, 0xf6, 0xb0, 0x34, 0x80, 0xcc, 0x66, + 0x4e, 0x8e, 0xcb, 0x93, 0x0d, 0x2f, 0xc4, 0xae, 0xe9, 0x0c, 0x14, 0x22, 0x79, 0x07, 0xc6, 0xb6, + 0xdb, 0xfb, 0x4d, 0xb7, 0xbe, 0xb3, 0x5e, 0x7d, 0x48, 0x9f, 0x97, 0x06, 0xaf, 0x16, 0x6e, 0x8e, + 0x2d, 0x90, 0x93, 0xe3, 0xf2, 0x44, 0x0b, 0xe1, 0xb5, 0xa8, 0x19, 0xd6, 0x9e, 0xd0, 0xe7, 0xb6, + 0x81, 0x17, 0xd3, 0x55, 0xab, 0xab, 0x8c, 0x6e, 0x28, 0x45, 0x17, 0x86, 0x87, 0x3a, 0x1d, 0xc7, + 0x23, 0x77, 0x00, 0x6c, 0x7a, 0xe4, 0x47, 0xb4, 0xd2, 0x68, 0x04, 0xa5, 0x61, 0x94, 0xed, 0xb9, + 0x93, 0xe3, 0xf2, 0x68, 0x80, 0xd0, 0x9a, 0xd3, 0x68, 0x04, 0xb6, 0x86, 0x42, 0x16, 0x61, 0xd8, + 0xf6, 0xb9, 0x80, 0x4b, 0x23, 0x57, 0x0b, 0x37, 0x47, 0xe7, 0xcf, 0x89, 0x69, 0x28, 0xc1, 0x0b, + 0x17, 0x4e, 0x8e, 0xcb, 0x24, 0x10, 0xbf, 0xf4, 0x5e, 0x4a, 0x0c, 0x52, 0x86, 0xa1, 0x4d, 0x7f, + 0xd1, 0xa9, 0x1f, 0xd2, 0x12, 0xe0, 0xdc, 0x1b, 0x38, 0x39, 0x2e, 0x17, 0xbe, 0x6f, 0x4b, 0x28, + 0x79, 0x0a, 0xa3, 0xf1, 0x40, 0x85, 0xa5, 0x51, 0x14, 0xdf, 0xce, 0xc9, 0x71, 0xf9, 0x42, 0x88, + 0xe0, 0x1a, 0x1b, 0x7a, 0x4d, 0x82, 0xdf, 0x62, 0x16, 0xe8, 0x15, 0x91, 0xaf, 0x61, 0x3a, 0xfe, + 0x59, 0x09, 0x43, 0x1a, 0x30, 0x1e, 0x6b, 0x4b, 0xa5, 0x71, 0x94, 0xcc, 0xab, 0x27, 0xc7, 0x65, + 0x4b, 0x6b, 0x41, 0xcd, 0x91, 0x28, 0x35, 0xb7, 0xa1, 0xf5, 0x34, 0x9b, 0xc9, 0x83, 0xfe, 0xe1, + 0xb1, 0xe2, 0xb8, 0x7d, 0x79, 0xd7, 0x0b, 0x23, 0x67, 0xbf, 0x49, 0x33, 0x91, 0xac, 0xbf, 0x29, + 0x00, 0xd9, 0x6a, 0x51, 0xaf, 0x5a, 0x5d, 0x65, 0xdf, 0x93, 0xfc, 0x9c, 0xde, 0x80, 0x11, 0x3e, + 0x70, 0x6c, 0x74, 0x7b, 0x71, 0x74, 0x27, 0x4e, 0x8e, 0xcb, 0x20, 0x46, 0x97, 0x8d, 0x6c, 0x8c, + 0x40, 0x6e, 0x40, 0xdf, 0xce, 0xce, 0x3a, 0x7e, 0x2b, 0x7d, 0x0b, 0x93, 0x27, 0xc7, 0xe5, 0xbe, + 0x28, 0x6a, 0xfe, 0xe2, 0xb8, 0x3c, 0xbc, 0xd4, 0x0e, 0x50, 0x2c, 0x36, 0x2b, 0x27, 0x37, 0x60, + 0x68, 0xb1, 0xd9, 0x0e, 0x23, 0x1a, 0x94, 0xfa, 0xe3, 0x8f, 0xb4, 0xce, 0x41, 0xb6, 0x2c, 0x23, + 0xdf, 0x83, 0xfe, 0xdd, 0x90, 0x06, 0xa5, 0x01, 0x1c, 0xef, 0x71, 0x31, 0xde, 0x0c, 0xb4, 0x37, + 0xbf, 0x30, 0xcc, 0xbe, 0xc4, 0x76, 0x48, 0x03, 0x1b, 0x91, 0xc8, 0x6d, 0x18, 0xe0, 0x83, 0x36, + 0x88, 0x8b, 0xd4, 0xb8, 0x9a, 0x1d, 0x4d, 0xba, 0xf7, 0xce, 0xc2, 0xc8, 0xc9, 0x71, 0x79, 0x00, + 0x07, 0xcf, 0xe6, 0x68, 0x0f, 0xfa, 0x87, 0x0b, 0xc5, 0x5e, 0x7b, 0x98, 0xd1, 0xb2, 0xcf, 0xc2, + 0xfa, 0x1e, 0x8c, 0x6a, 0xdd, 0x27, 0x73, 0xd0, 0xcf, 0xfe, 0xc7, 0x45, 0x64, 0x8c, 0x57, 0xc6, + 0x36, 0x0e, 0x1b, 0xa1, 0xd6, 0x1f, 0x4e, 0x41, 0x91, 0x51, 0x1a, 0x2b, 0xcf, 0x6d, 0x5d, 0x54, + 0x9c, 0xae, 0x68, 0x8a, 0xaa, 0x54, 0xd0, 0x85, 0x75, 0x13, 0x54, 0xed, 0x62, 0x11, 0x1a, 0x3b, + 0x39, 0x2e, 0x0f, 0xb7, 0x05, 0x2c, 0x6e, 0x1b, 0xa9, 0xc2, 0xd0, 0xf2, 0x37, 0x2d, 0x37, 0xa0, + 0x21, 0x8a, 0x76, 0x74, 0x7e, 0xf6, 0x36, 0xdf, 0x2e, 0x6f, 0xcb, 0xed, 0xf2, 0xf6, 0x8e, 0xdc, + 0x2e, 0x17, 0x2e, 0x8b, 0xc5, 0xf8, 0x3c, 0xe5, 0x24, 0xf1, 0xfc, 0xf8, 0xdd, 0xbf, 0x2a, 0x17, + 0x6c, 0xc9, 0x89, 0xbc, 0x01, 0x83, 0xf7, 0xfd, 0xe0, 0xc8, 0x89, 0xc4, 0x18, 0x4c, 0x9d, 0x1c, + 0x97, 0x8b, 0x8f, 0x11, 0xa2, 0x4d, 0x29, 0x81, 0x43, 0xee, 0xc3, 0x84, 0xed, 0xb7, 0x23, 0xba, + 0xe3, 0xcb, 0x91, 0x1b, 0x40, 0xaa, 0x2b, 0x27, 0xc7, 0xe5, 0xd9, 0x80, 0x95, 0xd4, 0x22, 0xbf, + 0x26, 0x86, 0x50, 0xa3, 0x4f, 0x50, 0x91, 0x65, 0x98, 0xa8, 0xe0, 0xea, 0x2d, 0xa4, 0xc6, 0xc7, + 0x6b, 0x64, 0xe1, 0xf2, 0xc9, 0x71, 0xf9, 0xa2, 0x83, 0x25, 0xb5, 0x40, 0x14, 0xe9, 0x6c, 0x4c, + 0x22, 0xb2, 0x09, 0xe7, 0x1f, 0xb6, 0xf7, 0x69, 0xe0, 0xd1, 0x88, 0x86, 0xb2, 0x45, 0x43, 0xd8, + 0xa2, 0xab, 0x27, 0xc7, 0xe5, 0xb9, 0x27, 0xaa, 0x30, 0xa3, 0x4d, 0x69, 0x52, 0x42, 0xe1, 0x9c, + 0x68, 0xe8, 0x92, 0x13, 0x39, 0xfb, 0x4e, 0x48, 0x71, 0x51, 0x1a, 0x9d, 0xbf, 0xc0, 0x45, 0x7c, + 0x3b, 0x51, 0xba, 0x70, 0x5d, 0x48, 0xf9, 0x92, 0xea, 0x7b, 0x43, 0x14, 0x69, 0x15, 0x25, 0x79, + 0xb2, 0xb5, 0x59, 0xed, 0x3b, 0x23, 0xd8, 0x5a, 0x5c, 0x9b, 0xd5, 0xbe, 0xa3, 0xaf, 0x5a, 0x6a, + 0x07, 0x5a, 0x87, 0x81, 0x5d, 0xb6, 0x3b, 0xe3, 0x9a, 0x35, 0x31, 0x7f, 0x4d, 0xb4, 0x28, 0x39, + 0xff, 0x6e, 0xb3, 0x1f, 0x88, 0x88, 0x5f, 0xde, 0x39, 0xdc, 0xd1, 0xf5, 0xbd, 0x18, 0xcb, 0xc8, + 0x67, 0x00, 0xa2, 0x55, 0x95, 0x56, 0xab, 0x34, 0x8a, 0x9d, 0x3c, 0x6f, 0x76, 0xb2, 0xd2, 0x6a, + 0x2d, 0x5c, 0x11, 0xfd, 0xbb, 0xa0, 0xfa, 0xe7, 0xb4, 0x5a, 0x1a, 0x37, 0x8d, 0x09, 0xf9, 0x04, + 0xc6, 0x70, 0x49, 0x93, 0x23, 0x3a, 0x86, 0x23, 0x7a, 0xe9, 0xe4, 0xb8, 0x3c, 0x83, 0xab, 0x55, + 0xc6, 0x78, 0x1a, 0x04, 0xe4, 0x37, 0x60, 0x5a, 0xb0, 0x7b, 0xe4, 0x7a, 0x0d, 0xff, 0x59, 0xb8, + 0x44, 0xc3, 0x27, 0x91, 0xdf, 0xc2, 0xe5, 0x6f, 0x74, 0x7e, 0xce, 0x6c, 0x9e, 0x89, 0xb3, 0x70, + 0x4b, 0xb4, 0xd4, 0x52, 0x2d, 0x7d, 0xc6, 0x11, 0x6a, 0x0d, 0x8e, 0xa1, 0x2f, 0x90, 0x99, 0x2c, + 0xc8, 0x1a, 0x9c, 0xdb, 0x0d, 0xa9, 0xd1, 0x87, 0x09, 0xdc, 0x1f, 0xca, 0x6c, 0x84, 0xdb, 0x21, + 0xad, 0xe5, 0xf5, 0x23, 0x49, 0x47, 0x6c, 0x20, 0x4b, 0x81, 0xdf, 0x4a, 0xcc, 0xf1, 0x73, 0x28, + 0x11, 0xeb, 0xe4, 0xb8, 0x7c, 0xa5, 0x11, 0xf8, 0xad, 0x5a, 0xfe, 0x44, 0xcf, 0xa0, 0x26, 0x3f, + 0x84, 0x0b, 0x8b, 0xbe, 0xe7, 0xd1, 0x3a, 0x5b, 0x41, 0x97, 0x5c, 0xe7, 0xc0, 0xf3, 0xc3, 0xc8, + 0xad, 0xaf, 0x2d, 0x95, 0x8a, 0xf1, 0xf6, 0x50, 0x57, 0x18, 0xb5, 0x86, 0x42, 0x31, 0xb7, 0x87, + 0x1c, 0x2e, 0xe4, 0x2b, 0x18, 0x17, 0x75, 0xd1, 0x00, 0xa7, 0xe6, 0xf9, 0xce, 0x13, 0x4d, 0x21, + 0xf3, 0x8d, 0x3e, 0x90, 0x3f, 0xb9, 0xea, 0x64, 0xf2, 0x22, 0x5f, 0xc3, 0xe8, 0xc6, 0xfd, 0x8a, + 0x4d, 0xc3, 0x96, 0xef, 0x85, 0xb4, 0x44, 0x70, 0x44, 0xaf, 0x08, 0xd6, 0x1b, 0xf7, 0x2b, 0x95, + 0x76, 0x74, 0x48, 0xbd, 0xc8, 0xad, 0x3b, 0x11, 0x95, 0x58, 0x0b, 0xb3, 0x6c, 0xe6, 0x1d, 0x3d, + 0x76, 0x6a, 0x81, 0x80, 0x68, 0xbd, 0xd0, 0xd9, 0x91, 0x59, 0x18, 0xae, 0x56, 0x57, 0xd7, 0xfd, + 0x03, 0xd7, 0x2b, 0x4d, 0x32, 0x61, 0xd8, 0xea, 0x37, 0x79, 0x0c, 0xd3, 0xda, 0xd9, 0xa0, 0xc6, + 0xfe, 0xa7, 0x47, 0xd4, 0x8b, 0x4a, 0x53, 0xd8, 0x86, 0xef, 0xab, 0xc3, 0xcd, 0x6d, 0xfd, 0x08, + 0xf1, 0xf4, 0xde, 0xed, 0x4a, 0xfc, 0xb3, 0x2a, 0x89, 0x16, 0x7a, 0x4b, 0x05, 0x7b, 0xca, 0xc9, + 0x28, 0x21, 0x3b, 0x30, 0xb4, 0xdd, 0x0e, 0x5a, 0x7e, 0x48, 0x4b, 0xd3, 0x28, 0xb8, 0xeb, 0x9d, + 0xbe, 0x50, 0x81, 0xba, 0x30, 0xcd, 0x96, 0xe8, 0x16, 0xff, 0xa1, 0xf5, 0x4e, 0xb2, 0x22, 0x9f, + 0xc2, 0x58, 0xb5, 0xba, 0x1a, 0x6f, 0x28, 0x17, 0x70, 0x43, 0x99, 0x3b, 0x39, 0x2e, 0x97, 0x98, + 0x4a, 0x15, 0x6f, 0x2a, 0xfa, 0x57, 0xa5, 0x53, 0x30, 0x0e, 0x3b, 0xeb, 0xd5, 0x98, 0xc3, 0x4c, + 0xcc, 0x81, 0x29, 0x73, 0xd9, 0x1c, 0x74, 0x0a, 0xf2, 0xc7, 0x05, 0xb8, 0xaa, 0xb3, 0xcc, 0x12, + 0x4c, 0xe9, 0xe2, 0x8b, 0x48, 0x73, 0xfe, 0xe4, 0xb8, 0x7c, 0xdb, 0xec, 0x47, 0x2d, 0x73, 0xb0, + 0xb4, 0xb6, 0x75, 0x6d, 0x0a, 0xb6, 0x57, 0xef, 0x40, 0x66, 0x7b, 0x67, 0x5f, 0xb8, 0xbd, 0xa6, + 0xd4, 0xba, 0xb7, 0xb7, 0x5b, 0x53, 0xc8, 0xaf, 0x42, 0x51, 0x2c, 0x48, 0x2b, 0x6e, 0x54, 0xa5, + 0xc1, 0x53, 0x1a, 0x94, 0x2e, 0x61, 0xf3, 0x66, 0xcc, 0x25, 0x4f, 0x15, 0x2f, 0xdc, 0x10, 0xab, + 0xdd, 0x65, 0xb5, 0xda, 0x1d, 0xb8, 0x51, 0x2d, 0xc4, 0x42, 0xad, 0xee, 0x14, 0x5f, 0xeb, 0x00, + 0x46, 0xd4, 0x06, 0x41, 0x86, 0xa0, 0xaf, 0xd2, 0x6c, 0x16, 0x7b, 0xd8, 0x1f, 0xd5, 0xea, 0x6a, + 0xb1, 0x40, 0x26, 0x00, 0xe2, 0x5d, 0xb1, 0xd8, 0x4b, 0xc6, 0x60, 0x58, 0xee, 0x5a, 0xc5, 0x3e, + 0xc4, 0x6f, 0xb5, 0x8a, 0xfd, 0x84, 0xc0, 0x84, 0xb9, 0x76, 0x16, 0x07, 0xc8, 0x38, 0x8c, 0xa8, + 0x6a, 0x8a, 0x83, 0xd6, 0xef, 0x15, 0x60, 0x44, 0x2d, 0x01, 0xe4, 0x1c, 0x8c, 0xee, 0x6e, 0x56, + 0xb7, 0x97, 0x17, 0xd7, 0xee, 0xaf, 0x2d, 0x2f, 0x15, 0x7b, 0xc8, 0x65, 0xb8, 0xb8, 0x53, 0x5d, + 0xad, 0x2d, 0x2d, 0xd4, 0xd6, 0xb7, 0x16, 0x2b, 0xeb, 0xb5, 0x6d, 0x7b, 0xeb, 0xf3, 0x2f, 0x6a, + 0x3b, 0xbb, 0x9b, 0x9b, 0xcb, 0xeb, 0xc5, 0x02, 0x29, 0xc1, 0x14, 0x2b, 0x7e, 0xb8, 0xbb, 0xb0, + 0xac, 0x23, 0x14, 0x7b, 0xc9, 0x35, 0xb8, 0x9c, 0x55, 0x52, 0x5b, 0x5d, 0xae, 0x2c, 0xad, 0x2f, + 0x57, 0xab, 0xc5, 0x3e, 0x32, 0x03, 0x93, 0x0c, 0xa5, 0xb2, 0xbd, 0x6d, 0xd0, 0xf6, 0x5b, 0x4d, + 0x18, 0xd5, 0xbe, 0x3d, 0x32, 0x07, 0xa5, 0xc5, 0x65, 0x7b, 0xa7, 0xb6, 0xbd, 0x6b, 0x6f, 0x6f, + 0x55, 0x97, 0x6b, 0x66, 0x0b, 0x93, 0xa5, 0xeb, 0x5b, 0x2b, 0x6b, 0x9b, 0x35, 0x06, 0xaa, 0x16, + 0x0b, 0xac, 0x19, 0x46, 0x69, 0x75, 0x6d, 0x73, 0x65, 0x7d, 0xb9, 0xb6, 0x5b, 0x5d, 0x16, 0x28, + 0xbd, 0xd6, 0x4f, 0x7b, 0x53, 0xda, 0x04, 0x99, 0x87, 0xd1, 0x2a, 0x37, 0x95, 0xe0, 0x0a, 0xcb, + 0xcf, 0xa6, 0x4c, 0x3d, 0x1c, 0x13, 0x16, 0x14, 0xbe, 0x78, 0xea, 0x48, 0x4c, 0x41, 0xdc, 0x66, + 0xb3, 0xa0, 0xee, 0x37, 0x75, 0x05, 0xb1, 0x25, 0x60, 0xb6, 0x2a, 0x25, 0xf3, 0x9a, 0x2a, 0xc9, + 0x0f, 0xaa, 0x78, 0x18, 0x92, 0xaa, 0xa4, 0xae, 0x56, 0x28, 0xa5, 0x72, 0x3e, 0x1e, 0x61, 0xa1, + 0x01, 0x22, 0x4d, 0x86, 0x1a, 0xa3, 0xf0, 0xc8, 0xeb, 0x52, 0xc9, 0xe6, 0x07, 0x4b, 0xd4, 0x33, + 0x12, 0x47, 0x22, 0xa1, 0x5f, 0x5b, 0xed, 0x9c, 0x3d, 0x9d, 0x7c, 0x90, 0x9c, 0x42, 0x42, 0x18, + 0xc8, 0x2c, 0xb1, 0x75, 0xdb, 0x09, 0x54, 0x52, 0x86, 0x01, 0xbe, 0xd8, 0x73, 0x79, 0xa0, 0x5a, + 0xdf, 0x64, 0x00, 0x9b, 0xc3, 0xad, 0xaf, 0xd2, 0x9f, 0x14, 0x59, 0x01, 0xb2, 0xe2, 0x46, 0xab, + 0xed, 0xfd, 0xad, 0xe0, 0xc0, 0xf1, 0xdc, 0x9f, 0xf0, 0x53, 0x64, 0x21, 0xd6, 0xbf, 0xf8, 0x11, + 0xae, 0xe6, 0x6b, 0xc5, 0x76, 0x06, 0x89, 0xf5, 0x27, 0x7d, 0xba, 0xf2, 0xc4, 0xce, 0x08, 0xda, + 0x60, 0xe2, 0x19, 0x01, 0x07, 0x11, 0xa1, 0xec, 0x38, 0x50, 0xa5, 0x61, 0xc8, 0xcf, 0x71, 0xbd, + 0x6a, 0xbc, 0x21, 0xe4, 0xc0, 0x9a, 0xdb, 0x60, 0xc7, 0x01, 0x85, 0xc2, 0x8e, 0xc4, 0x7c, 0xb5, + 0xc0, 0x23, 0x71, 0x5f, 0x7c, 0x24, 0x16, 0x4b, 0x0e, 0x3f, 0x12, 0xc7, 0x28, 0x6c, 0x4a, 0x09, + 0xf5, 0x15, 0x5b, 0xd1, 0x1f, 0x4f, 0x29, 0xa1, 0xf2, 0x8a, 0x29, 0xa5, 0x21, 0x91, 0xf7, 0x01, + 0x2a, 0x8f, 0xaa, 0x78, 0xf6, 0xb3, 0x37, 0x85, 0x0a, 0x8f, 0x9b, 0xad, 0xf3, 0x2c, 0x14, 0x47, + 0xcb, 0x40, 0x3f, 0x3b, 0x6b, 0xd8, 0x64, 0x01, 0xc6, 0x2b, 0x3f, 0x69, 0x07, 0x74, 0xad, 0xc1, + 0xf6, 0xeb, 0x88, 0x1b, 0x09, 0x46, 0xf8, 0x86, 0xe2, 0xb0, 0x82, 0x9a, 0x2b, 0x4a, 0x34, 0x06, + 0x26, 0x09, 0xd9, 0x82, 0xf3, 0x2b, 0x8b, 0xdb, 0x62, 0x92, 0x57, 0xea, 0x75, 0xbf, 0xed, 0x45, + 0x42, 0x6f, 0xbf, 0xc6, 0x56, 0xb5, 0x83, 0x7a, 0xab, 0x26, 0x3f, 0x08, 0x87, 0x17, 0xeb, 0x8a, + 0x7b, 0x8a, 0x96, 0x5c, 0x87, 0xbe, 0x5d, 0x7b, 0x4d, 0x58, 0x10, 0xce, 0x9f, 0x1c, 0x97, 0xc7, + 0xdb, 0x81, 0xab, 0x91, 0xb0, 0x52, 0xab, 0x09, 0x13, 0x2b, 0x34, 0x62, 0x33, 0x5f, 0x9e, 0xd5, + 0x3a, 0x0f, 0xdd, 0x87, 0x30, 0xfa, 0xc8, 0x8d, 0x0e, 0xab, 0xb4, 0x1e, 0xd0, 0x48, 0xda, 0xa9, + 0x50, 0x4c, 0xcf, 0xdc, 0xe8, 0xb0, 0x16, 0x72, 0xb8, 0xae, 0x93, 0x68, 0xe8, 0xd6, 0x32, 0x9c, + 0x13, 0xb5, 0xa9, 0xa3, 0xe1, 0xbc, 0xc9, 0xb0, 0x80, 0x0c, 0x71, 0xa8, 0x74, 0x86, 0x26, 0x9b, + 0x3f, 0xe9, 0x85, 0xe9, 0xc5, 0x43, 0xc7, 0x3b, 0xa0, 0xdb, 0x4e, 0x18, 0x3e, 0xf3, 0x83, 0x86, + 0xd6, 0x78, 0x3c, 0x17, 0xa7, 0x1a, 0x8f, 0x07, 0xe1, 0x79, 0x18, 0xdd, 0x6a, 0x36, 0x24, 0x8d, + 0x38, 0xb3, 0x63, 0x5d, 0x7e, 0xb3, 0x51, 0x6b, 0x49, 0x5e, 0x3a, 0x12, 0xa3, 0xd9, 0xa4, 0xcf, + 0x14, 0x4d, 0x5f, 0x4c, 0xe3, 0xd1, 0x67, 0x1a, 0x8d, 0x86, 0x44, 0x96, 0xe1, 0x7c, 0x95, 0xd6, + 0x7d, 0xaf, 0x71, 0xdf, 0xa9, 0x47, 0x7e, 0xb0, 0xe3, 0x3f, 0xa1, 0x9e, 0x98, 0x84, 0xf8, 0x51, + 0x85, 0x58, 0x58, 0x7b, 0x8c, 0xa5, 0xb5, 0x88, 0x15, 0xdb, 0x69, 0x0a, 0xb2, 0x05, 0xc3, 0x8f, + 0x84, 0xb5, 0x53, 0x1c, 0xf4, 0x6f, 0xdc, 0x56, 0xe6, 0xcf, 0xc5, 0x80, 0xe2, 0xcc, 0x71, 0x9a, + 0xca, 0x54, 0xa1, 0x74, 0x44, 0x5c, 0x0b, 0x25, 0xa6, 0xad, 0x98, 0x58, 0xbb, 0x30, 0xbe, 0xdd, + 0x6c, 0x1f, 0xb8, 0x1e, 0x5b, 0xb5, 0xaa, 0xf4, 0xc7, 0x64, 0x09, 0x20, 0x06, 0x08, 0x1b, 0xe6, + 0xa4, 0x30, 0x0f, 0xc4, 0x05, 0x7b, 0x6f, 0x8a, 0xaf, 0x0d, 0x21, 0x78, 0x9a, 0xb3, 0x35, 0x3a, + 0xeb, 0x7f, 0xf6, 0x01, 0x11, 0x03, 0x80, 0x1b, 0x78, 0x95, 0x46, 0x6c, 0x7f, 0xbb, 0x00, 0xbd, + 0xca, 0xd4, 0x38, 0x78, 0x72, 0x5c, 0xee, 0x75, 0x1b, 0x76, 0xef, 0xda, 0x12, 0x79, 0x0b, 0x06, + 0x10, 0x0d, 0xe5, 0x3f, 0xa1, 0xea, 0xd3, 0x39, 0xf0, 0xd5, 0x0b, 0x35, 0x07, 0x9b, 0x23, 0x93, + 0xb7, 0x61, 0x64, 0x89, 0x36, 0xe9, 0x81, 0x13, 0xf9, 0x72, 0x09, 0xe0, 0xc6, 0x3b, 0x09, 0xd4, + 0xe6, 0x5c, 0x8c, 0xc9, 0x8e, 0xf2, 0x36, 0x75, 0x42, 0xdf, 0xd3, 0x8f, 0xf2, 0x01, 0x42, 0xf4, + 0xa3, 0x3c, 0xc7, 0x21, 0xbf, 0x5f, 0x80, 0xd1, 0x8a, 0xe7, 0x09, 0xa3, 0x58, 0x28, 0xa4, 0x3e, + 0x7d, 0x5b, 0x59, 0x91, 0xd7, 0x9d, 0x7d, 0xda, 0xdc, 0x73, 0x9a, 0x6d, 0x1a, 0x2e, 0x7c, 0xcd, + 0xf4, 0x8d, 0xff, 0x70, 0x5c, 0xfe, 0xe0, 0x0c, 0x66, 0xae, 0xd8, 0x1e, 0xbd, 0x13, 0x38, 0x6e, + 0x14, 0x9e, 0x1c, 0x97, 0xa7, 0x9d, 0xb8, 0x42, 0xfd, 0xbb, 0xd1, 0xda, 0x11, 0x6f, 0x2e, 0x83, + 0xdd, 0x36, 0x17, 0x72, 0x04, 0xe7, 0x2a, 0x61, 0xd8, 0x3e, 0xa2, 0xd5, 0xc8, 0x09, 0xa2, 0x1d, + 0xf7, 0x88, 0xe2, 0x22, 0xd2, 0xd9, 0x30, 0xf2, 0xda, 0xcf, 0x8e, 0xcb, 0x05, 0x76, 0xa0, 0x73, + 0x90, 0x94, 0xe9, 0x6c, 0x41, 0x54, 0x8b, 0x5c, 0x7d, 0x7f, 0x44, 0x13, 0x49, 0x92, 0xb7, 0x75, + 0x5d, 0x69, 0x34, 0x6b, 0x4b, 0x79, 0x23, 0x6e, 0x2d, 0xc2, 0xdc, 0x0a, 0x8d, 0x6c, 0x1a, 0xd2, + 0x48, 0x7e, 0x23, 0x38, 0xc3, 0x63, 0xc3, 0xf4, 0x10, 0xfe, 0x56, 0xc4, 0x38, 0xfc, 0xfc, 0xbb, + 0x90, 0x25, 0xd6, 0xff, 0x55, 0x80, 0xf2, 0x62, 0x40, 0xf9, 0x59, 0x28, 0x87, 0x51, 0xe7, 0xb5, + 0x6b, 0x0e, 0xfa, 0x77, 0x9e, 0xb7, 0xa4, 0x45, 0x09, 0x4b, 0xd9, 0xa0, 0xd8, 0x08, 0x3d, 0xa5, + 0x81, 0xce, 0x7a, 0x0c, 0xd3, 0x36, 0xf5, 0xe8, 0x33, 0x67, 0xbf, 0x49, 0x0d, 0x1b, 0x57, 0x19, + 0x06, 0xf8, 0x87, 0x9e, 0xea, 0x02, 0x87, 0x9f, 0xcd, 0x5e, 0x68, 0x8d, 0xc3, 0xe8, 0xb6, 0xeb, + 0x1d, 0x08, 0xee, 0xd6, 0xff, 0xdb, 0x0f, 0x63, 0xfc, 0xb7, 0x38, 0xde, 0x25, 0xb6, 0xb8, 0xc2, + 0x69, 0xb6, 0xb8, 0x77, 0x61, 0x9c, 0xef, 0xfb, 0x7b, 0x34, 0x60, 0x5b, 0xab, 0x90, 0x04, 0x1e, + 0x55, 0xb9, 0x9e, 0x5c, 0x7b, 0xca, 0x4b, 0x6c, 0x13, 0x91, 0xac, 0xc3, 0x04, 0x07, 0xdc, 0xa7, + 0x4e, 0xd4, 0x8e, 0xad, 0x6d, 0xe7, 0x84, 0x32, 0x2e, 0xc1, 0x7c, 0x6a, 0x0a, 0x5e, 0x8f, 0x05, + 0xd0, 0x4e, 0xd0, 0x92, 0x4f, 0xe0, 0xdc, 0x76, 0xe0, 0x7f, 0xf3, 0x5c, 0xdb, 0xd4, 0xf9, 0xd7, + 0xc9, 0x4f, 0x7e, 0xac, 0xa8, 0xa6, 0x6f, 0xed, 0x49, 0x6c, 0xf2, 0x3a, 0x0c, 0xaf, 0x85, 0x0b, + 0x7e, 0xe0, 0x7a, 0x07, 0xf8, 0x8d, 0x0e, 0xf3, 0x4b, 0x0a, 0x37, 0xac, 0xed, 0x23, 0xd0, 0x56, + 0xc5, 0x09, 0x73, 0xfa, 0x50, 0x77, 0x73, 0xfa, 0x5d, 0x80, 0x75, 0xdf, 0x69, 0x54, 0x9a, 0xcd, + 0xc5, 0x4a, 0x88, 0xbb, 0xa7, 0xd8, 0x8f, 0x9a, 0xbe, 0xd3, 0xa8, 0x39, 0xcd, 0x66, 0xad, 0xee, + 0x84, 0xb6, 0x86, 0x43, 0xbe, 0x84, 0x8b, 0xa1, 0x7b, 0xe0, 0x61, 0xe7, 0x6a, 0x4e, 0xf3, 0xc0, + 0x0f, 0xdc, 0xe8, 0xf0, 0xa8, 0x16, 0xb6, 0xdd, 0x88, 0xdb, 0xb2, 0x26, 0xe6, 0xaf, 0x88, 0x45, + 0xae, 0x2a, 0xf1, 0x2a, 0x12, 0xad, 0xca, 0xb0, 0xec, 0x99, 0x30, 0xbb, 0xe0, 0x41, 0xff, 0xf0, + 0x60, 0x71, 0xc8, 0x3e, 0xb7, 0xee, 0xd6, 0xa9, 0x17, 0xd2, 0x47, 0x4e, 0xe0, 0xb9, 0xde, 0x41, + 0x68, 0xfd, 0xd3, 0xf3, 0x30, 0xac, 0xc4, 0x79, 0x5b, 0x3f, 0xa0, 0x88, 0x1d, 0x14, 0x67, 0x56, + 0x6c, 0xea, 0xb3, 0x35, 0x0c, 0x72, 0x11, 0x8f, 0x2c, 0x62, 0xef, 0x1e, 0x62, 0x33, 0xdd, 0x69, + 0xb5, 0x6c, 0x06, 0x63, 0x5f, 0xf0, 0xd2, 0x02, 0x8e, 0xed, 0x30, 0xff, 0x82, 0x1b, 0xfb, 0x76, + 0xef, 0xd2, 0x02, 0xfb, 0x74, 0xb6, 0xd6, 0x96, 0x16, 0x71, 0x98, 0x86, 0xf9, 0xa7, 0xe3, 0xbb, + 0x8d, 0xba, 0x8d, 0x50, 0x56, 0x5a, 0xad, 0x6c, 0xac, 0x8b, 0xa1, 0xc0, 0xd2, 0xd0, 0x39, 0x6a, + 0xda, 0x08, 0x65, 0x5a, 0x2d, 0xb7, 0xda, 0x2c, 0xfa, 0x5e, 0x14, 0xf8, 0xcd, 0x10, 0xb5, 0xa3, + 0x61, 0x3e, 0x55, 0x84, 0xb9, 0xa7, 0x2e, 0x8a, 0xec, 0x04, 0x2a, 0x79, 0x04, 0x33, 0x95, 0xc6, + 0x53, 0xc7, 0xab, 0xd3, 0x06, 0x2f, 0x79, 0xe4, 0x07, 0x4f, 0x1e, 0x37, 0xfd, 0x67, 0x21, 0x8e, + 0xe5, 0xb0, 0xb0, 0x8e, 0x0a, 0x14, 0x69, 0x3d, 0x7a, 0x26, 0x91, 0xec, 0x3c, 0x6a, 0xf6, 0xb9, + 0x2e, 0x36, 0xfd, 0x76, 0x43, 0x8c, 0x30, 0x7e, 0xae, 0x75, 0x06, 0xb0, 0x39, 0x9c, 0x49, 0x69, + 0xb5, 0xba, 0x81, 0xe3, 0x27, 0xa4, 0x74, 0x18, 0x1e, 0xd9, 0x0c, 0x46, 0x6e, 0xc0, 0x90, 0x54, + 0xd0, 0xf9, 0x65, 0x09, 0x1a, 0xe9, 0xa5, 0x62, 0x2e, 0xcb, 0xd8, 0xe7, 0x66, 0xd3, 0xba, 0xff, + 0x94, 0x06, 0xcf, 0x17, 0xfd, 0x06, 0x95, 0x96, 0x33, 0x61, 0x19, 0xe2, 0x05, 0xb5, 0x3a, 0x2b, + 0xb1, 0x4d, 0x44, 0x56, 0x01, 0xdf, 0x5f, 0xc3, 0xd2, 0xb9, 0xb8, 0x02, 0xbe, 0xff, 0x86, 0xb6, + 0x2c, 0x23, 0x4b, 0x70, 0xbe, 0xd2, 0x8e, 0xfc, 0x23, 0x27, 0x72, 0xeb, 0xbb, 0xad, 0x83, 0xc0, + 0x61, 0x95, 0x14, 0x91, 0x00, 0x0f, 0x2c, 0x8e, 0x2c, 0xac, 0xb5, 0x45, 0xa9, 0x9d, 0x26, 0x20, + 0xef, 0xc0, 0xd8, 0x5a, 0xc8, 0xad, 0xa3, 0x4e, 0x48, 0x1b, 0x68, 0xe2, 0x12, 0xad, 0x74, 0xc3, + 0x1a, 0xda, 0x4a, 0x6b, 0xec, 0x88, 0xd3, 0xb0, 0x0d, 0x3c, 0x62, 0xc1, 0x60, 0x25, 0x0c, 0xdd, + 0x30, 0x42, 0xcb, 0xd5, 0xf0, 0x02, 0x9c, 0x1c, 0x97, 0x07, 0x1d, 0x84, 0xd8, 0xa2, 0x84, 0x3c, + 0x82, 0xd1, 0x25, 0xca, 0x94, 0xd2, 0x9d, 0xa0, 0x1d, 0x46, 0x68, 0x87, 0x1a, 0x9d, 0xbf, 0x28, + 0x16, 0x0d, 0xad, 0x44, 0xcc, 0x65, 0xae, 0x49, 0x36, 0x10, 0x5e, 0x8b, 0x58, 0x81, 0xbe, 0x23, + 0x6a, 0xf8, 0x4c, 0xe3, 0x16, 0x34, 0xab, 0x6e, 0x83, 0x2d, 0x03, 0x53, 0xd8, 0x06, 0xd4, 0xb8, + 0xc5, 0xba, 0x53, 0x3b, 0xc4, 0x12, 0x5d, 0xe3, 0x36, 0x48, 0x48, 0x3d, 0x65, 0x70, 0x9f, 0x36, + 0x8c, 0xaa, 0x66, 0xa1, 0x6c, 0xe2, 0x19, 0xcd, 0xf1, 0x1f, 0xc2, 0xe8, 0x62, 0x3b, 0x8c, 0xfc, + 0xa3, 0x9d, 0x43, 0x7a, 0x44, 0xd1, 0x56, 0x25, 0xce, 0x15, 0x75, 0x04, 0xd7, 0x22, 0x06, 0xd7, + 0xbb, 0xa9, 0xa1, 0x93, 0xcf, 0x80, 0xc8, 0x03, 0xc2, 0x0a, 0x9b, 0x1f, 0x1e, 0x9b, 0xcb, 0x68, + 0xae, 0x1a, 0xe6, 0xa7, 0x02, 0x79, 0xae, 0xa8, 0x1d, 0xa8, 0x62, 0xdd, 0x64, 0x9a, 0x26, 0x66, + 0x0d, 0xe2, 0x4d, 0x5c, 0x09, 0x9c, 0xd6, 0x61, 0xa9, 0x14, 0x6b, 0xf0, 0xa2, 0x53, 0x07, 0x0c, + 0x6e, 0x68, 0x22, 0x31, 0x3a, 0xa9, 0x02, 0xf0, 0x9f, 0xeb, 0x6c, 0xe0, 0xb9, 0x81, 0xab, 0x64, + 0xc8, 0x8b, 0x15, 0x48, 0x59, 0x5d, 0x44, 0xfd, 0x86, 0xb3, 0x6d, 0xba, 0xc6, 0x68, 0x6a, 0x6c, + 0xc8, 0x13, 0x28, 0xf2, 0x5f, 0x1b, 0xbe, 0xe7, 0x46, 0x7c, 0x59, 0x9f, 0x35, 0xac, 0xa1, 0xc9, + 0x62, 0x59, 0x01, 0x5a, 0xa1, 0x45, 0x05, 0x47, 0xaa, 0x54, 0xb7, 0xf6, 0x24, 0x29, 0xc9, 0x36, + 0x8c, 0x6e, 0x07, 0x7e, 0xa3, 0x5d, 0x8f, 0x50, 0x19, 0xb8, 0x84, 0xeb, 0x33, 0x11, 0xf5, 0x68, + 0x25, 0x5c, 0x26, 0x2d, 0x0e, 0xa8, 0xb1, 0xe5, 0x5b, 0x97, 0x89, 0x86, 0x48, 0x16, 0x60, 0x70, + 0xdb, 0x6f, 0xba, 0xf5, 0xe7, 0xa5, 0x39, 0x6c, 0xf4, 0x94, 0x64, 0x86, 0x40, 0xd9, 0x54, 0xd4, + 0x3c, 0x5b, 0x08, 0xd2, 0x35, 0x4f, 0x8e, 0x44, 0x2a, 0x30, 0xfe, 0x19, 0x9b, 0x30, 0xae, 0xef, + 0x79, 0x8e, 0x1b, 0xd0, 0xd2, 0x65, 0x1c, 0x17, 0xbc, 0x29, 0xf8, 0xb1, 0x5e, 0xa0, 0x4f, 0x67, + 0x83, 0x82, 0xac, 0xc1, 0xb9, 0xb5, 0xb0, 0x1a, 0x05, 0x6e, 0x8b, 0x6e, 0x38, 0x9e, 0x73, 0x40, + 0x1b, 0xa5, 0x2b, 0xb1, 0xa9, 0xde, 0x0d, 0x6b, 0x21, 0x96, 0xd5, 0x8e, 0x78, 0xa1, 0x6e, 0xaa, + 0x4f, 0xd0, 0x91, 0xcf, 0x61, 0x6a, 0xf9, 0x9b, 0x88, 0xcd, 0x98, 0x66, 0xa5, 0xdd, 0x70, 0xa3, + 0x6a, 0xe4, 0x07, 0xce, 0x01, 0x2d, 0x95, 0x91, 0xdf, 0x2b, 0x27, 0xc7, 0xe5, 0xab, 0x54, 0x94, + 0xd7, 0x1c, 0x86, 0x50, 0x0b, 0x39, 0x86, 0x7e, 0x05, 0x9f, 0xc5, 0x81, 0x49, 0xbf, 0xda, 0x6e, + 0x31, 0xa5, 0x18, 0xa5, 0x7f, 0xd5, 0x90, 0xbe, 0x56, 0xc2, 0xa5, 0x1f, 0x72, 0x40, 0x4a, 0xfa, + 0x1a, 0x22, 0xb1, 0x81, 0x3c, 0xf0, 0x5d, 0xaf, 0x52, 0x8f, 0xdc, 0xa7, 0x54, 0xd8, 0x0c, 0xc2, + 0xd2, 0x35, 0x6c, 0x29, 0x5e, 0x2b, 0xfc, 0xaa, 0xef, 0x7a, 0x35, 0x07, 0x8b, 0x6b, 0xc2, 0xc2, + 0x60, 0x5c, 0x2b, 0xa4, 0xa9, 0xc9, 0x0f, 0xe1, 0xc2, 0x86, 0xbf, 0xef, 0x36, 0x29, 0x5f, 0x72, + 0xb8, 0x58, 0xd0, 0x44, 0x6a, 0x21, 0x5f, 0xbc, 0x56, 0x38, 0x42, 0x8c, 0x9a, 0x58, 0xad, 0x8e, + 0x14, 0x8e, 0x7e, 0xad, 0x90, 0xcd, 0x85, 0x2c, 0xc3, 0x18, 0x7e, 0x97, 0x4d, 0xfc, 0x19, 0x96, + 0xae, 0xe3, 0xc9, 0xeb, 0x5a, 0x42, 0x99, 0xba, 0xbd, 0xac, 0xe1, 0x2c, 0x7b, 0x51, 0xf0, 0xdc, + 0x36, 0xc8, 0xc8, 0xc7, 0x30, 0x9b, 0x9c, 0xde, 0x8b, 0xbe, 0xf7, 0xd8, 0x3d, 0x68, 0x07, 0xb4, + 0x51, 0x7a, 0x85, 0x35, 0xd5, 0xee, 0x80, 0x31, 0xfb, 0x08, 0xce, 0xa7, 0xaa, 0x20, 0x45, 0xe8, + 0x7b, 0x22, 0x6e, 0x69, 0x47, 0x6c, 0xf6, 0x27, 0x79, 0x03, 0x06, 0x9e, 0xb2, 0x23, 0x0f, 0x6a, + 0x0c, 0xf1, 0xbd, 0x9f, 0x46, 0xba, 0xe6, 0x3d, 0xf6, 0x6d, 0x8e, 0xf4, 0x7e, 0xef, 0xbb, 0x85, + 0x07, 0xfd, 0xc3, 0xa3, 0xc5, 0x31, 0x7e, 0xb9, 0xfe, 0xa0, 0x7f, 0x78, 0xbc, 0x38, 0x61, 0x55, + 0xe0, 0x5c, 0x02, 0x9f, 0x94, 0x60, 0x88, 0x7a, 0x4c, 0x8d, 0x6e, 0x70, 0x9d, 0xc5, 0x96, 0x3f, + 0xc9, 0x14, 0x0c, 0x34, 0xdd, 0x23, 0x37, 0xc2, 0x0a, 0x07, 0x6c, 0xfe, 0xc3, 0xfa, 0x83, 0x02, + 0x90, 0xf4, 0x96, 0x41, 0xee, 0x24, 0xd8, 0x70, 0x25, 0x52, 0x80, 0xf4, 0xeb, 0x03, 0xc9, 0xfd, + 0x33, 0x98, 0xe4, 0x63, 0x26, 0x37, 0x37, 0xad, 0x2e, 0xbe, 0xa8, 0x66, 0x14, 0xeb, 0xa6, 0x16, + 0x51, 0x8c, 0x5b, 0xe1, 0x3a, 0x36, 0xad, 0x0d, 0xd3, 0x99, 0x9b, 0x05, 0xd9, 0x80, 0xe9, 0x23, + 0xdf, 0x8b, 0x0e, 0x9b, 0xcf, 0xe5, 0x5e, 0x21, 0x6a, 0x2b, 0x60, 0x6d, 0xb8, 0x3e, 0x66, 0x22, + 0xd8, 0x93, 0x02, 0x2c, 0x38, 0x62, 0x3d, 0x0f, 0xfa, 0x87, 0x7b, 0x8b, 0x7d, 0xaa, 0x27, 0x96, + 0x0d, 0xe7, 0x53, 0x6b, 0x2e, 0xf9, 0x08, 0xc6, 0xea, 0x78, 0x4c, 0x32, 0x6a, 0xe2, 0x3b, 0x8e, + 0x06, 0xd7, 0x3f, 0x27, 0x0e, 0xe7, 0x5d, 0xf9, 0x47, 0x05, 0x98, 0xc9, 0x59, 0x6d, 0xcf, 0x2e, + 0xea, 0x2f, 0xe0, 0xc2, 0x91, 0xf3, 0x4d, 0x2d, 0xc0, 0x53, 0x70, 0x2d, 0x70, 0xbc, 0x84, 0xb4, + 0x71, 0x25, 0xc9, 0xc6, 0xd0, 0x3d, 0x9c, 0x8e, 0x9c, 0x6f, 0x6c, 0x44, 0xb0, 0x59, 0x39, 0x6f, + 0xe7, 0xa7, 0x30, 0x6e, 0xac, 0xaf, 0x67, 0x6e, 0x9c, 0x75, 0x0f, 0xce, 0x2f, 0xd1, 0x26, 0x8d, + 0xe8, 0xa9, 0xad, 0x5f, 0xd6, 0x36, 0x40, 0x95, 0x1e, 0x39, 0xad, 0x43, 0x9f, 0xe9, 0xdd, 0x0b, + 0xfa, 0x2f, 0x61, 0x3d, 0x21, 0x52, 0xd1, 0x97, 0x05, 0x7b, 0x6f, 0x72, 0x5d, 0x3c, 0x54, 0x98, + 0xb6, 0x46, 0x65, 0xfd, 0x79, 0x2f, 0x10, 0xb1, 0x40, 0x06, 0xd4, 0x39, 0x92, 0xcd, 0x78, 0x0f, + 0xc6, 0xf8, 0x59, 0x97, 0x83, 0xb1, 0x39, 0xa3, 0xf3, 0x93, 0xe2, 0xcb, 0xd3, 0x8b, 0x56, 0x7b, + 0x6c, 0x03, 0x95, 0x91, 0xda, 0x94, 0x1f, 0xd2, 0x91, 0xb4, 0xd7, 0x20, 0xd5, 0x8b, 0x18, 0xa9, + 0xfe, 0x9b, 0x7c, 0x02, 0x13, 0x8b, 0xfe, 0x51, 0x8b, 0xc9, 0x44, 0x10, 0xf7, 0x09, 0x03, 0x88, + 0xa8, 0xd7, 0x28, 0x5c, 0xed, 0xb1, 0x13, 0xe8, 0x64, 0x13, 0x26, 0xef, 0x37, 0xdb, 0xe1, 0x61, + 0xc5, 0x6b, 0x2c, 0x36, 0xfd, 0x50, 0x72, 0xe9, 0x17, 0x06, 0x08, 0xb1, 0xbc, 0xa5, 0x31, 0x56, + 0x7b, 0xec, 0x2c, 0x42, 0x72, 0x03, 0x06, 0x96, 0x9f, 0xb2, 0x65, 0x57, 0xfa, 0xb9, 0x08, 0x37, + 0xbc, 0x2d, 0x8f, 0x6e, 0x3d, 0x5e, 0xed, 0xb1, 0x79, 0xe9, 0xc2, 0x08, 0x0c, 0xc9, 0x73, 0xf2, + 0x1d, 0xa6, 0x12, 0x2b, 0x71, 0x56, 0x23, 0x27, 0x6a, 0x87, 0x64, 0x16, 0x86, 0x77, 0x5b, 0xec, + 0xf8, 0x26, 0x0d, 0x0c, 0xb6, 0xfa, 0x6d, 0xbd, 0x61, 0x4a, 0x9a, 0xcc, 0xe9, 0xb6, 0x69, 0x8e, + 0x1c, 0x03, 0xac, 0x55, 0x53, 0xb8, 0x9d, 0xb1, 0x8d, 0x7a, 0x7b, 0x13, 0xf5, 0x16, 0x93, 0xb2, + 0xb6, 0xa6, 0x33, 0x85, 0x67, 0x7d, 0x0e, 0x57, 0x76, 0x5b, 0x21, 0x0d, 0xa2, 0x4a, 0xab, 0xd5, + 0x74, 0xeb, 0xfc, 0x9e, 0x0c, 0xcf, 0xd3, 0x72, 0xb2, 0xbc, 0x03, 0x83, 0xe2, 0x86, 0x8c, 0x4f, + 0x13, 0x39, 0x07, 0x2b, 0xad, 0x96, 0x38, 0xc5, 0xbf, 0xc9, 0x95, 0x73, 0x7e, 0x2e, 0xb7, 0x05, + 0xb6, 0xf5, 0xbb, 0x05, 0xb8, 0xc2, 0xbf, 0x80, 0x5c, 0xd6, 0xdf, 0x83, 0x11, 0xf4, 0x82, 0x6b, + 0x39, 0x75, 0xf9, 0x4d, 0x70, 0x77, 0x40, 0x09, 0xb4, 0xe3, 0x72, 0xcd, 0xbf, 0xb0, 0x37, 0xdf, + 0xbf, 0x50, 0x7e, 0x60, 0x7d, 0x99, 0x1f, 0xd8, 0x67, 0x60, 0x89, 0x16, 0x35, 0x9b, 0xa9, 0x46, + 0x85, 0x2f, 0xd2, 0x2a, 0xeb, 0xbf, 0xf6, 0xc2, 0xcc, 0x0a, 0xf5, 0x68, 0xe0, 0x60, 0x3f, 0x0d, + 0x7b, 0x91, 0xee, 0x67, 0x54, 0xe8, 0xe8, 0x67, 0x54, 0x96, 0x16, 0xb8, 0x5e, 0xb4, 0xc0, 0xa5, + 0x9c, 0xa6, 0xd8, 0x71, 0x71, 0xd7, 0x5e, 0x13, 0xdd, 0xc2, 0xe3, 0x62, 0x3b, 0x70, 0xd1, 0xc6, + 0x4e, 0xd6, 0x62, 0x1f, 0xa5, 0xfe, 0xae, 0xa6, 0xb8, 0x49, 0x71, 0x8b, 0x39, 0x24, 0x7c, 0x94, + 0x4c, 0xcf, 0xa4, 0x4d, 0x18, 0xe4, 0x86, 0x43, 0xbc, 0x66, 0x1a, 0x9d, 0xbf, 0x25, 0xbe, 0xa9, + 0x9c, 0x0e, 0x0a, 0x2b, 0x23, 0x6e, 0xec, 0x7c, 0x0a, 0x44, 0x08, 0xb0, 0x05, 0x97, 0xd9, 0xcf, + 0x60, 0x54, 0x43, 0x39, 0xcd, 0xde, 0xaf, 0x0c, 0x98, 0x4c, 0x63, 0xf4, 0x0e, 0xb8, 0x2d, 0x54, + 0xdb, 0xfb, 0xad, 0x0f, 0xa0, 0x94, 0x6e, 0x8d, 0x30, 0x5a, 0x75, 0xb3, 0x91, 0x59, 0x4b, 0x30, + 0xb5, 0x42, 0x23, 0x9c, 0xb8, 0xf8, 0x11, 0x69, 0xbe, 0x76, 0x89, 0xef, 0x4c, 0xae, 0xaa, 0xf2, + 0xc6, 0x48, 0xff, 0x4a, 0xab, 0x30, 0x9d, 0xe0, 0x22, 0xea, 0x7f, 0x1f, 0x86, 0x04, 0x48, 0xad, + 0xa8, 0xc2, 0x61, 0x97, 0xee, 0x8b, 0x82, 0xbd, 0x79, 0x3e, 0x6f, 0x05, 0x67, 0x5b, 0x12, 0x58, + 0x87, 0x70, 0x81, 0x6d, 0xb3, 0x31, 0x57, 0x35, 0x1d, 0x2f, 0xc1, 0x48, 0x8b, 0x29, 0x0a, 0xa1, + 0xfb, 0x13, 0x3e, 0x8d, 0x06, 0xec, 0x61, 0x06, 0xa8, 0xba, 0x3f, 0xa1, 0xe4, 0x32, 0x00, 0x16, + 0x62, 0x37, 0xc5, 0x2a, 0x80, 0xe8, 0xdc, 0x28, 0x48, 0x00, 0x3d, 0xf5, 0xf8, 0xbc, 0xb1, 0xf1, + 0x6f, 0x2b, 0x80, 0x99, 0x54, 0x4d, 0xa2, 0x03, 0x77, 0x60, 0x58, 0xaa, 0xb0, 0x09, 0x73, 0xbd, + 0xde, 0x03, 0x5b, 0x21, 0x91, 0x57, 0xe1, 0x9c, 0x47, 0xbf, 0x89, 0x6a, 0xa9, 0x36, 0x8c, 0x33, + 0xf0, 0xb6, 0x6c, 0x87, 0xf5, 0x2b, 0x68, 0xa2, 0xad, 0x7a, 0xfe, 0xb3, 0xc7, 0x4d, 0xe7, 0x09, + 0x4d, 0x55, 0xfc, 0x11, 0x0c, 0x57, 0xbb, 0x57, 0xcc, 0x3f, 0x1f, 0x59, 0xb9, 0xad, 0x48, 0xac, + 0x26, 0xcc, 0xb2, 0x2e, 0x55, 0x2b, 0x1b, 0xeb, 0x6b, 0x8d, 0xed, 0xef, 0x5a, 0x80, 0x4f, 0xe1, + 0x52, 0x66, 0x6d, 0xdf, 0xb5, 0x10, 0xff, 0x79, 0x3f, 0xcc, 0xf0, 0xcd, 0x24, 0x3d, 0x83, 0x4f, + 0xbf, 0xd4, 0xfc, 0x52, 0x6e, 0x3b, 0xef, 0x66, 0xdc, 0x76, 0x22, 0x89, 0x7e, 0xdb, 0x69, 0xdc, + 0x71, 0xbe, 0x9b, 0x7d, 0xc7, 0x89, 0x76, 0x22, 0xf3, 0x8e, 0x33, 0x79, 0xb3, 0xb9, 0x9c, 0x7f, + 0xb3, 0xc9, 0xef, 0x98, 0xd3, 0x37, 0x9b, 0x59, 0xf7, 0x99, 0x09, 0x77, 0xa9, 0xe1, 0x97, 0xeb, + 0x2e, 0xf5, 0x2a, 0x0c, 0x55, 0x5a, 0x2d, 0xcd, 0xfd, 0x10, 0x87, 0xc7, 0x69, 0xb5, 0xb8, 0xf0, + 0x64, 0xa1, 0x5c, 0xe7, 0x21, 0x63, 0x9d, 0x7f, 0x0f, 0x60, 0x11, 0x1f, 0x49, 0xe0, 0xc0, 0x8d, + 0x22, 0x06, 0x6a, 0xf8, 0xfc, 0xe9, 0x04, 0x0e, 0x9c, 0x6e, 0x01, 0x89, 0x91, 0xb9, 0x62, 0x6f, + 0xed, 0x41, 0x29, 0x3d, 0x7d, 0x5e, 0xc2, 0xd2, 0xf5, 0xa7, 0x05, 0xb8, 0x2c, 0x94, 0x9c, 0xc4, + 0x07, 0x7e, 0xf6, 0xd9, 0xf9, 0x36, 0x8c, 0x09, 0xda, 0x9d, 0xf8, 0x43, 0xe0, 0xd7, 0xcb, 0x72, + 0x31, 0xe6, 0x2b, 0xba, 0x81, 0x46, 0xde, 0x86, 0x61, 0xfc, 0x23, 0xbe, 0x62, 0x61, 0x92, 0x19, + 0x41, 0xd4, 0x5a, 0xf2, 0xa2, 0x45, 0xa1, 0x5a, 0x5f, 0xc3, 0x95, 0xbc, 0x86, 0xbf, 0x04, 0xb9, + 0xfc, 0xcb, 0x02, 0x5c, 0x12, 0xec, 0x8d, 0xa5, 0xe2, 0x85, 0x76, 0x9d, 0x33, 0x38, 0x2d, 0x3f, + 0x80, 0x51, 0x56, 0xa1, 0x6c, 0x77, 0x9f, 0xd8, 0x5a, 0xc5, 0xc9, 0x21, 0x2e, 0x59, 0x72, 0x22, + 0x47, 0x78, 0xc2, 0x38, 0x47, 0x4d, 0x69, 0xbc, 0xb0, 0x75, 0x62, 0xeb, 0x4b, 0x98, 0xcb, 0xee, + 0xc2, 0x4b, 0x90, 0xcf, 0x03, 0x98, 0xcd, 0xd8, 0x14, 0x5e, 0x6c, 0x4f, 0xfe, 0x02, 0x2e, 0x65, + 0xf2, 0x7a, 0x09, 0xcd, 0x5c, 0x65, 0x1a, 0x47, 0xf4, 0x12, 0x86, 0xd0, 0x7a, 0x04, 0x17, 0x33, + 0x38, 0xbd, 0x84, 0x26, 0xae, 0xc0, 0x8c, 0xd2, 0xb4, 0xbf, 0x55, 0x0b, 0x37, 0xe0, 0x32, 0x67, + 0xf4, 0x72, 0x46, 0xe5, 0x21, 0x5c, 0x12, 0xec, 0x5e, 0x82, 0xf4, 0x56, 0x61, 0x2e, 0x3e, 0x50, + 0x67, 0xe8, 0x49, 0xa7, 0x5e, 0x64, 0xac, 0x75, 0xb8, 0x1a, 0x73, 0xca, 0x51, 0x1a, 0x4e, 0xcf, + 0x8d, 0xab, 0x83, 0xf1, 0x28, 0xbd, 0x94, 0x11, 0x7d, 0x04, 0x17, 0x0c, 0xa6, 0x2f, 0x4d, 0x55, + 0x5a, 0x83, 0x49, 0xce, 0xd8, 0x54, 0x9d, 0xe7, 0x75, 0xd5, 0x79, 0x74, 0xfe, 0x7c, 0xcc, 0x12, + 0xc1, 0x7b, 0x6f, 0x66, 0x68, 0xd3, 0x1b, 0xa8, 0x4d, 0x4b, 0x94, 0xb8, 0x85, 0x6f, 0xc3, 0x20, + 0x87, 0x88, 0xf6, 0x65, 0x30, 0xe3, 0x87, 0x05, 0x4e, 0x26, 0x90, 0xad, 0x1f, 0xc2, 0x65, 0x7e, + 0x12, 0x8d, 0xef, 0x12, 0xcd, 0xd3, 0xe2, 0x47, 0x89, 0x83, 0xe8, 0x45, 0xc1, 0x37, 0x89, 0x9f, + 0x73, 0x1e, 0xdd, 0x97, 0x73, 0x3b, 0x8f, 0xff, 0xa9, 0x1e, 0xb0, 0xc9, 0x03, 0x66, 0x6f, 0xe6, + 0x01, 0xf3, 0x3a, 0x5c, 0x53, 0x07, 0xcc, 0x64, 0x35, 0x72, 0x6a, 0x59, 0x5f, 0xc2, 0x25, 0xde, + 0x51, 0xe9, 0xdd, 0x67, 0x36, 0xe3, 0x83, 0x44, 0x37, 0x67, 0x44, 0x37, 0x4d, 0xec, 0x9c, 0x4e, + 0xfe, 0x7f, 0x05, 0xf9, 0xc9, 0x65, 0x33, 0xff, 0x65, 0x9f, 0xb8, 0x37, 0xa1, 0xac, 0x04, 0x62, + 0xb6, 0xe8, 0xc5, 0x8e, 0xdb, 0x1b, 0x30, 0xad, 0xb3, 0x71, 0xeb, 0x74, 0xef, 0x1e, 0x5e, 0xf2, + 0xbc, 0xc5, 0x3e, 0x0b, 0x04, 0xc8, 0x69, 0x57, 0xca, 0x90, 0x1b, 0xe2, 0xdb, 0x0a, 0xd3, 0xaa, + 0xc1, 0x5c, 0x7a, 0x28, 0xdc, 0xba, 0x7c, 0x55, 0x40, 0x3e, 0x61, 0x9f, 0x30, 0x42, 0xc4, 0x60, + 0xe4, 0x32, 0x95, 0xdf, 0x31, 0x27, 0x97, 0x54, 0x96, 0x25, 0x97, 0x9a, 0x44, 0xff, 0x59, 0xed, + 0x72, 0x3e, 0xfc, 0x3a, 0x10, 0x59, 0xb4, 0x58, 0xb5, 0x65, 0xd5, 0x17, 0xa1, 0x6f, 0xb1, 0x6a, + 0x8b, 0xe7, 0x4c, 0xa8, 0x09, 0xd6, 0xc3, 0xc0, 0x66, 0xb0, 0xa4, 0x46, 0xde, 0x7b, 0x0a, 0x8d, + 0xfc, 0x41, 0xff, 0x70, 0x5f, 0xb1, 0xdf, 0x26, 0x55, 0xf7, 0xc0, 0x7b, 0xe4, 0x46, 0x87, 0xaa, + 0xc2, 0x8a, 0xf5, 0x15, 0x4c, 0x1a, 0xd5, 0x8b, 0xaf, 0xb8, 0xe3, 0x3b, 0x2c, 0xa6, 0xcf, 0x2e, + 0x56, 0xd0, 0x41, 0x05, 0x4d, 0x16, 0x63, 0x7c, 0xbd, 0xa9, 0x3b, 0x35, 0x7c, 0xe4, 0x6b, 0xcb, + 0x42, 0xeb, 0x1f, 0xf6, 0x6b, 0xdc, 0xb5, 0xd7, 0x6d, 0x1d, 0x7a, 0x77, 0x0f, 0x80, 0xcf, 0x10, + 0xad, 0x73, 0x4c, 0x01, 0x1c, 0x15, 0x7e, 0x1f, 0x7c, 0x49, 0xb6, 0x35, 0xa4, 0xd3, 0xbe, 0x7e, + 0x13, 0xae, 0xc0, 0x9c, 0x48, 0x3e, 0xf8, 0x54, 0xae, 0xc0, 0x82, 0x75, 0x68, 0xeb, 0x48, 0xe4, + 0x87, 0xc9, 0x27, 0x1a, 0x03, 0x78, 0xa7, 0xf4, 0x8a, 0xbc, 0x64, 0x4e, 0xf7, 0xed, 0x6c, 0xaf, + 0x34, 0x9e, 0xc1, 0x34, 0xa3, 0x75, 0x1f, 0xe3, 0xc1, 0x62, 0xf9, 0x9b, 0x88, 0x7a, 0x7c, 0x6d, + 0x1f, 0xc4, 0x7a, 0x6e, 0x74, 0xa8, 0x27, 0x46, 0x16, 0xf6, 0xf7, 0x98, 0x4f, 0x8d, 0xaa, 0x32, + 0x3b, 0x9b, 0x3f, 0x4e, 0x22, 0x7b, 0x7d, 0xd9, 0x6b, 0xb4, 0x7c, 0x57, 0x1d, 0x98, 0xf8, 0x24, + 0x0a, 0x9a, 0x35, 0x2a, 0xe0, 0xb6, 0x8e, 0x64, 0xbd, 0xda, 0xd1, 0xc1, 0x7c, 0x18, 0xfa, 0x77, + 0x16, 0x77, 0xd6, 0x8b, 0x05, 0xeb, 0x0e, 0x80, 0x56, 0x13, 0xc0, 0xe0, 0xe6, 0x96, 0xbd, 0x51, + 0x59, 0x2f, 0xf6, 0x90, 0x69, 0x38, 0xff, 0x68, 0x6d, 0x73, 0x69, 0xeb, 0x51, 0xb5, 0x56, 0xdd, + 0xa8, 0xd8, 0x3b, 0x8b, 0x15, 0x7b, 0xa9, 0x58, 0xb0, 0xbe, 0x86, 0x29, 0xb3, 0x87, 0x2f, 0x75, + 0x12, 0x46, 0x30, 0xa9, 0xf4, 0x99, 0x07, 0x8f, 0x76, 0x34, 0xdf, 0x50, 0x71, 0xf8, 0x4b, 0xfa, + 0x38, 0x89, 0x63, 0xa2, 0xf8, 0x8c, 0x34, 0x24, 0xf2, 0x3a, 0x57, 0x0b, 0x92, 0xef, 0x97, 0x99, + 0x5a, 0x50, 0x8b, 0xf5, 0x02, 0x5c, 0xfa, 0x7e, 0x00, 0x53, 0x66, 0xad, 0xa7, 0xb5, 0x52, 0xbd, + 0x82, 0x4e, 0xb3, 0xda, 0xe3, 0x26, 0x42, 0xf4, 0x6b, 0x03, 0xb1, 0xb2, 0xfe, 0x00, 0x8a, 0x02, + 0x2b, 0xde, 0x79, 0xaf, 0x4b, 0x33, 0x62, 0x21, 0xe3, 0x29, 0xa6, 0xf4, 0x0f, 0xf7, 0xa1, 0xc8, + 0x56, 0x4c, 0x41, 0xc9, 0x2b, 0x98, 0x82, 0x81, 0xf5, 0xf8, 0x3a, 0xc7, 0xe6, 0x3f, 0xf0, 0x8d, + 0x4f, 0xe4, 0x04, 0x91, 0xf4, 0x28, 0x1b, 0xb1, 0xd5, 0x6f, 0xf2, 0x3a, 0x0c, 0xde, 0x77, 0x9b, + 0x91, 0x30, 0x8d, 0xc4, 0x9b, 0x3c, 0x63, 0xcb, 0x0b, 0x6c, 0x81, 0x60, 0xd9, 0x70, 0x5e, 0xab, + 0xf0, 0x0c, 0x4d, 0x25, 0x25, 0x18, 0xda, 0xa4, 0xdf, 0x68, 0xf5, 0xcb, 0x9f, 0xd6, 0x3b, 0x70, + 0x5e, 0x78, 0xeb, 0x69, 0x62, 0xba, 0x26, 0x5e, 0x8c, 0x17, 0x8c, 0x67, 0xab, 0x82, 0x25, 0x16, + 0x31, 0xba, 0xdd, 0x56, 0xe3, 0x05, 0xe9, 0xd8, 0x46, 0x71, 0x46, 0xba, 0xd7, 0xe4, 0x2d, 0x50, + 0xb7, 0xe1, 0xfc, 0xf3, 0x02, 0x94, 0x12, 0x56, 0x86, 0xc5, 0x43, 0xa7, 0xd9, 0xa4, 0xde, 0x01, + 0x25, 0x37, 0xa1, 0x7f, 0x67, 0x6b, 0x67, 0x5b, 0x58, 0x49, 0xa5, 0x03, 0x00, 0x03, 0x29, 0x1c, + 0x1b, 0x31, 0xc8, 0x43, 0x38, 0x2f, 0xfd, 0x71, 0x55, 0x91, 0x18, 0xa1, 0xcb, 0x9d, 0xbd, 0x7b, + 0xd3, 0x74, 0xe4, 0x2d, 0x61, 0x12, 0xf9, 0x71, 0xdb, 0x0d, 0x68, 0x03, 0x2d, 0x3f, 0xf1, 0x6d, + 0xba, 0x56, 0x62, 0xeb, 0x68, 0xfc, 0x7d, 0xaf, 0xf5, 0xfb, 0x05, 0x98, 0xc9, 0xb1, 0x9a, 0x90, + 0xd7, 0x8d, 0xee, 0x4c, 0x6a, 0xdd, 0x91, 0x28, 0xab, 0x3d, 0xa2, 0x3f, 0x8b, 0x9a, 0x93, 0x72, + 0xdf, 0x19, 0x9c, 0x94, 0x57, 0x7b, 0x62, 0xc7, 0xe4, 0x05, 0x80, 0x61, 0x09, 0xb7, 0xce, 0xc1, + 0xb8, 0x21, 0x37, 0xcb, 0x82, 0x31, 0xbd, 0x66, 0x36, 0x38, 0x8b, 0x7e, 0x43, 0x0d, 0x0e, 0xfb, + 0xdb, 0xfa, 0xbd, 0x02, 0x4c, 0x61, 0x17, 0x0f, 0x5c, 0xb6, 0xf4, 0xc5, 0x12, 0x9a, 0x37, 0x7a, + 0x32, 0x67, 0xf4, 0x24, 0x81, 0xab, 0xba, 0xf4, 0x7e, 0xaa, 0x4b, 0x73, 0x59, 0x5d, 0xc2, 0xe9, + 0xed, 0xfa, 0x9e, 0xd1, 0x13, 0xed, 0x2a, 0xea, 0x0f, 0x0a, 0x30, 0xa9, 0xb5, 0x49, 0xb5, 0xff, + 0x9e, 0xd1, 0xa4, 0x4b, 0x19, 0x4d, 0x4a, 0x09, 0x79, 0x21, 0xd5, 0xa2, 0x57, 0x3a, 0xb5, 0xa8, + 0xab, 0x8c, 0xff, 0x73, 0x01, 0xa6, 0x33, 0x65, 0x40, 0x2e, 0x30, 0xdd, 0xb6, 0x1e, 0xd0, 0x48, + 0x88, 0x57, 0xfc, 0x62, 0xf0, 0xb5, 0x30, 0x6c, 0xd3, 0x40, 0x7c, 0xe7, 0xe2, 0x17, 0x79, 0x05, + 0xc6, 0xb7, 0x69, 0xe0, 0xfa, 0x0d, 0xee, 0xbe, 0xce, 0xfd, 0x42, 0xc7, 0x6d, 0x13, 0x48, 0xe6, + 0x60, 0x44, 0xf9, 0x35, 0x72, 0xfb, 0xa4, 0x1d, 0x03, 0x18, 0xef, 0x25, 0xf7, 0x80, 0x5f, 0x6a, + 0x30, 0x62, 0xf1, 0x8b, 0x2d, 0x2e, 0xd2, 0x5a, 0x38, 0xc8, 0x17, 0x17, 0x69, 0x0a, 0xbc, 0x00, + 0x83, 0x9f, 0xd9, 0x38, 0x09, 0x30, 0xaa, 0x82, 0x2d, 0x7e, 0x91, 0x09, 0x74, 0x40, 0xc6, 0x17, + 0x0f, 0xe8, 0x78, 0xfc, 0x3e, 0x4c, 0x65, 0xc9, 0x35, 0x6b, 0x0a, 0x09, 0xda, 0x5e, 0x45, 0xfb, + 0x25, 0x4c, 0x56, 0x1a, 0x8d, 0x8d, 0xfb, 0x15, 0xee, 0x73, 0x20, 0x46, 0x95, 0x7f, 0x3c, 0xdc, + 0x5e, 0x27, 0x54, 0xb6, 0xfe, 0x35, 0xcf, 0x8d, 0xec, 0xc9, 0xe5, 0x6f, 0xdc, 0x30, 0x72, 0xbd, + 0x03, 0xcd, 0xa8, 0x68, 0x5f, 0xd8, 0xa4, 0xcf, 0x32, 0xa6, 0x00, 0xdb, 0x4d, 0x4d, 0xde, 0x1c, + 0x9e, 0xc1, 0x7c, 0x4a, 0x63, 0x1b, 0x2f, 0x25, 0x33, 0x26, 0xdf, 0xb8, 0xa0, 0xaf, 0x52, 0x7f, + 0x62, 0xfd, 0x00, 0x2e, 0xf0, 0x25, 0xad, 0x53, 0xe3, 0x45, 0xb3, 0x75, 0x1b, 0xa8, 0xf5, 0xae, + 0xb4, 0x52, 0x74, 0x6c, 0x99, 0x3d, 0x66, 0xb4, 0x05, 0xab, 0xfc, 0x2f, 0x05, 0x98, 0x4d, 0x90, + 0x56, 0x9f, 0x7b, 0x75, 0xb9, 0x9e, 0xbe, 0x9a, 0x74, 0xf0, 0x46, 0x3d, 0x80, 0x1b, 0xff, 0xdc, + 0x86, 0xf2, 0xf1, 0x26, 0x77, 0x00, 0x38, 0xb1, 0xb6, 0x7d, 0xa3, 0xe9, 0x5b, 0x38, 0xd9, 0xe0, + 0x06, 0xae, 0xa1, 0x90, 0x36, 0x64, 0xc9, 0x5d, 0x7c, 0x23, 0xdd, 0x6c, 0xc3, 0x18, 0x49, 0x84, + 0x0a, 0xf2, 0x5a, 0x8e, 0x91, 0x38, 0x8b, 0xbf, 0xf5, 0x3b, 0x7d, 0x30, 0xa3, 0x0f, 0xe0, 0x8b, + 0xf4, 0x75, 0x1b, 0x46, 0x17, 0x7d, 0x2f, 0xa2, 0xdf, 0x44, 0x5a, 0x24, 0x07, 0xa2, 0x6e, 0xda, + 0x55, 0x89, 0x50, 0x1d, 0x39, 0xa0, 0xc6, 0xf4, 0x18, 0xc3, 0x59, 0x30, 0x46, 0x24, 0x8b, 0x30, + 0xbe, 0x49, 0x9f, 0xa5, 0x04, 0x88, 0x0e, 0x8b, 0x1e, 0x7d, 0x56, 0xd3, 0x84, 0xa8, 0x7b, 0x91, + 0x19, 0x34, 0x64, 0x1f, 0x26, 0xe4, 0xe4, 0x32, 0x84, 0x39, 0xab, 0xef, 0x2a, 0xe6, 0x74, 0xe6, + 0x91, 0x0e, 0x58, 0x0d, 0x39, 0x32, 0x4c, 0x70, 0x64, 0x5d, 0xe7, 0x35, 0xf2, 0xc7, 0xfb, 0xe6, + 0xb6, 0xa5, 0x95, 0x18, 0xee, 0xa0, 0xc9, 0x47, 0xfb, 0x3a, 0x0b, 0x6b, 0x1b, 0x4a, 0xe9, 0xf1, + 0x10, 0xb5, 0xbd, 0x05, 0x83, 0x1c, 0x2a, 0xd4, 0x00, 0x19, 0xa4, 0x47, 0x61, 0xf3, 0x73, 0x3a, + 0xaf, 0xc6, 0x16, 0xb8, 0xd6, 0x2a, 0xda, 0x4e, 0x14, 0x8e, 0x52, 0xc4, 0xee, 0x26, 0x87, 0x17, + 0x3d, 0x6d, 0xe5, 0xf0, 0xea, 0x7e, 0x26, 0xf2, 0xe1, 0xc2, 0x22, 0x9a, 0x9f, 0x74, 0x4e, 0xa2, + 0x61, 0xb7, 0x60, 0x48, 0x80, 0x12, 0xe1, 0x83, 0xe2, 0xcf, 0x4f, 0x22, 0x58, 0xef, 0xc3, 0x45, + 0xb4, 0x85, 0xb9, 0xde, 0x41, 0x93, 0xee, 0x86, 0xc6, 0xd3, 0x83, 0x6e, 0x9f, 0xf5, 0x87, 0x30, + 0x9b, 0x45, 0xdb, 0xf5, 0xcb, 0xe6, 0x01, 0x3d, 0x7e, 0xa7, 0x0f, 0xa6, 0xd6, 0x42, 0x5d, 0x99, + 0x50, 0x41, 0x3d, 0x32, 0x02, 0x4d, 0xa0, 0x4c, 0x56, 0x7b, 0xb2, 0x02, 0x49, 0xbc, 0xa5, 0xbd, + 0xaa, 0xec, 0xed, 0x14, 0x41, 0x82, 0x6d, 0x5b, 0xea, 0x5d, 0xe5, 0xab, 0xd0, 0xbf, 0xc9, 0x96, + 0xea, 0x3e, 0x31, 0x76, 0x9c, 0x82, 0x81, 0xf0, 0x55, 0x23, 0xdb, 0x22, 0xd9, 0x0f, 0x72, 0x3f, + 0xf5, 0x76, 0xb2, 0xbf, 0x7b, 0x84, 0x84, 0xd5, 0x9e, 0xd4, 0x33, 0xca, 0x77, 0x60, 0xb4, 0xd2, + 0x38, 0xe2, 0x1e, 0x81, 0xbe, 0x97, 0xf8, 0x2c, 0xb5, 0x92, 0xd5, 0x1e, 0x5b, 0x47, 0x64, 0x27, + 0xdc, 0x4a, 0xab, 0x85, 0x1b, 0x55, 0x56, 0xd4, 0x88, 0xd5, 0x1e, 0xee, 0x60, 0xff, 0x03, 0xed, + 0x45, 0xb0, 0x78, 0x98, 0x93, 0xf7, 0xa0, 0x79, 0xb5, 0xc7, 0x8e, 0x71, 0x17, 0x86, 0x61, 0x70, + 0xc7, 0x09, 0x0e, 0x68, 0x64, 0x7d, 0x09, 0xb3, 0xc2, 0xbb, 0x85, 0x9b, 0x0c, 0xd1, 0x07, 0x26, + 0x8c, 0x1d, 0x98, 0x3a, 0x79, 0xa4, 0x5c, 0x01, 0xc0, 0x03, 0xc2, 0x9a, 0xd7, 0xa0, 0xdf, 0x08, + 0xf7, 0x3a, 0x0d, 0x62, 0xbd, 0x0d, 0x23, 0x4a, 0xb4, 0xa8, 0x05, 0x6b, 0xbb, 0x24, 0x8a, 0x79, + 0xca, 0x78, 0x65, 0x2a, 0x9f, 0x96, 0x5e, 0x34, 0x84, 0x26, 0x02, 0xc8, 0x70, 0xb5, 0xd9, 0x85, + 0xe9, 0xc4, 0xec, 0x89, 0xe3, 0x13, 0x28, 0xc5, 0x95, 0xfb, 0xff, 0xa9, 0xdf, 0x49, 0xbd, 0xb6, + 0xf7, 0x54, 0x7a, 0xad, 0xf5, 0x4f, 0x7a, 0xf1, 0xc4, 0x95, 0x92, 0x47, 0xc2, 0x78, 0xa5, 0x1b, + 0xd0, 0x16, 0x60, 0x04, 0x7b, 0xbf, 0x24, 0xdf, 0xa3, 0x75, 0x76, 0xce, 0x18, 0xfe, 0xd9, 0x71, + 0xb9, 0x07, 0x3d, 0x32, 0x62, 0x32, 0xf2, 0x31, 0x0c, 0x2d, 0x7b, 0x0d, 0xe4, 0xd0, 0x77, 0x06, + 0x0e, 0x92, 0x88, 0x8d, 0x09, 0x36, 0x79, 0x87, 0x7d, 0xfb, 0xdc, 0xe6, 0x61, 0x6b, 0x90, 0xf8, + 0xe8, 0x37, 0x90, 0x77, 0xf4, 0x1b, 0x4c, 0x1c, 0xfd, 0x2c, 0x18, 0xd8, 0x0a, 0x1a, 0x62, 0x82, + 0x4d, 0xcc, 0x8f, 0x09, 0xc1, 0x21, 0xcc, 0xe6, 0x45, 0xd6, 0x7f, 0x2b, 0xc0, 0xcc, 0x0a, 0x8d, + 0x32, 0xe7, 0x90, 0x21, 0x95, 0xc2, 0xb7, 0x96, 0x4a, 0xef, 0x8b, 0x48, 0x45, 0xf5, 0xba, 0x2f, + 0xaf, 0xd7, 0xfd, 0x79, 0xbd, 0x1e, 0xc8, 0xef, 0xf5, 0x0a, 0x0c, 0xf2, 0xae, 0xb2, 0xe3, 0xed, + 0x5a, 0x44, 0x8f, 0xe2, 0xe3, 0xad, 0xee, 0x5a, 0x66, 0xf3, 0x32, 0xa6, 0x81, 0xae, 0x3b, 0xa1, + 0x7e, 0xbc, 0x15, 0x3f, 0xad, 0x1f, 0xe1, 0x4b, 0xd6, 0x75, 0xbf, 0xfe, 0x44, 0x33, 0x93, 0x0e, + 0xf1, 0x2f, 0x34, 0x69, 0x56, 0x67, 0x58, 0xbc, 0xc4, 0x96, 0x18, 0xe4, 0x2a, 0x8c, 0xae, 0x79, + 0xf7, 0xfd, 0xa0, 0x4e, 0xb7, 0xbc, 0x26, 0xe7, 0x3e, 0x6c, 0xeb, 0x20, 0x61, 0x3e, 0x10, 0x35, + 0xc4, 0x67, 0x72, 0x04, 0x24, 0xce, 0xe4, 0x0c, 0xb6, 0x37, 0x6f, 0xf3, 0x32, 0x61, 0x9d, 0x60, + 0x7f, 0x77, 0x3a, 0xce, 0xaa, 0x73, 0x6f, 0x37, 0xc4, 0x7d, 0xb8, 0x68, 0xd3, 0x56, 0xd3, 0x61, + 0xca, 0xe0, 0x91, 0xcf, 0xf1, 0x55, 0x9f, 0xaf, 0x66, 0xbc, 0x42, 0x33, 0x1d, 0x0d, 0x54, 0x93, + 0x7b, 0x3b, 0x34, 0xf9, 0x08, 0xae, 0xad, 0xd0, 0xc8, 0x5c, 0x89, 0x63, 0x23, 0xac, 0xe8, 0xfc, + 0x2a, 0x0c, 0x87, 0xa6, 0x01, 0x59, 0xbe, 0xaa, 0xca, 0x24, 0xdc, 0x7b, 0x53, 0x5e, 0xb1, 0x08, + 0x3e, 0xea, 0x2f, 0xeb, 0x13, 0x28, 0xe7, 0x55, 0x77, 0x3a, 0x3f, 0x50, 0x17, 0xae, 0xe6, 0x33, + 0x10, 0xcd, 0x5d, 0x06, 0x69, 0x6c, 0x16, 0x9f, 0x50, 0xb7, 0xd6, 0x9a, 0xf6, 0x69, 0xf1, 0x87, + 0xb5, 0x20, 0x3d, 0xe2, 0xbe, 0x45, 0x73, 0x6b, 0x78, 0x8f, 0x6b, 0x32, 0x88, 0xe5, 0x5a, 0x81, + 0x61, 0x09, 0x13, 0x72, 0x9d, 0xc9, 0x6c, 0xa9, 0x14, 0x68, 0x43, 0x32, 0x50, 0x64, 0xd6, 0x8f, + 0xe4, 0x9d, 0x86, 0x49, 0x71, 0xba, 0x67, 0x99, 0xa7, 0xb9, 0xc4, 0xb0, 0x7c, 0xb8, 0x68, 0xf2, + 0xd6, 0x6d, 0xd5, 0x45, 0xcd, 0x56, 0xcd, 0x4d, 0xd4, 0x57, 0x4d, 0xdb, 0x69, 0xaf, 0x98, 0x97, + 0x31, 0x88, 0x5c, 0xd1, 0x2d, 0xd2, 0x63, 0xe9, 0x77, 0x9e, 0x77, 0x61, 0x36, 0xab, 0x42, 0xed, + 0x00, 0xa9, 0xcc, 0x9e, 0x42, 0x51, 0x5a, 0x82, 0x2b, 0x32, 0xf0, 0x92, 0xef, 0x47, 0x61, 0x14, + 0x38, 0xad, 0x6a, 0x3d, 0x70, 0x5b, 0x31, 0x95, 0x05, 0x83, 0x1c, 0x22, 0x24, 0xc1, 0xef, 0x87, + 0x38, 0x8e, 0x28, 0xb1, 0x7e, 0xb3, 0x00, 0x96, 0xe1, 0xbc, 0x84, 0xe3, 0xbc, 0x1d, 0xf8, 0x4f, + 0xdd, 0x86, 0x76, 0x27, 0xf3, 0xba, 0x61, 0x0f, 0xe4, 0x6f, 0xe9, 0x92, 0x7e, 0xd3, 0x62, 0xcd, + 0xbc, 0x9b, 0xb0, 0xd1, 0x71, 0x8d, 0x15, 0x1d, 0x9a, 0xcc, 0x08, 0x37, 0xca, 0x76, 0xf7, 0x3f, + 0x0a, 0x70, 0xbd, 0x63, 0x1b, 0x44, 0x7f, 0xf6, 0xa1, 0x98, 0x2c, 0x13, 0x33, 0xa8, 0xac, 0x39, + 0x33, 0xa4, 0x39, 0xec, 0xdd, 0xe3, 0xce, 0xd9, 0xd2, 0xe9, 0xa7, 0xa5, 0x38, 0xa7, 0xf8, 0x9d, + 0xbd, 0xf5, 0xe4, 0x3d, 0x80, 0x1d, 0x3f, 0x72, 0x9a, 0x8b, 0x68, 0x39, 0xe8, 0x8b, 0x1d, 0xed, + 0x23, 0x06, 0xad, 0x25, 0x23, 0x27, 0x68, 0xc8, 0xd6, 0xa7, 0xf8, 0x5d, 0x67, 0x37, 0xfa, 0x74, + 0x9f, 0xda, 0x22, 0x5c, 0x4f, 0x5c, 0xa8, 0xbf, 0x00, 0x93, 0x08, 0xa6, 0x99, 0xf8, 0x99, 0xd2, + 0xbe, 0x12, 0xf8, 0xed, 0xd6, 0x2f, 0x67, 0xd4, 0xff, 0xac, 0xc0, 0x3d, 0x1c, 0xf5, 0x6a, 0xc5, + 0x40, 0x2f, 0x02, 0xc4, 0xd0, 0x84, 0xa7, 0xbb, 0x2a, 0xd8, 0xbb, 0xc7, 0xcf, 0xea, 0x68, 0x6a, + 0x3f, 0xe0, 0x0c, 0x34, 0xb2, 0x5f, 0xee, 0x48, 0xbe, 0x89, 0xb7, 0xe8, 0xaa, 0xf6, 0xd3, 0xc9, + 0xfd, 0x1d, 0x69, 0x38, 0x39, 0x23, 0xdd, 0x21, 0x4c, 0xb1, 0x15, 0xa0, 0xd2, 0x8e, 0x0e, 0xfd, + 0xc0, 0x8d, 0xe4, 0x9b, 0x0d, 0xb2, 0x2d, 0x1e, 0x9c, 0x73, 0xaa, 0x0f, 0x7f, 0x71, 0x5c, 0x7e, + 0xf7, 0x2c, 0x21, 0x31, 0x25, 0xcf, 0x1d, 0xf5, 0x48, 0xdd, 0x9a, 0x81, 0xbe, 0x45, 0x7b, 0x1d, + 0x17, 0x3c, 0x7b, 0x5d, 0x2d, 0x78, 0xf6, 0xba, 0xf5, 0xd7, 0xbd, 0x50, 0xe6, 0x21, 0x31, 0xd0, + 0xf9, 0x22, 0x36, 0x77, 0x68, 0xde, 0x1c, 0xa7, 0xb5, 0x4c, 0x24, 0x42, 0x5e, 0xf4, 0x9e, 0x26, + 0xe4, 0xc5, 0xaf, 0x41, 0x8e, 0xad, 0xeb, 0x14, 0xe6, 0x83, 0xd7, 0x4e, 0x8e, 0xcb, 0xd7, 0x63, + 0xf3, 0x01, 0x2f, 0xcd, 0xb2, 0x23, 0xe4, 0x54, 0x91, 0x36, 0x7c, 0xf4, 0xbf, 0x80, 0xe1, 0xe3, + 0x2e, 0x0c, 0xe1, 0x61, 0x66, 0x6d, 0x5b, 0xb8, 0x43, 0xe2, 0xf4, 0xc4, 0x08, 0x3a, 0x35, 0x57, + 0x8f, 0x94, 0x27, 0xd1, 0xac, 0xbf, 0xdb, 0x0b, 0x57, 0xf3, 0x65, 0x2e, 0xda, 0xb6, 0x04, 0x10, + 0xbb, 0x7d, 0x74, 0x72, 0x33, 0xc1, 0x6f, 0xe7, 0x19, 0xdd, 0x57, 0x6e, 0x5e, 0x1a, 0x1d, 0xd3, + 0x7d, 0xe4, 0x0b, 0xe1, 0xc4, 0x1d, 0x83, 0xf1, 0x70, 0x58, 0x04, 0x7a, 0x15, 0x20, 0x23, 0xd0, + 0xab, 0x80, 0x91, 0x7d, 0x98, 0xd9, 0x0e, 0xdc, 0xa7, 0x4e, 0x44, 0x1f, 0xd2, 0xe7, 0xfc, 0x05, + 0xcd, 0xb2, 0x78, 0x36, 0xc3, 0x9f, 0x7d, 0xdf, 0x3c, 0x39, 0x2e, 0xbf, 0xd2, 0xe2, 0x28, 0x18, + 0xcc, 0x8b, 0xbf, 0x59, 0xac, 0xa5, 0x5f, 0xd2, 0xe4, 0x31, 0xb2, 0xfe, 0x75, 0x01, 0x2e, 0xa1, + 0x5a, 0x2e, 0xec, 0xb5, 0xb2, 0xf2, 0x17, 0xf2, 0x36, 0xd4, 0x3b, 0x28, 0xe6, 0x22, 0x7a, 0x1b, + 0x1a, 0x2f, 0xa8, 0x6d, 0x03, 0x8d, 0xac, 0xc1, 0xa8, 0xf8, 0x8d, 0xdf, 0x5f, 0x1f, 0x1e, 0x08, + 0xa6, 0xb5, 0x05, 0x0b, 0xa7, 0x3a, 0xb7, 0x31, 0xe1, 0xc4, 0x16, 0xcc, 0xf0, 0xa1, 0xa1, 0xad, + 0xd3, 0x5a, 0x3f, 0xef, 0x85, 0xb9, 0x3d, 0x1a, 0xb8, 0x8f, 0x9f, 0xe7, 0x74, 0x66, 0x0b, 0xa6, + 0x24, 0x88, 0x87, 0xc5, 0x30, 0x3e, 0x31, 0x1e, 0xea, 0x51, 0x36, 0x55, 0xc4, 0xd5, 0x90, 0x5f, + 0x5c, 0x26, 0xe1, 0x19, 0xfc, 0x08, 0xdf, 0x82, 0xe1, 0x44, 0x60, 0x1a, 0x1c, 0x7f, 0xf9, 0x85, + 0xc6, 0x43, 0xb5, 0xda, 0x63, 0x2b, 0x4c, 0xf2, 0x5b, 0xf9, 0x17, 0x3f, 0xc2, 0x66, 0xd2, 0xcd, + 0x70, 0x8a, 0x1f, 0x2c, 0xfb, 0x58, 0x1d, 0xad, 0x34, 0xe3, 0x83, 0x5d, 0xed, 0xb1, 0xf3, 0x6a, + 0x5a, 0x18, 0x85, 0x91, 0x0a, 0x5e, 0x66, 0xb1, 0x93, 0xfb, 0x7f, 0xef, 0x85, 0x2b, 0xf2, 0x35, + 0x4c, 0x8e, 0x98, 0x3f, 0x87, 0x19, 0x09, 0xaa, 0xb4, 0x98, 0xc2, 0x40, 0x1b, 0xa6, 0xa4, 0x79, + 0xb8, 0x55, 0x29, 0x69, 0x47, 0xe0, 0xc4, 0xc2, 0xce, 0x23, 0x7f, 0x39, 0x66, 0xd3, 0x8f, 0xb3, + 0xc2, 0x04, 0xa1, 0xf9, 0x52, 0x5f, 0x33, 0x0d, 0xd1, 0x18, 0xeb, 0x67, 0x23, 0x65, 0x76, 0xed, + 0xff, 0xb6, 0x66, 0xd7, 0xd5, 0x9e, 0xa4, 0xe1, 0x75, 0x61, 0x02, 0xc6, 0x36, 0xe9, 0xb3, 0x58, + 0xee, 0xff, 0x77, 0x21, 0x11, 0xa2, 0x80, 0x69, 0x18, 0x3c, 0x56, 0x41, 0x21, 0x8e, 0x34, 0x83, + 0x21, 0x0a, 0x74, 0x0d, 0x83, 0xa3, 0xae, 0xc1, 0x10, 0xbf, 0xe1, 0x6d, 0x9c, 0xe2, 0x84, 0xaf, + 0x9e, 0xb5, 0xf0, 0xb7, 0x86, 0x0d, 0x7e, 0xd8, 0x17, 0xf4, 0xd6, 0x43, 0xb8, 0x26, 0x1c, 0x9f, + 0xcd, 0xc1, 0xc7, 0x8a, 0xce, 0xb8, 0x7d, 0x59, 0x0e, 0x5c, 0x59, 0xa1, 0xc9, 0xa5, 0xc7, 0x78, + 0xf6, 0xf3, 0x09, 0x9c, 0x33, 0xe0, 0x8a, 0x23, 0x6a, 0xa5, 0x6a, 0x0e, 0x29, 0xd6, 0x49, 0x6c, + 0xeb, 0x6a, 0x56, 0x15, 0x7a, 0x63, 0x2d, 0x8a, 0x71, 0x53, 0x83, 0xf8, 0x6e, 0x2e, 0x3c, 0xc3, + 0xaa, 0x77, 0x53, 0xfb, 0xae, 0xf9, 0x8a, 0xc7, 0xa3, 0xdb, 0xc9, 0x9d, 0x57, 0x95, 0x5a, 0xe3, + 0xc6, 0x25, 0x82, 0x35, 0x01, 0x63, 0xb2, 0xa8, 0x49, 0xc3, 0xd0, 0xfa, 0xe9, 0x00, 0x58, 0x42, + 0xb0, 0x59, 0xd7, 0xd6, 0x52, 0x1e, 0xfb, 0xa9, 0xc6, 0x8a, 0x8d, 0xea, 0x82, 0x1e, 0xae, 0x33, + 0x2e, 0xe5, 0x33, 0x0f, 0xf5, 0xbc, 0x7a, 0x0c, 0x35, 0x66, 0x5e, 0xaa, 0xf7, 0x5f, 0xe5, 0x2c, + 0x93, 0xfc, 0x63, 0xbb, 0x71, 0x72, 0x5c, 0xbe, 0x96, 0xb3, 0x4c, 0x1a, 0x7c, 0xb3, 0x97, 0x4c, + 0xdb, 0xbc, 0x4b, 0xe9, 0x7b, 0x91, 0xbb, 0x14, 0xf6, 0x45, 0xea, 0xb7, 0x29, 0xbb, 0xa6, 0x2c, + 0xc5, 0xf7, 0x28, 0xef, 0xc2, 0xf5, 0x22, 0x11, 0x29, 0x40, 0x83, 0x18, 0x5c, 0x0d, 0x36, 0xc4, + 0x85, 0xa2, 0x66, 0xb3, 0x5c, 0x3c, 0xa4, 0xf5, 0x27, 0xc2, 0xc8, 0x2c, 0x6f, 0x82, 0xb3, 0x8c, + 0xed, 0x3c, 0x74, 0x33, 0xff, 0xce, 0x79, 0x41, 0xad, 0xce, 0x48, 0xf5, 0x48, 0x07, 0x49, 0xb6, + 0xe4, 0x27, 0x30, 0xa9, 0x86, 0x3a, 0xe1, 0xb7, 0x34, 0x3a, 0xff, 0x4a, 0x1c, 0xe5, 0xf3, 0xe8, + 0xb1, 0x73, 0xfb, 0xe9, 0xbd, 0xdb, 0x19, 0xb8, 0xfc, 0x01, 0x7d, 0x5d, 0x16, 0x68, 0x4e, 0x4b, + 0xfa, 0x0d, 0x59, 0x16, 0xa1, 0x76, 0x0f, 0xfe, 0x77, 0x94, 0x97, 0x3d, 0xd3, 0x17, 0xdc, 0x26, + 0x15, 0xcf, 0x65, 0xe4, 0xec, 0xcb, 0xb9, 0xc3, 0x2b, 0x7c, 0xc7, 0x77, 0x78, 0xff, 0xac, 0x57, + 0xbe, 0x2d, 0x48, 0x5f, 0xa3, 0x9e, 0xf9, 0x2a, 0x2f, 0xb3, 0x07, 0xa7, 0xda, 0x4c, 0x33, 0x1b, + 0x47, 0x16, 0xe4, 0x45, 0xa8, 0x0a, 0x58, 0x35, 0xa1, 0x2e, 0x15, 0xe2, 0x02, 0xe3, 0x6e, 0x14, + 0x55, 0x17, 0x8d, 0x2a, 0x79, 0xcb, 0xd6, 0xf7, 0xed, 0x6f, 0xd9, 0x7e, 0x1b, 0xe0, 0xfc, 0xb6, + 0x73, 0xe0, 0x7a, 0x6c, 0xd1, 0xb6, 0x69, 0xe8, 0xb7, 0x83, 0x3a, 0x25, 0x15, 0x98, 0x30, 0x1d, + 0x47, 0xbb, 0xb8, 0xc5, 0xb2, 0x7d, 0xc9, 0x84, 0x91, 0x79, 0x18, 0x51, 0x8f, 0x55, 0xc5, 0x66, + 0x92, 0xf1, 0x88, 0x75, 0xb5, 0xc7, 0x8e, 0xd1, 0xc8, 0x7b, 0xc6, 0xc5, 0xd0, 0x39, 0xf5, 0xee, + 0x1a, 0x71, 0xe7, 0xb9, 0x67, 0x9f, 0xe7, 0x37, 0xcc, 0x0d, 0x91, 0x5f, 0x62, 0xfc, 0x28, 0x75, + 0x57, 0x34, 0x60, 0xb4, 0x38, 0x65, 0xf7, 0x42, 0x5d, 0x20, 0x37, 0x76, 0x76, 0xc6, 0x2d, 0xd2, + 0x97, 0x30, 0xfa, 0xb0, 0xbd, 0x4f, 0xe5, 0xad, 0xd8, 0xa0, 0xd8, 0x1f, 0x93, 0xee, 0xd0, 0xa2, + 0x7c, 0xef, 0x4d, 0x3e, 0x06, 0x4f, 0xda, 0xfb, 0x34, 0x1d, 0x94, 0x9d, 0x2d, 0x4c, 0x1a, 0x33, + 0x72, 0x08, 0xc5, 0xa4, 0xe7, 0xb2, 0xb8, 0x49, 0xea, 0xe0, 0x6f, 0x8d, 0x31, 0x40, 0xb4, 0xd0, + 0xef, 0xc9, 0xb0, 0xb8, 0xab, 0x3d, 0x76, 0x8a, 0x2b, 0xf9, 0x75, 0x98, 0xce, 0xb4, 0x3a, 0xaa, + 0xb7, 0x57, 0x9d, 0x0d, 0x9a, 0xb8, 0xa8, 0x27, 0xa4, 0x26, 0x1f, 0x7a, 0x19, 0x35, 0x67, 0xd7, + 0x42, 0x1a, 0x70, 0x2e, 0xe1, 0x91, 0x2b, 0xf2, 0x5b, 0xe4, 0xfb, 0xf8, 0xe2, 0xc6, 0x24, 0xe3, + 0xb4, 0x66, 0xd6, 0x95, 0x64, 0x49, 0xd6, 0x61, 0x44, 0x1d, 0xf7, 0xf1, 0x59, 0x57, 0xb6, 0x69, + 0xa3, 0x74, 0x72, 0x5c, 0x9e, 0x8a, 0x4d, 0x1b, 0x06, 0xcf, 0x98, 0x01, 0xf9, 0x0d, 0xb8, 0xa6, + 0xa6, 0xe8, 0x56, 0x90, 0x6d, 0x04, 0x12, 0xa1, 0xe5, 0x6f, 0x25, 0x67, 0x78, 0x1e, 0xfe, 0xde, + 0xbd, 0x85, 0xde, 0x52, 0x61, 0xb5, 0xc7, 0xee, 0xce, 0x9a, 0xfc, 0xb4, 0x00, 0x17, 0x72, 0x6a, + 0x1d, 0xc3, 0x5a, 0xbb, 0x5a, 0xe6, 0x50, 0xb9, 0xc7, 0xf7, 0x46, 0x6e, 0x23, 0x7e, 0x97, 0x27, + 0x4d, 0x74, 0x46, 0xbf, 0x73, 0x6a, 0x22, 0x0f, 0x00, 0xe2, 0xd0, 0xcb, 0x18, 0xc1, 0x2a, 0xe3, + 0x03, 0x45, 0x81, 0x66, 0x45, 0x68, 0x66, 0x02, 0x3d, 0x50, 0x11, 0x6a, 0xdf, 0x80, 0x41, 0x3c, + 0x6f, 0x87, 0xa5, 0x71, 0xd4, 0x48, 0x31, 0x8c, 0x0e, 0x9e, 0xca, 0xf5, 0x3d, 0x48, 0xe0, 0x90, + 0x55, 0xa6, 0xd9, 0xe1, 0x1e, 0x28, 0x35, 0x31, 0x11, 0x74, 0x4b, 0x9c, 0x0e, 0x78, 0x91, 0x0c, + 0xb5, 0x61, 0xe4, 0x23, 0x30, 0xc9, 0x16, 0x00, 0x86, 0x03, 0xb1, 0xc2, 0x3d, 0xe8, 0x1f, 0xee, + 0x2f, 0x0e, 0xf0, 0x8f, 0x50, 0xba, 0x8d, 0xff, 0xf6, 0x30, 0x7f, 0x63, 0xba, 0xeb, 0xb9, 0x8f, + 0xdd, 0x78, 0x31, 0xd4, 0x2d, 0x75, 0x71, 0x62, 0x20, 0xa1, 0x47, 0xe7, 0xa4, 0x00, 0x52, 0x46, + 0xbd, 0xde, 0xae, 0x46, 0xbd, 0x37, 0xb5, 0xeb, 0x2f, 0x2d, 0x06, 0x26, 0xd7, 0x97, 0x4c, 0x23, + 0x5a, 0x7c, 0x2f, 0xf6, 0x35, 0x0c, 0x62, 0xd8, 0x4a, 0x7e, 0xb7, 0x38, 0x3a, 0x7f, 0x5b, 0x6c, + 0x01, 0x1d, 0x9a, 0xcf, 0xe3, 0x5c, 0x8a, 0x77, 0xe3, 0x5c, 0xe2, 0x08, 0x30, 0x24, 0x8e, 0x10, + 0xb2, 0x03, 0x93, 0xdb, 0x01, 0x6d, 0x08, 0xe7, 0xe5, 0x56, 0x20, 0x0c, 0x1d, 0xdc, 0x84, 0x82, + 0xea, 0x43, 0x4b, 0x16, 0xd7, 0xa8, 0x2a, 0xd7, 0x37, 0xe7, 0x0c, 0x72, 0xb2, 0x0c, 0x13, 0x55, + 0xea, 0x04, 0xf5, 0xc3, 0x87, 0xf4, 0x39, 0x53, 0x9d, 0x8c, 0x5c, 0x18, 0x21, 0x96, 0xb0, 0xfe, + 0x62, 0x91, 0xee, 0x68, 0x62, 0x12, 0x91, 0x4f, 0x61, 0xb0, 0xea, 0x07, 0xd1, 0xc2, 0x73, 0xb1, + 0x40, 0xca, 0xdb, 0x27, 0x0e, 0x5c, 0xb8, 0x28, 0xf3, 0x81, 0x84, 0x7e, 0x10, 0xd5, 0xf6, 0x8d, + 0xb8, 0x4c, 0x1c, 0x85, 0x3c, 0x87, 0x29, 0x73, 0x71, 0x12, 0x3e, 0xb5, 0xc3, 0x42, 0x65, 0xcb, + 0x5a, 0x01, 0x39, 0xca, 0xc2, 0x4d, 0xc1, 0xfd, 0x6a, 0x72, 0x09, 0x7c, 0x8c, 0xe5, 0x7a, 0xa8, + 0xa4, 0x2c, 0x7a, 0xb2, 0x81, 0x89, 0x54, 0x78, 0x8f, 0x2a, 0x21, 0xf7, 0xc5, 0x1d, 0x89, 0x23, + 0x7f, 0xb5, 0x71, 0x81, 0x43, 0x49, 0x38, 0x61, 0x32, 0xfb, 0x8e, 0x9d, 0x22, 0x25, 0xdb, 0x70, + 0x7e, 0x37, 0xa4, 0xdb, 0x01, 0x7d, 0xea, 0xd2, 0x67, 0x92, 0x1f, 0xc4, 0x61, 0x92, 0x18, 0xbf, + 0x16, 0x2f, 0xcd, 0x62, 0x98, 0x26, 0x26, 0xef, 0x01, 0x6c, 0xbb, 0x9e, 0x47, 0x1b, 0x78, 0x85, + 0x39, 0x8a, 0xac, 0xd0, 0x3c, 0xdb, 0x42, 0x68, 0xcd, 0xf7, 0x9a, 0xba, 0x48, 0x35, 0x64, 0xb2, + 0x00, 0xe3, 0x6b, 0x5e, 0xbd, 0xd9, 0x16, 0xae, 0x06, 0x21, 0x2e, 0x4e, 0x22, 0x7c, 0x9b, 0xcb, + 0x0b, 0x6a, 0xa9, 0x8f, 0xdc, 0x24, 0x21, 0x0f, 0x81, 0x08, 0x80, 0x98, 0xb5, 0xce, 0x7e, 0x93, + 0x8a, 0xcf, 0x1d, 0xcd, 0x2e, 0x92, 0x11, 0x4e, 0x77, 0x23, 0x2a, 0x5a, 0x8a, 0x6c, 0xf6, 0x3d, + 0x18, 0xd5, 0xe6, 0x7c, 0x46, 0x20, 0x84, 0x29, 0x3d, 0x10, 0xc2, 0x88, 0x1e, 0xf0, 0xe0, 0x1f, + 0x14, 0x60, 0x2e, 0xfb, 0x5b, 0x12, 0xca, 0xdc, 0x16, 0x8c, 0x28, 0xa0, 0x7a, 0xfa, 0x22, 0x8f, + 0x11, 0x09, 0x6d, 0x8a, 0x7f, 0xd0, 0x72, 0xe5, 0xd1, 0x7b, 0x1f, 0xf3, 0x78, 0x01, 0xdb, 0xfe, + 0xff, 0x33, 0x0c, 0x53, 0xe8, 0xe2, 0x9d, 0x5c, 0xa7, 0x3e, 0xc1, 0x80, 0x26, 0x08, 0xd3, 0x4c, + 0xd5, 0xc2, 0x6a, 0xc5, 0xe1, 0xc9, 0xe8, 0x5b, 0x06, 0x01, 0x79, 0x5b, 0xf7, 0xaf, 0xe8, 0xd5, + 0x12, 0xb7, 0x48, 0xa0, 0xde, 0x85, 0xd8, 0xf1, 0xe2, 0x75, 0xe3, 0x7a, 0xff, 0xd4, 0x8b, 0x5e, + 0xff, 0x69, 0x17, 0xbd, 0x5d, 0xb5, 0xe8, 0xf1, 0x40, 0x19, 0xaf, 0x69, 0x8b, 0xde, 0xcb, 0x5f, + 0xed, 0x06, 0x5f, 0xf6, 0x6a, 0x37, 0xf4, 0xed, 0x56, 0xbb, 0xe1, 0x17, 0x5c, 0xed, 0xee, 0xc3, + 0xc4, 0x26, 0xa5, 0x0d, 0xed, 0xd2, 0x65, 0x24, 0xde, 0x3d, 0x3d, 0x8a, 0xe6, 0xb4, 0xac, 0x9b, + 0x97, 0x04, 0x55, 0xee, 0xaa, 0x09, 0x7f, 0x3b, 0xab, 0xe6, 0xe8, 0x4b, 0x5e, 0x35, 0xc7, 0xbe, + 0xcd, 0xaa, 0x99, 0x5a, 0xfa, 0xc6, 0xcf, 0xbc, 0xf4, 0x7d, 0x9b, 0xd5, 0xea, 0x63, 0xf4, 0x6b, + 0xac, 0x56, 0x57, 0x85, 0x27, 0x8a, 0xe6, 0xfa, 0xb1, 0xea, 0x87, 0xd2, 0xed, 0x1b, 0xff, 0x66, + 0xb0, 0x6d, 0x3f, 0x90, 0xd7, 0xe7, 0xf8, 0xb7, 0xb5, 0x80, 0xde, 0x8c, 0x3a, 0xbd, 0x7a, 0x33, + 0x30, 0x24, 0xde, 0x0d, 0x8a, 0x35, 0x2e, 0xa9, 0xf1, 0xd9, 0xb2, 0xdc, 0xfa, 0xf7, 0x05, 0x7e, + 0xc1, 0xf9, 0xbf, 0xe3, 0x52, 0xf9, 0x6d, 0x2e, 0x1d, 0x7f, 0x2b, 0x8e, 0x27, 0x20, 0x62, 0x1f, + 0x04, 0x4e, 0xfd, 0x49, 0x7c, 0xeb, 0xfb, 0x43, 0xf6, 0x9d, 0xeb, 0x05, 0x42, 0x37, 0x9e, 0x51, + 0x92, 0xd2, 0x0b, 0xf7, 0xee, 0xc9, 0x05, 0x40, 0x84, 0x55, 0xe0, 0x60, 0x73, 0x01, 0xd0, 0x09, + 0xd0, 0xef, 0xee, 0x9c, 0x65, 0xf3, 0xe7, 0xf0, 0x99, 0x2d, 0x78, 0x27, 0xfd, 0xa0, 0x1b, 0xf5, + 0xf0, 0xf8, 0x41, 0xb7, 0x2e, 0xc6, 0xf8, 0x69, 0xf7, 0x2e, 0x5c, 0xb2, 0xe9, 0x91, 0xff, 0x94, + 0xbe, 0x5c, 0xb6, 0x5f, 0xc1, 0x45, 0x93, 0x21, 0x7f, 0xfa, 0xc3, 0x23, 0xbe, 0x7f, 0x9c, 0x1d, + 0x27, 0x5e, 0x10, 0xf0, 0x38, 0xf1, 0x3c, 0xdc, 0x34, 0xfb, 0x53, 0xdf, 0x37, 0xb0, 0xcc, 0xf2, + 0x61, 0xce, 0x64, 0x5e, 0x69, 0x34, 0x30, 0x4d, 0x66, 0xdd, 0x6d, 0x39, 0x5e, 0x44, 0xb6, 0x60, + 0x54, 0xfb, 0x99, 0x30, 0x3b, 0x68, 0x25, 0x42, 0xa7, 0x89, 0x01, 0x46, 0x1c, 0xd0, 0x18, 0x6c, + 0x51, 0x28, 0x27, 0xc5, 0xc3, 0x44, 0xa6, 0xd7, 0xb9, 0x00, 0xe3, 0xda, 0x4f, 0x65, 0xfe, 0xc4, + 0x8f, 0x5f, 0xab, 0xc1, 0x14, 0x98, 0x49, 0x62, 0xd5, 0x61, 0x36, 0x4b, 0x68, 0x18, 0x22, 0xea, + 0x39, 0x59, 0x8e, 0x83, 0x4d, 0x75, 0xf7, 0xdc, 0x3b, 0x97, 0x17, 0x68, 0xca, 0xfa, 0xff, 0xfb, + 0xe1, 0x92, 0x18, 0x8c, 0x97, 0x39, 0xe2, 0xe4, 0x47, 0x30, 0xaa, 0x8d, 0xb1, 0x10, 0xfa, 0x55, + 0x19, 0xff, 0x33, 0x6f, 0x2e, 0x70, 0xf3, 0x48, 0x1b, 0x01, 0xb5, 0xc4, 0x70, 0xaf, 0xf6, 0xd8, + 0x3a, 0x4b, 0xd2, 0x84, 0x09, 0x73, 0xa0, 0x85, 0x85, 0xe8, 0x7a, 0x66, 0x25, 0x26, 0xaa, 0x8c, + 0x26, 0xdd, 0xa8, 0x65, 0x0e, 0xf7, 0x6a, 0x8f, 0x9d, 0xe0, 0x4d, 0xbe, 0x81, 0xf3, 0xa9, 0x51, + 0x16, 0x86, 0xbf, 0x57, 0x33, 0x2b, 0x4c, 0x61, 0x73, 0xd3, 0x6e, 0x80, 0xe0, 0xdc, 0x6a, 0xd3, + 0x95, 0x90, 0x06, 0x8c, 0xe9, 0x03, 0x2f, 0x4c, 0x58, 0xd7, 0x3a, 0x88, 0x92, 0x23, 0x72, 0xe5, + 0x4e, 0xc8, 0x12, 0xc7, 0xfe, 0xb9, 0x69, 0xae, 0x36, 0x90, 0x87, 0x61, 0x90, 0xff, 0x66, 0x4b, + 0xc0, 0x76, 0x40, 0x43, 0xea, 0xd5, 0xa9, 0xe1, 0x25, 0xfe, 0x2d, 0x97, 0x80, 0x7f, 0x55, 0x80, + 0x52, 0x16, 0xdf, 0x2a, 0xf5, 0x1a, 0x64, 0x1b, 0x8a, 0xc9, 0x8a, 0xc4, 0xac, 0xb6, 0x54, 0xc0, + 0xde, 0xdc, 0x26, 0xad, 0xf6, 0xd8, 0x29, 0x6a, 0xb2, 0x09, 0xe7, 0x35, 0x98, 0x30, 0xd4, 0xf6, + 0x9e, 0xc6, 0x50, 0xcb, 0x46, 0x21, 0x45, 0xaa, 0xdb, 0xb9, 0x57, 0x71, 0x67, 0x5c, 0xf2, 0x8f, + 0x1c, 0xd7, 0x63, 0x8a, 0xae, 0x16, 0x6f, 0x0a, 0x62, 0xa8, 0x90, 0x0d, 0xb7, 0xdc, 0x22, 0x54, + 0xbe, 0x6a, 0x51, 0x28, 0xd6, 0x87, 0xb8, 0x82, 0x0b, 0x7b, 0x1f, 0x7f, 0x23, 0xab, 0x98, 0x5d, + 0x85, 0x81, 0x9d, 0xf5, 0xea, 0x62, 0x45, 0xbc, 0xb8, 0xe5, 0x71, 0x1a, 0x9a, 0x61, 0xad, 0xee, + 0xd8, 0xbc, 0xc0, 0xfa, 0x00, 0xc8, 0x0a, 0x8d, 0x44, 0xc4, 0x78, 0x45, 0x77, 0x03, 0x86, 0x04, + 0x48, 0x50, 0xa2, 0x9b, 0x5d, 0x53, 0x60, 0xc9, 0x32, 0x6b, 0x5b, 0x9e, 0x13, 0x9a, 0xd4, 0x09, + 0xb5, 0x8d, 0xf9, 0x5d, 0x18, 0x0e, 0x04, 0x4c, 0xec, 0xcb, 0x13, 0x2a, 0x6f, 0x07, 0x82, 0xb9, + 0x6d, 0x5c, 0xe2, 0xd8, 0xea, 0x2f, 0x6b, 0x1d, 0x63, 0xaa, 0x6c, 0xad, 0x2d, 0x2d, 0x32, 0xa9, + 0x0a, 0x61, 0xc9, 0xe1, 0xb8, 0x83, 0xfe, 0xe8, 0x11, 0xd5, 0xdf, 0xdb, 0xa2, 0x68, 0xf0, 0x23, + 0x17, 0x91, 0x84, 0x34, 0x14, 0xeb, 0x4d, 0x15, 0xa1, 0x25, 0x83, 0x5b, 0x5e, 0xfe, 0x89, 0x4d, + 0x8c, 0x3d, 0xb3, 0x82, 0xae, 0x37, 0x2f, 0xa3, 0x11, 0xff, 0xa2, 0x00, 0x37, 0xf8, 0x3e, 0x9f, + 0xe2, 0x79, 0xdf, 0x0f, 0xf4, 0x70, 0xa2, 0x7b, 0x30, 0x56, 0xa7, 0x41, 0x24, 0x0d, 0x4e, 0xca, + 0x32, 0x9e, 0x9d, 0x05, 0x2f, 0x7e, 0x25, 0x9e, 0x61, 0xa1, 0x1a, 0xad, 0x6b, 0x1e, 0x8f, 0x1f, + 0xc1, 0x18, 0x3b, 0x47, 0x04, 0xb4, 0x1e, 0xd5, 0xda, 0x81, 0xcc, 0x81, 0x85, 0xe4, 0x3a, 0x5c, + 0x27, 0x97, 0xf0, 0xdd, 0xa0, 0x69, 0x39, 0x30, 0xcb, 0xdb, 0xcf, 0x86, 0x45, 0xa4, 0x3e, 0xf4, + 0x55, 0xa3, 0x17, 0x61, 0x44, 0xc1, 0xd4, 0x45, 0x20, 0x1f, 0x6c, 0x03, 0x7f, 0xef, 0x4d, 0xfe, + 0xb6, 0xba, 0xae, 0x18, 0xc4, 0x74, 0xac, 0x0a, 0xbe, 0x70, 0x7c, 0xc7, 0x55, 0x84, 0x34, 0x88, + 0xbe, 0xd3, 0x2a, 0xe2, 0xe8, 0x4a, 0x67, 0xa9, 0xc2, 0xc0, 0xdf, 0x9b, 0x3f, 0x8d, 0xa0, 0xbe, + 0xe3, 0x2a, 0x98, 0xa0, 0xbe, 0xbb, 0x2a, 0xa8, 0x0c, 0x43, 0xc5, 0xbf, 0x88, 0x54, 0x25, 0xcb, + 0xe9, 0x4a, 0xa4, 0x15, 0x3f, 0x41, 0xd1, 0x71, 0x3c, 0x28, 0xcc, 0x71, 0x61, 0xfd, 0x12, 0xaa, + 0x61, 0x02, 0xfb, 0x6e, 0xab, 0xf9, 0x7b, 0x05, 0x1e, 0x14, 0xab, 0xba, 0xa5, 0x25, 0x1d, 0xf5, + 0x1e, 0xfb, 0x9a, 0x9f, 0x82, 0xb6, 0xb4, 0x3c, 0x74, 0xbd, 0x86, 0xee, 0xa7, 0xe0, 0xb4, 0xa3, + 0x43, 0x15, 0x34, 0xfa, 0x89, 0xeb, 0x35, 0xec, 0x24, 0x36, 0x79, 0x0f, 0xc6, 0x35, 0x90, 0x52, + 0x37, 0x79, 0xe6, 0x0d, 0x9d, 0xdc, 0x6d, 0xd8, 0x26, 0xa6, 0xf5, 0x37, 0x05, 0x98, 0xcc, 0x48, + 0x87, 0x8d, 0xd6, 0x18, 0x3c, 0xc6, 0xa9, 0x95, 0x56, 0xa4, 0xb4, 0xc2, 0xf8, 0x1c, 0xc6, 0x2e, + 0xaf, 0x10, 0x31, 0xe7, 0x80, 0x96, 0xba, 0x5b, 0x5b, 0xad, 0x72, 0xd2, 0x75, 0xeb, 0xe8, 0x24, + 0x04, 0x88, 0x5b, 0x22, 0xec, 0xde, 0x55, 0xa6, 0x93, 0x6b, 0x79, 0xbf, 0x5f, 0x4a, 0xe2, 0x71, + 0xad, 0x1a, 0xeb, 0xb7, 0x7a, 0xe1, 0x42, 0x46, 0xff, 0xab, 0x34, 0xfa, 0xdb, 0x10, 0x41, 0x22, + 0xfb, 0x7a, 0xdf, 0x2f, 0x29, 0xfb, 0xba, 0xf5, 0xef, 0x7a, 0xe1, 0xc2, 0x6e, 0x2b, 0xc4, 0xe7, + 0x66, 0x6b, 0xde, 0x53, 0xea, 0x45, 0x7e, 0xf0, 0x1c, 0x9f, 0xc8, 0x90, 0xb7, 0x61, 0x60, 0x95, + 0x36, 0x9b, 0xbe, 0x98, 0xff, 0x97, 0xe5, 0x9e, 0x96, 0xc4, 0x46, 0xa4, 0xd5, 0x1e, 0x9b, 0x63, + 0x93, 0xf7, 0x60, 0x64, 0x95, 0x3a, 0x41, 0xb4, 0x4f, 0x1d, 0x79, 0xe6, 0x92, 0xf9, 0x40, 0x34, + 0x12, 0x81, 0xb0, 0xda, 0x63, 0xc7, 0xd8, 0x64, 0x1e, 0xfa, 0xb7, 0x7d, 0xef, 0x40, 0xbd, 0xc9, + 0xcf, 0xa9, 0x90, 0xe1, 0xac, 0xf6, 0xd8, 0x88, 0x4b, 0x36, 0x60, 0xbc, 0x72, 0x40, 0xbd, 0x68, + 0x83, 0x46, 0x4e, 0xc3, 0x89, 0x1c, 0xa1, 0x9b, 0xdf, 0xc8, 0x23, 0x36, 0x90, 0x57, 0x7b, 0x6c, + 0x93, 0x9a, 0x7c, 0x00, 0x43, 0x2b, 0xbe, 0xdf, 0xd8, 0x7f, 0x4e, 0x85, 0xbe, 0x5d, 0xce, 0x63, + 0x24, 0xd0, 0x56, 0x7b, 0x6c, 0x49, 0xb1, 0x30, 0x00, 0x7d, 0x1b, 0xe1, 0x81, 0x75, 0x5c, 0x80, + 0xd2, 0x92, 0xff, 0xcc, 0xcb, 0x94, 0xea, 0x0f, 0x4c, 0xa9, 0x4a, 0xf6, 0x19, 0xf8, 0x09, 0xb9, + 0xbe, 0x05, 0xfd, 0xdb, 0xae, 0x77, 0x90, 0xd0, 0x65, 0x33, 0xe8, 0x18, 0x16, 0x8a, 0xc7, 0xf5, + 0x0e, 0xc8, 0xba, 0x3c, 0x44, 0x08, 0x63, 0x69, 0x9f, 0x71, 0x72, 0xc9, 0xa0, 0xd6, 0xb1, 0xe3, + 0xc3, 0x02, 0xff, 0x2d, 0x3b, 0xf8, 0x3a, 0xcc, 0xe4, 0xd4, 0x2b, 0x1e, 0xd9, 0xb3, 0xbe, 0xf5, + 0xa3, 0x66, 0xf6, 0x1a, 0x4c, 0x67, 0x8e, 0x5f, 0x0a, 0xf1, 0x1f, 0x67, 0x4d, 0x44, 0xde, 0xf3, + 0x12, 0x0c, 0xc9, 0x7c, 0x56, 0xdc, 0x78, 0x25, 0x7f, 0xe2, 0x6b, 0x31, 0xf9, 0xa1, 0xca, 0xf0, + 0x28, 0xf2, 0x7b, 0xdc, 0xd3, 0xc2, 0x51, 0xf1, 0xcf, 0xe9, 0xfd, 0x6f, 0xf1, 0xd1, 0x28, 0x5e, + 0xac, 0xce, 0x55, 0x3f, 0x8c, 0x3c, 0xe5, 0x86, 0x6c, 0xab, 0xdf, 0xe4, 0x16, 0x14, 0x65, 0x52, + 0x0c, 0x91, 0x7d, 0x47, 0xe4, 0x8a, 0xb7, 0x53, 0x70, 0xf2, 0x2e, 0xcc, 0x24, 0x61, 0xb2, 0x97, + 0xfc, 0xb9, 0x5f, 0x5e, 0xb1, 0xf5, 0x97, 0xbd, 0x18, 0x31, 0xbc, 0xc3, 0xbc, 0x66, 0xd2, 0xdd, + 0xaa, 0x0a, 0x69, 0xf5, 0x6e, 0x55, 0xc9, 0x1c, 0x8c, 0x6c, 0x55, 0x8d, 0xa4, 0x60, 0x76, 0x0c, + 0x60, 0xcd, 0x66, 0x5d, 0xa8, 0x04, 0xf5, 0x43, 0x37, 0xa2, 0xf5, 0xa8, 0x1d, 0x88, 0x55, 0xd8, + 0x4e, 0xc1, 0x89, 0x05, 0x63, 0x2b, 0x4d, 0x77, 0xbf, 0x2e, 0x99, 0x71, 0x11, 0x18, 0x30, 0xf2, + 0x2a, 0x4c, 0xac, 0x79, 0x61, 0xe4, 0x34, 0x9b, 0x1b, 0x34, 0x3a, 0xf4, 0x1b, 0x22, 0x67, 0xaa, + 0x9d, 0x80, 0xb2, 0x7a, 0x17, 0x7d, 0x2f, 0x72, 0x5c, 0x8f, 0x06, 0x76, 0xdb, 0x8b, 0xdc, 0x23, + 0x2a, 0xfa, 0x9e, 0x82, 0x93, 0xb7, 0x60, 0x5a, 0xc1, 0xb6, 0x82, 0xfa, 0x21, 0x0d, 0xa3, 0x00, + 0x53, 0x05, 0x62, 0xd8, 0x24, 0x3b, 0xbb, 0x10, 0x6b, 0x68, 0xfa, 0xed, 0xc6, 0xb2, 0xf7, 0xd4, + 0x0d, 0x7c, 0x0f, 0x33, 0x7c, 0x0c, 0x8b, 0x1a, 0x12, 0x70, 0xeb, 0x8f, 0x86, 0x33, 0x3f, 0xdb, + 0x6f, 0x33, 0x07, 0xbf, 0x80, 0xb1, 0x45, 0xa7, 0xe5, 0xec, 0xbb, 0x4d, 0x37, 0x72, 0x55, 0x4e, + 0xb5, 0xb7, 0xbb, 0x7c, 0xf3, 0x32, 0x4d, 0x0a, 0x6d, 0xe8, 0xc4, 0xb6, 0xc1, 0x6a, 0xf6, 0xaf, + 0x07, 0x61, 0x3a, 0x13, 0x8f, 0xdc, 0x14, 0xc9, 0xd7, 0xd4, 0xba, 0x2a, 0x52, 0x86, 0xd9, 0x49, + 0x30, 0x1b, 0x4b, 0x04, 0x2d, 0x36, 0xa9, 0xe3, 0xb5, 0x45, 0xc2, 0x30, 0xdb, 0x80, 0xb1, 0xb1, + 0x64, 0x7a, 0x83, 0xc6, 0x0c, 0xbd, 0xc8, 0xed, 0x04, 0x94, 0x5c, 0x85, 0x51, 0x06, 0x91, 0xac, + 0xfa, 0xf9, 0x7b, 0x47, 0x0d, 0xc4, 0x38, 0x6d, 0xfa, 0x0d, 0xaa, 0x71, 0x1a, 0xe0, 0x9c, 0x4c, + 0x28, 0xe3, 0xc4, 0x20, 0x92, 0xd3, 0x20, 0xe7, 0xa4, 0x81, 0xc8, 0x2b, 0x30, 0x5e, 0x69, 0xb5, + 0x34, 0x46, 0x98, 0x29, 0xcc, 0x36, 0x81, 0xe4, 0x0a, 0x40, 0xa5, 0xd5, 0x92, 0x6c, 0x30, 0x0b, + 0x98, 0xad, 0x41, 0xc8, 0xed, 0x38, 0xe8, 0x9b, 0xc6, 0x0a, 0xef, 0x43, 0xec, 0x8c, 0x12, 0x26, + 0x57, 0x15, 0x21, 0x4b, 0x30, 0x05, 0x2e, 0xd7, 0x04, 0x98, 0x7c, 0x08, 0x17, 0x13, 0x4e, 0x28, + 0x5a, 0x05, 0x78, 0x57, 0x61, 0xe7, 0x23, 0x90, 0x77, 0xe0, 0x42, 0xa2, 0x50, 0x56, 0x87, 0xd7, + 0x12, 0x76, 0x4e, 0x29, 0x79, 0x1f, 0x4a, 0x89, 0xc7, 0xef, 0x71, 0xa5, 0x78, 0x05, 0x61, 0xe7, + 0x96, 0xb3, 0xaf, 0x2b, 0xf1, 0x18, 0x4e, 0x54, 0x89, 0xb7, 0xad, 0x76, 0x76, 0x21, 0x59, 0x85, + 0x72, 0xa6, 0x63, 0x8f, 0x56, 0x31, 0x66, 0x37, 0xb3, 0xbb, 0xa1, 0x91, 0x05, 0x98, 0xcb, 0x44, + 0x91, 0xcd, 0xc0, 0x9c, 0x67, 0x76, 0x47, 0x1c, 0x32, 0x0f, 0x53, 0xb1, 0x83, 0x93, 0xd6, 0x04, + 0x4c, 0x77, 0x66, 0x67, 0x96, 0x91, 0x37, 0xcc, 0x10, 0x07, 0xbc, 0x32, 0xcc, 0x76, 0x66, 0xa7, + 0x0b, 0xac, 0x93, 0x02, 0xcc, 0x65, 0x6e, 0x94, 0x52, 0x9f, 0x9f, 0x4d, 0x2a, 0x8e, 0xda, 0x5a, + 0x70, 0x0b, 0xfa, 0x51, 0xc1, 0xe7, 0xc6, 0x6e, 0xe9, 0x78, 0x8b, 0xf4, 0x9c, 0x15, 0x2b, 0xb5, + 0x11, 0x87, 0xac, 0xa8, 0xcb, 0xcd, 0x3e, 0x34, 0xc5, 0xdc, 0x49, 0x2a, 0x50, 0x19, 0x95, 0xeb, + 0x97, 0x9c, 0xf2, 0x3a, 0xf3, 0xdb, 0xdc, 0x23, 0xfd, 0x65, 0x01, 0xca, 0x5d, 0xf4, 0x03, 0xd5, + 0xa7, 0xc2, 0x29, 0xfa, 0xf4, 0x40, 0xf5, 0x89, 0x3f, 0x14, 0x9e, 0x3f, 0x9d, 0x0e, 0xf2, 0xb2, + 0xbb, 0xf5, 0x37, 0x05, 0x20, 0x69, 0x3d, 0x94, 0x7c, 0x1f, 0x46, 0xaa, 0xd5, 0x55, 0xc3, 0xbd, + 0x31, 0x75, 0xbd, 0x15, 0x63, 0x90, 0xbb, 0xa7, 0xf2, 0x67, 0xd4, 0xbd, 0x19, 0x3f, 0x49, 0x39, + 0x51, 0xf6, 0x75, 0x74, 0xa2, 0x4c, 0xb9, 0x50, 0x2e, 0x67, 0x78, 0x05, 0xf6, 0x77, 0xf1, 0x0a, + 0x4c, 0xbb, 0xfc, 0x59, 0x4b, 0x50, 0xca, 0x53, 0x65, 0x71, 0x85, 0xe3, 0xa1, 0xd2, 0xb4, 0x2b, + 0x3a, 0xbe, 0xc2, 0x99, 0x60, 0xeb, 0x1d, 0xb8, 0xa0, 0xa8, 0x79, 0x0e, 0x16, 0x2d, 0x1c, 0x83, + 0x38, 0xff, 0xaa, 0xb0, 0x0f, 0x31, 0xc0, 0xfa, 0x8b, 0xfe, 0x14, 0x61, 0xb5, 0x7d, 0x74, 0xe4, + 0x04, 0xcf, 0x49, 0xc5, 0x24, 0xec, 0xeb, 0x7a, 0xe4, 0x58, 0xe8, 0xff, 0xd9, 0x71, 0xb9, 0x47, + 0xe3, 0xce, 0xf6, 0x05, 0xd4, 0x30, 0xbc, 0x3a, 0xe5, 0x97, 0x7b, 0xbd, 0x3c, 0x56, 0x95, 0x01, + 0x24, 0x7b, 0x30, 0x2e, 0xf6, 0x6e, 0xfc, 0x2d, 0xbf, 0xb1, 0xbb, 0xc9, 0x6f, 0xcc, 0x68, 0xde, + 0x6d, 0x83, 0x84, 0xcf, 0x46, 0x93, 0x0d, 0xf9, 0x02, 0x26, 0xa4, 0xa6, 0x26, 0x18, 0x73, 0x77, + 0xac, 0x7b, 0x9d, 0x19, 0x9b, 0x34, 0x9c, 0x73, 0x82, 0x11, 0x6b, 0xb2, 0x5c, 0xec, 0x38, 0xe7, + 0x81, 0xd3, 0x34, 0xd9, 0x20, 0x11, 0x4d, 0x36, 0x60, 0xb3, 0x9f, 0x02, 0x49, 0xf7, 0xab, 0xdb, + 0xe7, 0x34, 0xae, 0x7d, 0x4e, 0xb3, 0x15, 0x98, 0xcc, 0xe8, 0xc0, 0x99, 0x58, 0x7c, 0x0a, 0x24, + 0xdd, 0xd2, 0xb3, 0x70, 0xb0, 0x6e, 0xc2, 0xab, 0x4a, 0x04, 0x6a, 0x36, 0x18, 0x3c, 0xa5, 0x09, + 0xff, 0x37, 0x7b, 0xa1, 0xdc, 0x05, 0x95, 0xfc, 0x61, 0x21, 0x29, 0x6d, 0x3e, 0x1b, 0xdf, 0x4b, + 0x4a, 0x3b, 0x9b, 0x3e, 0x43, 0xec, 0x0b, 0xef, 0xff, 0xf4, 0xaf, 0x5e, 0xf8, 0xe4, 0x91, 0x1e, + 0xb2, 0xb3, 0x4b, 0xab, 0x5f, 0x97, 0x96, 0x0d, 0x53, 0xc6, 0x99, 0xed, 0x34, 0x9b, 0xd7, 0x15, + 0x00, 0x91, 0xb1, 0x75, 0xdd, 0x3f, 0x10, 0x7a, 0xa2, 0x06, 0xb1, 0xee, 0xc3, 0x74, 0x82, 0xa7, + 0xb8, 0x56, 0xf8, 0x3e, 0xa8, 0x67, 0xf7, 0xc8, 0xb4, 0x6f, 0xe1, 0xfc, 0x2f, 0x8e, 0xcb, 0xe3, + 0x4c, 0xa5, 0xbf, 0x1d, 0xa7, 0x03, 0x90, 0x7f, 0x59, 0x1b, 0xfa, 0xc5, 0x48, 0xa5, 0xa9, 0xc7, + 0x31, 0x22, 0xf7, 0x60, 0x90, 0x43, 0x12, 0x41, 0xb7, 0x75, 0x6c, 0xb1, 0x26, 0x08, 0x44, 0x6b, + 0x1a, 0x1f, 0x09, 0xe3, 0x8f, 0x4a, 0x1c, 0xd4, 0xc2, 0xda, 0xe5, 0x49, 0x68, 0x62, 0xb0, 0x0a, + 0xec, 0xdd, 0x5f, 0x89, 0x83, 0x6f, 0x48, 0x2f, 0x16, 0x89, 0xe7, 0xf9, 0xcf, 0x9a, 0xb4, 0xc1, + 0x13, 0xfc, 0x2d, 0x8c, 0x09, 0x2f, 0x96, 0x7e, 0x87, 0x31, 0x40, 0x32, 0xeb, 0x13, 0x98, 0x66, + 0x9a, 0x42, 0x90, 0xac, 0x0f, 0x53, 0x4f, 0x30, 0x98, 0xf9, 0xcc, 0xc0, 0x61, 0x20, 0x7c, 0x66, + 0x20, 0x0a, 0xad, 0x75, 0xb8, 0xc8, 0xad, 0x92, 0x7a, 0x97, 0xe2, 0x4b, 0x8c, 0x01, 0xfc, 0x9d, + 0x78, 0x62, 0x9a, 0xd1, 0x7b, 0x8e, 0x67, 0x7d, 0x8c, 0x6f, 0x98, 0xc4, 0x24, 0x75, 0x7d, 0x2f, + 0x36, 0x41, 0x9e, 0xee, 0xd1, 0xf3, 0xff, 0x09, 0x73, 0x95, 0x56, 0x8b, 0x7a, 0x8d, 0x98, 0x70, + 0x27, 0x70, 0x4e, 0x19, 0x92, 0x82, 0x54, 0x60, 0x00, 0xb1, 0xd5, 0x0d, 0xb0, 0x68, 0x6e, 0x46, + 0x73, 0x10, 0x4f, 0x44, 0x61, 0xc5, 0x0a, 0x38, 0xa5, 0xd5, 0x80, 0x99, 0x6a, 0x7b, 0xff, 0xc8, + 0x8d, 0xf0, 0x71, 0x02, 0x86, 0x75, 0x91, 0x75, 0xaf, 0xc9, 0xbc, 0x61, 0x5c, 0x18, 0x37, 0xe3, + 0xb7, 0x2e, 0xf8, 0xbe, 0x41, 0x84, 0x7a, 0x79, 0x7a, 0xef, 0x76, 0x4c, 0x8a, 0xe6, 0x17, 0x5e, + 0x0b, 0x16, 0x8b, 0xdc, 0x62, 0xd6, 0x24, 0x9c, 0xd7, 0x6f, 0xd3, 0xf8, 0x0c, 0x99, 0x86, 0x49, + 0xf3, 0x96, 0x8c, 0x83, 0xbf, 0x86, 0x29, 0x6e, 0x04, 0xe7, 0x51, 0xd4, 0xe7, 0xe3, 0x80, 0xe1, + 0xbd, 0x7b, 0xf3, 0x89, 0x57, 0x11, 0xe8, 0x2c, 0xad, 0xf2, 0x63, 0xec, 0xcd, 0xf3, 0x77, 0xa8, + 0x4f, 0xe7, 0x8d, 0xbb, 0xd8, 0xde, 0xbd, 0xf9, 0x85, 0x21, 0x11, 0x8d, 0x96, 0x71, 0xe7, 0xc3, + 0xff, 0x9d, 0x70, 0x9f, 0xc7, 0xd0, 0x07, 0xab, 0xd4, 0xc1, 0x67, 0x4a, 0xd9, 0x0f, 0xc8, 0x27, + 0xa0, 0xd7, 0x6d, 0x48, 0xb3, 0x81, 0xdb, 0xb0, 0xfe, 0xb4, 0x00, 0x37, 0xb9, 0x32, 0x96, 0x4d, + 0x87, 0x57, 0x66, 0x39, 0xc4, 0xe4, 0x5d, 0xe0, 0x09, 0xfe, 0x85, 0xc6, 0x6b, 0x89, 0x96, 0x77, + 0xe2, 0xc4, 0x09, 0x48, 0x05, 0xc6, 0xf4, 0x87, 0x3e, 0xa7, 0x8b, 0xf6, 0x67, 0x8f, 0x1e, 0x3d, + 0x76, 0xd4, 0xe3, 0x9f, 0x27, 0x70, 0x69, 0xf9, 0x1b, 0x36, 0x21, 0xc4, 0xee, 0x24, 0x4e, 0x0e, + 0xf1, 0x03, 0xe5, 0x73, 0x3b, 0x62, 0xc6, 0x98, 0xc7, 0xfa, 0x24, 0x98, 0x9d, 0x91, 0xe5, 0x06, + 0xa7, 0xd4, 0xf7, 0x11, 0xdb, 0x80, 0x59, 0x7f, 0x51, 0x80, 0xb9, 0xec, 0xda, 0xc4, 0xc2, 0xb2, + 0x06, 0xe7, 0x17, 0x1d, 0xcf, 0xf7, 0xdc, 0xba, 0xd3, 0xac, 0xd6, 0x0f, 0x69, 0xa3, 0xad, 0x62, + 0xd6, 0xaa, 0x55, 0xe6, 0x80, 0x7a, 0x92, 0x5c, 0xa2, 0xd8, 0x69, 0x2a, 0x76, 0x3a, 0xc4, 0xb7, + 0x22, 0x7c, 0xed, 0x6d, 0xd2, 0x40, 0xf1, 0xe3, 0x2d, 0xcb, 0x29, 0x25, 0x77, 0xa5, 0xb5, 0xbf, + 0xb1, 0xeb, 0xb9, 0x91, 0x22, 0xe2, 0x66, 0x9e, 0xac, 0x22, 0xeb, 0xdf, 0x14, 0xe0, 0x22, 0xa6, + 0xa9, 0x32, 0x12, 0x5f, 0xc6, 0xa1, 0x9b, 0x65, 0xf4, 0xe1, 0x82, 0xf1, 0xf6, 0xc5, 0xc0, 0x36, + 0xc3, 0x10, 0x93, 0x37, 0xa0, 0xbf, 0x2a, 0xdd, 0xcd, 0x26, 0x12, 0x59, 0x85, 0x05, 0x05, 0x2b, + 0xb7, 0x11, 0x8b, 0xed, 0x39, 0x4b, 0x34, 0xac, 0x53, 0x0f, 0xd3, 0x3f, 0x73, 0xab, 0x83, 0x06, + 0x89, 0x03, 0x48, 0xf5, 0xe7, 0x05, 0x90, 0x1a, 0x30, 0x03, 0x48, 0x59, 0x4f, 0x79, 0x92, 0xaa, + 0x64, 0x87, 0xc4, 0x20, 0x7d, 0x9c, 0xca, 0x16, 0xcd, 0xf7, 0x81, 0x0b, 0x59, 0x3d, 0x63, 0x0a, + 0x7a, 0x22, 0x11, 0x74, 0x7e, 0xa8, 0xe4, 0x6d, 0x78, 0xc5, 0xc0, 0xad, 0x34, 0x9b, 0xfe, 0x33, + 0xda, 0xd8, 0x0e, 0xfc, 0x23, 0x3f, 0x32, 0x92, 0xf4, 0x88, 0x74, 0xe9, 0xf1, 0x7d, 0x8e, 0x98, + 0x95, 0x09, 0xb0, 0xf5, 0x7f, 0xc0, 0x8d, 0x2e, 0x1c, 0x45, 0xa7, 0xaa, 0x70, 0xde, 0x49, 0x94, + 0x49, 0xbf, 0xa1, 0x1b, 0x59, 0xfd, 0x4a, 0x32, 0x0a, 0xed, 0x34, 0xfd, 0xad, 0x1d, 0x23, 0xc3, + 0x32, 0x29, 0xc1, 0xd4, 0xb6, 0xbd, 0xb5, 0xb4, 0xbb, 0xb8, 0x53, 0xdb, 0xf9, 0x62, 0x7b, 0xb9, + 0xb6, 0xbb, 0xf9, 0x70, 0x73, 0xeb, 0xd1, 0x26, 0x8f, 0x35, 0x6e, 0x94, 0xec, 0x2c, 0x57, 0x36, + 0x8a, 0x05, 0x32, 0x05, 0x45, 0x03, 0xbc, 0xbc, 0xbb, 0x50, 0xec, 0xbd, 0xf5, 0xb5, 0x91, 0x39, + 0x98, 0xcc, 0x41, 0xa9, 0xba, 0xbb, 0xbd, 0xbd, 0x65, 0x2b, 0xae, 0x7a, 0xa4, 0xf3, 0x69, 0x38, + 0x6f, 0x94, 0xde, 0xb7, 0x97, 0x97, 0x8b, 0x05, 0xd6, 0x14, 0x03, 0xbc, 0x6d, 0x2f, 0x6f, 0xac, + 0xed, 0x6e, 0x14, 0x7b, 0x6f, 0xd5, 0xf4, 0x07, 0x77, 0xe4, 0x12, 0xcc, 0x2c, 0x2d, 0xef, 0xad, + 0x2d, 0x2e, 0x67, 0xf1, 0x9e, 0x82, 0xa2, 0x5e, 0xb8, 0xb3, 0xb5, 0xb3, 0xcd, 0x59, 0xeb, 0xd0, + 0x47, 0xcb, 0x0b, 0x95, 0xdd, 0x9d, 0xd5, 0xcd, 0x62, 0x9f, 0xd5, 0x3f, 0xdc, 0x5b, 0xec, 0xbd, + 0xf5, 0x23, 0xe3, 0x35, 0x1e, 0x6b, 0xbe, 0x40, 0xdf, 0xad, 0x56, 0x56, 0xf2, 0xab, 0xe0, 0xa5, + 0x1b, 0xf7, 0x2b, 0xc5, 0x02, 0xb9, 0x0c, 0x17, 0x0d, 0xe8, 0x76, 0xa5, 0x5a, 0x7d, 0xb4, 0x65, + 0x2f, 0xad, 0x2f, 0x57, 0xab, 0xc5, 0xde, 0x5b, 0x7b, 0x46, 0xd0, 0x3c, 0x56, 0xc3, 0xc6, 0xfd, + 0x4a, 0xcd, 0x5e, 0xfe, 0x6c, 0x77, 0xcd, 0x5e, 0x5e, 0x4a, 0xd7, 0x60, 0x94, 0x7e, 0xb1, 0x5c, + 0x2d, 0x16, 0xc8, 0x24, 0x9c, 0x33, 0xa0, 0x9b, 0x5b, 0xc5, 0xde, 0x5b, 0xaf, 0x8a, 0xb8, 0x6a, + 0x64, 0x02, 0x60, 0x69, 0xb9, 0xba, 0xb8, 0xbc, 0xb9, 0xb4, 0xb6, 0xb9, 0x52, 0xec, 0x21, 0xe3, + 0x30, 0x52, 0x51, 0x3f, 0x0b, 0xb7, 0xde, 0x87, 0x73, 0x89, 0xa3, 0x3d, 0xc3, 0x50, 0x87, 0xe2, + 0x62, 0x0f, 0x8a, 0x5f, 0xfe, 0x44, 0xfb, 0x2a, 0x3f, 0xa5, 0x17, 0x0b, 0xb7, 0x16, 0x64, 0x26, + 0x5b, 0xed, 0x3b, 0x27, 0xa3, 0x30, 0xb4, 0xb4, 0x7c, 0xbf, 0xb2, 0xbb, 0xbe, 0x53, 0xec, 0x61, + 0x3f, 0x16, 0xed, 0xe5, 0xca, 0xce, 0xf2, 0x52, 0xb1, 0x40, 0x46, 0x60, 0xa0, 0xba, 0x53, 0xd9, + 0x59, 0x2e, 0xf6, 0x92, 0x61, 0xe8, 0xdf, 0xad, 0x2e, 0xdb, 0xc5, 0xbe, 0xf9, 0x3f, 0xfe, 0xfb, + 0x05, 0x6e, 0x64, 0x94, 0x2f, 0xbb, 0xbe, 0xd6, 0x0e, 0x93, 0x62, 0xc9, 0x13, 0x69, 0x3b, 0x73, + 0x4f, 0x8e, 0xa8, 0x05, 0xcc, 0x76, 0xb8, 0x75, 0x41, 0x84, 0x9b, 0x85, 0xbb, 0x05, 0x62, 0xa3, + 0x9b, 0x4d, 0xe2, 0x6c, 0xa5, 0x38, 0x67, 0x1f, 0x7f, 0x67, 0x2f, 0x77, 0x3c, 0x92, 0x91, 0x5f, + 0x03, 0x4b, 0xe7, 0x99, 0x73, 0x02, 0xf9, 0xfe, 0xe9, 0x4e, 0x1a, 0xb2, 0xce, 0x57, 0x4f, 0x87, + 0x4e, 0x1e, 0xc0, 0x38, 0xd3, 0xcd, 0x15, 0x1a, 0xb9, 0x94, 0x24, 0xd4, 0x8e, 0x03, 0xb3, 0x73, + 0xd9, 0x85, 0x2a, 0xb3, 0xce, 0x18, 0x76, 0x84, 0x1f, 0xac, 0x43, 0x22, 0x63, 0x6f, 0x48, 0x08, + 0x5f, 0xf1, 0x67, 0xcf, 0x27, 0xc0, 0x7b, 0xf7, 0xee, 0x16, 0x48, 0x15, 0x03, 0xdf, 0x19, 0x4a, + 0x3e, 0x91, 0x4f, 0x0d, 0xd3, 0xda, 0x3f, 0x6f, 0x4d, 0x59, 0xe5, 0xc1, 0xcc, 0x39, 0x1d, 0x6c, + 0x02, 0x49, 0xeb, 0xce, 0xe4, 0x6a, 0x3c, 0x0f, 0xb2, 0xd5, 0xea, 0xd9, 0x0b, 0x29, 0xef, 0xc9, + 0x65, 0xa6, 0x3d, 0x91, 0x65, 0x98, 0x10, 0x0f, 0xeb, 0x85, 0x36, 0x4f, 0x3a, 0x9d, 0x07, 0x72, + 0xd9, 0xac, 0xa0, 0x9c, 0xd4, 0x89, 0x80, 0xcc, 0xc6, 0xfd, 0x48, 0x1e, 0x13, 0x66, 0x2f, 0x65, + 0x96, 0x89, 0xfe, 0xdd, 0x87, 0x09, 0xf3, 0x70, 0x41, 0xe4, 0x00, 0x65, 0x9e, 0x39, 0x72, 0x1b, + 0x54, 0x83, 0x99, 0x0d, 0xc7, 0xc5, 0xbb, 0x12, 0xe1, 0xa3, 0x27, 0x3d, 0xec, 0x48, 0xb9, 0x83, + 0xcb, 0x5d, 0x95, 0x7a, 0x0d, 0x35, 0x08, 0x79, 0x51, 0xf2, 0xf1, 0xb3, 0xa9, 0x4a, 0x1d, 0xd9, + 0xf4, 0x50, 0x24, 0x96, 0x99, 0xdb, 0x38, 0xcb, 0xe9, 0x74, 0x36, 0xcf, 0x4f, 0x9a, 0x6c, 0xa0, + 0x92, 0x9e, 0xe0, 0xa8, 0xcd, 0x89, 0x33, 0xb3, 0x2b, 0x61, 0x78, 0x07, 0x2d, 0x27, 0xbc, 0x28, + 0x0c, 0x49, 0x8e, 0xe0, 0x72, 0x99, 0xdd, 0x2d, 0x90, 0xaf, 0xf1, 0xab, 0xce, 0x64, 0xf7, 0xc8, + 0x8d, 0x0e, 0x85, 0xf6, 0x73, 0x29, 0x93, 0x81, 0xf8, 0x50, 0x3a, 0x70, 0xb7, 0x61, 0x2a, 0xcb, + 0x35, 0x5b, 0x09, 0xb4, 0x83, 0xdf, 0x76, 0xee, 0x2c, 0xb0, 0xd9, 0x51, 0xa3, 0x91, 0x3f, 0x48, + 0x1d, 0x3c, 0x83, 0x73, 0x79, 0x7e, 0x08, 0x13, 0x6c, 0x96, 0x3c, 0xa4, 0xb4, 0x55, 0x69, 0xba, + 0x4f, 0x69, 0x48, 0x64, 0xb8, 0x63, 0x05, 0xca, 0xa3, 0xbd, 0x59, 0x20, 0xdf, 0x83, 0xd1, 0x47, + 0x4e, 0x54, 0x3f, 0x14, 0xd1, 0x3b, 0x65, 0x70, 0x4f, 0x84, 0xcd, 0xca, 0x5f, 0x58, 0x78, 0xb7, + 0x40, 0x3e, 0x82, 0xa1, 0x15, 0x1a, 0xe1, 0x53, 0xef, 0x6b, 0xca, 0x4b, 0x91, 0xdb, 0x26, 0xd7, + 0x3c, 0xf5, 0x06, 0x49, 0x36, 0x38, 0x69, 0xc8, 0x25, 0x77, 0x00, 0xf8, 0x82, 0x80, 0x1c, 0x92, + 0xc5, 0xb3, 0xa9, 0x66, 0x93, 0x15, 0xa6, 0x3c, 0x34, 0x69, 0x44, 0x4f, 0x5b, 0x65, 0x9e, 0x8c, + 0xd6, 0x61, 0x42, 0x25, 0x23, 0xda, 0xc4, 0x20, 0x2b, 0x56, 0x82, 0x59, 0x78, 0x06, 0x6e, 0xef, + 0xb3, 0xaf, 0x82, 0x67, 0xe2, 0x55, 0x9e, 0x86, 0x24, 0xcf, 0xf7, 0x50, 0x09, 0x91, 0xa3, 0x69, + 0xb4, 0xab, 0x7e, 0x18, 0x99, 0xb4, 0x0a, 0x92, 0x4d, 0xfb, 0xab, 0x30, 0xab, 0xd7, 0x6b, 0xc6, + 0x9d, 0x8e, 0xd7, 0xdc, 0xbc, 0x70, 0xd6, 0xb3, 0xd7, 0x3a, 0x60, 0x88, 0xf3, 0x5b, 0xdf, 0x6f, + 0xf7, 0x16, 0x70, 0x39, 0x59, 0x82, 0x49, 0x59, 0xd7, 0x56, 0x8b, 0x7a, 0xd5, 0xea, 0x2a, 0x26, + 0x9e, 0x91, 0x2e, 0x25, 0x1a, 0x4c, 0x72, 0x27, 0xe9, 0x22, 0xb6, 0xf5, 0x19, 0x51, 0x37, 0x48, + 0xa7, 0x58, 0x1c, 0xf1, 0xd6, 0x97, 0x19, 0xd7, 0xf8, 0x21, 0x37, 0x2a, 0x19, 0xca, 0xff, 0xde, + 0x3c, 0xe9, 0x70, 0x00, 0x9a, 0xcd, 0x39, 0x42, 0xdc, 0x2d, 0x90, 0x2f, 0x80, 0xa4, 0x8f, 0x24, + 0x4a, 0x84, 0xb9, 0xc7, 0x2f, 0x25, 0xc2, 0x0e, 0xe7, 0x99, 0x65, 0x98, 0x54, 0x31, 0x77, 0xe2, + 0x72, 0x92, 0xd3, 0x96, 0x0e, 0x3b, 0xd8, 0x74, 0x06, 0x9b, 0xbd, 0xf9, 0x0e, 0x8c, 0x32, 0xe1, + 0xe4, 0x13, 0x98, 0x14, 0x73, 0xdf, 0x68, 0x4f, 0x51, 0x2d, 0x63, 0xe2, 0x70, 0x93, 0xdb, 0x92, + 0x07, 0x30, 0x5d, 0x4d, 0x08, 0x9e, 0xbf, 0x08, 0xb8, 0x68, 0xb2, 0x40, 0x60, 0x95, 0x46, 0x5c, + 0xf2, 0xd9, 0xbc, 0x1e, 0x02, 0xe1, 0xb6, 0x25, 0xc9, 0xee, 0xa9, 0x4b, 0x9f, 0x91, 0xcb, 0x89, + 0xa6, 0x33, 0x20, 0xa2, 0xe1, 0x3a, 0x98, 0xdb, 0xb3, 0x1d, 0x9e, 0x8e, 0x1a, 0xa1, 0xc6, 0x55, + 0xfc, 0x55, 0x83, 0xc0, 0xb8, 0xcd, 0x17, 0xe3, 0x78, 0x31, 0x17, 0x83, 0xfc, 0x06, 0xc6, 0xcc, + 0xed, 0x7c, 0x3a, 0x23, 0xdf, 0xcb, 0x3a, 0x44, 0xe7, 0x9c, 0x2f, 0x67, 0xdf, 0x38, 0x1d, 0xb2, + 0x3a, 0x0f, 0x8f, 0xaf, 0xd0, 0x68, 0xbb, 0xd9, 0x3e, 0x70, 0x31, 0x51, 0x29, 0x51, 0xb6, 0x27, + 0x05, 0x12, 0xd3, 0x5b, 0x86, 0xaa, 0x8b, 0x0b, 0xaa, 0xf4, 0xc7, 0x64, 0x0d, 0x8a, 0x7c, 0x1b, + 0xd1, 0x58, 0x5c, 0x4e, 0xb1, 0x10, 0x28, 0x4e, 0xe0, 0x1c, 0x85, 0xb9, 0xa3, 0x75, 0x87, 0xfb, + 0x3e, 0x11, 0xf9, 0x69, 0xeb, 0x7a, 0xea, 0xa4, 0x01, 0x53, 0x09, 0x08, 0xd8, 0x88, 0xd8, 0x34, + 0xa4, 0x91, 0x0c, 0xce, 0xc3, 0xd3, 0xd4, 0x5e, 0x8f, 0x75, 0x86, 0x74, 0x69, 0xbc, 0x82, 0x24, + 0x02, 0xc9, 0xed, 0xbd, 0x49, 0x54, 0xea, 0xde, 0x0c, 0xa6, 0xaf, 0x1a, 0xaa, 0xcd, 0xd9, 0xf8, + 0xbe, 0x85, 0x5b, 0x19, 0x06, 0x24, 0x9a, 0x8e, 0xdb, 0xa6, 0xb9, 0x98, 0xcf, 0x8e, 0x6b, 0x54, + 0x7b, 0xf3, 0xb8, 0x32, 0xb2, 0xbd, 0x96, 0x69, 0xc2, 0xed, 0x20, 0xa0, 0x1e, 0x27, 0xce, 0x53, + 0x5b, 0xb2, 0xa8, 0x3f, 0xc6, 0x15, 0x4c, 0xa3, 0xe6, 0x0f, 0x17, 0xbb, 0xb1, 0xe0, 0x69, 0x95, + 0xee, 0x16, 0xc8, 0xbb, 0x30, 0x2c, 0xda, 0xc8, 0x88, 0x8c, 0x46, 0x87, 0x1d, 0x5a, 0x8d, 0x94, + 0xc0, 0x85, 0x84, 0x6d, 0x36, 0x71, 0xf2, 0x46, 0x9f, 0xb7, 0xf9, 0x5d, 0xb6, 0x67, 0x37, 0x5e, + 0x84, 0x72, 0x51, 0x6e, 0xde, 0x48, 0x59, 0x52, 0xf1, 0x71, 0x24, 0xa8, 0xcb, 0x2e, 0xcb, 0x99, + 0x30, 0xf5, 0x1b, 0x23, 0x41, 0xaa, 0x80, 0x6e, 0x4a, 0xfd, 0x36, 0xc0, 0xdd, 0xb6, 0xec, 0x35, + 0x28, 0x56, 0xea, 0xb8, 0xa1, 0x54, 0xe9, 0x91, 0xd3, 0x3a, 0xf4, 0x03, 0xaa, 0xce, 0x3e, 0xc9, + 0x02, 0xc9, 0x6b, 0x5a, 0x29, 0x28, 0xa2, 0x60, 0x9d, 0x3a, 0x18, 0x2e, 0x7b, 0x46, 0x69, 0x28, + 0x89, 0xa2, 0x6c, 0x8a, 0x0e, 0x67, 0x9d, 0xa9, 0x45, 0x76, 0x3a, 0x6b, 0x7e, 0x3b, 0x36, 0xef, + 0xe3, 0x82, 0xa1, 0x90, 0x43, 0xb5, 0x43, 0x28, 0x90, 0x3a, 0x15, 0xca, 0x37, 0x4c, 0x0a, 0xb5, + 0x22, 0xaf, 0x9e, 0x63, 0xb1, 0xe4, 0x51, 0xe7, 0x55, 0xff, 0x03, 0x98, 0x58, 0x66, 0x0b, 0x7a, + 0xbb, 0xe1, 0xf2, 0x14, 0x01, 0xc4, 0x8c, 0xf9, 0x9e, 0x4b, 0xb8, 0x2a, 0x33, 0x99, 0x21, 0xa9, + 0xb0, 0x20, 0xc8, 0x3d, 0x45, 0x83, 0xc9, 0xf1, 0x98, 0x92, 0x6c, 0x45, 0x96, 0x06, 0x3c, 0xe1, + 0x0b, 0x93, 0xc1, 0x0c, 0x57, 0x2c, 0x2b, 0xad, 0x56, 0x53, 0x5a, 0xb6, 0xf9, 0xf5, 0xfd, 0x0d, + 0xe3, 0x24, 0x9a, 0x2a, 0x97, 0xbc, 0xd3, 0xba, 0xe7, 0xe7, 0x5a, 0x66, 0xe1, 0x1c, 0x9e, 0x39, + 0xe5, 0xdd, 0xe6, 0xa2, 0x0a, 0xea, 0x5d, 0x69, 0x36, 0x53, 0xc4, 0x21, 0x79, 0xdd, 0xe4, 0x9e, + 0x85, 0xd3, 0xad, 0x06, 0x3c, 0xe9, 0x73, 0xe5, 0xad, 0xd2, 0x6a, 0xf1, 0xc5, 0xf2, 0x8a, 0x5a, + 0x30, 0xcc, 0x82, 0xf4, 0x49, 0x3f, 0x59, 0x2e, 0xd6, 0xf6, 0x07, 0x38, 0xcd, 0xe2, 0xf4, 0xc3, + 0x44, 0x3f, 0x37, 0x27, 0xb3, 0x2f, 0x2b, 0x5d, 0x2e, 0x51, 0xa8, 0xf6, 0x89, 0x73, 0xa8, 0x41, + 0xc5, 0xb9, 0x8c, 0x95, 0x81, 0x27, 0x01, 0x97, 0xfc, 0xae, 0xe4, 0x15, 0x2b, 0x83, 0x6b, 0x31, + 0x99, 0xe2, 0x5d, 0x75, 0x39, 0x9d, 0xfb, 0xdd, 0xec, 0x72, 0x6e, 0x6e, 0xf8, 0x07, 0x50, 0x4c, + 0x66, 0x97, 0x56, 0x4c, 0x73, 0xd2, 0x4e, 0xe7, 0x8e, 0xc9, 0x7d, 0x98, 0xd2, 0x47, 0x54, 0xf5, + 0x3b, 0x6f, 0xf5, 0xcf, 0xe3, 0xb3, 0x03, 0xd3, 0x99, 0xc9, 0xa0, 0xd5, 0x16, 0xdb, 0x29, 0x55, + 0x74, 0x2e, 0x57, 0x0a, 0x17, 0xb2, 0xf3, 0xc1, 0x93, 0x57, 0x4c, 0xfb, 0x41, 0x76, 0x76, 0xec, + 0xd9, 0x1b, 0x5d, 0xb0, 0x84, 0x40, 0xbf, 0xc6, 0x1d, 0x30, 0x55, 0xc7, 0x35, 0xcd, 0xa2, 0x90, + 0x53, 0x81, 0xd5, 0x09, 0x45, 0xcd, 0x81, 0xa9, 0x8c, 0xe2, 0x7c, 0x11, 0x5f, 0xcf, 0xe7, 0x19, + 0x4f, 0xac, 0x3d, 0x19, 0xbb, 0x3a, 0x57, 0x32, 0x1d, 0xf3, 0x86, 0x77, 0x38, 0x92, 0xce, 0xaa, + 0xf9, 0x70, 0xfa, 0x26, 0xe7, 0x71, 0x6b, 0x28, 0xeb, 0x8f, 0x91, 0xd4, 0x3b, 0x69, 0xfd, 0xc9, + 0x4a, 0x46, 0xae, 0xc4, 0xd0, 0x29, 0xdd, 0x3d, 0xdf, 0x8d, 0xbf, 0xe2, 0xe6, 0x20, 0xb3, 0x0a, + 0xdd, 0x1c, 0x94, 0xc9, 0xff, 0x6a, 0x3e, 0x82, 0xce, 0xdc, 0xe1, 0x77, 0xbf, 0x89, 0xac, 0xe4, + 0x44, 0x3f, 0x71, 0x65, 0x67, 0x2c, 0x57, 0x73, 0x23, 0x13, 0x45, 0xaf, 0xe2, 0x91, 0xfc, 0x06, + 0x73, 0xa4, 0xd4, 0x21, 0x65, 0x7b, 0x67, 0x35, 0x65, 0x0b, 0x4a, 0xf1, 0x60, 0x26, 0x3a, 0x70, + 0xc6, 0xa1, 0x94, 0xc2, 0xb8, 0x98, 0x9b, 0xa8, 0x9d, 0xbc, 0x96, 0xfa, 0xd2, 0x73, 0x04, 0xd3, + 0xb1, 0x0a, 0xbe, 0x9e, 0x6b, 0xb1, 0xb0, 0x2f, 0xc5, 0xb6, 0x60, 0x3d, 0xa7, 0x7b, 0x6a, 0x3d, + 0xcf, 0x48, 0xf8, 0xbe, 0x82, 0x7a, 0xb1, 0x96, 0xb4, 0x3d, 0xb7, 0xd7, 0x97, 0xb3, 0xf8, 0x84, + 0xe9, 0x15, 0x57, 0x6b, 0x97, 0xd4, 0xd3, 0x92, 0x05, 0x67, 0x59, 0x71, 0x4f, 0xd3, 0xb4, 0x3c, + 0x3e, 0x4b, 0x30, 0xaa, 0x65, 0x7b, 0x27, 0x17, 0x0d, 0x31, 0x19, 0x7b, 0xe8, 0xac, 0xd1, 0x39, + 0x73, 0xfb, 0x5c, 0x44, 0x8b, 0xb4, 0xca, 0x19, 0x9f, 0xdb, 0x8a, 0x4b, 0x69, 0x1e, 0x86, 0x35, + 0x5a, 0x49, 0x81, 0xb7, 0x66, 0x2e, 0x29, 0x1c, 0xa3, 0x41, 0xf9, 0x5d, 0x22, 0xba, 0x68, 0xba, + 0x34, 0x29, 0x5f, 0x7f, 0x9d, 0x14, 0x29, 0x65, 0x31, 0x81, 0x8d, 0x8c, 0xa3, 0x78, 0x41, 0x99, + 0xd6, 0x34, 0x68, 0x07, 0x4b, 0xc7, 0x36, 0xbe, 0x40, 0xc9, 0x48, 0x7f, 0xaf, 0x56, 0xd8, 0x8e, + 0xd9, 0xf1, 0x33, 0x74, 0x37, 0xb5, 0x66, 0xe7, 0x72, 0xec, 0x98, 0x0f, 0x3f, 0xb7, 0xa5, 0x3f, + 0xd4, 0xd6, 0xec, 0x54, 0x92, 0x7b, 0x72, 0x33, 0xa9, 0xb8, 0xe5, 0xe5, 0xc1, 0xef, 0xb0, 0x27, + 0x4c, 0x65, 0xe5, 0xc7, 0xd7, 0xcc, 0xc3, 0xb9, 0xc9, 0xf3, 0x33, 0xa4, 0x60, 0xcb, 0xf9, 0x9f, + 0xc3, 0xad, 0x43, 0xb6, 0xfc, 0xdc, 0x16, 0x7e, 0xa9, 0x2d, 0x74, 0x89, 0xac, 0xf6, 0xea, 0x38, + 0xde, 0x25, 0xed, 0x7d, 0x2e, 0xef, 0x4d, 0x7c, 0xb3, 0x94, 0x4e, 0x49, 0xaf, 0x34, 0x9b, 0x4e, + 0x09, 0xeb, 0x33, 0xad, 0xc7, 0xd3, 0xe9, 0x2e, 0x32, 0x7e, 0x17, 0x12, 0xb6, 0xdf, 0x6e, 0x0d, + 0xfb, 0x5a, 0x2e, 0xc6, 0x19, 0xa9, 0xec, 0x13, 0x8b, 0x71, 0x7e, 0xb2, 0xfb, 0x0e, 0xc7, 0xa0, + 0x73, 0x55, 0xf7, 0xc0, 0xd3, 0x32, 0xd1, 0xab, 0x43, 0x50, 0x3a, 0x39, 0xbe, 0x5a, 0x62, 0xb2, + 0x12, 0xd7, 0x6f, 0x31, 0xfd, 0x87, 0x6b, 0xef, 0x7a, 0x4e, 0x71, 0x32, 0x9b, 0x9f, 0x4a, 0x5d, + 0x2d, 0x37, 0x99, 0x49, 0xc8, 0x35, 0x86, 0x7a, 0x42, 0x6f, 0xc5, 0x30, 0x23, 0xb7, 0xb8, 0x62, + 0x98, 0x99, 0x01, 0xfc, 0x0e, 0x5a, 0x5d, 0x6c, 0xbf, 0x49, 0x75, 0xab, 0x8b, 0x96, 0x21, 0x3a, + 0x61, 0xf4, 0x20, 0x1f, 0xa0, 0xc9, 0xa3, 0xb3, 0x9d, 0x64, 0xc6, 0xe4, 0xa4, 0x7b, 0x96, 0x8c, + 0xa8, 0xf4, 0xdb, 0xca, 0xc6, 0x9e, 0xcc, 0x00, 0x3e, 0x5b, 0x4a, 0x17, 0x08, 0xfa, 0xb7, 0xa5, + 0xd5, 0x04, 0x1b, 0x5c, 0x32, 0xad, 0x4d, 0xf9, 0x6d, 0x7e, 0x5b, 0x9a, 0x4c, 0x0c, 0xb2, 0x54, + 0xf2, 0xed, 0x24, 0xd9, 0x0f, 0x60, 0x2c, 0x4e, 0xb4, 0xbd, 0x37, 0xaf, 0x11, 0x26, 0xb2, 0x6f, + 0x27, 0x09, 0xdf, 0x95, 0xd7, 0x2a, 0x58, 0x9f, 0x59, 0xd8, 0x59, 0x05, 0xf8, 0x58, 0x9a, 0x68, + 0x8c, 0x96, 0xa6, 0xd2, 0x76, 0x77, 0x58, 0xb9, 0xc7, 0xf4, 0xec, 0xa0, 0x6a, 0x5e, 0x64, 0xe4, + 0xf7, 0x55, 0xf3, 0x22, 0x2b, 0x3f, 0x6f, 0x7c, 0xed, 0xf0, 0x85, 0xb4, 0x47, 0xc4, 0x4c, 0x2f, + 0x1b, 0xcd, 0x4a, 0xf1, 0xbd, 0x92, 0x57, 0x9c, 0x64, 0x5d, 0x85, 0x62, 0x32, 0x95, 0xa9, 0x3a, + 0xcc, 0xe5, 0xe4, 0x9c, 0x55, 0x27, 0xc4, 0xdc, 0x1c, 0xa8, 0xdb, 0xd2, 0xb8, 0x6e, 0xf2, 0xbd, + 0x96, 0xdd, 0x28, 0x9d, 0x75, 0xbe, 0xb5, 0x7d, 0xdc, 0xc8, 0x6a, 0xaa, 0x1f, 0xb3, 0x53, 0x59, + 0x53, 0x75, 0xb5, 0x2c, 0x23, 0x11, 0xaa, 0x2b, 0xc3, 0x66, 0x65, 0x27, 0x57, 0x7f, 0xdd, 0x3c, + 0xff, 0x76, 0x88, 0x64, 0xdf, 0xf5, 0x0a, 0x9a, 0xfc, 0x0a, 0xcc, 0xe4, 0x04, 0xfd, 0x26, 0x37, + 0x12, 0x66, 0xda, 0xec, 0xa0, 0xe0, 0x6a, 0x82, 0x64, 0xa6, 0x1b, 0xdf, 0x40, 0xdf, 0x05, 0x23, + 0xbe, 0x44, 0xea, 0x3e, 0xf0, 0x91, 0x1b, 0x1d, 0xf2, 0xac, 0xda, 0xda, 0x9a, 0x9b, 0x19, 0x98, + 0x82, 0x54, 0xf1, 0x20, 0x63, 0x40, 0x33, 0xae, 0x04, 0x33, 0x18, 0xce, 0x66, 0x33, 0x64, 0x6b, + 0x07, 0x9b, 0x0b, 0x19, 0xc1, 0x3f, 0xd4, 0x5c, 0xc8, 0x0f, 0x0c, 0x92, 0xdb, 0xcc, 0x6d, 0xa9, + 0x60, 0x65, 0x73, 0xcc, 0x8f, 0x03, 0x92, 0xcb, 0xf1, 0x01, 0xe3, 0x98, 0x0a, 0xed, 0x41, 0x72, + 0xd0, 0x3b, 0xaf, 0x1e, 0xb6, 0xdc, 0xaf, 0x4d, 0xaa, 0x79, 0xad, 0x7d, 0x79, 0x41, 0x44, 0x72, + 0xdb, 0xb7, 0x2c, 0xbf, 0xa7, 0xec, 0xf6, 0x9d, 0x76, 0xc7, 0x56, 0x97, 0x67, 0x89, 0xf0, 0x38, + 0x46, 0x47, 0x35, 0xf8, 0x6c, 0x0e, 0x9c, 0x6c, 0xa2, 0x33, 0x52, 0x12, 0xaa, 0x9d, 0x68, 0xb3, + 0xe3, 0xef, 0xe4, 0xf2, 0xe3, 0xf3, 0xd8, 0x08, 0xff, 0x71, 0x96, 0x79, 0x9c, 0x88, 0x1b, 0x22, + 0xe6, 0xb1, 0x01, 0x3d, 0xdb, 0x3c, 0x4e, 0x30, 0x34, 0xe7, 0x71, 0xb2, 0x99, 0x49, 0x33, 0x41, + 0xee, 0xa8, 0x26, 0x9b, 0xa9, 0xe6, 0x71, 0x36, 0xc7, 0xfc, 0x30, 0x2d, 0xb9, 0x1c, 0xd5, 0x3c, + 0x36, 0x39, 0xe6, 0xa0, 0x9f, 0x72, 0x1e, 0x27, 0x2b, 0x31, 0xe7, 0xf1, 0x99, 0xda, 0xa7, 0xe6, + 0x71, 0x76, 0xfb, 0xce, 0x3c, 0x8f, 0x13, 0x81, 0x99, 0x8c, 0x8e, 0x66, 0xcd, 0xe3, 0x24, 0x3e, + 0x9f, 0xc7, 0x49, 0x68, 0xc2, 0x32, 0xd3, 0x61, 0x1e, 0x27, 0x29, 0x3f, 0x43, 0x7e, 0x89, 0x98, + 0x2c, 0xa7, 0x99, 0xc9, 0xb9, 0xe1, 0x5c, 0xc8, 0x23, 0xb4, 0x0d, 0x26, 0xe0, 0xa7, 0x9b, 0xcd, + 0x73, 0x79, 0x4c, 0x71, 0x3e, 0xef, 0x49, 0x21, 0x26, 0x9b, 0x6b, 0x1a, 0xbe, 0xb2, 0x43, 0xd2, + 0x74, 0x68, 0xf0, 0x1e, 0x9b, 0x37, 0x8d, 0x0e, 0x7c, 0x3b, 0x45, 0xd4, 0xe9, 0xc0, 0x57, 0x9d, + 0x83, 0x92, 0x7c, 0x73, 0x49, 0x3a, 0xcf, 0xef, 0xcf, 0xe5, 0xed, 0x48, 0x92, 0x6e, 0x3e, 0x71, + 0xb2, 0x3a, 0x73, 0x4b, 0xd5, 0x09, 0x2b, 0xd9, 0xd2, 0xb3, 0xce, 0xf3, 0x0d, 0xa9, 0x3d, 0xa4, + 0xe2, 0x7e, 0x25, 0x3a, 0xad, 0xcf, 0xf5, 0xdc, 0x12, 0xb2, 0x83, 0x86, 0xe0, 0x34, 0x5c, 0x33, + 0x22, 0xe7, 0x05, 0x2d, 0xeb, 0xc0, 0xf5, 0x50, 0xe6, 0x35, 0xc9, 0x0b, 0x4e, 0x46, 0xde, 0xc8, + 0x98, 0x50, 0xb9, 0x31, 0xcc, 0xba, 0xb6, 0x3f, 0x15, 0xbe, 0x48, 0x6f, 0x7f, 0x5e, 0x6c, 0x23, + 0xc5, 0x35, 0x4d, 0xfd, 0x09, 0x1a, 0xe9, 0xc4, 0xdb, 0x32, 0xef, 0xb1, 0x9f, 0x7f, 0xa2, 0x9a, + 0x34, 0x5c, 0xb3, 0x18, 0x2e, 0x7a, 0xc4, 0x7d, 0x28, 0x2e, 0x1a, 0x25, 0x30, 0x77, 0x98, 0xb3, + 0xe8, 0xc9, 0x27, 0x50, 0x14, 0x0b, 0x69, 0xcc, 0x20, 0x0b, 0x31, 0x77, 0x92, 0x2c, 0x48, 0xdb, + 0xe0, 0x29, 0x5a, 0x70, 0x1a, 0x9b, 0xe0, 0x69, 0x24, 0x91, 0x6f, 0x40, 0x63, 0x1b, 0xef, 0x4e, + 0xd0, 0x0e, 0x23, 0xda, 0x48, 0x1b, 0xbe, 0xcc, 0xc6, 0x48, 0x07, 0x0e, 0x13, 0x7d, 0x6f, 0x9e, + 0xac, 0xe1, 0x2a, 0x6a, 0x82, 0x3b, 0x59, 0x06, 0xb3, 0xd9, 0xe0, 0x22, 0xb7, 0xaa, 0x1e, 0x31, + 0x99, 0x6d, 0xca, 0xab, 0x3b, 0xbf, 0x51, 0x4a, 0x44, 0xa7, 0xec, 0x5d, 0x9e, 0x88, 0xf8, 0xd1, + 0x9d, 0x5b, 0x29, 0xbb, 0x49, 0x26, 0xf9, 0xac, 0x8a, 0x7c, 0x0a, 0x23, 0x92, 0xb8, 0xbb, 0x40, + 0x92, 0xd4, 0x28, 0x90, 0x25, 0x18, 0x37, 0xde, 0x8c, 0xa9, 0x73, 0x54, 0xd6, 0x4b, 0xb2, 0x0e, + 0xe3, 0x3c, 0x6e, 0xbc, 0x0d, 0x53, 0x5c, 0xb2, 0x5e, 0x8c, 0xe5, 0x72, 0xf9, 0x08, 0x46, 0x85, + 0x48, 0x3b, 0x4a, 0x23, 0xdf, 0x2c, 0x38, 0xad, 0xf9, 0x5f, 0xb7, 0x1b, 0x6e, 0xb4, 0xe8, 0x7b, + 0x8f, 0xdd, 0x83, 0xae, 0x82, 0x49, 0x93, 0xec, 0xcd, 0x93, 0xaf, 0x30, 0x69, 0xb5, 0x4c, 0x25, + 0x4e, 0xa3, 0x67, 0x7e, 0xf0, 0xc4, 0xf5, 0x0e, 0xba, 0xb0, 0xbc, 0x6a, 0xb2, 0x4c, 0xd2, 0x49, + 0x17, 0x97, 0xaf, 0x60, 0xb6, 0x9a, 0xcf, 0xbc, 0x2b, 0x93, 0xce, 0x1b, 0x59, 0x15, 0xe6, 0xd0, + 0xc9, 0xe7, 0xac, 0x6d, 0xef, 0xc8, 0xf4, 0x0b, 0x1e, 0xf8, 0x52, 0x5e, 0x29, 0xd4, 0xfd, 0xa0, + 0xd1, 0x9d, 0x63, 0xd9, 0x74, 0x1b, 0x4e, 0x90, 0x49, 0x61, 0x7c, 0x01, 0x17, 0xab, 0xb9, 0xac, + 0xbb, 0xb1, 0xe8, 0xa6, 0xb3, 0x5e, 0x42, 0x51, 0x9c, 0xb1, 0xdd, 0x1d, 0x79, 0xae, 0xe1, 0x9a, + 0xc6, 0xf6, 0xa1, 0xed, 0x80, 0x3e, 0xa6, 0x01, 0x3a, 0xa7, 0x77, 0x73, 0xcb, 0x36, 0xd1, 0x65, + 0xcf, 0xd7, 0xe0, 0x7c, 0x35, 0xc5, 0x2a, 0x8f, 0xa4, 0xdb, 0x35, 0xd5, 0x24, 0xf6, 0xf4, 0x94, + 0xed, 0xea, 0xe2, 0xcc, 0x34, 0xba, 0x42, 0xa3, 0xdd, 0xb5, 0x2e, 0x52, 0x92, 0xaf, 0x27, 0x24, + 0xe2, 0xde, 0x3d, 0x46, 0x59, 0xd5, 0x28, 0xd3, 0x18, 0xb9, 0x1f, 0xef, 0xa7, 0xf2, 0xca, 0xa6, + 0x6b, 0xb5, 0x79, 0x1c, 0xde, 0xc4, 0xb5, 0x50, 0x38, 0x68, 0x6b, 0xc6, 0x4e, 0x0e, 0x89, 0x8d, + 0x82, 0x9a, 0xaf, 0x76, 0x48, 0x2a, 0xfc, 0xa0, 0xc9, 0xa7, 0x87, 0x80, 0x5d, 0x49, 0x39, 0xee, + 0x77, 0x64, 0xc1, 0x8d, 0xb5, 0xeb, 0x7e, 0xfd, 0x89, 0x6e, 0xac, 0x65, 0xbf, 0x93, 0x86, 0x48, + 0x06, 0xdb, 0x9b, 0x17, 0x2b, 0x3e, 0xfb, 0x61, 0xf8, 0xa7, 0x21, 0x20, 0x5e, 0xf1, 0x93, 0x70, + 0x61, 0xab, 0x7a, 0x53, 0x5a, 0x31, 0xb1, 0x42, 0x93, 0x73, 0xae, 0x68, 0x94, 0x01, 0x13, 0x89, + 0x4c, 0x03, 0xa6, 0xde, 0xd0, 0xfc, 0x2b, 0x07, 0x62, 0xd3, 0x56, 0x13, 0x7d, 0xbe, 0x8f, 0x7c, + 0x4e, 0x13, 0xbb, 0x01, 0xa7, 0x8b, 0xba, 0xbb, 0x99, 0x4d, 0x0a, 0xe7, 0x24, 0x43, 0xf0, 0x2a, + 0x78, 0x74, 0xba, 0x2c, 0x16, 0xa5, 0xee, 0x33, 0x75, 0xb7, 0x40, 0x36, 0xe1, 0xc2, 0x0a, 0x8d, + 0xc4, 0x1a, 0x67, 0xd3, 0x30, 0x0a, 0xdc, 0x7a, 0xd4, 0xf1, 0xfe, 0x52, 0x9e, 0x82, 0x32, 0x68, + 0xf6, 0xde, 0x62, 0xfc, 0xaa, 0xd9, 0xfc, 0x3a, 0xd2, 0x75, 0xf0, 0xe4, 0x15, 0x97, 0x22, 0x67, + 0x69, 0x62, 0xfe, 0x14, 0x1f, 0xe2, 0x8e, 0x42, 0xf9, 0xa4, 0xc5, 0x38, 0xce, 0x8b, 0x38, 0xd7, + 0xdd, 0x86, 0x41, 0x4e, 0x94, 0xbb, 0xa1, 0x8e, 0xe9, 0x34, 0xe4, 0x1e, 0x8c, 0x28, 0x4f, 0x1f, + 0x62, 0x14, 0xe5, 0xb6, 0xeb, 0x1e, 0x8c, 0xf0, 0x43, 0xdc, 0xe9, 0x49, 0x3e, 0x80, 0x11, 0xe5, + 0x1a, 0x74, 0xe6, 0x9d, 0xfe, 0x13, 0x18, 0xd7, 0x9d, 0x84, 0xce, 0x2e, 0xc8, 0x8f, 0xf0, 0x96, + 0x59, 0x5e, 0xe6, 0xe4, 0xd3, 0x4f, 0x27, 0xc2, 0xdf, 0x08, 0x91, 0xf2, 0x05, 0x52, 0x02, 0x73, + 0x9b, 0x7f, 0x3e, 0x45, 0x4d, 0x3e, 0x90, 0xef, 0xb6, 0x14, 0x71, 0x1a, 0xa9, 0x83, 0xcc, 0x26, + 0xb8, 0x98, 0x5f, 0x84, 0x58, 0x2d, 0xb0, 0x5d, 0x9b, 0x7d, 0x9a, 0xdb, 0xf0, 0xee, 0xa2, 0xcb, + 0xe3, 0xb2, 0x85, 0x5a, 0x5a, 0x2a, 0x07, 0x61, 0x3e, 0xa3, 0x2b, 0xf9, 0x69, 0x0b, 0x71, 0x30, + 0x1e, 0xe0, 0x29, 0x30, 0x55, 0x9a, 0xdb, 0xbd, 0x0e, 0x69, 0x10, 0xe3, 0x03, 0x76, 0x9a, 0x5d, + 0x07, 0xb2, 0x4e, 0xe7, 0x75, 0xf1, 0x1a, 0xf5, 0xa5, 0xb0, 0x5b, 0x93, 0xbe, 0x96, 0xa7, 0xef, + 0x6c, 0x7e, 0xcb, 0x2e, 0x65, 0xdc, 0xbf, 0x77, 0x1d, 0x8b, 0x3c, 0x76, 0xbf, 0x82, 0xda, 0x61, + 0x66, 0xfc, 0xb3, 0x7c, 0x66, 0x37, 0x35, 0x17, 0x8e, 0x4c, 0x4a, 0xb5, 0xe9, 0x3d, 0xc1, 0x07, + 0x71, 0xd9, 0x59, 0x1a, 0x5f, 0xed, 0xc2, 0x45, 0x4a, 0xe2, 0xb5, 0xae, 0x78, 0xea, 0x36, 0xf7, + 0x12, 0xdf, 0x61, 0xb3, 0xeb, 0xeb, 0x92, 0x75, 0x32, 0xe3, 0x82, 0x5d, 0x39, 0xb2, 0x66, 0x33, + 0x34, 0x1d, 0x59, 0x3b, 0xf6, 0x21, 0x4f, 0xfc, 0x9f, 0x41, 0x39, 0xf6, 0x53, 0x39, 0xdb, 0x20, + 0xe4, 0xfb, 0x4f, 0x92, 0x94, 0xa4, 0x42, 0xd2, 0x29, 0x75, 0xd2, 0xec, 0xb5, 0x3c, 0x09, 0x87, + 0x9a, 0x03, 0x94, 0xf0, 0xbf, 0x4b, 0xe4, 0x2b, 0xcd, 0xcb, 0x7c, 0xda, 0xc1, 0xe2, 0x2b, 0x5e, + 0x08, 0xbe, 0x14, 0x46, 0xe9, 0xd1, 0x3e, 0x3b, 0x23, 0xe5, 0x46, 0x92, 0x60, 0x64, 0x75, 0x18, + 0xde, 0xee, 0x97, 0x9c, 0xa5, 0x9c, 0x71, 0x3d, 0xfb, 0x80, 0x3a, 0xf1, 0xab, 0xb8, 0x44, 0xb8, + 0x44, 0xfd, 0x25, 0x72, 0xba, 0x28, 0xf9, 0xa4, 0x2b, 0x0b, 0x43, 0xf9, 0x6e, 0x95, 0x64, 0x15, + 0x0c, 0xce, 0x8e, 0x22, 0x7e, 0xe0, 0x46, 0xcf, 0x17, 0xed, 0xf5, 0xd8, 0xac, 0xa0, 0x17, 0x48, + 0xde, 0x20, 0x0b, 0xed, 0x75, 0xf2, 0x25, 0x2e, 0x25, 0x82, 0xfd, 0x82, 0xef, 0x47, 0x61, 0x14, + 0x38, 0xad, 0x6a, 0x3d, 0x70, 0x5b, 0x51, 0x6e, 0xa7, 0x63, 0x57, 0xf3, 0x2c, 0x32, 0xcd, 0xf3, + 0x55, 0x84, 0xd3, 0xcf, 0x8a, 0xf3, 0xa3, 0x5e, 0xff, 0x64, 0x15, 0x76, 0x38, 0xb9, 0x54, 0x65, + 0x00, 0xfd, 0x97, 0xc9, 0xb4, 0x06, 0x33, 0x39, 0xd1, 0x91, 0xd4, 0x3d, 0x71, 0xe7, 0xe8, 0x49, + 0xb3, 0x9d, 0x2b, 0x26, 0x5f, 0xc1, 0x74, 0x66, 0xf8, 0x24, 0x65, 0xeb, 0xee, 0x14, 0x5c, 0xa9, + 0x1b, 0xf3, 0x27, 0x50, 0xe2, 0xef, 0x4e, 0xd0, 0xbd, 0xda, 0x88, 0xa4, 0x13, 0xbf, 0x46, 0xca, + 0x41, 0x48, 0xae, 0xd7, 0xf9, 0x78, 0xea, 0x69, 0xfd, 0x14, 0x86, 0x50, 0x49, 0xa4, 0xc3, 0x57, + 0x1f, 0x5e, 0x56, 0x61, 0xa7, 0x27, 0x4f, 0xdb, 0x30, 0xbd, 0x47, 0x03, 0xf7, 0xf1, 0xf3, 0x24, + 0x43, 0x29, 0x99, 0xcc, 0xd2, 0x4e, 0x1c, 0x3f, 0x87, 0x99, 0x45, 0xff, 0xa8, 0x25, 0x1e, 0x17, + 0x1a, 0x3c, 0xd5, 0xa5, 0x7f, 0x76, 0x79, 0x77, 0x97, 0xab, 0x59, 0xf5, 0xfa, 0x51, 0xa7, 0x5b, + 0xc4, 0xc7, 0xbb, 0x37, 0x4d, 0xc7, 0x85, 0x0c, 0x94, 0xf8, 0xcd, 0x88, 0x3c, 0xca, 0xe9, 0xf4, + 0x3b, 0x38, 0x09, 0x13, 0x74, 0xdc, 0x36, 0xa7, 0x4d, 0xc2, 0xac, 0xf2, 0xce, 0x4f, 0xd5, 0x32, + 0xb8, 0xf2, 0x0a, 0xf3, 0xb9, 0x9e, 0xa2, 0xb5, 0x9b, 0x72, 0x6f, 0x31, 0xd3, 0xbc, 0x27, 0x7c, + 0xbb, 0x33, 0x73, 0xc0, 0x67, 0xb6, 0x53, 0x8b, 0x21, 0xd1, 0x6c, 0x76, 0x50, 0xb1, 0x88, 0x1e, + 0x44, 0x82, 0x61, 0xa2, 0x11, 0x7f, 0x5c, 0xa7, 0xed, 0xb4, 0x5a, 0xa7, 0x88, 0x51, 0xa9, 0x7d, + 0x1f, 0xc6, 0xaa, 0x7a, 0xe5, 0x19, 0x95, 0xe4, 0x4e, 0x0a, 0xf5, 0x58, 0xa9, 0x7b, 0xdb, 0x3b, + 0xb8, 0xac, 0xaa, 0x8d, 0xe7, 0x54, 0xbd, 0xc8, 0x75, 0xd2, 0x31, 0xf2, 0xec, 0xa9, 0x5d, 0x20, + 0x2b, 0x0d, 0xa6, 0x72, 0xd2, 0xc9, 0x4e, 0xcd, 0x57, 0xe3, 0x99, 0x81, 0x92, 0x59, 0x4e, 0x89, + 0xd5, 0x3d, 0x9d, 0xb0, 0x72, 0xdd, 0xef, 0x98, 0x26, 0x95, 0x7b, 0x14, 0xc5, 0x99, 0x05, 0x75, + 0x8f, 0xa2, 0x54, 0xbe, 0x42, 0xdd, 0xa3, 0x28, 0x23, 0x19, 0xe1, 0x32, 0xf2, 0x8a, 0x53, 0x2a, + 0x75, 0x30, 0x46, 0x28, 0x36, 0x19, 0x99, 0x9b, 0x1e, 0xea, 0xa1, 0x48, 0x78, 0x22, 0xa6, 0x0e, + 0xb6, 0xd6, 0x64, 0x08, 0x92, 0x44, 0xe6, 0xa6, 0xfb, 0x50, 0xe4, 0x29, 0x1d, 0xe2, 0xe8, 0x8d, + 0xb1, 0x87, 0x62, 0x3a, 0xd3, 0x44, 0x87, 0x41, 0x2d, 0x26, 0xe3, 0xde, 0x29, 0x93, 0x59, 0x4e, + 0x40, 0xbc, 0x0e, 0x53, 0x15, 0xe2, 0xe8, 0x76, 0xca, 0x30, 0x95, 0x0a, 0x78, 0x37, 0x7b, 0x31, + 0xa3, 0x44, 0xa9, 0x94, 0x63, 0x7a, 0x2c, 0x3c, 0xd5, 0xa5, 0x8c, 0x00, 0x79, 0xb3, 0x97, 0x32, + 0xcb, 0x04, 0xa3, 0x88, 0x67, 0xd4, 0xce, 0xce, 0x29, 0x1e, 0xbf, 0x37, 0xeb, 0x80, 0x23, 0xab, + 0xb9, 0x75, 0x1a, 0x54, 0x51, 0x2b, 0x55, 0x09, 0xa5, 0x32, 0x12, 0x99, 0xbf, 0x96, 0xf1, 0x24, + 0xc4, 0xc0, 0x88, 0xfd, 0xce, 0x3a, 0x67, 0x55, 0x27, 0x8f, 0x64, 0x7e, 0x9c, 0x9c, 0x9a, 0xba, + 0x31, 0xc8, 0x1d, 0xc1, 0x47, 0x32, 0x23, 0xce, 0xcb, 0x66, 0xbc, 0x0f, 0x73, 0x89, 0x77, 0x26, + 0x26, 0xe3, 0x5b, 0xd9, 0x8f, 0x51, 0x32, 0xc5, 0x93, 0xaf, 0xb3, 0x5f, 0x4d, 0xbf, 0x47, 0x49, + 0x8c, 0xfb, 0x59, 0xd7, 0xbc, 0x0d, 0x98, 0xc0, 0x65, 0x46, 0xa6, 0xe4, 0x8f, 0x23, 0xe1, 0x98, + 0xe0, 0x64, 0x48, 0xa6, 0x64, 0xa9, 0x72, 0xce, 0x1d, 0x13, 0x6f, 0x97, 0x79, 0x82, 0xff, 0x59, + 0xf3, 0x41, 0x33, 0x02, 0xb3, 0x76, 0x31, 0x2c, 0xd8, 0xbb, 0x47, 0x3e, 0x82, 0x73, 0xf1, 0x93, + 0x66, 0xce, 0x22, 0x03, 0xad, 0x83, 0xa1, 0xec, 0x5c, 0xfc, 0xae, 0xf9, 0xec, 0xe4, 0xab, 0x72, + 0x2b, 0x8a, 0xc9, 0x2f, 0xa7, 0x5e, 0xe5, 0x18, 0x7d, 0x38, 0xcd, 0x8e, 0xa4, 0xc9, 0xf6, 0xac, + 0xa3, 0x53, 0xc7, 0xcf, 0x2d, 0x3b, 0xc8, 0xa3, 0xfe, 0xb9, 0x75, 0x0c, 0x44, 0xa9, 0xd4, 0xdf, + 0x1c, 0x3e, 0x1b, 0x70, 0x1d, 0x03, 0xc3, 0x6c, 0xf3, 0x50, 0x80, 0xd9, 0x58, 0xf9, 0x6d, 0x4f, + 0x86, 0x93, 0x69, 0xc2, 0xb5, 0xae, 0x51, 0x2e, 0xc9, 0x1d, 0xc3, 0x99, 0xa6, 0x7b, 0x3c, 0xcc, + 0x0e, 0x27, 0x8f, 0xa9, 0xac, 0x60, 0x91, 0x6a, 0x9f, 0xed, 0x10, 0xb7, 0x52, 0xed, 0xb3, 0x1d, + 0xa3, 0x4d, 0x7e, 0x8e, 0x49, 0xa7, 0xc4, 0x1e, 0x85, 0xc1, 0x9e, 0xa8, 0xc7, 0xc3, 0x5f, 0x77, + 0xbc, 0xf6, 0xb9, 0x66, 0x5e, 0x8a, 0xa6, 0x08, 0xf1, 0x4c, 0x73, 0x45, 0x9c, 0xc4, 0xf2, 0x98, + 0x77, 0x67, 0xd2, 0xc1, 0x89, 0xfb, 0x0a, 0x9f, 0x80, 0x67, 0x6e, 0x79, 0x0e, 0x7c, 0x61, 0xe9, + 0x67, 0xff, 0xe9, 0x4a, 0xe1, 0x67, 0x3f, 0xbf, 0x52, 0xf8, 0xb7, 0x3f, 0xbf, 0x52, 0xf8, 0x8f, + 0x3f, 0xbf, 0x52, 0xf8, 0x72, 0xfe, 0x74, 0x41, 0x98, 0xeb, 0x4d, 0x97, 0x7a, 0xd1, 0x1d, 0xce, + 0x6e, 0x10, 0xff, 0x7b, 0xf3, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x7d, 0xa4, 0x73, 0xad, 0x11, + 0xec, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -16947,6 +17108,8 @@ type AuthServiceClient interface { CreateGithubAuthRequest(ctx context.Context, in *types.GithubAuthRequest, opts ...grpc.CallOption) (*types.GithubAuthRequest, error) // GetGithubAuthRequest returns Github auth request if found. GetGithubAuthRequest(ctx context.Context, in *GetGithubAuthRequestRequest, opts ...grpc.CallOption) (*types.GithubAuthRequest, error) + // CreateGithubAuthRequestForUser TODO is there a better place? + CreateGithubAuthRequestForUser(ctx context.Context, in *CreateGithubAuthRequestForUserRequest, opts ...grpc.CallOption) (*types.GithubAuthRequest, error) // GetSSODiagnosticInfo returns SSO diagnostic info records. GetSSODiagnosticInfo(ctx context.Context, in *GetSSODiagnosticInfoRequest, opts ...grpc.CallOption) (*types.SSODiagnosticInfo, error) // GetServerInfos returns a stream of ServerInfos. @@ -18866,6 +19029,15 @@ func (c *authServiceClient) GetGithubAuthRequest(ctx context.Context, in *GetGit return out, nil } +func (c *authServiceClient) CreateGithubAuthRequestForUser(ctx context.Context, in *CreateGithubAuthRequestForUserRequest, opts ...grpc.CallOption) (*types.GithubAuthRequest, error) { + out := new(types.GithubAuthRequest) + err := c.cc.Invoke(ctx, "/proto.AuthService/CreateGithubAuthRequestForUser", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *authServiceClient) GetSSODiagnosticInfo(ctx context.Context, in *GetSSODiagnosticInfoRequest, opts ...grpc.CallOption) (*types.SSODiagnosticInfo, error) { out := new(types.SSODiagnosticInfo) err := c.cc.Invoke(ctx, "/proto.AuthService/GetSSODiagnosticInfo", in, out, opts...) @@ -20351,6 +20523,8 @@ type AuthServiceServer interface { CreateGithubAuthRequest(context.Context, *types.GithubAuthRequest) (*types.GithubAuthRequest, error) // GetGithubAuthRequest returns Github auth request if found. GetGithubAuthRequest(context.Context, *GetGithubAuthRequestRequest) (*types.GithubAuthRequest, error) + // CreateGithubAuthRequestForUser TODO is there a better place? + CreateGithubAuthRequestForUser(context.Context, *CreateGithubAuthRequestForUserRequest) (*types.GithubAuthRequest, error) // GetSSODiagnosticInfo returns SSO diagnostic info records. GetSSODiagnosticInfo(context.Context, *GetSSODiagnosticInfoRequest) (*types.SSODiagnosticInfo, error) // GetServerInfos returns a stream of ServerInfos. @@ -21083,6 +21257,9 @@ func (*UnimplementedAuthServiceServer) CreateGithubAuthRequest(ctx context.Conte func (*UnimplementedAuthServiceServer) GetGithubAuthRequest(ctx context.Context, req *GetGithubAuthRequestRequest) (*types.GithubAuthRequest, error) { return nil, status.Errorf(codes.Unimplemented, "method GetGithubAuthRequest not implemented") } +func (*UnimplementedAuthServiceServer) CreateGithubAuthRequestForUser(ctx context.Context, req *CreateGithubAuthRequestForUserRequest) (*types.GithubAuthRequest, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateGithubAuthRequestForUser not implemented") +} func (*UnimplementedAuthServiceServer) GetSSODiagnosticInfo(ctx context.Context, req *GetSSODiagnosticInfoRequest) (*types.SSODiagnosticInfo, error) { return nil, status.Errorf(codes.Unimplemented, "method GetSSODiagnosticInfo not implemented") } @@ -24051,6 +24228,24 @@ func _AuthService_GetGithubAuthRequest_Handler(srv interface{}, ctx context.Cont return interceptor(ctx, in, info, handler) } +func _AuthService_CreateGithubAuthRequestForUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateGithubAuthRequestForUserRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(AuthServiceServer).CreateGithubAuthRequestForUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/proto.AuthService/CreateGithubAuthRequestForUser", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(AuthServiceServer).CreateGithubAuthRequestForUser(ctx, req.(*CreateGithubAuthRequestForUserRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _AuthService_GetSSODiagnosticInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetSSODiagnosticInfoRequest) if err := dec(in); err != nil { @@ -26660,6 +26855,10 @@ var _AuthService_serviceDesc = grpc.ServiceDesc{ MethodName: "GetGithubAuthRequest", Handler: _AuthService_GetGithubAuthRequest_Handler, }, + { + MethodName: "CreateGithubAuthRequestForUser", + Handler: _AuthService_CreateGithubAuthRequestForUser_Handler, + }, { MethodName: "GetSSODiagnosticInfo", Handler: _AuthService_GetSSODiagnosticInfo_Handler, @@ -27515,6 +27714,18 @@ func (m *UserCertsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + { + size, err := m.RouteToGitServer.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAuthservice(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xda if m.TLSPublicKeyAttestationStatement != nil { { size, err := m.TLSPublicKeyAttestationStatement.MarshalToSizedBuffer(dAtA[:i]) @@ -27721,12 +27932,12 @@ func (m *UserCertsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x22 } - n10, err10 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err10 != nil { - return 0, err10 + n11, err11 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err11 != nil { + return 0, err11 } - i -= n10 - i = encodeVarintAuthservice(dAtA, i, uint64(n10)) + i -= n11 + i = encodeVarintAuthservice(dAtA, i, uint64(n11)) i-- dAtA[i] = 0x1a if len(m.Username) > 0 { @@ -27851,6 +28062,40 @@ func (m *RouteToWindowsDesktop) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *RouteToGitServer) 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 *RouteToGitServer) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RouteToGitServer) 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.GitHubOrganization) > 0 { + i -= len(m.GitHubOrganization) + copy(dAtA[i:], m.GitHubOrganization) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.GitHubOrganization))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *RouteToApp) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -28148,12 +28393,12 @@ func (m *RequestStateSetter) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if m.AssumeStartTime != nil { - n12, err12 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.AssumeStartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.AssumeStartTime):]) - if err12 != nil { - return 0, err12 + n13, err13 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.AssumeStartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.AssumeStartTime):]) + if err13 != nil { + return 0, err13 } - i -= n12 - i = encodeVarintAuthservice(dAtA, i, uint64(n12)) + i -= n13 + i = encodeVarintAuthservice(dAtA, i, uint64(n13)) i-- dAtA[i] = 0x3a } @@ -29668,12 +29913,12 @@ func (m *GenerateAppTokenRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) dAtA[i] = 0x2a } } - n28, err28 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err28 != nil { - return 0, err28 + n29, err29 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err29 != nil { + return 0, err29 } - i -= n28 - i = encodeVarintAuthservice(dAtA, i, uint64(n28)) + i -= n29 + i = encodeVarintAuthservice(dAtA, i, uint64(n29)) i-- dAtA[i] = 0x22 if len(m.URI) > 0 { @@ -32791,6 +33036,27 @@ func (m *IsMFARequiredRequest_App) MarshalToSizedBuffer(dAtA []byte) (int, error } return len(dAtA) - i, nil } +func (m *IsMFARequiredRequest_GitServer) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *IsMFARequiredRequest_GitServer) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.GitServer != nil { + { + size, err := m.GitServer.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAuthservice(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + return len(dAtA) - i, nil +} func (m *StreamSessionEventsRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -32990,20 +33256,20 @@ func (m *GetEventsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x22 } } - n63, err63 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.EndDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.EndDate):]) - if err63 != nil { - return 0, err63 + n65, err65 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.EndDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.EndDate):]) + if err65 != nil { + return 0, err65 } - i -= n63 - i = encodeVarintAuthservice(dAtA, i, uint64(n63)) + i -= n65 + i = encodeVarintAuthservice(dAtA, i, uint64(n65)) i-- dAtA[i] = 0x1a - n64, err64 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.StartDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.StartDate):]) - if err64 != nil { - return 0, err64 + n66, err66 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.StartDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.StartDate):]) + if err66 != nil { + return 0, err66 } - i -= n64 - i = encodeVarintAuthservice(dAtA, i, uint64(n64)) + i -= n66 + i = encodeVarintAuthservice(dAtA, i, uint64(n66)) i-- dAtA[i] = 0x12 if len(m.Namespace) > 0 { @@ -33057,20 +33323,20 @@ func (m *GetSessionEventsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) i-- dAtA[i] = 0x18 } - n65, err65 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.EndDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.EndDate):]) - if err65 != nil { - return 0, err65 + 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 } - i -= n65 - i = encodeVarintAuthservice(dAtA, i, uint64(n65)) + i -= n67 + i = encodeVarintAuthservice(dAtA, i, uint64(n67)) i-- dAtA[i] = 0x12 - n66, err66 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.StartDate, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.StartDate):]) - if err66 != nil { - return 0, err66 + 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 } - i -= n66 - i = encodeVarintAuthservice(dAtA, i, uint64(n66)) + i -= n68 + i = encodeVarintAuthservice(dAtA, i, uint64(n68)) i-- dAtA[i] = 0xa return len(dAtA) - i, nil @@ -34436,12 +34702,12 @@ func (m *RecoveryCodes) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n73, err73 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err73 != nil { - return 0, err73 + n75, err75 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err75 != nil { + return 0, err75 } - i -= n73 - i = encodeVarintAuthservice(dAtA, i, uint64(n73)) + i -= n75 + i = encodeVarintAuthservice(dAtA, i, uint64(n75)) i-- dAtA[i] = 0x12 if len(m.Codes) > 0 { @@ -34902,6 +35168,15 @@ func (m *PaginatedResource) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.Resource != nil { + { + size := m.Resource.Size() + i -= size + if _, err := m.Resource.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } + } if m.RequiresRequest { i-- if m.RequiresRequest { @@ -34921,15 +35196,6 @@ func (m *PaginatedResource) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x6a } } - if m.Resource != nil { - { - size := m.Resource.Size() - i -= size - if _, err := m.Resource.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - } - } return len(dAtA) - i, nil } @@ -35164,6 +35430,27 @@ func (m *PaginatedResource_SAMLIdPServiceProvider) MarshalToSizedBuffer(dAtA []b } return len(dAtA) - i, nil } +func (m *PaginatedResource_GitServer) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PaginatedResource_GitServer) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.GitServer != nil { + { + size, err := m.GitServer.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAuthservice(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x7a + } + return len(dAtA) - i, nil +} func (m *ListUnifiedResourcesRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -35885,12 +36172,12 @@ func (m *SessionTrackerUpdateExpiry) MarshalToSizedBuffer(dAtA []byte) (int, err copy(dAtA[i:], m.XXX_unrecognized) } if m.Expires != nil { - n98, err98 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) - if err98 != nil { - return 0, err98 + n101, err101 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) + if err101 != nil { + return 0, err101 } - i -= n98 - i = encodeVarintAuthservice(dAtA, i, uint64(n98)) + i -= n101 + i = encodeVarintAuthservice(dAtA, i, uint64(n101)) i-- dAtA[i] = 0xa } @@ -36381,6 +36668,52 @@ func (m *GetGithubAuthRequestRequest) MarshalToSizedBuffer(dAtA []byte) (int, er return len(dAtA) - i, nil } +func (m *CreateGithubAuthRequestForUserRequest) 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 *CreateGithubAuthRequestForUserRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CreateGithubAuthRequestForUserRequest) 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.RedirectUrl) > 0 { + i -= len(m.RedirectUrl) + copy(dAtA[i:], m.RedirectUrl) + i = encodeVarintAuthservice(dAtA, i, uint64(len(m.RedirectUrl))) + i-- + dAtA[i] = 0x12 + } + if m.CertRequest != nil { + { + size, err := m.CertRequest.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintAuthservice(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *CreateOIDCConnectorRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -39178,6 +39511,8 @@ func (m *UserCertsRequest) Size() (n int) { l = m.TLSPublicKeyAttestationStatement.Size() n += 2 + l + sovAuthservice(uint64(l)) } + l = m.RouteToGitServer.Size() + n += 2 + l + sovAuthservice(uint64(l)) if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -39238,6 +39573,22 @@ func (m *RouteToWindowsDesktop) Size() (n int) { return n } +func (m *RouteToGitServer) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.GitHubOrganization) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *RouteToApp) Size() (n int) { if m == nil { return 0 @@ -41480,6 +41831,18 @@ func (m *IsMFARequiredRequest_App) Size() (n int) { } return n } +func (m *IsMFARequiredRequest_GitServer) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.GitServer != nil { + l = m.GitServer.Size() + n += 1 + l + sovAuthservice(uint64(l)) + } + return n +} func (m *StreamSessionEventsRequest) Size() (n int) { if m == nil { return 0 @@ -42616,6 +42979,18 @@ func (m *PaginatedResource_SAMLIdPServiceProvider) Size() (n int) { } return n } +func (m *PaginatedResource_GitServer) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.GitServer != nil { + l = m.GitServer.Size() + n += 1 + l + sovAuthservice(uint64(l)) + } + return n +} func (m *ListUnifiedResourcesRequest) Size() (n int) { if m == nil { return 0 @@ -43171,6 +43546,26 @@ func (m *GetGithubAuthRequestRequest) Size() (n int) { return n } +func (m *CreateGithubAuthRequestForUserRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.CertRequest != nil { + l = m.CertRequest.Size() + n += 1 + l + sovAuthservice(uint64(l)) + } + l = len(m.RedirectUrl) + if l > 0 { + n += 1 + l + sovAuthservice(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *CreateOIDCConnectorRequest) Size() (n int) { if m == nil { return 0 @@ -45938,10 +46333,43 @@ func (m *UserCertsRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.TLSPublicKeyAttestationStatement == nil { - m.TLSPublicKeyAttestationStatement = &v1.AttestationStatement{} - } - if err := m.TLSPublicKeyAttestationStatement.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.TLSPublicKeyAttestationStatement == nil { + m.TLSPublicKeyAttestationStatement = &v1.AttestationStatement{} + } + if err := m.TLSPublicKeyAttestationStatement.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 27: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RouteToGitServer", 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 err := m.RouteToGitServer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -46293,6 +46721,89 @@ func (m *RouteToWindowsDesktop) Unmarshal(dAtA []byte) error { } return nil } +func (m *RouteToGitServer) 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: RouteToGitServer: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RouteToGitServer: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GitHubOrganization", 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.GitHubOrganization = 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 *RouteToApp) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -58279,6 +58790,41 @@ func (m *IsMFARequiredRequest) Unmarshal(dAtA []byte) error { } m.Target = &IsMFARequiredRequest_App{v} iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GitServer", 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 := &RouteToGitServer{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Target = &IsMFARequiredRequest_GitServer{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) @@ -63889,6 +64435,41 @@ func (m *PaginatedResource) Unmarshal(dAtA []byte) error { } } m.RequiresRequest = bool(v != 0) + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GitServer", 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 := &types.ServerV2{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Resource = &PaginatedResource_GitServer{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipAuthservice(dAtA[iNdEx:]) @@ -66952,6 +67533,125 @@ func (m *GetGithubAuthRequestRequest) Unmarshal(dAtA []byte) error { } return nil } +func (m *CreateGithubAuthRequestForUserRequest) 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: CreateGithubAuthRequestForUserRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CreateGithubAuthRequestForUserRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CertRequest", 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.CertRequest == nil { + m.CertRequest = &UserCertsRequest{} + } + if err := m.CertRequest.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RedirectUrl", 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.RedirectUrl = 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 *CreateOIDCConnectorRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/api/constants/constants.go b/api/constants/constants.go index e0105386d8324..63b4ed2ebd863 100644 --- a/api/constants/constants.go +++ b/api/constants/constants.go @@ -405,6 +405,10 @@ const ( // TraitHostUserGID is the name of the variable used to specify // the GID to create host user account with. TraitHostUserGID = "host_user_gid" + + // TraitGitHubOrganizations is the name of the variable used to store + // allowed GitHub organizations. + TraitGitHubOrganizations = "github_orgs" ) const ( diff --git a/api/gen/proto/go/teleport/gitserver/v1/git_server_service.pb.go b/api/gen/proto/go/teleport/gitserver/v1/git_server_service.pb.go new file mode 100644 index 0000000000000..11e07d7b77153 --- /dev/null +++ b/api/gen/proto/go/teleport/gitserver/v1/git_server_service.pb.go @@ -0,0 +1,329 @@ +// Copyright 2024 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. DO NOT EDIT. +// versions: +// protoc-gen-go v1.34.2 +// protoc (unknown) +// source: teleport/gitserver/v1/git_server_service.proto + +package gitserverv1 + +import ( + types "github.com/gravitational/teleport/api/types" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + emptypb "google.golang.org/protobuf/types/known/emptypb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// The request for GetGitServer. +type GetGitServerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name is the uuid of the server. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *GetGitServerRequest) Reset() { + *x = GetGitServerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_gitserver_v1_git_server_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetGitServerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetGitServerRequest) ProtoMessage() {} + +func (x *GetGitServerRequest) ProtoReflect() protoreflect.Message { + mi := &file_teleport_gitserver_v1_git_server_service_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetGitServerRequest.ProtoReflect.Descriptor instead. +func (*GetGitServerRequest) Descriptor() ([]byte, []int) { + return file_teleport_gitserver_v1_git_server_service_proto_rawDescGZIP(), []int{0} +} + +func (x *GetGitServerRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +// The request for UpsertGitServer. +type UpsertGitServerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Server is the Git server to upsert. + Server *types.ServerV2 `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"` +} + +func (x *UpsertGitServerRequest) Reset() { + *x = UpsertGitServerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_gitserver_v1_git_server_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpsertGitServerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpsertGitServerRequest) ProtoMessage() {} + +func (x *UpsertGitServerRequest) ProtoReflect() protoreflect.Message { + mi := &file_teleport_gitserver_v1_git_server_service_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpsertGitServerRequest.ProtoReflect.Descriptor instead. +func (*UpsertGitServerRequest) Descriptor() ([]byte, []int) { + return file_teleport_gitserver_v1_git_server_service_proto_rawDescGZIP(), []int{1} +} + +func (x *UpsertGitServerRequest) GetServer() *types.ServerV2 { + if x != nil { + return x.Server + } + return nil +} + +// The request for DeleteGitServer. +type DeleteGitServerRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name is the uuid of the server. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (x *DeleteGitServerRequest) Reset() { + *x = DeleteGitServerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_gitserver_v1_git_server_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteGitServerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteGitServerRequest) ProtoMessage() {} + +func (x *DeleteGitServerRequest) ProtoReflect() protoreflect.Message { + mi := &file_teleport_gitserver_v1_git_server_service_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteGitServerRequest.ProtoReflect.Descriptor instead. +func (*DeleteGitServerRequest) Descriptor() ([]byte, []int) { + return file_teleport_gitserver_v1_git_server_service_proto_rawDescGZIP(), []int{2} +} + +func (x *DeleteGitServerRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +var File_teleport_gitserver_v1_git_server_service_proto protoreflect.FileDescriptor + +var file_teleport_gitserver_v1_git_server_service_proto_rawDesc = []byte{ + 0x0a, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x67, 0x69, 0x74, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x69, 0x74, 0x5f, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x15, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x67, 0x69, 0x74, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x6c, + 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x29, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x47, 0x69, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x41, 0x0a, 0x16, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x47, 0x69, 0x74, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x06, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x32, 0x52, 0x06, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, + 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x32, 0x8c, 0x02, 0x0a, 0x10, 0x47, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4b, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x47, + 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x2e, 0x67, 0x69, 0x74, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x47, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x56, 0x32, 0x12, 0x51, 0x0a, 0x0f, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x47, + 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x2e, 0x67, 0x69, 0x74, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x47, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x32, 0x12, 0x58, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x47, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x2d, 0x2e, 0x74, 0x65, + 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x67, 0x69, 0x74, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x69, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x42, 0x56, 0x5a, 0x54, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, + 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x2f, 0x67, 0x69, 0x74, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x76, 0x31, 0x3b, 0x67, + 0x69, 0x74, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_teleport_gitserver_v1_git_server_service_proto_rawDescOnce sync.Once + file_teleport_gitserver_v1_git_server_service_proto_rawDescData = file_teleport_gitserver_v1_git_server_service_proto_rawDesc +) + +func file_teleport_gitserver_v1_git_server_service_proto_rawDescGZIP() []byte { + file_teleport_gitserver_v1_git_server_service_proto_rawDescOnce.Do(func() { + file_teleport_gitserver_v1_git_server_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_teleport_gitserver_v1_git_server_service_proto_rawDescData) + }) + return file_teleport_gitserver_v1_git_server_service_proto_rawDescData +} + +var file_teleport_gitserver_v1_git_server_service_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_teleport_gitserver_v1_git_server_service_proto_goTypes = []any{ + (*GetGitServerRequest)(nil), // 0: teleport.gitserver.v1.GetGitServerRequest + (*UpsertGitServerRequest)(nil), // 1: teleport.gitserver.v1.UpsertGitServerRequest + (*DeleteGitServerRequest)(nil), // 2: teleport.gitserver.v1.DeleteGitServerRequest + (*types.ServerV2)(nil), // 3: types.ServerV2 + (*emptypb.Empty)(nil), // 4: google.protobuf.Empty +} +var file_teleport_gitserver_v1_git_server_service_proto_depIdxs = []int32{ + 3, // 0: teleport.gitserver.v1.UpsertGitServerRequest.server:type_name -> types.ServerV2 + 0, // 1: teleport.gitserver.v1.GitServerService.GetGitServer:input_type -> teleport.gitserver.v1.GetGitServerRequest + 1, // 2: teleport.gitserver.v1.GitServerService.UpsertGitServer:input_type -> teleport.gitserver.v1.UpsertGitServerRequest + 2, // 3: teleport.gitserver.v1.GitServerService.DeleteGitServer:input_type -> teleport.gitserver.v1.DeleteGitServerRequest + 3, // 4: teleport.gitserver.v1.GitServerService.GetGitServer:output_type -> types.ServerV2 + 3, // 5: teleport.gitserver.v1.GitServerService.UpsertGitServer:output_type -> types.ServerV2 + 4, // 6: teleport.gitserver.v1.GitServerService.DeleteGitServer:output_type -> google.protobuf.Empty + 4, // [4:7] is the sub-list for method output_type + 1, // [1:4] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_teleport_gitserver_v1_git_server_service_proto_init() } +func file_teleport_gitserver_v1_git_server_service_proto_init() { + if File_teleport_gitserver_v1_git_server_service_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_teleport_gitserver_v1_git_server_service_proto_msgTypes[0].Exporter = func(v any, i int) any { + switch v := v.(*GetGitServerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_gitserver_v1_git_server_service_proto_msgTypes[1].Exporter = func(v any, i int) any { + switch v := v.(*UpsertGitServerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_gitserver_v1_git_server_service_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*DeleteGitServerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_teleport_gitserver_v1_git_server_service_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_teleport_gitserver_v1_git_server_service_proto_goTypes, + DependencyIndexes: file_teleport_gitserver_v1_git_server_service_proto_depIdxs, + MessageInfos: file_teleport_gitserver_v1_git_server_service_proto_msgTypes, + }.Build() + File_teleport_gitserver_v1_git_server_service_proto = out.File + file_teleport_gitserver_v1_git_server_service_proto_rawDesc = nil + file_teleport_gitserver_v1_git_server_service_proto_goTypes = nil + file_teleport_gitserver_v1_git_server_service_proto_depIdxs = nil +} diff --git a/api/gen/proto/go/teleport/gitserver/v1/git_server_service_grpc.pb.go b/api/gen/proto/go/teleport/gitserver/v1/git_server_service_grpc.pb.go new file mode 100644 index 0000000000000..0295d38e7f011 --- /dev/null +++ b/api/gen/proto/go/teleport/gitserver/v1/git_server_service_grpc.pb.go @@ -0,0 +1,223 @@ +// Copyright 2024 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/gitserver/v1/git_server_service.proto + +package gitserverv1 + +import ( + context "context" + types "github.com/gravitational/teleport/api/types" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + emptypb "google.golang.org/protobuf/types/known/emptypb" +) + +// 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 ( + GitServerService_GetGitServer_FullMethodName = "/teleport.gitserver.v1.GitServerService/GetGitServer" + GitServerService_UpsertGitServer_FullMethodName = "/teleport.gitserver.v1.GitServerService/UpsertGitServer" + GitServerService_DeleteGitServer_FullMethodName = "/teleport.gitserver.v1.GitServerService/DeleteGitServer" +) + +// GitServerServiceClient is the client API for GitServerService 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. +// +// GitServerService provides methods to manage Git server. +type GitServerServiceClient interface { + // GetGitServer is used to retrieve a Git server object. + GetGitServer(ctx context.Context, in *GetGitServerRequest, opts ...grpc.CallOption) (*types.ServerV2, error) + // UpsertGitServer is used to create or replace a Git server object. + UpsertGitServer(ctx context.Context, in *UpsertGitServerRequest, opts ...grpc.CallOption) (*types.ServerV2, error) + // DeleteGitServer is used to delete a Git server object. + DeleteGitServer(ctx context.Context, in *DeleteGitServerRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) +} + +type gitServerServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewGitServerServiceClient(cc grpc.ClientConnInterface) GitServerServiceClient { + return &gitServerServiceClient{cc} +} + +func (c *gitServerServiceClient) GetGitServer(ctx context.Context, in *GetGitServerRequest, opts ...grpc.CallOption) (*types.ServerV2, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(types.ServerV2) + err := c.cc.Invoke(ctx, GitServerService_GetGitServer_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gitServerServiceClient) UpsertGitServer(ctx context.Context, in *UpsertGitServerRequest, opts ...grpc.CallOption) (*types.ServerV2, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(types.ServerV2) + err := c.cc.Invoke(ctx, GitServerService_UpsertGitServer_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *gitServerServiceClient) DeleteGitServer(ctx context.Context, in *DeleteGitServerRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, GitServerService_DeleteGitServer_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// GitServerServiceServer is the server API for GitServerService service. +// All implementations must embed UnimplementedGitServerServiceServer +// for forward compatibility. +// +// GitServerService provides methods to manage Git server. +type GitServerServiceServer interface { + // GetGitServer is used to retrieve a Git server object. + GetGitServer(context.Context, *GetGitServerRequest) (*types.ServerV2, error) + // UpsertGitServer is used to create or replace a Git server object. + UpsertGitServer(context.Context, *UpsertGitServerRequest) (*types.ServerV2, error) + // DeleteGitServer is used to delete a Git server object. + DeleteGitServer(context.Context, *DeleteGitServerRequest) (*emptypb.Empty, error) + mustEmbedUnimplementedGitServerServiceServer() +} + +// UnimplementedGitServerServiceServer must 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 UnimplementedGitServerServiceServer struct{} + +func (UnimplementedGitServerServiceServer) GetGitServer(context.Context, *GetGitServerRequest) (*types.ServerV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetGitServer not implemented") +} +func (UnimplementedGitServerServiceServer) UpsertGitServer(context.Context, *UpsertGitServerRequest) (*types.ServerV2, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpsertGitServer not implemented") +} +func (UnimplementedGitServerServiceServer) DeleteGitServer(context.Context, *DeleteGitServerRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteGitServer not implemented") +} +func (UnimplementedGitServerServiceServer) mustEmbedUnimplementedGitServerServiceServer() {} +func (UnimplementedGitServerServiceServer) testEmbeddedByValue() {} + +// UnsafeGitServerServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to GitServerServiceServer will +// result in compilation errors. +type UnsafeGitServerServiceServer interface { + mustEmbedUnimplementedGitServerServiceServer() +} + +func RegisterGitServerServiceServer(s grpc.ServiceRegistrar, srv GitServerServiceServer) { + // If the following call pancis, it indicates UnimplementedGitServerServiceServer 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(&GitServerService_ServiceDesc, srv) +} + +func _GitServerService_GetGitServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetGitServerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GitServerServiceServer).GetGitServer(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: GitServerService_GetGitServer_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GitServerServiceServer).GetGitServer(ctx, req.(*GetGitServerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GitServerService_UpsertGitServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpsertGitServerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GitServerServiceServer).UpsertGitServer(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: GitServerService_UpsertGitServer_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GitServerServiceServer).UpsertGitServer(ctx, req.(*UpsertGitServerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _GitServerService_DeleteGitServer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteGitServerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GitServerServiceServer).DeleteGitServer(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: GitServerService_DeleteGitServer_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GitServerServiceServer).DeleteGitServer(ctx, req.(*DeleteGitServerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// GitServerService_ServiceDesc is the grpc.ServiceDesc for GitServerService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var GitServerService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "teleport.gitserver.v1.GitServerService", + HandlerType: (*GitServerServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetGitServer", + Handler: _GitServerService_GetGitServer_Handler, + }, + { + MethodName: "UpsertGitServer", + Handler: _GitServerService_UpsertGitServer_Handler, + }, + { + MethodName: "DeleteGitServer", + Handler: _GitServerService_DeleteGitServer_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "teleport/gitserver/v1/git_server_service.proto", +} diff --git a/api/gen/proto/go/teleport/integration/v1/integration_service.pb.go b/api/gen/proto/go/teleport/integration/v1/integration_service.pb.go index b2c35e081f6d0..c8ed6be8356cb 100644 --- a/api/gen/proto/go/teleport/integration/v1/integration_service.pb.go +++ b/api/gen/proto/go/teleport/integration/v1/integration_service.pb.go @@ -24,6 +24,7 @@ import ( types "github.com/gravitational/teleport/api/types" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + durationpb "google.golang.org/protobuf/types/known/durationpb" emptypb "google.golang.org/protobuf/types/known/emptypb" reflect "reflect" sync "sync" @@ -46,6 +47,8 @@ type ListIntegrationsRequest struct { Limit int32 `protobuf:"varint,1,opt,name=limit,proto3" json:"limit,omitempty"` // NextKey is the key for the next page of Integrations. NextKey string `protobuf:"bytes,2,opt,name=next_key,json=nextKey,proto3" json:"next_key,omitempty"` + // WithSecrets specifies whether to load associated secrets. + WithSecrets bool `protobuf:"varint,3,opt,name=with_secrets,json=withSecrets,proto3" json:"with_secrets,omitempty"` } func (x *ListIntegrationsRequest) Reset() { @@ -94,6 +97,13 @@ func (x *ListIntegrationsRequest) GetNextKey() string { return "" } +func (x *ListIntegrationsRequest) GetWithSecrets() bool { + if x != nil { + return x.WithSecrets + } + return false +} + // ListIntegrationsResponse is the response for ListIntegrationsRequest. type ListIntegrationsResponse struct { state protoimpl.MessageState @@ -169,6 +179,8 @@ type GetIntegrationRequest struct { // Name is the name of the Integration to be requested. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // WithSecrets specifies whether to load associated secrets. + WithSecrets bool `protobuf:"varint,2,opt,name=with_secrets,json=withSecrets,proto3" json:"with_secrets,omitempty"` } func (x *GetIntegrationRequest) Reset() { @@ -210,6 +222,13 @@ func (x *GetIntegrationRequest) GetName() string { return "" } +func (x *GetIntegrationRequest) GetWithSecrets() bool { + if x != nil { + return x.WithSecrets + } + return false +} + // CreateIntegrationRequest is the request to create the provided integration. type CreateIntegrationRequest struct { state protoimpl.MessageState @@ -512,6 +531,150 @@ func (x *GenerateAWSOIDCTokenResponse) GetToken() string { return "" } +// GenerateGitHubUserCertRequest is a request to sign a client certificate used by +// GitHub integration to authenticate with GitHub enterprise. +type GenerateGitHubUserCertRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Integration is the name of the integration; + Integration string `protobuf:"bytes,1,opt,name=integration,proto3" json:"integration,omitempty"` + // PublicKey is the public key to be signed. + PublicKey []byte `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + // Login is the GitHub username. + Login string `protobuf:"bytes,3,opt,name=login,proto3" json:"login,omitempty"` + // KeyId is the certficate ID, usually the Teleport username. + KeyId string `protobuf:"bytes,4,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` + // Ttl is the duration the certificate will be valid for. + Ttl *durationpb.Duration `protobuf:"bytes,5,opt,name=ttl,proto3" json:"ttl,omitempty"` + // UserId is the GitHub user id. One of Login and UserId is required. + UserId string `protobuf:"bytes,6,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` +} + +func (x *GenerateGitHubUserCertRequest) Reset() { + *x = GenerateGitHubUserCertRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_integration_v1_integration_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenerateGitHubUserCertRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateGitHubUserCertRequest) ProtoMessage() {} + +func (x *GenerateGitHubUserCertRequest) ProtoReflect() protoreflect.Message { + mi := &file_teleport_integration_v1_integration_service_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenerateGitHubUserCertRequest.ProtoReflect.Descriptor instead. +func (*GenerateGitHubUserCertRequest) Descriptor() ([]byte, []int) { + return file_teleport_integration_v1_integration_service_proto_rawDescGZIP(), []int{9} +} + +func (x *GenerateGitHubUserCertRequest) GetIntegration() string { + if x != nil { + return x.Integration + } + return "" +} + +func (x *GenerateGitHubUserCertRequest) GetPublicKey() []byte { + if x != nil { + return x.PublicKey + } + return nil +} + +func (x *GenerateGitHubUserCertRequest) GetLogin() string { + if x != nil { + return x.Login + } + return "" +} + +func (x *GenerateGitHubUserCertRequest) GetKeyId() string { + if x != nil { + return x.KeyId + } + return "" +} + +func (x *GenerateGitHubUserCertRequest) GetTtl() *durationpb.Duration { + if x != nil { + return x.Ttl + } + return nil +} + +func (x *GenerateGitHubUserCertRequest) GetUserId() string { + if x != nil { + return x.UserId + } + return "" +} + +// GenerateGitHubUserCertResponse contains a signed certificate. +type GenerateGitHubUserCertResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // AuthorizedKey is the signed certificate. + AuthorizedKey []byte `protobuf:"bytes,1,opt,name=authorized_key,json=authorizedKey,proto3" json:"authorized_key,omitempty"` +} + +func (x *GenerateGitHubUserCertResponse) Reset() { + *x = GenerateGitHubUserCertResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_integration_v1_integration_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenerateGitHubUserCertResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenerateGitHubUserCertResponse) ProtoMessage() {} + +func (x *GenerateGitHubUserCertResponse) ProtoReflect() protoreflect.Message { + mi := &file_teleport_integration_v1_integration_service_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenerateGitHubUserCertResponse.ProtoReflect.Descriptor instead. +func (*GenerateGitHubUserCertResponse) Descriptor() ([]byte, []int) { + return file_teleport_integration_v1_integration_service_proto_rawDescGZIP(), []int{10} +} + +func (x *GenerateGitHubUserCertResponse) GetAuthorizedKey() []byte { + if x != nil { + return x.AuthorizedKey + } + return nil +} + var File_teleport_integration_v1_integration_service_proto protoreflect.FileDescriptor var file_teleport_integration_v1_integration_service_proto_rawDesc = []byte{ @@ -519,106 +682,139 @@ var file_teleport_integration_v1_integration_service_proto_rawDesc = []byte{ 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x1b, 0x67, 0x6f, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4a, 0x0a, 0x17, + 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6d, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x6e, 0x65, 0x78, 0x74, 0x4b, 0x65, 0x79, 0x22, 0x90, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, - 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, - 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, - 0x31, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x2b, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x52, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, + 0x07, 0x6e, 0x65, 0x78, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, + 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, + 0x77, 0x69, 0x74, 0x68, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x18, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x56, 0x31, 0x52, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1f, 0x0a, + 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x4e, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x77, + 0x69, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x52, + 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0b, 0x69, 0x6e, + 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x56, 0x31, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x52, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, + 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x31, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2e, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x41, 0x6c, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5b, 0x0a, 0x1b, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x41, 0x57, 0x53, 0x4f, 0x49, 0x44, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, + 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x22, 0x34, 0x0a, 0x1c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, + 0x57, 0x53, 0x4f, 0x49, 0x44, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xd3, 0x01, 0x0a, 0x1d, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, + 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, + 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x6f, 0x67, + 0x69, 0x6e, 0x12, 0x15, 0x0a, 0x06, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x6b, 0x65, 0x79, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x03, 0x74, 0x74, 0x6c, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x03, 0x74, 0x74, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, + 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, + 0x47, 0x0a, 0x1e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x48, 0x75, + 0x62, 0x55, 0x73, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x32, 0xfb, 0x06, 0x0a, 0x12, 0x49, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x77, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x31, + 0x12, 0x5c, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, + 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x31, 0x12, 0x5c, + 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x31, 0x12, 0x5e, 0x0a, 0x11, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x31, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, + 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, - 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x31, 0x52, - 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x52, 0x0a, 0x18, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x56, 0x31, 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x2e, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0x5b, 0x0a, 0x1b, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x57, 0x53, 0x4f, - 0x49, 0x44, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x02, 0x18, 0x01, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x0b, 0x69, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x34, 0x0a, - 0x1c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x57, 0x53, 0x4f, 0x49, 0x44, 0x43, - 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x32, 0xef, 0x05, 0x0a, 0x12, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x77, 0x0a, 0x10, 0x4c, 0x69, - 0x73, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, - 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x31, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x66, 0x0a, 0x15, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, - 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x31, 0x12, 0x5c, 0x0a, 0x11, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x31, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x31, 0x12, 0x5c, 0x0a, 0x11, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, - 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x14, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x31, 0x12, 0x5e, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x2e, 0x74, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x74, - 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x66, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x41, 0x6c, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x35, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, - 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x41, 0x6c, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, - 0x83, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x57, 0x53, 0x4f, - 0x49, 0x44, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x34, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x57, 0x53, 0x4f, 0x49, - 0x44, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, - 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x41, 0x57, 0x53, 0x4f, 0x49, 0x44, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x5a, 0x5a, 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, - 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x6c, 0x65, - 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2f, 0x76, 0x31, 0x3b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x76, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x6c, 0x6c, 0x49, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x12, 0x83, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x41, 0x57, 0x53, 0x4f, 0x49, 0x44, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x34, 0x2e, + 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x41, 0x57, 0x53, 0x4f, 0x49, 0x44, 0x43, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, + 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x41, 0x57, 0x53, 0x4f, 0x49, 0x44, 0x43, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x16, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x55, 0x73, 0x65, + 0x72, 0x43, 0x65, 0x72, 0x74, 0x12, 0x36, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x55, 0x73, + 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, + 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x55, 0x73, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x5a, 0x5a, 0x58, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x67, 0x65, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x6c, + 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x2f, 0x76, 0x31, 0x3b, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -633,43 +829,49 @@ func file_teleport_integration_v1_integration_service_proto_rawDescGZIP() []byte return file_teleport_integration_v1_integration_service_proto_rawDescData } -var file_teleport_integration_v1_integration_service_proto_msgTypes = make([]protoimpl.MessageInfo, 9) +var file_teleport_integration_v1_integration_service_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_teleport_integration_v1_integration_service_proto_goTypes = []any{ - (*ListIntegrationsRequest)(nil), // 0: teleport.integration.v1.ListIntegrationsRequest - (*ListIntegrationsResponse)(nil), // 1: teleport.integration.v1.ListIntegrationsResponse - (*GetIntegrationRequest)(nil), // 2: teleport.integration.v1.GetIntegrationRequest - (*CreateIntegrationRequest)(nil), // 3: teleport.integration.v1.CreateIntegrationRequest - (*UpdateIntegrationRequest)(nil), // 4: teleport.integration.v1.UpdateIntegrationRequest - (*DeleteIntegrationRequest)(nil), // 5: teleport.integration.v1.DeleteIntegrationRequest - (*DeleteAllIntegrationsRequest)(nil), // 6: teleport.integration.v1.DeleteAllIntegrationsRequest - (*GenerateAWSOIDCTokenRequest)(nil), // 7: teleport.integration.v1.GenerateAWSOIDCTokenRequest - (*GenerateAWSOIDCTokenResponse)(nil), // 8: teleport.integration.v1.GenerateAWSOIDCTokenResponse - (*types.IntegrationV1)(nil), // 9: types.IntegrationV1 - (*emptypb.Empty)(nil), // 10: google.protobuf.Empty + (*ListIntegrationsRequest)(nil), // 0: teleport.integration.v1.ListIntegrationsRequest + (*ListIntegrationsResponse)(nil), // 1: teleport.integration.v1.ListIntegrationsResponse + (*GetIntegrationRequest)(nil), // 2: teleport.integration.v1.GetIntegrationRequest + (*CreateIntegrationRequest)(nil), // 3: teleport.integration.v1.CreateIntegrationRequest + (*UpdateIntegrationRequest)(nil), // 4: teleport.integration.v1.UpdateIntegrationRequest + (*DeleteIntegrationRequest)(nil), // 5: teleport.integration.v1.DeleteIntegrationRequest + (*DeleteAllIntegrationsRequest)(nil), // 6: teleport.integration.v1.DeleteAllIntegrationsRequest + (*GenerateAWSOIDCTokenRequest)(nil), // 7: teleport.integration.v1.GenerateAWSOIDCTokenRequest + (*GenerateAWSOIDCTokenResponse)(nil), // 8: teleport.integration.v1.GenerateAWSOIDCTokenResponse + (*GenerateGitHubUserCertRequest)(nil), // 9: teleport.integration.v1.GenerateGitHubUserCertRequest + (*GenerateGitHubUserCertResponse)(nil), // 10: teleport.integration.v1.GenerateGitHubUserCertResponse + (*types.IntegrationV1)(nil), // 11: types.IntegrationV1 + (*durationpb.Duration)(nil), // 12: google.protobuf.Duration + (*emptypb.Empty)(nil), // 13: google.protobuf.Empty } var file_teleport_integration_v1_integration_service_proto_depIdxs = []int32{ - 9, // 0: teleport.integration.v1.ListIntegrationsResponse.integrations:type_name -> types.IntegrationV1 - 9, // 1: teleport.integration.v1.CreateIntegrationRequest.integration:type_name -> types.IntegrationV1 - 9, // 2: teleport.integration.v1.UpdateIntegrationRequest.integration:type_name -> types.IntegrationV1 - 0, // 3: teleport.integration.v1.IntegrationService.ListIntegrations:input_type -> teleport.integration.v1.ListIntegrationsRequest - 2, // 4: teleport.integration.v1.IntegrationService.GetIntegration:input_type -> teleport.integration.v1.GetIntegrationRequest - 3, // 5: teleport.integration.v1.IntegrationService.CreateIntegration:input_type -> teleport.integration.v1.CreateIntegrationRequest - 4, // 6: teleport.integration.v1.IntegrationService.UpdateIntegration:input_type -> teleport.integration.v1.UpdateIntegrationRequest - 5, // 7: teleport.integration.v1.IntegrationService.DeleteIntegration:input_type -> teleport.integration.v1.DeleteIntegrationRequest - 6, // 8: teleport.integration.v1.IntegrationService.DeleteAllIntegrations:input_type -> teleport.integration.v1.DeleteAllIntegrationsRequest - 7, // 9: teleport.integration.v1.IntegrationService.GenerateAWSOIDCToken:input_type -> teleport.integration.v1.GenerateAWSOIDCTokenRequest - 1, // 10: teleport.integration.v1.IntegrationService.ListIntegrations:output_type -> teleport.integration.v1.ListIntegrationsResponse - 9, // 11: teleport.integration.v1.IntegrationService.GetIntegration:output_type -> types.IntegrationV1 - 9, // 12: teleport.integration.v1.IntegrationService.CreateIntegration:output_type -> types.IntegrationV1 - 9, // 13: teleport.integration.v1.IntegrationService.UpdateIntegration:output_type -> types.IntegrationV1 - 10, // 14: teleport.integration.v1.IntegrationService.DeleteIntegration:output_type -> google.protobuf.Empty - 10, // 15: teleport.integration.v1.IntegrationService.DeleteAllIntegrations:output_type -> google.protobuf.Empty - 8, // 16: teleport.integration.v1.IntegrationService.GenerateAWSOIDCToken:output_type -> teleport.integration.v1.GenerateAWSOIDCTokenResponse - 10, // [10:17] is the sub-list for method output_type - 3, // [3:10] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 11, // 0: teleport.integration.v1.ListIntegrationsResponse.integrations:type_name -> types.IntegrationV1 + 11, // 1: teleport.integration.v1.CreateIntegrationRequest.integration:type_name -> types.IntegrationV1 + 11, // 2: teleport.integration.v1.UpdateIntegrationRequest.integration:type_name -> types.IntegrationV1 + 12, // 3: teleport.integration.v1.GenerateGitHubUserCertRequest.ttl:type_name -> google.protobuf.Duration + 0, // 4: teleport.integration.v1.IntegrationService.ListIntegrations:input_type -> teleport.integration.v1.ListIntegrationsRequest + 2, // 5: teleport.integration.v1.IntegrationService.GetIntegration:input_type -> teleport.integration.v1.GetIntegrationRequest + 3, // 6: teleport.integration.v1.IntegrationService.CreateIntegration:input_type -> teleport.integration.v1.CreateIntegrationRequest + 4, // 7: teleport.integration.v1.IntegrationService.UpdateIntegration:input_type -> teleport.integration.v1.UpdateIntegrationRequest + 5, // 8: teleport.integration.v1.IntegrationService.DeleteIntegration:input_type -> teleport.integration.v1.DeleteIntegrationRequest + 6, // 9: teleport.integration.v1.IntegrationService.DeleteAllIntegrations:input_type -> teleport.integration.v1.DeleteAllIntegrationsRequest + 7, // 10: teleport.integration.v1.IntegrationService.GenerateAWSOIDCToken:input_type -> teleport.integration.v1.GenerateAWSOIDCTokenRequest + 9, // 11: teleport.integration.v1.IntegrationService.GenerateGitHubUserCert:input_type -> teleport.integration.v1.GenerateGitHubUserCertRequest + 1, // 12: teleport.integration.v1.IntegrationService.ListIntegrations:output_type -> teleport.integration.v1.ListIntegrationsResponse + 11, // 13: teleport.integration.v1.IntegrationService.GetIntegration:output_type -> types.IntegrationV1 + 11, // 14: teleport.integration.v1.IntegrationService.CreateIntegration:output_type -> types.IntegrationV1 + 11, // 15: teleport.integration.v1.IntegrationService.UpdateIntegration:output_type -> types.IntegrationV1 + 13, // 16: teleport.integration.v1.IntegrationService.DeleteIntegration:output_type -> google.protobuf.Empty + 13, // 17: teleport.integration.v1.IntegrationService.DeleteAllIntegrations:output_type -> google.protobuf.Empty + 8, // 18: teleport.integration.v1.IntegrationService.GenerateAWSOIDCToken:output_type -> teleport.integration.v1.GenerateAWSOIDCTokenResponse + 10, // 19: teleport.integration.v1.IntegrationService.GenerateGitHubUserCert:output_type -> teleport.integration.v1.GenerateGitHubUserCertResponse + 12, // [12:20] is the sub-list for method output_type + 4, // [4:12] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_teleport_integration_v1_integration_service_proto_init() } @@ -786,6 +988,30 @@ func file_teleport_integration_v1_integration_service_proto_init() { return nil } } + file_teleport_integration_v1_integration_service_proto_msgTypes[9].Exporter = func(v any, i int) any { + switch v := v.(*GenerateGitHubUserCertRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_teleport_integration_v1_integration_service_proto_msgTypes[10].Exporter = func(v any, i int) any { + switch v := v.(*GenerateGitHubUserCertResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -793,7 +1019,7 @@ func file_teleport_integration_v1_integration_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_teleport_integration_v1_integration_service_proto_rawDesc, NumEnums: 0, - NumMessages: 9, + NumMessages: 11, NumExtensions: 0, NumServices: 1, }, diff --git a/api/gen/proto/go/teleport/integration/v1/integration_service_grpc.pb.go b/api/gen/proto/go/teleport/integration/v1/integration_service_grpc.pb.go index f88c39e9d6154..a666e9b4bcebd 100644 --- a/api/gen/proto/go/teleport/integration/v1/integration_service_grpc.pb.go +++ b/api/gen/proto/go/teleport/integration/v1/integration_service_grpc.pb.go @@ -35,13 +35,14 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - IntegrationService_ListIntegrations_FullMethodName = "/teleport.integration.v1.IntegrationService/ListIntegrations" - IntegrationService_GetIntegration_FullMethodName = "/teleport.integration.v1.IntegrationService/GetIntegration" - IntegrationService_CreateIntegration_FullMethodName = "/teleport.integration.v1.IntegrationService/CreateIntegration" - IntegrationService_UpdateIntegration_FullMethodName = "/teleport.integration.v1.IntegrationService/UpdateIntegration" - IntegrationService_DeleteIntegration_FullMethodName = "/teleport.integration.v1.IntegrationService/DeleteIntegration" - IntegrationService_DeleteAllIntegrations_FullMethodName = "/teleport.integration.v1.IntegrationService/DeleteAllIntegrations" - IntegrationService_GenerateAWSOIDCToken_FullMethodName = "/teleport.integration.v1.IntegrationService/GenerateAWSOIDCToken" + IntegrationService_ListIntegrations_FullMethodName = "/teleport.integration.v1.IntegrationService/ListIntegrations" + IntegrationService_GetIntegration_FullMethodName = "/teleport.integration.v1.IntegrationService/GetIntegration" + IntegrationService_CreateIntegration_FullMethodName = "/teleport.integration.v1.IntegrationService/CreateIntegration" + IntegrationService_UpdateIntegration_FullMethodName = "/teleport.integration.v1.IntegrationService/UpdateIntegration" + IntegrationService_DeleteIntegration_FullMethodName = "/teleport.integration.v1.IntegrationService/DeleteIntegration" + IntegrationService_DeleteAllIntegrations_FullMethodName = "/teleport.integration.v1.IntegrationService/DeleteAllIntegrations" + IntegrationService_GenerateAWSOIDCToken_FullMethodName = "/teleport.integration.v1.IntegrationService/GenerateAWSOIDCToken" + IntegrationService_GenerateGitHubUserCert_FullMethodName = "/teleport.integration.v1.IntegrationService/GenerateGitHubUserCert" ) // IntegrationServiceClient is the client API for IntegrationService service. @@ -65,6 +66,8 @@ type IntegrationServiceClient interface { DeleteAllIntegrations(ctx context.Context, in *DeleteAllIntegrationsRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) // GenerateAWSOIDCToken generates a token to be used when executing an AWS OIDC Integration action. GenerateAWSOIDCToken(ctx context.Context, in *GenerateAWSOIDCTokenRequest, opts ...grpc.CallOption) (*GenerateAWSOIDCTokenResponse, error) + // GenerateGitHubUserCert signs a SSH certificate for GitHub integration. + GenerateGitHubUserCert(ctx context.Context, in *GenerateGitHubUserCertRequest, opts ...grpc.CallOption) (*GenerateGitHubUserCertResponse, error) } type integrationServiceClient struct { @@ -145,6 +148,16 @@ func (c *integrationServiceClient) GenerateAWSOIDCToken(ctx context.Context, in return out, nil } +func (c *integrationServiceClient) GenerateGitHubUserCert(ctx context.Context, in *GenerateGitHubUserCertRequest, opts ...grpc.CallOption) (*GenerateGitHubUserCertResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GenerateGitHubUserCertResponse) + err := c.cc.Invoke(ctx, IntegrationService_GenerateGitHubUserCert_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // IntegrationServiceServer is the server API for IntegrationService service. // All implementations must embed UnimplementedIntegrationServiceServer // for forward compatibility. @@ -166,6 +179,8 @@ type IntegrationServiceServer interface { DeleteAllIntegrations(context.Context, *DeleteAllIntegrationsRequest) (*emptypb.Empty, error) // GenerateAWSOIDCToken generates a token to be used when executing an AWS OIDC Integration action. GenerateAWSOIDCToken(context.Context, *GenerateAWSOIDCTokenRequest) (*GenerateAWSOIDCTokenResponse, error) + // GenerateGitHubUserCert signs a SSH certificate for GitHub integration. + GenerateGitHubUserCert(context.Context, *GenerateGitHubUserCertRequest) (*GenerateGitHubUserCertResponse, error) mustEmbedUnimplementedIntegrationServiceServer() } @@ -197,6 +212,9 @@ func (UnimplementedIntegrationServiceServer) DeleteAllIntegrations(context.Conte func (UnimplementedIntegrationServiceServer) GenerateAWSOIDCToken(context.Context, *GenerateAWSOIDCTokenRequest) (*GenerateAWSOIDCTokenResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GenerateAWSOIDCToken not implemented") } +func (UnimplementedIntegrationServiceServer) GenerateGitHubUserCert(context.Context, *GenerateGitHubUserCertRequest) (*GenerateGitHubUserCertResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GenerateGitHubUserCert not implemented") +} func (UnimplementedIntegrationServiceServer) mustEmbedUnimplementedIntegrationServiceServer() {} func (UnimplementedIntegrationServiceServer) testEmbeddedByValue() {} @@ -344,6 +362,24 @@ func _IntegrationService_GenerateAWSOIDCToken_Handler(srv interface{}, ctx conte return interceptor(ctx, in, info, handler) } +func _IntegrationService_GenerateGitHubUserCert_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GenerateGitHubUserCertRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IntegrationServiceServer).GenerateGitHubUserCert(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: IntegrationService_GenerateGitHubUserCert_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IntegrationServiceServer).GenerateGitHubUserCert(ctx, req.(*GenerateGitHubUserCertRequest)) + } + return interceptor(ctx, in, info, handler) +} + // IntegrationService_ServiceDesc is the grpc.ServiceDesc for IntegrationService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -379,6 +415,10 @@ var IntegrationService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GenerateAWSOIDCToken", Handler: _IntegrationService_GenerateAWSOIDCToken_Handler, }, + { + MethodName: "GenerateGitHubUserCert", + Handler: _IntegrationService_GenerateGitHubUserCert_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "teleport/integration/v1/integration_service.proto", diff --git a/api/gen/proto/go/teleport/userloginstate/v1/userloginstate.pb.go b/api/gen/proto/go/teleport/userloginstate/v1/userloginstate.pb.go index 6179327c8865c..05c7d3f32984e 100644 --- a/api/gen/proto/go/teleport/userloginstate/v1/userloginstate.pb.go +++ b/api/gen/proto/go/teleport/userloginstate/v1/userloginstate.pb.go @@ -112,6 +112,8 @@ type Spec struct { // original_traits are the user traits that are part of the user's static definition. These traits are // not affected by access granted by access lists and are obtained prior to granting access list access. OriginalTraits []*v11.Trait `protobuf:"bytes,5,rep,name=original_traits,json=originalTraits,proto3" json:"original_traits,omitempty"` + // GitHub is the external identity attached to this user state. + Github *GitHubIdentity `protobuf:"bytes,6,opt,name=github,proto3" json:"github,omitempty"` } func (x *Spec) Reset() { @@ -181,6 +183,71 @@ func (x *Spec) GetOriginalTraits() []*v11.Trait { return nil } +func (x *Spec) GetGithub() *GitHubIdentity { + if x != nil { + return x.Github + } + return nil +} + +// GitHubIdentity is the external identity attached to this user state. +type GitHubIdentity struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Id is the GitHub user ID. + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Username is the GitHub username. + Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"` +} + +func (x *GitHubIdentity) Reset() { + *x = GitHubIdentity{} + if protoimpl.UnsafeEnabled { + mi := &file_teleport_userloginstate_v1_userloginstate_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GitHubIdentity) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GitHubIdentity) ProtoMessage() {} + +func (x *GitHubIdentity) ProtoReflect() protoreflect.Message { + mi := &file_teleport_userloginstate_v1_userloginstate_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GitHubIdentity.ProtoReflect.Descriptor instead. +func (*GitHubIdentity) Descriptor() ([]byte, []int) { + return file_teleport_userloginstate_v1_userloginstate_proto_rawDescGZIP(), []int{2} +} + +func (x *GitHubIdentity) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *GitHubIdentity) GetUsername() string { + if x != nil { + return x.Username + } + return "" +} + var File_teleport_userloginstate_v1_userloginstate_proto protoreflect.FileDescriptor var file_teleport_userloginstate_v1_userloginstate_proto_rawDesc = []byte{ @@ -201,7 +268,7 @@ var file_teleport_userloginstate_v1_userloginstate_proto_rawDesc = []byte{ 0x61, 0x64, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0xd5, 0x01, 0x0a, 0x04, 0x53, + 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x22, 0x99, 0x02, 0x0a, 0x04, 0x53, 0x70, 0x65, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x65, 0x6c, 0x65, @@ -215,13 +282,21 @@ var file_teleport_userloginstate_v1_userloginstate_proto_rawDesc = []byte{ 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x74, 0x72, 0x61, 0x69, 0x74, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x69, 0x74, 0x52, 0x0e, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x54, 0x72, 0x61, 0x69, - 0x74, 0x73, 0x42, 0x60, 0x5a, 0x5e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x74, - 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, - 0x74, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x2f, 0x76, 0x31, 0x3b, 0x75, 0x73, 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x73, 0x12, 0x42, 0x0a, 0x06, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x75, 0x73, + 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x06, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x22, 0x3c, 0x0a, 0x0e, 0x47, 0x69, 0x74, 0x48, 0x75, 0x62, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x60, 0x5a, 0x5e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x61, 0x76, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, + 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, + 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x70, + 0x6f, 0x72, 0x74, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x75, 0x73, 0x65, 0x72, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -236,23 +311,25 @@ func file_teleport_userloginstate_v1_userloginstate_proto_rawDescGZIP() []byte { return file_teleport_userloginstate_v1_userloginstate_proto_rawDescData } -var file_teleport_userloginstate_v1_userloginstate_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_teleport_userloginstate_v1_userloginstate_proto_msgTypes = make([]protoimpl.MessageInfo, 3) var file_teleport_userloginstate_v1_userloginstate_proto_goTypes = []any{ (*UserLoginState)(nil), // 0: teleport.userloginstate.v1.UserLoginState (*Spec)(nil), // 1: teleport.userloginstate.v1.Spec - (*v1.ResourceHeader)(nil), // 2: teleport.header.v1.ResourceHeader - (*v11.Trait)(nil), // 3: teleport.trait.v1.Trait + (*GitHubIdentity)(nil), // 2: teleport.userloginstate.v1.GitHubIdentity + (*v1.ResourceHeader)(nil), // 3: teleport.header.v1.ResourceHeader + (*v11.Trait)(nil), // 4: teleport.trait.v1.Trait } var file_teleport_userloginstate_v1_userloginstate_proto_depIdxs = []int32{ - 2, // 0: teleport.userloginstate.v1.UserLoginState.header:type_name -> teleport.header.v1.ResourceHeader + 3, // 0: teleport.userloginstate.v1.UserLoginState.header:type_name -> teleport.header.v1.ResourceHeader 1, // 1: teleport.userloginstate.v1.UserLoginState.spec:type_name -> teleport.userloginstate.v1.Spec - 3, // 2: teleport.userloginstate.v1.Spec.traits:type_name -> teleport.trait.v1.Trait - 3, // 3: teleport.userloginstate.v1.Spec.original_traits:type_name -> teleport.trait.v1.Trait - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 4, // 2: teleport.userloginstate.v1.Spec.traits:type_name -> teleport.trait.v1.Trait + 4, // 3: teleport.userloginstate.v1.Spec.original_traits:type_name -> teleport.trait.v1.Trait + 2, // 4: teleport.userloginstate.v1.Spec.github:type_name -> teleport.userloginstate.v1.GitHubIdentity + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_teleport_userloginstate_v1_userloginstate_proto_init() } @@ -285,6 +362,18 @@ func file_teleport_userloginstate_v1_userloginstate_proto_init() { return nil } } + file_teleport_userloginstate_v1_userloginstate_proto_msgTypes[2].Exporter = func(v any, i int) any { + switch v := v.(*GitHubIdentity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -292,7 +381,7 @@ func file_teleport_userloginstate_v1_userloginstate_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_teleport_userloginstate_v1_userloginstate_proto_rawDesc, NumEnums: 0, - NumMessages: 2, + NumMessages: 3, NumExtensions: 0, NumServices: 0, }, diff --git a/api/proto/teleport/gitserver/v1/git_server_service.proto b/api/proto/teleport/gitserver/v1/git_server_service.proto new file mode 100644 index 0000000000000..e7faae0ad4932 --- /dev/null +++ b/api/proto/teleport/gitserver/v1/git_server_service.proto @@ -0,0 +1,50 @@ +// Copyright 2024 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.gitserver.v1; + +import "google/protobuf/empty.proto"; +import "teleport/legacy/types/types.proto"; + +option go_package = "github.com/gravitational/teleport/api/gen/proto/go/teleport/gitserver/v1;gitserverv1"; + +// GitServerService provides methods to manage Git server. +service GitServerService { + // GetGitServer is used to retrieve a Git server object. + rpc GetGitServer(GetGitServerRequest) returns (types.ServerV2); + // UpsertGitServer is used to create or replace a Git server object. + rpc UpsertGitServer(UpsertGitServerRequest) returns (types.ServerV2); + // DeleteGitServer is used to delete a Git server object. + rpc DeleteGitServer(DeleteGitServerRequest) returns (google.protobuf.Empty); +} + +// The request for GetGitServer. +message GetGitServerRequest { + // Name is the uuid of the server. + string name = 1; +} + +// The request for UpsertGitServer. +message UpsertGitServerRequest { + // Server is the Git server to upsert. + types.ServerV2 server = 1; +} + +// The request for DeleteGitServer. +message DeleteGitServerRequest { + // Name is the uuid of the server. + string name = 1; +} diff --git a/api/proto/teleport/integration/v1/integration_service.proto b/api/proto/teleport/integration/v1/integration_service.proto index 6306a204a79d7..e57e1f7033178 100644 --- a/api/proto/teleport/integration/v1/integration_service.proto +++ b/api/proto/teleport/integration/v1/integration_service.proto @@ -16,6 +16,7 @@ syntax = "proto3"; package teleport.integration.v1; +import "google/protobuf/duration.proto"; import "google/protobuf/empty.proto"; import "teleport/legacy/types/types.proto"; @@ -44,6 +45,9 @@ service IntegrationService { // GenerateAWSOIDCToken generates a token to be used when executing an AWS OIDC Integration action. rpc GenerateAWSOIDCToken(GenerateAWSOIDCTokenRequest) returns (GenerateAWSOIDCTokenResponse); + + // GenerateGitHubUserCert signs a SSH certificate for GitHub integration. + rpc GenerateGitHubUserCert(GenerateGitHubUserCertRequest) returns (GenerateGitHubUserCertResponse); } // ListIntegrationsRequest is a request for a paginated list of Integrations. @@ -52,6 +56,8 @@ message ListIntegrationsRequest { int32 limit = 1; // NextKey is the key for the next page of Integrations. string next_key = 2; + // WithSecrets specifies whether to load associated secrets. + bool with_secrets = 3; } // ListIntegrationsResponse is the response for ListIntegrationsRequest. @@ -68,6 +74,8 @@ message ListIntegrationsResponse { message GetIntegrationRequest { // Name is the name of the Integration to be requested. string name = 1; + // WithSecrets specifies whether to load associated secrets. + bool with_secrets = 2; } // CreateIntegrationRequest is the request to create the provided integration. @@ -111,3 +119,26 @@ message GenerateAWSOIDCTokenResponse { // Token is the signed JWT ready to be used string token = 1; } + +// GenerateGitHubUserCertRequest is a request to sign a client certificate used by +// GitHub integration to authenticate with GitHub enterprise. +message GenerateGitHubUserCertRequest { + // Integration is the name of the integration; + string integration = 1; + // PublicKey is the public key to be signed. + bytes public_key = 2; + // Login is the GitHub username. + string login = 3; + // KeyId is the certficate ID, usually the Teleport username. + string key_id = 4; + // Ttl is the duration the certificate will be valid for. + google.protobuf.Duration ttl = 5; + // UserId is the GitHub user id. One of Login and UserId is required. + string user_id = 6; +} + +// GenerateGitHubUserCertResponse contains a signed certificate. +message GenerateGitHubUserCertResponse { + // AuthorizedKey is the signed certificate. + bytes authorized_key = 1; +} diff --git a/api/proto/teleport/legacy/client/proto/authservice.proto b/api/proto/teleport/legacy/client/proto/authservice.proto index 6f36fff765278..2c6948be5ef7b 100644 --- a/api/proto/teleport/legacy/client/proto/authservice.proto +++ b/api/proto/teleport/legacy/client/proto/authservice.proto @@ -184,6 +184,9 @@ message UserCertsRequest { // WindowsDesktop means a request for a TLS certificate for access to a specific // windows desktop. WindowsDesktop = 5; + // GitServer means a request for an SSH certificate for access to a git + // server, as specified by RouteToGitServer. + GitServer = 6; } // CertUsage limits the resulting user certificate to a single protocol. CertUsage Usage = 10 [(gogoproto.jsontag) = "usage,omitempty"]; @@ -291,6 +294,12 @@ message UserCertsRequest { teleport.attestation.v1.AttestationStatement SSHPublicKeyAttestationStatement = 25 [(gogoproto.jsontag) = "ssh_public_key_attestation_statement,omitempty"]; // TLSPublicKeyAttestationStatement is an attestation statement for TLSPublicKey. teleport.attestation.v1.AttestationStatement TLSPublicKeyAttestationStatement = 26 [(gogoproto.jsontag) = "tls_public_key_attestation_statement,omitempty"]; + + // RouteToGitServer specifies application to issue certificate for. + RouteToGitServer RouteToGitServer = 27 [ + (gogoproto.nullable) = false, + (gogoproto.jsontag) = "route_to_git_server,omitempty" + ]; } // RouteToDatabase combines parameters for database service routing information. @@ -315,6 +324,12 @@ message RouteToWindowsDesktop { string Login = 2 [(gogoproto.jsontag) = "login"]; } +// RouteToGitServer combines parameters for Git server routing information. +message RouteToGitServer { + // GitHubOrganization is the GitHub organization to embed. + string GitHubOrganization = 1 [(gogoproto.jsontag) = "github_organization"]; +} + // RouteToApp contains parameters for application access certificate requests. message RouteToApp { // Name is the application name certificate is being requested for. @@ -1419,6 +1434,8 @@ message IsMFARequiredRequest { AdminAction AdminAction = 5; // App specifies the target App. RouteToApp App = 6; + // GitServer specifies the target GitServer + RouteToGitServer GitServer = 7; } } @@ -1933,6 +1950,8 @@ message PaginatedResource { types.AppServerOrSAMLIdPServiceProviderV1 AppServerOrSAMLIdPServiceProvider = 11 [deprecated = true]; // SAMLIdPServiceProvider represents a SAML IdP service provider resource. types.SAMLIdPServiceProviderV1 SAMLIdPServiceProvider = 12 [(gogoproto.jsontag) = "saml_idp_service_provider,omitempty"]; + // GitServer represents a Git server resource. + types.ServerV2 git_server = 15 [(gogoproto.jsontag) = "git_server,omitempty"]; } // Logins allowed for the included resource. Only to be populated for SSH and Desktops. @@ -2190,6 +2209,13 @@ message GetGithubAuthRequestRequest { string StateToken = 1 [(gogoproto.jsontag) = "state_token"]; } +message CreateGithubAuthRequestForUserRequest { + // CertRequest is the reissue cert request + UserCertsRequest cert_request = 1 [(gogoproto.jsontag) = "cert_request,omitempty"]; + // RedirectUrl is the redirect url used by client browser. + string redirect_url = 2 [(gogoproto.jsontag) = "redirect_url,omitempty"]; +} + // CreateOIDCConnectorRequest is a request for CreateOIDCConnector. message CreateOIDCConnectorRequest { // Connector to be created. @@ -3164,6 +3190,9 @@ service AuthService { // GetGithubAuthRequest returns Github auth request if found. rpc GetGithubAuthRequest(GetGithubAuthRequestRequest) returns (types.GithubAuthRequest); + // CreateGithubAuthRequestForUser TODO is there a better place? + rpc CreateGithubAuthRequestForUser(CreateGithubAuthRequestForUserRequest) returns (types.GithubAuthRequest); + // GetSSODiagnosticInfo returns SSO diagnostic info records. rpc GetSSODiagnosticInfo(GetSSODiagnosticInfoRequest) returns (types.SSODiagnosticInfo); diff --git a/api/proto/teleport/legacy/types/events/events.proto b/api/proto/teleport/legacy/types/events/events.proto index 9d45d669f199c..b7ac6faeb224f 100644 --- a/api/proto/teleport/legacy/types/events/events.proto +++ b/api/proto/teleport/legacy/types/events/events.proto @@ -4266,6 +4266,8 @@ message IntegrationMetadata { AWSOIDCIntegrationMetadata AWSOIDC = 2 [(gogoproto.jsontag) = "aws_oidc,omitempty"]; // AzureOIDC contains metadata for Azure OIDC integrations. AzureOIDCIntegrationMetadata AzureOIDC = 3 [(gogoproto.jsontag) = "azure_oidc,omitempty"]; + // GitHub contains metadata for GitHub integrations. + GitHubIntegrationMetadata GitHub = 4 [(gogoproto.jsontag) = "github,omitempty"]; } // AWSOIDCIntegrationMetadata contains metadata for AWS OIDC integrations. @@ -4414,6 +4416,12 @@ message PluginMetadata { bool reuses_credentials = 4 [(gogoproto.jsontag) = "reuses_credentials"]; } +// GitHubIntegrationMetadata contains metadata for GitHub integrations. +message GitHubIntegrationMetadata { + // Organization specifies the name of the organization for the GitHub integration. + string Organization = 1 [(gogoproto.jsontag) = "organization,omitempty"]; +} + // OneOf is a union of one of audit events submitted to the auth service message OneOf { // Event is one of the audit events @@ -4598,6 +4606,7 @@ message OneOf { events.StaticHostUserCreate StaticHostUserCreate = 179; events.StaticHostUserUpdate StaticHostUserUpdate = 180; events.StaticHostUserDelete StaticHostUserDelete = 181; + events.GitCommand GitCommand = 182; } } @@ -6894,7 +6903,6 @@ message AutoUpdateConfigCreate { (gogoproto.jsontag) = "" ]; - // ConnectionMetadata holds information about the connection ConnectionMetadata Connection = 4 [ (gogoproto.nullable) = false, (gogoproto.embed) = true, @@ -7169,3 +7177,69 @@ message StaticHostUserDelete { (gogoproto.jsontag) = "" ]; } + +// GitCommand is emitted when a user performance a Git fetch or push command. +message GitCommand { + // Metadata is a common event metadata + Metadata Metadata = 1 [ + (gogoproto.nullable) = false, + (gogoproto.embed) = true, + (gogoproto.jsontag) = "" + ]; + + // User is a common user event metadata + UserMetadata User = 2 [ + (gogoproto.nullable) = false, + (gogoproto.embed) = true, + (gogoproto.jsontag) = "" + ]; + + // ConnectionMetadata holds information about the connection + ConnectionMetadata Connection = 3 [ + (gogoproto.nullable) = false, + (gogoproto.embed) = true, + (gogoproto.jsontag) = "" + ]; + + // SessionMetadata is a common event session metadata + SessionMetadata Session = 4 [ + (gogoproto.nullable) = false, + (gogoproto.embed) = true, + (gogoproto.jsontag) = "" + ]; + + // ServerMetadata is a common server metadata + ServerMetadata Server = 5 [ + (gogoproto.nullable) = false, + (gogoproto.embed) = true, + (gogoproto.jsontag) = "" + ]; + + // CommandMetadata is a common command metadata + CommandMetadata Command = 6 [ + (gogoproto.nullable) = false, + (gogoproto.embed) = true, + (gogoproto.jsontag) = "" + ]; + + // Service is the type of the git request like git-upload-pack or + // git-receive-pack. + string service = 8 [(gogoproto.jsontag) = "service"]; + // Path is the Git repo path, usually /. + string path = 9 [(gogoproto.jsontag) = "path"]; + + // Actions defines details for a Git push. + repeated GitCommandAction actions = 10 [(gogoproto.jsontag) = "actions,omitempty"]; +} + +// GitCommandAction defines details for a Git push. +message GitCommandAction { + // Action type like create or update. + string Action = 1 [(gogoproto.jsontag) = "action,omitempty"]; + // Reference name like ref/main/my_branch. + string Reference = 2 [(gogoproto.jsontag) = "reference,omitempty"]; + // Old is the old hash. + string Old = 3 [(gogoproto.jsontag) = "old,omitempty"]; + // New is the new hash. + string New = 4 [(gogoproto.jsontag) = "new,omitempty"]; +} diff --git a/api/proto/teleport/legacy/types/types.proto b/api/proto/teleport/legacy/types/types.proto index 24bb63c43ada7..578ce01d1a5ad 100644 --- a/api/proto/teleport/legacy/types/types.proto +++ b/api/proto/teleport/legacy/types/types.proto @@ -841,6 +841,10 @@ message ServerSpecV2 { // on, if any. CloudMetadata CloudMetadata = 14 [(gogoproto.jsontag) = "cloud_metadata,omitempty"]; + // GitHub contains info about GitHub proxies where each server represents a + // GitHub organization. + GitHubServerMetadata git_hub = 15 [(gogoproto.jsontag) = "github,omitempty"]; + reserved 8; reserved 10; reserved "KubernetesClusters"; @@ -873,6 +877,13 @@ message CloudMetadata { AWSInfo AWS = 1 [(gogoproto.jsontag) = "aws,omitempty"]; } +message GitHubServerMetadata { + // Organization specifies the name of the organization for the GitHub integration. + string organization = 1 [(gogoproto.jsontag) = "organization,omitempty"]; + // Integration is the integration that is associated with this Server. + string integration = 2 [(gogoproto.jsontag) = "integration,omitempty"]; +} + // AppServerV3 represents a single proxied web app. message AppServerV3 { option (gogoproto.goproto_stringer) = false; @@ -3235,6 +3246,16 @@ message RoleConditions { reserved "SAMLIdPServiceProviderLabels"; reserved 41; // removed saml_idp_service_provider_labels_expression in favor of using app_labels_expression. reserved "SAMLIdPServiceProviderLabelsExpression"; + + repeated GitHubPermission github_permissions = 42 [ + (gogoproto.nullable) = false, + (gogoproto.jsontag) = "github_permissions,omitempty" + ]; +} + +// GitHubPermission defines Git integration related permissions. +message GitHubPermission { + repeated string organizations = 1 [(gogoproto.jsontag) = "orgs,omitempty"]; } // SPIFFERoleCondition sets out which SPIFFE identities this role is allowed or @@ -3620,6 +3641,10 @@ message ExternalIdentity { // SAMLSingleLogoutURL is the SAML Single log-out URL to initiate SAML SLO (single log-out), if applicable. string SAMLSingleLogoutURL = 3 [(gogoproto.jsontag) = "samlSingleLogoutUrl,omitempty"]; + + // UserID is the ID of the identity. Some connectors like GitHub have an + // unique ID apart from the username. + string UserID = 4 [(gogoproto.jsontag) = "user_id,omitempty"]; } // LoginStatus is a login status of the user @@ -4961,6 +4986,11 @@ message GithubAuthRequest { teleport.attestation.v1.AttestationStatement ssh_attestation_statement = 21 [(gogoproto.jsontag) = "ssh_attestation_statement,omitempty"]; // TlsAttestationStatement is an attestation statement for the given TLS public key. teleport.attestation.v1.AttestationStatement tls_attestation_statement = 22 [(gogoproto.jsontag) = "tls_attestation_statement,omitempty"]; + + // AuthenticatedUser is the username of an authenticated Teleport user. This + // OAuth flow is used to retrieve GitHub identity info which will be added to + // the existing user. + string authenticated_user = 23 [(gogoproto.jsontag) = "authenticated_user,omitempty"]; } // SSOWarnings conveys a user-facing main message along with auxiliary warnings. @@ -4998,6 +5028,10 @@ message CreateUserParams { (gogoproto.jsontag) = "session_ttl,omitempty", (gogoproto.casttype) = "Duration" ]; + + // UserID is the ID of the identity. Some connectors like GitHub have an + // unique ID apart from the username. + string UserID = 9 [(gogoproto.jsontag) = "user_id,omitempty"]; } // SSODiagnosticInfo is a single SSO diagnostic info entry. @@ -5131,6 +5165,11 @@ message GithubClaims { // Teams is the users team membership repeated string Teams = 3 [(gogoproto.jsontag) = "teams"]; + + // ID is a global unique integer that is assigned to each GitHub user. The ID + // is immutable (unlike the GitHub username) and can be found in APIs like + // get user. + string ID = 4 [(gogoproto.jsontag) = "user_id,omitempty"]; } // TeamMapping represents a single team membership mapping. @@ -7013,6 +7052,8 @@ message IntegrationSpecV1 { AWSOIDCIntegrationSpecV1 AWSOIDC = 1 [(gogoproto.jsontag) = "aws_oidc,omitempty"]; // AzureOIDC contains the specific fields to handle the Azure OIDC Integration subkind AzureOIDCIntegrationSpecV1 AzureOIDC = 2 [(gogoproto.jsontag) = "azure_oidc,omitempty"]; + // GitHub contains the specific fields to handle the GitHub integration subkind. + GitHubIntegrationSpecV1 GitHub = 3 [(gogoproto.jsontag) = "github,omitempty"]; } } @@ -7050,6 +7091,37 @@ message AzureOIDCIntegrationSpecV1 { string ClientID = 2 [(gogoproto.jsontag) = "client_id,omitempty"]; } +// GitHubIntegrationSpecV1 contains the specific fields to handle the GitHub integration subkind. +message GitHubIntegrationSpecV1 { + // Organization specifies the name of the organization for the GitHub integration. + string Organization = 1 [(gogoproto.jsontag) = "organization,omitempty"]; + + // Proxy specifies GitHub proxy related settings. + GitHubProxy proxy = 2 [(gogoproto.jsontag) = "proxy,omitempty"]; +} + +// GitHubProxy specifies GitHub proxy related settings. +message GitHubProxy { + // CertAuthority contains the active SSH CAs used between Teleport and + // GitHub. GitHub does not allow the same CA to be used for a different + // organization so the CA is defined per integration. TODO(greedy52) support + // rotation, HSM encryption. + repeated SSHKeyPair cert_authorities = 1 [(gogoproto.jsontag) = "cert_authorities,omitempty"]; + + // Connector specifies GitHub connector used to obtain user ID and username. + GitHubProxyConnector connector = 2 [(gogoproto.jsontag) = "connector,omitempty"]; +} + +// GitHubProxyConnector specifies the GitHub connector spec for a GitHub proxy. +message GitHubProxyConnector { + // ClientID is the Github OAuth app client ID. + string ClientID = 1 [(gogoproto.jsontag) = "client_id"]; + // ClientSecret is the Github OAuth app client secret. + string ClientSecret = 2 [(gogoproto.jsontag) = "client_secret"]; + // RedirectURL is the authorization callback URL. + string RedirectURL = 3 [(gogoproto.jsontag) = "redirect_url"]; +} + // HeadlessAuthentication holds data for an ongoing headless authentication attempt. message HeadlessAuthentication { // Header is the resource header. diff --git a/api/proto/teleport/userloginstate/v1/userloginstate.proto b/api/proto/teleport/userloginstate/v1/userloginstate.proto index 5adaf0e952e9b..3e352b786317b 100644 --- a/api/proto/teleport/userloginstate/v1/userloginstate.proto +++ b/api/proto/teleport/userloginstate/v1/userloginstate.proto @@ -48,4 +48,15 @@ message Spec { // original_traits are the user traits that are part of the user's static definition. These traits are // not affected by access granted by access lists and are obtained prior to granting access list access. repeated teleport.trait.v1.Trait original_traits = 5; + + // GitHub is the external identity attached to this user state. + GitHubIdentity github = 6; +} + +// GitHubIdentity is the external identity attached to this user state. +message GitHubIdentity { + // Id is the GitHub user ID. + string id = 1; + // Username is the GitHub username. + string username = 2; } diff --git a/api/types/constants.go b/api/types/constants.go index 12bfe0c65a5f7..261895815d21b 100644 --- a/api/types/constants.go +++ b/api/types/constants.go @@ -163,6 +163,16 @@ const ( // It uses the private key created above to SSH into the host. SubKindOpenSSHEICENode = "openssh-ec2-ice" + /* + // SubKindOpenSSHGitHub is a virtual presentation of the GitHub server (per + // organization) for proxing Git protocol to GitHub over SSH. + // + // It uses a Teleport CA that is stored per GitHub integration. + SubKindOpenSSHGitHub = "openssh-github" + */ + KindGitServer = "git_server" + SubKindGitHub = "github" + // KindUnifiedResource is a meta Kind that is used for the unified resource search present on // the webUI and Connect. It allows us to query and return multiple kinds at the same time KindUnifiedResource = "unified_resource" @@ -1388,3 +1398,7 @@ const ( // interacting with a plugin via SCIM. Useful for diagnostic display. SCIMBaseURLLabel = TeleportNamespace + "/scim-base-url" ) + +const ( + GitHubServerDomain = "github-organization" +) diff --git a/api/types/events/events.go b/api/types/events/events.go index 88b6938931edd..df51398c7eaaa 100644 --- a/api/types/events/events.go +++ b/api/types/events/events.go @@ -2278,3 +2278,8 @@ func (m *StaticHostUserUpdate) TrimToMaxSize(maxSize int) AuditEvent { func (m *StaticHostUserDelete) TrimToMaxSize(maxSize int) AuditEvent { return m } + +func (e *GitCommand) TrimToMaxSize(int) AuditEvent { + // TODO + return e +} diff --git a/api/types/events/events.pb.go b/api/types/events/events.pb.go index f75d0192988a7..33b705ece3720 100644 --- a/api/types/events/events.pb.go +++ b/api/types/events/events.pb.go @@ -7215,10 +7215,12 @@ type IntegrationMetadata struct { // AWSOIDC contains metadata for AWS OIDC integrations. AWSOIDC *AWSOIDCIntegrationMetadata `protobuf:"bytes,2,opt,name=AWSOIDC,proto3" json:"aws_oidc,omitempty"` // AzureOIDC contains metadata for Azure OIDC integrations. - AzureOIDC *AzureOIDCIntegrationMetadata `protobuf:"bytes,3,opt,name=AzureOIDC,proto3" json:"azure_oidc,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + AzureOIDC *AzureOIDCIntegrationMetadata `protobuf:"bytes,3,opt,name=AzureOIDC,proto3" json:"azure_oidc,omitempty"` + // GitHub contains metadata for GitHub integrations. + GitHub *GitHubIntegrationMetadata `protobuf:"bytes,4,opt,name=GitHub,proto3" json:"github,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *IntegrationMetadata) Reset() { *m = IntegrationMetadata{} } @@ -7539,6 +7541,48 @@ func (m *PluginMetadata) XXX_DiscardUnknown() { var xxx_messageInfo_PluginMetadata proto.InternalMessageInfo +// GitHubIntegrationMetadata contains metadata for GitHub integrations. +type GitHubIntegrationMetadata struct { + // Organization specifies the name of the organization for the GitHub integration. + Organization string `protobuf:"bytes,1,opt,name=Organization,proto3" json:"organization,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GitHubIntegrationMetadata) Reset() { *m = GitHubIntegrationMetadata{} } +func (m *GitHubIntegrationMetadata) String() string { return proto.CompactTextString(m) } +func (*GitHubIntegrationMetadata) ProtoMessage() {} +func (*GitHubIntegrationMetadata) Descriptor() ([]byte, []int) { + return fileDescriptor_007ba1c3d6266d56, []int{140} +} +func (m *GitHubIntegrationMetadata) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GitHubIntegrationMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GitHubIntegrationMetadata.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 *GitHubIntegrationMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_GitHubIntegrationMetadata.Merge(m, src) +} +func (m *GitHubIntegrationMetadata) XXX_Size() int { + return m.Size() +} +func (m *GitHubIntegrationMetadata) XXX_DiscardUnknown() { + xxx_messageInfo_GitHubIntegrationMetadata.DiscardUnknown(m) +} + +var xxx_messageInfo_GitHubIntegrationMetadata proto.InternalMessageInfo + // OneOf is a union of one of audit events submitted to the auth service type OneOf struct { // Event is one of the audit events @@ -7724,6 +7768,7 @@ type OneOf struct { // *OneOf_StaticHostUserCreate // *OneOf_StaticHostUserUpdate // *OneOf_StaticHostUserDelete + // *OneOf_GitCommand Event isOneOf_Event `protobuf_oneof:"Event"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -7734,7 +7779,7 @@ func (m *OneOf) Reset() { *m = OneOf{} } func (m *OneOf) String() string { return proto.CompactTextString(m) } func (*OneOf) ProtoMessage() {} func (*OneOf) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{140} + return fileDescriptor_007ba1c3d6266d56, []int{141} } func (m *OneOf) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8309,6 +8354,9 @@ type OneOf_StaticHostUserUpdate struct { type OneOf_StaticHostUserDelete struct { StaticHostUserDelete *StaticHostUserDelete `protobuf:"bytes,181,opt,name=StaticHostUserDelete,proto3,oneof" json:"StaticHostUserDelete,omitempty"` } +type OneOf_GitCommand struct { + GitCommand *GitCommand `protobuf:"bytes,182,opt,name=GitCommand,proto3,oneof" json:"GitCommand,omitempty"` +} func (*OneOf_UserLogin) isOneOf_Event() {} func (*OneOf_UserCreate) isOneOf_Event() {} @@ -8490,6 +8538,7 @@ func (*OneOf_AutoUpdateVersionDelete) isOneOf_Event() {} func (*OneOf_StaticHostUserCreate) isOneOf_Event() {} func (*OneOf_StaticHostUserUpdate) isOneOf_Event() {} func (*OneOf_StaticHostUserDelete) isOneOf_Event() {} +func (*OneOf_GitCommand) isOneOf_Event() {} func (m *OneOf) GetEvent() isOneOf_Event { if m != nil { @@ -9758,6 +9807,13 @@ func (m *OneOf) GetStaticHostUserDelete() *StaticHostUserDelete { return nil } +func (m *OneOf) GetGitCommand() *GitCommand { + if x, ok := m.GetEvent().(*OneOf_GitCommand); ok { + return x.GitCommand + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*OneOf) XXX_OneofWrappers() []interface{} { return []interface{}{ @@ -9941,6 +9997,7 @@ func (*OneOf) XXX_OneofWrappers() []interface{} { (*OneOf_StaticHostUserCreate)(nil), (*OneOf_StaticHostUserUpdate)(nil), (*OneOf_StaticHostUserDelete)(nil), + (*OneOf_GitCommand)(nil), } } @@ -9961,7 +10018,7 @@ func (m *StreamStatus) Reset() { *m = StreamStatus{} } func (m *StreamStatus) String() string { return proto.CompactTextString(m) } func (*StreamStatus) ProtoMessage() {} func (*StreamStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{141} + return fileDescriptor_007ba1c3d6266d56, []int{142} } func (m *StreamStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10007,7 +10064,7 @@ func (m *SessionUpload) Reset() { *m = SessionUpload{} } func (m *SessionUpload) String() string { return proto.CompactTextString(m) } func (*SessionUpload) ProtoMessage() {} func (*SessionUpload) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{142} + return fileDescriptor_007ba1c3d6266d56, []int{143} } func (m *SessionUpload) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10126,7 +10183,7 @@ func (m *Identity) Reset() { *m = Identity{} } func (m *Identity) String() string { return proto.CompactTextString(m) } func (*Identity) ProtoMessage() {} func (*Identity) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{143} + return fileDescriptor_007ba1c3d6266d56, []int{144} } func (m *Identity) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10182,7 +10239,7 @@ func (m *RouteToApp) Reset() { *m = RouteToApp{} } func (m *RouteToApp) String() string { return proto.CompactTextString(m) } func (*RouteToApp) ProtoMessage() {} func (*RouteToApp) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{144} + return fileDescriptor_007ba1c3d6266d56, []int{145} } func (m *RouteToApp) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10232,7 +10289,7 @@ func (m *RouteToDatabase) Reset() { *m = RouteToDatabase{} } func (m *RouteToDatabase) String() string { return proto.CompactTextString(m) } func (*RouteToDatabase) ProtoMessage() {} func (*RouteToDatabase) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{145} + return fileDescriptor_007ba1c3d6266d56, []int{146} } func (m *RouteToDatabase) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10282,7 +10339,7 @@ func (m *DeviceExtensions) Reset() { *m = DeviceExtensions{} } func (m *DeviceExtensions) String() string { return proto.CompactTextString(m) } func (*DeviceExtensions) ProtoMessage() {} func (*DeviceExtensions) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{146} + return fileDescriptor_007ba1c3d6266d56, []int{147} } func (m *DeviceExtensions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10339,7 +10396,7 @@ func (m *AccessRequestResourceSearch) Reset() { *m = AccessRequestResour func (m *AccessRequestResourceSearch) String() string { return proto.CompactTextString(m) } func (*AccessRequestResourceSearch) ProtoMessage() {} func (*AccessRequestResourceSearch) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{147} + return fileDescriptor_007ba1c3d6266d56, []int{148} } func (m *AccessRequestResourceSearch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10390,7 +10447,7 @@ func (m *MySQLStatementPrepare) Reset() { *m = MySQLStatementPrepare{} } func (m *MySQLStatementPrepare) String() string { return proto.CompactTextString(m) } func (*MySQLStatementPrepare) ProtoMessage() {} func (*MySQLStatementPrepare) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{148} + return fileDescriptor_007ba1c3d6266d56, []int{149} } func (m *MySQLStatementPrepare) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10443,7 +10500,7 @@ func (m *MySQLStatementExecute) Reset() { *m = MySQLStatementExecute{} } func (m *MySQLStatementExecute) String() string { return proto.CompactTextString(m) } func (*MySQLStatementExecute) ProtoMessage() {} func (*MySQLStatementExecute) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{149} + return fileDescriptor_007ba1c3d6266d56, []int{150} } func (m *MySQLStatementExecute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10498,7 +10555,7 @@ func (m *MySQLStatementSendLongData) Reset() { *m = MySQLStatementSendLo func (m *MySQLStatementSendLongData) String() string { return proto.CompactTextString(m) } func (*MySQLStatementSendLongData) ProtoMessage() {} func (*MySQLStatementSendLongData) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{150} + return fileDescriptor_007ba1c3d6266d56, []int{151} } func (m *MySQLStatementSendLongData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10549,7 +10606,7 @@ func (m *MySQLStatementClose) Reset() { *m = MySQLStatementClose{} } func (m *MySQLStatementClose) String() string { return proto.CompactTextString(m) } func (*MySQLStatementClose) ProtoMessage() {} func (*MySQLStatementClose) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{151} + return fileDescriptor_007ba1c3d6266d56, []int{152} } func (m *MySQLStatementClose) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10600,7 +10657,7 @@ func (m *MySQLStatementReset) Reset() { *m = MySQLStatementReset{} } func (m *MySQLStatementReset) String() string { return proto.CompactTextString(m) } func (*MySQLStatementReset) ProtoMessage() {} func (*MySQLStatementReset) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{152} + return fileDescriptor_007ba1c3d6266d56, []int{153} } func (m *MySQLStatementReset) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10653,7 +10710,7 @@ func (m *MySQLStatementFetch) Reset() { *m = MySQLStatementFetch{} } func (m *MySQLStatementFetch) String() string { return proto.CompactTextString(m) } func (*MySQLStatementFetch) ProtoMessage() {} func (*MySQLStatementFetch) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{153} + return fileDescriptor_007ba1c3d6266d56, []int{154} } func (m *MySQLStatementFetch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10706,7 +10763,7 @@ func (m *MySQLStatementBulkExecute) Reset() { *m = MySQLStatementBulkExe func (m *MySQLStatementBulkExecute) String() string { return proto.CompactTextString(m) } func (*MySQLStatementBulkExecute) ProtoMessage() {} func (*MySQLStatementBulkExecute) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{154} + return fileDescriptor_007ba1c3d6266d56, []int{155} } func (m *MySQLStatementBulkExecute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10757,7 +10814,7 @@ func (m *MySQLInitDB) Reset() { *m = MySQLInitDB{} } func (m *MySQLInitDB) String() string { return proto.CompactTextString(m) } func (*MySQLInitDB) ProtoMessage() {} func (*MySQLInitDB) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{155} + return fileDescriptor_007ba1c3d6266d56, []int{156} } func (m *MySQLInitDB) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10807,7 +10864,7 @@ func (m *MySQLCreateDB) Reset() { *m = MySQLCreateDB{} } func (m *MySQLCreateDB) String() string { return proto.CompactTextString(m) } func (*MySQLCreateDB) ProtoMessage() {} func (*MySQLCreateDB) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{156} + return fileDescriptor_007ba1c3d6266d56, []int{157} } func (m *MySQLCreateDB) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10857,7 +10914,7 @@ func (m *MySQLDropDB) Reset() { *m = MySQLDropDB{} } func (m *MySQLDropDB) String() string { return proto.CompactTextString(m) } func (*MySQLDropDB) ProtoMessage() {} func (*MySQLDropDB) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{157} + return fileDescriptor_007ba1c3d6266d56, []int{158} } func (m *MySQLDropDB) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10905,7 +10962,7 @@ func (m *MySQLShutDown) Reset() { *m = MySQLShutDown{} } func (m *MySQLShutDown) String() string { return proto.CompactTextString(m) } func (*MySQLShutDown) ProtoMessage() {} func (*MySQLShutDown) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{158} + return fileDescriptor_007ba1c3d6266d56, []int{159} } func (m *MySQLShutDown) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10956,7 +11013,7 @@ func (m *MySQLProcessKill) Reset() { *m = MySQLProcessKill{} } func (m *MySQLProcessKill) String() string { return proto.CompactTextString(m) } func (*MySQLProcessKill) ProtoMessage() {} func (*MySQLProcessKill) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{159} + return fileDescriptor_007ba1c3d6266d56, []int{160} } func (m *MySQLProcessKill) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11005,7 +11062,7 @@ func (m *MySQLDebug) Reset() { *m = MySQLDebug{} } func (m *MySQLDebug) String() string { return proto.CompactTextString(m) } func (*MySQLDebug) ProtoMessage() {} func (*MySQLDebug) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{160} + return fileDescriptor_007ba1c3d6266d56, []int{161} } func (m *MySQLDebug) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11055,7 +11112,7 @@ func (m *MySQLRefresh) Reset() { *m = MySQLRefresh{} } func (m *MySQLRefresh) String() string { return proto.CompactTextString(m) } func (*MySQLRefresh) ProtoMessage() {} func (*MySQLRefresh) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{161} + return fileDescriptor_007ba1c3d6266d56, []int{162} } func (m *MySQLRefresh) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11107,7 +11164,7 @@ func (m *SQLServerRPCRequest) Reset() { *m = SQLServerRPCRequest{} } func (m *SQLServerRPCRequest) String() string { return proto.CompactTextString(m) } func (*SQLServerRPCRequest) ProtoMessage() {} func (*SQLServerRPCRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{162} + return fileDescriptor_007ba1c3d6266d56, []int{163} } func (m *SQLServerRPCRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11157,7 +11214,7 @@ func (m *DatabaseSessionMalformedPacket) Reset() { *m = DatabaseSessionM func (m *DatabaseSessionMalformedPacket) String() string { return proto.CompactTextString(m) } func (*DatabaseSessionMalformedPacket) ProtoMessage() {} func (*DatabaseSessionMalformedPacket) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{163} + return fileDescriptor_007ba1c3d6266d56, []int{164} } func (m *DatabaseSessionMalformedPacket) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11224,7 +11281,7 @@ func (m *ElasticsearchRequest) Reset() { *m = ElasticsearchRequest{} } func (m *ElasticsearchRequest) String() string { return proto.CompactTextString(m) } func (*ElasticsearchRequest) ProtoMessage() {} func (*ElasticsearchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{164} + return fileDescriptor_007ba1c3d6266d56, []int{165} } func (m *ElasticsearchRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11290,7 +11347,7 @@ func (m *OpenSearchRequest) Reset() { *m = OpenSearchRequest{} } func (m *OpenSearchRequest) String() string { return proto.CompactTextString(m) } func (*OpenSearchRequest) ProtoMessage() {} func (*OpenSearchRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{165} + return fileDescriptor_007ba1c3d6266d56, []int{166} } func (m *OpenSearchRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11350,7 +11407,7 @@ func (m *DynamoDBRequest) Reset() { *m = DynamoDBRequest{} } func (m *DynamoDBRequest) String() string { return proto.CompactTextString(m) } func (*DynamoDBRequest) ProtoMessage() {} func (*DynamoDBRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{166} + return fileDescriptor_007ba1c3d6266d56, []int{167} } func (m *DynamoDBRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11416,7 +11473,7 @@ func (m *AppSessionDynamoDBRequest) Reset() { *m = AppSessionDynamoDBReq func (m *AppSessionDynamoDBRequest) String() string { return proto.CompactTextString(m) } func (*AppSessionDynamoDBRequest) ProtoMessage() {} func (*AppSessionDynamoDBRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{167} + return fileDescriptor_007ba1c3d6266d56, []int{168} } func (m *AppSessionDynamoDBRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11458,7 +11515,7 @@ func (m *UpgradeWindowStartMetadata) Reset() { *m = UpgradeWindowStartMe func (m *UpgradeWindowStartMetadata) String() string { return proto.CompactTextString(m) } func (*UpgradeWindowStartMetadata) ProtoMessage() {} func (*UpgradeWindowStartMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{168} + return fileDescriptor_007ba1c3d6266d56, []int{169} } func (m *UpgradeWindowStartMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11506,7 +11563,7 @@ func (m *UpgradeWindowStartUpdate) Reset() { *m = UpgradeWindowStartUpda func (m *UpgradeWindowStartUpdate) String() string { return proto.CompactTextString(m) } func (*UpgradeWindowStartUpdate) ProtoMessage() {} func (*UpgradeWindowStartUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{169} + return fileDescriptor_007ba1c3d6266d56, []int{170} } func (m *UpgradeWindowStartUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11553,7 +11610,7 @@ func (m *SessionRecordingAccess) Reset() { *m = SessionRecordingAccess{} func (m *SessionRecordingAccess) String() string { return proto.CompactTextString(m) } func (*SessionRecordingAccess) ProtoMessage() {} func (*SessionRecordingAccess) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{170} + return fileDescriptor_007ba1c3d6266d56, []int{171} } func (m *SessionRecordingAccess) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11595,7 +11652,7 @@ func (m *KubeClusterMetadata) Reset() { *m = KubeClusterMetadata{} } func (m *KubeClusterMetadata) String() string { return proto.CompactTextString(m) } func (*KubeClusterMetadata) ProtoMessage() {} func (*KubeClusterMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{171} + return fileDescriptor_007ba1c3d6266d56, []int{172} } func (m *KubeClusterMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11643,7 +11700,7 @@ func (m *KubernetesClusterCreate) Reset() { *m = KubernetesClusterCreate func (m *KubernetesClusterCreate) String() string { return proto.CompactTextString(m) } func (*KubernetesClusterCreate) ProtoMessage() {} func (*KubernetesClusterCreate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{172} + return fileDescriptor_007ba1c3d6266d56, []int{173} } func (m *KubernetesClusterCreate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11691,7 +11748,7 @@ func (m *KubernetesClusterUpdate) Reset() { *m = KubernetesClusterUpdate func (m *KubernetesClusterUpdate) String() string { return proto.CompactTextString(m) } func (*KubernetesClusterUpdate) ProtoMessage() {} func (*KubernetesClusterUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{173} + return fileDescriptor_007ba1c3d6266d56, []int{174} } func (m *KubernetesClusterUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11737,7 +11794,7 @@ func (m *KubernetesClusterDelete) Reset() { *m = KubernetesClusterDelete func (m *KubernetesClusterDelete) String() string { return proto.CompactTextString(m) } func (*KubernetesClusterDelete) ProtoMessage() {} func (*KubernetesClusterDelete) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{174} + return fileDescriptor_007ba1c3d6266d56, []int{175} } func (m *KubernetesClusterDelete) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11800,7 +11857,7 @@ func (m *SSMRun) Reset() { *m = SSMRun{} } func (m *SSMRun) String() string { return proto.CompactTextString(m) } func (*SSMRun) ProtoMessage() {} func (*SSMRun) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{175} + return fileDescriptor_007ba1c3d6266d56, []int{176} } func (m *SSMRun) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11853,7 +11910,7 @@ func (m *CassandraPrepare) Reset() { *m = CassandraPrepare{} } func (m *CassandraPrepare) String() string { return proto.CompactTextString(m) } func (*CassandraPrepare) ProtoMessage() {} func (*CassandraPrepare) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{176} + return fileDescriptor_007ba1c3d6266d56, []int{177} } func (m *CassandraPrepare) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11903,7 +11960,7 @@ func (m *CassandraExecute) Reset() { *m = CassandraExecute{} } func (m *CassandraExecute) String() string { return proto.CompactTextString(m) } func (*CassandraExecute) ProtoMessage() {} func (*CassandraExecute) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{177} + return fileDescriptor_007ba1c3d6266d56, []int{178} } func (m *CassandraExecute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11959,7 +12016,7 @@ func (m *CassandraBatch) Reset() { *m = CassandraBatch{} } func (m *CassandraBatch) String() string { return proto.CompactTextString(m) } func (*CassandraBatch) ProtoMessage() {} func (*CassandraBatch) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{178} + return fileDescriptor_007ba1c3d6266d56, []int{179} } func (m *CassandraBatch) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12005,7 +12062,7 @@ func (m *CassandraBatch_BatchChild) Reset() { *m = CassandraBatch_BatchC func (m *CassandraBatch_BatchChild) String() string { return proto.CompactTextString(m) } func (*CassandraBatch_BatchChild) ProtoMessage() {} func (*CassandraBatch_BatchChild) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{178, 0} + return fileDescriptor_007ba1c3d6266d56, []int{179, 0} } func (m *CassandraBatch_BatchChild) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12049,7 +12106,7 @@ func (m *CassandraBatch_BatchChild_Value) Reset() { *m = CassandraBatch_ func (m *CassandraBatch_BatchChild_Value) String() string { return proto.CompactTextString(m) } func (*CassandraBatch_BatchChild_Value) ProtoMessage() {} func (*CassandraBatch_BatchChild_Value) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{178, 0, 0} + return fileDescriptor_007ba1c3d6266d56, []int{179, 0, 0} } func (m *CassandraBatch_BatchChild_Value) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12100,7 +12157,7 @@ func (m *CassandraRegister) Reset() { *m = CassandraRegister{} } func (m *CassandraRegister) String() string { return proto.CompactTextString(m) } func (*CassandraRegister) ProtoMessage() {} func (*CassandraRegister) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{179} + return fileDescriptor_007ba1c3d6266d56, []int{180} } func (m *CassandraRegister) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12146,7 +12203,7 @@ func (m *LoginRuleCreate) Reset() { *m = LoginRuleCreate{} } func (m *LoginRuleCreate) String() string { return proto.CompactTextString(m) } func (*LoginRuleCreate) ProtoMessage() {} func (*LoginRuleCreate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{180} + return fileDescriptor_007ba1c3d6266d56, []int{181} } func (m *LoginRuleCreate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12192,7 +12249,7 @@ func (m *LoginRuleDelete) Reset() { *m = LoginRuleDelete{} } func (m *LoginRuleDelete) String() string { return proto.CompactTextString(m) } func (*LoginRuleDelete) ProtoMessage() {} func (*LoginRuleDelete) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{181} + return fileDescriptor_007ba1c3d6266d56, []int{182} } func (m *LoginRuleDelete) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12242,7 +12299,7 @@ func (m *SAMLIdPAuthAttempt) Reset() { *m = SAMLIdPAuthAttempt{} } func (m *SAMLIdPAuthAttempt) String() string { return proto.CompactTextString(m) } func (*SAMLIdPAuthAttempt) ProtoMessage() {} func (*SAMLIdPAuthAttempt) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{182} + return fileDescriptor_007ba1c3d6266d56, []int{183} } func (m *SAMLIdPAuthAttempt) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12288,7 +12345,7 @@ func (m *SAMLIdPServiceProviderCreate) Reset() { *m = SAMLIdPServiceProv func (m *SAMLIdPServiceProviderCreate) String() string { return proto.CompactTextString(m) } func (*SAMLIdPServiceProviderCreate) ProtoMessage() {} func (*SAMLIdPServiceProviderCreate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{183} + return fileDescriptor_007ba1c3d6266d56, []int{184} } func (m *SAMLIdPServiceProviderCreate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12334,7 +12391,7 @@ func (m *SAMLIdPServiceProviderUpdate) Reset() { *m = SAMLIdPServiceProv func (m *SAMLIdPServiceProviderUpdate) String() string { return proto.CompactTextString(m) } func (*SAMLIdPServiceProviderUpdate) ProtoMessage() {} func (*SAMLIdPServiceProviderUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{184} + return fileDescriptor_007ba1c3d6266d56, []int{185} } func (m *SAMLIdPServiceProviderUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12380,7 +12437,7 @@ func (m *SAMLIdPServiceProviderDelete) Reset() { *m = SAMLIdPServiceProv func (m *SAMLIdPServiceProviderDelete) String() string { return proto.CompactTextString(m) } func (*SAMLIdPServiceProviderDelete) ProtoMessage() {} func (*SAMLIdPServiceProviderDelete) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{185} + return fileDescriptor_007ba1c3d6266d56, []int{186} } func (m *SAMLIdPServiceProviderDelete) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12424,7 +12481,7 @@ func (m *SAMLIdPServiceProviderDeleteAll) Reset() { *m = SAMLIdPServiceP func (m *SAMLIdPServiceProviderDeleteAll) String() string { return proto.CompactTextString(m) } func (*SAMLIdPServiceProviderDeleteAll) ProtoMessage() {} func (*SAMLIdPServiceProviderDeleteAll) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{186} + return fileDescriptor_007ba1c3d6266d56, []int{187} } func (m *SAMLIdPServiceProviderDeleteAll) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12470,7 +12527,7 @@ func (m *OktaResourcesUpdate) Reset() { *m = OktaResourcesUpdate{} } func (m *OktaResourcesUpdate) String() string { return proto.CompactTextString(m) } func (*OktaResourcesUpdate) ProtoMessage() {} func (*OktaResourcesUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{187} + return fileDescriptor_007ba1c3d6266d56, []int{188} } func (m *OktaResourcesUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12516,7 +12573,7 @@ func (m *OktaSyncFailure) Reset() { *m = OktaSyncFailure{} } func (m *OktaSyncFailure) String() string { return proto.CompactTextString(m) } func (*OktaSyncFailure) ProtoMessage() {} func (*OktaSyncFailure) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{188} + return fileDescriptor_007ba1c3d6266d56, []int{189} } func (m *OktaSyncFailure) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12566,7 +12623,7 @@ func (m *OktaAssignmentResult) Reset() { *m = OktaAssignmentResult{} } func (m *OktaAssignmentResult) String() string { return proto.CompactTextString(m) } func (*OktaAssignmentResult) ProtoMessage() {} func (*OktaAssignmentResult) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{189} + return fileDescriptor_007ba1c3d6266d56, []int{190} } func (m *OktaAssignmentResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12612,7 +12669,7 @@ func (m *AccessListCreate) Reset() { *m = AccessListCreate{} } func (m *AccessListCreate) String() string { return proto.CompactTextString(m) } func (*AccessListCreate) ProtoMessage() {} func (*AccessListCreate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{190} + return fileDescriptor_007ba1c3d6266d56, []int{191} } func (m *AccessListCreate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12658,7 +12715,7 @@ func (m *AccessListUpdate) Reset() { *m = AccessListUpdate{} } func (m *AccessListUpdate) String() string { return proto.CompactTextString(m) } func (*AccessListUpdate) ProtoMessage() {} func (*AccessListUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{191} + return fileDescriptor_007ba1c3d6266d56, []int{192} } func (m *AccessListUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12704,7 +12761,7 @@ func (m *AccessListDelete) Reset() { *m = AccessListDelete{} } func (m *AccessListDelete) String() string { return proto.CompactTextString(m) } func (*AccessListDelete) ProtoMessage() {} func (*AccessListDelete) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{192} + return fileDescriptor_007ba1c3d6266d56, []int{193} } func (m *AccessListDelete) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12752,7 +12809,7 @@ func (m *AccessListMemberCreate) Reset() { *m = AccessListMemberCreate{} func (m *AccessListMemberCreate) String() string { return proto.CompactTextString(m) } func (*AccessListMemberCreate) ProtoMessage() {} func (*AccessListMemberCreate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{193} + return fileDescriptor_007ba1c3d6266d56, []int{194} } func (m *AccessListMemberCreate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12800,7 +12857,7 @@ func (m *AccessListMemberUpdate) Reset() { *m = AccessListMemberUpdate{} func (m *AccessListMemberUpdate) String() string { return proto.CompactTextString(m) } func (*AccessListMemberUpdate) ProtoMessage() {} func (*AccessListMemberUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{194} + return fileDescriptor_007ba1c3d6266d56, []int{195} } func (m *AccessListMemberUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12848,7 +12905,7 @@ func (m *AccessListMemberDelete) Reset() { *m = AccessListMemberDelete{} func (m *AccessListMemberDelete) String() string { return proto.CompactTextString(m) } func (*AccessListMemberDelete) ProtoMessage() {} func (*AccessListMemberDelete) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{195} + return fileDescriptor_007ba1c3d6266d56, []int{196} } func (m *AccessListMemberDelete) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12898,7 +12955,7 @@ func (m *AccessListMemberDeleteAllForAccessList) Reset() { func (m *AccessListMemberDeleteAllForAccessList) String() string { return proto.CompactTextString(m) } func (*AccessListMemberDeleteAllForAccessList) ProtoMessage() {} func (*AccessListMemberDeleteAllForAccessList) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{196} + return fileDescriptor_007ba1c3d6266d56, []int{197} } func (m *AccessListMemberDeleteAllForAccessList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12946,7 +13003,7 @@ func (m *AccessListReview) Reset() { *m = AccessListReview{} } func (m *AccessListReview) String() string { return proto.CompactTextString(m) } func (*AccessListReview) ProtoMessage() {} func (*AccessListReview) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{197} + return fileDescriptor_007ba1c3d6266d56, []int{198} } func (m *AccessListReview) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12994,7 +13051,7 @@ func (m *AuditQueryRun) Reset() { *m = AuditQueryRun{} } func (m *AuditQueryRun) String() string { return proto.CompactTextString(m) } func (*AuditQueryRun) ProtoMessage() {} func (*AuditQueryRun) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{198} + return fileDescriptor_007ba1c3d6266d56, []int{199} } func (m *AuditQueryRun) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13044,7 +13101,7 @@ func (m *AuditQueryDetails) Reset() { *m = AuditQueryDetails{} } func (m *AuditQueryDetails) String() string { return proto.CompactTextString(m) } func (*AuditQueryDetails) ProtoMessage() {} func (*AuditQueryDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{199} + return fileDescriptor_007ba1c3d6266d56, []int{200} } func (m *AuditQueryDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13100,7 +13157,7 @@ func (m *SecurityReportRun) Reset() { *m = SecurityReportRun{} } func (m *SecurityReportRun) String() string { return proto.CompactTextString(m) } func (*SecurityReportRun) ProtoMessage() {} func (*SecurityReportRun) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{200} + return fileDescriptor_007ba1c3d6266d56, []int{201} } func (m *SecurityReportRun) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13148,7 +13205,7 @@ func (m *ExternalAuditStorageEnable) Reset() { *m = ExternalAuditStorage func (m *ExternalAuditStorageEnable) String() string { return proto.CompactTextString(m) } func (*ExternalAuditStorageEnable) ProtoMessage() {} func (*ExternalAuditStorageEnable) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{201} + return fileDescriptor_007ba1c3d6266d56, []int{202} } func (m *ExternalAuditStorageEnable) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13196,7 +13253,7 @@ func (m *ExternalAuditStorageDisable) Reset() { *m = ExternalAuditStorag func (m *ExternalAuditStorageDisable) String() string { return proto.CompactTextString(m) } func (*ExternalAuditStorageDisable) ProtoMessage() {} func (*ExternalAuditStorageDisable) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{202} + return fileDescriptor_007ba1c3d6266d56, []int{203} } func (m *ExternalAuditStorageDisable) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13257,7 +13314,7 @@ func (m *ExternalAuditStorageDetails) Reset() { *m = ExternalAuditStorag func (m *ExternalAuditStorageDetails) String() string { return proto.CompactTextString(m) } func (*ExternalAuditStorageDetails) ProtoMessage() {} func (*ExternalAuditStorageDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{203} + return fileDescriptor_007ba1c3d6266d56, []int{204} } func (m *ExternalAuditStorageDetails) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13315,7 +13372,7 @@ func (m *OktaAccessListSync) Reset() { *m = OktaAccessListSync{} } func (m *OktaAccessListSync) String() string { return proto.CompactTextString(m) } func (*OktaAccessListSync) ProtoMessage() {} func (*OktaAccessListSync) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{204} + return fileDescriptor_007ba1c3d6266d56, []int{205} } func (m *OktaAccessListSync) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13379,7 +13436,7 @@ func (m *OktaUserSync) Reset() { *m = OktaUserSync{} } func (m *OktaUserSync) String() string { return proto.CompactTextString(m) } func (*OktaUserSync) ProtoMessage() {} func (*OktaUserSync) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{205} + return fileDescriptor_007ba1c3d6266d56, []int{206} } func (m *OktaUserSync) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13437,7 +13494,7 @@ func (m *SPIFFESVIDIssued) Reset() { *m = SPIFFESVIDIssued{} } func (m *SPIFFESVIDIssued) String() string { return proto.CompactTextString(m) } func (*SPIFFESVIDIssued) ProtoMessage() {} func (*SPIFFESVIDIssued) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{206} + return fileDescriptor_007ba1c3d6266d56, []int{207} } func (m *SPIFFESVIDIssued) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13488,7 +13545,7 @@ func (m *AuthPreferenceUpdate) Reset() { *m = AuthPreferenceUpdate{} } func (m *AuthPreferenceUpdate) String() string { return proto.CompactTextString(m) } func (*AuthPreferenceUpdate) ProtoMessage() {} func (*AuthPreferenceUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{207} + return fileDescriptor_007ba1c3d6266d56, []int{208} } func (m *AuthPreferenceUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13536,7 +13593,7 @@ func (m *ClusterNetworkingConfigUpdate) Reset() { *m = ClusterNetworking func (m *ClusterNetworkingConfigUpdate) String() string { return proto.CompactTextString(m) } func (*ClusterNetworkingConfigUpdate) ProtoMessage() {} func (*ClusterNetworkingConfigUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{208} + return fileDescriptor_007ba1c3d6266d56, []int{209} } func (m *ClusterNetworkingConfigUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13584,7 +13641,7 @@ func (m *SessionRecordingConfigUpdate) Reset() { *m = SessionRecordingCo func (m *SessionRecordingConfigUpdate) String() string { return proto.CompactTextString(m) } func (*SessionRecordingConfigUpdate) ProtoMessage() {} func (*SessionRecordingConfigUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{209} + return fileDescriptor_007ba1c3d6266d56, []int{210} } func (m *SessionRecordingConfigUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13634,7 +13691,7 @@ func (m *AccessPathChanged) Reset() { *m = AccessPathChanged{} } func (m *AccessPathChanged) String() string { return proto.CompactTextString(m) } func (*AccessPathChanged) ProtoMessage() {} func (*AccessPathChanged) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{210} + return fileDescriptor_007ba1c3d6266d56, []int{211} } func (m *AccessPathChanged) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13688,7 +13745,7 @@ func (m *SpannerRPC) Reset() { *m = SpannerRPC{} } func (m *SpannerRPC) String() string { return proto.CompactTextString(m) } func (*SpannerRPC) ProtoMessage() {} func (*SpannerRPC) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{211} + return fileDescriptor_007ba1c3d6266d56, []int{212} } func (m *SpannerRPC) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13736,7 +13793,7 @@ func (m *AccessGraphSettingsUpdate) Reset() { *m = AccessGraphSettingsUp func (m *AccessGraphSettingsUpdate) String() string { return proto.CompactTextString(m) } func (*AccessGraphSettingsUpdate) ProtoMessage() {} func (*AccessGraphSettingsUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{212} + return fileDescriptor_007ba1c3d6266d56, []int{213} } func (m *AccessGraphSettingsUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13784,7 +13841,7 @@ func (m *SPIFFEFederationCreate) Reset() { *m = SPIFFEFederationCreate{} func (m *SPIFFEFederationCreate) String() string { return proto.CompactTextString(m) } func (*SPIFFEFederationCreate) ProtoMessage() {} func (*SPIFFEFederationCreate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{213} + return fileDescriptor_007ba1c3d6266d56, []int{214} } func (m *SPIFFEFederationCreate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13832,7 +13889,7 @@ func (m *SPIFFEFederationDelete) Reset() { *m = SPIFFEFederationDelete{} func (m *SPIFFEFederationDelete) String() string { return proto.CompactTextString(m) } func (*SPIFFEFederationDelete) ProtoMessage() {} func (*SPIFFEFederationDelete) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{214} + return fileDescriptor_007ba1c3d6266d56, []int{215} } func (m *SPIFFEFederationDelete) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13868,8 +13925,7 @@ type AutoUpdateConfigCreate struct { // ResourceMetadata is a common resource event metadata ResourceMetadata `protobuf:"bytes,2,opt,name=Resource,proto3,embedded=Resource" json:""` // User is a common user event metadata - UserMetadata `protobuf:"bytes,3,opt,name=User,proto3,embedded=User" json:""` - // ConnectionMetadata holds information about the connection + UserMetadata `protobuf:"bytes,3,opt,name=User,proto3,embedded=User" json:""` ConnectionMetadata `protobuf:"bytes,4,opt,name=Connection,proto3,embedded=Connection" json:""` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -13880,7 +13936,7 @@ func (m *AutoUpdateConfigCreate) Reset() { *m = AutoUpdateConfigCreate{} func (m *AutoUpdateConfigCreate) String() string { return proto.CompactTextString(m) } func (*AutoUpdateConfigCreate) ProtoMessage() {} func (*AutoUpdateConfigCreate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{215} + return fileDescriptor_007ba1c3d6266d56, []int{216} } func (m *AutoUpdateConfigCreate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13928,7 +13984,7 @@ func (m *AutoUpdateConfigUpdate) Reset() { *m = AutoUpdateConfigUpdate{} func (m *AutoUpdateConfigUpdate) String() string { return proto.CompactTextString(m) } func (*AutoUpdateConfigUpdate) ProtoMessage() {} func (*AutoUpdateConfigUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{216} + return fileDescriptor_007ba1c3d6266d56, []int{217} } func (m *AutoUpdateConfigUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13976,7 +14032,7 @@ func (m *AutoUpdateConfigDelete) Reset() { *m = AutoUpdateConfigDelete{} func (m *AutoUpdateConfigDelete) String() string { return proto.CompactTextString(m) } func (*AutoUpdateConfigDelete) ProtoMessage() {} func (*AutoUpdateConfigDelete) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{217} + return fileDescriptor_007ba1c3d6266d56, []int{218} } func (m *AutoUpdateConfigDelete) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14024,7 +14080,7 @@ func (m *AutoUpdateVersionCreate) Reset() { *m = AutoUpdateVersionCreate func (m *AutoUpdateVersionCreate) String() string { return proto.CompactTextString(m) } func (*AutoUpdateVersionCreate) ProtoMessage() {} func (*AutoUpdateVersionCreate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{218} + return fileDescriptor_007ba1c3d6266d56, []int{219} } func (m *AutoUpdateVersionCreate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14072,7 +14128,7 @@ func (m *AutoUpdateVersionUpdate) Reset() { *m = AutoUpdateVersionUpdate func (m *AutoUpdateVersionUpdate) String() string { return proto.CompactTextString(m) } func (*AutoUpdateVersionUpdate) ProtoMessage() {} func (*AutoUpdateVersionUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{219} + return fileDescriptor_007ba1c3d6266d56, []int{220} } func (m *AutoUpdateVersionUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14120,7 +14176,7 @@ func (m *AutoUpdateVersionDelete) Reset() { *m = AutoUpdateVersionDelete func (m *AutoUpdateVersionDelete) String() string { return proto.CompactTextString(m) } func (*AutoUpdateVersionDelete) ProtoMessage() {} func (*AutoUpdateVersionDelete) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{220} + return fileDescriptor_007ba1c3d6266d56, []int{221} } func (m *AutoUpdateVersionDelete) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14170,7 +14226,7 @@ func (m *StaticHostUserCreate) Reset() { *m = StaticHostUserCreate{} } func (m *StaticHostUserCreate) String() string { return proto.CompactTextString(m) } func (*StaticHostUserCreate) ProtoMessage() {} func (*StaticHostUserCreate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{221} + return fileDescriptor_007ba1c3d6266d56, []int{222} } func (m *StaticHostUserCreate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14220,7 +14276,7 @@ func (m *StaticHostUserUpdate) Reset() { *m = StaticHostUserUpdate{} } func (m *StaticHostUserUpdate) String() string { return proto.CompactTextString(m) } func (*StaticHostUserUpdate) ProtoMessage() {} func (*StaticHostUserUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{222} + return fileDescriptor_007ba1c3d6266d56, []int{223} } func (m *StaticHostUserUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14270,7 +14326,7 @@ func (m *StaticHostUserDelete) Reset() { *m = StaticHostUserDelete{} } func (m *StaticHostUserDelete) String() string { return proto.CompactTextString(m) } func (*StaticHostUserDelete) ProtoMessage() {} func (*StaticHostUserDelete) Descriptor() ([]byte, []int) { - return fileDescriptor_007ba1c3d6266d56, []int{223} + return fileDescriptor_007ba1c3d6266d56, []int{224} } func (m *StaticHostUserDelete) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14299,6 +14355,113 @@ func (m *StaticHostUserDelete) XXX_DiscardUnknown() { var xxx_messageInfo_StaticHostUserDelete proto.InternalMessageInfo +// GitCommand is emitted when a user performance a Git fetch or push command. +type GitCommand struct { + // Metadata is a common event metadata + Metadata `protobuf:"bytes,1,opt,name=Metadata,proto3,embedded=Metadata" json:""` + // User is a common user event metadata + UserMetadata `protobuf:"bytes,2,opt,name=User,proto3,embedded=User" json:""` + // ConnectionMetadata holds information about the connection + ConnectionMetadata `protobuf:"bytes,3,opt,name=Connection,proto3,embedded=Connection" json:""` + // SessionMetadata is a common event session metadata + SessionMetadata `protobuf:"bytes,4,opt,name=Session,proto3,embedded=Session" json:""` + // ServerMetadata is a common server metadata + ServerMetadata `protobuf:"bytes,5,opt,name=Server,proto3,embedded=Server" json:""` + // CommandMetadata is a common command metadata + CommandMetadata `protobuf:"bytes,6,opt,name=Command,proto3,embedded=Command" json:""` + // Service is the type of the git request like git-upload-pack or + // git-receive-pack. + Service string `protobuf:"bytes,8,opt,name=service,proto3" json:"service"` + // Path is the Git repo path, usually /. + Path string `protobuf:"bytes,9,opt,name=path,proto3" json:"path"` + // Actions defines details for a Git push. + Actions []*GitCommandAction `protobuf:"bytes,10,rep,name=actions,proto3" json:"actions,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GitCommand) Reset() { *m = GitCommand{} } +func (m *GitCommand) String() string { return proto.CompactTextString(m) } +func (*GitCommand) ProtoMessage() {} +func (*GitCommand) Descriptor() ([]byte, []int) { + return fileDescriptor_007ba1c3d6266d56, []int{225} +} +func (m *GitCommand) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GitCommand) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GitCommand.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 *GitCommand) XXX_Merge(src proto.Message) { + xxx_messageInfo_GitCommand.Merge(m, src) +} +func (m *GitCommand) XXX_Size() int { + return m.Size() +} +func (m *GitCommand) XXX_DiscardUnknown() { + xxx_messageInfo_GitCommand.DiscardUnknown(m) +} + +var xxx_messageInfo_GitCommand proto.InternalMessageInfo + +// GitCommandAction defines details for a Git push. +type GitCommandAction struct { + // Action type like create or update. + Action string `protobuf:"bytes,1,opt,name=Action,proto3" json:"action,omitempty"` + // Reference name like ref/main/my_branch. + Reference string `protobuf:"bytes,2,opt,name=Reference,proto3" json:"reference,omitempty"` + // Old is the old hash. + Old string `protobuf:"bytes,3,opt,name=Old,proto3" json:"old,omitempty"` + // New is the new hash. + New string `protobuf:"bytes,4,opt,name=New,proto3" json:"new,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GitCommandAction) Reset() { *m = GitCommandAction{} } +func (m *GitCommandAction) String() string { return proto.CompactTextString(m) } +func (*GitCommandAction) ProtoMessage() {} +func (*GitCommandAction) Descriptor() ([]byte, []int) { + return fileDescriptor_007ba1c3d6266d56, []int{226} +} +func (m *GitCommandAction) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GitCommandAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GitCommandAction.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 *GitCommandAction) XXX_Merge(src proto.Message) { + xxx_messageInfo_GitCommandAction.Merge(m, src) +} +func (m *GitCommandAction) XXX_Size() int { + return m.Size() +} +func (m *GitCommandAction) XXX_DiscardUnknown() { + xxx_messageInfo_GitCommandAction.DiscardUnknown(m) +} + +var xxx_messageInfo_GitCommandAction proto.InternalMessageInfo + func init() { proto.RegisterEnum("events.UserKind", UserKind_name, UserKind_value) proto.RegisterEnum("events.EventAction", EventAction_name, EventAction_value) @@ -14459,6 +14622,7 @@ func init() { proto.RegisterType((*PluginUpdate)(nil), "events.PluginUpdate") proto.RegisterType((*PluginDelete)(nil), "events.PluginDelete") proto.RegisterType((*PluginMetadata)(nil), "events.PluginMetadata") + proto.RegisterType((*GitHubIntegrationMetadata)(nil), "events.GitHubIntegrationMetadata") proto.RegisterType((*OneOf)(nil), "events.OneOf") proto.RegisterType((*StreamStatus)(nil), "events.StreamStatus") proto.RegisterType((*SessionUpload)(nil), "events.SessionUpload") @@ -14547,6 +14711,8 @@ func init() { proto.RegisterType((*StaticHostUserCreate)(nil), "events.StaticHostUserCreate") proto.RegisterType((*StaticHostUserUpdate)(nil), "events.StaticHostUserUpdate") proto.RegisterType((*StaticHostUserDelete)(nil), "events.StaticHostUserDelete") + proto.RegisterType((*GitCommand)(nil), "events.GitCommand") + proto.RegisterType((*GitCommandAction)(nil), "events.GitCommandAction") } func init() { @@ -14554,1018 +14720,1034 @@ func init() { } var fileDescriptor_007ba1c3d6266d56 = []byte{ - // 16173 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x74, 0x24, 0xc7, - 0x75, 0x18, 0x8c, 0x79, 0x60, 0x30, 0x28, 0xbc, 0x6b, 0x5f, 0xbd, 0xcb, 0xdd, 0x1d, 0xb2, 0x49, - 0xae, 0x76, 0x29, 0x72, 0x97, 0x5c, 0x2e, 0x49, 0xf1, 0x25, 0x72, 0x80, 0x01, 0x16, 0xc3, 0xc5, - 0x63, 0xd8, 0x03, 0xec, 0x8a, 0x7a, 0x8d, 0x1b, 0xd3, 0x85, 0x41, 0x13, 0x33, 0xdd, 0xa3, 0xee, - 0x9e, 0xc5, 0x82, 0xdf, 0x23, 0x96, 0x63, 0xcb, 0x92, 0x43, 0xc9, 0x8a, 0x1c, 0x5b, 0x7e, 0x25, - 0x96, 0xed, 0x38, 0xb1, 0x1d, 0xdb, 0xf2, 0x2b, 0xb6, 0x65, 0x47, 0x27, 0x76, 0x94, 0x07, 0x1d, - 0x1d, 0xfb, 0xd8, 0x4e, 0xe2, 0xe3, 0x93, 0x38, 0x90, 0xa3, 0xc4, 0x7f, 0x70, 0x92, 0x73, 0x9c, - 0x44, 0x27, 0x56, 0x1c, 0x27, 0x27, 0xa7, 0x6e, 0x55, 0x77, 0x57, 0xbf, 0x06, 0x4f, 0x1a, 0x04, - 0x81, 0x3f, 0xbb, 0x98, 0x7b, 0x6f, 0xdd, 0xaa, 0xbe, 0x75, 0xab, 0xea, 0x56, 0xd5, 0xad, 0x7b, - 0xd1, 0x15, 0x87, 0x34, 0x49, 0xdb, 0xb4, 0x9c, 0x6b, 0x4d, 0xd2, 0x50, 0xeb, 0xeb, 0xd7, 0x9c, - 0xf5, 0x36, 0xb1, 0xaf, 0x91, 0xbb, 0xc4, 0x70, 0xdc, 0xff, 0xae, 0xb6, 0x2d, 0xd3, 0x31, 0x71, - 0x8e, 0xfd, 0x3a, 0x77, 0xb2, 0x61, 0x36, 0x4c, 0x00, 0x5d, 0xa3, 0x7f, 0x31, 0xec, 0xb9, 0xf3, - 0x0d, 0xd3, 0x6c, 0x34, 0xc9, 0x35, 0xf8, 0xb5, 0xd4, 0x59, 0xbe, 0x66, 0x3b, 0x56, 0xa7, 0xee, - 0x70, 0x6c, 0x21, 0x8c, 0x75, 0xf4, 0x16, 0xb1, 0x1d, 0xb5, 0xd5, 0xe6, 0x04, 0x17, 0xc3, 0x04, - 0x6b, 0x96, 0xda, 0x6e, 0x13, 0x8b, 0x57, 0x7e, 0xee, 0x81, 0xf8, 0x76, 0xc2, 0xbf, 0x9c, 0xe4, - 0xb1, 0x78, 0x12, 0x97, 0x51, 0x88, 0xa3, 0xfc, 0xb9, 0x34, 0xca, 0xcf, 0x12, 0x47, 0xd5, 0x54, - 0x47, 0xc5, 0xe7, 0x51, 0x6f, 0xd9, 0xd0, 0xc8, 0x3d, 0x29, 0x75, 0x7f, 0xea, 0x72, 0x66, 0x3c, - 0xb7, 0xb9, 0x51, 0x48, 0x13, 0x5d, 0x61, 0x40, 0x7c, 0x01, 0x65, 0x17, 0xd6, 0xdb, 0x44, 0x4a, - 0xdf, 0x9f, 0xba, 0xdc, 0x3f, 0xde, 0xbf, 0xb9, 0x51, 0xe8, 0x05, 0x59, 0x28, 0x00, 0xc6, 0x0f, - 0xa0, 0x74, 0xb9, 0x24, 0x65, 0x00, 0x39, 0xb6, 0xb9, 0x51, 0x18, 0xea, 0xe8, 0xda, 0xa3, 0x66, - 0x4b, 0x77, 0x48, 0xab, 0xed, 0xac, 0x2b, 0xe9, 0x72, 0x09, 0x5f, 0x42, 0xd9, 0x09, 0x53, 0x23, - 0x52, 0x16, 0x88, 0xf0, 0xe6, 0x46, 0x61, 0xb8, 0x6e, 0x6a, 0x44, 0xa0, 0x02, 0x3c, 0x7e, 0x19, - 0x65, 0x17, 0xf4, 0x16, 0x91, 0x7a, 0xef, 0x4f, 0x5d, 0x1e, 0xb8, 0x7e, 0xee, 0x2a, 0x93, 0xca, - 0x55, 0x57, 0x2a, 0x57, 0x17, 0x5c, 0xb1, 0x8d, 0x8f, 0xbe, 0xb5, 0x51, 0xe8, 0xd9, 0xdc, 0x28, - 0x64, 0xa9, 0x24, 0x3f, 0xfb, 0xb5, 0x42, 0x4a, 0x81, 0x92, 0xf8, 0x05, 0x34, 0x30, 0xd1, 0xec, - 0xd8, 0x0e, 0xb1, 0xe6, 0xd4, 0x16, 0x91, 0x72, 0x50, 0xe1, 0xb9, 0xcd, 0x8d, 0xc2, 0xe9, 0x3a, - 0x03, 0xd7, 0x0c, 0xb5, 0x25, 0x56, 0x2c, 0x92, 0xcb, 0xbf, 0x96, 0x42, 0x23, 0x55, 0x62, 0xdb, - 0xba, 0x69, 0x78, 0xb2, 0x79, 0x18, 0xf5, 0x73, 0x50, 0xb9, 0x04, 0xf2, 0xe9, 0x1f, 0xef, 0xdb, - 0xdc, 0x28, 0x64, 0x6c, 0x5d, 0x53, 0x7c, 0x0c, 0x7e, 0x1c, 0xf5, 0xdd, 0xd1, 0x9d, 0x95, 0xd9, - 0xa9, 0x22, 0x97, 0xd3, 0xe9, 0xcd, 0x8d, 0x02, 0x5e, 0xd3, 0x9d, 0x95, 0x5a, 0x6b, 0x59, 0x15, - 0x2a, 0x74, 0xc9, 0xf0, 0x0c, 0x1a, 0xad, 0x58, 0xfa, 0x5d, 0xd5, 0x21, 0xb7, 0xc8, 0x7a, 0xc5, - 0x6c, 0xea, 0xf5, 0x75, 0x2e, 0xc5, 0xfb, 0x37, 0x37, 0x0a, 0xe7, 0xdb, 0x0c, 0x57, 0x5b, 0x25, - 0xeb, 0xb5, 0x36, 0x60, 0x05, 0x26, 0x91, 0x92, 0xf2, 0xaf, 0xe7, 0xd0, 0xe0, 0xa2, 0x4d, 0x2c, - 0xaf, 0xdd, 0x97, 0x50, 0x96, 0xfe, 0xe6, 0x4d, 0x06, 0x99, 0x77, 0x6c, 0x62, 0x89, 0x32, 0xa7, - 0x78, 0x7c, 0x05, 0xf5, 0xce, 0x98, 0x0d, 0xdd, 0xe0, 0xcd, 0x3e, 0xb1, 0xb9, 0x51, 0x18, 0x69, - 0x52, 0x80, 0x40, 0xc9, 0x28, 0xf0, 0xfb, 0xd1, 0x60, 0xb9, 0x45, 0x75, 0xc8, 0x34, 0x54, 0xc7, - 0xb4, 0x78, 0x6b, 0x41, 0xba, 0xba, 0x00, 0x17, 0x0a, 0x06, 0xe8, 0xf1, 0x73, 0x08, 0x15, 0xef, - 0x54, 0x15, 0xb3, 0x49, 0x8a, 0xca, 0x1c, 0x57, 0x06, 0x28, 0xad, 0xae, 0xd9, 0x35, 0xcb, 0x6c, - 0x92, 0x9a, 0x6a, 0x89, 0xd5, 0x0a, 0xd4, 0x78, 0x12, 0x0d, 0x17, 0xeb, 0x75, 0x62, 0xdb, 0x0a, - 0xf9, 0x58, 0x87, 0xd8, 0x8e, 0x2d, 0xf5, 0xde, 0x9f, 0xb9, 0xdc, 0x3f, 0x7e, 0x61, 0x73, 0xa3, - 0x70, 0x56, 0x05, 0x4c, 0xcd, 0xe2, 0x28, 0x81, 0x45, 0xa8, 0x10, 0x1e, 0x47, 0x43, 0xc5, 0x37, - 0x3a, 0x16, 0x29, 0x6b, 0xc4, 0x70, 0x74, 0x67, 0x9d, 0x6b, 0xc8, 0xf9, 0xcd, 0x8d, 0x82, 0xa4, - 0x52, 0x44, 0x4d, 0xe7, 0x18, 0x81, 0x49, 0xb0, 0x08, 0x9e, 0x47, 0x63, 0x37, 0x27, 0x2a, 0x55, - 0x62, 0xdd, 0xd5, 0xeb, 0xa4, 0x58, 0xaf, 0x9b, 0x1d, 0xc3, 0x91, 0xfa, 0x80, 0xcf, 0x03, 0x9b, - 0x1b, 0x85, 0x0b, 0x8d, 0x7a, 0xbb, 0x66, 0x33, 0x6c, 0x4d, 0x65, 0x68, 0x81, 0x59, 0xb4, 0x2c, - 0xfe, 0x20, 0x1a, 0x5a, 0xb0, 0xa8, 0x16, 0x6a, 0x25, 0x42, 0xe1, 0x52, 0x1e, 0xf4, 0xff, 0xf4, - 0x55, 0x3e, 0x01, 0x31, 0xa8, 0xdb, 0xb3, 0xac, 0xb1, 0x0e, 0x2b, 0x50, 0xd3, 0x00, 0x27, 0x36, - 0x36, 0xc0, 0x0a, 0x13, 0x24, 0xd1, 0x8f, 0xd7, 0x2d, 0xa2, 0x45, 0xb4, 0xad, 0x1f, 0xda, 0x7c, - 0x65, 0x73, 0xa3, 0xf0, 0xb0, 0xc5, 0x69, 0x6a, 0x5d, 0xd5, 0x2e, 0x91, 0x15, 0x9e, 0x44, 0x79, - 0xaa, 0x4d, 0xb7, 0x74, 0x43, 0x93, 0xd0, 0xfd, 0xa9, 0xcb, 0xc3, 0xd7, 0x47, 0xdd, 0xd6, 0xbb, - 0xf0, 0xf1, 0x33, 0x9b, 0x1b, 0x85, 0x13, 0x54, 0x07, 0x6b, 0xab, 0xba, 0x21, 0x4e, 0x11, 0x5e, - 0x51, 0x3a, 0x8a, 0xc6, 0x4d, 0x07, 0x86, 0xee, 0x80, 0x3f, 0x8a, 0x96, 0x4c, 0x27, 0x3c, 0x6c, - 0x5d, 0x32, 0x3c, 0x81, 0x86, 0xc6, 0x4d, 0xa7, 0x6c, 0xd8, 0x8e, 0x6a, 0xd4, 0x49, 0xb9, 0x24, - 0x0d, 0x42, 0x39, 0x50, 0x0b, 0x5a, 0x4e, 0xe7, 0x98, 0x5a, 0x60, 0x52, 0x0a, 0x96, 0x91, 0xff, - 0x3c, 0x8b, 0x86, 0x69, 0x9f, 0x08, 0xc3, 0xa7, 0x48, 0x67, 0x02, 0x0a, 0xa1, 0xb5, 0xd8, 0x6d, - 0xb5, 0x4e, 0xf8, 0x48, 0x82, 0xaf, 0x30, 0x5c, 0xa0, 0xc0, 0x33, 0x4c, 0x8f, 0xaf, 0xa0, 0x3c, - 0x03, 0x95, 0x4b, 0x7c, 0x70, 0x0d, 0x6d, 0x6e, 0x14, 0xfa, 0x6d, 0x80, 0xd5, 0x74, 0x4d, 0xf1, - 0xd0, 0x54, 0xbb, 0xd9, 0xdf, 0xd3, 0xa6, 0xed, 0x50, 0xe6, 0x7c, 0x6c, 0xc1, 0x67, 0xf0, 0x02, - 0x2b, 0x1c, 0x25, 0x6a, 0x77, 0xb0, 0x10, 0x7e, 0x16, 0x21, 0x06, 0x29, 0x6a, 0x9a, 0xc5, 0x07, - 0xd8, 0xd9, 0xcd, 0x8d, 0xc2, 0x29, 0xce, 0x42, 0xd5, 0x34, 0x71, 0x74, 0x0a, 0xc4, 0xb8, 0x85, - 0x06, 0xd9, 0xaf, 0x19, 0x75, 0x89, 0x34, 0xd9, 0xe8, 0x1a, 0xb8, 0x7e, 0xd9, 0xed, 0xc4, 0xa0, - 0x74, 0xae, 0x8a, 0xa4, 0x93, 0x86, 0x63, 0xad, 0x8f, 0x17, 0xf8, 0x84, 0x7c, 0x86, 0x57, 0xd5, - 0x04, 0x9c, 0x38, 0x15, 0x88, 0x65, 0xe8, 0x3c, 0x3d, 0x65, 0x5a, 0x6b, 0xaa, 0xa5, 0x11, 0x6d, - 0x7c, 0x5d, 0x9c, 0xa7, 0x97, 0x5d, 0x70, 0x6d, 0x49, 0x54, 0x3d, 0x91, 0x9c, 0x76, 0x3a, 0xe3, - 0x56, 0xed, 0x2c, 0x81, 0xca, 0xf5, 0x45, 0xa4, 0x65, 0x77, 0x96, 0xc2, 0x6a, 0x16, 0x2c, 0x43, - 0xa7, 0x02, 0x06, 0xb8, 0x4d, 0x2c, 0x3a, 0x89, 0xc3, 0xa8, 0xe3, 0x53, 0x01, 0x67, 0x72, 0x97, - 0x61, 0xa2, 0x3c, 0x78, 0x91, 0x73, 0x2f, 0xa1, 0xb1, 0x88, 0x28, 0xf0, 0x28, 0xca, 0xac, 0x92, - 0x75, 0xa6, 0x2e, 0x0a, 0xfd, 0x13, 0x9f, 0x44, 0xbd, 0x77, 0xd5, 0x66, 0x87, 0x2f, 0xa1, 0x0a, - 0xfb, 0xf1, 0x5c, 0xfa, 0x7d, 0x29, 0xba, 0xe2, 0xe0, 0x09, 0xd3, 0x30, 0x48, 0xdd, 0x11, 0x17, - 0x9d, 0xa7, 0x51, 0xff, 0x8c, 0x59, 0x57, 0x9b, 0xd0, 0x8f, 0x4c, 0xef, 0xa4, 0xcd, 0x8d, 0xc2, - 0x49, 0xda, 0x81, 0x57, 0x9b, 0x14, 0x23, 0xb4, 0xc9, 0x27, 0xa5, 0x0a, 0xa0, 0x90, 0x96, 0xe9, - 0x10, 0x28, 0x98, 0xf6, 0x15, 0x00, 0x0a, 0x5a, 0x80, 0x12, 0x15, 0xc0, 0x27, 0xc6, 0xd7, 0x50, - 0xbe, 0x42, 0xd7, 0xd9, 0xba, 0xd9, 0xe4, 0xca, 0x07, 0x4b, 0x01, 0xac, 0xbd, 0xe2, 0x58, 0x75, - 0x89, 0xe4, 0x69, 0x34, 0x3c, 0xd1, 0xd4, 0x89, 0xe1, 0x88, 0xad, 0xa6, 0x23, 0xb9, 0xd8, 0x20, - 0x86, 0x23, 0xb6, 0x1a, 0xc6, 0xbc, 0x4a, 0xa1, 0x62, 0xab, 0x3d, 0x52, 0xf9, 0x77, 0x33, 0xe8, - 0xec, 0xad, 0xce, 0x12, 0xb1, 0x0c, 0xe2, 0x10, 0x9b, 0x2f, 0xc8, 0x1e, 0xd7, 0x39, 0x34, 0x16, - 0x41, 0x72, 0xee, 0xb0, 0x50, 0xae, 0x7a, 0xc8, 0x1a, 0x5f, 0xe3, 0xc5, 0xd9, 0x36, 0x52, 0x14, - 0x4f, 0xa3, 0x11, 0x1f, 0x48, 0x1b, 0x61, 0x4b, 0x69, 0x58, 0x4a, 0x2e, 0x6e, 0x6e, 0x14, 0xce, - 0x09, 0xdc, 0x68, 0xb3, 0x45, 0x0d, 0x0e, 0x17, 0xc3, 0xb7, 0xd0, 0xa8, 0x0f, 0xba, 0x69, 0x99, - 0x9d, 0xb6, 0x2d, 0x65, 0x80, 0x55, 0x61, 0x73, 0xa3, 0x70, 0x9f, 0xc0, 0xaa, 0x01, 0x48, 0x71, - 0x01, 0x0f, 0x17, 0xc4, 0xdf, 0x9e, 0x12, 0xb9, 0xf1, 0x51, 0x98, 0x85, 0x51, 0xf8, 0x8c, 0x3b, - 0x0a, 0x13, 0x85, 0x74, 0x35, 0x5c, 0x92, 0x0f, 0xca, 0x50, 0x33, 0x22, 0x83, 0x32, 0x52, 0xe3, - 0xb9, 0x09, 0x74, 0x2a, 0x96, 0xd7, 0x8e, 0xb4, 0xfa, 0x4f, 0x33, 0x22, 0x97, 0x8a, 0xa9, 0x79, - 0x9d, 0x39, 0x2f, 0x76, 0x66, 0xc5, 0xd4, 0x60, 0xaa, 0x4f, 0xf9, 0x6b, 0xa7, 0xd0, 0xd8, 0xb6, - 0xa9, 0x85, 0x67, 0xfd, 0x68, 0x59, 0xfc, 0x51, 0x74, 0x3a, 0x02, 0x64, 0xd3, 0x35, 0xd3, 0xfe, - 0x4b, 0x9b, 0x1b, 0x05, 0x39, 0x86, 0x6b, 0x78, 0xf6, 0x4e, 0xe0, 0x82, 0x55, 0x74, 0x46, 0x90, - 0xba, 0x69, 0x38, 0xaa, 0x6e, 0x70, 0xe3, 0x92, 0x8d, 0x92, 0xf7, 0x6c, 0x6e, 0x14, 0x1e, 0x14, - 0x75, 0xd0, 0xa5, 0x09, 0x37, 0x3e, 0x89, 0x0f, 0xd6, 0x90, 0x14, 0x83, 0x2a, 0xb7, 0xd4, 0x86, - 0x6b, 0x31, 0x5f, 0xde, 0xdc, 0x28, 0x3c, 0x14, 0x5b, 0x87, 0x4e, 0xa9, 0xc4, 0x15, 0x3a, 0x89, - 0x13, 0x56, 0x10, 0xf6, 0x71, 0x73, 0xa6, 0x46, 0xe0, 0x1b, 0x7a, 0x81, 0xbf, 0xbc, 0xb9, 0x51, - 0xb8, 0x28, 0xf0, 0x37, 0x4c, 0x8d, 0x84, 0x9b, 0x1f, 0x53, 0x5a, 0xfe, 0xb5, 0x0c, 0xba, 0x58, - 0x2d, 0xce, 0xce, 0x94, 0x35, 0xd7, 0xa4, 0xa9, 0x58, 0xe6, 0x5d, 0x5d, 0x13, 0x46, 0xef, 0x12, - 0x3a, 0x13, 0x42, 0x4d, 0x82, 0x15, 0xe5, 0x19, 0xd3, 0xf0, 0x6d, 0xae, 0xb9, 0xd4, 0xe6, 0x34, - 0x35, 0x66, 0x6a, 0x05, 0x17, 0xed, 0x24, 0x46, 0xb4, 0x8f, 0x42, 0xa8, 0xea, 0x8a, 0x69, 0x39, - 0xf5, 0x8e, 0xc3, 0x95, 0x00, 0xfa, 0x28, 0x52, 0x87, 0xcd, 0x89, 0xba, 0x54, 0xe1, 0xf2, 0xc1, - 0x9f, 0x4a, 0xa1, 0xd1, 0xa2, 0xe3, 0x58, 0xfa, 0x52, 0xc7, 0x21, 0xb3, 0x6a, 0xbb, 0xad, 0x1b, - 0x0d, 0x18, 0xeb, 0x03, 0xd7, 0x5f, 0xf0, 0xd6, 0xc8, 0xae, 0x92, 0xb8, 0x1a, 0x2e, 0x2e, 0x0c, - 0x51, 0xd5, 0x45, 0xd5, 0x5a, 0x0c, 0x27, 0x0e, 0xd1, 0x70, 0x39, 0x3a, 0x44, 0x63, 0x79, 0xed, - 0x68, 0x88, 0x7e, 0x2e, 0x83, 0xce, 0xcf, 0xaf, 0x3a, 0xaa, 0x42, 0x6c, 0xb3, 0x63, 0xd5, 0x89, - 0xbd, 0xd8, 0xd6, 0x54, 0x87, 0xf8, 0x23, 0xb5, 0x80, 0x7a, 0x8b, 0x9a, 0x46, 0x34, 0x60, 0xd7, - 0xcb, 0xb6, 0x7d, 0x2a, 0x05, 0x28, 0x0c, 0x8e, 0x1f, 0x46, 0x7d, 0xbc, 0x0c, 0x70, 0xef, 0x1d, - 0x1f, 0xd8, 0xdc, 0x28, 0xf4, 0x75, 0x18, 0x48, 0x71, 0x71, 0x94, 0xac, 0x44, 0x9a, 0x84, 0x92, - 0x65, 0x7c, 0x32, 0x8d, 0x81, 0x14, 0x17, 0x87, 0x5f, 0x45, 0xc3, 0xc0, 0xd6, 0x6b, 0x0f, 0x9f, - 0xfb, 0x4e, 0xba, 0xd2, 0x15, 0x1b, 0xcb, 0x96, 0x26, 0x68, 0x4d, 0xcd, 0x72, 0x0b, 0x28, 0x21, - 0x06, 0xf8, 0x0e, 0x1a, 0xe5, 0x8d, 0xf0, 0x99, 0xf6, 0x76, 0x61, 0x7a, 0x6a, 0x73, 0xa3, 0x30, - 0xc6, 0xdb, 0x2f, 0xb0, 0x8d, 0x30, 0xa1, 0x8c, 0x79, 0xb3, 0x7d, 0xc6, 0xb9, 0xad, 0x18, 0xf3, - 0x2f, 0x16, 0x19, 0x87, 0x99, 0xc8, 0xaf, 0xa1, 0x41, 0xb1, 0x20, 0x3e, 0x0d, 0x5b, 0x6b, 0x36, - 0x4e, 0x60, 0x53, 0xae, 0x6b, 0xb0, 0x9f, 0x7e, 0x02, 0x0d, 0x94, 0x88, 0x5d, 0xb7, 0xf4, 0x36, - 0xb5, 0x1a, 0xb8, 0x92, 0x8f, 0x6c, 0x6e, 0x14, 0x06, 0x34, 0x1f, 0xac, 0x88, 0x34, 0xf2, 0xff, - 0x48, 0xa1, 0xd3, 0x94, 0x77, 0xd1, 0xb6, 0xf5, 0x86, 0xd1, 0x12, 0x97, 0xed, 0x47, 0x51, 0xae, - 0x0a, 0xf5, 0xf1, 0x9a, 0x4e, 0x6e, 0x6e, 0x14, 0x46, 0x59, 0x0b, 0x04, 0x3d, 0xe4, 0x34, 0xde, - 0xbe, 0x32, 0xbd, 0xc5, 0xbe, 0x92, 0x9a, 0xb4, 0x8e, 0x6a, 0x39, 0xba, 0xd1, 0xa8, 0x3a, 0xaa, - 0xd3, 0xb1, 0x03, 0x26, 0x2d, 0xc7, 0xd4, 0x6c, 0x40, 0x05, 0x4c, 0xda, 0x40, 0x21, 0xfc, 0x12, - 0x1a, 0x9c, 0x34, 0x34, 0x9f, 0x09, 0x9b, 0x10, 0xef, 0xa3, 0x96, 0x26, 0x01, 0x78, 0x94, 0x45, - 0xa0, 0x80, 0xfc, 0xb3, 0x29, 0x24, 0xb1, 0x4d, 0xe0, 0x8c, 0x6e, 0x3b, 0xb3, 0xa4, 0xb5, 0x24, - 0xcc, 0x4e, 0x53, 0xee, 0xae, 0x92, 0xe2, 0x84, 0xb5, 0x08, 0x4c, 0x01, 0xbe, 0xab, 0x6c, 0xea, - 0x76, 0x64, 0xfb, 0x11, 0x2a, 0x85, 0xcb, 0xa8, 0x8f, 0x71, 0x66, 0xb6, 0xc4, 0xc0, 0x75, 0xc9, - 0x55, 0x84, 0x70, 0xd5, 0x4c, 0x19, 0x5a, 0x8c, 0x58, 0xdc, 0xd0, 0xf0, 0xf2, 0xf2, 0xcf, 0xa7, - 0xd1, 0x68, 0xb8, 0x10, 0xbe, 0x83, 0xf2, 0xaf, 0x98, 0xba, 0x41, 0xb4, 0x79, 0x03, 0x5a, 0xd8, - 0xfd, 0x70, 0xc4, 0xb5, 0xc5, 0x4f, 0xbc, 0x0e, 0x65, 0x6a, 0xa2, 0x05, 0x0b, 0x67, 0x25, 0x1e, - 0x33, 0xfc, 0x41, 0xd4, 0x4f, 0x6d, 0xc0, 0xbb, 0xc0, 0x39, 0xbd, 0x25, 0xe7, 0xfb, 0x39, 0xe7, - 0x93, 0x16, 0x2b, 0x14, 0x65, 0xed, 0xb3, 0xa3, 0x7a, 0xa5, 0x10, 0xd5, 0x36, 0x0d, 0xde, 0xf3, - 0xa0, 0x57, 0x16, 0x40, 0x44, 0xbd, 0x62, 0x34, 0xd4, 0x74, 0x65, 0x1f, 0x0b, 0xdd, 0x20, 0xec, - 0x5d, 0x98, 0xac, 0xc2, 0x3d, 0x20, 0x10, 0xcb, 0x9f, 0x48, 0xa3, 0xc7, 0x7c, 0x91, 0x29, 0xe4, - 0xae, 0x4e, 0xd6, 0xb8, 0x38, 0x57, 0xf4, 0x36, 0xdf, 0xb3, 0x52, 0x95, 0xb7, 0x27, 0x56, 0x54, - 0xa3, 0x41, 0x34, 0x7c, 0x05, 0xf5, 0x2a, 0x66, 0x93, 0xd8, 0x52, 0x0a, 0xcc, 0x35, 0x98, 0x4e, - 0x2c, 0x0a, 0x10, 0x0f, 0x3d, 0x80, 0x02, 0x9b, 0x28, 0xb7, 0x60, 0xa9, 0xba, 0xe3, 0xf6, 0x6c, - 0x31, 0xda, 0xb3, 0xdb, 0xa8, 0xf1, 0x2a, 0xe3, 0xc1, 0xe6, 0x7c, 0x10, 0x84, 0x03, 0x00, 0x51, - 0x10, 0x8c, 0xe4, 0xdc, 0xb3, 0x68, 0x40, 0x20, 0xde, 0xd1, 0xa4, 0xfe, 0xa5, 0xac, 0xa8, 0xeb, - 0x6e, 0xb3, 0xb8, 0xae, 0x5f, 0xa3, 0x3a, 0x6a, 0xdb, 0xd4, 0xaa, 0x60, 0x4a, 0xce, 0x35, 0x11, - 0x40, 0x41, 0x4d, 0x04, 0x10, 0x7e, 0x12, 0xe5, 0x19, 0x0b, 0x6f, 0xff, 0x0a, 0x7b, 0x5f, 0x0b, - 0x60, 0xc1, 0xa5, 0xd9, 0x23, 0xc4, 0x3f, 0x9d, 0x42, 0x17, 0xba, 0x4a, 0x02, 0x94, 0x61, 0xe0, - 0xfa, 0x53, 0xbb, 0x12, 0xe3, 0xf8, 0x63, 0x9b, 0x1b, 0x85, 0x2b, 0x2d, 0x8f, 0xa4, 0x66, 0x09, - 0x34, 0xb5, 0x3a, 0x23, 0x12, 0xda, 0xd5, 0xbd, 0x29, 0xd4, 0x78, 0x64, 0x95, 0x4e, 0xc1, 0xd1, - 0x91, 0x51, 0x5f, 0x77, 0x1b, 0x99, 0xf5, 0x8d, 0x47, 0xfe, 0xbd, 0xcb, 0x2e, 0x49, 0x4c, 0x35, - 0x09, 0x5c, 0x70, 0x1d, 0x9d, 0x61, 0x98, 0x92, 0xba, 0x3e, 0xbf, 0x3c, 0x6b, 0x1a, 0xce, 0x8a, - 0x5b, 0x41, 0xaf, 0x78, 0xf6, 0x02, 0x15, 0x68, 0xea, 0x7a, 0xcd, 0x5c, 0xae, 0xb5, 0x28, 0x55, - 0x4c, 0x1d, 0x49, 0x9c, 0xe8, 0x44, 0xcb, 0xc7, 0x9c, 0x3b, 0x05, 0xe5, 0xfc, 0x93, 0x31, 0x77, - 0x9c, 0x46, 0x27, 0x9c, 0x50, 0x21, 0xb9, 0x8c, 0x06, 0x67, 0xcc, 0xfa, 0xaa, 0xa7, 0x2e, 0xcf, - 0xa2, 0xdc, 0x82, 0x6a, 0x35, 0x88, 0x03, 0xb2, 0x18, 0xb8, 0x3e, 0x76, 0x95, 0x9d, 0x36, 0x53, - 0x22, 0x86, 0x18, 0x1f, 0xe6, 0xb3, 0x41, 0xce, 0x81, 0xdf, 0x0a, 0x2f, 0x20, 0x7f, 0xad, 0x17, - 0x0d, 0xf2, 0x93, 0x51, 0x98, 0xcd, 0xf1, 0x73, 0xfe, 0x59, 0x33, 0x9f, 0xbe, 0xbc, 0xd3, 0x21, - 0xef, 0x54, 0x6b, 0x90, 0x32, 0xfb, 0xbd, 0x8d, 0x42, 0x6a, 0x73, 0xa3, 0xd0, 0xa3, 0xe4, 0x85, - 0x4d, 0xa5, 0xbf, 0xde, 0x08, 0x0b, 0xac, 0x78, 0xd6, 0x19, 0x2a, 0xcb, 0xd6, 0x9f, 0x97, 0x50, - 0x1f, 0x6f, 0x03, 0xd7, 0xb8, 0x33, 0xfe, 0x59, 0x46, 0xe0, 0x84, 0x37, 0x54, 0xda, 0x2d, 0x85, - 0x5f, 0x40, 0x39, 0xb6, 0xb7, 0xe7, 0x02, 0x38, 0x1d, 0x7f, 0x16, 0x12, 0x2a, 0xce, 0xcb, 0xe0, - 0x69, 0x84, 0xfc, 0x7d, 0xbd, 0x77, 0xa0, 0xcd, 0x39, 0x44, 0x77, 0xfc, 0x21, 0x2e, 0x42, 0x59, - 0xfc, 0x34, 0x1a, 0x5c, 0x20, 0x56, 0x4b, 0x37, 0xd4, 0x66, 0x55, 0x7f, 0xc3, 0x3d, 0xd3, 0x86, - 0x85, 0xd7, 0xd6, 0xdf, 0x10, 0x47, 0x6e, 0x80, 0x0e, 0x7f, 0x24, 0x6e, 0xdf, 0xdc, 0x07, 0x0d, - 0x79, 0x60, 0xcb, 0x0d, 0x65, 0xa8, 0x3d, 0x31, 0xdb, 0xe8, 0x57, 0xd1, 0x50, 0x60, 0xcb, 0xc4, - 0x0f, 0x2d, 0x2f, 0x44, 0x59, 0x0b, 0xfb, 0xbf, 0x10, 0xdb, 0x20, 0x07, 0xaa, 0xc9, 0x65, 0x43, - 0x77, 0x74, 0xb5, 0x39, 0x61, 0xb6, 0x5a, 0xaa, 0xa1, 0x49, 0xfd, 0xbe, 0x26, 0xeb, 0x0c, 0x53, - 0xab, 0x33, 0x94, 0xa8, 0xc9, 0xc1, 0x42, 0x74, 0x5b, 0xce, 0xfb, 0x50, 0x21, 0x75, 0xd3, 0xa2, - 0xb6, 0x00, 0x9c, 0x49, 0xf2, 0x6d, 0xb9, 0xcd, 0x70, 0x35, 0xcb, 0x45, 0x8a, 0xc6, 0x76, 0xb8, - 0xe0, 0x2b, 0xd9, 0xfc, 0xc0, 0xe8, 0x60, 0xf8, 0x18, 0x59, 0xfe, 0xa9, 0x0c, 0x1a, 0xe0, 0xa4, - 0x74, 0x29, 0x3d, 0x56, 0xf0, 0xbd, 0x28, 0x78, 0xac, 0xa2, 0xe6, 0xf6, 0x4b, 0x51, 0xe5, 0x37, - 0xd3, 0xde, 0x6c, 0x54, 0xb1, 0x74, 0x63, 0x6f, 0xb3, 0xd1, 0x25, 0x84, 0x26, 0x56, 0x3a, 0xc6, - 0x2a, 0xbb, 0x2e, 0x4b, 0xfb, 0xd7, 0x65, 0x75, 0x5d, 0x11, 0x30, 0xf8, 0x02, 0xca, 0x96, 0x28, - 0x7f, 0xda, 0x33, 0x83, 0xe3, 0xfd, 0x6f, 0x31, 0x4e, 0xa9, 0xc7, 0x14, 0x00, 0xd3, 0xcd, 0xd5, - 0xf8, 0xba, 0x43, 0x98, 0x39, 0x9b, 0x61, 0x9b, 0xab, 0x25, 0x0a, 0x50, 0x18, 0x1c, 0xdf, 0x40, - 0x63, 0x25, 0xd2, 0x54, 0xd7, 0x67, 0xf5, 0x66, 0x53, 0xb7, 0x49, 0xdd, 0x34, 0x34, 0x1b, 0x84, - 0xcc, 0xab, 0x6b, 0xd9, 0x4a, 0x94, 0x00, 0xcb, 0x28, 0x37, 0xbf, 0xbc, 0x6c, 0x13, 0x07, 0xc4, - 0x97, 0x19, 0x47, 0x74, 0x72, 0x36, 0x01, 0xa2, 0x70, 0x8c, 0xfc, 0xc5, 0x14, 0xdd, 0xbd, 0xd8, - 0xab, 0x8e, 0xd9, 0xf6, 0xb4, 0x7c, 0x4f, 0x22, 0xb9, 0xe2, 0xdb, 0x15, 0x69, 0xf8, 0xda, 0x11, - 0xfe, 0xb5, 0x7d, 0xdc, 0xb6, 0xf0, 0x2d, 0x8a, 0xd8, 0xaf, 0xca, 0x6c, 0xf1, 0x55, 0xf2, 0x9f, - 0xa5, 0xd1, 0x19, 0xde, 0xe2, 0x89, 0xa6, 0xde, 0x5e, 0x32, 0x55, 0x4b, 0x53, 0x48, 0x9d, 0xe8, - 0x77, 0xc9, 0xe1, 0x1c, 0x78, 0xc1, 0xa1, 0x93, 0xdd, 0xc3, 0xd0, 0xb9, 0x0e, 0x1b, 0x41, 0x2a, - 0x19, 0x38, 0xf0, 0x65, 0x46, 0xc5, 0xe8, 0xe6, 0x46, 0x61, 0x50, 0x63, 0x60, 0x38, 0xf2, 0x57, - 0x44, 0x22, 0xaa, 0x24, 0x33, 0xc4, 0x68, 0x38, 0x2b, 0xa0, 0x24, 0xbd, 0x4c, 0x49, 0x9a, 0x00, - 0x51, 0x38, 0x46, 0xfe, 0x2f, 0x69, 0x74, 0x32, 0x2c, 0xf2, 0x2a, 0x31, 0xb4, 0x63, 0x79, 0xbf, - 0x3d, 0xf2, 0xfe, 0x46, 0x06, 0xdd, 0xc7, 0xcb, 0x54, 0x57, 0x54, 0x8b, 0x68, 0x25, 0xdd, 0x22, - 0x75, 0xc7, 0xb4, 0xd6, 0x0f, 0xb1, 0x01, 0xb5, 0x7f, 0x62, 0xbf, 0x81, 0x72, 0x7c, 0xfb, 0xcf, - 0xd6, 0x99, 0x61, 0xaf, 0x25, 0x00, 0x8d, 0xac, 0x50, 0xec, 0xe8, 0x20, 0xd4, 0x59, 0xb9, 0xed, - 0x74, 0xd6, 0xfb, 0xd0, 0x90, 0x27, 0x7a, 0xd8, 0x88, 0xf6, 0xf9, 0xd6, 0x96, 0xe6, 0x22, 0x60, - 0x2f, 0xaa, 0x04, 0x09, 0xa1, 0x36, 0x17, 0x50, 0x2e, 0x81, 0x35, 0x34, 0xc4, 0x6b, 0xf3, 0xca, - 0xe9, 0x9a, 0x22, 0x12, 0xc9, 0x1b, 0x59, 0x74, 0x2e, 0xbe, 0xdb, 0x15, 0xa2, 0x6a, 0xc7, 0xbd, - 0xfe, 0xae, 0xec, 0x75, 0xfc, 0x00, 0xca, 0x56, 0x54, 0x67, 0x85, 0x5f, 0xbf, 0xc3, 0x9d, 0xf0, - 0xb2, 0xde, 0x24, 0xb5, 0xb6, 0xea, 0xac, 0x28, 0x80, 0x12, 0xe6, 0x0c, 0x04, 0x1c, 0x63, 0xe6, - 0x0c, 0x61, 0xb1, 0x1f, 0xb8, 0x3f, 0x75, 0x39, 0x1b, 0xbb, 0xd8, 0x7f, 0x2d, 0x9b, 0x34, 0xaf, - 0xdc, 0xb1, 0x74, 0x87, 0x1c, 0x6b, 0xd8, 0xb1, 0x86, 0xed, 0x51, 0xc3, 0xfe, 0x20, 0x8d, 0x86, - 0xbc, 0x4d, 0xd3, 0xeb, 0xa4, 0x7e, 0x30, 0x6b, 0x95, 0xbf, 0x95, 0xc9, 0xec, 0x79, 0x2b, 0xb3, - 0x17, 0x85, 0x92, 0xbd, 0x23, 0x4f, 0x66, 0x1a, 0x80, 0xc4, 0xd8, 0x91, 0xa7, 0x77, 0xd0, 0xf9, - 0x00, 0xea, 0x9b, 0x55, 0xef, 0xe9, 0xad, 0x4e, 0x8b, 0x5b, 0xe9, 0xe0, 0x4e, 0xd6, 0x52, 0xef, - 0x29, 0x2e, 0x5c, 0xfe, 0xd7, 0x29, 0x34, 0xcc, 0x85, 0xca, 0x99, 0xef, 0x49, 0xaa, 0xbe, 0x74, - 0xd2, 0x7b, 0x96, 0x4e, 0x66, 0xf7, 0xd2, 0x91, 0x7f, 0x38, 0x83, 0xa4, 0x29, 0xbd, 0x49, 0x16, - 0x2c, 0xd5, 0xb0, 0x97, 0x89, 0xc5, 0xb7, 0xd3, 0x93, 0x94, 0xd5, 0x9e, 0x3e, 0x50, 0x98, 0x52, - 0xd2, 0xbb, 0x9a, 0x52, 0xde, 0x8b, 0xfa, 0x79, 0x63, 0x3c, 0x57, 0x46, 0x18, 0x35, 0x96, 0x0b, - 0x54, 0x7c, 0x3c, 0x25, 0x2e, 0xb6, 0xdb, 0x96, 0x79, 0x97, 0x58, 0xec, 0x96, 0x8a, 0x13, 0xab, - 0x2e, 0x50, 0xf1, 0xf1, 0x02, 0x67, 0xe2, 0xda, 0x8b, 0x22, 0x67, 0x62, 0x29, 0x3e, 0x1e, 0x5f, - 0x46, 0xf9, 0x19, 0xb3, 0xae, 0x82, 0xa0, 0xd9, 0xb4, 0x32, 0xb8, 0xb9, 0x51, 0xc8, 0x37, 0x39, - 0x4c, 0xf1, 0xb0, 0x94, 0xb2, 0x64, 0xae, 0x19, 0x4d, 0x53, 0x65, 0xce, 0x2f, 0x79, 0x46, 0xa9, - 0x71, 0x98, 0xe2, 0x61, 0x29, 0x25, 0x95, 0x39, 0x38, 0x15, 0xe5, 0x7d, 0x9e, 0xcb, 0x1c, 0xa6, - 0x78, 0x58, 0xf9, 0x8b, 0x59, 0xaa, 0xbd, 0xb6, 0xfe, 0xc6, 0x91, 0x5f, 0x17, 0xfc, 0x01, 0xd3, - 0xbb, 0x8b, 0x01, 0x73, 0x64, 0x0e, 0xec, 0xe4, 0x3f, 0xef, 0x43, 0x88, 0x4b, 0x7f, 0xf2, 0x78, - 0x73, 0xb8, 0x37, 0xad, 0x29, 0xa1, 0xb1, 0x49, 0x63, 0x45, 0x35, 0xea, 0x44, 0xf3, 0x8f, 0x2d, - 0x73, 0x30, 0xb4, 0xc1, 0x09, 0x92, 0x70, 0xa4, 0x7f, 0x6e, 0xa9, 0x44, 0x0b, 0xe0, 0x27, 0xd0, - 0x40, 0xd9, 0x70, 0x88, 0xa5, 0xd6, 0x1d, 0xfd, 0x2e, 0xe1, 0x53, 0x03, 0xdc, 0x0c, 0xeb, 0x3e, - 0x58, 0x11, 0x69, 0xf0, 0x0d, 0x34, 0x58, 0x51, 0x2d, 0x47, 0xaf, 0xeb, 0x6d, 0xd5, 0x70, 0x6c, - 0x29, 0x0f, 0x33, 0x1a, 0x58, 0x18, 0x6d, 0x01, 0xae, 0x04, 0xa8, 0xf0, 0x47, 0x50, 0x3f, 0x6c, - 0x4d, 0xc1, 0x5f, 0xbb, 0x7f, 0xcb, 0x8b, 0xc3, 0x07, 0x7d, 0xf7, 0x40, 0x76, 0xfa, 0x0a, 0x37, - 0xc0, 0xe1, 0xbb, 0x43, 0x8f, 0x23, 0xfe, 0x00, 0xea, 0x9b, 0x34, 0x34, 0x60, 0x8e, 0xb6, 0x64, - 0x2e, 0x73, 0xe6, 0xa7, 0x7d, 0xe6, 0x66, 0x3b, 0xc4, 0xdb, 0x65, 0x17, 0x3f, 0xca, 0x06, 0xde, - 0xbe, 0x51, 0x36, 0xf8, 0x36, 0x1c, 0x8b, 0x0f, 0xed, 0xd7, 0xb1, 0xf8, 0xf0, 0x2e, 0x8f, 0xc5, - 0xe5, 0x37, 0xd0, 0xc0, 0x78, 0x65, 0xca, 0x1b, 0xbd, 0x67, 0x51, 0xa6, 0xc2, 0x3d, 0x15, 0xb2, - 0xcc, 0x9e, 0x69, 0xeb, 0x9a, 0x42, 0x61, 0xf8, 0x0a, 0xca, 0x4f, 0x80, 0xfb, 0x1b, 0xbf, 0x45, - 0xcc, 0xb2, 0xf5, 0xaf, 0x0e, 0x30, 0xf0, 0x82, 0x75, 0xd1, 0xf8, 0x61, 0xd4, 0x57, 0xb1, 0xcc, - 0x86, 0xa5, 0xb6, 0xf8, 0x1a, 0x0c, 0xae, 0x22, 0x6d, 0x06, 0x52, 0x5c, 0x9c, 0xfc, 0x3d, 0x29, - 0xd7, 0x6c, 0xa7, 0x25, 0xaa, 0x1d, 0x38, 0x9a, 0x87, 0xba, 0xf3, 0xac, 0x84, 0xcd, 0x40, 0x8a, - 0x8b, 0xc3, 0x57, 0x50, 0xef, 0xa4, 0x65, 0x99, 0x96, 0xe8, 0xe3, 0x4e, 0x28, 0x40, 0xbc, 0xee, - 0x05, 0x0a, 0xfc, 0x0c, 0x1a, 0x60, 0x73, 0x0e, 0x3b, 0xd1, 0xcc, 0x74, 0xbb, 0x29, 0x15, 0x29, - 0xe5, 0xaf, 0x64, 0x04, 0x9b, 0x8d, 0x49, 0xfc, 0x08, 0xde, 0x0a, 0x3c, 0x89, 0x32, 0xe3, 0x95, - 0x29, 0x3e, 0x01, 0x9e, 0x70, 0x8b, 0x0a, 0xaa, 0x12, 0x2a, 0x47, 0xa9, 0xf1, 0x79, 0x94, 0xad, - 0x50, 0xf5, 0xc9, 0x81, 0x7a, 0xe4, 0x37, 0x37, 0x0a, 0xd9, 0x36, 0xd5, 0x1f, 0x80, 0x02, 0x96, - 0x6e, 0x66, 0xd8, 0x8e, 0x89, 0x61, 0xfd, 0x7d, 0xcc, 0x79, 0x94, 0x2d, 0x5a, 0x8d, 0xbb, 0x7c, - 0xd6, 0x02, 0xac, 0x6a, 0x35, 0xee, 0x2a, 0x00, 0xc5, 0xd7, 0x10, 0x52, 0x88, 0xd3, 0xb1, 0x0c, - 0x78, 0x7e, 0xd2, 0x0f, 0xe7, 0x6f, 0x30, 0x1b, 0x5a, 0x00, 0xad, 0xd5, 0x4d, 0x8d, 0x28, 0x02, - 0x89, 0xfc, 0x13, 0xfe, 0xc5, 0x4e, 0x49, 0xb7, 0x57, 0x8f, 0xbb, 0x70, 0x07, 0x5d, 0xa8, 0xf2, - 0x23, 0xce, 0x68, 0x27, 0x15, 0x50, 0xef, 0x54, 0x53, 0x6d, 0xd8, 0xd0, 0x87, 0xdc, 0x97, 0x6c, - 0x99, 0x02, 0x14, 0x06, 0x0f, 0xf5, 0x53, 0x7e, 0xeb, 0x7e, 0xfa, 0x7c, 0xaf, 0x37, 0xda, 0xe6, - 0x88, 0xb3, 0x66, 0x5a, 0xc7, 0x5d, 0xb5, 0xdd, 0xae, 0xba, 0x84, 0xfa, 0xaa, 0x56, 0x5d, 0x38, - 0xba, 0x80, 0xfd, 0x80, 0x6d, 0xd5, 0xd9, 0xb1, 0x85, 0x8b, 0xa4, 0x74, 0x25, 0xdb, 0x01, 0xba, - 0x3e, 0x9f, 0x4e, 0xb3, 0x1d, 0x4e, 0xc7, 0x91, 0x9c, 0xae, 0x62, 0x5a, 0x0e, 0xef, 0x38, 0x8f, - 0xae, 0x6d, 0x5a, 0x8e, 0xe2, 0x22, 0xf1, 0x7b, 0x11, 0x5a, 0x98, 0xa8, 0xb8, 0xce, 0xf6, 0xfd, - 0xbe, 0x2f, 0x20, 0xf7, 0xb2, 0x57, 0x04, 0x34, 0x5e, 0x40, 0xfd, 0xf3, 0x6d, 0x62, 0xb1, 0xad, - 0x10, 0x7b, 0x50, 0xf2, 0x9e, 0x90, 0x68, 0x79, 0xbf, 0x5f, 0xe5, 0xff, 0x7b, 0xe4, 0x6c, 0x7d, - 0x31, 0xdd, 0x9f, 0x8a, 0xcf, 0x08, 0x3f, 0x83, 0x72, 0x45, 0x66, 0xe7, 0x0d, 0x00, 0x4b, 0x4f, - 0x64, 0xb0, 0x05, 0x65, 0x28, 0xb6, 0x67, 0x57, 0xe1, 0x6f, 0x85, 0x93, 0xcb, 0x57, 0xd0, 0x68, - 0xb8, 0x1a, 0x3c, 0x80, 0xfa, 0x26, 0xe6, 0xe7, 0xe6, 0x26, 0x27, 0x16, 0x46, 0x7b, 0x70, 0x1e, - 0x65, 0xab, 0x93, 0x73, 0xa5, 0xd1, 0x94, 0xfc, 0x33, 0xc2, 0x0c, 0x42, 0x55, 0xeb, 0xf8, 0x6a, - 0x78, 0x4f, 0xf7, 0x2d, 0xa3, 0x70, 0x1f, 0x0a, 0x27, 0x06, 0x2d, 0xdd, 0x71, 0x88, 0xc6, 0x57, - 0x09, 0xb8, 0x2f, 0x74, 0xee, 0x29, 0x11, 0x3c, 0x7e, 0x14, 0x0d, 0x01, 0x8c, 0x5f, 0x11, 0xb2, - 0xfd, 0x31, 0x2f, 0x60, 0xdd, 0x53, 0x82, 0x48, 0xf9, 0xab, 0xfe, 0xed, 0xf0, 0x0c, 0x51, 0x0f, - 0xeb, 0x8d, 0xe2, 0x3b, 0xa4, 0xbf, 0xe4, 0xbf, 0xcc, 0xb2, 0x27, 0x20, 0xec, 0xbd, 0xe0, 0x41, - 0x88, 0xd2, 0x3f, 0xd2, 0xcd, 0xec, 0xe0, 0x48, 0xf7, 0x51, 0x94, 0x9b, 0x25, 0xce, 0x8a, 0xe9, - 0x3a, 0x7e, 0x81, 0x87, 0x5e, 0x0b, 0x20, 0xa2, 0x87, 0x1e, 0xa3, 0xc1, 0xab, 0x08, 0xbb, 0x8f, - 0x01, 0x3d, 0x47, 0x6c, 0xf7, 0x08, 0xf9, 0x4c, 0x64, 0x9f, 0x52, 0x85, 0x97, 0xc0, 0xe0, 0x63, - 0x7f, 0xd2, 0x73, 0xf4, 0x16, 0x3c, 0xb1, 0xfe, 0x62, 0xa3, 0x90, 0x63, 0x34, 0x4a, 0x0c, 0x5b, - 0xfc, 0x2a, 0xea, 0x9f, 0x9d, 0x2a, 0xf2, 0x87, 0x81, 0xcc, 0x2b, 0xe2, 0xac, 0x27, 0x45, 0x17, - 0xe1, 0x89, 0x04, 0xde, 0xdb, 0xb4, 0x96, 0xd5, 0xe8, 0xbb, 0x40, 0x9f, 0x0b, 0xd5, 0x16, 0xf6, - 0x72, 0x87, 0x9f, 0x2e, 0x78, 0xda, 0x12, 0x7c, 0xcf, 0x13, 0x96, 0x15, 0xc3, 0x86, 0xb4, 0x25, - 0xbf, 0x87, 0xd1, 0x3d, 0x8f, 0xc6, 0x8a, 0xed, 0x76, 0x53, 0x27, 0x1a, 0xe8, 0x8b, 0xd2, 0x69, - 0x12, 0x9b, 0xbb, 0xfc, 0xc0, 0x63, 0x10, 0x95, 0x21, 0x6b, 0xf0, 0x1c, 0xb5, 0x66, 0x75, 0x82, - 0xfe, 0x99, 0xd1, 0xb2, 0xf2, 0xf7, 0xa5, 0xd1, 0xe9, 0x09, 0x8b, 0xa8, 0x0e, 0x99, 0x9d, 0x2a, - 0x16, 0x3b, 0xe0, 0x23, 0xd7, 0x6c, 0x12, 0xa3, 0x71, 0x30, 0xc3, 0xfa, 0x79, 0x34, 0xec, 0x35, - 0xa0, 0x5a, 0x37, 0xdb, 0x44, 0x7c, 0x58, 0x55, 0x77, 0x31, 0x35, 0x9b, 0xa2, 0x94, 0x10, 0x29, - 0xbe, 0x85, 0x4e, 0x78, 0x90, 0x62, 0xb3, 0x69, 0xae, 0x29, 0xa4, 0x63, 0x33, 0xc7, 0xd8, 0x3c, - 0x73, 0x8c, 0xf5, 0x39, 0xa8, 0x14, 0x5f, 0xb3, 0x28, 0x81, 0x12, 0x57, 0x4a, 0xfe, 0x42, 0x06, - 0x9d, 0xb9, 0xad, 0x36, 0x75, 0xcd, 0x17, 0x8d, 0x42, 0xec, 0xb6, 0x69, 0xd8, 0xe4, 0x10, 0x8d, - 0xd2, 0xc0, 0x50, 0xc8, 0xee, 0xcb, 0x50, 0x88, 0x76, 0x51, 0xef, 0x9e, 0xbb, 0x28, 0xb7, 0xab, - 0x2e, 0xfa, 0xcf, 0x29, 0x34, 0xea, 0x3a, 0xfe, 0x8b, 0x8f, 0xb8, 0x05, 0xaf, 0x74, 0x38, 0x42, - 0x0c, 0xf9, 0x41, 0x03, 0x1e, 0x57, 0x51, 0xdf, 0xe4, 0xbd, 0xb6, 0x6e, 0x11, 0x7b, 0x1b, 0x4e, - 0xdc, 0x17, 0xf8, 0x71, 0xc9, 0x18, 0x61, 0x45, 0x22, 0x27, 0x25, 0x0c, 0x0c, 0xcf, 0xf9, 0xd8, - 0xd3, 0x87, 0x71, 0xf7, 0x65, 0x3a, 0x7b, 0xce, 0xc7, 0x9f, 0x48, 0x04, 0xde, 0x67, 0xfa, 0xa4, - 0xf8, 0x41, 0x94, 0x59, 0x58, 0x98, 0xe1, 0x33, 0x29, 0x44, 0x04, 0x70, 0x1c, 0xf1, 0xbd, 0x22, - 0xc5, 0xca, 0x7f, 0x9c, 0x46, 0x88, 0xaa, 0x02, 0x1b, 0xae, 0x07, 0xa2, 0x84, 0xe3, 0x28, 0xef, - 0x0a, 0x9c, 0xab, 0xa1, 0xe7, 0xb5, 0x1f, 0xee, 0x88, 0x70, 0xdd, 0xde, 0x0b, 0x8d, 0x82, 0xeb, - 0x48, 0xce, 0xee, 0x01, 0x60, 0x67, 0x03, 0x8e, 0xe4, 0xae, 0xfb, 0xf8, 0x7b, 0x51, 0x3f, 0x9f, - 0xf1, 0xcc, 0xc0, 0xf9, 0x7f, 0xdd, 0x05, 0x2a, 0x3e, 0x3e, 0x34, 0xb5, 0xe6, 0xf6, 0xb0, 0x10, - 0xbb, 0xe2, 0x65, 0xbd, 0x72, 0x2c, 0xde, 0x7d, 0x16, 0xef, 0x67, 0xb8, 0x78, 0xd9, 0x0b, 0x9e, - 0x43, 0x2b, 0xde, 0x7d, 0x3b, 0xfb, 0x96, 0xff, 0x20, 0x85, 0x30, 0x6d, 0x56, 0x45, 0xb5, 0xed, - 0x35, 0xd3, 0xd2, 0x98, 0x73, 0xfa, 0x81, 0x08, 0x66, 0xff, 0xee, 0x2b, 0xbf, 0x92, 0x47, 0x27, - 0x02, 0x8e, 0xbf, 0x87, 0x7c, 0xb2, 0xba, 0x12, 0x1c, 0x4d, 0xdd, 0x5e, 0xbd, 0x3c, 0x24, 0x5e, - 0x88, 0xf6, 0x06, 0x1e, 0xa0, 0x09, 0x37, 0xa1, 0x8f, 0xa1, 0x41, 0xfe, 0x83, 0xae, 0xd0, 0xee, - 0x4d, 0x17, 0x8c, 0x52, 0x9b, 0x02, 0x94, 0x00, 0x1a, 0x3f, 0x85, 0xfa, 0xe9, 0x80, 0x69, 0x40, - 0xf0, 0x90, 0x3e, 0xff, 0x45, 0x89, 0xe6, 0x02, 0xc5, 0xf5, 0xc4, 0xa3, 0x14, 0xde, 0x11, 0xe5, - 0xb7, 0xf1, 0x8e, 0xe8, 0xa3, 0x68, 0xa0, 0x68, 0x18, 0xa6, 0x03, 0x9b, 0x74, 0x9b, 0x5f, 0x4d, - 0x24, 0x5a, 0xe5, 0x0f, 0xc2, 0xe3, 0x78, 0x9f, 0x3e, 0xd6, 0x2c, 0x17, 0x19, 0xe2, 0xeb, 0xee, - 0xab, 0x18, 0x62, 0x71, 0xaf, 0x72, 0xb8, 0x9e, 0xb1, 0x38, 0x2c, 0xfa, 0x28, 0x06, 0x3a, 0x6f, - 0xa8, 0x62, 0x99, 0x6d, 0xd3, 0x26, 0x1a, 0x13, 0xd4, 0x80, 0x1f, 0x6a, 0xa0, 0xcd, 0x11, 0xf0, - 0x8e, 0x2d, 0x10, 0xc8, 0x23, 0x50, 0x04, 0x2f, 0xa3, 0x93, 0xee, 0x45, 0xb1, 0xf7, 0x62, 0xb0, - 0x5c, 0xb2, 0xa5, 0x41, 0x78, 0x95, 0x84, 0xc3, 0xca, 0x50, 0x2e, 0x8d, 0x5f, 0x74, 0xaf, 0x45, - 0xdc, 0x27, 0x87, 0x35, 0x5d, 0x13, 0xbb, 0x3a, 0x96, 0x1f, 0xfe, 0x16, 0x34, 0x30, 0xab, 0xde, - 0x2b, 0x75, 0xf8, 0xd9, 0xcb, 0xd0, 0xf6, 0x6f, 0x5f, 0x5a, 0xea, 0xbd, 0x9a, 0xc6, 0xcb, 0x85, - 0x6c, 0x0a, 0x91, 0x25, 0xae, 0xa1, 0xd3, 0x15, 0xcb, 0x6c, 0x99, 0x0e, 0xd1, 0x42, 0x8f, 0xef, - 0x46, 0xfc, 0xd7, 0xba, 0x6d, 0x4e, 0x51, 0xeb, 0xf2, 0x0a, 0x2f, 0x81, 0x0d, 0x6e, 0xa1, 0x91, - 0xa2, 0x6d, 0x77, 0x5a, 0xc4, 0xbf, 0xa1, 0x1a, 0xdd, 0xf2, 0x33, 0xde, 0xc3, 0xbd, 0x96, 0xef, - 0x53, 0xa1, 0x28, 0xbb, 0xa0, 0xaa, 0x39, 0xba, 0x58, 0x23, 0x7c, 0x4b, 0x98, 0xf7, 0x2b, 0xd9, - 0xfc, 0xf0, 0xe8, 0x88, 0x72, 0x26, 0xda, 0x98, 0x05, 0xdd, 0x69, 0x12, 0xf9, 0xcb, 0x29, 0x84, - 0x7c, 0x01, 0xe3, 0xc7, 0x82, 0x11, 0x8a, 0x52, 0xfe, 0x45, 0x07, 0x8f, 0x5e, 0x10, 0x08, 0x49, - 0x84, 0xcf, 0xa3, 0x2c, 0x44, 0xb8, 0x48, 0xfb, 0x07, 0xab, 0xab, 0xba, 0xa1, 0x29, 0x00, 0xa5, - 0x58, 0xe1, 0x29, 0x3a, 0x60, 0xe1, 0x52, 0x9f, 0x59, 0x85, 0x25, 0x34, 0x52, 0xed, 0x2c, 0xb9, - 0x75, 0x0b, 0xef, 0xea, 0x20, 0xd0, 0x86, 0xdd, 0x59, 0xf2, 0x1e, 0xa3, 0x06, 0xc2, 0x98, 0x04, - 0x8b, 0xc8, 0x5f, 0x4c, 0x85, 0x66, 0xc1, 0x03, 0x5c, 0xf4, 0x1e, 0x8a, 0xfa, 0x69, 0x44, 0xa7, - 0x25, 0xf9, 0x47, 0xd2, 0x68, 0xa0, 0x62, 0x5a, 0x0e, 0x0f, 0x19, 0x72, 0xb8, 0x57, 0x21, 0x61, - 0xaf, 0x94, 0xdd, 0xc1, 0x5e, 0xe9, 0x3c, 0xca, 0x0a, 0x2e, 0xca, 0xec, 0x5e, 0x44, 0xd3, 0x2c, - 0x05, 0xa0, 0xf2, 0xb7, 0xa6, 0x11, 0xfa, 0xc0, 0x13, 0x4f, 0x1c, 0x61, 0x01, 0xc9, 0x3f, 0x94, - 0x42, 0x23, 0xfc, 0xa2, 0x4e, 0x88, 0xf5, 0xd5, 0xe7, 0x5e, 0xb1, 0x8a, 0xe3, 0x92, 0x81, 0x14, - 0x17, 0x47, 0x97, 0x80, 0xc9, 0x7b, 0xba, 0x03, 0x77, 0x15, 0x42, 0xb0, 0x2f, 0xc2, 0x61, 0xe2, - 0x12, 0xe0, 0xd2, 0xe1, 0xc7, 0xdc, 0x2b, 0xc8, 0x8c, 0xbf, 0xee, 0xd1, 0x02, 0x93, 0xb1, 0xd7, - 0x90, 0xf2, 0xaf, 0x64, 0x51, 0x76, 0xf2, 0x1e, 0xa9, 0x1f, 0xf2, 0xae, 0x11, 0x0e, 0x36, 0xb3, - 0x7b, 0x3c, 0xd8, 0xdc, 0x8d, 0x4f, 0xc5, 0x4b, 0x7e, 0x7f, 0xe6, 0x82, 0xd5, 0x87, 0x7a, 0x3e, - 0x5c, 0xbd, 0xdb, 0xd3, 0x87, 0xcf, 0x25, 0xe7, 0x9f, 0x65, 0x50, 0xa6, 0x3a, 0x51, 0x39, 0xd6, - 0x9b, 0x03, 0xd5, 0x9b, 0xee, 0x77, 0xd6, 0xb2, 0x77, 0x0d, 0x95, 0xf7, 0xbd, 0x44, 0x43, 0x37, - 0x4e, 0xdf, 0xc8, 0xa0, 0xe1, 0xea, 0xd4, 0x42, 0x45, 0x38, 0x09, 0xbe, 0xc5, 0x3c, 0xf9, 0xc0, - 0xa7, 0x8c, 0x75, 0xe9, 0xf9, 0x88, 0x3d, 0xb3, 0x58, 0x36, 0x9c, 0xa7, 0x6f, 0xdc, 0x56, 0x9b, - 0x1d, 0x02, 0x47, 0x2f, 0xcc, 0xef, 0xd7, 0xd6, 0xdf, 0x20, 0x5f, 0x80, 0x87, 0xff, 0x2e, 0x03, - 0xfc, 0x3c, 0xca, 0x2c, 0x72, 0x8f, 0x8c, 0x24, 0x3e, 0x4f, 0x5e, 0x67, 0x7c, 0xe8, 0x24, 0x98, - 0xe9, 0xe8, 0x1a, 0x70, 0xa0, 0xa5, 0x68, 0xe1, 0x9b, 0x7c, 0x01, 0xde, 0x56, 0xe1, 0x86, 0x5b, - 0xf8, 0x66, 0xb9, 0x84, 0xab, 0x68, 0xa0, 0x42, 0xac, 0x96, 0x0e, 0x1d, 0xe5, 0xce, 0xd9, 0xdd, - 0x99, 0xd0, 0x9d, 0xca, 0x40, 0xdb, 0x2f, 0x04, 0xcc, 0x44, 0x2e, 0xf8, 0x35, 0x84, 0x98, 0x8d, - 0xb2, 0xcd, 0xf8, 0x91, 0x17, 0xc0, 0xee, 0x67, 0xa6, 0x65, 0x8c, 0x8d, 0x27, 0x30, 0xc3, 0xab, - 0x68, 0x74, 0xd6, 0xd4, 0xf4, 0x65, 0x9d, 0xb9, 0x5e, 0x42, 0x05, 0xb9, 0xad, 0x1d, 0x9e, 0xa8, - 0x29, 0xd9, 0x12, 0xca, 0xc5, 0x55, 0x13, 0x61, 0x2c, 0xff, 0xe3, 0x5e, 0x94, 0xa5, 0xdd, 0x7e, - 0x3c, 0x7e, 0xf7, 0x32, 0x7e, 0x8b, 0x68, 0xf4, 0x8e, 0x69, 0xad, 0xea, 0x46, 0xc3, 0xf3, 0x8a, - 0xe7, 0x7b, 0x53, 0xf0, 0xe4, 0x59, 0x63, 0xb8, 0x9a, 0xe7, 0x40, 0xaf, 0x44, 0xc8, 0xb7, 0x18, - 0xc1, 0xcf, 0x22, 0xc4, 0xde, 0xba, 0x03, 0x4d, 0xde, 0x0f, 0x56, 0xc1, 0x5e, 0xc2, 0x83, 0xa3, - 0xbd, 0x18, 0xac, 0xc2, 0x27, 0xa6, 0x9b, 0x70, 0xe6, 0x0b, 0xd1, 0x0f, 0x7e, 0xf7, 0xb0, 0x09, - 0x07, 0x5f, 0x08, 0xd1, 0x08, 0x60, 0x5e, 0x11, 0x15, 0x84, 0x84, 0xfb, 0x25, 0x14, 0x12, 0x44, - 0x60, 0x72, 0xe0, 0xe1, 0xe1, 0x62, 0xae, 0x97, 0x14, 0x81, 0x07, 0x7e, 0x3a, 0x74, 0x01, 0x8e, - 0x03, 0xdc, 0x12, 0xef, 0xbf, 0x7d, 0x07, 0xaa, 0xc1, 0xad, 0x1c, 0xa8, 0xe4, 0x37, 0xd3, 0xa8, - 0xbf, 0xda, 0x59, 0xb2, 0xd7, 0x6d, 0x87, 0xb4, 0x0e, 0xb9, 0x1a, 0xbb, 0xdb, 0xab, 0x6c, 0xec, - 0xf6, 0xea, 0x41, 0x57, 0x28, 0xc2, 0xb9, 0xa3, 0x67, 0xd2, 0xb9, 0xe2, 0xf8, 0xc5, 0x34, 0x1a, - 0x65, 0x17, 0x67, 0x25, 0xdd, 0xae, 0xef, 0x83, 0x33, 0xff, 0xc1, 0x4b, 0x65, 0x6f, 0x97, 0xcd, - 0xdb, 0x78, 0x22, 0x21, 0x7f, 0x3c, 0x8d, 0x06, 0x8a, 0x1d, 0x67, 0xa5, 0xe8, 0x80, 0x6e, 0x1d, - 0xc9, 0xfd, 0xc9, 0x6f, 0xa7, 0xd0, 0x08, 0x6d, 0xc8, 0x82, 0xb9, 0x4a, 0x8c, 0x7d, 0x38, 0x78, - 0x14, 0x0f, 0x10, 0xd3, 0xbb, 0x3c, 0x40, 0x74, 0x65, 0x99, 0xd9, 0x99, 0x2c, 0xe1, 0xb8, 0x5c, - 0x31, 0x9b, 0xe4, 0x70, 0x7f, 0xc6, 0x3e, 0x1e, 0x97, 0xbb, 0x02, 0xd9, 0x87, 0xeb, 0x99, 0x77, - 0x97, 0x40, 0xf6, 0xe1, 0x6c, 0xe9, 0xdd, 0x21, 0x90, 0xaf, 0xa4, 0x50, 0xff, 0xb8, 0xe9, 0x1c, - 0xf2, 0x81, 0xcf, 0xbf, 0xe2, 0x70, 0xab, 0xb9, 0xfb, 0x15, 0x87, 0x5b, 0x37, 0xe5, 0xef, 0x4f, - 0xa3, 0x93, 0x3c, 0x36, 0x38, 0x3f, 0x7f, 0x38, 0x9e, 0x8e, 0xf9, 0x60, 0x8b, 0x8a, 0xe6, 0x78, - 0x1e, 0xe2, 0xa2, 0xf9, 0xc9, 0x0c, 0x3a, 0x09, 0xa1, 0x4c, 0xe9, 0xb6, 0xec, 0x5d, 0x60, 0x8b, - 0xe0, 0x7a, 0xf0, 0x12, 0x74, 0x36, 0xe6, 0x12, 0xf4, 0x2f, 0x36, 0x0a, 0x4f, 0x37, 0x74, 0x67, - 0xa5, 0xb3, 0x74, 0xb5, 0x6e, 0xb6, 0xae, 0x35, 0x2c, 0xf5, 0xae, 0xce, 0xae, 0xff, 0xd4, 0xe6, - 0x35, 0x2f, 0xcd, 0x86, 0xda, 0xd6, 0x79, 0x02, 0x8e, 0x2a, 0xec, 0x75, 0x28, 0x57, 0xf7, 0xfa, - 0xd4, 0x46, 0xe8, 0x15, 0x53, 0x37, 0xb8, 0x4f, 0x21, 0x33, 0x74, 0xab, 0x74, 0x7f, 0xf8, 0xba, - 0xa9, 0x1b, 0xb5, 0xb0, 0x63, 0xe1, 0x4e, 0xeb, 0xf3, 0x59, 0x2b, 0x42, 0x35, 0xf2, 0xbf, 0x4a, - 0xa1, 0xb3, 0x41, 0x2d, 0x7e, 0x37, 0xd8, 0x8e, 0x3f, 0x90, 0x46, 0xa7, 0x6e, 0x82, 0x70, 0x3c, - 0x47, 0x8e, 0xe3, 0x79, 0x8b, 0x0f, 0xce, 0x18, 0xd9, 0x1c, 0x5b, 0x94, 0xc9, 0xb2, 0x39, 0x9e, - 0xd4, 0xb9, 0x6c, 0x7e, 0x27, 0x85, 0x4e, 0xcc, 0x97, 0x4b, 0x13, 0xef, 0x92, 0x11, 0x15, 0xfd, - 0x9e, 0x43, 0x6e, 0x70, 0x46, 0xbe, 0xe7, 0x90, 0x9b, 0x9e, 0x9f, 0x4b, 0xa3, 0x13, 0xd5, 0xe2, - 0xec, 0xcc, 0xbb, 0x65, 0x06, 0x9f, 0x10, 0xbd, 0x0e, 0xdd, 0x43, 0x30, 0x6e, 0x0b, 0x88, 0x9f, - 0x79, 0xfb, 0x7a, 0xb2, 0x37, 0x62, 0x54, 0x28, 0x87, 0x7c, 0xea, 0xde, 0x17, 0xa1, 0x50, 0xcd, - 0x0f, 0x50, 0x1f, 0x72, 0xcd, 0xff, 0xa7, 0x39, 0x34, 0x70, 0xab, 0xb3, 0x44, 0xb8, 0x73, 0xca, - 0x91, 0x3e, 0xf9, 0xbd, 0x8e, 0x06, 0xb8, 0x18, 0xe0, 0xd6, 0x44, 0x08, 0x9e, 0xc7, 0x83, 0xa1, - 0xb0, 0xf8, 0x44, 0x22, 0x11, 0x3e, 0x8f, 0xb2, 0xb7, 0x89, 0xb5, 0x24, 0xbe, 0x2b, 0xbd, 0x4b, - 0xac, 0x25, 0x05, 0xa0, 0x78, 0xc6, 0x77, 0x99, 0x2f, 0x56, 0xca, 0x90, 0x48, 0x85, 0x5f, 0xd8, - 0x40, 0x66, 0x18, 0xcf, 0xef, 0x4d, 0x6d, 0xeb, 0x2c, 0x05, 0x8b, 0xf8, 0xa6, 0x3d, 0x5c, 0x12, - 0xcf, 0xa1, 0x31, 0xd1, 0xf1, 0x89, 0x65, 0x11, 0xc9, 0xc7, 0xb0, 0x8b, 0xcb, 0x1f, 0x12, 0x2d, - 0x8a, 0x5f, 0x42, 0x83, 0x2e, 0x10, 0x5c, 0xb8, 0xfa, 0xfd, 0xd0, 0xf5, 0x1e, 0xab, 0x50, 0x8a, - 0xa2, 0x40, 0x01, 0x91, 0x01, 0x5c, 0x43, 0xa0, 0x18, 0x06, 0x21, 0x97, 0xb8, 0x40, 0x01, 0xfc, - 0x14, 0x30, 0x80, 0x67, 0x1e, 0xe0, 0xac, 0x32, 0x00, 0x8f, 0x2e, 0xc1, 0x25, 0xdf, 0xe2, 0x70, - 0xf6, 0xb4, 0x36, 0x40, 0x86, 0xe7, 0x11, 0xf2, 0x9d, 0x0a, 0x78, 0x00, 0x83, 0x1d, 0xbb, 0x3b, - 0x08, 0x2c, 0xc4, 0xeb, 0xc0, 0xa1, 0xdd, 0x5c, 0x07, 0xca, 0xbf, 0x9f, 0x46, 0x03, 0xc5, 0x76, - 0xdb, 0x1b, 0x0a, 0x8f, 0xa1, 0x5c, 0xb1, 0xdd, 0x5e, 0x54, 0xca, 0x62, 0x28, 0x73, 0xb5, 0xdd, - 0xae, 0x75, 0x2c, 0x5d, 0xf4, 0x09, 0x65, 0x44, 0x78, 0x02, 0x0d, 0x15, 0xdb, 0xed, 0x4a, 0x67, - 0xa9, 0xa9, 0xd7, 0x85, 0xcc, 0x48, 0x2c, 0x77, 0x5c, 0xbb, 0x5d, 0x6b, 0x03, 0x26, 0x9c, 0x1e, - 0x2b, 0x58, 0x06, 0x7f, 0x14, 0xc2, 0xfe, 0xf0, 0xc4, 0x3c, 0x2c, 0xf5, 0x87, 0xec, 0x05, 0x31, - 0xf7, 0xdb, 0x76, 0xd5, 0x23, 0x62, 0xc1, 0xde, 0xcf, 0xbb, 0x21, 0xf3, 0x69, 0x45, 0x91, 0x04, - 0x3c, 0x3e, 0x4b, 0xfc, 0x38, 0xea, 0x2b, 0xb6, 0xdb, 0xc2, 0x7d, 0x13, 0x38, 0x15, 0xd1, 0x52, - 0xe1, 0xdc, 0x67, 0x9c, 0xec, 0xdc, 0x0b, 0x68, 0x38, 0x58, 0xd9, 0x8e, 0x82, 0xc5, 0x7f, 0x33, - 0x05, 0x1f, 0x74, 0xc8, 0x7d, 0x9a, 0x9f, 0x44, 0x99, 0x62, 0xbb, 0xcd, 0xe7, 0xa3, 0x13, 0x31, - 0xfd, 0x11, 0x7e, 0x02, 0x5d, 0x6c, 0xb7, 0xdd, 0x4f, 0x3f, 0xe4, 0x8f, 0x23, 0x76, 0xf5, 0xe9, - 0x5f, 0x61, 0x9f, 0x7e, 0xb8, 0x1f, 0x2e, 0xc8, 0xbf, 0x92, 0x41, 0x23, 0xc5, 0x76, 0xfb, 0x38, - 0xc8, 0xfc, 0x7e, 0x3d, 0xb4, 0x7e, 0x02, 0x21, 0x61, 0x7a, 0xec, 0xf3, 0x9e, 0x6e, 0x0d, 0x08, - 0x53, 0xa3, 0x94, 0x52, 0x04, 0x22, 0x57, 0xfd, 0xf2, 0x3b, 0x52, 0xbf, 0x8f, 0x67, 0x60, 0x2a, - 0x3e, 0xec, 0x41, 0xa3, 0xde, 0x29, 0xdd, 0xc6, 0xfb, 0x20, 0xb7, 0xa3, 0x3e, 0xf8, 0xad, 0xc0, - 0xe0, 0x81, 0xa0, 0xe5, 0xc7, 0xbd, 0xd0, 0xbb, 0x27, 0xb3, 0x78, 0x58, 0x14, 0x26, 0x8f, 0x64, - 0xe3, 0x26, 0x52, 0xe2, 0x71, 0x95, 0xea, 0x14, 0x55, 0xd3, 0x35, 0x25, 0x44, 0xeb, 0xf6, 0x61, - 0xdf, 0x8e, 0xfa, 0x70, 0x23, 0x0d, 0x6f, 0xa7, 0xbd, 0xb8, 0x4c, 0x7b, 0xdf, 0x5d, 0x5c, 0x43, - 0x88, 0x79, 0x1e, 0x78, 0x6e, 0xcd, 0x43, 0x2c, 0x04, 0x0b, 0xcb, 0xaf, 0xc4, 0x43, 0xb0, 0xf8, - 0x24, 0x9e, 0x87, 0x54, 0x26, 0xd6, 0x43, 0xea, 0x0a, 0xca, 0x2b, 0xea, 0xda, 0xab, 0x1d, 0x62, - 0xad, 0x73, 0x73, 0x86, 0x85, 0x3d, 0x54, 0xd7, 0x6a, 0x1f, 0xa3, 0x40, 0xc5, 0x43, 0x63, 0xd9, - 0x7b, 0x7c, 0x2f, 0x78, 0x84, 0xb0, 0x33, 0x72, 0xef, 0xc9, 0xfd, 0x6e, 0x14, 0x1d, 0x3f, 0x87, - 0x32, 0xc5, 0x3b, 0x55, 0x2e, 0x59, 0xaf, 0x6b, 0x8b, 0x77, 0xaa, 0x5c, 0x5e, 0x89, 0x65, 0xef, - 0x54, 0xe5, 0x8f, 0xa7, 0x11, 0x8e, 0x52, 0xe2, 0xa7, 0x51, 0x3f, 0x40, 0x1b, 0x54, 0x67, 0xc4, - 0xc4, 0x9c, 0x6b, 0x76, 0xcd, 0x02, 0x68, 0xc0, 0xb8, 0x73, 0x49, 0xf1, 0xb3, 0x90, 0xfa, 0x98, - 0xa7, 0x86, 0x0b, 0x24, 0xe6, 0x5c, 0xb3, 0xdd, 0x64, 0xc1, 0xa1, 0xcc, 0xc7, 0x9c, 0x18, 0xec, - 0xc2, 0x3b, 0xd5, 0x69, 0xd3, 0x76, 0xb8, 0xa8, 0x99, 0x5d, 0xb8, 0x66, 0x43, 0x46, 0xd8, 0x80, - 0x5d, 0xc8, 0xc8, 0x20, 0xab, 0xd5, 0x9d, 0x2a, 0x7b, 0xa6, 0xa2, 0x29, 0x66, 0xd3, 0x35, 0x28, - 0x59, 0x56, 0xab, 0x35, 0xbb, 0xc6, 0x9e, 0xb8, 0x68, 0x90, 0x73, 0x39, 0x90, 0xd5, 0x2a, 0x50, - 0x4a, 0xfe, 0x74, 0x1e, 0x8d, 0x96, 0x54, 0x47, 0x5d, 0x52, 0x6d, 0x22, 0xec, 0xa6, 0x47, 0x5c, - 0x98, 0xfb, 0x39, 0x82, 0x1c, 0xb4, 0xa5, 0x98, 0xaf, 0x09, 0x17, 0xc0, 0xcf, 0xfb, 0x7c, 0xbd, - 0x9c, 0xa3, 0x62, 0x12, 0xb3, 0xa5, 0x5a, 0x9b, 0x83, 0x95, 0x08, 0x21, 0x7e, 0x14, 0x0d, 0xb8, - 0x30, 0xba, 0x01, 0xc8, 0xf8, 0x3a, 0xa3, 0x2d, 0x51, 0xfb, 0x5f, 0x11, 0xd1, 0xf8, 0x59, 0x34, - 0xe8, 0xfe, 0x14, 0x4c, 0x6b, 0x96, 0x91, 0x6d, 0x29, 0xb2, 0x7b, 0x12, 0x49, 0xc5, 0xa2, 0x30, - 0xbf, 0xf5, 0x06, 0x8a, 0x86, 0x92, 0x9e, 0x05, 0x48, 0xf1, 0xc7, 0xd0, 0xb0, 0xfb, 0x9b, 0x6f, - 0x18, 0x58, 0x7e, 0xb8, 0x47, 0xbd, 0x94, 0xce, 0x21, 0xb1, 0x5e, 0x0d, 0x92, 0xb3, 0xad, 0xc3, - 0x7d, 0x6e, 0x1e, 0x2f, 0x6d, 0x29, 0xba, 0x73, 0x08, 0x55, 0x80, 0xcb, 0x68, 0xcc, 0x85, 0xf8, - 0x1a, 0xda, 0xe7, 0xef, 0x18, 0xb5, 0xa5, 0x5a, 0xac, 0x92, 0x46, 0x4b, 0xe1, 0x26, 0x3a, 0x1f, - 0x00, 0x6a, 0xf6, 0x8a, 0xbe, 0xec, 0xf0, 0xed, 0x1e, 0x8f, 0x41, 0xcc, 0x13, 0x37, 0x7a, 0x5c, - 0x19, 0x8d, 0x9b, 0x81, 0x35, 0x98, 0x1d, 0xaa, 0x2b, 0x37, 0x5c, 0x45, 0x27, 0x5d, 0xfc, 0xcd, - 0x89, 0x4a, 0xc5, 0x32, 0x5f, 0x27, 0x75, 0xa7, 0x5c, 0xe2, 0xdb, 0x65, 0x88, 0x4d, 0xa7, 0x2d, - 0xd5, 0x1a, 0xf5, 0x36, 0x55, 0x0a, 0x8a, 0x0b, 0x32, 0x8f, 0x2d, 0x8c, 0x6f, 0xa3, 0x53, 0x02, - 0x5c, 0x48, 0x0f, 0x8d, 0xfc, 0xfd, 0x3c, 0xe7, 0x1a, 0x9f, 0x21, 0x3a, 0xbe, 0x38, 0x7e, 0x01, - 0x0d, 0xb9, 0x08, 0x76, 0x8b, 0x38, 0x00, 0xb7, 0x88, 0x30, 0x24, 0xb5, 0xa5, 0x5a, 0xf8, 0x35, - 0x65, 0x90, 0x58, 0xd4, 0x28, 0xc8, 0xa8, 0x3f, 0x18, 0xd0, 0x28, 0x67, 0xbd, 0x1d, 0xab, 0x8c, - 0x90, 0x65, 0xff, 0x25, 0x5f, 0xa3, 0xe6, 0x2d, 0xbd, 0xa1, 0xb3, 0x9d, 0xb4, 0xfb, 0x80, 0x72, - 0xa9, 0x66, 0x02, 0x30, 0x4e, 0x3f, 0x18, 0xf9, 0xb9, 0x22, 0x3a, 0x11, 0xa3, 0x63, 0x3b, 0xda, - 0x31, 0xbe, 0x99, 0xf6, 0x1b, 0x71, 0xc8, 0xb7, 0x8d, 0xe3, 0x28, 0xef, 0x7e, 0x09, 0x37, 0x1e, - 0xa4, 0xa4, 0xa1, 0x19, 0xe6, 0xe1, 0xe2, 0x03, 0xe2, 0x38, 0xe4, 0x5b, 0xc9, 0xfd, 0x10, 0xc7, - 0x5b, 0x29, 0x5f, 0x1c, 0x87, 0x7c, 0x7b, 0xf9, 0x3b, 0x19, 0x7f, 0x4e, 0x3a, 0xde, 0x63, 0xee, - 0x97, 0x99, 0xec, 0xfb, 0xc1, 0xe6, 0x76, 0xf0, 0x90, 0x51, 0x54, 0xcd, 0xbe, 0x5d, 0xaa, 0xe6, - 0x1f, 0x46, 0xfb, 0x93, 0x99, 0x9e, 0x87, 0xb2, 0x3f, 0xf7, 0x61, 0xb0, 0xe2, 0xeb, 0xfe, 0x3a, - 0xc6, 0x6c, 0xf4, 0x5e, 0x21, 0xc4, 0xdf, 0x12, 0x37, 0xd1, 0x83, 0x24, 0xf8, 0x43, 0xe8, 0x4c, - 0x00, 0x50, 0x51, 0x2d, 0xb5, 0x45, 0x1c, 0x3f, 0xe3, 0x20, 0x04, 0x6d, 0x72, 0x4b, 0xd7, 0xda, - 0x1e, 0x5a, 0xcc, 0x62, 0x98, 0xc0, 0x41, 0x50, 0x8e, 0xbe, 0x1d, 0x38, 0x49, 0x7f, 0x3e, 0xe3, - 0x9b, 0x2a, 0xc1, 0xe0, 0xab, 0x0a, 0xb1, 0x3b, 0x4d, 0xe7, 0xe8, 0x76, 0xf0, 0xee, 0x52, 0x5b, - 0x4c, 0xa3, 0x91, 0xe2, 0xf2, 0x32, 0xa9, 0x3b, 0x6e, 0x4c, 0x69, 0x9b, 0x87, 0xdb, 0x63, 0x5b, - 0x07, 0x8e, 0xe2, 0x31, 0x82, 0x03, 0xb9, 0xf1, 0x43, 0xc5, 0xe4, 0x3f, 0xca, 0x22, 0xc9, 0x33, - 0xdd, 0xbd, 0x87, 0x5a, 0x07, 0xb8, 0x4c, 0xbe, 0x23, 0x7a, 0x45, 0x47, 0x63, 0xbe, 0x30, 0xaa, - 0x9d, 0x56, 0x4b, 0x85, 0xa1, 0x47, 0xb7, 0x06, 0x85, 0x30, 0x33, 0x9f, 0x90, 0xed, 0x06, 0xce, - 0xf1, 0xdd, 0x00, 0xf6, 0x1f, 0xc2, 0xd5, 0x6c, 0xc6, 0x42, 0x89, 0x72, 0xc5, 0x9f, 0x49, 0xa1, - 0x93, 0x6e, 0xa7, 0xcc, 0x2f, 0x51, 0xb3, 0x78, 0xc2, 0xec, 0x18, 0x8e, 0xbb, 0x13, 0x79, 0x2e, - 0xb9, 0x3a, 0xd6, 0x49, 0x57, 0xe3, 0x0a, 0xb3, 0x96, 0x78, 0x81, 0x25, 0x3c, 0x85, 0x30, 0x81, - 0xa6, 0x56, 0x07, 0x22, 0x25, 0xb6, 0xde, 0x73, 0x37, 0xd1, 0xd9, 0x44, 0x96, 0x5b, 0x99, 0xa1, - 0xbd, 0xa2, 0x19, 0xfa, 0x6f, 0x52, 0xfe, 0x44, 0x14, 0x12, 0x12, 0xbe, 0x8a, 0x90, 0x0f, 0xe2, - 0x1b, 0xd3, 0xe1, 0xcd, 0x8d, 0x02, 0xf2, 0x85, 0xa6, 0x08, 0x14, 0x78, 0x1e, 0xe5, 0xb8, 0x58, - 0x58, 0x76, 0xdf, 0xf7, 0x6e, 0xd1, 0x0b, 0x57, 0x45, 0x39, 0xc0, 0xa6, 0x93, 0x7f, 0x33, 0x67, - 0x73, 0xee, 0x59, 0x34, 0xb0, 0xdb, 0xef, 0xfa, 0x4c, 0x06, 0x61, 0x71, 0x17, 0x79, 0x80, 0x26, - 0xf6, 0x21, 0x9e, 0xc2, 0x2e, 0xa3, 0x3c, 0xfd, 0x04, 0xc8, 0x77, 0x21, 0xc4, 0xb7, 0xed, 0x70, - 0x98, 0xe2, 0x61, 0xfd, 0xe0, 0x52, 0x7d, 0xf1, 0xc1, 0xa5, 0xe4, 0xef, 0xcd, 0xa0, 0xd3, 0x62, - 0x87, 0x94, 0x08, 0x84, 0xcc, 0x3f, 0xee, 0x94, 0xb7, 0xb1, 0x53, 0x64, 0x94, 0x63, 0x9b, 0x07, - 0x9e, 0xbb, 0x80, 0x1d, 0xec, 0x00, 0x44, 0xe1, 0x18, 0xf9, 0x3f, 0xa6, 0xd1, 0x50, 0xc5, 0xb4, - 0x9d, 0x86, 0x45, 0xec, 0x8a, 0x6a, 0xd9, 0x47, 0xb8, 0x3b, 0xde, 0x87, 0x86, 0x20, 0x3c, 0x50, - 0x8b, 0x18, 0x2c, 0x84, 0x4e, 0xaf, 0x90, 0x6c, 0xc4, 0x45, 0xf0, 0xbc, 0x52, 0x01, 0x42, 0xaa, - 0xfd, 0xcc, 0xf2, 0x13, 0x82, 0x36, 0x31, 0xb3, 0x8f, 0xc1, 0xe5, 0x1f, 0xcb, 0xa0, 0x41, 0x57, - 0xca, 0xe3, 0xfa, 0x61, 0xbd, 0xa9, 0x39, 0x58, 0x21, 0x5f, 0x43, 0xa8, 0x62, 0x5a, 0x8e, 0xda, - 0x9c, 0xf3, 0x35, 0x1f, 0x8e, 0x38, 0xdb, 0x00, 0x65, 0x65, 0x04, 0x12, 0x58, 0xbf, 0x7c, 0xb3, - 0x9a, 0x4d, 0x4c, 0x6c, 0xfd, 0xf2, 0xa0, 0x8a, 0x40, 0x21, 0xff, 0x46, 0x1a, 0x8d, 0xb8, 0x9d, - 0x34, 0x79, 0x8f, 0xd4, 0x3b, 0x47, 0x79, 0x6e, 0x0a, 0x4a, 0xbb, 0x77, 0x4b, 0x69, 0xcb, 0xff, - 0x5d, 0x98, 0x48, 0x26, 0x9a, 0xe6, 0xf1, 0x44, 0xf2, 0x57, 0xa1, 0xe3, 0xf2, 0xb7, 0x67, 0xd0, - 0x49, 0x57, 0xea, 0x53, 0x1d, 0x03, 0x0e, 0x07, 0x26, 0xd4, 0x66, 0xf3, 0x28, 0xef, 0xc6, 0x07, - 0x5c, 0x41, 0xcc, 0xf3, 0x78, 0x7b, 0x3c, 0xc7, 0xdf, 0x32, 0x07, 0xd7, 0x4c, 0x5d, 0x53, 0x44, - 0x22, 0xfc, 0x12, 0x1a, 0x74, 0x7f, 0x16, 0xad, 0x86, 0xbb, 0x05, 0x87, 0xa3, 0x7e, 0xaf, 0x90, - 0x6a, 0x05, 0xc2, 0x0a, 0x04, 0x0a, 0xc8, 0x1f, 0xef, 0x43, 0xe7, 0xee, 0xe8, 0x86, 0x66, 0xae, - 0xd9, 0x6e, 0x8a, 0xc8, 0x43, 0x7f, 0xd4, 0x75, 0xd0, 0xa9, 0x21, 0x5f, 0x45, 0xa7, 0xc2, 0x22, - 0xb5, 0xbc, 0xc0, 0xdd, 0xbc, 0x77, 0xd6, 0x18, 0x41, 0xcd, 0x4d, 0x16, 0xc9, 0xef, 0xcb, 0x94, - 0xf8, 0x92, 0xe1, 0x6c, 0x93, 0x7d, 0xdb, 0xc9, 0x36, 0xf9, 0x08, 0xca, 0x95, 0xcc, 0x96, 0xaa, - 0xbb, 0x01, 0x66, 0x60, 0x14, 0x7b, 0xf5, 0x02, 0x46, 0xe1, 0x14, 0x94, 0x3f, 0xaf, 0x18, 0xba, - 0xac, 0xdf, 0xe7, 0xef, 0x16, 0xa0, 0x56, 0x9a, 0x22, 0x12, 0x61, 0x13, 0x0d, 0xf1, 0xea, 0xf8, - 0xed, 0x16, 0x82, 0xcd, 0xd3, 0x53, 0xae, 0x8c, 0x92, 0xd5, 0xea, 0x6a, 0xa0, 0x1c, 0xdb, 0x46, - 0xb1, 0x24, 0x98, 0xfc, 0x63, 0xd8, 0x3d, 0x97, 0x12, 0xe4, 0x2f, 0x08, 0x01, 0x26, 0x99, 0x81, - 0xa8, 0x10, 0x60, 0x96, 0x11, 0x89, 0xf0, 0x24, 0x1a, 0x83, 0xf0, 0xca, 0xde, 0x56, 0x8a, 0xaa, - 0xc4, 0x20, 0x18, 0x95, 0x70, 0x69, 0xc2, 0x22, 0x32, 0xd3, 0x8f, 0xab, 0xd5, 0x39, 0x5a, 0x89, - 0x96, 0xc0, 0x67, 0x51, 0x66, 0x6e, 0xa6, 0x08, 0xb7, 0x2d, 0x79, 0x96, 0xda, 0xc8, 0x68, 0xaa, - 0x0a, 0x85, 0x9d, 0x7b, 0x19, 0xe1, 0xe8, 0xe7, 0xec, 0xe8, 0x46, 0xe5, 0x9f, 0x0b, 0x5b, 0xbe, - 0xc3, 0xee, 0x13, 0xb3, 0x1f, 0x13, 0x61, 0x20, 0xab, 0x58, 0xef, 0xdb, 0x99, 0x55, 0x2c, 0xb7, - 0xaf, 0x59, 0xc5, 0xe4, 0x9f, 0x4b, 0xa1, 0xb1, 0x48, 0x08, 0x72, 0xfc, 0x24, 0x42, 0x0c, 0x22, - 0x84, 0x7a, 0x84, 0xd8, 0x29, 0x7e, 0x58, 0x72, 0xbe, 0x3c, 0xfa, 0x64, 0xf8, 0x1a, 0xca, 0xb3, - 0x5f, 0x3c, 0x3c, 0x53, 0xb4, 0x48, 0xa7, 0xa3, 0x6b, 0x8a, 0x47, 0xe4, 0xd7, 0x02, 0x77, 0x8a, - 0x99, 0xd8, 0x22, 0xce, 0x7a, 0xdb, 0xab, 0x85, 0x92, 0xc9, 0x9f, 0x4e, 0xa3, 0x41, 0xaf, 0xc1, - 0x45, 0xed, 0xa0, 0x74, 0x2e, 0xc7, 0xa3, 0xb9, 0x67, 0xb6, 0x8a, 0xe6, 0x1e, 0x9a, 0x6f, 0x79, - 0xf8, 0xf6, 0xfd, 0x7b, 0x12, 0xf5, 0xd9, 0x34, 0x1a, 0xf1, 0x6a, 0x3d, 0xc0, 0xeb, 0xab, 0x77, - 0x90, 0x48, 0x3e, 0x93, 0x42, 0xd2, 0xb8, 0xde, 0x6c, 0xea, 0x46, 0xa3, 0x6c, 0x2c, 0x9b, 0x56, - 0x0b, 0x26, 0xc4, 0x83, 0x3b, 0xc2, 0x95, 0xbf, 0x33, 0x85, 0xc6, 0x78, 0x83, 0x26, 0x54, 0x4b, - 0x3b, 0xb8, 0xf3, 0xb1, 0x70, 0x4b, 0x0e, 0x4e, 0x5f, 0xe4, 0x2f, 0xa5, 0x11, 0x9a, 0x31, 0xeb, - 0xab, 0x87, 0xfc, 0x45, 0xd5, 0xf3, 0x28, 0xc7, 0x62, 0x64, 0x71, 0x8d, 0x1d, 0xe3, 0x2f, 0x87, - 0xe8, 0xa7, 0x31, 0xc4, 0xf8, 0x28, 0x9f, 0x8f, 0x73, 0x2c, 0xc6, 0x96, 0x94, 0x52, 0x78, 0x11, - 0x5a, 0x29, 0xa5, 0xe3, 0x0b, 0x86, 0x57, 0x29, 0x85, 0x05, 0x2b, 0xdd, 0xdc, 0x28, 0x64, 0x9b, - 0x66, 0x7d, 0x55, 0x01, 0x7a, 0xf9, 0x2f, 0x53, 0x4c, 0x76, 0x87, 0xfc, 0x5d, 0xa8, 0xfb, 0xf9, - 0xd9, 0x1d, 0x7e, 0xfe, 0x77, 0xa5, 0xd0, 0x49, 0x85, 0xd4, 0xcd, 0xbb, 0xc4, 0x5a, 0x9f, 0x30, - 0x35, 0x72, 0x93, 0x18, 0xc4, 0x3a, 0xa8, 0x11, 0xf5, 0x8f, 0x20, 0xfd, 0x85, 0xdf, 0x98, 0x45, - 0x9b, 0x68, 0x87, 0x27, 0x35, 0x89, 0xfc, 0xcb, 0x7d, 0x48, 0x8a, 0xb5, 0x7a, 0x0f, 0xad, 0x39, - 0x97, 0xb8, 0x95, 0xc9, 0xee, 0xd7, 0x56, 0xa6, 0x77, 0x67, 0x5b, 0x99, 0xdc, 0x4e, 0xb7, 0x32, - 0x7d, 0xdb, 0xd9, 0xca, 0xb4, 0xc2, 0x5b, 0x99, 0x3c, 0x6c, 0x65, 0x9e, 0xec, 0xba, 0x95, 0x99, - 0x34, 0xb4, 0x5d, 0x6e, 0x64, 0x0e, 0x6d, 0xda, 0xdc, 0xdd, 0xec, 0xc0, 0x2e, 0xd3, 0x49, 0xb1, - 0x6e, 0x5a, 0x1a, 0xd1, 0xf8, 0xc6, 0x0b, 0x4e, 0xfd, 0x2d, 0x0e, 0x53, 0x3c, 0x6c, 0x24, 0x07, - 0xf1, 0xd0, 0x76, 0x72, 0x10, 0xef, 0xc3, 0xfe, 0xeb, 0xcd, 0x34, 0x1a, 0x9b, 0x20, 0x96, 0xc3, - 0x82, 0x70, 0xee, 0x87, 0x53, 0x5b, 0x11, 0x8d, 0x08, 0x0c, 0xc1, 0x22, 0x4f, 0xfb, 0x8e, 0x7a, - 0x75, 0x62, 0x39, 0x61, 0x3f, 0xbf, 0x30, 0x3d, 0xad, 0xde, 0xcd, 0x03, 0xc6, 0xc7, 0xae, 0x57, - 0xbd, 0x0b, 0x67, 0x82, 0xd4, 0xf9, 0x2f, 0xc5, 0xa3, 0x17, 0x52, 0x7b, 0x65, 0x77, 0x9e, 0xda, - 0x4b, 0xfe, 0x99, 0x14, 0xba, 0xa4, 0x10, 0x83, 0xac, 0xa9, 0x4b, 0x4d, 0x22, 0x34, 0x8b, 0xaf, - 0x0c, 0x74, 0xd6, 0xd0, 0xed, 0x96, 0xea, 0xd4, 0x57, 0xf6, 0x24, 0xa3, 0x29, 0x34, 0x28, 0xce, - 0x5f, 0x3b, 0x98, 0xdb, 0x02, 0xe5, 0xe4, 0x5f, 0xce, 0xa2, 0xbe, 0x71, 0xd3, 0x79, 0xc5, 0xdc, - 0x63, 0xae, 0x39, 0x7f, 0xca, 0x4f, 0xef, 0xe0, 0xac, 0xe7, 0x71, 0xa8, 0x5c, 0x08, 0xbf, 0x0f, - 0x4e, 0xa0, 0x4b, 0x66, 0x24, 0x4d, 0x81, 0x4b, 0xb6, 0xc3, 0x2c, 0x73, 0x4f, 0xa3, 0x7e, 0x88, - 0xdf, 0x22, 0x9c, 0xc6, 0x82, 0x8b, 0xb5, 0x43, 0x81, 0xe1, 0x3a, 0x7c, 0x52, 0xfc, 0xa1, 0x40, - 0xd4, 0xd0, 0xdc, 0xde, 0xb3, 0xd2, 0x89, 0x01, 0x44, 0x9f, 0x64, 0x17, 0x79, 0xd0, 0x26, 0x21, - 0x83, 0x07, 0x9c, 0xa2, 0x84, 0x9a, 0xe4, 0x11, 0xee, 0x63, 0xc6, 0xb8, 0x09, 0x34, 0x34, 0x6e, - 0x3a, 0x82, 0x3b, 0x6f, 0xbf, 0xff, 0x90, 0x93, 0x4a, 0x3e, 0xde, 0x97, 0x37, 0x58, 0x46, 0xfe, - 0x46, 0x16, 0x0d, 0xba, 0x3f, 0x0f, 0x48, 0x77, 0x1e, 0x43, 0xb9, 0x69, 0x53, 0x48, 0x62, 0x00, - 0x2e, 0xc0, 0x2b, 0xa6, 0x1d, 0xf2, 0x6d, 0xe6, 0x44, 0x54, 0xea, 0x73, 0xa6, 0x26, 0x3a, 0xb0, - 0x83, 0xd4, 0x0d, 0x53, 0x8b, 0x3c, 0x00, 0xf6, 0x08, 0xf1, 0x25, 0x94, 0x05, 0xdf, 0x7f, 0xe1, - 0x20, 0x3f, 0xe4, 0xef, 0x0f, 0x78, 0x41, 0x2b, 0x73, 0x3b, 0xd5, 0xca, 0xbe, 0xdd, 0x6a, 0x65, - 0x7e, 0x7f, 0xb5, 0xf2, 0x35, 0x34, 0x08, 0x35, 0xb9, 0x39, 0xd0, 0xb6, 0x5e, 0x58, 0xcf, 0xf2, - 0xb5, 0x6f, 0x88, 0xb5, 0x9b, 0x67, 0x42, 0x83, 0x25, 0x2f, 0xc0, 0x2a, 0xa4, 0xbb, 0x68, 0x0f, - 0xdb, 0xe9, 0x3f, 0x4c, 0xa1, 0xbe, 0x45, 0x63, 0xd5, 0x30, 0xd7, 0xf6, 0xa6, 0x71, 0x4f, 0xa2, - 0x01, 0xce, 0x46, 0x58, 0x5d, 0xe0, 0x4d, 0x77, 0x87, 0x81, 0x6b, 0xc0, 0x49, 0x11, 0xa9, 0xf0, - 0x0b, 0x5e, 0x21, 0x78, 0xde, 0x93, 0xf1, 0xd3, 0x80, 0xb8, 0x85, 0xea, 0xc1, 0xcc, 0x05, 0x22, - 0x39, 0x3e, 0x8f, 0xb2, 0x25, 0xda, 0x54, 0x21, 0x0e, 0x2e, 0x6d, 0x8a, 0x02, 0x50, 0xf9, 0xcd, - 0x2c, 0x1a, 0x0e, 0x1d, 0x7c, 0x3d, 0x82, 0xfa, 0xf9, 0xc1, 0x93, 0xee, 0xa6, 0x52, 0x80, 0xe7, - 0x3f, 0x1e, 0x50, 0xc9, 0xb3, 0x3f, 0xcb, 0x1a, 0x7e, 0x3f, 0xea, 0x33, 0x6d, 0x58, 0x14, 0xe1, - 0x5b, 0x86, 0xfd, 0x21, 0x34, 0x5f, 0xa5, 0x6d, 0x67, 0x83, 0x83, 0x93, 0x88, 0x1a, 0x69, 0xda, - 0xf0, 0x69, 0x37, 0x50, 0xbf, 0x6a, 0xdb, 0xc4, 0xa9, 0x39, 0x6a, 0x43, 0xcc, 0xae, 0xe0, 0x01, - 0xc5, 0xd1, 0x01, 0xc0, 0x05, 0xb5, 0x81, 0x5f, 0x46, 0x43, 0x75, 0x8b, 0xc0, 0xb2, 0xa9, 0x36, - 0x69, 0x2b, 0x05, 0xb3, 0x36, 0x80, 0x10, 0xef, 0x4f, 0x7c, 0x44, 0x59, 0xc3, 0xb7, 0xd1, 0x10, - 0xff, 0x1c, 0xe6, 0x7b, 0x0f, 0x03, 0x6d, 0xd8, 0x5f, 0xc6, 0x98, 0x48, 0x98, 0xf7, 0x3d, 0x7f, - 0x82, 0x21, 0x92, 0x8b, 0x7c, 0x35, 0x81, 0x14, 0xcf, 0x23, 0xbc, 0x46, 0x96, 0x6a, 0x6a, 0xc7, - 0x59, 0xa1, 0x75, 0xb1, 0xe0, 0xe0, 0x3c, 0xa9, 0x20, 0xbc, 0x5b, 0x88, 0x62, 0xc5, 0xe7, 0x1c, - 0x6b, 0x64, 0xa9, 0x18, 0x40, 0xe2, 0x3b, 0xe8, 0x54, 0xb4, 0x08, 0xfd, 0x64, 0x76, 0x39, 0xf0, - 0xe0, 0xe6, 0x46, 0xa1, 0x10, 0x4b, 0x20, 0xb0, 0x3d, 0x11, 0x61, 0x5b, 0xd6, 0x5e, 0xc9, 0xe6, - 0xfb, 0x46, 0xf3, 0xca, 0x30, 0x2d, 0xeb, 0x9a, 0x90, 0xba, 0x26, 0x7f, 0x35, 0x45, 0x4d, 0x45, - 0xfa, 0x41, 0x90, 0x55, 0x99, 0xea, 0x7a, 0x6b, 0x87, 0xba, 0xde, 0xf2, 0xf3, 0x1f, 0xe6, 0xec, - 0x2e, 0xb3, 0xab, 0xc2, 0xb1, 0xf8, 0x2a, 0xca, 0x69, 0xe2, 0xa9, 0xd9, 0xe9, 0x60, 0x27, 0xb8, - 0xf5, 0x28, 0x9c, 0x0a, 0x5f, 0x46, 0x59, 0xba, 0x64, 0x85, 0xb7, 0xcc, 0xa2, 0x75, 0xa1, 0x00, - 0x85, 0xfc, 0xad, 0x69, 0x34, 0x28, 0x7c, 0xcd, 0xf5, 0x3d, 0x7d, 0xce, 0x73, 0xdb, 0x6b, 0xa6, - 0xeb, 0xf4, 0x02, 0x7b, 0x29, 0xb7, 0xc9, 0x37, 0x3c, 0x51, 0x6c, 0xeb, 0x42, 0x8a, 0x0b, 0xe6, - 0x69, 0xfe, 0xa1, 0xb9, 0xed, 0x6f, 0x1f, 0x29, 0xfd, 0x2b, 0xd9, 0x7c, 0x7a, 0x34, 0xf3, 0x4a, - 0x36, 0x9f, 0x1d, 0xed, 0x85, 0x48, 0x5a, 0x10, 0xbc, 0x9a, 0xed, 0xcd, 0x8d, 0x65, 0xbd, 0x71, - 0xc8, 0x5f, 0x7f, 0xec, 0x6f, 0x94, 0xb1, 0x90, 0x6c, 0x0e, 0xf9, 0x53, 0x90, 0xb7, 0x55, 0x36, - 0xc7, 0xf9, 0x12, 0xb9, 0x6c, 0xfe, 0x28, 0x85, 0xa4, 0x58, 0xd9, 0x14, 0x0f, 0xc8, 0x0f, 0x62, - 0xff, 0xb2, 0x26, 0x7e, 0x3d, 0x8d, 0xc6, 0xca, 0x86, 0x43, 0x1a, 0x6c, 0xc7, 0x78, 0xc8, 0xa7, - 0x8a, 0x5b, 0x68, 0x40, 0xf8, 0x18, 0xde, 0xe7, 0xf7, 0x79, 0xfb, 0x71, 0x1f, 0x95, 0xc0, 0x49, - 0x2c, 0xbd, 0x8f, 0x89, 0xd6, 0x43, 0x42, 0x3e, 0xe4, 0x73, 0xce, 0xe1, 0x10, 0xf2, 0x21, 0x9f, - 0xbc, 0xde, 0xa1, 0x42, 0xfe, 0xaf, 0x29, 0x74, 0x22, 0xa6, 0x72, 0x7c, 0x09, 0xf5, 0x55, 0x3b, - 0x4b, 0x10, 0x38, 0x2b, 0xe5, 0x7b, 0x0c, 0xdb, 0x9d, 0x25, 0x88, 0x99, 0xa5, 0xb8, 0x48, 0xbc, - 0x00, 0xcf, 0xe3, 0xe7, 0xcb, 0xa5, 0x09, 0x2e, 0x55, 0x59, 0x78, 0xe8, 0x4f, 0xc1, 0x71, 0x5f, - 0xe6, 0x3d, 0xa1, 0x37, 0x75, 0xad, 0x1e, 0x7a, 0x42, 0x4f, 0xcb, 0xe0, 0x0f, 0xa3, 0xfe, 0xe2, - 0x1b, 0x1d, 0x8b, 0x00, 0x5f, 0x26, 0xf1, 0x87, 0x3c, 0xbe, 0x2e, 0x22, 0x8e, 0x33, 0x8b, 0x06, - 0x40, 0x29, 0xc2, 0xbc, 0x7d, 0x86, 0xf2, 0xa7, 0x53, 0xe8, 0x5c, 0x72, 0xeb, 0xf0, 0xe3, 0xa8, - 0x8f, 0xee, 0xcc, 0x8b, 0xca, 0x1c, 0xff, 0x74, 0x96, 0x61, 0xd4, 0x6c, 0x92, 0x9a, 0x6a, 0x89, - 0xc6, 0xbe, 0x4b, 0x86, 0x5f, 0x44, 0x03, 0x65, 0xdb, 0xee, 0x10, 0xab, 0xfa, 0xe4, 0xa2, 0x52, - 0xe6, 0x7b, 0x42, 0xd8, 0x73, 0xe8, 0x00, 0xae, 0xd9, 0x4f, 0x86, 0x42, 0x63, 0x89, 0xf4, 0xf2, - 0x27, 0x53, 0xe8, 0x7c, 0xb7, 0xaf, 0xc2, 0x4f, 0xa2, 0xfc, 0x02, 0x31, 0x54, 0xc3, 0x29, 0x97, - 0x78, 0x93, 0x60, 0x8b, 0xe5, 0x00, 0x2c, 0xb8, 0x53, 0xf0, 0x08, 0x69, 0x21, 0x76, 0xae, 0xe8, - 0x39, 0x32, 0xb0, 0x33, 0x50, 0x80, 0x85, 0x0a, 0xb9, 0x84, 0xf2, 0xef, 0xa6, 0xd1, 0x60, 0xa5, - 0xd9, 0x69, 0xe8, 0xc2, 0xc2, 0xb1, 0x6b, 0x7b, 0xdb, 0xb5, 0x7e, 0xd3, 0x3b, 0xb3, 0x7e, 0xe9, - 0x70, 0xb3, 0x76, 0x39, 0xdc, 0xdc, 0x72, 0xf8, 0x05, 0x94, 0x6b, 0xc3, 0x77, 0x84, 0x4f, 0x62, - 0xd9, 0xd7, 0x25, 0x9d, 0xc4, 0xb2, 0x32, 0x74, 0x7c, 0xd5, 0xf7, 0x30, 0xbe, 0xfc, 0xb2, 0x82, - 0x40, 0xfd, 0x45, 0xe2, 0x58, 0xa0, 0xfb, 0x22, 0x50, 0x7f, 0x41, 0x38, 0x16, 0xe8, 0x1e, 0x04, - 0xfa, 0x89, 0x34, 0x1a, 0x0e, 0x56, 0x89, 0x1f, 0x47, 0x03, 0xac, 0x1a, 0x76, 0x2e, 0x94, 0x12, - 0x9c, 0x8a, 0x7d, 0xb0, 0x82, 0xd8, 0x0f, 0x38, 0x05, 0x7a, 0xd1, 0xfb, 0x18, 0x26, 0xca, 0x11, - 0xee, 0x40, 0xc0, 0x18, 0xdf, 0x7e, 0x82, 0x1d, 0x6b, 0x32, 0x12, 0xf1, 0x10, 0x89, 0x7f, 0xcd, - 0x0b, 0x68, 0x64, 0x45, 0xb5, 0x6b, 0xfe, 0x01, 0x0f, 0xbb, 0xfe, 0xcd, 0x33, 0x47, 0xaa, 0x10, - 0x4a, 0x19, 0x5e, 0x51, 0xed, 0x09, 0xff, 0x37, 0x9e, 0x44, 0xd8, 0x22, 0x1d, 0x9b, 0x04, 0x19, - 0x64, 0x81, 0x01, 0xcf, 0x0e, 0x1d, 0xc6, 0x2a, 0x63, 0x0c, 0x26, 0xb0, 0x91, 0x7f, 0x63, 0x15, - 0xf5, 0xce, 0x1b, 0x64, 0x7e, 0x19, 0x3f, 0x81, 0xfa, 0xa9, 0x0a, 0xcc, 0x98, 0xf4, 0x83, 0x52, - 0xdc, 0x23, 0x42, 0xd0, 0x0d, 0x40, 0x4c, 0xf7, 0x28, 0x3e, 0x15, 0xbe, 0xc1, 0x32, 0xd2, 0xb3, - 0x59, 0x93, 0x0b, 0x01, 0x8b, 0x65, 0x18, 0x66, 0xba, 0x47, 0x11, 0xe8, 0xdc, 0x52, 0xfc, 0xc9, - 0x4d, 0x26, 0x5a, 0x8a, 0x61, 0xdc, 0x52, 0x5c, 0xe3, 0x67, 0xe2, 0x92, 0xbd, 0x87, 0xf7, 0x43, - 0x51, 0x8a, 0xe9, 0x1e, 0x25, 0x3e, 0x49, 0xfc, 0xa0, 0xe8, 0x22, 0x1a, 0x76, 0xe3, 0x10, 0x71, - 0xd3, 0x3d, 0x4a, 0x80, 0x16, 0x3f, 0x83, 0x06, 0xf8, 0xef, 0x57, 0x4c, 0xdd, 0x08, 0xc7, 0x07, - 0x12, 0x50, 0xd3, 0x3d, 0x8a, 0x48, 0x29, 0x54, 0x5a, 0xb1, 0x74, 0xc3, 0xe1, 0xaf, 0x8e, 0xc3, - 0x95, 0x02, 0x4e, 0xa8, 0x14, 0x7e, 0xe3, 0x17, 0xd1, 0x90, 0x17, 0x78, 0xe9, 0x75, 0x52, 0x77, - 0xf8, 0x71, 0xf6, 0xa9, 0x50, 0x61, 0x86, 0x9c, 0xee, 0x51, 0x82, 0xd4, 0xf8, 0x32, 0xca, 0x29, - 0xc4, 0xd6, 0xdf, 0x70, 0x2f, 0x80, 0x87, 0x85, 0x91, 0xab, 0xbf, 0x41, 0xa5, 0xc4, 0xf1, 0xb4, - 0x77, 0xfc, 0x1b, 0x67, 0x7e, 0xf8, 0x8c, 0x43, 0xb5, 0x4c, 0x1a, 0x1a, 0xed, 0x1d, 0xc1, 0xdd, - 0xe0, 0x65, 0x3f, 0x1c, 0x15, 0x4f, 0x62, 0x39, 0x10, 0x7e, 0xf7, 0x2f, 0x62, 0xa7, 0x7b, 0x94, - 0x10, 0xbd, 0x20, 0xd5, 0x92, 0x6e, 0xaf, 0xf2, 0x08, 0xa0, 0x61, 0xa9, 0x52, 0x94, 0x20, 0x55, - 0xfa, 0x53, 0xa8, 0x7a, 0x8e, 0x38, 0x6b, 0xa6, 0xb5, 0xca, 0xe3, 0x7d, 0x86, 0xab, 0xe6, 0x58, - 0xa1, 0x6a, 0x0e, 0x11, 0xab, 0xa6, 0xf3, 0xe9, 0x70, 0x7c, 0xd5, 0xaa, 0xa3, 0x8a, 0x55, 0xb3, - 0xb3, 0x35, 0xb7, 0x93, 0x66, 0x88, 0x7a, 0x97, 0xe5, 0x12, 0x8f, 0x76, 0x28, 0xe0, 0x84, 0x0e, - 0x85, 0xdf, 0xb4, 0x52, 0x21, 0x5f, 0x34, 0x4f, 0x16, 0xee, 0x55, 0x2a, 0xa0, 0x68, 0xa5, 0x62, - 0x66, 0xe9, 0x1b, 0x62, 0x1a, 0x65, 0x69, 0x2c, 0xd8, 0x41, 0x3e, 0x86, 0x76, 0x90, 0x90, 0x6e, - 0xb9, 0x00, 0x29, 0x5a, 0x25, 0x0c, 0xe4, 0x03, 0x5e, 0x0b, 0x27, 0x2a, 0xd3, 0x3d, 0x0a, 0x24, - 0x6f, 0x95, 0x59, 0xf2, 0x5f, 0xe9, 0x04, 0x50, 0x0c, 0xba, 0x14, 0x14, 0x36, 0xdd, 0xa3, 0xb0, - 0xc4, 0xc0, 0x4f, 0x08, 0x69, 0xf6, 0xa4, 0x93, 0xc1, 0x29, 0xc2, 0x43, 0xd0, 0x29, 0xc2, 0x4f, - 0xc6, 0x37, 0x15, 0x4d, 0x45, 0x27, 0x9d, 0x0a, 0x2e, 0x1e, 0x61, 0xfc, 0x74, 0x8f, 0x12, 0x4d, - 0x5f, 0xf7, 0x4c, 0x20, 0x3b, 0x9b, 0x74, 0x3a, 0x14, 0x94, 0xcb, 0x47, 0x51, 0x71, 0x89, 0x79, - 0xdc, 0xe6, 0x43, 0x99, 0xc4, 0xf9, 0x64, 0x75, 0x26, 0xb8, 0x15, 0x89, 0x21, 0x99, 0xee, 0x51, - 0xe2, 0x4a, 0xe2, 0x89, 0x48, 0x8e, 0x34, 0x49, 0x0a, 0x7a, 0xbb, 0x84, 0xd0, 0xd3, 0x3d, 0x4a, - 0x24, 0xab, 0xda, 0x0d, 0x31, 0x39, 0x99, 0x74, 0x36, 0xd8, 0x89, 0x3e, 0x86, 0x76, 0xa2, 0x90, - 0xc4, 0xec, 0x86, 0x98, 0xb0, 0x4a, 0x3a, 0x17, 0x2d, 0xe5, 0xcf, 0x9c, 0x42, 0x62, 0x2b, 0x25, - 0x3e, 0x07, 0x8f, 0x74, 0x1f, 0xcf, 0x82, 0xca, 0xcb, 0xc7, 0xd1, 0x4c, 0xf7, 0x28, 0xf1, 0xf9, - 0x7b, 0x94, 0xf8, 0xe4, 0x35, 0xd2, 0xf9, 0x6e, 0x3c, 0xbd, 0xd6, 0xc5, 0x27, 0xbe, 0x51, 0xbb, - 0xa4, 0x12, 0x91, 0x2e, 0x04, 0x23, 0x02, 0x27, 0x12, 0x4e, 0xf7, 0x28, 0x5d, 0x12, 0x92, 0x2c, - 0x26, 0xe4, 0xf5, 0x90, 0x2e, 0x06, 0x93, 0x20, 0xc7, 0x12, 0x4d, 0xf7, 0x28, 0x09, 0x59, 0x41, - 0x16, 0x13, 0xd2, 0x3e, 0x48, 0x85, 0xae, 0x6c, 0x3d, 0x79, 0x24, 0x24, 0x8d, 0x98, 0x8f, 0xcd, - 0x98, 0x20, 0xdd, 0x1f, 0x54, 0xdd, 0x18, 0x12, 0xaa, 0xba, 0x71, 0xb9, 0x16, 0xe6, 0x63, 0x43, - 0xfc, 0x4b, 0x0f, 0x74, 0x61, 0xe8, 0xb5, 0x31, 0x36, 0x39, 0xc0, 0x7c, 0x6c, 0x8c, 0x7d, 0x49, - 0x0e, 0x32, 0x8c, 0x21, 0xa1, 0x0c, 0xe3, 0xa2, 0xf3, 0xcf, 0xc7, 0x86, 0x62, 0x97, 0x1e, 0xec, - 0xc2, 0xd0, 0x6f, 0x61, 0x5c, 0x10, 0xf7, 0x67, 0x02, 0xb1, 0xd0, 0xa5, 0x87, 0x82, 0xf3, 0x86, - 0x80, 0xa2, 0xf3, 0x86, 0x18, 0x35, 0x7d, 0x22, 0x12, 0xed, 0x55, 0x7a, 0x38, 0x38, 0xcc, 0x43, - 0x68, 0x3a, 0xcc, 0xc3, 0xf1, 0x61, 0x27, 0x22, 0x51, 0x2f, 0xa5, 0x4b, 0x49, 0x4c, 0x00, 0x1d, - 0x64, 0xc2, 0xe2, 0x64, 0x96, 0x63, 0xc2, 0x2e, 0x4a, 0xef, 0x09, 0x7a, 0x6a, 0x47, 0x08, 0xa6, - 0x7b, 0x94, 0x98, 0x60, 0x8d, 0x4a, 0x7c, 0x8c, 0x21, 0xe9, 0x72, 0x70, 0xd8, 0xc6, 0xd1, 0xd0, - 0x61, 0x1b, 0x1b, 0x9f, 0x68, 0x26, 0xee, 0x39, 0x89, 0x74, 0x25, 0x68, 0x98, 0x45, 0x29, 0xa8, - 0x61, 0x16, 0xf3, 0x0c, 0x45, 0x89, 0x8f, 0x9a, 0x23, 0x3d, 0xd2, 0xb5, 0x85, 0x40, 0x13, 0xd3, - 0x42, 0x16, 0x44, 0xc6, 0xb7, 0x9d, 0x16, 0xdb, 0x4d, 0x53, 0xd5, 0xa4, 0xf7, 0xc6, 0xda, 0x4e, - 0x0c, 0x29, 0xd8, 0x4e, 0x0c, 0x40, 0x57, 0x79, 0xf1, 0xd5, 0x82, 0xf4, 0x68, 0x70, 0x95, 0x17, - 0x71, 0x74, 0x95, 0x0f, 0xbc, 0x70, 0x98, 0x88, 0x78, 0xf8, 0x4b, 0x8f, 0x05, 0x15, 0x20, 0x84, - 0xa6, 0x0a, 0x10, 0x7e, 0x13, 0xf0, 0xd1, 0x64, 0x9f, 0x78, 0xe9, 0x2a, 0x70, 0xbb, 0xdf, 0xe5, - 0x96, 0x44, 0x37, 0xdd, 0xa3, 0x24, 0xfb, 0xd5, 0x97, 0x63, 0x5c, 0xdc, 0xa5, 0x6b, 0x41, 0x05, - 0x8b, 0x10, 0x50, 0x05, 0x8b, 0x3a, 0xc6, 0x97, 0x63, 0x7c, 0xd4, 0xa5, 0xc7, 0x13, 0x59, 0x79, - 0xdf, 0x1c, 0xe3, 0xd9, 0x7e, 0x43, 0x74, 0x32, 0x97, 0x9e, 0x08, 0x2e, 0x76, 0x3e, 0x86, 0x2e, - 0x76, 0x82, 0x33, 0xfa, 0x0d, 0xd1, 0xbd, 0x5a, 0xba, 0x1e, 0x2d, 0xe5, 0x2f, 0x91, 0x82, 0x1b, - 0xb6, 0x12, 0xef, 0x95, 0x2c, 0x3d, 0x19, 0xd4, 0xba, 0x38, 0x1a, 0xaa, 0x75, 0xb1, 0x1e, 0xcd, - 0x53, 0x51, 0xe7, 0x62, 0xe9, 0x46, 0x78, 0xdb, 0x1c, 0xc4, 0x53, 0xcb, 0x27, 0xe2, 0x90, 0xfc, - 0x72, 0x38, 0x00, 0x9e, 0xf4, 0x54, 0xe8, 0x22, 0x37, 0x80, 0xa5, 0xf6, 0x6d, 0x28, 0x60, 0xde, - 0xcb, 0xe1, 0x98, 0x71, 0xd2, 0xd3, 0xf1, 0x1c, 0x3c, 0x5d, 0x09, 0xc7, 0x98, 0x7b, 0x39, 0x1c, - 0x66, 0x4d, 0x7a, 0x26, 0x9e, 0x83, 0x27, 0xdd, 0x70, 0x58, 0xb6, 0x27, 0x84, 0xc0, 0xef, 0xd2, - 0xfb, 0x82, 0xa6, 0xa3, 0x87, 0xa0, 0xa6, 0xa3, 0x1f, 0x1e, 0xfe, 0x09, 0x21, 0x60, 0xba, 0xf4, - 0x6c, 0xa4, 0x88, 0xd7, 0x58, 0x21, 0xac, 0xfa, 0x13, 0x42, 0xa0, 0x71, 0xe9, 0xb9, 0x48, 0x11, - 0xaf, 0x75, 0x42, 0x38, 0x72, 0xad, 0xdb, 0x8b, 0x54, 0xe9, 0xf9, 0xe0, 0xf1, 0x6e, 0x32, 0xe5, - 0x74, 0x8f, 0xd2, 0xed, 0x65, 0xeb, 0x47, 0x93, 0x5d, 0xb5, 0xa5, 0x17, 0x82, 0x43, 0x38, 0x89, - 0x8e, 0x0e, 0xe1, 0x44, 0x77, 0xef, 0x17, 0x43, 0xd1, 0x29, 0xa4, 0x17, 0x83, 0x53, 0x5c, 0x00, - 0x49, 0xa7, 0xb8, 0x70, 0x2c, 0x8b, 0x40, 0xd8, 0x05, 0xe9, 0xfd, 0xc1, 0x29, 0x4e, 0xc4, 0xd1, - 0x29, 0x2e, 0x10, 0xa2, 0x61, 0x22, 0x12, 0x0d, 0x40, 0x7a, 0x29, 0x38, 0xc5, 0x85, 0xd0, 0x74, - 0x8a, 0x0b, 0xc7, 0x0f, 0x78, 0x31, 0xf4, 0x28, 0x5e, 0x7a, 0x39, 0xbe, 0xfd, 0x80, 0x14, 0xdb, - 0xcf, 0x9e, 0xd0, 0x2b, 0xf1, 0xaf, 0xbb, 0xa5, 0x62, 0x70, 0xfc, 0xc6, 0xd1, 0xd0, 0xf1, 0x1b, - 0xfb, 0x32, 0x3c, 0xbc, 0x71, 0xe0, 0x5a, 0x35, 0xde, 0x65, 0xe3, 0xe0, 0x9b, 0x22, 0x31, 0xe0, - 0xc0, 0x1e, 0x99, 0x6d, 0x84, 0x26, 0x12, 0xf6, 0xc8, 0xee, 0x36, 0x28, 0x44, 0x4f, 0x67, 0xd7, - 0x88, 0xe7, 0xb0, 0x54, 0x0a, 0xce, 0xae, 0x11, 0x02, 0x3a, 0xbb, 0x46, 0xfd, 0x8d, 0xa7, 0xd0, - 0x28, 0xd7, 0x22, 0xe6, 0x10, 0xad, 0x1b, 0x0d, 0x69, 0x32, 0xf4, 0x82, 0x32, 0x84, 0xa7, 0xb3, - 0x53, 0x18, 0x06, 0xeb, 0x35, 0x83, 0x4d, 0x34, 0xf5, 0xf6, 0x92, 0xa9, 0x5a, 0x5a, 0x95, 0x18, - 0x9a, 0x34, 0x15, 0x5a, 0xaf, 0x63, 0x68, 0x60, 0xbd, 0x8e, 0x81, 0x43, 0xd0, 0xb7, 0x10, 0x5c, - 0x21, 0x75, 0xa2, 0xdf, 0x25, 0xd2, 0x4d, 0x60, 0x5b, 0x48, 0x62, 0xcb, 0xc9, 0xa6, 0x7b, 0x94, - 0x24, 0x0e, 0xd4, 0x56, 0x9f, 0x5d, 0xaf, 0xbe, 0x3a, 0xe3, 0x05, 0x14, 0xa8, 0x58, 0xa4, 0xad, - 0x5a, 0x44, 0x9a, 0x0e, 0xda, 0xea, 0xb1, 0x44, 0xd4, 0x56, 0x8f, 0x45, 0x44, 0xd9, 0xba, 0x63, - 0xa1, 0xdc, 0x8d, 0xad, 0x3f, 0x22, 0xe2, 0x4b, 0xd3, 0xd9, 0x29, 0x88, 0xa0, 0x02, 0x9a, 0x31, - 0x8d, 0x06, 0x9c, 0x54, 0xbc, 0x12, 0x9c, 0x9d, 0x92, 0x29, 0xe9, 0xec, 0x94, 0x8c, 0xa5, 0xaa, - 0x1e, 0xc4, 0xb2, 0x31, 0x78, 0x2b, 0xa8, 0xea, 0x31, 0x24, 0x54, 0xd5, 0x63, 0xc0, 0x51, 0x86, - 0x0a, 0xb1, 0x89, 0x23, 0xcd, 0x74, 0x63, 0x08, 0x24, 0x51, 0x86, 0x00, 0x8e, 0x32, 0x9c, 0x22, - 0x4e, 0x7d, 0x45, 0x9a, 0xed, 0xc6, 0x10, 0x48, 0xa2, 0x0c, 0x01, 0x4c, 0x37, 0x9b, 0x41, 0xf0, - 0x78, 0xa7, 0xb9, 0xea, 0xf6, 0xd9, 0x5c, 0x70, 0xb3, 0x99, 0x48, 0x48, 0x37, 0x9b, 0x89, 0x48, - 0xfc, 0xc9, 0x6d, 0x7b, 0xb6, 0x4b, 0xf3, 0x50, 0xe1, 0x55, 0xdf, 0x2e, 0xd8, 0x4e, 0xa9, 0xe9, - 0x1e, 0x65, 0xbb, 0x9e, 0xf3, 0xef, 0xf5, 0xdc, 0x40, 0xa5, 0x0a, 0x3f, 0xaa, 0x76, 0xcf, 0x2a, - 0x18, 0x78, 0xba, 0x47, 0xf1, 0x1c, 0x45, 0x9f, 0x41, 0x03, 0xf0, 0x51, 0x65, 0x43, 0x77, 0x4a, - 0xe3, 0xd2, 0xab, 0xc1, 0x2d, 0x93, 0x80, 0xa2, 0x5b, 0x26, 0xe1, 0x27, 0x9d, 0xc4, 0xe1, 0x27, - 0x9b, 0x62, 0x4a, 0xe3, 0x92, 0x12, 0x9c, 0xc4, 0x03, 0x48, 0x3a, 0x89, 0x07, 0x00, 0x5e, 0xbd, - 0x25, 0xcb, 0x6c, 0x97, 0xc6, 0xa5, 0x6a, 0x4c, 0xbd, 0x0c, 0xe5, 0xd5, 0xcb, 0x7e, 0x7a, 0xf5, - 0x56, 0x57, 0x3a, 0x4e, 0x89, 0x7e, 0xe3, 0x42, 0x4c, 0xbd, 0x2e, 0xd2, 0xab, 0xd7, 0x05, 0xd0, - 0xa9, 0x10, 0x00, 0x15, 0xcb, 0xa4, 0x93, 0xf6, 0x2d, 0xbd, 0xd9, 0x94, 0x16, 0x83, 0x53, 0x61, - 0x18, 0x4f, 0xa7, 0xc2, 0x30, 0x8c, 0x9a, 0x9e, 0xac, 0x55, 0x64, 0xa9, 0xd3, 0x90, 0x6e, 0x07, - 0x4d, 0x4f, 0x1f, 0x43, 0x4d, 0x4f, 0xff, 0x17, 0xec, 0x2e, 0xe8, 0x2f, 0x85, 0x2c, 0x5b, 0xc4, - 0x5e, 0x91, 0xee, 0x84, 0x76, 0x17, 0x02, 0x0e, 0x76, 0x17, 0xc2, 0x6f, 0xdc, 0x40, 0xf7, 0x05, - 0x16, 0x1a, 0xf7, 0x1a, 0xa6, 0x4a, 0x54, 0xab, 0xbe, 0x22, 0x7d, 0x00, 0x58, 0x3d, 0x18, 0xbb, - 0x54, 0x05, 0x49, 0xa7, 0x7b, 0x94, 0x6e, 0x9c, 0x60, 0x5b, 0xfe, 0xea, 0x0c, 0x8b, 0xce, 0xaa, - 0x54, 0x26, 0xdc, 0x4d, 0xe8, 0x6b, 0xa1, 0x6d, 0x79, 0x94, 0x04, 0xb6, 0xe5, 0x51, 0x30, 0x6e, - 0xa3, 0x8b, 0xa1, 0xad, 0xda, 0xac, 0xda, 0xa4, 0xfb, 0x12, 0xa2, 0x55, 0xd4, 0xfa, 0x2a, 0x71, - 0xa4, 0x0f, 0x02, 0xef, 0x4b, 0x09, 0x1b, 0xbe, 0x10, 0xf5, 0x74, 0x8f, 0xb2, 0x05, 0x3f, 0x2c, - 0xa3, 0x6c, 0x75, 0x6a, 0xa1, 0x22, 0x7d, 0x28, 0x78, 0xbe, 0x49, 0x61, 0xd3, 0x3d, 0x0a, 0xe0, - 0xa8, 0x95, 0xb6, 0xd8, 0x6e, 0x58, 0xaa, 0x46, 0x98, 0xa1, 0x05, 0xb6, 0x1b, 0x37, 0x40, 0x3f, - 0x1c, 0xb4, 0xd2, 0x92, 0xe8, 0xa8, 0x95, 0x96, 0x84, 0xa3, 0x8a, 0x1a, 0x48, 0x44, 0x22, 0x7d, - 0x24, 0xa8, 0xa8, 0x01, 0x24, 0x55, 0xd4, 0x60, 0xda, 0x92, 0x0f, 0xa0, 0xd3, 0xde, 0x7e, 0x9e, - 0xaf, 0xbf, 0xac, 0xd3, 0xa4, 0x8f, 0x02, 0x9f, 0x8b, 0x91, 0xcb, 0x80, 0x00, 0xd5, 0x74, 0x8f, - 0x92, 0x50, 0x9e, 0xae, 0xb8, 0x91, 0x1c, 0x5b, 0xdc, 0xbc, 0xf8, 0x96, 0xe0, 0x8a, 0x9b, 0x40, - 0x46, 0x57, 0xdc, 0x04, 0x54, 0x2c, 0x73, 0x2e, 0x54, 0x75, 0x0b, 0xe6, 0x9e, 0x4c, 0x93, 0x38, - 0xc4, 0x32, 0xe7, 0x96, 0xda, 0xd2, 0x16, 0xcc, 0x3d, 0x6b, 0x2d, 0x89, 0x03, 0xbe, 0x8c, 0x72, - 0xd5, 0xea, 0xac, 0xd2, 0x31, 0xa4, 0x7a, 0xc8, 0xff, 0x15, 0xa0, 0xd3, 0x3d, 0x0a, 0xc7, 0x53, - 0x33, 0x68, 0xb2, 0xa9, 0xda, 0x8e, 0x5e, 0xb7, 0x61, 0xc4, 0xb8, 0x23, 0x44, 0x0b, 0x9a, 0x41, - 0x71, 0x34, 0xd4, 0x0c, 0x8a, 0x83, 0x53, 0x7b, 0x71, 0x42, 0xb5, 0x6d, 0xd5, 0xd0, 0x2c, 0x75, - 0x1c, 0x96, 0x09, 0x12, 0x7a, 0x5f, 0x15, 0xc0, 0x52, 0x7b, 0x31, 0x08, 0x81, 0xc3, 0x77, 0x17, - 0xe2, 0x9a, 0x39, 0xcb, 0xa1, 0xc3, 0xf7, 0x10, 0x1e, 0x0e, 0xdf, 0x43, 0x30, 0xb0, 0x3b, 0x5d, - 0x98, 0x42, 0x1a, 0x3a, 0x15, 0x91, 0xd4, 0x08, 0xd9, 0x9d, 0x61, 0x02, 0xb0, 0x3b, 0xc3, 0xc0, - 0x40, 0x93, 0xdc, 0xe5, 0x76, 0x25, 0xa1, 0x49, 0xfe, 0x2a, 0x1b, 0x29, 0x43, 0xd7, 0x6f, 0x7f, - 0x70, 0x94, 0xd6, 0x0d, 0xb5, 0x65, 0x96, 0xc6, 0x5d, 0xa9, 0xeb, 0xc1, 0xf5, 0x3b, 0x91, 0x90, - 0xae, 0xdf, 0x89, 0x48, 0x3a, 0xbb, 0xba, 0x1b, 0xad, 0x15, 0xd5, 0x22, 0x5a, 0x49, 0xb7, 0xe0, - 0x64, 0x71, 0x9d, 0x6d, 0x0d, 0x5f, 0x0f, 0xce, 0xae, 0x5d, 0x48, 0xe9, 0xec, 0xda, 0x05, 0x4d, - 0x8d, 0xbc, 0x78, 0xb4, 0x42, 0x54, 0x4d, 0x5a, 0x0d, 0x1a, 0x79, 0xc9, 0x94, 0xd4, 0xc8, 0x4b, - 0xc6, 0x26, 0x7f, 0xce, 0x1d, 0x4b, 0x77, 0x88, 0xd4, 0xdc, 0xce, 0xe7, 0x00, 0x69, 0xf2, 0xe7, - 0x00, 0x9a, 0x6e, 0x08, 0xc3, 0x1d, 0xd2, 0x0a, 0x6e, 0x08, 0xa3, 0xdd, 0x10, 0x2e, 0x41, 0x2d, - 0x16, 0xfe, 0xcc, 0x4e, 0x32, 0x82, 0x16, 0x0b, 0x07, 0x53, 0x8b, 0xc5, 0x7f, 0x88, 0x17, 0x78, - 0x5c, 0x25, 0x99, 0xc1, 0x35, 0x54, 0xc4, 0xd1, 0x35, 0x34, 0xf0, 0x10, 0xeb, 0x99, 0xc0, 0xcb, - 0x01, 0xa9, 0x1d, 0xb4, 0x3a, 0x04, 0x14, 0xb5, 0x3a, 0xc4, 0x37, 0x06, 0x13, 0x68, 0x04, 0x6e, - 0xc1, 0x95, 0x8e, 0x77, 0x8f, 0xf3, 0xb1, 0xe0, 0x67, 0x86, 0xd0, 0xf4, 0x33, 0x43, 0xa0, 0x00, - 0x13, 0x3e, 0x6d, 0x59, 0x09, 0x4c, 0xfc, 0xf3, 0xc1, 0x10, 0x08, 0xcf, 0x20, 0x5c, 0x2d, 0xce, - 0xce, 0x94, 0xb5, 0x8a, 0x78, 0x45, 0x66, 0x07, 0x4f, 0x60, 0xa3, 0x14, 0xd3, 0x3d, 0x4a, 0x4c, - 0x39, 0xfc, 0x3a, 0x3a, 0xcf, 0xa1, 0xfc, 0x0d, 0x35, 0xa4, 0xe2, 0xd7, 0xbc, 0x05, 0xc1, 0x09, - 0x7a, 0xa6, 0x75, 0xa3, 0x9d, 0xee, 0x51, 0xba, 0xf2, 0x4a, 0xae, 0x8b, 0xaf, 0x0f, 0x9d, 0xed, - 0xd4, 0xe5, 0x2d, 0x12, 0x5d, 0x79, 0x25, 0xd7, 0xc5, 0xe5, 0x7e, 0x77, 0x3b, 0x75, 0x79, 0x9d, - 0xd0, 0x95, 0x17, 0xb6, 0x51, 0xa1, 0x1b, 0xbe, 0xd8, 0x6c, 0x4a, 0x6b, 0x50, 0xdd, 0x7b, 0xb6, - 0x53, 0x5d, 0x11, 0x0c, 0xce, 0xad, 0x38, 0xd2, 0x59, 0x7a, 0xbe, 0x4d, 0x8c, 0x6a, 0x60, 0x01, - 0xba, 0x17, 0x9c, 0xa5, 0x23, 0x04, 0x74, 0x96, 0x8e, 0x00, 0xe9, 0x80, 0x12, 0x1f, 0xa0, 0x48, - 0xeb, 0xc1, 0x01, 0x25, 0xe2, 0xe8, 0x80, 0x0a, 0x3c, 0x56, 0x99, 0x47, 0x27, 0xe6, 0x57, 0x1d, - 0xd5, 0xb5, 0x20, 0x6d, 0xde, 0x95, 0x6f, 0x84, 0x2e, 0x99, 0xa2, 0x24, 0x70, 0xc9, 0x14, 0x05, - 0xd3, 0x31, 0x42, 0xc1, 0xd5, 0x75, 0xa3, 0x3e, 0xa5, 0xea, 0xcd, 0x8e, 0x45, 0xa4, 0xff, 0x27, - 0x38, 0x46, 0x42, 0x68, 0x3a, 0x46, 0x42, 0x20, 0xba, 0x40, 0x53, 0x50, 0xd1, 0xb6, 0xf5, 0x86, - 0xc1, 0xf7, 0x95, 0x9d, 0xa6, 0x23, 0xfd, 0xbf, 0xc1, 0x05, 0x3a, 0x8e, 0x86, 0x2e, 0xd0, 0x71, - 0x70, 0x38, 0x75, 0xa2, 0xbd, 0x40, 0x17, 0x0f, 0xf1, 0xae, 0xf2, 0xff, 0x0b, 0x9d, 0x3a, 0xc5, - 0xd0, 0xc0, 0xa9, 0x53, 0x0c, 0x9c, 0xae, 0x8f, 0xcc, 0x26, 0x9b, 0xd1, 0xbd, 0xbb, 0xea, 0xff, - 0x3f, 0xb8, 0x3e, 0x86, 0xf1, 0x74, 0x7d, 0x0c, 0xc3, 0x82, 0x7c, 0x78, 0x17, 0xfc, 0xb5, 0x24, - 0x3e, 0x9e, 0xfc, 0x23, 0x65, 0xf0, 0x4d, 0x91, 0x0f, 0x1f, 0x29, 0xdf, 0x9a, 0x4a, 0x62, 0xe4, - 0x0d, 0x8f, 0x48, 0xa1, 0x20, 0x23, 0x85, 0xdc, 0xd5, 0xc9, 0x9a, 0xf4, 0xf1, 0x44, 0x46, 0x8c, - 0x20, 0xc8, 0x88, 0xc1, 0xf0, 0x6b, 0xe8, 0xb4, 0x0f, 0x9b, 0x25, 0xad, 0x25, 0x6f, 0x66, 0xfa, - 0xb6, 0x54, 0xd0, 0x0c, 0x8e, 0x27, 0xa3, 0x66, 0x70, 0x3c, 0x26, 0x8e, 0x35, 0x17, 0xdd, 0x5f, - 0xdf, 0x82, 0xb5, 0x27, 0xc1, 0x04, 0x06, 0x71, 0xac, 0xb9, 0x34, 0xbf, 0x7d, 0x0b, 0xd6, 0x9e, - 0x4c, 0x13, 0x18, 0xe0, 0x4f, 0xa5, 0xd0, 0xa5, 0x78, 0x54, 0xb1, 0xd9, 0x9c, 0x32, 0x2d, 0x1f, - 0x27, 0x7d, 0x47, 0x2a, 0x78, 0xd0, 0xb0, 0xbd, 0x62, 0xd3, 0x3d, 0xca, 0x36, 0x2b, 0xc0, 0xef, - 0x47, 0x43, 0xc5, 0x8e, 0xa6, 0x3b, 0x70, 0xf1, 0x46, 0x0d, 0xe7, 0x4f, 0xa4, 0x42, 0x5b, 0x1c, - 0x11, 0x0b, 0x5b, 0x1c, 0x11, 0x80, 0x5f, 0x41, 0x63, 0x55, 0x52, 0xef, 0x58, 0xba, 0xb3, 0xae, - 0x90, 0xb6, 0x69, 0x39, 0x94, 0xc7, 0x77, 0xa6, 0x82, 0x93, 0x58, 0x84, 0x82, 0x4e, 0x62, 0x11, - 0x20, 0xbe, 0x1d, 0xb9, 0x95, 0xe7, 0x9d, 0xf9, 0xc9, 0x54, 0xd7, 0x6b, 0x79, 0xaf, 0x2f, 0xe3, - 0x8b, 0xe3, 0x4a, 0x6c, 0xe2, 0x7f, 0xe9, 0x53, 0xa9, 0x2e, 0xd7, 0xe8, 0xc2, 0x0c, 0x17, 0x05, - 0x53, 0x8e, 0x31, 0x59, 0xd9, 0xa5, 0xef, 0x4a, 0x75, 0xb9, 0xf6, 0xf6, 0x39, 0xc6, 0x25, 0x74, - 0x7f, 0x8a, 0x79, 0x8a, 0x70, 0x46, 0x7f, 0x23, 0x15, 0x75, 0x15, 0xf1, 0xca, 0x0b, 0x84, 0xb4, - 0xd8, 0xa2, 0xed, 0x29, 0xfd, 0x9b, 0xa9, 0xa8, 0x6f, 0x9e, 0x5f, 0xcc, 0xff, 0x85, 0x09, 0x3a, - 0x37, 0x79, 0xcf, 0x21, 0x96, 0xa1, 0x36, 0xa1, 0x3b, 0xab, 0x8e, 0x69, 0xa9, 0x0d, 0x32, 0x69, - 0xa8, 0x4b, 0x4d, 0x22, 0x7d, 0x3a, 0x15, 0xb4, 0x60, 0x93, 0x49, 0xa9, 0x05, 0x9b, 0x8c, 0xc5, - 0x2b, 0xe8, 0xbe, 0x38, 0x6c, 0x49, 0xb7, 0xa1, 0x9e, 0xcf, 0xa4, 0x82, 0x26, 0x6c, 0x17, 0x5a, - 0x6a, 0xc2, 0x76, 0x41, 0xe3, 0xeb, 0xa8, 0x7f, 0xdc, 0x74, 0xa7, 0xdf, 0xef, 0x0e, 0x39, 0x43, - 0x7a, 0x98, 0xe9, 0x1e, 0xc5, 0x27, 0xe3, 0x65, 0xf8, 0xa0, 0xfe, 0x6c, 0xb4, 0x8c, 0x7f, 0xf9, - 0xe4, 0xfd, 0xe0, 0x65, 0xb8, 0xb8, 0xff, 0x66, 0xb4, 0x8c, 0x7f, 0xc7, 0xe5, 0xfd, 0xa0, 0x33, - 0x09, 0xab, 0x71, 0x76, 0xaa, 0x48, 0xed, 0xb6, 0x89, 0x15, 0xb5, 0xd9, 0x24, 0x46, 0x83, 0x48, - 0x9f, 0x0b, 0xcd, 0x24, 0xf1, 0x64, 0x74, 0x26, 0x89, 0xc7, 0xe0, 0x0f, 0xa3, 0x33, 0xb7, 0xd5, - 0xa6, 0xae, 0xf9, 0x38, 0x37, 0x47, 0xb7, 0xf4, 0x3d, 0xa9, 0xe0, 0x6e, 0x3a, 0x81, 0x8e, 0xee, - 0xa6, 0x13, 0x50, 0x78, 0x16, 0x61, 0x58, 0x46, 0xbd, 0xd9, 0x82, 0xae, 0xcf, 0xd2, 0xdf, 0x4a, - 0x05, 0xed, 0xd4, 0x28, 0x09, 0xb5, 0x53, 0xa3, 0x50, 0x5c, 0x4b, 0x4e, 0xf6, 0x21, 0x7d, 0x6f, - 0x2a, 0x78, 0x5a, 0x93, 0x44, 0x38, 0xdd, 0xa3, 0x24, 0x67, 0x0c, 0xb9, 0x89, 0x46, 0xab, 0x95, - 0xf2, 0xd4, 0xd4, 0x64, 0xf5, 0x76, 0xb9, 0x04, 0x4f, 0x17, 0x34, 0xe9, 0xfb, 0x42, 0x2b, 0x56, - 0x98, 0x80, 0xae, 0x58, 0x61, 0x18, 0x7e, 0x1e, 0x0d, 0xd2, 0xf6, 0xd3, 0x01, 0x03, 0x9f, 0xfc, - 0xf9, 0x54, 0xd0, 0x9c, 0x12, 0x91, 0xd4, 0x9c, 0x12, 0x7f, 0xe3, 0x2a, 0x3a, 0x49, 0xa5, 0x58, - 0xb1, 0xc8, 0x32, 0xb1, 0x88, 0x51, 0x77, 0xc7, 0xf4, 0xf7, 0xa7, 0x82, 0x56, 0x46, 0x1c, 0x11, - 0xb5, 0x32, 0xe2, 0xe0, 0x78, 0x15, 0x9d, 0x0f, 0x9f, 0x04, 0x89, 0x0f, 0x49, 0xa5, 0x1f, 0x48, - 0x85, 0x8c, 0xe1, 0x2e, 0xc4, 0x60, 0x0c, 0x77, 0xc1, 0x63, 0x03, 0x5d, 0xe0, 0xc7, 0x2a, 0xdc, - 0xe1, 0x32, 0x5c, 0xdb, 0x0f, 0xb2, 0xda, 0x1e, 0xf6, 0x1d, 0x02, 0xbb, 0x50, 0x4f, 0xf7, 0x28, - 0xdd, 0xd9, 0x51, 0x3d, 0x8b, 0xa6, 0xb4, 0x90, 0x7e, 0x28, 0x15, 0xef, 0x91, 0x12, 0x70, 0x53, - 0x8e, 0xcb, 0x85, 0xf1, 0x5a, 0x52, 0x42, 0x06, 0xe9, 0x87, 0x43, 0xe3, 0x2d, 0x9e, 0x8c, 0x8e, - 0xb7, 0x84, 0x8c, 0x0e, 0xaf, 0xa0, 0x31, 0xa6, 0xd4, 0x15, 0x15, 0x86, 0xa1, 0xd1, 0x20, 0x9a, - 0xf4, 0xb7, 0x43, 0xab, 0x5d, 0x84, 0x02, 0x5c, 0x7b, 0xc2, 0x40, 0x3a, 0x75, 0x57, 0xdb, 0xaa, - 0x61, 0xc0, 0x31, 0xab, 0xf4, 0x77, 0x42, 0x53, 0xb7, 0x8f, 0x02, 0xc7, 0x5d, 0xef, 0x17, 0xd5, - 0x84, 0x6e, 0xc9, 0x8c, 0xa4, 0x1f, 0x09, 0x69, 0x42, 0x37, 0x62, 0xaa, 0x09, 0x5d, 0x33, 0x23, - 0xdd, 0x4e, 0x78, 0xd4, 0x2d, 0x7d, 0x21, 0xb4, 0x22, 0xc7, 0x52, 0xd1, 0x15, 0x39, 0xfe, 0x4d, - 0xf8, 0xed, 0x84, 0x07, 0xd1, 0xd2, 0x8f, 0x76, 0xe7, 0xeb, 0xaf, 0xf4, 0xf1, 0xef, 0xa9, 0x6f, - 0x27, 0x3c, 0x26, 0x96, 0x7e, 0xac, 0x3b, 0x5f, 0xdf, 0xb1, 0x2f, 0xfe, 0x2d, 0x72, 0x2d, 0xf9, - 0x21, 0xae, 0xf4, 0xe3, 0xe1, 0xa9, 0x2b, 0x81, 0x10, 0xa6, 0xae, 0xa4, 0xd7, 0xbc, 0x4b, 0xe8, - 0x2c, 0xd3, 0x90, 0x9b, 0x96, 0xda, 0x5e, 0xa9, 0x12, 0xc7, 0xd1, 0x8d, 0x86, 0xbb, 0x13, 0xfb, - 0xbb, 0xa9, 0xd0, 0xf1, 0x58, 0x12, 0x25, 0x1c, 0x8f, 0x25, 0x21, 0xa9, 0xf2, 0x46, 0x9e, 0xdc, - 0x4a, 0x3f, 0x11, 0x52, 0xde, 0x08, 0x05, 0x55, 0xde, 0xe8, 0x4b, 0xdd, 0x57, 0x62, 0x5e, 0x96, - 0x4a, 0x7f, 0x2f, 0x99, 0x97, 0xd7, 0xbe, 0x98, 0x07, 0xa9, 0xaf, 0xc4, 0x3c, 0xa0, 0x94, 0xfe, - 0x7e, 0x32, 0x2f, 0xdf, 0x07, 0x29, 0xfa, 0xee, 0xf2, 0x35, 0x74, 0x9a, 0xcd, 0xe6, 0x53, 0x44, - 0x23, 0x81, 0x0f, 0xfd, 0xc9, 0xd0, 0xd8, 0x8f, 0x27, 0x83, 0x23, 0xf7, 0x58, 0x4c, 0x1c, 0x6b, - 0xde, 0xd6, 0x9f, 0xda, 0x82, 0xb5, 0xbf, 0x21, 0x88, 0xc7, 0xd0, 0xf5, 0x46, 0x7c, 0xce, 0x26, - 0xfd, 0x74, 0x68, 0xbd, 0x11, 0x91, 0xe0, 0xce, 0x21, 0xbe, 0x7d, 0x7b, 0x3e, 0xf8, 0x74, 0x4b, - 0xfa, 0x07, 0xb1, 0x85, 0xbd, 0x0e, 0x08, 0xbe, 0xf3, 0x7a, 0x3e, 0xf8, 0x4c, 0x49, 0xfa, 0x99, - 0xd8, 0xc2, 0xde, 0x07, 0x04, 0xdf, 0x34, 0xd1, 0x2d, 0x52, 0xc7, 0x31, 0x19, 0xab, 0xc0, 0xf4, - 0xf0, 0xb3, 0xe1, 0x2d, 0x52, 0x2c, 0x19, 0x6c, 0x91, 0x62, 0x31, 0x71, 0xac, 0xf9, 0xe7, 0xfd, - 0xdc, 0x16, 0xac, 0x85, 0x8d, 0x5d, 0x2c, 0x26, 0x8e, 0x35, 0xff, 0xf8, 0x2f, 0x6e, 0xc1, 0x5a, - 0xd8, 0xd8, 0xc5, 0x62, 0xa8, 0x39, 0xe6, 0x63, 0x6e, 0x13, 0xcb, 0xf6, 0xd5, 0xef, 0xe7, 0x43, - 0xe6, 0x58, 0x02, 0x1d, 0x35, 0xc7, 0x12, 0x50, 0xb1, 0xdc, 0xb9, 0x50, 0x7e, 0x61, 0x2b, 0xee, - 0xfe, 0xbd, 0x4c, 0x02, 0x2a, 0x96, 0x3b, 0x97, 0xcb, 0x2f, 0x6e, 0xc5, 0xdd, 0xbf, 0x98, 0x49, - 0x40, 0x51, 0xa3, 0xa8, 0xea, 0xa8, 0x8e, 0x5e, 0x9f, 0x36, 0x6d, 0x47, 0x58, 0xe4, 0x7f, 0x29, - 0x64, 0x14, 0xc5, 0x11, 0x51, 0xa3, 0x28, 0x0e, 0x1e, 0x65, 0xca, 0xa5, 0xf1, 0xcb, 0x5d, 0x99, - 0xfa, 0x96, 0x56, 0x1c, 0x3c, 0xca, 0x94, 0x0b, 0xe1, 0x1f, 0x76, 0x65, 0xea, 0x7b, 0xca, 0xc7, - 0xc1, 0xc7, 0xfb, 0x50, 0x2f, 0x1c, 0xb6, 0xc9, 0x5f, 0x48, 0xa1, 0xc1, 0xaa, 0x63, 0x11, 0xb5, - 0xc5, 0x83, 0x7c, 0x9d, 0x43, 0x79, 0xe6, 0xb5, 0xea, 0x3e, 0x9a, 0x55, 0xbc, 0xdf, 0xf8, 0x12, - 0x1a, 0x9e, 0x51, 0x6d, 0x07, 0x4a, 0x96, 0x0d, 0x8d, 0xdc, 0x83, 0x17, 0x5b, 0x19, 0x25, 0x04, - 0xc5, 0x33, 0x8c, 0x8e, 0x95, 0x83, 0xb8, 0x8e, 0x99, 0x2d, 0x63, 0x5b, 0xe5, 0xdf, 0xda, 0x28, - 0xf4, 0x40, 0x28, 0xab, 0x50, 0x59, 0xf9, 0xab, 0x29, 0x14, 0xf1, 0xa7, 0xdd, 0xfd, 0x63, 0xf6, - 0x79, 0x34, 0x12, 0x8a, 0x25, 0xca, 0x9f, 0x9d, 0x6d, 0x33, 0xd4, 0x68, 0xb8, 0x34, 0x7e, 0x8f, - 0xf7, 0xdc, 0x69, 0x51, 0x99, 0xe1, 0x71, 0xcb, 0x20, 0xe2, 0x7e, 0xc7, 0x6a, 0x2a, 0x02, 0x8a, - 0xc7, 0xa5, 0xf9, 0xe6, 0xa8, 0x1f, 0x28, 0x11, 0x5f, 0xe2, 0x2f, 0xeb, 0x53, 0x7e, 0xb4, 0xb3, - 0x50, 0x86, 0x6e, 0xf6, 0x92, 0xfe, 0xfd, 0x68, 0xb0, 0xdc, 0x6a, 0x13, 0xcb, 0x36, 0x0d, 0xd5, - 0x31, 0x2d, 0xfe, 0x30, 0x19, 0x22, 0x61, 0xe9, 0x02, 0x5c, 0x8c, 0xce, 0x24, 0xd2, 0xe3, 0x2b, - 0x6e, 0xd2, 0xb0, 0x0c, 0x84, 0xa8, 0x84, 0xe7, 0x81, 0xe1, 0xac, 0xcf, 0x8c, 0x82, 0x92, 0x2e, - 0xda, 0x2a, 0x3c, 0x8c, 0xf3, 0x48, 0x3b, 0x14, 0x20, 0x92, 0x02, 0x05, 0x7e, 0x14, 0xe5, 0xe0, - 0x22, 0xc1, 0x86, 0x64, 0x80, 0x3c, 0x06, 0x5b, 0x13, 0x20, 0xe2, 0x63, 0x45, 0x46, 0x83, 0x6f, - 0xa1, 0x51, 0xff, 0x96, 0xf4, 0xa6, 0x65, 0x76, 0xda, 0x6e, 0xfa, 0x0f, 0xc8, 0x96, 0xbd, 0xea, - 0xe1, 0x6a, 0x0d, 0x40, 0x0a, 0x2c, 0x22, 0x05, 0xf1, 0x34, 0x1a, 0xf1, 0x61, 0x54, 0x44, 0x6e, - 0xda, 0x21, 0x48, 0xf9, 0x28, 0xf0, 0xa2, 0xe2, 0x0c, 0xa4, 0x7c, 0x0c, 0x15, 0xc3, 0x65, 0xd4, - 0xe7, 0x06, 0x60, 0xcb, 0x6f, 0xa9, 0xa4, 0x27, 0x78, 0x00, 0xb6, 0x3e, 0x31, 0xf4, 0x9a, 0x5b, - 0x1e, 0x4f, 0xa1, 0x61, 0xc5, 0xec, 0x38, 0x64, 0xc1, 0xe4, 0xdb, 0x0b, 0x1e, 0xe8, 0x0f, 0xda, - 0x64, 0x51, 0x4c, 0xcd, 0x31, 0xdd, 0x64, 0xe3, 0x62, 0xd2, 0xeb, 0x60, 0x29, 0x3c, 0x87, 0xc6, - 0x22, 0xf7, 0xc9, 0x62, 0x0a, 0x70, 0xe1, 0xf3, 0xa2, 0xcc, 0xa2, 0x45, 0xf1, 0x27, 0x52, 0x28, - 0xb7, 0x60, 0xa9, 0xba, 0x63, 0xf3, 0x37, 0x75, 0xa7, 0xae, 0xae, 0x59, 0x6a, 0x9b, 0xea, 0xc7, - 0x55, 0x88, 0x41, 0x7a, 0x5b, 0x6d, 0x76, 0x88, 0x3d, 0x7e, 0x87, 0x7e, 0xdd, 0xbf, 0xdd, 0x28, - 0x3c, 0xdf, 0x80, 0x53, 0xab, 0xab, 0x75, 0xb3, 0x75, 0xad, 0x61, 0xa9, 0x77, 0x75, 0x07, 0x6c, - 0x03, 0xb5, 0x79, 0xcd, 0x21, 0x4d, 0x38, 0x1c, 0xbb, 0xa6, 0xb6, 0xf5, 0x6b, 0xf0, 0x54, 0xf5, - 0x9a, 0xc7, 0x89, 0xd5, 0x40, 0x55, 0xc0, 0x81, 0xbf, 0x44, 0x15, 0x60, 0x38, 0x3c, 0x87, 0x10, - 0xff, 0xd4, 0x62, 0xbb, 0xcd, 0x1f, 0xe8, 0x09, 0x47, 0x4a, 0x2e, 0x86, 0x29, 0xb6, 0x27, 0x30, - 0xb5, 0x2d, 0xc4, 0x77, 0x55, 0x04, 0x0e, 0x54, 0x0b, 0x16, 0x78, 0x8b, 0x5c, 0x31, 0x0d, 0xf9, - 0x12, 0x77, 0x1b, 0x1b, 0x23, 0xa4, 0x70, 0x31, 0xbc, 0x84, 0x46, 0x38, 0x5f, 0x2f, 0x1b, 0xc4, - 0x70, 0x70, 0x56, 0x08, 0xa1, 0x99, 0xd2, 0x7a, 0x6d, 0xd4, 0x38, 0x58, 0xac, 0x23, 0x54, 0x02, - 0x8f, 0xfb, 0xd9, 0x6b, 0xe7, 0xd4, 0x16, 0xb1, 0xa5, 0x11, 0xd0, 0xd8, 0xf3, 0x9b, 0x1b, 0x05, - 0xc9, 0x2d, 0x0f, 0xb1, 0x08, 0x63, 0x73, 0xb1, 0x43, 0x11, 0x91, 0x07, 0xd3, 0xfa, 0xd1, 0x18, - 0x1e, 0x61, 0x9d, 0x0f, 0x16, 0xc1, 0x13, 0x68, 0xc8, 0x7b, 0x1f, 0xb0, 0xb8, 0x58, 0x2e, 0xc1, - 0x0b, 0x40, 0x1e, 0x8e, 0x32, 0x94, 0xaf, 0x41, 0x64, 0x12, 0x28, 0x23, 0x84, 0x49, 0x60, 0x4f, - 0x02, 0x43, 0x61, 0x12, 0xda, 0x31, 0x61, 0x12, 0x2a, 0xf8, 0x45, 0x34, 0x50, 0xbc, 0x53, 0xe5, - 0xe1, 0x1f, 0x6c, 0xe9, 0x84, 0x9f, 0xfc, 0x07, 0xd2, 0xf1, 0xf3, 0x50, 0x11, 0x62, 0xd3, 0x45, - 0x7a, 0x3c, 0x89, 0x86, 0x03, 0x2e, 0x46, 0xb6, 0x74, 0x12, 0x38, 0x40, 0xcb, 0x55, 0xc0, 0xd4, - 0x2c, 0x8e, 0x12, 0x87, 0x57, 0xb0, 0x10, 0xd5, 0x9a, 0x92, 0x6e, 0x43, 0x22, 0x15, 0x85, 0x40, - 0xa4, 0x09, 0x78, 0x4f, 0x98, 0x67, 0x5a, 0xa3, 0x71, 0x54, 0xcd, 0x62, 0x38, 0xb1, 0x47, 0x43, - 0xc5, 0xf0, 0xeb, 0x08, 0x43, 0xea, 0x15, 0xa2, 0xb9, 0x37, 0x4e, 0xe5, 0x92, 0x2d, 0x9d, 0x86, - 0x58, 0xcc, 0x38, 0xfc, 0xb2, 0xbd, 0x5c, 0x1a, 0xbf, 0xc4, 0xa7, 0x8f, 0x8b, 0x2a, 0x2b, 0x55, - 0x73, 0x5f, 0xb5, 0xd7, 0xf4, 0x40, 0x5e, 0xda, 0x18, 0xae, 0x78, 0x0d, 0x9d, 0xa9, 0x58, 0xe4, - 0xae, 0x6e, 0x76, 0x6c, 0x77, 0xf9, 0x70, 0xe7, 0xad, 0x33, 0x5b, 0xce, 0x5b, 0x0f, 0xf0, 0x8a, - 0x4f, 0xb5, 0x2d, 0x72, 0xb7, 0xe6, 0x46, 0xe0, 0x0d, 0x04, 0x90, 0x4c, 0xe2, 0x0e, 0xd9, 0x75, - 0xdf, 0xe8, 0x58, 0x84, 0xc3, 0x75, 0x62, 0x4b, 0x92, 0x3f, 0xd5, 0xb2, 0xa0, 0x21, 0xba, 0x87, - 0x0b, 0x64, 0xd7, 0x0d, 0x16, 0xc3, 0x0a, 0xc2, 0x37, 0x27, 0xdc, 0xdb, 0xc7, 0x62, 0x9d, 0xe5, - 0x20, 0x95, 0xce, 0x02, 0x33, 0x99, 0x8a, 0xa5, 0x51, 0xf7, 0xa2, 0x71, 0xd7, 0x54, 0x8e, 0x17, - 0xc5, 0x12, 0x2d, 0x8d, 0x67, 0xd0, 0x68, 0xc5, 0x82, 0xb3, 0x90, 0x5b, 0x64, 0xbd, 0x62, 0x36, - 0xf5, 0xfa, 0x3a, 0x3c, 0x6b, 0xe4, 0x53, 0x65, 0x9b, 0xe1, 0x6a, 0xab, 0x64, 0xbd, 0xd6, 0x06, - 0xac, 0xb8, 0xac, 0x84, 0x4b, 0x8a, 0xd1, 0x71, 0xef, 0xdb, 0x5e, 0x74, 0x5c, 0x82, 0x46, 0xf9, - 0xdd, 0xe5, 0x3d, 0x87, 0x18, 0x74, 0xa9, 0xb7, 0xf9, 0x13, 0x46, 0x29, 0x74, 0xd7, 0xe9, 0xe1, - 0xd9, 0xd4, 0xc1, 0x47, 0x19, 0xf1, 0xc0, 0x62, 0xc3, 0xc2, 0x45, 0xa2, 0x21, 0x64, 0x2f, 0xec, - 0x22, 0x84, 0xec, 0x2f, 0x65, 0xc4, 0xf9, 0x17, 0x9f, 0x47, 0x59, 0x21, 0xc3, 0x0b, 0xc4, 0xc7, - 0x84, 0x68, 0xd8, 0x59, 0x1e, 0xf6, 0xb7, 0x9f, 0xdb, 0x2e, 0x5e, 0x20, 0x14, 0x48, 0xe9, 0xe7, - 0xc7, 0x4c, 0x54, 0x7c, 0x02, 0x48, 0xa7, 0xd6, 0x59, 0x6a, 0xea, 0x75, 0x88, 0x91, 0x9e, 0x11, - 0x22, 0x1f, 0x00, 0x94, 0x85, 0x48, 0x17, 0x48, 0xf0, 0x75, 0x34, 0xe0, 0x9e, 0xc1, 0xf9, 0xf1, - 0x61, 0x21, 0x74, 0x36, 0x9f, 0xad, 0x79, 0x64, 0x6e, 0x81, 0x08, 0x3f, 0x87, 0x90, 0x3f, 0x1d, - 0x70, 0x4b, 0x0b, 0x96, 0x0a, 0x71, 0xf6, 0x10, 0x97, 0x0a, 0x9f, 0x9a, 0x4e, 0x9c, 0xa2, 0x3a, - 0xba, 0x09, 0x24, 0x61, 0xe2, 0x0c, 0xe8, 0xb0, 0xa8, 0x20, 0xc1, 0x22, 0x78, 0x1e, 0x8d, 0x45, - 0x34, 0x90, 0x47, 0x93, 0x85, 0x24, 0xe2, 0x31, 0xea, 0x2b, 0x2e, 0xcc, 0x91, 0xb2, 0xf8, 0x41, - 0x94, 0x59, 0x54, 0xca, 0x3c, 0xa2, 0x25, 0x0b, 0x86, 0x1a, 0x08, 0x77, 0x43, 0xb1, 0xf2, 0xb7, - 0xa5, 0x23, 0x6b, 0x13, 0x95, 0x1e, 0x67, 0x25, 0xf4, 0x20, 0x48, 0xcf, 0xad, 0x9f, 0x49, 0x4f, - 0x20, 0xc2, 0x97, 0x51, 0xbe, 0x42, 0x67, 0x86, 0xba, 0xd9, 0xe4, 0xfd, 0x09, 0xb1, 0x89, 0xda, - 0x1c, 0xa6, 0x78, 0x58, 0x7c, 0x5d, 0xc8, 0x7b, 0x2a, 0x04, 0x89, 0x76, 0xf3, 0x9e, 0x86, 0xa3, - 0x25, 0x43, 0x06, 0xd4, 0xeb, 0xa1, 0x3c, 0x4a, 0xbc, 0x4c, 0xcc, 0xba, 0xe8, 0xe7, 0x4d, 0xf2, - 0xac, 0xd2, 0xde, 0xad, 0xac, 0x52, 0xf9, 0x37, 0x53, 0xd1, 0x71, 0x86, 0x6f, 0x44, 0xe3, 0xb5, - 0xc2, 0x22, 0xe4, 0x01, 0xc5, 0x5a, 0xbd, 0xc8, 0xad, 0x81, 0xc8, 0xab, 0xe9, 0x5d, 0x47, 0x5e, - 0xcd, 0xec, 0x30, 0xf2, 0xaa, 0xfc, 0xbf, 0xb2, 0x5d, 0x7d, 0x6d, 0x0f, 0x24, 0x42, 0xd7, 0xb3, - 0x74, 0x67, 0x45, 0x6b, 0x2f, 0xda, 0x91, 0xfd, 0x01, 0x73, 0x25, 0xac, 0xa9, 0x6c, 0x68, 0xd9, - 0x4a, 0x90, 0x12, 0xbf, 0x84, 0x06, 0xdd, 0x0f, 0x80, 0x88, 0xbe, 0x42, 0x24, 0x5a, 0x6f, 0x55, - 0x0b, 0xc5, 0xbe, 0x0d, 0x14, 0xc0, 0x4f, 0xa1, 0x7e, 0xb0, 0x69, 0xda, 0x6a, 0xdd, 0x0d, 0xf7, - 0xcc, 0xe2, 0x43, 0xbb, 0x40, 0x31, 0x0a, 0x95, 0x47, 0x89, 0x3f, 0x82, 0x72, 0x3c, 0xe7, 0x01, - 0x4b, 0x09, 0x7e, 0x6d, 0x1b, 0xce, 0xc9, 0x57, 0xc5, 0x7c, 0x07, 0x6c, 0x97, 0x02, 0x80, 0xc0, - 0x2e, 0x85, 0xa5, 0x3a, 0x58, 0x40, 0x27, 0x2a, 0x16, 0xd1, 0xc0, 0x0d, 0x7e, 0xf2, 0x5e, 0xdb, - 0xe2, 0xd9, 0x28, 0xd8, 0x28, 0x87, 0x45, 0xaa, 0xed, 0xa2, 0xe9, 0xf2, 0xc9, 0xf1, 0x62, 0xcc, - 0xd9, 0x98, 0xe2, 0xd4, 0x72, 0x61, 0x2d, 0xb9, 0x45, 0xd6, 0xd7, 0x20, 0x41, 0x7d, 0xde, 0xb7, - 0x5c, 0xb8, 0xa0, 0x57, 0x39, 0x4a, 0xb4, 0x5c, 0x82, 0x85, 0xce, 0x3d, 0x8b, 0x06, 0x76, 0x9b, - 0x33, 0xe0, 0x17, 0xd2, 0x09, 0xaf, 0x56, 0x8e, 0x6e, 0xda, 0x36, 0x2f, 0x97, 0x70, 0x6f, 0x42, - 0x2e, 0xe1, 0x6f, 0xa4, 0x13, 0x9e, 0xe4, 0x1c, 0xe9, 0x9c, 0x9f, 0x9e, 0x30, 0x82, 0x39, 0x3f, - 0xfd, 0x74, 0xab, 0xba, 0xa6, 0x88, 0x44, 0xa1, 0xec, 0xc0, 0xb9, 0x2d, 0xb3, 0x03, 0xff, 0x64, - 0xa6, 0xdb, 0x93, 0xa5, 0x63, 0xd9, 0xef, 0x44, 0xf6, 0xd7, 0xd1, 0x80, 0x27, 0xd9, 0x72, 0x09, - 0x8c, 0x9e, 0x21, 0x2f, 0x43, 0x09, 0x03, 0x43, 0x19, 0x81, 0x08, 0x5f, 0x61, 0x6d, 0xad, 0xea, - 0x6f, 0xb0, 0x58, 0xf9, 0x43, 0x3c, 0x0a, 0xba, 0xea, 0xa8, 0x35, 0x5b, 0x7f, 0x83, 0x28, 0x1e, - 0x5a, 0xfe, 0x27, 0xe9, 0xd8, 0x77, 0x5f, 0xc7, 0x7d, 0xb4, 0x83, 0x3e, 0x8a, 0x11, 0x22, 0x7b, - 0xb1, 0x76, 0x2c, 0xc4, 0x1d, 0x08, 0xf1, 0xcf, 0xd2, 0xb1, 0xef, 0xfb, 0x8e, 0x85, 0xb8, 0x93, - 0xd9, 0xe2, 0x51, 0xd4, 0xaf, 0x98, 0x6b, 0xf6, 0x04, 0x6c, 0x6c, 0xd8, 0x5c, 0x01, 0x13, 0xb5, - 0x65, 0xae, 0xd9, 0x35, 0xd8, 0xb2, 0x28, 0x3e, 0x81, 0xfc, 0xcd, 0x74, 0x97, 0x17, 0x90, 0xc7, - 0x82, 0x7f, 0x3b, 0x97, 0xc8, 0x5f, 0x4d, 0x07, 0x5e, 0x58, 0x1e, 0xe9, 0xe4, 0xf9, 0xd5, 0xfa, - 0x0a, 0x69, 0xa9, 0xe1, 0xe4, 0xf9, 0x36, 0x40, 0x79, 0x9e, 0x5a, 0x9f, 0x44, 0xfe, 0x52, 0x3a, - 0xf4, 0xc4, 0xf4, 0x58, 0x76, 0xdb, 0x96, 0x9d, 0xa7, 0x75, 0xfc, 0xd5, 0xec, 0xb1, 0xe4, 0xb6, - 0x2b, 0xb9, 0x4f, 0xa6, 0x43, 0x0f, 0x8c, 0x8f, 0xac, 0xec, 0xe8, 0x00, 0x8c, 0x3e, 0x7c, 0x3e, - 0xb2, 0x9a, 0xf4, 0x28, 0xea, 0xe7, 0x72, 0xf0, 0x96, 0x0a, 0x36, 0xef, 0x33, 0x20, 0x9c, 0xb2, - 0x7a, 0x04, 0xf2, 0x77, 0xa4, 0x51, 0xf0, 0xe1, 0xf7, 0x11, 0xd5, 0xa1, 0x5f, 0x4d, 0x07, 0x9f, - 0xbc, 0x1f, 0x5d, 0xfd, 0xb9, 0x8a, 0x50, 0xb5, 0xb3, 0x54, 0xe7, 0x11, 0x53, 0x7b, 0x85, 0x63, - 0x7a, 0x0f, 0xaa, 0x08, 0x14, 0xf2, 0xff, 0x4e, 0xc7, 0xbe, 0xc3, 0x3f, 0xba, 0x02, 0x7c, 0x12, - 0x4e, 0xc5, 0xeb, 0x86, 0x3f, 0x91, 0xc3, 0x21, 0x24, 0x1d, 0x7f, 0x91, 0x24, 0x75, 0x2e, 0x21, - 0x7e, 0x5f, 0x8c, 0xb9, 0x06, 0x21, 0xf4, 0x7d, 0x73, 0x4d, 0xbc, 0x86, 0x10, 0x0c, 0xb7, 0x7f, - 0x99, 0xde, 0x2a, 0x6c, 0xc1, 0x51, 0x5e, 0x55, 0xfb, 0x2a, 0xea, 0x3a, 0x84, 0xd7, 0xa3, 0x3d, - 0x31, 0xc8, 0x52, 0xa8, 0xb5, 0x19, 0x48, 0xbc, 0x7b, 0xe3, 0x54, 0xf2, 0x9f, 0xf6, 0xc6, 0xbf, - 0x99, 0x3f, 0xba, 0x22, 0x3c, 0x8f, 0xb2, 0x15, 0xd5, 0x59, 0xe1, 0x9a, 0x0c, 0x57, 0x7a, 0x6d, - 0xd5, 0x59, 0x51, 0x00, 0x8a, 0xaf, 0xa0, 0xbc, 0xa2, 0xae, 0xb1, 0x33, 0xcf, 0x9c, 0x9f, 0xde, - 0xce, 0x52, 0xd7, 0x6a, 0xec, 0xdc, 0xd3, 0x43, 0x63, 0xd9, 0x4b, 0xaf, 0xc8, 0x4e, 0xbe, 0x21, - 0xb7, 0x17, 0x4b, 0xaf, 0xe8, 0x25, 0x55, 0x3c, 0x8f, 0xb2, 0xe3, 0xa6, 0xb6, 0x0e, 0xd7, 0x57, - 0x83, 0xac, 0xb2, 0x25, 0x53, 0x5b, 0x57, 0x00, 0x8a, 0x3f, 0x95, 0x42, 0x7d, 0xd3, 0x44, 0xd5, - 0xe8, 0x08, 0xe9, 0xef, 0xe6, 0x75, 0xf2, 0x81, 0xfd, 0xf1, 0x3a, 0x19, 0x5b, 0x61, 0x95, 0x89, - 0x8a, 0xc2, 0xeb, 0xc7, 0x37, 0x51, 0x7e, 0x42, 0x75, 0x48, 0xc3, 0xb4, 0xd6, 0xc1, 0x8f, 0x66, - 0xd8, 0xf7, 0xbb, 0x0e, 0xe8, 0x8f, 0x4b, 0xc4, 0x6e, 0xc6, 0xea, 0xfc, 0x97, 0xe2, 0x15, 0xa6, - 0x62, 0xe1, 0x09, 0xdf, 0x07, 0x7c, 0xb1, 0xb0, 0xcc, 0xee, 0x5e, 0x5e, 0x77, 0xef, 0x58, 0x79, - 0x30, 0xfe, 0x58, 0x19, 0xac, 0x47, 0xf0, 0xb5, 0x83, 0xa4, 0x86, 0x43, 0xb0, 0xe8, 0x33, 0xeb, - 0x11, 0xa0, 0x90, 0xd3, 0x50, 0x11, 0x48, 0xe4, 0xaf, 0xf5, 0xa2, 0xd8, 0x17, 0xb6, 0xc7, 0x4a, - 0x7e, 0xac, 0xe4, 0xbe, 0x92, 0x97, 0x22, 0x4a, 0x7e, 0x2e, 0xfa, 0x66, 0xfb, 0x1d, 0xaa, 0xe1, - 0x9f, 0xcf, 0x46, 0x22, 0x3e, 0x1c, 0xed, 0xdd, 0xa5, 0x2f, 0xbd, 0xde, 0x2d, 0xa5, 0xe7, 0x0d, - 0x88, 0xdc, 0x96, 0x03, 0xa2, 0x6f, 0xbb, 0x03, 0x22, 0x9f, 0x38, 0x20, 0x7c, 0x05, 0xe9, 0x4f, - 0x54, 0x90, 0x32, 0x1f, 0x34, 0xa8, 0x7b, 0xc2, 0xdc, 0xf3, 0x9b, 0x1b, 0x85, 0x61, 0x3a, 0x9a, - 0x62, 0x53, 0xe5, 0x02, 0x0b, 0xf9, 0xab, 0xd9, 0x2e, 0x61, 0x5a, 0x0e, 0x44, 0x47, 0x9e, 0x44, - 0x99, 0x62, 0xbb, 0xcd, 0xf5, 0xe3, 0x84, 0x10, 0x21, 0x26, 0xa1, 0x14, 0xa5, 0xc6, 0xcf, 0xa1, - 0x4c, 0xf1, 0x4e, 0x35, 0x9c, 0x6c, 0xa2, 0x78, 0xa7, 0xca, 0xbf, 0x24, 0xb1, 0xec, 0x9d, 0x2a, - 0x7e, 0xc1, 0x8f, 0xfa, 0xb8, 0xd2, 0x31, 0x56, 0xf9, 0x46, 0x91, 0xbb, 0xdb, 0xba, 0xee, 0x38, - 0x75, 0x8a, 0xa2, 0xdb, 0xc5, 0x10, 0x6d, 0x48, 0x9b, 0x72, 0xdb, 0xd7, 0xa6, 0xbe, 0x2d, 0xb5, - 0x29, 0xbf, 0x5d, 0x6d, 0xea, 0xdf, 0x86, 0x36, 0xa1, 0x2d, 0xb5, 0x69, 0x60, 0xef, 0xda, 0xd4, - 0x46, 0xe7, 0xa2, 0xa1, 0xb5, 0x3c, 0x8d, 0x50, 0x10, 0x8e, 0x62, 0xb9, 0x63, 0x09, 0x5c, 0xfd, - 0x77, 0x18, 0xb6, 0xb6, 0x06, 0xe8, 0x9a, 0x4d, 0xf1, 0xa2, 0x7f, 0x5a, 0xb4, 0xb4, 0xfc, 0x0b, - 0xe9, 0xe4, 0x88, 0x60, 0x87, 0x73, 0x8a, 0xfb, 0x96, 0x58, 0x29, 0x65, 0x83, 0x2f, 0xb4, 0x93, - 0xa5, 0x1c, 0x62, 0x1b, 0x27, 0xb3, 0xaf, 0xa4, 0x92, 0xc2, 0x94, 0xed, 0x49, 0x62, 0x0f, 0x47, - 0x3d, 0xda, 0xc0, 0x4f, 0xdf, 0x0e, 0xba, 0xb2, 0x85, 0xf3, 0xfc, 0x67, 0x76, 0x99, 0xe7, 0xff, - 0x37, 0x53, 0xe8, 0xc4, 0xad, 0xce, 0x12, 0xe1, 0x1e, 0x6c, 0x5e, 0x33, 0x5e, 0x47, 0x88, 0x82, - 0xb9, 0x13, 0x4b, 0x0a, 0x9c, 0x58, 0xde, 0x2b, 0x86, 0x18, 0x0b, 0x15, 0xb8, 0xea, 0x53, 0x33, - 0x07, 0x96, 0x0b, 0xae, 0x33, 0xe7, 0x6a, 0x67, 0x89, 0xd4, 0x22, 0x9e, 0x2c, 0x02, 0xf7, 0x73, - 0x2f, 0x32, 0x37, 0xf9, 0xdd, 0x3a, 0x8d, 0xfc, 0x5c, 0x3a, 0x31, 0xaa, 0xdb, 0xa1, 0x4d, 0x28, - 0xf8, 0xa1, 0xd8, 0x5e, 0x09, 0x27, 0x16, 0x8c, 0x21, 0x09, 0x71, 0x8c, 0xe3, 0x12, 0x2f, 0xb0, - 0x43, 0x9e, 0xe6, 0xf2, 0x6d, 0x15, 0xd8, 0xef, 0xa7, 0x12, 0xa3, 0xef, 0x1d, 0x56, 0x81, 0xc9, - 0xff, 0x29, 0xe3, 0x06, 0xfd, 0xdb, 0xd3, 0x27, 0x3c, 0x8a, 0xfa, 0xf9, 0xdb, 0xe7, 0xa0, 0x03, - 0x2e, 0x3f, 0xca, 0x83, 0xa3, 0x61, 0x8f, 0x80, 0x2e, 0xf3, 0x82, 0x77, 0xb0, 0xe0, 0x80, 0x2b, - 0x78, 0x06, 0x2b, 0x02, 0x09, 0x5d, 0xc8, 0x27, 0xef, 0xe9, 0x0e, 0x58, 0x05, 0xb4, 0x2f, 0x33, - 0x6c, 0x21, 0x27, 0xf7, 0x74, 0x87, 0xd9, 0x04, 0x1e, 0x9a, 0x2e, 0xd2, 0x55, 0x3f, 0x89, 0x37, - 0x5f, 0xa4, 0x6d, 0x9e, 0xcb, 0x9c, 0x3f, 0x1b, 0x7b, 0x14, 0xf5, 0x73, 0xaf, 0x56, 0xee, 0x66, - 0xc2, 0x5b, 0xcb, 0xfd, 0x60, 0xa1, 0xb5, 0x1e, 0x01, 0xe5, 0xa8, 0x90, 0x86, 0xef, 0x58, 0x07, - 0x1c, 0x2d, 0x80, 0x28, 0x1c, 0x83, 0xaf, 0xa3, 0xe1, 0xaa, 0xa3, 0x1a, 0x9a, 0x6a, 0x69, 0xf3, - 0x1d, 0xa7, 0xdd, 0x71, 0x44, 0xa3, 0xd4, 0x76, 0x34, 0xb3, 0xe3, 0x28, 0x21, 0x0a, 0xfc, 0x38, - 0x1a, 0x72, 0x21, 0x93, 0x96, 0x65, 0x5a, 0xa2, 0xe5, 0x61, 0x3b, 0x1a, 0xb1, 0x2c, 0x25, 0x48, - 0x80, 0xdf, 0x87, 0x86, 0xca, 0xc6, 0x5d, 0x93, 0x65, 0x87, 0x5f, 0x54, 0x66, 0xb8, 0x1d, 0x02, - 0x4f, 0xb1, 0x74, 0x0f, 0x51, 0xeb, 0x58, 0x4d, 0x25, 0x48, 0x28, 0x6f, 0xa6, 0xa3, 0xb1, 0x11, - 0x8f, 0xee, 0xa6, 0xe5, 0x4a, 0xd0, 0x99, 0x0e, 0x3c, 0x48, 0xc1, 0x20, 0x14, 0x7d, 0x79, 0x99, - 0x5d, 0x78, 0x1d, 0xe5, 0x6f, 0x91, 0x75, 0xe6, 0xf7, 0x99, 0xf3, 0x5d, 0x85, 0x57, 0x39, 0x4c, - 0x3c, 0x71, 0x75, 0xe9, 0xe4, 0x2f, 0xa7, 0xa3, 0x51, 0x1f, 0x8f, 0xae, 0xb0, 0x1f, 0x47, 0x7d, - 0x20, 0xca, 0xb2, 0x7b, 0xe4, 0x0f, 0x02, 0x04, 0x71, 0x07, 0x3d, 0x90, 0x5d, 0x32, 0xf9, 0x47, - 0x73, 0xe1, 0x50, 0xa0, 0x47, 0x57, 0x7a, 0xcf, 0xa3, 0x81, 0x09, 0xd3, 0xb0, 0x75, 0xdb, 0x21, - 0x46, 0xdd, 0x55, 0xd8, 0xb3, 0xd4, 0xa0, 0xaa, 0xfb, 0x60, 0xf1, 0x0d, 0x92, 0x40, 0xbd, 0x1b, - 0xe5, 0xc5, 0x4f, 0xa3, 0x7e, 0x10, 0x39, 0xf8, 0x49, 0xb3, 0x09, 0x0f, 0x6e, 0x0b, 0x96, 0x28, - 0x30, 0xec, 0x24, 0xed, 0x93, 0xe2, 0x45, 0x94, 0x9f, 0x58, 0xd1, 0x9b, 0x9a, 0x45, 0x0c, 0xf0, - 0x17, 0x16, 0x22, 0x2e, 0x04, 0xfb, 0xf2, 0x2a, 0xfc, 0x0b, 0xb4, 0xac, 0x39, 0x75, 0x5e, 0x2c, - 0xf0, 0x0a, 0x8b, 0xc3, 0xce, 0x7d, 0x6f, 0x1a, 0x21, 0xbf, 0x00, 0xbe, 0x1f, 0xa5, 0xbd, 0xfc, - 0xb8, 0xe0, 0xa6, 0x12, 0xd0, 0xa0, 0x34, 0x2c, 0x15, 0x7c, 0x6c, 0xa7, 0xb7, 0x1c, 0xdb, 0x8b, - 0x28, 0xc7, 0x4e, 0xbc, 0xc0, 0x93, 0x5c, 0x88, 0x4e, 0x98, 0xd8, 0xe0, 0xab, 0x40, 0xcf, 0x36, - 0xb3, 0x60, 0x79, 0x06, 0xbc, 0xb2, 0x19, 0xb3, 0x73, 0x75, 0xd4, 0x0b, 0x7f, 0xe1, 0x4b, 0x28, - 0xbb, 0xe0, 0xe6, 0xd6, 0x1c, 0x62, 0xb3, 0x74, 0x48, 0x7e, 0x80, 0xa7, 0xdd, 0x34, 0x61, 0x1a, - 0x0e, 0xad, 0x1a, 0x5a, 0x3d, 0xc8, 0xe5, 0xc2, 0x61, 0x01, 0xb9, 0x70, 0x98, 0xfc, 0x2f, 0xd2, - 0x31, 0x41, 0x6a, 0x8f, 0xee, 0x30, 0x79, 0x16, 0x21, 0x78, 0xd2, 0x4d, 0xe5, 0xe9, 0x3e, 0xd1, - 0x80, 0x51, 0x02, 0x8c, 0x40, 0x6d, 0x03, 0xdb, 0x0e, 0x9f, 0x58, 0xfe, 0xed, 0x54, 0x24, 0xb2, - 0xe9, 0x9e, 0xe4, 0x28, 0x5a, 0x65, 0xe9, 0x5d, 0x9a, 0xb1, 0x6e, 0x5f, 0x64, 0x76, 0xd6, 0x17, - 0xc1, 0x6f, 0xd9, 0x07, 0xcb, 0xf4, 0x20, 0xbf, 0xe5, 0x6b, 0xe9, 0xb8, 0x38, 0xaf, 0x87, 0x53, - 0xc5, 0x6f, 0x78, 0x46, 0x69, 0x36, 0x14, 0x59, 0x1b, 0xa0, 0xe1, 0xfc, 0xbf, 0xdc, 0x4c, 0xfd, - 0x28, 0x1a, 0x09, 0x45, 0x3f, 0xe5, 0x89, 0x5b, 0x2f, 0x75, 0x0f, 0xa3, 0x9a, 0x1c, 0x0c, 0x20, - 0x40, 0x26, 0xff, 0x9f, 0x54, 0xf7, 0xd8, 0xb7, 0x07, 0xae, 0x3a, 0x31, 0x02, 0xc8, 0xfc, 0xd5, - 0x08, 0x60, 0x1f, 0xb6, 0xc1, 0x87, 0x5b, 0x00, 0xef, 0x90, 0xc9, 0xe3, 0xed, 0x16, 0xc0, 0x8f, - 0xa6, 0xb6, 0x0c, 0x5d, 0x7c, 0xd0, 0x32, 0x90, 0xff, 0x7d, 0x2a, 0x36, 0xc4, 0xf0, 0x9e, 0xda, - 0xf5, 0x02, 0xca, 0x31, 0xb7, 0x1a, 0xde, 0x2a, 0x21, 0x29, 0x13, 0x85, 0x26, 0x25, 0x26, 0x67, - 0x58, 0x3c, 0x83, 0xfa, 0x58, 0x1b, 0x34, 0xde, 0x1b, 0x0f, 0x75, 0x89, 0x73, 0xac, 0x25, 0x4d, - 0x8e, 0x1c, 0x2d, 0xff, 0x56, 0x2a, 0x12, 0xf1, 0xf8, 0x00, 0xbf, 0xcd, 0x9f, 0xaa, 0x33, 0xdb, - 0x9f, 0xaa, 0xe5, 0x3f, 0x49, 0xc7, 0x07, 0x5c, 0x3e, 0xc0, 0x0f, 0xd9, 0x8f, 0xe3, 0xb4, 0xdd, - 0xad, 0x5b, 0x0b, 0x68, 0x38, 0x28, 0x0b, 0xbe, 0x6c, 0x5d, 0x8c, 0x0f, 0x3b, 0x9d, 0xd0, 0x8a, - 0x10, 0x0f, 0xf9, 0xad, 0x54, 0x34, 0x56, 0xf4, 0x81, 0xcf, 0x4f, 0xbb, 0xd3, 0x96, 0xe0, 0xa7, - 0xbc, 0x43, 0xd6, 0x9a, 0xfd, 0xf8, 0x94, 0x77, 0xc8, 0xaa, 0xb1, 0xbb, 0x4f, 0xf9, 0xe9, 0x74, - 0x52, 0xa8, 0xed, 0x03, 0xff, 0xa0, 0x0f, 0x8a, 0x42, 0x66, 0x2d, 0xe3, 0x9f, 0x76, 0x7f, 0x52, - 0x6c, 0xeb, 0x04, 0x9e, 0x11, 0x3e, 0xbb, 0x1b, 0xe3, 0xb1, 0xc2, 0x7a, 0x87, 0x28, 0xf2, 0xe1, - 0x10, 0xd6, 0x3b, 0x64, 0xa8, 0xbc, 0xf3, 0x84, 0xf5, 0xeb, 0xe9, 0xed, 0xc6, 0x77, 0x3f, 0x16, - 0x5e, 0x44, 0x78, 0x9f, 0x4d, 0x47, 0xf3, 0x0e, 0x1c, 0xb8, 0x98, 0xa6, 0x50, 0x8e, 0x67, 0x40, - 0x48, 0x14, 0x0e, 0xc3, 0x27, 0x59, 0x34, 0xfc, 0x3b, 0x6e, 0x20, 0x7e, 0x91, 0xb3, 0x3d, 0x91, - 0x30, 0x5a, 0xf9, 0x9b, 0xa9, 0x50, 0x90, 0xfe, 0x03, 0x39, 0x42, 0xd8, 0xd5, 0x92, 0x84, 0x5f, - 0x74, 0x0f, 0x33, 0xb3, 0xa1, 0x20, 0xc9, 0xde, 0xf7, 0x94, 0x88, 0xa3, 0xea, 0xcd, 0x70, 0x79, - 0x1e, 0x13, 0xe0, 0xcb, 0x69, 0x34, 0x16, 0x21, 0xc5, 0x97, 0x02, 0xa1, 0x74, 0xe0, 0x58, 0x32, - 0xe4, 0x3c, 0xce, 0x82, 0xea, 0xec, 0xe0, 0x24, 0xf5, 0x12, 0xca, 0x96, 0xd4, 0x75, 0xf6, 0x6d, - 0xbd, 0x8c, 0xa5, 0xa6, 0xae, 0x8b, 0x27, 0x6e, 0x80, 0xc7, 0x4b, 0xe8, 0x14, 0xbb, 0x0f, 0xd1, - 0x4d, 0x63, 0x41, 0x6f, 0x91, 0xb2, 0x31, 0xab, 0x37, 0x9b, 0xba, 0xcd, 0x2f, 0xf5, 0x1e, 0xdd, - 0xdc, 0x28, 0x5c, 0x76, 0x4c, 0x47, 0x6d, 0xd6, 0x88, 0x4b, 0x56, 0x73, 0xf4, 0x16, 0xa9, 0xe9, - 0x46, 0xad, 0x05, 0x94, 0x02, 0xcb, 0x78, 0x56, 0xb8, 0xcc, 0xe2, 0x61, 0x57, 0xeb, 0xaa, 0x61, - 0x10, 0xad, 0x6c, 0x8c, 0xaf, 0x3b, 0x84, 0x5d, 0x06, 0x66, 0xd8, 0x91, 0x20, 0x7b, 0x1b, 0xce, - 0xd0, 0x94, 0xf1, 0x12, 0x25, 0x50, 0x62, 0x0a, 0xc9, 0xbf, 0x91, 0x8d, 0xc9, 0xcf, 0x70, 0x88, - 0xd4, 0xc7, 0xed, 0xe9, 0xec, 0x16, 0x3d, 0x7d, 0x0d, 0xf5, 0xf1, 0x80, 0xa3, 0xfc, 0x82, 0x01, - 0x9c, 0xd9, 0xef, 0x32, 0x90, 0x78, 0x43, 0xc3, 0xa9, 0x70, 0x13, 0x9d, 0x5b, 0xa0, 0xdd, 0x14, - 0xdf, 0x99, 0xb9, 0x5d, 0x74, 0x66, 0x17, 0x7e, 0xf8, 0x35, 0x74, 0x06, 0xb0, 0x31, 0xdd, 0xda, - 0x07, 0x55, 0x41, 0x8c, 0x2a, 0x56, 0x55, 0x7c, 0xe7, 0x26, 0x95, 0xc7, 0x1f, 0x44, 0x83, 0xde, - 0x00, 0xd1, 0x89, 0xcd, 0x6f, 0x2e, 0xba, 0x8c, 0x33, 0x16, 0x00, 0x8e, 0x82, 0xc1, 0x85, 0x2c, - 0x18, 0x44, 0x2c, 0xc0, 0x4b, 0xfe, 0x77, 0xa9, 0x6e, 0x79, 0x22, 0x0e, 0x7c, 0x56, 0x7e, 0x11, - 0xf5, 0x69, 0xec, 0xa3, 0xb8, 0x4e, 0x75, 0xcf, 0x24, 0xc1, 0x48, 0x15, 0xb7, 0x8c, 0xfc, 0xc7, - 0xa9, 0xae, 0xe9, 0x29, 0x0e, 0xfb, 0xe7, 0x7d, 0x36, 0x93, 0xf0, 0x79, 0x7c, 0x12, 0xbd, 0x82, - 0x46, 0x75, 0x3f, 0x7e, 0x76, 0xcd, 0x0f, 0x3f, 0xa5, 0x8c, 0x08, 0x70, 0x18, 0x5d, 0x37, 0xd0, - 0x69, 0xd7, 0xf1, 0xd1, 0x72, 0x3d, 0xc4, 0xec, 0x5a, 0xc7, 0xd2, 0xd9, 0xb8, 0x54, 0x4e, 0xda, - 0x21, 0xf7, 0x31, 0x7b, 0xd1, 0xd2, 0x69, 0x05, 0xaa, 0xb3, 0x42, 0x0c, 0xb5, 0xb6, 0x66, 0x5a, - 0xab, 0x10, 0x65, 0x94, 0x0d, 0x4e, 0x65, 0x84, 0xc1, 0xef, 0xb8, 0x60, 0xfc, 0x20, 0x1a, 0x6a, - 0x34, 0x3b, 0xc4, 0x8b, 0xeb, 0xc8, 0xee, 0xfa, 0x94, 0x41, 0x0a, 0xf4, 0x6e, 0x48, 0x2e, 0x20, - 0x04, 0x44, 0x0e, 0x24, 0x0f, 0x81, 0x8b, 0x3d, 0xa5, 0x9f, 0x42, 0x16, 0x78, 0x77, 0x9d, 0x63, - 0x5a, 0xcd, 0x84, 0x54, 0x6b, 0x9a, 0x46, 0xa3, 0xe6, 0x10, 0xab, 0x05, 0x0d, 0x05, 0x67, 0x06, - 0xe5, 0x34, 0x50, 0xc0, 0xd5, 0x89, 0x3d, 0x63, 0x1a, 0x8d, 0x05, 0x62, 0xb5, 0x68, 0x53, 0x1f, - 0x45, 0x98, 0x37, 0xd5, 0x82, 0x43, 0x0f, 0xf6, 0x71, 0xe0, 0xcd, 0xa0, 0xf0, 0x8f, 0x60, 0xa7, - 0x21, 0xf0, 0x61, 0x05, 0x34, 0xc0, 0x82, 0xdb, 0x31, 0xa1, 0x81, 0x0b, 0x83, 0x82, 0x18, 0x08, - 0xe4, 0x75, 0x1a, 0x71, 0xef, 0x0a, 0xe6, 0xd5, 0xad, 0xf0, 0x5f, 0xf2, 0x9b, 0x99, 0xb8, 0x8c, - 0x1a, 0x7b, 0x52, 0x34, 0x7f, 0x5a, 0x4d, 0xef, 0x68, 0x5a, 0x1d, 0x31, 0x3a, 0xad, 0x9a, 0xda, - 0x6e, 0xd7, 0x96, 0xf5, 0x26, 0x3c, 0xab, 0x82, 0x85, 0x4f, 0x19, 0x32, 0x3a, 0xad, 0x62, 0xbb, - 0x3d, 0xc5, 0x80, 0xf8, 0x11, 0x34, 0x46, 0xe9, 0xa0, 0x93, 0x3c, 0xca, 0x2c, 0x50, 0x52, 0x06, - 0x10, 0x1d, 0xd6, 0xa5, 0x3d, 0x8b, 0xf2, 0x9c, 0x27, 0x5b, 0xab, 0x7a, 0x95, 0x3e, 0xc6, 0xcc, - 0xa6, 0x3d, 0xe7, 0xb1, 0x61, 0x93, 0x6b, 0xaf, 0xd2, 0xef, 0x96, 0x87, 0x18, 0xc8, 0x46, 0xa7, - 0xc5, 0x22, 0x62, 0xf5, 0x01, 0xd2, 0xfb, 0x8d, 0x2f, 0xa1, 0x61, 0xca, 0xc5, 0x13, 0x18, 0x0b, - 0x1b, 0xdb, 0xab, 0x84, 0xa0, 0xf8, 0x3a, 0x3a, 0x19, 0x80, 0x30, 0x1b, 0x94, 0x3d, 0x13, 0xe8, - 0x55, 0x62, 0x71, 0xf2, 0x97, 0x32, 0xc1, 0x3c, 0x1f, 0x07, 0xd0, 0x11, 0x67, 0x50, 0x9f, 0x69, - 0x35, 0x6a, 0x1d, 0xab, 0xc9, 0xc7, 0x5e, 0xce, 0xb4, 0x1a, 0x8b, 0x56, 0x13, 0x9f, 0x42, 0x39, - 0xda, 0x3b, 0xba, 0xc6, 0x87, 0x58, 0xaf, 0xda, 0x6e, 0x97, 0x35, 0x5c, 0x64, 0x1d, 0x02, 0x21, - 0x47, 0x6b, 0x75, 0xd8, 0xda, 0x33, 0xa7, 0x84, 0x5e, 0xb6, 0xe2, 0x45, 0x90, 0xd0, 0x4f, 0x10, - 0x88, 0x94, 0x1d, 0x04, 0x84, 0x58, 0x68, 0xb0, 0x2d, 0xd1, 0x58, 0x9f, 0x84, 0x59, 0x70, 0xa4, - 0xcf, 0x82, 0x6d, 0x62, 0x34, 0x5c, 0x42, 0xd8, 0xa7, 0x6a, 0x99, 0x9a, 0xbe, 0xac, 0x13, 0xf6, - 0xaa, 0xa3, 0x97, 0x5d, 0xfc, 0x46, 0xb1, 0xca, 0xa8, 0xcb, 0x64, 0x96, 0x43, 0xf0, 0xf3, 0x4c, - 0x09, 0x19, 0x1d, 0xac, 0x7d, 0xac, 0x6f, 0x99, 0x9d, 0x16, 0x42, 0x81, 0x66, 0x42, 0x79, 0x58, - 0x08, 0xe5, 0xb7, 0x32, 0xd1, 0x64, 0x2f, 0x07, 0x62, 0xd7, 0x4c, 0x23, 0xc4, 0x73, 0x39, 0xf9, - 0x97, 0x6b, 0x9e, 0xc7, 0xb9, 0x8f, 0x49, 0xe0, 0x21, 0x94, 0xc5, 0x57, 0x50, 0x9e, 0x7d, 0x51, - 0xb9, 0xc4, 0xed, 0x1d, 0x70, 0x11, 0xb3, 0xdb, 0xfa, 0xf2, 0x32, 0xf8, 0x93, 0x79, 0x68, 0x7c, - 0x09, 0xf5, 0x95, 0xe6, 0xaa, 0xd5, 0xe2, 0x9c, 0x7b, 0x53, 0x0c, 0xef, 0x4b, 0x34, 0xc3, 0xae, - 0xd9, 0xaa, 0x61, 0x2b, 0x2e, 0x12, 0x3f, 0x88, 0x72, 0xe5, 0x0a, 0x90, 0xb1, 0x57, 0x93, 0x03, - 0x9b, 0x1b, 0x85, 0x3e, 0xbd, 0xcd, 0xa8, 0x38, 0x0a, 0xea, 0xbd, 0x5d, 0x2e, 0x09, 0xee, 0x12, - 0xac, 0xde, 0xbb, 0xba, 0x06, 0xd7, 0xce, 0x8a, 0x87, 0xc6, 0x4f, 0xa1, 0xc1, 0x2a, 0xb1, 0x74, - 0xb5, 0x39, 0xd7, 0x81, 0xad, 0xa2, 0x10, 0x4a, 0xd1, 0x06, 0x78, 0xcd, 0x00, 0x84, 0x12, 0x20, - 0xc3, 0xe7, 0x51, 0x76, 0x5a, 0x37, 0xdc, 0x27, 0x0c, 0xe0, 0xe3, 0xbe, 0xa2, 0x1b, 0x8e, 0x02, - 0x50, 0xf9, 0xbf, 0xa5, 0xe3, 0x33, 0xe6, 0x1c, 0xc0, 0x70, 0xdc, 0xe5, 0x4d, 0x6f, 0x48, 0x09, - 0xb2, 0x7b, 0x50, 0x82, 0x65, 0x34, 0x52, 0xd4, 0x5a, 0xba, 0x51, 0x84, 0x9f, 0xf6, 0xec, 0x54, - 0x11, 0x86, 0xb7, 0xf0, 0x84, 0x2e, 0x84, 0xe6, 0xdf, 0xc3, 0x82, 0xf2, 0x52, 0x54, 0x4d, 0x65, - 0xb8, 0x5a, 0x6b, 0x59, 0xad, 0xd5, 0x59, 0xb2, 0x19, 0x25, 0xcc, 0x54, 0xfe, 0x9e, 0xf4, 0x16, - 0x49, 0x7e, 0x8e, 0xa2, 0xf4, 0xe5, 0xcf, 0xa5, 0xbb, 0xe7, 0x59, 0x3a, 0x92, 0x42, 0xf9, 0xb3, - 0x74, 0x4c, 0xd6, 0xa3, 0x3d, 0x49, 0xe2, 0x0a, 0xca, 0x33, 0x36, 0x9e, 0xab, 0x2d, 0xcc, 0x38, - 0x4c, 0x59, 0x61, 0xa6, 0x73, 0xd1, 0x78, 0x0e, 0x9d, 0x2c, 0x2e, 0x2f, 0x93, 0xba, 0xe3, 0x87, - 0x67, 0x9e, 0xf3, 0x03, 0xa5, 0xb2, 0x70, 0xb4, 0x1c, 0xef, 0x87, 0x77, 0x86, 0x80, 0x20, 0xb1, - 0xe5, 0xf0, 0x02, 0x3a, 0x1d, 0x86, 0x57, 0x99, 0x99, 0x9e, 0x15, 0x22, 0xd4, 0x46, 0x38, 0xb2, - 0xff, 0x94, 0x84, 0xb2, 0x71, 0xad, 0x84, 0xe9, 0xb4, 0xb7, 0x5b, 0x2b, 0x61, 0x6e, 0x8d, 0x2d, - 0x27, 0x7f, 0x39, 0x23, 0x26, 0x87, 0x3a, 0xba, 0x4e, 0x51, 0x37, 0x02, 0xae, 0xd0, 0xdb, 0x1d, - 0x32, 0x4f, 0xf1, 0x28, 0x1f, 0x5a, 0xc7, 0x72, 0xbd, 0x06, 0xbd, 0x28, 0x03, 0x00, 0x14, 0xfd, - 0xff, 0x3c, 0x4a, 0x5c, 0x46, 0xd9, 0xa2, 0xd5, 0x60, 0x26, 0xe8, 0x56, 0x0f, 0x9f, 0x54, 0xab, - 0x61, 0xc7, 0x3f, 0x7c, 0xa2, 0x2c, 0xe4, 0xef, 0x4e, 0x77, 0xc9, 0xe7, 0x74, 0x24, 0x27, 0x91, - 0x1f, 0x4c, 0x27, 0x65, 0x66, 0x3a, 0xac, 0xee, 0x5d, 0x6f, 0xb3, 0x70, 0x0e, 0xb7, 0xef, 0xdb, - 0x3e, 0x0b, 0x27, 0x21, 0x4b, 0xd4, 0xb1, 0x70, 0xde, 0x4c, 0x27, 0x25, 0xca, 0x3a, 0xb2, 0xb3, - 0x4c, 0x42, 0x6e, 0xae, 0x63, 0x5d, 0xf9, 0xa1, 0x74, 0x62, 0x7a, 0xb2, 0x63, 0xe9, 0xc8, 0x9f, - 0x4e, 0x27, 0xa6, 0x57, 0x3b, 0x92, 0x43, 0x29, 0x56, 0x5b, 0x8e, 0xc7, 0x12, 0x97, 0xce, 0xef, - 0xa6, 0xe3, 0x13, 0xda, 0x1d, 0x80, 0xaa, 0xec, 0x87, 0x97, 0x9c, 0x2b, 0xd0, 0xec, 0x9e, 0x04, - 0xda, 0xbb, 0xaf, 0x02, 0x3d, 0xb0, 0xb1, 0xf7, 0x6e, 0x15, 0xe8, 0x3e, 0x0c, 0xde, 0x23, 0x2c, - 0xd0, 0x47, 0x66, 0x59, 0x9a, 0x96, 0x5b, 0xba, 0xa1, 0xe1, 0xb3, 0xe8, 0xd4, 0x62, 0x75, 0x52, - 0xa9, 0xdd, 0x2a, 0xcf, 0x95, 0x6a, 0x8b, 0x73, 0xd5, 0xca, 0xe4, 0x44, 0x79, 0xaa, 0x3c, 0x59, - 0x1a, 0xed, 0xc1, 0x27, 0xd0, 0x88, 0x8f, 0x9a, 0x5e, 0x9c, 0x2d, 0xce, 0x8d, 0xa6, 0xf0, 0x18, - 0x1a, 0xf2, 0x81, 0xe3, 0xf3, 0x0b, 0xa3, 0xe9, 0x47, 0xde, 0x83, 0x06, 0xe0, 0x1e, 0x8a, 0x9d, - 0xc9, 0xe1, 0x41, 0x94, 0x9f, 0x1f, 0xaf, 0x4e, 0x2a, 0xb7, 0x81, 0x09, 0x42, 0xb9, 0xd2, 0xe4, - 0x1c, 0x65, 0x98, 0x7a, 0xe4, 0x7f, 0xa6, 0x10, 0xaa, 0x4e, 0x2d, 0x54, 0x38, 0xe1, 0x00, 0xea, - 0x2b, 0xcf, 0xdd, 0x2e, 0xce, 0x94, 0x29, 0x5d, 0x1e, 0x65, 0xe7, 0x2b, 0x93, 0xb4, 0x86, 0x7e, - 0xd4, 0x3b, 0x31, 0x33, 0x5f, 0x9d, 0x1c, 0x4d, 0x53, 0xa0, 0x32, 0x59, 0x2c, 0x8d, 0x66, 0x28, - 0xf0, 0x8e, 0x52, 0x5e, 0x98, 0x1c, 0xcd, 0xd2, 0x3f, 0x67, 0xaa, 0x0b, 0xc5, 0x85, 0xd1, 0x5e, - 0xfa, 0xe7, 0x14, 0xfc, 0x99, 0xa3, 0xcc, 0xaa, 0x93, 0x0b, 0xf0, 0xa3, 0x8f, 0x36, 0x61, 0xca, - 0xfd, 0x95, 0xa7, 0x28, 0xca, 0xba, 0x54, 0x56, 0x46, 0xfb, 0xe9, 0x0f, 0xca, 0x92, 0xfe, 0x40, - 0xb4, 0x71, 0xca, 0xe4, 0xec, 0xfc, 0xed, 0xc9, 0xd1, 0x01, 0xca, 0x6b, 0xf6, 0x16, 0x05, 0x0f, - 0xd2, 0x3f, 0x95, 0x59, 0xfa, 0xe7, 0x10, 0xe5, 0xa4, 0x4c, 0x16, 0x67, 0x2a, 0xc5, 0x85, 0xe9, - 0xd1, 0x61, 0xda, 0x1e, 0xe0, 0x39, 0xc2, 0x4a, 0xce, 0x15, 0x67, 0x27, 0x47, 0x47, 0x39, 0x4d, - 0x69, 0xa6, 0x3c, 0x77, 0x6b, 0x74, 0x0c, 0x1a, 0xf2, 0xda, 0x2c, 0xfc, 0xc0, 0xb4, 0x00, 0xfc, - 0x75, 0xe2, 0x91, 0x0f, 0xa3, 0xdc, 0x7c, 0x15, 0x4e, 0x9e, 0xcf, 0xa0, 0x13, 0xf3, 0xd5, 0xda, - 0xc2, 0x6b, 0x95, 0xc9, 0x90, 0xbc, 0xc7, 0xd0, 0x90, 0x8b, 0x98, 0x29, 0xcf, 0x2d, 0x7e, 0x80, - 0x49, 0xdb, 0x05, 0xcd, 0x16, 0x27, 0xe6, 0xab, 0xa3, 0x69, 0xda, 0x2b, 0x2e, 0xe8, 0x4e, 0x79, - 0xae, 0x34, 0x7f, 0xa7, 0x3a, 0x9a, 0x79, 0xe4, 0x2e, 0x1a, 0x64, 0x49, 0x6e, 0xe6, 0x2d, 0xbd, - 0xa1, 0x1b, 0xf8, 0x02, 0x3a, 0x5b, 0x9a, 0xbc, 0x5d, 0x9e, 0x98, 0xac, 0xcd, 0x2b, 0xe5, 0x9b, - 0xe5, 0xb9, 0x50, 0x4d, 0xa7, 0xd0, 0x58, 0x10, 0x5d, 0xac, 0x94, 0x47, 0x53, 0xf8, 0x34, 0xc2, - 0x41, 0xf0, 0x2b, 0xc5, 0xd9, 0xa9, 0xd1, 0x34, 0x96, 0xd0, 0xc9, 0x20, 0xbc, 0x3c, 0xb7, 0xb0, - 0x38, 0x37, 0x39, 0x9a, 0x79, 0xe4, 0xc7, 0x53, 0xe8, 0x54, 0x6c, 0x20, 0x34, 0x2c, 0xa3, 0x8b, - 0x93, 0x33, 0xc5, 0xea, 0x42, 0x79, 0xa2, 0x3a, 0x59, 0x54, 0x26, 0xa6, 0x6b, 0x13, 0xc5, 0x85, - 0xc9, 0x9b, 0xf3, 0xca, 0x6b, 0xb5, 0x9b, 0x93, 0x73, 0x93, 0x4a, 0x71, 0x66, 0xb4, 0x07, 0x3f, - 0x88, 0x0a, 0x09, 0x34, 0xd5, 0xc9, 0x89, 0x45, 0xa5, 0xbc, 0xf0, 0xda, 0x68, 0x0a, 0x3f, 0x80, - 0x2e, 0x24, 0x12, 0xd1, 0xdf, 0xa3, 0x69, 0x7c, 0x11, 0x9d, 0x4b, 0x22, 0x79, 0x75, 0x66, 0x34, - 0xf3, 0xc8, 0xf7, 0xa7, 0x10, 0x8e, 0x46, 0xb2, 0xc2, 0xf7, 0xa3, 0xf3, 0x54, 0x2f, 0x6a, 0xc9, - 0x0d, 0x7c, 0x00, 0x5d, 0x88, 0xa5, 0x10, 0x9a, 0x57, 0x40, 0xf7, 0x25, 0x90, 0xf0, 0xc6, 0x9d, - 0x47, 0x52, 0x3c, 0x01, 0x34, 0xed, 0x57, 0x52, 0xe8, 0x54, 0xec, 0x31, 0x38, 0xbe, 0x8c, 0x1e, - 0x2a, 0x96, 0x66, 0x69, 0xdf, 0x4c, 0x2c, 0x94, 0xe7, 0xe7, 0xaa, 0xb5, 0xd9, 0xa9, 0x62, 0x8d, - 0x6a, 0xdf, 0x62, 0x35, 0xd4, 0x9b, 0x97, 0x90, 0xdc, 0x85, 0x72, 0x62, 0xba, 0x38, 0x77, 0x93, - 0x0e, 0x3f, 0xfc, 0x10, 0xba, 0x3f, 0x91, 0x6e, 0x72, 0xae, 0x38, 0x3e, 0x33, 0x59, 0x1a, 0x4d, - 0xe3, 0x87, 0xd1, 0x03, 0x89, 0x54, 0xa5, 0x72, 0x95, 0x91, 0x65, 0xc6, 0x4b, 0x6f, 0xfd, 0x87, - 0x8b, 0x3d, 0x6f, 0x7d, 0xfd, 0x62, 0xea, 0xf7, 0xbe, 0x7e, 0x31, 0xf5, 0x27, 0x5f, 0xbf, 0x98, - 0xfa, 0xe0, 0xf5, 0x9d, 0x44, 0x28, 0x63, 0xd3, 0xd6, 0x52, 0x0e, 0x8e, 0xa4, 0x9e, 0xfc, 0xbf, - 0x01, 0x00, 0x00, 0xff, 0xff, 0x5d, 0x51, 0x35, 0xf9, 0x99, 0x6e, 0x01, 0x00, + // 16423 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6d, 0x74, 0x24, 0x49, + 0x72, 0x18, 0x86, 0xfe, 0x40, 0x03, 0x08, 0x7c, 0x0c, 0x90, 0xf3, 0x55, 0x33, 0x3b, 0x33, 0xd8, + 0xad, 0xbd, 0x9d, 0x9b, 0xd9, 0xdb, 0x9d, 0xb9, 0x9d, 0x9d, 0xdd, 0xbd, 0xfd, 0xba, 0xbd, 0x06, + 0x1a, 0x18, 0xf4, 0x0e, 0xbe, 0xb6, 0x1a, 0x33, 0x73, 0x7b, 0x47, 0x5e, 0xb3, 0xd0, 0x95, 0x00, + 0x6a, 0xd1, 0x5d, 0xd5, 0xac, 0xaa, 0x1e, 0x0c, 0xd6, 0x5f, 0x3c, 0x99, 0xa2, 0x48, 0x79, 0xef, + 0x74, 0x3e, 0x9a, 0x22, 0x45, 0xca, 0x16, 0x29, 0x59, 0x36, 0x45, 0x53, 0xa4, 0x28, 0xd1, 0x94, + 0x28, 0x99, 0xcf, 0xa2, 0xcf, 0x1f, 0x2b, 0xf3, 0x89, 0x4f, 0x92, 0x6d, 0x3d, 0x3d, 0x5b, 0xc6, + 0xc9, 0xb4, 0xf5, 0x07, 0xcf, 0x7e, 0x8f, 0x4f, 0xe6, 0xb3, 0xce, 0xb2, 0xec, 0xe7, 0x97, 0x91, + 0x59, 0x55, 0x59, 0x5f, 0x8d, 0xcf, 0x15, 0x16, 0x0b, 0xfc, 0x99, 0x41, 0x47, 0x44, 0x46, 0x66, + 0x45, 0x46, 0x66, 0x46, 0x66, 0x46, 0x46, 0xc0, 0x4d, 0x8f, 0x36, 0x69, 0xdb, 0x76, 0xbc, 0xdb, + 0x4d, 0xba, 0xaa, 0x37, 0x36, 0x6f, 0x7b, 0x9b, 0x6d, 0xea, 0xde, 0xa6, 0x8f, 0xa9, 0xe5, 0xf9, + 0xff, 0xdd, 0x6a, 0x3b, 0xb6, 0x67, 0x93, 0x12, 0xff, 0x75, 0xf9, 0xdc, 0xaa, 0xbd, 0x6a, 0x23, + 0xe8, 0x36, 0xfb, 0x8b, 0x63, 0x2f, 0x5f, 0x59, 0xb5, 0xed, 0xd5, 0x26, 0xbd, 0x8d, 0xbf, 0x96, + 0x3b, 0x2b, 0xb7, 0x5d, 0xcf, 0xe9, 0x34, 0x3c, 0x81, 0x1d, 0x8f, 0x63, 0x3d, 0xb3, 0x45, 0x5d, + 0x4f, 0x6f, 0xb5, 0x05, 0xc1, 0xb5, 0x38, 0xc1, 0x86, 0xa3, 0xb7, 0xdb, 0xd4, 0x11, 0x95, 0x5f, + 0x7e, 0x26, 0xbd, 0x9d, 0xf8, 0xaf, 0x20, 0x79, 0x31, 0x9d, 0xc4, 0x67, 0x14, 0xe3, 0xa8, 0x7e, + 0x37, 0x0f, 0xfd, 0x73, 0xd4, 0xd3, 0x0d, 0xdd, 0xd3, 0xc9, 0x15, 0xe8, 0xad, 0x5a, 0x06, 0x7d, + 0xa2, 0xe4, 0x9e, 0xce, 0xdd, 0x28, 0x4c, 0x94, 0xb6, 0xb7, 0xc6, 0xf3, 0xd4, 0xd4, 0x38, 0x90, + 0x5c, 0x85, 0xe2, 0xd2, 0x66, 0x9b, 0x2a, 0xf9, 0xa7, 0x73, 0x37, 0x06, 0x26, 0x06, 0xb6, 0xb7, + 0xc6, 0x7b, 0x51, 0x16, 0x1a, 0x82, 0xc9, 0x33, 0x90, 0xaf, 0x56, 0x94, 0x02, 0x22, 0xc7, 0xb6, + 0xb7, 0xc6, 0x87, 0x3b, 0xa6, 0xf1, 0x82, 0xdd, 0x32, 0x3d, 0xda, 0x6a, 0x7b, 0x9b, 0x5a, 0xbe, + 0x5a, 0x21, 0xd7, 0xa1, 0x38, 0x69, 0x1b, 0x54, 0x29, 0x22, 0x11, 0xd9, 0xde, 0x1a, 0x1f, 0x69, + 0xd8, 0x06, 0x95, 0xa8, 0x10, 0x4f, 0xbe, 0x02, 0xc5, 0x25, 0xb3, 0x45, 0x95, 0xde, 0xa7, 0x73, + 0x37, 0x06, 0xef, 0x5c, 0xbe, 0xc5, 0xa5, 0x72, 0xcb, 0x97, 0xca, 0xad, 0x25, 0x5f, 0x6c, 0x13, + 0xa3, 0x1f, 0x6f, 0x8d, 0xf7, 0x6c, 0x6f, 0x8d, 0x17, 0x99, 0x24, 0xbf, 0xf3, 0xfd, 0xf1, 0x9c, + 0x86, 0x25, 0xc9, 0x5b, 0x30, 0x38, 0xd9, 0xec, 0xb8, 0x1e, 0x75, 0xe6, 0xf5, 0x16, 0x55, 0x4a, + 0x58, 0xe1, 0xe5, 0xed, 0xad, 0xf1, 0x0b, 0x0d, 0x0e, 0xae, 0x5b, 0x7a, 0x4b, 0xae, 0x58, 0x26, + 0x57, 0xff, 0x46, 0x0e, 0xce, 0xd4, 0xa8, 0xeb, 0x9a, 0xb6, 0x15, 0xc8, 0xe6, 0x39, 0x18, 0x10, + 0xa0, 0x6a, 0x05, 0xe5, 0x33, 0x30, 0xd1, 0xb7, 0xbd, 0x35, 0x5e, 0x70, 0x4d, 0x43, 0x0b, 0x31, + 0xe4, 0x8b, 0xd0, 0xf7, 0xc8, 0xf4, 0xd6, 0xe6, 0xa6, 0xcb, 0x42, 0x4e, 0x17, 0xb6, 0xb7, 0xc6, + 0xc9, 0x86, 0xe9, 0xad, 0xd5, 0x5b, 0x2b, 0xba, 0x54, 0xa1, 0x4f, 0x46, 0x66, 0x61, 0x74, 0xd1, + 0x31, 0x1f, 0xeb, 0x1e, 0xbd, 0x4f, 0x37, 0x17, 0xed, 0xa6, 0xd9, 0xd8, 0x14, 0x52, 0x7c, 0x7a, + 0x7b, 0x6b, 0xfc, 0x4a, 0x9b, 0xe3, 0xea, 0xeb, 0x74, 0xb3, 0xde, 0x46, 0xac, 0xc4, 0x24, 0x51, + 0x52, 0xfd, 0x9b, 0x25, 0x18, 0x7a, 0xe0, 0x52, 0x27, 0x68, 0xf7, 0x75, 0x28, 0xb2, 0xdf, 0xa2, + 0xc9, 0x28, 0xf3, 0x8e, 0x4b, 0x1d, 0x59, 0xe6, 0x0c, 0x4f, 0x6e, 0x42, 0xef, 0xac, 0xbd, 0x6a, + 0x5a, 0xa2, 0xd9, 0x67, 0xb7, 0xb7, 0xc6, 0xcf, 0x34, 0x19, 0x40, 0xa2, 0xe4, 0x14, 0xe4, 0xcb, + 0x30, 0x54, 0x6d, 0x31, 0x1d, 0xb2, 0x2d, 0xdd, 0xb3, 0x1d, 0xd1, 0x5a, 0x94, 0xae, 0x29, 0xc1, + 0xa5, 0x82, 0x11, 0x7a, 0xf2, 0x06, 0x40, 0xf9, 0x51, 0x4d, 0xb3, 0x9b, 0xb4, 0xac, 0xcd, 0x0b, + 0x65, 0xc0, 0xd2, 0xfa, 0x86, 0x5b, 0x77, 0xec, 0x26, 0xad, 0xeb, 0x8e, 0x5c, 0xad, 0x44, 0x4d, + 0xa6, 0x60, 0xa4, 0xdc, 0x68, 0x50, 0xd7, 0xd5, 0xe8, 0x8f, 0x76, 0xa8, 0xeb, 0xb9, 0x4a, 0xef, + 0xd3, 0x85, 0x1b, 0x03, 0x13, 0x57, 0xb7, 0xb7, 0xc6, 0x2f, 0xe9, 0x88, 0xa9, 0x3b, 0x02, 0x25, + 0xb1, 0x88, 0x15, 0x22, 0x13, 0x30, 0x5c, 0xfe, 0xb0, 0xe3, 0xd0, 0xaa, 0x41, 0x2d, 0xcf, 0xf4, + 0x36, 0x85, 0x86, 0x5c, 0xd9, 0xde, 0x1a, 0x57, 0x74, 0x86, 0xa8, 0x9b, 0x02, 0x23, 0x31, 0x89, + 0x16, 0x21, 0x0b, 0x30, 0x76, 0x6f, 0x72, 0xb1, 0x46, 0x9d, 0xc7, 0x66, 0x83, 0x96, 0x1b, 0x0d, + 0xbb, 0x63, 0x79, 0x4a, 0x1f, 0xf2, 0x79, 0x66, 0x7b, 0x6b, 0xfc, 0xea, 0x6a, 0xa3, 0x5d, 0x77, + 0x39, 0xb6, 0xae, 0x73, 0xb4, 0xc4, 0x2c, 0x59, 0x96, 0x7c, 0x0d, 0x86, 0x97, 0x1c, 0xa6, 0x85, + 0x46, 0x85, 0x32, 0xb8, 0xd2, 0x8f, 0xfa, 0x7f, 0xe1, 0x96, 0x98, 0x80, 0x38, 0xd4, 0xef, 0x59, + 0xde, 0x58, 0x8f, 0x17, 0xa8, 0x1b, 0x88, 0x93, 0x1b, 0x1b, 0x61, 0x45, 0x28, 0x28, 0xec, 0xe3, + 0x4d, 0x87, 0x1a, 0x09, 0x6d, 0x1b, 0xc0, 0x36, 0xdf, 0xdc, 0xde, 0x1a, 0x7f, 0xce, 0x11, 0x34, + 0xf5, 0xae, 0x6a, 0x97, 0xc9, 0x8a, 0x4c, 0x41, 0x3f, 0xd3, 0xa6, 0xfb, 0xa6, 0x65, 0x28, 0xf0, + 0x74, 0xee, 0xc6, 0xc8, 0x9d, 0x51, 0xbf, 0xf5, 0x3e, 0x7c, 0xe2, 0xe2, 0xf6, 0xd6, 0xf8, 0x59, + 0xa6, 0x83, 0xf5, 0x75, 0xd3, 0x92, 0xa7, 0x88, 0xa0, 0x28, 0x1b, 0x45, 0x13, 0xb6, 0x87, 0x43, + 0x77, 0x30, 0x1c, 0x45, 0xcb, 0xb6, 0x17, 0x1f, 0xb6, 0x3e, 0x19, 0x99, 0x84, 0xe1, 0x09, 0xdb, + 0xab, 0x5a, 0xae, 0xa7, 0x5b, 0x0d, 0x5a, 0xad, 0x28, 0x43, 0x58, 0x0e, 0xd5, 0x82, 0x95, 0x33, + 0x05, 0xa6, 0x1e, 0x99, 0x94, 0xa2, 0x65, 0xd4, 0x7f, 0x5e, 0x84, 0x11, 0xd6, 0x27, 0xd2, 0xf0, + 0x29, 0xb3, 0x99, 0x80, 0x41, 0x58, 0x2d, 0x6e, 0x5b, 0x6f, 0x50, 0x31, 0x92, 0xf0, 0x2b, 0x2c, + 0x1f, 0x28, 0xf1, 0x8c, 0xd3, 0x93, 0x9b, 0xd0, 0xcf, 0x41, 0xd5, 0x8a, 0x18, 0x5c, 0xc3, 0xdb, + 0x5b, 0xe3, 0x03, 0x2e, 0xc2, 0xea, 0xa6, 0xa1, 0x05, 0x68, 0xa6, 0xdd, 0xfc, 0xef, 0x19, 0xdb, + 0xf5, 0x18, 0x73, 0x31, 0xb6, 0xf0, 0x33, 0x44, 0x81, 0x35, 0x81, 0x92, 0xb5, 0x3b, 0x5a, 0x88, + 0xbc, 0x0e, 0xc0, 0x21, 0x65, 0xc3, 0x70, 0xc4, 0x00, 0xbb, 0xb4, 0xbd, 0x35, 0x7e, 0x5e, 0xb0, + 0xd0, 0x0d, 0x43, 0x1e, 0x9d, 0x12, 0x31, 0x69, 0xc1, 0x10, 0xff, 0x35, 0xab, 0x2f, 0xd3, 0x26, + 0x1f, 0x5d, 0x83, 0x77, 0x6e, 0xf8, 0x9d, 0x18, 0x95, 0xce, 0x2d, 0x99, 0x74, 0xca, 0xf2, 0x9c, + 0xcd, 0x89, 0x71, 0x31, 0x21, 0x5f, 0x14, 0x55, 0x35, 0x11, 0x27, 0x4f, 0x05, 0x72, 0x19, 0x36, + 0x4f, 0x4f, 0xdb, 0xce, 0x86, 0xee, 0x18, 0xd4, 0x98, 0xd8, 0x94, 0xe7, 0xe9, 0x15, 0x1f, 0x5c, + 0x5f, 0x96, 0x55, 0x4f, 0x26, 0x67, 0x9d, 0xce, 0xb9, 0xd5, 0x3a, 0xcb, 0xa8, 0x72, 0x7d, 0x09, + 0x69, 0xb9, 0x9d, 0xe5, 0xb8, 0x9a, 0x45, 0xcb, 0xb0, 0xa9, 0x80, 0x03, 0x1e, 0x52, 0x87, 0x4d, + 0xe2, 0x38, 0xea, 0xc4, 0x54, 0x20, 0x98, 0x3c, 0xe6, 0x98, 0x24, 0x0f, 0x51, 0xe4, 0xf2, 0x3b, + 0x30, 0x96, 0x10, 0x05, 0x19, 0x85, 0xc2, 0x3a, 0xdd, 0xe4, 0xea, 0xa2, 0xb1, 0x3f, 0xc9, 0x39, + 0xe8, 0x7d, 0xac, 0x37, 0x3b, 0x62, 0x09, 0xd5, 0xf8, 0x8f, 0x37, 0xf2, 0x5f, 0xca, 0xb1, 0x15, + 0x87, 0x4c, 0xda, 0x96, 0x45, 0x1b, 0x9e, 0xbc, 0xe8, 0xbc, 0x0a, 0x03, 0xb3, 0x76, 0x43, 0x6f, + 0x62, 0x3f, 0x72, 0xbd, 0x53, 0xb6, 0xb7, 0xc6, 0xcf, 0xb1, 0x0e, 0xbc, 0xd5, 0x64, 0x18, 0xa9, + 0x4d, 0x21, 0x29, 0x53, 0x00, 0x8d, 0xb6, 0x6c, 0x8f, 0x62, 0xc1, 0x7c, 0xa8, 0x00, 0x58, 0xd0, + 0x41, 0x94, 0xac, 0x00, 0x21, 0x31, 0xb9, 0x0d, 0xfd, 0x8b, 0x6c, 0x9d, 0x6d, 0xd8, 0x4d, 0xa1, + 0x7c, 0xb8, 0x14, 0xe0, 0xda, 0x2b, 0x8f, 0x55, 0x9f, 0x48, 0x9d, 0x81, 0x91, 0xc9, 0xa6, 0x49, + 0x2d, 0x4f, 0x6e, 0x35, 0x1b, 0xc9, 0xe5, 0x55, 0x6a, 0x79, 0x72, 0xab, 0x71, 0xcc, 0xeb, 0x0c, + 0x2a, 0xb7, 0x3a, 0x20, 0x55, 0x7f, 0xbf, 0x00, 0x97, 0xee, 0x77, 0x96, 0xa9, 0x63, 0x51, 0x8f, + 0xba, 0x62, 0x41, 0x0e, 0xb8, 0xce, 0xc3, 0x58, 0x02, 0x29, 0xb8, 0xe3, 0x42, 0xb9, 0x1e, 0x20, + 0xeb, 0x62, 0x8d, 0x97, 0x67, 0xdb, 0x44, 0x51, 0x32, 0x03, 0x67, 0x42, 0x20, 0x6b, 0x84, 0xab, + 0xe4, 0x71, 0x29, 0xb9, 0xb6, 0xbd, 0x35, 0x7e, 0x59, 0xe2, 0xc6, 0x9a, 0x2d, 0x6b, 0x70, 0xbc, + 0x18, 0xb9, 0x0f, 0xa3, 0x21, 0xe8, 0x9e, 0x63, 0x77, 0xda, 0xae, 0x52, 0x40, 0x56, 0xe3, 0xdb, + 0x5b, 0xe3, 0x4f, 0x49, 0xac, 0x56, 0x11, 0x29, 0x2f, 0xe0, 0xf1, 0x82, 0xe4, 0xc7, 0x73, 0x32, + 0x37, 0x31, 0x0a, 0x8b, 0x38, 0x0a, 0x5f, 0xf3, 0x47, 0x61, 0xa6, 0x90, 0x6e, 0xc5, 0x4b, 0x8a, + 0x41, 0x19, 0x6b, 0x46, 0x62, 0x50, 0x26, 0x6a, 0xbc, 0x3c, 0x09, 0xe7, 0x53, 0x79, 0xed, 0x49, + 0xab, 0xff, 0x69, 0x41, 0xe6, 0xb2, 0x68, 0x1b, 0x41, 0x67, 0x2e, 0xc8, 0x9d, 0xb9, 0x68, 0x1b, + 0x38, 0xd5, 0xe7, 0xc2, 0xb5, 0x53, 0x6a, 0x6c, 0xdb, 0x36, 0xe2, 0xb3, 0x7e, 0xb2, 0x2c, 0xf9, + 0x06, 0x5c, 0x48, 0x00, 0xf9, 0x74, 0xcd, 0xb5, 0xff, 0xfa, 0xf6, 0xd6, 0xb8, 0x9a, 0xc2, 0x35, + 0x3e, 0x7b, 0x67, 0x70, 0x21, 0x3a, 0x5c, 0x94, 0xa4, 0x6e, 0x5b, 0x9e, 0x6e, 0x5a, 0xc2, 0xb8, + 0xe4, 0xa3, 0xe4, 0xf3, 0xdb, 0x5b, 0xe3, 0xcf, 0xca, 0x3a, 0xe8, 0xd3, 0xc4, 0x1b, 0x9f, 0xc5, + 0x87, 0x18, 0xa0, 0xa4, 0xa0, 0xaa, 0x2d, 0x7d, 0xd5, 0xb7, 0x98, 0x6f, 0x6c, 0x6f, 0x8d, 0x7f, + 0x2e, 0xb5, 0x0e, 0x93, 0x51, 0xc9, 0x2b, 0x74, 0x16, 0x27, 0xa2, 0x01, 0x09, 0x71, 0xf3, 0xb6, + 0x41, 0xf1, 0x1b, 0x7a, 0x91, 0xbf, 0xba, 0xbd, 0x35, 0x7e, 0x4d, 0xe2, 0x6f, 0xd9, 0x06, 0x8d, + 0x37, 0x3f, 0xa5, 0xb4, 0xfa, 0x37, 0x0a, 0x70, 0xad, 0x56, 0x9e, 0x9b, 0xad, 0x1a, 0xbe, 0x49, + 0xb3, 0xe8, 0xd8, 0x8f, 0x4d, 0x43, 0x1a, 0xbd, 0xcb, 0x70, 0x31, 0x86, 0x9a, 0x42, 0x2b, 0x2a, + 0x30, 0xa6, 0xf1, 0xdb, 0x7c, 0x73, 0xa9, 0x2d, 0x68, 0xea, 0xdc, 0xd4, 0x8a, 0x2e, 0xda, 0x59, + 0x8c, 0x58, 0x1f, 0xc5, 0x50, 0xb5, 0x35, 0xdb, 0xf1, 0x1a, 0x1d, 0x4f, 0x28, 0x01, 0xf6, 0x51, + 0xa2, 0x0e, 0x57, 0x10, 0x75, 0xa9, 0xc2, 0xe7, 0x43, 0x7e, 0x2a, 0x07, 0xa3, 0x65, 0xcf, 0x73, + 0xcc, 0xe5, 0x8e, 0x47, 0xe7, 0xf4, 0x76, 0xdb, 0xb4, 0x56, 0x71, 0xac, 0x0f, 0xde, 0x79, 0x2b, + 0x58, 0x23, 0xbb, 0x4a, 0xe2, 0x56, 0xbc, 0xb8, 0x34, 0x44, 0x75, 0x1f, 0x55, 0x6f, 0x71, 0x9c, + 0x3c, 0x44, 0xe3, 0xe5, 0xd8, 0x10, 0x4d, 0xe5, 0xb5, 0xa7, 0x21, 0xfa, 0xdd, 0x02, 0x5c, 0x59, + 0x58, 0xf7, 0x74, 0x8d, 0xba, 0x76, 0xc7, 0x69, 0x50, 0xf7, 0x41, 0xdb, 0xd0, 0x3d, 0x1a, 0x8e, + 0xd4, 0x71, 0xe8, 0x2d, 0x1b, 0x06, 0x35, 0x90, 0x5d, 0x2f, 0xdf, 0xf6, 0xe9, 0x0c, 0xa0, 0x71, + 0x38, 0x79, 0x0e, 0xfa, 0x44, 0x19, 0xe4, 0xde, 0x3b, 0x31, 0xb8, 0xbd, 0x35, 0xde, 0xd7, 0xe1, + 0x20, 0xcd, 0xc7, 0x31, 0xb2, 0x0a, 0x6d, 0x52, 0x46, 0x56, 0x08, 0xc9, 0x0c, 0x0e, 0xd2, 0x7c, + 0x1c, 0x79, 0x0f, 0x46, 0x90, 0x6d, 0xd0, 0x1e, 0x31, 0xf7, 0x9d, 0xf3, 0xa5, 0x2b, 0x37, 0x96, + 0x2f, 0x4d, 0xd8, 0x9a, 0xba, 0xe3, 0x17, 0xd0, 0x62, 0x0c, 0xc8, 0x23, 0x18, 0x15, 0x8d, 0x08, + 0x99, 0xf6, 0x76, 0x61, 0x7a, 0x7e, 0x7b, 0x6b, 0x7c, 0x4c, 0xb4, 0x5f, 0x62, 0x9b, 0x60, 0xc2, + 0x18, 0x8b, 0x66, 0x87, 0x8c, 0x4b, 0x3b, 0x31, 0x16, 0x5f, 0x2c, 0x33, 0x8e, 0x33, 0x51, 0xdf, + 0x87, 0x21, 0xb9, 0x20, 0xb9, 0x80, 0x5b, 0x6b, 0x3e, 0x4e, 0x70, 0x53, 0x6e, 0x1a, 0xb8, 0x9f, + 0x7e, 0x09, 0x06, 0x2b, 0xd4, 0x6d, 0x38, 0x66, 0x9b, 0x59, 0x0d, 0x42, 0xc9, 0xcf, 0x6c, 0x6f, + 0x8d, 0x0f, 0x1a, 0x21, 0x58, 0x93, 0x69, 0xd4, 0xff, 0x2b, 0x07, 0x17, 0x18, 0xef, 0xb2, 0xeb, + 0x9a, 0xab, 0x56, 0x4b, 0x5e, 0xb6, 0x5f, 0x80, 0x52, 0x0d, 0xeb, 0x13, 0x35, 0x9d, 0xdb, 0xde, + 0x1a, 0x1f, 0xe5, 0x2d, 0x90, 0xf4, 0x50, 0xd0, 0x04, 0xfb, 0xca, 0xfc, 0x0e, 0xfb, 0x4a, 0x66, + 0xd2, 0x7a, 0xba, 0xe3, 0x99, 0xd6, 0x6a, 0xcd, 0xd3, 0xbd, 0x8e, 0x1b, 0x31, 0x69, 0x05, 0xa6, + 0xee, 0x22, 0x2a, 0x62, 0xd2, 0x46, 0x0a, 0x91, 0x77, 0x60, 0x68, 0xca, 0x32, 0x42, 0x26, 0x7c, + 0x42, 0x7c, 0x8a, 0x59, 0x9a, 0x14, 0xe1, 0x49, 0x16, 0x91, 0x02, 0xea, 0x5f, 0xce, 0x81, 0xc2, + 0x37, 0x81, 0xb3, 0xa6, 0xeb, 0xcd, 0xd1, 0xd6, 0xb2, 0x34, 0x3b, 0x4d, 0xfb, 0xbb, 0x4a, 0x86, + 0x93, 0xd6, 0x22, 0x34, 0x05, 0xc4, 0xae, 0xb2, 0x69, 0xba, 0x89, 0xed, 0x47, 0xac, 0x14, 0xa9, + 0x42, 0x1f, 0xe7, 0xcc, 0x6d, 0x89, 0xc1, 0x3b, 0x8a, 0xaf, 0x08, 0xf1, 0xaa, 0xb9, 0x32, 0xb4, + 0x38, 0xb1, 0xbc, 0xa1, 0x11, 0xe5, 0xd5, 0xbf, 0x92, 0x87, 0xd1, 0x78, 0x21, 0xf2, 0x08, 0xfa, + 0xdf, 0xb5, 0x4d, 0x8b, 0x1a, 0x0b, 0x16, 0xb6, 0xb0, 0xfb, 0xe1, 0x88, 0x6f, 0x8b, 0x9f, 0xfd, + 0x00, 0xcb, 0xd4, 0x65, 0x0b, 0x16, 0xcf, 0x4a, 0x02, 0x66, 0xe4, 0x6b, 0x30, 0xc0, 0x6c, 0xc0, + 0xc7, 0xc8, 0x39, 0xbf, 0x23, 0xe7, 0xa7, 0x05, 0xe7, 0x73, 0x0e, 0x2f, 0x94, 0x64, 0x1d, 0xb2, + 0x63, 0x7a, 0xa5, 0x51, 0xdd, 0xb5, 0x2d, 0xd1, 0xf3, 0xa8, 0x57, 0x0e, 0x42, 0x64, 0xbd, 0xe2, + 0x34, 0xcc, 0x74, 0xe5, 0x1f, 0x8b, 0xdd, 0x20, 0xed, 0x5d, 0xb8, 0xac, 0xe2, 0x3d, 0x20, 0x11, + 0xab, 0x3f, 0x91, 0x87, 0x17, 0x43, 0x91, 0x69, 0xf4, 0xb1, 0x49, 0x37, 0x84, 0x38, 0xd7, 0xcc, + 0xb6, 0xd8, 0xb3, 0x32, 0x95, 0x77, 0x27, 0xd7, 0x74, 0x6b, 0x95, 0x1a, 0xe4, 0x26, 0xf4, 0x6a, + 0x76, 0x93, 0xba, 0x4a, 0x0e, 0xcd, 0x35, 0x9c, 0x4e, 0x1c, 0x06, 0x90, 0x0f, 0x3d, 0x90, 0x82, + 0xd8, 0x50, 0x5a, 0x72, 0x74, 0xd3, 0xf3, 0x7b, 0xb6, 0x9c, 0xec, 0xd9, 0x5d, 0xd4, 0x78, 0x8b, + 0xf3, 0xe0, 0x73, 0x3e, 0x0a, 0xc2, 0x43, 0x80, 0x2c, 0x08, 0x4e, 0x72, 0xf9, 0x75, 0x18, 0x94, + 0x88, 0xf7, 0x34, 0xa9, 0xff, 0x76, 0x51, 0xd6, 0x75, 0xbf, 0x59, 0x42, 0xd7, 0x6f, 0x33, 0x1d, + 0x75, 0x5d, 0x66, 0x55, 0x70, 0x25, 0x17, 0x9a, 0x88, 0xa0, 0xa8, 0x26, 0x22, 0x88, 0xbc, 0x0c, + 0xfd, 0x9c, 0x45, 0xb0, 0x7f, 0xc5, 0xbd, 0xaf, 0x83, 0xb0, 0xe8, 0xd2, 0x1c, 0x10, 0x92, 0x5f, + 0xc9, 0xc1, 0xd5, 0xae, 0x92, 0x40, 0x65, 0x18, 0xbc, 0xf3, 0xca, 0xbe, 0xc4, 0x38, 0xf1, 0xe2, + 0xf6, 0xd6, 0xf8, 0xcd, 0x56, 0x40, 0x52, 0x77, 0x24, 0x9a, 0x7a, 0x83, 0x13, 0x49, 0xed, 0xea, + 0xde, 0x14, 0x66, 0x3c, 0xf2, 0x4a, 0xa7, 0xf1, 0xe8, 0xc8, 0x6a, 0x6c, 0xfa, 0x8d, 0x2c, 0x86, + 0xc6, 0xa3, 0xf8, 0xde, 0x15, 0x9f, 0x24, 0xa5, 0x9a, 0x0c, 0x2e, 0xa4, 0x01, 0x17, 0x39, 0xa6, + 0xa2, 0x6f, 0x2e, 0xac, 0xcc, 0xd9, 0x96, 0xb7, 0xe6, 0x57, 0xd0, 0x2b, 0x9f, 0xbd, 0x60, 0x05, + 0x86, 0xbe, 0x59, 0xb7, 0x57, 0xea, 0x2d, 0x46, 0x95, 0x52, 0x47, 0x16, 0x27, 0x36, 0xd1, 0x8a, + 0x31, 0xe7, 0x4f, 0x41, 0xa5, 0xf0, 0x64, 0xcc, 0x1f, 0xa7, 0xc9, 0x09, 0x27, 0x56, 0x48, 0xad, + 0xc2, 0xd0, 0xac, 0xdd, 0x58, 0x0f, 0xd4, 0xe5, 0x75, 0x28, 0x2d, 0xe9, 0xce, 0x2a, 0xf5, 0x50, + 0x16, 0x83, 0x77, 0xc6, 0x6e, 0xf1, 0xd3, 0x66, 0x46, 0xc4, 0x11, 0x13, 0x23, 0x62, 0x36, 0x28, + 0x79, 0xf8, 0x5b, 0x13, 0x05, 0xd4, 0xef, 0xf7, 0xc2, 0x90, 0x38, 0x19, 0xc5, 0xd9, 0x9c, 0xbc, + 0x11, 0x9e, 0x35, 0x8b, 0xe9, 0x2b, 0x38, 0x1d, 0x0a, 0x4e, 0xb5, 0x86, 0x18, 0xb3, 0xbf, 0xb7, + 0x35, 0x9e, 0xdb, 0xde, 0x1a, 0xef, 0xd1, 0xfa, 0xa5, 0x4d, 0x65, 0xb8, 0xde, 0x48, 0x0b, 0xac, + 0x7c, 0xd6, 0x19, 0x2b, 0xcb, 0xd7, 0x9f, 0x77, 0xa0, 0x4f, 0xb4, 0x41, 0x68, 0xdc, 0xc5, 0xf0, + 0x2c, 0x23, 0x72, 0xc2, 0x1b, 0x2b, 0xed, 0x97, 0x22, 0x6f, 0x41, 0x89, 0xef, 0xed, 0x85, 0x00, + 0x2e, 0xa4, 0x9f, 0x85, 0xc4, 0x8a, 0x8b, 0x32, 0x64, 0x06, 0x20, 0xdc, 0xd7, 0x07, 0x07, 0xda, + 0x82, 0x43, 0x72, 0xc7, 0x1f, 0xe3, 0x22, 0x95, 0x25, 0xaf, 0xc2, 0xd0, 0x12, 0x75, 0x5a, 0xa6, + 0xa5, 0x37, 0x6b, 0xe6, 0x87, 0xfe, 0x99, 0x36, 0x2e, 0xbc, 0xae, 0xf9, 0xa1, 0x3c, 0x72, 0x23, + 0x74, 0xe4, 0x87, 0xd3, 0xf6, 0xcd, 0x7d, 0xd8, 0x90, 0x67, 0x76, 0xdc, 0x50, 0xc6, 0xda, 0x93, + 0xb2, 0x8d, 0x7e, 0x0f, 0x86, 0x23, 0x5b, 0x26, 0x71, 0x68, 0x79, 0x35, 0xc9, 0x5a, 0xda, 0xff, + 0xc5, 0xd8, 0x46, 0x39, 0x30, 0x4d, 0xae, 0x5a, 0xa6, 0x67, 0xea, 0xcd, 0x49, 0xbb, 0xd5, 0xd2, + 0x2d, 0x43, 0x19, 0x08, 0x35, 0xd9, 0xe4, 0x98, 0x7a, 0x83, 0xa3, 0x64, 0x4d, 0x8e, 0x16, 0x62, + 0xdb, 0x72, 0xd1, 0x87, 0x1a, 0x6d, 0xd8, 0x0e, 0xb3, 0x05, 0xf0, 0x4c, 0x52, 0x6c, 0xcb, 0x5d, + 0x8e, 0xab, 0x3b, 0x3e, 0x52, 0x36, 0xb6, 0xe3, 0x05, 0xdf, 0x2d, 0xf6, 0x0f, 0x8e, 0x0e, 0xc5, + 0x8f, 0x91, 0xd5, 0xbf, 0x54, 0x80, 0x41, 0x41, 0xca, 0x96, 0xd2, 0x53, 0x05, 0x3f, 0x88, 0x82, + 0xa7, 0x2a, 0x6a, 0xe9, 0xb0, 0x14, 0x55, 0xfd, 0x28, 0x1f, 0xcc, 0x46, 0x8b, 0x8e, 0x69, 0x1d, + 0x6c, 0x36, 0xba, 0x0e, 0x30, 0xb9, 0xd6, 0xb1, 0xd6, 0xf9, 0x75, 0x59, 0x3e, 0xbc, 0x2e, 0x6b, + 0x98, 0x9a, 0x84, 0x21, 0x57, 0xa1, 0x58, 0x61, 0xfc, 0x59, 0xcf, 0x0c, 0x4d, 0x0c, 0x7c, 0xcc, + 0x39, 0xe5, 0x5e, 0xd4, 0x10, 0xcc, 0x36, 0x57, 0x13, 0x9b, 0x1e, 0xe5, 0xe6, 0x6c, 0x81, 0x6f, + 0xae, 0x96, 0x19, 0x40, 0xe3, 0x70, 0x72, 0x17, 0xc6, 0x2a, 0xb4, 0xa9, 0x6f, 0xce, 0x99, 0xcd, + 0xa6, 0xe9, 0xd2, 0x86, 0x6d, 0x19, 0x2e, 0x0a, 0x59, 0x54, 0xd7, 0x72, 0xb5, 0x24, 0x01, 0x51, + 0xa1, 0xb4, 0xb0, 0xb2, 0xe2, 0x52, 0x0f, 0xc5, 0x57, 0x98, 0x00, 0x36, 0x39, 0xdb, 0x08, 0xd1, + 0x04, 0x46, 0xfd, 0xf5, 0x1c, 0xdb, 0xbd, 0xb8, 0xeb, 0x9e, 0xdd, 0x0e, 0xb4, 0xfc, 0x40, 0x22, + 0xb9, 0x19, 0xda, 0x15, 0x79, 0xfc, 0xda, 0x33, 0xe2, 0x6b, 0xfb, 0x84, 0x6d, 0x11, 0x5a, 0x14, + 0xa9, 0x5f, 0x55, 0xd8, 0xe1, 0xab, 0xd4, 0x3f, 0xcc, 0xc3, 0x45, 0xd1, 0xe2, 0xc9, 0xa6, 0xd9, + 0x5e, 0xb6, 0x75, 0xc7, 0xd0, 0x68, 0x83, 0x9a, 0x8f, 0xe9, 0xf1, 0x1c, 0x78, 0xd1, 0xa1, 0x53, + 0x3c, 0xc0, 0xd0, 0xb9, 0x83, 0x1b, 0x41, 0x26, 0x19, 0x3c, 0xf0, 0xe5, 0x46, 0xc5, 0xe8, 0xf6, + 0xd6, 0xf8, 0x90, 0xc1, 0xc1, 0x78, 0xe4, 0xaf, 0xc9, 0x44, 0x4c, 0x49, 0x66, 0xa9, 0xb5, 0xea, + 0xad, 0xa1, 0x92, 0xf4, 0x72, 0x25, 0x69, 0x22, 0x44, 0x13, 0x18, 0xf5, 0xff, 0xc8, 0xc3, 0xb9, + 0xb8, 0xc8, 0x6b, 0xd4, 0x32, 0x4e, 0xe5, 0xfd, 0xc9, 0xc8, 0xfb, 0x8f, 0x0a, 0xf0, 0x94, 0x28, + 0x53, 0x5b, 0xd3, 0x1d, 0x6a, 0x54, 0x4c, 0x87, 0x36, 0x3c, 0xdb, 0xd9, 0x3c, 0xc6, 0x06, 0xd4, + 0xe1, 0x89, 0xfd, 0x2e, 0x94, 0xc4, 0xf6, 0x9f, 0xaf, 0x33, 0x23, 0x41, 0x4b, 0x10, 0x9a, 0x58, + 0xa1, 0xf8, 0xd1, 0x41, 0xac, 0xb3, 0x4a, 0xbb, 0xe9, 0xac, 0x2f, 0xc1, 0x70, 0x20, 0x7a, 0xdc, + 0x88, 0xf6, 0x85, 0xd6, 0x96, 0xe1, 0x23, 0x70, 0x2f, 0xaa, 0x45, 0x09, 0xb1, 0x36, 0x1f, 0x50, + 0xad, 0xa0, 0x35, 0x34, 0x2c, 0x6a, 0x0b, 0xca, 0x99, 0x86, 0x26, 0x13, 0xa9, 0x5b, 0x45, 0xb8, + 0x9c, 0xde, 0xed, 0x1a, 0xd5, 0x8d, 0xd3, 0x5e, 0xff, 0x4c, 0xf6, 0x3a, 0x79, 0x06, 0x8a, 0x8b, + 0xba, 0xb7, 0x26, 0xae, 0xdf, 0xf1, 0x4e, 0x78, 0xc5, 0x6c, 0xd2, 0x7a, 0x5b, 0xf7, 0xd6, 0x34, + 0x44, 0x49, 0x73, 0x06, 0x20, 0xc7, 0x94, 0x39, 0x43, 0x5a, 0xec, 0x07, 0x9f, 0xce, 0xdd, 0x28, + 0xa6, 0x2e, 0xf6, 0xdf, 0x2f, 0x66, 0xcd, 0x2b, 0x8f, 0x1c, 0xd3, 0xa3, 0xa7, 0x1a, 0x76, 0xaa, + 0x61, 0x07, 0xd4, 0xb0, 0x7f, 0x90, 0x87, 0xe1, 0x60, 0xd3, 0xf4, 0x01, 0x6d, 0x1c, 0xcd, 0x5a, + 0x15, 0x6e, 0x65, 0x0a, 0x07, 0xde, 0xca, 0x1c, 0x44, 0xa1, 0xd4, 0xe0, 0xc8, 0x93, 0x9b, 0x06, + 0x28, 0x31, 0x7e, 0xe4, 0x19, 0x1c, 0x74, 0x3e, 0x03, 0x7d, 0x73, 0xfa, 0x13, 0xb3, 0xd5, 0x69, + 0x09, 0x2b, 0x1d, 0xdd, 0xc9, 0x5a, 0xfa, 0x13, 0xcd, 0x87, 0xab, 0xff, 0x7d, 0x0e, 0x46, 0x84, + 0x50, 0x05, 0xf3, 0x03, 0x49, 0x35, 0x94, 0x4e, 0xfe, 0xc0, 0xd2, 0x29, 0xec, 0x5f, 0x3a, 0xea, + 0x9f, 0x2d, 0x80, 0x32, 0x6d, 0x36, 0xe9, 0x92, 0xa3, 0x5b, 0xee, 0x0a, 0x75, 0xc4, 0x76, 0x7a, + 0x8a, 0xb1, 0x3a, 0xd0, 0x07, 0x4a, 0x53, 0x4a, 0x7e, 0x5f, 0x53, 0xca, 0x17, 0x60, 0x40, 0x34, + 0x26, 0x70, 0x65, 0xc4, 0x51, 0xe3, 0xf8, 0x40, 0x2d, 0xc4, 0x33, 0xe2, 0x72, 0xbb, 0xed, 0xd8, + 0x8f, 0xa9, 0xc3, 0x6f, 0xa9, 0x04, 0xb1, 0xee, 0x03, 0xb5, 0x10, 0x2f, 0x71, 0xa6, 0xbe, 0xbd, + 0x28, 0x73, 0xa6, 0x8e, 0x16, 0xe2, 0xc9, 0x0d, 0xe8, 0x9f, 0xb5, 0x1b, 0x3a, 0x0a, 0x9a, 0x4f, + 0x2b, 0x43, 0xdb, 0x5b, 0xe3, 0xfd, 0x4d, 0x01, 0xd3, 0x02, 0x2c, 0xa3, 0xac, 0xd8, 0x1b, 0x56, + 0xd3, 0xd6, 0xb9, 0xf3, 0x4b, 0x3f, 0xa7, 0x34, 0x04, 0x4c, 0x0b, 0xb0, 0x8c, 0x92, 0xc9, 0x1c, + 0x9d, 0x8a, 0xfa, 0x43, 0x9e, 0x2b, 0x02, 0xa6, 0x05, 0x58, 0xf5, 0xd7, 0x8b, 0x4c, 0x7b, 0x5d, + 0xf3, 0xc3, 0x13, 0xbf, 0x2e, 0x84, 0x03, 0xa6, 0x77, 0x1f, 0x03, 0xe6, 0xc4, 0x1c, 0xd8, 0xa9, + 0xff, 0xbc, 0x0f, 0x40, 0x48, 0x7f, 0xea, 0x74, 0x73, 0x78, 0x30, 0xad, 0xa9, 0xc0, 0xd8, 0x94, + 0xb5, 0xa6, 0x5b, 0x0d, 0x6a, 0x84, 0xc7, 0x96, 0x25, 0x1c, 0xda, 0xe8, 0x04, 0x49, 0x05, 0x32, + 0x3c, 0xb7, 0xd4, 0x92, 0x05, 0xc8, 0x4b, 0x30, 0x58, 0xb5, 0x3c, 0xea, 0xe8, 0x0d, 0xcf, 0x7c, + 0x4c, 0xc5, 0xd4, 0x80, 0x37, 0xc3, 0x66, 0x08, 0xd6, 0x64, 0x1a, 0x72, 0x17, 0x86, 0x16, 0x75, + 0xc7, 0x33, 0x1b, 0x66, 0x5b, 0xb7, 0x3c, 0x57, 0xe9, 0xc7, 0x19, 0x0d, 0x2d, 0x8c, 0xb6, 0x04, + 0xd7, 0x22, 0x54, 0xe4, 0x87, 0x61, 0x00, 0xb7, 0xa6, 0xe8, 0xaf, 0x3d, 0xb0, 0xe3, 0xc5, 0xe1, + 0xb3, 0xa1, 0x7b, 0x20, 0x3f, 0x7d, 0xc5, 0x1b, 0xe0, 0xf8, 0xdd, 0x61, 0xc0, 0x91, 0x7c, 0x15, + 0xfa, 0xa6, 0x2c, 0x03, 0x99, 0xc3, 0x8e, 0xcc, 0x55, 0xc1, 0xfc, 0x42, 0xc8, 0xdc, 0x6e, 0xc7, + 0x78, 0xfb, 0xec, 0xd2, 0x47, 0xd9, 0xe0, 0x27, 0x37, 0xca, 0x86, 0x3e, 0x81, 0x63, 0xf1, 0xe1, + 0xc3, 0x3a, 0x16, 0x1f, 0xd9, 0xe7, 0xb1, 0xb8, 0xfa, 0x21, 0x0c, 0x4e, 0x2c, 0x4e, 0x07, 0xa3, + 0xf7, 0x12, 0x14, 0x16, 0x85, 0xa7, 0x42, 0x91, 0xdb, 0x33, 0x6d, 0xd3, 0xd0, 0x18, 0x8c, 0xdc, + 0x84, 0xfe, 0x49, 0x74, 0x7f, 0x13, 0xb7, 0x88, 0x45, 0xbe, 0xfe, 0x35, 0x10, 0x86, 0x5e, 0xb0, + 0x3e, 0x9a, 0x3c, 0x07, 0x7d, 0x8b, 0x8e, 0xbd, 0xea, 0xe8, 0x2d, 0xb1, 0x06, 0xa3, 0xab, 0x48, + 0x9b, 0x83, 0x34, 0x1f, 0xa7, 0xfe, 0x74, 0xce, 0x37, 0xdb, 0x59, 0x89, 0x5a, 0x07, 0x8f, 0xe6, + 0xb1, 0xee, 0x7e, 0x5e, 0xc2, 0xe5, 0x20, 0xcd, 0xc7, 0x91, 0x9b, 0xd0, 0x3b, 0xe5, 0x38, 0xb6, + 0x23, 0xfb, 0xb8, 0x53, 0x06, 0x90, 0xaf, 0x7b, 0x91, 0x82, 0xbc, 0x06, 0x83, 0x7c, 0xce, 0xe1, + 0x27, 0x9a, 0x85, 0x6e, 0x37, 0xa5, 0x32, 0xa5, 0xfa, 0xbd, 0x82, 0x64, 0xb3, 0x71, 0x89, 0x9f, + 0xc0, 0x5b, 0x81, 0x97, 0xa1, 0x30, 0xb1, 0x38, 0x2d, 0x26, 0xc0, 0xb3, 0x7e, 0x51, 0x49, 0x55, + 0x62, 0xe5, 0x18, 0x35, 0xb9, 0x02, 0xc5, 0x45, 0xa6, 0x3e, 0x25, 0x54, 0x8f, 0xfe, 0xed, 0xad, + 0xf1, 0x62, 0x9b, 0xe9, 0x0f, 0x42, 0x11, 0xcb, 0x36, 0x33, 0x7c, 0xc7, 0xc4, 0xb1, 0xe1, 0x3e, + 0xe6, 0x0a, 0x14, 0xcb, 0xce, 0xea, 0x63, 0x31, 0x6b, 0x21, 0x56, 0x77, 0x56, 0x1f, 0x6b, 0x08, + 0x25, 0xb7, 0x01, 0x34, 0xea, 0x75, 0x1c, 0x0b, 0x9f, 0x9f, 0x0c, 0xe0, 0xf9, 0x1b, 0xce, 0x86, + 0x0e, 0x42, 0xeb, 0x0d, 0xdb, 0xa0, 0x9a, 0x44, 0xa2, 0xfe, 0xc5, 0xf0, 0x62, 0xa7, 0x62, 0xba, + 0xeb, 0xa7, 0x5d, 0xb8, 0x87, 0x2e, 0xd4, 0xc5, 0x11, 0x67, 0xb2, 0x93, 0xc6, 0xa1, 0x77, 0xba, + 0xa9, 0xaf, 0xba, 0xd8, 0x87, 0xc2, 0x97, 0x6c, 0x85, 0x01, 0x34, 0x0e, 0x8f, 0xf5, 0x53, 0xff, + 0xce, 0xfd, 0xf4, 0xb3, 0xbd, 0xc1, 0x68, 0x9b, 0xa7, 0xde, 0x86, 0xed, 0x9c, 0x76, 0xd5, 0x6e, + 0xbb, 0xea, 0x3a, 0xf4, 0xd5, 0x9c, 0x86, 0x74, 0x74, 0x81, 0xfb, 0x01, 0xd7, 0x69, 0xf0, 0x63, + 0x0b, 0x1f, 0xc9, 0xe8, 0x2a, 0xae, 0x87, 0x74, 0x7d, 0x21, 0x9d, 0xe1, 0x7a, 0x82, 0x4e, 0x20, + 0x05, 0xdd, 0xa2, 0xed, 0x78, 0xa2, 0xe3, 0x02, 0xba, 0xb6, 0xed, 0x78, 0x9a, 0x8f, 0x24, 0x5f, + 0x00, 0x58, 0x9a, 0x5c, 0xf4, 0x9d, 0xed, 0x07, 0x42, 0x5f, 0x40, 0xe1, 0x65, 0xaf, 0x49, 0x68, + 0xb2, 0x04, 0x03, 0x0b, 0x6d, 0xea, 0xf0, 0xad, 0x10, 0x7f, 0x50, 0xf2, 0xf9, 0x98, 0x68, 0x45, + 0xbf, 0xdf, 0x12, 0xff, 0x07, 0xe4, 0x7c, 0x7d, 0xb1, 0xfd, 0x9f, 0x5a, 0xc8, 0x88, 0xbc, 0x06, + 0xa5, 0x32, 0xb7, 0xf3, 0x06, 0x91, 0x65, 0x20, 0x32, 0xdc, 0x82, 0x72, 0x14, 0xdf, 0xb3, 0xeb, + 0xf8, 0xb7, 0x26, 0xc8, 0xd5, 0x9b, 0x30, 0x1a, 0xaf, 0x86, 0x0c, 0x42, 0xdf, 0xe4, 0xc2, 0xfc, + 0xfc, 0xd4, 0xe4, 0xd2, 0x68, 0x0f, 0xe9, 0x87, 0x62, 0x6d, 0x6a, 0xbe, 0x32, 0x9a, 0x53, 0x7f, + 0x55, 0x9a, 0x41, 0x98, 0x6a, 0x9d, 0x5e, 0x0d, 0x1f, 0xe8, 0xbe, 0x65, 0x14, 0xef, 0x43, 0xf1, + 0xc4, 0xa0, 0x65, 0x7a, 0x1e, 0x35, 0xc4, 0x2a, 0x81, 0xf7, 0x85, 0xde, 0x13, 0x2d, 0x81, 0x27, + 0x2f, 0xc0, 0x30, 0xc2, 0xc4, 0x15, 0x21, 0xdf, 0x1f, 0x8b, 0x02, 0xce, 0x13, 0x2d, 0x8a, 0x54, + 0x7f, 0x2f, 0xbc, 0x1d, 0x9e, 0xa5, 0xfa, 0x71, 0xbd, 0x51, 0xfc, 0x94, 0xf4, 0x97, 0xfa, 0x2f, + 0x8b, 0xfc, 0x09, 0x08, 0x7f, 0x2f, 0x78, 0x14, 0xa2, 0x0c, 0x8f, 0x74, 0x0b, 0x7b, 0x38, 0xd2, + 0x7d, 0x01, 0x4a, 0x73, 0xd4, 0x5b, 0xb3, 0x7d, 0xc7, 0x2f, 0xf4, 0xd0, 0x6b, 0x21, 0x44, 0xf6, + 0xd0, 0xe3, 0x34, 0x64, 0x1d, 0x88, 0xff, 0x18, 0x30, 0x70, 0xc4, 0xf6, 0x8f, 0x90, 0x2f, 0x26, + 0xf6, 0x29, 0x35, 0x7c, 0x09, 0x8c, 0x3e, 0xf6, 0xe7, 0x02, 0x47, 0x6f, 0xc9, 0x13, 0xeb, 0x5f, + 0x6c, 0x8d, 0x97, 0x38, 0x8d, 0x96, 0xc2, 0x96, 0xbc, 0x07, 0x03, 0x73, 0xd3, 0x65, 0xf1, 0x30, + 0x90, 0x7b, 0x45, 0x5c, 0x0a, 0xa4, 0xe8, 0x23, 0x02, 0x91, 0xe0, 0x7b, 0x9b, 0xd6, 0x8a, 0x9e, + 0x7c, 0x17, 0x18, 0x72, 0x61, 0xda, 0xc2, 0x5f, 0xee, 0x88, 0xd3, 0x85, 0x40, 0x5b, 0xa2, 0xef, + 0x79, 0xe2, 0xb2, 0xe2, 0xd8, 0x98, 0xb6, 0xf4, 0x1f, 0x60, 0x74, 0x2f, 0xc0, 0x58, 0xb9, 0xdd, + 0x6e, 0x9a, 0xd4, 0x40, 0x7d, 0xd1, 0x3a, 0x4d, 0xea, 0x0a, 0x97, 0x1f, 0x7c, 0x0c, 0xa2, 0x73, + 0x64, 0x1d, 0x9f, 0xa3, 0xd6, 0x9d, 0x4e, 0xd4, 0x3f, 0x33, 0x59, 0x56, 0xfd, 0xd3, 0x79, 0xb8, + 0x30, 0xe9, 0x50, 0xdd, 0xa3, 0x73, 0xd3, 0xe5, 0x72, 0x07, 0x7d, 0xe4, 0x9a, 0x4d, 0x6a, 0xad, + 0x1e, 0xcd, 0xb0, 0x7e, 0x13, 0x46, 0x82, 0x06, 0xd4, 0x1a, 0x76, 0x9b, 0xca, 0x0f, 0xab, 0x1a, + 0x3e, 0xa6, 0xee, 0x32, 0x94, 0x16, 0x23, 0x25, 0xf7, 0xe1, 0x6c, 0x00, 0x29, 0x37, 0x9b, 0xf6, + 0x86, 0x46, 0x3b, 0x2e, 0x77, 0x8c, 0xed, 0xe7, 0x8e, 0xb1, 0x21, 0x07, 0x9d, 0xe1, 0xeb, 0x0e, + 0x23, 0xd0, 0xd2, 0x4a, 0xa9, 0xbf, 0x58, 0x80, 0x8b, 0x0f, 0xf5, 0xa6, 0x69, 0x84, 0xa2, 0xd1, + 0xa8, 0xdb, 0xb6, 0x2d, 0x97, 0x1e, 0xa3, 0x51, 0x1a, 0x19, 0x0a, 0xc5, 0x43, 0x19, 0x0a, 0xc9, + 0x2e, 0xea, 0x3d, 0x70, 0x17, 0x95, 0xf6, 0xd5, 0x45, 0xff, 0x7b, 0x0e, 0x46, 0x7d, 0xc7, 0x7f, + 0xf9, 0x11, 0xb7, 0xe4, 0x95, 0x8e, 0x47, 0x88, 0x31, 0x3f, 0x68, 0xc4, 0x93, 0x1a, 0xf4, 0x4d, + 0x3d, 0x69, 0x9b, 0x0e, 0x75, 0x77, 0xe1, 0xc4, 0x7d, 0x55, 0x1c, 0x97, 0x8c, 0x51, 0x5e, 0x24, + 0x71, 0x52, 0xc2, 0xc1, 0xf8, 0x9c, 0x8f, 0x3f, 0x7d, 0x98, 0xf0, 0x5f, 0xa6, 0xf3, 0xe7, 0x7c, + 0xe2, 0x89, 0x44, 0xe4, 0x7d, 0x66, 0x48, 0x4a, 0x9e, 0x85, 0xc2, 0xd2, 0xd2, 0xac, 0x98, 0x49, + 0x31, 0x22, 0x80, 0xe7, 0xc9, 0xef, 0x15, 0x19, 0x56, 0xfd, 0xc7, 0x79, 0x00, 0xa6, 0x0a, 0x7c, + 0xb8, 0x1e, 0x89, 0x12, 0x4e, 0x40, 0xbf, 0x2f, 0x70, 0xa1, 0x86, 0x81, 0xd7, 0x7e, 0xbc, 0x23, + 0xe2, 0x75, 0x07, 0x2f, 0x34, 0xc6, 0x7d, 0x47, 0x72, 0x7e, 0x0f, 0x80, 0x3b, 0x1b, 0x74, 0x24, + 0xf7, 0xdd, 0xc7, 0xbf, 0x00, 0x03, 0x62, 0xc6, 0xb3, 0x23, 0xe7, 0xff, 0x0d, 0x1f, 0xa8, 0x85, + 0xf8, 0xd8, 0xd4, 0x5a, 0x3a, 0xc0, 0x42, 0xec, 0x8b, 0x97, 0xf7, 0xca, 0xa9, 0x78, 0x0f, 0x59, + 0xbc, 0xdf, 0x16, 0xe2, 0xe5, 0x2f, 0x78, 0x8e, 0xad, 0x78, 0x0f, 0xed, 0xec, 0x5b, 0xfd, 0x07, + 0x39, 0x20, 0xac, 0x59, 0x8b, 0xba, 0xeb, 0x6e, 0xd8, 0x8e, 0xc1, 0x9d, 0xd3, 0x8f, 0x44, 0x30, + 0x87, 0x77, 0x5f, 0xf9, 0xbd, 0x7e, 0x38, 0x1b, 0x71, 0xfc, 0x3d, 0xe6, 0x93, 0xd5, 0xcd, 0xe8, + 0x68, 0xea, 0xf6, 0xea, 0xe5, 0x73, 0xf2, 0x85, 0x68, 0x6f, 0xe4, 0x01, 0x9a, 0x74, 0x13, 0xfa, + 0x22, 0x0c, 0x89, 0x1f, 0x6c, 0x85, 0xf6, 0x6f, 0xba, 0x70, 0x94, 0xba, 0x0c, 0xa0, 0x45, 0xd0, + 0xe4, 0x15, 0x18, 0x60, 0x03, 0x66, 0x15, 0x83, 0x87, 0xf4, 0x85, 0x2f, 0x4a, 0x0c, 0x1f, 0x28, + 0xaf, 0x27, 0x01, 0xa5, 0xf4, 0x8e, 0xa8, 0x7f, 0x17, 0xef, 0x88, 0xbe, 0x01, 0x83, 0x65, 0xcb, + 0xb2, 0x3d, 0xdc, 0xa4, 0xbb, 0xe2, 0x6a, 0x22, 0xd3, 0x2a, 0x7f, 0x16, 0x1f, 0xc7, 0x87, 0xf4, + 0xa9, 0x66, 0xb9, 0xcc, 0x90, 0xdc, 0xf1, 0x5f, 0xc5, 0x50, 0x47, 0x78, 0x95, 0xe3, 0xf5, 0x8c, + 0x23, 0x60, 0xc9, 0x47, 0x31, 0xd8, 0x79, 0xc3, 0x8b, 0x8e, 0xdd, 0xb6, 0x5d, 0x6a, 0x70, 0x41, + 0x0d, 0x86, 0xa1, 0x06, 0xda, 0x02, 0x81, 0xef, 0xd8, 0x22, 0x81, 0x3c, 0x22, 0x45, 0xc8, 0x0a, + 0x9c, 0xf3, 0x2f, 0x8a, 0x83, 0x17, 0x83, 0xd5, 0x8a, 0xab, 0x0c, 0xe1, 0xab, 0x24, 0x12, 0x57, + 0x86, 0x6a, 0x65, 0xe2, 0x9a, 0x7f, 0x2d, 0xe2, 0x3f, 0x39, 0xac, 0x9b, 0x86, 0xdc, 0xd5, 0xa9, + 0xfc, 0xc8, 0x8f, 0xc0, 0xe0, 0x9c, 0xfe, 0xa4, 0xd2, 0x11, 0x67, 0x2f, 0xc3, 0xbb, 0xbf, 0x7d, + 0x69, 0xe9, 0x4f, 0xea, 0x86, 0x28, 0x17, 0xb3, 0x29, 0x64, 0x96, 0xa4, 0x0e, 0x17, 0x16, 0x1d, + 0xbb, 0x65, 0x7b, 0xd4, 0x88, 0x3d, 0xbe, 0x3b, 0x13, 0xbe, 0xd6, 0x6d, 0x0b, 0x8a, 0x7a, 0x97, + 0x57, 0x78, 0x19, 0x6c, 0x48, 0x0b, 0xce, 0x94, 0x5d, 0xb7, 0xd3, 0xa2, 0xe1, 0x0d, 0xd5, 0xe8, + 0x8e, 0x9f, 0xf1, 0x79, 0xe1, 0xb5, 0xfc, 0x94, 0x8e, 0x45, 0xf9, 0x05, 0x55, 0xdd, 0x33, 0xe5, + 0x1a, 0xf1, 0x5b, 0xe2, 0xbc, 0xdf, 0x2d, 0xf6, 0x8f, 0x8c, 0x9e, 0xd1, 0x2e, 0x26, 0x1b, 0xb3, + 0x64, 0x7a, 0x4d, 0xaa, 0xfe, 0x4e, 0x0e, 0x20, 0x14, 0x30, 0x79, 0x31, 0x1a, 0xa1, 0x28, 0x17, + 0x5e, 0x74, 0x88, 0xe8, 0x05, 0x91, 0x90, 0x44, 0xe4, 0x0a, 0x14, 0x31, 0xc2, 0x45, 0x3e, 0x3c, + 0x58, 0x5d, 0x37, 0x2d, 0x43, 0x43, 0x28, 0xc3, 0x4a, 0x4f, 0xd1, 0x11, 0x8b, 0x97, 0xfa, 0xdc, + 0x2a, 0xac, 0xc0, 0x99, 0x5a, 0x67, 0xd9, 0xaf, 0x5b, 0x7a, 0x57, 0x87, 0x81, 0x36, 0xdc, 0xce, + 0x72, 0xf0, 0x18, 0x35, 0x12, 0xc6, 0x24, 0x5a, 0x44, 0xfd, 0xf5, 0x5c, 0x6c, 0x16, 0x3c, 0xc2, + 0x45, 0xef, 0x73, 0x49, 0x3f, 0x8d, 0xe4, 0xb4, 0xa4, 0xfe, 0xb9, 0x3c, 0x0c, 0x2e, 0xda, 0x8e, + 0x27, 0x42, 0x86, 0x1c, 0xef, 0x55, 0x48, 0xda, 0x2b, 0x15, 0xf7, 0xb0, 0x57, 0xba, 0x02, 0x45, + 0xc9, 0x45, 0x99, 0xdf, 0x8b, 0x18, 0x86, 0xa3, 0x21, 0x54, 0xfd, 0xb1, 0x3c, 0xc0, 0x57, 0x5f, + 0x7a, 0xe9, 0x04, 0x0b, 0x48, 0xfd, 0x85, 0x1c, 0x9c, 0x11, 0x17, 0x75, 0x52, 0xac, 0xaf, 0x3e, + 0xff, 0x8a, 0x55, 0x1e, 0x97, 0x1c, 0xa4, 0xf9, 0x38, 0xb6, 0x04, 0x4c, 0x3d, 0x31, 0x3d, 0xbc, + 0xab, 0x90, 0x82, 0x7d, 0x51, 0x01, 0x93, 0x97, 0x00, 0x9f, 0x8e, 0xbc, 0xe8, 0x5f, 0x41, 0x16, + 0xc2, 0x75, 0x8f, 0x15, 0x98, 0x4a, 0xbd, 0x86, 0x54, 0x7f, 0xab, 0x08, 0xc5, 0xa9, 0x27, 0xb4, + 0x71, 0xcc, 0xbb, 0x46, 0x3a, 0xd8, 0x2c, 0x1e, 0xf0, 0x60, 0x73, 0x3f, 0x3e, 0x15, 0xef, 0x84, + 0xfd, 0x59, 0x8a, 0x56, 0x1f, 0xeb, 0xf9, 0x78, 0xf5, 0x7e, 0x4f, 0x1f, 0x3f, 0x97, 0x9c, 0xff, + 0xaa, 0x00, 0x85, 0xda, 0xe4, 0xe2, 0xa9, 0xde, 0x1c, 0xa9, 0xde, 0x74, 0xbf, 0xb3, 0x56, 0x83, + 0x6b, 0xa8, 0xfe, 0xd0, 0x4b, 0x34, 0x76, 0xe3, 0xf4, 0x47, 0x05, 0x18, 0xa9, 0x4d, 0x2f, 0x2d, + 0x4a, 0x27, 0xc1, 0xf7, 0xb9, 0x27, 0x1f, 0xfa, 0x94, 0xf1, 0x2e, 0xbd, 0x92, 0xb0, 0x67, 0x1e, + 0x54, 0x2d, 0xef, 0xd5, 0xbb, 0x0f, 0xf5, 0x66, 0x87, 0xe2, 0xd1, 0x0b, 0xf7, 0xfb, 0x75, 0xcd, + 0x0f, 0xe9, 0x2f, 0xe2, 0xc3, 0x7f, 0x9f, 0x01, 0x79, 0x13, 0x0a, 0x0f, 0x84, 0x47, 0x46, 0x16, + 0x9f, 0x97, 0xef, 0x70, 0x3e, 0x6c, 0x12, 0x2c, 0x74, 0x4c, 0x03, 0x39, 0xb0, 0x52, 0xac, 0xf0, + 0x3d, 0xb1, 0x00, 0xef, 0xaa, 0xf0, 0xaa, 0x5f, 0xf8, 0x5e, 0xb5, 0x42, 0x6a, 0x30, 0xb8, 0x48, + 0x9d, 0x96, 0x89, 0x1d, 0xe5, 0xcf, 0xd9, 0xdd, 0x99, 0xb0, 0x9d, 0xca, 0x60, 0x3b, 0x2c, 0x84, + 0xcc, 0x64, 0x2e, 0xe4, 0x7d, 0x00, 0x6e, 0xa3, 0xec, 0x32, 0x7e, 0xe4, 0x55, 0xb4, 0xfb, 0xb9, + 0x69, 0x99, 0x62, 0xe3, 0x49, 0xcc, 0xc8, 0x3a, 0x8c, 0xce, 0xd9, 0x86, 0xb9, 0x62, 0x72, 0xd7, + 0x4b, 0xac, 0xa0, 0xb4, 0xb3, 0xc3, 0x13, 0x33, 0x25, 0x5b, 0x52, 0xb9, 0xb4, 0x6a, 0x12, 0x8c, + 0xd5, 0xff, 0xbc, 0x17, 0x8a, 0xac, 0xdb, 0x4f, 0xc7, 0xef, 0x41, 0xc6, 0x6f, 0x19, 0x46, 0x1f, + 0xd9, 0xce, 0xba, 0x69, 0xad, 0x06, 0x5e, 0xf1, 0x62, 0x6f, 0x8a, 0x9e, 0x3c, 0x1b, 0x1c, 0x57, + 0x0f, 0x1c, 0xe8, 0xb5, 0x04, 0xf9, 0x0e, 0x23, 0xf8, 0x75, 0x00, 0xfe, 0xd6, 0x1d, 0x69, 0xfa, + 0xc3, 0x60, 0x15, 0xfc, 0x25, 0x3c, 0x3a, 0xda, 0xcb, 0xc1, 0x2a, 0x42, 0x62, 0xb6, 0x09, 0xe7, + 0xbe, 0x10, 0x03, 0xe8, 0x77, 0x8f, 0x9b, 0x70, 0xf4, 0x85, 0x90, 0x8d, 0x00, 0xee, 0x15, 0xb1, + 0x08, 0x20, 0xdd, 0x2f, 0x41, 0x4c, 0x10, 0x91, 0xc9, 0x41, 0x84, 0x87, 0x4b, 0xb9, 0x5e, 0xd2, + 0x24, 0x1e, 0xe4, 0xd5, 0xd8, 0x05, 0x38, 0x89, 0x70, 0xcb, 0xbc, 0xff, 0x0e, 0x1d, 0xa8, 0x86, + 0x76, 0x72, 0xa0, 0x52, 0x3f, 0xca, 0xc3, 0x40, 0xad, 0xb3, 0xec, 0x6e, 0xba, 0x1e, 0x6d, 0x1d, + 0x73, 0x35, 0xf6, 0xb7, 0x57, 0xc5, 0xd4, 0xed, 0xd5, 0xb3, 0xbe, 0x50, 0xa4, 0x73, 0xc7, 0xc0, + 0xa4, 0xf3, 0xc5, 0xf1, 0x57, 0xf3, 0x30, 0xca, 0x2f, 0xce, 0x2a, 0xa6, 0xdb, 0x38, 0x04, 0x67, + 0xfe, 0xa3, 0x97, 0xca, 0xc1, 0x2e, 0x9b, 0x77, 0xf1, 0x44, 0x42, 0xfd, 0x66, 0x1e, 0x06, 0xcb, + 0x1d, 0x6f, 0xad, 0xec, 0xa1, 0x6e, 0x9d, 0xc8, 0xfd, 0xc9, 0xdf, 0xc9, 0xc1, 0x19, 0xd6, 0x90, + 0x25, 0x7b, 0x9d, 0x5a, 0x87, 0x70, 0xf0, 0x28, 0x1f, 0x20, 0xe6, 0xf7, 0x79, 0x80, 0xe8, 0xcb, + 0xb2, 0xb0, 0x37, 0x59, 0xe2, 0x71, 0xb9, 0x66, 0x37, 0xe9, 0xf1, 0xfe, 0x8c, 0x43, 0x3c, 0x2e, + 0xf7, 0x05, 0x72, 0x08, 0xd7, 0x33, 0x9f, 0x2d, 0x81, 0x1c, 0xc2, 0xd9, 0xd2, 0x67, 0x43, 0x20, + 0xdf, 0xcb, 0xc1, 0xc0, 0x84, 0xed, 0x1d, 0xf3, 0x81, 0x2f, 0xbe, 0xe2, 0x78, 0xab, 0xb9, 0xff, + 0x15, 0xc7, 0x5b, 0x37, 0xd5, 0x9f, 0xcb, 0xc3, 0x39, 0x11, 0x1b, 0x5c, 0x9c, 0x3f, 0x9c, 0x4e, + 0xc7, 0x62, 0xb0, 0x25, 0x45, 0x73, 0x3a, 0x0f, 0x09, 0xd1, 0xfc, 0x72, 0x01, 0xce, 0x61, 0x28, + 0x53, 0xb6, 0x2d, 0xfb, 0x0c, 0xd8, 0x22, 0xa4, 0x11, 0xbd, 0x04, 0x9d, 0x4b, 0xb9, 0x04, 0xfd, + 0x17, 0x5b, 0xe3, 0xaf, 0xae, 0x9a, 0xde, 0x5a, 0x67, 0xf9, 0x56, 0xc3, 0x6e, 0xdd, 0x5e, 0x75, + 0xf4, 0xc7, 0x26, 0xbf, 0xfe, 0xd3, 0x9b, 0xb7, 0x83, 0x34, 0x1b, 0x7a, 0xdb, 0x14, 0x09, 0x38, + 0x6a, 0xb8, 0xd7, 0x61, 0x5c, 0xfd, 0xeb, 0x53, 0x17, 0xe0, 0x5d, 0xdb, 0xb4, 0x84, 0x4f, 0x21, + 0x37, 0x74, 0x6b, 0x6c, 0x7f, 0xf8, 0x81, 0x6d, 0x5a, 0xf5, 0xb8, 0x63, 0xe1, 0x5e, 0xeb, 0x0b, + 0x59, 0x6b, 0x52, 0x35, 0xea, 0x7f, 0x97, 0x83, 0x4b, 0x51, 0x2d, 0xfe, 0x2c, 0xd8, 0x8e, 0x7f, + 0x26, 0x0f, 0xe7, 0xef, 0xa1, 0x70, 0x02, 0x47, 0x8e, 0xd3, 0x79, 0x4b, 0x0c, 0xce, 0x14, 0xd9, + 0x9c, 0x5a, 0x94, 0xd9, 0xb2, 0x39, 0x9d, 0xd4, 0x85, 0x6c, 0xfe, 0x6e, 0x0e, 0xce, 0x2e, 0x54, + 0x2b, 0x93, 0x9f, 0x91, 0x11, 0x95, 0xfc, 0x9e, 0x63, 0x6e, 0x70, 0x26, 0xbe, 0xe7, 0x98, 0x9b, + 0x9e, 0xdf, 0xcd, 0xc3, 0xd9, 0x5a, 0x79, 0x6e, 0xf6, 0xb3, 0x32, 0x83, 0x4f, 0xca, 0x5e, 0x87, + 0xfe, 0x21, 0x98, 0xb0, 0x05, 0xe4, 0xcf, 0x7c, 0x78, 0x27, 0xdb, 0x1b, 0x31, 0x29, 0x94, 0x63, + 0x3e, 0x75, 0x1f, 0x8a, 0x50, 0x98, 0xe6, 0x47, 0xa8, 0x8f, 0xb9, 0xe6, 0xff, 0x97, 0x25, 0x18, + 0xbc, 0xdf, 0x59, 0xa6, 0xc2, 0x39, 0xe5, 0x44, 0x9f, 0xfc, 0xde, 0x81, 0x41, 0x21, 0x06, 0xbc, + 0x35, 0x91, 0x82, 0xe7, 0x89, 0x60, 0x28, 0x3c, 0x3e, 0x91, 0x4c, 0x44, 0xae, 0x40, 0xf1, 0x21, + 0x75, 0x96, 0xe5, 0x77, 0xa5, 0x8f, 0xa9, 0xb3, 0xac, 0x21, 0x94, 0xcc, 0x86, 0x2e, 0xf3, 0xe5, + 0xc5, 0x2a, 0x26, 0x52, 0x11, 0x17, 0x36, 0x98, 0x19, 0x26, 0xf0, 0x7b, 0xd3, 0xdb, 0x26, 0x4f, + 0xc1, 0x22, 0xbf, 0x69, 0x8f, 0x97, 0x24, 0xf3, 0x30, 0x26, 0x3b, 0x3e, 0xf1, 0x2c, 0x22, 0xfd, + 0x29, 0xec, 0xd2, 0xf2, 0x87, 0x24, 0x8b, 0x92, 0x77, 0x60, 0xc8, 0x07, 0xa2, 0x0b, 0xd7, 0x40, + 0x18, 0xba, 0x3e, 0x60, 0x15, 0x4b, 0x51, 0x14, 0x29, 0x20, 0x33, 0xc0, 0x6b, 0x08, 0x48, 0x61, + 0x10, 0x73, 0x89, 0x8b, 0x14, 0x20, 0xaf, 0x20, 0x03, 0x7c, 0xe6, 0x81, 0xce, 0x2a, 0x83, 0xf8, + 0xe8, 0x12, 0x5d, 0xf2, 0x1d, 0x01, 0xe7, 0x4f, 0x6b, 0x23, 0x64, 0x64, 0x01, 0x20, 0x74, 0x2a, + 0x10, 0x01, 0x0c, 0xf6, 0xec, 0xee, 0x20, 0xb1, 0x90, 0xaf, 0x03, 0x87, 0xf7, 0x73, 0x1d, 0xa8, + 0xfe, 0xfd, 0x3c, 0x0c, 0x96, 0xdb, 0xed, 0x60, 0x28, 0xbc, 0x08, 0xa5, 0x72, 0xbb, 0xfd, 0x40, + 0xab, 0xca, 0xa1, 0xcc, 0xf5, 0x76, 0xbb, 0xde, 0x71, 0x4c, 0xd9, 0x27, 0x94, 0x13, 0x91, 0x49, + 0x18, 0x2e, 0xb7, 0xdb, 0x8b, 0x9d, 0xe5, 0xa6, 0xd9, 0x90, 0x32, 0x23, 0xf1, 0xdc, 0x71, 0xed, + 0x76, 0xbd, 0x8d, 0x98, 0x78, 0x7a, 0xac, 0x68, 0x19, 0xf2, 0x0d, 0x0c, 0xfb, 0x23, 0x12, 0xf3, + 0xf0, 0xd4, 0x1f, 0x6a, 0x10, 0xc4, 0x3c, 0x6c, 0xdb, 0xad, 0x80, 0x88, 0x07, 0x7b, 0xbf, 0xe2, + 0x87, 0xcc, 0x67, 0x15, 0x25, 0x12, 0xf0, 0x84, 0x2c, 0xc9, 0x17, 0xa1, 0xaf, 0xdc, 0x6e, 0x4b, + 0xf7, 0x4d, 0xe8, 0x54, 0xc4, 0x4a, 0xc5, 0x73, 0x9f, 0x09, 0xb2, 0xcb, 0x6f, 0xc1, 0x48, 0xb4, + 0xb2, 0x3d, 0x05, 0x8b, 0xff, 0x41, 0x0e, 0x3f, 0xe8, 0x98, 0xfb, 0x34, 0xbf, 0x0c, 0x85, 0x72, + 0xbb, 0x2d, 0xe6, 0xa3, 0xb3, 0x29, 0xfd, 0x11, 0x7f, 0x02, 0x5d, 0x6e, 0xb7, 0xfd, 0x4f, 0x3f, + 0xe6, 0x8f, 0x23, 0xf6, 0xf5, 0xe9, 0xdf, 0xe3, 0x9f, 0x7e, 0xbc, 0x1f, 0x2e, 0xa8, 0xbf, 0x55, + 0x80, 0x33, 0xe5, 0x76, 0xfb, 0x34, 0xc8, 0xfc, 0x61, 0x3d, 0xb4, 0x7e, 0x09, 0x40, 0x9a, 0x1e, + 0xfb, 0x82, 0xa7, 0x5b, 0x83, 0xd2, 0xd4, 0xa8, 0xe4, 0x34, 0x89, 0xc8, 0x57, 0xbf, 0xfe, 0x3d, + 0xa9, 0xdf, 0x37, 0x0b, 0x38, 0x15, 0x1f, 0xf7, 0xa0, 0x51, 0x9f, 0x96, 0x6e, 0x13, 0x7d, 0x50, + 0xda, 0x53, 0x1f, 0xfc, 0x6e, 0x64, 0xf0, 0x60, 0xd0, 0xf2, 0xd3, 0x5e, 0xe8, 0x3d, 0x90, 0x59, + 0x3c, 0x22, 0x0b, 0x53, 0x44, 0xb2, 0xf1, 0x13, 0x29, 0x89, 0xb8, 0x4a, 0x0d, 0x86, 0xaa, 0x9b, + 0x86, 0x16, 0xa3, 0xf5, 0xfb, 0xb0, 0x6f, 0x4f, 0x7d, 0xb8, 0x95, 0xc7, 0xb7, 0xd3, 0x41, 0x5c, + 0xa6, 0x83, 0xef, 0x2e, 0x6e, 0x03, 0x70, 0xcf, 0x83, 0xc0, 0xad, 0x79, 0x98, 0x87, 0x60, 0xe1, + 0xf9, 0x95, 0x44, 0x08, 0x96, 0x90, 0x24, 0xf0, 0x90, 0x2a, 0xa4, 0x7a, 0x48, 0xdd, 0x84, 0x7e, + 0x4d, 0xdf, 0x78, 0xaf, 0x43, 0x9d, 0x4d, 0x61, 0xce, 0xf0, 0xb0, 0x87, 0xfa, 0x46, 0xfd, 0x47, + 0x19, 0x50, 0x0b, 0xd0, 0x44, 0x0d, 0x1e, 0xdf, 0x4b, 0x1e, 0x21, 0xfc, 0x8c, 0x3c, 0x78, 0x72, + 0xbf, 0x1f, 0x45, 0x27, 0x6f, 0x40, 0xa1, 0xfc, 0xa8, 0x26, 0x24, 0x1b, 0x74, 0x6d, 0xf9, 0x51, + 0x4d, 0xc8, 0x2b, 0xb3, 0xec, 0xa3, 0x9a, 0xfa, 0xcd, 0x3c, 0x90, 0x24, 0x25, 0x79, 0x15, 0x06, + 0x10, 0xba, 0xca, 0x74, 0x46, 0x4e, 0xcc, 0xb9, 0xe1, 0xd6, 0x1d, 0x84, 0x46, 0x8c, 0x3b, 0x9f, + 0x94, 0xbc, 0x8e, 0xa9, 0x8f, 0x45, 0x6a, 0xb8, 0x48, 0x62, 0xce, 0x0d, 0xd7, 0x4f, 0x16, 0x1c, + 0xcb, 0x7c, 0x2c, 0x88, 0xd1, 0x2e, 0x7c, 0x54, 0x9b, 0xb1, 0x5d, 0x4f, 0x88, 0x9a, 0xdb, 0x85, + 0x1b, 0x2e, 0x66, 0x84, 0x8d, 0xd8, 0x85, 0x9c, 0x0c, 0xb3, 0x5a, 0x3d, 0xaa, 0xf1, 0x67, 0x2a, + 0x86, 0x66, 0x37, 0x7d, 0x83, 0x92, 0x67, 0xb5, 0xda, 0x70, 0xeb, 0xfc, 0x89, 0x8b, 0x81, 0x39, + 0x97, 0x23, 0x59, 0xad, 0x22, 0xa5, 0xd4, 0x6f, 0xf5, 0xc3, 0x68, 0x45, 0xf7, 0xf4, 0x65, 0xdd, + 0xa5, 0xd2, 0x6e, 0xfa, 0x8c, 0x0f, 0xf3, 0x3f, 0x47, 0x92, 0x83, 0xb1, 0x9c, 0xf2, 0x35, 0xf1, + 0x02, 0xe4, 0xcd, 0x90, 0x6f, 0x90, 0x73, 0x54, 0x4e, 0x62, 0xb6, 0x5c, 0x6f, 0x0b, 0xb0, 0x96, + 0x20, 0x24, 0x2f, 0xc0, 0xa0, 0x0f, 0x63, 0x1b, 0x80, 0x42, 0xa8, 0x33, 0xc6, 0x32, 0xb3, 0xff, + 0x35, 0x19, 0x4d, 0x5e, 0x87, 0x21, 0xff, 0xa7, 0x64, 0x5a, 0xf3, 0x8c, 0x6c, 0xcb, 0x89, 0xdd, + 0x93, 0x4c, 0x2a, 0x17, 0xc5, 0xf9, 0xad, 0x37, 0x52, 0x34, 0x96, 0xf4, 0x2c, 0x42, 0x4a, 0x7e, + 0x14, 0x46, 0xfc, 0xdf, 0x62, 0xc3, 0xc0, 0xf3, 0xc3, 0xbd, 0x10, 0xa4, 0x74, 0x8e, 0x89, 0xf5, + 0x56, 0x94, 0x9c, 0x6f, 0x1d, 0x9e, 0xf2, 0xf3, 0x78, 0x19, 0xcb, 0xc9, 0x9d, 0x43, 0xac, 0x02, + 0x52, 0x85, 0x31, 0x1f, 0x12, 0x6a, 0x68, 0x5f, 0xb8, 0x63, 0x34, 0x96, 0xeb, 0xa9, 0x4a, 0x9a, + 0x2c, 0x45, 0x9a, 0x70, 0x25, 0x02, 0x34, 0xdc, 0x35, 0x73, 0xc5, 0x13, 0xdb, 0x3d, 0x11, 0x83, + 0x58, 0x24, 0x6e, 0x0c, 0xb8, 0x72, 0x1a, 0x3f, 0x03, 0x6b, 0x34, 0x3b, 0x54, 0x57, 0x6e, 0xa4, + 0x06, 0xe7, 0x7c, 0xfc, 0xbd, 0xc9, 0xc5, 0x45, 0xc7, 0xfe, 0x80, 0x36, 0xbc, 0x6a, 0x45, 0x6c, + 0x97, 0x31, 0x36, 0x9d, 0xb1, 0x5c, 0x5f, 0x6d, 0xb4, 0x99, 0x52, 0x30, 0x5c, 0x94, 0x79, 0x6a, + 0x61, 0xf2, 0x10, 0xce, 0x4b, 0x70, 0x29, 0x3d, 0x34, 0x84, 0xfb, 0x79, 0xc1, 0x35, 0x3d, 0x43, + 0x74, 0x7a, 0x71, 0xf2, 0x16, 0x0c, 0xfb, 0x08, 0x7e, 0x8b, 0x38, 0x88, 0xb7, 0x88, 0x38, 0x24, + 0x8d, 0xe5, 0x7a, 0xfc, 0x35, 0x65, 0x94, 0x58, 0xd6, 0x28, 0xcc, 0xa8, 0x3f, 0x14, 0xd1, 0x28, + 0x6f, 0xb3, 0x9d, 0xaa, 0x8c, 0x98, 0x65, 0xff, 0x9d, 0x50, 0xa3, 0x16, 0x1c, 0x73, 0xd5, 0xe4, + 0x3b, 0x69, 0xff, 0x01, 0xe5, 0x72, 0xdd, 0x46, 0x60, 0x9a, 0x7e, 0x70, 0xf2, 0xcb, 0x65, 0x38, + 0x9b, 0xa2, 0x63, 0x7b, 0xda, 0x31, 0x7e, 0x94, 0x0f, 0x1b, 0x71, 0xcc, 0xb7, 0x8d, 0x13, 0xd0, + 0xef, 0x7f, 0x89, 0x30, 0x1e, 0x94, 0xac, 0xa1, 0x19, 0xe7, 0xe1, 0xe3, 0x23, 0xe2, 0x38, 0xe6, + 0x5b, 0xc9, 0xc3, 0x10, 0xc7, 0xc7, 0xb9, 0x50, 0x1c, 0xc7, 0x7c, 0x7b, 0xf9, 0x77, 0x0b, 0xe1, + 0x9c, 0x74, 0xba, 0xc7, 0x3c, 0x2c, 0x33, 0x39, 0xf4, 0x83, 0x2d, 0xed, 0xe1, 0x21, 0xa3, 0xac, + 0x9a, 0x7d, 0xfb, 0x54, 0xcd, 0x7f, 0x98, 0xec, 0x4f, 0x6e, 0x7a, 0x1e, 0xcb, 0xfe, 0x3c, 0x84, + 0xc1, 0x4a, 0xee, 0x84, 0xeb, 0x18, 0xb7, 0xd1, 0x7b, 0xa5, 0x10, 0x7f, 0xcb, 0xc2, 0x44, 0x8f, + 0x92, 0x90, 0xaf, 0xc3, 0xc5, 0x08, 0x60, 0x51, 0x77, 0xf4, 0x16, 0xf5, 0xc2, 0x8c, 0x83, 0x18, + 0xb4, 0xc9, 0x2f, 0x5d, 0x6f, 0x07, 0x68, 0x39, 0x8b, 0x61, 0x06, 0x07, 0x49, 0x39, 0xfa, 0xf6, + 0xe0, 0x24, 0xfd, 0xb3, 0x85, 0xd0, 0x54, 0x89, 0x06, 0x5f, 0xd5, 0xa8, 0xdb, 0x69, 0x7a, 0x27, + 0xb7, 0x83, 0xf7, 0x97, 0xda, 0x62, 0x06, 0xce, 0x94, 0x57, 0x56, 0x68, 0xc3, 0xf3, 0x63, 0x4a, + 0xbb, 0x22, 0xdc, 0x1e, 0xdf, 0x3a, 0x08, 0x94, 0x88, 0x11, 0x1c, 0xc9, 0x8d, 0x1f, 0x2b, 0xa6, + 0xfe, 0xa3, 0x22, 0x28, 0x81, 0xe9, 0x1e, 0x3c, 0xd4, 0x3a, 0xc2, 0x65, 0xf2, 0x53, 0xd1, 0x2b, + 0x26, 0x8c, 0x85, 0xc2, 0xa8, 0x75, 0x5a, 0x2d, 0x1d, 0x87, 0x1e, 0xdb, 0x1a, 0x8c, 0xc7, 0x99, + 0x85, 0x84, 0x7c, 0x37, 0x70, 0x59, 0xec, 0x06, 0x48, 0xf8, 0x10, 0xae, 0xee, 0x72, 0x16, 0x5a, + 0x92, 0x2b, 0xf9, 0x76, 0x0e, 0xce, 0xf9, 0x9d, 0xb2, 0xb0, 0xcc, 0xcc, 0xe2, 0x49, 0xbb, 0x63, + 0x79, 0xfe, 0x4e, 0xe4, 0x8d, 0xec, 0xea, 0x78, 0x27, 0xdd, 0x4a, 0x2b, 0xcc, 0x5b, 0x12, 0x04, + 0x96, 0x08, 0x14, 0xc2, 0x46, 0x9a, 0x7a, 0x03, 0x89, 0xb4, 0xd4, 0x7a, 0x2f, 0xdf, 0x83, 0x4b, + 0x99, 0x2c, 0x77, 0x32, 0x43, 0x7b, 0x65, 0x33, 0xf4, 0x7f, 0xc8, 0x85, 0x13, 0x51, 0x4c, 0x48, + 0xe4, 0x16, 0x40, 0x08, 0x12, 0x1b, 0xd3, 0x91, 0xed, 0xad, 0x71, 0x08, 0x85, 0xa6, 0x49, 0x14, + 0x64, 0x01, 0x4a, 0x42, 0x2c, 0x3c, 0xbb, 0xef, 0x17, 0x76, 0xe8, 0x85, 0x5b, 0xb2, 0x1c, 0x70, + 0xd3, 0x29, 0xbe, 0x59, 0xb0, 0xb9, 0xfc, 0x3a, 0x0c, 0xee, 0xf7, 0xbb, 0xbe, 0x5d, 0x00, 0x22, + 0xef, 0x22, 0x8f, 0xd0, 0xc4, 0x3e, 0xc6, 0x53, 0xd8, 0x0d, 0xe8, 0x67, 0x9f, 0x80, 0xf9, 0x2e, + 0xa4, 0xf8, 0xb6, 0x1d, 0x01, 0xd3, 0x02, 0x6c, 0x18, 0x5c, 0xaa, 0x2f, 0x3d, 0xb8, 0x94, 0xfa, + 0x33, 0x05, 0xb8, 0x20, 0x77, 0x48, 0x85, 0x62, 0xc8, 0xfc, 0xd3, 0x4e, 0xf9, 0x04, 0x3b, 0x45, + 0x85, 0x12, 0xdf, 0x3c, 0x88, 0xdc, 0x05, 0xfc, 0x60, 0x07, 0x21, 0x9a, 0xc0, 0xa8, 0xff, 0x6b, + 0x1e, 0x86, 0x17, 0x6d, 0xd7, 0x5b, 0x75, 0xa8, 0xbb, 0xa8, 0x3b, 0xee, 0x09, 0xee, 0x8e, 0x2f, + 0xc1, 0x30, 0x86, 0x07, 0x6a, 0x51, 0x8b, 0x87, 0xd0, 0xe9, 0x95, 0x92, 0x8d, 0xf8, 0x08, 0x91, + 0x57, 0x2a, 0x42, 0xc8, 0xb4, 0x9f, 0x5b, 0x7e, 0x52, 0xd0, 0x26, 0x6e, 0xf6, 0x71, 0xb8, 0xfa, + 0xe7, 0x0b, 0x30, 0xe4, 0x4b, 0x79, 0xc2, 0x3c, 0xae, 0x37, 0x35, 0x47, 0x2b, 0xe4, 0xdb, 0x00, + 0x8b, 0xb6, 0xe3, 0xe9, 0xcd, 0xf9, 0x50, 0xf3, 0xf1, 0x88, 0xb3, 0x8d, 0x50, 0x5e, 0x46, 0x22, + 0xc1, 0xf5, 0x2b, 0x34, 0xab, 0xf9, 0xc4, 0xc4, 0xd7, 0xaf, 0x00, 0xaa, 0x49, 0x14, 0xea, 0xdf, + 0xca, 0xc3, 0x19, 0xbf, 0x93, 0xa6, 0x9e, 0xd0, 0x46, 0xe7, 0x24, 0xcf, 0x4d, 0x51, 0x69, 0xf7, + 0xee, 0x28, 0x6d, 0xf5, 0xff, 0x94, 0x26, 0x92, 0xc9, 0xa6, 0x7d, 0x3a, 0x91, 0xfc, 0xab, 0xd0, + 0x71, 0xf5, 0xc7, 0x0b, 0x70, 0xce, 0x97, 0xfa, 0x74, 0xc7, 0xc2, 0xc3, 0x81, 0x49, 0xbd, 0xd9, + 0x3c, 0xc9, 0xbb, 0xf1, 0x41, 0x5f, 0x10, 0x0b, 0x22, 0xde, 0x9e, 0xc8, 0xf1, 0xb7, 0x22, 0xc0, + 0x75, 0xdb, 0x34, 0x34, 0x99, 0x88, 0xbc, 0x03, 0x43, 0xfe, 0xcf, 0xb2, 0xb3, 0xea, 0x6f, 0xc1, + 0xf1, 0xa8, 0x3f, 0x28, 0xa4, 0x3b, 0x91, 0xb0, 0x02, 0x91, 0x02, 0xea, 0x37, 0xfb, 0xe0, 0xf2, + 0x23, 0xd3, 0x32, 0xec, 0x0d, 0xd7, 0x4f, 0x11, 0x79, 0xec, 0x8f, 0xba, 0x8e, 0x3a, 0x35, 0xe4, + 0x7b, 0x70, 0x3e, 0x2e, 0x52, 0x27, 0x08, 0xdc, 0x2d, 0x7a, 0x67, 0x83, 0x13, 0xd4, 0xfd, 0x64, + 0x91, 0xe2, 0xbe, 0x4c, 0x4b, 0x2f, 0x19, 0xcf, 0x36, 0xd9, 0xb7, 0x9b, 0x6c, 0x93, 0xcf, 0x43, + 0xa9, 0x62, 0xb7, 0x74, 0xd3, 0x0f, 0x30, 0x83, 0xa3, 0x38, 0xa8, 0x17, 0x31, 0x9a, 0xa0, 0x60, + 0xfc, 0x45, 0xc5, 0xd8, 0x65, 0x03, 0x21, 0x7f, 0xbf, 0x00, 0xb3, 0xd2, 0x34, 0x99, 0x88, 0xd8, + 0x30, 0x2c, 0xaa, 0x13, 0xb7, 0x5b, 0x80, 0x9b, 0xa7, 0x57, 0x7c, 0x19, 0x65, 0xab, 0xd5, 0xad, + 0x48, 0x39, 0xbe, 0x8d, 0xe2, 0x49, 0x30, 0xc5, 0xc7, 0xf0, 0x7b, 0x2e, 0x2d, 0xca, 0x5f, 0x12, + 0x02, 0x4e, 0x32, 0x83, 0x49, 0x21, 0xe0, 0x2c, 0x23, 0x13, 0x91, 0x29, 0x18, 0xc3, 0xf0, 0xca, + 0xc1, 0x56, 0x8a, 0xa9, 0xc4, 0x10, 0x1a, 0x95, 0x78, 0x69, 0xc2, 0x23, 0x32, 0xb3, 0x8f, 0xab, + 0x37, 0x04, 0x5a, 0x4b, 0x96, 0x20, 0x97, 0xa0, 0x30, 0x3f, 0x5b, 0xc6, 0xdb, 0x96, 0x7e, 0x9e, + 0xda, 0xc8, 0x6a, 0xea, 0x1a, 0x83, 0x5d, 0xfe, 0x0a, 0x90, 0xe4, 0xe7, 0xec, 0xe9, 0x46, 0xe5, + 0xbf, 0x96, 0xb6, 0x7c, 0xc7, 0xdd, 0x27, 0xe6, 0x30, 0x26, 0xc2, 0x48, 0x56, 0xb1, 0xde, 0x4f, + 0x32, 0xab, 0x58, 0xe9, 0x50, 0xb3, 0x8a, 0xa9, 0xbf, 0x96, 0x83, 0xb1, 0x44, 0x08, 0x72, 0xf2, + 0x32, 0x00, 0x87, 0x48, 0xa1, 0x1e, 0x31, 0x76, 0x4a, 0x18, 0x96, 0x5c, 0x2c, 0x8f, 0x21, 0x19, + 0xb9, 0x0d, 0xfd, 0xfc, 0x97, 0x08, 0xcf, 0x94, 0x2c, 0xd2, 0xe9, 0x98, 0x86, 0x16, 0x10, 0x85, + 0xb5, 0xe0, 0x9d, 0x62, 0x21, 0xb5, 0x88, 0xb7, 0xd9, 0x0e, 0x6a, 0x61, 0x64, 0xea, 0xb7, 0xf2, + 0x30, 0x14, 0x34, 0xb8, 0x6c, 0x1c, 0x95, 0xce, 0x95, 0x44, 0x34, 0xf7, 0xc2, 0x4e, 0xd1, 0xdc, + 0x63, 0xf3, 0xad, 0x08, 0xdf, 0x7e, 0x78, 0x4f, 0xa2, 0xbe, 0x93, 0x87, 0x33, 0x41, 0xad, 0x47, + 0x78, 0x7d, 0xf5, 0x29, 0x12, 0xc9, 0xb7, 0x73, 0xa0, 0x4c, 0x98, 0xcd, 0xa6, 0x69, 0xad, 0x56, + 0xad, 0x15, 0xdb, 0x69, 0xe1, 0x84, 0x78, 0x74, 0x47, 0xb8, 0xea, 0x9f, 0xc8, 0xc1, 0x98, 0x68, + 0xd0, 0xa4, 0xee, 0x18, 0x47, 0x77, 0x3e, 0x16, 0x6f, 0xc9, 0xd1, 0xe9, 0x8b, 0xfa, 0xdb, 0x79, + 0x80, 0x59, 0xbb, 0xb1, 0x7e, 0xcc, 0x5f, 0x54, 0xbd, 0x09, 0x25, 0x1e, 0x23, 0x4b, 0x68, 0xec, + 0x98, 0x78, 0x39, 0xc4, 0x3e, 0x8d, 0x23, 0x26, 0x46, 0xc5, 0x7c, 0x5c, 0xe2, 0x31, 0xb6, 0x94, + 0x9c, 0x26, 0x8a, 0xb0, 0x4a, 0x19, 0x9d, 0x58, 0x30, 0x82, 0x4a, 0x19, 0x2c, 0x5a, 0xe9, 0xf6, + 0xd6, 0x78, 0xb1, 0x69, 0x37, 0xd6, 0x35, 0xa4, 0x57, 0xff, 0x65, 0x8e, 0xcb, 0xee, 0x98, 0xbf, + 0x0b, 0xf5, 0x3f, 0xbf, 0xb8, 0xc7, 0xcf, 0xff, 0x93, 0x39, 0x38, 0xa7, 0xd1, 0x86, 0xfd, 0x98, + 0x3a, 0x9b, 0x93, 0xb6, 0x41, 0xef, 0x51, 0x8b, 0x3a, 0x47, 0x35, 0xa2, 0xfe, 0x33, 0x4c, 0x7f, + 0x11, 0x36, 0xe6, 0x81, 0x4b, 0x8d, 0xe3, 0x93, 0x9a, 0x44, 0xfd, 0xcd, 0x3e, 0x50, 0x52, 0xad, + 0xde, 0x63, 0x6b, 0xce, 0x65, 0x6e, 0x65, 0x8a, 0x87, 0xb5, 0x95, 0xe9, 0xdd, 0xdb, 0x56, 0xa6, + 0xb4, 0xd7, 0xad, 0x4c, 0xdf, 0x6e, 0xb6, 0x32, 0xad, 0xf8, 0x56, 0xa6, 0x1f, 0xb7, 0x32, 0x2f, + 0x77, 0xdd, 0xca, 0x4c, 0x59, 0xc6, 0x3e, 0x37, 0x32, 0xc7, 0x36, 0x6d, 0xee, 0x7e, 0x76, 0x60, + 0x37, 0xd8, 0xa4, 0xd8, 0xb0, 0x1d, 0x83, 0x1a, 0x62, 0xe3, 0x85, 0xa7, 0xfe, 0x8e, 0x80, 0x69, + 0x01, 0x36, 0x91, 0x83, 0x78, 0x78, 0x37, 0x39, 0x88, 0x0f, 0x61, 0xff, 0xf5, 0x51, 0x1e, 0xc6, + 0x26, 0xa9, 0xe3, 0xf1, 0x20, 0x9c, 0x87, 0xe1, 0xd4, 0x56, 0x86, 0x33, 0x12, 0x43, 0xb4, 0xc8, + 0xf3, 0xa1, 0xa3, 0x5e, 0x83, 0x3a, 0x5e, 0xdc, 0xcf, 0x2f, 0x4e, 0xcf, 0xaa, 0xf7, 0xf3, 0x80, + 0x89, 0xb1, 0x1b, 0x54, 0xef, 0xc3, 0xb9, 0x20, 0x4d, 0xf1, 0x4b, 0x0b, 0xe8, 0xa5, 0xd4, 0x5e, + 0xc5, 0xbd, 0xa7, 0xf6, 0x52, 0x7f, 0x35, 0x07, 0xd7, 0x35, 0x6a, 0xd1, 0x0d, 0x7d, 0xb9, 0x49, + 0xa5, 0x66, 0x89, 0x95, 0x81, 0xcd, 0x1a, 0xa6, 0xdb, 0xd2, 0xbd, 0xc6, 0xda, 0x81, 0x64, 0x34, + 0x0d, 0x43, 0xf2, 0xfc, 0xb5, 0x87, 0xb9, 0x2d, 0x52, 0x4e, 0xfd, 0xcd, 0x22, 0xf4, 0x4d, 0xd8, + 0xde, 0xbb, 0xf6, 0x01, 0x73, 0xcd, 0x85, 0x53, 0x7e, 0x7e, 0x0f, 0x67, 0x3d, 0x5f, 0xc4, 0xca, + 0xa5, 0xf0, 0xfb, 0xe8, 0x04, 0xba, 0x6c, 0x27, 0xd2, 0x14, 0xf8, 0x64, 0x7b, 0xcc, 0x32, 0xf7, + 0x2a, 0x0c, 0x60, 0xfc, 0x16, 0xe9, 0x34, 0x16, 0x5d, 0xac, 0x3d, 0x06, 0x8c, 0xd7, 0x11, 0x92, + 0x92, 0xaf, 0x47, 0xa2, 0x86, 0x96, 0x0e, 0x9e, 0x95, 0x4e, 0x0e, 0x20, 0xfa, 0x32, 0xbf, 0xc8, + 0xc3, 0x36, 0x49, 0x19, 0x3c, 0xf0, 0x14, 0x25, 0xd6, 0xa4, 0x80, 0xf0, 0x10, 0x33, 0xc6, 0x4d, + 0xc2, 0xf0, 0x84, 0xed, 0x49, 0xee, 0xbc, 0x03, 0xe1, 0x43, 0x4e, 0x26, 0xf9, 0x74, 0x5f, 0xde, + 0x68, 0x19, 0xf5, 0x8f, 0x8a, 0x30, 0xe4, 0xff, 0x3c, 0x22, 0xdd, 0x79, 0x11, 0x4a, 0x33, 0xb6, + 0x94, 0xc4, 0x00, 0x5d, 0x80, 0xd7, 0x6c, 0x37, 0xe6, 0xdb, 0x2c, 0x88, 0x98, 0xd4, 0xe7, 0x6d, + 0x43, 0x76, 0x60, 0x47, 0xa9, 0x5b, 0xb6, 0x91, 0x78, 0x00, 0x1c, 0x10, 0x92, 0xeb, 0x50, 0x44, + 0xdf, 0x7f, 0xe9, 0x20, 0x3f, 0xe6, 0xef, 0x8f, 0x78, 0x49, 0x2b, 0x4b, 0x7b, 0xd5, 0xca, 0xbe, + 0xfd, 0x6a, 0x65, 0xff, 0xe1, 0x6a, 0xe5, 0xfb, 0x30, 0x84, 0x35, 0xf9, 0x39, 0xd0, 0x76, 0x5e, + 0x58, 0x2f, 0x89, 0xb5, 0x6f, 0x98, 0xb7, 0x5b, 0x64, 0x42, 0xc3, 0x25, 0x2f, 0xc2, 0x2a, 0xa6, + 0xbb, 0x70, 0x80, 0xed, 0xf4, 0x3f, 0xcc, 0x41, 0xdf, 0x03, 0x6b, 0xdd, 0xb2, 0x37, 0x0e, 0xa6, + 0x71, 0x2f, 0xc3, 0xa0, 0x60, 0x23, 0xad, 0x2e, 0xf8, 0xa6, 0xbb, 0xc3, 0xc1, 0x75, 0xe4, 0xa4, + 0xc9, 0x54, 0xe4, 0xad, 0xa0, 0x10, 0x3e, 0xef, 0x29, 0x84, 0x69, 0x40, 0xfc, 0x42, 0x8d, 0x68, + 0xe6, 0x02, 0x99, 0x9c, 0x5c, 0x81, 0x62, 0x85, 0x35, 0x55, 0x8a, 0x83, 0xcb, 0x9a, 0xa2, 0x21, + 0x54, 0xfd, 0xa8, 0x08, 0x23, 0xb1, 0x83, 0xaf, 0xe7, 0x61, 0x40, 0x1c, 0x3c, 0x99, 0x7e, 0x2a, + 0x05, 0x7c, 0xfe, 0x13, 0x00, 0xb5, 0x7e, 0xfe, 0x67, 0xd5, 0x20, 0x5f, 0x86, 0x3e, 0xdb, 0xc5, + 0x45, 0x11, 0xbf, 0x65, 0x24, 0x1c, 0x42, 0x0b, 0x35, 0xd6, 0x76, 0x3e, 0x38, 0x04, 0x89, 0xac, + 0x91, 0xb6, 0x8b, 0x9f, 0x76, 0x17, 0x06, 0x74, 0xd7, 0xa5, 0x5e, 0xdd, 0xd3, 0x57, 0xe5, 0xec, + 0x0a, 0x01, 0x50, 0x1e, 0x1d, 0x08, 0x5c, 0xd2, 0x57, 0xc9, 0x57, 0x60, 0xb8, 0xe1, 0x50, 0x5c, + 0x36, 0xf5, 0x26, 0x6b, 0xa5, 0x64, 0xd6, 0x46, 0x10, 0xf2, 0xfd, 0x49, 0x88, 0xa8, 0x1a, 0xe4, + 0x21, 0x0c, 0x8b, 0xcf, 0xe1, 0xbe, 0xf7, 0x38, 0xd0, 0x46, 0xc2, 0x65, 0x8c, 0x8b, 0x84, 0x7b, + 0xdf, 0x8b, 0x27, 0x18, 0x32, 0xb9, 0xcc, 0xd7, 0x90, 0x48, 0xc9, 0x02, 0x90, 0x0d, 0xba, 0x5c, + 0xd7, 0x3b, 0xde, 0x1a, 0xab, 0x8b, 0x07, 0x07, 0x17, 0x49, 0x05, 0xf1, 0xdd, 0x42, 0x12, 0x2b, + 0x3f, 0xe7, 0xd8, 0xa0, 0xcb, 0xe5, 0x08, 0x92, 0x3c, 0x82, 0xf3, 0xc9, 0x22, 0xec, 0x93, 0xf9, + 0xe5, 0xc0, 0xb3, 0xdb, 0x5b, 0xe3, 0xe3, 0xa9, 0x04, 0x12, 0xdb, 0xb3, 0x09, 0xb6, 0x55, 0xe3, + 0xdd, 0x62, 0x7f, 0xdf, 0x68, 0xbf, 0x36, 0xc2, 0xca, 0xfa, 0x26, 0xa4, 0x69, 0xa8, 0xbf, 0x97, + 0x63, 0xa6, 0x22, 0xfb, 0x20, 0xcc, 0xaa, 0xcc, 0x74, 0xbd, 0xb5, 0x47, 0x5d, 0x6f, 0x85, 0xf9, + 0x0f, 0x4b, 0x6e, 0x97, 0xd9, 0x55, 0x13, 0x58, 0x72, 0x0b, 0x4a, 0x86, 0x7c, 0x6a, 0x76, 0x21, + 0xda, 0x09, 0x7e, 0x3d, 0x9a, 0xa0, 0x22, 0x37, 0xa0, 0xc8, 0x96, 0xac, 0xf8, 0x96, 0x59, 0xb6, + 0x2e, 0x34, 0xa4, 0x50, 0x7f, 0x2c, 0x0f, 0x43, 0xd2, 0xd7, 0xdc, 0x39, 0xd0, 0xe7, 0xbc, 0xb1, + 0xbb, 0x66, 0xfa, 0x4e, 0x2f, 0xb8, 0x97, 0xf2, 0x9b, 0x7c, 0x37, 0x10, 0xc5, 0xae, 0x2e, 0xa4, + 0x84, 0x60, 0x5e, 0x15, 0x1f, 0x5a, 0xda, 0xfd, 0xf6, 0x91, 0xd1, 0xbf, 0x5b, 0xec, 0xcf, 0x8f, + 0x16, 0xde, 0x2d, 0xf6, 0x17, 0x47, 0x7b, 0x31, 0x92, 0x16, 0x06, 0xaf, 0xe6, 0x7b, 0x73, 0x6b, + 0xc5, 0x5c, 0x3d, 0xe6, 0xaf, 0x3f, 0x0e, 0x37, 0xca, 0x58, 0x4c, 0x36, 0xc7, 0xfc, 0x29, 0xc8, + 0x27, 0x2a, 0x9b, 0xd3, 0x7c, 0x89, 0x42, 0x36, 0xff, 0x28, 0x07, 0x4a, 0xaa, 0x6c, 0xca, 0x47, + 0xe4, 0x07, 0x71, 0x78, 0x59, 0x13, 0xff, 0x20, 0x0f, 0x63, 0x55, 0xcb, 0xa3, 0xab, 0x7c, 0xc7, + 0x78, 0xcc, 0xa7, 0x8a, 0xfb, 0x30, 0x28, 0x7d, 0x8c, 0xe8, 0xf3, 0xa7, 0x82, 0xfd, 0x78, 0x88, + 0xca, 0xe0, 0x24, 0x97, 0x3e, 0xc4, 0x44, 0xeb, 0x31, 0x21, 0x1f, 0xf3, 0x39, 0xe7, 0x78, 0x08, + 0xf9, 0x98, 0x4f, 0x5e, 0x9f, 0x52, 0x21, 0xff, 0x17, 0x79, 0x38, 0x9b, 0x52, 0x39, 0xb9, 0x0e, + 0x7d, 0xb5, 0xce, 0x32, 0x06, 0xce, 0xca, 0x85, 0x1e, 0xc3, 0x6e, 0x67, 0x19, 0x63, 0x66, 0x69, + 0x3e, 0x92, 0x2c, 0xe1, 0xf3, 0xf8, 0x85, 0x6a, 0x65, 0x52, 0x48, 0x55, 0x95, 0x1e, 0xfa, 0x33, + 0x70, 0xda, 0x97, 0x05, 0x4f, 0xe8, 0x6d, 0xd3, 0x68, 0xc4, 0x9e, 0xd0, 0xb3, 0x32, 0xe4, 0x87, + 0x60, 0xa0, 0xfc, 0x61, 0xc7, 0xa1, 0xc8, 0x97, 0x4b, 0xfc, 0x73, 0x01, 0x5f, 0x1f, 0x91, 0xc6, + 0x99, 0x47, 0x03, 0x60, 0x14, 0x71, 0xde, 0x21, 0x43, 0xb2, 0x00, 0xa5, 0x7b, 0xa6, 0x37, 0xd3, + 0x59, 0x16, 0xbd, 0x10, 0x04, 0xd7, 0xe2, 0xd0, 0x34, 0xbe, 0xb8, 0x2b, 0xe7, 0x41, 0x82, 0xe5, + 0x3d, 0x10, 0x2f, 0xa0, 0x7e, 0x2b, 0x07, 0x97, 0xb3, 0x3f, 0x97, 0x7c, 0x11, 0xfa, 0xd8, 0x56, + 0xbf, 0xac, 0xcd, 0x0b, 0x59, 0xf2, 0x94, 0xa5, 0x76, 0x93, 0xd6, 0x75, 0x47, 0xde, 0x3d, 0xf8, + 0x64, 0xe4, 0x6d, 0x18, 0xac, 0xba, 0x6e, 0x87, 0x3a, 0xb5, 0x97, 0x1f, 0x68, 0x55, 0xb1, 0xc9, + 0xc4, 0x4d, 0x8c, 0x89, 0xe0, 0xba, 0xfb, 0x72, 0x2c, 0xd6, 0x96, 0x4c, 0xaf, 0xfe, 0x64, 0x0e, + 0xae, 0x74, 0x13, 0x13, 0x79, 0x19, 0xfa, 0x97, 0xa8, 0xa5, 0x5b, 0x5e, 0xb5, 0x22, 0x9a, 0x84, + 0x7b, 0x36, 0x0f, 0x61, 0xd1, 0xad, 0x47, 0x40, 0xc8, 0x0a, 0xf1, 0x83, 0xca, 0xc0, 0x33, 0x82, + 0x1f, 0xaa, 0x22, 0x2c, 0x56, 0xc8, 0x27, 0x54, 0x7f, 0x3f, 0x0f, 0x43, 0x8b, 0xcd, 0xce, 0xaa, + 0x29, 0xad, 0x44, 0xfb, 0x36, 0xe0, 0x7d, 0x73, 0x3a, 0xbf, 0x37, 0x73, 0x9a, 0x8d, 0x5f, 0x67, + 0x9f, 0xe3, 0xd7, 0x2f, 0x47, 0xde, 0x82, 0x52, 0x1b, 0xbf, 0x23, 0x7e, 0xb4, 0xcb, 0xbf, 0x2e, + 0xeb, 0x68, 0x97, 0x97, 0x61, 0x03, 0xb6, 0x71, 0x80, 0x01, 0x1b, 0x96, 0x95, 0x04, 0x1a, 0xae, + 0x3a, 0xa7, 0x02, 0x3d, 0x14, 0x81, 0x86, 0x2b, 0xcc, 0xa9, 0x40, 0x0f, 0x20, 0xd0, 0x9f, 0xc8, + 0xc3, 0x48, 0xb4, 0x4a, 0xf2, 0x45, 0x18, 0xe4, 0xd5, 0xf0, 0x83, 0xa6, 0x9c, 0xe4, 0xa5, 0x1c, + 0x82, 0x35, 0xe0, 0x3f, 0xf0, 0x58, 0xe9, 0xed, 0xe0, 0x63, 0xb8, 0x28, 0xcf, 0x08, 0x8f, 0x04, + 0xce, 0xf8, 0xe1, 0x4b, 0x7c, 0x46, 0xe6, 0x24, 0xf2, 0x8c, 0x2c, 0xbe, 0xe6, 0x2d, 0x38, 0xb3, + 0xa6, 0xbb, 0xf5, 0xf0, 0xc4, 0x88, 0xdf, 0x27, 0xf7, 0x73, 0xcf, 0xac, 0x18, 0x4a, 0x1b, 0x59, + 0xd3, 0xdd, 0xc9, 0xf0, 0x37, 0x99, 0x02, 0xe2, 0xd0, 0x8e, 0x4b, 0xa3, 0x0c, 0x8a, 0xc8, 0x40, + 0xa4, 0x9b, 0x8e, 0x63, 0xb5, 0x31, 0x0e, 0x93, 0xd8, 0xa8, 0x5f, 0x87, 0x4b, 0x99, 0x2b, 0x0a, + 0xf9, 0x32, 0x0c, 0x2d, 0x38, 0xab, 0xba, 0x65, 0x7e, 0xc8, 0x0d, 0x82, 0x5c, 0x78, 0x26, 0x68, + 0x4b, 0x70, 0xf9, 0x9c, 0x4a, 0xa6, 0x57, 0xff, 0xd9, 0x3a, 0xf4, 0x2e, 0x58, 0x74, 0x61, 0x85, + 0xbc, 0x04, 0x03, 0x4c, 0xbf, 0x66, 0x6d, 0x26, 0xad, 0x9c, 0xf0, 0xdf, 0x90, 0x14, 0x0f, 0x11, + 0x33, 0x3d, 0x5a, 0x48, 0x45, 0xee, 0xf2, 0xfc, 0xf9, 0x7c, 0x4a, 0x16, 0x12, 0x26, 0x72, 0x19, + 0x8e, 0x99, 0xe9, 0xd1, 0x24, 0x3a, 0xbf, 0x94, 0x78, 0x20, 0x54, 0x48, 0x96, 0xe2, 0x18, 0xbf, + 0x94, 0x18, 0x4e, 0xb3, 0x69, 0xa9, 0xe9, 0xe3, 0xbb, 0xb7, 0x24, 0xc5, 0x4c, 0x8f, 0x96, 0x9e, + 0xd2, 0x7e, 0x48, 0x76, 0x68, 0x8d, 0x3b, 0x9d, 0xc8, 0xb8, 0x99, 0x1e, 0x2d, 0x42, 0x4b, 0x5e, + 0x83, 0x41, 0xf1, 0xfb, 0x5d, 0x5b, 0xdc, 0x68, 0x4b, 0xd1, 0x8c, 0x24, 0xd4, 0x4c, 0x8f, 0x26, + 0x53, 0x4a, 0x95, 0x2e, 0x3a, 0xa6, 0xe5, 0x89, 0x37, 0xd2, 0xf1, 0x4a, 0x11, 0x27, 0x55, 0x8a, + 0xbf, 0xc9, 0xdb, 0x30, 0x1c, 0x84, 0x89, 0xfa, 0x80, 0x36, 0x3c, 0x71, 0xf8, 0x7e, 0x3e, 0x56, + 0x98, 0x23, 0x67, 0x7a, 0xb4, 0x28, 0x35, 0xb9, 0x01, 0x25, 0x8d, 0xba, 0xe6, 0x87, 0xfe, 0x75, + 0xf5, 0x88, 0x34, 0x2d, 0x98, 0x1f, 0x32, 0x29, 0x09, 0x3c, 0xeb, 0x9d, 0xf0, 0x7e, 0x5c, 0x1c, + 0x95, 0x93, 0x58, 0x2d, 0x53, 0x96, 0xc1, 0x7a, 0x47, 0x72, 0x8e, 0xf8, 0x4a, 0x18, 0x3c, 0x4b, + 0xa4, 0xdc, 0x1c, 0x8c, 0x47, 0x29, 0x90, 0xb1, 0x33, 0x3d, 0x5a, 0x8c, 0x5e, 0x92, 0x6a, 0xc5, + 0x74, 0xd7, 0x45, 0xbc, 0xd2, 0xb8, 0x54, 0x19, 0x4a, 0x92, 0x2a, 0xfb, 0x29, 0x55, 0x3d, 0x4f, + 0xbd, 0x0d, 0xdb, 0x59, 0x17, 0xd1, 0x49, 0xe3, 0x55, 0x0b, 0xac, 0x54, 0xb5, 0x80, 0xc8, 0x55, + 0xb3, 0xc9, 0x7a, 0x24, 0xbd, 0x6a, 0xdd, 0xd3, 0xe5, 0xaa, 0xf9, 0x49, 0xa0, 0xdf, 0x49, 0xb3, + 0x54, 0x7f, 0xcc, 0x33, 0x9f, 0x27, 0x3b, 0x14, 0x71, 0x52, 0x87, 0xe2, 0x6f, 0x56, 0xa9, 0x94, + 0xdd, 0x5a, 0xa4, 0x36, 0x0f, 0x2a, 0x95, 0x50, 0xac, 0x52, 0x39, 0x0f, 0xf6, 0x5d, 0x39, 0xe9, + 0xb3, 0x32, 0x16, 0xed, 0xa0, 0x10, 0xc3, 0x3a, 0x48, 0x4a, 0x0e, 0x3d, 0x8e, 0x09, 0x65, 0x15, + 0x82, 0xe4, 0x83, 0x41, 0x0b, 0x27, 0x17, 0x67, 0x7a, 0x34, 0x4c, 0x35, 0xab, 0xf2, 0x54, 0xc5, + 0xca, 0x59, 0xa4, 0x18, 0xf2, 0x29, 0x18, 0x6c, 0xa6, 0x47, 0xe3, 0x69, 0x8c, 0x5f, 0x92, 0x92, + 0x02, 0x2a, 0xe7, 0xa2, 0x53, 0x44, 0x80, 0x60, 0x53, 0x44, 0x98, 0x3a, 0x70, 0x3a, 0x99, 0x38, + 0x4f, 0x39, 0x1f, 0x5d, 0x99, 0xe2, 0xf8, 0x99, 0x1e, 0x2d, 0x99, 0x6c, 0xef, 0xb5, 0x48, 0x2e, + 0x39, 0xe5, 0x42, 0x2c, 0x84, 0x58, 0x88, 0x62, 0xe2, 0x92, 0xb3, 0xce, 0x2d, 0xc4, 0xf2, 0x9e, + 0x8b, 0xc9, 0xea, 0x62, 0x74, 0xe3, 0x94, 0x42, 0x32, 0xd3, 0xa3, 0xa5, 0x95, 0x24, 0x93, 0x89, + 0x8c, 0x6e, 0x8a, 0x12, 0xf5, 0xcd, 0x89, 0xa1, 0x67, 0x7a, 0xb4, 0x44, 0x0e, 0xb8, 0xbb, 0x72, + 0x2a, 0x35, 0xe5, 0x52, 0xb4, 0x13, 0x43, 0x0c, 0xeb, 0x44, 0x29, 0xe5, 0xda, 0x5d, 0x39, 0xbd, + 0x96, 0x72, 0x39, 0x59, 0x2a, 0x9c, 0x39, 0xa5, 0x34, 0x5c, 0x5a, 0x7a, 0xc6, 0x20, 0xe5, 0x29, + 0x91, 0xb3, 0x55, 0x94, 0x4f, 0xa3, 0x99, 0xe9, 0xd1, 0xd2, 0xb3, 0x0d, 0x69, 0xe9, 0xa9, 0x76, + 0x94, 0x2b, 0xdd, 0x78, 0x06, 0xad, 0x4b, 0x4f, 0xd3, 0xa3, 0x77, 0x49, 0x7c, 0xa2, 0x5c, 0x8d, + 0x6e, 0xb1, 0x32, 0x09, 0x67, 0x7a, 0xb4, 0x2e, 0xe9, 0x53, 0x1e, 0x64, 0x64, 0x21, 0x51, 0xae, + 0x45, 0x53, 0x36, 0xa7, 0x12, 0xcd, 0xf4, 0x68, 0x19, 0x39, 0x4c, 0x1e, 0x64, 0x24, 0xa9, 0x50, + 0xc6, 0xbb, 0xb2, 0x0d, 0xe4, 0x91, 0x91, 0xe2, 0x62, 0x21, 0x35, 0xbf, 0x83, 0xf2, 0x74, 0x54, + 0x75, 0x53, 0x48, 0x98, 0xea, 0xa6, 0x65, 0x86, 0x58, 0x48, 0x4d, 0x48, 0xa0, 0x3c, 0xd3, 0x85, + 0x61, 0xd0, 0xc6, 0xd4, 0x54, 0x06, 0x0b, 0xa9, 0x19, 0x01, 0x14, 0x35, 0xca, 0x30, 0x85, 0x84, + 0x31, 0x4c, 0xcb, 0x25, 0xb0, 0x90, 0x1a, 0x38, 0x5e, 0x79, 0xb6, 0x0b, 0xc3, 0xb0, 0x85, 0x69, + 0x21, 0xe7, 0x5f, 0x8b, 0x44, 0x6e, 0x57, 0x3e, 0x17, 0x9d, 0x37, 0x24, 0x14, 0x9b, 0x37, 0xe4, + 0x18, 0xef, 0x93, 0x89, 0xd8, 0xb4, 0xca, 0x73, 0xd1, 0x61, 0x1e, 0x43, 0xb3, 0x61, 0x1e, 0x8f, + 0x66, 0x3b, 0x99, 0x88, 0xd1, 0xa9, 0x5c, 0xcf, 0x62, 0x82, 0xe8, 0x28, 0x13, 0x1e, 0xd5, 0xb3, + 0x9a, 0x12, 0x24, 0x52, 0xf9, 0x7c, 0xd4, 0xaf, 0x3c, 0x41, 0x30, 0xd3, 0xa3, 0xa5, 0x84, 0x96, + 0xd4, 0xd2, 0x23, 0x22, 0x29, 0x37, 0xa2, 0xc3, 0x36, 0x8d, 0x86, 0x0d, 0xdb, 0xd4, 0x68, 0x4a, + 0xb3, 0x69, 0x8f, 0x5f, 0x94, 0x9b, 0x51, 0xc3, 0x2c, 0x49, 0xc1, 0x0c, 0xb3, 0x94, 0x47, 0x33, + 0x5a, 0x7a, 0x8c, 0x1f, 0xe5, 0xf9, 0xae, 0x2d, 0x44, 0x9a, 0x94, 0x16, 0xf2, 0x90, 0x37, 0xa1, + 0xed, 0xf4, 0xa0, 0xdd, 0xb4, 0x75, 0x43, 0xf9, 0x42, 0xaa, 0xed, 0xc4, 0x91, 0x92, 0xed, 0xc4, + 0x01, 0x6c, 0x95, 0x97, 0xdf, 0x58, 0x28, 0x2f, 0x44, 0x57, 0x79, 0x19, 0xc7, 0x56, 0xf9, 0xc8, + 0x7b, 0x8c, 0xc9, 0xc4, 0x7b, 0x04, 0xe5, 0xc5, 0xa8, 0x02, 0xc4, 0xd0, 0x4c, 0x01, 0xe2, 0x2f, + 0x18, 0xbe, 0x91, 0xed, 0xc1, 0xaf, 0xdc, 0x42, 0x6e, 0x4f, 0xfb, 0xdc, 0xb2, 0xe8, 0x66, 0x7a, + 0xb4, 0xec, 0x57, 0x00, 0xd5, 0x14, 0x87, 0x7c, 0xe5, 0x76, 0x54, 0xc1, 0x12, 0x04, 0x4c, 0xc1, + 0x92, 0x6e, 0xfc, 0xd5, 0x14, 0x8f, 0x7a, 0xe5, 0x8b, 0x99, 0xac, 0x82, 0x6f, 0x4e, 0xf1, 0xc3, + 0xbf, 0x2b, 0xbb, 0xc4, 0x2b, 0x2f, 0x45, 0x17, 0xbb, 0x10, 0xc3, 0x16, 0x3b, 0xc9, 0x75, 0xfe, + 0xae, 0xec, 0x0c, 0xae, 0xdc, 0x49, 0x96, 0x0a, 0x97, 0x48, 0xc9, 0x69, 0x5c, 0x4b, 0xf7, 0xa1, + 0x56, 0x5e, 0x8e, 0x6a, 0x5d, 0x1a, 0x0d, 0xd3, 0xba, 0x54, 0xff, 0xeb, 0xe9, 0xa4, 0x2b, 0xb4, + 0x72, 0x37, 0xbe, 0x27, 0x8f, 0xe2, 0x99, 0xe5, 0x93, 0x70, 0x9f, 0xfe, 0x4a, 0x3c, 0x5c, 0x9f, + 0xf2, 0x4a, 0xec, 0xda, 0x39, 0x82, 0x65, 0xf6, 0x6d, 0x2c, 0xbc, 0xdf, 0x57, 0xe2, 0x11, 0xee, + 0x94, 0x57, 0xd3, 0x39, 0x04, 0xba, 0x12, 0x8f, 0x88, 0xf7, 0x95, 0x78, 0x50, 0x38, 0xe5, 0xb5, + 0x74, 0x0e, 0x81, 0x74, 0xe3, 0x41, 0xe4, 0x5e, 0x92, 0xc2, 0xd4, 0x2b, 0x5f, 0x8a, 0x9a, 0x8e, + 0x01, 0x82, 0x99, 0x8e, 0x61, 0x30, 0xfb, 0x97, 0xa4, 0xf0, 0xee, 0xca, 0xeb, 0x89, 0x22, 0x41, + 0x63, 0xa5, 0x20, 0xf0, 0x2f, 0x49, 0x61, 0xd1, 0x95, 0x37, 0x12, 0x45, 0x82, 0xd6, 0x49, 0xc1, + 0xd3, 0x8d, 0x6e, 0xef, 0x67, 0x95, 0x37, 0xa3, 0x87, 0xd1, 0xd9, 0x94, 0x33, 0x3d, 0x5a, 0xb7, + 0x77, 0xb8, 0xdf, 0xc8, 0x76, 0x2c, 0x57, 0xde, 0x8a, 0x0e, 0xe1, 0x2c, 0x3a, 0x36, 0x84, 0x33, + 0x9d, 0xd3, 0xdf, 0x8e, 0xc5, 0xd2, 0x50, 0xde, 0x8e, 0x4e, 0x71, 0x11, 0x24, 0x9b, 0xe2, 0xe2, + 0x91, 0x37, 0x22, 0x41, 0x22, 0x94, 0x2f, 0x47, 0xa7, 0x38, 0x19, 0xc7, 0xa6, 0xb8, 0x48, 0x40, + 0x89, 0xc9, 0x44, 0xec, 0x02, 0xe5, 0x9d, 0xe8, 0x14, 0x17, 0x43, 0xb3, 0x29, 0x2e, 0x1e, 0xed, + 0xe0, 0xed, 0xd8, 0x13, 0x7e, 0xe5, 0x2b, 0xe9, 0xed, 0x47, 0xa4, 0xdc, 0x7e, 0xfe, 0xe0, 0x5f, + 0x4b, 0x7f, 0x8b, 0xae, 0x94, 0xa3, 0xe3, 0x37, 0x8d, 0x86, 0x8d, 0xdf, 0xd4, 0x77, 0xec, 0xf1, + 0x8d, 0x83, 0xd0, 0xaa, 0x89, 0x2e, 0x1b, 0x87, 0xd0, 0x14, 0x49, 0x01, 0x47, 0xf6, 0xc8, 0x7c, + 0x23, 0x34, 0x99, 0xb1, 0x47, 0xf6, 0xb7, 0x41, 0x31, 0x7a, 0x36, 0xbb, 0x26, 0xfc, 0x9c, 0x95, + 0x4a, 0x74, 0x76, 0x4d, 0x10, 0xb0, 0xd9, 0x35, 0xe9, 0x1d, 0x3d, 0x0d, 0xa3, 0x42, 0x8b, 0xb8, + 0xfb, 0xb6, 0x69, 0xad, 0x2a, 0x53, 0xb1, 0xf7, 0x9e, 0x31, 0x3c, 0x9b, 0x9d, 0xe2, 0x30, 0x5c, + 0xaf, 0x39, 0x6c, 0xb2, 0x69, 0xb6, 0x97, 0x6d, 0xdd, 0x31, 0x6a, 0xd4, 0x32, 0x94, 0xe9, 0xd8, + 0x7a, 0x9d, 0x42, 0x83, 0xeb, 0x75, 0x0a, 0x1c, 0x43, 0xd4, 0xc5, 0xe0, 0x1a, 0x6d, 0x50, 0xf3, + 0x31, 0x55, 0xee, 0x21, 0xdb, 0xf1, 0x2c, 0xb6, 0x82, 0x6c, 0xa6, 0x47, 0xcb, 0xe2, 0xc0, 0x6c, + 0xf5, 0xb9, 0xcd, 0xda, 0x7b, 0xb3, 0x41, 0xf8, 0x83, 0x45, 0x87, 0xb6, 0x75, 0x87, 0x2a, 0x33, + 0x51, 0x5b, 0x3d, 0x95, 0x88, 0xd9, 0xea, 0xa9, 0x88, 0x24, 0x5b, 0x7f, 0x2c, 0x54, 0xbb, 0xb1, + 0x0d, 0x47, 0x44, 0x7a, 0x69, 0x36, 0x3b, 0x45, 0x11, 0x4c, 0x40, 0xb3, 0xb6, 0xb5, 0x8a, 0x27, + 0x15, 0xef, 0x46, 0x67, 0xa7, 0x6c, 0x4a, 0x36, 0x3b, 0x65, 0x63, 0x99, 0xaa, 0x47, 0xb1, 0x7c, + 0x0c, 0xde, 0x8f, 0xaa, 0x7a, 0x0a, 0x09, 0x53, 0xf5, 0x14, 0x70, 0x92, 0xa1, 0x46, 0x5d, 0xea, + 0x29, 0xb3, 0xdd, 0x18, 0x22, 0x49, 0x92, 0x21, 0x82, 0x93, 0x0c, 0xa7, 0xa9, 0xd7, 0x58, 0x53, + 0xe6, 0xba, 0x31, 0x44, 0x92, 0x24, 0x43, 0x04, 0xb3, 0xcd, 0x66, 0x14, 0x3c, 0xd1, 0x69, 0xae, + 0xfb, 0x7d, 0x36, 0x1f, 0xdd, 0x6c, 0x66, 0x12, 0xb2, 0xcd, 0x66, 0x26, 0x92, 0xfc, 0xe4, 0xae, + 0xfd, 0xf0, 0x95, 0x05, 0xac, 0xf0, 0x56, 0x68, 0x17, 0xec, 0xa6, 0xd4, 0x4c, 0x8f, 0xb6, 0x5b, + 0x3f, 0xff, 0x2f, 0x04, 0x4e, 0xab, 0xca, 0xa2, 0x38, 0x07, 0xf7, 0xcf, 0x2a, 0x38, 0x78, 0xa6, + 0x47, 0x0b, 0xdc, 0x5a, 0x5f, 0x83, 0x41, 0xfc, 0xa8, 0xaa, 0x65, 0x7a, 0x95, 0x09, 0xe5, 0xbd, + 0xe8, 0x96, 0x49, 0x42, 0xb1, 0x2d, 0x93, 0xf4, 0x93, 0x4d, 0xe2, 0xf8, 0x93, 0x4f, 0x31, 0x95, + 0x09, 0x45, 0x8b, 0x4e, 0xe2, 0x11, 0x24, 0x9b, 0xc4, 0x23, 0x80, 0xa0, 0xde, 0x8a, 0x63, 0xb7, + 0x2b, 0x13, 0x4a, 0x2d, 0xa5, 0x5e, 0x8e, 0x0a, 0xea, 0xe5, 0x3f, 0x83, 0x7a, 0x6b, 0x6b, 0x1d, + 0xaf, 0xc2, 0xbe, 0x71, 0x29, 0xa5, 0x5e, 0x1f, 0x19, 0xd4, 0xeb, 0x03, 0xd8, 0x54, 0x88, 0x80, + 0x45, 0xc7, 0x66, 0x93, 0xf6, 0x7d, 0xb3, 0xd9, 0x54, 0x1e, 0x44, 0xa7, 0xc2, 0x38, 0x9e, 0x4d, + 0x85, 0x71, 0x18, 0x33, 0x3d, 0x79, 0xab, 0xe8, 0x72, 0x67, 0x55, 0x79, 0x18, 0x35, 0x3d, 0x43, + 0x0c, 0x33, 0x3d, 0xc3, 0x5f, 0xb8, 0xbb, 0x60, 0xbf, 0x34, 0xba, 0xe2, 0x50, 0x77, 0x4d, 0x79, + 0x14, 0xdb, 0x5d, 0x48, 0x38, 0xdc, 0x5d, 0x48, 0xbf, 0xc9, 0x2a, 0x3c, 0x15, 0x59, 0x68, 0xfc, + 0x3b, 0x9e, 0x1a, 0xd5, 0x9d, 0xc6, 0x9a, 0xf2, 0x55, 0x64, 0xf5, 0x6c, 0xea, 0x52, 0x15, 0x25, + 0x9d, 0xe9, 0xd1, 0xba, 0x71, 0xc2, 0x6d, 0xf9, 0x7b, 0xb3, 0x3c, 0x96, 0xac, 0xb6, 0x38, 0xe9, + 0x6f, 0x42, 0xdf, 0x8f, 0x6d, 0xcb, 0x93, 0x24, 0xb8, 0x2d, 0x4f, 0x82, 0x49, 0x1b, 0xae, 0xc5, + 0xb6, 0x6a, 0x73, 0x7a, 0x93, 0xed, 0x4b, 0xa8, 0xb1, 0xa8, 0x37, 0xd6, 0xa9, 0xa7, 0x7c, 0x0d, + 0x79, 0x5f, 0xcf, 0xd8, 0xf0, 0xc5, 0xa8, 0x67, 0x7a, 0xb4, 0x1d, 0xf8, 0x11, 0x15, 0x8a, 0xb5, + 0xe9, 0xa5, 0x45, 0xe5, 0xeb, 0xd1, 0xf3, 0x4d, 0x06, 0x9b, 0xe9, 0xd1, 0x10, 0xc7, 0xac, 0xb4, + 0x07, 0xed, 0x55, 0x47, 0x37, 0x28, 0x37, 0xb4, 0xd0, 0x76, 0x13, 0x06, 0xe8, 0x0f, 0x45, 0xad, + 0xb4, 0x2c, 0x3a, 0x66, 0xa5, 0x65, 0xe1, 0x98, 0xa2, 0x46, 0xd2, 0xa6, 0x28, 0x3f, 0x1c, 0x55, + 0xd4, 0x08, 0x92, 0x29, 0x6a, 0x34, 0xc9, 0xca, 0x57, 0xe1, 0x42, 0xb0, 0x9f, 0x17, 0xeb, 0x2f, + 0xef, 0x34, 0xe5, 0x1b, 0xc8, 0xe7, 0x5a, 0xe2, 0x32, 0x20, 0x42, 0x35, 0xd3, 0xa3, 0x65, 0x94, + 0x67, 0x2b, 0x6e, 0x22, 0x23, 0x98, 0x30, 0x2f, 0x7e, 0x24, 0xba, 0xe2, 0x66, 0x90, 0xb1, 0x15, + 0x37, 0x03, 0x95, 0xca, 0x5c, 0x08, 0x55, 0xdf, 0x81, 0x79, 0x20, 0xd3, 0x2c, 0x0e, 0xa9, 0xcc, + 0x85, 0xa5, 0xb6, 0xbc, 0x03, 0xf3, 0xc0, 0x5a, 0xcb, 0xe2, 0x40, 0x6e, 0x40, 0xa9, 0x56, 0x9b, + 0xd3, 0x3a, 0x96, 0xd2, 0x88, 0x79, 0xeb, 0x22, 0x74, 0xa6, 0x47, 0x13, 0x78, 0x66, 0x06, 0x4d, + 0x35, 0x75, 0xd7, 0x33, 0x1b, 0x2e, 0x8e, 0x18, 0x7f, 0x84, 0x18, 0x51, 0x33, 0x28, 0x8d, 0x86, + 0x99, 0x41, 0x69, 0x70, 0x66, 0x2f, 0x4e, 0xea, 0xae, 0xab, 0x5b, 0x86, 0xa3, 0x4f, 0xe0, 0x32, + 0x41, 0x63, 0xaf, 0xc1, 0x22, 0x58, 0x66, 0x2f, 0x46, 0x21, 0x78, 0xf8, 0xee, 0x43, 0x7c, 0x33, + 0x67, 0x25, 0x76, 0xf8, 0x1e, 0xc3, 0xe3, 0xe1, 0x7b, 0x0c, 0x86, 0x76, 0xa7, 0x0f, 0xd3, 0xe8, + 0xaa, 0xc9, 0x44, 0xa4, 0xac, 0xc6, 0xec, 0xce, 0x38, 0x01, 0xda, 0x9d, 0x71, 0x60, 0xa4, 0x49, + 0xfe, 0x72, 0xbb, 0x96, 0xd1, 0xa4, 0x70, 0x95, 0x4d, 0x94, 0x61, 0xeb, 0x77, 0x38, 0x38, 0x2a, + 0x9b, 0x96, 0xde, 0xb2, 0x2b, 0x13, 0xbe, 0xd4, 0xcd, 0xe8, 0xfa, 0x9d, 0x49, 0xc8, 0xd6, 0xef, + 0x4c, 0x24, 0x9b, 0x5d, 0xfd, 0x8d, 0xd6, 0x9a, 0xee, 0x50, 0xa3, 0x62, 0x3a, 0x78, 0xb2, 0xb8, + 0xc9, 0xb7, 0x86, 0x1f, 0x44, 0x67, 0xd7, 0x2e, 0xa4, 0x6c, 0x76, 0xed, 0x82, 0x66, 0x46, 0x5e, + 0x3a, 0x5a, 0xa3, 0xba, 0xa1, 0xac, 0x47, 0x8d, 0xbc, 0x6c, 0x4a, 0x66, 0xe4, 0x65, 0x63, 0xb3, + 0x3f, 0xe7, 0x91, 0x63, 0x7a, 0x54, 0x69, 0xee, 0xe6, 0x73, 0x90, 0x34, 0xfb, 0x73, 0x10, 0xcd, + 0x36, 0x84, 0xf1, 0x0e, 0x69, 0x45, 0x37, 0x84, 0xc9, 0x6e, 0x88, 0x97, 0x60, 0x16, 0x8b, 0x78, + 0x14, 0xa8, 0x58, 0x51, 0x8b, 0x45, 0x80, 0x99, 0xc5, 0x12, 0x3e, 0x1b, 0x8c, 0x3c, 0x05, 0x53, + 0xec, 0xe8, 0x1a, 0x2a, 0xe3, 0xd8, 0x1a, 0x1a, 0x79, 0x36, 0xf6, 0x5a, 0xe4, 0x9d, 0x83, 0xd2, + 0x8e, 0x5a, 0x1d, 0x12, 0x8a, 0x59, 0x1d, 0xf2, 0x8b, 0x88, 0x49, 0x38, 0x83, 0xb7, 0xe0, 0x5a, + 0x27, 0xb8, 0xc7, 0xf9, 0xd1, 0xe8, 0x67, 0xc6, 0xd0, 0xec, 0x33, 0x63, 0xa0, 0x08, 0x13, 0x31, + 0x6d, 0x39, 0x19, 0x4c, 0xc2, 0xf3, 0xc1, 0x18, 0x88, 0xcc, 0x02, 0xa9, 0x95, 0xe7, 0x66, 0xab, + 0xc6, 0xa2, 0x7c, 0x45, 0xe6, 0x46, 0x4f, 0x60, 0x93, 0x14, 0x33, 0x3d, 0x5a, 0x4a, 0x39, 0xf2, + 0x01, 0x5c, 0x11, 0x50, 0xf1, 0xe2, 0x7b, 0xd1, 0xb1, 0x1f, 0x9b, 0x46, 0xb0, 0x20, 0x78, 0x51, + 0x3f, 0xba, 0x6e, 0xb4, 0x33, 0x3d, 0x5a, 0x57, 0x5e, 0xd9, 0x75, 0x89, 0xf5, 0xa1, 0xb3, 0x9b, + 0xba, 0x82, 0x45, 0xa2, 0x2b, 0xaf, 0xec, 0xba, 0x84, 0xdc, 0x1f, 0xef, 0xa6, 0xae, 0xa0, 0x13, + 0xba, 0xf2, 0x22, 0x2e, 0x8c, 0x77, 0xc3, 0x97, 0x9b, 0x4d, 0x65, 0x03, 0xab, 0xfb, 0xfc, 0x6e, + 0xaa, 0x2b, 0xa3, 0xc1, 0xb9, 0x13, 0x47, 0x36, 0x4b, 0x2f, 0xb4, 0xa9, 0x55, 0x8b, 0x2c, 0x40, + 0x4f, 0xa2, 0xb3, 0x74, 0x82, 0x80, 0xcd, 0xd2, 0x09, 0x20, 0x1b, 0x50, 0xf2, 0x73, 0x19, 0x65, + 0x33, 0x3a, 0xa0, 0x64, 0x1c, 0x1b, 0x50, 0x91, 0xa7, 0x35, 0x0b, 0x70, 0x76, 0x61, 0xdd, 0xd3, + 0x7d, 0x0b, 0xd2, 0x15, 0x5d, 0xf9, 0x61, 0xec, 0x92, 0x29, 0x49, 0x82, 0x97, 0x4c, 0x49, 0x30, + 0x1b, 0x23, 0x0c, 0x5c, 0xdb, 0xb4, 0x1a, 0xd3, 0xba, 0xd9, 0xec, 0x38, 0x54, 0xf9, 0xd7, 0xa2, + 0x63, 0x24, 0x86, 0x66, 0x63, 0x24, 0x06, 0x62, 0x0b, 0x34, 0x03, 0x95, 0x5d, 0xd7, 0x5c, 0xb5, + 0xc4, 0xbe, 0xb2, 0xd3, 0xf4, 0x94, 0x7f, 0x3d, 0xba, 0x40, 0xa7, 0xd1, 0xb0, 0x05, 0x3a, 0x0d, + 0x8e, 0xa7, 0x4e, 0xac, 0x17, 0xd8, 0xe2, 0x21, 0xdf, 0x55, 0xfe, 0x1b, 0xb1, 0x53, 0xa7, 0x14, + 0x1a, 0x3c, 0x75, 0x4a, 0x81, 0xb3, 0xf5, 0x91, 0xdb, 0x64, 0xb3, 0x66, 0x70, 0x57, 0xfd, 0x6f, + 0x46, 0xd7, 0xc7, 0x38, 0x9e, 0xad, 0x8f, 0x71, 0x58, 0x94, 0x8f, 0xe8, 0x82, 0x7f, 0x2b, 0x8b, + 0x4f, 0x20, 0xff, 0x44, 0x19, 0x72, 0x4f, 0xe6, 0x23, 0x46, 0xca, 0x8f, 0xe5, 0xb2, 0x18, 0x05, + 0xc3, 0x23, 0x51, 0x28, 0xca, 0x48, 0xa3, 0x8f, 0x4d, 0xba, 0xa1, 0x7c, 0x33, 0x93, 0x11, 0x27, + 0x88, 0x32, 0xe2, 0x30, 0xf2, 0x3e, 0x5c, 0x08, 0x61, 0x73, 0xb4, 0xb5, 0x1c, 0xcc, 0x4c, 0x7f, + 0x2c, 0x17, 0x35, 0x83, 0xd3, 0xc9, 0x98, 0x19, 0x9c, 0x8e, 0x49, 0x63, 0x2d, 0x44, 0xf7, 0x6f, + 0xef, 0xc0, 0x3a, 0x90, 0x60, 0x06, 0x83, 0x34, 0xd6, 0x42, 0x9a, 0x3f, 0xbe, 0x03, 0xeb, 0x40, + 0xa6, 0x19, 0x0c, 0xc8, 0x4f, 0xe5, 0xe0, 0x7a, 0x3a, 0xaa, 0xdc, 0x6c, 0x4e, 0xdb, 0x4e, 0x88, + 0x53, 0xfe, 0x78, 0x2e, 0x7a, 0xd0, 0xb0, 0xbb, 0x62, 0x33, 0x3d, 0xda, 0x2e, 0x2b, 0x20, 0x5f, + 0x86, 0xe1, 0x72, 0xc7, 0x30, 0x3d, 0xbc, 0x78, 0x63, 0x86, 0xf3, 0x4f, 0xe4, 0x62, 0x5b, 0x1c, + 0x19, 0x8b, 0x5b, 0x1c, 0x19, 0x40, 0xde, 0x85, 0xb1, 0x1a, 0x6d, 0x74, 0x1c, 0xd3, 0xdb, 0xd4, + 0x68, 0xdb, 0x76, 0x3c, 0xc6, 0xe3, 0x4f, 0xe4, 0xa2, 0x93, 0x58, 0x82, 0x82, 0x4d, 0x62, 0x09, + 0x20, 0x79, 0x98, 0xb8, 0x95, 0x17, 0x9d, 0xf9, 0x93, 0xb9, 0xae, 0xd7, 0xf2, 0x41, 0x5f, 0xa6, + 0x17, 0x27, 0x8b, 0xb1, 0x5b, 0x74, 0xc1, 0xf5, 0xa7, 0x72, 0x5d, 0xae, 0xd1, 0xa5, 0x19, 0x2e, + 0x09, 0x66, 0x1c, 0x53, 0x72, 0xc8, 0x2b, 0x7f, 0x32, 0xd7, 0xe5, 0xda, 0x3b, 0xe4, 0x98, 0x96, + 0x7e, 0xfe, 0x15, 0xee, 0x29, 0x22, 0x18, 0xfd, 0x3b, 0xb9, 0xa4, 0xab, 0x48, 0x50, 0x5e, 0x22, + 0x64, 0xc5, 0x1e, 0xb8, 0x81, 0xd2, 0x7f, 0x94, 0x4b, 0xfa, 0xe6, 0x85, 0xc5, 0xc2, 0x5f, 0x84, + 0xc2, 0xe5, 0xa9, 0x27, 0x1e, 0x75, 0x2c, 0xbd, 0x89, 0xdd, 0x59, 0xf3, 0x6c, 0x47, 0x5f, 0xa5, + 0x53, 0x96, 0xbe, 0xdc, 0xa4, 0xca, 0xb7, 0x72, 0x51, 0x0b, 0x36, 0x9b, 0x94, 0x59, 0xb0, 0xd9, + 0x58, 0xb2, 0x06, 0x4f, 0xa5, 0x61, 0x2b, 0xa6, 0x8b, 0xf5, 0x7c, 0x3b, 0x17, 0x35, 0x61, 0xbb, + 0xd0, 0x32, 0x13, 0xb6, 0x0b, 0x9a, 0xdc, 0x81, 0x81, 0x09, 0xdb, 0x9f, 0x7e, 0xff, 0x54, 0xcc, + 0x19, 0x32, 0xc0, 0xcc, 0xf4, 0x68, 0x21, 0x99, 0x28, 0x23, 0x06, 0xf5, 0x77, 0x92, 0x65, 0xc2, + 0xcb, 0xa7, 0xe0, 0x87, 0x28, 0x23, 0xc4, 0xfd, 0xef, 0x26, 0xcb, 0x84, 0x77, 0x5c, 0xc1, 0x0f, + 0x36, 0x93, 0xf0, 0x1a, 0xe7, 0xa6, 0xcb, 0xcc, 0x6e, 0x9b, 0x5c, 0xd3, 0x9b, 0x4d, 0x6a, 0xad, + 0x52, 0xe5, 0xbb, 0xb1, 0x99, 0x24, 0x9d, 0x8c, 0xcd, 0x24, 0xe9, 0x18, 0xf2, 0x43, 0x70, 0xf1, + 0xa1, 0xde, 0x34, 0x8d, 0x10, 0xe7, 0x67, 0x14, 0x57, 0x7e, 0x3a, 0x17, 0xdd, 0x4d, 0x67, 0xd0, + 0xb1, 0xdd, 0x74, 0x06, 0x8a, 0xcc, 0x01, 0xc1, 0x65, 0x34, 0x98, 0x2d, 0xd8, 0xfa, 0xac, 0xfc, + 0x7b, 0xb9, 0xa8, 0x9d, 0x9a, 0x24, 0x61, 0x76, 0x6a, 0x12, 0x4a, 0xea, 0xd9, 0xa9, 0x49, 0x94, + 0x9f, 0xc9, 0x45, 0x4f, 0x6b, 0xb2, 0x08, 0x67, 0x7a, 0xb4, 0xec, 0xfc, 0x26, 0xf7, 0x60, 0xb4, + 0xb6, 0x58, 0x9d, 0x9e, 0x9e, 0xaa, 0x3d, 0xac, 0x56, 0xf0, 0x5d, 0x84, 0xa1, 0xfc, 0xe9, 0xd8, + 0x8a, 0x15, 0x27, 0x60, 0x2b, 0x56, 0x1c, 0x46, 0xde, 0x84, 0x21, 0xd6, 0x7e, 0x36, 0x60, 0xf0, + 0x93, 0x7f, 0x36, 0x17, 0x35, 0xa7, 0x64, 0x24, 0x33, 0xa7, 0xe4, 0xdf, 0xa4, 0x06, 0xe7, 0x98, + 0x14, 0x17, 0x1d, 0xba, 0x42, 0x1d, 0x6a, 0x35, 0xfc, 0x31, 0xfd, 0x73, 0xb9, 0xa8, 0x95, 0x91, + 0x46, 0xc4, 0xac, 0x8c, 0x34, 0x38, 0x59, 0x87, 0x2b, 0xf1, 0x93, 0x20, 0xf9, 0xd9, 0xab, 0xf2, + 0x67, 0x72, 0x31, 0x63, 0xb8, 0x0b, 0x31, 0x1a, 0xc3, 0x5d, 0xf0, 0xc4, 0x82, 0xab, 0xe2, 0x58, + 0x45, 0x38, 0x5c, 0xc6, 0x6b, 0xfb, 0x79, 0x5e, 0xdb, 0x73, 0xa1, 0x43, 0x60, 0x17, 0xea, 0x99, + 0x1e, 0xad, 0x3b, 0x3b, 0xa6, 0x67, 0xc9, 0x04, 0x1c, 0xca, 0x2f, 0xe4, 0xd2, 0x3d, 0x52, 0x22, + 0x6e, 0xca, 0x69, 0x99, 0x3b, 0xde, 0xcf, 0x4a, 0x1f, 0xa1, 0xfc, 0xd9, 0xd8, 0x78, 0x4b, 0x27, + 0x63, 0xe3, 0x2d, 0x23, 0xff, 0xc4, 0xbb, 0x30, 0xc6, 0x95, 0x7a, 0x51, 0xc7, 0x61, 0x68, 0xad, + 0x52, 0x43, 0xf9, 0xf7, 0x63, 0xab, 0x5d, 0x82, 0x02, 0x5d, 0x7b, 0xe2, 0x40, 0x36, 0x75, 0xd7, + 0xda, 0xba, 0x65, 0xe1, 0x31, 0xab, 0xf2, 0x1f, 0xc4, 0xa6, 0xee, 0x10, 0x85, 0x8e, 0xbb, 0xc1, + 0x2f, 0xa6, 0x09, 0xdd, 0x52, 0x2f, 0x29, 0x7f, 0x2e, 0xa6, 0x09, 0xdd, 0x88, 0x99, 0x26, 0x74, + 0xcd, 0xe3, 0xf4, 0x30, 0xe3, 0x09, 0xba, 0xf2, 0x8b, 0xb1, 0x15, 0x39, 0x95, 0x8a, 0xad, 0xc8, + 0xe9, 0x2f, 0xd8, 0x1f, 0x66, 0x3c, 0xdf, 0x56, 0x7e, 0xa9, 0x3b, 0xdf, 0x70, 0xa5, 0x4f, 0x7f, + 0xfd, 0xfd, 0x30, 0xe3, 0xe9, 0xb3, 0xf2, 0xe7, 0xbb, 0xf3, 0x0d, 0x1d, 0xfb, 0xd2, 0x5f, 0x4e, + 0xd7, 0xb3, 0x9f, 0x0d, 0x2b, 0x7f, 0x21, 0x3e, 0x75, 0x65, 0x10, 0xe2, 0xd4, 0x95, 0xf5, 0xf6, + 0x78, 0x19, 0x2e, 0x71, 0x0d, 0xb9, 0xe7, 0xe8, 0xed, 0xb5, 0x1a, 0xf5, 0x3c, 0xd3, 0x5a, 0xf5, + 0x77, 0x62, 0xff, 0x61, 0x2e, 0x76, 0x3c, 0x96, 0x45, 0x89, 0xc7, 0x63, 0x59, 0x48, 0xa6, 0xbc, + 0x89, 0x07, 0xc2, 0xca, 0x5f, 0x8c, 0x29, 0x6f, 0x82, 0x82, 0x29, 0x6f, 0xf2, 0x5d, 0xf1, 0xbb, + 0x29, 0xef, 0x60, 0x95, 0xff, 0x28, 0x9b, 0x57, 0xd0, 0xbe, 0x94, 0xe7, 0xb3, 0xef, 0xa6, 0x3c, + 0xf7, 0x54, 0xfe, 0xe3, 0x6c, 0x5e, 0xa1, 0x0f, 0x52, 0xf2, 0x95, 0xe8, 0xfb, 0x70, 0x81, 0xcf, + 0xe6, 0xd3, 0xd4, 0xa0, 0x91, 0x0f, 0xfd, 0xe5, 0xd8, 0xd8, 0x4f, 0x27, 0xc3, 0x23, 0xf7, 0x54, + 0x4c, 0x1a, 0x6b, 0xd1, 0xd6, 0xbf, 0xb4, 0x03, 0xeb, 0x70, 0x43, 0x90, 0x8e, 0x61, 0xeb, 0x8d, + 0xfc, 0x56, 0x4e, 0xf9, 0x95, 0xd8, 0x7a, 0x23, 0x23, 0xd1, 0x9d, 0x43, 0x7e, 0x58, 0xf7, 0x66, + 0xf4, 0x5d, 0x98, 0xf2, 0x9f, 0xa4, 0x16, 0x0e, 0x3a, 0x20, 0xfa, 0x88, 0xec, 0xcd, 0xe8, 0x1b, + 0x28, 0xe5, 0x57, 0x53, 0x0b, 0x07, 0x1f, 0x10, 0x7d, 0x30, 0xc5, 0xb6, 0x48, 0x1d, 0xcf, 0xe6, + 0xac, 0x22, 0xd3, 0xc3, 0x5f, 0x8e, 0x6f, 0x91, 0x52, 0xc9, 0x70, 0x8b, 0x94, 0x8a, 0x49, 0x63, + 0x2d, 0x3e, 0xef, 0xd7, 0x76, 0x60, 0x2d, 0x6d, 0xec, 0x52, 0x31, 0x69, 0xac, 0xc5, 0xc7, 0xff, + 0xfa, 0x0e, 0xac, 0xa5, 0x8d, 0x5d, 0x2a, 0x86, 0x99, 0x63, 0x21, 0xe6, 0x21, 0x75, 0xdc, 0x50, + 0xfd, 0xfe, 0x4a, 0xcc, 0x1c, 0xcb, 0xa0, 0x63, 0xe6, 0x58, 0x06, 0x2a, 0x95, 0xbb, 0x10, 0xca, + 0x6f, 0xec, 0xc4, 0x3d, 0xbc, 0x97, 0xc9, 0x40, 0xa5, 0x72, 0x17, 0x72, 0xf9, 0xab, 0x3b, 0x71, + 0x0f, 0x2f, 0x66, 0x32, 0x50, 0xcc, 0x28, 0xaa, 0x79, 0xba, 0x67, 0x36, 0x66, 0x6c, 0xd7, 0x93, + 0x16, 0xf9, 0xbf, 0x16, 0x33, 0x8a, 0xd2, 0x88, 0x98, 0x51, 0x94, 0x06, 0x4f, 0x32, 0x15, 0xd2, + 0xf8, 0xcd, 0xae, 0x4c, 0x43, 0x4b, 0x2b, 0x0d, 0x9e, 0x64, 0x2a, 0x84, 0xf0, 0x9f, 0x76, 0x65, + 0x1a, 0x7a, 0xca, 0xa7, 0xc1, 0xd9, 0x5a, 0x7f, 0xcf, 0xf4, 0xfc, 0x97, 0x36, 0xbf, 0x15, 0x5b, + 0xeb, 0x43, 0x14, 0x5b, 0xeb, 0xc3, 0x5f, 0x13, 0x7d, 0xd0, 0x8b, 0x67, 0x74, 0xea, 0x2f, 0xe6, + 0x60, 0xa8, 0xe6, 0x39, 0x54, 0x6f, 0x89, 0x48, 0x66, 0x97, 0xa1, 0x9f, 0x3b, 0xbb, 0xfa, 0x0f, + 0x79, 0xb5, 0xe0, 0x37, 0xb9, 0x0e, 0x23, 0xb3, 0xba, 0xeb, 0x61, 0xc9, 0xaa, 0x65, 0xd0, 0x27, + 0xf8, 0xd0, 0xab, 0xa0, 0xc5, 0xa0, 0x64, 0x96, 0xd3, 0xf1, 0x72, 0x18, 0xbc, 0xb2, 0xb0, 0x63, + 0x00, 0xaf, 0xfe, 0x8f, 0xb7, 0xc6, 0x7b, 0x30, 0x5e, 0x57, 0xac, 0xac, 0xfa, 0x7b, 0x39, 0x48, + 0xb8, 0xe1, 0xee, 0xff, 0xc5, 0xfe, 0x02, 0x9c, 0x89, 0x05, 0x4c, 0x15, 0xaf, 0xd5, 0x76, 0x19, + 0x4f, 0x35, 0x5e, 0x9a, 0x7c, 0x3e, 0x78, 0x25, 0xf5, 0x40, 0x9b, 0x15, 0xc1, 0xd9, 0x30, 0xad, + 0x40, 0xc7, 0x69, 0x6a, 0x12, 0x4a, 0x04, 0xdf, 0xf9, 0xc1, 0x68, 0x18, 0x0d, 0x92, 0x5c, 0x17, + 0xe1, 0x03, 0x72, 0x61, 0x48, 0xb7, 0x58, 0x1a, 0x72, 0x1e, 0x2e, 0xe0, 0xcb, 0x30, 0x54, 0x6d, + 0xb5, 0xa9, 0xe3, 0xda, 0x96, 0xee, 0xd9, 0x8e, 0x78, 0x2c, 0x8d, 0x4f, 0xfb, 0x4c, 0x09, 0x2e, + 0x3f, 0xed, 0x93, 0xe9, 0xc9, 0x4d, 0x3f, 0x33, 0x5a, 0x01, 0xe3, 0x70, 0xe2, 0x93, 0xc5, 0x78, + 0x6a, 0x6b, 0x4e, 0xc1, 0x48, 0x1f, 0xb8, 0x3a, 0xbe, 0xa7, 0x0b, 0x48, 0x3b, 0x0c, 0x20, 0x93, + 0x22, 0x05, 0x79, 0x01, 0x4a, 0x78, 0xff, 0xe0, 0x62, 0xc6, 0x43, 0x11, 0x68, 0xae, 0x89, 0x10, + 0xf9, 0x01, 0x25, 0xa7, 0x21, 0xf7, 0x61, 0x34, 0xbc, 0x5c, 0xbd, 0xe7, 0xd8, 0x9d, 0xb6, 0x9f, + 0xe3, 0x04, 0x53, 0x82, 0xaf, 0x07, 0xb8, 0xfa, 0x2a, 0x22, 0x25, 0x16, 0x89, 0x82, 0x64, 0x06, + 0xce, 0x84, 0x30, 0x26, 0x22, 0x3f, 0xb7, 0x12, 0xe6, 0xb5, 0x94, 0x78, 0x31, 0x71, 0x46, 0xf2, + 0x5a, 0xc6, 0x8a, 0x91, 0x2a, 0xf4, 0xf9, 0x51, 0xe6, 0xfa, 0x77, 0x54, 0xd2, 0xb3, 0x22, 0xca, + 0x5c, 0x9f, 0x1c, 0x5f, 0xce, 0x2f, 0x4f, 0xa6, 0x61, 0x44, 0xb3, 0x3b, 0x1e, 0x5d, 0xb2, 0xc5, + 0xae, 0x44, 0x44, 0x33, 0xc4, 0x36, 0x39, 0x0c, 0x53, 0xf7, 0x6c, 0x3f, 0xa3, 0xba, 0x9c, 0xd9, + 0x3b, 0x5a, 0x8a, 0xcc, 0xc3, 0x58, 0xe2, 0x1a, 0x5a, 0xce, 0x73, 0x2e, 0x7d, 0x5e, 0x92, 0x59, + 0xb2, 0x28, 0xf9, 0x89, 0x1c, 0x94, 0x96, 0x1c, 0xdd, 0xf4, 0x5c, 0xf1, 0x14, 0xef, 0xfc, 0xad, + 0x0d, 0x47, 0x6f, 0x33, 0xfd, 0xb8, 0x85, 0x81, 0x56, 0x1f, 0xea, 0xcd, 0x0e, 0x75, 0x27, 0x1e, + 0xb1, 0xaf, 0xfb, 0x1f, 0xb7, 0xc6, 0xdf, 0xe4, 0x61, 0x09, 0x6e, 0x35, 0xec, 0xd6, 0xed, 0x55, + 0x47, 0x7f, 0x6c, 0x7a, 0x68, 0x52, 0xe8, 0xcd, 0xdb, 0x1e, 0x6d, 0xe2, 0x99, 0xda, 0x6d, 0xbd, + 0x6d, 0xde, 0xc6, 0xe7, 0xb3, 0xb7, 0x03, 0x4e, 0xbc, 0x06, 0xa6, 0x02, 0x1e, 0xfe, 0x25, 0xab, + 0x00, 0xc7, 0x91, 0x79, 0x00, 0xf1, 0xa9, 0xe5, 0x76, 0x5b, 0xbc, 0xeb, 0x93, 0x4e, 0xa2, 0x7c, + 0x0c, 0x57, 0xec, 0x40, 0x60, 0x7a, 0x5b, 0x0a, 0x62, 0xab, 0x49, 0x1c, 0x98, 0x16, 0x2c, 0x89, + 0x16, 0xf9, 0x62, 0x1a, 0x0e, 0x25, 0xee, 0x37, 0x36, 0x45, 0x48, 0xf1, 0x62, 0x64, 0x19, 0xce, + 0x08, 0xbe, 0x41, 0xca, 0x8b, 0x91, 0xe8, 0xac, 0x10, 0x43, 0x73, 0xa5, 0x0d, 0xda, 0x68, 0x08, + 0xb0, 0x5c, 0x47, 0xac, 0x04, 0x99, 0x08, 0x53, 0xf4, 0xce, 0xeb, 0x2d, 0xea, 0x2a, 0x67, 0x50, + 0x63, 0xaf, 0x6c, 0x6f, 0x8d, 0x2b, 0x7e, 0x79, 0x0c, 0xb8, 0x98, 0x9a, 0x70, 0x1e, 0x8b, 0xc8, + 0x3c, 0xb8, 0xd6, 0x8f, 0xa6, 0xf0, 0x88, 0xeb, 0x7c, 0xb4, 0x08, 0x99, 0x84, 0xe1, 0xe0, 0x59, + 0xc1, 0x83, 0x07, 0xd5, 0x0a, 0x3e, 0x1c, 0x14, 0x31, 0x37, 0x63, 0x49, 0x29, 0x64, 0x26, 0x91, + 0x32, 0x52, 0xe8, 0x06, 0xfe, 0x92, 0x30, 0x16, 0xba, 0xa1, 0x9d, 0x12, 0xba, 0x61, 0x91, 0xbc, + 0x0d, 0x83, 0xe5, 0x47, 0x35, 0x11, 0x92, 0xc2, 0x55, 0xce, 0x86, 0x19, 0x8e, 0xf4, 0x0d, 0xb7, + 0xee, 0x87, 0xaf, 0x90, 0x9b, 0x2e, 0xd3, 0x93, 0x29, 0x18, 0x89, 0x78, 0x26, 0xb9, 0xca, 0x39, + 0xe4, 0x80, 0x2d, 0xd7, 0x11, 0x53, 0x77, 0x04, 0x4a, 0x1e, 0x5e, 0xd1, 0x42, 0x4c, 0x6b, 0x2a, + 0xa6, 0x8b, 0xd9, 0x62, 0x34, 0x8a, 0xd1, 0x2f, 0xf0, 0x19, 0x62, 0x3f, 0xd7, 0x1a, 0x43, 0xa0, + 0xea, 0x0e, 0xc7, 0xc9, 0x3d, 0x1a, 0x2b, 0x46, 0x3e, 0x00, 0x82, 0xf9, 0x65, 0xa8, 0xe1, 0x5f, + 0x54, 0x55, 0x2b, 0xae, 0x72, 0x01, 0x03, 0x4e, 0x93, 0xf8, 0x6b, 0xfb, 0x6a, 0x65, 0xe2, 0xba, + 0x98, 0x3e, 0xae, 0xe9, 0xbc, 0x54, 0xdd, 0x7f, 0x69, 0x5f, 0x37, 0x23, 0xc9, 0x77, 0x53, 0xb8, + 0x92, 0x0d, 0xb8, 0xb8, 0xe8, 0xd0, 0xc7, 0xa6, 0xdd, 0x71, 0xfd, 0xe5, 0xc3, 0x9f, 0xb7, 0x2e, + 0xee, 0x38, 0x6f, 0x3d, 0x23, 0x2a, 0x3e, 0xdf, 0x76, 0xe8, 0xe3, 0xba, 0x1f, 0x66, 0x38, 0x12, + 0x25, 0x33, 0x8b, 0x3b, 0xa6, 0x10, 0xfe, 0xb0, 0xe3, 0x50, 0x01, 0x37, 0xa9, 0xab, 0x28, 0xe1, + 0x54, 0xcb, 0x23, 0xa3, 0x98, 0x01, 0x2e, 0x92, 0x42, 0x38, 0x5a, 0x8c, 0x68, 0x40, 0xee, 0x4d, + 0xfa, 0x97, 0x96, 0xe5, 0x06, 0x4f, 0xb4, 0xaa, 0x5c, 0x42, 0x66, 0x2a, 0x13, 0xcb, 0x6a, 0x23, + 0x08, 0x39, 0x5e, 0xd7, 0x05, 0x5e, 0x16, 0x4b, 0xb2, 0x34, 0x99, 0x85, 0xd1, 0x45, 0x07, 0x8f, + 0x50, 0xee, 0xd3, 0xcd, 0x45, 0xbb, 0x69, 0x36, 0x36, 0xf1, 0x35, 0xa4, 0x98, 0x2a, 0xdb, 0x1c, + 0x57, 0x5f, 0xa7, 0x9b, 0xf5, 0x36, 0x62, 0xe5, 0x65, 0x25, 0x5e, 0x52, 0x0e, 0x01, 0xfc, 0xd4, + 0xee, 0x42, 0x00, 0x53, 0x18, 0x15, 0x57, 0x9e, 0x4f, 0x3c, 0x6a, 0xb1, 0xa5, 0xde, 0x15, 0x2f, + 0x1f, 0x95, 0xd8, 0x15, 0x69, 0x80, 0xe7, 0x53, 0x87, 0x18, 0x65, 0x34, 0x00, 0xcb, 0x0d, 0x8b, + 0x17, 0x49, 0xc6, 0xc9, 0xbd, 0xba, 0x8f, 0x38, 0xb9, 0x7f, 0xad, 0x20, 0xcf, 0xbf, 0xe4, 0x0a, + 0x14, 0xa5, 0x34, 0x36, 0x18, 0x04, 0x14, 0x43, 0x7e, 0x17, 0x45, 0x6c, 0xe3, 0x01, 0x61, 0xbb, + 0x04, 0xc1, 0x59, 0x30, 0x6f, 0x61, 0x18, 0x18, 0x52, 0x0b, 0x09, 0x30, 0x67, 0x5c, 0x67, 0xb9, + 0x69, 0x36, 0x30, 0x10, 0x7c, 0x41, 0x8a, 0xc6, 0x80, 0x50, 0x1e, 0x07, 0x5e, 0x22, 0x21, 0x77, + 0x60, 0xd0, 0x3f, 0xba, 0x0b, 0x83, 0xe0, 0x62, 0x7c, 0x70, 0x31, 0x5b, 0x8b, 0xf0, 0xe3, 0x12, + 0x11, 0x79, 0x03, 0x20, 0x9c, 0x0e, 0x84, 0xa5, 0x85, 0x4b, 0x85, 0x3c, 0x7b, 0xc8, 0x4b, 0x45, + 0x48, 0xcd, 0x26, 0x4e, 0x59, 0x1d, 0xfd, 0x2c, 0x99, 0x38, 0x71, 0x46, 0x74, 0x58, 0x56, 0x90, + 0x68, 0x11, 0xb2, 0x00, 0x63, 0x09, 0x0d, 0x14, 0x21, 0x73, 0x31, 0x53, 0x7a, 0x8a, 0xfa, 0xca, + 0x0b, 0x73, 0xa2, 0x2c, 0x79, 0x16, 0x0a, 0x0f, 0xb4, 0xaa, 0x08, 0xdb, 0xc9, 0x23, 0xbe, 0x46, + 0x42, 0xf0, 0x30, 0xac, 0xfa, 0xc7, 0xf2, 0x89, 0xb5, 0x89, 0x49, 0x4f, 0xb0, 0x92, 0x7a, 0x10, + 0xa5, 0xe7, 0xd7, 0xcf, 0xa5, 0x27, 0x11, 0x91, 0x1b, 0xd0, 0xbf, 0xc8, 0x66, 0x86, 0x86, 0xdd, + 0x14, 0xfd, 0x89, 0x01, 0x98, 0xda, 0x02, 0xa6, 0x05, 0x58, 0x72, 0x47, 0x4a, 0xee, 0x2a, 0x45, + 0xc2, 0xf6, 0x93, 0xbb, 0xc6, 0x43, 0x42, 0x63, 0x9a, 0xd7, 0x3b, 0xb1, 0x64, 0x51, 0xa2, 0x4c, + 0xca, 0xba, 0x18, 0x26, 0x87, 0x0a, 0xac, 0xd2, 0xde, 0x9d, 0xac, 0x52, 0xf5, 0x6f, 0xe7, 0x92, + 0xe3, 0x8c, 0xdc, 0x4d, 0x06, 0xa5, 0xc5, 0x45, 0x28, 0x00, 0xca, 0xb5, 0x06, 0xe1, 0x69, 0x23, + 0xe1, 0x65, 0xf3, 0xfb, 0x0e, 0x2f, 0x5b, 0xd8, 0x63, 0x78, 0x59, 0xf5, 0xff, 0x29, 0x76, 0x75, + 0xd1, 0x3d, 0x92, 0x30, 0x64, 0xaf, 0xb3, 0x9d, 0x15, 0xab, 0xbd, 0xec, 0x26, 0xf6, 0x07, 0xdc, + 0x03, 0xb1, 0xae, 0xf3, 0xa1, 0xe5, 0x6a, 0x51, 0x4a, 0xf2, 0x0e, 0x0c, 0xf9, 0x1f, 0x80, 0x61, + 0x8b, 0xa5, 0x70, 0xbb, 0xc1, 0xaa, 0x16, 0x0b, 0xf0, 0x1b, 0x29, 0x40, 0x5e, 0x81, 0x01, 0xb4, + 0x69, 0xda, 0x7a, 0xc3, 0x8f, 0x69, 0xcd, 0x83, 0x60, 0xfb, 0x40, 0x39, 0xd4, 0x56, 0x40, 0x49, + 0x7e, 0x18, 0x4a, 0x22, 0xb1, 0x03, 0xcf, 0x7b, 0x7e, 0x7b, 0x17, 0x3e, 0xcd, 0xb7, 0xe4, 0xa4, + 0x0e, 0x7c, 0x97, 0x82, 0x80, 0xc8, 0x2e, 0x85, 0xe7, 0x73, 0x58, 0x82, 0xb3, 0x8b, 0x0e, 0x35, + 0xd0, 0x7b, 0x7e, 0xea, 0x49, 0xdb, 0x11, 0x29, 0x37, 0xf8, 0x28, 0xc7, 0x45, 0xaa, 0xed, 0xa3, + 0xd9, 0xf2, 0x29, 0xf0, 0x72, 0x60, 0xdd, 0x94, 0xe2, 0xcc, 0x72, 0xe1, 0x2d, 0xb9, 0x4f, 0x37, + 0x37, 0x30, 0x0b, 0x7f, 0x7f, 0x68, 0xb9, 0x08, 0x41, 0xaf, 0x0b, 0x94, 0x6c, 0xb9, 0x44, 0x0b, + 0x5d, 0x7e, 0x1d, 0x06, 0xf7, 0x9b, 0x18, 0xe1, 0x37, 0xf2, 0x19, 0x8f, 0x5d, 0x4e, 0x6e, 0x6e, + 0xba, 0x20, 0x61, 0x72, 0x6f, 0x46, 0xc2, 0xe4, 0x3f, 0xca, 0x67, 0xbc, 0xe4, 0x39, 0xd1, 0x89, + 0x4d, 0x03, 0x61, 0x44, 0x13, 0x9b, 0x86, 0x39, 0x65, 0x4d, 0x43, 0x93, 0x89, 0x62, 0x29, 0x90, + 0x4b, 0x3b, 0xa6, 0x40, 0xfe, 0xe5, 0x42, 0xb7, 0x97, 0x4e, 0xa7, 0xb2, 0xdf, 0x8b, 0xec, 0xef, + 0xc0, 0x60, 0x20, 0xd9, 0x6a, 0x05, 0x8d, 0x9e, 0xe1, 0x20, 0x0d, 0x0b, 0x07, 0x63, 0x19, 0x89, + 0x88, 0xdc, 0xe4, 0x6d, 0xad, 0x99, 0x1f, 0xf2, 0x84, 0x00, 0xc3, 0x22, 0xd4, 0xbb, 0xee, 0xe9, + 0x75, 0xd7, 0xfc, 0x90, 0x6a, 0x01, 0x1a, 0x63, 0x3d, 0xa6, 0x3d, 0xfa, 0x3a, 0xed, 0xa3, 0xdd, + 0xf7, 0x51, 0x8a, 0x10, 0xf9, 0x43, 0xb7, 0x53, 0x21, 0xee, 0x41, 0x88, 0x7f, 0x98, 0x4f, 0x7d, + 0x16, 0x78, 0x2a, 0xc4, 0xbd, 0xcc, 0x16, 0x2f, 0xc0, 0x80, 0x66, 0x6f, 0xb8, 0x93, 0xb8, 0xb1, + 0xe1, 0x73, 0x05, 0x4e, 0xd4, 0x8e, 0xbd, 0xe1, 0xd6, 0x71, 0xcb, 0xa2, 0x85, 0x04, 0xea, 0x0f, + 0xf2, 0x5d, 0x1e, 0x4e, 0x9e, 0x0a, 0xfe, 0x93, 0x5c, 0x22, 0xff, 0x7a, 0x3e, 0xf2, 0x30, 0xf3, + 0xe4, 0x0a, 0xfb, 0x36, 0x40, 0xad, 0xb1, 0x46, 0x5b, 0xba, 0x94, 0x54, 0x09, 0xcf, 0x1d, 0x5c, + 0x84, 0x8a, 0x64, 0xbc, 0x21, 0x89, 0xfa, 0xdb, 0xf9, 0xd8, 0xcb, 0xd4, 0x53, 0xd9, 0xed, 0x5a, + 0x76, 0x81, 0xd6, 0x89, 0xc7, 0xb6, 0xa7, 0x92, 0xdb, 0xad, 0xe4, 0x7e, 0x32, 0x1f, 0x7b, 0x97, + 0x7c, 0x62, 0x65, 0xc7, 0x06, 0x60, 0xf2, 0xbd, 0xf4, 0x89, 0xd5, 0xa4, 0x17, 0x60, 0x40, 0xc8, + 0x21, 0x58, 0x2a, 0xf8, 0xbc, 0xcf, 0x81, 0x78, 0xca, 0x1a, 0x10, 0xa8, 0x7f, 0x3c, 0x0f, 0xd1, + 0xf7, 0xe2, 0x27, 0x54, 0x87, 0xfe, 0x7a, 0x3e, 0xfa, 0x52, 0xfe, 0xe4, 0xea, 0xcf, 0x2d, 0x80, + 0x5a, 0x67, 0xb9, 0x21, 0xdc, 0x3f, 0x7a, 0xa5, 0x63, 0xfa, 0x00, 0xaa, 0x49, 0x14, 0xea, 0xff, + 0x9b, 0x4f, 0x7d, 0xbe, 0x7f, 0x72, 0x05, 0xf8, 0x32, 0x9e, 0x8a, 0x37, 0xac, 0x70, 0x22, 0xc7, + 0x43, 0x48, 0x36, 0xfe, 0x12, 0x99, 0xf8, 0x7c, 0x42, 0xf2, 0xa5, 0x14, 0x73, 0x0d, 0xf3, 0x04, + 0x84, 0xe6, 0x9a, 0x7c, 0x0d, 0x21, 0x19, 0x6e, 0xff, 0x6d, 0x7e, 0xa7, 0x68, 0x07, 0x27, 0x79, + 0x55, 0xed, 0x5b, 0xd4, 0x37, 0x31, 0x2a, 0x1f, 0xeb, 0x89, 0x21, 0x9e, 0x27, 0xae, 0xcd, 0x41, + 0xf2, 0xdd, 0x9b, 0xa0, 0x52, 0xff, 0x69, 0x6f, 0xfa, 0x53, 0xfb, 0x93, 0x2b, 0xc2, 0x2b, 0x50, + 0x5c, 0xd4, 0xbd, 0x35, 0xa1, 0xc9, 0x78, 0xa5, 0xd7, 0xd6, 0xbd, 0x35, 0x0d, 0xa1, 0xe4, 0x26, + 0xf4, 0x6b, 0xfa, 0x06, 0x3f, 0xf3, 0x2c, 0x85, 0x39, 0xfc, 0x1c, 0x7d, 0xa3, 0xce, 0xcf, 0x3d, + 0x03, 0x34, 0x51, 0x83, 0x1c, 0x92, 0xfc, 0xe4, 0x1b, 0x13, 0x98, 0xf1, 0x1c, 0x92, 0x41, 0xe6, + 0xc8, 0x2b, 0x50, 0x9c, 0xb0, 0x8d, 0x4d, 0xbc, 0xbe, 0x1a, 0xe2, 0x95, 0x2d, 0xdb, 0xc6, 0xa6, + 0x86, 0x50, 0xf2, 0x53, 0x39, 0xe8, 0x9b, 0xa1, 0xba, 0xc1, 0x46, 0xc8, 0x40, 0x37, 0xaf, 0x93, + 0xaf, 0x1e, 0x8e, 0xd7, 0xc9, 0xd8, 0x1a, 0xaf, 0x4c, 0x56, 0x14, 0x51, 0x3f, 0xb9, 0x07, 0xfd, + 0x93, 0xba, 0x47, 0x57, 0x6d, 0x67, 0x13, 0xfd, 0x68, 0x46, 0x42, 0x77, 0xed, 0x88, 0xfe, 0xf8, + 0x44, 0xfc, 0x66, 0xac, 0x21, 0x7e, 0x69, 0x41, 0x61, 0x26, 0x16, 0x91, 0xd5, 0x7e, 0x30, 0x14, + 0x0b, 0x4f, 0x5f, 0x1f, 0x24, 0xaf, 0x0f, 0x8e, 0x95, 0x87, 0xd2, 0x8f, 0x95, 0xd1, 0x7a, 0x44, + 0x5f, 0x3b, 0xcc, 0xdc, 0x38, 0x8c, 0x8b, 0x3e, 0xb7, 0x1e, 0x11, 0x8a, 0x89, 0x1b, 0x35, 0x89, + 0x44, 0xfd, 0x7e, 0x2f, 0xa4, 0x3e, 0xcc, 0x3d, 0x55, 0xf2, 0x53, 0x25, 0x0f, 0x95, 0xbc, 0x92, + 0x50, 0xf2, 0xcb, 0xc9, 0xa7, 0xde, 0x9f, 0x52, 0x0d, 0xff, 0xd9, 0x62, 0x22, 0x50, 0xc4, 0xc9, + 0xde, 0x5d, 0x86, 0xd2, 0xeb, 0xdd, 0x51, 0x7a, 0xc1, 0x80, 0x28, 0xed, 0x38, 0x20, 0xfa, 0x76, + 0x3b, 0x20, 0xfa, 0x33, 0x07, 0x44, 0xa8, 0x20, 0x03, 0x99, 0x0a, 0x52, 0x15, 0x83, 0x06, 0xba, + 0x67, 0x05, 0xbe, 0xb2, 0xbd, 0x35, 0x3e, 0xc2, 0x46, 0x53, 0x6a, 0x3e, 0x60, 0x64, 0xa1, 0xfe, + 0x5e, 0xb1, 0x4b, 0x74, 0x97, 0x23, 0xd1, 0x91, 0x97, 0xa1, 0x50, 0x6e, 0xb7, 0x85, 0x7e, 0x9c, + 0x95, 0x02, 0xcb, 0x64, 0x94, 0x62, 0xd4, 0xe4, 0x0d, 0x28, 0x94, 0x1f, 0xd5, 0xe2, 0x39, 0x2a, + 0xca, 0x8f, 0x6a, 0xe2, 0x4b, 0x32, 0xcb, 0x3e, 0xaa, 0x91, 0xb7, 0xc2, 0x60, 0x91, 0x6b, 0x1d, + 0x6b, 0x5d, 0x6c, 0x14, 0x85, 0xbb, 0xad, 0xef, 0x8e, 0xd3, 0x60, 0x28, 0xb6, 0x5d, 0x8c, 0xd1, + 0xc6, 0xb4, 0xa9, 0xb4, 0x7b, 0x6d, 0xea, 0xdb, 0x51, 0x9b, 0xfa, 0x77, 0xab, 0x4d, 0x03, 0xbb, + 0xd0, 0x26, 0xd8, 0x51, 0x9b, 0x06, 0x0f, 0xae, 0x4d, 0x6d, 0xb8, 0x9c, 0x8c, 0xc8, 0x15, 0x68, + 0x84, 0x06, 0x24, 0x89, 0x15, 0x8e, 0x25, 0x78, 0xf5, 0xdf, 0xe1, 0xd8, 0xfa, 0x06, 0xa2, 0xeb, + 0x2e, 0xc3, 0xcb, 0xfe, 0x69, 0xc9, 0xd2, 0xea, 0x6f, 0xe4, 0xb3, 0x03, 0x89, 0x1d, 0xcf, 0x29, + 0xee, 0x47, 0x52, 0xa5, 0x54, 0x8c, 0x3e, 0xec, 0xce, 0x96, 0x72, 0x8c, 0x6d, 0x9a, 0xcc, 0xbe, + 0x97, 0xcb, 0x8a, 0x6e, 0x76, 0x20, 0x89, 0x3d, 0x97, 0xf4, 0x68, 0x43, 0x3f, 0x7d, 0x37, 0xea, + 0xca, 0x36, 0x0d, 0x43, 0xb2, 0x10, 0x85, 0x94, 0x76, 0x23, 0xe0, 0x48, 0x39, 0xf5, 0x6f, 0xe7, + 0xe0, 0xec, 0xfd, 0xce, 0x32, 0x15, 0x1e, 0x6c, 0x41, 0x33, 0x3e, 0x00, 0x60, 0x60, 0xe1, 0xc4, + 0x92, 0x43, 0x27, 0x96, 0x2f, 0xc8, 0x91, 0xc9, 0x62, 0x05, 0x6e, 0x85, 0xd4, 0xdc, 0x81, 0xe5, + 0xaa, 0xef, 0xcc, 0xb9, 0xde, 0x59, 0xa6, 0xf5, 0x84, 0x27, 0x8b, 0xc4, 0xfd, 0xf2, 0xdb, 0xdc, + 0x4d, 0x7e, 0xbf, 0x4e, 0x23, 0xbf, 0x96, 0xcf, 0x0c, 0x06, 0x77, 0x6c, 0xb3, 0x26, 0x7e, 0x3d, + 0xb5, 0x57, 0xe2, 0xd9, 0x13, 0x53, 0x48, 0x62, 0x1c, 0xd3, 0xb8, 0xa4, 0x0b, 0xec, 0x98, 0xe7, + 0xf2, 0xfc, 0x44, 0x05, 0xf6, 0xf7, 0x73, 0x99, 0x41, 0xfb, 0x8e, 0xab, 0xc0, 0xd4, 0xff, 0xad, + 0xe0, 0xc7, 0x0a, 0x3c, 0xd0, 0x27, 0xbc, 0x00, 0x03, 0xe2, 0xb5, 0x56, 0xd4, 0x01, 0x57, 0x1c, + 0xe5, 0xe1, 0xd1, 0x70, 0x40, 0xc0, 0x96, 0x79, 0xc9, 0x3b, 0x58, 0x72, 0xc0, 0x95, 0x3c, 0x83, + 0x35, 0x89, 0x84, 0x2d, 0xe4, 0x53, 0x4f, 0x4c, 0x0f, 0xad, 0x02, 0xd6, 0x97, 0x05, 0xbe, 0x90, + 0xd3, 0x27, 0xa6, 0xc7, 0x6d, 0x82, 0x00, 0xcd, 0x16, 0xe9, 0x5a, 0x98, 0xa9, 0x5c, 0x2c, 0xd2, + 0xae, 0x48, 0xd8, 0x2e, 0x9e, 0x8d, 0xbd, 0x00, 0x03, 0xc2, 0xab, 0x55, 0xb8, 0x99, 0x88, 0xd6, + 0x0a, 0x3f, 0x58, 0x6c, 0x6d, 0x40, 0xc0, 0x38, 0x6a, 0x74, 0x35, 0x74, 0xac, 0x43, 0x8e, 0x0e, + 0x42, 0x34, 0x81, 0x21, 0x77, 0x60, 0xa4, 0xe6, 0xe9, 0x96, 0xa1, 0x3b, 0xc6, 0x42, 0xc7, 0x6b, + 0x77, 0x3c, 0xd9, 0x28, 0x75, 0x3d, 0xc3, 0xee, 0x78, 0x5a, 0x8c, 0x82, 0x7c, 0x11, 0x86, 0x7d, + 0xc8, 0x94, 0xe3, 0xd8, 0x8e, 0x6c, 0x79, 0xb8, 0x9e, 0x41, 0x1d, 0x47, 0x8b, 0x12, 0x90, 0x2f, + 0xc1, 0x70, 0xd5, 0x7a, 0x6c, 0xf3, 0x14, 0xf8, 0x0f, 0xb4, 0x59, 0x61, 0x87, 0xe0, 0x53, 0x2c, + 0x33, 0x40, 0xd4, 0x3b, 0x4e, 0x53, 0x8b, 0x12, 0xaa, 0xdb, 0xf9, 0x64, 0x48, 0xc5, 0x93, 0xbb, + 0x69, 0xb9, 0x19, 0x75, 0xa6, 0x43, 0x0f, 0x52, 0x34, 0x08, 0x65, 0x5f, 0x5e, 0x6e, 0x17, 0xde, + 0x81, 0xfe, 0xfb, 0x74, 0x93, 0xfb, 0x7d, 0x96, 0x42, 0x57, 0xe1, 0x75, 0x01, 0x93, 0x4f, 0x5c, + 0x7d, 0x3a, 0xf5, 0x77, 0xf2, 0xc9, 0x60, 0x91, 0x27, 0x57, 0xd8, 0x5f, 0x84, 0x3e, 0x14, 0x65, + 0xd5, 0x3f, 0xf2, 0x47, 0x01, 0xa2, 0xb8, 0xa3, 0x1e, 0xc8, 0x3e, 0x99, 0xfa, 0x4b, 0xa5, 0x78, + 0x04, 0xd1, 0x93, 0x2b, 0xbd, 0x37, 0x61, 0x70, 0xd2, 0xb6, 0x5c, 0xd3, 0xf5, 0xa8, 0xd5, 0xf0, + 0x15, 0xf6, 0x12, 0x33, 0xa8, 0x1a, 0x21, 0x58, 0x7e, 0x83, 0x24, 0x51, 0xef, 0x47, 0x79, 0xc9, + 0xab, 0x30, 0x80, 0x22, 0x47, 0x3f, 0x69, 0x3e, 0xe1, 0xe1, 0x6d, 0xc1, 0x32, 0x03, 0xc6, 0x9d, + 0xa4, 0x43, 0x52, 0xf2, 0x00, 0xfa, 0x27, 0xd7, 0xcc, 0xa6, 0xe1, 0x50, 0x0b, 0xfd, 0x85, 0xa5, + 0x40, 0x0d, 0xd1, 0xbe, 0xbc, 0x85, 0xff, 0x22, 0x2d, 0x6f, 0x4e, 0x43, 0x14, 0x8b, 0xbc, 0xc2, + 0x12, 0xb0, 0xcb, 0x3f, 0x93, 0x07, 0x08, 0x0b, 0x90, 0xa7, 0x21, 0x1f, 0xe4, 0xec, 0x45, 0x37, + 0x95, 0x88, 0x06, 0xe5, 0x71, 0xa9, 0x10, 0x63, 0x3b, 0xbf, 0xe3, 0xd8, 0x7e, 0x00, 0x25, 0x7e, + 0xe2, 0x85, 0x9e, 0xe4, 0x52, 0x50, 0xc3, 0xcc, 0x06, 0xdf, 0x42, 0x7a, 0xbe, 0x99, 0x45, 0xcb, + 0x33, 0xe2, 0x95, 0xcd, 0x99, 0x5d, 0x6e, 0x40, 0x2f, 0xfe, 0x45, 0xae, 0x43, 0x71, 0xc9, 0xcf, + 0xf7, 0x39, 0xcc, 0x67, 0xe9, 0x98, 0xfc, 0x10, 0xcf, 0xba, 0x69, 0xd2, 0xb6, 0x3c, 0x56, 0x35, + 0xb6, 0x7a, 0x48, 0xc8, 0x45, 0xc0, 0x22, 0x72, 0x11, 0x30, 0xf5, 0xbf, 0xc9, 0xa7, 0xc4, 0xb6, + 0x3d, 0xb9, 0xc3, 0xe4, 0x75, 0x00, 0x7c, 0xd2, 0xcd, 0xe4, 0xe9, 0x3f, 0xd1, 0xc0, 0x51, 0x82, + 0x8c, 0x50, 0x6d, 0x23, 0xdb, 0x8e, 0x90, 0x58, 0xfd, 0x3b, 0xb9, 0x44, 0x40, 0xd4, 0x03, 0xc9, + 0x51, 0xb6, 0xca, 0xf2, 0xfb, 0x34, 0x63, 0xfd, 0xbe, 0x28, 0xec, 0xad, 0x2f, 0xa2, 0xdf, 0x72, + 0x08, 0x96, 0xe9, 0x51, 0x7e, 0xcb, 0xf7, 0xf3, 0x69, 0xe1, 0x61, 0x8f, 0xa7, 0x8a, 0xdf, 0x0d, + 0x8c, 0xd2, 0x62, 0x2c, 0x20, 0x37, 0x42, 0xe3, 0x39, 0x89, 0x85, 0x99, 0xfa, 0x0d, 0x38, 0x13, + 0x0b, 0x9a, 0x2a, 0xf2, 0xbd, 0x5e, 0xef, 0x1e, 0x7d, 0x35, 0x3b, 0x18, 0x40, 0x84, 0x4c, 0xfd, + 0xff, 0x72, 0xdd, 0x43, 0xe6, 0x1e, 0xb9, 0xea, 0xa4, 0x08, 0xa0, 0xf0, 0xaf, 0x46, 0x00, 0x87, + 0xb0, 0x0d, 0x3e, 0xde, 0x02, 0xf8, 0x94, 0x4c, 0x1e, 0x9f, 0xb4, 0x00, 0x7e, 0x29, 0xb7, 0x63, + 0xc4, 0xe3, 0xa3, 0x96, 0x81, 0xfa, 0x3f, 0xe7, 0x52, 0x23, 0x13, 0x1f, 0xa8, 0x5d, 0x6f, 0x41, + 0x89, 0xbb, 0xd5, 0x88, 0x56, 0x49, 0xb9, 0x9c, 0x18, 0x34, 0x2b, 0x59, 0x3a, 0xc7, 0x92, 0x59, + 0xe8, 0xe3, 0x6d, 0x30, 0x44, 0x6f, 0x7c, 0xae, 0x4b, 0x78, 0x64, 0x23, 0x6b, 0x72, 0x14, 0x68, + 0xf5, 0x77, 0x73, 0x89, 0x40, 0xc9, 0x47, 0xf8, 0x6d, 0xe1, 0x54, 0x5d, 0xd8, 0xfd, 0x54, 0xad, + 0xfe, 0x93, 0x7c, 0x7a, 0x9c, 0xe6, 0x23, 0xfc, 0x90, 0xc3, 0x38, 0x4e, 0xdb, 0xdf, 0xba, 0xb5, + 0x04, 0x23, 0x51, 0x59, 0x88, 0x65, 0xeb, 0x5a, 0x7a, 0xb4, 0xea, 0x8c, 0x56, 0xc4, 0x78, 0xa8, + 0x1f, 0xe7, 0x92, 0x21, 0xa6, 0x8f, 0x7c, 0x7e, 0xda, 0x9f, 0xb6, 0x44, 0x3f, 0xe5, 0x53, 0xb2, + 0xd6, 0x1c, 0xc6, 0xa7, 0x7c, 0x4a, 0x56, 0x8d, 0xfd, 0x7d, 0xca, 0xaf, 0xe4, 0xb3, 0x22, 0x74, + 0x1f, 0xf9, 0x07, 0x7d, 0x4d, 0x16, 0x32, 0x6f, 0x99, 0xf8, 0xb4, 0xa7, 0xb3, 0x42, 0x62, 0x67, + 0xf0, 0x4c, 0xf0, 0xd9, 0xdf, 0x18, 0x4f, 0x15, 0xd6, 0xa7, 0x44, 0x91, 0x8f, 0x87, 0xb0, 0x3e, + 0x25, 0x43, 0xe5, 0xd3, 0x27, 0xac, 0xbf, 0x99, 0xdf, 0x6d, 0x58, 0xf8, 0x53, 0xe1, 0x25, 0x84, + 0xf7, 0x9d, 0x7c, 0x32, 0x5d, 0xc1, 0x91, 0x8b, 0x69, 0x1a, 0x4a, 0x22, 0x71, 0x42, 0xa6, 0x70, + 0x38, 0x3e, 0xcb, 0xa2, 0x11, 0xdf, 0x71, 0x17, 0xc4, 0x45, 0xce, 0xee, 0x44, 0xc2, 0x69, 0xd5, + 0x1f, 0xe4, 0x62, 0xb1, 0xfd, 0x8f, 0xe4, 0x08, 0x61, 0x5f, 0x4b, 0x12, 0x79, 0xdb, 0x3f, 0xcc, + 0x2c, 0xc6, 0x62, 0x2b, 0x07, 0xdf, 0x53, 0xa1, 0x9e, 0x6e, 0x36, 0xe3, 0xe5, 0x45, 0x4c, 0x80, + 0xdf, 0xc9, 0xc3, 0x58, 0x82, 0x94, 0x5c, 0x8f, 0x84, 0xd2, 0xc1, 0x63, 0xc9, 0x98, 0xf3, 0x38, + 0x0f, 0xaa, 0xb3, 0x87, 0x93, 0xd4, 0xeb, 0x50, 0xac, 0xe8, 0x9b, 0xfc, 0xdb, 0x7a, 0x39, 0x4b, + 0x43, 0xdf, 0x94, 0x4f, 0xdc, 0x10, 0x4f, 0x96, 0xe1, 0x3c, 0xbf, 0x0f, 0x31, 0x6d, 0x6b, 0xc9, + 0x6c, 0xd1, 0xaa, 0x35, 0x67, 0x36, 0x9b, 0xa6, 0x2b, 0x2e, 0xf5, 0x5e, 0xd8, 0xde, 0x1a, 0xbf, + 0xe1, 0xd9, 0x9e, 0xde, 0xac, 0x53, 0x9f, 0xac, 0xee, 0x99, 0x2d, 0x5a, 0x37, 0xad, 0x7a, 0x0b, + 0x29, 0x25, 0x96, 0xe9, 0xac, 0x48, 0x95, 0x87, 0xd1, 0xae, 0x35, 0x74, 0xcb, 0xa2, 0x46, 0xd5, + 0x9a, 0xd8, 0xf4, 0x28, 0xbf, 0x0c, 0x2c, 0xf0, 0x23, 0x41, 0xfe, 0x36, 0x9c, 0xa3, 0x19, 0xe3, + 0x65, 0x46, 0xa0, 0xa5, 0x14, 0x52, 0xff, 0x56, 0x31, 0x25, 0xad, 0xc3, 0x31, 0x52, 0x1f, 0xbf, + 0xa7, 0x8b, 0x3b, 0xf4, 0xf4, 0x6d, 0xe8, 0x13, 0x71, 0x4a, 0xc5, 0x05, 0x03, 0x3a, 0xb3, 0x3f, + 0xe6, 0x20, 0xf9, 0x86, 0x46, 0x50, 0x91, 0x26, 0x5c, 0x5e, 0x62, 0xdd, 0x94, 0xde, 0x99, 0xa5, + 0x7d, 0x74, 0x66, 0x17, 0x7e, 0xe4, 0x7d, 0xb8, 0x88, 0xd8, 0x94, 0x6e, 0xed, 0xc3, 0xaa, 0x30, + 0x46, 0x15, 0xaf, 0x2a, 0xbd, 0x73, 0xb3, 0xca, 0x93, 0xaf, 0xc1, 0x50, 0x30, 0x40, 0x4c, 0xea, + 0x8a, 0x9b, 0x8b, 0x2e, 0xe3, 0x8c, 0x07, 0x80, 0x63, 0x60, 0x74, 0x21, 0x8b, 0x06, 0x11, 0x8b, + 0xf0, 0x52, 0xff, 0xa7, 0x5c, 0xb7, 0xf4, 0x12, 0x47, 0x3e, 0x2b, 0xbf, 0x0d, 0x7d, 0x06, 0xff, + 0x28, 0xa1, 0x53, 0xdd, 0x13, 0x50, 0x70, 0x52, 0xcd, 0x2f, 0xa3, 0xfe, 0xe3, 0x5c, 0xd7, 0xac, + 0x16, 0xc7, 0xfd, 0xf3, 0xbe, 0x53, 0xc8, 0xf8, 0x3c, 0x31, 0x89, 0xde, 0x84, 0x51, 0x33, 0x0c, + 0xbb, 0x5d, 0x0f, 0xc3, 0x4f, 0x69, 0x67, 0x24, 0x38, 0x8e, 0xae, 0xbb, 0x70, 0xc1, 0x77, 0x7c, + 0x74, 0x7c, 0x0f, 0x31, 0xb7, 0xde, 0x71, 0x4c, 0x3e, 0x2e, 0xb5, 0x73, 0x6e, 0xcc, 0x7d, 0xcc, + 0x7d, 0xe0, 0x98, 0xac, 0x02, 0xdd, 0x5b, 0xa3, 0x96, 0x5e, 0xdf, 0xb0, 0x9d, 0x75, 0x8c, 0x32, + 0xca, 0x07, 0xa7, 0x76, 0x86, 0xc3, 0x1f, 0xf9, 0x60, 0xf2, 0x2c, 0x0c, 0xaf, 0x36, 0x3b, 0x34, + 0x88, 0xeb, 0xc8, 0xef, 0xfa, 0xb4, 0x21, 0x06, 0x0c, 0x6e, 0x48, 0xae, 0x02, 0x20, 0x91, 0x87, + 0x39, 0x47, 0xf0, 0x62, 0x4f, 0x1b, 0x60, 0x90, 0x25, 0xd1, 0x5d, 0x97, 0xb9, 0x56, 0x73, 0x21, + 0xd5, 0x9b, 0xb6, 0xb5, 0x5a, 0xf7, 0xa8, 0xd3, 0xc2, 0x86, 0xa2, 0x33, 0x83, 0x76, 0x01, 0x29, + 0xf0, 0xea, 0xc4, 0x9d, 0xb5, 0xad, 0xd5, 0x25, 0xea, 0xb4, 0x58, 0x53, 0x5f, 0x00, 0x22, 0x9a, + 0xea, 0xe0, 0xa1, 0x07, 0xff, 0x38, 0xf4, 0x66, 0xd0, 0xc4, 0x47, 0xf0, 0xd3, 0x10, 0xfc, 0xb0, + 0x71, 0x18, 0xe4, 0xc1, 0xed, 0xb8, 0xd0, 0xd0, 0x85, 0x41, 0x03, 0x0e, 0x42, 0x79, 0x5d, 0x00, + 0xe1, 0x5d, 0xc1, 0xbd, 0xba, 0x35, 0xf1, 0x4b, 0xfd, 0xa8, 0x90, 0x96, 0x88, 0xe3, 0x40, 0x8a, + 0x16, 0x4e, 0xab, 0xf9, 0x3d, 0x4d, 0xab, 0x67, 0xac, 0x4e, 0xab, 0xae, 0xb7, 0xdb, 0xf5, 0x15, + 0xb3, 0x89, 0xcf, 0xaa, 0x70, 0xe1, 0xd3, 0x86, 0xad, 0x4e, 0xab, 0xdc, 0x6e, 0x4f, 0x73, 0x20, + 0x79, 0x1e, 0xc6, 0x18, 0x1d, 0x76, 0x52, 0x40, 0x59, 0x44, 0x4a, 0xc6, 0x00, 0xa3, 0xc3, 0xfa, + 0xb4, 0x97, 0xa0, 0x5f, 0xf0, 0xe4, 0x6b, 0x55, 0xaf, 0xd6, 0xc7, 0x99, 0xb9, 0xac, 0xe7, 0x02, + 0x36, 0x7c, 0x72, 0xed, 0xd5, 0x06, 0xfc, 0xf2, 0x18, 0x03, 0xd9, 0xea, 0xb4, 0x78, 0x44, 0xac, + 0x3e, 0x44, 0x06, 0xbf, 0xc9, 0x75, 0x18, 0x61, 0x5c, 0x02, 0x81, 0xf1, 0xb0, 0xb1, 0xbd, 0x5a, + 0x0c, 0x4a, 0xee, 0xc0, 0xb9, 0x08, 0x84, 0xdb, 0xa0, 0xfc, 0x99, 0x40, 0xaf, 0x96, 0x8a, 0x53, + 0x7f, 0xbb, 0x10, 0x4d, 0x0f, 0x72, 0x04, 0x1d, 0x71, 0x11, 0xfa, 0x6c, 0x67, 0xb5, 0xde, 0x71, + 0x9a, 0x62, 0xec, 0x95, 0x6c, 0x67, 0xf5, 0x81, 0xd3, 0x24, 0xe7, 0xa1, 0xc4, 0x7a, 0xc7, 0x34, + 0xc4, 0x10, 0xeb, 0xd5, 0xdb, 0xed, 0xaa, 0x41, 0xca, 0xbc, 0x43, 0x30, 0xe4, 0x68, 0xbd, 0x81, + 0x5b, 0x7b, 0xee, 0x94, 0xd0, 0xcb, 0x57, 0xbc, 0x04, 0x12, 0xfb, 0x09, 0x03, 0x91, 0xf2, 0x83, + 0x80, 0x18, 0x0b, 0x03, 0xb7, 0x25, 0x06, 0xef, 0x93, 0x38, 0x0b, 0x81, 0x0c, 0x59, 0xf0, 0x4d, + 0x8c, 0x41, 0x2a, 0x40, 0x42, 0xaa, 0x96, 0x6d, 0x98, 0x2b, 0x26, 0xe5, 0xaf, 0x3a, 0x7a, 0xf9, + 0xc5, 0x6f, 0x12, 0xab, 0x8d, 0xfa, 0x4c, 0xe6, 0x04, 0x84, 0xbc, 0xc9, 0x95, 0x90, 0xd3, 0xe1, + 0xda, 0xc7, 0xfb, 0x96, 0xdb, 0x69, 0x31, 0x14, 0x6a, 0x26, 0x96, 0xc7, 0x85, 0x50, 0xfd, 0xb8, + 0x90, 0xcc, 0x11, 0x73, 0x24, 0x76, 0xcd, 0x0c, 0x80, 0x48, 0x01, 0x15, 0x5e, 0xae, 0x05, 0x1e, + 0xe7, 0x21, 0x26, 0x83, 0x87, 0x54, 0x96, 0xdc, 0x84, 0x7e, 0xfe, 0x45, 0xd5, 0x8a, 0xb0, 0x77, + 0xd0, 0x45, 0xcc, 0x6d, 0x9b, 0x2b, 0x2b, 0xe8, 0x4f, 0x16, 0xa0, 0xc9, 0x75, 0xe8, 0xab, 0xcc, + 0xd7, 0x6a, 0xe5, 0x79, 0xff, 0xa6, 0x18, 0xdf, 0x97, 0x18, 0x96, 0x5b, 0x77, 0x75, 0xcb, 0xd5, + 0x7c, 0x24, 0x79, 0x16, 0x4a, 0xd5, 0x45, 0x24, 0xe3, 0xaf, 0x26, 0x07, 0xb7, 0xb7, 0xc6, 0xfb, + 0xcc, 0x36, 0xa7, 0x12, 0x28, 0xac, 0xf7, 0x61, 0xb5, 0x22, 0xb9, 0x4b, 0xf0, 0x7a, 0x1f, 0x9b, + 0x06, 0x5e, 0x3b, 0x6b, 0x01, 0x9a, 0xbc, 0x02, 0x43, 0x35, 0xea, 0x98, 0x7a, 0x73, 0xbe, 0x83, + 0x5b, 0x45, 0x29, 0x94, 0xa2, 0x8b, 0xf0, 0xba, 0x85, 0x08, 0x2d, 0x42, 0x46, 0xae, 0x40, 0x71, + 0xc6, 0xb4, 0xfc, 0x27, 0x0c, 0xe8, 0xe3, 0xbe, 0x66, 0x5a, 0x9e, 0x86, 0x50, 0xf5, 0x9f, 0xe5, + 0xd3, 0x13, 0xed, 0x1c, 0xc1, 0x70, 0xdc, 0xe7, 0x4d, 0x6f, 0x4c, 0x09, 0x8a, 0x07, 0x50, 0x82, + 0x15, 0x38, 0x53, 0x36, 0x5a, 0xa6, 0x55, 0xc6, 0x9f, 0xee, 0xdc, 0x74, 0x19, 0x87, 0xb7, 0xf4, + 0x84, 0x2e, 0x86, 0x16, 0xdf, 0xc3, 0x83, 0xf2, 0x32, 0x54, 0x5d, 0xe7, 0xb8, 0x7a, 0x6b, 0x45, + 0xaf, 0x37, 0x78, 0x8e, 0x1a, 0x2d, 0xce, 0x54, 0xfd, 0xe9, 0xfc, 0x0e, 0xb9, 0x81, 0x4e, 0xa2, + 0xf4, 0xd5, 0xef, 0xe6, 0xbb, 0xa7, 0x67, 0x3a, 0x91, 0x42, 0xf9, 0xc3, 0x7c, 0x4a, 0xb2, 0xa4, + 0x03, 0x49, 0xe2, 0x26, 0xf4, 0x73, 0x36, 0x81, 0xab, 0x2d, 0xce, 0x38, 0x5c, 0x59, 0x71, 0xa6, + 0xf3, 0xd1, 0x64, 0x1e, 0xce, 0x95, 0x57, 0x56, 0x68, 0xc3, 0x0b, 0xc3, 0x33, 0xcf, 0x87, 0x81, + 0x52, 0x79, 0x38, 0x5a, 0x81, 0x0f, 0xc3, 0x3b, 0x63, 0x40, 0x90, 0xd4, 0x72, 0x64, 0x09, 0x2e, + 0xc4, 0xe1, 0x35, 0x6e, 0xa6, 0x17, 0xa5, 0x08, 0xb5, 0x09, 0x8e, 0xfc, 0x3f, 0x2d, 0xa3, 0x6c, + 0x5a, 0x2b, 0x71, 0x3a, 0xed, 0xed, 0xd6, 0x4a, 0x9c, 0x5b, 0x53, 0xcb, 0xa9, 0xbf, 0x53, 0x90, + 0x73, 0x4a, 0x9d, 0x5c, 0xa7, 0xa8, 0xbb, 0x11, 0x57, 0xe8, 0xdd, 0x0e, 0x99, 0x57, 0x44, 0x94, + 0x0f, 0xa3, 0xe3, 0xf8, 0x5e, 0x83, 0x41, 0x94, 0x01, 0x04, 0xca, 0xfe, 0x7f, 0x01, 0x25, 0xa9, + 0x42, 0xb1, 0xec, 0xac, 0x72, 0x13, 0x74, 0xa7, 0x87, 0x4f, 0xba, 0xb3, 0xea, 0xa6, 0x3f, 0x7c, + 0x62, 0x2c, 0xd4, 0x3f, 0x95, 0xef, 0x92, 0x06, 0xea, 0x44, 0x4e, 0x22, 0x3f, 0x9f, 0xcf, 0x4a, + 0xe8, 0x74, 0x5c, 0xdd, 0xbb, 0x3e, 0x61, 0xe1, 0x1c, 0x6f, 0xdf, 0xb7, 0x43, 0x16, 0x4e, 0x46, + 0x72, 0xa9, 0x53, 0xe1, 0x7c, 0x94, 0xcf, 0xca, 0xaf, 0x75, 0x62, 0x67, 0x99, 0x8c, 0x94, 0x5e, + 0xa7, 0xba, 0xf2, 0x0b, 0xf9, 0xcc, 0xac, 0x66, 0xa7, 0xd2, 0x51, 0xbf, 0x95, 0xcf, 0xcc, 0xca, + 0x76, 0x22, 0x87, 0x52, 0xaa, 0xb6, 0x9c, 0x8e, 0x25, 0x21, 0x9d, 0xdf, 0xcf, 0xa7, 0xe7, 0xc1, + 0x3b, 0x02, 0x55, 0x39, 0x0c, 0x2f, 0x39, 0x5f, 0xa0, 0xc5, 0x03, 0x09, 0xb4, 0xf7, 0x50, 0x05, + 0x7a, 0x64, 0x63, 0xef, 0xb3, 0x2a, 0xd0, 0x43, 0x18, 0xbc, 0x27, 0x59, 0xa0, 0x3f, 0x5f, 0x94, + 0x73, 0x3f, 0x1e, 0xf3, 0xb3, 0x66, 0x69, 0x77, 0x5f, 0xdc, 0xd7, 0xee, 0x3e, 0xf4, 0xec, 0xed, + 0xdd, 0x87, 0x67, 0xef, 0x3b, 0xd0, 0xe7, 0xe7, 0xd0, 0x2c, 0x45, 0xab, 0x17, 0xe0, 0xac, 0xea, + 0x7d, 0xe9, 0x3f, 0x07, 0x7d, 0x22, 0xf5, 0x8e, 0x38, 0x83, 0xc6, 0x93, 0x6d, 0x01, 0xd2, 0xfc, + 0x3f, 0xc8, 0x15, 0xc0, 0x60, 0x2a, 0xf2, 0xc1, 0x33, 0x0f, 0xae, 0xc2, 0xfe, 0x25, 0x55, 0xe8, + 0x13, 0x67, 0xa5, 0x0a, 0xe0, 0xad, 0xb9, 0x92, 0x4c, 0xe4, 0xc9, 0x8f, 0x4c, 0xf9, 0xcd, 0x88, + 0x20, 0x96, 0xdd, 0x09, 0x04, 0x48, 0xfd, 0xdd, 0x1c, 0x8c, 0xc6, 0x0b, 0x91, 0x17, 0xa0, 0xc4, + 0xff, 0x12, 0x8e, 0x2a, 0xf8, 0xe8, 0x8e, 0x97, 0x90, 0x1f, 0xdd, 0x09, 0xea, 0x57, 0x60, 0x40, + 0xf3, 0x0f, 0xc0, 0xe5, 0x44, 0x39, 0xc1, 0xa9, 0xb8, 0x7c, 0x6a, 0x11, 0x50, 0x92, 0x67, 0xa1, + 0xb0, 0xd0, 0xf4, 0xf3, 0xe3, 0xe0, 0x49, 0xbc, 0xdd, 0x94, 0x5f, 0x14, 0x32, 0x2c, 0x23, 0x9a, + 0xa7, 0x1b, 0xe2, 0x88, 0x0b, 0x89, 0x2c, 0xba, 0x21, 0x13, 0xcd, 0xd3, 0x8d, 0xe7, 0xe7, 0x78, + 0x1e, 0xa2, 0xfb, 0xa6, 0x65, 0x90, 0x4b, 0x70, 0xfe, 0x41, 0x6d, 0x4a, 0xab, 0xdf, 0xaf, 0xce, + 0x57, 0xea, 0x0f, 0xe6, 0x6b, 0x8b, 0x53, 0x93, 0xd5, 0xe9, 0xea, 0x54, 0x65, 0xb4, 0x87, 0x9c, + 0x85, 0x33, 0x21, 0x6a, 0xe6, 0xc1, 0x5c, 0x79, 0x7e, 0x34, 0x47, 0xc6, 0x60, 0x38, 0x04, 0x4e, + 0x2c, 0x2c, 0x8d, 0xe6, 0x9f, 0xff, 0x3c, 0x0c, 0xe2, 0x45, 0xab, 0xf8, 0xbc, 0x21, 0xe8, 0x5f, + 0x98, 0xa8, 0x4d, 0x69, 0x0f, 0x91, 0x09, 0x40, 0xa9, 0x32, 0x35, 0xcf, 0x18, 0xe6, 0x9e, 0xff, + 0xbf, 0x73, 0x00, 0xb5, 0xe9, 0xa5, 0x45, 0x41, 0x38, 0x08, 0x7d, 0xd5, 0xf9, 0x87, 0xe5, 0xd9, + 0x2a, 0xa3, 0xeb, 0x87, 0xe2, 0xc2, 0xe2, 0x14, 0xab, 0x61, 0x00, 0x7a, 0x27, 0x67, 0x17, 0x6a, + 0x53, 0xa3, 0x79, 0x06, 0xd4, 0xa6, 0xca, 0x95, 0xd1, 0x02, 0x03, 0x3e, 0xd2, 0xaa, 0x4b, 0x53, + 0xa3, 0x45, 0xf6, 0xe7, 0x6c, 0x6d, 0xa9, 0xbc, 0x34, 0xda, 0xcb, 0xfe, 0x9c, 0xc6, 0x3f, 0x4b, + 0x8c, 0x59, 0x6d, 0x6a, 0x09, 0x7f, 0xf4, 0xb1, 0x26, 0x4c, 0xfb, 0xbf, 0xfa, 0x19, 0x8a, 0xb1, + 0xae, 0x54, 0xb5, 0xd1, 0x01, 0xf6, 0x83, 0xb1, 0x64, 0x3f, 0x80, 0x35, 0x4e, 0x9b, 0x9a, 0x5b, + 0x78, 0x38, 0x35, 0x3a, 0xc8, 0x78, 0xcd, 0xdd, 0x67, 0xe0, 0x21, 0xf6, 0xa7, 0x36, 0xc7, 0xfe, + 0x1c, 0x66, 0x9c, 0xb4, 0xa9, 0xf2, 0xec, 0x62, 0x79, 0x69, 0x66, 0x74, 0x84, 0xb5, 0x07, 0x79, + 0x9e, 0xe1, 0x25, 0xe7, 0xcb, 0x73, 0x53, 0xa3, 0xa3, 0x82, 0xa6, 0x32, 0x5b, 0x9d, 0xbf, 0x3f, + 0x3a, 0x86, 0x0d, 0x79, 0x7f, 0x0e, 0x7f, 0x10, 0x56, 0x00, 0xff, 0x3a, 0xfb, 0xfc, 0x0f, 0x41, + 0x69, 0xa1, 0x86, 0x57, 0x2b, 0x17, 0xe1, 0xec, 0x42, 0xad, 0xbe, 0xf4, 0xfe, 0xe2, 0x54, 0x4c, + 0xde, 0x63, 0x30, 0xec, 0x23, 0x66, 0xab, 0xf3, 0x0f, 0xbe, 0xca, 0xa5, 0xed, 0x83, 0xe6, 0xca, + 0x93, 0x0b, 0xb5, 0xd1, 0x3c, 0xeb, 0x15, 0x1f, 0xf4, 0xa8, 0x3a, 0x5f, 0x59, 0x78, 0x54, 0x1b, + 0x2d, 0x3c, 0xff, 0x18, 0x86, 0x78, 0x16, 0xa7, 0x05, 0xc7, 0x5c, 0x35, 0x2d, 0x72, 0x15, 0x2e, + 0x55, 0xa6, 0x1e, 0x56, 0x27, 0xa7, 0xea, 0x0b, 0x5a, 0xf5, 0x5e, 0x75, 0x3e, 0x56, 0xd3, 0x79, + 0x18, 0x8b, 0xa2, 0xcb, 0x8b, 0xd5, 0xd1, 0x1c, 0xb9, 0x00, 0x24, 0x0a, 0x7e, 0xb7, 0x3c, 0x37, + 0x3d, 0x9a, 0x27, 0x0a, 0x9c, 0x8b, 0xc2, 0xab, 0xf3, 0x4b, 0x0f, 0xe6, 0xa7, 0x46, 0x0b, 0xcf, + 0xff, 0x85, 0x1c, 0x9c, 0x4f, 0x8d, 0xf4, 0x47, 0x54, 0xb8, 0x36, 0x35, 0x5b, 0xae, 0x2d, 0x55, + 0x27, 0x6b, 0x53, 0x65, 0x6d, 0x72, 0xa6, 0x3e, 0x59, 0x5e, 0x9a, 0xba, 0xb7, 0xa0, 0xbd, 0x5f, + 0xbf, 0x37, 0x35, 0x3f, 0xa5, 0x95, 0x67, 0x47, 0x7b, 0xc8, 0xb3, 0x30, 0x9e, 0x41, 0x53, 0x9b, + 0x9a, 0x7c, 0xa0, 0x55, 0x97, 0xde, 0x1f, 0xcd, 0x91, 0x67, 0xe0, 0x6a, 0x26, 0x11, 0xfb, 0x3d, + 0x9a, 0x27, 0xd7, 0xe0, 0x72, 0x16, 0xc9, 0x7b, 0xb3, 0xa3, 0x85, 0xe7, 0x7f, 0x2e, 0x07, 0x24, + 0x19, 0xaa, 0x8d, 0x3c, 0x0d, 0x57, 0x98, 0x5e, 0xd4, 0xb3, 0x1b, 0xf8, 0x0c, 0x5c, 0x4d, 0xa5, + 0x90, 0x9a, 0x37, 0x0e, 0x4f, 0x65, 0x90, 0x88, 0xc6, 0x5d, 0x01, 0x25, 0x9d, 0x00, 0x9b, 0xf6, + 0x5b, 0x39, 0x38, 0x9f, 0x7a, 0xcf, 0x43, 0x6e, 0xc0, 0xe7, 0xca, 0x95, 0x39, 0xd6, 0x37, 0x93, + 0x4b, 0xd5, 0x85, 0xf9, 0x5a, 0x7d, 0x6e, 0xba, 0x5c, 0x67, 0xda, 0xf7, 0xa0, 0x16, 0xeb, 0xcd, + 0xeb, 0xa0, 0x76, 0xa1, 0x9c, 0x9c, 0x29, 0xcf, 0xdf, 0x63, 0xc3, 0x8f, 0x7c, 0x0e, 0x9e, 0xce, + 0xa4, 0x9b, 0x9a, 0x2f, 0x4f, 0xcc, 0x4e, 0x55, 0x46, 0xf3, 0xe4, 0x39, 0x78, 0x26, 0x93, 0xaa, + 0x52, 0xad, 0x71, 0xb2, 0xc2, 0x44, 0xe5, 0xe3, 0xff, 0xe5, 0x5a, 0xcf, 0xc7, 0x7f, 0x70, 0x2d, + 0xf7, 0xf7, 0xfe, 0xe0, 0x5a, 0xee, 0x9f, 0xfc, 0xc1, 0xb5, 0xdc, 0xd7, 0xee, 0xec, 0x25, 0x04, + 0x1f, 0x9f, 0x7e, 0x97, 0x4b, 0x78, 0xe6, 0xfa, 0xf2, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x4b, + 0xf1, 0x72, 0x81, 0x5f, 0x72, 0x01, 0x00, } func (m *Metadata) Marshal() (dAtA []byte, err error) { @@ -25659,6 +25841,18 @@ func (m *IntegrationMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.GitHub != nil { + { + size, err := m.GitHub.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } if m.AzureOIDC != nil { { size, err := m.AzureOIDC.MarshalToSizedBuffer(dAtA[:i]) @@ -26072,6 +26266,40 @@ func (m *PluginMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *GitHubIntegrationMetadata) 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 *GitHubIntegrationMetadata) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GitHubIntegrationMetadata) 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.Organization) > 0 { + i -= len(m.Organization) + copy(dAtA[i:], m.Organization) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Organization))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *OneOf) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -30218,6 +30446,29 @@ func (m *OneOf_StaticHostUserDelete) MarshalToSizedBuffer(dAtA []byte) (int, err } return len(dAtA) - i, nil } +func (m *OneOf_GitCommand) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *OneOf_GitCommand) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.GitCommand != nil { + { + size, err := m.GitCommand.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xb + i-- + dAtA[i] = 0xb2 + } + return len(dAtA) - i, nil +} func (m *StreamStatus) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -30242,12 +30493,12 @@ func (m *StreamStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n642, err642 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastUploadTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastUploadTime):]) - if err642 != nil { - return 0, err642 + n644, err644 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastUploadTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastUploadTime):]) + if err644 != nil { + return 0, err644 } - i -= n642 - i = encodeVarintEvents(dAtA, i, uint64(n642)) + i -= n644 + i = encodeVarintEvents(dAtA, i, uint64(n644)) i-- dAtA[i] = 0x1a if m.LastEventIndex != 0 { @@ -30406,12 +30657,12 @@ func (m *Identity) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0xc2 } } - n646, err646 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.PreviousIdentityExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.PreviousIdentityExpires):]) - if err646 != nil { - return 0, err646 + n648, err648 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.PreviousIdentityExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.PreviousIdentityExpires):]) + if err648 != nil { + return 0, err648 } - i -= n646 - i = encodeVarintEvents(dAtA, i, uint64(n646)) + i -= n648 + i = encodeVarintEvents(dAtA, i, uint64(n648)) i-- dAtA[i] = 0x1 i-- @@ -30559,12 +30810,12 @@ func (m *Identity) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x4a } - n650, err650 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err650 != nil { - return 0, err650 + n652, err652 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err652 != nil { + return 0, err652 } - i -= n650 - i = encodeVarintEvents(dAtA, i, uint64(n650)) + i -= n652 + i = encodeVarintEvents(dAtA, i, uint64(n652)) i-- dAtA[i] = 0x42 if len(m.KubernetesUsers) > 0 { @@ -36532,6 +36783,176 @@ func (m *StaticHostUserDelete) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *GitCommand) 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 *GitCommand) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GitCommand) 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.Actions) > 0 { + for iNdEx := len(m.Actions) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Actions[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + } + if len(m.Path) > 0 { + i -= len(m.Path) + copy(dAtA[i:], m.Path) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Path))) + i-- + dAtA[i] = 0x4a + } + if len(m.Service) > 0 { + i -= len(m.Service) + copy(dAtA[i:], m.Service) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Service))) + i-- + dAtA[i] = 0x42 + } + { + size, err := m.CommandMetadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + { + size, err := m.ServerMetadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + { + size, err := m.SessionMetadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + { + size, err := m.ConnectionMetadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + { + size, err := m.UserMetadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintEvents(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *GitCommandAction) 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 *GitCommandAction) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GitCommandAction) 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.New) > 0 { + i -= len(m.New) + copy(dAtA[i:], m.New) + i = encodeVarintEvents(dAtA, i, uint64(len(m.New))) + i-- + dAtA[i] = 0x22 + } + if len(m.Old) > 0 { + i -= len(m.Old) + copy(dAtA[i:], m.Old) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Old))) + i-- + dAtA[i] = 0x1a + } + if len(m.Reference) > 0 { + i -= len(m.Reference) + copy(dAtA[i:], m.Reference) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Reference))) + i-- + dAtA[i] = 0x12 + } + if len(m.Action) > 0 { + i -= len(m.Action) + copy(dAtA[i:], m.Action) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Action))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintEvents(dAtA []byte, offset int, v uint64) int { offset -= sovEvents(v) base := offset @@ -40208,6 +40629,10 @@ func (m *IntegrationMetadata) Size() (n int) { l = m.AzureOIDC.Size() n += 1 + l + sovEvents(uint64(l)) } + if m.GitHub != nil { + l = m.GitHub.Size() + n += 1 + l + sovEvents(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -40346,6 +40771,22 @@ func (m *PluginMetadata) Size() (n int) { return n } +func (m *GitHubIntegrationMetadata) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Organization) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *OneOf) Size() (n int) { if m == nil { return 0 @@ -42521,6 +42962,18 @@ func (m *OneOf_StaticHostUserDelete) Size() (n int) { } return n } +func (m *OneOf_GitCommand) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.GitCommand != nil { + l = m.GitCommand.Size() + n += 2 + l + sovEvents(uint64(l)) + } + return n +} func (m *StreamStatus) Size() (n int) { if m == nil { return 0 @@ -44794,6 +45247,72 @@ func (m *StaticHostUserDelete) Size() (n int) { return n } +func (m *GitCommand) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Metadata.Size() + n += 1 + l + sovEvents(uint64(l)) + l = m.UserMetadata.Size() + n += 1 + l + sovEvents(uint64(l)) + l = m.ConnectionMetadata.Size() + n += 1 + l + sovEvents(uint64(l)) + l = m.SessionMetadata.Size() + n += 1 + l + sovEvents(uint64(l)) + l = m.ServerMetadata.Size() + n += 1 + l + sovEvents(uint64(l)) + l = m.CommandMetadata.Size() + n += 1 + l + sovEvents(uint64(l)) + l = len(m.Service) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + l = len(m.Path) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + if len(m.Actions) > 0 { + for _, e := range m.Actions { + l = e.Size() + n += 1 + l + sovEvents(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *GitCommandAction) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Action) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + l = len(m.Reference) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + l = len(m.Old) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + l = len(m.New) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func sovEvents(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -75298,6 +75817,42 @@ func (m *IntegrationMetadata) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GitHub", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.GitHub == nil { + m.GitHub = &GitHubIntegrationMetadata{} + } + if err := m.GitHub.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) @@ -76357,7 +76912,7 @@ func (m *PluginMetadata) Unmarshal(dAtA []byte) error { } return nil } -func (m *OneOf) Unmarshal(dAtA []byte) error { +func (m *GitHubIntegrationMetadata) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -76380,87 +76935,17 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: OneOf: wiretype end group for non-group") + return fmt.Errorf("proto: GitHubIntegrationMetadata: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: OneOf: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GitHubIntegrationMetadata: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserLogin", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &UserLogin{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_UserLogin{v} - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Organization", wireType) } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &UserCreate{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_UserCreate{v} - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserDelete", wireType) - } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -76470,135 +76955,78 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - v := &UserDelete{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_UserDelete{v} + m.Organization = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserPasswordChange", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &UserPasswordChange{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { return err } - m.Event = &OneOf_UserPasswordChange{v} - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionStart", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthEvents } - if postIndex > l { + if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF } - v := &SessionStart{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_SessionStart{v} - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionJoin", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *OneOf) 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 ErrIntOverflowEvents } - if postIndex > l { + if iNdEx >= l { return io.ErrUnexpectedEOF } - v := &SessionJoin{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break } - m.Event = &OneOf_SessionJoin{v} - iNdEx = postIndex - case 7: + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: OneOf: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: OneOf: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionPrint", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserLogin", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -76625,155 +77053,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SessionPrint{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_SessionPrint{v} - iNdEx = postIndex - case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionReject", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &SessionReject{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_SessionReject{v} - iNdEx = postIndex - case 9: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Resize", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &Resize{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_Resize{v} - iNdEx = postIndex - case 10: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionEnd", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &SessionEnd{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_SessionEnd{v} - iNdEx = postIndex - case 11: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionCommand", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &SessionCommand{} + v := &UserLogin{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SessionCommand{v} + m.Event = &OneOf_UserLogin{v} iNdEx = postIndex - case 12: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionDisk", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -76800,15 +77088,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SessionDisk{} + v := &UserCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SessionDisk{v} + m.Event = &OneOf_UserCreate{v} iNdEx = postIndex - case 13: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionNetwork", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -76835,15 +77123,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SessionNetwork{} + v := &UserDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SessionNetwork{v} + m.Event = &OneOf_UserDelete{v} iNdEx = postIndex - case 14: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionData", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserPasswordChange", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -76870,15 +77158,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SessionData{} + v := &UserPasswordChange{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SessionData{v} + m.Event = &OneOf_UserPasswordChange{v} iNdEx = postIndex - case 15: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionLeave", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionStart", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -76905,15 +77193,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SessionLeave{} + v := &SessionStart{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SessionLeave{v} + m.Event = &OneOf_SessionStart{v} iNdEx = postIndex - case 16: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PortForward", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionJoin", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -76940,15 +77228,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &PortForward{} + v := &SessionJoin{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_PortForward{v} + m.Event = &OneOf_SessionJoin{v} iNdEx = postIndex - case 17: + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field X11Forward", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionPrint", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -76975,15 +77263,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &X11Forward{} + v := &SessionPrint{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_X11Forward{v} + m.Event = &OneOf_SessionPrint{v} iNdEx = postIndex - case 18: + case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SCP", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionReject", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77010,15 +77298,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SCP{} + v := &SessionReject{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SCP{v} + m.Event = &OneOf_SessionReject{v} iNdEx = postIndex - case 19: + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Exec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Resize", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77045,15 +77333,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &Exec{} + v := &Resize{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_Exec{v} + m.Event = &OneOf_Resize{v} iNdEx = postIndex - case 20: + case 10: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Subsystem", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionEnd", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77080,15 +77368,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &Subsystem{} + v := &SessionEnd{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_Subsystem{v} + m.Event = &OneOf_SessionEnd{v} iNdEx = postIndex - case 21: + case 11: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClientDisconnect", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionCommand", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77115,15 +77403,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &ClientDisconnect{} + v := &SessionCommand{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_ClientDisconnect{v} + m.Event = &OneOf_SessionCommand{v} iNdEx = postIndex - case 22: + case 12: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthAttempt", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionDisk", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77150,15 +77438,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AuthAttempt{} + v := &SessionDisk{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AuthAttempt{v} + m.Event = &OneOf_SessionDisk{v} iNdEx = postIndex - case 23: + case 13: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessRequestCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionNetwork", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77185,15 +77473,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AccessRequestCreate{} + v := &SessionNetwork{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AccessRequestCreate{v} + m.Event = &OneOf_SessionNetwork{v} iNdEx = postIndex - case 24: + case 14: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserTokenCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionData", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77220,15 +77508,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &UserTokenCreate{} + v := &SessionData{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_UserTokenCreate{v} + m.Event = &OneOf_SessionData{v} iNdEx = postIndex - case 25: + case 15: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RoleCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionLeave", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77255,15 +77543,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RoleCreate{} + v := &SessionLeave{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_RoleCreate{v} + m.Event = &OneOf_SessionLeave{v} iNdEx = postIndex - case 26: + case 16: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RoleDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PortForward", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77290,155 +77578,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RoleDelete{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_RoleDelete{v} - iNdEx = postIndex - case 27: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TrustedClusterCreate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &TrustedClusterCreate{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_TrustedClusterCreate{v} - iNdEx = postIndex - case 28: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TrustedClusterDelete", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &TrustedClusterDelete{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_TrustedClusterDelete{v} - iNdEx = postIndex - case 29: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TrustedClusterTokenCreate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &TrustedClusterTokenCreate{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_TrustedClusterTokenCreate{v} - iNdEx = postIndex - case 30: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field GithubConnectorCreate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &GithubConnectorCreate{} + v := &PortForward{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_GithubConnectorCreate{v} + m.Event = &OneOf_PortForward{v} iNdEx = postIndex - case 31: + case 17: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field GithubConnectorDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field X11Forward", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77465,15 +77613,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &GithubConnectorDelete{} + v := &X11Forward{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_GithubConnectorDelete{v} + m.Event = &OneOf_X11Forward{v} iNdEx = postIndex - case 32: + case 18: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OIDCConnectorCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SCP", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77500,15 +77648,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &OIDCConnectorCreate{} + v := &SCP{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_OIDCConnectorCreate{v} + m.Event = &OneOf_SCP{v} iNdEx = postIndex - case 33: + case 19: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OIDCConnectorDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Exec", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77535,15 +77683,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &OIDCConnectorDelete{} + v := &Exec{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_OIDCConnectorDelete{v} + m.Event = &OneOf_Exec{v} iNdEx = postIndex - case 34: + case 20: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SAMLConnectorCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Subsystem", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77570,15 +77718,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SAMLConnectorCreate{} + v := &Subsystem{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SAMLConnectorCreate{v} + m.Event = &OneOf_Subsystem{v} iNdEx = postIndex - case 35: + case 21: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SAMLConnectorDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClientDisconnect", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77605,15 +77753,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SAMLConnectorDelete{} + v := &ClientDisconnect{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SAMLConnectorDelete{v} + m.Event = &OneOf_ClientDisconnect{v} iNdEx = postIndex - case 36: + case 22: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field KubeRequest", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AuthAttempt", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77640,15 +77788,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &KubeRequest{} + v := &AuthAttempt{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_KubeRequest{v} + m.Event = &OneOf_AuthAttempt{v} iNdEx = postIndex - case 37: + case 23: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AppSessionStart", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccessRequestCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77675,15 +77823,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AppSessionStart{} + v := &AccessRequestCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AppSessionStart{v} + m.Event = &OneOf_AccessRequestCreate{v} iNdEx = postIndex - case 38: + case 24: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AppSessionChunk", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserTokenCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77710,15 +77858,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AppSessionChunk{} + v := &UserTokenCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AppSessionChunk{v} + m.Event = &OneOf_UserTokenCreate{v} iNdEx = postIndex - case 39: + case 25: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AppSessionRequest", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RoleCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77745,15 +77893,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AppSessionRequest{} + v := &RoleCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AppSessionRequest{v} + m.Event = &OneOf_RoleCreate{v} iNdEx = postIndex - case 40: + case 26: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSessionStart", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RoleDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77780,15 +77928,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DatabaseSessionStart{} + v := &RoleDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DatabaseSessionStart{v} + m.Event = &OneOf_RoleDelete{v} iNdEx = postIndex - case 41: + case 27: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSessionEnd", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TrustedClusterCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77815,15 +77963,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DatabaseSessionEnd{} + v := &TrustedClusterCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DatabaseSessionEnd{v} + m.Event = &OneOf_TrustedClusterCreate{v} iNdEx = postIndex - case 42: + case 28: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSessionQuery", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TrustedClusterDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77850,15 +77998,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DatabaseSessionQuery{} + v := &TrustedClusterDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DatabaseSessionQuery{v} + m.Event = &OneOf_TrustedClusterDelete{v} iNdEx = postIndex - case 43: + case 29: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionUpload", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TrustedClusterTokenCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77885,15 +78033,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SessionUpload{} + v := &TrustedClusterTokenCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SessionUpload{v} + m.Event = &OneOf_TrustedClusterTokenCreate{v} iNdEx = postIndex - case 44: + case 30: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MFADeviceAdd", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field GithubConnectorCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77920,15 +78068,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &MFADeviceAdd{} + v := &GithubConnectorCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_MFADeviceAdd{v} + m.Event = &OneOf_GithubConnectorCreate{v} iNdEx = postIndex - case 45: + case 31: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MFADeviceDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field GithubConnectorDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -77955,155 +78103,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &MFADeviceDelete{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_MFADeviceDelete{v} - iNdEx = postIndex - case 46: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BillingInformationUpdate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &BillingInformationUpdate{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_BillingInformationUpdate{v} - iNdEx = postIndex - case 47: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BillingCardCreate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &BillingCardCreate{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_BillingCardCreate{v} - iNdEx = postIndex - case 48: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BillingCardDelete", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &BillingCardDelete{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_BillingCardDelete{v} - iNdEx = postIndex - case 49: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LockCreate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &LockCreate{} + v := &GithubConnectorDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_LockCreate{v} + m.Event = &OneOf_GithubConnectorDelete{v} iNdEx = postIndex - case 50: + case 32: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LockDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field OIDCConnectorCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78130,15 +78138,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &LockDelete{} + v := &OIDCConnectorCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_LockDelete{v} + m.Event = &OneOf_OIDCConnectorCreate{v} iNdEx = postIndex - case 51: + case 33: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RecoveryCodeGenerate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field OIDCConnectorDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78165,15 +78173,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RecoveryCodeGenerate{} + v := &OIDCConnectorDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_RecoveryCodeGenerate{v} + m.Event = &OneOf_OIDCConnectorDelete{v} iNdEx = postIndex - case 52: + case 34: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RecoveryCodeUsed", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SAMLConnectorCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78200,15 +78208,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RecoveryCodeUsed{} + v := &SAMLConnectorCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_RecoveryCodeUsed{v} + m.Event = &OneOf_SAMLConnectorCreate{v} iNdEx = postIndex - case 53: + case 35: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SAMLConnectorDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78235,15 +78243,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DatabaseCreate{} + v := &SAMLConnectorDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DatabaseCreate{v} + m.Event = &OneOf_SAMLConnectorDelete{v} iNdEx = postIndex - case 54: + case 36: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field KubeRequest", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78270,15 +78278,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DatabaseUpdate{} + v := &KubeRequest{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DatabaseUpdate{v} + m.Event = &OneOf_KubeRequest{v} iNdEx = postIndex - case 55: + case 37: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AppSessionStart", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78305,15 +78313,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DatabaseDelete{} + v := &AppSessionStart{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DatabaseDelete{v} + m.Event = &OneOf_AppSessionStart{v} iNdEx = postIndex - case 56: + case 38: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AppCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AppSessionChunk", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78340,15 +78348,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AppCreate{} + v := &AppSessionChunk{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AppCreate{v} + m.Event = &OneOf_AppSessionChunk{v} iNdEx = postIndex - case 57: + case 39: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AppUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AppSessionRequest", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78375,15 +78383,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AppUpdate{} + v := &AppSessionRequest{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AppUpdate{v} + m.Event = &OneOf_AppSessionRequest{v} iNdEx = postIndex - case 58: + case 40: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AppDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSessionStart", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78410,15 +78418,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AppDelete{} + v := &DatabaseSessionStart{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AppDelete{v} + m.Event = &OneOf_DatabaseSessionStart{v} iNdEx = postIndex - case 59: + case 41: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field WindowsDesktopSessionStart", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSessionEnd", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78445,15 +78453,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &WindowsDesktopSessionStart{} + v := &DatabaseSessionEnd{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_WindowsDesktopSessionStart{v} + m.Event = &OneOf_DatabaseSessionEnd{v} iNdEx = postIndex - case 60: + case 42: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field WindowsDesktopSessionEnd", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSessionQuery", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78480,15 +78488,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &WindowsDesktopSessionEnd{} + v := &DatabaseSessionQuery{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_WindowsDesktopSessionEnd{v} + m.Event = &OneOf_DatabaseSessionQuery{v} iNdEx = postIndex - case 61: + case 43: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PostgresParse", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionUpload", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78515,15 +78523,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &PostgresParse{} + v := &SessionUpload{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_PostgresParse{v} + m.Event = &OneOf_SessionUpload{v} iNdEx = postIndex - case 62: + case 44: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PostgresBind", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MFADeviceAdd", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78550,15 +78558,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &PostgresBind{} + v := &MFADeviceAdd{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_PostgresBind{v} + m.Event = &OneOf_MFADeviceAdd{v} iNdEx = postIndex - case 63: + case 45: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PostgresExecute", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MFADeviceDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78585,15 +78593,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &PostgresExecute{} + v := &MFADeviceDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_PostgresExecute{v} + m.Event = &OneOf_MFADeviceDelete{v} iNdEx = postIndex - case 64: + case 46: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PostgresClose", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field BillingInformationUpdate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78620,155 +78628,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &PostgresClose{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_PostgresClose{v} - iNdEx = postIndex - case 65: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PostgresFunctionCall", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &PostgresFunctionCall{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_PostgresFunctionCall{v} - iNdEx = postIndex - case 66: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessRequestDelete", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &AccessRequestDelete{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_AccessRequestDelete{v} - iNdEx = postIndex - case 67: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionConnect", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &SessionConnect{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_SessionConnect{v} - iNdEx = postIndex - case 68: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CertificateCreate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &CertificateCreate{} + v := &BillingInformationUpdate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_CertificateCreate{v} + m.Event = &OneOf_BillingInformationUpdate{v} iNdEx = postIndex - case 69: + case 47: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DesktopRecording", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field BillingCardCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78795,15 +78663,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DesktopRecording{} + v := &BillingCardCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DesktopRecording{v} + m.Event = &OneOf_BillingCardCreate{v} iNdEx = postIndex - case 70: + case 48: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DesktopClipboardSend", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field BillingCardDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78830,15 +78698,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DesktopClipboardSend{} + v := &BillingCardDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DesktopClipboardSend{v} + m.Event = &OneOf_BillingCardDelete{v} iNdEx = postIndex - case 71: + case 49: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DesktopClipboardReceive", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LockCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78865,15 +78733,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DesktopClipboardReceive{} + v := &LockCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DesktopClipboardReceive{v} + m.Event = &OneOf_LockCreate{v} iNdEx = postIndex - case 72: + case 50: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQLStatementPrepare", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LockDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78900,15 +78768,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &MySQLStatementPrepare{} + v := &LockDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_MySQLStatementPrepare{v} + m.Event = &OneOf_LockDelete{v} iNdEx = postIndex - case 73: + case 51: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQLStatementExecute", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RecoveryCodeGenerate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78935,15 +78803,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &MySQLStatementExecute{} + v := &RecoveryCodeGenerate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_MySQLStatementExecute{v} + m.Event = &OneOf_RecoveryCodeGenerate{v} iNdEx = postIndex - case 74: + case 52: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQLStatementSendLongData", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RecoveryCodeUsed", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -78970,15 +78838,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &MySQLStatementSendLongData{} + v := &RecoveryCodeUsed{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_MySQLStatementSendLongData{v} + m.Event = &OneOf_RecoveryCodeUsed{v} iNdEx = postIndex - case 75: + case 53: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQLStatementClose", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79005,15 +78873,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &MySQLStatementClose{} + v := &DatabaseCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_MySQLStatementClose{v} + m.Event = &OneOf_DatabaseCreate{v} iNdEx = postIndex - case 76: + case 54: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQLStatementReset", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseUpdate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79040,15 +78908,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &MySQLStatementReset{} + v := &DatabaseUpdate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_MySQLStatementReset{v} + m.Event = &OneOf_DatabaseUpdate{v} iNdEx = postIndex - case 77: + case 55: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQLStatementFetch", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79075,15 +78943,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &MySQLStatementFetch{} + v := &DatabaseDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_MySQLStatementFetch{v} + m.Event = &OneOf_DatabaseDelete{v} iNdEx = postIndex - case 78: + case 56: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQLStatementBulkExecute", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AppCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79110,15 +78978,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &MySQLStatementBulkExecute{} + v := &AppCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_MySQLStatementBulkExecute{v} + m.Event = &OneOf_AppCreate{v} iNdEx = postIndex - case 79: + case 57: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RenewableCertificateGenerationMismatch", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AppUpdate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79145,15 +79013,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RenewableCertificateGenerationMismatch{} + v := &AppUpdate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_RenewableCertificateGenerationMismatch{v} + m.Event = &OneOf_AppUpdate{v} iNdEx = postIndex - case 80: + case 58: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Unknown", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AppDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79180,15 +79048,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &Unknown{} + v := &AppDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_Unknown{v} + m.Event = &OneOf_AppDelete{v} iNdEx = postIndex - case 81: + case 59: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQLInitDB", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field WindowsDesktopSessionStart", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79215,15 +79083,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &MySQLInitDB{} + v := &WindowsDesktopSessionStart{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_MySQLInitDB{v} + m.Event = &OneOf_WindowsDesktopSessionStart{v} iNdEx = postIndex - case 82: + case 60: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQLCreateDB", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field WindowsDesktopSessionEnd", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79250,15 +79118,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &MySQLCreateDB{} + v := &WindowsDesktopSessionEnd{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_MySQLCreateDB{v} + m.Event = &OneOf_WindowsDesktopSessionEnd{v} iNdEx = postIndex - case 83: + case 61: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQLDropDB", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PostgresParse", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79285,155 +79153,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &MySQLDropDB{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_MySQLDropDB{v} - iNdEx = postIndex - case 84: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQLShutDown", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &MySQLShutDown{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_MySQLShutDown{v} - iNdEx = postIndex - case 85: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQLProcessKill", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &MySQLProcessKill{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_MySQLProcessKill{v} - iNdEx = postIndex - case 86: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQLDebug", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &MySQLDebug{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_MySQLDebug{v} - iNdEx = postIndex - case 87: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MySQLRefresh", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &MySQLRefresh{} + v := &PostgresParse{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_MySQLRefresh{v} + m.Event = &OneOf_PostgresParse{v} iNdEx = postIndex - case 88: + case 62: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessRequestResourceSearch", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PostgresBind", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79460,15 +79188,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AccessRequestResourceSearch{} + v := &PostgresBind{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AccessRequestResourceSearch{v} + m.Event = &OneOf_PostgresBind{v} iNdEx = postIndex - case 89: + case 63: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SQLServerRPCRequest", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PostgresExecute", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79495,15 +79223,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SQLServerRPCRequest{} + v := &PostgresExecute{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SQLServerRPCRequest{v} + m.Event = &OneOf_PostgresExecute{v} iNdEx = postIndex - case 90: + case 64: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSessionMalformedPacket", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PostgresClose", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79530,15 +79258,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DatabaseSessionMalformedPacket{} + v := &PostgresClose{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DatabaseSessionMalformedPacket{v} + m.Event = &OneOf_PostgresClose{v} iNdEx = postIndex - case 91: + case 65: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SFTP", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PostgresFunctionCall", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79565,15 +79293,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SFTP{} + v := &PostgresFunctionCall{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SFTP{v} + m.Event = &OneOf_PostgresFunctionCall{v} iNdEx = postIndex - case 92: + case 66: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UpgradeWindowStartUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccessRequestDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79600,15 +79328,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &UpgradeWindowStartUpdate{} + v := &AccessRequestDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_UpgradeWindowStartUpdate{v} + m.Event = &OneOf_AccessRequestDelete{v} iNdEx = postIndex - case 93: + case 67: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AppSessionEnd", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionConnect", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79635,15 +79363,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AppSessionEnd{} + v := &SessionConnect{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AppSessionEnd{v} + m.Event = &OneOf_SessionConnect{v} iNdEx = postIndex - case 94: + case 68: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionRecordingAccess", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CertificateCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79670,15 +79398,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SessionRecordingAccess{} + v := &CertificateCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SessionRecordingAccess{v} + m.Event = &OneOf_CertificateCreate{v} iNdEx = postIndex - case 96: + case 69: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field KubernetesClusterCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DesktopRecording", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79705,15 +79433,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &KubernetesClusterCreate{} + v := &DesktopRecording{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_KubernetesClusterCreate{v} + m.Event = &OneOf_DesktopRecording{v} iNdEx = postIndex - case 97: + case 70: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field KubernetesClusterUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DesktopClipboardSend", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79740,15 +79468,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &KubernetesClusterUpdate{} + v := &DesktopClipboardSend{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_KubernetesClusterUpdate{v} + m.Event = &OneOf_DesktopClipboardSend{v} iNdEx = postIndex - case 98: + case 71: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field KubernetesClusterDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DesktopClipboardReceive", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79775,15 +79503,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &KubernetesClusterDelete{} + v := &DesktopClipboardReceive{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_KubernetesClusterDelete{v} + m.Event = &OneOf_DesktopClipboardReceive{v} iNdEx = postIndex - case 99: + case 72: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SSMRun", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MySQLStatementPrepare", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79810,15 +79538,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SSMRun{} + v := &MySQLStatementPrepare{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SSMRun{v} + m.Event = &OneOf_MySQLStatementPrepare{v} iNdEx = postIndex - case 100: + case 73: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ElasticsearchRequest", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MySQLStatementExecute", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79845,15 +79573,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &ElasticsearchRequest{} + v := &MySQLStatementExecute{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_ElasticsearchRequest{v} + m.Event = &OneOf_MySQLStatementExecute{v} iNdEx = postIndex - case 101: + case 74: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CassandraBatch", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MySQLStatementSendLongData", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79880,15 +79608,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &CassandraBatch{} + v := &MySQLStatementSendLongData{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_CassandraBatch{v} + m.Event = &OneOf_MySQLStatementSendLongData{v} iNdEx = postIndex - case 102: + case 75: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CassandraPrepare", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MySQLStatementClose", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79915,15 +79643,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &CassandraPrepare{} + v := &MySQLStatementClose{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_CassandraPrepare{v} + m.Event = &OneOf_MySQLStatementClose{v} iNdEx = postIndex - case 103: + case 76: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CassandraRegister", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MySQLStatementReset", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -79950,155 +79678,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &CassandraRegister{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_CassandraRegister{v} - iNdEx = postIndex - case 104: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CassandraExecute", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &CassandraExecute{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_CassandraExecute{v} - iNdEx = postIndex - case 105: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AppSessionDynamoDBRequest", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &AppSessionDynamoDBRequest{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_AppSessionDynamoDBRequest{v} - iNdEx = postIndex - case 106: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DesktopSharedDirectoryStart", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &DesktopSharedDirectoryStart{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_DesktopSharedDirectoryStart{v} - iNdEx = postIndex - case 107: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DesktopSharedDirectoryRead", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &DesktopSharedDirectoryRead{} + v := &MySQLStatementReset{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DesktopSharedDirectoryRead{v} + m.Event = &OneOf_MySQLStatementReset{v} iNdEx = postIndex - case 108: + case 77: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DesktopSharedDirectoryWrite", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MySQLStatementFetch", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80125,15 +79713,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DesktopSharedDirectoryWrite{} + v := &MySQLStatementFetch{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DesktopSharedDirectoryWrite{v} + m.Event = &OneOf_MySQLStatementFetch{v} iNdEx = postIndex - case 109: + case 78: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DynamoDBRequest", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MySQLStatementBulkExecute", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80160,15 +79748,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DynamoDBRequest{} + v := &MySQLStatementBulkExecute{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DynamoDBRequest{v} + m.Event = &OneOf_MySQLStatementBulkExecute{v} iNdEx = postIndex - case 110: + case 79: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BotJoin", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field RenewableCertificateGenerationMismatch", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80195,15 +79783,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &BotJoin{} + v := &RenewableCertificateGenerationMismatch{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_BotJoin{v} + m.Event = &OneOf_RenewableCertificateGenerationMismatch{v} iNdEx = postIndex - case 111: + case 80: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field InstanceJoin", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Unknown", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80230,15 +79818,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &InstanceJoin{} + v := &Unknown{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_InstanceJoin{v} + m.Event = &OneOf_Unknown{v} iNdEx = postIndex - case 112: + case 81: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DeviceEvent", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MySQLInitDB", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80265,15 +79853,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DeviceEvent{} + v := &MySQLInitDB{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DeviceEvent{v} + m.Event = &OneOf_MySQLInitDB{v} iNdEx = postIndex - case 113: + case 82: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LoginRuleCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MySQLCreateDB", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80300,15 +79888,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &LoginRuleCreate{} + v := &MySQLCreateDB{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_LoginRuleCreate{v} + m.Event = &OneOf_MySQLCreateDB{v} iNdEx = postIndex - case 114: + case 83: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LoginRuleDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MySQLDropDB", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80335,15 +79923,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &LoginRuleDelete{} + v := &MySQLDropDB{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_LoginRuleDelete{v} + m.Event = &OneOf_MySQLDropDB{v} iNdEx = postIndex - case 115: + case 84: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SAMLIdPAuthAttempt", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MySQLShutDown", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80370,15 +79958,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SAMLIdPAuthAttempt{} + v := &MySQLShutDown{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SAMLIdPAuthAttempt{v} + m.Event = &OneOf_MySQLShutDown{v} iNdEx = postIndex - case 116: + case 85: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SAMLIdPServiceProviderCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MySQLProcessKill", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80405,15 +79993,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SAMLIdPServiceProviderCreate{} + v := &MySQLProcessKill{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SAMLIdPServiceProviderCreate{v} + m.Event = &OneOf_MySQLProcessKill{v} iNdEx = postIndex - case 117: + case 86: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SAMLIdPServiceProviderUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MySQLDebug", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80440,15 +80028,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SAMLIdPServiceProviderUpdate{} + v := &MySQLDebug{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SAMLIdPServiceProviderUpdate{v} + m.Event = &OneOf_MySQLDebug{v} iNdEx = postIndex - case 118: + case 87: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SAMLIdPServiceProviderDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MySQLRefresh", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80475,15 +80063,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SAMLIdPServiceProviderDelete{} + v := &MySQLRefresh{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SAMLIdPServiceProviderDelete{v} + m.Event = &OneOf_MySQLRefresh{v} iNdEx = postIndex - case 119: + case 88: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SAMLIdPServiceProviderDeleteAll", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccessRequestResourceSearch", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80510,15 +80098,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SAMLIdPServiceProviderDeleteAll{} + v := &AccessRequestResourceSearch{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SAMLIdPServiceProviderDeleteAll{v} + m.Event = &OneOf_AccessRequestResourceSearch{v} iNdEx = postIndex - case 120: + case 89: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OpenSearchRequest", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SQLServerRPCRequest", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80545,15 +80133,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &OpenSearchRequest{} + v := &SQLServerRPCRequest{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_OpenSearchRequest{v} + m.Event = &OneOf_SQLServerRPCRequest{v} iNdEx = postIndex - case 121: + case 90: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DeviceEvent2", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSessionMalformedPacket", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80580,15 +80168,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DeviceEvent2{} + v := &DatabaseSessionMalformedPacket{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DeviceEvent2{v} + m.Event = &OneOf_DatabaseSessionMalformedPacket{v} iNdEx = postIndex - case 122: + case 91: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OktaResourcesUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SFTP", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80615,155 +80203,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &OktaResourcesUpdate{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_OktaResourcesUpdate{v} - iNdEx = postIndex - case 123: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OktaSyncFailure", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &OktaSyncFailure{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_OktaSyncFailure{v} - iNdEx = postIndex - case 124: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OktaAssignmentResult", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &OktaAssignmentResult{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_OktaAssignmentResult{v} - iNdEx = postIndex - case 125: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ProvisionTokenCreate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &ProvisionTokenCreate{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_ProvisionTokenCreate{v} - iNdEx = postIndex - case 126: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessListCreate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &AccessListCreate{} + v := &SFTP{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AccessListCreate{v} + m.Event = &OneOf_SFTP{v} iNdEx = postIndex - case 127: + case 92: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessListUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UpgradeWindowStartUpdate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80790,15 +80238,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AccessListUpdate{} + v := &UpgradeWindowStartUpdate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AccessListUpdate{v} + m.Event = &OneOf_UpgradeWindowStartUpdate{v} iNdEx = postIndex - case 128: + case 93: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessListDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AppSessionEnd", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80825,15 +80273,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AccessListDelete{} + v := &AppSessionEnd{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AccessListDelete{v} + m.Event = &OneOf_AppSessionEnd{v} iNdEx = postIndex - case 129: + case 94: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessListReview", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionRecordingAccess", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80860,15 +80308,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AccessListReview{} + v := &SessionRecordingAccess{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AccessListReview{v} + m.Event = &OneOf_SessionRecordingAccess{v} iNdEx = postIndex - case 130: + case 96: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessListMemberCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field KubernetesClusterCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80895,15 +80343,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AccessListMemberCreate{} + v := &KubernetesClusterCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AccessListMemberCreate{v} + m.Event = &OneOf_KubernetesClusterCreate{v} iNdEx = postIndex - case 131: + case 97: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessListMemberUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field KubernetesClusterUpdate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80930,15 +80378,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AccessListMemberUpdate{} + v := &KubernetesClusterUpdate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AccessListMemberUpdate{v} + m.Event = &OneOf_KubernetesClusterUpdate{v} iNdEx = postIndex - case 132: + case 98: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessListMemberDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field KubernetesClusterDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -80965,15 +80413,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AccessListMemberDelete{} + v := &KubernetesClusterDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AccessListMemberDelete{v} + m.Event = &OneOf_KubernetesClusterDelete{v} iNdEx = postIndex - case 133: + case 99: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessListMemberDeleteAllForAccessList", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SSMRun", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81000,15 +80448,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AccessListMemberDeleteAllForAccessList{} + v := &SSMRun{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AccessListMemberDeleteAllForAccessList{v} + m.Event = &OneOf_SSMRun{v} iNdEx = postIndex - case 134: + case 100: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuditQueryRun", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ElasticsearchRequest", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81035,15 +80483,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AuditQueryRun{} + v := &ElasticsearchRequest{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AuditQueryRun{v} + m.Event = &OneOf_ElasticsearchRequest{v} iNdEx = postIndex - case 135: + case 101: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SecurityReportRun", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CassandraBatch", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81070,15 +80518,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SecurityReportRun{} + v := &CassandraBatch{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SecurityReportRun{v} + m.Event = &OneOf_CassandraBatch{v} iNdEx = postIndex - case 136: + case 102: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field GithubConnectorUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CassandraPrepare", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81105,15 +80553,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &GithubConnectorUpdate{} + v := &CassandraPrepare{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_GithubConnectorUpdate{v} + m.Event = &OneOf_CassandraPrepare{v} iNdEx = postIndex - case 137: + case 103: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OIDCConnectorUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CassandraRegister", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81140,15 +80588,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &OIDCConnectorUpdate{} + v := &CassandraRegister{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_OIDCConnectorUpdate{v} + m.Event = &OneOf_CassandraRegister{v} iNdEx = postIndex - case 138: + case 104: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SAMLConnectorUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CassandraExecute", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81175,15 +80623,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SAMLConnectorUpdate{} + v := &CassandraExecute{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SAMLConnectorUpdate{v} + m.Event = &OneOf_CassandraExecute{v} iNdEx = postIndex - case 139: + case 105: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RoleUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AppSessionDynamoDBRequest", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81210,15 +80658,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &RoleUpdate{} + v := &AppSessionDynamoDBRequest{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_RoleUpdate{v} + m.Event = &OneOf_AppSessionDynamoDBRequest{v} iNdEx = postIndex - case 140: + case 106: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DesktopSharedDirectoryStart", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81245,15 +80693,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &UserUpdate{} + v := &DesktopSharedDirectoryStart{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_UserUpdate{v} + m.Event = &OneOf_DesktopSharedDirectoryStart{v} iNdEx = postIndex - case 141: + case 107: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExternalAuditStorageEnable", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DesktopSharedDirectoryRead", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81280,155 +80728,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &ExternalAuditStorageEnable{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_ExternalAuditStorageEnable{v} - iNdEx = postIndex - case 142: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExternalAuditStorageDisable", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &ExternalAuditStorageDisable{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_ExternalAuditStorageDisable{v} - iNdEx = postIndex - case 143: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BotCreate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &BotCreate{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_BotCreate{v} - iNdEx = postIndex - case 144: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BotDelete", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &BotDelete{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_BotDelete{v} - iNdEx = postIndex - case 145: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BotUpdate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &BotUpdate{} + v := &DesktopSharedDirectoryRead{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_BotUpdate{v} + m.Event = &OneOf_DesktopSharedDirectoryRead{v} iNdEx = postIndex - case 146: + case 108: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CreateMFAAuthChallenge", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DesktopSharedDirectoryWrite", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81455,15 +80763,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &CreateMFAAuthChallenge{} + v := &DesktopSharedDirectoryWrite{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_CreateMFAAuthChallenge{v} + m.Event = &OneOf_DesktopSharedDirectoryWrite{v} iNdEx = postIndex - case 147: + case 109: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ValidateMFAAuthResponse", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DynamoDBRequest", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81490,15 +80798,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &ValidateMFAAuthResponse{} + v := &DynamoDBRequest{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_ValidateMFAAuthResponse{v} + m.Event = &OneOf_DynamoDBRequest{v} iNdEx = postIndex - case 148: + case 110: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OktaAccessListSync", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field BotJoin", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81525,15 +80833,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &OktaAccessListSync{} + v := &BotJoin{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_OktaAccessListSync{v} + m.Event = &OneOf_BotJoin{v} iNdEx = postIndex - case 149: + case 111: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabasePermissionUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field InstanceJoin", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81560,15 +80868,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DatabasePermissionUpdate{} + v := &InstanceJoin{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DatabasePermissionUpdate{v} + m.Event = &OneOf_InstanceJoin{v} iNdEx = postIndex - case 150: + case 112: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SPIFFESVIDIssued", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DeviceEvent", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81595,15 +80903,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SPIFFESVIDIssued{} + v := &DeviceEvent{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SPIFFESVIDIssued{v} + m.Event = &OneOf_DeviceEvent{v} iNdEx = postIndex - case 151: + case 113: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OktaUserSync", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LoginRuleCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81630,15 +80938,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &OktaUserSync{} + v := &LoginRuleCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_OktaUserSync{v} + m.Event = &OneOf_LoginRuleCreate{v} iNdEx = postIndex - case 152: + case 114: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AuthPreferenceUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LoginRuleDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81665,15 +80973,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AuthPreferenceUpdate{} + v := &LoginRuleDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AuthPreferenceUpdate{v} + m.Event = &OneOf_LoginRuleDelete{v} iNdEx = postIndex - case 153: + case 115: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionRecordingConfigUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SAMLIdPAuthAttempt", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81700,15 +81008,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SessionRecordingConfigUpdate{} + v := &SAMLIdPAuthAttempt{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SessionRecordingConfigUpdate{v} + m.Event = &OneOf_SAMLIdPAuthAttempt{v} iNdEx = postIndex - case 154: + case 116: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClusterNetworkingConfigUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SAMLIdPServiceProviderCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81735,15 +81043,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &ClusterNetworkingConfigUpdate{} + v := &SAMLIdPServiceProviderCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_ClusterNetworkingConfigUpdate{v} + m.Event = &OneOf_SAMLIdPServiceProviderCreate{v} iNdEx = postIndex - case 155: + case 117: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseUserCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SAMLIdPServiceProviderUpdate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81770,15 +81078,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DatabaseUserCreate{} + v := &SAMLIdPServiceProviderUpdate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DatabaseUserCreate{v} + m.Event = &OneOf_SAMLIdPServiceProviderUpdate{v} iNdEx = postIndex - case 156: + case 118: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseUserDeactivate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SAMLIdPServiceProviderDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81805,15 +81113,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DatabaseUserDeactivate{} + v := &SAMLIdPServiceProviderDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DatabaseUserDeactivate{v} + m.Event = &OneOf_SAMLIdPServiceProviderDelete{v} iNdEx = postIndex - case 157: + case 119: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessPathChanged", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SAMLIdPServiceProviderDeleteAll", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81840,15 +81148,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AccessPathChanged{} + v := &SAMLIdPServiceProviderDeleteAll{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AccessPathChanged{v} + m.Event = &OneOf_SAMLIdPServiceProviderDeleteAll{v} iNdEx = postIndex - case 158: + case 120: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SpannerRPC", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field OpenSearchRequest", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81875,15 +81183,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SpannerRPC{} + v := &OpenSearchRequest{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SpannerRPC{v} + m.Event = &OneOf_OpenSearchRequest{v} iNdEx = postIndex - case 159: + case 121: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSessionCommandResult", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DeviceEvent2", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81910,15 +81218,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DatabaseSessionCommandResult{} + v := &DeviceEvent2{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_DatabaseSessionCommandResult{v} + m.Event = &OneOf_DeviceEvent2{v} iNdEx = postIndex - case 160: + case 122: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DiscoveryConfigCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field OktaResourcesUpdate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -81945,155 +81253,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &DiscoveryConfigCreate{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_DiscoveryConfigCreate{v} - iNdEx = postIndex - case 161: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DiscoveryConfigUpdate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &DiscoveryConfigUpdate{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_DiscoveryConfigUpdate{v} - iNdEx = postIndex - case 162: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DiscoveryConfigDelete", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &DiscoveryConfigDelete{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_DiscoveryConfigDelete{v} - iNdEx = postIndex - case 163: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DiscoveryConfigDeleteAll", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &DiscoveryConfigDeleteAll{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.Event = &OneOf_DiscoveryConfigDeleteAll{v} - iNdEx = postIndex - case 164: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessGraphSettingsUpdate", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - v := &AccessGraphSettingsUpdate{} + v := &OktaResourcesUpdate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AccessGraphSettingsUpdate{v} + m.Event = &OneOf_OktaResourcesUpdate{v} iNdEx = postIndex - case 165: + case 123: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IntegrationCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field OktaSyncFailure", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82120,15 +81288,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &IntegrationCreate{} + v := &OktaSyncFailure{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_IntegrationCreate{v} + m.Event = &OneOf_OktaSyncFailure{v} iNdEx = postIndex - case 166: + case 124: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IntegrationUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field OktaAssignmentResult", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82155,15 +81323,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &IntegrationUpdate{} + v := &OktaAssignmentResult{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_IntegrationUpdate{v} + m.Event = &OneOf_OktaAssignmentResult{v} iNdEx = postIndex - case 167: + case 125: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IntegrationDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ProvisionTokenCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82190,15 +81358,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &IntegrationDelete{} + v := &ProvisionTokenCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_IntegrationDelete{v} + m.Event = &OneOf_ProvisionTokenCreate{v} iNdEx = postIndex - case 168: + case 126: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SPIFFEFederationCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccessListCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82225,15 +81393,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SPIFFEFederationCreate{} + v := &AccessListCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SPIFFEFederationCreate{v} + m.Event = &OneOf_AccessListCreate{v} iNdEx = postIndex - case 169: + case 127: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SPIFFEFederationDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccessListUpdate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82260,15 +81428,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &SPIFFEFederationDelete{} + v := &AccessListUpdate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_SPIFFEFederationDelete{v} + m.Event = &OneOf_AccessListUpdate{v} iNdEx = postIndex - case 170: + case 128: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PluginCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccessListDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82295,15 +81463,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &PluginCreate{} + v := &AccessListDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_PluginCreate{v} + m.Event = &OneOf_AccessListDelete{v} iNdEx = postIndex - case 171: + case 129: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PluginUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccessListReview", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82330,15 +81498,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &PluginUpdate{} + v := &AccessListReview{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_PluginUpdate{v} + m.Event = &OneOf_AccessListReview{v} iNdEx = postIndex - case 172: + case 130: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PluginDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccessListMemberCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82365,15 +81533,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &PluginDelete{} + v := &AccessListMemberCreate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_PluginDelete{v} + m.Event = &OneOf_AccessListMemberCreate{v} iNdEx = postIndex - case 173: + case 131: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AutoUpdateConfigCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccessListMemberUpdate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82400,15 +81568,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AutoUpdateConfigCreate{} + v := &AccessListMemberUpdate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AutoUpdateConfigCreate{v} + m.Event = &OneOf_AccessListMemberUpdate{v} iNdEx = postIndex - case 174: + case 132: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AutoUpdateConfigUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccessListMemberDelete", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82435,15 +81603,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AutoUpdateConfigUpdate{} + v := &AccessListMemberDelete{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AutoUpdateConfigUpdate{v} + m.Event = &OneOf_AccessListMemberDelete{v} iNdEx = postIndex - case 175: + case 133: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AutoUpdateConfigDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccessListMemberDeleteAllForAccessList", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82470,15 +81638,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AutoUpdateConfigDelete{} + v := &AccessListMemberDeleteAllForAccessList{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AutoUpdateConfigDelete{v} + m.Event = &OneOf_AccessListMemberDeleteAllForAccessList{v} iNdEx = postIndex - case 176: + case 134: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AutoUpdateVersionCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AuditQueryRun", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82505,15 +81673,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AutoUpdateVersionCreate{} + v := &AuditQueryRun{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AutoUpdateVersionCreate{v} + m.Event = &OneOf_AuditQueryRun{v} iNdEx = postIndex - case 177: + case 135: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AutoUpdateVersionUpdate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SecurityReportRun", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82540,15 +81708,15 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AutoUpdateVersionUpdate{} + v := &SecurityReportRun{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AutoUpdateVersionUpdate{v} + m.Event = &OneOf_SecurityReportRun{v} iNdEx = postIndex - case 178: + case 136: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AutoUpdateVersionDelete", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field GithubConnectorUpdate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82575,15 +81743,1485 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AutoUpdateVersionDelete{} + v := &GithubConnectorUpdate{} if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.Event = &OneOf_AutoUpdateVersionDelete{v} + m.Event = &OneOf_GithubConnectorUpdate{v} iNdEx = postIndex - case 179: + case 137: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field StaticHostUserCreate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field OIDCConnectorUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &OIDCConnectorUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_OIDCConnectorUpdate{v} + iNdEx = postIndex + case 138: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SAMLConnectorUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &SAMLConnectorUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_SAMLConnectorUpdate{v} + iNdEx = postIndex + case 139: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &RoleUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_RoleUpdate{v} + iNdEx = postIndex + case 140: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &UserUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_UserUpdate{v} + iNdEx = postIndex + case 141: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExternalAuditStorageEnable", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &ExternalAuditStorageEnable{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_ExternalAuditStorageEnable{v} + iNdEx = postIndex + case 142: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExternalAuditStorageDisable", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &ExternalAuditStorageDisable{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_ExternalAuditStorageDisable{v} + iNdEx = postIndex + case 143: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BotCreate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &BotCreate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_BotCreate{v} + iNdEx = postIndex + case 144: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BotDelete", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &BotDelete{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_BotDelete{v} + iNdEx = postIndex + case 145: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BotUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &BotUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_BotUpdate{v} + iNdEx = postIndex + case 146: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CreateMFAAuthChallenge", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &CreateMFAAuthChallenge{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_CreateMFAAuthChallenge{v} + iNdEx = postIndex + case 147: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidateMFAAuthResponse", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &ValidateMFAAuthResponse{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_ValidateMFAAuthResponse{v} + iNdEx = postIndex + case 148: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OktaAccessListSync", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &OktaAccessListSync{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_OktaAccessListSync{v} + iNdEx = postIndex + case 149: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabasePermissionUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &DatabasePermissionUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_DatabasePermissionUpdate{v} + iNdEx = postIndex + case 150: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SPIFFESVIDIssued", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &SPIFFESVIDIssued{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_SPIFFESVIDIssued{v} + iNdEx = postIndex + case 151: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OktaUserSync", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &OktaUserSync{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_OktaUserSync{v} + iNdEx = postIndex + case 152: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuthPreferenceUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &AuthPreferenceUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_AuthPreferenceUpdate{v} + iNdEx = postIndex + case 153: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SessionRecordingConfigUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &SessionRecordingConfigUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_SessionRecordingConfigUpdate{v} + iNdEx = postIndex + case 154: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClusterNetworkingConfigUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &ClusterNetworkingConfigUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_ClusterNetworkingConfigUpdate{v} + iNdEx = postIndex + case 155: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseUserCreate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &DatabaseUserCreate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_DatabaseUserCreate{v} + iNdEx = postIndex + case 156: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseUserDeactivate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &DatabaseUserDeactivate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_DatabaseUserDeactivate{v} + iNdEx = postIndex + case 157: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AccessPathChanged", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &AccessPathChanged{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_AccessPathChanged{v} + iNdEx = postIndex + case 158: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SpannerRPC", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &SpannerRPC{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_SpannerRPC{v} + iNdEx = postIndex + case 159: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSessionCommandResult", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &DatabaseSessionCommandResult{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_DatabaseSessionCommandResult{v} + iNdEx = postIndex + case 160: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DiscoveryConfigCreate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &DiscoveryConfigCreate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_DiscoveryConfigCreate{v} + iNdEx = postIndex + case 161: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DiscoveryConfigUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &DiscoveryConfigUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_DiscoveryConfigUpdate{v} + iNdEx = postIndex + case 162: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DiscoveryConfigDelete", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &DiscoveryConfigDelete{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_DiscoveryConfigDelete{v} + iNdEx = postIndex + case 163: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DiscoveryConfigDeleteAll", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &DiscoveryConfigDeleteAll{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_DiscoveryConfigDeleteAll{v} + iNdEx = postIndex + case 164: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AccessGraphSettingsUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &AccessGraphSettingsUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_AccessGraphSettingsUpdate{v} + iNdEx = postIndex + case 165: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IntegrationCreate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &IntegrationCreate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_IntegrationCreate{v} + iNdEx = postIndex + case 166: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IntegrationUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &IntegrationUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_IntegrationUpdate{v} + iNdEx = postIndex + case 167: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IntegrationDelete", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &IntegrationDelete{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_IntegrationDelete{v} + iNdEx = postIndex + case 168: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SPIFFEFederationCreate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &SPIFFEFederationCreate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_SPIFFEFederationCreate{v} + iNdEx = postIndex + case 169: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SPIFFEFederationDelete", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &SPIFFEFederationDelete{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_SPIFFEFederationDelete{v} + iNdEx = postIndex + case 170: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PluginCreate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &PluginCreate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_PluginCreate{v} + iNdEx = postIndex + case 171: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PluginUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &PluginUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_PluginUpdate{v} + iNdEx = postIndex + case 172: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PluginDelete", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &PluginDelete{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_PluginDelete{v} + iNdEx = postIndex + case 173: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoUpdateConfigCreate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &AutoUpdateConfigCreate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_AutoUpdateConfigCreate{v} + iNdEx = postIndex + case 174: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoUpdateConfigUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &AutoUpdateConfigUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_AutoUpdateConfigUpdate{v} + iNdEx = postIndex + case 175: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoUpdateConfigDelete", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &AutoUpdateConfigDelete{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_AutoUpdateConfigDelete{v} + iNdEx = postIndex + case 176: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoUpdateVersionCreate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &AutoUpdateVersionCreate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_AutoUpdateVersionCreate{v} + iNdEx = postIndex + case 177: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoUpdateVersionUpdate", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &AutoUpdateVersionUpdate{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_AutoUpdateVersionUpdate{v} + iNdEx = postIndex + case 178: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoUpdateVersionDelete", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &AutoUpdateVersionDelete{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_AutoUpdateVersionDelete{v} + iNdEx = postIndex + case 179: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StaticHostUserCreate", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -82686,6 +83324,41 @@ func (m *OneOf) Unmarshal(dAtA []byte) error { } m.Event = &OneOf_StaticHostUserDelete{v} iNdEx = postIndex + case 182: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GitCommand", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &GitCommand{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Event = &OneOf_GitCommand{v} + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) @@ -97129,10 +97802,517 @@ func (m *OktaAccessListSync) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: OktaAccessListSync: wiretype end group for non-group") + return fmt.Errorf("proto: OktaAccessListSync: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: OktaAccessListSync: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumAppFilters", wireType) + } + m.NumAppFilters = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumAppFilters |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumGroupFilters", wireType) + } + m.NumGroupFilters = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumGroupFilters |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumApps", wireType) + } + m.NumApps = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumApps |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumGroups", wireType) + } + m.NumGroups = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumGroups |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumRoles", wireType) + } + m.NumRoles = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumRoles |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumAccessLists", wireType) + } + m.NumAccessLists = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumAccessLists |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumAccessListMembers", wireType) + } + m.NumAccessListMembers = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumAccessListMembers |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + 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 *OktaUserSync) 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 ErrIntOverflowEvents + } + 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: OktaUserSync: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: OktaUserSync: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OrgUrl", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + 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 ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OrgUrl = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + 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 ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AppId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumUsersCreated", wireType) + } + m.NumUsersCreated = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumUsersCreated |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumUsersDeleted", wireType) + } + m.NumUsersDeleted = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumUsersDeleted |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumUsersModified", wireType) + } + m.NumUsersModified = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumUsersModified |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NumUsersTotal", wireType) + } + m.NumUsersTotal = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.NumUsersTotal |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + 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 *SPIFFESVIDIssued) 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 ErrIntOverflowEvents + } + 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: SPIFFESVIDIssued: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: OktaAccessListSync: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SPIFFESVIDIssued: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -97170,7 +98350,7 @@ func (m *OktaAccessListSync) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -97197,15 +98377,15 @@ func (m *OktaAccessListSync) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NumAppFilters", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) } - m.NumAppFilters = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97215,16 +98395,30 @@ func (m *OktaAccessListSync) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.NumAppFilters |= int32(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NumGroupFilters", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SPIFFEID", wireType) } - m.NumGroupFilters = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97234,16 +98428,29 @@ func (m *OktaAccessListSync) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.NumGroupFilters |= int32(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SPIFFEID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NumApps", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DNSSANs", wireType) } - m.NumApps = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97253,16 +98460,29 @@ func (m *OktaAccessListSync) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.NumApps |= int32(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DNSSANs = append(m.DNSSANs, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NumGroups", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IPSANs", wireType) } - m.NumGroups = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97272,16 +98492,29 @@ func (m *OktaAccessListSync) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.NumGroups |= int32(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IPSANs = append(m.IPSANs, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NumRoles", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SVIDType", wireType) } - m.NumRoles = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97291,16 +98524,29 @@ func (m *OktaAccessListSync) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.NumRoles |= int32(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SVIDType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 8: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NumAccessLists", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SerialNumber", wireType) } - m.NumAccessLists = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97310,16 +98556,29 @@ func (m *OktaAccessListSync) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.NumAccessLists |= int32(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SerialNumber = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 9: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NumAccessListMembers", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Hint", wireType) } - m.NumAccessListMembers = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97329,11 +98588,24 @@ func (m *OktaAccessListSync) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.NumAccessListMembers |= int32(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Hint = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) @@ -97356,7 +98628,7 @@ func (m *OktaAccessListSync) Unmarshal(dAtA []byte) error { } return nil } -func (m *OktaUserSync) Unmarshal(dAtA []byte) error { +func (m *AuthPreferenceUpdate) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -97379,10 +98651,10 @@ func (m *OktaUserSync) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: OktaUserSync: wiretype end group for non-group") + return fmt.Errorf("proto: AuthPreferenceUpdate: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: OktaUserSync: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AuthPreferenceUpdate: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -97453,9 +98725,9 @@ func (m *OktaUserSync) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OrgUrl", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97465,29 +98737,30 @@ func (m *OktaUserSync) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - m.OrgUrl = string(dAtA[iNdEx:postIndex]) + if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97497,86 +98770,30 @@ func (m *OktaUserSync) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - m.AppId = string(dAtA[iNdEx:postIndex]) + if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 5: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NumUsersCreated", wireType) - } - m.NumUsersCreated = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.NumUsersCreated |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NumUsersDeleted", wireType) - } - m.NumUsersDeleted = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.NumUsersDeleted |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NumUsersModified", wireType) - } - m.NumUsersModified = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.NumUsersModified |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 8: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field NumUsersTotal", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AdminActionsMFA", wireType) } - m.NumUsersTotal = 0 + m.AdminActionsMFA = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97586,7 +98803,7 @@ func (m *OktaUserSync) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.NumUsersTotal |= int32(b&0x7F) << shift + m.AdminActionsMFA |= AdminActionsMFAStatus(b&0x7F) << shift if b < 0x80 { break } @@ -97613,7 +98830,7 @@ func (m *OktaUserSync) Unmarshal(dAtA []byte) error { } return nil } -func (m *SPIFFESVIDIssued) Unmarshal(dAtA []byte) error { +func (m *ClusterNetworkingConfigUpdate) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -97636,10 +98853,10 @@ func (m *SPIFFESVIDIssued) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SPIFFESVIDIssued: wiretype end group for non-group") + return fmt.Errorf("proto: ClusterNetworkingConfigUpdate: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SPIFFESVIDIssued: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ClusterNetworkingConfigUpdate: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -97677,40 +98894,7 @@ func (m *SPIFFESVIDIssued) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -97737,15 +98921,15 @@ func (m *SPIFFESVIDIssued) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SPIFFEID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97755,29 +98939,30 @@ func (m *SPIFFESVIDIssued) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - m.SPIFFEID = string(dAtA[iNdEx:postIndex]) + if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 5: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DNSSANs", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97787,29 +98972,81 @@ func (m *SPIFFESVIDIssued) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - m.DNSSANs = append(m.DNSSANs, string(dAtA[iNdEx:postIndex])) + if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 6: + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + 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 *SessionRecordingConfigUpdate) 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 ErrIntOverflowEvents + } + 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: SessionRecordingConfigUpdate: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SessionRecordingConfigUpdate: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IPSANs", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97819,29 +99056,30 @@ func (m *SPIFFESVIDIssued) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - m.IPSANs = append(m.IPSANs, string(dAtA[iNdEx:postIndex])) + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 7: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SVIDType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97851,29 +99089,30 @@ func (m *SPIFFESVIDIssued) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - m.SVIDType = string(dAtA[iNdEx:postIndex]) + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 8: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SerialNumber", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97883,29 +99122,30 @@ func (m *SPIFFESVIDIssued) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - m.SerialNumber = string(dAtA[iNdEx:postIndex]) + if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex - case 9: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Hint", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -97915,23 +99155,24 @@ func (m *SPIFFESVIDIssued) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - m.Hint = string(dAtA[iNdEx:postIndex]) + if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -97955,7 +99196,7 @@ func (m *SPIFFESVIDIssued) Unmarshal(dAtA []byte) error { } return nil } -func (m *AuthPreferenceUpdate) Unmarshal(dAtA []byte) error { +func (m *AccessPathChanged) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -97978,10 +99219,10 @@ func (m *AuthPreferenceUpdate) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AuthPreferenceUpdate: wiretype end group for non-group") + return fmt.Errorf("proto: AccessPathChanged: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AuthPreferenceUpdate: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AccessPathChanged: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -98019,9 +99260,9 @@ func (m *AuthPreferenceUpdate) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ChangeID", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -98031,30 +99272,29 @@ func (m *AuthPreferenceUpdate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.ChangeID = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AffectedResourceName", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -98064,30 +99304,29 @@ func (m *AuthPreferenceUpdate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.AffectedResourceName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AffectedResourceSource", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -98097,30 +99336,29 @@ func (m *AuthPreferenceUpdate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.AffectedResourceSource = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AdminActionsMFA", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AffectedResourceType", wireType) } - m.AdminActionsMFA = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -98130,11 +99368,24 @@ func (m *AuthPreferenceUpdate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AdminActionsMFA |= AdminActionsMFAStatus(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AffectedResourceType = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipEvents(dAtA[iNdEx:]) @@ -98157,7 +99408,7 @@ func (m *AuthPreferenceUpdate) Unmarshal(dAtA []byte) error { } return nil } -func (m *ClusterNetworkingConfigUpdate) Unmarshal(dAtA []byte) error { +func (m *SpannerRPC) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -98180,10 +99431,10 @@ func (m *ClusterNetworkingConfigUpdate) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ClusterNetworkingConfigUpdate: wiretype end group for non-group") + return fmt.Errorf("proto: SpannerRPC: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ClusterNetworkingConfigUpdate: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SpannerRPC: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -98221,7 +99472,7 @@ func (m *ClusterNetworkingConfigUpdate) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -98248,13 +99499,13 @@ func (m *ClusterNetworkingConfigUpdate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -98281,13 +99532,13 @@ func (m *ClusterNetworkingConfigUpdate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.SessionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DatabaseMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -98314,64 +99565,13 @@ func (m *ClusterNetworkingConfigUpdate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.DatabaseMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipEvents(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthEvents - } - 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 *SessionRecordingConfigUpdate) 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 ErrIntOverflowEvents - } - 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: SessionRecordingConfigUpdate: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: SessionRecordingConfigUpdate: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -98398,15 +99598,15 @@ func (m *SessionRecordingConfigUpdate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Procedure", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -98416,28 +99616,27 @@ func (m *SessionRecordingConfigUpdate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Procedure = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Args", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -98464,40 +99663,10 @@ func (m *SessionRecordingConfigUpdate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF + if m.Args == nil { + m.Args = &Struct{} } - if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Args.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -98523,7 +99692,7 @@ func (m *SessionRecordingConfigUpdate) Unmarshal(dAtA []byte) error { } return nil } -func (m *AccessPathChanged) Unmarshal(dAtA []byte) error { +func (m *AccessGraphSettingsUpdate) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -98546,10 +99715,10 @@ func (m *AccessPathChanged) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AccessPathChanged: wiretype end group for non-group") + return fmt.Errorf("proto: AccessGraphSettingsUpdate: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AccessPathChanged: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AccessGraphSettingsUpdate: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -98587,9 +99756,9 @@ func (m *AccessPathChanged) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ChangeID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -98599,29 +99768,30 @@ func (m *AccessPathChanged) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - m.ChangeID = string(dAtA[iNdEx:postIndex]) + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AffectedResourceName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -98631,29 +99801,30 @@ func (m *AccessPathChanged) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - m.AffectedResourceName = string(dAtA[iNdEx:postIndex]) + if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AffectedResourceSource", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -98663,55 +99834,24 @@ func (m *AccessPathChanged) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - m.AffectedResourceSource = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AffectedResourceType", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - 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 ErrInvalidLengthEvents - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF + if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.AffectedResourceType = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -98735,7 +99875,7 @@ func (m *AccessPathChanged) Unmarshal(dAtA []byte) error { } return nil } -func (m *SpannerRPC) Unmarshal(dAtA []byte) error { +func (m *SPIFFEFederationCreate) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -98758,10 +99898,10 @@ func (m *SpannerRPC) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SpannerRPC: wiretype end group for non-group") + return fmt.Errorf("proto: SPIFFEFederationCreate: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SpannerRPC: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SPIFFEFederationCreate: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -98799,7 +99939,7 @@ func (m *SpannerRPC) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ResourceMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -98826,13 +99966,13 @@ func (m *SpannerRPC) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ResourceMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -98859,111 +99999,13 @@ func (m *SpannerRPC) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.SessionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DatabaseMetadata", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.DatabaseMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Procedure", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - 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 ErrInvalidLengthEvents - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Procedure = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Args", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -98990,10 +100032,7 @@ func (m *SpannerRPC) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Args == nil { - m.Args = &Struct{} - } - if err := m.Args.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -99019,7 +100058,7 @@ func (m *SpannerRPC) Unmarshal(dAtA []byte) error { } return nil } -func (m *AccessGraphSettingsUpdate) Unmarshal(dAtA []byte) error { +func (m *SPIFFEFederationDelete) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -99042,10 +100081,10 @@ func (m *AccessGraphSettingsUpdate) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AccessGraphSettingsUpdate: wiretype end group for non-group") + return fmt.Errorf("proto: SPIFFEFederationDelete: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AccessGraphSettingsUpdate: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SPIFFEFederationDelete: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -99083,7 +100122,7 @@ func (m *AccessGraphSettingsUpdate) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ResourceMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -99110,7 +100149,7 @@ func (m *AccessGraphSettingsUpdate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ResourceMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -99202,7 +100241,7 @@ func (m *AccessGraphSettingsUpdate) Unmarshal(dAtA []byte) error { } return nil } -func (m *SPIFFEFederationCreate) Unmarshal(dAtA []byte) error { +func (m *AutoUpdateConfigCreate) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -99225,10 +100264,10 @@ func (m *SPIFFEFederationCreate) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SPIFFEFederationCreate: wiretype end group for non-group") + return fmt.Errorf("proto: AutoUpdateConfigCreate: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SPIFFEFederationCreate: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AutoUpdateConfigCreate: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -99385,7 +100424,7 @@ func (m *SPIFFEFederationCreate) Unmarshal(dAtA []byte) error { } return nil } -func (m *SPIFFEFederationDelete) Unmarshal(dAtA []byte) error { +func (m *AutoUpdateConfigUpdate) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -99408,10 +100447,10 @@ func (m *SPIFFEFederationDelete) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SPIFFEFederationDelete: wiretype end group for non-group") + return fmt.Errorf("proto: AutoUpdateConfigUpdate: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SPIFFEFederationDelete: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AutoUpdateConfigUpdate: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -99449,7 +100488,7 @@ func (m *SPIFFEFederationDelete) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResourceMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -99476,7 +100515,7 @@ func (m *SPIFFEFederationDelete) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ResourceMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -99568,7 +100607,7 @@ func (m *SPIFFEFederationDelete) Unmarshal(dAtA []byte) error { } return nil } -func (m *AutoUpdateConfigCreate) Unmarshal(dAtA []byte) error { +func (m *AutoUpdateConfigDelete) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -99591,10 +100630,10 @@ func (m *AutoUpdateConfigCreate) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AutoUpdateConfigCreate: wiretype end group for non-group") + return fmt.Errorf("proto: AutoUpdateConfigDelete: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AutoUpdateConfigCreate: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AutoUpdateConfigDelete: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -99751,7 +100790,7 @@ func (m *AutoUpdateConfigCreate) Unmarshal(dAtA []byte) error { } return nil } -func (m *AutoUpdateConfigUpdate) Unmarshal(dAtA []byte) error { +func (m *AutoUpdateVersionCreate) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -99774,10 +100813,10 @@ func (m *AutoUpdateConfigUpdate) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AutoUpdateConfigUpdate: wiretype end group for non-group") + return fmt.Errorf("proto: AutoUpdateVersionCreate: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AutoUpdateConfigUpdate: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AutoUpdateVersionCreate: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -99815,7 +100854,7 @@ func (m *AutoUpdateConfigUpdate) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ResourceMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -99842,7 +100881,7 @@ func (m *AutoUpdateConfigUpdate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ResourceMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -99934,7 +100973,7 @@ func (m *AutoUpdateConfigUpdate) Unmarshal(dAtA []byte) error { } return nil } -func (m *AutoUpdateConfigDelete) Unmarshal(dAtA []byte) error { +func (m *AutoUpdateVersionUpdate) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -99957,10 +100996,10 @@ func (m *AutoUpdateConfigDelete) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AutoUpdateConfigDelete: wiretype end group for non-group") + return fmt.Errorf("proto: AutoUpdateVersionUpdate: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AutoUpdateConfigDelete: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AutoUpdateVersionUpdate: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -99998,7 +101037,7 @@ func (m *AutoUpdateConfigDelete) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResourceMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -100025,7 +101064,7 @@ func (m *AutoUpdateConfigDelete) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ResourceMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -100117,7 +101156,7 @@ func (m *AutoUpdateConfigDelete) Unmarshal(dAtA []byte) error { } return nil } -func (m *AutoUpdateVersionCreate) Unmarshal(dAtA []byte) error { +func (m *AutoUpdateVersionDelete) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -100140,10 +101179,10 @@ func (m *AutoUpdateVersionCreate) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AutoUpdateVersionCreate: wiretype end group for non-group") + return fmt.Errorf("proto: AutoUpdateVersionDelete: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AutoUpdateVersionCreate: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AutoUpdateVersionDelete: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -100300,7 +101339,7 @@ func (m *AutoUpdateVersionCreate) Unmarshal(dAtA []byte) error { } return nil } -func (m *AutoUpdateVersionUpdate) Unmarshal(dAtA []byte) error { +func (m *StaticHostUserCreate) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -100323,10 +101362,10 @@ func (m *AutoUpdateVersionUpdate) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AutoUpdateVersionUpdate: wiretype end group for non-group") + return fmt.Errorf("proto: StaticHostUserCreate: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AutoUpdateVersionUpdate: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: StaticHostUserCreate: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -100396,6 +101435,39 @@ func (m *AutoUpdateVersionUpdate) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ResourceMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) } @@ -100428,7 +101500,7 @@ func (m *AutoUpdateVersionUpdate) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 4: + case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) } @@ -100483,7 +101555,7 @@ func (m *AutoUpdateVersionUpdate) Unmarshal(dAtA []byte) error { } return nil } -func (m *AutoUpdateVersionDelete) Unmarshal(dAtA []byte) error { +func (m *StaticHostUserUpdate) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -100506,10 +101578,10 @@ func (m *AutoUpdateVersionDelete) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AutoUpdateVersionDelete: wiretype end group for non-group") + return fmt.Errorf("proto: StaticHostUserUpdate: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AutoUpdateVersionDelete: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: StaticHostUserUpdate: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -100546,6 +101618,39 @@ func (m *AutoUpdateVersionDelete) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ResourceMetadata", wireType) } @@ -100578,7 +101683,7 @@ func (m *AutoUpdateVersionDelete) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 3: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) } @@ -100611,7 +101716,7 @@ func (m *AutoUpdateVersionDelete) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 4: + case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) } @@ -100666,7 +101771,7 @@ func (m *AutoUpdateVersionDelete) Unmarshal(dAtA []byte) error { } return nil } -func (m *StaticHostUserCreate) Unmarshal(dAtA []byte) error { +func (m *StaticHostUserDelete) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -100689,10 +101794,10 @@ func (m *StaticHostUserCreate) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: StaticHostUserCreate: wiretype end group for non-group") + return fmt.Errorf("proto: StaticHostUserDelete: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: StaticHostUserCreate: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: StaticHostUserDelete: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -100724,13 +101829,196 @@ func (m *StaticHostUserCreate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ResourceMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + 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 *GitCommand) 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 ErrIntOverflowEvents + } + 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: GitCommand: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GitCommand: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -100757,13 +102045,13 @@ func (m *StaticHostUserCreate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResourceMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -100790,13 +102078,13 @@ func (m *StaticHostUserCreate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ResourceMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 4: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -100823,13 +102111,13 @@ func (m *StaticHostUserCreate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SessionMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -100856,64 +102144,13 @@ func (m *StaticHostUserCreate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.SessionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipEvents(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthEvents - } - 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 *StaticHostUserUpdate) 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 ErrIntOverflowEvents - } - 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: StaticHostUserUpdate: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: StaticHostUserUpdate: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ServerMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -100940,13 +102177,13 @@ func (m *StaticHostUserUpdate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.ServerMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CommandMetadata", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -100973,15 +102210,15 @@ func (m *StaticHostUserUpdate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.CommandMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 8: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResourceMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Service", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -100991,30 +102228,29 @@ func (m *StaticHostUserUpdate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ResourceMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Service = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 4: + case 9: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -101024,28 +102260,27 @@ func (m *StaticHostUserUpdate) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Path = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 5: + case 10: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Actions", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -101072,7 +102307,8 @@ func (m *StaticHostUserUpdate) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.Actions = append(m.Actions, &GitCommandAction{}) + if err := m.Actions[len(m.Actions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -101098,7 +102334,7 @@ func (m *StaticHostUserUpdate) Unmarshal(dAtA []byte) error { } return nil } -func (m *StaticHostUserDelete) Unmarshal(dAtA []byte) error { +func (m *GitCommandAction) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -101121,17 +102357,17 @@ func (m *StaticHostUserDelete) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: StaticHostUserDelete: wiretype end group for non-group") + return fmt.Errorf("proto: GitCommandAction: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: StaticHostUserDelete: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GitCommandAction: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -101141,30 +102377,29 @@ func (m *StaticHostUserDelete) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Action = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Reference", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -101174,30 +102409,29 @@ func (m *StaticHostUserDelete) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Reference = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResourceMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Old", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -101207,63 +102441,29 @@ func (m *StaticHostUserDelete) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ResourceMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Old = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field UserMetadata", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field New", wireType) } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowEvents - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthEvents - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthEvents - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.UserMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ConnectionMetadata", wireType) - } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowEvents @@ -101273,24 +102473,23 @@ func (m *StaticHostUserDelete) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthEvents } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthEvents } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ConnectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.New = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/api/types/events/oneof.go b/api/types/events/oneof.go index c3ac92c474134..9e55387221988 100644 --- a/api/types/events/oneof.go +++ b/api/types/events/oneof.go @@ -737,6 +737,10 @@ func ToOneOf(in AuditEvent) (*OneOf, error) { out.Event = &OneOf_StaticHostUserDelete{ StaticHostUserDelete: e, } + case *GitCommand: + out.Event = &OneOf_GitCommand{ + GitCommand: e, + } default: slog.ErrorContext(context.Background(), "Attempted to convert dynamic event of unknown type into protobuf event.", "event_type", in.GetType()) unknown := &Unknown{} diff --git a/api/types/github.go b/api/types/github.go index 7c63ceb6e27e7..1c70f8c6fbd8a 100644 --- a/api/types/github.go +++ b/api/types/github.go @@ -343,10 +343,12 @@ func (r *GithubAuthRequest) Check() error { return trace.BadParameter("missing ConnectorID") case r.StateToken == "": return trace.BadParameter("missing StateToken") + case r.AuthenticatedUser != "" && r.ConnectorSpec == nil: + return trace.BadParameter("ConnectorSpec cannot be nil for AuthenticatedUser") // we could collapse these two checks into one, but the error message would become ambiguous. case r.SSOTestFlow && r.ConnectorSpec == nil: return trace.BadParameter("ConnectorSpec cannot be nil when SSOTestFlow is true") - case !r.SSOTestFlow && r.ConnectorSpec != nil: + case (!r.SSOTestFlow && r.AuthenticatedUser == "") && r.ConnectorSpec != nil: return trace.BadParameter("ConnectorSpec must be nil when SSOTestFlow is false") case len(r.PublicKey) != 0 && len(r.SshPublicKey) != 0: return trace.BadParameter("illegal to set both PublicKey and SshPublicKey") diff --git a/api/types/integration.go b/api/types/integration.go index 189ecd959438e..a2606b3f23100 100644 --- a/api/types/integration.go +++ b/api/types/integration.go @@ -32,6 +32,9 @@ const ( // IntegrationSubKindAzureOIDC is an integration with Azure that uses OpenID Connect as an Identity Provider. IntegrationSubKindAzureOIDC = "azure-oidc" + + // IntegrationSubKindGitHub is an integration with GitHub. + IntegrationSubKindGitHub = "github" ) // Integration specifies is a connection configuration between Teleport and a 3rd party system. @@ -53,6 +56,14 @@ type Integration interface { // GetAzureOIDCIntegrationSpec returns the `azure-oidc` spec fields. GetAzureOIDCIntegrationSpec() *AzureOIDCIntegrationSpecV1 + + // GetGitHubIntegrationSpec returns the GitHub spec. + GetGitHubIntegrationSpec() *GitHubIntegrationSpecV1 + // SetGitHubIntegrationSpec returns the GitHub spec. + SetGitHubIntegrationSpec(*GitHubIntegrationSpecV1) + + // TODO + WithoutSecrets() Integration } var _ ResourceWithLabels = (*IntegrationV1)(nil) @@ -99,6 +110,27 @@ func NewIntegrationAzureOIDC(md Metadata, spec *AzureOIDCIntegrationSpecV1) (*In return ig, nil } +// NewIntegrationGitHub returns a new `github` subkind Integration +func NewIntegrationGitHub(md Metadata, spec *GitHubIntegrationSpecV1) (*IntegrationV1, error) { + ig := &IntegrationV1{ + ResourceHeader: ResourceHeader{ + Metadata: md, + Kind: KindIntegration, + Version: V1, + SubKind: IntegrationSubKindGitHub, + }, + Spec: IntegrationSpecV1{ + SubKindSpec: &IntegrationSpecV1_GitHub{ + GitHub: spec, + }, + }, + } + if err := ig.CheckAndSetDefaults(); err != nil { + return nil, trace.Wrap(err) + } + return ig, nil +} + // String returns the integration string representation. func (ig *IntegrationV1) String() string { return fmt.Sprintf("IntegrationV1(Name=%v, SubKind=%s, Labels=%v)", @@ -160,6 +192,11 @@ func (s *IntegrationSpecV1) CheckAndSetDefaults() error { if err != nil { return trace.Wrap(err) } + case *IntegrationSpecV1_GitHub: + if err := integrationSubKind.CheckAndSetDefaults(); err != nil { + return trace.Wrap(err) + } + return nil default: return trace.BadParameter("unknown integration subkind: %T", integrationSubKind) } @@ -207,6 +244,16 @@ func (s *IntegrationSpecV1_AzureOIDC) Validate() error { return nil } +func (s *IntegrationSpecV1_GitHub) CheckAndSetDefaults() error { + if s == nil || s.GitHub == nil { + return trace.BadParameter("github is required for %q subkind", IntegrationSubKindGitHub) + } + if s.GitHub.Organization == "" { + return trace.BadParameter("organization must be set") + } + return nil +} + // GetAWSOIDCIntegrationSpec returns the specific spec fields for `aws-oidc` subkind integrations. func (ig *IntegrationV1) GetAWSOIDCIntegrationSpec() *AWSOIDCIntegrationSpecV1 { return ig.Spec.GetAWSOIDC() @@ -250,6 +297,15 @@ func (ig *IntegrationV1) GetAzureOIDCIntegrationSpec() *AzureOIDCIntegrationSpec return ig.Spec.GetAzureOIDC() } +func (ig *IntegrationV1) GetGitHubIntegrationSpec() *GitHubIntegrationSpecV1 { + return ig.Spec.GetGitHub() +} +func (ig *IntegrationV1) SetGitHubIntegrationSpec(spec *GitHubIntegrationSpecV1) { + ig.Spec.SubKindSpec = &IntegrationSpecV1_GitHub{ + GitHub: spec, + } +} + // Integrations is a list of Integration resources. type Integrations []Integration @@ -301,6 +357,7 @@ func (ig *IntegrationV1) UnmarshalJSON(data []byte) error { Spec struct { AWSOIDC json.RawMessage `json:"aws_oidc"` AzureOIDC json.RawMessage `json:"azure_oidc"` + GitHub json.RawMessage `json:"github"` } `json:"spec"` }{} @@ -334,6 +391,17 @@ func (ig *IntegrationV1) UnmarshalJSON(data []byte) error { integration.Spec.SubKindSpec = subkindSpec + case IntegrationSubKindGitHub: + subkindSpec := &IntegrationSpecV1_GitHub{ + GitHub: &GitHubIntegrationSpecV1{}, + } + + if err := json.Unmarshal(d.Spec.GitHub, subkindSpec.GitHub); err != nil { + return trace.Wrap(err) + } + + integration.Spec.SubKindSpec = subkindSpec + default: return trace.BadParameter("invalid subkind %q", integration.ResourceHeader.SubKind) } @@ -356,6 +424,7 @@ func (ig *IntegrationV1) MarshalJSON() ([]byte, error) { Spec struct { AWSOIDC AWSOIDCIntegrationSpecV1 `json:"aws_oidc,omitempty"` AzureOIDC AzureOIDCIntegrationSpecV1 `json:"azure_oidc,omitempty"` + GitHub GitHubIntegrationSpecV1 `json:"github,omitempty"` } `json:"spec"` }{} @@ -374,6 +443,11 @@ func (ig *IntegrationV1) MarshalJSON() ([]byte, error) { } d.Spec.AzureOIDC = *ig.GetAzureOIDCIntegrationSpec() + case IntegrationSubKindGitHub: + if ig.GetGitHubIntegrationSpec() == nil { + return nil, trace.BadParameter("missing subkind data for %q subkind", ig.SubKind) + } + d.Spec.GitHub = *ig.GetGitHubIntegrationSpec() default: return nil, trace.BadParameter("invalid subkind %q", ig.SubKind) } @@ -381,3 +455,53 @@ func (ig *IntegrationV1) MarshalJSON() ([]byte, error) { out, err := json.Marshal(d) return out, trace.Wrap(err) } + +func (ig *IntegrationV1) Copy() *IntegrationV1 { + return utils.CloneProtoMsg(ig) +} + +func (ig *IntegrationV1) WithoutSecrets() Integration { + switch ig.SubKind { + case IntegrationSubKindGitHub: + spec := ig.GetGitHubIntegrationSpec() + if spec == nil || spec.Proxy == nil { + return ig + } + + clone := ig.Copy() + spec = clone.GetGitHubIntegrationSpec() + for i := range spec.Proxy.CertAuthorities { + spec.Proxy.CertAuthorities[i].PrivateKey = nil + } + if spec.Proxy.Connector != nil { + spec.Proxy.Connector.ClientSecret = "" + } + clone.SetGitHubIntegrationSpec(spec) + return clone + } + return ig +} + +func (s *GitHubIntegrationSpecV1) MakeConnectorSpec() (*GithubConnectorSpecV3, error) { + if s.Proxy == nil { + return nil, trace.BadParameter("missing GitHub proxy settings") + } + if s.Proxy.Connector == nil { + return nil, trace.BadParameter("missing GitHub connector settings") + } + + return &GithubConnectorSpecV3{ + ClientID: s.Proxy.Connector.ClientID, + ClientSecret: s.Proxy.Connector.ClientSecret, + RedirectURL: s.Proxy.Connector.RedirectURL, + // TODO(greedy52) TeamsToRoles is not used for this flow. Consider use + // a different flag in the spec to avoid this fake mapping. + TeamsToRoles: []TeamRolesMapping{{ + Organization: s.Organization, + Team: "do-not-use", + }}, + // Only public github.com is supported for now. + EndpointURL: GithubURL, + APIEndpointURL: GithubAPIURL, + }, nil +} diff --git a/api/types/role.go b/api/types/role.go index 86eb22516aa2e..335d03a9faf4a 100644 --- a/api/types/role.go +++ b/api/types/role.go @@ -273,6 +273,11 @@ type Role interface { GetSPIFFEConditions(rct RoleConditionType) []*SPIFFERoleCondition // SetSPIFFEConditions sets the allow or deny SPIFFERoleCondition. SetSPIFFEConditions(rct RoleConditionType, cond []*SPIFFERoleCondition) + + // GetGitHubPermissions returns the allow or deny GitHub-related permissions. + GetGitHubPermissions(RoleConditionType) []GitHubPermission + // SetGitHubPermissions sets the allow or deny GitHub-related permissions. + SetGitHubPermissions(RoleConditionType, []GitHubPermission) } // NewRole constructs new standard V7 role. @@ -940,6 +945,20 @@ func (r *RoleV6) SetSPIFFEConditions(rct RoleConditionType, cond []*SPIFFERoleCo } } +func (r *RoleV6) GetGitHubPermissions(rct RoleConditionType) []GitHubPermission { + if rct == Allow { + return r.Spec.Allow.GithubPermissions + } + return r.Spec.Deny.GithubPermissions +} +func (r *RoleV6) SetGitHubPermissions(rct RoleConditionType, perms []GitHubPermission) { + if rct == Allow { + r.Spec.Allow.GithubPermissions = perms + } else { + r.Spec.Deny.GithubPermissions = perms + } +} + // GetPrivateKeyPolicy returns the private key policy enforced for this role. func (r *RoleV6) GetPrivateKeyPolicy() keys.PrivateKeyPolicy { switch r.Spec.Options.RequireMFAType { @@ -1857,10 +1876,24 @@ func (r *RoleV6) GetLabelMatchers(rct RoleConditionType, kind string) (LabelMatc return LabelMatchers{cond.WindowsDesktopLabels, cond.WindowsDesktopLabelsExpression}, nil case KindUserGroup: return LabelMatchers{cond.GroupLabels, cond.GroupLabelsExpression}, nil + case KindGitServer: + return r.makeGitServerLabelMatchers(cond), nil } return LabelMatchers{}, trace.BadParameter("can't get label matchers for resource kind %q", kind) } +func (r *RoleV6) makeGitServerLabelMatchers(cond *RoleConditions) LabelMatchers { + var gitHubOrgs []string + for _, perm := range cond.GithubPermissions { + gitHubOrgs = append(gitHubOrgs, perm.Organizations...) + } + return LabelMatchers{ + Labels: Labels{ + "teleport.hidden/github_organization": gitHubOrgs, + }, + } +} + // SetLabelMatchers sets the LabelMatchers that match labels of resources of // type [kind] this role is allowed or denied access to. func (r *RoleV6) SetLabelMatchers(rct RoleConditionType, kind string, labelMatchers LabelMatchers) error { diff --git a/api/types/server.go b/api/types/server.go index 47ec7c92ee1d0..d906398d9472d 100644 --- a/api/types/server.go +++ b/api/types/server.go @@ -17,7 +17,9 @@ limitations under the License. package types import ( + "context" "fmt" + "log/slog" "net" "sort" "strings" @@ -101,6 +103,8 @@ type Server interface { GetAWSInstanceID() string // GetAWSAccountID returns the AWS Account ID if this node comes from an EC2 instance. GetAWSAccountID() string + // GetGitHub returns the GitHub server spec. + GetGitHub() *GitHubServerMetadata } // NewServer creates an instance of Server. @@ -158,6 +162,18 @@ func NewEICENode(spec ServerSpecV2, labels map[string]string) (Server, error) { return server, nil } +func NewGitServer(subKind string, spec ServerSpecV2) (Server, error) { + server := &ServerV2{ + Kind: KindGitServer, + SubKind: subKind, + Spec: spec, + } + if err := server.CheckAndSetDefaults(); err != nil { + return nil, trace.Wrap(err) + } + return server, nil +} + // GetVersion returns resource version func (s *ServerV2) GetVersion() string { return s.Version @@ -429,6 +445,11 @@ func (s *ServerV2) GetAWSInstanceID() string { return awsInstanceID } +// GetGitHub returns the GitHub server spec. +func (s *ServerV2) GetGitHub() *GitHubServerMetadata { + return s.Spec.GitHub +} + // IsEICE returns whether the Node is an EICE instance. // Must be `openssh-ec2-ice` subkind and have the AccountID and InstanceID information (AWS Metadata or Labels). func (s *ServerV2) IsEICE() bool { @@ -492,6 +513,48 @@ func (s *ServerV2) openSSHEC2InstanceConnectEndpointNodeCheckAndSetDefaults() er return nil } +// MakeGitHubOrgServerDomain creates a special domain name used in server's +// host address to identify the GitHub organization. +func MakeGitHubOrgServerDomain(org string) string { + return fmt.Sprintf("%s.%s", org, GitHubServerDomain) +} + +// GetGitHubOrgFromNodeAddr parses the organization from the node address. +func GetGitHubOrgFromNodeAddr(addr string) (string, bool) { + if host, _, err := net.SplitHostPort(addr); err == nil { + addr = host + } + if strings.HasSuffix(addr, "."+GitHubServerDomain) { + return strings.TrimSuffix(addr, "."+GitHubServerDomain), true + } + return "", false +} + +func (s *ServerV2) githubCheckAndSetDefaults() error { + if s.Spec.GitHub == nil || s.Spec.GitHub.Organization == "" { + return trace.BadParameter("missing github organization") + } + if s.Spec.GitHub.Integration == "" { + return trace.BadParameter("missing github integration") + } + + hostname := MakeGitHubOrgServerDomain(s.Spec.GitHub.Organization) + switch s.Spec.Hostname { + case hostname: + case "": + s.Spec.Hostname = hostname + default: + slog.WarnContext(context.Background(), "invalid hostname for GitHub server. Hostname will be replaced with %q", hostname) + s.Spec.Hostname = hostname + } + + if s.Metadata.Labels == nil { + s.Metadata.Labels = make(map[string]string) + } + s.Metadata.Labels["teleport.hidden/github_organization"] = s.Spec.GitHub.Organization + return nil +} + // serverNameForEICE returns the deterministic Server's name for an EICE instance. // This name must comply with the expected format for EC2 Nodes as defined here: api/utils/aws.IsEC2NodeID // Returns an error if AccountID or InstanceID is not present. @@ -529,6 +592,8 @@ func (s *ServerV2) CheckAndSetDefaults() error { // if the server is a registered OpenSSH node, allow the name to be // randomly generated s.Metadata.Name = uuid.NewString() + case SubKindGitHub: + s.Metadata.Name = uuid.NewString() } } @@ -536,28 +601,38 @@ func (s *ServerV2) CheckAndSetDefaults() error { return trace.Wrap(err) } - if s.Kind == "" { + switch s.Kind { + case "": return trace.BadParameter("server Kind is empty") - } - if s.Kind != KindNode && s.SubKind != "" { - return trace.BadParameter(`server SubKind must only be set when Kind is "node"`) - } + case KindNode: + switch s.SubKind { + case "", SubKindTeleportNode: + // allow but do nothing + case SubKindOpenSSHNode: + if err := s.openSSHNodeCheckAndSetDefaults(); err != nil { + return trace.Wrap(err) + } - switch s.SubKind { - case "", SubKindTeleportNode: - // allow but do nothing - case SubKindOpenSSHNode: - if err := s.openSSHNodeCheckAndSetDefaults(); err != nil { - return trace.Wrap(err) + case SubKindOpenSSHEICENode: + if err := s.openSSHEC2InstanceConnectEndpointNodeCheckAndSetDefaults(); err != nil { + return trace.Wrap(err) + } + default: + return trace.BadParameter("invalid SubKind %q for %q", s.SubKind, s.Kind) } - - case SubKindOpenSSHEICENode: - if err := s.openSSHEC2InstanceConnectEndpointNodeCheckAndSetDefaults(); err != nil { - return trace.Wrap(err) + case KindGitServer: + switch s.SubKind { + case SubKindGitHub: + if err := s.githubCheckAndSetDefaults(); err != nil { + return trace.Wrap(err) + } + default: + return trace.BadParameter("invalid SubKind %q for %q with spec", s.SubKind, s.Kind, s) } - default: - return trace.BadParameter("invalid SubKind %q", s.SubKind) + if s.SubKind != "" { + return trace.BadParameter(`server SubKind must only be set when Kind is "node" or "git_server"`) + } } for key := range s.Spec.CmdLabels { diff --git a/api/types/types.pb.go b/api/types/types.pb.go index 7a7aa2291da78..5b0526ff9bda3 100644 --- a/api/types/types.pb.go +++ b/api/types/types.pb.go @@ -917,7 +917,7 @@ func (x CertAuthoritySpecV2_SigningAlgType) String() string { } func (CertAuthoritySpecV2_SigningAlgType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{53, 0} + return fileDescriptor_9198ee693835762e, []int{54, 0} } // FIPSEndpointState represents an AWS FIPS endpoint state. @@ -950,7 +950,7 @@ func (x ClusterAuditConfigSpecV2_FIPSEndpointState) String() string { } func (ClusterAuditConfigSpecV2_FIPSEndpointState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{75, 0} + return fileDescriptor_9198ee693835762e, []int{76, 0} } // TraceType is an identification of the checkpoint. @@ -1020,7 +1020,7 @@ func (x ConnectionDiagnosticTrace_TraceType) String() string { } func (ConnectionDiagnosticTrace_TraceType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{245, 0} + return fileDescriptor_9198ee693835762e, []int{247, 0} } // StatusType describes whether this was a success or a failure. @@ -1049,7 +1049,7 @@ func (x ConnectionDiagnosticTrace_StatusType) String() string { } func (ConnectionDiagnosticTrace_StatusType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{245, 1} + return fileDescriptor_9198ee693835762e, []int{247, 1} } // OktaAssignmentStatus represents the status of an Okta assignment. @@ -1089,7 +1089,7 @@ func (x OktaAssignmentSpecV1_OktaAssignmentStatus) String() string { } func (OktaAssignmentSpecV1_OktaAssignmentStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{316, 0} + return fileDescriptor_9198ee693835762e, []int{318, 0} } // OktaAssignmentTargetType is the type of Okta object that an assignment is targeting. @@ -1121,7 +1121,7 @@ func (x OktaAssignmentTargetV1_OktaAssignmentTargetType) String() string { } func (OktaAssignmentTargetV1_OktaAssignmentTargetType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{317, 0} + return fileDescriptor_9198ee693835762e, []int{319, 0} } type KeepAlive struct { @@ -2909,10 +2909,13 @@ type ServerSpecV2 struct { PublicAddrs []string `protobuf:"bytes,13,rep,name=public_addrs,json=publicAddrs,proto3" json:"public_addrs,omitempty"` // CloudMetadata contains info about the cloud instance the server is running // on, if any. - CloudMetadata *CloudMetadata `protobuf:"bytes,14,opt,name=CloudMetadata,proto3" json:"cloud_metadata,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + CloudMetadata *CloudMetadata `protobuf:"bytes,14,opt,name=CloudMetadata,proto3" json:"cloud_metadata,omitempty"` + // GitHub contains info about GitHub proxies where each server represents a + // GitHub organization. + GitHub *GitHubServerMetadata `protobuf:"bytes,15,opt,name=git_hub,json=gitHub,proto3" json:"github,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ServerSpecV2) Reset() { *m = ServerSpecV2{} } @@ -3045,6 +3048,49 @@ func (m *CloudMetadata) XXX_DiscardUnknown() { var xxx_messageInfo_CloudMetadata proto.InternalMessageInfo +type GitHubServerMetadata struct { + // Organization specifies the name of the organization for the GitHub integration. + Organization string `protobuf:"bytes,1,opt,name=organization,proto3" json:"organization,omitempty"` + // Integration is the integration that is associated with this Server. + Integration string `protobuf:"bytes,2,opt,name=integration,proto3" json:"integration,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GitHubServerMetadata) Reset() { *m = GitHubServerMetadata{} } +func (m *GitHubServerMetadata) String() string { return proto.CompactTextString(m) } +func (*GitHubServerMetadata) ProtoMessage() {} +func (*GitHubServerMetadata) Descriptor() ([]byte, []int) { + return fileDescriptor_9198ee693835762e, []int{38} +} +func (m *GitHubServerMetadata) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GitHubServerMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GitHubServerMetadata.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 *GitHubServerMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_GitHubServerMetadata.Merge(m, src) +} +func (m *GitHubServerMetadata) XXX_Size() int { + return m.Size() +} +func (m *GitHubServerMetadata) XXX_DiscardUnknown() { + xxx_messageInfo_GitHubServerMetadata.DiscardUnknown(m) +} + +var xxx_messageInfo_GitHubServerMetadata proto.InternalMessageInfo + // AppServerV3 represents a single proxied web app. type AppServerV3 struct { // Kind is the app server resource kind. Always "app_server". @@ -3065,7 +3111,7 @@ type AppServerV3 struct { func (m *AppServerV3) Reset() { *m = AppServerV3{} } func (*AppServerV3) ProtoMessage() {} func (*AppServerV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{38} + return fileDescriptor_9198ee693835762e, []int{39} } func (m *AppServerV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3117,7 +3163,7 @@ func (m *AppServerSpecV3) Reset() { *m = AppServerSpecV3{} } func (m *AppServerSpecV3) String() string { return proto.CompactTextString(m) } func (*AppServerSpecV3) ProtoMessage() {} func (*AppServerSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{39} + return fileDescriptor_9198ee693835762e, []int{40} } func (m *AppServerSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3159,7 +3205,7 @@ func (m *AppV3List) Reset() { *m = AppV3List{} } func (m *AppV3List) String() string { return proto.CompactTextString(m) } func (*AppV3List) ProtoMessage() {} func (*AppV3List) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{40} + return fileDescriptor_9198ee693835762e, []int{41} } func (m *AppV3List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3209,7 +3255,7 @@ type AppV3 struct { func (m *AppV3) Reset() { *m = AppV3{} } func (*AppV3) ProtoMessage() {} func (*AppV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{41} + return fileDescriptor_9198ee693835762e, []int{42} } func (m *AppV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3261,7 +3307,7 @@ func (m *CORSPolicy) Reset() { *m = CORSPolicy{} } func (m *CORSPolicy) String() string { return proto.CompactTextString(m) } func (*CORSPolicy) ProtoMessage() {} func (*CORSPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{42} + return fileDescriptor_9198ee693835762e, []int{43} } func (m *CORSPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3326,7 +3372,7 @@ func (m *AppSpecV3) Reset() { *m = AppSpecV3{} } func (m *AppSpecV3) String() string { return proto.CompactTextString(m) } func (*AppSpecV3) ProtoMessage() {} func (*AppSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{43} + return fileDescriptor_9198ee693835762e, []int{44} } func (m *AppSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3378,7 +3424,7 @@ type AppServerOrSAMLIdPServiceProviderV1 struct { func (m *AppServerOrSAMLIdPServiceProviderV1) Reset() { *m = AppServerOrSAMLIdPServiceProviderV1{} } func (*AppServerOrSAMLIdPServiceProviderV1) ProtoMessage() {} func (*AppServerOrSAMLIdPServiceProviderV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{44} + return fileDescriptor_9198ee693835762e, []int{45} } func (m *AppServerOrSAMLIdPServiceProviderV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3473,7 +3519,7 @@ func (m *Rewrite) Reset() { *m = Rewrite{} } func (m *Rewrite) String() string { return proto.CompactTextString(m) } func (*Rewrite) ProtoMessage() {} func (*Rewrite) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{45} + return fileDescriptor_9198ee693835762e, []int{46} } func (m *Rewrite) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3517,7 +3563,7 @@ func (m *Header) Reset() { *m = Header{} } func (m *Header) String() string { return proto.CompactTextString(m) } func (*Header) ProtoMessage() {} func (*Header) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{46} + return fileDescriptor_9198ee693835762e, []int{47} } func (m *Header) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3564,7 +3610,7 @@ func (m *CommandLabelV2) Reset() { *m = CommandLabelV2{} } func (m *CommandLabelV2) String() string { return proto.CompactTextString(m) } func (*CommandLabelV2) ProtoMessage() {} func (*CommandLabelV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{47} + return fileDescriptor_9198ee693835762e, []int{48} } func (m *CommandLabelV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3606,7 +3652,7 @@ func (m *AppAWS) Reset() { *m = AppAWS{} } func (m *AppAWS) String() string { return proto.CompactTextString(m) } func (*AppAWS) ProtoMessage() {} func (*AppAWS) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{48} + return fileDescriptor_9198ee693835762e, []int{49} } func (m *AppAWS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3652,7 +3698,7 @@ func (m *SSHKeyPair) Reset() { *m = SSHKeyPair{} } func (m *SSHKeyPair) String() string { return proto.CompactTextString(m) } func (*SSHKeyPair) ProtoMessage() {} func (*SSHKeyPair) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{49} + return fileDescriptor_9198ee693835762e, []int{50} } func (m *SSHKeyPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3698,7 +3744,7 @@ func (m *TLSKeyPair) Reset() { *m = TLSKeyPair{} } func (m *TLSKeyPair) String() string { return proto.CompactTextString(m) } func (*TLSKeyPair) ProtoMessage() {} func (*TLSKeyPair) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{50} + return fileDescriptor_9198ee693835762e, []int{51} } func (m *TLSKeyPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3744,7 +3790,7 @@ func (m *JWTKeyPair) Reset() { *m = JWTKeyPair{} } func (m *JWTKeyPair) String() string { return proto.CompactTextString(m) } func (*JWTKeyPair) ProtoMessage() {} func (*JWTKeyPair) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{51} + return fileDescriptor_9198ee693835762e, []int{52} } func (m *JWTKeyPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3793,7 +3839,7 @@ type CertAuthorityV2 struct { func (m *CertAuthorityV2) Reset() { *m = CertAuthorityV2{} } func (*CertAuthorityV2) ProtoMessage() {} func (*CertAuthorityV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{52} + return fileDescriptor_9198ee693835762e, []int{53} } func (m *CertAuthorityV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3854,7 +3900,7 @@ func (m *CertAuthoritySpecV2) Reset() { *m = CertAuthoritySpecV2{} } func (m *CertAuthoritySpecV2) String() string { return proto.CompactTextString(m) } func (*CertAuthoritySpecV2) ProtoMessage() {} func (*CertAuthoritySpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{53} + return fileDescriptor_9198ee693835762e, []int{54} } func (m *CertAuthoritySpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3900,7 +3946,7 @@ func (m *CAKeySet) Reset() { *m = CAKeySet{} } func (m *CAKeySet) String() string { return proto.CompactTextString(m) } func (*CAKeySet) ProtoMessage() {} func (*CAKeySet) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{54} + return fileDescriptor_9198ee693835762e, []int{55} } func (m *CAKeySet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3945,7 +3991,7 @@ func (m *RoleMapping) Reset() { *m = RoleMapping{} } func (m *RoleMapping) String() string { return proto.CompactTextString(m) } func (*RoleMapping) ProtoMessage() {} func (*RoleMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{55} + return fileDescriptor_9198ee693835762e, []int{56} } func (m *RoleMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3993,7 +4039,7 @@ type ProvisionTokenV1 struct { func (m *ProvisionTokenV1) Reset() { *m = ProvisionTokenV1{} } func (*ProvisionTokenV1) ProtoMessage() {} func (*ProvisionTokenV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{56} + return fileDescriptor_9198ee693835762e, []int{57} } func (m *ProvisionTokenV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4043,7 +4089,7 @@ type ProvisionTokenV2 struct { func (m *ProvisionTokenV2) Reset() { *m = ProvisionTokenV2{} } func (*ProvisionTokenV2) ProtoMessage() {} func (*ProvisionTokenV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{57} + return fileDescriptor_9198ee693835762e, []int{58} } func (m *ProvisionTokenV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4085,7 +4131,7 @@ func (m *ProvisionTokenV2List) Reset() { *m = ProvisionTokenV2List{} } func (m *ProvisionTokenV2List) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenV2List) ProtoMessage() {} func (*ProvisionTokenV2List) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{58} + return fileDescriptor_9198ee693835762e, []int{59} } func (m *ProvisionTokenV2List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4137,7 +4183,7 @@ func (m *TokenRule) Reset() { *m = TokenRule{} } func (m *TokenRule) String() string { return proto.CompactTextString(m) } func (*TokenRule) ProtoMessage() {} func (*TokenRule) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{59} + return fileDescriptor_9198ee693835762e, []int{60} } func (m *TokenRule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4219,7 +4265,7 @@ func (m *ProvisionTokenSpecV2) Reset() { *m = ProvisionTokenSpecV2{} } func (m *ProvisionTokenSpecV2) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2) ProtoMessage() {} func (*ProvisionTokenSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{60} + return fileDescriptor_9198ee693835762e, []int{61} } func (m *ProvisionTokenSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4271,7 +4317,7 @@ func (m *ProvisionTokenSpecV2TPM) Reset() { *m = ProvisionTokenSpecV2TPM func (m *ProvisionTokenSpecV2TPM) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2TPM) ProtoMessage() {} func (*ProvisionTokenSpecV2TPM) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{61} + return fileDescriptor_9198ee693835762e, []int{62} } func (m *ProvisionTokenSpecV2TPM) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4327,7 +4373,7 @@ func (m *ProvisionTokenSpecV2TPM_Rule) Reset() { *m = ProvisionTokenSpec func (m *ProvisionTokenSpecV2TPM_Rule) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2TPM_Rule) ProtoMessage() {} func (*ProvisionTokenSpecV2TPM_Rule) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{61, 0} + return fileDescriptor_9198ee693835762e, []int{62, 0} } func (m *ProvisionTokenSpecV2TPM_Rule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4391,7 +4437,7 @@ func (m *ProvisionTokenSpecV2GitHub) Reset() { *m = ProvisionTokenSpecV2 func (m *ProvisionTokenSpecV2GitHub) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2GitHub) ProtoMessage() {} func (*ProvisionTokenSpecV2GitHub) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{62} + return fileDescriptor_9198ee693835762e, []int{63} } func (m *ProvisionTokenSpecV2GitHub) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4453,7 +4499,7 @@ func (m *ProvisionTokenSpecV2GitHub_Rule) Reset() { *m = ProvisionTokenS func (m *ProvisionTokenSpecV2GitHub_Rule) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2GitHub_Rule) ProtoMessage() {} func (*ProvisionTokenSpecV2GitHub_Rule) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{62, 0} + return fileDescriptor_9198ee693835762e, []int{63, 0} } func (m *ProvisionTokenSpecV2GitHub_Rule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4501,7 +4547,7 @@ func (m *ProvisionTokenSpecV2GitLab) Reset() { *m = ProvisionTokenSpecV2 func (m *ProvisionTokenSpecV2GitLab) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2GitLab) ProtoMessage() {} func (*ProvisionTokenSpecV2GitLab) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{63} + return fileDescriptor_9198ee693835762e, []int{64} } func (m *ProvisionTokenSpecV2GitLab) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4603,7 +4649,7 @@ func (m *ProvisionTokenSpecV2GitLab_Rule) Reset() { *m = ProvisionTokenS func (m *ProvisionTokenSpecV2GitLab_Rule) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2GitLab_Rule) ProtoMessage() {} func (*ProvisionTokenSpecV2GitLab_Rule) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{63, 0} + return fileDescriptor_9198ee693835762e, []int{64, 0} } func (m *ProvisionTokenSpecV2GitLab_Rule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4648,7 +4694,7 @@ func (m *ProvisionTokenSpecV2CircleCI) Reset() { *m = ProvisionTokenSpec func (m *ProvisionTokenSpecV2CircleCI) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2CircleCI) ProtoMessage() {} func (*ProvisionTokenSpecV2CircleCI) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{64} + return fileDescriptor_9198ee693835762e, []int{65} } func (m *ProvisionTokenSpecV2CircleCI) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4689,7 +4735,7 @@ func (m *ProvisionTokenSpecV2CircleCI_Rule) Reset() { *m = ProvisionToke func (m *ProvisionTokenSpecV2CircleCI_Rule) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2CircleCI_Rule) ProtoMessage() {} func (*ProvisionTokenSpecV2CircleCI_Rule) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{64, 0} + return fileDescriptor_9198ee693835762e, []int{65, 0} } func (m *ProvisionTokenSpecV2CircleCI_Rule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4736,7 +4782,7 @@ func (m *ProvisionTokenSpecV2Spacelift) Reset() { *m = ProvisionTokenSpe func (m *ProvisionTokenSpecV2Spacelift) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2Spacelift) ProtoMessage() {} func (*ProvisionTokenSpecV2Spacelift) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{65} + return fileDescriptor_9198ee693835762e, []int{66} } func (m *ProvisionTokenSpecV2Spacelift) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4787,7 +4833,7 @@ func (m *ProvisionTokenSpecV2Spacelift_Rule) Reset() { *m = ProvisionTok func (m *ProvisionTokenSpecV2Spacelift_Rule) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2Spacelift_Rule) ProtoMessage() {} func (*ProvisionTokenSpecV2Spacelift_Rule) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{65, 0} + return fileDescriptor_9198ee693835762e, []int{66, 0} } func (m *ProvisionTokenSpecV2Spacelift_Rule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4839,7 +4885,7 @@ func (m *ProvisionTokenSpecV2Kubernetes) Reset() { *m = ProvisionTokenSp func (m *ProvisionTokenSpecV2Kubernetes) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2Kubernetes) ProtoMessage() {} func (*ProvisionTokenSpecV2Kubernetes) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{66} + return fileDescriptor_9198ee693835762e, []int{67} } func (m *ProvisionTokenSpecV2Kubernetes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4886,7 +4932,7 @@ func (m *ProvisionTokenSpecV2Kubernetes_StaticJWKSConfig) String() string { } func (*ProvisionTokenSpecV2Kubernetes_StaticJWKSConfig) ProtoMessage() {} func (*ProvisionTokenSpecV2Kubernetes_StaticJWKSConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{66, 0} + return fileDescriptor_9198ee693835762e, []int{67, 0} } func (m *ProvisionTokenSpecV2Kubernetes_StaticJWKSConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4930,7 +4976,7 @@ func (m *ProvisionTokenSpecV2Kubernetes_Rule) Reset() { *m = ProvisionTo func (m *ProvisionTokenSpecV2Kubernetes_Rule) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2Kubernetes_Rule) ProtoMessage() {} func (*ProvisionTokenSpecV2Kubernetes_Rule) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{66, 1} + return fileDescriptor_9198ee693835762e, []int{67, 1} } func (m *ProvisionTokenSpecV2Kubernetes_Rule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4974,7 +5020,7 @@ func (m *ProvisionTokenSpecV2Azure) Reset() { *m = ProvisionTokenSpecV2A func (m *ProvisionTokenSpecV2Azure) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2Azure) ProtoMessage() {} func (*ProvisionTokenSpecV2Azure) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{67} + return fileDescriptor_9198ee693835762e, []int{68} } func (m *ProvisionTokenSpecV2Azure) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5020,7 +5066,7 @@ func (m *ProvisionTokenSpecV2Azure_Rule) Reset() { *m = ProvisionTokenSp func (m *ProvisionTokenSpecV2Azure_Rule) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2Azure_Rule) ProtoMessage() {} func (*ProvisionTokenSpecV2Azure_Rule) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{67, 0} + return fileDescriptor_9198ee693835762e, []int{68, 0} } func (m *ProvisionTokenSpecV2Azure_Rule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5064,7 +5110,7 @@ func (m *ProvisionTokenSpecV2GCP) Reset() { *m = ProvisionTokenSpecV2GCP func (m *ProvisionTokenSpecV2GCP) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2GCP) ProtoMessage() {} func (*ProvisionTokenSpecV2GCP) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{68} + return fileDescriptor_9198ee693835762e, []int{69} } func (m *ProvisionTokenSpecV2GCP) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5113,7 +5159,7 @@ func (m *ProvisionTokenSpecV2GCP_Rule) Reset() { *m = ProvisionTokenSpec func (m *ProvisionTokenSpecV2GCP_Rule) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2GCP_Rule) ProtoMessage() {} func (*ProvisionTokenSpecV2GCP_Rule) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{68, 0} + return fileDescriptor_9198ee693835762e, []int{69, 0} } func (m *ProvisionTokenSpecV2GCP_Rule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5170,7 +5216,7 @@ func (m *ProvisionTokenSpecV2TerraformCloud) Reset() { *m = ProvisionTok func (m *ProvisionTokenSpecV2TerraformCloud) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2TerraformCloud) ProtoMessage() {} func (*ProvisionTokenSpecV2TerraformCloud) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{69} + return fileDescriptor_9198ee693835762e, []int{70} } func (m *ProvisionTokenSpecV2TerraformCloud) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5235,7 +5281,7 @@ func (m *ProvisionTokenSpecV2TerraformCloud_Rule) Reset() { func (m *ProvisionTokenSpecV2TerraformCloud_Rule) String() string { return proto.CompactTextString(m) } func (*ProvisionTokenSpecV2TerraformCloud_Rule) ProtoMessage() {} func (*ProvisionTokenSpecV2TerraformCloud_Rule) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{69, 0} + return fileDescriptor_9198ee693835762e, []int{70, 0} } func (m *ProvisionTokenSpecV2TerraformCloud_Rule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5284,7 +5330,7 @@ type StaticTokensV2 struct { func (m *StaticTokensV2) Reset() { *m = StaticTokensV2{} } func (*StaticTokensV2) ProtoMessage() {} func (*StaticTokensV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{70} + return fileDescriptor_9198ee693835762e, []int{71} } func (m *StaticTokensV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5327,7 +5373,7 @@ func (m *StaticTokensSpecV2) Reset() { *m = StaticTokensSpecV2{} } func (m *StaticTokensSpecV2) String() string { return proto.CompactTextString(m) } func (*StaticTokensSpecV2) ProtoMessage() {} func (*StaticTokensSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{71} + return fileDescriptor_9198ee693835762e, []int{72} } func (m *StaticTokensSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5376,7 +5422,7 @@ type ClusterNameV2 struct { func (m *ClusterNameV2) Reset() { *m = ClusterNameV2{} } func (*ClusterNameV2) ProtoMessage() {} func (*ClusterNameV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{72} + return fileDescriptor_9198ee693835762e, []int{73} } func (m *ClusterNameV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5422,7 +5468,7 @@ func (m *ClusterNameSpecV2) Reset() { *m = ClusterNameSpecV2{} } func (m *ClusterNameSpecV2) String() string { return proto.CompactTextString(m) } func (*ClusterNameSpecV2) ProtoMessage() {} func (*ClusterNameSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{73} + return fileDescriptor_9198ee693835762e, []int{74} } func (m *ClusterNameSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5472,7 +5518,7 @@ func (m *ClusterAuditConfigV2) Reset() { *m = ClusterAuditConfigV2{} } func (m *ClusterAuditConfigV2) String() string { return proto.CompactTextString(m) } func (*ClusterAuditConfigV2) ProtoMessage() {} func (*ClusterAuditConfigV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{74} + return fileDescriptor_9198ee693835762e, []int{75} } func (m *ClusterAuditConfigV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5542,7 +5588,7 @@ func (m *ClusterAuditConfigSpecV2) Reset() { *m = ClusterAuditConfigSpec func (m *ClusterAuditConfigSpecV2) String() string { return proto.CompactTextString(m) } func (*ClusterAuditConfigSpecV2) ProtoMessage() {} func (*ClusterAuditConfigSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{75} + return fileDescriptor_9198ee693835762e, []int{76} } func (m *ClusterAuditConfigSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5593,7 +5639,7 @@ func (m *ClusterNetworkingConfigV2) Reset() { *m = ClusterNetworkingConf func (m *ClusterNetworkingConfigV2) String() string { return proto.CompactTextString(m) } func (*ClusterNetworkingConfigV2) ProtoMessage() {} func (*ClusterNetworkingConfigV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{76} + return fileDescriptor_9198ee693835762e, []int{77} } func (m *ClusterNetworkingConfigV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5672,7 +5718,7 @@ func (m *ClusterNetworkingConfigSpecV2) Reset() { *m = ClusterNetworking func (m *ClusterNetworkingConfigSpecV2) String() string { return proto.CompactTextString(m) } func (*ClusterNetworkingConfigSpecV2) ProtoMessage() {} func (*ClusterNetworkingConfigSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{77} + return fileDescriptor_9198ee693835762e, []int{78} } func (m *ClusterNetworkingConfigSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5717,7 +5763,7 @@ func (m *TunnelStrategyV1) Reset() { *m = TunnelStrategyV1{} } func (m *TunnelStrategyV1) String() string { return proto.CompactTextString(m) } func (*TunnelStrategyV1) ProtoMessage() {} func (*TunnelStrategyV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{78} + return fileDescriptor_9198ee693835762e, []int{79} } func (m *TunnelStrategyV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5802,7 +5848,7 @@ func (m *AgentMeshTunnelStrategy) Reset() { *m = AgentMeshTunnelStrategy func (m *AgentMeshTunnelStrategy) String() string { return proto.CompactTextString(m) } func (*AgentMeshTunnelStrategy) ProtoMessage() {} func (*AgentMeshTunnelStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{79} + return fileDescriptor_9198ee693835762e, []int{80} } func (m *AgentMeshTunnelStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5843,7 +5889,7 @@ func (m *ProxyPeeringTunnelStrategy) Reset() { *m = ProxyPeeringTunnelSt func (m *ProxyPeeringTunnelStrategy) String() string { return proto.CompactTextString(m) } func (*ProxyPeeringTunnelStrategy) ProtoMessage() {} func (*ProxyPeeringTunnelStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{80} + return fileDescriptor_9198ee693835762e, []int{81} } func (m *ProxyPeeringTunnelStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5894,7 +5940,7 @@ func (m *SessionRecordingConfigV2) Reset() { *m = SessionRecordingConfig func (m *SessionRecordingConfigV2) String() string { return proto.CompactTextString(m) } func (*SessionRecordingConfigV2) ProtoMessage() {} func (*SessionRecordingConfigV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{81} + return fileDescriptor_9198ee693835762e, []int{82} } func (m *SessionRecordingConfigV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5940,7 +5986,7 @@ func (m *SessionRecordingConfigSpecV2) Reset() { *m = SessionRecordingCo func (m *SessionRecordingConfigSpecV2) String() string { return proto.CompactTextString(m) } func (*SessionRecordingConfigSpecV2) ProtoMessage() {} func (*SessionRecordingConfigSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{82} + return fileDescriptor_9198ee693835762e, []int{83} } func (m *SessionRecordingConfigSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5990,7 +6036,7 @@ type AuthPreferenceV2 struct { func (m *AuthPreferenceV2) Reset() { *m = AuthPreferenceV2{} } func (*AuthPreferenceV2) ProtoMessage() {} func (*AuthPreferenceV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{83} + return fileDescriptor_9198ee693835762e, []int{84} } func (m *AuthPreferenceV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6083,7 +6129,7 @@ func (m *AuthPreferenceSpecV2) Reset() { *m = AuthPreferenceSpecV2{} } func (m *AuthPreferenceSpecV2) String() string { return proto.CompactTextString(m) } func (*AuthPreferenceSpecV2) ProtoMessage() {} func (*AuthPreferenceSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{84} + return fileDescriptor_9198ee693835762e, []int{85} } func (m *AuthPreferenceSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6134,7 +6180,7 @@ func (m *U2F) Reset() { *m = U2F{} } func (m *U2F) String() string { return proto.CompactTextString(m) } func (*U2F) ProtoMessage() {} func (*U2F) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{85} + return fileDescriptor_9198ee693835762e, []int{86} } func (m *U2F) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6202,7 +6248,7 @@ func (m *Webauthn) Reset() { *m = Webauthn{} } func (m *Webauthn) String() string { return proto.CompactTextString(m) } func (*Webauthn) ProtoMessage() {} func (*Webauthn) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{86} + return fileDescriptor_9198ee693835762e, []int{87} } func (m *Webauthn) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6273,7 +6319,7 @@ func (m *DeviceTrust) Reset() { *m = DeviceTrust{} } func (m *DeviceTrust) String() string { return proto.CompactTextString(m) } func (*DeviceTrust) ProtoMessage() {} func (*DeviceTrust) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{87} + return fileDescriptor_9198ee693835762e, []int{88} } func (m *DeviceTrust) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6320,7 +6366,7 @@ func (m *HardwareKey) Reset() { *m = HardwareKey{} } func (m *HardwareKey) String() string { return proto.CompactTextString(m) } func (*HardwareKey) ProtoMessage() {} func (*HardwareKey) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{88} + return fileDescriptor_9198ee693835762e, []int{89} } func (m *HardwareKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6367,7 +6413,7 @@ func (m *HardwareKeySerialNumberValidation) Reset() { *m = HardwareKeySe func (m *HardwareKeySerialNumberValidation) String() string { return proto.CompactTextString(m) } func (*HardwareKeySerialNumberValidation) ProtoMessage() {} func (*HardwareKeySerialNumberValidation) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{89} + return fileDescriptor_9198ee693835762e, []int{90} } func (m *HardwareKeySerialNumberValidation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6417,7 +6463,7 @@ func (m *Namespace) Reset() { *m = Namespace{} } func (m *Namespace) String() string { return proto.CompactTextString(m) } func (*Namespace) ProtoMessage() {} func (*Namespace) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{90} + return fileDescriptor_9198ee693835762e, []int{91} } func (m *Namespace) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6457,7 +6503,7 @@ func (m *NamespaceSpec) Reset() { *m = NamespaceSpec{} } func (m *NamespaceSpec) String() string { return proto.CompactTextString(m) } func (*NamespaceSpec) ProtoMessage() {} func (*NamespaceSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{91} + return fileDescriptor_9198ee693835762e, []int{92} } func (m *NamespaceSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6505,7 +6551,7 @@ type UserTokenV3 struct { func (m *UserTokenV3) Reset() { *m = UserTokenV3{} } func (*UserTokenV3) ProtoMessage() {} func (*UserTokenV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{92} + return fileDescriptor_9198ee693835762e, []int{93} } func (m *UserTokenV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6552,7 +6598,7 @@ func (m *UserTokenSpecV3) Reset() { *m = UserTokenSpecV3{} } func (m *UserTokenSpecV3) String() string { return proto.CompactTextString(m) } func (*UserTokenSpecV3) ProtoMessage() {} func (*UserTokenSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{93} + return fileDescriptor_9198ee693835762e, []int{94} } func (m *UserTokenSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6600,7 +6646,7 @@ type UserTokenSecretsV3 struct { func (m *UserTokenSecretsV3) Reset() { *m = UserTokenSecretsV3{} } func (*UserTokenSecretsV3) ProtoMessage() {} func (*UserTokenSecretsV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{94} + return fileDescriptor_9198ee693835762e, []int{95} } func (m *UserTokenSecretsV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6645,7 +6691,7 @@ func (m *UserTokenSecretsSpecV3) Reset() { *m = UserTokenSecretsSpecV3{} func (m *UserTokenSecretsSpecV3) String() string { return proto.CompactTextString(m) } func (*UserTokenSecretsSpecV3) ProtoMessage() {} func (*UserTokenSecretsSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{95} + return fileDescriptor_9198ee693835762e, []int{96} } func (m *UserTokenSecretsSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6694,7 +6740,7 @@ type AccessRequestV3 struct { func (m *AccessRequestV3) Reset() { *m = AccessRequestV3{} } func (*AccessRequestV3) ProtoMessage() {} func (*AccessRequestV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{96} + return fileDescriptor_9198ee693835762e, []int{97} } func (m *AccessRequestV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6746,7 +6792,7 @@ func (m *AccessReviewThreshold) Reset() { *m = AccessReviewThreshold{} } func (m *AccessReviewThreshold) String() string { return proto.CompactTextString(m) } func (*AccessReviewThreshold) ProtoMessage() {} func (*AccessReviewThreshold) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{97} + return fileDescriptor_9198ee693835762e, []int{98} } func (m *AccessReviewThreshold) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6791,7 +6837,7 @@ func (m *PromotedAccessList) Reset() { *m = PromotedAccessList{} } func (m *PromotedAccessList) String() string { return proto.CompactTextString(m) } func (*PromotedAccessList) ProtoMessage() {} func (*PromotedAccessList) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{98} + return fileDescriptor_9198ee693835762e, []int{99} } func (m *PromotedAccessList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6852,7 +6898,7 @@ func (m *AccessReview) Reset() { *m = AccessReview{} } func (m *AccessReview) String() string { return proto.CompactTextString(m) } func (*AccessReview) ProtoMessage() {} func (*AccessReview) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{99} + return fileDescriptor_9198ee693835762e, []int{100} } func (m *AccessReview) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6897,7 +6943,7 @@ func (m *AccessReviewSubmission) Reset() { *m = AccessReviewSubmission{} func (m *AccessReviewSubmission) String() string { return proto.CompactTextString(m) } func (*AccessReviewSubmission) ProtoMessage() {} func (*AccessReviewSubmission) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{100} + return fileDescriptor_9198ee693835762e, []int{101} } func (m *AccessReviewSubmission) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6940,7 +6986,7 @@ func (m *ThresholdIndexSet) Reset() { *m = ThresholdIndexSet{} } func (m *ThresholdIndexSet) String() string { return proto.CompactTextString(m) } func (*ThresholdIndexSet) ProtoMessage() {} func (*ThresholdIndexSet) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{101} + return fileDescriptor_9198ee693835762e, []int{102} } func (m *ThresholdIndexSet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6983,7 +7029,7 @@ func (m *ThresholdIndexSets) Reset() { *m = ThresholdIndexSets{} } func (m *ThresholdIndexSets) String() string { return proto.CompactTextString(m) } func (*ThresholdIndexSets) ProtoMessage() {} func (*ThresholdIndexSets) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{102} + return fileDescriptor_9198ee693835762e, []int{103} } func (m *ThresholdIndexSets) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7086,7 +7132,7 @@ func (m *AccessRequestSpecV3) Reset() { *m = AccessRequestSpecV3{} } func (m *AccessRequestSpecV3) String() string { return proto.CompactTextString(m) } func (*AccessRequestSpecV3) ProtoMessage() {} func (*AccessRequestSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{103} + return fileDescriptor_9198ee693835762e, []int{104} } func (m *AccessRequestSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7143,7 +7189,7 @@ func (m *AccessRequestFilter) Reset() { *m = AccessRequestFilter{} } func (m *AccessRequestFilter) String() string { return proto.CompactTextString(m) } func (*AccessRequestFilter) ProtoMessage() {} func (*AccessRequestFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{104} + return fileDescriptor_9198ee693835762e, []int{105} } func (m *AccessRequestFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7199,7 +7245,7 @@ func (m *AccessCapabilities) Reset() { *m = AccessCapabilities{} } func (m *AccessCapabilities) String() string { return proto.CompactTextString(m) } func (*AccessCapabilities) ProtoMessage() {} func (*AccessCapabilities) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{105} + return fileDescriptor_9198ee693835762e, []int{106} } func (m *AccessCapabilities) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7257,7 +7303,7 @@ func (m *AccessCapabilitiesRequest) Reset() { *m = AccessCapabilitiesReq func (m *AccessCapabilitiesRequest) String() string { return proto.CompactTextString(m) } func (*AccessCapabilitiesRequest) ProtoMessage() {} func (*AccessCapabilitiesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{106} + return fileDescriptor_9198ee693835762e, []int{107} } func (m *AccessCapabilitiesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7309,7 +7355,7 @@ func (m *ResourceID) Reset() { *m = ResourceID{} } func (m *ResourceID) String() string { return proto.CompactTextString(m) } func (*ResourceID) ProtoMessage() {} func (*ResourceID) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{107} + return fileDescriptor_9198ee693835762e, []int{108} } func (m *ResourceID) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7358,7 +7404,7 @@ type PluginDataV3 struct { func (m *PluginDataV3) Reset() { *m = PluginDataV3{} } func (*PluginDataV3) ProtoMessage() {} func (*PluginDataV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{108} + return fileDescriptor_9198ee693835762e, []int{109} } func (m *PluginDataV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7401,7 +7447,7 @@ func (m *PluginDataEntry) Reset() { *m = PluginDataEntry{} } func (m *PluginDataEntry) String() string { return proto.CompactTextString(m) } func (*PluginDataEntry) ProtoMessage() {} func (*PluginDataEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{109} + return fileDescriptor_9198ee693835762e, []int{110} } func (m *PluginDataEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7443,7 +7489,7 @@ func (m *PluginDataSpecV3) Reset() { *m = PluginDataSpecV3{} } func (m *PluginDataSpecV3) String() string { return proto.CompactTextString(m) } func (*PluginDataSpecV3) ProtoMessage() {} func (*PluginDataSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{110} + return fileDescriptor_9198ee693835762e, []int{111} } func (m *PluginDataSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7490,7 +7536,7 @@ func (m *PluginDataFilter) Reset() { *m = PluginDataFilter{} } func (m *PluginDataFilter) String() string { return proto.CompactTextString(m) } func (*PluginDataFilter) ProtoMessage() {} func (*PluginDataFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{111} + return fileDescriptor_9198ee693835762e, []int{112} } func (m *PluginDataFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7541,7 +7587,7 @@ func (m *PluginDataUpdateParams) Reset() { *m = PluginDataUpdateParams{} func (m *PluginDataUpdateParams) String() string { return proto.CompactTextString(m) } func (*PluginDataUpdateParams) ProtoMessage() {} func (*PluginDataUpdateParams) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{112} + return fileDescriptor_9198ee693835762e, []int{113} } func (m *PluginDataUpdateParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7585,7 +7631,7 @@ func (m *RoleFilter) Reset() { *m = RoleFilter{} } func (m *RoleFilter) String() string { return proto.CompactTextString(m) } func (*RoleFilter) ProtoMessage() {} func (*RoleFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{113} + return fileDescriptor_9198ee693835762e, []int{114} } func (m *RoleFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7635,7 +7681,7 @@ type RoleV6 struct { func (m *RoleV6) Reset() { *m = RoleV6{} } func (*RoleV6) ProtoMessage() {} func (*RoleV6) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{114} + return fileDescriptor_9198ee693835762e, []int{115} } func (m *RoleV6) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7682,7 +7728,7 @@ func (m *RoleSpecV6) Reset() { *m = RoleSpecV6{} } func (m *RoleSpecV6) String() string { return proto.CompactTextString(m) } func (*RoleSpecV6) ProtoMessage() {} func (*RoleSpecV6) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{115} + return fileDescriptor_9198ee693835762e, []int{116} } func (m *RoleSpecV6) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7815,7 +7861,7 @@ func (m *RoleOptions) Reset() { *m = RoleOptions{} } func (m *RoleOptions) String() string { return proto.CompactTextString(m) } func (*RoleOptions) ProtoMessage() {} func (*RoleOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{116} + return fileDescriptor_9198ee693835762e, []int{117} } func (m *RoleOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7861,7 +7907,7 @@ func (m *RecordSession) Reset() { *m = RecordSession{} } func (m *RecordSession) String() string { return proto.CompactTextString(m) } func (*RecordSession) ProtoMessage() {} func (*RecordSession) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{117} + return fileDescriptor_9198ee693835762e, []int{118} } func (m *RecordSession) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7913,7 +7959,7 @@ func (m *CertExtension) Reset() { *m = CertExtension{} } func (m *CertExtension) String() string { return proto.CompactTextString(m) } func (*CertExtension) ProtoMessage() {} func (*CertExtension) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{118} + return fileDescriptor_9198ee693835762e, []int{119} } func (m *CertExtension) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8037,6 +8083,7 @@ type RoleConditions struct { // SPIFFE is used to allow or deny access to a role holder to generating a // SPIFFE SVID. SPIFFE []*SPIFFERoleCondition `protobuf:"bytes,39,rep,name=SPIFFE,proto3" json:"spiffe,omitempty"` + GithubPermissions []GitHubPermission `protobuf:"bytes,42,rep,name=github_permissions,json=githubPermissions,proto3" json:"github_permissions,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -8046,7 +8093,7 @@ func (m *RoleConditions) Reset() { *m = RoleConditions{} } func (m *RoleConditions) String() string { return proto.CompactTextString(m) } func (*RoleConditions) ProtoMessage() {} func (*RoleConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{119} + return fileDescriptor_9198ee693835762e, []int{120} } func (m *RoleConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8075,6 +8122,47 @@ func (m *RoleConditions) XXX_DiscardUnknown() { var xxx_messageInfo_RoleConditions proto.InternalMessageInfo +// GitHubPermission defines Git integration related permissions. +type GitHubPermission struct { + Organizations []string `protobuf:"bytes,1,rep,name=organizations,proto3" json:"orgs,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GitHubPermission) Reset() { *m = GitHubPermission{} } +func (m *GitHubPermission) String() string { return proto.CompactTextString(m) } +func (*GitHubPermission) ProtoMessage() {} +func (*GitHubPermission) Descriptor() ([]byte, []int) { + return fileDescriptor_9198ee693835762e, []int{121} +} +func (m *GitHubPermission) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GitHubPermission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GitHubPermission.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 *GitHubPermission) XXX_Merge(src proto.Message) { + xxx_messageInfo_GitHubPermission.Merge(m, src) +} +func (m *GitHubPermission) XXX_Size() int { + return m.Size() +} +func (m *GitHubPermission) XXX_DiscardUnknown() { + xxx_messageInfo_GitHubPermission.DiscardUnknown(m) +} + +var xxx_messageInfo_GitHubPermission proto.InternalMessageInfo + // SPIFFERoleCondition sets out which SPIFFE identities this role is allowed or // denied to generate. The Path matcher is required, and is evaluated first. If, // the Path does not match then the other matcher fields are not evaluated. @@ -8122,7 +8210,7 @@ func (m *SPIFFERoleCondition) Reset() { *m = SPIFFERoleCondition{} } func (m *SPIFFERoleCondition) String() string { return proto.CompactTextString(m) } func (*SPIFFERoleCondition) ProtoMessage() {} func (*SPIFFERoleCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{120} + return fileDescriptor_9198ee693835762e, []int{122} } func (m *SPIFFERoleCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8166,7 +8254,7 @@ func (m *DatabasePermission) Reset() { *m = DatabasePermission{} } func (m *DatabasePermission) String() string { return proto.CompactTextString(m) } func (*DatabasePermission) ProtoMessage() {} func (*DatabasePermission) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{121} + return fileDescriptor_9198ee693835762e, []int{123} } func (m *DatabasePermission) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8217,7 +8305,7 @@ func (m *KubernetesResource) Reset() { *m = KubernetesResource{} } func (m *KubernetesResource) String() string { return proto.CompactTextString(m) } func (*KubernetesResource) ProtoMessage() {} func (*KubernetesResource) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{122} + return fileDescriptor_9198ee693835762e, []int{124} } func (m *KubernetesResource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8270,7 +8358,7 @@ func (m *SessionRequirePolicy) Reset() { *m = SessionRequirePolicy{} } func (m *SessionRequirePolicy) String() string { return proto.CompactTextString(m) } func (*SessionRequirePolicy) ProtoMessage() {} func (*SessionRequirePolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{123} + return fileDescriptor_9198ee693835762e, []int{125} } func (m *SessionRequirePolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8318,7 +8406,7 @@ func (m *SessionJoinPolicy) Reset() { *m = SessionJoinPolicy{} } func (m *SessionJoinPolicy) String() string { return proto.CompactTextString(m) } func (*SessionJoinPolicy) ProtoMessage() {} func (*SessionJoinPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{124} + return fileDescriptor_9198ee693835762e, []int{126} } func (m *SessionJoinPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8387,7 +8475,7 @@ func (m *AccessRequestConditions) Reset() { *m = AccessRequestConditions func (m *AccessRequestConditions) String() string { return proto.CompactTextString(m) } func (*AccessRequestConditions) ProtoMessage() {} func (*AccessRequestConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{125} + return fileDescriptor_9198ee693835762e, []int{127} } func (m *AccessRequestConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8440,7 +8528,7 @@ func (m *AccessReviewConditions) Reset() { *m = AccessReviewConditions{} func (m *AccessReviewConditions) String() string { return proto.CompactTextString(m) } func (*AccessReviewConditions) ProtoMessage() {} func (*AccessReviewConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{126} + return fileDescriptor_9198ee693835762e, []int{128} } func (m *AccessReviewConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8482,7 +8570,7 @@ func (m *AccessRequestAllowedPromotion) Reset() { *m = AccessRequestAllo func (m *AccessRequestAllowedPromotion) String() string { return proto.CompactTextString(m) } func (*AccessRequestAllowedPromotion) ProtoMessage() {} func (*AccessRequestAllowedPromotion) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{127} + return fileDescriptor_9198ee693835762e, []int{129} } func (m *AccessRequestAllowedPromotion) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8525,7 +8613,7 @@ func (m *AccessRequestAllowedPromotions) Reset() { *m = AccessRequestAll func (m *AccessRequestAllowedPromotions) String() string { return proto.CompactTextString(m) } func (*AccessRequestAllowedPromotions) ProtoMessage() {} func (*AccessRequestAllowedPromotions) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{128} + return fileDescriptor_9198ee693835762e, []int{130} } func (m *AccessRequestAllowedPromotions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8571,7 +8659,7 @@ func (m *ClaimMapping) Reset() { *m = ClaimMapping{} } func (m *ClaimMapping) String() string { return proto.CompactTextString(m) } func (*ClaimMapping) ProtoMessage() {} func (*ClaimMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{129} + return fileDescriptor_9198ee693835762e, []int{131} } func (m *ClaimMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8617,7 +8705,7 @@ func (m *TraitMapping) Reset() { *m = TraitMapping{} } func (m *TraitMapping) String() string { return proto.CompactTextString(m) } func (*TraitMapping) ProtoMessage() {} func (*TraitMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{130} + return fileDescriptor_9198ee693835762e, []int{132} } func (m *TraitMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8666,7 +8754,7 @@ func (m *Rule) Reset() { *m = Rule{} } func (m *Rule) String() string { return proto.CompactTextString(m) } func (*Rule) ProtoMessage() {} func (*Rule) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{131} + return fileDescriptor_9198ee693835762e, []int{133} } func (m *Rule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8714,7 +8802,7 @@ func (m *ImpersonateConditions) Reset() { *m = ImpersonateConditions{} } func (m *ImpersonateConditions) String() string { return proto.CompactTextString(m) } func (*ImpersonateConditions) ProtoMessage() {} func (*ImpersonateConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{132} + return fileDescriptor_9198ee693835762e, []int{134} } func (m *ImpersonateConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8756,7 +8844,7 @@ func (m *BoolValue) Reset() { *m = BoolValue{} } func (m *BoolValue) String() string { return proto.CompactTextString(m) } func (*BoolValue) ProtoMessage() {} func (*BoolValue) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{133} + return fileDescriptor_9198ee693835762e, []int{135} } func (m *BoolValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8798,7 +8886,7 @@ func (m *UserFilter) Reset() { *m = UserFilter{} } func (m *UserFilter) String() string { return proto.CompactTextString(m) } func (*UserFilter) ProtoMessage() {} func (*UserFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{134} + return fileDescriptor_9198ee693835762e, []int{136} } func (m *UserFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8849,7 +8937,7 @@ type UserV2 struct { func (m *UserV2) Reset() { *m = UserV2{} } func (*UserV2) ProtoMessage() {} func (*UserV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{135} + return fileDescriptor_9198ee693835762e, []int{137} } func (m *UserV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8895,7 +8983,7 @@ func (m *UserStatusV2) Reset() { *m = UserStatusV2{} } func (m *UserStatusV2) String() string { return proto.CompactTextString(m) } func (*UserStatusV2) ProtoMessage() {} func (*UserStatusV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{136} + return fileDescriptor_9198ee693835762e, []int{138} } func (m *UserStatusV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8969,7 +9057,7 @@ func (m *UserSpecV2) Reset() { *m = UserSpecV2{} } func (m *UserSpecV2) String() string { return proto.CompactTextString(m) } func (*UserSpecV2) ProtoMessage() {} func (*UserSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{137} + return fileDescriptor_9198ee693835762e, []int{139} } func (m *UserSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9007,7 +9095,10 @@ type ExternalIdentity struct { // Username is username supplied by external identity provider Username string `protobuf:"bytes,2,opt,name=Username,proto3" json:"username,omitempty"` // SAMLSingleLogoutURL is the SAML Single log-out URL to initiate SAML SLO (single log-out), if applicable. - SAMLSingleLogoutURL string `protobuf:"bytes,3,opt,name=SAMLSingleLogoutURL,proto3" json:"samlSingleLogoutUrl,omitempty"` + SAMLSingleLogoutURL string `protobuf:"bytes,3,opt,name=SAMLSingleLogoutURL,proto3" json:"samlSingleLogoutUrl,omitempty"` + // UserID is the ID of the identity. Some connectors like GitHub have an + // unique ID apart from the username. + UserID string `protobuf:"bytes,4,opt,name=UserID,proto3" json:"user_id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -9016,7 +9107,7 @@ type ExternalIdentity struct { func (m *ExternalIdentity) Reset() { *m = ExternalIdentity{} } func (*ExternalIdentity) ProtoMessage() {} func (*ExternalIdentity) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{138} + return fileDescriptor_9198ee693835762e, []int{140} } func (m *ExternalIdentity) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9064,7 +9155,7 @@ func (m *LoginStatus) Reset() { *m = LoginStatus{} } func (m *LoginStatus) String() string { return proto.CompactTextString(m) } func (*LoginStatus) ProtoMessage() {} func (*LoginStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{139} + return fileDescriptor_9198ee693835762e, []int{141} } func (m *LoginStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9109,7 +9200,7 @@ type CreatedBy struct { func (m *CreatedBy) Reset() { *m = CreatedBy{} } func (*CreatedBy) ProtoMessage() {} func (*CreatedBy) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{140} + return fileDescriptor_9198ee693835762e, []int{142} } func (m *CreatedBy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9158,7 +9249,7 @@ func (m *LocalAuthSecrets) Reset() { *m = LocalAuthSecrets{} } func (m *LocalAuthSecrets) String() string { return proto.CompactTextString(m) } func (*LocalAuthSecrets) ProtoMessage() {} func (*LocalAuthSecrets) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{141} + return fileDescriptor_9198ee693835762e, []int{143} } func (m *LocalAuthSecrets) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9214,7 +9305,7 @@ func (m *MFADevice) Reset() { *m = MFADevice{} } func (m *MFADevice) String() string { return proto.CompactTextString(m) } func (*MFADevice) ProtoMessage() {} func (*MFADevice) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{142} + return fileDescriptor_9198ee693835762e, []int{144} } func (m *MFADevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9312,7 +9403,7 @@ func (m *TOTPDevice) Reset() { *m = TOTPDevice{} } func (m *TOTPDevice) String() string { return proto.CompactTextString(m) } func (*TOTPDevice) ProtoMessage() {} func (*TOTPDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{143} + return fileDescriptor_9198ee693835762e, []int{145} } func (m *TOTPDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9358,7 +9449,7 @@ func (m *U2FDevice) Reset() { *m = U2FDevice{} } func (m *U2FDevice) String() string { return proto.CompactTextString(m) } func (*U2FDevice) ProtoMessage() {} func (*U2FDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{144} + return fileDescriptor_9198ee693835762e, []int{146} } func (m *U2FDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9440,7 +9531,7 @@ func (m *WebauthnDevice) Reset() { *m = WebauthnDevice{} } func (m *WebauthnDevice) String() string { return proto.CompactTextString(m) } func (*WebauthnDevice) ProtoMessage() {} func (*WebauthnDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{145} + return fileDescriptor_9198ee693835762e, []int{147} } func (m *WebauthnDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9483,7 +9574,7 @@ func (m *WebauthnLocalAuth) Reset() { *m = WebauthnLocalAuth{} } func (m *WebauthnLocalAuth) String() string { return proto.CompactTextString(m) } func (*WebauthnLocalAuth) ProtoMessage() {} func (*WebauthnLocalAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{146} + return fileDescriptor_9198ee693835762e, []int{148} } func (m *WebauthnLocalAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9529,7 +9620,7 @@ func (m *ConnectorRef) Reset() { *m = ConnectorRef{} } func (m *ConnectorRef) String() string { return proto.CompactTextString(m) } func (*ConnectorRef) ProtoMessage() {} func (*ConnectorRef) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{147} + return fileDescriptor_9198ee693835762e, []int{149} } func (m *ConnectorRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9571,7 +9662,7 @@ func (m *UserRef) Reset() { *m = UserRef{} } func (m *UserRef) String() string { return proto.CompactTextString(m) } func (*UserRef) ProtoMessage() {} func (*UserRef) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{148} + return fileDescriptor_9198ee693835762e, []int{150} } func (m *UserRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9621,7 +9712,7 @@ func (m *ReverseTunnelV2) Reset() { *m = ReverseTunnelV2{} } func (m *ReverseTunnelV2) String() string { return proto.CompactTextString(m) } func (*ReverseTunnelV2) ProtoMessage() {} func (*ReverseTunnelV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{149} + return fileDescriptor_9198ee693835762e, []int{151} } func (m *ReverseTunnelV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9668,7 +9759,7 @@ func (m *ReverseTunnelSpecV2) Reset() { *m = ReverseTunnelSpecV2{} } func (m *ReverseTunnelSpecV2) String() string { return proto.CompactTextString(m) } func (*ReverseTunnelSpecV2) ProtoMessage() {} func (*ReverseTunnelSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{150} + return fileDescriptor_9198ee693835762e, []int{152} } func (m *ReverseTunnelSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9717,7 +9808,7 @@ type TunnelConnectionV2 struct { func (m *TunnelConnectionV2) Reset() { *m = TunnelConnectionV2{} } func (*TunnelConnectionV2) ProtoMessage() {} func (*TunnelConnectionV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{151} + return fileDescriptor_9198ee693835762e, []int{153} } func (m *TunnelConnectionV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9765,7 +9856,7 @@ func (m *TunnelConnectionSpecV2) Reset() { *m = TunnelConnectionSpecV2{} func (m *TunnelConnectionSpecV2) String() string { return proto.CompactTextString(m) } func (*TunnelConnectionSpecV2) ProtoMessage() {} func (*TunnelConnectionSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{152} + return fileDescriptor_9198ee693835762e, []int{154} } func (m *TunnelConnectionSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9813,7 +9904,7 @@ func (m *SemaphoreFilter) Reset() { *m = SemaphoreFilter{} } func (m *SemaphoreFilter) String() string { return proto.CompactTextString(m) } func (*SemaphoreFilter) ProtoMessage() {} func (*SemaphoreFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{153} + return fileDescriptor_9198ee693835762e, []int{155} } func (m *SemaphoreFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9864,7 +9955,7 @@ func (m *AcquireSemaphoreRequest) Reset() { *m = AcquireSemaphoreRequest func (m *AcquireSemaphoreRequest) String() string { return proto.CompactTextString(m) } func (*AcquireSemaphoreRequest) ProtoMessage() {} func (*AcquireSemaphoreRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{154} + return fileDescriptor_9198ee693835762e, []int{156} } func (m *AcquireSemaphoreRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9912,7 +10003,7 @@ func (m *SemaphoreLease) Reset() { *m = SemaphoreLease{} } func (m *SemaphoreLease) String() string { return proto.CompactTextString(m) } func (*SemaphoreLease) ProtoMessage() {} func (*SemaphoreLease) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{155} + return fileDescriptor_9198ee693835762e, []int{157} } func (m *SemaphoreLease) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9958,7 +10049,7 @@ func (m *SemaphoreLeaseRef) Reset() { *m = SemaphoreLeaseRef{} } func (m *SemaphoreLeaseRef) String() string { return proto.CompactTextString(m) } func (*SemaphoreLeaseRef) ProtoMessage() {} func (*SemaphoreLeaseRef) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{156} + return fileDescriptor_9198ee693835762e, []int{158} } func (m *SemaphoreLeaseRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10007,7 +10098,7 @@ type SemaphoreV3 struct { func (m *SemaphoreV3) Reset() { *m = SemaphoreV3{} } func (*SemaphoreV3) ProtoMessage() {} func (*SemaphoreV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{157} + return fileDescriptor_9198ee693835762e, []int{159} } func (m *SemaphoreV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10049,7 +10140,7 @@ func (m *SemaphoreSpecV3) Reset() { *m = SemaphoreSpecV3{} } func (m *SemaphoreSpecV3) String() string { return proto.CompactTextString(m) } func (*SemaphoreSpecV3) ProtoMessage() {} func (*SemaphoreSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{158} + return fileDescriptor_9198ee693835762e, []int{160} } func (m *SemaphoreSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10098,7 +10189,7 @@ type WebSessionV2 struct { func (m *WebSessionV2) Reset() { *m = WebSessionV2{} } func (*WebSessionV2) ProtoMessage() {} func (*WebSessionV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{159} + return fileDescriptor_9198ee693835762e, []int{161} } func (m *WebSessionV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10183,7 +10274,7 @@ func (m *WebSessionSpecV2) Reset() { *m = WebSessionSpecV2{} } func (m *WebSessionSpecV2) String() string { return proto.CompactTextString(m) } func (*WebSessionSpecV2) ProtoMessage() {} func (*WebSessionSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{160} + return fileDescriptor_9198ee693835762e, []int{162} } func (m *WebSessionSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10228,7 +10319,7 @@ func (m *DeviceWebToken) Reset() { *m = DeviceWebToken{} } func (m *DeviceWebToken) String() string { return proto.CompactTextString(m) } func (*DeviceWebToken) ProtoMessage() {} func (*DeviceWebToken) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{161} + return fileDescriptor_9198ee693835762e, []int{163} } func (m *DeviceWebToken) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10270,7 +10361,7 @@ func (m *WebSessionFilter) Reset() { *m = WebSessionFilter{} } func (m *WebSessionFilter) String() string { return proto.CompactTextString(m) } func (*WebSessionFilter) ProtoMessage() {} func (*WebSessionFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{162} + return fileDescriptor_9198ee693835762e, []int{164} } func (m *WebSessionFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10341,7 +10432,7 @@ func (m *SAMLSessionData) Reset() { *m = SAMLSessionData{} } func (m *SAMLSessionData) String() string { return proto.CompactTextString(m) } func (*SAMLSessionData) ProtoMessage() {} func (*SAMLSessionData) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{163} + return fileDescriptor_9198ee693835762e, []int{165} } func (m *SAMLSessionData) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10390,7 +10481,7 @@ func (m *SAMLAttribute) Reset() { *m = SAMLAttribute{} } func (m *SAMLAttribute) String() string { return proto.CompactTextString(m) } func (*SAMLAttribute) ProtoMessage() {} func (*SAMLAttribute) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{164} + return fileDescriptor_9198ee693835762e, []int{166} } func (m *SAMLAttribute) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10437,7 +10528,7 @@ func (m *SAMLAttributeValue) Reset() { *m = SAMLAttributeValue{} } func (m *SAMLAttributeValue) String() string { return proto.CompactTextString(m) } func (*SAMLAttributeValue) ProtoMessage() {} func (*SAMLAttributeValue) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{165} + return fileDescriptor_9198ee693835762e, []int{167} } func (m *SAMLAttributeValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10488,7 +10579,7 @@ func (m *SAMLNameID) Reset() { *m = SAMLNameID{} } func (m *SAMLNameID) String() string { return proto.CompactTextString(m) } func (*SAMLNameID) ProtoMessage() {} func (*SAMLNameID) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{166} + return fileDescriptor_9198ee693835762e, []int{168} } func (m *SAMLNameID) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10537,7 +10628,7 @@ type RemoteClusterV3 struct { func (m *RemoteClusterV3) Reset() { *m = RemoteClusterV3{} } func (*RemoteClusterV3) ProtoMessage() {} func (*RemoteClusterV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{167} + return fileDescriptor_9198ee693835762e, []int{169} } func (m *RemoteClusterV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10581,7 +10672,7 @@ func (m *RemoteClusterStatusV3) Reset() { *m = RemoteClusterStatusV3{} } func (m *RemoteClusterStatusV3) String() string { return proto.CompactTextString(m) } func (*RemoteClusterStatusV3) ProtoMessage() {} func (*RemoteClusterStatusV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{168} + return fileDescriptor_9198ee693835762e, []int{170} } func (m *RemoteClusterStatusV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10631,7 +10722,7 @@ func (m *KubernetesCluster) Reset() { *m = KubernetesCluster{} } func (m *KubernetesCluster) String() string { return proto.CompactTextString(m) } func (*KubernetesCluster) ProtoMessage() {} func (*KubernetesCluster) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{169} + return fileDescriptor_9198ee693835762e, []int{171} } func (m *KubernetesCluster) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10680,7 +10771,7 @@ type KubernetesClusterV3 struct { func (m *KubernetesClusterV3) Reset() { *m = KubernetesClusterV3{} } func (*KubernetesClusterV3) ProtoMessage() {} func (*KubernetesClusterV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{170} + return fileDescriptor_9198ee693835762e, []int{172} } func (m *KubernetesClusterV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10731,7 +10822,7 @@ func (m *KubernetesClusterSpecV3) Reset() { *m = KubernetesClusterSpecV3 func (m *KubernetesClusterSpecV3) String() string { return proto.CompactTextString(m) } func (*KubernetesClusterSpecV3) ProtoMessage() {} func (*KubernetesClusterSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{171} + return fileDescriptor_9198ee693835762e, []int{173} } func (m *KubernetesClusterSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10779,7 +10870,7 @@ func (m *KubeAzure) Reset() { *m = KubeAzure{} } func (m *KubeAzure) String() string { return proto.CompactTextString(m) } func (*KubeAzure) ProtoMessage() {} func (*KubeAzure) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{172} + return fileDescriptor_9198ee693835762e, []int{174} } func (m *KubeAzure) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10825,7 +10916,7 @@ func (m *KubeAWS) Reset() { *m = KubeAWS{} } func (m *KubeAWS) String() string { return proto.CompactTextString(m) } func (*KubeAWS) ProtoMessage() {} func (*KubeAWS) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{173} + return fileDescriptor_9198ee693835762e, []int{175} } func (m *KubeAWS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10871,7 +10962,7 @@ func (m *KubeGCP) Reset() { *m = KubeGCP{} } func (m *KubeGCP) String() string { return proto.CompactTextString(m) } func (*KubeGCP) ProtoMessage() {} func (*KubeGCP) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{174} + return fileDescriptor_9198ee693835762e, []int{176} } func (m *KubeGCP) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10913,7 +11004,7 @@ func (m *KubernetesClusterV3List) Reset() { *m = KubernetesClusterV3List func (m *KubernetesClusterV3List) String() string { return proto.CompactTextString(m) } func (*KubernetesClusterV3List) ProtoMessage() {} func (*KubernetesClusterV3List) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{175} + return fileDescriptor_9198ee693835762e, []int{177} } func (m *KubernetesClusterV3List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10962,7 +11053,7 @@ type KubernetesServerV3 struct { func (m *KubernetesServerV3) Reset() { *m = KubernetesServerV3{} } func (*KubernetesServerV3) ProtoMessage() {} func (*KubernetesServerV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{176} + return fileDescriptor_9198ee693835762e, []int{178} } func (m *KubernetesServerV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11014,7 +11105,7 @@ func (m *KubernetesServerSpecV3) Reset() { *m = KubernetesServerSpecV3{} func (m *KubernetesServerSpecV3) String() string { return proto.CompactTextString(m) } func (*KubernetesServerSpecV3) ProtoMessage() {} func (*KubernetesServerSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{177} + return fileDescriptor_9198ee693835762e, []int{179} } func (m *KubernetesServerSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11066,7 +11157,7 @@ type WebTokenV3 struct { func (m *WebTokenV3) Reset() { *m = WebTokenV3{} } func (*WebTokenV3) ProtoMessage() {} func (*WebTokenV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{178} + return fileDescriptor_9198ee693835762e, []int{180} } func (m *WebTokenV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11110,7 +11201,7 @@ func (m *WebTokenSpecV3) Reset() { *m = WebTokenSpecV3{} } func (m *WebTokenSpecV3) String() string { return proto.CompactTextString(m) } func (*WebTokenSpecV3) ProtoMessage() {} func (*WebTokenSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{179} + return fileDescriptor_9198ee693835762e, []int{181} } func (m *WebTokenSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11154,7 +11245,7 @@ func (m *GetWebSessionRequest) Reset() { *m = GetWebSessionRequest{} } func (m *GetWebSessionRequest) String() string { return proto.CompactTextString(m) } func (*GetWebSessionRequest) ProtoMessage() {} func (*GetWebSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{180} + return fileDescriptor_9198ee693835762e, []int{182} } func (m *GetWebSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11198,7 +11289,7 @@ func (m *DeleteWebSessionRequest) Reset() { *m = DeleteWebSessionRequest func (m *DeleteWebSessionRequest) String() string { return proto.CompactTextString(m) } func (*DeleteWebSessionRequest) ProtoMessage() {} func (*DeleteWebSessionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{181} + return fileDescriptor_9198ee693835762e, []int{183} } func (m *DeleteWebSessionRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11242,7 +11333,7 @@ func (m *GetWebTokenRequest) Reset() { *m = GetWebTokenRequest{} } func (m *GetWebTokenRequest) String() string { return proto.CompactTextString(m) } func (*GetWebTokenRequest) ProtoMessage() {} func (*GetWebTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{182} + return fileDescriptor_9198ee693835762e, []int{184} } func (m *GetWebTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11286,7 +11377,7 @@ func (m *DeleteWebTokenRequest) Reset() { *m = DeleteWebTokenRequest{} } func (m *DeleteWebTokenRequest) String() string { return proto.CompactTextString(m) } func (*DeleteWebTokenRequest) ProtoMessage() {} func (*DeleteWebTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{183} + return fileDescriptor_9198ee693835762e, []int{185} } func (m *DeleteWebTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11328,7 +11419,7 @@ func (m *ResourceRequest) Reset() { *m = ResourceRequest{} } func (m *ResourceRequest) String() string { return proto.CompactTextString(m) } func (*ResourceRequest) ProtoMessage() {} func (*ResourceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{184} + return fileDescriptor_9198ee693835762e, []int{186} } func (m *ResourceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11372,7 +11463,7 @@ func (m *ResourceWithSecretsRequest) Reset() { *m = ResourceWithSecretsR func (m *ResourceWithSecretsRequest) String() string { return proto.CompactTextString(m) } func (*ResourceWithSecretsRequest) ProtoMessage() {} func (*ResourceWithSecretsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{185} + return fileDescriptor_9198ee693835762e, []int{187} } func (m *ResourceWithSecretsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11414,7 +11505,7 @@ func (m *ResourcesWithSecretsRequest) Reset() { *m = ResourcesWithSecret func (m *ResourcesWithSecretsRequest) String() string { return proto.CompactTextString(m) } func (*ResourcesWithSecretsRequest) ProtoMessage() {} func (*ResourcesWithSecretsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{186} + return fileDescriptor_9198ee693835762e, []int{188} } func (m *ResourcesWithSecretsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11458,7 +11549,7 @@ func (m *ResourceInNamespaceRequest) Reset() { *m = ResourceInNamespaceR func (m *ResourceInNamespaceRequest) String() string { return proto.CompactTextString(m) } func (*ResourceInNamespaceRequest) ProtoMessage() {} func (*ResourceInNamespaceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{187} + return fileDescriptor_9198ee693835762e, []int{189} } func (m *ResourceInNamespaceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11500,7 +11591,7 @@ func (m *ResourcesInNamespaceRequest) Reset() { *m = ResourcesInNamespac func (m *ResourcesInNamespaceRequest) String() string { return proto.CompactTextString(m) } func (*ResourcesInNamespaceRequest) ProtoMessage() {} func (*ResourcesInNamespaceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{188} + return fileDescriptor_9198ee693835762e, []int{190} } func (m *ResourcesInNamespaceRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11551,7 +11642,7 @@ func (m *OIDCConnectorV3) Reset() { *m = OIDCConnectorV3{} } func (m *OIDCConnectorV3) String() string { return proto.CompactTextString(m) } func (*OIDCConnectorV3) ProtoMessage() {} func (*OIDCConnectorV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{189} + return fileDescriptor_9198ee693835762e, []int{191} } func (m *OIDCConnectorV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11593,7 +11684,7 @@ func (m *OIDCConnectorV3List) Reset() { *m = OIDCConnectorV3List{} } func (m *OIDCConnectorV3List) String() string { return proto.CompactTextString(m) } func (*OIDCConnectorV3List) ProtoMessage() {} func (*OIDCConnectorV3List) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{190} + return fileDescriptor_9198ee693835762e, []int{192} } func (m *OIDCConnectorV3List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11679,7 +11770,7 @@ func (m *OIDCConnectorSpecV3) Reset() { *m = OIDCConnectorSpecV3{} } func (m *OIDCConnectorSpecV3) String() string { return proto.CompactTextString(m) } func (*OIDCConnectorSpecV3) ProtoMessage() {} func (*OIDCConnectorSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{191} + return fileDescriptor_9198ee693835762e, []int{193} } func (m *OIDCConnectorSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11721,7 +11812,7 @@ func (m *MaxAge) Reset() { *m = MaxAge{} } func (m *MaxAge) String() string { return proto.CompactTextString(m) } func (*MaxAge) ProtoMessage() {} func (*MaxAge) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{192} + return fileDescriptor_9198ee693835762e, []int{194} } func (m *MaxAge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11766,7 +11857,7 @@ func (m *SSOClientRedirectSettings) Reset() { *m = SSOClientRedirectSett func (m *SSOClientRedirectSettings) String() string { return proto.CompactTextString(m) } func (*SSOClientRedirectSettings) ProtoMessage() {} func (*SSOClientRedirectSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{193} + return fileDescriptor_9198ee693835762e, []int{195} } func (m *SSOClientRedirectSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11868,7 +11959,7 @@ func (m *OIDCAuthRequest) Reset() { *m = OIDCAuthRequest{} } func (m *OIDCAuthRequest) String() string { return proto.CompactTextString(m) } func (*OIDCAuthRequest) ProtoMessage() {} func (*OIDCAuthRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{194} + return fileDescriptor_9198ee693835762e, []int{196} } func (m *OIDCAuthRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11919,7 +12010,7 @@ func (m *SAMLConnectorV2) Reset() { *m = SAMLConnectorV2{} } func (m *SAMLConnectorV2) String() string { return proto.CompactTextString(m) } func (*SAMLConnectorV2) ProtoMessage() {} func (*SAMLConnectorV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{195} + return fileDescriptor_9198ee693835762e, []int{197} } func (m *SAMLConnectorV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -11961,7 +12052,7 @@ func (m *SAMLConnectorV2List) Reset() { *m = SAMLConnectorV2List{} } func (m *SAMLConnectorV2List) String() string { return proto.CompactTextString(m) } func (*SAMLConnectorV2List) ProtoMessage() {} func (*SAMLConnectorV2List) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{196} + return fileDescriptor_9198ee693835762e, []int{198} } func (m *SAMLConnectorV2List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12038,7 +12129,7 @@ func (m *SAMLConnectorSpecV2) Reset() { *m = SAMLConnectorSpecV2{} } func (m *SAMLConnectorSpecV2) String() string { return proto.CompactTextString(m) } func (*SAMLConnectorSpecV2) ProtoMessage() {} func (*SAMLConnectorSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{197} + return fileDescriptor_9198ee693835762e, []int{199} } func (m *SAMLConnectorSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12134,7 +12225,7 @@ func (m *SAMLAuthRequest) Reset() { *m = SAMLAuthRequest{} } func (m *SAMLAuthRequest) String() string { return proto.CompactTextString(m) } func (*SAMLAuthRequest) ProtoMessage() {} func (*SAMLAuthRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{198} + return fileDescriptor_9198ee693835762e, []int{200} } func (m *SAMLAuthRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12180,7 +12271,7 @@ func (m *AttributeMapping) Reset() { *m = AttributeMapping{} } func (m *AttributeMapping) String() string { return proto.CompactTextString(m) } func (*AttributeMapping) ProtoMessage() {} func (*AttributeMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{199} + return fileDescriptor_9198ee693835762e, []int{201} } func (m *AttributeMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12225,7 +12316,7 @@ func (m *AsymmetricKeyPair) Reset() { *m = AsymmetricKeyPair{} } func (m *AsymmetricKeyPair) String() string { return proto.CompactTextString(m) } func (*AsymmetricKeyPair) ProtoMessage() {} func (*AsymmetricKeyPair) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{200} + return fileDescriptor_9198ee693835762e, []int{202} } func (m *AsymmetricKeyPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12276,7 +12367,7 @@ func (m *GithubConnectorV3) Reset() { *m = GithubConnectorV3{} } func (m *GithubConnectorV3) String() string { return proto.CompactTextString(m) } func (*GithubConnectorV3) ProtoMessage() {} func (*GithubConnectorV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{201} + return fileDescriptor_9198ee693835762e, []int{203} } func (m *GithubConnectorV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12318,7 +12409,7 @@ func (m *GithubConnectorV3List) Reset() { *m = GithubConnectorV3List{} } func (m *GithubConnectorV3List) String() string { return proto.CompactTextString(m) } func (*GithubConnectorV3List) ProtoMessage() {} func (*GithubConnectorV3List) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{202} + return fileDescriptor_9198ee693835762e, []int{204} } func (m *GithubConnectorV3List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12381,7 +12472,7 @@ func (m *GithubConnectorSpecV3) Reset() { *m = GithubConnectorSpecV3{} } func (m *GithubConnectorSpecV3) String() string { return proto.CompactTextString(m) } func (*GithubConnectorSpecV3) ProtoMessage() {} func (*GithubConnectorSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{203} + return fileDescriptor_9198ee693835762e, []int{205} } func (m *GithubConnectorSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12465,16 +12556,20 @@ type GithubAuthRequest struct { SshAttestationStatement *v1.AttestationStatement `protobuf:"bytes,21,opt,name=ssh_attestation_statement,json=sshAttestationStatement,proto3" json:"ssh_attestation_statement,omitempty"` // TlsAttestationStatement is an attestation statement for the given TLS public key. TlsAttestationStatement *v1.AttestationStatement `protobuf:"bytes,22,opt,name=tls_attestation_statement,json=tlsAttestationStatement,proto3" json:"tls_attestation_statement,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + // AuthenticatedUser is the username of an authenticated Teleport user. This + // OAuth flow is used to retrieve GitHub identity info which will be added to + // the existing user. + AuthenticatedUser string `protobuf:"bytes,23,opt,name=authenticated_user,json=authenticatedUser,proto3" json:"authenticated_user,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *GithubAuthRequest) Reset() { *m = GithubAuthRequest{} } func (m *GithubAuthRequest) String() string { return proto.CompactTextString(m) } func (*GithubAuthRequest) ProtoMessage() {} func (*GithubAuthRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{204} + return fileDescriptor_9198ee693835762e, []int{206} } func (m *GithubAuthRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12518,7 +12613,7 @@ func (m *SSOWarnings) Reset() { *m = SSOWarnings{} } func (m *SSOWarnings) String() string { return proto.CompactTextString(m) } func (*SSOWarnings) ProtoMessage() {} func (*SSOWarnings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{205} + return fileDescriptor_9198ee693835762e, []int{207} } func (m *SSOWarnings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12564,7 +12659,10 @@ type CreateUserParams struct { // Traits is the set of traits the user is assigned. Traits github_com_gravitational_teleport_api_types_wrappers.Traits `protobuf:"bytes,7,opt,name=Traits,proto3,customtype=github.com/gravitational/teleport/api/types/wrappers.Traits" json:"traits,omitempty"` // SessionTTL determines the TTL. - SessionTTL Duration `protobuf:"varint,8,opt,name=SessionTTL,proto3,casttype=Duration" json:"session_ttl,omitempty"` + SessionTTL Duration `protobuf:"varint,8,opt,name=SessionTTL,proto3,casttype=Duration" json:"session_ttl,omitempty"` + // UserID is the ID of the identity. Some connectors like GitHub have an + // unique ID apart from the username. + UserID string `protobuf:"bytes,9,opt,name=UserID,proto3" json:"user_id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -12574,7 +12672,7 @@ func (m *CreateUserParams) Reset() { *m = CreateUserParams{} } func (m *CreateUserParams) String() string { return proto.CompactTextString(m) } func (*CreateUserParams) ProtoMessage() {} func (*CreateUserParams) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{206} + return fileDescriptor_9198ee693835762e, []int{208} } func (m *CreateUserParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12659,7 +12757,7 @@ func (m *SSODiagnosticInfo) Reset() { *m = SSODiagnosticInfo{} } func (m *SSODiagnosticInfo) String() string { return proto.CompactTextString(m) } func (*SSODiagnosticInfo) ProtoMessage() {} func (*SSODiagnosticInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{207} + return fileDescriptor_9198ee693835762e, []int{209} } func (m *SSODiagnosticInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12703,7 +12801,7 @@ func (m *GithubTokenInfo) Reset() { *m = GithubTokenInfo{} } func (m *GithubTokenInfo) String() string { return proto.CompactTextString(m) } func (*GithubTokenInfo) ProtoMessage() {} func (*GithubTokenInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{208} + return fileDescriptor_9198ee693835762e, []int{210} } func (m *GithubTokenInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12739,7 +12837,11 @@ type GithubClaims struct { // OrganizationToTeams is the user's organization and team membership OrganizationToTeams github_com_gravitational_teleport_api_types_wrappers.Traits `protobuf:"bytes,2,opt,name=OrganizationToTeams,proto3,customtype=github.com/gravitational/teleport/api/types/wrappers.Traits" json:"organization_to_teams"` // Teams is the users team membership - Teams []string `protobuf:"bytes,3,rep,name=Teams,proto3" json:"teams"` + Teams []string `protobuf:"bytes,3,rep,name=Teams,proto3" json:"teams"` + // ID is a global unique integer that is assigned to each GitHub user. The ID + // is immutable (unlike the GitHub username) and can be found in APIs like + // get user. + ID string `protobuf:"bytes,4,opt,name=ID,proto3" json:"user_id,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -12749,7 +12851,7 @@ func (m *GithubClaims) Reset() { *m = GithubClaims{} } func (m *GithubClaims) String() string { return proto.CompactTextString(m) } func (*GithubClaims) ProtoMessage() {} func (*GithubClaims) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{209} + return fileDescriptor_9198ee693835762e, []int{211} } func (m *GithubClaims) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12801,7 +12903,7 @@ func (m *TeamMapping) Reset() { *m = TeamMapping{} } func (m *TeamMapping) String() string { return proto.CompactTextString(m) } func (*TeamMapping) ProtoMessage() {} func (*TeamMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{210} + return fileDescriptor_9198ee693835762e, []int{212} } func (m *TeamMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12847,7 +12949,7 @@ func (m *TeamRolesMapping) Reset() { *m = TeamRolesMapping{} } func (m *TeamRolesMapping) String() string { return proto.CompactTextString(m) } func (*TeamRolesMapping) ProtoMessage() {} func (*TeamRolesMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{211} + return fileDescriptor_9198ee693835762e, []int{213} } func (m *TeamRolesMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12897,7 +12999,7 @@ type TrustedClusterV2 struct { func (m *TrustedClusterV2) Reset() { *m = TrustedClusterV2{} } func (*TrustedClusterV2) ProtoMessage() {} func (*TrustedClusterV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{212} + return fileDescriptor_9198ee693835762e, []int{214} } func (m *TrustedClusterV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12939,7 +13041,7 @@ func (m *TrustedClusterV2List) Reset() { *m = TrustedClusterV2List{} } func (m *TrustedClusterV2List) String() string { return proto.CompactTextString(m) } func (*TrustedClusterV2List) ProtoMessage() {} func (*TrustedClusterV2List) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{213} + return fileDescriptor_9198ee693835762e, []int{215} } func (m *TrustedClusterV2List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -12995,7 +13097,7 @@ func (m *TrustedClusterSpecV2) Reset() { *m = TrustedClusterSpecV2{} } func (m *TrustedClusterSpecV2) String() string { return proto.CompactTextString(m) } func (*TrustedClusterSpecV2) ProtoMessage() {} func (*TrustedClusterSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{214} + return fileDescriptor_9198ee693835762e, []int{216} } func (m *TrustedClusterSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13049,7 +13151,7 @@ func (m *LockV2) Reset() { *m = LockV2{} } func (m *LockV2) String() string { return proto.CompactTextString(m) } func (*LockV2) ProtoMessage() {} func (*LockV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{215} + return fileDescriptor_9198ee693835762e, []int{217} } func (m *LockV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13099,7 +13201,7 @@ func (m *LockSpecV2) Reset() { *m = LockSpecV2{} } func (m *LockSpecV2) String() string { return proto.CompactTextString(m) } func (*LockSpecV2) ProtoMessage() {} func (*LockSpecV2) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{216} + return fileDescriptor_9198ee693835762e, []int{218} } func (m *LockSpecV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13160,7 +13262,7 @@ type LockTarget struct { func (m *LockTarget) Reset() { *m = LockTarget{} } func (*LockTarget) ProtoMessage() {} func (*LockTarget) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{217} + return fileDescriptor_9198ee693835762e, []int{219} } func (m *LockTarget) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13204,7 +13306,7 @@ func (m *AddressCondition) Reset() { *m = AddressCondition{} } func (m *AddressCondition) String() string { return proto.CompactTextString(m) } func (*AddressCondition) ProtoMessage() {} func (*AddressCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{218} + return fileDescriptor_9198ee693835762e, []int{220} } func (m *AddressCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13247,7 +13349,7 @@ func (m *NetworkRestrictionsSpecV4) Reset() { *m = NetworkRestrictionsSp func (m *NetworkRestrictionsSpecV4) String() string { return proto.CompactTextString(m) } func (*NetworkRestrictionsSpecV4) ProtoMessage() {} func (*NetworkRestrictionsSpecV4) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{219} + return fileDescriptor_9198ee693835762e, []int{221} } func (m *NetworkRestrictionsSpecV4) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13300,7 +13402,7 @@ func (m *NetworkRestrictionsV4) Reset() { *m = NetworkRestrictionsV4{} } func (m *NetworkRestrictionsV4) String() string { return proto.CompactTextString(m) } func (*NetworkRestrictionsV4) ProtoMessage() {} func (*NetworkRestrictionsV4) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{220} + return fileDescriptor_9198ee693835762e, []int{222} } func (m *NetworkRestrictionsV4) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13344,7 +13446,7 @@ func (m *WindowsDesktopServiceV3) Reset() { *m = WindowsDesktopServiceV3 func (m *WindowsDesktopServiceV3) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopServiceV3) ProtoMessage() {} func (*WindowsDesktopServiceV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{221} + return fileDescriptor_9198ee693835762e, []int{223} } func (m *WindowsDesktopServiceV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13392,7 +13494,7 @@ func (m *WindowsDesktopServiceSpecV3) Reset() { *m = WindowsDesktopServi func (m *WindowsDesktopServiceSpecV3) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopServiceSpecV3) ProtoMessage() {} func (*WindowsDesktopServiceSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{222} + return fileDescriptor_9198ee693835762e, []int{224} } func (m *WindowsDesktopServiceSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13436,7 +13538,7 @@ func (m *WindowsDesktopFilter) Reset() { *m = WindowsDesktopFilter{} } func (m *WindowsDesktopFilter) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopFilter) ProtoMessage() {} func (*WindowsDesktopFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{223} + return fileDescriptor_9198ee693835762e, []int{225} } func (m *WindowsDesktopFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13480,7 +13582,7 @@ func (m *WindowsDesktopV3) Reset() { *m = WindowsDesktopV3{} } func (m *WindowsDesktopV3) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopV3) ProtoMessage() {} func (*WindowsDesktopV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{224} + return fileDescriptor_9198ee693835762e, []int{226} } func (m *WindowsDesktopV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13533,7 +13635,7 @@ func (m *WindowsDesktopSpecV3) Reset() { *m = WindowsDesktopSpecV3{} } func (m *WindowsDesktopSpecV3) String() string { return proto.CompactTextString(m) } func (*WindowsDesktopSpecV3) ProtoMessage() {} func (*WindowsDesktopSpecV3) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{225} + return fileDescriptor_9198ee693835762e, []int{227} } func (m *WindowsDesktopSpecV3) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13574,7 +13676,7 @@ func (m *Resolution) Reset() { *m = Resolution{} } func (m *Resolution) String() string { return proto.CompactTextString(m) } func (*Resolution) ProtoMessage() {} func (*Resolution) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{226} + return fileDescriptor_9198ee693835762e, []int{228} } func (m *Resolution) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13657,7 +13759,7 @@ func (m *RegisterUsingTokenRequest) Reset() { *m = RegisterUsingTokenReq func (m *RegisterUsingTokenRequest) String() string { return proto.CompactTextString(m) } func (*RegisterUsingTokenRequest) ProtoMessage() {} func (*RegisterUsingTokenRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{227} + return fileDescriptor_9198ee693835762e, []int{229} } func (m *RegisterUsingTokenRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13711,7 +13813,7 @@ func (m *RecoveryCodesV1) Reset() { *m = RecoveryCodesV1{} } func (m *RecoveryCodesV1) String() string { return proto.CompactTextString(m) } func (*RecoveryCodesV1) ProtoMessage() {} func (*RecoveryCodesV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{228} + return fileDescriptor_9198ee693835762e, []int{230} } func (m *RecoveryCodesV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13756,7 +13858,7 @@ func (m *RecoveryCodesSpecV1) Reset() { *m = RecoveryCodesSpecV1{} } func (m *RecoveryCodesSpecV1) String() string { return proto.CompactTextString(m) } func (*RecoveryCodesSpecV1) ProtoMessage() {} func (*RecoveryCodesSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{229} + return fileDescriptor_9198ee693835762e, []int{231} } func (m *RecoveryCodesSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13800,7 +13902,7 @@ func (m *RecoveryCode) Reset() { *m = RecoveryCode{} } func (m *RecoveryCode) String() string { return proto.CompactTextString(m) } func (*RecoveryCode) ProtoMessage() {} func (*RecoveryCode) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{230} + return fileDescriptor_9198ee693835762e, []int{232} } func (m *RecoveryCode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13840,7 +13942,7 @@ func (m *NullableSessionState) Reset() { *m = NullableSessionState{} } func (m *NullableSessionState) String() string { return proto.CompactTextString(m) } func (*NullableSessionState) ProtoMessage() {} func (*NullableSessionState) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{231} + return fileDescriptor_9198ee693835762e, []int{233} } func (m *NullableSessionState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13886,7 +13988,7 @@ func (m *SessionTrackerFilter) Reset() { *m = SessionTrackerFilter{} } func (m *SessionTrackerFilter) String() string { return proto.CompactTextString(m) } func (*SessionTrackerFilter) ProtoMessage() {} func (*SessionTrackerFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{232} + return fileDescriptor_9198ee693835762e, []int{234} } func (m *SessionTrackerFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -13930,7 +14032,7 @@ func (m *SessionTrackerV1) Reset() { *m = SessionTrackerV1{} } func (m *SessionTrackerV1) String() string { return proto.CompactTextString(m) } func (*SessionTrackerV1) ProtoMessage() {} func (*SessionTrackerV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{233} + return fileDescriptor_9198ee693835762e, []int{235} } func (m *SessionTrackerV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14028,7 +14130,7 @@ func (m *SessionTrackerSpecV1) Reset() { *m = SessionTrackerSpecV1{} } func (m *SessionTrackerSpecV1) String() string { return proto.CompactTextString(m) } func (*SessionTrackerSpecV1) ProtoMessage() {} func (*SessionTrackerSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{234} + return fileDescriptor_9198ee693835762e, []int{236} } func (m *SessionTrackerSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14075,7 +14177,7 @@ func (m *SessionTrackerPolicySet) Reset() { *m = SessionTrackerPolicySet func (m *SessionTrackerPolicySet) String() string { return proto.CompactTextString(m) } func (*SessionTrackerPolicySet) ProtoMessage() {} func (*SessionTrackerPolicySet) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{235} + return fileDescriptor_9198ee693835762e, []int{237} } func (m *SessionTrackerPolicySet) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14123,7 +14225,7 @@ func (m *Participant) Reset() { *m = Participant{} } func (m *Participant) String() string { return proto.CompactTextString(m) } func (*Participant) ProtoMessage() {} func (*Participant) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{236} + return fileDescriptor_9198ee693835762e, []int{238} } func (m *Participant) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14167,7 +14269,7 @@ func (m *UIConfigV1) Reset() { *m = UIConfigV1{} } func (m *UIConfigV1) String() string { return proto.CompactTextString(m) } func (*UIConfigV1) ProtoMessage() {} func (*UIConfigV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{237} + return fileDescriptor_9198ee693835762e, []int{239} } func (m *UIConfigV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14213,7 +14315,7 @@ func (m *UIConfigSpecV1) Reset() { *m = UIConfigSpecV1{} } func (m *UIConfigSpecV1) String() string { return proto.CompactTextString(m) } func (*UIConfigSpecV1) ProtoMessage() {} func (*UIConfigSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{238} + return fileDescriptor_9198ee693835762e, []int{240} } func (m *UIConfigSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14264,7 +14366,7 @@ func (m *InstallerV1) Reset() { *m = InstallerV1{} } func (m *InstallerV1) String() string { return proto.CompactTextString(m) } func (*InstallerV1) ProtoMessage() {} func (*InstallerV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{239} + return fileDescriptor_9198ee693835762e, []int{241} } func (m *InstallerV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14306,7 +14408,7 @@ func (m *InstallerSpecV1) Reset() { *m = InstallerSpecV1{} } func (m *InstallerSpecV1) String() string { return proto.CompactTextString(m) } func (*InstallerSpecV1) ProtoMessage() {} func (*InstallerSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{240} + return fileDescriptor_9198ee693835762e, []int{242} } func (m *InstallerSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14348,7 +14450,7 @@ func (m *InstallerV1List) Reset() { *m = InstallerV1List{} } func (m *InstallerV1List) String() string { return proto.CompactTextString(m) } func (*InstallerV1List) ProtoMessage() {} func (*InstallerV1List) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{241} + return fileDescriptor_9198ee693835762e, []int{243} } func (m *InstallerV1List) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14392,7 +14494,7 @@ func (m *SortBy) Reset() { *m = SortBy{} } func (m *SortBy) String() string { return proto.CompactTextString(m) } func (*SortBy) ProtoMessage() {} func (*SortBy) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{242} + return fileDescriptor_9198ee693835762e, []int{244} } func (m *SortBy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14438,7 +14540,7 @@ func (m *ConnectionDiagnosticV1) Reset() { *m = ConnectionDiagnosticV1{} func (m *ConnectionDiagnosticV1) String() string { return proto.CompactTextString(m) } func (*ConnectionDiagnosticV1) ProtoMessage() {} func (*ConnectionDiagnosticV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{243} + return fileDescriptor_9198ee693835762e, []int{245} } func (m *ConnectionDiagnosticV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14488,7 +14590,7 @@ func (m *ConnectionDiagnosticSpecV1) Reset() { *m = ConnectionDiagnostic func (m *ConnectionDiagnosticSpecV1) String() string { return proto.CompactTextString(m) } func (*ConnectionDiagnosticSpecV1) ProtoMessage() {} func (*ConnectionDiagnosticSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{244} + return fileDescriptor_9198ee693835762e, []int{246} } func (m *ConnectionDiagnosticSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14534,7 +14636,7 @@ func (m *ConnectionDiagnosticTrace) Reset() { *m = ConnectionDiagnosticT func (m *ConnectionDiagnosticTrace) String() string { return proto.CompactTextString(m) } func (*ConnectionDiagnosticTrace) ProtoMessage() {} func (*ConnectionDiagnosticTrace) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{245} + return fileDescriptor_9198ee693835762e, []int{247} } func (m *ConnectionDiagnosticTrace) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14577,7 +14679,7 @@ func (m *DatabaseServiceV1) Reset() { *m = DatabaseServiceV1{} } func (m *DatabaseServiceV1) String() string { return proto.CompactTextString(m) } func (*DatabaseServiceV1) ProtoMessage() {} func (*DatabaseServiceV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{246} + return fileDescriptor_9198ee693835762e, []int{248} } func (m *DatabaseServiceV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14621,7 +14723,7 @@ func (m *DatabaseServiceSpecV1) Reset() { *m = DatabaseServiceSpecV1{} } func (m *DatabaseServiceSpecV1) String() string { return proto.CompactTextString(m) } func (*DatabaseServiceSpecV1) ProtoMessage() {} func (*DatabaseServiceSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{247} + return fileDescriptor_9198ee693835762e, []int{249} } func (m *DatabaseServiceSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14663,7 +14765,7 @@ func (m *DatabaseResourceMatcher) Reset() { *m = DatabaseResourceMatcher func (m *DatabaseResourceMatcher) String() string { return proto.CompactTextString(m) } func (*DatabaseResourceMatcher) ProtoMessage() {} func (*DatabaseResourceMatcher) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{248} + return fileDescriptor_9198ee693835762e, []int{250} } func (m *DatabaseResourceMatcher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14707,7 +14809,7 @@ func (m *ResourceMatcherAWS) Reset() { *m = ResourceMatcherAWS{} } func (m *ResourceMatcherAWS) String() string { return proto.CompactTextString(m) } func (*ResourceMatcherAWS) ProtoMessage() {} func (*ResourceMatcherAWS) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{249} + return fileDescriptor_9198ee693835762e, []int{251} } func (m *ResourceMatcherAWS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14749,7 +14851,7 @@ func (m *ClusterAlert) Reset() { *m = ClusterAlert{} } func (m *ClusterAlert) String() string { return proto.CompactTextString(m) } func (*ClusterAlert) ProtoMessage() {} func (*ClusterAlert) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{250} + return fileDescriptor_9198ee693835762e, []int{252} } func (m *ClusterAlert) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14795,7 +14897,7 @@ func (m *ClusterAlertSpec) Reset() { *m = ClusterAlertSpec{} } func (m *ClusterAlertSpec) String() string { return proto.CompactTextString(m) } func (*ClusterAlertSpec) ProtoMessage() {} func (*ClusterAlertSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{251} + return fileDescriptor_9198ee693835762e, []int{253} } func (m *ClusterAlertSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14848,7 +14950,7 @@ func (m *GetClusterAlertsRequest) Reset() { *m = GetClusterAlertsRequest func (m *GetClusterAlertsRequest) String() string { return proto.CompactTextString(m) } func (*GetClusterAlertsRequest) ProtoMessage() {} func (*GetClusterAlertsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{252} + return fileDescriptor_9198ee693835762e, []int{254} } func (m *GetClusterAlertsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14898,7 +15000,7 @@ func (m *AlertAcknowledgement) Reset() { *m = AlertAcknowledgement{} } func (m *AlertAcknowledgement) String() string { return proto.CompactTextString(m) } func (*AlertAcknowledgement) ProtoMessage() {} func (*AlertAcknowledgement) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{253} + return fileDescriptor_9198ee693835762e, []int{255} } func (m *AlertAcknowledgement) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -14950,7 +15052,7 @@ func (m *Release) Reset() { *m = Release{} } func (m *Release) String() string { return proto.CompactTextString(m) } func (*Release) ProtoMessage() {} func (*Release) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{254} + return fileDescriptor_9198ee693835762e, []int{256} } func (m *Release) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15008,7 +15110,7 @@ func (m *Asset) Reset() { *m = Asset{} } func (m *Asset) String() string { return proto.CompactTextString(m) } func (*Asset) ProtoMessage() {} func (*Asset) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{255} + return fileDescriptor_9198ee693835762e, []int{257} } func (m *Asset) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15061,7 +15163,7 @@ func (m *PluginV1) Reset() { *m = PluginV1{} } func (m *PluginV1) String() string { return proto.CompactTextString(m) } func (*PluginV1) ProtoMessage() {} func (*PluginV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{256} + return fileDescriptor_9198ee693835762e, []int{258} } func (m *PluginV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15124,7 +15226,7 @@ func (m *PluginSpecV1) Reset() { *m = PluginSpecV1{} } func (m *PluginSpecV1) String() string { return proto.CompactTextString(m) } func (*PluginSpecV1) ProtoMessage() {} func (*PluginSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{257} + return fileDescriptor_9198ee693835762e, []int{259} } func (m *PluginSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15342,7 +15444,7 @@ func (m *PluginSlackAccessSettings) Reset() { *m = PluginSlackAccessSett func (m *PluginSlackAccessSettings) String() string { return proto.CompactTextString(m) } func (*PluginSlackAccessSettings) ProtoMessage() {} func (*PluginSlackAccessSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{258} + return fileDescriptor_9198ee693835762e, []int{260} } func (m *PluginSlackAccessSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15383,7 +15485,7 @@ func (m *PluginGitlabSettings) Reset() { *m = PluginGitlabSettings{} } func (m *PluginGitlabSettings) String() string { return proto.CompactTextString(m) } func (*PluginGitlabSettings) ProtoMessage() {} func (*PluginGitlabSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{259} + return fileDescriptor_9198ee693835762e, []int{261} } func (m *PluginGitlabSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15430,7 +15532,7 @@ func (m *PluginOpsgenieAccessSettings) Reset() { *m = PluginOpsgenieAcce func (m *PluginOpsgenieAccessSettings) String() string { return proto.CompactTextString(m) } func (*PluginOpsgenieAccessSettings) ProtoMessage() {} func (*PluginOpsgenieAccessSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{260} + return fileDescriptor_9198ee693835762e, []int{262} } func (m *PluginOpsgenieAccessSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15478,7 +15580,7 @@ func (m *PluginServiceNowSettings) Reset() { *m = PluginServiceNowSettin func (m *PluginServiceNowSettings) String() string { return proto.CompactTextString(m) } func (*PluginServiceNowSettings) ProtoMessage() {} func (*PluginServiceNowSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{261} + return fileDescriptor_9198ee693835762e, []int{263} } func (m *PluginServiceNowSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15524,7 +15626,7 @@ func (m *PluginPagerDutySettings) Reset() { *m = PluginPagerDutySettings func (m *PluginPagerDutySettings) String() string { return proto.CompactTextString(m) } func (*PluginPagerDutySettings) ProtoMessage() {} func (*PluginPagerDutySettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{262} + return fileDescriptor_9198ee693835762e, []int{264} } func (m *PluginPagerDutySettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15570,7 +15672,7 @@ func (m *PluginJiraSettings) Reset() { *m = PluginJiraSettings{} } func (m *PluginJiraSettings) String() string { return proto.CompactTextString(m) } func (*PluginJiraSettings) ProtoMessage() {} func (*PluginJiraSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{263} + return fileDescriptor_9198ee693835762e, []int{265} } func (m *PluginJiraSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15610,7 +15712,7 @@ func (m *PluginOpenAISettings) Reset() { *m = PluginOpenAISettings{} } func (m *PluginOpenAISettings) String() string { return proto.CompactTextString(m) } func (*PluginOpenAISettings) ProtoMessage() {} func (*PluginOpenAISettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{264} + return fileDescriptor_9198ee693835762e, []int{266} } func (m *PluginOpenAISettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15661,7 +15763,7 @@ func (m *PluginMattermostSettings) Reset() { *m = PluginMattermostSettin func (m *PluginMattermostSettings) String() string { return proto.CompactTextString(m) } func (*PluginMattermostSettings) ProtoMessage() {} func (*PluginMattermostSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{265} + return fileDescriptor_9198ee693835762e, []int{267} } func (m *PluginMattermostSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15703,7 +15805,7 @@ func (m *PluginJamfSettings) Reset() { *m = PluginJamfSettings{} } func (m *PluginJamfSettings) String() string { return proto.CompactTextString(m) } func (*PluginJamfSettings) ProtoMessage() {} func (*PluginJamfSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{266} + return fileDescriptor_9198ee693835762e, []int{268} } func (m *PluginJamfSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15753,7 +15855,7 @@ func (m *PluginOktaSettings) Reset() { *m = PluginOktaSettings{} } func (m *PluginOktaSettings) String() string { return proto.CompactTextString(m) } func (*PluginOktaSettings) ProtoMessage() {} func (*PluginOktaSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{267} + return fileDescriptor_9198ee693835762e, []int{269} } func (m *PluginOktaSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15833,7 +15935,7 @@ func (m *PluginOktaSyncSettings) Reset() { *m = PluginOktaSyncSettings{} func (m *PluginOktaSyncSettings) String() string { return proto.CompactTextString(m) } func (*PluginOktaSyncSettings) ProtoMessage() {} func (*PluginOktaSyncSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{268} + return fileDescriptor_9198ee693835762e, []int{270} } func (m *PluginOktaSyncSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15874,7 +15976,7 @@ func (m *DiscordChannels) Reset() { *m = DiscordChannels{} } func (m *DiscordChannels) String() string { return proto.CompactTextString(m) } func (*DiscordChannels) ProtoMessage() {} func (*DiscordChannels) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{269} + return fileDescriptor_9198ee693835762e, []int{271} } func (m *DiscordChannels) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15918,7 +16020,7 @@ func (m *PluginDiscordSettings) Reset() { *m = PluginDiscordSettings{} } func (m *PluginDiscordSettings) String() string { return proto.CompactTextString(m) } func (*PluginDiscordSettings) ProtoMessage() {} func (*PluginDiscordSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{270} + return fileDescriptor_9198ee693835762e, []int{272} } func (m *PluginDiscordSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -15963,7 +16065,7 @@ func (m *PluginEntraIDSettings) Reset() { *m = PluginEntraIDSettings{} } func (m *PluginEntraIDSettings) String() string { return proto.CompactTextString(m) } func (*PluginEntraIDSettings) ProtoMessage() {} func (*PluginEntraIDSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{271} + return fileDescriptor_9198ee693835762e, []int{273} } func (m *PluginEntraIDSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16007,7 +16109,7 @@ func (m *PluginEntraIDSyncSettings) Reset() { *m = PluginEntraIDSyncSett func (m *PluginEntraIDSyncSettings) String() string { return proto.CompactTextString(m) } func (*PluginEntraIDSyncSettings) ProtoMessage() {} func (*PluginEntraIDSyncSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{272} + return fileDescriptor_9198ee693835762e, []int{274} } func (m *PluginEntraIDSyncSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16052,7 +16154,7 @@ func (m *PluginEntraIDAccessGraphSettings) Reset() { *m = PluginEntraIDA func (m *PluginEntraIDAccessGraphSettings) String() string { return proto.CompactTextString(m) } func (*PluginEntraIDAccessGraphSettings) ProtoMessage() {} func (*PluginEntraIDAccessGraphSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{273} + return fileDescriptor_9198ee693835762e, []int{275} } func (m *PluginEntraIDAccessGraphSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16098,7 +16200,7 @@ func (m *PluginEntraIDAppSSOSettings) Reset() { *m = PluginEntraIDAppSSO func (m *PluginEntraIDAppSSOSettings) String() string { return proto.CompactTextString(m) } func (*PluginEntraIDAppSSOSettings) ProtoMessage() {} func (*PluginEntraIDAppSSOSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{274} + return fileDescriptor_9198ee693835762e, []int{276} } func (m *PluginEntraIDAppSSOSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16144,7 +16246,7 @@ func (m *PluginSCIMSettings) Reset() { *m = PluginSCIMSettings{} } func (m *PluginSCIMSettings) String() string { return proto.CompactTextString(m) } func (*PluginSCIMSettings) ProtoMessage() {} func (*PluginSCIMSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{275} + return fileDescriptor_9198ee693835762e, []int{277} } func (m *PluginSCIMSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16189,7 +16291,7 @@ func (m *PluginBootstrapCredentialsV1) Reset() { *m = PluginBootstrapCre func (m *PluginBootstrapCredentialsV1) String() string { return proto.CompactTextString(m) } func (*PluginBootstrapCredentialsV1) ProtoMessage() {} func (*PluginBootstrapCredentialsV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{276} + return fileDescriptor_9198ee693835762e, []int{278} } func (m *PluginBootstrapCredentialsV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16289,7 +16391,7 @@ func (m *PluginIdSecretCredential) Reset() { *m = PluginIdSecretCredenti func (m *PluginIdSecretCredential) String() string { return proto.CompactTextString(m) } func (*PluginIdSecretCredential) ProtoMessage() {} func (*PluginIdSecretCredential) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{277} + return fileDescriptor_9198ee693835762e, []int{279} } func (m *PluginIdSecretCredential) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16332,7 +16434,7 @@ func (m *PluginOAuth2AuthorizationCodeCredentials) Reset() { func (m *PluginOAuth2AuthorizationCodeCredentials) String() string { return proto.CompactTextString(m) } func (*PluginOAuth2AuthorizationCodeCredentials) ProtoMessage() {} func (*PluginOAuth2AuthorizationCodeCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{278} + return fileDescriptor_9198ee693835762e, []int{280} } func (m *PluginOAuth2AuthorizationCodeCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16390,7 +16492,7 @@ func (m *PluginStatusV1) Reset() { *m = PluginStatusV1{} } func (m *PluginStatusV1) String() string { return proto.CompactTextString(m) } func (*PluginStatusV1) ProtoMessage() {} func (*PluginStatusV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{279} + return fileDescriptor_9198ee693835762e, []int{281} } func (m *PluginStatusV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16493,7 +16595,7 @@ func (m *PluginGitlabStatusV1) Reset() { *m = PluginGitlabStatusV1{} } func (m *PluginGitlabStatusV1) String() string { return proto.CompactTextString(m) } func (*PluginGitlabStatusV1) ProtoMessage() {} func (*PluginGitlabStatusV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{280} + return fileDescriptor_9198ee693835762e, []int{282} } func (m *PluginGitlabStatusV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16537,7 +16639,7 @@ func (m *PluginEntraIDStatusV1) Reset() { *m = PluginEntraIDStatusV1{} } func (m *PluginEntraIDStatusV1) String() string { return proto.CompactTextString(m) } func (*PluginEntraIDStatusV1) ProtoMessage() {} func (*PluginEntraIDStatusV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{281} + return fileDescriptor_9198ee693835762e, []int{283} } func (m *PluginEntraIDStatusV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16591,7 +16693,7 @@ func (m *PluginOktaStatusV1) Reset() { *m = PluginOktaStatusV1{} } func (m *PluginOktaStatusV1) String() string { return proto.CompactTextString(m) } func (*PluginOktaStatusV1) ProtoMessage() {} func (*PluginOktaStatusV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{282} + return fileDescriptor_9198ee693835762e, []int{284} } func (m *PluginOktaStatusV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16639,7 +16741,7 @@ func (m *PluginOktaStatusDetailsSSO) Reset() { *m = PluginOktaStatusDeta func (m *PluginOktaStatusDetailsSSO) String() string { return proto.CompactTextString(m) } func (*PluginOktaStatusDetailsSSO) ProtoMessage() {} func (*PluginOktaStatusDetailsSSO) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{283} + return fileDescriptor_9198ee693835762e, []int{285} } func (m *PluginOktaStatusDetailsSSO) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16696,7 +16798,7 @@ func (m *PluginOktaStatusDetailsAppGroupSync) Reset() { *m = PluginOktaS func (m *PluginOktaStatusDetailsAppGroupSync) String() string { return proto.CompactTextString(m) } func (*PluginOktaStatusDetailsAppGroupSync) ProtoMessage() {} func (*PluginOktaStatusDetailsAppGroupSync) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{284} + return fileDescriptor_9198ee693835762e, []int{286} } func (m *PluginOktaStatusDetailsAppGroupSync) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16750,7 +16852,7 @@ func (m *PluginOktaStatusDetailsUsersSync) Reset() { *m = PluginOktaStat func (m *PluginOktaStatusDetailsUsersSync) String() string { return proto.CompactTextString(m) } func (*PluginOktaStatusDetailsUsersSync) ProtoMessage() {} func (*PluginOktaStatusDetailsUsersSync) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{285} + return fileDescriptor_9198ee693835762e, []int{287} } func (m *PluginOktaStatusDetailsUsersSync) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16793,7 +16895,7 @@ func (m *PluginOktaStatusDetailsSCIM) Reset() { *m = PluginOktaStatusDet func (m *PluginOktaStatusDetailsSCIM) String() string { return proto.CompactTextString(m) } func (*PluginOktaStatusDetailsSCIM) ProtoMessage() {} func (*PluginOktaStatusDetailsSCIM) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{286} + return fileDescriptor_9198ee693835762e, []int{288} } func (m *PluginOktaStatusDetailsSCIM) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16855,7 +16957,7 @@ func (m *PluginOktaStatusDetailsAccessListsSync) Reset() { func (m *PluginOktaStatusDetailsAccessListsSync) String() string { return proto.CompactTextString(m) } func (*PluginOktaStatusDetailsAccessListsSync) ProtoMessage() {} func (*PluginOktaStatusDetailsAccessListsSync) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{287} + return fileDescriptor_9198ee693835762e, []int{289} } func (m *PluginOktaStatusDetailsAccessListsSync) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -16903,7 +17005,7 @@ func (m *PluginCredentialsV1) Reset() { *m = PluginCredentialsV1{} } func (m *PluginCredentialsV1) String() string { return proto.CompactTextString(m) } func (*PluginCredentialsV1) ProtoMessage() {} func (*PluginCredentialsV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{288} + return fileDescriptor_9198ee693835762e, []int{290} } func (m *PluginCredentialsV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17014,7 +17116,7 @@ func (m *PluginOAuth2AccessTokenCredentials) Reset() { *m = PluginOAuth2 func (m *PluginOAuth2AccessTokenCredentials) String() string { return proto.CompactTextString(m) } func (*PluginOAuth2AccessTokenCredentials) ProtoMessage() {} func (*PluginOAuth2AccessTokenCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{289} + return fileDescriptor_9198ee693835762e, []int{291} } func (m *PluginOAuth2AccessTokenCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17055,7 +17157,7 @@ func (m *PluginBearerTokenCredentials) Reset() { *m = PluginBearerTokenC func (m *PluginBearerTokenCredentials) String() string { return proto.CompactTextString(m) } func (*PluginBearerTokenCredentials) ProtoMessage() {} func (*PluginBearerTokenCredentials) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{290} + return fileDescriptor_9198ee693835762e, []int{292} } func (m *PluginBearerTokenCredentials) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17097,7 +17199,7 @@ func (m *PluginStaticCredentialsRef) Reset() { *m = PluginStaticCredenti func (m *PluginStaticCredentialsRef) String() string { return proto.CompactTextString(m) } func (*PluginStaticCredentialsRef) ProtoMessage() {} func (*PluginStaticCredentialsRef) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{291} + return fileDescriptor_9198ee693835762e, []int{293} } func (m *PluginStaticCredentialsRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17139,7 +17241,7 @@ func (m *PluginListV1) Reset() { *m = PluginListV1{} } func (m *PluginListV1) String() string { return proto.CompactTextString(m) } func (*PluginListV1) ProtoMessage() {} func (*PluginListV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{292} + return fileDescriptor_9198ee693835762e, []int{294} } func (m *PluginListV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17182,7 +17284,7 @@ type PluginStaticCredentialsV1 struct { func (m *PluginStaticCredentialsV1) Reset() { *m = PluginStaticCredentialsV1{} } func (*PluginStaticCredentialsV1) ProtoMessage() {} func (*PluginStaticCredentialsV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{293} + return fileDescriptor_9198ee693835762e, []int{295} } func (m *PluginStaticCredentialsV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17228,7 +17330,7 @@ func (m *PluginStaticCredentialsSpecV1) Reset() { *m = PluginStaticCrede func (m *PluginStaticCredentialsSpecV1) String() string { return proto.CompactTextString(m) } func (*PluginStaticCredentialsSpecV1) ProtoMessage() {} func (*PluginStaticCredentialsSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{294} + return fileDescriptor_9198ee693835762e, []int{296} } func (m *PluginStaticCredentialsSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17330,7 +17432,7 @@ func (m *PluginStaticCredentialsBasicAuth) Reset() { *m = PluginStaticCr func (m *PluginStaticCredentialsBasicAuth) String() string { return proto.CompactTextString(m) } func (*PluginStaticCredentialsBasicAuth) ProtoMessage() {} func (*PluginStaticCredentialsBasicAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{295} + return fileDescriptor_9198ee693835762e, []int{297} } func (m *PluginStaticCredentialsBasicAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17376,7 +17478,7 @@ func (m *PluginStaticCredentialsOAuthClientSecret) Reset() { func (m *PluginStaticCredentialsOAuthClientSecret) String() string { return proto.CompactTextString(m) } func (*PluginStaticCredentialsOAuthClientSecret) ProtoMessage() {} func (*PluginStaticCredentialsOAuthClientSecret) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{296} + return fileDescriptor_9198ee693835762e, []int{298} } func (m *PluginStaticCredentialsOAuthClientSecret) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17419,7 +17521,7 @@ type SAMLIdPServiceProviderV1 struct { func (m *SAMLIdPServiceProviderV1) Reset() { *m = SAMLIdPServiceProviderV1{} } func (*SAMLIdPServiceProviderV1) ProtoMessage() {} func (*SAMLIdPServiceProviderV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{297} + return fileDescriptor_9198ee693835762e, []int{299} } func (m *SAMLIdPServiceProviderV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17490,7 +17592,7 @@ func (m *SAMLIdPServiceProviderSpecV1) Reset() { *m = SAMLIdPServiceProv func (m *SAMLIdPServiceProviderSpecV1) String() string { return proto.CompactTextString(m) } func (*SAMLIdPServiceProviderSpecV1) ProtoMessage() {} func (*SAMLIdPServiceProviderSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{298} + return fileDescriptor_9198ee693835762e, []int{300} } func (m *SAMLIdPServiceProviderSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17537,7 +17639,7 @@ func (m *SAMLAttributeMapping) Reset() { *m = SAMLAttributeMapping{} } func (m *SAMLAttributeMapping) String() string { return proto.CompactTextString(m) } func (*SAMLAttributeMapping) ProtoMessage() {} func (*SAMLAttributeMapping) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{299} + return fileDescriptor_9198ee693835762e, []int{301} } func (m *SAMLAttributeMapping) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17579,7 +17681,7 @@ func (m *IdPOptions) Reset() { *m = IdPOptions{} } func (m *IdPOptions) String() string { return proto.CompactTextString(m) } func (*IdPOptions) ProtoMessage() {} func (*IdPOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{300} + return fileDescriptor_9198ee693835762e, []int{302} } func (m *IdPOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17621,7 +17723,7 @@ func (m *IdPSAMLOptions) Reset() { *m = IdPSAMLOptions{} } func (m *IdPSAMLOptions) String() string { return proto.CompactTextString(m) } func (*IdPSAMLOptions) ProtoMessage() {} func (*IdPSAMLOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{301} + return fileDescriptor_9198ee693835762e, []int{303} } func (m *IdPSAMLOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17671,7 +17773,7 @@ func (m *KubernetesResourceV1) Reset() { *m = KubernetesResourceV1{} } func (m *KubernetesResourceV1) String() string { return proto.CompactTextString(m) } func (*KubernetesResourceV1) ProtoMessage() {} func (*KubernetesResourceV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{302} + return fileDescriptor_9198ee693835762e, []int{304} } func (m *KubernetesResourceV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17713,7 +17815,7 @@ func (m *KubernetesResourceSpecV1) Reset() { *m = KubernetesResourceSpec func (m *KubernetesResourceSpecV1) String() string { return proto.CompactTextString(m) } func (*KubernetesResourceSpecV1) ProtoMessage() {} func (*KubernetesResourceSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{303} + return fileDescriptor_9198ee693835762e, []int{305} } func (m *KubernetesResourceSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17759,7 +17861,7 @@ func (m *ClusterMaintenanceConfigV1) Reset() { *m = ClusterMaintenanceCo func (m *ClusterMaintenanceConfigV1) String() string { return proto.CompactTextString(m) } func (*ClusterMaintenanceConfigV1) ProtoMessage() {} func (*ClusterMaintenanceConfigV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{304} + return fileDescriptor_9198ee693835762e, []int{306} } func (m *ClusterMaintenanceConfigV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17801,7 +17903,7 @@ func (m *ClusterMaintenanceConfigSpecV1) Reset() { *m = ClusterMaintenan func (m *ClusterMaintenanceConfigSpecV1) String() string { return proto.CompactTextString(m) } func (*ClusterMaintenanceConfigSpecV1) ProtoMessage() {} func (*ClusterMaintenanceConfigSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{305} + return fileDescriptor_9198ee693835762e, []int{307} } func (m *ClusterMaintenanceConfigSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17847,7 +17949,7 @@ func (m *AgentUpgradeWindow) Reset() { *m = AgentUpgradeWindow{} } func (m *AgentUpgradeWindow) String() string { return proto.CompactTextString(m) } func (*AgentUpgradeWindow) ProtoMessage() {} func (*AgentUpgradeWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{306} + return fileDescriptor_9198ee693835762e, []int{308} } func (m *AgentUpgradeWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17894,7 +17996,7 @@ func (m *ScheduledAgentUpgradeWindow) Reset() { *m = ScheduledAgentUpgra func (m *ScheduledAgentUpgradeWindow) String() string { return proto.CompactTextString(m) } func (*ScheduledAgentUpgradeWindow) ProtoMessage() {} func (*ScheduledAgentUpgradeWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{307} + return fileDescriptor_9198ee693835762e, []int{309} } func (m *ScheduledAgentUpgradeWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17937,7 +18039,7 @@ func (m *AgentUpgradeSchedule) Reset() { *m = AgentUpgradeSchedule{} } func (m *AgentUpgradeSchedule) String() string { return proto.CompactTextString(m) } func (*AgentUpgradeSchedule) ProtoMessage() {} func (*AgentUpgradeSchedule) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{308} + return fileDescriptor_9198ee693835762e, []int{310} } func (m *AgentUpgradeSchedule) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -17980,7 +18082,7 @@ type UserGroupV1 struct { func (m *UserGroupV1) Reset() { *m = UserGroupV1{} } func (*UserGroupV1) ProtoMessage() {} func (*UserGroupV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{309} + return fileDescriptor_9198ee693835762e, []int{311} } func (m *UserGroupV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18022,7 +18124,7 @@ func (m *UserGroupSpecV1) Reset() { *m = UserGroupSpecV1{} } func (m *UserGroupSpecV1) String() string { return proto.CompactTextString(m) } func (*UserGroupSpecV1) ProtoMessage() {} func (*UserGroupSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{310} + return fileDescriptor_9198ee693835762e, []int{312} } func (m *UserGroupSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18066,7 +18168,7 @@ func (m *OktaImportRuleSpecV1) Reset() { *m = OktaImportRuleSpecV1{} } func (m *OktaImportRuleSpecV1) String() string { return proto.CompactTextString(m) } func (*OktaImportRuleSpecV1) ProtoMessage() {} func (*OktaImportRuleSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{311} + return fileDescriptor_9198ee693835762e, []int{313} } func (m *OktaImportRuleSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18110,7 +18212,7 @@ func (m *OktaImportRuleMappingV1) Reset() { *m = OktaImportRuleMappingV1 func (m *OktaImportRuleMappingV1) String() string { return proto.CompactTextString(m) } func (*OktaImportRuleMappingV1) ProtoMessage() {} func (*OktaImportRuleMappingV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{312} + return fileDescriptor_9198ee693835762e, []int{314} } func (m *OktaImportRuleMappingV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18153,7 +18255,7 @@ type OktaImportRuleV1 struct { func (m *OktaImportRuleV1) Reset() { *m = OktaImportRuleV1{} } func (*OktaImportRuleV1) ProtoMessage() {} func (*OktaImportRuleV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{313} + return fileDescriptor_9198ee693835762e, []int{315} } func (m *OktaImportRuleV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18201,7 +18303,7 @@ func (m *OktaImportRuleMatchV1) Reset() { *m = OktaImportRuleMatchV1{} } func (m *OktaImportRuleMatchV1) String() string { return proto.CompactTextString(m) } func (*OktaImportRuleMatchV1) ProtoMessage() {} func (*OktaImportRuleMatchV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{314} + return fileDescriptor_9198ee693835762e, []int{316} } func (m *OktaImportRuleMatchV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18244,7 +18346,7 @@ type OktaAssignmentV1 struct { func (m *OktaAssignmentV1) Reset() { *m = OktaAssignmentV1{} } func (*OktaAssignmentV1) ProtoMessage() {} func (*OktaAssignmentV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{315} + return fileDescriptor_9198ee693835762e, []int{317} } func (m *OktaAssignmentV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18298,7 +18400,7 @@ func (m *OktaAssignmentSpecV1) Reset() { *m = OktaAssignmentSpecV1{} } func (m *OktaAssignmentSpecV1) String() string { return proto.CompactTextString(m) } func (*OktaAssignmentSpecV1) ProtoMessage() {} func (*OktaAssignmentSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{316} + return fileDescriptor_9198ee693835762e, []int{318} } func (m *OktaAssignmentSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18342,7 +18444,7 @@ func (m *OktaAssignmentTargetV1) Reset() { *m = OktaAssignmentTargetV1{} func (m *OktaAssignmentTargetV1) String() string { return proto.CompactTextString(m) } func (*OktaAssignmentTargetV1) ProtoMessage() {} func (*OktaAssignmentTargetV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{317} + return fileDescriptor_9198ee693835762e, []int{319} } func (m *OktaAssignmentTargetV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18387,7 +18489,7 @@ type IntegrationV1 struct { func (m *IntegrationV1) Reset() { *m = IntegrationV1{} } func (*IntegrationV1) ProtoMessage() {} func (*IntegrationV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{318} + return fileDescriptor_9198ee693835762e, []int{320} } func (m *IntegrationV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18422,6 +18524,7 @@ type IntegrationSpecV1 struct { // // *IntegrationSpecV1_AWSOIDC // *IntegrationSpecV1_AzureOIDC + // *IntegrationSpecV1_GitHub SubKindSpec isIntegrationSpecV1_SubKindSpec `protobuf_oneof:"SubKindSpec"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -18432,7 +18535,7 @@ func (m *IntegrationSpecV1) Reset() { *m = IntegrationSpecV1{} } func (m *IntegrationSpecV1) String() string { return proto.CompactTextString(m) } func (*IntegrationSpecV1) ProtoMessage() {} func (*IntegrationSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{319} + return fileDescriptor_9198ee693835762e, []int{321} } func (m *IntegrationSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18473,9 +18576,13 @@ type IntegrationSpecV1_AWSOIDC struct { type IntegrationSpecV1_AzureOIDC struct { AzureOIDC *AzureOIDCIntegrationSpecV1 `protobuf:"bytes,2,opt,name=AzureOIDC,proto3,oneof" json:"azure_oidc,omitempty"` } +type IntegrationSpecV1_GitHub struct { + GitHub *GitHubIntegrationSpecV1 `protobuf:"bytes,3,opt,name=GitHub,proto3,oneof" json:"github,omitempty"` +} func (*IntegrationSpecV1_AWSOIDC) isIntegrationSpecV1_SubKindSpec() {} func (*IntegrationSpecV1_AzureOIDC) isIntegrationSpecV1_SubKindSpec() {} +func (*IntegrationSpecV1_GitHub) isIntegrationSpecV1_SubKindSpec() {} func (m *IntegrationSpecV1) GetSubKindSpec() isIntegrationSpecV1_SubKindSpec { if m != nil { @@ -18498,11 +18605,19 @@ func (m *IntegrationSpecV1) GetAzureOIDC() *AzureOIDCIntegrationSpecV1 { return nil } +func (m *IntegrationSpecV1) GetGitHub() *GitHubIntegrationSpecV1 { + if x, ok := m.GetSubKindSpec().(*IntegrationSpecV1_GitHub); ok { + return x.GitHub + } + return nil +} + // XXX_OneofWrappers is for the internal use of the proto package. func (*IntegrationSpecV1) XXX_OneofWrappers() []interface{} { return []interface{}{ (*IntegrationSpecV1_AWSOIDC)(nil), (*IntegrationSpecV1_AzureOIDC)(nil), + (*IntegrationSpecV1_GitHub)(nil), } } @@ -18532,7 +18647,7 @@ func (m *AWSOIDCIntegrationSpecV1) Reset() { *m = AWSOIDCIntegrationSpec func (m *AWSOIDCIntegrationSpecV1) String() string { return proto.CompactTextString(m) } func (*AWSOIDCIntegrationSpecV1) ProtoMessage() {} func (*AWSOIDCIntegrationSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{320} + return fileDescriptor_9198ee693835762e, []int{322} } func (m *AWSOIDCIntegrationSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18578,7 +18693,7 @@ func (m *AzureOIDCIntegrationSpecV1) Reset() { *m = AzureOIDCIntegration func (m *AzureOIDCIntegrationSpecV1) String() string { return proto.CompactTextString(m) } func (*AzureOIDCIntegrationSpecV1) ProtoMessage() {} func (*AzureOIDCIntegrationSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{321} + return fileDescriptor_9198ee693835762e, []int{323} } func (m *AzureOIDCIntegrationSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18607,6 +18722,143 @@ func (m *AzureOIDCIntegrationSpecV1) XXX_DiscardUnknown() { var xxx_messageInfo_AzureOIDCIntegrationSpecV1 proto.InternalMessageInfo +// GitHubIntegrationSpecV1 contains the specific fields to handle the GitHub integration subkind. +type GitHubIntegrationSpecV1 struct { + // Organization specifies the name of the organization for the GitHub integration. + Organization string `protobuf:"bytes,1,opt,name=Organization,proto3" json:"organization,omitempty"` + // Proxy specifies GitHub proxy related settings. + Proxy *GitHubProxy `protobuf:"bytes,2,opt,name=proxy,proto3" json:"proxy,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GitHubIntegrationSpecV1) Reset() { *m = GitHubIntegrationSpecV1{} } +func (m *GitHubIntegrationSpecV1) String() string { return proto.CompactTextString(m) } +func (*GitHubIntegrationSpecV1) ProtoMessage() {} +func (*GitHubIntegrationSpecV1) Descriptor() ([]byte, []int) { + return fileDescriptor_9198ee693835762e, []int{324} +} +func (m *GitHubIntegrationSpecV1) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GitHubIntegrationSpecV1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GitHubIntegrationSpecV1.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 *GitHubIntegrationSpecV1) XXX_Merge(src proto.Message) { + xxx_messageInfo_GitHubIntegrationSpecV1.Merge(m, src) +} +func (m *GitHubIntegrationSpecV1) XXX_Size() int { + return m.Size() +} +func (m *GitHubIntegrationSpecV1) XXX_DiscardUnknown() { + xxx_messageInfo_GitHubIntegrationSpecV1.DiscardUnknown(m) +} + +var xxx_messageInfo_GitHubIntegrationSpecV1 proto.InternalMessageInfo + +// GitHubProxy specifies GitHub proxy related settings. +type GitHubProxy struct { + // CertAuthority contains the active SSH CAs used between Teleport and + // GitHub. GitHub does not allow the same CA to be used for a different + // organization so the CA is defined per integration. TODO(greedy52) support + // rotation, HSM encryption. + CertAuthorities []*SSHKeyPair `protobuf:"bytes,1,rep,name=cert_authorities,json=certAuthorities,proto3" json:"cert_authorities,omitempty"` + // Connector specifies GitHub connector used to obtain user ID and username. + Connector *GitHubProxyConnector `protobuf:"bytes,2,opt,name=connector,proto3" json:"connector,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GitHubProxy) Reset() { *m = GitHubProxy{} } +func (m *GitHubProxy) String() string { return proto.CompactTextString(m) } +func (*GitHubProxy) ProtoMessage() {} +func (*GitHubProxy) Descriptor() ([]byte, []int) { + return fileDescriptor_9198ee693835762e, []int{325} +} +func (m *GitHubProxy) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GitHubProxy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GitHubProxy.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 *GitHubProxy) XXX_Merge(src proto.Message) { + xxx_messageInfo_GitHubProxy.Merge(m, src) +} +func (m *GitHubProxy) XXX_Size() int { + return m.Size() +} +func (m *GitHubProxy) XXX_DiscardUnknown() { + xxx_messageInfo_GitHubProxy.DiscardUnknown(m) +} + +var xxx_messageInfo_GitHubProxy proto.InternalMessageInfo + +// GitHubProxyConnector specifies the GitHub connector spec for a GitHub proxy. +type GitHubProxyConnector struct { + // ClientID is the Github OAuth app client ID. + ClientID string `protobuf:"bytes,1,opt,name=ClientID,proto3" json:"client_id"` + // ClientSecret is the Github OAuth app client secret. + ClientSecret string `protobuf:"bytes,2,opt,name=ClientSecret,proto3" json:"client_secret"` + // RedirectURL is the authorization callback URL. + RedirectURL string `protobuf:"bytes,3,opt,name=RedirectURL,proto3" json:"redirect_url"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GitHubProxyConnector) Reset() { *m = GitHubProxyConnector{} } +func (m *GitHubProxyConnector) String() string { return proto.CompactTextString(m) } +func (*GitHubProxyConnector) ProtoMessage() {} +func (*GitHubProxyConnector) Descriptor() ([]byte, []int) { + return fileDescriptor_9198ee693835762e, []int{326} +} +func (m *GitHubProxyConnector) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GitHubProxyConnector) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GitHubProxyConnector.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 *GitHubProxyConnector) XXX_Merge(src proto.Message) { + xxx_messageInfo_GitHubProxyConnector.Merge(m, src) +} +func (m *GitHubProxyConnector) XXX_Size() int { + return m.Size() +} +func (m *GitHubProxyConnector) XXX_DiscardUnknown() { + xxx_messageInfo_GitHubProxyConnector.DiscardUnknown(m) +} + +var xxx_messageInfo_GitHubProxyConnector proto.InternalMessageInfo + // HeadlessAuthentication holds data for an ongoing headless authentication attempt. type HeadlessAuthentication struct { // Header is the resource header. @@ -18639,7 +18891,7 @@ func (m *HeadlessAuthentication) Reset() { *m = HeadlessAuthentication{} func (m *HeadlessAuthentication) String() string { return proto.CompactTextString(m) } func (*HeadlessAuthentication) ProtoMessage() {} func (*HeadlessAuthentication) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{322} + return fileDescriptor_9198ee693835762e, []int{327} } func (m *HeadlessAuthentication) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18696,7 +18948,7 @@ func (m *WatchKind) Reset() { *m = WatchKind{} } func (m *WatchKind) String() string { return proto.CompactTextString(m) } func (*WatchKind) ProtoMessage() {} func (*WatchKind) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{323} + return fileDescriptor_9198ee693835762e, []int{328} } func (m *WatchKind) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18746,7 +18998,7 @@ func (m *WatchStatusV1) Reset() { *m = WatchStatusV1{} } func (m *WatchStatusV1) String() string { return proto.CompactTextString(m) } func (*WatchStatusV1) ProtoMessage() {} func (*WatchStatusV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{324} + return fileDescriptor_9198ee693835762e, []int{329} } func (m *WatchStatusV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18787,7 +19039,7 @@ func (m *WatchStatusSpecV1) Reset() { *m = WatchStatusSpecV1{} } func (m *WatchStatusSpecV1) String() string { return proto.CompactTextString(m) } func (*WatchStatusSpecV1) ProtoMessage() {} func (*WatchStatusSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{325} + return fileDescriptor_9198ee693835762e, []int{330} } func (m *WatchStatusSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18837,7 +19089,7 @@ func (m *ServerInfoV1) Reset() { *m = ServerInfoV1{} } func (m *ServerInfoV1) String() string { return proto.CompactTextString(m) } func (*ServerInfoV1) ProtoMessage() {} func (*ServerInfoV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{326} + return fileDescriptor_9198ee693835762e, []int{331} } func (m *ServerInfoV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18879,7 +19131,7 @@ func (m *ServerInfoSpecV1) Reset() { *m = ServerInfoSpecV1{} } func (m *ServerInfoSpecV1) String() string { return proto.CompactTextString(m) } func (*ServerInfoSpecV1) ProtoMessage() {} func (*ServerInfoSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{327} + return fileDescriptor_9198ee693835762e, []int{332} } func (m *ServerInfoSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -18936,7 +19188,7 @@ func (m *JamfSpecV1) Reset() { *m = JamfSpecV1{} } func (m *JamfSpecV1) String() string { return proto.CompactTextString(m) } func (*JamfSpecV1) ProtoMessage() {} func (*JamfSpecV1) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{328} + return fileDescriptor_9198ee693835762e, []int{333} } func (m *JamfSpecV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19001,7 +19253,7 @@ func (m *JamfInventoryEntry) Reset() { *m = JamfInventoryEntry{} } func (m *JamfInventoryEntry) String() string { return proto.CompactTextString(m) } func (*JamfInventoryEntry) ProtoMessage() {} func (*JamfInventoryEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{329} + return fileDescriptor_9198ee693835762e, []int{334} } func (m *JamfInventoryEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19058,7 +19310,7 @@ type MessageWithHeader struct { func (m *MessageWithHeader) Reset() { *m = MessageWithHeader{} } func (*MessageWithHeader) ProtoMessage() {} func (*MessageWithHeader) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{330} + return fileDescriptor_9198ee693835762e, []int{335} } func (m *MessageWithHeader) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19122,7 +19374,7 @@ func (m *AWSMatcher) Reset() { *m = AWSMatcher{} } func (m *AWSMatcher) String() string { return proto.CompactTextString(m) } func (*AWSMatcher) ProtoMessage() {} func (*AWSMatcher) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{331} + return fileDescriptor_9198ee693835762e, []int{336} } func (m *AWSMatcher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19167,7 +19419,7 @@ func (m *AssumeRole) Reset() { *m = AssumeRole{} } func (m *AssumeRole) String() string { return proto.CompactTextString(m) } func (*AssumeRole) ProtoMessage() {} func (*AssumeRole) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{332} + return fileDescriptor_9198ee693835762e, []int{337} } func (m *AssumeRole) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19229,7 +19481,7 @@ func (m *InstallerParams) Reset() { *m = InstallerParams{} } func (m *InstallerParams) String() string { return proto.CompactTextString(m) } func (*InstallerParams) ProtoMessage() {} func (*InstallerParams) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{333} + return fileDescriptor_9198ee693835762e, []int{338} } func (m *InstallerParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19272,7 +19524,7 @@ func (m *AWSSSM) Reset() { *m = AWSSSM{} } func (m *AWSSSM) String() string { return proto.CompactTextString(m) } func (*AWSSSM) ProtoMessage() {} func (*AWSSSM) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{334} + return fileDescriptor_9198ee693835762e, []int{339} } func (m *AWSSSM) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19315,7 +19567,7 @@ func (m *AzureInstallerParams) Reset() { *m = AzureInstallerParams{} } func (m *AzureInstallerParams) String() string { return proto.CompactTextString(m) } func (*AzureInstallerParams) ProtoMessage() {} func (*AzureInstallerParams) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{335} + return fileDescriptor_9198ee693835762e, []int{340} } func (m *AzureInstallerParams) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19369,7 +19621,7 @@ func (m *AzureMatcher) Reset() { *m = AzureMatcher{} } func (m *AzureMatcher) String() string { return proto.CompactTextString(m) } func (*AzureMatcher) ProtoMessage() {} func (*AzureMatcher) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{336} + return fileDescriptor_9198ee693835762e, []int{341} } func (m *AzureMatcher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19424,7 +19676,7 @@ func (m *GCPMatcher) Reset() { *m = GCPMatcher{} } func (m *GCPMatcher) String() string { return proto.CompactTextString(m) } func (*GCPMatcher) ProtoMessage() {} func (*GCPMatcher) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{337} + return fileDescriptor_9198ee693835762e, []int{342} } func (m *GCPMatcher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19470,7 +19722,7 @@ func (m *KubernetesMatcher) Reset() { *m = KubernetesMatcher{} } func (m *KubernetesMatcher) String() string { return proto.CompactTextString(m) } func (*KubernetesMatcher) ProtoMessage() {} func (*KubernetesMatcher) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{338} + return fileDescriptor_9198ee693835762e, []int{343} } func (m *KubernetesMatcher) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19512,7 +19764,7 @@ func (m *OktaOptions) Reset() { *m = OktaOptions{} } func (m *OktaOptions) String() string { return proto.CompactTextString(m) } func (*OktaOptions) ProtoMessage() {} func (*OktaOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{339} + return fileDescriptor_9198ee693835762e, []int{344} } func (m *OktaOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19554,7 +19806,7 @@ func (m *AccessGraphSync) Reset() { *m = AccessGraphSync{} } func (m *AccessGraphSync) String() string { return proto.CompactTextString(m) } func (*AccessGraphSync) ProtoMessage() {} func (*AccessGraphSync) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{340} + return fileDescriptor_9198ee693835762e, []int{345} } func (m *AccessGraphSync) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19600,7 +19852,7 @@ func (m *AccessGraphAWSSync) Reset() { *m = AccessGraphAWSSync{} } func (m *AccessGraphAWSSync) String() string { return proto.CompactTextString(m) } func (*AccessGraphAWSSync) ProtoMessage() {} func (*AccessGraphAWSSync) Descriptor() ([]byte, []int) { - return fileDescriptor_9198ee693835762e, []int{341} + return fileDescriptor_9198ee693835762e, []int{346} } func (m *AccessGraphAWSSync) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -19702,6 +19954,7 @@ func init() { proto.RegisterMapType((map[string]CommandLabelV2)(nil), "types.ServerSpecV2.CmdLabelsEntry") proto.RegisterType((*AWSInfo)(nil), "types.AWSInfo") proto.RegisterType((*CloudMetadata)(nil), "types.CloudMetadata") + proto.RegisterType((*GitHubServerMetadata)(nil), "types.GitHubServerMetadata") proto.RegisterType((*AppServerV3)(nil), "types.AppServerV3") proto.RegisterType((*AppServerSpecV3)(nil), "types.AppServerSpecV3") proto.RegisterType((*AppV3List)(nil), "types.AppV3List") @@ -19800,6 +20053,7 @@ func init() { proto.RegisterType((*RecordSession)(nil), "types.RecordSession") proto.RegisterType((*CertExtension)(nil), "types.CertExtension") proto.RegisterType((*RoleConditions)(nil), "types.RoleConditions") + proto.RegisterType((*GitHubPermission)(nil), "types.GitHubPermission") proto.RegisterType((*SPIFFERoleCondition)(nil), "types.SPIFFERoleCondition") proto.RegisterType((*DatabasePermission)(nil), "types.DatabasePermission") proto.RegisterType((*KubernetesResource)(nil), "types.KubernetesResource") @@ -20009,6 +20263,9 @@ func init() { proto.RegisterType((*IntegrationSpecV1)(nil), "types.IntegrationSpecV1") proto.RegisterType((*AWSOIDCIntegrationSpecV1)(nil), "types.AWSOIDCIntegrationSpecV1") proto.RegisterType((*AzureOIDCIntegrationSpecV1)(nil), "types.AzureOIDCIntegrationSpecV1") + proto.RegisterType((*GitHubIntegrationSpecV1)(nil), "types.GitHubIntegrationSpecV1") + proto.RegisterType((*GitHubProxy)(nil), "types.GitHubProxy") + proto.RegisterType((*GitHubProxyConnector)(nil), "types.GitHubProxyConnector") proto.RegisterType((*HeadlessAuthentication)(nil), "types.HeadlessAuthentication") proto.RegisterType((*WatchKind)(nil), "types.WatchKind") proto.RegisterMapType((map[string]string)(nil), "types.WatchKind.FilterEntry") @@ -20036,1755 +20293,1775 @@ func init() { func init() { proto.RegisterFile("teleport/legacy/types/types.proto", fileDescriptor_9198ee693835762e) } var fileDescriptor_9198ee693835762e = []byte{ - // 27965 bytes of a gzipped FileDescriptorProto + // 28278 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x6b, 0x70, 0x1c, 0x59, - 0x76, 0x20, 0x06, 0x77, 0x55, 0xe1, 0x51, 0x38, 0x78, 0x15, 0x2e, 0x40, 0x12, 0x44, 0x37, 0x59, - 0xec, 0x64, 0x37, 0x9b, 0xec, 0x07, 0x39, 0x04, 0xa7, 0x39, 0xd3, 0xd3, 0xcf, 0x02, 0x0a, 0x24, - 0x8a, 0x04, 0x01, 0x4c, 0x16, 0x48, 0x4e, 0x6b, 0x1e, 0x39, 0x89, 0xaa, 0x0b, 0x20, 0x9b, 0x55, - 0x95, 0x35, 0x99, 0x59, 0x04, 0x31, 0xda, 0xfd, 0x56, 0xcf, 0xd5, 0x27, 0xaf, 0xf5, 0xda, 0x95, - 0x2c, 0xad, 0x43, 0xab, 0x50, 0x68, 0xbd, 0x6b, 0x79, 0x1d, 0xab, 0xb0, 0xa5, 0x55, 0x78, 0x1d, - 0x0a, 0x6b, 0x25, 0x87, 0x2c, 0x2b, 0x64, 0xc7, 0x5a, 0x11, 0x5e, 0xbf, 0xc6, 0x0a, 0xc8, 0xb2, - 0xf6, 0x87, 0x03, 0x11, 0x8e, 0x90, 0xbc, 0x11, 0x7e, 0xcc, 0x86, 0xd6, 0x8e, 0x7b, 0xee, 0x23, - 0xef, 0xcd, 0xca, 0x2a, 0x14, 0xba, 0xd9, 0xbb, 0x62, 0x87, 0xfe, 0x90, 0xa8, 0x73, 0xcf, 0x39, - 0xf7, 0x99, 0xf7, 0x9e, 0x73, 0xef, 0x79, 0xc0, 0x8b, 0x11, 0x6d, 0xd0, 0xb6, 0x1f, 0x44, 0xd7, - 0x1a, 0x74, 0xd7, 0xad, 0x1d, 0x5c, 0x8b, 0x0e, 0xda, 0x34, 0xe4, 0xff, 0x5e, 0x6d, 0x07, 0x7e, - 0xe4, 0x93, 0x61, 0xfc, 0xb1, 0x30, 0xb7, 0xeb, 0xef, 0xfa, 0x08, 0xb9, 0xc6, 0xfe, 0xe2, 0x85, - 0x0b, 0xe7, 0x77, 0x7d, 0x7f, 0xb7, 0x41, 0xaf, 0xe1, 0xaf, 0xed, 0xce, 0xce, 0xb5, 0x7a, 0x27, - 0x70, 0x23, 0xcf, 0x6f, 0x89, 0xf2, 0x62, 0xb2, 0x3c, 0xf2, 0x9a, 0x34, 0x8c, 0xdc, 0x66, 0xbb, - 0x17, 0x83, 0xfd, 0xc0, 0x6d, 0xb7, 0x69, 0x20, 0x6a, 0x5f, 0xb8, 0xa2, 0x1a, 0xe8, 0x46, 0x11, - 0xa3, 0x64, 0xcc, 0xaf, 0x3d, 0xbe, 0xae, 0xff, 0x14, 0xa8, 0x6f, 0xa4, 0xf7, 0x45, 0x32, 0x4c, - 0x70, 0xb6, 0x7e, 0x21, 0x07, 0x63, 0x77, 0x29, 0x6d, 0x97, 0x1a, 0xde, 0x63, 0x4a, 0x2e, 0xc2, - 0xd0, 0xba, 0xdb, 0xa4, 0xf3, 0x99, 0x0b, 0x99, 0xcb, 0x63, 0x4b, 0xd3, 0x47, 0x87, 0xc5, 0xf1, - 0x90, 0x06, 0x8f, 0x69, 0xe0, 0xb4, 0xdc, 0x26, 0xb5, 0xb1, 0x90, 0xbc, 0x06, 0x63, 0xec, 0xff, - 0xb0, 0xed, 0xd6, 0xe8, 0x7c, 0x16, 0x31, 0x27, 0x8f, 0x0e, 0x8b, 0x63, 0x2d, 0x09, 0xb4, 0xe3, - 0x72, 0x52, 0x81, 0xd1, 0x95, 0x27, 0x6d, 0x2f, 0xa0, 0xe1, 0xfc, 0xd0, 0x85, 0xcc, 0xe5, 0xf1, - 0xc5, 0x85, 0xab, 0xbc, 0xaf, 0x57, 0x65, 0x5f, 0xaf, 0x6e, 0xc9, 0xc1, 0x58, 0x9a, 0xfd, 0xbd, - 0xc3, 0xe2, 0x73, 0x47, 0x87, 0xc5, 0x51, 0xca, 0x49, 0x7e, 0xf2, 0x8f, 0x8a, 0x19, 0x5b, 0xd2, - 0x93, 0x77, 0x60, 0x68, 0xeb, 0xa0, 0x4d, 0xe7, 0xc7, 0x2e, 0x64, 0x2e, 0x4f, 0x2d, 0x9e, 0xbf, - 0xca, 0xa7, 0x47, 0x35, 0x3e, 0xfe, 0x8b, 0x61, 0x2d, 0xe5, 0x8f, 0x0e, 0x8b, 0x43, 0x0c, 0xc5, - 0x46, 0x2a, 0xf2, 0x06, 0x8c, 0xac, 0xfa, 0x61, 0x54, 0x29, 0xcf, 0x03, 0x36, 0xf9, 0xd4, 0xd1, - 0x61, 0x71, 0x66, 0xcf, 0x0f, 0x23, 0xc7, 0xab, 0xbf, 0xee, 0x37, 0xbd, 0x88, 0x36, 0xdb, 0xd1, - 0x81, 0x2d, 0x90, 0xac, 0x27, 0x30, 0x69, 0xf0, 0x23, 0xe3, 0x30, 0x7a, 0x7f, 0xfd, 0xee, 0xfa, - 0xc6, 0xc3, 0xf5, 0xc2, 0x73, 0x24, 0x0f, 0x43, 0xeb, 0x1b, 0xe5, 0x95, 0x42, 0x86, 0x8c, 0x42, - 0xae, 0xb4, 0xb9, 0x59, 0xc8, 0x92, 0x09, 0xc8, 0x97, 0x4b, 0x5b, 0xa5, 0xa5, 0x52, 0x75, 0xa5, - 0x90, 0x23, 0xb3, 0x30, 0xfd, 0xb0, 0xb2, 0x5e, 0xde, 0x78, 0x58, 0x75, 0xca, 0x2b, 0xd5, 0xbb, - 0x5b, 0x1b, 0x9b, 0x85, 0x21, 0x32, 0x05, 0x70, 0xf7, 0xfe, 0xd2, 0x8a, 0xbd, 0xbe, 0xb2, 0xb5, - 0x52, 0x2d, 0x0c, 0x93, 0x39, 0x28, 0x48, 0x12, 0xa7, 0xba, 0x62, 0x3f, 0xa8, 0x2c, 0xaf, 0x14, - 0x46, 0xee, 0x0c, 0xe5, 0x73, 0x85, 0x21, 0x7b, 0x74, 0x8d, 0xba, 0x21, 0xad, 0x94, 0xad, 0xbf, - 0x9b, 0x83, 0xfc, 0x3d, 0x1a, 0xb9, 0x75, 0x37, 0x72, 0xc9, 0x0b, 0xc6, 0xfc, 0x60, 0x17, 0xb5, - 0x89, 0xb9, 0xd8, 0x3d, 0x31, 0xc3, 0x47, 0x87, 0xc5, 0xcc, 0x1b, 0xfa, 0x84, 0xbc, 0x0d, 0xe3, - 0x65, 0x1a, 0xd6, 0x02, 0xaf, 0xcd, 0x16, 0xcd, 0x7c, 0x0e, 0xd1, 0xce, 0x1e, 0x1d, 0x16, 0x4f, - 0xd5, 0x63, 0xb0, 0x36, 0x20, 0x3a, 0x36, 0xa9, 0xc0, 0xc8, 0x9a, 0xbb, 0x4d, 0x1b, 0xe1, 0xfc, - 0xf0, 0x85, 0xdc, 0xe5, 0xf1, 0xc5, 0xe7, 0xc5, 0x24, 0xc8, 0x06, 0x5e, 0xe5, 0xa5, 0x2b, 0xad, - 0x28, 0x38, 0x58, 0x9a, 0x3b, 0x3a, 0x2c, 0x16, 0x1a, 0x08, 0xd0, 0x07, 0x98, 0xa3, 0x90, 0x6a, - 0xbc, 0x30, 0x46, 0x8e, 0x5d, 0x18, 0xe7, 0x7e, 0xef, 0xb0, 0x98, 0x61, 0x13, 0x26, 0x16, 0x46, - 0xcc, 0xcf, 0x5c, 0x22, 0x8b, 0x90, 0xb7, 0xe9, 0x63, 0x2f, 0x64, 0x3d, 0xcb, 0x63, 0xcf, 0x4e, - 0x1f, 0x1d, 0x16, 0x49, 0x20, 0x60, 0x5a, 0x33, 0x14, 0xde, 0xc2, 0x5b, 0x30, 0xae, 0xb5, 0x9a, - 0x14, 0x20, 0xf7, 0x88, 0x1e, 0xf0, 0x11, 0xb6, 0xd9, 0x9f, 0x64, 0x0e, 0x86, 0x1f, 0xbb, 0x8d, - 0x8e, 0x18, 0x52, 0x9b, 0xff, 0xf8, 0x52, 0xf6, 0x8b, 0x99, 0x3b, 0x43, 0xf9, 0xd1, 0x42, 0xde, - 0xce, 0x56, 0xca, 0xd6, 0xdf, 0x1c, 0x82, 0xbc, 0xed, 0xf3, 0x0f, 0x91, 0x5c, 0x81, 0xe1, 0x6a, - 0xe4, 0x46, 0x72, 0x9a, 0x66, 0x8f, 0x0e, 0x8b, 0xd3, 0xec, 0x23, 0xa5, 0x5a, 0xfd, 0x1c, 0x83, - 0xa1, 0x6e, 0xee, 0xb9, 0xa1, 0x9c, 0x2e, 0x44, 0x6d, 0x33, 0x80, 0x8e, 0x8a, 0x18, 0xe4, 0x12, - 0x0c, 0xdd, 0xf3, 0xeb, 0x54, 0xcc, 0x18, 0x39, 0x3a, 0x2c, 0x4e, 0x35, 0xfd, 0xba, 0x8e, 0x88, - 0xe5, 0xe4, 0x75, 0x18, 0x5b, 0xee, 0x04, 0x01, 0x6d, 0xb1, 0xb5, 0x3e, 0x84, 0xc8, 0x53, 0x47, - 0x87, 0x45, 0xa8, 0x71, 0xa0, 0xe3, 0xd5, 0xed, 0x18, 0x81, 0x4d, 0x43, 0x35, 0x72, 0x83, 0x88, - 0xd6, 0xe7, 0x87, 0x07, 0x9a, 0x06, 0xf6, 0x7d, 0xce, 0x84, 0x9c, 0x24, 0x39, 0x0d, 0x82, 0x13, - 0x59, 0x85, 0xf1, 0xdb, 0x81, 0x5b, 0xa3, 0x9b, 0x34, 0xf0, 0xfc, 0x3a, 0xce, 0x6f, 0x6e, 0xe9, - 0xd2, 0xd1, 0x61, 0xf1, 0xf4, 0x2e, 0x03, 0x3b, 0x6d, 0x84, 0xc7, 0xd4, 0xdf, 0x3d, 0x2c, 0xe6, - 0xcb, 0x62, 0xcb, 0xb4, 0x75, 0x52, 0xf2, 0x4d, 0x36, 0x39, 0x61, 0x84, 0x43, 0x4b, 0xeb, 0xf3, - 0xa3, 0xc7, 0x36, 0xd1, 0x12, 0x4d, 0x3c, 0xdd, 0x70, 0xc3, 0xc8, 0x09, 0x38, 0x5d, 0xa2, 0x9d, - 0x3a, 0x4b, 0xb2, 0x01, 0xf9, 0x6a, 0x6d, 0x8f, 0xd6, 0x3b, 0x0d, 0x8a, 0x4b, 0x66, 0x7c, 0xf1, - 0x8c, 0x58, 0xd4, 0x72, 0x3e, 0x65, 0xf1, 0xd2, 0x82, 0xe0, 0x4d, 0x42, 0x01, 0xd1, 0xd7, 0x93, - 0xc4, 0xfa, 0x52, 0xfe, 0xe7, 0x7e, 0xb1, 0xf8, 0xdc, 0xf7, 0xfd, 0xe1, 0x85, 0xe7, 0xac, 0xff, - 0x24, 0x0b, 0x85, 0x24, 0x13, 0xb2, 0x03, 0x93, 0xf7, 0xdb, 0x75, 0x37, 0xa2, 0xcb, 0x0d, 0x8f, - 0xb6, 0xa2, 0x10, 0x17, 0x49, 0xff, 0x3e, 0xbd, 0x24, 0xea, 0x9d, 0xef, 0x20, 0xa1, 0x53, 0xe3, - 0x94, 0x89, 0x5e, 0x99, 0x6c, 0xe3, 0x7a, 0xaa, 0xb8, 0x81, 0x87, 0xb8, 0xc2, 0x4e, 0x56, 0x0f, - 0xdf, 0xfa, 0x7b, 0xd4, 0x23, 0xd8, 0x8a, 0x05, 0xd4, 0xaa, 0x6f, 0x1f, 0xe0, 0xca, 0x1c, 0x7c, - 0x01, 0x31, 0x92, 0x94, 0x05, 0xc4, 0xc0, 0xd6, 0x3f, 0xcf, 0xc0, 0x94, 0x4d, 0x43, 0xbf, 0x13, - 0xd4, 0xe8, 0x2a, 0x75, 0xeb, 0x34, 0x60, 0xcb, 0xff, 0xae, 0xd7, 0xaa, 0x8b, 0x6f, 0x0a, 0x97, - 0xff, 0x23, 0xaf, 0xa5, 0x6f, 0xdd, 0x58, 0x4e, 0x3e, 0x07, 0xa3, 0xd5, 0xce, 0x36, 0xa2, 0x66, - 0xe3, 0x1d, 0x20, 0xec, 0x6c, 0x3b, 0x09, 0x74, 0x89, 0x46, 0xae, 0xc1, 0xe8, 0x03, 0x1a, 0x84, - 0xf1, 0x6e, 0x88, 0x47, 0xc3, 0x63, 0x0e, 0xd2, 0x09, 0x04, 0x16, 0xb9, 0x1d, 0xef, 0xc8, 0xe2, - 0x50, 0x9b, 0x4e, 0xec, 0x83, 0xf1, 0x52, 0x69, 0x0a, 0x88, 0xbe, 0x54, 0x24, 0x96, 0xf5, 0x53, - 0x59, 0x28, 0x94, 0xdd, 0xc8, 0xdd, 0x76, 0x43, 0x31, 0x9e, 0x0f, 0x6e, 0xb0, 0x3d, 0x5e, 0xeb, - 0x28, 0xee, 0xf1, 0xac, 0xe5, 0x1f, 0xbb, 0x7b, 0x2f, 0x27, 0xbb, 0x37, 0xce, 0x4e, 0x58, 0xd1, - 0xbd, 0xb8, 0x53, 0xef, 0x1e, 0xdf, 0xa9, 0x82, 0xe8, 0x54, 0x5e, 0x76, 0x2a, 0xee, 0x0a, 0x79, - 0x17, 0x86, 0xaa, 0x6d, 0x5a, 0x13, 0x9b, 0x88, 0x3c, 0x17, 0xcc, 0xce, 0x31, 0x84, 0x07, 0x37, - 0x96, 0x26, 0x04, 0x9b, 0xa1, 0xb0, 0x4d, 0x6b, 0x36, 0x92, 0x69, 0x1f, 0xcd, 0x3f, 0xce, 0xc1, - 0x5c, 0x1a, 0x99, 0xde, 0x8f, 0x91, 0x3e, 0xfd, 0xb8, 0x0c, 0x79, 0x76, 0x84, 0xb3, 0x63, 0x11, - 0xb7, 0x8b, 0xb1, 0xa5, 0x09, 0xd6, 0xe4, 0x3d, 0x01, 0xb3, 0x55, 0x29, 0xb9, 0xa8, 0x24, 0x82, - 0x7c, 0xcc, 0x4f, 0x48, 0x04, 0x52, 0x0e, 0x60, 0x73, 0x2d, 0x3f, 0x61, 0x14, 0x1c, 0xe2, 0x61, - 0x91, 0xe0, 0x78, 0xae, 0x03, 0x01, 0x31, 0x8e, 0x19, 0x79, 0x28, 0xac, 0x40, 0x5e, 0x76, 0x6b, - 0x7e, 0x02, 0x19, 0xcd, 0x24, 0x06, 0xe9, 0xc1, 0x0d, 0x3e, 0x99, 0x75, 0xf1, 0x5b, 0x67, 0x23, - 0x71, 0xc8, 0x0d, 0xc8, 0x6f, 0x06, 0xfe, 0x93, 0x83, 0x4a, 0x39, 0x9c, 0x9f, 0xbc, 0x90, 0xbb, - 0x3c, 0xb6, 0x74, 0xe6, 0xe8, 0xb0, 0x38, 0xdb, 0x66, 0x30, 0xc7, 0xab, 0xeb, 0x27, 0xad, 0x42, - 0xbc, 0x33, 0x94, 0xcf, 0x14, 0xb2, 0x77, 0x86, 0xf2, 0xd9, 0x42, 0x8e, 0x8b, 0x17, 0x77, 0x86, - 0xf2, 0x43, 0x85, 0xe1, 0x3b, 0x43, 0xf9, 0x61, 0x14, 0x38, 0xc6, 0x0a, 0x70, 0x67, 0x28, 0x3f, - 0x5e, 0x98, 0x30, 0x4e, 0x7b, 0x64, 0x10, 0xf9, 0x35, 0xbf, 0x61, 0xe7, 0xee, 0xdb, 0x15, 0x7b, - 0x64, 0xb9, 0xb4, 0x4c, 0x83, 0xc8, 0xce, 0x95, 0x1e, 0x56, 0xed, 0xc9, 0xf2, 0x41, 0xcb, 0x6d, - 0x7a, 0x35, 0x7e, 0x74, 0xda, 0xb9, 0xdb, 0xcb, 0x9b, 0x56, 0x09, 0xa6, 0xe2, 0xbe, 0xac, 0x79, - 0x61, 0x44, 0xae, 0xc1, 0x98, 0x84, 0xb0, 0x8d, 0x2e, 0x97, 0xda, 0x6b, 0x3b, 0xc6, 0xb1, 0x7e, - 0x37, 0x0b, 0x10, 0x97, 0x3c, 0xa3, 0xdf, 0xc2, 0x17, 0x8c, 0x6f, 0xe1, 0x54, 0xf2, 0x5b, 0xe8, - 0xf9, 0x15, 0x90, 0xf7, 0x61, 0x84, 0x89, 0x05, 0x1d, 0x29, 0x12, 0x9d, 0x49, 0x92, 0x62, 0xe1, - 0x83, 0x1b, 0x4b, 0x53, 0x82, 0x78, 0x24, 0x44, 0x88, 0x2d, 0xc8, 0xb4, 0xcf, 0xe8, 0x17, 0x46, - 0xe3, 0xc9, 0x10, 0x1f, 0xd0, 0x65, 0x50, 0x13, 0x2a, 0x06, 0x14, 0xbf, 0x8c, 0xb6, 0x9c, 0x64, - 0x55, 0x4a, 0xce, 0x02, 0x9b, 0x70, 0x31, 0xa8, 0xa3, 0x47, 0x87, 0xc5, 0x5c, 0x27, 0xf0, 0x70, - 0x11, 0x90, 0x6b, 0x20, 0x96, 0x81, 0x18, 0x40, 0xb6, 0xfa, 0x66, 0x6a, 0xae, 0x53, 0xa3, 0x41, - 0x14, 0x8f, 0xf8, 0x7c, 0x46, 0xae, 0x16, 0xd2, 0x06, 0x73, 0xa9, 0xcc, 0x0f, 0xe1, 0x32, 0xb8, - 0x9c, 0x3a, 0x2a, 0x57, 0x0d, 0x54, 0x2e, 0x46, 0x5e, 0x90, 0xa7, 0x52, 0x9d, 0x97, 0x39, 0x5d, - 0x22, 0xa5, 0x59, 0x01, 0xb9, 0x01, 0x6c, 0x85, 0x8a, 0xd1, 0x07, 0x51, 0x4f, 0xe9, 0x61, 0x75, - 0xe9, 0x94, 0xe0, 0x34, 0xe9, 0xee, 0xeb, 0xe4, 0x0c, 0x9b, 0xbc, 0x0d, 0x6c, 0x09, 0x8b, 0x71, - 0x27, 0x82, 0xe8, 0xf6, 0xf2, 0xe6, 0x72, 0xc3, 0xef, 0xd4, 0xab, 0x5f, 0x5e, 0x8b, 0x89, 0x77, - 0x6b, 0x6d, 0x9d, 0xf8, 0xf6, 0xf2, 0x26, 0x79, 0x1b, 0x86, 0x4b, 0xdf, 0xee, 0x04, 0x54, 0xc8, - 0x27, 0x13, 0xb2, 0x4e, 0x06, 0x5b, 0x3a, 0x23, 0x08, 0xa7, 0x5d, 0xf6, 0x53, 0x97, 0xeb, 0xb0, - 0x9c, 0xd5, 0xbc, 0xb5, 0x56, 0x15, 0xb2, 0x07, 0x49, 0x0c, 0xcb, 0xd6, 0x9a, 0xd6, 0xec, 0xc8, - 0xe8, 0x35, 0xa3, 0x22, 0xd7, 0x20, 0x5b, 0x2a, 0xa3, 0x46, 0x34, 0xbe, 0x38, 0x26, 0xab, 0x2d, - 0x2f, 0xcd, 0x09, 0x92, 0x09, 0x57, 0xff, 0x0c, 0xb2, 0xa5, 0x32, 0x59, 0x82, 0xe1, 0x7b, 0x07, - 0xd5, 0x2f, 0xaf, 0x89, 0xcd, 0x6c, 0x56, 0xae, 0x6b, 0x06, 0xdb, 0xc0, 0xcf, 0x3e, 0x8c, 0x5b, - 0xdc, 0x3c, 0x08, 0xbf, 0xd5, 0xd0, 0x5b, 0x8c, 0x68, 0x64, 0x13, 0xc6, 0x4a, 0xf5, 0xa6, 0xd7, - 0xba, 0x1f, 0xd2, 0x60, 0x7e, 0x1c, 0xf9, 0xcc, 0x27, 0xda, 0xad, 0xca, 0x97, 0xe6, 0x8f, 0x0e, - 0x8b, 0x73, 0x2e, 0xfb, 0xe9, 0x74, 0x42, 0x1a, 0x68, 0xdc, 0x62, 0x26, 0x64, 0x13, 0xe0, 0x9e, - 0xdf, 0xda, 0xf5, 0x4b, 0x51, 0xc3, 0x0d, 0x13, 0xdb, 0x63, 0x5c, 0xa0, 0xc4, 0x87, 0x53, 0x4d, - 0x06, 0x73, 0x5c, 0x06, 0xd4, 0x18, 0x6a, 0x3c, 0xc8, 0x2d, 0x18, 0xd9, 0x08, 0xdc, 0x5a, 0x83, - 0xce, 0x4f, 0x22, 0xb7, 0x39, 0xc1, 0x8d, 0x03, 0x65, 0x4f, 0xe7, 0x05, 0xc3, 0x82, 0x8f, 0x60, - 0x5d, 0x4d, 0xe1, 0x88, 0x0b, 0x0f, 0x81, 0x74, 0xaf, 0xc9, 0x14, 0x25, 0xe1, 0x35, 0x5d, 0x49, - 0x88, 0x3f, 0xfa, 0x65, 0xbf, 0xd9, 0x74, 0x5b, 0x75, 0xa4, 0x7d, 0xb0, 0xa8, 0xe9, 0x0e, 0xd6, - 0xb7, 0x60, 0xa6, 0x6b, 0xb0, 0x8e, 0xd1, 0xef, 0xde, 0x83, 0xe9, 0x32, 0xdd, 0x71, 0x3b, 0x8d, - 0x48, 0x9d, 0x24, 0xfc, 0x13, 0x45, 0x4d, 0xab, 0xce, 0x8b, 0x1c, 0x79, 0x7c, 0xd8, 0x49, 0x64, - 0xeb, 0x5d, 0x98, 0x34, 0xba, 0xcf, 0x54, 0x85, 0x52, 0xa7, 0xee, 0x45, 0x38, 0x91, 0x99, 0x58, - 0x55, 0x70, 0x19, 0x10, 0xa7, 0xcb, 0x8e, 0x11, 0xac, 0x7f, 0x4f, 0x97, 0x56, 0xc4, 0x4e, 0xc4, - 0xd4, 0x6a, 0xb1, 0x1f, 0x64, 0x62, 0xd9, 0xa9, 0x6b, 0x3f, 0x50, 0xbb, 0xc1, 0x15, 0xfe, 0x6d, - 0x66, 0xbb, 0xbe, 0xcd, 0x71, 0x31, 0x13, 0x39, 0x77, 0x3f, 0xe4, 0x5f, 0xa4, 0x5a, 0xa9, 0xb9, - 0x8f, 0xbf, 0x52, 0xdf, 0x87, 0x89, 0x7b, 0x6e, 0xcb, 0xdd, 0xa5, 0x75, 0xd6, 0x03, 0xbe, 0xf7, - 0x8c, 0x2d, 0x3d, 0x7f, 0x74, 0x58, 0x3c, 0xd3, 0xe4, 0x70, 0xec, 0xa5, 0xbe, 0x88, 0x0c, 0x02, - 0x72, 0x5d, 0x7e, 0xd9, 0xc3, 0x29, 0x5f, 0xf6, 0xa4, 0xa8, 0x7d, 0x18, 0xbf, 0x6c, 0xf1, 0x3d, - 0x5b, 0xbf, 0x35, 0x86, 0x7d, 0x24, 0xaf, 0xc3, 0x88, 0x4d, 0x77, 0xd9, 0x51, 0x93, 0x89, 0x27, - 0x29, 0x40, 0x88, 0x3e, 0x30, 0x1c, 0x07, 0xe5, 0x0c, 0x5a, 0x0f, 0xf7, 0xbc, 0x9d, 0x48, 0x8c, - 0x8e, 0x92, 0x33, 0x04, 0x58, 0x93, 0x33, 0x04, 0xc4, 0x54, 0x67, 0x39, 0x8c, 0xed, 0x7e, 0x76, - 0xb9, 0x2a, 0x06, 0x4d, 0x8e, 0xb0, 0x5d, 0xd6, 0xb6, 0x91, 0xc0, 0x90, 0x12, 0x18, 0x36, 0xb9, - 0x09, 0x63, 0xa5, 0x5a, 0xcd, 0xef, 0x68, 0x3a, 0x23, 0xff, 0x6e, 0x39, 0xd0, 0xbc, 0x22, 0x89, - 0x51, 0x49, 0x15, 0xc6, 0x57, 0x98, 0xa2, 0xe5, 0x2d, 0xbb, 0xb5, 0x3d, 0x39, 0x48, 0x72, 0x0f, - 0xd3, 0x4a, 0xe2, 0x2f, 0x97, 0x22, 0xb0, 0xc6, 0x80, 0xfa, 0x25, 0x83, 0x86, 0x4b, 0xb6, 0x60, - 0xbc, 0x4a, 0x6b, 0x01, 0x8d, 0xaa, 0x91, 0x1f, 0xd0, 0xc4, 0x96, 0xac, 0x95, 0x2c, 0x9d, 0x97, - 0xba, 0x5e, 0x88, 0x40, 0x27, 0x64, 0x50, 0x9d, 0xab, 0x86, 0xcc, 0x85, 0xf6, 0xa6, 0x1f, 0x1c, - 0x94, 0x97, 0xc4, 0x36, 0x1d, 0x9f, 0xe9, 0x1c, 0xac, 0x0b, 0xed, 0x0c, 0x52, 0xdf, 0x36, 0x85, - 0x76, 0x8e, 0x85, 0x33, 0x55, 0xae, 0xa2, 0x6c, 0x25, 0x36, 0xed, 0xe9, 0x78, 0x94, 0x11, 0xac, - 0xcd, 0x54, 0x3d, 0x44, 0xc9, 0xcc, 0x98, 0x29, 0x81, 0x45, 0xda, 0x40, 0xe4, 0xac, 0x71, 0x41, - 0xb7, 0x41, 0xc3, 0x50, 0xec, 0xe5, 0x67, 0x13, 0x93, 0x1f, 0x23, 0x2c, 0xbd, 0x2c, 0x98, 0x9f, - 0x93, 0xcb, 0x40, 0xe8, 0x69, 0xac, 0x50, 0xab, 0x27, 0x85, 0x37, 0x79, 0x0b, 0x60, 0xe5, 0x49, - 0x44, 0x83, 0x96, 0xdb, 0x50, 0xf7, 0x60, 0x78, 0xf5, 0x43, 0x05, 0xd4, 0x9c, 0x68, 0x0d, 0x99, - 0x2c, 0xc3, 0x64, 0x29, 0x0c, 0x3b, 0x4d, 0x6a, 0xfb, 0x0d, 0x5a, 0xb2, 0xd7, 0x71, 0xdf, 0x1f, - 0x5b, 0x3a, 0x77, 0x74, 0x58, 0x3c, 0xeb, 0x62, 0x81, 0x13, 0xf8, 0x0d, 0xea, 0xb8, 0x81, 0xbe, - 0xba, 0x4d, 0x1a, 0xb2, 0x01, 0xb0, 0xd1, 0xa6, 0xad, 0x2a, 0x75, 0x83, 0xda, 0x5e, 0x62, 0x9b, - 0x8f, 0x0b, 0x96, 0x5e, 0x10, 0x3d, 0x9c, 0xf3, 0xdb, 0xb4, 0x15, 0x22, 0x4c, 0x6f, 0x55, 0x8c, - 0x49, 0x1e, 0xc2, 0x74, 0xa5, 0x74, 0x6f, 0xd3, 0x6f, 0x78, 0xb5, 0x03, 0x21, 0x39, 0x4d, 0xe1, - 0xed, 0xe0, 0x69, 0xc1, 0x35, 0x51, 0xca, 0xb7, 0x27, 0xcf, 0x6d, 0x3a, 0x6d, 0x84, 0x3a, 0x42, - 0x7e, 0x4a, 0x72, 0x21, 0x1f, 0xb2, 0x35, 0x18, 0x32, 0x61, 0x70, 0xcb, 0xdd, 0x0d, 0xe7, 0xa7, - 0x8d, 0xdb, 0xae, 0xd2, 0xc3, 0xea, 0x55, 0xad, 0x94, 0x8b, 0x29, 0x0b, 0x7c, 0x21, 0x22, 0xd4, - 0x89, 0xdc, 0xdd, 0xd0, 0x5c, 0x88, 0x0a, 0x9b, 0xdc, 0x01, 0x28, 0xfb, 0xb5, 0x4e, 0x93, 0xb6, - 0xa2, 0xf2, 0xd2, 0x7c, 0xc1, 0x54, 0x05, 0x54, 0x41, 0xbc, 0xb5, 0xd5, 0xfd, 0x9a, 0xb1, 0x12, - 0x35, 0xea, 0x85, 0xf7, 0xa0, 0x90, 0x6c, 0xc8, 0x09, 0x2f, 0xb0, 0x26, 0x0b, 0x53, 0x5a, 0xef, - 0x57, 0x9e, 0x78, 0x61, 0x14, 0x5a, 0xdf, 0x6b, 0x7c, 0x81, 0x6c, 0x77, 0xb8, 0x4b, 0x0f, 0x36, - 0x03, 0xba, 0xe3, 0x3d, 0x11, 0x9b, 0x19, 0xee, 0x0e, 0x8f, 0xe8, 0x81, 0xd3, 0x46, 0xa8, 0xbe, - 0x3b, 0x28, 0x54, 0xf2, 0x79, 0xc8, 0xdf, 0xbd, 0x57, 0xbd, 0x4b, 0x0f, 0x2a, 0x65, 0x71, 0x50, - 0x71, 0xb2, 0x66, 0xe8, 0x30, 0x52, 0x63, 0xad, 0x29, 0x4c, 0x6b, 0x29, 0xde, 0x09, 0x59, 0xcd, - 0xcb, 0x8d, 0x4e, 0x18, 0xd1, 0xa0, 0x52, 0xd6, 0x6b, 0xae, 0x71, 0x60, 0x62, 0x5f, 0x52, 0xa8, - 0xd6, 0x3f, 0xce, 0xe2, 0x2e, 0xc8, 0x16, 0x7c, 0xa5, 0x15, 0x46, 0x6e, 0xab, 0x46, 0x15, 0x03, - 0x5c, 0xf0, 0x9e, 0x80, 0x26, 0x16, 0x7c, 0x8c, 0x6c, 0x56, 0x9d, 0x1d, 0xb8, 0x6a, 0x56, 0xa5, - 0xbc, 0xb9, 0xa8, 0x94, 0xf5, 0xeb, 0xd5, 0x40, 0x40, 0x13, 0x55, 0xc6, 0xc8, 0xe4, 0x12, 0x8c, - 0x56, 0x4a, 0xf7, 0x4a, 0x9d, 0x68, 0x0f, 0xf7, 0xe0, 0x3c, 0x97, 0xcf, 0xd9, 0x6a, 0x75, 0x3b, - 0xd1, 0x9e, 0x2d, 0x0b, 0xc9, 0x35, 0xd4, 0x7b, 0x5a, 0x34, 0xe2, 0xd7, 0xb0, 0xe2, 0xd0, 0x0d, - 0x39, 0x28, 0xa1, 0xf6, 0x30, 0x10, 0x79, 0x15, 0x86, 0x1f, 0x6c, 0x2e, 0x57, 0xca, 0x42, 0x71, - 0xc6, 0x93, 0xe8, 0x71, 0xbb, 0x66, 0xb6, 0x84, 0xa3, 0x58, 0xbf, 0x9d, 0x89, 0xf7, 0x37, 0x72, - 0xc9, 0x90, 0x47, 0xf0, 0xd2, 0x85, 0xc9, 0x23, 0xfa, 0xa5, 0x0b, 0x4a, 0x26, 0x36, 0x90, 0xe5, - 0x4e, 0x18, 0xf9, 0xcd, 0x95, 0x56, 0xbd, 0xed, 0x7b, 0xad, 0x08, 0xa9, 0xf8, 0xa8, 0x59, 0x47, - 0x87, 0xc5, 0xf3, 0x35, 0x2c, 0x75, 0xa8, 0x28, 0x76, 0x12, 0x5c, 0x52, 0xa8, 0x3f, 0xc1, 0x40, - 0x5a, 0xbf, 0x9f, 0x35, 0xce, 0x25, 0xd6, 0x3c, 0x9b, 0xb6, 0x1b, 0x5e, 0x0d, 0x55, 0xf1, 0xdb, - 0x81, 0xdf, 0x69, 0xab, 0xe5, 0x80, 0xcd, 0x0b, 0xe2, 0x52, 0x67, 0x97, 0x15, 0x9b, 0xbc, 0x53, - 0xa8, 0xc9, 0x07, 0x30, 0xc1, 0x44, 0x04, 0xf1, 0x33, 0x9c, 0xcf, 0xe2, 0x4c, 0xbc, 0x80, 0xd7, - 0x67, 0x21, 0x0d, 0x14, 0x1b, 0x43, 0xb6, 0xd0, 0x29, 0x48, 0x1d, 0xe6, 0xb7, 0x02, 0xb7, 0x15, - 0x7a, 0xd1, 0x4a, 0xab, 0x16, 0x1c, 0xa0, 0x48, 0xb3, 0xd2, 0x72, 0xb7, 0x1b, 0xb4, 0x8e, 0xdd, - 0xcd, 0x2f, 0x5d, 0x3e, 0x3a, 0x2c, 0xbe, 0x14, 0x71, 0x1c, 0x87, 0x2a, 0x24, 0x87, 0x72, 0x2c, - 0x8d, 0x73, 0x4f, 0x4e, 0x4c, 0x04, 0x92, 0xc3, 0x8a, 0xaf, 0x27, 0xfc, 0x74, 0x47, 0x11, 0x48, - 0xcd, 0x06, 0xdb, 0x7c, 0xf4, 0x66, 0xea, 0x04, 0xd6, 0xff, 0x99, 0x89, 0x4f, 0x4e, 0xf2, 0x0e, - 0x8c, 0x8b, 0xa5, 0xae, 0xad, 0x0b, 0xdc, 0xfa, 0xe4, 0x77, 0x91, 0x98, 0x59, 0x1d, 0x9d, 0x29, - 0xec, 0xa5, 0xe5, 0x35, 0x6d, 0x6d, 0xa0, 0xc2, 0xee, 0xd6, 0x1a, 0x49, 0x2a, 0x89, 0xc6, 0x16, - 0xc1, 0xd6, 0x5a, 0xd5, 0x1c, 0x15, 0x5c, 0x04, 0x51, 0x23, 0x4c, 0x19, 0x06, 0x0d, 0xf9, 0x93, - 0x77, 0xfc, 0x7f, 0xc8, 0xa4, 0x1d, 0xd0, 0x64, 0x09, 0x26, 0x1f, 0xfa, 0xc1, 0x23, 0x9c, 0x5f, - 0x6d, 0x10, 0x70, 0xe6, 0xf7, 0x65, 0x41, 0xb2, 0x43, 0x26, 0x89, 0xde, 0x36, 0x6d, 0x34, 0xcc, - 0xb6, 0x25, 0x38, 0x18, 0x04, 0x6c, 0x1e, 0x14, 0x47, 0xf5, 0x75, 0xe0, 0x3c, 0xc4, 0x4d, 0x30, - 0x96, 0xb0, 0x8e, 0x6e, 0xfd, 0x67, 0x19, 0xfd, 0x20, 0x66, 0x83, 0x5c, 0xf6, 0x9b, 0xae, 0xd7, - 0xd2, 0xba, 0xc3, 0x5f, 0x84, 0x10, 0x9a, 0x6c, 0x89, 0x86, 0x4c, 0x6e, 0x40, 0x9e, 0xff, 0x52, - 0x9b, 0x24, 0x5e, 0x47, 0x09, 0x42, 0x73, 0x87, 0x97, 0x88, 0x5d, 0x33, 0x93, 0x3b, 0xe9, 0xcc, - 0xfc, 0x56, 0x46, 0x3f, 0x43, 0x3f, 0xee, 0x29, 0x91, 0x38, 0x1d, 0xb2, 0x27, 0x39, 0x1d, 0x3e, - 0x71, 0x17, 0xbe, 0x2f, 0x03, 0xe3, 0xda, 0xf5, 0x02, 0xeb, 0xc3, 0x66, 0xe0, 0x7f, 0x44, 0x6b, - 0x91, 0xd9, 0x87, 0x36, 0x07, 0x26, 0xfa, 0xa0, 0x50, 0x3f, 0x41, 0x1f, 0xac, 0x3f, 0xcb, 0x08, - 0xe5, 0x66, 0xe0, 0x6d, 0xde, 0xdc, 0x92, 0xb3, 0x27, 0x39, 0xdb, 0x3e, 0x80, 0x61, 0x9b, 0xd6, - 0xbd, 0x50, 0x28, 0x26, 0x33, 0xba, 0x22, 0x85, 0x05, 0xb1, 0xc0, 0x13, 0xb0, 0x9f, 0xfa, 0xc1, - 0x84, 0xe5, 0x4c, 0x02, 0xad, 0x84, 0xb7, 0x1a, 0xf4, 0x89, 0xc7, 0x3f, 0x46, 0x71, 0x46, 0xa2, - 0x04, 0xea, 0x85, 0xce, 0x0e, 0x2b, 0x11, 0xa2, 0xb0, 0xfe, 0xe1, 0x19, 0x34, 0xd6, 0x87, 0x00, - 0x71, 0x95, 0xe4, 0x2e, 0x14, 0xc4, 0x6a, 0xf0, 0x5a, 0xbb, 0x5c, 0x02, 0x12, 0x63, 0x50, 0x3c, - 0x3a, 0x2c, 0x3e, 0x5f, 0x53, 0x65, 0x42, 0x5c, 0xd4, 0xf8, 0x76, 0x11, 0x5a, 0xff, 0x7e, 0x16, - 0xb2, 0x25, 0x9c, 0x90, 0xbb, 0xf4, 0x20, 0x72, 0xb7, 0x6f, 0x79, 0x0d, 0xe3, 0x63, 0x7a, 0x84, - 0x50, 0x67, 0xc7, 0x33, 0xee, 0x19, 0x34, 0x64, 0xf6, 0x31, 0xdd, 0x0d, 0xb6, 0xdf, 0x44, 0x42, - 0xed, 0x63, 0x7a, 0x14, 0x6c, 0xbf, 0x99, 0x24, 0x53, 0x88, 0xc4, 0x82, 0x11, 0xfe, 0x61, 0x89, - 0x35, 0x08, 0x47, 0x87, 0xc5, 0x11, 0xfe, 0xfd, 0xd9, 0xa2, 0x84, 0x9c, 0x85, 0x5c, 0x75, 0x73, - 0x5d, 0xec, 0x80, 0x78, 0x9f, 0x17, 0xb6, 0x5b, 0x36, 0x83, 0xb1, 0x3a, 0xd7, 0xca, 0xa5, 0x4d, - 0xd4, 0xe0, 0x87, 0xe3, 0x3a, 0x1b, 0x75, 0xb7, 0x9d, 0xd4, 0xe1, 0x15, 0x22, 0x79, 0x17, 0xc6, - 0xef, 0x96, 0x97, 0x57, 0xfd, 0x90, 0xef, 0x5e, 0x23, 0xf1, 0xe2, 0x7f, 0x54, 0xaf, 0x39, 0x78, - 0x85, 0x9e, 0x3c, 0x06, 0x34, 0x7c, 0xeb, 0x87, 0xb3, 0x30, 0xae, 0x5d, 0x70, 0x91, 0xcf, 0x8b, - 0x97, 0xcd, 0x8c, 0x21, 0xba, 0x6b, 0x18, 0xac, 0x94, 0xdf, 0x86, 0x34, 0xfd, 0x3a, 0x15, 0xef, - 0x9c, 0xf1, 0xcd, 0x43, 0x76, 0x90, 0x9b, 0x87, 0xb7, 0x00, 0xf8, 0x1a, 0xc0, 0x26, 0x6b, 0xe2, - 0x84, 0x66, 0xe0, 0xa0, 0xcf, 0x4b, 0x8c, 0x4c, 0x1e, 0xc0, 0xec, 0x56, 0xd0, 0x09, 0xa3, 0xea, - 0x41, 0x18, 0xd1, 0x26, 0xe3, 0xb6, 0xe9, 0xfb, 0x0d, 0xb1, 0xfe, 0x5e, 0x3a, 0x3a, 0x2c, 0x5e, - 0x88, 0x58, 0xb1, 0x13, 0x62, 0x39, 0x36, 0xc0, 0x69, 0xfb, 0xbe, 0x7e, 0x1f, 0x91, 0xc6, 0xc0, - 0xb2, 0x61, 0x42, 0xbf, 0xcd, 0x60, 0x27, 0x8b, 0x78, 0x05, 0x12, 0x77, 0xd4, 0xda, 0xc9, 0x22, - 0x5a, 0xd9, 0xfd, 0x2a, 0x65, 0x92, 0x58, 0x9f, 0xd7, 0x6f, 0xd2, 0x06, 0xfd, 0xb0, 0xad, 0x1f, - 0xc8, 0xc4, 0xdb, 0xc8, 0x83, 0xeb, 0xe4, 0x6d, 0x18, 0xe1, 0xaf, 0x6e, 0xe2, 0x71, 0xf2, 0x94, - 0xd2, 0x46, 0xf5, 0x27, 0x39, 0x7e, 0x85, 0xfd, 0x07, 0xfc, 0x65, 0xfe, 0x39, 0x5b, 0x90, 0xa8, - 0xdb, 0x6f, 0xf3, 0x22, 0x4c, 0x72, 0xc7, 0x7b, 0xde, 0xeb, 0x69, 0xb7, 0xdf, 0xd6, 0xef, 0x0c, - 0xc1, 0x94, 0x89, 0xa6, 0x3f, 0xcd, 0x65, 0x06, 0x7a, 0x9a, 0xfb, 0x00, 0xf2, 0x6c, 0x3c, 0xbc, - 0x1a, 0x95, 0x12, 0xd9, 0x4b, 0xf8, 0x26, 0x20, 0x60, 0xc6, 0x93, 0x33, 0xf0, 0xe9, 0x60, 0xca, - 0xa9, 0xad, 0xa8, 0xc8, 0xa2, 0xf6, 0x7e, 0x94, 0x8b, 0x85, 0x14, 0xf9, 0x7e, 0xa4, 0x7f, 0x0f, - 0xea, 0x25, 0xe9, 0x0d, 0x18, 0x61, 0x82, 0xb9, 0xba, 0x3b, 0xc1, 0x56, 0x32, 0x99, 0x3d, 0x61, - 0x5b, 0xc2, 0x91, 0xc8, 0x43, 0xc8, 0xaf, 0xb9, 0x61, 0x54, 0xa5, 0xb4, 0x35, 0xc0, 0xa3, 0x7b, - 0x51, 0x0c, 0xd5, 0x2c, 0xbe, 0x68, 0x87, 0x94, 0xb6, 0x12, 0xaf, 0xa6, 0x8a, 0x19, 0xf9, 0x3a, - 0xc0, 0xb2, 0xdf, 0x8a, 0x02, 0xbf, 0xb1, 0xe6, 0xef, 0xce, 0x8f, 0xa0, 0xd2, 0x7a, 0x3e, 0x31, - 0x01, 0x31, 0x02, 0xd7, 0x5b, 0xd5, 0xcd, 0x4c, 0x8d, 0x17, 0x38, 0x0d, 0x7f, 0x57, 0xff, 0x0e, - 0x62, 0x7c, 0x72, 0x0b, 0x0a, 0xf2, 0x46, 0xe0, 0x7e, 0x7b, 0x37, 0xc0, 0x05, 0x32, 0x1a, 0x4b, - 0x1e, 0xf4, 0x49, 0xe4, 0x74, 0x04, 0x5c, 0xdf, 0x29, 0x93, 0x34, 0xe4, 0x6b, 0x70, 0x26, 0x09, - 0x93, 0xb3, 0x9c, 0x8f, 0x65, 0x72, 0x9d, 0x5d, 0xca, 0xba, 0xef, 0xc5, 0xc2, 0xfa, 0x6e, 0x16, - 0xce, 0xf4, 0xe8, 0x2c, 0xfb, 0x1e, 0xf0, 0xb8, 0xd6, 0xbe, 0x87, 0xc4, 0x29, 0xcd, 0x8d, 0x85, - 0x2e, 0x40, 0x56, 0x1c, 0x70, 0x43, 0x4b, 0x85, 0xa3, 0xc3, 0xe2, 0x84, 0x31, 0x8f, 0xd9, 0x4a, - 0x99, 0xdc, 0x81, 0x21, 0x36, 0x45, 0x03, 0xbc, 0x79, 0xcb, 0xcb, 0xa0, 0xa9, 0xc8, 0xd3, 0x97, - 0x0f, 0x4e, 0x1d, 0xf2, 0x20, 0x9f, 0x87, 0xdc, 0xd6, 0xd6, 0x1a, 0xae, 0x9d, 0x1c, 0xf6, 0x7d, - 0x32, 0x8a, 0x1a, 0xc6, 0x52, 0x9d, 0x64, 0xb4, 0x57, 0x95, 0x89, 0x04, 0x43, 0x27, 0x5f, 0x49, - 0xd8, 0xe2, 0xbc, 0xda, 0x7f, 0xa2, 0x07, 0x37, 0xcd, 0xf9, 0x04, 0x16, 0x31, 0xd6, 0xcf, 0x67, - 0xe3, 0x6f, 0xf8, 0x96, 0xd7, 0x88, 0x68, 0x40, 0x16, 0xf8, 0x27, 0x19, 0x0b, 0x67, 0xb6, 0xfa, - 0x4d, 0xe6, 0xe3, 0xef, 0x9b, 0xb3, 0x52, 0x1f, 0xf2, 0xab, 0xda, 0x87, 0x9c, 0xc3, 0x0f, 0x79, - 0xaa, 0xe7, 0x27, 0xfb, 0x6a, 0xca, 0xba, 0xc4, 0x0f, 0x31, 0x65, 0xed, 0xbd, 0x04, 0x93, 0xeb, - 0xfe, 0xca, 0x93, 0x48, 0x21, 0xb2, 0x0f, 0x30, 0x6f, 0x9b, 0x40, 0xc6, 0x71, 0xa3, 0x51, 0xa7, - 0xc1, 0xd6, 0x9e, 0xdb, 0x32, 0x1e, 0x9d, 0xed, 0x2e, 0x38, 0xc3, 0x5d, 0xa7, 0xfb, 0x26, 0xee, - 0x28, 0xc7, 0x4d, 0xc2, 0xad, 0xef, 0xcf, 0xca, 0xc1, 0x78, 0xb0, 0xf8, 0x8c, 0x3e, 0x6e, 0xbe, - 0x69, 0x3c, 0x6e, 0xce, 0xaa, 0x6b, 0x59, 0xf5, 0x52, 0xbf, 0x78, 0xcc, 0x03, 0xff, 0xff, 0x38, - 0x0c, 0x13, 0x3a, 0x3a, 0x1b, 0x87, 0x52, 0xbd, 0x1e, 0xe8, 0xe3, 0xe0, 0xd6, 0xeb, 0x81, 0x8d, - 0x50, 0xe3, 0x3d, 0x3f, 0xd7, 0xf7, 0x3d, 0xff, 0x1b, 0x30, 0xb6, 0xdc, 0xac, 0x1b, 0xaf, 0x8c, - 0x56, 0x4a, 0xf3, 0xae, 0x2a, 0x24, 0xfe, 0x2d, 0xa8, 0xdb, 0xc6, 0x5a, 0xb3, 0xde, 0xfd, 0xb6, - 0x18, 0xb3, 0x34, 0x4c, 0x01, 0x86, 0x3f, 0x89, 0x29, 0xc0, 0x4d, 0x18, 0xbb, 0x1f, 0xd2, 0xad, - 0x4e, 0xab, 0x45, 0x1b, 0xb8, 0xac, 0xf2, 0x5c, 0xd6, 0xef, 0x84, 0xd4, 0x89, 0x10, 0xaa, 0x37, - 0x40, 0xa1, 0xea, 0x13, 0x3c, 0xda, 0x67, 0x82, 0x6f, 0x40, 0x7e, 0x93, 0xd2, 0x00, 0xc7, 0x74, - 0x3c, 0x16, 0xe9, 0xda, 0x94, 0x06, 0x0e, 0x1b, 0x58, 0xc3, 0x44, 0x40, 0x20, 0x1a, 0x76, 0x05, - 0x13, 0x03, 0xda, 0x15, 0x90, 0x17, 0x61, 0xa2, 0xdd, 0xd9, 0x6e, 0x78, 0x35, 0xe4, 0x2b, 0x0c, - 0x12, 0xec, 0x71, 0x0e, 0x63, 0x6c, 0x43, 0xf2, 0x15, 0x98, 0x44, 0x1d, 0x47, 0x2d, 0xb9, 0x29, - 0xe3, 0x39, 0xce, 0x28, 0xe3, 0x92, 0x4e, 0x8d, 0x81, 0x9c, 0x14, 0xbb, 0x19, 0x93, 0xd1, 0x42, - 0x15, 0xa6, 0xcc, 0x99, 0x7c, 0x0a, 0xaf, 0x72, 0xca, 0x46, 0x22, 0x5f, 0x18, 0xbb, 0x33, 0x94, - 0x87, 0xc2, 0x38, 0xb7, 0x8e, 0xb0, 0x61, 0x53, 0xf5, 0xc9, 0x26, 0x77, 0x3b, 0xdb, 0x34, 0x68, - 0xd1, 0x88, 0x86, 0x42, 0x09, 0x08, 0xed, 0xa1, 0x52, 0xbb, 0x1d, 0x5a, 0xff, 0x28, 0x0b, 0xa3, - 0xa5, 0x87, 0xd5, 0x4a, 0x6b, 0xc7, 0xc7, 0xb7, 0x35, 0xf5, 0xa4, 0xa2, 0xbf, 0xad, 0xa9, 0x27, - 0x15, 0xfd, 0x21, 0xe5, 0x5a, 0x8a, 0x1a, 0x87, 0xe6, 0xb7, 0x9a, 0x1a, 0x67, 0x28, 0xa0, 0xf1, - 0xeb, 0x52, 0x6e, 0x80, 0xd7, 0x25, 0x75, 0x01, 0x38, 0x74, 0xec, 0x05, 0x20, 0x79, 0x1b, 0xc6, - 0x2b, 0xad, 0x88, 0xee, 0x06, 0xf1, 0x4a, 0x57, 0x2a, 0xa5, 0x02, 0xeb, 0xa2, 0xbd, 0x86, 0xcd, - 0x96, 0x11, 0xbf, 0x74, 0x54, 0x97, 0x8d, 0xb8, 0x8c, 0xf8, 0xdd, 0x64, 0xe2, 0x3e, 0x40, 0x22, - 0x5a, 0xe5, 0xc4, 0x1a, 0x91, 0x2f, 0xf8, 0x5c, 0xf8, 0x9c, 0x8a, 0x6f, 0xdd, 0xd9, 0xc0, 0x2e, - 0xcd, 0xa4, 0xbf, 0xe0, 0x5b, 0x3f, 0x92, 0x85, 0xf1, 0x52, 0xbb, 0xfd, 0x8c, 0xdb, 0x51, 0x7d, - 0xd1, 0xd8, 0x5e, 0xa5, 0x2e, 0xa4, 0xfa, 0x35, 0x90, 0x09, 0xd5, 0xaf, 0x64, 0x61, 0x3a, 0x41, - 0xa1, 0xb7, 0x3e, 0x33, 0xa0, 0xf5, 0x54, 0x76, 0x40, 0xeb, 0xa9, 0xdc, 0x60, 0xd6, 0x53, 0x43, - 0x9f, 0x64, 0xcb, 0x7c, 0x05, 0x72, 0xa5, 0x76, 0x3b, 0xf9, 0x0a, 0xdb, 0x6e, 0x3f, 0xb8, 0xc1, - 0xf5, 0x59, 0xb7, 0xdd, 0xb6, 0x19, 0x86, 0xb1, 0x8f, 0x8d, 0x0c, 0xb8, 0x8f, 0x59, 0x6f, 0xc0, - 0x18, 0xf2, 0x42, 0x9b, 0xa5, 0x0b, 0x80, 0x1f, 0xb3, 0x30, 0x57, 0x32, 0xea, 0x12, 0x9f, 0xf9, - 0xbf, 0xcc, 0xc0, 0x30, 0xfe, 0x7e, 0x46, 0xd7, 0xd8, 0xa2, 0xb1, 0xc6, 0x0a, 0xda, 0x1a, 0x1b, - 0x64, 0x75, 0xfd, 0x83, 0x1c, 0xc0, 0xf2, 0x86, 0x5d, 0xe5, 0xd7, 0x1e, 0xe4, 0x16, 0x4c, 0xbb, - 0x8d, 0x86, 0xbf, 0x4f, 0xeb, 0x8e, 0x1f, 0x78, 0xbb, 0x5e, 0x8b, 0x8f, 0x9c, 0x7c, 0x1a, 0x34, - 0x8b, 0xb4, 0x3e, 0x4f, 0x89, 0xa2, 0x0d, 0x5e, 0xa2, 0xf3, 0x69, 0xd2, 0x68, 0xcf, 0xaf, 0x4b, - 0x05, 0xce, 0xe0, 0x23, 0x8a, 0x52, 0xf8, 0xdc, 0xe3, 0x25, 0x3a, 0x9f, 0x3d, 0x54, 0x48, 0xa5, - 0xfc, 0x68, 0xf0, 0x11, 0x45, 0x29, 0x7c, 0xb8, 0x16, 0x1b, 0x92, 0x35, 0x98, 0x41, 0x88, 0x53, - 0x0b, 0x68, 0x9d, 0xb6, 0x22, 0xcf, 0x6d, 0x84, 0x42, 0xe5, 0xc7, 0xcb, 0xa1, 0xae, 0x42, 0x5d, - 0xe5, 0xc1, 0xc2, 0xe5, 0xb8, 0x8c, 0x5c, 0x85, 0xd1, 0xa6, 0xfb, 0xc4, 0x71, 0x77, 0xf9, 0x23, - 0xf9, 0x24, 0x57, 0x11, 0x05, 0x48, 0xdf, 0xb0, 0x9b, 0xee, 0x93, 0xd2, 0x2e, 0x65, 0xbd, 0xa0, - 0x4f, 0xda, 0x7e, 0xa8, 0xf5, 0x62, 0x24, 0xee, 0x45, 0xa2, 0x48, 0xef, 0x85, 0x28, 0x12, 0xbd, - 0xb0, 0xfe, 0xaf, 0x61, 0x5c, 0xda, 0x62, 0x13, 0x10, 0x76, 0x5d, 0x99, 0x14, 0xbb, 0xae, 0xb7, - 0x40, 0x3b, 0xe2, 0xf4, 0xab, 0x3d, 0xed, 0x80, 0xd7, 0xd5, 0xc2, 0x18, 0x99, 0x3c, 0x4a, 0x5a, - 0x78, 0xe5, 0xf0, 0xcb, 0xb9, 0x98, 0x5c, 0x57, 0x4f, 0xc5, 0xb8, 0x6b, 0x15, 0x48, 0xa5, 0x15, - 0xd2, 0x5a, 0x27, 0xa0, 0xd5, 0x47, 0x5e, 0xfb, 0x01, 0x0d, 0xbc, 0x9d, 0x03, 0x31, 0x2f, 0x28, - 0x44, 0x79, 0xa2, 0xd4, 0x09, 0x1f, 0x79, 0x6d, 0xa6, 0x37, 0x7a, 0x3b, 0x07, 0x76, 0x0a, 0x0d, - 0x79, 0x1f, 0x46, 0x6d, 0xba, 0x1f, 0x78, 0x91, 0xb4, 0x5b, 0x98, 0x52, 0xb7, 0x1c, 0x08, 0xe5, - 0x53, 0x14, 0xf0, 0x1f, 0xfa, 0xc7, 0x2a, 0xca, 0xc9, 0x22, 0x3f, 0xa5, 0xb8, 0x7d, 0xc2, 0x64, - 0xdc, 0xdb, 0xd2, 0xc3, 0x6a, 0xaf, 0x43, 0x8a, 0x5c, 0x81, 0x61, 0x3c, 0xea, 0x84, 0x00, 0x87, - 0xf6, 0xfe, 0x28, 0xf0, 0xe8, 0xe7, 0x30, 0x62, 0x90, 0xf3, 0x00, 0xea, 0xb9, 0x28, 0x9c, 0xcf, - 0xa3, 0x68, 0xa5, 0x41, 0x92, 0xe7, 0xf4, 0xd8, 0x89, 0xce, 0xe9, 0x35, 0x28, 0xd8, 0xf4, 0x5b, - 0x1d, 0x2f, 0xa0, 0xf5, 0x52, 0x1b, 0xdf, 0x24, 0xc2, 0x79, 0xc0, 0x05, 0x76, 0xe1, 0xe8, 0xb0, - 0xf8, 0x42, 0x20, 0xca, 0x1c, 0xb7, 0xcd, 0x9f, 0x32, 0x8c, 0xd5, 0x9d, 0xa4, 0x24, 0x6f, 0xc1, - 0x10, 0xdb, 0x11, 0x84, 0x2d, 0x98, 0xbc, 0xdb, 0x8d, 0x37, 0x09, 0xae, 0x69, 0xd7, 0x7c, 0x63, - 0xa9, 0x22, 0xc9, 0xa7, 0x67, 0x5f, 0xf5, 0x2b, 0x59, 0xb8, 0xa8, 0x0e, 0xc1, 0x8d, 0xa0, 0x5a, - 0xba, 0xb7, 0x56, 0xa9, 0x6f, 0x0a, 0x9d, 0x71, 0x33, 0xf0, 0x1f, 0x7b, 0x75, 0x1a, 0x3c, 0xb8, - 0x7e, 0xcc, 0x16, 0xbe, 0xc6, 0x3f, 0x1f, 0x7e, 0xe1, 0x9c, 0x35, 0x2c, 0x51, 0x34, 0x59, 0x43, - 0x18, 0xcb, 0xb4, 0xdb, 0x5d, 0xf7, 0xcf, 0xab, 0xcf, 0xd9, 0x31, 0x03, 0xf2, 0x03, 0x19, 0x38, - 0x9d, 0xde, 0x10, 0x71, 0x8f, 0x50, 0x94, 0xfa, 0x4a, 0x8f, 0xd6, 0x2e, 0xbd, 0x72, 0x74, 0x58, - 0xbc, 0x18, 0xba, 0xcd, 0x86, 0xe3, 0xd5, 0x79, 0x6d, 0x5e, 0x8d, 0x3a, 0x6d, 0x81, 0x60, 0xd4, - 0xdb, 0xa3, 0xa6, 0x2f, 0x81, 0xdc, 0xc9, 0xe7, 0x33, 0x4b, 0x00, 0x79, 0x79, 0xa7, 0x67, 0xfd, - 0x7a, 0x06, 0xb4, 0xa5, 0x9d, 0xb7, 0x69, 0xdd, 0x0b, 0x68, 0x2d, 0x12, 0xbb, 0xb9, 0xf0, 0xa3, - 0xe1, 0xb0, 0x84, 0xe1, 0x11, 0xc2, 0xc8, 0x7b, 0x30, 0x2a, 0x76, 0x1d, 0xdc, 0xb8, 0xe3, 0x4f, - 0x42, 0xdc, 0x16, 0x72, 0x87, 0xab, 0xae, 0x1d, 0x4b, 0x12, 0x31, 0xad, 0xe8, 0xce, 0xc3, 0xad, - 0xe5, 0x86, 0xeb, 0x35, 0x43, 0x71, 0xfa, 0xe1, 0xb0, 0x7e, 0xb4, 0x1f, 0x39, 0x35, 0x84, 0xea, - 0x5a, 0x91, 0x42, 0xb5, 0x6e, 0xcb, 0xcb, 0xca, 0x63, 0xac, 0xe7, 0x8a, 0x30, 0xfc, 0x20, 0xbe, - 0xb4, 0x58, 0x1a, 0x3b, 0x3a, 0x2c, 0xf2, 0xe5, 0x62, 0x73, 0xb8, 0xf5, 0x37, 0x32, 0x30, 0x65, - 0xae, 0x27, 0x72, 0x15, 0x46, 0x84, 0x0f, 0x4b, 0x06, 0x2f, 0x67, 0xd8, 0x28, 0x8c, 0x70, 0xef, - 0x15, 0xc3, 0x67, 0x45, 0x60, 0xb1, 0xf3, 0x5b, 0x70, 0x10, 0x87, 0x17, 0x9e, 0xdf, 0x35, 0x0e, - 0xb2, 0x65, 0x19, 0xb1, 0x98, 0xf0, 0x1e, 0x76, 0x1a, 0x91, 0x7e, 0x67, 0x1f, 0x20, 0xc4, 0x16, - 0x25, 0xd6, 0x32, 0x8c, 0xf0, 0xbd, 0x24, 0x61, 0xb5, 0x93, 0x39, 0x81, 0xd5, 0x8e, 0x75, 0x98, - 0x01, 0xa8, 0x56, 0x57, 0xef, 0xd2, 0x83, 0x4d, 0xd7, 0x0b, 0xf0, 0x91, 0x09, 0xf7, 0xed, 0xbb, - 0xe2, 0xe3, 0x9a, 0x10, 0x8f, 0x4c, 0x7c, 0x8f, 0x7f, 0x44, 0x0f, 0x8c, 0x47, 0x26, 0x89, 0x8a, - 0x87, 0x43, 0xe0, 0x3d, 0x76, 0x23, 0xca, 0x08, 0xb3, 0x48, 0xc8, 0x0f, 0x07, 0x0e, 0x4d, 0x50, - 0x6a, 0xc8, 0xe4, 0xeb, 0x30, 0x15, 0xff, 0x52, 0x4f, 0x65, 0x53, 0xea, 0x03, 0x36, 0x0b, 0x97, - 0xce, 0x1f, 0x1d, 0x16, 0x17, 0x34, 0xae, 0xc9, 0x47, 0xb4, 0x04, 0x33, 0xeb, 0x97, 0x32, 0xf8, - 0x40, 0x2c, 0x3b, 0x78, 0x09, 0x86, 0x94, 0x2d, 0xe2, 0x84, 0xd8, 0x75, 0xcc, 0xe7, 0x00, 0x2c, - 0x27, 0x17, 0x21, 0x17, 0xf7, 0x04, 0xf7, 0x6a, 0xb3, 0x07, 0xac, 0x94, 0xdc, 0x86, 0xd1, 0x81, - 0xda, 0x8c, 0x9f, 0x46, 0x4a, 0x5b, 0x25, 0x35, 0xce, 0xc2, 0x9d, 0x87, 0x5b, 0x9f, 0xdd, 0x59, - 0xf8, 0x89, 0x2c, 0x4c, 0xb3, 0x71, 0x2d, 0x75, 0xa2, 0x3d, 0x3f, 0xf0, 0xa2, 0x83, 0x67, 0xf6, - 0x76, 0xeb, 0x1d, 0x43, 0x34, 0x5e, 0x90, 0xa7, 0x8c, 0xde, 0xb7, 0x81, 0x2e, 0xb9, 0xfe, 0xeb, - 0x61, 0x98, 0x4d, 0xa1, 0x22, 0xaf, 0x1b, 0x17, 0xd0, 0xf3, 0xd2, 0x47, 0xf5, 0xbb, 0x87, 0xc5, - 0x09, 0x89, 0xbe, 0x15, 0xfb, 0xac, 0x2e, 0x9a, 0xd6, 0x16, 0x7c, 0xa4, 0xf0, 0x3e, 0x5a, 0xb7, - 0xb6, 0x30, 0x6d, 0x2c, 0xae, 0xc0, 0xb0, 0xed, 0x37, 0xa8, 0x34, 0x0d, 0x42, 0x09, 0x23, 0x60, - 0x00, 0xe3, 0x45, 0x95, 0x01, 0xc8, 0x2a, 0x8c, 0xb2, 0x3f, 0xee, 0xb9, 0x6d, 0xf1, 0x56, 0x40, - 0x94, 0x72, 0x86, 0xd0, 0xb6, 0xd7, 0xda, 0xd5, 0xf5, 0xb3, 0x06, 0x75, 0x9a, 0x6e, 0xdb, 0x10, - 0x85, 0x38, 0xa2, 0xa1, 0xe7, 0xe5, 0x7b, 0xeb, 0x79, 0x99, 0x63, 0xf5, 0xbc, 0x1d, 0x80, 0xaa, - 0xb7, 0xdb, 0xf2, 0x5a, 0xbb, 0xa5, 0xc6, 0xae, 0xf0, 0xf4, 0xbd, 0xd2, 0x7b, 0x16, 0xae, 0xc6, - 0xc8, 0xb8, 0x70, 0x9f, 0xc7, 0x07, 0x3d, 0x0e, 0x73, 0xdc, 0xc6, 0xae, 0xe1, 0x91, 0xa0, 0x71, - 0x26, 0xeb, 0x00, 0xa5, 0x5a, 0xe4, 0x3d, 0x66, 0x4b, 0x38, 0x14, 0x72, 0x8b, 0x6c, 0xf2, 0x72, - 0xe9, 0x2e, 0x3d, 0xa8, 0xd2, 0x28, 0x7e, 0x1a, 0x71, 0x11, 0x95, 0x7d, 0x09, 0x86, 0xb9, 0x79, - 0xcc, 0x81, 0xb4, 0xe1, 0x54, 0xa9, 0x5e, 0xf7, 0x58, 0x1f, 0xdc, 0x06, 0xbe, 0xf5, 0xd1, 0x3a, - 0xb2, 0x9e, 0x48, 0x67, 0x7d, 0x45, 0xb0, 0x7e, 0xd1, 0x55, 0x54, 0x4e, 0xc4, 0xc9, 0x92, 0xd5, - 0xa4, 0x33, 0xb6, 0xaa, 0x30, 0x65, 0x76, 0xde, 0xf4, 0x50, 0x9e, 0x80, 0xbc, 0x5d, 0x2d, 0x39, - 0xd5, 0xd5, 0xd2, 0xf5, 0x42, 0x86, 0x14, 0x60, 0x42, 0xfc, 0x5a, 0x74, 0x16, 0xdf, 0xbc, 0x59, - 0xc8, 0x1a, 0x90, 0x37, 0xaf, 0x2f, 0x16, 0x72, 0x0b, 0xd9, 0xf9, 0x4c, 0xc2, 0x39, 0x68, 0xb4, - 0x90, 0xe7, 0x97, 0x60, 0xd6, 0xaf, 0x66, 0x20, 0x2f, 0xdb, 0x4e, 0x6e, 0x42, 0xae, 0x5a, 0x5d, - 0x4d, 0xb8, 0xf3, 0xc4, 0xa7, 0x0c, 0xdf, 0x4f, 0xc3, 0x50, 0xb7, 0xd9, 0x64, 0x04, 0x8c, 0x6e, - 0x6b, 0xad, 0x2a, 0x84, 0x03, 0x49, 0x17, 0x6f, 0xde, 0x9c, 0x2e, 0xc5, 0xc7, 0xe1, 0x26, 0xe4, - 0xee, 0x3c, 0xdc, 0x12, 0x5a, 0x85, 0xa4, 0x8b, 0xf7, 0x53, 0x4e, 0xf7, 0xd1, 0xbe, 0xbe, 0xcb, - 0x33, 0x02, 0xcb, 0x86, 0x71, 0x6d, 0x21, 0xf3, 0x43, 0xb7, 0xe9, 0x2b, 0xb7, 0x5c, 0x71, 0xe8, - 0x32, 0x88, 0x2d, 0x4a, 0x98, 0x8c, 0xb0, 0xe6, 0xd7, 0xdc, 0x86, 0x38, 0xbd, 0x51, 0x46, 0x68, - 0x30, 0x80, 0xcd, 0xe1, 0xd6, 0x6f, 0x67, 0xa0, 0x80, 0x92, 0x14, 0xda, 0x5c, 0xfa, 0x8f, 0x68, - 0xeb, 0xc1, 0x75, 0xf2, 0x86, 0xfc, 0xe4, 0x32, 0xea, 0xc2, 0x61, 0x18, 0x3f, 0xb9, 0xc4, 0x8b, - 0x85, 0xf8, 0xec, 0x34, 0xcf, 0xe7, 0xec, 0xe0, 0x1e, 0x93, 0xc7, 0x78, 0x3e, 0x17, 0x61, 0x18, - 0x9b, 0x23, 0x36, 0x47, 0x6c, 0x79, 0xc4, 0x00, 0x36, 0x87, 0x6b, 0x7b, 0xd3, 0x4f, 0x65, 0xbb, - 0xfa, 0xb0, 0xf8, 0x99, 0xf2, 0x3a, 0x34, 0x3b, 0x37, 0xd0, 0x7e, 0xfd, 0x21, 0xcc, 0x25, 0x87, - 0x04, 0x2f, 0x83, 0x4a, 0x30, 0x6d, 0xc2, 0xe5, 0xbd, 0xd0, 0x99, 0xd4, 0xba, 0x1e, 0x2c, 0xda, - 0x49, 0x7c, 0xeb, 0x7f, 0xcd, 0xc0, 0x18, 0xfe, 0x69, 0x77, 0x1a, 0x68, 0x42, 0x53, 0x7a, 0x58, - 0x15, 0x17, 0xbf, 0xba, 0x30, 0xe7, 0xee, 0x87, 0x8e, 0xb8, 0x1b, 0x36, 0xf6, 0x18, 0x85, 0x2c, - 0x48, 0xf9, 0x8d, 0xae, 0xbc, 0x1c, 0x51, 0xa4, 0xfc, 0xea, 0x37, 0x4c, 0x90, 0x0a, 0x64, 0x34, - 0xbc, 0x7b, 0x58, 0x65, 0xcb, 0x4f, 0x7f, 0xd3, 0x46, 0x3a, 0xbf, 0x61, 0x1a, 0xde, 0x71, 0x34, - 0x7c, 0xd2, 0x7e, 0x58, 0x2d, 0xd9, 0xeb, 0xc6, 0x93, 0x36, 0x6b, 0xa3, 0x61, 0xe0, 0x2d, 0x90, - 0xac, 0x7f, 0x02, 0xc9, 0x01, 0x14, 0x07, 0xde, 0x09, 0xbf, 0x8d, 0xb7, 0x61, 0xb8, 0xd4, 0x68, - 0xf8, 0xfb, 0x62, 0x97, 0x90, 0x77, 0x53, 0x6a, 0xfc, 0xf8, 0x79, 0x86, 0xd7, 0x2b, 0x86, 0x27, - 0x15, 0x03, 0x90, 0x65, 0x18, 0x2b, 0x3d, 0xac, 0x56, 0x2a, 0xe5, 0xad, 0x2d, 0xee, 0x35, 0x92, - 0x5b, 0x7a, 0x59, 0x8e, 0x8f, 0xe7, 0xd5, 0x9d, 0xe4, 0xab, 0x6a, 0x2c, 0xbf, 0xc7, 0x74, 0xe4, - 0x5d, 0x80, 0x3b, 0xbe, 0xd7, 0xe2, 0xd7, 0x49, 0xa2, 0xf3, 0xe7, 0x8e, 0x0e, 0x8b, 0xe3, 0x1f, - 0xf9, 0x5e, 0x4b, 0xdc, 0x3f, 0xb1, 0xb6, 0xc7, 0x48, 0xb6, 0xf6, 0x37, 0x1b, 0xe9, 0x25, 0x9f, - 0x9b, 0xc5, 0x0c, 0xc7, 0x23, 0xbd, 0xed, 0x77, 0x59, 0xc4, 0x48, 0x34, 0xd2, 0x84, 0xe9, 0x6a, - 0x67, 0x77, 0x97, 0xb2, 0x9d, 0x5d, 0x5c, 0xa0, 0x8c, 0x08, 0x1d, 0x57, 0xc5, 0xea, 0xe0, 0xfa, - 0x08, 0xd3, 0x52, 0xc2, 0xa5, 0xd7, 0xd9, 0x42, 0xfe, 0xce, 0x61, 0x51, 0xbc, 0xd6, 0x32, 0x51, - 0x2d, 0x94, 0xf4, 0xdd, 0xd7, 0x27, 0x49, 0xde, 0x64, 0x03, 0x46, 0x6e, 0x7b, 0xd1, 0x6a, 0x67, - 0x5b, 0x78, 0x41, 0xbc, 0xd8, 0xe7, 0xa3, 0xe1, 0x88, 0xfc, 0xb9, 0x60, 0xd7, 0x8b, 0xf6, 0x3a, - 0xba, 0x1d, 0xba, 0x60, 0x43, 0x1e, 0x42, 0x7e, 0xd9, 0x0b, 0x6a, 0x0d, 0xba, 0x5c, 0x11, 0x67, - 0xff, 0xc5, 0x3e, 0x2c, 0x25, 0x2a, 0x1f, 0x97, 0x1a, 0xfe, 0xaa, 0x79, 0xba, 0x2c, 0x20, 0x31, - 0xc8, 0xdf, 0xca, 0xc0, 0xf3, 0xaa, 0xf5, 0xa5, 0x5d, 0xda, 0x8a, 0xee, 0xb9, 0x51, 0x6d, 0x8f, - 0x06, 0x62, 0x94, 0xc6, 0xfa, 0x8d, 0xd2, 0x97, 0xba, 0x46, 0xe9, 0x72, 0x3c, 0x4a, 0x2e, 0x63, - 0xe6, 0x34, 0x39, 0xb7, 0xee, 0x31, 0xeb, 0x57, 0x2b, 0x71, 0x00, 0xe2, 0xf7, 0x1f, 0xe1, 0x45, - 0xf7, 0x72, 0x9f, 0x0e, 0xc7, 0xc8, 0xc2, 0xfa, 0x5d, 0xfd, 0x36, 0xac, 0xc0, 0x14, 0x94, 0xdc, - 0x95, 0x2e, 0x47, 0x5c, 0x2a, 0xb9, 0xd0, 0x87, 0x37, 0x77, 0x43, 0x9a, 0xed, 0xe3, 0x5c, 0xc8, - 0x67, 0x7b, 0xcd, 0xdd, 0x16, 0x82, 0xc8, 0x31, 0xb3, 0xbd, 0xe6, 0xc6, 0xb3, 0xdd, 0x70, 0x93, - 0xb3, 0xbd, 0xe6, 0x6e, 0x93, 0x65, 0xee, 0x27, 0xc9, 0x9d, 0xea, 0xce, 0xf7, 0xe3, 0xb6, 0xbc, - 0xc9, 0x4f, 0xe6, 0x14, 0x7f, 0xc9, 0xaf, 0xc2, 0x58, 0xb5, 0xed, 0xd6, 0x68, 0xc3, 0xdb, 0x89, - 0xc4, 0x83, 0xe0, 0x4b, 0x7d, 0x58, 0x29, 0x5c, 0xf1, 0x98, 0x24, 0x7f, 0xea, 0x6a, 0x92, 0xc2, - 0x61, 0x2d, 0xdc, 0xda, 0xbc, 0x37, 0x3f, 0x7d, 0x6c, 0x0b, 0xb7, 0x36, 0xef, 0x09, 0x99, 0xa3, - 0xdd, 0x34, 0x64, 0x8e, 0xcd, 0x7b, 0xa4, 0x0d, 0x53, 0x5b, 0x34, 0x08, 0xdc, 0x1d, 0x3f, 0x68, - 0xf2, 0x0b, 0x3b, 0xee, 0xa8, 0x71, 0xa5, 0x1f, 0x3f, 0x83, 0x80, 0xdf, 0xd4, 0x46, 0x12, 0xe6, - 0x24, 0x6f, 0xf9, 0x12, 0xfc, 0xad, 0xdf, 0xc8, 0xc1, 0x99, 0x1e, 0xad, 0x24, 0xeb, 0x72, 0x57, - 0xcc, 0x18, 0x37, 0xab, 0x3d, 0xd0, 0xaf, 0x1e, 0xbb, 0x51, 0xae, 0x41, 0x61, 0xe5, 0x2e, 0x8a, - 0xd3, 0xfc, 0xce, 0x7b, 0xb9, 0x24, 0xcf, 0x13, 0xbc, 0xfd, 0xa3, 0x8f, 0xd0, 0x84, 0x4d, 0xde, - 0x95, 0xd7, 0x0c, 0x27, 0xcb, 0x2e, 0xca, 0x85, 0xef, 0xcf, 0xc2, 0x10, 0x9e, 0x6d, 0x89, 0xd0, - 0x32, 0x99, 0x13, 0x85, 0x96, 0xf9, 0x00, 0x26, 0x56, 0xee, 0x72, 0x65, 0x77, 0xd5, 0x0d, 0xf7, - 0xc4, 0xce, 0x8b, 0x2f, 0xc2, 0xf4, 0x91, 0x23, 0x74, 0xe3, 0x3d, 0xd7, 0x10, 0x2b, 0x0d, 0x0a, - 0x72, 0x1f, 0x66, 0x79, 0xdb, 0xbc, 0x1d, 0xaf, 0xc6, 0x23, 0x54, 0x78, 0x6e, 0x43, 0x6c, 0xc3, - 0x17, 0x8f, 0x0e, 0x8b, 0x45, 0xfa, 0x08, 0x8d, 0xf3, 0x44, 0xb9, 0x13, 0x22, 0x82, 0x6e, 0xa5, - 0x97, 0x42, 0xaf, 0xbb, 0xcd, 0xdb, 0x63, 0x58, 0x21, 0xab, 0x8d, 0xd5, 0xcd, 0x70, 0x39, 0x92, - 0xf5, 0xeb, 0xc3, 0xb0, 0xd0, 0x7b, 0x07, 0x25, 0x5f, 0x36, 0x27, 0xf0, 0xd2, 0xb1, 0x7b, 0xee, - 0xf1, 0x73, 0xf8, 0x15, 0x98, 0x5b, 0x69, 0x45, 0x34, 0x68, 0x07, 0x9e, 0x0c, 0x94, 0xb0, 0xea, - 0x87, 0xd2, 0x18, 0x12, 0xad, 0x12, 0xa9, 0x2a, 0x17, 0xf7, 0x92, 0x68, 0x9a, 0xa9, 0xb1, 0x4a, - 0xe5, 0x40, 0x56, 0x60, 0x4a, 0x83, 0x37, 0x3a, 0xbb, 0x42, 0x66, 0xe0, 0x4f, 0x0f, 0x1a, 0xcf, - 0x46, 0x47, 0xb7, 0x14, 0x4b, 0x10, 0x2d, 0xfc, 0x52, 0x4e, 0x2c, 0x8b, 0x8b, 0x90, 0xab, 0x76, - 0xb6, 0xc5, 0x72, 0xe0, 0xca, 0x81, 0x71, 0x90, 0xb0, 0x52, 0xf2, 0x45, 0x00, 0x9b, 0xb6, 0xfd, - 0xd0, 0x8b, 0xfc, 0xe0, 0x40, 0xf7, 0xb7, 0x09, 0x14, 0xd4, 0xb4, 0x2c, 0x96, 0x50, 0xb2, 0x0a, - 0xd3, 0xf1, 0xaf, 0x8d, 0xfd, 0x96, 0xb8, 0x4c, 0x1d, 0xe3, 0xb7, 0x18, 0x31, 0xb9, 0xe3, 0xb3, - 0x32, 0xfd, 0x68, 0x4c, 0x90, 0x91, 0x45, 0xc8, 0x3f, 0xf4, 0x83, 0x47, 0x3b, 0x6c, 0xa2, 0x86, - 0xe2, 0xc3, 0x7b, 0x5f, 0xc0, 0xf4, 0x43, 0x4a, 0xe2, 0xb1, 0x35, 0xbf, 0xd2, 0x7a, 0xec, 0x05, - 0x7e, 0xab, 0x49, 0x5b, 0x91, 0xfe, 0x5a, 0x4e, 0x63, 0xb0, 0xe1, 0xe9, 0x18, 0x83, 0x99, 0xae, - 0x5e, 0xaa, 0x45, 0x7e, 0x20, 0x9e, 0xca, 0xf9, 0x74, 0x33, 0x80, 0x31, 0xdd, 0x0c, 0xc0, 0x06, - 0xd1, 0xa6, 0x3b, 0xe2, 0xd9, 0x00, 0x07, 0x31, 0xa0, 0x3b, 0x86, 0x1b, 0x27, 0xdd, 0x61, 0xc2, - 0x87, 0x4d, 0x77, 0xf0, 0x82, 0xc1, 0x88, 0x7e, 0xb4, 0xd3, 0x75, 0x35, 0x25, 0xd0, 0xac, 0xdf, - 0x1b, 0xeb, 0xb9, 0x6e, 0xd9, 0x6e, 0x7f, 0xb2, 0x75, 0xbb, 0xe6, 0x0e, 0xb0, 0x6e, 0x5f, 0x57, - 0xf6, 0xca, 0xba, 0xef, 0x32, 0x42, 0xf4, 0xe3, 0x86, 0xe3, 0x2c, 0xfc, 0x72, 0xfe, 0x24, 0x8b, - 0x48, 0x0c, 0x52, 0x76, 0xd0, 0x41, 0xca, 0x0d, 0x34, 0x48, 0x64, 0x09, 0x26, 0x55, 0xfc, 0xac, - 0x4d, 0x37, 0x32, 0xf6, 0x26, 0x15, 0xf4, 0xcc, 0x69, 0xbb, 0x91, 0xbe, 0x37, 0x99, 0x24, 0xe4, - 0x1d, 0x18, 0x17, 0x46, 0xfb, 0xc8, 0x61, 0x38, 0x36, 0x9b, 0x94, 0x16, 0xfe, 0x09, 0x7a, 0x1d, - 0x9d, 0x7d, 0x92, 0x9b, 0x5e, 0x9b, 0x36, 0xbc, 0x16, 0xad, 0xe2, 0x6d, 0xbd, 0x58, 0x31, 0xf8, - 0x49, 0xb6, 0x45, 0x89, 0xc3, 0x2f, 0xf2, 0x8d, 0x7b, 0x3a, 0x83, 0x28, 0xb9, 0x58, 0x47, 0x4f, - 0xb4, 0x58, 0xb9, 0xd5, 0x52, 0xb0, 0xe6, 0xef, 0x7a, 0xd2, 0x4e, 0x53, 0x5a, 0x2d, 0x05, 0x4e, - 0x83, 0x41, 0x13, 0x56, 0x4b, 0x1c, 0x95, 0x69, 0x12, 0xec, 0x47, 0xa5, 0x2c, 0x9e, 0xa8, 0x50, - 0x93, 0x40, 0x22, 0xd3, 0x38, 0x96, 0x23, 0xc9, 0x6a, 0x56, 0x9a, 0xae, 0xd7, 0x10, 0x2e, 0xaa, - 0x71, 0x35, 0x94, 0x41, 0x93, 0xd5, 0x20, 0x2a, 0xa9, 0xc1, 0x84, 0x4d, 0x77, 0x36, 0x03, 0x3f, - 0xa2, 0xb5, 0x88, 0xd6, 0x85, 0xf4, 0x24, 0x15, 0x88, 0x25, 0xdf, 0xe7, 0x92, 0xe1, 0xd2, 0x1b, - 0xbf, 0x77, 0x58, 0xcc, 0x7c, 0xe7, 0xb0, 0x08, 0x0c, 0xc4, 0x2d, 0xaf, 0x8f, 0x0e, 0x8b, 0x67, - 0xd8, 0xfc, 0xb7, 0x25, 0xb1, 0x7e, 0xc4, 0xe8, 0x4c, 0xc9, 0xf7, 0xb2, 0x4d, 0x57, 0x0d, 0x49, - 0x5c, 0xd9, 0x44, 0x8f, 0xca, 0xde, 0x4c, 0xad, 0xac, 0xa8, 0x8d, 0x76, 0x6a, 0xa5, 0xa9, 0x95, - 0x90, 0x77, 0x61, 0x7c, 0xb9, 0xb2, 0xec, 0xb7, 0x76, 0xbc, 0xdd, 0xea, 0x6a, 0x09, 0x45, 0x30, - 0x61, 0x75, 0x5f, 0xf3, 0x9c, 0x1a, 0xc2, 0x9d, 0x70, 0xcf, 0x35, 0x9c, 0xaf, 0x62, 0x7c, 0x72, - 0x1b, 0xa6, 0xe4, 0x4f, 0x9b, 0xee, 0xdc, 0xb7, 0x2b, 0x28, 0x79, 0x49, 0x57, 0x07, 0xc5, 0x81, - 0x0d, 0x44, 0x27, 0xd0, 0x25, 0xf2, 0x04, 0x19, 0x5b, 0x8c, 0x65, 0xda, 0x6e, 0xf8, 0x07, 0xac, - 0x79, 0x5b, 0x1e, 0x0d, 0x50, 0xd6, 0x12, 0x8b, 0xb1, 0xae, 0x4a, 0x9c, 0xc8, 0x33, 0xb6, 0xdb, - 0x04, 0x11, 0x59, 0x87, 0x19, 0xb1, 0xc4, 0x1f, 0x78, 0xa1, 0xb7, 0xed, 0x35, 0xbc, 0xe8, 0x00, - 0xa5, 0x2c, 0x21, 0x85, 0xc8, 0xef, 0xe2, 0xb1, 0x2a, 0xd5, 0x98, 0x75, 0x93, 0x5a, 0xbf, 0x9a, - 0x85, 0x17, 0xfa, 0x69, 0x1c, 0xa4, 0x6a, 0x6e, 0x66, 0x97, 0x07, 0xd0, 0x52, 0x8e, 0xdf, 0xce, - 0x56, 0x60, 0x6a, 0x23, 0xd8, 0x75, 0x5b, 0xde, 0xb7, 0x51, 0x93, 0x54, 0xc6, 0x5b, 0x38, 0x18, - 0xbe, 0x56, 0x62, 0xae, 0xf6, 0x04, 0xd1, 0xc2, 0x63, 0xb1, 0xcd, 0x7d, 0x5c, 0x37, 0xa0, 0x9b, - 0x30, 0xb6, 0xec, 0xb7, 0x22, 0xfa, 0x24, 0x4a, 0x78, 0xab, 0x72, 0x60, 0xd2, 0x05, 0x4a, 0xa2, - 0x5a, 0xff, 0x6f, 0x16, 0xce, 0xf5, 0x15, 0xb9, 0xc9, 0x96, 0x39, 0x6a, 0x57, 0x06, 0x91, 0xd3, - 0x8f, 0x1f, 0xb6, 0xc5, 0x2e, 0x3b, 0xa3, 0x63, 0xad, 0xec, 0x17, 0xfe, 0xdb, 0x8c, 0x18, 0xa4, - 0xcf, 0xc1, 0x28, 0x56, 0xa5, 0x86, 0x88, 0xdf, 0x46, 0xe1, 0x2e, 0xec, 0x99, 0xb7, 0x51, 0x1c, - 0x8d, 0xdc, 0x80, 0xfc, 0xb2, 0xdb, 0x68, 0x68, 0xbe, 0xbc, 0xa8, 0x49, 0xd4, 0x10, 0x96, 0x30, - 0x4b, 0x93, 0x88, 0xe4, 0x2d, 0x00, 0xfe, 0xb7, 0x76, 0x56, 0xe0, 0x66, 0x29, 0xc8, 0x12, 0xc7, - 0x85, 0x86, 0x8c, 0x11, 0x00, 0x6b, 0xbe, 0x72, 0x3a, 0xe4, 0x11, 0x00, 0x19, 0xc0, 0x88, 0x00, - 0xc8, 0x00, 0xd6, 0xaf, 0xe5, 0xe0, 0x7c, 0x7f, 0xbd, 0x91, 0xdc, 0x37, 0xa7, 0xe0, 0xd5, 0x81, - 0xb4, 0xcd, 0xe3, 0xe7, 0x40, 0xc6, 0xd3, 0xe4, 0x03, 0x72, 0xb9, 0xdb, 0x18, 0xfe, 0xbb, 0x87, - 0x45, 0xcd, 0xd6, 0xf1, 0x8e, 0xef, 0xb5, 0xb4, 0xb7, 0x89, 0x6f, 0x01, 0x54, 0x23, 0x37, 0xf2, - 0x6a, 0x77, 0x1e, 0xde, 0x95, 0xe1, 0x26, 0x6e, 0x0e, 0xd6, 0xb2, 0x98, 0x8e, 0xef, 0x2b, 0xc2, - 0x0f, 0x07, 0xa1, 0xce, 0x47, 0xfb, 0x8f, 0x0c, 0xcd, 0x38, 0x46, 0x5e, 0xf8, 0x12, 0x14, 0x92, - 0xa4, 0xe4, 0x12, 0x0c, 0x61, 0x03, 0x34, 0x8b, 0xfe, 0x04, 0x07, 0x2c, 0x5f, 0xb8, 0x27, 0xd6, - 0xce, 0x0a, 0x4c, 0x89, 0x07, 0x71, 0xf3, 0x0e, 0x0e, 0xbf, 0x57, 0xf9, 0x9e, 0xde, 0x7d, 0x0f, - 0x97, 0x20, 0xb2, 0xfe, 0x3c, 0x03, 0x67, 0x7b, 0x6a, 0xe4, 0x64, 0xd3, 0x9c, 0xb0, 0x97, 0x8f, - 0x53, 0xe1, 0x8f, 0x9d, 0xab, 0x85, 0x1f, 0x93, 0x6b, 0xff, 0x3d, 0x98, 0xa8, 0x76, 0xb6, 0x93, - 0x4a, 0x16, 0x0f, 0x3e, 0xa0, 0xc1, 0xf5, 0x13, 0x4c, 0xc7, 0x67, 0xfd, 0x97, 0x2f, 0xfe, 0xc2, - 0xb2, 0x44, 0xb3, 0xb2, 0x52, 0x6e, 0x7c, 0xe8, 0x28, 0x6a, 0xd8, 0x15, 0x99, 0x44, 0xd6, 0xaf, - 0x64, 0xd3, 0xb5, 0x55, 0xa6, 0xdd, 0x9f, 0x40, 0x5b, 0xbd, 0xbd, 0xbc, 0x79, 0x7c, 0xdf, 0xff, - 0x73, 0xd9, 0x77, 0x7c, 0x00, 0x15, 0x3b, 0x9e, 0xbc, 0x50, 0x14, 0x0f, 0xa0, 0x72, 0x77, 0x0c, - 0xcd, 0x07, 0x50, 0x89, 0x4c, 0xde, 0x84, 0xb1, 0x35, 0x9f, 0x3b, 0x70, 0xcb, 0x1e, 0x73, 0x3f, - 0x37, 0x09, 0xd4, 0xb7, 0x47, 0x85, 0xc9, 0x74, 0x0b, 0x73, 0xe2, 0xa5, 0x31, 0x19, 0xea, 0x16, - 0x89, 0xe5, 0x62, 0x5e, 0xbb, 0x99, 0x64, 0xd6, 0x7f, 0x3c, 0x0c, 0xd6, 0xf1, 0x97, 0x06, 0xe4, - 0x43, 0x73, 0xec, 0xae, 0x0e, 0x7c, 0xdd, 0x30, 0xd0, 0x96, 0x5b, 0xea, 0xd4, 0x3d, 0xda, 0xaa, - 0x99, 0xde, 0xd7, 0x02, 0xa6, 0x6f, 0x81, 0x12, 0xef, 0xe3, 0x38, 0x43, 0x2d, 0xfc, 0x97, 0xb9, - 0xf8, 0x53, 0x4b, 0x1c, 0x8d, 0x99, 0x8f, 0x71, 0x34, 0x92, 0xbb, 0x50, 0xd0, 0x21, 0xda, 0x4b, - 0x28, 0x4a, 0x2e, 0x06, 0xa3, 0x44, 0xa3, 0xba, 0x08, 0xcd, 0xf3, 0x35, 0x37, 0xf8, 0xf9, 0x1a, - 0x8b, 0xef, 0x58, 0xff, 0x50, 0xb7, 0xf8, 0x9e, 0x74, 0x78, 0xd4, 0xd0, 0xa5, 0xb7, 0x76, 0x28, - 0x0e, 0xad, 0x61, 0xd3, 0x5b, 0x3b, 0xe5, 0xe0, 0xd2, 0xd1, 0xa5, 0xc3, 0x39, 0xfe, 0xd4, 0xfc, - 0x2d, 0x95, 0xc3, 0x39, 0xa7, 0x4f, 0x73, 0x38, 0x57, 0x24, 0xec, 0x00, 0xb4, 0x3b, 0x2d, 0x1e, - 0x6a, 0x76, 0x34, 0x3e, 0x00, 0x83, 0x4e, 0xcb, 0x49, 0x86, 0x9b, 0x55, 0x88, 0xd6, 0x8f, 0x65, - 0x61, 0x8a, 0x6f, 0xb8, 0xfc, 0x29, 0xe3, 0x99, 0x7d, 0x26, 0x7a, 0xdb, 0x78, 0x26, 0x92, 0xb1, - 0x75, 0xf4, 0xae, 0x0d, 0xf4, 0x48, 0xb4, 0x07, 0xa4, 0x9b, 0x86, 0xd8, 0x30, 0xa1, 0x43, 0xfb, - 0xbf, 0x0f, 0x5d, 0x8f, 0xc3, 0x30, 0x89, 0xf3, 0x0e, 0x1f, 0xe9, 0x42, 0xdb, 0xe0, 0x61, 0xfd, - 0x8d, 0x2c, 0x4c, 0x6a, 0x8f, 0xfa, 0xcf, 0xec, 0xc0, 0x7f, 0xc9, 0x18, 0xf8, 0x79, 0xe5, 0xf4, - 0xa1, 0x7a, 0x36, 0xd0, 0xb8, 0x77, 0x60, 0xa6, 0x8b, 0x24, 0x69, 0x1b, 0x91, 0x19, 0xc4, 0x36, - 0xe2, 0xf5, 0xee, 0x98, 0x2e, 0x3c, 0x34, 0xb2, 0x0a, 0x14, 0xa0, 0x07, 0x91, 0xf9, 0x89, 0x2c, - 0xcc, 0x89, 0x5f, 0x18, 0x04, 0x8d, 0x4b, 0x1c, 0xcf, 0xec, 0x5c, 0x94, 0x8c, 0xb9, 0x28, 0x9a, - 0x73, 0xa1, 0x75, 0xb0, 0xf7, 0x94, 0x58, 0x3f, 0x04, 0x30, 0xdf, 0x8b, 0x60, 0x60, 0xdf, 0xca, - 0xd8, 0x73, 0x25, 0x3b, 0x80, 0xe7, 0xca, 0x1a, 0x14, 0xb0, 0x2a, 0x11, 0xe6, 0x28, 0x64, 0x7a, - 0x6b, 0x2e, 0x56, 0x12, 0x79, 0xa4, 0x3a, 0x11, 0x76, 0x29, 0x4c, 0x28, 0xae, 0x5d, 0x94, 0xe4, - 0x97, 0x32, 0x30, 0x85, 0xc0, 0x95, 0xc7, 0xb4, 0x15, 0x21, 0xb3, 0x21, 0xe1, 0x68, 0xa1, 0x5e, - 0x91, 0xaa, 0x51, 0xe0, 0xb5, 0x76, 0xc5, 0x33, 0xd2, 0xb6, 0x78, 0x46, 0x7a, 0x87, 0x3f, 0x7f, - 0x5d, 0xad, 0xf9, 0xcd, 0x6b, 0xbb, 0x81, 0xfb, 0xd8, 0xe3, 0xf6, 0x2a, 0x6e, 0xe3, 0x5a, 0x1c, - 0x99, 0xbf, 0xed, 0x25, 0x62, 0xed, 0x0b, 0x56, 0xf8, 0x44, 0xc7, 0x1b, 0x4a, 0xb1, 0xda, 0xa4, - 0x7e, 0x6d, 0xb6, 0x88, 0x7c, 0x0f, 0x9c, 0xe1, 0x31, 0x4c, 0x98, 0x9a, 0xe6, 0xb5, 0x3a, 0x7e, - 0x27, 0x5c, 0x72, 0x6b, 0x8f, 0x98, 0xac, 0xc6, 0x9d, 0xc5, 0xb0, 0xe7, 0x35, 0x55, 0xe8, 0x6c, - 0xf3, 0x52, 0xc3, 0x39, 0x36, 0x9d, 0x01, 0x59, 0x85, 0x19, 0x5e, 0x54, 0xea, 0x44, 0x7e, 0xb5, - 0xe6, 0x36, 0xbc, 0xd6, 0x2e, 0x1e, 0x08, 0x79, 0x7e, 0x1e, 0xb9, 0x9d, 0xc8, 0x77, 0x42, 0x0e, - 0xd7, 0xd5, 0xed, 0x2e, 0x22, 0x52, 0x81, 0x69, 0x9b, 0xba, 0xf5, 0x7b, 0xee, 0x93, 0x65, 0xb7, - 0xed, 0xd6, 0x98, 0xf2, 0x9e, 0xc7, 0x27, 0x57, 0x3c, 0x95, 0x03, 0xea, 0xd6, 0x9d, 0xa6, 0xfb, - 0xc4, 0xa9, 0x89, 0x42, 0xf3, 0xde, 0xd5, 0xa0, 0x53, 0xac, 0xbc, 0x96, 0x62, 0x35, 0x96, 0x64, - 0xe5, 0xb5, 0x7a, 0xb3, 0x8a, 0xe9, 0x24, 0xab, 0x2d, 0x37, 0xd8, 0xa5, 0x11, 0x37, 0xf7, 0x84, - 0x0b, 0x99, 0xcb, 0x19, 0x8d, 0x55, 0x84, 0x65, 0x0e, 0x9a, 0x7e, 0x26, 0x59, 0x69, 0x74, 0x6c, - 0xe5, 0x3d, 0x0c, 0xbc, 0x88, 0xea, 0x3d, 0x1c, 0xc7, 0x66, 0xe1, 0xf8, 0xa3, 0xa1, 0x6c, 0xaf, - 0x2e, 0x76, 0x51, 0xc6, 0xdc, 0xb4, 0x4e, 0x4e, 0x74, 0x71, 0x4b, 0xef, 0x65, 0x17, 0xa5, 0xe2, - 0xa6, 0xf7, 0x73, 0x12, 0xfb, 0xa9, 0x71, 0xeb, 0xd1, 0xd1, 0x2e, 0x4a, 0xb2, 0xce, 0x06, 0x2d, - 0xa2, 0x2d, 0xb6, 0xa2, 0x85, 0xb9, 0xeb, 0x14, 0x36, 0xed, 0x25, 0x61, 0xb3, 0x55, 0x08, 0x64, - 0xb1, 0x93, 0x62, 0xfc, 0x9a, 0x24, 0x26, 0x7f, 0x05, 0xa6, 0xef, 0x87, 0xf4, 0x56, 0x65, 0xb3, - 0x2a, 0x43, 0x9e, 0xe0, 0x0d, 0xd1, 0xd4, 0xe2, 0xf5, 0x63, 0x36, 0x9d, 0xab, 0x3a, 0x0d, 0x06, - 0xc8, 0xe7, 0xf3, 0xd6, 0x09, 0xa9, 0xb3, 0xe3, 0xb5, 0x43, 0x15, 0x3f, 0x4a, 0x9f, 0xb7, 0x44, - 0x55, 0xd6, 0x2a, 0xcc, 0x74, 0xb1, 0x21, 0x53, 0x00, 0x0c, 0xe8, 0xdc, 0x5f, 0xaf, 0xae, 0x6c, - 0x15, 0x9e, 0x23, 0x05, 0x98, 0xc0, 0xdf, 0x2b, 0xeb, 0xa5, 0xa5, 0xb5, 0x95, 0x72, 0x21, 0x43, - 0x66, 0x60, 0x12, 0x21, 0xe5, 0x4a, 0x95, 0x83, 0xb2, 0x3c, 0x3c, 0xb2, 0x5d, 0xe0, 0x9f, 0x6e, - 0xc4, 0x3e, 0x00, 0x3c, 0x53, 0xac, 0xbf, 0x9d, 0x85, 0xb3, 0xf2, 0x58, 0xa1, 0x11, 0x13, 0xc1, - 0xbc, 0xd6, 0xee, 0x33, 0x7e, 0x3a, 0xdc, 0x32, 0x4e, 0x87, 0x97, 0x12, 0x27, 0x75, 0xa2, 0x97, - 0x7d, 0x8e, 0x88, 0xdf, 0x1a, 0x83, 0x73, 0x7d, 0xa9, 0xc8, 0x97, 0xd9, 0x69, 0xee, 0xd1, 0x56, - 0x54, 0xa9, 0x37, 0xe8, 0x96, 0xd7, 0xa4, 0x7e, 0x27, 0x12, 0xe6, 0xd5, 0x17, 0xf1, 0x52, 0x06, - 0x0b, 0x1d, 0xaf, 0xde, 0xa0, 0x4e, 0xc4, 0x8b, 0x8d, 0xe5, 0xd6, 0x4d, 0xcd, 0x58, 0xaa, 0x64, - 0x1d, 0x95, 0x56, 0x44, 0x83, 0xc7, 0x68, 0xc2, 0xa5, 0x58, 0x3e, 0xa2, 0xb4, 0xed, 0xb8, 0xac, - 0xd4, 0xf1, 0x44, 0xb1, 0xc9, 0xb2, 0x8b, 0x9a, 0xdc, 0xd2, 0x58, 0x2e, 0x33, 0x15, 0xee, 0x9e, - 0xfb, 0x44, 0xd8, 0x94, 0x88, 0xd8, 0x77, 0x8a, 0x25, 0xf7, 0xe7, 0x6c, 0xba, 0x4f, 0xec, 0x6e, - 0x12, 0xf2, 0x75, 0x38, 0x25, 0x0e, 0x20, 0xe1, 0x8f, 0x2f, 0x7b, 0xcc, 0xbd, 0xfd, 0x5f, 0x39, - 0x3a, 0x2c, 0x9e, 0x91, 0x51, 0x03, 0x65, 0x04, 0x86, 0xb4, 0x5e, 0xa7, 0x73, 0x21, 0x5b, 0xec, - 0x40, 0x4e, 0x0c, 0xc7, 0x3d, 0x1a, 0x86, 0xd2, 0xd1, 0x48, 0xa8, 0x37, 0xfa, 0x60, 0x3a, 0x4d, - 0x5e, 0x6e, 0xf7, 0xa4, 0x24, 0xab, 0x30, 0xf5, 0x90, 0x6e, 0xeb, 0xf3, 0x33, 0xa2, 0xb6, 0xaa, - 0xc2, 0x3e, 0xdd, 0xee, 0x3d, 0x39, 0x09, 0x3a, 0xe2, 0xe1, 0x25, 0xef, 0x93, 0x83, 0x35, 0x2f, - 0x8c, 0x68, 0x8b, 0x06, 0x18, 0xe7, 0x65, 0x14, 0x37, 0x83, 0xf9, 0x58, 0x42, 0x36, 0xcb, 0x97, - 0x5e, 0x3c, 0x3a, 0x2c, 0x9e, 0xe3, 0x1e, 0x7b, 0x0d, 0x01, 0x77, 0x12, 0xa9, 0x2e, 0xba, 0xb9, - 0x92, 0x6f, 0xc2, 0xb4, 0xed, 0x77, 0x22, 0xaf, 0xb5, 0x5b, 0x8d, 0x02, 0x37, 0xa2, 0xbb, 0xfc, - 0x40, 0x8a, 0x03, 0xca, 0x24, 0x4a, 0xc5, 0xfb, 0x20, 0x07, 0x3a, 0xa1, 0x80, 0x1a, 0x27, 0x82, - 0x49, 0x40, 0xbe, 0x01, 0x53, 0xdc, 0x13, 0x5b, 0x55, 0x30, 0x66, 0x84, 0xe9, 0x36, 0x0b, 0x1f, - 0x5c, 0x17, 0x26, 0x00, 0x08, 0x4d, 0xab, 0x20, 0xc1, 0x8d, 0x7c, 0x55, 0x0c, 0xd6, 0xa6, 0xd7, - 0xda, 0x55, 0xcb, 0x18, 0x70, 0xe4, 0xdf, 0x88, 0x87, 0xa4, 0xcd, 0x9a, 0x2b, 0x97, 0x71, 0x0f, - 0x7b, 0xa6, 0x6e, 0x3e, 0x24, 0x82, 0x73, 0xa5, 0x30, 0xf4, 0xc2, 0x48, 0x38, 0x21, 0xac, 0x3c, - 0xa1, 0xb5, 0x0e, 0x43, 0x66, 0x8a, 0x22, 0x0d, 0xb8, 0x11, 0xec, 0xf0, 0xd2, 0xd5, 0xa3, 0xc3, - 0xe2, 0xab, 0x2e, 0x22, 0x3a, 0xc2, 0x6f, 0xc1, 0xa1, 0x12, 0xd5, 0xd9, 0xe7, 0xb8, 0x5a, 0x1f, - 0xfa, 0x33, 0x25, 0xdf, 0x80, 0xd3, 0xcb, 0x6e, 0x48, 0x2b, 0xad, 0x90, 0xb6, 0x42, 0x2f, 0xf2, - 0x1e, 0x53, 0x31, 0xa8, 0x78, 0xf8, 0xe5, 0x31, 0x29, 0x88, 0x55, 0x73, 0x43, 0xf6, 0x61, 0x2a, - 0x14, 0x47, 0x4c, 0x8a, 0x56, 0x4d, 0x0f, 0x2e, 0xc4, 0x86, 0xa9, 0x6a, 0x75, 0xb5, 0xec, 0xb9, - 0xea, 0xbb, 0x9a, 0xc4, 0xf1, 0x7a, 0x15, 0xef, 0x67, 0xc2, 0x3d, 0xa7, 0xee, 0xb9, 0xea, 0x83, - 0xea, 0x31, 0x58, 0x09, 0x0e, 0xd6, 0x61, 0x06, 0x0a, 0xc9, 0xa9, 0x24, 0x5f, 0x81, 0x31, 0x6e, - 0x0c, 0x44, 0xc3, 0x3d, 0xe1, 0x98, 0x2c, 0x6d, 0x4b, 0x14, 0xdc, 0x24, 0x12, 0x4e, 0x41, 0xdc, - 0xd4, 0x88, 0xea, 0x76, 0x0b, 0xe8, 0x14, 0x24, 0x89, 0x48, 0x1d, 0x26, 0xf8, 0x6c, 0x51, 0x8c, - 0x26, 0x25, 0x6c, 0x42, 0x5f, 0xd4, 0xbf, 0x0e, 0x51, 0x94, 0xe0, 0x8f, 0x4f, 0x3f, 0x62, 0x4d, - 0x70, 0x04, 0xa3, 0x0a, 0x83, 0xeb, 0x12, 0x40, 0x5e, 0x12, 0x5a, 0x67, 0xe1, 0x4c, 0x8f, 0x36, - 0x5b, 0x8f, 0xf1, 0x39, 0xb8, 0x47, 0x8d, 0xe4, 0x2b, 0x30, 0x87, 0x84, 0xcb, 0x7e, 0xab, 0x45, - 0x6b, 0x11, 0x6e, 0x47, 0xf2, 0x0a, 0x35, 0xc7, 0x6d, 0x0e, 0x78, 0x7f, 0x6b, 0x0a, 0xc1, 0x49, - 0xde, 0xa4, 0xa6, 0x72, 0xb0, 0x7e, 0x36, 0x0b, 0xf3, 0x62, 0x87, 0xb3, 0x69, 0xcd, 0x0f, 0xea, - 0xcf, 0xfe, 0x89, 0xba, 0x62, 0x9c, 0xa8, 0x17, 0x55, 0x24, 0x8a, 0xb4, 0x4e, 0xf6, 0x39, 0x50, - 0x7f, 0x25, 0x03, 0x2f, 0xf4, 0x23, 0x62, 0xa3, 0xa3, 0xa2, 0x67, 0x8d, 0x75, 0x45, 0xc9, 0x6a, - 0xc3, 0x2c, 0x4e, 0xe8, 0xf2, 0x1e, 0xad, 0x3d, 0x0a, 0x57, 0xfd, 0x30, 0x42, 0xb3, 0xf4, 0x6c, - 0x8f, 0x07, 0xcb, 0xd7, 0x53, 0x1f, 0x2c, 0x4f, 0xf3, 0x55, 0x56, 0x43, 0x1e, 0x3c, 0xbe, 0xd7, - 0x23, 0x7a, 0x10, 0xda, 0x69, 0xac, 0xd1, 0xbc, 0xb8, 0xd4, 0x89, 0xf6, 0x36, 0x03, 0xba, 0x43, - 0x03, 0xda, 0xaa, 0xd1, 0xcf, 0x98, 0x79, 0xb1, 0xd9, 0xb9, 0x81, 0x6e, 0x30, 0xfe, 0xad, 0x49, - 0x98, 0x4b, 0x23, 0x63, 0xe3, 0xa2, 0x29, 0xcd, 0xc9, 0x9c, 0x65, 0x3f, 0x98, 0x81, 0x89, 0x2a, - 0xad, 0xf9, 0xad, 0xfa, 0x2d, 0x34, 0x0b, 0x11, 0xa3, 0xe3, 0x70, 0xa1, 0x81, 0xc1, 0x9d, 0x9d, - 0x84, 0xbd, 0xc8, 0x77, 0x0f, 0x8b, 0x1f, 0x0c, 0xa6, 0xab, 0xd6, 0x7c, 0x8c, 0x26, 0x11, 0x61, - 0x4c, 0x6d, 0x55, 0x05, 0xbe, 0xf0, 0x18, 0x95, 0x92, 0x25, 0x98, 0x14, 0x9f, 0xab, 0xaf, 0x07, - 0x4f, 0xe3, 0xc1, 0x3a, 0x64, 0x41, 0xd7, 0xfd, 0xa3, 0x41, 0x42, 0x6e, 0x40, 0xee, 0xfe, 0xe2, - 0x2d, 0x31, 0x07, 0x32, 0x2a, 0xf9, 0xfd, 0xc5, 0x5b, 0x78, 0x1d, 0xc6, 0x54, 0x8c, 0xc9, 0xce, - 0xa2, 0x61, 0xa9, 0x71, 0x7f, 0xf1, 0x16, 0xf9, 0x6b, 0x70, 0xaa, 0xec, 0x85, 0xa2, 0x0a, 0x6e, - 0xe8, 0x5e, 0x47, 0xf7, 0xae, 0x91, 0x1e, 0xab, 0xf7, 0x0b, 0xa9, 0xab, 0xf7, 0xc5, 0xba, 0x62, - 0xe2, 0x70, 0x2b, 0xfa, 0x7a, 0x32, 0x48, 0x5c, 0x7a, 0x3d, 0xe4, 0x23, 0x98, 0xc2, 0xbb, 0x73, - 0xb4, 0xfd, 0xc7, 0xb8, 0xbc, 0xa3, 0x3d, 0x6a, 0xfe, 0x5c, 0x6a, 0xcd, 0x0b, 0xdc, 0x49, 0x1c, - 0x3d, 0x08, 0x30, 0x86, 0xaf, 0xa1, 0xf5, 0x1b, 0x9c, 0xc9, 0x1d, 0x98, 0x16, 0xe2, 0xd7, 0xc6, - 0xce, 0xd6, 0x1e, 0x2d, 0xbb, 0x07, 0xc2, 0xc8, 0x02, 0x35, 0x3a, 0x21, 0xb3, 0x39, 0xfe, 0x8e, - 0x13, 0xed, 0x51, 0xa7, 0xee, 0x1a, 0x82, 0x4a, 0x82, 0x90, 0x7c, 0x2f, 0x8c, 0xaf, 0xf9, 0x35, - 0x26, 0x79, 0xe3, 0xce, 0xc0, 0xed, 0x2e, 0x3e, 0xc4, 0xac, 0x58, 0x1c, 0x9c, 0x10, 0xa7, 0xbe, - 0x7b, 0x58, 0x7c, 0xfb, 0xa4, 0x8b, 0x46, 0xab, 0xc0, 0xd6, 0x6b, 0x23, 0xcb, 0x90, 0x7f, 0x48, - 0xb7, 0x59, 0x6f, 0x93, 0x19, 0x73, 0x24, 0x58, 0x98, 0x55, 0x89, 0x5f, 0x86, 0x59, 0x95, 0x80, - 0x91, 0x00, 0x66, 0x70, 0x7c, 0x36, 0xdd, 0x30, 0xdc, 0xf7, 0x83, 0x3a, 0x86, 0x46, 0xef, 0x65, - 0xd2, 0xb1, 0x98, 0x3a, 0xf8, 0x2f, 0xf0, 0xc1, 0x6f, 0x6b, 0x1c, 0x74, 0x01, 0xb2, 0x8b, 0x3d, - 0xf9, 0x26, 0x4c, 0x09, 0xcf, 0xe6, 0x7b, 0xb7, 0x4a, 0xf8, 0x55, 0x4e, 0x18, 0x4e, 0x72, 0x66, - 0x21, 0x97, 0x52, 0x85, 0xa3, 0xb4, 0xbc, 0x81, 0x72, 0x9a, 0x3b, 0xae, 0xf9, 0x6a, 0xa6, 0x93, - 0x90, 0x4d, 0x18, 0x2f, 0xd3, 0xc7, 0x5e, 0x8d, 0xa2, 0x23, 0x8f, 0x30, 0xa2, 0x55, 0x29, 0x3f, - 0xe2, 0x12, 0x7e, 0x17, 0x53, 0x47, 0x00, 0x77, 0x0b, 0x32, 0xad, 0x26, 0x15, 0x22, 0xb9, 0x09, - 0xb9, 0x4a, 0x79, 0x53, 0xd8, 0xd0, 0x4a, 0xdf, 0x98, 0x4a, 0x7d, 0x53, 0x26, 0x48, 0x40, 0x23, - 0x28, 0xaf, 0x6e, 0x58, 0xe0, 0x56, 0xca, 0x9b, 0x64, 0x07, 0x26, 0x71, 0x00, 0x56, 0xa9, 0xcb, - 0xc7, 0x76, 0xba, 0xc7, 0xd8, 0x5e, 0x4d, 0x1d, 0xdb, 0x79, 0x3e, 0xb6, 0x7b, 0x82, 0xda, 0x88, - 0xf8, 0xae, 0xb3, 0x65, 0x22, 0xad, 0xc8, 0x42, 0x21, 0xe3, 0x94, 0x6f, 0xad, 0xa1, 0x91, 0x87, - 0x10, 0x69, 0x65, 0xd2, 0x0a, 0x15, 0x38, 0xbd, 0xa7, 0x89, 0x7e, 0x37, 0x1f, 0xf2, 0x25, 0x18, - 0xda, 0x78, 0x14, 0xb9, 0xf3, 0x33, 0xc6, 0x38, 0x32, 0x90, 0xec, 0x3e, 0xde, 0x42, 0xfa, 0x8f, - 0x8c, 0x30, 0x42, 0x48, 0x43, 0x16, 0x61, 0x74, 0xb3, 0xf2, 0xa0, 0xda, 0xf0, 0xa3, 0x79, 0xa2, - 0xf4, 0x24, 0xd2, 0xf6, 0x1e, 0x3b, 0x61, 0xc3, 0x37, 0x33, 0xd9, 0x48, 0x44, 0x36, 0x7d, 0xab, - 0x6e, 0x50, 0xdf, 0x77, 0x03, 0xf4, 0xc0, 0x9c, 0x35, 0xaa, 0xd5, 0x4a, 0xf8, 0xf4, 0xed, 0x09, - 0x40, 0xc2, 0x2d, 0x53, 0x67, 0x41, 0xbe, 0x07, 0xce, 0x86, 0xde, 0x6e, 0xcb, 0x8d, 0x3a, 0x01, - 0x75, 0xdc, 0xc6, 0xae, 0x1f, 0x78, 0xd1, 0x5e, 0xd3, 0x09, 0x3b, 0x5e, 0x44, 0xe7, 0xe7, 0x8c, - 0x3c, 0x97, 0x55, 0x89, 0x57, 0x92, 0x68, 0x55, 0x86, 0x65, 0x9f, 0x09, 0xd3, 0x0b, 0xc4, 0xed, - 0xc5, 0x8c, 0x58, 0x82, 0x62, 0xd8, 0xee, 0xdd, 0x2a, 0x59, 0xff, 0x69, 0x06, 0x37, 0x63, 0xf2, - 0x2a, 0x46, 0x31, 0x51, 0xcf, 0x72, 0x78, 0x0f, 0xeb, 0xb6, 0x13, 0x71, 0x83, 0x39, 0x0a, 0x79, - 0x1d, 0x46, 0x6e, 0xb9, 0x35, 0x1a, 0xc9, 0xc7, 0x53, 0x44, 0xde, 0x41, 0x88, 0x7e, 0x69, 0xcb, - 0x71, 0x98, 0x9c, 0xc8, 0x17, 0x69, 0x29, 0x4e, 0x4f, 0xba, 0x5c, 0x92, 0x6f, 0xa7, 0x28, 0x27, - 0x8a, 0xc5, 0xad, 0xe5, 0x2f, 0x4d, 0xd8, 0x19, 0xa7, 0x72, 0xb0, 0xfe, 0x34, 0x13, 0xef, 0x2e, - 0xe4, 0x15, 0x18, 0xb2, 0x37, 0x55, 0xfb, 0xb9, 0xa7, 0x63, 0xa2, 0xf9, 0x88, 0x40, 0xbe, 0x0a, - 0xa7, 0x34, 0x3e, 0x5d, 0x46, 0xcf, 0x2f, 0xa3, 0x23, 0x9e, 0xd6, 0x92, 0x74, 0xcb, 0xe7, 0x74, - 0x1e, 0x28, 0x14, 0xc7, 0x05, 0x65, 0xda, 0xf2, 0x38, 0x6f, 0xad, 0xb3, 0x3a, 0xef, 0x3a, 0x22, - 0x24, 0x3b, 0x9b, 0xc6, 0x81, 0xfb, 0xe1, 0x59, 0xbf, 0x99, 0x31, 0x76, 0x0d, 0x95, 0x07, 0x32, - 0x73, 0x4c, 0x1e, 0xc8, 0xb7, 0x00, 0x4a, 0x9d, 0xc8, 0x5f, 0x69, 0x05, 0x7e, 0x83, 0xdf, 0x86, - 0x88, 0xd0, 0xd9, 0x78, 0xc7, 0x4b, 0x11, 0x6c, 0xb8, 0x0b, 0x29, 0xe4, 0x54, 0xfb, 0xf0, 0xdc, - 0xc7, 0xb5, 0x0f, 0xb7, 0x7e, 0x3f, 0x63, 0x7c, 0x37, 0x4c, 0xda, 0x93, 0x9f, 0x9e, 0x66, 0xbe, - 0xd3, 0xfd, 0xe9, 0xc5, 0x1f, 0xde, 0xff, 0x3f, 0x03, 0xa7, 0xb9, 0xa1, 0xf5, 0x7a, 0xa7, 0xb9, - 0x4d, 0x83, 0x07, 0x6e, 0xc3, 0xab, 0x73, 0x6f, 0x53, 0x2e, 0xc8, 0x5e, 0xee, 0xfe, 0x08, 0xd3, - 0xf1, 0xb9, 0xc2, 0xc9, 0x0d, 0xbf, 0x9d, 0x16, 0x16, 0x3a, 0x8f, 0x55, 0xa9, 0xae, 0x70, 0xa6, - 0xd3, 0x5b, 0xbf, 0x9a, 0x81, 0x17, 0x8f, 0xad, 0x85, 0x5c, 0x83, 0x51, 0x19, 0xb3, 0x3c, 0x83, - 0x03, 0x8f, 0x46, 0x8f, 0xdd, 0xf1, 0xca, 0x25, 0x16, 0xf9, 0x1a, 0x9c, 0xd2, 0x59, 0x6d, 0x05, - 0xae, 0xa7, 0x47, 0x06, 0x4f, 0x69, 0x75, 0xc4, 0x50, 0x92, 0x52, 0x57, 0x3a, 0x13, 0xeb, 0xff, - 0xc9, 0x68, 0x99, 0x61, 0x9f, 0x51, 0x59, 0xfc, 0xa6, 0x21, 0x8b, 0xcb, 0xf8, 0x71, 0xaa, 0x57, - 0xac, 0x2c, 0x55, 0x7f, 0x9a, 0xd6, 0x8c, 0x77, 0x11, 0xf0, 0x23, 0x59, 0x18, 0xbf, 0x1f, 0xd2, - 0x80, 0x3f, 0xc8, 0x7e, 0xb6, 0xe2, 0x84, 0xa9, 0x7e, 0x0d, 0x14, 0xc9, 0xe9, 0x8f, 0x33, 0x78, - 0x51, 0xaf, 0x53, 0xb0, 0xd1, 0xd0, 0xb2, 0x41, 0xe1, 0x68, 0x60, 0x1e, 0x28, 0x84, 0xf2, 0x00, - 0x42, 0x6b, 0x66, 0x62, 0x38, 0xcc, 0x0e, 0xb8, 0x46, 0x3e, 0x80, 0xe1, 0xfb, 0x78, 0xed, 0x68, - 0x46, 0x16, 0x50, 0xfc, 0xb1, 0x90, 0x6f, 0xd2, 0x9d, 0xd0, 0x0c, 0x7a, 0xc4, 0x09, 0x49, 0x15, - 0x46, 0x97, 0x03, 0x8a, 0x79, 0x5e, 0x87, 0x06, 0xf7, 0x8b, 0xad, 0x71, 0x92, 0xa4, 0x5f, 0xac, - 0xe0, 0x64, 0xfd, 0x4c, 0x16, 0x48, 0xdc, 0x47, 0x4c, 0x6a, 0x12, 0x3e, 0xb3, 0x93, 0xfe, 0xbe, - 0x31, 0xe9, 0xe7, 0xba, 0x26, 0x9d, 0x77, 0x6f, 0xa0, 0xb9, 0xff, 0xed, 0x0c, 0x9c, 0x4e, 0x27, - 0x24, 0x17, 0x61, 0x64, 0x63, 0x6b, 0x53, 0x06, 0xa7, 0x10, 0x5d, 0xf1, 0xdb, 0xa8, 0xf3, 0xdb, - 0xa2, 0x88, 0xbc, 0x01, 0x23, 0x5f, 0xb6, 0x97, 0xd9, 0x39, 0xa4, 0x45, 0xdf, 0xfe, 0x56, 0xe0, - 0xd4, 0xcc, 0xa3, 0x48, 0x20, 0xe9, 0x73, 0x9b, 0x7b, 0x6a, 0x73, 0xfb, 0x13, 0x59, 0x98, 0x2e, - 0xd5, 0x6a, 0x34, 0x0c, 0x99, 0x90, 0x43, 0xc3, 0xe8, 0x99, 0x9d, 0xd8, 0xf4, 0xb0, 0x13, 0x46, - 0xdf, 0x06, 0x9a, 0xd5, 0xdf, 0xcd, 0xc0, 0x29, 0x49, 0xf5, 0xd8, 0xa3, 0xfb, 0x5b, 0x7b, 0x01, - 0x0d, 0xf7, 0xfc, 0x46, 0x7d, 0xe0, 0x10, 0xff, 0x4c, 0xd0, 0xc3, 0xb8, 0xbd, 0xfa, 0xeb, 0xfc, - 0x0e, 0x42, 0x0c, 0x41, 0x8f, 0xc7, 0xf6, 0xbd, 0x06, 0xa3, 0xa5, 0x76, 0x3b, 0xf0, 0x1f, 0xf3, - 0xcf, 0x5e, 0x84, 0x35, 0x73, 0x39, 0xc8, 0x70, 0x2b, 0xe6, 0x20, 0xd6, 0x8c, 0x32, 0x6d, 0xf1, - 0x80, 0x5d, 0x93, 0xbc, 0x19, 0x75, 0xda, 0xd2, 0xe5, 0x63, 0x2c, 0xb7, 0xaa, 0x40, 0x36, 0x03, - 0xbf, 0xe9, 0x47, 0xb4, 0xce, 0xfb, 0x83, 0xde, 0xd8, 0xc7, 0x06, 0xf8, 0xd9, 0xf2, 0xa2, 0x86, - 0x11, 0xe0, 0x27, 0x62, 0x00, 0x9b, 0xc3, 0xad, 0xff, 0x63, 0x18, 0x26, 0xf4, 0xd1, 0x21, 0x16, - 0x8f, 0xdb, 0xed, 0x07, 0x7a, 0x48, 0x00, 0x17, 0x21, 0xb6, 0x28, 0x89, 0xe3, 0x69, 0x64, 0x8f, - 0x8d, 0xa7, 0xf1, 0x10, 0x26, 0x37, 0x03, 0x1f, 0xe3, 0xaf, 0xf1, 0xfc, 0xdf, 0x7c, 0x2b, 0x9c, - 0xd5, 0xf4, 0x47, 0x36, 0x91, 0xf8, 0xae, 0x89, 0xb7, 0x27, 0x6d, 0x81, 0xed, 0x24, 0xb3, 0x83, - 0x9b, 0x7c, 0xb8, 0xc9, 0x84, 0x1b, 0x8a, 0x20, 0x8a, 0xca, 0x64, 0x82, 0x41, 0x4c, 0x93, 0x09, - 0x06, 0xd1, 0xbf, 0xb5, 0xe1, 0xa7, 0xf5, 0xad, 0x91, 0x9f, 0xc9, 0xc0, 0x78, 0xa9, 0xd5, 0x12, - 0x71, 0x3a, 0x8e, 0x71, 0x51, 0xfe, 0x9a, 0xb0, 0x9a, 0x78, 0xfb, 0x63, 0x59, 0x4d, 0xa0, 0xdc, - 0x12, 0xa2, 0xa4, 0x1a, 0x57, 0xa8, 0x6b, 0x50, 0x5a, 0x3b, 0xc8, 0xdb, 0x50, 0x50, 0x8b, 0xbc, - 0xd2, 0xaa, 0xd3, 0x27, 0x34, 0x9c, 0x1f, 0xbd, 0x90, 0xbb, 0x3c, 0x29, 0xc2, 0xa7, 0xea, 0x92, - 0x69, 0x12, 0x91, 0x6c, 0x01, 0xb8, 0x6a, 0x75, 0x25, 0x32, 0xaf, 0x75, 0x2f, 0x3f, 0x21, 0x3d, - 0xe3, 0x6f, 0x7c, 0x98, 0xd2, 0xa5, 0xe7, 0x98, 0x0f, 0x69, 0xc2, 0x34, 0x4f, 0x7b, 0x86, 0xe9, - 0xd0, 0x31, 0x4a, 0x38, 0x1c, 0x3b, 0x0f, 0xaf, 0x88, 0x7b, 0xb0, 0xe7, 0x45, 0x32, 0x35, 0xcc, - 0xb0, 0xee, 0xa4, 0x84, 0x0c, 0x4f, 0xf2, 0xe6, 0xc1, 0x6a, 0xed, 0x33, 0xdd, 0xed, 0xe5, 0x8b, - 0xfe, 0x27, 0x32, 0x70, 0x5a, 0x5f, 0xf4, 0xd5, 0xce, 0x76, 0xd3, 0x43, 0x5d, 0x90, 0x5c, 0x85, - 0x31, 0xb1, 0x26, 0x95, 0x12, 0xd5, 0x1d, 0xec, 0x3c, 0x46, 0x21, 0x2b, 0x6c, 0x19, 0x32, 0x1e, - 0x42, 0xea, 0x9e, 0x4d, 0xec, 0x53, 0xac, 0x28, 0x4e, 0xa9, 0x19, 0xe0, 0x6f, 0x73, 0x7d, 0x32, - 0x88, 0xf5, 0x1e, 0xcc, 0x98, 0x33, 0x51, 0xa5, 0x11, 0xb9, 0x02, 0xa3, 0x72, 0xfa, 0x32, 0xe9, - 0xd3, 0x27, 0xcb, 0xad, 0x87, 0x40, 0xba, 0xe8, 0x43, 0x34, 0x6f, 0xa2, 0x91, 0x34, 0xbf, 0x93, - 0x8f, 0x8b, 0x5d, 0x88, 0x4b, 0xb3, 0xa2, 0x7d, 0xe3, 0x86, 0x8d, 0x38, 0x23, 0xb5, 0xfe, 0x74, - 0x0a, 0x66, 0x53, 0xf6, 0xdc, 0x63, 0x64, 0xa2, 0xa2, 0xb9, 0x41, 0x8c, 0xa9, 0x08, 0x07, 0x72, - 0x5b, 0x78, 0x0f, 0x86, 0x8f, 0xdd, 0x0e, 0xb8, 0x87, 0x40, 0x62, 0x17, 0xe0, 0x64, 0x9f, 0x8a, - 0x5c, 0xa4, 0x07, 0x21, 0x19, 0x7e, 0x6a, 0x41, 0x48, 0x96, 0x60, 0x52, 0xf4, 0x4a, 0x6c, 0x57, - 0x9a, 0xa5, 0x6a, 0xc0, 0x0b, 0x9c, 0xae, 0x6d, 0xcb, 0x24, 0xe1, 0x3c, 0x42, 0xbf, 0xf1, 0x98, - 0x0a, 0x1e, 0xa3, 0x3a, 0x0f, 0x2c, 0x48, 0xe5, 0xa1, 0x91, 0x90, 0xff, 0x10, 0x33, 0x37, 0x21, - 0x44, 0xdf, 0xb3, 0xf2, 0xfd, 0xf6, 0xac, 0xfa, 0xd3, 0xd9, 0xb3, 0xce, 0xc9, 0x36, 0xa6, 0xef, - 0x5d, 0x29, 0xcd, 0x22, 0xbf, 0x9c, 0x81, 0x19, 0x1e, 0x09, 0x43, 0x6f, 0x6c, 0xdf, 0xe8, 0x06, - 0xb5, 0xa7, 0xd3, 0xd8, 0x17, 0x44, 0xc6, 0x92, 0xf4, 0xb6, 0x76, 0x37, 0x8a, 0x7c, 0x0f, 0x80, - 0xfa, 0xa2, 0x78, 0xc0, 0xc8, 0xf1, 0xc5, 0x17, 0x52, 0x76, 0x01, 0x85, 0x14, 0x47, 0x57, 0x8f, - 0x14, 0x9d, 0x91, 0xaf, 0x4b, 0x41, 0xc9, 0x5f, 0x83, 0x39, 0xf6, 0xbd, 0x28, 0x88, 0x88, 0xdb, - 0x33, 0x3f, 0x8e, 0xb5, 0x7c, 0xbe, 0xb7, 0x4c, 0x74, 0x35, 0x8d, 0x8c, 0x87, 0x17, 0x8d, 0x73, - 0x9e, 0x46, 0xba, 0x8b, 0x7f, 0x6a, 0x45, 0x18, 0x0e, 0x0b, 0x5b, 0xcf, 0x23, 0xa0, 0xf7, 0xd8, - 0xdf, 0xce, 0xca, 0x6f, 0x81, 0xef, 0x6f, 0xa1, 0xe9, 0x30, 0x8a, 0x20, 0xf2, 0x65, 0x20, 0x2a, - 0x84, 0x04, 0x87, 0x51, 0x19, 0x1d, 0x9d, 0x5f, 0x1b, 0xc7, 0xa1, 0x28, 0x02, 0x59, 0xac, 0x2f, - 0x92, 0x6e, 0x62, 0x42, 0x61, 0x4e, 0x74, 0x9a, 0x41, 0x65, 0x5a, 0xa5, 0x70, 0x7e, 0xca, 0x88, - 0x8a, 0x14, 0x97, 0xc4, 0xc9, 0x51, 0xb5, 0xdc, 0x4c, 0xc6, 0x95, 0x53, 0x1a, 0x3b, 0x72, 0x13, - 0xc6, 0xd0, 0x6b, 0x73, 0x55, 0x1a, 0x6d, 0x09, 0x03, 0x12, 0xf4, 0xef, 0x74, 0xf6, 0x4c, 0xd3, - 0xab, 0x18, 0x95, 0xa9, 0x03, 0xe5, 0xe0, 0xc0, 0xee, 0xb4, 0xf0, 0x72, 0x57, 0xdc, 0x77, 0xd4, - 0x83, 0x03, 0x27, 0xe8, 0x98, 0x6e, 0xbd, 0x88, 0x44, 0xbe, 0x09, 0xe3, 0xf7, 0xdc, 0x27, 0xf2, - 0x6e, 0x57, 0x5c, 0xe0, 0xf6, 0xdb, 0x81, 0x2c, 0xd9, 0x9b, 0xa6, 0xfb, 0xc4, 0xa9, 0x77, 0x92, - 0xc1, 0x4d, 0x71, 0x1b, 0xd2, 0x59, 0x92, 0xaf, 0x03, 0x68, 0x37, 0xce, 0xe4, 0xd8, 0x0a, 0x5e, - 0x94, 0xb1, 0xbe, 0x52, 0x6f, 0xa2, 0x91, 0xbf, 0xc6, 0x30, 0x21, 0x39, 0xcc, 0x7d, 0x7a, 0x92, - 0xc3, 0xa9, 0x4f, 0x4f, 0x72, 0x58, 0xd8, 0x86, 0xb3, 0x3d, 0x3f, 0x9d, 0x94, 0x10, 0xac, 0xd7, - 0xcc, 0x10, 0xac, 0x67, 0x7b, 0x1d, 0xb1, 0xa1, 0x19, 0x50, 0x7f, 0xb6, 0x30, 0xd7, 0x5b, 0x3a, - 0xf9, 0x4e, 0x36, 0x71, 0xe4, 0x0a, 0xc5, 0x82, 0x27, 0x60, 0xe9, 0x25, 0x93, 0x64, 0x31, 0x59, - 0x26, 0x3f, 0x94, 0xb3, 0xb1, 0x42, 0x93, 0xc8, 0x2f, 0xce, 0x8f, 0xe7, 0x4f, 0x7a, 0xfa, 0xbe, - 0x03, 0x53, 0x3c, 0x4d, 0xde, 0x5d, 0x7a, 0xb0, 0xef, 0x07, 0x75, 0x99, 0x44, 0x1a, 0x65, 0xf0, - 0xae, 0xe4, 0xb4, 0x09, 0x5c, 0x52, 0x96, 0x8e, 0x80, 0xc3, 0x58, 0xfb, 0xd9, 0xd4, 0x5d, 0x8c, - 0x21, 0xf4, 0xf3, 0x11, 0x24, 0x6f, 0x2a, 0x41, 0x8d, 0x06, 0x7a, 0x58, 0xfd, 0x40, 0x02, 0x53, - 0xe4, 0x35, 0x1a, 0x58, 0x7f, 0x98, 0x03, 0xc2, 0x6b, 0x5a, 0x76, 0xdb, 0x2e, 0xba, 0xc9, 0x7a, - 0x18, 0x60, 0xa6, 0x20, 0x70, 0xdc, 0xed, 0x06, 0xd5, 0xa3, 0x33, 0x09, 0x23, 0x59, 0x55, 0xe6, - 0x24, 0x15, 0x9d, 0x2e, 0xc2, 0x1e, 0x5b, 0x5d, 0xf6, 0x93, 0x6c, 0x75, 0xdf, 0x84, 0xe7, 0x4b, - 0x6d, 0xcc, 0xb7, 0x29, 0x6b, 0xb9, 0xe5, 0x07, 0x72, 0x93, 0x32, 0x1c, 0xb0, 0x5c, 0x85, 0xd6, - 0xd5, 0xd2, 0x7e, 0x2c, 0x34, 0x39, 0x85, 0xad, 0xcb, 0x76, 0xa4, 0x3b, 0xf4, 0x4b, 0x39, 0xa5, - 0x8d, 0x25, 0x29, 0x72, 0x0a, 0x27, 0x91, 0x3c, 0xbc, 0x40, 0xca, 0x29, 0x98, 0x48, 0x26, 0xe6, - 0xe1, 0x05, 0xb4, 0x87, 0xac, 0xa3, 0x48, 0xc8, 0x3b, 0x30, 0x5e, 0xea, 0x44, 0xbe, 0x60, 0x2c, - 0xac, 0xbb, 0x63, 0x3b, 0x6c, 0xd1, 0x14, 0x43, 0xf5, 0x89, 0xd1, 0xad, 0x3f, 0xc9, 0xc1, 0xd9, - 0xee, 0xe9, 0x15, 0xa5, 0xea, 0xfb, 0xc8, 0x1c, 0xf3, 0x7d, 0xa4, 0xad, 0x86, 0x6c, 0x1c, 0xe6, - 0xfc, 0x69, 0xac, 0x06, 0x9e, 0xb6, 0xf3, 0x63, 0xae, 0x86, 0x2a, 0x8c, 0xeb, 0xe7, 0xdd, 0xd0, - 0xc7, 0x3d, 0xef, 0x74, 0x2e, 0x4c, 0xa9, 0xe7, 0x71, 0x0c, 0x86, 0xe3, 0xa7, 0xa3, 0x64, 0x08, - 0x03, 0x8e, 0x41, 0xfe, 0x7f, 0x70, 0x81, 0xef, 0x49, 0xc9, 0xce, 0x2e, 0x1d, 0x48, 0x8e, 0x62, - 0xe2, 0x16, 0x8f, 0x0e, 0x8b, 0x57, 0xf9, 0x55, 0x89, 0xd3, 0x35, 0x6c, 0xce, 0xf6, 0x81, 0x23, - 0x5b, 0xa6, 0x55, 0x72, 0x2c, 0x6f, 0xcc, 0xd5, 0xa9, 0xe5, 0x51, 0x7c, 0x23, 0xcd, 0xed, 0x85, - 0x47, 0x19, 0xe6, 0x60, 0xd3, 0xe3, 0x45, 0x5e, 0x87, 0x65, 0x53, 0xaf, 0xc3, 0xe4, 0x7d, 0x4a, - 0x2e, 0xf5, 0x3e, 0xa5, 0x0c, 0xd3, 0xd5, 0xce, 0xb6, 0xac, 0x3b, 0xe9, 0xf7, 0x16, 0x76, 0xb6, - 0xd3, 0x3a, 0x94, 0x24, 0xb1, 0x7e, 0x34, 0x0b, 0x13, 0x9b, 0x8d, 0xce, 0xae, 0xd7, 0x2a, 0xbb, - 0x91, 0xfb, 0xcc, 0xde, 0xd0, 0xbd, 0x65, 0xdc, 0xd0, 0x29, 0xef, 0x2e, 0xd5, 0xb1, 0x81, 0xae, - 0xe7, 0x7e, 0x3a, 0x03, 0xd3, 0x31, 0x09, 0x3f, 0x67, 0x57, 0x61, 0x88, 0xfd, 0x10, 0x7a, 0xeb, - 0x85, 0x2e, 0xc6, 0x3c, 0x79, 0x97, 0xfa, 0x4b, 0xdc, 0x99, 0x99, 0x99, 0x71, 0x90, 0xc3, 0xc2, - 0x17, 0x60, 0x2c, 0x66, 0x7b, 0x92, 0xa4, 0x5d, 0xbf, 0x96, 0x81, 0x42, 0xb2, 0x27, 0xe4, 0x2e, - 0x8c, 0x32, 0x4e, 0x1e, 0x95, 0x2a, 0xf5, 0x4b, 0x3d, 0xfa, 0x7c, 0x55, 0xa0, 0xf1, 0xe6, 0xe1, - 0xe0, 0x53, 0x0e, 0xb1, 0x25, 0x87, 0x05, 0x1b, 0x26, 0x74, 0xac, 0x94, 0xd6, 0xbd, 0x6e, 0x0a, - 0x17, 0xa7, 0xd3, 0xc7, 0xc1, 0x48, 0x35, 0x66, 0xb4, 0x5a, 0xc8, 0x0d, 0x97, 0x8c, 0xc5, 0x85, - 0x63, 0x95, 0x58, 0x37, 0x7c, 0x99, 0x2d, 0xc6, 0x81, 0xcf, 0xf5, 0x75, 0x96, 0xb2, 0xa0, 0x15, - 0x1e, 0x79, 0x1d, 0x46, 0x78, 0x7d, 0x7a, 0xca, 0x9d, 0x36, 0x42, 0x74, 0x11, 0x97, 0xe3, 0x58, - 0x7f, 0x27, 0x07, 0xa7, 0xe3, 0xe6, 0xdd, 0x6f, 0xd7, 0xdd, 0x88, 0x6e, 0xba, 0x81, 0xdb, 0x0c, - 0x8f, 0xf9, 0x02, 0x2e, 0x77, 0x35, 0x0d, 0x53, 0xb0, 0xc8, 0xa6, 0x69, 0x0d, 0xb2, 0x12, 0x0d, - 0xc2, 0xeb, 0x4b, 0xde, 0x20, 0xd9, 0x0c, 0x72, 0x17, 0x72, 0x55, 0x1a, 0x89, 0x6d, 0xf3, 0x52, - 0xd7, 0xa8, 0xea, 0xed, 0xba, 0x5a, 0xa5, 0x11, 0x9f, 0x44, 0x1e, 0x5f, 0x87, 0x1a, 0x11, 0x55, - 0xab, 0x34, 0x22, 0x0f, 0x61, 0x64, 0xe5, 0x49, 0x9b, 0xd6, 0x22, 0x91, 0x72, 0xee, 0x4a, 0x7f, - 0x7e, 0x1c, 0x57, 0xcb, 0x38, 0x47, 0x11, 0xa0, 0x0f, 0x16, 0x47, 0x59, 0xb8, 0x09, 0x79, 0x59, - 0xf9, 0x49, 0x56, 0xee, 0xc2, 0x5b, 0x30, 0xae, 0x55, 0x72, 0xa2, 0x45, 0xff, 0x0b, 0x6c, 0x5f, - 0xf5, 0x1b, 0x32, 0x4b, 0xdd, 0x4a, 0x97, 0x98, 0xa7, 0x65, 0x31, 0xe1, 0x62, 0x9e, 0xf3, 0x48, - 0x14, 0xf5, 0x91, 0xf7, 0x2a, 0x30, 0x5d, 0x7d, 0xe4, 0xb5, 0xe3, 0xc0, 0x96, 0xc6, 0x61, 0x8a, - 0x29, 0x29, 0x84, 0xce, 0x9d, 0x3c, 0x4c, 0x93, 0x74, 0xd6, 0x9f, 0x67, 0x60, 0x84, 0xfd, 0xf5, - 0xe0, 0xe6, 0x33, 0xba, 0x65, 0xde, 0x30, 0xb6, 0xcc, 0x19, 0x2d, 0xb6, 0x34, 0x6e, 0x1c, 0x37, - 0x8f, 0xd9, 0x2c, 0x0f, 0xc5, 0x04, 0x71, 0x64, 0x72, 0x1b, 0x46, 0x85, 0x55, 0x8f, 0x30, 0xbf, - 0xd6, 0x83, 0x55, 0x4b, 0x7b, 0x1f, 0xa5, 0x9c, 0xfb, 0xed, 0xe4, 0x6d, 0x86, 0xa4, 0x66, 0x22, - 0xb9, 0x0c, 0x31, 0x6a, 0xe4, 0x36, 0xf5, 0xd1, 0x5f, 0x8e, 0x87, 0x5a, 0xd6, 0xb2, 0x11, 0xf7, - 0xf0, 0xa6, 0x2f, 0x89, 0x87, 0x8c, 0x5c, 0x3f, 0x26, 0xa7, 0x65, 0xea, 0xc7, 0xd4, 0x37, 0x8e, - 0x7f, 0x76, 0x8a, 0x07, 0x28, 0x96, 0x0d, 0x7b, 0x17, 0x26, 0x6e, 0xf9, 0xc1, 0xbe, 0x1b, 0xf0, - 0xb0, 0x93, 0xc2, 0x72, 0x80, 0xa9, 0x8e, 0x93, 0x3b, 0x1c, 0xce, 0x03, 0x57, 0x7e, 0xf7, 0xb0, - 0x38, 0xb4, 0xe4, 0xfb, 0x0d, 0xdb, 0x40, 0x27, 0x1b, 0x30, 0x79, 0xcf, 0x7d, 0xa2, 0x29, 0xbd, - 0xdc, 0x01, 0xe6, 0x0a, 0x5b, 0xc0, 0x4c, 0x6b, 0x3e, 0xde, 0xc4, 0xca, 0xa4, 0x27, 0x1e, 0x4c, - 0x6d, 0xfa, 0x41, 0x24, 0x2a, 0xf1, 0x5a, 0xbb, 0xa2, 0xb3, 0xdd, 0x46, 0x62, 0xd7, 0x52, 0x8d, - 0xc4, 0xce, 0xb6, 0xfd, 0x20, 0x72, 0x76, 0x14, 0xb9, 0x11, 0x98, 0xca, 0x60, 0x4c, 0xde, 0x85, - 0x19, 0x2d, 0xf0, 0xde, 0x2d, 0x3f, 0x68, 0xba, 0x52, 0x28, 0xc7, 0x7b, 0x60, 0xb4, 0x37, 0xd9, - 0x41, 0xb0, 0xdd, 0x8d, 0x49, 0xbe, 0x9a, 0xe6, 0x52, 0x34, 0x1c, 0x5b, 0x99, 0xa5, 0xb8, 0x14, - 0xf5, 0xb2, 0x32, 0xeb, 0x76, 0x2e, 0xda, 0xed, 0x67, 0x85, 0x9a, 0x5f, 0xba, 0x2e, 0xd4, 0xef, - 0xe3, 0xad, 0x4c, 0xd5, 0xbc, 0xf5, 0xb0, 0x36, 0x5d, 0x84, 0xdc, 0xd2, 0xe6, 0x2d, 0x7c, 0xbd, - 0x90, 0x86, 0x36, 0xad, 0x3d, 0xb7, 0x55, 0x43, 0x61, 0x59, 0x58, 0x7e, 0xeb, 0x3b, 0xf2, 0xd2, - 0xe6, 0x2d, 0xe2, 0xc2, 0xec, 0x26, 0x0d, 0x9a, 0x5e, 0xf4, 0x95, 0xeb, 0xd7, 0xb5, 0x89, 0xca, - 0x63, 0xd3, 0xae, 0x89, 0xa6, 0x15, 0xdb, 0x88, 0xe2, 0x3c, 0xb9, 0x7e, 0x3d, 0x75, 0x3a, 0x54, - 0xc3, 0xd2, 0x78, 0xb1, 0x9d, 0xf1, 0x9e, 0xfb, 0x24, 0x36, 0xd8, 0x0f, 0x85, 0x73, 0xe6, 0x39, - 0xb9, 0xb0, 0x62, 0x63, 0x7f, 0x63, 0x67, 0x34, 0x89, 0x98, 0xae, 0x13, 0x2f, 0xaf, 0x50, 0xb8, - 0xb5, 0x2c, 0xc8, 0x2b, 0x1d, 0xe9, 0xc1, 0xab, 0x0b, 0xec, 0x1a, 0x3a, 0xb9, 0xaf, 0x34, 0x36, - 0xae, 0xf1, 0x88, 0xc4, 0x86, 0xd7, 0x74, 0x8d, 0x8d, 0x5f, 0xa4, 0x18, 0xdd, 0x9a, 0x56, 0x6a, - 0x3e, 0xf7, 0x60, 0xb0, 0x4d, 0x2e, 0xdd, 0x8a, 0xe0, 0xc4, 0xc9, 0x15, 0x41, 0x0a, 0x43, 0x6b, - 0x7e, 0xed, 0x91, 0x88, 0xa6, 0xf5, 0x65, 0xf6, 0xb9, 0x37, 0xfc, 0xda, 0xa3, 0xa7, 0x67, 0x5d, - 0x8b, 0xec, 0xc9, 0x3a, 0x6b, 0x2a, 0x5b, 0x05, 0x62, 0x4c, 0x84, 0xc5, 0xe6, 0x9c, 0xd2, 0x84, - 0xb4, 0x32, 0x2e, 0xf8, 0xf0, 0x45, 0x23, 0x87, 0xd6, 0x36, 0xc9, 0x09, 0x85, 0x42, 0x99, 0x86, - 0x8f, 0x22, 0xbf, 0xbd, 0xdc, 0xf0, 0xda, 0xdb, 0xbe, 0x1b, 0xc8, 0x18, 0xa7, 0xdd, 0xdf, 0xf7, - 0x2b, 0xa9, 0xdf, 0xf7, 0x4c, 0x9d, 0xd3, 0x3b, 0x35, 0xc9, 0xc0, 0xee, 0x62, 0x49, 0xbe, 0x0a, - 0x53, 0x6c, 0x71, 0xaf, 0x3c, 0x89, 0x68, 0x8b, 0xcf, 0xfc, 0x0c, 0x8a, 0x0e, 0x73, 0x5a, 0x50, - 0x7f, 0x55, 0xc8, 0xd7, 0x14, 0x7e, 0xec, 0x54, 0x11, 0x18, 0x91, 0xc8, 0x0c, 0x56, 0xa4, 0x0e, - 0xf3, 0xf7, 0xdc, 0x27, 0x5a, 0x3a, 0x46, 0x6d, 0x91, 0x12, 0x5c, 0x60, 0x97, 0x8f, 0x0e, 0x8b, - 0x2f, 0xb1, 0x05, 0x16, 0x87, 0xdd, 0xed, 0xb1, 0x5e, 0x7b, 0x72, 0x22, 0xdf, 0x0b, 0x67, 0x44, - 0xb7, 0xca, 0x98, 0xe9, 0xc6, 0x0f, 0x0e, 0xaa, 0x7b, 0x2e, 0xfa, 0xea, 0xcc, 0x9e, 0x6c, 0x43, - 0x94, 0x03, 0x56, 0x97, 0x7c, 0x9c, 0x90, 0x33, 0xb2, 0x7b, 0xd5, 0x40, 0x3e, 0x82, 0x29, 0xfe, - 0x64, 0xb3, 0xea, 0x87, 0x11, 0x2a, 0xf4, 0x73, 0x27, 0x33, 0x41, 0xe7, 0xef, 0x40, 0xdc, 0x69, - 0x23, 0x71, 0x01, 0x90, 0xe0, 0x4c, 0xde, 0x86, 0xf1, 0x4d, 0xaf, 0xc5, 0x63, 0x05, 0x56, 0x36, - 0xf1, 0xea, 0x51, 0x9c, 0x3f, 0x6d, 0xaf, 0xe5, 0x48, 0xad, 0xba, 0xad, 0xb6, 0x0b, 0x1d, 0x9b, - 0x3c, 0x84, 0xf1, 0x6a, 0x75, 0xf5, 0x96, 0xc7, 0x0e, 0xc0, 0xf6, 0xc1, 0xfc, 0xe9, 0x1e, 0xad, - 0xbc, 0x98, 0xda, 0xca, 0xc9, 0x30, 0xdc, 0xc3, 0x14, 0xf7, 0x4e, 0xcd, 0x6f, 0x1f, 0xd8, 0x3a, - 0xa7, 0x14, 0xb3, 0xec, 0x33, 0x4f, 0xd9, 0x2c, 0xbb, 0x02, 0xd3, 0x9a, 0x81, 0x25, 0x1a, 0x57, - 0xce, 0xc7, 0x01, 0x66, 0x74, 0x33, 0xec, 0xa4, 0x1b, 0x62, 0x92, 0x4e, 0xda, 0x63, 0x9f, 0x3d, - 0xa9, 0x3d, 0xb6, 0x07, 0x33, 0x7c, 0x32, 0xc4, 0x3a, 0xc0, 0x99, 0x5e, 0xe8, 0x31, 0x86, 0x57, - 0x52, 0xc7, 0x70, 0x56, 0xcc, 0xb4, 0x5c, 0x64, 0xf8, 0x44, 0xd9, 0xcd, 0x95, 0xec, 0x00, 0x11, - 0x40, 0x91, 0x60, 0x1f, 0xeb, 0x7a, 0xbe, 0x47, 0x5d, 0x2f, 0xa5, 0xd6, 0x35, 0x25, 0xeb, 0xda, - 0xe6, 0xd5, 0xa4, 0x70, 0x24, 0x2d, 0x59, 0x8f, 0x5c, 0x5f, 0x38, 0xb0, 0x2f, 0x18, 0xf7, 0xa0, - 0xdd, 0x08, 0x3c, 0x50, 0x6f, 0x72, 0xd1, 0x26, 0xc7, 0x3d, 0x85, 0x33, 0x79, 0x02, 0xa7, 0xbb, - 0x5b, 0x81, 0x75, 0x9e, 0xc3, 0x3a, 0xcf, 0x19, 0x75, 0x26, 0x91, 0xf8, 0xba, 0x31, 0xbb, 0x95, - 0xac, 0xb5, 0x07, 0x7f, 0xf2, 0x43, 0x19, 0x38, 0x73, 0xef, 0x56, 0x09, 0xf3, 0xca, 0x79, 0x3c, - 0x74, 0x94, 0x72, 0xdf, 0x3c, 0x2f, 0xee, 0xca, 0x93, 0xf7, 0xf7, 0x52, 0xe2, 0xc0, 0xad, 0x82, - 0xc9, 0x88, 0x17, 0x9b, 0x3b, 0x2e, 0x4f, 0x57, 0x27, 0x58, 0xa4, 0xf8, 0x78, 0xfe, 0xdc, 0x1f, - 0x15, 0x33, 0x76, 0xaf, 0xaa, 0x48, 0x03, 0x16, 0xcc, 0x61, 0x91, 0x16, 0xf3, 0x7b, 0xb4, 0xd1, - 0x98, 0x2f, 0xe2, 0x8a, 0x7e, 0xfd, 0xe8, 0xb0, 0x78, 0xb9, 0x6b, 0x74, 0x95, 0x15, 0x3e, 0xc3, - 0xd4, 0x3a, 0xdc, 0x87, 0xdf, 0x9d, 0xa1, 0xfc, 0x64, 0x61, 0x2a, 0xcd, 0xbc, 0xfc, 0xb7, 0xb2, - 0x89, 0x93, 0x8a, 0x54, 0x60, 0x54, 0x2c, 0x40, 0x21, 0xba, 0x77, 0x2f, 0xb3, 0x73, 0xa9, 0xcb, - 0x6c, 0x54, 0xac, 0x65, 0x5b, 0xd2, 0x93, 0x7d, 0xc6, 0x0a, 0x5b, 0x21, 0x74, 0x9d, 0xaf, 0xf3, - 0x83, 0x08, 0x41, 0xc6, 0x91, 0x5b, 0x3e, 0xb9, 0x17, 0x94, 0xe9, 0x64, 0x87, 0x67, 0xaf, 0xac, - 0x8d, 0x3c, 0xe2, 0x49, 0x4f, 0x72, 0xca, 0x95, 0xc6, 0xcc, 0x70, 0xf2, 0xd4, 0x2a, 0x64, 0xb5, - 0x58, 0xbf, 0x99, 0x81, 0x49, 0xe3, 0xa8, 0x23, 0x37, 0x35, 0x3f, 0xb1, 0xd8, 0x75, 0xda, 0xc0, - 0xc1, 0xdd, 0x2f, 0xe9, 0x41, 0x76, 0x53, 0x18, 0x8b, 0x67, 0x7b, 0xd3, 0xe1, 0xea, 0x4f, 0xba, - 0x0d, 0xf6, 0xbf, 0x19, 0x54, 0xa9, 0xd4, 0x86, 0x7a, 0xa4, 0x52, 0xfb, 0x47, 0xcf, 0xc3, 0x94, - 0xa9, 0x0b, 0x91, 0xd7, 0x61, 0x04, 0x2f, 0x54, 0xa5, 0x62, 0xcd, 0x53, 0xd0, 0xfb, 0x89, 0xac, - 0xa0, 0x02, 0x87, 0xbc, 0x0c, 0xa0, 0xac, 0x76, 0xe5, 0x73, 0xc2, 0xf0, 0xd1, 0x61, 0x31, 0xf3, - 0x86, 0xad, 0x15, 0x90, 0x6f, 0x00, 0xac, 0xfb, 0x75, 0xaa, 0xf2, 0x4e, 0xf6, 0x79, 0x32, 0x7f, - 0xa5, 0x2b, 0x21, 0xc0, 0xa9, 0x96, 0x5f, 0xa7, 0xdd, 0xd1, 0xff, 0x35, 0x8e, 0xe4, 0x4b, 0x30, - 0x6c, 0x77, 0x98, 0x12, 0xcf, 0xef, 0x4f, 0xc6, 0xe5, 0x91, 0xd3, 0x69, 0xd0, 0x58, 0x43, 0x0c, - 0x3a, 0x49, 0x6b, 0x30, 0x06, 0x20, 0xef, 0xf3, 0x44, 0x01, 0x22, 0xca, 0xde, 0x70, 0xfc, 0xc0, - 0xa2, 0x89, 0x22, 0x5d, 0x71, 0xf6, 0x34, 0x12, 0xb2, 0x01, 0xa3, 0xfa, 0xcb, 0x80, 0xe6, 0x70, - 0xac, 0xbf, 0x1e, 0x69, 0xea, 0xa6, 0x48, 0x58, 0x99, 0x7c, 0x34, 0x90, 0x5c, 0xc8, 0x3b, 0x30, - 0xc6, 0xd8, 0xb3, 0x4f, 0x39, 0x14, 0x6a, 0x06, 0x3e, 0xa3, 0x68, 0x0d, 0x62, 0xdb, 0x81, 0x11, - 0x0b, 0x4f, 0x11, 0x90, 0xaf, 0x62, 0x2a, 0x44, 0x31, 0xd4, 0x7d, 0x4d, 0x29, 0x2e, 0x75, 0x0d, - 0x35, 0xe6, 0x46, 0xec, 0xce, 0xad, 0xae, 0xf8, 0x91, 0x5d, 0x15, 0xef, 0x6a, 0x90, 0xe4, 0x0e, - 0xaf, 0x76, 0x55, 0x30, 0x2f, 0x43, 0x38, 0x75, 0xe7, 0x0f, 0x35, 0xf8, 0x92, 0x36, 0x14, 0x62, - 0x29, 0x4f, 0xd4, 0x05, 0xfd, 0xea, 0x7a, 0xa3, 0xab, 0x2e, 0x7d, 0x02, 0xbb, 0xaa, 0xeb, 0xe2, - 0x4e, 0xea, 0x30, 0x25, 0x4f, 0x0c, 0x51, 0xdf, 0x78, 0xbf, 0xfa, 0x5e, 0xee, 0xaa, 0x6f, 0xb6, - 0xbe, 0xdd, 0x5d, 0x4f, 0x82, 0x27, 0x79, 0x07, 0x26, 0x25, 0x84, 0x67, 0xf3, 0x9c, 0x88, 0xd3, - 0x36, 0xd6, 0xb7, 0xbb, 0x72, 0x78, 0x9a, 0xc8, 0x3a, 0x35, 0x5f, 0x1d, 0x93, 0x06, 0x75, 0x72, - 0x55, 0x98, 0xc8, 0xe4, 0x43, 0x18, 0xaf, 0x34, 0x59, 0x47, 0xfc, 0x96, 0x1b, 0x51, 0xe1, 0x8c, - 0x26, 0xcd, 0x42, 0xb4, 0x12, 0x6d, 0xa9, 0xf2, 0x3c, 0xa5, 0x71, 0x91, 0x91, 0xa7, 0x34, 0x06, - 0xb3, 0xc1, 0xe3, 0x4f, 0x41, 0x62, 0x0d, 0x4b, 0x47, 0xb5, 0x73, 0x29, 0xa6, 0x19, 0x1a, 0x7b, - 0x11, 0xcd, 0x92, 0x41, 0xe5, 0x53, 0x4c, 0x22, 0x9a, 0xa5, 0xce, 0x93, 0xbc, 0x0b, 0xe3, 0x22, - 0xef, 0x4d, 0xc9, 0x5e, 0x0f, 0xe7, 0x0b, 0xd8, 0x79, 0x74, 0xaf, 0x97, 0x29, 0x72, 0x1c, 0x37, - 0x48, 0xd8, 0x20, 0xc6, 0xf8, 0xe4, 0x2b, 0x30, 0xf7, 0xd0, 0x6b, 0xd5, 0xfd, 0xfd, 0x50, 0x1c, - 0x53, 0x62, 0xa3, 0x9b, 0x89, 0x3d, 0x80, 0xf6, 0x79, 0xb9, 0x12, 0xce, 0xba, 0x36, 0xbe, 0x54, - 0x0e, 0xe4, 0xaf, 0x76, 0x71, 0xe6, 0x2b, 0x88, 0xf4, 0x5b, 0x41, 0x8b, 0x5d, 0x2b, 0xa8, 0xbb, - 0xfa, 0xe4, 0x72, 0x4a, 0xad, 0x86, 0xf8, 0x40, 0xcc, 0xf3, 0xfd, 0x8e, 0xef, 0xb5, 0xe6, 0x67, - 0x71, 0x2f, 0x7c, 0x3e, 0xe9, 0xd0, 0x8e, 0x78, 0x22, 0xdf, 0xab, 0x75, 0x74, 0x58, 0x3c, 0x9f, - 0x14, 0xc2, 0x3f, 0xf2, 0x8d, 0x8b, 0xf2, 0x14, 0xd6, 0xe4, 0x43, 0x98, 0x60, 0xff, 0xab, 0x5b, - 0x82, 0x39, 0xc3, 0x98, 0x4f, 0xc3, 0x14, 0xf5, 0xe0, 0x1c, 0x61, 0x62, 0x9e, 0x94, 0x0b, 0x04, - 0x83, 0x15, 0x79, 0x0b, 0x80, 0xc9, 0x31, 0x62, 0x3b, 0x3e, 0x15, 0x07, 0x0f, 0x45, 0x31, 0xa8, - 0x7b, 0x23, 0x8e, 0x91, 0xc9, 0x3b, 0x30, 0xce, 0x7e, 0x55, 0x3b, 0x75, 0x9f, 0x7d, 0x1b, 0xa7, - 0x91, 0x96, 0xfb, 0xf8, 0x31, 0xda, 0x90, 0xc3, 0x0d, 0x1f, 0xbf, 0x18, 0x9d, 0xac, 0xc2, 0x34, - 0x06, 0x79, 0xad, 0x60, 0x32, 0xe8, 0xc8, 0xa3, 0xe1, 0xfc, 0x19, 0xed, 0x09, 0x9b, 0x15, 0x39, - 0x9e, 0x2a, 0xd3, 0x95, 0x8b, 0x04, 0x19, 0x09, 0x61, 0x36, 0xde, 0x5d, 0xe2, 0x07, 0xf1, 0x79, - 0x1c, 0x24, 0x29, 0x52, 0x77, 0x63, 0xf0, 0xfd, 0x98, 0xcd, 0x88, 0xb6, 0x71, 0xc9, 0xe7, 0x04, - 0xbd, 0xc2, 0x34, 0xee, 0xc4, 0x06, 0x72, 0x7b, 0x79, 0x33, 0x19, 0x05, 0xf5, 0x2c, 0xf6, 0x00, - 0xa7, 0x79, 0xb7, 0x16, 0x27, 0xa2, 0x4d, 0x89, 0x84, 0x9a, 0x42, 0x4d, 0xbe, 0x0d, 0xa7, 0xe4, - 0x0e, 0x22, 0x8a, 0xc4, 0xba, 0x5e, 0x38, 0xe1, 0x4e, 0x5c, 0xdf, 0x56, 0x55, 0x77, 0x2d, 0xe9, - 0xf4, 0x2a, 0x88, 0x0b, 0xe3, 0x38, 0xad, 0xa2, 0xc6, 0xe7, 0xfb, 0xd5, 0x78, 0xb9, 0xab, 0xc6, - 0xd3, 0xb8, 0x50, 0xba, 0x2b, 0xd3, 0x79, 0x92, 0x25, 0x98, 0x14, 0xdf, 0x91, 0x58, 0x6d, 0x2f, - 0xe0, 0x68, 0xe1, 0xad, 0x92, 0xfc, 0x02, 0xbb, 0x16, 0x9c, 0x49, 0xa2, 0xef, 0xc8, 0xfc, 0x19, - 0xe1, 0x9c, 0xb1, 0x23, 0x27, 0x5f, 0x0f, 0x4c, 0x64, 0xb6, 0x23, 0xc5, 0x52, 0xcc, 0xca, 0x93, - 0x76, 0x20, 0xee, 0x8c, 0xce, 0xc7, 0xc9, 0x41, 0x34, 0xe1, 0xc7, 0xa1, 0x0a, 0x43, 0xdf, 0x12, - 0xd2, 0x38, 0x90, 0xfb, 0x30, 0xab, 0x4e, 0x6d, 0x8d, 0x71, 0x31, 0x4e, 0xb2, 0x12, 0x1f, 0xf5, - 0xe9, 0x7c, 0xd3, 0xe8, 0x89, 0x0b, 0x67, 0x8c, 0x73, 0x5a, 0x63, 0x7d, 0x01, 0x59, 0x63, 0xe2, - 0x63, 0xf3, 0x90, 0x4f, 0x67, 0xdf, 0x8b, 0x0f, 0xf9, 0x08, 0x16, 0x92, 0x67, 0xb3, 0x56, 0xcb, - 0x8b, 0x58, 0xcb, 0xab, 0x47, 0x87, 0xc5, 0x4b, 0x5d, 0xc7, 0x7b, 0x7a, 0x45, 0x7d, 0xb8, 0x91, - 0x6f, 0xc0, 0xbc, 0x79, 0x3e, 0x6b, 0x35, 0x59, 0x58, 0x13, 0x7e, 0x3a, 0xea, 0x60, 0x4f, 0xaf, - 0xa1, 0x27, 0x0f, 0x12, 0x41, 0x31, 0x75, 0x75, 0x6b, 0xd5, 0x5c, 0x8c, 0x3b, 0xd4, 0xf5, 0x95, - 0xa4, 0x57, 0x77, 0x1c, 0x4b, 0xb2, 0x0f, 0xe7, 0xd3, 0x8e, 0x09, 0xad, 0xd2, 0x97, 0xd4, 0xad, - 0xec, 0x6b, 0xe9, 0x47, 0x4e, 0x7a, 0xcd, 0xc7, 0xb0, 0x25, 0x5f, 0x85, 0x53, 0xda, 0xf7, 0xa5, - 0xd5, 0xf7, 0x32, 0xd6, 0x87, 0xfe, 0xbb, 0xfa, 0x87, 0x99, 0x5e, 0x4b, 0x3a, 0x0f, 0xd2, 0x84, - 0x59, 0xd9, 0x71, 0xbc, 0xfe, 0x16, 0x47, 0xcf, 0x25, 0x63, 0x57, 0xed, 0xc6, 0xd0, 0x52, 0xd7, - 0x6f, 0x3b, 0xed, 0x98, 0x50, 0x5f, 0xe9, 0x29, 0x7c, 0xc9, 0x2a, 0x8c, 0x54, 0x37, 0x2b, 0xb7, - 0x6e, 0xad, 0xcc, 0xbf, 0x82, 0x35, 0x48, 0x67, 0x1f, 0x0e, 0x34, 0x94, 0x26, 0x61, 0x63, 0xd6, - 0xf6, 0x76, 0x76, 0x0c, 0x9f, 0x2a, 0x8e, 0x7a, 0x67, 0x28, 0x7f, 0xb9, 0x70, 0xe5, 0xce, 0x50, - 0xfe, 0x4a, 0xe1, 0x55, 0xfb, 0x85, 0xf4, 0x64, 0xdf, 0xbc, 0xb3, 0xf6, 0xa5, 0x7e, 0xa5, 0xf1, - 0x50, 0x58, 0xbf, 0x90, 0x81, 0xd9, 0x94, 0x76, 0x90, 0x4b, 0x30, 0x84, 0x59, 0x4b, 0xb4, 0x57, - 0xf5, 0x44, 0xb6, 0x12, 0x2c, 0x27, 0x9f, 0x83, 0xd1, 0xf2, 0x7a, 0xb5, 0x5a, 0x5a, 0x97, 0x2a, - 0x1b, 0xdf, 0xae, 0x5a, 0xa1, 0x13, 0xba, 0xe6, 0x63, 0x9c, 0x40, 0x23, 0x6f, 0xc0, 0x48, 0x65, - 0x13, 0x09, 0xb8, 0x59, 0x17, 0xaa, 0x30, 0x5e, 0x3b, 0x89, 0x2f, 0x90, 0xac, 0x1f, 0xcb, 0x00, - 0xe9, 0x1e, 0x54, 0x72, 0x1d, 0xc6, 0xf5, 0xa9, 0xe3, 0x0a, 0x26, 0x3e, 0x1c, 0x69, 0x13, 0x63, - 0xeb, 0x38, 0xa4, 0x0c, 0xc3, 0x98, 0xd7, 0x4d, 0xbd, 0x02, 0xa6, 0x1e, 0x00, 0x67, 0xba, 0x0e, - 0x80, 0x61, 0xcc, 0x1a, 0x67, 0x73, 0x62, 0xeb, 0x77, 0x33, 0x40, 0xba, 0x0f, 0xcd, 0x81, 0xad, - 0x10, 0xde, 0xd4, 0xdc, 0x72, 0xf5, 0xbc, 0x04, 0x2a, 0xa9, 0x8c, 0xae, 0x2c, 0xc5, 0x0e, 0xbc, - 0x97, 0x0c, 0xe5, 0xbc, 0xb7, 0x2f, 0xd7, 0x15, 0x18, 0x7e, 0x40, 0x83, 0x6d, 0x69, 0xb1, 0x88, - 0x56, 0x4e, 0x8f, 0x19, 0x40, 0x57, 0x56, 0x11, 0xc3, 0xfa, 0x93, 0x0c, 0xcc, 0xa5, 0x49, 0x72, - 0xc7, 0xb8, 0x5c, 0x59, 0x09, 0x6f, 0x31, 0xb4, 0x40, 0xe0, 0x26, 0x50, 0xca, 0x47, 0xac, 0x08, - 0xc3, 0xac, 0xb3, 0x72, 0x86, 0xf1, 0xb2, 0x80, 0x8d, 0x46, 0x68, 0x73, 0x38, 0x43, 0xe0, 0x61, - 0xa4, 0x86, 0x30, 0x02, 0x19, 0x22, 0xa0, 0xa0, 0x60, 0x73, 0x38, 0x43, 0xb8, 0xe7, 0xd7, 0x55, - 0x4a, 0x63, 0x44, 0x68, 0x32, 0x80, 0xcd, 0xe1, 0xe4, 0x12, 0x8c, 0x6e, 0xb4, 0xd6, 0xa8, 0xfb, - 0x58, 0xc6, 0xc6, 0x46, 0x8b, 0x09, 0xbf, 0xe5, 0x34, 0x18, 0xcc, 0x96, 0x85, 0xd6, 0x4f, 0x67, - 0x60, 0xa6, 0x4b, 0x88, 0x3c, 0xde, 0xab, 0xac, 0xbf, 0x7b, 0xc7, 0x20, 0xfd, 0xe3, 0xcd, 0x1f, - 0x4a, 0x6f, 0xbe, 0xf5, 0x7f, 0x0f, 0xc1, 0x99, 0x1e, 0x3a, 0x7d, 0xec, 0x7e, 0x96, 0x39, 0xd6, - 0xfd, 0xec, 0x6b, 0x4c, 0x87, 0x76, 0xbd, 0x66, 0xb8, 0xe5, 0xc7, 0x2d, 0x8e, 0xad, 0xd8, 0xb1, - 0x4c, 0x66, 0x75, 0x96, 0xe6, 0xce, 0x67, 0x79, 0x66, 0x7d, 0x27, 0xf2, 0xbb, 0x45, 0x0a, 0x83, - 0x59, 0x97, 0x03, 0x58, 0xee, 0x2f, 0x88, 0x03, 0x98, 0xe9, 0x92, 0x30, 0xf4, 0x54, 0x5d, 0x12, - 0xd2, 0xcd, 0x19, 0x87, 0x3f, 0x89, 0x71, 0xeb, 0x32, 0x4c, 0x72, 0x93, 0x91, 0x52, 0xc8, 0x27, - 0x69, 0xa4, 0xcb, 0xcc, 0xc4, 0x0d, 0xbb, 0xe7, 0xc2, 0xa0, 0x21, 0xab, 0xa6, 0xf9, 0xfc, 0x28, - 0x3e, 0x75, 0x5d, 0xea, 0x6d, 0x1e, 0x6f, 0x3c, 0x71, 0xeb, 0xa4, 0xd6, 0x4f, 0x67, 0x4d, 0xef, - 0xb0, 0xbf, 0x88, 0x2b, 0xef, 0x0a, 0x0c, 0x3f, 0xdc, 0xa3, 0x81, 0xdc, 0xef, 0xb0, 0x21, 0xfb, - 0x0c, 0xa0, 0x37, 0x04, 0x31, 0xc8, 0x2d, 0x98, 0xda, 0xe4, 0x33, 0x21, 0x87, 0x77, 0x28, 0x56, - 0xb5, 0xda, 0xe2, 0x42, 0x20, 0x65, 0x7c, 0x13, 0x54, 0xd6, 0x6d, 0x38, 0x67, 0x7c, 0x90, 0x22, - 0x9a, 0x05, 0xb7, 0x62, 0xe7, 0x27, 0xe2, 0x54, 0x6c, 0xb7, 0x1f, 0xef, 0x1e, 0x76, 0x02, 0x6a, - 0xed, 0xc0, 0xf9, 0xbe, 0x8c, 0xd8, 0x41, 0x04, 0x6d, 0xf5, 0x2b, 0x61, 0x6a, 0xd7, 0x97, 0xd4, - 0xd6, 0xe8, 0xac, 0xef, 0x85, 0x09, 0x7d, 0x94, 0x71, 0x4f, 0x65, 0xbf, 0xc5, 0xa6, 0xc6, 0xf7, - 0x54, 0x06, 0xb0, 0x39, 0x3c, 0xbe, 0xc2, 0xcd, 0xa6, 0x5f, 0xe1, 0xc6, 0xd3, 0x9f, 0x3b, 0x6e, - 0xfa, 0x59, 0xe5, 0xf8, 0xc9, 0x6a, 0x95, 0xe3, 0x6f, 0xbd, 0x72, 0x0c, 0x57, 0x61, 0x73, 0xf8, - 0x53, 0xad, 0xfc, 0x77, 0x64, 0x76, 0x10, 0x34, 0x92, 0x97, 0x3a, 0x71, 0x9c, 0x6d, 0x78, 0x36, - 0x4d, 0xd3, 0x8d, 0x31, 0xe3, 0x43, 0x32, 0x7b, 0xdc, 0x21, 0x79, 0x92, 0x85, 0x78, 0x0d, 0x46, - 0x4b, 0xe2, 0x21, 0x7a, 0x28, 0x16, 0x6c, 0xdc, 0xae, 0x57, 0x67, 0x89, 0x65, 0xfd, 0x5c, 0x06, - 0x4e, 0xa5, 0x5e, 0x95, 0xb1, 0x5a, 0xf9, 0x9d, 0x9c, 0xf6, 0x1d, 0x26, 0x2f, 0xe4, 0x38, 0xc6, - 0x49, 0x7c, 0x95, 0x07, 0xef, 0x8b, 0xf5, 0x22, 0x8c, 0xa9, 0x87, 0x1a, 0x32, 0x27, 0xa7, 0x0e, - 0xad, 0x93, 0xe4, 0x7d, 0x7f, 0x15, 0x80, 0xb5, 0xe0, 0xa9, 0xda, 0xd2, 0x59, 0xbf, 0x93, 0xe5, - 0x99, 0xe3, 0x9e, 0xd9, 0xf0, 0x81, 0xe9, 0x06, 0x70, 0xac, 0x4b, 0xbd, 0x83, 0x06, 0x92, 0x15, - 0x18, 0xa9, 0x46, 0x6e, 0xd4, 0x91, 0x2e, 0xd6, 0xb3, 0x3a, 0x19, 0x16, 0x3c, 0x58, 0x8c, 0x9d, - 0x6c, 0x43, 0x84, 0x18, 0xca, 0x01, 0x42, 0x34, 0x3b, 0x3a, 0x0f, 0x26, 0x74, 0x5a, 0xf2, 0x21, - 0x4c, 0xc9, 0x98, 0x68, 0xdc, 0xef, 0x5c, 0x3c, 0x2a, 0x49, 0x8b, 0x0c, 0x19, 0x13, 0x4d, 0xf7, - 0x53, 0x37, 0xf0, 0xf5, 0x9d, 0xba, 0xad, 0x23, 0x5b, 0x7f, 0x3a, 0xc2, 0xd7, 0x81, 0x08, 0x6e, - 0xb8, 0x0d, 0x53, 0x1b, 0x95, 0xf2, 0xb2, 0x76, 0xf1, 0x65, 0xe6, 0xc6, 0x58, 0x79, 0x12, 0xd1, - 0xa0, 0xe5, 0x36, 0x04, 0xc2, 0x41, 0x7c, 0x36, 0xf8, 0x5e, 0xbd, 0x96, 0x7e, 0x29, 0x96, 0xe0, - 0xc8, 0xea, 0xe0, 0xca, 0x8d, 0xaa, 0x23, 0x3b, 0x60, 0x1d, 0xa1, 0xdb, 0x6c, 0xf4, 0xa8, 0xc3, - 0xe4, 0x48, 0xf6, 0xa0, 0x70, 0x1b, 0xe5, 0x18, 0xad, 0x96, 0x5c, 0xff, 0x5a, 0x2e, 0x8a, 0x5a, - 0x9e, 0xe7, 0x02, 0x50, 0x7a, 0x3d, 0x5d, 0x5c, 0xe3, 0x0f, 0x78, 0xe8, 0xd8, 0x0f, 0xf8, 0xaf, - 0x67, 0x60, 0x84, 0x0b, 0x4a, 0x62, 0x7d, 0xf5, 0x10, 0xc5, 0x1e, 0x3e, 0x1d, 0x51, 0xac, 0x80, - 0x1b, 0xb8, 0xb1, 0xd2, 0x78, 0x19, 0x29, 0x27, 0x16, 0xac, 0xb4, 0xcb, 0xc4, 0x2b, 0x6c, 0x5e, - 0x72, 0xfc, 0x7a, 0x25, 0x95, 0xd8, 0x1f, 0x79, 0xf4, 0x58, 0x97, 0x37, 0xe9, 0xc3, 0x3d, 0x2a, - 0xfc, 0x91, 0x4d, 0x2f, 0xe4, 0x35, 0x18, 0x13, 0x5e, 0xce, 0x4b, 0x07, 0xe2, 0xa1, 0xaa, 0x60, - 0xbc, 0xfd, 0xd7, 0x97, 0x0e, 0x62, 0x21, 0x50, 0xf8, 0x49, 0x3b, 0xdb, 0x07, 0x46, 0x86, 0x3c, - 0x89, 0x48, 0x36, 0x78, 0xe6, 0x28, 0x1e, 0xfe, 0xd1, 0x8c, 0xf7, 0xac, 0xe0, 0x22, 0x7e, 0x8a, - 0x74, 0x95, 0x4c, 0x89, 0xf6, 0x18, 0xf3, 0x20, 0x6b, 0x50, 0x40, 0x7b, 0x11, 0x5a, 0xe7, 0xc6, - 0x23, 0x95, 0x32, 0xf7, 0xa4, 0x15, 0x36, 0x7f, 0x11, 0x2f, 0x73, 0x84, 0xd9, 0x89, 0xe9, 0xc4, - 0xd2, 0x45, 0xc9, 0x14, 0xb7, 0x42, 0x72, 0xf5, 0x91, 0x77, 0x60, 0x5c, 0x85, 0xdf, 0x54, 0x6e, - 0x74, 0x78, 0x61, 0x1d, 0xc7, 0xeb, 0x34, 0xf3, 0x0d, 0x69, 0xe8, 0x64, 0x11, 0xf2, 0xec, 0x23, - 0x4e, 0xe6, 0xe6, 0xeb, 0x08, 0x98, 0x6e, 0x1b, 0x2f, 0xf1, 0x48, 0x15, 0x66, 0xd9, 0x47, 0x53, - 0xf5, 0x5a, 0xbb, 0x0d, 0xba, 0xe6, 0xef, 0xfa, 0x9d, 0xe8, 0xbe, 0xbd, 0x26, 0x36, 0x57, 0x2e, - 0x2a, 0xbb, 0xcd, 0x86, 0x51, 0x1c, 0x18, 0x99, 0x97, 0x53, 0xa8, 0xb5, 0x3d, 0xec, 0x8f, 0xb2, - 0x30, 0xae, 0xad, 0x27, 0x72, 0x05, 0xf2, 0x95, 0x70, 0xcd, 0xaf, 0x3d, 0x52, 0x01, 0xb6, 0x26, - 0x8f, 0x0e, 0x8b, 0x63, 0x5e, 0xe8, 0x34, 0x10, 0x68, 0xab, 0x62, 0xb2, 0x04, 0x93, 0xfc, 0x2f, - 0x19, 0x16, 0x3d, 0x1b, 0x9b, 0xf8, 0x71, 0x64, 0x19, 0x10, 0x5d, 0xdf, 0xd7, 0x0c, 0x12, 0xf2, - 0x75, 0x00, 0x0e, 0x40, 0x97, 0xcc, 0xdc, 0xe0, 0xce, 0xa4, 0xa2, 0x82, 0x14, 0x67, 0x4c, 0x8d, - 0x21, 0xf9, 0x26, 0x0f, 0xd7, 0x29, 0xd7, 0xff, 0xd0, 0xe0, 0xde, 0xb0, 0x8c, 0xbf, 0x93, 0xee, - 0x94, 0xaf, 0xb3, 0x14, 0xb1, 0x00, 0x17, 0x6c, 0x5a, 0xf3, 0x1f, 0xd3, 0xe0, 0xa0, 0x14, 0x21, - 0xa2, 0x86, 0x61, 0xfd, 0x4f, 0x19, 0xed, 0xab, 0x21, 0xeb, 0x98, 0x4e, 0x92, 0xaf, 0x08, 0x61, - 0xb3, 0xa1, 0x84, 0x79, 0x09, 0xb7, 0xe9, 0xce, 0xd2, 0xf3, 0xc2, 0xc2, 0x74, 0x56, 0xad, 0xab, - 0x44, 0x9a, 0x49, 0x0e, 0x24, 0x1f, 0xc0, 0x10, 0x0e, 0x5d, 0xf6, 0xd8, 0xae, 0xc9, 0xf3, 0x74, - 0x88, 0x8d, 0x19, 0x76, 0x04, 0x29, 0xc9, 0xe7, 0x84, 0x3b, 0x1b, 0x1f, 0xfc, 0x29, 0xed, 0x50, - 0x64, 0xed, 0x50, 0x07, 0x69, 0x1c, 0x97, 0x41, 0x5b, 0x3d, 0xff, 0x4e, 0x16, 0x0a, 0xc9, 0x6f, - 0x95, 0xbc, 0x0f, 0x13, 0xf2, 0xa4, 0xc3, 0x7c, 0xe3, 0xac, 0x97, 0x13, 0x22, 0xa6, 0xb6, 0x3c, - 0xee, 0x92, 0xe9, 0xc6, 0x75, 0x02, 0x26, 0x75, 0x6c, 0x89, 0x38, 0x49, 0xda, 0x57, 0x12, 0xf9, - 0x51, 0x3b, 0x11, 0xf1, 0x51, 0xa2, 0x91, 0x37, 0x21, 0x77, 0xef, 0x56, 0x49, 0xf8, 0x4e, 0xc8, - 0x2d, 0xe9, 0xde, 0xad, 0x12, 0xff, 0x9a, 0xb9, 0x6d, 0x98, 0x69, 0xa9, 0xc6, 0xf0, 0xc9, 0x9a, - 0x16, 0x50, 0x75, 0xc4, 0x48, 0xa4, 0x24, 0xc1, 0xaa, 0x73, 0xc7, 0x47, 0x56, 0xe5, 0x89, 0xcc, - 0x45, 0x68, 0xc1, 0xff, 0x20, 0x07, 0x63, 0xaa, 0x7e, 0x42, 0x00, 0x85, 0x2a, 0xa1, 0xc9, 0xe0, - 0xdf, 0xe4, 0x2c, 0xe4, 0xa5, 0x1c, 0x25, 0x5c, 0x28, 0x46, 0x43, 0x21, 0x43, 0xcd, 0x83, 0x14, - 0x98, 0xf8, 0x67, 0x6e, 0xcb, 0x9f, 0xe4, 0x3a, 0x28, 0x69, 0xa8, 0x97, 0xd8, 0x34, 0xc4, 0x26, - 0xcc, 0x56, 0x68, 0x64, 0x0a, 0xb2, 0x1e, 0x0f, 0x57, 0x33, 0x66, 0x67, 0xbd, 0x3a, 0x79, 0x1f, - 0xf2, 0x6e, 0xbd, 0x4e, 0xeb, 0x8e, 0x2b, 0x8d, 0x1f, 0xfa, 0x2d, 0x9a, 0x3c, 0xe3, 0xc6, 0x0f, - 0x01, 0xa4, 0x2a, 0x45, 0xa4, 0x04, 0x63, 0x0d, 0x97, 0xdb, 0x37, 0xd5, 0x07, 0x38, 0x51, 0x62, - 0x0e, 0x79, 0x46, 0x76, 0x3f, 0xa4, 0x75, 0xf2, 0x0a, 0x0c, 0xb1, 0xd9, 0x14, 0x47, 0x88, 0x14, - 0xdf, 0xd8, 0x64, 0xf2, 0x01, 0x5b, 0x7d, 0xce, 0x46, 0x04, 0xf2, 0x12, 0xe4, 0x3a, 0x8b, 0x3b, - 0xe2, 0x70, 0x28, 0xc4, 0xc1, 0x8d, 0x15, 0x1a, 0x2b, 0x26, 0x37, 0x20, 0xbf, 0x6f, 0xc6, 0xc5, - 0x3d, 0x95, 0x98, 0x46, 0x85, 0xaf, 0x10, 0x97, 0xf2, 0x30, 0xc2, 0x0f, 0x02, 0xeb, 0x3c, 0x40, - 0x5c, 0x75, 0xb7, 0xa7, 0x8b, 0xf5, 0x75, 0x18, 0x53, 0x55, 0x92, 0x73, 0x00, 0x8f, 0xe8, 0x81, - 0xb3, 0xe7, 0xb6, 0xea, 0x0d, 0x2e, 0xdf, 0x4d, 0xd8, 0x63, 0x8f, 0xe8, 0xc1, 0x2a, 0x02, 0xc8, - 0x19, 0x18, 0x6d, 0xb3, 0x59, 0x15, 0x4b, 0x77, 0xc2, 0x1e, 0x69, 0x77, 0xb6, 0xd9, 0x0a, 0x9d, - 0x87, 0x51, 0xbc, 0x79, 0x13, 0x1f, 0xda, 0xa4, 0x2d, 0x7f, 0x5a, 0x7f, 0x96, 0xc3, 0x9c, 0x10, - 0x5a, 0x3b, 0xc9, 0x45, 0x98, 0xac, 0x05, 0x14, 0xcf, 0x1c, 0x97, 0x49, 0x52, 0xa2, 0x9e, 0x89, - 0x18, 0x58, 0xa9, 0x93, 0x4b, 0x30, 0x2d, 0x72, 0xf7, 0xb3, 0x06, 0xd5, 0xb6, 0x45, 0x10, 0xeb, - 0x09, 0x7b, 0x92, 0x83, 0xef, 0xd2, 0x83, 0xe5, 0x6d, 0x0c, 0xb3, 0x54, 0xd0, 0xa3, 0x64, 0x46, - 0x2a, 0xe5, 0xaa, 0x3d, 0xad, 0xc1, 0xd1, 0xa6, 0xe9, 0x34, 0x8c, 0xb8, 0xee, 0x6e, 0xc7, 0xe3, - 0xe1, 0x50, 0x26, 0x6c, 0xf1, 0x8b, 0xbc, 0x06, 0x33, 0x71, 0x30, 0x55, 0xd9, 0x8d, 0x61, 0xec, - 0x46, 0x41, 0x15, 0x2c, 0x73, 0x38, 0x79, 0x03, 0x88, 0x5e, 0x9f, 0xbf, 0xfd, 0x11, 0xad, 0xf1, - 0xa5, 0x36, 0x61, 0xcf, 0x68, 0x25, 0x1b, 0x58, 0x40, 0x5e, 0x84, 0x89, 0x80, 0x86, 0x28, 0xc5, - 0xe1, 0xb0, 0x61, 0xca, 0x24, 0x7b, 0x5c, 0xc2, 0xd8, 0xd8, 0x5d, 0x86, 0x82, 0x36, 0x1c, 0x18, - 0x88, 0x94, 0x47, 0x70, 0xb6, 0xa7, 0x62, 0xb8, 0xdd, 0xae, 0xd4, 0xc9, 0x57, 0x60, 0x41, 0xc3, - 0xe4, 0xd9, 0x9b, 0x1c, 0xda, 0xf0, 0x76, 0xbd, 0xed, 0x06, 0x15, 0xcb, 0xa8, 0x7b, 0xb1, 0x2a, - 0x1d, 0xcc, 0x9e, 0x8f, 0xa9, 0x79, 0x5e, 0xa7, 0x15, 0x41, 0x4b, 0xd6, 0x60, 0x2e, 0xc1, 0x99, - 0xd6, 0x9d, 0x4e, 0xbb, 0x67, 0xfc, 0xa1, 0x98, 0x27, 0x31, 0x79, 0xd2, 0xfa, 0xfd, 0xb6, 0xb5, - 0x04, 0x33, 0x5d, 0x3b, 0x8c, 0x96, 0xce, 0x9b, 0xef, 0x98, 0xfd, 0xd3, 0x79, 0x5b, 0x2d, 0x98, - 0xd0, 0x4f, 0x8c, 0x63, 0x02, 0x9e, 0x9f, 0x46, 0xb7, 0x7f, 0xbe, 0x9d, 0x8e, 0x1c, 0x1d, 0x16, - 0xb3, 0x5e, 0x1d, 0x9d, 0xfd, 0x2f, 0x43, 0x5e, 0x0a, 0x37, 0x42, 0xa6, 0xc0, 0x1b, 0x5e, 0x21, - 0x55, 0x1f, 0xd8, 0xaa, 0xd4, 0x7a, 0x05, 0x46, 0xc5, 0xa1, 0xd0, 0xff, 0x5e, 0xd7, 0xfa, 0xe1, - 0x2c, 0x4c, 0xdb, 0x94, 0x6d, 0x59, 0x94, 0x67, 0x39, 0x78, 0x66, 0xd5, 0xcc, 0xf4, 0xe0, 0x71, - 0x46, 0xdf, 0xfa, 0xe4, 0x17, 0xf8, 0x87, 0x19, 0x98, 0x4d, 0xc1, 0xfd, 0x58, 0xf9, 0xf5, 0x6e, - 0xc2, 0x58, 0xd9, 0x73, 0x1b, 0xa5, 0x7a, 0x5d, 0xc5, 0x00, 0x40, 0x91, 0x18, 0x93, 0x70, 0xb8, - 0x0c, 0xaa, 0x8b, 0x07, 0x0a, 0x95, 0xbc, 0x2a, 0x16, 0x45, 0x9c, 0x62, 0x14, 0x17, 0xc5, 0x77, - 0x0f, 0x8b, 0xc0, 0xdb, 0x14, 0xe7, 0x1d, 0xc6, 0x80, 0x8e, 0x1c, 0x18, 0xdb, 0xe8, 0x3f, 0xb3, - 0x53, 0x97, 0x1e, 0xd0, 0x31, 0xd9, 0xbd, 0x81, 0x52, 0x0c, 0xfc, 0x78, 0x16, 0x4e, 0xa7, 0x13, - 0x7e, 0xdc, 0x54, 0x89, 0x98, 0xdc, 0x41, 0x0b, 0x42, 0x8b, 0xa9, 0x12, 0x79, 0x26, 0x08, 0xc4, - 0x8f, 0x11, 0xc8, 0x0e, 0x4c, 0xae, 0xb9, 0x61, 0xb4, 0x4a, 0xdd, 0x20, 0xda, 0xa6, 0x6e, 0x34, - 0x80, 0x8c, 0xfc, 0x92, 0x7c, 0x3e, 0xc5, 0x63, 0x7a, 0x4f, 0x52, 0x26, 0xa4, 0x58, 0x93, 0xad, - 0x5a, 0x28, 0x43, 0x03, 0x2c, 0x94, 0x6f, 0xc1, 0x74, 0x95, 0x36, 0xdd, 0xf6, 0x9e, 0x1f, 0x48, - 0x27, 0xcf, 0xab, 0x30, 0xa9, 0x40, 0xa9, 0xab, 0xc5, 0x2c, 0x36, 0xf0, 0xb5, 0x81, 0x88, 0xb7, - 0x12, 0xb3, 0xd8, 0xfa, 0xdb, 0x59, 0x38, 0x53, 0xaa, 0x09, 0xab, 0x26, 0x51, 0x20, 0x8d, 0x2f, - 0x3f, 0xe5, 0xba, 0xc9, 0x35, 0x18, 0xbb, 0xe7, 0x3e, 0x59, 0xa3, 0x6e, 0x48, 0x43, 0x91, 0xa8, - 0x8a, 0x0b, 0x94, 0xee, 0x93, 0xd8, 0xd8, 0xc7, 0x8e, 0x71, 0x74, 0x8d, 0x7b, 0xe8, 0x13, 0x6a, - 0xdc, 0x16, 0x8c, 0xac, 0xfa, 0x8d, 0xba, 0x38, 0x6e, 0xc5, 0x33, 0xe0, 0x1e, 0x42, 0x6c, 0x51, - 0xc2, 0x14, 0xd5, 0x29, 0xd5, 0x62, 0x6c, 0xc2, 0xa7, 0x3e, 0x24, 0x97, 0x60, 0x14, 0x2b, 0x52, - 0xa9, 0x7e, 0xf1, 0xd0, 0x68, 0x50, 0x4c, 0x37, 0x54, 0xb7, 0x65, 0xa1, 0x3e, 0x12, 0xc3, 0x9f, - 0x6c, 0x24, 0xac, 0x7f, 0x80, 0x2f, 0x8c, 0x7a, 0x2f, 0xd9, 0x49, 0xa4, 0x35, 0x24, 0x33, 0x60, - 0x43, 0xb2, 0x4f, 0x6d, 0x4a, 0x72, 0x3d, 0xa7, 0xe4, 0x47, 0xb2, 0x30, 0xae, 0x1a, 0xfb, 0x19, - 0x8b, 0x84, 0xac, 0xfa, 0x35, 0x50, 0x60, 0x86, 0xaa, 0xb6, 0x57, 0x88, 0xf8, 0x07, 0x1f, 0xc0, - 0x88, 0xf8, 0x98, 0x32, 0x09, 0x23, 0xc4, 0xc4, 0xec, 0x2e, 0x4d, 0x09, 0xd6, 0x23, 0x38, 0xa1, - 0xa1, 0x2d, 0xe8, 0x30, 0xf2, 0xc5, 0x43, 0xba, 0x2d, 0x1e, 0x9c, 0x9f, 0xd9, 0x33, 0x2a, 0x3d, - 0xf2, 0x45, 0xdc, 0xb1, 0x81, 0x4e, 0xa7, 0x7f, 0x9a, 0x87, 0x42, 0x92, 0xe4, 0xf8, 0x58, 0xd3, - 0x9b, 0x9d, 0x6d, 0xae, 0x2d, 0xf0, 0x58, 0xd3, 0xed, 0xce, 0xb6, 0xcd, 0x60, 0x68, 0x8f, 0x12, - 0x78, 0x8f, 0xb1, 0xd7, 0x13, 0xc2, 0x1e, 0x25, 0xf0, 0x1e, 0x1b, 0xf6, 0x28, 0x81, 0xf7, 0x18, - 0x55, 0xf4, 0xb5, 0x2a, 0x3a, 0xeb, 0xa2, 0xaa, 0x20, 0x54, 0xf4, 0x46, 0x98, 0xcc, 0xff, 0x22, - 0xd1, 0xd8, 0x51, 0xb9, 0x44, 0xdd, 0x40, 0xc4, 0x45, 0x16, 0xdb, 0x19, 0x1e, 0x95, 0xdb, 0x08, - 0xe6, 0xe9, 0x9a, 0x6d, 0x1d, 0x89, 0x34, 0x80, 0x68, 0x3f, 0xe5, 0x07, 0x7c, 0xbc, 0xd6, 0x2a, - 0x0d, 0x88, 0xe6, 0x74, 0xd6, 0x8e, 0xfe, 0x35, 0xa7, 0xf0, 0x7d, 0x9a, 0x17, 0xa5, 0x9b, 0x22, - 0xd8, 0x1b, 0x5e, 0xcd, 0xe4, 0x8f, 0x65, 0x26, 0xbd, 0xd9, 0x81, 0x07, 0x83, 0x53, 0x17, 0x34, - 0x31, 0x13, 0xf2, 0x1e, 0x8c, 0xeb, 0x2e, 0xd8, 0xdc, 0x51, 0xf8, 0x05, 0x1e, 0xbf, 0xab, 0x47, - 0xc6, 0x40, 0x9d, 0x80, 0x6c, 0xc3, 0x99, 0x65, 0xbf, 0x15, 0x76, 0x9a, 0x32, 0x52, 0x58, 0x1c, - 0x9f, 0x14, 0x70, 0x2a, 0xd0, 0x9f, 0xb3, 0x26, 0x50, 0x84, 0xc7, 0xaf, 0xb4, 0xf0, 0x36, 0x15, - 0x90, 0x5e, 0x8c, 0xc8, 0x16, 0x8c, 0xe3, 0x65, 0xa3, 0x30, 0x21, 0x1b, 0x37, 0xb7, 0x8d, 0xb8, - 0xa4, 0xcc, 0x3e, 0x0c, 0x1e, 0xea, 0xc6, 0x6d, 0x36, 0xa4, 0x81, 0xb1, 0x7e, 0x69, 0xaa, 0x21, - 0x93, 0xaf, 0xc3, 0x14, 0x57, 0x8b, 0x1f, 0xd2, 0x6d, 0xbe, 0x76, 0x26, 0x0c, 0x1d, 0xdf, 0x2c, - 0xe4, 0x0f, 0xd2, 0xe2, 0x8a, 0x77, 0x9f, 0x6e, 0xf3, 0xb9, 0x37, 0xcc, 0xfb, 0x0d, 0x7c, 0x72, - 0x1f, 0x66, 0x57, 0xdd, 0x90, 0x03, 0x35, 0x5f, 0xda, 0x49, 0xbc, 0xfb, 0x44, 0xb3, 0xcb, 0x3d, - 0x37, 0x94, 0x77, 0xc6, 0xa9, 0xbe, 0xb3, 0x69, 0xf4, 0xe4, 0x87, 0x33, 0x30, 0x6f, 0x5c, 0x29, - 0x0b, 0xe3, 0x9f, 0x26, 0x6d, 0x45, 0x68, 0xc7, 0x3f, 0xa5, 0x12, 0x45, 0xf7, 0x42, 0xe3, 0x53, - 0x92, 0xb8, 0xb5, 0x0e, 0xe2, 0x72, 0xdd, 0x9e, 0xb1, 0x17, 0x0f, 0xf1, 0xa1, 0xe2, 0x37, 0x3d, - 0x6d, 0x7e, 0xa8, 0x89, 0xef, 0x5a, 0xa2, 0x59, 0x37, 0x93, 0xe3, 0x2d, 0xae, 0x90, 0x32, 0xea, - 0x0a, 0x69, 0x0e, 0x86, 0x71, 0x54, 0x65, 0xe8, 0x0f, 0xfc, 0x61, 0x7d, 0x4e, 0xdf, 0x87, 0x84, - 0x58, 0xd8, 0x77, 0x1f, 0xb2, 0xfe, 0xbb, 0x11, 0x98, 0x4e, 0x2c, 0x0b, 0xa1, 0xa7, 0x66, 0xba, - 0xf4, 0xd4, 0x2a, 0x00, 0xbf, 0x44, 0x1d, 0xf0, 0xb6, 0x53, 0xfa, 0x10, 0x8d, 0x0b, 0x97, 0x3c, - 0xf5, 0x4d, 0x69, 0x6c, 0x18, 0x53, 0xfe, 0xc5, 0x0e, 0x78, 0xfb, 0xac, 0x98, 0xf2, 0x8f, 0x5e, - 0x63, 0x1a, 0xb3, 0x21, 0x45, 0x18, 0xc6, 0x78, 0x7d, 0xba, 0x0b, 0x97, 0xc7, 0x00, 0x36, 0x87, - 0x93, 0x8b, 0x30, 0xc2, 0x84, 0xa8, 0x4a, 0x59, 0x6c, 0x82, 0x78, 0xb6, 0x30, 0x29, 0x8b, 0x49, - 0x2c, 0xa2, 0x88, 0xdc, 0x84, 0x09, 0xfe, 0x97, 0x08, 0xd9, 0x30, 0x62, 0x5a, 0xa4, 0x39, 0x5e, - 0x5d, 0x46, 0x6d, 0x30, 0xf0, 0x98, 0x76, 0x51, 0xed, 0xe0, 0xcd, 0x4a, 0xa5, 0x2c, 0x02, 0xbc, - 0xa2, 0x76, 0x11, 0x72, 0x20, 0x26, 0x62, 0x57, 0x08, 0x4c, 0x96, 0x11, 0x86, 0xd4, 0x79, 0xd4, - 0x29, 0x51, 0x96, 0xe1, 0x06, 0xd4, 0xb6, 0x28, 0x21, 0x57, 0xf8, 0xa3, 0x05, 0x8a, 0x85, 0x3c, - 0xdf, 0x15, 0xbe, 0x08, 0xe0, 0xc5, 0x04, 0xca, 0x86, 0xaa, 0x98, 0x55, 0xce, 0xfe, 0x5e, 0x69, - 0xba, 0x5e, 0x43, 0x6c, 0x2b, 0x58, 0x39, 0xe2, 0x52, 0x06, 0xb5, 0x63, 0x04, 0xf2, 0x0e, 0x4c, - 0xb1, 0x1f, 0xcb, 0x7e, 0xb3, 0xe9, 0xb7, 0x90, 0xfd, 0x78, 0x1c, 0xfd, 0x07, 0x49, 0x6a, 0x58, - 0xc4, 0x6b, 0x49, 0xe0, 0xb2, 0xf3, 0x04, 0x1f, 0x44, 0x3b, 0xfc, 0x39, 0x65, 0x22, 0x3e, 0x4f, - 0x90, 0x34, 0xe4, 0x70, 0x5b, 0x47, 0x22, 0x6f, 0xc1, 0x24, 0xfb, 0x79, 0xdb, 0x7b, 0x4c, 0x79, - 0x85, 0x93, 0xf1, 0x13, 0x3d, 0x52, 0xed, 0xb2, 0x12, 0x5e, 0x9f, 0x89, 0x49, 0xbe, 0x0c, 0xa7, - 0x90, 0x53, 0xcd, 0x6f, 0xd3, 0x7a, 0x69, 0x67, 0xc7, 0x6b, 0x78, 0xdc, 0x44, 0x88, 0x07, 0x27, - 0xc0, 0xdb, 0x6d, 0x5e, 0x31, 0x62, 0x38, 0x6e, 0x8c, 0x62, 0xa7, 0x53, 0x92, 0x87, 0x50, 0x58, - 0xee, 0x84, 0x91, 0xdf, 0x2c, 0x45, 0x51, 0xe0, 0x6d, 0x77, 0x22, 0x1a, 0xce, 0x4f, 0x1b, 0x2e, - 0xfc, 0xec, 0xe3, 0x50, 0x85, 0xfc, 0x3e, 0xa8, 0x86, 0x14, 0x8e, 0xab, 0x48, 0xec, 0x2e, 0x26, - 0xd6, 0x3f, 0xcb, 0xc0, 0xa4, 0x41, 0x4a, 0xde, 0x84, 0x89, 0x5b, 0x81, 0x47, 0x5b, 0xf5, 0xc6, - 0x81, 0xa6, 0xa8, 0xa2, 0x16, 0xb3, 0x23, 0xe0, 0xbc, 0xd7, 0x06, 0x9a, 0xba, 0xe7, 0xc9, 0xa6, - 0xda, 0xef, 0x5d, 0xe3, 0x9e, 0x84, 0x62, 0x81, 0xe6, 0xe2, 0x98, 0x22, 0xb8, 0x40, 0xc5, 0xea, - 0xd4, 0x50, 0xc8, 0xbb, 0x30, 0xc2, 0x9f, 0x4e, 0x85, 0x31, 0xd9, 0xd9, 0xb4, 0x6e, 0x72, 0xaf, - 0x55, 0x5c, 0x88, 0x68, 0xb8, 0x12, 0xda, 0x82, 0xc8, 0xfa, 0x99, 0x0c, 0x90, 0x6e, 0xd4, 0x63, - 0xee, 0xbd, 0x8e, 0x35, 0x88, 0xf9, 0x40, 0x7d, 0x8d, 0x39, 0xe3, 0x36, 0x9a, 0xd5, 0xc4, 0x0b, - 0xf8, 0xc0, 0x8b, 0xaf, 0x4e, 0xbf, 0x88, 0xe3, 0xc5, 0xd6, 0x0f, 0x65, 0x01, 0x62, 0x6c, 0xf2, - 0x45, 0x9e, 0x16, 0xe5, 0xcb, 0x1d, 0xb7, 0xe1, 0xed, 0x78, 0x66, 0x9c, 0x40, 0x64, 0xf2, 0x2d, - 0x59, 0x62, 0x9b, 0x88, 0xe4, 0x7d, 0x98, 0xae, 0x6e, 0x9a, 0xb4, 0x5a, 0x0a, 0x88, 0xb0, 0xed, - 0x24, 0xc8, 0x93, 0xd8, 0x68, 0x34, 0xaa, 0xcf, 0x06, 0x37, 0x1a, 0xe5, 0x13, 0x21, 0x4a, 0xd8, - 0xc6, 0x52, 0xdd, 0x14, 0x76, 0xca, 0xf5, 0x4a, 0x59, 0xec, 0x52, 0xd8, 0xba, 0xb0, 0xed, 0xb4, - 0x85, 0x01, 0x33, 0xdb, 0x27, 0x0c, 0xbc, 0x78, 0x20, 0x87, 0x7b, 0x78, 0xa6, 0xfe, 0x2c, 0x5e, - 0xfb, 0x35, 0xfd, 0x88, 0x8a, 0xdb, 0x8e, 0x67, 0x56, 0xef, 0x89, 0xdf, 0xdd, 0x87, 0x0d, 0x87, - 0x3b, 0xa3, 0x77, 0xc2, 0xea, 0xe3, 0x46, 0xac, 0xa4, 0xf0, 0x17, 0xf8, 0x14, 0x3b, 0x91, 0xbf, - 0x97, 0x81, 0x53, 0xa9, 0xb4, 0xe4, 0x2a, 0x40, 0x7c, 0xa7, 0x24, 0x46, 0x09, 0x77, 0xcc, 0x38, - 0x92, 0x86, 0xad, 0x61, 0x90, 0xaf, 0x25, 0x6f, 0x83, 0x8e, 0x3f, 0x08, 0x17, 0x64, 0xa4, 0x24, - 0xf3, 0x36, 0x28, 0xe5, 0x0e, 0xc8, 0xfa, 0x87, 0x39, 0x98, 0xd1, 0x02, 0x75, 0xf0, 0xb6, 0x1e, - 0x63, 0xc4, 0xfb, 0x08, 0x26, 0x58, 0x6f, 0xbc, 0x9a, 0xf0, 0xfa, 0xe1, 0x36, 0x22, 0xaf, 0x76, - 0xb9, 0x4c, 0x09, 0x6e, 0x57, 0x75, 0x64, 0x1e, 0xbf, 0x0c, 0xb7, 0x4e, 0x7c, 0x13, 0xa8, 0x75, - 0x7b, 0xff, 0x18, 0xcc, 0x49, 0x08, 0x93, 0xe5, 0x83, 0x96, 0xdb, 0x54, 0xb5, 0x71, 0x5b, 0x91, - 0xd7, 0x7a, 0xd6, 0x66, 0x60, 0xf3, 0xea, 0x62, 0xe7, 0x02, 0x5e, 0x96, 0xe2, 0xd7, 0x6a, 0x50, - 0x2d, 0xbc, 0x0f, 0x33, 0x5d, 0x8d, 0x3e, 0x51, 0x28, 0xb5, 0x87, 0x40, 0xba, 0xdb, 0x91, 0xc2, - 0xe1, 0x35, 0x33, 0x50, 0xdf, 0x29, 0xf5, 0x2c, 0x8c, 0x09, 0xa0, 0xb9, 0xe5, 0xc9, 0xa2, 0x1e, - 0x68, 0xed, 0x67, 0xb3, 0xba, 0xdb, 0xda, 0xb3, 0xfe, 0xd5, 0x7d, 0x60, 0x68, 0xc3, 0xe7, 0x7b, - 0xcd, 0xe9, 0x40, 0xb7, 0x0e, 0xdf, 0xc9, 0xc1, 0x99, 0x1e, 0x94, 0xe4, 0x20, 0xb9, 0x88, 0xf8, - 0x2d, 0xc4, 0xf5, 0xfe, 0x15, 0x3e, 0x8d, 0xa5, 0x44, 0xbe, 0xc8, 0x1d, 0xd7, 0x6b, 0x98, 0x64, - 0x58, 0xe8, 0xdf, 0x3c, 0xe7, 0xbd, 0x82, 0x26, 0x3d, 0xd6, 0x39, 0x94, 0xbc, 0x0f, 0xc3, 0xe8, - 0xb3, 0x98, 0x08, 0x14, 0xc6, 0x30, 0x10, 0xae, 0x45, 0x55, 0x63, 0x3f, 0x8d, 0xa8, 0x6a, 0x0c, - 0x40, 0xbe, 0x00, 0xb9, 0xd2, 0xc3, 0xaa, 0x98, 0x97, 0x29, 0x9d, 0xfc, 0x61, 0x35, 0x0e, 0xe6, - 0xee, 0x1a, 0x51, 0xd7, 0x19, 0x05, 0x23, 0xbc, 0xbd, 0xbc, 0x29, 0x66, 0x45, 0x27, 0xbc, 0xbd, - 0xbc, 0x19, 0x13, 0xee, 0xd6, 0x8c, 0xc0, 0x2b, 0xb7, 0x97, 0x37, 0x3f, 0xbd, 0x65, 0xff, 0x6f, - 0x67, 0xb9, 0xb7, 0x3d, 0xef, 0xd8, 0xfb, 0x30, 0x61, 0x04, 0x52, 0xcd, 0xc4, 0xf2, 0x98, 0x8a, - 0x57, 0x9b, 0x30, 0xae, 0x31, 0x08, 0x64, 0x5a, 0x04, 0xf6, 0x1b, 0x25, 0x5e, 0xdd, 0x8c, 0x45, - 0x71, 0x40, 0x99, 0x38, 0x99, 0x16, 0x41, 0x91, 0x90, 0x1b, 0x90, 0xdf, 0xa2, 0x2d, 0xb7, 0x15, - 0xa9, 0x0b, 0x51, 0x34, 0x90, 0x8d, 0x10, 0x66, 0x4a, 0x0d, 0x0a, 0x11, 0x8d, 0x39, 0x3b, 0xdb, - 0x61, 0x2d, 0xf0, 0x30, 0x2a, 0x87, 0x3a, 0x8b, 0xb9, 0x31, 0xa7, 0x56, 0x62, 0x32, 0x48, 0x10, - 0x59, 0x3f, 0x9b, 0x81, 0x51, 0x31, 0x91, 0x3c, 0x9d, 0xcd, 0x6e, 0x7c, 0x96, 0x88, 0x74, 0x36, - 0xbb, 0x5e, 0x32, 0x9d, 0xcd, 0x2e, 0x0f, 0x7d, 0x31, 0x26, 0x1c, 0x47, 0xd5, 0xd3, 0x20, 0xcf, - 0xac, 0xce, 0x81, 0x66, 0xb5, 0x31, 0xea, 0xa0, 0x5e, 0x32, 0xd6, 0xdf, 0x11, 0x2d, 0xbb, 0xbd, - 0xbc, 0x49, 0x16, 0x21, 0xbf, 0xe6, 0xf3, 0xb0, 0x2a, 0x7a, 0x6e, 0xc2, 0x86, 0x80, 0xe9, 0x03, - 0x24, 0xf1, 0x58, 0xfb, 0x36, 0x03, 0x5f, 0xe8, 0x32, 0x5a, 0xfb, 0xda, 0x1c, 0x98, 0x68, 0x9f, - 0x42, 0x1d, 0xb8, 0x7d, 0x34, 0x65, 0x93, 0x78, 0x70, 0x03, 0xe3, 0xc5, 0xdf, 0xd1, 0xbd, 0x8f, - 0x44, 0x91, 0xdc, 0x29, 0x16, 0x7a, 0xed, 0x14, 0x0f, 0x6e, 0xd8, 0x29, 0x54, 0xf8, 0xae, 0x16, - 0x83, 0xab, 0x34, 0x78, 0xfc, 0x0c, 0xef, 0xd2, 0xe9, 0xef, 0x6a, 0xc9, 0xee, 0x0d, 0xb4, 0x49, - 0xff, 0x37, 0x59, 0x38, 0x9d, 0x4e, 0xa8, 0xf7, 0x25, 0xd3, 0xa7, 0x2f, 0x97, 0x21, 0xbf, 0xea, - 0x87, 0x91, 0x66, 0x4f, 0x87, 0xd7, 0xff, 0x7b, 0x02, 0x66, 0xab, 0x52, 0xa6, 0x73, 0xb3, 0xbf, - 0xd5, 0xe7, 0x89, 0xfc, 0xd0, 0xc7, 0x9c, 0xe9, 0xdc, 0xbc, 0x88, 0xdc, 0x86, 0xbc, 0x2d, 0xbc, - 0x5f, 0x12, 0x43, 0x23, 0xc1, 0x4a, 0x9a, 0x22, 0x81, 0x80, 0x18, 0xf1, 0x6c, 0x05, 0x8c, 0x94, - 0x60, 0x54, 0xcc, 0x7e, 0xe2, 0xe9, 0x38, 0x65, 0xc9, 0x98, 0x21, 0xa6, 0x25, 0x1d, 0xdb, 0x51, - 0xf0, 0x11, 0xb0, 0x52, 0x96, 0x8e, 0x2c, 0xb8, 0xa3, 0xf0, 0x47, 0x42, 0xd3, 0x74, 0x51, 0x21, - 0x5a, 0x3f, 0x9c, 0x05, 0x90, 0xb7, 0x36, 0xcf, 0xec, 0x0a, 0xfb, 0x82, 0xb1, 0xc2, 0x34, 0x4b, - 0x9e, 0xc1, 0xd3, 0x2f, 0x6e, 0xa0, 0x45, 0xcd, 0xe0, 0xc9, 0x17, 0x8b, 0x30, 0xbc, 0x15, 0x5f, - 0x68, 0x09, 0xb7, 0x0a, 0xbc, 0x8e, 0xe6, 0x70, 0x6b, 0x1b, 0xe6, 0x6e, 0xd3, 0x28, 0xbe, 0xde, - 0x92, 0x4f, 0x8f, 0xfd, 0xd9, 0xbe, 0x0e, 0x63, 0x02, 0x5f, 0xed, 0x5f, 0xfc, 0x2e, 0x46, 0x84, - 0x6d, 0xc0, 0xbb, 0x18, 0x89, 0xc0, 0x76, 0xa3, 0x32, 0x6d, 0xd0, 0x88, 0x7e, 0xba, 0xd5, 0x54, - 0x81, 0xf0, 0xae, 0x60, 0xcf, 0x06, 0xab, 0xe1, 0xd8, 0xf1, 0x79, 0x00, 0xa7, 0x54, 0xdb, 0x9f, - 0x26, 0xdf, 0x6b, 0x4c, 0xa5, 0x14, 0xd1, 0x99, 0x63, 0x8e, 0x7d, 0x6c, 0x4f, 0x9e, 0xc0, 0x82, - 0x24, 0x78, 0xe8, 0x29, 0x93, 0xc4, 0x81, 0x68, 0xc9, 0x3b, 0x30, 0xae, 0xd1, 0x88, 0xe8, 0xc2, - 0x78, 0x4d, 0xbd, 0xef, 0x45, 0x7b, 0x4e, 0xc8, 0xe1, 0xfa, 0x35, 0xb5, 0x86, 0x6e, 0x7d, 0x15, - 0x9e, 0x57, 0xae, 0x2f, 0x29, 0x55, 0x27, 0x98, 0x67, 0x4e, 0xc6, 0x7c, 0x3d, 0xee, 0x56, 0xa5, - 0xa5, 0xdc, 0x55, 0x25, 0x6f, 0xa2, 0x77, 0x4b, 0x74, 0xe6, 0x85, 0x2e, 0x07, 0x58, 0xcd, 0xcf, - 0xd5, 0x7a, 0x5b, 0x6b, 0x6c, 0x0a, 0x43, 0x83, 0x38, 0x93, 0x24, 0xfe, 0xe1, 0x2c, 0x4c, 0x6f, - 0x54, 0xca, 0xcb, 0xca, 0xfa, 0xe8, 0x33, 0x96, 0x1c, 0xd2, 0xe8, 0x5b, 0xef, 0xfd, 0xc6, 0xba, - 0x0f, 0xb3, 0x89, 0x61, 0x40, 0xd1, 0xe1, 0x3d, 0xee, 0x9b, 0xa1, 0xc0, 0x52, 0x6c, 0x38, 0x9d, - 0xc6, 0xfe, 0xc1, 0x0d, 0x3b, 0x81, 0x6d, 0xfd, 0xf3, 0xb1, 0x04, 0x5f, 0xb1, 0x85, 0xbd, 0x0e, - 0x63, 0x95, 0x30, 0xec, 0xd0, 0xe0, 0xbe, 0xbd, 0xa6, 0x5f, 0x15, 0x78, 0x08, 0x74, 0x3a, 0x41, - 0xc3, 0x8e, 0x11, 0xc8, 0x15, 0xc8, 0x8b, 0x80, 0xbb, 0x72, 0x4f, 0xc0, 0x5b, 0x5b, 0x15, 0xaf, - 0xd7, 0x56, 0xc5, 0xe4, 0x4d, 0x98, 0xe0, 0x7f, 0xf3, 0xd5, 0x26, 0x06, 0x1c, 0x2f, 0x07, 0x05, - 0x3a, 0x5f, 0x9d, 0xb6, 0x81, 0x46, 0x5e, 0x85, 0x5c, 0x69, 0xd9, 0x16, 0xd7, 0x41, 0x42, 0x6e, - 0xc4, 0x94, 0xcf, 0x1d, 0x6a, 0x2a, 0x11, 0xcb, 0x36, 0x93, 0xfe, 0xa4, 0x6b, 0xbc, 0xb8, 0xc9, - 0xe6, 0x99, 0xa9, 0x05, 0x2c, 0x71, 0x98, 0x21, 0x8c, 0x5c, 0x83, 0xd1, 0xb2, 0x17, 0xb6, 0x1b, - 0xee, 0x81, 0xb8, 0xc7, 0xe6, 0x99, 0x8f, 0x38, 0xc8, 0xf0, 0x78, 0xe7, 0x20, 0x72, 0x45, 0x66, - 0x84, 0xc9, 0xc7, 0x2e, 0x1e, 0x3d, 0xd2, 0xbe, 0xbc, 0x0e, 0x23, 0x22, 0x2c, 0xed, 0x98, 0x16, - 0x70, 0x3e, 0x19, 0x8e, 0x56, 0xe0, 0x74, 0x3b, 0x61, 0xc2, 0xd3, 0x74, 0xc2, 0xdc, 0x86, 0x33, - 0xb7, 0xf1, 0xf6, 0xc6, 0x8c, 0xe5, 0x72, 0xdf, 0xae, 0x88, 0xfb, 0x70, 0x7c, 0x06, 0xe2, 0x17, - 0x3c, 0xc9, 0x70, 0x30, 0x4e, 0x27, 0xd0, 0x13, 0xf9, 0xf5, 0x62, 0x44, 0xbe, 0x02, 0x73, 0x69, - 0x45, 0xe2, 0xd6, 0x1c, 0xa3, 0x96, 0xa4, 0x57, 0xa0, 0x47, 0x2d, 0x49, 0xe3, 0x40, 0xd6, 0xa0, - 0xc0, 0xe1, 0xa5, 0x7a, 0xd3, 0x6b, 0xf1, 0x9b, 0x7f, 0x7e, 0xab, 0x8e, 0x3e, 0x17, 0x82, 0xab, - 0xcb, 0x0a, 0xf9, 0x0b, 0x80, 0xe1, 0xa5, 0x93, 0xa0, 0x24, 0x3f, 0x99, 0x61, 0xda, 0x1c, 0x0f, - 0xe2, 0x7a, 0xdf, 0x5e, 0x0b, 0x45, 0xc4, 0xab, 0xd3, 0xb1, 0x03, 0x4e, 0x35, 0x0a, 0xbc, 0xd6, - 0xae, 0xf0, 0xc0, 0xd9, 0x12, 0x1e, 0x38, 0xef, 0x7c, 0x2c, 0x0f, 0x1c, 0xce, 0x2a, 0x3c, 0x3a, - 0x2c, 0x4e, 0x04, 0xa2, 0x4e, 0xfc, 0x8a, 0x8c, 0x16, 0x60, 0x12, 0xfa, 0x46, 0xc3, 0xdf, 0xbf, - 0xdf, 0xe2, 0x21, 0x24, 0x69, 0x9d, 0x77, 0x72, 0x1a, 0x77, 0x70, 0x9e, 0x84, 0x9e, 0x95, 0x3b, - 0x1d, 0x85, 0xd0, 0xd5, 0xd1, 0x54, 0x0e, 0x4c, 0xf1, 0x94, 0x5e, 0x1e, 0xdc, 0xa3, 0xb4, 0x10, - 0x2b, 0x9e, 0xd2, 0x25, 0xc4, 0xc1, 0x65, 0xa4, 0x2f, 0x1e, 0x83, 0x84, 0x5c, 0x83, 0x91, 0x7b, - 0xee, 0x93, 0xd2, 0x2e, 0x15, 0x99, 0xbe, 0x26, 0xe5, 0xf6, 0x87, 0xc0, 0xa5, 0xfc, 0x1f, 0x70, - 0x2f, 0x82, 0xe7, 0x6c, 0x81, 0x46, 0xbe, 0x2f, 0x03, 0xa7, 0xf9, 0x67, 0x2c, 0x7b, 0x59, 0xa5, - 0x51, 0xc4, 0xc6, 0x41, 0x84, 0xbe, 0x92, 0x79, 0x32, 0xaa, 0xd5, 0x8d, 0x74, 0x3c, 0x9e, 0x32, - 0x5d, 0xec, 0x0c, 0x6a, 0xe0, 0x42, 0x51, 0x6a, 0x04, 0xf5, 0x4c, 0xa5, 0x17, 0x16, 0xf2, 0x5f, - 0x90, 0x2d, 0x27, 0x6f, 0xe8, 0x8e, 0x8f, 0x39, 0x94, 0x73, 0x47, 0x9b, 0xee, 0x13, 0xc7, 0xdd, - 0xa5, 0xc6, 0x7b, 0xb6, 0xb8, 0x67, 0xfe, 0xe9, 0x0c, 0x9c, 0xed, 0xd9, 0x38, 0x72, 0x13, 0xce, - 0xc8, 0xec, 0xf9, 0x7b, 0x51, 0xd4, 0x0e, 0x1d, 0xa9, 0x0c, 0x08, 0x57, 0x49, 0xfb, 0x94, 0x28, - 0x5e, 0x65, 0xa5, 0x52, 0x3f, 0x08, 0xc9, 0xfb, 0xf0, 0x82, 0xd7, 0x0a, 0x69, 0xad, 0x13, 0xd0, - 0x38, 0xfd, 0xbe, 0x57, 0x0f, 0x9c, 0xc0, 0x6d, 0xed, 0x4a, 0xbf, 0x4f, 0xfb, 0xac, 0xc4, 0x91, - 0x49, 0xf8, 0xbd, 0x7a, 0x60, 0x23, 0x82, 0xf5, 0x53, 0x93, 0xfc, 0x54, 0x2c, 0x75, 0xa2, 0x3d, - 0x79, 0x8e, 0x2e, 0xa6, 0x79, 0x0b, 0x71, 0xf3, 0x40, 0xcd, 0x5b, 0xc8, 0xf4, 0x11, 0x92, 0xcf, - 0x19, 0xd9, 0xd4, 0xe7, 0x8c, 0xd7, 0x61, 0x6c, 0x79, 0x8f, 0xd6, 0x1e, 0x29, 0x8f, 0x8d, 0xbc, - 0xb8, 0x2f, 0x66, 0x40, 0x1e, 0x31, 0x36, 0x46, 0x20, 0xd7, 0x00, 0xd0, 0x7d, 0x90, 0x0b, 0x59, - 0x5a, 0xd4, 0x77, 0xf4, 0x36, 0x14, 0x16, 0x17, 0x1a, 0x0a, 0xb2, 0xaf, 0xda, 0xb7, 0x74, 0x13, - 0x0d, 0xce, 0x3e, 0x0c, 0x76, 0x04, 0x7a, 0x8c, 0xc0, 0xba, 0xa7, 0x7d, 0x2a, 0x62, 0x63, 0x2f, - 0x74, 0x7d, 0x4f, 0x3a, 0x12, 0xb9, 0x0a, 0x63, 0x9b, 0xd2, 0x3c, 0x1d, 0xf7, 0xf5, 0x09, 0xa4, - 0x80, 0xd8, 0x94, 0x7d, 0x3e, 0x63, 0xc7, 0x28, 0xe4, 0x0b, 0x30, 0xba, 0x4c, 0x83, 0x68, 0x6b, - 0x6b, 0x0d, 0xed, 0x28, 0x78, 0x70, 0xf4, 0x3c, 0x06, 0xb2, 0x8e, 0xa2, 0xc6, 0x77, 0x0f, 0x8b, - 0x93, 0x91, 0xd7, 0xa4, 0x2a, 0xe8, 0xab, 0x2d, 0xb1, 0xc9, 0x12, 0x14, 0xf8, 0x4b, 0x6f, 0x2c, - 0x4e, 0xe3, 0x66, 0x9f, 0xe7, 0x47, 0x8f, 0x78, 0x16, 0xde, 0xa7, 0xdb, 0x2a, 0x8c, 0x77, 0x17, - 0x3e, 0x59, 0x91, 0xd1, 0xef, 0xf5, 0x6e, 0x42, 0x7c, 0xbf, 0x93, 0xfc, 0x08, 0x58, 0x6f, 0xbb, - 0x29, 0x48, 0x09, 0x26, 0x97, 0xfd, 0x66, 0xdb, 0x8d, 0x3c, 0x4c, 0x25, 0x75, 0x20, 0xf6, 0x75, - 0xbc, 0xa3, 0xaa, 0xe9, 0x05, 0xc6, 0x21, 0xa1, 0x17, 0x90, 0x5b, 0x30, 0x65, 0xfb, 0x1d, 0x36, - 0x4d, 0x52, 0xb1, 0xe4, 0x5b, 0x37, 0x5a, 0x3b, 0x04, 0xac, 0x84, 0x9d, 0x34, 0x42, 0x8b, 0x34, - 0xe2, 0xf1, 0x19, 0x54, 0x64, 0x3d, 0xe5, 0x86, 0x5f, 0xdf, 0xaf, 0xf5, 0x60, 0xde, 0x5d, 0xcc, - 0x52, 0x1e, 0x07, 0x6e, 0xc0, 0x78, 0xb5, 0xba, 0xb1, 0x45, 0xc3, 0xe8, 0x56, 0xc3, 0xdf, 0xc7, - 0xed, 0x3a, 0x2f, 0x92, 0x9c, 0x84, 0xbe, 0x13, 0xd1, 0x30, 0x72, 0x76, 0x1a, 0xfe, 0xbe, 0xad, - 0x63, 0x91, 0x6f, 0xb0, 0xf1, 0xd0, 0x84, 0x1b, 0x11, 0x79, 0xb0, 0x9f, 0xfc, 0x85, 0x9b, 0x62, - 0xfc, 0xd1, 0x30, 0x29, 0xcc, 0x1c, 0x2c, 0x0d, 0x1d, 0x1d, 0x90, 0x98, 0x4a, 0x5c, 0xaa, 0xd7, - 0x03, 0x1a, 0x86, 0x62, 0x5f, 0xe5, 0x0e, 0x48, 0xa8, 0x3f, 0xbb, 0xbc, 0xc0, 0x70, 0x40, 0xd2, - 0x08, 0xc8, 0x8f, 0x66, 0xe0, 0x94, 0xee, 0xc3, 0x80, 0x9f, 0x0b, 0x5a, 0x6e, 0xf0, 0x5d, 0xf6, - 0x8d, 0xab, 0xf2, 0x5c, 0xb9, 0xaa, 0xa1, 0x5d, 0x7d, 0x7c, 0xfd, 0x6a, 0x29, 0xfe, 0x59, 0x95, - 0x44, 0x18, 0x45, 0xa9, 0x98, 0xca, 0x2f, 0x6e, 0xc1, 0x7c, 0xc6, 0x9e, 0x73, 0x53, 0x88, 0xc9, - 0x32, 0x13, 0x3e, 0xd8, 0x8a, 0x42, 0x5b, 0xa0, 0xca, 0x26, 0x6e, 0xd3, 0xe2, 0x92, 0x50, 0xac, - 0x3f, 0x6e, 0x35, 0xe4, 0xb5, 0x4d, 0x19, 0x43, 0xa3, 0x21, 0x15, 0x98, 0xe6, 0x00, 0xb6, 0x2d, - 0xf0, 0x1c, 0x18, 0xb3, 0x71, 0x1c, 0x6e, 0xc1, 0x06, 0x9f, 0xaf, 0x31, 0x0f, 0x86, 0x1e, 0x2a, - 0x2f, 0x41, 0x47, 0xde, 0x87, 0xa9, 0x30, 0xdc, 0x73, 0xb4, 0xef, 0x75, 0x0e, 0xbf, 0x62, 0x8c, - 0xf8, 0x27, 0x4a, 0x12, 0x6e, 0x5a, 0x13, 0x61, 0xb8, 0x17, 0x7f, 0xd1, 0xef, 0xc3, 0x14, 0x9a, - 0x9f, 0xc4, 0x0c, 0x4e, 0xc5, 0x0c, 0x44, 0x49, 0x92, 0x41, 0xd4, 0x08, 0x63, 0x06, 0x7f, 0x33, - 0x03, 0x67, 0x59, 0x45, 0xe9, 0x33, 0x74, 0xfa, 0xe3, 0xcc, 0x10, 0xc6, 0x40, 0xeb, 0xc9, 0x53, - 0x97, 0xb0, 0xc2, 0x70, 0x2f, 0x8d, 0x03, 0x36, 0x8a, 0x35, 0x3e, 0xbd, 0x51, 0x67, 0x3e, 0x76, - 0xa3, 0x7a, 0xf2, 0xd4, 0x1b, 0x15, 0x35, 0xc2, 0x34, 0x0e, 0xa8, 0xa9, 0x55, 0x4b, 0xf7, 0xd6, - 0x62, 0x75, 0xe3, 0xb3, 0xe5, 0x89, 0x61, 0xf4, 0xad, 0x8f, 0x27, 0xc6, 0x7d, 0xee, 0x43, 0xab, - 0x0d, 0x83, 0xd4, 0xd4, 0x0c, 0x70, 0x52, 0x53, 0x4b, 0xd0, 0xd8, 0x09, 0x6c, 0xeb, 0xbb, 0xf9, - 0x04, 0x5f, 0x61, 0x7d, 0x69, 0xc1, 0x08, 0x57, 0xc4, 0xf4, 0xe4, 0xf7, 0x5c, 0x4d, 0xb3, 0x45, - 0x09, 0x39, 0x0b, 0xb9, 0x6a, 0x75, 0x43, 0x0c, 0x32, 0xda, 0x60, 0x86, 0xa1, 0x6f, 0x33, 0x18, - 0x9b, 0x21, 0x34, 0xac, 0xd4, 0x22, 0x44, 0xb3, 0xf3, 0xce, 0x46, 0x28, 0x1b, 0x6f, 0xa9, 0x16, - 0x0d, 0xc5, 0xe3, 0x2d, 0xd4, 0xa2, 0x58, 0x19, 0x5a, 0x86, 0xf9, 0x52, 0x18, 0xd2, 0x80, 0x2d, - 0x08, 0x61, 0xaf, 0x17, 0x08, 0xd1, 0x5d, 0x1c, 0xec, 0x58, 0xa9, 0x5b, 0x0b, 0xed, 0x9e, 0x88, - 0xe4, 0x32, 0xe4, 0x4b, 0x9d, 0xba, 0x47, 0x5b, 0x35, 0x23, 0xfc, 0x93, 0x2b, 0x60, 0xb6, 0x2a, - 0x25, 0x5f, 0x86, 0x53, 0x89, 0x10, 0x68, 0x62, 0x04, 0x46, 0xe3, 0xbd, 0x57, 0xaa, 0x16, 0xb1, - 0x8d, 0x01, 0x1f, 0x92, 0x74, 0x4a, 0x52, 0x82, 0xc2, 0x0a, 0x7a, 0x1e, 0x95, 0x29, 0x7f, 0xee, - 0xf0, 0x03, 0xee, 0xf5, 0xc5, 0x15, 0x41, 0xee, 0x95, 0xe4, 0xd4, 0x55, 0xa1, 0xdd, 0x85, 0x4e, - 0xee, 0xc2, 0x6c, 0x12, 0xc6, 0x4e, 0x70, 0xae, 0xf3, 0xe1, 0x7e, 0xd3, 0xc5, 0x05, 0xcf, 0xf0, - 0x34, 0x2a, 0xb2, 0x0d, 0x33, 0xb1, 0x8d, 0x8d, 0xa9, 0x09, 0x4a, 0xd3, 0x5d, 0x55, 0x2e, 0xb5, - 0xc1, 0xe7, 0xc5, 0x62, 0x9c, 0x8d, 0xed, 0x75, 0x94, 0x46, 0x68, 0x77, 0xb3, 0x23, 0x75, 0x98, - 0xaa, 0x7a, 0xbb, 0x2d, 0xaf, 0xb5, 0x7b, 0x97, 0x1e, 0x6c, 0xba, 0x5e, 0x20, 0x8c, 0x28, 0xa5, - 0x89, 0x74, 0x29, 0x3c, 0x68, 0x36, 0x69, 0x14, 0xe0, 0x46, 0xc8, 0xca, 0xd1, 0x61, 0x99, 0x49, - 0xf8, 0x0b, 0x21, 0xa7, 0x43, 0x67, 0xc0, 0xb6, 0xeb, 0x19, 0x42, 0x80, 0xc9, 0xd3, 0xd0, 0xc6, - 0x27, 0x06, 0xd4, 0xc6, 0x1b, 0x30, 0xb3, 0xd2, 0xaa, 0x05, 0x07, 0xf8, 0xea, 0x24, 0x1b, 0x37, - 0x79, 0x4c, 0xe3, 0x5e, 0x12, 0x8d, 0x7b, 0xc1, 0x95, 0x2b, 0x2c, 0xad, 0x79, 0xdd, 0x8c, 0x49, - 0x15, 0x66, 0x50, 0xc2, 0xae, 0x94, 0x37, 0x2b, 0x2d, 0x2f, 0xf2, 0x30, 0x45, 0x3b, 0x17, 0x2e, - 0x5e, 0x16, 0x3c, 0xcf, 0x71, 0xad, 0xcb, 0xab, 0xb7, 0x1d, 0x4f, 0xa2, 0xe8, 0x4c, 0xbb, 0xe8, - 0xfb, 0xa9, 0x3e, 0xd3, 0xff, 0x7a, 0x54, 0x1f, 0x4c, 0x62, 0x96, 0x70, 0xe4, 0x2f, 0xc4, 0xe7, - 0x70, 0x88, 0x45, 0xec, 0x38, 0xf7, 0x3b, 0x28, 0x4c, 0x1a, 0x49, 0xcc, 0x4c, 0x3a, 0xeb, 0xd7, - 0x27, 0xf8, 0xde, 0xae, 0xeb, 0x1b, 0xbd, 0x8c, 0x27, 0x13, 0x7a, 0x48, 0xf6, 0x24, 0x7a, 0x48, - 0xee, 0x78, 0x3d, 0x64, 0xe8, 0x38, 0x3d, 0x24, 0xa1, 0x28, 0x0c, 0x9f, 0x58, 0x51, 0x18, 0x39, - 0x91, 0xa2, 0x30, 0x7a, 0x22, 0x45, 0xc1, 0xd0, 0x79, 0xf2, 0xc7, 0xe9, 0x3c, 0x7f, 0xa9, 0x56, - 0x3c, 0xab, 0x6a, 0x45, 0x9a, 0xb0, 0x70, 0x22, 0xb5, 0xe2, 0x47, 0x7a, 0x6a, 0x05, 0x85, 0x8f, - 0x23, 0xde, 0x5d, 0x1c, 0x40, 0x2b, 0x18, 0x54, 0x27, 0x98, 0x79, 0x3a, 0x3a, 0x01, 0x79, 0x6a, - 0x3a, 0xc1, 0xec, 0x27, 0xd5, 0x09, 0xe6, 0x9e, 0xa6, 0x4e, 0x70, 0xea, 0x2f, 0xa2, 0x4e, 0x70, - 0xfa, 0xdf, 0x8c, 0x4e, 0xf0, 0x57, 0xa0, 0x90, 0x14, 0x53, 0x8e, 0x8f, 0xd3, 0xf9, 0xd4, 0x62, - 0xca, 0x31, 0x21, 0x2a, 0x29, 0x26, 0x90, 0x6b, 0x00, 0x9b, 0x81, 0xf7, 0xd8, 0x8d, 0xe8, 0x5d, - 0x69, 0x1a, 0x24, 0x62, 0xcc, 0x72, 0x28, 0x9b, 0x79, 0x5b, 0x43, 0x51, 0x12, 0x72, 0x36, 0x4d, - 0x42, 0xb6, 0x7e, 0x34, 0x0b, 0x33, 0x3c, 0xfe, 0xd3, 0xb3, 0xff, 0x42, 0xf5, 0x9e, 0xa1, 0xf7, - 0x48, 0x43, 0xd4, 0x44, 0xef, 0xfa, 0xbc, 0x51, 0x7d, 0x1d, 0x4e, 0x75, 0x0d, 0x05, 0xea, 0x3e, - 0x65, 0x19, 0x79, 0xab, 0x4b, 0xfb, 0x99, 0x4f, 0xaf, 0xe4, 0xc1, 0x0d, 0xbb, 0x8b, 0xc2, 0xfa, - 0xb3, 0xa1, 0x2e, 0xfe, 0xe2, 0xb5, 0x4a, 0x7f, 0x7f, 0xca, 0x9c, 0xec, 0xfd, 0x29, 0x3b, 0xd8, - 0xfb, 0x53, 0x42, 0xa8, 0xc8, 0x0d, 0x22, 0x54, 0x7c, 0x19, 0x26, 0xb7, 0xa8, 0xdb, 0x0c, 0xb7, - 0x7c, 0x91, 0x48, 0x82, 0x1b, 0xa2, 0xcb, 0xc0, 0x5a, 0xac, 0x4c, 0x8a, 0xee, 0xca, 0xa0, 0x2e, - 0x62, 0x04, 0xec, 0x18, 0xe4, 0x99, 0x25, 0x6c, 0x93, 0x83, 0xae, 0x8f, 0x0d, 0xf7, 0xd1, 0xc7, - 0xaa, 0x30, 0x21, 0xe8, 0xe2, 0xe0, 0xa4, 0xb1, 0xe2, 0xc0, 0x8a, 0x10, 0x2e, 0x6b, 0x57, 0xf9, - 0x4d, 0x55, 0xed, 0x5c, 0x67, 0x30, 0x98, 0xb0, 0x21, 0x58, 0x69, 0xd5, 0xdb, 0xbe, 0xd7, 0xc2, - 0x21, 0x18, 0x8d, 0x87, 0x80, 0x0a, 0x30, 0x1f, 0x02, 0x0d, 0x89, 0xbc, 0x03, 0x53, 0xa5, 0xcd, - 0x8a, 0x4e, 0x96, 0x8f, 0x9f, 0xc0, 0xdc, 0xb6, 0xe7, 0x18, 0xa4, 0x09, 0xdc, 0x7e, 0x32, 0xf4, - 0xd8, 0xbf, 0x1e, 0x19, 0xda, 0xfa, 0x97, 0x13, 0xf2, 0xf3, 0xfe, 0x74, 0xaf, 0xda, 0xcd, 0xcb, - 0xf3, 0xdc, 0x09, 0x2f, 0xcf, 0x87, 0x8e, 0x13, 0x24, 0x0d, 0xf9, 0x76, 0xf8, 0x44, 0xf2, 0xed, - 0xc8, 0x27, 0xbe, 0x08, 0x1f, 0x3d, 0xa1, 0xc4, 0x9a, 0xf8, 0xd6, 0xf2, 0x83, 0x7c, 0x6b, 0xa9, - 0x52, 0xee, 0xd8, 0x27, 0x97, 0x72, 0xe1, 0xc4, 0x52, 0x6e, 0x35, 0x76, 0xec, 0x1c, 0x3f, 0xd6, - 0x5e, 0xfe, 0x9c, 0xd0, 0x2f, 0x67, 0xd2, 0x83, 0x7f, 0x29, 0x17, 0xcf, 0xcf, 0x94, 0xe8, 0xfc, - 0xcd, 0x74, 0xd1, 0xb9, 0xff, 0x79, 0x73, 0x22, 0xe1, 0xf9, 0x47, 0x9f, 0xae, 0xf0, 0xfc, 0x74, - 0xaf, 0xd4, 0xff, 0x52, 0x7c, 0xfe, 0x4b, 0xf1, 0x79, 0x40, 0xf1, 0x39, 0xc0, 0xcf, 0xeb, 0xa1, - 0x1b, 0xb4, 0xf0, 0x42, 0xe7, 0x1a, 0x8c, 0xca, 0xe8, 0x87, 0x99, 0xf8, 0x6e, 0xb2, 0x3b, 0xec, - 0xa1, 0xc4, 0x22, 0x8b, 0x90, 0x97, 0xc4, 0x7a, 0x26, 0x87, 0x7d, 0x01, 0x33, 0x02, 0xcb, 0x09, - 0x98, 0xf5, 0xf7, 0x87, 0xe4, 0x16, 0xce, 0xd6, 0xcc, 0xa6, 0x1b, 0xb8, 0x4d, 0x4c, 0x85, 0xa3, - 0xbe, 0x30, 0x4d, 0x78, 0x4f, 0x7c, 0x94, 0x09, 0xbb, 0x67, 0x93, 0xe4, 0x63, 0xc5, 0xa3, 0x8c, - 0xb3, 0x0d, 0xe6, 0x06, 0xc8, 0x36, 0xf8, 0x96, 0x91, 0xaa, 0x6f, 0x28, 0xce, 0x0d, 0xc5, 0xb6, - 0xb5, 0xfe, 0x49, 0xfa, 0x6e, 0xea, 0x39, 0xf5, 0x86, 0xe3, 0x90, 0x47, 0x48, 0xd9, 0x27, 0x9b, - 0x9e, 0xd2, 0x46, 0x46, 0x4e, 0x12, 0xe9, 0x75, 0xf4, 0xdf, 0x68, 0xa4, 0xd7, 0x15, 0x00, 0x2d, - 0xbd, 0x3c, 0x7f, 0xe8, 0x7e, 0x19, 0xbf, 0xfe, 0x63, 0x53, 0xcb, 0x6b, 0x84, 0xd6, 0xef, 0x13, - 0x98, 0xa9, 0x56, 0x37, 0xca, 0x9e, 0xbb, 0xdb, 0xf2, 0xc3, 0xc8, 0xab, 0x55, 0x5a, 0x3b, 0x3e, - 0x13, 0xc5, 0xd5, 0x71, 0xa0, 0x85, 0xf4, 0x8c, 0x8f, 0x02, 0x55, 0xcc, 0x54, 0xbd, 0x95, 0x20, - 0xf0, 0x03, 0x5d, 0xd5, 0xa3, 0x0c, 0x60, 0x73, 0x38, 0x93, 0x76, 0xab, 0x1d, 0x9e, 0x27, 0x9c, - 0x5b, 0x1f, 0xa0, 0xb4, 0x1b, 0x72, 0x90, 0x2d, 0xcb, 0x08, 0xed, 0x5e, 0xb0, 0x42, 0xfb, 0x39, - 0x63, 0xc4, 0x8b, 0x8d, 0x8b, 0xf9, 0x61, 0x27, 0x84, 0x11, 0xdc, 0x36, 0xdb, 0x08, 0xd7, 0xcd, - 0x85, 0xba, 0xbe, 0x81, 0x03, 0x38, 0x65, 0x38, 0x84, 0x0e, 0x7a, 0x2d, 0xff, 0xaa, 0x90, 0xae, - 0x2d, 0x8c, 0x3f, 0x90, 0x72, 0x37, 0xaf, 0xe7, 0xb6, 0x49, 0xad, 0x81, 0x9d, 0x67, 0xe7, 0x52, - 0x4b, 0xd4, 0xd7, 0x3d, 0x6e, 0xc4, 0xec, 0xd5, 0x36, 0x0d, 0x9e, 0xc5, 0xa7, 0x57, 0xd5, 0x4e, - 0xca, 0x56, 0xd0, 0xbf, 0x26, 0xf2, 0x1b, 0x19, 0x38, 0x63, 0x60, 0xa8, 0xed, 0x2a, 0x54, 0xb1, - 0x12, 0x52, 0xd7, 0xf5, 0x47, 0x4f, 0x67, 0x5d, 0x5f, 0x34, 0xfb, 0x12, 0x6f, 0xa8, 0x7a, 0x1f, - 0x7a, 0xb5, 0x90, 0x3c, 0x86, 0x19, 0x2c, 0x92, 0x4f, 0x04, 0x6c, 0xcd, 0x8a, 0x97, 0x85, 0xb9, - 0xb8, 0xd9, 0xdc, 0xc9, 0x19, 0x33, 0xb1, 0x2e, 0x7e, 0xe7, 0xb0, 0x38, 0x69, 0xa0, 0xcb, 0x28, - 0xb8, 0x4e, 0xfc, 0xce, 0xe0, 0xb5, 0x76, 0x7c, 0x5d, 0x50, 0xea, 0xaa, 0x82, 0xfc, 0x93, 0x0c, - 0xcc, 0x33, 0x28, 0xef, 0xc6, 0xad, 0xc0, 0x6f, 0xaa, 0x72, 0x69, 0x77, 0xd6, 0x63, 0xd8, 0x1a, - 0x4f, 0x67, 0xd8, 0x5e, 0xc6, 0x26, 0xf3, 0x3d, 0xc1, 0xd9, 0x09, 0xfc, 0x66, 0xdc, 0x7c, 0x23, - 0x7d, 0x7a, 0xaf, 0x46, 0x92, 0xef, 0xcf, 0xc0, 0x59, 0xe3, 0x56, 0x53, 0xcf, 0x15, 0x20, 0x5c, - 0xc9, 0x67, 0x55, 0x90, 0x89, 0xb8, 0x68, 0xe9, 0xaa, 0x58, 0xff, 0x97, 0xb0, 0x05, 0xf1, 0x69, - 0x81, 0x6d, 0x71, 0x9a, 0x1c, 0x4b, 0x6b, 0x42, 0xef, 0x5a, 0x88, 0x07, 0x33, 0x68, 0xaf, 0x61, - 0xd8, 0x47, 0xce, 0xf5, 0xb6, 0x8f, 0x54, 0x19, 0xf3, 0x30, 0x10, 0x79, 0x6f, 0x23, 0xc9, 0x6e, - 0xae, 0xe4, 0xaf, 0xc2, 0xd9, 0x2e, 0xa0, 0xfa, 0xda, 0x4e, 0xf5, 0xfc, 0xda, 0x5e, 0x3b, 0x3a, - 0x2c, 0xbe, 0x92, 0x56, 0x5b, 0xda, 0x97, 0xd6, 0xbb, 0x06, 0xe2, 0x02, 0xc4, 0x85, 0x42, 0xfc, - 0x48, 0x5f, 0xa0, 0xaf, 0x89, 0xf5, 0xa1, 0xe1, 0xb3, 0xbd, 0x5c, 0x6b, 0x83, 0x7e, 0xe4, 0xc5, - 0x48, 0x84, 0xc2, 0x84, 0x16, 0x84, 0xfd, 0x40, 0x98, 0x0d, 0xf4, 0xa8, 0xe4, 0x3b, 0x87, 0x45, - 0x03, 0x9b, 0x29, 0x44, 0x7a, 0x74, 0x77, 0x43, 0xda, 0xd3, 0x11, 0xc9, 0xaf, 0x65, 0x60, 0x8e, - 0x01, 0xe2, 0x45, 0x25, 0x3a, 0x35, 0xdf, 0x6f, 0xd5, 0xef, 0x3d, 0x9d, 0x55, 0xff, 0x22, 0xb6, - 0x51, 0x5f, 0xf5, 0x5d, 0x43, 0x92, 0xda, 0x38, 0x5c, 0xed, 0x86, 0x69, 0x90, 0xb1, 0xda, 0xcf, - 0x0e, 0xb0, 0xda, 0xf9, 0x04, 0x1c, 0xbf, 0xda, 0x7b, 0xd6, 0x42, 0xb6, 0x60, 0x42, 0xe8, 0x42, - 0x7c, 0xc0, 0xce, 0x1b, 0x01, 0x9c, 0xf5, 0x22, 0xae, 0xa0, 0x8a, 0x18, 0xf5, 0x5d, 0x3d, 0x34, - 0xb8, 0x90, 0x16, 0xcc, 0xf2, 0xdf, 0xe6, 0xdd, 0x54, 0xb1, 0xe7, 0xdd, 0xd4, 0x65, 0xd1, 0xa3, - 0x0b, 0x82, 0x7f, 0xe2, 0x8a, 0x4a, 0x8f, 0x4d, 0x93, 0xc2, 0x98, 0xb4, 0x81, 0x18, 0x60, 0xfe, - 0xd1, 0x5e, 0xe8, 0x7f, 0x23, 0xf5, 0x8a, 0xa8, 0xb3, 0x98, 0xac, 0x33, 0xf9, 0xe5, 0xa6, 0xf0, - 0x26, 0x2e, 0x4c, 0x0b, 0xa8, 0xff, 0x88, 0xf2, 0x1d, 0xfe, 0x45, 0x23, 0x3a, 0x50, 0xa2, 0x94, - 0x2b, 0x51, 0xb2, 0x26, 0x8c, 0xde, 0x94, 0xd8, 0xd0, 0x93, 0xfc, 0xc8, 0x06, 0xcc, 0x94, 0xda, - 0xed, 0x86, 0x47, 0xeb, 0xd8, 0x4b, 0x9e, 0x5c, 0xda, 0x8a, 0x13, 0x0a, 0xb9, 0xbc, 0x50, 0x68, - 0x76, 0xc9, 0xcc, 0xd2, 0xdd, 0xb4, 0xd6, 0x8f, 0x64, 0xba, 0x1a, 0x4d, 0x5e, 0x87, 0x31, 0xfc, - 0xa1, 0x05, 0x9c, 0xc0, 0x2b, 0x1e, 0xde, 0x44, 0xbc, 0x3c, 0x8a, 0x11, 0x98, 0xb0, 0xa4, 0x07, - 0x9d, 0xcb, 0x71, 0x61, 0x49, 0xdc, 0x2b, 0xc4, 0x37, 0x09, 0x45, 0x69, 0xb7, 0x9e, 0x8b, 0x85, - 0x2e, 0xb4, 0x5b, 0x17, 0xd6, 0xea, 0xd6, 0xf7, 0x67, 0xcd, 0x65, 0x47, 0x2e, 0x6b, 0x72, 0xbb, - 0x16, 0xf6, 0x4e, 0xca, 0xed, 0x9a, 0xb4, 0xfe, 0xf7, 0x32, 0x30, 0xbb, 0x11, 0xec, 0xba, 0x2d, - 0xef, 0xdb, 0x3c, 0xcc, 0xaf, 0x8f, 0xf3, 0xd2, 0x3f, 0x37, 0xdb, 0xd3, 0xca, 0x31, 0xe5, 0x6b, - 0x15, 0xb3, 0x95, 0x82, 0x4b, 0xc6, 0x4e, 0x6b, 0x0f, 0x7a, 0x02, 0x61, 0xc3, 0xb4, 0x54, 0x5f, - 0x1c, 0x9d, 0xc3, 0xad, 0x1f, 0xcf, 0xc2, 0xb8, 0xf6, 0x09, 0x90, 0xcf, 0xc3, 0x84, 0xce, 0x47, - 0xbf, 0xf0, 0xd3, 0xab, 0xb5, 0x0d, 0x2c, 0xbc, 0xf1, 0xa3, 0x6e, 0xd3, 0xb8, 0xf1, 0x63, 0x0b, - 0x1d, 0xa1, 0x27, 0x54, 0x6d, 0xde, 0x4f, 0x51, 0x6d, 0x4e, 0x94, 0x85, 0xfc, 0x9d, 0x6e, 0x05, - 0x67, 0xf0, 0xa4, 0xe1, 0xd6, 0x4f, 0x65, 0xa0, 0x90, 0xfc, 0x48, 0x3f, 0x95, 0x51, 0x39, 0xc1, - 0xeb, 0xce, 0x8f, 0x65, 0x55, 0x06, 0x06, 0xe9, 0xdf, 0xf8, 0xac, 0x1a, 0x9c, 0xbd, 0x6b, 0x3c, - 0xbc, 0x3c, 0x6f, 0x86, 0xea, 0xd2, 0x23, 0x03, 0xa4, 0xc7, 0xe7, 0x1b, 0xfa, 0xb9, 0x5f, 0x2c, - 0x3e, 0x67, 0x7d, 0x08, 0x73, 0xc9, 0xe1, 0xc0, 0xc7, 0x97, 0x12, 0x4c, 0x9b, 0xf0, 0x64, 0xfe, - 0x96, 0x24, 0x95, 0x9d, 0xc4, 0xb7, 0xfe, 0x20, 0x9b, 0xe4, 0x2d, 0x8c, 0xcf, 0xd8, 0xa6, 0xd3, - 0x72, 0xb7, 0x1b, 0x2a, 0x7f, 0x03, 0xdf, 0x74, 0x38, 0xc8, 0x96, 0x65, 0x27, 0x49, 0x68, 0xa4, - 0xbc, 0xf4, 0x72, 0xe9, 0x5e, 0x7a, 0xe4, 0x66, 0xc2, 0xde, 0x56, 0x0b, 0x29, 0xb3, 0x4f, 0xb7, - 0x9d, 0xd8, 0xe6, 0x36, 0x61, 0x66, 0xbb, 0x0c, 0x73, 0x46, 0x7c, 0x64, 0x49, 0x3f, 0x1c, 0xdf, - 0xb5, 0x47, 0x58, 0xc0, 0x89, 0x53, 0x91, 0xc9, 0x2a, 0x8c, 0xb2, 0x66, 0xde, 0x73, 0xdb, 0xe2, - 0x4d, 0x85, 0x28, 0x9f, 0xdd, 0x86, 0x52, 0xf8, 0x34, 0xb7, 0xdd, 0x06, 0x65, 0x47, 0xbe, 0x91, - 0xc4, 0x9f, 0x23, 0x5a, 0xff, 0x22, 0xc3, 0xbe, 0xff, 0xda, 0xa3, 0xcf, 0x58, 0x56, 0x24, 0xd6, - 0xa5, 0x3e, 0xb6, 0x91, 0x7f, 0x9c, 0xe5, 0x29, 0x38, 0xc4, 0xf2, 0x79, 0x0b, 0x46, 0xb6, 0xdc, - 0x60, 0x97, 0x46, 0x22, 0x39, 0x85, 0xce, 0x85, 0x17, 0xc4, 0x01, 0x6f, 0x22, 0xfc, 0x6d, 0x0b, - 0x02, 0xfd, 0x2e, 0x2c, 0x3b, 0xd0, 0x5d, 0x98, 0x76, 0x2f, 0x9f, 0x7b, 0x6a, 0xf7, 0xf2, 0xdf, - 0xa3, 0xb2, 0x6d, 0x94, 0xa2, 0x01, 0xc2, 0xef, 0x5e, 0x48, 0x66, 0xab, 0xe9, 0x0a, 0x94, 0x1c, - 0xb3, 0x23, 0x37, 0xf5, 0xfc, 0x37, 0x9a, 0xe3, 0xdb, 0x31, 0x99, 0x6e, 0xac, 0x3f, 0xce, 0xf1, - 0x31, 0x16, 0x03, 0x75, 0xc9, 0x70, 0x8a, 0xc5, 0xef, 0x84, 0x6d, 0xf4, 0x7a, 0x7c, 0x02, 0x34, - 0x9b, 0xba, 0x04, 0x43, 0x6c, 0x6d, 0x8a, 0xd1, 0x44, 0x3c, 0xb6, 0x7e, 0x75, 0x3c, 0x56, 0xce, - 0xbe, 0x65, 0x3c, 0x93, 0xf4, 0x8c, 0x63, 0x78, 0x6c, 0xe9, 0xdf, 0x32, 0x62, 0x90, 0xcb, 0x30, - 0xb4, 0xee, 0xd7, 0x65, 0x98, 0xe7, 0x39, 0x0c, 0x8d, 0xe0, 0xd7, 0xa9, 0x71, 0x69, 0x8e, 0x18, - 0xac, 0xaf, 0x2a, 0x81, 0x85, 0xde, 0xd7, 0xe6, 0x8e, 0x2b, 0x62, 0x11, 0xea, 0x7d, 0x8d, 0x73, - 0x5d, 0xac, 0xc0, 0x94, 0x99, 0x73, 0x58, 0x58, 0x8e, 0xe2, 0xed, 0x7a, 0x22, 0x75, 0xb1, 0xfe, - 0x2c, 0x62, 0x12, 0x91, 0x25, 0x98, 0x34, 0xc2, 0x4b, 0x8a, 0xc7, 0x4d, 0xbc, 0xde, 0x34, 0x83, - 0x53, 0xea, 0xd7, 0x9b, 0x06, 0x09, 0x3b, 0xcf, 0x45, 0xfb, 0xb5, 0x27, 0xce, 0xae, 0xb6, 0x0b, - 0x1c, 0x72, 0x03, 0xf2, 0x3c, 0x06, 0x41, 0xa5, 0xac, 0x3f, 0x53, 0x85, 0x08, 0x4b, 0xc4, 0xf0, - 0x90, 0x88, 0x9a, 0xcf, 0xf9, 0xe7, 0xa0, 0x20, 0xb6, 0xa4, 0x38, 0xbb, 0xef, 0x0b, 0x30, 0xb4, - 0x5c, 0x29, 0xdb, 0xfa, 0x36, 0x52, 0xf3, 0xea, 0x81, 0x8d, 0x50, 0x74, 0x64, 0x5a, 0xa7, 0xd1, - 0xbe, 0x1f, 0x3c, 0xb2, 0x69, 0x18, 0x05, 0x1e, 0x4f, 0x58, 0x87, 0x1f, 0xe2, 0xe7, 0xc9, 0x3b, - 0x30, 0x8c, 0x26, 0x8c, 0x89, 0x93, 0x21, 0x59, 0xc7, 0xd2, 0xa4, 0x58, 0xc0, 0xc3, 0x68, 0x0f, - 0x69, 0x73, 0x22, 0xf2, 0x16, 0x0c, 0x95, 0x69, 0xeb, 0x20, 0x91, 0xb2, 0xab, 0x8b, 0x58, 0x6d, - 0x08, 0x75, 0xda, 0x3a, 0xb0, 0x91, 0xc4, 0xfa, 0xa9, 0x2c, 0x9c, 0x4a, 0x69, 0xd6, 0x83, 0xcf, - 0x3f, 0xa3, 0xbb, 0xe2, 0x92, 0xb1, 0x2b, 0xca, 0xf7, 0xe9, 0x9e, 0x03, 0x9f, 0xba, 0x49, 0xfe, - 0x7c, 0x06, 0xce, 0x98, 0x0b, 0x54, 0xd8, 0x2c, 0x3f, 0xb8, 0x41, 0xde, 0x86, 0x91, 0x55, 0xea, - 0xd6, 0xa9, 0x4c, 0xe7, 0x73, 0x4a, 0x45, 0x0b, 0xe3, 0x0e, 0xd6, 0xbc, 0x90, 0xb3, 0x8d, 0xdd, - 0xf1, 0x38, 0x94, 0x94, 0x45, 0xe3, 0xb8, 0x3c, 0x6e, 0xc9, 0x60, 0x07, 0x69, 0x55, 0xf5, 0xb1, - 0xf2, 0xf8, 0x4e, 0x06, 0x9e, 0xef, 0x43, 0xc3, 0x26, 0x8e, 0x4d, 0xbd, 0x3e, 0x71, 0x78, 0xa2, - 0x22, 0x94, 0xbc, 0x07, 0xd3, 0x5b, 0x42, 0x9e, 0x97, 0xd3, 0x91, 0x8d, 0xbf, 0x17, 0x29, 0xea, - 0x3b, 0x72, 0x5e, 0x92, 0xc8, 0x46, 0x14, 0x8e, 0x5c, 0xdf, 0x28, 0x1c, 0x7a, 0x50, 0x8b, 0xa1, - 0x41, 0x83, 0x5a, 0x7c, 0x08, 0x73, 0x66, 0xdf, 0x44, 0x6c, 0xd1, 0x38, 0xa4, 0x47, 0xa6, 0x77, - 0x48, 0x8f, 0xbe, 0x11, 0x0c, 0xad, 0x1f, 0xcf, 0x40, 0xc1, 0xe4, 0xfd, 0x49, 0xe7, 0xf3, 0x5d, - 0x63, 0x3e, 0x9f, 0x4f, 0x9f, 0xcf, 0xde, 0x13, 0xf9, 0xbf, 0x67, 0x92, 0x9d, 0x1d, 0x68, 0x06, - 0x2d, 0x18, 0x29, 0xfb, 0x4d, 0xd7, 0x6b, 0xe9, 0xc9, 0xa2, 0xeb, 0x08, 0xb1, 0x45, 0xc9, 0x60, - 0x11, 0x50, 0x2e, 0xc0, 0xf0, 0xba, 0xdf, 0x2a, 0x95, 0x85, 0x49, 0x2f, 0xf2, 0x69, 0xf9, 0x2d, - 0xc7, 0xad, 0xdb, 0xbc, 0x80, 0xac, 0x01, 0x54, 0x6b, 0x01, 0xa5, 0xad, 0xaa, 0xf7, 0x6d, 0x9a, - 0x90, 0x34, 0xd8, 0x08, 0x35, 0x3a, 0xb8, 0xb1, 0xf0, 0xa7, 0x4b, 0x44, 0x74, 0x42, 0xef, 0xdb, - 0xfa, 0x7e, 0xab, 0xd1, 0x5b, 0x14, 0x20, 0x26, 0xc2, 0xcc, 0x99, 0x5e, 0x5d, 0x64, 0x43, 0x9f, - 0x14, 0x99, 0x33, 0x19, 0xc0, 0xc8, 0x9c, 0xc9, 0x00, 0x6c, 0x6b, 0x5f, 0xa5, 0xde, 0xee, 0x1e, - 0xb7, 0x16, 0x9a, 0xe4, 0x4b, 0x75, 0x0f, 0x21, 0xfa, 0xd6, 0xce, 0x71, 0xac, 0x7f, 0x35, 0x0c, - 0x67, 0x6d, 0xba, 0xeb, 0x31, 0x31, 0xf9, 0x7e, 0xe8, 0xb5, 0x76, 0x8d, 0x18, 0x15, 0x56, 0x62, - 0x21, 0x89, 0x80, 0xee, 0x0c, 0xa2, 0x06, 0xe6, 0x0a, 0xe4, 0xd9, 0xa9, 0xa8, 0xad, 0x25, 0x7c, - 0x43, 0x61, 0x67, 0xa7, 0x08, 0x82, 0x2a, 0x8b, 0xc9, 0xab, 0xe2, 0xd4, 0xd6, 0x52, 0x6e, 0xb0, - 0x53, 0xfb, 0xbb, 0x87, 0x45, 0xa8, 0x1e, 0x84, 0x11, 0x45, 0x8d, 0x4d, 0x9c, 0xdc, 0x4a, 0xb4, - 0x1e, 0xea, 0x21, 0x5a, 0xdf, 0x83, 0xb9, 0x52, 0x9d, 0x6f, 0xd6, 0x6e, 0x63, 0x33, 0xf0, 0x5a, - 0x35, 0xaf, 0xed, 0x36, 0xa4, 0xba, 0x88, 0xa3, 0xec, 0xaa, 0x72, 0xa7, 0xad, 0x10, 0xec, 0x54, - 0x32, 0xd6, 0x8d, 0xf2, 0x7a, 0x15, 0x43, 0x39, 0x88, 0xe7, 0x31, 0xec, 0x46, 0xbd, 0x15, 0x62, - 0x2f, 0x42, 0x5b, 0x15, 0xa3, 0x50, 0x8f, 0xef, 0xc3, 0x5b, 0x6b, 0xd5, 0xd8, 0x57, 0x93, 0x47, - 0x04, 0xe7, 0xef, 0xcc, 0x51, 0x23, 0x44, 0xcb, 0x3c, 0x03, 0x2f, 0xa6, 0xab, 0x56, 0x57, 0x19, - 0x5d, 0xbe, 0x8b, 0x2e, 0x0c, 0xf7, 0x74, 0x3a, 0x8e, 0x47, 0xae, 0xb1, 0xa5, 0xd0, 0xf4, 0x23, - 0x8a, 0xeb, 0x7c, 0x2c, 0x56, 0x01, 0x02, 0x84, 0x72, 0x15, 0x40, 0x43, 0x21, 0xef, 0xc0, 0xec, - 0xca, 0xf2, 0xa2, 0xbc, 0xd4, 0x2c, 0xfb, 0xb5, 0x0e, 0xbe, 0x0b, 0x03, 0xd6, 0x87, 0x73, 0x48, - 0x6b, 0x8b, 0x6c, 0x71, 0xa7, 0xa1, 0x91, 0x4b, 0x30, 0x5a, 0x29, 0xf3, 0xb1, 0x1f, 0xd7, 0xd3, - 0xde, 0x08, 0x43, 0x1d, 0x59, 0x48, 0x36, 0x62, 0x19, 0x75, 0xe2, 0x58, 0x61, 0xf2, 0xec, 0x00, - 0xf2, 0xe9, 0x5b, 0x30, 0xb9, 0xe4, 0x47, 0x95, 0x56, 0x18, 0xb9, 0xad, 0x1a, 0xad, 0x94, 0xf5, - 0x18, 0xb4, 0xdb, 0x7e, 0xe4, 0x78, 0xa2, 0x84, 0xb5, 0xdc, 0xc4, 0x24, 0x5f, 0x44, 0xd2, 0xdb, - 0xb4, 0x45, 0x83, 0x38, 0xf6, 0xec, 0x30, 0x1f, 0x5b, 0x46, 0xba, 0xab, 0x4a, 0x6c, 0x13, 0x51, - 0xa4, 0xe4, 0xe1, 0x29, 0xea, 0x96, 0xfd, 0x3a, 0x0d, 0x1f, 0x5c, 0xff, 0x8c, 0xa5, 0xe4, 0xd1, - 0xfa, 0x86, 0x5b, 0xe6, 0xf5, 0xd4, 0xfd, 0xf5, 0xdf, 0xc5, 0x94, 0x3c, 0x5d, 0xb8, 0xe4, 0x8b, - 0x30, 0x8c, 0x3f, 0x85, 0xb0, 0x35, 0x9b, 0xc2, 0x36, 0x16, 0xb4, 0x6a, 0x3c, 0xc3, 0x3c, 0x12, - 0x90, 0x0a, 0x8c, 0x0a, 0x39, 0xff, 0x24, 0x89, 0x25, 0x84, 0xc2, 0xc0, 0x57, 0x86, 0xa0, 0xb7, - 0xea, 0x30, 0xa1, 0x57, 0xc8, 0xbe, 0x88, 0x55, 0x37, 0xdc, 0xa3, 0x75, 0xf6, 0x4b, 0xe4, 0x84, - 0xc2, 0x2f, 0x62, 0x0f, 0xa1, 0x0e, 0x6b, 0x87, 0xad, 0xa1, 0xb0, 0x2d, 0xbe, 0x12, 0xde, 0x0f, - 0x45, 0x53, 0x84, 0xe6, 0xef, 0xe1, 0x2d, 0x52, 0xdd, 0x16, 0x45, 0xd6, 0xf7, 0xc0, 0xdc, 0x7a, - 0xa7, 0xd1, 0x70, 0xb7, 0x1b, 0x54, 0xe6, 0x0c, 0x88, 0xdc, 0x88, 0x92, 0x25, 0x18, 0xae, 0x6a, - 0x39, 0x6b, 0x67, 0x55, 0x52, 0x86, 0x18, 0x07, 0x6d, 0x22, 0x33, 0x18, 0x56, 0x23, 0x91, 0xad, - 0x96, 0x93, 0x5a, 0xbf, 0x97, 0x81, 0x39, 0xf9, 0x1c, 0x1d, 0xb8, 0xb5, 0x47, 0x2a, 0x6f, 0xf1, - 0x25, 0x63, 0xad, 0xe1, 0x82, 0x4d, 0x2c, 0x23, 0xbe, 0xea, 0xee, 0xc8, 0x46, 0x98, 0xe7, 0x67, - 0x5a, 0x83, 0x8f, 0x6b, 0x0c, 0x79, 0x07, 0xc6, 0xc5, 0x19, 0xaa, 0x05, 0x83, 0xc3, 0x88, 0x3b, - 0x42, 0xfb, 0x48, 0x1a, 0x47, 0xe8, 0xe8, 0x28, 0x1a, 0x98, 0x5d, 0x79, 0x70, 0xfd, 0xd3, 0x10, - 0x0d, 0xcc, 0x3a, 0xfa, 0x2c, 0xdd, 0xdf, 0x1a, 0x4f, 0x8e, 0xad, 0x58, 0xbb, 0x37, 0xf5, 0xf0, - 0x4f, 0x99, 0x58, 0x51, 0x8b, 0xc3, 0x3f, 0xe9, 0x8a, 0x9a, 0x42, 0x55, 0x73, 0x92, 0x3d, 0x66, - 0x4e, 0xde, 0x93, 0x73, 0x92, 0xeb, 0xbd, 0x30, 0x66, 0xfb, 0xcc, 0x43, 0x35, 0xfe, 0x42, 0x86, - 0x06, 0xd2, 0xf2, 0x9f, 0xc3, 0x38, 0xd7, 0x9c, 0x24, 0xb9, 0x8b, 0x0a, 0x4e, 0xfa, 0xd5, 0xc1, - 0xf0, 0xe0, 0x4c, 0x8f, 0xd9, 0x9a, 0xbf, 0x04, 0x13, 0xa5, 0x28, 0x72, 0x6b, 0x7b, 0xb4, 0x5e, - 0x66, 0xdb, 0x93, 0x16, 0xa9, 0xc6, 0x15, 0x70, 0xfd, 0x0d, 0x47, 0xc7, 0xe5, 0x91, 0x17, 0xdd, - 0x50, 0xd8, 0x56, 0xaa, 0xc8, 0x8b, 0x0c, 0x62, 0x46, 0x5e, 0x64, 0x10, 0x72, 0x0d, 0x46, 0x2b, - 0xad, 0xc7, 0x1e, 0x1b, 0x93, 0x7c, 0x9c, 0xc4, 0xdc, 0xe3, 0x20, 0x7d, 0x73, 0x15, 0x58, 0xe4, - 0x2d, 0x4d, 0xc6, 0x1e, 0x8b, 0xf5, 0x69, 0x7e, 0x03, 0xa3, 0x62, 0x5c, 0xe8, 0xf2, 0xb3, 0x12, - 0xba, 0x6f, 0xc2, 0xa8, 0xbc, 0x58, 0x83, 0x58, 0x87, 0x16, 0x94, 0xdd, 0x9e, 0xf0, 0x12, 0x19, - 0x53, 0xdd, 0x6a, 0xb9, 0xad, 0xc6, 0xb5, 0x54, 0xb7, 0x5a, 0x6e, 0x2b, 0x23, 0xd5, 0xad, 0x96, - 0xe5, 0x4a, 0xdd, 0x49, 0x4c, 0x1c, 0x7b, 0x27, 0xf1, 0x00, 0x26, 0x36, 0xdd, 0x20, 0xf2, 0x98, - 0x8c, 0xd2, 0x8a, 0xc2, 0xf9, 0x49, 0xe3, 0x1a, 0x4f, 0x2b, 0x5a, 0x3a, 0x2f, 0xb3, 0xb3, 0xb6, - 0x35, 0x7c, 0x33, 0x8d, 0x68, 0x0c, 0x4f, 0xb7, 0xac, 0x9c, 0xfa, 0x24, 0x96, 0x95, 0x38, 0xa8, - 0x78, 0x75, 0x33, 0x1d, 0x5f, 0x10, 0xa0, 0x0c, 0x9d, 0xb8, 0xbf, 0x51, 0x88, 0xe4, 0x6b, 0x30, - 0xc1, 0xfe, 0xde, 0xf4, 0x1b, 0x5e, 0xcd, 0xa3, 0xe1, 0x7c, 0x01, 0x3b, 0x77, 0x3e, 0xf5, 0xeb, - 0x47, 0xa4, 0x83, 0x2a, 0x8d, 0xf8, 0x07, 0x8c, 0x8c, 0x93, 0x77, 0xb2, 0x06, 0x37, 0xf2, 0x3e, - 0x4c, 0xb0, 0xd5, 0xb7, 0xed, 0x86, 0x5c, 0x34, 0x9d, 0x89, 0x6d, 0x63, 0xeb, 0x02, 0xde, 0x15, - 0xfc, 0x54, 0x27, 0x60, 0xc7, 0x7c, 0xa9, 0xcd, 0x37, 0x48, 0xa2, 0xad, 0xf6, 0x76, 0xd7, 0xe6, - 0x28, 0xd1, 0xc8, 0x07, 0x30, 0x51, 0x6a, 0xb7, 0xe3, 0x1d, 0x67, 0x56, 0xbb, 0x97, 0x69, 0xb7, - 0x9d, 0xd4, 0x5d, 0xc7, 0xa0, 0x48, 0x6e, 0xcc, 0x73, 0x27, 0xda, 0x98, 0xc9, 0x1b, 0x4a, 0x5a, - 0x3f, 0x15, 0x5f, 0x32, 0x0a, 0x3d, 0xc6, 0x10, 0xfd, 0xb9, 0xe0, 0xbe, 0x0c, 0x93, 0xfc, 0xd6, - 0x4d, 0x4a, 0x33, 0xa7, 0xbb, 0xbe, 0x9e, 0x14, 0xa1, 0xc6, 0xa4, 0x21, 0x2b, 0x30, 0xc5, 0xdd, - 0x48, 0x1b, 0x22, 0x2a, 0xed, 0xfc, 0x99, 0x38, 0xed, 0x3e, 0xf7, 0x3e, 0x6d, 0x60, 0xb2, 0x02, - 0xd7, 0xe0, 0x92, 0x20, 0xb2, 0xfe, 0x24, 0x03, 0x67, 0x7a, 0xcc, 0xb8, 0x8a, 0x59, 0x9a, 0xe9, - 0x1f, 0xb3, 0x94, 0xed, 0x1c, 0xa6, 0x92, 0x8e, 0xfd, 0x17, 0x52, 0x96, 0x3e, 0x5f, 0x52, 0xde, - 0xf2, 0x81, 0x88, 0x7c, 0x20, 0xa2, 0xea, 0x3b, 0x3e, 0xde, 0x14, 0xe6, 0xba, 0x0f, 0x21, 0x81, - 0xc7, 0x1b, 0xb5, 0x64, 0x1d, 0x1d, 0x16, 0xcf, 0x8b, 0x74, 0x23, 0x6a, 0x5a, 0x3f, 0xf2, 0x8d, - 0x2f, 0x38, 0x85, 0xb5, 0x75, 0x98, 0x81, 0x71, 0xed, 0x3b, 0x24, 0x17, 0x34, 0xa7, 0xd4, 0x02, - 0x4f, 0x58, 0xa3, 0x71, 0xc8, 0xf2, 0x93, 0x08, 0x3f, 0xaa, 0xec, 0xf1, 0xf7, 0xa1, 0xf7, 0x98, - 0x28, 0xa4, 0xc5, 0x75, 0x6d, 0x1a, 0x97, 0x97, 0x36, 0x96, 0x63, 0x52, 0x69, 0x37, 0x8c, 0x4a, - 0xb5, 0xc8, 0x7b, 0x4c, 0x07, 0x38, 0x74, 0xe2, 0xa4, 0xd2, 0x6e, 0x18, 0x39, 0x2e, 0x92, 0x75, - 0x25, 0x95, 0x56, 0x0c, 0xad, 0x1f, 0xc8, 0x00, 0xdc, 0xaf, 0x2c, 0x63, 0x60, 0xe6, 0x4f, 0x2a, - 0x14, 0xa4, 0x07, 0xbb, 0x94, 0xdc, 0xfb, 0x88, 0x03, 0xff, 0x7d, 0x06, 0xa6, 0x4c, 0x34, 0xf2, - 0x1e, 0x4c, 0x57, 0x6b, 0x81, 0xdf, 0x68, 0x6c, 0xbb, 0xb5, 0x47, 0x6b, 0x5e, 0x8b, 0xf2, 0x30, - 0x83, 0xc3, 0xfc, 0x2c, 0x0a, 0x55, 0x91, 0xd3, 0x60, 0x65, 0x76, 0x12, 0x99, 0xfc, 0x60, 0x06, - 0x26, 0xab, 0x7b, 0xfe, 0xbe, 0x8a, 0x0c, 0x28, 0x26, 0xe4, 0xeb, 0xec, 0xdb, 0x0e, 0xf7, 0xfc, - 0xfd, 0x38, 0xdb, 0x9d, 0x61, 0x8b, 0xf8, 0xee, 0x60, 0xcf, 0xc4, 0x35, 0x1f, 0x35, 0x99, 0x28, - 0xbc, 0x6a, 0x54, 0x62, 0x9b, 0x75, 0x5a, 0x7f, 0x9e, 0x81, 0x71, 0xd4, 0x79, 0x1a, 0x0d, 0x94, - 0xb9, 0x3e, 0x4b, 0xa9, 0xd3, 0x54, 0xbf, 0xfa, 0x4c, 0xec, 0x9b, 0x30, 0x9d, 0x40, 0x23, 0x16, - 0x8c, 0x54, 0x31, 0x10, 0x81, 0x7e, 0x41, 0xc1, 0x43, 0x13, 0xd8, 0xa2, 0xc4, 0x5a, 0xd1, 0xc8, - 0x1e, 0x5c, 0xc7, 0x57, 0xc6, 0x45, 0x00, 0x4f, 0x82, 0xa4, 0x66, 0x43, 0x92, 0x2d, 0x79, 0x70, - 0xdd, 0xd6, 0xb0, 0xac, 0x75, 0x18, 0xa9, 0xfa, 0x41, 0xb4, 0x74, 0xc0, 0x95, 0x89, 0x32, 0x0d, - 0x6b, 0xfa, 0x33, 0xa2, 0x87, 0x57, 0xf7, 0x35, 0x5b, 0x14, 0x91, 0x22, 0x0c, 0xdf, 0xf2, 0x68, - 0xa3, 0xae, 0xdb, 0x8b, 0xee, 0x30, 0x80, 0xcd, 0xe1, 0x4c, 0xe1, 0x3a, 0x1d, 0xe7, 0x2f, 0x88, - 0x0d, 0x53, 0x3f, 0xe9, 0x77, 0xb3, 0x6c, 0x8c, 0xef, 0x8b, 0x66, 0x06, 0x75, 0xa3, 0xa6, 0x3e, - 0x43, 0xfd, 0x1f, 0x65, 0x60, 0xa1, 0x37, 0x89, 0x6e, 0xeb, 0x9a, 0xe9, 0x63, 0xeb, 0xfa, 0x72, - 0xf2, 0xd9, 0x0b, 0xd1, 0xc4, 0xb3, 0x57, 0xfc, 0xd8, 0x55, 0x46, 0x53, 0xe3, 0x1a, 0x95, 0x49, - 0x0b, 0x2e, 0xf4, 0x69, 0x33, 0x22, 0xf2, 0x69, 0x8e, 0x90, 0xc6, 0x16, 0xb4, 0xd6, 0x6f, 0x0e, - 0xc1, 0xd9, 0x9e, 0x14, 0x64, 0x55, 0x4b, 0x85, 0x32, 0xa5, 0x92, 0x30, 0xf4, 0xc4, 0xbf, 0x8a, - 0xff, 0xa2, 0x35, 0x59, 0xd2, 0xf9, 0x69, 0x43, 0xa5, 0xc0, 0xc8, 0x22, 0xaf, 0xd7, 0x8e, 0xe5, - 0xc5, 0xd1, 0x91, 0x19, 0x74, 0x67, 0xc3, 0x40, 0x37, 0x39, 0x1a, 0xb9, 0x5e, 0x23, 0xd4, 0x3f, - 0xbb, 0x3a, 0x07, 0xd9, 0xb2, 0x2c, 0x36, 0x40, 0x1e, 0x4a, 0x37, 0x40, 0xb6, 0xfe, 0x55, 0x06, - 0xc6, 0x54, 0xb3, 0xc9, 0x02, 0x9c, 0xde, 0xb2, 0x4b, 0xcb, 0x2b, 0xce, 0xd6, 0x87, 0x9b, 0x2b, - 0xce, 0xfd, 0xf5, 0xea, 0xe6, 0xca, 0x72, 0xe5, 0x56, 0x65, 0xa5, 0x5c, 0x78, 0x8e, 0xcc, 0xc0, - 0xe4, 0xfd, 0xf5, 0xbb, 0xeb, 0x1b, 0x0f, 0xd7, 0x9d, 0x15, 0xdb, 0xde, 0xb0, 0x0b, 0x19, 0x32, - 0x09, 0x63, 0xf6, 0x52, 0x69, 0xd9, 0x59, 0xdf, 0x28, 0xaf, 0x14, 0xb2, 0xa4, 0x00, 0x13, 0xcb, - 0x1b, 0xeb, 0xeb, 0x2b, 0xcb, 0x5b, 0x95, 0x07, 0x95, 0xad, 0x0f, 0x0b, 0x39, 0x42, 0x60, 0x0a, - 0x11, 0x36, 0xed, 0xca, 0xfa, 0x72, 0x65, 0xb3, 0xb4, 0x56, 0x18, 0x62, 0x30, 0x86, 0xaf, 0xc1, - 0x86, 0x15, 0xa3, 0xbb, 0xf7, 0x97, 0x56, 0x0a, 0x23, 0x0c, 0x85, 0xfd, 0xa5, 0xa1, 0x8c, 0xb2, - 0xea, 0x11, 0xa5, 0x5c, 0xda, 0x2a, 0x2d, 0x95, 0xaa, 0x2b, 0x85, 0x3c, 0x39, 0x03, 0xb3, 0x06, - 0xc8, 0x59, 0xdb, 0xb8, 0x5d, 0x59, 0x2f, 0x8c, 0x91, 0x39, 0x28, 0x28, 0x58, 0x79, 0xc9, 0xb9, - 0x5f, 0x5d, 0xb1, 0x0b, 0x90, 0x84, 0xae, 0x97, 0xee, 0xad, 0x14, 0xc6, 0xad, 0x77, 0xb9, 0x5b, - 0x1a, 0x1f, 0x6a, 0x72, 0x1a, 0x48, 0x75, 0xab, 0xb4, 0x75, 0xbf, 0x9a, 0xe8, 0xfc, 0x38, 0x8c, - 0x56, 0xef, 0x2f, 0x2f, 0xaf, 0x54, 0xab, 0x85, 0x0c, 0x01, 0x18, 0xb9, 0x55, 0xaa, 0xac, 0xad, - 0x94, 0x0b, 0x59, 0xeb, 0x27, 0x33, 0x30, 0x23, 0x25, 0x40, 0xf9, 0x86, 0xf1, 0x09, 0xbf, 0xc5, - 0xf7, 0x0c, 0xc5, 0x56, 0xfa, 0x0c, 0x25, 0x2a, 0xe9, 0xf3, 0x19, 0xfe, 0x7c, 0x06, 0x4e, 0xa5, - 0x62, 0x93, 0x0f, 0xa1, 0x20, 0x5b, 0x70, 0xcf, 0x8d, 0x6a, 0x7b, 0xf1, 0x3e, 0x76, 0x3e, 0x51, - 0x4b, 0x02, 0x8d, 0x5f, 0x6b, 0xc6, 0xc9, 0x59, 0xbb, 0xd8, 0x0c, 0x1e, 0x3a, 0xdc, 0xfa, 0xb9, - 0x0c, 0x9c, 0xe9, 0x51, 0x0d, 0x59, 0x86, 0x11, 0x95, 0x44, 0xa2, 0x8f, 0x41, 0xd5, 0xdc, 0x77, - 0x0e, 0x8b, 0x02, 0x11, 0xb3, 0x59, 0xe2, 0x5f, 0xf6, 0x88, 0xca, 0x0a, 0x81, 0xa9, 0x19, 0xf8, - 0xf0, 0x9d, 0x4d, 0x8c, 0xbc, 0xa8, 0xa9, 0xf4, 0xb0, 0xba, 0x34, 0x2e, 0xc6, 0x2e, 0xe7, 0xee, - 0x87, 0x98, 0x9b, 0xc1, 0xfa, 0xe9, 0x0c, 0x13, 0xee, 0x92, 0x88, 0x4c, 0xe6, 0x2d, 0x85, 0x61, - 0xa7, 0x49, 0x6d, 0xbf, 0x41, 0x4b, 0xf6, 0xba, 0x38, 0x36, 0x50, 0x5a, 0x75, 0xb1, 0x00, 0xd5, - 0x0a, 0xc7, 0x0d, 0x5a, 0xc6, 0xe3, 0xa9, 0x4e, 0x43, 0xde, 0x02, 0x58, 0x79, 0x12, 0xd1, 0xa0, - 0xe5, 0x36, 0x54, 0xc8, 0x10, 0x1e, 0x32, 0x47, 0x40, 0x4d, 0x79, 0x5b, 0x43, 0xb6, 0xfe, 0x7a, - 0x06, 0x26, 0x84, 0xd2, 0x54, 0x6a, 0xd0, 0x20, 0xfa, 0x64, 0xcb, 0xeb, 0x2d, 0x63, 0x79, 0x29, - 0xff, 0x01, 0x8d, 0x3f, 0x2b, 0x4e, 0x5d, 0x59, 0xff, 0x34, 0x03, 0x85, 0x24, 0x22, 0x79, 0x0f, - 0xf2, 0x55, 0xfa, 0x98, 0x06, 0x5e, 0x74, 0x20, 0x36, 0x4a, 0x99, 0x6e, 0x8b, 0xe3, 0x88, 0x32, - 0xbe, 0x1e, 0x42, 0xf1, 0xcb, 0x56, 0x34, 0x83, 0xee, 0xf7, 0xda, 0xb5, 0x47, 0xee, 0x69, 0x5d, - 0x7b, 0x58, 0xff, 0x4b, 0x16, 0xce, 0xdc, 0xa6, 0x91, 0xde, 0x27, 0xf5, 0xda, 0xfd, 0xb9, 0xc1, - 0xfa, 0xa5, 0xf5, 0x64, 0x1e, 0x46, 0xb1, 0x48, 0xce, 0xaf, 0x2d, 0x7f, 0x92, 0x25, 0xb5, 0xae, - 0x73, 0x46, 0x3e, 0x9f, 0x1e, 0x75, 0x5f, 0xd5, 0x32, 0x7c, 0xa8, 0x65, 0x7d, 0x09, 0xa6, 0x30, - 0x84, 0x75, 0x87, 0x7d, 0x0e, 0xb4, 0x2e, 0xae, 0x7f, 0xf2, 0x76, 0x02, 0x4a, 0x5e, 0x85, 0x02, - 0x83, 0x94, 0x6a, 0x8f, 0x5a, 0xfe, 0x7e, 0x83, 0xd6, 0x77, 0x69, 0x1d, 0x8f, 0xf5, 0xbc, 0xdd, - 0x05, 0x97, 0x3c, 0xef, 0xb7, 0xb8, 0xea, 0x46, 0xeb, 0x78, 0x47, 0x23, 0x78, 0xc6, 0xd0, 0x85, - 0xb7, 0x60, 0xfc, 0x63, 0x66, 0xeb, 0xb1, 0xfe, 0xe7, 0x0c, 0xcc, 0x61, 0xe7, 0xb4, 0x8a, 0x65, - 0x26, 0x45, 0x39, 0x5a, 0x5a, 0x02, 0x0b, 0x97, 0x81, 0xcc, 0x4f, 0x41, 0x8d, 0x62, 0x7c, 0x27, - 0x94, 0x1d, 0xe0, 0x4e, 0xa8, 0x7a, 0x92, 0xac, 0xd1, 0x03, 0x5e, 0x69, 0xdd, 0x19, 0xca, 0xe7, - 0x0a, 0x43, 0xf1, 0x94, 0x5b, 0x3f, 0x98, 0x85, 0x51, 0x9b, 0x62, 0x3a, 0x5d, 0x72, 0x09, 0x46, - 0xd7, 0xfd, 0x88, 0x86, 0xf7, 0x8c, 0xdc, 0xc9, 0x2d, 0x06, 0x72, 0x9a, 0x75, 0x5b, 0x16, 0xb2, - 0x05, 0xbf, 0x19, 0xf8, 0xf5, 0x4e, 0x2d, 0xd2, 0x17, 0x7c, 0x9b, 0x83, 0x6c, 0x59, 0x46, 0x5e, - 0x87, 0x31, 0xc1, 0x59, 0xbd, 0x31, 0xa2, 0x6d, 0x6c, 0x40, 0x55, 0x3a, 0xe6, 0x18, 0x01, 0x65, - 0x5a, 0x2e, 0x60, 0x0c, 0x69, 0x32, 0x6d, 0x97, 0xcc, 0x20, 0x45, 0xf5, 0xe1, 0x3e, 0xa2, 0xfa, - 0xe7, 0x60, 0xa4, 0x14, 0x86, 0x34, 0x92, 0x4e, 0xf5, 0x13, 0x2a, 0x1e, 0x55, 0x48, 0x23, 0xce, - 0xd8, 0xc5, 0x72, 0x5b, 0xe0, 0x59, 0xff, 0x22, 0x0b, 0xc3, 0xf8, 0x27, 0xbe, 0xab, 0x06, 0xb5, - 0x3d, 0xe3, 0x5d, 0x35, 0xa8, 0xed, 0xd9, 0x08, 0x25, 0xd7, 0xf1, 0xa6, 0x42, 0xe6, 0x5a, 0x11, - 0xbd, 0xc7, 0x2b, 0xf8, 0x7a, 0x0c, 0xb6, 0x75, 0x1c, 0xf5, 0xe0, 0x9c, 0x4b, 0x0d, 0xa5, 0x71, - 0x1a, 0xb2, 0x1b, 0x55, 0xd1, 0x63, 0x0c, 0xd0, 0xe4, 0x87, 0x76, 0x76, 0xa3, 0x8a, 0xa3, 0xb1, - 0x5a, 0x5a, 0x7c, 0xf3, 0xa6, 0x9e, 0xe6, 0x3b, 0xdc, 0x73, 0x17, 0xdf, 0xbc, 0x69, 0x8b, 0x12, - 0x36, 0xbe, 0xd8, 0x66, 0x7c, 0x78, 0xe5, 0x2e, 0xe0, 0x38, 0xbe, 0xd8, 0x37, 0x7c, 0x64, 0xb5, - 0x63, 0x04, 0xb2, 0x08, 0xe3, 0x22, 0xf4, 0x00, 0xe2, 0x6b, 0xa1, 0x01, 0x44, 0x68, 0x02, 0x4e, - 0xa1, 0x23, 0xf1, 0x27, 0x38, 0x31, 0x41, 0x32, 0x23, 0xa4, 0x78, 0x82, 0x93, 0x53, 0x18, 0xda, - 0x1a, 0x0a, 0xa6, 0xb2, 0xc7, 0x37, 0xbc, 0xd8, 0xb5, 0x7b, 0x4a, 0xf3, 0x61, 0xc7, 0x90, 0xe4, - 0x0a, 0xc1, 0xfa, 0xe5, 0x2c, 0xe4, 0x37, 0x1b, 0x9d, 0x5d, 0xaf, 0xf5, 0xe0, 0x3a, 0x21, 0x80, - 0x6a, 0x9c, 0x8c, 0x59, 0xcf, 0xfe, 0x26, 0x67, 0x21, 0x2f, 0x35, 0x37, 0xb9, 0x21, 0x85, 0x42, - 0x6b, 0x9b, 0x07, 0x39, 0xef, 0x7c, 0x64, 0x6d, 0xf9, 0x93, 0x5c, 0x07, 0xa5, 0x7f, 0xf5, 0x52, - 0xd4, 0x86, 0xd8, 0xc7, 0x62, 0x2b, 0x34, 0xf2, 0x06, 0xe0, 0x21, 0x21, 0x94, 0x07, 0x79, 0xa1, - 0xcd, 0x9b, 0x26, 0xe4, 0x14, 0x4e, 0x82, 0x68, 0xe4, 0x06, 0x88, 0x85, 0x29, 0x32, 0x0f, 0x9f, - 0x32, 0x09, 0x78, 0x2e, 0x37, 0x49, 0x22, 0x50, 0xc9, 0x3b, 0x30, 0x5e, 0x0b, 0x28, 0xbe, 0x3a, - 0xba, 0x8d, 0x38, 0xa1, 0xb0, 0x4e, 0xb9, 0x1c, 0x97, 0x3f, 0xb8, 0x6e, 0xeb, 0xe8, 0xd6, 0x7f, - 0x31, 0x02, 0x13, 0x7a, 0x7b, 0x88, 0x0d, 0xb3, 0x61, 0x83, 0xe9, 0xee, 0xc2, 0xf6, 0xa9, 0x8d, - 0x85, 0xe2, 0x38, 0xbd, 0x60, 0x36, 0x88, 0xe1, 0x71, 0x43, 0x28, 0x19, 0x33, 0x61, 0xf5, 0x39, - 0x7b, 0x26, 0x8c, 0xc1, 0x1c, 0x8f, 0x94, 0x20, 0xef, 0xb7, 0xc3, 0x5d, 0xda, 0xf2, 0xe4, 0x7b, - 0xcb, 0x45, 0x83, 0xd1, 0x86, 0x28, 0xec, 0xe2, 0xa5, 0xc8, 0xc8, 0x9b, 0x30, 0xe2, 0xb7, 0x69, - 0xcb, 0xf5, 0xc4, 0x19, 0xf7, 0x7c, 0x82, 0x01, 0x6d, 0x95, 0x2a, 0x1a, 0xa1, 0x40, 0x26, 0xd7, - 0x60, 0xc8, 0x7f, 0xa4, 0xe6, 0xeb, 0xac, 0x49, 0xf4, 0x28, 0x72, 0x35, 0x12, 0x44, 0x64, 0x04, - 0x1f, 0xb9, 0xcd, 0x1d, 0x31, 0x63, 0x26, 0xc1, 0x1d, 0xb7, 0xb9, 0xa3, 0x13, 0x30, 0x44, 0xf2, - 0x3e, 0x40, 0xdb, 0xdd, 0xa5, 0x81, 0x53, 0xef, 0x44, 0x07, 0x62, 0xde, 0xce, 0x1b, 0x64, 0x9b, - 0xac, 0xb8, 0xdc, 0x89, 0x0e, 0x34, 0xda, 0xb1, 0xb6, 0x04, 0x92, 0x12, 0x40, 0xd3, 0x8d, 0x22, - 0x1a, 0x34, 0x7d, 0x61, 0x7c, 0x36, 0xae, 0x12, 0xf6, 0x72, 0x06, 0xf7, 0x54, 0xb1, 0xc6, 0x41, - 0x23, 0xc2, 0x46, 0x7b, 0x81, 0x2b, 0xf2, 0x3f, 0x27, 0x1a, 0xed, 0x05, 0x46, 0x2f, 0x19, 0x22, - 0xf9, 0x22, 0x8c, 0xd6, 0xbd, 0xb0, 0xe6, 0x07, 0x75, 0x11, 0x4c, 0xe3, 0x05, 0x83, 0xa6, 0xcc, - 0xcb, 0x34, 0x32, 0x89, 0xce, 0x5a, 0x2b, 0xa2, 0x2b, 0xae, 0xfb, 0xfb, 0x78, 0xcd, 0x9f, 0x6c, - 0x6d, 0x55, 0x15, 0xeb, 0xad, 0x8d, 0x89, 0xd8, 0x54, 0xee, 0x7a, 0x51, 0xc3, 0xdd, 0x16, 0xef, - 0xdc, 0xe6, 0x54, 0xde, 0xc6, 0x22, 0x7d, 0x2a, 0x39, 0x32, 0x79, 0x0b, 0xf2, 0xb4, 0x15, 0x05, - 0xae, 0xe3, 0xd5, 0x85, 0xd3, 0x9e, 0xd9, 0x68, 0x76, 0x00, 0xbb, 0x95, 0xb2, 0xde, 0x68, 0xc4, - 0xaf, 0xd4, 0xd9, 0xf8, 0x84, 0x35, 0xaf, 0x29, 0x7c, 0xed, 0xcc, 0xf1, 0xa9, 0x2e, 0x57, 0xee, - 0xe9, 0xe3, 0xc3, 0x10, 0xc9, 0x79, 0x80, 0xf8, 0x89, 0x9b, 0x3f, 0x48, 0xd8, 0x1a, 0xe4, 0x4b, - 0x43, 0xff, 0xdb, 0x2f, 0x16, 0x33, 0x4b, 0x00, 0x79, 0x19, 0x4d, 0xc4, 0x5a, 0x83, 0xb3, 0x3d, - 0x3f, 0x0a, 0x72, 0x05, 0x0a, 0x3b, 0xae, 0xb8, 0x12, 0xab, 0xed, 0xb9, 0xad, 0x16, 0x6d, 0x88, - 0xed, 0x68, 0x5a, 0xc2, 0x97, 0x39, 0x98, 0x73, 0xb6, 0xde, 0x87, 0xb9, 0xb4, 0xd1, 0x20, 0x2f, - 0xc2, 0x84, 0x1e, 0x38, 0x45, 0x30, 0x19, 0x77, 0xdb, 0x9e, 0x0c, 0x9d, 0x22, 0x18, 0xfc, 0x46, - 0x06, 0x5e, 0xe8, 0xf7, 0x6d, 0x91, 0x05, 0xc8, 0xb7, 0x03, 0xcf, 0x47, 0x19, 0x8e, 0xef, 0x80, - 0xea, 0x37, 0x39, 0x07, 0xc0, 0x85, 0x8d, 0xc8, 0xdd, 0x15, 0xc6, 0xf8, 0xf6, 0x18, 0x42, 0xb6, - 0xdc, 0xdd, 0x90, 0xbc, 0x06, 0x33, 0x75, 0xba, 0xe3, 0x76, 0x1a, 0x91, 0x13, 0xd6, 0xf6, 0x68, - 0x1d, 0xfd, 0x5f, 0xd0, 0xc8, 0xca, 0x2e, 0x88, 0x82, 0xaa, 0x84, 0x77, 0xb5, 0x78, 0xb8, 0x47, - 0x8b, 0xef, 0x0c, 0xe5, 0x33, 0x85, 0xac, 0x8d, 0xb6, 0x46, 0xd6, 0xf7, 0x65, 0x61, 0xbe, 0xd7, - 0x62, 0x22, 0xef, 0xa6, 0x8d, 0x01, 0xbf, 0xd5, 0xd7, 0xe1, 0xfa, 0xad, 0xbe, 0x56, 0x1b, 0x59, - 0x04, 0xe5, 0xbd, 0x72, 0x9c, 0x27, 0xba, 0x84, 0x31, 0x9a, 0xb6, 0x1b, 0x86, 0xfb, 0xec, 0x7b, - 0xc9, 0x69, 0x61, 0x2c, 0x05, 0x4c, 0xa7, 0x91, 0x30, 0xf2, 0x05, 0x80, 0x5a, 0xc3, 0x0f, 0x29, - 0x3e, 0x9e, 0x8b, 0x83, 0x98, 0x9b, 0xf0, 0x2a, 0xa8, 0xfe, 0x5a, 0x8a, 0xd0, 0x65, 0xbf, 0x4e, - 0xc5, 0x04, 0xba, 0x70, 0xa6, 0xc7, 0xee, 0xc1, 0xa6, 0x27, 0x4e, 0x73, 0x2c, 0x93, 0xa6, 0x74, - 0x54, 0xb2, 0xe3, 0xe4, 0x88, 0x67, 0x7b, 0xad, 0x91, 0x03, 0x20, 0xdd, 0x5b, 0x04, 0xe3, 0x2e, - 0x0c, 0x51, 0x3b, 0x81, 0xe2, 0xce, 0x21, 0xf7, 0x83, 0x06, 0x29, 0xc2, 0xb8, 0x4c, 0x8a, 0xc6, - 0x04, 0x5d, 0xce, 0x1c, 0x04, 0xe8, 0x2e, 0xc5, 0xc5, 0x83, 0xd1, 0x56, 0xd1, 0x47, 0x49, 0x1c, - 0xa1, 0x63, 0x08, 0xd9, 0x3a, 0x68, 0xcb, 0xde, 0xbd, 0x20, 0xd7, 0xb7, 0xb9, 0x71, 0x8b, 0xd2, - 0x9f, 0xc9, 0xc8, 0xe9, 0xef, 0xde, 0xf9, 0x8e, 0x6b, 0x1f, 0x01, 0xf4, 0x28, 0x11, 0x0d, 0xc3, - 0xbf, 0xd9, 0x91, 0x2e, 0xbf, 0x3a, 0x71, 0xa4, 0x8b, 0x9f, 0xe4, 0x12, 0x4c, 0x07, 0xdc, 0xe6, - 0x30, 0xf2, 0xc5, 0x78, 0xe2, 0x4c, 0xd9, 0x93, 0x1c, 0xbc, 0xe5, 0xe3, 0x98, 0x8a, 0x76, 0xdd, - 0x51, 0x03, 0xa6, 0x1d, 0x04, 0xe4, 0x2a, 0x8c, 0xb1, 0x83, 0x00, 0xa3, 0x92, 0x24, 0x4c, 0xd9, - 0x11, 0x0f, 0x8f, 0x55, 0x3b, 0xff, 0x91, 0xf8, 0x5b, 0xf0, 0xfa, 0xaf, 0x32, 0x92, 0x99, 0x7e, - 0x0c, 0x91, 0x33, 0x30, 0xea, 0x07, 0xbb, 0x5a, 0xd7, 0x46, 0xfc, 0x60, 0x97, 0xf5, 0xeb, 0x32, - 0x14, 0xb8, 0x67, 0x05, 0x77, 0x59, 0x0f, 0x0f, 0x5a, 0x5c, 0x4f, 0xcd, 0xdb, 0x53, 0x1c, 0x8e, - 0x99, 0x9f, 0x0f, 0x5a, 0x35, 0x86, 0x19, 0x86, 0xbe, 0xa3, 0x07, 0x23, 0x12, 0xdd, 0x9e, 0x0a, - 0x43, 0x3f, 0x8e, 0x4a, 0x54, 0x27, 0x4b, 0x30, 0xc9, 0xf8, 0xa8, 0x90, 0x48, 0xe2, 0x94, 0x3c, - 0xd7, 0x7d, 0x4a, 0x1e, 0xb4, 0x6a, 0xb2, 0x89, 0xf6, 0x44, 0xa8, 0xfd, 0x12, 0xbd, 0xf9, 0xd5, - 0x2c, 0x9c, 0x4e, 0x47, 0xc7, 0xf9, 0x62, 0x95, 0xa0, 0x83, 0x11, 0xbf, 0xde, 0xb4, 0xc7, 0x18, - 0x84, 0xc7, 0x50, 0x48, 0x6b, 0x6d, 0x36, 0xb5, 0xb5, 0xaf, 0xc2, 0x0c, 0x32, 0x12, 0x72, 0x49, - 0xc3, 0x0b, 0x23, 0x11, 0x1a, 0xc0, 0x9e, 0x66, 0x05, 0x7c, 0x83, 0x5b, 0x63, 0x60, 0xf2, 0x32, - 0x4c, 0xc9, 0x2d, 0xca, 0xdf, 0x6f, 0xb1, 0x8a, 0xf9, 0xfe, 0x34, 0x29, 0xa0, 0x1b, 0x08, 0x24, - 0xa7, 0x60, 0xc4, 0x6d, 0xb7, 0x59, 0x95, 0x7c, 0x5b, 0x1a, 0x76, 0xdb, 0xed, 0x4a, 0x9d, 0x5c, - 0x84, 0x49, 0x74, 0xa7, 0x72, 0x76, 0xd0, 0xa6, 0x44, 0x18, 0xb0, 0xd9, 0x13, 0x08, 0xe4, 0x76, - 0x26, 0x21, 0xfb, 0x10, 0x18, 0xad, 0x44, 0x19, 0x45, 0x14, 0x70, 0xdb, 0x0a, 0xe1, 0x2c, 0xe4, - 0xe5, 0xeb, 0x26, 0xb7, 0x0a, 0xb7, 0x47, 0x5d, 0xfe, 0xb2, 0x29, 0x06, 0xed, 0x8b, 0x30, 0x2d, - 0x0e, 0x5a, 0xb1, 0xf9, 0x23, 0x53, 0xb1, 0x34, 0x99, 0x04, 0x2c, 0xf2, 0x48, 0x80, 0x00, 0x55, - 0xea, 0x72, 0xb8, 0xff, 0x30, 0x03, 0xa7, 0x52, 0x4f, 0x6a, 0xf2, 0x4d, 0xe0, 0x8e, 0x27, 0x91, - 0xef, 0x04, 0xb4, 0xe6, 0xb5, 0x3d, 0x74, 0xcd, 0xe7, 0x37, 0x59, 0x8b, 0xfd, 0xce, 0x78, 0x74, - 0x62, 0xd9, 0xf2, 0x6d, 0x45, 0xc4, 0x55, 0xec, 0x42, 0x90, 0x00, 0x2f, 0x7c, 0x15, 0x4e, 0xa5, - 0xa2, 0xa6, 0xa8, 0xbe, 0xaf, 0x9b, 0xf9, 0x36, 0xe5, 0xdb, 0x44, 0xa2, 0xd3, 0x9a, 0x4a, 0x2c, - 0xba, 0xf7, 0xdb, 0xaa, 0x7b, 0x89, 0x33, 0x9d, 0xac, 0x24, 0x57, 0x6c, 0x9a, 0x58, 0x2a, 0x89, - 0x7a, 0x2e, 0x5a, 0xf2, 0x55, 0x38, 0x25, 0x56, 0xd1, 0x6e, 0xe0, 0xb6, 0xf7, 0x62, 0x76, 0xbc, - 0xa1, 0xaf, 0xa4, 0xb1, 0xe3, 0xcb, 0xeb, 0x36, 0xc3, 0x57, 0x5c, 0x67, 0xdd, 0x6e, 0xa0, 0xe8, - 0x43, 0x20, 0xe5, 0x81, 0x94, 0xd6, 0xa4, 0x2c, 0xcf, 0x4c, 0xda, 0xf2, 0x1c, 0xf8, 0xdb, 0x10, - 0x75, 0x7e, 0x7f, 0x06, 0x2e, 0x1c, 0xd7, 0x66, 0xf2, 0x10, 0x4e, 0xe3, 0xeb, 0x79, 0xe8, 0xab, - 0x6e, 0x3b, 0x35, 0xb7, 0xb6, 0x47, 0xc5, 0x2a, 0xb1, 0x52, 0x3b, 0xdf, 0x6e, 0x57, 0xab, 0x1b, - 0x5a, 0xbf, 0xdb, 0xed, 0x6a, 0xe8, 0xcb, 0xdf, 0xcb, 0x8c, 0x5c, 0xb4, 0xa1, 0x0e, 0xcf, 0xf7, - 0xa1, 0xd4, 0xbe, 0xb8, 0x8c, 0xfe, 0xc5, 0x5d, 0x86, 0xc2, 0x0e, 0xad, 0x33, 0xe9, 0x8a, 0xd6, - 0xb1, 0x69, 0x8f, 0x17, 0x79, 0xd2, 0x5a, 0x7b, 0x4a, 0xc1, 0xab, 0xa1, 0xff, 0x60, 0x51, 0xd4, - 0xd2, 0x94, 0x9b, 0xa7, 0x2e, 0xbd, 0x91, 0xab, 0x30, 0x9b, 0x08, 0x33, 0x10, 0xfb, 0xad, 0xda, - 0x33, 0xac, 0xc8, 0x0c, 0x4a, 0xf3, 0x22, 0x4c, 0xc8, 0x69, 0x08, 0x94, 0xf7, 0x8b, 0x3d, 0x2e, - 0x60, 0x6c, 0x95, 0x8b, 0xea, 0xfe, 0x7e, 0x56, 0x4a, 0x53, 0x4b, 0xbe, 0x1f, 0x85, 0x51, 0xe0, - 0xb6, 0x0d, 0x95, 0x8a, 0x34, 0xe1, 0xac, 0xef, 0x76, 0xa2, 0xbd, 0x45, 0x87, 0xfd, 0xeb, 0x07, - 0xd2, 0x15, 0xb5, 0x26, 0xed, 0xe9, 0xc6, 0x17, 0xaf, 0x99, 0xbb, 0x6a, 0x89, 0x61, 0x97, 0x74, - 0x64, 0x76, 0xf8, 0x6b, 0x5c, 0x57, 0x9f, 0xb3, 0xcf, 0x70, 0x9e, 0x5d, 0x58, 0x64, 0x15, 0x26, - 0xb6, 0xa9, 0x1b, 0xd0, 0x80, 0xdb, 0x90, 0xa6, 0xea, 0x54, 0x4b, 0x88, 0x80, 0xa6, 0xa5, 0x26, - 0xd7, 0xf1, 0xed, 0xb8, 0x84, 0xbc, 0x07, 0x63, 0x5e, 0x5d, 0x44, 0x3d, 0x14, 0x9a, 0x95, 0x29, - 0xcd, 0x57, 0xea, 0x3c, 0x08, 0x62, 0xcc, 0x83, 0xa9, 0x65, 0x9e, 0x80, 0x2e, 0x4d, 0x1a, 0xca, - 0xa7, 0xb5, 0x24, 0x0f, 0xee, 0x6e, 0x32, 0x32, 0x05, 0x59, 0x35, 0xed, 0x59, 0xaf, 0x4e, 0x4e, - 0xc3, 0x48, 0xa8, 0x85, 0x61, 0xb4, 0xc5, 0x2f, 0xeb, 0xaf, 0xc0, 0xe5, 0x41, 0xc7, 0x88, 0xbc, - 0x01, 0xa4, 0xc7, 0x80, 0x8f, 0xd9, 0x33, 0x6e, 0xd7, 0xb8, 0xbd, 0x08, 0x7a, 0x14, 0x39, 0x4f, - 0x4e, 0xb8, 0x84, 0xdd, 0x0f, 0x3c, 0xeb, 0x07, 0x72, 0x30, 0x65, 0xaa, 0xdb, 0xe4, 0x35, 0x18, - 0x52, 0x6c, 0xa7, 0xd4, 0xb5, 0xb0, 0x8e, 0xc4, 0x98, 0xdb, 0x88, 0xc4, 0xce, 0x0e, 0x7c, 0x45, - 0x72, 0x9a, 0xfa, 0xcd, 0xad, 0x3d, 0x81, 0x40, 0x79, 0x63, 0x7b, 0x07, 0x78, 0x8e, 0x74, 0xdc, - 0xcb, 0x22, 0xaf, 0x49, 0x07, 0xb8, 0xb8, 0xcd, 0x33, 0xa5, 0x1f, 0xaf, 0xdc, 0x26, 0x18, 0x2d, - 0xdb, 0x4f, 0x58, 0xa1, 0xa6, 0x4d, 0x0d, 0xf5, 0xd6, 0xa6, 0x44, 0x57, 0x7a, 0x68, 0x53, 0xc3, - 0x7d, 0xb4, 0xa9, 0x98, 0x52, 0xd7, 0xa6, 0x50, 0xa7, 0x1e, 0xed, 0xa5, 0x53, 0xc7, 0x34, 0x5c, - 0xa7, 0x7e, 0x49, 0x74, 0x37, 0x70, 0xf7, 0x1d, 0x1c, 0x07, 0x6e, 0xef, 0xc6, 0x3b, 0x62, 0xbb, - 0xfb, 0xf8, 0xde, 0xb6, 0x34, 0x06, 0xf2, 0x91, 0xce, 0xfa, 0x5b, 0x99, 0x84, 0xfe, 0x23, 0xa7, - 0xe2, 0x65, 0x98, 0xf2, 0x9a, 0x4c, 0x30, 0xa3, 0x75, 0x4d, 0xa0, 0x98, 0xb4, 0x27, 0x25, 0x94, - 0x0b, 0x15, 0xaf, 0xc0, 0xb4, 0x42, 0xe3, 0x8e, 0xd1, 0xdc, 0x78, 0xdf, 0x56, 0xd4, 0xc2, 0x31, - 0xfa, 0x35, 0x98, 0x51, 0x88, 0x42, 0x86, 0xe5, 0x32, 0xc5, 0xa4, 0x5d, 0x90, 0x05, 0x22, 0xdb, - 0x6f, 0x68, 0xed, 0x26, 0x4f, 0xa5, 0x4f, 0xa9, 0x55, 0xd6, 0x6f, 0xe7, 0x0c, 0xd9, 0x50, 0x56, - 0xb3, 0x04, 0xe3, 0x6c, 0x6b, 0x14, 0x83, 0x24, 0xb6, 0x95, 0x17, 0x7b, 0x0c, 0xbf, 0x78, 0xe6, - 0xac, 0x56, 0x37, 0x6c, 0x08, 0x43, 0x5f, 0xbe, 0x7a, 0x3a, 0x7c, 0xf7, 0xe7, 0xe2, 0x0d, 0x2e, - 0x3f, 0xc9, 0x8e, 0xef, 0x21, 0xaf, 0xf6, 0x67, 0x57, 0x6a, 0xb7, 0xb1, 0x8d, 0x6c, 0xf5, 0xe1, - 0x29, 0xa0, 0x7e, 0xc9, 0x0a, 0xee, 0x03, 0xaa, 0x52, 0xa1, 0xc9, 0x3c, 0x97, 0x72, 0xae, 0x76, - 0x31, 0xc7, 0x51, 0x42, 0xce, 0x85, 0x8e, 0xfc, 0x53, 0xb2, 0x5d, 0x81, 0x09, 0xa6, 0x98, 0x2b, - 0x86, 0x43, 0x86, 0x17, 0x53, 0xaf, 0xce, 0x2f, 0x57, 0xee, 0xd9, 0xe3, 0x8c, 0x4e, 0xb2, 0xd9, - 0x83, 0xb3, 0xba, 0xf8, 0x68, 0x36, 0x72, 0x58, 0xc6, 0x79, 0xeb, 0x3b, 0x02, 0xb1, 0x94, 0x89, - 0x4d, 0x3d, 0xed, 0x9a, 0x00, 0x81, 0x66, 0xed, 0xc1, 0x42, 0xef, 0x29, 0x61, 0x1a, 0x09, 0xd5, - 0x5d, 0xa7, 0x6d, 0xf9, 0x53, 0x3b, 0x20, 0xb3, 0xfa, 0x01, 0xa9, 0x0b, 0x93, 0x39, 0x43, 0x98, - 0xb4, 0xfe, 0x6e, 0x0e, 0x2e, 0x0e, 0x30, 0x5d, 0x7d, 0xea, 0xfc, 0x00, 0xc6, 0xf9, 0x5d, 0x22, - 0xdf, 0x3e, 0xf9, 0x3b, 0xbc, 0x3c, 0x06, 0x18, 0x53, 0xb1, 0xd7, 0x31, 0x11, 0x26, 0xde, 0xef, - 0x20, 0x54, 0x7f, 0x93, 0x6f, 0xc2, 0x34, 0xdf, 0xd0, 0xb8, 0xa5, 0xc2, 0x4e, 0xa7, 0x31, 0xc0, - 0x8e, 0xf6, 0xbc, 0x34, 0xab, 0x4e, 0x90, 0xe2, 0x26, 0x87, 0x3b, 0x46, 0x55, 0xc1, 0xc8, 0x16, - 0x8c, 0x23, 0xda, 0x8e, 0xfb, 0xff, 0xb1, 0x77, 0x75, 0xbf, 0x8d, 0x5c, 0xd7, 0x5d, 0x43, 0x52, - 0x14, 0x79, 0xa8, 0x8f, 0xd1, 0x5d, 0x79, 0x57, 0xd9, 0xd5, 0x6a, 0xed, 0xf1, 0x7a, 0xb3, 0x4b, - 0xc7, 0x4e, 0xe4, 0xad, 0x63, 0xaf, 0x5b, 0xd7, 0x1d, 0x91, 0x43, 0x71, 0x56, 0xfc, 0xf2, 0xcc, - 0x50, 0xca, 0xda, 0x49, 0x06, 0x63, 0x72, 0x24, 0xb1, 0xa1, 0x86, 0x0c, 0x39, 0xb4, 0xb3, 0x7e, - 0x69, 0xfb, 0x92, 0x00, 0x6d, 0xd3, 0x8f, 0xa0, 0x40, 0x83, 0xa2, 0x40, 0x5f, 0xfc, 0xd0, 0x87, - 0x3e, 0xf6, 0xad, 0xff, 0x40, 0x80, 0x20, 0x40, 0x1e, 0xfa, 0xd4, 0x02, 0x46, 0x6b, 0xa0, 0x7d, - 0x68, 0xfb, 0x56, 0x34, 0x0f, 0x79, 0x2a, 0xee, 0xd7, 0xcc, 0x9d, 0x0f, 0x72, 0x25, 0xef, 0xa6, - 0x4d, 0x80, 0x3c, 0x49, 0x73, 0xee, 0x39, 0x97, 0x77, 0xee, 0xd7, 0x9c, 0x7b, 0xcf, 0x39, 0xbf, - 0x33, 0x18, 0x5e, 0xc8, 0xbf, 0x97, 0x3b, 0x6d, 0x8b, 0x62, 0xd4, 0xc1, 0x0a, 0x13, 0x6a, 0xe4, - 0x19, 0x9f, 0xff, 0xbc, 0xd9, 0xb9, 0xed, 0x8c, 0xc7, 0x74, 0x2e, 0x30, 0x83, 0xd0, 0xb2, 0xb1, - 0xe6, 0xcd, 0xce, 0xd5, 0xf1, 0x98, 0x0c, 0x29, 0xb1, 0x1c, 0x6d, 0x62, 0x3e, 0xba, 0x6a, 0x39, - 0x67, 0x9e, 0x70, 0xe2, 0x0a, 0xe8, 0xba, 0x65, 0xbc, 0x5b, 0x40, 0xfd, 0x08, 0xe8, 0x4d, 0xb8, - 0x41, 0x1f, 0x94, 0x9f, 0x65, 0xb8, 0x6e, 0x36, 0x7f, 0xde, 0xff, 0x7a, 0x88, 0x52, 0x86, 0xe8, - 0x2e, 0xc8, 0xb8, 0xeb, 0xc3, 0x4d, 0x25, 0x18, 0xa3, 0x75, 0x6f, 0x76, 0x1e, 0xf4, 0x9d, 0xd8, - 0xf1, 0x79, 0xb1, 0xe3, 0xdf, 0xe0, 0x0a, 0x69, 0xea, 0xf6, 0x30, 0xbf, 0xcb, 0x95, 0xff, 0xca, - 0xc2, 0x9d, 0x8b, 0x6d, 0x02, 0xbf, 0x1e, 0xb7, 0x94, 0x71, 0x8b, 0x9d, 0x8f, 0x97, 0x13, 0xe7, - 0xe3, 0x94, 0xb5, 0x97, 0x4f, 0x5b, 0x7b, 0x89, 0xd3, 0xf8, 0x4a, 0xca, 0x69, 0x3c, 0x75, 0x81, - 0x16, 0x9e, 0xb0, 0x40, 0x8b, 0xe2, 0x3c, 0xf9, 0xf7, 0x0c, 0x5c, 0x49, 0xb1, 0x96, 0xa0, 0xf7, - 0xe1, 0x0a, 0x57, 0xed, 0xe9, 0x97, 0x83, 0xaa, 0xdc, 0xf4, 0xeb, 0x7b, 0x2f, 0x4d, 0xa9, 0x27, - 0x6c, 0x29, 0x8a, 0xf7, 0x26, 0x53, 0xe7, 0xc3, 0xf2, 0x5f, 0x1e, 0x45, 0x1e, 0x3d, 0x82, 0xab, - 0x04, 0x81, 0xb4, 0x67, 0x0b, 0xfa, 0xbc, 0x3d, 0x71, 0x4f, 0xd8, 0x7c, 0x78, 0x21, 0xa1, 0xf6, - 0x0e, 0x7a, 0x42, 0x73, 0x0c, 0xf7, 0xa4, 0xbe, 0x64, 0x6c, 0x4d, 0x53, 0xe8, 0xf1, 0x33, 0xc2, - 0xdf, 0x49, 0xa0, 0x3c, 0xb9, 0xbf, 0xc8, 0x35, 0x66, 0xbc, 0xc3, 0x8b, 0x46, 0xc9, 0x11, 0x7a, - 0xef, 0x45, 0x58, 0x9b, 0xb8, 0x27, 0x13, 0x77, 0x7a, 0x26, 0x74, 0x5f, 0xd1, 0x58, 0x65, 0x44, - 0xde, 0x31, 0x1c, 0x07, 0xe9, 0x52, 0x4a, 0x36, 0x17, 0x52, 0x6a, 0xc1, 0xd1, 0x2f, 0x75, 0x1c, - 0xf0, 0x6c, 0x12, 0x1b, 0x48, 0x1f, 0x1e, 0xe6, 0x0a, 0x19, 0x39, 0x6b, 0x30, 0xb4, 0xa6, 0x93, - 0xc1, 0xd0, 0x55, 0xfe, 0x5e, 0xe2, 0x1a, 0x41, 0x5a, 0xe7, 0xa1, 0xf7, 0x05, 0xff, 0x9e, 0x6c, - 0x42, 0x0d, 0x49, 0x13, 0x11, 0x5d, 0x21, 0x18, 0x80, 0x10, 0x21, 0x44, 0x00, 0x84, 0x08, 0xe5, - 0x69, 0x9c, 0x14, 0x1e, 0x70, 0xf3, 0x20, 0xde, 0xed, 0x8e, 0xf6, 0xd0, 0x3d, 0x58, 0xa1, 0x16, - 0x41, 0xde, 0xd0, 0x8d, 0x48, 0x43, 0x8f, 0xf6, 0x0c, 0x5e, 0xae, 0xfc, 0x50, 0x0a, 0x6c, 0x22, - 0xf1, 0xe6, 0x1f, 0xed, 0xa1, 0x37, 0x2e, 0xe6, 0xa9, 0x53, 0xe0, 0x9e, 0x3a, 0x81, 0x97, 0xce, - 0x9b, 0x11, 0x2f, 0x9d, 0xdb, 0x8b, 0xfb, 0x89, 0xdd, 0xbe, 0xc6, 0xd3, 0xf6, 0xff, 0x4c, 0x82, - 0x9b, 0x0b, 0x25, 0xd0, 0x0e, 0x14, 0xd4, 0x8e, 0x6e, 0x85, 0x23, 0x8b, 0x57, 0x0b, 0xa7, 0xa0, - 0x03, 0x28, 0xee, 0x3b, 0xd3, 0x41, 0x0f, 0x4f, 0xe0, 0xd4, 0x4b, 0xa3, 0x44, 0xb5, 0x01, 0x7b, - 0x7d, 0xc9, 0x08, 0x65, 0x91, 0x0d, 0x9b, 0x64, 0x15, 0x24, 0xd2, 0x62, 0xc7, 0x2f, 0x0c, 0x12, - 0x15, 0x26, 0xc4, 0xf0, 0x0e, 0x93, 0x20, 0xc6, 0x17, 0xdf, 0x87, 0x5c, 0x0b, 0x99, 0xdf, 0xc0, - 0x4b, 0x60, 0x7e, 0xdd, 0x85, 0x42, 0x87, 0xdb, 0x45, 0x04, 0xd7, 0x36, 0x6e, 0x03, 0x31, 0x82, - 0x52, 0xe5, 0x8f, 0x25, 0x7e, 0xaa, 0x7f, 0xf2, 0x8b, 0x08, 0x19, 0x1d, 0xfa, 0x8b, 0x33, 0x3a, - 0xf4, 0x3f, 0x67, 0x46, 0x07, 0xe5, 0x6f, 0x19, 0x22, 0xa7, 0xde, 0xef, 0xc4, 0x52, 0xc2, 0x3d, - 0xad, 0x8b, 0xa2, 0x16, 0x99, 0x9d, 0x2f, 0x0a, 0x19, 0x81, 0x92, 0xbf, 0x35, 0xdf, 0x53, 0x51, - 0x98, 0xaa, 0x7f, 0x99, 0x85, 0x9d, 0x45, 0xe2, 0xa9, 0xd9, 0xeb, 0xa4, 0xcb, 0x65, 0xaf, 0xbb, - 0x07, 0x05, 0x4a, 0x8b, 0xa6, 0x70, 0x67, 0xa2, 0xb8, 0xc3, 0x79, 0x31, 0x7a, 0x11, 0xf2, 0x6a, - 0xc5, 0x0c, 0xd3, 0x60, 0x10, 0x47, 0x19, 0xa7, 0x37, 0x25, 0x2e, 0x18, 0xac, 0x08, 0x7d, 0x33, - 0x99, 0xf9, 0x85, 0xe5, 0xbf, 0xb8, 0x21, 0x74, 0x48, 0x02, 0x2c, 0x97, 0xb4, 0x37, 0x04, 0x77, - 0x65, 0x78, 0x89, 0x46, 0x32, 0x8b, 0x8c, 0x02, 0xf9, 0xce, 0xc4, 0x9d, 0xba, 0xbe, 0xe8, 0xc4, - 0x32, 0x26, 0x14, 0x83, 0x95, 0x30, 0x17, 0x13, 0xe7, 0x31, 0x8d, 0x28, 0xcc, 0x8b, 0x51, 0xde, - 0xc4, 0x27, 0x05, 0x93, 0x0d, 0x81, 0x05, 0x0b, 0x34, 0x9c, 0x99, 0xd7, 0x3b, 0x23, 0xe9, 0xc0, - 0x57, 0x42, 0x9f, 0x94, 0x21, 0xa1, 0xe2, 0x17, 0x9c, 0x1a, 0x02, 0x8b, 0xf2, 0x3d, 0x09, 0xb6, - 0xd2, 0xde, 0x03, 0xed, 0x40, 0xce, 0x4b, 0x4d, 0x72, 0xe3, 0xd1, 0x40, 0xa8, 0x12, 0xc9, 0xb7, - 0x7d, 0x32, 0x9a, 0x9c, 0x3b, 0xbe, 0xe8, 0xea, 0x23, 0x90, 0x0d, 0xc0, 0x0f, 0x35, 0xf2, 0x3f, - 0xba, 0xc5, 0x77, 0xe7, 0x6c, 0x22, 0x2d, 0x0e, 0xf9, 0xa3, 0xa8, 0x00, 0x7a, 0xbf, 0xd3, 0x1e, - 0x53, 0xb0, 0xd6, 0xfb, 0x90, 0xc3, 0xcd, 0x8a, 0xcd, 0x5e, 0x3c, 0x7f, 0xd4, 0x66, 0x83, 0x31, - 0xd1, 0x56, 0x4d, 0x9d, 0xf3, 0xa1, 0x41, 0x98, 0x95, 0x63, 0x58, 0x8f, 0x72, 0x20, 0x2d, 0x0a, - 0xef, 0x55, 0x7a, 0x4d, 0x66, 0x35, 0xed, 0x8f, 0x46, 0xd4, 0xdd, 0x74, 0xff, 0x0b, 0xff, 0xf4, - 0xe9, 0x2d, 0xc0, 0x8f, 0x54, 0x26, 0x0d, 0xfe, 0x4b, 0xf9, 0xd3, 0x0c, 0x6c, 0x85, 0x11, 0x6e, - 0x7c, 0x0d, 0xfd, 0xca, 0x86, 0x5b, 0xa8, 0x91, 0x70, 0x00, 0xae, 0x62, 0x25, 0x5f, 0x70, 0x81, - 0x17, 0xf2, 0x01, 0x6c, 0xcf, 0xe3, 0x47, 0x2f, 0x43, 0x91, 0x80, 0x22, 0x8c, 0x9d, 0x9e, 0x2b, - 0xee, 0x7d, 0x1e, 0x27, 0x1a, 0x61, 0xb9, 0xf2, 0x13, 0x09, 0xae, 0x33, 0x27, 0xc9, 0xa6, 0x33, - 0xf0, 0x7c, 0xd7, 0x73, 0xbc, 0x9e, 0xfb, 0x6c, 0xc2, 0x85, 0x0e, 0x22, 0xfb, 0xd8, 0x4b, 0x51, - 0x5f, 0xd8, 0xc4, 0xaf, 0xcd, 0x7f, 0x5b, 0x74, 0x8f, 0x00, 0x7d, 0xf4, 0xe8, 0xe4, 0xcd, 0xd1, - 0xf0, 0x4c, 0x0f, 0x13, 0xc4, 0xf0, 0x4c, 0xc2, 0xa1, 0xfc, 0x1e, 0xec, 0x2e, 0xfe, 0x01, 0xf4, - 0x0d, 0x58, 0x23, 0x89, 0x0c, 0xba, 0xe3, 0xd3, 0x89, 0xd3, 0x77, 0xf9, 0x25, 0x18, 0xbf, 0x83, - 0x14, 0xcb, 0x28, 0xb8, 0x09, 0x0b, 0x17, 0x3c, 0x25, 0x29, 0x12, 0x98, 0x50, 0xc4, 0x13, 0x59, - 0xac, 0x4d, 0xf9, 0x7d, 0x09, 0x50, 0xb2, 0x0e, 0xf4, 0x55, 0x58, 0xed, 0x5a, 0x15, 0xd3, 0x77, - 0x26, 0x7e, 0x7d, 0x34, 0x9b, 0x30, 0xd0, 0x10, 0x1a, 0x3d, 0xe6, 0xf7, 0xf0, 0x56, 0x32, 0xf1, - 0xed, 0xb3, 0xd1, 0x6c, 0x62, 0x44, 0xf8, 0x08, 0x02, 0xbf, 0xeb, 0x7e, 0xab, 0xef, 0x3c, 0x8e, - 0x22, 0xf0, 0x33, 0x5a, 0x04, 0x81, 0x9f, 0xd1, 0x94, 0x4f, 0x24, 0xb8, 0xc1, 0xbd, 0x27, 0xfa, - 0x29, 0x6d, 0xa9, 0x90, 0x18, 0xe9, 0x09, 0x07, 0x4d, 0x5b, 0xa4, 0xcc, 0x6e, 0x72, 0x18, 0x01, - 0xd2, 0x40, 0xa2, 0xd5, 0x52, 0x59, 0xf4, 0x3b, 0x90, 0x33, 0xfd, 0xd1, 0xf8, 0x02, 0x38, 0x02, - 0x72, 0x30, 0xa2, 0xfe, 0x68, 0x4c, 0xaa, 0x20, 0x92, 0x8a, 0x0b, 0x5b, 0x62, 0xe3, 0x78, 0x8b, - 0x51, 0x13, 0x56, 0x18, 0xaa, 0x4c, 0xcc, 0x9c, 0xb4, 0xe0, 0x9d, 0xf6, 0x37, 0x38, 0x58, 0x01, - 0x03, 0xed, 0x32, 0x78, 0x1d, 0xca, 0x9f, 0x48, 0x50, 0xc2, 0xda, 0x06, 0x39, 0xbf, 0x3d, 0xed, - 0x94, 0x8e, 0x2a, 0x8e, 0xdc, 0x1a, 0x19, 0x54, 0x7f, 0xa1, 0xaf, 0xf1, 0xeb, 0xb0, 0x11, 0x13, - 0x40, 0x0a, 0x09, 0x53, 0x1d, 0x0e, 0x7a, 0x0e, 0x05, 0xf4, 0xa6, 0xa6, 0xbc, 0x08, 0x4d, 0xf9, - 0x43, 0x09, 0xb6, 0xf0, 0x69, 0x5f, 0x27, 0x17, 0xbd, 0xc6, 0x6c, 0xc8, 0xd7, 0x3b, 0xd6, 0xa0, - 0xb8, 0x1b, 0x0e, 0x0d, 0xa1, 0xa3, 0x1a, 0x14, 0xa3, 0x19, 0x41, 0x29, 0xaa, 0x43, 0x81, 0x7d, - 0x5f, 0xa6, 0x0c, 0x6b, 0x6b, 0x57, 0xb8, 0x46, 0x08, 0x2b, 0x66, 0x4c, 0xf8, 0x4d, 0xc8, 0x16, - 0xc6, 0x64, 0x8c, 0x40, 0x5a, 0xf9, 0x6f, 0x09, 0xae, 0xcd, 0x91, 0x41, 0x6f, 0xc3, 0x32, 0x71, - 0xef, 0x67, 0xa3, 0xb7, 0x33, 0xe7, 0x27, 0xfc, 0xde, 0xd9, 0xd1, 0x1e, 0xfd, 0x10, 0x9d, 0xe3, - 0x07, 0x83, 0x4a, 0xa1, 0xf7, 0xa1, 0xa8, 0xf6, 0xfb, 0xec, 0x20, 0x93, 0x89, 0x1c, 0x64, 0xe6, - 0xfc, 0xe2, 0xab, 0x01, 0x3f, 0x3d, 0xc8, 0x50, 0x47, 0xd3, 0x7e, 0xdf, 0x66, 0xa1, 0x0b, 0x61, - 0x7d, 0xd7, 0x7f, 0x0b, 0xd6, 0xa3, 0xcc, 0x97, 0x3a, 0xc8, 0xfc, 0x50, 0x02, 0x39, 0xda, 0x86, - 0x5f, 0x0c, 0xcc, 0x42, 0xda, 0x30, 0x3f, 0x61, 0x52, 0xfd, 0x79, 0x06, 0x9e, 0x4b, 0xed, 0x61, - 0xf4, 0x0a, 0xe4, 0xd5, 0xf1, 0x58, 0xaf, 0xb2, 0x59, 0xc5, 0x34, 0x24, 0x72, 0x3f, 0x1c, 0x39, - 0xe7, 0x51, 0x26, 0x74, 0x1f, 0x0a, 0x64, 0x66, 0x62, 0x81, 0x4c, 0x88, 0x7a, 0x45, 0xaf, 0x4f, - 0x62, 0xa8, 0x57, 0x9c, 0x11, 0xd5, 0x60, 0x9d, 0x45, 0x5c, 0x1b, 0xee, 0xa9, 0xfb, 0x9d, 0x00, - 0x7e, 0x95, 0x20, 0xc4, 0xf2, 0x4b, 0x67, 0x7b, 0x42, 0xcb, 0xc4, 0x98, 0xe3, 0xa8, 0x14, 0x6a, - 0x80, 0x4c, 0xea, 0x14, 0x6b, 0xa2, 0xd0, 0x5b, 0x24, 0x06, 0x9e, 0x36, 0x62, 0x4e, 0x5d, 0x09, - 0xc9, 0x60, 0xb8, 0xd4, 0xe9, 0x74, 0x70, 0xea, 0x9d, 0xbb, 0x9e, 0xff, 0x8b, 0x1b, 0xae, 0xf0, - 0x37, 0x2e, 0x34, 0x5c, 0x7f, 0x91, 0xa3, 0x8b, 0x39, 0x2e, 0x86, 0x35, 0x1a, 0x01, 0x6d, 0x91, - 0x68, 0x34, 0x24, 0x3f, 0x2d, 0x8d, 0x29, 0xae, 0xc2, 0x0a, 0x8d, 0xf5, 0xe6, 0x2b, 0xe3, 0x66, - 0x6a, 0x13, 0x28, 0xcf, 0xd1, 0x1e, 0x55, 0x5f, 0x68, 0x9c, 0xc1, 0xd4, 0xe0, 0xa2, 0xe8, 0x08, - 0x4a, 0x95, 0xa1, 0xeb, 0x78, 0xb3, 0xb1, 0x75, 0x31, 0xbb, 0xe1, 0x36, 0x7b, 0x97, 0xd5, 0x1e, - 0x15, 0x23, 0xf6, 0x46, 0xb2, 0x93, 0x8b, 0x15, 0x21, 0x2b, 0x70, 0x3d, 0xce, 0x91, 0x3b, 0xca, - 0xaf, 0x2c, 0xe8, 0x9f, 0x38, 0x91, 0xc8, 0x45, 0xfd, 0xea, 0x99, 0x6f, 0xb2, 0x0d, 0xeb, 0x0d, - 0x67, 0xea, 0x5b, 0x13, 0xc7, 0x9b, 0x12, 0x8c, 0xa8, 0x0b, 0x60, 0x68, 0xf0, 0x4c, 0xd6, 0xf4, - 0xee, 0xd2, 0x0f, 0x44, 0xe9, 0xdd, 0x65, 0xb4, 0x3a, 0xac, 0x2f, 0xd5, 0x06, 0x9e, 0x33, 0x1c, - 0x7c, 0xcc, 0x23, 0x34, 0xa8, 0xbe, 0x74, 0xc2, 0x89, 0x46, 0x58, 0xae, 0x7c, 0x3d, 0x31, 0x6e, - 0xb4, 0x95, 0x25, 0x58, 0x61, 0xf1, 0x7b, 0x34, 0x9e, 0xad, 0xa3, 0xb5, 0xaa, 0x7a, 0xeb, 0x40, - 0x96, 0xd0, 0x3a, 0x40, 0xc7, 0x68, 0x57, 0x34, 0xd3, 0xc4, 0xcf, 0x19, 0xfc, 0xcc, 0x82, 0xdd, - 0x6a, 0xdd, 0x86, 0x9c, 0x15, 0xe2, 0xdd, 0x72, 0xca, 0x8f, 0x25, 0xb8, 0x9a, 0x3e, 0x94, 0xc8, - 0x02, 0x12, 0xf1, 0xc8, 0x2c, 0xc8, 0x5f, 0x5d, 0x38, 0xee, 0xa9, 0xe4, 0x78, 0xe4, 0xa4, 0x4f, - 0x23, 0xf2, 0x32, 0xdc, 0x4c, 0x14, 0xe6, 0x60, 0x1e, 0xf4, 0x95, 0x0a, 0x6c, 0xcf, 0xab, 0x23, - 0xfa, 0xaa, 0x1b, 0x50, 0x52, 0x3b, 0x9d, 0x86, 0x5e, 0x51, 0x2d, 0xbd, 0xdd, 0x92, 0x25, 0x54, - 0x84, 0xe5, 0x03, 0xa3, 0xdd, 0xed, 0xc8, 0x19, 0xe5, 0x07, 0x12, 0xac, 0xe9, 0x9e, 0xef, 0x9e, - 0x52, 0x8f, 0xd7, 0xa7, 0x5d, 0x7c, 0x6f, 0x45, 0x16, 0xdf, 0x76, 0x10, 0x1b, 0x1c, 0xfc, 0xc0, - 0x85, 0x56, 0xde, 0x3f, 0x4a, 0xb0, 0x99, 0x90, 0x41, 0x26, 0xac, 0xa8, 0xc7, 0x66, 0x5b, 0xaf, - 0x56, 0x58, 0xcb, 0xb8, 0x56, 0xce, 0xa8, 0xc9, 0x5f, 0xa1, 0xf1, 0x34, 0x1f, 0x4d, 0xed, 0xd1, - 0xa0, 0x2f, 0x64, 0x12, 0xab, 0x2f, 0x19, 0xbc, 0x26, 0xf2, 0x25, 0xfb, 0x78, 0x36, 0x71, 0x49, - 0xb5, 0x99, 0xc8, 0x15, 0x68, 0x40, 0x4f, 0x56, 0x4c, 0x1c, 0x3c, 0x1d, 0x5c, 0x9e, 0xac, 0x3a, - 0xac, 0x6f, 0x7f, 0x0d, 0x4a, 0xec, 0xd4, 0x42, 0x0e, 0x04, 0xdf, 0x97, 0x60, 0x7b, 0x5e, 0x5b, - 0xf1, 0x41, 0x28, 0x1a, 0x5c, 0x77, 0x35, 0x40, 0x17, 0x8e, 0x46, 0xd5, 0x71, 0x36, 0xf4, 0x0e, - 0x94, 0x68, 0x62, 0x7b, 0xf3, 0x7e, 0xd7, 0xd0, 0xd9, 0x04, 0xb9, 0xf9, 0x1f, 0x9f, 0xde, 0xba, - 0x46, 0xd3, 0xe0, 0xdb, 0xd3, 0xfb, 0xf6, 0x6c, 0x32, 0x88, 0x20, 0xb1, 0x8a, 0x12, 0xca, 0x77, - 0x25, 0xb8, 0x3e, 0xff, 0x25, 0xf1, 0x57, 0xc6, 0xc2, 0xba, 0x79, 0x18, 0x9f, 0x44, 0xbe, 0x32, - 0x44, 0x5f, 0x8f, 0x05, 0x28, 0x05, 0x8c, 0x58, 0x28, 0xc8, 0xd2, 0x99, 0x49, 0xa4, 0xe6, 0x8b, - 0x0a, 0x71, 0x46, 0xe5, 0x3f, 0x33, 0x70, 0x15, 0x4f, 0xa0, 0xa1, 0x3b, 0x9d, 0xaa, 0x33, 0xff, - 0xcc, 0xf5, 0x7c, 0xa6, 0x52, 0xa1, 0x37, 0x20, 0x7f, 0x76, 0xb9, 0xeb, 0x43, 0xca, 0x8e, 0x10, - 0x90, 0x4d, 0x99, 0x3b, 0x88, 0xe2, 0xff, 0xd1, 0x0b, 0x20, 0x26, 0x43, 0xcc, 0x12, 0xfc, 0xab, - 0xcc, 0xb6, 0x64, 0x14, 0xc7, 0x41, 0xde, 0xb2, 0x37, 0x61, 0x99, 0x5c, 0x19, 0xb0, 0xed, 0x91, - 0xab, 0xb5, 0xe9, 0xad, 0x23, 0x17, 0x0a, 0x06, 0x15, 0x40, 0x5f, 0x06, 0x08, 0x91, 0x6c, 0xd9, - 0xfe, 0xc7, 0x8f, 0xd2, 0x01, 0x98, 0xad, 0x51, 0x3c, 0x3f, 0x71, 0x18, 0x3c, 0x6c, 0x19, 0x36, - 0x79, 0xb7, 0x8c, 0x39, 0x6c, 0x0e, 0xb3, 0x69, 0x6d, 0xd0, 0x02, 0x7d, 0xcc, 0xa1, 0x73, 0x6e, - 0x27, 0x12, 0xba, 0x11, 0xf4, 0xbc, 0x58, 0xd6, 0xb6, 0xdb, 0x89, 0xac, 0x6d, 0x05, 0xca, 0x25, - 0xa6, 0x66, 0x53, 0xfe, 0x2d, 0x03, 0xc5, 0x63, 0xac, 0x78, 0x90, 0xe3, 0xf4, 0xe2, 0xe3, 0xf9, - 0x6b, 0x50, 0x6a, 0x8c, 0x1c, 0x66, 0x3c, 0x98, 0x32, 0x14, 0x30, 0x12, 0xf4, 0x33, 0x1c, 0x39, - 0xdc, 0x0e, 0x31, 0x35, 0x44, 0xa6, 0x27, 0x04, 0x2c, 0x3d, 0x84, 0x3c, 0x35, 0xe6, 0xb0, 0x9b, - 0x22, 0xae, 0x7a, 0x06, 0x2d, 0x7a, 0x95, 0x16, 0x0b, 0xf7, 0xdd, 0xd4, 0x20, 0x24, 0xea, 0x41, - 0x0c, 0x04, 0x4c, 0xb8, 0x3c, 0x58, 0xbe, 0xd8, 0xe5, 0x81, 0x00, 0x76, 0x92, 0xbf, 0x08, 0xd8, - 0xc9, 0xf5, 0x07, 0x50, 0x12, 0xda, 0x73, 0x29, 0x4d, 0xf4, 0x0f, 0x32, 0xb0, 0x46, 0xde, 0x2a, - 0xf0, 0xec, 0xf8, 0xd5, 0xbc, 0x0a, 0x79, 0x2b, 0x72, 0x15, 0xb2, 0x2d, 0x8e, 0x17, 0x7d, 0xb3, - 0x05, 0x77, 0x20, 0x0f, 0x61, 0x33, 0xc1, 0x88, 0x5e, 0x87, 0x65, 0xdc, 0x7c, 0x7e, 0x74, 0x94, - 0xe3, 0x33, 0x20, 0x04, 0xc6, 0xc3, 0x2f, 0x3e, 0x35, 0x28, 0xb7, 0xf2, 0x3f, 0x12, 0xac, 0x32, - 0x98, 0x64, 0xef, 0x64, 0xf4, 0xc4, 0xee, 0xbc, 0x13, 0xef, 0x4e, 0x1a, 0x7e, 0xcb, 0xba, 0xf3, - 0xff, 0xba, 0x13, 0x1f, 0x44, 0x3a, 0xf1, 0x5a, 0x00, 0x93, 0xc3, 0x5f, 0x67, 0x41, 0x1f, 0xfe, - 0x03, 0x01, 0x8e, 0x8b, 0x32, 0xa2, 0x6f, 0x42, 0xb1, 0xe5, 0x7e, 0x14, 0x39, 0x81, 0xdd, 0x99, - 0x53, 0xe9, 0xab, 0x01, 0x23, 0x5d, 0x53, 0xe4, 0xe3, 0xe5, 0xb9, 0x1f, 0xd9, 0x09, 0x3b, 0x52, - 0x58, 0x25, 0x3e, 0x84, 0x45, 0xc5, 0x2e, 0x33, 0xf5, 0x59, 0x90, 0x07, 0x89, 0x28, 0xff, 0x5e, - 0x16, 0x20, 0xf4, 0x8f, 0xc7, 0x0b, 0x30, 0x62, 0x42, 0xe7, 0x97, 0xd7, 0x84, 0x24, 0xce, 0x71, - 0x6e, 0x59, 0xbf, 0xc3, 0x2e, 0x59, 0x33, 0xf3, 0x61, 0x8c, 0xc8, 0x75, 0x6b, 0x85, 0xf9, 0x9f, - 0xf7, 0xdd, 0xa1, 0x43, 0xf7, 0xf6, 0xec, 0xfe, 0x6d, 0x82, 0x5a, 0x17, 0x50, 0xe7, 0xe4, 0xbb, - 0x23, 0x5e, 0xea, 0x55, 0xcc, 0x90, 0x88, 0x39, 0xc9, 0x5d, 0x2e, 0xe6, 0xa4, 0x03, 0xc5, 0x81, - 0xf7, 0xa1, 0xeb, 0xf9, 0xa3, 0xc9, 0x63, 0x72, 0xb3, 0x1c, 0x5e, 0x59, 0xe1, 0x2e, 0xd0, 0x79, - 0x19, 0x1d, 0x07, 0xf2, 0x61, 0x0c, 0xf8, 0xc5, 0x61, 0x08, 0x88, 0x41, 0xcc, 0xcc, 0xb2, 0x9c, - 0x7f, 0x98, 0x2b, 0xe4, 0xe5, 0x95, 0x87, 0xb9, 0x42, 0x41, 0x2e, 0x3e, 0xcc, 0x15, 0x8a, 0x32, - 0x18, 0x82, 0xad, 0x26, 0xb0, 0xc5, 0x08, 0xe6, 0x93, 0xa8, 0x69, 0x44, 0xf9, 0x79, 0x06, 0x50, - 0xb2, 0x19, 0xe8, 0x2d, 0x28, 0xd1, 0x0d, 0xd6, 0x9e, 0x4c, 0xbf, 0xcd, 0xc2, 0x11, 0x68, 0x5c, - 0xbe, 0x40, 0x16, 0xe3, 0xf2, 0x29, 0xd9, 0x98, 0x7e, 0x7b, 0x88, 0xbe, 0x01, 0x57, 0x48, 0xf7, - 0x8e, 0xdd, 0xc9, 0x60, 0xd4, 0xb7, 0x09, 0x88, 0x9a, 0x33, 0x64, 0xb9, 0x69, 0x5e, 0x21, 0x49, - 0xd4, 0x92, 0xc5, 0x73, 0x86, 0x81, 0x78, 0xfd, 0x77, 0x08, 0x67, 0x87, 0x32, 0x22, 0x0b, 0x64, - 0x51, 0xfe, 0x64, 0x36, 0x1c, 0xb2, 0x91, 0x2d, 0xe3, 0x43, 0x6b, 0xbc, 0x6c, 0x4e, 0xc5, 0xeb, - 0x61, 0xc5, 0xb5, 0xd9, 0x70, 0x88, 0xde, 0x00, 0x18, 0x79, 0xf6, 0xf9, 0x60, 0x3a, 0xa5, 0xf6, - 0x8a, 0x20, 0x62, 0x27, 0xa4, 0x8a, 0x83, 0x31, 0xf2, 0x9a, 0x94, 0x88, 0x7e, 0x03, 0x48, 0x38, - 0x1f, 0x89, 0x73, 0xa5, 0xbe, 0x29, 0x0c, 0x6d, 0x9a, 0x13, 0xa3, 0x01, 0x42, 0xa7, 0xae, 0x39, - 0xf8, 0x98, 0xbb, 0x16, 0xbf, 0x07, 0x9b, 0xcc, 0x2b, 0xf4, 0x78, 0xe0, 0x9f, 0x31, 0x6d, 0xf9, - 0x69, 0x54, 0x6d, 0x41, 0x5d, 0xfe, 0xe7, 0x1c, 0x80, 0x7a, 0x6c, 0x72, 0x08, 0x89, 0x7b, 0xb0, - 0x8c, 0xcf, 0x00, 0xfc, 0x2e, 0x81, 0xdc, 0xc4, 0x92, 0x7a, 0xc5, 0x9b, 0x58, 0xc2, 0x81, 0x57, - 0xa3, 0xe1, 0x9e, 0x92, 0xeb, 0xac, 0x4c, 0x78, 0xf1, 0x30, 0xa1, 0xa4, 0x88, 0xce, 0x49, 0x49, - 0xa8, 0x01, 0x10, 0x82, 0x3a, 0xb0, 0x53, 0xe9, 0x66, 0x18, 0x1d, 0xcd, 0x0a, 0x18, 0x8c, 0x70, - 0x08, 0x0c, 0x21, 0x4e, 0x9f, 0x90, 0x0d, 0x1d, 0x42, 0xce, 0x72, 0x82, 0x78, 0x94, 0x39, 0x50, - 0x17, 0xcf, 0xb3, 0xdc, 0x41, 0x21, 0xdc, 0xc5, 0xba, 0xef, 0x44, 0x52, 0xac, 0x91, 0x4a, 0x90, - 0x06, 0x79, 0x96, 0x17, 0x72, 0x0e, 0x44, 0x12, 0x4b, 0x0b, 0xc9, 0x80, 0x11, 0x09, 0x51, 0xd4, - 0x29, 0x58, 0x06, 0xc8, 0xd7, 0x20, 0x6b, 0x9a, 0x4d, 0x16, 0xe0, 0xb9, 0x16, 0x9e, 0x30, 0x4c, - 0xb3, 0xc9, 0x93, 0x1e, 0x9f, 0x0b, 0x62, 0x98, 0x19, 0xfd, 0x26, 0x94, 0x04, 0xf5, 0x99, 0x85, - 0x46, 0x93, 0x3e, 0x18, 0x84, 0x64, 0x71, 0xd3, 0x10, 0xb8, 0x51, 0x03, 0xe4, 0xc3, 0xd9, 0x07, - 0xae, 0x3a, 0x1e, 0x93, 0x80, 0x89, 0x0f, 0xdd, 0x09, 0x55, 0xdb, 0x0a, 0x21, 0xa6, 0xa0, 0xed, - 0x8c, 0xc7, 0x76, 0x9f, 0x97, 0x8a, 0xf7, 0x29, 0x71, 0x49, 0xd4, 0x81, 0x4d, 0xd3, 0xf5, 0x67, - 0x63, 0xea, 0x6d, 0x51, 0x1b, 0x4d, 0xf0, 0x81, 0x82, 0x06, 0x52, 0x13, 0xf8, 0xb5, 0x29, 0x2e, - 0xe4, 0x2e, 0x2e, 0x27, 0xa3, 0x49, 0xec, 0x70, 0x91, 0x14, 0x56, 0x5c, 0x71, 0xc8, 0xf1, 0x57, - 0x35, 0x7a, 0x4c, 0x21, 0x5f, 0x55, 0x7e, 0x4c, 0x09, 0x0f, 0x27, 0x5f, 0x4e, 0x01, 0xfb, 0x20, - 0xc6, 0x2f, 0x01, 0xec, 0x23, 0x02, 0xf1, 0xf1, 0x49, 0x4e, 0xc0, 0x9b, 0x62, 0x63, 0xf1, 0x36, - 0xc0, 0xc3, 0xd1, 0xc0, 0x6b, 0xba, 0xfe, 0xd9, 0xa8, 0x2f, 0x60, 0x8e, 0x94, 0x7e, 0x77, 0x34, - 0xf0, 0xec, 0x73, 0x42, 0xfe, 0xf9, 0xa7, 0xb7, 0x04, 0x26, 0x43, 0xf8, 0x1f, 0x7d, 0x09, 0x8a, - 0xf8, 0xc9, 0x0a, 0x7d, 0x46, 0xe8, 0xb5, 0x23, 0x91, 0x66, 0xe9, 0xd3, 0x03, 0x06, 0xf4, 0x80, - 0xe0, 0x90, 0x0f, 0xc6, 0xbe, 0xa0, 0xbc, 0x72, 0xd0, 0xf1, 0xc1, 0xd8, 0x8f, 0x43, 0x08, 0x0a, - 0xcc, 0xa8, 0x1e, 0x34, 0x9d, 0x23, 0xd9, 0x33, 0xb8, 0x73, 0x72, 0xb7, 0xc6, 0xe6, 0x9a, 0xcd, - 0xb1, 0xcb, 0xc4, 0x9c, 0x63, 0x31, 0x31, 0xd2, 0x08, 0xb3, 0x5e, 0xa5, 0xc6, 0x10, 0xa6, 0xd4, - 0xf2, 0xa4, 0xcd, 0x7d, 0xbb, 0x47, 0xc8, 0x91, 0x46, 0x04, 0xcc, 0x68, 0x1f, 0x36, 0xa8, 0x8e, - 0x1f, 0x64, 0xc4, 0x61, 0x2a, 0x2e, 0xd9, 0xdb, 0xc2, 0x94, 0x39, 0xe2, 0xcf, 0xc7, 0x04, 0x50, - 0x0d, 0x96, 0xc9, 0x81, 0x90, 0xf9, 0x7c, 0xdf, 0x10, 0x4f, 0xc2, 0xf1, 0x75, 0x44, 0xf6, 0x15, - 0x72, 0x06, 0x16, 0xf7, 0x15, 0xc2, 0x8a, 0xbe, 0x06, 0xa0, 0x79, 0x93, 0xd1, 0x70, 0x48, 0xd0, - 0xf5, 0x0a, 0xe4, 0x28, 0x75, 0x33, 0xba, 0x1e, 0x49, 0x2d, 0x21, 0x13, 0x43, 0x82, 0x21, 0xcf, - 0x76, 0x0c, 0x83, 0x4f, 0xa8, 0x4b, 0xd1, 0x21, 0x4f, 0x17, 0x23, 0x41, 0xaa, 0x64, 0xd8, 0xdb, - 0x02, 0xce, 0x21, 0x45, 0xaa, 0x64, 0xf4, 0x24, 0x52, 0xa5, 0x20, 0xa0, 0x1c, 0xc2, 0x56, 0xda, - 0x8b, 0x45, 0x8e, 0xb0, 0xd2, 0x45, 0x8f, 0xb0, 0x7f, 0x93, 0x85, 0x55, 0x52, 0x1b, 0xdf, 0x85, - 0x55, 0x58, 0x33, 0x67, 0x1f, 0x04, 0x30, 0x0e, 0x7c, 0x37, 0x26, 0xed, 0x9b, 0x8a, 0x05, 0xa2, - 0x99, 0x2a, 0x22, 0x81, 0x34, 0x58, 0xe7, 0x5f, 0x82, 0x03, 0xee, 0x47, 0x1e, 0x80, 0x44, 0x72, - 0x28, 0xa2, 0x64, 0x46, 0xb0, 0x98, 0x50, 0xf8, 0x3d, 0xc8, 0x5e, 0xe6, 0x7b, 0x90, 0xbb, 0xd0, - 0xf7, 0xe0, 0x7d, 0x58, 0xe5, 0xbf, 0x46, 0x76, 0xf2, 0xe5, 0xa7, 0xdb, 0xc9, 0x23, 0x95, 0xa1, - 0x46, 0xb0, 0xa3, 0xe7, 0x17, 0xee, 0xe8, 0xc4, 0xf6, 0xc7, 0x57, 0x59, 0x22, 0xc9, 0x2f, 0xab, - 0x83, 0xa4, 0xcc, 0x39, 0xa8, 0x74, 0x3e, 0xc7, 0x57, 0xf2, 0x75, 0x28, 0x36, 0x46, 0xdc, 0xec, - 0x23, 0xdc, 0xb7, 0x0f, 0x39, 0x51, 0x54, 0x17, 0x02, 0xce, 0xe0, 0xeb, 0x96, 0x7d, 0x16, 0x5f, - 0xb7, 0x07, 0x00, 0x2c, 0x40, 0x21, 0x4c, 0x75, 0x41, 0x96, 0x0c, 0x8f, 0xd2, 0x8d, 0x5e, 0xfb, - 0x0b, 0xcc, 0x78, 0x77, 0x62, 0x1e, 0x25, 0x6a, 0xaf, 0x37, 0x9a, 0x79, 0x7e, 0x24, 0x37, 0x1c, - 0x0b, 0xd8, 0xc7, 0x9f, 0x04, 0x52, 0x26, 0x6e, 0x0f, 0x31, 0xb1, 0x67, 0x3b, 0x20, 0xe8, 0xdd, - 0xc0, 0x15, 0x6e, 0x61, 0xaa, 0x6c, 0x25, 0xd1, 0x43, 0x73, 0x1d, 0xe0, 0x94, 0x1f, 0x4b, 0x22, - 0x42, 0xef, 0xe7, 0x18, 0xea, 0x37, 0x01, 0x02, 0xbb, 0x3b, 0x1f, 0x6b, 0x7a, 0x5e, 0x0a, 0xa8, - 0x62, 0x2f, 0x87, 0xbc, 0xc2, 0xdb, 0x64, 0x9f, 0xd5, 0xdb, 0x58, 0x50, 0x6a, 0x7f, 0xcb, 0x77, - 0x42, 0x47, 0x0d, 0x30, 0x03, 0x4d, 0x96, 0xec, 0x4c, 0x3c, 0xa5, 0x77, 0xa8, 0x07, 0xcf, 0x4d, - 0xe9, 0x1d, 0x08, 0x2a, 0xef, 0xc2, 0x86, 0x18, 0x2f, 0xf8, 0xd8, 0xeb, 0xa1, 0xdf, 0xa6, 0x78, - 0x61, 0x52, 0xe4, 0xc4, 0x22, 0x30, 0xe1, 0x1d, 0xf7, 0xb1, 0xd7, 0xa3, 0xfa, 0x8f, 0xf3, 0x91, - 0xd8, 0x56, 0x72, 0xc6, 0xfb, 0xa9, 0x04, 0x28, 0xc9, 0x2e, 0xee, 0x26, 0xd2, 0xff, 0x83, 0x76, - 0x19, 0xd3, 0xca, 0x72, 0x97, 0xd1, 0xca, 0xca, 0x7f, 0x26, 0xc1, 0x86, 0xae, 0x36, 0x19, 0x9c, - 0x2e, 0xb5, 0x1f, 0xbc, 0x00, 0x37, 0x75, 0xb5, 0x69, 0x77, 0xda, 0x0d, 0xbd, 0xf2, 0xc8, 0x4e, - 0x45, 0xc9, 0xbb, 0x09, 0x5f, 0x48, 0xb2, 0x84, 0x76, 0x86, 0x1d, 0xd8, 0x4e, 0x16, 0x73, 0x24, - 0xbd, 0x74, 0x61, 0x0e, 0xba, 0x97, 0x2d, 0xbf, 0x03, 0x1b, 0x1c, 0x35, 0xce, 0x6a, 0x98, 0x04, - 0x97, 0x76, 0x03, 0x4a, 0x47, 0x9a, 0xa1, 0xd7, 0x1e, 0xd9, 0xb5, 0x6e, 0xa3, 0x21, 0x2f, 0xa1, - 0x35, 0x28, 0x32, 0x42, 0x45, 0x95, 0x25, 0xb4, 0x0a, 0x05, 0xbd, 0x65, 0x6a, 0x95, 0xae, 0xa1, - 0xc9, 0x99, 0xf2, 0x3b, 0xb0, 0xde, 0x99, 0x0c, 0x3e, 0x74, 0x7c, 0xf7, 0xd0, 0x7d, 0x4c, 0xcc, - 0x04, 0x2b, 0x90, 0x35, 0xd4, 0x63, 0x79, 0x09, 0x01, 0xe4, 0x3b, 0x87, 0x15, 0x73, 0x6f, 0x4f, - 0x96, 0x50, 0x09, 0x56, 0x0e, 0x2a, 0x1d, 0xfb, 0xb0, 0x69, 0xca, 0x19, 0xfc, 0xa0, 0x1e, 0x9b, - 0xe4, 0x21, 0x5b, 0xfe, 0x0a, 0x6c, 0x12, 0x5d, 0xa1, 0x31, 0x98, 0xfa, 0xae, 0xe7, 0x4e, 0x48, - 0x1b, 0x56, 0xa1, 0x60, 0xba, 0x78, 0x91, 0xfb, 0x2e, 0x6d, 0x40, 0x73, 0x36, 0xf4, 0x07, 0xe3, - 0xa1, 0xfb, 0x1d, 0x59, 0x2a, 0x3f, 0x80, 0x0d, 0x63, 0x34, 0xf3, 0x07, 0xde, 0xa9, 0xe9, 0x63, - 0x8e, 0xd3, 0xc7, 0xe8, 0x39, 0xd8, 0xec, 0xb6, 0xd4, 0xe6, 0xbe, 0x7e, 0xd0, 0x6d, 0x77, 0x4d, - 0xbb, 0xa9, 0x5a, 0x95, 0x3a, 0x35, 0x52, 0x34, 0xdb, 0xa6, 0x65, 0x1b, 0x5a, 0x45, 0x6b, 0x59, - 0xb2, 0x54, 0xfe, 0x23, 0x09, 0xd6, 0xbb, 0x53, 0xe6, 0x89, 0xdb, 0x25, 0xf1, 0x74, 0xcf, 0xc3, - 0x4e, 0xd7, 0xd4, 0x0c, 0xdb, 0x6a, 0x1f, 0x6a, 0x2d, 0xbb, 0x6b, 0xaa, 0x07, 0x71, 0x88, 0xc6, - 0x5b, 0x70, 0x43, 0xe0, 0x30, 0xb4, 0x4a, 0xfb, 0x48, 0x33, 0xec, 0x8e, 0x6a, 0x9a, 0xc7, 0x6d, - 0xa3, 0x2a, 0x4b, 0xe8, 0x3a, 0x5c, 0x4d, 0x61, 0x68, 0xd6, 0x54, 0x39, 0x93, 0x28, 0x6b, 0x69, - 0xc7, 0x6a, 0xc3, 0xde, 0x6f, 0x5b, 0x72, 0xb6, 0xdc, 0xc4, 0x1f, 0x3a, 0x02, 0x4d, 0x46, 0xbd, - 0xc8, 0x0a, 0x90, 0x6b, 0xb5, 0x5b, 0x5a, 0xdc, 0x90, 0xb4, 0x0a, 0x05, 0xb5, 0xd3, 0x31, 0xda, - 0x47, 0x64, 0x40, 0x01, 0xf2, 0x55, 0xad, 0x85, 0x5b, 0x96, 0xc5, 0x25, 0x1d, 0xa3, 0xdd, 0x6c, - 0x5b, 0x5a, 0x55, 0xce, 0x95, 0x0d, 0xbe, 0x60, 0x78, 0xa5, 0xbd, 0x11, 0xb5, 0xda, 0x54, 0xb5, - 0x9a, 0xda, 0x6d, 0x58, 0xac, 0x43, 0x1e, 0xd9, 0x86, 0xf6, 0x6e, 0x57, 0x33, 0x2d, 0x53, 0x96, - 0x90, 0x0c, 0xab, 0x2d, 0x4d, 0xab, 0x9a, 0xb6, 0xa1, 0x1d, 0xe9, 0xda, 0xb1, 0x9c, 0xc1, 0x75, - 0xd2, 0xff, 0xf1, 0x2f, 0x94, 0x3f, 0x91, 0x00, 0x51, 0x58, 0x37, 0x8e, 0x15, 0x4e, 0xc6, 0x67, - 0x17, 0xae, 0xd7, 0x71, 0xc7, 0x92, 0x57, 0x6b, 0xb6, 0xab, 0xf1, 0x2e, 0xbb, 0x0a, 0x28, 0x56, - 0xde, 0xae, 0xd5, 0x64, 0x09, 0xdd, 0x80, 0x2b, 0x31, 0x7a, 0xd5, 0x68, 0x77, 0xe4, 0xcc, 0xf5, - 0x4c, 0x41, 0x42, 0xd7, 0x12, 0x85, 0x87, 0x9a, 0xd6, 0x91, 0xb3, 0x78, 0x88, 0x62, 0x05, 0x7c, - 0x02, 0x52, 0xf1, 0x5c, 0xf9, 0xbb, 0x12, 0x5c, 0xa5, 0xcd, 0xe4, 0xb3, 0x39, 0x68, 0xea, 0x0e, - 0x6c, 0x33, 0xb0, 0xca, 0xb4, 0x86, 0x6e, 0x81, 0x1c, 0x29, 0xa5, 0xcd, 0x7c, 0x0e, 0x36, 0x23, - 0x54, 0xd2, 0x8e, 0x0c, 0x5e, 0xab, 0x11, 0xf2, 0xbe, 0x66, 0x5a, 0xb6, 0x56, 0xab, 0xb5, 0x0d, - 0x8b, 0x36, 0x24, 0x5b, 0x56, 0x60, 0xb3, 0xe2, 0x4e, 0x7c, 0x7c, 0x06, 0xf1, 0xa6, 0x83, 0x91, - 0x47, 0x9a, 0xb0, 0x06, 0x45, 0xed, 0x6b, 0x96, 0xd6, 0x32, 0xf5, 0x76, 0x4b, 0x5e, 0x2a, 0xef, - 0xc4, 0x78, 0xf8, 0xaa, 0x31, 0xcd, 0xba, 0xbc, 0x54, 0x76, 0x60, 0x8d, 0x7b, 0xbe, 0xd2, 0x59, - 0xb1, 0x0b, 0xd7, 0xf9, 0x5c, 0x23, 0xeb, 0x37, 0xfe, 0x0a, 0xdb, 0xb0, 0x95, 0x2c, 0xd7, 0x2c, - 0x59, 0xc2, 0xa3, 0x10, 0x2b, 0xc1, 0xf4, 0x4c, 0xf9, 0xaf, 0x25, 0xd8, 0x66, 0x59, 0x39, 0x99, - 0x05, 0x81, 0xe2, 0x63, 0x13, 0x00, 0xb9, 0x32, 0xdc, 0xb1, 0x8c, 0xae, 0x69, 0x69, 0x55, 0xbb, - 0xaa, 0x1d, 0xe9, 0x15, 0x8d, 0x4c, 0x17, 0xdd, 0xd0, 0x9a, 0x5a, 0xcb, 0x8a, 0xfd, 0xf4, 0xcb, - 0xf0, 0xc5, 0x05, 0xbc, 0xad, 0xb6, 0xc5, 0x9f, 0xf1, 0x2a, 0xf9, 0x22, 0xbc, 0xb8, 0x80, 0x39, - 0x60, 0xcc, 0x94, 0xbf, 0x0e, 0xab, 0x91, 0x9c, 0x1f, 0xd7, 0xe0, 0x8a, 0xf8, 0xdc, 0x71, 0xbd, - 0xfe, 0xc0, 0x3b, 0x95, 0x97, 0xe2, 0x05, 0xc6, 0xcc, 0xf3, 0x70, 0x01, 0x59, 0x90, 0x62, 0x81, - 0xe5, 0x4e, 0xce, 0x07, 0x9e, 0xe3, 0xbb, 0x7d, 0x39, 0x53, 0x7e, 0x15, 0xd6, 0x22, 0x48, 0x83, - 0xb8, 0xe7, 0x1b, 0x6d, 0xb6, 0x5f, 0x35, 0xb5, 0xaa, 0xde, 0x6d, 0xca, 0xcb, 0x78, 0x29, 0xd6, - 0xf5, 0x83, 0xba, 0x0c, 0xe5, 0x1f, 0x48, 0x58, 0x63, 0x26, 0xfd, 0xd3, 0xac, 0xa9, 0x7c, 0xac, - 0xf0, 0x3c, 0xa1, 0xf8, 0xa5, 0x9a, 0x69, 0x52, 0x03, 0xe8, 0x0e, 0x6c, 0xb3, 0x07, 0x5b, 0x6d, - 0x55, 0xed, 0xba, 0x6a, 0x54, 0x8f, 0x55, 0x03, 0x4f, 0x9e, 0x47, 0x72, 0x86, 0xac, 0x08, 0x81, - 0x62, 0x5b, 0xed, 0x6e, 0xa5, 0x2e, 0x67, 0xf1, 0x04, 0x8c, 0xd0, 0x3b, 0x7a, 0x4b, 0xce, 0x91, - 0xf5, 0x95, 0xe0, 0x26, 0xd5, 0xe2, 0xf2, 0xe5, 0xf2, 0x67, 0x12, 0x5c, 0x33, 0x07, 0xa7, 0x9e, - 0xe3, 0xcf, 0x26, 0xae, 0x3a, 0x3c, 0x1d, 0x4d, 0x06, 0xfe, 0xd9, 0xb9, 0x39, 0x1b, 0xf8, 0x2e, - 0xba, 0x07, 0x2f, 0x99, 0xfa, 0x41, 0x4b, 0xb5, 0xf0, 0xfa, 0x50, 0x1b, 0x07, 0x6d, 0x43, 0xb7, - 0xea, 0x4d, 0xdb, 0xec, 0xea, 0x89, 0xa9, 0x73, 0x1b, 0x9e, 0x9f, 0xcf, 0xda, 0xd0, 0x0e, 0xd4, - 0xca, 0x23, 0x59, 0x5a, 0x5c, 0xe1, 0xbe, 0xda, 0x50, 0x5b, 0x15, 0xad, 0x6a, 0x1f, 0xed, 0xc9, - 0x19, 0xf4, 0x12, 0xbc, 0x30, 0x9f, 0xb5, 0xa6, 0x77, 0x4c, 0xcc, 0x96, 0x5d, 0xfc, 0xbb, 0x75, - 0xb3, 0x89, 0xb9, 0x72, 0xe5, 0x01, 0xc8, 0xf1, 0x40, 0xe9, 0x84, 0xb9, 0xdd, 0xe8, 0xb6, 0x5a, - 0x74, 0x97, 0xdc, 0x80, 0x52, 0xdb, 0xaa, 0x6b, 0x06, 0x83, 0xd1, 0x25, 0xb8, 0xb9, 0xdd, 0x96, - 0xda, 0xb5, 0xea, 0x6d, 0x43, 0x7f, 0x8f, 0x6c, 0x97, 0xdb, 0xb0, 0x65, 0x36, 0xd4, 0xca, 0x21, - 0x99, 0x99, 0x7a, 0xcb, 0xae, 0xd4, 0xd5, 0x56, 0x4b, 0x6b, 0xc8, 0x50, 0xfe, 0x2b, 0x89, 0xda, - 0xbd, 0xd3, 0x22, 0xaa, 0xd0, 0x97, 0xe0, 0x6e, 0xfb, 0xd0, 0x52, 0xed, 0x4e, 0xa3, 0x7b, 0xa0, - 0xb7, 0x6c, 0xf3, 0x51, 0xab, 0xc2, 0x3f, 0xa4, 0x95, 0xe4, 0x8e, 0x72, 0x17, 0x6e, 0x2f, 0xe4, - 0x0e, 0x01, 0x6f, 0xef, 0x80, 0xb2, 0x90, 0x93, 0xbd, 0x48, 0xf9, 0x27, 0x12, 0xdc, 0x58, 0x60, - 0x2b, 0x44, 0xaf, 0xc0, 0xbd, 0xba, 0xa6, 0x56, 0x1b, 0x9a, 0x69, 0xda, 0xf8, 0x7d, 0xb5, 0x96, - 0xc5, 0xcc, 0xf2, 0xa9, 0xfb, 0xc5, 0x3d, 0x78, 0x69, 0x31, 0x7b, 0xf8, 0xe5, 0xb9, 0x0b, 0xb7, - 0x17, 0xb3, 0xb2, 0x2f, 0x51, 0x06, 0xef, 0x1a, 0x8b, 0x39, 0x83, 0x2f, 0x58, 0xb6, 0xfc, 0x7d, - 0x09, 0xae, 0xa6, 0x1f, 0xd8, 0x71, 0xdb, 0xf4, 0x96, 0x69, 0xa9, 0x8d, 0x86, 0xdd, 0x51, 0x0d, - 0xb5, 0x69, 0x6b, 0x2d, 0xa3, 0xdd, 0x68, 0xa4, 0xed, 0xdc, 0xb7, 0xe1, 0xf9, 0xf9, 0xac, 0x66, - 0xc5, 0xd0, 0x3b, 0x78, 0x0b, 0x54, 0x60, 0x77, 0x3e, 0x97, 0xa6, 0x57, 0x34, 0x39, 0xb3, 0xff, - 0xf6, 0x8f, 0xfe, 0x75, 0x77, 0xe9, 0x47, 0x9f, 0xed, 0x4a, 0x3f, 0xfd, 0x6c, 0x57, 0xfa, 0x97, - 0xcf, 0x76, 0xa5, 0xf7, 0x5e, 0xbe, 0x44, 0x4a, 0xf1, 0x0f, 0xf2, 0xc4, 0x0f, 0xe5, 0xfe, 0xff, - 0x06, 0x00, 0x00, 0xff, 0xff, 0xb8, 0xca, 0x29, 0x74, 0x45, 0x9e, 0x01, 0x00, + 0x76, 0x20, 0x06, 0x77, 0x55, 0xe1, 0x51, 0x38, 0x78, 0x15, 0x2e, 0x40, 0x12, 0x44, 0x93, 0x2c, + 0x76, 0xb2, 0x9b, 0x4d, 0xf6, 0x83, 0x1c, 0x82, 0xd3, 0x9c, 0xe9, 0xe9, 0xd7, 0x14, 0x50, 0x20, + 0x51, 0x24, 0x08, 0x60, 0xb2, 0x40, 0x72, 0x5a, 0xf3, 0xc8, 0x49, 0x54, 0x5d, 0x00, 0xd9, 0xac, + 0xaa, 0xac, 0xc9, 0xcc, 0x22, 0x08, 0x49, 0xfb, 0xad, 0x9e, 0xab, 0x4f, 0x5e, 0xeb, 0x2d, 0x59, + 0x5a, 0x87, 0x56, 0xa1, 0x90, 0x77, 0x6d, 0x79, 0x1d, 0xab, 0xb0, 0x25, 0x2b, 0xbc, 0x0e, 0x85, + 0xb5, 0x92, 0x43, 0x96, 0x15, 0xf2, 0xc6, 0x5a, 0x11, 0xde, 0xb5, 0xc3, 0x63, 0x05, 0x64, 0x59, + 0xfb, 0xc3, 0x81, 0x08, 0x47, 0x48, 0xde, 0x08, 0x3f, 0xc6, 0xa1, 0xb5, 0xe3, 0x9e, 0xfb, 0xc8, + 0x7b, 0xb3, 0xb2, 0x0a, 0x85, 0x6e, 0xf6, 0xae, 0x38, 0xa1, 0x3f, 0x24, 0xea, 0xdc, 0x73, 0xce, + 0x7d, 0xe6, 0xbd, 0xe7, 0xdc, 0x7b, 0x1e, 0xf0, 0x52, 0x44, 0x1b, 0xb4, 0xed, 0x07, 0xd1, 0xf5, + 0x06, 0xdd, 0x75, 0x6b, 0x07, 0xd7, 0xa3, 0x83, 0x36, 0x0d, 0xf9, 0xbf, 0xd7, 0xda, 0x81, 0x1f, + 0xf9, 0x64, 0x18, 0x7f, 0x2c, 0xcc, 0xed, 0xfa, 0xbb, 0x3e, 0x42, 0xae, 0xb3, 0xbf, 0x78, 0xe1, + 0xc2, 0x85, 0x5d, 0xdf, 0xdf, 0x6d, 0xd0, 0xeb, 0xf8, 0x6b, 0xbb, 0xb3, 0x73, 0xbd, 0xde, 0x09, + 0xdc, 0xc8, 0xf3, 0x5b, 0xa2, 0xbc, 0x98, 0x2c, 0x8f, 0xbc, 0x26, 0x0d, 0x23, 0xb7, 0xd9, 0xee, + 0xc5, 0x60, 0x3f, 0x70, 0xdb, 0x6d, 0x1a, 0x88, 0xda, 0x17, 0xae, 0xaa, 0x06, 0xba, 0x51, 0xc4, + 0x28, 0x19, 0xf3, 0xeb, 0x4f, 0x6e, 0xe8, 0x3f, 0x05, 0xea, 0x9b, 0xe9, 0x7d, 0x91, 0x0c, 0x13, + 0x9c, 0xad, 0x5f, 0xca, 0xc1, 0xd8, 0x3d, 0x4a, 0xdb, 0xa5, 0x86, 0xf7, 0x84, 0x92, 0x4b, 0x30, + 0xb4, 0xee, 0x36, 0xe9, 0x7c, 0xe6, 0x62, 0xe6, 0xca, 0xd8, 0xd2, 0xf4, 0xd1, 0x61, 0x71, 0x3c, + 0xa4, 0xc1, 0x13, 0x1a, 0x38, 0x2d, 0xb7, 0x49, 0x6d, 0x2c, 0x24, 0xaf, 0xc3, 0x18, 0xfb, 0x3f, + 0x6c, 0xbb, 0x35, 0x3a, 0x9f, 0x45, 0xcc, 0xc9, 0xa3, 0xc3, 0xe2, 0x58, 0x4b, 0x02, 0xed, 0xb8, + 0x9c, 0x54, 0x60, 0x74, 0xe5, 0x69, 0xdb, 0x0b, 0x68, 0x38, 0x3f, 0x74, 0x31, 0x73, 0x65, 0x7c, + 0x71, 0xe1, 0x1a, 0xef, 0xeb, 0x35, 0xd9, 0xd7, 0x6b, 0x5b, 0x72, 0x30, 0x96, 0x66, 0xff, 0xe0, + 0xb0, 0xf8, 0xc2, 0xd1, 0x61, 0x71, 0x94, 0x72, 0x92, 0x9f, 0xfc, 0x93, 0x62, 0xc6, 0x96, 0xf4, + 0xe4, 0x5d, 0x18, 0xda, 0x3a, 0x68, 0xd3, 0xf9, 0xb1, 0x8b, 0x99, 0x2b, 0x53, 0x8b, 0x17, 0xae, + 0xf1, 0xe9, 0x51, 0x8d, 0x8f, 0xff, 0x62, 0x58, 0x4b, 0xf9, 0xa3, 0xc3, 0xe2, 0x10, 0x43, 0xb1, + 0x91, 0x8a, 0xbc, 0x09, 0x23, 0xab, 0x7e, 0x18, 0x55, 0xca, 0xf3, 0x80, 0x4d, 0x3e, 0x75, 0x74, + 0x58, 0x9c, 0xd9, 0xf3, 0xc3, 0xc8, 0xf1, 0xea, 0x6f, 0xf8, 0x4d, 0x2f, 0xa2, 0xcd, 0x76, 0x74, + 0x60, 0x0b, 0x24, 0xeb, 0x29, 0x4c, 0x1a, 0xfc, 0xc8, 0x38, 0x8c, 0x3e, 0x58, 0xbf, 0xb7, 0xbe, + 0xf1, 0x68, 0xbd, 0xf0, 0x02, 0xc9, 0xc3, 0xd0, 0xfa, 0x46, 0x79, 0xa5, 0x90, 0x21, 0xa3, 0x90, + 0x2b, 0x6d, 0x6e, 0x16, 0xb2, 0x64, 0x02, 0xf2, 0xe5, 0xd2, 0x56, 0x69, 0xa9, 0x54, 0x5d, 0x29, + 0xe4, 0xc8, 0x2c, 0x4c, 0x3f, 0xaa, 0xac, 0x97, 0x37, 0x1e, 0x55, 0x9d, 0xf2, 0x4a, 0xf5, 0xde, + 0xd6, 0xc6, 0x66, 0x61, 0x88, 0x4c, 0x01, 0xdc, 0x7b, 0xb0, 0xb4, 0x62, 0xaf, 0xaf, 0x6c, 0xad, + 0x54, 0x0b, 0xc3, 0x64, 0x0e, 0x0a, 0x92, 0xc4, 0xa9, 0xae, 0xd8, 0x0f, 0x2b, 0xcb, 0x2b, 0x85, + 0x91, 0xbb, 0x43, 0xf9, 0x5c, 0x61, 0xc8, 0x1e, 0x5d, 0xa3, 0x6e, 0x48, 0x2b, 0x65, 0xeb, 0xdf, + 0xcb, 0x41, 0xfe, 0x3e, 0x8d, 0xdc, 0xba, 0x1b, 0xb9, 0xe4, 0x9c, 0x31, 0x3f, 0xd8, 0x45, 0x6d, + 0x62, 0x2e, 0x75, 0x4f, 0xcc, 0xf0, 0xd1, 0x61, 0x31, 0xf3, 0xa6, 0x3e, 0x21, 0xef, 0xc0, 0x78, + 0x99, 0x86, 0xb5, 0xc0, 0x6b, 0xb3, 0x45, 0x33, 0x9f, 0x43, 0xb4, 0xb3, 0x47, 0x87, 0xc5, 0x53, + 0xf5, 0x18, 0xac, 0x0d, 0x88, 0x8e, 0x4d, 0x2a, 0x30, 0xb2, 0xe6, 0x6e, 0xd3, 0x46, 0x38, 0x3f, + 0x7c, 0x31, 0x77, 0x65, 0x7c, 0xf1, 0x45, 0x31, 0x09, 0xb2, 0x81, 0xd7, 0x78, 0xe9, 0x4a, 0x2b, + 0x0a, 0x0e, 0x96, 0xe6, 0x8e, 0x0e, 0x8b, 0x85, 0x06, 0x02, 0xf4, 0x01, 0xe6, 0x28, 0xa4, 0x1a, + 0x2f, 0x8c, 0x91, 0x63, 0x17, 0xc6, 0xf9, 0x3f, 0x38, 0x2c, 0x66, 0xd8, 0x84, 0x89, 0x85, 0x11, + 0xf3, 0x33, 0x97, 0xc8, 0x22, 0xe4, 0x6d, 0xfa, 0xc4, 0x0b, 0x59, 0xcf, 0xf2, 0xd8, 0xb3, 0xd3, + 0x47, 0x87, 0x45, 0x12, 0x08, 0x98, 0xd6, 0x0c, 0x85, 0xb7, 0xf0, 0x36, 0x8c, 0x6b, 0xad, 0x26, + 0x05, 0xc8, 0x3d, 0xa6, 0x07, 0x7c, 0x84, 0x6d, 0xf6, 0x27, 0x99, 0x83, 0xe1, 0x27, 0x6e, 0xa3, + 0x23, 0x86, 0xd4, 0xe6, 0x3f, 0xbe, 0x90, 0xfd, 0x7c, 0xe6, 0xee, 0x50, 0x7e, 0xb4, 0x90, 0xb7, + 0xb3, 0x95, 0xb2, 0xf5, 0xd3, 0x43, 0x90, 0xb7, 0x7d, 0xfe, 0x21, 0x92, 0xab, 0x30, 0x5c, 0x8d, + 0xdc, 0x48, 0x4e, 0xd3, 0xec, 0xd1, 0x61, 0x71, 0x9a, 0x7d, 0xa4, 0x54, 0xab, 0x9f, 0x63, 0x30, + 0xd4, 0xcd, 0x3d, 0x37, 0x94, 0xd3, 0x85, 0xa8, 0x6d, 0x06, 0xd0, 0x51, 0x11, 0x83, 0x5c, 0x86, + 0xa1, 0xfb, 0x7e, 0x9d, 0x8a, 0x19, 0x23, 0x47, 0x87, 0xc5, 0xa9, 0xa6, 0x5f, 0xd7, 0x11, 0xb1, + 0x9c, 0xbc, 0x01, 0x63, 0xcb, 0x9d, 0x20, 0xa0, 0x2d, 0xb6, 0xd6, 0x87, 0x10, 0x79, 0xea, 0xe8, + 0xb0, 0x08, 0x35, 0x0e, 0x74, 0xbc, 0xba, 0x1d, 0x23, 0xb0, 0x69, 0xa8, 0x46, 0x6e, 0x10, 0xd1, + 0xfa, 0xfc, 0xf0, 0x40, 0xd3, 0xc0, 0xbe, 0xcf, 0x99, 0x90, 0x93, 0x24, 0xa7, 0x41, 0x70, 0x22, + 0xab, 0x30, 0x7e, 0x27, 0x70, 0x6b, 0x74, 0x93, 0x06, 0x9e, 0x5f, 0xc7, 0xf9, 0xcd, 0x2d, 0x5d, + 0x3e, 0x3a, 0x2c, 0x9e, 0xde, 0x65, 0x60, 0xa7, 0x8d, 0xf0, 0x98, 0xfa, 0xdb, 0x87, 0xc5, 0x7c, + 0x59, 0x6c, 0x99, 0xb6, 0x4e, 0x4a, 0xbe, 0xc1, 0x26, 0x27, 0x8c, 0x70, 0x68, 0x69, 0x7d, 0x7e, + 0xf4, 0xd8, 0x26, 0x5a, 0xa2, 0x89, 0xa7, 0x1b, 0x6e, 0x18, 0x39, 0x01, 0xa7, 0x4b, 0xb4, 0x53, + 0x67, 0x49, 0x36, 0x20, 0x5f, 0xad, 0xed, 0xd1, 0x7a, 0xa7, 0x41, 0x71, 0xc9, 0x8c, 0x2f, 0x9e, + 0x11, 0x8b, 0x5a, 0xce, 0xa7, 0x2c, 0x5e, 0x5a, 0x10, 0xbc, 0x49, 0x28, 0x20, 0xfa, 0x7a, 0x92, + 0x58, 0x5f, 0xc8, 0xff, 0xc2, 0x2f, 0x17, 0x5f, 0xf8, 0xbe, 0x3f, 0xbe, 0xf8, 0x82, 0xf5, 0x9f, + 0x65, 0xa1, 0x90, 0x64, 0x42, 0x76, 0x60, 0xf2, 0x41, 0xbb, 0xee, 0x46, 0x74, 0xb9, 0xe1, 0xd1, + 0x56, 0x14, 0xe2, 0x22, 0xe9, 0xdf, 0xa7, 0x97, 0x45, 0xbd, 0xf3, 0x1d, 0x24, 0x74, 0x6a, 0x9c, + 0x32, 0xd1, 0x2b, 0x93, 0x6d, 0x5c, 0x4f, 0x15, 0x37, 0xf0, 0x10, 0x57, 0xd8, 0xc9, 0xea, 0xe1, + 0x5b, 0x7f, 0x8f, 0x7a, 0x04, 0x5b, 0xb1, 0x80, 0x5a, 0xf5, 0xed, 0x03, 0x5c, 0x99, 0x83, 0x2f, + 0x20, 0x46, 0x92, 0xb2, 0x80, 0x18, 0xd8, 0xfa, 0x17, 0x19, 0x98, 0xb2, 0x69, 0xe8, 0x77, 0x82, + 0x1a, 0x5d, 0xa5, 0x6e, 0x9d, 0x06, 0x6c, 0xf9, 0xdf, 0xf3, 0x5a, 0x75, 0xf1, 0x4d, 0xe1, 0xf2, + 0x7f, 0xec, 0xb5, 0xf4, 0xad, 0x1b, 0xcb, 0xc9, 0x67, 0x60, 0xb4, 0xda, 0xd9, 0x46, 0xd4, 0x6c, + 0xbc, 0x03, 0x84, 0x9d, 0x6d, 0x27, 0x81, 0x2e, 0xd1, 0xc8, 0x75, 0x18, 0x7d, 0x48, 0x83, 0x30, + 0xde, 0x0d, 0xf1, 0x68, 0x78, 0xc2, 0x41, 0x3a, 0x81, 0xc0, 0x22, 0x77, 0xe2, 0x1d, 0x59, 0x1c, + 0x6a, 0xd3, 0x89, 0x7d, 0x30, 0x5e, 0x2a, 0x4d, 0x01, 0xd1, 0x97, 0x8a, 0xc4, 0xb2, 0x7e, 0x2a, + 0x0b, 0x85, 0xb2, 0x1b, 0xb9, 0xdb, 0x6e, 0x28, 0xc6, 0xf3, 0xe1, 0x4d, 0xb6, 0xc7, 0x6b, 0x1d, + 0xc5, 0x3d, 0x9e, 0xb5, 0xfc, 0x63, 0x77, 0xef, 0x95, 0x64, 0xf7, 0xc6, 0xd9, 0x09, 0x2b, 0xba, + 0x17, 0x77, 0xea, 0xbd, 0xe3, 0x3b, 0x55, 0x10, 0x9d, 0xca, 0xcb, 0x4e, 0xc5, 0x5d, 0x21, 0xef, + 0xc1, 0x50, 0xb5, 0x4d, 0x6b, 0x62, 0x13, 0x91, 0xe7, 0x82, 0xd9, 0x39, 0x86, 0xf0, 0xf0, 0xe6, + 0xd2, 0x84, 0x60, 0x33, 0x14, 0xb6, 0x69, 0xcd, 0x46, 0x32, 0xed, 0xa3, 0xf9, 0x47, 0x39, 0x98, + 0x4b, 0x23, 0xd3, 0xfb, 0x31, 0xd2, 0xa7, 0x1f, 0x57, 0x20, 0xcf, 0x8e, 0x70, 0x76, 0x2c, 0xe2, + 0x76, 0x31, 0xb6, 0x34, 0xc1, 0x9a, 0xbc, 0x27, 0x60, 0xb6, 0x2a, 0x25, 0x97, 0x94, 0x44, 0x90, + 0x8f, 0xf9, 0x09, 0x89, 0x40, 0xca, 0x01, 0x6c, 0xae, 0xe5, 0x27, 0x8c, 0x82, 0x43, 0x3c, 0x2c, + 0x12, 0x1c, 0xcf, 0x75, 0x20, 0x20, 0xc6, 0x31, 0x23, 0x0f, 0x85, 0x15, 0xc8, 0xcb, 0x6e, 0xcd, + 0x4f, 0x20, 0xa3, 0x99, 0xc4, 0x20, 0x3d, 0xbc, 0xc9, 0x27, 0xb3, 0x2e, 0x7e, 0xeb, 0x6c, 0x24, + 0x0e, 0xb9, 0x09, 0xf9, 0xcd, 0xc0, 0x7f, 0x7a, 0x50, 0x29, 0x87, 0xf3, 0x93, 0x17, 0x73, 0x57, + 0xc6, 0x96, 0xce, 0x1c, 0x1d, 0x16, 0x67, 0xdb, 0x0c, 0xe6, 0x78, 0x75, 0xfd, 0xa4, 0x55, 0x88, + 0x77, 0x87, 0xf2, 0x99, 0x42, 0xf6, 0xee, 0x50, 0x3e, 0x5b, 0xc8, 0x71, 0xf1, 0xe2, 0xee, 0x50, + 0x7e, 0xa8, 0x30, 0x7c, 0x77, 0x28, 0x3f, 0x8c, 0x02, 0xc7, 0x58, 0x01, 0xee, 0x0e, 0xe5, 0xc7, + 0x0b, 0x13, 0xc6, 0x69, 0x8f, 0x0c, 0x22, 0xbf, 0xe6, 0x37, 0xec, 0xdc, 0x03, 0xbb, 0x62, 0x8f, + 0x2c, 0x97, 0x96, 0x69, 0x10, 0xd9, 0xb9, 0xd2, 0xa3, 0xaa, 0x3d, 0x59, 0x3e, 0x68, 0xb9, 0x4d, + 0xaf, 0xc6, 0x8f, 0x4e, 0x3b, 0x77, 0x67, 0x79, 0xd3, 0x2a, 0xc1, 0x54, 0xdc, 0x97, 0x35, 0x2f, + 0x8c, 0xc8, 0x75, 0x18, 0x93, 0x10, 0xb6, 0xd1, 0xe5, 0x52, 0x7b, 0x6d, 0xc7, 0x38, 0xd6, 0xef, + 0x67, 0x01, 0xe2, 0x92, 0xe7, 0xf4, 0x5b, 0xf8, 0x9c, 0xf1, 0x2d, 0x9c, 0x4a, 0x7e, 0x0b, 0x3d, + 0xbf, 0x02, 0xf2, 0x01, 0x8c, 0x30, 0xb1, 0xa0, 0x23, 0x45, 0xa2, 0x33, 0x49, 0x52, 0x2c, 0x7c, + 0x78, 0x73, 0x69, 0x4a, 0x10, 0x8f, 0x84, 0x08, 0xb1, 0x05, 0x99, 0xf6, 0x19, 0xfd, 0xd2, 0x68, + 0x3c, 0x19, 0xe2, 0x03, 0xba, 0x02, 0x6a, 0x42, 0xc5, 0x80, 0xe2, 0x97, 0xd1, 0x96, 0x93, 0xac, + 0x4a, 0xc9, 0x59, 0x60, 0x13, 0x2e, 0x06, 0x75, 0xf4, 0xe8, 0xb0, 0x98, 0xeb, 0x04, 0x1e, 0x2e, + 0x02, 0x72, 0x1d, 0xc4, 0x32, 0x10, 0x03, 0xc8, 0x56, 0xdf, 0x4c, 0xcd, 0x75, 0x6a, 0x34, 0x88, + 0xe2, 0x11, 0x9f, 0xcf, 0xc8, 0xd5, 0x42, 0xda, 0x60, 0x2e, 0x95, 0xf9, 0x21, 0x5c, 0x06, 0x57, + 0x52, 0x47, 0xe5, 0x9a, 0x81, 0xca, 0xc5, 0xc8, 0x8b, 0xf2, 0x54, 0xaa, 0xf3, 0x32, 0xa7, 0x4b, + 0xa4, 0x34, 0x2b, 0x20, 0x37, 0x81, 0xad, 0x50, 0x31, 0xfa, 0x20, 0xea, 0x29, 0x3d, 0xaa, 0x2e, + 0x9d, 0x12, 0x9c, 0x26, 0xdd, 0x7d, 0x9d, 0x9c, 0x61, 0x93, 0x77, 0x80, 0x2d, 0x61, 0x31, 0xee, + 0x44, 0x10, 0xdd, 0x59, 0xde, 0x5c, 0x6e, 0xf8, 0x9d, 0x7a, 0xf5, 0x4b, 0x6b, 0x31, 0xf1, 0x6e, + 0xad, 0xad, 0x13, 0xdf, 0x59, 0xde, 0x24, 0xef, 0xc0, 0x70, 0xe9, 0xbb, 0x3b, 0x01, 0x15, 0xf2, + 0xc9, 0x84, 0xac, 0x93, 0xc1, 0x96, 0xce, 0x08, 0xc2, 0x69, 0x97, 0xfd, 0xd4, 0xe5, 0x3a, 0x2c, + 0x67, 0x35, 0x6f, 0xad, 0x55, 0x85, 0xec, 0x41, 0x12, 0xc3, 0xb2, 0xb5, 0xa6, 0x35, 0x3b, 0x32, + 0x7a, 0xcd, 0xa8, 0xc8, 0x75, 0xc8, 0x96, 0xca, 0xa8, 0x11, 0x8d, 0x2f, 0x8e, 0xc9, 0x6a, 0xcb, + 0x4b, 0x73, 0x82, 0x64, 0xc2, 0xd5, 0x3f, 0x83, 0x6c, 0xa9, 0x4c, 0x96, 0x60, 0xf8, 0xfe, 0x41, + 0xf5, 0x4b, 0x6b, 0x62, 0x33, 0x9b, 0x95, 0xeb, 0x9a, 0xc1, 0x36, 0xf0, 0xb3, 0x0f, 0xe3, 0x16, + 0x37, 0x0f, 0xc2, 0x6f, 0x36, 0xf4, 0x16, 0x23, 0x1a, 0xd9, 0x84, 0xb1, 0x52, 0xbd, 0xe9, 0xb5, + 0x1e, 0x84, 0x34, 0x98, 0x1f, 0x47, 0x3e, 0xf3, 0x89, 0x76, 0xab, 0xf2, 0xa5, 0xf9, 0xa3, 0xc3, + 0xe2, 0x9c, 0xcb, 0x7e, 0x3a, 0x9d, 0x90, 0x06, 0x1a, 0xb7, 0x98, 0x09, 0xd9, 0x04, 0xb8, 0xef, + 0xb7, 0x76, 0xfd, 0x52, 0xd4, 0x70, 0xc3, 0xc4, 0xf6, 0x18, 0x17, 0x28, 0xf1, 0xe1, 0x54, 0x93, + 0xc1, 0x1c, 0x97, 0x01, 0x35, 0x86, 0x1a, 0x0f, 0x72, 0x1b, 0x46, 0x36, 0x02, 0xb7, 0xd6, 0xa0, + 0xf3, 0x93, 0xc8, 0x6d, 0x4e, 0x70, 0xe3, 0x40, 0xd9, 0xd3, 0x79, 0xc1, 0xb0, 0xe0, 0x23, 0x58, + 0x57, 0x53, 0x38, 0xe2, 0xc2, 0x23, 0x20, 0xdd, 0x6b, 0x32, 0x45, 0x49, 0x78, 0x5d, 0x57, 0x12, + 0xe2, 0x8f, 0x7e, 0xd9, 0x6f, 0x36, 0xdd, 0x56, 0x1d, 0x69, 0x1f, 0x2e, 0x6a, 0xba, 0x83, 0xf5, + 0x4d, 0x98, 0xe9, 0x1a, 0xac, 0x63, 0xf4, 0xbb, 0xf7, 0x61, 0xba, 0x4c, 0x77, 0xdc, 0x4e, 0x23, + 0x52, 0x27, 0x09, 0xff, 0x44, 0x51, 0xd3, 0xaa, 0xf3, 0x22, 0x47, 0x1e, 0x1f, 0x76, 0x12, 0xd9, + 0x7a, 0x0f, 0x26, 0x8d, 0xee, 0x33, 0x55, 0xa1, 0xd4, 0xa9, 0x7b, 0x11, 0x4e, 0x64, 0x26, 0x56, + 0x15, 0x5c, 0x06, 0xc4, 0xe9, 0xb2, 0x63, 0x04, 0xeb, 0xef, 0xe9, 0xd2, 0x8a, 0xd8, 0x89, 0x98, + 0x5a, 0x2d, 0xf6, 0x83, 0x4c, 0x2c, 0x3b, 0x75, 0xed, 0x07, 0x6a, 0x37, 0xb8, 0xca, 0xbf, 0xcd, + 0x6c, 0xd7, 0xb7, 0x39, 0x2e, 0x66, 0x22, 0xe7, 0xee, 0x87, 0xfc, 0x8b, 0x54, 0x2b, 0x35, 0xf7, + 0xf1, 0x57, 0xea, 0x07, 0x30, 0x71, 0xdf, 0x6d, 0xb9, 0xbb, 0xb4, 0xce, 0x7a, 0xc0, 0xf7, 0x9e, + 0xb1, 0xa5, 0x17, 0x8f, 0x0e, 0x8b, 0x67, 0x9a, 0x1c, 0x8e, 0xbd, 0xd4, 0x17, 0x91, 0x41, 0x40, + 0x6e, 0xc8, 0x2f, 0x7b, 0x38, 0xe5, 0xcb, 0x9e, 0x14, 0xb5, 0x0f, 0xe3, 0x97, 0x2d, 0xbe, 0x67, + 0xeb, 0x77, 0xc6, 0xb0, 0x8f, 0xe4, 0x0d, 0x18, 0xb1, 0xe9, 0x2e, 0x3b, 0x6a, 0x32, 0xf1, 0x24, + 0x05, 0x08, 0xd1, 0x07, 0x86, 0xe3, 0xa0, 0x9c, 0x41, 0xeb, 0xe1, 0x9e, 0xb7, 0x13, 0x89, 0xd1, + 0x51, 0x72, 0x86, 0x00, 0x6b, 0x72, 0x86, 0x80, 0x98, 0xea, 0x2c, 0x87, 0xb1, 0xdd, 0xcf, 0x2e, + 0x57, 0xc5, 0xa0, 0xc9, 0x11, 0xb6, 0xcb, 0xda, 0x36, 0x12, 0x18, 0x52, 0x02, 0xc3, 0x26, 0xb7, + 0x60, 0xac, 0x54, 0xab, 0xf9, 0x1d, 0x4d, 0x67, 0xe4, 0xdf, 0x2d, 0x07, 0x9a, 0x57, 0x24, 0x31, + 0x2a, 0xa9, 0xc2, 0xf8, 0x0a, 0x53, 0xb4, 0xbc, 0x65, 0xb7, 0xb6, 0x27, 0x07, 0x49, 0xee, 0x61, + 0x5a, 0x49, 0xfc, 0xe5, 0x52, 0x04, 0xd6, 0x18, 0x50, 0xbf, 0x64, 0xd0, 0x70, 0xc9, 0x16, 0x8c, + 0x57, 0x69, 0x2d, 0xa0, 0x51, 0x35, 0xf2, 0x03, 0x9a, 0xd8, 0x92, 0xb5, 0x92, 0xa5, 0x0b, 0x52, + 0xd7, 0x0b, 0x11, 0xe8, 0x84, 0x0c, 0xaa, 0x73, 0xd5, 0x90, 0xb9, 0xd0, 0xde, 0xf4, 0x83, 0x83, + 0xf2, 0x92, 0xd8, 0xa6, 0xe3, 0x33, 0x9d, 0x83, 0x75, 0xa1, 0x9d, 0x41, 0xea, 0xdb, 0xa6, 0xd0, + 0xce, 0xb1, 0x70, 0xa6, 0xca, 0x55, 0x94, 0xad, 0xc4, 0xa6, 0x3d, 0x1d, 0x8f, 0x32, 0x82, 0xb5, + 0x99, 0xaa, 0x87, 0x28, 0x99, 0x19, 0x33, 0x25, 0xb0, 0x48, 0x1b, 0x88, 0x9c, 0x35, 0x2e, 0xe8, + 0x36, 0x68, 0x18, 0x8a, 0xbd, 0xfc, 0x6c, 0x62, 0xf2, 0x63, 0x84, 0xa5, 0x57, 0x04, 0xf3, 0xf3, + 0x72, 0x19, 0x08, 0x3d, 0x8d, 0x15, 0x6a, 0xf5, 0xa4, 0xf0, 0x26, 0x6f, 0x03, 0xac, 0x3c, 0x8d, + 0x68, 0xd0, 0x72, 0x1b, 0xea, 0x1e, 0x0c, 0xaf, 0x7e, 0xa8, 0x80, 0x9a, 0x13, 0xad, 0x21, 0x93, + 0x65, 0x98, 0x2c, 0x85, 0x61, 0xa7, 0x49, 0x6d, 0xbf, 0x41, 0x4b, 0xf6, 0x3a, 0xee, 0xfb, 0x63, + 0x4b, 0xe7, 0x8f, 0x0e, 0x8b, 0x67, 0x5d, 0x2c, 0x70, 0x02, 0xbf, 0x41, 0x1d, 0x37, 0xd0, 0x57, + 0xb7, 0x49, 0x43, 0x36, 0x00, 0x36, 0xda, 0xb4, 0x55, 0xa5, 0x6e, 0x50, 0xdb, 0x4b, 0x6c, 0xf3, + 0x71, 0xc1, 0xd2, 0x39, 0xd1, 0xc3, 0x39, 0xbf, 0x4d, 0x5b, 0x21, 0xc2, 0xf4, 0x56, 0xc5, 0x98, + 0xe4, 0x11, 0x4c, 0x57, 0x4a, 0xf7, 0x37, 0xfd, 0x86, 0x57, 0x3b, 0x10, 0x92, 0xd3, 0x14, 0xde, + 0x0e, 0x9e, 0x16, 0x5c, 0x13, 0xa5, 0x7c, 0x7b, 0xf2, 0xdc, 0xa6, 0xd3, 0x46, 0xa8, 0x23, 0xe4, + 0xa7, 0x24, 0x17, 0xf2, 0x21, 0x5b, 0x83, 0x21, 0x13, 0x06, 0xb7, 0xdc, 0xdd, 0x70, 0x7e, 0xda, + 0xb8, 0xed, 0x2a, 0x3d, 0xaa, 0x5e, 0xd3, 0x4a, 0xb9, 0x98, 0xb2, 0xc0, 0x17, 0x22, 0x42, 0x9d, + 0xc8, 0xdd, 0x0d, 0xcd, 0x85, 0xa8, 0xb0, 0xc9, 0x5d, 0x80, 0xb2, 0x5f, 0xeb, 0x34, 0x69, 0x2b, + 0x2a, 0x2f, 0xcd, 0x17, 0x4c, 0x55, 0x40, 0x15, 0xc4, 0x5b, 0x5b, 0xdd, 0xaf, 0x19, 0x2b, 0x51, + 0xa3, 0x5e, 0x78, 0x1f, 0x0a, 0xc9, 0x86, 0x9c, 0xf0, 0x02, 0x6b, 0xb2, 0x30, 0xa5, 0xf5, 0x7e, + 0xe5, 0xa9, 0x17, 0x46, 0xa1, 0xf5, 0x3d, 0xc6, 0x17, 0xc8, 0x76, 0x87, 0x7b, 0xf4, 0x60, 0x33, + 0xa0, 0x3b, 0xde, 0x53, 0xb1, 0x99, 0xe1, 0xee, 0xf0, 0x98, 0x1e, 0x38, 0x6d, 0x84, 0xea, 0xbb, + 0x83, 0x42, 0x25, 0x9f, 0x85, 0xfc, 0xbd, 0xfb, 0xd5, 0x7b, 0xf4, 0xa0, 0x52, 0x16, 0x07, 0x15, + 0x27, 0x6b, 0x86, 0x0e, 0x23, 0x35, 0xd6, 0x9a, 0xc2, 0xb4, 0x96, 0xe2, 0x9d, 0x90, 0xd5, 0xbc, + 0xdc, 0xe8, 0x84, 0x11, 0x0d, 0x2a, 0x65, 0xbd, 0xe6, 0x1a, 0x07, 0x26, 0xf6, 0x25, 0x85, 0x6a, + 0xfd, 0xa3, 0x2c, 0xee, 0x82, 0x6c, 0xc1, 0x57, 0x5a, 0x61, 0xe4, 0xb6, 0x6a, 0x54, 0x31, 0xc0, + 0x05, 0xef, 0x09, 0x68, 0x62, 0xc1, 0xc7, 0xc8, 0x66, 0xd5, 0xd9, 0x81, 0xab, 0x66, 0x55, 0xca, + 0x9b, 0x8b, 0x4a, 0x59, 0xbf, 0x5e, 0x0d, 0x04, 0x34, 0x51, 0x65, 0x8c, 0x4c, 0x2e, 0xc3, 0x68, + 0xa5, 0x74, 0xbf, 0xd4, 0x89, 0xf6, 0x70, 0x0f, 0xce, 0x73, 0xf9, 0x9c, 0xad, 0x56, 0xb7, 0x13, + 0xed, 0xd9, 0xb2, 0x90, 0x5c, 0x47, 0xbd, 0xa7, 0x45, 0x23, 0x7e, 0x0d, 0x2b, 0x0e, 0xdd, 0x90, + 0x83, 0x12, 0x6a, 0x0f, 0x03, 0x91, 0xd7, 0x60, 0xf8, 0xe1, 0xe6, 0x72, 0xa5, 0x2c, 0x14, 0x67, + 0x3c, 0x89, 0x9e, 0xb4, 0x6b, 0x66, 0x4b, 0x38, 0x8a, 0xf5, 0xbb, 0x99, 0x78, 0x7f, 0x23, 0x97, + 0x0d, 0x79, 0x04, 0x2f, 0x5d, 0x98, 0x3c, 0xa2, 0x5f, 0xba, 0xa0, 0x64, 0x62, 0x03, 0x59, 0xee, + 0x84, 0x91, 0xdf, 0x5c, 0x69, 0xd5, 0xdb, 0xbe, 0xd7, 0x8a, 0x90, 0x8a, 0x8f, 0x9a, 0x75, 0x74, + 0x58, 0xbc, 0x50, 0xc3, 0x52, 0x87, 0x8a, 0x62, 0x27, 0xc1, 0x25, 0x85, 0xfa, 0x13, 0x0c, 0xa4, + 0xf5, 0x87, 0x59, 0xe3, 0x5c, 0x62, 0xcd, 0xb3, 0x69, 0xbb, 0xe1, 0xd5, 0x50, 0x15, 0xbf, 0x13, + 0xf8, 0x9d, 0xb6, 0x5a, 0x0e, 0xd8, 0xbc, 0x20, 0x2e, 0x75, 0x76, 0x59, 0xb1, 0xc9, 0x3b, 0x85, + 0x9a, 0x7c, 0x11, 0x26, 0x98, 0x88, 0x20, 0x7e, 0x86, 0xf3, 0x59, 0x9c, 0x89, 0x73, 0x78, 0x7d, + 0x16, 0xd2, 0x40, 0xb1, 0x31, 0x64, 0x0b, 0x9d, 0x82, 0xd4, 0x61, 0x7e, 0x2b, 0x70, 0x5b, 0xa1, + 0x17, 0xad, 0xb4, 0x6a, 0xc1, 0x01, 0x8a, 0x34, 0x2b, 0x2d, 0x77, 0xbb, 0x41, 0xeb, 0xd8, 0xdd, + 0xfc, 0xd2, 0x95, 0xa3, 0xc3, 0xe2, 0xcb, 0x11, 0xc7, 0x71, 0xa8, 0x42, 0x72, 0x28, 0xc7, 0xd2, + 0x38, 0xf7, 0xe4, 0xc4, 0x44, 0x20, 0x39, 0xac, 0xf8, 0x7a, 0xc2, 0x4f, 0x77, 0x14, 0x81, 0xd4, + 0x6c, 0xb0, 0xcd, 0x47, 0x6f, 0xa6, 0x4e, 0x60, 0xfd, 0x1f, 0x99, 0xf8, 0xe4, 0x24, 0xef, 0xc2, + 0xb8, 0x58, 0xea, 0xda, 0xba, 0xc0, 0xad, 0x4f, 0x7e, 0x17, 0x89, 0x99, 0xd5, 0xd1, 0x99, 0xc2, + 0x5e, 0x5a, 0x5e, 0xd3, 0xd6, 0x06, 0x2a, 0xec, 0x6e, 0xad, 0x91, 0xa4, 0x92, 0x68, 0x6c, 0x11, + 0x6c, 0xad, 0x55, 0xcd, 0x51, 0xc1, 0x45, 0x10, 0x35, 0xc2, 0x94, 0x61, 0xd0, 0x90, 0x3f, 0x79, + 0xc7, 0xff, 0x87, 0x4c, 0xda, 0x01, 0x4d, 0x96, 0x60, 0xf2, 0x91, 0x1f, 0x3c, 0xc6, 0xf9, 0xd5, + 0x06, 0x01, 0x67, 0x7e, 0x5f, 0x16, 0x24, 0x3b, 0x64, 0x92, 0xe8, 0x6d, 0xd3, 0x46, 0xc3, 0x6c, + 0x5b, 0x82, 0x83, 0x41, 0xc0, 0xe6, 0x41, 0x71, 0x54, 0x5f, 0x07, 0xce, 0x43, 0xdc, 0x04, 0x63, + 0x09, 0xeb, 0xe8, 0xd6, 0x7f, 0x91, 0xd1, 0x0f, 0x62, 0x36, 0xc8, 0x65, 0xbf, 0xe9, 0x7a, 0x2d, + 0xad, 0x3b, 0xfc, 0x45, 0x08, 0xa1, 0xc9, 0x96, 0x68, 0xc8, 0xe4, 0x26, 0xe4, 0xf9, 0x2f, 0xb5, + 0x49, 0xe2, 0x75, 0x94, 0x20, 0x34, 0x77, 0x78, 0x89, 0xd8, 0x35, 0x33, 0xb9, 0x93, 0xce, 0xcc, + 0xef, 0x64, 0xf4, 0x33, 0xf4, 0xe3, 0x9e, 0x12, 0x89, 0xd3, 0x21, 0x7b, 0x92, 0xd3, 0xe1, 0x13, + 0x77, 0xe1, 0xfb, 0x32, 0x30, 0xae, 0x5d, 0x2f, 0xb0, 0x3e, 0x6c, 0x06, 0xfe, 0x47, 0xb4, 0x16, + 0x99, 0x7d, 0x68, 0x73, 0x60, 0xa2, 0x0f, 0x0a, 0xf5, 0x13, 0xf4, 0xc1, 0xfa, 0x8b, 0x8c, 0x50, + 0x6e, 0x06, 0xde, 0xe6, 0xcd, 0x2d, 0x39, 0x7b, 0x92, 0xb3, 0xed, 0x8b, 0x30, 0x6c, 0xd3, 0xba, + 0x17, 0x0a, 0xc5, 0x64, 0x46, 0x57, 0xa4, 0xb0, 0x20, 0x16, 0x78, 0x02, 0xf6, 0x53, 0x3f, 0x98, + 0xb0, 0x9c, 0x49, 0xa0, 0x95, 0xf0, 0x76, 0x83, 0x3e, 0xf5, 0xf8, 0xc7, 0x28, 0xce, 0x48, 0x94, + 0x40, 0xbd, 0xd0, 0xd9, 0x61, 0x25, 0x42, 0x14, 0xd6, 0x3f, 0x3c, 0x83, 0xc6, 0xfa, 0x10, 0x20, + 0xae, 0x92, 0xdc, 0x83, 0x82, 0x58, 0x0d, 0x5e, 0x6b, 0x97, 0x4b, 0x40, 0x62, 0x0c, 0x8a, 0x47, + 0x87, 0xc5, 0x17, 0x6b, 0xaa, 0x4c, 0x88, 0x8b, 0x1a, 0xdf, 0x2e, 0x42, 0xeb, 0x3f, 0xc8, 0x42, + 0xb6, 0x84, 0x13, 0x72, 0x8f, 0x1e, 0x44, 0xee, 0xf6, 0x6d, 0xaf, 0x61, 0x7c, 0x4c, 0x8f, 0x11, + 0xea, 0xec, 0x78, 0xc6, 0x3d, 0x83, 0x86, 0xcc, 0x3e, 0xa6, 0x7b, 0xc1, 0xf6, 0x5b, 0x48, 0xa8, + 0x7d, 0x4c, 0x8f, 0x83, 0xed, 0xb7, 0x92, 0x64, 0x0a, 0x91, 0x58, 0x30, 0xc2, 0x3f, 0x2c, 0xb1, + 0x06, 0xe1, 0xe8, 0xb0, 0x38, 0xc2, 0xbf, 0x3f, 0x5b, 0x94, 0x90, 0xb3, 0x90, 0xab, 0x6e, 0xae, + 0x8b, 0x1d, 0x10, 0xef, 0xf3, 0xc2, 0x76, 0xcb, 0x66, 0x30, 0x56, 0xe7, 0x5a, 0xb9, 0xb4, 0x89, + 0x1a, 0xfc, 0x70, 0x5c, 0x67, 0xa3, 0xee, 0xb6, 0x93, 0x3a, 0xbc, 0x42, 0x24, 0xef, 0xc1, 0xf8, + 0xbd, 0xf2, 0xf2, 0xaa, 0x1f, 0xf2, 0xdd, 0x6b, 0x24, 0x5e, 0xfc, 0x8f, 0xeb, 0x35, 0x07, 0xaf, + 0xd0, 0x93, 0xc7, 0x80, 0x86, 0x6f, 0xfd, 0x70, 0x16, 0xc6, 0xb5, 0x0b, 0x2e, 0xf2, 0x59, 0xf1, + 0xb2, 0x99, 0x31, 0x44, 0x77, 0x0d, 0x83, 0x95, 0xf2, 0xdb, 0x90, 0xa6, 0x5f, 0xa7, 0xe2, 0x9d, + 0x33, 0xbe, 0x79, 0xc8, 0x0e, 0x72, 0xf3, 0xf0, 0x36, 0x00, 0x5f, 0x03, 0xd8, 0x64, 0x4d, 0x9c, + 0xd0, 0x0c, 0x1c, 0xf4, 0x79, 0x89, 0x91, 0xc9, 0x43, 0x98, 0xdd, 0x0a, 0x3a, 0x61, 0x54, 0x3d, + 0x08, 0x23, 0xda, 0x64, 0xdc, 0x36, 0x7d, 0xbf, 0x21, 0xd6, 0xdf, 0xcb, 0x47, 0x87, 0xc5, 0x8b, + 0x11, 0x2b, 0x76, 0x42, 0x2c, 0xc7, 0x06, 0x38, 0x6d, 0xdf, 0xd7, 0xef, 0x23, 0xd2, 0x18, 0x58, + 0x36, 0x4c, 0xe8, 0xb7, 0x19, 0xec, 0x64, 0x11, 0xaf, 0x40, 0xe2, 0x8e, 0x5a, 0x3b, 0x59, 0x44, + 0x2b, 0xbb, 0x5f, 0xa5, 0x4c, 0x12, 0xeb, 0xb3, 0xfa, 0x4d, 0xda, 0xa0, 0x1f, 0xb6, 0xf5, 0x03, + 0x99, 0x78, 0x1b, 0x79, 0x78, 0x83, 0xbc, 0x03, 0x23, 0xfc, 0xd5, 0x4d, 0x3c, 0x4e, 0x9e, 0x52, + 0xda, 0xa8, 0xfe, 0x24, 0xc7, 0xaf, 0xb0, 0xff, 0x88, 0xbf, 0xcc, 0xbf, 0x60, 0x0b, 0x12, 0x75, + 0xfb, 0x6d, 0x5e, 0x84, 0x49, 0xee, 0x78, 0xcf, 0x7b, 0x23, 0xed, 0xf6, 0xdb, 0xfa, 0xbd, 0x21, + 0x98, 0x32, 0xd1, 0xf4, 0xa7, 0xb9, 0xcc, 0x40, 0x4f, 0x73, 0x5f, 0x84, 0x3c, 0x1b, 0x0f, 0xaf, + 0x46, 0xa5, 0x44, 0xf6, 0x32, 0xbe, 0x09, 0x08, 0x98, 0xf1, 0xe4, 0x0c, 0x7c, 0x3a, 0x98, 0x72, + 0x6a, 0x2b, 0x2a, 0xb2, 0xa8, 0xbd, 0x1f, 0xe5, 0x62, 0x21, 0x45, 0xbe, 0x1f, 0xe9, 0xdf, 0x83, + 0x7a, 0x49, 0x7a, 0x13, 0x46, 0x98, 0x60, 0xae, 0xee, 0x4e, 0xb0, 0x95, 0x4c, 0x66, 0x4f, 0xd8, + 0x96, 0x70, 0x24, 0xf2, 0x08, 0xf2, 0x6b, 0x6e, 0x18, 0x55, 0x29, 0x6d, 0x0d, 0xf0, 0xe8, 0x5e, + 0x14, 0x43, 0x35, 0x8b, 0x2f, 0xda, 0x21, 0xa5, 0xad, 0xc4, 0xab, 0xa9, 0x62, 0x46, 0xbe, 0x06, + 0xb0, 0xec, 0xb7, 0xa2, 0xc0, 0x6f, 0xac, 0xf9, 0xbb, 0xf3, 0x23, 0xa8, 0xb4, 0x5e, 0x48, 0x4c, + 0x40, 0x8c, 0xc0, 0xf5, 0x56, 0x75, 0x33, 0x53, 0xe3, 0x05, 0x4e, 0xc3, 0xdf, 0xd5, 0xbf, 0x83, + 0x18, 0x9f, 0xdc, 0x86, 0x82, 0xbc, 0x11, 0x78, 0xd0, 0xde, 0x0d, 0x70, 0x81, 0x8c, 0xc6, 0x92, + 0x07, 0x7d, 0x1a, 0x39, 0x1d, 0x01, 0xd7, 0x77, 0xca, 0x24, 0x0d, 0xf9, 0x2a, 0x9c, 0x49, 0xc2, + 0xe4, 0x2c, 0xe7, 0x63, 0x99, 0x5c, 0x67, 0x97, 0xb2, 0xee, 0x7b, 0xb1, 0xb0, 0xbe, 0x9d, 0x85, + 0x33, 0x3d, 0x3a, 0xcb, 0xbe, 0x07, 0x3c, 0xae, 0xb5, 0xef, 0x21, 0x71, 0x4a, 0x73, 0x63, 0xa1, + 0x8b, 0x90, 0x15, 0x07, 0xdc, 0xd0, 0x52, 0xe1, 0xe8, 0xb0, 0x38, 0x61, 0xcc, 0x63, 0xb6, 0x52, + 0x26, 0x77, 0x61, 0x88, 0x4d, 0xd1, 0x00, 0x6f, 0xde, 0xf2, 0x32, 0x68, 0x2a, 0xf2, 0xf4, 0xe5, + 0x83, 0x53, 0x87, 0x3c, 0xc8, 0x67, 0x21, 0xb7, 0xb5, 0xb5, 0x86, 0x6b, 0x27, 0x87, 0x7d, 0x9f, + 0x8c, 0xa2, 0x86, 0xb1, 0x54, 0x27, 0x19, 0xed, 0x35, 0x65, 0x22, 0xc1, 0xd0, 0xc9, 0x97, 0x13, + 0xb6, 0x38, 0xaf, 0xf5, 0x9f, 0xe8, 0xc1, 0x4d, 0x73, 0x3e, 0x81, 0x45, 0x8c, 0xf5, 0x8b, 0xd9, + 0xf8, 0x1b, 0xbe, 0xed, 0x35, 0x22, 0x1a, 0x90, 0x05, 0xfe, 0x49, 0xc6, 0xc2, 0x99, 0xad, 0x7e, + 0x93, 0xf9, 0xf8, 0xfb, 0xe6, 0xac, 0xd4, 0x87, 0xfc, 0x9a, 0xf6, 0x21, 0xe7, 0xf0, 0x43, 0x9e, + 0xea, 0xf9, 0xc9, 0xbe, 0x96, 0xb2, 0x2e, 0xf1, 0x43, 0x4c, 0x59, 0x7b, 0x2f, 0xc3, 0xe4, 0xba, + 0xbf, 0xf2, 0x34, 0x52, 0x88, 0xec, 0x03, 0xcc, 0xdb, 0x26, 0x90, 0x71, 0xdc, 0x68, 0xd4, 0x69, + 0xb0, 0xb5, 0xe7, 0xb6, 0x8c, 0x47, 0x67, 0xbb, 0x0b, 0xce, 0x70, 0xd7, 0xe9, 0xbe, 0x89, 0x3b, + 0xca, 0x71, 0x93, 0x70, 0xeb, 0xfb, 0xb3, 0x72, 0x30, 0x1e, 0x2e, 0x3e, 0xa7, 0x8f, 0x9b, 0x6f, + 0x19, 0x8f, 0x9b, 0xb3, 0xea, 0x5a, 0x56, 0xbd, 0xd4, 0x2f, 0x1e, 0xf3, 0xc0, 0xff, 0xf7, 0x46, + 0x60, 0x42, 0x47, 0x67, 0xe3, 0x50, 0xaa, 0xd7, 0x03, 0x7d, 0x1c, 0xdc, 0x7a, 0x3d, 0xb0, 0x11, + 0x6a, 0xbc, 0xe7, 0xe7, 0xfa, 0xbe, 0xe7, 0x7f, 0x1d, 0xc6, 0x96, 0x9b, 0x75, 0xe3, 0x95, 0xd1, + 0x4a, 0x69, 0xde, 0x35, 0x85, 0xc4, 0xbf, 0x05, 0x75, 0xdb, 0x58, 0x6b, 0xd6, 0xbb, 0xdf, 0x16, + 0x63, 0x96, 0x86, 0x29, 0xc0, 0xf0, 0x27, 0x31, 0x05, 0xb8, 0x05, 0x63, 0x0f, 0x42, 0xba, 0xd5, + 0x69, 0xb5, 0x68, 0x03, 0x97, 0x55, 0x9e, 0xcb, 0xfa, 0x9d, 0x90, 0x3a, 0x11, 0x42, 0xf5, 0x06, + 0x28, 0x54, 0x7d, 0x82, 0x47, 0xfb, 0x4c, 0xf0, 0x4d, 0xc8, 0x6f, 0x52, 0x1a, 0xe0, 0x98, 0x8e, + 0xc7, 0x22, 0x5d, 0x9b, 0xd2, 0xc0, 0x61, 0x03, 0x6b, 0x98, 0x08, 0x08, 0x44, 0xc3, 0xae, 0x60, + 0x62, 0x40, 0xbb, 0x02, 0xf2, 0x12, 0x4c, 0xb4, 0x3b, 0xdb, 0x0d, 0xaf, 0x86, 0x7c, 0x85, 0x41, + 0x82, 0x3d, 0xce, 0x61, 0x8c, 0x6d, 0x48, 0xbe, 0x0c, 0x93, 0xa8, 0xe3, 0xa8, 0x25, 0x37, 0x65, + 0x3c, 0xc7, 0x19, 0x65, 0x5c, 0xd2, 0xa9, 0x31, 0x90, 0x93, 0x62, 0x37, 0x63, 0x32, 0x22, 0x77, + 0x61, 0x74, 0xd7, 0x8b, 0x9c, 0xbd, 0xce, 0xf6, 0xfc, 0xb4, 0x61, 0x74, 0x72, 0xc7, 0x8b, 0x56, + 0x3b, 0xdb, 0x7c, 0xca, 0x15, 0x6b, 0xdc, 0xf1, 0x76, 0xbd, 0x68, 0xaf, 0xa3, 0xdf, 0xa5, 0x8e, + 0xec, 0x22, 0xee, 0x42, 0x15, 0xa6, 0xcc, 0x55, 0xf1, 0x0c, 0x5e, 0xf8, 0x94, 0xbd, 0x45, 0xbe, + 0x30, 0x76, 0x77, 0x28, 0x0f, 0x85, 0x71, 0x6e, 0x69, 0x61, 0xc3, 0xa6, 0x1a, 0x1f, 0x9b, 0xdc, + 0xeb, 0x6c, 0xd3, 0xa0, 0x45, 0x23, 0x1a, 0x0a, 0x85, 0x22, 0xb4, 0x87, 0x4a, 0xed, 0x76, 0x68, + 0xfd, 0xa7, 0x59, 0x18, 0x2d, 0x3d, 0xaa, 0x56, 0x5a, 0x3b, 0x3e, 0xbe, 0xd3, 0xa9, 0xe7, 0x19, + 0xfd, 0x9d, 0x4e, 0x3d, 0xcf, 0xe8, 0x8f, 0x32, 0xd7, 0x53, 0x54, 0x42, 0x34, 0xe5, 0xd5, 0x54, + 0x42, 0x43, 0x99, 0x8d, 0x5f, 0xaa, 0x72, 0x03, 0xbc, 0x54, 0xa9, 0xcb, 0xc4, 0xa1, 0x63, 0x2f, + 0x13, 0xc9, 0x3b, 0x30, 0x5e, 0x69, 0x45, 0x74, 0x37, 0x88, 0xbf, 0x1a, 0xa5, 0x9e, 0x2a, 0xb0, + 0xae, 0x26, 0x68, 0xd8, 0x6c, 0x49, 0xf2, 0x0b, 0x4c, 0x75, 0x71, 0x89, 0x4b, 0x92, 0xdf, 0x73, + 0x26, 0xee, 0x16, 0x24, 0xa2, 0x55, 0x4e, 0xac, 0x37, 0x69, 0x0d, 0xc0, 0x05, 0xd9, 0xa9, 0xf8, + 0x06, 0x9f, 0x0d, 0xec, 0xd2, 0x4c, 0xba, 0x35, 0x80, 0xf5, 0x33, 0x19, 0x98, 0x4b, 0x5b, 0x46, + 0xe4, 0x7d, 0x98, 0xf0, 0x83, 0x5d, 0xb7, 0xe5, 0x7d, 0x37, 0xef, 0x91, 0x76, 0x01, 0xa6, 0xc3, + 0x75, 0xb5, 0x5f, 0x87, 0xb3, 0x01, 0xd1, 0x7a, 0x6e, 0xea, 0xeb, 0xa9, 0x03, 0xa2, 0x81, 0xad, + 0x1f, 0xc9, 0xc2, 0x78, 0xa9, 0xdd, 0x7e, 0xce, 0x2d, 0xc5, 0x3e, 0x6f, 0x1c, 0x20, 0x52, 0xdb, + 0x53, 0xfd, 0x1a, 0xc8, 0x48, 0xec, 0xd7, 0xb2, 0x30, 0x9d, 0xa0, 0xd0, 0x5b, 0x9f, 0x19, 0xd0, + 0x3e, 0x2c, 0x3b, 0xa0, 0x7d, 0x58, 0x6e, 0x30, 0xfb, 0xb0, 0xa1, 0x4f, 0x72, 0x28, 0xbc, 0x0a, + 0xb9, 0x52, 0xbb, 0x9d, 0x7c, 0x67, 0x6e, 0xb7, 0x1f, 0xde, 0xe4, 0x1a, 0xbb, 0xdb, 0x6e, 0xdb, + 0x0c, 0xc3, 0xd8, 0xa9, 0x47, 0x06, 0xdc, 0xa9, 0xad, 0x37, 0x61, 0x0c, 0x79, 0xa1, 0x55, 0xd6, + 0x45, 0xc0, 0x2d, 0x46, 0x18, 0x64, 0x19, 0x75, 0x89, 0xcd, 0xe7, 0xff, 0xc9, 0xc0, 0x30, 0xfe, + 0x7e, 0x4e, 0xd7, 0xd8, 0xa2, 0xb1, 0xc6, 0x0a, 0xda, 0x1a, 0x1b, 0x64, 0x75, 0xfd, 0x83, 0x1c, + 0xc0, 0xf2, 0x86, 0x5d, 0xe5, 0x17, 0x3b, 0xe4, 0x36, 0x4c, 0xbb, 0x8d, 0x86, 0xbf, 0x4f, 0xeb, + 0x8e, 0x1f, 0x78, 0xbb, 0x5e, 0x8b, 0x8f, 0x9c, 0x7c, 0xfc, 0x34, 0x8b, 0xb4, 0x3e, 0x4f, 0x89, + 0xa2, 0x0d, 0x5e, 0xa2, 0xf3, 0x69, 0xd2, 0x68, 0xcf, 0xaf, 0x4b, 0x15, 0xd5, 0xe0, 0x23, 0x8a, + 0x52, 0xf8, 0xdc, 0xe7, 0x25, 0x3a, 0x9f, 0x3d, 0x54, 0xb9, 0xa5, 0x84, 0x6c, 0xf0, 0x11, 0x45, + 0x29, 0x7c, 0xb8, 0x9e, 0x1e, 0x92, 0x35, 0x98, 0x41, 0x88, 0x53, 0x0b, 0x68, 0x9d, 0xb6, 0x22, + 0xcf, 0x6d, 0x84, 0xe2, 0x52, 0x03, 0xaf, 0xbf, 0xba, 0x0a, 0x75, 0xa5, 0x0e, 0x0b, 0x97, 0xe3, + 0x32, 0x72, 0x0d, 0x46, 0x9b, 0xee, 0x53, 0xc7, 0xdd, 0xe5, 0x66, 0x00, 0x93, 0x5c, 0x09, 0x16, + 0x20, 0xfd, 0x18, 0x69, 0xba, 0x4f, 0x4b, 0xbb, 0x94, 0xf5, 0x82, 0x3e, 0x6d, 0xfb, 0xa1, 0xd6, + 0x8b, 0x91, 0xb8, 0x17, 0x89, 0x22, 0xbd, 0x17, 0xa2, 0x48, 0xf4, 0xc2, 0xfa, 0x3f, 0x87, 0x71, + 0x69, 0x8b, 0x4d, 0x40, 0x58, 0xae, 0x65, 0x52, 0x2c, 0xd7, 0xde, 0x06, 0xed, 0xe0, 0xd5, 0x77, + 0x5e, 0x4d, 0x84, 0xd1, 0x15, 0xdf, 0x18, 0x99, 0x3c, 0x4e, 0xda, 0xb0, 0xe5, 0xf0, 0xcb, 0xb9, + 0x94, 0x5c, 0x57, 0xcf, 0xc4, 0x7c, 0x6d, 0x15, 0x48, 0xa5, 0x15, 0xd2, 0x5a, 0x27, 0xa0, 0xd5, + 0xc7, 0x5e, 0xfb, 0x21, 0x0d, 0xbc, 0x9d, 0x03, 0x31, 0x2f, 0x28, 0x26, 0x7a, 0xa2, 0xd4, 0x09, + 0x1f, 0x7b, 0x6d, 0xa6, 0x19, 0x7b, 0x3b, 0x07, 0x76, 0x0a, 0x0d, 0xf9, 0x00, 0x46, 0x6d, 0xba, + 0x1f, 0x78, 0x91, 0xb4, 0xcc, 0x98, 0x52, 0xf7, 0x38, 0x08, 0xe5, 0x53, 0x14, 0xf0, 0x1f, 0xfa, + 0xc7, 0x2a, 0xca, 0xc9, 0x22, 0x3f, 0x3b, 0xb9, 0x05, 0xc6, 0x64, 0xdc, 0xdb, 0xd2, 0xa3, 0x6a, + 0xaf, 0xa3, 0x93, 0x5c, 0x85, 0x61, 0x3c, 0x80, 0x85, 0x88, 0x8a, 0x1e, 0x0d, 0x28, 0xd2, 0xe9, + 0xd2, 0x01, 0x62, 0x90, 0x0b, 0x00, 0xea, 0x41, 0x2c, 0x9c, 0xcf, 0xa3, 0xf0, 0xa8, 0x41, 0x92, + 0xd2, 0xc3, 0xd8, 0x89, 0xa4, 0x87, 0x35, 0x28, 0xd8, 0xf4, 0x9b, 0x1d, 0x2f, 0xa0, 0xf5, 0x52, + 0x1b, 0x5f, 0x5d, 0xc2, 0x79, 0xc0, 0x05, 0x76, 0xf1, 0xe8, 0xb0, 0x78, 0x2e, 0x10, 0x65, 0x8e, + 0xdb, 0xe6, 0x8f, 0x35, 0xc6, 0xea, 0x4e, 0x52, 0x92, 0xb7, 0x61, 0x88, 0xed, 0x08, 0xc2, 0xda, + 0x4d, 0xde, 0x5e, 0xc7, 0x9b, 0x04, 0xbf, 0x4b, 0xa8, 0xf9, 0xc6, 0x52, 0x45, 0x92, 0x4f, 0xcf, + 0x82, 0xec, 0xd7, 0xb2, 0x70, 0x49, 0x1d, 0x82, 0x1b, 0x41, 0xb5, 0x74, 0x7f, 0xad, 0x52, 0xdf, + 0x14, 0x5a, 0xf1, 0x66, 0xe0, 0x3f, 0xf1, 0xea, 0x34, 0x78, 0x78, 0xe3, 0x98, 0x2d, 0x7c, 0x8d, + 0x7f, 0x3e, 0xfc, 0x4a, 0x3d, 0x6b, 0xd8, 0xda, 0x68, 0xb2, 0x86, 0x30, 0x07, 0x6a, 0xb7, 0xbb, + 0x6e, 0xd8, 0x57, 0x5f, 0xb0, 0x63, 0x06, 0xe4, 0x07, 0x32, 0x70, 0x3a, 0xbd, 0x21, 0xe2, 0xa6, + 0xa4, 0x28, 0x35, 0xb2, 0x1e, 0xad, 0x5d, 0x7a, 0xf5, 0xe8, 0xb0, 0x78, 0x29, 0x74, 0x9b, 0x0d, + 0xc7, 0xab, 0xf3, 0xda, 0xbc, 0x1a, 0x75, 0xda, 0x02, 0xc1, 0xa8, 0xb7, 0x47, 0x4d, 0x5f, 0x00, + 0xb9, 0x93, 0xcf, 0x67, 0x96, 0x00, 0xf2, 0xf2, 0xd6, 0xd2, 0xfa, 0xcd, 0x0c, 0x68, 0x4b, 0x3b, + 0x6f, 0xd3, 0xba, 0x17, 0xd0, 0x5a, 0x24, 0x76, 0x73, 0xe1, 0x29, 0xc4, 0x61, 0x09, 0xd3, 0x2a, + 0x84, 0x91, 0xf7, 0x61, 0x54, 0xec, 0x3a, 0xb8, 0x71, 0xc7, 0x9f, 0x84, 0xb8, 0x0f, 0xe5, 0x2e, + 0x65, 0x5d, 0x3b, 0x96, 0x24, 0x62, 0x7a, 0xdf, 0xdd, 0x47, 0x5b, 0xcb, 0x0d, 0xd7, 0x6b, 0x86, + 0xe2, 0xf4, 0xc3, 0x61, 0xfd, 0x68, 0x3f, 0x72, 0x6a, 0x08, 0xd5, 0xf5, 0x3e, 0x85, 0x6a, 0xdd, + 0x91, 0xd7, 0xb1, 0xc7, 0xd8, 0x07, 0x16, 0x61, 0xf8, 0x61, 0x7c, 0x2d, 0xb3, 0x34, 0x76, 0x74, + 0x58, 0xe4, 0xcb, 0xc5, 0xe6, 0x70, 0xeb, 0x6f, 0x67, 0x60, 0xca, 0x5c, 0x4f, 0xe4, 0x1a, 0x8c, + 0x08, 0x2f, 0x9d, 0x0c, 0x5e, 0x3f, 0xb1, 0x51, 0x18, 0xe1, 0xfe, 0x39, 0x86, 0x57, 0x8e, 0xc0, + 0x62, 0xe7, 0xb7, 0xe0, 0x20, 0x0e, 0x2f, 0x3c, 0xbf, 0x6b, 0x1c, 0x64, 0xcb, 0x32, 0x62, 0x31, + 0x95, 0x22, 0xec, 0x34, 0x22, 0xfd, 0x55, 0x22, 0x40, 0x88, 0x2d, 0x4a, 0xac, 0x65, 0x18, 0xe1, + 0x7b, 0x49, 0xc2, 0x2e, 0x29, 0x73, 0x02, 0xbb, 0x24, 0xeb, 0x30, 0x03, 0x50, 0xad, 0xae, 0xde, + 0xa3, 0x07, 0x9b, 0xae, 0x17, 0xe0, 0x33, 0x1a, 0xee, 0xdb, 0xf7, 0xc4, 0xc7, 0x35, 0x21, 0x9e, + 0xd1, 0xf8, 0x1e, 0xff, 0x98, 0x1e, 0x18, 0xcf, 0x68, 0x12, 0x15, 0x0f, 0x87, 0xc0, 0x7b, 0xe2, + 0x46, 0x94, 0x11, 0x66, 0x91, 0x90, 0x1f, 0x0e, 0x1c, 0x9a, 0xa0, 0xd4, 0x90, 0xc9, 0xd7, 0x60, + 0x2a, 0xfe, 0xa5, 0x1e, 0x03, 0xa7, 0xd4, 0x07, 0x6c, 0x16, 0x2e, 0x5d, 0x38, 0x3a, 0x2c, 0x2e, + 0x68, 0x5c, 0x93, 0xcf, 0x84, 0x09, 0x66, 0xd6, 0xaf, 0x64, 0xf0, 0x09, 0x5c, 0x76, 0xf0, 0x32, + 0x0c, 0x29, 0x6b, 0xcb, 0x09, 0xb1, 0xeb, 0x98, 0x0f, 0x1e, 0x58, 0x4e, 0x2e, 0x41, 0x2e, 0xee, + 0x09, 0xee, 0xd5, 0x66, 0x0f, 0x58, 0x29, 0xb9, 0x03, 0xa3, 0x03, 0xb5, 0x19, 0x3f, 0x8d, 0x94, + 0xb6, 0x4a, 0x6a, 0x9c, 0x85, 0xbb, 0x8f, 0xb6, 0xbe, 0x73, 0x67, 0xe1, 0x27, 0xb2, 0x30, 0xcd, + 0xc6, 0xb5, 0xd4, 0x89, 0xf6, 0xfc, 0xc0, 0x8b, 0x0e, 0x9e, 0xdb, 0xfb, 0xbb, 0x77, 0x0d, 0xd1, + 0x78, 0x41, 0x9e, 0x32, 0x7a, 0xdf, 0x06, 0xba, 0xc6, 0xfb, 0x27, 0xc3, 0x30, 0x9b, 0x42, 0x45, + 0xde, 0x30, 0xae, 0xd8, 0xe7, 0xa5, 0x17, 0xee, 0xb7, 0x0f, 0x8b, 0x13, 0x12, 0x7d, 0x2b, 0xf6, + 0xca, 0x5d, 0x34, 0xed, 0x49, 0xf8, 0x48, 0xe1, 0x8d, 0xbb, 0x6e, 0x4f, 0x62, 0x5a, 0x91, 0x5c, + 0x85, 0x61, 0xdb, 0x6f, 0x50, 0x69, 0xfc, 0x84, 0x12, 0x46, 0xc0, 0x00, 0xc6, 0x9b, 0x31, 0x03, + 0x90, 0x55, 0x18, 0x65, 0x7f, 0xdc, 0x77, 0xdb, 0xe2, 0x35, 0x84, 0x28, 0xe5, 0x0c, 0xa1, 0x6d, + 0xaf, 0xb5, 0xab, 0xeb, 0x67, 0x0d, 0xea, 0x34, 0xdd, 0xb6, 0x21, 0x0a, 0x71, 0x44, 0x43, 0xcf, + 0xcb, 0xf7, 0xd6, 0xf3, 0x32, 0xc7, 0xea, 0x79, 0x3b, 0x00, 0x55, 0x6f, 0xb7, 0xe5, 0xb5, 0x76, + 0x4b, 0x8d, 0x5d, 0xe1, 0xcb, 0x7c, 0xb5, 0xf7, 0x2c, 0x5c, 0x8b, 0x91, 0x71, 0xe1, 0xbe, 0x88, + 0x4f, 0x96, 0x1c, 0xe6, 0xb8, 0x8d, 0x5d, 0xc3, 0xe7, 0x42, 0xe3, 0x4c, 0xd6, 0x01, 0x4a, 0xb5, + 0xc8, 0x7b, 0xc2, 0x96, 0x70, 0x28, 0xe4, 0x16, 0xd9, 0xe4, 0xe5, 0xd2, 0x3d, 0x7a, 0x50, 0xa5, + 0x51, 0xfc, 0xf8, 0xe3, 0x22, 0x2a, 0xfb, 0x12, 0x0c, 0x83, 0xfa, 0x98, 0x03, 0x69, 0xc3, 0xa9, + 0x52, 0xbd, 0xee, 0xb1, 0x3e, 0xb8, 0x0d, 0x7c, 0xcd, 0xa4, 0x75, 0x64, 0x3d, 0x91, 0xce, 0xfa, + 0xaa, 0x60, 0xfd, 0x92, 0xab, 0xa8, 0x9c, 0x88, 0x93, 0x25, 0xab, 0x49, 0x67, 0x6c, 0x55, 0x61, + 0xca, 0xec, 0xbc, 0xe9, 0x83, 0x3d, 0x01, 0x79, 0xbb, 0x5a, 0x72, 0xaa, 0xab, 0xa5, 0x1b, 0x85, + 0x0c, 0x29, 0xc0, 0x84, 0xf8, 0xb5, 0xe8, 0x2c, 0xbe, 0x75, 0xab, 0x90, 0x35, 0x20, 0x6f, 0xdd, + 0x58, 0x2c, 0xe4, 0x16, 0xb2, 0xf3, 0x99, 0x84, 0xfb, 0xd3, 0x68, 0x21, 0xcf, 0xaf, 0xe6, 0xac, + 0x5f, 0xcf, 0x40, 0x5e, 0xb6, 0x9d, 0xdc, 0x82, 0x5c, 0xb5, 0xba, 0x9a, 0x70, 0x58, 0x8a, 0x4f, + 0x19, 0xbe, 0x9f, 0x86, 0xa1, 0x6e, 0x95, 0xca, 0x08, 0x18, 0xdd, 0xd6, 0x5a, 0x55, 0x08, 0x07, + 0x92, 0x2e, 0xde, 0xbc, 0x39, 0x5d, 0x8a, 0x17, 0xc7, 0x2d, 0xc8, 0xdd, 0x7d, 0xb4, 0x25, 0xb4, + 0x0a, 0x49, 0x17, 0xef, 0xa7, 0x9c, 0xee, 0xa3, 0x7d, 0x7d, 0x97, 0x67, 0x04, 0x96, 0x0d, 0xe3, + 0xda, 0x42, 0xe6, 0x87, 0x6e, 0xd3, 0x57, 0x8e, 0xc7, 0xe2, 0xd0, 0x65, 0x10, 0x5b, 0x94, 0x30, + 0x19, 0x61, 0xcd, 0xaf, 0xb9, 0x0d, 0x71, 0x7a, 0xa3, 0x8c, 0xd0, 0x60, 0x00, 0x9b, 0xc3, 0xad, + 0xdf, 0xcd, 0x40, 0x01, 0x25, 0x29, 0xb4, 0x2a, 0xf5, 0x1f, 0xd3, 0xd6, 0xc3, 0x1b, 0xe4, 0x4d, + 0xf9, 0xc9, 0x65, 0xd4, 0x85, 0xc3, 0x30, 0x7e, 0x72, 0x89, 0x37, 0x19, 0xf1, 0xd9, 0x69, 0xbe, + 0xdd, 0xd9, 0xc1, 0x7d, 0x42, 0x8f, 0xf1, 0xed, 0x2e, 0xc2, 0x30, 0x36, 0x47, 0x6c, 0x8e, 0xd8, + 0xf2, 0x88, 0x01, 0x6c, 0x0e, 0xd7, 0xf6, 0xa6, 0x9f, 0xca, 0x76, 0xf5, 0x61, 0xf1, 0x3b, 0xca, + 0xaf, 0xd2, 0xec, 0xdc, 0x40, 0xfb, 0xf5, 0x87, 0x30, 0x97, 0x1c, 0x12, 0xbc, 0x0c, 0x2a, 0xc1, + 0xb4, 0x09, 0x97, 0xf7, 0x42, 0x67, 0x52, 0xeb, 0x7a, 0xb8, 0x68, 0x27, 0xf1, 0xad, 0xff, 0x25, + 0x03, 0x63, 0xf8, 0xa7, 0xdd, 0x69, 0xa0, 0x91, 0x50, 0xe9, 0x51, 0x55, 0x5c, 0x47, 0xeb, 0xc2, + 0x9c, 0xbb, 0x1f, 0x3a, 0xe2, 0xc6, 0xda, 0xd8, 0x63, 0x14, 0xb2, 0x20, 0xe5, 0xf7, 0xcc, 0xf2, + 0x72, 0x44, 0x91, 0xf2, 0x0b, 0xe9, 0x30, 0x41, 0x2a, 0x90, 0xd1, 0xb4, 0xf0, 0x51, 0x95, 0x2d, + 0x3f, 0xfd, 0xd5, 0x1e, 0xe9, 0xfc, 0x86, 0x69, 0x5a, 0xc8, 0xd1, 0xf0, 0xd1, 0xfe, 0x51, 0xb5, + 0x64, 0xaf, 0x1b, 0x8f, 0xf6, 0xac, 0x8d, 0x86, 0x09, 0xbb, 0x40, 0xb2, 0xfe, 0x31, 0x24, 0x07, + 0x50, 0x1c, 0x78, 0x27, 0xfc, 0x36, 0xde, 0x81, 0xe1, 0x52, 0xa3, 0xe1, 0xef, 0x8b, 0x5d, 0x42, + 0xde, 0x4d, 0xa9, 0xf1, 0xe3, 0xe7, 0x19, 0x5e, 0xaf, 0x18, 0xbe, 0x62, 0x0c, 0x40, 0x96, 0x61, + 0xac, 0xf4, 0xa8, 0x5a, 0xa9, 0x94, 0xb7, 0xb6, 0xb8, 0x5f, 0x4c, 0x6e, 0xe9, 0x15, 0x39, 0x3e, + 0x9e, 0x57, 0x77, 0x92, 0xef, 0xc6, 0xb1, 0xfc, 0x1e, 0xd3, 0x91, 0xf7, 0x00, 0xee, 0xfa, 0x5e, + 0x8b, 0x5f, 0x27, 0x89, 0xce, 0x9f, 0x3f, 0x3a, 0x2c, 0x8e, 0x7f, 0xe4, 0x7b, 0x2d, 0x71, 0xff, + 0xc4, 0xda, 0x1e, 0x23, 0xd9, 0xda, 0xdf, 0x6c, 0xa4, 0x97, 0x7c, 0x6e, 0xf8, 0x33, 0x1c, 0x8f, + 0xf4, 0xb6, 0xdf, 0x65, 0xf3, 0x23, 0xd1, 0x48, 0x13, 0xa6, 0xab, 0x9d, 0xdd, 0x5d, 0xca, 0x76, + 0x76, 0x71, 0x81, 0x32, 0x22, 0x74, 0x5c, 0x15, 0x8d, 0x84, 0xeb, 0x23, 0x4c, 0x4b, 0x09, 0x97, + 0xde, 0x60, 0x0b, 0xf9, 0x5b, 0x87, 0x45, 0xf1, 0x1e, 0xcd, 0x44, 0xb5, 0x50, 0xd2, 0x77, 0x5f, + 0x9f, 0x24, 0x79, 0x93, 0x0d, 0x18, 0xe1, 0x77, 0xf7, 0xc2, 0xcf, 0xe3, 0xa5, 0x3e, 0x1f, 0x0d, + 0x47, 0xec, 0xf5, 0x3a, 0xc4, 0x4b, 0xc9, 0x23, 0xc8, 0x2f, 0x7b, 0x41, 0xad, 0x41, 0x97, 0x2b, + 0xe2, 0xec, 0xbf, 0xd4, 0x87, 0xa5, 0x44, 0xe5, 0xe3, 0x52, 0xc3, 0x5f, 0x35, 0x4f, 0x97, 0x05, + 0x24, 0x06, 0xf9, 0x99, 0x0c, 0xbc, 0xa8, 0x5a, 0x5f, 0xda, 0xa5, 0xad, 0xe8, 0xbe, 0x1b, 0xd5, + 0xf6, 0x68, 0x20, 0x46, 0x69, 0xac, 0xdf, 0x28, 0x7d, 0xa1, 0x6b, 0x94, 0xae, 0xc4, 0xa3, 0xe4, + 0x32, 0x66, 0x4e, 0x93, 0x73, 0xeb, 0x1e, 0xb3, 0x7e, 0xb5, 0x12, 0x07, 0x20, 0x7e, 0x95, 0x12, + 0x7e, 0x82, 0xaf, 0xf4, 0xe9, 0x70, 0x8c, 0x2c, 0xec, 0xfb, 0xd5, 0x6f, 0xc3, 0xce, 0x4d, 0x41, + 0xc9, 0x3d, 0xe9, 0x54, 0xc5, 0xa5, 0x92, 0x8b, 0x7d, 0x78, 0x73, 0x47, 0xab, 0xd9, 0x3e, 0xee, + 0x93, 0x7c, 0xb6, 0xd7, 0xdc, 0x6d, 0x21, 0x88, 0x1c, 0x33, 0xdb, 0x6b, 0x6e, 0x3c, 0xdb, 0x0d, + 0x37, 0x39, 0xdb, 0x6b, 0xee, 0x36, 0x59, 0xe6, 0x9e, 0xa0, 0xdc, 0x6d, 0xf0, 0x42, 0x3f, 0x6e, + 0xcb, 0x9b, 0xfc, 0x64, 0x4e, 0xf1, 0x08, 0xfd, 0x0a, 0x8c, 0x55, 0xdb, 0x6e, 0x8d, 0x36, 0xbc, + 0x9d, 0x48, 0x3c, 0x79, 0xbe, 0xdc, 0x87, 0x95, 0xc2, 0x15, 0x4f, 0x5c, 0xf2, 0xa7, 0xae, 0x26, + 0x29, 0x1c, 0xd6, 0xc2, 0xad, 0xcd, 0xfb, 0xe2, 0xd5, 0xb3, 0x5f, 0x0b, 0xb7, 0x36, 0xef, 0x0b, + 0x99, 0xa3, 0xdd, 0x34, 0x64, 0x8e, 0xcd, 0xfb, 0xa4, 0x0d, 0x53, 0x5b, 0x34, 0x08, 0xdc, 0x1d, + 0x3f, 0x68, 0xf2, 0x0b, 0x3b, 0xee, 0x8a, 0x72, 0xb5, 0x1f, 0x3f, 0x83, 0x80, 0xdf, 0xd4, 0x46, + 0x12, 0xe6, 0x24, 0x6f, 0xf9, 0x12, 0xfc, 0xad, 0xdf, 0xca, 0xc1, 0x99, 0x1e, 0xad, 0x24, 0xeb, + 0x72, 0x57, 0xcc, 0x18, 0x37, 0xab, 0x3d, 0xd0, 0xaf, 0x1d, 0xbb, 0x51, 0xae, 0x41, 0x61, 0xe5, + 0x1e, 0x8a, 0xd3, 0xfc, 0xce, 0x7b, 0xb9, 0x24, 0xcf, 0x13, 0xbc, 0xfd, 0xa3, 0x8f, 0xd1, 0x48, + 0x4f, 0xde, 0x95, 0xd7, 0x0c, 0x37, 0xd2, 0x2e, 0xca, 0x85, 0xef, 0xcf, 0xc2, 0x10, 0x9e, 0x6d, + 0x89, 0xe0, 0x39, 0x99, 0x13, 0x05, 0xcf, 0xf9, 0x22, 0x4c, 0xac, 0xdc, 0xe3, 0xca, 0xee, 0xaa, + 0x1b, 0xee, 0x89, 0x9d, 0x17, 0xdf, 0xbc, 0xe9, 0x63, 0x47, 0xe8, 0xc6, 0x7b, 0xae, 0x21, 0x56, + 0x1a, 0x14, 0xe4, 0x01, 0xcc, 0xf2, 0xb6, 0x79, 0x3b, 0x5e, 0x8d, 0xc7, 0xe0, 0xf0, 0xdc, 0x86, + 0xd8, 0x86, 0x2f, 0x1d, 0x1d, 0x16, 0x8b, 0xf4, 0x31, 0x9a, 0x1f, 0x8a, 0x72, 0x27, 0x44, 0x04, + 0xdd, 0x0e, 0x31, 0x85, 0x5e, 0x0f, 0x0c, 0x60, 0x8f, 0x61, 0x85, 0xac, 0x36, 0x56, 0x37, 0xc3, + 0xe5, 0x48, 0xd6, 0x6f, 0x0e, 0xc3, 0x42, 0xef, 0x1d, 0x94, 0x7c, 0xc9, 0x9c, 0xc0, 0xcb, 0xc7, + 0xee, 0xb9, 0xc7, 0xcf, 0xe1, 0x97, 0x61, 0x6e, 0xa5, 0x15, 0xd1, 0xa0, 0x1d, 0x78, 0x32, 0x14, + 0xc4, 0xaa, 0x1f, 0x4a, 0x73, 0x4f, 0xb4, 0xbb, 0xa4, 0xaa, 0x5c, 0xdc, 0x4b, 0xa2, 0xf1, 0xa9, + 0xc6, 0x2a, 0x95, 0x03, 0x59, 0x81, 0x29, 0x0d, 0xde, 0xe8, 0xec, 0x0a, 0x99, 0x81, 0x3f, 0x3d, + 0x68, 0x3c, 0x1b, 0x1d, 0xdd, 0x16, 0x2e, 0x41, 0xb4, 0xf0, 0x2b, 0x39, 0xb1, 0x2c, 0x2e, 0x41, + 0xae, 0xda, 0xd9, 0x16, 0xcb, 0x81, 0x2b, 0x07, 0xc6, 0x41, 0xc2, 0x4a, 0xc9, 0xe7, 0x01, 0x6c, + 0xda, 0xf6, 0x43, 0x2f, 0xf2, 0x83, 0x03, 0xdd, 0xa3, 0x28, 0x50, 0x50, 0xd3, 0x76, 0x5a, 0x42, + 0xc9, 0x2a, 0x4c, 0xc7, 0xbf, 0x36, 0xf6, 0x5b, 0xe2, 0x32, 0x75, 0x8c, 0xdf, 0x62, 0xc4, 0xe4, + 0x8e, 0xcf, 0xca, 0xf4, 0xa3, 0x31, 0x41, 0x46, 0x16, 0x21, 0xff, 0xc8, 0x0f, 0x1e, 0xef, 0xb0, + 0x89, 0x1a, 0x8a, 0x0f, 0xef, 0x7d, 0x01, 0xd3, 0x0f, 0x29, 0x89, 0xc7, 0xd6, 0xfc, 0x4a, 0xeb, + 0x89, 0x17, 0xf8, 0xad, 0x26, 0x6d, 0x45, 0xfa, 0x1b, 0x3e, 0x8d, 0xc1, 0x86, 0x2f, 0x67, 0x0c, + 0x66, 0xba, 0x7a, 0xa9, 0x16, 0xf9, 0x81, 0x78, 0xc0, 0xe7, 0xd3, 0xcd, 0x00, 0xc6, 0x74, 0x33, + 0x00, 0x1b, 0x44, 0x9b, 0xee, 0x88, 0x67, 0x03, 0x1c, 0xc4, 0x80, 0xee, 0x18, 0x8e, 0xaa, 0x74, + 0x87, 0x09, 0x1f, 0x36, 0xdd, 0xc1, 0x0b, 0x06, 0x23, 0xbe, 0xd3, 0x4e, 0xd7, 0xd5, 0x94, 0x40, + 0xb3, 0xfe, 0x60, 0xac, 0xe7, 0xba, 0x65, 0xbb, 0xfd, 0xc9, 0xd6, 0xed, 0x9a, 0x3b, 0xc0, 0xba, + 0x7d, 0x43, 0x59, 0x64, 0xeb, 0xde, 0xd9, 0x08, 0xd1, 0x8f, 0x1b, 0x8e, 0xb3, 0xf0, 0xab, 0xf9, + 0x93, 0x2c, 0x22, 0x31, 0x48, 0xd9, 0x41, 0x07, 0x29, 0x37, 0xd0, 0x20, 0x91, 0x25, 0x98, 0x54, + 0x11, 0xc2, 0x36, 0xdd, 0xc8, 0xd8, 0x9b, 0x54, 0x58, 0x37, 0xa7, 0xed, 0x46, 0xfa, 0xde, 0x64, + 0x92, 0x90, 0x77, 0x61, 0x5c, 0xb8, 0x25, 0x20, 0x87, 0xe1, 0xd8, 0x32, 0x42, 0xfa, 0x30, 0x24, + 0xe8, 0x75, 0x74, 0xf6, 0x49, 0x6e, 0x7a, 0x6d, 0xda, 0xf0, 0x5a, 0xb4, 0x8a, 0xb7, 0xf5, 0x62, + 0xc5, 0xe0, 0x27, 0xd9, 0x16, 0x25, 0x0e, 0xbf, 0xc8, 0x37, 0xee, 0xe9, 0x0c, 0xa2, 0xe4, 0x62, + 0x1d, 0x3d, 0xd1, 0x62, 0xe5, 0x76, 0x59, 0xc1, 0x9a, 0xbf, 0xeb, 0x49, 0x4b, 0x54, 0x69, 0x97, + 0x15, 0x38, 0x0d, 0x06, 0x4d, 0xd8, 0x65, 0x71, 0x54, 0xa6, 0x49, 0xb0, 0x1f, 0x95, 0xb2, 0x78, + 0xa2, 0x42, 0x4d, 0x02, 0x89, 0x4c, 0xf3, 0x5f, 0x8e, 0x24, 0xab, 0x59, 0x69, 0xba, 0x5e, 0x43, + 0x38, 0xe1, 0xc6, 0xd5, 0x50, 0x06, 0x4d, 0x56, 0x83, 0xa8, 0xa4, 0x06, 0x13, 0x36, 0xdd, 0xd9, + 0x0c, 0xfc, 0x88, 0xd6, 0x22, 0x5a, 0x17, 0xd2, 0x93, 0x54, 0x20, 0x96, 0x7c, 0x9f, 0x4b, 0x86, + 0x4b, 0x6f, 0xfe, 0xc1, 0x61, 0x31, 0xf3, 0xad, 0xc3, 0x22, 0x30, 0x10, 0xb7, 0x2d, 0x3f, 0x3a, + 0x2c, 0x9e, 0x61, 0xf3, 0xdf, 0x96, 0xc4, 0xfa, 0x11, 0xa3, 0x33, 0x25, 0xdf, 0xc3, 0x36, 0x5d, + 0x35, 0x24, 0x71, 0x65, 0x13, 0x3d, 0x2a, 0x7b, 0x2b, 0xb5, 0xb2, 0xa2, 0x36, 0xda, 0xa9, 0x95, + 0xa6, 0x56, 0x42, 0xde, 0x83, 0xf1, 0xe5, 0xca, 0xb2, 0xdf, 0xda, 0xf1, 0x76, 0xab, 0xab, 0x25, + 0x14, 0xc1, 0x84, 0x5f, 0x41, 0xcd, 0x73, 0x6a, 0x08, 0x77, 0xc2, 0x3d, 0xd7, 0x70, 0x2f, 0x8b, + 0xf1, 0xc9, 0x1d, 0x98, 0x92, 0x3f, 0x6d, 0xba, 0xf3, 0xc0, 0xae, 0xa0, 0xe4, 0x25, 0x9d, 0x39, + 0x14, 0x07, 0x36, 0x10, 0x9d, 0x40, 0x97, 0xc8, 0x13, 0x64, 0x6c, 0x31, 0x96, 0x69, 0xbb, 0xe1, + 0x1f, 0xb0, 0xe6, 0x6d, 0x79, 0x34, 0x40, 0x59, 0x4b, 0x2c, 0xc6, 0xba, 0x2a, 0x71, 0x22, 0xcf, + 0xd8, 0x6e, 0x13, 0x44, 0x64, 0x1d, 0x66, 0xc4, 0x12, 0x7f, 0xe8, 0x85, 0xde, 0xb6, 0xd7, 0xf0, + 0xa2, 0x03, 0x94, 0xb2, 0x84, 0x14, 0x22, 0xbf, 0x8b, 0x27, 0xaa, 0x54, 0x63, 0xd6, 0x4d, 0x6a, + 0xfd, 0x7a, 0x16, 0xce, 0xf5, 0xd3, 0x38, 0x48, 0xd5, 0xdc, 0xcc, 0xae, 0x0c, 0xa0, 0xa5, 0x1c, + 0xbf, 0x9d, 0xad, 0xc0, 0xd4, 0x86, 0x66, 0xc2, 0xa4, 0x4c, 0xca, 0x70, 0x30, 0x74, 0xe3, 0x26, + 0x73, 0xb5, 0x27, 0x88, 0x16, 0x9e, 0x88, 0x6d, 0xee, 0xe3, 0x3a, 0x3a, 0xdd, 0x82, 0xb1, 0x65, + 0xbf, 0x15, 0xd1, 0xa7, 0x51, 0xc2, 0x1f, 0x97, 0x03, 0x93, 0x4e, 0x5e, 0x12, 0xd5, 0xfa, 0x7f, + 0xb3, 0x70, 0xbe, 0xaf, 0xc8, 0x4d, 0xb6, 0xcc, 0x51, 0xbb, 0x3a, 0x88, 0x9c, 0x7e, 0xfc, 0xb0, + 0x2d, 0x76, 0xd9, 0x19, 0x1d, 0xeb, 0x47, 0xb0, 0xf0, 0xdf, 0x65, 0xc4, 0x20, 0x7d, 0x06, 0x46, + 0xb1, 0x2a, 0x35, 0x44, 0xfc, 0x36, 0x0a, 0x77, 0x61, 0xcf, 0xbc, 0x8d, 0xe2, 0x68, 0xe4, 0x26, + 0xe4, 0x97, 0xdd, 0x46, 0x43, 0xf3, 0x56, 0x46, 0x4d, 0xa2, 0x86, 0xb0, 0x84, 0xb1, 0x9c, 0x44, + 0x24, 0x6f, 0x03, 0xf0, 0xbf, 0xb5, 0xb3, 0x02, 0x37, 0x4b, 0x41, 0x96, 0x38, 0x2e, 0x34, 0x64, + 0x8c, 0x71, 0x58, 0xf3, 0x95, 0x5b, 0x25, 0x8f, 0x71, 0xc8, 0x00, 0x46, 0x8c, 0x43, 0x06, 0xb0, + 0x7e, 0x23, 0x07, 0x17, 0xfa, 0xeb, 0x8d, 0xe4, 0x81, 0x39, 0x05, 0xaf, 0x0d, 0xa4, 0x6d, 0x1e, + 0x3f, 0x07, 0x32, 0x62, 0x28, 0x1f, 0x90, 0x2b, 0xdd, 0xe6, 0xfe, 0xdf, 0x3e, 0x2c, 0x6a, 0x16, + 0x98, 0x77, 0x7d, 0xaf, 0xa5, 0xbd, 0x4d, 0x7c, 0x13, 0xa0, 0x1a, 0xb9, 0x91, 0x57, 0xbb, 0xfb, + 0xe8, 0x9e, 0x0c, 0xa8, 0x71, 0x6b, 0xb0, 0x96, 0xc5, 0x74, 0x7c, 0x5f, 0x11, 0x9e, 0x46, 0x08, + 0x75, 0x3e, 0xda, 0x7f, 0x6c, 0x68, 0xc6, 0x31, 0xf2, 0xc2, 0x17, 0xa0, 0x90, 0x24, 0x25, 0x97, + 0x61, 0x08, 0x1b, 0xa0, 0xf9, 0x2c, 0x24, 0x38, 0x60, 0xf9, 0xc2, 0x7d, 0xb1, 0x76, 0x56, 0x60, + 0x4a, 0x3c, 0x88, 0x9b, 0x77, 0x70, 0xf8, 0xbd, 0xca, 0xf7, 0xf4, 0xee, 0x7b, 0xb8, 0x04, 0x91, + 0xf5, 0x97, 0x19, 0x38, 0xdb, 0x53, 0x23, 0x27, 0x9b, 0xe6, 0x84, 0xbd, 0x72, 0x9c, 0x0a, 0x7f, + 0xec, 0x5c, 0x2d, 0xfc, 0x98, 0x5c, 0xfb, 0xef, 0xc3, 0x44, 0xb5, 0xb3, 0x9d, 0x54, 0xb2, 0x78, + 0x78, 0x05, 0x0d, 0xae, 0x9f, 0x60, 0x3a, 0x3e, 0xeb, 0xbf, 0x7c, 0xf1, 0x17, 0x96, 0x25, 0x9a, + 0x95, 0x95, 0x72, 0x54, 0x44, 0x57, 0x58, 0xc3, 0xae, 0xc8, 0x24, 0xb2, 0x7e, 0x2d, 0x9b, 0xae, + 0xad, 0x32, 0xed, 0xfe, 0x04, 0xda, 0xea, 0x9d, 0xe5, 0xcd, 0xe3, 0xfb, 0xfe, 0x5f, 0xca, 0xbe, + 0xe3, 0x03, 0xa8, 0xd8, 0xf1, 0xe4, 0x85, 0xa2, 0x78, 0x00, 0x95, 0xbb, 0x63, 0x68, 0x3e, 0x80, + 0x4a, 0x64, 0xf2, 0x16, 0x8c, 0xad, 0xf9, 0xdc, 0x45, 0x5d, 0xf6, 0x98, 0x7b, 0xf2, 0x49, 0xa0, + 0xbe, 0x3d, 0x2a, 0x4c, 0xa6, 0x5b, 0x98, 0x13, 0x2f, 0x8d, 0xc9, 0x50, 0xb7, 0x48, 0x2c, 0x17, + 0xf3, 0xda, 0xcd, 0x24, 0xb3, 0xfe, 0x93, 0x61, 0xb0, 0x8e, 0xbf, 0x34, 0x20, 0x1f, 0x9a, 0x63, + 0x77, 0x6d, 0xe0, 0xeb, 0x86, 0x81, 0xb6, 0xdc, 0x52, 0xa7, 0xee, 0xd1, 0x56, 0xcd, 0xf4, 0x2f, + 0x17, 0x30, 0x7d, 0x0b, 0x94, 0x78, 0x1f, 0xc7, 0xdd, 0x6b, 0xe1, 0xbf, 0xce, 0xc5, 0x9f, 0x5a, + 0xe2, 0x68, 0xcc, 0x7c, 0x8c, 0xa3, 0x91, 0xdc, 0x83, 0x82, 0x0e, 0xd1, 0x5e, 0x42, 0x51, 0x72, + 0x31, 0x18, 0x25, 0x1a, 0xd5, 0x45, 0x68, 0x9e, 0xaf, 0xb9, 0xc1, 0xcf, 0xd7, 0x58, 0x7c, 0xc7, + 0xfa, 0x87, 0xba, 0xc5, 0xf7, 0xa4, 0x4b, 0xa7, 0x86, 0x2e, 0xfd, 0xd1, 0x43, 0x71, 0x68, 0x0d, + 0x9b, 0xfe, 0xe8, 0x29, 0x07, 0x97, 0x8e, 0x2e, 0x5d, 0xea, 0xf1, 0xa7, 0xe6, 0x51, 0xaa, 0x5c, + 0xea, 0x39, 0x7d, 0x9a, 0x4b, 0xbd, 0x22, 0x61, 0x07, 0xa0, 0xdd, 0x69, 0xf1, 0x60, 0xba, 0xa3, + 0xf1, 0x01, 0x18, 0x74, 0x5a, 0x4e, 0x32, 0xa0, 0xae, 0x42, 0xb4, 0x7e, 0x2c, 0x0b, 0x53, 0x7c, + 0xc3, 0xe5, 0x4f, 0x19, 0xcf, 0xed, 0x33, 0xd1, 0x3b, 0xc6, 0x33, 0x91, 0x8c, 0x1e, 0xa4, 0x77, + 0x6d, 0xa0, 0x47, 0xa2, 0x3d, 0x20, 0xdd, 0x34, 0xc4, 0x86, 0x09, 0x1d, 0xda, 0xff, 0x7d, 0xe8, + 0x46, 0x1c, 0x68, 0x4a, 0x9c, 0x77, 0xf8, 0x48, 0x17, 0xda, 0x06, 0x0f, 0xeb, 0x6f, 0x67, 0x61, + 0x52, 0x7b, 0xd4, 0x7f, 0x6e, 0x07, 0xfe, 0x0b, 0xc6, 0xc0, 0xcf, 0x2b, 0xb7, 0x16, 0xd5, 0xb3, + 0x81, 0xc6, 0xbd, 0x03, 0x33, 0x5d, 0x24, 0x49, 0xdb, 0x88, 0xcc, 0x20, 0xb6, 0x11, 0x6f, 0x74, + 0x47, 0xad, 0xe1, 0xc1, 0x9f, 0x55, 0x28, 0x04, 0x3d, 0x4c, 0xce, 0x4f, 0x64, 0x61, 0x4e, 0xfc, + 0xc2, 0x30, 0x6f, 0x5c, 0xe2, 0x78, 0x6e, 0xe7, 0xa2, 0x64, 0xcc, 0x45, 0xd1, 0x9c, 0x0b, 0xad, + 0x83, 0xbd, 0xa7, 0xc4, 0xfa, 0x21, 0x80, 0xf9, 0x5e, 0x04, 0x03, 0x7b, 0x8f, 0xc6, 0xfe, 0x34, + 0xd9, 0x01, 0xfc, 0x69, 0xd6, 0xa0, 0x80, 0x55, 0x89, 0x40, 0x4e, 0x21, 0xd3, 0x5b, 0x73, 0xb1, + 0x92, 0xc8, 0x63, 0xf1, 0x89, 0xc0, 0x52, 0x61, 0x42, 0x71, 0xed, 0xa2, 0x24, 0xbf, 0x92, 0x81, + 0x29, 0x04, 0xae, 0x3c, 0xa1, 0xad, 0x08, 0x99, 0x0d, 0x09, 0x47, 0x0b, 0xf5, 0x8a, 0x54, 0x8d, + 0x02, 0xaf, 0xb5, 0x2b, 0x9e, 0x91, 0xb6, 0xc5, 0x33, 0xd2, 0xbb, 0xfc, 0xf9, 0xeb, 0x5a, 0xcd, + 0x6f, 0x5e, 0xdf, 0x0d, 0xdc, 0x27, 0x1e, 0xb7, 0x57, 0x71, 0x1b, 0xd7, 0xe3, 0xdc, 0x03, 0x6d, + 0x2f, 0x91, 0x4d, 0x40, 0xb0, 0xc2, 0x27, 0x3a, 0xde, 0x50, 0x8a, 0xd5, 0x26, 0xf5, 0x6b, 0xb3, + 0x45, 0xe4, 0xbb, 0xe0, 0x0c, 0x8f, 0xd2, 0xc2, 0xd4, 0x34, 0xaf, 0xd5, 0xf1, 0x3b, 0xe1, 0x92, + 0x5b, 0x7b, 0xcc, 0x64, 0x35, 0xee, 0x0e, 0x87, 0x3d, 0xaf, 0xa9, 0x42, 0x67, 0x9b, 0x97, 0x1a, + 0xee, 0xbf, 0xe9, 0x0c, 0xc8, 0x2a, 0xcc, 0xf0, 0xa2, 0x52, 0x27, 0xf2, 0xab, 0x35, 0xb7, 0xe1, + 0xb5, 0x76, 0xf1, 0x40, 0xc8, 0xf3, 0xf3, 0xc8, 0xed, 0x44, 0xbe, 0x13, 0x72, 0xb8, 0xae, 0x6e, + 0x77, 0x11, 0x91, 0x0a, 0x4c, 0xdb, 0xd4, 0xad, 0xdf, 0x77, 0x9f, 0x2e, 0xbb, 0x6d, 0xb7, 0xc6, + 0x94, 0xf7, 0x3c, 0x3e, 0xb9, 0xe2, 0xa9, 0x1c, 0x50, 0xb7, 0xee, 0x34, 0xdd, 0xa7, 0x4e, 0x4d, + 0x14, 0x9a, 0xf7, 0xae, 0x06, 0x9d, 0x62, 0xe5, 0xb5, 0x14, 0xab, 0xb1, 0x24, 0x2b, 0xaf, 0xd5, + 0x9b, 0x55, 0x4c, 0x27, 0x59, 0x6d, 0xb9, 0xc1, 0x2e, 0x8d, 0xb8, 0xb9, 0x27, 0x5c, 0xcc, 0x5c, + 0xc9, 0x68, 0xac, 0x22, 0x2c, 0x73, 0xd0, 0xf4, 0x33, 0xc9, 0x4a, 0xa3, 0x63, 0x2b, 0xef, 0x51, + 0xe0, 0x45, 0x54, 0xef, 0xe1, 0x38, 0x36, 0x0b, 0xc7, 0x1f, 0x0d, 0x65, 0x7b, 0x75, 0xb1, 0x8b, + 0x32, 0xe6, 0xa6, 0x75, 0x72, 0xa2, 0x8b, 0x5b, 0x7a, 0x2f, 0xbb, 0x28, 0x15, 0x37, 0xbd, 0x9f, + 0x93, 0xd8, 0x4f, 0x8d, 0x5b, 0x8f, 0x8e, 0x76, 0x51, 0x92, 0x75, 0x36, 0x68, 0x11, 0x6d, 0xb1, + 0x15, 0x2d, 0xcc, 0x5d, 0xa7, 0xb0, 0x69, 0x2f, 0x0b, 0x9b, 0xad, 0x42, 0x20, 0x8b, 0x9d, 0x14, + 0xe3, 0xd7, 0x24, 0x31, 0xf9, 0x5e, 0x98, 0x7e, 0x10, 0xd2, 0xdb, 0x95, 0xcd, 0xaa, 0x0c, 0xea, + 0x82, 0x37, 0x44, 0x53, 0x8b, 0x37, 0x8e, 0xd9, 0x74, 0xae, 0xe9, 0x34, 0x98, 0x02, 0x80, 0xcf, + 0x5b, 0x27, 0xa4, 0xce, 0x8e, 0xd7, 0x0e, 0x55, 0x84, 0x2c, 0x7d, 0xde, 0x12, 0x55, 0x59, 0xab, + 0x30, 0xd3, 0xc5, 0x86, 0x4c, 0x01, 0x30, 0xa0, 0xf3, 0x60, 0xbd, 0xba, 0xb2, 0x55, 0x78, 0x81, + 0x14, 0x60, 0x02, 0x7f, 0xaf, 0xac, 0x97, 0x96, 0xd6, 0x56, 0xca, 0x85, 0x0c, 0x99, 0x81, 0x49, + 0x84, 0x94, 0x2b, 0x55, 0x0e, 0xca, 0xf2, 0x00, 0xd0, 0x76, 0x81, 0x7f, 0xba, 0x11, 0xfb, 0x00, + 0xf0, 0x4c, 0xb1, 0xfe, 0x4e, 0x16, 0xce, 0xca, 0x63, 0x85, 0x46, 0x4c, 0x04, 0xf3, 0x5a, 0xbb, + 0xcf, 0xf9, 0xe9, 0x70, 0xdb, 0x38, 0x1d, 0x5e, 0x4e, 0x9c, 0xd4, 0x89, 0x5e, 0xf6, 0x39, 0x22, + 0x7e, 0x67, 0x0c, 0xce, 0xf7, 0xa5, 0x22, 0x5f, 0x62, 0xa7, 0xb9, 0x47, 0x5b, 0x51, 0xa5, 0xde, + 0xa0, 0x5b, 0x5e, 0x93, 0xfa, 0x9d, 0x48, 0x98, 0x57, 0x5f, 0xc2, 0x4b, 0x19, 0x2c, 0x74, 0xbc, + 0x7a, 0x83, 0x3a, 0x11, 0x2f, 0x36, 0x96, 0x5b, 0x37, 0x35, 0x63, 0xa9, 0xd2, 0x91, 0x54, 0x5a, + 0x11, 0x0d, 0x9e, 0xa0, 0x09, 0x97, 0x62, 0xf9, 0x98, 0xd2, 0xb6, 0xe3, 0xb2, 0x52, 0xc7, 0x13, + 0xc5, 0x26, 0xcb, 0x2e, 0x6a, 0x72, 0x5b, 0x63, 0xb9, 0xcc, 0x54, 0xb8, 0xfb, 0xee, 0x53, 0x61, + 0x53, 0x22, 0xa2, 0xfb, 0x29, 0x96, 0xdc, 0xcb, 0xb4, 0xe9, 0x3e, 0xb5, 0xbb, 0x49, 0xc8, 0xd7, + 0xe0, 0x94, 0x38, 0x80, 0x44, 0xc4, 0x01, 0xd9, 0x63, 0x1e, 0xcf, 0xe0, 0xd5, 0xa3, 0xc3, 0xe2, + 0x19, 0x19, 0x17, 0x51, 0xc6, 0x98, 0x48, 0xeb, 0x75, 0x3a, 0x17, 0xb2, 0xc5, 0x0e, 0xe4, 0xc4, + 0x70, 0xdc, 0xa7, 0x61, 0x28, 0x1d, 0x8d, 0x84, 0x7a, 0xa3, 0x0f, 0xa6, 0xd3, 0xe4, 0xe5, 0x76, + 0x4f, 0x4a, 0xb2, 0x0a, 0x53, 0x8f, 0xe8, 0xb6, 0x3e, 0x3f, 0x23, 0x6a, 0xab, 0x2a, 0xec, 0xd3, + 0xed, 0xde, 0x93, 0x93, 0xa0, 0x23, 0x1e, 0x5e, 0xf2, 0x3e, 0x3d, 0x58, 0xf3, 0xc2, 0x88, 0xb6, + 0x68, 0x80, 0x91, 0x6c, 0x46, 0x71, 0x33, 0x98, 0x8f, 0x25, 0x64, 0xb3, 0x7c, 0xe9, 0xa5, 0xa3, + 0xc3, 0xe2, 0x79, 0xee, 0xb1, 0xd7, 0x10, 0x70, 0x27, 0x91, 0xcc, 0xa3, 0x9b, 0x2b, 0xf9, 0x06, + 0x4c, 0xdb, 0x7e, 0x27, 0xf2, 0x5a, 0xbb, 0xd5, 0x28, 0x70, 0x23, 0xba, 0xcb, 0x0f, 0xa4, 0x38, + 0x64, 0x4e, 0xa2, 0x54, 0xbc, 0x0f, 0x72, 0xa0, 0x13, 0x0a, 0xa8, 0x71, 0x22, 0x98, 0x04, 0xe4, + 0xeb, 0x30, 0xc5, 0x7d, 0xcd, 0x55, 0x05, 0x63, 0x46, 0x20, 0x72, 0xb3, 0xf0, 0xe1, 0x0d, 0x61, + 0x02, 0x80, 0xd0, 0xb4, 0x0a, 0x12, 0xdc, 0xc8, 0x57, 0xc4, 0x60, 0x6d, 0x7a, 0xad, 0x5d, 0xb5, + 0x8c, 0x01, 0x47, 0xfe, 0xcd, 0x78, 0x48, 0xda, 0xac, 0xb9, 0x72, 0x19, 0xf7, 0xb0, 0x67, 0xea, + 0xe6, 0x43, 0x22, 0x38, 0x5f, 0x0a, 0x43, 0x2f, 0x8c, 0x84, 0x13, 0xc2, 0xca, 0x53, 0x5a, 0xeb, + 0x30, 0x64, 0xa6, 0x28, 0xd2, 0x80, 0x1b, 0xc1, 0x0e, 0x2f, 0x5d, 0x3b, 0x3a, 0x2c, 0xbe, 0xe6, + 0x22, 0xa2, 0x23, 0xfc, 0x16, 0x1c, 0x2a, 0x51, 0x9d, 0x7d, 0x8e, 0xab, 0xf5, 0xa1, 0x3f, 0x53, + 0xf2, 0x75, 0x38, 0xbd, 0xec, 0x86, 0xb4, 0xd2, 0x0a, 0x69, 0x2b, 0xf4, 0x22, 0xef, 0x09, 0x15, + 0x83, 0x8a, 0x87, 0x5f, 0x1e, 0xd3, 0x9e, 0x58, 0x35, 0x37, 0x64, 0x1f, 0xa6, 0x42, 0x71, 0xc4, + 0xa4, 0x68, 0xd5, 0xf4, 0xe0, 0x42, 0x6c, 0x98, 0xaa, 0x56, 0x57, 0xcb, 0x9e, 0xab, 0xbe, 0xab, + 0x49, 0x1c, 0xaf, 0xd7, 0xf0, 0x7e, 0x26, 0xdc, 0x73, 0xea, 0x9e, 0xab, 0x3e, 0xa8, 0x1e, 0x83, + 0x95, 0xe0, 0x60, 0x1d, 0x66, 0xa0, 0x90, 0x9c, 0x4a, 0xf2, 0x65, 0x18, 0xe3, 0xc6, 0x40, 0x34, + 0xdc, 0x13, 0xee, 0xd2, 0xd2, 0xb6, 0x44, 0xc1, 0x4d, 0x22, 0xe1, 0x14, 0xc4, 0x4d, 0x8d, 0xa8, + 0x6e, 0xb7, 0x80, 0x4e, 0x41, 0x92, 0x88, 0xd4, 0x61, 0x82, 0xcf, 0x16, 0xc5, 0x78, 0x59, 0xc2, + 0x26, 0xf4, 0x25, 0xfd, 0xeb, 0x10, 0x45, 0x09, 0xfe, 0xf8, 0xf4, 0x23, 0xd6, 0x04, 0x47, 0x30, + 0xaa, 0x30, 0xb8, 0x2e, 0x01, 0xe4, 0x25, 0xa1, 0x75, 0x16, 0xce, 0xf4, 0x68, 0xb3, 0xf5, 0x04, + 0x9f, 0x83, 0x7b, 0xd4, 0x48, 0xbe, 0x0c, 0x73, 0x48, 0xb8, 0xec, 0xb7, 0x5a, 0xb4, 0x16, 0xe1, + 0x76, 0x24, 0xaf, 0x50, 0x73, 0xdc, 0xe6, 0x80, 0xf7, 0xb7, 0xa6, 0x10, 0x9c, 0xe4, 0x4d, 0x6a, + 0x2a, 0x07, 0xeb, 0xe7, 0xb3, 0x30, 0x2f, 0x76, 0x38, 0x9b, 0xd6, 0xfc, 0xa0, 0xfe, 0xfc, 0x9f, + 0xa8, 0x2b, 0xc6, 0x89, 0x7a, 0x49, 0xc5, 0xda, 0x48, 0xeb, 0x64, 0x9f, 0x03, 0xf5, 0xd7, 0x32, + 0x70, 0xae, 0x1f, 0x11, 0x1b, 0x1d, 0x15, 0x1f, 0x6c, 0xac, 0x2b, 0x0e, 0x58, 0x1b, 0x66, 0x71, + 0x42, 0x97, 0xf7, 0x68, 0xed, 0x71, 0xb8, 0xea, 0x87, 0x11, 0x9a, 0xa5, 0x67, 0x7b, 0x3c, 0x58, + 0xbe, 0x91, 0xfa, 0x60, 0x79, 0x9a, 0xaf, 0xb2, 0x1a, 0xf2, 0xe0, 0x11, 0xcc, 0x1e, 0xd3, 0x83, + 0xd0, 0x4e, 0x63, 0x8d, 0xe6, 0xc5, 0xa5, 0x4e, 0xb4, 0xb7, 0x19, 0xd0, 0x1d, 0x1a, 0xd0, 0x56, + 0x8d, 0x7e, 0x87, 0x99, 0x17, 0x9b, 0x9d, 0x1b, 0xe8, 0x06, 0xe3, 0xdf, 0x9a, 0x84, 0xb9, 0x34, + 0x32, 0x36, 0x2e, 0x9a, 0xd2, 0x9c, 0xcc, 0xca, 0xf6, 0x83, 0x19, 0x98, 0xa8, 0xd2, 0x9a, 0xdf, + 0xaa, 0xdf, 0x46, 0xb3, 0x10, 0x31, 0x3a, 0x0e, 0x17, 0x1a, 0x18, 0xdc, 0xd9, 0x49, 0xd8, 0x8b, + 0x7c, 0xfb, 0xb0, 0xf8, 0xc5, 0xc1, 0x74, 0xd5, 0x9a, 0x8f, 0x31, 0x2e, 0x22, 0x8c, 0x1a, 0xae, + 0xaa, 0xc0, 0x17, 0x1e, 0xa3, 0x52, 0xb2, 0x04, 0x93, 0xe2, 0x73, 0xf5, 0xf5, 0xf0, 0x70, 0x3c, + 0x1c, 0x89, 0x2c, 0xe8, 0xba, 0x7f, 0x34, 0x48, 0xc8, 0x4d, 0xc8, 0x3d, 0x58, 0xbc, 0x2d, 0xe6, + 0x40, 0xc6, 0x5d, 0x7f, 0xb0, 0x78, 0x1b, 0xaf, 0xc3, 0x98, 0x8a, 0x31, 0xd9, 0x59, 0x34, 0x2c, + 0x35, 0x1e, 0x2c, 0xde, 0x26, 0x7f, 0x13, 0x4e, 0x95, 0xbd, 0x50, 0x54, 0xc1, 0x0d, 0xdd, 0xeb, + 0xe8, 0xde, 0x35, 0xd2, 0x63, 0xf5, 0x7e, 0x2e, 0x75, 0xf5, 0xbe, 0x54, 0x57, 0x4c, 0x1c, 0x6e, + 0x45, 0x5f, 0x4f, 0x86, 0xc1, 0x4b, 0xaf, 0x87, 0x7c, 0x04, 0x53, 0x78, 0x77, 0x8e, 0xb6, 0xff, + 0x18, 0x79, 0x78, 0xb4, 0x47, 0xcd, 0x9f, 0x49, 0xad, 0x79, 0x81, 0x3b, 0x89, 0xa3, 0x07, 0x01, + 0x46, 0x29, 0x36, 0xb4, 0x7e, 0x83, 0x33, 0xb9, 0x0b, 0xd3, 0x42, 0xfc, 0xda, 0xd8, 0xd9, 0xda, + 0xa3, 0x65, 0xf7, 0x40, 0x18, 0x59, 0xa0, 0x46, 0x27, 0x64, 0x36, 0xc7, 0xdf, 0x71, 0xa2, 0x3d, + 0xea, 0xd4, 0x5d, 0x43, 0x50, 0x49, 0x10, 0x92, 0xef, 0x81, 0xf1, 0x35, 0xbf, 0xc6, 0x24, 0x6f, + 0xdc, 0x19, 0xb8, 0xdd, 0xc5, 0x87, 0x98, 0xf7, 0x8b, 0x83, 0x13, 0xe2, 0xd4, 0xb7, 0x0f, 0x8b, + 0xef, 0x9c, 0x74, 0xd1, 0x68, 0x15, 0xd8, 0x7a, 0x6d, 0x64, 0x19, 0xf2, 0x8f, 0xe8, 0x36, 0xeb, + 0x6d, 0x32, 0x27, 0x90, 0x04, 0x0b, 0xb3, 0x2a, 0xf1, 0xcb, 0x30, 0xab, 0x12, 0x30, 0x12, 0xc0, + 0x0c, 0x8e, 0xcf, 0xa6, 0x1b, 0x86, 0xfb, 0x7e, 0x50, 0xc7, 0xe0, 0xef, 0xbd, 0x4c, 0x3a, 0x16, + 0x53, 0x07, 0xff, 0x1c, 0x1f, 0xfc, 0xb6, 0xc6, 0x41, 0x17, 0x20, 0xbb, 0xd8, 0x93, 0x6f, 0xc0, + 0x94, 0xf0, 0x6c, 0xbe, 0x7f, 0xbb, 0x84, 0x5f, 0xe5, 0x84, 0xe1, 0x24, 0x67, 0x16, 0x72, 0x29, + 0x55, 0x38, 0x4a, 0xcb, 0x1b, 0x28, 0xa7, 0xb9, 0xe3, 0x9a, 0xaf, 0x66, 0x3a, 0x09, 0xd9, 0x84, + 0xf1, 0x32, 0x7d, 0xe2, 0xd5, 0x28, 0x3a, 0xf2, 0x08, 0x23, 0x5a, 0x95, 0xd4, 0x24, 0x2e, 0xe1, + 0x77, 0x31, 0x75, 0x04, 0x70, 0xb7, 0x20, 0xd3, 0x6a, 0x52, 0x21, 0x92, 0x5b, 0x90, 0xab, 0x94, + 0x37, 0x85, 0x0d, 0xad, 0xf4, 0x8d, 0xa9, 0xd4, 0x37, 0x65, 0x0a, 0x08, 0x34, 0x82, 0xf2, 0xea, + 0x86, 0x05, 0x6e, 0xa5, 0xbc, 0x49, 0x76, 0x60, 0x12, 0x07, 0x60, 0x95, 0xba, 0x7c, 0x6c, 0xa7, + 0x7b, 0x8c, 0xed, 0xb5, 0xd4, 0xb1, 0x9d, 0xe7, 0x63, 0xbb, 0x27, 0xa8, 0x8d, 0x98, 0xf6, 0x3a, + 0x5b, 0x26, 0xd2, 0x8a, 0x3c, 0x1b, 0x32, 0x12, 0xfb, 0xd6, 0x1a, 0x1a, 0x79, 0x08, 0x91, 0x56, + 0xa6, 0xe5, 0x50, 0xa1, 0xe1, 0x7b, 0x9a, 0xe8, 0x77, 0xf3, 0x21, 0x5f, 0x80, 0xa1, 0x8d, 0xc7, + 0x91, 0x3b, 0x3f, 0x63, 0x8c, 0x23, 0x03, 0xc9, 0xee, 0xe3, 0x2d, 0xa4, 0xff, 0xd8, 0x08, 0x94, + 0x84, 0x34, 0x64, 0x11, 0x46, 0x37, 0x2b, 0x0f, 0xab, 0x0d, 0x3f, 0x9a, 0x27, 0x4a, 0x4f, 0x22, + 0x6d, 0xef, 0x89, 0x13, 0x36, 0x7c, 0x33, 0x57, 0x8f, 0x44, 0x64, 0xd3, 0xb7, 0xea, 0x06, 0xf5, + 0x7d, 0x37, 0x40, 0x0f, 0xcc, 0x59, 0xa3, 0x5a, 0xad, 0x84, 0x4f, 0xdf, 0x9e, 0x00, 0x24, 0xdc, + 0x32, 0x75, 0x16, 0xe4, 0xbb, 0xe0, 0x6c, 0xe8, 0xed, 0xb6, 0xdc, 0xa8, 0x13, 0x50, 0xc7, 0x6d, + 0xec, 0xfa, 0x81, 0x17, 0xed, 0x35, 0x9d, 0xb0, 0xe3, 0x45, 0x74, 0x7e, 0xce, 0xc8, 0xe4, 0x59, + 0x95, 0x78, 0x25, 0x89, 0x56, 0x65, 0x58, 0xf6, 0x99, 0x30, 0xbd, 0x40, 0xdc, 0x5e, 0xcc, 0x88, + 0x25, 0x28, 0x86, 0xed, 0xfe, 0xed, 0x92, 0xf5, 0x9f, 0x67, 0x70, 0x33, 0x26, 0xaf, 0x61, 0x14, + 0x13, 0xf5, 0x2c, 0x87, 0xf7, 0xb0, 0x6e, 0x3b, 0x11, 0x19, 0x99, 0xa3, 0x90, 0x37, 0x60, 0xe4, + 0xb6, 0x5b, 0xa3, 0x91, 0x7c, 0x3c, 0x45, 0xe4, 0x1d, 0x84, 0xe8, 0x97, 0xb6, 0x1c, 0x87, 0xc9, + 0x89, 0x7c, 0x91, 0x96, 0xe2, 0x04, 0xac, 0xcb, 0x25, 0xf9, 0x76, 0x8a, 0x72, 0xa2, 0x58, 0xdc, + 0x5a, 0x86, 0xd6, 0x84, 0x9d, 0x71, 0x2a, 0x07, 0xeb, 0xcf, 0x33, 0xf1, 0xee, 0x42, 0x5e, 0x85, + 0x21, 0x7b, 0x53, 0xb5, 0x9f, 0x7b, 0x3a, 0x26, 0x9a, 0x8f, 0x08, 0xe4, 0x2b, 0x70, 0x4a, 0xe3, + 0xd3, 0x65, 0xf4, 0xfc, 0x0a, 0x3a, 0xe2, 0x69, 0x2d, 0x49, 0xb7, 0x7c, 0x4e, 0xe7, 0x81, 0x42, + 0x71, 0x5c, 0x50, 0xa6, 0x2d, 0x8f, 0xf3, 0xd6, 0x3a, 0xab, 0xf3, 0xae, 0x23, 0x42, 0xb2, 0xb3, + 0x69, 0x1c, 0xb8, 0x1f, 0x9e, 0xf5, 0xdb, 0x19, 0x63, 0xd7, 0x50, 0x99, 0x2e, 0x33, 0xc7, 0x64, + 0xba, 0x7c, 0x1b, 0xa0, 0xd4, 0x89, 0xfc, 0x95, 0x56, 0xe0, 0x37, 0xf8, 0x6d, 0x88, 0x08, 0x0e, + 0x8e, 0x77, 0xbc, 0x14, 0xc1, 0x86, 0xbb, 0x90, 0x42, 0x4e, 0xb5, 0x0f, 0xcf, 0x7d, 0x5c, 0xfb, + 0x70, 0xeb, 0x0f, 0x33, 0xc6, 0x77, 0xc3, 0xa4, 0x3d, 0xf9, 0xe9, 0x69, 0xe6, 0x3b, 0xdd, 0x9f, + 0x5e, 0xfc, 0xe1, 0xfd, 0xff, 0x33, 0x70, 0x9a, 0x1b, 0x5a, 0xaf, 0x77, 0x9a, 0xdb, 0x34, 0x78, + 0xe8, 0x36, 0xbc, 0x7a, 0x1c, 0x23, 0x2a, 0xb6, 0xe5, 0xd2, 0xaa, 0x49, 0xc7, 0xe7, 0x0a, 0x27, + 0x37, 0xfc, 0x76, 0x5a, 0x58, 0xe8, 0x3c, 0x51, 0xa5, 0xba, 0xc2, 0x99, 0x4e, 0x6f, 0xfd, 0x7a, + 0x06, 0x5e, 0x3a, 0xb6, 0x16, 0x72, 0x1d, 0x46, 0x65, 0x54, 0xf6, 0x0c, 0x0e, 0x3c, 0x1a, 0x3d, + 0x76, 0x47, 0x64, 0x97, 0x58, 0xe4, 0xab, 0x70, 0x4a, 0x67, 0xb5, 0x15, 0xb8, 0x9e, 0x1e, 0xfb, + 0x3c, 0xa5, 0xd5, 0x11, 0x43, 0x49, 0x4a, 0x5d, 0xe9, 0x4c, 0xac, 0xff, 0x3b, 0xa3, 0xe5, 0xbe, + 0x7d, 0x4e, 0x65, 0xf1, 0x5b, 0x86, 0x2c, 0x2e, 0x23, 0xe4, 0xa9, 0x5e, 0xb1, 0xb2, 0x54, 0xfd, + 0x69, 0x5a, 0x33, 0xde, 0x45, 0xc0, 0x8f, 0x64, 0x61, 0xfc, 0x41, 0x48, 0x03, 0xfe, 0x20, 0xfb, + 0x9d, 0x15, 0x27, 0x4c, 0xf5, 0x6b, 0xa0, 0x48, 0x4e, 0x7f, 0x9a, 0xc1, 0x8b, 0x7a, 0x9d, 0x82, + 0x8d, 0x86, 0x96, 0xef, 0x0a, 0x47, 0x03, 0x33, 0x5d, 0x21, 0x94, 0x07, 0x10, 0x5a, 0x33, 0x53, + 0xdf, 0x61, 0xfe, 0xc3, 0x35, 0xf2, 0x45, 0x18, 0x7e, 0x80, 0xd7, 0x8e, 0x66, 0x64, 0x01, 0xc5, + 0x1f, 0x0b, 0xf9, 0x26, 0xdd, 0x09, 0xcd, 0xa0, 0x47, 0x9c, 0x90, 0x54, 0x61, 0x74, 0x39, 0xa0, + 0x98, 0xc9, 0x76, 0x68, 0x70, 0xbf, 0xd8, 0x1a, 0x27, 0x49, 0xfa, 0xc5, 0x0a, 0x4e, 0xd6, 0xcf, + 0x65, 0x81, 0xc4, 0x7d, 0xc4, 0xb4, 0x2d, 0xe1, 0x73, 0x3b, 0xe9, 0x1f, 0x18, 0x93, 0x7e, 0xbe, + 0x6b, 0xd2, 0x79, 0xf7, 0x06, 0x9a, 0xfb, 0xdf, 0xcd, 0xc0, 0xe9, 0x74, 0x42, 0x72, 0x09, 0x46, + 0x36, 0xb6, 0x36, 0x65, 0x70, 0x0a, 0xd1, 0x15, 0xbf, 0x8d, 0x3a, 0xbf, 0x2d, 0x8a, 0xc8, 0x9b, + 0x30, 0xf2, 0x25, 0x7b, 0x99, 0x9d, 0x43, 0x5a, 0x7c, 0xf1, 0x6f, 0x06, 0x4e, 0xcd, 0x3c, 0x8a, + 0x04, 0x92, 0x3e, 0xb7, 0xb9, 0x67, 0x36, 0xb7, 0x3f, 0x91, 0x85, 0xe9, 0x52, 0xad, 0x46, 0xc3, + 0x90, 0x09, 0x39, 0x34, 0x8c, 0x9e, 0xdb, 0x89, 0x4d, 0x0f, 0x3b, 0x61, 0xf4, 0x6d, 0xa0, 0x59, + 0xfd, 0xfd, 0x0c, 0x9c, 0x92, 0x54, 0x4f, 0x3c, 0xba, 0xbf, 0xb5, 0x17, 0xd0, 0x70, 0xcf, 0x6f, + 0xd4, 0x07, 0x4e, 0x62, 0xc0, 0x04, 0x3d, 0x8c, 0x4c, 0xac, 0xbf, 0xce, 0xef, 0x20, 0xc4, 0x10, + 0xf4, 0x78, 0xf4, 0xe2, 0xeb, 0x30, 0x5a, 0x6a, 0xb7, 0x03, 0xff, 0x09, 0xff, 0xec, 0x45, 0x58, + 0x33, 0x97, 0x83, 0x0c, 0xb7, 0x62, 0x0e, 0x62, 0xcd, 0x28, 0xd3, 0x16, 0x0f, 0xd8, 0x35, 0xc9, + 0x9b, 0x51, 0xa7, 0x2d, 0x5d, 0x3e, 0xc6, 0x72, 0xab, 0x0a, 0x64, 0x33, 0xf0, 0x9b, 0x7e, 0x44, + 0xeb, 0xbc, 0x3f, 0xe8, 0x8d, 0x7d, 0x6c, 0x80, 0x9f, 0x2d, 0x2f, 0x6a, 0x18, 0x01, 0x7e, 0x22, + 0x06, 0xb0, 0x39, 0xdc, 0xfa, 0xdf, 0x87, 0x61, 0x42, 0x1f, 0x1d, 0x62, 0xf1, 0xc8, 0xe4, 0x7e, + 0xa0, 0x87, 0x04, 0x70, 0x11, 0x62, 0x8b, 0x92, 0x38, 0x9e, 0x46, 0xf6, 0xd8, 0x78, 0x1a, 0x8f, + 0x60, 0x72, 0x33, 0xf0, 0x31, 0xfe, 0x1a, 0xcf, 0x70, 0xce, 0xb7, 0xc2, 0x59, 0x4d, 0x7f, 0x64, + 0x13, 0x89, 0xef, 0x9a, 0x78, 0x7b, 0xd2, 0x16, 0xd8, 0x4e, 0x32, 0xff, 0xb9, 0xc9, 0x87, 0x9b, + 0x4c, 0xb8, 0xa1, 0x08, 0xa2, 0xa8, 0x4c, 0x26, 0x18, 0xc4, 0x34, 0x99, 0x60, 0x10, 0xfd, 0x5b, + 0x1b, 0x7e, 0x56, 0xdf, 0x1a, 0xf9, 0xb9, 0x0c, 0x8c, 0x97, 0x5a, 0x2d, 0x11, 0xa7, 0xe3, 0x18, + 0x17, 0xe5, 0xaf, 0x0a, 0xab, 0x89, 0x77, 0x3e, 0x96, 0xd5, 0x04, 0xca, 0x2d, 0x21, 0x4a, 0xaa, + 0x71, 0x85, 0xba, 0x06, 0xa5, 0xb5, 0x83, 0xbc, 0x03, 0x05, 0xb5, 0xc8, 0x2b, 0xad, 0x3a, 0x7d, + 0x4a, 0xc3, 0xf9, 0xd1, 0x8b, 0xb9, 0x2b, 0x93, 0x22, 0xa8, 0xab, 0x2e, 0x99, 0x26, 0x11, 0xc9, + 0x16, 0x80, 0xab, 0x56, 0x57, 0x22, 0xb7, 0x5c, 0xf7, 0xf2, 0x13, 0xd2, 0x33, 0xfe, 0xc6, 0x87, + 0x29, 0x5d, 0x7a, 0x8e, 0xf9, 0x90, 0x26, 0x4c, 0xf3, 0xc4, 0x6e, 0x98, 0xf0, 0x1d, 0xe3, 0xa0, + 0xc3, 0xb1, 0xf3, 0xf0, 0xaa, 0xb8, 0x07, 0x7b, 0x51, 0xa4, 0x8b, 0xc3, 0x1c, 0xf2, 0x4e, 0x4a, + 0x50, 0xf4, 0x24, 0x6f, 0x1e, 0x42, 0xd7, 0x3e, 0xd3, 0xdd, 0x5e, 0xbe, 0xe8, 0x7f, 0x22, 0x03, + 0xa7, 0xf5, 0x45, 0x5f, 0xed, 0x6c, 0x37, 0x3d, 0xd4, 0x05, 0xc9, 0x35, 0x18, 0x13, 0x6b, 0x52, + 0x29, 0x51, 0xdd, 0xe1, 0xdc, 0x63, 0x14, 0xb2, 0xc2, 0x96, 0x21, 0xe3, 0x21, 0xa4, 0xee, 0xd9, + 0xc4, 0x3e, 0xc5, 0x8a, 0xe2, 0xa4, 0xa1, 0x01, 0xfe, 0x36, 0xd7, 0x27, 0x83, 0x58, 0xef, 0xc3, + 0x8c, 0x39, 0x13, 0x55, 0x1a, 0x91, 0xab, 0x30, 0x2a, 0xa7, 0x2f, 0x93, 0x3e, 0x7d, 0xb2, 0xdc, + 0x7a, 0x04, 0xa4, 0x8b, 0x3e, 0x44, 0xf3, 0x26, 0x1a, 0x49, 0xf3, 0x3b, 0xf9, 0xb8, 0xd8, 0x85, + 0xb8, 0x34, 0x2b, 0xda, 0x37, 0x6e, 0xd8, 0x88, 0x33, 0x52, 0xeb, 0xcf, 0xa7, 0x60, 0x36, 0x65, + 0xcf, 0x3d, 0x46, 0x26, 0x2a, 0x9a, 0x1b, 0xc4, 0x98, 0x8a, 0x70, 0x20, 0xb7, 0x85, 0xf7, 0x61, + 0xf8, 0xd8, 0xed, 0x80, 0x7b, 0x08, 0x24, 0x76, 0x01, 0x4e, 0xf6, 0xa9, 0xc8, 0x45, 0x7a, 0x10, + 0x92, 0xe1, 0x67, 0x16, 0x84, 0x64, 0x09, 0x26, 0x45, 0xaf, 0xc4, 0x76, 0xa5, 0x59, 0xaa, 0x06, + 0xbc, 0xc0, 0xe9, 0xda, 0xb6, 0x4c, 0x12, 0xce, 0x23, 0xf4, 0x1b, 0x4f, 0xa8, 0xe0, 0x31, 0xaa, + 0xf3, 0xc0, 0x82, 0x54, 0x1e, 0x1a, 0x09, 0xf9, 0x8f, 0x30, 0x37, 0x15, 0x42, 0xf4, 0x3d, 0x2b, + 0xdf, 0x6f, 0xcf, 0xaa, 0x3f, 0x9b, 0x3d, 0xeb, 0xbc, 0x6c, 0x63, 0xfa, 0xde, 0x95, 0xd2, 0x2c, + 0xf2, 0xab, 0x19, 0x98, 0xe1, 0x91, 0x30, 0xf4, 0xc6, 0xf6, 0x8d, 0x6e, 0x50, 0x7b, 0x36, 0x8d, + 0x3d, 0x27, 0x72, 0xb2, 0xa4, 0xb7, 0xb5, 0xbb, 0x51, 0xe4, 0xbb, 0x00, 0xd4, 0x17, 0xc5, 0x03, + 0x46, 0x8e, 0x2f, 0x9e, 0x4b, 0xd9, 0x05, 0x14, 0x52, 0x1c, 0x3f, 0x3e, 0x52, 0x74, 0x46, 0x46, + 0x32, 0x05, 0x25, 0x7f, 0x13, 0xe6, 0xd8, 0xf7, 0xa2, 0x20, 0x22, 0x6e, 0xcf, 0xfc, 0x38, 0xd6, + 0xf2, 0xd9, 0xde, 0x32, 0xd1, 0xb5, 0x34, 0x32, 0x1e, 0x5e, 0x34, 0xce, 0xea, 0x1a, 0xe9, 0x2e, + 0xfe, 0xa9, 0x15, 0x61, 0x38, 0x2c, 0x6c, 0x3d, 0x8f, 0xf1, 0xde, 0x63, 0x7f, 0x3b, 0x2b, 0xbf, + 0x05, 0xbe, 0xbf, 0x85, 0xa6, 0xc3, 0x28, 0x82, 0xc8, 0x97, 0x80, 0xa8, 0x10, 0x12, 0x1c, 0x46, + 0x65, 0xfc, 0x77, 0x7e, 0x6d, 0x1c, 0x87, 0xa2, 0x08, 0x64, 0xb1, 0xbe, 0x48, 0xba, 0x89, 0x09, + 0x85, 0x39, 0xd1, 0x69, 0x06, 0x95, 0x89, 0xa3, 0xc2, 0xf9, 0x29, 0x23, 0x2a, 0x52, 0x5c, 0x12, + 0xa7, 0x7f, 0xd5, 0xb2, 0x4f, 0x19, 0x57, 0x4e, 0x69, 0xec, 0xc8, 0x2d, 0x18, 0x43, 0xaf, 0xcd, + 0x55, 0x69, 0xb4, 0x25, 0x0c, 0x48, 0xd0, 0xbf, 0xd3, 0xd9, 0x33, 0x4d, 0xaf, 0x62, 0x54, 0xa6, + 0x0e, 0x94, 0x83, 0x03, 0xbb, 0xd3, 0xc2, 0xcb, 0x5d, 0x71, 0xdf, 0x51, 0x0f, 0x0e, 0x9c, 0xa0, + 0x63, 0xba, 0xf5, 0x22, 0x12, 0xf9, 0x06, 0x8c, 0xdf, 0x77, 0x9f, 0xca, 0xbb, 0x5d, 0x71, 0x81, + 0xdb, 0x6f, 0x07, 0xb2, 0x64, 0x6f, 0x9a, 0xee, 0x53, 0xa7, 0xde, 0x49, 0x06, 0x37, 0xc5, 0x6d, + 0x48, 0x67, 0x49, 0xbe, 0x06, 0xa0, 0xdd, 0x38, 0x93, 0x63, 0x2b, 0x78, 0x49, 0xc6, 0xfa, 0x4a, + 0xbd, 0x89, 0x46, 0xfe, 0x1a, 0xc3, 0x84, 0xe4, 0x30, 0xf7, 0xe9, 0x49, 0x0e, 0xa7, 0x3e, 0x3d, + 0xc9, 0x61, 0x61, 0x1b, 0xce, 0xf6, 0xfc, 0x74, 0x52, 0x42, 0xb0, 0x5e, 0x37, 0x43, 0xb0, 0x9e, + 0xed, 0x75, 0xc4, 0x86, 0x66, 0x98, 0xff, 0xd9, 0xc2, 0x5c, 0x6f, 0xe9, 0xe4, 0x5b, 0xd9, 0xc4, + 0x91, 0x2b, 0x14, 0x0b, 0x9e, 0x62, 0xa6, 0x97, 0x4c, 0x92, 0xc5, 0x74, 0xa0, 0xfc, 0x50, 0xce, + 0xc6, 0x0a, 0x4d, 0x22, 0x83, 0x3a, 0x3f, 0x9e, 0x3f, 0xe9, 0xe9, 0xfb, 0x2e, 0x4c, 0xf1, 0x44, + 0x80, 0xf7, 0xe8, 0xc1, 0xbe, 0x1f, 0xd4, 0x65, 0x9a, 0x6c, 0x94, 0xc1, 0xbb, 0xd2, 0xef, 0x26, + 0x70, 0x49, 0x59, 0x3a, 0x02, 0x0e, 0x63, 0xed, 0x67, 0x53, 0x77, 0x31, 0x86, 0xd0, 0xcf, 0x47, + 0x90, 0xbc, 0xa5, 0x04, 0x35, 0x1a, 0xe8, 0xc1, 0xfe, 0x03, 0x09, 0x4c, 0x91, 0xd7, 0x68, 0x60, + 0xfd, 0x71, 0x0e, 0x08, 0xaf, 0x69, 0xd9, 0x6d, 0xbb, 0xe8, 0x26, 0xeb, 0x61, 0x80, 0x99, 0x82, + 0xc0, 0x71, 0xb7, 0x1b, 0x54, 0x8f, 0xce, 0x24, 0x8c, 0x64, 0x55, 0x99, 0x93, 0x54, 0x74, 0xba, + 0x08, 0x7b, 0x6c, 0x75, 0xd9, 0x4f, 0xb2, 0xd5, 0x7d, 0x03, 0x5e, 0x2c, 0xb5, 0x31, 0xa3, 0xa8, + 0xac, 0xe5, 0xb6, 0x1f, 0xc8, 0x4d, 0xca, 0x70, 0xc0, 0x72, 0x15, 0x5a, 0x57, 0x4b, 0xfb, 0xb1, + 0xd0, 0xe4, 0x14, 0xb6, 0x2e, 0xdb, 0x91, 0xee, 0xd0, 0x2f, 0xe5, 0x94, 0x36, 0x96, 0xa4, 0xc8, + 0x29, 0x9c, 0x44, 0xf2, 0xf0, 0x02, 0x29, 0xa7, 0x60, 0xaa, 0x9c, 0x98, 0x87, 0x17, 0xd0, 0x1e, + 0xb2, 0x8e, 0x22, 0x21, 0xef, 0xc2, 0x78, 0xa9, 0x13, 0xf9, 0x82, 0xb1, 0xb0, 0xee, 0x8e, 0xed, + 0xb0, 0x45, 0x53, 0x0c, 0xd5, 0x27, 0x46, 0xb7, 0xfe, 0x2c, 0x07, 0x67, 0xbb, 0xa7, 0x57, 0x94, + 0xaa, 0xef, 0x23, 0x73, 0xcc, 0xf7, 0x91, 0xb6, 0x1a, 0xb2, 0x71, 0x98, 0xf3, 0x67, 0xb1, 0x1a, + 0x78, 0x62, 0xd2, 0x8f, 0xb9, 0x1a, 0xaa, 0x30, 0xae, 0x9f, 0x77, 0x43, 0x1f, 0xf7, 0xbc, 0xd3, + 0xb9, 0x30, 0xa5, 0x9e, 0xc7, 0x31, 0x18, 0x8e, 0x9f, 0x8e, 0x92, 0x21, 0x0c, 0x38, 0x06, 0xf9, + 0xff, 0xc1, 0x45, 0xbe, 0x27, 0x25, 0x3b, 0xbb, 0x74, 0x20, 0x39, 0x8a, 0x89, 0x5b, 0x3c, 0x3a, + 0x2c, 0x5e, 0xe3, 0x57, 0x25, 0x4e, 0xd7, 0xb0, 0x39, 0xdb, 0x07, 0x8e, 0x6c, 0x99, 0x56, 0xc9, + 0xb1, 0xbc, 0x31, 0x1b, 0xa9, 0x96, 0x29, 0xf2, 0xcd, 0x34, 0xb7, 0x17, 0x1e, 0x65, 0x98, 0x83, + 0x4d, 0x8f, 0x17, 0x79, 0x1d, 0x96, 0x4d, 0xbd, 0x0e, 0x93, 0xf7, 0x29, 0xb9, 0xd4, 0xfb, 0x94, + 0x32, 0x4c, 0x57, 0x3b, 0xdb, 0xb2, 0xee, 0xa4, 0xdf, 0x5b, 0xd8, 0xd9, 0x4e, 0xeb, 0x50, 0x92, + 0xc4, 0xfa, 0xd1, 0x2c, 0x4c, 0x6c, 0x36, 0x3a, 0xbb, 0x5e, 0xab, 0xec, 0x46, 0xee, 0x73, 0x7b, + 0x43, 0xf7, 0xb6, 0x71, 0x43, 0xa7, 0xbc, 0xbb, 0x54, 0xc7, 0x06, 0xba, 0x9e, 0xfb, 0xd9, 0x0c, + 0x4c, 0xc7, 0x24, 0xfc, 0x9c, 0x5d, 0x85, 0x21, 0xf6, 0x43, 0xe8, 0xad, 0x17, 0xbb, 0x18, 0xf3, + 0xf4, 0x64, 0xea, 0x2f, 0x71, 0x67, 0x66, 0xe6, 0xfe, 0x41, 0x0e, 0x0b, 0x9f, 0x83, 0xb1, 0x98, + 0xed, 0x49, 0xd2, 0x92, 0xfd, 0x46, 0x06, 0x0a, 0xc9, 0x9e, 0x90, 0x7b, 0x30, 0xca, 0x38, 0x79, + 0x54, 0xaa, 0xd4, 0x2f, 0xf7, 0xe8, 0xf3, 0x35, 0x81, 0xc6, 0x9b, 0x87, 0x83, 0x4f, 0x39, 0xc4, + 0x96, 0x1c, 0x16, 0x6c, 0x98, 0xd0, 0xb1, 0x52, 0x5a, 0xf7, 0x86, 0x29, 0x5c, 0x9c, 0x4e, 0x1f, + 0x07, 0x23, 0x99, 0x9a, 0xd1, 0x6a, 0x21, 0x37, 0x5c, 0x36, 0x16, 0x17, 0x8e, 0x55, 0x62, 0xdd, + 0xf0, 0x65, 0xb6, 0x18, 0x07, 0x3e, 0xd7, 0xd7, 0x59, 0xca, 0x82, 0x56, 0x78, 0xe4, 0x0d, 0x18, + 0xe1, 0xf5, 0xe9, 0x89, 0x80, 0xda, 0x08, 0xd1, 0x45, 0x5c, 0x8e, 0x63, 0xfd, 0xdd, 0x1c, 0x9c, + 0x8e, 0x9b, 0xf7, 0xa0, 0x5d, 0x77, 0x23, 0xba, 0xe9, 0x06, 0x6e, 0x33, 0x3c, 0xe6, 0x0b, 0xb8, + 0xd2, 0xd5, 0x34, 0x4c, 0xc1, 0x22, 0x9b, 0xa6, 0x35, 0xc8, 0x4a, 0x34, 0x08, 0xaf, 0x2f, 0x79, + 0x83, 0x64, 0x33, 0xc8, 0x3d, 0xc8, 0x55, 0x69, 0x24, 0xb6, 0xcd, 0xcb, 0x5d, 0xa3, 0xaa, 0xb7, + 0xeb, 0x5a, 0x95, 0x46, 0x7c, 0x12, 0x79, 0x7c, 0x1d, 0x6a, 0x44, 0x54, 0xad, 0xd2, 0x88, 0x3c, + 0x82, 0x91, 0x95, 0xa7, 0x6d, 0x5a, 0x8b, 0x44, 0x52, 0xbd, 0xab, 0xfd, 0xf9, 0x71, 0x5c, 0x2d, + 0xa7, 0x1e, 0x45, 0x80, 0x3e, 0x58, 0x1c, 0x65, 0xe1, 0x16, 0xe4, 0x65, 0xe5, 0x27, 0x59, 0xb9, + 0x0b, 0x6f, 0xc3, 0xb8, 0x56, 0xc9, 0x89, 0x16, 0xfd, 0x2f, 0xb1, 0x7d, 0xd5, 0x6f, 0xc8, 0x3c, + 0x7c, 0x2b, 0x5d, 0x62, 0x9e, 0x96, 0xc5, 0x84, 0x8b, 0x79, 0xce, 0x63, 0x51, 0xd4, 0x47, 0xde, + 0xab, 0xc0, 0x74, 0xf5, 0xb1, 0xd7, 0x8e, 0x03, 0x5b, 0x1a, 0x87, 0x29, 0xa6, 0xa4, 0x10, 0x3a, + 0x77, 0xf2, 0x30, 0x4d, 0xd2, 0x59, 0x7f, 0x99, 0x81, 0x11, 0xf6, 0xd7, 0xc3, 0x5b, 0xcf, 0xe9, + 0x96, 0x79, 0xd3, 0xd8, 0x32, 0x67, 0xb4, 0xd8, 0xd2, 0xb8, 0x71, 0xdc, 0x3a, 0x66, 0xb3, 0x3c, + 0x14, 0x13, 0xc4, 0x91, 0xc9, 0x1d, 0x18, 0x15, 0x56, 0x3d, 0xc2, 0xfc, 0x5a, 0x0f, 0x56, 0x2d, + 0xed, 0x7d, 0x94, 0x72, 0xee, 0xb7, 0x93, 0xb7, 0x19, 0x92, 0x9a, 0x89, 0xe4, 0x32, 0xc4, 0xa8, + 0x91, 0xbd, 0xd5, 0x47, 0x7f, 0x39, 0x1e, 0x6a, 0x59, 0xcb, 0xb7, 0xdc, 0xc3, 0x9b, 0xbe, 0x24, + 0x1e, 0x32, 0x72, 0xfd, 0x98, 0x9c, 0x96, 0xc9, 0x2d, 0x53, 0xdf, 0x38, 0xfe, 0xd9, 0x29, 0x1e, + 0xa0, 0x58, 0x36, 0xec, 0x3d, 0x98, 0xb8, 0xed, 0x07, 0xfb, 0x6e, 0xc0, 0xc3, 0x4e, 0x0a, 0xcb, + 0x01, 0xa6, 0x3a, 0x4e, 0xee, 0x70, 0x38, 0x0f, 0x5c, 0xf9, 0xed, 0xc3, 0xe2, 0xd0, 0x92, 0xef, + 0x37, 0x6c, 0x03, 0x9d, 0x6c, 0xc0, 0xe4, 0x7d, 0xf7, 0xa9, 0xa6, 0xf4, 0x72, 0x07, 0x98, 0xab, + 0x6c, 0x01, 0x33, 0xad, 0xf9, 0x78, 0x13, 0x2b, 0x93, 0x9e, 0x78, 0x30, 0xb5, 0xe9, 0x07, 0x91, + 0xa8, 0xc4, 0x6b, 0xed, 0x8a, 0xce, 0x76, 0x1b, 0x89, 0x5d, 0x4f, 0x35, 0x12, 0x3b, 0xdb, 0xf6, + 0x83, 0xc8, 0xd9, 0x51, 0xe4, 0x46, 0x60, 0x2a, 0x83, 0x31, 0x79, 0x0f, 0x66, 0xb4, 0xc0, 0x7b, + 0xb7, 0xfd, 0xa0, 0xe9, 0x4a, 0xa1, 0x1c, 0xef, 0x81, 0xd1, 0xde, 0x64, 0x07, 0xc1, 0x76, 0x37, + 0x26, 0xf9, 0x4a, 0x9a, 0x4b, 0xd1, 0x70, 0x6c, 0x65, 0x96, 0xe2, 0x52, 0xd4, 0xcb, 0xca, 0xac, + 0xdb, 0xb9, 0x68, 0xb7, 0x9f, 0x15, 0x6a, 0x7e, 0xe9, 0x86, 0x50, 0xbf, 0x8f, 0xb7, 0x32, 0x55, + 0xf3, 0xd6, 0xc3, 0xda, 0x74, 0x11, 0x72, 0x4b, 0x9b, 0xb7, 0xf1, 0xf5, 0x42, 0x1a, 0xda, 0xb4, + 0xf6, 0xdc, 0x56, 0x0d, 0x85, 0x65, 0x61, 0xf9, 0xad, 0xef, 0xc8, 0x4b, 0x9b, 0xb7, 0x89, 0x0b, + 0xb3, 0x9b, 0x34, 0x68, 0x7a, 0xd1, 0x97, 0x6f, 0xdc, 0xd0, 0x26, 0x2a, 0x8f, 0x4d, 0xbb, 0x2e, + 0x9a, 0x56, 0x6c, 0x23, 0x8a, 0xf3, 0xf4, 0xc6, 0x8d, 0xd4, 0xe9, 0x50, 0x0d, 0x4b, 0xe3, 0xc5, + 0x76, 0xc6, 0xfb, 0xee, 0xd3, 0xd8, 0x60, 0x3f, 0x14, 0xce, 0x99, 0xe7, 0xe5, 0xc2, 0x8a, 0x8d, + 0xfd, 0x8d, 0x9d, 0xd1, 0x24, 0x62, 0xba, 0x4e, 0xbc, 0xbc, 0x42, 0xe1, 0xd6, 0xb2, 0x20, 0xaf, + 0x74, 0xa4, 0x07, 0xaf, 0x2e, 0xb0, 0x6b, 0xe8, 0xe4, 0x81, 0xd2, 0xd8, 0xb8, 0xc6, 0x23, 0x52, + 0x37, 0x5e, 0xd7, 0x35, 0x36, 0x7e, 0x91, 0x62, 0x74, 0x6b, 0x5a, 0xa9, 0xf9, 0xdc, 0x83, 0xc1, + 0x36, 0xb9, 0x74, 0x2b, 0x82, 0x13, 0x27, 0x57, 0x04, 0x29, 0x0c, 0xad, 0xf9, 0xb5, 0xc7, 0x22, + 0x9a, 0xd6, 0x97, 0xd8, 0xe7, 0xde, 0xf0, 0x6b, 0x8f, 0x9f, 0x9d, 0x75, 0x2d, 0xb2, 0x27, 0xeb, + 0xac, 0xa9, 0x6c, 0x15, 0x88, 0x31, 0x11, 0x16, 0x9b, 0x73, 0x4a, 0x13, 0xd2, 0xca, 0xb8, 0xe0, + 0xc3, 0x17, 0x8d, 0x1c, 0x5a, 0xdb, 0x24, 0x27, 0x14, 0x0a, 0x65, 0x1a, 0x3e, 0x8e, 0xfc, 0xf6, + 0x72, 0xc3, 0x6b, 0x6f, 0xfb, 0x6e, 0x20, 0x63, 0x9c, 0x76, 0x7f, 0xdf, 0xaf, 0xa6, 0x7e, 0xdf, + 0x33, 0x75, 0x4e, 0xef, 0xd4, 0x24, 0x03, 0xbb, 0x8b, 0x25, 0xf9, 0x0a, 0x4c, 0xb1, 0xc5, 0xbd, + 0xf2, 0x34, 0xa2, 0x2d, 0x3e, 0xf3, 0x33, 0x28, 0x3a, 0xcc, 0x69, 0x41, 0xfd, 0x55, 0x21, 0x5f, + 0x53, 0xf8, 0xb1, 0x53, 0x45, 0x60, 0x44, 0x22, 0x33, 0x58, 0x91, 0x3a, 0xcc, 0xdf, 0x77, 0x9f, + 0x6a, 0x49, 0x22, 0xb5, 0x45, 0x4a, 0x70, 0x81, 0x5d, 0x39, 0x3a, 0x2c, 0xbe, 0xcc, 0x16, 0x58, + 0x1c, 0x76, 0xb7, 0xc7, 0x7a, 0xed, 0xc9, 0x89, 0x7c, 0x0f, 0x9c, 0x11, 0xdd, 0x2a, 0x63, 0xa6, + 0x1b, 0x3f, 0x38, 0xa8, 0xee, 0xb9, 0xe8, 0xab, 0x33, 0x7b, 0xb2, 0x0d, 0x51, 0x0e, 0x58, 0x5d, + 0xf2, 0x71, 0x42, 0xce, 0xc8, 0xee, 0x55, 0x03, 0xf9, 0x08, 0xa6, 0xf8, 0x93, 0xcd, 0xaa, 0x1f, + 0x46, 0xa8, 0xd0, 0xcf, 0x9d, 0xcc, 0x04, 0x9d, 0xbf, 0x03, 0x71, 0xa7, 0x8d, 0xc4, 0x05, 0x40, + 0x82, 0x33, 0x79, 0x07, 0xc6, 0x37, 0xbd, 0x16, 0x8f, 0x15, 0x58, 0xd9, 0xc4, 0xab, 0x47, 0x71, + 0xfe, 0xb4, 0xbd, 0x96, 0x23, 0xb5, 0xea, 0xb6, 0xda, 0x2e, 0x74, 0x6c, 0xf2, 0x08, 0xc6, 0xab, + 0xd5, 0xd5, 0xdb, 0x1e, 0x3b, 0x00, 0xdb, 0x07, 0xf3, 0xa7, 0x7b, 0xb4, 0xf2, 0x52, 0x6a, 0x2b, + 0x27, 0xc3, 0x70, 0x0f, 0x93, 0xf8, 0x3b, 0x35, 0xbf, 0x7d, 0x60, 0xeb, 0x9c, 0x52, 0xcc, 0xb2, + 0xcf, 0x3c, 0x63, 0xb3, 0xec, 0x0a, 0x4c, 0x6b, 0x06, 0x96, 0x68, 0x5c, 0x39, 0x1f, 0x07, 0x98, + 0xd1, 0xcd, 0xb0, 0x93, 0x6e, 0x88, 0x49, 0x3a, 0x69, 0x8f, 0x7d, 0xf6, 0xa4, 0xf6, 0xd8, 0x1e, + 0xcc, 0xf0, 0xc9, 0x10, 0xeb, 0x00, 0x67, 0x7a, 0xa1, 0xc7, 0x18, 0x5e, 0x4d, 0x1d, 0xc3, 0x59, + 0x31, 0xd3, 0x72, 0x91, 0xe1, 0x13, 0x65, 0x37, 0x57, 0xb2, 0x03, 0x44, 0x00, 0xdd, 0xc8, 0xdd, + 0x76, 0x43, 0x8a, 0x75, 0xbd, 0xd8, 0xa3, 0xae, 0x97, 0x53, 0xeb, 0x9a, 0x92, 0x75, 0x6d, 0xf3, + 0x6a, 0x52, 0x38, 0x92, 0x96, 0xac, 0x47, 0xae, 0x2f, 0x1c, 0xd8, 0x73, 0xc6, 0x3d, 0x68, 0x37, + 0x02, 0x0f, 0xd4, 0x9b, 0x5c, 0xb4, 0xc9, 0x71, 0x4f, 0xe1, 0x4c, 0x9e, 0xc2, 0xe9, 0xee, 0x56, + 0x60, 0x9d, 0xe7, 0xb1, 0xce, 0xf3, 0x46, 0x9d, 0x49, 0x24, 0xbe, 0x6e, 0xcc, 0x6e, 0x25, 0x6b, + 0xed, 0xc1, 0x9f, 0xfc, 0x50, 0x06, 0xce, 0xdc, 0xbf, 0x5d, 0xc2, 0xbc, 0x72, 0x1e, 0x0f, 0x1d, + 0xa5, 0xdc, 0x37, 0x2f, 0x88, 0xbb, 0xf2, 0xe4, 0xfd, 0xbd, 0x94, 0x38, 0x70, 0xab, 0x60, 0x32, + 0xe2, 0xa5, 0xe6, 0x8e, 0xcb, 0xd3, 0xd5, 0x09, 0x16, 0x29, 0x3e, 0x9e, 0xbf, 0xf0, 0x27, 0xc5, + 0x8c, 0xdd, 0xab, 0x2a, 0xd2, 0x80, 0x05, 0x73, 0x58, 0xa4, 0xc5, 0xfc, 0x1e, 0x6d, 0x34, 0xe6, + 0x8b, 0xb8, 0xa2, 0xdf, 0x38, 0x3a, 0x2c, 0x5e, 0xe9, 0x1a, 0x5d, 0x65, 0x85, 0xcf, 0x30, 0xb5, + 0x0e, 0xf7, 0xe1, 0x77, 0x77, 0x28, 0x3f, 0x59, 0x98, 0x4a, 0x33, 0x2f, 0xff, 0x9d, 0x6c, 0xe2, + 0xa4, 0x22, 0x15, 0x18, 0x15, 0x0b, 0x50, 0x88, 0xee, 0xdd, 0xcb, 0xec, 0x7c, 0xea, 0x32, 0x1b, + 0x15, 0x6b, 0xd9, 0x96, 0xf4, 0x64, 0x9f, 0xb1, 0xc2, 0x56, 0x08, 0x5d, 0xe7, 0x6b, 0xfc, 0x20, + 0x42, 0x90, 0x71, 0xe4, 0x96, 0x4f, 0xee, 0x05, 0x65, 0x3a, 0xd9, 0xe1, 0xd9, 0x2b, 0x6b, 0x23, + 0x8f, 0x79, 0xd2, 0x93, 0x9c, 0x72, 0xa5, 0x31, 0x33, 0x9c, 0x3c, 0xb3, 0x0a, 0x59, 0x2d, 0xd6, + 0x6f, 0x67, 0x60, 0xd2, 0x38, 0xea, 0xc8, 0x2d, 0xcd, 0x4f, 0x2c, 0x76, 0x9d, 0x36, 0x70, 0x70, + 0xf7, 0x4b, 0x7a, 0x90, 0xdd, 0x12, 0xc6, 0xe2, 0xd9, 0xde, 0x74, 0xb8, 0xfa, 0x93, 0x6e, 0x83, + 0xfd, 0x6f, 0x06, 0x55, 0x2a, 0xb5, 0xa1, 0x1e, 0xa9, 0xd4, 0x7e, 0xe5, 0x1c, 0x4c, 0x99, 0xba, + 0x10, 0x79, 0x03, 0x46, 0xf0, 0x42, 0x55, 0x2a, 0xd6, 0x3c, 0xc9, 0xbe, 0x9f, 0xc8, 0x0a, 0x2a, + 0x70, 0xc8, 0x2b, 0x00, 0xca, 0x6a, 0x57, 0x3e, 0x27, 0x0c, 0x1f, 0x1d, 0x16, 0x33, 0x6f, 0xda, + 0x5a, 0x01, 0xf9, 0x3a, 0xc0, 0xba, 0x5f, 0xa7, 0x2a, 0xef, 0x64, 0x9f, 0x27, 0xf3, 0x57, 0xbb, + 0x12, 0x02, 0x9c, 0x6a, 0xf9, 0x75, 0xda, 0x1d, 0xfd, 0x5f, 0xe3, 0x48, 0xbe, 0x00, 0xc3, 0x76, + 0x87, 0x29, 0xf1, 0xfc, 0xfe, 0x64, 0x5c, 0x1e, 0x39, 0x9d, 0x06, 0x8d, 0x35, 0xc4, 0xa0, 0x93, + 0xb4, 0x06, 0x63, 0x00, 0xf2, 0x01, 0x4f, 0x14, 0x20, 0xa2, 0xec, 0x0d, 0xc7, 0x0f, 0x2c, 0x9a, + 0x28, 0xd2, 0x15, 0x67, 0x4f, 0x23, 0x21, 0x1b, 0x30, 0xaa, 0xbf, 0x0c, 0x68, 0x0e, 0xc7, 0xfa, + 0xeb, 0x91, 0xa6, 0x6e, 0x8a, 0x84, 0x95, 0xc9, 0x47, 0x03, 0xc9, 0x85, 0xbc, 0x0b, 0x63, 0x8c, + 0x3d, 0xfb, 0x94, 0x43, 0xa1, 0x66, 0xe0, 0x33, 0x8a, 0xd6, 0x20, 0xb6, 0x1d, 0x18, 0xb1, 0xf0, + 0x14, 0x01, 0xf9, 0x0a, 0xa6, 0x42, 0x14, 0x43, 0xdd, 0xd7, 0x94, 0xe2, 0x72, 0xd7, 0x50, 0x63, + 0x6e, 0xc4, 0xee, 0xec, 0xf1, 0x8a, 0x1f, 0xd9, 0x55, 0xf1, 0xae, 0x06, 0x49, 0xee, 0xf0, 0x5a, + 0x57, 0x05, 0xf3, 0x32, 0x84, 0x53, 0x77, 0xfe, 0x50, 0x83, 0x2f, 0x69, 0x43, 0x21, 0x96, 0xf2, + 0x44, 0x5d, 0xd0, 0xaf, 0xae, 0x37, 0xbb, 0xea, 0xd2, 0x27, 0xb0, 0xab, 0xba, 0x2e, 0xee, 0xa4, + 0x0e, 0x53, 0xf2, 0xc4, 0x10, 0xf5, 0x8d, 0xf7, 0xab, 0xef, 0x95, 0xae, 0xfa, 0x66, 0xeb, 0xdb, + 0xdd, 0xf5, 0x24, 0x78, 0x92, 0x77, 0x61, 0x52, 0x42, 0x78, 0x36, 0xcf, 0x89, 0x38, 0x6d, 0x63, + 0x7d, 0xbb, 0x2b, 0x87, 0xa7, 0x89, 0xac, 0x53, 0xf3, 0xd5, 0x31, 0x69, 0x50, 0x27, 0x57, 0x85, + 0x89, 0x4c, 0x3e, 0x84, 0xf1, 0x4a, 0x93, 0x75, 0xc4, 0x6f, 0xb9, 0x11, 0x15, 0xce, 0x68, 0xd2, + 0x2c, 0x44, 0x2b, 0xd1, 0x96, 0x2a, 0xcf, 0x53, 0x1a, 0x17, 0x19, 0x79, 0x4a, 0x63, 0x30, 0x1b, + 0x3c, 0xfe, 0x14, 0x24, 0xd6, 0xb0, 0x74, 0x54, 0x3b, 0x9f, 0x62, 0x9a, 0xa1, 0xb1, 0x17, 0xd1, + 0x2c, 0x19, 0x54, 0x3e, 0xc5, 0x24, 0xa2, 0x59, 0xea, 0x3c, 0xc9, 0x7b, 0x30, 0x2e, 0xf2, 0xde, + 0x94, 0xec, 0xf5, 0x70, 0xbe, 0x80, 0x9d, 0x47, 0xf7, 0x7a, 0x99, 0x22, 0xc7, 0x71, 0x83, 0x84, + 0x0d, 0x62, 0x8c, 0x4f, 0xbe, 0x0c, 0x73, 0x8f, 0xbc, 0x56, 0xdd, 0xdf, 0x0f, 0xc5, 0x31, 0x25, + 0x36, 0xba, 0x99, 0xd8, 0x03, 0x68, 0x9f, 0x97, 0x2b, 0xe1, 0xac, 0x6b, 0xe3, 0x4b, 0xe5, 0x40, + 0xfe, 0x46, 0x17, 0x67, 0xbe, 0x82, 0x48, 0xbf, 0x15, 0xb4, 0xd8, 0xb5, 0x82, 0xba, 0xab, 0x4f, + 0x2e, 0xa7, 0xd4, 0x6a, 0x88, 0x0f, 0xc4, 0x3c, 0xdf, 0xef, 0xfa, 0x5e, 0x6b, 0x7e, 0x16, 0xf7, + 0xc2, 0x17, 0x93, 0x0e, 0xed, 0x88, 0x27, 0xf2, 0xbd, 0x5a, 0x47, 0x87, 0xc5, 0x0b, 0x49, 0x21, + 0xfc, 0x23, 0xdf, 0xb8, 0x28, 0x4f, 0x61, 0x4d, 0x3e, 0x84, 0x09, 0xf6, 0xbf, 0xba, 0x25, 0x98, + 0x33, 0x8c, 0xf9, 0x34, 0x4c, 0x51, 0x0f, 0xce, 0x11, 0x26, 0xe6, 0x49, 0xb9, 0x40, 0x30, 0x58, + 0x91, 0xb7, 0x01, 0x98, 0x1c, 0x23, 0xb6, 0xe3, 0x53, 0x71, 0xf0, 0x50, 0x14, 0x83, 0xba, 0x37, + 0xe2, 0x18, 0x99, 0xbc, 0x0b, 0xe3, 0xec, 0x57, 0xb5, 0x53, 0xf7, 0xd9, 0xb7, 0x71, 0x1a, 0x69, + 0xb9, 0x8f, 0x1f, 0xa3, 0x0d, 0x39, 0xdc, 0xf0, 0xf1, 0x8b, 0xd1, 0xc9, 0x2a, 0x4c, 0x63, 0x90, + 0xd7, 0x0a, 0x26, 0x83, 0x8e, 0x3c, 0x1a, 0xce, 0x9f, 0xd1, 0x9e, 0xb0, 0x59, 0x91, 0xe3, 0xa9, + 0x32, 0x5d, 0xb9, 0x48, 0x90, 0x91, 0x10, 0x66, 0xe3, 0xdd, 0x25, 0x7e, 0x10, 0x9f, 0xc7, 0x41, + 0x92, 0x22, 0x75, 0x37, 0x06, 0xdf, 0x8f, 0xd9, 0x8c, 0x68, 0x1b, 0x97, 0x7c, 0x4e, 0xd0, 0x2b, + 0x4c, 0xe3, 0x4e, 0x6c, 0x20, 0x77, 0x96, 0x37, 0x93, 0x51, 0x50, 0xcf, 0x62, 0x0f, 0x70, 0x9a, + 0x77, 0x6b, 0x71, 0x22, 0xda, 0x94, 0x48, 0xa8, 0x29, 0xd4, 0xe4, 0xbb, 0xe1, 0x94, 0xdc, 0x41, + 0x44, 0x91, 0x58, 0xd7, 0x0b, 0x27, 0xdc, 0x89, 0xeb, 0xdb, 0xaa, 0xea, 0xae, 0x25, 0x9d, 0x5e, + 0x05, 0x71, 0x61, 0x1c, 0xa7, 0x55, 0xd4, 0xf8, 0x62, 0xbf, 0x1a, 0xaf, 0x74, 0xd5, 0x78, 0x1a, + 0x17, 0x4a, 0x77, 0x65, 0x3a, 0x4f, 0xb2, 0x04, 0x93, 0xe2, 0x3b, 0x12, 0xab, 0xed, 0x1c, 0x8e, + 0x16, 0xde, 0x2a, 0xc9, 0x2f, 0xb0, 0x6b, 0xc1, 0x99, 0x24, 0xfa, 0x8e, 0xcc, 0x9f, 0x11, 0xce, + 0x1b, 0x3b, 0x72, 0xf2, 0xf5, 0xc0, 0x44, 0x66, 0x3b, 0x52, 0x2c, 0xc5, 0xac, 0x3c, 0x6d, 0x07, + 0xe2, 0xce, 0xe8, 0x42, 0x9c, 0x1c, 0x44, 0x13, 0x7e, 0x1c, 0xaa, 0x30, 0xf4, 0x2d, 0x21, 0x8d, + 0x03, 0x79, 0x00, 0xb3, 0xea, 0xd4, 0xd6, 0x18, 0x17, 0xe3, 0x24, 0x2b, 0xf1, 0x51, 0x9f, 0xce, + 0x37, 0x8d, 0x9e, 0xb8, 0x70, 0xc6, 0x38, 0xa7, 0x35, 0xd6, 0x17, 0x91, 0x35, 0x26, 0x3e, 0x36, + 0x0f, 0xf9, 0x74, 0xf6, 0xbd, 0xf8, 0x90, 0x8f, 0x60, 0x21, 0x79, 0x36, 0x6b, 0xb5, 0xbc, 0x84, + 0xb5, 0xbc, 0x76, 0x74, 0x58, 0xbc, 0xdc, 0x75, 0xbc, 0xa7, 0x57, 0xd4, 0x87, 0x1b, 0xf9, 0x3a, + 0xcc, 0x9b, 0xe7, 0xb3, 0x56, 0x93, 0x85, 0x35, 0xe1, 0xa7, 0xa3, 0x0e, 0xf6, 0xf4, 0x1a, 0x7a, + 0xf2, 0x20, 0x11, 0x14, 0x53, 0x57, 0xb7, 0x56, 0xcd, 0xa5, 0xb8, 0x43, 0x5d, 0x5f, 0x49, 0x7a, + 0x75, 0xc7, 0xb1, 0x24, 0xfb, 0x70, 0x21, 0xed, 0x98, 0xd0, 0x2a, 0x7d, 0x59, 0xdd, 0xca, 0xbe, + 0x9e, 0x7e, 0xe4, 0xa4, 0xd7, 0x7c, 0x0c, 0x5b, 0xf2, 0x15, 0x38, 0xa5, 0x7d, 0x5f, 0x5a, 0x7d, + 0xaf, 0x60, 0x7d, 0xe8, 0xbf, 0xab, 0x7f, 0x98, 0xe9, 0xb5, 0xa4, 0xf3, 0x20, 0x4d, 0x98, 0x95, + 0x1d, 0xc7, 0xeb, 0x6f, 0x71, 0xf4, 0x5c, 0x36, 0x76, 0xd5, 0x6e, 0x0c, 0x2d, 0x75, 0xfd, 0xb6, + 0xd3, 0x8e, 0x09, 0xf5, 0x95, 0x9e, 0xc2, 0x97, 0xac, 0xc2, 0x48, 0x75, 0xb3, 0x72, 0xfb, 0xf6, + 0xca, 0xfc, 0xab, 0x58, 0x83, 0x74, 0xf6, 0xe1, 0x40, 0x43, 0x69, 0x12, 0x36, 0x66, 0x6d, 0x6f, + 0x67, 0xc7, 0xf0, 0xa9, 0xe2, 0xa8, 0xa4, 0x01, 0x84, 0xab, 0x9c, 0x7a, 0xf5, 0xf3, 0xaf, 0x19, + 0xe1, 0x67, 0x79, 0x36, 0x21, 0xad, 0xd5, 0x2f, 0x8b, 0x56, 0x9f, 0xeb, 0x26, 0xd5, 0x4d, 0x7f, + 0x79, 0xa9, 0xd6, 0xee, 0xbb, 0x43, 0xf9, 0x2b, 0x85, 0xab, 0x77, 0x87, 0xf2, 0x57, 0x0b, 0xaf, + 0xd9, 0xe7, 0xd2, 0x53, 0x8b, 0xf3, 0xa1, 0xb5, 0x2f, 0xf7, 0x2b, 0x8d, 0x07, 0xde, 0x5a, 0x83, + 0x42, 0xb2, 0x79, 0xe4, 0xf3, 0x30, 0xa9, 0x07, 0x74, 0x96, 0xca, 0x22, 0xf7, 0xe3, 0x0f, 0x76, + 0x8d, 0x2d, 0xcf, 0x40, 0xb4, 0x7e, 0x29, 0x03, 0xb3, 0x29, 0x63, 0x48, 0x2e, 0xc3, 0x10, 0x66, + 0x5c, 0xd1, 0x2c, 0x02, 0x12, 0x99, 0x56, 0xb0, 0x9c, 0x7c, 0x06, 0x46, 0xcb, 0xeb, 0xd5, 0x6a, + 0x69, 0x5d, 0xaa, 0x9b, 0x7c, 0xab, 0x6d, 0x85, 0x4e, 0xe8, 0x9a, 0x0f, 0x89, 0x02, 0x8d, 0xbc, + 0x09, 0x23, 0x95, 0x4d, 0x24, 0xe0, 0x26, 0x69, 0xa8, 0x7e, 0x79, 0xed, 0x24, 0xbe, 0x40, 0xb2, + 0x7e, 0x2c, 0x03, 0xa4, 0x7b, 0x41, 0x90, 0x1b, 0x30, 0xae, 0x2f, 0x3b, 0xde, 0x5f, 0x7c, 0xf4, + 0xd2, 0xa6, 0xc6, 0xd6, 0x71, 0x48, 0x19, 0x86, 0x31, 0x27, 0x9d, 0x7a, 0xc1, 0x4c, 0x3d, 0xbc, + 0xce, 0x74, 0x1d, 0x5e, 0xc3, 0x98, 0xf1, 0xce, 0xe6, 0xc4, 0xd6, 0xef, 0x67, 0x80, 0x74, 0x1f, + 0xf8, 0x03, 0x5b, 0x50, 0xbc, 0xa5, 0xb9, 0x14, 0xeb, 0x39, 0x15, 0x54, 0x42, 0x1c, 0x5d, 0xd1, + 0x8b, 0x9d, 0x8f, 0x2f, 0x1b, 0x17, 0x0b, 0xbd, 0xfd, 0xd0, 0xae, 0xc2, 0xf0, 0x43, 0x1a, 0x6c, + 0x4b, 0x6b, 0x4b, 0xb4, 0xd0, 0x7a, 0xc2, 0x00, 0xba, 0xa2, 0x8d, 0x18, 0xd6, 0x9f, 0x65, 0x60, + 0x2e, 0x4d, 0x0a, 0x3d, 0xc6, 0x5d, 0xcc, 0x4a, 0x78, 0xba, 0xa1, 0xf5, 0x04, 0x37, 0xdf, 0x52, + 0xfe, 0x6d, 0x45, 0x18, 0x66, 0x9d, 0x95, 0x33, 0x8c, 0x17, 0x1d, 0x6c, 0x34, 0x42, 0x9b, 0xc3, + 0x19, 0x02, 0x0f, 0x81, 0x35, 0x84, 0xd1, 0xd3, 0x10, 0x01, 0x85, 0x1c, 0x9b, 0xc3, 0x19, 0xc2, + 0x7d, 0xbf, 0xae, 0xd2, 0x31, 0x23, 0x42, 0x93, 0x01, 0x6c, 0x0e, 0x27, 0x97, 0x61, 0x74, 0xa3, + 0xb5, 0x46, 0xdd, 0x27, 0x32, 0xae, 0x37, 0x5a, 0x7b, 0xf8, 0x2d, 0xa7, 0xc1, 0x60, 0xb6, 0x2c, + 0xb4, 0x7e, 0x36, 0x03, 0x33, 0x5d, 0x02, 0xf0, 0xf1, 0x1e, 0x71, 0xfd, 0x5d, 0x53, 0x06, 0xe9, + 0x1f, 0x6f, 0xfe, 0x50, 0x7a, 0xf3, 0xad, 0xff, 0x6b, 0x08, 0xce, 0xf4, 0xb8, 0x8f, 0x88, 0x5d, + 0xe7, 0x32, 0xc7, 0xba, 0xce, 0x7d, 0x95, 0xe9, 0xff, 0xae, 0xd7, 0x0c, 0xb7, 0xfc, 0xb8, 0xc5, + 0xb1, 0x05, 0x3e, 0x96, 0xc9, 0x8c, 0xd4, 0xd2, 0x54, 0xfb, 0x6c, 0x0d, 0x29, 0x9c, 0xc8, 0xef, + 0x16, 0x87, 0x0c, 0x66, 0x5d, 0xce, 0x6b, 0xb9, 0xbf, 0x22, 0xce, 0x6b, 0xa6, 0x3b, 0xc5, 0xd0, + 0x33, 0x75, 0xa7, 0x48, 0x37, 0xc5, 0x1c, 0xfe, 0x24, 0x86, 0xb9, 0xcb, 0x30, 0xc9, 0xcd, 0x5d, + 0x4a, 0x21, 0x9f, 0xa4, 0x91, 0x2e, 0x13, 0x19, 0x37, 0xec, 0x9e, 0x0b, 0x83, 0x86, 0xac, 0x9a, + 0xa6, 0xff, 0xa3, 0xf8, 0x4c, 0x77, 0xb9, 0xb7, 0x69, 0xbf, 0xf1, 0x3c, 0xaf, 0x93, 0x5a, 0x3f, + 0x9b, 0x35, 0x3d, 0xdb, 0xfe, 0x2a, 0xae, 0xbc, 0xab, 0x30, 0xfc, 0x68, 0x8f, 0x06, 0x72, 0xbf, + 0xc3, 0x86, 0xec, 0x33, 0x80, 0xde, 0x10, 0xc4, 0x20, 0xb7, 0x61, 0x6a, 0x93, 0xcf, 0x84, 0x1c, + 0xde, 0xa1, 0x58, 0x4d, 0x6c, 0x8b, 0xcb, 0x8c, 0x94, 0xf1, 0x4d, 0x50, 0x59, 0x77, 0xe0, 0xbc, + 0xf1, 0x41, 0x8a, 0x48, 0x1c, 0xdc, 0x02, 0x9f, 0x9f, 0x88, 0x53, 0xb1, 0xcf, 0x41, 0xbc, 0x7b, + 0xd8, 0x09, 0xa8, 0xb5, 0x03, 0x17, 0xfa, 0x32, 0x62, 0x07, 0x11, 0xb4, 0xd5, 0xaf, 0x84, 0x99, + 0x60, 0x5f, 0x52, 0x5b, 0xa3, 0xb3, 0xbe, 0x07, 0x26, 0xf4, 0x51, 0xc6, 0x3d, 0x95, 0xfd, 0x16, + 0x9b, 0x1a, 0xdf, 0x53, 0x19, 0xc0, 0xe6, 0xf0, 0xf8, 0xfa, 0x39, 0x9b, 0x7e, 0xfd, 0x1c, 0x4f, + 0x7f, 0xee, 0xb8, 0xe9, 0x67, 0x95, 0xe3, 0x27, 0xab, 0x55, 0x8e, 0xbf, 0xf5, 0xca, 0x31, 0xd4, + 0x86, 0xcd, 0xe1, 0xcf, 0xb4, 0xf2, 0xdf, 0x93, 0x99, 0x4d, 0xd0, 0xc0, 0x5f, 0xea, 0xf3, 0x71, + 0xa6, 0xe4, 0xd9, 0x34, 0x2d, 0x3d, 0xc6, 0x8c, 0x0f, 0xc9, 0xec, 0x71, 0x87, 0xe4, 0x49, 0x16, + 0xe2, 0x75, 0x18, 0x2d, 0x89, 0x47, 0xf4, 0xa1, 0x58, 0xb0, 0x71, 0xbb, 0x5e, 0xcc, 0x25, 0x96, + 0xf5, 0x0b, 0x19, 0x38, 0x95, 0x7a, 0xcd, 0xc7, 0x6a, 0xe5, 0xf7, 0x89, 0xda, 0x77, 0x98, 0xbc, + 0x4c, 0xe4, 0x18, 0x27, 0xf1, 0xb3, 0x1e, 0xbc, 0x2f, 0xd6, 0x4b, 0x30, 0xa6, 0x1e, 0x99, 0xc8, + 0x9c, 0x9c, 0x3a, 0xb4, 0xac, 0x92, 0x6f, 0x15, 0x55, 0x00, 0xd6, 0x82, 0x67, 0x6a, 0x07, 0x68, + 0xfd, 0x5e, 0x96, 0x67, 0xbd, 0x7b, 0x6e, 0x43, 0x1f, 0xa6, 0x1b, 0xef, 0xb1, 0x2e, 0xf5, 0x0e, + 0x78, 0x48, 0x56, 0x60, 0xa4, 0x1a, 0xb9, 0x51, 0x47, 0xba, 0x87, 0xcf, 0xea, 0x64, 0x58, 0xf0, + 0x70, 0x31, 0x76, 0x10, 0x0e, 0x11, 0x62, 0x28, 0x36, 0x08, 0xd1, 0x6c, 0x00, 0x3d, 0x98, 0xd0, + 0x69, 0xc9, 0x87, 0x30, 0x25, 0xe3, 0xb9, 0x71, 0x9f, 0x79, 0xf1, 0x20, 0x26, 0xad, 0x49, 0x64, + 0x3c, 0x37, 0xdd, 0xc7, 0xde, 0xc0, 0xd7, 0x77, 0xea, 0xb6, 0x8e, 0x6c, 0xfd, 0xf9, 0x08, 0x5f, + 0x07, 0x22, 0x30, 0xe3, 0x36, 0x4c, 0x6d, 0x54, 0xca, 0xcb, 0xda, 0xa5, 0x9d, 0x99, 0xd7, 0x63, + 0xe5, 0x69, 0x44, 0x83, 0x96, 0xdb, 0x10, 0x08, 0x07, 0xf1, 0xd9, 0xe0, 0x7b, 0xf5, 0x5a, 0xfa, + 0x85, 0x5e, 0x82, 0x23, 0xab, 0x83, 0xab, 0x4a, 0xaa, 0x8e, 0xec, 0x80, 0x75, 0x84, 0x6e, 0xb3, + 0xd1, 0xa3, 0x0e, 0x93, 0x23, 0xd9, 0x43, 0x25, 0x6b, 0xaf, 0xb3, 0xad, 0xd5, 0x92, 0xeb, 0x5f, + 0xcb, 0x25, 0x51, 0xcb, 0x8b, 0x42, 0x45, 0x4c, 0xad, 0xa7, 0x8b, 0x6b, 0xfc, 0x01, 0x0f, 0x1d, + 0xfb, 0x01, 0xff, 0xad, 0x0c, 0x8c, 0x70, 0x41, 0x49, 0xac, 0xaf, 0x1e, 0xa2, 0xd8, 0xa3, 0x67, + 0x23, 0x8a, 0x15, 0x70, 0x03, 0x37, 0x56, 0x1a, 0x2f, 0x23, 0xe5, 0xc4, 0x82, 0x95, 0x36, 0xa5, + 0x78, 0xfd, 0xce, 0x4b, 0x8e, 0x5f, 0xaf, 0xa4, 0x12, 0xfb, 0x52, 0x8f, 0x1e, 0xeb, 0xae, 0x27, + 0xfd, 0xcf, 0x47, 0x85, 0x2f, 0xb5, 0xe9, 0x41, 0xbd, 0x06, 0x63, 0xc2, 0x43, 0x7b, 0xe9, 0x40, + 0x3c, 0xb2, 0x15, 0x0c, 0xbb, 0x85, 0xfa, 0xd2, 0x41, 0x2c, 0x04, 0x0a, 0x1f, 0x6f, 0x67, 0xfb, + 0xc0, 0xc8, 0xee, 0x27, 0x11, 0xc9, 0x06, 0xcf, 0x7a, 0xc5, 0x43, 0x57, 0x9a, 0xb1, 0xaa, 0x15, + 0x5c, 0xc4, 0x7e, 0x91, 0x6e, 0x9e, 0x29, 0x91, 0x2a, 0x63, 0x1e, 0x64, 0x0d, 0x0a, 0x68, 0xeb, + 0x42, 0xeb, 0xdc, 0xf0, 0xa5, 0x52, 0xe6, 0x5e, 0xc0, 0xc2, 0x5e, 0x31, 0xe2, 0x65, 0x8e, 0x30, + 0x99, 0x31, 0x1d, 0x70, 0xba, 0x28, 0xad, 0x9f, 0xce, 0x42, 0x21, 0xb9, 0xfa, 0xc8, 0xbb, 0x30, + 0xae, 0x42, 0x87, 0x2a, 0x17, 0x40, 0xbc, 0x6c, 0x8f, 0x63, 0x8d, 0x9a, 0xb9, 0x92, 0x34, 0x74, + 0xb2, 0x08, 0x79, 0xf6, 0x11, 0x27, 0xf3, 0x0a, 0x76, 0x04, 0x4c, 0xb7, 0xeb, 0x97, 0x78, 0xa4, + 0x0a, 0xb3, 0xec, 0xa3, 0xa9, 0x7a, 0xad, 0xdd, 0x06, 0x5d, 0xf3, 0x77, 0xfd, 0x4e, 0xf4, 0xc0, + 0x5e, 0x13, 0x9b, 0x2b, 0x17, 0x95, 0xdd, 0x66, 0xc3, 0x28, 0x0e, 0x8c, 0xac, 0xd1, 0x29, 0xd4, + 0x5a, 0xd6, 0xd3, 0xa1, 0x01, 0xb2, 0x9e, 0x6a, 0x5b, 0xde, 0x9f, 0x64, 0x61, 0x5c, 0x5b, 0x7e, + 0xe4, 0x2a, 0xe4, 0x2b, 0xe1, 0x9a, 0x5f, 0x7b, 0xac, 0x62, 0x89, 0x4d, 0x1e, 0x1d, 0x16, 0xc7, + 0xbc, 0xd0, 0x69, 0x20, 0xd0, 0x56, 0xc5, 0x64, 0x09, 0x26, 0xf9, 0x5f, 0x32, 0x02, 0x7c, 0x36, + 0xb6, 0x66, 0xe4, 0xc8, 0x32, 0xf6, 0xbb, 0xbe, 0x0d, 0x1a, 0x24, 0xe4, 0x6b, 0x00, 0x1c, 0x80, + 0xde, 0xa7, 0xb9, 0xc1, 0xfd, 0x66, 0x45, 0x05, 0x29, 0x7e, 0xa7, 0x1a, 0x43, 0xf2, 0x0d, 0x1e, + 0x99, 0x54, 0x7e, 0x2e, 0x43, 0x83, 0x3b, 0xfe, 0x32, 0xfe, 0x4e, 0x7a, 0xfc, 0x01, 0x9d, 0xa5, + 0x08, 0x7b, 0xb8, 0x60, 0xd3, 0x9a, 0xff, 0x84, 0x06, 0x07, 0xa5, 0x08, 0x11, 0x35, 0x0c, 0xeb, + 0x7f, 0xcc, 0x68, 0x1f, 0x19, 0x59, 0xc7, 0xcc, 0x99, 0x7c, 0x01, 0x09, 0xf3, 0x14, 0x25, 0xfb, + 0x4b, 0xb8, 0x4d, 0x77, 0x96, 0x5e, 0x14, 0xc6, 0xb4, 0xb3, 0x6a, 0x19, 0x26, 0x32, 0x6a, 0x72, + 0x20, 0xf9, 0x22, 0x0c, 0xe1, 0xd0, 0x65, 0x8f, 0xed, 0x9a, 0x3c, 0x7e, 0x87, 0xd8, 0x98, 0x61, + 0x47, 0x90, 0x92, 0x7c, 0x46, 0x78, 0xee, 0xf1, 0xc1, 0x9f, 0xd2, 0xce, 0x50, 0xd6, 0x0e, 0x75, + 0xee, 0xc6, 0x21, 0x28, 0xb4, 0xd5, 0xf3, 0xef, 0x64, 0xa1, 0x90, 0xfc, 0xb4, 0xc9, 0x07, 0x30, + 0x21, 0x0f, 0x46, 0x4c, 0xad, 0xce, 0x7a, 0x39, 0x21, 0xc2, 0x87, 0xcb, 0xd3, 0x31, 0x99, 0x59, + 0x5d, 0x27, 0x60, 0x42, 0xca, 0x96, 0x08, 0x09, 0xa5, 0x7d, 0x54, 0x91, 0x1f, 0xb5, 0x13, 0xc1, + 0x2d, 0x25, 0x1a, 0x79, 0x0b, 0x72, 0xf7, 0x6f, 0x97, 0x84, 0x9b, 0x88, 0xdc, 0xc1, 0xee, 0xdf, + 0x2e, 0xf1, 0x8f, 0x9f, 0x9b, 0xc1, 0x99, 0x46, 0x79, 0x0c, 0x9f, 0xac, 0x69, 0xb1, 0x63, 0x47, + 0x8c, 0x9c, 0x51, 0x12, 0xac, 0x3a, 0x77, 0x7c, 0x10, 0x59, 0x9e, 0xb3, 0x5d, 0x44, 0x51, 0xfc, + 0x0f, 0x73, 0x30, 0xa6, 0xea, 0x27, 0x04, 0x50, 0x06, 0x13, 0x8a, 0x0f, 0xfe, 0x4d, 0xce, 0x42, + 0x5e, 0x8a, 0x5d, 0xc2, 0x5b, 0x64, 0x34, 0x14, 0x22, 0xd7, 0x3c, 0x48, 0xf9, 0x8a, 0xef, 0x0a, + 0xb6, 0xfc, 0x49, 0x6e, 0x80, 0x12, 0x9e, 0x7a, 0x49, 0x59, 0x43, 0x6c, 0xc2, 0x6c, 0x85, 0x46, + 0xa6, 0x20, 0xeb, 0xf1, 0xc8, 0x3c, 0x63, 0x76, 0xd6, 0xab, 0x93, 0x0f, 0x20, 0xef, 0xd6, 0xeb, + 0xb4, 0xee, 0xb8, 0xd2, 0xce, 0xa3, 0xdf, 0xa2, 0xc9, 0x33, 0x6e, 0xfc, 0xcc, 0x40, 0xaa, 0x52, + 0x44, 0x4a, 0x30, 0xd6, 0x70, 0xb9, 0x29, 0x57, 0x7d, 0x80, 0x03, 0x28, 0xe6, 0x90, 0x67, 0x64, + 0x0f, 0x42, 0x5a, 0x27, 0xaf, 0xc2, 0x10, 0x9b, 0x4d, 0x71, 0xe2, 0x48, 0x69, 0x8f, 0x4d, 0x26, + 0x1f, 0xb0, 0xd5, 0x17, 0x6c, 0x44, 0x20, 0x2f, 0x43, 0xae, 0xb3, 0xb8, 0x23, 0xce, 0x92, 0x42, + 0x1c, 0xc7, 0x59, 0xa1, 0xb1, 0x62, 0x72, 0x13, 0xf2, 0xfb, 0x66, 0x08, 0xe0, 0x53, 0x89, 0x69, + 0x54, 0xf8, 0x0a, 0x71, 0x29, 0x0f, 0x23, 0xfc, 0xdc, 0xb0, 0x2e, 0x00, 0xc4, 0x55, 0x77, 0x3b, + 0xf5, 0x58, 0x5f, 0x83, 0x31, 0x55, 0x25, 0x39, 0x0f, 0xf0, 0x98, 0x1e, 0x38, 0x7b, 0x6e, 0xab, + 0xde, 0xe0, 0xe2, 0xe0, 0x84, 0x3d, 0xf6, 0x98, 0x1e, 0xac, 0x22, 0x80, 0x9c, 0x81, 0xd1, 0x36, + 0x9b, 0x55, 0xb1, 0x74, 0x27, 0xec, 0x91, 0x76, 0x67, 0x9b, 0xad, 0xd0, 0x79, 0x18, 0xc5, 0x8b, + 0x3a, 0xf1, 0xa1, 0x4d, 0xda, 0xf2, 0xa7, 0xf5, 0x17, 0x39, 0x4c, 0x7f, 0xa1, 0xb5, 0x93, 0x5c, + 0x82, 0xc9, 0x5a, 0x40, 0xf1, 0x88, 0x72, 0x99, 0xe0, 0x25, 0xea, 0x99, 0x88, 0x81, 0x95, 0x3a, + 0xb9, 0x0c, 0xd3, 0xed, 0xce, 0x76, 0xc3, 0xab, 0xb1, 0xda, 0x9c, 0xda, 0xb6, 0x88, 0xd7, 0x3d, + 0x61, 0x4f, 0x72, 0xf0, 0x3d, 0x7a, 0xb0, 0xbc, 0x8d, 0x11, 0xa5, 0x0a, 0x7a, 0x40, 0xd0, 0x48, + 0x65, 0x97, 0xb5, 0xa7, 0x35, 0x38, 0x9a, 0x6f, 0x9d, 0x86, 0x11, 0xd7, 0xdd, 0xed, 0x78, 0x3c, + 0xf2, 0xcb, 0x84, 0x2d, 0x7e, 0x91, 0xd7, 0x61, 0x26, 0x8e, 0x1b, 0x2b, 0xbb, 0x31, 0x8c, 0xdd, + 0x28, 0xa8, 0x82, 0x65, 0x0e, 0x27, 0x6f, 0x02, 0xd1, 0xeb, 0xf3, 0xb7, 0x3f, 0xa2, 0x35, 0xbe, + 0xd4, 0x26, 0xec, 0x19, 0xad, 0x64, 0x03, 0x0b, 0xc8, 0x4b, 0x30, 0x11, 0xd0, 0x10, 0x85, 0x3e, + 0x1c, 0x36, 0xcc, 0x0e, 0x65, 0x8f, 0x4b, 0x18, 0x1b, 0xbb, 0x2b, 0x50, 0xd0, 0x86, 0x03, 0x63, + 0xae, 0xf2, 0x60, 0xd5, 0xf6, 0x54, 0x0c, 0xb7, 0xdb, 0x95, 0x3a, 0xf9, 0x32, 0x2c, 0x68, 0x98, + 0x3c, 0x51, 0x95, 0x43, 0x1b, 0xde, 0xae, 0xb7, 0xdd, 0xa0, 0x62, 0x19, 0x75, 0x2f, 0x56, 0xa5, + 0xb2, 0xd9, 0xf3, 0x31, 0x35, 0x4f, 0x61, 0xb5, 0x22, 0x68, 0xc9, 0x1a, 0xcc, 0x25, 0x38, 0xd3, + 0xba, 0xd3, 0x69, 0xf7, 0x0c, 0xb5, 0x14, 0xf3, 0x24, 0x26, 0x4f, 0x5a, 0x7f, 0xd0, 0xb6, 0x96, + 0x60, 0xa6, 0x6b, 0x87, 0xd1, 0xce, 0x70, 0xbe, 0x63, 0xf6, 0x3f, 0xc3, 0xad, 0x16, 0x4c, 0xe8, + 0x27, 0xc6, 0x31, 0xb1, 0xdd, 0x4f, 0x63, 0x84, 0x03, 0xbe, 0x9d, 0x8e, 0x1c, 0x1d, 0x16, 0xb3, + 0x5e, 0x1d, 0xe3, 0x1a, 0x5c, 0x81, 0xbc, 0x94, 0x85, 0x84, 0x08, 0x82, 0x17, 0xc2, 0x42, 0x08, + 0x3f, 0xb0, 0x55, 0xa9, 0xf5, 0x2a, 0x8c, 0x8a, 0x43, 0xa1, 0xff, 0x35, 0xb0, 0xf5, 0xc3, 0x59, + 0x98, 0xb6, 0x29, 0xdb, 0xb2, 0x28, 0x4f, 0xe8, 0xf0, 0xdc, 0x6a, 0xa5, 0xe9, 0x71, 0xf2, 0x8c, + 0xbe, 0xf5, 0x49, 0xa5, 0xf0, 0x0f, 0x33, 0x30, 0x9b, 0x82, 0xfb, 0xb1, 0x52, 0x09, 0xde, 0x82, + 0xb1, 0xb2, 0xe7, 0x36, 0x4a, 0xf5, 0xba, 0x0a, 0x77, 0x80, 0x12, 0x34, 0xe6, 0x1b, 0x71, 0x19, + 0x54, 0x17, 0x0f, 0x14, 0x2a, 0x79, 0x4d, 0x2c, 0x8a, 0x38, 0x9b, 0x2a, 0x2e, 0x8a, 0x6f, 0x1f, + 0x16, 0x81, 0xb7, 0x29, 0x4e, 0xb1, 0x8c, 0xb1, 0x2b, 0x39, 0x30, 0x76, 0x47, 0x78, 0x6e, 0xa7, + 0x2e, 0x3d, 0x76, 0x65, 0xb2, 0x7b, 0x03, 0x65, 0x53, 0xf8, 0xf1, 0x2c, 0x9c, 0x4e, 0x27, 0xfc, + 0xb8, 0x59, 0x21, 0x31, 0x8f, 0x85, 0x16, 0x6f, 0x17, 0xb3, 0x42, 0xf2, 0xa4, 0x17, 0x88, 0x1f, + 0x23, 0x90, 0x1d, 0x98, 0x5c, 0x73, 0xc3, 0x68, 0x95, 0xba, 0x41, 0xb4, 0x4d, 0xdd, 0x68, 0x00, + 0x19, 0x59, 0xbe, 0xb9, 0xce, 0xe3, 0x31, 0xbd, 0x27, 0x29, 0x13, 0x52, 0xac, 0xc9, 0x56, 0x2d, + 0x94, 0xa1, 0x01, 0x16, 0xca, 0x37, 0x61, 0xba, 0x4a, 0x9b, 0x6e, 0x7b, 0xcf, 0x0f, 0xa4, 0x3f, + 0xeb, 0x35, 0x98, 0x54, 0xa0, 0xd4, 0xd5, 0x62, 0x16, 0x1b, 0xf8, 0xda, 0x40, 0xc4, 0x5b, 0x89, + 0x59, 0x6c, 0xfd, 0x9d, 0x2c, 0x9c, 0x29, 0xd5, 0x84, 0x01, 0x97, 0x28, 0x90, 0x76, 0xa6, 0x9f, + 0x72, 0xdd, 0xe4, 0x3a, 0x8c, 0xdd, 0x77, 0x9f, 0xae, 0x51, 0x37, 0xa4, 0xa1, 0xc8, 0xc9, 0xc5, + 0x05, 0x4a, 0xf7, 0x69, 0x6c, 0xd7, 0x64, 0xc7, 0x38, 0xba, 0x82, 0x3e, 0xf4, 0x09, 0x15, 0x74, + 0x0b, 0x46, 0x56, 0xfd, 0x46, 0x5d, 0x1c, 0xb7, 0xe2, 0xd5, 0x70, 0x0f, 0x21, 0xb6, 0x28, 0xb1, + 0xfe, 0x2c, 0x03, 0x53, 0xaa, 0xc5, 0xd8, 0x84, 0x4f, 0x7d, 0x48, 0x2e, 0xc3, 0x28, 0x56, 0xa4, + 0xb2, 0x1a, 0xe3, 0xa1, 0xd1, 0xa0, 0x98, 0x59, 0xa9, 0x6e, 0xcb, 0x42, 0x7d, 0x24, 0x86, 0x3f, + 0xd9, 0x48, 0x58, 0xff, 0x00, 0x1f, 0x24, 0xf5, 0x5e, 0xb2, 0x93, 0x48, 0x6b, 0x48, 0x66, 0xc0, + 0x86, 0x64, 0x9f, 0xd9, 0x94, 0xe4, 0x7a, 0x4e, 0xc9, 0x8f, 0x64, 0x61, 0x5c, 0x35, 0xf6, 0x3b, + 0x2c, 0xe8, 0xb3, 0xea, 0xd7, 0x40, 0x31, 0x28, 0xaa, 0xda, 0x5e, 0x21, 0x42, 0x3d, 0x7c, 0x11, + 0x46, 0xc4, 0xc7, 0x94, 0x49, 0xd8, 0x5b, 0x26, 0x66, 0x77, 0x69, 0x4a, 0xb0, 0x1e, 0xc1, 0x09, + 0x0d, 0x6d, 0x41, 0x87, 0x41, 0x3e, 0x1e, 0xd1, 0x6d, 0xf1, 0x3e, 0xfd, 0xdc, 0x9e, 0x51, 0xe9, + 0x41, 0x3e, 0xe2, 0x8e, 0x0d, 0x74, 0x3a, 0xfd, 0xd3, 0x3c, 0x14, 0x92, 0x24, 0xc7, 0x87, 0xd5, + 0xde, 0xec, 0x6c, 0x73, 0x6d, 0x81, 0x87, 0xd5, 0x6e, 0x77, 0xb6, 0x6d, 0x06, 0x43, 0xf3, 0x95, + 0xc0, 0x7b, 0x82, 0xbd, 0x9e, 0x10, 0xe6, 0x2b, 0x81, 0xf7, 0xc4, 0x30, 0x5f, 0x09, 0xbc, 0x27, + 0xa8, 0xa2, 0xaf, 0x55, 0xd1, 0x2f, 0x19, 0x55, 0x05, 0xa1, 0xa2, 0x37, 0xc2, 0x64, 0xaa, 0x1b, + 0x89, 0xc6, 0x8e, 0xca, 0x25, 0xea, 0x06, 0x22, 0x04, 0xb4, 0xd8, 0xce, 0xf0, 0xa8, 0xdc, 0x46, + 0x30, 0xcf, 0x4c, 0x6d, 0xeb, 0x48, 0xa4, 0x01, 0x44, 0xfb, 0x29, 0x3f, 0xe0, 0xe3, 0xb5, 0x56, + 0x69, 0x2b, 0x35, 0xa7, 0xb3, 0x76, 0xf4, 0xaf, 0x39, 0x85, 0xef, 0xb3, 0xbc, 0x57, 0xdd, 0x14, + 0x71, 0xed, 0xf0, 0x6a, 0x26, 0x7f, 0x2c, 0x33, 0xe9, 0xb8, 0x0f, 0x3c, 0xee, 0x9d, 0xba, 0xa0, + 0x89, 0x99, 0x90, 0xf7, 0x61, 0x5c, 0xf7, 0x36, 0xe7, 0x3e, 0xd1, 0xe7, 0x78, 0xa8, 0xb2, 0x1e, + 0xc9, 0x11, 0x75, 0x02, 0xb2, 0x0d, 0x67, 0x96, 0xfd, 0x56, 0xd8, 0x69, 0xca, 0xa0, 0x68, 0x71, + 0x28, 0x56, 0xc0, 0xa9, 0x40, 0xd7, 0xd5, 0x9a, 0x40, 0x11, 0xce, 0xcd, 0xd2, 0x98, 0xdd, 0x54, + 0x40, 0x7a, 0x31, 0x22, 0x5b, 0x30, 0x8e, 0x77, 0x93, 0xc2, 0x5a, 0x6e, 0xdc, 0xdc, 0x36, 0xe2, + 0x92, 0x32, 0xfb, 0x30, 0x78, 0x54, 0x1f, 0xb7, 0xd9, 0x90, 0xb6, 0xd4, 0xfa, 0x1d, 0xab, 0x86, + 0x4c, 0xbe, 0x06, 0x53, 0x5c, 0x2d, 0x7e, 0x44, 0xb7, 0xf9, 0xda, 0x99, 0x30, 0x74, 0x7c, 0xb3, + 0x90, 0xbf, 0x5f, 0x8b, 0x1b, 0xe1, 0x7d, 0xba, 0xcd, 0xe7, 0xde, 0xf0, 0x64, 0x30, 0xf0, 0xc9, + 0x03, 0x98, 0x5d, 0x75, 0x43, 0x0e, 0xd4, 0xdc, 0x86, 0x27, 0xf1, 0xee, 0x13, 0x2d, 0x4c, 0xf7, + 0xdc, 0x50, 0x5e, 0x31, 0xa7, 0xba, 0x09, 0xa7, 0xd1, 0x93, 0x1f, 0xce, 0xc0, 0xbc, 0x71, 0x03, + 0x2d, 0x6c, 0x85, 0x9a, 0xb4, 0x15, 0xa1, 0xcb, 0xc2, 0x94, 0xca, 0x89, 0xdd, 0x0b, 0x8d, 0x4f, + 0x49, 0xe2, 0x92, 0x3b, 0x88, 0xcb, 0x75, 0xd3, 0xcd, 0x5e, 0x3c, 0xc4, 0x87, 0x8a, 0xdf, 0xf4, + 0xb4, 0xf9, 0xa1, 0x26, 0xbe, 0x6b, 0x89, 0x66, 0xdd, 0x4a, 0x8e, 0xb7, 0xb8, 0x42, 0xca, 0xa8, + 0x2b, 0xa4, 0x39, 0x18, 0xc6, 0x51, 0x95, 0x51, 0x4e, 0xf0, 0x87, 0xf5, 0x19, 0x7d, 0x1f, 0x12, + 0x62, 0x61, 0xdf, 0x7d, 0xc8, 0xfa, 0xe7, 0x23, 0x30, 0x9d, 0x58, 0x16, 0x42, 0x4f, 0xcd, 0x74, + 0xe9, 0xa9, 0x55, 0x00, 0x7e, 0x89, 0x3a, 0xe0, 0x6d, 0xa7, 0x74, 0x97, 0x1a, 0x17, 0xde, 0x87, + 0xea, 0x9b, 0xd2, 0xd8, 0x30, 0xa6, 0xfc, 0x8b, 0x1d, 0xf0, 0xf6, 0x59, 0x31, 0xe5, 0x1f, 0xbd, + 0xc6, 0x34, 0x66, 0x43, 0x8a, 0x30, 0x8c, 0xa1, 0x09, 0x75, 0x6f, 0x35, 0x8f, 0x01, 0x6c, 0x0e, + 0x27, 0x97, 0x60, 0x84, 0x09, 0x51, 0x95, 0xb2, 0xd8, 0x04, 0xf1, 0x6c, 0x61, 0x52, 0x16, 0x93, + 0x58, 0x44, 0x11, 0xb9, 0x05, 0x13, 0xfc, 0x2f, 0x11, 0x9d, 0x62, 0xc4, 0x34, 0x60, 0x73, 0xbc, + 0xba, 0x0c, 0x50, 0x61, 0xe0, 0x31, 0xed, 0xa2, 0xda, 0xc1, 0x9b, 0x95, 0x4a, 0x59, 0xc4, 0xb2, + 0x45, 0xed, 0x22, 0xe4, 0x40, 0xcc, 0x39, 0xaf, 0x10, 0x98, 0x2c, 0x23, 0x6c, 0xc6, 0xf3, 0xa8, + 0x53, 0xa2, 0x2c, 0xc3, 0x6d, 0xc5, 0x6d, 0x51, 0x42, 0xae, 0xf2, 0x37, 0x0e, 0x14, 0x0b, 0x79, + 0x6a, 0x2f, 0x7c, 0x11, 0xc0, 0x8b, 0x09, 0x94, 0x0d, 0x55, 0x31, 0xab, 0x9c, 0xfd, 0xbd, 0xd2, + 0x74, 0xbd, 0x86, 0xd8, 0x56, 0xb0, 0x72, 0xc4, 0xa5, 0x0c, 0x6a, 0xc7, 0x08, 0xe4, 0x5d, 0x98, + 0x62, 0x3f, 0x96, 0xfd, 0x66, 0xd3, 0x6f, 0x21, 0xfb, 0xf1, 0x38, 0xd0, 0x11, 0x92, 0xd4, 0xb0, + 0x88, 0xd7, 0x92, 0xc0, 0x65, 0xe7, 0x09, 0xbe, 0x9f, 0x76, 0xf8, 0xeb, 0xcb, 0x44, 0x7c, 0x9e, + 0x20, 0x69, 0xc8, 0xe1, 0xb6, 0x8e, 0x44, 0xde, 0x86, 0x49, 0xf6, 0xf3, 0x8e, 0xf7, 0x84, 0xf2, + 0x0a, 0x27, 0xe3, 0x17, 0x7d, 0xa4, 0xda, 0x65, 0x25, 0xbc, 0x3e, 0x13, 0x93, 0x7c, 0x09, 0x4e, + 0x21, 0xa7, 0x9a, 0xdf, 0xa6, 0xf5, 0xd2, 0xce, 0x8e, 0xd7, 0xf0, 0xb8, 0x45, 0x11, 0x8f, 0xc3, + 0x80, 0xb7, 0xdb, 0xbc, 0x62, 0xc4, 0x70, 0xdc, 0x18, 0xc5, 0x4e, 0xa7, 0x24, 0x8f, 0xa0, 0xb0, + 0xdc, 0x09, 0x23, 0xbf, 0x59, 0x8a, 0xa2, 0xc0, 0xdb, 0xee, 0x44, 0x34, 0x9c, 0x9f, 0x36, 0xa2, + 0x15, 0xb0, 0x8f, 0x43, 0x15, 0xf2, 0xfb, 0xa0, 0x1a, 0x52, 0x38, 0xae, 0x22, 0xb1, 0xbb, 0x98, + 0x58, 0xff, 0x2c, 0x03, 0x93, 0x06, 0x29, 0x79, 0x0b, 0x26, 0x6e, 0x07, 0x1e, 0x6d, 0xd5, 0x1b, + 0x07, 0x9a, 0xa2, 0x8a, 0x5a, 0xcc, 0x8e, 0x80, 0xf3, 0x5e, 0x1b, 0x68, 0xea, 0x9e, 0x27, 0x9b, + 0x6a, 0xee, 0x77, 0x9d, 0x3b, 0x4d, 0x8a, 0x05, 0x9a, 0x8b, 0xc3, 0xa7, 0xe0, 0x02, 0x15, 0xab, + 0x53, 0x43, 0x21, 0xef, 0xc1, 0x08, 0x7f, 0x69, 0x15, 0xb6, 0x67, 0x67, 0xd3, 0xba, 0xc9, 0x1d, + 0x74, 0x71, 0x21, 0xa2, 0x9d, 0x4b, 0x68, 0x0b, 0x22, 0xeb, 0xe7, 0x32, 0x40, 0xba, 0x51, 0x8f, + 0xb9, 0xf7, 0x3a, 0xd6, 0x7e, 0xe6, 0x8b, 0xea, 0x6b, 0xcc, 0x19, 0xb7, 0xd1, 0xac, 0x26, 0x5e, + 0xc0, 0x07, 0x5e, 0x7c, 0x75, 0xfa, 0x45, 0x1c, 0x2f, 0xb6, 0x7e, 0x28, 0x0b, 0x10, 0x63, 0x93, + 0xcf, 0xf3, 0x0c, 0x30, 0x5f, 0xea, 0xb8, 0x0d, 0x6f, 0xc7, 0x33, 0x43, 0x22, 0x22, 0x93, 0x6f, + 0xca, 0x12, 0xdb, 0x44, 0x24, 0x1f, 0xc0, 0x74, 0x75, 0xd3, 0xa4, 0xd5, 0xb2, 0x5d, 0x84, 0x6d, + 0x27, 0x41, 0x9e, 0xc4, 0x46, 0x1b, 0x53, 0x7d, 0x36, 0xb8, 0x8d, 0x29, 0x9f, 0x08, 0x51, 0xc2, + 0x36, 0x96, 0xea, 0xa6, 0x30, 0x92, 0xae, 0xab, 0xf7, 0x42, 0x6c, 0x5d, 0xd8, 0x76, 0xda, 0xc2, + 0x7a, 0x9a, 0xed, 0x13, 0x06, 0x5e, 0x3c, 0x90, 0xc3, 0x3d, 0x9c, 0x70, 0x7f, 0x1e, 0xaf, 0xfd, + 0x9a, 0x7e, 0x44, 0xc5, 0x6d, 0xc7, 0x73, 0xab, 0xf7, 0xc4, 0xcf, 0xf4, 0xc3, 0x86, 0x6f, 0xa1, + 0xd1, 0x3b, 0x61, 0x24, 0x72, 0x33, 0x56, 0x52, 0xf8, 0x83, 0x7d, 0x8a, 0x59, 0xc9, 0xdf, 0xcf, + 0xc0, 0xa9, 0x54, 0x5a, 0x72, 0x0d, 0x20, 0xbe, 0x53, 0x12, 0xa3, 0x84, 0x3b, 0x66, 0x1c, 0x34, + 0xc4, 0xd6, 0x30, 0xc8, 0x57, 0x93, 0xb7, 0x41, 0xc7, 0x1f, 0x84, 0x0b, 0x32, 0x28, 0x94, 0x79, + 0x1b, 0x94, 0x72, 0x07, 0x64, 0xfd, 0xc3, 0x1c, 0xcc, 0x68, 0x31, 0x49, 0x78, 0x5b, 0x8f, 0xb1, + 0xf9, 0x7d, 0x0c, 0x13, 0xac, 0x37, 0x5e, 0x4d, 0x38, 0x38, 0x71, 0x93, 0x92, 0xd7, 0xba, 0xbc, + 0xc3, 0x04, 0xb7, 0x6b, 0x3a, 0x32, 0x0f, 0xd5, 0x86, 0x5b, 0x27, 0xbe, 0x09, 0xd4, 0xba, 0x1d, + 0x9d, 0x0c, 0xe6, 0x24, 0x84, 0xc9, 0xf2, 0x41, 0xcb, 0x6d, 0xaa, 0xda, 0xb8, 0x69, 0xc9, 0xeb, + 0x3d, 0x6b, 0x33, 0xb0, 0x79, 0x75, 0xb1, 0x1f, 0x05, 0x2f, 0x4b, 0x71, 0xe1, 0x35, 0xa8, 0x16, + 0x3e, 0x80, 0x99, 0xae, 0x46, 0x9f, 0x28, 0x6a, 0xdc, 0x23, 0x20, 0xdd, 0xed, 0x48, 0xe1, 0xf0, + 0xba, 0x19, 0x93, 0xf0, 0x94, 0x7a, 0x16, 0xc6, 0x5c, 0xd7, 0xdc, 0x50, 0x65, 0x51, 0x8f, 0x29, + 0xf7, 0xf3, 0x59, 0xdd, 0x43, 0xef, 0x79, 0xff, 0xea, 0xbe, 0x68, 0x68, 0xc3, 0x17, 0x7a, 0xcd, + 0xe9, 0x40, 0xb7, 0x0e, 0xdf, 0xca, 0xc1, 0x99, 0x1e, 0x94, 0xe4, 0x20, 0xb9, 0x88, 0xf8, 0x2d, + 0xc4, 0x8d, 0xfe, 0x15, 0x3e, 0x8b, 0xa5, 0x44, 0x3e, 0xcf, 0x7d, 0xf4, 0x6b, 0x98, 0x4f, 0x59, + 0xe8, 0xdf, 0x3c, 0xbd, 0xbf, 0x82, 0x26, 0x9d, 0xf3, 0x39, 0x94, 0x7c, 0x00, 0xc3, 0xe8, 0x9e, + 0x99, 0x88, 0x89, 0xc6, 0x30, 0x10, 0xae, 0x05, 0x90, 0x63, 0x3f, 0x8d, 0x00, 0x72, 0x0c, 0x40, + 0x3e, 0x07, 0xb9, 0xd2, 0xa3, 0xaa, 0x98, 0x97, 0x29, 0x9d, 0xfc, 0x51, 0x35, 0x8e, 0x5b, 0xef, + 0x1a, 0x01, 0xe6, 0x19, 0x05, 0x23, 0xbc, 0xb3, 0xbc, 0x29, 0x66, 0x45, 0x27, 0xbc, 0xb3, 0xbc, + 0x19, 0x13, 0xee, 0xd6, 0x8c, 0x18, 0x33, 0x77, 0x96, 0x37, 0x3f, 0xbd, 0x65, 0xff, 0x6f, 0x67, + 0x79, 0x60, 0x01, 0xde, 0xb1, 0x0f, 0x60, 0xc2, 0x88, 0x19, 0x9b, 0x89, 0xe5, 0x31, 0x15, 0x9a, + 0x37, 0x61, 0x8b, 0x63, 0x10, 0xc8, 0x0c, 0x10, 0xec, 0x37, 0x4a, 0xbc, 0xba, 0x19, 0x8b, 0xe2, + 0x80, 0x32, 0x71, 0x32, 0x03, 0x84, 0x22, 0x21, 0x37, 0x21, 0xbf, 0x45, 0x5b, 0x6e, 0x2b, 0x52, + 0x17, 0xa2, 0x68, 0x4f, 0x1b, 0x21, 0xcc, 0x94, 0x1a, 0x14, 0x22, 0xda, 0x7e, 0x76, 0xb6, 0xc3, + 0x5a, 0xe0, 0x61, 0x00, 0x12, 0x75, 0x16, 0x73, 0xdb, 0x4f, 0xad, 0xc4, 0x64, 0x90, 0x20, 0xb2, + 0x7e, 0x3e, 0x03, 0xa3, 0x62, 0x22, 0x79, 0xe6, 0x9e, 0xdd, 0xf8, 0x2c, 0x11, 0x99, 0x7b, 0x76, + 0xbd, 0x64, 0xe6, 0x9e, 0x5d, 0x1e, 0xe5, 0x63, 0x4c, 0xf8, 0xc8, 0xaa, 0xa7, 0x41, 0x9e, 0x44, + 0x9e, 0x03, 0xcd, 0x6a, 0x63, 0xd4, 0x41, 0x9d, 0x6a, 0xac, 0xbf, 0x2b, 0x5a, 0x76, 0x67, 0x79, + 0x93, 0x2c, 0x42, 0x7e, 0xcd, 0xe7, 0x11, 0x64, 0xf4, 0x34, 0x8c, 0x0d, 0x01, 0xd3, 0x07, 0x48, + 0xe2, 0xb1, 0xf6, 0x6d, 0x06, 0xbe, 0xd0, 0x65, 0xb4, 0xf6, 0xb5, 0x39, 0x30, 0xd1, 0x3e, 0x85, + 0x3a, 0x70, 0xfb, 0x68, 0xca, 0x26, 0xf1, 0xf0, 0x26, 0x86, 0xc6, 0xbf, 0xab, 0x3b, 0x2b, 0x89, + 0x22, 0xb9, 0x53, 0x2c, 0xf4, 0xda, 0x29, 0x1e, 0xde, 0xb4, 0x53, 0xa8, 0xf0, 0x5d, 0x2d, 0x06, + 0x57, 0x69, 0xf0, 0xe4, 0x39, 0xde, 0xa5, 0xd3, 0xdf, 0xd5, 0x92, 0xdd, 0x1b, 0x68, 0x93, 0xfe, + 0x6f, 0xb3, 0x70, 0x3a, 0x9d, 0x50, 0xef, 0x4b, 0xa6, 0x4f, 0x5f, 0xae, 0x40, 0x7e, 0xd5, 0x0f, + 0x23, 0xcd, 0xfc, 0x0e, 0xaf, 0xff, 0xf7, 0x04, 0xcc, 0x56, 0xa5, 0x4c, 0xe7, 0x66, 0x7f, 0xab, + 0xcf, 0x13, 0xf9, 0xa1, 0x3b, 0x3d, 0xd3, 0xb9, 0x79, 0x11, 0xb9, 0x03, 0x79, 0x5b, 0x38, 0xcb, + 0x24, 0x86, 0x46, 0x82, 0x95, 0x34, 0x45, 0x02, 0x01, 0x31, 0x42, 0xf7, 0x0a, 0x18, 0x29, 0xc1, + 0xa8, 0x98, 0xfd, 0xc4, 0xd3, 0x71, 0xca, 0x92, 0x31, 0xa3, 0x69, 0x4b, 0x3a, 0xb6, 0xa3, 0xe0, + 0x23, 0x60, 0xa5, 0x2c, 0xfd, 0x5e, 0x70, 0x47, 0xe1, 0x8f, 0x84, 0xa6, 0xa5, 0xa3, 0x42, 0xb4, + 0x7e, 0x38, 0x0b, 0x20, 0x6f, 0x6d, 0x9e, 0xdb, 0x15, 0xf6, 0x39, 0x63, 0x85, 0x69, 0x96, 0x3c, + 0x83, 0x67, 0x9a, 0xdc, 0x40, 0x8b, 0x9a, 0xc1, 0xf3, 0x4c, 0x16, 0x61, 0x78, 0x2b, 0xbe, 0xd0, + 0x12, 0x5e, 0x18, 0x78, 0x1d, 0xcd, 0xe1, 0xd6, 0x36, 0xcc, 0xdd, 0xa1, 0x51, 0x7c, 0xbd, 0x25, + 0x9f, 0x1e, 0xfb, 0xb3, 0x7d, 0x03, 0xc6, 0x04, 0xbe, 0xda, 0xbf, 0xf8, 0x5d, 0x8c, 0x88, 0x50, + 0x81, 0x77, 0x31, 0x12, 0x81, 0xed, 0x46, 0x65, 0xda, 0xa0, 0x11, 0xfd, 0x74, 0xab, 0xa9, 0x02, + 0xe1, 0x5d, 0xc1, 0x9e, 0x0d, 0x56, 0xc3, 0xb1, 0xe3, 0xf3, 0x10, 0x4e, 0xa9, 0xb6, 0x3f, 0x4b, + 0xbe, 0xd7, 0x99, 0x4a, 0x29, 0x02, 0x51, 0xc7, 0x1c, 0xfb, 0xd8, 0x9e, 0x3c, 0x85, 0x05, 0x49, + 0xf0, 0xc8, 0x53, 0x26, 0x89, 0x03, 0xd1, 0x92, 0x77, 0x61, 0x5c, 0xa3, 0x11, 0x81, 0x94, 0xf1, + 0x9a, 0x7a, 0xdf, 0x8b, 0xf6, 0x9c, 0x90, 0xc3, 0xf5, 0x6b, 0x6a, 0x0d, 0xdd, 0xfa, 0x0a, 0xbc, + 0xa8, 0x3c, 0x65, 0x52, 0xaa, 0x4e, 0x30, 0xcf, 0x9c, 0x8c, 0xf9, 0x7a, 0xdc, 0xad, 0x4a, 0x4b, + 0x79, 0xb7, 0x4a, 0xde, 0x44, 0xef, 0x96, 0xe8, 0xcc, 0xb9, 0x2e, 0x7f, 0x59, 0xcd, 0x2d, 0xd6, + 0x7a, 0x47, 0x6b, 0x6c, 0x0a, 0x43, 0x83, 0x38, 0x93, 0x24, 0xfe, 0xe1, 0x2c, 0x4c, 0x6f, 0x54, + 0xca, 0xcb, 0xca, 0xfa, 0xe8, 0x3b, 0x2c, 0x0f, 0xa6, 0xd1, 0xb7, 0xde, 0xfb, 0x8d, 0xf5, 0x00, + 0x66, 0x13, 0xc3, 0x80, 0xa2, 0xc3, 0xfb, 0xdc, 0x95, 0x43, 0x81, 0xa5, 0xd8, 0x70, 0x3a, 0x8d, + 0xfd, 0xc3, 0x9b, 0x76, 0x02, 0xdb, 0xfa, 0x17, 0x63, 0x09, 0xbe, 0x62, 0x0b, 0x7b, 0x03, 0xc6, + 0x2a, 0x61, 0xd8, 0xa1, 0xc1, 0x03, 0x7b, 0x4d, 0xbf, 0x2a, 0xf0, 0x10, 0xe8, 0x74, 0x82, 0x86, + 0x1d, 0x23, 0x90, 0xab, 0x90, 0x17, 0xb1, 0x85, 0xe5, 0x9e, 0x80, 0xb7, 0xb6, 0x2a, 0x34, 0xb1, + 0xad, 0x8a, 0xc9, 0x5b, 0x30, 0xc1, 0xff, 0xe6, 0xab, 0x4d, 0x0c, 0x38, 0x5e, 0x0e, 0x0a, 0x74, + 0xbe, 0x3a, 0x6d, 0x03, 0x8d, 0xbc, 0x06, 0xb9, 0xd2, 0xb2, 0x2d, 0xae, 0x83, 0x84, 0xdc, 0x88, + 0xd9, 0xad, 0x3b, 0xd4, 0x54, 0x22, 0x96, 0x6d, 0x26, 0xfd, 0x49, 0xbf, 0x7c, 0x71, 0x93, 0xcd, + 0x93, 0x70, 0x0b, 0x58, 0xe2, 0x30, 0x43, 0x18, 0xb9, 0x0e, 0xa3, 0x65, 0x2f, 0x6c, 0x37, 0xdc, + 0x03, 0x71, 0x8f, 0xcd, 0x93, 0x3c, 0x71, 0x90, 0xe1, 0x20, 0xcf, 0x41, 0xe4, 0xaa, 0x4c, 0x7e, + 0x93, 0x8f, 0x3d, 0x42, 0x7a, 0x64, 0xb8, 0x79, 0x03, 0x46, 0x44, 0x04, 0xde, 0x31, 0x2d, 0xb6, + 0x7e, 0x32, 0xf2, 0xae, 0xc0, 0xe9, 0xf6, 0xd9, 0x84, 0x67, 0xe9, 0xb3, 0xb9, 0x0d, 0x67, 0xee, + 0xe0, 0xed, 0x8d, 0x19, 0xb6, 0xe6, 0x81, 0x5d, 0x11, 0xf7, 0xe1, 0xf8, 0x0c, 0xc4, 0x2f, 0x78, + 0x92, 0x91, 0x6f, 0x9c, 0x4e, 0xa0, 0xe7, 0x2c, 0xec, 0xc5, 0x88, 0x7c, 0x19, 0xe6, 0xd2, 0x8a, + 0xc4, 0xad, 0x39, 0x06, 0x68, 0x49, 0xaf, 0x40, 0x0f, 0xd0, 0x92, 0xc6, 0x81, 0xac, 0x41, 0x81, + 0xc3, 0x4b, 0xf5, 0xa6, 0xd7, 0xe2, 0x37, 0xff, 0xfc, 0x56, 0x1d, 0x5d, 0x34, 0x04, 0x57, 0x97, + 0x15, 0xf2, 0x17, 0x00, 0xc3, 0xa9, 0x27, 0x41, 0x49, 0x7e, 0x32, 0xc3, 0xb4, 0x39, 0x1e, 0xaf, + 0xf6, 0x81, 0xbd, 0x16, 0x8a, 0xe0, 0x5e, 0xa7, 0x63, 0x7f, 0x9d, 0x6a, 0x14, 0x78, 0xad, 0x5d, + 0xe1, 0xb0, 0xb3, 0x25, 0x1c, 0x76, 0xde, 0xfd, 0x58, 0x0e, 0x3b, 0x9c, 0x55, 0x78, 0x74, 0x58, + 0x9c, 0x08, 0x44, 0x9d, 0xf8, 0x15, 0x19, 0x2d, 0xc0, 0x7c, 0xfb, 0x8d, 0x86, 0xbf, 0xff, 0xa0, + 0xc5, 0xa3, 0x65, 0xd2, 0x3a, 0xef, 0xe4, 0x34, 0xee, 0xe0, 0x3c, 0xdf, 0x3e, 0x2b, 0x77, 0x3a, + 0x0a, 0xa1, 0xab, 0xa3, 0xa9, 0x1c, 0x98, 0xe2, 0x29, 0x9d, 0x42, 0xb8, 0x03, 0x6a, 0x21, 0x56, + 0x3c, 0xa5, 0x07, 0x89, 0x83, 0xcb, 0x48, 0x5f, 0x3c, 0x06, 0x09, 0xb9, 0x0e, 0x23, 0xf7, 0xdd, + 0xa7, 0xa5, 0x5d, 0x2a, 0x92, 0x9a, 0x4d, 0xca, 0xed, 0x0f, 0x81, 0x4b, 0xf9, 0x3f, 0xe2, 0x5e, + 0x04, 0x2f, 0xd8, 0x02, 0x8d, 0x7c, 0x5f, 0x06, 0x4e, 0xf3, 0xcf, 0x58, 0xf6, 0xb2, 0x4a, 0xa3, + 0x88, 0x8d, 0x83, 0x88, 0xf2, 0x25, 0x53, 0x82, 0x54, 0xab, 0x1b, 0xe9, 0x78, 0x3c, 0x3b, 0xbc, + 0xd8, 0x19, 0xd4, 0xc0, 0x85, 0xa2, 0xd4, 0x88, 0x5f, 0x9a, 0x4a, 0x2f, 0x2c, 0xe4, 0x3f, 0x27, + 0x5b, 0x4e, 0xde, 0xd4, 0xfd, 0x24, 0x73, 0x28, 0xe7, 0x8e, 0x36, 0xdd, 0xa7, 0x8e, 0xbb, 0x4b, + 0x8d, 0xf7, 0x6c, 0x71, 0xcf, 0xfc, 0xb3, 0x19, 0x38, 0xdb, 0xb3, 0x71, 0xe4, 0x16, 0x9c, 0x71, + 0xb9, 0xf7, 0xaf, 0xb3, 0x17, 0x45, 0xed, 0xd0, 0x91, 0xca, 0x80, 0xf0, 0xac, 0xb4, 0x4f, 0x89, + 0xe2, 0x55, 0x56, 0x2a, 0xf5, 0x83, 0x90, 0x7c, 0x00, 0xe7, 0xbc, 0x56, 0x48, 0x6b, 0x9d, 0x80, + 0x3a, 0x92, 0x41, 0xcd, 0xab, 0x07, 0x4e, 0xe0, 0xb6, 0x76, 0xa5, 0x9b, 0xa8, 0x7d, 0x56, 0xe2, + 0x08, 0x0f, 0xe3, 0x65, 0xaf, 0x1e, 0xd8, 0x88, 0x60, 0xfd, 0xd4, 0x24, 0x3f, 0x15, 0x4b, 0x9d, + 0x68, 0x4f, 0x9e, 0xa3, 0x8b, 0x69, 0xce, 0x45, 0xdc, 0x3c, 0x50, 0x73, 0x2e, 0x32, 0x5d, 0x8a, + 0xe4, 0x73, 0x46, 0x36, 0xf5, 0x39, 0xe3, 0x0d, 0x18, 0x5b, 0xde, 0xa3, 0xb5, 0xc7, 0xca, 0x63, + 0x23, 0x2f, 0xee, 0x8b, 0x19, 0x90, 0x07, 0xc7, 0x8d, 0x11, 0xc8, 0x75, 0x00, 0xf4, 0x36, 0xe4, + 0x42, 0x96, 0x16, 0xe0, 0x1e, 0x9d, 0x13, 0x85, 0xc5, 0x85, 0x86, 0x82, 0xec, 0xab, 0xf6, 0x6d, + 0xdd, 0x44, 0x83, 0xb3, 0x0f, 0x83, 0x1d, 0x81, 0x1e, 0x23, 0xb0, 0xee, 0x69, 0x9f, 0x8a, 0xd8, + 0xd8, 0x0b, 0x5d, 0xdf, 0x93, 0x8e, 0x44, 0xae, 0xc1, 0xd8, 0xa6, 0x34, 0x4f, 0xc7, 0x7d, 0x7d, + 0x02, 0x29, 0x20, 0x36, 0x65, 0x9f, 0xcf, 0xd8, 0x31, 0x0a, 0xf9, 0x1c, 0x8c, 0x2e, 0xd3, 0x20, + 0xda, 0xda, 0x5a, 0x43, 0x3b, 0x0a, 0x1e, 0x07, 0x3e, 0x8f, 0x31, 0xbb, 0xa3, 0xa8, 0xf1, 0xed, + 0xc3, 0xe2, 0x64, 0xe4, 0x35, 0xa9, 0x8a, 0x6f, 0x6b, 0x4b, 0x6c, 0xb2, 0x04, 0x05, 0xfe, 0xd2, + 0x1b, 0x8b, 0xd3, 0xb8, 0xd9, 0xe7, 0xf9, 0xd1, 0x23, 0x9e, 0x85, 0xf7, 0xe9, 0xb6, 0x8a, 0x58, + 0xde, 0x85, 0x4f, 0x56, 0x64, 0xa0, 0x7f, 0xbd, 0x9b, 0x10, 0xdf, 0xef, 0x24, 0x3f, 0x02, 0xd6, + 0xdb, 0x6e, 0x0a, 0x52, 0x82, 0xc9, 0x65, 0xbf, 0xd9, 0x76, 0x23, 0x0f, 0xb3, 0x66, 0x1d, 0x88, + 0x7d, 0x1d, 0xef, 0xa8, 0x6a, 0x7a, 0x81, 0x71, 0x48, 0xe8, 0x05, 0xe4, 0x36, 0x4c, 0xd9, 0x7e, + 0x87, 0x4d, 0x93, 0x54, 0x2c, 0xf9, 0xd6, 0x8d, 0xd6, 0x0e, 0x01, 0x2b, 0x61, 0x27, 0x8d, 0xd0, + 0x22, 0x8d, 0xd0, 0x83, 0x06, 0x15, 0x59, 0x4f, 0xb9, 0xe1, 0xd7, 0xf7, 0x6b, 0x3d, 0x6e, 0x79, + 0x17, 0xb3, 0x94, 0xc7, 0x81, 0x9b, 0x30, 0x5e, 0xad, 0x6e, 0x6c, 0xd1, 0x30, 0xba, 0xdd, 0xf0, + 0xf7, 0x71, 0xbb, 0xce, 0x8b, 0x7c, 0x2e, 0xa1, 0xef, 0x44, 0x34, 0x8c, 0x9c, 0x9d, 0x86, 0xbf, + 0x6f, 0xeb, 0x58, 0xe4, 0xeb, 0x6c, 0x3c, 0x34, 0xe1, 0x46, 0x04, 0x59, 0xec, 0x27, 0x7f, 0xe1, + 0xa6, 0x18, 0x7f, 0x34, 0x4c, 0x0a, 0x33, 0x07, 0x4b, 0x43, 0x47, 0x07, 0x24, 0xa6, 0x12, 0x97, + 0xea, 0xf5, 0x80, 0x86, 0xa1, 0xd8, 0x57, 0xb9, 0x03, 0x12, 0xea, 0xcf, 0x2e, 0x2f, 0x30, 0x1c, + 0x90, 0x34, 0x02, 0xf2, 0xa3, 0x19, 0x38, 0xa5, 0xfb, 0x30, 0xe0, 0xe7, 0x82, 0x96, 0x1b, 0x7c, + 0x97, 0x7d, 0xf3, 0x9a, 0x3c, 0x57, 0xae, 0x69, 0x68, 0xd7, 0x9e, 0xdc, 0xb8, 0x56, 0x8a, 0x7f, + 0x56, 0x25, 0x11, 0x06, 0x8c, 0x2a, 0xa6, 0xf2, 0x8b, 0x5b, 0x30, 0x9f, 0xb1, 0xe7, 0xdc, 0x14, + 0x62, 0xb2, 0xcc, 0x84, 0x0f, 0xb6, 0xa2, 0xd0, 0x16, 0xa8, 0xb2, 0x89, 0xdb, 0xb4, 0xb8, 0x24, + 0x14, 0xeb, 0x8f, 0x5b, 0x0d, 0x79, 0x6d, 0x53, 0xc6, 0xd0, 0x68, 0x48, 0x05, 0xa6, 0x39, 0x80, + 0x6d, 0x0b, 0x3c, 0xdd, 0xc7, 0x6c, 0x1c, 0x72, 0x5c, 0xb0, 0xc1, 0xe7, 0x6b, 0x4c, 0xf9, 0xa1, + 0x47, 0x05, 0x4c, 0xd0, 0x91, 0x0f, 0x60, 0x2a, 0x0c, 0xf7, 0x1c, 0xed, 0x7b, 0x9d, 0xc3, 0xaf, + 0x18, 0x83, 0x1b, 0x8a, 0x92, 0x84, 0x9b, 0xd6, 0x44, 0x18, 0xee, 0xc5, 0x5f, 0xf4, 0x07, 0x30, + 0x85, 0xe6, 0x27, 0x31, 0x83, 0x53, 0x31, 0x03, 0x51, 0x92, 0x64, 0x10, 0x35, 0xc2, 0x98, 0xc1, + 0x4f, 0x67, 0xe0, 0x2c, 0xab, 0x28, 0x7d, 0x86, 0x4e, 0x7f, 0x9c, 0x19, 0xc2, 0x70, 0x6f, 0x3d, + 0x79, 0xea, 0x12, 0x56, 0x18, 0xee, 0xa5, 0x71, 0xc0, 0x46, 0xb1, 0xc6, 0xa7, 0x37, 0xea, 0xcc, + 0xc7, 0x6e, 0x54, 0x4f, 0x9e, 0x7a, 0xa3, 0xa2, 0x46, 0x98, 0xc6, 0x01, 0x35, 0xb5, 0x6a, 0xe9, + 0xfe, 0x5a, 0xac, 0x6e, 0x7c, 0x67, 0x79, 0x62, 0x18, 0x7d, 0xeb, 0xe3, 0x89, 0xf1, 0x80, 0xbb, + 0xdc, 0x6a, 0xc3, 0x20, 0x35, 0x35, 0x03, 0x9c, 0xd4, 0xd4, 0x12, 0x34, 0x76, 0x02, 0xdb, 0xfa, + 0x76, 0x3e, 0xc1, 0x57, 0x58, 0x5f, 0x5a, 0x30, 0xc2, 0x15, 0x31, 0x3d, 0xcf, 0x3f, 0x57, 0xd3, + 0x6c, 0x51, 0x42, 0xce, 0x42, 0xae, 0x5a, 0xdd, 0x10, 0x83, 0x8c, 0x36, 0x98, 0x61, 0xe8, 0xdb, + 0x0c, 0xc6, 0x66, 0x08, 0x0d, 0x2b, 0xb5, 0x60, 0xd8, 0xec, 0xbc, 0xb3, 0x11, 0xca, 0xc6, 0x5b, + 0xaa, 0x45, 0x43, 0xf1, 0x78, 0x0b, 0xb5, 0x28, 0x56, 0x86, 0x96, 0x61, 0xbe, 0x14, 0x86, 0x34, + 0x60, 0x0b, 0x42, 0xd8, 0xeb, 0x05, 0x42, 0x74, 0x17, 0x07, 0x3b, 0x56, 0xea, 0xd6, 0x42, 0xbb, + 0x27, 0x22, 0xb9, 0x02, 0xf9, 0x52, 0xa7, 0xee, 0xd1, 0x56, 0xcd, 0x88, 0x16, 0xe5, 0x0a, 0x98, + 0xad, 0x4a, 0xc9, 0x97, 0xe0, 0x54, 0x22, 0xfe, 0x9a, 0x18, 0x81, 0xd1, 0x78, 0xef, 0x95, 0xaa, + 0x45, 0x6c, 0x63, 0xc0, 0x87, 0x24, 0x9d, 0x92, 0x94, 0xa0, 0xb0, 0x82, 0x9e, 0x47, 0x65, 0xca, + 0x9f, 0x3b, 0xfc, 0x80, 0x7b, 0x7d, 0x71, 0x45, 0x90, 0x7b, 0x25, 0x39, 0x75, 0x55, 0x68, 0x77, + 0xa1, 0x93, 0x7b, 0x30, 0x9b, 0x84, 0xb1, 0x13, 0x9c, 0xeb, 0x7c, 0xb8, 0xdf, 0x74, 0x71, 0xc1, + 0x33, 0x3c, 0x8d, 0x8a, 0x6c, 0xc3, 0x4c, 0x6c, 0x63, 0x63, 0x6a, 0x82, 0xd2, 0x74, 0x57, 0x95, + 0x4b, 0x6d, 0xf0, 0x45, 0xb1, 0x18, 0x67, 0x63, 0x7b, 0x1d, 0xa5, 0x11, 0xda, 0xdd, 0xec, 0x48, + 0x1d, 0xa6, 0xaa, 0xde, 0x6e, 0xcb, 0x6b, 0xed, 0xde, 0xa3, 0x07, 0x9b, 0xae, 0x17, 0x08, 0x23, + 0x4a, 0x69, 0x22, 0x5d, 0x0a, 0x0f, 0x9a, 0x4d, 0x1a, 0x05, 0xb8, 0x11, 0xb2, 0x72, 0x74, 0x58, + 0x66, 0x12, 0xfe, 0x42, 0xc8, 0xe9, 0xd0, 0x19, 0xb0, 0xed, 0x7a, 0x86, 0x10, 0x60, 0xf2, 0x34, + 0xb4, 0xf1, 0x89, 0x01, 0xb5, 0xf1, 0x06, 0xcc, 0xac, 0xb4, 0x6a, 0xc1, 0x01, 0xbe, 0x3a, 0xc9, + 0xc6, 0x4d, 0x1e, 0xd3, 0xb8, 0x97, 0x45, 0xe3, 0xce, 0xb9, 0x72, 0x85, 0xa5, 0x35, 0xaf, 0x9b, + 0x31, 0xa9, 0xc2, 0x0c, 0x4a, 0xd8, 0x95, 0xf2, 0x66, 0xa5, 0xe5, 0x45, 0x1e, 0x66, 0xa3, 0xe7, + 0xc2, 0xc5, 0x2b, 0x82, 0xe7, 0x79, 0xae, 0x75, 0x79, 0xf5, 0xb6, 0xe3, 0x49, 0x14, 0x9d, 0x69, + 0x17, 0x7d, 0x3f, 0xd5, 0x67, 0xfa, 0x5f, 0x8f, 0xea, 0x83, 0xf9, 0xda, 0x12, 0x7e, 0xff, 0x85, + 0xf8, 0x1c, 0x0e, 0xb1, 0x88, 0x1d, 0xe7, 0x7e, 0x07, 0x85, 0x49, 0x23, 0x5f, 0x9b, 0x49, 0x67, + 0xfd, 0xe6, 0x04, 0xdf, 0xdb, 0x75, 0x7d, 0xa3, 0x97, 0xf1, 0x64, 0x42, 0x0f, 0xc9, 0x9e, 0x44, + 0x0f, 0xc9, 0x1d, 0xaf, 0x87, 0x0c, 0x1d, 0xa7, 0x87, 0x24, 0x14, 0x85, 0xe1, 0x13, 0x2b, 0x0a, + 0x23, 0x27, 0x52, 0x14, 0x46, 0x4f, 0xa4, 0x28, 0x18, 0x3a, 0x4f, 0xfe, 0x38, 0x9d, 0xe7, 0xaf, + 0xd5, 0x8a, 0xe7, 0x55, 0xad, 0x48, 0x13, 0x16, 0x4e, 0xa4, 0x56, 0xfc, 0x48, 0x4f, 0xad, 0xa0, + 0xf0, 0x71, 0xc4, 0xbb, 0x4b, 0x03, 0x68, 0x05, 0x83, 0xea, 0x04, 0x33, 0xcf, 0x46, 0x27, 0x20, + 0xcf, 0x4c, 0x27, 0x98, 0xfd, 0xa4, 0x3a, 0xc1, 0xdc, 0xb3, 0xd4, 0x09, 0x4e, 0xfd, 0x55, 0xd4, + 0x09, 0x4e, 0xff, 0x9b, 0xd1, 0x09, 0xbe, 0x17, 0x0a, 0x49, 0x31, 0xe5, 0xf8, 0xb0, 0x9e, 0xcf, + 0x2c, 0x04, 0x1d, 0x13, 0xa2, 0x92, 0x62, 0x02, 0xb9, 0x0e, 0xb0, 0x19, 0x78, 0x4f, 0xdc, 0x88, + 0xde, 0x93, 0xa6, 0x41, 0x22, 0x24, 0x2d, 0x87, 0xb2, 0x99, 0xb7, 0x35, 0x14, 0x25, 0x21, 0x67, + 0xd3, 0x24, 0x64, 0xeb, 0x47, 0xb3, 0x30, 0xc3, 0xc3, 0x45, 0x3d, 0xff, 0x2f, 0x54, 0xef, 0x1b, + 0x7a, 0xcf, 0xb9, 0x38, 0xcc, 0xb2, 0xde, 0xbb, 0x3e, 0x6f, 0x54, 0x5f, 0x83, 0x53, 0x5d, 0x43, + 0x81, 0xba, 0x4f, 0x59, 0x06, 0xea, 0xea, 0xd2, 0x7e, 0xe6, 0xd3, 0x2b, 0x79, 0x78, 0xd3, 0xee, + 0xa2, 0xb0, 0xfe, 0x62, 0xa8, 0x8b, 0xbf, 0x78, 0xad, 0xd2, 0xdf, 0x9f, 0x32, 0x27, 0x7b, 0x7f, + 0xca, 0x0e, 0xf6, 0xfe, 0x94, 0x10, 0x2a, 0x72, 0x83, 0x08, 0x15, 0x5f, 0x82, 0xc9, 0x2d, 0xea, + 0x36, 0xc3, 0x2d, 0x5f, 0xe4, 0xcc, 0xe0, 0x86, 0xe8, 0x32, 0x0e, 0x17, 0x2b, 0x93, 0xa2, 0xbb, + 0x32, 0xa8, 0x8b, 0x18, 0x01, 0x3b, 0x06, 0x79, 0x12, 0x0d, 0xdb, 0xe4, 0xa0, 0xeb, 0x63, 0xc3, + 0x7d, 0xf4, 0xb1, 0x2a, 0x4c, 0x08, 0xba, 0x38, 0x96, 0x69, 0xac, 0x38, 0xb0, 0x22, 0x84, 0xcb, + 0xda, 0x55, 0x2a, 0x57, 0x55, 0x3b, 0xd7, 0x19, 0x0c, 0x26, 0x6c, 0x08, 0x56, 0x5a, 0xf5, 0xb6, + 0xef, 0xb5, 0x70, 0x08, 0x46, 0xe3, 0x21, 0xa0, 0x02, 0xcc, 0x87, 0x40, 0x43, 0x22, 0xef, 0xc2, + 0x54, 0x69, 0xb3, 0xa2, 0x93, 0xe5, 0xe3, 0x27, 0x30, 0xb7, 0xed, 0x39, 0x06, 0x69, 0x02, 0xb7, + 0x9f, 0x0c, 0x3d, 0xf6, 0xaf, 0x47, 0x86, 0xb6, 0xfe, 0xc9, 0xa4, 0xfc, 0xbc, 0x3f, 0xdd, 0xab, + 0x76, 0xf3, 0xf2, 0x3c, 0x77, 0xc2, 0xcb, 0xf3, 0xa1, 0xe3, 0x04, 0x49, 0x43, 0xbe, 0x1d, 0x3e, + 0x91, 0x7c, 0x3b, 0xf2, 0x89, 0x2f, 0xc2, 0x47, 0x4f, 0x28, 0xb1, 0x26, 0xbe, 0xb5, 0xfc, 0x20, + 0xdf, 0x5a, 0xaa, 0x94, 0x3b, 0xf6, 0xc9, 0xa5, 0x5c, 0x38, 0xb1, 0x94, 0x5b, 0x8d, 0x1d, 0x3b, + 0xc7, 0x8f, 0xb5, 0x97, 0x3f, 0x2f, 0xf4, 0xcb, 0x99, 0xf4, 0xe0, 0x5f, 0xca, 0xc5, 0xf3, 0x3b, + 0x4a, 0x74, 0xfe, 0x46, 0xba, 0xe8, 0xdc, 0xff, 0xbc, 0x39, 0x91, 0xf0, 0xfc, 0xa3, 0xcf, 0x56, + 0x78, 0x7e, 0xb6, 0x57, 0xea, 0x7f, 0x2d, 0x3e, 0xff, 0xb5, 0xf8, 0x3c, 0x98, 0xf8, 0x4c, 0x36, + 0x80, 0xb8, 0x9d, 0x68, 0x8f, 0xb6, 0x22, 0xcc, 0x08, 0x5e, 0xc7, 0x29, 0xc6, 0xfb, 0x7d, 0xf1, + 0xbd, 0x76, 0x97, 0xea, 0xdf, 0xab, 0x51, 0x8a, 0x4e, 0xb0, 0x01, 0x7e, 0xaf, 0x8f, 0xdc, 0xa0, + 0x85, 0x37, 0x44, 0xd7, 0x61, 0x54, 0x86, 0x53, 0xcc, 0xc4, 0x97, 0x9d, 0xdd, 0x71, 0x14, 0x25, + 0x16, 0x59, 0x84, 0xbc, 0x24, 0xd6, 0x33, 0x49, 0xec, 0x0b, 0x98, 0x11, 0xa9, 0x4e, 0xc0, 0xac, + 0x7f, 0x3e, 0x24, 0xcf, 0x04, 0xd6, 0x84, 0x4d, 0x37, 0x70, 0x9b, 0x98, 0x46, 0x48, 0x7d, 0xb2, + 0x9a, 0x36, 0x90, 0xf8, 0xca, 0x13, 0x86, 0xd4, 0x26, 0xc9, 0xc7, 0x8a, 0x87, 0x19, 0x67, 0x6a, + 0xcc, 0x0d, 0x90, 0xa9, 0xf1, 0x6d, 0x23, 0xcd, 0xe1, 0x50, 0x9c, 0x57, 0x8b, 0xed, 0x93, 0xfd, + 0x13, 0x1c, 0xde, 0xd2, 0xf3, 0x11, 0x0e, 0xc7, 0x31, 0x94, 0x90, 0xb2, 0x4f, 0x26, 0x42, 0xa5, + 0xde, 0x8c, 0x9c, 0x24, 0xd2, 0xec, 0xe8, 0xbf, 0xd1, 0x48, 0xb3, 0x2b, 0x00, 0x5a, 0x6a, 0x7e, + 0xfe, 0x72, 0xfe, 0x0a, 0x6e, 0x27, 0xc7, 0xa6, 0xe5, 0xd7, 0x08, 0xb5, 0x90, 0x64, 0x63, 0x03, + 0x84, 0x15, 0xb5, 0xfe, 0x90, 0xc0, 0x4c, 0xb5, 0xba, 0x51, 0xf6, 0xdc, 0xdd, 0x96, 0x1f, 0x46, + 0x5e, 0xad, 0xd2, 0xda, 0xf1, 0x99, 0x2a, 0xa0, 0x8e, 0x23, 0x2d, 0xa4, 0x68, 0x7c, 0x14, 0xa9, + 0x62, 0xa6, 0x6a, 0xae, 0x04, 0x81, 0x1f, 0xe8, 0xaa, 0x26, 0x65, 0x00, 0x9b, 0xc3, 0x99, 0xb4, + 0x5d, 0xed, 0xf0, 0x94, 0xec, 0xdc, 0xfa, 0x01, 0xa5, 0xed, 0x90, 0x83, 0x6c, 0x59, 0x46, 0x68, + 0xf7, 0xfa, 0x16, 0xda, 0xd7, 0x19, 0x23, 0xbc, 0x6d, 0x5c, 0xcc, 0x3f, 0x5e, 0x21, 0x0c, 0x61, + 0x0f, 0xdb, 0x08, 0xd7, 0xcd, 0x95, 0xba, 0x3e, 0x99, 0x03, 0x38, 0x65, 0x38, 0xa4, 0x0e, 0xfa, + 0x2c, 0xf0, 0x9a, 0x90, 0xee, 0x2d, 0x8c, 0x7f, 0x90, 0xf2, 0x36, 0xa0, 0xa7, 0x11, 0x4a, 0xad, + 0x81, 0x9d, 0xa7, 0xe7, 0x53, 0x4b, 0xd4, 0x66, 0x30, 0x6e, 0x84, 0x18, 0xd6, 0xf6, 0x18, 0x9e, + 0x30, 0xa9, 0x57, 0xd5, 0x4e, 0xca, 0xce, 0xd1, 0xbf, 0x26, 0xf2, 0x5b, 0x19, 0x38, 0x63, 0x60, + 0xa8, 0xed, 0x32, 0x54, 0xb1, 0x1a, 0x52, 0x3f, 0x83, 0x8f, 0x9e, 0xcd, 0x67, 0x70, 0xc9, 0xec, + 0x4b, 0xbc, 0xa1, 0xeb, 0x7d, 0xe8, 0xd5, 0x42, 0xf2, 0x04, 0x66, 0xb0, 0x48, 0x3e, 0x51, 0xb0, + 0x35, 0x2b, 0x5e, 0x36, 0xe6, 0xe2, 0x66, 0x73, 0x27, 0x6b, 0x4c, 0x7a, 0xbb, 0xf8, 0xad, 0xc3, + 0xe2, 0xa4, 0x81, 0x2e, 0x83, 0xf6, 0x3a, 0xf1, 0x3b, 0x87, 0xd7, 0xda, 0xf1, 0xf5, 0x8d, 0xbf, + 0xab, 0x0a, 0xf2, 0x8f, 0x33, 0x30, 0xcf, 0xa0, 0xbc, 0x1b, 0xb7, 0x03, 0xbf, 0xa9, 0xca, 0xa5, + 0xdd, 0x5b, 0x8f, 0x61, 0x6b, 0x3c, 0x9b, 0x61, 0x7b, 0x05, 0x9b, 0xcc, 0xb7, 0x10, 0x67, 0x27, + 0xf0, 0x9b, 0x71, 0xf3, 0x8d, 0x4c, 0xf5, 0xbd, 0x1a, 0x49, 0xbe, 0x3f, 0x03, 0x67, 0x8d, 0x5b, + 0x55, 0x3d, 0xb5, 0x81, 0x70, 0x65, 0x9f, 0x55, 0x41, 0x2e, 0xe2, 0xa2, 0xa5, 0x6b, 0x62, 0xfd, + 0x5f, 0xc6, 0x16, 0xc4, 0x87, 0x0b, 0xb6, 0xc5, 0x69, 0x72, 0x2c, 0xad, 0x09, 0xbd, 0x6b, 0x21, + 0x1e, 0xcc, 0xa0, 0xbd, 0x88, 0x61, 0x9f, 0x39, 0xd7, 0xdb, 0x3e, 0x53, 0x25, 0x27, 0xc4, 0xb8, + 0xe9, 0xbd, 0x8d, 0x34, 0xbb, 0xb9, 0x92, 0xbf, 0x01, 0x67, 0xbb, 0x80, 0xea, 0x6b, 0x3b, 0xd5, + 0xf3, 0x6b, 0x7b, 0xfd, 0xe8, 0xb0, 0xf8, 0x6a, 0x5a, 0x6d, 0x69, 0x5f, 0x5a, 0xef, 0x1a, 0x88, + 0x0b, 0x10, 0x17, 0x0a, 0xf1, 0x27, 0x7d, 0x81, 0xbe, 0x2e, 0xd6, 0x87, 0x86, 0xcf, 0xb6, 0x7e, + 0xad, 0x0d, 0xfa, 0x09, 0x19, 0x23, 0x11, 0x0a, 0x13, 0x5a, 0xcc, 0xf8, 0x03, 0x61, 0xb6, 0xd0, + 0xa3, 0x92, 0x6f, 0x1d, 0x16, 0x0d, 0x6c, 0xa6, 0x90, 0xe9, 0xc1, 0xe8, 0x0d, 0x69, 0x53, 0x47, + 0x24, 0xbf, 0x91, 0x81, 0x39, 0x06, 0x88, 0x17, 0x95, 0xe8, 0xd4, 0x7c, 0xbf, 0x55, 0xbf, 0xf7, + 0x6c, 0x56, 0xfd, 0x4b, 0xd8, 0x46, 0x7d, 0xd5, 0x77, 0x0d, 0x49, 0x6a, 0xe3, 0x70, 0xb5, 0x1b, + 0xa6, 0x49, 0xc6, 0x6a, 0x3f, 0x3b, 0xc0, 0x6a, 0xe7, 0x13, 0x70, 0xfc, 0x6a, 0xef, 0x59, 0x0b, + 0xd9, 0x82, 0x09, 0xa1, 0x8b, 0xf1, 0x01, 0xbb, 0x60, 0x04, 0x90, 0xd6, 0x8b, 0xb8, 0x82, 0x2c, + 0x42, 0xea, 0x77, 0xf5, 0xd0, 0xe0, 0x42, 0x5a, 0x30, 0xcb, 0x7f, 0x9b, 0x77, 0x63, 0xc5, 0x9e, + 0x77, 0x63, 0x57, 0x44, 0x8f, 0x2e, 0x0a, 0xfe, 0x89, 0x2b, 0x32, 0x3d, 0x36, 0x4e, 0x0a, 0x63, + 0xd2, 0x06, 0x62, 0x80, 0xf9, 0x47, 0x7b, 0xb1, 0xff, 0x8d, 0xd8, 0xab, 0xa2, 0xce, 0x62, 0xb2, + 0xce, 0xe4, 0x97, 0x9b, 0xc2, 0x9b, 0xb8, 0x30, 0x2d, 0xa0, 0xfe, 0x63, 0xca, 0x77, 0xf8, 0x97, + 0x8c, 0xe8, 0x44, 0x89, 0x52, 0xae, 0xc4, 0xc9, 0x9a, 0x30, 0x7a, 0x54, 0x62, 0x43, 0x4f, 0xf2, + 0x23, 0x1b, 0x30, 0x53, 0x6a, 0xb7, 0x1b, 0x1e, 0xad, 0x63, 0x2f, 0x79, 0x1e, 0x6f, 0x2b, 0xce, + 0x7f, 0xe4, 0xf2, 0x42, 0xa1, 0x59, 0x26, 0x93, 0x78, 0x77, 0xd3, 0x5a, 0x3f, 0x92, 0xe9, 0x6a, + 0x34, 0x79, 0x03, 0xc6, 0xf0, 0x87, 0x16, 0xf0, 0x02, 0xaf, 0x98, 0x78, 0x13, 0xf1, 0xf2, 0x2a, + 0x46, 0x60, 0xc2, 0x92, 0x1e, 0xf4, 0x2e, 0xc7, 0x85, 0x25, 0x71, 0xaf, 0x11, 0xdf, 0x64, 0x14, + 0xa5, 0xdd, 0x7c, 0x2e, 0x16, 0xba, 0xd0, 0x6e, 0x5e, 0x58, 0xcb, 0x5b, 0xbf, 0x9a, 0x35, 0x97, + 0x1d, 0xb9, 0xa2, 0x89, 0xf9, 0x5a, 0xd8, 0x3d, 0x29, 0xe6, 0x6b, 0xc2, 0xfd, 0xdf, 0xcf, 0xc0, + 0xec, 0x86, 0x96, 0x38, 0x6f, 0xcb, 0xc7, 0x79, 0xe9, 0x9f, 0x4a, 0xee, 0x59, 0xa5, 0xc4, 0xd2, + 0x33, 0xf6, 0xb1, 0x95, 0x82, 0x4b, 0xc6, 0x4e, 0x6b, 0x0f, 0x7a, 0x22, 0x61, 0xc3, 0xb4, 0xcc, + 0x64, 0x1c, 0x9d, 0xc3, 0xc9, 0x2b, 0xf8, 0xb4, 0xde, 0x37, 0xb8, 0x7e, 0xb6, 0x52, 0xb6, 0x7e, + 0x3c, 0x0b, 0xe3, 0xda, 0x97, 0x42, 0x3e, 0x0b, 0x13, 0x7a, 0x75, 0xfa, 0xbd, 0xa4, 0xde, 0x3a, + 0xdb, 0xc0, 0xc2, 0x8b, 0x49, 0xea, 0x36, 0x8d, 0x8b, 0x49, 0xf6, 0x3d, 0x20, 0xf4, 0x84, 0x0a, + 0xd3, 0x07, 0x29, 0x0a, 0xd3, 0x89, 0xf2, 0xc2, 0xbf, 0xdb, 0xad, 0x36, 0x0d, 0x9e, 0xc6, 0xdd, + 0xfa, 0xa9, 0x0c, 0x14, 0x92, 0xdf, 0xf2, 0xa7, 0x32, 0x2a, 0x27, 0x78, 0x84, 0xfa, 0xb1, 0xac, + 0xca, 0x2b, 0x21, 0xdd, 0x30, 0x9f, 0x57, 0xbb, 0xb8, 0xf7, 0x8c, 0xf7, 0xa1, 0x17, 0xcd, 0x88, + 0x62, 0x7a, 0x00, 0x83, 0xf4, 0x30, 0x82, 0x43, 0xbf, 0xf0, 0xcb, 0xc5, 0x17, 0xac, 0x0f, 0x61, + 0x2e, 0x39, 0x1c, 0xf8, 0x46, 0x54, 0x82, 0x69, 0x13, 0x9e, 0xcc, 0x4a, 0x93, 0xa4, 0xb2, 0x93, + 0xf8, 0xd6, 0x1f, 0x65, 0x93, 0xbc, 0x85, 0x8d, 0x1c, 0xdb, 0x9b, 0x5a, 0xee, 0x76, 0x43, 0xa5, + 0x99, 0xe0, 0x7b, 0x13, 0x07, 0xd9, 0xb2, 0xec, 0x24, 0x69, 0x9a, 0x94, 0x33, 0x61, 0x2e, 0xdd, + 0x99, 0x90, 0xdc, 0x4a, 0x98, 0x05, 0x6b, 0x91, 0x6f, 0xf6, 0xe9, 0xb6, 0x13, 0x9b, 0x06, 0x27, + 0xac, 0x81, 0x97, 0x61, 0xce, 0x08, 0xe3, 0x2c, 0xe9, 0x87, 0xe3, 0x27, 0x81, 0x08, 0x0b, 0x38, + 0x71, 0x2a, 0x32, 0x59, 0x85, 0x51, 0xd6, 0xcc, 0xfb, 0x6e, 0x5b, 0x3c, 0xfd, 0x10, 0xe5, 0x5a, + 0xdc, 0x50, 0x7a, 0xa1, 0xe6, 0x5d, 0xdc, 0xa0, 0x4c, 0x32, 0xd0, 0x17, 0x96, 0x40, 0xb4, 0xfe, + 0x65, 0x86, 0x7d, 0xff, 0xb5, 0xc7, 0xdf, 0x61, 0xb9, 0x9e, 0x58, 0x97, 0xfa, 0x98, 0x70, 0xfe, + 0x69, 0x96, 0x67, 0x0a, 0x11, 0xcb, 0xe7, 0x6d, 0x18, 0xd9, 0x72, 0x83, 0x5d, 0x1a, 0x89, 0x1c, + 0x1a, 0x3a, 0x17, 0x5e, 0x10, 0xc7, 0xe5, 0x89, 0xf0, 0xb7, 0x2d, 0x08, 0xf4, 0x1b, 0xb6, 0xec, + 0x40, 0x37, 0x6c, 0xda, 0xf3, 0x41, 0xee, 0x99, 0x3d, 0x1f, 0x7c, 0x97, 0x4a, 0x0a, 0x52, 0x8a, + 0x06, 0x88, 0x12, 0x7c, 0x31, 0x99, 0x83, 0xa7, 0x2b, 0x9e, 0x73, 0xcc, 0x8e, 0xdc, 0xd2, 0xb3, + 0xfa, 0x68, 0xfe, 0x79, 0xc7, 0xe4, 0xef, 0xb1, 0xfe, 0x34, 0xc7, 0xc7, 0x58, 0x0c, 0xd4, 0x65, + 0xc3, 0x77, 0x17, 0xbf, 0x93, 0xc4, 0x75, 0x26, 0xf7, 0xe2, 0xbd, 0x0c, 0x43, 0x6c, 0x6d, 0x8a, + 0xd1, 0x44, 0x3c, 0xb6, 0x7e, 0x75, 0x3c, 0x56, 0xce, 0xbe, 0x65, 0x3c, 0x93, 0xf4, 0x3c, 0x6a, + 0x78, 0x6c, 0xe9, 0xdf, 0x32, 0x62, 0x90, 0x2b, 0x30, 0xb4, 0xee, 0xd7, 0x65, 0x34, 0xea, 0x39, + 0x8c, 0xe0, 0xe0, 0xd7, 0xa9, 0x71, 0xb7, 0x8f, 0x18, 0xac, 0xaf, 0x2a, 0xcf, 0x86, 0xde, 0xd7, + 0xe6, 0x8e, 0x2b, 0x42, 0x26, 0xea, 0x7d, 0x8d, 0x53, 0x72, 0xac, 0xc0, 0x94, 0x99, 0x05, 0x5a, + 0x18, 0xb8, 0xe2, 0x23, 0x40, 0x22, 0x99, 0xb4, 0xfe, 0x7a, 0x63, 0x12, 0x91, 0x25, 0x98, 0x34, + 0xa2, 0x60, 0x8a, 0x37, 0x58, 0xbc, 0x34, 0x35, 0x63, 0x68, 0xea, 0x97, 0xa6, 0x06, 0x09, 0x3b, + 0xcf, 0x45, 0xfb, 0xb5, 0x97, 0xd8, 0xae, 0xb6, 0x0b, 0x1c, 0x72, 0x13, 0xf2, 0x3c, 0x54, 0x82, + 0xba, 0x94, 0xc3, 0xd7, 0xb4, 0x10, 0x61, 0x89, 0x50, 0x23, 0x12, 0x51, 0x73, 0x8d, 0xff, 0x0c, + 0x14, 0xc4, 0x96, 0x14, 0xe7, 0x2c, 0x3e, 0x07, 0x43, 0xcb, 0x95, 0xb2, 0xad, 0x6f, 0x23, 0x35, + 0xaf, 0x1e, 0xd8, 0x08, 0x45, 0x7f, 0xab, 0x75, 0x1a, 0xed, 0xfb, 0xc1, 0x63, 0x9b, 0x86, 0x51, + 0xe0, 0xf1, 0x34, 0x7c, 0xf8, 0x21, 0x7e, 0x96, 0xbc, 0x0b, 0xc3, 0x68, 0x69, 0x99, 0x38, 0x19, + 0x92, 0x75, 0x2c, 0x4d, 0x8a, 0x05, 0x3c, 0x8c, 0x66, 0x9b, 0x36, 0x27, 0x22, 0x6f, 0xc3, 0x50, + 0x99, 0xb6, 0x0e, 0x12, 0x89, 0xc8, 0xba, 0x88, 0xd5, 0x86, 0x50, 0xa7, 0xad, 0x03, 0x1b, 0x49, + 0xac, 0x9f, 0xca, 0xc2, 0xa9, 0x94, 0x66, 0x3d, 0xfc, 0xec, 0x73, 0xba, 0x2b, 0x2e, 0x19, 0xbb, + 0xa2, 0x7c, 0x46, 0xef, 0x39, 0xf0, 0xa9, 0x9b, 0xe4, 0x2f, 0x66, 0xe0, 0x8c, 0xb9, 0x40, 0x85, + 0x69, 0xf5, 0xc3, 0x9b, 0xe4, 0x1d, 0x18, 0x59, 0xa5, 0x6e, 0x9d, 0xca, 0xac, 0x43, 0xa7, 0x54, + 0x50, 0x33, 0xee, 0x07, 0xce, 0x0b, 0x39, 0xdb, 0xd8, 0x6b, 0x90, 0x43, 0x49, 0x59, 0x34, 0x8e, + 0x8b, 0xed, 0x96, 0x8c, 0xc9, 0x90, 0x56, 0x55, 0x1f, 0x63, 0x94, 0x6f, 0x65, 0xe0, 0xc5, 0x3e, + 0x34, 0x6c, 0xe2, 0xd8, 0xd4, 0xeb, 0x13, 0x87, 0x27, 0x2a, 0x42, 0xc9, 0xfb, 0x30, 0xbd, 0x25, + 0xc4, 0x7e, 0x39, 0x1d, 0xd9, 0xf8, 0x7b, 0x91, 0x1a, 0x81, 0x23, 0xe7, 0x25, 0x89, 0x6c, 0x04, + 0x0b, 0xc9, 0xf5, 0x0d, 0x16, 0xa2, 0xc7, 0xde, 0x18, 0x1a, 0x34, 0xf6, 0xc6, 0x87, 0x30, 0x67, + 0xf6, 0x4d, 0x84, 0x40, 0x8d, 0x23, 0x8f, 0x64, 0x7a, 0x47, 0x1e, 0xe9, 0x1b, 0x68, 0xd1, 0xfa, + 0xf1, 0x0c, 0x14, 0x4c, 0xde, 0x9f, 0x74, 0x3e, 0xdf, 0x33, 0xe6, 0xf3, 0xc5, 0xf4, 0xf9, 0xec, + 0x3d, 0x91, 0xff, 0x5b, 0x26, 0xd9, 0xd9, 0x81, 0x66, 0xd0, 0x82, 0x91, 0xb2, 0xdf, 0x74, 0xbd, + 0x96, 0x9e, 0x02, 0xbb, 0x8e, 0x10, 0x5b, 0x94, 0x0c, 0x16, 0xa8, 0xe5, 0x22, 0x0c, 0xaf, 0xfb, + 0xad, 0x52, 0x59, 0x58, 0x1e, 0x23, 0x9f, 0x96, 0xdf, 0x72, 0xdc, 0xba, 0xcd, 0x0b, 0xc8, 0x1a, + 0x40, 0xb5, 0x16, 0x50, 0xda, 0xaa, 0x7a, 0xdf, 0x4d, 0x13, 0x92, 0x06, 0x1b, 0xa1, 0x46, 0x07, + 0x37, 0x16, 0xfe, 0xc2, 0x8a, 0x88, 0x4e, 0xe8, 0x7d, 0xb7, 0xbe, 0xdf, 0x6a, 0xf4, 0x16, 0x05, + 0x88, 0x89, 0x30, 0x1f, 0xa8, 0x57, 0x17, 0x39, 0xde, 0x27, 0x45, 0x3e, 0x50, 0x06, 0x30, 0xf2, + 0x81, 0x32, 0x00, 0xdb, 0xda, 0x57, 0xa9, 0xb7, 0xbb, 0xc7, 0x8d, 0x9a, 0x26, 0xf9, 0x52, 0xdd, + 0x43, 0x88, 0xbe, 0xb5, 0x73, 0x1c, 0xeb, 0x5f, 0x0d, 0xc3, 0x59, 0x9b, 0xee, 0x7a, 0x4c, 0x4c, + 0x7e, 0x10, 0x7a, 0xad, 0x5d, 0x23, 0x94, 0x86, 0x95, 0x58, 0x48, 0x22, 0xee, 0x3c, 0x83, 0xa8, + 0x81, 0xb9, 0x0a, 0x79, 0x76, 0x2a, 0x6a, 0x6b, 0x09, 0x9f, 0x5a, 0xd8, 0xd9, 0x29, 0x62, 0xb5, + 0xca, 0x62, 0xf2, 0x9a, 0x38, 0xb5, 0xb5, 0xcc, 0x20, 0xec, 0xd4, 0xfe, 0xf6, 0x61, 0x11, 0xaa, + 0x07, 0x61, 0x44, 0x51, 0x63, 0x13, 0x27, 0xb7, 0x12, 0xad, 0x87, 0x7a, 0x88, 0xd6, 0xf7, 0x61, + 0xae, 0x54, 0xe7, 0x9b, 0xb5, 0xdb, 0xd8, 0x0c, 0xbc, 0x56, 0xcd, 0x6b, 0xbb, 0x0d, 0xa9, 0x2e, + 0xe2, 0x28, 0xbb, 0xaa, 0xdc, 0x69, 0x2b, 0x04, 0x3b, 0x95, 0x8c, 0x75, 0xa3, 0xbc, 0x5e, 0xc5, + 0x88, 0x13, 0xe2, 0xd1, 0x0d, 0xbb, 0x51, 0x6f, 0x85, 0xd8, 0x8b, 0xd0, 0x56, 0xc5, 0x28, 0xd4, + 0xe3, 0x33, 0xf6, 0xd6, 0x5a, 0x35, 0x76, 0x29, 0xe5, 0x81, 0xcb, 0xf9, 0x73, 0x78, 0xd4, 0x08, + 0xd1, 0x80, 0xd0, 0xc0, 0x8b, 0xe9, 0xaa, 0xd5, 0x55, 0x46, 0x97, 0xef, 0xa2, 0x0b, 0xc3, 0x3d, + 0x9d, 0x8e, 0xe3, 0x91, 0xeb, 0x6c, 0x29, 0x34, 0xfd, 0x88, 0xe2, 0x3a, 0x1f, 0x8b, 0x55, 0x80, + 0x00, 0xa1, 0x5c, 0x05, 0xd0, 0x50, 0xc8, 0xbb, 0x30, 0xbb, 0xb2, 0xbc, 0x28, 0xef, 0x3e, 0xcb, + 0x7e, 0xad, 0x83, 0xcf, 0xd7, 0x80, 0xf5, 0xe1, 0x1c, 0xd2, 0xda, 0x22, 0x5b, 0xdc, 0x69, 0x68, + 0xe4, 0x32, 0x8c, 0x56, 0xca, 0x7c, 0xec, 0xc7, 0xf5, 0xec, 0x3c, 0xc2, 0x9e, 0x48, 0x16, 0x92, + 0x8d, 0x58, 0x46, 0x9d, 0x38, 0x56, 0x98, 0x3c, 0x3b, 0x80, 0x7c, 0xfa, 0x36, 0x4c, 0x2e, 0xf9, + 0x51, 0xa5, 0x15, 0x46, 0x6e, 0xab, 0x46, 0x2b, 0x65, 0x3d, 0x54, 0xee, 0xb6, 0x1f, 0x39, 0x9e, + 0x28, 0x61, 0x2d, 0x37, 0x31, 0xc9, 0xe7, 0x91, 0xf4, 0x0e, 0x6d, 0xd1, 0x20, 0x0e, 0x91, 0x3b, + 0xcc, 0xc7, 0x96, 0x91, 0xee, 0xaa, 0x12, 0xdb, 0x44, 0x14, 0x99, 0x83, 0x78, 0x26, 0xbd, 0x65, + 0xbf, 0x4e, 0xc3, 0x87, 0x37, 0xbe, 0xc3, 0x32, 0x07, 0x69, 0x7d, 0xc3, 0x2d, 0xf3, 0x46, 0xea, + 0xfe, 0xfa, 0xef, 0x62, 0xe6, 0xa0, 0x2e, 0x5c, 0xf2, 0x79, 0x18, 0xc6, 0x9f, 0x42, 0xd8, 0x9a, + 0x4d, 0x61, 0x1b, 0x0b, 0x5a, 0x35, 0x9e, 0x37, 0x1f, 0x09, 0x48, 0x05, 0x46, 0x85, 0x9c, 0x7f, + 0x92, 0xfc, 0x17, 0x42, 0x61, 0xe0, 0x2b, 0x43, 0xd0, 0x5b, 0x75, 0x98, 0xd0, 0x2b, 0x64, 0x5f, + 0xc4, 0xaa, 0x1b, 0xee, 0xd1, 0x3a, 0xfb, 0x25, 0x52, 0x57, 0xe1, 0x17, 0xb1, 0x87, 0x50, 0x87, + 0xb5, 0xc3, 0xd6, 0x50, 0xd8, 0x16, 0x5f, 0x09, 0x1f, 0x84, 0xa2, 0x29, 0x42, 0xf3, 0xf7, 0xf0, + 0x16, 0xa9, 0x6e, 0x8b, 0x22, 0xeb, 0xbb, 0x60, 0x6e, 0xbd, 0xd3, 0x68, 0xb8, 0xdb, 0x0d, 0x2a, + 0x53, 0x1b, 0x44, 0x6e, 0x44, 0xc9, 0x12, 0x0c, 0x57, 0xb5, 0x4c, 0xbc, 0xb3, 0x2a, 0x77, 0x44, + 0x8c, 0x83, 0xa6, 0x9b, 0x19, 0x8c, 0xfe, 0x91, 0xc8, 0xc1, 0xcb, 0x49, 0xad, 0x3f, 0xc8, 0xc0, + 0x9c, 0x7c, 0xe4, 0x0e, 0xdc, 0xda, 0x63, 0x95, 0x8d, 0xf9, 0xb2, 0xb1, 0xd6, 0x70, 0xc1, 0x26, + 0x96, 0x11, 0x5f, 0x75, 0x77, 0x65, 0x23, 0xcc, 0xf3, 0x33, 0xad, 0xc1, 0xc7, 0x35, 0x86, 0xbc, + 0x0b, 0xe3, 0xe2, 0x0c, 0xd5, 0x62, 0xd6, 0x61, 0x60, 0x20, 0xa1, 0x7d, 0x24, 0x4d, 0x2e, 0x74, + 0x74, 0x14, 0x0d, 0xcc, 0xae, 0x3c, 0xbc, 0xf1, 0x69, 0x88, 0x06, 0x66, 0x1d, 0x7d, 0x96, 0xee, + 0xef, 0x8c, 0x27, 0xc7, 0x56, 0xac, 0xdd, 0x5b, 0x7a, 0x94, 0xaa, 0x4c, 0xac, 0xa8, 0xc5, 0x51, + 0xaa, 0x74, 0x45, 0x4d, 0xa1, 0xaa, 0x39, 0xc9, 0x1e, 0x33, 0x27, 0xef, 0xcb, 0x39, 0xc9, 0xf5, + 0x5e, 0x18, 0xb3, 0x7d, 0xe6, 0xa1, 0x1a, 0x7f, 0x21, 0x43, 0x03, 0x69, 0xf9, 0x2f, 0x60, 0x38, + 0x6e, 0x4e, 0x92, 0xdc, 0x45, 0x05, 0x27, 0xfd, 0xea, 0x60, 0x78, 0x70, 0xa6, 0xc7, 0x6c, 0xcd, + 0x5f, 0x80, 0x89, 0x52, 0x14, 0xb9, 0xb5, 0x3d, 0x5a, 0x2f, 0xb3, 0xed, 0x49, 0x0b, 0xa8, 0xe3, + 0x0a, 0xb8, 0xfe, 0xd4, 0xa3, 0xe3, 0xf2, 0x00, 0x91, 0x6e, 0x28, 0x4c, 0x40, 0x55, 0x80, 0x48, + 0x06, 0x31, 0x03, 0x44, 0x32, 0x08, 0xb9, 0x0e, 0xa3, 0x95, 0xd6, 0x13, 0x8f, 0x8d, 0x49, 0x3e, + 0x4e, 0xcd, 0xee, 0x71, 0x90, 0xbe, 0xb9, 0x0a, 0x2c, 0xf2, 0xb6, 0x26, 0x63, 0x8f, 0xc5, 0xfa, + 0x34, 0xbf, 0x81, 0x51, 0xa1, 0x38, 0x74, 0xf9, 0x59, 0x09, 0xdd, 0xb7, 0x60, 0x54, 0x5e, 0xac, + 0x41, 0xac, 0x43, 0x0b, 0xca, 0x6e, 0x87, 0x7d, 0x89, 0x8c, 0x09, 0x7c, 0xb5, 0x14, 0x5c, 0xe3, + 0x5a, 0x02, 0x5f, 0x2d, 0x05, 0x97, 0x91, 0xc0, 0x57, 0x4b, 0xc6, 0xa5, 0xee, 0x24, 0x26, 0x8e, + 0xbd, 0x93, 0x78, 0x08, 0x13, 0x9b, 0x6e, 0x10, 0x79, 0x4c, 0x46, 0x69, 0x45, 0xe1, 0xfc, 0xa4, + 0x71, 0x8d, 0xa7, 0x15, 0x2d, 0x5d, 0x90, 0x49, 0x64, 0xdb, 0x1a, 0xbe, 0x99, 0xed, 0x34, 0x86, + 0xa7, 0x1b, 0x80, 0x4e, 0x7d, 0x12, 0x03, 0x50, 0x1c, 0x54, 0xbc, 0xba, 0x99, 0x8e, 0x2f, 0x08, + 0x50, 0x86, 0x4e, 0xdc, 0xdf, 0x28, 0x44, 0xf2, 0x55, 0x98, 0x60, 0x7f, 0x6f, 0xfa, 0x0d, 0xaf, + 0xe6, 0xd1, 0x70, 0xbe, 0x80, 0x9d, 0xbb, 0x90, 0xfa, 0xf5, 0x23, 0xd2, 0x41, 0x95, 0x46, 0xfc, + 0x03, 0x46, 0xc6, 0xc9, 0x3b, 0x59, 0x83, 0x1b, 0xf9, 0x00, 0x26, 0xd8, 0xea, 0xdb, 0x76, 0x43, + 0x2e, 0x9a, 0xce, 0xc4, 0x26, 0xbc, 0x75, 0x01, 0xef, 0x8a, 0xd1, 0xaa, 0x13, 0xb0, 0x63, 0xbe, + 0xd4, 0xe6, 0x1b, 0x24, 0xd1, 0x56, 0x7b, 0xbb, 0x6b, 0x73, 0x94, 0x68, 0xe4, 0x8b, 0x30, 0x51, + 0x6a, 0xb7, 0xe3, 0x1d, 0x67, 0x56, 0xbb, 0x97, 0x69, 0xb7, 0x9d, 0xd4, 0x5d, 0xc7, 0xa0, 0x48, + 0x6e, 0xcc, 0x73, 0x27, 0xda, 0x98, 0xc9, 0x9b, 0x4a, 0x5a, 0x3f, 0x15, 0x5f, 0x32, 0x0a, 0x3d, + 0xc6, 0x10, 0xfd, 0xb9, 0xe0, 0xbe, 0x0c, 0x93, 0xfc, 0xd6, 0x4d, 0x4a, 0x33, 0xa7, 0xbb, 0xbe, + 0x9e, 0x14, 0xa1, 0xc6, 0xa4, 0x21, 0x2b, 0x30, 0xc5, 0xbd, 0x5d, 0x1b, 0x22, 0x78, 0xee, 0xfc, + 0x19, 0xfc, 0x6a, 0x91, 0x0b, 0x77, 0x92, 0x6d, 0x60, 0x4e, 0x05, 0xd7, 0xe0, 0x92, 0x20, 0xb2, + 0xfe, 0x2c, 0x03, 0x67, 0x7a, 0xcc, 0xb8, 0x0a, 0xad, 0x9a, 0xe9, 0x1f, 0x5a, 0x95, 0xed, 0x1c, + 0xa6, 0x92, 0x8e, 0xfd, 0x17, 0x52, 0x96, 0x3e, 0x5f, 0x52, 0xde, 0xf2, 0x81, 0x88, 0xb4, 0x25, + 0xa2, 0xea, 0xbb, 0x3e, 0xde, 0x14, 0xe6, 0xba, 0x0f, 0x21, 0x81, 0xc7, 0x1b, 0xb5, 0x64, 0x1d, + 0x1d, 0x16, 0x2f, 0x88, 0xac, 0x28, 0x6a, 0x5a, 0x3f, 0xf2, 0x8d, 0x2f, 0x38, 0x85, 0xb5, 0x75, + 0x98, 0x81, 0x71, 0xed, 0x3b, 0x24, 0x17, 0x35, 0xdf, 0xd9, 0x02, 0xcf, 0xab, 0x63, 0xbe, 0xed, + 0xa9, 0xfb, 0xd0, 0xec, 0xf1, 0xf7, 0xa1, 0xf7, 0x99, 0x28, 0xa4, 0x85, 0x9f, 0x6d, 0x1a, 0x97, + 0x97, 0x36, 0x96, 0x63, 0xee, 0x6b, 0x37, 0x8c, 0x4a, 0xb5, 0xc8, 0x7b, 0x42, 0x07, 0x38, 0x74, + 0xe2, 0xdc, 0xd7, 0x6e, 0x18, 0x39, 0x2e, 0x92, 0x75, 0xe5, 0xbe, 0x56, 0x0c, 0xad, 0x1f, 0xc8, + 0x00, 0x3c, 0xa8, 0x2c, 0x63, 0xfc, 0xe8, 0x4f, 0x2a, 0x14, 0xa4, 0xc7, 0xe4, 0x94, 0xdc, 0xfb, + 0x88, 0x03, 0xff, 0x7d, 0x06, 0xa6, 0x4c, 0x34, 0xf2, 0x3e, 0x4c, 0x57, 0x6b, 0x81, 0xdf, 0x68, + 0x6c, 0xbb, 0xb5, 0xc7, 0x6b, 0x5e, 0x8b, 0xf2, 0x68, 0x88, 0xc3, 0xfc, 0x2c, 0x0a, 0x55, 0x91, + 0xd3, 0x60, 0x65, 0x76, 0x12, 0x99, 0xfc, 0x60, 0x06, 0x26, 0xab, 0x7b, 0xfe, 0xbe, 0x0a, 0x60, + 0x28, 0x26, 0xe4, 0x6b, 0xec, 0xdb, 0x0e, 0xf7, 0xfc, 0xfd, 0x38, 0x29, 0x9f, 0x61, 0xe1, 0xf8, + 0xde, 0x60, 0xaf, 0xc9, 0x35, 0x1f, 0x35, 0x99, 0x28, 0xbc, 0x66, 0x54, 0x62, 0x9b, 0x75, 0x5a, + 0x7f, 0x99, 0x81, 0x71, 0xd4, 0x79, 0x1a, 0x0d, 0x94, 0xb9, 0xbe, 0x93, 0x32, 0xbc, 0xa9, 0x7e, + 0xf5, 0x99, 0xd8, 0xb7, 0x60, 0x3a, 0x81, 0x46, 0x2c, 0x18, 0xa9, 0x62, 0xbc, 0x04, 0xfd, 0x82, + 0x82, 0x47, 0x50, 0xb0, 0x45, 0x89, 0xb5, 0xa2, 0x91, 0x3d, 0xbc, 0x81, 0xaf, 0x8c, 0x8b, 0x00, + 0x9e, 0x04, 0x49, 0xcd, 0x86, 0x24, 0x5b, 0xf2, 0xf0, 0x86, 0xad, 0x61, 0x59, 0xeb, 0x30, 0x52, + 0xf5, 0x83, 0x68, 0xe9, 0x80, 0x2b, 0x13, 0x65, 0x1a, 0xd6, 0xf4, 0x67, 0x44, 0x0f, 0xaf, 0xee, + 0x6b, 0xb6, 0x28, 0x22, 0x45, 0x18, 0xbe, 0xed, 0xd1, 0x46, 0x5d, 0x37, 0x2b, 0xdd, 0x61, 0x00, + 0x9b, 0xc3, 0x99, 0xc2, 0x75, 0x3a, 0x4e, 0xb3, 0x10, 0xdb, 0xaf, 0x7e, 0xd2, 0xef, 0x66, 0xd9, + 0x18, 0xdf, 0x97, 0xcc, 0x44, 0xef, 0x46, 0x4d, 0x7d, 0x86, 0xfa, 0x3f, 0xce, 0xc0, 0x42, 0x6f, + 0x12, 0xdd, 0x24, 0x36, 0xd3, 0xc7, 0x24, 0xf6, 0x95, 0xe4, 0xb3, 0x17, 0xa2, 0x89, 0x67, 0xaf, + 0xf8, 0xb1, 0xab, 0x8c, 0x06, 0xcc, 0x35, 0x2a, 0x73, 0x2b, 0x5c, 0xec, 0xd3, 0x66, 0x44, 0xe4, + 0xd3, 0x1c, 0x21, 0x8d, 0x2d, 0x68, 0xad, 0xdf, 0x1e, 0x82, 0xb3, 0x3d, 0x29, 0xc8, 0xaa, 0x96, + 0xb1, 0x65, 0x4a, 0xe5, 0x8a, 0xe8, 0x89, 0x7f, 0x0d, 0xff, 0x45, 0xa3, 0xb3, 0xa4, 0x8f, 0xd6, + 0x86, 0xca, 0xd4, 0x91, 0x45, 0x5e, 0xaf, 0x1f, 0xcb, 0x8b, 0xa3, 0x23, 0x33, 0xe8, 0x4e, 0xda, + 0x81, 0xde, 0x7c, 0x34, 0x72, 0xbd, 0x46, 0xa8, 0x7f, 0x76, 0x75, 0x0e, 0xb2, 0x65, 0x59, 0x6c, + 0xa7, 0x3c, 0x94, 0x6e, 0xa7, 0x6c, 0xfd, 0xab, 0x0c, 0x8c, 0xa9, 0x66, 0x93, 0x05, 0x38, 0xbd, + 0x65, 0x97, 0x96, 0x57, 0x9c, 0xad, 0x0f, 0x37, 0x57, 0x9c, 0x07, 0xeb, 0xd5, 0xcd, 0x95, 0xe5, + 0xca, 0xed, 0xca, 0x4a, 0xb9, 0xf0, 0x02, 0x99, 0x81, 0xc9, 0x07, 0xeb, 0xf7, 0xd6, 0x37, 0x1e, + 0xad, 0x3b, 0x2b, 0xb6, 0xbd, 0x61, 0x17, 0x32, 0x64, 0x12, 0xc6, 0xec, 0xa5, 0xd2, 0xb2, 0xb3, + 0xbe, 0x51, 0x5e, 0x29, 0x64, 0x49, 0x01, 0x26, 0x96, 0x37, 0xd6, 0xd7, 0x57, 0x96, 0xb7, 0x2a, + 0x0f, 0x2b, 0x5b, 0x1f, 0x16, 0x72, 0x84, 0xc0, 0x14, 0x22, 0x6c, 0xda, 0x95, 0xf5, 0xe5, 0xca, + 0x66, 0x69, 0xad, 0x30, 0xc4, 0x60, 0x0c, 0x5f, 0x83, 0x0d, 0x2b, 0x46, 0xf7, 0x1e, 0x2c, 0xad, + 0x14, 0x46, 0x18, 0x0a, 0xfb, 0x4b, 0x43, 0x19, 0x65, 0xd5, 0x23, 0x4a, 0xb9, 0xb4, 0x55, 0x5a, + 0x2a, 0x55, 0x57, 0x0a, 0x79, 0x72, 0x06, 0x66, 0x0d, 0x90, 0xb3, 0xb6, 0x71, 0xa7, 0xb2, 0x5e, + 0x18, 0x23, 0x73, 0x50, 0x50, 0xb0, 0xf2, 0x92, 0xf3, 0xa0, 0xba, 0x62, 0x17, 0x20, 0x09, 0x5d, + 0x2f, 0xdd, 0x5f, 0x29, 0x8c, 0x5b, 0xef, 0x71, 0xef, 0x39, 0x3e, 0xd4, 0xe4, 0x34, 0x90, 0xea, + 0x56, 0x69, 0xeb, 0x41, 0x35, 0xd1, 0xf9, 0x71, 0x18, 0xad, 0x3e, 0x58, 0x5e, 0x5e, 0xa9, 0x56, + 0x0b, 0x19, 0x02, 0x30, 0x72, 0xbb, 0x54, 0x59, 0x5b, 0x29, 0x17, 0xb2, 0xd6, 0x4f, 0x66, 0x60, + 0x46, 0x4a, 0x80, 0xf2, 0x0d, 0xe3, 0x13, 0x7e, 0x8b, 0xef, 0x1b, 0x8a, 0xad, 0x74, 0x6d, 0x4a, + 0x54, 0xd2, 0xe7, 0x33, 0xfc, 0xc5, 0x0c, 0x9c, 0x4a, 0xc5, 0x26, 0x1f, 0x42, 0x41, 0xb6, 0xe0, + 0xbe, 0x1b, 0xd5, 0xf6, 0xe2, 0x7d, 0xec, 0x42, 0xa2, 0x96, 0x04, 0x1a, 0xbf, 0xd6, 0x8c, 0x73, + 0xc8, 0x76, 0xb1, 0x19, 0x3c, 0xc2, 0xb9, 0xf5, 0x0b, 0x19, 0x38, 0xd3, 0xa3, 0x1a, 0xb2, 0x0c, + 0x23, 0x2a, 0xd7, 0x45, 0x1f, 0xbb, 0xab, 0xb9, 0x6f, 0x1d, 0x16, 0x05, 0x22, 0x26, 0xdd, 0xc4, + 0xbf, 0xec, 0x11, 0x95, 0xbc, 0x02, 0x33, 0x48, 0xf0, 0xe1, 0x3b, 0x9b, 0x18, 0x79, 0x51, 0x53, + 0xe9, 0x51, 0x75, 0x69, 0x5c, 0x8c, 0x5d, 0xce, 0xdd, 0x0f, 0x31, 0x85, 0x84, 0xf5, 0xb3, 0x19, + 0x26, 0xdc, 0x25, 0x11, 0x99, 0xcc, 0x5b, 0x0a, 0xc3, 0x4e, 0x93, 0xda, 0x7e, 0x83, 0x96, 0xec, + 0x75, 0x71, 0x6c, 0xa0, 0xb4, 0xea, 0x62, 0x01, 0xaa, 0x15, 0x8e, 0x1b, 0xb4, 0x8c, 0xc7, 0x53, + 0x9d, 0x86, 0xbc, 0x0d, 0xb0, 0xf2, 0x34, 0xa2, 0x41, 0xcb, 0x6d, 0xa8, 0xc8, 0x26, 0x3c, 0xb2, + 0x8f, 0x80, 0x9a, 0xf2, 0xb6, 0x86, 0x6c, 0xfd, 0xad, 0x0c, 0x4c, 0x08, 0xa5, 0xa9, 0xd4, 0xa0, + 0x41, 0xf4, 0xc9, 0x96, 0xd7, 0xdb, 0xc6, 0xf2, 0x52, 0x6e, 0x06, 0x1a, 0x7f, 0x56, 0x9c, 0xba, + 0xb2, 0xfe, 0x69, 0x06, 0x0a, 0x49, 0x44, 0xf2, 0x3e, 0xe4, 0xab, 0xf4, 0x09, 0x0d, 0xbc, 0xe8, + 0x40, 0x6c, 0x94, 0x32, 0x2b, 0x18, 0xc7, 0x11, 0x65, 0x7c, 0x3d, 0x84, 0xe2, 0x97, 0xad, 0x68, + 0x06, 0xdd, 0xef, 0xb5, 0x6b, 0x8f, 0xdc, 0xb3, 0xba, 0xf6, 0xb0, 0xfe, 0xe7, 0x2c, 0x9c, 0xb9, + 0x43, 0x23, 0xbd, 0x4f, 0xea, 0xb5, 0xfb, 0x33, 0x83, 0xf5, 0x4b, 0xeb, 0xc9, 0x3c, 0x8c, 0x62, + 0x91, 0x9c, 0x5f, 0x5b, 0xfe, 0x24, 0x4b, 0x6a, 0x5d, 0xe7, 0x8c, 0xb4, 0x43, 0x3d, 0xea, 0xbe, + 0xa6, 0x25, 0x22, 0x51, 0xcb, 0xfa, 0x32, 0x4c, 0x61, 0xa4, 0xed, 0x0e, 0xfb, 0x1c, 0x68, 0x5d, + 0x5c, 0xff, 0xe4, 0xed, 0x04, 0x94, 0xbc, 0x06, 0x05, 0x06, 0x29, 0xd5, 0x1e, 0xb7, 0xfc, 0xfd, + 0x06, 0xad, 0xef, 0xd2, 0x3a, 0x1e, 0xeb, 0x79, 0xbb, 0x0b, 0x2e, 0x79, 0x3e, 0x68, 0x71, 0xd5, + 0x8d, 0xd6, 0xf1, 0x8e, 0x46, 0xf0, 0x8c, 0xa1, 0x0b, 0x6f, 0xc3, 0xf8, 0xc7, 0x4c, 0x2a, 0x64, + 0xfd, 0x4f, 0x19, 0x98, 0xc3, 0xce, 0x69, 0x15, 0xcb, 0x84, 0x8f, 0x72, 0xb4, 0xb4, 0x3c, 0x1b, + 0x2e, 0x03, 0x99, 0x9f, 0x82, 0x1a, 0xc5, 0xf8, 0x4e, 0x28, 0x3b, 0xc0, 0x9d, 0x50, 0xf5, 0x24, + 0xc9, 0xad, 0x07, 0xbc, 0xd2, 0xba, 0x3b, 0x94, 0xcf, 0x15, 0x86, 0xe2, 0x29, 0xb7, 0x7e, 0x30, + 0x0b, 0xa3, 0x36, 0xc5, 0xac, 0xbf, 0xe4, 0x32, 0x8c, 0xae, 0xfb, 0x11, 0x0d, 0xef, 0x1b, 0x29, + 0x9e, 0x5b, 0x0c, 0xe4, 0x34, 0xeb, 0xb6, 0x2c, 0x64, 0x0b, 0x7e, 0x33, 0xf0, 0xeb, 0x9d, 0x5a, + 0xa4, 0x2f, 0xf8, 0x36, 0x07, 0xd9, 0xb2, 0x8c, 0xbc, 0x01, 0x63, 0x82, 0xb3, 0x7a, 0x63, 0x44, + 0x13, 0xda, 0x80, 0xaa, 0xac, 0xd1, 0x31, 0x02, 0xca, 0xb4, 0x5c, 0xc0, 0x18, 0xd2, 0x64, 0xda, + 0x2e, 0x99, 0x41, 0x8a, 0xea, 0xc3, 0x7d, 0x44, 0xf5, 0xcf, 0xc0, 0x48, 0x29, 0x0c, 0x69, 0x24, + 0x7d, 0xff, 0x27, 0x54, 0xd8, 0xac, 0x90, 0x46, 0x9c, 0xb1, 0x8b, 0xe5, 0xb6, 0xc0, 0xb3, 0xfe, + 0x65, 0x16, 0x86, 0xf1, 0x4f, 0x7c, 0x57, 0x0d, 0x6a, 0x7b, 0xc6, 0xbb, 0x6a, 0x50, 0xdb, 0xb3, + 0x11, 0x4a, 0x6e, 0xe0, 0x4d, 0x85, 0x4c, 0x09, 0x23, 0x7a, 0x8f, 0x57, 0xf0, 0xf5, 0x18, 0x6c, + 0xeb, 0x38, 0xea, 0xc1, 0x39, 0x97, 0x1a, 0xf1, 0xe3, 0x34, 0x64, 0x37, 0xaa, 0xa2, 0xc7, 0x18, + 0x47, 0xca, 0x0f, 0xed, 0xec, 0x46, 0x15, 0x47, 0x63, 0xb5, 0xb4, 0xf8, 0xd6, 0x2d, 0x3d, 0x1b, + 0x79, 0xb8, 0xe7, 0x2e, 0xbe, 0x75, 0xcb, 0x16, 0x25, 0x6c, 0x7c, 0xb1, 0xcd, 0xf8, 0xf0, 0xca, + 0x3d, 0xd5, 0x71, 0x7c, 0xb1, 0x6f, 0xf8, 0xc8, 0x6a, 0xc7, 0x08, 0x64, 0x11, 0xc6, 0x45, 0x84, + 0x04, 0xc4, 0xd7, 0x22, 0x18, 0x88, 0x08, 0x0a, 0x9c, 0x42, 0x47, 0xe2, 0x4f, 0x70, 0x62, 0x82, + 0x64, 0xe2, 0x4a, 0xf1, 0x04, 0x27, 0xa7, 0x30, 0xb4, 0x35, 0x14, 0xcc, 0xb8, 0x8f, 0x6f, 0x78, + 0xb1, 0x07, 0xfa, 0x94, 0xe6, 0x6a, 0x8f, 0x91, 0xd3, 0x15, 0x82, 0xf5, 0xab, 0x59, 0xc8, 0x6f, + 0x36, 0x3a, 0xbb, 0x5e, 0xeb, 0xe1, 0x0d, 0x42, 0x00, 0xd5, 0x38, 0x19, 0x5a, 0x9f, 0xfd, 0x4d, + 0xce, 0x42, 0x5e, 0x6a, 0x6e, 0x72, 0x43, 0x0a, 0x85, 0xd6, 0x36, 0x0f, 0x72, 0xde, 0xf9, 0xc8, + 0xda, 0xf2, 0x27, 0xb9, 0x01, 0x4a, 0xff, 0xea, 0xa5, 0xa8, 0x0d, 0xb1, 0x8f, 0xc5, 0x56, 0x68, + 0xe4, 0x4d, 0xc0, 0x43, 0x42, 0x28, 0x0f, 0xf2, 0x42, 0x9b, 0x37, 0x4d, 0xc8, 0x29, 0x9c, 0x04, + 0xd1, 0xc8, 0x4d, 0x10, 0x0b, 0x53, 0x24, 0x48, 0x3e, 0x65, 0x12, 0xf0, 0x94, 0x73, 0x92, 0x44, + 0xa0, 0x92, 0x77, 0x61, 0xbc, 0x16, 0x50, 0x7c, 0x75, 0x74, 0x1b, 0x71, 0xde, 0x63, 0x9d, 0x72, + 0x39, 0x2e, 0x7f, 0x78, 0xc3, 0xd6, 0xd1, 0xad, 0xff, 0x6a, 0x04, 0x26, 0xf4, 0xf6, 0x10, 0x1b, + 0x66, 0xc3, 0x06, 0xd3, 0xdd, 0x85, 0xed, 0x53, 0x1b, 0x0b, 0xc5, 0x71, 0x7a, 0xd1, 0x6c, 0x10, + 0xc3, 0xe3, 0x86, 0x50, 0x32, 0xb4, 0xc3, 0xea, 0x0b, 0xf6, 0x4c, 0x18, 0x83, 0x39, 0x1e, 0x29, + 0x41, 0xde, 0x6f, 0x87, 0xbb, 0xb4, 0xe5, 0xc9, 0xf7, 0x96, 0x4b, 0x06, 0xa3, 0x0d, 0x51, 0xd8, + 0xc5, 0x4b, 0x91, 0x91, 0xb7, 0x60, 0xc4, 0x6f, 0xd3, 0x96, 0xeb, 0x89, 0x33, 0xee, 0xc5, 0x04, + 0x03, 0xda, 0x2a, 0x55, 0x34, 0x42, 0x81, 0x4c, 0xae, 0xc3, 0x90, 0xff, 0x58, 0xcd, 0xd7, 0x59, + 0x93, 0xe8, 0x71, 0xe4, 0x6a, 0x24, 0x88, 0xc8, 0x08, 0x3e, 0x72, 0x9b, 0x3b, 0x62, 0xc6, 0x4c, + 0x82, 0xbb, 0x6e, 0x73, 0x47, 0x27, 0x60, 0x88, 0xe4, 0x03, 0x80, 0xb6, 0xbb, 0x4b, 0x03, 0xa7, + 0xde, 0x89, 0x0e, 0xc4, 0xbc, 0x5d, 0x30, 0xc8, 0x36, 0x59, 0x71, 0xb9, 0x13, 0x1d, 0x68, 0xb4, + 0x63, 0x6d, 0x09, 0x24, 0x25, 0x80, 0xa6, 0x1b, 0x45, 0x34, 0x68, 0xfa, 0xc2, 0xf8, 0x6c, 0x5c, + 0xe5, 0x15, 0xe6, 0x0c, 0xee, 0xab, 0x62, 0x8d, 0x83, 0x46, 0x84, 0x8d, 0xf6, 0x02, 0x57, 0xa4, + 0xa9, 0x4e, 0x34, 0xda, 0x0b, 0x8c, 0x5e, 0x32, 0x44, 0xf2, 0x79, 0x18, 0xad, 0x7b, 0x61, 0xcd, + 0x0f, 0xea, 0x22, 0xe6, 0xc7, 0x39, 0x83, 0xa6, 0xcc, 0xcb, 0x34, 0x32, 0x89, 0xce, 0x5a, 0x2b, + 0x82, 0x40, 0xae, 0xfb, 0xfb, 0x78, 0xcd, 0x9f, 0x6c, 0x6d, 0x55, 0x15, 0xeb, 0xad, 0x8d, 0x89, + 0xd8, 0x54, 0xee, 0x7a, 0x51, 0xc3, 0xdd, 0x16, 0xef, 0xdc, 0xe6, 0x54, 0xde, 0xc1, 0x22, 0x7d, + 0x2a, 0x39, 0x32, 0x79, 0x1b, 0xf2, 0xb4, 0x15, 0x05, 0xae, 0xe3, 0xd5, 0x85, 0x6f, 0x9f, 0xd9, + 0x68, 0x76, 0x00, 0xbb, 0x95, 0xb2, 0xde, 0x68, 0xc4, 0xaf, 0xd4, 0xd9, 0xf8, 0x84, 0x35, 0xaf, + 0x29, 0x5c, 0xf2, 0xcc, 0xf1, 0xa9, 0x2e, 0x57, 0xee, 0xeb, 0xe3, 0xc3, 0x10, 0xc9, 0x05, 0x80, + 0xf8, 0x89, 0x9b, 0x3f, 0x48, 0xd8, 0x1a, 0xe4, 0x0b, 0x43, 0xff, 0xeb, 0x2f, 0x17, 0x33, 0x4b, + 0x00, 0x79, 0x19, 0xf4, 0xc4, 0x5a, 0x83, 0xb3, 0x3d, 0x3f, 0x0a, 0x72, 0x15, 0x0a, 0x3b, 0xae, + 0xb8, 0x12, 0xab, 0xed, 0xb9, 0xad, 0x16, 0x6d, 0x88, 0xed, 0x68, 0x5a, 0xc2, 0x97, 0x39, 0x98, + 0x73, 0xb6, 0x3e, 0x80, 0xb9, 0xb4, 0xd1, 0x20, 0x2f, 0xc1, 0x84, 0x1e, 0xdf, 0x45, 0x30, 0x19, + 0x77, 0xdb, 0x9e, 0x8c, 0xf0, 0x22, 0x18, 0xfc, 0x56, 0x06, 0xce, 0xf5, 0xfb, 0xb6, 0xc8, 0x02, + 0xe4, 0xdb, 0x81, 0xe7, 0xa3, 0x0c, 0xc7, 0x77, 0x40, 0xf5, 0x9b, 0x9c, 0x07, 0xe0, 0xc2, 0x46, + 0xe4, 0xee, 0x0a, 0x63, 0x7c, 0x7b, 0x0c, 0x21, 0x5b, 0xee, 0x6e, 0x48, 0x5e, 0x87, 0x99, 0x3a, + 0xdd, 0x71, 0x3b, 0x8d, 0xc8, 0x09, 0x6b, 0x7b, 0xb4, 0x8e, 0x6e, 0x32, 0x68, 0x64, 0x65, 0x17, + 0x44, 0x41, 0x55, 0xc2, 0xbb, 0x5a, 0x3c, 0xdc, 0xa3, 0xc5, 0x77, 0x87, 0xf2, 0x99, 0x42, 0xd6, + 0x46, 0x5b, 0x23, 0xeb, 0xfb, 0xb2, 0x30, 0xdf, 0x6b, 0x31, 0x91, 0xf7, 0xd2, 0xc6, 0x80, 0xdf, + 0xea, 0xeb, 0x70, 0xfd, 0x56, 0x5f, 0xab, 0x8d, 0x2c, 0x82, 0x72, 0x72, 0x39, 0xce, 0xbf, 0x5d, + 0xc2, 0x18, 0x4d, 0xdb, 0x0d, 0xc3, 0x7d, 0xf6, 0xbd, 0xe4, 0xb4, 0x68, 0x9b, 0x02, 0xa6, 0xd3, + 0x48, 0x18, 0xf9, 0x1c, 0x40, 0xad, 0xe1, 0x87, 0x14, 0x1f, 0xcf, 0xc5, 0x41, 0xcc, 0x4d, 0x78, + 0x15, 0x54, 0x7f, 0x2d, 0x45, 0xe8, 0xb2, 0x5f, 0xa7, 0x62, 0x02, 0x5d, 0x38, 0xd3, 0x63, 0xf7, + 0x60, 0xd3, 0x13, 0x67, 0x63, 0x96, 0xb9, 0x5d, 0x3a, 0x2a, 0x27, 0x73, 0x72, 0xc4, 0xb3, 0xbd, + 0xd6, 0xc8, 0x01, 0x90, 0xee, 0x2d, 0x82, 0x71, 0x17, 0x86, 0xa8, 0x9d, 0x40, 0x71, 0xe7, 0x90, + 0x07, 0x41, 0x83, 0x14, 0x61, 0x5c, 0xe6, 0x6e, 0x63, 0x82, 0x2e, 0x67, 0x0e, 0x02, 0x74, 0x8f, + 0xe2, 0xe2, 0xc1, 0xa0, 0xb0, 0xe8, 0xca, 0x24, 0x8e, 0xd0, 0x31, 0x84, 0x6c, 0x1d, 0xb4, 0x65, + 0xef, 0xce, 0xc9, 0xf5, 0x6d, 0x6e, 0xdc, 0xa2, 0xf4, 0xe7, 0x32, 0x72, 0xfa, 0xbb, 0x77, 0xbe, + 0xe3, 0xda, 0x47, 0x00, 0x3d, 0x4a, 0x44, 0xc3, 0xf0, 0x6f, 0x76, 0xa4, 0xcb, 0xaf, 0x4e, 0x1c, + 0xe9, 0xe2, 0x27, 0xb9, 0x0c, 0xd3, 0x01, 0xb7, 0x39, 0x8c, 0x7c, 0x31, 0x9e, 0x38, 0x53, 0xf6, + 0x24, 0x07, 0x6f, 0xf9, 0x38, 0xa6, 0xa2, 0x5d, 0x77, 0xd5, 0x80, 0x69, 0x07, 0x01, 0xb9, 0x06, + 0x63, 0xec, 0x20, 0xc0, 0xe0, 0x29, 0x09, 0x53, 0x76, 0xc4, 0xc3, 0x63, 0xd5, 0xce, 0x7f, 0x24, + 0xfe, 0x16, 0xbc, 0xfe, 0x9b, 0x8c, 0x64, 0xa6, 0x1f, 0x43, 0xe4, 0x0c, 0x8c, 0xfa, 0xc1, 0xae, + 0xd6, 0xb5, 0x11, 0x3f, 0xd8, 0x65, 0xfd, 0xba, 0x02, 0x05, 0xee, 0x59, 0xc1, 0x3d, 0xdb, 0xc3, + 0x83, 0x16, 0xd7, 0x53, 0xf3, 0xf6, 0x14, 0x87, 0x63, 0x82, 0xea, 0x83, 0x56, 0x8d, 0x61, 0x86, + 0xa1, 0xef, 0xe8, 0x31, 0x93, 0x44, 0xb7, 0xa7, 0xc2, 0xd0, 0x8f, 0x83, 0x27, 0xd5, 0xc9, 0x12, + 0x4c, 0x32, 0x3e, 0x2a, 0x72, 0x93, 0x38, 0x25, 0xcf, 0x77, 0x9f, 0x92, 0x07, 0xad, 0x9a, 0x6c, + 0xa2, 0x3d, 0x11, 0x6a, 0xbf, 0x44, 0x6f, 0x7e, 0x3d, 0x0b, 0xa7, 0xd3, 0xd1, 0x71, 0xbe, 0x58, + 0x25, 0xe8, 0x60, 0xc4, 0xaf, 0x37, 0xed, 0x31, 0x06, 0xe1, 0x91, 0x19, 0xd2, 0x5a, 0x9b, 0x4d, + 0x6d, 0xed, 0x6b, 0x30, 0x83, 0x8c, 0x84, 0x5c, 0xd2, 0xf0, 0xc2, 0x48, 0x44, 0x10, 0xb0, 0xa7, + 0x59, 0x01, 0xdf, 0xe0, 0xd6, 0x18, 0x98, 0xbc, 0x02, 0x53, 0x72, 0x8b, 0xf2, 0xf7, 0x5b, 0xac, + 0x62, 0xbe, 0x3f, 0x4d, 0x0a, 0xe8, 0x06, 0x02, 0xc9, 0x29, 0x18, 0x71, 0xdb, 0x6d, 0x56, 0x25, + 0xdf, 0x96, 0x86, 0xdd, 0x76, 0xbb, 0x52, 0x27, 0x97, 0x60, 0x12, 0xdd, 0xa9, 0x9c, 0x1d, 0xb4, + 0x29, 0x11, 0x06, 0x6c, 0xf6, 0x04, 0x02, 0xb9, 0x9d, 0x49, 0xc8, 0x3e, 0x04, 0x46, 0x2b, 0x51, + 0x46, 0x11, 0x05, 0xdc, 0xb6, 0x42, 0x38, 0x0b, 0x79, 0xf9, 0xba, 0xc9, 0xad, 0xc2, 0xed, 0x51, + 0x97, 0xbf, 0x6c, 0x8a, 0x41, 0xfb, 0x3c, 0x4c, 0x8b, 0x83, 0x56, 0x6c, 0xfe, 0xc8, 0x54, 0x2c, + 0x4d, 0x26, 0x01, 0x8b, 0x74, 0x17, 0x20, 0x40, 0x95, 0xba, 0x1c, 0xee, 0x3f, 0xce, 0xc0, 0xa9, + 0xd4, 0x93, 0x9a, 0x7c, 0x03, 0xb8, 0xe3, 0x49, 0xe4, 0x3b, 0x01, 0xad, 0x79, 0x6d, 0x0f, 0x3d, + 0xf8, 0xf9, 0x4d, 0xd6, 0x62, 0xbf, 0x33, 0x1e, 0x9d, 0x58, 0xb6, 0x7c, 0x5b, 0x11, 0x71, 0x15, + 0xbb, 0x10, 0x24, 0xc0, 0x0b, 0x5f, 0x81, 0x53, 0xa9, 0xa8, 0x29, 0xaa, 0xef, 0x1b, 0x66, 0x5a, + 0x50, 0xf9, 0x36, 0x91, 0xe8, 0xb4, 0xa6, 0x12, 0x8b, 0xee, 0xfd, 0xae, 0xea, 0x5e, 0xe2, 0x4c, + 0x27, 0x2b, 0xc9, 0x15, 0x9b, 0x26, 0x96, 0x4a, 0xa2, 0x9e, 0x8b, 0x96, 0x7c, 0x05, 0x4e, 0x89, + 0x55, 0xb4, 0x1b, 0xb8, 0xed, 0xbd, 0x98, 0x1d, 0x6f, 0xe8, 0xab, 0x69, 0xec, 0xf8, 0xf2, 0xba, + 0xc3, 0xf0, 0x15, 0xd7, 0x59, 0xb7, 0x1b, 0x28, 0xfa, 0x10, 0x48, 0x79, 0x20, 0xa5, 0x35, 0x29, + 0xcb, 0x33, 0x93, 0xb6, 0x3c, 0x07, 0xfe, 0x36, 0x44, 0x9d, 0xdf, 0x9f, 0x81, 0x8b, 0xc7, 0xb5, + 0x99, 0x3c, 0x82, 0xd3, 0xf8, 0x7a, 0x1e, 0xfa, 0xaa, 0xdb, 0x4e, 0xcd, 0xad, 0xed, 0x51, 0xb1, + 0x4a, 0xac, 0xd4, 0xce, 0xb7, 0xdb, 0xd5, 0xea, 0x86, 0xd6, 0xef, 0x76, 0xbb, 0x1a, 0xfa, 0xf2, + 0xf7, 0x32, 0x23, 0x17, 0x6d, 0xa8, 0xc3, 0x8b, 0x7d, 0x28, 0xb5, 0x2f, 0x2e, 0xa3, 0x7f, 0x71, + 0x57, 0xa0, 0xb0, 0x43, 0xeb, 0x4c, 0xba, 0xa2, 0x75, 0x6c, 0xda, 0x93, 0x45, 0x9e, 0x5b, 0xd7, + 0x9e, 0x52, 0xf0, 0x6a, 0xe8, 0x3f, 0x5c, 0x14, 0xb5, 0x34, 0xe5, 0xe6, 0xa9, 0x4b, 0x6f, 0xe4, + 0x1a, 0xcc, 0x26, 0xa2, 0x11, 0xc4, 0xee, 0xad, 0xf6, 0x0c, 0x2b, 0x32, 0x43, 0xdd, 0xbc, 0x04, + 0x13, 0x72, 0x1a, 0x02, 0xe5, 0xfd, 0x62, 0x8f, 0x0b, 0x18, 0x5b, 0xe5, 0xa2, 0xba, 0x7f, 0x3f, + 0x2b, 0xa5, 0xa9, 0x25, 0xdf, 0x8f, 0xc2, 0x28, 0x70, 0xdb, 0x86, 0x4a, 0x45, 0x9a, 0x70, 0xd6, + 0x77, 0x3b, 0xd1, 0xde, 0xa2, 0xc3, 0xfe, 0xf5, 0x03, 0xe9, 0xb1, 0x5a, 0x93, 0xf6, 0x74, 0xe3, + 0x8b, 0xd7, 0xcd, 0x5d, 0xb5, 0xc4, 0xb0, 0x4b, 0x3a, 0x32, 0x3b, 0xfc, 0x35, 0xae, 0xab, 0x2f, + 0xd8, 0x67, 0x38, 0xcf, 0x2e, 0x2c, 0xb2, 0x0a, 0x13, 0xdb, 0xd4, 0x0d, 0x68, 0xc0, 0x6d, 0x48, + 0x53, 0x75, 0xaa, 0x25, 0x44, 0x40, 0xd3, 0x52, 0x93, 0xeb, 0xf8, 0x76, 0x5c, 0x42, 0xde, 0x87, + 0x31, 0xaf, 0x2e, 0x82, 0x33, 0x0a, 0xcd, 0xca, 0x94, 0xe6, 0x2b, 0x75, 0x1e, 0xab, 0x31, 0xe6, + 0xc1, 0xd4, 0x32, 0x4f, 0x40, 0x97, 0x26, 0x0d, 0xe5, 0xd3, 0x5a, 0x92, 0x07, 0x77, 0x37, 0x19, + 0x99, 0x82, 0xac, 0x9a, 0xf6, 0xac, 0x57, 0x27, 0xa7, 0x61, 0x24, 0xd4, 0xa2, 0x45, 0xda, 0xe2, + 0x97, 0xf5, 0xbd, 0x70, 0x65, 0xd0, 0x31, 0x22, 0x6f, 0xf2, 0x50, 0x4e, 0x29, 0x03, 0x3e, 0xc6, + 0x03, 0x35, 0x99, 0xe3, 0xf6, 0x12, 0xe8, 0xc1, 0xee, 0x3c, 0x39, 0xe1, 0x12, 0xf6, 0x20, 0xf0, + 0xac, 0x1f, 0xc8, 0xc1, 0x94, 0xa9, 0x6e, 0x93, 0xd7, 0x61, 0x48, 0xb1, 0x9d, 0x52, 0xd7, 0xc2, + 0x3a, 0x12, 0x63, 0x6e, 0x23, 0x12, 0x3b, 0x3b, 0xf0, 0x15, 0xc9, 0x69, 0xea, 0x37, 0xb7, 0xf6, + 0x04, 0x02, 0xe5, 0x8d, 0xed, 0x5d, 0xe0, 0xa9, 0xdc, 0x71, 0x2f, 0x8b, 0xbc, 0x26, 0x1d, 0xe0, + 0xe2, 0x36, 0xcf, 0x94, 0x7e, 0xbc, 0x72, 0x9b, 0x60, 0xb4, 0x6c, 0x3f, 0x61, 0x85, 0x9a, 0x36, + 0x35, 0xd4, 0x5b, 0x9b, 0x12, 0x5d, 0xe9, 0xa1, 0x4d, 0x0d, 0xf7, 0xd1, 0xa6, 0x62, 0x4a, 0x5d, + 0x9b, 0x42, 0x9d, 0x7a, 0xb4, 0x97, 0x4e, 0x1d, 0xd3, 0x70, 0x9d, 0xfa, 0x65, 0xd1, 0xdd, 0xc0, + 0xdd, 0x77, 0x70, 0x1c, 0xb8, 0xbd, 0x1b, 0xef, 0x88, 0xed, 0xee, 0xe3, 0x7b, 0xdb, 0xd2, 0x18, + 0xc8, 0x47, 0x3a, 0xeb, 0x67, 0x32, 0x09, 0xfd, 0x47, 0x4e, 0xc5, 0x2b, 0x30, 0xe5, 0x35, 0x99, + 0x60, 0x26, 0xe2, 0x72, 0xf1, 0x03, 0x60, 0xd2, 0x9e, 0x94, 0x50, 0x2e, 0x54, 0xbc, 0x0a, 0xd3, + 0x0a, 0x8d, 0x3b, 0x46, 0x73, 0xe3, 0x7d, 0x5b, 0x51, 0x0b, 0xc7, 0xe8, 0xd7, 0x61, 0x46, 0x21, + 0x0a, 0x19, 0x96, 0xcb, 0x14, 0x93, 0x76, 0x41, 0x16, 0x88, 0xa4, 0xc4, 0xa1, 0xb5, 0x9b, 0x3c, + 0x95, 0x3e, 0xa5, 0x56, 0x59, 0xbf, 0x9b, 0x33, 0x64, 0x43, 0x59, 0xcd, 0x12, 0x8c, 0xb3, 0xad, + 0x51, 0x0c, 0x92, 0xd8, 0x56, 0x5e, 0xea, 0x31, 0xfc, 0xe2, 0x99, 0xb3, 0x5a, 0xdd, 0xb0, 0x21, + 0x0c, 0x7d, 0xf9, 0xea, 0xe9, 0xf0, 0xdd, 0x9f, 0x8b, 0x37, 0xb8, 0xfc, 0xfe, 0x3f, 0xf6, 0xbe, + 0x26, 0x36, 0x92, 0xe3, 0xba, 0x7f, 0x7b, 0x66, 0x48, 0x0e, 0xdf, 0xf0, 0xa3, 0x59, 0xa2, 0x76, + 0xa9, 0xfd, 0xe0, 0x4a, 0xbd, 0xab, 0xf5, 0xee, 0xc8, 0x92, 0xbd, 0xda, 0xbf, 0x2c, 0xad, 0xfe, + 0x91, 0xe5, 0xe6, 0x4c, 0x0f, 0xa7, 0x97, 0xf3, 0xa5, 0xee, 0x1e, 0xd2, 0x2b, 0xc9, 0xee, 0xcc, + 0x72, 0x9a, 0xe4, 0xc4, 0xc3, 0x9e, 0xf1, 0x7c, 0x48, 0x5e, 0x5d, 0x92, 0x5c, 0x6c, 0x20, 0x89, + 0xf3, 0x61, 0x04, 0x88, 0x11, 0x04, 0xc8, 0x21, 0x3a, 0xe4, 0xe0, 0x63, 0x6e, 0x39, 0xe4, 0x6a, + 0xc0, 0x30, 0xe0, 0x73, 0x02, 0x08, 0x89, 0x80, 0xe4, 0x90, 0xe4, 0x16, 0xc4, 0x07, 0x9f, 0x82, + 0x7a, 0x55, 0xd5, 0x5d, 0xfd, 0x31, 0xb3, 0xa4, 0x56, 0x4e, 0x6c, 0xc0, 0x27, 0xb2, 0x5f, 0xbd, + 0xaa, 0xa9, 0xef, 0x7a, 0xaf, 0xea, 0xbd, 0xdf, 0x13, 0xc5, 0xb1, 0x3d, 0xa4, 0x38, 0xbf, 0x38, + 0x7d, 0x38, 0xc4, 0x3a, 0xd2, 0xd9, 0x87, 0xa7, 0x40, 0xf0, 0x25, 0x7e, 0xa0, 0x0d, 0xa8, 0x4a, + 0x8d, 0xa3, 0x85, 0x67, 0x53, 0xce, 0xd5, 0x44, 0xe1, 0xd8, 0x4b, 0x58, 0xb2, 0x3a, 0x15, 0xff, + 0x8a, 0x62, 0x0d, 0x58, 0xa1, 0x8a, 0x79, 0x50, 0x60, 0x2e, 0xe2, 0xc5, 0x34, 0xab, 0xf1, 0x25, + 0xb3, 0x6e, 0x15, 0x68, 0x3e, 0x51, 0xcc, 0x09, 0x3c, 0x27, 0x8b, 0x8f, 0xd1, 0x4a, 0x2e, 0x08, + 0x38, 0xba, 0xb9, 0x3d, 0x10, 0x4a, 0x99, 0x58, 0xd5, 0x8b, 0x9d, 0x28, 0x81, 0xb3, 0x69, 0x27, + 0x70, 0x79, 0xf6, 0x90, 0x50, 0x8d, 0xc4, 0x93, 0x5d, 0xa7, 0x2d, 0xf1, 0x29, 0x1d, 0x90, 0x19, + 0xf9, 0x80, 0x94, 0x85, 0xc9, 0x6c, 0x44, 0x98, 0xd4, 0xfe, 0x26, 0x0b, 0x37, 0xce, 0x30, 0x5c, + 0x73, 0x7e, 0xf3, 0x6b, 0x50, 0x60, 0x77, 0x89, 0x6c, 0xfb, 0x64, 0xef, 0xf0, 0xe2, 0x18, 0xa0, + 0x85, 0xf2, 0xbd, 0x8e, 0x8a, 0x30, 0xe1, 0x7e, 0x07, 0xe3, 0xe0, 0x7f, 0xf2, 0xdb, 0xb0, 0xce, + 0x36, 0x34, 0x66, 0xa9, 0x70, 0x34, 0xed, 0x9f, 0x61, 0x47, 0xbb, 0x22, 0xcc, 0xaa, 0x63, 0x59, + 0x71, 0x93, 0xc3, 0x1d, 0xc3, 0x0e, 0x68, 0xc4, 0x81, 0x02, 0xb2, 0x1d, 0x75, 0x7a, 0xfd, 0x33, + 0xd9, 0xf7, 0x0a, 0xa3, 0x6d, 0x39, 0x1b, 0x33, 0xb0, 0xa2, 0x84, 0x0a, 0x7e, 0x53, 0xfd, 0xcf, + 0x9f, 0x9e, 0xba, 0x9d, 0xe1, 0x90, 0xcd, 0x05, 0xfe, 0x20, 0xb4, 0x60, 0xad, 0xfa, 0xd3, 0x53, + 0x7d, 0x38, 0xc4, 0x21, 0xc5, 0x97, 0xa3, 0x0d, 0xca, 0xc7, 0x56, 0xad, 0xe0, 0x5c, 0x44, 0x4e, + 0x5a, 0x00, 0x5b, 0xb7, 0x9c, 0x77, 0x13, 0x98, 0x1d, 0x01, 0xbb, 0x09, 0xb7, 0xd8, 0x87, 0xf6, + 0xf3, 0x8c, 0x90, 0xcd, 0x66, 0xcf, 0xfb, 0xdf, 0x0c, 0x51, 0xca, 0x10, 0xdd, 0x06, 0x95, 0x76, + 0x7d, 0xb8, 0xa9, 0x04, 0x63, 0xb4, 0xe6, 0x4f, 0x4f, 0x83, 0xbe, 0x93, 0x3b, 0x7e, 0x51, 0xee, + 0xf8, 0xd7, 0x85, 0x40, 0x9a, 0xba, 0x3d, 0xcc, 0xee, 0x72, 0xed, 0x3f, 0xb3, 0x70, 0xeb, 0x6c, + 0x9b, 0xc0, 0x6f, 0xc6, 0x2d, 0x65, 0xdc, 0x62, 0xfa, 0xf1, 0x42, 0x42, 0x3f, 0x4e, 0x59, 0x7b, + 0x8b, 0x69, 0x6b, 0x2f, 0xa1, 0x8d, 0x2f, 0xa5, 0x68, 0xe3, 0xa9, 0x0b, 0x34, 0xff, 0x84, 0x05, + 0xba, 0x2c, 0xcf, 0x93, 0x7f, 0xcb, 0xc0, 0x33, 0x29, 0xaf, 0x25, 0xe4, 0x3d, 0x78, 0x46, 0x88, + 0xf6, 0xec, 0xe4, 0x60, 0x22, 0x37, 0x3b, 0x7d, 0xef, 0xa4, 0x09, 0xf5, 0xc8, 0x96, 0x22, 0x78, + 0x6f, 0x70, 0x71, 0x3e, 0x4c, 0xff, 0xd5, 0x11, 0xe4, 0xc9, 0x43, 0xb8, 0x88, 0x40, 0xa9, 0x87, + 0xae, 0x24, 0xcf, 0xbb, 0x23, 0xef, 0x88, 0xcf, 0x87, 0x17, 0x12, 0x62, 0x6f, 0xef, 0x50, 0xaa, + 0x8e, 0xe5, 0x1d, 0x55, 0x2f, 0x58, 0x9b, 0xe3, 0x14, 0x7a, 0x5c, 0x47, 0xf8, 0x91, 0x02, 0xda, + 0x93, 0xfb, 0x0b, 0xaf, 0x31, 0xe3, 0x1d, 0xbe, 0x6c, 0x15, 0x3a, 0x52, 0xef, 0xdd, 0x80, 0xd5, + 0x91, 0x77, 0x34, 0xf2, 0xc6, 0x27, 0x52, 0xf7, 0x2d, 0x5b, 0x2b, 0x9c, 0x28, 0x3a, 0x46, 0xc0, + 0x25, 0x9d, 0x4b, 0xc8, 0x16, 0x99, 0xb4, 0x4a, 0xa0, 0xfa, 0xa5, 0x8e, 0x03, 0x9d, 0x4d, 0x72, + 0x05, 0xd9, 0xc7, 0x83, 0x5c, 0x3e, 0xa3, 0x66, 0x2d, 0x0e, 0xea, 0x74, 0xd4, 0xeb, 0x7b, 0xda, + 0xdf, 0x29, 0x42, 0x22, 0x48, 0xeb, 0x3c, 0xf2, 0x9e, 0x64, 0xdf, 0x93, 0x4d, 0x88, 0x21, 0x69, + 0x59, 0x64, 0x53, 0x08, 0x0e, 0x20, 0x84, 0x84, 0x08, 0x80, 0x10, 0x52, 0x9e, 0xc6, 0x48, 0xe1, + 0xbe, 0x78, 0x1e, 0xa4, 0xbb, 0xdd, 0xfe, 0x5d, 0x72, 0x07, 0x96, 0xd8, 0x8b, 0xa0, 0xa8, 0xe8, + 0x7a, 0xa4, 0xa2, 0xfb, 0x77, 0x2d, 0x91, 0xae, 0xfd, 0x50, 0x09, 0xde, 0x44, 0xe2, 0xd5, 0xdf, + 0xbf, 0x4b, 0x5e, 0x3f, 0x9b, 0xa5, 0x4e, 0x5e, 0x58, 0xea, 0x04, 0x56, 0x3a, 0x6f, 0x44, 0xac, + 0x74, 0x6e, 0xce, 0xef, 0x27, 0x7e, 0xfb, 0xca, 0xa0, 0x72, 0x42, 0x08, 0x85, 0x9f, 0x2b, 0x70, + 0x6d, 0x6e, 0x0e, 0x72, 0x15, 0xf2, 0x7a, 0xcb, 0x74, 0xc2, 0x91, 0xa5, 0xab, 0x45, 0x50, 0xc8, + 0x2e, 0x2c, 0xef, 0x74, 0xc6, 0xbd, 0x43, 0x3a, 0x81, 0x53, 0x2f, 0x8d, 0x12, 0xc5, 0x06, 0xec, + 0xd5, 0x0b, 0x56, 0x98, 0x97, 0xb8, 0xb0, 0x81, 0xab, 0x20, 0x11, 0xbd, 0x3b, 0x7e, 0x61, 0x90, + 0x28, 0x30, 0x91, 0x8d, 0xee, 0x30, 0x09, 0x62, 0x7c, 0xf1, 0x7d, 0x20, 0xa4, 0x90, 0xd9, 0x15, + 0x3c, 0x07, 0x34, 0xd8, 0x6d, 0xc8, 0xb7, 0xc4, 0xbb, 0x88, 0x64, 0xda, 0x26, 0xde, 0x40, 0xac, + 0x20, 0x55, 0xfb, 0x23, 0x45, 0x68, 0xf5, 0x4f, 0x6e, 0x88, 0x14, 0x78, 0xa2, 0x3b, 0x3f, 0xf0, + 0x44, 0xf7, 0x33, 0x06, 0x9e, 0xd0, 0xfe, 0x96, 0x03, 0x77, 0x9a, 0xdd, 0x56, 0x2c, 0x72, 0xdd, + 0xd3, 0x9a, 0x28, 0x1a, 0x91, 0xd9, 0x79, 0x43, 0x0a, 0x5c, 0x94, 0xfc, 0xad, 0xd9, 0x96, 0x8a, + 0xd2, 0x54, 0xfd, 0x8b, 0x2c, 0x5c, 0x9d, 0x97, 0x3d, 0x35, 0xc8, 0x9e, 0x72, 0xbe, 0x20, 0x7b, + 0x77, 0x20, 0xcf, 0x68, 0xd1, 0x48, 0xf3, 0x3c, 0x2b, 0xed, 0x70, 0x91, 0x4c, 0x6e, 0xc0, 0xa2, + 0x5e, 0xb2, 0xc3, 0x68, 0x1d, 0x68, 0x28, 0xd3, 0x39, 0x1c, 0xa3, 0x09, 0x06, 0x4f, 0x22, 0xdf, + 0x4c, 0x06, 0xa8, 0xe1, 0x61, 0x3a, 0xae, 0x48, 0x1d, 0x92, 0xc0, 0xd4, 0xc5, 0xfa, 0x86, 0x18, + 0xb0, 0x1c, 0x56, 0xd1, 0x4a, 0x06, 0xbb, 0xd1, 0x60, 0xb1, 0x35, 0xf2, 0xc6, 0xde, 0x44, 0x36, + 0x62, 0x19, 0x22, 0xc5, 0xe2, 0x29, 0xdc, 0xc4, 0xa4, 0xf3, 0x98, 0x79, 0x14, 0x2e, 0xca, 0x5e, + 0xde, 0x68, 0x93, 0x42, 0xc9, 0x96, 0xc4, 0x42, 0x33, 0xd4, 0x3a, 0x53, 0xff, 0xf0, 0x04, 0xa3, + 0x96, 0x2f, 0x85, 0x36, 0x29, 0x7d, 0xa4, 0xd2, 0x06, 0x8e, 0x2d, 0x89, 0x45, 0xfb, 0x9e, 0x02, + 0x9b, 0x69, 0xed, 0x20, 0x57, 0x21, 0xe7, 0xa7, 0xc6, 0xe2, 0xf1, 0x99, 0x23, 0x54, 0x01, 0xc3, + 0x82, 0x1f, 0x0d, 0x46, 0xa7, 0x9d, 0x89, 0x6c, 0xea, 0x23, 0x91, 0x2d, 0xa0, 0x1f, 0x15, 0xfc, + 0x9f, 0x5c, 0x17, 0xbb, 0x73, 0x36, 0x11, 0xbd, 0x07, 0xff, 0x68, 0x3a, 0x80, 0xd9, 0x6d, 0x35, + 0x87, 0x0c, 0xd3, 0xf5, 0x1e, 0xe4, 0x68, 0xb5, 0x62, 0xb3, 0x97, 0xce, 0x1f, 0xbd, 0x5e, 0xe3, + 0x4c, 0xac, 0x56, 0xe3, 0xce, 0x69, 0xdf, 0x42, 0x66, 0xed, 0x00, 0xd6, 0xa2, 0x1c, 0xc4, 0x88, + 0xc2, 0x7b, 0x15, 0x5e, 0x55, 0x79, 0x49, 0x3b, 0x83, 0x01, 0x33, 0x37, 0xdd, 0x79, 0xee, 0x1f, + 0x3f, 0xb9, 0x0e, 0xf4, 0x93, 0xe5, 0x49, 0x83, 0xff, 0xd2, 0xfe, 0x24, 0x03, 0x9b, 0xa1, 0x87, + 0x9b, 0x58, 0x43, 0xbf, 0xb6, 0xee, 0x16, 0x7a, 0xc4, 0x1d, 0x40, 0x88, 0x58, 0xc9, 0x06, 0xce, + 0xb1, 0x42, 0xde, 0x85, 0xad, 0x59, 0xfc, 0xe4, 0x25, 0x58, 0x46, 0x50, 0x84, 0x61, 0xe7, 0xd0, + 0x93, 0xf7, 0x3e, 0x5f, 0x10, 0xad, 0x30, 0x5d, 0xfb, 0xa9, 0x02, 0x97, 0xb9, 0x91, 0x64, 0xbd, + 0xd3, 0xf3, 0x27, 0x9e, 0xdf, 0xf1, 0x0f, 0xbd, 0xcf, 0xc7, 0x5d, 0x68, 0x37, 0xb2, 0x8f, 0xbd, + 0x18, 0xb5, 0x85, 0x4d, 0xfc, 0xda, 0xec, 0xd6, 0x92, 0x3b, 0x08, 0xf4, 0x71, 0xc8, 0x26, 0x6f, + 0x8e, 0xb9, 0x67, 0xfa, 0x94, 0x20, 0xbb, 0x67, 0x22, 0x87, 0xf6, 0xbb, 0xb0, 0x3d, 0xff, 0x07, + 0xc8, 0x37, 0x60, 0x15, 0xe3, 0x2d, 0xb4, 0x87, 0xc7, 0xa3, 0x4e, 0xd7, 0x13, 0x97, 0x60, 0xe2, + 0x0e, 0x52, 0x4e, 0x63, 0xe0, 0x26, 0xdc, 0x5d, 0xf0, 0x18, 0x23, 0x39, 0xf0, 0x4c, 0x11, 0x4b, + 0x64, 0xb9, 0x34, 0xed, 0xf7, 0x14, 0x20, 0xc9, 0x32, 0xc8, 0x57, 0x60, 0xa5, 0xed, 0x94, 0xec, + 0x49, 0x67, 0x34, 0xa9, 0x0e, 0xa6, 0x23, 0x0e, 0x1a, 0xc2, 0xbc, 0xc7, 0x26, 0x87, 0x74, 0x2b, + 0x19, 0x4d, 0xdc, 0x93, 0xc1, 0x74, 0x64, 0x45, 0xf8, 0x10, 0xd7, 0xdf, 0xf3, 0xbe, 0xd5, 0xed, + 0x3c, 0x8e, 0xe2, 0xfa, 0x73, 0x5a, 0x04, 0xd7, 0x9f, 0xd3, 0xb4, 0x8f, 0x15, 0xb8, 0x22, 0xac, + 0x27, 0xba, 0x29, 0x75, 0x29, 0xa1, 0x8f, 0xf4, 0x48, 0x80, 0xa6, 0xcd, 0x13, 0x66, 0x37, 0x04, + 0x8c, 0x00, 0x56, 0x10, 0xa5, 0x5a, 0x96, 0x97, 0x7c, 0x0d, 0x72, 0xf6, 0x64, 0x30, 0x3c, 0x03, + 0x8e, 0x80, 0x1a, 0x8c, 0xe8, 0x64, 0x30, 0xc4, 0x22, 0x30, 0xa7, 0xe6, 0xc1, 0xa6, 0x5c, 0x39, + 0x51, 0x63, 0x52, 0x87, 0x25, 0x8e, 0x2a, 0x13, 0x7b, 0x4e, 0x9a, 0xd3, 0xa6, 0x9d, 0x75, 0x01, + 0x56, 0xc0, 0x41, 0xbb, 0x2c, 0x51, 0x86, 0xf6, 0xc7, 0x0a, 0x14, 0xa8, 0xb4, 0x81, 0xfa, 0xdb, + 0xd3, 0x4e, 0xe9, 0xa8, 0xe0, 0x28, 0x5e, 0x23, 0x83, 0xe2, 0xcf, 0x74, 0x1a, 0xbf, 0x06, 0xeb, + 0xb1, 0x0c, 0x44, 0x43, 0x37, 0xd5, 0x7e, 0xef, 0xb0, 0xc3, 0x70, 0xbf, 0xd9, 0x53, 0x5e, 0x84, + 0xa6, 0xfd, 0x81, 0x02, 0x9b, 0x54, 0xdb, 0x37, 0xf1, 0xa2, 0xd7, 0x9a, 0xf6, 0xc5, 0x7a, 0xa7, + 0x12, 0x94, 0x30, 0xc3, 0x61, 0x2e, 0x74, 0x4c, 0x82, 0xe2, 0x34, 0x2b, 0x48, 0x25, 0x55, 0xc8, + 0xf3, 0xf3, 0x65, 0xcc, 0xb1, 0xb6, 0xb6, 0xa5, 0x6b, 0x84, 0xb0, 0x60, 0xce, 0x44, 0x5b, 0x82, + 0x5b, 0x18, 0xcf, 0x63, 0x05, 0xb9, 0xb5, 0xff, 0x52, 0xe0, 0xd2, 0x8c, 0x3c, 0xe4, 0x2d, 0x58, + 0x40, 0xf3, 0x7e, 0x3e, 0x7a, 0x57, 0x67, 0xfc, 0xc4, 0xe4, 0xf0, 0x64, 0xff, 0x2e, 0x3b, 0x88, + 0x4e, 0xe9, 0x87, 0xc5, 0x72, 0x91, 0xf7, 0x60, 0x59, 0xef, 0x76, 0xb9, 0x22, 0x93, 0x89, 0x28, + 0x32, 0x33, 0x7e, 0xf1, 0x95, 0x80, 0x9f, 0x29, 0x32, 0xcc, 0xd0, 0xb4, 0xdb, 0x75, 0xb9, 0xeb, + 0x42, 0x58, 0xde, 0xe5, 0xdf, 0x82, 0xb5, 0x28, 0xf3, 0xb9, 0x14, 0x99, 0x1f, 0x2a, 0xa0, 0x46, + 0xeb, 0xf0, 0xcb, 0x81, 0x59, 0x48, 0x1b, 0xe6, 0x27, 0x4c, 0xaa, 0x3f, 0xcb, 0xc0, 0xb3, 0xa9, + 0x3d, 0x4c, 0x5e, 0x86, 0x45, 0x7d, 0x38, 0x34, 0xcb, 0x7c, 0x56, 0x71, 0x09, 0x09, 0xef, 0x87, + 0x23, 0x7a, 0x1e, 0x63, 0x22, 0xf7, 0x20, 0x8f, 0x33, 0x93, 0x66, 0xc8, 0x84, 0xa8, 0x57, 0xec, + 0xfa, 0x24, 0x86, 0x7a, 0x25, 0x18, 0x49, 0x05, 0xd6, 0xb8, 0xc7, 0xb5, 0xe5, 0x1d, 0x7b, 0xdf, + 0x09, 0xe0, 0x57, 0x11, 0x21, 0x56, 0x5c, 0x3a, 0xbb, 0x23, 0x96, 0x26, 0xfb, 0x1c, 0x47, 0x73, + 0x91, 0x1a, 0xa8, 0x58, 0xa6, 0x5c, 0x12, 0x83, 0xde, 0x42, 0x1f, 0x78, 0x56, 0x89, 0x19, 0x65, + 0x25, 0x72, 0x06, 0xc3, 0xa5, 0x8f, 0xc7, 0xbd, 0x63, 0xff, 0xd4, 0xf3, 0x27, 0xbf, 0xbc, 0xe1, + 0x0a, 0x7f, 0xe3, 0x4c, 0xc3, 0xf5, 0xe7, 0x39, 0xb6, 0x98, 0xe3, 0xd9, 0xa8, 0x44, 0x23, 0xa1, + 0x2d, 0xa2, 0x44, 0x83, 0x61, 0x74, 0x99, 0x4f, 0x71, 0x19, 0x96, 0x98, 0xaf, 0xb7, 0x58, 0x19, + 0xd7, 0x52, 0xab, 0xc0, 0x78, 0xf6, 0xef, 0x32, 0xf1, 0x85, 0xf9, 0x19, 0x8c, 0x2d, 0x91, 0x95, + 0xec, 0x43, 0xa1, 0xd4, 0xf7, 0x3a, 0xfe, 0x74, 0xe8, 0x9c, 0xed, 0xdd, 0x70, 0x8b, 0xb7, 0x65, + 0xe5, 0x90, 0x65, 0xc3, 0xf7, 0x46, 0xdc, 0xc9, 0xe5, 0x82, 0x88, 0x13, 0x98, 0x1e, 0xe7, 0xf0, + 0x8e, 0xf2, 0xcb, 0x73, 0xfa, 0x27, 0x4e, 0xc4, 0x7c, 0x51, 0xbb, 0x7a, 0x6e, 0x9b, 0xec, 0xc2, + 0x5a, 0xad, 0x33, 0x9e, 0x38, 0xa3, 0x8e, 0x3f, 0x46, 0x8c, 0xa8, 0x33, 0x60, 0x68, 0x88, 0x80, + 0xdb, 0xec, 0xee, 0x72, 0x12, 0x64, 0x65, 0x77, 0x97, 0xd1, 0xe2, 0xa8, 0xbc, 0x54, 0xe9, 0xf9, + 0x9d, 0x7e, 0xef, 0x23, 0xe1, 0xa1, 0xc1, 0xe4, 0xa5, 0x23, 0x41, 0xb4, 0xc2, 0x74, 0xed, 0xfd, + 0xc4, 0xb8, 0xb1, 0x5a, 0x16, 0x60, 0x89, 0xfb, 0xef, 0x31, 0x7f, 0xb6, 0x96, 0xd1, 0x28, 0x9b, + 0x8d, 0x5d, 0x55, 0x21, 0x6b, 0x00, 0x2d, 0xab, 0x59, 0x32, 0x6c, 0x9b, 0x7e, 0x67, 0xe8, 0x37, + 0x77, 0x76, 0xab, 0xb4, 0x6b, 0x6a, 0x56, 0xf2, 0x77, 0xcb, 0x69, 0x3f, 0x51, 0xe0, 0x62, 0xfa, + 0x50, 0x12, 0x07, 0xd0, 0xe3, 0x91, 0xbf, 0x20, 0x7f, 0x65, 0xee, 0xb8, 0xa7, 0x92, 0xe3, 0x9e, + 0x93, 0x13, 0xe6, 0x91, 0x97, 0x11, 0xcf, 0x44, 0x61, 0xa8, 0xe8, 0x5e, 0x57, 0x2b, 0xc1, 0xd6, + 0xac, 0x32, 0xa2, 0x4d, 0x5d, 0x87, 0x82, 0xde, 0x6a, 0xd5, 0xcc, 0x92, 0xee, 0x98, 0xcd, 0x86, + 0xaa, 0x90, 0x65, 0x58, 0xd8, 0xb5, 0x9a, 0xed, 0x96, 0x9a, 0xd1, 0x7e, 0xa0, 0xc0, 0xaa, 0xe9, + 0x4f, 0xbc, 0x63, 0x66, 0xf1, 0xfa, 0xb4, 0x8b, 0xef, 0xcd, 0xc8, 0xe2, 0xdb, 0x0a, 0x7c, 0x83, + 0x83, 0x1f, 0x38, 0xd3, 0xca, 0xfb, 0x38, 0x03, 0x1b, 0x89, 0x3c, 0xc4, 0x86, 0x25, 0xfd, 0xc0, + 0x6e, 0x9a, 0xe5, 0x12, 0xaf, 0x99, 0x90, 0xca, 0x39, 0x35, 0xf9, 0x2b, 0xcc, 0x9f, 0xe6, 0xc3, + 0xb1, 0x3b, 0xe8, 0x75, 0xa5, 0x80, 0x67, 0xd5, 0x0b, 0x96, 0x28, 0x09, 0x4f, 0xb2, 0x8f, 0xa6, + 0x23, 0x0f, 0x8b, 0xcd, 0x44, 0xae, 0x40, 0x03, 0x7a, 0xb2, 0x60, 0x34, 0xf0, 0xec, 0xd0, 0xf4, + 0x64, 0xd1, 0x61, 0x79, 0xa4, 0x01, 0x8b, 0xbb, 0xbd, 0x49, 0x75, 0xfa, 0x88, 0xaf, 0xdf, 0xed, + 0x10, 0xc2, 0xbe, 0x3a, 0x7d, 0x94, 0x2c, 0x16, 0x6f, 0xf7, 0x98, 0xef, 0x7b, 0xa4, 0x48, 0x5e, + 0xca, 0xce, 0x2a, 0x14, 0xb8, 0x16, 0x84, 0x0a, 0xc6, 0xf7, 0x15, 0xd8, 0x9a, 0xd5, 0x76, 0xaa, + 0x58, 0x45, 0x9d, 0xf5, 0x2e, 0x06, 0x68, 0xc5, 0x51, 0x2f, 0x3d, 0xc1, 0x46, 0xde, 0x86, 0x02, + 0x8b, 0xe7, 0x6f, 0xdf, 0x6b, 0x5b, 0x26, 0x9f, 0x70, 0xd7, 0xfe, 0xfd, 0x93, 0xeb, 0x97, 0x58, + 0xf4, 0x7f, 0x77, 0x7c, 0xcf, 0x9d, 0x8e, 0x7a, 0x11, 0x64, 0x57, 0x39, 0x87, 0xf6, 0x5d, 0x05, + 0x2e, 0xcf, 0xee, 0x34, 0x7a, 0x6a, 0x39, 0x54, 0xd6, 0x0f, 0xfd, 0x9d, 0xf0, 0xd4, 0x42, 0xf9, + 0x3f, 0xe6, 0xf0, 0x14, 0x30, 0xd2, 0x4c, 0x41, 0x70, 0xd2, 0x4c, 0x22, 0x22, 0x61, 0x34, 0x93, + 0x60, 0x44, 0x07, 0xcb, 0x19, 0x7d, 0x4c, 0xbe, 0x9a, 0x0a, 0x68, 0x8e, 0x66, 0xc5, 0x32, 0xa0, + 0x79, 0x24, 0x22, 0x86, 0x0c, 0x6d, 0xfe, 0x16, 0x2c, 0x20, 0xba, 0x24, 0x9f, 0x2c, 0x24, 0x32, + 0xa4, 0x08, 0x31, 0xc9, 0x74, 0x1f, 0x64, 0x92, 0x75, 0x1f, 0x24, 0x68, 0xff, 0xa0, 0x40, 0x41, + 0xe2, 0x25, 0xef, 0x83, 0x8a, 0x81, 0x21, 0xb9, 0x11, 0xcb, 0xa4, 0x17, 0x40, 0x86, 0x6d, 0x04, + 0x01, 0x4a, 0xaa, 0x22, 0x48, 0x3f, 0x1e, 0xd5, 0x71, 0x76, 0x39, 0xd2, 0x01, 0x4d, 0xd3, 0xc3, + 0x24, 0x62, 0xc1, 0x72, 0x60, 0x24, 0x15, 0x3b, 0x10, 0xa5, 0x4a, 0x04, 0xd6, 0x52, 0xbc, 0x6f, + 0xc5, 0x67, 0xc4, 0x6e, 0x59, 0x10, 0xb5, 0x1f, 0x29, 0xb0, 0x99, 0x96, 0xf9, 0x57, 0x33, 0x8e, + 0xac, 0xf6, 0x1f, 0x19, 0xb8, 0x48, 0x37, 0xa7, 0xbe, 0x37, 0x1e, 0xeb, 0x61, 0x48, 0x37, 0x3a, + 0x94, 0xaf, 0xc3, 0xe2, 0xc9, 0xf9, 0xae, 0xa6, 0x19, 0x3b, 0x21, 0x80, 0x07, 0xbe, 0x30, 0x3e, + 0xa6, 0xff, 0x93, 0x17, 0x40, 0x8e, 0x07, 0x9a, 0x45, 0x6c, 0xb5, 0xcc, 0x96, 0x62, 0x2d, 0x0f, + 0x83, 0xd0, 0x7d, 0x6f, 0xc0, 0x02, 0x5e, 0x47, 0xf1, 0xa3, 0x57, 0xa8, 0x4c, 0xe9, 0xb5, 0xc3, + 0xcb, 0x2a, 0x8b, 0x65, 0x20, 0x5f, 0x02, 0x08, 0x51, 0x92, 0xf9, 0xd9, 0x2a, 0xae, 0x69, 0x02, + 0xa0, 0x64, 0x6b, 0xf9, 0xf4, 0xa8, 0xc3, 0xa1, 0x87, 0x8b, 0xb0, 0x21, 0xfa, 0x7d, 0x28, 0x20, + 0x99, 0xf8, 0x7b, 0xe9, 0x3a, 0x4b, 0x30, 0x87, 0x02, 0x96, 0xe9, 0x66, 0x22, 0xa6, 0x21, 0x22, + 0x33, 0xc6, 0x02, 0x17, 0xde, 0x4c, 0x04, 0x2e, 0xcc, 0x33, 0x2e, 0x39, 0x3a, 0xa1, 0xf6, 0xaf, + 0x19, 0x58, 0x3e, 0xa0, 0x42, 0x2d, 0x5e, 0xd5, 0xcc, 0xbf, 0xfa, 0x79, 0x15, 0x0a, 0xb5, 0x41, + 0x87, 0x3f, 0x4c, 0x8d, 0x39, 0xc2, 0x1c, 0x8e, 0x66, 0x7f, 0xd0, 0x11, 0x6f, 0x5c, 0x63, 0x4b, + 0x66, 0x7a, 0x82, 0x33, 0xdc, 0x03, 0x58, 0x64, 0x0f, 0x85, 0xfc, 0x16, 0x52, 0xa8, 0x35, 0x41, + 0x8d, 0x5e, 0x61, 0xc9, 0xd2, 0x5b, 0x0a, 0x7b, 0x6c, 0x94, 0x65, 0x6c, 0x0e, 0x30, 0x27, 0x5d, + 0x4c, 0x2d, 0x9c, 0xed, 0x62, 0x4a, 0x02, 0xd2, 0x59, 0x3c, 0x0b, 0x90, 0xce, 0xe5, 0xfb, 0x50, + 0x90, 0xea, 0x73, 0x2e, 0x2d, 0xe7, 0xf7, 0x33, 0xb0, 0x8a, 0xad, 0x0a, 0xac, 0x86, 0x7e, 0x3d, + 0xaf, 0xd9, 0xde, 0x8c, 0x5c, 0xb3, 0x6d, 0xc9, 0xe3, 0xc5, 0x5a, 0x36, 0xe7, 0x7e, 0xed, 0x01, + 0x6c, 0x24, 0x18, 0xc9, 0x6b, 0xb0, 0x40, 0xab, 0x2f, 0x36, 0x51, 0x35, 0x3e, 0x03, 0x42, 0xd0, + 0x45, 0xda, 0xf0, 0xb1, 0xc5, 0xb8, 0xb5, 0xff, 0x56, 0x60, 0x85, 0x43, 0x70, 0xfb, 0x47, 0x83, + 0x27, 0x76, 0xe7, 0xad, 0x78, 0x77, 0x32, 0xd7, 0x6e, 0xde, 0x9d, 0xff, 0xdb, 0x9d, 0x78, 0x3f, + 0xd2, 0x89, 0x97, 0x02, 0x08, 0x26, 0xd1, 0x9c, 0x39, 0x7d, 0xf8, 0xf7, 0x08, 0x4a, 0x18, 0x65, + 0x24, 0xdf, 0x84, 0xe5, 0x86, 0xf7, 0x61, 0x44, 0xbb, 0xbf, 0x35, 0xa3, 0xd0, 0x57, 0x02, 0x46, + 0xb6, 0xa6, 0x50, 0x30, 0xf2, 0xbd, 0x0f, 0xdd, 0xc4, 0x1b, 0x65, 0x58, 0x24, 0x55, 0xf0, 0xa3, + 0xd9, 0xce, 0x33, 0xf5, 0xb9, 0x03, 0x11, 0xa2, 0x15, 0x7c, 0x2f, 0x0b, 0x10, 0xfa, 0x5e, 0xd0, + 0x05, 0x18, 0x31, 0xcf, 0x10, 0x0f, 0x23, 0x48, 0x92, 0xe7, 0xb8, 0xb0, 0xda, 0xb8, 0xc5, 0x2f, + 0xf0, 0x33, 0xb3, 0x21, 0xb2, 0xf0, 0x2a, 0xbf, 0xc4, 0x7d, 0x1b, 0xba, 0x5e, 0xbf, 0xc3, 0xf6, + 0xf6, 0xec, 0xce, 0x4d, 0x44, 0x44, 0x0c, 0xa8, 0x33, 0x22, 0x34, 0xa2, 0x07, 0x44, 0x99, 0x32, + 0x24, 0xfc, 0x99, 0x72, 0xe7, 0xf3, 0x67, 0x6a, 0xc1, 0x72, 0xcf, 0xff, 0xc0, 0xf3, 0x27, 0x83, + 0xd1, 0x63, 0x7c, 0xb5, 0x08, 0xaf, 0x43, 0x69, 0x17, 0x98, 0x22, 0x8d, 0x8d, 0x03, 0x1e, 0xe4, + 0x01, 0xbf, 0x3c, 0x0c, 0x01, 0x31, 0xf0, 0xc7, 0x5a, 0x50, 0x17, 0x1f, 0xe4, 0xf2, 0x8b, 0xea, + 0xd2, 0x83, 0x5c, 0x3e, 0xaf, 0x2e, 0x3f, 0xc8, 0xe5, 0x97, 0x55, 0xb0, 0xa4, 0x77, 0xc0, 0xe0, + 0x9d, 0x4f, 0x3a, 0xcb, 0xa3, 0xe7, 0xb4, 0xf6, 0x8b, 0x0c, 0x90, 0x64, 0x35, 0xc8, 0x9b, 0x50, + 0x60, 0x1b, 0xac, 0x3b, 0x1a, 0x7f, 0x9b, 0xbb, 0xba, 0x30, 0xcc, 0x07, 0x89, 0x2c, 0x63, 0x3e, + 0x30, 0xb2, 0x35, 0xfe, 0x76, 0x9f, 0x7c, 0x03, 0x9e, 0xc1, 0xee, 0x1d, 0x7a, 0xa3, 0xde, 0xa0, + 0xeb, 0x22, 0x40, 0x5f, 0xa7, 0xcf, 0xc3, 0x23, 0xbd, 0x8c, 0x71, 0xfc, 0x92, 0xc9, 0x33, 0x86, + 0x01, 0x3d, 0x4a, 0x5a, 0xc8, 0xd9, 0x62, 0x8c, 0xc4, 0x01, 0x55, 0xce, 0x7f, 0x34, 0xed, 0xf7, + 0xf9, 0xc8, 0x16, 0xa9, 0x94, 0x15, 0x4f, 0x9b, 0x51, 0xf0, 0x5a, 0x58, 0x70, 0x65, 0xda, 0xef, + 0x93, 0xd7, 0x01, 0x06, 0xbe, 0x7b, 0xda, 0x1b, 0x8f, 0xd9, 0x5b, 0x58, 0xe0, 0x0d, 0x16, 0x52, + 0xe5, 0xc1, 0x18, 0xf8, 0x75, 0x46, 0x24, 0xff, 0x0f, 0xd0, 0x55, 0x14, 0x7d, 0xa8, 0x99, 0xdd, + 0x13, 0x47, 0x32, 0x17, 0xc4, 0xa8, 0xf3, 0xd9, 0xb1, 0x67, 0xf7, 0x3e, 0x12, 0x66, 0xeb, 0xef, + 0xc2, 0x06, 0xb7, 0x38, 0x3e, 0xe8, 0x4d, 0x4e, 0xb8, 0x26, 0xf6, 0x34, 0x6a, 0x9c, 0xa4, 0x8a, + 0xfd, 0x53, 0x0e, 0x40, 0x3f, 0xb0, 0x05, 0x3c, 0xc9, 0x1d, 0x58, 0xa0, 0xfa, 0xa5, 0xb8, 0xa7, + 0x42, 0x49, 0x17, 0xcb, 0x95, 0x25, 0x5d, 0xe4, 0xa0, 0xab, 0xd1, 0xf2, 0x8e, 0xf1, 0xaa, 0x34, + 0x13, 0x5e, 0x6a, 0x8d, 0x18, 0x29, 0xa2, 0x7f, 0x30, 0x12, 0xa9, 0x01, 0x84, 0x80, 0x21, 0x5c, + 0x63, 0xda, 0x08, 0x3d, 0xef, 0x79, 0x02, 0x87, 0xa8, 0x0e, 0x41, 0x47, 0xe4, 0xe9, 0x13, 0xb2, + 0x91, 0x3d, 0xc8, 0x39, 0x9d, 0xc0, 0xd7, 0x69, 0x06, 0x8c, 0xca, 0xf3, 0x3c, 0x7c, 0x55, 0x08, + 0xa5, 0xb2, 0x36, 0xe9, 0x44, 0xa2, 0xfc, 0x61, 0x21, 0xc4, 0x80, 0x45, 0x1e, 0x9a, 0x74, 0x06, + 0xfc, 0x16, 0x8f, 0x4c, 0xca, 0x41, 0x37, 0x91, 0x28, 0xcb, 0x14, 0x3c, 0x08, 0xe9, 0xab, 0x90, + 0xb5, 0xed, 0x3a, 0x77, 0x1e, 0x5e, 0x0d, 0xb5, 0x57, 0xdb, 0xae, 0x8b, 0xb8, 0xdf, 0xa7, 0x52, + 0x36, 0xca, 0x4c, 0xfe, 0x3f, 0x14, 0x24, 0x25, 0x86, 0xbb, 0xdd, 0x63, 0x1f, 0xf4, 0x42, 0xb2, + 0xbc, 0x69, 0x48, 0xdc, 0xa4, 0x06, 0xea, 0xde, 0xf4, 0x91, 0xa7, 0x0f, 0x87, 0xe8, 0x8c, 0xf3, + 0x81, 0x37, 0x62, 0x62, 0x5b, 0x3e, 0xc4, 0xab, 0x74, 0x3b, 0xc3, 0xa1, 0xdb, 0x15, 0xa9, 0xf2, + 0x5d, 0x5d, 0x3c, 0x27, 0x69, 0xc1, 0x86, 0xed, 0x4d, 0xa6, 0x43, 0x66, 0xc9, 0x53, 0x19, 0x8c, + 0xa8, 0x72, 0xc9, 0x9c, 0xf4, 0x11, 0xda, 0x6f, 0x4c, 0x13, 0x85, 0xf9, 0xd4, 0xd1, 0x60, 0x14, + 0x53, 0x34, 0x93, 0x99, 0x35, 0x4f, 0x1e, 0x72, 0x7a, 0xaa, 0x46, 0x55, 0x56, 0x3c, 0x55, 0x85, + 0xca, 0x1a, 0x2a, 0xaa, 0x5f, 0x4a, 0x01, 0x92, 0xc1, 0x87, 0x55, 0x09, 0x48, 0x26, 0x02, 0x1f, + 0xf3, 0x71, 0x4e, 0xc2, 0x32, 0xe3, 0x63, 0xf1, 0x16, 0xc0, 0x83, 0x41, 0xcf, 0xaf, 0x7b, 0x93, + 0x93, 0x41, 0x57, 0xc2, 0xb3, 0x29, 0xfc, 0xce, 0xa0, 0xe7, 0xbb, 0xa7, 0x48, 0xfe, 0xc5, 0x27, + 0xd7, 0x25, 0x26, 0x4b, 0xfa, 0x9f, 0x7c, 0x11, 0x96, 0xe9, 0x97, 0x13, 0xda, 0x23, 0xb1, 0x2b, + 0x6d, 0xcc, 0xcd, 0x10, 0xbf, 0x43, 0x06, 0x72, 0x1f, 0x31, 0xee, 0x7b, 0xc3, 0x89, 0x24, 0xbc, + 0x0a, 0x40, 0xfb, 0xde, 0x70, 0x12, 0x87, 0xa7, 0x94, 0x98, 0x49, 0x35, 0xa8, 0xba, 0x88, 0x92, + 0xc0, 0xa1, 0xf4, 0x51, 0x19, 0xe4, 0x73, 0xcd, 0x15, 0xb8, 0x78, 0xb2, 0x32, 0x18, 0xcb, 0x86, + 0x95, 0xb0, 0xab, 0x65, 0xf6, 0xd0, 0xc6, 0x85, 0x5a, 0x11, 0xb7, 0xbc, 0xeb, 0x1e, 0x22, 0x39, + 0x52, 0x89, 0x80, 0x99, 0xec, 0xc0, 0x3a, 0x93, 0xf1, 0x83, 0x68, 0x4b, 0x5c, 0xc4, 0xc5, 0xbd, + 0x2d, 0x0c, 0xc7, 0x24, 0xff, 0x7c, 0x2c, 0x03, 0xa9, 0xc0, 0x02, 0x5e, 0x0e, 0x70, 0x7f, 0x82, + 0x2b, 0xf2, 0x2d, 0x4b, 0x7c, 0x1d, 0xe1, 0xbe, 0x82, 0xf7, 0x2b, 0xf2, 0xbe, 0x82, 0xac, 0xe4, + 0xeb, 0x00, 0x86, 0x3f, 0x1a, 0xf4, 0xfb, 0x88, 0xdc, 0x98, 0x47, 0x55, 0xea, 0x5a, 0x74, 0x3d, + 0x62, 0x29, 0x21, 0x13, 0x47, 0x19, 0xc2, 0x6f, 0x37, 0x86, 0xef, 0x28, 0x95, 0xa5, 0x99, 0xb0, + 0xc8, 0x16, 0x23, 0xa2, 0xa0, 0x72, 0x5c, 0x77, 0x09, 0x43, 0x93, 0xa1, 0xa0, 0x72, 0x7a, 0x12, + 0x05, 0x55, 0xca, 0xa0, 0xed, 0xc1, 0x66, 0x5a, 0xc3, 0x22, 0xd7, 0x19, 0xca, 0x59, 0xaf, 0x33, + 0xfe, 0x3a, 0x0b, 0x2b, 0x58, 0x9a, 0xd8, 0x85, 0x75, 0x58, 0xb5, 0xa7, 0x8f, 0x02, 0x88, 0x10, + 0xb1, 0x1b, 0x63, 0xfd, 0xc6, 0x72, 0x82, 0xfc, 0x04, 0x1a, 0xc9, 0x41, 0x0c, 0x58, 0x13, 0x27, + 0xc1, 0xae, 0xf0, 0x51, 0x08, 0x00, 0x48, 0x05, 0xcc, 0x55, 0x32, 0xda, 0x5c, 0x2c, 0x53, 0x78, + 0x1e, 0x64, 0xcf, 0x73, 0x1e, 0xe4, 0xce, 0x74, 0x1e, 0xbc, 0x07, 0x2b, 0xe2, 0xd7, 0x70, 0x27, + 0x5f, 0x78, 0xba, 0x9d, 0x3c, 0x52, 0x18, 0xa9, 0x05, 0x3b, 0xfa, 0xe2, 0xdc, 0x1d, 0x1d, 0xdf, + 0x95, 0xc5, 0x2a, 0x4b, 0xc4, 0x99, 0xe6, 0x65, 0x60, 0x38, 0xa6, 0xdd, 0x52, 0xeb, 0x33, 0x9c, + 0x92, 0xaf, 0xc1, 0x72, 0x6d, 0x20, 0x9e, 0x14, 0xa5, 0xb7, 0x9c, 0xbe, 0x20, 0xca, 0xe2, 0x42, + 0xc0, 0x19, 0x9c, 0x6e, 0xd9, 0xcf, 0xe3, 0x74, 0xbb, 0x0f, 0xc0, 0x9d, 0x5f, 0xc2, 0x30, 0x2a, + 0xb8, 0x64, 0x84, 0x07, 0x78, 0xf4, 0x49, 0x49, 0x62, 0xa6, 0xbb, 0x13, 0xb7, 0x56, 0xd2, 0x0f, + 0x0f, 0x07, 0x53, 0x7f, 0x12, 0x89, 0x3b, 0xc8, 0xc1, 0x20, 0xe8, 0x91, 0x80, 0x69, 0xf2, 0xf6, + 0x10, 0xcb, 0xf6, 0xf9, 0x0e, 0x08, 0x79, 0x27, 0x30, 0xb3, 0x9c, 0x1b, 0xdc, 0x5d, 0x4b, 0xf4, + 0xd0, 0x4c, 0xe3, 0x4a, 0xed, 0x27, 0x8a, 0x8c, 0xfe, 0xfc, 0x19, 0x86, 0xfa, 0x0d, 0x80, 0xc0, + 0xa6, 0x43, 0x8c, 0x35, 0xd3, 0x97, 0x02, 0xaa, 0xdc, 0xcb, 0x21, 0xaf, 0xd4, 0x9a, 0xec, 0xe7, + 0xd5, 0x1a, 0x07, 0x0a, 0xcd, 0x6f, 0x4d, 0x3a, 0xa1, 0x11, 0x10, 0xd8, 0x81, 0x24, 0x8b, 0x3b, + 0x93, 0x08, 0x42, 0x1f, 0xca, 0xc1, 0x33, 0x83, 0xd0, 0x07, 0x19, 0xb5, 0x77, 0x60, 0x5d, 0xf6, + 0x45, 0x7d, 0xec, 0x1f, 0x92, 0xaf, 0x32, 0x2c, 0x3a, 0x25, 0xa2, 0xb1, 0x48, 0x4c, 0x74, 0xc7, + 0x7d, 0xec, 0x1f, 0x32, 0xf9, 0xa7, 0xf3, 0xa1, 0x5c, 0x57, 0xd4, 0xf1, 0x7e, 0xa6, 0x00, 0x49, + 0xb2, 0xcb, 0xbb, 0x89, 0xf2, 0x7f, 0x20, 0x5d, 0xc6, 0xa4, 0xb2, 0xdc, 0x79, 0xa4, 0xb2, 0xe2, + 0x9f, 0x2a, 0xb0, 0x6e, 0xea, 0x75, 0x0e, 0xd5, 0xcc, 0xde, 0xa6, 0x5e, 0x80, 0x6b, 0xa6, 0x5e, + 0x77, 0x5b, 0xcd, 0x9a, 0x59, 0x7a, 0xe8, 0xa6, 0x22, 0x30, 0x5e, 0x83, 0xe7, 0x92, 0x2c, 0xe1, + 0x1b, 0xd6, 0x55, 0xd8, 0x4a, 0x26, 0x0b, 0x94, 0xc6, 0xf4, 0xcc, 0x02, 0xd0, 0x31, 0x5b, 0x7c, + 0x1b, 0xd6, 0x05, 0x22, 0xa1, 0x53, 0xb3, 0x11, 0xf3, 0x78, 0x1d, 0x0a, 0xfb, 0x86, 0x65, 0x56, + 0x1e, 0xba, 0x95, 0x76, 0xad, 0xa6, 0x5e, 0x20, 0xab, 0xb0, 0xcc, 0x09, 0x25, 0x5d, 0x55, 0xc8, + 0x0a, 0xe4, 0xcd, 0x86, 0x6d, 0x94, 0xda, 0x96, 0xa1, 0x66, 0x8a, 0x6f, 0xc3, 0x5a, 0x6b, 0xd4, + 0xfb, 0xa0, 0x33, 0xf1, 0xf6, 0xbc, 0xc7, 0xf8, 0x04, 0xb5, 0x04, 0x59, 0x4b, 0x3f, 0x50, 0x2f, + 0x10, 0x80, 0xc5, 0xd6, 0x5e, 0xc9, 0xbe, 0x7b, 0x57, 0x55, 0x48, 0x01, 0x96, 0x76, 0x4b, 0x2d, + 0x77, 0xaf, 0x6e, 0xab, 0x19, 0xfa, 0xa1, 0x1f, 0xd8, 0xf8, 0x91, 0x2d, 0x7e, 0x19, 0x36, 0x50, + 0x56, 0xa8, 0xf5, 0xc6, 0x13, 0xcf, 0xf7, 0x46, 0x58, 0x87, 0x15, 0xc8, 0xdb, 0x1e, 0x5d, 0xe4, + 0x13, 0x8f, 0x55, 0xa0, 0x3e, 0xed, 0x4f, 0x7a, 0xc3, 0xbe, 0xf7, 0x1d, 0x55, 0x29, 0xde, 0x87, + 0x75, 0x6b, 0x30, 0x9d, 0xf4, 0xfc, 0x63, 0x7b, 0x42, 0x39, 0x8e, 0x1f, 0x93, 0x67, 0x61, 0xa3, + 0xdd, 0xd0, 0xeb, 0x3b, 0xe6, 0x6e, 0xbb, 0xd9, 0xb6, 0xdd, 0xba, 0xee, 0x94, 0xaa, 0xec, 0x01, + 0xac, 0xde, 0xb4, 0x1d, 0xd7, 0x32, 0x4a, 0x46, 0xc3, 0x51, 0x95, 0xe2, 0x1f, 0x2a, 0xb0, 0xd6, + 0x1e, 0x73, 0x2b, 0xef, 0x36, 0xfa, 0x6a, 0x3e, 0x0f, 0x57, 0xdb, 0xb6, 0x61, 0xb9, 0x4e, 0x73, + 0xcf, 0x68, 0xb8, 0x6d, 0x5b, 0xdf, 0x8d, 0xc3, 0x7f, 0x5e, 0x87, 0x2b, 0x12, 0x87, 0x65, 0x94, + 0x9a, 0xfb, 0x86, 0xe5, 0xb6, 0x74, 0xdb, 0x3e, 0x68, 0x5a, 0x65, 0x55, 0x21, 0x97, 0xe1, 0x62, + 0x0a, 0x43, 0xbd, 0xa2, 0xab, 0x99, 0x44, 0x5a, 0xc3, 0x38, 0xd0, 0x6b, 0xee, 0x4e, 0xd3, 0x51, + 0xb3, 0xc5, 0x3a, 0x3d, 0xe8, 0x10, 0xf6, 0x8e, 0x59, 0x28, 0xe6, 0x21, 0xd7, 0x68, 0x36, 0x8c, + 0xf8, 0x23, 0xe5, 0x0a, 0xe4, 0xf5, 0x56, 0xcb, 0x6a, 0xee, 0xe3, 0x80, 0x02, 0x2c, 0x96, 0x8d, + 0x06, 0xad, 0x59, 0x96, 0xa6, 0xb4, 0xac, 0x66, 0xbd, 0xe9, 0x18, 0x65, 0x35, 0x57, 0xb4, 0xc4, + 0x82, 0x11, 0x85, 0x1e, 0x0e, 0xd8, 0x8b, 0x60, 0xd9, 0xa8, 0xe8, 0xed, 0x9a, 0xc3, 0x3b, 0xe4, + 0xa1, 0x6b, 0x19, 0xef, 0xb4, 0x0d, 0xdb, 0xb1, 0x55, 0x85, 0xa8, 0xb0, 0xd2, 0x30, 0x8c, 0xb2, + 0xed, 0x5a, 0xc6, 0xbe, 0x69, 0x1c, 0xa8, 0x19, 0x5a, 0x26, 0xfb, 0x9f, 0xfe, 0x42, 0xf1, 0x63, + 0x05, 0x08, 0x83, 0x0c, 0x14, 0x38, 0xf4, 0x38, 0x3e, 0xdb, 0x70, 0xb9, 0x4a, 0x3b, 0x16, 0x9b, + 0x56, 0x6f, 0x96, 0xe3, 0x5d, 0x76, 0x11, 0x48, 0x2c, 0xbd, 0x59, 0xa9, 0xa8, 0x0a, 0xb9, 0x02, + 0xcf, 0xc4, 0xe8, 0x65, 0xab, 0xd9, 0x52, 0x33, 0x97, 0x33, 0x79, 0x85, 0x5c, 0x4a, 0x24, 0xee, + 0x19, 0x46, 0x4b, 0xcd, 0xd2, 0x21, 0x8a, 0x25, 0x88, 0x09, 0xc8, 0xb2, 0xe7, 0x8a, 0xdf, 0x55, + 0xe0, 0x22, 0xab, 0xa6, 0x98, 0xcd, 0x41, 0x55, 0xaf, 0xc2, 0x16, 0x07, 0x42, 0x4d, 0xab, 0xe8, + 0x26, 0xa8, 0x91, 0x54, 0x56, 0xcd, 0x67, 0x61, 0x23, 0x42, 0xc5, 0x7a, 0x64, 0xe8, 0x5a, 0x8d, + 0x90, 0x77, 0x0c, 0xdb, 0x71, 0x8d, 0x4a, 0xa5, 0x69, 0x39, 0xac, 0x22, 0xd9, 0xa2, 0x06, 0x1b, + 0x25, 0x6f, 0x34, 0xa1, 0x3a, 0x88, 0x3f, 0xee, 0x0d, 0x7c, 0xac, 0xc2, 0x2a, 0x2c, 0x1b, 0x5f, + 0x77, 0x8c, 0x86, 0x6d, 0x36, 0x1b, 0xea, 0x85, 0xe2, 0xd5, 0x18, 0x8f, 0x58, 0x35, 0xb6, 0x5d, + 0x55, 0x2f, 0x14, 0x3b, 0xb0, 0x2a, 0xac, 0xaa, 0xd9, 0xac, 0xd8, 0x86, 0xcb, 0x62, 0xae, 0xe1, + 0xfa, 0x8d, 0x37, 0x61, 0x0b, 0x36, 0x93, 0xe9, 0x86, 0xa3, 0x2a, 0x74, 0x14, 0x62, 0x29, 0x94, + 0x9e, 0x29, 0xfe, 0x95, 0x02, 0x5b, 0x3c, 0xe2, 0x2b, 0x7f, 0x41, 0x60, 0xd8, 0xeb, 0x08, 0x4e, + 0x58, 0x84, 0x5b, 0x8e, 0xd5, 0xb6, 0x1d, 0xa3, 0xec, 0x96, 0x8d, 0x7d, 0xb3, 0x64, 0xe0, 0x74, + 0x31, 0x2d, 0xa3, 0x6e, 0x34, 0x9c, 0xd8, 0x4f, 0xbf, 0x04, 0x5f, 0x98, 0xc3, 0xdb, 0x68, 0x3a, + 0xe2, 0x9b, 0xae, 0x92, 0x2f, 0xc0, 0x8d, 0x39, 0xcc, 0x01, 0x63, 0xa6, 0xf8, 0x3e, 0xac, 0x44, + 0xe2, 0xc9, 0x5c, 0x82, 0x67, 0xe4, 0xef, 0x96, 0xe7, 0x77, 0x7b, 0xfe, 0xb1, 0x7a, 0x21, 0x9e, + 0x60, 0x4d, 0x7d, 0x9f, 0x26, 0xe0, 0x82, 0x94, 0x13, 0x1c, 0x6f, 0x74, 0xda, 0xf3, 0x3b, 0x13, + 0xaf, 0xab, 0x66, 0x8a, 0xaf, 0xc0, 0x6a, 0x04, 0xc5, 0x92, 0xf6, 0x7c, 0xad, 0xc9, 0xf7, 0xab, + 0xba, 0x51, 0x36, 0xdb, 0x75, 0x75, 0x81, 0x2e, 0xc5, 0xaa, 0xb9, 0x5b, 0x55, 0xa1, 0xf8, 0x03, + 0x85, 0x4a, 0xcc, 0xd8, 0x3f, 0xf5, 0x8a, 0x2e, 0xc6, 0x8a, 0xce, 0x13, 0x86, 0x8d, 0x6b, 0xd8, + 0x36, 0x7b, 0x5c, 0xbf, 0x0a, 0x5b, 0xfc, 0xc3, 0xd5, 0x1b, 0x65, 0xb7, 0xaa, 0x5b, 0xe5, 0x03, + 0xdd, 0xa2, 0x93, 0xe7, 0xa1, 0x9a, 0xc1, 0x15, 0x21, 0x51, 0x5c, 0xa7, 0xd9, 0x2e, 0x55, 0xd5, + 0x2c, 0x9d, 0x80, 0x11, 0x7a, 0xcb, 0x6c, 0xa8, 0x39, 0x5c, 0x5f, 0x09, 0x6e, 0x2c, 0x96, 0xa6, + 0x2f, 0x14, 0x3f, 0x55, 0xe0, 0x92, 0xdd, 0x3b, 0xf6, 0x3b, 0x93, 0xe9, 0xc8, 0xd3, 0xfb, 0xc7, + 0x83, 0x51, 0x6f, 0x72, 0x72, 0x6a, 0x4f, 0x7b, 0x13, 0x8f, 0xdc, 0x81, 0x17, 0x6d, 0x73, 0xb7, + 0xa1, 0x3b, 0x74, 0x7d, 0xe8, 0xb5, 0xdd, 0xa6, 0x65, 0x3a, 0xd5, 0xba, 0x6b, 0xb7, 0xcd, 0xc4, + 0xd4, 0xb9, 0x09, 0xcf, 0xcf, 0x66, 0xad, 0x19, 0xbb, 0x7a, 0xe9, 0xa1, 0xaa, 0xcc, 0x2f, 0x70, + 0x47, 0xaf, 0xe9, 0x8d, 0x92, 0x51, 0x76, 0xf7, 0xef, 0xaa, 0x19, 0xf2, 0x22, 0xbc, 0x30, 0x9b, + 0xb5, 0x62, 0xb6, 0x6c, 0xca, 0x96, 0x9d, 0xff, 0xbb, 0x55, 0xbb, 0x4e, 0xb9, 0x72, 0xc5, 0x1e, + 0xa8, 0x71, 0x27, 0xfc, 0x84, 0x29, 0x87, 0xd5, 0x6e, 0x34, 0xd8, 0x2e, 0xb9, 0x0e, 0x85, 0xa6, + 0x53, 0x35, 0x2c, 0x0e, 0xd1, 0x8c, 0x98, 0xcc, 0xed, 0x86, 0xde, 0x76, 0xaa, 0x4d, 0xcb, 0x7c, + 0x17, 0xb7, 0xcb, 0x2d, 0xd8, 0xb4, 0x6b, 0x7a, 0x69, 0x0f, 0x67, 0xa6, 0xd9, 0x70, 0x4b, 0x55, + 0xbd, 0xd1, 0x30, 0x6a, 0x2a, 0x14, 0xff, 0x52, 0x61, 0x36, 0x15, 0x69, 0xde, 0x7a, 0xe4, 0x8b, + 0x70, 0xbb, 0xb9, 0xe7, 0xe8, 0x6e, 0xab, 0xd6, 0xde, 0x35, 0x1b, 0xae, 0xfd, 0xb0, 0x51, 0x12, + 0x07, 0x69, 0x29, 0xb9, 0xa3, 0xdc, 0x86, 0x9b, 0x73, 0xb9, 0x43, 0x30, 0xe5, 0x5b, 0xa0, 0xcd, + 0xe5, 0xe4, 0x0d, 0x29, 0xfe, 0x54, 0x81, 0x2b, 0x73, 0xde, 0x0a, 0xc9, 0xcb, 0x70, 0xa7, 0x6a, + 0xe8, 0xe5, 0x9a, 0x61, 0xdb, 0x2e, 0x6d, 0xaf, 0xd1, 0x70, 0xb8, 0xc9, 0x47, 0xea, 0x7e, 0x71, + 0x07, 0x5e, 0x9c, 0xcf, 0x1e, 0x9e, 0x3c, 0xb7, 0xe1, 0xe6, 0x7c, 0x56, 0x7e, 0x12, 0x65, 0xe8, + 0xae, 0x31, 0x9f, 0x33, 0x38, 0xc1, 0xb2, 0xc5, 0xef, 0x2b, 0x70, 0x31, 0x5d, 0x61, 0xa7, 0x75, + 0x33, 0x1b, 0xb6, 0xa3, 0xd7, 0x6a, 0x6e, 0x4b, 0xb7, 0xf4, 0xba, 0x6b, 0x34, 0xac, 0x66, 0xad, + 0x96, 0xb6, 0x73, 0xdf, 0x84, 0xe7, 0x67, 0xb3, 0xda, 0x25, 0xcb, 0x6c, 0xd1, 0x2d, 0x50, 0x83, + 0xed, 0xd9, 0x5c, 0x86, 0x59, 0x32, 0xd4, 0xcc, 0xce, 0x5b, 0x3f, 0xfe, 0x97, 0xed, 0x0b, 0x3f, + 0xfe, 0x74, 0x5b, 0xf9, 0xd9, 0xa7, 0xdb, 0xca, 0x3f, 0x7f, 0xba, 0xad, 0xbc, 0xfb, 0xd2, 0x39, + 0xa2, 0xda, 0x3f, 0x5a, 0x44, 0x1b, 0xa7, 0x7b, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x0e, 0xf1, + 0x2a, 0x7a, 0x15, 0xa3, 0x01, 0x00, } func (this *PluginSpecV1) Equal(that interface{}) bool { @@ -25085,6 +25362,18 @@ func (m *ServerSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if m.GitHub != nil { + { + size, err := m.GitHub.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x7a + } if m.CloudMetadata != nil { { size, err := m.CloudMetadata.MarshalToSizedBuffer(dAtA[:i]) @@ -25298,6 +25587,47 @@ func (m *CloudMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *GitHubServerMetadata) 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 *GitHubServerMetadata) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GitHubServerMetadata) 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.Integration) > 0 { + i -= len(m.Integration) + copy(dAtA[i:], m.Integration) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Integration))) + i-- + dAtA[i] = 0x12 + } + if len(m.Organization) > 0 { + i -= len(m.Organization) + copy(dAtA[i:], m.Organization) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Organization))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *AppServerV3) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -26490,12 +26820,12 @@ func (m *ProvisionTokenV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - n67, err67 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err67 != nil { - return 0, err67 + n68, err68 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err68 != nil { + return 0, err68 } - i -= n67 - i = encodeVarintTypes(dAtA, i, uint64(n67)) + i -= n68 + i = encodeVarintTypes(dAtA, i, uint64(n68)) i-- dAtA[i] = 0x12 if len(m.Roles) > 0 { @@ -29487,12 +29817,12 @@ func (m *UserTokenSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n116, err116 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err116 != nil { - return 0, err116 + n117, err117 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err117 != nil { + return 0, err117 } - i -= n116 - i = encodeVarintTypes(dAtA, i, uint64(n116)) + i -= n117 + i = encodeVarintTypes(dAtA, i, uint64(n117)) i-- dAtA[i] = 0x22 if m.Usage != 0 { @@ -29609,12 +29939,12 @@ func (m *UserTokenSecretsSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n119, err119 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err119 != nil { - return 0, err119 + n120, err120 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err120 != nil { + return 0, err120 } - i -= n119 - i = encodeVarintTypes(dAtA, i, uint64(n119)) + i -= n120 + i = encodeVarintTypes(dAtA, i, uint64(n120)) i-- dAtA[i] = 0x1a if len(m.QRCode) > 0 { @@ -29819,12 +30149,12 @@ func (m *AccessReview) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if m.AssumeStartTime != nil { - n122, err122 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.AssumeStartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.AssumeStartTime):]) - if err122 != nil { - return 0, err122 + n123, err123 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.AssumeStartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.AssumeStartTime):]) + if err123 != nil { + return 0, err123 } - i -= n122 - i = encodeVarintTypes(dAtA, i, uint64(n122)) + i -= n123 + i = encodeVarintTypes(dAtA, i, uint64(n123)) i-- dAtA[i] = 0x52 } @@ -29841,20 +30171,20 @@ func (m *AccessReview) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x4a } if len(m.ThresholdIndexes) > 0 { - dAtA125 := make([]byte, len(m.ThresholdIndexes)*10) - var j124 int + dAtA126 := make([]byte, len(m.ThresholdIndexes)*10) + var j125 int for _, num := range m.ThresholdIndexes { for num >= 1<<7 { - dAtA125[j124] = uint8(uint64(num)&0x7f | 0x80) + dAtA126[j125] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j124++ + j125++ } - dAtA125[j124] = uint8(num) - j124++ + dAtA126[j125] = uint8(num) + j125++ } - i -= j124 - copy(dAtA[i:], dAtA125[:j124]) - i = encodeVarintTypes(dAtA, i, uint64(j124)) + i -= j125 + copy(dAtA[i:], dAtA126[:j125]) + i = encodeVarintTypes(dAtA, i, uint64(j125)) i-- dAtA[i] = 0x3a } @@ -29868,12 +30198,12 @@ func (m *AccessReview) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x32 - n127, err127 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err127 != nil { - return 0, err127 + n128, err128 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err128 != nil { + return 0, err128 } - i -= n127 - i = encodeVarintTypes(dAtA, i, uint64(n127)) + i -= n128 + i = encodeVarintTypes(dAtA, i, uint64(n128)) i-- dAtA[i] = 0x2a if len(m.Reason) > 0 { @@ -29976,20 +30306,20 @@ func (m *ThresholdIndexSet) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if len(m.Indexes) > 0 { - dAtA130 := make([]byte, len(m.Indexes)*10) - var j129 int + dAtA131 := make([]byte, len(m.Indexes)*10) + var j130 int for _, num := range m.Indexes { for num >= 1<<7 { - dAtA130[j129] = uint8(uint64(num)&0x7f | 0x80) + dAtA131[j130] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j129++ + j130++ } - dAtA130[j129] = uint8(num) - j129++ + dAtA131[j130] = uint8(num) + j130++ } - i -= j129 - copy(dAtA[i:], dAtA130[:j129]) - i = encodeVarintTypes(dAtA, i, uint64(j129)) + i -= j130 + copy(dAtA[i:], dAtA131[:j130]) + i = encodeVarintTypes(dAtA, i, uint64(j130)) i-- dAtA[i] = 0xa } @@ -30062,12 +30392,12 @@ func (m *AccessRequestSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.XXX_unrecognized) } if m.AssumeStartTime != nil { - n131, err131 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.AssumeStartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.AssumeStartTime):]) - if err131 != nil { - return 0, err131 + n132, err132 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.AssumeStartTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.AssumeStartTime):]) + if err132 != nil { + return 0, err132 } - i -= n131 - i = encodeVarintTypes(dAtA, i, uint64(n131)) + i -= n132 + i = encodeVarintTypes(dAtA, i, uint64(n132)) i-- dAtA[i] = 0x1 i-- @@ -30087,22 +30417,22 @@ func (m *AccessRequestSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0xa2 } - n133, err133 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.SessionTTL, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.SessionTTL):]) - if err133 != nil { - return 0, err133 + n134, err134 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.SessionTTL, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.SessionTTL):]) + if err134 != nil { + return 0, err134 } - i -= n133 - i = encodeVarintTypes(dAtA, i, uint64(n133)) + i -= n134 + i = encodeVarintTypes(dAtA, i, uint64(n134)) i-- dAtA[i] = 0x1 i-- dAtA[i] = 0x92 - n134, err134 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.MaxDuration, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.MaxDuration):]) - if err134 != nil { - return 0, err134 + n135, err135 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.MaxDuration, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.MaxDuration):]) + if err135 != nil { + return 0, err135 } - i -= n134 - i = encodeVarintTypes(dAtA, i, uint64(n134)) + i -= n135 + i = encodeVarintTypes(dAtA, i, uint64(n135)) i-- dAtA[i] = 0x1 i-- @@ -30235,21 +30565,21 @@ func (m *AccessRequestSpecV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x32 } - n138, err138 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err138 != nil { - return 0, err138 - } - i -= n138 - i = encodeVarintTypes(dAtA, i, uint64(n138)) - i-- - dAtA[i] = 0x2a - n139, err139 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + n139, err139 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) if err139 != nil { return 0, err139 } i -= n139 i = encodeVarintTypes(dAtA, i, uint64(n139)) i-- + dAtA[i] = 0x2a + n140, err140 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err140 != nil { + return 0, err140 + } + i -= n140 + i = encodeVarintTypes(dAtA, i, uint64(n140)) + i-- dAtA[i] = 0x22 if m.State != 0 { i = encodeVarintTypes(dAtA, i, uint64(m.State)) @@ -31068,12 +31398,12 @@ func (m *RoleOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0xfa } - n148, err148 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.MFAVerificationInterval, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.MFAVerificationInterval):]) - if err148 != nil { - return 0, err148 + n149, err149 := github_com_gogo_protobuf_types.StdDurationMarshalTo(m.MFAVerificationInterval, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdDuration(m.MFAVerificationInterval):]) + if err149 != nil { + return 0, err149 } - i -= n148 - i = encodeVarintTypes(dAtA, i, uint64(n148)) + i -= n149 + i = encodeVarintTypes(dAtA, i, uint64(n149)) i-- dAtA[i] = 0x1 i-- @@ -31483,6 +31813,22 @@ func (m *RoleConditions) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.GithubPermissions) > 0 { + for iNdEx := len(m.GithubPermissions) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.GithubPermissions[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2 + i-- + dAtA[i] = 0xd2 + } + } if len(m.SPIFFE) > 0 { for iNdEx := len(m.SPIFFE) - 1; iNdEx >= 0; iNdEx-- { { @@ -31916,6 +32262,42 @@ func (m *RoleConditions) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *GitHubPermission) 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 *GitHubPermission) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GitHubPermission) 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.Organizations) > 0 { + for iNdEx := len(m.Organizations) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Organizations[iNdEx]) + copy(dAtA[i:], m.Organizations[iNdEx]) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Organizations[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + func (m *SPIFFERoleCondition) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -32892,12 +33274,12 @@ func (m *UserSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x42 - n177, err177 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err177 != nil { - return 0, err177 + n178, err178 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err178 != nil { + return 0, err178 } - i -= n177 - i = encodeVarintTypes(dAtA, i, uint64(n177)) + i -= n178 + i = encodeVarintTypes(dAtA, i, uint64(n178)) i-- dAtA[i] = 0x3a { @@ -32998,6 +33380,13 @@ func (m *ExternalIdentity) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.UserID) > 0 { + i -= len(m.UserID) + copy(dAtA[i:], m.UserID) + i = encodeVarintTypes(dAtA, i, uint64(len(m.UserID))) + i-- + dAtA[i] = 0x22 + } if len(m.SAMLSingleLogoutURL) > 0 { i -= len(m.SAMLSingleLogoutURL) copy(dAtA[i:], m.SAMLSingleLogoutURL) @@ -33046,21 +33435,21 @@ func (m *LoginStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n180, err180 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockExpires):]) - if err180 != nil { - return 0, err180 - } - i -= n180 - i = encodeVarintTypes(dAtA, i, uint64(n180)) - i-- - dAtA[i] = 0x22 - n181, err181 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockedTime):]) + n181, err181 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockExpires):]) if err181 != nil { return 0, err181 } i -= n181 i = encodeVarintTypes(dAtA, i, uint64(n181)) i-- + dAtA[i] = 0x22 + n182, err182 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LockedTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LockedTime):]) + if err182 != nil { + return 0, err182 + } + i -= n182 + i = encodeVarintTypes(dAtA, i, uint64(n182)) + i-- dAtA[i] = 0x1a if len(m.LockedMessage) > 0 { i -= len(m.LockedMessage) @@ -33116,12 +33505,12 @@ func (m *CreatedBy) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x1a - n183, err183 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):]) - if err183 != nil { - return 0, err183 + n184, err184 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Time):]) + if err184 != nil { + return 0, err184 } - i -= n183 - i = encodeVarintTypes(dAtA, i, uint64(n183)) + i -= n184 + i = encodeVarintTypes(dAtA, i, uint64(n184)) i-- dAtA[i] = 0x12 if m.Connector != nil { @@ -33239,21 +33628,21 @@ func (m *MFADevice) MarshalToSizedBuffer(dAtA []byte) (int, error) { } } } - n186, err186 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastUsed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastUsed):]) - if err186 != nil { - return 0, err186 - } - i -= n186 - i = encodeVarintTypes(dAtA, i, uint64(n186)) - i-- - dAtA[i] = 0x3a - n187, err187 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.AddedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.AddedAt):]) + n187, err187 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastUsed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastUsed):]) if err187 != nil { return 0, err187 } i -= n187 i = encodeVarintTypes(dAtA, i, uint64(n187)) i-- + dAtA[i] = 0x3a + n188, err188 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.AddedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.AddedAt):]) + if err188 != nil { + return 0, err188 + } + i -= n188 + i = encodeVarintTypes(dAtA, i, uint64(n188)) + i-- dAtA[i] = 0x32 if len(m.Id) > 0 { i -= len(m.Id) @@ -33880,12 +34269,12 @@ func (m *TunnelConnectionSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) i-- dAtA[i] = 0x22 } - n198, err198 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) - if err198 != nil { - return 0, err198 + n199, err199 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) + if err199 != nil { + return 0, err199 } - i -= n198 - i = encodeVarintTypes(dAtA, i, uint64(n198)) + i -= n199 + i = encodeVarintTypes(dAtA, i, uint64(n199)) i-- dAtA[i] = 0x1a if len(m.ProxyName) > 0 { @@ -33977,12 +34366,12 @@ func (m *AcquireSemaphoreRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) i-- dAtA[i] = 0x2a } - n199, err199 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err199 != nil { - return 0, err199 + n200, err200 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err200 != nil { + return 0, err200 } - i -= n199 - i = encodeVarintTypes(dAtA, i, uint64(n199)) + i -= n200 + i = encodeVarintTypes(dAtA, i, uint64(n200)) i-- dAtA[i] = 0x22 if m.MaxLeases != 0 { @@ -34031,12 +34420,12 @@ func (m *SemaphoreLease) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n200, err200 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err200 != nil { - return 0, err200 + n201, err201 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err201 != nil { + return 0, err201 } - i -= n200 - i = encodeVarintTypes(dAtA, i, uint64(n200)) + i -= n201 + i = encodeVarintTypes(dAtA, i, uint64(n201)) i-- dAtA[i] = 0x2a if len(m.LeaseID) > 0 { @@ -34094,12 +34483,12 @@ func (m *SemaphoreLeaseRef) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - n201, err201 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err201 != nil { - return 0, err201 + n202, err202 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err202 != nil { + return 0, err202 } - i -= n201 - i = encodeVarintTypes(dAtA, i, uint64(n201)) + i -= n202 + i = encodeVarintTypes(dAtA, i, uint64(n202)) i-- dAtA[i] = 0x12 if len(m.LeaseID) > 0 { @@ -34371,29 +34760,29 @@ func (m *WebSessionSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x48 } - n208, err208 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LoginTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LoginTime):]) - if err208 != nil { - return 0, err208 - } - i -= n208 - i = encodeVarintTypes(dAtA, i, uint64(n208)) - i-- - dAtA[i] = 0x42 - n209, err209 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + n209, err209 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LoginTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LoginTime):]) if err209 != nil { return 0, err209 } i -= n209 i = encodeVarintTypes(dAtA, i, uint64(n209)) i-- - dAtA[i] = 0x3a - n210, err210 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.BearerTokenExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.BearerTokenExpires):]) + dAtA[i] = 0x42 + n210, err210 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) if err210 != nil { return 0, err210 } i -= n210 i = encodeVarintTypes(dAtA, i, uint64(n210)) i-- + dAtA[i] = 0x3a + n211, err211 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.BearerTokenExpires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.BearerTokenExpires):]) + if err211 != nil { + return 0, err211 + } + i -= n211 + i = encodeVarintTypes(dAtA, i, uint64(n211)) + i-- dAtA[i] = 0x32 if len(m.BearerToken) > 0 { i -= len(m.BearerToken) @@ -34625,21 +35014,21 @@ func (m *SAMLSessionData) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x22 } - n211, err211 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.ExpireTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.ExpireTime):]) - if err211 != nil { - return 0, err211 - } - i -= n211 - i = encodeVarintTypes(dAtA, i, uint64(n211)) - i-- - dAtA[i] = 0x1a - n212, err212 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreateTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreateTime):]) + n212, err212 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.ExpireTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.ExpireTime):]) if err212 != nil { return 0, err212 } i -= n212 i = encodeVarintTypes(dAtA, i, uint64(n212)) i-- + dAtA[i] = 0x1a + n213, err213 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreateTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreateTime):]) + if err213 != nil { + return 0, err213 + } + i -= n213 + i = encodeVarintTypes(dAtA, i, uint64(n213)) + i-- dAtA[i] = 0x12 if len(m.ID) > 0 { i -= len(m.ID) @@ -34920,12 +35309,12 @@ func (m *RemoteClusterStatusV3) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n216, err216 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) - if err216 != nil { - return 0, err216 + n217, err217 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastHeartbeat, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastHeartbeat):]) + if err217 != nil { + return 0, err217 } - i -= n216 - i = encodeVarintTypes(dAtA, i, uint64(n216)) + i -= n217 + i = encodeVarintTypes(dAtA, i, uint64(n217)) i-- dAtA[i] = 0x12 if len(m.Connection) > 0 { @@ -37397,6 +37786,15 @@ func (m *GithubAuthRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.AuthenticatedUser) > 0 { + i -= len(m.AuthenticatedUser) + copy(dAtA[i:], m.AuthenticatedUser) + i = encodeVarintTypes(dAtA, i, uint64(len(m.AuthenticatedUser))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xba + } if m.TlsAttestationStatement != nil { { size, err := m.TlsAttestationStatement.MarshalToSizedBuffer(dAtA[:i]) @@ -37512,12 +37910,12 @@ func (m *GithubAuthRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x62 } if m.Expires != nil { - 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 + n256, err256 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) + if err256 != nil { + return 0, err256 } - i -= n255 - i = encodeVarintTypes(dAtA, i, uint64(n255)) + i -= n256 + i = encodeVarintTypes(dAtA, i, uint64(n256)) i-- dAtA[i] = 0x5a } @@ -37662,6 +38060,13 @@ func (m *CreateUserParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.UserID) > 0 { + i -= len(m.UserID) + copy(dAtA[i:], m.UserID) + i = encodeVarintTypes(dAtA, i, uint64(len(m.UserID))) + i-- + dAtA[i] = 0x4a + } if m.SessionTTL != 0 { i = encodeVarintTypes(dAtA, i, uint64(m.SessionTTL)) i-- @@ -38093,6 +38498,13 @@ func (m *GithubClaims) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.ID) > 0 { + i -= len(m.ID) + copy(dAtA[i:], m.ID) + i = encodeVarintTypes(dAtA, i, uint64(len(m.ID))) + i-- + dAtA[i] = 0x22 + } if len(m.Teams) > 0 { for iNdEx := len(m.Teams) - 1; iNdEx >= 0; iNdEx-- { i -= len(m.Teams[iNdEx]) @@ -38529,21 +38941,21 @@ func (m *LockSpecV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x2a } - n273, err273 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedAt):]) - if err273 != nil { - return 0, err273 + n274, err274 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedAt):]) + if err274 != nil { + return 0, err274 } - i -= n273 - i = encodeVarintTypes(dAtA, i, uint64(n273)) + i -= n274 + i = encodeVarintTypes(dAtA, i, uint64(n274)) i-- dAtA[i] = 0x22 if m.Expires != nil { - n274, err274 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) - if err274 != nil { - return 0, err274 + n275, err275 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) + if err275 != nil { + return 0, err275 } - i -= n274 - i = encodeVarintTypes(dAtA, i, uint64(n274)) + i -= n275 + i = encodeVarintTypes(dAtA, i, uint64(n275)) i-- dAtA[i] = 0x1a } @@ -39150,12 +39562,12 @@ func (m *RegisterUsingTokenRequest) MarshalToSizedBuffer(dAtA []byte) (int, erro dAtA[i] = 0x6a } if m.Expires != nil { - n283, err283 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) - if err283 != nil { - return 0, err283 + n284, err284 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.Expires):]) + if err284 != nil { + return 0, err284 } - i -= n283 - i = encodeVarintTypes(dAtA, i, uint64(n283)) + i -= n284 + i = encodeVarintTypes(dAtA, i, uint64(n284)) i-- dAtA[i] = 0x62 } @@ -39335,12 +39747,12 @@ func (m *RecoveryCodesSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n286, err286 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err286 != nil { - return 0, err286 + n287, err287 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err287 != nil { + return 0, err287 } - i -= n286 - i = encodeVarintTypes(dAtA, i, uint64(n286)) + i -= n287 + i = encodeVarintTypes(dAtA, i, uint64(n287)) i-- dAtA[i] = 0x12 if len(m.Codes) > 0 { @@ -39720,21 +40132,21 @@ func (m *SessionTrackerSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x32 } - n290, err290 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err290 != nil { - return 0, err290 - } - i -= n290 - i = encodeVarintTypes(dAtA, i, uint64(n290)) - i-- - dAtA[i] = 0x2a - n291, err291 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + n291, err291 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) if err291 != nil { return 0, err291 } i -= n291 i = encodeVarintTypes(dAtA, i, uint64(n291)) i-- + dAtA[i] = 0x2a + n292, err292 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err292 != nil { + return 0, err292 + } + i -= n292 + i = encodeVarintTypes(dAtA, i, uint64(n292)) + i-- dAtA[i] = 0x22 if m.State != 0 { i = encodeVarintTypes(dAtA, i, uint64(m.State)) @@ -39837,12 +40249,12 @@ func (m *Participant) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n292, err292 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastActive, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastActive):]) - if err292 != nil { - return 0, err292 + n293, err293 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastActive, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastActive):]) + if err293 != nil { + return 0, err293 } - i -= n292 - i = encodeVarintTypes(dAtA, i, uint64(n292)) + i -= n293 + i = encodeVarintTypes(dAtA, i, uint64(n293)) i-- dAtA[i] = 0x22 if len(m.Mode) > 0 { @@ -40554,12 +40966,12 @@ func (m *ClusterAlertSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n305, err305 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) - if err305 != nil { - return 0, err305 + n306, err306 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Created, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Created):]) + if err306 != nil { + return 0, err306 } - i -= n305 - i = encodeVarintTypes(dAtA, i, uint64(n305)) + i -= n306 + i = encodeVarintTypes(dAtA, i, uint64(n306)) i-- dAtA[i] = 0x1a if len(m.Message) > 0 { @@ -40689,12 +41101,12 @@ func (m *AlertAcknowledgement) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n306, err306 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err306 != nil { - return 0, err306 + n307, err307 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err307 != nil { + return 0, err307 } - i -= n306 - i = encodeVarintTypes(dAtA, i, uint64(n306)) + i -= n307 + i = encodeVarintTypes(dAtA, i, uint64(n307)) i-- dAtA[i] = 0x22 if len(m.Reason) > 0 { @@ -42363,12 +42775,12 @@ func (m *PluginStatusV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x32 } - n332, err332 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastSyncTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastSyncTime):]) - if err332 != nil { - return 0, err332 + n333, err333 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastSyncTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastSyncTime):]) + if err333 != nil { + return 0, err333 } - i -= n332 - i = encodeVarintTypes(dAtA, i, uint64(n332)) + i -= n333 + i = encodeVarintTypes(dAtA, i, uint64(n333)) i-- dAtA[i] = 0x1a if len(m.ErrorMessage) > 0 { @@ -42708,22 +43120,22 @@ func (m *PluginOktaStatusDetailsAppGroupSync) MarshalToSizedBuffer(dAtA []byte) dAtA[i] = 0x28 } if m.LastFailed != nil { - n341, err341 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):]) - if err341 != nil { - return 0, err341 + n342, err342 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):]) + if err342 != nil { + return 0, err342 } - i -= n341 - i = encodeVarintTypes(dAtA, i, uint64(n341)) + i -= n342 + i = encodeVarintTypes(dAtA, i, uint64(n342)) i-- dAtA[i] = 0x22 } if m.LastSuccessful != nil { - n342, err342 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):]) - if err342 != nil { - return 0, err342 + n343, err343 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):]) + if err343 != nil { + return 0, err343 } - i -= n342 - i = encodeVarintTypes(dAtA, i, uint64(n342)) + i -= n343 + i = encodeVarintTypes(dAtA, i, uint64(n343)) i-- dAtA[i] = 0x1a } @@ -42782,22 +43194,22 @@ func (m *PluginOktaStatusDetailsUsersSync) MarshalToSizedBuffer(dAtA []byte) (in dAtA[i] = 0x28 } if m.LastFailed != nil { - n343, err343 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):]) - if err343 != nil { - return 0, err343 + n344, err344 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):]) + if err344 != nil { + return 0, err344 } - i -= n343 - i = encodeVarintTypes(dAtA, i, uint64(n343)) + i -= n344 + i = encodeVarintTypes(dAtA, i, uint64(n344)) i-- dAtA[i] = 0x22 } if m.LastSuccessful != nil { - n344, err344 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):]) - if err344 != nil { - return 0, err344 + n345, err345 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):]) + if err345 != nil { + return 0, err345 } - i -= n344 - i = encodeVarintTypes(dAtA, i, uint64(n344)) + i -= n345 + i = encodeVarintTypes(dAtA, i, uint64(n345)) i-- dAtA[i] = 0x1a } @@ -42916,22 +43328,22 @@ func (m *PluginOktaStatusDetailsAccessListsSync) MarshalToSizedBuffer(dAtA []byt } } if m.LastFailed != nil { - n345, err345 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):]) - if err345 != nil { - return 0, err345 + n346, err346 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastFailed, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastFailed):]) + if err346 != nil { + return 0, err346 } - i -= n345 - i = encodeVarintTypes(dAtA, i, uint64(n345)) + i -= n346 + i = encodeVarintTypes(dAtA, i, uint64(n346)) i-- dAtA[i] = 0x22 } if m.LastSuccessful != nil { - n346, err346 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):]) - if err346 != nil { - return 0, err346 + n347, err347 := github_com_gogo_protobuf_types.StdTimeMarshalTo(*m.LastSuccessful, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(*m.LastSuccessful):]) + if err347 != nil { + return 0, err347 } - i -= n346 - i = encodeVarintTypes(dAtA, i, uint64(n346)) + i -= n347 + i = encodeVarintTypes(dAtA, i, uint64(n347)) i-- dAtA[i] = 0x1a } @@ -43097,12 +43509,12 @@ func (m *PluginOAuth2AccessTokenCredentials) MarshalToSizedBuffer(dAtA []byte) ( i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n351, err351 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) - if err351 != nil { - return 0, err351 + n352, err352 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Expires, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Expires):]) + if err352 != nil { + return 0, err352 } - i -= n351 - i = encodeVarintTypes(dAtA, i, uint64(n351)) + i -= n352 + i = encodeVarintTypes(dAtA, i, uint64(n352)) i-- dAtA[i] = 0x1a if len(m.RefreshToken) > 0 { @@ -43982,21 +44394,21 @@ func (m *ScheduledAgentUpgradeWindow) MarshalToSizedBuffer(dAtA []byte) (int, er i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } - n365, err365 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Stop, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Stop):]) - if err365 != nil { - return 0, err365 - } - i -= n365 - i = encodeVarintTypes(dAtA, i, uint64(n365)) - i-- - dAtA[i] = 0x12 - n366, err366 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Start, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Start):]) + n366, err366 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Stop, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Stop):]) if err366 != nil { return 0, err366 } i -= n366 i = encodeVarintTypes(dAtA, i, uint64(n366)) i-- + dAtA[i] = 0x12 + n367, err367 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.Start, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.Start):]) + if err367 != nil { + return 0, err367 + } + i -= n367 + i = encodeVarintTypes(dAtA, i, uint64(n367)) + i-- dAtA[i] = 0xa return len(dAtA) - i, nil } @@ -44422,12 +44834,12 @@ func (m *OktaAssignmentSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x30 } - n373, err373 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastTransition, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastTransition):]) - if err373 != nil { - return 0, err373 + n374, err374 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.LastTransition, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.LastTransition):]) + if err374 != nil { + return 0, err374 } - i -= n373 - i = encodeVarintTypes(dAtA, i, uint64(n373)) + i -= n374 + i = encodeVarintTypes(dAtA, i, uint64(n374)) i-- dAtA[i] = 0x2a if m.Status != 0 { @@ -44435,12 +44847,12 @@ func (m *OktaAssignmentSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x20 } - n374, err374 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CleanupTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CleanupTime):]) - if err374 != nil { - return 0, err374 + n375, err375 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CleanupTime, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CleanupTime):]) + if err375 != nil { + return 0, err375 } - i -= n374 - i = encodeVarintTypes(dAtA, i, uint64(n374)) + i -= n375 + i = encodeVarintTypes(dAtA, i, uint64(n375)) i-- dAtA[i] = 0x1a if len(m.Targets) > 0 { @@ -44631,6 +45043,27 @@ func (m *IntegrationSpecV1_AzureOIDC) MarshalToSizedBuffer(dAtA []byte) (int, er } return len(dAtA) - i, nil } +func (m *IntegrationSpecV1_GitHub) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *IntegrationSpecV1_GitHub) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.GitHub != nil { + { + size, err := m.GitHub.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + return len(dAtA) - i, nil +} func (m *AWSOIDCIntegrationSpecV1) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -44713,6 +45146,153 @@ func (m *AzureOIDCIntegrationSpecV1) MarshalToSizedBuffer(dAtA []byte) (int, err return len(dAtA) - i, nil } +func (m *GitHubIntegrationSpecV1) 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 *GitHubIntegrationSpecV1) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GitHubIntegrationSpecV1) 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.Proxy != nil { + { + size, err := m.Proxy.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Organization) > 0 { + i -= len(m.Organization) + copy(dAtA[i:], m.Organization) + i = encodeVarintTypes(dAtA, i, uint64(len(m.Organization))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *GitHubProxy) 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 *GitHubProxy) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GitHubProxy) 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.Connector != nil { + { + size, err := m.Connector.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.CertAuthorities) > 0 { + for iNdEx := len(m.CertAuthorities) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CertAuthorities[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTypes(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *GitHubProxyConnector) 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 *GitHubProxyConnector) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GitHubProxyConnector) 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.RedirectURL) > 0 { + i -= len(m.RedirectURL) + copy(dAtA[i:], m.RedirectURL) + i = encodeVarintTypes(dAtA, i, uint64(len(m.RedirectURL))) + i-- + dAtA[i] = 0x1a + } + if len(m.ClientSecret) > 0 { + i -= len(m.ClientSecret) + copy(dAtA[i:], m.ClientSecret) + i = encodeVarintTypes(dAtA, i, uint64(len(m.ClientSecret))) + i-- + dAtA[i] = 0x12 + } + if len(m.ClientID) > 0 { + i -= len(m.ClientID) + copy(dAtA[i:], m.ClientID) + i = encodeVarintTypes(dAtA, i, uint64(len(m.ClientID))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *HeadlessAuthentication) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -46990,6 +47570,10 @@ func (m *ServerSpecV2) Size() (n int) { l = m.CloudMetadata.Size() n += 1 + l + sovTypes(uint64(l)) } + if m.GitHub != nil { + l = m.GitHub.Size() + n += 1 + l + sovTypes(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -47048,6 +47632,26 @@ func (m *CloudMetadata) Size() (n int) { return n } +func (m *GitHubServerMetadata) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Organization) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.Integration) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *AppServerV3) Size() (n int) { if m == nil { return 0 @@ -50003,6 +50607,30 @@ func (m *RoleConditions) Size() (n int) { n += 2 + l + sovTypes(uint64(l)) } } + if len(m.GithubPermissions) > 0 { + for _, e := range m.GithubPermissions { + l = e.Size() + n += 2 + l + sovTypes(uint64(l)) + } + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *GitHubPermission) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Organizations) > 0 { + for _, s := range m.Organizations { + l = len(s) + n += 1 + l + sovTypes(uint64(l)) + } + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -50539,6 +51167,10 @@ func (m *ExternalIdentity) Size() (n int) { if l > 0 { n += 1 + l + sovTypes(uint64(l)) } + l = len(m.UserID) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -52602,6 +53234,10 @@ func (m *GithubAuthRequest) Size() (n int) { l = m.TlsAttestationStatement.Size() n += 2 + l + sovTypes(uint64(l)) } + l = len(m.AuthenticatedUser) + if l > 0 { + n += 2 + l + sovTypes(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -52673,6 +53309,10 @@ func (m *CreateUserParams) Size() (n int) { if m.SessionTTL != 0 { n += 1 + sovTypes(uint64(m.SessionTTL)) } + l = len(m.UserID) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -52820,6 +53460,10 @@ func (m *GithubClaims) Size() (n int) { n += 1 + l + sovTypes(uint64(l)) } } + l = len(m.ID) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -55822,6 +56466,18 @@ func (m *IntegrationSpecV1_AzureOIDC) Size() (n int) { } return n } +func (m *IntegrationSpecV1_GitHub) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.GitHub != nil { + l = m.GitHub.Size() + n += 1 + l + sovTypes(uint64(l)) + } + return n +} func (m *AWSOIDCIntegrationSpecV1) Size() (n int) { if m == nil { return 0 @@ -55862,6 +56518,72 @@ func (m *AzureOIDCIntegrationSpecV1) Size() (n int) { return n } +func (m *GitHubIntegrationSpecV1) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Organization) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.Proxy != nil { + l = m.Proxy.Size() + n += 1 + l + sovTypes(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *GitHubProxy) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.CertAuthorities) > 0 { + for _, e := range m.CertAuthorities { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } + if m.Connector != nil { + l = m.Connector.Size() + n += 1 + l + sovTypes(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + +func (m *GitHubProxyConnector) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ClientID) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.ClientSecret) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + l = len(m.RedirectURL) + if l > 0 { + n += 1 + l + sovTypes(uint64(l)) + } + if m.XXX_unrecognized != nil { + n += len(m.XXX_unrecognized) + } + return n +} + func (m *HeadlessAuthentication) Size() (n int) { if m == nil { return 0 @@ -63904,6 +64626,42 @@ func (m *ServerSpecV2) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GitHub", 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.GitHub == nil { + m.GitHub = &GitHubServerMetadata{} + } + if err := m.GitHub.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -64256,6 +65014,121 @@ func (m *CloudMetadata) Unmarshal(dAtA []byte) error { } return nil } +func (m *GitHubServerMetadata) 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 ErrIntOverflowTypes + } + 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: GitHubServerMetadata: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GitHubServerMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Organization", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Organization = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Integration", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Integration = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + 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 *AppServerV3) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -83622,6 +84495,40 @@ func (m *RoleConditions) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 42: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GithubPermissions", 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 + } + m.GithubPermissions = append(m.GithubPermissions, GitHubPermission{}) + if err := m.GithubPermissions[len(m.GithubPermissions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -83644,7 +84551,7 @@ func (m *RoleConditions) Unmarshal(dAtA []byte) error { } return nil } -func (m *SPIFFERoleCondition) Unmarshal(dAtA []byte) error { +func (m *GitHubPermission) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -83667,15 +84574,15 @@ func (m *SPIFFERoleCondition) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SPIFFERoleCondition: wiretype end group for non-group") + return fmt.Errorf("proto: GitHubPermission: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SPIFFERoleCondition: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GitHubPermission: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Organizations", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -83703,43 +84610,62 @@ func (m *SPIFFERoleCondition) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Path = string(dAtA[iNdEx:postIndex]) + m.Organizations = append(m.Organizations, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DNSSANs", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err } - intStringLen := int(stringLen) - if intStringLen < 0 { + if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF } - if postIndex > l { + m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SPIFFERoleCondition) 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 ErrIntOverflowTypes + } + if iNdEx >= l { return io.ErrUnexpectedEOF } - m.DNSSANs = append(m.DNSSANs, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 3: + 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: SPIFFERoleCondition: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SPIFFERoleCondition: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IPSANs", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -83767,62 +84693,11 @@ func (m *SPIFFERoleCondition) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.IPSANs = append(m.IPSANs, string(dAtA[iNdEx:postIndex])) + m.Path = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTypes - } - 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 *DatabasePermission) 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 ErrIntOverflowTypes - } - 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: DatabasePermission: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DatabasePermission: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Permissions", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field DNSSANs", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -83850,13 +84725,13 @@ func (m *DatabasePermission) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Permissions = append(m.Permissions, string(dAtA[iNdEx:postIndex])) + m.DNSSANs = append(m.DNSSANs, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 2: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Match", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IPSANs", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -83866,24 +84741,23 @@ func (m *DatabasePermission) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Match.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.IPSANs = append(m.IPSANs, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -83907,7 +84781,7 @@ func (m *DatabasePermission) Unmarshal(dAtA []byte) error { } return nil } -func (m *KubernetesResource) Unmarshal(dAtA []byte) error { +func (m *DatabasePermission) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -83930,15 +84804,15 @@ func (m *KubernetesResource) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: KubernetesResource: wiretype end group for non-group") + return fmt.Errorf("proto: DatabasePermission: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: KubernetesResource: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: DatabasePermission: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Permissions", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -83966,45 +84840,13 @@ func (m *KubernetesResource) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Kind = string(dAtA[iNdEx:postIndex]) + m.Permissions = append(m.Permissions, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Namespace = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Match", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -84014,55 +84856,24 @@ func (m *KubernetesResource) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Verbs", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF + if err := m.Match.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.Verbs = append(m.Verbs, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -84086,7 +84897,7 @@ func (m *KubernetesResource) Unmarshal(dAtA []byte) error { } return nil } -func (m *SessionRequirePolicy) Unmarshal(dAtA []byte) error { +func (m *KubernetesResource) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -84109,15 +84920,15 @@ func (m *SessionRequirePolicy) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SessionRequirePolicy: wiretype end group for non-group") + return fmt.Errorf("proto: KubernetesResource: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SessionRequirePolicy: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: KubernetesResource: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Kind", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -84145,11 +84956,11 @@ func (m *SessionRequirePolicy) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) + m.Kind = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Namespace", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -84177,11 +84988,11 @@ func (m *SessionRequirePolicy) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Filter = string(dAtA[iNdEx:postIndex]) + m.Namespace = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Kinds", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -84209,62 +85020,11 @@ func (m *SessionRequirePolicy) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Kinds = append(m.Kinds, string(dAtA[iNdEx:postIndex])) + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Count", wireType) - } - m.Count = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Count |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Modes", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Modes = append(m.Modes, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field OnLeave", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Verbs", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -84292,7 +85052,7 @@ func (m *SessionRequirePolicy) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.OnLeave = string(dAtA[iNdEx:postIndex]) + m.Verbs = append(m.Verbs, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -84316,7 +85076,7 @@ func (m *SessionRequirePolicy) Unmarshal(dAtA []byte) error { } return nil } -func (m *SessionJoinPolicy) Unmarshal(dAtA []byte) error { +func (m *SessionRequirePolicy) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -84339,10 +85099,10 @@ func (m *SessionJoinPolicy) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: SessionJoinPolicy: wiretype end group for non-group") + return fmt.Errorf("proto: SessionRequirePolicy: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: SessionJoinPolicy: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SessionRequirePolicy: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -84379,7 +85139,7 @@ func (m *SessionJoinPolicy) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -84407,7 +85167,7 @@ func (m *SessionJoinPolicy) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) + m.Filter = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { @@ -84442,6 +85202,25 @@ func (m *SessionJoinPolicy) Unmarshal(dAtA []byte) error { m.Kinds = append(m.Kinds, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Count", wireType) + } + m.Count = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Count |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Modes", wireType) } @@ -84473,6 +85252,38 @@ func (m *SessionJoinPolicy) Unmarshal(dAtA []byte) error { } m.Modes = append(m.Modes, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OnLeave", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OnLeave = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -84495,7 +85306,7 @@ func (m *SessionJoinPolicy) Unmarshal(dAtA []byte) error { } return nil } -func (m *AccessRequestConditions) Unmarshal(dAtA []byte) error { +func (m *SessionJoinPolicy) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -84518,15 +85329,15 @@ func (m *AccessRequestConditions) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AccessRequestConditions: wiretype end group for non-group") + return fmt.Errorf("proto: SessionJoinPolicy: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AccessRequestConditions: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: SessionJoinPolicy: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -84554,13 +85365,13 @@ func (m *AccessRequestConditions) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) + m.Name = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClaimsToRoles", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -84570,96 +85381,27 @@ func (m *AccessRequestConditions) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - m.ClaimsToRoles = append(m.ClaimsToRoles, ClaimMapping{}) - if err := m.ClaimsToRoles[len(m.ClaimsToRoles)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Annotations", 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 err := m.Annotations.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Thresholds", 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 - } - m.Thresholds = append(m.Thresholds, AccessReviewThreshold{}) - if err := m.Thresholds[len(m.Thresholds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SuggestedReviewers", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Kinds", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -84687,11 +85429,11 @@ func (m *AccessRequestConditions) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SuggestedReviewers = append(m.SuggestedReviewers, string(dAtA[iNdEx:postIndex])) + m.Kinds = append(m.Kinds, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 6: + case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SearchAsRoles", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Modes", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -84719,27 +85461,8 @@ func (m *AccessRequestConditions) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SearchAsRoles = append(m.SearchAsRoles, string(dAtA[iNdEx:postIndex])) + m.Modes = append(m.Modes, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 7: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field MaxDuration", wireType) - } - m.MaxDuration = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.MaxDuration |= Duration(b&0x7F) << shift - if b < 0x80 { - break - } - } default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -84762,7 +85485,7 @@ func (m *AccessRequestConditions) Unmarshal(dAtA []byte) error { } return nil } -func (m *AccessReviewConditions) Unmarshal(dAtA []byte) error { +func (m *AccessRequestConditions) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -84785,10 +85508,10 @@ func (m *AccessReviewConditions) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AccessReviewConditions: wiretype end group for non-group") + return fmt.Errorf("proto: AccessRequestConditions: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AccessReviewConditions: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AccessRequestConditions: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -84859,7 +85582,74 @@ func (m *AccessReviewConditions) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Where", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Annotations", 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 err := m.Annotations.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Thresholds", 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 + } + m.Thresholds = append(m.Thresholds, AccessReviewThreshold{}) + if err := m.Thresholds[len(m.Thresholds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SuggestedReviewers", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -84887,11 +85677,11 @@ func (m *AccessReviewConditions) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Where = string(dAtA[iNdEx:postIndex]) + m.SuggestedReviewers = append(m.SuggestedReviewers, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - case 4: + case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field PreviewAsRoles", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SearchAsRoles", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -84919,8 +85709,27 @@ func (m *AccessReviewConditions) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.PreviewAsRoles = append(m.PreviewAsRoles, string(dAtA[iNdEx:postIndex])) + m.SearchAsRoles = append(m.SearchAsRoles, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxDuration", wireType) + } + m.MaxDuration = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MaxDuration |= Duration(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -84943,7 +85752,7 @@ func (m *AccessReviewConditions) Unmarshal(dAtA []byte) error { } return nil } -func (m *AccessRequestAllowedPromotion) Unmarshal(dAtA []byte) error { +func (m *AccessReviewConditions) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -84966,15 +85775,15 @@ func (m *AccessRequestAllowedPromotion) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AccessRequestAllowedPromotion: wiretype end group for non-group") + return fmt.Errorf("proto: AccessReviewConditions: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AccessRequestAllowedPromotion: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AccessReviewConditions: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AccessListName", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -85002,7 +85811,105 @@ func (m *AccessRequestAllowedPromotion) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.AccessListName = string(dAtA[iNdEx:postIndex]) + m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClaimsToRoles", 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 + } + m.ClaimsToRoles = append(m.ClaimsToRoles, ClaimMapping{}) + if err := m.ClaimsToRoles[len(m.ClaimsToRoles)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Where", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Where = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreviewAsRoles", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PreviewAsRoles = append(m.PreviewAsRoles, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -85026,7 +85933,7 @@ func (m *AccessRequestAllowedPromotion) Unmarshal(dAtA []byte) error { } return nil } -func (m *AccessRequestAllowedPromotions) Unmarshal(dAtA []byte) error { +func (m *AccessRequestAllowedPromotion) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -85049,17 +85956,17 @@ func (m *AccessRequestAllowedPromotions) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AccessRequestAllowedPromotions: wiretype end group for non-group") + return fmt.Errorf("proto: AccessRequestAllowedPromotion: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AccessRequestAllowedPromotions: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AccessRequestAllowedPromotion: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Promotions", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AccessListName", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -85069,25 +85976,23 @@ func (m *AccessRequestAllowedPromotions) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - m.Promotions = append(m.Promotions, &AccessRequestAllowedPromotion{}) - if err := m.Promotions[len(m.Promotions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.AccessListName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -85111,7 +86016,7 @@ func (m *AccessRequestAllowedPromotions) Unmarshal(dAtA []byte) error { } return nil } -func (m *ClaimMapping) Unmarshal(dAtA []byte) error { +func (m *AccessRequestAllowedPromotions) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -85134,49 +86039,17 @@ func (m *ClaimMapping) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ClaimMapping: wiretype end group for non-group") + return fmt.Errorf("proto: AccessRequestAllowedPromotions: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ClaimMapping: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AccessRequestAllowedPromotions: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Claim", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Claim = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Promotions", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -85186,55 +86059,25 @@ func (m *ClaimMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - m.Value = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF + m.Promotions = append(m.Promotions, &AccessRequestAllowedPromotion{}) + if err := m.Promotions[len(m.Promotions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err } - m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -85258,7 +86101,7 @@ func (m *ClaimMapping) Unmarshal(dAtA []byte) error { } return nil } -func (m *TraitMapping) Unmarshal(dAtA []byte) error { +func (m *ClaimMapping) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -85281,15 +86124,15 @@ func (m *TraitMapping) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: TraitMapping: wiretype end group for non-group") + return fmt.Errorf("proto: ClaimMapping: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: TraitMapping: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ClaimMapping: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Trait", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Claim", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -85317,7 +86160,7 @@ func (m *TraitMapping) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Trait = string(dAtA[iNdEx:postIndex]) + m.Claim = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { @@ -85405,7 +86248,7 @@ func (m *TraitMapping) Unmarshal(dAtA []byte) error { } return nil } -func (m *Rule) Unmarshal(dAtA []byte) error { +func (m *TraitMapping) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -85428,15 +86271,15 @@ func (m *Rule) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Rule: wiretype end group for non-group") + return fmt.Errorf("proto: TraitMapping: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Rule: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: TraitMapping: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Trait", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -85464,11 +86307,11 @@ func (m *Rule) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Resources = append(m.Resources, string(dAtA[iNdEx:postIndex])) + m.Trait = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Verbs", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -85496,43 +86339,11 @@ func (m *Rule) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Verbs = append(m.Verbs, string(dAtA[iNdEx:postIndex])) + m.Value = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Where", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Where = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Actions", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Roles", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -85560,7 +86371,186 @@ func (m *Rule) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Actions = append(m.Actions, string(dAtA[iNdEx:postIndex])) + m.Roles = append(m.Roles, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + 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 *Rule) 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 ErrIntOverflowTypes + } + 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: Rule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Rule: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Resources = append(m.Resources, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Verbs", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Verbs = append(m.Verbs, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Where", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Where = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Actions", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Actions = append(m.Actions, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex default: iNdEx = preIndex @@ -86711,6 +87701,38 @@ func (m *ExternalIdentity) Unmarshal(dAtA []byte) error { } m.SAMLSingleLogoutURL = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UserID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -100730,60 +101752,92 @@ func (m *GithubAuthRequest) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTypes - } - 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 *SSOWarnings) 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 ErrIntOverflowTypes - } - 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: SSOWarnings: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: SSOWarnings: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 23: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AuthenticatedUser", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AuthenticatedUser = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + 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 *SSOWarnings) 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 ErrIntOverflowTypes + } + 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: SSOWarnings: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SSOWarnings: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -101140,6 +102194,38 @@ func (m *CreateUserParams) Unmarshal(dAtA []byte) error { break } } + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UserID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -102165,156 +103251,188 @@ func (m *GithubClaims) Unmarshal(dAtA []byte) error { } m.Teams = append(m.Teams, string(dAtA[iNdEx:postIndex])) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTypes(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTypes - } - 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 *TeamMapping) 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 ErrIntOverflowTypes - } - 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: TeamMapping: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: TeamMapping: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Organization", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Organization = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Team", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Team = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Logins", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Logins = append(m.Logins, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field KubeGroups", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ID", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ID = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + 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 *TeamMapping) 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 ErrIntOverflowTypes + } + 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: TeamMapping: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TeamMapping: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Organization", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Organization = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Team", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Team = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Logins", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Logins = append(m.Logins, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KubeGroups", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -119204,47 +120322,456 @@ func (m *OktaAssignmentSpecV1) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: OktaAssignmentSpecV1: wiretype end group for non-group") + return fmt.Errorf("proto: OktaAssignmentSpecV1: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: OktaAssignmentSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.User = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Targets", 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 + } + m.Targets = append(m.Targets, &OktaAssignmentTargetV1{}) + if err := m.Targets[len(m.Targets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CleanupTime", 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 err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.CleanupTime, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + m.Status = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Status |= OktaAssignmentSpecV1_OktaAssignmentStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastTransition", 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 err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.LastTransition, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Finalized", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Finalized = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + 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 *OktaAssignmentTargetV1) 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 ErrIntOverflowTypes + } + 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: OktaAssignmentTargetV1: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: OktaAssignmentTargetV1: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + m.Type = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Type |= OktaAssignmentTargetV1_OktaAssignmentTargetType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Id = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + 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 *IntegrationV1) 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 ErrIntOverflowTypes + } + 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: IntegrationV1: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IntegrationV1: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResourceHeader", 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 err := m.ResourceHeader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", 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 err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTypes(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTypes + } + 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 *IntegrationSpecV1) 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 ErrIntOverflowTypes + } + 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: IntegrationSpecV1: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: OktaAssignmentSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: IntegrationSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - 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 ErrInvalidLengthTypes - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTypes - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.User = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Targets", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AWSOIDC", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -119271,14 +120798,15 @@ func (m *OktaAssignmentSpecV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Targets = append(m.Targets, &OktaAssignmentTargetV1{}) - if err := m.Targets[len(m.Targets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + v := &AWSOIDCIntegrationSpecV1{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } + m.SubKindSpec = &IntegrationSpecV1_AWSOIDC{v} iNdEx = postIndex - case 3: + case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CleanupTime", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AzureOIDC", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -119305,32 +120833,15 @@ func (m *OktaAssignmentSpecV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.CleanupTime, dAtA[iNdEx:postIndex]); err != nil { + v := &AzureOIDCIntegrationSpecV1{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } + m.SubKindSpec = &IntegrationSpecV1_AzureOIDC{v} iNdEx = postIndex - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) - } - m.Status = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Status |= OktaAssignmentSpecV1_OktaAssignmentStatus(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 5: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LastTransition", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field GitHub", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -119357,30 +120868,12 @@ func (m *OktaAssignmentSpecV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := github_com_gogo_protobuf_types.StdTimeUnmarshal(&m.LastTransition, dAtA[iNdEx:postIndex]); err != nil { + v := &GitHubIntegrationSpecV1{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } + m.SubKindSpec = &IntegrationSpecV1_GitHub{v} iNdEx = postIndex - case 6: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Finalized", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTypes - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Finalized = bool(v != 0) default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -119403,7 +120896,7 @@ func (m *OktaAssignmentSpecV1) Unmarshal(dAtA []byte) error { } return nil } -func (m *OktaAssignmentTargetV1) Unmarshal(dAtA []byte) error { +func (m *AWSOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -119426,17 +120919,17 @@ func (m *OktaAssignmentTargetV1) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: OktaAssignmentTargetV1: wiretype end group for non-group") + return fmt.Errorf("proto: AWSOIDCIntegrationSpecV1: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: OktaAssignmentTargetV1: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AWSOIDCIntegrationSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RoleARN", wireType) } - m.Type = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -119446,14 +120939,27 @@ func (m *OktaAssignmentTargetV1) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.Type |= OktaAssignmentTargetV1_OktaAssignmentTargetType(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RoleARN = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field IssuerS3URI", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -119481,7 +120987,7 @@ func (m *OktaAssignmentTargetV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Id = string(dAtA[iNdEx:postIndex]) + m.IssuerS3URI = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -119505,7 +121011,7 @@ func (m *OktaAssignmentTargetV1) Unmarshal(dAtA []byte) error { } return nil } -func (m *IntegrationV1) Unmarshal(dAtA []byte) error { +func (m *AzureOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -119528,17 +121034,17 @@ func (m *IntegrationV1) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: IntegrationV1: wiretype end group for non-group") + return fmt.Errorf("proto: AzureOIDCIntegrationSpecV1: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: IntegrationV1: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AzureOIDCIntegrationSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ResourceHeader", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TenantID", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -119548,30 +121054,29 @@ func (m *IntegrationV1) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.ResourceHeader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.TenantID = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClientID", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -119581,24 +121086,23 @@ func (m *IntegrationV1) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.ClientID = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex @@ -119622,7 +121126,7 @@ func (m *IntegrationV1) Unmarshal(dAtA []byte) error { } return nil } -func (m *IntegrationSpecV1) Unmarshal(dAtA []byte) error { +func (m *GitHubIntegrationSpecV1) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -119645,17 +121149,17 @@ func (m *IntegrationSpecV1) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: IntegrationSpecV1: wiretype end group for non-group") + return fmt.Errorf("proto: GitHubIntegrationSpecV1: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: IntegrationSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GitHubIntegrationSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AWSOIDC", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Organization", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -119665,30 +121169,27 @@ func (m *IntegrationSpecV1) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - v := &AWSOIDCIntegrationSpecV1{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - m.SubKindSpec = &IntegrationSpecV1_AWSOIDC{v} + m.Organization = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AzureOIDC", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Proxy", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -119715,11 +121216,12 @@ func (m *IntegrationSpecV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - v := &AzureOIDCIntegrationSpecV1{} - if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if m.Proxy == nil { + m.Proxy = &GitHubProxy{} + } + if err := m.Proxy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } - m.SubKindSpec = &IntegrationSpecV1_AzureOIDC{v} iNdEx = postIndex default: iNdEx = preIndex @@ -119743,7 +121245,7 @@ func (m *IntegrationSpecV1) Unmarshal(dAtA []byte) error { } return nil } -func (m *AWSOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { +func (m *GitHubProxy) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -119766,17 +121268,17 @@ func (m *AWSOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AWSOIDCIntegrationSpecV1: wiretype end group for non-group") + return fmt.Errorf("proto: GitHubProxy: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AWSOIDCIntegrationSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GitHubProxy: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field RoleARN", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CertAuthorities", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -119786,29 +121288,31 @@ func (m *AWSOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - m.RoleARN = string(dAtA[iNdEx:postIndex]) + m.CertAuthorities = append(m.CertAuthorities, &SSHKeyPair{}) + if err := m.CertAuthorities[len(m.CertAuthorities)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IssuerS3URI", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Connector", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTypes @@ -119818,23 +121322,27 @@ func (m *AWSOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthTypes } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthTypes } if postIndex > l { return io.ErrUnexpectedEOF } - m.IssuerS3URI = string(dAtA[iNdEx:postIndex]) + if m.Connector == nil { + m.Connector = &GitHubProxyConnector{} + } + if err := m.Connector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex default: iNdEx = preIndex @@ -119858,7 +121366,7 @@ func (m *AWSOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { } return nil } -func (m *AzureOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { +func (m *GitHubProxyConnector) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -119881,15 +121389,15 @@ func (m *AzureOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AzureOIDCIntegrationSpecV1: wiretype end group for non-group") + return fmt.Errorf("proto: GitHubProxyConnector: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AzureOIDCIntegrationSpecV1: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: GitHubProxyConnector: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TenantID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClientID", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -119917,11 +121425,11 @@ func (m *AzureOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.TenantID = string(dAtA[iNdEx:postIndex]) + m.ClientID = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ClientID", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ClientSecret", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -119949,7 +121457,39 @@ func (m *AzureOIDCIntegrationSpecV1) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.ClientID = string(dAtA[iNdEx:postIndex]) + m.ClientSecret = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RedirectURL", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + 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 ErrInvalidLengthTypes + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTypes + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RedirectURL = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex default: iNdEx = preIndex diff --git a/api/types/user.go b/api/types/user.go index 1af4c0717a30e..114e0d06cb54e 100644 --- a/api/types/user.go +++ b/api/types/user.go @@ -61,6 +61,8 @@ type User interface { GetSAMLIdentities() []ExternalIdentity // GetGithubIdentities returns a list of connected Github identities GetGithubIdentities() []ExternalIdentity + // SetGithubIdentities updates the list of connected GitHub identities + SetGithubIdentities([]ExternalIdentity) // Get local authentication secrets (may be nil). GetLocalAuth() *LocalAuthSecrets // Set local authentication secrets (use nil to delete). @@ -121,6 +123,8 @@ type User interface { SetHostUserUID(uid string) // SetHostUserGID sets the GID for host users SetHostUserGID(gid string) + // SetGitHubOrganizations sets the GitHub organizations. + SetGitHubOrganizations([]string) // GetCreatedBy returns information about user GetCreatedBy() CreatedBy // SetCreatedBy sets created by information @@ -150,6 +154,10 @@ type User interface { // who were created before this property was introduced and didn't perform any // password-related activity since then. See RFD 0159 for details. SetPasswordState(PasswordState) + // GetGitHubUserID finds a GitHub user ID from connected identities. + GetGitHubUserID() string + // GetGitHubUsername finds a GitHub username from connected identities. + GetGitHubUsername() string } // NewUser creates new empty user @@ -408,6 +416,11 @@ func (u *UserV2) SetHostUserGID(uid string) { u.setTrait(constants.TraitHostUserGID, []string{uid}) } +// SetGitHubOrganizations sets the GitHub organizations. +func (u *UserV2) SetGitHubOrganizations(orgs []string) { + u.setTrait(constants.TraitGitHubOrganizations, orgs) +} + // GetStatus returns login status of the user func (u *UserV2) GetStatus() LoginStatus { return u.Spec.Status @@ -428,6 +441,11 @@ func (u *UserV2) GetGithubIdentities() []ExternalIdentity { return u.Spec.GithubIdentities } +// SetGithubIdentities updates the list of connected GitHub identities +func (u *UserV2) SetGithubIdentities(identities []ExternalIdentity) { + u.Spec.GithubIdentities = identities +} + // GetLocalAuth gets local authentication secrets (may be nil). func (u *UserV2) GetLocalAuth() *LocalAuthSecrets { return u.Spec.LocalAuth @@ -557,6 +575,23 @@ func (u *UserV2) SetPasswordState(state PasswordState) { u.Status.PasswordState = state } +func (u *UserV2) GetGitHubUserID() string { + for _, github := range u.GetGithubIdentities() { + if github.UserID != "" { + return github.UserID + } + } + return "" +} +func (u *UserV2) GetGitHubUsername() string { + for _, github := range u.GetGithubIdentities() { + if github.Username != "" { + return github.Username + } + } + return "" +} + // IsEmpty returns true if there's no info about who created this user func (c CreatedBy) IsEmpty() bool { return c.User.Name == "" diff --git a/api/types/userloginstate/convert/v1/user_login_state.go b/api/types/userloginstate/convert/v1/user_login_state.go index 4bf45f5b9ec72..2525bf4fa9d47 100644 --- a/api/types/userloginstate/convert/v1/user_login_state.go +++ b/api/types/userloginstate/convert/v1/user_login_state.go @@ -32,14 +32,19 @@ func FromProto(msg *userloginstatev1.UserLoginState) (*userloginstate.UserLoginS return nil, trace.BadParameter("spec is missing") } - uls, err := userloginstate.New(headerv1.FromMetadataProto(msg.Header.Metadata), userloginstate.Spec{ + spec := userloginstate.Spec{ OriginalRoles: msg.Spec.GetOriginalRoles(), OriginalTraits: traitv1.FromProto(msg.Spec.OriginalTraits), Roles: msg.Spec.Roles, Traits: traitv1.FromProto(msg.Spec.Traits), UserType: types.UserType(msg.Spec.UserType), - }) + } + if msg.Spec.Github != nil { + spec.GitHubUserID = msg.Spec.Github.Id + spec.GitHubUsername = msg.Spec.Github.Username + } + uls, err := userloginstate.New(headerv1.FromMetadataProto(msg.Header.Metadata), spec) return uls, trace.Wrap(err) } @@ -53,6 +58,10 @@ func ToProto(uls *userloginstate.UserLoginState) *userloginstatev1.UserLoginStat Roles: uls.GetRoles(), Traits: traitv1.ToProto(uls.GetTraits()), UserType: string(uls.Spec.UserType), + Github: &userloginstatev1.GitHubIdentity{ + Id: uls.GetGitHubUserID(), + Username: uls.GetGitHubUsername(), + }, }, } } diff --git a/api/types/userloginstate/user_login_state.go b/api/types/userloginstate/user_login_state.go index c704856eb392e..2679e609c1283 100644 --- a/api/types/userloginstate/user_login_state.go +++ b/api/types/userloginstate/user_login_state.go @@ -55,6 +55,13 @@ type Spec struct { // UserType is the type of user that this state represents. UserType types.UserType `json:"user_type" yaml:"user_type"` + + // GitHubUserID indicates the GitHub user ID identified by the GitHub + // identity connector. + GitHubUserID string + // GitHubUsername indicates the GitHub username identified by the GitHub + // identity connector. + GitHubUsername string } // New creates a new user login state. @@ -123,3 +130,16 @@ func (u *UserLoginState) IsBot() bool { func (u *UserLoginState) GetMetadata() types.Metadata { return legacy.FromHeaderMetadata(u.Metadata) } + +func (u *UserLoginState) GetGitHubUserID() string { + return u.Spec.GitHubUserID +} +func (u *UserLoginState) SetGitHubUserID(githubUserID string) { + u.Spec.GitHubUserID = githubUserID +} +func (u *UserLoginState) GetGitHubUsername() string { + return u.Spec.GitHubUsername +} +func (u *UserLoginState) SetGitHubUsername(githubUsername string) { + u.Spec.GitHubUsername = githubUsername +} diff --git a/api/utils/prompt/context_reader.go b/api/utils/prompt/context_reader.go index 0cb5c47192eef..1d94ff73794a8 100644 --- a/api/utils/prompt/context_reader.go +++ b/api/utils/prompt/context_reader.go @@ -189,6 +189,10 @@ func (cr *ContextReader) IsTerminal() bool { return cr.term.IsTerminal(cr.fd) } +func (cr *ContextReader) HandleInterrupt() { + cr.handleInterrupt() +} + // handleInterrupt restores terminal state on interrupts. // Called only on global ContextReaders, such as Stdin. func (cr *ContextReader) handleInterrupt() { diff --git a/api/version.go b/api/version.go index 17bbdd36f118c..74269a2a45921 100644 --- a/api/version.go +++ b/api/version.go @@ -3,6 +3,6 @@ package api import "github.com/coreos/go-semver/semver" -const Version = "17.0.0-dev" +const Version = "17.0.0-dev.githubproxy.2" var SemVersion = semver.New(Version) diff --git a/constants.go b/constants.go index bf003bd18741f..2ba7730f5d9e5 100644 --- a/constants.go +++ b/constants.go @@ -507,6 +507,12 @@ const ( // Machine ID bot instance, if any. This identifier is persisted through // certificate renewals. CertExtensionBotInstanceID = "bot-instance-id@goteleport.com" + // CertExtensionGitHubUserID indicates the GitHub user ID identified by the + // GitHub identity connector. + CertExtensionGitHubUserID = "github-id@goteleport.com" + // CertExtensionGitHubUsername indicates the GitHub username identified by + // the GitHub identity connector. + CertExtensionGitHubUsername = "github-login@goteleport.com" // CertCriticalOptionSourceAddress is a critical option that defines IP addresses (in CIDR notation) // from which this certificate is accepted for authentication. @@ -624,6 +630,8 @@ const ( // TraitInternalJWTVariable is the variable used to store JWT token for // app sessions. TraitInternalJWTVariable = "{{internal.jwt}}" + + TraitInternalGitHubOrgs = "{{internal.github_orgs}}" ) // SCP is Secure Copy. diff --git a/e b/e index e2fb89d846b4b..04b2ef6daa546 160000 --- a/e +++ b/e @@ -1 +1 @@ -Subproject commit e2fb89d846b4bd885775e2785e3e1fb972de6697 +Subproject commit 04b2ef6daa546175d44a8959d1a60c5dfdfb4e91 diff --git a/examples/chart/access/discord/Chart.yaml b/examples/chart/access/discord/Chart.yaml index 345bb8c893c0b..e4d015342a7d8 100644 --- a/examples/chart/access/discord/Chart.yaml +++ b/examples/chart/access/discord/Chart.yaml @@ -1,4 +1,4 @@ -.version: &version "17.0.0-dev" +.version: &version "17.0.0-dev.githubproxy.2" apiVersion: v2 name: teleport-plugin-discord diff --git a/examples/chart/access/discord/tests/__snapshot__/configmap_test.yaml.snap b/examples/chart/access/discord/tests/__snapshot__/configmap_test.yaml.snap index d2ca5c3a439b3..c4c4b75db1bf8 100644 --- a/examples/chart/access/discord/tests/__snapshot__/configmap_test.yaml.snap +++ b/examples/chart/access/discord/tests/__snapshot__/configmap_test.yaml.snap @@ -24,6 +24,6 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-discord - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-discord-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-discord-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-discord diff --git a/examples/chart/access/discord/tests/__snapshot__/deployment_test.yaml.snap b/examples/chart/access/discord/tests/__snapshot__/deployment_test.yaml.snap index 208c6936060fc..a219eb71aa233 100644 --- a/examples/chart/access/discord/tests/__snapshot__/deployment_test.yaml.snap +++ b/examples/chart/access/discord/tests/__snapshot__/deployment_test.yaml.snap @@ -7,8 +7,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-discord - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-discord-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-discord-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-discord spec: replicas: 1 @@ -22,8 +22,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-discord - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-discord-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-discord-17.0.0-dev.githubproxy.2 spec: containers: - command: diff --git a/examples/chart/access/email/Chart.yaml b/examples/chart/access/email/Chart.yaml index f589b552357d2..654b543785cf2 100644 --- a/examples/chart/access/email/Chart.yaml +++ b/examples/chart/access/email/Chart.yaml @@ -1,4 +1,4 @@ -.version: &version "17.0.0-dev" +.version: &version "17.0.0-dev.githubproxy.2" apiVersion: v2 name: teleport-plugin-email diff --git a/examples/chart/access/email/tests/__snapshot__/configmap_test.yaml.snap b/examples/chart/access/email/tests/__snapshot__/configmap_test.yaml.snap index 07109f0b0b1f9..66d903a69c5a0 100644 --- a/examples/chart/access/email/tests/__snapshot__/configmap_test.yaml.snap +++ b/examples/chart/access/email/tests/__snapshot__/configmap_test.yaml.snap @@ -26,8 +26,8 @@ should match the snapshot (mailgun on): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-email should match the snapshot (smtp on): 1: | @@ -59,8 +59,8 @@ should match the snapshot (smtp on): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-email should match the snapshot (smtp on, no starttls): 1: | @@ -92,8 +92,8 @@ should match the snapshot (smtp on, no starttls): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-email should match the snapshot (smtp on, password file): 1: | @@ -125,8 +125,8 @@ should match the snapshot (smtp on, password file): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-email should match the snapshot (smtp on, roleToRecipients set): 1: | @@ -161,8 +161,8 @@ should match the snapshot (smtp on, roleToRecipients set): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-email should match the snapshot (smtp on, starttls disabled): 1: | @@ -194,6 +194,6 @@ should match the snapshot (smtp on, starttls disabled): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-email diff --git a/examples/chart/access/email/tests/__snapshot__/deployment_test.yaml.snap b/examples/chart/access/email/tests/__snapshot__/deployment_test.yaml.snap index b7e81f481eedb..5c1b7e95a8326 100644 --- a/examples/chart/access/email/tests/__snapshot__/deployment_test.yaml.snap +++ b/examples/chart/access/email/tests/__snapshot__/deployment_test.yaml.snap @@ -7,8 +7,8 @@ should be possible to override volume name (smtp on): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-email spec: replicas: 1 @@ -22,8 +22,8 @@ should be possible to override volume name (smtp on): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 spec: containers: - command: @@ -34,7 +34,7 @@ should be possible to override volume name (smtp on): env: - name: TELEPORT_PLUGIN_FAIL_FAST value: "true" - image: public.ecr.aws/gravitational/teleport-plugin-email:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-plugin-email:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent name: teleport-plugin-email ports: @@ -75,8 +75,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-email spec: replicas: 1 @@ -90,8 +90,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 spec: containers: - command: @@ -136,8 +136,8 @@ should match the snapshot (mailgun on): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-email spec: replicas: 1 @@ -151,8 +151,8 @@ should match the snapshot (mailgun on): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 spec: containers: - command: @@ -163,7 +163,7 @@ should match the snapshot (mailgun on): env: - name: TELEPORT_PLUGIN_FAIL_FAST value: "true" - image: public.ecr.aws/gravitational/teleport-plugin-email:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-plugin-email:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent name: teleport-plugin-email ports: @@ -204,8 +204,8 @@ should match the snapshot (smtp on): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-email spec: replicas: 1 @@ -219,8 +219,8 @@ should match the snapshot (smtp on): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 spec: containers: - command: @@ -231,7 +231,7 @@ should match the snapshot (smtp on): env: - name: TELEPORT_PLUGIN_FAIL_FAST value: "true" - image: public.ecr.aws/gravitational/teleport-plugin-email:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-plugin-email:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent name: teleport-plugin-email ports: @@ -272,8 +272,8 @@ should mount external secret (mailgun on): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-email spec: replicas: 1 @@ -287,8 +287,8 @@ should mount external secret (mailgun on): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 spec: containers: - command: @@ -299,7 +299,7 @@ should mount external secret (mailgun on): env: - name: TELEPORT_PLUGIN_FAIL_FAST value: "true" - image: public.ecr.aws/gravitational/teleport-plugin-email:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-plugin-email:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent name: teleport-plugin-email ports: @@ -340,8 +340,8 @@ should mount external secret (smtp on): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-email spec: replicas: 1 @@ -355,8 +355,8 @@ should mount external secret (smtp on): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-email - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-email-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-email-17.0.0-dev.githubproxy.2 spec: containers: - command: @@ -367,7 +367,7 @@ should mount external secret (smtp on): env: - name: TELEPORT_PLUGIN_FAIL_FAST value: "true" - image: public.ecr.aws/gravitational/teleport-plugin-email:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-plugin-email:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent name: teleport-plugin-email ports: diff --git a/examples/chart/access/jira/Chart.yaml b/examples/chart/access/jira/Chart.yaml index bda1cd653e046..6122f1de69861 100644 --- a/examples/chart/access/jira/Chart.yaml +++ b/examples/chart/access/jira/Chart.yaml @@ -1,4 +1,4 @@ -.version: &version "17.0.0-dev" +.version: &version "17.0.0-dev.githubproxy.2" apiVersion: v2 name: teleport-plugin-jira diff --git a/examples/chart/access/jira/tests/__snapshot__/configmap_test.yaml.snap b/examples/chart/access/jira/tests/__snapshot__/configmap_test.yaml.snap index d1a5b3b3d5390..a51175cad1f93 100644 --- a/examples/chart/access/jira/tests/__snapshot__/configmap_test.yaml.snap +++ b/examples/chart/access/jira/tests/__snapshot__/configmap_test.yaml.snap @@ -32,6 +32,6 @@ should match the snapshot (smtp on): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-jira - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-jira-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-jira-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-jira diff --git a/examples/chart/access/jira/tests/__snapshot__/deployment_test.yaml.snap b/examples/chart/access/jira/tests/__snapshot__/deployment_test.yaml.snap index 6911e6e41ed78..547ec8dc42a7f 100644 --- a/examples/chart/access/jira/tests/__snapshot__/deployment_test.yaml.snap +++ b/examples/chart/access/jira/tests/__snapshot__/deployment_test.yaml.snap @@ -7,8 +7,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-jira - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-jira-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-jira-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-jira spec: replicas: 1 @@ -22,8 +22,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-jira - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-jira-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-jira-17.0.0-dev.githubproxy.2 spec: containers: - command: diff --git a/examples/chart/access/mattermost/Chart.yaml b/examples/chart/access/mattermost/Chart.yaml index 2f171d58f08da..0a598c00ba7fa 100644 --- a/examples/chart/access/mattermost/Chart.yaml +++ b/examples/chart/access/mattermost/Chart.yaml @@ -1,4 +1,4 @@ -.version: &version "17.0.0-dev" +.version: &version "17.0.0-dev.githubproxy.2" apiVersion: v2 name: teleport-plugin-mattermost diff --git a/examples/chart/access/mattermost/tests/__snapshot__/configmap_test.yaml.snap b/examples/chart/access/mattermost/tests/__snapshot__/configmap_test.yaml.snap index 0b130d51c7218..bd05ddf9d3b44 100644 --- a/examples/chart/access/mattermost/tests/__snapshot__/configmap_test.yaml.snap +++ b/examples/chart/access/mattermost/tests/__snapshot__/configmap_test.yaml.snap @@ -22,6 +22,6 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-mattermost - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-mattermost-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-mattermost-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-mattermost diff --git a/examples/chart/access/mattermost/tests/__snapshot__/deployment_test.yaml.snap b/examples/chart/access/mattermost/tests/__snapshot__/deployment_test.yaml.snap index 723e8279c09d3..db8819108adda 100644 --- a/examples/chart/access/mattermost/tests/__snapshot__/deployment_test.yaml.snap +++ b/examples/chart/access/mattermost/tests/__snapshot__/deployment_test.yaml.snap @@ -7,8 +7,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-mattermost - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-mattermost-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-mattermost-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-mattermost spec: replicas: 1 @@ -22,8 +22,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-mattermost - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-mattermost-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-mattermost-17.0.0-dev.githubproxy.2 spec: containers: - command: @@ -75,8 +75,8 @@ should mount external secret: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-mattermost - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-mattermost-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-mattermost-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-mattermost spec: replicas: 1 @@ -90,8 +90,8 @@ should mount external secret: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-mattermost - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-mattermost-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-mattermost-17.0.0-dev.githubproxy.2 spec: containers: - command: @@ -102,7 +102,7 @@ should mount external secret: env: - name: TELEPORT_PLUGIN_FAIL_FAST value: "true" - image: public.ecr.aws/gravitational/teleport-plugin-mattermost:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-plugin-mattermost:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent name: teleport-plugin-mattermost ports: @@ -143,8 +143,8 @@ should override volume name: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-mattermost - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-mattermost-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-mattermost-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-mattermost spec: replicas: 1 @@ -158,8 +158,8 @@ should override volume name: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-mattermost - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-mattermost-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-mattermost-17.0.0-dev.githubproxy.2 spec: containers: - command: @@ -170,7 +170,7 @@ should override volume name: env: - name: TELEPORT_PLUGIN_FAIL_FAST value: "true" - image: public.ecr.aws/gravitational/teleport-plugin-mattermost:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-plugin-mattermost:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent name: teleport-plugin-mattermost ports: diff --git a/examples/chart/access/msteams/Chart.yaml b/examples/chart/access/msteams/Chart.yaml index 9ba10864dc698..d35a0c1a8783b 100644 --- a/examples/chart/access/msteams/Chart.yaml +++ b/examples/chart/access/msteams/Chart.yaml @@ -1,4 +1,4 @@ -.version: &version "17.0.0-dev" +.version: &version "17.0.0-dev.githubproxy.2" apiVersion: v2 name: teleport-plugin-msteams diff --git a/examples/chart/access/msteams/tests/__snapshot__/configmap_test.yaml.snap b/examples/chart/access/msteams/tests/__snapshot__/configmap_test.yaml.snap index 553e036515e21..5daf85a124b99 100644 --- a/examples/chart/access/msteams/tests/__snapshot__/configmap_test.yaml.snap +++ b/examples/chart/access/msteams/tests/__snapshot__/configmap_test.yaml.snap @@ -29,6 +29,6 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-msteams - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-msteams-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-msteams-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-msteams diff --git a/examples/chart/access/msteams/tests/__snapshot__/deployment_test.yaml.snap b/examples/chart/access/msteams/tests/__snapshot__/deployment_test.yaml.snap index 0c95e9d24e3ff..a5be7f09264f7 100644 --- a/examples/chart/access/msteams/tests/__snapshot__/deployment_test.yaml.snap +++ b/examples/chart/access/msteams/tests/__snapshot__/deployment_test.yaml.snap @@ -7,8 +7,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-msteams - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-msteams-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-msteams-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-msteams spec: replicas: 1 @@ -22,8 +22,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-msteams - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-msteams-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-msteams-17.0.0-dev.githubproxy.2 spec: containers: - command: diff --git a/examples/chart/access/pagerduty/Chart.yaml b/examples/chart/access/pagerduty/Chart.yaml index 711acf2fa83e8..4bcbf6cc6ae90 100644 --- a/examples/chart/access/pagerduty/Chart.yaml +++ b/examples/chart/access/pagerduty/Chart.yaml @@ -1,4 +1,4 @@ -.version: &version "17.0.0-dev" +.version: &version "17.0.0-dev.githubproxy.2" apiVersion: v2 name: teleport-plugin-pagerduty diff --git a/examples/chart/access/pagerduty/tests/__snapshot__/configmap_test.yaml.snap b/examples/chart/access/pagerduty/tests/__snapshot__/configmap_test.yaml.snap index 64083c3642b5c..43bdd6e30ed94 100644 --- a/examples/chart/access/pagerduty/tests/__snapshot__/configmap_test.yaml.snap +++ b/examples/chart/access/pagerduty/tests/__snapshot__/configmap_test.yaml.snap @@ -21,6 +21,6 @@ should match the snapshot (smtp on): app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-pagerduty - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-pagerduty-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-pagerduty-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-pagerduty diff --git a/examples/chart/access/pagerduty/tests/__snapshot__/deployment_test.yaml.snap b/examples/chart/access/pagerduty/tests/__snapshot__/deployment_test.yaml.snap index c44a3284ccc85..61a0457b9137c 100644 --- a/examples/chart/access/pagerduty/tests/__snapshot__/deployment_test.yaml.snap +++ b/examples/chart/access/pagerduty/tests/__snapshot__/deployment_test.yaml.snap @@ -7,8 +7,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-pagerduty - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-pagerduty-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-pagerduty-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-pagerduty spec: replicas: 1 @@ -22,8 +22,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-pagerduty - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-pagerduty-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-pagerduty-17.0.0-dev.githubproxy.2 spec: containers: - command: diff --git a/examples/chart/access/slack/Chart.yaml b/examples/chart/access/slack/Chart.yaml index d295bc30b3f90..91a31540d9e4d 100644 --- a/examples/chart/access/slack/Chart.yaml +++ b/examples/chart/access/slack/Chart.yaml @@ -1,4 +1,4 @@ -.version: &version "17.0.0-dev" +.version: &version "17.0.0-dev.githubproxy.2" apiVersion: v2 name: teleport-plugin-slack diff --git a/examples/chart/access/slack/tests/__snapshot__/configmap_test.yaml.snap b/examples/chart/access/slack/tests/__snapshot__/configmap_test.yaml.snap index 78e6b06bb439a..5a99545c8fb68 100644 --- a/examples/chart/access/slack/tests/__snapshot__/configmap_test.yaml.snap +++ b/examples/chart/access/slack/tests/__snapshot__/configmap_test.yaml.snap @@ -24,6 +24,6 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-slack - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-slack-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-slack-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-slack diff --git a/examples/chart/access/slack/tests/__snapshot__/deployment_test.yaml.snap b/examples/chart/access/slack/tests/__snapshot__/deployment_test.yaml.snap index d19f3c2783750..22defb7c3e17d 100644 --- a/examples/chart/access/slack/tests/__snapshot__/deployment_test.yaml.snap +++ b/examples/chart/access/slack/tests/__snapshot__/deployment_test.yaml.snap @@ -7,8 +7,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-slack - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-slack-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-slack-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-slack spec: replicas: 1 @@ -22,8 +22,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-slack - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-slack-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-slack-17.0.0-dev.githubproxy.2 spec: containers: - command: diff --git a/examples/chart/event-handler/Chart.yaml b/examples/chart/event-handler/Chart.yaml index 7eaacdb7f530b..fd785ce4638f6 100644 --- a/examples/chart/event-handler/Chart.yaml +++ b/examples/chart/event-handler/Chart.yaml @@ -1,4 +1,4 @@ -.version: &version "17.0.0-dev" +.version: &version "17.0.0-dev.githubproxy.2" apiVersion: v2 name: teleport-plugin-event-handler diff --git a/examples/chart/event-handler/tests/__snapshot__/configmap_test.yaml.snap b/examples/chart/event-handler/tests/__snapshot__/configmap_test.yaml.snap index 4d0b7a15e3ad0..87b0930dfda4d 100644 --- a/examples/chart/event-handler/tests/__snapshot__/configmap_test.yaml.snap +++ b/examples/chart/event-handler/tests/__snapshot__/configmap_test.yaml.snap @@ -26,6 +26,6 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-event-handler - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-event-handler-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-event-handler-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-event-handler diff --git a/examples/chart/event-handler/tests/__snapshot__/deployment_test.yaml.snap b/examples/chart/event-handler/tests/__snapshot__/deployment_test.yaml.snap index d7a6dc7a36b7a..ae5d2bcff8cfa 100644 --- a/examples/chart/event-handler/tests/__snapshot__/deployment_test.yaml.snap +++ b/examples/chart/event-handler/tests/__snapshot__/deployment_test.yaml.snap @@ -7,8 +7,8 @@ should match the snapshot: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-plugin-event-handler - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-plugin-event-handler-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-plugin-event-handler-17.0.0-dev.githubproxy.2 name: RELEASE-NAME-teleport-plugin-event-handler spec: replicas: 1 @@ -82,7 +82,7 @@ should mount tls.existingCASecretName and set environment when set in values: value: "true" - name: SSL_CERT_FILE value: /etc/teleport-tls-ca/ca.pem - image: public.ecr.aws/gravitational/teleport-plugin-event-handler:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-plugin-event-handler:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent name: teleport-plugin-event-handler ports: diff --git a/examples/chart/teleport-cluster/Chart.yaml b/examples/chart/teleport-cluster/Chart.yaml index ea212b038a5d4..b6b19b2e27ec6 100644 --- a/examples/chart/teleport-cluster/Chart.yaml +++ b/examples/chart/teleport-cluster/Chart.yaml @@ -1,4 +1,4 @@ -.version: &version "17.0.0-dev" +.version: &version "17.0.0-dev.githubproxy.2" name: teleport-cluster apiVersion: v2 diff --git a/examples/chart/teleport-cluster/charts/teleport-operator/Chart.yaml b/examples/chart/teleport-cluster/charts/teleport-operator/Chart.yaml index 36e7fe2312354..e320cbc8a7bd5 100644 --- a/examples/chart/teleport-cluster/charts/teleport-operator/Chart.yaml +++ b/examples/chart/teleport-cluster/charts/teleport-operator/Chart.yaml @@ -1,4 +1,4 @@ -.version: &version "17.0.0-dev" +.version: &version "17.0.0-dev.githubproxy.2" name: teleport-operator apiVersion: v2 diff --git a/examples/chart/teleport-cluster/tests/__snapshot__/auth_clusterrole_test.yaml.snap b/examples/chart/teleport-cluster/tests/__snapshot__/auth_clusterrole_test.yaml.snap index 81a2e28b7c823..3db5605376e51 100644 --- a/examples/chart/teleport-cluster/tests/__snapshot__/auth_clusterrole_test.yaml.snap +++ b/examples/chart/teleport-cluster/tests/__snapshot__/auth_clusterrole_test.yaml.snap @@ -8,8 +8,8 @@ adds operator permissions to ClusterRole: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-cluster - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-cluster-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-cluster-17.0.0-dev.githubproxy.2 teleport.dev/majorVersion: "17" name: RELEASE-NAME rules: diff --git a/examples/chart/teleport-cluster/tests/__snapshot__/auth_config_test.yaml.snap b/examples/chart/teleport-cluster/tests/__snapshot__/auth_config_test.yaml.snap index bff9e2a397a73..e2802af0d4969 100644 --- a/examples/chart/teleport-cluster/tests/__snapshot__/auth_config_test.yaml.snap +++ b/examples/chart/teleport-cluster/tests/__snapshot__/auth_config_test.yaml.snap @@ -1848,8 +1848,8 @@ sets clusterDomain on Configmap: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-cluster - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-cluster-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-cluster-17.0.0-dev.githubproxy.2 teleport.dev/majorVersion: "17" name: RELEASE-NAME-auth namespace: NAMESPACE diff --git a/examples/chart/teleport-cluster/tests/__snapshot__/auth_deployment_test.yaml.snap b/examples/chart/teleport-cluster/tests/__snapshot__/auth_deployment_test.yaml.snap index 4fef4cd91bf80..eb0444478a273 100644 --- a/examples/chart/teleport-cluster/tests/__snapshot__/auth_deployment_test.yaml.snap +++ b/examples/chart/teleport-cluster/tests/__snapshot__/auth_deployment_test.yaml.snap @@ -8,7 +8,7 @@ - args: - --diag-addr=0.0.0.0:3000 - --apply-on-startup=/etc/teleport/apply-on-startup.yaml - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -141,7 +141,7 @@ should set nodeSelector when set in values: - args: - --diag-addr=0.0.0.0:3000 - --apply-on-startup=/etc/teleport/apply-on-startup.yaml - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -238,7 +238,7 @@ should set resources when set in values: - args: - --diag-addr=0.0.0.0:3000 - --apply-on-startup=/etc/teleport/apply-on-startup.yaml - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -324,7 +324,7 @@ should set securityContext when set in values: - args: - --diag-addr=0.0.0.0:3000 - --apply-on-startup=/etc/teleport/apply-on-startup.yaml - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent lifecycle: preStop: diff --git a/examples/chart/teleport-cluster/tests/__snapshot__/proxy_config_test.yaml.snap b/examples/chart/teleport-cluster/tests/__snapshot__/proxy_config_test.yaml.snap index 32830dc1a9d48..06c41e1654e15 100644 --- a/examples/chart/teleport-cluster/tests/__snapshot__/proxy_config_test.yaml.snap +++ b/examples/chart/teleport-cluster/tests/__snapshot__/proxy_config_test.yaml.snap @@ -567,8 +567,8 @@ sets clusterDomain on Configmap: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-cluster - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-cluster-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-cluster-17.0.0-dev.githubproxy.2 teleport.dev/majorVersion: "17" name: RELEASE-NAME-proxy namespace: NAMESPACE diff --git a/examples/chart/teleport-cluster/tests/__snapshot__/proxy_deployment_test.yaml.snap b/examples/chart/teleport-cluster/tests/__snapshot__/proxy_deployment_test.yaml.snap index 4e3f20a977377..25727c18862b0 100644 --- a/examples/chart/teleport-cluster/tests/__snapshot__/proxy_deployment_test.yaml.snap +++ b/examples/chart/teleport-cluster/tests/__snapshot__/proxy_deployment_test.yaml.snap @@ -11,8 +11,8 @@ sets clusterDomain on Deployment Pods: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-cluster - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-cluster-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-cluster-17.0.0-dev.githubproxy.2 teleport.dev/majorVersion: "17" name: RELEASE-NAME-proxy namespace: NAMESPACE @@ -26,7 +26,7 @@ sets clusterDomain on Deployment Pods: template: metadata: annotations: - checksum/config: 9ba7ee951511bedbbb6ab297c0b044322b0a39391e801ed8fc3bf44a58f112b9 + checksum/config: 4ac2bb4e0e0c82d336bb0a6946a4bc0aea2219d57fdfbfbee31ec43632dea3d5 kubernetes.io/pod: test-annotation kubernetes.io/pod-different: 4 labels: @@ -34,8 +34,8 @@ sets clusterDomain on Deployment Pods: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: teleport-cluster - app.kubernetes.io/version: 17.0.0-dev - helm.sh/chart: teleport-cluster-17.0.0-dev + app.kubernetes.io/version: 17.0.0-dev.githubproxy.2 + helm.sh/chart: teleport-cluster-17.0.0-dev.githubproxy.2 teleport.dev/majorVersion: "17" spec: affinity: @@ -44,7 +44,7 @@ sets clusterDomain on Deployment Pods: containers: - args: - --diag-addr=0.0.0.0:3000 - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -105,7 +105,7 @@ sets clusterDomain on Deployment Pods: - wait - no-resolve - RELEASE-NAME-auth-v16.NAMESPACE.svc.test.com - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 name: wait-auth-update serviceAccountName: RELEASE-NAME-proxy terminationGracePeriodSeconds: 60 @@ -137,7 +137,7 @@ should provision initContainer correctly when set in values: - wait - no-resolve - RELEASE-NAME-auth-v16.NAMESPACE.svc.cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 name: wait-auth-update resources: limits: @@ -201,7 +201,7 @@ should set nodeSelector when set in values: containers: - args: - --diag-addr=0.0.0.0:3000 - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -262,7 +262,7 @@ should set nodeSelector when set in values: - wait - no-resolve - RELEASE-NAME-auth-v16.NAMESPACE.svc.cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 name: wait-auth-update nodeSelector: environment: security @@ -313,7 +313,7 @@ should set resources for wait-auth-update initContainer when set in values: containers: - args: - --diag-addr=0.0.0.0:3000 - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -381,7 +381,7 @@ should set resources for wait-auth-update initContainer when set in values: - wait - no-resolve - RELEASE-NAME-auth-v16.NAMESPACE.svc.cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 name: wait-auth-update resources: limits: @@ -421,7 +421,7 @@ should set resources when set in values: containers: - args: - --diag-addr=0.0.0.0:3000 - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -489,7 +489,7 @@ should set resources when set in values: - wait - no-resolve - RELEASE-NAME-auth-v16.NAMESPACE.svc.cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 name: wait-auth-update resources: limits: @@ -529,7 +529,7 @@ should set securityContext for initContainers when set in values: containers: - args: - --diag-addr=0.0.0.0:3000 - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -597,7 +597,7 @@ should set securityContext for initContainers when set in values: - wait - no-resolve - RELEASE-NAME-auth-v16.NAMESPACE.svc.cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 name: wait-auth-update securityContext: allowPrivilegeEscalation: false @@ -637,7 +637,7 @@ should set securityContext when set in values: containers: - args: - --diag-addr=0.0.0.0:3000 - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent lifecycle: preStop: @@ -705,7 +705,7 @@ should set securityContext when set in values: - wait - no-resolve - RELEASE-NAME-auth-v16.NAMESPACE.svc.cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 name: wait-auth-update securityContext: allowPrivilegeEscalation: false diff --git a/examples/chart/teleport-kube-agent/Chart.yaml b/examples/chart/teleport-kube-agent/Chart.yaml index a8b88bcc772fb..e81c01e27d217 100644 --- a/examples/chart/teleport-kube-agent/Chart.yaml +++ b/examples/chart/teleport-kube-agent/Chart.yaml @@ -1,4 +1,4 @@ -.version: &version "17.0.0-dev" +.version: &version "17.0.0-dev.githubproxy.2" name: teleport-kube-agent apiVersion: v2 diff --git a/examples/chart/teleport-kube-agent/tests/__snapshot__/deployment_test.yaml.snap b/examples/chart/teleport-kube-agent/tests/__snapshot__/deployment_test.yaml.snap index bee6bf8282eac..9159a8f7f46d7 100644 --- a/examples/chart/teleport-kube-agent/tests/__snapshot__/deployment_test.yaml.snap +++ b/examples/chart/teleport-kube-agent/tests/__snapshot__/deployment_test.yaml.snap @@ -32,7 +32,7 @@ sets Deployment annotations when specified if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -109,7 +109,7 @@ sets Deployment labels when specified if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -173,7 +173,7 @@ sets Pod annotations when specified if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -237,7 +237,7 @@ sets Pod labels when specified if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -322,7 +322,7 @@ should add emptyDir for data when existingDataVolume is not set if action is Upg value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -387,7 +387,7 @@ should add insecureSkipProxyTLSVerify to args when set in values if action is Up value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -451,7 +451,7 @@ should correctly configure existingDataVolume when set if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -513,7 +513,7 @@ should expose diag port if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -589,7 +589,7 @@ should have multiple replicas when replicaCount is set (using .replicaCount, dep value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -665,7 +665,7 @@ should have multiple replicas when replicaCount is set (using highAvailability.r value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -729,7 +729,7 @@ should have one replica when replicaCount is not set if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -793,7 +793,7 @@ should mount extraVolumes and extraVolumeMounts if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -862,7 +862,7 @@ should mount jamfCredentialsSecret if it already exists and when role is jamf an value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -932,7 +932,7 @@ should mount jamfCredentialsSecret.name when role is jamf and action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1004,7 +1004,7 @@ should mount tls.existingCASecretName and set environment when set in values if value: cluster.local - name: SSL_CERT_FILE value: /etc/teleport-tls-ca/ca.pem - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1078,7 +1078,7 @@ should mount tls.existingCASecretName and set extra environment when set in valu value: http://username:password@my.proxy.host:3128 - name: SSL_CERT_FILE value: /etc/teleport-tls-ca/ca.pem - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1148,7 +1148,7 @@ should provision initContainer correctly when set in values if action is Upgrade value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1270,7 +1270,7 @@ should set affinity when set in values if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1334,7 +1334,7 @@ should set default serviceAccountName when not set in values if action is Upgrad value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1411,7 +1411,7 @@ should set environment when extraEnv set in values if action is Upgrade: value: cluster.local - name: HTTPS_PROXY value: http://username:password@my.proxy.host:3128 - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1539,7 +1539,7 @@ should set imagePullPolicy when set in values if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: Always livenessProbe: failureThreshold: 6 @@ -1603,7 +1603,7 @@ should set nodeSelector if set in values if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1669,7 +1669,7 @@ should set not set priorityClassName when not set in values if action is Upgrade value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1745,7 +1745,7 @@ should set preferred affinity when more than one replica is used if action is Up value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1809,7 +1809,7 @@ should set priorityClassName when set in values if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1874,7 +1874,7 @@ should set probeTimeoutSeconds when set in values if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1948,7 +1948,7 @@ should set required affinity when highAvailability.requireAntiAffinity is set if value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2012,7 +2012,7 @@ should set resources when set in values if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2083,7 +2083,7 @@ should set serviceAccountName when set in values if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2147,7 +2147,7 @@ should set tolerations when set in values if action is Upgrade: value: "true" - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 diff --git a/examples/chart/teleport-kube-agent/tests/__snapshot__/job_test.yaml.snap b/examples/chart/teleport-kube-agent/tests/__snapshot__/job_test.yaml.snap index f6533a0aeea95..5228349dc8b1d 100644 --- a/examples/chart/teleport-kube-agent/tests/__snapshot__/job_test.yaml.snap +++ b/examples/chart/teleport-kube-agent/tests/__snapshot__/job_test.yaml.snap @@ -25,7 +25,7 @@ should create ServiceAccount for post-delete hook by default: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent name: post-delete-job securityContext: @@ -108,7 +108,7 @@ should not create ServiceAccount for post-delete hook if serviceAccount.create i fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent name: post-delete-job securityContext: @@ -138,7 +138,7 @@ should not create ServiceAccount, Role or RoleBinding for post-delete hook if se fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent name: post-delete-job securityContext: @@ -168,7 +168,7 @@ should set nodeSelector in post-delete hook: fieldPath: metadata.namespace - name: RELEASE_NAME value: RELEASE-NAME - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent name: post-delete-job securityContext: diff --git a/examples/chart/teleport-kube-agent/tests/__snapshot__/statefulset_test.yaml.snap b/examples/chart/teleport-kube-agent/tests/__snapshot__/statefulset_test.yaml.snap index 3a7ced7542085..50f6a428ea94f 100644 --- a/examples/chart/teleport-kube-agent/tests/__snapshot__/statefulset_test.yaml.snap +++ b/examples/chart/teleport-kube-agent/tests/__snapshot__/statefulset_test.yaml.snap @@ -18,7 +18,7 @@ sets Pod annotations when specified: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -90,7 +90,7 @@ sets Pod labels when specified: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -186,7 +186,7 @@ sets StatefulSet labels when specified: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -290,7 +290,7 @@ should add insecureSkipProxyTLSVerify to args when set in values: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -362,7 +362,7 @@ should add volumeClaimTemplate for data volume when using StatefulSet and action value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -454,7 +454,7 @@ should add volumeClaimTemplate for data volume when using StatefulSet and is Fre value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -536,7 +536,7 @@ should add volumeMount for data volume when using StatefulSet: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -608,7 +608,7 @@ should expose diag port: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -680,7 +680,7 @@ should generate Statefulset when storage is disabled and mode is a Upgrade: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -766,7 +766,7 @@ should have multiple replicas when replicaCount is set (using .replicaCount, dep value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -850,7 +850,7 @@ should have multiple replicas when replicaCount is set (using highAvailability.r value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -922,7 +922,7 @@ should have one replica when replicaCount is not set: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -994,7 +994,7 @@ should install Statefulset when storage is disabled and mode is a Fresh Install: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1068,7 +1068,7 @@ should mount extraVolumes and extraVolumeMounts: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1145,7 +1145,7 @@ should mount jamfCredentialsSecret if it already exists and when role is jamf: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1225,7 +1225,7 @@ should mount jamfCredentialsSecret.name when role is jamf: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1307,7 +1307,7 @@ should mount tls.existingCASecretName and set environment when set in values: value: cluster.local - name: SSL_CERT_FILE value: /etc/teleport-tls-ca/ca.pem - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1391,7 +1391,7 @@ should mount tls.existingCASecretName and set extra environment when set in valu value: /etc/teleport-tls-ca/ca.pem - name: HTTPS_PROXY value: http://username:password@my.proxy.host:3128 - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1471,7 +1471,7 @@ should not add emptyDir for data when using StatefulSet: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1543,7 +1543,7 @@ should provision initContainer correctly when set in values: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1673,7 +1673,7 @@ should set affinity when set in values: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1745,7 +1745,7 @@ should set default serviceAccountName when not set in values: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1830,7 +1830,7 @@ should set environment when extraEnv set in values: value: cluster.local - name: HTTPS_PROXY value: http://username:password@my.proxy.host:3128 - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -1974,7 +1974,7 @@ should set imagePullPolicy when set in values: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: Always livenessProbe: failureThreshold: 6 @@ -2046,7 +2046,7 @@ should set nodeSelector if set in values: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2132,7 +2132,7 @@ should set preferred affinity when more than one replica is used: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2204,7 +2204,7 @@ should set probeTimeoutSeconds when set in values: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2286,7 +2286,7 @@ should set required affinity when highAvailability.requireAntiAffinity is set: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2358,7 +2358,7 @@ should set resources when set in values: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2437,7 +2437,7 @@ should set serviceAccountName when set in values: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2509,7 +2509,7 @@ should set storage.requests when set in values and action is an Upgrade: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2581,7 +2581,7 @@ should set storage.storageClassName when set in values and action is an Upgrade: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -2653,7 +2653,7 @@ should set tolerations when set in values: value: RELEASE-NAME - name: TELEPORT_KUBE_CLUSTER_DOMAIN value: cluster.local - image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-distroless:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 diff --git a/examples/chart/teleport-kube-agent/tests/__snapshot__/updater_deployment_test.yaml.snap b/examples/chart/teleport-kube-agent/tests/__snapshot__/updater_deployment_test.yaml.snap index a0ad90efdf202..15212d8f2d34f 100644 --- a/examples/chart/teleport-kube-agent/tests/__snapshot__/updater_deployment_test.yaml.snap +++ b/examples/chart/teleport-kube-agent/tests/__snapshot__/updater_deployment_test.yaml.snap @@ -27,7 +27,7 @@ sets the affinity: - --base-image=public.ecr.aws/gravitational/teleport-distroless - --version-server=https://my-custom-version-server/v1 - --version-channel=custom/preview - image: public.ecr.aws/gravitational/teleport-kube-agent-updater:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-kube-agent-updater:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 @@ -73,7 +73,7 @@ sets the tolerations: - --base-image=public.ecr.aws/gravitational/teleport-distroless - --version-server=https://my-custom-version-server/v1 - --version-channel=custom/preview - image: public.ecr.aws/gravitational/teleport-kube-agent-updater:17.0.0-dev + image: public.ecr.aws/gravitational/teleport-kube-agent-updater:17.0.0-dev.githubproxy.2 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 6 diff --git a/go.mod b/go.mod index d845750718e9b..d9f875dc0efea 100644 --- a/go.mod +++ b/go.mod @@ -92,6 +92,7 @@ require ( github.com/fxamacker/cbor/v2 v2.7.0 github.com/ghodss/yaml v1.0.0 github.com/gizak/termui/v3 v3.1.0 + github.com/go-git/go-git/v5 v5.12.0 github.com/go-jose/go-jose/v3 v3.0.3 github.com/go-ldap/ldap/v3 v3.4.8 github.com/go-logr/logr v1.4.2 @@ -333,6 +334,8 @@ require ( github.com/go-errors/errors v1.4.2 // indirect github.com/go-faster/city v1.0.1 // indirect github.com/go-faster/errors v0.7.1 // indirect + github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect + github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-gorp/gorp/v3 v3.1.0 // indirect github.com/go-jose/go-jose/v4 v4.0.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -382,6 +385,7 @@ require ( github.com/hashicorp/go-retryablehttp v0.7.7 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/hcl v1.0.1-vault-5 // indirect github.com/huandu/xstrings v1.5.0 // indirect github.com/imdario/mergo v0.3.16 // indirect @@ -392,6 +396,7 @@ require ( github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9 // indirect github.com/jackc/puddle/v2 v2.2.1 // indirect + github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jcmturner/aescts/v2 v2.0.0 // indirect github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect github.com/jcmturner/gofork v1.7.6 // indirect @@ -455,6 +460,7 @@ require ( github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/pierrec/lz4/v4 v4.1.21 // indirect github.com/pingcap/errors v0.11.5-0.20201126102027-b0a155152ca3 // indirect + github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pkg/xattr v0.4.10 // indirect @@ -533,6 +539,7 @@ require ( gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect + gopkg.in/warnings.v0 v0.1.2 // indirect k8s.io/component-helpers v0.31.0 // indirect k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect k8s.io/metrics v0.31.0 // indirect diff --git a/go.sum b/go.sum index f83eb553e710d..78067da24d887 100644 --- a/go.sum +++ b/go.sum @@ -758,8 +758,8 @@ github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAE github.com/OneOfOne/xxhash v1.2.8 h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8= github.com/OneOfOne/xxhash v1.2.8/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= -github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c h1:kMFnB0vCcX7IL/m9Y5LO+KQYv+t1CQOiFe6+SV2J7bE= -github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= +github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= @@ -1230,6 +1230,14 @@ github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3 github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= +github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= +github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= +github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -1621,8 +1629,8 @@ github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mO github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM= @@ -1708,6 +1716,8 @@ github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dv github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo= @@ -2020,6 +2030,8 @@ github.com/pingcap/errors v0.11.5-0.20201126102027-b0a155152ca3/go.mod h1:G7x87l github.com/pingcap/log v0.0.0-20200511115504-543df19646ad/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= github.com/pingcap/log v0.0.0-20210317133921-96f4fcab92a4/go.mod h1:4rbK1p9ILyIfb6hU7OG2CiWSqMXnp3JMbiaVJ6mvoY8= github.com/pingcap/parser v0.0.0-20210415081931-48e7f467fd74/go.mod h1:xZC8I7bug4GJ5KtHhgAikjTfU4kBv1Sbo3Pf1MZ6lVw= +github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= @@ -2134,8 +2146,8 @@ github.com/segmentio/encoding v0.4.0 h1:MEBYvRqiUB2nfR2criEXWqwdY6HJOUrCn5hboVOV github.com/segmentio/encoding v0.4.0/go.mod h1:/d03Cd8PoaDeceuhUUUQWjU0KhWjrmYrWPgtJHYZSnI= github.com/segmentio/ksuid v1.0.4 h1:sBo2BdShXjmcugAMwjugoGUdUV0pcxY5mW4xKRn3v4c= github.com/segmentio/ksuid v1.0.4/go.mod h1:/XUiZBD3kVx5SmUOl55voK5yeAbBNNIed+2O73XgrPE= -github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= -github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shabbyrobe/gocovmerge v0.0.0-20190829150210-3e036491d500/go.mod h1:+njLrG5wSeoG4Ds61rFgEzKvenR2UHbjMoDHsczxly0= github.com/shabbyrobe/gocovmerge v0.0.0-20230507112040-c3350d9342df h1:S77Pf5fIGMa7oSwp8SQPp7Hb4ZiI38K3RNBKD2LLeEM= github.com/shabbyrobe/gocovmerge v0.0.0-20230507112040-c3350d9342df/go.mod h1:dcuzJZ83w/SqN9k4eQqwKYMgmKWzg/KzJAURBhRL1tc= @@ -3215,6 +3227,8 @@ gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHN gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/lib/auth/auth.go b/lib/auth/auth.go index e02c910f808ed..dbb43b1964b2b 100644 --- a/lib/auth/auth.go +++ b/lib/auth/auth.go @@ -68,6 +68,7 @@ import ( apidefaults "github.com/gravitational/teleport/api/defaults" devicepb "github.com/gravitational/teleport/api/gen/proto/go/teleport/devicetrust/v1" headerv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/header/v1" + integrationv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/integration/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" "github.com/gravitational/teleport/api/internalutils/stream" @@ -672,6 +673,11 @@ func (r *Services) GenerateAWSOIDCToken(ctx context.Context, integration string) return r.IntegrationsTokenGenerator.GenerateAWSOIDCToken(ctx, integration) } +// TODO +func (r *Services) GenerateGitHubUserCert(ctx context.Context, in *integrationv1.GenerateGitHubUserCertRequest) (*integrationv1.GenerateGitHubUserCertResponse, error) { + return r.IntegrationsTokenGenerator.GenerateGitHubUserCert(ctx, in) +} + var ( generateRequestsCount = prometheus.NewCounter( prometheus.CounterOpts{ @@ -2086,6 +2092,12 @@ type certRequest struct { // botInstanceID is the unique identifier of the bot instance associated // with this cert, if any botInstanceID string + // githubUserID indicates the GitHub user ID identified by the GitHub + // identity connector. + githubUserID string + // githubUsername indicates the GitHub username identified by the GitHub + // identity connector. + githubUsername string } // check verifies the cert request is valid. @@ -2110,6 +2122,13 @@ func (r *certRequest) check() error { return trace.BadParameter("must provide a public key") } + if r.githubUserID == "" { + r.githubUserID = r.user.GetGitHubUserID() + } + if r.githubUsername == "" { + r.githubUsername = r.user.GetGitHubUsername() + } + return nil } @@ -2262,6 +2281,8 @@ func (a *Server) GenerateUserTestCerts(req GenerateUserTestCertsRequest) ([]byte tlsPublicKeyAttestationStatement: req.TLSAttestationStatement, appName: req.AppName, appSessionID: req.AppSessionID, + githubUserID: userState.GetGitHubUserID(), + githubUsername: userState.GetGitHubUsername(), }) if err != nil { return nil, nil, trace.Wrap(err) @@ -2994,6 +3015,12 @@ func generateCert(ctx context.Context, a *Server, req certRequest, caType types. // All users have access to this and join RBAC rules are checked after the connection is established. allowedLogins = append(allowedLogins, teleport.SSHSessionJoinPrincipal) + // TODO(greedy52) any better way to validate user id from client cert? + // could we use user state or req.githubUserID only? + if req.githubUserID != "" { + allowedLogins = append(allowedLogins, req.githubUserID) + } + requestedResourcesStr, err := types.ResourceIDsToString(req.checker.GetAllowedResourceIDs()) if err != nil { return nil, trace.Wrap(err) @@ -3054,6 +3081,8 @@ func generateCert(ctx context.Context, a *Server, req certRequest, caType types. DeviceID: req.deviceExtensions.DeviceID, DeviceAssetTag: req.deviceExtensions.AssetTag, DeviceCredentialID: req.deviceExtensions.CredentialID, + GitHubUserID: req.githubUserID, + GitHubUsername: req.githubUsername, } signedSSHCert, err = a.GenerateUserCert(params) if err != nil { @@ -6375,6 +6404,38 @@ func (a *Server) isMFARequired(ctx context.Context, checker services.AccessCheck } } + case *proto.IsMFARequiredRequest_GitServer: + if t.GitServer == nil || t.GitServer.GitHubOrganization == "" { + return nil, trace.BadParameter("missing GitHubOrganization") + } + + allGitServers, err := a.GetGitServers(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + var matchedServer types.Server + for _, server := range allGitServers { + if github := server.GetGitHub(); github != nil { + // RBAC is based on the GitHub org name so pick any server that matches. + if github.Organization == t.GitServer.GitHubOrganization { + matchedServer = server + break + } + } + } + if matchedServer == nil { + return nil, trace.NotFound("git server for github organization %q not found", t.GitServer.GitHubOrganization) + } + + accessError := checker.CheckAccess(matchedServer, services.AccessState{}) + switch { + case errors.Is(accessError, services.ErrSessionMFARequired): + noMFAAccessErr = accessError + case accessError != nil: + return nil, trace.Wrap(accessError) + } + case *proto.IsMFARequiredRequest_KubernetesCluster: if t.KubernetesCluster == "" { return nil, trace.BadParameter("missing KubernetesCluster field in a kubernetes-only UserCertsRequest") diff --git a/lib/auth/auth_with_roles.go b/lib/auth/auth_with_roles.go index 9b6ed728ed75d..c398c1a279f3b 100644 --- a/lib/auth/auth_with_roles.go +++ b/lib/auth/auth_with_roles.go @@ -1714,6 +1714,7 @@ func (a *ServerWithRoles) ListResources(ctx context.Context, req proto.ListResou types.KindWindowsDesktop, types.KindWindowsDesktopService, types.KindUserGroup, + types.KindGitServer, types.KindSAMLIdPServiceProvider: default: @@ -1864,6 +1865,7 @@ func (a *ServerWithRoles) newResourceAccessChecker(resource string) (resourceAcc types.KindKubeServer, types.KindUserGroup, types.KindUnifiedResource, + types.KindGitServer, types.KindSAMLIdPServiceProvider: return &resourceChecker{AccessChecker: a.context.Checker}, nil default: @@ -3353,6 +3355,13 @@ func (a *ServerWithRoles) generateUserCerts(ctx context.Context, req proto.UserC case proto.UserCertsRequest_SSH: // SSH certs are ssh-only by definition, certReq.usage only applies to // TLS certs. + case proto.UserCertsRequest_GitServer: + if loginState, err := a.authServer.GetUserOrLoginState(ctx, user.GetName()); err == nil && loginState != nil { + certReq.githubUserID = loginState.GetGitHubUserID() + certReq.githubUsername = loginState.GetGitHubUsername() + } + + // Same as SSH case proto.UserCertsRequest_All: // Unrestricted usage. case proto.UserCertsRequest_WindowsDesktop: @@ -4104,6 +4113,85 @@ func (a *ServerWithRoles) CreateGithubAuthRequest(ctx context.Context, req types return githubReq, nil } +func (a *ServerWithRoles) getGithubServers(ctx context.Context, org string) (types.Server, error) { + resources, err := client.GetAllUnifiedResources(ctx, a, &proto.ListUnifiedResourcesRequest{ + Kinds: []string{types.KindGitServer}, + SortBy: types.SortBy{Field: types.ResourceMetadataName}, + PredicateExpression: fmt.Sprintf("resource.spec.github.organization == \"%s\"", org), + }) + if err != nil { + return nil, trace.Wrap(err) + } + + for _, resource := range resources { + server, ok := resource.ResourceWithLabels.(types.Server) + if !ok { + // TODO log a warning + continue + } + if github := server.GetGitHub(); github != nil { + if github.Organization == org && github.Integration != "" { + return server, nil + } + } + } + return nil, trace.NotFound("no git server found for github organization %s", org) +} + +// TODO +func (a *ServerWithRoles) CreateGithubAuthRequestForUser(ctx context.Context, req *proto.CreateGithubAuthRequestForUserRequest) (*types.GithubAuthRequest, error) { + if req.CertRequest == nil { + return nil, trace.BadParameter("missing cert request") + } + org := req.CertRequest.RouteToGitServer.GitHubOrganization + if org == "" { + return nil, trace.BadParameter("one of github organization or connector id must be provided") + } + + githubServer, err := a.getGithubServers(ctx, org) + if err != nil { + return nil, trace.Wrap(err, "failed to get github server") + } + + integration, err := a.authServer.GetIntegration(ctx, githubServer.GetGitHub().Integration, true) + if err != nil { + return nil, trace.Wrap(err, "failed to find integration") + } + + igSpec := integration.GetGitHubIntegrationSpec() + if igSpec == nil { + return nil, trace.BadParameter("invalid github integration %s", githubServer.GetGitHub().Integration) + } + + connectorSpec, err := igSpec.MakeConnectorSpec() + if err != nil { + return nil, trace.BadParameter("invalid github integration %s: %v", githubServer.GetGitHub().Integration, err) + } + + authRequest := types.GithubAuthRequest{ + ConnectorID: "integration-" + integration.GetName(), + ConnectorSpec: connectorSpec, + AuthenticatedUser: a.context.User.GetName(), + CertTTL: a.context.Identity.GetIdentity().Expires.Sub(a.authServer.clock.Now()), // TODO validate? + ClientRedirectURL: req.RedirectUrl, + ClientLoginIP: a.context.Identity.GetIdentity().LoginIP, + KubernetesCluster: req.CertRequest.KubernetesCluster, + SshPublicKey: req.CertRequest.SSHPublicKey, + TlsPublicKey: req.CertRequest.TLSPublicKey, + SshAttestationStatement: req.CertRequest.SSHPublicKeyAttestationStatement, + TlsAttestationStatement: req.CertRequest.TLSPublicKeyAttestationStatement, + Compatibility: req.CertRequest.Format, + } + resp, err := a.authServer.CreateGithubAuthRequest(ctx, authRequest) + if err != nil { + // TODO emit something else + // emitSSOLoginFailureEvent(a.authServer.closeCtx, a.authServer.emitter, events.LoginMethodGithub, err, req.SSOTestFlow) + return nil, trace.Wrap(err) + } + + return resp, nil +} + // GetGithubAuthRequest returns Github auth request if found. func (a *ServerWithRoles) GetGithubAuthRequest(ctx context.Context, stateToken string) (*types.GithubAuthRequest, error) { if err := a.action(apidefaults.Namespace, types.KindGithubRequest, types.VerbRead); err != nil { diff --git a/lib/auth/authclient/api.go b/lib/auth/authclient/api.go index 83c7f1c9c8c89..e96be4e661058 100644 --- a/lib/auth/authclient/api.go +++ b/lib/auth/authclient/api.go @@ -76,6 +76,9 @@ type Announcer interface { // UpsertDatabaseService registers a DatabaseService. UpsertDatabaseService(context.Context, types.DatabaseService) (*types.KeepAlive, error) + + // UpsertGitServer registers a Git server. + UpsertGitServer(context.Context, types.Server) (types.Server, error) } // accessPoint is an API interface implemented by a certificate authority (CA) @@ -306,6 +309,10 @@ type ReadProxyAccessPoint interface { // GetUserGroup returns the specified user group resources. GetUserGroup(ctx context.Context, name string) (types.UserGroup, error) + + // TODO + GetGitServer(ctx context.Context, name string) (types.Server, error) + GetGitServers(ctx context.Context) ([]types.Server, error) } // SnowflakeSessionWatcher is watcher interface used by Snowflake web session watcher. @@ -405,6 +412,10 @@ type ReadRemoteProxyAccessPoint interface { // GetDatabaseServers returns all registered database proxy servers. GetDatabaseServers(ctx context.Context, namespace string, opts ...services.MarshalOption) ([]types.DatabaseServer, error) + + // TODO + GetGitServer(ctx context.Context, name string) (types.Server, error) + GetGitServers(ctx context.Context) ([]types.Server, error) } // RemoteProxyAccessPoint is an API interface implemented by a certificate authority (CA) to be @@ -743,7 +754,7 @@ type ReadDiscoveryAccessPoint interface { ListDiscoveryConfigs(ctx context.Context, pageSize int, nextKey string) ([]*discoveryconfig.DiscoveryConfig, string, error) // GetIntegration returns the specified integration resource. - GetIntegration(ctx context.Context, name string) (types.Integration, error) + GetIntegration(ctx context.Context, name string, withSecrets bool) (types.Integration, error) // GetProxies returns a list of registered proxies. GetProxies() ([]types.Server, error) @@ -1189,6 +1200,8 @@ type Cache interface { ListStaticHostUsers(ctx context.Context, pageSize int, startKey string) ([]*userprovisioningpb.StaticHostUser, string, error) // GetStaticHostUser returns a static host user by name. GetStaticHostUser(ctx context.Context, name string) (*userprovisioningpb.StaticHostUser, error) + + services.GitServersGetter } type NodeWrapper struct { diff --git a/lib/auth/authclient/clt.go b/lib/auth/authclient/clt.go index 3e1d4081cf7ad..b657bfb0b9a77 100644 --- a/lib/auth/authclient/clt.go +++ b/lib/auth/authclient/clt.go @@ -1858,6 +1858,10 @@ type ClientI interface { // GenerateAppToken creates a JWT token with application access. GenerateAppToken(ctx context.Context, req types.GenerateAppTokenRequest) (string, error) + + // TODO is there a better place for this? + GenerateGitHubUserCert(ctx context.Context, in *integrationv1.GenerateGitHubUserCertRequest) (*integrationv1.GenerateGitHubUserCertResponse, error) + CreateGithubAuthRequestForUser(ctx context.Context, req *proto.CreateGithubAuthRequestForUserRequest) (*types.GithubAuthRequest, error) } type CreateAppSessionForV15Client interface { diff --git a/lib/auth/github.go b/lib/auth/github.go index ed80928ce7a68..55fc410237539 100644 --- a/lib/auth/github.go +++ b/lib/auth/github.go @@ -487,7 +487,7 @@ func validateGithubAuthCallbackHelper(ctx context.Context, m githubManager, diag } func (a *Server) getGithubConnectorAndClient(ctx context.Context, request types.GithubAuthRequest) (types.GithubConnector, *oauth2.Client, error) { - if request.SSOTestFlow { + if request.SSOTestFlow || request.AuthenticatedUser != "" { if request.ConnectorSpec == nil { return nil, nil, trace.BadParameter("ConnectorSpec cannot be nil when SSOTestFlow is true") } @@ -503,6 +503,7 @@ func (a *Server) getGithubConnectorAndClient(ctx context.Context, request types. } // construct client directly. + // TODO we should cache for AuthenticatedUser flow. config := newGithubOAuth2Config(connector) client, err := oauth2.NewClient(http.DefaultClient, config) if err != nil { @@ -566,6 +567,30 @@ func (a *Server) getGithubOAuth2Client(connector types.GithubConnector) (*oauth2 return client, nil } +func (a *Server) validateGithubAuthCallbackForAuthenticatedUser(ctx context.Context, code string, req *types.GithubAuthRequest) (*authclient.GithubAuthResponse, error) { + githubUser, err := a.getGithubUser(ctx, code, req) + if err != nil { + return nil, trace.Wrap(err) + } + + // Attach the new (but secondary) identity. + teleportUser, err := a.GetUser(ctx, req.AuthenticatedUser, false) + if err != nil { + return nil, trace.Wrap(err) + } + teleportUser.SetGithubIdentities(append(teleportUser.GetGithubIdentities(), githubUser.makeExternalIdentity(req.ConnectorID))) + + // Instead of updating the user, refresh the user login state. + userState, err := a.ulsGenerator.Refresh(ctx, teleportUser, a.UserLoginStates) + if err != nil { + return nil, trace.Wrap(err) + } + + // TODO this flow is not a login technically, should a.CallLoginHook be called? + // TODO what about existing access requests? + return a.makeGithubAuthResponse(ctx, req, userState, githubUser, req.CertTTL) +} + // ValidateGithubAuthCallback validates Github auth callback redirect func (a *Server) validateGithubAuthCallback(ctx context.Context, diagCtx *SSODiagContext, q url.Values) (*authclient.GithubAuthResponse, error) { logger := log.WithFields(logrus.Fields{teleport.ComponentKey: "github"}) @@ -606,10 +631,15 @@ func (a *Server) validateGithubAuthCallback(ctx context.Context, diagCtx *SSODia } diagCtx.Info.TestFlow = req.SSOTestFlow + if req.AuthenticatedUser != "" { + return a.validateGithubAuthCallbackForAuthenticatedUser(ctx, code, req) + } + connector, client, err := a.getGithubConnectorAndClient(ctx, *req) if err != nil { return nil, trace.Wrap(err, "Failed to get GitHub connector and client.") } + diagCtx.Info.GithubTeamsToLogins = connector.GetTeamsToLogins() diagCtx.Info.GithubTeamsToRoles = connector.GetTeamsToRoles() logger.Debugf("Connector %q teams to logins: %v, roles: %v", connector.GetName(), connector.GetTeamsToLogins(), connector.GetTeamsToRoles()) @@ -642,6 +672,7 @@ func (a *Server) validateGithubAuthCallback(ctx context.Context, diagCtx *SSODia Roles: params.Roles, Traits: params.Traits, SessionTTL: types.Duration(params.SessionTTL), + UserID: params.UserID, } user, err := a.createGithubUser(ctx, params, req.SSOTestFlow) @@ -653,25 +684,30 @@ func (a *Server) validateGithubAuthCallback(ctx context.Context, diagCtx *SSODia return nil, trace.Wrap(err) } + // Auth was successful, return session, certificate, etc. to caller. userState, err := a.GetUserOrLoginState(ctx, user.GetName()) if err != nil { return nil, trace.Wrap(err) } - // Auth was successful, return session, certificate, etc. to caller. - auth := authclient.GithubAuthResponse{ - Req: GithubAuthRequestFromProto(req), - Identity: types.ExternalIdentity{ - ConnectorID: params.ConnectorName, - Username: params.Username, - }, - Username: user.GetName(), - } - // In test flow skip signing and creating web sessions. if req.SSOTestFlow { diagCtx.Info.Success = true - return &auth, nil + return &authclient.GithubAuthResponse{ + Req: GithubAuthRequestFromProto(req), + Identity: userResp.makeExternalIdentity(req.ConnectorID), + Username: userState.GetName(), + }, nil + } + + return a.makeGithubAuthResponse(ctx, req, userState, userResp, params.SessionTTL) +} + +func (a *Server) makeGithubAuthResponse(ctx context.Context, req *types.GithubAuthRequest, userState services.UserState, githubUser *GithubUserResponse, sessionTTL time.Duration) (*authclient.GithubAuthResponse, error) { + auth := authclient.GithubAuthResponse{ + Req: GithubAuthRequestFromProto(req), + Identity: githubUser.makeExternalIdentity(req.ConnectorID), + Username: userState.GetName(), } // If the request is coming from a browser, create a web session. @@ -680,7 +716,7 @@ func (a *Server) validateGithubAuthCallback(ctx context.Context, diagCtx *SSODia User: userState.GetName(), Roles: userState.GetRoles(), Traits: userState.GetTraits(), - SessionTTL: params.SessionTTL, + SessionTTL: sessionTTL, LoginTime: a.clock.Now().UTC(), LoginIP: req.ClientLoginIP, LoginUserAgent: req.ClientUserAgent, @@ -711,7 +747,7 @@ func (a *Server) validateGithubAuthCallback(ctx context.Context, diagCtx *SSODia if len(sshPublicKey)+len(tlsPublicKey) > 0 { sshCert, tlsCert, err := a.CreateSessionCerts(ctx, &SessionCertsRequest{ UserState: userState, - SessionTTL: params.SessionTTL, + SessionTTL: sessionTTL, SSHPubKey: sshPublicKey, TLSPubKey: tlsPublicKey, SSHAttestationStatement: sshAttestationStatement, @@ -747,6 +783,43 @@ func (a *Server) validateGithubAuthCallback(ctx context.Context, diagCtx *SSODia return &auth, nil } +func (a *Server) getGithubUser(ctx context.Context, code string, req *types.GithubAuthRequest) (*GithubUserResponse, error) { + logger := log.WithFields(logrus.Fields{teleport.ComponentKey: "github"}) + + connector, client, err := a.getGithubConnectorAndClient(ctx, *req) + if err != nil { + return nil, trace.Wrap(err, "Failed to get GitHub connector and client.") + } + + logger.Debugf("Connector %q for authenticated user %v", connector.GetName(), req.AuthenticatedUser) + + // exchange the authorization code received by the callback for an access token + token, err := client.RequestToken(oauth2.GrantTypeAuthCode, code) + if err != nil { + return nil, trace.Wrap(err, "Requesting GitHub OAuth2 token failed.") + } + + logger.Debugf("Obtained OAuth2 token: Type=%v Expires=%v Scope=%v.", + token.TokenType, token.Expires, token.Scope) + + // Get the Github organizations the user is a member of so we don't + // make unnecessary API requests + apiEndpoint, err := buildAPIEndpoint(connector.GetAPIEndpointURL()) + if err != nil { + return nil, trace.Wrap(err) + } + ghClient := &githubAPIClient{ + token: token.AccessToken, + authServer: a, + apiEndpoint: apiEndpoint, + } + userResp, err := ghClient.getUser() + if err != nil { + return nil, trace.Wrap(err, "failed to query GitHub user info") + } + return userResp, nil +} + func (a *Server) getGithubUserAndTeams( ctx context.Context, connector types.GithubConnector, @@ -848,12 +921,16 @@ type CreateUserParams struct { // SessionTTL is how long this session will last. SessionTTL time.Duration + + // UserID is the ID of the connector identity. + UserID string } func (a *Server) calculateGithubUser(ctx context.Context, diagCtx *SSODiagContext, connector types.GithubConnector, claims *types.GithubClaims, request *types.GithubAuthRequest) (*CreateUserParams, error) { p := CreateUserParams{ ConnectorName: connector.GetName(), Username: claims.Username, + UserID: claims.ID, } // Calculate logins, kubegroups, roles, and traits. @@ -917,6 +994,7 @@ func (a *Server) createGithubUser(ctx context.Context, p *CreateUserParams, dryR GithubIdentities: []types.ExternalIdentity{{ ConnectorID: p.ConnectorName, Username: p.Username, + UserID: p.UserID, }}, CreatedBy: types.CreatedBy{ User: types.UserRef{Name: teleport.UserSystem}, @@ -1076,6 +1154,7 @@ func populateGithubClaims(user *GithubUserResponse, teams []GithubTeamResponse) Username: user.Login, OrganizationToTeams: orgToTeams, Teams: teamList, + ID: user.getIDStr(), } log.WithFields(logrus.Fields{teleport.ComponentKey: "github"}).Debugf( "Claims: %#v.", claims) @@ -1097,6 +1176,20 @@ type githubAPIClient struct { type GithubUserResponse struct { // Login is the username Login string `json:"login"` + // ID is the user ID + ID int64 `json:"id"` +} + +func (r GithubUserResponse) getIDStr() string { + return fmt.Sprintf("%v", r.ID) +} + +func (r GithubUserResponse) makeExternalIdentity(connectorID string) types.ExternalIdentity { + return types.ExternalIdentity{ + ConnectorID: connectorID, + Username: r.Login, + UserID: r.getIDStr(), + } } // getEmails retrieves a list of emails for authenticated user diff --git a/lib/auth/gitserver/gitserverv1/service.go b/lib/auth/gitserver/gitserverv1/service.go new file mode 100644 index 0000000000000..84b8699e0e02d --- /dev/null +++ b/lib/auth/gitserver/gitserverv1/service.go @@ -0,0 +1,148 @@ +/* + * Teleport + * Copyright (C) 2024 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 gitserverv1 + +import ( + "context" + "log/slog" + + "github.com/gravitational/teleport" + gitserverv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/gitserver/v1" + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/authz" + "github.com/gravitational/teleport/lib/services" + "github.com/gravitational/trace" + "google.golang.org/protobuf/types/known/emptypb" +) + +// Config is the config for Service. +type Config struct { + Authorizer authz.Authorizer + Backend services.Presence + Cache services.GitServersGetter + Log *slog.Logger +} + +func (c *Config) CheckAndSetDefaults() error { + if c.Authorizer == nil { + return trace.BadParameter("authorizer is required") + } + if c.Backend == nil { + return trace.BadParameter("backend is required") + } + if c.Cache == nil { + return trace.BadParameter("cahe is required") + } + if c.Log == nil { + c.Log = slog.With(teleport.ComponentKey, "gitserver.service") + } + return nil +} + +type Service struct { + gitserverv1.UnsafeGitServerServiceServer + + cfg Config +} + +func NewService(cfg Config) (*Service, error) { + if err := cfg.CheckAndSetDefaults(); err != nil { + return nil, trace.Wrap(err) + } + return &Service{ + cfg: cfg, + }, nil +} + +func (s *Service) GetGitServer(ctx context.Context, req *gitserverv1.GetGitServerRequest) (*types.ServerV2, error) { + authCtx, err := s.authorize(ctx, types.VerbRead) + if err != nil { + return nil, trace.Wrap(err) + } + + server, err := s.cfg.Cache.GetGitServer(ctx, req.GetName()) + if err != nil { + return nil, trace.Wrap(err) + } + + if err := s.checkAccess(authCtx, server); err != nil { + if trace.IsAccessDenied(err) { + return nil, trace.NotFound("not found") + } + return nil, trace.Wrap(err) + } + + serverV2, ok := server.(*types.ServerV2) + if !ok { + return nil, trace.Errorf("encountered unexpected server type: %T", serverV2) + } + return serverV2, nil +} + +func (s *Service) UpsertGitServer(ctx context.Context, req *gitserverv1.UpsertGitServerRequest) (*types.ServerV2, error) { + _, err := s.authorize(ctx, types.VerbCreate, types.VerbUpdate) + if err != nil { + return nil, trace.Wrap(err) + } + + server := types.Server(req.Server) + if err := services.CheckAndSetDefaults(server); err != nil { + return nil, trace.Wrap(err) + } + + upserted, err := s.cfg.Backend.UpsertGitServer(ctx, server) + if err != nil { + return nil, trace.Wrap(err) + } + + serverV2, ok := upserted.(*types.ServerV2) + if !ok { + return nil, trace.Errorf("encountered unexpected server type: %T", serverV2) + } + return serverV2, nil +} + +func (s *Service) DeleteGitServer(ctx context.Context, req *gitserverv1.DeleteGitServerRequest) (*emptypb.Empty, error) { + _, err := s.authorize(ctx, types.VerbDelete) + if err != nil { + return nil, trace.Wrap(err) + } + if err := s.cfg.Backend.DeleteGitServer(ctx, req.GetName()); err != nil { + return nil, trace.Wrap(err) + } + return &emptypb.Empty{}, nil +} + +func (s *Service) authorize(ctx context.Context, verb string, additionalVerbs ...string) (*authz.Context, error) { + authCtx, err := s.cfg.Authorizer.Authorize(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + if err := authCtx.CheckAccessToKind(types.KindGitServer, verb, additionalVerbs...); err != nil { + return nil, trace.Wrap(err) + } + return authCtx, nil +} + +func (s *Service) checkAccess(authCtx *authz.Context, server types.Server) error { + // MFA is not required for operations on git resources but will be enforced + // at the connection time. + state := services.AccessState{MFAVerified: true} + return trace.Wrap(authCtx.Checker.CheckAccess(server, state)) +} diff --git a/lib/auth/grpcserver.go b/lib/auth/grpcserver.go index 25feaab22dfb9..c93234c303562 100644 --- a/lib/auth/grpcserver.go +++ b/lib/auth/grpcserver.go @@ -57,6 +57,7 @@ import ( dbobjectv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/dbobject/v1" dbobjectimportrulev1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/dbobjectimportrule/v1" discoveryconfigv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/discoveryconfig/v1" + gitserverpb "github.com/gravitational/teleport/api/gen/proto/go/teleport/gitserver/v1" integrationv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/integration/v1" kubewaitingcontainerv1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/kubewaitingcontainer/v1" loginrulev1pb "github.com/gravitational/teleport/api/gen/proto/go/teleport/loginrule/v1" @@ -84,8 +85,9 @@ import ( "github.com/gravitational/teleport/lib/auth/dbobject/dbobjectv1" "github.com/gravitational/teleport/lib/auth/dbobjectimportrule/dbobjectimportrulev1" "github.com/gravitational/teleport/lib/auth/discoveryconfig/discoveryconfigv1" + "github.com/gravitational/teleport/lib/auth/gitserver/gitserverv1" "github.com/gravitational/teleport/lib/auth/integration/integrationv1" - "github.com/gravitational/teleport/lib/auth/kubewaitingcontainer/kubewaitingcontainerv1" + kubewaitingcontainerv1 "github.com/gravitational/teleport/lib/auth/kubewaitingcontainer/kubewaitingcontainerv1" "github.com/gravitational/teleport/lib/auth/loginrule/loginrulev1" "github.com/gravitational/teleport/lib/auth/machineid/machineidv1" "github.com/gravitational/teleport/lib/auth/notifications/notificationsv1" @@ -598,6 +600,10 @@ func validateUserCertsRequest(actx *grpcContext, req *authpb.UserCertsRequest) e if req.NodeName == "" { return trace.BadParameter("missing NodeName field in a ssh-only UserCertsRequest") } + case authpb.UserCertsRequest_GitServer: + if req.RouteToGitServer.GitHubOrganization == "" { + return trace.BadParameter("missing GithubOrganization field in a git-server-only UserCertsRequest") + } case authpb.UserCertsRequest_Kubernetes: if req.KubernetesCluster == "" { return trace.BadParameter("missing KubernetesCluster field in a kubernetes-only UserCertsRequest") @@ -2467,6 +2473,8 @@ func userSingleUseCertsGenerate(ctx context.Context, actx *grpcContext, req auth switch req.Usage { case authpb.UserCertsRequest_SSH: resp.SSH = certs.SSH + case authpb.UserCertsRequest_GitServer: + resp.SSH = certs.SSH case authpb.UserCertsRequest_Kubernetes, authpb.UserCertsRequest_Database, authpb.UserCertsRequest_WindowsDesktop, authpb.UserCertsRequest_App: resp.TLS = certs.TLS default: @@ -2910,6 +2918,19 @@ func (g *GRPCServer) CreateGithubAuthRequest(ctx context.Context, req *types.Git return response, nil } +// TODO +func (g *GRPCServer) CreateGithubAuthRequestForUser(ctx context.Context, req *authpb.CreateGithubAuthRequestForUserRequest) (*types.GithubAuthRequest, error) { + auth, err := g.authenticate(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + response, err := auth.CreateGithubAuthRequestForUser(ctx, req) + if err != nil { + return nil, trace.Wrap(err) + } + return response, nil +} + // GetGithubAuthRequest gets a GithubAuthRequest by id. func (g *GRPCServer) GetGithubAuthRequest(ctx context.Context, req *authpb.GetGithubAuthRequestRequest) (*types.GithubAuthRequest, error) { auth, err := g.authenticate(ctx) @@ -5443,6 +5464,13 @@ func NewGRPCServer(cfg GRPCServerConfig) (*GRPCServer, error) { loginrulev1pb.RegisterLoginRuleServiceServer(server, loginrulev1.NotImplementedService{}) } + gitServerService, err := gitserverv1.NewService(gitserverv1.Config{ + Authorizer: cfg.Authorizer, + Backend: cfg.AuthServer.Services, + Cache: cfg.AuthServer.Cache, + }) + gitserverpb.RegisterGitServerServiceServer(server, gitServerService) + return authServer, nil } diff --git a/lib/auth/integration/integrationv1/service.go b/lib/auth/integration/integrationv1/service.go index 4a4d5638bafce..0e3fdf86e49dd 100644 --- a/lib/auth/integration/integrationv1/service.go +++ b/lib/auth/integration/integrationv1/service.go @@ -21,11 +21,14 @@ package integrationv1 import ( "context" "crypto" + "crypto/rand" "fmt" + "time" "github.com/gravitational/trace" "github.com/jonboulle/clockwork" "github.com/sirupsen/logrus" + "golang.org/x/crypto/ssh" "google.golang.org/protobuf/types/known/emptypb" "github.com/gravitational/teleport" @@ -33,6 +36,7 @@ import ( "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" "github.com/gravitational/teleport/lib/authz" + "github.com/gravitational/teleport/lib/cryptosuites" "github.com/gravitational/teleport/lib/events" "github.com/gravitational/teleport/lib/services" ) @@ -57,6 +61,10 @@ type Cache interface { type KeyStoreManager interface { // GetJWTSigner selects a usable JWT keypair from the given keySet and returns a [crypto.Signer]. GetJWTSigner(ctx context.Context, ca types.CertAuthority) (crypto.Signer, error) + // NewSSHKeyPair generates a new SSH keypair in the keystore backend and returns it. + NewSSHKeyPair(ctx context.Context, purpose cryptosuites.KeyPurpose) (*types.SSHKeyPair, error) + // TODO + GetSSHSignerForKeySet(ctx context.Context, keySet types.CAKeySet) (ssh.Signer, error) } // ServiceConfig holds configuration options for @@ -148,7 +156,7 @@ func (s *Service) ListIntegrations(ctx context.Context, req *integrationpb.ListI return nil, trace.Wrap(err) } - results, nextKey, err := s.cache.ListIntegrations(ctx, int(req.GetLimit()), req.GetNextKey()) + results, nextKey, err := s.cache.ListIntegrations(ctx, int(req.GetLimit()), req.GetNextKey(), req.WithSecrets) if err != nil { return nil, trace.Wrap(err) } @@ -175,10 +183,23 @@ func (s *Service) GetIntegration(ctx context.Context, req *integrationpb.GetInte return nil, trace.Wrap(err) } - if err := authCtx.CheckAccessToKind(types.KindIntegration, types.VerbRead); err != nil { + readVerb := types.VerbReadNoSecrets + if req.WithSecrets { + readVerb = types.VerbRead + } + + if err := authCtx.CheckAccessToKind(types.KindIntegration, readVerb); err != nil { return nil, trace.Wrap(err) } - integration, err := s.cache.GetIntegration(ctx, req.GetName()) + + // Require admin MFA to read secrets. + if req.WithSecrets { + if err := authCtx.AuthorizeAdminActionAllowReusedMFA(); err != nil { + return nil, trace.Wrap(err) + } + } + + integration, err := s.cache.GetIntegration(ctx, req.GetName(), req.WithSecrets) if err != nil { return nil, trace.Wrap(err) } @@ -202,7 +223,22 @@ func (s *Service) CreateIntegration(ctx context.Context, req *integrationpb.Crea return nil, trace.Wrap(err) } - ig, err := s.backend.CreateIntegration(ctx, req.GetIntegration()) + // TODO move to a helper? + reqIg := req.GetIntegration() + switch reqIg.GetSubKind() { + case types.IntegrationSubKindGitHub: + spec := reqIg.GetGitHubIntegrationSpec() + if spec.Proxy == nil { + spec.Proxy = &types.GitHubProxy{} + } + // TODO(greedy52) support per auth CA like HSM. + ca, err := s.keyStoreManager.NewSSHKeyPair(ctx, cryptosuites.UserCASSH) + if err != nil { + return nil, trace.Wrap(err) + } + spec.Proxy.CertAuthorities = append(spec.Proxy.CertAuthorities, ca) + } + ig, err := s.backend.CreateIntegration(ctx, reqIg) if err != nil { return nil, trace.Wrap(err) } @@ -292,7 +328,7 @@ func (s *Service) DeleteIntegration(ctx context.Context, req *integrationpb.Dele return nil, trace.Wrap(err) } - ig, err := s.cache.GetIntegration(ctx, req.GetName()) + ig, err := s.cache.GetIntegration(ctx, req.GetName(), false) if err != nil { return nil, trace.Wrap(err) } @@ -339,6 +375,10 @@ func getIntegrationMetadata(ig types.Integration) (apievents.IntegrationMetadata TenantID: ig.GetAzureOIDCIntegrationSpec().TenantID, ClientID: ig.GetAzureOIDCIntegrationSpec().ClientID, } + case types.IntegrationSubKindGitHub: + igMeta.GitHub = &apievents.GitHubIntegrationMetadata{ + Organization: ig.GetGitHubIntegrationSpec().Organization, + } default: return apievents.IntegrationMetadata{}, fmt.Errorf("unknown integration subkind: %s", igMeta.SubKind) } @@ -351,3 +391,64 @@ func getIntegrationMetadata(ig types.Integration) (apievents.IntegrationMetadata func (s *Service) DeleteAllIntegrations(ctx context.Context, _ *integrationpb.DeleteAllIntegrationsRequest) (*emptypb.Empty, error) { return nil, trace.BadParameter("DeleteAllIntegrations is deprecated") } + +func (s *Service) GenerateGitHubUserCert(ctx context.Context, in *integrationpb.GenerateGitHubUserCertRequest) (*integrationpb.GenerateGitHubUserCertResponse, error) { + authCtx, err := s.authorizer.Authorize(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + if !authz.HasBuiltinRole(*authCtx, string(types.RoleProxy)) { + return nil, trace.AccessDenied("GenerateGitHubUserCert is only available to proxy services") + } + + if in.Login == "" && in.UserId == "" { + return nil, trace.AccessDenied("one of github user login or id must be provided") + } + + key, _, _, _, err := ssh.ParseAuthorizedKey(in.PublicKey) + if err != nil { + return nil, trace.Wrap(err) + } + + integration, err := s.cache.GetIntegration(ctx, in.Integration, true) + if err != nil { + return nil, trace.Wrap(err) + } + + spec := integration.GetGitHubIntegrationSpec() + + caSigner, err := s.keyStoreManager.GetSSHSignerForKeySet(ctx, types.CAKeySet{ + SSH: spec.Proxy.CertAuthorities, + }) + if err != nil { + return nil, trace.Wrap(err) + } + + // TODO clockwork? + now := time.Now() + validAfter := now.Add(-time.Minute) + expires := now.Add(in.Ttl.AsDuration()) + newSSHCert := &ssh.Certificate{ + Key: key, + CertType: ssh.UserCert, + KeyId: in.KeyId, + ValidAfter: uint64(validAfter.Unix()), + ValidBefore: uint64(expires.Unix()), + Permissions: ssh.Permissions{ + Extensions: make(map[string]string), + }, + } + switch { + case in.UserId != "": + newSSHCert.Extensions["id@github.com"] = in.UserId + case in.Login != "": + newSSHCert.Extensions["login@github.com"] = in.Login + } + if err := newSSHCert.SignCert(rand.Reader, caSigner); err != nil { + return nil, trace.Wrap(err) + } + return &integrationpb.GenerateGitHubUserCertResponse{ + AuthorizedKey: ssh.MarshalAuthorizedKey(newSSHCert), + }, nil +} diff --git a/lib/auth/keygen/keygen.go b/lib/auth/keygen/keygen.go index ce8a26dd78dfe..87a0c0c54ce10 100644 --- a/lib/auth/keygen/keygen.go +++ b/lib/auth/keygen/keygen.go @@ -218,6 +218,12 @@ func (k *Keygen) GenerateUserCertWithoutValidation(c services.UserCertParams) ([ if credID := c.DeviceCredentialID; credID != "" { cert.Permissions.Extensions[teleport.CertExtensionDeviceCredentialID] = credID } + if c.GitHubUserID != "" { + cert.Permissions.Extensions[teleport.CertExtensionGitHubUserID] = c.GitHubUserID + } + if c.GitHubUsername != "" { + cert.Permissions.Extensions[teleport.CertExtensionGitHubUsername] = c.GitHubUsername + } if c.PinnedIP != "" { if modules.GetModules().BuildType() != modules.BuildEnterprise { diff --git a/lib/auth/keystore/manager.go b/lib/auth/keystore/manager.go index 8d46840511676..0f9970298e728 100644 --- a/lib/auth/keystore/manager.go +++ b/lib/auth/keystore/manager.go @@ -261,6 +261,10 @@ func (m *Manager) GetAdditionalTrustedSSHSigner(ctx context.Context, ca types.Ce return signer, trace.Wrap(err) } +func (m *Manager) GetSSHSignerForKeySet(ctx context.Context, keySet types.CAKeySet) (ssh.Signer, error) { + return m.getSSHSigner(ctx, keySet) +} + func (m *Manager) getSSHSigner(ctx context.Context, keySet types.CAKeySet) (ssh.Signer, error) { for _, backend := range m.usableSigningBackends { for _, keyPair := range keySet.SSH { diff --git a/lib/auth/sessions.go b/lib/auth/sessions.go index 0b394e1450da4..41ca9f733406b 100644 --- a/lib/auth/sessions.go +++ b/lib/auth/sessions.go @@ -742,6 +742,8 @@ func (a *Server) CreateSessionCerts(ctx context.Context, req *SessionCertsReques routeToCluster: req.RouteToCluster, kubernetesCluster: req.KubernetesCluster, loginIP: req.LoginIP, + githubUserID: req.UserState.GetGitHubUserID(), + githubUsername: req.UserState.GetGitHubUsername(), }) if err != nil { return nil, nil, trace.Wrap(err) diff --git a/lib/auth/userloginstate/generator.go b/lib/auth/userloginstate/generator.go index 5b8551b392db4..d2098687bab20 100644 --- a/lib/auth/userloginstate/generator.go +++ b/lib/auth/userloginstate/generator.go @@ -19,7 +19,9 @@ package userloginstate import ( + "cmp" "context" + "log/slog" "github.com/gravitational/trace" "github.com/jonboulle/clockwork" @@ -145,6 +147,8 @@ func (g *Generator) Generate(ctx context.Context, user types.User) (*userloginst Roles: utils.CopyStrings(user.GetRoles()), Traits: traits, UserType: user.GetUserType(), + GitHubUserID: user.GetGitHubUserID(), + GitHubUsername: user.GetGitHubUsername(), }) if err != nil { return nil, trace.Wrap(err) @@ -278,6 +282,29 @@ func (g *Generator) emitUsageEvent(ctx context.Context, user types.User, state * return nil } +// maybePreserveOldStates retrieves states from old user login state and keeps +// them in the new one. +// +// Currently these states are being preserved during refresh: +// - GitHub user ID and username +func maybePreserveOldStates(ctx context.Context, newState *userloginstate.UserLoginState, ulsService services.UserLoginStates) *userloginstate.UserLoginState { + if newState.GetGitHubUserID() != "" && newState.GetGitHubUsername() != "" { + return newState + } + + oldState, err := ulsService.GetUserLoginState(ctx, newState.GetName()) + if err != nil { + if !trace.IsNotFound(err) { + slog.WarnContext(ctx, "failed to fetch old login state", "error", err) + } + return newState + } + + newState.SetGitHubUserID(cmp.Or(newState.GetGitHubUserID(), oldState.GetGitHubUserID())) + newState.SetGitHubUsername(cmp.Or(newState.GetGitHubUsername(), oldState.GetGitHubUsername())) + return newState +} + // Refresh will take the user and update the user login state in the backend. func (g *Generator) Refresh(ctx context.Context, user types.User, ulsService services.UserLoginStates) (*userloginstate.UserLoginState, error) { uls, err := g.Generate(ctx, user) @@ -285,6 +312,8 @@ func (g *Generator) Refresh(ctx context.Context, user types.User, ulsService ser return nil, trace.Wrap(err) } + uls = maybePreserveOldStates(ctx, uls, ulsService) + uls, err = ulsService.UpsertUserLoginState(ctx, uls) return uls, trace.Wrap(err) } diff --git a/lib/authz/permissions.go b/lib/authz/permissions.go index a235e11b8edb1..403aafd564586 100644 --- a/lib/authz/permissions.go +++ b/lib/authz/permissions.go @@ -796,6 +796,9 @@ func (a *authorizer) authorizeRemoteBuiltinRole(r RemoteBuiltinRole) (*Context, AppLabels: types.Labels{types.Wildcard: []string{types.Wildcard}}, DatabaseLabels: types.Labels{types.Wildcard: []string{types.Wildcard}}, KubernetesLabels: types.Labels{types.Wildcard: []string{types.Wildcard}}, + GithubPermissions: []types.GitHubPermission{{ + Organizations: []string{types.Wildcard}, + }}, Rules: []types.Rule{ types.NewRule(types.KindNode, services.RO()), types.NewRule(types.KindProxy, services.RO()), @@ -815,6 +818,7 @@ func (a *authorizer) authorizeRemoteBuiltinRole(r RemoteBuiltinRole) (*Context, types.NewRule(types.KindInstaller, services.RO()), types.NewRule(types.KindUIConfig, services.RO()), types.NewRule(types.KindDatabaseService, services.RO()), + types.NewRule(types.KindGitServer, services.RO()), // this rule allows remote proxy to update the cluster's certificate authorities // during certificates renewal { @@ -868,6 +872,9 @@ func roleSpecForProxy(clusterName string) types.RoleSpecV6 { DatabaseLabels: types.Labels{types.Wildcard: []string{types.Wildcard}}, DatabaseServiceLabels: types.Labels{types.Wildcard: []string{types.Wildcard}}, KubernetesLabels: types.Labels{types.Wildcard: []string{types.Wildcard}}, + GithubPermissions: []types.GitHubPermission{{ + Organizations: []string{types.Wildcard}, + }}, Rules: []types.Rule{ types.NewRule(types.KindProxy, services.RW()), types.NewRule(types.KindOIDCRequest, services.RW()), @@ -917,6 +924,7 @@ func roleSpecForProxy(clusterName string) types.RoleSpecV6 { types.NewRule(types.KindAuditQuery, services.RO()), types.NewRule(types.KindSecurityReport, services.RO()), types.NewRule(types.KindSecurityReportState, services.RO()), + types.NewRule(types.KindGitServer, services.RW()), // this rule allows cloud proxies to read // plugins of `openai` type, since Assist uses the OpenAI API and runs in Proxy. { @@ -1110,6 +1118,9 @@ func definitionForBuiltinRole(clusterName string, recConfig readonly.SessionReco DatabaseServiceLabels: types.Labels{types.Wildcard: []string{types.Wildcard}}, ClusterLabels: types.Labels{types.Wildcard: []string{types.Wildcard}}, WindowsDesktopLabels: types.Labels{types.Wildcard: []string{types.Wildcard}}, + GithubPermissions: []types.GitHubPermission{{ + Organizations: []string{types.Wildcard}, + }}, Rules: []types.Rule{ types.NewRule(types.Wildcard, services.RW()), types.NewRule(types.KindDevice, append(services.RW(), types.VerbCreateEnrollToken, types.VerbEnroll)), diff --git a/lib/cache/cache.go b/lib/cache/cache.go index 9a73ca730b4f7..8e1046da496c0 100644 --- a/lib/cache/cache.go +++ b/lib/cache/cache.go @@ -99,6 +99,7 @@ var highVolumeResources = map[string]struct{}{ types.KindWindowsDesktopService: {}, types.KindKubeServer: {}, types.KindDatabaseObject: {}, + types.KindGitServer: {}, } func isHighVolumeResource(kind string) bool { @@ -167,7 +168,7 @@ func ForAuth(cfg Config) Config { {Kind: types.KindUserGroup}, {Kind: types.KindOktaImportRule}, {Kind: types.KindOktaAssignment}, - {Kind: types.KindIntegration}, + {Kind: types.KindIntegration, LoadSecrets: true}, {Kind: types.KindHeadlessAuthentication}, {Kind: types.KindUserLoginState}, {Kind: types.KindDiscoveryConfig}, @@ -185,6 +186,7 @@ func ForAuth(cfg Config) Config { {Kind: types.KindAccessGraphSettings}, {Kind: types.KindSPIFFEFederation}, {Kind: types.KindStaticHostUser}, + {Kind: types.KindGitServer}, } cfg.QueueSize = defaults.AuthQueueSize // We don't want to enable partial health for auth cache because auth uses an event stream @@ -237,6 +239,7 @@ func ForProxy(cfg Config) Config { {Kind: types.KindSecurityReport}, {Kind: types.KindSecurityReportState}, {Kind: types.KindKubeWaitingContainer}, + {Kind: types.KindGitServer}, } cfg.QueueSize = defaults.ProxyQueueSize return cfg @@ -265,6 +268,7 @@ func ForRemoteProxy(cfg Config) Config { {Kind: types.KindDatabaseServer}, {Kind: types.KindDatabaseService}, {Kind: types.KindKubeServer}, + {Kind: types.KindGitServer}, } cfg.QueueSize = defaults.ProxyQueueSize return cfg @@ -2840,7 +2844,7 @@ func (c *Cache) GetOktaAssignment(ctx context.Context, name string) (types.OktaA } // ListIntegrations returns a paginated list of all Integrations resources. -func (c *Cache) ListIntegrations(ctx context.Context, pageSize int, nextKey string) ([]types.Integration, string, error) { +func (c *Cache) ListIntegrations(ctx context.Context, pageSize int, nextKey string, withSecrets bool) ([]types.Integration, string, error) { ctx, span := c.Tracer.Start(ctx, "cache/ListIntegrations") defer span.End() @@ -2849,11 +2853,12 @@ func (c *Cache) ListIntegrations(ctx context.Context, pageSize int, nextKey stri return nil, "", trace.Wrap(err) } defer rg.Release() - return rg.reader.ListIntegrations(ctx, pageSize, nextKey) + // TODO bypass cache when withSecrets = true and watch.LoadSecrets = false + return rg.reader.ListIntegrations(ctx, pageSize, nextKey, withSecrets) } // GetIntegration returns the specified Integration resources. -func (c *Cache) GetIntegration(ctx context.Context, name string) (types.Integration, error) { +func (c *Cache) GetIntegration(ctx context.Context, name string, withSecrets bool) (types.Integration, error) { ctx, span := c.Tracer.Start(ctx, "cache/GetIntegration") defer span.End() @@ -2862,7 +2867,7 @@ func (c *Cache) GetIntegration(ctx context.Context, name string) (types.Integrat return nil, trace.Wrap(err) } defer rg.Release() - return rg.reader.GetIntegration(ctx, name) + return rg.reader.GetIntegration(ctx, name, withSecrets) } // ListDiscoveryConfigs returns a paginated list of all DiscoveryConfig resources. @@ -3339,3 +3344,27 @@ func (c *Cache) GetAccessGraphSettings(ctx context.Context) (*clusterconfigpb.Ac } return rg.reader.GetAccessGraphSettings(ctx) } + +// TODO +func (c *Cache) GetGitServer(ctx context.Context, name string) (types.Server, error) { + ctx, span := c.Tracer.Start(ctx, "cache/GetGitServer") + defer span.End() + + rg, err := readCollectionCache(c, c.collections.gitServers) + if err != nil { + return nil, trace.Wrap(err) + } + defer rg.Release() + return rg.reader.GetGitServer(ctx, name) +} +func (c *Cache) GetGitServers(ctx context.Context) ([]types.Server, error) { + ctx, span := c.Tracer.Start(ctx, "cache/GetGitServers") + defer span.End() + + rg, err := readCollectionCache(c, c.collections.gitServers) + if err != nil { + return nil, trace.Wrap(err) + } + defer rg.Release() + return rg.reader.GetGitServers(ctx) +} diff --git a/lib/cache/collections.go b/lib/cache/collections.go index bb6f43178c3c8..cf153459827bd 100644 --- a/lib/cache/collections.go +++ b/lib/cache/collections.go @@ -254,6 +254,7 @@ type cacheCollections struct { globalNotifications collectionReader[notificationGetter] accessMonitoringRules collectionReader[accessMonitoringRuleGetter] spiffeFederations collectionReader[SPIFFEFederationReader] + gitServers collectionReader[services.GitServersGetter] } // setupCollections returns a registry of collections. @@ -394,6 +395,16 @@ func setupCollections(c *Cache, watches []types.WatchKind) (*cacheCollections, e watch: watch, } collections.byKind[resourceKind] = collections.nodes + case types.KindGitServer: + if c.Presence == nil { + return nil, trace.BadParameter("missing parameter Presence") + } + collections.gitServers = &genericCollection[types.Server, services.GitServersGetter, gitServerExecutor]{ + cache: c, + watch: watch, + } + collections.byKind[resourceKind] = collections.gitServers + case types.KindProxy: if c.Presence == nil { return nil, trace.BadParameter("missing parameter Presence") @@ -2684,7 +2695,7 @@ func (integrationsExecutor) getAll(ctx context.Context, cache *Cache, loadSecret for { var igs []types.Integration var err error - igs, startKey, err = cache.Integrations.ListIntegrations(ctx, 0, startKey) + igs, startKey, err = cache.Integrations.ListIntegrations(ctx, 0, startKey, loadSecrets) if err != nil { return nil, trace.Wrap(err) } @@ -3350,3 +3361,33 @@ type accessGraphSettingsGetter interface { } var _ executor[*clusterconfigpb.AccessGraphSettings, accessGraphSettingsGetter] = accessGraphSettingsExecutor{} + +type gitServerExecutor struct{} + +func (gitServerExecutor) getAll(ctx context.Context, cache *Cache, loadSecrets bool) ([]types.Server, error) { + return cache.Presence.GetGitServers(ctx) +} + +func (gitServerExecutor) upsert(ctx context.Context, cache *Cache, resource types.Server) error { + _, err := cache.presenceCache.UpsertGitServer(ctx, resource) + return trace.Wrap(err) +} + +func (gitServerExecutor) deleteAll(ctx context.Context, cache *Cache) error { + return cache.presenceCache.DeleteAllGitServers(ctx) +} + +func (gitServerExecutor) delete(ctx context.Context, cache *Cache, resource types.Resource) error { + return cache.presenceCache.DeleteGitServer(ctx, resource.GetName()) +} + +func (gitServerExecutor) isSingleton() bool { return false } + +func (gitServerExecutor) getReader(cache *Cache, cacheOK bool) services.GitServersGetter { + if cacheOK { + return cache.presenceCache + } + return cache.Config.Presence +} + +var _ executor[types.Server, services.GitServersGetter] = gitServerExecutor{} diff --git a/lib/client/api.go b/lib/client/api.go index 74fd055476196..a4baefda9cdd0 100644 --- a/lib/client/api.go +++ b/lib/client/api.go @@ -27,6 +27,7 @@ import ( "errors" "fmt" "io" + "log/slog" "net" "net/url" "os" @@ -739,6 +740,7 @@ func WithMakeCurrentProfile(makeCurrentProfile bool) RetryWithReloginOption { // IsErrorResolvableWithRelogin returns true if relogin is attempted on `err`. func IsErrorResolvableWithRelogin(err error) bool { + slog.InfoContext(context.Background(), "=== IsErrorResolvableWithRelogin", "err", err) // Private key policy errors indicate that the user must login with an // unexpected private key policy requirement satisfied. This can occur // in the following cases: @@ -1696,6 +1698,89 @@ func WithLocalCommandExecutor(executor func(string, []string) error) func(*SSHOp } } +// TODO +func (tc *TeleportClient) ReissueWithGitHubAuth(ctx context.Context, githubOrg string) error { + keyRing, err := tc.localAgent.GetKeyRing(tc.SiteName, WithAllCerts...) + if err != nil { + return trace.Wrap(err) + } + + clusterClient, err := tc.ConnectToCluster(ctx) + if err != nil { + return trace.Wrap(err) + } + defer clusterClient.Close() + + newUserKeys, certReq, err := clusterClient.prepareUserCertsRequest(ctx, ReissueParams{ + // TODO + //AccessRequests: profile.ActiveRequests.AccessRequests, + RouteToCluster: tc.SiteName, + RouteToGitServer: proto.RouteToGitServer{ + GitHubOrganization: githubOrg, + }, + }, keyRing) + + // TODO REFACTOR!!!! + sshLoginSSO := SSHLoginSSO{ + SSHLogin: SSHLogin{ + ProxyAddr: tc.WebProxyAddr, + /* No need to pass in request related fields since we are not gonna use SSHLogin for the actual request + SSHPubKey: certReq.SSHPublicKey, + TLSPubKey: certReq.TLSPublicKey, + SSHAttestationStatement: certReq.SSHPublicKeyAttestationStatement., + TLSAttestationStatement: certReq.TLSPublicKeyAttestationStatement, + */ + TTL: tc.KeyTTL, + Insecure: tc.InsecureSkipVerify, + Pool: loopbackPool(tc.WebProxyAddr), + Compatibility: tc.CertificateFormat, + RouteToCluster: tc.SiteName, + KubernetesCluster: tc.KubernetesCluster, + ExtraHeaders: tc.ExtraProxyHeaders, + }, + ConnectorID: "TODO", // is this needed? + ConnectorName: "TODO", // is this needed? + Protocol: constants.Github, + BindAddr: tc.BindAddr, + CallbackAddr: tc.CallbackAddr, + Browser: tc.Browser, + PrivateKeyPolicy: tc.PrivateKeyPolicy, + ProxySupportsKeyPolicyMessage: true, + } + + rootClient, err := clusterClient.ConnectToRootCluster(ctx) + if err != nil { + return trace.Wrap(err) + } + defer rootClient.Close() + + loginFunc := func(redirectorReq SSOLoginConsoleReq) (*SSOLoginConsoleResponse, error) { + authRequest, err := rootClient.CreateGithubAuthRequestForUser(ctx, &proto.CreateGithubAuthRequestForUserRequest{ + CertRequest: certReq, + RedirectUrl: redirectorReq.RedirectURL, + //ConnectorId: tc.ConnectorId, do we want this? + }) + if err != nil { + return nil, trace.Wrap(err) + } + return &SSOLoginConsoleResponse{ + RedirectURL: authRequest.RedirectURL, + }, nil + } + + resp, err := SSHAgentSSOLogin(ctx, sshLoginSSO, &RedirectorConfig{ + SSOLoginConsoleRequestFn: loginFunc, + }) + if err != nil { + return trace.Wrap(err) + } + + keyRing.ClusterName = tc.SiteName + keyRing.SSHPrivateKey = newUserKeys.ssh + keyRing.Cert = resp.Cert + return trace.Wrap(tc.localAgent.AddKeyRing(keyRing)) +} + // SSH connects to a node and, if 'command' is specified, executes the command on it, // otherwise runs interactive shell // @@ -2724,17 +2809,25 @@ func (tc *TeleportClient) runCommandOnNodes(ctx context.Context, clt *ClusterCli ) defer span.End() - // Let's check if the first node requires mfa. - // If it's required, run commands sequentially to avoid - // race conditions and weird ux during mfa. - mfaRequiredCheck, err := clt.AuthClient.IsMFARequired(ctx, &proto.IsMFARequiredRequest{ - Target: &proto.IsMFARequiredRequest_Node{ + req := &proto.IsMFARequiredRequest{} + if githubOrg, ok := types.GetGitHubOrgFromNodeAddr(nodes[0].Addr); ok { + req.Target = &proto.IsMFARequiredRequest_GitServer{ + GitServer: &proto.RouteToGitServer{ + GitHubOrganization: githubOrg, + }, + } + } else { + req.Target = &proto.IsMFARequiredRequest_Node{ Node: &proto.NodeLogin{ Node: nodeName(TargetNode{Addr: nodes[0].Addr}), Login: tc.Config.HostLogin, }, - }, - }) + } + } + // Let's check if the first node requires mfa. + // If it's required, run commands sequentially to avoid + // race conditions and weird ux during mfa. + mfaRequiredCheck, err := clt.AuthClient.IsMFARequired(ctx, req) if err != nil { return trace.Wrap(err) } @@ -4714,6 +4807,10 @@ func (tc *TeleportClient) AskOTP(ctx context.Context) (token string, err error) ) defer span.End() + // TODO(greedy52) move to proper place? + closeFunc := maybeUseTTYAsStdinFallback() + defer closeFunc() + stdin := prompt.Stdin() if !stdin.IsTerminal() { return "", trace.Wrap(prompt.ErrNotTerminal, "cannot perform OTP login without a terminal") @@ -4730,6 +4827,10 @@ func (tc *TeleportClient) AskPassword(ctx context.Context) (pwd string, err erro ) defer span.End() + // TODO(greedy52) move to proper place? + closeFunc := maybeUseTTYAsStdinFallback() + defer closeFunc() + stdin := prompt.Stdin() if !stdin.IsTerminal() { return "", trace.Wrap(prompt.ErrNotTerminal, "cannot perform password login without a terminal") @@ -4738,6 +4839,36 @@ func (tc *TeleportClient) AskPassword(ctx context.Context) (pwd string, err erro ctx, tc.Stderr, stdin, fmt.Sprintf("Enter password for Teleport user %v", tc.Config.Username)) } +// TODO(greedy52) move to proper place? +func maybeUseTTYAsStdinFallback() func() { + if prompt.Stdin().IsTerminal() { + return func() {} + } + + tty, err := os.Open("/dev/tty") + if err != nil { + log.Warn("Cannot open /dev/tty.") + return func() {} + } + + // Check if IsTerminal just to be safe. + cr := prompt.NewContextReader(tty) + if !cr.IsTerminal() { + defer tty.Close() + log.Warn("/dev/tty is not terminal.") + return func() {} + } + + go cr.HandleInterrupt() + oldStdin := prompt.Stdin() + prompt.SetStdin(cr) + + return func() { + prompt.SetStdin(oldStdin) + tty.Close() + } +} + // LoadTLSConfig returns the user's TLS configuration, either from static // configuration or from its key store. func (tc *TeleportClient) LoadTLSConfig() (*tls.Config, error) { diff --git a/lib/client/ca_export.go b/lib/client/ca_export.go index d8f648819e4b8..9cc529716eab7 100644 --- a/lib/client/ca_export.go +++ b/lib/client/ca_export.go @@ -49,6 +49,8 @@ type ExportAuthoritiesRequest struct { AuthType string ExportAuthorityFingerprint string UseCompatVersion bool + // TODO + Integration string } // ExportAuthorities returns the list of authorities in OpenSSH compatible formats as a string. diff --git a/lib/client/client.go b/lib/client/client.go index 18d505f397a1a..d426989462137 100644 --- a/lib/client/client.go +++ b/lib/client/client.go @@ -121,6 +121,7 @@ type ReissueParams struct { DropAccessRequests []string RouteToDatabase proto.RouteToDatabase RouteToApp proto.RouteToApp + RouteToGitServer proto.RouteToGitServer // ExistingCreds is a gross hack for lib/web/terminal.go to pass in // existing user credentials. The TeleportClient in lib/web/terminal.go @@ -164,6 +165,8 @@ func (p ReissueParams) usage() proto.UserCertsRequest_CertUsage { // App means a request for a TLS certificate for access to a specific // web app, as specified by RouteToApp. return proto.UserCertsRequest_App + case p.RouteToGitServer.GitHubOrganization != "": + return proto.UserCertsRequest_GitServer default: // All means a request for both SSH and TLS certificates for the // overall user session. These certificates are not specific to any SSH @@ -183,6 +186,8 @@ func (p ReissueParams) isMFARequiredRequest(sshLogin string) (*proto.IsMFARequir req.Target = &proto.IsMFARequiredRequest_Database{Database: &p.RouteToDatabase} case p.RouteToApp.Name != "": req.Target = &proto.IsMFARequiredRequest_App{App: &p.RouteToApp} + case p.RouteToGitServer.GitHubOrganization != "": + req.Target = &proto.IsMFARequiredRequest_GitServer{GitServer: &p.RouteToGitServer} default: return nil, trace.BadParameter("reissue params have no valid MFA target") } diff --git a/lib/client/cluster_client.go b/lib/client/cluster_client.go index 8783bb3b5168c..95eda5f2c94f6 100644 --- a/lib/client/cluster_client.go +++ b/lib/client/cluster_client.go @@ -33,6 +33,7 @@ import ( proxyclient "github.com/gravitational/teleport/api/client/proxy" mfav1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/mfa/v1" "github.com/gravitational/teleport/api/mfa" + "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/api/utils/keys" "github.com/gravitational/teleport/lib/auth/authclient" "github.com/gravitational/teleport/lib/cryptosuites" @@ -310,14 +311,21 @@ func (c *ClusterClient) SessionSSHConfig(ctx context.Context, user string, targe defer authClient.Close() } + params := ReissueParams{ + RouteToCluster: target.Cluster, + MFACheck: target.MFACheck, + } + + if githubOrg, ok := types.GetGitHubOrgFromNodeAddr(target.Addr); ok { + params.RouteToGitServer.GitHubOrganization = githubOrg + } else { + params.NodeName = nodeName(TargetNode{Addr: target.Addr}) + } + log.Debug("Attempting to issue a single-use user certificate with an MFA check.") keyRing, err = c.performMFACeremony(ctx, mfaClt, - ReissueParams{ - NodeName: nodeName(TargetNode{Addr: target.Addr}), - RouteToCluster: target.Cluster, - MFACheck: target.MFACheck, - }, + params, keyRing, c.tc.NewMFAPrompt(), ) @@ -417,6 +425,7 @@ func (c *ClusterClient) prepareUserCertsRequest(ctx context.Context, params Reis DropAccessRequests: params.DropAccessRequests, RouteToDatabase: params.RouteToDatabase, RouteToApp: params.RouteToApp, + RouteToGitServer: params.RouteToGitServer, NodeName: params.NodeName, Usage: params.usage(), Format: c.tc.CertificateFormat, diff --git a/lib/client/profile.go b/lib/client/profile.go index e335cd62e5137..7f8560524d753 100644 --- a/lib/client/profile.go +++ b/lib/client/profile.go @@ -22,6 +22,7 @@ import ( "net/url" "os" "path/filepath" + "slices" "sort" "sync" "time" @@ -242,6 +243,10 @@ type ProfileStatus struct { // SAMLSingleLogoutEnabled is whether SAML SLO (single logout) is enabled, this can only be true if this is a SAML SSO session // using an auth connector with a SAML SLO URL configured. SAMLSingleLogoutEnabled bool + + //TODO + GitHubUserID string + GitHubUsername string } // profileOptions contains fields needed to initialize a profile beyond those @@ -312,6 +317,8 @@ func profileStatusFromKeyRing(keyRing *KeyRing, opts profileOptions) (*ProfileSt ext == teleport.CertExtensionTeleportTraits || ext == teleport.CertExtensionTeleportRouteToCluster || ext == teleport.CertExtensionTeleportActiveRequests || + ext == teleport.CertExtensionGitHubUserID || + ext == teleport.CertExtensionGitHubUsername || ext == teleport.CertExtensionAllowedResources { continue } @@ -348,6 +355,12 @@ func profileStatusFromKeyRing(keyRing *KeyRing, opts profileOptions) (*ProfileSt } } + githubUserID := sshCert.Extensions[teleport.CertExtensionGitHubUserID] + githubUsername := sshCert.Extensions[teleport.CertExtensionGitHubUsername] + logins := slices.DeleteFunc(sshCert.ValidPrincipals, func(login string) bool { + return githubUserID != "" && githubUserID == login + }) + return &ProfileStatus{ Name: opts.ProfileName, Dir: opts.ProfileDir, @@ -356,7 +369,7 @@ func profileStatusFromKeyRing(keyRing *KeyRing, opts profileOptions) (*ProfileSt Host: opts.WebProxyAddr, }, Username: opts.Username, - Logins: sshCert.ValidPrincipals, + Logins: logins, ValidUntil: validUntil, Extensions: extensions, CriticalOptions: sshCert.CriticalOptions, @@ -375,6 +388,8 @@ func profileStatusFromKeyRing(keyRing *KeyRing, opts profileOptions) (*ProfileSt IsVirtual: opts.IsVirtual, AllowedResourceIDs: allowedResourceIDs, SAMLSingleLogoutEnabled: opts.SAMLSingleLogoutEnabled, + GitHubUserID: githubUserID, + GitHubUsername: githubUsername, }, nil } diff --git a/lib/events/api.go b/lib/events/api.go index e729ba176c85d..46db63a5e7a11 100644 --- a/lib/events/api.go +++ b/lib/events/api.go @@ -249,6 +249,9 @@ const ( ExecEventCode = "exitCode" ExecEventError = "exitError" + // GitCommand is an exec command executed by `git`. + GitCommandEvent = "git.command" + // SubsystemEvent is the result of the execution of a subsystem. SubsystemEvent = "subsystem" SubsystemName = "name" diff --git a/lib/events/codes.go b/lib/events/codes.go index b55d533b5b959..b7a5b5e9877d8 100644 --- a/lib/events/codes.go +++ b/lib/events/codes.go @@ -319,6 +319,11 @@ const ( // KubernetesClusterDeleteCode is the kube.delete event code. KubernetesClusterDeleteCode = "T3012I" + // GitCommandCode is the git command event code + GitCommandCode = "T3013I" + // GitCommandCode is the git command feature event code. + GitCommandFailureCode = "T3013E" + // The following codes correspond to SFTP file operations. SFTPOpenCode = "TS001I" SFTPOpenFailureCode = "TS001E" diff --git a/lib/events/dynamic.go b/lib/events/dynamic.go index cbb76006be4c0..427552e5d1174 100644 --- a/lib/events/dynamic.go +++ b/lib/events/dynamic.go @@ -424,7 +424,8 @@ func FromEventFields(fields EventFields) (events.AuditEvent, error) { e = &events.PluginUpdate{} case PluginDeleteEvent: e = &events.PluginDelete{} - + case GitCommandEvent: + e = &events.GitCommand{} case StaticHostUserCreateEvent: e = &events.StaticHostUserCreate{} case StaticHostUserUpdateEvent: diff --git a/lib/integrations/awsoidc/clientsv1.go b/lib/integrations/awsoidc/clientsv1.go index 8c16f4c66156a..ab75dc716b10a 100644 --- a/lib/integrations/awsoidc/clientsv1.go +++ b/lib/integrations/awsoidc/clientsv1.go @@ -42,7 +42,7 @@ func (j IdentityToken) FetchToken(ctx credentials.Context) ([]byte, error) { // IntegrationTokenGenerator is an interface that indicates which APIs are required to generate an Integration Token. type IntegrationTokenGenerator interface { // GetIntegration returns the specified integration resources. - GetIntegration(ctx context.Context, name string) (types.Integration, error) + GetIntegration(ctx context.Context, name string, withSecrets bool) (types.Integration, error) // GetProxies returns a list of registered proxies. GetProxies() ([]types.Server, error) @@ -59,7 +59,7 @@ func NewSessionV1(ctx context.Context, client IntegrationTokenGenerator, region return nil, trace.Wrap(err) } } - integration, err := client.GetIntegration(ctx, integrationName) + integration, err := client.GetIntegration(ctx, integrationName, false) if err != nil { return nil, trace.Wrap(err) } diff --git a/lib/integrations/awsoidc/token_generator.go b/lib/integrations/awsoidc/token_generator.go index 9cbcbde2d6de3..5cb5772066a77 100644 --- a/lib/integrations/awsoidc/token_generator.go +++ b/lib/integrations/awsoidc/token_generator.go @@ -38,7 +38,7 @@ import ( // Cache is the subset of the cached resources that the AWS OIDC Token Generation queries. type Cache interface { // GetIntegration returns the specified integration resources. - GetIntegration(ctx context.Context, name string) (types.Integration, error) + GetIntegration(ctx context.Context, name string, withSecrets bool) (types.Integration, error) // GetClusterName returns local cluster name of the current auth server GetClusterName(...services.MarshalOption) (types.ClusterName, error) @@ -107,7 +107,7 @@ func GenerateAWSOIDCToken(ctx context.Context, cacheClt Cache, keyStoreManager K return "", trace.Wrap(err) } - integration, err := cacheClt.GetIntegration(ctx, req.Integration) + integration, err := cacheClt.GetIntegration(ctx, req.Integration, false) if err != nil { return "", trace.Wrap(err) } diff --git a/lib/integrations/externalauditstorage/configurator.go b/lib/integrations/externalauditstorage/configurator.go index dd63222b5bc20..ccc2eaa790634 100644 --- a/lib/integrations/externalauditstorage/configurator.go +++ b/lib/integrations/externalauditstorage/configurator.go @@ -147,7 +147,7 @@ type ExternalAuditStorageGetter interface { // integration by name. type IntegrationGetter interface { // GetIntegration returns the specified integration resources. - GetIntegration(ctx context.Context, name string) (types.Integration, error) + GetIntegration(ctx context.Context, name string, withSecrets bool) (types.Integration, error) } // NewConfigurator returns a new Configurator set up with the current active @@ -188,7 +188,7 @@ func newConfigurator(ctx context.Context, spec *externalauditstorage.ExternalAud } oidcIntegrationName := spec.IntegrationName - integration, err := integrationSvc.GetIntegration(ctx, oidcIntegrationName) + integration, err := integrationSvc.GetIntegration(ctx, oidcIntegrationName, false) if err != nil { if trace.IsNotFound(err) { return nil, trace.NotFound( diff --git a/lib/proxy/router.go b/lib/proxy/router.go index 4028ab026bd9a..1a727a3058c99 100644 --- a/lib/proxy/router.go +++ b/lib/proxy/router.go @@ -23,8 +23,10 @@ import ( "context" "errors" "fmt" + "log/slog" "net" "os" + "strings" "sync" "github.com/gravitational/trace" @@ -33,6 +35,7 @@ import ( "go.opentelemetry.io/otel/attribute" oteltrace "go.opentelemetry.io/otel/trace" "golang.org/x/crypto/ssh" + "golang.org/x/exp/rand" "github.com/gravitational/teleport" "github.com/gravitational/teleport/api/observability/tracing" @@ -282,6 +285,10 @@ func (r *Router) DialHost(ctx context.Context, clientSrcAddr, clientDstAddr net. return nil, trace.Wrap(err) } } + } else if target.GetGitHub() != nil { + agentGetter = nil + isAgentlessNode = true + serverAddr = "github.com:22" } } else { @@ -382,6 +389,7 @@ func (r *Router) getRemoteCluster(ctx context.Context, clusterName string, check // for a reversetunnelclient.RemoteSite. It makes testing easier. type site interface { GetNodes(ctx context.Context, fn func(n services.Node) bool) ([]types.Server, error) + GetGitServers(ctx context.Context, fn func(n services.GitServer) bool) ([]types.Server, error) GetClusterNetworkingConfig(ctx context.Context) (types.ClusterNetworkingConfig, error) } @@ -401,6 +409,16 @@ func (r remoteSite) GetNodes(ctx context.Context, fn func(n services.Node) bool) return watcher.GetNodes(ctx, fn), nil } +// GetGitServers uses the wrapped sites GitServerWatcher to filter git servers. +func (r remoteSite) GetGitServers(ctx context.Context, fn func(n services.GitServer) bool) ([]types.Server, error) { + watcher, err := r.site.GitServerWatcher() + if err != nil { + return nil, trace.Wrap(err) + } + + return watcher.GetGitServers(ctx, fn), nil +} + // GetClusterNetworkingConfig uses the wrapped sites cache to retrieve the ClusterNetworkingConfig func (r remoteSite) GetClusterNetworkingConfig(ctx context.Context) (types.ClusterNetworkingConfig, error) { ap, err := r.site.CachingAccessPoint() @@ -420,6 +438,25 @@ func getServer(ctx context.Context, host, port string, site site) (types.Server, var disableUnqualifiedLookups = os.Getenv("TELEPORT_UNSTABLE_DISABLE_UNQUALIFIED_LOOKUPS") == "yes" +func getGitHubServer(ctx context.Context, org string, site site) (types.Server, error) { + slog.DebugContext(ctx, "=== getGitHubServer", "org", org) + servers, err := site.GetGitServers(ctx, func(s services.GitServer) bool { + github := s.GetGitHub() + return github != nil && github.Organization == org + }) + if err != nil { + return nil, trace.Wrap(err) + } + + slog.DebugContext(ctx, "=== routing getGitServer", "servers", servers) + if len(servers) == 0 { + return nil, trace.NotFound("unable to locate github server for organization %s", org) + } + + i := rand.Intn(len(servers)) + return servers[i], nil +} + // getServerWithResolver attempts to locate a node matching the provided host and port in // the provided site. The resolver argument is used in certain tests to mock DNS resolution // and can generally be left nil. @@ -428,6 +465,11 @@ func getServerWithResolver(ctx context.Context, host, port string, site site, re return nil, trace.BadParameter("invalid remote site provided") } + slog.DebugContext(ctx, "=== getServerWithResolver", "host", host) + if strings.HasSuffix(host, "."+types.GitHubServerDomain) { + return getGitHubServer(ctx, strings.TrimSuffix(host, "."+types.GitHubServerDomain), site) + } + strategy := types.RoutingStrategy_UNAMBIGUOUS_MATCH var caseInsensitiveRouting bool if cfg, err := site.GetClusterNetworkingConfig(ctx); err == nil { diff --git a/lib/reversetunnel/localsite.go b/lib/reversetunnel/localsite.go index 88834e78a23ee..c78a1c0a0eafe 100644 --- a/lib/reversetunnel/localsite.go +++ b/lib/reversetunnel/localsite.go @@ -21,6 +21,7 @@ package reversetunnel import ( "context" "fmt" + "log/slog" "net" "slices" "sync" @@ -184,6 +185,11 @@ func (s *localSite) NodeWatcher() (*services.NodeWatcher, error) { return s.srv.NodeWatcher, nil } +// GitServerWatcher returns a services.GitServerWatcher for this cluster. +func (s *localSite) GitServerWatcher() (*services.GitServerWatcher, error) { + return s.srv.GitServerWatcher, nil +} + // GetClient returns a client to the full Auth Server API. func (s *localSite) GetClient() (authclient.ClientI, error) { return s.client, nil @@ -239,6 +245,11 @@ func shouldDialAndForward(params reversetunnelclient.DialParams, recConfig types if params.TargetServer != nil && params.TargetServer.IsOpenSSHNode() { return true } + // forward git servers + if params.TargetServer != nil && params.TargetServer.GetGitHub() != nil { + slog.DebugContext(context.Background(), "=== shouldDialAndForward", "github", params.TargetServer.GetGitHub().Organization) + return true + } // proxy session recording mode is being used and an SSH session // is being requested, the connection must be forwarded if params.ConnType == types.NodeTunnel && services.IsRecordAtProxy(recConfig.GetMode()) { @@ -525,7 +536,7 @@ func (s *localSite) setupTunnelForOpenSSHEICENode(ctx context.Context, targetSer return nil, trace.BadParameter("failed to generate aws token: %v", err) } - integration, err := s.client.GetIntegration(ctx, awsInfo.Integration) + integration, err := s.client.GetIntegration(ctx, awsInfo.Integration, false) if err != nil { return nil, trace.BadParameter("failed to fetch integration details: %v", err) } diff --git a/lib/reversetunnel/peer.go b/lib/reversetunnel/peer.go index fc16cbe11cefa..fb0ff419aaa6f 100644 --- a/lib/reversetunnel/peer.go +++ b/lib/reversetunnel/peer.go @@ -98,6 +98,14 @@ func (p *clusterPeers) NodeWatcher() (*services.NodeWatcher, error) { return peer.NodeWatcher() } +func (p *clusterPeers) GitServerWatcher() (*services.GitServerWatcher, error) { + peer, err := p.pickPeer() + if err != nil { + return nil, trace.Wrap(err) + } + return peer.GitServerWatcher() +} + func (p *clusterPeers) GetClient() (authclient.ClientI, error) { peer, err := p.pickPeer() if err != nil { @@ -206,6 +214,10 @@ func (s *clusterPeer) NodeWatcher() (*services.NodeWatcher, error) { return nil, trace.ConnectionProblem(nil, "unable to fetch node watcher, this proxy %v has not been discovered yet, try again later", s) } +func (s *clusterPeer) GitServerWatcher() (*services.GitServerWatcher, error) { + return nil, trace.ConnectionProblem(nil, "unable to fetch git server watcher, this proxy %v has not been discovered yet, try again later", s) +} + func (s *clusterPeer) GetClient() (authclient.ClientI, error) { return nil, trace.ConnectionProblem(nil, "unable to fetch client, this proxy %v has not been discovered yet, try again later", s) } diff --git a/lib/reversetunnel/remotesite.go b/lib/reversetunnel/remotesite.go index 8e8b7e4c3fe79..db4e1adc2130e 100644 --- a/lib/reversetunnel/remotesite.go +++ b/lib/reversetunnel/remotesite.go @@ -86,6 +86,8 @@ type remoteSite struct { // nodeWatcher provides access the node set for the remote site nodeWatcher *services.NodeWatcher + // gitServerWatcher provides access the git server set for the remote site + gitServerWatcher *services.GitServerWatcher // remoteCA is the last remote certificate authority recorded by the client. // It is used to detect CA rotation status changes. If the rotation @@ -168,6 +170,11 @@ func (s *remoteSite) NodeWatcher() (*services.NodeWatcher, error) { return s.nodeWatcher, nil } +// GitServerWatcher returns the services.GitServerWatcher for the remote cluster. +func (s *remoteSite) GitServerWatcher() (*services.GitServerWatcher, error) { + return s.gitServerWatcher, nil +} + func (s *remoteSite) GetClient() (authclient.ClientI, error) { return s.remoteClient, nil } diff --git a/lib/reversetunnel/srv.go b/lib/reversetunnel/srv.go index 40124d364989a..8710baf6f3540 100644 --- a/lib/reversetunnel/srv.go +++ b/lib/reversetunnel/srv.go @@ -203,6 +203,9 @@ type Config struct { // NodeWatcher is a node watcher. NodeWatcher *services.NodeWatcher + // GitServerWatcher is a git server watcher + GitServerWatcher *services.GitServerWatcher + // CertAuthorityWatcher is a cert authority watcher. CertAuthorityWatcher *services.CertAuthorityWatcher @@ -272,6 +275,9 @@ func (cfg *Config) CheckAndSetDefaults() error { if cfg.NodeWatcher == nil { return trace.BadParameter("missing parameter NodeWatcher") } + if cfg.GitServerWatcher == nil { + return trace.BadParameter("missing parameter GitServerWatcher") + } if cfg.CertAuthorityWatcher == nil { return trace.BadParameter("missing parameter CertAuthorityWatcher") } @@ -1222,6 +1228,19 @@ func newRemoteSite(srv *server, domainName string, sconn ssh.Conn) (*remoteSite, return nil, trace.Wrap(err) } remoteSite.nodeWatcher = nodeWatcher + gitServerWatcher, err := services.NewGitServerWatcher(closeContext, services.GitServerWatcherConfig{ + ResourceWatcherConfig: services.ResourceWatcherConfig{ + Component: srv.Component, + Client: accessPoint, + Log: srv.Log, + MaxStaleness: time.Minute, + }, + GitServersGetter: accessPoint, + }) + if err != nil { + return nil, trace.Wrap(err) + } + remoteSite.gitServerWatcher = gitServerWatcher // instantiate a cache of host certificates for the forwarding server. the // certificate cache is created in each site (instead of creating it in // reversetunnel.server and passing it along) so that the host certificate diff --git a/lib/reversetunnelclient/api.go b/lib/reversetunnelclient/api.go index f7e8dfb47ef63..570c5cad4e111 100644 --- a/lib/reversetunnelclient/api.go +++ b/lib/reversetunnelclient/api.go @@ -124,6 +124,8 @@ type RemoteSite interface { CachingAccessPoint() (authclient.RemoteProxyAccessPoint, error) // NodeWatcher returns the node watcher that maintains the node set for the site NodeWatcher() (*services.NodeWatcher, error) + // TODO + GitServerWatcher() (*services.GitServerWatcher, error) // GetTunnelsCount returns the amount of active inbound tunnels // from the remote cluster GetTunnelsCount() int diff --git a/lib/service/service.go b/lib/service/service.go index 24c8761891e86..0441489d6e531 100644 --- a/lib/service/service.go +++ b/lib/service/service.go @@ -4263,6 +4263,18 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error { if err != nil { return trace.Wrap(err) } + gitServerWatcher, err := services.NewGitServerWatcher(process.ExitContext(), services.GitServerWatcherConfig{ + ResourceWatcherConfig: services.ResourceWatcherConfig{ + Component: teleport.ComponentProxy, + Log: process.log.WithField(teleport.ComponentKey, teleport.ComponentProxy), + Client: accessPoint, + MaxStaleness: time.Minute, + }, + GitServersGetter: accessPoint, + }) + if err != nil { + return trace.Wrap(err) + } caWatcher, err := services.NewCertAuthorityWatcher(process.ExitContext(), services.CertAuthorityWatcherConfig{ ResourceWatcherConfig: services.ResourceWatcherConfig{ @@ -4356,6 +4368,7 @@ func (process *TeleportProcess) initProxyEndpoint(conn *Connector) error { LockWatcher: lockWatcher, PeerClient: peerClient, NodeWatcher: nodeWatcher, + GitServerWatcher: gitServerWatcher, CertAuthorityWatcher: caWatcher, CircuitBreakerConfig: process.Config.CircuitBreakerConfig, LocalAuthAddresses: utils.NetAddrsToStrings(process.Config.AuthServerAddresses()), diff --git a/lib/services/access_checker.go b/lib/services/access_checker.go index 746f85b4ea64d..304414467f114 100644 --- a/lib/services/access_checker.go +++ b/lib/services/access_checker.go @@ -259,7 +259,7 @@ type AccessChecker interface { // // Supports the following resource types: // - // - types.Server with GetKind() == types.KindNode + // - types.Server with GetKind() == types.KindNode or types.KindGitServer // - types.KindWindowsDesktop // - types.KindApp with IsAWSConsole() == true GetAllowedLoginsForResource(resource AccessCheckable) ([]string, error) @@ -767,7 +767,7 @@ func (a *accessChecker) EnumerateEntities(resource AccessCheckable, listFn roleE // // Supports the following resource types: // -// - types.Server with GetKind() == types.KindNode +// - types.Server with GetKind() == types.KindNode or types.KindGitServer // - types.KindWindowsDesktop // - types.KindApp with IsAWSConsole() == true func (a *accessChecker) GetAllowedLoginsForResource(resource AccessCheckable) ([]string, error) { @@ -796,6 +796,8 @@ func (a *accessChecker) GetAllowedLoginsForResource(resource AccessCheckable) ([ } loginGetter = role.GetAWSRoleARNs + case types.KindGitServer: + continue default: return nil, trace.BadParameter("received unsupported resource kind: %s", resource.GetKind()) } @@ -822,7 +824,7 @@ func (a *accessChecker) GetAllowedLoginsForResource(resource AccessCheckable) ([ var newLoginMatcher func(login string) RoleMatcher switch resource.GetKind() { - case types.KindNode: + case types.KindNode, types.KindGitServer: newLoginMatcher = NewLoginMatcher case types.KindWindowsDesktop: newLoginMatcher = NewWindowsLoginMatcher @@ -1342,6 +1344,11 @@ type UserState interface { // IsBot returns true if the user belongs to a bot. IsBot() bool + + // GetGitHubUserID finds a GitHub user ID from connected identities. + GetGitHubUserID() string + // GetGitHubUsername finds a GitHub username from connected identities. + GetGitHubUsername() string } // AccessInfoFromUser return a new AccessInfo populated from the roles and diff --git a/lib/services/authority.go b/lib/services/authority.go index fdcc8d40820d2..3f0a5214afff0 100644 --- a/lib/services/authority.go +++ b/lib/services/authority.go @@ -396,6 +396,12 @@ type UserCertParams struct { // DeviceCredentialID is the identifier for the credential used by the device // to authenticate itself. DeviceCredentialID string + // GitHubUserID indicates the GitHub user ID identified by the GitHub + // identity connector. + GitHubUserID string + // GitHubUsername indicates the GitHub username identified by the GitHub + // identity connector. + GitHubUsername string } // CheckAndSetDefaults checks the user certificate parameters diff --git a/lib/services/integration.go b/lib/services/integration.go index be495d385b4ab..2bf556dec7766 100644 --- a/lib/services/integration.go +++ b/lib/services/integration.go @@ -23,6 +23,7 @@ import ( "github.com/gravitational/trace" + integrationv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/integration/v1" "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/lib/utils" ) @@ -43,15 +44,18 @@ type Integrations interface { // IntegrationsGetter defines methods for List/Read operations on Integration Resources. type IntegrationsGetter interface { // ListIntegrations returns a paginated list of all integration resources. - ListIntegrations(ctx context.Context, pageSize int, nextToken string) ([]types.Integration, string, error) + ListIntegrations(ctx context.Context, pageSize int, nextToken string, withSecrets bool) ([]types.Integration, string, error) // GetIntegration returns the specified integration resources. - GetIntegration(ctx context.Context, name string) (types.Integration, error) + GetIntegration(ctx context.Context, name string, withSecrets bool) (types.Integration, error) } // IntegrationsTokenGenerator defines methods to generate tokens for Integrations. type IntegrationsTokenGenerator interface { // GenerateAWSOIDCToken generates a token to be used to execute an AWS OIDC Integration action. GenerateAWSOIDCToken(ctx context.Context, integration string) (string, error) + + // TODO move to its own interface or rename the iterface like IntegrationsAuthenticator + GenerateGitHubUserCert(ctx context.Context, in *integrationv1.GenerateGitHubUserCertRequest) (*integrationv1.GenerateGitHubUserCertResponse, error) } // MarshalIntegration marshals the Integration resource to JSON. diff --git a/lib/services/local/events.go b/lib/services/local/events.go index 7a358c3f1f41c..d5394c7991840 100644 --- a/lib/services/local/events.go +++ b/lib/services/local/events.go @@ -227,6 +227,8 @@ func (e *EventsService) NewWatcher(ctx context.Context, watch types.Watch) (type parser = newSPIFFEFederationParser() case types.KindStaticHostUser: parser = newStaticHostUserParser() + case types.KindGitServer: + parser = newGitServerParser() default: if watch.AllowPartialSuccess { continue @@ -2506,3 +2508,17 @@ func (p *spiffeFederationParser) parse(event backend.Event) (types.Resource, err return nil, trace.BadParameter("event %v is not supported", event.Type) } } + +func newGitServerParser() *gitServerParser { + return &gitServerParser{ + baseParser: newBaseParser(backend.NewKey(gitServerPrefix)), + } +} + +type gitServerParser struct { + baseParser +} + +func (p *gitServerParser) parse(event backend.Event) (types.Resource, error) { + return parseServer(event, types.KindGitServer) +} diff --git a/lib/services/local/externalauditstorage.go b/lib/services/local/externalauditstorage.go index 55099f5188d42..9698856db2933 100644 --- a/lib/services/local/externalauditstorage.go +++ b/lib/services/local/externalauditstorage.go @@ -258,7 +258,7 @@ func (s *ExternalAuditStorageService) checkAWSIntegration(ctx context.Context, i if err != nil { return nil, "", trace.Wrap(err) } - integration, err := integrationsSvc.GetIntegration(ctx, integrationName) + integration, err := integrationsSvc.GetIntegration(ctx, integrationName, false) if err != nil { return nil, "", trace.Wrap(err, "getting integration") } diff --git a/lib/services/local/integrations.go b/lib/services/local/integrations.go index 25999e34eafbf..e65639d8fa8ef 100644 --- a/lib/services/local/integrations.go +++ b/lib/services/local/integrations.go @@ -76,22 +76,32 @@ func NewIntegrationsService(backend backend.Backend, opts ...IntegrationsService } // ListIntegrations returns a paginated list of Integration resources. -func (s *IntegrationsService) ListIntegrations(ctx context.Context, pageSize int, pageToken string) ([]types.Integration, string, error) { +func (s *IntegrationsService) ListIntegrations(ctx context.Context, pageSize int, pageToken string, withSecrets bool) ([]types.Integration, string, error) { igs, nextKey, err := s.svc.ListResources(ctx, pageSize, pageToken) if err != nil { return nil, "", trace.Wrap(err) } + if !withSecrets { + for i, ig := range igs { + igs[i] = ig.WithoutSecrets() + } + } + return igs, nextKey, nil } // GetIntegration returns the specified Integration resource. -func (s *IntegrationsService) GetIntegration(ctx context.Context, name string) (types.Integration, error) { +func (s *IntegrationsService) GetIntegration(ctx context.Context, name string, withSecrets bool) (types.Integration, error) { ig, err := s.svc.GetResource(ctx, name) if err != nil { return nil, trace.Wrap(err) } + if !withSecrets { + return ig.WithoutSecrets(), nil + } + return ig, nil } diff --git a/lib/services/local/presence.go b/lib/services/local/presence.go index dbc03946e20a9..ad29662e5b1e9 100644 --- a/lib/services/local/presence.go +++ b/lib/services/local/presence.go @@ -370,6 +370,42 @@ func (s *PresenceService) UpsertNode(ctx context.Context, server types.Server) ( }, nil } +// TODO +func (s *PresenceService) UpsertGitServer(ctx context.Context, server types.Server) (types.Server, error) { + // s.upsertGitServer calls serverv2.CheckAndSetDefaults. + err := s.upsertServer(ctx, gitServerPrefix, server) + return server, trace.Wrap(err) +} + +// TODO is this really needed? +func (s *PresenceService) GetGitServer(ctx context.Context, name string) (types.Server, error) { + if name == "" { + return nil, trace.BadParameter("missing parameter name") + } + item, err := s.Get(ctx, backend.NewKey(gitServerPrefix, name)) + if err != nil { + return nil, trace.Wrap(err) + } + return services.UnmarshalServer( + item.Value, + types.KindGitServer, + services.WithExpires(item.Expires), + services.WithRevision(item.Revision), + ) +} +func (s *PresenceService) GetGitServers(ctx context.Context) ([]types.Server, error) { + servers, err := s.getServers(ctx, types.KindGitServer, gitServerPrefix) + return servers, trace.Wrap(err) +} +func (s *PresenceService) DeleteGitServer(ctx context.Context, name string) error { + key := backend.NewKey(gitServerPrefix, name) + return s.Delete(ctx, key) +} +func (s *PresenceService) DeleteAllGitServers(ctx context.Context) error { + startKey := backend.ExactKey(gitServerPrefix) + return s.DeleteRange(ctx, startKey, backend.RangeEnd(startKey)) +} + // GetAuthServers returns a list of registered servers func (s *PresenceService) GetAuthServers() ([]types.Server, error) { return s.getServers(context.TODO(), types.KindAuthServer, authServersPrefix) @@ -1268,6 +1304,9 @@ func (s *PresenceService) listResources(ctx context.Context, req proto.ListResou case types.KindNode: keyPrefix = []string{nodesPrefix, req.Namespace} unmarshalItemFunc = backendItemToServer(types.KindNode) + case types.KindGitServer: + keyPrefix = []string{gitServerPrefix} + unmarshalItemFunc = backendItemToServer(types.KindGitServer) case types.KindWindowsDesktopService: keyPrefix = []string{windowsDesktopServicesPrefix} unmarshalItemFunc = backendItemToWindowsDesktopService @@ -1362,6 +1401,18 @@ func (s *PresenceService) listResourcesWithSort(ctx context.Context, req proto.L } resources = servers.AsResources() + case types.KindGitServer: + gitServers, err := s.GetGitServers(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + servers := types.Servers(gitServers) + if err := servers.SortByCustom(req.SortBy); err != nil { + return nil, trace.Wrap(err) + } + resources = servers.AsResources() + case types.KindAppServer: appservers, err := s.GetApplicationServers(ctx, req.Namespace) if err != nil { @@ -1689,4 +1740,5 @@ const ( loginTimePrefix = "hostuser_interaction_time" serverInfoPrefix = "serverInfos" cloudLabelsPrefix = "cloudLabels" + gitServerPrefix = "gitServers" ) diff --git a/lib/services/matchers.go b/lib/services/matchers.go index 19d543ef022c4..32445a89e752f 100644 --- a/lib/services/matchers.go +++ b/lib/services/matchers.go @@ -157,6 +157,7 @@ func MatchResourceByFilters(resource types.ResourceWithLabels, filter MatchResou types.KindDatabaseService, types.KindKubernetesCluster, types.KindWindowsDesktop, types.KindWindowsDesktopService, + types.KindGitServer, types.KindUserGroup: specResource = resource case types.KindKubeServer: diff --git a/lib/services/presence.go b/lib/services/presence.go index 1b7528ebdf425..a9d74a20a90b1 100644 --- a/lib/services/presence.go +++ b/lib/services/presence.go @@ -55,6 +55,11 @@ type NodesStreamGetter interface { GetNodeStream(ctx context.Context, namespace string) stream.Stream[types.Server] } +type GitServersGetter interface { + GetGitServers(ctx context.Context) ([]types.Server, error) + GetGitServer(ctx context.Context, name string) (types.Server, error) +} + // Presence records and reports the presence of all components // of the cluster - Nodes, Proxies and SSH nodes type Presence interface { @@ -196,6 +201,12 @@ type Presence interface { // DeleteAllWindowsDesktopServices removes all Windows desktop services. DeleteAllWindowsDesktopServices(context.Context) error + //TODO + GitServersGetter + UpsertGitServer(context.Context, types.Server) (types.Server, error) + DeleteGitServer(context.Context, string) error + DeleteAllGitServers(context.Context) error + // ListResources returns a paginated list of resources. ListResources(ctx context.Context, req proto.ListResourcesRequest) (*types.ListResourcesResponse, error) } diff --git a/lib/services/presets.go b/lib/services/presets.go index b9c134197c288..15015090b17c7 100644 --- a/lib/services/presets.go +++ b/lib/services/presets.go @@ -181,6 +181,7 @@ func NewPresetEditorRole() types.Role { types.NewRule(types.KindSPIFFEFederation, RW()), types.NewRule(types.KindNotification, RW()), types.NewRule(types.KindStaticHostUser, RW()), + types.NewRule(types.KindGitServer, RW()), }, }, }, @@ -240,6 +241,9 @@ func NewPresetAccessRole() types.Role { types.NewRule(types.KindInstance, RO()), types.NewRule(types.KindClusterMaintenanceConfig, RO()), }, + GithubPermissions: []types.GitHubPermission{{ + Organizations: []string{teleport.TraitInternalGitHubOrgs}, + }}, }, }, } diff --git a/lib/services/resource.go b/lib/services/resource.go index 7449aef189c8a..5b4fd1e97e549 100644 --- a/lib/services/resource.go +++ b/lib/services/resource.go @@ -241,6 +241,8 @@ func ParseShortcut(in string) (string, error) { return types.KindPlugin, nil case types.KindAccessGraphSettings, "ags": return types.KindAccessGraphSettings, nil + case types.KindGitServer, types.KindGitServer + "s": + return types.KindGitServer, nil case types.KindSPIFFEFederation, types.KindSPIFFEFederation + "s": return types.KindSPIFFEFederation, nil case types.KindStaticHostUser, types.KindStaticHostUser + "s", "host_user", "host_users": diff --git a/lib/services/role.go b/lib/services/role.go index 82278b05eb841..c61df24f82612 100644 --- a/lib/services/role.go +++ b/lib/services/role.go @@ -77,6 +77,7 @@ var DefaultImplicitRules = []types.Rule{ types.NewRule(types.KindUsageEvent, []string{types.VerbCreate}), types.NewRule(types.KindVnetConfig, RO()), types.NewRule(types.KindSPIFFEFederation, RO()), + types.NewRule(types.KindGitServer, RO()), } // DefaultCertAuthorityRules provides access the minimal set of resources @@ -305,6 +306,7 @@ func validateRoleExpressions(r types.Role) error { {"desktop_groups", r.GetDesktopGroups(condition.condition)}, {"impersonate.users", r.GetImpersonateConditions(condition.condition).Users}, {"impersonate.roles", r.GetImpersonateConditions(condition.condition).Roles}, + // TODO validate github orgs } { for _, value := range values.values { _, err := parse.NewTraitsTemplateExpression(value) @@ -509,6 +511,13 @@ func ApplyTraits(r types.Role, traits map[string][]string) (types.Role, error) { outDbRoles := applyValueTraitsSlice(inDbRoles, traits, "database role") r.SetDatabaseRoles(condition, apiutils.Deduplicate(outDbRoles)) + // apply templates to github permissions + gitHubPerms := r.GetGitHubPermissions(condition) + for i := range gitHubPerms { + gitHubPerms[i].Organizations = applyValueTraitsSlice(gitHubPerms[i].Organizations, traits, "github organization") + } + r.SetGitHubPermissions(condition, gitHubPerms) + var out []types.KubernetesResource // we access the resources in the role using the role conditions // to avoid receiving the compatibility resources added in GetKubernetesResources @@ -675,7 +684,8 @@ func ApplyValueTraits(val string, traits map[string][]string) ([]string, error) constants.TraitKubeGroups, constants.TraitKubeUsers, constants.TraitDBNames, constants.TraitDBUsers, constants.TraitDBRoles, constants.TraitAWSRoleARNs, constants.TraitAzureIdentities, - constants.TraitGCPServiceAccounts, constants.TraitJWT: + constants.TraitGCPServiceAccounts, constants.TraitJWT, + constants.TraitGitHubOrganizations: default: return trace.BadParameter("unsupported variable %q", name) } @@ -2538,6 +2548,7 @@ func (l kubernetesClusterLabelMatcher) getKubeLabelMatchers(role types.Role, typ // AccessCheckable is the subset of types.Resource required for the RBAC checks. type AccessCheckable interface { GetKind() string + GetSubKind() string GetName() string GetMetadata() types.Metadata GetLabel(key string) (value string, ok bool) diff --git a/lib/services/unified_resource.go b/lib/services/unified_resource.go index 6789f1671c776..a9dce0e9ff2a7 100644 --- a/lib/services/unified_resource.go +++ b/lib/services/unified_resource.go @@ -47,6 +47,7 @@ var UnifiedResourceKinds []string = []string{ types.KindAppServer, types.KindWindowsDesktop, types.KindSAMLIdPServiceProvider, + types.KindGitServer, } // UnifiedResourceCacheConfig is used to configure a UnifiedResourceCache @@ -350,6 +351,7 @@ type ResourceGetter interface { WindowsDesktopGetter KubernetesServerGetter SAMLIdpServiceProviderGetter + GitServersGetter } // newWatcher starts and returns a new resource watcher for unified resources. @@ -382,7 +384,8 @@ func makeResourceSortKey(resource types.Resource) resourceSortKey { switch r := resource.(type) { case types.Server: name = r.GetHostname() + "/" + r.GetName() - kind = types.KindNode + //kind = types.KindNode + kind = r.GetKind() case types.AppServer: app := r.GetApp() if app != nil { @@ -453,6 +456,11 @@ func (c *UnifiedResourceCache) getResourcesAndUpdateCurrent(ctx context.Context) return trace.Wrap(err) } + newGitServers, err := c.getGitServers(ctx) + if err != nil { + return trace.Wrap(err) + } + c.rw.Lock() defer c.rw.Unlock() // empty the trees @@ -468,6 +476,7 @@ func (c *UnifiedResourceCache) getResourcesAndUpdateCurrent(ctx context.Context) putResources[types.KubeServer](c, newKubes) putResources[types.SAMLIdPServiceProvider](c, newSAMLApps) putResources[types.WindowsDesktop](c, newDesktops) + putResources[types.Server](c, newGitServers) c.stale = false c.defineCollectorAsInitialized() return nil @@ -484,6 +493,15 @@ func (c *UnifiedResourceCache) getNodes(ctx context.Context) ([]types.Server, er return newNodes, err } +// TODO +func (c *UnifiedResourceCache) getGitServers(ctx context.Context) ([]types.Server, error) { + servers, err := c.ResourceGetter.GetGitServers(ctx) + if err != nil { + return nil, trace.Wrap(err, "getting git servers for unified resource watcher") + } + return servers, nil +} + // getDatabaseServers will get all database servers func (c *UnifiedResourceCache) getDatabaseServers(ctx context.Context) ([]types.DatabaseServer, error) { newDbs, err := c.GetDatabaseServers(ctx, apidefaults.Namespace) @@ -781,6 +799,14 @@ func MakePaginatedResource(ctx context.Context, requestType string, r types.Reso } protoResource = &proto.PaginatedResource{Resource: &proto.PaginatedResource_Node{Node: srv}, Logins: logins, RequiresRequest: requiresRequest} + case types.KindGitServer: + srv, ok := resource.(*types.ServerV2) + if !ok { + return nil, trace.BadParameter("%s has invalid type %T", resourceKind, resource) + } + + // TODO logins + protoResource = &proto.PaginatedResource{Resource: &proto.PaginatedResource_GitServer{GitServer: srv}, Logins: logins, RequiresRequest: requiresRequest} case types.KindKubeServer: srv, ok := resource.(*types.KubernetesServerV3) if !ok { diff --git a/lib/services/watcher_git_server.go b/lib/services/watcher_git_server.go new file mode 100644 index 0000000000000..b11e0c1f8fdde --- /dev/null +++ b/lib/services/watcher_git_server.go @@ -0,0 +1,278 @@ +/* + * Teleport + * Copyright (C) 2024 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 services + +import ( + "context" + "sync" + "time" + + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/utils" + "github.com/gravitational/trace" +) + +// GitServerWatcherConfig is a GitServerWatcher configuration. +type GitServerWatcherConfig struct { + ResourceWatcherConfig + GitServersGetter +} + +// CheckAndSetDefaults checks parameters and sets default values. +func (cfg *GitServerWatcherConfig) CheckAndSetDefaults() error { + if err := cfg.ResourceWatcherConfig.CheckAndSetDefaults(); err != nil { + return trace.Wrap(err) + } + if cfg.GitServersGetter == nil { + getter, ok := cfg.Client.(GitServersGetter) + if !ok { + return trace.BadParameter("missing parameter GitServersGetter and Client not usable as GitServersGetter") + } + cfg.GitServersGetter = getter + } + return nil +} + +// TODO refactor +type GitServerWatcher struct { + *resourceWatcher + *gitServerCollector +} + +// gitServerCollector accompanies resourceWatcher when monitoring gitServers. +type gitServerCollector struct { + GitServerWatcherConfig + + // initializationC is used to check whether the initial sync has completed + initializationC chan struct{} + once sync.Once + + cache *utils.FnCache + + rw sync.RWMutex + // current holds a map of the currently known gitServers keyed by server name + current map[string]types.Server + stale bool +} + +// NewGitServerWatcher returns a new instance of GitServerWatcher. +func NewGitServerWatcher(ctx context.Context, cfg GitServerWatcherConfig) (*GitServerWatcher, error) { + if err := cfg.CheckAndSetDefaults(); err != nil { + return nil, trace.Wrap(err) + } + + cache, err := utils.NewFnCache(utils.FnCacheConfig{ + Context: ctx, + TTL: 3 * time.Second, + Clock: cfg.Clock, + }) + if err != nil { + return nil, trace.Wrap(err) + } + + collector := &gitServerCollector{ + GitServerWatcherConfig: cfg, + current: map[string]types.Server{}, + initializationC: make(chan struct{}), + cache: cache, + stale: true, + } + + watcher, err := newResourceWatcher(ctx, collector, cfg.ResourceWatcherConfig) + if err != nil { + return nil, trace.Wrap(err) + } + + return &GitServerWatcher{resourceWatcher: watcher, gitServerCollector: collector}, nil +} + +// GitServer is a readonly subset of the types.Server interface which +// users may filter by in GetGitServers. +type GitServer interface { + types.ResourceWithLabels + GetTeleportVersion() string + GetGitHub() *types.GitHubServerMetadata +} + +// GetGitServers allows callers to retrieve a subset of gitServers that match the filter provided. The +// returned servers are a copy and can be safely modified. It is intentionally hard to retrieve +// the full set of gitServers to reduce the number of copies needed since the number of gitServers can get +// quite large and doing so can be expensive. +func (n *gitServerCollector) GetGitServers(ctx context.Context, fn func(n GitServer) bool) []types.Server { + // Attempt to freshen our data first. + n.refreshStaleGitServers(ctx) + + n.rw.RLock() + defer n.rw.RUnlock() + + var matched []types.Server + for _, server := range n.current { + if fn(server) { + matched = append(matched, server.DeepCopy()) + } + } + + return matched +} + +// GetGitServer allows callers to retrieve a gitServer based on its name. The +// returned server are a copy and can be safely modified. +func (n *gitServerCollector) GetGitServer(ctx context.Context, name string) (types.Server, error) { + // Attempt to freshen our data first. + n.refreshStaleGitServers(ctx) + + n.rw.RLock() + defer n.rw.RUnlock() + + server, found := n.current[name] + if !found { + return nil, trace.NotFound("server does not exist") + } + return server.DeepCopy(), nil +} + +// refreshStaleGitServers attempts to reload gitServers from the GitServerGetter if +// the collecter is stale. This ensures that no matter the health of +// the collecter callers will be returned the most up to date gitServer +// set as possible. +func (n *gitServerCollector) refreshStaleGitServers(ctx context.Context) error { + n.rw.RLock() + if !n.stale { + n.rw.RUnlock() + return nil + } + n.rw.RUnlock() + + _, err := utils.FnCacheGet(ctx, n.cache, "gitServers", func(ctx context.Context) (any, error) { + current, err := n.getGitServers(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + n.rw.Lock() + defer n.rw.Unlock() + + // There is a chance that the watcher reinitialized while + // getting gitServers happened above. Check if we are still stale + // now that the lock is held to ensure that the refresh is + // still necessary. + if !n.stale { + return nil, nil + } + + n.current = current + return nil, trace.Wrap(err) + }) + + return trace.Wrap(err) +} + +func (n *gitServerCollector) GitServerCount() int { + n.rw.RLock() + defer n.rw.RUnlock() + return len(n.current) +} + +// resourceKinds specifies the resource kind to watch. +func (n *gitServerCollector) resourceKinds() []types.WatchKind { + return []types.WatchKind{{Kind: types.KindGitServer}} +} + +// getResourcesAndUpdateCurrent is called when the resources should be +// (re-)fetched directly. +func (n *gitServerCollector) getResourcesAndUpdateCurrent(ctx context.Context) error { + newCurrent, err := n.getGitServers(ctx) + if err != nil { + return trace.Wrap(err) + } + defer n.defineCollectorAsInitialized() + + if len(newCurrent) == 0 { + return nil + } + + n.rw.Lock() + defer n.rw.Unlock() + n.current = newCurrent + n.stale = false + return nil +} + +func (n *gitServerCollector) getGitServers(ctx context.Context) (map[string]types.Server, error) { + gitServers, err := n.GitServersGetter.GetGitServers(ctx) + if err != nil { + return nil, trace.Wrap(err) + } + + if len(gitServers) == 0 { + return map[string]types.Server{}, nil + } + + current := make(map[string]types.Server, len(gitServers)) + for _, gitServer := range gitServers { + current[gitServer.GetName()] = gitServer + } + + return current, nil +} + +func (n *gitServerCollector) defineCollectorAsInitialized() { + n.once.Do(func() { + // mark watcher as initialized. + close(n.initializationC) + }) +} + +// processEventsAndUpdateCurrent is called when a watcher event is received. +func (n *gitServerCollector) processEventsAndUpdateCurrent(ctx context.Context, events []types.Event) { + n.rw.Lock() + defer n.rw.Unlock() + + for _, event := range events { + if event.Resource == nil || event.Resource.GetKind() != types.KindGitServer { + n.Log.Warningf("Unexpected event: %v.", event) + continue + } + + switch event.Type { + case types.OpDelete: + delete(n.current, event.Resource.GetName()) + case types.OpPut: + server, ok := event.Resource.(types.Server) + if !ok { + n.Log.Warningf("Unexpected type %T.", event.Resource) + continue + } + + n.current[server.GetName()] = server + default: + n.Log.Warningf("Skipping unsupported event type %s.", event.Type) + } + } +} + +func (n *gitServerCollector) initializationChan() <-chan struct{} { + return n.initializationC +} + +func (n *gitServerCollector) notifyStale() { + n.rw.Lock() + defer n.rw.Unlock() + n.stale = true +} diff --git a/lib/srv/authhandlers.go b/lib/srv/authhandlers.go index d80f5704acfe4..2cf69b78b8894 100644 --- a/lib/srv/authhandlers.go +++ b/lib/srv/authhandlers.go @@ -233,6 +233,7 @@ func (h *AuthHandlers) CreateIdentityContext(sconn *ssh.ServerConn) (IdentityCon } identity.PreviousIdentityExpires = asTime } + identity.GitHubUserID = certificate.Extensions[teleport.CertExtensionGitHubUserID] return identity, nil } @@ -475,8 +476,12 @@ func (h *AuthHandlers) UserKeyAuth(conn ssh.ConnMetadata, key ssh.PublicKey) (*s // exists and it is an agentless node, preform an RBAC check. // Otherwise if the target node does not exist the node is // probably an unregistered SSH node; do not preform an RBAC check - if h.c.TargetServer != nil && h.c.TargetServer.IsOpenSSHNode() { - err = h.canLoginWithRBAC(cert, ca, clusterName.GetClusterName(), h.c.TargetServer, teleportUser, conn.User()) + if h.c.TargetServer != nil { + switch { + case h.c.TargetServer.IsOpenSSHNode(), + h.c.TargetServer.GetGitHub() != nil: + err = h.canLoginWithRBAC(cert, ca, clusterName.GetClusterName(), h.c.TargetServer, teleportUser, conn.User()) + } } } else { // the SSH server is a Teleport node, preform an RBAC check now @@ -663,11 +668,28 @@ func (a *ahLoginChecker) canLoginWithRBAC(cert *ssh.Certificate, ca types.CertAu state.EnableDeviceVerification = true state.DeviceVerified = dtauthz.IsSSHDeviceVerified(cert) + // TODO refactor to services? + roleMatchers := []services.RoleMatcher{} + switch { + case target.GetGitHub() != nil: + switch cert.Extensions[teleport.CertExtensionGitHubUserID] { + case "": + return trace.AccessDenied("user %s@%s has no github user associated", teleportUser, ca.GetClusterName()) + case osUser: + // yes + default: + return trace.AccessDenied("user %s@%s is not authorized to impersonate github user %s", teleportUser, ca.GetClusterName(), osUser) + } + + default: + roleMatchers = append(roleMatchers, services.NewLoginMatcher(osUser)) + } + // check if roles allow access to server if err := accessChecker.CheckAccess( target, state, - services.NewLoginMatcher(osUser), + roleMatchers..., ); err != nil { return trace.AccessDenied("user %s@%s is not authorized to login as %v@%s: %v", teleportUser, ca.GetClusterName(), osUser, clusterName, err) diff --git a/lib/srv/ctx.go b/lib/srv/ctx.go index 2cb68d8384c5a..ec8e9abbe2b3e 100644 --- a/lib/srv/ctx.go +++ b/lib/srv/ctx.go @@ -250,6 +250,9 @@ type IdentityContext struct { // deadline in cases where both require_session_mfa and disconnect_expired_cert // are enabled. See https://github.com/gravitational/teleport/issues/18544. PreviousIdentityExpires time.Time + + // TODO + GitHubUserID string } // ServerContext holds session specific context, such as SSH auth agents, PTYs, @@ -849,6 +852,12 @@ func (c *ServerContext) reportStats(conn utils.Stater) { return } + // TODO(greedy52) Is there a better place? + switch c.ServerSubKind { + case types.SubKindGitHub: + return + } + // Get the TX and RX bytes. txBytes, rxBytes := conn.Stat() @@ -1090,6 +1099,7 @@ func (id *IdentityContext) GetUserMetadata() apievents.UserMetadata { UserKind: userKind, BotName: id.BotName, BotInstanceID: id.BotInstanceID, + // TODO add github user id } } diff --git a/lib/srv/exec.go b/lib/srv/exec.go index dd1a15457b7d1..20ea548e4bb40 100644 --- a/lib/srv/exec.go +++ b/lib/srv/exec.go @@ -20,10 +20,12 @@ package srv import ( "bufio" + "bytes" "context" "errors" "fmt" "io" + "log/slog" "os" "os/exec" "path/filepath" @@ -33,6 +35,8 @@ import ( "syscall" "time" + "github.com/go-git/go-git/v5/plumbing/protocol/packp" + gittransport "github.com/go-git/go-git/v5/plumbing/transport" "github.com/gravitational/trace" log "github.com/sirupsen/logrus" "golang.org/x/crypto/ssh" @@ -93,6 +97,15 @@ type Exec interface { // NewExecRequest creates a new local or remote Exec. func NewExecRequest(ctx *ServerContext, command string) (Exec, error) { + // Always remote for git proxies. + if ctx.ServerSubKind == types.SubKindGitHub { + return &remoteExec{ + ctx: ctx, + command: command, + session: ctx.RemoteSession, + }, nil + } + // It doesn't matter what mode the cluster is in, if this is a Teleport node // return a local *localExec. if ctx.srv.Component() == teleport.ComponentNode { @@ -336,9 +349,10 @@ func waitForSignal(fd *os.File, timeout time.Duration) error { // remoteExec is used to run an "exec" SSH request and return the result. type remoteExec struct { - command string - session *tracessh.Session - ctx *ServerContext + command string + session *tracessh.Session + ctx *ServerContext + gitHubAuditor *gitHubAuditor } // String describes this remote exec value @@ -359,6 +373,8 @@ func (e *remoteExec) SetCommand(command string) { // Start launches the given command returns (nil, nil) if successful. // ExecResult is only used to communicate an error while launching. func (e *remoteExec) Start(ctx context.Context, ch ssh.Channel) (*ExecResult, error) { + // TODO checkGitHub allowed by parsing path and compare the org + if _, err := checkSCPAllowed(e.ctx, e.GetCommand()); err != nil { e.ctx.GetServer().EmitAuditEvent(context.WithoutCancel(ctx), &apievents.SFTP{ Metadata: apievents.Metadata{ @@ -376,17 +392,48 @@ func (e *remoteExec) Start(ctx context.Context, ch ssh.Channel) (*ExecResult, er // hook up stdout/err the channel so the user can interact with the command e.session.Stdout = ch e.session.Stderr = ch.Stderr() - inputWriter, err := e.session.StdinPipe() + inputWriterCloser, err := e.session.StdinPipe() if err != nil { return nil, trace.Wrap(err) } + inputWriter := io.Writer(inputWriterCloser) + + // Is there a better place? + switch e.ctx.ServerSubKind { + case types.SubKindGitHub: + command, path, err := parseGitCommand(e.GetCommand()) + if err != nil { + return nil, trace.Wrap(err, "failed to parse git command", "command", e.GetCommand()) + } + + // TODO move this to parseGitCommand + org, _, ok := strings.Cut(path, "/") + if !ok { + return nil, trace.Wrap(err, "failed to parse git command", "command", e.GetCommand()) + } + + spec := e.ctx.GetServer().GetInfo().GetGitHub() + if spec == nil { + return nil, trace.BadParameter("missing github spec for github server") + } + + if spec.Organization != org { + return nil, trace.AccessDenied("expect organization %v but got %v", spec.Organization, org) + } + + e.gitHubAuditor = &gitHubAuditor{ + isPush: command == gittransport.ReceivePackServiceName, + } + inputWriter = io.MultiWriter(inputWriter, e.gitHubAuditor) + } + go func() { // copy from the channel (client) into stdin of the process if _, err := io.Copy(inputWriter, ch); err != nil { e.ctx.Warnf("Failed copying data from SSH channel to remote command stdin: %v", err) } - inputWriter.Close() + inputWriterCloser.Close() }() err = e.session.Start(ctx, e.command) @@ -397,6 +444,105 @@ func (e *remoteExec) Start(ctx context.Context, ch ssh.Channel) (*ExecResult, er return nil, nil } +type gitHubAuditor struct { + isPush bool + // TODO avoid a copy, just pipe it to reader + cachedPayload []byte +} + +func (a *gitHubAuditor) Write(p []byte) (int, error) { + if a.isPush { + a.cachedPayload = append(a.cachedPayload, p...) + } + return len(p), nil +} + +func parseGitCommand(command string) (string, string, error) { + gitCommand, path, ok := strings.Cut(command, " '") + if !ok { + return "", "", trace.BadParameter("invalid git command %s", command) + } + + if strings.HasSuffix(path, "'") { + path = strings.TrimSuffix(path, "'") + } else { + return "", "", trace.BadParameter("invalid git command %s", command) + } + + return gitCommand, path, nil +} + +func (a *gitHubAuditor) emit(ctx *ServerContext, cmd string, execErr error) { + code := events.GitCommandCode + commandMeta := apievents.CommandMetadata{ + Command: cmd, + ExitCode: strconv.Itoa(exitCode(execErr)), + } + if execErr != nil { + code = events.GitCommandFailureCode + commandMeta.Error = execErr.Error() + } + + event := &apievents.GitCommand{ + Metadata: apievents.Metadata{ + Type: events.GitCommandEvent, + Code: code, + ClusterName: ctx.ClusterName, + }, + UserMetadata: ctx.Identity.GetUserMetadata(), + ConnectionMetadata: apievents.ConnectionMetadata{ + RemoteAddr: ctx.ServerConn.RemoteAddr().String(), + LocalAddr: ctx.ServerConn.LocalAddr().String(), + }, + SessionMetadata: ctx.GetSessionMetadata(), + ServerMetadata: ctx.GetServerMetadata(), + CommandMetadata: commandMeta, + } + if service, path, err := parseGitCommand(cmd); err == nil { + event.Service = service + event.Path = path + } + + switch { + case a.isPush: + if len(a.cachedPayload) > 4 { + request := packp.NewReferenceUpdateRequest() + err := request.Decode(bytes.NewReader(a.cachedPayload)) + if err != nil { + slog.InfoContext(context.Background(), "[===AUDIT===] git push, but error when decoding packp", "error", err) + } else { + for _, command := range request.Commands { + event.Actions = append(event.Actions, &apievents.GitCommandAction{ + Action: string(command.Action()), + Reference: string(command.Name), + Old: command.Old.String(), + New: command.New.String(), + }) + + switch command.Action() { + case packp.Create: + slog.DebugContext(context.Background(), "[===AUDIT===] user created a new reference.", "reference", command.Name, "to", command.New) + case packp.Update: + slog.DebugContext(context.Background(), "[===AUDIT===] user updated a reference.", "reference", command.Name, "from", command.Old, "to", command.New) + case packp.Delete: + slog.DebugContext(context.Background(), "[===AUDIT===] user deleted a reference.", "reference", command.Name, "from", command.Old) + default: + slog.DebugContext(context.Background(), "unknown git action", "command", command.Action()) + } + } + } + } else { + slog.InfoContext(context.Background(), "[===AUDIT===] git push but server up-to-update") + } + default: + slog.InfoContext(context.Background(), "[===AUDIT===] git fetch") + } + + if err := ctx.session.emitAuditEvent(ctx.srv.Context(), event); err != nil { + log.WithError(err).Warn("Failed to emit exec event.") + } +} + // Wait will block while the command executes. func (e *remoteExec) Wait() *ExecResult { // Block until the command is finished executing. @@ -408,7 +554,11 @@ func (e *remoteExec) Wait() *ExecResult { } // Emit the result of execution to the Audit Log. - emitExecAuditEvent(e.ctx, e.command, err) + if e.gitHubAuditor != nil { + e.gitHubAuditor.emit(e.ctx, e.command, err) + } else { + emitExecAuditEvent(e.ctx, e.command, err) + } return &ExecResult{ Command: e.GetCommand(), diff --git a/lib/srv/forward/sshserver.go b/lib/srv/forward/sshserver.go index 8fd276932becf..8d1fb33aeeb81 100644 --- a/lib/srv/forward/sshserver.go +++ b/lib/srv/forward/sshserver.go @@ -24,7 +24,9 @@ import ( "errors" "fmt" "io" + "log/slog" "net" + "slices" "strings" "time" @@ -36,15 +38,18 @@ import ( oteltrace "go.opentelemetry.io/otel/trace" "golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh/agent" + "google.golang.org/protobuf/types/known/durationpb" "github.com/gravitational/teleport" apidefaults "github.com/gravitational/teleport/api/defaults" + integrationv1 "github.com/gravitational/teleport/api/gen/proto/go/teleport/integration/v1" "github.com/gravitational/teleport/api/observability/tracing" tracessh "github.com/gravitational/teleport/api/observability/tracing/ssh" "github.com/gravitational/teleport/api/types" apievents "github.com/gravitational/teleport/api/types/events" "github.com/gravitational/teleport/lib/auth" "github.com/gravitational/teleport/lib/auth/authclient" + "github.com/gravitational/teleport/lib/auth/native" "github.com/gravitational/teleport/lib/bpf" "github.com/gravitational/teleport/lib/events" "github.com/gravitational/teleport/lib/integrations/awsoidc" @@ -507,6 +512,14 @@ func (s *Server) GetHostSudoers() srv.HostSudoers { // GetInfo returns a services.Server that represents this server. func (s *Server) GetInfo() types.Server { + spec := types.ServerSpecV2{ + Addr: s.AdvertiseAddr(), + } + if s.targetServer != nil { + spec.Hostname = s.targetServer.GetHostname() + spec.GitHub = s.targetServer.GetGitHub() + } + return &types.ServerV2{ Kind: types.KindNode, Version: types.V2, @@ -514,9 +527,7 @@ func (s *Server) GetInfo() types.Server { Name: s.ID(), Namespace: s.GetNamespace(), }, - Spec: types.ServerSpecV2{ - Addr: s.AdvertiseAddr(), - }, + Spec: spec, } } @@ -624,6 +635,18 @@ func (s *Server) Serve() { s.agentlessSigner = sshSigner } } + if s.targetServer != nil && + s.targetServer.GetKind() == types.KindGitServer && + s.targetServer.GetSubKind() == types.SubKindGitHub { + sshSigner, err := s.getSSHSignerForGitHub(ctx) + if err != nil { + sconn.Close() + s.log.Warnf("Unable to generate GitHub user cert for user %v server %v: %v", s.identityContext.TeleportUser, s.targetServer.GetName(), err) + return + } + + s.agentlessSigner = sshSigner + } // Connect and authenticate to the remote node. s.log.Debugf("Creating remote connection to %s@%s", sconn.User(), s.clientConn.RemoteAddr()) @@ -668,6 +691,37 @@ func (s *Server) Serve() { go s.handleConnection(ctx, chans, reqs) } +// TODO how to keep a cache for this +func (s *Server) getSSHSignerForGitHub(ctx context.Context) (ssh.Signer, error) { + slog.DebugContext(ctx, "=== getSSHSignerForGitHub") + spec := s.targetServer.GetGitHub() + if spec == nil || spec.Integration == "" { + return nil, trace.BadParameter("GitHub server %s missing integration", s.targetServer) + } + if s.identityContext.GitHubUserID == "" { + return nil, trace.BadParameter("user no associated github user") + } + + // generate a new key pair + priv, err := native.GeneratePrivateKey() + if err != nil { + return nil, trace.Wrap(err) + } + + resp, err := s.authClient.GenerateGitHubUserCert(ctx, &integrationv1.GenerateGitHubUserCertRequest{ + Integration: spec.Integration, + PublicKey: priv.MarshalSSHPublicKey(), + UserId: s.identityContext.GitHubUserID, + KeyId: s.identityContext.TeleportUser, + Ttl: durationpb.New(10 * time.Duration(time.Minute)), + }) + if err != nil { + return nil, trace.Wrap(err) + } + signer, err := sshutils.NewSigner(priv.PrivateKeyPEM(), resp.AuthorizedKey) + return signer, trace.Wrap(err) +} + func (s *Server) sendSSHPublicKeyToTarget(ctx context.Context) (ssh.Signer, error) { awsInfo := s.targetServer.GetAWSInfo() if awsInfo == nil { @@ -679,7 +733,7 @@ func (s *Server) sendSSHPublicKeyToTarget(ctx context.Context) (ssh.Signer, erro return nil, trace.BadParameter("failed to generate aws token: %v", err) } - integration, err := s.authClient.GetIntegration(ctx, awsInfo.Integration) + integration, err := s.authClient.GetIntegration(ctx, awsInfo.Integration, false) if err != nil { return nil, trace.BadParameter("failed to fetch integration details: %v", err) } @@ -742,9 +796,32 @@ func (s *Server) Close() error { return trace.NewAggregate(errs...) } +// https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints +var knownGithubDotComFingerprints = []string{ + "SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s", + "SHA256:br9IjFspm1vxR3iA35FWE+4VTyz1hYVLIE2t1/CeyWQ", + "SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM", + "SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU", +} + // newRemoteClient creates and returns a *ssh.Client and *ssh.Session // with a remote host. func (s *Server) newRemoteClient(ctx context.Context, systemLogin string, netConfig types.ClusterNetworkingConfig) (*tracessh.Client, error) { + // TODO(greedy52) beautify and retrive github fingerprints with API. + hostKeyCallback := s.authHandlers.HostKeyAuth + if s.targetServer != nil && + s.targetServer.GetKind() == types.KindGitServer && + s.targetServer.GetSubKind() == types.SubKindGitHub { + systemLogin = "git" + hostKeyCallback = func(hostname string, remote net.Addr, key ssh.PublicKey) error { + actualFingerprint := ssh.FingerprintSHA256(key) + if slices.Contains(knownGithubDotComFingerprints, actualFingerprint) { + return nil + } + return trace.BadParameter("cannot verify github.com: unknown fingerprint %v algo %v", actualFingerprint, key.Type()) + } + } + // the proxy will use the agentless signer as the auth method when // connecting to the remote host if it is available, otherwise the // forwarded agent is used @@ -765,7 +842,7 @@ func (s *Server) newRemoteClient(ctx context.Context, systemLogin string, netCon Auth: []ssh.AuthMethod{ authMethod, }, - HostKeyCallback: s.authHandlers.HostKeyAuth, + HostKeyCallback: hostKeyCallback, Timeout: netConfig.GetSSHDialTimeout(), } diff --git a/lib/srv/sess.go b/lib/srv/sess.go index 6e1b1a64058d6..46a159c1918de 100644 --- a/lib/srv/sess.go +++ b/lib/srv/sess.go @@ -804,6 +804,15 @@ func newSession(ctx context.Context, id rsession.ID, r *SessionRegistry, scx *Se serverMeta: scx.srv.TargetMetadata(), } + // TODO(greedy52) Is there a better way? + switch scx.srv.TargetMetadata().ServerSubKind { + case types.SubKindGitHub: + sess.emitter = &githubSessionEmitter{ + emitter: sess.emitter, + discard: events.NewDiscardEmitter(), + } + } + sess.io.OnWriteError = sess.onWriteError go func() { @@ -836,6 +845,21 @@ func newSession(ctx context.Context, id rsession.ID, r *SessionRegistry, scx *Se return sess, p, nil } +// TODO +type githubSessionEmitter struct { + emitter apievents.Emitter + discard apievents.Emitter +} + +func (e *githubSessionEmitter) EmitAuditEvent(ctx context.Context, event apievents.AuditEvent) error { + switch event.GetType() { + case events.GitCommandEvent: + return trace.Wrap(e.emitter.EmitAuditEvent(ctx, event)) + default: + return trace.Wrap(e.discard.EmitAuditEvent(ctx, event)) + } +} + // ID returns a string representation of the session ID. func (s *session) ID() string { s.mu.RLock() @@ -1416,6 +1440,12 @@ func newRecorder(s *session, ctx *ServerContext) (events.SessionPreparerRecorder return events.WithNoOpPreparer(events.NewDiscardRecorder()), nil } + // TODO(greedy52) Is there a better place? + switch s.serverMeta.ServerSubKind { + case types.SubKindGitHub: + return events.WithNoOpPreparer(events.NewDiscardRecorder()), nil + } + // Don't record non-interactive sessions when enhanced recording is disabled. if ctx.GetTerm() == nil && !ctx.srv.GetBPF().Enabled() { return events.WithNoOpPreparer(events.NewDiscardRecorder()), nil diff --git a/lib/utils/utils.go b/lib/utils/utils.go index b1931e2ae8cf4..f984ae4b6b34f 100644 --- a/lib/utils/utils.go +++ b/lib/utils/utils.go @@ -402,7 +402,9 @@ func IsHandshakeFailedError(err error) bool { if err == nil { return false } - return strings.Contains(trace.Unwrap(err).Error(), "ssh: handshake failed") + // TODO(greedy52) investigate this + errStr := trace.Unwrap(err).Error() + return strings.Contains(errStr, "ssh: handshake failed") && !strings.Contains(errStr, "(ssh: handshake failed") } // IsCertExpiredError specifies whether this error indicates diff --git a/lib/web/apiserver.go b/lib/web/apiserver.go index c53a988472851..185a66d4d7968 100644 --- a/lib/web/apiserver.go +++ b/lib/web/apiserver.go @@ -1050,6 +1050,9 @@ func (h *Handler) bindDefaultEndpoints() { h.PUT("/webapi/sites/:site/lastseennotification", h.WithClusterAuth(h.notificationsUpsertLastSeenTimestamp)) // Upsert a notification state when to mark a notification as read or hide it. h.PUT("/webapi/sites/:site/notificationstate", h.WithClusterAuth(h.notificationsUpsertNotificationState)) + + // Git Servers + h.POST("/webapi/sites/:site/gitserver", h.WithClusterAuth(h.handleGitServerCreate)) } // GetProxyClient returns authenticated auth server client @@ -2818,6 +2821,7 @@ func makeUnifiedResourceRequest(r *http.Request) (*proto.ListUnifiedResourcesReq types.KindWindowsDesktop, types.KindKubernetesCluster, types.KindSAMLIdPServiceProvider, + types.KindGitServer, } } @@ -2977,12 +2981,22 @@ func (h *Handler) clusterUnifiedResourcesGet(w http.ResponseWriter, request *htt for _, enriched := range page { switch r := enriched.ResourceWithLabels.(type) { case types.Server: - logins, err := calculateSSHLogins(identity, accessChecker, r, enriched.Logins) - if err != nil { - return nil, trace.Wrap(err) - } + switch r.GetKind() { + case types.KindGitServer: + logins, err := accessChecker.GetAllowedLoginsForResource(r) + if err != nil { + return nil, trace.Wrap(err) + } + unifiedResources = append(unifiedResources, ui.MakeServer(site.GetName(), r, logins, enriched.RequiresRequest)) + + default: + logins, err := calculateSSHLogins(identity, accessChecker, r, enriched.Logins) + if err != nil { + return nil, trace.Wrap(err) + } - unifiedResources = append(unifiedResources, ui.MakeServer(site.GetName(), r, logins, enriched.RequiresRequest)) + unifiedResources = append(unifiedResources, ui.MakeServer(site.GetName(), r, logins, enriched.RequiresRequest)) + } case types.DatabaseServer: if !hasFetchedDBUsersAndNames { dbNames, dbUsers, err = getDatabaseUsersAndNames(accessChecker) diff --git a/lib/web/integrations.go b/lib/web/integrations.go index 5cca788e7c6f2..56039f01dd35d 100644 --- a/lib/web/integrations.go +++ b/lib/web/integrations.go @@ -69,6 +69,26 @@ func (h *Handler) integrationsCreate(w http.ResponseWriter, r *http.Request, p h return nil, trace.Wrap(err) } + case types.IntegrationSubKindGitHub: + ig, err = types.NewIntegrationGitHub( + types.Metadata{ + Name: req.Name, + }, + &types.GitHubIntegrationSpecV1{ + Organization: req.GitHub.Organization, + Proxy: &types.GitHubProxy{ + Connector: &types.GitHubProxyConnector{ + ClientID: req.GitHub.ConnectorClientID, + ClientSecret: req.GitHub.ConnectorClientSecret, + RedirectURL: req.GitHub.ConnectorRedirectURL, + }, + }, + }, + ) + if err != nil { + return nil, trace.Wrap(err) + } + default: return nil, trace.BadParameter("subkind %q is not supported", req.SubKind) } @@ -115,7 +135,7 @@ func (h *Handler) integrationsUpdate(w http.ResponseWriter, r *http.Request, p h return nil, trace.Wrap(err) } - integration, err := clt.GetIntegration(r.Context(), integrationName) + integration, err := clt.GetIntegration(r.Context(), integrationName, false) if err != nil { return nil, trace.Wrap(err) } @@ -181,7 +201,7 @@ func (h *Handler) integrationsGet(w http.ResponseWriter, r *http.Request, p http return nil, trace.Wrap(err) } - ig, err := clt.GetIntegration(r.Context(), integrationName) + ig, err := clt.GetIntegration(r.Context(), integrationName, false) if err != nil { return nil, trace.Wrap(err) } @@ -209,7 +229,7 @@ func (h *Handler) integrationsList(w http.ResponseWriter, r *http.Request, p htt startKey := values.Get("startKey") - igs, nextKey, err := clt.ListIntegrations(r.Context(), int(limit), startKey) + igs, nextKey, err := clt.ListIntegrations(r.Context(), int(limit), startKey, false) if err != nil { return nil, trace.Wrap(err) } diff --git a/lib/web/integrations_awsoidc.go b/lib/web/integrations_awsoidc.go index 6252af38a3d72..812324a7d4493 100644 --- a/lib/web/integrations_awsoidc.go +++ b/lib/web/integrations_awsoidc.go @@ -270,7 +270,7 @@ func (h *Handler) awsOIDCConfigureDeployServiceIAM(w http.ResponseWriter, r *htt } // Ensure the IntegrationName is valid. - _, err = h.GetProxyClient().GetIntegration(ctx, integrationName) + _, err = h.GetProxyClient().GetIntegration(ctx, integrationName, false) // NotFound error is ignored to prevent disclosure of whether the integration exists in a public/no-auth endpoint. if err != nil && !trace.IsNotFound(err) { return nil, trace.Wrap(err) @@ -961,7 +961,7 @@ func (h *Handler) awsOIDCCreateAWSAppAccess(w http.ResponseWriter, r *http.Reque return nil, trace.Wrap(err) } - ig, err := clt.GetIntegration(ctx, integrationName) + ig, err := clt.GetIntegration(ctx, integrationName, false) if err != nil { return nil, trace.Wrap(err) } @@ -1025,7 +1025,7 @@ func (h *Handler) awsOIDCDeleteAWSAppAccess(w http.ResponseWriter, r *http.Reque return nil, trace.Wrap(err) } - ig, err := clt.GetIntegration(ctx, integrationName) + ig, err := clt.GetIntegration(ctx, integrationName, false) if err != nil { return nil, trace.Wrap(err) } @@ -1080,7 +1080,7 @@ func (h *Handler) awsOIDCConfigureIdP(w http.ResponseWriter, r *http.Request, p } // Ensure the IntegrationName is valid. - _, err = h.GetProxyClient().GetIntegration(ctx, integrationName) + _, err = h.GetProxyClient().GetIntegration(ctx, integrationName, false) // NotFound error is ignored to prevent disclosure of whether the integration exists in a public/no-auth endpoint. if err != nil && !trace.IsNotFound(err) { return nil, trace.Wrap(err) diff --git a/lib/web/servers.go b/lib/web/servers.go index 62919e6194637..a1c749251c384 100644 --- a/lib/web/servers.go +++ b/lib/web/servers.go @@ -350,6 +350,30 @@ type desktopIsActive struct { Active bool `json:"active"` } +type createGitServerRequest struct { + SubKind string `json:"subKind,omitempty"` + GitHub *ui.GitHubServerMetadata `json:"github,omitempty"` +} + +func (r *createGitServerRequest) checkAndSetDefaults() error { + switch r.SubKind { + case types.SubKindGitHub: + if r.GitHub == nil { + return trace.BadParameter("missing github metadata for GitHub server") + } + if r.GitHub.Integration == "" { + return trace.BadParameter("missing integration for GitHub server") + } + if r.GitHub.Organization == "" { + return trace.BadParameter("missing organization for GitHub server") + } + return nil + + default: + return trace.BadParameter("invalid subkind %q, only %q is supported", r.SubKind, types.SubKindOpenSSHEICENode) + } +} + // createNodeRequest contains the required information to create a Node. type createNodeRequest struct { Name string `json:"name,omitempty"` @@ -385,6 +409,43 @@ func (r *createNodeRequest) checkAndSetDefaults() error { return nil } +func (h *Handler) handleGitServerCreate(w http.ResponseWriter, r *http.Request, p httprouter.Params, sctx *SessionContext, site reversetunnelclient.RemoteSite) (interface{}, error) { + ctx := r.Context() + + var req *createGitServerRequest + if err := httplib.ReadJSON(r, &req); err != nil { + return nil, trace.Wrap(err) + } + + if err := req.checkAndSetDefaults(); err != nil { + return nil, trace.Wrap(err) + } + + clt, err := sctx.GetUserClient(ctx, site) + if err != nil { + return nil, trace.Wrap(err) + } + + server, err := types.NewGitServer( + req.SubKind, + types.ServerSpecV2{ + GitHub: &types.GitHubServerMetadata{ + Organization: req.GitHub.Organization, + Integration: req.GitHub.Integration, + }, + }, + ) + if err != nil { + return nil, trace.Wrap(err) + } + + if _, err := clt.UpsertGitServer(ctx, server); err != nil { + return nil, trace.Wrap(err) + } + + return ui.MakeServer(site.GetName(), server, nil /*logins*/, false /* requiresRequest */), nil +} + // handleNodeCreate creates a Teleport Node. func (h *Handler) handleNodeCreate(w http.ResponseWriter, r *http.Request, p httprouter.Params, sctx *SessionContext, site reversetunnelclient.RemoteSite) (interface{}, error) { ctx := r.Context() diff --git a/lib/web/ui/integration.go b/lib/web/ui/integration.go index c31a3ce5f5d45..81e31f9cc4123 100644 --- a/lib/web/ui/integration.go +++ b/lib/web/ui/integration.go @@ -26,6 +26,7 @@ import ( "github.com/gravitational/teleport/api/types" "github.com/gravitational/teleport/lib/integrations/awsoidc" + "github.com/gravitational/teleport/lib/sshutils" ) // IntegrationAWSOIDCSpec contain the specific fields for the `aws-oidc` subkind integration. @@ -53,6 +54,16 @@ func (r *IntegrationAWSOIDCSpec) CheckAndSetDefaults() error { return nil } +type IntegrationGitHub struct { + Organization string `json:"organization"` + ConnectorClientID string `json:"connectorClientID"` + ConnectorClientSecret string `json:"connectorClientSecret"` + ConnectorRedirectURL string `json:"connectorRedirectURL"` + + PublicKeys []string `json:"publicKeys,omitempty"` + Fingerprints []string `json:"fingerprints,omitempty"` +} + // Integration describes Integration fields type Integration struct { // Name is the Integration name. @@ -61,6 +72,8 @@ type Integration struct { SubKind string `json:"subKind,omitempty"` // AWSOIDC contains the fields for `aws-oidc` subkind integration. AWSOIDC *IntegrationAWSOIDCSpec `json:"awsoidc,omitempty"` + // TODO + GitHub *IntegrationGitHub `json:"github,omitempty"` } // CheckAndSetDefaults for the create request. @@ -80,6 +93,13 @@ func (r *Integration) CheckAndSetDefaults() error { } } + switch r.SubKind { + case types.IntegrationSubKindGitHub: + if r.GitHub == nil && r.GitHub.Organization == "" { + return trace.BadParameter("missing organization for GitHub integration") + } + } + return nil } @@ -151,6 +171,30 @@ func MakeIntegration(ig types.Integration) (*Integration, error) { IssuerS3Bucket: s3Bucket, IssuerS3Prefix: s3Prefix, } + case types.IntegrationSubKindGitHub: + github := ig.GetGitHubIntegrationSpec() + if github == nil { + return nil, trace.BadParameter("missing github spec from created integration %v", ig) + } + + if github.Proxy == nil || len(github.Proxy.CertAuthorities) == 0 { + return nil, trace.BadParameter("missing SSH certificate authorities from created integration %v", ig) + } + + ret.GitHub = &IntegrationGitHub{ + Organization: github.Organization, + PublicKeys: make([]string, 0, len(github.Proxy.CertAuthorities)), + Fingerprints: make([]string, 0, len(github.Proxy.CertAuthorities)), + } + + for _, ca := range github.Proxy.CertAuthorities { + fingerprint, err := sshutils.AuthorizedKeyFingerprint(ca.PublicKey) + if err != nil { + return nil, trace.BadParameter("failed to parse public from created integration: %v", ig) + } + ret.GitHub.PublicKeys = append(ret.GitHub.PublicKeys, string(ca.PublicKey)) + ret.GitHub.Fingerprints = append(ret.GitHub.Fingerprints, fingerprint) + } } return ret, nil diff --git a/lib/web/ui/server.go b/lib/web/ui/server.go index 1192a980b7555..2319aea62fb89 100644 --- a/lib/web/ui/server.go +++ b/lib/web/ui/server.go @@ -61,6 +61,8 @@ type Server struct { AWS *AWSMetadata `json:"aws,omitempty"` // RequireRequest indicates if a returned resource is only accessible after an access request RequiresRequest bool `json:"requiresRequest,omitempty"` + + GitHub *types.GitHubServerMetadata `json:"github,omitempty"` } // AWSMetadata describes the AWS metadata for instances hosted in AWS. @@ -74,6 +76,9 @@ type AWSMetadata struct { SubnetID string `json:"subnetId"` } +// GitHubServerMetadata defines server metadata for GitHub server. +type GitHubServerMetadata types.GitHubServerMetadata + // sortedLabels is a sort wrapper that sorts labels by name type sortedLabels []Label @@ -120,6 +125,7 @@ func MakeServer(clusterName string, server types.Server, logins []string, requir SubKind: server.GetSubKind(), RequiresRequest: requiresRequest, SSHLogins: logins, + GitHub: server.GetGitHub(), } if server.GetSubKind() == types.SubKindOpenSSHEICENode { diff --git a/tool/tctl/common/auth_command.go b/tool/tctl/common/auth_command.go index c19859c09ac1c..ad61508374012 100644 --- a/tool/tctl/common/auth_command.go +++ b/tool/tctl/common/auth_command.go @@ -85,6 +85,7 @@ type AuthCommand struct { password string caType string streamTarfile bool + integration string identityWriter identityfile.ConfigWriter rotateGracePeriod time.Duration @@ -204,6 +205,7 @@ var allowedCertificateTypes = []string{ "db-client-der", "openssh", "saml-idp", + "github", } // allowedCRLCertificateTypes list of certificate authorities types that can diff --git a/tool/tctl/common/resource_command.go b/tool/tctl/common/resource_command.go index bb90404387d80..c11bb0c131977 100644 --- a/tool/tctl/common/resource_command.go +++ b/tool/tctl/common/resource_command.go @@ -167,6 +167,7 @@ func (rc *ResourceCommand) Initialize(app *kingpin.Application, config *servicec types.KindAccessGraphSettings: rc.upsertAccessGraphSettings, types.KindPlugin: rc.createPlugin, types.KindSPIFFEFederation: rc.createSPIFFEFederation, + types.KindGitServer: rc.createGitServer, types.KindStaticHostUser: rc.createStaticHostUser, } rc.UpdateHandlers = map[ResourceKind]ResourceCreateHandler{ @@ -1084,6 +1085,30 @@ func (rc *ResourceCommand) createNode(ctx context.Context, client *authclient.Cl return nil } +func (rc *ResourceCommand) createGitServer(ctx context.Context, client *authclient.Client, raw services.UnknownResource) error { + server, err := services.UnmarshalServer(raw.Raw, types.KindGitServer) + if err != nil { + return trace.Wrap(err) + } + + name := server.GetName() + _, err = client.GetGitServer(ctx, name) + if err != nil && !trace.IsNotFound(err) { + return trace.Wrap(err) + } + exists := (err == nil) + if !rc.IsForced() && exists { + return trace.AlreadyExists("git_server %q already exists, use --force flag to override", name) + } + + _, err = client.UpsertGitServer(ctx, server) + if err != nil { + return trace.Wrap(err) + } + fmt.Printf("git_server %q has been %s\n", name, UpsertVerb(exists, rc.IsForced())) + return nil +} + func (rc *ResourceCommand) createOIDCConnector(ctx context.Context, client *authclient.Client, raw services.UnknownResource) error { conn, err := services.UnmarshalOIDCConnector(raw.Raw) if err != nil { @@ -1303,7 +1328,7 @@ func (rc *ResourceCommand) createIntegration(ctx context.Context, client *authcl return trace.Wrap(err) } - existingIntegration, err := client.GetIntegration(ctx, integration.GetName()) + existingIntegration, err := client.GetIntegration(ctx, integration.GetName(), rc.withSecrets) if err != nil && !trace.IsNotFound(err) { return trace.Wrap(err) } @@ -1321,6 +1346,8 @@ func (rc *ResourceCommand) createIntegration(ctx context.Context, client *authcl switch integration.GetSubKind() { case types.IntegrationSubKindAWSOIDC: existingIntegration.SetAWSOIDCIntegrationSpec(integration.GetAWSOIDCIntegrationSpec()) + case types.IntegrationSubKindGitHub: + existingIntegration.SetGitHubIntegrationSpec(integration.GetGitHubIntegrationSpec()) default: return trace.BadParameter("subkind %q is not supported", integration.GetSubKind()) } @@ -1476,6 +1503,11 @@ func (rc *ResourceCommand) Delete(ctx context.Context, client *authclient.Client return trace.Wrap(err) } fmt.Printf("node %v has been deleted\n", rc.ref.Name) + case types.KindGitServer: + if err = client.DeleteGitServer(ctx, rc.ref.Name); err != nil { + return trace.Wrap(err) + } + fmt.Printf("git_server %v has been deleted\n", rc.ref.Name) case types.KindUser: if err = client.DeleteUser(ctx, rc.ref.Name); err != nil { return trace.Wrap(err) @@ -2115,6 +2147,54 @@ func (rc *ResourceCommand) getCollection(ctx context.Context, client *authclient return nil, trace.NotFound("node with ID %q not found", rc.ref.Name) } + return &collection, nil + case types.KindGitServer: + var search []string + if rc.ref.Name != "" { + search = []string{rc.ref.Name} + } + + req := proto.ListUnifiedResourcesRequest{ + Kinds: []string{types.KindGitServer}, + SearchKeywords: search, + SortBy: types.SortBy{Field: types.ResourceKind}, + } + + var collection serverCollection + for { + page, next, err := apiclient.GetUnifiedResourcePage(ctx, client, &req) + if err != nil { + return nil, trace.Wrap(err) + } + + for _, r := range page { + srv, ok := r.ResourceWithLabels.(types.Server) + if !ok { + log.Warnf("expected types.Server but received unexpected type %T", r) + continue + } + + if rc.ref.Name == "" { + collection.servers = append(collection.servers, srv) + continue + } + + if srv.GetName() == rc.ref.Name || srv.GetHostname() == rc.ref.Name { + collection.servers = []types.Server{srv} + return &collection, nil + } + } + + req.StartKey = next + if req.StartKey == "" { + break + } + } + + if len(collection.servers) == 0 && rc.ref.Name != "" { + return nil, trace.NotFound("git_server with ID %q not found", rc.ref.Name) + } + return &collection, nil case types.KindAuthServer: servers, err := client.GetAuthServers() @@ -2753,7 +2833,7 @@ func (rc *ResourceCommand) getCollection(ctx context.Context, client *authclient } case types.KindIntegration: if rc.ref.Name != "" { - ig, err := client.GetIntegration(ctx, rc.ref.Name) + ig, err := client.GetIntegration(ctx, rc.ref.Name, rc.withSecrets) if err != nil { return nil, trace.Wrap(err) } @@ -2765,7 +2845,7 @@ func (rc *ResourceCommand) getCollection(ctx context.Context, client *authclient var err error var nextKey string for { - igs, nextKey, err = client.ListIntegrations(ctx, 0, nextKey) + igs, nextKey, err = client.ListIntegrations(ctx, 0, nextKey, rc.withSecrets) if err != nil { return nil, trace.Wrap(err) } diff --git a/tool/tctl/common/user_command.go b/tool/tctl/common/user_command.go index f2fc151226d1b..cd2bf1346d58a 100644 --- a/tool/tctl/common/user_command.go +++ b/tool/tctl/common/user_command.go @@ -66,6 +66,7 @@ type UserCommand struct { hostUserUIDProvided bool hostUserGID string hostUserGIDProvided bool + allowedGitHubOrgs []string ttl time.Duration @@ -101,6 +102,7 @@ func (u *UserCommand) Initialize(app *kingpin.Application, config *servicecfg.Co u.userAdd.Flag("gcp-service-accounts", "List of allowed GCP service accounts for the new user").StringsVar(&u.allowedGCPServiceAccounts) u.userAdd.Flag("host-user-uid", "UID for auto provisioned host users to use").IsSetByUser(&u.hostUserUIDProvided).StringVar(&u.hostUserUID) u.userAdd.Flag("host-user-gid", "GID for auto provisioned host users to use").IsSetByUser(&u.hostUserGIDProvided).StringVar(&u.hostUserGID) + u.userAdd.Flag("github-orgs", "List of allowed GitHub organizations").StringsVar(&u.allowedGitHubOrgs) u.userAdd.Flag("roles", "List of roles for the new user to assume").Required().StringsVar(&u.allowedRoles) @@ -136,6 +138,7 @@ func (u *UserCommand) Initialize(app *kingpin.Application, config *servicecfg.Co StringsVar(&u.allowedGCPServiceAccounts) u.userUpdate.Flag("set-host-user-uid", "UID for auto provisioned host users to use. Value can be reset by providing an empty string").IsSetByUser(&u.hostUserUIDProvided).StringVar(&u.hostUserUID) u.userUpdate.Flag("set-host-user-gid", "GID for auto provisioned host users to use. Value can be reset by providing an empty string").IsSetByUser(&u.hostUserGIDProvided).StringVar(&u.hostUserGID) + u.userUpdate.Flag("set-github-orgs", "List of allowed GitHub organizations").StringsVar(&u.allowedGitHubOrgs) u.userList = users.Command("ls", "Lists all user accounts.") u.userList.Flag("format", "Output format, 'text' or 'json'").Hidden().Default(teleport.Text).StringVar(&u.format) @@ -275,18 +278,19 @@ func (u *UserCommand) Add(ctx context.Context, client *authclient.Client) error } traits := map[string][]string{ - constants.TraitLogins: u.allowedLogins, - constants.TraitWindowsLogins: u.allowedWindowsLogins, - constants.TraitKubeUsers: flattenSlice(u.allowedKubeUsers), - constants.TraitKubeGroups: flattenSlice(u.allowedKubeGroups), - constants.TraitDBUsers: flattenSlice(u.allowedDatabaseUsers), - constants.TraitDBNames: flattenSlice(u.allowedDatabaseNames), - constants.TraitDBRoles: flattenSlice(u.allowedDatabaseRoles), - constants.TraitAWSRoleARNs: flattenSlice(u.allowedAWSRoleARNs), - constants.TraitAzureIdentities: azureIdentities, - constants.TraitGCPServiceAccounts: gcpServiceAccounts, - constants.TraitHostUserUID: {u.hostUserUID}, - constants.TraitHostUserGID: {u.hostUserGID}, + constants.TraitLogins: u.allowedLogins, + constants.TraitWindowsLogins: u.allowedWindowsLogins, + constants.TraitKubeUsers: flattenSlice(u.allowedKubeUsers), + constants.TraitKubeGroups: flattenSlice(u.allowedKubeGroups), + constants.TraitDBUsers: flattenSlice(u.allowedDatabaseUsers), + constants.TraitDBNames: flattenSlice(u.allowedDatabaseNames), + constants.TraitDBRoles: flattenSlice(u.allowedDatabaseRoles), + constants.TraitAWSRoleARNs: flattenSlice(u.allowedAWSRoleARNs), + constants.TraitAzureIdentities: azureIdentities, + constants.TraitGCPServiceAccounts: gcpServiceAccounts, + constants.TraitHostUserUID: {u.hostUserUID}, + constants.TraitHostUserGID: {u.hostUserGID}, + constants.TraitGitHubOrganizations: flattenSlice(u.allowedGitHubOrgs), } user, err := types.NewUser(u.login) @@ -465,6 +469,11 @@ func (u *UserCommand) Update(ctx context.Context, client *authclient.Client) err user.SetHostUserGID(u.hostUserGID) updateMessages["Host user GID"] = []string{u.hostUserGID} } + if len(u.allowedGitHubOrgs) > 0 { + allowedGitHubOrgs := flattenSlice(u.allowedGitHubOrgs) + user.SetGitHubOrganizations(allowedGitHubOrgs) + updateMessages["GitHub organizations"] = allowedGitHubOrgs + } if len(updateMessages) == 0 { return trace.BadParameter("Nothing to update. Please provide at least one --set flag.") diff --git a/tool/tsh/common/git.go b/tool/tsh/common/git.go new file mode 100644 index 0000000000000..9157ea23e40ef --- /dev/null +++ b/tool/tsh/common/git.go @@ -0,0 +1,334 @@ +/* + * Teleport + * Copyright (C) 2023 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 common + +import ( + "bytes" + "fmt" + "log/slog" + "os" + "os/exec" + "strings" + + "github.com/gravitational/teleport" + apiclient "github.com/gravitational/teleport/api/client" + "github.com/gravitational/teleport/api/client/proto" + "github.com/gravitational/teleport/api/types" + "github.com/gravitational/teleport/lib/asciitable" + "github.com/gravitational/teleport/lib/client" + "github.com/gravitational/trace" +) + +func onGitClone(cf *CLIConf) error { + // TODO validate host and do a git_server fetch before cloning. + _, org, err := parseGitURL(strings.TrimSpace(cf.GitURL)) + if err != nil { + return trace.Wrap(err) + } + + config := fmt.Sprintf("core.sshcommand=%s", makeGitSSHCommand(org)) + cmd := exec.CommandContext(cf.Context, "git", "clone", "--config", config, cf.GitURL) + cmd.Stdin = cf.Stdin() + cmd.Stdout = cf.Stdout() + cmd.Stderr = cf.Stderr() + return trace.Wrap(cmd.Run()) +} + +func onGitLogin(cf *CLIConf) error { + tc, err := makeClient(cf) + if err != nil { + return trace.Wrap(err) + } + + _, name, err := getGitHubUser(cf, tc) + if err != nil { + return trace.Wrap(err) + } + fmt.Fprintf(cf.Stdout(), "Your GitHub username is %q.\n", name) + return nil +} + +func onGitSSH(cf *CLIConf) error { + tc, err := makeClient(cf) + if err != nil { + return trace.Wrap(err) + } + + // TODO validate the host is github.com + userID, _, err := getGitHubUser(cf, tc) + if err != nil { + return trace.Wrap(err) + } + + cf.UserHost = fmt.Sprintf("%s@%s", userID, types.MakeGitHubOrgServerDomain(cf.GitHubOrg)) + + // Make again to reflect cf.UserHost change // TODO improve perf + tc, err = makeClient(cf) + if err != nil { + return trace.Wrap(err) + } + slog.InfoContext(cf.Context, "==tc", "hostlogin", tc.Config.HostLogin) + + tc.Stdin = os.Stdin + err = client.RetryWithRelogin(cf.Context, tc, func() error { + return tc.SSH(cf.Context, cf.RemoteCommand) + }) + // Exit with the same exit status as the failed command. + return trace.Wrap(convertSSHExitCode(tc, err)) +} + +func onGitConfig(cf *CLIConf) error { + switch cf.GitConfigAction { + case "": + return trace.Wrap(onGitConfigCheck(cf)) + case "update": + return trace.Wrap(onGitConfigUpdate(cf)) + case "reset": + return trace.Wrap(onGitConfigReset(cf)) + default: + return trace.BadParameter("unknown option for git config") + } +} + +func onGitConfigCheck(cf *CLIConf) error { + var bufStd bytes.Buffer + cmd := exec.CommandContext(cf.Context, "git", "config", "--local", "--default", "", "--get", "core.sshcommand") + cmd.Stdout = &bufStd + cmd.Stderr = cf.Stderr() + + if err := cmd.Run(); err != nil { + return trace.Wrap(err) + } + + output := strings.TrimSpace(bufStd.String()) + wantPrefix := makeGitSSHCommand("") + switch { + case strings.HasPrefix(output, wantPrefix): + _, org, _ := strings.Cut(output, wantPrefix) + fmt.Fprintf(cf.Stdout(), "The current git dir is configured with Teleport for GitHub organization %q.\n\n", org) + cf.GitHubOrg = org + default: + fmt.Fprintf(cf.Stdout(), "The current git dir is not configured with Teleport.\n"+ + "Run 'tsh git config udpate' to configure it.\n\n") + return nil + } + + tc, err := makeClient(cf) + if err != nil { + return trace.Wrap(err) + } + + _, username, err := getGitHubUser(cf, tc) + if err != nil { + return trace.Wrap(err) + } + fmt.Fprintf(cf.Stdout(), "Your GitHub username is %q.\n", username) + return nil +} + +func onGitConfigUpdate(cf *CLIConf) error { + var bufStd bytes.Buffer + lsCmd := exec.CommandContext(cf.Context, "git", "ls-remote", "--get-url") + lsCmd.Stdout = &bufStd + lsCmd.Stderr = cf.Stderr() + if err := lsCmd.Run(); err != nil { + return trace.Wrap(err) + } + + for _, gitURL := range strings.Split(bufStd.String(), "\n") { + host, org, err := parseGitURL(strings.TrimSpace(gitURL)) + if err != nil { + return trace.Wrap(err) + } + if host == "github.com" { + cmd := exec.CommandContext(cf.Context, "git", "config", "--local", "--replace-all", "core.sshcommand", makeGitSSHCommand(org)) + cmd.Stdout = cf.Stdout() + cmd.Stderr = cf.Stderr() + return trace.NewAggregate(cmd.Run(), onGitConfigCheck(cf)) + } + } + return trace.NotFound("no supported git url found from 'git ls-remote --get-url': %s", bufStd.String()) +} + +func onGitConfigReset(cf *CLIConf) error { + // TODO do we want to verify the current content be fore reset + cmd := exec.CommandContext(cf.Context, "git", "config", "--local", "--unset-all", "core.sshcommand") + cmd.Stdout = cf.Stdout() + cmd.Stderr = cf.Stderr() + return trace.NewAggregate(cmd.Run(), onGitConfigCheck(cf)) +} + +func onGitList(cf *CLIConf) error { + tc, err := makeClient(cf) + if err != nil { + return trace.Wrap(err) + } + + var resources []*types.EnrichedResource + err = client.RetryWithRelogin(cf.Context, tc, func() error { + client, err := tc.ConnectToCluster(cf.Context) + if err != nil { + return trace.Wrap(err) + } + defer client.Close() + + // TODO + resources, err = apiclient.GetAllUnifiedResources(cf.Context, client.AuthClient, &proto.ListUnifiedResourcesRequest{ + Kinds: []string{types.KindGitServer}, + SortBy: types.SortBy{Field: types.ResourceMetadataName}, + SearchKeywords: tc.SearchKeywords, + PredicateExpression: tc.PredicateExpression, + IncludeLogins: true, + }) + return trace.Wrap(err) + }) + if err != nil { + return trace.Wrap(err) + } + + // TODO sort + return printGitServers(cf, resources) +} + +func printGitServers(cf *CLIConf, resources []*types.EnrichedResource) error { + format := strings.ToLower(cf.Format) + switch format { + case teleport.Text, "": + return printGitServersAsText(cf, resources) + case teleport.JSON, teleport.YAML: + /* TODO + out, err := serializeNodes(nodes, format) + if err != nil { + return trace.Wrap(err) + } + if _, err := fmt.Fprintln(cf.Stdout(), out); err != nil { + return trace.Wrap(err) + } + */ + return trace.BadParameter("unsupported format %q", format) + default: + return trace.BadParameter("unsupported format %q", format) + } + return nil +} + +func printGitServersAsText(cf *CLIConf, resources []*types.EnrichedResource) error { + // TODO(greedy52) verbose mode? + profile, err := cf.ProfileStatus() + if err != nil { + return trace.Wrap(err) + } + var rows [][]string + var showLoginNote bool + for _, resource := range resources { + server, ok := resource.ResourceWithLabels.(types.Server) + if !ok { + return trace.BadParameter("expecting Git server but got %v", server) + } + + login := "(n/a)*" + if profile.GitHubUsername != "" && profile.GitHubUserID != "" { + login = profile.GitHubUsername + } else { + showLoginNote = true + } + + if github := server.GetGitHub(); github != nil { + rows = append(rows, []string{ + "GitHub", + github.Organization, + login, + fmt.Sprintf("https://github.com/%s", github.Organization), + }) + } else { + return trace.BadParameter("expecting Git server but got %v", server) + } + } + + t := asciitable.MakeTable([]string{"Type", "Organization", "Username", "URL"}, rows...) + if _, err := fmt.Fprintln(cf.Stdout(), t.AsBuffer().String()); err != nil { + return trace.Wrap(err) + } + + if showLoginNote { + fmt.Fprintln(cf.Stdout(), gitLoginNote) + } + + fmt.Fprintln(cf.Stdout(), gitCommandsGeneralHint) + + return nil +} + +func parseGitURL(url string) (string, string, error) { + // TODO support https url + _, hostAndMore, ok := strings.Cut(url, "@") + if !ok { + return "", "", trace.BadParameter("cannot parse git URL %s", url) + } + host, orgAndMore, ok := strings.Cut(hostAndMore, ":") + if !ok { + return "", "", trace.BadParameter("cannot parse git URL %s", url) + } + org, _, ok := strings.Cut(orgAndMore, "/") + if !ok { + return "", "", trace.BadParameter("cannot parse git URL %s", url) + } + return host, org, nil +} + +func makeGitSSHCommand(org string) string { + return "tsh git ssh --github-org " + org +} + +func getGitHubUser(cf *CLIConf, tc *client.TeleportClient) (string, string, error) { + profile, err := cf.ProfileStatus() + if err != nil { + return "", "", trace.Wrap(err) + } + + if profile.GitHubUserID != "" && profile.GitHubUsername != "" { + return profile.GitHubUserID, profile.GitHubUsername, nil + } + + err = client.RetryWithRelogin(cf.Context, tc, func() error { + return tc.ReissueWithGitHubAuth(cf.Context, cf.GitHubOrg) + }) + if err != nil { + return "", "", trace.Wrap(err) + } + + profile, err = tc.ProfileStatus() + if err != nil { + return "", "", trace.Wrap(err) + } + + if profile.GitHubUserID == "" { + return "", "", trace.BadParameter("cannot retrieve github identity") + } + return profile.GitHubUserID, profile.GitHubUsername, nil +} + +const gitLoginNote = "" + + "(n/a)*: Usernames will be retrieved automatically upon git commands.\n" + + " Alternatively, run `tsh git login --github-org `.\n" + +const gitCommandsGeneralHint = "" + + "hint: use 'tsh git clone ' to clone a new repository\n" + + " use 'tsh git config update' to configure an existing repository to use Teleport\n" + + " once the repository is cloned or configured, use 'git' as normal\n" diff --git a/tool/tsh/common/tsh.go b/tool/tsh/common/tsh.go index 500dcab53c79f..621864817599b 100644 --- a/tool/tsh/common/tsh.go +++ b/tool/tsh/common/tsh.go @@ -550,6 +550,10 @@ type CLIConf struct { // DisableSSHResumption disables transparent SSH connection resumption. DisableSSHResumption bool + GitHubOrg string + GitURL string + GitConfigAction string + // Relogin determines if a login attempt should be made in the event of command failures. This // allows users with potentially stale credentials preventing access to gain the required access // without having to manually run tsh login and the failed command again. @@ -1210,6 +1214,26 @@ func Run(ctx context.Context, args []string, opts ...CliOption) error { vnetAdminSetupCmd := newVnetAdminSetupCommand(app) vnetDaemonCmd := newVnetDaemonCommand(app) + git := app.Command("git", "Git server commands.") + gitList := git.Command("ls", "List Git servers.") + gitList.Flag("search", searchHelp).StringVar(&cf.SearchKeywords) + gitList.Flag("query", queryHelp).StringVar(&cf.PredicateExpression) + + gitConfig := git.Command("config", "Check Teleport config of the working git dir.") + gitConfig.Arg("action", "Action to perform. Valid options: update or reset.").EnumVar(&cf.GitConfigAction, "", "update", "reset") + + gitClone := git.Command("clone", "Git clone.") + gitClone.Arg("git-url", "Git URL").Required().StringVar(&cf.GitURL) + + gitLogin := git.Command("login", "Opens a browser and retrieves your login from GitHub.") + gitLogin.Flag("github-org", "GitHub organization.").Required().StringVar(&cf.GitHubOrg) + + gitSSH := git.Command("ssh", "Proxy Git SSH.").Hidden() + gitSSH.Flag("github-org", "GitHub organization.").Required().StringVar(&cf.GitHubOrg) + gitSSH.Arg("[user@]host", "Remote hostname and the login to use").Required().StringVar(&cf.UserHost) + gitSSH.Arg("command", "Command to execute on a remote host").StringsVar(&cf.RemoteCommand) + gitSSH.Flag("option", "OpenSSH options in the format used in the configuration file").Short('o').AllowDuplicate().StringsVar(&cf.Options) + if runtime.GOOS == constants.WindowsOS { bench.Hidden() } @@ -1579,6 +1603,16 @@ func Run(ctx context.Context, args []string, opts ...CliOption) error { err = vnetAdminSetupCmd.run(&cf) case vnetDaemonCmd.FullCommand(): err = vnetDaemonCmd.run(&cf) + case gitSSH.FullCommand(): + err = onGitSSH(&cf) + case gitClone.FullCommand(): + err = onGitClone(&cf) + case gitList.FullCommand(): + err = onGitList(&cf) + case gitConfig.FullCommand(): + err = onGitConfig(&cf) + case gitLogin.FullCommand(): + err = onGitLogin(&cf) default: // Handle commands that might not be available. switch { @@ -3653,6 +3687,10 @@ func onSSH(cf *CLIConf) error { fmt.Sprintf("%s@%s", tc.HostLogin, tc.Host), ) // Exit with the same exit status as the failed command. + return trace.Wrap(convertSSHExitCode(tc, err)) +} + +func convertSSHExitCode(tc *client.TeleportClient, err error) error { if tc.ExitStatus != 0 { var exitErr *common.ExitCodeError if errors.As(err, &exitErr) { @@ -4538,6 +4576,9 @@ func printStatus(debug bool, p *profileInfo, env map[string]string, isActive boo fmt.Printf(" Allowed Resources: %s\n", allowedResourcesStr) } } + if p.GitHubUsername != "" { + fmt.Printf(" GitHub username: %s\n", p.GitHubUsername) + } fmt.Printf(" Valid until: %v [%v]\n", p.ValidUntil, humanDuration) fmt.Printf(" Extensions: %v\n", strings.Join(p.Extensions, ", ")) @@ -4706,6 +4747,8 @@ type profileInfo struct { Extensions []string `json:"extensions,omitempty"` CriticalOptions map[string]string `json:"critical_options,omitempty"` AllowedResourceIDs []types.ResourceID `json:"allowed_resources,omitempty"` + GitHubUserID string `json:"github_userid,omitempty"` + GitHubUsername string `json:"github_login,omitempty"` } func makeAllProfileInfo(active *client.ProfileStatus, others []*client.ProfileStatus, env map[string]string) (*profileInfo, []*profileInfo) { @@ -4755,6 +4798,8 @@ func makeProfileInfo(p *client.ProfileStatus, env map[string]string, isActive bo Extensions: p.Extensions, CriticalOptions: p.CriticalOptions, AllowedResourceIDs: p.AllowedResourceIDs, + GitHubUserID: p.GitHubUserID, + GitHubUsername: p.GitHubUsername, } // update active profile info from env diff --git a/web/packages/design/src/ResourceIcon/assets/git.svg b/web/packages/design/src/ResourceIcon/assets/git.svg new file mode 100644 index 0000000000000..cb1a374e8badc --- /dev/null +++ b/web/packages/design/src/ResourceIcon/assets/git.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/packages/design/src/ResourceIcon/icons.ts b/web/packages/design/src/ResourceIcon/icons.ts index aee4ef7939276..0fe803283641f 100644 --- a/web/packages/design/src/ResourceIcon/icons.ts +++ b/web/packages/design/src/ResourceIcon/icons.ts @@ -117,6 +117,7 @@ import g2 from './assets/g2.svg'; import gable from './assets/gable.svg'; import gemDark from './assets/gem-dark.svg'; import gemLight from './assets/gem-light.svg'; +import git from './assets/git.svg'; import githubDark from './assets/github-dark.svg'; import githubLight from './assets/github-light.svg'; import gitlab from './assets/gitlab.svg'; @@ -396,6 +397,7 @@ export { gable, gemDark, gemLight, + git, githubDark, githubLight, gitlab, diff --git a/web/packages/design/src/ResourceIcon/resourceIconSpecs.ts b/web/packages/design/src/ResourceIcon/resourceIconSpecs.ts index 26edb1aea66ba..32ed76cdc70c0 100644 --- a/web/packages/design/src/ResourceIcon/resourceIconSpecs.ts +++ b/web/packages/design/src/ResourceIcon/resourceIconSpecs.ts @@ -118,6 +118,7 @@ export const resourceIconSpecs = { g2: forAllThemes(i.g2), gable: forAllThemes(i.gable), gem: { dark: i.gemDark, light: i.gemLight }, + git: forAllThemes(i.git), github: { dark: i.githubDark, light: i.githubLight }, gitlab: forAllThemes(i.gitlab), gmail: forAllThemes(i.gmail), diff --git a/web/packages/design/src/assets/images/icons/github-mark-white.svg b/web/packages/design/src/assets/images/icons/github-mark-white.svg new file mode 100644 index 0000000000000..d5e64918546d9 --- /dev/null +++ b/web/packages/design/src/assets/images/icons/github-mark-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/packages/design/src/assets/images/icons/github-mark.svg b/web/packages/design/src/assets/images/icons/github-mark.svg new file mode 100644 index 0000000000000..37fa923df33fa --- /dev/null +++ b/web/packages/design/src/assets/images/icons/github-mark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/web/packages/shared/components/UnifiedResources/FilterPanel.tsx b/web/packages/shared/components/UnifiedResources/FilterPanel.tsx index 3437efc1bba65..5aa735b436b85 100644 --- a/web/packages/shared/components/UnifiedResources/FilterPanel.tsx +++ b/web/packages/shared/components/UnifiedResources/FilterPanel.tsx @@ -52,6 +52,7 @@ const kindToLabel: Record = { kube_cluster: 'Kubernetes', node: 'Server', user_group: 'User group', + git_server: 'Git', }; const sortFieldOptions = [ diff --git a/web/packages/shared/components/UnifiedResources/shared/viewItemsFactory.ts b/web/packages/shared/components/UnifiedResources/shared/viewItemsFactory.ts index 9a70b5951a329..23c08fa8fb613 100644 --- a/web/packages/shared/components/UnifiedResources/shared/viewItemsFactory.ts +++ b/web/packages/shared/components/UnifiedResources/shared/viewItemsFactory.ts @@ -21,6 +21,7 @@ import { Database as DatabaseIcon, Kubernetes as KubernetesIcon, Server as ServerIcon, + GitHub as GitHubIcon, Desktop as DesktopIcon, } from 'design/Icon'; import { ResourceIconName } from 'design/ResourceIcon'; @@ -37,6 +38,7 @@ import { UnifiedResourceDesktop, UnifiedResourceKube, UnifiedResourceUserGroup, + UnifiedResourceGitServer, SharedUnifiedResource, } from '../types'; @@ -172,6 +174,27 @@ export function makeUnifiedResourceViewItemUserGroup( }; } +export function makeUnifiedResourceViewItemGitServer( + resource: UnifiedResourceNode, + ui: UnifiedResourceUi +): UnifiedResourceViewItem { + + return { + name: resource.github ? resource.github.organization: resource.hostname, + SecondaryIcon: GitHubIcon, + primaryIconName: 'git', + ActionButton: ui.ActionButton, + labels: resource.labels, + cardViewProps: { + primaryDesc: "GitHub Organization", + }, + listViewProps: { + resourceType: "GitHub Organization", + }, + requiresRequest: resource.requiresRequest, + }; +} + function formatNodeSubKind(subKind: NodeSubKind): string { switch (subKind) { case 'openssh-ec2-ice': @@ -216,5 +239,7 @@ export function mapResourceToViewItem({ resource, ui }: SharedUnifiedResource) { return makeUnifiedResourceViewItemDesktop(resource, ui); case 'user_group': return makeUnifiedResourceViewItemUserGroup(resource, ui); + case 'git_server': + return makeUnifiedResourceViewItemGitServer(resource, ui); } } diff --git a/web/packages/shared/components/UnifiedResources/types.ts b/web/packages/shared/components/UnifiedResources/types.ts index 22c0c52547181..8c249b43f7ca5 100644 --- a/web/packages/shared/components/UnifiedResources/types.ts +++ b/web/packages/shared/components/UnifiedResources/types.ts @@ -60,6 +60,18 @@ export interface UnifiedResourceNode { requiresRequest?: boolean; } +export interface UnifiedResourceGitServer { + kind: 'git_server'; + id: string; + hostname: string; + labels: ResourceLabel[]; + subKind: GitServerSubKind; + github?: { + organization: string; + }; + requiresRequest?: boolean; +} + export interface UnifiedResourceKube { kind: 'kube_cluster'; name: string; @@ -96,6 +108,7 @@ export type SharedUnifiedResource = { | UnifiedResourceNode | UnifiedResourceKube | UnifiedResourceDesktop + | UnifiedResourceGitServer | UnifiedResourceUserGroup; ui: UnifiedResourceUi; }; diff --git a/web/packages/shared/services/types.ts b/web/packages/shared/services/types.ts index ecc9c55f9233c..3f0896dc74f83 100644 --- a/web/packages/shared/services/types.ts +++ b/web/packages/shared/services/types.ts @@ -47,3 +47,5 @@ export type AuthProvider = { /** Values are taken from https://github.com/gravitational/teleport/blob/0460786b4c3afced1350dd9362ce761806e1c99d/api/types/constants.go#L140-L154 */ export type NodeSubKind = 'teleport' | 'openssh' | 'openssh-ec2-ice'; + +export type GitServerSubKind = 'github' ; diff --git a/web/packages/teleport/src/Audit/EventList/EventTypeCell.tsx b/web/packages/teleport/src/Audit/EventList/EventTypeCell.tsx index c3ee2b148ac90..23b39fb238780 100644 --- a/web/packages/teleport/src/Audit/EventList/EventTypeCell.tsx +++ b/web/packages/teleport/src/Audit/EventList/EventTypeCell.tsx @@ -288,6 +288,8 @@ const EventIconMap: Record = { [eventCodes.INTEGRATION_CREATE]: Icons.Info, [eventCodes.INTEGRATION_UPDATE]: Icons.Info, [eventCodes.INTEGRATION_DELETE]: Icons.Info, + [eventCodes.GIT_COMMAND]: Icons.GitHub, + [eventCodes.GIT_COMMAND_FAILURE]: Icons.GitHub, [eventCodes.STATIC_HOST_USER_CREATE]: Icons.User, [eventCodes.STATIC_HOST_USER_UPDATE]: Icons.User, [eventCodes.STATIC_HOST_USER_DELETE]: Icons.User, diff --git a/web/packages/teleport/src/GitServers/ConnectDialog/ConnectDialog.story.tsx b/web/packages/teleport/src/GitServers/ConnectDialog/ConnectDialog.story.tsx new file mode 100644 index 0000000000000..64c53edd97988 --- /dev/null +++ b/web/packages/teleport/src/GitServers/ConnectDialog/ConnectDialog.story.tsx @@ -0,0 +1,94 @@ +/** + * Teleport + * Copyright (C) 2023 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 React from 'react'; + +import ConnectDialog from './ConnectDialog'; + +export default { + title: 'Teleport/Databases/Connect', +}; + +export const ConnectDbNameFlagRequired = () => ( + null} + authType="local" + /> +); + +export const ConnectDbNameFlagOptional = () => ( + null} + authType="local" + /> +); + +export const ConnectNoDbNameFlag = () => ( + null} + authType="local" + /> +); + +export const ConnectDynamodb = () => ( + null} + authType="local" + /> +); + +export const ConnectSpanner = () => ( + null} + authType="local" + /> +); + +export const ConnectWithRequestId = () => { + return ( + null} + authType="local" + accessRequestId="e1e8072c-1eb8-5df4-a7bd-b6863b19271c" + /> + ); +}; diff --git a/web/packages/teleport/src/GitServers/ConnectDialog/ConnectDialog.test.tsx b/web/packages/teleport/src/GitServers/ConnectDialog/ConnectDialog.test.tsx new file mode 100644 index 0000000000000..2660ea7c825b6 --- /dev/null +++ b/web/packages/teleport/src/GitServers/ConnectDialog/ConnectDialog.test.tsx @@ -0,0 +1,102 @@ +/** + * Teleport + * Copyright (C) 2023 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 React from 'react'; +import { render, screen } from 'design/utils/testing'; + +import ConnectDialog, { Props } from './ConnectDialog'; + +test('correct connect command generated for postgres db', () => { + render(); + + // --db-name flag should be required + const expectedOutput = + 'tsh db connect aurora --db-user= --db-name='; + + expect(screen.getByText(expectedOutput)).toBeInTheDocument(); +}); + +test('correct connect command generated for spanner', () => { + render(); + + // --db-name flag should be required + const expectedOutput = + 'tsh db connect gspanner --db-user= --db-name='; + + expect(screen.getByText(expectedOutput)).toBeInTheDocument(); +}); + +test('correct connect command generated for mysql db', () => { + render(); + + // --db-name flag should be optional + const expectedOutput = + 'tsh db connect aurora --db-user= [--db-name=]'; + + expect(screen.getByText(expectedOutput)).toBeInTheDocument(); +}); + +test('correct connect command generated for redis', () => { + render(); + + // There should be no --db-name flag + const expectedOutput = 'tsh db connect aurora --db-user='; + + expect(screen.getByText(expectedOutput)).toBeInTheDocument(); +}); + +test('correct connect command generated for dynamodb', () => { + render(); + + // Command should be `tsh proxy db --tunnel` instead of `tsh connect db` + const expectedOutput = 'tsh proxy db --tunnel aurora --db-user='; + + expect(screen.getByText(expectedOutput)).toBeInTheDocument(); +}); + +test('correct tsh login command generated with local authType', () => { + render(); + const output = + 'tsh login --proxy=localhost:443 --auth=local --user=yassine im-a-cluster'; + + expect(screen.getByText(output)).toBeInTheDocument(); +}); + +test('correct tsh login command generated with sso authType', () => { + render(); + const output = 'tsh login --proxy=localhost:443 im-a-cluster'; + + expect(screen.getByText(output)).toBeInTheDocument(); +}); + +test('correct tsh login command generated with passwordless authType', () => { + render(); + const output = + 'tsh login --proxy=localhost:443 --auth=passwordless --user=yassine im-a-cluster'; + + expect(screen.getByText(output)).toBeInTheDocument(); +}); + +const props: Props = { + username: 'yassine', + dbName: 'aurora', + clusterId: 'im-a-cluster', + onClose: () => null, + authType: 'local', + dbProtocol: 'postgres', +}; diff --git a/web/packages/teleport/src/GitServers/ConnectDialog/ConnectDialog.tsx b/web/packages/teleport/src/GitServers/ConnectDialog/ConnectDialog.tsx new file mode 100644 index 0000000000000..7d3a5ad08c203 --- /dev/null +++ b/web/packages/teleport/src/GitServers/ConnectDialog/ConnectDialog.tsx @@ -0,0 +1,110 @@ +/** + * Teleport + * Copyright (C) 2023 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 React from 'react'; +import { Text, Box, ButtonSecondary, Link } from 'design'; +import Dialog, { + DialogHeader, + DialogTitle, + DialogContent, + DialogFooter, +} from 'design/Dialog'; + +import { AuthType } from 'teleport/services/user'; +import TextSelectCopy from 'teleport/components/TextSelectCopy'; +import { generateTshLoginCommand } from 'teleport/lib/util'; + +export default function ConnectDialog({ + username, + clusterId, + organization, + onClose, + authType, + accessRequestId, +}: Props) { + let repoURL = "https://github.com/" + organization; + let title = "Connect To '" + organization + "' on GitHub" + return ( + ({ + maxWidth: '600px', + width: '100%', + })} + disableEscapeKeyDown={false} + onClose={onClose} + open={true} + > + + {title} + + + + + Step 1 + + {' - Login to Teleport'} + + + + + Step 2 + + {' - Connect'} +
+ {'To clone a new repository, find the SSH url of the repository on '} + + github.com + + {' then'} + `} + /> + {'To configure an existing git repository, go to the repository then'} + +
+ + {`Once the repository is cloned or configured, use 'git' as normal.`} + +
+ + Close + +
+ ); +} + +export type Props = { + organization: string; + onClose: () => void; + username: string; + clusterId: string; + authType: AuthType; + accessRequestId?: string; +}; diff --git a/web/packages/teleport/src/GitServers/ConnectDialog/index.ts b/web/packages/teleport/src/GitServers/ConnectDialog/index.ts new file mode 100644 index 0000000000000..36057e0d81bec --- /dev/null +++ b/web/packages/teleport/src/GitServers/ConnectDialog/index.ts @@ -0,0 +1,20 @@ +/** + * Teleport + * Copyright (C) 2023 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 ConnectDialog from './ConnectDialog'; +export default ConnectDialog; diff --git a/web/packages/teleport/src/Integrations/Enroll/GitHub/ConfigureAccess.tsx b/web/packages/teleport/src/Integrations/Enroll/GitHub/ConfigureAccess.tsx new file mode 100644 index 0000000000000..78d237504e912 --- /dev/null +++ b/web/packages/teleport/src/Integrations/Enroll/GitHub/ConfigureAccess.tsx @@ -0,0 +1,134 @@ +/** + * Teleport + * Copyright (C) 2024 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 { Box, ButtonPrimary, ButtonSecondary, Text } from 'design'; +import React, { useEffect, useState } from 'react'; + +import Validation, { Validator } from 'shared/components/Validation'; +import { TextSelectCopyMulti } from 'shared/components/TextSelectCopy'; +import FieldInput from 'shared/components/FieldInput'; +import styled from 'styled-components'; +import useAttempt from 'shared/hooks/useAttemptNext'; + +import { Header } from 'teleport/Discover/Shared'; + +type Line = { + text: string; + comment?: string; +}; +export function ConfigureAccess({ + resourceService, + organizationName, + onNext, + }) { + // TODO set role + const [roleName, setRoleName] = useState('github-' + organizationName); + const [roleText, setRoleText] = useState(''); + const [lines, setLines] = useState([]); + const { attempt, run } = useAttempt(''); + + useEffect(() => { + const roleText = + `kind: role +metadata: + name: ` + roleName + ` +spec: + allow: + github_permissions: + - orgs: + - ` + organizationName + ` +version: v7 +`; + setRoleText(roleText); + setLines([{text:roleText}]) + }, [organizationName, roleName]); + + function handleOnCreate(validator: Validator) { + if (!validator.validate()) { + return; + } + + run(() => + resourceService + .createRole(roleText) + .then(() => { + onNext(); + }) + ); + } + + return ( + +
Create a GitHub Integration
+ + Teleport can issue short-lived SSH certificates for GitHub access. + + + + + Step 5 Configure access to the Git server + The Git server resource is successfully created. +
+ + To grant access to the Git server, create the following Teleport + role for GitHub organization "{organizationName}". + +
+ + {({ validator }) => ( + <> + setRoleName(e.target.value)} + /> + Role definition: + + Once created, assign the role to desired Teleport users. + + handleOnCreate(validator)} + disabled={ + attempt.status === 'processing' + } + > + Create Role + + onNext()} + > + Skip + + + + )} + +
+
+ ); +} + +const Container = styled(Box)` + max-width: 1000px; + background-color: ${p => p.theme.colors.spotBackground[0]}; + border-radius: ${p => `${p.theme.space[2]}px`}; + padding: ${p => p.theme.space[3]}px; +`; diff --git a/web/packages/teleport/src/Integrations/Enroll/GitHub/ConfigureGitHub.tsx b/web/packages/teleport/src/Integrations/Enroll/GitHub/ConfigureGitHub.tsx new file mode 100644 index 0000000000000..180f3c8a4cc00 --- /dev/null +++ b/web/packages/teleport/src/Integrations/Enroll/GitHub/ConfigureGitHub.tsx @@ -0,0 +1,77 @@ +/** + * Teleport + * Copyright (C) 2024 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 { Box, ButtonPrimary, Link, Text } from 'design'; +import { TextSelectCopy } from 'shared/components/TextSelectCopy'; +import React from 'react'; +import styled from 'styled-components'; + +import { Header } from 'teleport/Discover/Shared'; + +export function ConfigureGitHub({ + integration, + onNext, + }){ + return ( + +
Create a GitHub Integration
+ + Teleport can issue short-lived SSH certificates for GitHub access. + + + + Step 3 Configure SSH certificate authority on GitHub + + GitHub integration "{integration.name}" successfully added. Now we want add the SSH certificate authority to your GitHub organization. + +
+ + Go to your organization's {' '} + + Authentication security page + and click on "New CA": + + + +
+ + After the CA is added, it should have the following SHA256 fingerprint: + + + +
+
+ + onNext()} + > + Next + + +
+ ); +} +const Container = styled(Box)` + max-width: 1000px; + background-color: ${p => p.theme.colors.spotBackground[0]}; + border-radius: ${p => `${p.theme.space[2]}px`}; + padding: ${p => p.theme.space[3]}px; +`; + diff --git a/web/packages/teleport/src/Integrations/Enroll/GitHub/ConfigureOAuth.tsx b/web/packages/teleport/src/Integrations/Enroll/GitHub/ConfigureOAuth.tsx new file mode 100644 index 0000000000000..1a7e1bf19de52 --- /dev/null +++ b/web/packages/teleport/src/Integrations/Enroll/GitHub/ConfigureOAuth.tsx @@ -0,0 +1,152 @@ +/** + * + * Teleport + * Copyright (C) 2024 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 { Box, ButtonPrimary, ButtonSecondary, Flex, Link, Text } from 'design'; +import Validation, { Validator } from 'shared/components/Validation'; +import React, { useState } from 'react'; +import styled from 'styled-components'; +import FieldInput from 'shared/components/FieldInput'; +import { TextSelectCopy, TextSelectCopyMulti } from 'shared/components/TextSelectCopy'; + +import cfg from 'teleport/config'; +import { Header } from 'teleport/Discover/Shared'; + +export function ConfigureOAuth({ + cluster, + onCreatedSpec, + }){ + + const [orgName, setOrgName] = useState(''); + const [clientID, setClientID] = useState(''); + const [clientSecret, setClientSecret] = useState(''); + const homePageURL = "https://" + cluster.publicURL; + const callbackURL = "https://" + cluster.publicURL + "/v1/webapi/github/callback" + + function handleOnCreate(validator: Validator) { + if (!validator.validate()) { + return; + } + onCreatedSpec({ + organization: orgName, + connectorClientID: clientID, + connectorClientSecret: clientSecret, + connectorRedirectURL: callbackURL, + }); + } + + return ( + +
Create a GitHub Integration
+ + + Teleport can issue short-lived SSH certificates for GitHub access. + + + {({ validator }) => ( + <> + + Step 1 Configure an OAuth App + + The first setup step is to configure a GitHub OAuth app, which + Teleport will use to retrieve login information from your users' + browsers. + + +
+ + setOrgName(e.target.value)} + /> + + + + Now go to your organization's{' '} + + OAuth apps page + {' '} + under developer settings and click on "New OAuth app". Fill in + the app with the following information: + + + +
+ + Click on "Register Application" and then "Generate a new client + secret". Copy the ClientID and Client Secret below: + + + setClientID(e.target.value)} + /> + setClientSecret(e.target.value)} + /> + + + handleOnCreate(validator)} + disabled={!orgName || !clientID || !clientSecret} + > + Next + + +
+ + )} +
+
+ ); +} + +const Container = styled(Box)` + max-width: 1000px; + background-color: ${p => p.theme.colors.spotBackground[0]}; + border-radius: ${p => `${p.theme.space[2]}px`}; + padding: ${p => p.theme.space[3]}px; +`; diff --git a/web/packages/teleport/src/Integrations/Enroll/GitHub/CreateGitServer.tsx b/web/packages/teleport/src/Integrations/Enroll/GitHub/CreateGitServer.tsx new file mode 100644 index 0000000000000..443c2a6f417c8 --- /dev/null +++ b/web/packages/teleport/src/Integrations/Enroll/GitHub/CreateGitServer.tsx @@ -0,0 +1,115 @@ +/** + * Teleport + * Copyright (C) 2024 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 { Box, ButtonPrimary, Flex, Text } from 'design'; +import React from 'react'; +import useAttempt from 'shared/hooks/useAttemptNext'; +import Validation, { Validator } from 'shared/components/Validation'; +import * as Icons from 'design/Icon'; + +import { Header } from 'teleport/Discover/Shared'; +import { gitServerService } from 'teleport/services/gitservers'; +import styled from 'styled-components'; +import { TextSelectCopyMulti } from 'shared/components/TextSelectCopy'; + +export function CreateGitServer({ + organizationName, + integrationName, + onCreatedGitServer, + }){ + + const gitServerText = + `kind: git_server +sub_kind: github +version: v2 +spec: + github: + integration: ` + integrationName + ` + organization: ` + organizationName; + const { attempt, run } = useAttempt(''); + + function handleOnCreate(validator: Validator) { + if (!validator.validate()) { + return; + } + + run(() => + gitServerService + .createGitServer({ + subKind: "github", + github: { + organization: organizationName, + integration: integrationName, + }, + }) + .then(res =>{ + onCreatedGitServer(res); + }) + ); + } + + return ( + +
Create a GitHub Integration
+ + Teleport can issue short-lived SSH certificates for GitHub access. + + + + + Step 4 Create a Git proxy server + + Now let's create a Git server resource for your Teleport users to proxy their git commands. + + + + + {({ validator }) => ( + <> + {attempt.status === 'failed' && ( + + + Error: {attempt.statusText} + + )} + + handleOnCreate(validator)} + disabled={attempt.status === 'success'} + > + Create Git Server + + + + )} + + +
+ ); +} + +const Container = styled(Box)` + max-width: 1000px; + background-color: ${p => p.theme.colors.spotBackground[0]}; + border-radius: ${p => `${p.theme.space[2]}px`}; + padding: ${p => p.theme.space[3]}px; +`; + diff --git a/web/packages/teleport/src/Integrations/Enroll/GitHub/CreateIntegration.tsx b/web/packages/teleport/src/Integrations/Enroll/GitHub/CreateIntegration.tsx new file mode 100644 index 0000000000000..fcf918b068df1 --- /dev/null +++ b/web/packages/teleport/src/Integrations/Enroll/GitHub/CreateIntegration.tsx @@ -0,0 +1,119 @@ +/** + * Teleport + * Copyright (C) 2024 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 { Box, ButtonPrimary, ButtonSecondary, Flex, Text } from 'design'; +import Validation, { Validator } from 'shared/components/Validation'; +import FieldInput from 'shared/components/FieldInput'; +import useAttempt from 'shared/hooks/useAttemptNext'; +import * as Icons from 'design/Icon'; +import React, { useEffect, useState } from 'react'; +import styled from 'styled-components'; + +import { + IntegrationKind, + integrationService, +} from 'teleport/services/integrations'; +import { Header } from 'teleport/Discover/Shared'; + +export function CreateIntegration({ + spec, + onCreatedIntegration, + }){ + const [integrationName, setIntegrationName] = useState(''); + const [isIntegrationNameEdited, setIsIntegrationNameEdited] = useState(false); + const { attempt, run } = useAttempt(''); + + useEffect(() => { + if (!isIntegrationNameEdited) { + setIntegrationName("github-" + spec.organization); + } + }, [spec.organization, isIntegrationNameEdited]); + + function handleIntegrationNameChange(value: string) { + setIntegrationName(value); + setIsIntegrationNameEdited(true); + } + + function handleOnCreate(validator: Validator) { + if (!validator.validate()) { + return; + } + + run(() => + integrationService + .createIntegration({ + name: integrationName, + subKind: IntegrationKind.GitHub, + github: spec, + }) + .then(res => { + onCreatedIntegration(res); + }) + ); + } + + return ( + +
Create a GitHub Integration
+ + + Teleport can issue short-lived SSH certificates for GitHub access. + + + + {({ validator }) => ( + <> + + Step 2 Create the GitHub integration + + handleIntegrationNameChange(e.target.value)} + /> + + + {attempt.status === 'failed' && ( + + + Error: {attempt.statusText} + + )} + + handleOnCreate(validator)} + disabled={ + attempt.status === 'processing' + } + > + Create Integration + + + + )} + +
+ ); +} + +const Container = styled(Box)` + max-width: 1000px; + background-color: ${p => p.theme.colors.spotBackground[0]}; + border-radius: ${p => `${p.theme.space[2]}px`}; + padding: ${p => p.theme.space[3]}px; +`; diff --git a/web/packages/teleport/src/Integrations/Enroll/GitHub/GitHub.tsx b/web/packages/teleport/src/Integrations/Enroll/GitHub/GitHub.tsx new file mode 100644 index 0000000000000..b596d3d6ffe6b --- /dev/null +++ b/web/packages/teleport/src/Integrations/Enroll/GitHub/GitHub.tsx @@ -0,0 +1,100 @@ +/** + * Teleport + * Copyright (C) 2024 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 React, { useEffect, useState } from 'react'; +import { Link as InternalRouteLink } from 'react-router-dom'; +import styled from 'styled-components'; +import { Box, ButtonSecondary, Text, Link, Flex, ButtonPrimary } from 'design'; +import FieldInput from 'shared/components/FieldInput'; +import Validation, { Validator } from 'shared/components/Validation'; +import { TextSelectCopy } from 'shared/components/TextSelectCopy'; +import { Header } from 'teleport/Discover/Shared'; + +import { Integration, IntegrationSpecGitHub } from 'teleport/services/integrations'; +import cfg from 'teleport/config'; +import useGitHub from 'teleport/Integrations/Enroll/GitHub/useGitHub'; +import { ConfigureOAuth } from 'teleport/Integrations/Enroll/GitHub/ConfigureOAuth'; +import { Resource } from 'teleport/services/resources'; +import { CreateIntegration } from 'teleport/Integrations/Enroll/GitHub/CreateIntegration'; +import { ConfigureGitHub } from 'teleport/Integrations/Enroll/GitHub/ConfigureGitHub'; +import { GitServer } from 'teleport/services/gitservers'; +import { CreateGitServer } from 'teleport/Integrations/Enroll/GitHub/CreateGitServer'; +import { ConfigureAccess } from 'teleport/Integrations/Enroll/GitHub/ConfigureAccess'; +import useTeleport from 'teleport/useTeleport'; +import { Usage } from 'teleport/Integrations/Enroll/GitHub/Usage'; + +export function GitHub() { + const ctx = useTeleport(); + const cluster = ctx.storeUser.state.cluster; + + // State in sequence. + const [spec, setSpec] = useState(); + const [createdIntegration, setCreatedIntegration] = useState(); + const [isCAExported, setCAExported] = useState(false); + const [gitServer, setGitServer] = useState(); + const [isAccessSet, setAccessSet] = useState(false); + + if (!spec) { + return ( + + ) + } + if (!createdIntegration) { + return ( + + ) + } + if (!isCAExported) { + return ( + setCAExported(true)} + /> + ) + } + if (!gitServer) { + return( + + ) + } + if (!isAccessSet) { + return( + setAccessSet(true)} + /> + ) + } + + return ( + + ) +} \ No newline at end of file diff --git a/web/packages/teleport/src/Integrations/Enroll/GitHub/Usage.tsx b/web/packages/teleport/src/Integrations/Enroll/GitHub/Usage.tsx new file mode 100644 index 0000000000000..92716610f6485 --- /dev/null +++ b/web/packages/teleport/src/Integrations/Enroll/GitHub/Usage.tsx @@ -0,0 +1,89 @@ +/** + * Teleport + * Copyright (C) 2024 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 { Box, ButtonPrimary, ButtonSecondary, Flex, Text } from 'design'; +import { Link } from 'react-router-dom'; +import { TextSelectCopy } from 'shared/components/TextSelectCopy'; +import React from 'react'; +import styled from 'styled-components'; + +import cfg from 'teleport/config'; +import { Header } from 'teleport/Discover/Shared'; + +export function Usage({ + integration, + + }){ + return( + +
Create a GitHub Integration
+ + + Teleport can issue short-lived SSH certificates for GitHub access. + + + + + + + You are done! + +
+ + Once your Teleport user is granted permission to the Git server, login using "tsh". + + +
+ To list the Git servers: + + {'To clone a new repository, find the SSH url of the repository on '} + + github.com + + {' then'} + `} + /> + {'To configure an existing git repository, go to the repository then:'} + + + Once the repository is cloned or configured, use 'git' as normal. + +
+ + Go to Integration List + +
+
+
+
+ ) +} + +const Container = styled(Box)` + max-width: 1000px; + background-color: ${p => p.theme.colors.spotBackground[0]}; + border-radius: ${p => `${p.theme.space[2]}px`}; + padding: ${p => p.theme.space[3]}px; +`; diff --git a/web/packages/teleport/src/Integrations/Enroll/GitHub/index.ts b/web/packages/teleport/src/Integrations/Enroll/GitHub/index.ts new file mode 100644 index 0000000000000..f362b34110036 --- /dev/null +++ b/web/packages/teleport/src/Integrations/Enroll/GitHub/index.ts @@ -0,0 +1,19 @@ +/** + * Teleport + * Copyright (C) 2024 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 . + */ + +export { GitHub } from './GitHub'; diff --git a/web/packages/teleport/src/Integrations/Enroll/GitHub/useGitHub.tsx b/web/packages/teleport/src/Integrations/Enroll/GitHub/useGitHub.tsx new file mode 100644 index 0000000000000..93d876d9af6c3 --- /dev/null +++ b/web/packages/teleport/src/Integrations/Enroll/GitHub/useGitHub.tsx @@ -0,0 +1,46 @@ +/** + * Teleport + * Copyright (C) 2024 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, useState } from 'react'; + +import useAttempt from 'shared/hooks/useAttemptNext'; + +import { Resource } from 'teleport/services/resources'; +import useTeleport from 'teleport/useTeleport'; + +export default function useGitHub() { + const ctx = useTeleport(); + const [connectors, setConnectors] = useState[]>([]); + const { attempt, run } = useAttempt('processing'); + + function fetchGithubConnectors(){ + return ctx.resourceService.fetchGithubConnectors().then(response => { + setConnectors(response); + }); + } + + useEffect(() => { + run(() => fetchGithubConnectors()); + }, []); + + return { + connectors, + attempt, + }; +} + +export type State = ReturnType; diff --git a/web/packages/teleport/src/Integrations/Enroll/IntegrationRoute.tsx b/web/packages/teleport/src/Integrations/Enroll/IntegrationRoute.tsx index 347e226794abe..b9092effbf967 100644 --- a/web/packages/teleport/src/Integrations/Enroll/IntegrationRoute.tsx +++ b/web/packages/teleport/src/Integrations/Enroll/IntegrationRoute.tsx @@ -23,6 +23,7 @@ import { Route } from 'teleport/components/Router'; import { IntegrationKind } from 'teleport/services/integrations'; import { AwsOidc } from './AwsOidc'; +import { GitHub } from './GitHub'; export function getRoutesToEnrollIntegrations() { return [ @@ -32,5 +33,11 @@ export function getRoutesToEnrollIntegrations() { path={cfg.getIntegrationEnrollRoute(IntegrationKind.AwsOidc)} component={AwsOidc} />, + , ]; } diff --git a/web/packages/teleport/src/Integrations/Enroll/IntegrationTiles.tsx b/web/packages/teleport/src/Integrations/Enroll/IntegrationTiles.tsx index 1cb76ff971749..ecf4d75b55b6e 100644 --- a/web/packages/teleport/src/Integrations/Enroll/IntegrationTiles.tsx +++ b/web/packages/teleport/src/Integrations/Enroll/IntegrationTiles.tsx @@ -20,6 +20,7 @@ import React from 'react'; import { Link } from 'react-router-dom'; import { Text, Box } from 'design'; import { AWSIcon } from 'design/SVGIcon'; +import { GitHubIcon } from 'design/SVGIcon'; import cfg from 'teleport/config'; import { @@ -74,6 +75,34 @@ export function IntegrationTiles({ /> )} + + + + + + GitHub Organization + + {!hasIntegrationAccess && ( + + You don’t have sufficient permissions to create an integration. + Reach out to your Teleport administrator to request additional + permissions. + + } + /> + )} + {!isOnpremEnterprise && ( { } else { // Default is integration. switch (item.kind) { + case IntegrationKind.GitHub: + icon = ; + break case IntegrationKind.AwsOidc: case IntegrationKind.ExternalAuditStorage: formattedText = item.name; diff --git a/web/packages/teleport/src/UnifiedResources/ResourceActionButton.tsx b/web/packages/teleport/src/UnifiedResources/ResourceActionButton.tsx index c2c81ed31c47c..471080634e287 100644 --- a/web/packages/teleport/src/UnifiedResources/ResourceActionButton.tsx +++ b/web/packages/teleport/src/UnifiedResources/ResourceActionButton.tsx @@ -28,7 +28,9 @@ import { Database } from 'teleport/services/databases'; import { openNewTab } from 'teleport/lib/util'; import { Kube } from 'teleport/services/kube'; import { Desktop } from 'teleport/services/desktops'; +import { GitServer } from 'teleport/services/gitservers'; import DbConnectDialog from 'teleport/Databases/ConnectDialog'; +import GitServerConnectDialog from 'teleport/GitServers/ConnectDialog'; import KubeConnectDialog from 'teleport/Kubes/ConnectDialog'; import useStickyClusterId from 'teleport/useStickyClusterId'; import { Node, sortNodeLogins } from 'teleport/services/nodes'; @@ -55,6 +57,8 @@ export const ResourceActionButton = ({ resource }: Props) => { return ; case 'windows_desktop': return ; + case 'git_server': + return ; default: return null; } @@ -255,6 +259,41 @@ const AppLaunch = ({ app }: AppLaunchProps) => { ); }; +function GitServerConnect({ gitserver }: { gitserver: GitServer }) { + const ctx = useTeleport(); + const { clusterId } = useStickyClusterId(); + const [open, setOpen] = useState(false); + const organization = gitserver.github ? gitserver.github.organization : undefined; + const username = ctx.storeUser.state.username; + const authType = ctx.storeUser.state.authType; + const accessRequestId = ctx.storeUser.getAccessRequestId(); + return ( + <> + { + setOpen(true); + }} + > + Connect + + {open && ( + setOpen(false)} + authType={authType} + accessRequestId={accessRequestId} + /> + )} + + ); +} + + function DatabaseConnect({ database }: { database: Database }) { const { name, protocol } = database; const ctx = useTeleport(); diff --git a/web/packages/teleport/src/UnifiedResources/UnifiedResources.tsx b/web/packages/teleport/src/UnifiedResources/UnifiedResources.tsx index 955ceec18bcf9..63f9658f610e7 100644 --- a/web/packages/teleport/src/UnifiedResources/UnifiedResources.tsx +++ b/web/packages/teleport/src/UnifiedResources/UnifiedResources.tsx @@ -96,6 +96,10 @@ const getAvailableKindsWithAccess = (flags: FeatureFlags): FilterKind[] => { kind: 'windows_desktop', disabled: !flags.desktops, }, + { + kind: 'git_server', + disabled: !flags.nodes, + }, ]; }; diff --git a/web/packages/teleport/src/Users/UserAddEdit/TraitsEditor.tsx b/web/packages/teleport/src/Users/UserAddEdit/TraitsEditor.tsx index 50cba2e758791..ac6e86759887a 100644 --- a/web/packages/teleport/src/Users/UserAddEdit/TraitsEditor.tsx +++ b/web/packages/teleport/src/Users/UserAddEdit/TraitsEditor.tsx @@ -35,6 +35,7 @@ const traitsPreset = [ 'db_roles', 'db_users', 'gcp_service_accounts', + 'github_username', 'host_user_gid', 'host_user_uid', 'kubernetes_groups', diff --git a/web/packages/teleport/src/config.ts b/web/packages/teleport/src/config.ts index 61800d5c97ac2..1a200693a747d 100644 --- a/web/packages/teleport/src/config.ts +++ b/web/packages/teleport/src/config.ts @@ -222,7 +222,9 @@ const cfg = { '/v1/webapi/sites/:clusterId/resources?searchAsRoles=:searchAsRoles?&limit=:limit?&startKey=:startKey?&kinds=:kinds?&query=:query?&search=:search?&sort=:sort?&pinnedOnly=:pinnedOnly?&includedResourceMode=:includedResourceMode?', nodesPath: '/v1/webapi/sites/:clusterId/nodes?searchAsRoles=:searchAsRoles?&limit=:limit?&startKey=:startKey?&query=:query?&search=:search?&sort=:sort?', - nodesPathNoParams: '/v1/webapi/sites/:clusterId/nodes', + nodesPathNoParams: '', + + gitServerPath: '/v1/webapi/sites/:clusterId/gitserver', databaseServicesPath: `/v1/webapi/sites/:clusterId/databaseservices`, databaseIamPolicyPath: `/v1/webapi/sites/:clusterId/databases/:database/iam/policy`, @@ -733,6 +735,10 @@ const cfg = { return generatePath(cfg.api.nodesPathNoParams, { clusterId }); }, + getGitServerUrl(clusterId: string) { + return generatePath(cfg.api.gitServerPath, { clusterId }); + }, + getDatabaseServicesUrl(clusterId: string) { return generatePath(cfg.api.databaseServicesPath, { clusterId, diff --git a/web/packages/teleport/src/services/agents/types.ts b/web/packages/teleport/src/services/agents/types.ts index 767f43b9af79d..4b61edeb9f5d8 100644 --- a/web/packages/teleport/src/services/agents/types.ts +++ b/web/packages/teleport/src/services/agents/types.ts @@ -23,6 +23,7 @@ import { Database } from 'teleport/services/databases'; import { Node } from 'teleport/services/nodes'; import { Kube } from 'teleport/services/kube'; import { Desktop } from 'teleport/services/desktops'; +import { GitServer } from 'teleport/services/gitservers'; import { UserGroup } from '../userGroups'; @@ -35,6 +36,7 @@ export type UnifiedResource = | Node | Kube | Desktop + | GitServer | UserGroup; export type UnifiedResourceKind = UnifiedResource['kind']; diff --git a/web/packages/teleport/src/services/audit/makeEvent.ts b/web/packages/teleport/src/services/audit/makeEvent.ts index 2ec8a7bdf2a62..d22568c155dff 100644 --- a/web/packages/teleport/src/services/audit/makeEvent.ts +++ b/web/packages/teleport/src/services/audit/makeEvent.ts @@ -1908,6 +1908,39 @@ export const formatters: Formatters = { return `User [${user}] deleted an integration [${name}]`; }, }, + [eventCodes.GIT_COMMAND]: { + type: 'git.command', + desc: 'Git Command', + format: ({ user, service, path, actions }) => { + if (service === "git-upload-pack") { + return `User [${user}] has fetched from [${path}]`; + }; + if (service === "git-receive-pack") { + if (actions && actions.length == 1) { + switch(actions[0].action) { + case "delete": + return `User [${user}] has deleted [${actions[0].reference}] from [${path}]`; + case "create": + return `User [${user}] has created [${actions[0].reference}] on [${path}]`; + case "update": + return `User [${user}] has updated [${actions[0].reference}] to [${actions[0].new.substring(0,7)}] on [${path}]`; + }; + }; + return `User [${user}] has attempted a push to [${path}]`; + } + if (service && path) { + return `User [${user}] has executed a Git Command [${service}] at [${path}]`; + } + return `User [${user}] has executed a GitHub Command`; + }, + }, + [eventCodes.GIT_COMMAND_FAILURE]: { + type: 'git.command', + desc: 'Git Command Failed', + format: ({ user, exitError, org }) => { + return `User [${user}] git command on [${org}] failed [${exitError}]}]`; + }, + }, [eventCodes.STATIC_HOST_USER_CREATE]: { type: 'static_host_user.create', desc: 'Static Host User Created', diff --git a/web/packages/teleport/src/services/audit/types.ts b/web/packages/teleport/src/services/audit/types.ts index 9264e13a72a31..b38e9493779c1 100644 --- a/web/packages/teleport/src/services/audit/types.ts +++ b/web/packages/teleport/src/services/audit/types.ts @@ -311,6 +311,8 @@ export const eventCodes = { STATIC_HOST_USER_CREATE: 'SHU001I', STATIC_HOST_USER_UPDATE: 'SHU002I', STATIC_HOST_USER_DELETE: 'SHU003I', + GIT_COMMAND: 'T3013I', + GIT_COMMAND_FAILURE: 'T3013E', } as const; /** @@ -369,6 +371,12 @@ export type RawEvents = { typeof eventCodes.EXEC_FAILURE, { exitError: string } >; + [eventCodes.GIT_COMMAND]: RawEvent< + typeof eventCodes.GIT_COMMAND + >; + [eventCodes.GIT_COMMAND_FAILURE]: RawEvent< + typeof eventCodes.GIT_COMMAND_FAILURE + >; [eventCodes.BILLING_CARD_CREATE]: RawEvent< typeof eventCodes.BILLING_CARD_CREATE >; diff --git a/web/packages/teleport/src/services/gitservers/gitservers.ts b/web/packages/teleport/src/services/gitservers/gitservers.ts new file mode 100644 index 0000000000000..d4ffbfb94f758 --- /dev/null +++ b/web/packages/teleport/src/services/gitservers/gitservers.ts @@ -0,0 +1,31 @@ +/** + * Teleport + * Copyright (C) 2023 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 api from 'teleport/services/api'; +import cfg from 'teleport/config'; + +import { GitServer, CreateGitServerRequest } from './types'; +import makeGitServer from './makeGitServer'; + +export const gitServerService = { + createGitServer(req: CreateGitServerRequest ): Promise { + return api + .post(cfg.getGitServerUrl(cfg.proxyCluster), req) + .then(makeGitServer) + }, +} \ No newline at end of file diff --git a/web/packages/teleport/src/services/gitservers/index.ts b/web/packages/teleport/src/services/gitservers/index.ts new file mode 100644 index 0000000000000..e9a7987fd8306 --- /dev/null +++ b/web/packages/teleport/src/services/gitservers/index.ts @@ -0,0 +1,20 @@ +/** + * Teleport + * Copyright (C) 2023 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 . + */ + +export * from './types'; +export * from './gitservers'; \ No newline at end of file diff --git a/web/packages/teleport/src/services/gitservers/makeGitServer.ts b/web/packages/teleport/src/services/gitservers/makeGitServer.ts new file mode 100644 index 0000000000000..9e044bf60eb57 --- /dev/null +++ b/web/packages/teleport/src/services/gitservers/makeGitServer.ts @@ -0,0 +1,55 @@ +/** + * Teleport + * Copyright (C) 2023 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 { GitServer, GitHubMetadata } from './types'; + +export default function makeGitServer(json: any): GitServer { + json = json ?? {}; + const { + id, + siteId, + subKind, + hostname, + tags, + sshLogins, + github, + requiresRequest, + } = json; + + return { + kind: 'git_server', + id, + subKind, + clusterId: siteId, + hostname, + labels: tags ?? [], + requiresRequest, + sshLogins: sshLogins ?? [], + github: github ? makeGitHubMetadata(github) : undefined, + }; +} + +function makeGitHubMetadata(json: any): GitHubMetadata { + json = json ?? {}; + const { integration, organization } = json; + + return { + integration, + organization, + }; +} diff --git a/web/packages/teleport/src/services/gitservers/types.ts b/web/packages/teleport/src/services/gitservers/types.ts new file mode 100644 index 0000000000000..b287f89bcbd30 --- /dev/null +++ b/web/packages/teleport/src/services/gitservers/types.ts @@ -0,0 +1,43 @@ +/** + * Teleport + * Copyright (C) 2023 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 { GitServerSubKind } from 'shared/services'; + +import { ResourceLabel } from 'teleport/services/agents'; + +export interface GitServer { + kind: 'git_server'; + id: string; + clusterId: string; + hostname: string; + labels: ResourceLabel[]; + subKind: GitServerSubKind; + sshLogins: string[]; + github?: GitHubMetadata; + requiresRequest?: boolean; +} + +export type GitHubMetadata = { + integration: string; + organization: string; +}; + +export type CreateGitServerRequest = { + subKind: string; + github: GitHubMetadata; +} \ No newline at end of file diff --git a/web/packages/teleport/src/services/integrations/integrations.ts b/web/packages/teleport/src/services/integrations/integrations.ts index f45b436394c43..b63cc6eed61ed 100644 --- a/web/packages/teleport/src/services/integrations/integrations.ts +++ b/web/packages/teleport/src/services/integrations/integrations.ts @@ -409,7 +409,7 @@ export function makeIntegrations(json: any): Integration[] { function makeIntegration(json: any): Integration { json = json || {}; - const { name, subKind, awsoidc } = json; + const { name, subKind, awsoidc, github } = json; return { resourceType: 'integration', name, @@ -418,7 +418,12 @@ function makeIntegration(json: any): Integration { roleArn: awsoidc?.roleArn, issuerS3Bucket: awsoidc?.issuerS3Bucket, issuerS3Prefix: awsoidc?.issuerS3Prefix, + organization: github?.organization, + publicKeys: github?.publicKeys, + fingerprints: github?.fingerprints, + connectorID: github?.connectorID, }, + details: github? "GitHub Organiztion \""+ github.organization +"\"": undefined, // The integration resource does not have a "status" field, but is // a required field for the table that lists both plugin and // integration resources together. As discussed, the only diff --git a/web/packages/teleport/src/services/integrations/types.ts b/web/packages/teleport/src/services/integrations/types.ts index d6c273cd4da36..838ee1ff0ab4b 100644 --- a/web/packages/teleport/src/services/integrations/types.ts +++ b/web/packages/teleport/src/services/integrations/types.ts @@ -61,12 +61,25 @@ export type Integration< export enum IntegrationKind { AwsOidc = 'aws-oidc', AzureOidc = 'azure-oidc', + GitHub = 'github', ExternalAuditStorage = 'external-audit-storage', } export type IntegrationSpecAwsOidc = { - roleArn: string; - issuerS3Prefix?: string; + connectorID?: string; // TODO move to GitHub + fingerprints?: [string]; issuerS3Bucket?: string; + issuerS3Prefix?: string; + organization?: string; // TODO move to GitHub + publicKeys?: [string]; + roleArn?: string; +}; +export type IntegrationSpecGitHub = { + connectorClientID: string; + connectorClientSecret: string; + connectorRedirectURL: string; + organization: string; + publicKeys?: [string]; + fingerprints?: [string]; }; export enum IntegrationStatusCode { @@ -223,6 +236,7 @@ export type IntegrationCreateRequest = { name: string; subKind: IntegrationKind; awsoidc?: IntegrationSpecAwsOidc; + github?: IntegrationSpecGitHub; }; export type IntegrationListResponse = { diff --git a/web/packages/teleport/src/services/resources/makeUnifiedResource.ts b/web/packages/teleport/src/services/resources/makeUnifiedResource.ts index d0343d1f575fb..4b42f3d1c9714 100644 --- a/web/packages/teleport/src/services/resources/makeUnifiedResource.ts +++ b/web/packages/teleport/src/services/resources/makeUnifiedResource.ts @@ -22,6 +22,7 @@ import { makeDatabase } from '../databases/makeDatabase'; import { makeDesktop } from '../desktops/makeDesktop'; import makeKube from '../kube/makeKube'; import makeNode from '../nodes/makeNode'; +import makeGitServer from '../gitservers/makeGitServer'; export function makeUnifiedResource(json: any): UnifiedResource { json = json || {}; @@ -37,6 +38,8 @@ export function makeUnifiedResource(json: any): UnifiedResource { return makeNode(json); case 'windows_desktop': return makeDesktop(json); + case 'git_server': + return makeGitServer(json); default: throw new Error(`Unknown unified resource kind: "${json.kind}"`); }