Merge pull request #353 from bergwolf/runtime-port-2

runtime port -- wave 2
This commit is contained in:
Xu Wang
2020-06-30 10:49:39 +08:00
committed by GitHub
35 changed files with 3848 additions and 2314 deletions

2
.gitignore vendored
View File

@@ -1,2 +1,4 @@
**/*.bk
**/*.orig
**/*.rej
**/target

View File

@@ -65,6 +65,7 @@ service AgentService {
rpc MemHotplugByProbe(MemHotplugByProbeRequest) returns (google.protobuf.Empty);
rpc SetGuestDateTime(SetGuestDateTimeRequest) returns (google.protobuf.Empty);
rpc CopyFile(CopyFileRequest) returns (google.protobuf.Empty);
rpc GetOOMEvent(GetOOMEventRequest) returns (OOMEvent);
}
message CreateContainerRequest {
@@ -507,3 +508,9 @@ message StartTracingRequest {
message StopTracingRequest {
}
message GetOOMEventRequest {}
message OOMEvent {
string container_id = 1;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,4 @@
// Copyright (c) 2020 Ant Financial
//
// SPDX-License-Identifier: Apache-2.0
//
// This file is generated by ttrpc-compiler 0.2.0. Do not edit
// This file is generated by ttrpc-compiler 0.3.0. Do not edit
// @generated
// https://github.com/Manishearth/rust-clippy/issues/702
@@ -222,6 +218,12 @@ impl AgentServiceClient {
::ttrpc::client_request!(self, req, timeout_nano, "grpc.AgentService", "CopyFile", cres);
Ok(cres)
}
pub fn get_oom_event(&self, req: &super::agent::GetOOMEventRequest, timeout_nano: i64) -> ::ttrpc::Result<super::agent::OOMEvent> {
let mut cres = super::agent::OOMEvent::new();
::ttrpc::client_request!(self, req, timeout_nano, "grpc.AgentService", "GetOOMEvent", cres);
Ok(cres)
}
}
struct CreateContainerMethod {
@@ -565,6 +567,17 @@ impl ::ttrpc::MethodHandler for CopyFileMethod {
}
}
struct GetOomEventMethod {
service: Arc<std::boxed::Box<dyn AgentService + Send + Sync>>,
}
impl ::ttrpc::MethodHandler for GetOomEventMethod {
fn handler(&self, ctx: ::ttrpc::TtrpcContext, req: ::ttrpc::Request) -> ::ttrpc::Result<()> {
::ttrpc::request_handler!(self, ctx, req, agent, GetOOMEventRequest, get_oom_event);
Ok(())
}
}
pub trait AgentService {
fn create_container(&self, _ctx: &::ttrpc::TtrpcContext, _req: super::agent::CreateContainerRequest) -> ::ttrpc::Result<super::empty::Empty> {
Err(::ttrpc::Error::RpcStatus(::ttrpc::get_status(::ttrpc::Code::NOT_FOUND, "/grpc.AgentService/CreateContainer is not supported".to_string())))
@@ -659,6 +672,9 @@ pub trait AgentService {
fn copy_file(&self, _ctx: &::ttrpc::TtrpcContext, _req: super::agent::CopyFileRequest) -> ::ttrpc::Result<super::empty::Empty> {
Err(::ttrpc::Error::RpcStatus(::ttrpc::get_status(::ttrpc::Code::NOT_FOUND, "/grpc.AgentService/CopyFile is not supported".to_string())))
}
fn get_oom_event(&self, _ctx: &::ttrpc::TtrpcContext, _req: super::agent::GetOOMEventRequest) -> ::ttrpc::Result<super::agent::OOMEvent> {
Err(::ttrpc::Error::RpcStatus(::ttrpc::get_status(::ttrpc::Code::NOT_FOUND, "/grpc.AgentService/GetOOMEvent is not supported".to_string())))
}
}
pub fn create_agent_service(service: Arc<std::boxed::Box<dyn AgentService + Send + Sync>>) -> HashMap <String, Box<dyn ::ttrpc::MethodHandler + Send + Sync>> {
@@ -757,5 +773,8 @@ pub fn create_agent_service(service: Arc<std::boxed::Box<dyn AgentService + Send
methods.insert("/grpc.AgentService/CopyFile".to_string(),
std::boxed::Box::new(CopyFileMethod{service: service.clone()}) as std::boxed::Box<dyn ::ttrpc::MethodHandler + Send + Sync>);
methods.insert("/grpc.AgentService/GetOOMEvent".to_string(),
std::boxed::Box::new(GetOomEventMethod{service: service.clone()}) as std::boxed::Box<dyn ::ttrpc::MethodHandler + Send + Sync>);
methods
}

View File

@@ -1,7 +1,3 @@
// Copyright (c) 2019 Ant Financial
//
// SPDX-License-Identifier: Apache-2.0
//
// This file is generated by rust-protobuf 2.14.0. Do not edit
// @generated
@@ -21,7 +17,7 @@
#![allow(unsafe_code)]
#![allow(unused_imports)]
#![allow(unused_results)]
//! Generated file from `health.proto`
//! Generated file from `github.com/kata-containers/kata-containers/src/agent/protocols/protos/health.proto`
use protobuf::Message as Message_imported_for_functions;
use protobuf::ProtobufEnum as ProtobufEnum_imported_for_functions;
@@ -606,68 +602,59 @@ impl ::protobuf::reflect::ProtobufValue for VersionCheckResponse {
}
static file_descriptor_proto_data: &'static [u8] = b"\
\n\x0chealth.proto\x12\x04grpc\x1a-github.com/gogo/protobuf/gogoproto/go\
go.proto\"(\n\x0cCheckRequest\x12\x18\n\x07service\x18\x01\x20\x01(\tR\
\x07service\"\x92\x01\n\x13HealthCheckResponse\x12?\n\x06status\x18\x01\
\x20\x01(\x0e2'.grpc.HealthCheckResponse.ServingStatusR\x06status\":\n\r\
ServingStatus\x12\x0b\n\x07UNKNOWN\x10\0\x12\x0b\n\x07SERVING\x10\x01\
\x12\x0f\n\x0bNOT_SERVING\x10\x02\"^\n\x14VersionCheckResponse\x12!\n\
\x0cgrpc_version\x18\x01\x20\x01(\tR\x0bgrpcVersion\x12#\n\ragent_versio\
n\x18\x02\x20\x01(\tR\x0cagentVersion2{\n\x06Health\x126\n\x05Check\x12\
\x12.grpc.CheckRequest\x1a\x19.grpc.HealthCheckResponse\x129\n\x07Versio\
n\x12\x12.grpc.CheckRequest\x1a\x1a.grpc.VersionCheckResponseB\x10\xa8\
\xe2\x1e\x01\xb8\xe2\x1e\x01\xc0\xe2\x1e\x01\xf8\xe1\x1e\x01J\xe7\x08\n\
\x06\x12\x04\x07\0'\x01\nq\n\x01\x0c\x12\x03\x07\0\x122g\n\x20Copyright\
\x202017\x20HyperHQ\x20Inc.\n\x20Copyright\x20(c)\x202019\x20Ant\x20Fina\
ncial\n\n\x20SPDX-License-Identifier:\x20Apache-2.0\n\n\n\x08\n\x01\x02\
\x12\x03\t\x08\x0c\n\t\n\x02\x03\0\x12\x03\x0b\x076\n\x08\n\x01\x08\x12\
\x03\r\0$\n\x0b\n\x04\x08\xe7\x07\0\x12\x03\r\0$\n\x0c\n\x05\x08\xe7\x07\
\0\x02\x12\x03\r\x07\x1c\n\r\n\x06\x08\xe7\x07\0\x02\0\x12\x03\r\x07\x1c\
\n\x0e\n\x07\x08\xe7\x07\0\x02\0\x01\x12\x03\r\x08\x1b\n\x0c\n\x05\x08\
\xe7\x07\0\x03\x12\x03\r\x1f#\n\x08\n\x01\x08\x12\x03\x0e\0'\n\x0b\n\x04\
\x08\xe7\x07\x01\x12\x03\x0e\0'\n\x0c\n\x05\x08\xe7\x07\x01\x02\x12\x03\
\x0e\x07\x1f\n\r\n\x06\x08\xe7\x07\x01\x02\0\x12\x03\x0e\x07\x1f\n\x0e\n\
\x07\x08\xe7\x07\x01\x02\0\x01\x12\x03\x0e\x08\x1e\n\x0c\n\x05\x08\xe7\
\x07\x01\x03\x12\x03\x0e\"&\n\x08\n\x01\x08\x12\x03\x0f\0&\n\x0b\n\x04\
\x08\xe7\x07\x02\x12\x03\x0f\0&\n\x0c\n\x05\x08\xe7\x07\x02\x02\x12\x03\
\x0f\x07\x1e\n\r\n\x06\x08\xe7\x07\x02\x02\0\x12\x03\x0f\x07\x1e\n\x0e\n\
\x07\x08\xe7\x07\x02\x02\0\x01\x12\x03\x0f\x08\x1d\n\x0c\n\x05\x08\xe7\
\x07\x02\x03\x12\x03\x0f!%\n\x08\n\x01\x08\x12\x03\x10\0'\n\x0b\n\x04\
\x08\xe7\x07\x03\x12\x03\x10\0'\n\x0c\n\x05\x08\xe7\x07\x03\x02\x12\x03\
\x10\x07\x1f\n\r\n\x06\x08\xe7\x07\x03\x02\0\x12\x03\x10\x07\x1f\n\x0e\n\
\x07\x08\xe7\x07\x03\x02\0\x01\x12\x03\x10\x08\x1e\n\x0c\n\x05\x08\xe7\
\x07\x03\x03\x12\x03\x10\"&\n\n\n\x02\x04\0\x12\x04\x12\0\x14\x01\n\n\n\
\x03\x04\0\x01\x12\x03\x12\x08\x14\n\x0b\n\x04\x04\0\x02\0\x12\x03\x13\
\x08\x1b\n\r\n\x05\x04\0\x02\0\x04\x12\x04\x13\x08\x12\x16\n\x0c\n\x05\
\x04\0\x02\0\x05\x12\x03\x13\x08\x0e\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\
\x13\x0f\x16\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03\x13\x19\x1a\n\n\n\x02\
\x04\x01\x12\x04\x16\0\x1d\x01\n\n\n\x03\x04\x01\x01\x12\x03\x16\x08\x1b\
\n\x0c\n\x04\x04\x01\x04\0\x12\x04\x17\x08\x1b\t\n\x0c\n\x05\x04\x01\x04\
\0\x01\x12\x03\x17\r\x1a\n\r\n\x06\x04\x01\x04\0\x02\0\x12\x03\x18\x10\
\x1c\n\x0e\n\x07\x04\x01\x04\0\x02\0\x01\x12\x03\x18\x10\x17\n\x0e\n\x07\
\x04\x01\x04\0\x02\0\x02\x12\x03\x18\x1a\x1b\n\r\n\x06\x04\x01\x04\0\x02\
\x01\x12\x03\x19\x10\x1c\n\x0e\n\x07\x04\x01\x04\0\x02\x01\x01\x12\x03\
\x19\x10\x17\n\x0e\n\x07\x04\x01\x04\0\x02\x01\x02\x12\x03\x19\x1a\x1b\n\
\r\n\x06\x04\x01\x04\0\x02\x02\x12\x03\x1a\x10\x20\n\x0e\n\x07\x04\x01\
\x04\0\x02\x02\x01\x12\x03\x1a\x10\x1b\n\x0e\n\x07\x04\x01\x04\0\x02\x02\
\x02\x12\x03\x1a\x1e\x1f\n\x0b\n\x04\x04\x01\x02\0\x12\x03\x1c\x08!\n\r\
\n\x05\x04\x01\x02\0\x04\x12\x04\x1c\x08\x1b\t\n\x0c\n\x05\x04\x01\x02\0\
\x06\x12\x03\x1c\x08\x15\n\x0c\n\x05\x04\x01\x02\0\x01\x12\x03\x1c\x16\
\x1c\n\x0c\n\x05\x04\x01\x02\0\x03\x12\x03\x1c\x1f\x20\n\n\n\x02\x04\x02\
\x12\x04\x1f\0\"\x01\n\n\n\x03\x04\x02\x01\x12\x03\x1f\x08\x1c\n\x0b\n\
\x04\x04\x02\x02\0\x12\x03\x20\x08\x20\n\r\n\x05\x04\x02\x02\0\x04\x12\
\x04\x20\x08\x1f\x1e\n\x0c\n\x05\x04\x02\x02\0\x05\x12\x03\x20\x08\x0e\n\
\x0c\n\x05\x04\x02\x02\0\x01\x12\x03\x20\x0f\x1b\n\x0c\n\x05\x04\x02\x02\
\0\x03\x12\x03\x20\x1e\x1f\n\x0b\n\x04\x04\x02\x02\x01\x12\x03!\x08!\n\r\
\n\x05\x04\x02\x02\x01\x04\x12\x04!\x08\x20\x20\n\x0c\n\x05\x04\x02\x02\
\x01\x05\x12\x03!\x08\x0e\n\x0c\n\x05\x04\x02\x02\x01\x01\x12\x03!\x0f\
\x1c\n\x0c\n\x05\x04\x02\x02\x01\x03\x12\x03!\x1f\x20\n\n\n\x02\x06\0\
\x12\x04$\0'\x01\n\n\n\x03\x06\0\x01\x12\x03$\x08\x0e\n\x0b\n\x04\x06\0\
\x02\0\x12\x03%\x08>\n\x0c\n\x05\x06\0\x02\0\x01\x12\x03%\x0c\x11\n\x0c\
\n\x05\x06\0\x02\0\x02\x12\x03%\x12\x1e\n\x0c\n\x05\x06\0\x02\0\x03\x12\
\x03%)<\n\x0b\n\x04\x06\0\x02\x01\x12\x03&\x08A\n\x0c\n\x05\x06\0\x02\
\x01\x01\x12\x03&\x0c\x13\n\x0c\n\x05\x06\0\x02\x01\x02\x12\x03&\x14\x20\
\n\x0c\n\x05\x06\0\x02\x01\x03\x12\x03&+?b\x06proto3\
\nRgithub.com/kata-containers/kata-containers/src/agent/protocols/protos\
/health.proto\x12\x04grpc\x1a-github.com/gogo/protobuf/gogoproto/gogo.pr\
oto\"(\n\x0cCheckRequest\x12\x18\n\x07service\x18\x01\x20\x01(\tR\x07ser\
vice\"\x92\x01\n\x13HealthCheckResponse\x12?\n\x06status\x18\x01\x20\x01\
(\x0e2'.grpc.HealthCheckResponse.ServingStatusR\x06status\":\n\rServingS\
tatus\x12\x0b\n\x07UNKNOWN\x10\0\x12\x0b\n\x07SERVING\x10\x01\x12\x0f\n\
\x0bNOT_SERVING\x10\x02\"^\n\x14VersionCheckResponse\x12!\n\x0cgrpc_vers\
ion\x18\x01\x20\x01(\tR\x0bgrpcVersion\x12#\n\ragent_version\x18\x02\x20\
\x01(\tR\x0cagentVersion2{\n\x06Health\x126\n\x05Check\x12\x12.grpc.Chec\
kRequest\x1a\x19.grpc.HealthCheckResponse\x129\n\x07Version\x12\x12.grpc\
.CheckRequest\x1a\x1a.grpc.VersionCheckResponseBpZ^github.com/kata-conta\
iners/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols/grp\
c\xb8\xe2\x1e\x01\xc0\xe2\x1e\x01\xa8\xe2\x1e\x01\xf8\xe1\x1e\x01J\x90\
\x07\n\x06\x12\x04\x07\0)\x01\nq\n\x01\x0c\x12\x03\x07\0\x122g\n\x20Copy\
right\x202017\x20HyperHQ\x20Inc.\n\x20Copyright\x20(c)\x202019\x20Ant\
\x20Financial\n\n\x20SPDX-License-Identifier:\x20Apache-2.0\n\n\n\x08\n\
\x01\x08\x12\x03\t\0u\n\t\n\x02\x08\x0b\x12\x03\t\0u\n\x08\n\x01\x02\x12\
\x03\x0b\0\r\n\t\n\x02\x03\0\x12\x03\r\07\n\x08\n\x01\x08\x12\x03\x0f\0$\
\n\x0b\n\x04\x08\xa5\xec\x03\x12\x03\x0f\0$\n\x08\n\x01\x08\x12\x03\x10\
\0'\n\x0b\n\x04\x08\x9f\xec\x03\x12\x03\x10\0'\n\x08\n\x01\x08\x12\x03\
\x11\0&\n\x0b\n\x04\x08\xa7\xec\x03\x12\x03\x11\0&\n\x08\n\x01\x08\x12\
\x03\x12\0'\n\x0b\n\x04\x08\xa8\xec\x03\x12\x03\x12\0'\n\n\n\x02\x04\0\
\x12\x04\x14\0\x16\x01\n\n\n\x03\x04\0\x01\x12\x03\x14\x08\x14\n\x0b\n\
\x04\x04\0\x02\0\x12\x03\x15\x08\x1b\n\r\n\x05\x04\0\x02\0\x04\x12\x04\
\x15\x08\x14\x16\n\x0c\n\x05\x04\0\x02\0\x05\x12\x03\x15\x08\x0e\n\x0c\n\
\x05\x04\0\x02\0\x01\x12\x03\x15\x0f\x16\n\x0c\n\x05\x04\0\x02\0\x03\x12\
\x03\x15\x19\x1a\n\n\n\x02\x04\x01\x12\x04\x18\0\x1f\x01\n\n\n\x03\x04\
\x01\x01\x12\x03\x18\x08\x1b\n\x0c\n\x04\x04\x01\x04\0\x12\x04\x19\x08\
\x1d\t\n\x0c\n\x05\x04\x01\x04\0\x01\x12\x03\x19\r\x1a\n\r\n\x06\x04\x01\
\x04\0\x02\0\x12\x03\x1a\x10\x1c\n\x0e\n\x07\x04\x01\x04\0\x02\0\x01\x12\
\x03\x1a\x10\x17\n\x0e\n\x07\x04\x01\x04\0\x02\0\x02\x12\x03\x1a\x1a\x1b\
\n\r\n\x06\x04\x01\x04\0\x02\x01\x12\x03\x1b\x10\x1c\n\x0e\n\x07\x04\x01\
\x04\0\x02\x01\x01\x12\x03\x1b\x10\x17\n\x0e\n\x07\x04\x01\x04\0\x02\x01\
\x02\x12\x03\x1b\x1a\x1b\n\r\n\x06\x04\x01\x04\0\x02\x02\x12\x03\x1c\x10\
\x20\n\x0e\n\x07\x04\x01\x04\0\x02\x02\x01\x12\x03\x1c\x10\x1b\n\x0e\n\
\x07\x04\x01\x04\0\x02\x02\x02\x12\x03\x1c\x1e\x1f\n\x0b\n\x04\x04\x01\
\x02\0\x12\x03\x1e\x08!\n\r\n\x05\x04\x01\x02\0\x04\x12\x04\x1e\x08\x1d\
\t\n\x0c\n\x05\x04\x01\x02\0\x06\x12\x03\x1e\x08\x15\n\x0c\n\x05\x04\x01\
\x02\0\x01\x12\x03\x1e\x16\x1c\n\x0c\n\x05\x04\x01\x02\0\x03\x12\x03\x1e\
\x1f\x20\n\n\n\x02\x04\x02\x12\x04!\0$\x01\n\n\n\x03\x04\x02\x01\x12\x03\
!\x08\x1c\n\x0b\n\x04\x04\x02\x02\0\x12\x03\"\x08\x20\n\r\n\x05\x04\x02\
\x02\0\x04\x12\x04\"\x08!\x1e\n\x0c\n\x05\x04\x02\x02\0\x05\x12\x03\"\
\x08\x0e\n\x0c\n\x05\x04\x02\x02\0\x01\x12\x03\"\x0f\x1b\n\x0c\n\x05\x04\
\x02\x02\0\x03\x12\x03\"\x1e\x1f\n\x0b\n\x04\x04\x02\x02\x01\x12\x03#\
\x08!\n\r\n\x05\x04\x02\x02\x01\x04\x12\x04#\x08\"\x20\n\x0c\n\x05\x04\
\x02\x02\x01\x05\x12\x03#\x08\x0e\n\x0c\n\x05\x04\x02\x02\x01\x01\x12\
\x03#\x0f\x1c\n\x0c\n\x05\x04\x02\x02\x01\x03\x12\x03#\x1f\x20\n\n\n\x02\
\x06\0\x12\x04&\0)\x01\n\n\n\x03\x06\0\x01\x12\x03&\x08\x0e\n\x0b\n\x04\
\x06\0\x02\0\x12\x03'\x08>\n\x0c\n\x05\x06\0\x02\0\x01\x12\x03'\x0c\x11\
\n\x0c\n\x05\x06\0\x02\0\x02\x12\x03'\x12\x1e\n\x0c\n\x05\x06\0\x02\0\
\x03\x12\x03')<\n\x0b\n\x04\x06\0\x02\x01\x12\x03(\x08A\n\x0c\n\x05\x06\
\0\x02\x01\x01\x12\x03(\x0c\x13\n\x0c\n\x05\x06\0\x02\x01\x02\x12\x03(\
\x14\x20\n\x0c\n\x05\x06\0\x02\x01\x03\x12\x03(+?b\x06proto3\
";
static mut file_descriptor_proto_lazy: ::protobuf::lazy::Lazy<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::lazy::Lazy::INIT;

View File

@@ -1,8 +1,4 @@
// Copyright (c) 2019 Ant Financial
//
// SPDX-License-Identifier: Apache-2.0
//
// This file is generated by ttrpc-compiler 0.2.0. Do not edit
// This file is generated by ttrpc-compiler 0.3.0. Do not edit
// @generated
// https://github.com/Manishearth/rust-clippy/issues/702

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +1,3 @@
// Copyright (c) 2020 Ant Financial
//
// SPDX-License-Identifier: Apache-2.0
//
// This file is generated by rust-protobuf 2.14.0. Do not edit
// @generated
@@ -1446,28 +1442,25 @@ static file_descriptor_proto_data: &'static [u8] = b"\
\x05state\x12\x14\n\x05flags\x18\x05\x20\x01(\x05R\x05flags*\x1a\n\x08IP\
Family\x12\x06\n\x02v4\x10\0\x12\x06\n\x02v6\x10\x01B[ZYgithub.com/kata-\
containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocol\
sJ\xd4\x12\n\x06\x12\x04\x07\0:\x01\nw\n\x01\x0c\x12\x03\x07\0\x122m\n\
sJ\x97\x12\n\x06\x12\x04\x07\0:\x01\nw\n\x01\x0c\x12\x03\x07\0\x122m\n\
\x20Copyright\x202018\x20Intel\x20Corporation.\n\x20Copyright\x20(c)\x20\
2019\x20Ant\x20Financial\n\n\x20SPDX-License-Identifier:\x20Apache-2.0\n\
\n\n\x08\n\x01\x08\x12\x03\t\0p\n\x0b\n\x04\x08\xe7\x07\0\x12\x03\t\0p\n\
\x0c\n\x05\x08\xe7\x07\0\x02\x12\x03\t\x07\x11\n\r\n\x06\x08\xe7\x07\0\
\x02\0\x12\x03\t\x07\x11\n\x0e\n\x07\x08\xe7\x07\0\x02\0\x01\x12\x03\t\
\x07\x11\n\x0c\n\x05\x08\xe7\x07\0\x07\x12\x03\t\x14o\n\x08\n\x01\x02\
\x12\x03\x0b\x08\r\n\n\n\x02\x05\0\x12\x04\r\0\x10\x01\n\n\n\x03\x05\0\
\x01\x12\x03\r\x05\r\n\x0b\n\x04\x05\0\x02\0\x12\x03\x0e\x08\x0f\n\x0c\n\
\x05\x05\0\x02\0\x01\x12\x03\x0e\x08\n\n\x0c\n\x05\x05\0\x02\0\x02\x12\
\x03\x0e\r\x0e\n\x0b\n\x04\x05\0\x02\x01\x12\x03\x0f\x08\x0f\n\x0c\n\x05\
\x05\0\x02\x01\x01\x12\x03\x0f\x08\n\n\x0c\n\x05\x05\0\x02\x01\x02\x12\
\x03\x0f\r\x0e\n\n\n\x02\x04\0\x12\x04\x12\0\x16\x01\n\n\n\x03\x04\0\x01\
\x12\x03\x12\x08\x11\n\x0b\n\x04\x04\0\x02\0\x12\x03\x13\x08\x1c\n\r\n\
\x05\x04\0\x02\0\x04\x12\x04\x13\x08\x12\x13\n\x0c\n\x05\x04\0\x02\0\x06\
\x12\x03\x13\x08\x10\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\x13\x11\x17\n\
\x0c\n\x05\x04\0\x02\0\x03\x12\x03\x13\x1a\x1b\n\x0b\n\x04\x04\0\x02\x01\
\x12\x03\x14\x08\x1b\n\r\n\x05\x04\0\x02\x01\x04\x12\x04\x14\x08\x13\x1c\
\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03\x14\x08\x0e\n\x0c\n\x05\x04\0\x02\
\x01\x01\x12\x03\x14\x0f\x16\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03\x14\
\x19\x1a\n\x0b\n\x04\x04\0\x02\x02\x12\x03\x15\x08\x18\n\r\n\x05\x04\0\
\x02\x02\x04\x12\x04\x15\x08\x14\x1b\n\x0c\n\x05\x04\0\x02\x02\x05\x12\
\n\n\x08\n\x01\x08\x12\x03\t\0p\n\t\n\x02\x08\x0b\x12\x03\t\0p\n\x08\n\
\x01\x02\x12\x03\x0b\0\x0e\n\n\n\x02\x05\0\x12\x04\r\0\x10\x01\n\n\n\x03\
\x05\0\x01\x12\x03\r\x05\r\n\x0b\n\x04\x05\0\x02\0\x12\x03\x0e\x08\x0f\n\
\x0c\n\x05\x05\0\x02\0\x01\x12\x03\x0e\x08\n\n\x0c\n\x05\x05\0\x02\0\x02\
\x12\x03\x0e\r\x0e\n\x0b\n\x04\x05\0\x02\x01\x12\x03\x0f\x08\x0f\n\x0c\n\
\x05\x05\0\x02\x01\x01\x12\x03\x0f\x08\n\n\x0c\n\x05\x05\0\x02\x01\x02\
\x12\x03\x0f\r\x0e\n\n\n\x02\x04\0\x12\x04\x12\0\x16\x01\n\n\n\x03\x04\0\
\x01\x12\x03\x12\x08\x11\n\x0b\n\x04\x04\0\x02\0\x12\x03\x13\x08\x1c\n\r\
\n\x05\x04\0\x02\0\x04\x12\x04\x13\x08\x12\x13\n\x0c\n\x05\x04\0\x02\0\
\x06\x12\x03\x13\x08\x10\n\x0c\n\x05\x04\0\x02\0\x01\x12\x03\x13\x11\x17\
\n\x0c\n\x05\x04\0\x02\0\x03\x12\x03\x13\x1a\x1b\n\x0b\n\x04\x04\0\x02\
\x01\x12\x03\x14\x08\x1b\n\r\n\x05\x04\0\x02\x01\x04\x12\x04\x14\x08\x13\
\x1c\n\x0c\n\x05\x04\0\x02\x01\x05\x12\x03\x14\x08\x0e\n\x0c\n\x05\x04\0\
\x02\x01\x01\x12\x03\x14\x0f\x16\n\x0c\n\x05\x04\0\x02\x01\x03\x12\x03\
\x14\x19\x1a\n\x0b\n\x04\x04\0\x02\x02\x12\x03\x15\x08\x18\n\r\n\x05\x04\
\0\x02\x02\x04\x12\x04\x15\x08\x14\x1b\n\x0c\n\x05\x04\0\x02\x02\x05\x12\
\x03\x15\x08\x0e\n\x0c\n\x05\x04\0\x02\x02\x01\x12\x03\x15\x0f\x13\n\x0c\
\n\x05\x04\0\x02\x02\x03\x12\x03\x15\x16\x17\n\n\n\x02\x04\x01\x12\x04\
\x18\0*\x01\n\n\n\x03\x04\x01\x01\x12\x03\x18\x08\x11\n\x0b\n\x04\x04\

View File

@@ -60,3 +60,11 @@ func isNotFound(err error) bool {
return err == vc.ErrNoSuchContainer || err == syscall.ENOENT ||
strings.Contains(err.Error(), "not found") || strings.Contains(err.Error(), "not exist")
}
func isGRPCErrorCode(code codes.Code, err error) bool {
s, ok := status.FromError(err)
if !ok {
return false
}
return s != nil && s.Code() == code
}

View File

@@ -6,11 +6,14 @@
package containerdshim
import (
"errors"
"syscall"
"testing"
vc "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/types"
"github.com/stretchr/testify/assert"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
func TestToGRPC(t *testing.T) {
@@ -27,3 +30,10 @@ func TestToGRPC(t *testing.T) {
assert.True(isGRPCError(err))
}
}
func TestIsGRPCErrorCode(t *testing.T) {
assert := assert.New(t)
assert.True(isGRPCErrorCode(codes.Unimplemented, status.New(codes.Unimplemented, "foobar").Err()))
assert.False(isGRPCErrorCode(codes.Unimplemented, errors.New("foobar")))
}

View File

@@ -36,6 +36,10 @@ func startContainer(ctx context.Context, s *service, c *container) error {
return err
}
go watchSandbox(s)
// We don't rely on the context passed to startContainer as it can be cancelled after
// this rpc call.
go watchOOMEvents(s.ctx, s)
} else {
_, err := s.sandbox.StartContainer(c.id)
if err != nil {

View File

@@ -45,6 +45,7 @@ func TestStartStartSandboxSuccess(t *testing.T) {
id: testSandboxID,
sandbox: sandbox,
containers: make(map[string]*container),
ctx: namespaces.WithNamespace(context.Background(), "UnitTest"),
}
reqCreate := &taskAPI.CreateTaskRequest{
@@ -93,6 +94,7 @@ func TestStartMissingAnnotation(t *testing.T) {
id: testSandboxID,
sandbox: sandbox,
containers: make(map[string]*container),
ctx: namespaces.WithNamespace(context.Background(), "UnitTest"),
}
reqCreate := &taskAPI.CreateTaskRequest{
@@ -113,8 +115,7 @@ func TestStartMissingAnnotation(t *testing.T) {
testingImpl.StartSandboxFunc = nil
}()
ctx := namespaces.WithNamespace(context.Background(), "UnitTest")
_, err = s.Start(ctx, reqStart)
_, err = s.Start(s.ctx, reqStart)
assert.Error(err)
assert.False(vcmock.IsMockError(err))
}
@@ -159,6 +160,7 @@ func TestStartStartContainerSucess(t *testing.T) {
id: testSandboxID,
sandbox: sandbox,
containers: make(map[string]*container),
ctx: namespaces.WithNamespace(context.Background(), "UnitTest"),
}
reqCreate := &taskAPI.CreateTaskRequest{

View File

@@ -6,12 +6,15 @@
package containerdshim
import (
"context"
"path"
"time"
"github.com/containerd/containerd/api/events"
"github.com/containerd/containerd/api/types/task"
"github.com/containerd/containerd/mount"
"github.com/sirupsen/logrus"
"google.golang.org/grpc/codes"
)
func wait(s *service, c *container, execID string) (int32, error) {
@@ -126,3 +129,31 @@ func watchSandbox(s *service) {
// Existing container/exec will be cleaned up by its waiters.
// No need to send async events here.
}
func watchOOMEvents(ctx context.Context, s *service) {
if s.sandbox == nil {
return
}
for {
select {
case <-ctx.Done():
return
default:
containerID, err := s.sandbox.GetOOMEvent()
if err != nil {
logrus.WithField("sandbox", s.sandbox.ID()).WithError(err).Warn("failed to get OOM event from sandbox")
// If the GetOOMEvent call is not implemented, then the agent is most likely an older version,
// stop attempting to get OOM events.
if isGRPCErrorCode(codes.Unimplemented, err) {
return
}
continue
}
s.send(&events.TaskOOM{
ContainerID: containerID,
})
}
}
}

View File

@@ -14,6 +14,7 @@ import (
"strings"
"github.com/BurntSushi/toml"
govmmQemu "github.com/intel/govmm/qemu"
vc "github.com/kata-containers/kata-containers/src/runtime/virtcontainers"
"github.com/kata-containers/kata-containers/src/runtime/virtcontainers/device/config"
exp "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/experimental"
@@ -626,6 +627,14 @@ func newQemuHypervisorConfig(h hypervisor) (vc.HypervisorConfig, error) {
kernelParams := h.kernelParams()
machineType := h.machineType()
// The "microvm" machine type doesn't support NVDIMM so override the
// config setting to explicitly disable it (i.e. don't require the
// user to add 'disable_image_nvdimm = true' in the .toml file).
if machineType == govmmQemu.MachineTypeMicrovm && !h.DisableImageNvdimm {
h.DisableImageNvdimm = true
kataUtilsLogger.Info("Setting 'disable_image_nvdimm = true' as microvm does not support NVDIMM")
}
blockDriver, err := h.blockDeviceDriver()
if err != nil {
return vc.HypervisorConfig{}, err

View File

@@ -259,4 +259,8 @@ type agent interface {
// load data from disk
load(persistapi.AgentState)
// getOOMEvent will wait on OOM events that occur in the sandbox.
// Will return the ID of the container where the event occurred.
getOOMEvent() (string, error)
}

View File

@@ -98,6 +98,8 @@ type VCSandbox interface {
ListInterfaces() ([]*vcTypes.Interface, error)
UpdateRoutes(routes []*vcTypes.Route) ([]*vcTypes.Route, error)
ListRoutes() ([]*vcTypes.Route, error)
GetOOMEvent() (string, error)
}
// VCContainer is the Container interface

View File

@@ -21,9 +21,9 @@ import (
"github.com/kata-containers/kata-containers/src/runtime/virtcontainers/device/api"
"github.com/kata-containers/kata-containers/src/runtime/virtcontainers/device/config"
persistapi "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/persist/api"
aTypes "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols"
kataclient "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols/client"
"github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols/grpc"
aTypes "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols"
vcAnnotations "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/annotations"
vccgroups "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/cgroups"
ns "github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/nsenter"
@@ -127,6 +127,7 @@ const (
grpcSetGuestDateTimeRequest = "grpc.SetGuestDateTimeRequest"
grpcStartTracingRequest = "grpc.StartTracingRequest"
grpcStopTracingRequest = "grpc.StopTracingRequest"
grpcGetOOMEventRequest = "grpc.GetOOMEventRequest"
)
// The function is declared this way for mocking in unit tests
@@ -2049,6 +2050,9 @@ func (k *kataAgent) installReqFunc(c *kataclient.AgentClient) {
k.reqHandlers[grpcStopTracingRequest] = func(ctx context.Context, req interface{}) (interface{}, error) {
return k.client.AgentServiceClient.StopTracing(ctx, req.(*grpc.StopTracingRequest))
}
k.reqHandlers[grpcGetOOMEventRequest] = func(ctx context.Context, req interface{}) (interface{}, error) {
return k.client.AgentServiceClient.GetOOMEvent(ctx, req.(*grpc.GetOOMEventRequest))
}
}
func (k *kataAgent) getReqContext(reqName string) (ctx context.Context, cancel context.CancelFunc) {
@@ -2378,3 +2382,15 @@ func (k *kataAgent) load(s persistapi.AgentState) {
k.state.ProxyPid = s.ProxyPid
k.state.URL = s.URL
}
func (k *kataAgent) getOOMEvent() (string, error) {
req := &grpc.GetOOMEventRequest{}
result, err := k.sendReq(req)
if err != nil {
return "", err
}
if oomEvent, ok := result.(*grpc.OOMEvent); ok {
return oomEvent.ContainerId, nil
}
return "", err
}

View File

@@ -245,6 +245,10 @@ func (p *gRPCProxy) MemHotplugByProbe(ctx context.Context, req *pb.MemHotplugByP
return &gpb.Empty{}, nil
}
func (p *gRPCProxy) GetOOMEvent(ctx context.Context, req *pb.GetOOMEventRequest) (*pb.OOMEvent, error) {
return &pb.OOMEvent{}, nil
}
func gRPCRegister(s *ttrpc.Server, srv interface{}) {
switch g := srv.(type) {
case *gRPCProxy:
@@ -346,6 +350,9 @@ func TestKataAgentSendReq(t *testing.T) {
_, err = k.readProcessStderr(container, execid, []byte{})
assert.Nil(err)
_, err = k.getOOMEvent()
assert.Nil(err)
}
func TestHandleEphemeralStorage(t *testing.T) {

View File

@@ -236,3 +236,7 @@ func (n *noopAgent) save() (s persistapi.AgentState) {
// load is the Noop agent state loader. It does nothing.
func (n *noopAgent) load(s persistapi.AgentState) {}
func (n *noopAgent) getOOMEvent() (string, error) {
return "", nil
}

View File

@@ -237,3 +237,12 @@ func TestNoopCopyFile(t *testing.T) {
err := n.copyFile("", "")
assert.Nil(err)
}
func TestNoopGetOOMEvent(t *testing.T) {
assert := assert.New(t)
n := &noopAgent{}
containerID, err := n.getOOMEvent()
assert.Nil(err)
assert.Empty(containerID)
}

View File

@@ -2380,6 +2380,83 @@ func (m *StopTracingRequest) XXX_DiscardUnknown() {
var xxx_messageInfo_StopTracingRequest proto.InternalMessageInfo
type GetOOMEventRequest struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetOOMEventRequest) Reset() { *m = GetOOMEventRequest{} }
func (*GetOOMEventRequest) ProtoMessage() {}
func (*GetOOMEventRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_c1460208c38ccf5e, []int{55}
}
func (m *GetOOMEventRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *GetOOMEventRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_GetOOMEventRequest.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 *GetOOMEventRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetOOMEventRequest.Merge(m, src)
}
func (m *GetOOMEventRequest) XXX_Size() int {
return m.Size()
}
func (m *GetOOMEventRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GetOOMEventRequest.DiscardUnknown(m)
}
var xxx_messageInfo_GetOOMEventRequest proto.InternalMessageInfo
type OOMEvent struct {
ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *OOMEvent) Reset() { *m = OOMEvent{} }
func (*OOMEvent) ProtoMessage() {}
func (*OOMEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_c1460208c38ccf5e, []int{56}
}
func (m *OOMEvent) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *OOMEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_OOMEvent.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 *OOMEvent) XXX_Merge(src proto.Message) {
xxx_messageInfo_OOMEvent.Merge(m, src)
}
func (m *OOMEvent) XXX_Size() int {
return m.Size()
}
func (m *OOMEvent) XXX_DiscardUnknown() {
xxx_messageInfo_OOMEvent.DiscardUnknown(m)
}
var xxx_messageInfo_OOMEvent proto.InternalMessageInfo
func init() {
proto.RegisterType((*CreateContainerRequest)(nil), "grpc.CreateContainerRequest")
proto.RegisterType((*StartContainerRequest)(nil), "grpc.StartContainerRequest")
@@ -2438,6 +2515,8 @@ func init() {
proto.RegisterType((*CopyFileRequest)(nil), "grpc.CopyFileRequest")
proto.RegisterType((*StartTracingRequest)(nil), "grpc.StartTracingRequest")
proto.RegisterType((*StopTracingRequest)(nil), "grpc.StopTracingRequest")
proto.RegisterType((*GetOOMEventRequest)(nil), "grpc.GetOOMEventRequest")
proto.RegisterType((*OOMEvent)(nil), "grpc.OOMEvent")
}
func init() {
@@ -2445,194 +2524,196 @@ func init() {
}
var fileDescriptor_c1460208c38ccf5e = []byte{
// 2986 bytes of a gzipped FileDescriptorProto
// 3020 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x3a, 0x4b, 0x73, 0x1b, 0xc7,
0xd1, 0xc6, 0x83, 0x20, 0xd0, 0x78, 0x11, 0x4b, 0x8a, 0x82, 0x20, 0x9b, 0x9f, 0xbc, 0xb6, 0x65,
0xfa, 0xf3, 0x67, 0xd0, 0x96, 0x5d, 0x9f, 0x5f, 0xe5, 0x4f, 0x25, 0x52, 0xb2, 0x48, 0xdb, 0xb2,
0xe8, 0xa5, 0x54, 0xfe, 0x2a, 0xa9, 0x64, 0x6b, 0xb9, 0x3b, 0x02, 0xc6, 0xc4, 0xee, 0xac, 0x67,
0x66, 0x29, 0xc2, 0x49, 0xa5, 0x72, 0x4a, 0x6e, 0x39, 0xe6, 0x96, 0x3f, 0x90, 0xca, 0x2d, 0xc7,
0x5c, 0x73, 0x70, 0xe5, 0x94, 0x63, 0x0e, 0xa9, 0x54, 0xac, 0x9f, 0x90, 0x5f, 0x90, 0x9a, 0xd7,
0x3e, 0x00, 0x10, 0x2e, 0xb3, 0x58, 0x95, 0x0b, 0x6a, 0xba, 0xa7, 0xa7, 0x5f, 0x33, 0xd3, 0xd3,
0xdd, 0x0b, 0xf8, 0x62, 0x84, 0xf9, 0x38, 0x39, 0x1e, 0xfa, 0x24, 0xdc, 0x39, 0xf1, 0xb8, 0xf7,
0x86, 0x4f, 0x22, 0xee, 0xe1, 0x08, 0x51, 0x36, 0x07, 0x33, 0xea, 0xef, 0x78, 0x23, 0x14, 0xf1,
0x9d, 0x98, 0x12, 0x4e, 0x7c, 0x32, 0x61, 0x6a, 0xc4, 0x14, 0x7a, 0x28, 0x01, 0xab, 0x3a, 0xa2,
0xb1, 0x3f, 0x78, 0x78, 0x39, 0x8c, 0x89, 0x8f, 0x15, 0xdb, 0xc1, 0xcf, 0x2f, 0x87, 0xe1, 0x12,
0x2e, 0x7a, 0xc5, 0xc9, 0x68, 0x87, 0x4f, 0x63, 0xc4, 0xd4, 0xaf, 0x96, 0x7e, 0x7d, 0x44, 0xc8,
0x68, 0x82, 0x14, 0x97, 0xe3, 0xe4, 0xc9, 0x0e, 0x0a, 0x63, 0x3e, 0x55, 0x93, 0xf6, 0xef, 0xca,
0xb0, 0xb9, 0x47, 0x91, 0xc7, 0xd1, 0x9e, 0xe1, 0xe6, 0xa0, 0xaf, 0x13, 0xc4, 0xb8, 0xf5, 0x22,
0xb4, 0x52, 0x09, 0x2e, 0x0e, 0xfa, 0xa5, 0x1b, 0xa5, 0xed, 0x86, 0xd3, 0x4c, 0x71, 0x07, 0x81,
0x75, 0x15, 0x56, 0xd1, 0x19, 0xf2, 0xc5, 0x6c, 0x59, 0xce, 0xd6, 0x04, 0x78, 0x10, 0x58, 0x6f,
0x41, 0x93, 0x71, 0x8a, 0xa3, 0x91, 0x9b, 0x30, 0x44, 0xfb, 0x95, 0x1b, 0xa5, 0xed, 0xe6, 0xad,
0xb5, 0xa1, 0x70, 0xef, 0xf0, 0x48, 0x4e, 0x3c, 0x66, 0x88, 0x3a, 0xc0, 0xd2, 0xb1, 0x75, 0x13,
0x56, 0x03, 0x74, 0x8a, 0x7d, 0xc4, 0xfa, 0xd5, 0x1b, 0x95, 0xed, 0xe6, 0xad, 0x96, 0x22, 0xbf,
0x2b, 0x91, 0x8e, 0x99, 0xb4, 0x5e, 0x83, 0x3a, 0xe3, 0x84, 0x7a, 0x23, 0xc4, 0xfa, 0x2b, 0x92,
0xb0, 0x6d, 0xf8, 0x4a, 0xac, 0x93, 0x4e, 0x5b, 0xcf, 0x43, 0xe5, 0xe1, 0xde, 0x41, 0xbf, 0x26,
0xa5, 0x83, 0xa6, 0x8a, 0x91, 0xef, 0x08, 0xb4, 0xf5, 0x12, 0xb4, 0x99, 0x17, 0x05, 0xc7, 0xe4,
0xcc, 0x8d, 0x71, 0x10, 0xb1, 0xfe, 0xea, 0x8d, 0xd2, 0x76, 0xdd, 0x69, 0x69, 0xe4, 0xa1, 0xc0,
0xd9, 0x1f, 0xc0, 0x95, 0x23, 0xee, 0x51, 0x7e, 0x01, 0xef, 0xd8, 0x8f, 0x61, 0xd3, 0x41, 0x21,
0x39, 0xbd, 0x90, 0x6b, 0xfb, 0xb0, 0xca, 0x71, 0x88, 0x48, 0xc2, 0xa5, 0x6b, 0xdb, 0x8e, 0x01,
0xed, 0x3f, 0x94, 0xc0, 0xba, 0x77, 0x86, 0xfc, 0x43, 0x4a, 0x7c, 0xc4, 0xd8, 0x7f, 0x68, 0xbb,
0x5e, 0x85, 0xd5, 0x58, 0x29, 0xd0, 0xaf, 0x4a, 0x72, 0xbd, 0x0b, 0x46, 0x2b, 0x33, 0x6b, 0x7f,
0x05, 0x1b, 0x47, 0x78, 0x14, 0x79, 0x93, 0x4b, 0xd4, 0x77, 0x13, 0x6a, 0x4c, 0xf2, 0x94, 0xaa,
0xb6, 0x1d, 0x0d, 0xd9, 0x87, 0x60, 0x7d, 0xe9, 0x61, 0x7e, 0x79, 0x92, 0xec, 0x37, 0x60, 0xbd,
0xc0, 0x91, 0xc5, 0x24, 0x62, 0x48, 0x2a, 0xc0, 0x3d, 0x9e, 0x30, 0xc9, 0x6c, 0xc5, 0xd1, 0x90,
0x8d, 0x60, 0xe3, 0x33, 0xcc, 0x0c, 0x39, 0xfa, 0x21, 0x2a, 0x6c, 0x42, 0xed, 0x09, 0xa1, 0xa1,
0xc7, 0x8d, 0x06, 0x0a, 0xb2, 0x2c, 0xa8, 0x7a, 0x74, 0xc4, 0xfa, 0x95, 0x1b, 0x95, 0xed, 0x86,
0x23, 0xc7, 0xe2, 0x54, 0xce, 0x88, 0xd1, 0x7a, 0xbd, 0x08, 0x2d, 0xed, 0x77, 0x77, 0x82, 0x19,
0x97, 0x72, 0x5a, 0x4e, 0x53, 0xe3, 0xc4, 0x1a, 0x9b, 0xc0, 0xe6, 0xe3, 0x38, 0xb8, 0xe0, 0x85,
0xbf, 0x05, 0x0d, 0x8a, 0x18, 0x49, 0xa8, 0xb8, 0xa6, 0x65, 0xb9, 0xef, 0x1b, 0x6a, 0xdf, 0x3f,
0xc3, 0x51, 0x72, 0xe6, 0x98, 0x39, 0x27, 0x23, 0xd3, 0x57, 0x88, 0xb3, 0x8b, 0x5c, 0xa1, 0x0f,
0xe0, 0xca, 0xa1, 0x97, 0xb0, 0x8b, 0xe8, 0x6a, 0x7f, 0x28, 0xae, 0x1f, 0x4b, 0xc2, 0x0b, 0x2d,
0xfe, 0x7d, 0x09, 0xea, 0x7b, 0x71, 0xf2, 0x98, 0x79, 0x23, 0x64, 0xfd, 0x17, 0x34, 0x39, 0xe1,
0xde, 0xc4, 0x4d, 0x04, 0x28, 0xc9, 0xab, 0x0e, 0x48, 0x94, 0x22, 0x10, 0x6e, 0x47, 0xd4, 0x8f,
0x13, 0x4d, 0x51, 0xbe, 0x51, 0xd9, 0xae, 0x3a, 0x4d, 0x85, 0x53, 0x24, 0x43, 0x58, 0x97, 0x73,
0x2e, 0x8e, 0xdc, 0x13, 0x44, 0x23, 0x34, 0x09, 0x49, 0x80, 0xe4, 0xf9, 0xad, 0x3a, 0x3d, 0x39,
0x75, 0x10, 0x7d, 0x9a, 0x4e, 0x58, 0xff, 0x0d, 0xbd, 0x94, 0x5e, 0x5c, 0x4a, 0x49, 0x5d, 0x95,
0xd4, 0x5d, 0x4d, 0xfd, 0x58, 0xa3, 0xed, 0x5f, 0x40, 0xe7, 0xd1, 0x98, 0x12, 0xce, 0x27, 0x38,
0x1a, 0xdd, 0xf5, 0xb8, 0x27, 0xa2, 0x47, 0x8c, 0x28, 0x26, 0x01, 0xd3, 0xda, 0x1a, 0xd0, 0x7a,
0x1d, 0x7a, 0x5c, 0xd1, 0xa2, 0xc0, 0x35, 0x34, 0x65, 0x49, 0xb3, 0x96, 0x4e, 0x1c, 0x6a, 0xe2,
0x57, 0xa0, 0x93, 0x11, 0x8b, 0xf8, 0xa3, 0xf5, 0x6d, 0xa7, 0xd8, 0x47, 0x38, 0x44, 0xf6, 0xa9,
0xf4, 0x95, 0xdc, 0x64, 0xeb, 0x75, 0x68, 0x64, 0x7e, 0x28, 0xc9, 0x13, 0xd2, 0x51, 0x27, 0xc4,
0xb8, 0xd3, 0xa9, 0xa7, 0x4e, 0xf9, 0x08, 0xba, 0x3c, 0x55, 0xdc, 0x0d, 0x3c, 0xee, 0x15, 0x0f,
0x55, 0xd1, 0x2a, 0xa7, 0xc3, 0x0b, 0xb0, 0xfd, 0x21, 0x34, 0x0e, 0x71, 0xc0, 0x94, 0xe0, 0x3e,
0xac, 0xfa, 0x09, 0xa5, 0x28, 0xe2, 0xc6, 0x64, 0x0d, 0x5a, 0x1b, 0xb0, 0x32, 0xc1, 0x21, 0xe6,
0xda, 0x4c, 0x05, 0xd8, 0x04, 0xe0, 0x01, 0x0a, 0x09, 0x9d, 0x4a, 0x87, 0x6d, 0xc0, 0x4a, 0x7e,
0x73, 0x15, 0x60, 0x5d, 0x87, 0x46, 0xe8, 0x9d, 0xa5, 0x9b, 0x2a, 0x66, 0xea, 0xa1, 0x77, 0xa6,
0x94, 0xef, 0xc3, 0xea, 0x13, 0x0f, 0x4f, 0xfc, 0x88, 0x6b, 0xaf, 0x18, 0x30, 0x13, 0x58, 0xcd,
0x0b, 0xfc, 0x73, 0x19, 0x9a, 0x4a, 0xa2, 0x52, 0x78, 0x03, 0x56, 0x7c, 0xcf, 0x1f, 0xa7, 0x22,
0x25, 0x60, 0xdd, 0x34, 0x8a, 0x94, 0xf3, 0x41, 0x38, 0xd3, 0xd4, 0xa8, 0xb6, 0x03, 0xc0, 0x9e,
0x7a, 0xb1, 0xd6, 0xad, 0x72, 0x0e, 0x71, 0x43, 0xd0, 0x28, 0x75, 0xdf, 0x86, 0x96, 0x3a, 0x77,
0x7a, 0x49, 0xf5, 0x9c, 0x25, 0x4d, 0x45, 0xa5, 0x16, 0xbd, 0x04, 0xed, 0x84, 0x21, 0x77, 0x8c,
0x11, 0xf5, 0xa8, 0x3f, 0x9e, 0xf6, 0x57, 0xd4, 0x1b, 0x99, 0x30, 0xb4, 0x6f, 0x70, 0xd6, 0x2d,
0x58, 0x11, 0xe1, 0x8f, 0xf5, 0x6b, 0xf2, 0x39, 0x7e, 0x3e, 0xcf, 0x52, 0x9a, 0x3a, 0x94, 0xbf,
0xf7, 0x22, 0x4e, 0xa7, 0x8e, 0x22, 0x1d, 0xbc, 0x07, 0x90, 0x21, 0xad, 0x35, 0xa8, 0x9c, 0xa0,
0xa9, 0xbe, 0x87, 0x62, 0x28, 0x9c, 0x73, 0xea, 0x4d, 0x12, 0xe3, 0x75, 0x05, 0x7c, 0x50, 0x7e,
0xaf, 0x64, 0xfb, 0xd0, 0xdd, 0x9d, 0x9c, 0x60, 0x92, 0x5b, 0xbe, 0x01, 0x2b, 0xa1, 0xf7, 0x15,
0xa1, 0xc6, 0x93, 0x12, 0x90, 0x58, 0x1c, 0x11, 0x6a, 0x58, 0x48, 0xc0, 0xea, 0x40, 0x99, 0xc4,
0xd2, 0x5f, 0x0d, 0xa7, 0x4c, 0xe2, 0x4c, 0x50, 0x35, 0x27, 0xc8, 0xfe, 0x47, 0x15, 0x20, 0x93,
0x62, 0x39, 0x30, 0xc0, 0xc4, 0x65, 0x88, 0x8a, 0x14, 0xc4, 0x3d, 0x9e, 0x72, 0xc4, 0x5c, 0x8a,
0xfc, 0x84, 0x32, 0x7c, 0x2a, 0xf6, 0x4f, 0x98, 0x7d, 0x45, 0x99, 0x3d, 0xa3, 0x9b, 0x73, 0x15,
0x93, 0x23, 0xb5, 0x6e, 0x57, 0x2c, 0x73, 0xcc, 0x2a, 0xeb, 0x00, 0xae, 0x64, 0x3c, 0x83, 0x1c,
0xbb, 0xf2, 0x32, 0x76, 0xeb, 0x29, 0xbb, 0x20, 0x63, 0x75, 0x0f, 0xd6, 0x31, 0x71, 0xbf, 0x4e,
0x50, 0x52, 0x60, 0x54, 0x59, 0xc6, 0xa8, 0x87, 0xc9, 0x17, 0x72, 0x41, 0xc6, 0xe6, 0x10, 0xae,
0xe5, 0xac, 0x14, 0xd7, 0x3d, 0xc7, 0xac, 0xba, 0x8c, 0xd9, 0x66, 0xaa, 0x95, 0x88, 0x07, 0x19,
0xc7, 0x4f, 0x60, 0x13, 0x13, 0xf7, 0xa9, 0x87, 0xf9, 0x2c, 0xbb, 0x95, 0xef, 0x31, 0x52, 0x3c,
0xba, 0x45, 0x5e, 0xca, 0xc8, 0x10, 0xd1, 0x51, 0xc1, 0xc8, 0xda, 0xf7, 0x18, 0xf9, 0x40, 0x2e,
0xc8, 0xd8, 0xdc, 0x81, 0x1e, 0x26, 0xb3, 0xda, 0xac, 0x2e, 0x63, 0xd2, 0xc5, 0xa4, 0xa8, 0xc9,
0x2e, 0xf4, 0x18, 0xf2, 0x39, 0xa1, 0xf9, 0x43, 0x50, 0x5f, 0xc6, 0x62, 0x4d, 0xd3, 0xa7, 0x3c,
0xec, 0x1f, 0x43, 0x6b, 0x3f, 0x19, 0x21, 0x3e, 0x39, 0x4e, 0x83, 0xc1, 0xa5, 0xc5, 0x1f, 0xfb,
0x5f, 0x65, 0x68, 0xee, 0x8d, 0x28, 0x49, 0xe2, 0x42, 0x4c, 0x56, 0x97, 0x74, 0x36, 0x26, 0x4b,
0x12, 0x19, 0x93, 0x15, 0xf1, 0x3b, 0xd0, 0x0a, 0xe5, 0xd5, 0xd5, 0xf4, 0x2a, 0x0e, 0xf5, 0xe6,
0x2e, 0xb5, 0xd3, 0x0c, 0x73, 0xc1, 0x6c, 0x08, 0x10, 0xe3, 0x80, 0xe9, 0x35, 0x2a, 0x1c, 0x75,
0x75, 0x46, 0x68, 0x42, 0xb4, 0xd3, 0x88, 0xd3, 0x68, 0xfd, 0x16, 0x34, 0x8f, 0x85, 0x93, 0xf4,
0x82, 0x42, 0x30, 0xca, 0xbc, 0xe7, 0xc0, 0x71, 0x76, 0x09, 0xf7, 0xa1, 0x3d, 0x56, 0x2e, 0xd3,
0x8b, 0xd4, 0x19, 0x7a, 0x49, 0x5b, 0x92, 0xd9, 0x3b, 0xcc, 0x7b, 0x56, 0x6d, 0x40, 0x6b, 0x9c,
0x43, 0x0d, 0x8e, 0xa0, 0x37, 0x47, 0xb2, 0x20, 0x06, 0x6d, 0xe7, 0x63, 0x50, 0xf3, 0x96, 0xa5,
0x04, 0xe5, 0x57, 0xe6, 0xe3, 0xd2, 0x6f, 0xca, 0xd0, 0xfa, 0x1c, 0xf1, 0xa7, 0x84, 0x9e, 0x28,
0x7d, 0x2d, 0xa8, 0x46, 0x5e, 0x88, 0x34, 0x47, 0x39, 0xb6, 0xae, 0x41, 0x9d, 0x9e, 0xa9, 0x00,
0xa2, 0xf7, 0x73, 0x95, 0x9e, 0xc9, 0xc0, 0x60, 0xbd, 0x00, 0x40, 0xcf, 0xdc, 0xd8, 0xf3, 0x4f,
0x90, 0xf6, 0x60, 0xd5, 0x69, 0xd0, 0xb3, 0x43, 0x85, 0x10, 0x47, 0x81, 0x9e, 0xb9, 0x88, 0x52,
0x42, 0x99, 0x8e, 0x55, 0x75, 0x7a, 0x76, 0x4f, 0xc2, 0x7a, 0x6d, 0x40, 0x49, 0x1c, 0xa3, 0x40,
0xc6, 0x68, 0xb9, 0xf6, 0xae, 0x42, 0x08, 0xa9, 0xdc, 0x48, 0xad, 0x29, 0xa9, 0x3c, 0x93, 0xca,
0x33, 0xa9, 0xab, 0x6a, 0x25, 0xcf, 0x4b, 0xe5, 0xa9, 0xd4, 0xba, 0x92, 0xca, 0x73, 0x52, 0x79,
0x26, 0xb5, 0x61, 0xd6, 0x6a, 0xa9, 0xf6, 0xaf, 0x4b, 0xb0, 0x39, 0x9b, 0xf8, 0xe9, 0x34, 0xf5,
0x1d, 0x68, 0xf9, 0x72, 0xbf, 0x0a, 0x67, 0xb2, 0x37, 0xb7, 0x93, 0x4e, 0xd3, 0xcf, 0x1d, 0xe3,
0x77, 0xa1, 0x1d, 0x29, 0x07, 0xa7, 0x47, 0xb3, 0x92, 0xed, 0x4b, 0xde, 0xf7, 0x4e, 0x2b, 0xca,
0x41, 0x76, 0x00, 0xd6, 0x97, 0x14, 0x73, 0x74, 0xc4, 0x29, 0xf2, 0xc2, 0xcb, 0x28, 0x40, 0x2c,
0xa8, 0xca, 0x6c, 0xa5, 0x22, 0xf3, 0x6b, 0x39, 0xb6, 0x5f, 0x85, 0xf5, 0x82, 0x14, 0x6d, 0xeb,
0x1a, 0x54, 0x26, 0x28, 0x92, 0xdc, 0xdb, 0x8e, 0x18, 0xda, 0x1e, 0xf4, 0x1c, 0xe4, 0x05, 0x97,
0xa7, 0x8d, 0x16, 0x51, 0xc9, 0x44, 0x6c, 0x83, 0x95, 0x17, 0xa1, 0x55, 0x31, 0x5a, 0x97, 0x72,
0x5a, 0x3f, 0x84, 0xde, 0xde, 0x84, 0x30, 0x74, 0xc4, 0x03, 0x1c, 0x5d, 0x46, 0xc5, 0xf4, 0x33,
0x58, 0x7f, 0xc4, 0xa7, 0x5f, 0x0a, 0x66, 0x0c, 0x7f, 0x83, 0x2e, 0xc9, 0x3e, 0x4a, 0x9e, 0x1a,
0xfb, 0x28, 0x79, 0x2a, 0x8a, 0x25, 0x9f, 0x4c, 0x92, 0x30, 0x92, 0x57, 0xa1, 0xed, 0x68, 0xc8,
0xde, 0x85, 0x96, 0xca, 0xa1, 0x1f, 0x90, 0x20, 0x99, 0xa0, 0x85, 0x77, 0x70, 0x0b, 0x20, 0xf6,
0xa8, 0x17, 0x22, 0x8e, 0xa8, 0x3a, 0x43, 0x0d, 0x27, 0x87, 0xb1, 0x7f, 0x5b, 0x86, 0x0d, 0xd5,
0x12, 0x39, 0x52, 0x9d, 0x00, 0x63, 0xc2, 0x00, 0xea, 0x63, 0xc2, 0x78, 0x8e, 0x61, 0x0a, 0x0b,
0x15, 0x83, 0xc8, 0x70, 0x13, 0xc3, 0x42, 0x9f, 0xa2, 0xb2, 0xbc, 0x4f, 0x31, 0xd7, 0x89, 0xa8,
0xce, 0x77, 0x22, 0xc4, 0x6d, 0x33, 0x44, 0x58, 0xdd, 0xf1, 0x86, 0xd3, 0xd0, 0x98, 0x83, 0xc0,
0xba, 0x09, 0xdd, 0x91, 0xd0, 0xd2, 0x1d, 0x13, 0x72, 0xe2, 0xc6, 0x1e, 0x1f, 0xcb, 0xab, 0xde,
0x70, 0xda, 0x12, 0xbd, 0x4f, 0xc8, 0xc9, 0xa1, 0xc7, 0xc7, 0xd6, 0xfb, 0xd0, 0xd1, 0x69, 0x60,
0x28, 0x5d, 0xc4, 0xf4, 0xe3, 0xa7, 0x6f, 0x51, 0xde, 0x7b, 0x4e, 0xfb, 0x24, 0x07, 0x31, 0xfb,
0x2a, 0x5c, 0xb9, 0x8b, 0x18, 0xa7, 0x64, 0x5a, 0x74, 0x8c, 0xfd, 0x7f, 0x00, 0x07, 0x11, 0x47,
0xf4, 0x89, 0xe7, 0x23, 0x66, 0xbd, 0x99, 0x87, 0x74, 0x72, 0xb4, 0x36, 0x54, 0x1d, 0xa9, 0x74,
0xc2, 0xc9, 0xd1, 0xd8, 0x43, 0xa8, 0x39, 0x24, 0x11, 0xe1, 0xe8, 0x65, 0x33, 0xd2, 0xeb, 0x5a,
0x7a, 0x9d, 0x44, 0x3a, 0x7a, 0xce, 0xde, 0x37, 0x25, 0x6c, 0xc6, 0x4e, 0x6f, 0xd1, 0x10, 0x1a,
0xd8, 0xe0, 0x74, 0x54, 0x99, 0x17, 0x9d, 0x91, 0xd8, 0x1f, 0xc2, 0xba, 0xe2, 0xa4, 0x38, 0x1b,
0x36, 0x2f, 0x43, 0x8d, 0x1a, 0x35, 0x4a, 0x59, 0x2b, 0x4a, 0x13, 0xe9, 0x39, 0xe1, 0x0f, 0x51,
0x51, 0x67, 0x86, 0x18, 0x7f, 0xac, 0x43, 0x4f, 0x4c, 0x14, 0x78, 0xda, 0x1f, 0x43, 0xeb, 0x8e,
0x73, 0xf8, 0x39, 0xc2, 0xa3, 0xf1, 0xb1, 0x88, 0x9e, 0xff, 0x5b, 0x84, 0xb5, 0xc1, 0x96, 0xd6,
0x36, 0x37, 0xe5, 0x14, 0xe8, 0xec, 0x4f, 0x60, 0xf3, 0x4e, 0x10, 0xe4, 0x51, 0x46, 0xeb, 0x37,
0xa1, 0x11, 0xe5, 0xd8, 0xe5, 0xde, 0xac, 0x02, 0x75, 0x46, 0x64, 0xff, 0x04, 0xd6, 0x1f, 0x46,
0x13, 0x1c, 0xa1, 0xbd, 0xc3, 0xc7, 0x0f, 0x50, 0x1a, 0x8b, 0x2c, 0xa8, 0x8a, 0x9c, 0x4d, 0xf2,
0xa8, 0x3b, 0x72, 0x2c, 0x2e, 0x67, 0x74, 0xec, 0xfa, 0x71, 0xc2, 0x74, 0x3f, 0xaa, 0x16, 0x1d,
0xef, 0xc5, 0x09, 0x13, 0x8f, 0x8b, 0x48, 0x2e, 0x48, 0x34, 0x99, 0xca, 0x1b, 0x5a, 0x77, 0x56,
0xfd, 0x38, 0x79, 0x18, 0x4d, 0xa6, 0xf6, 0xff, 0xc8, 0x0a, 0x1c, 0xa1, 0xc0, 0xf1, 0xa2, 0x80,
0x84, 0x77, 0xd1, 0x69, 0x4e, 0x42, 0x5a, 0xed, 0x99, 0x48, 0xf4, 0x6d, 0x09, 0x5a, 0x77, 0x46,
0x28, 0xe2, 0x77, 0x11, 0xf7, 0xf0, 0x44, 0x56, 0x74, 0xa7, 0x88, 0x32, 0x4c, 0x22, 0x7d, 0xdd,
0x0c, 0x28, 0x0a, 0x72, 0x1c, 0x61, 0xee, 0x06, 0x1e, 0x0a, 0x49, 0x24, 0xb9, 0xd4, 0x1d, 0x10,
0xa8, 0xbb, 0x12, 0x63, 0xbd, 0x0a, 0x5d, 0xd5, 0x2f, 0x74, 0xc7, 0x5e, 0x14, 0x4c, 0xc4, 0x45,
0x57, 0xfd, 0x93, 0x8e, 0x42, 0xef, 0x6b, 0xac, 0xf5, 0x1a, 0xac, 0xe9, 0x6b, 0x98, 0x51, 0x56,
0x25, 0x65, 0x57, 0xe3, 0x0b, 0xa4, 0x49, 0x1c, 0x13, 0xca, 0x99, 0xcb, 0x90, 0xef, 0x93, 0x30,
0xd6, 0xe5, 0x50, 0xd7, 0xe0, 0x8f, 0x14, 0xda, 0x1e, 0xc1, 0xfa, 0x7d, 0x61, 0xa7, 0xb6, 0x24,
0x3b, 0x56, 0x9d, 0x10, 0x85, 0xee, 0xf1, 0x84, 0xf8, 0x27, 0xae, 0x08, 0x8e, 0xda, 0xc3, 0x22,
0xe1, 0xda, 0x15, 0xc8, 0x23, 0xfc, 0x8d, 0xac, 0xfc, 0x05, 0xd5, 0x98, 0xf0, 0x78, 0x92, 0x8c,
0xdc, 0x98, 0x92, 0x63, 0xa4, 0x4d, 0xec, 0x86, 0x28, 0xdc, 0x57, 0xf8, 0x43, 0x81, 0xb6, 0xff,
0x54, 0x82, 0x8d, 0xa2, 0x24, 0x1d, 0xea, 0x77, 0x60, 0xa3, 0x28, 0x4a, 0x3f, 0xff, 0x2a, 0xbd,
0xec, 0xe5, 0x05, 0xaa, 0x44, 0xe0, 0x5d, 0x68, 0xcb, 0x26, 0xb2, 0x1b, 0x28, 0x4e, 0xc5, 0xa4,
0x27, 0xbf, 0x2f, 0x4e, 0xcb, 0xcb, 0xef, 0xd2, 0xfb, 0x70, 0x4d, 0x9b, 0xef, 0xce, 0xab, 0xad,
0x0e, 0xc4, 0xa6, 0x26, 0x78, 0x30, 0xa3, 0xfd, 0x67, 0xd0, 0xcf, 0x50, 0xbb, 0x53, 0x89, 0xcc,
0x0e, 0xf3, 0xfa, 0x8c, 0xb1, 0x77, 0x82, 0x80, 0xca, 0x5b, 0x52, 0x75, 0x16, 0x4d, 0xd9, 0xb7,
0xe1, 0xea, 0x11, 0xe2, 0xca, 0x1b, 0x1e, 0xd7, 0x95, 0x88, 0x62, 0xb6, 0x06, 0x95, 0x23, 0xe4,
0x4b, 0xe3, 0x2b, 0x8e, 0x18, 0x8a, 0x03, 0xf8, 0x98, 0x21, 0x5f, 0x5a, 0x59, 0x71, 0xe4, 0xd8,
0xfe, 0x63, 0x09, 0x56, 0x75, 0x70, 0x16, 0x0f, 0x4c, 0x40, 0xf1, 0x29, 0xa2, 0xfa, 0xe8, 0x69,
0xc8, 0x7a, 0x05, 0x3a, 0x6a, 0xe4, 0x92, 0x98, 0x63, 0x92, 0x86, 0xfc, 0xb6, 0xc2, 0x3e, 0x54,
0x48, 0xd9, 0x1f, 0x94, 0xed, 0x2f, 0x5d, 0x69, 0x6a, 0x48, 0x36, 0xf9, 0x98, 0xb8, 0xe1, 0x32,
0xc4, 0x37, 0x1c, 0x0d, 0x89, 0xa3, 0x6e, 0xf8, 0xad, 0x48, 0x7e, 0x06, 0x14, 0x47, 0x3d, 0x24,
0x49, 0xc4, 0xdd, 0x98, 0xe0, 0x88, 0xeb, 0x98, 0x0e, 0x12, 0x75, 0x28, 0x30, 0xf6, 0xaf, 0x4a,
0x50, 0x53, 0x3d, 0x72, 0x51, 0xdb, 0xa6, 0x2f, 0x6b, 0x19, 0xcb, 0x2c, 0x45, 0xca, 0x52, 0xaf,
0xa9, 0x1c, 0x8b, 0x7b, 0x7c, 0x1a, 0xaa, 0xf7, 0x41, 0xab, 0x76, 0x1a, 0xca, 0x87, 0xe1, 0x15,
0xe8, 0x64, 0x0f, 0xb4, 0x9c, 0x57, 0x2a, 0xb6, 0x53, 0xac, 0x24, 0x3b, 0x57, 0x53, 0xfb, 0xff,
0x45, 0x49, 0x9f, 0xf6, 0x87, 0xd7, 0xa0, 0x92, 0xa4, 0xca, 0x88, 0xa1, 0xc0, 0x8c, 0xd2, 0xa7,
0x5d, 0x0c, 0xad, 0x9b, 0xd0, 0xf1, 0x82, 0x00, 0x8b, 0xe5, 0xde, 0xe4, 0x3e, 0x0e, 0xd2, 0x4b,
0x5a, 0xc4, 0xda, 0x7f, 0x29, 0x41, 0x77, 0x8f, 0xc4, 0xd3, 0x8f, 0xf1, 0x04, 0xe5, 0x22, 0x88,
0x54, 0x52, 0xbf, 0xec, 0x62, 0x2c, 0xb2, 0xd5, 0x27, 0x78, 0x82, 0xd4, 0xd5, 0x52, 0x3b, 0x5b,
0x17, 0x08, 0x79, 0xad, 0xcc, 0x64, 0xda, 0x76, 0x6b, 0xab, 0xc9, 0x07, 0x24, 0x90, 0x79, 0x79,
0x80, 0xa9, 0x9b, 0x36, 0xd9, 0xda, 0xce, 0x6a, 0x80, 0xa9, 0x9c, 0xd2, 0x86, 0xac, 0xc8, 0x3e,
0x6f, 0xde, 0x90, 0x9a, 0xc2, 0x08, 0x43, 0x36, 0xa1, 0x46, 0x9e, 0x3c, 0x61, 0x88, 0xcb, 0x0c,
0xba, 0xe2, 0x68, 0x28, 0x0d, 0x73, 0xf5, 0x5c, 0x98, 0xbb, 0x02, 0xeb, 0xf2, 0x8b, 0xc2, 0x23,
0xea, 0xf9, 0x38, 0x1a, 0x99, 0xe7, 0x61, 0x03, 0xac, 0x23, 0x4e, 0xe2, 0x22, 0xf6, 0xd6, 0xdf,
0xd7, 0x74, 0x4c, 0xd4, 0xe5, 0xb5, 0x75, 0x1f, 0xba, 0x33, 0x9f, 0x6b, 0x2c, 0xdd, 0x6f, 0x59,
0xfc, 0x15, 0x67, 0xb0, 0x39, 0x54, 0x9f, 0x7f, 0x86, 0xe6, 0xf3, 0xcf, 0xf0, 0x5e, 0x18, 0xf3,
0xa9, 0x75, 0x0f, 0x3a, 0xc5, 0x0f, 0x1b, 0xd6, 0x75, 0x93, 0x9e, 0x2c, 0xf8, 0xdc, 0x71, 0x2e,
0x9b, 0xfb, 0xd0, 0x9d, 0xf9, 0xc6, 0x61, 0xf4, 0x59, 0xfc, 0xe9, 0xe3, 0x5c, 0x46, 0xb7, 0xa1,
0x99, 0xfb, 0xa8, 0x61, 0xf5, 0x15, 0x93, 0xf9, 0xef, 0x1c, 0xe7, 0x32, 0xd8, 0x83, 0x76, 0xe1,
0x3b, 0x83, 0x35, 0xd0, 0xf6, 0x2c, 0xf8, 0xf8, 0x70, 0x2e, 0x93, 0x5d, 0x68, 0xe6, 0xda, 0xfd,
0x46, 0x8b, 0xf9, 0x6f, 0x0a, 0x83, 0x6b, 0x0b, 0x66, 0x74, 0xe8, 0xdd, 0x87, 0x76, 0xa1, 0x39,
0x6f, 0x14, 0x59, 0xf4, 0x61, 0x60, 0x70, 0x7d, 0xe1, 0x9c, 0xe6, 0x74, 0x1f, 0xba, 0x33, 0xad,
0x7a, 0xe3, 0xdc, 0xc5, 0x1d, 0xfc, 0x73, 0xcd, 0xfa, 0x54, 0x6e, 0x76, 0xae, 0x12, 0xcb, 0x6d,
0xf6, 0x7c, 0x63, 0x7e, 0xf0, 0xfc, 0xe2, 0x49, 0xad, 0xd5, 0x3d, 0xe8, 0x14, 0x7b, 0xf2, 0x86,
0xd9, 0xc2, 0x4e, 0xfd, 0xf2, 0x93, 0x53, 0x68, 0xcf, 0x67, 0x27, 0x67, 0x51, 0xd7, 0xfe, 0x5c,
0x46, 0x77, 0x00, 0x74, 0xdd, 0x15, 0xe0, 0x28, 0xdd, 0xb2, 0xb9, 0x7a, 0x2f, 0xdd, 0xb2, 0x05,
0x35, 0xda, 0x6d, 0x00, 0x55, 0x2e, 0x05, 0x24, 0xe1, 0xd6, 0x55, 0xa3, 0xc6, 0x4c, 0x8d, 0x36,
0xe8, 0xcf, 0x4f, 0xcc, 0x31, 0x40, 0x94, 0x5e, 0x84, 0xc1, 0x47, 0x00, 0x59, 0x19, 0x66, 0x18,
0xcc, 0x15, 0x66, 0x4b, 0x7c, 0xd0, 0xca, 0x17, 0x5d, 0x96, 0xb6, 0x75, 0x41, 0x21, 0xb6, 0x84,
0x45, 0x77, 0x26, 0xa9, 0x2e, 0x1e, 0xb6, 0xd9, 0x5c, 0x7b, 0x30, 0x97, 0x58, 0x5b, 0xef, 0x42,
0x2b, 0x9f, 0x4d, 0x1b, 0x2d, 0x16, 0x64, 0xd8, 0x83, 0x42, 0x46, 0x6d, 0xdd, 0x86, 0x4e, 0x31,
0x93, 0xb6, 0x72, 0xf7, 0x62, 0x2e, 0xbf, 0x1e, 0xe8, 0x3e, 0x51, 0x8e, 0xfc, 0x6d, 0x80, 0x2c,
0xe3, 0x36, 0xee, 0x9b, 0xcb, 0xc1, 0x67, 0xa4, 0xde, 0x87, 0xee, 0x4c, 0x26, 0x6d, 0x2c, 0x5e,
0x9c, 0x60, 0x2f, 0xf3, 0x7e, 0x3e, 0xa4, 0x1b, 0xbb, 0x17, 0x84, 0xf9, 0x65, 0xe1, 0x2f, 0x17,
0xfe, 0xcd, 0x29, 0x9e, 0x7f, 0x11, 0x96, 0x85, 0xbf, 0x42, 0xd1, 0x6a, 0xa2, 0xce, 0xa2, 0x4a,
0x76, 0xd9, 0xa3, 0x50, 0xac, 0xf0, 0xcc, 0x3e, 0x2c, 0xac, 0xfb, 0x96, 0xf9, 0x23, 0x5f, 0x56,
0x18, 0x7f, 0x2c, 0x28, 0x35, 0xbe, 0x27, 0x3a, 0xe4, 0x4b, 0x87, 0x5c, 0x74, 0x58, 0x50, 0x51,
0x9c, 0xcb, 0x68, 0x1f, 0xba, 0xf7, 0x4d, 0x56, 0xa8, 0x33, 0x56, 0xad, 0xce, 0x82, 0x0c, 0x7d,
0x30, 0x58, 0x34, 0xa5, 0xaf, 0xe8, 0xa7, 0xd0, 0x9b, 0xcb, 0x56, 0xad, 0xad, 0xb4, 0x2f, 0xba,
0x30, 0x8d, 0x3d, 0x57, 0xad, 0x03, 0x58, 0x9b, 0x4d, 0x56, 0xad, 0x17, 0xf4, 0xa6, 0x2f, 0x4e,
0x62, 0xcf, 0x65, 0xf5, 0x3e, 0xd4, 0x4d, 0x72, 0x64, 0xe9, 0xfe, 0xf3, 0x4c, 0xb2, 0x74, 0xde,
0xd2, 0xdd, 0xb3, 0x6f, 0xbf, 0xdb, 0x7a, 0xee, 0x6f, 0xdf, 0x6d, 0x3d, 0xf7, 0xcb, 0x67, 0x5b,
0xa5, 0x6f, 0x9f, 0x6d, 0x95, 0xfe, 0xfa, 0x6c, 0xab, 0xf4, 0xcf, 0x67, 0x5b, 0xa5, 0x1f, 0xfd,
0xf4, 0x07, 0xfe, 0x65, 0x85, 0x26, 0x11, 0xc7, 0x21, 0xda, 0x39, 0xc5, 0x94, 0xe7, 0xa6, 0xe2,
0x93, 0xd1, 0xdc, 0xbf, 0x59, 0x84, 0x86, 0xc7, 0x35, 0x09, 0xbf, 0xfd, 0xef, 0x00, 0x00, 0x00,
0xff, 0xff, 0x9e, 0x10, 0x77, 0x40, 0xc5, 0x23, 0x00, 0x00,
0xd1, 0xc6, 0x83, 0x24, 0xd0, 0x00, 0x08, 0x62, 0x49, 0x51, 0x10, 0x64, 0xf3, 0x93, 0xd7, 0xb6,
0x4c, 0x7f, 0xfe, 0x0c, 0xda, 0xb2, 0xeb, 0x93, 0x1f, 0xe5, 0xa8, 0x44, 0x8a, 0x26, 0x69, 0x5b,
0x26, 0xbd, 0x94, 0xca, 0xa9, 0xa4, 0x92, 0xad, 0xe5, 0xee, 0x08, 0x18, 0x13, 0xbb, 0xb3, 0x9e,
0x99, 0xa5, 0x08, 0x27, 0x95, 0xca, 0x29, 0xb9, 0xe5, 0x96, 0xdc, 0xf2, 0x07, 0x52, 0xb9, 0xe5,
0x98, 0x6b, 0x0e, 0xae, 0x9c, 0x72, 0xcc, 0x29, 0x15, 0xeb, 0x27, 0xe4, 0x17, 0xa4, 0xe6, 0xb5,
0x0f, 0x00, 0x84, 0x63, 0x16, 0xab, 0x72, 0x41, 0x6d, 0xf7, 0xf4, 0xf4, 0x6b, 0x66, 0x7a, 0xba,
0x7b, 0x00, 0x9f, 0x0f, 0x30, 0x1f, 0x26, 0x27, 0x7d, 0x9f, 0x84, 0x5b, 0xa7, 0x1e, 0xf7, 0xde,
0xf0, 0x49, 0xc4, 0x3d, 0x1c, 0x21, 0xca, 0xa6, 0x60, 0x46, 0xfd, 0x2d, 0x6f, 0x80, 0x22, 0xbe,
0x15, 0x53, 0xc2, 0x89, 0x4f, 0x46, 0x4c, 0x7d, 0x31, 0x85, 0xee, 0x4b, 0xc0, 0xaa, 0x0e, 0x68,
0xec, 0xf7, 0x0e, 0xaf, 0x86, 0x31, 0xf1, 0xb1, 0x62, 0xdb, 0xfb, 0xf9, 0xd5, 0x30, 0x9c, 0xc3,
0x45, 0xcf, 0x38, 0x1d, 0x6c, 0xf1, 0x71, 0x8c, 0x98, 0xfa, 0xd5, 0xd2, 0x6f, 0x0e, 0x08, 0x19,
0x8c, 0x90, 0xe2, 0x72, 0x92, 0x3c, 0xd9, 0x42, 0x61, 0xcc, 0xc7, 0x6a, 0xd0, 0xfe, 0x7d, 0x19,
0xd6, 0x77, 0x28, 0xf2, 0x38, 0xda, 0x31, 0xdc, 0x1c, 0xf4, 0x55, 0x82, 0x18, 0xb7, 0x5e, 0x84,
0x66, 0x2a, 0xc1, 0xc5, 0x41, 0xb7, 0x74, 0xab, 0xb4, 0x59, 0x77, 0x1a, 0x29, 0xee, 0x20, 0xb0,
0xae, 0xc3, 0x12, 0x3a, 0x47, 0xbe, 0x18, 0x2d, 0xcb, 0xd1, 0x45, 0x01, 0x1e, 0x04, 0xd6, 0x5b,
0xd0, 0x60, 0x9c, 0xe2, 0x68, 0xe0, 0x26, 0x0c, 0xd1, 0x6e, 0xe5, 0x56, 0x69, 0xb3, 0x71, 0x67,
0xa5, 0x2f, 0xdc, 0xdb, 0x3f, 0x96, 0x03, 0x8f, 0x19, 0xa2, 0x0e, 0xb0, 0xf4, 0xdb, 0xba, 0x0d,
0x4b, 0x01, 0x3a, 0xc3, 0x3e, 0x62, 0xdd, 0xea, 0xad, 0xca, 0x66, 0xe3, 0x4e, 0x53, 0x91, 0x3f,
0x90, 0x48, 0xc7, 0x0c, 0x5a, 0xaf, 0x41, 0x8d, 0x71, 0x42, 0xbd, 0x01, 0x62, 0xdd, 0x05, 0x49,
0xd8, 0x32, 0x7c, 0x25, 0xd6, 0x49, 0x87, 0xad, 0xe7, 0xa1, 0x72, 0xb8, 0x73, 0xd0, 0x5d, 0x94,
0xd2, 0x41, 0x53, 0xc5, 0xc8, 0x77, 0x04, 0xda, 0x7a, 0x09, 0x5a, 0xcc, 0x8b, 0x82, 0x13, 0x72,
0xee, 0xc6, 0x38, 0x88, 0x58, 0x77, 0xe9, 0x56, 0x69, 0xb3, 0xe6, 0x34, 0x35, 0xf2, 0x48, 0xe0,
0xec, 0xf7, 0xe1, 0xda, 0x31, 0xf7, 0x28, 0xbf, 0x84, 0x77, 0xec, 0xc7, 0xb0, 0xee, 0xa0, 0x90,
0x9c, 0x5d, 0xca, 0xb5, 0x5d, 0x58, 0xe2, 0x38, 0x44, 0x24, 0xe1, 0xd2, 0xb5, 0x2d, 0xc7, 0x80,
0xf6, 0x1f, 0x4b, 0x60, 0xed, 0x9e, 0x23, 0xff, 0x88, 0x12, 0x1f, 0x31, 0xf6, 0x5f, 0x5a, 0xae,
0x57, 0x61, 0x29, 0x56, 0x0a, 0x74, 0xab, 0x92, 0x5c, 0xaf, 0x82, 0xd1, 0xca, 0x8c, 0xda, 0x5f,
0xc2, 0xda, 0x31, 0x1e, 0x44, 0xde, 0xe8, 0x0a, 0xf5, 0x5d, 0x87, 0x45, 0x26, 0x79, 0x4a, 0x55,
0x5b, 0x8e, 0x86, 0xec, 0x23, 0xb0, 0xbe, 0xf0, 0x30, 0xbf, 0x3a, 0x49, 0xf6, 0x1b, 0xb0, 0x5a,
0xe0, 0xc8, 0x62, 0x12, 0x31, 0x24, 0x15, 0xe0, 0x1e, 0x4f, 0x98, 0x64, 0xb6, 0xe0, 0x68, 0xc8,
0x46, 0xb0, 0xf6, 0x29, 0x66, 0x86, 0x1c, 0x7d, 0x1f, 0x15, 0xd6, 0x61, 0xf1, 0x09, 0xa1, 0xa1,
0xc7, 0x8d, 0x06, 0x0a, 0xb2, 0x2c, 0xa8, 0x7a, 0x74, 0xc0, 0xba, 0x95, 0x5b, 0x95, 0xcd, 0xba,
0x23, 0xbf, 0xc5, 0xae, 0x9c, 0x10, 0xa3, 0xf5, 0x7a, 0x11, 0x9a, 0xda, 0xef, 0xee, 0x08, 0x33,
0x2e, 0xe5, 0x34, 0x9d, 0x86, 0xc6, 0x89, 0x39, 0x36, 0x81, 0xf5, 0xc7, 0x71, 0x70, 0xc9, 0x03,
0x7f, 0x07, 0xea, 0x14, 0x31, 0x92, 0x50, 0x71, 0x4c, 0xcb, 0x72, 0xdd, 0xd7, 0xd4, 0xba, 0x7f,
0x8a, 0xa3, 0xe4, 0xdc, 0x31, 0x63, 0x4e, 0x46, 0xa6, 0x8f, 0x10, 0x67, 0x97, 0x39, 0x42, 0xef,
0xc3, 0xb5, 0x23, 0x2f, 0x61, 0x97, 0xd1, 0xd5, 0xfe, 0x40, 0x1c, 0x3f, 0x96, 0x84, 0x97, 0x9a,
0xfc, 0x87, 0x12, 0xd4, 0x76, 0xe2, 0xe4, 0x31, 0xf3, 0x06, 0xc8, 0xfa, 0x1f, 0x68, 0x70, 0xc2,
0xbd, 0x91, 0x9b, 0x08, 0x50, 0x92, 0x57, 0x1d, 0x90, 0x28, 0x45, 0x20, 0xdc, 0x8e, 0xa8, 0x1f,
0x27, 0x9a, 0xa2, 0x7c, 0xab, 0xb2, 0x59, 0x75, 0x1a, 0x0a, 0xa7, 0x48, 0xfa, 0xb0, 0x2a, 0xc7,
0x5c, 0x1c, 0xb9, 0xa7, 0x88, 0x46, 0x68, 0x14, 0x92, 0x00, 0xc9, 0xfd, 0x5b, 0x75, 0x3a, 0x72,
0xe8, 0x20, 0xfa, 0x24, 0x1d, 0xb0, 0xfe, 0x17, 0x3a, 0x29, 0xbd, 0x38, 0x94, 0x92, 0xba, 0x2a,
0xa9, 0xdb, 0x9a, 0xfa, 0xb1, 0x46, 0xdb, 0xbf, 0x80, 0xe5, 0x47, 0x43, 0x4a, 0x38, 0x1f, 0xe1,
0x68, 0xf0, 0xc0, 0xe3, 0x9e, 0x88, 0x1e, 0x31, 0xa2, 0x98, 0x04, 0x4c, 0x6b, 0x6b, 0x40, 0xeb,
0x75, 0xe8, 0x70, 0x45, 0x8b, 0x02, 0xd7, 0xd0, 0x94, 0x25, 0xcd, 0x4a, 0x3a, 0x70, 0xa4, 0x89,
0x5f, 0x81, 0xe5, 0x8c, 0x58, 0xc4, 0x1f, 0xad, 0x6f, 0x2b, 0xc5, 0x3e, 0xc2, 0x21, 0xb2, 0xcf,
0xa4, 0xaf, 0xe4, 0x22, 0x5b, 0xaf, 0x43, 0x3d, 0xf3, 0x43, 0x49, 0xee, 0x90, 0x65, 0xb5, 0x43,
0x8c, 0x3b, 0x9d, 0x5a, 0xea, 0x94, 0x0f, 0xa1, 0xcd, 0x53, 0xc5, 0xdd, 0xc0, 0xe3, 0x5e, 0x71,
0x53, 0x15, 0xad, 0x72, 0x96, 0x79, 0x01, 0xb6, 0x3f, 0x80, 0xfa, 0x11, 0x0e, 0x98, 0x12, 0xdc,
0x85, 0x25, 0x3f, 0xa1, 0x14, 0x45, 0xdc, 0x98, 0xac, 0x41, 0x6b, 0x0d, 0x16, 0x46, 0x38, 0xc4,
0x5c, 0x9b, 0xa9, 0x00, 0x9b, 0x00, 0x3c, 0x44, 0x21, 0xa1, 0x63, 0xe9, 0xb0, 0x35, 0x58, 0xc8,
0x2f, 0xae, 0x02, 0xac, 0x9b, 0x50, 0x0f, 0xbd, 0xf3, 0x74, 0x51, 0xc5, 0x48, 0x2d, 0xf4, 0xce,
0x95, 0xf2, 0x5d, 0x58, 0x7a, 0xe2, 0xe1, 0x91, 0x1f, 0x71, 0xed, 0x15, 0x03, 0x66, 0x02, 0xab,
0x79, 0x81, 0x7f, 0x29, 0x43, 0x43, 0x49, 0x54, 0x0a, 0xaf, 0xc1, 0x82, 0xef, 0xf9, 0xc3, 0x54,
0xa4, 0x04, 0xac, 0xdb, 0x46, 0x91, 0x72, 0x3e, 0x08, 0x67, 0x9a, 0x1a, 0xd5, 0xb6, 0x00, 0xd8,
0x53, 0x2f, 0xd6, 0xba, 0x55, 0x2e, 0x20, 0xae, 0x0b, 0x1a, 0xa5, 0xee, 0xdb, 0xd0, 0x54, 0xfb,
0x4e, 0x4f, 0xa9, 0x5e, 0x30, 0xa5, 0xa1, 0xa8, 0xd4, 0xa4, 0x97, 0xa0, 0x95, 0x30, 0xe4, 0x0e,
0x31, 0xa2, 0x1e, 0xf5, 0x87, 0xe3, 0xee, 0x82, 0xba, 0x23, 0x13, 0x86, 0xf6, 0x0d, 0xce, 0xba,
0x03, 0x0b, 0x22, 0xfc, 0xb1, 0xee, 0xa2, 0xbc, 0x8e, 0x9f, 0xcf, 0xb3, 0x94, 0xa6, 0xf6, 0xe5,
0xef, 0x6e, 0xc4, 0xe9, 0xd8, 0x51, 0xa4, 0xbd, 0x77, 0x01, 0x32, 0xa4, 0xb5, 0x02, 0x95, 0x53,
0x34, 0xd6, 0xe7, 0x50, 0x7c, 0x0a, 0xe7, 0x9c, 0x79, 0xa3, 0xc4, 0x78, 0x5d, 0x01, 0xef, 0x97,
0xdf, 0x2d, 0xd9, 0x3e, 0xb4, 0xb7, 0x47, 0xa7, 0x98, 0xe4, 0xa6, 0xaf, 0xc1, 0x42, 0xe8, 0x7d,
0x49, 0xa8, 0xf1, 0xa4, 0x04, 0x24, 0x16, 0x47, 0x84, 0x1a, 0x16, 0x12, 0xb0, 0x96, 0xa1, 0x4c,
0x62, 0xe9, 0xaf, 0xba, 0x53, 0x26, 0x71, 0x26, 0xa8, 0x9a, 0x13, 0x64, 0xff, 0xa3, 0x0a, 0x90,
0x49, 0xb1, 0x1c, 0xe8, 0x61, 0xe2, 0x32, 0x44, 0x45, 0x0a, 0xe2, 0x9e, 0x8c, 0x39, 0x62, 0x2e,
0x45, 0x7e, 0x42, 0x19, 0x3e, 0x13, 0xeb, 0x27, 0xcc, 0xbe, 0xa6, 0xcc, 0x9e, 0xd0, 0xcd, 0xb9,
0x8e, 0xc9, 0xb1, 0x9a, 0xb7, 0x2d, 0xa6, 0x39, 0x66, 0x96, 0x75, 0x00, 0xd7, 0x32, 0x9e, 0x41,
0x8e, 0x5d, 0x79, 0x1e, 0xbb, 0xd5, 0x94, 0x5d, 0x90, 0xb1, 0xda, 0x85, 0x55, 0x4c, 0xdc, 0xaf,
0x12, 0x94, 0x14, 0x18, 0x55, 0xe6, 0x31, 0xea, 0x60, 0xf2, 0xb9, 0x9c, 0x90, 0xb1, 0x39, 0x82,
0x1b, 0x39, 0x2b, 0xc5, 0x71, 0xcf, 0x31, 0xab, 0xce, 0x63, 0xb6, 0x9e, 0x6a, 0x25, 0xe2, 0x41,
0xc6, 0xf1, 0x63, 0x58, 0xc7, 0xc4, 0x7d, 0xea, 0x61, 0x3e, 0xc9, 0x6e, 0xe1, 0x3b, 0x8c, 0x14,
0x97, 0x6e, 0x91, 0x97, 0x32, 0x32, 0x44, 0x74, 0x50, 0x30, 0x72, 0xf1, 0x3b, 0x8c, 0x7c, 0x28,
0x27, 0x64, 0x6c, 0xee, 0x43, 0x07, 0x93, 0x49, 0x6d, 0x96, 0xe6, 0x31, 0x69, 0x63, 0x52, 0xd4,
0x64, 0x1b, 0x3a, 0x0c, 0xf9, 0x9c, 0xd0, 0xfc, 0x26, 0xa8, 0xcd, 0x63, 0xb1, 0xa2, 0xe9, 0x53,
0x1e, 0xf6, 0x8f, 0xa1, 0xb9, 0x9f, 0x0c, 0x10, 0x1f, 0x9d, 0xa4, 0xc1, 0xe0, 0xca, 0xe2, 0x8f,
0xfd, 0xaf, 0x32, 0x34, 0x76, 0x06, 0x94, 0x24, 0x71, 0x21, 0x26, 0xab, 0x43, 0x3a, 0x19, 0x93,
0x25, 0x89, 0x8c, 0xc9, 0x8a, 0xf8, 0x1d, 0x68, 0x86, 0xf2, 0xe8, 0x6a, 0x7a, 0x15, 0x87, 0x3a,
0x53, 0x87, 0xda, 0x69, 0x84, 0xb9, 0x60, 0xd6, 0x07, 0x88, 0x71, 0xc0, 0xf4, 0x1c, 0x15, 0x8e,
0xda, 0x3a, 0x23, 0x34, 0x21, 0xda, 0xa9, 0xc7, 0x69, 0xb4, 0x7e, 0x0b, 0x1a, 0x27, 0xc2, 0x49,
0x7a, 0x42, 0x21, 0x18, 0x65, 0xde, 0x73, 0xe0, 0x24, 0x3b, 0x84, 0xfb, 0xd0, 0x1a, 0x2a, 0x97,
0xe9, 0x49, 0x6a, 0x0f, 0xbd, 0xa4, 0x2d, 0xc9, 0xec, 0xed, 0xe7, 0x3d, 0xab, 0x16, 0xa0, 0x39,
0xcc, 0xa1, 0x7a, 0xc7, 0xd0, 0x99, 0x22, 0x99, 0x11, 0x83, 0x36, 0xf3, 0x31, 0xa8, 0x71, 0xc7,
0x52, 0x82, 0xf2, 0x33, 0xf3, 0x71, 0xe9, 0x37, 0x65, 0x68, 0x7e, 0x86, 0xf8, 0x53, 0x42, 0x4f,
0x95, 0xbe, 0x16, 0x54, 0x23, 0x2f, 0x44, 0x9a, 0xa3, 0xfc, 0xb6, 0x6e, 0x40, 0x8d, 0x9e, 0xab,
0x00, 0xa2, 0xd7, 0x73, 0x89, 0x9e, 0xcb, 0xc0, 0x60, 0xbd, 0x00, 0x40, 0xcf, 0xdd, 0xd8, 0xf3,
0x4f, 0x91, 0xf6, 0x60, 0xd5, 0xa9, 0xd3, 0xf3, 0x23, 0x85, 0x10, 0x5b, 0x81, 0x9e, 0xbb, 0x88,
0x52, 0x42, 0x99, 0x8e, 0x55, 0x35, 0x7a, 0xbe, 0x2b, 0x61, 0x3d, 0x37, 0xa0, 0x24, 0x8e, 0x51,
0x20, 0x63, 0xb4, 0x9c, 0xfb, 0x40, 0x21, 0x84, 0x54, 0x6e, 0xa4, 0x2e, 0x2a, 0xa9, 0x3c, 0x93,
0xca, 0x33, 0xa9, 0x4b, 0x6a, 0x26, 0xcf, 0x4b, 0xe5, 0xa9, 0xd4, 0x9a, 0x92, 0xca, 0x73, 0x52,
0x79, 0x26, 0xb5, 0x6e, 0xe6, 0x6a, 0xa9, 0xf6, 0xaf, 0x4b, 0xb0, 0x3e, 0x99, 0xf8, 0xe9, 0x34,
0xf5, 0x1d, 0x68, 0xfa, 0x72, 0xbd, 0x0a, 0x7b, 0xb2, 0x33, 0xb5, 0x92, 0x4e, 0xc3, 0xcf, 0x6d,
0xe3, 0xbb, 0xd0, 0x8a, 0x94, 0x83, 0xd3, 0xad, 0x59, 0xc9, 0xd6, 0x25, 0xef, 0x7b, 0xa7, 0x19,
0xe5, 0x20, 0x3b, 0x00, 0xeb, 0x0b, 0x8a, 0x39, 0x3a, 0xe6, 0x14, 0x79, 0xe1, 0x55, 0x14, 0x20,
0x16, 0x54, 0x65, 0xb6, 0x52, 0x91, 0xf9, 0xb5, 0xfc, 0xb6, 0x5f, 0x85, 0xd5, 0x82, 0x14, 0x6d,
0xeb, 0x0a, 0x54, 0x46, 0x28, 0x92, 0xdc, 0x5b, 0x8e, 0xf8, 0xb4, 0x3d, 0xe8, 0x38, 0xc8, 0x0b,
0xae, 0x4e, 0x1b, 0x2d, 0xa2, 0x92, 0x89, 0xd8, 0x04, 0x2b, 0x2f, 0x42, 0xab, 0x62, 0xb4, 0x2e,
0xe5, 0xb4, 0x3e, 0x84, 0xce, 0xce, 0x88, 0x30, 0x74, 0xcc, 0x03, 0x1c, 0x5d, 0x45, 0xc5, 0xf4,
0x33, 0x58, 0x7d, 0xc4, 0xc7, 0x5f, 0x08, 0x66, 0x0c, 0x7f, 0x8d, 0xae, 0xc8, 0x3e, 0x4a, 0x9e,
0x1a, 0xfb, 0x28, 0x79, 0x2a, 0x8a, 0x25, 0x9f, 0x8c, 0x92, 0x30, 0x92, 0x47, 0xa1, 0xe5, 0x68,
0xc8, 0xde, 0x86, 0xa6, 0xca, 0xa1, 0x1f, 0x92, 0x20, 0x19, 0xa1, 0x99, 0x67, 0x70, 0x03, 0x20,
0xf6, 0xa8, 0x17, 0x22, 0x8e, 0xa8, 0xda, 0x43, 0x75, 0x27, 0x87, 0xb1, 0x7f, 0x57, 0x86, 0x35,
0xd5, 0x12, 0x39, 0x56, 0x9d, 0x00, 0x63, 0x42, 0x0f, 0x6a, 0x43, 0xc2, 0x78, 0x8e, 0x61, 0x0a,
0x0b, 0x15, 0x83, 0xc8, 0x70, 0x13, 0x9f, 0x85, 0x3e, 0x45, 0x65, 0x7e, 0x9f, 0x62, 0xaa, 0x13,
0x51, 0x9d, 0xee, 0x44, 0x88, 0xd3, 0x66, 0x88, 0xb0, 0x3a, 0xe3, 0x75, 0xa7, 0xae, 0x31, 0x07,
0x81, 0x75, 0x1b, 0xda, 0x03, 0xa1, 0xa5, 0x3b, 0x24, 0xe4, 0xd4, 0x8d, 0x3d, 0x3e, 0x94, 0x47,
0xbd, 0xee, 0xb4, 0x24, 0x7a, 0x9f, 0x90, 0xd3, 0x23, 0x8f, 0x0f, 0xad, 0xf7, 0x60, 0x59, 0xa7,
0x81, 0xa1, 0x74, 0x11, 0xd3, 0x97, 0x9f, 0x3e, 0x45, 0x79, 0xef, 0x39, 0xad, 0xd3, 0x1c, 0xc4,
0xec, 0xeb, 0x70, 0xed, 0x01, 0x62, 0x9c, 0x92, 0x71, 0xd1, 0x31, 0xf6, 0x0f, 0x00, 0x0e, 0x22,
0x8e, 0xe8, 0x13, 0xcf, 0x47, 0xcc, 0x7a, 0x33, 0x0f, 0xe9, 0xe4, 0x68, 0xa5, 0xaf, 0x3a, 0x52,
0xe9, 0x80, 0x93, 0xa3, 0xb1, 0xfb, 0xb0, 0xe8, 0x90, 0x44, 0x84, 0xa3, 0x97, 0xcd, 0x97, 0x9e,
0xd7, 0xd4, 0xf3, 0x24, 0xd2, 0xd1, 0x63, 0xf6, 0xbe, 0x29, 0x61, 0x33, 0x76, 0x7a, 0x89, 0xfa,
0x50, 0xc7, 0x06, 0xa7, 0xa3, 0xca, 0xb4, 0xe8, 0x8c, 0xc4, 0xfe, 0x00, 0x56, 0x15, 0x27, 0xc5,
0xd9, 0xb0, 0x79, 0x19, 0x16, 0xa9, 0x51, 0xa3, 0x94, 0xb5, 0xa2, 0x34, 0x91, 0x1e, 0x13, 0xfe,
0x10, 0x15, 0x75, 0x66, 0x88, 0xf1, 0xc7, 0x2a, 0x74, 0xc4, 0x40, 0x81, 0xa7, 0xfd, 0x11, 0x34,
0xef, 0x3b, 0x47, 0x9f, 0x21, 0x3c, 0x18, 0x9e, 0x88, 0xe8, 0xf9, 0xff, 0x45, 0x58, 0x1b, 0x6c,
0x69, 0x6d, 0x73, 0x43, 0x4e, 0x81, 0xce, 0xfe, 0x18, 0xd6, 0xef, 0x07, 0x41, 0x1e, 0x65, 0xb4,
0x7e, 0x13, 0xea, 0x51, 0x8e, 0x5d, 0xee, 0xce, 0x2a, 0x50, 0x67, 0x44, 0xf6, 0x4f, 0x60, 0xf5,
0x30, 0x1a, 0xe1, 0x08, 0xed, 0x1c, 0x3d, 0x7e, 0x88, 0xd2, 0x58, 0x64, 0x41, 0x55, 0xe4, 0x6c,
0x92, 0x47, 0xcd, 0x91, 0xdf, 0xe2, 0x70, 0x46, 0x27, 0xae, 0x1f, 0x27, 0x4c, 0xf7, 0xa3, 0x16,
0xa3, 0x93, 0x9d, 0x38, 0x61, 0xe2, 0x72, 0x11, 0xc9, 0x05, 0x89, 0x46, 0x63, 0x79, 0x42, 0x6b,
0xce, 0x92, 0x1f, 0x27, 0x87, 0xd1, 0x68, 0x6c, 0xff, 0x9f, 0xac, 0xc0, 0x11, 0x0a, 0x1c, 0x2f,
0x0a, 0x48, 0xf8, 0x00, 0x9d, 0xe5, 0x24, 0xa4, 0xd5, 0x9e, 0x89, 0x44, 0xdf, 0x94, 0xa0, 0x79,
0x7f, 0x80, 0x22, 0xfe, 0x00, 0x71, 0x0f, 0x8f, 0x64, 0x45, 0x77, 0x86, 0x28, 0xc3, 0x24, 0xd2,
0xc7, 0xcd, 0x80, 0xa2, 0x20, 0xc7, 0x11, 0xe6, 0x6e, 0xe0, 0xa1, 0x90, 0x44, 0x92, 0x4b, 0xcd,
0x01, 0x81, 0x7a, 0x20, 0x31, 0xd6, 0xab, 0xd0, 0x56, 0xfd, 0x42, 0x77, 0xe8, 0x45, 0xc1, 0x48,
0x1c, 0x74, 0xd5, 0x3f, 0x59, 0x56, 0xe8, 0x7d, 0x8d, 0xb5, 0x5e, 0x83, 0x15, 0x7d, 0x0c, 0x33,
0xca, 0xaa, 0xa4, 0x6c, 0x6b, 0x7c, 0x81, 0x34, 0x89, 0x63, 0x42, 0x39, 0x73, 0x19, 0xf2, 0x7d,
0x12, 0xc6, 0xba, 0x1c, 0x6a, 0x1b, 0xfc, 0xb1, 0x42, 0xdb, 0x03, 0x58, 0xdd, 0x13, 0x76, 0x6a,
0x4b, 0xb2, 0x6d, 0xb5, 0x1c, 0xa2, 0xd0, 0x3d, 0x19, 0x11, 0xff, 0xd4, 0x15, 0xc1, 0x51, 0x7b,
0x58, 0x24, 0x5c, 0xdb, 0x02, 0x79, 0x8c, 0xbf, 0x96, 0x95, 0xbf, 0xa0, 0x1a, 0x12, 0x1e, 0x8f,
0x92, 0x81, 0x1b, 0x53, 0x72, 0x82, 0xb4, 0x89, 0xed, 0x10, 0x85, 0xfb, 0x0a, 0x7f, 0x24, 0xd0,
0xf6, 0x9f, 0x4b, 0xb0, 0x56, 0x94, 0xa4, 0x43, 0xfd, 0x16, 0xac, 0x15, 0x45, 0xe9, 0xeb, 0x5f,
0xa5, 0x97, 0x9d, 0xbc, 0x40, 0x95, 0x08, 0xdc, 0x85, 0x96, 0x6c, 0x22, 0xbb, 0x81, 0xe2, 0x54,
0x4c, 0x7a, 0xf2, 0xeb, 0xe2, 0x34, 0xbd, 0xfc, 0x2a, 0xbd, 0x07, 0x37, 0xb4, 0xf9, 0xee, 0xb4,
0xda, 0x6a, 0x43, 0xac, 0x6b, 0x82, 0x87, 0x13, 0xda, 0x7f, 0x0a, 0xdd, 0x0c, 0xb5, 0x3d, 0x96,
0xc8, 0x6c, 0x33, 0xaf, 0x4e, 0x18, 0x7b, 0x3f, 0x08, 0xa8, 0x3c, 0x25, 0x55, 0x67, 0xd6, 0x90,
0x7d, 0x0f, 0xae, 0x1f, 0x23, 0xae, 0xbc, 0xe1, 0x71, 0x5d, 0x89, 0x28, 0x66, 0x2b, 0x50, 0x39,
0x46, 0xbe, 0x34, 0xbe, 0xe2, 0x88, 0x4f, 0xb1, 0x01, 0x1f, 0x33, 0xe4, 0x4b, 0x2b, 0x2b, 0x8e,
0xfc, 0xb6, 0xff, 0x54, 0x82, 0x25, 0x1d, 0x9c, 0xc5, 0x05, 0x13, 0x50, 0x7c, 0x86, 0xa8, 0xde,
0x7a, 0x1a, 0xb2, 0x5e, 0x81, 0x65, 0xf5, 0xe5, 0x92, 0x98, 0x63, 0x92, 0x86, 0xfc, 0x96, 0xc2,
0x1e, 0x2a, 0xa4, 0xec, 0x0f, 0xca, 0xf6, 0x97, 0xae, 0x34, 0x35, 0x24, 0x9b, 0x7c, 0x4c, 0x9c,
0x70, 0x19, 0xe2, 0xeb, 0x8e, 0x86, 0xc4, 0x56, 0x37, 0xfc, 0x16, 0x24, 0x3f, 0x03, 0x8a, 0xad,
0x1e, 0x92, 0x24, 0xe2, 0x6e, 0x4c, 0x70, 0xc4, 0x75, 0x4c, 0x07, 0x89, 0x3a, 0x12, 0x18, 0xfb,
0x57, 0x25, 0x58, 0x54, 0x3d, 0x72, 0x51, 0xdb, 0xa6, 0x37, 0x6b, 0x19, 0xcb, 0x2c, 0x45, 0xca,
0x52, 0xb7, 0xa9, 0xfc, 0x16, 0xe7, 0xf8, 0x2c, 0x54, 0xf7, 0x83, 0x56, 0xed, 0x2c, 0x94, 0x17,
0xc3, 0x2b, 0xb0, 0x9c, 0x5d, 0xd0, 0x72, 0x5c, 0xa9, 0xd8, 0x4a, 0xb1, 0x92, 0xec, 0x42, 0x4d,
0xed, 0x1f, 0x8a, 0x92, 0x3e, 0xed, 0x0f, 0xaf, 0x40, 0x25, 0x49, 0x95, 0x11, 0x9f, 0x02, 0x33,
0x48, 0xaf, 0x76, 0xf1, 0x69, 0xdd, 0x86, 0x65, 0x2f, 0x08, 0xb0, 0x98, 0xee, 0x8d, 0xf6, 0x70,
0x90, 0x1e, 0xd2, 0x22, 0xd6, 0xfe, 0x6b, 0x09, 0xda, 0x3b, 0x24, 0x1e, 0x7f, 0x84, 0x47, 0x28,
0x17, 0x41, 0xa4, 0x92, 0xfa, 0x66, 0x17, 0xdf, 0x22, 0x5b, 0x7d, 0x82, 0x47, 0x48, 0x1d, 0x2d,
0xb5, 0xb2, 0x35, 0x81, 0x90, 0xc7, 0xca, 0x0c, 0xa6, 0x6d, 0xb7, 0x96, 0x1a, 0x7c, 0x48, 0x02,
0x99, 0x97, 0x07, 0x98, 0xba, 0x69, 0x93, 0xad, 0xe5, 0x2c, 0x05, 0x98, 0xca, 0x21, 0x6d, 0xc8,
0x82, 0xec, 0xf3, 0xe6, 0x0d, 0x59, 0x54, 0x18, 0x61, 0xc8, 0x3a, 0x2c, 0x92, 0x27, 0x4f, 0x18,
0xe2, 0x32, 0x83, 0xae, 0x38, 0x1a, 0x4a, 0xc3, 0x5c, 0x2d, 0x17, 0xe6, 0xae, 0xc1, 0xaa, 0x7c,
0x51, 0x78, 0x44, 0x3d, 0x1f, 0x47, 0x03, 0x73, 0x3d, 0xac, 0x81, 0x75, 0xcc, 0x49, 0x3c, 0x8d,
0xdd, 0x43, 0xfc, 0xf0, 0xf0, 0xe1, 0xee, 0x19, 0x8a, 0xb8, 0xc1, 0xbe, 0x01, 0x35, 0x83, 0xfa,
0x0f, 0xf2, 0xaa, 0x3b, 0xbf, 0xed, 0xe8, 0xc0, 0xaa, 0x6b, 0x74, 0x6b, 0x0f, 0xda, 0x13, 0x6f,
0x3e, 0x96, 0x6e, 0xda, 0xcc, 0x7e, 0x0a, 0xea, 0xad, 0xf7, 0xd5, 0x1b, 0x52, 0xdf, 0xbc, 0x21,
0xf5, 0x77, 0xc3, 0x98, 0x8f, 0xad, 0x5d, 0x58, 0x2e, 0xbe, 0x8e, 0x58, 0x37, 0x4d, 0x8e, 0x33,
0xe3, 0xcd, 0xe4, 0x42, 0x36, 0x7b, 0xd0, 0x9e, 0x78, 0x28, 0x31, 0xfa, 0xcc, 0x7e, 0x3f, 0xb9,
0x90, 0xd1, 0x3d, 0x68, 0xe4, 0x5e, 0x46, 0xac, 0xae, 0x62, 0x32, 0xfd, 0x58, 0x72, 0x21, 0x83,
0x1d, 0x68, 0x15, 0x1e, 0x2b, 0xac, 0x9e, 0xb6, 0x67, 0xc6, 0x0b, 0xc6, 0x85, 0x4c, 0xb6, 0xa1,
0x91, 0x7b, 0x33, 0x30, 0x5a, 0x4c, 0x3f, 0x4c, 0xf4, 0x6e, 0xcc, 0x18, 0xd1, 0xf1, 0x7b, 0x1f,
0x5a, 0x85, 0x0e, 0xbf, 0x51, 0x64, 0xd6, 0xeb, 0x42, 0xef, 0xe6, 0xcc, 0x31, 0xcd, 0x69, 0x0f,
0xda, 0x13, 0xfd, 0x7e, 0xe3, 0xdc, 0xd9, 0xcf, 0x00, 0x17, 0x9a, 0xf5, 0x89, 0x5c, 0xec, 0x5c,
0x39, 0x97, 0x5b, 0xec, 0xe9, 0xee, 0x7e, 0xef, 0xf9, 0xd9, 0x83, 0x5a, 0xab, 0x5d, 0x58, 0x2e,
0x36, 0xf6, 0x0d, 0xb3, 0x99, 0xed, 0xfe, 0xf9, 0x3b, 0xa7, 0xd0, 0xe3, 0xcf, 0x76, 0xce, 0xac,
0xd6, 0xff, 0x85, 0x8c, 0xee, 0x03, 0xe8, 0xe2, 0x2d, 0xc0, 0x51, 0xba, 0x64, 0x53, 0x45, 0x63,
0xba, 0x64, 0x33, 0x0a, 0xbd, 0x7b, 0x00, 0xaa, 0xe6, 0x0a, 0x48, 0xc2, 0xad, 0xeb, 0x46, 0x8d,
0x89, 0x42, 0xaf, 0xd7, 0x9d, 0x1e, 0x98, 0x62, 0x80, 0x28, 0xbd, 0x0c, 0x83, 0x0f, 0x01, 0xb2,
0x5a, 0xce, 0x30, 0x98, 0xaa, 0xee, 0xe6, 0xf8, 0xa0, 0x99, 0xaf, 0xdc, 0x2c, 0x6d, 0xeb, 0x8c,
0x6a, 0x6e, 0x0e, 0x8b, 0xf6, 0x44, 0x66, 0x5e, 0xdc, 0x6c, 0x93, 0x09, 0x7b, 0x6f, 0x2a, 0x3b,
0xb7, 0xee, 0x42, 0x33, 0x9f, 0x92, 0x1b, 0x2d, 0x66, 0xa4, 0xe9, 0xbd, 0x42, 0x5a, 0x6e, 0xdd,
0x83, 0xe5, 0x62, 0x3a, 0x6e, 0xe5, 0xce, 0xc5, 0x54, 0x92, 0xde, 0xd3, 0xcd, 0xa6, 0x1c, 0xf9,
0xdb, 0x00, 0x59, 0xda, 0x6e, 0xdc, 0x37, 0x95, 0xc8, 0x4f, 0x48, 0xdd, 0x83, 0xf6, 0x44, 0x3a,
0x6e, 0x2c, 0x9e, 0x9d, 0xa5, 0xcf, 0xf3, 0x7e, 0xfe, 0x5e, 0x30, 0x76, 0xcf, 0xb8, 0x2b, 0xe6,
0x85, 0xbf, 0xdc, 0x1d, 0x62, 0x76, 0xf1, 0xf4, 0xb5, 0x32, 0x2f, 0xfc, 0x15, 0x2a, 0x5f, 0x13,
0x75, 0x66, 0x95, 0xc3, 0xf3, 0x2e, 0x85, 0x62, 0x99, 0x68, 0xd6, 0x61, 0x66, 0xf1, 0x38, 0xcf,
0x1f, 0xf9, 0xda, 0xc4, 0xf8, 0x63, 0x46, 0xbd, 0xf2, 0x1d, 0xd1, 0x21, 0x5f, 0x7f, 0xe4, 0xa2,
0xc3, 0x8c, 0xb2, 0xe4, 0x42, 0x46, 0xfb, 0xd0, 0xde, 0x33, 0xa9, 0xa5, 0x4e, 0x7b, 0xb5, 0x3a,
0x33, 0xd2, 0xfc, 0x5e, 0x6f, 0xd6, 0x90, 0x3e, 0xa2, 0x9f, 0x40, 0x67, 0x2a, 0xe5, 0xb5, 0x36,
0xd2, 0xe6, 0xea, 0xcc, 0x5c, 0xf8, 0x42, 0xb5, 0x0e, 0x60, 0x65, 0x32, 0xe3, 0xb5, 0x5e, 0xd0,
0x8b, 0x3e, 0x3b, 0x13, 0xbe, 0x90, 0xd5, 0x7b, 0x50, 0x33, 0x19, 0x96, 0xa5, 0x9b, 0xd8, 0x13,
0x19, 0xd7, 0x85, 0x53, 0xef, 0x42, 0x23, 0x97, 0xa3, 0x98, 0x5d, 0x37, 0x9d, 0xb6, 0xf4, 0x74,
0xcf, 0xd9, 0xa0, 0xb7, 0xcf, 0xbf, 0xf9, 0x76, 0xe3, 0xb9, 0xbf, 0x7f, 0xbb, 0xf1, 0xdc, 0x2f,
0x9f, 0x6d, 0x94, 0xbe, 0x79, 0xb6, 0x51, 0xfa, 0xdb, 0xb3, 0x8d, 0xd2, 0x3f, 0x9f, 0x6d, 0x94,
0x7e, 0xf4, 0xd3, 0xef, 0xf9, 0x87, 0x19, 0x9a, 0x44, 0x1c, 0x87, 0x68, 0xeb, 0x0c, 0x53, 0x9e,
0x1b, 0x8a, 0x4f, 0x07, 0x53, 0xff, 0xa5, 0x11, 0x2a, 0x9c, 0x2c, 0x4a, 0xf8, 0xed, 0x7f, 0x07,
0x00, 0x00, 0xff, 0xff, 0x3f, 0x18, 0x6e, 0xe2, 0x43, 0x24, 0x00, 0x00,
}
func (m *CreateContainerRequest) Marshal() (dAtA []byte, err error) {
@@ -5381,6 +5462,67 @@ func (m *StopTracingRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *GetOOMEventRequest) 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 *GetOOMEventRequest) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *GetOOMEventRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.XXX_unrecognized != nil {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
return len(dAtA) - i, nil
}
func (m *OOMEvent) 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 *OOMEvent) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *OOMEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if m.XXX_unrecognized != nil {
i -= len(m.XXX_unrecognized)
copy(dAtA[i:], m.XXX_unrecognized)
}
if len(m.ContainerId) > 0 {
i -= len(m.ContainerId)
copy(dAtA[i:], m.ContainerId)
i = encodeVarintAgent(dAtA, i, uint64(len(m.ContainerId)))
i--
dAtA[i] = 0xa
}
return len(dAtA) - i, nil
}
func encodeVarintAgent(dAtA []byte, offset int, v uint64) int {
offset -= sovAgent(v)
base := offset
@@ -6663,6 +6805,34 @@ func (m *StopTracingRequest) Size() (n int) {
return n
}
func (m *GetOOMEventRequest) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized)
}
return n
}
func (m *OOMEvent) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
l = len(m.ContainerId)
if l > 0 {
n += 1 + l + sovAgent(uint64(l))
}
if m.XXX_unrecognized != nil {
n += len(m.XXX_unrecognized)
}
return n
}
func sovAgent(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
@@ -7468,6 +7638,27 @@ func (this *StopTracingRequest) String() string {
}, "")
return s
}
func (this *GetOOMEventRequest) String() string {
if this == nil {
return "nil"
}
s := strings.Join([]string{`&GetOOMEventRequest{`,
`XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
`}`,
}, "")
return s
}
func (this *OOMEvent) String() string {
if this == nil {
return "nil"
}
s := strings.Join([]string{`&OOMEvent{`,
`ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`,
`XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
`}`,
}, "")
return s
}
func valueToStringAgent(v interface{}) string {
rv := reflect.ValueOf(v)
if rv.IsNil() {
@@ -7509,6 +7700,7 @@ type AgentServiceService interface {
MemHotplugByProbe(ctx context.Context, req *MemHotplugByProbeRequest) (*types.Empty, error)
SetGuestDateTime(ctx context.Context, req *SetGuestDateTimeRequest) (*types.Empty, error)
CopyFile(ctx context.Context, req *CopyFileRequest) (*types.Empty, error)
GetOOMEvent(ctx context.Context, req *GetOOMEventRequest) (*OOMEvent, error)
}
func RegisterAgentServiceService(srv *github_com_containerd_ttrpc.Server, svc AgentServiceService) {
@@ -7730,6 +7922,13 @@ func RegisterAgentServiceService(srv *github_com_containerd_ttrpc.Server, svc Ag
}
return svc.CopyFile(ctx, &req)
},
"GetOOMEvent": func(ctx context.Context, unmarshal func(interface{}) error) (interface{}, error) {
var req GetOOMEventRequest
if err := unmarshal(&req); err != nil {
return nil, err
}
return svc.GetOOMEvent(ctx, &req)
},
})
}
@@ -7990,6 +8189,14 @@ func (c *agentServiceClient) CopyFile(ctx context.Context, req *CopyFileRequest)
}
return &resp, nil
}
func (c *agentServiceClient) GetOOMEvent(ctx context.Context, req *GetOOMEventRequest) (*OOMEvent, error) {
var resp OOMEvent
if err := c.client.Call(ctx, "grpc.AgentService", "GetOOMEvent", req, &resp); err != nil {
return nil, err
}
return &resp, nil
}
func (m *CreateContainerRequest) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@@ -15420,6 +15627,146 @@ func (m *StopTracingRequest) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *GetOOMEventRequest) 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 ErrIntOverflowAgent
}
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: GetOOMEventRequest: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: GetOOMEventRequest: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
default:
iNdEx = preIndex
skippy, err := skipAgent(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthAgent
}
if (iNdEx + skippy) < 0 {
return ErrInvalidLengthAgent
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *OOMEvent) 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 ErrIntOverflowAgent
}
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: OOMEvent: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: OOMEvent: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAgent
}
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 ErrInvalidLengthAgent
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthAgent
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.ContainerId = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipAgent(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthAgent
}
if (iNdEx + skippy) < 0 {
return ErrInvalidLengthAgent
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipAgent(dAtA []byte) (n int, err error) {
l := len(dAtA)
iNdEx := 0

View File

@@ -1,5 +1,5 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols/grpc//health.proto
// source: github.com/kata-containers/kata-containers/src/agent/protocols/protos/health.proto
package grpc
@@ -53,7 +53,7 @@ func (x HealthCheckResponse_ServingStatus) String() string {
}
func (HealthCheckResponse_ServingStatus) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_24b9fe6b2d9b7b0c, []int{1, 0}
return fileDescriptor_c2419073415b3fbc, []int{1, 0}
}
type CheckRequest struct {
@@ -66,7 +66,7 @@ type CheckRequest struct {
func (m *CheckRequest) Reset() { *m = CheckRequest{} }
func (*CheckRequest) ProtoMessage() {}
func (*CheckRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_24b9fe6b2d9b7b0c, []int{0}
return fileDescriptor_c2419073415b3fbc, []int{0}
}
func (m *CheckRequest) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -105,7 +105,7 @@ type HealthCheckResponse struct {
func (m *HealthCheckResponse) Reset() { *m = HealthCheckResponse{} }
func (*HealthCheckResponse) ProtoMessage() {}
func (*HealthCheckResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_24b9fe6b2d9b7b0c, []int{1}
return fileDescriptor_c2419073415b3fbc, []int{1}
}
func (m *HealthCheckResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -145,7 +145,7 @@ type VersionCheckResponse struct {
func (m *VersionCheckResponse) Reset() { *m = VersionCheckResponse{} }
func (*VersionCheckResponse) ProtoMessage() {}
func (*VersionCheckResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_24b9fe6b2d9b7b0c, []int{2}
return fileDescriptor_c2419073415b3fbc, []int{2}
}
func (m *VersionCheckResponse) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
@@ -182,34 +182,36 @@ func init() {
}
func init() {
proto.RegisterFile("github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols/grpc//health.proto", fileDescriptor_24b9fe6b2d9b7b0c)
proto.RegisterFile("github.com/kata-containers/kata-containers/src/agent/protocols/protos/health.proto", fileDescriptor_c2419073415b3fbc)
}
var fileDescriptor_24b9fe6b2d9b7b0c = []byte{
// 365 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x51, 0x41, 0x4b, 0xf3, 0x40,
0x10, 0xed, 0x96, 0xef, 0x6b, 0x71, 0xda, 0x6a, 0x59, 0x3d, 0xd4, 0x1e, 0x16, 0x8d, 0x07, 0x7b,
0x69, 0x02, 0x15, 0x04, 0x45, 0x10, 0x14, 0x51, 0x11, 0x52, 0x48, 0xb5, 0xde, 0x2c, 0x69, 0x58,
0x93, 0xd0, 0x9a, 0xad, 0xd9, 0x4d, 0x2f, 0x5e, 0xfc, 0x0d, 0xfe, 0x0a, 0x7f, 0x82, 0x47, 0x8f,
0x3d, 0x7a, 0xf4, 0x68, 0xf7, 0x57, 0x78, 0x94, 0xec, 0xa6, 0xd2, 0x42, 0xbd, 0xed, 0x7b, 0xf3,
0xde, 0xcc, 0xbc, 0x59, 0x38, 0xf2, 0x43, 0x11, 0x24, 0x7d, 0xd3, 0x63, 0x0f, 0xd6, 0xc0, 0x15,
0x6e, 0xd3, 0x63, 0x91, 0x70, 0xc3, 0x88, 0xc6, 0xdc, 0x72, 0x7d, 0x1a, 0x09, 0x6b, 0x14, 0x33,
0xc1, 0x3c, 0x36, 0xe4, 0x96, 0x1f, 0x8f, 0x3c, 0x2b, 0xa0, 0xee, 0x50, 0x04, 0xa6, 0x62, 0xf1,
0xbf, 0x94, 0xaa, 0x37, 0xe7, 0x7a, 0xf8, 0xcc, 0x67, 0xda, 0xd2, 0x4f, 0xee, 0x15, 0x52, 0x40,
0xbd, 0xb4, 0xc9, 0x68, 0x40, 0xf9, 0x34, 0xa0, 0xde, 0xc0, 0xa1, 0x8f, 0x09, 0xe5, 0x02, 0xd7,
0xa0, 0xc8, 0x69, 0x3c, 0x0e, 0x3d, 0x5a, 0x43, 0x5b, 0xa8, 0xb1, 0xe2, 0xcc, 0xa0, 0xf1, 0x82,
0x60, 0xfd, 0x42, 0xcd, 0xcb, 0x0c, 0x7c, 0xc4, 0x22, 0x4e, 0xf1, 0x31, 0x14, 0xb8, 0x70, 0x45,
0xc2, 0x95, 0x61, 0xb5, 0xb5, 0x6b, 0xa6, 0x7b, 0x98, 0x4b, 0xa4, 0x66, 0x27, 0x6d, 0x15, 0xf9,
0x1d, 0x25, 0x77, 0x32, 0x9b, 0x71, 0x08, 0x95, 0x85, 0x02, 0x2e, 0x41, 0xf1, 0xc6, 0xbe, 0xb2,
0xdb, 0xb7, 0x76, 0x35, 0x97, 0x82, 0xce, 0x99, 0xd3, 0xbd, 0xb4, 0xcf, 0xab, 0x08, 0xaf, 0x41,
0xc9, 0x6e, 0x5f, 0xf7, 0x66, 0x44, 0xde, 0xb8, 0x83, 0x8d, 0x2e, 0x8d, 0x79, 0xc8, 0xa2, 0xc5,
0xa5, 0xb6, 0xa1, 0x9c, 0x6e, 0xd1, 0x1b, 0xeb, 0x62, 0x96, 0xa5, 0x94, 0x72, 0x99, 0x1e, 0xef,
0x40, 0x45, 0xdd, 0xf4, 0x57, 0x93, 0x57, 0x9a, 0xb2, 0x22, 0x33, 0x51, 0xeb, 0x09, 0x0a, 0x3a,
0x08, 0xde, 0x87, 0xff, 0x6a, 0x04, 0xc6, 0x3a, 0xdf, 0xfc, 0xd5, 0xea, 0x9b, 0x7f, 0x66, 0xc6,
0x07, 0x50, 0x9c, 0x4d, 0x5c, 0xe6, 0xac, 0x6b, 0x6e, 0x59, 0x88, 0x93, 0xc6, 0x64, 0x4a, 0x72,
0x9f, 0x53, 0x92, 0xfb, 0x9e, 0x12, 0xf4, 0x2c, 0x09, 0x7a, 0x95, 0x04, 0xbd, 0x49, 0x82, 0xde,
0x25, 0x41, 0x13, 0x49, 0xd0, 0x87, 0x24, 0xe8, 0x4b, 0x12, 0xd4, 0x2f, 0xa8, 0xcf, 0xdc, 0xfb,
0x09, 0x00, 0x00, 0xff, 0xff, 0x16, 0xa5, 0xaa, 0xfb, 0x41, 0x02, 0x00, 0x00,
var fileDescriptor_c2419073415b3fbc = []byte{
// 393 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x52, 0x31, 0x4f, 0xfa, 0x40,
0x1c, 0xe5, 0xc8, 0xff, 0x0f, 0xf1, 0x00, 0x25, 0xa7, 0x03, 0x32, 0x5c, 0xb4, 0x0e, 0xb2, 0xd0,
0x26, 0x98, 0x98, 0xe8, 0x62, 0xa2, 0x31, 0x6a, 0x4c, 0x4a, 0x52, 0x14, 0x13, 0x07, 0x48, 0x69,
0xce, 0xb6, 0x01, 0x7a, 0xf5, 0xee, 0xca, 0xe2, 0xe2, 0xe8, 0xec, 0xa7, 0xf0, 0x23, 0x38, 0x3a,
0x32, 0x3a, 0x3a, 0x4a, 0x3f, 0x85, 0xa3, 0xe9, 0x5d, 0x31, 0x10, 0x70, 0x70, 0xbb, 0xf7, 0x7e,
0xef, 0xdd, 0xef, 0xbd, 0xcb, 0x41, 0xcb, 0xf5, 0x85, 0x17, 0xf5, 0x74, 0x87, 0x0e, 0x8d, 0xbe,
0x2d, 0xec, 0xba, 0x43, 0x03, 0x61, 0xfb, 0x01, 0x61, 0x7c, 0x01, 0x73, 0xe6, 0x18, 0xb6, 0x4b,
0x02, 0x61, 0x84, 0x8c, 0x0a, 0xea, 0xd0, 0x01, 0x57, 0x27, 0x6e, 0x78, 0xc4, 0x1e, 0x08, 0x4f,
0x97, 0x08, 0xfd, 0x73, 0x59, 0xe8, 0x54, 0xeb, 0x33, 0x37, 0xbb, 0xd4, 0xa5, 0x4a, 0xda, 0x8b,
0xee, 0x24, 0x92, 0x40, 0x9e, 0x94, 0x49, 0xab, 0xc1, 0xe2, 0x89, 0x47, 0x9c, 0xbe, 0x45, 0xee,
0x23, 0xc2, 0x05, 0xaa, 0xc0, 0x3c, 0x27, 0x6c, 0xe4, 0x3b, 0xa4, 0x02, 0xb6, 0x40, 0x6d, 0xc5,
0x9a, 0x42, 0xed, 0x19, 0xc0, 0xf5, 0x73, 0xb9, 0x2f, 0x35, 0xf0, 0x90, 0x06, 0x9c, 0xa0, 0x23,
0x98, 0xe3, 0xc2, 0x16, 0x11, 0x97, 0x86, 0xd5, 0xc6, 0xae, 0x9e, 0xe4, 0xd0, 0x97, 0x48, 0xf5,
0x56, 0x72, 0x55, 0xe0, 0xb6, 0xa4, 0xdc, 0x4a, 0x6d, 0xda, 0x21, 0x2c, 0xcd, 0x0d, 0x50, 0x01,
0xe6, 0xaf, 0xcd, 0x4b, 0xb3, 0x79, 0x63, 0x96, 0x33, 0x09, 0x68, 0x9d, 0x5a, 0xed, 0x0b, 0xf3,
0xac, 0x0c, 0xd0, 0x1a, 0x2c, 0x98, 0xcd, 0xab, 0xee, 0x94, 0xc8, 0x6a, 0x1d, 0xb8, 0xd1, 0x26,
0x8c, 0xfb, 0x34, 0x98, 0x0f, 0xb5, 0x0d, 0x8b, 0x49, 0x8a, 0xee, 0x48, 0x0d, 0xd3, 0x2e, 0x85,
0x84, 0x4b, 0xf5, 0x68, 0x07, 0x96, 0xe4, 0xab, 0xfe, 0x68, 0xb2, 0x52, 0x53, 0x94, 0x64, 0x2a,
0x6a, 0x3c, 0xc0, 0x9c, 0x2a, 0x82, 0xf6, 0xe1, 0x7f, 0xb9, 0x02, 0x21, 0xd5, 0x6f, 0xf6, 0xd5,
0xaa, 0x9b, 0xbf, 0x76, 0x46, 0x07, 0x30, 0x3f, 0xdd, 0xb8, 0xcc, 0x59, 0x55, 0xdc, 0xb2, 0x12,
0xc7, 0x4f, 0x60, 0x3c, 0xc1, 0x99, 0x8f, 0x09, 0xce, 0x7c, 0x4d, 0x30, 0x78, 0x8c, 0x31, 0x78,
0x89, 0x31, 0x78, 0x8d, 0x31, 0x78, 0x8b, 0x31, 0x18, 0xc7, 0x18, 0xbc, 0xc7, 0x18, 0x7c, 0xc6,
0x18, 0xdc, 0x76, 0xfe, 0xf8, 0x9f, 0x58, 0x14, 0x08, 0x7f, 0x48, 0x8c, 0x91, 0xcf, 0xc4, 0xcc,
0x28, 0xec, 0xbb, 0x0b, 0x5f, 0x2d, 0xc9, 0xd7, 0xcb, 0x49, 0xbc, 0xf7, 0x1d, 0x00, 0x00, 0xff,
0xff, 0x4d, 0x7b, 0xf1, 0xc9, 0xb8, 0x02, 0x00, 0x00,
}
func (this *CheckRequest) Equal(that interface{}) bool {

View File

@@ -1,5 +1,5 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols/grpc//health.proto
// source: github.com/kata-containers/kata-containers/src/agent/protocols/protos/health.proto
package grpc

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: github.com/kata-containers/kata-containers/src/runtime/virtcontainers/pkg/agent/protocols/grpc//oci.proto
// source: github.com/kata-containers/kata-containers/src/agent/protocols/protos/oci.proto
package grpc

View File

@@ -212,3 +212,7 @@ func (s *Sandbox) UpdateRoutes(routes []*vcTypes.Route) ([]*vcTypes.Route, error
func (s *Sandbox) ListRoutes() ([]*vcTypes.Route, error) {
return nil, nil
}
func (s *Sandbox) GetOOMEvent() (string, error) {
return "", nil
}

View File

@@ -663,6 +663,7 @@ func (q *qemu) setupVirtiofsd() (err error) {
if err != nil {
return err
}
defer fd.Close()
const sockFd = 3 // Cmd.ExtraFiles[] fds are numbered starting from 3
cmd := exec.Command(q.config.VirtioFSDaemon, q.virtiofsdArgs(sockFd)...)
@@ -677,7 +678,6 @@ func (q *qemu) setupVirtiofsd() (err error) {
return fmt.Errorf("virtiofs daemon %v returned with error: %v", q.config.VirtioFSDaemon, err)
}
q.state.VirtiofsdPid = cmd.Process.Pid
fd.Close()
// Monitor virtiofsd's stderr and stop sandbox if virtiofsd quits
go func() {

View File

@@ -32,9 +32,10 @@ const (
)
var qemuPaths = map[string]string{
QemuPCLite: "/usr/bin/qemu-lite-system-x86_64",
QemuPC: defaultQemuPath,
QemuQ35: defaultQemuPath,
QemuPCLite: "/usr/bin/qemu-lite-system-x86_64",
QemuPC: defaultQemuPath,
QemuQ35: defaultQemuPath,
QemuMicrovm: defaultQemuPath,
}
var kernelParams = []Param{
@@ -71,6 +72,10 @@ var supportedQemuMachines = []govmmQemu.Machine{
Type: QemuVirt,
Options: defaultQemuMachineOptions,
},
{
Type: QemuMicrovm,
Options: defaultQemuMachineOptions,
},
}
// MaxQemuVCPUs returns the maximum number of vCPUs supported
@@ -115,14 +120,14 @@ func newQemuArch(config HypervisorConfig) (qemuArch, error) {
q := &qemuAmd64{
qemuArchBase: qemuArchBase{
qemuMachine: *mp,
qemuExePath: qemuPaths[machineType],
memoryOffset: config.MemOffset,
kernelParamsNonDebug: kernelParamsNonDebug,
kernelParamsDebug: kernelParamsDebug,
kernelParams: kernelParams,
disableNvdimm: config.DisableImageNvdimm,
dax: true,
qemuMachine: *mp,
qemuExePath: qemuPaths[machineType],
memoryOffset: config.MemOffset,
kernelParamsNonDebug: kernelParamsNonDebug,
kernelParamsDebug: kernelParamsDebug,
kernelParams: kernelParams,
disableNvdimm: config.DisableImageNvdimm,
dax: true,
},
vmFactory: factory,
}
@@ -171,6 +176,12 @@ func (q *qemuAmd64) memoryTopology(memoryMb, hostMemoryMb uint64, slots uint8) g
return genericMemoryTopology(memoryMb, hostMemoryMb, slots, q.memoryOffset)
}
// Is Memory Hotplug supported by this architecture/machine type combination?
func (q *qemuAmd64) supportGuestMemoryHotplug() bool {
// true for all amd64 machine types except for microvm.
return q.qemuMachine.Type != govmmQemu.MachineTypeMicrovm
}
func (q *qemuAmd64) appendImage(devices []govmmQemu.Device, path string) ([]govmmQemu.Device, error) {
if !q.disableNvdimm {
return q.appendNvdimmImage(devices, path)

View File

@@ -47,6 +47,10 @@ func TestQemuAmd64Capabilities(t *testing.T) {
amd64 = newTestQemu(assert, QemuQ35)
caps = amd64.capabilities()
assert.True(caps.IsBlockDeviceHotplugSupported())
amd64 = newTestQemu(assert, QemuMicrovm)
caps = amd64.capabilities()
assert.False(caps.IsBlockDeviceHotplugSupported())
}
func TestQemuAmd64Bridges(t *testing.T) {
@@ -65,6 +69,11 @@ func TestQemuAmd64Bridges(t *testing.T) {
assert.NotNil(b.Devices)
}
amd64 = newTestQemu(assert, QemuMicrovm)
amd64.bridges(uint32(len))
bridges = amd64.getBridges()
assert.Nil(bridges)
amd64 = newTestQemu(assert, QemuQ35)
amd64.bridges(uint32(len))
bridges = amd64.getBridges()
@@ -256,3 +265,18 @@ func TestQemuAmd64Iommu(t *testing.T) {
m := qemu.machine()
assert.Contains(m.Options, "kernel_irqchip=split")
}
func TestQemuAmd64Microvm(t *testing.T) {
assert := assert.New(t)
cfg := qemuConfig(QemuMicrovm)
amd64, err := newQemuArch(cfg)
assert.NoError(err)
assert.False(cfg.DisableImageNvdimm)
for _, m := range supportedQemuMachines {
assert.NotContains(m.Options, qemuNvdimmOption)
}
assert.False(amd64.supportGuestMemoryHotplug())
}

View File

@@ -177,6 +177,9 @@ const (
// QemuQ35 is the QEMU Q35 machine type for amd64
QemuQ35 = "q35"
// QemuMicrovm is the QEMU microvm machine type for amd64
QemuMicrovm = "microvm"
// QemuVirt is the QEMU virt machine type for aarch64 or amd64
QemuVirt = "virt"

View File

@@ -2201,3 +2201,7 @@ func (s *Sandbox) GetPatchedOCISpec() *specs.Spec {
return nil
}
func (s *Sandbox) GetOOMEvent() (string, error) {
return s.agent.getOOMEvent()
}

View File

@@ -10,8 +10,10 @@ import (
"context"
"fmt"
"io"
"net"
"os"
"os/exec"
"path/filepath"
"strings"
"syscall"
"time"
@@ -58,6 +60,26 @@ type virtiofsd struct {
wait virtiofsdWaitFunc
}
// Open socket on behalf of virtiofsd
// return file descriptor to be used by virtiofsd.
func (v *virtiofsd) getSocketFD() (*os.File, error) {
var listener *net.UnixListener
if _, err := os.Stat(filepath.Dir(v.socketPath)); err != nil {
return nil, errors.Errorf("Socket directory does not exist %s", filepath.Dir(v.socketPath))
}
listener, err := net.ListenUnix("unix", &net.UnixAddr{Name: v.socketPath, Net: "unix"})
if err != nil {
return nil, err
}
defer listener.Close()
listener.SetUnlinkOnClose(false)
return listener.File()
}
// Start the virtiofsd daemon
func (v *virtiofsd) Start(ctx context.Context) (int, error) {
span, _ := v.trace("Start")
@@ -68,20 +90,28 @@ func (v *virtiofsd) Start(ctx context.Context) (int, error) {
return pid, err
}
args, err := v.args()
cmd := exec.Command(v.path)
socketFD, err := v.getSocketFD()
if err != nil {
return 0, err
}
cmd.ExtraFiles = append(cmd.ExtraFiles, socketFD)
// Extra files start from 2 (0: stdin, 1: stdout, 2: stderr)
// Extra FDs for virtiofsd start from 3
// Get the FD number for previous added socketFD
socketFdNumber := 2 + uint(len(cmd.ExtraFiles))
args, err := v.args(socketFdNumber)
if err != nil {
return pid, err
}
cmd.Args = append(cmd.Args, args...)
v.Logger().WithField("path", v.path).Info()
v.Logger().WithField("args", strings.Join(args, " ")).Info()
cmd := exec.Command(v.path, args...)
stderr, err := cmd.StderrPipe()
if err != nil {
return pid, fmt.Errorf("failed to get stderr from virtiofsd command, error: %s", err)
}
if err = utils.StartCmd(cmd); err != nil {
return pid, err
}
@@ -96,7 +126,7 @@ func (v *virtiofsd) Start(ctx context.Context) (int, error) {
v.wait = waitVirtiofsReady
}
return cmd.Process.Pid, v.wait(cmd, stderr, v.debug)
return pid, socketFD.Close()
}
func (v *virtiofsd) Stop() error {
@@ -115,7 +145,7 @@ func (v *virtiofsd) Stop() error {
return nil
}
func (v *virtiofsd) args() ([]string, error) {
func (v *virtiofsd) args(FdSocketNumber uint) ([]string, error) {
if v.sourcePath == "" {
return []string{}, errors.New("vitiofsd source path is empty")
}
@@ -125,11 +155,23 @@ func (v *virtiofsd) args() ([]string, error) {
}
args := []string{
// Send logs to syslog
"--syslog",
// foreground operation
"-f",
// cache mode for virtiofsd
"-o", "cache=" + v.cache,
// disable posix locking in daemon: bunch of basic posix locks properties are broken
// apt-get update is broken if enabled
"-o", "no_posix_lock",
// shared directory tree
"-o", "source=" + v.sourcePath,
"-o", "vhost_user_socket=" + v.socketPath,
// fd number of vhost-user socket
fmt.Sprintf("--fd=%v", FdSocketNumber),
}
if v.debug {
args = append(args, "-o", "debug")
}
if len(v.extraArgs) != 0 {

View File

@@ -33,11 +33,19 @@ func TestVirtiofsdStart(t *testing.T) {
assert.NoError(err)
defer os.RemoveAll(sourcePath)
socketDir, err := ioutil.TempDir("", "")
assert.NoError(err)
defer os.RemoveAll(sourcePath)
socketPath := socketDir + "socket.s"
validConfig := fields{
path: "/tmp/a/path",
socketPath: "/tmp/a/path/to/sock.sock",
path: "/usr/bin/virtiofsd-path",
socketPath: socketPath,
sourcePath: sourcePath,
}
NoDirectorySocket := validConfig
NoDirectorySocket.socketPath = "/tmp/path/to/virtiofsd/socket.sock"
tests := []struct {
name string
@@ -45,6 +53,7 @@ func TestVirtiofsdStart(t *testing.T) {
wantErr bool
}{
{"empty config", fields{}, true},
{"Directory socket does not exist", NoDirectorySocket, true},
{"valid config", validConfig, false},
}
for _, tt := range tests {

774
tools/agent-ctl/Cargo.lock generated Normal file
View File

@@ -0,0 +1,774 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "addr2line"
version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "602d785912f476e480434627e8732e6766b760c045bbf897d9dfaa9f4fbd399c"
dependencies = [
"gimli",
]
[[package]]
name = "adler32"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "567b077b825e468cc974f0020d4082ee6e03132512f207ef1a02fd5d00d1f32d"
[[package]]
name = "aho-corasick"
version = "0.7.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "043164d8ba5c4c3035fec9bbee8647c0261d788f3474306f93bb65901cae0e86"
dependencies = [
"memchr",
]
[[package]]
name = "ansi_term"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
dependencies = [
"winapi",
]
[[package]]
name = "anyhow"
version = "1.0.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85bb70cc08ec97ca5450e6eba421deeea5f172c0fc61f78b5357b2a8e8be195f"
[[package]]
name = "arc-swap"
version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d25d88fd6b8041580a654f9d0c581a047baee2b3efee13275f2fc392fc75034"
[[package]]
name = "atty"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
"hermit-abi",
"libc",
"winapi",
]
[[package]]
name = "autocfg"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
[[package]]
name = "backtrace"
version = "0.3.49"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05100821de9e028f12ae3d189176b41ee198341eb8f369956407fea2f5cc666c"
dependencies = [
"addr2line",
"cfg-if",
"libc",
"miniz_oxide",
"object",
"rustc-demangle",
]
[[package]]
name = "bitflags"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
[[package]]
name = "byteorder"
version = "1.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"
[[package]]
name = "caps"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf6a638a1f7f409f1e545ff0036b8aa5541692c775dd36b48b75bbde50d83d1c"
dependencies = [
"errno",
"error-chain",
"libc",
]
[[package]]
name = "cc"
version = "1.0.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1be3409f94d7bdceeb5f5fac551039d9b3f00e25da7a74fc4d33400a0d96368"
[[package]]
name = "cfg-if"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
[[package]]
name = "chrono"
version = "0.4.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80094f509cf8b5ae86a4966a39b3ff66cd7e2a3e594accec3743ff3fabeab5b2"
dependencies = [
"num-integer",
"num-traits",
"time",
]
[[package]]
name = "clap"
version = "2.33.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bdfa80d47f954d53a35a64987ca1422f495b8d6483c0fe9f7117b36c2a792129"
dependencies = [
"ansi_term",
"atty",
"bitflags",
"strsim",
"textwrap",
"unicode-width",
"vec_map",
]
[[package]]
name = "crossbeam-channel"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cced8691919c02aac3cb0a1bc2e9b73d89e832bf9a06fc579d4e71b68a2da061"
dependencies = [
"crossbeam-utils",
"maybe-uninit",
]
[[package]]
name = "crossbeam-utils"
version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
dependencies = [
"autocfg",
"cfg-if",
"lazy_static",
]
[[package]]
name = "errno"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b480f641ccf0faf324e20c1d3e53d81b7484c698b42ea677f6907ae4db195371"
dependencies = [
"errno-dragonfly",
"libc",
"winapi",
]
[[package]]
name = "errno-dragonfly"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14ca354e36190500e1e1fb267c647932382b54053c50b14970856c0b00a35067"
dependencies = [
"gcc",
"libc",
]
[[package]]
name = "error-chain"
version = "0.12.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d371106cc88ffdfb1eabd7111e432da544f16f3e2d7bf1dfe8bf575f1df045cd"
dependencies = [
"backtrace",
"version_check",
]
[[package]]
name = "futures"
version = "0.1.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef"
[[package]]
name = "gcc"
version = "0.3.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2"
[[package]]
name = "getrandom"
version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb"
dependencies = [
"cfg-if",
"libc",
"wasi",
]
[[package]]
name = "gimli"
version = "0.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bcc8e0c9bce37868955864dbecd2b1ab2bdf967e6f28066d65aaac620444b65c"
[[package]]
name = "hermit-abi"
version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9586eedd4ce6b3c498bc3b4dd92fc9f11166aa908a914071953768066c67909"
dependencies = [
"libc",
]
[[package]]
name = "humantime"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c1ad908cc71012b7bea4d0c53ba96a8cba9962f048fa68d143376143d863b7a"
[[package]]
name = "itoa"
version = "0.4.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6"
[[package]]
name = "kata-agent-ctl"
version = "0.0.1"
dependencies = [
"anyhow",
"clap",
"humantime",
"lazy_static",
"libc",
"logging",
"nix 0.17.0",
"oci",
"protobuf",
"protocols",
"rand",
"rustjail",
"serde",
"serde_json",
"slog",
"slog-scope",
"ttrpc",
]
[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
version = "0.2.71"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9457b06509d27052635f90d6466700c65095fdf75409b3fbdd903e988b886f49"
[[package]]
name = "log"
version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
dependencies = [
"cfg-if",
]
[[package]]
name = "logging"
version = "0.1.0"
dependencies = [
"serde_json",
"slog",
"slog-async",
"slog-json",
"slog-scope",
]
[[package]]
name = "maybe-uninit"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
[[package]]
name = "memchr"
version = "2.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400"
[[package]]
name = "miniz_oxide"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435"
dependencies = [
"adler32",
]
[[package]]
name = "nix"
version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd0eaf8df8bab402257e0a5c17a254e4cc1f72a93588a1ddfb5d356c801aa7cb"
dependencies = [
"bitflags",
"cc",
"cfg-if",
"libc",
"void",
]
[[package]]
name = "nix"
version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363"
dependencies = [
"bitflags",
"cc",
"cfg-if",
"libc",
"void",
]
[[package]]
name = "num-integer"
version = "0.1.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b"
dependencies = [
"autocfg",
"num-traits",
]
[[package]]
name = "num-traits"
version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611"
dependencies = [
"autocfg",
]
[[package]]
name = "object"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ab52be62400ca80aa00285d25253d7f7c437b7375c4de678f5405d3afe82ca5"
[[package]]
name = "oci"
version = "0.1.0"
dependencies = [
"libc",
"serde",
"serde_derive",
"serde_json",
]
[[package]]
name = "path-absolutize"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ceeedc827d9a758b4641457683ced2f02d4252cc1bd8794c415ed20256114290"
dependencies = [
"path-dedot",
"slash-formatter",
]
[[package]]
name = "path-dedot"
version = "1.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "45c58ab1edb03f77d0bb3f08e4a179dd43ce9bc8eab9867ec53a78285ea3039b"
dependencies = [
"lazy_static",
]
[[package]]
name = "ppv-lite86"
version = "0.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea"
[[package]]
name = "prctl"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "059a34f111a9dee2ce1ac2826a68b24601c4298cfeb1a587c3cb493d5ab46f52"
dependencies = [
"libc",
"nix 0.17.0",
]
[[package]]
name = "proc-macro2"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "beae6331a816b1f65d04c45b078fd8e6c93e8071771f41b8163255bbd8d7c8fa"
dependencies = [
"unicode-xid",
]
[[package]]
name = "protobuf"
version = "2.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e86d370532557ae7573551a1ec8235a0f8d6cb276c7c9e6aa490b511c447485"
[[package]]
name = "protobuf-codegen"
version = "2.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de113bba758ccf2c1ef816b127c958001b7831136c9bc3f8e9ec695ac4e82b0c"
dependencies = [
"protobuf",
]
[[package]]
name = "protobuf-codegen-pure"
version = "2.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d1a4febc73bf0cada1d77c459a0c8e5973179f1cfd5b0f1ab789d45b17b6440"
dependencies = [
"protobuf",
"protobuf-codegen",
]
[[package]]
name = "protocols"
version = "0.1.0"
dependencies = [
"futures",
"protobuf",
"ttrpc",
]
[[package]]
name = "quote"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rand"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
dependencies = [
"getrandom",
"libc",
"rand_chacha",
"rand_core",
"rand_hc",
]
[[package]]
name = "rand_chacha"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
dependencies = [
"ppv-lite86",
"rand_core",
]
[[package]]
name = "rand_core"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
dependencies = [
"getrandom",
]
[[package]]
name = "rand_hc"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
dependencies = [
"rand_core",
]
[[package]]
name = "regex"
version = "1.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
"thread_local",
]
[[package]]
name = "regex-syntax"
version = "0.6.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8"
[[package]]
name = "rustc-demangle"
version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783"
[[package]]
name = "rustjail"
version = "0.1.0"
dependencies = [
"caps",
"error-chain",
"lazy_static",
"libc",
"nix 0.17.0",
"oci",
"path-absolutize",
"prctl",
"protobuf",
"protocols",
"regex",
"scan_fmt",
"scopeguard",
"serde",
"serde_derive",
"serde_json",
"slog",
"slog-scope",
]
[[package]]
name = "ryu"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
[[package]]
name = "scan_fmt"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "248286eec0f55678879ef1caec3d76276643ebcb5460d8cb6e732ef40f50aabe"
dependencies = [
"regex",
]
[[package]]
name = "scopeguard"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "serde"
version = "1.0.114"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5317f7588f0a5078ee60ef675ef96735a1442132dc645eb1d12c018620ed8cd3"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.114"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a0be94b04690fbaed37cddffc5c134bf537c8e3329d53e982fe04c374978f8e"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "serde_json"
version = "1.0.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec2c5d7e739bc07a3e73381a39d61fdb5f671c60c1df26a130690665803d8226"
dependencies = [
"itoa",
"ryu",
"serde",
]
[[package]]
name = "slash-formatter"
version = "2.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f7fb98e76e2022054673f3ebc43a4e12890ec6272530629df6237cafbb70569"
[[package]]
name = "slog"
version = "2.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1cc9c640a4adbfbcc11ffb95efe5aa7af7309e002adab54b185507dbf2377b99"
[[package]]
name = "slog-async"
version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51b3336ce47ce2f96673499fc07eb85e3472727b9a7a2959964b002c2ce8fbbb"
dependencies = [
"crossbeam-channel",
"slog",
"take_mut",
"thread_local",
]
[[package]]
name = "slog-json"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ddc0d2aff1f8f325ef660d9a0eb6e6dcd20b30b3f581a5897f58bf42d061c37a"
dependencies = [
"chrono",
"serde",
"serde_json",
"slog",
]
[[package]]
name = "slog-scope"
version = "4.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c44c89dd8b0ae4537d1ae318353eaf7840b4869c536e31c41e963d1ea523ee6"
dependencies = [
"arc-swap",
"lazy_static",
"slog",
]
[[package]]
name = "strsim"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
[[package]]
name = "syn"
version = "1.0.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8d5d96e8cbb005d6959f119f773bfaebb5684296108fb32600c00cde305b2cd"
dependencies = [
"proc-macro2",
"quote",
"unicode-xid",
]
[[package]]
name = "take_mut"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60"
[[package]]
name = "textwrap"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
dependencies = [
"unicode-width",
]
[[package]]
name = "thread_local"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14"
dependencies = [
"lazy_static",
]
[[package]]
name = "time"
version = "0.1.43"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
dependencies = [
"libc",
"winapi",
]
[[package]]
name = "ttrpc"
version = "0.3.0"
source = "git+https://github.com/containerd/ttrpc-rust?branch=0.3.0#ba1efe3bbb8f8af4895b7623ed1d11561e70e566"
dependencies = [
"byteorder",
"libc",
"log",
"nix 0.16.1",
"protobuf",
"protobuf-codegen-pure",
]
[[package]]
name = "unicode-width"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479"
[[package]]
name = "unicode-xid"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
[[package]]
name = "vec_map"
version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
[[package]]
name = "version_check"
version = "0.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
[[package]]
name = "void"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
[[package]]
name = "wasi"
version = "0.9.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
[[package]]
name = "winapi"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6"
dependencies = [
"winapi-i686-pc-windows-gnu",
"winapi-x86_64-pc-windows-gnu",
]
[[package]]
name = "winapi-i686-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"

View File

@@ -1,2 +1,8 @@
image-builder/nsdax
dracut/Dockerfile
/.*.done
/*_rootfs
/kata-Centos-dnf.conf
/kata-containers-initrd.img
/kata-containers.img
rootfs-builder/centos/RPM-GPG-KEY-*