From 8f11574f3d4f79cbe08050667710f935530cb7d7 Mon Sep 17 00:00:00 2001 From: Filipe Xavier Date: Wed, 6 Nov 2024 08:48:31 -0300 Subject: [PATCH 1/6] update proto files to add new method UpdatePodSandboxResources --- .../cri-api/pkg/apis/runtime/v1/api.pb.go | 1842 +++++++++-------- .../cri-api/pkg/apis/runtime/v1/api.proto | 31 +- 2 files changed, 1041 insertions(+), 832 deletions(-) diff --git a/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go b/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go index 80e9cf0e115..34d20d74dd9 100644 --- a/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go +++ b/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go @@ -4705,11 +4705,9 @@ type WindowsContainerResources struct { // Memory limit in bytes. Default: 0 (not specified). MemoryLimitInBytes int64 `protobuf:"varint,4,opt,name=memory_limit_in_bytes,json=memoryLimitInBytes,proto3" json:"memory_limit_in_bytes,omitempty"` // Specifies the size of the rootfs / scratch space in bytes to be configured for this container. Default: 0 (not specified). - RootfsSizeInBytes int64 `protobuf:"varint,5,opt,name=rootfs_size_in_bytes,json=rootfsSizeInBytes,proto3" json:"rootfs_size_in_bytes,omitempty"` - // Optionally specifies the set of CPUs to affinitize for this container. - AffinityCpus []*WindowsCpuGroupAffinity `protobuf:"bytes,6,rep,name=affinity_cpus,json=affinityCpus,proto3" json:"affinity_cpus,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_sizecache int32 `json:"-"` + RootfsSizeInBytes int64 `protobuf:"varint,5,opt,name=rootfs_size_in_bytes,json=rootfsSizeInBytes,proto3" json:"rootfs_size_in_bytes,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *WindowsContainerResources) Reset() { *m = WindowsContainerResources{} } @@ -4779,72 +4777,6 @@ func (m *WindowsContainerResources) GetRootfsSizeInBytes() int64 { return 0 } -func (m *WindowsContainerResources) GetAffinityCpus() []*WindowsCpuGroupAffinity { - if m != nil { - return m.AffinityCpus - } - return nil -} - -// WindowsCpuGroupAffinity specifies the CPU mask and group to affinitize. -// This is similar to the following _GROUP_AFFINITY structure: -// https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/miniport/ns-miniport-_group_affinity -type WindowsCpuGroupAffinity struct { - // CPU mask relative to this CPU group. - CpuMask uint64 `protobuf:"varint,1,opt,name=cpu_mask,json=cpuMask,proto3" json:"cpu_mask,omitempty"` - // Processor group the mask refers to, as returned by - // GetLogicalProcessorInformationEx. - CpuGroup uint32 `protobuf:"varint,2,opt,name=cpu_group,json=cpuGroup,proto3" json:"cpu_group,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *WindowsCpuGroupAffinity) Reset() { *m = WindowsCpuGroupAffinity{} } -func (*WindowsCpuGroupAffinity) ProtoMessage() {} -func (*WindowsCpuGroupAffinity) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{62} -} -func (m *WindowsCpuGroupAffinity) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *WindowsCpuGroupAffinity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_WindowsCpuGroupAffinity.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 *WindowsCpuGroupAffinity) XXX_Merge(src proto.Message) { - xxx_messageInfo_WindowsCpuGroupAffinity.Merge(m, src) -} -func (m *WindowsCpuGroupAffinity) XXX_Size() int { - return m.Size() -} -func (m *WindowsCpuGroupAffinity) XXX_DiscardUnknown() { - xxx_messageInfo_WindowsCpuGroupAffinity.DiscardUnknown(m) -} - -var xxx_messageInfo_WindowsCpuGroupAffinity proto.InternalMessageInfo - -func (m *WindowsCpuGroupAffinity) GetCpuMask() uint64 { - if m != nil { - return m.CpuMask - } - return 0 -} - -func (m *WindowsCpuGroupAffinity) GetCpuGroup() uint32 { - if m != nil { - return m.CpuGroup - } - return 0 -} - // ContainerMetadata holds all necessary information for building the container // name. The container runtime is encouraged to expose the metadata in its user // interface for better user experience. E.g., runtime can construct a unique @@ -4862,7 +4794,7 @@ type ContainerMetadata struct { func (m *ContainerMetadata) Reset() { *m = ContainerMetadata{} } func (*ContainerMetadata) ProtoMessage() {} func (*ContainerMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{63} + return fileDescriptor_00212fb1f9d3bf1c, []int{62} } func (m *ContainerMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4923,7 +4855,7 @@ type Device struct { func (m *Device) Reset() { *m = Device{} } func (*Device) ProtoMessage() {} func (*Device) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{64} + return fileDescriptor_00212fb1f9d3bf1c, []int{63} } func (m *Device) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4987,7 +4919,7 @@ type CDIDevice struct { func (m *CDIDevice) Reset() { *m = CDIDevice{} } func (*CDIDevice) ProtoMessage() {} func (*CDIDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{65} + return fileDescriptor_00212fb1f9d3bf1c, []int{64} } func (m *CDIDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5089,7 +5021,7 @@ type ContainerConfig struct { func (m *ContainerConfig) Reset() { *m = ContainerConfig{} } func (*ContainerConfig) ProtoMessage() {} func (*ContainerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{66} + return fileDescriptor_00212fb1f9d3bf1c, []int{65} } func (m *ContainerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5254,7 +5186,7 @@ type CreateContainerRequest struct { func (m *CreateContainerRequest) Reset() { *m = CreateContainerRequest{} } func (*CreateContainerRequest) ProtoMessage() {} func (*CreateContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{67} + return fileDescriptor_00212fb1f9d3bf1c, []int{66} } func (m *CreateContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5314,7 +5246,7 @@ type CreateContainerResponse struct { func (m *CreateContainerResponse) Reset() { *m = CreateContainerResponse{} } func (*CreateContainerResponse) ProtoMessage() {} func (*CreateContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{68} + return fileDescriptor_00212fb1f9d3bf1c, []int{67} } func (m *CreateContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5360,7 +5292,7 @@ type StartContainerRequest struct { func (m *StartContainerRequest) Reset() { *m = StartContainerRequest{} } func (*StartContainerRequest) ProtoMessage() {} func (*StartContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{69} + return fileDescriptor_00212fb1f9d3bf1c, []int{68} } func (m *StartContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5404,7 +5336,7 @@ type StartContainerResponse struct { func (m *StartContainerResponse) Reset() { *m = StartContainerResponse{} } func (*StartContainerResponse) ProtoMessage() {} func (*StartContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{70} + return fileDescriptor_00212fb1f9d3bf1c, []int{69} } func (m *StartContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5446,7 +5378,7 @@ type StopContainerRequest struct { func (m *StopContainerRequest) Reset() { *m = StopContainerRequest{} } func (*StopContainerRequest) ProtoMessage() {} func (*StopContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{71} + return fileDescriptor_00212fb1f9d3bf1c, []int{70} } func (m *StopContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5497,7 +5429,7 @@ type StopContainerResponse struct { func (m *StopContainerResponse) Reset() { *m = StopContainerResponse{} } func (*StopContainerResponse) ProtoMessage() {} func (*StopContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{72} + return fileDescriptor_00212fb1f9d3bf1c, []int{71} } func (m *StopContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5536,7 +5468,7 @@ type RemoveContainerRequest struct { func (m *RemoveContainerRequest) Reset() { *m = RemoveContainerRequest{} } func (*RemoveContainerRequest) ProtoMessage() {} func (*RemoveContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{73} + return fileDescriptor_00212fb1f9d3bf1c, []int{72} } func (m *RemoveContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5580,7 +5512,7 @@ type RemoveContainerResponse struct { func (m *RemoveContainerResponse) Reset() { *m = RemoveContainerResponse{} } func (*RemoveContainerResponse) ProtoMessage() {} func (*RemoveContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{74} + return fileDescriptor_00212fb1f9d3bf1c, []int{73} } func (m *RemoveContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5620,7 +5552,7 @@ type ContainerStateValue struct { func (m *ContainerStateValue) Reset() { *m = ContainerStateValue{} } func (*ContainerStateValue) ProtoMessage() {} func (*ContainerStateValue) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{75} + return fileDescriptor_00212fb1f9d3bf1c, []int{74} } func (m *ContainerStateValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5676,7 +5608,7 @@ type ContainerFilter struct { func (m *ContainerFilter) Reset() { *m = ContainerFilter{} } func (*ContainerFilter) ProtoMessage() {} func (*ContainerFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{76} + return fileDescriptor_00212fb1f9d3bf1c, []int{75} } func (m *ContainerFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5742,7 +5674,7 @@ type ListContainersRequest struct { func (m *ListContainersRequest) Reset() { *m = ListContainersRequest{} } func (*ListContainersRequest) ProtoMessage() {} func (*ListContainersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{77} + return fileDescriptor_00212fb1f9d3bf1c, []int{76} } func (m *ListContainersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5820,7 +5752,7 @@ type Container struct { func (m *Container) Reset() { *m = Container{} } func (*Container) ProtoMessage() {} func (*Container) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{78} + return fileDescriptor_00212fb1f9d3bf1c, []int{77} } func (m *Container) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5929,7 +5861,7 @@ type ListContainersResponse struct { func (m *ListContainersResponse) Reset() { *m = ListContainersResponse{} } func (*ListContainersResponse) ProtoMessage() {} func (*ListContainersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{79} + return fileDescriptor_00212fb1f9d3bf1c, []int{78} } func (m *ListContainersResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5977,7 +5909,7 @@ type ContainerStatusRequest struct { func (m *ContainerStatusRequest) Reset() { *m = ContainerStatusRequest{} } func (*ContainerStatusRequest) ProtoMessage() {} func (*ContainerStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{80} + return fileDescriptor_00212fb1f9d3bf1c, []int{79} } func (m *ContainerStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6076,7 +6008,7 @@ type ContainerStatus struct { func (m *ContainerStatus) Reset() { *m = ContainerStatus{} } func (*ContainerStatus) ProtoMessage() {} func (*ContainerStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{81} + return fileDescriptor_00212fb1f9d3bf1c, []int{80} } func (m *ContainerStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6246,7 +6178,7 @@ type ContainerStatusResponse struct { func (m *ContainerStatusResponse) Reset() { *m = ContainerStatusResponse{} } func (*ContainerStatusResponse) ProtoMessage() {} func (*ContainerStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{82} + return fileDescriptor_00212fb1f9d3bf1c, []int{81} } func (m *ContainerStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6302,7 +6234,7 @@ type ContainerResources struct { func (m *ContainerResources) Reset() { *m = ContainerResources{} } func (*ContainerResources) ProtoMessage() {} func (*ContainerResources) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{83} + return fileDescriptor_00212fb1f9d3bf1c, []int{82} } func (m *ContainerResources) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6356,7 +6288,7 @@ type ContainerUser struct { func (m *ContainerUser) Reset() { *m = ContainerUser{} } func (*ContainerUser) ProtoMessage() {} func (*ContainerUser) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{84} + return fileDescriptor_00212fb1f9d3bf1c, []int{83} } func (m *ContainerUser) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6410,7 +6342,7 @@ type UpdateContainerResourcesRequest struct { func (m *UpdateContainerResourcesRequest) Reset() { *m = UpdateContainerResourcesRequest{} } func (*UpdateContainerResourcesRequest) ProtoMessage() {} func (*UpdateContainerResourcesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{85} + return fileDescriptor_00212fb1f9d3bf1c, []int{84} } func (m *UpdateContainerResourcesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6475,7 +6407,7 @@ type UpdateContainerResourcesResponse struct { func (m *UpdateContainerResourcesResponse) Reset() { *m = UpdateContainerResourcesResponse{} } func (*UpdateContainerResourcesResponse) ProtoMessage() {} func (*UpdateContainerResourcesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{86} + return fileDescriptor_00212fb1f9d3bf1c, []int{85} } func (m *UpdateContainerResourcesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6518,7 +6450,7 @@ type ExecSyncRequest struct { func (m *ExecSyncRequest) Reset() { *m = ExecSyncRequest{} } func (*ExecSyncRequest) ProtoMessage() {} func (*ExecSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{87} + return fileDescriptor_00212fb1f9d3bf1c, []int{86} } func (m *ExecSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6590,7 +6522,7 @@ type ExecSyncResponse struct { func (m *ExecSyncResponse) Reset() { *m = ExecSyncResponse{} } func (*ExecSyncResponse) ProtoMessage() {} func (*ExecSyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{88} + return fileDescriptor_00212fb1f9d3bf1c, []int{87} } func (m *ExecSyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6666,7 +6598,7 @@ type ExecRequest struct { func (m *ExecRequest) Reset() { *m = ExecRequest{} } func (*ExecRequest) ProtoMessage() {} func (*ExecRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{89} + return fileDescriptor_00212fb1f9d3bf1c, []int{88} } func (m *ExecRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6747,7 +6679,7 @@ type ExecResponse struct { func (m *ExecResponse) Reset() { *m = ExecResponse{} } func (*ExecResponse) ProtoMessage() {} func (*ExecResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{90} + return fileDescriptor_00212fb1f9d3bf1c, []int{89} } func (m *ExecResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6808,7 +6740,7 @@ type AttachRequest struct { func (m *AttachRequest) Reset() { *m = AttachRequest{} } func (*AttachRequest) ProtoMessage() {} func (*AttachRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{91} + return fileDescriptor_00212fb1f9d3bf1c, []int{90} } func (m *AttachRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6882,7 +6814,7 @@ type AttachResponse struct { func (m *AttachResponse) Reset() { *m = AttachResponse{} } func (*AttachResponse) ProtoMessage() {} func (*AttachResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{92} + return fileDescriptor_00212fb1f9d3bf1c, []int{91} } func (m *AttachResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6930,7 +6862,7 @@ type PortForwardRequest struct { func (m *PortForwardRequest) Reset() { *m = PortForwardRequest{} } func (*PortForwardRequest) ProtoMessage() {} func (*PortForwardRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{93} + return fileDescriptor_00212fb1f9d3bf1c, []int{92} } func (m *PortForwardRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6983,7 +6915,7 @@ type PortForwardResponse struct { func (m *PortForwardResponse) Reset() { *m = PortForwardResponse{} } func (*PortForwardResponse) ProtoMessage() {} func (*PortForwardResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{94} + return fileDescriptor_00212fb1f9d3bf1c, []int{93} } func (m *PortForwardResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7029,7 +6961,7 @@ type ImageFilter struct { func (m *ImageFilter) Reset() { *m = ImageFilter{} } func (*ImageFilter) ProtoMessage() {} func (*ImageFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{95} + return fileDescriptor_00212fb1f9d3bf1c, []int{94} } func (m *ImageFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7075,7 +7007,7 @@ type ListImagesRequest struct { func (m *ListImagesRequest) Reset() { *m = ListImagesRequest{} } func (*ListImagesRequest) ProtoMessage() {} func (*ListImagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{96} + return fileDescriptor_00212fb1f9d3bf1c, []int{95} } func (m *ListImagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7141,7 +7073,7 @@ type Image struct { func (m *Image) Reset() { *m = Image{} } func (*Image) ProtoMessage() {} func (*Image) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{97} + return fileDescriptor_00212fb1f9d3bf1c, []int{96} } func (m *Image) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7236,7 +7168,7 @@ type ListImagesResponse struct { func (m *ListImagesResponse) Reset() { *m = ListImagesResponse{} } func (*ListImagesResponse) ProtoMessage() {} func (*ListImagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{98} + return fileDescriptor_00212fb1f9d3bf1c, []int{97} } func (m *ListImagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7284,7 +7216,7 @@ type ImageStatusRequest struct { func (m *ImageStatusRequest) Reset() { *m = ImageStatusRequest{} } func (*ImageStatusRequest) ProtoMessage() {} func (*ImageStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{99} + return fileDescriptor_00212fb1f9d3bf1c, []int{98} } func (m *ImageStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7342,7 +7274,7 @@ type ImageStatusResponse struct { func (m *ImageStatusResponse) Reset() { *m = ImageStatusResponse{} } func (*ImageStatusResponse) ProtoMessage() {} func (*ImageStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{100} + return fileDescriptor_00212fb1f9d3bf1c, []int{99} } func (m *ImageStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7403,7 +7335,7 @@ type AuthConfig struct { func (m *AuthConfig) Reset() { *m = AuthConfig{} } func (*AuthConfig) ProtoMessage() {} func (*AuthConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{101} + return fileDescriptor_00212fb1f9d3bf1c, []int{100} } func (m *AuthConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7488,7 +7420,7 @@ type PullImageRequest struct { func (m *PullImageRequest) Reset() { *m = PullImageRequest{} } func (*PullImageRequest) ProtoMessage() {} func (*PullImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{102} + return fileDescriptor_00212fb1f9d3bf1c, []int{101} } func (m *PullImageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7549,7 +7481,7 @@ type PullImageResponse struct { func (m *PullImageResponse) Reset() { *m = PullImageResponse{} } func (*PullImageResponse) ProtoMessage() {} func (*PullImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{103} + return fileDescriptor_00212fb1f9d3bf1c, []int{102} } func (m *PullImageResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7595,7 +7527,7 @@ type RemoveImageRequest struct { func (m *RemoveImageRequest) Reset() { *m = RemoveImageRequest{} } func (*RemoveImageRequest) ProtoMessage() {} func (*RemoveImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{104} + return fileDescriptor_00212fb1f9d3bf1c, []int{103} } func (m *RemoveImageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7639,7 +7571,7 @@ type RemoveImageResponse struct { func (m *RemoveImageResponse) Reset() { *m = RemoveImageResponse{} } func (*RemoveImageResponse) ProtoMessage() {} func (*RemoveImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{105} + return fileDescriptor_00212fb1f9d3bf1c, []int{104} } func (m *RemoveImageResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7679,7 +7611,7 @@ type NetworkConfig struct { func (m *NetworkConfig) Reset() { *m = NetworkConfig{} } func (*NetworkConfig) ProtoMessage() {} func (*NetworkConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{106} + return fileDescriptor_00212fb1f9d3bf1c, []int{105} } func (m *NetworkConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7724,7 +7656,7 @@ type RuntimeConfig struct { func (m *RuntimeConfig) Reset() { *m = RuntimeConfig{} } func (*RuntimeConfig) ProtoMessage() {} func (*RuntimeConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{107} + return fileDescriptor_00212fb1f9d3bf1c, []int{106} } func (m *RuntimeConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7769,7 +7701,7 @@ type UpdateRuntimeConfigRequest struct { func (m *UpdateRuntimeConfigRequest) Reset() { *m = UpdateRuntimeConfigRequest{} } func (*UpdateRuntimeConfigRequest) ProtoMessage() {} func (*UpdateRuntimeConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{108} + return fileDescriptor_00212fb1f9d3bf1c, []int{107} } func (m *UpdateRuntimeConfigRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7813,7 +7745,7 @@ type UpdateRuntimeConfigResponse struct { func (m *UpdateRuntimeConfigResponse) Reset() { *m = UpdateRuntimeConfigResponse{} } func (*UpdateRuntimeConfigResponse) ProtoMessage() {} func (*UpdateRuntimeConfigResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{109} + return fileDescriptor_00212fb1f9d3bf1c, []int{108} } func (m *UpdateRuntimeConfigResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7872,7 +7804,7 @@ type RuntimeCondition struct { func (m *RuntimeCondition) Reset() { *m = RuntimeCondition{} } func (*RuntimeCondition) ProtoMessage() {} func (*RuntimeCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{110} + return fileDescriptor_00212fb1f9d3bf1c, []int{109} } func (m *RuntimeCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7940,7 +7872,7 @@ type RuntimeStatus struct { func (m *RuntimeStatus) Reset() { *m = RuntimeStatus{} } func (*RuntimeStatus) ProtoMessage() {} func (*RuntimeStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{111} + return fileDescriptor_00212fb1f9d3bf1c, []int{110} } func (m *RuntimeStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7986,7 +7918,7 @@ type StatusRequest struct { func (m *StatusRequest) Reset() { *m = StatusRequest{} } func (*StatusRequest) ProtoMessage() {} func (*StatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{112} + return fileDescriptor_00212fb1f9d3bf1c, []int{111} } func (m *StatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8039,7 +7971,7 @@ type RuntimeHandlerFeatures struct { func (m *RuntimeHandlerFeatures) Reset() { *m = RuntimeHandlerFeatures{} } func (*RuntimeHandlerFeatures) ProtoMessage() {} func (*RuntimeHandlerFeatures) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{113} + return fileDescriptor_00212fb1f9d3bf1c, []int{112} } func (m *RuntimeHandlerFeatures) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8095,7 +8027,7 @@ type RuntimeHandler struct { func (m *RuntimeHandler) Reset() { *m = RuntimeHandler{} } func (*RuntimeHandler) ProtoMessage() {} func (*RuntimeHandler) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{114} + return fileDescriptor_00212fb1f9d3bf1c, []int{113} } func (m *RuntimeHandler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8151,7 +8083,7 @@ type RuntimeFeatures struct { func (m *RuntimeFeatures) Reset() { *m = RuntimeFeatures{} } func (*RuntimeFeatures) ProtoMessage() {} func (*RuntimeFeatures) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{115} + return fileDescriptor_00212fb1f9d3bf1c, []int{114} } func (m *RuntimeFeatures) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8207,7 +8139,7 @@ type StatusResponse struct { func (m *StatusResponse) Reset() { *m = StatusResponse{} } func (*StatusResponse) ProtoMessage() {} func (*StatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{116} + return fileDescriptor_00212fb1f9d3bf1c, []int{115} } func (m *StatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8272,7 +8204,7 @@ type ImageFsInfoRequest struct { func (m *ImageFsInfoRequest) Reset() { *m = ImageFsInfoRequest{} } func (*ImageFsInfoRequest) ProtoMessage() {} func (*ImageFsInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{117} + return fileDescriptor_00212fb1f9d3bf1c, []int{116} } func (m *ImageFsInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8312,7 +8244,7 @@ type UInt64Value struct { func (m *UInt64Value) Reset() { *m = UInt64Value{} } func (*UInt64Value) ProtoMessage() {} func (*UInt64Value) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{118} + return fileDescriptor_00212fb1f9d3bf1c, []int{117} } func (m *UInt64Value) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8359,7 +8291,7 @@ type FilesystemIdentifier struct { func (m *FilesystemIdentifier) Reset() { *m = FilesystemIdentifier{} } func (*FilesystemIdentifier) ProtoMessage() {} func (*FilesystemIdentifier) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{119} + return fileDescriptor_00212fb1f9d3bf1c, []int{118} } func (m *FilesystemIdentifier) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8416,7 +8348,7 @@ type FilesystemUsage struct { func (m *FilesystemUsage) Reset() { *m = FilesystemUsage{} } func (*FilesystemUsage) ProtoMessage() {} func (*FilesystemUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{120} + return fileDescriptor_00212fb1f9d3bf1c, []int{119} } func (m *FilesystemUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8490,7 +8422,7 @@ type WindowsFilesystemUsage struct { func (m *WindowsFilesystemUsage) Reset() { *m = WindowsFilesystemUsage{} } func (*WindowsFilesystemUsage) ProtoMessage() {} func (*WindowsFilesystemUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{121} + return fileDescriptor_00212fb1f9d3bf1c, []int{120} } func (m *WindowsFilesystemUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8555,7 +8487,7 @@ type ImageFsInfoResponse struct { func (m *ImageFsInfoResponse) Reset() { *m = ImageFsInfoResponse{} } func (*ImageFsInfoResponse) ProtoMessage() {} func (*ImageFsInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{122} + return fileDescriptor_00212fb1f9d3bf1c, []int{121} } func (m *ImageFsInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8608,7 +8540,7 @@ type ContainerStatsRequest struct { func (m *ContainerStatsRequest) Reset() { *m = ContainerStatsRequest{} } func (*ContainerStatsRequest) ProtoMessage() {} func (*ContainerStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{123} + return fileDescriptor_00212fb1f9d3bf1c, []int{122} } func (m *ContainerStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8654,7 +8586,7 @@ type ContainerStatsResponse struct { func (m *ContainerStatsResponse) Reset() { *m = ContainerStatsResponse{} } func (*ContainerStatsResponse) ProtoMessage() {} func (*ContainerStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{124} + return fileDescriptor_00212fb1f9d3bf1c, []int{123} } func (m *ContainerStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8700,7 +8632,7 @@ type ListContainerStatsRequest struct { func (m *ListContainerStatsRequest) Reset() { *m = ListContainerStatsRequest{} } func (*ListContainerStatsRequest) ProtoMessage() {} func (*ListContainerStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{125} + return fileDescriptor_00212fb1f9d3bf1c, []int{124} } func (m *ListContainerStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8754,7 +8686,7 @@ type ContainerStatsFilter struct { func (m *ContainerStatsFilter) Reset() { *m = ContainerStatsFilter{} } func (*ContainerStatsFilter) ProtoMessage() {} func (*ContainerStatsFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{126} + return fileDescriptor_00212fb1f9d3bf1c, []int{125} } func (m *ContainerStatsFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8814,7 +8746,7 @@ type ListContainerStatsResponse struct { func (m *ListContainerStatsResponse) Reset() { *m = ListContainerStatsResponse{} } func (*ListContainerStatsResponse) ProtoMessage() {} func (*ListContainerStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{127} + return fileDescriptor_00212fb1f9d3bf1c, []int{126} } func (m *ListContainerStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8870,7 +8802,7 @@ type ContainerAttributes struct { func (m *ContainerAttributes) Reset() { *m = ContainerAttributes{} } func (*ContainerAttributes) ProtoMessage() {} func (*ContainerAttributes) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{128} + return fileDescriptor_00212fb1f9d3bf1c, []int{127} } func (m *ContainerAttributes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8946,7 +8878,7 @@ type ContainerStats struct { func (m *ContainerStats) Reset() { *m = ContainerStats{} } func (*ContainerStats) ProtoMessage() {} func (*ContainerStats) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{129} + return fileDescriptor_00212fb1f9d3bf1c, []int{128} } func (m *ContainerStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9027,7 +8959,7 @@ type WindowsContainerStats struct { func (m *WindowsContainerStats) Reset() { *m = WindowsContainerStats{} } func (*WindowsContainerStats) ProtoMessage() {} func (*WindowsContainerStats) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{130} + return fileDescriptor_00212fb1f9d3bf1c, []int{129} } func (m *WindowsContainerStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9100,7 +9032,7 @@ type CpuUsage struct { func (m *CpuUsage) Reset() { *m = CpuUsage{} } func (*CpuUsage) ProtoMessage() {} func (*CpuUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{131} + return fileDescriptor_00212fb1f9d3bf1c, []int{130} } func (m *CpuUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9166,7 +9098,7 @@ type WindowsCpuUsage struct { func (m *WindowsCpuUsage) Reset() { *m = WindowsCpuUsage{} } func (*WindowsCpuUsage) ProtoMessage() {} func (*WindowsCpuUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{132} + return fileDescriptor_00212fb1f9d3bf1c, []int{131} } func (m *WindowsCpuUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9239,7 +9171,7 @@ type MemoryUsage struct { func (m *MemoryUsage) Reset() { *m = MemoryUsage{} } func (*MemoryUsage) ProtoMessage() {} func (*MemoryUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{133} + return fileDescriptor_00212fb1f9d3bf1c, []int{132} } func (m *MemoryUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9331,7 +9263,7 @@ type SwapUsage struct { func (m *SwapUsage) Reset() { *m = SwapUsage{} } func (*SwapUsage) ProtoMessage() {} func (*SwapUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{134} + return fileDescriptor_00212fb1f9d3bf1c, []int{133} } func (m *SwapUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9400,7 +9332,7 @@ type WindowsMemoryUsage struct { func (m *WindowsMemoryUsage) Reset() { *m = WindowsMemoryUsage{} } func (*WindowsMemoryUsage) ProtoMessage() {} func (*WindowsMemoryUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{135} + return fileDescriptor_00212fb1f9d3bf1c, []int{134} } func (m *WindowsMemoryUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9474,7 +9406,7 @@ type ReopenContainerLogRequest struct { func (m *ReopenContainerLogRequest) Reset() { *m = ReopenContainerLogRequest{} } func (*ReopenContainerLogRequest) ProtoMessage() {} func (*ReopenContainerLogRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{136} + return fileDescriptor_00212fb1f9d3bf1c, []int{135} } func (m *ReopenContainerLogRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9518,7 +9450,7 @@ type ReopenContainerLogResponse struct { func (m *ReopenContainerLogResponse) Reset() { *m = ReopenContainerLogResponse{} } func (*ReopenContainerLogResponse) ProtoMessage() {} func (*ReopenContainerLogResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{137} + return fileDescriptor_00212fb1f9d3bf1c, []int{136} } func (m *ReopenContainerLogResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9563,7 +9495,7 @@ type CheckpointContainerRequest struct { func (m *CheckpointContainerRequest) Reset() { *m = CheckpointContainerRequest{} } func (*CheckpointContainerRequest) ProtoMessage() {} func (*CheckpointContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{138} + return fileDescriptor_00212fb1f9d3bf1c, []int{137} } func (m *CheckpointContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9621,7 +9553,7 @@ type CheckpointContainerResponse struct { func (m *CheckpointContainerResponse) Reset() { *m = CheckpointContainerResponse{} } func (*CheckpointContainerResponse) ProtoMessage() {} func (*CheckpointContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{139} + return fileDescriptor_00212fb1f9d3bf1c, []int{138} } func (m *CheckpointContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9658,7 +9590,7 @@ type GetEventsRequest struct { func (m *GetEventsRequest) Reset() { *m = GetEventsRequest{} } func (*GetEventsRequest) ProtoMessage() {} func (*GetEventsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{140} + return fileDescriptor_00212fb1f9d3bf1c, []int{139} } func (m *GetEventsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9705,7 +9637,7 @@ type ContainerEventResponse struct { func (m *ContainerEventResponse) Reset() { *m = ContainerEventResponse{} } func (*ContainerEventResponse) ProtoMessage() {} func (*ContainerEventResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{141} + return fileDescriptor_00212fb1f9d3bf1c, []int{140} } func (m *ContainerEventResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9777,7 +9709,7 @@ type ListMetricDescriptorsRequest struct { func (m *ListMetricDescriptorsRequest) Reset() { *m = ListMetricDescriptorsRequest{} } func (*ListMetricDescriptorsRequest) ProtoMessage() {} func (*ListMetricDescriptorsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{142} + return fileDescriptor_00212fb1f9d3bf1c, []int{141} } func (m *ListMetricDescriptorsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9815,7 +9747,7 @@ type ListMetricDescriptorsResponse struct { func (m *ListMetricDescriptorsResponse) Reset() { *m = ListMetricDescriptorsResponse{} } func (*ListMetricDescriptorsResponse) ProtoMessage() {} func (*ListMetricDescriptorsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{143} + return fileDescriptor_00212fb1f9d3bf1c, []int{142} } func (m *ListMetricDescriptorsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9868,7 +9800,7 @@ type MetricDescriptor struct { func (m *MetricDescriptor) Reset() { *m = MetricDescriptor{} } func (*MetricDescriptor) ProtoMessage() {} func (*MetricDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{144} + return fileDescriptor_00212fb1f9d3bf1c, []int{143} } func (m *MetricDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9926,7 +9858,7 @@ type ListPodSandboxMetricsRequest struct { func (m *ListPodSandboxMetricsRequest) Reset() { *m = ListPodSandboxMetricsRequest{} } func (*ListPodSandboxMetricsRequest) ProtoMessage() {} func (*ListPodSandboxMetricsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{145} + return fileDescriptor_00212fb1f9d3bf1c, []int{144} } func (m *ListPodSandboxMetricsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9964,7 +9896,7 @@ type ListPodSandboxMetricsResponse struct { func (m *ListPodSandboxMetricsResponse) Reset() { *m = ListPodSandboxMetricsResponse{} } func (*ListPodSandboxMetricsResponse) ProtoMessage() {} func (*ListPodSandboxMetricsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{146} + return fileDescriptor_00212fb1f9d3bf1c, []int{145} } func (m *ListPodSandboxMetricsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10011,7 +9943,7 @@ type PodSandboxMetrics struct { func (m *PodSandboxMetrics) Reset() { *m = PodSandboxMetrics{} } func (*PodSandboxMetrics) ProtoMessage() {} func (*PodSandboxMetrics) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{147} + return fileDescriptor_00212fb1f9d3bf1c, []int{146} } func (m *PodSandboxMetrics) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10071,7 +10003,7 @@ type ContainerMetrics struct { func (m *ContainerMetrics) Reset() { *m = ContainerMetrics{} } func (*ContainerMetrics) ProtoMessage() {} func (*ContainerMetrics) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{148} + return fileDescriptor_00212fb1f9d3bf1c, []int{147} } func (m *ContainerMetrics) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10134,7 +10066,7 @@ type Metric struct { func (m *Metric) Reset() { *m = Metric{} } func (*Metric) ProtoMessage() {} func (*Metric) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{149} + return fileDescriptor_00212fb1f9d3bf1c, []int{148} } func (m *Metric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10206,7 +10138,7 @@ type RuntimeConfigRequest struct { func (m *RuntimeConfigRequest) Reset() { *m = RuntimeConfigRequest{} } func (*RuntimeConfigRequest) ProtoMessage() {} func (*RuntimeConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{150} + return fileDescriptor_00212fb1f9d3bf1c, []int{149} } func (m *RuntimeConfigRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10247,7 +10179,7 @@ type RuntimeConfigResponse struct { func (m *RuntimeConfigResponse) Reset() { *m = RuntimeConfigResponse{} } func (*RuntimeConfigResponse) ProtoMessage() {} func (*RuntimeConfigResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{151} + return fileDescriptor_00212fb1f9d3bf1c, []int{150} } func (m *RuntimeConfigResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10299,7 +10231,7 @@ type LinuxRuntimeConfiguration struct { func (m *LinuxRuntimeConfiguration) Reset() { *m = LinuxRuntimeConfiguration{} } func (*LinuxRuntimeConfiguration) ProtoMessage() {} func (*LinuxRuntimeConfiguration) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{152} + return fileDescriptor_00212fb1f9d3bf1c, []int{151} } func (m *LinuxRuntimeConfiguration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10335,6 +10267,107 @@ func (m *LinuxRuntimeConfiguration) GetCgroupDriver() CgroupDriver { return CgroupDriver_SYSTEMD } +type UpdatePodSandboxResourcesRequest struct { + // ID of the PodSandbox to update. + PodSandboxId string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId,proto3" json:"pod_sandbox_id,omitempty"` + // Optional overhead represents the overheads associated with this sandbox + Overhead *LinuxContainerResources `protobuf:"bytes,2,opt,name=overhead,proto3" json:"overhead,omitempty"` + // Optional resources represents the sum of container resources for this sandbox + Resources *LinuxContainerResources `protobuf:"bytes,3,opt,name=resources,proto3" json:"resources,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdatePodSandboxResourcesRequest) Reset() { *m = UpdatePodSandboxResourcesRequest{} } +func (*UpdatePodSandboxResourcesRequest) ProtoMessage() {} +func (*UpdatePodSandboxResourcesRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{152} +} +func (m *UpdatePodSandboxResourcesRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UpdatePodSandboxResourcesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UpdatePodSandboxResourcesRequest.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 *UpdatePodSandboxResourcesRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdatePodSandboxResourcesRequest.Merge(m, src) +} +func (m *UpdatePodSandboxResourcesRequest) XXX_Size() int { + return m.Size() +} +func (m *UpdatePodSandboxResourcesRequest) XXX_DiscardUnknown() { + xxx_messageInfo_UpdatePodSandboxResourcesRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdatePodSandboxResourcesRequest proto.InternalMessageInfo + +func (m *UpdatePodSandboxResourcesRequest) GetPodSandboxId() string { + if m != nil { + return m.PodSandboxId + } + return "" +} + +func (m *UpdatePodSandboxResourcesRequest) GetOverhead() *LinuxContainerResources { + if m != nil { + return m.Overhead + } + return nil +} + +func (m *UpdatePodSandboxResourcesRequest) GetResources() *LinuxContainerResources { + if m != nil { + return m.Resources + } + return nil +} + +type UpdatePodSandboxResourcesResponse struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *UpdatePodSandboxResourcesResponse) Reset() { *m = UpdatePodSandboxResourcesResponse{} } +func (*UpdatePodSandboxResourcesResponse) ProtoMessage() {} +func (*UpdatePodSandboxResourcesResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{153} +} +func (m *UpdatePodSandboxResourcesResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UpdatePodSandboxResourcesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UpdatePodSandboxResourcesResponse.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 *UpdatePodSandboxResourcesResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpdatePodSandboxResourcesResponse.Merge(m, src) +} +func (m *UpdatePodSandboxResourcesResponse) XXX_Size() int { + return m.Size() +} +func (m *UpdatePodSandboxResourcesResponse) XXX_DiscardUnknown() { + xxx_messageInfo_UpdatePodSandboxResourcesResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_UpdatePodSandboxResourcesResponse proto.InternalMessageInfo + func init() { proto.RegisterEnum("runtime.v1.Protocol", Protocol_name, Protocol_value) proto.RegisterEnum("runtime.v1.MountPropagation", MountPropagation_name, MountPropagation_value) @@ -10422,7 +10455,6 @@ func init() { proto.RegisterType((*WindowsContainerSecurityContext)(nil), "runtime.v1.WindowsContainerSecurityContext") proto.RegisterType((*WindowsContainerConfig)(nil), "runtime.v1.WindowsContainerConfig") proto.RegisterType((*WindowsContainerResources)(nil), "runtime.v1.WindowsContainerResources") - proto.RegisterType((*WindowsCpuGroupAffinity)(nil), "runtime.v1.WindowsCpuGroupAffinity") proto.RegisterType((*ContainerMetadata)(nil), "runtime.v1.ContainerMetadata") proto.RegisterType((*Device)(nil), "runtime.v1.Device") proto.RegisterType((*CDIDevice)(nil), "runtime.v1.CDIDevice") @@ -10527,463 +10559,464 @@ func init() { proto.RegisterType((*RuntimeConfigRequest)(nil), "runtime.v1.RuntimeConfigRequest") proto.RegisterType((*RuntimeConfigResponse)(nil), "runtime.v1.RuntimeConfigResponse") proto.RegisterType((*LinuxRuntimeConfiguration)(nil), "runtime.v1.LinuxRuntimeConfiguration") + proto.RegisterType((*UpdatePodSandboxResourcesRequest)(nil), "runtime.v1.UpdatePodSandboxResourcesRequest") + proto.RegisterType((*UpdatePodSandboxResourcesResponse)(nil), "runtime.v1.UpdatePodSandboxResourcesResponse") } func init() { proto.RegisterFile("api.proto", fileDescriptor_00212fb1f9d3bf1c) } var fileDescriptor_00212fb1f9d3bf1c = []byte{ - // 7202 bytes of a gzipped FileDescriptorProto + // 7200 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x7d, 0x5d, 0x6c, 0x1c, 0xc9, 0x75, 0x2e, 0x7b, 0x66, 0x48, 0xce, 0x1c, 0x72, 0xc8, 0x61, 0x89, 0x22, 0xa9, 0x91, 0x44, 0x49, - 0xbd, 0x7f, 0x92, 0x76, 0xf5, 0xb3, 0x5a, 0xed, 0xae, 0xa4, 0xd5, 0xee, 0x6a, 0x44, 0x52, 0xd2, - 0xac, 0x45, 0x72, 0xdc, 0x43, 0xae, 0xbd, 0xeb, 0x0b, 0xf7, 0x6d, 0x4d, 0x17, 0x87, 0xbd, 0x9a, - 0xe9, 0x6e, 0x77, 0xf7, 0x48, 0xa2, 0x1f, 0x2e, 0xee, 0xd3, 0xc5, 0x8d, 0x9f, 0x0c, 0x24, 0x46, - 0x10, 0x23, 0x48, 0xe0, 0x00, 0xf9, 0x79, 0x4b, 0x62, 0x20, 0x8e, 0x83, 0x04, 0x08, 0x10, 0xc4, - 0x86, 0x13, 0x20, 0x40, 0x1e, 0x12, 0xc0, 0x6f, 0xb1, 0x37, 0x01, 0x02, 0xe4, 0xd9, 0x0f, 0x79, - 0x8a, 0x83, 0xfa, 0xeb, 0xee, 0xea, 0x9f, 0x99, 0x21, 0x77, 0xb3, 0xbb, 0x7e, 0xe2, 0x74, 0xd5, - 0x39, 0xa7, 0xaa, 0x4e, 0x9d, 0x3a, 0x75, 0xaa, 0xea, 0xab, 0x22, 0x54, 0x0c, 0xd7, 0xba, 0xec, - 0x7a, 0x4e, 0xe0, 0x20, 0xf0, 0x06, 0x76, 0x60, 0xf5, 0xf1, 0xe5, 0x27, 0xaf, 0xd6, 0x2f, 0x75, - 0xad, 0x60, 0x7f, 0xf0, 0xe8, 0x72, 0xc7, 0xe9, 0x5f, 0xe9, 0x3a, 0x5d, 0xe7, 0x0a, 0x25, 0x79, - 0x34, 0xd8, 0xa3, 0x5f, 0xf4, 0x83, 0xfe, 0x62, 0xac, 0xea, 0x45, 0x98, 0x7b, 0x1f, 0x7b, 0xbe, - 0xe5, 0xd8, 0x1a, 0xfe, 0xc6, 0x00, 0xfb, 0x01, 0x5a, 0x81, 0xe9, 0x27, 0x2c, 0x65, 0x45, 0x39, - 0xab, 0x9c, 0xaf, 0x68, 0xe2, 0x53, 0xfd, 0x43, 0x05, 0xe6, 0x43, 0x62, 0xdf, 0x75, 0x6c, 0x1f, - 0xe7, 0x53, 0xa3, 0x73, 0x30, 0xcb, 0xab, 0xa5, 0xdb, 0x46, 0x1f, 0xaf, 0x14, 0x68, 0xf6, 0x0c, - 0x4f, 0xdb, 0x32, 0xfa, 0x18, 0xbd, 0x04, 0xf3, 0x82, 0x44, 0x08, 0x29, 0x52, 0xaa, 0x39, 0x9e, - 0xcc, 0x4b, 0x43, 0x97, 0xe1, 0x98, 0x20, 0x34, 0x5c, 0x2b, 0x24, 0x2e, 0x51, 0xe2, 0x05, 0x9e, - 0xd5, 0x70, 0x2d, 0x4e, 0xaf, 0x7e, 0x0d, 0x2a, 0xeb, 0x5b, 0xed, 0x35, 0xc7, 0xde, 0xb3, 0xba, - 0xa4, 0x8a, 0x3e, 0xf6, 0x08, 0xcf, 0x8a, 0x72, 0xb6, 0x48, 0xaa, 0xc8, 0x3f, 0x51, 0x1d, 0xca, - 0x3e, 0x36, 0xbc, 0xce, 0x3e, 0xf6, 0x57, 0x0a, 0x34, 0x2b, 0xfc, 0x26, 0x5c, 0x8e, 0x1b, 0x58, - 0x8e, 0xed, 0xaf, 0x14, 0x19, 0x17, 0xff, 0x54, 0x7f, 0x5b, 0x81, 0x99, 0x96, 0xe3, 0x05, 0x9b, - 0x86, 0xeb, 0x5a, 0x76, 0x17, 0x5d, 0x85, 0x32, 0xd5, 0x65, 0xc7, 0xe9, 0x51, 0x1d, 0xcc, 0x5d, - 0x5b, 0xbc, 0x1c, 0x75, 0xc8, 0xe5, 0x16, 0xcf, 0xd3, 0x42, 0x2a, 0xf4, 0x02, 0xcc, 0x75, 0x1c, - 0x3b, 0x30, 0x2c, 0x1b, 0x7b, 0xba, 0xeb, 0x78, 0x01, 0x55, 0xce, 0xa4, 0x56, 0x0d, 0x53, 0x89, - 0x7c, 0x74, 0x12, 0x2a, 0xfb, 0x8e, 0x1f, 0x30, 0x8a, 0x22, 0xa5, 0x28, 0x93, 0x04, 0x9a, 0xb9, - 0x0c, 0xd3, 0x34, 0xd3, 0x72, 0xb9, 0x1a, 0xa6, 0xc8, 0x67, 0xd3, 0x55, 0x7f, 0x54, 0x84, 0xc9, - 0x4d, 0x67, 0x60, 0x07, 0x89, 0x62, 0x8c, 0x60, 0x9f, 0x77, 0x51, 0xac, 0x18, 0x23, 0xd8, 0x8f, - 0x8a, 0x21, 0x14, 0xac, 0x97, 0x58, 0x31, 0x24, 0xb3, 0x0e, 0x65, 0x0f, 0x1b, 0xa6, 0x63, 0xf7, - 0x0e, 0x68, 0x15, 0xca, 0x5a, 0xf8, 0x4d, 0xba, 0xcf, 0xc7, 0x3d, 0xcb, 0x1e, 0x3c, 0xd3, 0x3d, - 0xdc, 0x33, 0x1e, 0xe1, 0x1e, 0xad, 0x4a, 0x59, 0x9b, 0xe3, 0xc9, 0x1a, 0x4b, 0x45, 0xef, 0xc0, - 0x8c, 0xeb, 0x39, 0xae, 0xd1, 0x35, 0x88, 0x06, 0x57, 0x26, 0xa9, 0x92, 0x4e, 0xc5, 0x95, 0x44, - 0x2b, 0xdc, 0x8a, 0x68, 0xb4, 0x38, 0x03, 0x7a, 0x13, 0x66, 0x06, 0x96, 0xc9, 0xf5, 0xed, 0xaf, - 0x4c, 0x9d, 0x2d, 0x9e, 0x9f, 0xb9, 0x76, 0x3c, 0xce, 0xdf, 0x5c, 0xe7, 0xb9, 0x5a, 0x9c, 0x92, - 0x30, 0x76, 0x63, 0x8c, 0xd3, 0x43, 0x19, 0x63, 0x94, 0xd4, 0xe0, 0x70, 0x67, 0xe0, 0xf9, 0xd6, - 0x13, 0xac, 0x93, 0x06, 0xeb, 0x54, 0x03, 0x65, 0xda, 0xbc, 0x85, 0x30, 0x4b, 0xc3, 0x86, 0xb9, - 0x4d, 0x54, 0xf1, 0x32, 0x4c, 0x5a, 0x7d, 0xa3, 0x8b, 0x57, 0x2a, 0x67, 0x95, 0x54, 0x11, 0x24, - 0xa3, 0xed, 0xe2, 0x8e, 0xc6, 0x68, 0xd0, 0xf3, 0x30, 0x47, 0x7f, 0xe8, 0xfe, 0xe0, 0x11, 0xd3, - 0x3a, 0x50, 0xad, 0xcf, 0xd2, 0xd4, 0xf6, 0xe0, 0x11, 0xd1, 0xbc, 0xaa, 0x43, 0x25, 0xac, 0x5c, - 0xd4, 0xdb, 0x26, 0xed, 0xc3, 0x2a, 0xef, 0x6d, 0x93, 0x8c, 0xb2, 0xa8, 0x8f, 0x2d, 0x93, 0xf6, - 0x5f, 0x55, 0x9b, 0x09, 0xd3, 0x9a, 0x26, 0x5a, 0x82, 0xa9, 0x1e, 0xb6, 0xbb, 0xc1, 0x3e, 0xed, - 0xc0, 0xaa, 0xc6, 0xbf, 0xd4, 0xdf, 0x50, 0xa0, 0xba, 0xeb, 0x63, 0x8f, 0x0c, 0x45, 0xdf, 0x35, - 0x3a, 0x18, 0x5d, 0x82, 0x52, 0xdf, 0x31, 0x31, 0xb7, 0xe2, 0x13, 0xf1, 0x46, 0x84, 0x44, 0x9b, - 0x8e, 0x89, 0x35, 0x4a, 0x86, 0x2e, 0x40, 0x69, 0x60, 0x99, 0x6c, 0xe8, 0xe4, 0xaa, 0x95, 0x92, - 0x10, 0xd2, 0x2e, 0x21, 0x2d, 0x0e, 0x25, 0x25, 0x24, 0xea, 0x2f, 0x15, 0x98, 0x0f, 0x4b, 0xdb, - 0xa6, 0x63, 0x0e, 0xbd, 0x06, 0xd3, 0x36, 0x0e, 0x9e, 0x3a, 0xde, 0xe3, 0xd1, 0x75, 0x13, 0x94, - 0xe8, 0x65, 0x28, 0xba, 0x5c, 0x23, 0x43, 0x19, 0x08, 0x15, 0x21, 0xb6, 0xdc, 0x0e, 0xd5, 0xd0, - 0x70, 0x62, 0xcb, 0xed, 0x90, 0x11, 0x13, 0x18, 0x5e, 0x17, 0xd3, 0xfe, 0x60, 0xa3, 0xaf, 0xcc, - 0x12, 0x9a, 0x26, 0xba, 0x03, 0x73, 0x03, 0x1f, 0x7b, 0xb6, 0xaf, 0x0b, 0xff, 0x31, 0x49, 0x6d, - 0x42, 0x12, 0x2a, 0xe9, 0x5d, 0xab, 0x32, 0x86, 0x6d, 0xee, 0x60, 0x54, 0x80, 0xa6, 0x1d, 0xbc, - 0x71, 0xfd, 0x7d, 0xa3, 0x37, 0xc0, 0x68, 0x11, 0x26, 0x9f, 0x90, 0x1f, 0xb4, 0xe5, 0x45, 0x8d, - 0x7d, 0xa8, 0xdf, 0x9b, 0x84, 0x93, 0x0f, 0xc9, 0x18, 0x6b, 0x1b, 0xb6, 0xf9, 0xc8, 0x79, 0xd6, - 0x26, 0x26, 0x69, 0x05, 0x07, 0x6b, 0x8e, 0x1d, 0xe0, 0x67, 0x01, 0x7a, 0x00, 0x0b, 0xb6, 0x90, - 0x1f, 0x56, 0x44, 0xa1, 0x15, 0x39, 0x99, 0xd9, 0x3a, 0x56, 0xb8, 0x56, 0xb3, 0xe5, 0x04, 0x1f, - 0xdd, 0x8d, 0x46, 0xb9, 0x90, 0x53, 0x48, 0x37, 0xa8, 0xbd, 0x41, 0x6b, 0xc3, 0xa5, 0x08, 0x07, - 0x20, 0x64, 0xbc, 0x01, 0xc4, 0xef, 0xeb, 0x86, 0xaf, 0x93, 0x96, 0x52, 0x2d, 0xcf, 0x5c, 0x5b, - 0x92, 0xac, 0x20, 0x6c, 0xb0, 0x56, 0xf1, 0x06, 0x76, 0xc3, 0x27, 0x1a, 0x42, 0x37, 0xe8, 0x1c, - 0x42, 0xf8, 0xba, 0x9e, 0x33, 0x70, 0xe9, 0xf8, 0xcb, 0x67, 0x04, 0xca, 0x78, 0x9f, 0x50, 0xd2, - 0xa9, 0x85, 0xfb, 0x29, 0xdd, 0x73, 0x9c, 0x60, 0xcf, 0x17, 0xbe, 0x49, 0x24, 0x6b, 0x34, 0x15, - 0x5d, 0x81, 0x63, 0xfe, 0xc0, 0x75, 0x7b, 0xb8, 0x8f, 0xed, 0xc0, 0xe8, 0xb1, 0x82, 0x48, 0x9f, - 0x15, 0xcf, 0x17, 0x35, 0x14, 0xcf, 0xa2, 0x82, 0x7d, 0xf4, 0x08, 0xea, 0x19, 0x0c, 0xba, 0xeb, - 0xf4, 0xac, 0xce, 0xc1, 0xca, 0x0c, 0x35, 0xa0, 0xe7, 0x25, 0xd5, 0xa4, 0x64, 0xb4, 0x28, 0xad, - 0xb6, 0xe2, 0xe7, 0xe4, 0xa0, 0x55, 0x00, 0xd7, 0xb3, 0x9e, 0x58, 0x3d, 0xdc, 0xc5, 0xe6, 0xca, - 0x14, 0xad, 0x78, 0x2c, 0x05, 0xbd, 0x4e, 0xa6, 0xb4, 0x4e, 0xc7, 0xe9, 0xbb, 0xdc, 0xe1, 0x48, - 0x7d, 0x2a, 0x6c, 0xa1, 0xe5, 0x39, 0x7b, 0x56, 0x0f, 0x6b, 0x82, 0x16, 0xbd, 0x09, 0x65, 0xc3, - 0x75, 0x0d, 0xaf, 0xef, 0x78, 0xd4, 0xe5, 0x8c, 0xe0, 0x0b, 0x89, 0xd1, 0x75, 0x58, 0xe4, 0x32, - 0x74, 0x97, 0x65, 0x32, 0xbf, 0x35, 0x4d, 0x6c, 0xff, 0x6e, 0x61, 0x45, 0xd1, 0x10, 0xcf, 0xe7, - 0xbc, 0xd4, 0x83, 0xfd, 0xad, 0x02, 0xf3, 0x09, 0x99, 0xe8, 0x3d, 0x98, 0x15, 0x12, 0x82, 0x03, - 0x57, 0xb8, 0x9a, 0x97, 0x86, 0x54, 0xe3, 0x32, 0xff, 0xbb, 0x73, 0xe0, 0x62, 0x3a, 0x2d, 0x88, - 0x0f, 0xf4, 0x1c, 0x54, 0x7b, 0x4e, 0xc7, 0xe8, 0x51, 0xcf, 0xe8, 0xe1, 0x3d, 0x3e, 0x79, 0xcd, - 0x86, 0x89, 0x1a, 0xde, 0x53, 0xef, 0xc0, 0x4c, 0x4c, 0x00, 0x42, 0x30, 0xa7, 0xb1, 0xa2, 0xd6, - 0xf1, 0x9e, 0x31, 0xe8, 0x05, 0xb5, 0x09, 0x34, 0x07, 0xb0, 0x6b, 0x77, 0x48, 0xb0, 0x60, 0x63, - 0xb3, 0xa6, 0xa0, 0x2a, 0x54, 0x1e, 0x0a, 0x11, 0xb5, 0x82, 0xfa, 0xdd, 0x22, 0x1c, 0xa7, 0xc6, - 0xdd, 0x72, 0x4c, 0x3e, 0xda, 0x78, 0x64, 0xf1, 0x1c, 0x54, 0x3b, 0xb4, 0xfb, 0x75, 0xd7, 0xf0, - 0xb0, 0x1d, 0xf0, 0xf9, 0x75, 0x96, 0x25, 0xb6, 0x68, 0x1a, 0xd2, 0xa0, 0xe6, 0xf3, 0x16, 0xe9, - 0x1d, 0x36, 0x3a, 0xf9, 0x00, 0x92, 0x5a, 0x3d, 0x64, 0x30, 0x6b, 0xf3, 0x7e, 0x6a, 0x74, 0x4f, - 0xfb, 0x07, 0x7e, 0x27, 0xe8, 0x09, 0x8f, 0x7a, 0x39, 0x25, 0x2a, 0x59, 0xd9, 0xcb, 0x6d, 0xc6, - 0xb0, 0x61, 0x07, 0xde, 0x81, 0x26, 0xd8, 0xd1, 0xbb, 0x50, 0x76, 0x9e, 0x60, 0x6f, 0x1f, 0x1b, - 0xcc, 0x93, 0xcd, 0x5c, 0x7b, 0x2e, 0x25, 0x6a, 0x4d, 0x4c, 0x26, 0x1a, 0xf6, 0x9d, 0x81, 0xd7, - 0xc1, 0xbe, 0x16, 0x32, 0xa1, 0x06, 0x54, 0x3c, 0x91, 0xcc, 0x3d, 0xdd, 0x58, 0x12, 0x22, 0xae, - 0xfa, 0x2d, 0x98, 0x8d, 0x57, 0x0e, 0xd5, 0xa0, 0xf8, 0x18, 0x1f, 0x70, 0x65, 0x92, 0x9f, 0x91, - 0x0f, 0x64, 0x3d, 0xcc, 0x3e, 0x6e, 0x15, 0x6e, 0x28, 0xaa, 0x07, 0x28, 0x6a, 0xe9, 0x26, 0x0e, - 0x0c, 0xd3, 0x08, 0x0c, 0x84, 0xa0, 0x44, 0x63, 0x4e, 0x26, 0x82, 0xfe, 0x26, 0x52, 0x07, 0x7c, - 0x3a, 0xa8, 0x68, 0xe4, 0x27, 0x3a, 0x05, 0x95, 0xd0, 0xdb, 0xf1, 0xc0, 0x33, 0x4a, 0x20, 0x01, - 0xa0, 0x11, 0x04, 0xb8, 0xef, 0x06, 0x54, 0x31, 0x55, 0x4d, 0x7c, 0xaa, 0xbf, 0x36, 0x09, 0xb5, - 0x94, 0x2d, 0xdc, 0x82, 0x72, 0x9f, 0x17, 0xcf, 0xfd, 0xec, 0xaa, 0x14, 0x05, 0xa6, 0x2a, 0xa9, - 0x85, 0xf4, 0x24, 0xc8, 0x22, 0xb6, 0x16, 0x0b, 0x93, 0xc3, 0x6f, 0x66, 0xe4, 0x5d, 0xdd, 0xb4, - 0x3c, 0xdc, 0x09, 0x1c, 0xef, 0x80, 0x57, 0x74, 0xb6, 0xe7, 0x74, 0xd7, 0x45, 0x1a, 0xba, 0x0e, - 0x60, 0xda, 0xbe, 0x4e, 0x6d, 0xb8, 0xcb, 0xfb, 0x51, 0x9a, 0x64, 0xc3, 0x68, 0x58, 0xab, 0x98, - 0xb6, 0xcf, 0xab, 0x7c, 0x1b, 0xaa, 0x24, 0xb4, 0xd4, 0xfb, 0x22, 0x3e, 0x9a, 0xa4, 0xb6, 0xb4, - 0x2c, 0xd7, 0x3b, 0x0c, 0x74, 0xb5, 0x59, 0x37, 0xfa, 0xf0, 0xd1, 0x1d, 0x98, 0xa2, 0xd1, 0x9d, - 0x88, 0xc7, 0xce, 0x67, 0x37, 0x97, 0x5b, 0xdf, 0x43, 0x4a, 0xca, 0x8c, 0x8f, 0xf3, 0xa1, 0x6d, - 0x98, 0x31, 0x6c, 0xdb, 0x09, 0x0c, 0x36, 0xab, 0xb0, 0xe8, 0xec, 0xd2, 0x50, 0x31, 0x8d, 0x88, - 0x9e, 0xc9, 0x8a, 0x4b, 0x40, 0x6f, 0xc2, 0x24, 0x9d, 0x76, 0xf8, 0x3c, 0x71, 0x6e, 0xe4, 0xa0, - 0xd0, 0x18, 0x3d, 0x7a, 0x1b, 0xa6, 0x9f, 0x5a, 0xb6, 0xe9, 0x3c, 0xf5, 0xb9, 0x3f, 0x95, 0x4c, - 0xf8, 0x2b, 0x2c, 0x2b, 0xc5, 0x2c, 0x78, 0xea, 0x37, 0x61, 0x26, 0xd6, 0xbe, 0xc3, 0xd8, 0x6f, - 0xfd, 0x1d, 0xa8, 0x25, 0xdb, 0x74, 0x28, 0xfb, 0x1f, 0xc0, 0xa2, 0x36, 0xb0, 0xa3, 0xaa, 0x89, - 0x55, 0xdc, 0x75, 0x98, 0xe2, 0xd6, 0xc0, 0x8c, 0xf1, 0xd4, 0x30, 0xb5, 0x6a, 0x9c, 0x36, 0xbe, - 0x20, 0xdb, 0x37, 0x6c, 0xb3, 0x87, 0x3d, 0x5e, 0xa2, 0x58, 0x90, 0x3d, 0x60, 0xa9, 0xea, 0xdb, - 0x70, 0x3c, 0x51, 0x2c, 0x5f, 0x0f, 0x3e, 0x0f, 0x73, 0xae, 0x63, 0xea, 0x3e, 0x4b, 0x16, 0xf1, - 0x6a, 0x85, 0xd8, 0x8e, 0xa0, 0x6d, 0x9a, 0x84, 0xbd, 0x1d, 0x38, 0x6e, 0xba, 0xda, 0xe3, 0xb1, - 0xaf, 0xc0, 0x52, 0x92, 0x9d, 0x15, 0xaf, 0xbe, 0x0b, 0xcb, 0x1a, 0xee, 0x3b, 0x4f, 0xf0, 0x51, - 0x45, 0xd7, 0x61, 0x25, 0x2d, 0x80, 0x0b, 0xff, 0x00, 0x96, 0xa3, 0xd4, 0x76, 0x60, 0x04, 0x03, - 0xff, 0x50, 0xc2, 0xf9, 0x62, 0xf9, 0x91, 0xe3, 0xb3, 0x8e, 0x2c, 0x6b, 0xe2, 0x53, 0x5d, 0x86, - 0xc9, 0x96, 0x63, 0x36, 0x5b, 0x68, 0x0e, 0x0a, 0x96, 0xcb, 0x99, 0x0b, 0x96, 0xab, 0x76, 0xe2, - 0x65, 0x6e, 0xb1, 0xc8, 0x96, 0x15, 0x9d, 0x24, 0x45, 0x37, 0x60, 0xce, 0x30, 0x4d, 0x8b, 0x18, - 0x92, 0xd1, 0xd3, 0x2d, 0x57, 0x04, 0xe6, 0x0b, 0x89, 0xae, 0x6f, 0xb6, 0xb4, 0x6a, 0x44, 0xd8, - 0x74, 0x7d, 0xf5, 0x2e, 0x54, 0xa2, 0x45, 0xc0, 0xeb, 0xd1, 0xc2, 0xb7, 0x30, 0x3a, 0x5e, 0x0c, - 0x57, 0xc5, 0x5b, 0xa9, 0x49, 0x92, 0x57, 0xf3, 0x75, 0x80, 0xd0, 0xa9, 0x8a, 0x10, 0xf4, 0x78, - 0xa6, 0x48, 0x2d, 0x46, 0xa8, 0xfe, 0x4b, 0x29, 0xee, 0x64, 0x63, 0x4d, 0x36, 0xc3, 0x26, 0x9b, - 0x92, 0xd3, 0x2d, 0x1c, 0xd2, 0xe9, 0xbe, 0x0a, 0x93, 0x7e, 0x60, 0x04, 0x98, 0xc7, 0xfc, 0x27, - 0xb3, 0x19, 0x49, 0xc1, 0x58, 0x63, 0x94, 0xe8, 0x34, 0x40, 0xc7, 0xc3, 0x46, 0x80, 0x4d, 0xdd, - 0x60, 0xb3, 0x42, 0x51, 0xab, 0xf0, 0x94, 0x46, 0x40, 0xbc, 0x88, 0x58, 0xa5, 0x64, 0x4c, 0x84, - 0x39, 0xdd, 0x18, 0xad, 0x57, 0x42, 0xef, 0x35, 0x35, 0xd2, 0x7b, 0x71, 0x56, 0xee, 0xbd, 0x22, - 0x4f, 0x3c, 0x3d, 0xcc, 0x13, 0x33, 0xa6, 0x71, 0x3c, 0x71, 0x79, 0x98, 0x27, 0xe6, 0x62, 0x86, - 0x7b, 0xe2, 0x0c, 0x47, 0x52, 0xc9, 0x72, 0x24, 0x9f, 0xa7, 0xeb, 0xfc, 0x8b, 0x02, 0xac, 0xa4, - 0xc7, 0x33, 0xf7, 0x63, 0xd7, 0x61, 0xca, 0xa7, 0x29, 0xc3, 0xfd, 0x27, 0xe7, 0xe2, 0xb4, 0xe8, - 0x2e, 0x94, 0x2c, 0x7b, 0xcf, 0xe1, 0x03, 0xef, 0xf2, 0x50, 0x1e, 0x5e, 0xd2, 0xe5, 0xa6, 0xbd, - 0xe7, 0x30, 0x0d, 0x52, 0x5e, 0xf4, 0x10, 0x8e, 0x85, 0xab, 0x77, 0x5f, 0x67, 0x82, 0xb1, 0x88, - 0xf3, 0x24, 0x2b, 0x0d, 0xa3, 0x2a, 0x2e, 0x11, 0x45, 0x7c, 0x6d, 0xce, 0x46, 0x62, 0x1c, 0x42, - 0xee, 0x07, 0x46, 0xdf, 0x15, 0x16, 0x1b, 0x26, 0xd4, 0xdf, 0x84, 0x4a, 0x58, 0xfc, 0xa1, 0x74, - 0xd7, 0x84, 0xc5, 0xc4, 0x18, 0x61, 0x8b, 0xd5, 0x70, 0x50, 0x29, 0xe3, 0x0e, 0x2a, 0xf5, 0x17, - 0x4a, 0x7c, 0xa0, 0xdf, 0xb3, 0x7a, 0x01, 0xf6, 0x52, 0x03, 0xfd, 0x0d, 0x21, 0x97, 0x8d, 0xf2, - 0xb3, 0x43, 0xe4, 0xb2, 0xb5, 0x20, 0x1f, 0xb1, 0xef, 0xc3, 0x1c, 0x35, 0x71, 0xdd, 0xc7, 0x3d, - 0x1a, 0x2b, 0x71, 0x3d, 0x5e, 0xc9, 0x16, 0xc0, 0x4a, 0x67, 0x43, 0xa4, 0xcd, 0x39, 0x58, 0xdf, - 0x54, 0x7b, 0xf1, 0xb4, 0xfa, 0x1d, 0x40, 0x69, 0xa2, 0x43, 0x69, 0x70, 0x93, 0xf8, 0x4b, 0x3f, - 0xc8, 0x9c, 0xb9, 0xf7, 0x68, 0x35, 0x86, 0x5b, 0x1e, 0xab, 0xaa, 0xc6, 0x69, 0xd5, 0x7f, 0x2e, - 0x02, 0x44, 0x99, 0x5f, 0x70, 0x47, 0x79, 0x2b, 0x74, 0x58, 0x2c, 0xe2, 0x54, 0xb3, 0x45, 0x66, - 0xba, 0xaa, 0xa6, 0xec, 0xaa, 0x58, 0xec, 0xf9, 0x52, 0x8e, 0x80, 0x43, 0x3b, 0xa9, 0xe9, 0x2f, - 0x9a, 0x93, 0xba, 0x07, 0x4b, 0x49, 0x33, 0xe1, 0x1e, 0xea, 0x15, 0x98, 0xb4, 0x02, 0xdc, 0x67, - 0x9b, 0xda, 0x89, 0x4d, 0x91, 0x18, 0x39, 0x23, 0x52, 0xdf, 0x81, 0x25, 0xb9, 0xaf, 0x0e, 0x17, - 0xba, 0xa8, 0x0f, 0x93, 0xb1, 0x4f, 0xe4, 0x2a, 0xb9, 0x7d, 0x64, 0x6e, 0x2f, 0x25, 0x79, 0x18, - 0xa5, 0xfa, 0x63, 0x05, 0x8e, 0x27, 0xb2, 0x72, 0x06, 0xfe, 0xd7, 0x52, 0x03, 0x98, 0xf9, 0xd6, - 0xeb, 0x43, 0x4a, 0xf9, 0x0c, 0x47, 0xf1, 0x57, 0xa0, 0x2e, 0x77, 0x8f, 0xa4, 0xda, 0x9b, 0x89, - 0xa1, 0x7c, 0x6e, 0x64, 0xa5, 0xc3, 0xf1, 0xdc, 0x82, 0x93, 0x99, 0x82, 0xd3, 0x3a, 0x2f, 0x8e, - 0xa9, 0xf3, 0xff, 0x2c, 0xc4, 0x7d, 0x76, 0x23, 0x08, 0x3c, 0xeb, 0xd1, 0x20, 0xc0, 0x9f, 0x6e, - 0x50, 0xb5, 0x1e, 0x8e, 0x6c, 0xe6, 0x67, 0x5f, 0xc9, 0xe6, 0x8c, 0x4a, 0xcf, 0x1c, 0xe3, 0x6d, - 0x79, 0x8c, 0x97, 0xa8, 0xa8, 0x57, 0x47, 0x8a, 0x1a, 0x3a, 0xda, 0x3f, 0xcf, 0x41, 0xfc, 0x77, - 0x0a, 0xcc, 0x27, 0x7a, 0x05, 0xdd, 0x01, 0x30, 0xc2, 0xaa, 0x73, 0xfb, 0x38, 0x3b, 0xaa, 0x89, - 0x5a, 0x8c, 0x87, 0xcc, 0x89, 0x2c, 0x5e, 0xcc, 0x98, 0x13, 0x33, 0xe2, 0xc5, 0x30, 0x5c, 0xbc, - 0x1d, 0x2d, 0x76, 0xd9, 0x46, 0xac, 0x3a, 0x74, 0xb1, 0xcb, 0x78, 0x05, 0x8b, 0xfa, 0xeb, 0x05, - 0x58, 0xcc, 0x92, 0x8e, 0x5e, 0x84, 0x62, 0xc7, 0x1d, 0xf0, 0x96, 0x48, 0x27, 0x60, 0x6b, 0xee, - 0x60, 0xd7, 0x37, 0xba, 0x58, 0x23, 0x04, 0xe8, 0x0a, 0x4c, 0xf5, 0x71, 0xdf, 0xf1, 0x0e, 0x78, - 0xbd, 0xa5, 0xed, 0x86, 0x4d, 0x9a, 0xc3, 0xa8, 0x39, 0x19, 0xba, 0x16, 0x85, 0xd5, 0xac, 0xbe, - 0x2b, 0xd2, 0xea, 0x81, 0x65, 0x31, 0x96, 0x30, 0x96, 0xbe, 0x06, 0xd3, 0xae, 0xe7, 0x74, 0xb0, - 0xef, 0xf3, 0xdd, 0x90, 0x95, 0xc4, 0x91, 0x1c, 0xc9, 0xe2, 0x3c, 0x9c, 0x10, 0xdd, 0x02, 0x88, - 0x02, 0x28, 0x3e, 0x33, 0xd5, 0x73, 0xe3, 0x2d, 0x5f, 0x8b, 0x51, 0xab, 0x3f, 0x2c, 0xc0, 0x52, - 0xb6, 0xe6, 0xd0, 0xa5, 0xb8, 0x5e, 0x4e, 0x66, 0xa8, 0x5a, 0x56, 0xcf, 0x1b, 0x09, 0xf5, 0xac, - 0x66, 0x70, 0x64, 0x69, 0xe9, 0x66, 0x52, 0x4b, 0x67, 0x32, 0x18, 0xb3, 0x95, 0x75, 0x33, 0xa9, - 0xac, 0x2c, 0xd6, 0x6c, 0x9d, 0x35, 0x32, 0x74, 0x76, 0x2e, 0xab, 0x8d, 0xf9, 0xaa, 0xfb, 0x6b, - 0x05, 0x66, 0xe3, 0xf5, 0x92, 0x43, 0x56, 0x25, 0x11, 0xb2, 0xa2, 0x2d, 0x58, 0x30, 0xd9, 0xce, - 0xad, 0x6e, 0xd9, 0x01, 0xf6, 0xf6, 0x8c, 0x8e, 0x88, 0x0a, 0xcf, 0x65, 0xd8, 0x45, 0x53, 0xd0, - 0xb0, 0x8a, 0xd7, 0x38, 0x6f, 0x98, 0x4c, 0x5a, 0x10, 0xca, 0x11, 0x5e, 0x6b, 0x0c, 0x41, 0x31, - 0x26, 0xf5, 0x9f, 0x14, 0x38, 0x96, 0xa1, 0xe0, 0x11, 0x0d, 0xd9, 0xcd, 0x6f, 0xc8, 0xf9, 0xfc, - 0xae, 0x1b, 0xd9, 0x9e, 0x07, 0x19, 0xed, 0x19, 0x5f, 0x5e, 0xbc, 0x59, 0xbf, 0x54, 0xe0, 0x78, - 0x26, 0x55, 0xe6, 0xf6, 0xea, 0x35, 0x28, 0x7b, 0xcf, 0xf4, 0x47, 0x07, 0x01, 0xf6, 0xb3, 0x06, - 0xf6, 0x6e, 0xec, 0x9c, 0x66, 0xda, 0x7b, 0x76, 0x97, 0xd0, 0xa1, 0xeb, 0x50, 0xf1, 0x9e, 0xe9, - 0xd8, 0xf3, 0x1c, 0x4f, 0xf8, 0xa2, 0x5c, 0xa6, 0xb2, 0xf7, 0x6c, 0x83, 0x12, 0x92, 0x92, 0x02, - 0x51, 0x52, 0x69, 0x44, 0x49, 0x41, 0x54, 0x52, 0x10, 0x96, 0x34, 0x39, 0xa2, 0xa4, 0x80, 0x97, - 0xa4, 0xfe, 0x51, 0x01, 0x4e, 0x0d, 0x53, 0xd7, 0xa7, 0xa6, 0x88, 0x0d, 0x40, 0xde, 0x33, 0xdd, - 0x35, 0x3a, 0x8f, 0x71, 0xe0, 0xeb, 0xa6, 0xe7, 0xb8, 0x2e, 0x36, 0x47, 0x69, 0xa4, 0xe6, 0x3d, - 0x6b, 0x31, 0x8e, 0x75, 0xc6, 0x70, 0x24, 0xcd, 0x6c, 0x00, 0x0a, 0xd2, 0x45, 0x8f, 0x50, 0x51, - 0x2d, 0x48, 0x14, 0xad, 0x7e, 0x04, 0xb3, 0x71, 0x0f, 0x31, 0xc2, 0xf6, 0x6f, 0x43, 0x95, 0x7b, - 0x10, 0xbd, 0xe3, 0x0c, 0xec, 0x60, 0x94, 0xa2, 0x66, 0x39, 0xf5, 0x1a, 0x21, 0x56, 0xbf, 0x11, - 0x0e, 0xb7, 0xcf, 0xac, 0xc8, 0xff, 0x57, 0x80, 0x4a, 0x78, 0x8e, 0x4f, 0x66, 0x7a, 0x76, 0xda, - 0xcf, 0xfa, 0x9d, 0x1f, 0xeb, 0x3f, 0x90, 0xa3, 0x16, 0x16, 0xa7, 0xbe, 0x98, 0x89, 0x04, 0x18, - 0xb1, 0x30, 0xb9, 0x0a, 0x8b, 0x03, 0x1f, 0x7b, 0xba, 0xef, 0xe2, 0x8e, 0xb5, 0x67, 0x61, 0x53, - 0x67, 0xc5, 0x21, 0x5a, 0x1c, 0x22, 0x79, 0x6d, 0x91, 0x45, 0x65, 0x66, 0x2d, 0x65, 0x8e, 0x65, - 0x2e, 0x65, 0x3e, 0x69, 0x28, 0x73, 0x0d, 0xca, 0x5f, 0xc2, 0x07, 0x6c, 0xb1, 0x3f, 0x26, 0x9f, - 0xfa, 0x9d, 0x12, 0x2c, 0xe7, 0x1c, 0x03, 0xd1, 0x95, 0xa2, 0x3b, 0xd0, 0x5d, 0xec, 0x59, 0x8e, - 0x29, 0x7a, 0xad, 0xe3, 0x0e, 0x5a, 0x34, 0x01, 0x9d, 0x04, 0xf2, 0xa1, 0x7f, 0x63, 0xe0, 0xf0, - 0x60, 0xb4, 0xa8, 0x95, 0x3b, 0xee, 0xe0, 0xcb, 0xe4, 0x5b, 0xf0, 0xfa, 0xfb, 0x86, 0x87, 0x99, - 0xff, 0x60, 0xbc, 0x6d, 0x9a, 0x80, 0x5e, 0x85, 0xe3, 0x6c, 0x6e, 0xd4, 0x7b, 0x56, 0xdf, 0x22, - 0x5e, 0x36, 0x36, 0x34, 0x8a, 0x1a, 0x62, 0x99, 0x0f, 0x49, 0x5e, 0xd3, 0x66, 0x83, 0x41, 0x85, - 0xaa, 0xe3, 0xf4, 0x75, 0xbf, 0xe3, 0x78, 0x58, 0x37, 0xcc, 0x8f, 0xe8, 0x38, 0x28, 0x6a, 0x33, - 0x8e, 0xd3, 0x6f, 0x93, 0xb4, 0x86, 0xf9, 0x11, 0x3a, 0x03, 0x33, 0x1d, 0x77, 0xe0, 0xe3, 0x40, - 0x27, 0x7f, 0xe8, 0x66, 0x5d, 0x45, 0x03, 0x96, 0xb4, 0xe6, 0x0e, 0xfc, 0x18, 0x41, 0x9f, 0x2c, - 0xcf, 0xa6, 0xe3, 0x04, 0x9b, 0xb8, 0x4f, 0x4f, 0xd4, 0xf7, 0x07, 0x5d, 0xec, 0x1a, 0x5d, 0xcc, - 0xaa, 0x26, 0x76, 0xdc, 0xa4, 0x13, 0xf5, 0x07, 0x9c, 0x84, 0x56, 0x50, 0x9b, 0xdb, 0x8f, 0x7f, - 0xfa, 0xe8, 0x3d, 0x98, 0x1e, 0xd8, 0xd4, 0x00, 0x56, 0x2a, 0x94, 0xf7, 0xea, 0x18, 0x87, 0x6e, - 0x97, 0x77, 0x19, 0x0b, 0x3f, 0x03, 0xe4, 0x02, 0xd0, 0x2d, 0xa8, 0x73, 0x45, 0xf9, 0x4f, 0x0d, - 0x37, 0xa9, 0x2d, 0xa0, 0x2a, 0x58, 0x62, 0x14, 0xed, 0xa7, 0x86, 0x1b, 0xd7, 0x58, 0xfd, 0x16, - 0xcc, 0xc6, 0x85, 0x1e, 0xca, 0x96, 0xee, 0x42, 0x55, 0x6a, 0x24, 0xe9, 0x6d, 0xaa, 0x14, 0xdf, - 0xfa, 0xa6, 0x18, 0x5b, 0x65, 0x92, 0xd0, 0xb6, 0xbe, 0x49, 0x71, 0x10, 0xb4, 0x66, 0x54, 0x4e, - 0x49, 0x63, 0x1f, 0xaa, 0x01, 0x55, 0x09, 0x7a, 0x40, 0x5c, 0x32, 0xc5, 0x18, 0x70, 0x97, 0x4c, - 0x7e, 0x93, 0x34, 0xcf, 0xe9, 0x89, 0x1a, 0xd0, 0xdf, 0x24, 0x8d, 0x1e, 0x40, 0xb3, 0xe3, 0x34, - 0xfa, 0x9b, 0x16, 0x81, 0x9f, 0x70, 0x18, 0x53, 0x45, 0x63, 0x1f, 0xea, 0xef, 0x28, 0x00, 0x6b, - 0x86, 0x6b, 0x3c, 0xb2, 0x7a, 0x56, 0x70, 0x80, 0x2e, 0x40, 0xcd, 0x30, 0x4d, 0xbd, 0x23, 0x52, - 0x2c, 0x2c, 0x70, 0x65, 0xf3, 0x86, 0x69, 0xae, 0xc5, 0x92, 0xd1, 0xcb, 0xb0, 0x40, 0x1c, 0xaa, - 0x4c, 0xcb, 0x80, 0x66, 0x35, 0x92, 0x21, 0x11, 0xdf, 0x80, 0x15, 0x22, 0xd7, 0xe8, 0x3f, 0xb2, - 0xb0, 0x1d, 0xc8, 0x3c, 0x0c, 0x81, 0xb6, 0x64, 0x98, 0x66, 0x83, 0x65, 0xc7, 0x39, 0xd5, 0xdf, - 0x9b, 0x86, 0xd3, 0x72, 0x8f, 0x27, 0xd1, 0x20, 0xb7, 0x60, 0x36, 0x51, 0xdf, 0x14, 0x8e, 0x22, - 0x6a, 0xa1, 0x26, 0xd1, 0x26, 0xb0, 0x08, 0x85, 0x14, 0x16, 0x21, 0x13, 0x69, 0x52, 0xfc, 0x94, - 0x90, 0x26, 0xa5, 0x4f, 0x88, 0x34, 0x99, 0x3c, 0x2a, 0xd2, 0x64, 0x76, 0x6c, 0xa4, 0xc9, 0x8b, - 0xd4, 0xf5, 0x8a, 0x12, 0x69, 0x38, 0xc0, 0x7c, 0x42, 0x35, 0x94, 0x6e, 0x0b, 0xb0, 0x63, 0x02, - 0x91, 0x32, 0x7d, 0x18, 0x44, 0x4a, 0xf9, 0x88, 0x88, 0x94, 0x85, 0x4f, 0x05, 0x91, 0x72, 0x16, - 0x66, 0x6d, 0x47, 0xb7, 0xf1, 0x53, 0x9d, 0x74, 0xbd, 0x4f, 0x71, 0x2e, 0x65, 0x0d, 0x6c, 0x67, - 0x0b, 0x3f, 0x6d, 0x91, 0x14, 0x74, 0x0e, 0x66, 0xfb, 0x86, 0xff, 0x18, 0x9b, 0x14, 0x1a, 0xe2, - 0xaf, 0x54, 0xa9, 0xcd, 0xce, 0xb0, 0xb4, 0x16, 0x49, 0x42, 0x2f, 0x40, 0xd8, 0x56, 0x4e, 0x34, - 0x47, 0x89, 0xaa, 0x22, 0x95, 0x91, 0xc5, 0xd0, 0x2d, 0xf3, 0x47, 0x44, 0xb7, 0xd4, 0x0e, 0x83, - 0x6e, 0xb9, 0x04, 0x35, 0xf1, 0x5b, 0xc0, 0x5b, 0xd8, 0x69, 0x05, 0x45, 0xb6, 0xcc, 0x8b, 0x3c, - 0x01, 0x61, 0xc9, 0x03, 0xc3, 0xc0, 0x50, 0x30, 0xcc, 0x1f, 0x2b, 0x7c, 0xdd, 0x1c, 0x0e, 0x52, - 0x7e, 0x0a, 0x2f, 0x01, 0x28, 0x94, 0xa3, 0x00, 0x28, 0xd0, 0x4e, 0x2e, 0xc4, 0xe4, 0x42, 0xbe, - 0xa4, 0x51, 0x20, 0x13, 0xd5, 0x02, 0x24, 0x73, 0xd0, 0x81, 0xc2, 0x61, 0x14, 0x6c, 0xa6, 0xa6, - 0x30, 0x8a, 0x1a, 0x14, 0xbb, 0x1c, 0x58, 0x51, 0xd4, 0xc8, 0xcf, 0x3c, 0x0b, 0x2e, 0xe6, 0x59, - 0xb0, 0xba, 0x19, 0xae, 0x9e, 0x3f, 0x0d, 0xe4, 0x9f, 0xfa, 0x6f, 0x0a, 0x9c, 0xe6, 0xf2, 0x72, - 0xe0, 0x71, 0x19, 0x83, 0x56, 0xc9, 0x19, 0xb4, 0x1d, 0x0f, 0x9b, 0xd8, 0x0e, 0x2c, 0xa3, 0x47, - 0xe3, 0x31, 0x71, 0x20, 0x1e, 0x25, 0xd3, 0x90, 0xf0, 0x1c, 0xcc, 0x32, 0x10, 0x2d, 0x5f, 0x48, - 0x33, 0xac, 0xec, 0x0c, 0xc5, 0xd1, 0xf2, 0xb5, 0xf2, 0x76, 0x96, 0xa3, 0x2c, 0xe5, 0xee, 0xc0, - 0x8c, 0xf4, 0x97, 0xaa, 0x03, 0xcb, 0x39, 0xd0, 0x84, 0x4c, 0x8b, 0x50, 0xd2, 0x16, 0x31, 0x54, - 0x49, 0x69, 0x8b, 0xf8, 0x8e, 0x02, 0x67, 0x52, 0x0b, 0xfa, 0xcf, 0x5f, 0xb3, 0xea, 0x9f, 0x29, - 0xa1, 0xfd, 0x24, 0x47, 0xd7, 0x5a, 0x7a, 0x74, 0xbd, 0x30, 0x6c, 0x7f, 0x22, 0x73, 0x7c, 0xbd, - 0x9f, 0x3b, 0xbe, 0x5e, 0x1e, 0xba, 0xd7, 0x31, 0x4a, 0x9f, 0x7f, 0x50, 0x80, 0x13, 0xb9, 0x15, - 0x48, 0x84, 0xb7, 0x4a, 0x32, 0xbc, 0xe5, 0xa1, 0x71, 0xb4, 0x98, 0x61, 0xa1, 0x31, 0x5d, 0xaf, - 0xf0, 0x18, 0x54, 0xef, 0x1b, 0xcf, 0xac, 0xfe, 0xa0, 0xcf, 0x63, 0x63, 0x22, 0x6e, 0x93, 0xa5, - 0x1c, 0x25, 0x38, 0xbe, 0x02, 0x8b, 0x6c, 0xde, 0xa2, 0xf1, 0x59, 0xc4, 0xc1, 0x62, 0xe4, 0x05, - 0x96, 0x47, 0x42, 0x35, 0xc1, 0xf0, 0x00, 0xaa, 0xc6, 0xde, 0x9e, 0x65, 0x53, 0xb5, 0xb1, 0x58, - 0xb9, 0x98, 0x83, 0xad, 0x59, 0x73, 0x07, 0xd4, 0x15, 0x34, 0x38, 0xbd, 0x36, 0x2b, 0x38, 0x49, - 0x48, 0xad, 0x7e, 0x39, 0xb4, 0xf4, 0x24, 0x21, 0x3a, 0x01, 0x65, 0xd6, 0x52, 0x9f, 0x79, 0x88, - 0x92, 0x36, 0x4d, 0x9b, 0xe9, 0x3f, 0x16, 0x1a, 0x62, 0x13, 0x3a, 0x03, 0x46, 0x13, 0x5a, 0xca, - 0xaf, 0x36, 0x60, 0x21, 0xd4, 0xf9, 0x50, 0xdc, 0x58, 0x0c, 0x07, 0x56, 0x90, 0x71, 0x60, 0x36, - 0x4c, 0xad, 0xe3, 0x27, 0x56, 0x07, 0x7f, 0x2a, 0x48, 0xfb, 0xb3, 0x30, 0xe3, 0x62, 0xaf, 0x6f, - 0xf9, 0x7e, 0x18, 0x41, 0x55, 0xb4, 0x78, 0x92, 0x7a, 0x06, 0x2a, 0x6b, 0xeb, 0x4d, 0x5e, 0x64, - 0x46, 0x55, 0xd5, 0x7f, 0x9f, 0x82, 0xf9, 0xe4, 0x00, 0xb8, 0x99, 0xc2, 0xa5, 0x9d, 0xce, 0xdc, - 0xd3, 0xcc, 0xd8, 0xcc, 0x0f, 0x41, 0xed, 0x85, 0x31, 0x40, 0xed, 0x2b, 0x30, 0xdd, 0x71, 0xfa, - 0x7d, 0xc3, 0x36, 0xc5, 0x7d, 0x09, 0xfe, 0x49, 0x6a, 0x6a, 0x78, 0x5d, 0xb6, 0x8d, 0x5f, 0xd1, - 0xe8, 0x6f, 0x62, 0x9f, 0xc4, 0x53, 0x5b, 0x36, 0x45, 0xb6, 0x51, 0x13, 0xaa, 0x68, 0xc0, 0x93, - 0xd6, 0x2d, 0x0f, 0x9d, 0x87, 0x12, 0xb6, 0x9f, 0x08, 0x93, 0x91, 0xb6, 0x93, 0xc5, 0xfa, 0x53, - 0xa3, 0x14, 0xe8, 0x02, 0x4c, 0xf5, 0x89, 0xcd, 0x0b, 0xf4, 0xc3, 0x42, 0xea, 0x5e, 0x81, 0xc6, - 0x09, 0xd0, 0x2b, 0x30, 0x6d, 0x52, 0xed, 0x89, 0x05, 0x17, 0x92, 0x30, 0x72, 0x34, 0x4b, 0x13, - 0x24, 0xe8, 0xdd, 0xf0, 0x2c, 0xa3, 0x92, 0x3e, 0x64, 0x4c, 0xa8, 0x39, 0xf3, 0x18, 0x63, 0x4b, - 0xde, 0x10, 0x80, 0xf4, 0x89, 0x48, 0x52, 0xca, 0xf0, 0x6d, 0x81, 0x13, 0x50, 0xee, 0x39, 0x5d, - 0x66, 0x3d, 0x33, 0xec, 0xb2, 0x4d, 0xcf, 0xe9, 0x52, 0xe3, 0x59, 0x84, 0x49, 0x3f, 0x30, 0x2d, - 0x9b, 0xc6, 0xad, 0x65, 0x8d, 0x7d, 0x10, 0x0f, 0x42, 0x7f, 0xe8, 0x8e, 0xdd, 0xc1, 0x2b, 0x55, - 0x9a, 0x55, 0xa1, 0x29, 0xdb, 0x76, 0x87, 0xae, 0xdf, 0x83, 0xe0, 0x60, 0x65, 0x8e, 0xa6, 0x93, - 0x9f, 0xd1, 0x91, 0xc2, 0x7c, 0xce, 0x91, 0x42, 0xa2, 0xc2, 0x19, 0x47, 0x0a, 0xb5, 0xdc, 0x09, - 0x2d, 0xc9, 0x2b, 0x58, 0x48, 0xcc, 0xbe, 0xb6, 0xde, 0xd4, 0x45, 0xd7, 0x2c, 0xa4, 0xef, 0x08, - 0x84, 0x66, 0xaf, 0x41, 0xf8, 0xf3, 0x73, 0x3d, 0xd1, 0xf9, 0xa1, 0x02, 0x4b, 0x6b, 0xf4, 0x3c, - 0x3b, 0xe6, 0xb8, 0x0f, 0x03, 0x05, 0x7b, 0x2d, 0xc4, 0xe7, 0x65, 0x80, 0xac, 0x92, 0x9a, 0x12, - 0xf0, 0xbc, 0x35, 0x98, 0x13, 0x62, 0x39, 0x73, 0x71, 0x0c, 0x70, 0x5f, 0xd5, 0x8f, 0x7f, 0xaa, - 0xb7, 0x61, 0x39, 0x55, 0x73, 0x7e, 0xaa, 0x98, 0xbc, 0x4c, 0xc2, 0x2a, 0x1e, 0xbf, 0x4c, 0xa2, - 0xde, 0x82, 0xe3, 0xed, 0xc0, 0xf0, 0x82, 0x54, 0xb3, 0xc7, 0xe0, 0xa5, 0xb0, 0x3d, 0x99, 0x97, - 0x23, 0xeb, 0xda, 0xb0, 0xd8, 0x0e, 0x1c, 0xf7, 0x08, 0x42, 0x89, 0xdf, 0x21, 0x2d, 0x77, 0x06, - 0x62, 0x12, 0x14, 0x9f, 0xea, 0x32, 0x03, 0x19, 0xa6, 0x4b, 0x7b, 0x0b, 0x96, 0x18, 0xc6, 0xef, - 0x28, 0x8d, 0x38, 0x21, 0x10, 0x86, 0x69, 0xb9, 0xf7, 0xe1, 0x98, 0x74, 0xce, 0xc1, 0x31, 0x31, - 0x57, 0x65, 0x4c, 0x4c, 0xfe, 0x91, 0x52, 0x08, 0x89, 0xf9, 0xcd, 0x42, 0xcc, 0x8f, 0xe7, 0x1c, - 0x8c, 0xbf, 0x2e, 0x23, 0x62, 0xce, 0xe4, 0x4b, 0x95, 0x00, 0x31, 0x69, 0xeb, 0x2c, 0x66, 0x58, - 0xe7, 0x6e, 0xea, 0xd4, 0xbd, 0x94, 0x46, 0x34, 0x25, 0x6a, 0xf8, 0x99, 0x9c, 0xb7, 0x3f, 0x64, - 0xa8, 0x99, 0xb0, 0xe8, 0xf0, 0xa8, 0xfd, 0xb5, 0xc4, 0x51, 0xfb, 0xc9, 0x21, 0x35, 0x0d, 0x0f, - 0xd9, 0xbf, 0x5f, 0x82, 0x4a, 0x98, 0x97, 0xd2, 0x70, 0x5a, 0x55, 0x85, 0x0c, 0x55, 0xc5, 0xe7, - 0xd7, 0xe2, 0x11, 0xe7, 0xd7, 0xd2, 0x18, 0xf3, 0xeb, 0x49, 0xa8, 0xb0, 0x4b, 0x63, 0x1e, 0xde, - 0xe3, 0xf3, 0x65, 0x99, 0x26, 0x68, 0x78, 0x2f, 0x32, 0xb1, 0xa9, 0x31, 0x4d, 0x2c, 0x81, 0xd0, - 0x99, 0x4e, 0x22, 0x74, 0x6e, 0x86, 0x73, 0x5f, 0x39, 0x7d, 0x22, 0x16, 0x4a, 0xcc, 0x9c, 0xf5, - 0x12, 0xdb, 0xe0, 0x95, 0xf4, 0x36, 0x78, 0xc4, 0x3f, 0x72, 0xbe, 0x63, 0x4d, 0xb6, 0x4c, 0x7e, - 0x43, 0x6e, 0x9a, 0x7e, 0x37, 0xcd, 0xcf, 0xd3, 0xf5, 0x6f, 0x33, 0x44, 0x4e, 0xdc, 0x04, 0xb9, - 0xfb, 0x7c, 0x5d, 0x3a, 0x0c, 0x55, 0x32, 0xa6, 0xb1, 0xd0, 0x65, 0xc4, 0x0f, 0x40, 0x77, 0x61, - 0x29, 0x89, 0xe4, 0x3b, 0x94, 0xfb, 0xcb, 0x81, 0x14, 0xff, 0x2c, 0x1e, 0x0c, 0xe6, 0xe0, 0x67, - 0x6f, 0xa6, 0xa0, 0x1e, 0x63, 0x1b, 0xef, 0x55, 0x19, 0x15, 0x76, 0x68, 0x93, 0x4b, 0x81, 0xc2, - 0x68, 0xb0, 0x62, 0x78, 0x3c, 0x9b, 0x2d, 0x2a, 0x2a, 0x3c, 0xa5, 0x41, 0x57, 0x34, 0x24, 0xe2, - 0xf7, 0xf7, 0x59, 0xfe, 0x14, 0x5b, 0xd1, 0x88, 0xa4, 0x06, 0xdd, 0x3c, 0xc6, 0xcf, 0xac, 0x40, - 0xef, 0x38, 0x26, 0xa6, 0x06, 0x3d, 0xa9, 0x95, 0x49, 0xc2, 0x9a, 0x63, 0xe2, 0x68, 0xa8, 0x95, - 0x0f, 0x3b, 0xd4, 0x2a, 0x89, 0xa1, 0xb6, 0x04, 0x53, 0x1e, 0x36, 0x7c, 0xc7, 0xe6, 0x26, 0xc9, - 0xbf, 0x48, 0x47, 0xf4, 0xb1, 0xef, 0x93, 0x32, 0x78, 0x6c, 0xc6, 0x3f, 0x63, 0x71, 0xe4, 0xec, - 0x90, 0x38, 0x72, 0x08, 0x3a, 0x37, 0x11, 0x47, 0x56, 0x87, 0xc4, 0x91, 0x63, 0x81, 0x73, 0xa3, - 0x88, 0x79, 0x6e, 0x54, 0xc4, 0x1c, 0x0f, 0x39, 0xe7, 0xe5, 0x90, 0xf3, 0x76, 0x7c, 0x65, 0x5d, - 0x4b, 0x63, 0x15, 0x86, 0x2f, 0xa9, 0xe3, 0x63, 0x7b, 0x41, 0x1a, 0xdb, 0xe8, 0x12, 0xdf, 0xc1, - 0x47, 0xe9, 0xbd, 0x5f, 0x69, 0x2b, 0x8a, 0x6d, 0xee, 0x7f, 0x9e, 0xae, 0xe0, 0xef, 0x15, 0x58, - 0x4e, 0x0d, 0x5d, 0xee, 0x0c, 0x5e, 0x4b, 0x00, 0x88, 0x87, 0x22, 0x77, 0x05, 0x7e, 0xb8, 0x21, - 0xe1, 0x87, 0x2f, 0x0d, 0x63, 0xc9, 0x81, 0x0f, 0x1f, 0x1d, 0xd2, 0xfb, 0x6d, 0x05, 0x50, 0xc6, - 0x2e, 0xc4, 0x4d, 0xb1, 0x24, 0x38, 0xc4, 0xd6, 0x24, 0x5f, 0x15, 0xbc, 0x1b, 0xad, 0x0a, 0x0a, - 0x87, 0xd9, 0x79, 0x09, 0xb1, 0x46, 0x1b, 0x50, 0x95, 0x37, 0x1f, 0xaf, 0xcb, 0x95, 0x59, 0xcd, - 0xaf, 0x0c, 0x35, 0x10, 0x46, 0xac, 0xfe, 0xac, 0x00, 0x67, 0x76, 0x5d, 0x33, 0x11, 0xf2, 0xf2, - 0xc2, 0xc6, 0x77, 0xb5, 0x37, 0x65, 0xbc, 0xd5, 0x11, 0x35, 0x51, 0x3c, 0x8a, 0x26, 0xd0, 0xd7, - 0xb3, 0x10, 0x71, 0xb7, 0xa5, 0xb3, 0xeb, 0xe1, 0x0d, 0x1c, 0x01, 0x8e, 0xfb, 0xa4, 0x23, 0x41, - 0x85, 0xb3, 0xf9, 0x15, 0xe0, 0xe1, 0xf1, 0xff, 0x86, 0xf9, 0x8d, 0x67, 0xb8, 0xd3, 0x3e, 0xb0, - 0x3b, 0x87, 0xd0, 0x7a, 0x0d, 0x8a, 0x9d, 0xbe, 0xc9, 0x4f, 0xcd, 0xc8, 0xcf, 0x78, 0xc4, 0x5f, - 0x94, 0x23, 0x7e, 0x1d, 0x6a, 0x51, 0x09, 0x7c, 0x1c, 0x2e, 0x91, 0x71, 0x68, 0x12, 0x62, 0x22, - 0x7c, 0x56, 0xe3, 0x5f, 0x3c, 0x1d, 0x7b, 0xec, 0x86, 0x13, 0x4b, 0xc7, 0x9e, 0x27, 0x4f, 0x23, - 0x45, 0x79, 0x1a, 0x51, 0xbf, 0xab, 0xc0, 0x0c, 0x29, 0xe1, 0x13, 0xd5, 0x9f, 0x2f, 0xbb, 0x8b, - 0xd1, 0xb2, 0x3b, 0x5c, 0xbd, 0x97, 0xe2, 0xab, 0xf7, 0xa8, 0xe6, 0x93, 0x34, 0x39, 0x5d, 0xf3, - 0xa9, 0x30, 0x1d, 0x7b, 0x9e, 0x7a, 0x16, 0x66, 0x59, 0xdd, 0x78, 0xcb, 0x6b, 0x50, 0x1c, 0x78, - 0x3d, 0xd1, 0x7f, 0x03, 0xaf, 0xa7, 0x7e, 0x4b, 0x81, 0x6a, 0x23, 0x08, 0x8c, 0xce, 0xfe, 0x21, - 0x1a, 0x10, 0x56, 0xae, 0x10, 0xaf, 0x5c, 0xba, 0x11, 0x51, 0x75, 0x4b, 0x39, 0xd5, 0x9d, 0x94, - 0xaa, 0xab, 0xc2, 0x9c, 0xa8, 0x4b, 0x6e, 0x85, 0xb7, 0x00, 0xb5, 0x1c, 0x2f, 0xb8, 0xe7, 0x78, - 0x4f, 0x0d, 0xcf, 0x3c, 0xdc, 0x0a, 0x1b, 0x41, 0x89, 0x3f, 0xad, 0x51, 0x3c, 0x3f, 0xa9, 0xd1, - 0xdf, 0xea, 0x4b, 0x70, 0x4c, 0x92, 0x97, 0x5b, 0xf0, 0x2d, 0x98, 0xa1, 0x61, 0x01, 0x5f, 0x7c, - 0xbd, 0x1c, 0x07, 0x7c, 0x8c, 0x08, 0x1f, 0xd4, 0x75, 0x58, 0x20, 0x01, 0x22, 0x4d, 0x0f, 0xfd, - 0xcb, 0x95, 0xc4, 0xfa, 0x64, 0x39, 0x25, 0x22, 0xb1, 0x36, 0xf9, 0x85, 0x02, 0x93, 0x0c, 0xdb, - 0x91, 0x0c, 0xda, 0x4e, 0x92, 0x89, 0xd7, 0x75, 0xf4, 0xc0, 0xe8, 0x86, 0xcf, 0x96, 0x90, 0x84, - 0x1d, 0xa3, 0x4b, 0x4f, 0xe1, 0x68, 0xa6, 0x69, 0x75, 0xb1, 0x1f, 0x88, 0x93, 0xe3, 0x19, 0x92, - 0xb6, 0xce, 0x92, 0x88, 0x62, 0xe8, 0x01, 0x7b, 0x89, 0xee, 0x96, 0xd2, 0xdf, 0xe8, 0x3c, 0x3b, - 0xd5, 0x19, 0x7e, 0x5c, 0x4a, 0x4f, 0x7b, 0xea, 0x50, 0x4e, 0x9c, 0x73, 0x86, 0xdf, 0xe8, 0x02, - 0x94, 0xe8, 0x46, 0xfe, 0xf4, 0x30, 0x2d, 0x51, 0x12, 0x62, 0x15, 0xae, 0x65, 0xdb, 0xd8, 0xe4, - 0x6f, 0x6a, 0xf0, 0x2f, 0xf5, 0x5d, 0x40, 0x71, 0xe5, 0xf1, 0x0e, 0xba, 0x00, 0x53, 0x54, 0xb7, - 0x22, 0xaa, 0x5e, 0x48, 0x89, 0xd6, 0x38, 0x81, 0xfa, 0x35, 0x40, 0xac, 0x2c, 0x29, 0x92, 0x3e, - 0x4c, 0x07, 0x0e, 0x89, 0xa9, 0x7f, 0xa0, 0xc0, 0x31, 0x49, 0x3a, 0xaf, 0xdf, 0x4b, 0xb2, 0xf8, - 0x8c, 0xea, 0x71, 0xd1, 0x6f, 0x4b, 0x13, 0xfc, 0x85, 0x74, 0x35, 0xfe, 0x87, 0x26, 0xf7, 0x7f, - 0x50, 0x00, 0x1a, 0x83, 0x60, 0x9f, 0x6f, 0x0a, 0xc7, 0x3b, 0x51, 0x49, 0x74, 0x62, 0x1d, 0xca, - 0xae, 0xe1, 0xfb, 0x4f, 0x1d, 0x4f, 0x2c, 0x78, 0xc3, 0x6f, 0xba, 0x95, 0x3b, 0xe0, 0x0f, 0x89, - 0x54, 0x34, 0xfa, 0x1b, 0xbd, 0x00, 0x73, 0xec, 0x3d, 0x1d, 0xdd, 0x30, 0x4d, 0x4f, 0x80, 0x48, - 0x2b, 0x5a, 0x95, 0xa5, 0x36, 0x58, 0x22, 0x21, 0xb3, 0xe8, 0xb1, 0x4e, 0x70, 0xa0, 0x07, 0xce, - 0x63, 0x6c, 0xf3, 0x45, 0x6c, 0x55, 0xa4, 0xee, 0x90, 0x44, 0x76, 0x44, 0xdc, 0xb5, 0xfc, 0xc0, - 0x13, 0x64, 0xe2, 0x30, 0x9d, 0xa7, 0x52, 0x32, 0xf5, 0x4f, 0x14, 0xa8, 0xb5, 0x06, 0xbd, 0x1e, - 0x53, 0xee, 0x51, 0x3a, 0xf9, 0x22, 0x6f, 0x4a, 0x21, 0x6d, 0xf2, 0x91, 0xa2, 0x78, 0x13, 0x3f, - 0x95, 0x7d, 0xb7, 0xab, 0xb0, 0x10, 0xab, 0x31, 0x37, 0x1c, 0x69, 0xa9, 0xa1, 0xc8, 0x4b, 0x0d, - 0xb5, 0x01, 0x88, 0x6d, 0x35, 0x1d, 0xb9, 0x95, 0xea, 0x71, 0x38, 0x26, 0x89, 0xe0, 0x53, 0xf1, - 0x45, 0xa8, 0x72, 0x40, 0x23, 0x37, 0x88, 0x13, 0x50, 0x26, 0x2e, 0xb5, 0x63, 0x99, 0x02, 0x39, - 0x33, 0xed, 0x3a, 0xe6, 0x9a, 0x65, 0x7a, 0xea, 0x97, 0xa1, 0xca, 0x5f, 0x4c, 0xe0, 0xb4, 0x77, - 0x60, 0x8e, 0x1f, 0xb4, 0xea, 0xd2, 0x15, 0xe3, 0x13, 0x19, 0xa8, 0x59, 0xa1, 0x0a, 0x3b, 0xfe, - 0xa9, 0x7e, 0x1d, 0xea, 0x2c, 0x5a, 0x90, 0x04, 0x8b, 0x06, 0xde, 0x01, 0x01, 0x5a, 0x1b, 0x22, - 0x5f, 0xe6, 0xac, 0x7a, 0xf1, 0x4f, 0xf5, 0x34, 0x9c, 0xcc, 0x94, 0xcf, 0x5b, 0xef, 0x42, 0x2d, - 0xca, 0x60, 0xf7, 0x60, 0x43, 0x38, 0x90, 0x12, 0x83, 0x03, 0x2d, 0x85, 0x21, 0x7c, 0x41, 0xcc, - 0x5c, 0x34, 0x4a, 0x8f, 0x96, 0x80, 0xc5, 0xbc, 0x25, 0x60, 0x49, 0x5a, 0x02, 0xaa, 0x9b, 0xa1, - 0x0e, 0xf9, 0x42, 0xfc, 0x36, 0xdd, 0x2a, 0x60, 0x65, 0x0b, 0xa7, 0x76, 0x2a, 0xbb, 0x7d, 0x8c, - 0x48, 0x8b, 0xd1, 0xab, 0x17, 0xa0, 0x2a, 0xbb, 0xb7, 0x98, 0xc7, 0x52, 0x64, 0x8f, 0xf5, 0x7f, - 0x60, 0x49, 0x93, 0x10, 0x80, 0xf7, 0xb0, 0x11, 0x0c, 0x3c, 0xec, 0xa3, 0xb7, 0xa0, 0x9e, 0xf1, - 0xc4, 0x91, 0xce, 0x57, 0x86, 0x4c, 0xcc, 0x72, 0xea, 0xa5, 0xa3, 0x4d, 0xb6, 0x2e, 0x7c, 0x09, - 0xe6, 0x29, 0x42, 0x31, 0x76, 0xb3, 0x97, 0xe9, 0x88, 0xbe, 0x7d, 0xb3, 0x15, 0x5d, 0xe3, 0x35, - 0xc3, 0xf7, 0x36, 0x78, 0xf9, 0x99, 0x67, 0x6c, 0xef, 0x40, 0x79, 0x8f, 0xd7, 0x8b, 0x0f, 0x48, - 0x35, 0x43, 0x19, 0x89, 0x16, 0x68, 0x21, 0x8f, 0xba, 0x0d, 0xf3, 0x9c, 0x26, 0x6c, 0xde, 0xed, - 0xa1, 0xa0, 0x18, 0xd6, 0xbc, 0x5c, 0xb8, 0x8b, 0xfa, 0x83, 0x02, 0xcc, 0x25, 0x7c, 0xfc, 0xab, - 0x89, 0x05, 0x5d, 0x96, 0x39, 0x26, 0x96, 0x73, 0x37, 0x24, 0x6f, 0x2f, 0x43, 0x70, 0x86, 0x5f, - 0x02, 0xdd, 0x80, 0x5a, 0x02, 0xcf, 0x29, 0xb0, 0xdc, 0xf5, 0x7c, 0xc5, 0x68, 0xf3, 0x32, 0xd8, - 0xd3, 0x47, 0x6f, 0xc6, 0xf4, 0x5a, 0x4a, 0x2f, 0x43, 0x13, 0x3a, 0x8b, 0x14, 0x7a, 0xf4, 0x89, - 0x66, 0x91, 0x4f, 0xbf, 0xf7, 0x7c, 0xc2, 0xcf, 0xed, 0x53, 0x7d, 0x0e, 0x66, 0x76, 0xf3, 0x9e, - 0x34, 0x2a, 0x09, 0x98, 0xe8, 0x1b, 0xb0, 0x78, 0xcf, 0xea, 0x61, 0xff, 0xc0, 0x0f, 0x70, 0xbf, - 0x49, 0x67, 0x85, 0x3d, 0x0b, 0x7b, 0x68, 0x15, 0x80, 0x1a, 0xa5, 0xeb, 0x58, 0xe1, 0x13, 0x2b, - 0xb1, 0x14, 0xf5, 0xa7, 0x0a, 0xcc, 0x47, 0x8c, 0xe3, 0x60, 0x81, 0x5f, 0x87, 0xc9, 0x3d, 0x5f, - 0x6c, 0xe8, 0x26, 0x8e, 0xb9, 0xb2, 0xaa, 0xa0, 0x95, 0xf6, 0xfc, 0xa6, 0x89, 0xde, 0x00, 0x18, - 0xf8, 0xd8, 0xe4, 0xc7, 0xde, 0x23, 0xd0, 0xd9, 0x15, 0x42, 0xca, 0xce, 0xc1, 0x6f, 0xc0, 0x8c, - 0x65, 0x3b, 0x26, 0xa6, 0x90, 0x08, 0x73, 0x14, 0x32, 0x1b, 0x18, 0xed, 0xae, 0x8f, 0x4d, 0xf5, - 0xf7, 0x23, 0x60, 0xc3, 0x17, 0xb9, 0x85, 0xea, 0x9f, 0x8a, 0xb8, 0x48, 0x74, 0x3b, 0x1f, 0x33, - 0x0f, 0x60, 0x81, 0x4d, 0x6f, 0x7b, 0x61, 0x99, 0x99, 0x57, 0xd6, 0x12, 0x8d, 0xd3, 0x6a, 0x16, - 0x8f, 0x88, 0x05, 0x13, 0x6a, 0xc1, 0xf1, 0x68, 0xa1, 0x12, 0x97, 0x56, 0x18, 0x2d, 0x6d, 0xb1, - 0x13, 0xdb, 0xff, 0x17, 0x8c, 0xea, 0x2d, 0x38, 0x9e, 0xb8, 0x95, 0x32, 0xfe, 0x21, 0xd0, 0x7b, - 0x89, 0x2d, 0xdb, 0xc8, 0x4b, 0x5c, 0x95, 0x2f, 0x43, 0x0e, 0xbb, 0x3f, 0xc4, 0xef, 0xe5, 0xed, - 0xc2, 0x09, 0x69, 0x3f, 0x59, 0xaa, 0xcb, 0x8d, 0xc4, 0xb2, 0xe1, 0x6c, 0xbe, 0xbc, 0xc4, 0xfa, - 0xe1, 0x3f, 0x14, 0x58, 0xcc, 0x22, 0x38, 0xe2, 0x31, 0xc7, 0x87, 0x39, 0x17, 0xa9, 0x5f, 0x1b, - 0x55, 0xa1, 0xcf, 0xe4, 0x58, 0x68, 0x8b, 0x5d, 0xc3, 0x1c, 0xdd, 0x27, 0xc5, 0xf1, 0xfa, 0xe4, - 0x17, 0x85, 0xd8, 0x51, 0xde, 0x90, 0xab, 0x92, 0x9f, 0x60, 0xff, 0x7c, 0x2d, 0x71, 0x53, 0xf2, - 0xe5, 0x4c, 0xc6, 0x11, 0x17, 0x25, 0xb5, 0xac, 0x6d, 0xa1, 0xab, 0xa3, 0x24, 0x7d, 0x61, 0xef, - 0x49, 0xfe, 0x56, 0x01, 0xe6, 0xe4, 0x0e, 0x41, 0xef, 0x66, 0x5c, 0x93, 0x3c, 0x33, 0xa2, 0x81, - 0xd2, 0x2d, 0x49, 0x7e, 0x2d, 0xb1, 0x30, 0xfe, 0xb5, 0xc4, 0xe2, 0x78, 0xd7, 0x12, 0xef, 0xc2, - 0xdc, 0x53, 0xcf, 0x0a, 0x8c, 0x47, 0x3d, 0xac, 0xf7, 0x8c, 0x03, 0xec, 0x65, 0xcd, 0xb0, 0x49, - 0x57, 0x54, 0x15, 0x2c, 0x0f, 0x09, 0x07, 0x5d, 0x30, 0x3f, 0x35, 0x5c, 0xbe, 0xee, 0x96, 0x42, - 0xf9, 0xf6, 0x53, 0xc3, 0x65, 0x3c, 0x94, 0x44, 0xfd, 0x56, 0x01, 0x8e, 0x67, 0x5e, 0xa6, 0xfb, - 0xe4, 0x2a, 0xba, 0x14, 0x57, 0xd1, 0x61, 0x6e, 0x28, 0x16, 0x0f, 0x75, 0x43, 0xb1, 0x99, 0xa3, - 0xb0, 0x2c, 0xac, 0xc8, 0x70, 0xbd, 0xa9, 0x7f, 0xa9, 0x40, 0x59, 0x54, 0x6a, 0xe4, 0x7d, 0xc1, - 0xe5, 0x01, 0x21, 0xd3, 0xe9, 0x9d, 0x0e, 0xdb, 0xb0, 0x1d, 0xdd, 0xc7, 0x24, 0x96, 0x1e, 0x79, - 0x3b, 0x6b, 0x91, 0xf2, 0xad, 0x39, 0x1e, 0xde, 0x32, 0x6c, 0xa7, 0xcd, 0x98, 0x50, 0x03, 0x6a, - 0x4c, 0x1e, 0x15, 0x45, 0x84, 0x8e, 0x9c, 0x28, 0xe7, 0x28, 0x03, 0x11, 0x42, 0x84, 0xf9, 0xea, - 0xdf, 0x28, 0x30, 0x9f, 0xd0, 0xec, 0xaf, 0x5e, 0x23, 0xbe, 0x57, 0x84, 0x99, 0x58, 0x2f, 0x8f, - 0x68, 0xc0, 0x1a, 0x2c, 0x08, 0xbc, 0x97, 0x8f, 0x83, 0xf1, 0x6e, 0xc7, 0xcd, 0x73, 0x8e, 0x36, - 0x0e, 0x58, 0x1c, 0x75, 0x07, 0xe6, 0x8d, 0x27, 0x86, 0xd5, 0xa3, 0x16, 0x34, 0x56, 0x88, 0x32, - 0x17, 0xd2, 0x87, 0x91, 0x18, 0x6b, 0xf7, 0x58, 0x77, 0xe4, 0x80, 0xd2, 0x46, 0x57, 0x15, 0x7d, - 0x3f, 0x86, 0x78, 0x1c, 0x7a, 0x55, 0xd1, 0xf7, 0xc3, 0xf2, 0xe8, 0x85, 0x16, 0x7a, 0x47, 0xd3, - 0xe7, 0x0f, 0xfb, 0xe4, 0x97, 0x47, 0x68, 0xef, 0x51, 0x52, 0xa2, 0xb0, 0xbe, 0xf1, 0x91, 0xe3, - 0xe9, 0x71, 0xfe, 0xe9, 0x11, 0x0a, 0xa3, 0x1c, 0xad, 0x50, 0x88, 0xfa, 0xe7, 0x0a, 0x54, 0x42, - 0x3f, 0x32, 0xa2, 0x87, 0x9a, 0xb0, 0x48, 0x6f, 0xff, 0x24, 0x35, 0x3c, 0xa2, 0x93, 0x10, 0x61, - 0x6a, 0xc8, 0x5a, 0x6e, 0x40, 0x8d, 0x8a, 0x8a, 0xab, 0x7a, 0x54, 0x47, 0xf9, 0xa2, 0x9a, 0x2c, - 0xa0, 0xfc, 0xab, 0x02, 0xa0, 0xb4, 0x2b, 0xf9, 0x95, 0x31, 0xb2, 0x78, 0xa7, 0x95, 0xc6, 0xef, - 0xf4, 0xfb, 0x70, 0xac, 0xe3, 0xf4, 0xfb, 0x16, 0xbd, 0x39, 0xe6, 0x78, 0x07, 0xe3, 0x99, 0xdb, - 0x02, 0xe3, 0x61, 0x7a, 0x62, 0xea, 0x7b, 0x07, 0x4e, 0x68, 0xd8, 0x71, 0xb1, 0x1d, 0xba, 0xfe, - 0x87, 0x4e, 0xf7, 0x10, 0xf1, 0xed, 0x29, 0xa8, 0x67, 0xf1, 0xf3, 0xfd, 0x93, 0x01, 0xd4, 0xd7, - 0xf6, 0x71, 0xe7, 0x31, 0x5d, 0x7e, 0x1d, 0x05, 0xb3, 0x55, 0x87, 0x72, 0xcf, 0xe9, 0xb0, 0xc7, - 0xa0, 0xf9, 0x16, 0xa3, 0xf8, 0x1e, 0x72, 0xba, 0x73, 0x1a, 0x4e, 0x66, 0x16, 0xcb, 0x6b, 0x85, - 0xa0, 0x76, 0x1f, 0x07, 0x1b, 0x4f, 0xb0, 0x1d, 0x86, 0xcf, 0xea, 0x8f, 0x0b, 0xb1, 0x40, 0x9d, - 0x66, 0x1d, 0x02, 0xeb, 0x86, 0x5a, 0x10, 0xad, 0x1c, 0x74, 0x4c, 0xb8, 0xd9, 0x9b, 0xa5, 0xec, - 0x45, 0xe1, 0xec, 0xc3, 0x6e, 0x5a, 0x08, 0x7d, 0xaa, 0x34, 0x7a, 0x8d, 0x29, 0x4c, 0x4b, 0x40, - 0x20, 0x8a, 0x49, 0x08, 0xc4, 0x7b, 0x80, 0xe2, 0xa1, 0x38, 0xdf, 0x6e, 0x28, 0x8d, 0xf1, 0x00, - 0x55, 0xcd, 0x4d, 0x3e, 0x95, 0x96, 0xf3, 0x8c, 0xd4, 0xe4, 0x91, 0x9e, 0x91, 0x52, 0x57, 0xe1, - 0x14, 0x09, 0xb0, 0x37, 0x71, 0xe0, 0x59, 0x9d, 0x75, 0xec, 0x77, 0x3c, 0xcb, 0x0d, 0x9c, 0x10, - 0x7e, 0xa5, 0xea, 0x70, 0x3a, 0x27, 0x9f, 0xab, 0xfb, 0x1d, 0x98, 0x31, 0xa3, 0xe4, 0xac, 0x1d, - 0xaf, 0x24, 0xaf, 0x16, 0x67, 0x50, 0x3f, 0x80, 0x5a, 0x92, 0x20, 0x73, 0x27, 0x09, 0x41, 0x69, - 0x1f, 0xf7, 0x5c, 0x71, 0xd5, 0x8f, 0xfc, 0x26, 0x5a, 0x67, 0x6b, 0x97, 0xc7, 0xf8, 0x40, 0x9c, - 0x88, 0x54, 0x68, 0xca, 0x97, 0xf0, 0x41, 0xd8, 0x36, 0xe9, 0x5d, 0x13, 0xcf, 0xea, 0x24, 0xdb, - 0x96, 0x91, 0x1f, 0xb5, 0x8d, 0x74, 0x5b, 0x9f, 0x25, 0xf3, 0xb6, 0x9d, 0xce, 0x7d, 0x33, 0x85, - 0xf2, 0x82, 0xeb, 0x98, 0xfc, 0xb7, 0xfa, 0x7d, 0x05, 0x16, 0x52, 0x14, 0x63, 0x9e, 0x72, 0xbd, - 0x02, 0xd3, 0xa2, 0xdc, 0x42, 0x1a, 0xd2, 0xcc, 0x64, 0x69, 0x82, 0x04, 0x35, 0x61, 0x21, 0xb2, - 0x68, 0xc1, 0x57, 0x4c, 0xf7, 0x45, 0x7c, 0xe1, 0x42, 0xab, 0x5b, 0xeb, 0x24, 0x52, 0xd4, 0x0e, - 0xd4, 0x92, 0x54, 0xe3, 0x8c, 0xa9, 0x43, 0xd5, 0x57, 0xfd, 0x91, 0x02, 0x53, 0x2c, 0x2d, 0xb3, - 0xb3, 0xa5, 0xe9, 0xa0, 0x90, 0x9c, 0x0e, 0xde, 0x84, 0x19, 0x26, 0x47, 0x0f, 0x2f, 0x7a, 0xce, - 0xc9, 0x1b, 0xfd, 0x4c, 0x34, 0x1d, 0xad, 0xd0, 0x0f, 0x7f, 0x93, 0x66, 0x30, 0x7b, 0xa1, 0x2b, - 0x13, 0x01, 0x5c, 0x9f, 0xa1, 0x69, 0xd4, 0xe5, 0x92, 0x90, 0x99, 0xaf, 0x61, 0x46, 0xf8, 0x66, - 0xbe, 0xb5, 0xb5, 0x44, 0x5f, 0xe9, 0x4c, 0x6d, 0x75, 0xab, 0x3b, 0xf4, 0x19, 0xcd, 0xf4, 0x16, - 0x35, 0x7a, 0x4b, 0x06, 0x3a, 0xbc, 0x90, 0xc2, 0x1a, 0x48, 0x6c, 0x03, 0x8f, 0x3d, 0x9a, 0xcf, - 0xf1, 0x0e, 0x1f, 0xc2, 0x89, 0x5c, 0x1a, 0xf4, 0x76, 0xf8, 0x66, 0xb1, 0xe9, 0x59, 0x4f, 0xf8, - 0xc6, 0xc2, 0x9c, 0xfc, 0x3e, 0xca, 0x1a, 0x25, 0x58, 0xa7, 0xf9, 0xe2, 0x35, 0x63, 0xf6, 0x75, - 0xf1, 0x45, 0x28, 0x8b, 0x7f, 0x68, 0x80, 0xa6, 0xa1, 0xb8, 0xb3, 0xd6, 0xaa, 0x4d, 0x90, 0x1f, - 0xbb, 0xeb, 0xad, 0x9a, 0x82, 0xca, 0x50, 0x6a, 0xaf, 0xed, 0xb4, 0x6a, 0x85, 0x8b, 0x7d, 0xa8, - 0x25, 0xdf, 0xf4, 0x47, 0xcb, 0x70, 0xac, 0xa5, 0x6d, 0xb7, 0x1a, 0xf7, 0x1b, 0x3b, 0xcd, 0xed, - 0x2d, 0xbd, 0xa5, 0x35, 0xdf, 0x6f, 0xec, 0x6c, 0xd4, 0x26, 0xd0, 0x39, 0x38, 0x1d, 0xcf, 0x78, - 0xb0, 0xdd, 0xde, 0xd1, 0x77, 0xb6, 0xf5, 0xb5, 0xed, 0xad, 0x9d, 0x46, 0x73, 0x6b, 0x43, 0xab, - 0x29, 0xe8, 0x34, 0x9c, 0x88, 0x93, 0xdc, 0x6d, 0xae, 0x37, 0xb5, 0x8d, 0x35, 0xf2, 0xbb, 0xf1, - 0xb0, 0x56, 0xb8, 0xf8, 0x36, 0x54, 0xa5, 0xbb, 0x60, 0xa4, 0x4a, 0xad, 0xed, 0xf5, 0xda, 0x04, - 0xaa, 0x42, 0x25, 0x2e, 0xa7, 0x0c, 0xa5, 0xad, 0xed, 0xf5, 0x8d, 0x5a, 0x01, 0x01, 0x4c, 0xed, - 0x34, 0xb4, 0xfb, 0x1b, 0x3b, 0xb5, 0xe2, 0xc5, 0x57, 0x61, 0x25, 0xef, 0x4e, 0x24, 0xaa, 0xc0, - 0xe4, 0x26, 0xf6, 0xba, 0xb8, 0x36, 0x41, 0x58, 0xda, 0xc4, 0x4a, 0x82, 0x9a, 0x72, 0xf1, 0x56, - 0xf2, 0x49, 0x1f, 0x8c, 0x16, 0xa0, 0xda, 0x6e, 0x6c, 0xad, 0xdf, 0xdd, 0xfe, 0xaa, 0xae, 0x6d, - 0x34, 0xd6, 0x3f, 0xa8, 0x4d, 0xa0, 0x45, 0xa8, 0x89, 0xa4, 0xad, 0xed, 0x1d, 0x96, 0xaa, 0x5c, - 0x7c, 0x9c, 0x58, 0xe6, 0x62, 0x74, 0x1c, 0x16, 0xc2, 0x5a, 0xea, 0x6b, 0xda, 0x46, 0x63, 0x67, - 0x83, 0x54, 0x5e, 0x4a, 0xd6, 0x76, 0xb7, 0xb6, 0x9a, 0x5b, 0xf7, 0x6b, 0x0a, 0x91, 0x1a, 0x25, - 0x6f, 0x7c, 0xb5, 0x49, 0x88, 0x0b, 0x32, 0xf1, 0xee, 0xd6, 0x97, 0xb6, 0xb6, 0xbf, 0xb2, 0x55, - 0x2b, 0x5e, 0xfc, 0xff, 0x71, 0x5c, 0x4f, 0x34, 0x15, 0x9d, 0x84, 0xe5, 0x54, 0x89, 0xfa, 0xc6, - 0xfb, 0x1b, 0x5b, 0x3b, 0xb5, 0x09, 0x39, 0xb3, 0xbd, 0xd3, 0xd0, 0xa2, 0x4c, 0x25, 0x99, 0xb9, - 0xdd, 0x6a, 0x85, 0x99, 0x05, 0x39, 0x73, 0x7d, 0xe3, 0xe1, 0x46, 0xc4, 0x59, 0xbc, 0xf8, 0x3c, - 0x40, 0x34, 0xe4, 0xd0, 0x0c, 0x4c, 0xaf, 0x6d, 0xef, 0x6e, 0xed, 0x6c, 0x68, 0xb5, 0x09, 0xa2, - 0xe5, 0xfb, 0x8d, 0xdd, 0xfb, 0x1b, 0x35, 0xe5, 0xe2, 0x05, 0x98, 0x8d, 0x1b, 0x20, 0xa1, 0x6b, - 0x7f, 0xd0, 0xde, 0xd9, 0xd8, 0x24, 0x1a, 0x99, 0x85, 0xf2, 0xda, 0x7d, 0x6d, 0x7b, 0xb7, 0x75, - 0xaf, 0x5d, 0x53, 0xae, 0xfd, 0xd7, 0x62, 0x78, 0xbc, 0xd0, 0xc6, 0x1e, 0xbd, 0x17, 0xb3, 0x0e, - 0xd3, 0xe2, 0xbf, 0x86, 0x48, 0x1b, 0x3d, 0xf2, 0x7f, 0x39, 0xa9, 0x9f, 0xcc, 0xcc, 0xe3, 0xa1, - 0xc4, 0x04, 0x7a, 0x9f, 0x1e, 0xd8, 0xc4, 0x1e, 0xd4, 0x3b, 0x9b, 0xd8, 0x37, 0x4f, 0xbd, 0xdb, - 0x57, 0x3f, 0x37, 0x84, 0x22, 0x94, 0xfb, 0x01, 0xcc, 0xc9, 0x2f, 0xd7, 0xa2, 0x73, 0xf2, 0xa9, - 0x40, 0xc6, 0xa3, 0xb8, 0x75, 0x75, 0x18, 0x49, 0x28, 0x5a, 0x87, 0x5a, 0xf2, 0xe5, 0x5a, 0x24, - 0x61, 0x94, 0x72, 0x1e, 0xc6, 0xad, 0x3f, 0x3f, 0x9c, 0x28, 0x5e, 0x40, 0xea, 0x41, 0xd6, 0xe7, - 0x86, 0x3f, 0x71, 0x99, 0x51, 0x40, 0xde, 0x3b, 0x98, 0x4c, 0x39, 0xf2, 0x44, 0x8b, 0x12, 0x6f, - 0xa0, 0x66, 0x3c, 0x97, 0x28, 0x2b, 0x27, 0xfb, 0xa9, 0x3c, 0x75, 0x02, 0xfd, 0x2f, 0x98, 0x4f, - 0x5c, 0x7a, 0x40, 0x12, 0x63, 0xf6, 0x5d, 0x8e, 0xfa, 0x73, 0x43, 0x69, 0xe4, 0x5e, 0x8d, 0x5f, - 0x6c, 0x48, 0xf6, 0x6a, 0xc6, 0x85, 0x89, 0x64, 0xaf, 0x66, 0xde, 0x8b, 0xa0, 0x86, 0x28, 0x5d, - 0x62, 0x90, 0x0d, 0x31, 0xeb, 0xd2, 0x44, 0xfd, 0xdc, 0x10, 0x8a, 0xb8, 0x42, 0x12, 0xd7, 0x18, - 0x64, 0x85, 0x64, 0x5f, 0x90, 0xa8, 0x3f, 0x37, 0x94, 0x26, 0xd9, 0x93, 0x11, 0x46, 0x3a, 0xdd, - 0x93, 0x29, 0x08, 0x7f, 0xba, 0x27, 0xd3, 0x10, 0x6b, 0xde, 0x93, 0x09, 0x54, 0xb3, 0x3a, 0x14, - 0x27, 0x99, 0xd5, 0x93, 0xd9, 0x58, 0x4a, 0x75, 0x02, 0x3d, 0x85, 0x95, 0x3c, 0x1c, 0x1b, 0x7a, - 0xf9, 0x10, 0x70, 0xbb, 0xfa, 0x2b, 0xe3, 0x11, 0x87, 0x05, 0x63, 0x40, 0xe9, 0x15, 0x17, 0x7a, - 0x41, 0x56, 0x77, 0xce, 0x8a, 0xae, 0xfe, 0xe2, 0x28, 0xb2, 0xb0, 0x98, 0xfb, 0x50, 0x16, 0x08, - 0x39, 0x24, 0xb9, 0xc0, 0x04, 0x32, 0xaf, 0x7e, 0x2a, 0x3b, 0x33, 0x14, 0xf4, 0x16, 0x94, 0x48, - 0x2a, 0x5a, 0x4e, 0xd2, 0x09, 0x01, 0x2b, 0xe9, 0x8c, 0x90, 0xb9, 0x01, 0x53, 0x0c, 0xfa, 0x85, - 0xa4, 0x43, 0x54, 0x09, 0x9a, 0x56, 0xaf, 0x67, 0x65, 0x85, 0x22, 0x5a, 0xec, 0x7f, 0x30, 0x71, - 0x24, 0x17, 0x5a, 0x4d, 0xbe, 0x59, 0x2f, 0x43, 0xc6, 0xea, 0x67, 0x72, 0xf3, 0xe3, 0x36, 0x9b, - 0xd8, 0x58, 0x3d, 0x37, 0xe4, 0xa0, 0x20, 0xcb, 0x66, 0xb3, 0x8f, 0x1f, 0x58, 0xe7, 0xa6, 0x8f, - 0x27, 0xd0, 0x0b, 0xb9, 0xf6, 0x2e, 0x15, 0xf1, 0xe2, 0x28, 0xb2, 0xf8, 0xd0, 0x48, 0x3e, 0x3e, - 0xa7, 0x0e, 0x7b, 0x18, 0x32, 0x6b, 0x68, 0xe4, 0x3c, 0x38, 0xa9, 0x4e, 0xa0, 0x7d, 0x38, 0x96, - 0xf1, 0x22, 0x25, 0x7a, 0x31, 0xdf, 0xff, 0x4a, 0xa5, 0xbc, 0x34, 0x92, 0x2e, 0x5e, 0x52, 0x06, - 0x7c, 0x43, 0x2e, 0x29, 0x1f, 0x3f, 0x22, 0x97, 0x34, 0x0c, 0x07, 0x42, 0x0d, 0x91, 0xfb, 0x90, - 0x13, 0x59, 0x87, 0xf3, 0x19, 0x86, 0x98, 0xf2, 0x18, 0xfb, 0x70, 0x2c, 0x63, 0x57, 0x42, 0xae, - 0x6c, 0xfe, 0x6e, 0x89, 0x5c, 0xd9, 0x61, 0xdb, 0x1b, 0x13, 0xe8, 0x43, 0x40, 0xf7, 0x71, 0x20, - 0x87, 0x72, 0x3e, 0x92, 0x06, 0x6a, 0x72, 0x03, 0x24, 0xc7, 0x3e, 0xa5, 0x9d, 0x10, 0x75, 0xe2, - 0xaa, 0x82, 0x6c, 0x76, 0xaf, 0x2a, 0xb5, 0x7e, 0x47, 0xe7, 0x93, 0xdd, 0x96, 0xb7, 0x05, 0x50, - 0xbf, 0x30, 0x06, 0x65, 0xd8, 0x16, 0x3b, 0xf9, 0xfa, 0xb1, 0x58, 0x42, 0x9e, 0xcf, 0x37, 0x13, - 0x79, 0x59, 0x9e, 0x2e, 0x2f, 0x77, 0x81, 0x1e, 0xc6, 0x73, 0x31, 0x63, 0x3a, 0x9b, 0x0f, 0x26, - 0xca, 0x89, 0xe7, 0xb2, 0x0c, 0xe8, 0xda, 0xef, 0x16, 0x61, 0x96, 0x81, 0xae, 0x78, 0xf8, 0xb9, - 0x09, 0x10, 0xe1, 0x17, 0xd1, 0xe9, 0x64, 0x1d, 0x25, 0x50, 0x68, 0x7d, 0x35, 0x2f, 0x3b, 0xee, - 0xe6, 0x62, 0xb8, 0x40, 0xd9, 0xcd, 0xa5, 0x61, 0x8e, 0xb2, 0x9b, 0xcb, 0x00, 0x14, 0xaa, 0x13, - 0xe8, 0x3d, 0xa8, 0x84, 0x30, 0x34, 0xd9, 0x78, 0x92, 0x78, 0xba, 0xfa, 0xe9, 0x9c, 0xdc, 0x78, - 0xed, 0x62, 0xe8, 0x32, 0xb9, 0x76, 0x69, 0xe4, 0x9a, 0x5c, 0xbb, 0x2c, 0x58, 0x5a, 0xd4, 0x5e, - 0x86, 0x23, 0xc8, 0x68, 0xaf, 0x84, 0x2b, 0xc9, 0x68, 0xaf, 0x0c, 0x40, 0x50, 0x27, 0xee, 0xde, - 0xf9, 0xc9, 0xcf, 0x57, 0x95, 0x9f, 0xfe, 0x7c, 0x75, 0xe2, 0xff, 0x7e, 0xbc, 0xaa, 0xfc, 0xe4, - 0xe3, 0x55, 0xe5, 0x1f, 0x3f, 0x5e, 0x55, 0x7e, 0xf6, 0xf1, 0xaa, 0xf2, 0xed, 0x7f, 0x5d, 0x9d, - 0xf8, 0x50, 0x7d, 0x7c, 0xc3, 0xbf, 0x6c, 0x39, 0x57, 0x3a, 0x9e, 0x75, 0xc9, 0x70, 0xad, 0x2b, - 0xee, 0xe3, 0xee, 0x15, 0xc3, 0xb5, 0xfc, 0x2b, 0x5c, 0xee, 0x95, 0x27, 0xaf, 0x3e, 0x9a, 0xa2, - 0xff, 0xb7, 0xef, 0xb5, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x26, 0x3f, 0x1c, 0xf6, 0x71, 0x71, - 0x00, 0x00, + 0xad, 0xfd, 0x91, 0xb4, 0xab, 0x9f, 0xd5, 0x6a, 0x77, 0x25, 0xad, 0x76, 0x57, 0x23, 0x92, 0xd2, + 0xce, 0x5a, 0x24, 0xc7, 0x3d, 0xe4, 0xda, 0xbb, 0xbe, 0x70, 0xdf, 0xd6, 0x74, 0x71, 0xd8, 0xab, + 0x99, 0xee, 0x76, 0x77, 0x8f, 0x24, 0xfa, 0xe1, 0xe2, 0x3e, 0x5d, 0xdc, 0xeb, 0x27, 0x03, 0x37, + 0x46, 0x10, 0x23, 0x48, 0xe0, 0x00, 0x41, 0xf2, 0x96, 0xc4, 0x40, 0x1c, 0x07, 0x09, 0x10, 0x20, + 0x88, 0x0d, 0x27, 0x48, 0x80, 0x3c, 0x24, 0x80, 0x1f, 0x02, 0xc4, 0xde, 0x04, 0x08, 0x90, 0x67, + 0x3f, 0x04, 0x79, 0x71, 0x50, 0x7f, 0xdd, 0x5d, 0xfd, 0x33, 0x33, 0xe4, 0x6e, 0x76, 0xd7, 0x4f, + 0x9c, 0xae, 0x3a, 0xe7, 0x54, 0xd5, 0xa9, 0x53, 0xa7, 0x4e, 0x55, 0x7d, 0x55, 0x84, 0x8a, 0xe1, + 0x5a, 0x57, 0x5c, 0xcf, 0x09, 0x1c, 0x04, 0xde, 0xc0, 0x0e, 0xac, 0x3e, 0xbe, 0xf2, 0xe4, 0x95, + 0xfa, 0xe5, 0xae, 0x15, 0xec, 0x0f, 0x1e, 0x5d, 0xe9, 0x38, 0xfd, 0xab, 0x5d, 0xa7, 0xeb, 0x5c, + 0xa5, 0x24, 0x8f, 0x06, 0x7b, 0xf4, 0x8b, 0x7e, 0xd0, 0x5f, 0x8c, 0x55, 0xbd, 0x04, 0x73, 0xef, + 0x63, 0xcf, 0xb7, 0x1c, 0x5b, 0xc3, 0xdf, 0x18, 0x60, 0x3f, 0x40, 0x2b, 0x30, 0xfd, 0x84, 0xa5, + 0xac, 0x28, 0x67, 0x95, 0x0b, 0x15, 0x4d, 0x7c, 0xaa, 0xbf, 0xa7, 0xc0, 0x7c, 0x48, 0xec, 0xbb, + 0x8e, 0xed, 0xe3, 0x7c, 0x6a, 0x74, 0x0e, 0x66, 0x79, 0xb5, 0x74, 0xdb, 0xe8, 0xe3, 0x95, 0x02, + 0xcd, 0x9e, 0xe1, 0x69, 0x5b, 0x46, 0x1f, 0xa3, 0x17, 0x61, 0x5e, 0x90, 0x08, 0x21, 0x45, 0x4a, + 0x35, 0xc7, 0x93, 0x79, 0x69, 0xe8, 0x0a, 0x1c, 0x13, 0x84, 0x86, 0x6b, 0x85, 0xc4, 0x25, 0x4a, + 0xbc, 0xc0, 0xb3, 0x1a, 0xae, 0xc5, 0xe9, 0xd5, 0xaf, 0x41, 0x65, 0x7d, 0xab, 0xbd, 0xe6, 0xd8, + 0x7b, 0x56, 0x97, 0x54, 0xd1, 0xc7, 0x1e, 0xe1, 0x59, 0x51, 0xce, 0x16, 0x49, 0x15, 0xf9, 0x27, + 0xaa, 0x43, 0xd9, 0xc7, 0x86, 0xd7, 0xd9, 0xc7, 0xfe, 0x4a, 0x81, 0x66, 0x85, 0xdf, 0x84, 0xcb, + 0x71, 0x03, 0xcb, 0xb1, 0xfd, 0x95, 0x22, 0xe3, 0xe2, 0x9f, 0xea, 0x6f, 0x2a, 0x30, 0xd3, 0x72, + 0xbc, 0x60, 0xd3, 0x70, 0x5d, 0xcb, 0xee, 0xa2, 0x6b, 0x50, 0xa6, 0xba, 0xec, 0x38, 0x3d, 0xaa, + 0x83, 0xb9, 0xeb, 0x8b, 0x57, 0xa2, 0x0e, 0xb9, 0xd2, 0xe2, 0x79, 0x5a, 0x48, 0x85, 0x9e, 0x87, + 0xb9, 0x8e, 0x63, 0x07, 0x86, 0x65, 0x63, 0x4f, 0x77, 0x1d, 0x2f, 0xa0, 0xca, 0x99, 0xd4, 0xaa, + 0x61, 0x2a, 0x91, 0x8f, 0x4e, 0x42, 0x65, 0xdf, 0xf1, 0x03, 0x46, 0x51, 0xa4, 0x14, 0x65, 0x92, + 0x40, 0x33, 0x97, 0x61, 0x9a, 0x66, 0x5a, 0x2e, 0x57, 0xc3, 0x14, 0xf9, 0x6c, 0xba, 0xea, 0x8f, + 0x8a, 0x30, 0xb9, 0xe9, 0x0c, 0xec, 0x20, 0x51, 0x8c, 0x11, 0xec, 0xf3, 0x2e, 0x8a, 0x15, 0x63, + 0x04, 0xfb, 0x51, 0x31, 0x84, 0x82, 0xf5, 0x12, 0x2b, 0x86, 0x64, 0xd6, 0xa1, 0xec, 0x61, 0xc3, + 0x74, 0xec, 0xde, 0x01, 0xad, 0x42, 0x59, 0x0b, 0xbf, 0x49, 0xf7, 0xf9, 0xb8, 0x67, 0xd9, 0x83, + 0x67, 0xba, 0x87, 0x7b, 0xc6, 0x23, 0xdc, 0xa3, 0x55, 0x29, 0x6b, 0x73, 0x3c, 0x59, 0x63, 0xa9, + 0xe8, 0x6d, 0x98, 0x71, 0x3d, 0xc7, 0x35, 0xba, 0x06, 0xd1, 0xe0, 0xca, 0x24, 0x55, 0xd2, 0xa9, + 0xb8, 0x92, 0x68, 0x85, 0x5b, 0x11, 0x8d, 0x16, 0x67, 0x40, 0x6f, 0xc0, 0xcc, 0xc0, 0x32, 0xb9, + 0xbe, 0xfd, 0x95, 0xa9, 0xb3, 0xc5, 0x0b, 0x33, 0xd7, 0x8f, 0xc7, 0xf9, 0x9b, 0xeb, 0x3c, 0x57, + 0x8b, 0x53, 0x12, 0xc6, 0x6e, 0x8c, 0x71, 0x7a, 0x28, 0x63, 0x8c, 0x92, 0x1a, 0x1c, 0xee, 0x0c, + 0x3c, 0xdf, 0x7a, 0x82, 0x75, 0xd2, 0x60, 0x9d, 0x6a, 0xa0, 0x4c, 0x9b, 0xb7, 0x10, 0x66, 0x69, + 0xd8, 0x30, 0xb7, 0x89, 0x2a, 0x5e, 0x82, 0x49, 0xab, 0x6f, 0x74, 0xf1, 0x4a, 0xe5, 0xac, 0x92, + 0x2a, 0x82, 0x64, 0xb4, 0x5d, 0xdc, 0xd1, 0x18, 0x0d, 0x7a, 0x0e, 0xe6, 0xe8, 0x0f, 0xdd, 0x1f, + 0x3c, 0x62, 0x5a, 0x07, 0xaa, 0xf5, 0x59, 0x9a, 0xda, 0x1e, 0x3c, 0x22, 0x9a, 0x57, 0x75, 0xa8, + 0x84, 0x95, 0x8b, 0x7a, 0xdb, 0xa4, 0x7d, 0x58, 0xe5, 0xbd, 0x6d, 0x92, 0x51, 0x16, 0xf5, 0xb1, + 0x65, 0xd2, 0xfe, 0xab, 0x6a, 0x33, 0x61, 0x5a, 0xd3, 0x44, 0x4b, 0x30, 0xd5, 0xc3, 0x76, 0x37, + 0xd8, 0xa7, 0x1d, 0x58, 0xd5, 0xf8, 0x97, 0xfa, 0x6b, 0x0a, 0x54, 0x77, 0x7d, 0xec, 0x91, 0xa1, + 0xe8, 0xbb, 0x46, 0x07, 0xa3, 0xcb, 0x50, 0xea, 0x3b, 0x26, 0xe6, 0x56, 0x7c, 0x22, 0xde, 0x88, + 0x90, 0x68, 0xd3, 0x31, 0xb1, 0x46, 0xc9, 0xd0, 0x45, 0x28, 0x0d, 0x2c, 0x93, 0x0d, 0x9d, 0x5c, + 0xb5, 0x52, 0x12, 0x42, 0xda, 0x25, 0xa4, 0xc5, 0xa1, 0xa4, 0x84, 0x44, 0xfd, 0xa5, 0x02, 0xf3, + 0x61, 0x69, 0xdb, 0x74, 0xcc, 0xa1, 0x57, 0x61, 0xda, 0xc6, 0xc1, 0x53, 0xc7, 0x7b, 0x3c, 0xba, + 0x6e, 0x82, 0x12, 0xbd, 0x04, 0x45, 0x97, 0x6b, 0x64, 0x28, 0x03, 0xa1, 0x22, 0xc4, 0x96, 0xdb, + 0xa1, 0x1a, 0x1a, 0x4e, 0x6c, 0xb9, 0x1d, 0x32, 0x62, 0x02, 0xc3, 0xeb, 0x62, 0xda, 0x1f, 0x6c, + 0xf4, 0x95, 0x59, 0x42, 0xd3, 0x44, 0x77, 0x61, 0x6e, 0xe0, 0x63, 0xcf, 0xf6, 0x75, 0xe1, 0x3f, + 0x26, 0xa9, 0x4d, 0x48, 0x42, 0x25, 0xbd, 0x6b, 0x55, 0xc6, 0xb0, 0xcd, 0x1d, 0x8c, 0x0a, 0xd0, + 0xb4, 0x83, 0xd7, 0x6f, 0xbc, 0x6f, 0xf4, 0x06, 0x18, 0x2d, 0xc2, 0xe4, 0x13, 0xf2, 0x83, 0xb6, + 0xbc, 0xa8, 0xb1, 0x0f, 0xf5, 0x7b, 0x93, 0x70, 0xf2, 0x21, 0x19, 0x63, 0x6d, 0xc3, 0x36, 0x1f, + 0x39, 0xcf, 0xda, 0xc4, 0x24, 0xad, 0xe0, 0x60, 0xcd, 0xb1, 0x03, 0xfc, 0x2c, 0x40, 0xef, 0xc2, + 0x82, 0x2d, 0xe4, 0x87, 0x15, 0x51, 0x68, 0x45, 0x4e, 0x66, 0xb6, 0x8e, 0x15, 0xae, 0xd5, 0x6c, + 0x39, 0xc1, 0x47, 0xf7, 0xa2, 0x51, 0x2e, 0xe4, 0x14, 0xd2, 0x0d, 0x6a, 0x6f, 0xd0, 0xda, 0x70, + 0x29, 0xc2, 0x01, 0x08, 0x19, 0xaf, 0x03, 0xf1, 0xfb, 0xba, 0xe1, 0xeb, 0xa4, 0xa5, 0x54, 0xcb, + 0x33, 0xd7, 0x97, 0x24, 0x2b, 0x08, 0x1b, 0xac, 0x55, 0xbc, 0x81, 0xdd, 0xf0, 0x89, 0x86, 0xd0, + 0x4d, 0x3a, 0x87, 0x10, 0xbe, 0xae, 0xe7, 0x0c, 0x5c, 0x3a, 0xfe, 0xf2, 0x19, 0x81, 0x32, 0x3e, + 0x20, 0x94, 0x74, 0x6a, 0xe1, 0x7e, 0x4a, 0xf7, 0x1c, 0x27, 0xd8, 0xf3, 0x85, 0x6f, 0x12, 0xc9, + 0x1a, 0x4d, 0x45, 0x57, 0xe1, 0x98, 0x3f, 0x70, 0xdd, 0x1e, 0xee, 0x63, 0x3b, 0x30, 0x7a, 0xac, + 0x20, 0xd2, 0x67, 0xc5, 0x0b, 0x45, 0x0d, 0xc5, 0xb3, 0xa8, 0x60, 0x1f, 0x3d, 0x82, 0x7a, 0x06, + 0x83, 0xee, 0x3a, 0x3d, 0xab, 0x73, 0xb0, 0x32, 0x43, 0x0d, 0xe8, 0x39, 0x49, 0x35, 0x29, 0x19, + 0x2d, 0x4a, 0xab, 0xad, 0xf8, 0x39, 0x39, 0x68, 0x15, 0xc0, 0xf5, 0xac, 0x27, 0x56, 0x0f, 0x77, + 0xb1, 0xb9, 0x32, 0x45, 0x2b, 0x1e, 0x4b, 0x41, 0xaf, 0x91, 0x29, 0xad, 0xd3, 0x71, 0xfa, 0x2e, + 0x77, 0x38, 0x52, 0x9f, 0x0a, 0x5b, 0x68, 0x79, 0xce, 0x9e, 0xd5, 0xc3, 0x9a, 0xa0, 0x45, 0x6f, + 0x40, 0xd9, 0x70, 0x5d, 0xc3, 0xeb, 0x3b, 0x1e, 0x75, 0x39, 0x23, 0xf8, 0x42, 0x62, 0x74, 0x03, + 0x16, 0xb9, 0x0c, 0xdd, 0x65, 0x99, 0xcc, 0x6f, 0x4d, 0x13, 0xdb, 0xbf, 0x57, 0x58, 0x51, 0x34, + 0xc4, 0xf3, 0x39, 0x2f, 0xf5, 0x60, 0x7f, 0xa5, 0xc0, 0x7c, 0x42, 0x26, 0x7a, 0x0f, 0x66, 0x85, + 0x84, 0xe0, 0xc0, 0x15, 0xae, 0xe6, 0xc5, 0x21, 0xd5, 0xb8, 0xc2, 0xff, 0xee, 0x1c, 0xb8, 0x98, + 0x4e, 0x0b, 0xe2, 0x03, 0x9d, 0x87, 0x6a, 0xcf, 0xe9, 0x18, 0x3d, 0xea, 0x19, 0x3d, 0xbc, 0xc7, + 0x27, 0xaf, 0xd9, 0x30, 0x51, 0xc3, 0x7b, 0xea, 0x5d, 0x98, 0x89, 0x09, 0x40, 0x08, 0xe6, 0x34, + 0x56, 0xd4, 0x3a, 0xde, 0x33, 0x06, 0xbd, 0xa0, 0x36, 0x81, 0xe6, 0x00, 0x76, 0xed, 0x0e, 0x09, + 0x16, 0x6c, 0x6c, 0xd6, 0x14, 0x54, 0x85, 0xca, 0x43, 0x21, 0xa2, 0x56, 0x50, 0xbf, 0x5b, 0x84, + 0xe3, 0xd4, 0xb8, 0x5b, 0x8e, 0xc9, 0x47, 0x1b, 0x8f, 0x2c, 0xce, 0x43, 0xb5, 0x43, 0xbb, 0x5f, + 0x77, 0x0d, 0x0f, 0xdb, 0x01, 0x9f, 0x5f, 0x67, 0x59, 0x62, 0x8b, 0xa6, 0x21, 0x0d, 0x6a, 0x3e, + 0x6f, 0x91, 0xde, 0x61, 0xa3, 0x93, 0x0f, 0x20, 0xa9, 0xd5, 0x43, 0x06, 0xb3, 0x36, 0xef, 0xa7, + 0x46, 0xf7, 0xb4, 0x7f, 0xe0, 0x77, 0x82, 0x9e, 0xf0, 0xa8, 0x57, 0x52, 0xa2, 0x92, 0x95, 0xbd, + 0xd2, 0x66, 0x0c, 0x1b, 0x76, 0xe0, 0x1d, 0x68, 0x82, 0x1d, 0xbd, 0x03, 0x65, 0xe7, 0x09, 0xf6, + 0xf6, 0xb1, 0xc1, 0x3c, 0xd9, 0xcc, 0xf5, 0xf3, 0x29, 0x51, 0x6b, 0x62, 0x32, 0xd1, 0xb0, 0xef, + 0x0c, 0xbc, 0x0e, 0xf6, 0xb5, 0x90, 0x09, 0x35, 0xa0, 0xe2, 0x89, 0x64, 0xee, 0xe9, 0xc6, 0x92, + 0x10, 0x71, 0xd5, 0x6f, 0xc3, 0x6c, 0xbc, 0x72, 0xa8, 0x06, 0xc5, 0xc7, 0xf8, 0x80, 0x2b, 0x93, + 0xfc, 0x8c, 0x7c, 0x20, 0xeb, 0x61, 0xf6, 0x71, 0xbb, 0x70, 0x53, 0x51, 0x3d, 0x40, 0x51, 0x4b, + 0x37, 0x71, 0x60, 0x98, 0x46, 0x60, 0x20, 0x04, 0x25, 0x1a, 0x73, 0x32, 0x11, 0xf4, 0x37, 0x91, + 0x3a, 0xe0, 0xd3, 0x41, 0x45, 0x23, 0x3f, 0xd1, 0x29, 0xa8, 0x84, 0xde, 0x8e, 0x07, 0x9e, 0x51, + 0x02, 0x09, 0x00, 0x8d, 0x20, 0xc0, 0x7d, 0x37, 0xa0, 0x8a, 0xa9, 0x6a, 0xe2, 0x53, 0xfd, 0x7f, + 0x93, 0x50, 0x4b, 0xd9, 0xc2, 0x6d, 0x28, 0xf7, 0x79, 0xf1, 0xdc, 0xcf, 0xae, 0x4a, 0x51, 0x60, + 0xaa, 0x92, 0x5a, 0x48, 0x4f, 0x82, 0x2c, 0x62, 0x6b, 0xb1, 0x30, 0x39, 0xfc, 0x66, 0x46, 0xde, + 0xd5, 0x4d, 0xcb, 0xc3, 0x9d, 0xc0, 0xf1, 0x0e, 0x78, 0x45, 0x67, 0x7b, 0x4e, 0x77, 0x5d, 0xa4, + 0xa1, 0x1b, 0x00, 0xa6, 0xed, 0xeb, 0xd4, 0x86, 0xbb, 0xbc, 0x1f, 0xa5, 0x49, 0x36, 0x8c, 0x86, + 0xb5, 0x8a, 0x69, 0xfb, 0xbc, 0xca, 0x77, 0xa0, 0x4a, 0x42, 0x4b, 0xbd, 0x2f, 0xe2, 0xa3, 0x49, + 0x6a, 0x4b, 0xcb, 0x72, 0xbd, 0xc3, 0x40, 0x57, 0x9b, 0x75, 0xa3, 0x0f, 0x1f, 0xdd, 0x85, 0x29, + 0x1a, 0xdd, 0x89, 0x78, 0xec, 0x42, 0x76, 0x73, 0xb9, 0xf5, 0x3d, 0xa4, 0xa4, 0xcc, 0xf8, 0x38, + 0x1f, 0xda, 0x86, 0x19, 0xc3, 0xb6, 0x9d, 0xc0, 0x60, 0xb3, 0x0a, 0x8b, 0xce, 0x2e, 0x0f, 0x15, + 0xd3, 0x88, 0xe8, 0x99, 0xac, 0xb8, 0x04, 0xf4, 0x06, 0x4c, 0xd2, 0x69, 0x87, 0xcf, 0x13, 0xe7, + 0x46, 0x0e, 0x0a, 0x8d, 0xd1, 0xa3, 0xb7, 0x60, 0xfa, 0xa9, 0x65, 0x9b, 0xce, 0x53, 0x9f, 0xfb, + 0x53, 0xc9, 0x84, 0xbf, 0xc2, 0xb2, 0x52, 0xcc, 0x82, 0xa7, 0x7e, 0x0b, 0x66, 0x62, 0xed, 0x3b, + 0x8c, 0xfd, 0xd6, 0xdf, 0x86, 0x5a, 0xb2, 0x4d, 0x87, 0xb2, 0xff, 0x01, 0x2c, 0x6a, 0x03, 0x3b, + 0xaa, 0x9a, 0x58, 0xc5, 0xdd, 0x80, 0x29, 0x6e, 0x0d, 0xcc, 0x18, 0x4f, 0x0d, 0x53, 0xab, 0xc6, + 0x69, 0xe3, 0x0b, 0xb2, 0x7d, 0xc3, 0x36, 0x7b, 0xd8, 0xe3, 0x25, 0x8a, 0x05, 0xd9, 0xbb, 0x2c, + 0x55, 0x7d, 0x0b, 0x8e, 0x27, 0x8a, 0xe5, 0xeb, 0xc1, 0xe7, 0x60, 0xce, 0x75, 0x4c, 0xdd, 0x67, + 0xc9, 0x22, 0x5e, 0xad, 0x10, 0xdb, 0x11, 0xb4, 0x4d, 0x93, 0xb0, 0xb7, 0x03, 0xc7, 0x4d, 0x57, + 0x7b, 0x3c, 0xf6, 0x15, 0x58, 0x4a, 0xb2, 0xb3, 0xe2, 0xd5, 0x77, 0x60, 0x59, 0xc3, 0x7d, 0xe7, + 0x09, 0x3e, 0xaa, 0xe8, 0x3a, 0xac, 0xa4, 0x05, 0x70, 0xe1, 0x1f, 0xc0, 0x72, 0x94, 0xda, 0x0e, + 0x8c, 0x60, 0xe0, 0x1f, 0x4a, 0x38, 0x5f, 0x2c, 0x3f, 0x72, 0x7c, 0xd6, 0x91, 0x65, 0x4d, 0x7c, + 0xaa, 0xcb, 0x30, 0xd9, 0x72, 0xcc, 0x66, 0x0b, 0xcd, 0x41, 0xc1, 0x72, 0x39, 0x73, 0xc1, 0x72, + 0xd5, 0x4e, 0xbc, 0xcc, 0x2d, 0x16, 0xd9, 0xb2, 0xa2, 0x93, 0xa4, 0xe8, 0x26, 0xcc, 0x19, 0xa6, + 0x69, 0x11, 0x43, 0x32, 0x7a, 0xba, 0xe5, 0x8a, 0xc0, 0x7c, 0x21, 0xd1, 0xf5, 0xcd, 0x96, 0x56, + 0x8d, 0x08, 0x9b, 0xae, 0xaf, 0xde, 0x83, 0x4a, 0xb4, 0x08, 0x78, 0x2d, 0x5a, 0xf8, 0x16, 0x46, + 0xc7, 0x8b, 0xe1, 0xaa, 0x78, 0x2b, 0x35, 0x49, 0xf2, 0x6a, 0xbe, 0x06, 0x10, 0x3a, 0x55, 0x11, + 0x82, 0x1e, 0xcf, 0x14, 0xa9, 0xc5, 0x08, 0xd5, 0x7f, 0x2e, 0xc5, 0x9d, 0x6c, 0xac, 0xc9, 0x66, + 0xd8, 0x64, 0x53, 0x72, 0xba, 0x85, 0x43, 0x3a, 0xdd, 0x57, 0x60, 0xd2, 0x0f, 0x8c, 0x00, 0xf3, + 0x98, 0xff, 0x64, 0x36, 0x23, 0x29, 0x18, 0x6b, 0x8c, 0x12, 0x9d, 0x06, 0xe8, 0x78, 0xd8, 0x08, + 0xb0, 0xa9, 0x1b, 0x6c, 0x56, 0x28, 0x6a, 0x15, 0x9e, 0xd2, 0x08, 0x88, 0x17, 0x11, 0xab, 0x94, + 0x8c, 0x89, 0x30, 0xa7, 0x1b, 0xa3, 0xf5, 0x4a, 0xe8, 0xbd, 0xa6, 0x46, 0x7a, 0x2f, 0xce, 0xca, + 0xbd, 0x57, 0xe4, 0x89, 0xa7, 0x87, 0x79, 0x62, 0xc6, 0x34, 0x8e, 0x27, 0x2e, 0x0f, 0xf3, 0xc4, + 0x5c, 0xcc, 0x70, 0x4f, 0x9c, 0xe1, 0x48, 0x2a, 0x59, 0x8e, 0xe4, 0xf3, 0x74, 0x9d, 0x7f, 0x5a, + 0x80, 0x95, 0xf4, 0x78, 0xe6, 0x7e, 0xec, 0x06, 0x4c, 0xf9, 0x34, 0x65, 0xb8, 0xff, 0xe4, 0x5c, + 0x9c, 0x16, 0xdd, 0x83, 0x92, 0x65, 0xef, 0x39, 0x7c, 0xe0, 0x5d, 0x19, 0xca, 0xc3, 0x4b, 0xba, + 0xd2, 0xb4, 0xf7, 0x1c, 0xa6, 0x41, 0xca, 0x8b, 0x1e, 0xc2, 0xb1, 0x70, 0xf5, 0xee, 0xeb, 0x4c, + 0x30, 0x16, 0x71, 0x9e, 0x64, 0xa5, 0x61, 0x54, 0xc5, 0x25, 0xa2, 0x88, 0xaf, 0xcd, 0xd9, 0x48, + 0x8c, 0x43, 0xc8, 0xfd, 0xc0, 0xe8, 0xbb, 0xc2, 0x62, 0xc3, 0x84, 0xfa, 0x1b, 0x50, 0x09, 0x8b, + 0x3f, 0x94, 0xee, 0x9a, 0xb0, 0x98, 0x18, 0x23, 0x6c, 0xb1, 0x1a, 0x0e, 0x2a, 0x65, 0xdc, 0x41, + 0xa5, 0xfe, 0x42, 0x89, 0x0f, 0xf4, 0xfb, 0x56, 0x2f, 0xc0, 0x5e, 0x6a, 0xa0, 0xbf, 0x2e, 0xe4, + 0xb2, 0x51, 0x7e, 0x76, 0x88, 0x5c, 0xb6, 0x16, 0xe4, 0x23, 0xf6, 0x7d, 0x98, 0xa3, 0x26, 0xae, + 0xfb, 0xb8, 0x47, 0x63, 0x25, 0xae, 0xc7, 0xab, 0xd9, 0x02, 0x58, 0xe9, 0x6c, 0x88, 0xb4, 0x39, + 0x07, 0xeb, 0x9b, 0x6a, 0x2f, 0x9e, 0x56, 0xbf, 0x0b, 0x28, 0x4d, 0x74, 0x28, 0x0d, 0x6e, 0x12, + 0x7f, 0xe9, 0x07, 0x99, 0x33, 0xf7, 0x1e, 0xad, 0xc6, 0x70, 0xcb, 0x63, 0x55, 0xd5, 0x38, 0xad, + 0xfa, 0x8f, 0x45, 0x80, 0x28, 0xf3, 0x0b, 0xee, 0x28, 0x6f, 0x87, 0x0e, 0x8b, 0x45, 0x9c, 0x6a, + 0xb6, 0xc8, 0x4c, 0x57, 0xd5, 0x94, 0x5d, 0x15, 0x8b, 0x3d, 0x5f, 0xcc, 0x11, 0x70, 0x68, 0x27, + 0x35, 0xfd, 0x45, 0x73, 0x52, 0xf7, 0x61, 0x29, 0x69, 0x26, 0xdc, 0x43, 0xbd, 0x0c, 0x93, 0x56, + 0x80, 0xfb, 0x6c, 0x53, 0x3b, 0xb1, 0x29, 0x12, 0x23, 0x67, 0x44, 0xea, 0xdb, 0xb0, 0x24, 0xf7, + 0xd5, 0xe1, 0x42, 0x17, 0xf5, 0x61, 0x32, 0xf6, 0x89, 0x5c, 0x25, 0xb7, 0x8f, 0xcc, 0xed, 0xa5, + 0x24, 0x0f, 0xa3, 0x54, 0x7f, 0xac, 0xc0, 0xf1, 0x44, 0x56, 0xce, 0xc0, 0xff, 0x5a, 0x6a, 0x00, + 0x33, 0xdf, 0x7a, 0x63, 0x48, 0x29, 0x9f, 0xe1, 0x28, 0xfe, 0x0a, 0xd4, 0xe5, 0xee, 0x91, 0x54, + 0x7b, 0x2b, 0x31, 0x94, 0xcf, 0x8d, 0xac, 0x74, 0x38, 0x9e, 0x5b, 0x70, 0x32, 0x53, 0x70, 0x5a, + 0xe7, 0xc5, 0x31, 0x75, 0xfe, 0x1f, 0x85, 0xb8, 0xcf, 0x6e, 0x04, 0x81, 0x67, 0x3d, 0x1a, 0x04, + 0xf8, 0xd3, 0x0d, 0xaa, 0xd6, 0xc3, 0x91, 0xcd, 0xfc, 0xec, 0xcb, 0xd9, 0x9c, 0x51, 0xe9, 0x99, + 0x63, 0xbc, 0x2d, 0x8f, 0xf1, 0x12, 0x15, 0xf5, 0xca, 0x48, 0x51, 0x43, 0x47, 0xfb, 0xe7, 0x39, + 0x88, 0xff, 0x5a, 0x81, 0xf9, 0x44, 0xaf, 0xa0, 0xbb, 0x00, 0x46, 0x58, 0x75, 0x6e, 0x1f, 0x67, + 0x47, 0x35, 0x51, 0x8b, 0xf1, 0x90, 0x39, 0x91, 0xc5, 0x8b, 0x19, 0x73, 0x62, 0x46, 0xbc, 0x18, + 0x86, 0x8b, 0x77, 0xa2, 0xc5, 0x2e, 0xdb, 0x88, 0x55, 0x87, 0x2e, 0x76, 0x19, 0xaf, 0x60, 0x51, + 0xff, 0x7f, 0x01, 0x16, 0xb3, 0xa4, 0xa3, 0x17, 0xa0, 0xd8, 0x71, 0x07, 0xbc, 0x25, 0xd2, 0x09, + 0xd8, 0x9a, 0x3b, 0xd8, 0xf5, 0x8d, 0x2e, 0xd6, 0x08, 0x01, 0xba, 0x0a, 0x53, 0x7d, 0xdc, 0x77, + 0xbc, 0x03, 0x5e, 0x6f, 0x69, 0xbb, 0x61, 0x93, 0xe6, 0x30, 0x6a, 0x4e, 0x86, 0xae, 0x47, 0x61, + 0x35, 0xab, 0xef, 0x8a, 0xb4, 0x7a, 0x60, 0x59, 0x8c, 0x25, 0x8c, 0xa5, 0xaf, 0xc3, 0xb4, 0xeb, + 0x39, 0x1d, 0xec, 0xfb, 0x7c, 0x37, 0x64, 0x25, 0x71, 0x24, 0x47, 0xb2, 0x38, 0x0f, 0x27, 0x44, + 0xb7, 0x01, 0xa2, 0x00, 0x8a, 0xcf, 0x4c, 0xf5, 0xdc, 0x78, 0xcb, 0xd7, 0x62, 0xd4, 0xea, 0x0f, + 0x0b, 0xb0, 0x94, 0xad, 0x39, 0x74, 0x39, 0xae, 0x97, 0x93, 0x19, 0xaa, 0x96, 0xd5, 0xf3, 0x7a, + 0x42, 0x3d, 0xab, 0x19, 0x1c, 0x59, 0x5a, 0xba, 0x95, 0xd4, 0xd2, 0x99, 0x0c, 0xc6, 0x6c, 0x65, + 0xdd, 0x4a, 0x2a, 0x2b, 0x8b, 0x35, 0x5b, 0x67, 0x8d, 0x0c, 0x9d, 0x9d, 0xcb, 0x6a, 0x63, 0xbe, + 0xea, 0xfe, 0x42, 0x81, 0xd9, 0x78, 0xbd, 0xe4, 0x90, 0x55, 0x49, 0x84, 0xac, 0x68, 0x0b, 0x16, + 0x4c, 0xb6, 0x73, 0xab, 0x5b, 0x76, 0x80, 0xbd, 0x3d, 0xa3, 0x23, 0xa2, 0xc2, 0x73, 0x19, 0x76, + 0xd1, 0x14, 0x34, 0xac, 0xe2, 0x35, 0xce, 0x1b, 0x26, 0x93, 0x16, 0x84, 0x72, 0x84, 0xd7, 0x1a, + 0x43, 0x50, 0x8c, 0x49, 0xfd, 0x07, 0x05, 0x8e, 0x65, 0x28, 0x78, 0x44, 0x43, 0x76, 0xf3, 0x1b, + 0x72, 0x21, 0xbf, 0xeb, 0x46, 0xb6, 0xe7, 0xdd, 0x8c, 0xf6, 0x8c, 0x2f, 0x2f, 0xde, 0xac, 0x5f, + 0x2a, 0x70, 0x3c, 0x93, 0x2a, 0x73, 0x7b, 0xf5, 0x3a, 0x94, 0xbd, 0x67, 0xfa, 0xa3, 0x83, 0x00, + 0xfb, 0x59, 0x03, 0x7b, 0x37, 0x76, 0x4e, 0x33, 0xed, 0x3d, 0xbb, 0x47, 0xe8, 0xd0, 0x0d, 0xa8, + 0x78, 0xcf, 0x74, 0xec, 0x79, 0x8e, 0x27, 0x7c, 0x51, 0x2e, 0x53, 0xd9, 0x7b, 0xb6, 0x41, 0x09, + 0x49, 0x49, 0x81, 0x28, 0xa9, 0x34, 0xa2, 0xa4, 0x20, 0x2a, 0x29, 0x08, 0x4b, 0x9a, 0x1c, 0x51, + 0x52, 0xc0, 0x4b, 0x52, 0x7f, 0xbf, 0x00, 0xa7, 0x86, 0xa9, 0xeb, 0x53, 0x53, 0xc4, 0x06, 0x20, + 0xef, 0x99, 0xee, 0x1a, 0x9d, 0xc7, 0x38, 0xf0, 0x75, 0xd3, 0x73, 0x5c, 0x17, 0x9b, 0xa3, 0x34, + 0x52, 0xf3, 0x9e, 0xb5, 0x18, 0xc7, 0x3a, 0x63, 0x38, 0x92, 0x66, 0x36, 0x00, 0x05, 0xe9, 0xa2, + 0x47, 0xa8, 0xa8, 0x16, 0x24, 0x8a, 0x56, 0x3f, 0x82, 0xd9, 0xb8, 0x87, 0x18, 0x61, 0xfb, 0x77, + 0xa0, 0xca, 0x3d, 0x88, 0xde, 0x71, 0x06, 0x76, 0x30, 0x4a, 0x51, 0xb3, 0x9c, 0x7a, 0x8d, 0x10, + 0xab, 0xdf, 0x08, 0x87, 0xdb, 0x67, 0x56, 0xe4, 0xff, 0x29, 0x40, 0x25, 0x3c, 0xc7, 0x27, 0x33, + 0x3d, 0x3b, 0xed, 0x67, 0xfd, 0xce, 0x8f, 0xf5, 0xdf, 0x95, 0xa3, 0x16, 0x16, 0xa7, 0xbe, 0x90, + 0x89, 0x04, 0x18, 0xb1, 0x30, 0xb9, 0x06, 0x8b, 0x03, 0x1f, 0x7b, 0xba, 0xef, 0xe2, 0x8e, 0xb5, + 0x67, 0x61, 0x53, 0x67, 0xc5, 0x21, 0x5a, 0x1c, 0x22, 0x79, 0x6d, 0x91, 0x45, 0x65, 0x66, 0x2d, + 0x65, 0x8e, 0x65, 0x2e, 0x65, 0x3e, 0x69, 0x28, 0x73, 0x1d, 0xca, 0x5f, 0xc2, 0x07, 0x6c, 0xb1, + 0x3f, 0x26, 0x9f, 0xfa, 0x9d, 0x12, 0x2c, 0xe7, 0x1c, 0x03, 0xd1, 0x95, 0xa2, 0x3b, 0xd0, 0x5d, + 0xec, 0x59, 0x8e, 0x29, 0x7a, 0xad, 0xe3, 0x0e, 0x5a, 0x34, 0x01, 0x9d, 0x04, 0xf2, 0xa1, 0x7f, + 0x63, 0xe0, 0xf0, 0x60, 0xb4, 0xa8, 0x95, 0x3b, 0xee, 0xe0, 0xcb, 0xe4, 0x5b, 0xf0, 0xfa, 0xfb, + 0x86, 0x87, 0x99, 0xff, 0x60, 0xbc, 0x6d, 0x9a, 0x80, 0x5e, 0x81, 0xe3, 0x6c, 0x6e, 0xd4, 0x7b, + 0x56, 0xdf, 0x22, 0x5e, 0x36, 0x36, 0x34, 0x8a, 0x1a, 0x62, 0x99, 0x0f, 0x49, 0x5e, 0xd3, 0x66, + 0x83, 0x41, 0x85, 0xaa, 0xe3, 0xf4, 0x75, 0xbf, 0xe3, 0x78, 0x58, 0x37, 0xcc, 0x8f, 0xe8, 0x38, + 0x28, 0x6a, 0x33, 0x8e, 0xd3, 0x6f, 0x93, 0xb4, 0x86, 0xf9, 0x11, 0x3a, 0x03, 0x33, 0x1d, 0x77, + 0xe0, 0xe3, 0x40, 0x27, 0x7f, 0xe8, 0x66, 0x5d, 0x45, 0x03, 0x96, 0xb4, 0xe6, 0x0e, 0xfc, 0x18, + 0x41, 0x9f, 0x2c, 0xcf, 0xa6, 0xe3, 0x04, 0x9b, 0xb8, 0x4f, 0x4f, 0xd4, 0xf7, 0x07, 0x5d, 0xec, + 0x1a, 0x5d, 0xcc, 0xaa, 0x26, 0x76, 0xdc, 0xa4, 0x13, 0xf5, 0x77, 0x39, 0x09, 0xad, 0xa0, 0x36, + 0xb7, 0x1f, 0xff, 0xf4, 0xd1, 0x7b, 0x30, 0x3d, 0xb0, 0xa9, 0x01, 0xac, 0x54, 0x28, 0xef, 0xb5, + 0x31, 0x0e, 0xdd, 0xae, 0xec, 0x32, 0x16, 0x7e, 0x06, 0xc8, 0x05, 0xa0, 0xdb, 0x50, 0xe7, 0x8a, + 0xf2, 0x9f, 0x1a, 0x6e, 0x52, 0x5b, 0x40, 0x55, 0xb0, 0xc4, 0x28, 0xda, 0x4f, 0x0d, 0x37, 0xae, + 0xb1, 0xfa, 0x6d, 0x98, 0x8d, 0x0b, 0x3d, 0x94, 0x2d, 0xdd, 0x83, 0xaa, 0xd4, 0x48, 0xd2, 0xdb, + 0x54, 0x29, 0xbe, 0xf5, 0x4d, 0x31, 0xb6, 0xca, 0x24, 0xa1, 0x6d, 0x7d, 0x93, 0xe2, 0x20, 0x68, + 0xcd, 0xa8, 0x9c, 0x92, 0xc6, 0x3e, 0x54, 0x03, 0xaa, 0x12, 0xf4, 0x80, 0xb8, 0x64, 0x8a, 0x31, + 0xe0, 0x2e, 0x99, 0xfc, 0x26, 0x69, 0x9e, 0xd3, 0x13, 0x35, 0xa0, 0xbf, 0x49, 0x1a, 0x3d, 0x80, + 0x66, 0xc7, 0x69, 0xf4, 0x37, 0x2d, 0x02, 0x3f, 0xe1, 0x30, 0xa6, 0x8a, 0xc6, 0x3e, 0xd4, 0xdf, + 0x52, 0x00, 0xd6, 0x0c, 0xd7, 0x78, 0x64, 0xf5, 0xac, 0xe0, 0x00, 0x5d, 0x84, 0x9a, 0x61, 0x9a, + 0x7a, 0x47, 0xa4, 0x58, 0x58, 0xe0, 0xca, 0xe6, 0x0d, 0xd3, 0x5c, 0x8b, 0x25, 0xa3, 0x97, 0x60, + 0x81, 0x38, 0x54, 0x99, 0x96, 0x01, 0xcd, 0x6a, 0x24, 0x43, 0x22, 0xbe, 0x09, 0x2b, 0x44, 0xae, + 0xd1, 0x7f, 0x64, 0x61, 0x3b, 0x90, 0x79, 0x18, 0x02, 0x6d, 0xc9, 0x30, 0xcd, 0x06, 0xcb, 0x8e, + 0x73, 0xaa, 0xbf, 0x33, 0x0d, 0xa7, 0xe5, 0x1e, 0x4f, 0xa2, 0x41, 0x6e, 0xc3, 0x6c, 0xa2, 0xbe, + 0x29, 0x1c, 0x45, 0xd4, 0x42, 0x4d, 0xa2, 0x4d, 0x60, 0x11, 0x0a, 0x29, 0x2c, 0x42, 0x26, 0xd2, + 0xa4, 0xf8, 0x29, 0x21, 0x4d, 0x4a, 0x9f, 0x10, 0x69, 0x32, 0x79, 0x54, 0xa4, 0xc9, 0xec, 0xd8, + 0x48, 0x93, 0x17, 0xa8, 0xeb, 0x15, 0x25, 0xd2, 0x70, 0x80, 0xf9, 0x84, 0x6a, 0x28, 0xdd, 0x16, + 0x60, 0xc7, 0x04, 0x22, 0x65, 0xfa, 0x30, 0x88, 0x94, 0xf2, 0x11, 0x11, 0x29, 0x0b, 0x9f, 0x0a, + 0x22, 0xe5, 0x2c, 0xcc, 0xda, 0x8e, 0x6e, 0xe3, 0xa7, 0x3a, 0xe9, 0x7a, 0x9f, 0xe2, 0x5c, 0xca, + 0x1a, 0xd8, 0xce, 0x16, 0x7e, 0xda, 0x22, 0x29, 0xe8, 0x1c, 0xcc, 0xf6, 0x0d, 0xff, 0x31, 0x36, + 0x29, 0x34, 0xc4, 0x5f, 0xa9, 0x52, 0x9b, 0x9d, 0x61, 0x69, 0x2d, 0x92, 0x84, 0x9e, 0x87, 0xb0, + 0xad, 0x9c, 0x68, 0x8e, 0x12, 0x55, 0x45, 0x2a, 0x23, 0x8b, 0xa1, 0x5b, 0xe6, 0x8f, 0x88, 0x6e, + 0xa9, 0x1d, 0x06, 0xdd, 0x72, 0x19, 0x6a, 0xe2, 0xb7, 0x80, 0xb7, 0xb0, 0xd3, 0x0a, 0x8a, 0x6c, + 0x99, 0x17, 0x79, 0x02, 0xc2, 0x92, 0x07, 0x86, 0x81, 0xa1, 0x60, 0x98, 0x3f, 0x50, 0xf8, 0xba, + 0x39, 0x1c, 0xa4, 0xfc, 0x14, 0x5e, 0x02, 0x50, 0x28, 0x47, 0x01, 0x50, 0xa0, 0x9d, 0x5c, 0x88, + 0xc9, 0xc5, 0x7c, 0x49, 0xa3, 0x40, 0x26, 0xaa, 0x05, 0x48, 0xe6, 0xa0, 0x03, 0x85, 0xc3, 0x28, + 0xd8, 0x4c, 0x4d, 0x61, 0x14, 0x35, 0x28, 0x76, 0x39, 0xb0, 0xa2, 0xa8, 0x91, 0x9f, 0x79, 0x16, + 0x5c, 0xcc, 0xb3, 0x60, 0x75, 0x33, 0x5c, 0x3d, 0x7f, 0x1a, 0xc8, 0x3f, 0xf5, 0x5f, 0x15, 0x38, + 0xcd, 0xe5, 0xe5, 0xc0, 0xe3, 0x32, 0x06, 0xad, 0x92, 0x33, 0x68, 0x3b, 0x1e, 0x36, 0xb1, 0x1d, + 0x58, 0x46, 0x8f, 0xc6, 0x63, 0xe2, 0x40, 0x3c, 0x4a, 0xa6, 0x21, 0xe1, 0x39, 0x98, 0x65, 0x20, + 0x5a, 0xbe, 0x90, 0x66, 0x58, 0xd9, 0x19, 0x8a, 0xa3, 0xe5, 0x6b, 0xe5, 0xed, 0x2c, 0x47, 0x59, + 0xca, 0xdd, 0x81, 0x19, 0xe9, 0x2f, 0x55, 0x07, 0x96, 0x73, 0xa0, 0x09, 0x99, 0x16, 0xa1, 0xa4, + 0x2d, 0x62, 0xa8, 0x92, 0xd2, 0x16, 0xf1, 0x1d, 0x05, 0xce, 0xa4, 0x16, 0xf4, 0x9f, 0xbf, 0x66, + 0xd5, 0x3f, 0x56, 0x42, 0xfb, 0x49, 0x8e, 0xae, 0xb5, 0xf4, 0xe8, 0x7a, 0x7e, 0xd8, 0xfe, 0x44, + 0xe6, 0xf8, 0x7a, 0x3f, 0x77, 0x7c, 0xbd, 0x34, 0x74, 0xaf, 0x63, 0x94, 0x3e, 0xff, 0x49, 0x81, + 0x13, 0xb9, 0x15, 0x48, 0x84, 0xb7, 0x4a, 0x32, 0xbc, 0xe5, 0xa1, 0x71, 0xb4, 0x98, 0x61, 0xa1, + 0x31, 0x5d, 0xaf, 0xf0, 0x18, 0x54, 0xef, 0x1b, 0xcf, 0xac, 0xfe, 0xa0, 0xcf, 0x63, 0x63, 0x22, + 0x6e, 0x93, 0xa5, 0x1c, 0x25, 0x38, 0xbe, 0x0a, 0x8b, 0x6c, 0xde, 0xa2, 0xf1, 0x59, 0xc4, 0xc1, + 0x62, 0xe4, 0x05, 0x96, 0x47, 0x42, 0x35, 0xce, 0xa0, 0x36, 0x60, 0x21, 0x6c, 0xd6, 0x50, 0x68, + 0x56, 0x0c, 0x6a, 0x55, 0x90, 0xa1, 0x56, 0x36, 0x4c, 0xad, 0xe3, 0x27, 0x56, 0x07, 0x7f, 0x2a, + 0x60, 0xf6, 0xb3, 0x30, 0xe3, 0x62, 0xaf, 0x6f, 0xf9, 0x7e, 0x18, 0xa4, 0x54, 0xb4, 0x78, 0x92, + 0x7a, 0x06, 0x2a, 0x6b, 0xeb, 0x4d, 0x5e, 0x64, 0x46, 0x55, 0xd5, 0x7f, 0x9b, 0x82, 0xf9, 0xa4, + 0x8d, 0xdd, 0x4a, 0x41, 0xbf, 0x4e, 0x67, 0x6e, 0x1b, 0x66, 0xec, 0x97, 0x87, 0xb8, 0xf1, 0xc2, + 0x18, 0xb8, 0xf1, 0x15, 0x98, 0xee, 0x38, 0xfd, 0xbe, 0x61, 0x9b, 0xe2, 0x4a, 0x02, 0xff, 0x24, + 0x35, 0x35, 0xbc, 0x2e, 0xdb, 0x29, 0xaf, 0x68, 0xf4, 0x37, 0x31, 0x01, 0xe2, 0x0c, 0x2d, 0x9b, + 0x82, 0xc7, 0x68, 0x2f, 0x55, 0x34, 0xe0, 0x49, 0xeb, 0x96, 0x87, 0x2e, 0x40, 0x09, 0xdb, 0x4f, + 0xc4, 0x11, 0x9a, 0xb4, 0x63, 0x2b, 0x96, 0x78, 0x1a, 0xa5, 0x40, 0x17, 0x61, 0xaa, 0x4f, 0xcc, + 0x4a, 0x00, 0x0c, 0x16, 0x52, 0xd0, 0x7d, 0x8d, 0x13, 0xa0, 0x97, 0x61, 0xda, 0xa4, 0xda, 0x13, + 0x6b, 0x1a, 0x24, 0xc1, 0xd0, 0x68, 0x96, 0x26, 0x48, 0xd0, 0x3b, 0xe1, 0x71, 0x41, 0x25, 0x7d, + 0x8e, 0x97, 0x50, 0x73, 0xe6, 0x49, 0xc1, 0x96, 0xbc, 0xe6, 0x86, 0xf4, 0xa1, 0x43, 0x52, 0xca, + 0xf0, 0x95, 0xf7, 0x09, 0x28, 0xf7, 0x9c, 0x2e, 0xb3, 0x9e, 0x19, 0x76, 0x9f, 0xa5, 0xe7, 0x74, + 0xa9, 0xf1, 0x2c, 0xc2, 0xa4, 0x1f, 0x98, 0x96, 0x4d, 0x43, 0xc3, 0xb2, 0xc6, 0x3e, 0xc8, 0x20, + 0xa5, 0x3f, 0x74, 0xc7, 0xee, 0xe0, 0x95, 0x2a, 0xcd, 0xaa, 0xd0, 0x94, 0x6d, 0xbb, 0x43, 0x97, + 0xc8, 0x41, 0x70, 0xb0, 0x32, 0x47, 0xd3, 0xc9, 0xcf, 0x68, 0xd7, 0x7e, 0x3e, 0x67, 0xd7, 0x3e, + 0x51, 0xe1, 0x8c, 0x5d, 0xfb, 0x5a, 0xee, 0x9c, 0x91, 0xe4, 0x15, 0x2c, 0x24, 0x2c, 0x5e, 0x5b, + 0x6f, 0xea, 0xa2, 0x6b, 0x16, 0xd2, 0x30, 0xfc, 0xd0, 0xec, 0x35, 0x08, 0x7f, 0x7e, 0xae, 0x87, + 0x26, 0x3f, 0x54, 0x60, 0x69, 0x8d, 0x1e, 0x19, 0xc7, 0x7c, 0xe3, 0x61, 0xd0, 0x56, 0xaf, 0x86, + 0x10, 0xb8, 0x0c, 0x1c, 0x53, 0x52, 0x53, 0x02, 0x01, 0xb7, 0x06, 0x73, 0x42, 0x2c, 0x67, 0x2e, + 0x8e, 0x81, 0x9f, 0xab, 0xfa, 0xf1, 0x4f, 0xf5, 0x0e, 0x2c, 0xa7, 0x6a, 0xce, 0x0f, 0xee, 0x92, + 0xf7, 0x35, 0x58, 0xc5, 0xe3, 0xf7, 0x35, 0xd4, 0xdb, 0x70, 0xbc, 0x1d, 0x18, 0x5e, 0x90, 0x6a, + 0xf6, 0x18, 0xbc, 0x14, 0x19, 0x27, 0xf3, 0x72, 0xf0, 0x5a, 0x1b, 0x16, 0xdb, 0x81, 0xe3, 0x1e, + 0x41, 0x28, 0xf1, 0x3b, 0xa4, 0xe5, 0xce, 0x40, 0xcc, 0x33, 0xe2, 0x53, 0x5d, 0x66, 0x38, 0xbe, + 0x74, 0x69, 0x6f, 0xc2, 0x12, 0x83, 0xd1, 0x1d, 0xa5, 0x11, 0x27, 0x04, 0x88, 0x2f, 0x2d, 0xf7, + 0x01, 0x1c, 0x93, 0x8e, 0x12, 0x38, 0xec, 0xe4, 0x9a, 0x0c, 0x3b, 0xc9, 0x3f, 0xb5, 0x09, 0x51, + 0x27, 0xbf, 0x5e, 0x88, 0xf9, 0xf1, 0x9c, 0xb3, 0xe7, 0xd7, 0x64, 0xd0, 0xc9, 0x99, 0x7c, 0xa9, + 0x12, 0xe6, 0x24, 0x6d, 0x9d, 0xc5, 0x0c, 0xeb, 0xdc, 0x4d, 0x1d, 0x6c, 0x97, 0xd2, 0xa0, 0xa1, + 0x44, 0x0d, 0x3f, 0x93, 0x23, 0xed, 0x87, 0x0c, 0x98, 0x12, 0x16, 0x1d, 0x9e, 0x66, 0xbf, 0x9a, + 0x38, 0xcd, 0x3e, 0x39, 0xa4, 0xa6, 0xe1, 0x39, 0xf6, 0xf7, 0x4b, 0x50, 0x09, 0xf3, 0x52, 0x1a, + 0x4e, 0xab, 0xaa, 0x90, 0xa1, 0xaa, 0xf8, 0xfc, 0x5a, 0x3c, 0xe2, 0xfc, 0x5a, 0x1a, 0x63, 0x7e, + 0x3d, 0x09, 0x15, 0x76, 0x2f, 0xcb, 0xc3, 0x7b, 0x7c, 0xbe, 0x2c, 0xd3, 0x04, 0x0d, 0xef, 0x45, + 0x26, 0x36, 0x35, 0xa6, 0x89, 0x25, 0x40, 0x30, 0xd3, 0x49, 0x10, 0xcc, 0xad, 0x70, 0xee, 0x2b, + 0xa7, 0x0f, 0x9d, 0x42, 0x89, 0x99, 0xb3, 0x5e, 0x62, 0xa7, 0xb9, 0x92, 0xde, 0x69, 0x8e, 0xf8, + 0x47, 0xce, 0x77, 0xac, 0xc9, 0x96, 0xc9, 0x2f, 0xa1, 0x4d, 0xd3, 0xef, 0xa6, 0xf9, 0x79, 0xba, + 0xfe, 0x6d, 0x06, 0x7a, 0x89, 0x9b, 0x20, 0x77, 0x9f, 0xaf, 0x49, 0xe7, 0x8d, 0x4a, 0xc6, 0x34, + 0x16, 0xba, 0x8c, 0xf8, 0x19, 0xe3, 0x2e, 0x2c, 0x25, 0xc1, 0x72, 0x87, 0x72, 0x7f, 0x39, 0xa8, + 0xdd, 0x9f, 0xc5, 0x83, 0xc1, 0x1c, 0x88, 0xea, 0xad, 0x14, 0x9a, 0x62, 0x6c, 0xe3, 0xbd, 0x26, + 0x03, 0xaf, 0x0e, 0x6d, 0x72, 0x29, 0xdc, 0x15, 0x0d, 0x56, 0x0c, 0x8f, 0x67, 0xb3, 0xb8, 0xbd, + 0xc2, 0x53, 0x1a, 0x74, 0xd1, 0xb0, 0x67, 0xd9, 0x96, 0xbf, 0xcf, 0xf2, 0xa7, 0xd8, 0xa2, 0x41, + 0x24, 0x35, 0xe8, 0xfe, 0x2c, 0x7e, 0x66, 0x05, 0x7a, 0xc7, 0x31, 0x31, 0x35, 0xe8, 0x49, 0xad, + 0x4c, 0x12, 0xd6, 0x1c, 0x13, 0x47, 0x43, 0xad, 0x7c, 0xd8, 0xa1, 0x56, 0x49, 0x0c, 0xb5, 0x25, + 0x98, 0xf2, 0xb0, 0xe1, 0x3b, 0x36, 0x37, 0x49, 0xfe, 0x45, 0x3a, 0xa2, 0x8f, 0x7d, 0x9f, 0x94, + 0xc1, 0x63, 0x33, 0xfe, 0x19, 0x8b, 0x23, 0x67, 0x87, 0xc4, 0x91, 0x43, 0x00, 0xb0, 0x89, 0x38, + 0xb2, 0x3a, 0x24, 0x8e, 0x1c, 0x0b, 0xff, 0x1a, 0x45, 0xcc, 0x73, 0xa3, 0x22, 0xe6, 0x78, 0xc8, + 0x39, 0x2f, 0x87, 0x9c, 0x77, 0xe2, 0x8b, 0xd7, 0x5a, 0x1a, 0x0e, 0x30, 0x7c, 0xd5, 0x1a, 0x1f, + 0xdb, 0x0b, 0xd2, 0xd8, 0x46, 0x97, 0xf9, 0x26, 0x39, 0x4a, 0x6f, 0xaf, 0x4a, 0xbb, 0x3d, 0x6c, + 0xff, 0xfc, 0xf3, 0x74, 0x05, 0x7f, 0xa3, 0xc0, 0x72, 0x6a, 0xe8, 0x72, 0x67, 0xf0, 0x6a, 0x02, + 0xa3, 0x3b, 0x14, 0x1c, 0x2b, 0x20, 0xba, 0x0d, 0x09, 0xa2, 0x7b, 0x79, 0x18, 0x4b, 0x0e, 0x42, + 0xf7, 0xe8, 0xa8, 0xd9, 0x6f, 0x2b, 0x80, 0x32, 0x16, 0xfa, 0xb7, 0xc4, 0x92, 0xe0, 0x10, 0xbb, + 0x7f, 0x7c, 0x55, 0xf0, 0x4e, 0xb4, 0x2a, 0x28, 0x1c, 0x66, 0x73, 0x23, 0x84, 0xf3, 0x6c, 0x40, + 0x55, 0xde, 0xdf, 0xbb, 0x21, 0x57, 0x66, 0x35, 0xbf, 0x32, 0xd4, 0x40, 0x18, 0xb1, 0xfa, 0xb3, + 0x02, 0x9c, 0xd9, 0x75, 0xcd, 0x44, 0xc8, 0xcb, 0x0b, 0x1b, 0xdf, 0xd5, 0xde, 0x92, 0x21, 0x4d, + 0x47, 0xd4, 0x44, 0xf1, 0x28, 0x9a, 0x40, 0x5f, 0xcf, 0x02, 0x9d, 0xdd, 0x91, 0x8e, 0x87, 0x87, + 0x37, 0x70, 0x04, 0xfe, 0xec, 0x93, 0x8e, 0x04, 0x15, 0xce, 0xe6, 0x57, 0x80, 0x87, 0xc7, 0xff, + 0x13, 0xe6, 0x37, 0x9e, 0xe1, 0x4e, 0xfb, 0xc0, 0xee, 0x1c, 0x42, 0xeb, 0x35, 0x28, 0x76, 0xfa, + 0x26, 0x3f, 0x98, 0x22, 0x3f, 0xe3, 0x11, 0x7f, 0x51, 0x8e, 0xf8, 0x75, 0xa8, 0x45, 0x25, 0xf0, + 0x71, 0xb8, 0x44, 0xc6, 0xa1, 0x49, 0x88, 0x89, 0xf0, 0x59, 0x8d, 0x7f, 0xf1, 0x74, 0xec, 0xb1, + 0x4b, 0x44, 0x2c, 0x1d, 0x7b, 0x9e, 0x3c, 0x8d, 0x14, 0xe5, 0x69, 0x44, 0xfd, 0xae, 0x02, 0x33, + 0xa4, 0x84, 0x4f, 0x54, 0x7f, 0xbe, 0xec, 0x2e, 0x46, 0xcb, 0xee, 0x70, 0xf5, 0x5e, 0x8a, 0xaf, + 0xde, 0xa3, 0x9a, 0x4f, 0xd2, 0xe4, 0x74, 0xcd, 0xa7, 0xc2, 0x74, 0xec, 0x79, 0xea, 0x59, 0x98, + 0x65, 0x75, 0xe3, 0x2d, 0xaf, 0x41, 0x71, 0xe0, 0xf5, 0x44, 0xff, 0x0d, 0xbc, 0x9e, 0xfa, 0x2d, + 0x05, 0xaa, 0x8d, 0x20, 0x30, 0x3a, 0xfb, 0x87, 0x68, 0x40, 0x58, 0xb9, 0x42, 0xbc, 0x72, 0xe9, + 0x46, 0x44, 0xd5, 0x2d, 0xe5, 0x54, 0x77, 0x52, 0xaa, 0xae, 0x0a, 0x73, 0xa2, 0x2e, 0xb9, 0x15, + 0xde, 0x02, 0xd4, 0x72, 0xbc, 0xe0, 0xbe, 0xe3, 0x3d, 0x35, 0x3c, 0xf3, 0x70, 0x2b, 0x6c, 0x04, + 0x25, 0xfe, 0x7a, 0x45, 0xf1, 0xc2, 0xa4, 0x46, 0x7f, 0xab, 0x2f, 0xc2, 0x31, 0x49, 0x5e, 0x6e, + 0xc1, 0xb7, 0x61, 0x86, 0x86, 0x05, 0x7c, 0xf1, 0xf5, 0x52, 0x1c, 0x53, 0x31, 0x22, 0x7c, 0x50, + 0xd7, 0x61, 0x81, 0x04, 0x88, 0x34, 0x3d, 0xf4, 0x2f, 0x57, 0x13, 0xeb, 0x93, 0xe5, 0x94, 0x88, + 0xc4, 0xda, 0xe4, 0x17, 0x0a, 0x4c, 0x32, 0xf8, 0x44, 0x32, 0x68, 0x3b, 0x49, 0x26, 0x5e, 0xd7, + 0xd1, 0x03, 0xa3, 0x1b, 0xbe, 0x0c, 0x42, 0x12, 0x76, 0x8c, 0x2e, 0x3d, 0xe8, 0xa2, 0x99, 0xa6, + 0xd5, 0xc5, 0x7e, 0x20, 0x0e, 0x67, 0x67, 0x48, 0xda, 0x3a, 0x4b, 0x22, 0x8a, 0xa1, 0x67, 0xd8, + 0x25, 0x7a, 0x54, 0x4d, 0x7f, 0xa3, 0x0b, 0xec, 0xe0, 0x64, 0xf8, 0x89, 0x24, 0x3d, 0x50, 0xa9, + 0x43, 0x39, 0x71, 0x94, 0x18, 0x7e, 0xa3, 0x8b, 0x50, 0xa2, 0x7b, 0xe5, 0xd3, 0xc3, 0xb4, 0x44, + 0x49, 0x88, 0x55, 0xb8, 0x96, 0x6d, 0x63, 0x93, 0x3f, 0x5b, 0xc1, 0xbf, 0xd4, 0x77, 0x00, 0xc5, + 0x95, 0xc7, 0x3b, 0xe8, 0x22, 0x4c, 0x51, 0xdd, 0x8a, 0xa8, 0x7a, 0x21, 0x25, 0x5a, 0xe3, 0x04, + 0xea, 0xd7, 0x00, 0xb1, 0xb2, 0xa4, 0x48, 0xfa, 0x30, 0x1d, 0x38, 0x24, 0xa6, 0xfe, 0x81, 0x02, + 0xc7, 0x24, 0xe9, 0xbc, 0x7e, 0x2f, 0xca, 0xe2, 0x33, 0xaa, 0xc7, 0x45, 0xbf, 0x25, 0x4d, 0xf0, + 0x17, 0xd3, 0xd5, 0xf8, 0x6f, 0x9a, 0xdc, 0xff, 0x4e, 0x01, 0x68, 0x0c, 0x82, 0x7d, 0xbe, 0x29, + 0x1c, 0xef, 0x44, 0x25, 0xd1, 0x89, 0x75, 0x28, 0xbb, 0x86, 0xef, 0x3f, 0x75, 0x3c, 0xb1, 0xe0, + 0x0d, 0xbf, 0xe9, 0x56, 0xee, 0x80, 0xbf, 0xd5, 0x51, 0xd1, 0xe8, 0x6f, 0xf4, 0x3c, 0xcc, 0xb1, + 0x27, 0x6b, 0x74, 0xc3, 0x34, 0x3d, 0x81, 0xd3, 0xac, 0x68, 0x55, 0x96, 0xda, 0x60, 0x89, 0x84, + 0xcc, 0xa2, 0x27, 0x27, 0xc1, 0x81, 0x1e, 0x38, 0x8f, 0xb1, 0xcd, 0x17, 0xb1, 0x55, 0x91, 0xba, + 0x43, 0x12, 0xd9, 0x29, 0x6c, 0xd7, 0xf2, 0x03, 0x4f, 0x90, 0x89, 0xf3, 0x6a, 0x9e, 0x4a, 0xc9, + 0xd4, 0x3f, 0x54, 0xa0, 0xd6, 0x1a, 0xf4, 0x7a, 0x4c, 0xb9, 0x47, 0xe9, 0xe4, 0x4b, 0xbc, 0x29, + 0x85, 0xb4, 0xc9, 0x47, 0x8a, 0xe2, 0x4d, 0xfc, 0x54, 0xf6, 0xdd, 0xae, 0xc1, 0x42, 0xac, 0xc6, + 0xdc, 0x70, 0xa4, 0xa5, 0x86, 0x22, 0x2f, 0x35, 0xd4, 0x06, 0x20, 0xb6, 0xd5, 0x74, 0xe4, 0x56, + 0xaa, 0xc7, 0xe1, 0x98, 0x24, 0x82, 0x4f, 0xc5, 0x97, 0xa0, 0xca, 0x31, 0x83, 0xdc, 0x20, 0x4e, + 0x40, 0x99, 0xb8, 0xd4, 0x8e, 0x65, 0x0a, 0x70, 0xca, 0xb4, 0xeb, 0x98, 0x6b, 0x96, 0xe9, 0xa9, + 0x5f, 0x86, 0x2a, 0x7f, 0x94, 0x80, 0xd3, 0xde, 0x85, 0x39, 0x7e, 0x96, 0xa9, 0x4b, 0xb7, 0x78, + 0x4f, 0x64, 0x00, 0x53, 0x85, 0x2a, 0xec, 0xf8, 0xa7, 0xfa, 0x75, 0xa8, 0xb3, 0x68, 0x41, 0x12, + 0x2c, 0x1a, 0x78, 0x17, 0x04, 0x2e, 0x6c, 0x88, 0x7c, 0x99, 0xb3, 0xea, 0xc5, 0x3f, 0xd5, 0xd3, + 0x70, 0x32, 0x53, 0x3e, 0x6f, 0xbd, 0x0b, 0xb5, 0x28, 0x83, 0x5d, 0x35, 0x0d, 0x11, 0x37, 0x4a, + 0x0c, 0x71, 0xb3, 0x14, 0x86, 0xf0, 0x05, 0x31, 0x73, 0xd1, 0x28, 0x3d, 0x5a, 0x02, 0x16, 0xf3, + 0x96, 0x80, 0x25, 0x69, 0x09, 0xa8, 0x6e, 0x86, 0x3a, 0xe4, 0x0b, 0xf1, 0x3b, 0x74, 0xab, 0x80, + 0x95, 0x2d, 0x9c, 0xda, 0xa9, 0xec, 0xf6, 0x31, 0x22, 0x2d, 0x46, 0xaf, 0x5e, 0x84, 0xaa, 0xec, + 0xde, 0x62, 0x1e, 0x4b, 0x91, 0x3d, 0xd6, 0xff, 0x82, 0x25, 0x4d, 0x02, 0xd9, 0xdd, 0xc7, 0x46, + 0x30, 0xf0, 0xb0, 0x8f, 0xde, 0x84, 0x7a, 0xc6, 0x2b, 0x42, 0x3a, 0x5f, 0x19, 0x32, 0x31, 0xcb, + 0xa9, 0xc7, 0x84, 0x36, 0xd9, 0xba, 0xf0, 0x45, 0x98, 0xa7, 0x20, 0xc0, 0xd8, 0xe5, 0x59, 0xa6, + 0x23, 0xfa, 0xbc, 0xcc, 0x56, 0x74, 0x53, 0xd6, 0x0c, 0x9f, 0xb4, 0xe0, 0xe5, 0x67, 0x9e, 0xb1, + 0xbd, 0x0d, 0xe5, 0x3d, 0x5e, 0x2f, 0x3e, 0x20, 0xd5, 0x0c, 0x65, 0x24, 0x5a, 0xa0, 0x85, 0x3c, + 0xea, 0x36, 0xcc, 0x73, 0x9a, 0xb0, 0x79, 0x77, 0x86, 0xe2, 0x4e, 0x58, 0xf3, 0x72, 0x11, 0x25, + 0xea, 0x0f, 0x0a, 0x30, 0x97, 0xf0, 0xf1, 0xaf, 0x24, 0x16, 0x74, 0x59, 0xe6, 0x98, 0x58, 0xce, + 0xdd, 0x94, 0xbc, 0xbd, 0x8c, 0x72, 0x19, 0x7e, 0xcf, 0x72, 0x03, 0x6a, 0x09, 0xc8, 0xa4, 0x80, + 0x4b, 0xd7, 0xf3, 0x15, 0xa3, 0xcd, 0xcb, 0x78, 0x4a, 0x1f, 0xbd, 0x11, 0xd3, 0x6b, 0x29, 0xbd, + 0x0c, 0x4d, 0xe8, 0x2c, 0x52, 0xe8, 0xd1, 0x27, 0x9a, 0x45, 0x3e, 0xfd, 0xde, 0xf7, 0x09, 0x3f, + 0xb7, 0x4f, 0xf5, 0x3c, 0xcc, 0xec, 0xe6, 0xbd, 0x1a, 0x54, 0x12, 0x48, 0xcc, 0xd7, 0x61, 0xf1, + 0xbe, 0xd5, 0xc3, 0xfe, 0x81, 0x1f, 0xe0, 0x7e, 0x93, 0xce, 0x0a, 0x7b, 0x16, 0xf6, 0xd0, 0x2a, + 0x00, 0x35, 0x4a, 0xd7, 0xb1, 0xc2, 0x57, 0x4c, 0x62, 0x29, 0xea, 0x4f, 0x15, 0x98, 0x8f, 0x18, + 0xc7, 0x81, 0xdb, 0xbe, 0x06, 0x93, 0x7b, 0xbe, 0xd8, 0xd0, 0x4d, 0x1c, 0x73, 0x65, 0x55, 0x41, + 0x2b, 0xed, 0xf9, 0x4d, 0x13, 0xbd, 0x0e, 0x30, 0xf0, 0xb1, 0xc9, 0x4f, 0x96, 0x47, 0x00, 0xa0, + 0x2b, 0x84, 0x94, 0x9d, 0x4d, 0xdf, 0x84, 0x19, 0xcb, 0x76, 0x4c, 0x4c, 0x51, 0x07, 0xe6, 0x28, + 0xf0, 0x33, 0x30, 0xda, 0x5d, 0x1f, 0x9b, 0xea, 0xef, 0x46, 0xd8, 0x81, 0x2f, 0x72, 0x0b, 0xd5, + 0x3f, 0x12, 0x71, 0x91, 0xe8, 0x76, 0x3e, 0x66, 0xde, 0x85, 0x05, 0x36, 0xbd, 0xed, 0x85, 0x65, + 0x66, 0xde, 0x0a, 0x4b, 0x34, 0x4e, 0xab, 0x59, 0x3c, 0x22, 0x16, 0x4c, 0xa8, 0x05, 0xc7, 0xa3, + 0x85, 0x4a, 0x5c, 0x5a, 0x61, 0xb4, 0xb4, 0xc5, 0x4e, 0x6c, 0xff, 0x5f, 0x30, 0xaa, 0xb7, 0xe1, + 0x78, 0xe2, 0xe2, 0xc7, 0xf8, 0x87, 0x40, 0xef, 0x25, 0xb6, 0x6c, 0x23, 0x2f, 0x71, 0x4d, 0xbe, + 0x6f, 0x38, 0xec, 0x8a, 0x0e, 0xbf, 0xfa, 0xb6, 0x0b, 0x27, 0xa4, 0xfd, 0x64, 0xa9, 0x2e, 0x37, + 0x13, 0xcb, 0x86, 0xb3, 0xf9, 0xf2, 0x12, 0xeb, 0x87, 0x7f, 0x57, 0x60, 0x31, 0x8b, 0xe0, 0x88, + 0xc7, 0x1c, 0x1f, 0xe6, 0xdc, 0x55, 0x7e, 0x75, 0x54, 0x85, 0x3e, 0x93, 0x63, 0xa1, 0x2d, 0x76, + 0xd3, 0x71, 0x74, 0x9f, 0x14, 0xc7, 0xeb, 0x93, 0x5f, 0x14, 0x62, 0x47, 0x79, 0x43, 0x6e, 0x23, + 0x7e, 0x82, 0xfd, 0xf3, 0xb5, 0xc4, 0x65, 0xc4, 0x97, 0x32, 0x19, 0x47, 0xdc, 0x45, 0xd4, 0xb2, + 0xb6, 0x85, 0xae, 0x8d, 0x92, 0xf4, 0x85, 0xbd, 0x8a, 0xf8, 0x1b, 0x05, 0x98, 0x93, 0x3b, 0x04, + 0xbd, 0x93, 0x71, 0x13, 0xf1, 0xcc, 0x88, 0x06, 0x4a, 0x17, 0x11, 0xf9, 0xcd, 0xbf, 0xc2, 0xf8, + 0x37, 0xff, 0x8a, 0xe3, 0xdd, 0xfc, 0xbb, 0x07, 0x73, 0x4f, 0x3d, 0x2b, 0x30, 0x1e, 0xf5, 0xb0, + 0xde, 0x33, 0x0e, 0xb0, 0x97, 0x35, 0xc3, 0x26, 0x5d, 0x51, 0x55, 0xb0, 0x3c, 0x24, 0x1c, 0x74, + 0xc1, 0xfc, 0xd4, 0x70, 0xf9, 0xba, 0x5b, 0x0a, 0xe5, 0xdb, 0x4f, 0x0d, 0x97, 0xf1, 0x50, 0x12, + 0xf5, 0x5b, 0x05, 0x38, 0x9e, 0x79, 0x5f, 0xed, 0x93, 0xab, 0xe8, 0x72, 0x5c, 0x45, 0x87, 0xb9, + 0x04, 0x58, 0x3c, 0xd4, 0x25, 0xc0, 0x66, 0x8e, 0xc2, 0xb2, 0xb0, 0x22, 0xc3, 0xf5, 0xa6, 0xfe, + 0x99, 0x02, 0x65, 0x51, 0xa9, 0x91, 0x57, 0xf2, 0x96, 0x07, 0x84, 0x4c, 0xa7, 0xd7, 0x26, 0x6c, + 0xc3, 0x76, 0x74, 0x1f, 0x93, 0x58, 0x7a, 0xe4, 0x05, 0xa8, 0x45, 0xca, 0xb7, 0xe6, 0x78, 0x78, + 0xcb, 0xb0, 0x9d, 0x36, 0x63, 0x42, 0x0d, 0xa8, 0x31, 0x79, 0x54, 0x14, 0x11, 0x3a, 0x72, 0xa2, + 0x9c, 0xa3, 0x0c, 0x44, 0x08, 0x11, 0xe6, 0xab, 0x7f, 0xa9, 0xc0, 0x7c, 0x42, 0xb3, 0xbf, 0x7a, + 0x8d, 0xf8, 0x5e, 0x11, 0x66, 0x62, 0xbd, 0x3c, 0xa2, 0x01, 0x6b, 0xb0, 0x20, 0xf0, 0x5e, 0x3e, + 0x0e, 0xc6, 0xbb, 0x80, 0x36, 0xcf, 0x39, 0xda, 0x38, 0x60, 0x71, 0xd4, 0x5d, 0x98, 0x37, 0x9e, + 0x18, 0x56, 0x8f, 0x5a, 0xd0, 0x58, 0x21, 0xca, 0x5c, 0x48, 0x1f, 0x46, 0x62, 0xac, 0xdd, 0x63, + 0x5d, 0x43, 0x03, 0x4a, 0x1b, 0xdd, 0x06, 0xf4, 0xfd, 0x18, 0xa8, 0x70, 0xe8, 0x6d, 0x40, 0xdf, + 0x0f, 0xcb, 0xa3, 0x77, 0x46, 0xe8, 0x35, 0x48, 0x9f, 0xbf, 0x9d, 0x93, 0x5f, 0x1e, 0xa1, 0xbd, + 0x4f, 0x49, 0x89, 0xc2, 0xfa, 0xc6, 0x47, 0x8e, 0xa7, 0xc7, 0xf9, 0xa7, 0x47, 0x28, 0x8c, 0x72, + 0xb4, 0x42, 0x21, 0xea, 0x9f, 0x28, 0x50, 0x09, 0xfd, 0xc8, 0x88, 0x1e, 0x6a, 0xc2, 0x22, 0xbd, + 0x60, 0x93, 0xd4, 0xf0, 0x88, 0x4e, 0x42, 0x84, 0xa9, 0x21, 0x6b, 0xb9, 0x01, 0x35, 0x2a, 0x2a, + 0xae, 0xea, 0x51, 0x1d, 0xe5, 0x8b, 0x6a, 0xb2, 0x80, 0xf2, 0xcf, 0x0b, 0x80, 0xd2, 0xae, 0xe4, + 0x57, 0xc6, 0xc8, 0xe2, 0x9d, 0x56, 0x1a, 0xbf, 0xd3, 0x1f, 0xc0, 0xb1, 0x8e, 0xd3, 0xef, 0x5b, + 0xf4, 0x72, 0x96, 0xe3, 0x1d, 0x8c, 0x67, 0x6e, 0x0b, 0x8c, 0x87, 0xe9, 0x89, 0xa9, 0xef, 0x6d, + 0x38, 0xa1, 0x61, 0xc7, 0xc5, 0x76, 0xe8, 0xfa, 0x1f, 0x3a, 0xdd, 0x43, 0xc4, 0xb7, 0xa7, 0xa0, + 0x9e, 0xc5, 0xcf, 0xf7, 0x4f, 0x06, 0x50, 0x5f, 0xdb, 0xc7, 0x9d, 0xc7, 0x74, 0xf9, 0x75, 0x14, + 0xcc, 0x56, 0x1d, 0xca, 0x3d, 0xa7, 0xc3, 0xde, 0x5b, 0xe6, 0x5b, 0x8c, 0xe2, 0x7b, 0xc8, 0xe9, + 0xce, 0x69, 0x38, 0x99, 0x59, 0x2c, 0xaf, 0x15, 0x82, 0xda, 0x03, 0x1c, 0x6c, 0x3c, 0xc1, 0x76, + 0x18, 0x3e, 0xab, 0x3f, 0x2e, 0xc4, 0x02, 0x75, 0x9a, 0x75, 0x08, 0xac, 0x1b, 0x6a, 0x41, 0xb4, + 0x72, 0xd0, 0x31, 0xe1, 0x66, 0xcf, 0x82, 0xb2, 0x47, 0x7b, 0xb3, 0x0f, 0xbb, 0x69, 0x21, 0xf4, + 0x35, 0xd0, 0xe8, 0xc1, 0xa3, 0x30, 0x2d, 0x01, 0x81, 0x28, 0x26, 0x21, 0x10, 0xef, 0x01, 0x8a, + 0x87, 0xe2, 0x7c, 0xbb, 0xa1, 0x34, 0xc6, 0x1b, 0x4f, 0x35, 0x37, 0xf9, 0x1a, 0x59, 0xce, 0x4b, + 0x4d, 0x93, 0x47, 0x7a, 0xa9, 0x49, 0x5d, 0x85, 0x53, 0x24, 0xc0, 0xde, 0xc4, 0x81, 0x67, 0x75, + 0xd6, 0xb1, 0xdf, 0xf1, 0x2c, 0x37, 0x70, 0x42, 0xf8, 0x95, 0xaa, 0xc3, 0xe9, 0x9c, 0x7c, 0xae, + 0xee, 0xb7, 0x61, 0xc6, 0x8c, 0x92, 0xb3, 0x76, 0xbc, 0x92, 0xbc, 0x5a, 0x9c, 0x41, 0xfd, 0x00, + 0x6a, 0x49, 0x82, 0xcc, 0x9d, 0x24, 0x04, 0xa5, 0x7d, 0xdc, 0x73, 0xc5, 0x6d, 0x3a, 0xf2, 0x9b, + 0x68, 0x9d, 0xad, 0x5d, 0x1e, 0xe3, 0x03, 0x71, 0x22, 0x52, 0xa1, 0x29, 0x5f, 0xc2, 0x07, 0x61, + 0xdb, 0xa4, 0xa7, 0x43, 0x3c, 0xab, 0x93, 0x6c, 0x5b, 0x46, 0x7e, 0xd4, 0x36, 0xd2, 0x6d, 0x7d, + 0x96, 0xcc, 0xdb, 0x76, 0x3a, 0xf7, 0x59, 0x12, 0xca, 0x0b, 0xae, 0x63, 0xf2, 0xdf, 0xea, 0xf7, + 0x15, 0x58, 0x48, 0x51, 0x8c, 0x79, 0xca, 0xf5, 0x32, 0x4c, 0x8b, 0x72, 0x0b, 0x69, 0x48, 0x33, + 0x93, 0xa5, 0x09, 0x12, 0xd4, 0x84, 0x85, 0xc8, 0xa2, 0x05, 0x5f, 0x31, 0xdd, 0x17, 0xf1, 0x85, + 0x0b, 0xad, 0x6e, 0xad, 0x93, 0x48, 0x51, 0x3b, 0x50, 0x4b, 0x52, 0x8d, 0x33, 0xa6, 0x0e, 0x55, + 0x5f, 0xf5, 0x47, 0x0a, 0x4c, 0xb1, 0xb4, 0xcc, 0xce, 0x96, 0xa6, 0x83, 0x42, 0x72, 0x3a, 0x78, + 0x03, 0x66, 0x98, 0x1c, 0x3d, 0xbc, 0x4b, 0x39, 0x27, 0x6f, 0xf4, 0x33, 0xd1, 0x74, 0xb4, 0x42, + 0x3f, 0xfc, 0x4d, 0x9a, 0xc1, 0xec, 0x85, 0xae, 0x4c, 0x04, 0x70, 0x7d, 0x86, 0xa6, 0x51, 0x97, + 0x4b, 0x42, 0x66, 0xbe, 0x86, 0x19, 0xe1, 0x9b, 0xf9, 0xd6, 0xd6, 0x12, 0x7d, 0x08, 0x33, 0xb5, + 0xd5, 0xad, 0xee, 0xd0, 0x97, 0x2a, 0xd3, 0x5b, 0xd4, 0xe8, 0x4d, 0x19, 0xe8, 0xf0, 0x7c, 0x0a, + 0x6b, 0x20, 0xb1, 0x0d, 0x3c, 0xf6, 0x2e, 0x3d, 0xc7, 0x3b, 0x7c, 0x08, 0x27, 0x72, 0x69, 0xd0, + 0x5b, 0xe1, 0xb3, 0xc0, 0xa6, 0x67, 0x3d, 0xe1, 0x1b, 0x0b, 0x73, 0xf2, 0x13, 0x24, 0x6b, 0x94, + 0x60, 0x9d, 0xe6, 0x8b, 0x07, 0x83, 0xd9, 0x97, 0xfa, 0xb7, 0x8a, 0x38, 0xe9, 0x97, 0x5e, 0x7d, + 0x92, 0xc1, 0x14, 0xe3, 0x99, 0x6e, 0xfc, 0x75, 0xdf, 0xc2, 0x27, 0x7e, 0xdd, 0xb7, 0x78, 0x94, + 0xcb, 0x69, 0xea, 0x79, 0x38, 0x37, 0xa4, 0x35, 0xac, 0x33, 0x2e, 0xbd, 0x00, 0x65, 0xf1, 0x7f, + 0x12, 0xd0, 0x34, 0x14, 0x77, 0xd6, 0x5a, 0xb5, 0x09, 0xf2, 0x63, 0x77, 0xbd, 0x55, 0x53, 0x50, + 0x19, 0x4a, 0xed, 0xb5, 0x9d, 0x56, 0xad, 0x70, 0xa9, 0x0f, 0xb5, 0xe4, 0xbf, 0x0a, 0x40, 0xcb, + 0x70, 0xac, 0xa5, 0x6d, 0xb7, 0x1a, 0x0f, 0x1a, 0x3b, 0xcd, 0xed, 0x2d, 0xbd, 0xa5, 0x35, 0xdf, + 0x6f, 0xec, 0x6c, 0xd4, 0x26, 0xd0, 0x39, 0x38, 0x1d, 0xcf, 0x78, 0x77, 0xbb, 0xbd, 0xa3, 0xef, + 0x6c, 0xeb, 0x6b, 0xdb, 0x5b, 0x3b, 0x8d, 0xe6, 0xd6, 0x86, 0x56, 0x53, 0xd0, 0x69, 0x38, 0x11, + 0x27, 0xb9, 0xd7, 0x5c, 0x6f, 0x6a, 0x1b, 0x6b, 0xe4, 0x77, 0xe3, 0x61, 0xad, 0x70, 0xe9, 0x2d, + 0xa8, 0x4a, 0x57, 0xcc, 0x48, 0x95, 0x5a, 0xdb, 0xeb, 0xb5, 0x09, 0x54, 0x85, 0x4a, 0x5c, 0x4e, + 0x19, 0x4a, 0x5b, 0xdb, 0xeb, 0x1b, 0xb5, 0x02, 0x02, 0x98, 0xda, 0x69, 0x68, 0x0f, 0x36, 0x76, + 0x6a, 0xc5, 0x4b, 0xaf, 0xc0, 0x4a, 0xde, 0x55, 0x4b, 0x54, 0x81, 0xc9, 0x4d, 0xec, 0x75, 0x71, + 0x6d, 0x82, 0xb0, 0xb4, 0xc9, 0xc8, 0x08, 0x6a, 0xca, 0xa5, 0xdb, 0xc9, 0x97, 0x82, 0x30, 0x5a, + 0x80, 0x6a, 0xbb, 0xb1, 0xb5, 0x7e, 0x6f, 0xfb, 0xab, 0xba, 0xb6, 0xd1, 0x58, 0xff, 0xa0, 0x36, + 0x81, 0x16, 0xa1, 0x26, 0x92, 0xb6, 0xb6, 0x77, 0x58, 0xaa, 0x72, 0xe9, 0x71, 0x62, 0x69, 0x8f, + 0xd1, 0x71, 0x58, 0x08, 0x6b, 0xa9, 0xaf, 0x69, 0x1b, 0x8d, 0x9d, 0x0d, 0x52, 0x79, 0x29, 0x59, + 0xdb, 0xdd, 0xda, 0x6a, 0x6e, 0x3d, 0xa8, 0x29, 0x44, 0x6a, 0x94, 0xbc, 0xf1, 0xd5, 0x26, 0x21, + 0x2e, 0xc8, 0xc4, 0xbb, 0x5b, 0x5f, 0xda, 0xda, 0xfe, 0xca, 0x56, 0xad, 0x78, 0xe9, 0xff, 0xc6, + 0xb1, 0x4c, 0xd1, 0xf4, 0x7b, 0x12, 0x96, 0x53, 0x25, 0xea, 0x1b, 0xef, 0x6f, 0x6c, 0xed, 0xd4, + 0x26, 0xe4, 0xcc, 0xf6, 0x4e, 0x43, 0x8b, 0x32, 0x95, 0x64, 0xe6, 0x76, 0xab, 0x15, 0x66, 0x16, + 0xe4, 0xcc, 0xf5, 0x8d, 0x87, 0x1b, 0x11, 0x67, 0xf1, 0xd2, 0x73, 0x00, 0x91, 0x9b, 0x41, 0x33, + 0x30, 0xbd, 0xb6, 0xbd, 0xbb, 0xb5, 0xb3, 0xa1, 0xd5, 0x26, 0x88, 0x96, 0x1f, 0x34, 0x76, 0x1f, + 0x6c, 0xd4, 0x94, 0x4b, 0x17, 0x61, 0x36, 0x3e, 0xe8, 0x08, 0x5d, 0xfb, 0x83, 0xf6, 0xce, 0xc6, + 0x26, 0xd1, 0xc8, 0x2c, 0x94, 0xd7, 0x1e, 0x68, 0xdb, 0xbb, 0xad, 0xfb, 0xed, 0x9a, 0x72, 0xfd, + 0x3f, 0x8f, 0x87, 0x47, 0x2a, 0x6d, 0xec, 0xd1, 0xbb, 0x40, 0xeb, 0x30, 0x2d, 0xfe, 0x19, 0x89, + 0xb4, 0xb9, 0x25, 0xff, 0xf3, 0x94, 0xfa, 0xc9, 0xcc, 0x3c, 0x1e, 0x3e, 0x4d, 0xa0, 0xf7, 0xe9, + 0x21, 0x55, 0xec, 0x9d, 0xbe, 0xb3, 0x89, 0xb3, 0x82, 0xd4, 0x73, 0x80, 0xf5, 0x73, 0x43, 0x28, + 0x42, 0xb9, 0x1f, 0xc0, 0x9c, 0xfc, 0x20, 0x2e, 0x3a, 0x27, 0x9f, 0x84, 0x64, 0xbc, 0xb5, 0x5b, + 0x57, 0x87, 0x91, 0x84, 0xa2, 0x75, 0xa8, 0x25, 0x1f, 0xc4, 0x45, 0x92, 0x0b, 0xc8, 0x79, 0x6f, + 0xb7, 0xfe, 0xdc, 0x70, 0xa2, 0x78, 0x01, 0xa9, 0x77, 0x5e, 0xcf, 0x0f, 0x7f, 0x39, 0x33, 0xa3, + 0x80, 0xbc, 0xe7, 0x35, 0x99, 0x72, 0xe4, 0xe0, 0x02, 0x25, 0x9e, 0x56, 0xcd, 0x78, 0x85, 0x51, + 0x56, 0x4e, 0xf6, 0x0b, 0x7c, 0xea, 0x04, 0xfa, 0x1f, 0x30, 0x9f, 0xb8, 0xe8, 0x81, 0x24, 0xc6, + 0xec, 0xfb, 0x2b, 0xf5, 0xf3, 0x43, 0x69, 0xe4, 0x5e, 0x8d, 0x5f, 0xe6, 0x48, 0xf6, 0x6a, 0xc6, + 0x25, 0x91, 0x64, 0xaf, 0x66, 0xde, 0x05, 0xa1, 0x86, 0x28, 0x5d, 0xdc, 0x90, 0x0d, 0x31, 0xeb, + 0xa2, 0x48, 0xfd, 0xdc, 0x10, 0x8a, 0xb8, 0x42, 0x12, 0x57, 0x37, 0x64, 0x85, 0x64, 0x5f, 0x0a, + 0xa9, 0x9f, 0x1f, 0x4a, 0x93, 0xec, 0xc9, 0x08, 0x17, 0x9e, 0xee, 0xc9, 0xd4, 0xb5, 0x85, 0x74, + 0x4f, 0xa6, 0x61, 0xe5, 0xbc, 0x27, 0x13, 0x48, 0x6e, 0x75, 0x28, 0x36, 0x34, 0xab, 0x27, 0xb3, + 0xf1, 0xa3, 0xea, 0x04, 0x7a, 0x0a, 0x2b, 0x79, 0xd8, 0x3d, 0xf4, 0xd2, 0x21, 0x20, 0x86, 0xf5, + 0x97, 0xc7, 0x23, 0x0e, 0x0b, 0xc6, 0x80, 0xd2, 0xab, 0x4c, 0xf4, 0xbc, 0xac, 0xee, 0x9c, 0x55, + 0x6c, 0xfd, 0x85, 0x51, 0x64, 0x61, 0x31, 0x0f, 0xa0, 0x2c, 0x50, 0x81, 0x48, 0x72, 0x81, 0x09, + 0x34, 0x62, 0xfd, 0x54, 0x76, 0x66, 0x28, 0xe8, 0x4d, 0x28, 0x91, 0x54, 0xb4, 0x9c, 0xa4, 0x13, + 0x02, 0x56, 0xd2, 0x19, 0x21, 0x73, 0x03, 0xa6, 0x18, 0xdc, 0x0d, 0x49, 0x07, 0xc7, 0x12, 0x1c, + 0xaf, 0x5e, 0xcf, 0xca, 0x0a, 0x45, 0xb4, 0xd8, 0xbf, 0x76, 0xe2, 0xe8, 0x35, 0xb4, 0x9a, 0x7c, + 0x0a, 0x5f, 0x86, 0xc9, 0xd5, 0xcf, 0xe4, 0xe6, 0xc7, 0x6d, 0x36, 0xb1, 0x99, 0x7c, 0x6e, 0xc8, + 0xe1, 0x48, 0x96, 0xcd, 0x66, 0x1f, 0xb9, 0xb0, 0xce, 0x4d, 0x1f, 0xc9, 0xa0, 0xe7, 0x73, 0xed, + 0x5d, 0x2a, 0xe2, 0x85, 0x51, 0x64, 0xf1, 0xa1, 0x91, 0x7c, 0xd3, 0x4e, 0x1d, 0xf6, 0xde, 0x64, + 0xd6, 0xd0, 0xc8, 0x79, 0xc7, 0x52, 0x9d, 0x40, 0xfb, 0x70, 0x2c, 0xe3, 0xa1, 0x4b, 0xf4, 0x42, + 0xbe, 0xff, 0x95, 0x4a, 0x79, 0x71, 0x24, 0x5d, 0xbc, 0xa4, 0x0c, 0xc8, 0x8a, 0x5c, 0x52, 0x3e, + 0x66, 0x46, 0x2e, 0x69, 0x18, 0xf6, 0x85, 0x1a, 0x22, 0xf7, 0x21, 0x27, 0xb2, 0x00, 0x09, 0x19, + 0x86, 0x98, 0xf2, 0x18, 0xfb, 0x70, 0x2c, 0x63, 0x27, 0x46, 0xae, 0x6c, 0xfe, 0x0e, 0x91, 0x5c, + 0xd9, 0x61, 0x5b, 0x3a, 0x13, 0xe8, 0x43, 0x40, 0x0f, 0x70, 0x20, 0x87, 0x72, 0x3e, 0x92, 0x06, + 0x6a, 0x72, 0xd3, 0x27, 0xc7, 0x3e, 0xa5, 0xdd, 0x1f, 0x75, 0xe2, 0x9a, 0x82, 0x6c, 0x76, 0x97, + 0x2c, 0xb5, 0x67, 0x81, 0x2e, 0x24, 0xbb, 0x2d, 0x6f, 0xdb, 0xa3, 0x7e, 0x71, 0x0c, 0xca, 0xb0, + 0x2d, 0x76, 0xf2, 0x51, 0x65, 0xb1, 0x6c, 0xbe, 0x90, 0x6f, 0x26, 0xf2, 0x56, 0x44, 0xba, 0xbc, + 0xdc, 0x4d, 0x89, 0x30, 0x9e, 0x8b, 0x19, 0xd3, 0xd9, 0x7c, 0x00, 0x55, 0x4e, 0x3c, 0x97, 0x69, + 0x40, 0xdf, 0x84, 0x13, 0xb9, 0x6b, 0x26, 0x94, 0x31, 0x07, 0xe4, 0x2f, 0x14, 0xeb, 0x97, 0xc7, + 0xa4, 0x16, 0x65, 0x5f, 0xff, 0xed, 0x22, 0xcc, 0x32, 0x90, 0x1b, 0x0f, 0x7d, 0x37, 0x01, 0x22, + 0xbc, 0x28, 0x3a, 0x9d, 0xd4, 0x8f, 0x04, 0xc2, 0xad, 0xaf, 0xe6, 0x65, 0xc7, 0x5d, 0x6c, 0x0c, + 0x87, 0x29, 0xbb, 0xd8, 0x34, 0xac, 0x54, 0x76, 0xb1, 0x19, 0x00, 0x4e, 0x75, 0x02, 0xbd, 0x07, + 0x95, 0x10, 0xf6, 0x27, 0x1b, 0x6e, 0x12, 0xbf, 0x58, 0x3f, 0x9d, 0x93, 0x1b, 0xaf, 0x5d, 0x0c, + 0xcd, 0x27, 0xd7, 0x2e, 0x8d, 0x14, 0x94, 0x6b, 0x97, 0x05, 0x03, 0x8c, 0xda, 0xcb, 0x70, 0x1b, + 0x19, 0xed, 0x95, 0x70, 0x3c, 0x19, 0xed, 0x95, 0x01, 0x1f, 0xea, 0xc4, 0xbd, 0xbb, 0x3f, 0xf9, + 0xf9, 0xaa, 0xf2, 0xd3, 0x9f, 0xaf, 0x4e, 0xfc, 0xef, 0x8f, 0x57, 0x95, 0x9f, 0x7c, 0xbc, 0xaa, + 0xfc, 0xfd, 0xc7, 0xab, 0xca, 0xcf, 0x3e, 0x5e, 0x55, 0xbe, 0xfd, 0x2f, 0xab, 0x13, 0x1f, 0xaa, + 0x8f, 0x6f, 0xfa, 0x57, 0x2c, 0xe7, 0x6a, 0xc7, 0xb3, 0x2e, 0x1b, 0xae, 0x75, 0xd5, 0x7d, 0xdc, + 0xbd, 0x6a, 0xb8, 0x96, 0x7f, 0x95, 0xcb, 0xbd, 0xfa, 0xe4, 0x95, 0x47, 0x53, 0xf4, 0x5f, 0x11, + 0xbe, 0xfa, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x83, 0xe6, 0xf7, 0xe9, 0x44, 0x72, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -11094,6 +11127,12 @@ type RuntimeServiceClient interface { // The Kubelet will not re-request the RuntimeConfiguration after startup, and CRI implementations should // avoid updating them without a full node reboot. RuntimeConfig(ctx context.Context, in *RuntimeConfigRequest, opts ...grpc.CallOption) (*RuntimeConfigResponse, error) + // UpdatePodSandboxResources synchronously updates the PodSandboxConfig with + // the pod-level resource configuration. This method is called _after_ the + // Kubelet reconfigures the pod-level cgroups. + // This request is treated as best effort, and failure will not block the + // Kubelet with proceeding with a resize. + UpdatePodSandboxResources(ctx context.Context, in *UpdatePodSandboxResourcesRequest, opts ...grpc.CallOption) (*UpdatePodSandboxResourcesResponse, error) } type runtimeServiceClient struct { @@ -11388,6 +11427,15 @@ func (c *runtimeServiceClient) RuntimeConfig(ctx context.Context, in *RuntimeCon return out, nil } +func (c *runtimeServiceClient) UpdatePodSandboxResources(ctx context.Context, in *UpdatePodSandboxResourcesRequest, opts ...grpc.CallOption) (*UpdatePodSandboxResourcesResponse, error) { + out := new(UpdatePodSandboxResourcesResponse) + err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/UpdatePodSandboxResources", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // RuntimeServiceServer is the server API for RuntimeService service. type RuntimeServiceServer interface { // Version returns the runtime name, runtime version, and runtime API version. @@ -11486,6 +11534,12 @@ type RuntimeServiceServer interface { // The Kubelet will not re-request the RuntimeConfiguration after startup, and CRI implementations should // avoid updating them without a full node reboot. RuntimeConfig(context.Context, *RuntimeConfigRequest) (*RuntimeConfigResponse, error) + // UpdatePodSandboxResources synchronously updates the PodSandboxConfig with + // the pod-level resource configuration. This method is called _after_ the + // Kubelet reconfigures the pod-level cgroups. + // This request is treated as best effort, and failure will not block the + // Kubelet with proceeding with a resize. + UpdatePodSandboxResources(context.Context, *UpdatePodSandboxResourcesRequest) (*UpdatePodSandboxResourcesResponse, error) } // UnimplementedRuntimeServiceServer can be embedded to have forward compatible implementations. @@ -11579,6 +11633,9 @@ func (*UnimplementedRuntimeServiceServer) ListPodSandboxMetrics(ctx context.Cont func (*UnimplementedRuntimeServiceServer) RuntimeConfig(ctx context.Context, req *RuntimeConfigRequest) (*RuntimeConfigResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RuntimeConfig not implemented") } +func (*UnimplementedRuntimeServiceServer) UpdatePodSandboxResources(ctx context.Context, req *UpdatePodSandboxResourcesRequest) (*UpdatePodSandboxResourcesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdatePodSandboxResources not implemented") +} func RegisterRuntimeServiceServer(s *grpc.Server, srv RuntimeServiceServer) { s.RegisterService(&_RuntimeService_serviceDesc, srv) @@ -12109,6 +12166,24 @@ func _RuntimeService_RuntimeConfig_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _RuntimeService_UpdatePodSandboxResources_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdatePodSandboxResourcesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RuntimeServiceServer).UpdatePodSandboxResources(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/runtime.v1.RuntimeService/UpdatePodSandboxResources", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RuntimeServiceServer).UpdatePodSandboxResources(ctx, req.(*UpdatePodSandboxResourcesRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _RuntimeService_serviceDesc = grpc.ServiceDesc{ ServiceName: "runtime.v1.RuntimeService", HandlerType: (*RuntimeServiceServer)(nil), @@ -12225,6 +12300,10 @@ var _RuntimeService_serviceDesc = grpc.ServiceDesc{ MethodName: "RuntimeConfig", Handler: _RuntimeService_RuntimeConfig_Handler, }, + { + MethodName: "UpdatePodSandboxResources", + Handler: _RuntimeService_UpdatePodSandboxResources_Handler, + }, }, Streams: []grpc.StreamDesc{ { @@ -15928,20 +16007,6 @@ func (m *WindowsContainerResources) MarshalToSizedBuffer(dAtA []byte) (int, erro _ = i var l int _ = l - if len(m.AffinityCpus) > 0 { - for iNdEx := len(m.AffinityCpus) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.AffinityCpus[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintApi(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x32 - } - } if m.RootfsSizeInBytes != 0 { i = encodeVarintApi(dAtA, i, uint64(m.RootfsSizeInBytes)) i-- @@ -15970,39 +16035,6 @@ func (m *WindowsContainerResources) MarshalToSizedBuffer(dAtA []byte) (int, erro return len(dAtA) - i, nil } -func (m *WindowsCpuGroupAffinity) 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 *WindowsCpuGroupAffinity) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *WindowsCpuGroupAffinity) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.CpuGroup != 0 { - i = encodeVarintApi(dAtA, i, uint64(m.CpuGroup)) - i-- - dAtA[i] = 0x10 - } - if m.CpuMask != 0 { - i = encodeVarintApi(dAtA, i, uint64(m.CpuMask)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - func (m *ContainerMetadata) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -20310,6 +20342,83 @@ func (m *LinuxRuntimeConfiguration) MarshalToSizedBuffer(dAtA []byte) (int, erro return len(dAtA) - i, nil } +func (m *UpdatePodSandboxResourcesRequest) 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 *UpdatePodSandboxResourcesRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UpdatePodSandboxResourcesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Resources != nil { + { + size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.Overhead != nil { + { + size, err := m.Overhead.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.PodSandboxId) > 0 { + i -= len(m.PodSandboxId) + copy(dAtA[i:], m.PodSandboxId) + i = encodeVarintApi(dAtA, i, uint64(len(m.PodSandboxId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *UpdatePodSandboxResourcesResponse) 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 *UpdatePodSandboxResourcesResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UpdatePodSandboxResourcesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func encodeVarintApi(dAtA []byte, offset int, v uint64) int { offset -= sovApi(v) base := offset @@ -21769,27 +21878,6 @@ func (m *WindowsContainerResources) Size() (n int) { if m.RootfsSizeInBytes != 0 { n += 1 + sovApi(uint64(m.RootfsSizeInBytes)) } - if len(m.AffinityCpus) > 0 { - for _, e := range m.AffinityCpus { - l = e.Size() - n += 1 + l + sovApi(uint64(l)) - } - } - return n -} - -func (m *WindowsCpuGroupAffinity) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.CpuMask != 0 { - n += 1 + sovApi(uint64(m.CpuMask)) - } - if m.CpuGroup != 0 { - n += 1 + sovApi(uint64(m.CpuGroup)) - } return n } @@ -23552,6 +23640,36 @@ func (m *LinuxRuntimeConfiguration) Size() (n int) { return n } +func (m *UpdatePodSandboxResourcesRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.PodSandboxId) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + if m.Overhead != nil { + l = m.Overhead.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.Resources != nil { + l = m.Resources.Size() + n += 1 + l + sovApi(uint64(l)) + } + return n +} + +func (m *UpdatePodSandboxResourcesResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func sovApi(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -24525,29 +24643,12 @@ func (this *WindowsContainerResources) String() string { if this == nil { return "nil" } - repeatedStringForAffinityCpus := "[]*WindowsCpuGroupAffinity{" - for _, f := range this.AffinityCpus { - repeatedStringForAffinityCpus += strings.Replace(f.String(), "WindowsCpuGroupAffinity", "WindowsCpuGroupAffinity", 1) + "," - } - repeatedStringForAffinityCpus += "}" s := strings.Join([]string{`&WindowsContainerResources{`, `CpuShares:` + fmt.Sprintf("%v", this.CpuShares) + `,`, `CpuCount:` + fmt.Sprintf("%v", this.CpuCount) + `,`, `CpuMaximum:` + fmt.Sprintf("%v", this.CpuMaximum) + `,`, `MemoryLimitInBytes:` + fmt.Sprintf("%v", this.MemoryLimitInBytes) + `,`, `RootfsSizeInBytes:` + fmt.Sprintf("%v", this.RootfsSizeInBytes) + `,`, - `AffinityCpus:` + repeatedStringForAffinityCpus + `,`, - `}`, - }, "") - return s -} -func (this *WindowsCpuGroupAffinity) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&WindowsCpuGroupAffinity{`, - `CpuMask:` + fmt.Sprintf("%v", this.CpuMask) + `,`, - `CpuGroup:` + fmt.Sprintf("%v", this.CpuGroup) + `,`, `}`, }, "") return s @@ -25813,6 +25914,27 @@ func (this *LinuxRuntimeConfiguration) String() string { }, "") return s } +func (this *UpdatePodSandboxResourcesRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&UpdatePodSandboxResourcesRequest{`, + `PodSandboxId:` + fmt.Sprintf("%v", this.PodSandboxId) + `,`, + `Overhead:` + strings.Replace(this.Overhead.String(), "LinuxContainerResources", "LinuxContainerResources", 1) + `,`, + `Resources:` + strings.Replace(this.Resources.String(), "LinuxContainerResources", "LinuxContainerResources", 1) + `,`, + `}`, + }, "") + return s +} +func (this *UpdatePodSandboxResourcesResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&UpdatePodSandboxResourcesResponse{`, + `}`, + }, "") + return s +} func valueToStringApi(v interface{}) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -36669,128 +36791,6 @@ func (m *WindowsContainerResources) Unmarshal(dAtA []byte) error { break } } - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AffinityCpus", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthApi - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthApi - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AffinityCpus = append(m.AffinityCpus, &WindowsCpuGroupAffinity{}) - if err := m.AffinityCpus[len(m.AffinityCpus)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipApi(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthApi - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *WindowsCpuGroupAffinity) 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 ErrIntOverflowApi - } - 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: WindowsCpuGroupAffinity: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: WindowsCpuGroupAffinity: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field CpuMask", wireType) - } - m.CpuMask = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.CpuMask |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field CpuGroup", wireType) - } - m.CpuGroup = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.CpuGroup |= uint32(b&0x7F) << shift - if b < 0x80 { - break - } - } default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -49503,6 +49503,210 @@ func (m *LinuxRuntimeConfiguration) Unmarshal(dAtA []byte) error { } return nil } +func (m *UpdatePodSandboxResourcesRequest) 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 ErrIntOverflowApi + } + 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: UpdatePodSandboxResourcesRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdatePodSandboxResourcesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + 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 ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PodSandboxId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Overhead", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Overhead == nil { + m.Overhead = &LinuxContainerResources{} + } + if err := m.Overhead.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Resources == nil { + m.Resources = &LinuxContainerResources{} + } + if err := m.Resources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UpdatePodSandboxResourcesResponse) 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 ErrIntOverflowApi + } + 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: UpdatePodSandboxResourcesResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdatePodSandboxResourcesResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipApi(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto b/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto index 210bd5a7843..b77077ebfcf 100644 --- a/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto +++ b/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto @@ -140,6 +140,13 @@ service RuntimeService { // The Kubelet will not re-request the RuntimeConfiguration after startup, and CRI implementations should // avoid updating them without a full node reboot. rpc RuntimeConfig(RuntimeConfigRequest) returns (RuntimeConfigResponse) {} + + // UpdatePodSandboxResources synchronously updates the PodSandboxConfig with + // the pod-level resource configuration. This method is called _after_ the + // Kubelet reconfigures the pod-level cgroups. + // This request is treated as best effort, and failure will not block the + // Kubelet with proceeding with a resize. + rpc UpdatePodSandboxResources(UpdatePodSandboxResourcesRequest) returns (UpdatePodSandboxResourcesResponse) {} } // ImageService defines the public APIs for managing images. @@ -1070,19 +1077,6 @@ message WindowsContainerResources { int64 memory_limit_in_bytes = 4; // Specifies the size of the rootfs / scratch space in bytes to be configured for this container. Default: 0 (not specified). int64 rootfs_size_in_bytes = 5; - // Optionally specifies the set of CPUs to affinitize for this container. - repeated WindowsCpuGroupAffinity affinity_cpus = 6; -} - -// WindowsCpuGroupAffinity specifies the CPU mask and group to affinitize. -// This is similar to the following _GROUP_AFFINITY structure: -// https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/miniport/ns-miniport-_group_affinity -message WindowsCpuGroupAffinity { - // CPU mask relative to this CPU group. - uint64 cpu_mask = 1; - // Processor group the mask refers to, as returned by - // GetLogicalProcessorInformationEx. - uint32 cpu_group = 2; } // ContainerMetadata holds all necessary information for building the container @@ -1997,3 +1991,14 @@ enum CgroupDriver { CGROUPFS = 1; } +message UpdatePodSandboxResourcesRequest { + // ID of the PodSandbox to update. + string pod_sandbox_id = 1; + + // Optional overhead represents the overheads associated with this sandbox + LinuxContainerResources overhead = 2; + // Optional resources represents the sum of container resources for this sandbox + LinuxContainerResources resources = 3; +} + +message UpdatePodSandboxResourcesResponse {} From b27c303ac24fac02ef39ec9ec36fbdfc2767086e Mon Sep 17 00:00:00 2001 From: Filipe Xavier Date: Wed, 6 Nov 2024 08:59:43 -0300 Subject: [PATCH 2/6] update cri-api runtime interface and cri-client add new method --- .../src/k8s.io/cri-api/pkg/apis/services.go | 6 ++ .../pkg/apis/testing/fake_runtime_service.go | 13 ++++ .../cri-client/pkg/fake/fake_runtime.go | 5 ++ .../k8s.io/cri-client/pkg/remote_runtime.go | 17 +++++ .../criproxy/proxy_runtime_service.go | 68 +++++++++++-------- 5 files changed, 80 insertions(+), 29 deletions(-) diff --git a/staging/src/k8s.io/cri-api/pkg/apis/services.go b/staging/src/k8s.io/cri-api/pkg/apis/services.go index 03a068c4224..58cee8c14c8 100644 --- a/staging/src/k8s.io/cri-api/pkg/apis/services.go +++ b/staging/src/k8s.io/cri-api/pkg/apis/services.go @@ -82,6 +82,12 @@ type PodSandboxManager interface { ListPodSandbox(ctx context.Context, filter *runtimeapi.PodSandboxFilter) ([]*runtimeapi.PodSandbox, error) // PortForward prepares a streaming endpoint to forward ports from a PodSandbox, and returns the address. PortForward(ctx context.Context, request *runtimeapi.PortForwardRequest) (*runtimeapi.PortForwardResponse, error) + // UpdatePodSandboxResources synchronously updates the PodSandboxConfig with + // the pod-level resource configuration. This method is called _after_ the + // Kubelet reconfigures the pod-level cgroups. + // This request is treated as best effort, and failure will not block the + // Kubelet with proceeding with a resize. + UpdatePodSandboxResources(ctx context.Context, request *runtimeapi.UpdatePodSandboxResourcesRequest) (*runtimeapi.UpdatePodSandboxResourcesResponse, error) } // ContainerStatsManager contains methods for retrieving the container diff --git a/staging/src/k8s.io/cri-api/pkg/apis/testing/fake_runtime_service.go b/staging/src/k8s.io/cri-api/pkg/apis/testing/fake_runtime_service.go index 56effd29802..245fba577a0 100644 --- a/staging/src/k8s.io/cri-api/pkg/apis/testing/fake_runtime_service.go +++ b/staging/src/k8s.io/cri-api/pkg/apis/testing/fake_runtime_service.go @@ -794,3 +794,16 @@ func (r *FakeRuntimeService) RuntimeConfig(_ context.Context) (*runtimeapi.Runti return &runtimeapi.RuntimeConfigResponse{Linux: r.FakeLinuxConfiguration}, nil } + +// UpdatePodSandboxResources returns the container resource in the FakeRuntimeService. +func (r *FakeRuntimeService) UpdatePodSandboxResources(context.Context, *runtimeapi.UpdatePodSandboxResourcesRequest) (*runtimeapi.UpdatePodSandboxResourcesResponse, error) { + r.Lock() + defer r.Unlock() + + r.Called = append(r.Called, "UpdatePodSandboxResources") + if err := r.popError("UpdatePodSandboxResources"); err != nil { + return nil, err + } + + return &runtimeapi.UpdatePodSandboxResourcesResponse{}, nil +} diff --git a/staging/src/k8s.io/cri-client/pkg/fake/fake_runtime.go b/staging/src/k8s.io/cri-client/pkg/fake/fake_runtime.go index 3c1c391cae4..fd9e778067f 100644 --- a/staging/src/k8s.io/cri-client/pkg/fake/fake_runtime.go +++ b/staging/src/k8s.io/cri-client/pkg/fake/fake_runtime.go @@ -366,3 +366,8 @@ func (f *RemoteRuntime) RuntimeConfig(ctx context.Context, req *kubeapi.RuntimeC return resp, nil } + +// UpdatePodSandboxResources synchronously updates the PodSandboxConfig. +func (f *RemoteRuntime) UpdatePodSandboxResources(ctx context.Context, req *kubeapi.UpdatePodSandboxResourcesRequest) (*kubeapi.UpdatePodSandboxResourcesResponse, error) { + return f.RuntimeService.UpdatePodSandboxResources(ctx, req) +} diff --git a/staging/src/k8s.io/cri-client/pkg/remote_runtime.go b/staging/src/k8s.io/cri-client/pkg/remote_runtime.go index aa1518e0acc..f5f3970beff 100644 --- a/staging/src/k8s.io/cri-client/pkg/remote_runtime.go +++ b/staging/src/k8s.io/cri-client/pkg/remote_runtime.go @@ -610,6 +610,23 @@ func (r *remoteRuntimeService) portForwardV1(ctx context.Context, req *runtimeap return resp, nil } +// UpdatePodSandboxResources synchronously updates the PodSandboxConfig with +// the pod-level resource configuration. +func (r *remoteRuntimeService) UpdatePodSandboxResources(ctx context.Context, req *runtimeapi.UpdatePodSandboxResourcesRequest) (*runtimeapi.UpdatePodSandboxResourcesResponse, error) { + r.log(10, "[RemoteRuntimeService] UpdatePodSandboxResources", "PodSandboxId", req.PodSandboxId, "timeout", r.timeout) + ctx, cancel := context.WithTimeout(ctx, r.timeout) + defer cancel() + + resp, err := r.runtimeClient.UpdatePodSandboxResources(ctx, req) + if err != nil { + r.logErr(err, "UpdatePodSandboxResources from runtime service failed", "podSandboxID", req.PodSandboxId) + return nil, err + } + r.log(10, "[RemoteRuntimeService] UpdatePodSandboxResources Response", "podSandboxID", req.PodSandboxId) + + return resp, nil +} + // UpdateRuntimeConfig updates the config of a runtime service. The only // update payload currently supported is the pod CIDR assigned to a node, // and the runtime service just proxies it down to the network plugin. diff --git a/test/e2e_node/criproxy/proxy_runtime_service.go b/test/e2e_node/criproxy/proxy_runtime_service.go index cc17e970c6b..f2febf293fb 100644 --- a/test/e2e_node/criproxy/proxy_runtime_service.go +++ b/test/e2e_node/criproxy/proxy_runtime_service.go @@ -34,35 +34,36 @@ import ( ) const ( - Version = "Version" - RunPodSandbox = "RunPodSandbox" - StopPodSandbox = "StopPodSandbox" - RemovePodSandbox = "RemovePodSandbox" - PodSandboxStatus = "PodSandboxStatus" - ListPodSandbox = "ListPodSandbox" - CreateContainer = "CreateContainer" - StartContainer = "StartContainer" - StopContainer = "StopContainer" - RemoveContainer = "RemoveContainer" - ListContainers = "ListContainers" - ContainerStatus = "ContainerStatus" - UpdateContainerResources = "UpdateContainerResources" - ReopenContainerLog = "ReopenContainerLog" - ExecSync = "ExecSync" - Exec = "Exec" - Attach = "Attach" - PortForward = "PortForward" - ContainerStats = "ContainerStats" - ListContainerStats = "ListContainerStats" - PodSandboxStats = "PodSandboxStats" - ListPodSandboxStats = "ListPodSandboxStats" - UpdateRuntimeConfig = "UpdateRuntimeConfig" - Status = "Status" - CheckpointContainer = "CheckpointContainer" - GetContainerEvents = "GetContainerEvents" - ListMetricDescriptors = "ListMetricDescriptors" - ListPodSandboxMetrics = "ListPodSandboxMetrics" - RuntimeConfig = "RuntimeConfig" + Version = "Version" + RunPodSandbox = "RunPodSandbox" + StopPodSandbox = "StopPodSandbox" + RemovePodSandbox = "RemovePodSandbox" + PodSandboxStatus = "PodSandboxStatus" + ListPodSandbox = "ListPodSandbox" + CreateContainer = "CreateContainer" + StartContainer = "StartContainer" + StopContainer = "StopContainer" + RemoveContainer = "RemoveContainer" + ListContainers = "ListContainers" + ContainerStatus = "ContainerStatus" + UpdateContainerResources = "UpdateContainerResources" + ReopenContainerLog = "ReopenContainerLog" + ExecSync = "ExecSync" + Exec = "Exec" + Attach = "Attach" + PortForward = "PortForward" + ContainerStats = "ContainerStats" + ListContainerStats = "ListContainerStats" + PodSandboxStats = "PodSandboxStats" + ListPodSandboxStats = "ListPodSandboxStats" + UpdateRuntimeConfig = "UpdateRuntimeConfig" + Status = "Status" + CheckpointContainer = "CheckpointContainer" + GetContainerEvents = "GetContainerEvents" + ListMetricDescriptors = "ListMetricDescriptors" + ListPodSandboxMetrics = "ListPodSandboxMetrics" + RuntimeConfig = "RuntimeConfig" + UpdatePodSandboxResources = "UpdatePodSandboxResources" ) // AddInjector inject the error or delay to the next call to the RuntimeService. @@ -407,6 +408,15 @@ func (p *RemoteRuntime) UpdateRuntimeConfig(ctx context.Context, req *runtimeapi return &runtimeapi.UpdateRuntimeConfigResponse{}, nil } +// UpdatePodSandboxResources synchronously updates the PodSandboxConfig. +func (p *RemoteRuntime) UpdatePodSandboxResources(ctx context.Context, req *runtimeapi.UpdatePodSandboxResourcesRequest) (*runtimeapi.UpdatePodSandboxResourcesResponse, error) { + if err := p.runInjectors(UpdatePodSandboxResources); err != nil { + return nil, err + } + + return p.runtimeService.UpdatePodSandboxResources(ctx, req) +} + // Status returns the status of the runtime. func (p *RemoteRuntime) Status(ctx context.Context, req *runtimeapi.StatusRequest) (*runtimeapi.StatusResponse, error) { if err := p.runInjectors(Status); err != nil { From ce4de97c2e38ab424437c9d8e3b73a804317cdff Mon Sep 17 00:00:00 2001 From: Filipe Xavier Date: Wed, 6 Nov 2024 09:21:36 -0300 Subject: [PATCH 3/6] make kubelet call updatePodSandboxResources on PodResizeAction --- .../kuberuntime/instrumented_services.go | 9 + .../kuberuntime/kuberuntime_container.go | 20 + .../kuberuntime/kuberuntime_container_test.go | 36 + .../kuberuntime/kuberuntime_manager.go | 6 + .../cri-api/pkg/apis/runtime/v1/api.pb.go | 1372 ++++++++++------- .../cri-api/pkg/apis/runtime/v1/api.proto | 13 + 6 files changed, 910 insertions(+), 546 deletions(-) diff --git a/pkg/kubelet/kuberuntime/instrumented_services.go b/pkg/kubelet/kuberuntime/instrumented_services.go index ba8794118bb..1cd70e7d994 100644 --- a/pkg/kubelet/kuberuntime/instrumented_services.go +++ b/pkg/kubelet/kuberuntime/instrumented_services.go @@ -272,6 +272,15 @@ func (in instrumentedRuntimeService) PortForward(ctx context.Context, req *runti return resp, err } +func (in instrumentedRuntimeService) UpdatePodSandboxResources(ctx context.Context, req *runtimeapi.UpdatePodSandboxResourcesRequest) (*runtimeapi.UpdatePodSandboxResourcesResponse, error) { + const operation = "update_podsandbox" + defer recordOperation(operation, time.Now()) + + resp, err := in.service.UpdatePodSandboxResources(ctx, req) + recordError(operation, err) + return resp, err +} + func (in instrumentedRuntimeService) UpdateRuntimeConfig(ctx context.Context, runtimeConfig *runtimeapi.RuntimeConfig) error { const operation = "update_runtime_config" defer recordOperation(operation, time.Now()) diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container.go b/pkg/kubelet/kuberuntime/kuberuntime_container.go index e9ed63921f3..4851cb291b6 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container.go @@ -33,6 +33,7 @@ import ( "sync" "time" + codes "google.golang.org/grpc/codes" crierror "k8s.io/cri-api/pkg/errors" "github.com/opencontainers/selinux/go-selinux" @@ -411,6 +412,25 @@ func (m *kubeGenericRuntimeManager) updateContainerResources(pod *v1.Pod, contai return err } +func (m *kubeGenericRuntimeManager) updatePodSandboxResources(sandboxID string, pod *v1.Pod) error { + podResourcesRequest := &runtimeapi.UpdatePodSandboxResourcesRequest{ + PodSandboxId: sandboxID, + Overhead: m.convertOverheadToLinuxResources(pod), + Resources: m.calculateSandboxResources(pod), + } + + ctx := context.Background() + _, err := m.runtimeService.UpdatePodSandboxResources(ctx, podResourcesRequest) + if err != nil { + stat, _ := grpcstatus.FromError(err) + if stat.Code() == codes.Unimplemented { + klog.ErrorS(err, "updatePodSandboxResources failed: method unimplemented on runtime service", "sandboxID", sandboxID) + return nil + } + } + return err +} + // makeDevices generates container devices for kubelet runtime v1. func makeDevices(opts *kubecontainer.RunContainerOptions) []*runtimeapi.Device { devices := make([]*runtimeapi.Device, len(opts.Devices)) diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_test.go b/pkg/kubelet/kuberuntime/kuberuntime_container_test.go index ee1a1bbe48b..04aba467b05 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_test.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_test.go @@ -969,3 +969,39 @@ func TestUpdateContainerResources(t *testing.T) { // Verify container is updated assert.Contains(t, fakeRuntime.Called, "UpdateContainerResources") } + +// TestUpdatePodSandboxResources tests updating a podSandBox resources. +func TestUpdatePodSandboxResources(t *testing.T) { + fakeRuntime, _, m, errCreate := createTestRuntimeManager() + require.NoError(t, errCreate) + pod := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + UID: "12345678", + Name: "bar", + Namespace: "new", + }, + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Image: "busybox", + ImagePullPolicy: v1.PullIfNotPresent, + }, + }, + }, + } + + // Create fake sandbox and container + fakeSandbox, fakeContainers := makeAndSetFakePod(t, m, fakeRuntime, pod) + assert.Len(t, fakeContainers, 1) + + ctx := context.Background() + _, err := m.getPodContainerStatuses(ctx, pod.UID, pod.Name, pod.Namespace) + require.NoError(t, err) + + err = m.updatePodSandboxResources(fakeSandbox.Id, pod) + require.NoError(t, err) + + // Verify sandbox is updated + assert.Contains(t, fakeRuntime.Called, "UpdatePodSandboxResources") +} diff --git a/pkg/kubelet/kuberuntime/kuberuntime_manager.go b/pkg/kubelet/kuberuntime/kuberuntime_manager.go index 7403eeb95d9..20c49327844 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_manager.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_manager.go @@ -775,6 +775,9 @@ func (m *kubeGenericRuntimeManager) doPodResizeAction(pod *v1.Pod, podContainerC result.Fail(errResize) return } + if errUpdate := m.updatePodSandboxResources(podContainerChanges.SandboxID, pod); errUpdate != nil { + klog.ErrorS(err, "updatePodSandboxResources failed", "pod", pod.Name) + } } if len(podContainerChanges.ContainersToUpdate[v1.ResourceCPU]) > 0 || podContainerChanges.UpdatePodResources { if podResources.CPUShares == nil { @@ -801,6 +804,9 @@ func (m *kubeGenericRuntimeManager) doPodResizeAction(pod *v1.Pod, podContainerC result.Fail(errResize) return } + if errUpdate := m.updatePodSandboxResources(podContainerChanges.SandboxID, pod); errUpdate != nil { + klog.ErrorS(err, "updatePodSandboxResources failed", "pod", pod.Name) + } } } diff --git a/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go b/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go index 34d20d74dd9..c0284cca5b9 100644 --- a/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go +++ b/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go @@ -4705,9 +4705,11 @@ type WindowsContainerResources struct { // Memory limit in bytes. Default: 0 (not specified). MemoryLimitInBytes int64 `protobuf:"varint,4,opt,name=memory_limit_in_bytes,json=memoryLimitInBytes,proto3" json:"memory_limit_in_bytes,omitempty"` // Specifies the size of the rootfs / scratch space in bytes to be configured for this container. Default: 0 (not specified). - RootfsSizeInBytes int64 `protobuf:"varint,5,opt,name=rootfs_size_in_bytes,json=rootfsSizeInBytes,proto3" json:"rootfs_size_in_bytes,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_sizecache int32 `json:"-"` + RootfsSizeInBytes int64 `protobuf:"varint,5,opt,name=rootfs_size_in_bytes,json=rootfsSizeInBytes,proto3" json:"rootfs_size_in_bytes,omitempty"` + // Optionally specifies the set of CPUs to affinitize for this container. + AffinityCpus []*WindowsCpuGroupAffinity `protobuf:"bytes,6,rep,name=affinity_cpus,json=affinityCpus,proto3" json:"affinity_cpus,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *WindowsContainerResources) Reset() { *m = WindowsContainerResources{} } @@ -4777,6 +4779,72 @@ func (m *WindowsContainerResources) GetRootfsSizeInBytes() int64 { return 0 } +func (m *WindowsContainerResources) GetAffinityCpus() []*WindowsCpuGroupAffinity { + if m != nil { + return m.AffinityCpus + } + return nil +} + +// WindowsCpuGroupAffinity specifies the CPU mask and group to affinitize. +// This is similar to the following _GROUP_AFFINITY structure: +// https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/miniport/ns-miniport-_group_affinity +type WindowsCpuGroupAffinity struct { + // CPU mask relative to this CPU group. + CpuMask uint64 `protobuf:"varint,1,opt,name=cpu_mask,json=cpuMask,proto3" json:"cpu_mask,omitempty"` + // Processor group the mask refers to, as returned by + // GetLogicalProcessorInformationEx. + CpuGroup uint32 `protobuf:"varint,2,opt,name=cpu_group,json=cpuGroup,proto3" json:"cpu_group,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *WindowsCpuGroupAffinity) Reset() { *m = WindowsCpuGroupAffinity{} } +func (*WindowsCpuGroupAffinity) ProtoMessage() {} +func (*WindowsCpuGroupAffinity) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{62} +} +func (m *WindowsCpuGroupAffinity) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *WindowsCpuGroupAffinity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_WindowsCpuGroupAffinity.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 *WindowsCpuGroupAffinity) XXX_Merge(src proto.Message) { + xxx_messageInfo_WindowsCpuGroupAffinity.Merge(m, src) +} +func (m *WindowsCpuGroupAffinity) XXX_Size() int { + return m.Size() +} +func (m *WindowsCpuGroupAffinity) XXX_DiscardUnknown() { + xxx_messageInfo_WindowsCpuGroupAffinity.DiscardUnknown(m) +} + +var xxx_messageInfo_WindowsCpuGroupAffinity proto.InternalMessageInfo + +func (m *WindowsCpuGroupAffinity) GetCpuMask() uint64 { + if m != nil { + return m.CpuMask + } + return 0 +} + +func (m *WindowsCpuGroupAffinity) GetCpuGroup() uint32 { + if m != nil { + return m.CpuGroup + } + return 0 +} + // ContainerMetadata holds all necessary information for building the container // name. The container runtime is encouraged to expose the metadata in its user // interface for better user experience. E.g., runtime can construct a unique @@ -4794,7 +4862,7 @@ type ContainerMetadata struct { func (m *ContainerMetadata) Reset() { *m = ContainerMetadata{} } func (*ContainerMetadata) ProtoMessage() {} func (*ContainerMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{62} + return fileDescriptor_00212fb1f9d3bf1c, []int{63} } func (m *ContainerMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4855,7 +4923,7 @@ type Device struct { func (m *Device) Reset() { *m = Device{} } func (*Device) ProtoMessage() {} func (*Device) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{63} + return fileDescriptor_00212fb1f9d3bf1c, []int{64} } func (m *Device) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4919,7 +4987,7 @@ type CDIDevice struct { func (m *CDIDevice) Reset() { *m = CDIDevice{} } func (*CDIDevice) ProtoMessage() {} func (*CDIDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{64} + return fileDescriptor_00212fb1f9d3bf1c, []int{65} } func (m *CDIDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5021,7 +5089,7 @@ type ContainerConfig struct { func (m *ContainerConfig) Reset() { *m = ContainerConfig{} } func (*ContainerConfig) ProtoMessage() {} func (*ContainerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{65} + return fileDescriptor_00212fb1f9d3bf1c, []int{66} } func (m *ContainerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5186,7 +5254,7 @@ type CreateContainerRequest struct { func (m *CreateContainerRequest) Reset() { *m = CreateContainerRequest{} } func (*CreateContainerRequest) ProtoMessage() {} func (*CreateContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{66} + return fileDescriptor_00212fb1f9d3bf1c, []int{67} } func (m *CreateContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5246,7 +5314,7 @@ type CreateContainerResponse struct { func (m *CreateContainerResponse) Reset() { *m = CreateContainerResponse{} } func (*CreateContainerResponse) ProtoMessage() {} func (*CreateContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{67} + return fileDescriptor_00212fb1f9d3bf1c, []int{68} } func (m *CreateContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5292,7 +5360,7 @@ type StartContainerRequest struct { func (m *StartContainerRequest) Reset() { *m = StartContainerRequest{} } func (*StartContainerRequest) ProtoMessage() {} func (*StartContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{68} + return fileDescriptor_00212fb1f9d3bf1c, []int{69} } func (m *StartContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5336,7 +5404,7 @@ type StartContainerResponse struct { func (m *StartContainerResponse) Reset() { *m = StartContainerResponse{} } func (*StartContainerResponse) ProtoMessage() {} func (*StartContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{69} + return fileDescriptor_00212fb1f9d3bf1c, []int{70} } func (m *StartContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5378,7 +5446,7 @@ type StopContainerRequest struct { func (m *StopContainerRequest) Reset() { *m = StopContainerRequest{} } func (*StopContainerRequest) ProtoMessage() {} func (*StopContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{70} + return fileDescriptor_00212fb1f9d3bf1c, []int{71} } func (m *StopContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5429,7 +5497,7 @@ type StopContainerResponse struct { func (m *StopContainerResponse) Reset() { *m = StopContainerResponse{} } func (*StopContainerResponse) ProtoMessage() {} func (*StopContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{71} + return fileDescriptor_00212fb1f9d3bf1c, []int{72} } func (m *StopContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5468,7 +5536,7 @@ type RemoveContainerRequest struct { func (m *RemoveContainerRequest) Reset() { *m = RemoveContainerRequest{} } func (*RemoveContainerRequest) ProtoMessage() {} func (*RemoveContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{72} + return fileDescriptor_00212fb1f9d3bf1c, []int{73} } func (m *RemoveContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5512,7 +5580,7 @@ type RemoveContainerResponse struct { func (m *RemoveContainerResponse) Reset() { *m = RemoveContainerResponse{} } func (*RemoveContainerResponse) ProtoMessage() {} func (*RemoveContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{73} + return fileDescriptor_00212fb1f9d3bf1c, []int{74} } func (m *RemoveContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5552,7 +5620,7 @@ type ContainerStateValue struct { func (m *ContainerStateValue) Reset() { *m = ContainerStateValue{} } func (*ContainerStateValue) ProtoMessage() {} func (*ContainerStateValue) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{74} + return fileDescriptor_00212fb1f9d3bf1c, []int{75} } func (m *ContainerStateValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5608,7 +5676,7 @@ type ContainerFilter struct { func (m *ContainerFilter) Reset() { *m = ContainerFilter{} } func (*ContainerFilter) ProtoMessage() {} func (*ContainerFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{75} + return fileDescriptor_00212fb1f9d3bf1c, []int{76} } func (m *ContainerFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5674,7 +5742,7 @@ type ListContainersRequest struct { func (m *ListContainersRequest) Reset() { *m = ListContainersRequest{} } func (*ListContainersRequest) ProtoMessage() {} func (*ListContainersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{76} + return fileDescriptor_00212fb1f9d3bf1c, []int{77} } func (m *ListContainersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5752,7 +5820,7 @@ type Container struct { func (m *Container) Reset() { *m = Container{} } func (*Container) ProtoMessage() {} func (*Container) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{77} + return fileDescriptor_00212fb1f9d3bf1c, []int{78} } func (m *Container) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5861,7 +5929,7 @@ type ListContainersResponse struct { func (m *ListContainersResponse) Reset() { *m = ListContainersResponse{} } func (*ListContainersResponse) ProtoMessage() {} func (*ListContainersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{78} + return fileDescriptor_00212fb1f9d3bf1c, []int{79} } func (m *ListContainersResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5909,7 +5977,7 @@ type ContainerStatusRequest struct { func (m *ContainerStatusRequest) Reset() { *m = ContainerStatusRequest{} } func (*ContainerStatusRequest) ProtoMessage() {} func (*ContainerStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{79} + return fileDescriptor_00212fb1f9d3bf1c, []int{80} } func (m *ContainerStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6008,7 +6076,7 @@ type ContainerStatus struct { func (m *ContainerStatus) Reset() { *m = ContainerStatus{} } func (*ContainerStatus) ProtoMessage() {} func (*ContainerStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{80} + return fileDescriptor_00212fb1f9d3bf1c, []int{81} } func (m *ContainerStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6178,7 +6246,7 @@ type ContainerStatusResponse struct { func (m *ContainerStatusResponse) Reset() { *m = ContainerStatusResponse{} } func (*ContainerStatusResponse) ProtoMessage() {} func (*ContainerStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{81} + return fileDescriptor_00212fb1f9d3bf1c, []int{82} } func (m *ContainerStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6234,7 +6302,7 @@ type ContainerResources struct { func (m *ContainerResources) Reset() { *m = ContainerResources{} } func (*ContainerResources) ProtoMessage() {} func (*ContainerResources) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{82} + return fileDescriptor_00212fb1f9d3bf1c, []int{83} } func (m *ContainerResources) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6288,7 +6356,7 @@ type ContainerUser struct { func (m *ContainerUser) Reset() { *m = ContainerUser{} } func (*ContainerUser) ProtoMessage() {} func (*ContainerUser) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{83} + return fileDescriptor_00212fb1f9d3bf1c, []int{84} } func (m *ContainerUser) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6342,7 +6410,7 @@ type UpdateContainerResourcesRequest struct { func (m *UpdateContainerResourcesRequest) Reset() { *m = UpdateContainerResourcesRequest{} } func (*UpdateContainerResourcesRequest) ProtoMessage() {} func (*UpdateContainerResourcesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{84} + return fileDescriptor_00212fb1f9d3bf1c, []int{85} } func (m *UpdateContainerResourcesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6407,7 +6475,7 @@ type UpdateContainerResourcesResponse struct { func (m *UpdateContainerResourcesResponse) Reset() { *m = UpdateContainerResourcesResponse{} } func (*UpdateContainerResourcesResponse) ProtoMessage() {} func (*UpdateContainerResourcesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{85} + return fileDescriptor_00212fb1f9d3bf1c, []int{86} } func (m *UpdateContainerResourcesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6450,7 +6518,7 @@ type ExecSyncRequest struct { func (m *ExecSyncRequest) Reset() { *m = ExecSyncRequest{} } func (*ExecSyncRequest) ProtoMessage() {} func (*ExecSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{86} + return fileDescriptor_00212fb1f9d3bf1c, []int{87} } func (m *ExecSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6522,7 +6590,7 @@ type ExecSyncResponse struct { func (m *ExecSyncResponse) Reset() { *m = ExecSyncResponse{} } func (*ExecSyncResponse) ProtoMessage() {} func (*ExecSyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{87} + return fileDescriptor_00212fb1f9d3bf1c, []int{88} } func (m *ExecSyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6598,7 +6666,7 @@ type ExecRequest struct { func (m *ExecRequest) Reset() { *m = ExecRequest{} } func (*ExecRequest) ProtoMessage() {} func (*ExecRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{88} + return fileDescriptor_00212fb1f9d3bf1c, []int{89} } func (m *ExecRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6679,7 +6747,7 @@ type ExecResponse struct { func (m *ExecResponse) Reset() { *m = ExecResponse{} } func (*ExecResponse) ProtoMessage() {} func (*ExecResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{89} + return fileDescriptor_00212fb1f9d3bf1c, []int{90} } func (m *ExecResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6740,7 +6808,7 @@ type AttachRequest struct { func (m *AttachRequest) Reset() { *m = AttachRequest{} } func (*AttachRequest) ProtoMessage() {} func (*AttachRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{90} + return fileDescriptor_00212fb1f9d3bf1c, []int{91} } func (m *AttachRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6814,7 +6882,7 @@ type AttachResponse struct { func (m *AttachResponse) Reset() { *m = AttachResponse{} } func (*AttachResponse) ProtoMessage() {} func (*AttachResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{91} + return fileDescriptor_00212fb1f9d3bf1c, []int{92} } func (m *AttachResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6862,7 +6930,7 @@ type PortForwardRequest struct { func (m *PortForwardRequest) Reset() { *m = PortForwardRequest{} } func (*PortForwardRequest) ProtoMessage() {} func (*PortForwardRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{92} + return fileDescriptor_00212fb1f9d3bf1c, []int{93} } func (m *PortForwardRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6915,7 +6983,7 @@ type PortForwardResponse struct { func (m *PortForwardResponse) Reset() { *m = PortForwardResponse{} } func (*PortForwardResponse) ProtoMessage() {} func (*PortForwardResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{93} + return fileDescriptor_00212fb1f9d3bf1c, []int{94} } func (m *PortForwardResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6961,7 +7029,7 @@ type ImageFilter struct { func (m *ImageFilter) Reset() { *m = ImageFilter{} } func (*ImageFilter) ProtoMessage() {} func (*ImageFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{94} + return fileDescriptor_00212fb1f9d3bf1c, []int{95} } func (m *ImageFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7007,7 +7075,7 @@ type ListImagesRequest struct { func (m *ListImagesRequest) Reset() { *m = ListImagesRequest{} } func (*ListImagesRequest) ProtoMessage() {} func (*ListImagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{95} + return fileDescriptor_00212fb1f9d3bf1c, []int{96} } func (m *ListImagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7073,7 +7141,7 @@ type Image struct { func (m *Image) Reset() { *m = Image{} } func (*Image) ProtoMessage() {} func (*Image) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{96} + return fileDescriptor_00212fb1f9d3bf1c, []int{97} } func (m *Image) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7168,7 +7236,7 @@ type ListImagesResponse struct { func (m *ListImagesResponse) Reset() { *m = ListImagesResponse{} } func (*ListImagesResponse) ProtoMessage() {} func (*ListImagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{97} + return fileDescriptor_00212fb1f9d3bf1c, []int{98} } func (m *ListImagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7216,7 +7284,7 @@ type ImageStatusRequest struct { func (m *ImageStatusRequest) Reset() { *m = ImageStatusRequest{} } func (*ImageStatusRequest) ProtoMessage() {} func (*ImageStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{98} + return fileDescriptor_00212fb1f9d3bf1c, []int{99} } func (m *ImageStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7274,7 +7342,7 @@ type ImageStatusResponse struct { func (m *ImageStatusResponse) Reset() { *m = ImageStatusResponse{} } func (*ImageStatusResponse) ProtoMessage() {} func (*ImageStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{99} + return fileDescriptor_00212fb1f9d3bf1c, []int{100} } func (m *ImageStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7335,7 +7403,7 @@ type AuthConfig struct { func (m *AuthConfig) Reset() { *m = AuthConfig{} } func (*AuthConfig) ProtoMessage() {} func (*AuthConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{100} + return fileDescriptor_00212fb1f9d3bf1c, []int{101} } func (m *AuthConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7420,7 +7488,7 @@ type PullImageRequest struct { func (m *PullImageRequest) Reset() { *m = PullImageRequest{} } func (*PullImageRequest) ProtoMessage() {} func (*PullImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{101} + return fileDescriptor_00212fb1f9d3bf1c, []int{102} } func (m *PullImageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7481,7 +7549,7 @@ type PullImageResponse struct { func (m *PullImageResponse) Reset() { *m = PullImageResponse{} } func (*PullImageResponse) ProtoMessage() {} func (*PullImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{102} + return fileDescriptor_00212fb1f9d3bf1c, []int{103} } func (m *PullImageResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7527,7 +7595,7 @@ type RemoveImageRequest struct { func (m *RemoveImageRequest) Reset() { *m = RemoveImageRequest{} } func (*RemoveImageRequest) ProtoMessage() {} func (*RemoveImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{103} + return fileDescriptor_00212fb1f9d3bf1c, []int{104} } func (m *RemoveImageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7571,7 +7639,7 @@ type RemoveImageResponse struct { func (m *RemoveImageResponse) Reset() { *m = RemoveImageResponse{} } func (*RemoveImageResponse) ProtoMessage() {} func (*RemoveImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{104} + return fileDescriptor_00212fb1f9d3bf1c, []int{105} } func (m *RemoveImageResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7611,7 +7679,7 @@ type NetworkConfig struct { func (m *NetworkConfig) Reset() { *m = NetworkConfig{} } func (*NetworkConfig) ProtoMessage() {} func (*NetworkConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{105} + return fileDescriptor_00212fb1f9d3bf1c, []int{106} } func (m *NetworkConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7656,7 +7724,7 @@ type RuntimeConfig struct { func (m *RuntimeConfig) Reset() { *m = RuntimeConfig{} } func (*RuntimeConfig) ProtoMessage() {} func (*RuntimeConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{106} + return fileDescriptor_00212fb1f9d3bf1c, []int{107} } func (m *RuntimeConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7701,7 +7769,7 @@ type UpdateRuntimeConfigRequest struct { func (m *UpdateRuntimeConfigRequest) Reset() { *m = UpdateRuntimeConfigRequest{} } func (*UpdateRuntimeConfigRequest) ProtoMessage() {} func (*UpdateRuntimeConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{107} + return fileDescriptor_00212fb1f9d3bf1c, []int{108} } func (m *UpdateRuntimeConfigRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7745,7 +7813,7 @@ type UpdateRuntimeConfigResponse struct { func (m *UpdateRuntimeConfigResponse) Reset() { *m = UpdateRuntimeConfigResponse{} } func (*UpdateRuntimeConfigResponse) ProtoMessage() {} func (*UpdateRuntimeConfigResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{108} + return fileDescriptor_00212fb1f9d3bf1c, []int{109} } func (m *UpdateRuntimeConfigResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7804,7 +7872,7 @@ type RuntimeCondition struct { func (m *RuntimeCondition) Reset() { *m = RuntimeCondition{} } func (*RuntimeCondition) ProtoMessage() {} func (*RuntimeCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{109} + return fileDescriptor_00212fb1f9d3bf1c, []int{110} } func (m *RuntimeCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7872,7 +7940,7 @@ type RuntimeStatus struct { func (m *RuntimeStatus) Reset() { *m = RuntimeStatus{} } func (*RuntimeStatus) ProtoMessage() {} func (*RuntimeStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{110} + return fileDescriptor_00212fb1f9d3bf1c, []int{111} } func (m *RuntimeStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7918,7 +7986,7 @@ type StatusRequest struct { func (m *StatusRequest) Reset() { *m = StatusRequest{} } func (*StatusRequest) ProtoMessage() {} func (*StatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{111} + return fileDescriptor_00212fb1f9d3bf1c, []int{112} } func (m *StatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7971,7 +8039,7 @@ type RuntimeHandlerFeatures struct { func (m *RuntimeHandlerFeatures) Reset() { *m = RuntimeHandlerFeatures{} } func (*RuntimeHandlerFeatures) ProtoMessage() {} func (*RuntimeHandlerFeatures) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{112} + return fileDescriptor_00212fb1f9d3bf1c, []int{113} } func (m *RuntimeHandlerFeatures) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8027,7 +8095,7 @@ type RuntimeHandler struct { func (m *RuntimeHandler) Reset() { *m = RuntimeHandler{} } func (*RuntimeHandler) ProtoMessage() {} func (*RuntimeHandler) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{113} + return fileDescriptor_00212fb1f9d3bf1c, []int{114} } func (m *RuntimeHandler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8083,7 +8151,7 @@ type RuntimeFeatures struct { func (m *RuntimeFeatures) Reset() { *m = RuntimeFeatures{} } func (*RuntimeFeatures) ProtoMessage() {} func (*RuntimeFeatures) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{114} + return fileDescriptor_00212fb1f9d3bf1c, []int{115} } func (m *RuntimeFeatures) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8139,7 +8207,7 @@ type StatusResponse struct { func (m *StatusResponse) Reset() { *m = StatusResponse{} } func (*StatusResponse) ProtoMessage() {} func (*StatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{115} + return fileDescriptor_00212fb1f9d3bf1c, []int{116} } func (m *StatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8204,7 +8272,7 @@ type ImageFsInfoRequest struct { func (m *ImageFsInfoRequest) Reset() { *m = ImageFsInfoRequest{} } func (*ImageFsInfoRequest) ProtoMessage() {} func (*ImageFsInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{116} + return fileDescriptor_00212fb1f9d3bf1c, []int{117} } func (m *ImageFsInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8244,7 +8312,7 @@ type UInt64Value struct { func (m *UInt64Value) Reset() { *m = UInt64Value{} } func (*UInt64Value) ProtoMessage() {} func (*UInt64Value) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{117} + return fileDescriptor_00212fb1f9d3bf1c, []int{118} } func (m *UInt64Value) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8291,7 +8359,7 @@ type FilesystemIdentifier struct { func (m *FilesystemIdentifier) Reset() { *m = FilesystemIdentifier{} } func (*FilesystemIdentifier) ProtoMessage() {} func (*FilesystemIdentifier) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{118} + return fileDescriptor_00212fb1f9d3bf1c, []int{119} } func (m *FilesystemIdentifier) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8348,7 +8416,7 @@ type FilesystemUsage struct { func (m *FilesystemUsage) Reset() { *m = FilesystemUsage{} } func (*FilesystemUsage) ProtoMessage() {} func (*FilesystemUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{119} + return fileDescriptor_00212fb1f9d3bf1c, []int{120} } func (m *FilesystemUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8422,7 +8490,7 @@ type WindowsFilesystemUsage struct { func (m *WindowsFilesystemUsage) Reset() { *m = WindowsFilesystemUsage{} } func (*WindowsFilesystemUsage) ProtoMessage() {} func (*WindowsFilesystemUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{120} + return fileDescriptor_00212fb1f9d3bf1c, []int{121} } func (m *WindowsFilesystemUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8487,7 +8555,7 @@ type ImageFsInfoResponse struct { func (m *ImageFsInfoResponse) Reset() { *m = ImageFsInfoResponse{} } func (*ImageFsInfoResponse) ProtoMessage() {} func (*ImageFsInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{121} + return fileDescriptor_00212fb1f9d3bf1c, []int{122} } func (m *ImageFsInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8540,7 +8608,7 @@ type ContainerStatsRequest struct { func (m *ContainerStatsRequest) Reset() { *m = ContainerStatsRequest{} } func (*ContainerStatsRequest) ProtoMessage() {} func (*ContainerStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{122} + return fileDescriptor_00212fb1f9d3bf1c, []int{123} } func (m *ContainerStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8586,7 +8654,7 @@ type ContainerStatsResponse struct { func (m *ContainerStatsResponse) Reset() { *m = ContainerStatsResponse{} } func (*ContainerStatsResponse) ProtoMessage() {} func (*ContainerStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{123} + return fileDescriptor_00212fb1f9d3bf1c, []int{124} } func (m *ContainerStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8632,7 +8700,7 @@ type ListContainerStatsRequest struct { func (m *ListContainerStatsRequest) Reset() { *m = ListContainerStatsRequest{} } func (*ListContainerStatsRequest) ProtoMessage() {} func (*ListContainerStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{124} + return fileDescriptor_00212fb1f9d3bf1c, []int{125} } func (m *ListContainerStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8686,7 +8754,7 @@ type ContainerStatsFilter struct { func (m *ContainerStatsFilter) Reset() { *m = ContainerStatsFilter{} } func (*ContainerStatsFilter) ProtoMessage() {} func (*ContainerStatsFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{125} + return fileDescriptor_00212fb1f9d3bf1c, []int{126} } func (m *ContainerStatsFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8746,7 +8814,7 @@ type ListContainerStatsResponse struct { func (m *ListContainerStatsResponse) Reset() { *m = ListContainerStatsResponse{} } func (*ListContainerStatsResponse) ProtoMessage() {} func (*ListContainerStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{126} + return fileDescriptor_00212fb1f9d3bf1c, []int{127} } func (m *ListContainerStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8802,7 +8870,7 @@ type ContainerAttributes struct { func (m *ContainerAttributes) Reset() { *m = ContainerAttributes{} } func (*ContainerAttributes) ProtoMessage() {} func (*ContainerAttributes) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{127} + return fileDescriptor_00212fb1f9d3bf1c, []int{128} } func (m *ContainerAttributes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8878,7 +8946,7 @@ type ContainerStats struct { func (m *ContainerStats) Reset() { *m = ContainerStats{} } func (*ContainerStats) ProtoMessage() {} func (*ContainerStats) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{128} + return fileDescriptor_00212fb1f9d3bf1c, []int{129} } func (m *ContainerStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8959,7 +9027,7 @@ type WindowsContainerStats struct { func (m *WindowsContainerStats) Reset() { *m = WindowsContainerStats{} } func (*WindowsContainerStats) ProtoMessage() {} func (*WindowsContainerStats) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{129} + return fileDescriptor_00212fb1f9d3bf1c, []int{130} } func (m *WindowsContainerStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9032,7 +9100,7 @@ type CpuUsage struct { func (m *CpuUsage) Reset() { *m = CpuUsage{} } func (*CpuUsage) ProtoMessage() {} func (*CpuUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{130} + return fileDescriptor_00212fb1f9d3bf1c, []int{131} } func (m *CpuUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9098,7 +9166,7 @@ type WindowsCpuUsage struct { func (m *WindowsCpuUsage) Reset() { *m = WindowsCpuUsage{} } func (*WindowsCpuUsage) ProtoMessage() {} func (*WindowsCpuUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{131} + return fileDescriptor_00212fb1f9d3bf1c, []int{132} } func (m *WindowsCpuUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9171,7 +9239,7 @@ type MemoryUsage struct { func (m *MemoryUsage) Reset() { *m = MemoryUsage{} } func (*MemoryUsage) ProtoMessage() {} func (*MemoryUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{132} + return fileDescriptor_00212fb1f9d3bf1c, []int{133} } func (m *MemoryUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9263,7 +9331,7 @@ type SwapUsage struct { func (m *SwapUsage) Reset() { *m = SwapUsage{} } func (*SwapUsage) ProtoMessage() {} func (*SwapUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{133} + return fileDescriptor_00212fb1f9d3bf1c, []int{134} } func (m *SwapUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9332,7 +9400,7 @@ type WindowsMemoryUsage struct { func (m *WindowsMemoryUsage) Reset() { *m = WindowsMemoryUsage{} } func (*WindowsMemoryUsage) ProtoMessage() {} func (*WindowsMemoryUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{134} + return fileDescriptor_00212fb1f9d3bf1c, []int{135} } func (m *WindowsMemoryUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9406,7 +9474,7 @@ type ReopenContainerLogRequest struct { func (m *ReopenContainerLogRequest) Reset() { *m = ReopenContainerLogRequest{} } func (*ReopenContainerLogRequest) ProtoMessage() {} func (*ReopenContainerLogRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{135} + return fileDescriptor_00212fb1f9d3bf1c, []int{136} } func (m *ReopenContainerLogRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9450,7 +9518,7 @@ type ReopenContainerLogResponse struct { func (m *ReopenContainerLogResponse) Reset() { *m = ReopenContainerLogResponse{} } func (*ReopenContainerLogResponse) ProtoMessage() {} func (*ReopenContainerLogResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{136} + return fileDescriptor_00212fb1f9d3bf1c, []int{137} } func (m *ReopenContainerLogResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9495,7 +9563,7 @@ type CheckpointContainerRequest struct { func (m *CheckpointContainerRequest) Reset() { *m = CheckpointContainerRequest{} } func (*CheckpointContainerRequest) ProtoMessage() {} func (*CheckpointContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{137} + return fileDescriptor_00212fb1f9d3bf1c, []int{138} } func (m *CheckpointContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9553,7 +9621,7 @@ type CheckpointContainerResponse struct { func (m *CheckpointContainerResponse) Reset() { *m = CheckpointContainerResponse{} } func (*CheckpointContainerResponse) ProtoMessage() {} func (*CheckpointContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{138} + return fileDescriptor_00212fb1f9d3bf1c, []int{139} } func (m *CheckpointContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9590,7 +9658,7 @@ type GetEventsRequest struct { func (m *GetEventsRequest) Reset() { *m = GetEventsRequest{} } func (*GetEventsRequest) ProtoMessage() {} func (*GetEventsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{139} + return fileDescriptor_00212fb1f9d3bf1c, []int{140} } func (m *GetEventsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9637,7 +9705,7 @@ type ContainerEventResponse struct { func (m *ContainerEventResponse) Reset() { *m = ContainerEventResponse{} } func (*ContainerEventResponse) ProtoMessage() {} func (*ContainerEventResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{140} + return fileDescriptor_00212fb1f9d3bf1c, []int{141} } func (m *ContainerEventResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9709,7 +9777,7 @@ type ListMetricDescriptorsRequest struct { func (m *ListMetricDescriptorsRequest) Reset() { *m = ListMetricDescriptorsRequest{} } func (*ListMetricDescriptorsRequest) ProtoMessage() {} func (*ListMetricDescriptorsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{141} + return fileDescriptor_00212fb1f9d3bf1c, []int{142} } func (m *ListMetricDescriptorsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9747,7 +9815,7 @@ type ListMetricDescriptorsResponse struct { func (m *ListMetricDescriptorsResponse) Reset() { *m = ListMetricDescriptorsResponse{} } func (*ListMetricDescriptorsResponse) ProtoMessage() {} func (*ListMetricDescriptorsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{142} + return fileDescriptor_00212fb1f9d3bf1c, []int{143} } func (m *ListMetricDescriptorsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9800,7 +9868,7 @@ type MetricDescriptor struct { func (m *MetricDescriptor) Reset() { *m = MetricDescriptor{} } func (*MetricDescriptor) ProtoMessage() {} func (*MetricDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{143} + return fileDescriptor_00212fb1f9d3bf1c, []int{144} } func (m *MetricDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9858,7 +9926,7 @@ type ListPodSandboxMetricsRequest struct { func (m *ListPodSandboxMetricsRequest) Reset() { *m = ListPodSandboxMetricsRequest{} } func (*ListPodSandboxMetricsRequest) ProtoMessage() {} func (*ListPodSandboxMetricsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{144} + return fileDescriptor_00212fb1f9d3bf1c, []int{145} } func (m *ListPodSandboxMetricsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9896,7 +9964,7 @@ type ListPodSandboxMetricsResponse struct { func (m *ListPodSandboxMetricsResponse) Reset() { *m = ListPodSandboxMetricsResponse{} } func (*ListPodSandboxMetricsResponse) ProtoMessage() {} func (*ListPodSandboxMetricsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{145} + return fileDescriptor_00212fb1f9d3bf1c, []int{146} } func (m *ListPodSandboxMetricsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9943,7 +10011,7 @@ type PodSandboxMetrics struct { func (m *PodSandboxMetrics) Reset() { *m = PodSandboxMetrics{} } func (*PodSandboxMetrics) ProtoMessage() {} func (*PodSandboxMetrics) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{146} + return fileDescriptor_00212fb1f9d3bf1c, []int{147} } func (m *PodSandboxMetrics) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10003,7 +10071,7 @@ type ContainerMetrics struct { func (m *ContainerMetrics) Reset() { *m = ContainerMetrics{} } func (*ContainerMetrics) ProtoMessage() {} func (*ContainerMetrics) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{147} + return fileDescriptor_00212fb1f9d3bf1c, []int{148} } func (m *ContainerMetrics) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10066,7 +10134,7 @@ type Metric struct { func (m *Metric) Reset() { *m = Metric{} } func (*Metric) ProtoMessage() {} func (*Metric) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{148} + return fileDescriptor_00212fb1f9d3bf1c, []int{149} } func (m *Metric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10138,7 +10206,7 @@ type RuntimeConfigRequest struct { func (m *RuntimeConfigRequest) Reset() { *m = RuntimeConfigRequest{} } func (*RuntimeConfigRequest) ProtoMessage() {} func (*RuntimeConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{149} + return fileDescriptor_00212fb1f9d3bf1c, []int{150} } func (m *RuntimeConfigRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10179,7 +10247,7 @@ type RuntimeConfigResponse struct { func (m *RuntimeConfigResponse) Reset() { *m = RuntimeConfigResponse{} } func (*RuntimeConfigResponse) ProtoMessage() {} func (*RuntimeConfigResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{150} + return fileDescriptor_00212fb1f9d3bf1c, []int{151} } func (m *RuntimeConfigResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10231,7 +10299,7 @@ type LinuxRuntimeConfiguration struct { func (m *LinuxRuntimeConfiguration) Reset() { *m = LinuxRuntimeConfiguration{} } func (*LinuxRuntimeConfiguration) ProtoMessage() {} func (*LinuxRuntimeConfiguration) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{151} + return fileDescriptor_00212fb1f9d3bf1c, []int{152} } func (m *LinuxRuntimeConfiguration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10281,7 +10349,7 @@ type UpdatePodSandboxResourcesRequest struct { func (m *UpdatePodSandboxResourcesRequest) Reset() { *m = UpdatePodSandboxResourcesRequest{} } func (*UpdatePodSandboxResourcesRequest) ProtoMessage() {} func (*UpdatePodSandboxResourcesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{152} + return fileDescriptor_00212fb1f9d3bf1c, []int{153} } func (m *UpdatePodSandboxResourcesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10339,7 +10407,7 @@ type UpdatePodSandboxResourcesResponse struct { func (m *UpdatePodSandboxResourcesResponse) Reset() { *m = UpdatePodSandboxResourcesResponse{} } func (*UpdatePodSandboxResourcesResponse) ProtoMessage() {} func (*UpdatePodSandboxResourcesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{153} + return fileDescriptor_00212fb1f9d3bf1c, []int{154} } func (m *UpdatePodSandboxResourcesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10455,6 +10523,7 @@ func init() { proto.RegisterType((*WindowsContainerSecurityContext)(nil), "runtime.v1.WindowsContainerSecurityContext") proto.RegisterType((*WindowsContainerConfig)(nil), "runtime.v1.WindowsContainerConfig") proto.RegisterType((*WindowsContainerResources)(nil), "runtime.v1.WindowsContainerResources") + proto.RegisterType((*WindowsCpuGroupAffinity)(nil), "runtime.v1.WindowsCpuGroupAffinity") proto.RegisterType((*ContainerMetadata)(nil), "runtime.v1.ContainerMetadata") proto.RegisterType((*Device)(nil), "runtime.v1.Device") proto.RegisterType((*CDIDevice)(nil), "runtime.v1.CDIDevice") @@ -10566,457 +10635,461 @@ func init() { func init() { proto.RegisterFile("api.proto", fileDescriptor_00212fb1f9d3bf1c) } var fileDescriptor_00212fb1f9d3bf1c = []byte{ - // 7200 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x7d, 0x5d, 0x6c, 0x1c, 0xc9, - 0x75, 0x2e, 0x7b, 0x66, 0x48, 0xce, 0x1c, 0x72, 0xc8, 0x61, 0x89, 0x22, 0xa9, 0x91, 0x44, 0x49, - 0xad, 0xfd, 0x91, 0xb4, 0xab, 0x9f, 0xd5, 0x6a, 0x77, 0x25, 0xad, 0x76, 0x57, 0x23, 0x92, 0xd2, - 0xce, 0x5a, 0x24, 0xc7, 0x3d, 0xe4, 0xda, 0xbb, 0xbe, 0x70, 0xdf, 0xd6, 0x74, 0x71, 0xd8, 0xab, - 0x99, 0xee, 0x76, 0x77, 0x8f, 0x24, 0xfa, 0xe1, 0xe2, 0x3e, 0x5d, 0xdc, 0xeb, 0x27, 0x03, 0x37, - 0x46, 0x10, 0x23, 0x48, 0xe0, 0x00, 0x41, 0xf2, 0x96, 0xc4, 0x40, 0x1c, 0x07, 0x09, 0x10, 0x20, - 0x88, 0x0d, 0x27, 0x48, 0x80, 0x3c, 0x24, 0x80, 0x1f, 0x02, 0xc4, 0xde, 0x04, 0x08, 0x90, 0x67, - 0x3f, 0x04, 0x79, 0x71, 0x50, 0x7f, 0xdd, 0x5d, 0xfd, 0x33, 0x33, 0xe4, 0x6e, 0x76, 0xd7, 0x4f, - 0x9c, 0xae, 0x3a, 0xe7, 0x54, 0xd5, 0xa9, 0x53, 0xa7, 0x4e, 0x55, 0x7d, 0x55, 0x84, 0x8a, 0xe1, - 0x5a, 0x57, 0x5c, 0xcf, 0x09, 0x1c, 0x04, 0xde, 0xc0, 0x0e, 0xac, 0x3e, 0xbe, 0xf2, 0xe4, 0x95, - 0xfa, 0xe5, 0xae, 0x15, 0xec, 0x0f, 0x1e, 0x5d, 0xe9, 0x38, 0xfd, 0xab, 0x5d, 0xa7, 0xeb, 0x5c, - 0xa5, 0x24, 0x8f, 0x06, 0x7b, 0xf4, 0x8b, 0x7e, 0xd0, 0x5f, 0x8c, 0x55, 0xbd, 0x04, 0x73, 0xef, - 0x63, 0xcf, 0xb7, 0x1c, 0x5b, 0xc3, 0xdf, 0x18, 0x60, 0x3f, 0x40, 0x2b, 0x30, 0xfd, 0x84, 0xa5, - 0xac, 0x28, 0x67, 0x95, 0x0b, 0x15, 0x4d, 0x7c, 0xaa, 0xbf, 0xa7, 0xc0, 0x7c, 0x48, 0xec, 0xbb, - 0x8e, 0xed, 0xe3, 0x7c, 0x6a, 0x74, 0x0e, 0x66, 0x79, 0xb5, 0x74, 0xdb, 0xe8, 0xe3, 0x95, 0x02, - 0xcd, 0x9e, 0xe1, 0x69, 0x5b, 0x46, 0x1f, 0xa3, 0x17, 0x61, 0x5e, 0x90, 0x08, 0x21, 0x45, 0x4a, - 0x35, 0xc7, 0x93, 0x79, 0x69, 0xe8, 0x0a, 0x1c, 0x13, 0x84, 0x86, 0x6b, 0x85, 0xc4, 0x25, 0x4a, - 0xbc, 0xc0, 0xb3, 0x1a, 0xae, 0xc5, 0xe9, 0xd5, 0xaf, 0x41, 0x65, 0x7d, 0xab, 0xbd, 0xe6, 0xd8, - 0x7b, 0x56, 0x97, 0x54, 0xd1, 0xc7, 0x1e, 0xe1, 0x59, 0x51, 0xce, 0x16, 0x49, 0x15, 0xf9, 0x27, - 0xaa, 0x43, 0xd9, 0xc7, 0x86, 0xd7, 0xd9, 0xc7, 0xfe, 0x4a, 0x81, 0x66, 0x85, 0xdf, 0x84, 0xcb, - 0x71, 0x03, 0xcb, 0xb1, 0xfd, 0x95, 0x22, 0xe3, 0xe2, 0x9f, 0xea, 0x6f, 0x2a, 0x30, 0xd3, 0x72, - 0xbc, 0x60, 0xd3, 0x70, 0x5d, 0xcb, 0xee, 0xa2, 0x6b, 0x50, 0xa6, 0xba, 0xec, 0x38, 0x3d, 0xaa, - 0x83, 0xb9, 0xeb, 0x8b, 0x57, 0xa2, 0x0e, 0xb9, 0xd2, 0xe2, 0x79, 0x5a, 0x48, 0x85, 0x9e, 0x87, - 0xb9, 0x8e, 0x63, 0x07, 0x86, 0x65, 0x63, 0x4f, 0x77, 0x1d, 0x2f, 0xa0, 0xca, 0x99, 0xd4, 0xaa, - 0x61, 0x2a, 0x91, 0x8f, 0x4e, 0x42, 0x65, 0xdf, 0xf1, 0x03, 0x46, 0x51, 0xa4, 0x14, 0x65, 0x92, - 0x40, 0x33, 0x97, 0x61, 0x9a, 0x66, 0x5a, 0x2e, 0x57, 0xc3, 0x14, 0xf9, 0x6c, 0xba, 0xea, 0x8f, - 0x8a, 0x30, 0xb9, 0xe9, 0x0c, 0xec, 0x20, 0x51, 0x8c, 0x11, 0xec, 0xf3, 0x2e, 0x8a, 0x15, 0x63, - 0x04, 0xfb, 0x51, 0x31, 0x84, 0x82, 0xf5, 0x12, 0x2b, 0x86, 0x64, 0xd6, 0xa1, 0xec, 0x61, 0xc3, - 0x74, 0xec, 0xde, 0x01, 0xad, 0x42, 0x59, 0x0b, 0xbf, 0x49, 0xf7, 0xf9, 0xb8, 0x67, 0xd9, 0x83, - 0x67, 0xba, 0x87, 0x7b, 0xc6, 0x23, 0xdc, 0xa3, 0x55, 0x29, 0x6b, 0x73, 0x3c, 0x59, 0x63, 0xa9, - 0xe8, 0x6d, 0x98, 0x71, 0x3d, 0xc7, 0x35, 0xba, 0x06, 0xd1, 0xe0, 0xca, 0x24, 0x55, 0xd2, 0xa9, - 0xb8, 0x92, 0x68, 0x85, 0x5b, 0x11, 0x8d, 0x16, 0x67, 0x40, 0x6f, 0xc0, 0xcc, 0xc0, 0x32, 0xb9, - 0xbe, 0xfd, 0x95, 0xa9, 0xb3, 0xc5, 0x0b, 0x33, 0xd7, 0x8f, 0xc7, 0xf9, 0x9b, 0xeb, 0x3c, 0x57, - 0x8b, 0x53, 0x12, 0xc6, 0x6e, 0x8c, 0x71, 0x7a, 0x28, 0x63, 0x8c, 0x92, 0x1a, 0x1c, 0xee, 0x0c, - 0x3c, 0xdf, 0x7a, 0x82, 0x75, 0xd2, 0x60, 0x9d, 0x6a, 0xa0, 0x4c, 0x9b, 0xb7, 0x10, 0x66, 0x69, - 0xd8, 0x30, 0xb7, 0x89, 0x2a, 0x5e, 0x82, 0x49, 0xab, 0x6f, 0x74, 0xf1, 0x4a, 0xe5, 0xac, 0x92, - 0x2a, 0x82, 0x64, 0xb4, 0x5d, 0xdc, 0xd1, 0x18, 0x0d, 0x7a, 0x0e, 0xe6, 0xe8, 0x0f, 0xdd, 0x1f, - 0x3c, 0x62, 0x5a, 0x07, 0xaa, 0xf5, 0x59, 0x9a, 0xda, 0x1e, 0x3c, 0x22, 0x9a, 0x57, 0x75, 0xa8, - 0x84, 0x95, 0x8b, 0x7a, 0xdb, 0xa4, 0x7d, 0x58, 0xe5, 0xbd, 0x6d, 0x92, 0x51, 0x16, 0xf5, 0xb1, - 0x65, 0xd2, 0xfe, 0xab, 0x6a, 0x33, 0x61, 0x5a, 0xd3, 0x44, 0x4b, 0x30, 0xd5, 0xc3, 0x76, 0x37, - 0xd8, 0xa7, 0x1d, 0x58, 0xd5, 0xf8, 0x97, 0xfa, 0x6b, 0x0a, 0x54, 0x77, 0x7d, 0xec, 0x91, 0xa1, - 0xe8, 0xbb, 0x46, 0x07, 0xa3, 0xcb, 0x50, 0xea, 0x3b, 0x26, 0xe6, 0x56, 0x7c, 0x22, 0xde, 0x88, - 0x90, 0x68, 0xd3, 0x31, 0xb1, 0x46, 0xc9, 0xd0, 0x45, 0x28, 0x0d, 0x2c, 0x93, 0x0d, 0x9d, 0x5c, - 0xb5, 0x52, 0x12, 0x42, 0xda, 0x25, 0xa4, 0xc5, 0xa1, 0xa4, 0x84, 0x44, 0xfd, 0xa5, 0x02, 0xf3, - 0x61, 0x69, 0xdb, 0x74, 0xcc, 0xa1, 0x57, 0x61, 0xda, 0xc6, 0xc1, 0x53, 0xc7, 0x7b, 0x3c, 0xba, - 0x6e, 0x82, 0x12, 0xbd, 0x04, 0x45, 0x97, 0x6b, 0x64, 0x28, 0x03, 0xa1, 0x22, 0xc4, 0x96, 0xdb, - 0xa1, 0x1a, 0x1a, 0x4e, 0x6c, 0xb9, 0x1d, 0x32, 0x62, 0x02, 0xc3, 0xeb, 0x62, 0xda, 0x1f, 0x6c, - 0xf4, 0x95, 0x59, 0x42, 0xd3, 0x44, 0x77, 0x61, 0x6e, 0xe0, 0x63, 0xcf, 0xf6, 0x75, 0xe1, 0x3f, - 0x26, 0xa9, 0x4d, 0x48, 0x42, 0x25, 0xbd, 0x6b, 0x55, 0xc6, 0xb0, 0xcd, 0x1d, 0x8c, 0x0a, 0xd0, - 0xb4, 0x83, 0xd7, 0x6f, 0xbc, 0x6f, 0xf4, 0x06, 0x18, 0x2d, 0xc2, 0xe4, 0x13, 0xf2, 0x83, 0xb6, - 0xbc, 0xa8, 0xb1, 0x0f, 0xf5, 0x7b, 0x93, 0x70, 0xf2, 0x21, 0x19, 0x63, 0x6d, 0xc3, 0x36, 0x1f, - 0x39, 0xcf, 0xda, 0xc4, 0x24, 0xad, 0xe0, 0x60, 0xcd, 0xb1, 0x03, 0xfc, 0x2c, 0x40, 0xef, 0xc2, - 0x82, 0x2d, 0xe4, 0x87, 0x15, 0x51, 0x68, 0x45, 0x4e, 0x66, 0xb6, 0x8e, 0x15, 0xae, 0xd5, 0x6c, - 0x39, 0xc1, 0x47, 0xf7, 0xa2, 0x51, 0x2e, 0xe4, 0x14, 0xd2, 0x0d, 0x6a, 0x6f, 0xd0, 0xda, 0x70, - 0x29, 0xc2, 0x01, 0x08, 0x19, 0xaf, 0x03, 0xf1, 0xfb, 0xba, 0xe1, 0xeb, 0xa4, 0xa5, 0x54, 0xcb, - 0x33, 0xd7, 0x97, 0x24, 0x2b, 0x08, 0x1b, 0xac, 0x55, 0xbc, 0x81, 0xdd, 0xf0, 0x89, 0x86, 0xd0, - 0x4d, 0x3a, 0x87, 0x10, 0xbe, 0xae, 0xe7, 0x0c, 0x5c, 0x3a, 0xfe, 0xf2, 0x19, 0x81, 0x32, 0x3e, - 0x20, 0x94, 0x74, 0x6a, 0xe1, 0x7e, 0x4a, 0xf7, 0x1c, 0x27, 0xd8, 0xf3, 0x85, 0x6f, 0x12, 0xc9, - 0x1a, 0x4d, 0x45, 0x57, 0xe1, 0x98, 0x3f, 0x70, 0xdd, 0x1e, 0xee, 0x63, 0x3b, 0x30, 0x7a, 0xac, - 0x20, 0xd2, 0x67, 0xc5, 0x0b, 0x45, 0x0d, 0xc5, 0xb3, 0xa8, 0x60, 0x1f, 0x3d, 0x82, 0x7a, 0x06, - 0x83, 0xee, 0x3a, 0x3d, 0xab, 0x73, 0xb0, 0x32, 0x43, 0x0d, 0xe8, 0x39, 0x49, 0x35, 0x29, 0x19, - 0x2d, 0x4a, 0xab, 0xad, 0xf8, 0x39, 0x39, 0x68, 0x15, 0xc0, 0xf5, 0xac, 0x27, 0x56, 0x0f, 0x77, - 0xb1, 0xb9, 0x32, 0x45, 0x2b, 0x1e, 0x4b, 0x41, 0xaf, 0x91, 0x29, 0xad, 0xd3, 0x71, 0xfa, 0x2e, - 0x77, 0x38, 0x52, 0x9f, 0x0a, 0x5b, 0x68, 0x79, 0xce, 0x9e, 0xd5, 0xc3, 0x9a, 0xa0, 0x45, 0x6f, - 0x40, 0xd9, 0x70, 0x5d, 0xc3, 0xeb, 0x3b, 0x1e, 0x75, 0x39, 0x23, 0xf8, 0x42, 0x62, 0x74, 0x03, - 0x16, 0xb9, 0x0c, 0xdd, 0x65, 0x99, 0xcc, 0x6f, 0x4d, 0x13, 0xdb, 0xbf, 0x57, 0x58, 0x51, 0x34, - 0xc4, 0xf3, 0x39, 0x2f, 0xf5, 0x60, 0x7f, 0xa5, 0xc0, 0x7c, 0x42, 0x26, 0x7a, 0x0f, 0x66, 0x85, - 0x84, 0xe0, 0xc0, 0x15, 0xae, 0xe6, 0xc5, 0x21, 0xd5, 0xb8, 0xc2, 0xff, 0xee, 0x1c, 0xb8, 0x98, - 0x4e, 0x0b, 0xe2, 0x03, 0x9d, 0x87, 0x6a, 0xcf, 0xe9, 0x18, 0x3d, 0xea, 0x19, 0x3d, 0xbc, 0xc7, - 0x27, 0xaf, 0xd9, 0x30, 0x51, 0xc3, 0x7b, 0xea, 0x5d, 0x98, 0x89, 0x09, 0x40, 0x08, 0xe6, 0x34, - 0x56, 0xd4, 0x3a, 0xde, 0x33, 0x06, 0xbd, 0xa0, 0x36, 0x81, 0xe6, 0x00, 0x76, 0xed, 0x0e, 0x09, - 0x16, 0x6c, 0x6c, 0xd6, 0x14, 0x54, 0x85, 0xca, 0x43, 0x21, 0xa2, 0x56, 0x50, 0xbf, 0x5b, 0x84, - 0xe3, 0xd4, 0xb8, 0x5b, 0x8e, 0xc9, 0x47, 0x1b, 0x8f, 0x2c, 0xce, 0x43, 0xb5, 0x43, 0xbb, 0x5f, - 0x77, 0x0d, 0x0f, 0xdb, 0x01, 0x9f, 0x5f, 0x67, 0x59, 0x62, 0x8b, 0xa6, 0x21, 0x0d, 0x6a, 0x3e, - 0x6f, 0x91, 0xde, 0x61, 0xa3, 0x93, 0x0f, 0x20, 0xa9, 0xd5, 0x43, 0x06, 0xb3, 0x36, 0xef, 0xa7, - 0x46, 0xf7, 0xb4, 0x7f, 0xe0, 0x77, 0x82, 0x9e, 0xf0, 0xa8, 0x57, 0x52, 0xa2, 0x92, 0x95, 0xbd, - 0xd2, 0x66, 0x0c, 0x1b, 0x76, 0xe0, 0x1d, 0x68, 0x82, 0x1d, 0xbd, 0x03, 0x65, 0xe7, 0x09, 0xf6, - 0xf6, 0xb1, 0xc1, 0x3c, 0xd9, 0xcc, 0xf5, 0xf3, 0x29, 0x51, 0x6b, 0x62, 0x32, 0xd1, 0xb0, 0xef, - 0x0c, 0xbc, 0x0e, 0xf6, 0xb5, 0x90, 0x09, 0x35, 0xa0, 0xe2, 0x89, 0x64, 0xee, 0xe9, 0xc6, 0x92, - 0x10, 0x71, 0xd5, 0x6f, 0xc3, 0x6c, 0xbc, 0x72, 0xa8, 0x06, 0xc5, 0xc7, 0xf8, 0x80, 0x2b, 0x93, - 0xfc, 0x8c, 0x7c, 0x20, 0xeb, 0x61, 0xf6, 0x71, 0xbb, 0x70, 0x53, 0x51, 0x3d, 0x40, 0x51, 0x4b, - 0x37, 0x71, 0x60, 0x98, 0x46, 0x60, 0x20, 0x04, 0x25, 0x1a, 0x73, 0x32, 0x11, 0xf4, 0x37, 0x91, - 0x3a, 0xe0, 0xd3, 0x41, 0x45, 0x23, 0x3f, 0xd1, 0x29, 0xa8, 0x84, 0xde, 0x8e, 0x07, 0x9e, 0x51, - 0x02, 0x09, 0x00, 0x8d, 0x20, 0xc0, 0x7d, 0x37, 0xa0, 0x8a, 0xa9, 0x6a, 0xe2, 0x53, 0xfd, 0x7f, - 0x93, 0x50, 0x4b, 0xd9, 0xc2, 0x6d, 0x28, 0xf7, 0x79, 0xf1, 0xdc, 0xcf, 0xae, 0x4a, 0x51, 0x60, - 0xaa, 0x92, 0x5a, 0x48, 0x4f, 0x82, 0x2c, 0x62, 0x6b, 0xb1, 0x30, 0x39, 0xfc, 0x66, 0x46, 0xde, - 0xd5, 0x4d, 0xcb, 0xc3, 0x9d, 0xc0, 0xf1, 0x0e, 0x78, 0x45, 0x67, 0x7b, 0x4e, 0x77, 0x5d, 0xa4, - 0xa1, 0x1b, 0x00, 0xa6, 0xed, 0xeb, 0xd4, 0x86, 0xbb, 0xbc, 0x1f, 0xa5, 0x49, 0x36, 0x8c, 0x86, - 0xb5, 0x8a, 0x69, 0xfb, 0xbc, 0xca, 0x77, 0xa0, 0x4a, 0x42, 0x4b, 0xbd, 0x2f, 0xe2, 0xa3, 0x49, - 0x6a, 0x4b, 0xcb, 0x72, 0xbd, 0xc3, 0x40, 0x57, 0x9b, 0x75, 0xa3, 0x0f, 0x1f, 0xdd, 0x85, 0x29, - 0x1a, 0xdd, 0x89, 0x78, 0xec, 0x42, 0x76, 0x73, 0xb9, 0xf5, 0x3d, 0xa4, 0xa4, 0xcc, 0xf8, 0x38, - 0x1f, 0xda, 0x86, 0x19, 0xc3, 0xb6, 0x9d, 0xc0, 0x60, 0xb3, 0x0a, 0x8b, 0xce, 0x2e, 0x0f, 0x15, - 0xd3, 0x88, 0xe8, 0x99, 0xac, 0xb8, 0x04, 0xf4, 0x06, 0x4c, 0xd2, 0x69, 0x87, 0xcf, 0x13, 0xe7, - 0x46, 0x0e, 0x0a, 0x8d, 0xd1, 0xa3, 0xb7, 0x60, 0xfa, 0xa9, 0x65, 0x9b, 0xce, 0x53, 0x9f, 0xfb, - 0x53, 0xc9, 0x84, 0xbf, 0xc2, 0xb2, 0x52, 0xcc, 0x82, 0xa7, 0x7e, 0x0b, 0x66, 0x62, 0xed, 0x3b, - 0x8c, 0xfd, 0xd6, 0xdf, 0x86, 0x5a, 0xb2, 0x4d, 0x87, 0xb2, 0xff, 0x01, 0x2c, 0x6a, 0x03, 0x3b, - 0xaa, 0x9a, 0x58, 0xc5, 0xdd, 0x80, 0x29, 0x6e, 0x0d, 0xcc, 0x18, 0x4f, 0x0d, 0x53, 0xab, 0xc6, - 0x69, 0xe3, 0x0b, 0xb2, 0x7d, 0xc3, 0x36, 0x7b, 0xd8, 0xe3, 0x25, 0x8a, 0x05, 0xd9, 0xbb, 0x2c, - 0x55, 0x7d, 0x0b, 0x8e, 0x27, 0x8a, 0xe5, 0xeb, 0xc1, 0xe7, 0x60, 0xce, 0x75, 0x4c, 0xdd, 0x67, - 0xc9, 0x22, 0x5e, 0xad, 0x10, 0xdb, 0x11, 0xb4, 0x4d, 0x93, 0xb0, 0xb7, 0x03, 0xc7, 0x4d, 0x57, - 0x7b, 0x3c, 0xf6, 0x15, 0x58, 0x4a, 0xb2, 0xb3, 0xe2, 0xd5, 0x77, 0x60, 0x59, 0xc3, 0x7d, 0xe7, - 0x09, 0x3e, 0xaa, 0xe8, 0x3a, 0xac, 0xa4, 0x05, 0x70, 0xe1, 0x1f, 0xc0, 0x72, 0x94, 0xda, 0x0e, - 0x8c, 0x60, 0xe0, 0x1f, 0x4a, 0x38, 0x5f, 0x2c, 0x3f, 0x72, 0x7c, 0xd6, 0x91, 0x65, 0x4d, 0x7c, - 0xaa, 0xcb, 0x30, 0xd9, 0x72, 0xcc, 0x66, 0x0b, 0xcd, 0x41, 0xc1, 0x72, 0x39, 0x73, 0xc1, 0x72, - 0xd5, 0x4e, 0xbc, 0xcc, 0x2d, 0x16, 0xd9, 0xb2, 0xa2, 0x93, 0xa4, 0xe8, 0x26, 0xcc, 0x19, 0xa6, - 0x69, 0x11, 0x43, 0x32, 0x7a, 0xba, 0xe5, 0x8a, 0xc0, 0x7c, 0x21, 0xd1, 0xf5, 0xcd, 0x96, 0x56, - 0x8d, 0x08, 0x9b, 0xae, 0xaf, 0xde, 0x83, 0x4a, 0xb4, 0x08, 0x78, 0x2d, 0x5a, 0xf8, 0x16, 0x46, - 0xc7, 0x8b, 0xe1, 0xaa, 0x78, 0x2b, 0x35, 0x49, 0xf2, 0x6a, 0xbe, 0x06, 0x10, 0x3a, 0x55, 0x11, - 0x82, 0x1e, 0xcf, 0x14, 0xa9, 0xc5, 0x08, 0xd5, 0x7f, 0x2e, 0xc5, 0x9d, 0x6c, 0xac, 0xc9, 0x66, - 0xd8, 0x64, 0x53, 0x72, 0xba, 0x85, 0x43, 0x3a, 0xdd, 0x57, 0x60, 0xd2, 0x0f, 0x8c, 0x00, 0xf3, - 0x98, 0xff, 0x64, 0x36, 0x23, 0x29, 0x18, 0x6b, 0x8c, 0x12, 0x9d, 0x06, 0xe8, 0x78, 0xd8, 0x08, - 0xb0, 0xa9, 0x1b, 0x6c, 0x56, 0x28, 0x6a, 0x15, 0x9e, 0xd2, 0x08, 0x88, 0x17, 0x11, 0xab, 0x94, - 0x8c, 0x89, 0x30, 0xa7, 0x1b, 0xa3, 0xf5, 0x4a, 0xe8, 0xbd, 0xa6, 0x46, 0x7a, 0x2f, 0xce, 0xca, - 0xbd, 0x57, 0xe4, 0x89, 0xa7, 0x87, 0x79, 0x62, 0xc6, 0x34, 0x8e, 0x27, 0x2e, 0x0f, 0xf3, 0xc4, - 0x5c, 0xcc, 0x70, 0x4f, 0x9c, 0xe1, 0x48, 0x2a, 0x59, 0x8e, 0xe4, 0xf3, 0x74, 0x9d, 0x7f, 0x5a, - 0x80, 0x95, 0xf4, 0x78, 0xe6, 0x7e, 0xec, 0x06, 0x4c, 0xf9, 0x34, 0x65, 0xb8, 0xff, 0xe4, 0x5c, - 0x9c, 0x16, 0xdd, 0x83, 0x92, 0x65, 0xef, 0x39, 0x7c, 0xe0, 0x5d, 0x19, 0xca, 0xc3, 0x4b, 0xba, - 0xd2, 0xb4, 0xf7, 0x1c, 0xa6, 0x41, 0xca, 0x8b, 0x1e, 0xc2, 0xb1, 0x70, 0xf5, 0xee, 0xeb, 0x4c, - 0x30, 0x16, 0x71, 0x9e, 0x64, 0xa5, 0x61, 0x54, 0xc5, 0x25, 0xa2, 0x88, 0xaf, 0xcd, 0xd9, 0x48, - 0x8c, 0x43, 0xc8, 0xfd, 0xc0, 0xe8, 0xbb, 0xc2, 0x62, 0xc3, 0x84, 0xfa, 0x1b, 0x50, 0x09, 0x8b, - 0x3f, 0x94, 0xee, 0x9a, 0xb0, 0x98, 0x18, 0x23, 0x6c, 0xb1, 0x1a, 0x0e, 0x2a, 0x65, 0xdc, 0x41, - 0xa5, 0xfe, 0x42, 0x89, 0x0f, 0xf4, 0xfb, 0x56, 0x2f, 0xc0, 0x5e, 0x6a, 0xa0, 0xbf, 0x2e, 0xe4, - 0xb2, 0x51, 0x7e, 0x76, 0x88, 0x5c, 0xb6, 0x16, 0xe4, 0x23, 0xf6, 0x7d, 0x98, 0xa3, 0x26, 0xae, - 0xfb, 0xb8, 0x47, 0x63, 0x25, 0xae, 0xc7, 0xab, 0xd9, 0x02, 0x58, 0xe9, 0x6c, 0x88, 0xb4, 0x39, - 0x07, 0xeb, 0x9b, 0x6a, 0x2f, 0x9e, 0x56, 0xbf, 0x0b, 0x28, 0x4d, 0x74, 0x28, 0x0d, 0x6e, 0x12, - 0x7f, 0xe9, 0x07, 0x99, 0x33, 0xf7, 0x1e, 0xad, 0xc6, 0x70, 0xcb, 0x63, 0x55, 0xd5, 0x38, 0xad, - 0xfa, 0x8f, 0x45, 0x80, 0x28, 0xf3, 0x0b, 0xee, 0x28, 0x6f, 0x87, 0x0e, 0x8b, 0x45, 0x9c, 0x6a, - 0xb6, 0xc8, 0x4c, 0x57, 0xd5, 0x94, 0x5d, 0x15, 0x8b, 0x3d, 0x5f, 0xcc, 0x11, 0x70, 0x68, 0x27, - 0x35, 0xfd, 0x45, 0x73, 0x52, 0xf7, 0x61, 0x29, 0x69, 0x26, 0xdc, 0x43, 0xbd, 0x0c, 0x93, 0x56, - 0x80, 0xfb, 0x6c, 0x53, 0x3b, 0xb1, 0x29, 0x12, 0x23, 0x67, 0x44, 0xea, 0xdb, 0xb0, 0x24, 0xf7, - 0xd5, 0xe1, 0x42, 0x17, 0xf5, 0x61, 0x32, 0xf6, 0x89, 0x5c, 0x25, 0xb7, 0x8f, 0xcc, 0xed, 0xa5, - 0x24, 0x0f, 0xa3, 0x54, 0x7f, 0xac, 0xc0, 0xf1, 0x44, 0x56, 0xce, 0xc0, 0xff, 0x5a, 0x6a, 0x00, - 0x33, 0xdf, 0x7a, 0x63, 0x48, 0x29, 0x9f, 0xe1, 0x28, 0xfe, 0x0a, 0xd4, 0xe5, 0xee, 0x91, 0x54, - 0x7b, 0x2b, 0x31, 0x94, 0xcf, 0x8d, 0xac, 0x74, 0x38, 0x9e, 0x5b, 0x70, 0x32, 0x53, 0x70, 0x5a, - 0xe7, 0xc5, 0x31, 0x75, 0xfe, 0x1f, 0x85, 0xb8, 0xcf, 0x6e, 0x04, 0x81, 0x67, 0x3d, 0x1a, 0x04, - 0xf8, 0xd3, 0x0d, 0xaa, 0xd6, 0xc3, 0x91, 0xcd, 0xfc, 0xec, 0xcb, 0xd9, 0x9c, 0x51, 0xe9, 0x99, - 0x63, 0xbc, 0x2d, 0x8f, 0xf1, 0x12, 0x15, 0xf5, 0xca, 0x48, 0x51, 0x43, 0x47, 0xfb, 0xe7, 0x39, - 0x88, 0xff, 0x5a, 0x81, 0xf9, 0x44, 0xaf, 0xa0, 0xbb, 0x00, 0x46, 0x58, 0x75, 0x6e, 0x1f, 0x67, - 0x47, 0x35, 0x51, 0x8b, 0xf1, 0x90, 0x39, 0x91, 0xc5, 0x8b, 0x19, 0x73, 0x62, 0x46, 0xbc, 0x18, - 0x86, 0x8b, 0x77, 0xa2, 0xc5, 0x2e, 0xdb, 0x88, 0x55, 0x87, 0x2e, 0x76, 0x19, 0xaf, 0x60, 0x51, - 0xff, 0x7f, 0x01, 0x16, 0xb3, 0xa4, 0xa3, 0x17, 0xa0, 0xd8, 0x71, 0x07, 0xbc, 0x25, 0xd2, 0x09, - 0xd8, 0x9a, 0x3b, 0xd8, 0xf5, 0x8d, 0x2e, 0xd6, 0x08, 0x01, 0xba, 0x0a, 0x53, 0x7d, 0xdc, 0x77, - 0xbc, 0x03, 0x5e, 0x6f, 0x69, 0xbb, 0x61, 0x93, 0xe6, 0x30, 0x6a, 0x4e, 0x86, 0xae, 0x47, 0x61, - 0x35, 0xab, 0xef, 0x8a, 0xb4, 0x7a, 0x60, 0x59, 0x8c, 0x25, 0x8c, 0xa5, 0xaf, 0xc3, 0xb4, 0xeb, - 0x39, 0x1d, 0xec, 0xfb, 0x7c, 0x37, 0x64, 0x25, 0x71, 0x24, 0x47, 0xb2, 0x38, 0x0f, 0x27, 0x44, - 0xb7, 0x01, 0xa2, 0x00, 0x8a, 0xcf, 0x4c, 0xf5, 0xdc, 0x78, 0xcb, 0xd7, 0x62, 0xd4, 0xea, 0x0f, - 0x0b, 0xb0, 0x94, 0xad, 0x39, 0x74, 0x39, 0xae, 0x97, 0x93, 0x19, 0xaa, 0x96, 0xd5, 0xf3, 0x7a, - 0x42, 0x3d, 0xab, 0x19, 0x1c, 0x59, 0x5a, 0xba, 0x95, 0xd4, 0xd2, 0x99, 0x0c, 0xc6, 0x6c, 0x65, - 0xdd, 0x4a, 0x2a, 0x2b, 0x8b, 0x35, 0x5b, 0x67, 0x8d, 0x0c, 0x9d, 0x9d, 0xcb, 0x6a, 0x63, 0xbe, - 0xea, 0xfe, 0x42, 0x81, 0xd9, 0x78, 0xbd, 0xe4, 0x90, 0x55, 0x49, 0x84, 0xac, 0x68, 0x0b, 0x16, - 0x4c, 0xb6, 0x73, 0xab, 0x5b, 0x76, 0x80, 0xbd, 0x3d, 0xa3, 0x23, 0xa2, 0xc2, 0x73, 0x19, 0x76, - 0xd1, 0x14, 0x34, 0xac, 0xe2, 0x35, 0xce, 0x1b, 0x26, 0x93, 0x16, 0x84, 0x72, 0x84, 0xd7, 0x1a, - 0x43, 0x50, 0x8c, 0x49, 0xfd, 0x07, 0x05, 0x8e, 0x65, 0x28, 0x78, 0x44, 0x43, 0x76, 0xf3, 0x1b, - 0x72, 0x21, 0xbf, 0xeb, 0x46, 0xb6, 0xe7, 0xdd, 0x8c, 0xf6, 0x8c, 0x2f, 0x2f, 0xde, 0xac, 0x5f, - 0x2a, 0x70, 0x3c, 0x93, 0x2a, 0x73, 0x7b, 0xf5, 0x3a, 0x94, 0xbd, 0x67, 0xfa, 0xa3, 0x83, 0x00, - 0xfb, 0x59, 0x03, 0x7b, 0x37, 0x76, 0x4e, 0x33, 0xed, 0x3d, 0xbb, 0x47, 0xe8, 0xd0, 0x0d, 0xa8, - 0x78, 0xcf, 0x74, 0xec, 0x79, 0x8e, 0x27, 0x7c, 0x51, 0x2e, 0x53, 0xd9, 0x7b, 0xb6, 0x41, 0x09, - 0x49, 0x49, 0x81, 0x28, 0xa9, 0x34, 0xa2, 0xa4, 0x20, 0x2a, 0x29, 0x08, 0x4b, 0x9a, 0x1c, 0x51, - 0x52, 0xc0, 0x4b, 0x52, 0x7f, 0xbf, 0x00, 0xa7, 0x86, 0xa9, 0xeb, 0x53, 0x53, 0xc4, 0x06, 0x20, - 0xef, 0x99, 0xee, 0x1a, 0x9d, 0xc7, 0x38, 0xf0, 0x75, 0xd3, 0x73, 0x5c, 0x17, 0x9b, 0xa3, 0x34, - 0x52, 0xf3, 0x9e, 0xb5, 0x18, 0xc7, 0x3a, 0x63, 0x38, 0x92, 0x66, 0x36, 0x00, 0x05, 0xe9, 0xa2, - 0x47, 0xa8, 0xa8, 0x16, 0x24, 0x8a, 0x56, 0x3f, 0x82, 0xd9, 0xb8, 0x87, 0x18, 0x61, 0xfb, 0x77, - 0xa0, 0xca, 0x3d, 0x88, 0xde, 0x71, 0x06, 0x76, 0x30, 0x4a, 0x51, 0xb3, 0x9c, 0x7a, 0x8d, 0x10, - 0xab, 0xdf, 0x08, 0x87, 0xdb, 0x67, 0x56, 0xe4, 0xff, 0x29, 0x40, 0x25, 0x3c, 0xc7, 0x27, 0x33, - 0x3d, 0x3b, 0xed, 0x67, 0xfd, 0xce, 0x8f, 0xf5, 0xdf, 0x95, 0xa3, 0x16, 0x16, 0xa7, 0xbe, 0x90, - 0x89, 0x04, 0x18, 0xb1, 0x30, 0xb9, 0x06, 0x8b, 0x03, 0x1f, 0x7b, 0xba, 0xef, 0xe2, 0x8e, 0xb5, - 0x67, 0x61, 0x53, 0x67, 0xc5, 0x21, 0x5a, 0x1c, 0x22, 0x79, 0x6d, 0x91, 0x45, 0x65, 0x66, 0x2d, - 0x65, 0x8e, 0x65, 0x2e, 0x65, 0x3e, 0x69, 0x28, 0x73, 0x1d, 0xca, 0x5f, 0xc2, 0x07, 0x6c, 0xb1, - 0x3f, 0x26, 0x9f, 0xfa, 0x9d, 0x12, 0x2c, 0xe7, 0x1c, 0x03, 0xd1, 0x95, 0xa2, 0x3b, 0xd0, 0x5d, - 0xec, 0x59, 0x8e, 0x29, 0x7a, 0xad, 0xe3, 0x0e, 0x5a, 0x34, 0x01, 0x9d, 0x04, 0xf2, 0xa1, 0x7f, - 0x63, 0xe0, 0xf0, 0x60, 0xb4, 0xa8, 0x95, 0x3b, 0xee, 0xe0, 0xcb, 0xe4, 0x5b, 0xf0, 0xfa, 0xfb, - 0x86, 0x87, 0x99, 0xff, 0x60, 0xbc, 0x6d, 0x9a, 0x80, 0x5e, 0x81, 0xe3, 0x6c, 0x6e, 0xd4, 0x7b, - 0x56, 0xdf, 0x22, 0x5e, 0x36, 0x36, 0x34, 0x8a, 0x1a, 0x62, 0x99, 0x0f, 0x49, 0x5e, 0xd3, 0x66, - 0x83, 0x41, 0x85, 0xaa, 0xe3, 0xf4, 0x75, 0xbf, 0xe3, 0x78, 0x58, 0x37, 0xcc, 0x8f, 0xe8, 0x38, - 0x28, 0x6a, 0x33, 0x8e, 0xd3, 0x6f, 0x93, 0xb4, 0x86, 0xf9, 0x11, 0x3a, 0x03, 0x33, 0x1d, 0x77, - 0xe0, 0xe3, 0x40, 0x27, 0x7f, 0xe8, 0x66, 0x5d, 0x45, 0x03, 0x96, 0xb4, 0xe6, 0x0e, 0xfc, 0x18, - 0x41, 0x9f, 0x2c, 0xcf, 0xa6, 0xe3, 0x04, 0x9b, 0xb8, 0x4f, 0x4f, 0xd4, 0xf7, 0x07, 0x5d, 0xec, - 0x1a, 0x5d, 0xcc, 0xaa, 0x26, 0x76, 0xdc, 0xa4, 0x13, 0xf5, 0x77, 0x39, 0x09, 0xad, 0xa0, 0x36, - 0xb7, 0x1f, 0xff, 0xf4, 0xd1, 0x7b, 0x30, 0x3d, 0xb0, 0xa9, 0x01, 0xac, 0x54, 0x28, 0xef, 0xb5, - 0x31, 0x0e, 0xdd, 0xae, 0xec, 0x32, 0x16, 0x7e, 0x06, 0xc8, 0x05, 0xa0, 0xdb, 0x50, 0xe7, 0x8a, - 0xf2, 0x9f, 0x1a, 0x6e, 0x52, 0x5b, 0x40, 0x55, 0xb0, 0xc4, 0x28, 0xda, 0x4f, 0x0d, 0x37, 0xae, - 0xb1, 0xfa, 0x6d, 0x98, 0x8d, 0x0b, 0x3d, 0x94, 0x2d, 0xdd, 0x83, 0xaa, 0xd4, 0x48, 0xd2, 0xdb, - 0x54, 0x29, 0xbe, 0xf5, 0x4d, 0x31, 0xb6, 0xca, 0x24, 0xa1, 0x6d, 0x7d, 0x93, 0xe2, 0x20, 0x68, - 0xcd, 0xa8, 0x9c, 0x92, 0xc6, 0x3e, 0x54, 0x03, 0xaa, 0x12, 0xf4, 0x80, 0xb8, 0x64, 0x8a, 0x31, - 0xe0, 0x2e, 0x99, 0xfc, 0x26, 0x69, 0x9e, 0xd3, 0x13, 0x35, 0xa0, 0xbf, 0x49, 0x1a, 0x3d, 0x80, - 0x66, 0xc7, 0x69, 0xf4, 0x37, 0x2d, 0x02, 0x3f, 0xe1, 0x30, 0xa6, 0x8a, 0xc6, 0x3e, 0xd4, 0xdf, - 0x52, 0x00, 0xd6, 0x0c, 0xd7, 0x78, 0x64, 0xf5, 0xac, 0xe0, 0x00, 0x5d, 0x84, 0x9a, 0x61, 0x9a, - 0x7a, 0x47, 0xa4, 0x58, 0x58, 0xe0, 0xca, 0xe6, 0x0d, 0xd3, 0x5c, 0x8b, 0x25, 0xa3, 0x97, 0x60, - 0x81, 0x38, 0x54, 0x99, 0x96, 0x01, 0xcd, 0x6a, 0x24, 0x43, 0x22, 0xbe, 0x09, 0x2b, 0x44, 0xae, - 0xd1, 0x7f, 0x64, 0x61, 0x3b, 0x90, 0x79, 0x18, 0x02, 0x6d, 0xc9, 0x30, 0xcd, 0x06, 0xcb, 0x8e, - 0x73, 0xaa, 0xbf, 0x33, 0x0d, 0xa7, 0xe5, 0x1e, 0x4f, 0xa2, 0x41, 0x6e, 0xc3, 0x6c, 0xa2, 0xbe, - 0x29, 0x1c, 0x45, 0xd4, 0x42, 0x4d, 0xa2, 0x4d, 0x60, 0x11, 0x0a, 0x29, 0x2c, 0x42, 0x26, 0xd2, - 0xa4, 0xf8, 0x29, 0x21, 0x4d, 0x4a, 0x9f, 0x10, 0x69, 0x32, 0x79, 0x54, 0xa4, 0xc9, 0xec, 0xd8, - 0x48, 0x93, 0x17, 0xa8, 0xeb, 0x15, 0x25, 0xd2, 0x70, 0x80, 0xf9, 0x84, 0x6a, 0x28, 0xdd, 0x16, - 0x60, 0xc7, 0x04, 0x22, 0x65, 0xfa, 0x30, 0x88, 0x94, 0xf2, 0x11, 0x11, 0x29, 0x0b, 0x9f, 0x0a, - 0x22, 0xe5, 0x2c, 0xcc, 0xda, 0x8e, 0x6e, 0xe3, 0xa7, 0x3a, 0xe9, 0x7a, 0x9f, 0xe2, 0x5c, 0xca, - 0x1a, 0xd8, 0xce, 0x16, 0x7e, 0xda, 0x22, 0x29, 0xe8, 0x1c, 0xcc, 0xf6, 0x0d, 0xff, 0x31, 0x36, - 0x29, 0x34, 0xc4, 0x5f, 0xa9, 0x52, 0x9b, 0x9d, 0x61, 0x69, 0x2d, 0x92, 0x84, 0x9e, 0x87, 0xb0, - 0xad, 0x9c, 0x68, 0x8e, 0x12, 0x55, 0x45, 0x2a, 0x23, 0x8b, 0xa1, 0x5b, 0xe6, 0x8f, 0x88, 0x6e, - 0xa9, 0x1d, 0x06, 0xdd, 0x72, 0x19, 0x6a, 0xe2, 0xb7, 0x80, 0xb7, 0xb0, 0xd3, 0x0a, 0x8a, 0x6c, - 0x99, 0x17, 0x79, 0x02, 0xc2, 0x92, 0x07, 0x86, 0x81, 0xa1, 0x60, 0x98, 0x3f, 0x50, 0xf8, 0xba, - 0x39, 0x1c, 0xa4, 0xfc, 0x14, 0x5e, 0x02, 0x50, 0x28, 0x47, 0x01, 0x50, 0xa0, 0x9d, 0x5c, 0x88, - 0xc9, 0xc5, 0x7c, 0x49, 0xa3, 0x40, 0x26, 0xaa, 0x05, 0x48, 0xe6, 0xa0, 0x03, 0x85, 0xc3, 0x28, - 0xd8, 0x4c, 0x4d, 0x61, 0x14, 0x35, 0x28, 0x76, 0x39, 0xb0, 0xa2, 0xa8, 0x91, 0x9f, 0x79, 0x16, - 0x5c, 0xcc, 0xb3, 0x60, 0x75, 0x33, 0x5c, 0x3d, 0x7f, 0x1a, 0xc8, 0x3f, 0xf5, 0x5f, 0x15, 0x38, - 0xcd, 0xe5, 0xe5, 0xc0, 0xe3, 0x32, 0x06, 0xad, 0x92, 0x33, 0x68, 0x3b, 0x1e, 0x36, 0xb1, 0x1d, - 0x58, 0x46, 0x8f, 0xc6, 0x63, 0xe2, 0x40, 0x3c, 0x4a, 0xa6, 0x21, 0xe1, 0x39, 0x98, 0x65, 0x20, - 0x5a, 0xbe, 0x90, 0x66, 0x58, 0xd9, 0x19, 0x8a, 0xa3, 0xe5, 0x6b, 0xe5, 0xed, 0x2c, 0x47, 0x59, - 0xca, 0xdd, 0x81, 0x19, 0xe9, 0x2f, 0x55, 0x07, 0x96, 0x73, 0xa0, 0x09, 0x99, 0x16, 0xa1, 0xa4, - 0x2d, 0x62, 0xa8, 0x92, 0xd2, 0x16, 0xf1, 0x1d, 0x05, 0xce, 0xa4, 0x16, 0xf4, 0x9f, 0xbf, 0x66, - 0xd5, 0x3f, 0x56, 0x42, 0xfb, 0x49, 0x8e, 0xae, 0xb5, 0xf4, 0xe8, 0x7a, 0x7e, 0xd8, 0xfe, 0x44, - 0xe6, 0xf8, 0x7a, 0x3f, 0x77, 0x7c, 0xbd, 0x34, 0x74, 0xaf, 0x63, 0x94, 0x3e, 0xff, 0x49, 0x81, - 0x13, 0xb9, 0x15, 0x48, 0x84, 0xb7, 0x4a, 0x32, 0xbc, 0xe5, 0xa1, 0x71, 0xb4, 0x98, 0x61, 0xa1, - 0x31, 0x5d, 0xaf, 0xf0, 0x18, 0x54, 0xef, 0x1b, 0xcf, 0xac, 0xfe, 0xa0, 0xcf, 0x63, 0x63, 0x22, - 0x6e, 0x93, 0xa5, 0x1c, 0x25, 0x38, 0xbe, 0x0a, 0x8b, 0x6c, 0xde, 0xa2, 0xf1, 0x59, 0xc4, 0xc1, - 0x62, 0xe4, 0x05, 0x96, 0x47, 0x42, 0x35, 0xce, 0xa0, 0x36, 0x60, 0x21, 0x6c, 0xd6, 0x50, 0x68, - 0x56, 0x0c, 0x6a, 0x55, 0x90, 0xa1, 0x56, 0x36, 0x4c, 0xad, 0xe3, 0x27, 0x56, 0x07, 0x7f, 0x2a, - 0x60, 0xf6, 0xb3, 0x30, 0xe3, 0x62, 0xaf, 0x6f, 0xf9, 0x7e, 0x18, 0xa4, 0x54, 0xb4, 0x78, 0x92, - 0x7a, 0x06, 0x2a, 0x6b, 0xeb, 0x4d, 0x5e, 0x64, 0x46, 0x55, 0xd5, 0x7f, 0x9b, 0x82, 0xf9, 0xa4, - 0x8d, 0xdd, 0x4a, 0x41, 0xbf, 0x4e, 0x67, 0x6e, 0x1b, 0x66, 0xec, 0x97, 0x87, 0xb8, 0xf1, 0xc2, - 0x18, 0xb8, 0xf1, 0x15, 0x98, 0xee, 0x38, 0xfd, 0xbe, 0x61, 0x9b, 0xe2, 0x4a, 0x02, 0xff, 0x24, - 0x35, 0x35, 0xbc, 0x2e, 0xdb, 0x29, 0xaf, 0x68, 0xf4, 0x37, 0x31, 0x01, 0xe2, 0x0c, 0x2d, 0x9b, - 0x82, 0xc7, 0x68, 0x2f, 0x55, 0x34, 0xe0, 0x49, 0xeb, 0x96, 0x87, 0x2e, 0x40, 0x09, 0xdb, 0x4f, - 0xc4, 0x11, 0x9a, 0xb4, 0x63, 0x2b, 0x96, 0x78, 0x1a, 0xa5, 0x40, 0x17, 0x61, 0xaa, 0x4f, 0xcc, - 0x4a, 0x00, 0x0c, 0x16, 0x52, 0xd0, 0x7d, 0x8d, 0x13, 0xa0, 0x97, 0x61, 0xda, 0xa4, 0xda, 0x13, - 0x6b, 0x1a, 0x24, 0xc1, 0xd0, 0x68, 0x96, 0x26, 0x48, 0xd0, 0x3b, 0xe1, 0x71, 0x41, 0x25, 0x7d, - 0x8e, 0x97, 0x50, 0x73, 0xe6, 0x49, 0xc1, 0x96, 0xbc, 0xe6, 0x86, 0xf4, 0xa1, 0x43, 0x52, 0xca, - 0xf0, 0x95, 0xf7, 0x09, 0x28, 0xf7, 0x9c, 0x2e, 0xb3, 0x9e, 0x19, 0x76, 0x9f, 0xa5, 0xe7, 0x74, - 0xa9, 0xf1, 0x2c, 0xc2, 0xa4, 0x1f, 0x98, 0x96, 0x4d, 0x43, 0xc3, 0xb2, 0xc6, 0x3e, 0xc8, 0x20, - 0xa5, 0x3f, 0x74, 0xc7, 0xee, 0xe0, 0x95, 0x2a, 0xcd, 0xaa, 0xd0, 0x94, 0x6d, 0xbb, 0x43, 0x97, - 0xc8, 0x41, 0x70, 0xb0, 0x32, 0x47, 0xd3, 0xc9, 0xcf, 0x68, 0xd7, 0x7e, 0x3e, 0x67, 0xd7, 0x3e, - 0x51, 0xe1, 0x8c, 0x5d, 0xfb, 0x5a, 0xee, 0x9c, 0x91, 0xe4, 0x15, 0x2c, 0x24, 0x2c, 0x5e, 0x5b, - 0x6f, 0xea, 0xa2, 0x6b, 0x16, 0xd2, 0x30, 0xfc, 0xd0, 0xec, 0x35, 0x08, 0x7f, 0x7e, 0xae, 0x87, - 0x26, 0x3f, 0x54, 0x60, 0x69, 0x8d, 0x1e, 0x19, 0xc7, 0x7c, 0xe3, 0x61, 0xd0, 0x56, 0xaf, 0x86, - 0x10, 0xb8, 0x0c, 0x1c, 0x53, 0x52, 0x53, 0x02, 0x01, 0xb7, 0x06, 0x73, 0x42, 0x2c, 0x67, 0x2e, - 0x8e, 0x81, 0x9f, 0xab, 0xfa, 0xf1, 0x4f, 0xf5, 0x0e, 0x2c, 0xa7, 0x6a, 0xce, 0x0f, 0xee, 0x92, - 0xf7, 0x35, 0x58, 0xc5, 0xe3, 0xf7, 0x35, 0xd4, 0xdb, 0x70, 0xbc, 0x1d, 0x18, 0x5e, 0x90, 0x6a, - 0xf6, 0x18, 0xbc, 0x14, 0x19, 0x27, 0xf3, 0x72, 0xf0, 0x5a, 0x1b, 0x16, 0xdb, 0x81, 0xe3, 0x1e, - 0x41, 0x28, 0xf1, 0x3b, 0xa4, 0xe5, 0xce, 0x40, 0xcc, 0x33, 0xe2, 0x53, 0x5d, 0x66, 0x38, 0xbe, - 0x74, 0x69, 0x6f, 0xc2, 0x12, 0x83, 0xd1, 0x1d, 0xa5, 0x11, 0x27, 0x04, 0x88, 0x2f, 0x2d, 0xf7, - 0x01, 0x1c, 0x93, 0x8e, 0x12, 0x38, 0xec, 0xe4, 0x9a, 0x0c, 0x3b, 0xc9, 0x3f, 0xb5, 0x09, 0x51, - 0x27, 0xbf, 0x5e, 0x88, 0xf9, 0xf1, 0x9c, 0xb3, 0xe7, 0xd7, 0x64, 0xd0, 0xc9, 0x99, 0x7c, 0xa9, - 0x12, 0xe6, 0x24, 0x6d, 0x9d, 0xc5, 0x0c, 0xeb, 0xdc, 0x4d, 0x1d, 0x6c, 0x97, 0xd2, 0xa0, 0xa1, - 0x44, 0x0d, 0x3f, 0x93, 0x23, 0xed, 0x87, 0x0c, 0x98, 0x12, 0x16, 0x1d, 0x9e, 0x66, 0xbf, 0x9a, - 0x38, 0xcd, 0x3e, 0x39, 0xa4, 0xa6, 0xe1, 0x39, 0xf6, 0xf7, 0x4b, 0x50, 0x09, 0xf3, 0x52, 0x1a, - 0x4e, 0xab, 0xaa, 0x90, 0xa1, 0xaa, 0xf8, 0xfc, 0x5a, 0x3c, 0xe2, 0xfc, 0x5a, 0x1a, 0x63, 0x7e, - 0x3d, 0x09, 0x15, 0x76, 0x2f, 0xcb, 0xc3, 0x7b, 0x7c, 0xbe, 0x2c, 0xd3, 0x04, 0x0d, 0xef, 0x45, - 0x26, 0x36, 0x35, 0xa6, 0x89, 0x25, 0x40, 0x30, 0xd3, 0x49, 0x10, 0xcc, 0xad, 0x70, 0xee, 0x2b, - 0xa7, 0x0f, 0x9d, 0x42, 0x89, 0x99, 0xb3, 0x5e, 0x62, 0xa7, 0xb9, 0x92, 0xde, 0x69, 0x8e, 0xf8, - 0x47, 0xce, 0x77, 0xac, 0xc9, 0x96, 0xc9, 0x2f, 0xa1, 0x4d, 0xd3, 0xef, 0xa6, 0xf9, 0x79, 0xba, - 0xfe, 0x6d, 0x06, 0x7a, 0x89, 0x9b, 0x20, 0x77, 0x9f, 0xaf, 0x49, 0xe7, 0x8d, 0x4a, 0xc6, 0x34, - 0x16, 0xba, 0x8c, 0xf8, 0x19, 0xe3, 0x2e, 0x2c, 0x25, 0xc1, 0x72, 0x87, 0x72, 0x7f, 0x39, 0xa8, - 0xdd, 0x9f, 0xc5, 0x83, 0xc1, 0x1c, 0x88, 0xea, 0xad, 0x14, 0x9a, 0x62, 0x6c, 0xe3, 0xbd, 0x26, - 0x03, 0xaf, 0x0e, 0x6d, 0x72, 0x29, 0xdc, 0x15, 0x0d, 0x56, 0x0c, 0x8f, 0x67, 0xb3, 0xb8, 0xbd, - 0xc2, 0x53, 0x1a, 0x74, 0xd1, 0xb0, 0x67, 0xd9, 0x96, 0xbf, 0xcf, 0xf2, 0xa7, 0xd8, 0xa2, 0x41, - 0x24, 0x35, 0xe8, 0xfe, 0x2c, 0x7e, 0x66, 0x05, 0x7a, 0xc7, 0x31, 0x31, 0x35, 0xe8, 0x49, 0xad, - 0x4c, 0x12, 0xd6, 0x1c, 0x13, 0x47, 0x43, 0xad, 0x7c, 0xd8, 0xa1, 0x56, 0x49, 0x0c, 0xb5, 0x25, - 0x98, 0xf2, 0xb0, 0xe1, 0x3b, 0x36, 0x37, 0x49, 0xfe, 0x45, 0x3a, 0xa2, 0x8f, 0x7d, 0x9f, 0x94, - 0xc1, 0x63, 0x33, 0xfe, 0x19, 0x8b, 0x23, 0x67, 0x87, 0xc4, 0x91, 0x43, 0x00, 0xb0, 0x89, 0x38, - 0xb2, 0x3a, 0x24, 0x8e, 0x1c, 0x0b, 0xff, 0x1a, 0x45, 0xcc, 0x73, 0xa3, 0x22, 0xe6, 0x78, 0xc8, - 0x39, 0x2f, 0x87, 0x9c, 0x77, 0xe2, 0x8b, 0xd7, 0x5a, 0x1a, 0x0e, 0x30, 0x7c, 0xd5, 0x1a, 0x1f, - 0xdb, 0x0b, 0xd2, 0xd8, 0x46, 0x97, 0xf9, 0x26, 0x39, 0x4a, 0x6f, 0xaf, 0x4a, 0xbb, 0x3d, 0x6c, - 0xff, 0xfc, 0xf3, 0x74, 0x05, 0x7f, 0xa3, 0xc0, 0x72, 0x6a, 0xe8, 0x72, 0x67, 0xf0, 0x6a, 0x02, - 0xa3, 0x3b, 0x14, 0x1c, 0x2b, 0x20, 0xba, 0x0d, 0x09, 0xa2, 0x7b, 0x79, 0x18, 0x4b, 0x0e, 0x42, - 0xf7, 0xe8, 0xa8, 0xd9, 0x6f, 0x2b, 0x80, 0x32, 0x16, 0xfa, 0xb7, 0xc4, 0x92, 0xe0, 0x10, 0xbb, - 0x7f, 0x7c, 0x55, 0xf0, 0x4e, 0xb4, 0x2a, 0x28, 0x1c, 0x66, 0x73, 0x23, 0x84, 0xf3, 0x6c, 0x40, - 0x55, 0xde, 0xdf, 0xbb, 0x21, 0x57, 0x66, 0x35, 0xbf, 0x32, 0xd4, 0x40, 0x18, 0xb1, 0xfa, 0xb3, - 0x02, 0x9c, 0xd9, 0x75, 0xcd, 0x44, 0xc8, 0xcb, 0x0b, 0x1b, 0xdf, 0xd5, 0xde, 0x92, 0x21, 0x4d, - 0x47, 0xd4, 0x44, 0xf1, 0x28, 0x9a, 0x40, 0x5f, 0xcf, 0x02, 0x9d, 0xdd, 0x91, 0x8e, 0x87, 0x87, - 0x37, 0x70, 0x04, 0xfe, 0xec, 0x93, 0x8e, 0x04, 0x15, 0xce, 0xe6, 0x57, 0x80, 0x87, 0xc7, 0xff, - 0x13, 0xe6, 0x37, 0x9e, 0xe1, 0x4e, 0xfb, 0xc0, 0xee, 0x1c, 0x42, 0xeb, 0x35, 0x28, 0x76, 0xfa, - 0x26, 0x3f, 0x98, 0x22, 0x3f, 0xe3, 0x11, 0x7f, 0x51, 0x8e, 0xf8, 0x75, 0xa8, 0x45, 0x25, 0xf0, - 0x71, 0xb8, 0x44, 0xc6, 0xa1, 0x49, 0x88, 0x89, 0xf0, 0x59, 0x8d, 0x7f, 0xf1, 0x74, 0xec, 0xb1, - 0x4b, 0x44, 0x2c, 0x1d, 0x7b, 0x9e, 0x3c, 0x8d, 0x14, 0xe5, 0x69, 0x44, 0xfd, 0xae, 0x02, 0x33, - 0xa4, 0x84, 0x4f, 0x54, 0x7f, 0xbe, 0xec, 0x2e, 0x46, 0xcb, 0xee, 0x70, 0xf5, 0x5e, 0x8a, 0xaf, - 0xde, 0xa3, 0x9a, 0x4f, 0xd2, 0xe4, 0x74, 0xcd, 0xa7, 0xc2, 0x74, 0xec, 0x79, 0xea, 0x59, 0x98, - 0x65, 0x75, 0xe3, 0x2d, 0xaf, 0x41, 0x71, 0xe0, 0xf5, 0x44, 0xff, 0x0d, 0xbc, 0x9e, 0xfa, 0x2d, - 0x05, 0xaa, 0x8d, 0x20, 0x30, 0x3a, 0xfb, 0x87, 0x68, 0x40, 0x58, 0xb9, 0x42, 0xbc, 0x72, 0xe9, - 0x46, 0x44, 0xd5, 0x2d, 0xe5, 0x54, 0x77, 0x52, 0xaa, 0xae, 0x0a, 0x73, 0xa2, 0x2e, 0xb9, 0x15, - 0xde, 0x02, 0xd4, 0x72, 0xbc, 0xe0, 0xbe, 0xe3, 0x3d, 0x35, 0x3c, 0xf3, 0x70, 0x2b, 0x6c, 0x04, - 0x25, 0xfe, 0x7a, 0x45, 0xf1, 0xc2, 0xa4, 0x46, 0x7f, 0xab, 0x2f, 0xc2, 0x31, 0x49, 0x5e, 0x6e, - 0xc1, 0xb7, 0x61, 0x86, 0x86, 0x05, 0x7c, 0xf1, 0xf5, 0x52, 0x1c, 0x53, 0x31, 0x22, 0x7c, 0x50, - 0xd7, 0x61, 0x81, 0x04, 0x88, 0x34, 0x3d, 0xf4, 0x2f, 0x57, 0x13, 0xeb, 0x93, 0xe5, 0x94, 0x88, - 0xc4, 0xda, 0xe4, 0x17, 0x0a, 0x4c, 0x32, 0xf8, 0x44, 0x32, 0x68, 0x3b, 0x49, 0x26, 0x5e, 0xd7, - 0xd1, 0x03, 0xa3, 0x1b, 0xbe, 0x0c, 0x42, 0x12, 0x76, 0x8c, 0x2e, 0x3d, 0xe8, 0xa2, 0x99, 0xa6, - 0xd5, 0xc5, 0x7e, 0x20, 0x0e, 0x67, 0x67, 0x48, 0xda, 0x3a, 0x4b, 0x22, 0x8a, 0xa1, 0x67, 0xd8, - 0x25, 0x7a, 0x54, 0x4d, 0x7f, 0xa3, 0x0b, 0xec, 0xe0, 0x64, 0xf8, 0x89, 0x24, 0x3d, 0x50, 0xa9, - 0x43, 0x39, 0x71, 0x94, 0x18, 0x7e, 0xa3, 0x8b, 0x50, 0xa2, 0x7b, 0xe5, 0xd3, 0xc3, 0xb4, 0x44, - 0x49, 0x88, 0x55, 0xb8, 0x96, 0x6d, 0x63, 0x93, 0x3f, 0x5b, 0xc1, 0xbf, 0xd4, 0x77, 0x00, 0xc5, - 0x95, 0xc7, 0x3b, 0xe8, 0x22, 0x4c, 0x51, 0xdd, 0x8a, 0xa8, 0x7a, 0x21, 0x25, 0x5a, 0xe3, 0x04, - 0xea, 0xd7, 0x00, 0xb1, 0xb2, 0xa4, 0x48, 0xfa, 0x30, 0x1d, 0x38, 0x24, 0xa6, 0xfe, 0x81, 0x02, - 0xc7, 0x24, 0xe9, 0xbc, 0x7e, 0x2f, 0xca, 0xe2, 0x33, 0xaa, 0xc7, 0x45, 0xbf, 0x25, 0x4d, 0xf0, - 0x17, 0xd3, 0xd5, 0xf8, 0x6f, 0x9a, 0xdc, 0xff, 0x4e, 0x01, 0x68, 0x0c, 0x82, 0x7d, 0xbe, 0x29, - 0x1c, 0xef, 0x44, 0x25, 0xd1, 0x89, 0x75, 0x28, 0xbb, 0x86, 0xef, 0x3f, 0x75, 0x3c, 0xb1, 0xe0, - 0x0d, 0xbf, 0xe9, 0x56, 0xee, 0x80, 0xbf, 0xd5, 0x51, 0xd1, 0xe8, 0x6f, 0xf4, 0x3c, 0xcc, 0xb1, - 0x27, 0x6b, 0x74, 0xc3, 0x34, 0x3d, 0x81, 0xd3, 0xac, 0x68, 0x55, 0x96, 0xda, 0x60, 0x89, 0x84, - 0xcc, 0xa2, 0x27, 0x27, 0xc1, 0x81, 0x1e, 0x38, 0x8f, 0xb1, 0xcd, 0x17, 0xb1, 0x55, 0x91, 0xba, - 0x43, 0x12, 0xd9, 0x29, 0x6c, 0xd7, 0xf2, 0x03, 0x4f, 0x90, 0x89, 0xf3, 0x6a, 0x9e, 0x4a, 0xc9, - 0xd4, 0x3f, 0x54, 0xa0, 0xd6, 0x1a, 0xf4, 0x7a, 0x4c, 0xb9, 0x47, 0xe9, 0xe4, 0x4b, 0xbc, 0x29, - 0x85, 0xb4, 0xc9, 0x47, 0x8a, 0xe2, 0x4d, 0xfc, 0x54, 0xf6, 0xdd, 0xae, 0xc1, 0x42, 0xac, 0xc6, - 0xdc, 0x70, 0xa4, 0xa5, 0x86, 0x22, 0x2f, 0x35, 0xd4, 0x06, 0x20, 0xb6, 0xd5, 0x74, 0xe4, 0x56, - 0xaa, 0xc7, 0xe1, 0x98, 0x24, 0x82, 0x4f, 0xc5, 0x97, 0xa0, 0xca, 0x31, 0x83, 0xdc, 0x20, 0x4e, - 0x40, 0x99, 0xb8, 0xd4, 0x8e, 0x65, 0x0a, 0x70, 0xca, 0xb4, 0xeb, 0x98, 0x6b, 0x96, 0xe9, 0xa9, - 0x5f, 0x86, 0x2a, 0x7f, 0x94, 0x80, 0xd3, 0xde, 0x85, 0x39, 0x7e, 0x96, 0xa9, 0x4b, 0xb7, 0x78, - 0x4f, 0x64, 0x00, 0x53, 0x85, 0x2a, 0xec, 0xf8, 0xa7, 0xfa, 0x75, 0xa8, 0xb3, 0x68, 0x41, 0x12, - 0x2c, 0x1a, 0x78, 0x17, 0x04, 0x2e, 0x6c, 0x88, 0x7c, 0x99, 0xb3, 0xea, 0xc5, 0x3f, 0xd5, 0xd3, - 0x70, 0x32, 0x53, 0x3e, 0x6f, 0xbd, 0x0b, 0xb5, 0x28, 0x83, 0x5d, 0x35, 0x0d, 0x11, 0x37, 0x4a, - 0x0c, 0x71, 0xb3, 0x14, 0x86, 0xf0, 0x05, 0x31, 0x73, 0xd1, 0x28, 0x3d, 0x5a, 0x02, 0x16, 0xf3, - 0x96, 0x80, 0x25, 0x69, 0x09, 0xa8, 0x6e, 0x86, 0x3a, 0xe4, 0x0b, 0xf1, 0x3b, 0x74, 0xab, 0x80, - 0x95, 0x2d, 0x9c, 0xda, 0xa9, 0xec, 0xf6, 0x31, 0x22, 0x2d, 0x46, 0xaf, 0x5e, 0x84, 0xaa, 0xec, - 0xde, 0x62, 0x1e, 0x4b, 0x91, 0x3d, 0xd6, 0xff, 0x82, 0x25, 0x4d, 0x02, 0xd9, 0xdd, 0xc7, 0x46, - 0x30, 0xf0, 0xb0, 0x8f, 0xde, 0x84, 0x7a, 0xc6, 0x2b, 0x42, 0x3a, 0x5f, 0x19, 0x32, 0x31, 0xcb, - 0xa9, 0xc7, 0x84, 0x36, 0xd9, 0xba, 0xf0, 0x45, 0x98, 0xa7, 0x20, 0xc0, 0xd8, 0xe5, 0x59, 0xa6, - 0x23, 0xfa, 0xbc, 0xcc, 0x56, 0x74, 0x53, 0xd6, 0x0c, 0x9f, 0xb4, 0xe0, 0xe5, 0x67, 0x9e, 0xb1, - 0xbd, 0x0d, 0xe5, 0x3d, 0x5e, 0x2f, 0x3e, 0x20, 0xd5, 0x0c, 0x65, 0x24, 0x5a, 0xa0, 0x85, 0x3c, - 0xea, 0x36, 0xcc, 0x73, 0x9a, 0xb0, 0x79, 0x77, 0x86, 0xe2, 0x4e, 0x58, 0xf3, 0x72, 0x11, 0x25, - 0xea, 0x0f, 0x0a, 0x30, 0x97, 0xf0, 0xf1, 0xaf, 0x24, 0x16, 0x74, 0x59, 0xe6, 0x98, 0x58, 0xce, - 0xdd, 0x94, 0xbc, 0xbd, 0x8c, 0x72, 0x19, 0x7e, 0xcf, 0x72, 0x03, 0x6a, 0x09, 0xc8, 0xa4, 0x80, - 0x4b, 0xd7, 0xf3, 0x15, 0xa3, 0xcd, 0xcb, 0x78, 0x4a, 0x1f, 0xbd, 0x11, 0xd3, 0x6b, 0x29, 0xbd, - 0x0c, 0x4d, 0xe8, 0x2c, 0x52, 0xe8, 0xd1, 0x27, 0x9a, 0x45, 0x3e, 0xfd, 0xde, 0xf7, 0x09, 0x3f, - 0xb7, 0x4f, 0xf5, 0x3c, 0xcc, 0xec, 0xe6, 0xbd, 0x1a, 0x54, 0x12, 0x48, 0xcc, 0xd7, 0x61, 0xf1, - 0xbe, 0xd5, 0xc3, 0xfe, 0x81, 0x1f, 0xe0, 0x7e, 0x93, 0xce, 0x0a, 0x7b, 0x16, 0xf6, 0xd0, 0x2a, - 0x00, 0x35, 0x4a, 0xd7, 0xb1, 0xc2, 0x57, 0x4c, 0x62, 0x29, 0xea, 0x4f, 0x15, 0x98, 0x8f, 0x18, - 0xc7, 0x81, 0xdb, 0xbe, 0x06, 0x93, 0x7b, 0xbe, 0xd8, 0xd0, 0x4d, 0x1c, 0x73, 0x65, 0x55, 0x41, - 0x2b, 0xed, 0xf9, 0x4d, 0x13, 0xbd, 0x0e, 0x30, 0xf0, 0xb1, 0xc9, 0x4f, 0x96, 0x47, 0x00, 0xa0, - 0x2b, 0x84, 0x94, 0x9d, 0x4d, 0xdf, 0x84, 0x19, 0xcb, 0x76, 0x4c, 0x4c, 0x51, 0x07, 0xe6, 0x28, - 0xf0, 0x33, 0x30, 0xda, 0x5d, 0x1f, 0x9b, 0xea, 0xef, 0x46, 0xd8, 0x81, 0x2f, 0x72, 0x0b, 0xd5, - 0x3f, 0x12, 0x71, 0x91, 0xe8, 0x76, 0x3e, 0x66, 0xde, 0x85, 0x05, 0x36, 0xbd, 0xed, 0x85, 0x65, - 0x66, 0xde, 0x0a, 0x4b, 0x34, 0x4e, 0xab, 0x59, 0x3c, 0x22, 0x16, 0x4c, 0xa8, 0x05, 0xc7, 0xa3, - 0x85, 0x4a, 0x5c, 0x5a, 0x61, 0xb4, 0xb4, 0xc5, 0x4e, 0x6c, 0xff, 0x5f, 0x30, 0xaa, 0xb7, 0xe1, - 0x78, 0xe2, 0xe2, 0xc7, 0xf8, 0x87, 0x40, 0xef, 0x25, 0xb6, 0x6c, 0x23, 0x2f, 0x71, 0x4d, 0xbe, - 0x6f, 0x38, 0xec, 0x8a, 0x0e, 0xbf, 0xfa, 0xb6, 0x0b, 0x27, 0xa4, 0xfd, 0x64, 0xa9, 0x2e, 0x37, - 0x13, 0xcb, 0x86, 0xb3, 0xf9, 0xf2, 0x12, 0xeb, 0x87, 0x7f, 0x57, 0x60, 0x31, 0x8b, 0xe0, 0x88, - 0xc7, 0x1c, 0x1f, 0xe6, 0xdc, 0x55, 0x7e, 0x75, 0x54, 0x85, 0x3e, 0x93, 0x63, 0xa1, 0x2d, 0x76, - 0xd3, 0x71, 0x74, 0x9f, 0x14, 0xc7, 0xeb, 0x93, 0x5f, 0x14, 0x62, 0x47, 0x79, 0x43, 0x6e, 0x23, - 0x7e, 0x82, 0xfd, 0xf3, 0xb5, 0xc4, 0x65, 0xc4, 0x97, 0x32, 0x19, 0x47, 0xdc, 0x45, 0xd4, 0xb2, - 0xb6, 0x85, 0xae, 0x8d, 0x92, 0xf4, 0x85, 0xbd, 0x8a, 0xf8, 0x1b, 0x05, 0x98, 0x93, 0x3b, 0x04, - 0xbd, 0x93, 0x71, 0x13, 0xf1, 0xcc, 0x88, 0x06, 0x4a, 0x17, 0x11, 0xf9, 0xcd, 0xbf, 0xc2, 0xf8, - 0x37, 0xff, 0x8a, 0xe3, 0xdd, 0xfc, 0xbb, 0x07, 0x73, 0x4f, 0x3d, 0x2b, 0x30, 0x1e, 0xf5, 0xb0, - 0xde, 0x33, 0x0e, 0xb0, 0x97, 0x35, 0xc3, 0x26, 0x5d, 0x51, 0x55, 0xb0, 0x3c, 0x24, 0x1c, 0x74, - 0xc1, 0xfc, 0xd4, 0x70, 0xf9, 0xba, 0x5b, 0x0a, 0xe5, 0xdb, 0x4f, 0x0d, 0x97, 0xf1, 0x50, 0x12, - 0xf5, 0x5b, 0x05, 0x38, 0x9e, 0x79, 0x5f, 0xed, 0x93, 0xab, 0xe8, 0x72, 0x5c, 0x45, 0x87, 0xb9, - 0x04, 0x58, 0x3c, 0xd4, 0x25, 0xc0, 0x66, 0x8e, 0xc2, 0xb2, 0xb0, 0x22, 0xc3, 0xf5, 0xa6, 0xfe, - 0x99, 0x02, 0x65, 0x51, 0xa9, 0x91, 0x57, 0xf2, 0x96, 0x07, 0x84, 0x4c, 0xa7, 0xd7, 0x26, 0x6c, - 0xc3, 0x76, 0x74, 0x1f, 0x93, 0x58, 0x7a, 0xe4, 0x05, 0xa8, 0x45, 0xca, 0xb7, 0xe6, 0x78, 0x78, - 0xcb, 0xb0, 0x9d, 0x36, 0x63, 0x42, 0x0d, 0xa8, 0x31, 0x79, 0x54, 0x14, 0x11, 0x3a, 0x72, 0xa2, - 0x9c, 0xa3, 0x0c, 0x44, 0x08, 0x11, 0xe6, 0xab, 0x7f, 0xa9, 0xc0, 0x7c, 0x42, 0xb3, 0xbf, 0x7a, - 0x8d, 0xf8, 0x5e, 0x11, 0x66, 0x62, 0xbd, 0x3c, 0xa2, 0x01, 0x6b, 0xb0, 0x20, 0xf0, 0x5e, 0x3e, - 0x0e, 0xc6, 0xbb, 0x80, 0x36, 0xcf, 0x39, 0xda, 0x38, 0x60, 0x71, 0xd4, 0x5d, 0x98, 0x37, 0x9e, - 0x18, 0x56, 0x8f, 0x5a, 0xd0, 0x58, 0x21, 0xca, 0x5c, 0x48, 0x1f, 0x46, 0x62, 0xac, 0xdd, 0x63, - 0x5d, 0x43, 0x03, 0x4a, 0x1b, 0xdd, 0x06, 0xf4, 0xfd, 0x18, 0xa8, 0x70, 0xe8, 0x6d, 0x40, 0xdf, - 0x0f, 0xcb, 0xa3, 0x77, 0x46, 0xe8, 0x35, 0x48, 0x9f, 0xbf, 0x9d, 0x93, 0x5f, 0x1e, 0xa1, 0xbd, - 0x4f, 0x49, 0x89, 0xc2, 0xfa, 0xc6, 0x47, 0x8e, 0xa7, 0xc7, 0xf9, 0xa7, 0x47, 0x28, 0x8c, 0x72, - 0xb4, 0x42, 0x21, 0xea, 0x9f, 0x28, 0x50, 0x09, 0xfd, 0xc8, 0x88, 0x1e, 0x6a, 0xc2, 0x22, 0xbd, - 0x60, 0x93, 0xd4, 0xf0, 0x88, 0x4e, 0x42, 0x84, 0xa9, 0x21, 0x6b, 0xb9, 0x01, 0x35, 0x2a, 0x2a, - 0xae, 0xea, 0x51, 0x1d, 0xe5, 0x8b, 0x6a, 0xb2, 0x80, 0xf2, 0xcf, 0x0b, 0x80, 0xd2, 0xae, 0xe4, - 0x57, 0xc6, 0xc8, 0xe2, 0x9d, 0x56, 0x1a, 0xbf, 0xd3, 0x1f, 0xc0, 0xb1, 0x8e, 0xd3, 0xef, 0x5b, - 0xf4, 0x72, 0x96, 0xe3, 0x1d, 0x8c, 0x67, 0x6e, 0x0b, 0x8c, 0x87, 0xe9, 0x89, 0xa9, 0xef, 0x6d, - 0x38, 0xa1, 0x61, 0xc7, 0xc5, 0x76, 0xe8, 0xfa, 0x1f, 0x3a, 0xdd, 0x43, 0xc4, 0xb7, 0xa7, 0xa0, - 0x9e, 0xc5, 0xcf, 0xf7, 0x4f, 0x06, 0x50, 0x5f, 0xdb, 0xc7, 0x9d, 0xc7, 0x74, 0xf9, 0x75, 0x14, - 0xcc, 0x56, 0x1d, 0xca, 0x3d, 0xa7, 0xc3, 0xde, 0x5b, 0xe6, 0x5b, 0x8c, 0xe2, 0x7b, 0xc8, 0xe9, - 0xce, 0x69, 0x38, 0x99, 0x59, 0x2c, 0xaf, 0x15, 0x82, 0xda, 0x03, 0x1c, 0x6c, 0x3c, 0xc1, 0x76, - 0x18, 0x3e, 0xab, 0x3f, 0x2e, 0xc4, 0x02, 0x75, 0x9a, 0x75, 0x08, 0xac, 0x1b, 0x6a, 0x41, 0xb4, - 0x72, 0xd0, 0x31, 0xe1, 0x66, 0xcf, 0x82, 0xb2, 0x47, 0x7b, 0xb3, 0x0f, 0xbb, 0x69, 0x21, 0xf4, - 0x35, 0xd0, 0xe8, 0xc1, 0xa3, 0x30, 0x2d, 0x01, 0x81, 0x28, 0x26, 0x21, 0x10, 0xef, 0x01, 0x8a, - 0x87, 0xe2, 0x7c, 0xbb, 0xa1, 0x34, 0xc6, 0x1b, 0x4f, 0x35, 0x37, 0xf9, 0x1a, 0x59, 0xce, 0x4b, - 0x4d, 0x93, 0x47, 0x7a, 0xa9, 0x49, 0x5d, 0x85, 0x53, 0x24, 0xc0, 0xde, 0xc4, 0x81, 0x67, 0x75, - 0xd6, 0xb1, 0xdf, 0xf1, 0x2c, 0x37, 0x70, 0x42, 0xf8, 0x95, 0xaa, 0xc3, 0xe9, 0x9c, 0x7c, 0xae, - 0xee, 0xb7, 0x61, 0xc6, 0x8c, 0x92, 0xb3, 0x76, 0xbc, 0x92, 0xbc, 0x5a, 0x9c, 0x41, 0xfd, 0x00, - 0x6a, 0x49, 0x82, 0xcc, 0x9d, 0x24, 0x04, 0xa5, 0x7d, 0xdc, 0x73, 0xc5, 0x6d, 0x3a, 0xf2, 0x9b, - 0x68, 0x9d, 0xad, 0x5d, 0x1e, 0xe3, 0x03, 0x71, 0x22, 0x52, 0xa1, 0x29, 0x5f, 0xc2, 0x07, 0x61, - 0xdb, 0xa4, 0xa7, 0x43, 0x3c, 0xab, 0x93, 0x6c, 0x5b, 0x46, 0x7e, 0xd4, 0x36, 0xd2, 0x6d, 0x7d, - 0x96, 0xcc, 0xdb, 0x76, 0x3a, 0xf7, 0x59, 0x12, 0xca, 0x0b, 0xae, 0x63, 0xf2, 0xdf, 0xea, 0xf7, - 0x15, 0x58, 0x48, 0x51, 0x8c, 0x79, 0xca, 0xf5, 0x32, 0x4c, 0x8b, 0x72, 0x0b, 0x69, 0x48, 0x33, - 0x93, 0xa5, 0x09, 0x12, 0xd4, 0x84, 0x85, 0xc8, 0xa2, 0x05, 0x5f, 0x31, 0xdd, 0x17, 0xf1, 0x85, - 0x0b, 0xad, 0x6e, 0xad, 0x93, 0x48, 0x51, 0x3b, 0x50, 0x4b, 0x52, 0x8d, 0x33, 0xa6, 0x0e, 0x55, - 0x5f, 0xf5, 0x47, 0x0a, 0x4c, 0xb1, 0xb4, 0xcc, 0xce, 0x96, 0xa6, 0x83, 0x42, 0x72, 0x3a, 0x78, - 0x03, 0x66, 0x98, 0x1c, 0x3d, 0xbc, 0x4b, 0x39, 0x27, 0x6f, 0xf4, 0x33, 0xd1, 0x74, 0xb4, 0x42, - 0x3f, 0xfc, 0x4d, 0x9a, 0xc1, 0xec, 0x85, 0xae, 0x4c, 0x04, 0x70, 0x7d, 0x86, 0xa6, 0x51, 0x97, - 0x4b, 0x42, 0x66, 0xbe, 0x86, 0x19, 0xe1, 0x9b, 0xf9, 0xd6, 0xd6, 0x12, 0x7d, 0x08, 0x33, 0xb5, - 0xd5, 0xad, 0xee, 0xd0, 0x97, 0x2a, 0xd3, 0x5b, 0xd4, 0xe8, 0x4d, 0x19, 0xe8, 0xf0, 0x7c, 0x0a, - 0x6b, 0x20, 0xb1, 0x0d, 0x3c, 0xf6, 0x2e, 0x3d, 0xc7, 0x3b, 0x7c, 0x08, 0x27, 0x72, 0x69, 0xd0, - 0x5b, 0xe1, 0xb3, 0xc0, 0xa6, 0x67, 0x3d, 0xe1, 0x1b, 0x0b, 0x73, 0xf2, 0x13, 0x24, 0x6b, 0x94, - 0x60, 0x9d, 0xe6, 0x8b, 0x07, 0x83, 0xd9, 0x97, 0xfa, 0xb7, 0x8a, 0x38, 0xe9, 0x97, 0x5e, 0x7d, - 0x92, 0xc1, 0x14, 0xe3, 0x99, 0x6e, 0xfc, 0x75, 0xdf, 0xc2, 0x27, 0x7e, 0xdd, 0xb7, 0x78, 0x94, - 0xcb, 0x69, 0xea, 0x79, 0x38, 0x37, 0xa4, 0x35, 0xac, 0x33, 0x2e, 0xbd, 0x00, 0x65, 0xf1, 0x7f, - 0x12, 0xd0, 0x34, 0x14, 0x77, 0xd6, 0x5a, 0xb5, 0x09, 0xf2, 0x63, 0x77, 0xbd, 0x55, 0x53, 0x50, - 0x19, 0x4a, 0xed, 0xb5, 0x9d, 0x56, 0xad, 0x70, 0xa9, 0x0f, 0xb5, 0xe4, 0xbf, 0x0a, 0x40, 0xcb, - 0x70, 0xac, 0xa5, 0x6d, 0xb7, 0x1a, 0x0f, 0x1a, 0x3b, 0xcd, 0xed, 0x2d, 0xbd, 0xa5, 0x35, 0xdf, - 0x6f, 0xec, 0x6c, 0xd4, 0x26, 0xd0, 0x39, 0x38, 0x1d, 0xcf, 0x78, 0x77, 0xbb, 0xbd, 0xa3, 0xef, - 0x6c, 0xeb, 0x6b, 0xdb, 0x5b, 0x3b, 0x8d, 0xe6, 0xd6, 0x86, 0x56, 0x53, 0xd0, 0x69, 0x38, 0x11, - 0x27, 0xb9, 0xd7, 0x5c, 0x6f, 0x6a, 0x1b, 0x6b, 0xe4, 0x77, 0xe3, 0x61, 0xad, 0x70, 0xe9, 0x2d, - 0xa8, 0x4a, 0x57, 0xcc, 0x48, 0x95, 0x5a, 0xdb, 0xeb, 0xb5, 0x09, 0x54, 0x85, 0x4a, 0x5c, 0x4e, - 0x19, 0x4a, 0x5b, 0xdb, 0xeb, 0x1b, 0xb5, 0x02, 0x02, 0x98, 0xda, 0x69, 0x68, 0x0f, 0x36, 0x76, - 0x6a, 0xc5, 0x4b, 0xaf, 0xc0, 0x4a, 0xde, 0x55, 0x4b, 0x54, 0x81, 0xc9, 0x4d, 0xec, 0x75, 0x71, - 0x6d, 0x82, 0xb0, 0xb4, 0xc9, 0xc8, 0x08, 0x6a, 0xca, 0xa5, 0xdb, 0xc9, 0x97, 0x82, 0x30, 0x5a, - 0x80, 0x6a, 0xbb, 0xb1, 0xb5, 0x7e, 0x6f, 0xfb, 0xab, 0xba, 0xb6, 0xd1, 0x58, 0xff, 0xa0, 0x36, - 0x81, 0x16, 0xa1, 0x26, 0x92, 0xb6, 0xb6, 0x77, 0x58, 0xaa, 0x72, 0xe9, 0x71, 0x62, 0x69, 0x8f, - 0xd1, 0x71, 0x58, 0x08, 0x6b, 0xa9, 0xaf, 0x69, 0x1b, 0x8d, 0x9d, 0x0d, 0x52, 0x79, 0x29, 0x59, - 0xdb, 0xdd, 0xda, 0x6a, 0x6e, 0x3d, 0xa8, 0x29, 0x44, 0x6a, 0x94, 0xbc, 0xf1, 0xd5, 0x26, 0x21, - 0x2e, 0xc8, 0xc4, 0xbb, 0x5b, 0x5f, 0xda, 0xda, 0xfe, 0xca, 0x56, 0xad, 0x78, 0xe9, 0xff, 0xc6, - 0xb1, 0x4c, 0xd1, 0xf4, 0x7b, 0x12, 0x96, 0x53, 0x25, 0xea, 0x1b, 0xef, 0x6f, 0x6c, 0xed, 0xd4, - 0x26, 0xe4, 0xcc, 0xf6, 0x4e, 0x43, 0x8b, 0x32, 0x95, 0x64, 0xe6, 0x76, 0xab, 0x15, 0x66, 0x16, - 0xe4, 0xcc, 0xf5, 0x8d, 0x87, 0x1b, 0x11, 0x67, 0xf1, 0xd2, 0x73, 0x00, 0x91, 0x9b, 0x41, 0x33, - 0x30, 0xbd, 0xb6, 0xbd, 0xbb, 0xb5, 0xb3, 0xa1, 0xd5, 0x26, 0x88, 0x96, 0x1f, 0x34, 0x76, 0x1f, - 0x6c, 0xd4, 0x94, 0x4b, 0x17, 0x61, 0x36, 0x3e, 0xe8, 0x08, 0x5d, 0xfb, 0x83, 0xf6, 0xce, 0xc6, - 0x26, 0xd1, 0xc8, 0x2c, 0x94, 0xd7, 0x1e, 0x68, 0xdb, 0xbb, 0xad, 0xfb, 0xed, 0x9a, 0x72, 0xfd, - 0x3f, 0x8f, 0x87, 0x47, 0x2a, 0x6d, 0xec, 0xd1, 0xbb, 0x40, 0xeb, 0x30, 0x2d, 0xfe, 0x19, 0x89, - 0xb4, 0xb9, 0x25, 0xff, 0xf3, 0x94, 0xfa, 0xc9, 0xcc, 0x3c, 0x1e, 0x3e, 0x4d, 0xa0, 0xf7, 0xe9, - 0x21, 0x55, 0xec, 0x9d, 0xbe, 0xb3, 0x89, 0xb3, 0x82, 0xd4, 0x73, 0x80, 0xf5, 0x73, 0x43, 0x28, - 0x42, 0xb9, 0x1f, 0xc0, 0x9c, 0xfc, 0x20, 0x2e, 0x3a, 0x27, 0x9f, 0x84, 0x64, 0xbc, 0xb5, 0x5b, - 0x57, 0x87, 0x91, 0x84, 0xa2, 0x75, 0xa8, 0x25, 0x1f, 0xc4, 0x45, 0x92, 0x0b, 0xc8, 0x79, 0x6f, - 0xb7, 0xfe, 0xdc, 0x70, 0xa2, 0x78, 0x01, 0xa9, 0x77, 0x5e, 0xcf, 0x0f, 0x7f, 0x39, 0x33, 0xa3, - 0x80, 0xbc, 0xe7, 0x35, 0x99, 0x72, 0xe4, 0xe0, 0x02, 0x25, 0x9e, 0x56, 0xcd, 0x78, 0x85, 0x51, - 0x56, 0x4e, 0xf6, 0x0b, 0x7c, 0xea, 0x04, 0xfa, 0x1f, 0x30, 0x9f, 0xb8, 0xe8, 0x81, 0x24, 0xc6, - 0xec, 0xfb, 0x2b, 0xf5, 0xf3, 0x43, 0x69, 0xe4, 0x5e, 0x8d, 0x5f, 0xe6, 0x48, 0xf6, 0x6a, 0xc6, - 0x25, 0x91, 0x64, 0xaf, 0x66, 0xde, 0x05, 0xa1, 0x86, 0x28, 0x5d, 0xdc, 0x90, 0x0d, 0x31, 0xeb, - 0xa2, 0x48, 0xfd, 0xdc, 0x10, 0x8a, 0xb8, 0x42, 0x12, 0x57, 0x37, 0x64, 0x85, 0x64, 0x5f, 0x0a, - 0xa9, 0x9f, 0x1f, 0x4a, 0x93, 0xec, 0xc9, 0x08, 0x17, 0x9e, 0xee, 0xc9, 0xd4, 0xb5, 0x85, 0x74, - 0x4f, 0xa6, 0x61, 0xe5, 0xbc, 0x27, 0x13, 0x48, 0x6e, 0x75, 0x28, 0x36, 0x34, 0xab, 0x27, 0xb3, - 0xf1, 0xa3, 0xea, 0x04, 0x7a, 0x0a, 0x2b, 0x79, 0xd8, 0x3d, 0xf4, 0xd2, 0x21, 0x20, 0x86, 0xf5, - 0x97, 0xc7, 0x23, 0x0e, 0x0b, 0xc6, 0x80, 0xd2, 0xab, 0x4c, 0xf4, 0xbc, 0xac, 0xee, 0x9c, 0x55, - 0x6c, 0xfd, 0x85, 0x51, 0x64, 0x61, 0x31, 0x0f, 0xa0, 0x2c, 0x50, 0x81, 0x48, 0x72, 0x81, 0x09, - 0x34, 0x62, 0xfd, 0x54, 0x76, 0x66, 0x28, 0xe8, 0x4d, 0x28, 0x91, 0x54, 0xb4, 0x9c, 0xa4, 0x13, - 0x02, 0x56, 0xd2, 0x19, 0x21, 0x73, 0x03, 0xa6, 0x18, 0xdc, 0x0d, 0x49, 0x07, 0xc7, 0x12, 0x1c, - 0xaf, 0x5e, 0xcf, 0xca, 0x0a, 0x45, 0xb4, 0xd8, 0xbf, 0x76, 0xe2, 0xe8, 0x35, 0xb4, 0x9a, 0x7c, - 0x0a, 0x5f, 0x86, 0xc9, 0xd5, 0xcf, 0xe4, 0xe6, 0xc7, 0x6d, 0x36, 0xb1, 0x99, 0x7c, 0x6e, 0xc8, - 0xe1, 0x48, 0x96, 0xcd, 0x66, 0x1f, 0xb9, 0xb0, 0xce, 0x4d, 0x1f, 0xc9, 0xa0, 0xe7, 0x73, 0xed, - 0x5d, 0x2a, 0xe2, 0x85, 0x51, 0x64, 0xf1, 0xa1, 0x91, 0x7c, 0xd3, 0x4e, 0x1d, 0xf6, 0xde, 0x64, - 0xd6, 0xd0, 0xc8, 0x79, 0xc7, 0x52, 0x9d, 0x40, 0xfb, 0x70, 0x2c, 0xe3, 0xa1, 0x4b, 0xf4, 0x42, - 0xbe, 0xff, 0x95, 0x4a, 0x79, 0x71, 0x24, 0x5d, 0xbc, 0xa4, 0x0c, 0xc8, 0x8a, 0x5c, 0x52, 0x3e, - 0x66, 0x46, 0x2e, 0x69, 0x18, 0xf6, 0x85, 0x1a, 0x22, 0xf7, 0x21, 0x27, 0xb2, 0x00, 0x09, 0x19, - 0x86, 0x98, 0xf2, 0x18, 0xfb, 0x70, 0x2c, 0x63, 0x27, 0x46, 0xae, 0x6c, 0xfe, 0x0e, 0x91, 0x5c, - 0xd9, 0x61, 0x5b, 0x3a, 0x13, 0xe8, 0x43, 0x40, 0x0f, 0x70, 0x20, 0x87, 0x72, 0x3e, 0x92, 0x06, - 0x6a, 0x72, 0xd3, 0x27, 0xc7, 0x3e, 0xa5, 0xdd, 0x1f, 0x75, 0xe2, 0x9a, 0x82, 0x6c, 0x76, 0x97, - 0x2c, 0xb5, 0x67, 0x81, 0x2e, 0x24, 0xbb, 0x2d, 0x6f, 0xdb, 0xa3, 0x7e, 0x71, 0x0c, 0xca, 0xb0, - 0x2d, 0x76, 0xf2, 0x51, 0x65, 0xb1, 0x6c, 0xbe, 0x90, 0x6f, 0x26, 0xf2, 0x56, 0x44, 0xba, 0xbc, - 0xdc, 0x4d, 0x89, 0x30, 0x9e, 0x8b, 0x19, 0xd3, 0xd9, 0x7c, 0x00, 0x55, 0x4e, 0x3c, 0x97, 0x69, - 0x40, 0xdf, 0x84, 0x13, 0xb9, 0x6b, 0x26, 0x94, 0x31, 0x07, 0xe4, 0x2f, 0x14, 0xeb, 0x97, 0xc7, - 0xa4, 0x16, 0x65, 0x5f, 0xff, 0xed, 0x22, 0xcc, 0x32, 0x90, 0x1b, 0x0f, 0x7d, 0x37, 0x01, 0x22, - 0xbc, 0x28, 0x3a, 0x9d, 0xd4, 0x8f, 0x04, 0xc2, 0xad, 0xaf, 0xe6, 0x65, 0xc7, 0x5d, 0x6c, 0x0c, - 0x87, 0x29, 0xbb, 0xd8, 0x34, 0xac, 0x54, 0x76, 0xb1, 0x19, 0x00, 0x4e, 0x75, 0x02, 0xbd, 0x07, - 0x95, 0x10, 0xf6, 0x27, 0x1b, 0x6e, 0x12, 0xbf, 0x58, 0x3f, 0x9d, 0x93, 0x1b, 0xaf, 0x5d, 0x0c, - 0xcd, 0x27, 0xd7, 0x2e, 0x8d, 0x14, 0x94, 0x6b, 0x97, 0x05, 0x03, 0x8c, 0xda, 0xcb, 0x70, 0x1b, - 0x19, 0xed, 0x95, 0x70, 0x3c, 0x19, 0xed, 0x95, 0x01, 0x1f, 0xea, 0xc4, 0xbd, 0xbb, 0x3f, 0xf9, - 0xf9, 0xaa, 0xf2, 0xd3, 0x9f, 0xaf, 0x4e, 0xfc, 0xef, 0x8f, 0x57, 0x95, 0x9f, 0x7c, 0xbc, 0xaa, - 0xfc, 0xfd, 0xc7, 0xab, 0xca, 0xcf, 0x3e, 0x5e, 0x55, 0xbe, 0xfd, 0x2f, 0xab, 0x13, 0x1f, 0xaa, - 0x8f, 0x6f, 0xfa, 0x57, 0x2c, 0xe7, 0x6a, 0xc7, 0xb3, 0x2e, 0x1b, 0xae, 0x75, 0xd5, 0x7d, 0xdc, - 0xbd, 0x6a, 0xb8, 0x96, 0x7f, 0x95, 0xcb, 0xbd, 0xfa, 0xe4, 0x95, 0x47, 0x53, 0xf4, 0x5f, 0x11, - 0xbe, 0xfa, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x83, 0xe6, 0xf7, 0xe9, 0x44, 0x72, 0x00, 0x00, + // 7252 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5d, 0x4d, 0x6c, 0x1c, 0xc9, + 0x75, 0x66, 0xcf, 0x0c, 0xc9, 0x99, 0x47, 0x0e, 0x39, 0x2c, 0x51, 0x24, 0x35, 0xfa, 0x6f, 0xed, + 0x8f, 0xa4, 0x5d, 0xfd, 0xac, 0x56, 0xbb, 0x2b, 0x69, 0xb5, 0xbb, 0x1a, 0x91, 0x94, 0x34, 0x6b, + 0x91, 0x1c, 0xf7, 0x90, 0x6b, 0xef, 0x3a, 0x70, 0xa7, 0x35, 0x5d, 0x1c, 0xf6, 0x6a, 0xa6, 0xbb, + 0xdd, 0xdd, 0x23, 0x89, 0x3e, 0x04, 0x39, 0x05, 0x89, 0x4f, 0x06, 0x12, 0x23, 0x88, 0x11, 0x24, + 0x70, 0x80, 0xfc, 0xdc, 0x92, 0x18, 0x88, 0xe3, 0x20, 0x01, 0x02, 0x04, 0xb1, 0xe1, 0x04, 0x09, + 0x90, 0x43, 0x02, 0xf8, 0x16, 0x7b, 0x13, 0x20, 0x40, 0xce, 0x3e, 0x04, 0xb9, 0x38, 0xa8, 0xbf, + 0xee, 0xae, 0xfe, 0x99, 0x19, 0x72, 0x37, 0xbb, 0xeb, 0x13, 0xa7, 0xab, 0xde, 0x7b, 0x55, 0xf5, + 0xea, 0xd5, 0xab, 0x57, 0x55, 0x5f, 0x15, 0xa1, 0x62, 0xb8, 0xd6, 0x65, 0xd7, 0x73, 0x02, 0x07, + 0x81, 0x37, 0xb0, 0x03, 0xab, 0x8f, 0x2f, 0x3f, 0x79, 0xa5, 0x7e, 0xa9, 0x6b, 0x05, 0x7b, 0x83, + 0x47, 0x97, 0x3b, 0x4e, 0xff, 0x4a, 0xd7, 0xe9, 0x3a, 0x57, 0x28, 0xc9, 0xa3, 0xc1, 0x2e, 0xfd, + 0xa2, 0x1f, 0xf4, 0x17, 0x63, 0x55, 0x2f, 0xc2, 0xdc, 0x7b, 0xd8, 0xf3, 0x2d, 0xc7, 0xd6, 0xf0, + 0xd7, 0x06, 0xd8, 0x0f, 0xd0, 0x0a, 0x4c, 0x3f, 0x61, 0x29, 0x2b, 0xca, 0x19, 0xe5, 0x7c, 0x45, + 0x13, 0x9f, 0xea, 0x1f, 0x2b, 0x30, 0x1f, 0x12, 0xfb, 0xae, 0x63, 0xfb, 0x38, 0x9f, 0x1a, 0x9d, + 0x85, 0x59, 0x5e, 0x2d, 0xdd, 0x36, 0xfa, 0x78, 0xa5, 0x40, 0xb3, 0x67, 0x78, 0xda, 0xa6, 0xd1, + 0xc7, 0xe8, 0x45, 0x98, 0x17, 0x24, 0x42, 0x48, 0x91, 0x52, 0xcd, 0xf1, 0x64, 0x5e, 0x1a, 0xba, + 0x0c, 0x47, 0x04, 0xa1, 0xe1, 0x5a, 0x21, 0x71, 0x89, 0x12, 0x2f, 0xf0, 0xac, 0x86, 0x6b, 0x71, + 0x7a, 0xf5, 0x2b, 0x50, 0x59, 0xdb, 0x6c, 0xaf, 0x3a, 0xf6, 0xae, 0xd5, 0x25, 0x55, 0xf4, 0xb1, + 0x47, 0x78, 0x56, 0x94, 0x33, 0x45, 0x52, 0x45, 0xfe, 0x89, 0xea, 0x50, 0xf6, 0xb1, 0xe1, 0x75, + 0xf6, 0xb0, 0xbf, 0x52, 0xa0, 0x59, 0xe1, 0x37, 0xe1, 0x72, 0xdc, 0xc0, 0x72, 0x6c, 0x7f, 0xa5, + 0xc8, 0xb8, 0xf8, 0xa7, 0xfa, 0xbb, 0x0a, 0xcc, 0xb4, 0x1c, 0x2f, 0xd8, 0x30, 0x5c, 0xd7, 0xb2, + 0xbb, 0xe8, 0x2a, 0x94, 0xa9, 0x2e, 0x3b, 0x4e, 0x8f, 0xea, 0x60, 0xee, 0xda, 0xe2, 0xe5, 0xa8, + 0x43, 0x2e, 0xb7, 0x78, 0x9e, 0x16, 0x52, 0xa1, 0xe7, 0x61, 0xae, 0xe3, 0xd8, 0x81, 0x61, 0xd9, + 0xd8, 0xd3, 0x5d, 0xc7, 0x0b, 0xa8, 0x72, 0x26, 0xb5, 0x6a, 0x98, 0x4a, 0xe4, 0xa3, 0xe3, 0x50, + 0xd9, 0x73, 0xfc, 0x80, 0x51, 0x14, 0x29, 0x45, 0x99, 0x24, 0xd0, 0xcc, 0x65, 0x98, 0xa6, 0x99, + 0x96, 0xcb, 0xd5, 0x30, 0x45, 0x3e, 0x9b, 0xae, 0xfa, 0x83, 0x22, 0x4c, 0x6e, 0x38, 0x03, 0x3b, + 0x48, 0x14, 0x63, 0x04, 0x7b, 0xbc, 0x8b, 0x62, 0xc5, 0x18, 0xc1, 0x5e, 0x54, 0x0c, 0xa1, 0x60, + 0xbd, 0xc4, 0x8a, 0x21, 0x99, 0x75, 0x28, 0x7b, 0xd8, 0x30, 0x1d, 0xbb, 0xb7, 0x4f, 0xab, 0x50, + 0xd6, 0xc2, 0x6f, 0xd2, 0x7d, 0x3e, 0xee, 0x59, 0xf6, 0xe0, 0x99, 0xee, 0xe1, 0x9e, 0xf1, 0x08, + 0xf7, 0x68, 0x55, 0xca, 0xda, 0x1c, 0x4f, 0xd6, 0x58, 0x2a, 0x7a, 0x1b, 0x66, 0x5c, 0xcf, 0x71, + 0x8d, 0xae, 0x41, 0x34, 0xb8, 0x32, 0x49, 0x95, 0x74, 0x22, 0xae, 0x24, 0x5a, 0xe1, 0x56, 0x44, + 0xa3, 0xc5, 0x19, 0xd0, 0x1b, 0x30, 0x33, 0xb0, 0x4c, 0xae, 0x6f, 0x7f, 0x65, 0xea, 0x4c, 0xf1, + 0xfc, 0xcc, 0xb5, 0xa3, 0x71, 0xfe, 0xe6, 0x1a, 0xcf, 0xd5, 0xe2, 0x94, 0x84, 0xb1, 0x1b, 0x63, + 0x9c, 0x1e, 0xca, 0x18, 0xa3, 0xa4, 0x06, 0x87, 0x3b, 0x03, 0xcf, 0xb7, 0x9e, 0x60, 0x9d, 0x34, + 0x58, 0xa7, 0x1a, 0x28, 0xd3, 0xe6, 0x2d, 0x84, 0x59, 0x1a, 0x36, 0xcc, 0x2d, 0xa2, 0x8a, 0x97, + 0x60, 0xd2, 0xea, 0x1b, 0x5d, 0xbc, 0x52, 0x39, 0xa3, 0xa4, 0x8a, 0x20, 0x19, 0x6d, 0x17, 0x77, + 0x34, 0x46, 0x83, 0x9e, 0x83, 0x39, 0xfa, 0x43, 0xf7, 0x07, 0x8f, 0x98, 0xd6, 0x81, 0x6a, 0x7d, + 0x96, 0xa6, 0xb6, 0x07, 0x8f, 0x88, 0xe6, 0x55, 0x1d, 0x2a, 0x61, 0xe5, 0xa2, 0xde, 0x36, 0x69, + 0x1f, 0x56, 0x79, 0x6f, 0x9b, 0x64, 0x94, 0x45, 0x7d, 0x6c, 0x99, 0xb4, 0xff, 0xaa, 0xda, 0x4c, + 0x98, 0xd6, 0x34, 0xd1, 0x12, 0x4c, 0xf5, 0xb0, 0xdd, 0x0d, 0xf6, 0x68, 0x07, 0x56, 0x35, 0xfe, + 0xa5, 0xfe, 0x96, 0x02, 0xd5, 0x1d, 0x1f, 0x7b, 0x64, 0x28, 0xfa, 0xae, 0xd1, 0xc1, 0xe8, 0x12, + 0x94, 0xfa, 0x8e, 0x89, 0xb9, 0x15, 0x1f, 0x8b, 0x37, 0x22, 0x24, 0xda, 0x70, 0x4c, 0xac, 0x51, + 0x32, 0x74, 0x01, 0x4a, 0x03, 0xcb, 0x64, 0x43, 0x27, 0x57, 0xad, 0x94, 0x84, 0x90, 0x76, 0x09, + 0x69, 0x71, 0x28, 0x29, 0x21, 0x51, 0x7f, 0xae, 0xc0, 0x7c, 0x58, 0xda, 0x16, 0x1d, 0x73, 0xe8, + 0x55, 0x98, 0xb6, 0x71, 0xf0, 0xd4, 0xf1, 0x1e, 0x8f, 0xae, 0x9b, 0xa0, 0x44, 0x2f, 0x41, 0xd1, + 0xe5, 0x1a, 0x19, 0xca, 0x40, 0xa8, 0x08, 0xb1, 0xe5, 0x76, 0xa8, 0x86, 0x86, 0x13, 0x5b, 0x6e, + 0x87, 0x8c, 0x98, 0xc0, 0xf0, 0xba, 0x98, 0xf6, 0x07, 0x1b, 0x7d, 0x65, 0x96, 0xd0, 0x34, 0xd1, + 0x1d, 0x98, 0x1b, 0xf8, 0xd8, 0xb3, 0x7d, 0x5d, 0xf8, 0x8f, 0x49, 0x6a, 0x13, 0x92, 0x50, 0x49, + 0xef, 0x5a, 0x95, 0x31, 0x6c, 0x71, 0x07, 0xa3, 0x02, 0x34, 0xed, 0xe0, 0xf5, 0xeb, 0xef, 0x19, + 0xbd, 0x01, 0x46, 0x8b, 0x30, 0xf9, 0x84, 0xfc, 0xa0, 0x2d, 0x2f, 0x6a, 0xec, 0x43, 0xfd, 0xce, + 0x24, 0x1c, 0x7f, 0x48, 0xc6, 0x58, 0xdb, 0xb0, 0xcd, 0x47, 0xce, 0xb3, 0x36, 0x31, 0x49, 0x2b, + 0xd8, 0x5f, 0x75, 0xec, 0x00, 0x3f, 0x0b, 0xd0, 0x03, 0x58, 0xb0, 0x85, 0xfc, 0xb0, 0x22, 0x0a, + 0xad, 0xc8, 0xf1, 0xcc, 0xd6, 0xb1, 0xc2, 0xb5, 0x9a, 0x2d, 0x27, 0xf8, 0xe8, 0x6e, 0x34, 0xca, + 0x85, 0x9c, 0x42, 0xba, 0x41, 0xed, 0x75, 0x5a, 0x1b, 0x2e, 0x45, 0x38, 0x00, 0x21, 0xe3, 0x75, + 0x20, 0x7e, 0x5f, 0x37, 0x7c, 0x9d, 0xb4, 0x94, 0x6a, 0x79, 0xe6, 0xda, 0x92, 0x64, 0x05, 0x61, + 0x83, 0xb5, 0x8a, 0x37, 0xb0, 0x1b, 0x3e, 0xd1, 0x10, 0xba, 0x41, 0xe7, 0x10, 0xc2, 0xd7, 0xf5, + 0x9c, 0x81, 0x4b, 0xc7, 0x5f, 0x3e, 0x23, 0x50, 0xc6, 0xfb, 0x84, 0x92, 0x4e, 0x2d, 0xdc, 0x4f, + 0xe9, 0x9e, 0xe3, 0x04, 0xbb, 0xbe, 0xf0, 0x4d, 0x22, 0x59, 0xa3, 0xa9, 0xe8, 0x0a, 0x1c, 0xf1, + 0x07, 0xae, 0xdb, 0xc3, 0x7d, 0x6c, 0x07, 0x46, 0x8f, 0x15, 0x44, 0xfa, 0xac, 0x78, 0xbe, 0xa8, + 0xa1, 0x78, 0x16, 0x15, 0xec, 0xa3, 0x47, 0x50, 0xcf, 0x60, 0xd0, 0x5d, 0xa7, 0x67, 0x75, 0xf6, + 0x57, 0x66, 0xa8, 0x01, 0x3d, 0x27, 0xa9, 0x26, 0x25, 0xa3, 0x45, 0x69, 0xb5, 0x15, 0x3f, 0x27, + 0x07, 0x9d, 0x02, 0x70, 0x3d, 0xeb, 0x89, 0xd5, 0xc3, 0x5d, 0x6c, 0xae, 0x4c, 0xd1, 0x8a, 0xc7, + 0x52, 0xd0, 0x6b, 0x64, 0x4a, 0xeb, 0x74, 0x9c, 0xbe, 0xcb, 0x1d, 0x8e, 0xd4, 0xa7, 0xc2, 0x16, + 0x5a, 0x9e, 0xb3, 0x6b, 0xf5, 0xb0, 0x26, 0x68, 0xd1, 0x1b, 0x50, 0x36, 0x5c, 0xd7, 0xf0, 0xfa, + 0x8e, 0x47, 0x5d, 0xce, 0x08, 0xbe, 0x90, 0x18, 0x5d, 0x87, 0x45, 0x2e, 0x43, 0x77, 0x59, 0x26, + 0xf3, 0x5b, 0xd3, 0xc4, 0xf6, 0xef, 0x16, 0x56, 0x14, 0x0d, 0xf1, 0x7c, 0xce, 0x4b, 0x3d, 0xd8, + 0xdf, 0x2b, 0x30, 0x9f, 0x90, 0x89, 0xde, 0x85, 0x59, 0x21, 0x21, 0xd8, 0x77, 0x85, 0xab, 0x79, + 0x71, 0x48, 0x35, 0x2e, 0xf3, 0xbf, 0xdb, 0xfb, 0x2e, 0xa6, 0xd3, 0x82, 0xf8, 0x40, 0xe7, 0xa0, + 0xda, 0x73, 0x3a, 0x46, 0x8f, 0x7a, 0x46, 0x0f, 0xef, 0xf2, 0xc9, 0x6b, 0x36, 0x4c, 0xd4, 0xf0, + 0xae, 0x7a, 0x07, 0x66, 0x62, 0x02, 0x10, 0x82, 0x39, 0x8d, 0x15, 0xb5, 0x86, 0x77, 0x8d, 0x41, + 0x2f, 0xa8, 0x4d, 0xa0, 0x39, 0x80, 0x1d, 0xbb, 0x43, 0x82, 0x05, 0x1b, 0x9b, 0x35, 0x05, 0x55, + 0xa1, 0xf2, 0x50, 0x88, 0xa8, 0x15, 0xd4, 0x6f, 0x17, 0xe1, 0x28, 0x35, 0xee, 0x96, 0x63, 0xf2, + 0xd1, 0xc6, 0x23, 0x8b, 0x73, 0x50, 0xed, 0xd0, 0xee, 0xd7, 0x5d, 0xc3, 0xc3, 0x76, 0xc0, 0xe7, + 0xd7, 0x59, 0x96, 0xd8, 0xa2, 0x69, 0x48, 0x83, 0x9a, 0xcf, 0x5b, 0xa4, 0x77, 0xd8, 0xe8, 0xe4, + 0x03, 0x48, 0x6a, 0xf5, 0x90, 0xc1, 0xac, 0xcd, 0xfb, 0xa9, 0xd1, 0x3d, 0xed, 0xef, 0xfb, 0x9d, + 0xa0, 0x27, 0x3c, 0xea, 0xe5, 0x94, 0xa8, 0x64, 0x65, 0x2f, 0xb7, 0x19, 0xc3, 0xba, 0x1d, 0x78, + 0xfb, 0x9a, 0x60, 0x47, 0xef, 0x40, 0xd9, 0x79, 0x82, 0xbd, 0x3d, 0x6c, 0x30, 0x4f, 0x36, 0x73, + 0xed, 0x5c, 0x4a, 0xd4, 0xaa, 0x98, 0x4c, 0x34, 0xec, 0x3b, 0x03, 0xaf, 0x83, 0x7d, 0x2d, 0x64, + 0x42, 0x0d, 0xa8, 0x78, 0x22, 0x99, 0x7b, 0xba, 0xb1, 0x24, 0x44, 0x5c, 0xf5, 0x5b, 0x30, 0x1b, + 0xaf, 0x1c, 0xaa, 0x41, 0xf1, 0x31, 0xde, 0xe7, 0xca, 0x24, 0x3f, 0x23, 0x1f, 0xc8, 0x7a, 0x98, + 0x7d, 0xdc, 0x2a, 0xdc, 0x50, 0x54, 0x0f, 0x50, 0xd4, 0xd2, 0x0d, 0x1c, 0x18, 0xa6, 0x11, 0x18, + 0x08, 0x41, 0x89, 0xc6, 0x9c, 0x4c, 0x04, 0xfd, 0x4d, 0xa4, 0x0e, 0xf8, 0x74, 0x50, 0xd1, 0xc8, + 0x4f, 0x74, 0x02, 0x2a, 0xa1, 0xb7, 0xe3, 0x81, 0x67, 0x94, 0x40, 0x02, 0x40, 0x23, 0x08, 0x70, + 0xdf, 0x0d, 0xa8, 0x62, 0xaa, 0x9a, 0xf8, 0x54, 0x7f, 0x63, 0x12, 0x6a, 0x29, 0x5b, 0xb8, 0x05, + 0xe5, 0x3e, 0x2f, 0x9e, 0xfb, 0xd9, 0x53, 0x52, 0x14, 0x98, 0xaa, 0xa4, 0x16, 0xd2, 0x93, 0x20, + 0x8b, 0xd8, 0x5a, 0x2c, 0x4c, 0x0e, 0xbf, 0x99, 0x91, 0x77, 0x75, 0xd3, 0xf2, 0x70, 0x27, 0x70, + 0xbc, 0x7d, 0x5e, 0xd1, 0xd9, 0x9e, 0xd3, 0x5d, 0x13, 0x69, 0xe8, 0x3a, 0x80, 0x69, 0xfb, 0x3a, + 0xb5, 0xe1, 0x2e, 0xef, 0x47, 0x69, 0x92, 0x0d, 0xa3, 0x61, 0xad, 0x62, 0xda, 0x3e, 0xaf, 0xf2, + 0x6d, 0xa8, 0x92, 0xd0, 0x52, 0xef, 0x8b, 0xf8, 0x68, 0x92, 0xda, 0xd2, 0xb2, 0x5c, 0xef, 0x30, + 0xd0, 0xd5, 0x66, 0xdd, 0xe8, 0xc3, 0x47, 0x77, 0x60, 0x8a, 0x46, 0x77, 0x22, 0x1e, 0x3b, 0x9f, + 0xdd, 0x5c, 0x6e, 0x7d, 0x0f, 0x29, 0x29, 0x33, 0x3e, 0xce, 0x87, 0xb6, 0x60, 0xc6, 0xb0, 0x6d, + 0x27, 0x30, 0xd8, 0xac, 0xc2, 0xa2, 0xb3, 0x4b, 0x43, 0xc5, 0x34, 0x22, 0x7a, 0x26, 0x2b, 0x2e, + 0x01, 0xbd, 0x01, 0x93, 0x74, 0xda, 0xe1, 0xf3, 0xc4, 0xd9, 0x91, 0x83, 0x42, 0x63, 0xf4, 0xe8, + 0x2d, 0x98, 0x7e, 0x6a, 0xd9, 0xa6, 0xf3, 0xd4, 0xe7, 0xfe, 0x54, 0x32, 0xe1, 0x2f, 0xb1, 0xac, + 0x14, 0xb3, 0xe0, 0xa9, 0xdf, 0x84, 0x99, 0x58, 0xfb, 0x0e, 0x62, 0xbf, 0xf5, 0xb7, 0xa1, 0x96, + 0x6c, 0xd3, 0x81, 0xec, 0x7f, 0x00, 0x8b, 0xda, 0xc0, 0x8e, 0xaa, 0x26, 0x56, 0x71, 0xd7, 0x61, + 0x8a, 0x5b, 0x03, 0x33, 0xc6, 0x13, 0xc3, 0xd4, 0xaa, 0x71, 0xda, 0xf8, 0x82, 0x6c, 0xcf, 0xb0, + 0xcd, 0x1e, 0xf6, 0x78, 0x89, 0x62, 0x41, 0xf6, 0x80, 0xa5, 0xaa, 0x6f, 0xc1, 0xd1, 0x44, 0xb1, + 0x7c, 0x3d, 0xf8, 0x1c, 0xcc, 0xb9, 0x8e, 0xa9, 0xfb, 0x2c, 0x59, 0xc4, 0xab, 0x15, 0x62, 0x3b, + 0x82, 0xb6, 0x69, 0x12, 0xf6, 0x76, 0xe0, 0xb8, 0xe9, 0x6a, 0x8f, 0xc7, 0xbe, 0x02, 0x4b, 0x49, + 0x76, 0x56, 0xbc, 0xfa, 0x0e, 0x2c, 0x6b, 0xb8, 0xef, 0x3c, 0xc1, 0x87, 0x15, 0x5d, 0x87, 0x95, + 0xb4, 0x00, 0x2e, 0xfc, 0x7d, 0x58, 0x8e, 0x52, 0xdb, 0x81, 0x11, 0x0c, 0xfc, 0x03, 0x09, 0xe7, + 0x8b, 0xe5, 0x47, 0x8e, 0xcf, 0x3a, 0xb2, 0xac, 0x89, 0x4f, 0x75, 0x19, 0x26, 0x5b, 0x8e, 0xd9, + 0x6c, 0xa1, 0x39, 0x28, 0x58, 0x2e, 0x67, 0x2e, 0x58, 0xae, 0xda, 0x89, 0x97, 0xb9, 0xc9, 0x22, + 0x5b, 0x56, 0x74, 0x92, 0x14, 0xdd, 0x80, 0x39, 0xc3, 0x34, 0x2d, 0x62, 0x48, 0x46, 0x4f, 0xb7, + 0x5c, 0x11, 0x98, 0x2f, 0x24, 0xba, 0xbe, 0xd9, 0xd2, 0xaa, 0x11, 0x61, 0xd3, 0xf5, 0xd5, 0xbb, + 0x50, 0x89, 0x16, 0x01, 0xaf, 0x45, 0x0b, 0xdf, 0xc2, 0xe8, 0x78, 0x31, 0x5c, 0x15, 0x6f, 0xa6, + 0x26, 0x49, 0x5e, 0xcd, 0xd7, 0x00, 0x42, 0xa7, 0x2a, 0x42, 0xd0, 0xa3, 0x99, 0x22, 0xb5, 0x18, + 0xa1, 0xfa, 0xef, 0xa5, 0xb8, 0x93, 0x8d, 0x35, 0xd9, 0x0c, 0x9b, 0x6c, 0x4a, 0x4e, 0xb7, 0x70, + 0x40, 0xa7, 0xfb, 0x0a, 0x4c, 0xfa, 0x81, 0x11, 0x60, 0x1e, 0xf3, 0x1f, 0xcf, 0x66, 0x24, 0x05, + 0x63, 0x8d, 0x51, 0xa2, 0x93, 0x00, 0x1d, 0x0f, 0x1b, 0x01, 0x36, 0x75, 0x83, 0xcd, 0x0a, 0x45, + 0xad, 0xc2, 0x53, 0x1a, 0x01, 0xf1, 0x22, 0x62, 0x95, 0x92, 0x31, 0x11, 0xe6, 0x74, 0x63, 0xb4, + 0x5e, 0x09, 0xbd, 0xd7, 0xd4, 0x48, 0xef, 0xc5, 0x59, 0xb9, 0xf7, 0x8a, 0x3c, 0xf1, 0xf4, 0x30, + 0x4f, 0xcc, 0x98, 0xc6, 0xf1, 0xc4, 0xe5, 0x61, 0x9e, 0x98, 0x8b, 0x19, 0xee, 0x89, 0x33, 0x1c, + 0x49, 0x25, 0xcb, 0x91, 0x7c, 0x96, 0xae, 0xf3, 0xaf, 0x0a, 0xb0, 0x92, 0x1e, 0xcf, 0xdc, 0x8f, + 0x5d, 0x87, 0x29, 0x9f, 0xa6, 0x0c, 0xf7, 0x9f, 0x9c, 0x8b, 0xd3, 0xa2, 0xbb, 0x50, 0xb2, 0xec, + 0x5d, 0x87, 0x0f, 0xbc, 0xcb, 0x43, 0x79, 0x78, 0x49, 0x97, 0x9b, 0xf6, 0xae, 0xc3, 0x34, 0x48, + 0x79, 0xd1, 0x43, 0x38, 0x12, 0xae, 0xde, 0x7d, 0x9d, 0x09, 0xc6, 0x22, 0xce, 0x93, 0xac, 0x34, + 0x8c, 0xaa, 0xb8, 0x44, 0x14, 0xf1, 0xb5, 0x39, 0x1b, 0x89, 0x71, 0x08, 0xb9, 0x1f, 0x18, 0x7d, + 0x57, 0x58, 0x6c, 0x98, 0x50, 0x7f, 0x03, 0x2a, 0x61, 0xf1, 0x07, 0xd2, 0x5d, 0x13, 0x16, 0x13, + 0x63, 0x84, 0x2d, 0x56, 0xc3, 0x41, 0xa5, 0x8c, 0x3b, 0xa8, 0xd4, 0x9f, 0x29, 0xf1, 0x81, 0x7e, + 0xcf, 0xea, 0x05, 0xd8, 0x4b, 0x0d, 0xf4, 0xd7, 0x85, 0x5c, 0x36, 0xca, 0xcf, 0x0c, 0x91, 0xcb, + 0xd6, 0x82, 0x7c, 0xc4, 0xbe, 0x07, 0x73, 0xd4, 0xc4, 0x75, 0x1f, 0xf7, 0x68, 0xac, 0xc4, 0xf5, + 0x78, 0x25, 0x5b, 0x00, 0x2b, 0x9d, 0x0d, 0x91, 0x36, 0xe7, 0x60, 0x7d, 0x53, 0xed, 0xc5, 0xd3, + 0xea, 0x77, 0x00, 0xa5, 0x89, 0x0e, 0xa4, 0xc1, 0x0d, 0xe2, 0x2f, 0xfd, 0x20, 0x73, 0xe6, 0xde, + 0xa5, 0xd5, 0x18, 0x6e, 0x79, 0xac, 0xaa, 0x1a, 0xa7, 0x55, 0xff, 0xad, 0x08, 0x10, 0x65, 0x7e, + 0xce, 0x1d, 0xe5, 0xad, 0xd0, 0x61, 0xb1, 0x88, 0x53, 0xcd, 0x16, 0x99, 0xe9, 0xaa, 0x9a, 0xb2, + 0xab, 0x62, 0xb1, 0xe7, 0x8b, 0x39, 0x02, 0x0e, 0xec, 0xa4, 0xa6, 0x3f, 0x6f, 0x4e, 0xea, 0x1e, + 0x2c, 0x25, 0xcd, 0x84, 0x7b, 0xa8, 0x97, 0x61, 0xd2, 0x0a, 0x70, 0x9f, 0x6d, 0x6a, 0x27, 0x36, + 0x45, 0x62, 0xe4, 0x8c, 0x48, 0x7d, 0x1b, 0x96, 0xe4, 0xbe, 0x3a, 0x58, 0xe8, 0xa2, 0x3e, 0x4c, + 0xc6, 0x3e, 0x91, 0xab, 0xe4, 0xf6, 0x91, 0xb9, 0xbd, 0x94, 0xe4, 0x61, 0x94, 0xea, 0x0f, 0x15, + 0x38, 0x9a, 0xc8, 0xca, 0x19, 0xf8, 0x5f, 0x49, 0x0d, 0x60, 0xe6, 0x5b, 0xaf, 0x0f, 0x29, 0xe5, + 0x53, 0x1c, 0xc5, 0x5f, 0x82, 0xba, 0xdc, 0x3d, 0x92, 0x6a, 0x6f, 0x26, 0x86, 0xf2, 0xd9, 0x91, + 0x95, 0x0e, 0xc7, 0x73, 0x0b, 0x8e, 0x67, 0x0a, 0x4e, 0xeb, 0xbc, 0x38, 0xa6, 0xce, 0xff, 0xa7, + 0x10, 0xf7, 0xd9, 0x8d, 0x20, 0xf0, 0xac, 0x47, 0x83, 0x00, 0x7f, 0xb2, 0x41, 0xd5, 0x5a, 0x38, + 0xb2, 0x99, 0x9f, 0x7d, 0x39, 0x9b, 0x33, 0x2a, 0x3d, 0x73, 0x8c, 0xb7, 0xe5, 0x31, 0x5e, 0xa2, + 0xa2, 0x5e, 0x19, 0x29, 0x6a, 0xe8, 0x68, 0xff, 0x2c, 0x07, 0xf1, 0x3f, 0x28, 0x30, 0x9f, 0xe8, + 0x15, 0x74, 0x07, 0xc0, 0x08, 0xab, 0xce, 0xed, 0xe3, 0xcc, 0xa8, 0x26, 0x6a, 0x31, 0x1e, 0x32, + 0x27, 0xb2, 0x78, 0x31, 0x63, 0x4e, 0xcc, 0x88, 0x17, 0xc3, 0x70, 0xf1, 0x76, 0xb4, 0xd8, 0x65, + 0x1b, 0xb1, 0xea, 0xd0, 0xc5, 0x2e, 0xe3, 0x15, 0x2c, 0xea, 0x6f, 0x16, 0x60, 0x31, 0x4b, 0x3a, + 0x7a, 0x01, 0x8a, 0x1d, 0x77, 0xc0, 0x5b, 0x22, 0x9d, 0x80, 0xad, 0xba, 0x83, 0x1d, 0xdf, 0xe8, + 0x62, 0x8d, 0x10, 0xa0, 0x2b, 0x30, 0xd5, 0xc7, 0x7d, 0xc7, 0xdb, 0xe7, 0xf5, 0x96, 0xb6, 0x1b, + 0x36, 0x68, 0x0e, 0xa3, 0xe6, 0x64, 0xe8, 0x5a, 0x14, 0x56, 0xb3, 0xfa, 0xae, 0x48, 0xab, 0x07, + 0x96, 0xc5, 0x58, 0xc2, 0x58, 0xfa, 0x1a, 0x4c, 0xbb, 0x9e, 0xd3, 0xc1, 0xbe, 0xcf, 0x77, 0x43, + 0x56, 0x12, 0x47, 0x72, 0x24, 0x8b, 0xf3, 0x70, 0x42, 0x74, 0x0b, 0x20, 0x0a, 0xa0, 0xf8, 0xcc, + 0x54, 0xcf, 0x8d, 0xb7, 0x7c, 0x2d, 0x46, 0xad, 0x7e, 0xbf, 0x00, 0x4b, 0xd9, 0x9a, 0x43, 0x97, + 0xe2, 0x7a, 0x39, 0x9e, 0xa1, 0x6a, 0x59, 0x3d, 0xaf, 0x27, 0xd4, 0x73, 0x2a, 0x83, 0x23, 0x4b, + 0x4b, 0x37, 0x93, 0x5a, 0x3a, 0x9d, 0xc1, 0x98, 0xad, 0xac, 0x9b, 0x49, 0x65, 0x65, 0xb1, 0x66, + 0xeb, 0xac, 0x91, 0xa1, 0xb3, 0xb3, 0x59, 0x6d, 0xcc, 0x57, 0xdd, 0xdf, 0x2a, 0x30, 0x1b, 0xaf, + 0x97, 0x1c, 0xb2, 0x2a, 0x89, 0x90, 0x15, 0x6d, 0xc2, 0x82, 0xc9, 0x76, 0x6e, 0x75, 0xcb, 0x0e, + 0xb0, 0xb7, 0x6b, 0x74, 0x44, 0x54, 0x78, 0x36, 0xc3, 0x2e, 0x9a, 0x82, 0x86, 0x55, 0xbc, 0xc6, + 0x79, 0xc3, 0x64, 0xd2, 0x82, 0x50, 0x8e, 0xf0, 0x5a, 0x63, 0x08, 0x8a, 0x31, 0xa9, 0xff, 0xaa, + 0xc0, 0x91, 0x0c, 0x05, 0x8f, 0x68, 0xc8, 0x4e, 0x7e, 0x43, 0xce, 0xe7, 0x77, 0xdd, 0xc8, 0xf6, + 0x3c, 0xc8, 0x68, 0xcf, 0xf8, 0xf2, 0xe2, 0xcd, 0xfa, 0xb9, 0x02, 0x47, 0x33, 0xa9, 0x32, 0xb7, + 0x57, 0xaf, 0x41, 0xd9, 0x7b, 0xa6, 0x3f, 0xda, 0x0f, 0xb0, 0x9f, 0x35, 0xb0, 0x77, 0x62, 0xe7, + 0x34, 0xd3, 0xde, 0xb3, 0xbb, 0x84, 0x0e, 0x5d, 0x87, 0x8a, 0xf7, 0x4c, 0xc7, 0x9e, 0xe7, 0x78, + 0xc2, 0x17, 0xe5, 0x32, 0x95, 0xbd, 0x67, 0xeb, 0x94, 0x90, 0x94, 0x14, 0x88, 0x92, 0x4a, 0x23, + 0x4a, 0x0a, 0xa2, 0x92, 0x82, 0xb0, 0xa4, 0xc9, 0x11, 0x25, 0x05, 0xbc, 0x24, 0xf5, 0x4f, 0x0a, + 0x70, 0x62, 0x98, 0xba, 0x3e, 0x31, 0x45, 0xac, 0x03, 0xf2, 0x9e, 0xe9, 0xae, 0xd1, 0x79, 0x8c, + 0x03, 0x5f, 0x37, 0x3d, 0xc7, 0x75, 0xb1, 0x39, 0x4a, 0x23, 0x35, 0xef, 0x59, 0x8b, 0x71, 0xac, + 0x31, 0x86, 0x43, 0x69, 0x66, 0x1d, 0x50, 0x90, 0x2e, 0x7a, 0x84, 0x8a, 0x6a, 0x41, 0xa2, 0x68, + 0xf5, 0x43, 0x98, 0x8d, 0x7b, 0x88, 0x11, 0xb6, 0x7f, 0x1b, 0xaa, 0xdc, 0x83, 0xe8, 0x1d, 0x67, + 0x60, 0x07, 0xa3, 0x14, 0x35, 0xcb, 0xa9, 0x57, 0x09, 0xb1, 0xfa, 0xb5, 0x70, 0xb8, 0x7d, 0x6a, + 0x45, 0xfe, 0x5a, 0x01, 0x2a, 0xe1, 0x39, 0x3e, 0x99, 0xe9, 0xd9, 0x69, 0x3f, 0xeb, 0x77, 0x7e, + 0xac, 0xff, 0x40, 0x8e, 0x5a, 0x58, 0x9c, 0xfa, 0x42, 0x26, 0x12, 0x60, 0xc4, 0xc2, 0xe4, 0x2a, + 0x2c, 0x0e, 0x7c, 0xec, 0xe9, 0xbe, 0x8b, 0x3b, 0xd6, 0xae, 0x85, 0x4d, 0x9d, 0x15, 0x87, 0x68, + 0x71, 0x88, 0xe4, 0xb5, 0x45, 0x16, 0x95, 0x99, 0xb5, 0x94, 0x39, 0x92, 0xb9, 0x94, 0xf9, 0xb8, + 0xa1, 0xcc, 0x35, 0x28, 0x7f, 0x01, 0xef, 0xb3, 0xc5, 0xfe, 0x98, 0x7c, 0xea, 0xb7, 0x4a, 0xb0, + 0x9c, 0x73, 0x0c, 0x44, 0x57, 0x8a, 0xee, 0x40, 0x77, 0xb1, 0x67, 0x39, 0xa6, 0xe8, 0xb5, 0x8e, + 0x3b, 0x68, 0xd1, 0x04, 0x74, 0x1c, 0xc8, 0x87, 0xfe, 0xb5, 0x81, 0xc3, 0x83, 0xd1, 0xa2, 0x56, + 0xee, 0xb8, 0x83, 0x2f, 0x92, 0x6f, 0xc1, 0xeb, 0xef, 0x19, 0x1e, 0x66, 0xfe, 0x83, 0xf1, 0xb6, + 0x69, 0x02, 0x7a, 0x05, 0x8e, 0xb2, 0xb9, 0x51, 0xef, 0x59, 0x7d, 0x8b, 0x78, 0xd9, 0xd8, 0xd0, + 0x28, 0x6a, 0x88, 0x65, 0x3e, 0x24, 0x79, 0x4d, 0x9b, 0x0d, 0x06, 0x15, 0xaa, 0x8e, 0xd3, 0xd7, + 0xfd, 0x8e, 0xe3, 0x61, 0xdd, 0x30, 0x3f, 0xa4, 0xe3, 0xa0, 0xa8, 0xcd, 0x38, 0x4e, 0xbf, 0x4d, + 0xd2, 0x1a, 0xe6, 0x87, 0xe8, 0x34, 0xcc, 0x74, 0xdc, 0x81, 0x8f, 0x03, 0x9d, 0xfc, 0xa1, 0x9b, + 0x75, 0x15, 0x0d, 0x58, 0xd2, 0xaa, 0x3b, 0xf0, 0x63, 0x04, 0x7d, 0xb2, 0x3c, 0x9b, 0x8e, 0x13, + 0x6c, 0xe0, 0x3e, 0x3d, 0x51, 0xdf, 0x1b, 0x74, 0xb1, 0x6b, 0x74, 0x31, 0xab, 0x9a, 0xd8, 0x71, + 0x93, 0x4e, 0xd4, 0x1f, 0x70, 0x12, 0x5a, 0x41, 0x6d, 0x6e, 0x2f, 0xfe, 0xe9, 0xa3, 0x77, 0x61, + 0x7a, 0x60, 0x53, 0x03, 0x58, 0xa9, 0x50, 0xde, 0xab, 0x63, 0x1c, 0xba, 0x5d, 0xde, 0x61, 0x2c, + 0xfc, 0x0c, 0x90, 0x0b, 0x40, 0xb7, 0xa0, 0xce, 0x15, 0xe5, 0x3f, 0x35, 0xdc, 0xa4, 0xb6, 0x80, + 0xaa, 0x60, 0x89, 0x51, 0xb4, 0x9f, 0x1a, 0x6e, 0x5c, 0x63, 0xf5, 0x5b, 0x30, 0x1b, 0x17, 0x7a, + 0x20, 0x5b, 0xba, 0x0b, 0x55, 0xa9, 0x91, 0xa4, 0xb7, 0xa9, 0x52, 0x7c, 0xeb, 0xeb, 0x62, 0x6c, + 0x95, 0x49, 0x42, 0xdb, 0xfa, 0x3a, 0xc5, 0x41, 0xd0, 0x9a, 0x51, 0x39, 0x25, 0x8d, 0x7d, 0xa8, + 0x06, 0x54, 0x25, 0xe8, 0x01, 0x71, 0xc9, 0x14, 0x63, 0xc0, 0x5d, 0x32, 0xf9, 0x4d, 0xd2, 0x3c, + 0xa7, 0x27, 0x6a, 0x40, 0x7f, 0x93, 0x34, 0x7a, 0x00, 0xcd, 0x8e, 0xd3, 0xe8, 0x6f, 0x5a, 0x04, + 0x7e, 0xc2, 0x61, 0x4c, 0x15, 0x8d, 0x7d, 0xa8, 0xbf, 0xa7, 0x00, 0xac, 0x1a, 0xae, 0xf1, 0xc8, + 0xea, 0x59, 0xc1, 0x3e, 0xba, 0x00, 0x35, 0xc3, 0x34, 0xf5, 0x8e, 0x48, 0xb1, 0xb0, 0xc0, 0x95, + 0xcd, 0x1b, 0xa6, 0xb9, 0x1a, 0x4b, 0x46, 0x2f, 0xc1, 0x02, 0x71, 0xa8, 0x32, 0x2d, 0x03, 0x9a, + 0xd5, 0x48, 0x86, 0x44, 0x7c, 0x03, 0x56, 0x88, 0x5c, 0xa3, 0xff, 0xc8, 0xc2, 0x76, 0x20, 0xf3, + 0x30, 0x04, 0xda, 0x92, 0x61, 0x9a, 0x0d, 0x96, 0x1d, 0xe7, 0x54, 0xff, 0x60, 0x1a, 0x4e, 0xca, + 0x3d, 0x9e, 0x44, 0x83, 0xdc, 0x82, 0xd9, 0x44, 0x7d, 0x53, 0x38, 0x8a, 0xa8, 0x85, 0x9a, 0x44, + 0x9b, 0xc0, 0x22, 0x14, 0x52, 0x58, 0x84, 0x4c, 0xa4, 0x49, 0xf1, 0x13, 0x42, 0x9a, 0x94, 0x3e, + 0x26, 0xd2, 0x64, 0xf2, 0xb0, 0x48, 0x93, 0xd9, 0xb1, 0x91, 0x26, 0x2f, 0x50, 0xd7, 0x2b, 0x4a, + 0xa4, 0xe1, 0x00, 0xf3, 0x09, 0xd5, 0x50, 0xba, 0x2d, 0xc0, 0x8e, 0x09, 0x44, 0xca, 0xf4, 0x41, + 0x10, 0x29, 0xe5, 0x43, 0x22, 0x52, 0x16, 0x3e, 0x11, 0x44, 0xca, 0x19, 0x98, 0xb5, 0x1d, 0xdd, + 0xc6, 0x4f, 0x75, 0xd2, 0xf5, 0x3e, 0xc5, 0xb9, 0x94, 0x35, 0xb0, 0x9d, 0x4d, 0xfc, 0xb4, 0x45, + 0x52, 0xd0, 0x59, 0x98, 0xed, 0x1b, 0xfe, 0x63, 0x6c, 0x52, 0x68, 0x88, 0xbf, 0x52, 0xa5, 0x36, + 0x3b, 0xc3, 0xd2, 0x5a, 0x24, 0x09, 0x3d, 0x0f, 0x61, 0x5b, 0x39, 0xd1, 0x1c, 0x25, 0xaa, 0x8a, + 0x54, 0x46, 0x16, 0x43, 0xb7, 0xcc, 0x1f, 0x12, 0xdd, 0x52, 0x3b, 0x08, 0xba, 0xe5, 0x12, 0xd4, + 0xc4, 0x6f, 0x01, 0x6f, 0x61, 0xa7, 0x15, 0x14, 0xd9, 0x32, 0x2f, 0xf2, 0x04, 0x84, 0x25, 0x0f, + 0x0c, 0x03, 0x43, 0xc1, 0x30, 0x7f, 0xaa, 0xf0, 0x75, 0x73, 0x38, 0x48, 0xf9, 0x29, 0xbc, 0x04, + 0xa0, 0x50, 0x0e, 0x03, 0xa0, 0x40, 0xdb, 0xb9, 0x10, 0x93, 0x0b, 0xf9, 0x92, 0x46, 0x81, 0x4c, + 0x54, 0x0b, 0x90, 0xcc, 0x41, 0x07, 0x0a, 0x87, 0x51, 0xb0, 0x99, 0x9a, 0xc2, 0x28, 0x6a, 0x50, + 0xec, 0x72, 0x60, 0x45, 0x51, 0x23, 0x3f, 0xf3, 0x2c, 0xb8, 0x98, 0x67, 0xc1, 0xea, 0x46, 0xb8, + 0x7a, 0xfe, 0x24, 0x90, 0x7f, 0xea, 0x7f, 0x2a, 0x70, 0x92, 0xcb, 0xcb, 0x81, 0xc7, 0x65, 0x0c, + 0x5a, 0x25, 0x67, 0xd0, 0x76, 0x3c, 0x6c, 0x62, 0x3b, 0xb0, 0x8c, 0x1e, 0x8d, 0xc7, 0xc4, 0x81, + 0x78, 0x94, 0x4c, 0x43, 0xc2, 0xb3, 0x30, 0xcb, 0x40, 0xb4, 0x7c, 0x21, 0xcd, 0xb0, 0xb2, 0x33, + 0x14, 0x47, 0xcb, 0xd7, 0xca, 0x5b, 0x59, 0x8e, 0xb2, 0x94, 0xbb, 0x03, 0x33, 0xd2, 0x5f, 0xaa, + 0x0e, 0x2c, 0xe7, 0x40, 0x13, 0x32, 0x2d, 0x42, 0x49, 0x5b, 0xc4, 0x50, 0x25, 0xa5, 0x2d, 0xe2, + 0x5b, 0x0a, 0x9c, 0x4e, 0x2d, 0xe8, 0x3f, 0x7b, 0xcd, 0xaa, 0x7f, 0xa1, 0x84, 0xf6, 0x93, 0x1c, + 0x5d, 0xab, 0xe9, 0xd1, 0xf5, 0xfc, 0xb0, 0xfd, 0x89, 0xcc, 0xf1, 0xf5, 0x5e, 0xee, 0xf8, 0x7a, + 0x69, 0xe8, 0x5e, 0xc7, 0x28, 0x7d, 0xfe, 0x51, 0x01, 0x8e, 0xe5, 0x56, 0x20, 0x11, 0xde, 0x2a, + 0xc9, 0xf0, 0x96, 0x87, 0xc6, 0xd1, 0x62, 0x86, 0x85, 0xc6, 0x74, 0xbd, 0xc2, 0x63, 0x50, 0xbd, + 0x6f, 0x3c, 0xb3, 0xfa, 0x83, 0x3e, 0x8f, 0x8d, 0x89, 0xb8, 0x0d, 0x96, 0x72, 0x98, 0xe0, 0xf8, + 0x0a, 0x2c, 0xb2, 0x79, 0x8b, 0xc6, 0x67, 0x11, 0x07, 0x8b, 0x91, 0x17, 0x58, 0x1e, 0x09, 0xd5, + 0x04, 0xc3, 0x03, 0xa8, 0x1a, 0xbb, 0xbb, 0x96, 0x4d, 0xd5, 0xc6, 0x62, 0xe5, 0x62, 0x0e, 0xb6, + 0x66, 0xd5, 0x1d, 0x50, 0x57, 0xd0, 0xe0, 0xf4, 0xda, 0xac, 0xe0, 0x24, 0x21, 0xb5, 0xfa, 0xc5, + 0xd0, 0xd2, 0x93, 0x84, 0xe8, 0x18, 0x94, 0x59, 0x4b, 0x7d, 0xe6, 0x21, 0x4a, 0xda, 0x34, 0x6d, + 0xa6, 0xff, 0x58, 0x68, 0x88, 0x4d, 0xe8, 0x0c, 0x18, 0x4d, 0x68, 0x29, 0xbf, 0xda, 0x80, 0x85, + 0x50, 0xe7, 0x43, 0x71, 0x63, 0x31, 0x1c, 0x58, 0x41, 0xc6, 0x81, 0xd9, 0x30, 0xb5, 0x86, 0x9f, + 0x58, 0x1d, 0xfc, 0x89, 0x20, 0xed, 0xcf, 0xc0, 0x8c, 0x8b, 0xbd, 0xbe, 0xe5, 0xfb, 0x61, 0x04, + 0x55, 0xd1, 0xe2, 0x49, 0xea, 0x69, 0xa8, 0xac, 0xae, 0x35, 0x79, 0x91, 0x19, 0x55, 0x55, 0xff, + 0x6b, 0x0a, 0xe6, 0x93, 0x03, 0xe0, 0x66, 0x0a, 0x97, 0x76, 0x32, 0x73, 0x4f, 0x33, 0x63, 0x33, + 0x3f, 0x04, 0xb5, 0x17, 0xc6, 0x00, 0xb5, 0xaf, 0xc0, 0x74, 0xc7, 0xe9, 0xf7, 0x0d, 0xdb, 0x14, + 0xf7, 0x25, 0xf8, 0x27, 0xa9, 0xa9, 0xe1, 0x75, 0xd9, 0x36, 0x7e, 0x45, 0xa3, 0xbf, 0x89, 0x7d, + 0x12, 0x4f, 0x6d, 0xd9, 0x14, 0xd9, 0x46, 0x4d, 0xa8, 0xa2, 0x01, 0x4f, 0x5a, 0xb3, 0x3c, 0x74, + 0x1e, 0x4a, 0xd8, 0x7e, 0x22, 0x4c, 0x46, 0xda, 0x4e, 0x16, 0xeb, 0x4f, 0x8d, 0x52, 0xa0, 0x0b, + 0x30, 0xd5, 0x27, 0x36, 0x2f, 0xd0, 0x0f, 0x0b, 0xa9, 0x7b, 0x05, 0x1a, 0x27, 0x40, 0x2f, 0xc3, + 0xb4, 0x49, 0xb5, 0x27, 0x16, 0x5c, 0x48, 0xc2, 0xc8, 0xd1, 0x2c, 0x4d, 0x90, 0xa0, 0x77, 0xc2, + 0xb3, 0x8c, 0x4a, 0xfa, 0x90, 0x31, 0xa1, 0xe6, 0xcc, 0x63, 0x8c, 0x4d, 0x79, 0x43, 0x00, 0xd2, + 0x27, 0x22, 0x49, 0x29, 0xc3, 0xb7, 0x05, 0x8e, 0x41, 0xb9, 0xe7, 0x74, 0x99, 0xf5, 0xcc, 0xb0, + 0xcb, 0x36, 0x3d, 0xa7, 0x4b, 0x8d, 0x67, 0x11, 0x26, 0xfd, 0xc0, 0xb4, 0x6c, 0x1a, 0xb7, 0x96, + 0x35, 0xf6, 0x41, 0x3c, 0x08, 0xfd, 0xa1, 0x3b, 0x76, 0x07, 0xaf, 0x54, 0x69, 0x56, 0x85, 0xa6, + 0x6c, 0xd9, 0x1d, 0xba, 0x7e, 0x0f, 0x82, 0xfd, 0x95, 0x39, 0x9a, 0x4e, 0x7e, 0x46, 0x47, 0x0a, + 0xf3, 0x39, 0x47, 0x0a, 0x89, 0x0a, 0x67, 0x1c, 0x29, 0xd4, 0x72, 0x27, 0xb4, 0x24, 0xaf, 0x60, + 0x21, 0x31, 0xfb, 0xea, 0x5a, 0x53, 0x17, 0x5d, 0xb3, 0x90, 0xbe, 0x23, 0x10, 0x9a, 0xbd, 0x06, + 0xe1, 0xcf, 0xcf, 0xf4, 0x44, 0xe7, 0xfb, 0x0a, 0x2c, 0xad, 0xd2, 0xf3, 0xec, 0x98, 0xe3, 0x3e, + 0x08, 0x14, 0xec, 0xd5, 0x10, 0x9f, 0x97, 0x01, 0xb2, 0x4a, 0x6a, 0x4a, 0xc0, 0xf3, 0x56, 0x61, + 0x4e, 0x88, 0xe5, 0xcc, 0xc5, 0x31, 0xc0, 0x7d, 0x55, 0x3f, 0xfe, 0xa9, 0xde, 0x86, 0xe5, 0x54, + 0xcd, 0xf9, 0xa9, 0x62, 0xf2, 0x32, 0x09, 0xab, 0x78, 0xfc, 0x32, 0x89, 0x7a, 0x0b, 0x8e, 0xb6, + 0x03, 0xc3, 0x0b, 0x52, 0xcd, 0x1e, 0x83, 0x97, 0xc2, 0xf6, 0x64, 0x5e, 0x8e, 0xac, 0x6b, 0xc3, + 0x62, 0x3b, 0x70, 0xdc, 0x43, 0x08, 0x25, 0x7e, 0x87, 0xb4, 0xdc, 0x19, 0x88, 0x49, 0x50, 0x7c, + 0xaa, 0xcb, 0x0c, 0x64, 0x98, 0x2e, 0xed, 0x4d, 0x58, 0x62, 0x18, 0xbf, 0xc3, 0x34, 0xe2, 0x98, + 0x40, 0x18, 0xa6, 0xe5, 0xde, 0x87, 0x23, 0xd2, 0x39, 0x07, 0xc7, 0xc4, 0x5c, 0x95, 0x31, 0x31, + 0xf9, 0x47, 0x4a, 0x21, 0x24, 0xe6, 0xb7, 0x0b, 0x31, 0x3f, 0x9e, 0x73, 0x30, 0xfe, 0x9a, 0x8c, + 0x88, 0x39, 0x9d, 0x2f, 0x55, 0x02, 0xc4, 0xa4, 0xad, 0xb3, 0x98, 0x61, 0x9d, 0x3b, 0xa9, 0x53, + 0xf7, 0x52, 0x1a, 0xd1, 0x94, 0xa8, 0xe1, 0xa7, 0x72, 0xde, 0xfe, 0x90, 0xa1, 0x66, 0xc2, 0xa2, + 0xc3, 0xa3, 0xf6, 0x57, 0x13, 0x47, 0xed, 0xc7, 0x87, 0xd4, 0x34, 0x3c, 0x64, 0xff, 0x6e, 0x09, + 0x2a, 0x61, 0x5e, 0x4a, 0xc3, 0x69, 0x55, 0x15, 0x32, 0x54, 0x15, 0x9f, 0x5f, 0x8b, 0x87, 0x9c, + 0x5f, 0x4b, 0x63, 0xcc, 0xaf, 0xc7, 0xa1, 0xc2, 0x2e, 0x8d, 0x79, 0x78, 0x97, 0xcf, 0x97, 0x65, + 0x9a, 0xa0, 0xe1, 0xdd, 0xc8, 0xc4, 0xa6, 0xc6, 0x34, 0xb1, 0x04, 0x42, 0x67, 0x3a, 0x89, 0xd0, + 0xb9, 0x19, 0xce, 0x7d, 0xe5, 0xf4, 0x89, 0x58, 0x28, 0x31, 0x73, 0xd6, 0x4b, 0x6c, 0x83, 0x57, + 0xd2, 0xdb, 0xe0, 0x11, 0xff, 0xc8, 0xf9, 0x8e, 0x35, 0xd9, 0x32, 0xf9, 0x0d, 0xb9, 0x69, 0xfa, + 0xdd, 0x34, 0x3f, 0x4b, 0xd7, 0xbf, 0xc5, 0x10, 0x39, 0x71, 0x13, 0xe4, 0xee, 0xf3, 0x35, 0xe9, + 0x30, 0x54, 0xc9, 0x98, 0xc6, 0x42, 0x97, 0x11, 0x3f, 0x00, 0xdd, 0x81, 0xa5, 0x24, 0x92, 0xef, + 0x40, 0xee, 0x2f, 0x07, 0x52, 0xfc, 0x93, 0x78, 0x30, 0x98, 0x83, 0x9f, 0xbd, 0x99, 0x82, 0x7a, + 0x8c, 0x6d, 0xbc, 0x57, 0x65, 0x54, 0xd8, 0x81, 0x4d, 0x2e, 0x05, 0x0a, 0xa3, 0xc1, 0x8a, 0xe1, + 0xf1, 0x6c, 0xb6, 0xa8, 0xa8, 0xf0, 0x94, 0x06, 0x5d, 0xd1, 0x90, 0x88, 0xdf, 0xdf, 0x63, 0xf9, + 0x53, 0x6c, 0x45, 0x23, 0x92, 0x1a, 0x74, 0xf3, 0x18, 0x3f, 0xb3, 0x02, 0xbd, 0xe3, 0x98, 0x98, + 0x1a, 0xf4, 0xa4, 0x56, 0x26, 0x09, 0xab, 0x8e, 0x89, 0xa3, 0xa1, 0x56, 0x3e, 0xe8, 0x50, 0xab, + 0x24, 0x86, 0xda, 0x12, 0x4c, 0x79, 0xd8, 0xf0, 0x1d, 0x9b, 0x9b, 0x24, 0xff, 0x22, 0x1d, 0xd1, + 0xc7, 0xbe, 0x4f, 0xca, 0xe0, 0xb1, 0x19, 0xff, 0x8c, 0xc5, 0x91, 0xb3, 0x43, 0xe2, 0xc8, 0x21, + 0xe8, 0xdc, 0x44, 0x1c, 0x59, 0x1d, 0x12, 0x47, 0x8e, 0x05, 0xce, 0x8d, 0x22, 0xe6, 0xb9, 0x51, + 0x11, 0x73, 0x3c, 0xe4, 0x9c, 0x97, 0x43, 0xce, 0xdb, 0xf1, 0x95, 0x75, 0x2d, 0x8d, 0x55, 0x18, + 0xbe, 0xa4, 0x8e, 0x8f, 0xed, 0x05, 0x69, 0x6c, 0xa3, 0x4b, 0x7c, 0x07, 0x1f, 0xa5, 0xf7, 0x7e, + 0xa5, 0xad, 0x28, 0xb6, 0xb9, 0xff, 0x59, 0xba, 0x82, 0x7f, 0x54, 0x60, 0x39, 0x35, 0x74, 0xb9, + 0x33, 0x78, 0x35, 0x01, 0x20, 0x1e, 0x8a, 0xdc, 0x15, 0xf8, 0xe1, 0x86, 0x84, 0x1f, 0xbe, 0x34, + 0x8c, 0x25, 0x07, 0x3e, 0x7c, 0x78, 0x48, 0xef, 0x37, 0x15, 0x40, 0x19, 0xbb, 0x10, 0x37, 0xc5, + 0x92, 0xe0, 0x00, 0x5b, 0x93, 0x7c, 0x55, 0xf0, 0x4e, 0xb4, 0x2a, 0x28, 0x1c, 0x64, 0xe7, 0x25, + 0xc4, 0x1a, 0xad, 0x43, 0x55, 0xde, 0x7c, 0xbc, 0x2e, 0x57, 0xe6, 0x54, 0x7e, 0x65, 0xa8, 0x81, + 0x30, 0x62, 0xf5, 0x27, 0x05, 0x38, 0xbd, 0xe3, 0x9a, 0x89, 0x90, 0x97, 0x17, 0x36, 0xbe, 0xab, + 0xbd, 0x29, 0xe3, 0xad, 0x0e, 0xa9, 0x89, 0xe2, 0x61, 0x34, 0x81, 0xbe, 0x9a, 0x85, 0x88, 0xbb, + 0x2d, 0x9d, 0x5d, 0x0f, 0x6f, 0xe0, 0x08, 0x70, 0xdc, 0xc7, 0x1d, 0x09, 0x2a, 0x9c, 0xc9, 0xaf, + 0x00, 0x0f, 0x8f, 0x7f, 0x19, 0xe6, 0xd7, 0x9f, 0xe1, 0x4e, 0x7b, 0xdf, 0xee, 0x1c, 0x40, 0xeb, + 0x35, 0x28, 0x76, 0xfa, 0x26, 0x3f, 0x35, 0x23, 0x3f, 0xe3, 0x11, 0x7f, 0x51, 0x8e, 0xf8, 0x75, + 0xa8, 0x45, 0x25, 0xf0, 0x71, 0xb8, 0x44, 0xc6, 0xa1, 0x49, 0x88, 0x89, 0xf0, 0x59, 0x8d, 0x7f, + 0xf1, 0x74, 0xec, 0xb1, 0x1b, 0x4e, 0x2c, 0x1d, 0x7b, 0x9e, 0x3c, 0x8d, 0x14, 0xe5, 0x69, 0x44, + 0xfd, 0xb6, 0x02, 0x33, 0xa4, 0x84, 0x8f, 0x55, 0x7f, 0xbe, 0xec, 0x2e, 0x46, 0xcb, 0xee, 0x70, + 0xf5, 0x5e, 0x8a, 0xaf, 0xde, 0xa3, 0x9a, 0x4f, 0xd2, 0xe4, 0x74, 0xcd, 0xa7, 0xc2, 0x74, 0xec, + 0x79, 0xea, 0x19, 0x98, 0x65, 0x75, 0xe3, 0x2d, 0xaf, 0x41, 0x71, 0xe0, 0xf5, 0x44, 0xff, 0x0d, + 0xbc, 0x9e, 0xfa, 0x0d, 0x05, 0xaa, 0x8d, 0x20, 0x30, 0x3a, 0x7b, 0x07, 0x68, 0x40, 0x58, 0xb9, + 0x42, 0xbc, 0x72, 0xe9, 0x46, 0x44, 0xd5, 0x2d, 0xe5, 0x54, 0x77, 0x52, 0xaa, 0xae, 0x0a, 0x73, + 0xa2, 0x2e, 0xb9, 0x15, 0xde, 0x04, 0xd4, 0x72, 0xbc, 0xe0, 0x9e, 0xe3, 0x3d, 0x35, 0x3c, 0xf3, + 0x60, 0x2b, 0x6c, 0x04, 0x25, 0xfe, 0xb4, 0x46, 0xf1, 0xfc, 0xa4, 0x46, 0x7f, 0xab, 0x2f, 0xc2, + 0x11, 0x49, 0x5e, 0x6e, 0xc1, 0xb7, 0x60, 0x86, 0x86, 0x05, 0x7c, 0xf1, 0xf5, 0x52, 0x1c, 0xf0, + 0x31, 0x22, 0x7c, 0x50, 0xd7, 0x60, 0x81, 0x04, 0x88, 0x34, 0x3d, 0xf4, 0x2f, 0x57, 0x12, 0xeb, + 0x93, 0xe5, 0x94, 0x88, 0xc4, 0xda, 0xe4, 0x67, 0x0a, 0x4c, 0x32, 0x6c, 0x47, 0x32, 0x68, 0x3b, + 0x4e, 0x26, 0x5e, 0xd7, 0xd1, 0x03, 0xa3, 0x1b, 0x3e, 0x5b, 0x42, 0x12, 0xb6, 0x8d, 0x2e, 0x3d, + 0x85, 0xa3, 0x99, 0xa6, 0xd5, 0xc5, 0x7e, 0x20, 0x4e, 0x8e, 0x67, 0x48, 0xda, 0x1a, 0x4b, 0x22, + 0x8a, 0xa1, 0x07, 0xec, 0x25, 0xba, 0x5b, 0x4a, 0x7f, 0xa3, 0xf3, 0xec, 0x54, 0x67, 0xf8, 0x71, + 0x29, 0x3d, 0xed, 0xa9, 0x43, 0x39, 0x71, 0xce, 0x19, 0x7e, 0xa3, 0x0b, 0x50, 0xa2, 0x1b, 0xf9, + 0xd3, 0xc3, 0xb4, 0x44, 0x49, 0x88, 0x55, 0xb8, 0x96, 0x6d, 0x63, 0x93, 0xbf, 0xa9, 0xc1, 0xbf, + 0xd4, 0x77, 0x00, 0xc5, 0x95, 0xc7, 0x3b, 0xe8, 0x02, 0x4c, 0x51, 0xdd, 0x8a, 0xa8, 0x7a, 0x21, + 0x25, 0x5a, 0xe3, 0x04, 0xea, 0x57, 0x00, 0xb1, 0xb2, 0xa4, 0x48, 0xfa, 0x20, 0x1d, 0x38, 0x24, + 0xa6, 0xfe, 0x9e, 0x02, 0x47, 0x24, 0xe9, 0xbc, 0x7e, 0x2f, 0xca, 0xe2, 0x33, 0xaa, 0xc7, 0x45, + 0xbf, 0x25, 0x4d, 0xf0, 0x17, 0xd2, 0xd5, 0xf8, 0x7f, 0x9a, 0xdc, 0xff, 0x59, 0x01, 0x68, 0x0c, + 0x82, 0x3d, 0xbe, 0x29, 0x1c, 0xef, 0x44, 0x25, 0xd1, 0x89, 0x75, 0x28, 0xbb, 0x86, 0xef, 0x3f, + 0x75, 0x3c, 0xb1, 0xe0, 0x0d, 0xbf, 0xe9, 0x56, 0xee, 0x80, 0x3f, 0x24, 0x52, 0xd1, 0xe8, 0x6f, + 0xf4, 0x3c, 0xcc, 0xb1, 0xf7, 0x74, 0x74, 0xc3, 0x34, 0x3d, 0x01, 0x22, 0xad, 0x68, 0x55, 0x96, + 0xda, 0x60, 0x89, 0x84, 0xcc, 0xa2, 0xc7, 0x3a, 0xc1, 0xbe, 0x1e, 0x38, 0x8f, 0xb1, 0xcd, 0x17, + 0xb1, 0x55, 0x91, 0xba, 0x4d, 0x12, 0xd9, 0x11, 0x71, 0xd7, 0xf2, 0x03, 0x4f, 0x90, 0x89, 0xc3, + 0x74, 0x9e, 0x4a, 0xc9, 0xd4, 0x3f, 0x53, 0xa0, 0xd6, 0x1a, 0xf4, 0x7a, 0x4c, 0xb9, 0x87, 0xe9, + 0xe4, 0x8b, 0xbc, 0x29, 0x85, 0xb4, 0xc9, 0x47, 0x8a, 0xe2, 0x4d, 0xfc, 0x44, 0xf6, 0xdd, 0xae, + 0xc2, 0x42, 0xac, 0xc6, 0xdc, 0x70, 0xa4, 0xa5, 0x86, 0x22, 0x2f, 0x35, 0xd4, 0x06, 0x20, 0xb6, + 0xd5, 0x74, 0xe8, 0x56, 0xaa, 0x47, 0xe1, 0x88, 0x24, 0x82, 0x4f, 0xc5, 0x17, 0xa1, 0xca, 0x01, + 0x8d, 0xdc, 0x20, 0x8e, 0x41, 0x99, 0xb8, 0xd4, 0x8e, 0x65, 0x0a, 0xe4, 0xcc, 0xb4, 0xeb, 0x98, + 0xab, 0x96, 0xe9, 0xa9, 0x5f, 0x84, 0x2a, 0x7f, 0x31, 0x81, 0xd3, 0xde, 0x81, 0x39, 0x7e, 0xd0, + 0xaa, 0x4b, 0x57, 0x8c, 0x8f, 0x65, 0xa0, 0x66, 0x85, 0x2a, 0xec, 0xf8, 0xa7, 0xfa, 0x55, 0xa8, + 0xb3, 0x68, 0x41, 0x12, 0x2c, 0x1a, 0x78, 0x07, 0x04, 0x68, 0x6d, 0x88, 0x7c, 0x99, 0xb3, 0xea, + 0xc5, 0x3f, 0xd5, 0x93, 0x70, 0x3c, 0x53, 0x3e, 0x6f, 0xbd, 0x0b, 0xb5, 0x28, 0x83, 0xdd, 0x83, + 0x0d, 0xe1, 0x40, 0x4a, 0x0c, 0x0e, 0xb4, 0x14, 0x86, 0xf0, 0x05, 0x31, 0x73, 0xd1, 0x28, 0x3d, + 0x5a, 0x02, 0x16, 0xf3, 0x96, 0x80, 0x25, 0x69, 0x09, 0xa8, 0x6e, 0x84, 0x3a, 0xe4, 0x0b, 0xf1, + 0xdb, 0x74, 0xab, 0x80, 0x95, 0x2d, 0x9c, 0xda, 0x89, 0xec, 0xf6, 0x31, 0x22, 0x2d, 0x46, 0xaf, + 0x5e, 0x80, 0xaa, 0xec, 0xde, 0x62, 0x1e, 0x4b, 0x91, 0x3d, 0xd6, 0xaf, 0xc0, 0x92, 0x26, 0x21, + 0x00, 0xef, 0x61, 0x23, 0x18, 0x78, 0xd8, 0x47, 0x6f, 0x42, 0x3d, 0xe3, 0x89, 0x23, 0x9d, 0xaf, + 0x0c, 0x99, 0x98, 0xe5, 0xd4, 0x4b, 0x47, 0x1b, 0x6c, 0x5d, 0xf8, 0x22, 0xcc, 0x53, 0x84, 0x62, + 0xec, 0x66, 0x2f, 0xd3, 0x11, 0x7d, 0xfb, 0x66, 0x33, 0xba, 0xc6, 0x6b, 0x86, 0xef, 0x6d, 0xf0, + 0xf2, 0x33, 0xcf, 0xd8, 0xde, 0x86, 0xf2, 0x2e, 0xaf, 0x17, 0x1f, 0x90, 0x6a, 0x86, 0x32, 0x12, + 0x2d, 0xd0, 0x42, 0x1e, 0x75, 0x0b, 0xe6, 0x39, 0x4d, 0xd8, 0xbc, 0xdb, 0x43, 0x41, 0x31, 0xac, + 0x79, 0xb9, 0x70, 0x17, 0xf5, 0x7b, 0x05, 0x98, 0x4b, 0xf8, 0xf8, 0x57, 0x12, 0x0b, 0xba, 0x2c, + 0x73, 0x4c, 0x2c, 0xe7, 0x6e, 0x48, 0xde, 0x5e, 0x86, 0xe0, 0x0c, 0xbf, 0x04, 0xba, 0x0e, 0xb5, + 0x04, 0x9e, 0x53, 0x60, 0xb9, 0xeb, 0xf9, 0x8a, 0xd1, 0xe6, 0x65, 0xb0, 0xa7, 0x8f, 0xde, 0x88, + 0xe9, 0xb5, 0x94, 0x5e, 0x86, 0x26, 0x74, 0x16, 0x29, 0xf4, 0xf0, 0x13, 0xcd, 0x22, 0x9f, 0x7e, + 0xef, 0xf9, 0x84, 0x9f, 0xdb, 0xa7, 0x7a, 0x0e, 0x66, 0x76, 0xf2, 0x9e, 0x34, 0x2a, 0x09, 0x98, + 0xe8, 0xeb, 0xb0, 0x78, 0xcf, 0xea, 0x61, 0x7f, 0xdf, 0x0f, 0x70, 0xbf, 0x49, 0x67, 0x85, 0x5d, + 0x0b, 0x7b, 0xe8, 0x14, 0x00, 0x35, 0x4a, 0xd7, 0xb1, 0xc2, 0x27, 0x56, 0x62, 0x29, 0xea, 0x8f, + 0x15, 0x98, 0x8f, 0x18, 0xc7, 0xc1, 0x02, 0xbf, 0x06, 0x93, 0xbb, 0xbe, 0xd8, 0xd0, 0x4d, 0x1c, + 0x73, 0x65, 0x55, 0x41, 0x2b, 0xed, 0xfa, 0x4d, 0x13, 0xbd, 0x0e, 0x30, 0xf0, 0xb1, 0xc9, 0x8f, + 0xbd, 0x47, 0xa0, 0xb3, 0x2b, 0x84, 0x94, 0x9d, 0x83, 0xdf, 0x80, 0x19, 0xcb, 0x76, 0x4c, 0x4c, + 0x21, 0x11, 0xe6, 0x28, 0x64, 0x36, 0x30, 0xda, 0x1d, 0x1f, 0x9b, 0xea, 0x1f, 0x46, 0xc0, 0x86, + 0xcf, 0x73, 0x0b, 0xd5, 0x3f, 0x17, 0x71, 0x91, 0xe8, 0x76, 0x3e, 0x66, 0x1e, 0xc0, 0x02, 0x9b, + 0xde, 0x76, 0xc3, 0x32, 0x33, 0xaf, 0xac, 0x25, 0x1a, 0xa7, 0xd5, 0x2c, 0x1e, 0x11, 0x0b, 0x26, + 0xd4, 0x82, 0xa3, 0xd1, 0x42, 0x25, 0x2e, 0xad, 0x30, 0x5a, 0xda, 0x62, 0x27, 0xb6, 0xff, 0x2f, + 0x18, 0xd5, 0x5b, 0x70, 0x34, 0x71, 0x2b, 0x65, 0xfc, 0x43, 0xa0, 0x77, 0x13, 0x5b, 0xb6, 0x91, + 0x97, 0xb8, 0x2a, 0x5f, 0x86, 0x1c, 0x76, 0x7f, 0x88, 0xdf, 0xcb, 0xdb, 0x81, 0x63, 0xd2, 0x7e, + 0xb2, 0x54, 0x97, 0x1b, 0x89, 0x65, 0xc3, 0x99, 0x7c, 0x79, 0x89, 0xf5, 0xc3, 0x7f, 0x2b, 0xb0, + 0x98, 0x45, 0x70, 0xc8, 0x63, 0x8e, 0x0f, 0x72, 0x2e, 0x52, 0xbf, 0x3a, 0xaa, 0x42, 0x9f, 0xca, + 0xb1, 0xd0, 0x26, 0xbb, 0x86, 0x39, 0xba, 0x4f, 0x8a, 0xe3, 0xf5, 0xc9, 0xcf, 0x0a, 0xb1, 0xa3, + 0xbc, 0x21, 0x57, 0x25, 0x3f, 0xc6, 0xfe, 0xf9, 0x6a, 0xe2, 0xa6, 0xe4, 0x4b, 0x99, 0x8c, 0x23, + 0x2e, 0x4a, 0x6a, 0x59, 0xdb, 0x42, 0x57, 0x47, 0x49, 0xfa, 0xdc, 0xde, 0x93, 0xfc, 0x9d, 0x02, + 0xcc, 0xc9, 0x1d, 0x82, 0xde, 0xc9, 0xb8, 0x26, 0x79, 0x7a, 0x44, 0x03, 0xa5, 0x5b, 0x92, 0xfc, + 0x5a, 0x62, 0x61, 0xfc, 0x6b, 0x89, 0xc5, 0xf1, 0xae, 0x25, 0xde, 0x85, 0xb9, 0xa7, 0x9e, 0x15, + 0x18, 0x8f, 0x7a, 0x58, 0xef, 0x19, 0xfb, 0xd8, 0xcb, 0x9a, 0x61, 0x93, 0xae, 0xa8, 0x2a, 0x58, + 0x1e, 0x12, 0x0e, 0xba, 0x60, 0x7e, 0x6a, 0xb8, 0x7c, 0xdd, 0x2d, 0x85, 0xf2, 0xed, 0xa7, 0x86, + 0xcb, 0x78, 0x28, 0x89, 0xfa, 0x8d, 0x02, 0x1c, 0xcd, 0xbc, 0x4c, 0xf7, 0xf1, 0x55, 0x74, 0x29, + 0xae, 0xa2, 0x83, 0xdc, 0x50, 0x2c, 0x1e, 0xe8, 0x86, 0x62, 0x33, 0x47, 0x61, 0x59, 0x58, 0x91, + 0xe1, 0x7a, 0x53, 0xff, 0x5a, 0x81, 0xb2, 0xa8, 0xd4, 0xc8, 0xfb, 0x82, 0xcb, 0x03, 0x42, 0xa6, + 0xd3, 0x3b, 0x1d, 0xb6, 0x61, 0x3b, 0xba, 0x8f, 0x49, 0x2c, 0x3d, 0xf2, 0x76, 0xd6, 0x22, 0xe5, + 0x5b, 0x75, 0x3c, 0xbc, 0x69, 0xd8, 0x4e, 0x9b, 0x31, 0xa1, 0x06, 0xd4, 0x98, 0x3c, 0x2a, 0x8a, + 0x08, 0x1d, 0x39, 0x51, 0xce, 0x51, 0x06, 0x22, 0x84, 0x08, 0xf3, 0xd5, 0xbf, 0x53, 0x60, 0x3e, + 0xa1, 0xd9, 0x5f, 0xbc, 0x46, 0x7c, 0xa7, 0x08, 0x33, 0xb1, 0x5e, 0x1e, 0xd1, 0x80, 0x55, 0x58, + 0x10, 0x78, 0x2f, 0x1f, 0x07, 0xe3, 0xdd, 0x8e, 0x9b, 0xe7, 0x1c, 0x6d, 0x1c, 0xb0, 0x38, 0xea, + 0x0e, 0xcc, 0x1b, 0x4f, 0x0c, 0xab, 0x47, 0x2d, 0x68, 0xac, 0x10, 0x65, 0x2e, 0xa4, 0x0f, 0x23, + 0x31, 0xd6, 0xee, 0xb1, 0xee, 0xc8, 0x01, 0xa5, 0x8d, 0xae, 0x2a, 0xfa, 0x7e, 0x0c, 0xf1, 0x38, + 0xf4, 0xaa, 0xa2, 0xef, 0x87, 0xe5, 0xd1, 0x0b, 0x2d, 0xf4, 0x8e, 0xa6, 0xcf, 0x1f, 0xf6, 0xc9, + 0x2f, 0x8f, 0xd0, 0xde, 0xa3, 0xa4, 0x44, 0x61, 0x7d, 0xe3, 0x43, 0xc7, 0xd3, 0xe3, 0xfc, 0xd3, + 0x23, 0x14, 0x46, 0x39, 0x5a, 0xa1, 0x10, 0xf5, 0x2f, 0x15, 0xa8, 0x84, 0x7e, 0x64, 0x44, 0x0f, + 0x35, 0x61, 0x91, 0xde, 0xfe, 0x49, 0x6a, 0x78, 0x44, 0x27, 0x21, 0xc2, 0xd4, 0x90, 0xb5, 0xdc, + 0x80, 0x1a, 0x15, 0x15, 0x57, 0xf5, 0xa8, 0x8e, 0xf2, 0x45, 0x35, 0x59, 0x40, 0xf9, 0x37, 0x05, + 0x40, 0x69, 0x57, 0xf2, 0x0b, 0x63, 0x64, 0xf1, 0x4e, 0x2b, 0x8d, 0xdf, 0xe9, 0xf7, 0xe1, 0x48, + 0xc7, 0xe9, 0xf7, 0x2d, 0x7a, 0x73, 0xcc, 0xf1, 0xf6, 0xc7, 0x33, 0xb7, 0x05, 0xc6, 0xc3, 0xf4, + 0xc4, 0xd4, 0xf7, 0x36, 0x1c, 0xd3, 0xb0, 0xe3, 0x62, 0x3b, 0x74, 0xfd, 0x0f, 0x9d, 0xee, 0x01, + 0xe2, 0xdb, 0x13, 0x50, 0xcf, 0xe2, 0xe7, 0xfb, 0x27, 0x03, 0xa8, 0xaf, 0xee, 0xe1, 0xce, 0x63, + 0xba, 0xfc, 0x3a, 0x0c, 0x66, 0xab, 0x0e, 0xe5, 0x9e, 0xd3, 0x61, 0x8f, 0x41, 0xf3, 0x2d, 0x46, + 0xf1, 0x3d, 0xe4, 0x74, 0xe7, 0x24, 0x1c, 0xcf, 0x2c, 0x96, 0xd7, 0x0a, 0x41, 0xed, 0x3e, 0x0e, + 0xd6, 0x9f, 0x60, 0x3b, 0x0c, 0x9f, 0xd5, 0x1f, 0x16, 0x62, 0x81, 0x3a, 0xcd, 0x3a, 0x00, 0xd6, + 0x0d, 0xb5, 0x20, 0x5a, 0x39, 0xe8, 0x98, 0x70, 0xb3, 0x37, 0x4b, 0xd9, 0x8b, 0xc2, 0xd9, 0x87, + 0xdd, 0xb4, 0x10, 0xfa, 0x54, 0x69, 0xf4, 0x1a, 0x53, 0x98, 0x96, 0x80, 0x40, 0x14, 0x93, 0x10, + 0x88, 0x77, 0x01, 0xc5, 0x43, 0x71, 0xbe, 0xdd, 0x50, 0x1a, 0xe3, 0x01, 0xaa, 0x9a, 0x9b, 0x7c, + 0x2a, 0x2d, 0xe7, 0x19, 0xa9, 0xc9, 0x43, 0x3d, 0x23, 0xa5, 0x9e, 0x82, 0x13, 0x24, 0xc0, 0xde, + 0xc0, 0x81, 0x67, 0x75, 0xd6, 0xb0, 0xdf, 0xf1, 0x2c, 0x37, 0x70, 0x42, 0xf8, 0x95, 0xaa, 0xc3, + 0xc9, 0x9c, 0x7c, 0xae, 0xee, 0xb7, 0x61, 0xc6, 0x8c, 0x92, 0xb3, 0x76, 0xbc, 0x92, 0xbc, 0x5a, + 0x9c, 0x41, 0x7d, 0x1f, 0x6a, 0x49, 0x82, 0xcc, 0x9d, 0x24, 0x04, 0xa5, 0x3d, 0xdc, 0x73, 0xc5, + 0x55, 0x3f, 0xf2, 0x9b, 0x68, 0x9d, 0xad, 0x5d, 0x1e, 0xe3, 0x7d, 0x71, 0x22, 0x52, 0xa1, 0x29, + 0x5f, 0xc0, 0xfb, 0x61, 0xdb, 0xa4, 0x77, 0x4d, 0x3c, 0xab, 0x93, 0x6c, 0x5b, 0x46, 0x7e, 0xd4, + 0x36, 0xd2, 0x6d, 0x7d, 0x96, 0xcc, 0xdb, 0x76, 0x32, 0xf7, 0xcd, 0x14, 0xca, 0x0b, 0xae, 0x63, + 0xf2, 0xdf, 0xea, 0x77, 0x15, 0x58, 0x48, 0x51, 0x8c, 0x79, 0xca, 0xf5, 0x32, 0x4c, 0x8b, 0x72, + 0x0b, 0x69, 0x48, 0x33, 0x93, 0xa5, 0x09, 0x12, 0xd4, 0x84, 0x85, 0xc8, 0xa2, 0x05, 0x5f, 0x31, + 0xdd, 0x17, 0xf1, 0x85, 0x0b, 0xad, 0x6e, 0xad, 0x93, 0x48, 0x51, 0x3b, 0x50, 0x4b, 0x52, 0x8d, + 0x33, 0xa6, 0x0e, 0x54, 0x5f, 0xf5, 0x07, 0x0a, 0x4c, 0xb1, 0xb4, 0xcc, 0xce, 0x96, 0xa6, 0x83, + 0x42, 0x72, 0x3a, 0x78, 0x03, 0x66, 0x98, 0x1c, 0x3d, 0xbc, 0xe8, 0x39, 0x27, 0x6f, 0xf4, 0x33, + 0xd1, 0x74, 0xb4, 0x42, 0x3f, 0xfc, 0x4d, 0x9a, 0xc1, 0xec, 0x85, 0xae, 0x4c, 0x04, 0x70, 0x7d, + 0x86, 0xa6, 0x51, 0x97, 0x4b, 0x42, 0x66, 0xbe, 0x86, 0x19, 0xe1, 0x9b, 0xf9, 0xd6, 0xd6, 0x12, + 0x7d, 0xa5, 0x33, 0xb5, 0xd5, 0xad, 0x6e, 0xd3, 0x67, 0x34, 0xd3, 0x5b, 0xd4, 0xe8, 0x4d, 0x19, + 0xe8, 0xf0, 0x7c, 0x0a, 0x6b, 0x20, 0xb1, 0x0d, 0x3c, 0xf6, 0x68, 0x3e, 0xc7, 0x3b, 0x7c, 0x00, + 0xc7, 0x72, 0x69, 0xd0, 0x5b, 0xe1, 0x9b, 0xc5, 0xa6, 0x67, 0x3d, 0xe1, 0x1b, 0x0b, 0x73, 0xf2, + 0xfb, 0x28, 0xab, 0x94, 0x60, 0x8d, 0xe6, 0x8b, 0xd7, 0x8c, 0xd9, 0x97, 0xfa, 0x4f, 0x8a, 0x38, + 0xe9, 0x97, 0x9e, 0xa4, 0x92, 0xc1, 0x14, 0xe3, 0x99, 0x6e, 0xfc, 0xe9, 0xe1, 0xc2, 0xc7, 0x7e, + 0x7a, 0xb8, 0x78, 0x98, 0x9b, 0x73, 0xea, 0x39, 0x38, 0x3b, 0xa4, 0x35, 0xac, 0x33, 0x2e, 0xbe, + 0x00, 0x65, 0xf1, 0x4f, 0x1c, 0xd0, 0x34, 0x14, 0xb7, 0x57, 0x5b, 0xb5, 0x09, 0xf2, 0x63, 0x67, + 0xad, 0x55, 0x53, 0x50, 0x19, 0x4a, 0xed, 0xd5, 0xed, 0x56, 0xad, 0x70, 0xb1, 0x0f, 0xb5, 0xe4, + 0xff, 0x31, 0x40, 0xcb, 0x70, 0xa4, 0xa5, 0x6d, 0xb5, 0x1a, 0xf7, 0x1b, 0xdb, 0xcd, 0xad, 0x4d, + 0xbd, 0xa5, 0x35, 0xdf, 0x6b, 0x6c, 0xaf, 0xd7, 0x26, 0xd0, 0x59, 0x38, 0x19, 0xcf, 0x78, 0xb0, + 0xd5, 0xde, 0xd6, 0xb7, 0xb7, 0xf4, 0xd5, 0xad, 0xcd, 0xed, 0x46, 0x73, 0x73, 0x5d, 0xab, 0x29, + 0xe8, 0x24, 0x1c, 0x8b, 0x93, 0xdc, 0x6d, 0xae, 0x35, 0xb5, 0xf5, 0x55, 0xf2, 0xbb, 0xf1, 0xb0, + 0x56, 0xb8, 0xf8, 0x16, 0x54, 0xa5, 0xfb, 0x6f, 0xa4, 0x4a, 0xad, 0xad, 0xb5, 0xda, 0x04, 0xaa, + 0x42, 0x25, 0x2e, 0xa7, 0x0c, 0xa5, 0xcd, 0xad, 0xb5, 0xf5, 0x5a, 0x01, 0x01, 0x4c, 0x6d, 0x37, + 0xb4, 0xfb, 0xeb, 0xdb, 0xb5, 0xe2, 0xc5, 0x57, 0x60, 0x25, 0xef, 0x1e, 0x28, 0xaa, 0xc0, 0xe4, + 0x06, 0xf6, 0xba, 0xb8, 0x36, 0x41, 0x58, 0xda, 0x64, 0x64, 0x04, 0x35, 0xe5, 0xe2, 0xad, 0xe4, + 0x33, 0x46, 0x18, 0x2d, 0x40, 0xb5, 0xdd, 0xd8, 0x5c, 0xbb, 0xbb, 0xf5, 0x65, 0x5d, 0x5b, 0x6f, + 0xac, 0xbd, 0x5f, 0x9b, 0x40, 0x8b, 0x50, 0x13, 0x49, 0x9b, 0x5b, 0xdb, 0x2c, 0x55, 0xb9, 0xf8, + 0x38, 0xb1, 0xb4, 0xc7, 0xe8, 0x28, 0x2c, 0x84, 0xb5, 0xd4, 0x57, 0xb5, 0xf5, 0xc6, 0xf6, 0x3a, + 0xa9, 0xbc, 0x94, 0xac, 0xed, 0x6c, 0x6e, 0x36, 0x37, 0xef, 0xd7, 0x14, 0x22, 0x35, 0x4a, 0x5e, + 0xff, 0x72, 0x93, 0x10, 0x17, 0x64, 0xe2, 0x9d, 0xcd, 0x2f, 0x6c, 0x6e, 0x7d, 0x69, 0xb3, 0x56, + 0xbc, 0xf8, 0xeb, 0x71, 0x2c, 0x53, 0x34, 0xfd, 0x1e, 0x87, 0xe5, 0x54, 0x89, 0xfa, 0xfa, 0x7b, + 0xeb, 0x9b, 0xdb, 0xb5, 0x09, 0x39, 0xb3, 0xbd, 0xdd, 0xd0, 0xa2, 0x4c, 0x25, 0x99, 0xb9, 0xd5, + 0x6a, 0x85, 0x99, 0x05, 0x39, 0x73, 0x6d, 0xfd, 0xe1, 0x7a, 0xc4, 0x59, 0xbc, 0xf8, 0x1c, 0x40, + 0xe4, 0x66, 0xd0, 0x0c, 0x4c, 0xaf, 0x6e, 0xed, 0x6c, 0x6e, 0xaf, 0x6b, 0xb5, 0x09, 0xa2, 0xe5, + 0xfb, 0x8d, 0x9d, 0xfb, 0xeb, 0x35, 0xe5, 0xe2, 0x05, 0x98, 0x8d, 0x0f, 0x3a, 0x42, 0xd7, 0x7e, + 0xbf, 0xbd, 0xbd, 0xbe, 0x41, 0x34, 0x32, 0x0b, 0xe5, 0xd5, 0xfb, 0xda, 0xd6, 0x4e, 0xeb, 0x5e, + 0xbb, 0xa6, 0x5c, 0xfb, 0xdf, 0xa3, 0xe1, 0x91, 0x4a, 0x1b, 0x7b, 0xf4, 0x2e, 0xd0, 0x1a, 0x4c, + 0x8b, 0xff, 0x94, 0x22, 0x6d, 0x6e, 0xc9, 0xff, 0xd9, 0xa5, 0x7e, 0x3c, 0x33, 0x8f, 0x87, 0x4f, + 0x13, 0xe8, 0x3d, 0x7a, 0x48, 0x15, 0x7b, 0x44, 0xf0, 0x4c, 0xe2, 0xac, 0x20, 0xf5, 0x56, 0x61, + 0xfd, 0xec, 0x10, 0x8a, 0x50, 0xee, 0xfb, 0x30, 0x27, 0xbf, 0xd6, 0x8b, 0xce, 0xca, 0x27, 0x21, + 0x19, 0x0f, 0x01, 0xd7, 0xd5, 0x61, 0x24, 0xa1, 0x68, 0x1d, 0x6a, 0xc9, 0xd7, 0x7a, 0x91, 0xe4, + 0x02, 0x72, 0x1e, 0x03, 0xae, 0x3f, 0x37, 0x9c, 0x28, 0x5e, 0x40, 0xea, 0x11, 0xda, 0x73, 0xc3, + 0x9f, 0xf5, 0xcc, 0x28, 0x20, 0xef, 0xed, 0x4f, 0xa6, 0x1c, 0x39, 0xb8, 0x40, 0x89, 0x77, 0x5f, + 0x33, 0x9e, 0x88, 0x94, 0x95, 0x93, 0xfd, 0x3c, 0xa0, 0x3a, 0x81, 0x7e, 0x09, 0xe6, 0x13, 0x17, + 0x3d, 0x90, 0xc4, 0x98, 0x7d, 0x7f, 0xa5, 0x7e, 0x6e, 0x28, 0x8d, 0xdc, 0xab, 0xf1, 0xcb, 0x1c, + 0xc9, 0x5e, 0xcd, 0xb8, 0x24, 0x92, 0xec, 0xd5, 0xcc, 0xbb, 0x20, 0xd4, 0x10, 0xa5, 0x8b, 0x1b, + 0xb2, 0x21, 0x66, 0x5d, 0x14, 0xa9, 0x9f, 0x1d, 0x42, 0x11, 0x57, 0x48, 0xe2, 0xea, 0x86, 0xac, + 0x90, 0xec, 0x4b, 0x21, 0xf5, 0x73, 0x43, 0x69, 0x92, 0x3d, 0x19, 0xe1, 0xc2, 0xd3, 0x3d, 0x99, + 0xba, 0xb6, 0x90, 0xee, 0xc9, 0x34, 0xac, 0x9c, 0xf7, 0x64, 0x02, 0xc9, 0xad, 0x0e, 0xc5, 0x86, + 0x66, 0xf5, 0x64, 0x36, 0x7e, 0x54, 0x9d, 0x40, 0x4f, 0x61, 0x25, 0x0f, 0xbb, 0x87, 0x5e, 0x3a, + 0x00, 0xc4, 0xb0, 0xfe, 0xf2, 0x78, 0xc4, 0x61, 0xc1, 0x18, 0x50, 0x7a, 0x95, 0x89, 0x9e, 0x97, + 0xd5, 0x9d, 0xb3, 0x8a, 0xad, 0xbf, 0x30, 0x8a, 0x2c, 0x2c, 0xe6, 0x3e, 0x94, 0x05, 0x2a, 0x10, + 0x49, 0x2e, 0x30, 0x81, 0x46, 0xac, 0x9f, 0xc8, 0xce, 0x0c, 0x05, 0xbd, 0x09, 0x25, 0x92, 0x8a, + 0x96, 0x93, 0x74, 0x42, 0xc0, 0x4a, 0x3a, 0x23, 0x64, 0x6e, 0xc0, 0x14, 0x83, 0xbb, 0x21, 0xe9, + 0xe0, 0x58, 0x82, 0xe3, 0xd5, 0xeb, 0x59, 0x59, 0xa1, 0x88, 0x16, 0xfb, 0xbf, 0x53, 0x1c, 0xbd, + 0x86, 0x4e, 0x25, 0xdf, 0xe9, 0x97, 0x61, 0x72, 0xf5, 0xd3, 0xb9, 0xf9, 0x71, 0x9b, 0x4d, 0x6c, + 0x26, 0x9f, 0x1d, 0x72, 0x38, 0x92, 0x65, 0xb3, 0xd9, 0x47, 0x2e, 0xac, 0x73, 0xd3, 0x47, 0x32, + 0xe8, 0xf9, 0x5c, 0x7b, 0x97, 0x8a, 0x78, 0x61, 0x14, 0x59, 0x7c, 0x68, 0x24, 0x1f, 0xdc, 0x53, + 0x87, 0x3d, 0x86, 0x99, 0x35, 0x34, 0x72, 0x1e, 0xd9, 0x54, 0x27, 0xd0, 0x1e, 0x1c, 0xc9, 0x78, + 0x85, 0x13, 0xbd, 0x90, 0xef, 0x7f, 0xa5, 0x52, 0x5e, 0x1c, 0x49, 0x17, 0x2f, 0x29, 0x03, 0xb2, + 0x22, 0x97, 0x94, 0x8f, 0x99, 0x91, 0x4b, 0x1a, 0x86, 0x7d, 0xa1, 0x86, 0xc8, 0x7d, 0xc8, 0xb1, + 0x2c, 0x40, 0x42, 0x86, 0x21, 0xa6, 0x3c, 0xc6, 0x1e, 0x1c, 0xc9, 0xd8, 0x89, 0x91, 0x2b, 0x9b, + 0xbf, 0x43, 0x24, 0x57, 0x76, 0xd8, 0x96, 0xce, 0x04, 0xfa, 0x00, 0xd0, 0x7d, 0x1c, 0xc8, 0xa1, + 0x9c, 0x8f, 0xa4, 0x81, 0x9a, 0xdc, 0xf4, 0xc9, 0xb1, 0x4f, 0x69, 0xf7, 0x47, 0x9d, 0xb8, 0xaa, + 0x20, 0x9b, 0xdd, 0x25, 0x4b, 0xed, 0x59, 0xa0, 0xf3, 0xc9, 0x6e, 0xcb, 0xdb, 0xf6, 0xa8, 0x5f, + 0x18, 0x83, 0x32, 0x6c, 0x8b, 0x9d, 0x7c, 0xf1, 0x59, 0x2c, 0x9b, 0xcf, 0xe7, 0x9b, 0x89, 0xbc, + 0x15, 0x91, 0x2e, 0x2f, 0x77, 0x53, 0x22, 0x8c, 0xe7, 0x62, 0xc6, 0x74, 0x26, 0x1f, 0x40, 0x95, + 0x13, 0xcf, 0x65, 0x1a, 0xd0, 0xd7, 0xe1, 0x58, 0xee, 0x9a, 0x09, 0x65, 0xcc, 0x01, 0xf9, 0x0b, + 0xc5, 0xfa, 0xa5, 0x31, 0xa9, 0x45, 0xd9, 0xd7, 0x7e, 0xbf, 0x08, 0xb3, 0x0c, 0xe4, 0xc6, 0x43, + 0xdf, 0x0d, 0x80, 0x08, 0x2f, 0x8a, 0x4e, 0x26, 0xf5, 0x23, 0x81, 0x70, 0xeb, 0xa7, 0xf2, 0xb2, + 0xe3, 0x2e, 0x36, 0x86, 0xc3, 0x94, 0x5d, 0x6c, 0x1a, 0x56, 0x2a, 0xbb, 0xd8, 0x0c, 0x00, 0xa7, + 0x3a, 0x81, 0xde, 0x85, 0x4a, 0x08, 0xfb, 0x93, 0x0d, 0x37, 0x89, 0x5f, 0xac, 0x9f, 0xcc, 0xc9, + 0x8d, 0xd7, 0x2e, 0x86, 0xe6, 0x93, 0x6b, 0x97, 0x46, 0x0a, 0xca, 0xb5, 0xcb, 0x82, 0x01, 0x46, + 0xed, 0x65, 0xb8, 0x8d, 0x8c, 0xf6, 0x4a, 0x38, 0x9e, 0x8c, 0xf6, 0xca, 0x80, 0x0f, 0x75, 0xe2, + 0xee, 0x9d, 0x1f, 0xfd, 0xf4, 0x94, 0xf2, 0xe3, 0x9f, 0x9e, 0x9a, 0xf8, 0xd5, 0x8f, 0x4e, 0x29, + 0x3f, 0xfa, 0xe8, 0x94, 0xf2, 0x2f, 0x1f, 0x9d, 0x52, 0x7e, 0xf2, 0xd1, 0x29, 0xe5, 0x9b, 0xff, + 0x71, 0x6a, 0xe2, 0x03, 0xf5, 0xf1, 0x0d, 0xff, 0xb2, 0xe5, 0x5c, 0xe9, 0x78, 0xd6, 0x25, 0xc3, + 0xb5, 0xae, 0xb8, 0x8f, 0xbb, 0x57, 0x0c, 0xd7, 0xf2, 0xaf, 0x70, 0xb9, 0x57, 0x9e, 0xbc, 0xf2, + 0x68, 0x8a, 0xfe, 0x9f, 0xc4, 0x57, 0xff, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x4c, 0xbb, 0xd2, 0x3f, + 0xe1, 0x72, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -16007,6 +16080,20 @@ func (m *WindowsContainerResources) MarshalToSizedBuffer(dAtA []byte) (int, erro _ = i var l int _ = l + if len(m.AffinityCpus) > 0 { + for iNdEx := len(m.AffinityCpus) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AffinityCpus[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } if m.RootfsSizeInBytes != 0 { i = encodeVarintApi(dAtA, i, uint64(m.RootfsSizeInBytes)) i-- @@ -16035,6 +16122,39 @@ func (m *WindowsContainerResources) MarshalToSizedBuffer(dAtA []byte) (int, erro return len(dAtA) - i, nil } +func (m *WindowsCpuGroupAffinity) 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 *WindowsCpuGroupAffinity) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *WindowsCpuGroupAffinity) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.CpuGroup != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.CpuGroup)) + i-- + dAtA[i] = 0x10 + } + if m.CpuMask != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.CpuMask)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *ContainerMetadata) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -21878,6 +21998,27 @@ func (m *WindowsContainerResources) Size() (n int) { if m.RootfsSizeInBytes != 0 { n += 1 + sovApi(uint64(m.RootfsSizeInBytes)) } + if len(m.AffinityCpus) > 0 { + for _, e := range m.AffinityCpus { + l = e.Size() + n += 1 + l + sovApi(uint64(l)) + } + } + return n +} + +func (m *WindowsCpuGroupAffinity) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.CpuMask != 0 { + n += 1 + sovApi(uint64(m.CpuMask)) + } + if m.CpuGroup != 0 { + n += 1 + sovApi(uint64(m.CpuGroup)) + } return n } @@ -24643,12 +24784,29 @@ func (this *WindowsContainerResources) String() string { if this == nil { return "nil" } + repeatedStringForAffinityCpus := "[]*WindowsCpuGroupAffinity{" + for _, f := range this.AffinityCpus { + repeatedStringForAffinityCpus += strings.Replace(f.String(), "WindowsCpuGroupAffinity", "WindowsCpuGroupAffinity", 1) + "," + } + repeatedStringForAffinityCpus += "}" s := strings.Join([]string{`&WindowsContainerResources{`, `CpuShares:` + fmt.Sprintf("%v", this.CpuShares) + `,`, `CpuCount:` + fmt.Sprintf("%v", this.CpuCount) + `,`, `CpuMaximum:` + fmt.Sprintf("%v", this.CpuMaximum) + `,`, `MemoryLimitInBytes:` + fmt.Sprintf("%v", this.MemoryLimitInBytes) + `,`, `RootfsSizeInBytes:` + fmt.Sprintf("%v", this.RootfsSizeInBytes) + `,`, + `AffinityCpus:` + repeatedStringForAffinityCpus + `,`, + `}`, + }, "") + return s +} +func (this *WindowsCpuGroupAffinity) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&WindowsCpuGroupAffinity{`, + `CpuMask:` + fmt.Sprintf("%v", this.CpuMask) + `,`, + `CpuGroup:` + fmt.Sprintf("%v", this.CpuGroup) + `,`, `}`, }, "") return s @@ -36791,6 +36949,128 @@ func (m *WindowsContainerResources) Unmarshal(dAtA []byte) error { break } } + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AffinityCpus", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AffinityCpus = append(m.AffinityCpus, &WindowsCpuGroupAffinity{}) + if err := m.AffinityCpus[len(m.AffinityCpus)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *WindowsCpuGroupAffinity) 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 ErrIntOverflowApi + } + 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: WindowsCpuGroupAffinity: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: WindowsCpuGroupAffinity: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CpuMask", wireType) + } + m.CpuMask = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CpuMask |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CpuGroup", wireType) + } + m.CpuGroup = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CpuGroup |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) diff --git a/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto b/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto index b77077ebfcf..fec760e6a63 100644 --- a/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto +++ b/staging/src/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto @@ -1077,6 +1077,19 @@ message WindowsContainerResources { int64 memory_limit_in_bytes = 4; // Specifies the size of the rootfs / scratch space in bytes to be configured for this container. Default: 0 (not specified). int64 rootfs_size_in_bytes = 5; + // Optionally specifies the set of CPUs to affinitize for this container. + repeated WindowsCpuGroupAffinity affinity_cpus = 6; +} + +// WindowsCpuGroupAffinity specifies the CPU mask and group to affinitize. +// This is similar to the following _GROUP_AFFINITY structure: +// https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/miniport/ns-miniport-_group_affinity +message WindowsCpuGroupAffinity { + // CPU mask relative to this CPU group. + uint64 cpu_mask = 1; + // Processor group the mask refers to, as returned by + // GetLogicalProcessorInformationEx. + uint32 cpu_group = 2; } // ContainerMetadata holds all necessary information for building the container From 09817b320f02f701da1fe8f7dfb13d4017f348c0 Mon Sep 17 00:00:00 2001 From: Filipe Xavier Date: Wed, 6 Nov 2024 09:52:32 -0300 Subject: [PATCH 4/6] move generate podsandbox request to platform specific --- pkg/kubelet/kuberuntime/kuberuntime_container.go | 7 +++---- pkg/kubelet/kuberuntime/kuberuntime_container_linux.go | 9 +++++++++ .../kuberuntime/kuberuntime_container_unsupported.go | 7 ++++++- pkg/kubelet/kuberuntime/kuberuntime_container_windows.go | 7 +++++++ 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container.go b/pkg/kubelet/kuberuntime/kuberuntime_container.go index 4851cb291b6..b57148c0213 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container.go @@ -413,10 +413,9 @@ func (m *kubeGenericRuntimeManager) updateContainerResources(pod *v1.Pod, contai } func (m *kubeGenericRuntimeManager) updatePodSandboxResources(sandboxID string, pod *v1.Pod) error { - podResourcesRequest := &runtimeapi.UpdatePodSandboxResourcesRequest{ - PodSandboxId: sandboxID, - Overhead: m.convertOverheadToLinuxResources(pod), - Resources: m.calculateSandboxResources(pod), + podResourcesRequest := m.generateUpdatePodSandboxResourcesRequest(sandboxID, pod) + if podResourcesRequest == nil { + return fmt.Errorf("sandboxID %q updatePodSandboxResources failed: cannot generate resources config", sandboxID) } ctx := context.Background() diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go b/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go index 662bb8f98f3..72fc62a2727 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go @@ -248,6 +248,15 @@ func (m *kubeGenericRuntimeManager) generateContainerResources(pod *v1.Pod, cont } } +// generateUpdatePodSandboxResourcesRequest generates platform specific (linux) podsandox resources config for runtime +func (m *kubeGenericRuntimeManager) generateUpdatePodSandboxResourcesRequest(sandboxID string, pod *v1.Pod) *runtimeapi.UpdatePodSandboxResourcesRequest { + return &runtimeapi.UpdatePodSandboxResourcesRequest{ + PodSandboxId: sandboxID, + Overhead: m.convertOverheadToLinuxResources(pod), + Resources: m.calculateSandboxResources(pod), + } +} + // calculateLinuxResources will create the linuxContainerResources type based on the provided CPU and memory resource requests, limits func (m *kubeGenericRuntimeManager) calculateLinuxResources(cpuRequest, cpuLimit, memoryLimit *resource.Quantity, disableCPUQuota bool) *runtimeapi.LinuxContainerResources { resources := runtimeapi.LinuxContainerResources{} diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go b/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go index 55465475847..81a334b933a 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go @@ -20,7 +20,7 @@ limitations under the License. package kuberuntime import ( - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" ) @@ -35,6 +35,11 @@ func (m *kubeGenericRuntimeManager) generateContainerResources(pod *v1.Pod, cont return nil } +// generateUpdatePodSandboxResourcesRequest generates platform specific podsandox resources config for runtime +func (m *kubeGenericRuntimeManager) generateUpdatePodSandboxResourcesRequest(sandboxID string, pod *v1.Pod) *runtimeapi.UpdatePodSandboxResourcesRequest { + return nil +} + func toKubeContainerResources(statusResources *runtimeapi.ContainerResources) *kubecontainer.ContainerResources { return nil } diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go b/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go index eb64c27db18..9da32365df8 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go @@ -47,6 +47,13 @@ func (m *kubeGenericRuntimeManager) generateContainerResources(pod *v1.Pod, cont } } +// generateUpdatePodSandboxResourcesRequest generates platform specific podsandox resources config for runtime +func (m *kubeGenericRuntimeManager) generateUpdatePodSandboxResourcesRequest(sandboxID string, pod *v1.Pod) *runtimeapi.UpdatePodSandboxResourcesRequest { + return &runtimeapi.UpdatePodSandboxResourcesRequest{ + PodSandboxId: sandboxID, + } +} + // generateWindowsContainerResources generates windows container resources config for runtime func (m *kubeGenericRuntimeManager) generateWindowsContainerResources(pod *v1.Pod, container *v1.Container) *runtimeapi.WindowsContainerResources { wcr := m.calculateWindowsResources(container.Resources.Limits.Cpu(), container.Resources.Limits.Memory()) From dc8dc31442182a821b595dda0e2a327a3e28fa8b Mon Sep 17 00:00:00 2001 From: Filipe Xavier Date: Sat, 22 Feb 2025 12:08:23 -0300 Subject: [PATCH 5/6] fix error treatment and remove annotations from proto --- pkg/kubelet/kuberuntime/kuberuntime_container.go | 5 +++-- pkg/kubelet/kuberuntime/kuberuntime_manager.go | 11 +++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container.go b/pkg/kubelet/kuberuntime/kuberuntime_container.go index b57148c0213..b148f07f757 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container.go @@ -423,11 +423,12 @@ func (m *kubeGenericRuntimeManager) updatePodSandboxResources(sandboxID string, if err != nil { stat, _ := grpcstatus.FromError(err) if stat.Code() == codes.Unimplemented { - klog.ErrorS(err, "updatePodSandboxResources failed: method unimplemented on runtime service", "sandboxID", sandboxID) + klog.InfoS("updatePodSandboxResources failed: method unimplemented on runtime service", "sandboxID", sandboxID) return nil } + klog.ErrorS(err, "updatePodSandboxResources failed", "sandboxID", sandboxID) } - return err + return nil } // makeDevices generates container devices for kubelet runtime v1. diff --git a/pkg/kubelet/kuberuntime/kuberuntime_manager.go b/pkg/kubelet/kuberuntime/kuberuntime_manager.go index 20c49327844..6d2d6e629c7 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_manager.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_manager.go @@ -747,6 +747,7 @@ func (m *kubeGenericRuntimeManager) doPodResizeAction(pod *v1.Pod, podContainerC // partially actuated. defer m.runtimeHelper.SetPodWatchCondition(pod.UID, "doPodResizeAction", func(*kubecontainer.PodStatus) bool { return true }) + anyResizeDone := false if len(podContainerChanges.ContainersToUpdate[v1.ResourceMemory]) > 0 || podContainerChanges.UpdatePodResources { currentPodMemoryConfig, err := pcm.GetPodCgroupConfig(pod, v1.ResourceMemory) if err != nil { @@ -775,9 +776,7 @@ func (m *kubeGenericRuntimeManager) doPodResizeAction(pod *v1.Pod, podContainerC result.Fail(errResize) return } - if errUpdate := m.updatePodSandboxResources(podContainerChanges.SandboxID, pod); errUpdate != nil { - klog.ErrorS(err, "updatePodSandboxResources failed", "pod", pod.Name) - } + anyResizeDone = true } if len(podContainerChanges.ContainersToUpdate[v1.ResourceCPU]) > 0 || podContainerChanges.UpdatePodResources { if podResources.CPUShares == nil { @@ -804,8 +803,12 @@ func (m *kubeGenericRuntimeManager) doPodResizeAction(pod *v1.Pod, podContainerC result.Fail(errResize) return } + anyResizeDone = true + } + + if anyResizeDone { if errUpdate := m.updatePodSandboxResources(podContainerChanges.SandboxID, pod); errUpdate != nil { - klog.ErrorS(err, "updatePodSandboxResources failed", "pod", pod.Name) + klog.ErrorS(errUpdate, "updatePodSandboxResources failed", "pod", pod.Name) } } } From 41e3efdb60a46662a9e7f02fc848b5b6c0c7254b Mon Sep 17 00:00:00 2001 From: Filipe Xavier Date: Fri, 28 Feb 2025 10:48:27 -0300 Subject: [PATCH 6/6] change doPodResizeAction to call updatePodSandBoxResources inside setPodCgroupConfig --- pkg/kubelet/kuberuntime/helpers.go | 84 ++++ pkg/kubelet/kuberuntime/helpers_linux.go | 41 +- pkg/kubelet/kuberuntime/helpers_linux_test.go | 228 +++++++++ pkg/kubelet/kuberuntime/helpers_test.go | 89 ++++ .../kuberuntime/instrumented_services.go | 2 +- .../kuberuntime/kuberuntime_container.go | 9 +- .../kuberuntime_container_linux.go | 6 +- .../kuberuntime_container_linux_test.go | 444 ++++++++++++++++++ .../kuberuntime/kuberuntime_container_test.go | 36 -- .../kuberuntime_container_unsupported.go | 3 +- .../kuberuntime_container_windows.go | 7 +- .../kuberuntime/kuberuntime_manager.go | 71 ++- 12 files changed, 935 insertions(+), 85 deletions(-) diff --git a/pkg/kubelet/kuberuntime/helpers.go b/pkg/kubelet/kuberuntime/helpers.go index 127a187f228..172110e8882 100644 --- a/pkg/kubelet/kuberuntime/helpers.go +++ b/pkg/kubelet/kuberuntime/helpers.go @@ -28,6 +28,7 @@ import ( "k8s.io/apimachinery/pkg/types" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" "k8s.io/klog/v2" + "k8s.io/kubernetes/pkg/kubelet/cm" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/security/apparmor" ) @@ -337,3 +338,86 @@ func getAppArmorProfile(pod *v1.Pod, container *v1.Container) (*runtimeapi.Secur return securityProfile, deprecatedProfile, nil } + +func mergeResourceConfig(source, update *cm.ResourceConfig) *cm.ResourceConfig { + if source == nil { + return update + } + if update == nil { + return source + } + + merged := *source + + if update.Memory != nil { + merged.Memory = update.Memory + } + if update.CPUSet.Size() > 0 { + merged.CPUSet = update.CPUSet + } + if update.CPUShares != nil { + merged.CPUShares = update.CPUShares + } + if update.CPUQuota != nil { + merged.CPUQuota = update.CPUQuota + } + if update.CPUPeriod != nil { + merged.CPUPeriod = update.CPUPeriod + } + if update.PidsLimit != nil { + merged.PidsLimit = update.PidsLimit + } + + if update.HugePageLimit != nil { + if merged.HugePageLimit == nil { + merged.HugePageLimit = make(map[int64]int64) + } + for k, v := range update.HugePageLimit { + merged.HugePageLimit[k] = v + } + } + + if update.Unified != nil { + if merged.Unified == nil { + merged.Unified = make(map[string]string) + } + for k, v := range update.Unified { + merged.Unified[k] = v + } + } + + return &merged +} + +func convertResourceConfigToLinuxContainerResources(rc *cm.ResourceConfig) *runtimeapi.LinuxContainerResources { + if rc == nil { + return nil + } + + lcr := &runtimeapi.LinuxContainerResources{} + + if rc.CPUPeriod != nil { + lcr.CpuPeriod = int64(*rc.CPUPeriod) + } + if rc.CPUQuota != nil { + lcr.CpuQuota = *rc.CPUQuota + } + if rc.CPUShares != nil { + lcr.CpuShares = int64(*rc.CPUShares) + } + if rc.Memory != nil { + lcr.MemoryLimitInBytes = *rc.Memory + } + if rc.CPUSet.Size() > 0 { + lcr.CpusetCpus = rc.CPUSet.String() + } + + if rc.Unified != nil { + lcr.Unified = make(map[string]string, len(rc.Unified)) + for k, v := range rc.Unified { + lcr.Unified[k] = v + } + } + + return lcr +} diff --git a/pkg/kubelet/kuberuntime/helpers_linux.go b/pkg/kubelet/kuberuntime/helpers_linux.go index ef77faec26c..ab3b3405625 100644 --- a/pkg/kubelet/kuberuntime/helpers_linux.go +++ b/pkg/kubelet/kuberuntime/helpers_linux.go @@ -20,8 +20,10 @@ limitations under the License. package kuberuntime import ( - "k8s.io/kubernetes/pkg/kubelet/cm" "math" + + v1 "k8s.io/api/core/v1" + "k8s.io/kubernetes/pkg/kubelet/cm" ) const ( @@ -77,3 +79,40 @@ func quotaToMilliCPU(quota int64, period int64) int64 { } return (quota * milliCPUToCPU) / period } + +func subtractOverheadFromResourceConfig(resCfg *cm.ResourceConfig, pod *v1.Pod) *cm.ResourceConfig { + if resCfg == nil { + return nil + } + + rc := *resCfg + + if pod.Spec.Overhead != nil { + if cpu, found := pod.Spec.Overhead[v1.ResourceCPU]; found { + if rc.CPUPeriod != nil { + cpuPeriod := int64(*rc.CPUPeriod) + cpuQuota := *rc.CPUQuota - cm.MilliCPUToQuota(cpu.MilliValue(), cpuPeriod) + rc.CPUQuota = &cpuQuota + } + + if rc.CPUShares != nil { + totalCPUMilli := sharesToMilliCPU(int64(*rc.CPUShares)) + cpuShares := cm.MilliCPUToShares(totalCPUMilli - cpu.MilliValue()) + rc.CPUShares = &cpuShares + } + } + + if memory, found := pod.Spec.Overhead[v1.ResourceMemory]; found { + if rc.Memory != nil { + currMemory := *rc.Memory + + if mem, ok := memory.AsInt64(); ok { + currMemory -= mem + } + + rc.Memory = &currMemory + } + } + } + return &rc +} diff --git a/pkg/kubelet/kuberuntime/helpers_linux_test.go b/pkg/kubelet/kuberuntime/helpers_linux_test.go index 33b6526c931..a5157244f2d 100644 --- a/pkg/kubelet/kuberuntime/helpers_linux_test.go +++ b/pkg/kubelet/kuberuntime/helpers_linux_test.go @@ -24,6 +24,7 @@ import ( "github.com/stretchr/testify/require" v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/api/resource" utilfeature "k8s.io/apiserver/pkg/util/feature" featuregatetesting "k8s.io/component-base/featuregate/testing" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" @@ -494,3 +495,230 @@ func TestQuotaToMilliCPU(t *testing.T) { }) } } + +func TestSubtractOverheadFromResourceConfig(t *testing.T) { + podCPUMilli := resource.MustParse("200m") + podMemory := resource.MustParse("256Mi") + podOverheadCPUMilli := resource.MustParse("100m") + podOverheadMemory := resource.MustParse("64Mi") + + resCfg := &cm.ResourceConfig{ + Memory: int64Ptr(335544320), + CPUShares: uint64Ptr(306), + CPUPeriod: uint64Ptr(100000), + CPUQuota: int64Ptr(30000), + } + + for _, tc := range []struct { + name string + cfgInput *cm.ResourceConfig + pod *v1.Pod + expected *cm.ResourceConfig + }{ + { + name: "withoutOverhead", + cfgInput: resCfg, + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podCPUMilli, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podCPUMilli, + v1.ResourceMemory: podMemory, + }, + }, + }, + }, + }, + }, + expected: &cm.ResourceConfig{ + Memory: int64Ptr(335544320), + CPUShares: uint64Ptr(306), + CPUPeriod: uint64Ptr(100000), + CPUQuota: int64Ptr(30000), + }, + }, + { + name: "withoutCPUOverhead", + cfgInput: resCfg, + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podCPUMilli, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podCPUMilli, + v1.ResourceMemory: podMemory, + }, + }, + }, + }, + Overhead: v1.ResourceList{ + v1.ResourceMemory: podOverheadMemory, + }, + }, + }, + expected: &cm.ResourceConfig{ + Memory: int64Ptr(268435456), + CPUShares: uint64Ptr(306), + CPUPeriod: uint64Ptr(100000), + CPUQuota: int64Ptr(30000), + }, + }, + { + name: "withoutMemoryOverhead", + cfgInput: resCfg, + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podCPUMilli, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podCPUMilli, + v1.ResourceMemory: podMemory, + }, + }, + }, + }, + Overhead: v1.ResourceList{ + v1.ResourceCPU: podOverheadCPUMilli, + }, + }, + }, + expected: &cm.ResourceConfig{ + Memory: int64Ptr(335544320), + CPUShares: uint64Ptr(203), + CPUPeriod: uint64Ptr(100000), + CPUQuota: int64Ptr(20000), + }, + }, + { + name: "withoutCPUPeriod", + cfgInput: &cm.ResourceConfig{ + Memory: int64Ptr(335544320), + CPUShares: uint64Ptr(306), + }, + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podCPUMilli, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podCPUMilli, + v1.ResourceMemory: podMemory, + }, + }, + }, + }, + Overhead: v1.ResourceList{ + v1.ResourceCPU: podOverheadCPUMilli, + }, + }, + }, + expected: &cm.ResourceConfig{ + Memory: int64Ptr(335544320), + CPUShares: uint64Ptr(203), + }, + }, + { + name: "withoutCPUShares", + cfgInput: &cm.ResourceConfig{ + Memory: int64Ptr(335544320), + CPUPeriod: uint64Ptr(100000), + CPUQuota: int64Ptr(30000), + }, + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podCPUMilli, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podCPUMilli, + v1.ResourceMemory: podMemory, + }, + }, + }, + }, + Overhead: v1.ResourceList{ + v1.ResourceCPU: podOverheadCPUMilli, + }, + }, + }, + expected: &cm.ResourceConfig{ + Memory: int64Ptr(335544320), + CPUPeriod: uint64Ptr(100000), + CPUQuota: int64Ptr(20000), + }, + }, + { + name: "withOverhead", + cfgInput: resCfg, + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podCPUMilli, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podCPUMilli, + v1.ResourceMemory: podMemory, + }, + }, + }, + }, + Overhead: v1.ResourceList{ + v1.ResourceCPU: podOverheadCPUMilli, + v1.ResourceMemory: podOverheadMemory, + }, + }, + }, + expected: &cm.ResourceConfig{ + Memory: int64Ptr(268435456), + CPUShares: uint64Ptr(203), + CPUPeriod: uint64Ptr(100000), + CPUQuota: int64Ptr(20000), + }, + }, + } { + t.Run(tc.name, func(t *testing.T) { + gotCfg := subtractOverheadFromResourceConfig(tc.cfgInput, tc.pod) + + if tc.expected.CPUPeriod != nil && *gotCfg.CPUPeriod != *tc.expected.CPUPeriod { + t.Errorf("Test %s: expected CPUPeriod %v, but got %v", tc.name, *tc.expected.CPUPeriod, *gotCfg.CPUPeriod) + } + if tc.expected.CPUQuota != nil && *gotCfg.CPUQuota != *tc.expected.CPUQuota { + t.Errorf("Test %s: expected CPUQuota %v, but got %v", tc.name, *tc.expected.CPUQuota, *gotCfg.CPUQuota) + } + if tc.expected.CPUShares != nil && *gotCfg.CPUShares != *tc.expected.CPUShares { + t.Errorf("Test %s: expected CPUShares %v, but got %v", tc.name, *tc.expected.CPUShares, *gotCfg.CPUShares) + } + if tc.expected.Memory != nil && *gotCfg.Memory != *tc.expected.Memory { + t.Errorf("Test %s: expected Memory %v, but got %v", tc.name, *tc.expected.Memory, *gotCfg.Memory) + } + }) + } +} diff --git a/pkg/kubelet/kuberuntime/helpers_test.go b/pkg/kubelet/kuberuntime/helpers_test.go index 8cc9c2956e4..d7213f08587 100644 --- a/pkg/kubelet/kuberuntime/helpers_test.go +++ b/pkg/kubelet/kuberuntime/helpers_test.go @@ -30,6 +30,7 @@ import ( runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" runtimetesting "k8s.io/cri-api/pkg/apis/testing" "k8s.io/kubernetes/pkg/features" + "k8s.io/kubernetes/pkg/kubelet/cm" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/utils/ptr" ) @@ -40,6 +41,14 @@ func (f podStatusProviderFunc) GetPodStatus(_ context.Context, uid types.UID, na return f(uid, name, namespace) } +func int64Ptr(i int64) *int64 { + return &i +} + +func uint64Ptr(i uint64) *uint64 { + return &i +} + func TestIsInitContainerFailed(t *testing.T) { tests := []struct { status *kubecontainer.Status @@ -441,3 +450,83 @@ func TestGetAppArmorProfile(t *testing.T) { }) } } + +func TestMergeResourceConfig(t *testing.T) { + tests := []struct { + name string + source *cm.ResourceConfig + update *cm.ResourceConfig + expected *cm.ResourceConfig + }{ + { + name: "merge all fields", + source: &cm.ResourceConfig{Memory: int64Ptr(1024), CPUShares: uint64Ptr(2)}, + update: &cm.ResourceConfig{Memory: int64Ptr(2048), CPUQuota: int64Ptr(5000)}, + expected: &cm.ResourceConfig{ + Memory: int64Ptr(2048), + CPUShares: uint64Ptr(2), + CPUQuota: int64Ptr(5000), + }, + }, + { + name: "merge HugePageLimit and Unified", + source: &cm.ResourceConfig{HugePageLimit: map[int64]int64{2048: 1024}, Unified: map[string]string{"key1": "value1"}}, + update: &cm.ResourceConfig{HugePageLimit: map[int64]int64{4096: 2048}, Unified: map[string]string{"key1": "newValue1", "key2": "value2"}}, + expected: &cm.ResourceConfig{ + HugePageLimit: map[int64]int64{2048: 1024, 4096: 2048}, + Unified: map[string]string{"key1": "newValue1", "key2": "value2"}, + }, + }, + { + name: "update nil source", + source: nil, + update: &cm.ResourceConfig{Memory: int64Ptr(4096)}, + expected: &cm.ResourceConfig{ + Memory: int64Ptr(4096), + }, + }, + { + name: "update nil update", + source: &cm.ResourceConfig{Memory: int64Ptr(1024)}, + update: nil, + expected: &cm.ResourceConfig{ + Memory: int64Ptr(1024), + }, + }, + { + name: "update empty source", + source: &cm.ResourceConfig{}, + update: &cm.ResourceConfig{Memory: int64Ptr(8192)}, + expected: &cm.ResourceConfig{ + Memory: int64Ptr(8192), + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + merged := mergeResourceConfig(tt.source, tt.update) + + assert.Equal(t, tt.expected, merged) + }) + } +} + +func TestConvertResourceConfigToLinuxContainerResources(t *testing.T) { + resCfg := &cm.ResourceConfig{ + Memory: int64Ptr(2048), + CPUShares: uint64Ptr(2), + CPUPeriod: uint64Ptr(10000), + CPUQuota: int64Ptr(5000), + HugePageLimit: map[int64]int64{4096: 2048}, + Unified: map[string]string{"key1": "value1"}, + } + + lcr := convertResourceConfigToLinuxContainerResources(resCfg) + + assert.Equal(t, int64(*resCfg.CPUPeriod), lcr.CpuPeriod) + assert.Equal(t, *resCfg.CPUQuota, lcr.CpuQuota) + assert.Equal(t, int64(*resCfg.CPUShares), lcr.CpuShares) + assert.Equal(t, *resCfg.Memory, lcr.MemoryLimitInBytes) + assert.Equal(t, resCfg.Unified, lcr.Unified) +} diff --git a/pkg/kubelet/kuberuntime/instrumented_services.go b/pkg/kubelet/kuberuntime/instrumented_services.go index 1cd70e7d994..7d2d2ba4b72 100644 --- a/pkg/kubelet/kuberuntime/instrumented_services.go +++ b/pkg/kubelet/kuberuntime/instrumented_services.go @@ -273,7 +273,7 @@ func (in instrumentedRuntimeService) PortForward(ctx context.Context, req *runti } func (in instrumentedRuntimeService) UpdatePodSandboxResources(ctx context.Context, req *runtimeapi.UpdatePodSandboxResourcesRequest) (*runtimeapi.UpdatePodSandboxResourcesResponse, error) { - const operation = "update_podsandbox" + const operation = "update_podsandbox_resources" defer recordOperation(operation, time.Now()) resp, err := in.service.UpdatePodSandboxResources(ctx, req) diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container.go b/pkg/kubelet/kuberuntime/kuberuntime_container.go index b148f07f757..b6406f776db 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container.go @@ -53,6 +53,7 @@ import ( kubelettypes "k8s.io/kubelet/pkg/types" podutil "k8s.io/kubernetes/pkg/api/v1/pod" "k8s.io/kubernetes/pkg/features" + "k8s.io/kubernetes/pkg/kubelet/cm" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/events" proberesults "k8s.io/kubernetes/pkg/kubelet/prober/results" @@ -412,8 +413,8 @@ func (m *kubeGenericRuntimeManager) updateContainerResources(pod *v1.Pod, contai return err } -func (m *kubeGenericRuntimeManager) updatePodSandboxResources(sandboxID string, pod *v1.Pod) error { - podResourcesRequest := m.generateUpdatePodSandboxResourcesRequest(sandboxID, pod) +func (m *kubeGenericRuntimeManager) updatePodSandboxResources(sandboxID string, pod *v1.Pod, podResources *cm.ResourceConfig) error { + podResourcesRequest := m.generateUpdatePodSandboxResourcesRequest(sandboxID, pod, podResources) if podResourcesRequest == nil { return fmt.Errorf("sandboxID %q updatePodSandboxResources failed: cannot generate resources config", sandboxID) } @@ -423,10 +424,10 @@ func (m *kubeGenericRuntimeManager) updatePodSandboxResources(sandboxID string, if err != nil { stat, _ := grpcstatus.FromError(err) if stat.Code() == codes.Unimplemented { - klog.InfoS("updatePodSandboxResources failed: method unimplemented on runtime service", "sandboxID", sandboxID) + klog.V(3).InfoS("updatePodSandboxResources failed: unimplemented; this call is best-effort: proceeding with resize", "sandboxID", sandboxID) return nil } - klog.ErrorS(err, "updatePodSandboxResources failed", "sandboxID", sandboxID) + return fmt.Errorf("updatePodSandboxResources failed for sanboxID %q: %w", sandboxID, err) } return nil } diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go b/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go index 72fc62a2727..d44432b7e61 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go @@ -249,11 +249,13 @@ func (m *kubeGenericRuntimeManager) generateContainerResources(pod *v1.Pod, cont } // generateUpdatePodSandboxResourcesRequest generates platform specific (linux) podsandox resources config for runtime -func (m *kubeGenericRuntimeManager) generateUpdatePodSandboxResourcesRequest(sandboxID string, pod *v1.Pod) *runtimeapi.UpdatePodSandboxResourcesRequest { +func (m *kubeGenericRuntimeManager) generateUpdatePodSandboxResourcesRequest(sandboxID string, pod *v1.Pod, podResources *cm.ResourceConfig) *runtimeapi.UpdatePodSandboxResourcesRequest { + + podResourcesWithoutOverhead := subtractOverheadFromResourceConfig(podResources, pod) return &runtimeapi.UpdatePodSandboxResourcesRequest{ PodSandboxId: sandboxID, Overhead: m.convertOverheadToLinuxResources(pod), - Resources: m.calculateSandboxResources(pod), + Resources: convertResourceConfigToLinuxContainerResources(podResourcesWithoutOverhead), } } diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go b/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go index d4bd959ab6d..4d5e75c793a 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go @@ -27,6 +27,7 @@ import ( "reflect" "strconv" "testing" + "time" "k8s.io/kubernetes/pkg/kubelet/cm" "k8s.io/kubernetes/pkg/kubelet/types" @@ -34,6 +35,7 @@ import ( "github.com/google/go-cmp/cmp" libcontainercgroups "github.com/opencontainers/cgroups" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -1259,6 +1261,448 @@ func TestGenerateLinuxContainerResourcesWithSwap(t *testing.T) { } } +func TestGenerateUpdatePodSandboxResourcesRequest(t *testing.T) { + _, _, m, err := createTestRuntimeManager() + require.NoError(t, err) + + podRequestCPU := resource.MustParse("400m") + podLimitCPU := resource.MustParse("800m") + podRequestMemory := resource.MustParse("128Mi") + podLimitMemory := resource.MustParse("256Mi") + podOverheadCPU := resource.MustParse("100m") + podOverheadMemory := resource.MustParse("64Mi") + enforceCPULimits := true + m.cpuCFSQuota = true + + for _, tc := range []struct { + name string + qosClass v1.PodQOSClass + pod *v1.Pod + sandboxID string + enforceCPULimits bool + }{ + // Best effort pod (no resources defined) + { + name: "Best effort", + qosClass: v1.PodQOSBestEffort, + enforceCPULimits: enforceCPULimits, + sandboxID: "1", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{}, + Limits: v1.ResourceList{}, + }, + }, + }, + Overhead: v1.ResourceList{}, + }, + }, + }, + { + name: "Best effort with overhead", + qosClass: v1.PodQOSBestEffort, + enforceCPULimits: enforceCPULimits, + sandboxID: "2", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{}, + Limits: v1.ResourceList{}, + }, + }, + }, + Overhead: v1.ResourceList{ + v1.ResourceCPU: podOverheadCPU, + v1.ResourceMemory: podOverheadMemory, + }, + }, + }, + }, + // Guaranteed pod + { + name: "Guaranteed", + qosClass: v1.PodQOSGuaranteed, + enforceCPULimits: enforceCPULimits, + sandboxID: "3", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podRequestCPU, + v1.ResourceMemory: podLimitMemory, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podRequestCPU, + v1.ResourceMemory: podLimitMemory, + }, + }, + }, + }, + }, + }, + }, + { + name: "Guaranteed with overhead", + qosClass: v1.PodQOSGuaranteed, + enforceCPULimits: enforceCPULimits, + sandboxID: "4", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podRequestCPU, + v1.ResourceMemory: podLimitMemory, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podRequestCPU, + v1.ResourceMemory: podLimitMemory, + }, + }, + }, + }, + Overhead: v1.ResourceList{ + v1.ResourceCPU: podOverheadCPU, + v1.ResourceMemory: podOverheadMemory, + }, + }, + }, + }, + // Burstable pods that leave some resources unspecified (e.g. only CPU/Mem requests) + { + name: "Burstable only cpu", + qosClass: v1.PodQOSBurstable, + enforceCPULimits: enforceCPULimits, + sandboxID: "5", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podRequestCPU, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podLimitCPU, + }, + }, + }, + }, + }, + }, + }, + { + name: "Burstable only cpu with overhead", + qosClass: v1.PodQOSBurstable, + enforceCPULimits: enforceCPULimits, + sandboxID: "6", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podRequestCPU, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podLimitCPU, + }, + }, + }, + }, + Overhead: v1.ResourceList{ + v1.ResourceCPU: podOverheadCPU, + }, + }, + }, + }, + { + name: "Burstable only memory", + qosClass: v1.PodQOSBurstable, + enforceCPULimits: enforceCPULimits, + sandboxID: "7", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceMemory: podRequestMemory, + }, + Limits: v1.ResourceList{ + v1.ResourceMemory: podLimitMemory, + }, + }, + }, + }, + }, + }, + }, + { + name: "Burstable only memory with overhead", + qosClass: v1.PodQOSBurstable, + enforceCPULimits: enforceCPULimits, + sandboxID: "8", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceMemory: podRequestMemory, + }, + Limits: v1.ResourceList{ + v1.ResourceMemory: podLimitMemory, + }, + }, + }, + }, + Overhead: v1.ResourceList{ + v1.ResourceMemory: podOverheadMemory, + }, + }, + }, + }, + // With init container + { + name: "Pod with init container", + qosClass: v1.PodQOSGuaranteed, + enforceCPULimits: enforceCPULimits, + sandboxID: "9", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + InitContainers: []v1.Container{ + { + Name: "init", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podOverheadCPU, + v1.ResourceMemory: podOverheadMemory, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podOverheadCPU, + v1.ResourceMemory: podOverheadMemory, + }, + }, + }, + }, + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podRequestCPU, + v1.ResourceMemory: podLimitMemory, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podRequestCPU, + v1.ResourceMemory: podLimitMemory, + }, + }, + }, + }, + }, + }, + }, + { + name: "Pod with init container and overhead", + qosClass: v1.PodQOSGuaranteed, + enforceCPULimits: enforceCPULimits, + sandboxID: "10", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + InitContainers: []v1.Container{ + { + Name: "init", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podOverheadCPU, + v1.ResourceMemory: podOverheadMemory, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podOverheadCPU, + v1.ResourceMemory: podOverheadMemory, + }, + }, + }, + }, + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podRequestCPU, + v1.ResourceMemory: podLimitMemory, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podRequestCPU, + v1.ResourceMemory: podLimitMemory, + }, + }, + }, + }, + Overhead: v1.ResourceList{ + v1.ResourceCPU: podOverheadCPU, + v1.ResourceMemory: podOverheadMemory, + }, + }, + }, + }, + // With a sidecar container + { + name: "Pod with sidecar container", + qosClass: v1.PodQOSBurstable, + enforceCPULimits: enforceCPULimits, + sandboxID: "11", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podRequestCPU, + v1.ResourceMemory: podRequestMemory, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podLimitCPU, + v1.ResourceMemory: podLimitMemory, + }, + }, + }, + { + Name: "bar", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podRequestCPU, + v1.ResourceMemory: podRequestMemory, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podLimitCPU, + v1.ResourceMemory: podLimitMemory, + }, + }, + }, + }, + }, + }, + }, + { + name: "Pod with sidecar container and overhead", + qosClass: v1.PodQOSBurstable, + enforceCPULimits: enforceCPULimits, + sandboxID: "11", + pod: &v1.Pod{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podRequestCPU, + v1.ResourceMemory: podRequestMemory, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podLimitCPU, + v1.ResourceMemory: podLimitMemory, + }, + }, + }, + { + Name: "bar", + Resources: v1.ResourceRequirements{ + Requests: v1.ResourceList{ + v1.ResourceCPU: podRequestCPU, + v1.ResourceMemory: podRequestMemory, + }, + Limits: v1.ResourceList{ + v1.ResourceCPU: podLimitCPU, + v1.ResourceMemory: podLimitMemory, + }, + }, + }, + }, + Overhead: v1.ResourceList{ + v1.ResourceCPU: podOverheadCPU, + v1.ResourceMemory: podOverheadMemory, + }, + }, + }, + }, + } { + t.Run(tc.name, func(t *testing.T) { + expectedLcr := m.calculateSandboxResources(tc.pod) + expectedLcrOverhead := m.convertOverheadToLinuxResources(tc.pod) + + podResourcesCfg := cm.ResourceConfigForPod(tc.pod, tc.enforceCPULimits, uint64((m.cpuCFSQuotaPeriod.Duration)/time.Microsecond), false) + assert.NotNil(t, podResourcesCfg, "podResourcesCfg is expected to be not nil") + + if podResourcesCfg.CPUPeriod == nil { + expectedLcr.CpuPeriod = 0 + } + + updatePodSandboxRequest := m.generateUpdatePodSandboxResourcesRequest("123", tc.pod, podResourcesCfg) + assert.NotNil(t, updatePodSandboxRequest, "updatePodSandboxRequest is expected to be not nil") + + assert.Equal(t, expectedLcr, updatePodSandboxRequest.Resources, "expectedLcr need to be equal then updatePodSandboxRequest.Resources") + assert.Equal(t, expectedLcrOverhead, updatePodSandboxRequest.Overhead, "expectedLcrOverhead need to be equal then updatePodSandboxRequest.Overhead") + }) + } +} + +func TestUpdatePodSandboxResources(t *testing.T) { + fakeRuntime, _, m, errCreate := createTestRuntimeManager() + require.NoError(t, errCreate) + pod := &v1.Pod{ + ObjectMeta: metav1.ObjectMeta{ + UID: "12345678", + Name: "bar", + Namespace: "new", + }, + Spec: v1.PodSpec{ + Containers: []v1.Container{ + { + Name: "foo", + Image: "busybox", + ImagePullPolicy: v1.PullIfNotPresent, + }, + }, + }, + } + + // Create fake sandbox and container + fakeSandbox, fakeContainers := makeAndSetFakePod(t, m, fakeRuntime, pod) + assert.Len(t, fakeContainers, 1) + + ctx := context.Background() + _, err := m.getPodContainerStatuses(ctx, pod.UID, pod.Name, pod.Namespace) + require.NoError(t, err) + + resourceConfig := &cm.ResourceConfig{} + + err = m.updatePodSandboxResources(fakeSandbox.Id, pod, resourceConfig) + require.NoError(t, err) + + // Verify sandbox is updated + assert.Contains(t, fakeRuntime.Called, "UpdatePodSandboxResources") +} + type CgroupVersion string const ( diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_test.go b/pkg/kubelet/kuberuntime/kuberuntime_container_test.go index 04aba467b05..ee1a1bbe48b 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_test.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_test.go @@ -969,39 +969,3 @@ func TestUpdateContainerResources(t *testing.T) { // Verify container is updated assert.Contains(t, fakeRuntime.Called, "UpdateContainerResources") } - -// TestUpdatePodSandboxResources tests updating a podSandBox resources. -func TestUpdatePodSandboxResources(t *testing.T) { - fakeRuntime, _, m, errCreate := createTestRuntimeManager() - require.NoError(t, errCreate) - pod := &v1.Pod{ - ObjectMeta: metav1.ObjectMeta{ - UID: "12345678", - Name: "bar", - Namespace: "new", - }, - Spec: v1.PodSpec{ - Containers: []v1.Container{ - { - Name: "foo", - Image: "busybox", - ImagePullPolicy: v1.PullIfNotPresent, - }, - }, - }, - } - - // Create fake sandbox and container - fakeSandbox, fakeContainers := makeAndSetFakePod(t, m, fakeRuntime, pod) - assert.Len(t, fakeContainers, 1) - - ctx := context.Background() - _, err := m.getPodContainerStatuses(ctx, pod.UID, pod.Name, pod.Namespace) - require.NoError(t, err) - - err = m.updatePodSandboxResources(fakeSandbox.Id, pod) - require.NoError(t, err) - - // Verify sandbox is updated - assert.Contains(t, fakeRuntime.Called, "UpdatePodSandboxResources") -} diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go b/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go index 81a334b933a..8d3b483f7b0 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_unsupported.go @@ -22,6 +22,7 @@ package kuberuntime import ( v1 "k8s.io/api/core/v1" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" + "k8s.io/kubernetes/pkg/kubelet/cm" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" ) @@ -36,7 +37,7 @@ func (m *kubeGenericRuntimeManager) generateContainerResources(pod *v1.Pod, cont } // generateUpdatePodSandboxResourcesRequest generates platform specific podsandox resources config for runtime -func (m *kubeGenericRuntimeManager) generateUpdatePodSandboxResourcesRequest(sandboxID string, pod *v1.Pod) *runtimeapi.UpdatePodSandboxResourcesRequest { +func (m *kubeGenericRuntimeManager) generateUpdatePodSandboxResourcesRequest(sandboxID string, pod *v1.Pod, podResources *cm.ResourceConfig) *runtimeapi.UpdatePodSandboxResourcesRequest { return nil } diff --git a/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go b/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go index 9da32365df8..abf71f55b71 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go @@ -24,6 +24,7 @@ import ( "k8s.io/apimachinery/pkg/api/resource" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" "k8s.io/klog/v2" + "k8s.io/kubernetes/pkg/kubelet/cm" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/winstats" "k8s.io/kubernetes/pkg/securitycontext" @@ -48,10 +49,8 @@ func (m *kubeGenericRuntimeManager) generateContainerResources(pod *v1.Pod, cont } // generateUpdatePodSandboxResourcesRequest generates platform specific podsandox resources config for runtime -func (m *kubeGenericRuntimeManager) generateUpdatePodSandboxResourcesRequest(sandboxID string, pod *v1.Pod) *runtimeapi.UpdatePodSandboxResourcesRequest { - return &runtimeapi.UpdatePodSandboxResourcesRequest{ - PodSandboxId: sandboxID, - } +func (m *kubeGenericRuntimeManager) generateUpdatePodSandboxResourcesRequest(sandboxID string, pod *v1.Pod, podResources *cm.ResourceConfig) *runtimeapi.UpdatePodSandboxResourcesRequest { + return nil } // generateWindowsContainerResources generates windows container resources config for runtime diff --git a/pkg/kubelet/kuberuntime/kuberuntime_manager.go b/pkg/kubelet/kuberuntime/kuberuntime_manager.go index 6d2d6e629c7..1b42c5acd1c 100644 --- a/pkg/kubelet/kuberuntime/kuberuntime_manager.go +++ b/pkg/kubelet/kuberuntime/kuberuntime_manager.go @@ -675,36 +675,56 @@ func (m *kubeGenericRuntimeManager) doPodResizeAction(pod *v1.Pod, podContainerC } podResources := cm.ResourceConfigForPod(pod, enforceCPULimits, uint64((m.cpuCFSQuotaPeriod.Duration)/time.Microsecond), false) if podResources == nil { - klog.ErrorS(nil, "Unable to get resource configuration", "pod", pod.Name) + klog.ErrorS(nil, "Unable to get resource configuration", "pod", klog.KObj(pod)) result.Fail(fmt.Errorf("unable to get resource configuration processing resize for pod %s", pod.Name)) return } + currentPodMemoryConfig, err := pcm.GetPodCgroupConfig(pod, v1.ResourceMemory) + if err != nil { + klog.ErrorS(nil, "Unable to get pod cgroup memory config", "pod", klog.KObj(pod)) + result.Fail(fmt.Errorf("unable to get pod cgroup memory config for pod %s", pod.Name)) + return + } + currentPodCPUConfig, err := pcm.GetPodCgroupConfig(pod, v1.ResourceCPU) + if err != nil { + klog.ErrorS(nil, "Unable to get pod cgroup cpu config", "pod", klog.KObj(pod)) + result.Fail(fmt.Errorf("unable to get pod cgroup cpu config for pod %s", pod.Name)) + return + } + + currentPodResources := podResources + currentPodResources = mergeResourceConfig(currentPodResources, currentPodMemoryConfig) + currentPodResources = mergeResourceConfig(currentPodResources, currentPodCPUConfig) + setPodCgroupConfig := func(rName v1.ResourceName, setLimitValue bool) error { var err error + resizedResources := &cm.ResourceConfig{} switch rName { case v1.ResourceCPU: - podCPUResources := &cm.ResourceConfig{} if setLimitValue { - podCPUResources.CPUPeriod = podResources.CPUPeriod - podCPUResources.CPUQuota = podResources.CPUQuota + resizedResources.CPUPeriod = podResources.CPUPeriod + resizedResources.CPUQuota = podResources.CPUQuota } else { - podCPUResources.CPUShares = podResources.CPUShares + resizedResources.CPUShares = podResources.CPUShares } - err = pcm.SetPodCgroupConfig(pod, podCPUResources) case v1.ResourceMemory: if !setLimitValue { // Memory requests aren't written to cgroups. return nil } - podMemoryResources := &cm.ResourceConfig{ - Memory: podResources.Memory, - } - err = pcm.SetPodCgroupConfig(pod, podMemoryResources) + resizedResources.Memory = podResources.Memory } + err = pcm.SetPodCgroupConfig(pod, resizedResources) if err != nil { - klog.ErrorS(err, "Failed to set cgroup config", "resource", rName, "pod", pod.Name) + klog.ErrorS(err, "Failed to set cgroup config", "resource", rName, "pod", klog.KObj(pod)) + return err } - return err + currentPodResources = mergeResourceConfig(currentPodResources, resizedResources) + if err = m.updatePodSandboxResources(podContainerChanges.SandboxID, pod, currentPodResources); err != nil { + klog.ErrorS(err, "Failed to notify runtime for UpdatePodSandboxResources", "resource", rName, "pod", klog.KObj(pod)) + // Don't propagate the error since the updatePodSandboxResources call is best-effort. + } + return nil } // Memory and CPU are updated separately because memory resizes may be ordered differently than CPU resizes. // If resize results in net pod resource increase, set pod cgroup config before resizing containers. @@ -747,14 +767,7 @@ func (m *kubeGenericRuntimeManager) doPodResizeAction(pod *v1.Pod, podContainerC // partially actuated. defer m.runtimeHelper.SetPodWatchCondition(pod.UID, "doPodResizeAction", func(*kubecontainer.PodStatus) bool { return true }) - anyResizeDone := false if len(podContainerChanges.ContainersToUpdate[v1.ResourceMemory]) > 0 || podContainerChanges.UpdatePodResources { - currentPodMemoryConfig, err := pcm.GetPodCgroupConfig(pod, v1.ResourceMemory) - if err != nil { - klog.ErrorS(err, "GetPodCgroupConfig for memory failed", "pod", pod.Name) - result.Fail(err) - return - } if podResources.Memory != nil { currentPodMemoryUsage, err := pcm.GetPodCgroupMemoryUsage(pod) if err != nil { @@ -776,7 +789,6 @@ func (m *kubeGenericRuntimeManager) doPodResizeAction(pod *v1.Pod, podContainerC result.Fail(errResize) return } - anyResizeDone = true } if len(podContainerChanges.ContainersToUpdate[v1.ResourceCPU]) > 0 || podContainerChanges.UpdatePodResources { if podResources.CPUShares == nil { @@ -785,31 +797,18 @@ func (m *kubeGenericRuntimeManager) doPodResizeAction(pod *v1.Pod, podContainerC result.Fail(fmt.Errorf("podResources.CPUShares is nil for pod %s", pod.Name)) return } - currentPodCpuConfig, err := pcm.GetPodCgroupConfig(pod, v1.ResourceCPU) - if err != nil { - klog.ErrorS(err, "GetPodCgroupConfig for CPU failed", "pod", pod.Name) - result.Fail(err) - return - } // Default pod CPUQuota to the current CPUQuota if no limit is set to prevent the pod limit // from updating. // TODO(#128675): This does not support removing limits. if podResources.CPUQuota == nil { - podResources.CPUQuota = currentPodCpuConfig.CPUQuota + podResources.CPUQuota = currentPodCPUConfig.CPUQuota } - if errResize := resizeContainers(v1.ResourceCPU, *currentPodCpuConfig.CPUQuota, *podResources.CPUQuota, - int64(*currentPodCpuConfig.CPUShares), int64(*podResources.CPUShares)); errResize != nil { + if errResize := resizeContainers(v1.ResourceCPU, *currentPodCPUConfig.CPUQuota, *podResources.CPUQuota, + int64(*currentPodCPUConfig.CPUShares), int64(*podResources.CPUShares)); errResize != nil { result.Fail(errResize) return } - anyResizeDone = true - } - - if anyResizeDone { - if errUpdate := m.updatePodSandboxResources(podContainerChanges.SandboxID, pod); errUpdate != nil { - klog.ErrorS(errUpdate, "updatePodSandboxResources failed", "pod", pod.Name) - } } }