Merge pull request #32202 from feiskyer/kuberuntime-runsandbox

Automatic merge from submit-queue

Kubelet: rename CreatePodSandbox to RunPodSandbox in CRI

As @yifan-gu pointed out in #31847, the name `CreatePodSandbox` doesn't reflect that the sandbox is running after the API succeeds. This PR renames it to `RunPodSandbox` to make this clear.

CC @yujuhong @yifan-gu @kubernetes/sig-node
This commit is contained in:
Kubernetes Submit Queue 2016-09-10 00:59:56 -07:00 committed by GitHub
commit bd50f7c9cc
8 changed files with 231 additions and 230 deletions

View File

@ -50,9 +50,9 @@ type ContainerManager interface {
// PodSandboxManager contains methods for operating on PodSandboxes. The methods // PodSandboxManager contains methods for operating on PodSandboxes. The methods
// are thread-safe. // are thread-safe.
type PodSandboxManager interface { type PodSandboxManager interface {
// CreatePodSandbox creates a pod-level sandbox. // RunPodSandbox creates and starts a pod-level sandbox. Runtimes should ensure
// The definition of PodSandbox is at https://github.com/kubernetes/kubernetes/pull/25899 // the sandbox is in ready state.
CreatePodSandbox(config *runtimeApi.PodSandboxConfig) (string, error) RunPodSandbox(config *runtimeApi.PodSandboxConfig) (string, error)
// StopPodSandbox stops the sandbox. If there are any running containers in the // StopPodSandbox stops the sandbox. If there are any running containers in the
// sandbox, they should be force terminated. // sandbox, they should be force terminated.
StopPodSandbox(podSandboxID string) error StopPodSandbox(podSandboxID string) error

View File

@ -99,11 +99,11 @@ func (r *FakeRuntimeService) Version(apiVersion string) (*runtimeApi.VersionResp
}, nil }, nil
} }
func (r *FakeRuntimeService) CreatePodSandbox(config *runtimeApi.PodSandboxConfig) (string, error) { func (r *FakeRuntimeService) RunPodSandbox(config *runtimeApi.PodSandboxConfig) (string, error) {
r.Lock() r.Lock()
defer r.Unlock() defer r.Unlock()
r.Called = append(r.Called, "CreatePodSandbox") r.Called = append(r.Called, "RunPodSandbox")
// PodSandboxID should be randomized for real container runtime, but here just use // PodSandboxID should be randomized for real container runtime, but here just use
// fixed name from BuildSandboxName() for easily making fake sandboxes. // fixed name from BuildSandboxName() for easily making fake sandboxes.

View File

@ -34,8 +34,8 @@ It has these top-level messages:
LinuxPodSandboxConfig LinuxPodSandboxConfig
PodSandboxMetadata PodSandboxMetadata
PodSandboxConfig PodSandboxConfig
CreatePodSandboxRequest RunPodSandboxRequest
CreatePodSandboxResponse RunPodSandboxResponse
StopPodSandboxRequest StopPodSandboxRequest
StopPodSandboxResponse StopPodSandboxResponse
RemovePodSandboxRequest RemovePodSandboxRequest
@ -636,36 +636,36 @@ func (m *PodSandboxConfig) GetLinux() *LinuxPodSandboxConfig {
return nil return nil
} }
type CreatePodSandboxRequest struct { type RunPodSandboxRequest struct {
// The configuration for creating a PodSandBox. // The configuration for creating a PodSandBox.
Config *PodSandboxConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"` Config *PodSandboxConfig `protobuf:"bytes,1,opt,name=config" json:"config,omitempty"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
} }
func (m *CreatePodSandboxRequest) Reset() { *m = CreatePodSandboxRequest{} } func (m *RunPodSandboxRequest) Reset() { *m = RunPodSandboxRequest{} }
func (m *CreatePodSandboxRequest) String() string { return proto.CompactTextString(m) } func (m *RunPodSandboxRequest) String() string { return proto.CompactTextString(m) }
func (*CreatePodSandboxRequest) ProtoMessage() {} func (*RunPodSandboxRequest) ProtoMessage() {}
func (*CreatePodSandboxRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{9} } func (*RunPodSandboxRequest) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{9} }
func (m *CreatePodSandboxRequest) GetConfig() *PodSandboxConfig { func (m *RunPodSandboxRequest) GetConfig() *PodSandboxConfig {
if m != nil { if m != nil {
return m.Config return m.Config
} }
return nil return nil
} }
type CreatePodSandboxResponse struct { type RunPodSandboxResponse struct {
// The id of the PodSandBox // The id of the PodSandBox
PodSandboxId *string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId" json:"pod_sandbox_id,omitempty"` PodSandboxId *string `protobuf:"bytes,1,opt,name=pod_sandbox_id,json=podSandboxId" json:"pod_sandbox_id,omitempty"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
} }
func (m *CreatePodSandboxResponse) Reset() { *m = CreatePodSandboxResponse{} } func (m *RunPodSandboxResponse) Reset() { *m = RunPodSandboxResponse{} }
func (m *CreatePodSandboxResponse) String() string { return proto.CompactTextString(m) } func (m *RunPodSandboxResponse) String() string { return proto.CompactTextString(m) }
func (*CreatePodSandboxResponse) ProtoMessage() {} func (*RunPodSandboxResponse) ProtoMessage() {}
func (*CreatePodSandboxResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{10} } func (*RunPodSandboxResponse) Descriptor() ([]byte, []int) { return fileDescriptorApi, []int{10} }
func (m *CreatePodSandboxResponse) GetPodSandboxId() string { func (m *RunPodSandboxResponse) GetPodSandboxId() string {
if m != nil && m.PodSandboxId != nil { if m != nil && m.PodSandboxId != nil {
return *m.PodSandboxId return *m.PodSandboxId
} }
@ -2344,8 +2344,8 @@ func init() {
proto.RegisterType((*LinuxPodSandboxConfig)(nil), "runtime.LinuxPodSandboxConfig") proto.RegisterType((*LinuxPodSandboxConfig)(nil), "runtime.LinuxPodSandboxConfig")
proto.RegisterType((*PodSandboxMetadata)(nil), "runtime.PodSandboxMetadata") proto.RegisterType((*PodSandboxMetadata)(nil), "runtime.PodSandboxMetadata")
proto.RegisterType((*PodSandboxConfig)(nil), "runtime.PodSandboxConfig") proto.RegisterType((*PodSandboxConfig)(nil), "runtime.PodSandboxConfig")
proto.RegisterType((*CreatePodSandboxRequest)(nil), "runtime.CreatePodSandboxRequest") proto.RegisterType((*RunPodSandboxRequest)(nil), "runtime.RunPodSandboxRequest")
proto.RegisterType((*CreatePodSandboxResponse)(nil), "runtime.CreatePodSandboxResponse") proto.RegisterType((*RunPodSandboxResponse)(nil), "runtime.RunPodSandboxResponse")
proto.RegisterType((*StopPodSandboxRequest)(nil), "runtime.StopPodSandboxRequest") proto.RegisterType((*StopPodSandboxRequest)(nil), "runtime.StopPodSandboxRequest")
proto.RegisterType((*StopPodSandboxResponse)(nil), "runtime.StopPodSandboxResponse") proto.RegisterType((*StopPodSandboxResponse)(nil), "runtime.StopPodSandboxResponse")
proto.RegisterType((*RemovePodSandboxRequest)(nil), "runtime.RemovePodSandboxRequest") proto.RegisterType((*RemovePodSandboxRequest)(nil), "runtime.RemovePodSandboxRequest")
@ -2415,9 +2415,9 @@ const _ = grpc.SupportPackageIsVersion3
type RuntimeServiceClient interface { type RuntimeServiceClient interface {
// Version returns the runtime name, runtime version and runtime API version // Version returns the runtime name, runtime version and runtime API version
Version(ctx context.Context, in *VersionRequest, opts ...grpc.CallOption) (*VersionResponse, error) Version(ctx context.Context, in *VersionRequest, opts ...grpc.CallOption) (*VersionResponse, error)
// CreatePodSandbox creates a pod-level sandbox. // RunPodSandbox creates and starts a pod-level sandbox. Runtimes should ensure
// The definition of PodSandbox is at https://github.com/kubernetes/kubernetes/pull/25899 // the sandbox is in ready state.
CreatePodSandbox(ctx context.Context, in *CreatePodSandboxRequest, opts ...grpc.CallOption) (*CreatePodSandboxResponse, error) RunPodSandbox(ctx context.Context, in *RunPodSandboxRequest, opts ...grpc.CallOption) (*RunPodSandboxResponse, error)
// StopPodSandbox stops the running sandbox. If there are any running // StopPodSandbox stops the running sandbox. If there are any running
// containers in the sandbox, they should be forcibly terminated. // containers in the sandbox, they should be forcibly terminated.
StopPodSandbox(ctx context.Context, in *StopPodSandboxRequest, opts ...grpc.CallOption) (*StopPodSandboxResponse, error) StopPodSandbox(ctx context.Context, in *StopPodSandboxRequest, opts ...grpc.CallOption) (*StopPodSandboxResponse, error)
@ -2464,9 +2464,9 @@ func (c *runtimeServiceClient) Version(ctx context.Context, in *VersionRequest,
return out, nil return out, nil
} }
func (c *runtimeServiceClient) CreatePodSandbox(ctx context.Context, in *CreatePodSandboxRequest, opts ...grpc.CallOption) (*CreatePodSandboxResponse, error) { func (c *runtimeServiceClient) RunPodSandbox(ctx context.Context, in *RunPodSandboxRequest, opts ...grpc.CallOption) (*RunPodSandboxResponse, error) {
out := new(CreatePodSandboxResponse) out := new(RunPodSandboxResponse)
err := grpc.Invoke(ctx, "/runtime.RuntimeService/CreatePodSandbox", in, out, c.cc, opts...) err := grpc.Invoke(ctx, "/runtime.RuntimeService/RunPodSandbox", in, out, c.cc, opts...)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -2599,9 +2599,9 @@ func (x *runtimeServiceExecClient) Recv() (*ExecResponse, error) {
type RuntimeServiceServer interface { type RuntimeServiceServer interface {
// Version returns the runtime name, runtime version and runtime API version // Version returns the runtime name, runtime version and runtime API version
Version(context.Context, *VersionRequest) (*VersionResponse, error) Version(context.Context, *VersionRequest) (*VersionResponse, error)
// CreatePodSandbox creates a pod-level sandbox. // RunPodSandbox creates and starts a pod-level sandbox. Runtimes should ensure
// The definition of PodSandbox is at https://github.com/kubernetes/kubernetes/pull/25899 // the sandbox is in ready state.
CreatePodSandbox(context.Context, *CreatePodSandboxRequest) (*CreatePodSandboxResponse, error) RunPodSandbox(context.Context, *RunPodSandboxRequest) (*RunPodSandboxResponse, error)
// StopPodSandbox stops the running sandbox. If there are any running // StopPodSandbox stops the running sandbox. If there are any running
// containers in the sandbox, they should be forcibly terminated. // containers in the sandbox, they should be forcibly terminated.
StopPodSandbox(context.Context, *StopPodSandboxRequest) (*StopPodSandboxResponse, error) StopPodSandbox(context.Context, *StopPodSandboxRequest) (*StopPodSandboxResponse, error)
@ -2653,20 +2653,20 @@ func _RuntimeService_Version_Handler(srv interface{}, ctx context.Context, dec f
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
func _RuntimeService_CreatePodSandbox_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { func _RuntimeService_RunPodSandbox_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreatePodSandboxRequest) in := new(RunPodSandboxRequest)
if err := dec(in); err != nil { if err := dec(in); err != nil {
return nil, err return nil, err
} }
if interceptor == nil { if interceptor == nil {
return srv.(RuntimeServiceServer).CreatePodSandbox(ctx, in) return srv.(RuntimeServiceServer).RunPodSandbox(ctx, in)
} }
info := &grpc.UnaryServerInfo{ info := &grpc.UnaryServerInfo{
Server: srv, Server: srv,
FullMethod: "/runtime.RuntimeService/CreatePodSandbox", FullMethod: "/runtime.RuntimeService/RunPodSandbox",
} }
handler := func(ctx context.Context, req interface{}) (interface{}, error) { handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RuntimeServiceServer).CreatePodSandbox(ctx, req.(*CreatePodSandboxRequest)) return srv.(RuntimeServiceServer).RunPodSandbox(ctx, req.(*RunPodSandboxRequest))
} }
return interceptor(ctx, in, info, handler) return interceptor(ctx, in, info, handler)
} }
@ -2886,8 +2886,8 @@ var _RuntimeService_serviceDesc = grpc.ServiceDesc{
Handler: _RuntimeService_Version_Handler, Handler: _RuntimeService_Version_Handler,
}, },
{ {
MethodName: "CreatePodSandbox", MethodName: "RunPodSandbox",
Handler: _RuntimeService_CreatePodSandbox_Handler, Handler: _RuntimeService_RunPodSandbox_Handler,
}, },
{ {
MethodName: "StopPodSandbox", MethodName: "StopPodSandbox",
@ -3115,182 +3115,182 @@ var _ImageService_serviceDesc = grpc.ServiceDesc{
} }
var fileDescriptorApi = []byte{ var fileDescriptorApi = []byte{
// 2829 bytes of a gzipped FileDescriptorProto // 2826 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x5a, 0x4b, 0x73, 0x1b, 0xc7, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x5a, 0x4f, 0x73, 0xdb, 0xc6,
0x11, 0x16, 0x08, 0x82, 0x04, 0x1a, 0x04, 0x08, 0x8e, 0x28, 0x12, 0x82, 0x5e, 0xd4, 0xda, 0x4e, 0x15, 0x37, 0x45, 0x51, 0x22, 0x1f, 0x45, 0x8a, 0x5a, 0xcb, 0x12, 0x4d, 0x3b, 0xb6, 0x8c, 0x24,
0x24, 0xda, 0x66, 0x29, 0x4c, 0x4a, 0x8a, 0x64, 0x5b, 0x16, 0x4d, 0x32, 0x2a, 0x5a, 0x14, 0xc5, 0xad, 0xad, 0x24, 0x1a, 0x57, 0xed, 0xd8, 0xb5, 0x93, 0x38, 0x51, 0x24, 0xd5, 0xa3, 0xd8, 0x96,
0x2c, 0x24, 0xc5, 0x3a, 0xa1, 0x56, 0xd8, 0x21, 0xb9, 0x12, 0xb0, 0xbb, 0xde, 0x5d, 0x30, 0x62, 0x55, 0xd0, 0x76, 0xe3, 0x13, 0x06, 0x26, 0x56, 0x12, 0x6c, 0x12, 0x40, 0x00, 0x50, 0xb5, 0x7a,
0xae, 0xf9, 0x05, 0xb9, 0xe5, 0x98, 0x83, 0xab, 0x72, 0xca, 0x25, 0x55, 0xb9, 0xe4, 0x9a, 0x5b, 0xed, 0x27, 0xe8, 0xad, 0xc7, 0x1e, 0x32, 0xd3, 0x53, 0x2f, 0x9d, 0xe9, 0xa5, 0xb7, 0x4e, 0x8f,
0x52, 0xf9, 0x3d, 0xc9, 0x25, 0x55, 0xe9, 0x79, 0xec, 0xec, 0xec, 0x03, 0x14, 0x21, 0x57, 0xd9, 0x9d, 0x7e, 0x9e, 0xf6, 0xd2, 0x99, 0xbe, 0xfd, 0x83, 0xc5, 0xe2, 0x0f, 0x65, 0xc9, 0x99, 0x49,
0xba, 0xed, 0x74, 0xf7, 0xcc, 0xf4, 0x74, 0xf7, 0xf4, 0xf4, 0x37, 0xb3, 0x50, 0xb3, 0x7c, 0x67, 0x7c, 0xc3, 0xbe, 0xf7, 0x76, 0xf7, 0xed, 0x7b, 0x6f, 0xdf, 0xbe, 0xdf, 0x2e, 0xa0, 0x61, 0x07,
0xcd, 0x0f, 0xbc, 0xc8, 0x23, 0xb3, 0xc1, 0xc8, 0x8d, 0x9c, 0x21, 0x35, 0x56, 0xa1, 0xf9, 0x9c, 0xee, 0x5a, 0x10, 0xfa, 0xb1, 0x4f, 0x66, 0xc3, 0xb1, 0x17, 0xbb, 0x23, 0x6a, 0xac, 0x42, 0xfb,
0x06, 0xa1, 0xe3, 0xb9, 0x26, 0xfd, 0x76, 0x44, 0xc3, 0x88, 0xb4, 0x61, 0xf6, 0x58, 0x50, 0xda, 0x19, 0x0d, 0x23, 0xd7, 0xf7, 0x4c, 0xfa, 0xed, 0x98, 0x46, 0x31, 0xe9, 0xc2, 0xec, 0x91, 0xa0,
0xa5, 0x95, 0xd2, 0x8d, 0x9a, 0x19, 0x37, 0x8d, 0x3f, 0x97, 0x60, 0x5e, 0x09, 0x87, 0xbe, 0xe7, 0x74, 0x2b, 0x2b, 0x95, 0xeb, 0x0d, 0x33, 0x69, 0x1a, 0x7f, 0xae, 0xc0, 0xbc, 0x12, 0x8e, 0x02,
0x86, 0x74, 0xbc, 0x34, 0xb9, 0x0e, 0x73, 0x72, 0x92, 0x9e, 0x6b, 0x0d, 0x69, 0x7b, 0x8a, 0xb3, 0xdf, 0x8b, 0xe8, 0x64, 0x69, 0x72, 0x0d, 0xe6, 0xe4, 0x24, 0x96, 0x67, 0x8f, 0x68, 0x77, 0x8a,
0xeb, 0x92, 0xb6, 0x87, 0x24, 0xf2, 0x53, 0x98, 0x8f, 0x45, 0xe2, 0x41, 0xca, 0x5c, 0xaa, 0x29, 0xb3, 0x9b, 0x92, 0xb6, 0x8b, 0x24, 0xf2, 0x53, 0x98, 0x4f, 0x44, 0x92, 0x41, 0xaa, 0x5c, 0xaa,
0xc9, 0x72, 0x36, 0xb2, 0x06, 0xe7, 0x63, 0x41, 0x5c, 0x83, 0x12, 0x9e, 0xe6, 0xc2, 0x0b, 0x92, 0x2d, 0xc9, 0x72, 0x36, 0xb2, 0x06, 0xe7, 0x13, 0x41, 0x5c, 0x83, 0x12, 0x9e, 0xe6, 0xc2, 0x0b,
0xb5, 0xe1, 0x3b, 0x52, 0xde, 0xd8, 0x80, 0xda, 0xd6, 0x5e, 0xf7, 0x89, 0x1f, 0xb1, 0xce, 0xa8, 0x92, 0xb5, 0x11, 0xb8, 0x52, 0xde, 0xd8, 0x80, 0xc6, 0xd6, 0x6e, 0xff, 0x71, 0x10, 0xb3, 0xce,
0x62, 0x48, 0x03, 0xd6, 0x07, 0x55, 0x2c, 0x33, 0x15, 0x65, 0x93, 0x74, 0xa0, 0x1a, 0x52, 0x2b, 0xa8, 0x62, 0x44, 0x43, 0xd6, 0x07, 0x55, 0xac, 0x32, 0x15, 0x65, 0x93, 0xf4, 0xa0, 0x1e, 0x51,
0xe8, 0x1f, 0xd1, 0x10, 0xd5, 0x63, 0x2c, 0xd5, 0x36, 0xfe, 0x52, 0x82, 0xfa, 0xbe, 0x17, 0x44, 0x3b, 0x1c, 0x1c, 0xd2, 0x08, 0xd5, 0x63, 0x2c, 0xd5, 0x36, 0xfe, 0x52, 0x81, 0xe6, 0x9e, 0x1f,
0x8f, 0x2d, 0xdf, 0x77, 0xdc, 0x43, 0x42, 0x60, 0x9a, 0x2f, 0x43, 0xac, 0x92, 0x7f, 0x93, 0x4f, 0xc6, 0x8f, 0xec, 0x20, 0x70, 0xbd, 0x03, 0x42, 0x60, 0x9a, 0x2f, 0x43, 0xac, 0x92, 0x7f, 0x93,
0xa1, 0xca, 0xcd, 0xd9, 0xf7, 0x06, 0x7c, 0x79, 0xcd, 0xf5, 0x85, 0x35, 0xa9, 0xcc, 0xda, 0xbe, 0x4f, 0xa0, 0xce, 0xcd, 0x39, 0xf0, 0x87, 0x7c, 0x79, 0xed, 0xf5, 0x85, 0x35, 0xa9, 0xcc, 0xda,
0x64, 0x98, 0x4a, 0x84, 0x7c, 0x04, 0xcd, 0xbe, 0xe7, 0x46, 0x96, 0xe3, 0xd2, 0xa0, 0xe7, 0xe3, 0x9e, 0x64, 0x98, 0x4a, 0x84, 0x7c, 0x08, 0xed, 0x81, 0xef, 0xc5, 0xb6, 0xeb, 0xd1, 0xd0, 0x0a,
0xd8, 0x7c, 0xb5, 0x15, 0xb3, 0xa1, 0xa8, 0x6c, 0x42, 0x72, 0x09, 0x6a, 0x47, 0x5e, 0x18, 0x09, 0x70, 0x6c, 0xbe, 0xda, 0x9a, 0xd9, 0x52, 0x54, 0x36, 0x21, 0xb9, 0x04, 0x8d, 0x43, 0x3f, 0x8a,
0x89, 0x69, 0x2e, 0x51, 0x65, 0x04, 0xce, 0x5c, 0x86, 0x59, 0xce, 0x74, 0xfc, 0x76, 0x85, 0x6b, 0x85, 0xc4, 0x34, 0x97, 0xa8, 0x33, 0x02, 0x67, 0x2e, 0xc3, 0x2c, 0x67, 0xba, 0x41, 0xb7, 0xc6,
0x32, 0xc3, 0x9a, 0x3b, 0xbe, 0xf1, 0x5d, 0x09, 0x2a, 0x8f, 0x3d, 0x9c, 0xbc, 0x50, 0xd3, 0xf4, 0x35, 0x99, 0x61, 0xcd, 0x9d, 0xc0, 0xf8, 0xae, 0x02, 0xb5, 0x47, 0x3e, 0x4e, 0x5e, 0xaa, 0x69,
0xd4, 0x56, 0x74, 0x24, 0xdd, 0xa1, 0x4d, 0x8d, 0xc4, 0x64, 0x6a, 0x26, 0x21, 0x5c, 0x21, 0xa6, 0x76, 0x6a, 0x3b, 0x3e, 0x94, 0xee, 0xd0, 0xa6, 0x46, 0x62, 0x3a, 0x35, 0x93, 0x10, 0xae, 0x10,
0x66, 0x4c, 0xb4, 0x56, 0x40, 0x2d, 0xdb, 0x73, 0x07, 0x27, 0x5c, 0xad, 0xaa, 0xa9, 0xda, 0xcc, 0x53, 0x33, 0x26, 0x5a, 0x2b, 0xa4, 0xb6, 0xe3, 0x7b, 0xc3, 0x63, 0xae, 0x56, 0xdd, 0x54, 0x6d,
0x93, 0x21, 0x1d, 0x38, 0xee, 0xe8, 0x4d, 0x2f, 0xa0, 0x03, 0xeb, 0x25, 0x1d, 0x70, 0xf5, 0xaa, 0xe6, 0xc9, 0x88, 0x0e, 0x5d, 0x6f, 0xfc, 0xda, 0x0a, 0xe9, 0xd0, 0x7e, 0x41, 0x87, 0x5c, 0xbd,
0x66, 0x53, 0x92, 0x4d, 0x41, 0x35, 0x5e, 0xc1, 0x3c, 0x73, 0x7d, 0xe8, 0x5b, 0x7d, 0x2a, 0xfd, 0xba, 0xd9, 0x96, 0x64, 0x53, 0x50, 0x8d, 0x97, 0x30, 0xcf, 0x5c, 0x1f, 0x05, 0xf6, 0x80, 0x4a,
0x83, 0x81, 0xc2, 0x27, 0x75, 0x69, 0xf4, 0x5b, 0x2f, 0x78, 0xcd, 0xf5, 0xae, 0x9a, 0x75, 0x46, 0xff, 0x60, 0xa0, 0xf0, 0x49, 0x3d, 0x1a, 0xff, 0xd6, 0x0f, 0x5f, 0x71, 0xbd, 0xeb, 0x66, 0x93,
0xdb, 0x13, 0x24, 0x72, 0x11, 0xaa, 0x42, 0x2f, 0xc7, 0xe6, 0x8a, 0x57, 0x4d, 0x6e, 0x85, 0x7d, 0xd1, 0x76, 0x05, 0x89, 0x5c, 0x84, 0xba, 0xd0, 0xcb, 0x75, 0xb8, 0xe2, 0x75, 0x93, 0x5b, 0x61,
0xc7, 0x56, 0x2c, 0xc7, 0xef, 0x73, 0x8d, 0x25, 0x6b, 0xc7, 0xef, 0x1b, 0xbf, 0x2f, 0xc1, 0x85, 0xcf, 0x75, 0x14, 0xcb, 0x0d, 0x06, 0x5c, 0x63, 0xc9, 0xda, 0x09, 0x06, 0xc6, 0xef, 0x2b, 0x70,
0x5d, 0x36, 0xf9, 0xbe, 0x67, 0x77, 0x2d, 0xd7, 0x7e, 0xe9, 0xbd, 0xd9, 0xf4, 0xdc, 0x03, 0xe7, 0xe1, 0x21, 0x9b, 0x7c, 0xcf, 0x77, 0xfa, 0xb6, 0xe7, 0xbc, 0xf0, 0x5f, 0x6f, 0xfa, 0xde, 0xbe,
0x90, 0x7c, 0x00, 0x8d, 0xfe, 0x61, 0xe0, 0x8d, 0x7c, 0x5c, 0x69, 0x40, 0xdd, 0x48, 0xda, 0x6a, 0x7b, 0x40, 0xde, 0x87, 0xd6, 0xe0, 0x20, 0xf4, 0xc7, 0x01, 0xae, 0x34, 0xa4, 0x5e, 0x2c, 0x6d,
0x4e, 0x10, 0xf7, 0x39, 0x8d, 0x6c, 0xc3, 0x82, 0x1b, 0xab, 0xda, 0xf3, 0xb8, 0xae, 0x21, 0x9f, 0x35, 0x27, 0x88, 0x7b, 0x9c, 0x46, 0xb6, 0x61, 0xc1, 0x4b, 0x54, 0xb5, 0x7c, 0xae, 0x6b, 0xc4,
0xbd, 0xbe, 0xde, 0x56, 0x6e, 0xce, 0x2c, 0xc6, 0x6c, 0xb9, 0x69, 0x42, 0x68, 0x04, 0x40, 0x92, 0x67, 0x6f, 0xae, 0x77, 0x95, 0x9b, 0x73, 0x8b, 0x31, 0x3b, 0x5e, 0x96, 0x10, 0x19, 0x21, 0x90,
0xf9, 0x1f, 0xd3, 0xc8, 0xb2, 0xad, 0xc8, 0x2a, 0x74, 0x52, 0x0b, 0xca, 0x23, 0xb9, 0xc0, 0x9a, 0x74, 0xfe, 0x47, 0x34, 0xb6, 0x1d, 0x3b, 0xb6, 0x4b, 0x9d, 0xd4, 0x81, 0xea, 0x58, 0x2e, 0xb0,
0xc9, 0x3e, 0xc9, 0x65, 0xa8, 0xa9, 0xf1, 0xa4, 0x3f, 0x12, 0x02, 0x0b, 0x6c, 0x2b, 0x8a, 0xe8, 0x61, 0xb2, 0x4f, 0x72, 0x19, 0x1a, 0x6a, 0x3c, 0xe9, 0x8f, 0x94, 0xc0, 0x02, 0xdb, 0x8e, 0x63,
0xd0, 0x17, 0x61, 0xd2, 0x30, 0xe3, 0xa6, 0xf1, 0xf7, 0x69, 0x68, 0xe5, 0x16, 0x7d, 0x07, 0xaa, 0x3a, 0x0a, 0x44, 0x98, 0xb4, 0xcc, 0xa4, 0x69, 0xfc, 0x7d, 0x1a, 0x3a, 0x85, 0x45, 0xdf, 0x86,
0x43, 0x39, 0x3d, 0x9f, 0xb6, 0xbe, 0x7e, 0x29, 0x89, 0xd6, 0x9c, 0x86, 0xa6, 0x12, 0x66, 0x8e, 0xfa, 0x48, 0x4e, 0xcf, 0xa7, 0x6d, 0xae, 0x5f, 0x4a, 0xa3, 0xb5, 0xa0, 0xa1, 0xa9, 0x84, 0x99,
0x67, 0x26, 0xd5, 0x76, 0xb1, 0x6a, 0x33, 0x4b, 0x0e, 0xbc, 0xc3, 0x9e, 0xed, 0x04, 0xb4, 0x1f, 0xe3, 0x99, 0x49, 0xb5, 0x5d, 0xac, 0xda, 0xcc, 0x92, 0x43, 0xff, 0xc0, 0x72, 0xdc, 0x90, 0x0e,
0x79, 0xc1, 0x89, 0xd4, 0x72, 0x0e, 0x89, 0x5b, 0x31, 0x8d, 0xfc, 0x1c, 0xea, 0xb6, 0x1b, 0x2a, 0x62, 0x3f, 0x3c, 0x96, 0x5a, 0xce, 0x21, 0x71, 0x2b, 0xa1, 0x91, 0x9f, 0x43, 0xd3, 0xf1, 0x22,
0x1b, 0x4e, 0xf3, 0xc9, 0x89, 0x9a, 0x5c, 0x6d, 0x55, 0x13, 0x50, 0x4c, 0xda, 0x8d, 0xdc, 0x85, 0x65, 0xc3, 0x69, 0x3e, 0x39, 0x51, 0x93, 0xab, 0xad, 0x6a, 0x02, 0x8a, 0x49, 0xbb, 0x91, 0x3b,
0x06, 0xdb, 0x01, 0xbd, 0xa1, 0xd8, 0x80, 0x21, 0x06, 0x54, 0x19, 0xbb, 0x2d, 0x6a, 0x3a, 0xab, 0xd0, 0x62, 0x3b, 0xc0, 0x1a, 0x89, 0x0d, 0x18, 0x61, 0x40, 0x55, 0xb1, 0xdb, 0xa2, 0xa6, 0xb3,
0xdd, 0x69, 0xce, 0xf9, 0x49, 0x23, 0x24, 0x5f, 0xc0, 0x0c, 0x8f, 0xb6, 0xb0, 0x3d, 0xc3, 0xfb, 0xda, 0x9d, 0xe6, 0x5c, 0x90, 0x36, 0x22, 0xf2, 0x39, 0xcc, 0xf0, 0x68, 0x8b, 0xba, 0x33, 0xbc,
0x7c, 0x54, 0xb0, 0x4e, 0x61, 0x94, 0xb5, 0x5d, 0x2e, 0xb7, 0xed, 0x46, 0xc1, 0x89, 0x29, 0x3b, 0xcf, 0x87, 0x25, 0xeb, 0x14, 0x46, 0x59, 0x7b, 0xc8, 0xe5, 0xb6, 0xbd, 0x38, 0x3c, 0x36, 0x65,
0x91, 0x5d, 0xa8, 0x5b, 0xae, 0xeb, 0x45, 0x96, 0x50, 0x77, 0x96, 0x8f, 0xb1, 0x3a, 0x7e, 0x8c, 0x27, 0xf2, 0x10, 0x9a, 0xb6, 0xe7, 0xf9, 0xb1, 0x2d, 0xd4, 0x9d, 0xe5, 0x63, 0xac, 0x4e, 0x1e,
0x8d, 0x44, 0x58, 0x0c, 0xa4, 0x77, 0x27, 0xbf, 0x80, 0x0a, 0xdf, 0x01, 0xed, 0x2a, 0x5f, 0xf6, 0x63, 0x23, 0x15, 0x16, 0x03, 0xe9, 0xdd, 0xc9, 0x2f, 0xa0, 0xc6, 0x77, 0x40, 0xb7, 0xce, 0x97,
0x55, 0x35, 0x4e, 0x61, 0x68, 0x9a, 0x42, 0xb8, 0x73, 0x17, 0xea, 0x9a, 0x6a, 0x2c, 0x34, 0x5e, 0x7d, 0x45, 0x8d, 0x53, 0x1a, 0x9a, 0xa6, 0x10, 0xee, 0xdd, 0x81, 0xa6, 0xa6, 0x1a, 0x0b, 0x8d,
0xd3, 0x13, 0x19, 0x2d, 0xec, 0x93, 0x2c, 0x42, 0xe5, 0xd8, 0x1a, 0x8c, 0x62, 0x8f, 0x88, 0xc6, 0x57, 0xf4, 0x58, 0x46, 0x0b, 0xfb, 0x24, 0x8b, 0x50, 0x3b, 0xb2, 0x87, 0xe3, 0xc4, 0x23, 0xa2,
0xbd, 0xa9, 0x5f, 0x96, 0x3a, 0xf7, 0xa1, 0x95, 0xd5, 0x68, 0x92, 0xfe, 0xc6, 0x2e, 0x2c, 0x6f, 0x71, 0x77, 0xea, 0x97, 0x95, 0xde, 0x3d, 0xe8, 0xe4, 0x35, 0x3a, 0x4b, 0x7f, 0x63, 0x07, 0x16,
0xe2, 0xc6, 0x8e, 0x68, 0xa2, 0x5b, 0x7c, 0x36, 0xfc, 0x0c, 0x66, 0xfa, 0x5c, 0x4d, 0x19, 0x40, 0xcd, 0xb1, 0x97, 0x2a, 0x96, 0x1c, 0x0c, 0x3f, 0x83, 0x99, 0x01, 0xd7, 0x51, 0x46, 0xcf, 0xc5,
0x17, 0xc7, 0x1a, 0xc5, 0x94, 0x82, 0xc6, 0x03, 0x68, 0xe7, 0x47, 0x93, 0x87, 0xc7, 0x87, 0xd0, 0x89, 0x16, 0x31, 0xa5, 0xa0, 0xf1, 0x39, 0x5c, 0xc8, 0x0d, 0x25, 0x8f, 0x8d, 0x0f, 0xa0, 0x1d,
0xf4, 0x3d, 0xbb, 0x17, 0x0a, 0x72, 0x0f, 0x63, 0x5f, 0xee, 0x43, 0x5f, 0xc9, 0xee, 0xd8, 0xc6, 0xf8, 0x8e, 0x15, 0x09, 0xb2, 0x85, 0x51, 0x2f, 0x77, 0x60, 0xa0, 0x64, 0x77, 0x1c, 0xd6, 0xbd,
0x17, 0x70, 0xa1, 0x1b, 0x79, 0x7e, 0x5e, 0x9b, 0xb3, 0x75, 0x6f, 0xc3, 0x52, 0xb6, 0xbb, 0x98, 0x1f, 0xfb, 0x41, 0x51, 0x95, 0xd3, 0x75, 0xef, 0xc2, 0x52, 0xbe, 0xbb, 0x98, 0xde, 0xf8, 0x02,
0xde, 0xf8, 0x12, 0x96, 0x4d, 0x3a, 0xf4, 0x8e, 0xe9, 0xbb, 0x0e, 0xdd, 0x81, 0x76, 0x7e, 0x80, 0x96, 0x4d, 0x3a, 0xf2, 0x8f, 0xe8, 0xdb, 0x0e, 0xdd, 0x83, 0x6e, 0x71, 0x80, 0x74, 0xf0, 0x94,
0x64, 0xf0, 0x84, 0xda, 0x45, 0x67, 0x8c, 0xc2, 0xc9, 0x06, 0xbf, 0xa9, 0x0f, 0x20, 0x13, 0xa1, 0xda, 0x47, 0x37, 0x8c, 0xa3, 0xb3, 0x0d, 0x7e, 0x43, 0x1f, 0x40, 0xa6, 0x40, 0x31, 0x0e, 0x69,
0x18, 0x87, 0x34, 0x61, 0x0a, 0xf3, 0xbf, 0xe8, 0x84, 0x5f, 0xc6, 0x0b, 0xa8, 0xed, 0xe9, 0x59, 0xc3, 0x14, 0x66, 0x7e, 0xd1, 0x09, 0xbf, 0x8c, 0xe7, 0xd0, 0xd8, 0xd5, 0xf3, 0x81, 0x9e, 0x43,
0x41, 0xcf, 0xa4, 0x78, 0xdc, 0xc9, 0x26, 0x59, 0x87, 0xd9, 0xb3, 0xa6, 0xb1, 0x58, 0xd0, 0x78, 0xf1, 0xa0, 0x93, 0x4d, 0xb2, 0x0e, 0xb3, 0xa7, 0x4d, 0x60, 0x89, 0xa0, 0xf1, 0xa0, 0x90, 0x3c,
0x94, 0x4b, 0xa1, 0x52, 0x87, 0x75, 0x00, 0x95, 0x89, 0x42, 0x19, 0x0e, 0x24, 0x3f, 0x9e, 0xa9, 0xa5, 0x0e, 0xeb, 0x00, 0x2a, 0x07, 0x45, 0x32, 0x16, 0x48, 0x71, 0x3c, 0x53, 0x93, 0x32, 0xbe,
0x49, 0x19, 0xdf, 0xa5, 0xd2, 0x92, 0xb6, 0x18, 0x5b, 0x2d, 0xc6, 0x4e, 0xa5, 0xa9, 0xa9, 0x49, 0xcb, 0x24, 0x24, 0x6d, 0x31, 0x8e, 0x5a, 0x8c, 0x93, 0x49, 0x50, 0x53, 0x67, 0x49, 0x50, 0x6b,
0xd2, 0xd4, 0x1a, 0x54, 0x42, 0x1c, 0x52, 0x24, 0xca, 0xa6, 0xb6, 0x38, 0xd9, 0xeb, 0x2b, 0x31, 0x50, 0x8b, 0x70, 0x48, 0x91, 0x22, 0xdb, 0xda, 0xe2, 0x64, 0xaf, 0xaf, 0xc4, 0x94, 0xd4, 0x14,
0x25, 0x35, 0x85, 0x18, 0xb9, 0x02, 0xd0, 0xe7, 0x91, 0x69, 0xf7, 0x2c, 0x91, 0x41, 0xcb, 0x66, 0x62, 0xe4, 0x3d, 0x80, 0x01, 0x1e, 0x5d, 0x31, 0x75, 0x2c, 0x5b, 0xe4, 0xce, 0xaa, 0xd9, 0x90,
0x4d, 0x52, 0x36, 0x22, 0x72, 0x2f, 0xb1, 0x63, 0x85, 0xab, 0xb1, 0x52, 0xa0, 0x46, 0xca, 0x2f, 0x94, 0x8d, 0x98, 0xdc, 0x4d, 0xed, 0x58, 0xe3, 0x6a, 0xac, 0x94, 0xa8, 0x91, 0xf1, 0x4b, 0x6a,
0x89, 0xa5, 0xd5, 0x9e, 0x9f, 0x39, 0x7d, 0xcf, 0xcb, 0x7e, 0x42, 0x58, 0x4b, 0x5b, 0xb3, 0x63, 0x69, 0xb5, 0xdb, 0x67, 0x4e, 0xde, 0xed, 0xb2, 0x9f, 0x10, 0xd6, 0x12, 0xd6, 0xec, 0xc4, 0x84,
0xd3, 0x96, 0xe8, 0x71, 0x96, 0xb4, 0x55, 0x1d, 0x9b, 0xb6, 0xe4, 0x18, 0xa7, 0xa6, 0xad, 0x1f, 0x25, 0x7a, 0x9c, 0x26, 0x61, 0xd5, 0x27, 0x26, 0x2c, 0x39, 0xc6, 0x89, 0x09, 0xeb, 0xc7, 0x4c,
0x33, 0x01, 0x3d, 0x86, 0x76, 0x7e, 0xeb, 0xc8, 0x94, 0x81, 0x19, 0x28, 0xe4, 0x94, 0x53, 0x32, 0x3d, 0x8f, 0xa0, 0x5b, 0xdc, 0x3a, 0x32, 0x65, 0x60, 0xfa, 0x89, 0x38, 0xe5, 0x84, 0xf4, 0x23,
0x90, 0xec, 0x22, 0x05, 0x8d, 0xff, 0x95, 0xf4, 0xa8, 0xfb, 0x95, 0x33, 0x88, 0x68, 0x50, 0x78, 0xbb, 0x48, 0x41, 0xe3, 0x7f, 0x15, 0x3d, 0xea, 0x7e, 0xe5, 0x0e, 0x63, 0x1a, 0x96, 0x9e, 0xbc,
0xfe, 0x8a, 0x48, 0x9c, 0x52, 0x91, 0x38, 0x69, 0x40, 0x75, 0xa1, 0xc9, 0x5d, 0xd1, 0xc3, 0x9a, 0x22, 0x12, 0xa7, 0x54, 0x24, 0x9e, 0x35, 0xa0, 0xfa, 0xd0, 0xe6, 0xae, 0xb0, 0xb0, 0xda, 0xe1,
0x87, 0x9f, 0x7c, 0x18, 0x54, 0xcc, 0x07, 0x9f, 0x14, 0xe8, 0x28, 0xd4, 0x10, 0x7e, 0xec, 0x4a, 0x67, 0x1e, 0x06, 0x15, 0xf3, 0xc1, 0xc7, 0x25, 0x3a, 0x0a, 0x35, 0x84, 0x1f, 0xfb, 0x52, 0x5c,
0x71, 0xe1, 0x85, 0xc6, 0x40, 0xa7, 0x75, 0x1e, 0x00, 0xc9, 0x0b, 0x4d, 0x64, 0xce, 0xaf, 0xd9, 0x78, 0xa1, 0x35, 0xd4, 0x69, 0xbd, 0x2f, 0x81, 0x14, 0x85, 0xce, 0x64, 0xce, 0xaf, 0xd9, 0x16,
0x16, 0x66, 0xe5, 0x63, 0x41, 0x36, 0x3f, 0xe0, 0x6a, 0x9c, 0x62, 0x4b, 0xa1, 0xa7, 0x29, 0x05, 0x66, 0x85, 0x63, 0x49, 0x2a, 0xdf, 0xe7, 0x6a, 0x9c, 0x60, 0x4b, 0xa1, 0xa7, 0x29, 0x05, 0x8d,
0x8d, 0x3f, 0x4e, 0x01, 0x24, 0xcc, 0xf7, 0x76, 0xef, 0xde, 0x51, 0x3b, 0x49, 0x14, 0x0d, 0xd7, 0x3f, 0x4e, 0x01, 0xa4, 0xcc, 0x77, 0x76, 0xef, 0xde, 0x56, 0x3b, 0x49, 0x94, 0x0b, 0x57, 0x4b,
0x0a, 0xb4, 0x28, 0xda, 0x43, 0xdf, 0x23, 0xea, 0x8d, 0x4d, 0x58, 0xca, 0x9a, 0x59, 0xc6, 0xec, 0xb4, 0x28, 0xdb, 0x43, 0xdf, 0x23, 0xea, 0x8d, 0x4d, 0x58, 0xca, 0x9b, 0x59, 0xc6, 0xec, 0x0d,
0x4d, 0xa8, 0x38, 0x58, 0x97, 0x09, 0xf8, 0x51, 0x5f, 0x3f, 0x5f, 0xa0, 0x8c, 0x29, 0x24, 0x8c, 0xa8, 0xb9, 0x58, 0x91, 0x09, 0xe0, 0xd1, 0x5c, 0x3f, 0x5f, 0xa2, 0x8c, 0x29, 0x24, 0x8c, 0x6b,
0xeb, 0x50, 0xdb, 0x19, 0x5a, 0x87, 0xb4, 0xeb, 0xd3, 0x3e, 0x9b, 0xcb, 0x61, 0x0d, 0x39, 0xbf, 0xd0, 0xd8, 0x19, 0xd9, 0x07, 0xb4, 0x1f, 0xd0, 0x01, 0x9b, 0xcb, 0x65, 0x0d, 0x39, 0xbf, 0x68,
0x68, 0x18, 0xeb, 0x50, 0x7d, 0x44, 0x4f, 0x9e, 0xb3, 0x79, 0xcf, 0xaa, 0x9f, 0xf1, 0xaf, 0x12, 0x18, 0xeb, 0x50, 0x7f, 0x40, 0x8f, 0x9f, 0xb1, 0x79, 0x4f, 0xab, 0x9f, 0xf1, 0xaf, 0x0a, 0x2c,
0x2c, 0xf3, 0xd4, 0xb3, 0x19, 0x97, 0xfb, 0xa8, 0x9c, 0x37, 0x0a, 0x30, 0x29, 0x73, 0x53, 0xfa, 0xf3, 0xd4, 0xb3, 0x99, 0x14, 0xfa, 0xa8, 0x9c, 0x3f, 0x0e, 0x31, 0x29, 0x73, 0x53, 0x06, 0x63,
0xa3, 0x9e, 0x4f, 0x03, 0xc7, 0x13, 0xbe, 0x64, 0xa6, 0xf4, 0x47, 0xfb, 0x9c, 0xc0, 0x20, 0x01, 0x2b, 0xa0, 0xa1, 0xeb, 0x0b, 0x5f, 0x32, 0x53, 0x06, 0xe3, 0x3d, 0x4e, 0x60, 0x60, 0x80, 0xb1,
0x63, 0x7f, 0x3b, 0xf2, 0xa4, 0x4f, 0xcb, 0x66, 0x15, 0x09, 0xbf, 0x66, 0xed, 0xb8, 0x6f, 0x78, 0xbf, 0x1d, 0xfb, 0xd2, 0xa7, 0x55, 0xb3, 0x8e, 0x84, 0x5f, 0xb3, 0x76, 0xd2, 0x37, 0x3a, 0xc4,
0x84, 0x15, 0x73, 0xc8, 0x7d, 0x27, 0xfa, 0x76, 0x39, 0x01, 0x03, 0xec, 0xc2, 0x10, 0xcf, 0xc7, 0x5a, 0x39, 0xe2, 0xbe, 0x13, 0x7d, 0xfb, 0x9c, 0x80, 0x01, 0x76, 0x61, 0x84, 0xe7, 0x63, 0x78,
0xe0, 0xa4, 0x37, 0x70, 0x86, 0x0e, 0xd6, 0xe8, 0x6e, 0xef, 0xe5, 0x49, 0x44, 0x43, 0xe9, 0x30, 0x6c, 0x0d, 0xdd, 0x91, 0x8b, 0xd5, 0xb9, 0x67, 0xbd, 0x38, 0x8e, 0x69, 0x24, 0x1d, 0x46, 0x04,
0x22, 0x98, 0xbb, 0x8c, 0xb7, 0xe3, 0x7e, 0xc5, 0x38, 0xc4, 0x80, 0x86, 0xe7, 0x0d, 0x7b, 0x61, 0xf3, 0x21, 0xe3, 0xed, 0x78, 0x5f, 0x31, 0x0e, 0x31, 0xa0, 0xe5, 0xfb, 0x23, 0x2b, 0x1a, 0xf8,
0xdf, 0x0b, 0x10, 0xeb, 0xd9, 0xaf, 0x78, 0xee, 0x2d, 0x9b, 0x75, 0x24, 0x76, 0x19, 0x6d, 0xc3, 0x21, 0xa2, 0x3c, 0xe7, 0x25, 0xcf, 0xbd, 0x55, 0xb3, 0x89, 0xc4, 0x3e, 0xa3, 0x6d, 0x38, 0x2f,
0x7e, 0x65, 0x58, 0xd0, 0xe8, 0x6e, 0xf3, 0xe5, 0x48, 0x04, 0x81, 0x9b, 0x79, 0x14, 0xca, 0x30, 0x0d, 0x1b, 0x5a, 0xfd, 0x6d, 0xbe, 0x1c, 0x89, 0x1d, 0x70, 0x33, 0x8f, 0x23, 0x19, 0xc6, 0xb8,
0xc6, 0xcd, 0xcc, 0xbe, 0x19, 0x2d, 0xf0, 0x06, 0xb1, 0x1d, 0xf8, 0x37, 0xa3, 0x45, 0x27, 0x7e, 0x99, 0xd9, 0x37, 0xa3, 0x85, 0xfe, 0x30, 0xb1, 0x03, 0xff, 0x66, 0xb4, 0xf8, 0x38, 0x48, 0x6a,
0x5c, 0x49, 0xf3, 0x6f, 0x66, 0xb0, 0x01, 0x3d, 0x46, 0xbc, 0x22, 0xc0, 0xa4, 0x68, 0x18, 0x36, 0x68, 0xfe, 0xcd, 0x0c, 0x36, 0xa4, 0x47, 0x88, 0x54, 0x04, 0x8c, 0x14, 0x0d, 0xc3, 0x01, 0xd8,
0xc0, 0xa6, 0xe5, 0x5b, 0x2f, 0x9d, 0x81, 0x13, 0x9d, 0xa0, 0x03, 0x5b, 0x96, 0x6d, 0xf7, 0xfa, 0xb4, 0x03, 0xfb, 0x85, 0x3b, 0x74, 0xe3, 0x63, 0x74, 0x60, 0xc7, 0x76, 0x1c, 0x6b, 0x90, 0x50,
0x31, 0xc5, 0xa1, 0x31, 0x94, 0x9c, 0x47, 0xfa, 0xa6, 0x46, 0x26, 0x1f, 0xc3, 0x82, 0x1d, 0x78, 0x5c, 0x9a, 0x80, 0xc8, 0x79, 0xa4, 0x6f, 0x6a, 0x64, 0xf2, 0x11, 0x2c, 0x38, 0xa1, 0x1f, 0x64,
0x7e, 0x5a, 0x56, 0x60, 0xcb, 0x16, 0x63, 0xe8, 0xc2, 0xc6, 0x7f, 0x4b, 0xb0, 0x98, 0x76, 0x8b, 0x65, 0x05, 0xaa, 0xec, 0x30, 0x86, 0x2e, 0x6c, 0xfc, 0xb7, 0x02, 0x8b, 0x59, 0xb7, 0xc8, 0x22,
0x2c, 0xd5, 0xef, 0x43, 0x2d, 0x88, 0x1d, 0x24, 0x37, 0xe7, 0x4a, 0xfa, 0x0c, 0xc9, 0x3b, 0xd2, 0xfd, 0x1e, 0x34, 0xc2, 0xc4, 0x41, 0x72, 0x73, 0xae, 0x64, 0xcf, 0x90, 0xa2, 0x23, 0xcd, 0xb4,
0x4c, 0xba, 0x60, 0xfc, 0xcf, 0x65, 0x14, 0x28, 0xa5, 0x02, 0x2f, 0x59, 0x9b, 0x99, 0x12, 0x24, 0x0b, 0xc6, 0xff, 0x5c, 0x4e, 0x81, 0x4a, 0x26, 0xf0, 0xd2, 0xb5, 0x99, 0x19, 0x41, 0xf2, 0x45,
0x5f, 0x26, 0x38, 0x2e, 0x2e, 0x15, 0xca, 0xbc, 0xef, 0x92, 0xea, 0x9b, 0x32, 0xbd, 0xc2, 0x77, 0x8a, 0xe0, 0x92, 0x52, 0xa1, 0xca, 0xfb, 0x2e, 0xa9, 0xbe, 0x19, 0xd3, 0x2b, 0x64, 0x97, 0xd4,
0x71, 0xd5, 0xfe, 0x13, 0xe9, 0x8a, 0x6c, 0x8d, 0xcf, 0xfb, 0x3c, 0x43, 0x8e, 0x70, 0x8f, 0xf1, 0xeb, 0x3f, 0x91, 0xae, 0xc8, 0x57, 0xf7, 0xbc, 0xcf, 0x53, 0xe4, 0x08, 0xf7, 0x18, 0xdf, 0x40,
0x0d, 0xd4, 0x14, 0x29, 0x06, 0x3e, 0x22, 0xf6, 0x38, 0xf0, 0x41, 0xca, 0xa1, 0xcc, 0xc5, 0x48, 0x43, 0x91, 0x12, 0xc8, 0x23, 0x62, 0x8f, 0x43, 0x1e, 0xa4, 0x1c, 0xc8, 0x5c, 0x8c, 0x14, 0xfc,
0xc1, 0x4f, 0x86, 0x30, 0xd1, 0xd6, 0x0e, 0x9b, 0xc5, 0x1a, 0xf4, 0x90, 0xc2, 0x34, 0x2b, 0x23, 0x64, 0xd8, 0x12, 0x6d, 0xed, 0xb2, 0x59, 0xec, 0xa1, 0x85, 0x14, 0xa6, 0x59, 0x15, 0xb9, 0xed,
0xb7, 0x99, 0x90, 0x1f, 0x22, 0x15, 0xb1, 0xff, 0x82, 0x32, 0xce, 0xa9, 0x70, 0x4b, 0x83, 0x4f, 0x94, 0x7c, 0x1f, 0xa9, 0x88, 0xfa, 0x17, 0x94, 0x71, 0x4e, 0x04, 0x5a, 0x1a, 0x70, 0x9a, 0xca,
0x53, 0x69, 0xf8, 0xf4, 0x9f, 0x0a, 0xcc, 0x67, 0x5d, 0x72, 0x3b, 0x87, 0x9e, 0x3a, 0x89, 0x39, 0x02, 0xa7, 0xff, 0xd4, 0x60, 0x3e, 0xef, 0x92, 0x5b, 0x05, 0xdc, 0xd4, 0x4b, 0xcd, 0x99, 0x9f,
0xb3, 0xf3, 0x69, 0x99, 0xed, 0x46, 0xbc, 0x89, 0xa7, 0x32, 0x16, 0x51, 0xfb, 0x5c, 0x6e, 0x6c, 0x4f, 0xcb, 0x6c, 0xd7, 0x93, 0x4d, 0x3c, 0x95, 0xb3, 0x88, 0xda, 0xe7, 0x72, 0x63, 0x33, 0x7d,
0xa6, 0x4f, 0xdf, 0x1b, 0x0e, 0x31, 0x21, 0xf0, 0x95, 0x61, 0xe1, 0x26, 0x9b, 0x4c, 0x7b, 0x2b, 0x06, 0xfe, 0x68, 0x84, 0x09, 0x81, 0xaf, 0x0c, 0x0b, 0x37, 0xd9, 0x64, 0xda, 0xdb, 0xe1, 0x41,
0x38, 0x0c, 0xf9, 0x71, 0x82, 0xda, 0xb3, 0x6f, 0x72, 0x0d, 0xea, 0xac, 0xd4, 0x40, 0xbc, 0xc3, 0xc4, 0x8f, 0x13, 0xd4, 0x9e, 0x7d, 0x93, 0xab, 0xd0, 0x64, 0xa5, 0x06, 0x22, 0x1d, 0x06, 0xbb,
0xc0, 0x97, 0xbc, 0x0c, 0x00, 0x49, 0x42, 0xe8, 0x85, 0x90, 0x7f, 0x9a, 0xba, 0xc7, 0x31, 0x04, 0xe4, 0x35, 0x00, 0x48, 0x12, 0x82, 0x2e, 0x04, 0xfb, 0xd3, 0xd4, 0x3b, 0x4a, 0xc0, 0x4f, 0x7a,
0x4a, 0x2e, 0x26, 0xe2, 0xe4, 0x61, 0x72, 0x36, 0x3a, 0x6c, 0x66, 0xc8, 0xae, 0x0d, 0xe2, 0xa2, 0x25, 0x91, 0x24, 0x0f, 0x93, 0xb3, 0xd1, 0x61, 0x33, 0x23, 0x76, 0x61, 0x90, 0x14, 0x1d, 0x6d,
0xa3, 0xa9, 0x04, 0xf9, 0x6d, 0x82, 0x29, 0xb9, 0xe4, 0x73, 0x95, 0x52, 0x45, 0x61, 0xf1, 0x61, 0x25, 0xc8, 0xef, 0x11, 0x4c, 0xc9, 0x25, 0x9f, 0xa9, 0x94, 0x2a, 0x0a, 0x8b, 0x0f, 0x8a, 0xab,
0x7e, 0xf5, 0xa7, 0x40, 0xaa, 0x47, 0xe9, 0xda, 0xa4, 0xc6, 0x87, 0xb8, 0x39, 0x76, 0x88, 0xd3, 0x3f, 0x01, 0x4c, 0x3d, 0xc8, 0xd6, 0x26, 0x0d, 0x3e, 0xc4, 0x8d, 0x89, 0x43, 0x9c, 0x8c, 0xa5,
0x11, 0xd5, 0x55, 0x00, 0x3f, 0x70, 0x8e, 0x9d, 0x01, 0x3d, 0xa4, 0x76, 0x1b, 0x38, 0xe8, 0xd7, 0xae, 0x00, 0x04, 0xa1, 0x7b, 0xe4, 0x0e, 0xe9, 0x01, 0x75, 0xba, 0xc0, 0xe1, 0xbe, 0x46, 0xe1,
0x28, 0xfc, 0x5a, 0x49, 0x5e, 0x4c, 0xf4, 0x02, 0xcf, 0x8b, 0x0e, 0xc2, 0x76, 0x5d, 0x5c, 0x46, 0x17, 0x4a, 0xf2, 0x4a, 0xc2, 0x0a, 0x7d, 0x3f, 0xde, 0x8f, 0xba, 0x4d, 0x71, 0x0d, 0x91, 0x90,
0xc4, 0x64, 0x93, 0x53, 0xd9, 0xdd, 0x01, 0x03, 0xaf, 0xfc, 0xb6, 0x63, 0x4e, 0xd4, 0xca, 0xd8, 0x4d, 0x4e, 0x65, 0xb7, 0x06, 0x0c, 0xb6, 0xf2, 0x7b, 0x8e, 0x39, 0x51, 0x2b, 0x63, 0x9b, 0x5f,
0xe6, 0x97, 0x1d, 0x8b, 0xec, 0x40, 0xb2, 0x1d, 0xb7, 0xdd, 0xe0, 0x3d, 0x45, 0x83, 0xe5, 0x3b, 0x73, 0x2c, 0xb2, 0x03, 0xc9, 0x71, 0xbd, 0x6e, 0x8b, 0xf7, 0x14, 0x0d, 0x96, 0xef, 0xf8, 0x87,
0xfe, 0xd1, 0xf3, 0x5c, 0x04, 0xe4, 0x4d, 0xce, 0xaa, 0x71, 0xca, 0x13, 0x24, 0xb0, 0xa8, 0x8d, 0xe5, 0x7b, 0x08, 0xc5, 0xdb, 0x9c, 0xd5, 0xe0, 0x94, 0xc7, 0x48, 0x60, 0x51, 0x1b, 0xc7, 0xc7,
0xa2, 0x93, 0xf6, 0x3c, 0xa7, 0xb3, 0x4f, 0x44, 0xbe, 0xb2, 0x10, 0x6c, 0x71, 0xef, 0x5f, 0x19, 0xdd, 0x79, 0x4e, 0x67, 0x9f, 0x88, 0x79, 0x65, 0x21, 0xd8, 0xe1, 0xde, 0x7f, 0x6f, 0xc2, 0x26,
0xb3, 0x89, 0xdf, 0x1b, 0xec, 0xf7, 0xd7, 0x12, 0x2c, 0x09, 0xb8, 0xa6, 0x25, 0x98, 0x09, 0x50, 0x7e, 0x67, 0x50, 0xdf, 0x5f, 0x2b, 0xb0, 0xb4, 0xc9, 0x8f, 0x51, 0x2d, 0xc1, 0x9c, 0x01, 0xb5,
0x0b, 0xb9, 0xa5, 0x10, 0x62, 0x16, 0x62, 0x64, 0x17, 0x2b, 0xe5, 0xc8, 0x03, 0x68, 0xc6, 0x63, 0x90, 0x9b, 0x0a, 0x1e, 0xe6, 0x21, 0x46, 0x7e, 0xb1, 0x52, 0x8e, 0x7c, 0x09, 0xed, 0x64, 0x4c,
0xca, 0x9e, 0xe5, 0xb7, 0x61, 0xcb, 0x46, 0xa8, 0x37, 0x8d, 0xcf, 0x63, 0xc0, 0xaa, 0x27, 0x45, 0xd9, 0xb3, 0xfa, 0x26, 0x60, 0xd9, 0x8a, 0xf4, 0xa6, 0xf1, 0x19, 0x2c, 0x17, 0x74, 0x96, 0x47,
0x71, 0xf4, 0x5e, 0xc7, 0x44, 0xa8, 0xee, 0xbd, 0x94, 0xca, 0x75, 0x45, 0x43, 0x9c, 0x75, 0x8f, 0xef, 0x35, 0x4c, 0x84, 0xea, 0xc6, 0x4b, 0xa9, 0xdc, 0x54, 0x34, 0xc4, 0x59, 0x77, 0x19, 0xbc,
0xc1, 0x4b, 0x2b, 0x88, 0x72, 0x0b, 0x3e, 0x43, 0x5f, 0x8e, 0x2d, 0xd3, 0x7d, 0x25, 0xfc, 0xeb, 0xb4, 0xc3, 0xb8, 0xb0, 0xe0, 0x53, 0xf4, 0xe5, 0xd8, 0x32, 0xdb, 0x57, 0xc2, 0xbf, 0x3e, 0x2c,
0xc2, 0x22, 0x43, 0x9d, 0xef, 0x30, 0x28, 0xcb, 0x03, 0x6c, 0xd9, 0xde, 0x28, 0x92, 0xf9, 0x2f, 0x32, 0xd4, 0xf9, 0x16, 0x83, 0xb2, 0x3c, 0xc0, 0x96, 0xed, 0x8f, 0x63, 0x99, 0xff, 0x92, 0xa6,
0x6e, 0x1a, 0xcb, 0x02, 0x09, 0xe7, 0x67, 0xfb, 0x0c, 0x96, 0x04, 0x10, 0x7d, 0x97, 0x45, 0x5c, 0xb1, 0x2c, 0x90, 0x70, 0x71, 0xb6, 0x4f, 0x61, 0x49, 0x00, 0xd1, 0xb7, 0x59, 0xc4, 0xc5, 0x04,
0x8c, 0x61, 0x70, 0x7e, 0xdc, 0x3f, 0x4d, 0x69, 0x89, 0x70, 0x82, 0xca, 0xf9, 0xd3, 0x74, 0x39, 0x06, 0x17, 0xc7, 0xfd, 0xd3, 0x94, 0x96, 0x08, 0xcf, 0x50, 0x39, 0x7f, 0x92, 0x2d, 0xe7, 0x96,
0xb7, 0x9c, 0x0f, 0x82, 0x54, 0x35, 0x97, 0x0f, 0xad, 0xe9, 0x82, 0xd0, 0x32, 0x73, 0xe5, 0xb5, 0x8b, 0x41, 0x90, 0xa9, 0xe6, 0x8a, 0xa1, 0x35, 0x5d, 0x12, 0x5a, 0x66, 0xa1, 0xbc, 0x16, 0xc5,
0x28, 0xee, 0x3e, 0xce, 0x8f, 0xfe, 0x03, 0x56, 0xd7, 0x3b, 0xa2, 0xba, 0x56, 0x53, 0x2b, 0x94, 0xdd, 0x47, 0xc5, 0xd1, 0x7f, 0xc0, 0xea, 0x7a, 0x47, 0x54, 0xd7, 0x6a, 0x6a, 0x85, 0xf2, 0x6f,
0x7f, 0x2b, 0x53, 0x5d, 0xb7, 0xc7, 0xa9, 0xa9, 0x8a, 0xeb, 0x7f, 0x94, 0xa1, 0xa6, 0x78, 0xb9, 0xe6, 0xaa, 0xeb, 0xee, 0x24, 0x35, 0x55, 0x71, 0xfd, 0xcf, 0x2a, 0x34, 0x14, 0xaf, 0x50, 0x5b,
0xda, 0xfa, 0x76, 0xae, 0xb6, 0x9e, 0xf0, 0x00, 0x2a, 0xbf, 0xed, 0x00, 0xc2, 0x52, 0x8f, 0x7f, 0xdf, 0x2a, 0xd4, 0xd6, 0x67, 0x3c, 0x80, 0xaa, 0x6f, 0x3a, 0x80, 0xb0, 0xd4, 0xe3, 0x1f, 0x56,
0xf4, 0x02, 0x7a, 0x20, 0x3d, 0x50, 0xe5, 0x04, 0x93, 0x1e, 0x24, 0x2e, 0xad, 0x9c, 0xc9, 0xa5, 0x48, 0xf7, 0xa5, 0x07, 0xea, 0x9c, 0x60, 0xd2, 0xfd, 0xd4, 0xa5, 0xb5, 0x53, 0xb9, 0xf4, 0x56,
0xb7, 0x33, 0x57, 0x70, 0x57, 0xf3, 0xf2, 0x85, 0x07, 0xc5, 0x76, 0xd1, 0xdd, 0xdb, 0x07, 0x05, 0xee, 0xf2, 0xed, 0x4a, 0x51, 0xbe, 0xf4, 0xa0, 0xd8, 0x2e, 0xbb, 0x75, 0x7b, 0xbf, 0xa4, 0xf3,
0x9d, 0xdf, 0x5b, 0xf4, 0xba, 0x2b, 0x70, 0x80, 0x1e, 0x10, 0x32, 0x19, 0xad, 0x63, 0xb5, 0xac, 0x3b, 0x8b, 0x5e, 0x1f, 0x0a, 0x1c, 0xa0, 0x07, 0x84, 0x4c, 0x46, 0xeb, 0x58, 0x2d, 0x2b, 0xaa,
0xa8, 0x12, 0x0c, 0x90, 0xfc, 0xd2, 0x4c, 0x4d, 0x8a, 0xed, 0xec, 0x94, 0x81, 0x93, 0x5b, 0xa4, 0x04, 0x03, 0xa4, 0xb8, 0x34, 0x53, 0x93, 0x62, 0x3b, 0x3b, 0x63, 0xe0, 0xf4, 0x16, 0xe9, 0x14,
0x33, 0xec, 0xec, 0x3f, 0xe8, 0x75, 0xcc, 0x98, 0xeb, 0x96, 0x77, 0x0d, 0xab, 0x09, 0xb7, 0xf8, 0x3b, 0xfb, 0x0f, 0x7a, 0x1d, 0x33, 0xe1, 0xba, 0xe5, 0x6d, 0xc3, 0xea, 0x8c, 0x5b, 0xfc, 0x0d,
0x5b, 0x00, 0x1b, 0x3f, 0x58, 0x31, 0x91, 0x0a, 0xb6, 0xa8, 0xf9, 0x6b, 0x92, 0x82, 0x6c, 0x2c, 0x80, 0x8d, 0x1f, 0xac, 0x98, 0x48, 0x05, 0x5b, 0xd4, 0xfc, 0x0d, 0x49, 0x41, 0x36, 0x16, 0x3b,
0x76, 0x0e, 0x1c, 0xd7, 0x09, 0x8f, 0x04, 0x7f, 0x86, 0xf3, 0x21, 0x26, 0x6d, 0xf0, 0x37, 0x13, 0xfb, 0xae, 0xe7, 0x46, 0x87, 0x82, 0x3f, 0xc3, 0xf9, 0x90, 0x90, 0x36, 0xf8, 0x6b, 0x09, 0x7d,
0xfa, 0x06, 0x11, 0x46, 0xdf, 0xb3, 0x29, 0x06, 0x0d, 0x7f, 0x33, 0x61, 0x84, 0x4d, 0x6c, 0x27, 0x8d, 0x08, 0x63, 0xe0, 0x3b, 0x14, 0x83, 0x86, 0xbf, 0x96, 0x30, 0xc2, 0x26, 0xb6, 0xd3, 0x1d,
0x3b, 0xa0, 0x3a, 0xd1, 0x0e, 0xa8, 0x65, 0x76, 0xc0, 0x12, 0xcc, 0xa0, 0xbe, 0xa1, 0xe7, 0xf2, 0x50, 0x3f, 0xd3, 0x0e, 0x68, 0xe4, 0x76, 0xc0, 0x12, 0xcc, 0xa0, 0xbe, 0x91, 0xef, 0xf1, 0x92,
0x92, 0xa3, 0x66, 0xca, 0x96, 0x56, 0x19, 0xd5, 0xc7, 0x55, 0x46, 0xa7, 0xdc, 0xda, 0x64, 0x2a, 0xa3, 0x61, 0xca, 0x96, 0x56, 0x19, 0x35, 0x27, 0x55, 0x46, 0x27, 0xdc, 0xda, 0xe4, 0x2a, 0xa3,
0xa3, 0xb9, 0x71, 0x95, 0xd1, 0x59, 0x2e, 0x6d, 0xb4, 0x62, 0xae, 0x71, 0x5a, 0x31, 0xf7, 0x63, 0xb9, 0x49, 0x95, 0xd1, 0x69, 0x2e, 0x6d, 0xb4, 0x62, 0xae, 0x75, 0x52, 0x31, 0xf7, 0x63, 0x6e,
0x6e, 0x8f, 0x47, 0x78, 0x58, 0x67, 0x03, 0x5a, 0xee, 0x8f, 0x5b, 0x99, 0xbb, 0x9d, 0xf6, 0x38, 0x8f, 0x07, 0x78, 0x58, 0xe7, 0x03, 0x5a, 0xee, 0x8f, 0x9b, 0xb9, 0xbb, 0x9d, 0xee, 0x24, 0x2b,
0x2b, 0xa8, 0xab, 0x9d, 0x57, 0x50, 0xdf, 0x7e, 0x83, 0xee, 0x3b, 0xfb, 0xe1, 0x8a, 0xaa, 0xf6, 0xa8, 0xab, 0x9d, 0x97, 0xd0, 0xdc, 0x7e, 0x8d, 0xee, 0x3b, 0xfd, 0xe1, 0x8a, 0xaa, 0x0e, 0x46,
0x87, 0xb6, 0x44, 0x64, 0xec, 0x33, 0x2e, 0xda, 0xca, 0x49, 0xd1, 0xa6, 0x6a, 0x3f, 0x16, 0xa6, 0x8e, 0x44, 0x64, 0xec, 0x33, 0x29, 0xda, 0xaa, 0x69, 0xd1, 0xa6, 0x6a, 0x3f, 0x16, 0xa6, 0x73,
0x73, 0xb2, 0xf6, 0x33, 0xee, 0xc3, 0x9c, 0x98, 0x4b, 0x6a, 0xbb, 0xc4, 0xb4, 0xb5, 0xd9, 0x29, 0xb2, 0xf6, 0x33, 0xee, 0xc1, 0x9c, 0x98, 0x4b, 0x6a, 0xbb, 0xc4, 0xb4, 0x75, 0xd8, 0x29, 0x5d,
0x5d, 0xe2, 0x62, 0xb2, 0x25, 0xe9, 0x34, 0x08, 0xf8, 0xda, 0x05, 0x1d, 0x5b, 0xc6, 0x1d, 0xa8, 0xe1, 0x62, 0xb2, 0x25, 0xe9, 0x34, 0x0c, 0xf9, 0xda, 0x05, 0x1d, 0x5b, 0xc6, 0x6d, 0x68, 0xf2,
0xf3, 0x78, 0x93, 0xc7, 0xe8, 0x0d, 0x1d, 0xdc, 0x9f, 0x16, 0x94, 0x0c, 0xd0, 0xb0, 0x84, 0xc2, 0x78, 0x93, 0xc7, 0xe8, 0x75, 0x1d, 0xdc, 0x9f, 0x14, 0x94, 0x0c, 0xd0, 0xb0, 0x84, 0xc2, 0xe9,
0xe9, 0x6a, 0xf7, 0x7f, 0x92, 0x39, 0x5d, 0x16, 0xd3, 0xfd, 0x33, 0x27, 0xcb, 0x6b, 0xa8, 0x70, 0x6a, 0xf7, 0x7f, 0x9c, 0x3b, 0x5d, 0x16, 0xb3, 0xfd, 0x73, 0x27, 0xcb, 0x2b, 0xa8, 0x71, 0x72,
0x72, 0x6e, 0xf7, 0x5f, 0x62, 0x40, 0xd3, 0xf7, 0x7a, 0x91, 0x75, 0xa8, 0x9e, 0x40, 0x19, 0xe1, 0x61, 0xf7, 0x5f, 0x62, 0x40, 0x33, 0xf0, 0xad, 0xd8, 0x3e, 0x50, 0x8f, 0x9f, 0x8c, 0xf0, 0x04,
0x29, 0xb6, 0xf9, 0x0b, 0x2e, 0x63, 0xda, 0x0e, 0x4e, 0x1c, 0x85, 0x12, 0x95, 0xd4, 0x19, 0x6d, 0xdb, 0xfc, 0xed, 0x96, 0x31, 0x1d, 0x17, 0x27, 0x8e, 0x23, 0x89, 0x4a, 0x9a, 0x8c, 0xb6, 0x25,
0x4b, 0x90, 0x58, 0x31, 0x10, 0x3a, 0xbf, 0xa3, 0xdc, 0x52, 0xd3, 0x26, 0xff, 0xc6, 0x72, 0x8c, 0x48, 0xac, 0x18, 0x88, 0xdc, 0xdf, 0x51, 0x6e, 0xa9, 0x69, 0x93, 0x7f, 0x63, 0x39, 0x46, 0x74,
0xe8, 0xfa, 0x4a, 0x73, 0x61, 0x68, 0xf2, 0xe5, 0xc4, 0x89, 0xaf, 0x99, 0x56, 0xd8, 0x94, 0x5c, 0x7d, 0xa5, 0xb9, 0x30, 0x34, 0xf9, 0x72, 0x92, 0xc4, 0xd7, 0xce, 0x2a, 0x6c, 0x4a, 0x2e, 0x9a,
0x34, 0x33, 0x11, 0x16, 0x48, 0x25, 0xbb, 0xb3, 0x5b, 0xeb, 0x33, 0x38, 0x9f, 0xea, 0xaf, 0x9e, 0x99, 0x08, 0x0b, 0x64, 0x92, 0xdd, 0xe9, 0xad, 0xf5, 0x29, 0x9c, 0xcf, 0xf4, 0x57, 0x4f, 0x0d,
0x1a, 0x52, 0x03, 0x64, 0x67, 0x97, 0x9d, 0xff, 0x5d, 0x02, 0xd8, 0x18, 0x45, 0x47, 0x12, 0xf3, 0x99, 0x01, 0xf2, 0xb3, 0xcb, 0xce, 0xff, 0xae, 0x00, 0x6c, 0x8c, 0xe3, 0x43, 0x89, 0xf9, 0x7a,
0x75, 0xa0, 0xca, 0xc0, 0xaa, 0x56, 0xee, 0xa8, 0x36, 0xe3, 0xf9, 0x56, 0x18, 0x22, 0xe0, 0x8a, 0x50, 0x67, 0x60, 0x55, 0x2b, 0x77, 0x54, 0x9b, 0xf1, 0x02, 0x3b, 0x8a, 0x10, 0x70, 0x25, 0x85,
0x0b, 0x1f, 0xd5, 0xe6, 0x78, 0x6d, 0xa4, 0x5e, 0x50, 0xf9, 0x37, 0x7b, 0x81, 0x15, 0xcf, 0xce, 0x8f, 0x6a, 0x73, 0xbc, 0x36, 0x56, 0x6f, 0xa7, 0xfc, 0x9b, 0xbd, 0xbd, 0x8a, 0x07, 0x67, 0x0b,
0x3d, 0xc4, 0xab, 0x88, 0xd4, 0x43, 0x79, 0xc2, 0x36, 0x04, 0x75, 0x43, 0x10, 0x99, 0x98, 0x63, 0xf1, 0x2a, 0x22, 0xf5, 0x48, 0x9e, 0xb0, 0x2d, 0x41, 0xdd, 0x10, 0x44, 0x26, 0xe6, 0x3a, 0x14,
0x53, 0x54, 0x2d, 0x3a, 0xe9, 0x45, 0xde, 0x6b, 0xea, 0x4a, 0x64, 0xd7, 0x88, 0xa9, 0x4f, 0x19, 0x55, 0x8b, 0x8f, 0xad, 0xd8, 0x7f, 0x45, 0x3d, 0x89, 0xec, 0x5a, 0x09, 0xf5, 0x09, 0x23, 0x32,
0x91, 0x89, 0x05, 0xf4, 0x10, 0xad, 0x1c, 0xc4, 0x62, 0x33, 0x42, 0x2c, 0xa6, 0x72, 0x31, 0xf6, 0xb1, 0x90, 0x1e, 0xa0, 0x95, 0xc3, 0x44, 0x6c, 0x46, 0x88, 0x25, 0x54, 0x2e, 0xc6, 0xde, 0xea,
0x62, 0xdf, 0xda, 0x1f, 0x0d, 0x06, 0x62, 0x91, 0x93, 0xda, 0x12, 0x81, 0x94, 0x58, 0x47, 0xf6, 0x3b, 0x7b, 0xe3, 0xe1, 0x50, 0x2c, 0xf2, 0xac, 0xb6, 0x44, 0x20, 0x25, 0xd6, 0x91, 0xbf, 0x3e,
0xfa, 0x20, 0x31, 0x91, 0x5c, 0xdc, 0xf7, 0xaf, 0xe1, 0xcf, 0xc3, 0x82, 0xa6, 0xa8, 0x2c, 0x3f, 0x48, 0x4d, 0x24, 0x17, 0xf7, 0xfd, 0x6b, 0xf8, 0xf3, 0xb0, 0xa0, 0x29, 0x2a, 0xcb, 0x4f, 0x8c,
0x31, 0x16, 0x44, 0x65, 0xfa, 0x6e, 0xfa, 0x1b, 0x17, 0xe0, 0x7c, 0xaa, 0xbf, 0x18, 0x76, 0xf5, 0x05, 0x51, 0x99, 0xbe, 0x9d, 0xfe, 0xc6, 0x05, 0x38, 0x9f, 0xe9, 0x2f, 0x86, 0x5d, 0xbd, 0x0c,
0x32, 0x54, 0xe3, 0xd7, 0x79, 0x32, 0x0b, 0xe5, 0xa7, 0x9b, 0xfb, 0xad, 0x73, 0xec, 0xe3, 0xd9, 0xf5, 0xe4, 0x5d, 0x9e, 0xcc, 0x42, 0xf5, 0xc9, 0xe6, 0x5e, 0xe7, 0x1c, 0xfb, 0x78, 0xba, 0xb5,
0xd6, 0x7e, 0xab, 0xb4, 0xba, 0x0a, 0xf3, 0x99, 0x4b, 0x47, 0x52, 0x83, 0x8a, 0xb9, 0xbd, 0xb1, 0xd7, 0xa9, 0xac, 0xae, 0xc2, 0x7c, 0xee, 0xd2, 0x91, 0x34, 0xa0, 0x66, 0x6e, 0x6f, 0x6c, 0x3d,
0xf5, 0x02, 0xc5, 0xe6, 0xa0, 0xba, 0xf7, 0xe4, 0xa9, 0x68, 0x95, 0x56, 0x37, 0xa1, 0x99, 0x3e, 0x47, 0xb1, 0x39, 0xa8, 0xef, 0x3e, 0x7e, 0x22, 0x5a, 0x95, 0xd5, 0x4d, 0x68, 0x67, 0x8f, 0x3b,
0xee, 0x48, 0x1d, 0x66, 0x37, 0x91, 0xfb, 0x74, 0x7b, 0x0b, 0x85, 0xb1, 0x61, 0x3e, 0xdb, 0xdb, 0xd2, 0x84, 0xd9, 0x4d, 0xe4, 0x3e, 0xd9, 0xde, 0x42, 0x61, 0x6c, 0x98, 0x4f, 0x77, 0x77, 0x77,
0xdb, 0xd9, 0x7b, 0xd8, 0x2a, 0x11, 0x80, 0x99, 0xed, 0x6f, 0x76, 0x18, 0x63, 0x8a, 0x31, 0x9e, 0x76, 0xef, 0x77, 0x2a, 0x04, 0x60, 0x66, 0xfb, 0x9b, 0x1d, 0xc6, 0x98, 0x62, 0x8c, 0xa7, 0xbb,
0xed, 0x3d, 0xda, 0x7b, 0xf2, 0x9b, 0xbd, 0x56, 0x79, 0xfd, 0x9f, 0x55, 0x68, 0x9a, 0x62, 0x09, 0x0f, 0x76, 0x1f, 0xff, 0x66, 0xb7, 0x53, 0x5d, 0xff, 0x47, 0x1d, 0xda, 0xa6, 0x58, 0x42, 0x1f,
0x5d, 0x8c, 0x05, 0x07, 0x81, 0xe4, 0x7d, 0x98, 0x8d, 0x7f, 0x7d, 0x48, 0x0e, 0xd6, 0xf4, 0x7f, 0x63, 0xc1, 0x45, 0x20, 0x79, 0x0f, 0x66, 0x93, 0x9f, 0x1e, 0xd2, 0x83, 0x35, 0xfb, 0x87, 0x46,
0x1a, 0x9d, 0x76, 0x9e, 0x21, 0xcd, 0x76, 0x8e, 0xbc, 0x80, 0x56, 0xf6, 0xd1, 0x8d, 0x24, 0x17, 0xaf, 0x5b, 0x64, 0x48, 0xb3, 0x9d, 0x23, 0x7b, 0xd0, 0xca, 0xbc, 0xb8, 0x91, 0x14, 0x78, 0x96,
0x48, 0x63, 0x5e, 0xf7, 0x3a, 0xd7, 0x4f, 0x91, 0x50, 0x43, 0x77, 0xa1, 0x99, 0x7e, 0x4e, 0x23, 0x3d, 0xea, 0xf5, 0xae, 0x4c, 0x62, 0xab, 0x11, 0xfb, 0xd0, 0xce, 0xbe, 0xa2, 0x91, 0xb4, 0x4f,
0x49, 0x69, 0x57, 0xf8, 0x4c, 0xd7, 0xb9, 0x36, 0x96, 0xaf, 0xeb, 0x9b, 0x7d, 0x48, 0xd3, 0xf4, 0xe9, 0xeb, 0x5c, 0xef, 0xea, 0x44, 0xbe, 0x1a, 0xf4, 0x39, 0x74, 0xf2, 0xef, 0x67, 0x24, 0xbd,
0x1d, 0xf3, 0x48, 0xa7, 0xe9, 0x3b, 0xf6, 0x15, 0x8e, 0x0f, 0x9d, 0x7b, 0x72, 0x5a, 0x19, 0xff, 0xe7, 0x9a, 0xf0, 0x36, 0xd7, 0xbb, 0x76, 0x82, 0x84, 0x3e, 0x74, 0xe1, 0xa5, 0x69, 0x65, 0xf2,
0x68, 0x90, 0x1b, 0x7a, 0xdc, 0x4b, 0x84, 0x30, 0x45, 0xfa, 0xc6, 0x97, 0xe8, 0x0f, 0x3d, 0x05, 0x5b, 0x41, 0x61, 0xe8, 0x49, 0x0f, 0x10, 0xc2, 0x14, 0xd9, 0x8b, 0x5e, 0xa2, 0xbf, 0xef, 0x94,
0x37, 0xee, 0x9a, 0x29, 0x8a, 0xaf, 0x8a, 0x71, 0xd0, 0xe7, 0x58, 0xb2, 0xa5, 0xc1, 0x2c, 0xb9, 0x5c, 0xb4, 0x6b, 0xa6, 0x28, 0xbf, 0x21, 0xc6, 0x41, 0x9f, 0x61, 0xa5, 0x96, 0xc5, 0xb0, 0x24,
0x96, 0xf1, 0x4b, 0x16, 0xe4, 0x75, 0x56, 0xc6, 0x0b, 0xa4, 0xfd, 0xa6, 0x43, 0xd5, 0x94, 0xdf, 0xed, 0x55, 0x8e, 0xc8, 0x7b, 0x2b, 0x93, 0x05, 0xb2, 0x7e, 0xd3, 0x11, 0x6a, 0xc6, 0x6f, 0x25,
0x0a, 0xf0, 0x6f, 0xca, 0x6f, 0x85, 0x18, 0xf7, 0x1c, 0xd9, 0x87, 0x46, 0x0a, 0x90, 0x92, 0x2b, 0xb0, 0x37, 0xe3, 0xb7, 0x52, 0x68, 0xcb, 0xc3, 0x2b, 0x83, 0x43, 0xb5, 0xf0, 0x2a, 0x03, 0xbd,
0x29, 0x5f, 0xe7, 0x86, 0xbc, 0x3a, 0x8e, 0xad, 0x2f, 0x3f, 0x03, 0x46, 0xb5, 0xe5, 0x17, 0x63, 0xbd, 0x2b, 0x93, 0xd8, 0xfa, 0xf2, 0x73, 0x18, 0x54, 0x5b, 0x7e, 0x39, 0xb4, 0xed, 0xad, 0x4c,
0xdc, 0xce, 0xca, 0x78, 0x81, 0xac, 0xaf, 0x92, 0xaa, 0x3c, 0xe3, 0xab, 0x1c, 0x7e, 0xcb, 0xf8, 0x16, 0xc8, 0xfb, 0x2a, 0x2d, 0xc6, 0x73, 0xbe, 0x2a, 0xc0, 0xb6, 0x9c, 0xaf, 0x8a, 0x55, 0xbc,
0x2a, 0x5f, 0xce, 0x4b, 0x5f, 0x65, 0xca, 0xeb, 0x6b, 0x63, 0x6b, 0x96, 0xbc, 0xaf, 0x8a, 0xcb, 0xf4, 0x55, 0xae, 0xaa, 0xbe, 0x3a, 0xb1, 0x54, 0x29, 0xfa, 0xaa, 0xbc, 0xfa, 0xc1, 0x71, 0xef,
0x20, 0x1c, 0xf7, 0x2e, 0x4c, 0xb3, 0x52, 0x83, 0x24, 0x87, 0xba, 0x56, 0xe5, 0x74, 0x2e, 0x64, 0xc0, 0x34, 0xab, 0x30, 0x48, 0x7a, 0x96, 0x6b, 0xc5, 0x4d, 0xef, 0x42, 0x8e, 0x9a, 0x74, 0xbb,
0xa8, 0x71, 0xb7, 0x1b, 0xa5, 0x5b, 0xa5, 0xf5, 0xbf, 0x4d, 0xc1, 0x9c, 0xc8, 0x83, 0x32, 0x95, 0x5e, 0xb9, 0x59, 0x59, 0xff, 0xdb, 0x14, 0xcc, 0x89, 0xf4, 0x27, 0x33, 0xc8, 0x7d, 0x80, 0xf4,
0x3c, 0x04, 0x48, 0x4e, 0x63, 0xd2, 0x49, 0x2d, 0x2a, 0x55, 0x52, 0x74, 0x2e, 0x15, 0xf2, 0x94, 0x10, 0x26, 0xbd, 0xcc, 0xa2, 0x32, 0x95, 0x44, 0xef, 0x52, 0x29, 0x4f, 0x29, 0xf5, 0xb5, 0x2c,
0x52, 0x5f, 0xcb, 0xfa, 0x45, 0x2e, 0xf4, 0x52, 0x26, 0xed, 0xa6, 0x16, 0x79, 0xb9, 0x98, 0xa9, 0x5b, 0xe4, 0x42, 0x2f, 0xe5, 0xb2, 0x6d, 0x66, 0x91, 0x97, 0xcb, 0x99, 0x6a, 0xac, 0x2d, 0x68,
0xc6, 0xda, 0x82, 0x9a, 0xca, 0xf6, 0x44, 0x3b, 0x24, 0x32, 0x47, 0x55, 0xa7, 0x53, 0xc4, 0xd2, 0xa8, 0x24, 0x4f, 0xb4, 0xb3, 0x21, 0x77, 0x42, 0xf5, 0x7a, 0x65, 0x2c, 0x5d, 0x23, 0x2d, 0xab,
0x35, 0xd2, 0xd2, 0xbb, 0xa6, 0x51, 0xfe, 0xd0, 0xd0, 0x34, 0x2a, 0x38, 0x11, 0x8c, 0x73, 0xff, 0x6b, 0x1a, 0x15, 0xcf, 0x0a, 0x4d, 0xa3, 0x92, 0x83, 0xc0, 0x38, 0xf7, 0xff, 0x00, 0x00, 0x00,
0x0f, 0x00, 0x00, 0xff, 0xff, 0x42, 0xad, 0xb8, 0x8d, 0x1c, 0x27, 0x00, 0x00, 0xff, 0xff, 0xce, 0xf1, 0x39, 0x6f, 0x0d, 0x27, 0x00, 0x00,
} }

View File

@ -8,9 +8,9 @@ service RuntimeService {
// Version returns the runtime name, runtime version and runtime API version // Version returns the runtime name, runtime version and runtime API version
rpc Version(VersionRequest) returns (VersionResponse) {} rpc Version(VersionRequest) returns (VersionResponse) {}
// CreatePodSandbox creates a pod-level sandbox. // RunPodSandbox creates and starts a pod-level sandbox. Runtimes should ensure
// The definition of PodSandbox is at https://github.com/kubernetes/kubernetes/pull/25899 // the sandbox is in ready state.
rpc CreatePodSandbox(CreatePodSandboxRequest) returns (CreatePodSandboxResponse) {} rpc RunPodSandbox(RunPodSandboxRequest) returns (RunPodSandboxResponse) {}
// StopPodSandbox stops the running sandbox. If there are any running // StopPodSandbox stops the running sandbox. If there are any running
// containers in the sandbox, they should be forcibly terminated. // containers in the sandbox, they should be forcibly terminated.
rpc StopPodSandbox(StopPodSandboxRequest) returns (StopPodSandboxResponse) {} rpc StopPodSandbox(StopPodSandboxRequest) returns (StopPodSandboxResponse) {}
@ -188,12 +188,12 @@ message PodSandboxConfig {
optional LinuxPodSandboxConfig linux = 8; optional LinuxPodSandboxConfig linux = 8;
} }
message CreatePodSandboxRequest { message RunPodSandboxRequest {
// The configuration for creating a PodSandBox. // The configuration for creating a PodSandBox.
optional PodSandboxConfig config = 1; optional PodSandboxConfig config = 1;
} }
message CreatePodSandboxResponse { message RunPodSandboxResponse {
// The id of the PodSandBox // The id of the PodSandBox
optional string pod_sandbox_id = 1; optional string pod_sandbox_id = 1;
} }

View File

@ -37,12 +37,12 @@ const (
defaultSandboxGracePeriod int = 10 defaultSandboxGracePeriod int = 10
) )
// CreatePodSandbox creates a pod-level sandbox. // RunPodSandbox creates and starts a pod-level sandbox. Runtimes should ensure
// The definition of PodSandbox is at https://github.com/kubernetes/kubernetes/pull/25899 // the sandbox is in ready state.
// For docker, PodSandbox is implemented by a container holding the network // For docker, PodSandbox is implemented by a container holding the network
// namespace for the pod. // namespace for the pod.
// Note: docker doesn't use LogDirectory (yet). // Note: docker doesn't use LogDirectory (yet).
func (ds *dockerService) CreatePodSandbox(config *runtimeApi.PodSandboxConfig) (string, error) { func (ds *dockerService) RunPodSandbox(config *runtimeApi.PodSandboxConfig) (string, error) {
// Step 1: Pull the image for the sandbox. // Step 1: Pull the image for the sandbox.
// TODO: How should we handle pulling custom pod infra container image // TODO: How should we handle pulling custom pod infra container image
// (with credentials)? // (with credentials)?

View File

@ -36,7 +36,7 @@ func TestCreateSandbox(t *testing.T) {
Uid: &uid, Uid: &uid,
}, },
} }
id, err := ds.CreatePodSandbox(config) id, err := ds.RunPodSandbox(config)
if err != nil { if err != nil {
t.Errorf("Unexpected error: %v", err) t.Errorf("Unexpected error: %v", err)
} }

View File

@ -64,16 +64,17 @@ func (r *RemoteRuntimeService) Version(apiVersion string) (*runtimeApi.VersionRe
return typedVersion, err return typedVersion, err
} }
// CreatePodSandbox creates a pod-level sandbox. // RunPodSandbox creates and starts a pod-level sandbox. Runtimes should ensure
func (r *RemoteRuntimeService) CreatePodSandbox(config *runtimeApi.PodSandboxConfig) (string, error) { // the sandbox is in ready state.
func (r *RemoteRuntimeService) RunPodSandbox(config *runtimeApi.PodSandboxConfig) (string, error) {
ctx, cancel := getContextWithTimeout(r.timeout) ctx, cancel := getContextWithTimeout(r.timeout)
defer cancel() defer cancel()
resp, err := r.runtimeClient.CreatePodSandbox(ctx, &runtimeApi.CreatePodSandboxRequest{ resp, err := r.runtimeClient.RunPodSandbox(ctx, &runtimeApi.RunPodSandboxRequest{
Config: config, Config: config,
}) })
if err != nil { if err != nil {
glog.Errorf("CreatePodSandbox from runtime service failed: %v", err) glog.Errorf("RunPodSandbox from runtime service failed: %v", err)
return "", err return "", err
} }

View File

@ -33,8 +33,8 @@ func NewPodSandboxManager(PodSandboxManagerConfig) (kubeletApi.PodSandboxManager
return &PodSandboxManager{}, nil return &PodSandboxManager{}, nil
} }
// CreatePodSandbox creates a pod sandbox given a pod sandbox configuration. // RunPodSandbox creates and starts a pod sandbox given a pod sandbox configuration.
func (*PodSandboxManager) CreatePodSandbox(*runtimeApi.PodSandboxConfig) (string, error) { func (*PodSandboxManager) RunPodSandbox(*runtimeApi.PodSandboxConfig) (string, error) {
panic("not implemented") panic("not implemented")
} }