diff --git a/api/grpc/server/server.go b/api/grpc/server/server.go index ff9a35f..d43d5a7 100644 --- a/api/grpc/server/server.go +++ b/api/grpc/server/server.go @@ -273,6 +273,9 @@ func (s *apiServer) UpdateContainer(ctx context.Context, r *types.UpdateContaine if rs.KernelMemoryLimit != 0 { e.Resources.KernelMemory = int64(rs.KernelMemoryLimit) } + if rs.KernelTCPMemoryLimit != 0 { + e.Resources.KernelTCPMemory = int64(rs.KernelTCPMemoryLimit) + } if rs.MemoryLimit != 0 { e.Resources.Memory = int64(rs.MemoryLimit) } diff --git a/api/grpc/types/api.pb.go b/api/grpc/types/api.pb.go index 52c6dcb..2013db1 100644 --- a/api/grpc/types/api.pb.go +++ b/api/grpc/types/api.pb.go @@ -452,16 +452,17 @@ func (m *UpdateContainerRequest) GetResources() *UpdateResource { } type UpdateResource struct { - BlkioWeight uint32 `protobuf:"varint,1,opt,name=blkioWeight" json:"blkioWeight,omitempty"` - CpuShares uint32 `protobuf:"varint,2,opt,name=cpuShares" json:"cpuShares,omitempty"` - CpuPeriod uint32 `protobuf:"varint,3,opt,name=cpuPeriod" json:"cpuPeriod,omitempty"` - CpuQuota uint32 `protobuf:"varint,4,opt,name=cpuQuota" json:"cpuQuota,omitempty"` - CpusetCpus string `protobuf:"bytes,5,opt,name=cpusetCpus" json:"cpusetCpus,omitempty"` - CpusetMems string `protobuf:"bytes,6,opt,name=cpusetMems" json:"cpusetMems,omitempty"` - MemoryLimit uint32 `protobuf:"varint,7,opt,name=memoryLimit" json:"memoryLimit,omitempty"` - MemorySwap uint32 `protobuf:"varint,8,opt,name=memorySwap" json:"memorySwap,omitempty"` - MemoryReservation uint32 `protobuf:"varint,9,opt,name=memoryReservation" json:"memoryReservation,omitempty"` - KernelMemoryLimit uint32 `protobuf:"varint,10,opt,name=kernelMemoryLimit" json:"kernelMemoryLimit,omitempty"` + BlkioWeight uint32 `protobuf:"varint,1,opt,name=blkioWeight" json:"blkioWeight,omitempty"` + CpuShares uint32 `protobuf:"varint,2,opt,name=cpuShares" json:"cpuShares,omitempty"` + CpuPeriod uint32 `protobuf:"varint,3,opt,name=cpuPeriod" json:"cpuPeriod,omitempty"` + CpuQuota uint32 `protobuf:"varint,4,opt,name=cpuQuota" json:"cpuQuota,omitempty"` + CpusetCpus string `protobuf:"bytes,5,opt,name=cpusetCpus" json:"cpusetCpus,omitempty"` + CpusetMems string `protobuf:"bytes,6,opt,name=cpusetMems" json:"cpusetMems,omitempty"` + MemoryLimit uint32 `protobuf:"varint,7,opt,name=memoryLimit" json:"memoryLimit,omitempty"` + MemorySwap uint32 `protobuf:"varint,8,opt,name=memorySwap" json:"memorySwap,omitempty"` + MemoryReservation uint32 `protobuf:"varint,9,opt,name=memoryReservation" json:"memoryReservation,omitempty"` + KernelMemoryLimit uint32 `protobuf:"varint,10,opt,name=kernelMemoryLimit" json:"kernelMemoryLimit,omitempty"` + KernelTCPMemoryLimit uint32 `protobuf:"varint,11,opt,name=kernelTCPMemoryLimit" json:"kernelTCPMemoryLimit,omitempty"` } func (m *UpdateResource) Reset() { *m = UpdateResource{} } @@ -501,14 +502,14 @@ func (*Event) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} } type NetworkStats struct { Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - RxBytes uint64 `protobuf:"varint,2,opt,name=rx_bytes" json:"rx_bytes,omitempty"` - Rx_Packets uint64 `protobuf:"varint,3,opt,name=rx_Packets" json:"rx_Packets,omitempty"` - RxErrors uint64 `protobuf:"varint,4,opt,name=Rx_errors" json:"Rx_errors,omitempty"` - RxDropped uint64 `protobuf:"varint,5,opt,name=Rx_dropped" json:"Rx_dropped,omitempty"` - TxBytes uint64 `protobuf:"varint,6,opt,name=Tx_bytes" json:"Tx_bytes,omitempty"` - TxPackets uint64 `protobuf:"varint,7,opt,name=Tx_packets" json:"Tx_packets,omitempty"` - TxErrors uint64 `protobuf:"varint,8,opt,name=Tx_errors" json:"Tx_errors,omitempty"` - TxDropped uint64 `protobuf:"varint,9,opt,name=Tx_dropped" json:"Tx_dropped,omitempty"` + RxBytes uint64 `protobuf:"varint,2,opt,name=rx_bytes,json=rxBytes" json:"rx_bytes,omitempty"` + Rx_Packets uint64 `protobuf:"varint,3,opt,name=rx_Packets,json=rxPackets" json:"rx_Packets,omitempty"` + RxErrors uint64 `protobuf:"varint,4,opt,name=Rx_errors,json=rxErrors" json:"Rx_errors,omitempty"` + RxDropped uint64 `protobuf:"varint,5,opt,name=Rx_dropped,json=rxDropped" json:"Rx_dropped,omitempty"` + TxBytes uint64 `protobuf:"varint,6,opt,name=Tx_bytes,json=txBytes" json:"Tx_bytes,omitempty"` + TxPackets uint64 `protobuf:"varint,7,opt,name=Tx_packets,json=txPackets" json:"Tx_packets,omitempty"` + TxErrors uint64 `protobuf:"varint,8,opt,name=Tx_errors,json=txErrors" json:"Tx_errors,omitempty"` + TxDropped uint64 `protobuf:"varint,9,opt,name=Tx_dropped,json=txDropped" json:"Tx_dropped,omitempty"` } func (m *NetworkStats) Reset() { *m = NetworkStats{} } @@ -517,10 +518,10 @@ func (*NetworkStats) ProtoMessage() {} func (*NetworkStats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} } type CpuUsage struct { - TotalUsage uint64 `protobuf:"varint,1,opt,name=total_usage" json:"total_usage,omitempty"` - PercpuUsage []uint64 `protobuf:"varint,2,rep,name=percpu_usage" json:"percpu_usage,omitempty"` - UsageInKernelmode uint64 `protobuf:"varint,3,opt,name=usage_in_kernelmode" json:"usage_in_kernelmode,omitempty"` - UsageInUsermode uint64 `protobuf:"varint,4,opt,name=usage_in_usermode" json:"usage_in_usermode,omitempty"` + TotalUsage uint64 `protobuf:"varint,1,opt,name=total_usage,json=totalUsage" json:"total_usage,omitempty"` + PercpuUsage []uint64 `protobuf:"varint,2,rep,name=percpu_usage,json=percpuUsage" json:"percpu_usage,omitempty"` + UsageInKernelmode uint64 `protobuf:"varint,3,opt,name=usage_in_kernelmode,json=usageInKernelmode" json:"usage_in_kernelmode,omitempty"` + UsageInUsermode uint64 `protobuf:"varint,4,opt,name=usage_in_usermode,json=usageInUsermode" json:"usage_in_usermode,omitempty"` } func (m *CpuUsage) Reset() { *m = CpuUsage{} } @@ -530,8 +531,8 @@ func (*CpuUsage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31 type ThrottlingData struct { Periods uint64 `protobuf:"varint,1,opt,name=periods" json:"periods,omitempty"` - ThrottledPeriods uint64 `protobuf:"varint,2,opt,name=throttled_periods" json:"throttled_periods,omitempty"` - ThrottledTime uint64 `protobuf:"varint,3,opt,name=throttled_time" json:"throttled_time,omitempty"` + ThrottledPeriods uint64 `protobuf:"varint,2,opt,name=throttled_periods,json=throttledPeriods" json:"throttled_periods,omitempty"` + ThrottledTime uint64 `protobuf:"varint,3,opt,name=throttled_time,json=throttledTime" json:"throttled_time,omitempty"` } func (m *ThrottlingData) Reset() { *m = ThrottlingData{} } @@ -540,9 +541,9 @@ func (*ThrottlingData) ProtoMessage() {} func (*ThrottlingData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} } type CpuStats struct { - CpuUsage *CpuUsage `protobuf:"bytes,1,opt,name=cpu_usage" json:"cpu_usage,omitempty"` - ThrottlingData *ThrottlingData `protobuf:"bytes,2,opt,name=throttling_data" json:"throttling_data,omitempty"` - SystemUsage uint64 `protobuf:"varint,3,opt,name=system_usage" json:"system_usage,omitempty"` + CpuUsage *CpuUsage `protobuf:"bytes,1,opt,name=cpu_usage,json=cpuUsage" json:"cpu_usage,omitempty"` + ThrottlingData *ThrottlingData `protobuf:"bytes,2,opt,name=throttling_data,json=throttlingData" json:"throttling_data,omitempty"` + SystemUsage uint64 `protobuf:"varint,3,opt,name=system_usage,json=systemUsage" json:"system_usage,omitempty"` } func (m *CpuStats) Reset() { *m = CpuStats{} } @@ -576,7 +577,7 @@ func (*PidsStats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3 type MemoryData struct { Usage uint64 `protobuf:"varint,1,opt,name=usage" json:"usage,omitempty"` - MaxUsage uint64 `protobuf:"varint,2,opt,name=max_usage" json:"max_usage,omitempty"` + MaxUsage uint64 `protobuf:"varint,2,opt,name=max_usage,json=maxUsage" json:"max_usage,omitempty"` Failcnt uint64 `protobuf:"varint,3,opt,name=failcnt" json:"failcnt,omitempty"` Limit uint64 `protobuf:"varint,4,opt,name=limit" json:"limit,omitempty"` } @@ -589,8 +590,8 @@ func (*MemoryData) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{ type MemoryStats struct { Cache uint64 `protobuf:"varint,1,opt,name=cache" json:"cache,omitempty"` Usage *MemoryData `protobuf:"bytes,2,opt,name=usage" json:"usage,omitempty"` - SwapUsage *MemoryData `protobuf:"bytes,3,opt,name=swap_usage" json:"swap_usage,omitempty"` - KernelUsage *MemoryData `protobuf:"bytes,4,opt,name=kernel_usage" json:"kernel_usage,omitempty"` + SwapUsage *MemoryData `protobuf:"bytes,3,opt,name=swap_usage,json=swapUsage" json:"swap_usage,omitempty"` + KernelUsage *MemoryData `protobuf:"bytes,4,opt,name=kernel_usage,json=kernelUsage" json:"kernel_usage,omitempty"` Stats map[string]uint64 `protobuf:"bytes,5,rep,name=stats" json:"stats,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` } @@ -640,14 +641,14 @@ func (*BlkioStatsEntry) ProtoMessage() {} func (*BlkioStatsEntry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} } type BlkioStats struct { - IoServiceBytesRecursive []*BlkioStatsEntry `protobuf:"bytes,1,rep,name=io_service_bytes_recursive" json:"io_service_bytes_recursive,omitempty"` - IoServicedRecursive []*BlkioStatsEntry `protobuf:"bytes,2,rep,name=io_serviced_recursive" json:"io_serviced_recursive,omitempty"` - IoQueuedRecursive []*BlkioStatsEntry `protobuf:"bytes,3,rep,name=io_queued_recursive" json:"io_queued_recursive,omitempty"` - IoServiceTimeRecursive []*BlkioStatsEntry `protobuf:"bytes,4,rep,name=io_service_time_recursive" json:"io_service_time_recursive,omitempty"` - IoWaitTimeRecursive []*BlkioStatsEntry `protobuf:"bytes,5,rep,name=io_wait_time_recursive" json:"io_wait_time_recursive,omitempty"` - IoMergedRecursive []*BlkioStatsEntry `protobuf:"bytes,6,rep,name=io_merged_recursive" json:"io_merged_recursive,omitempty"` - IoTimeRecursive []*BlkioStatsEntry `protobuf:"bytes,7,rep,name=io_time_recursive" json:"io_time_recursive,omitempty"` - SectorsRecursive []*BlkioStatsEntry `protobuf:"bytes,8,rep,name=sectors_recursive" json:"sectors_recursive,omitempty"` + IoServiceBytesRecursive []*BlkioStatsEntry `protobuf:"bytes,1,rep,name=io_service_bytes_recursive,json=ioServiceBytesRecursive" json:"io_service_bytes_recursive,omitempty"` + IoServicedRecursive []*BlkioStatsEntry `protobuf:"bytes,2,rep,name=io_serviced_recursive,json=ioServicedRecursive" json:"io_serviced_recursive,omitempty"` + IoQueuedRecursive []*BlkioStatsEntry `protobuf:"bytes,3,rep,name=io_queued_recursive,json=ioQueuedRecursive" json:"io_queued_recursive,omitempty"` + IoServiceTimeRecursive []*BlkioStatsEntry `protobuf:"bytes,4,rep,name=io_service_time_recursive,json=ioServiceTimeRecursive" json:"io_service_time_recursive,omitempty"` + IoWaitTimeRecursive []*BlkioStatsEntry `protobuf:"bytes,5,rep,name=io_wait_time_recursive,json=ioWaitTimeRecursive" json:"io_wait_time_recursive,omitempty"` + IoMergedRecursive []*BlkioStatsEntry `protobuf:"bytes,6,rep,name=io_merged_recursive,json=ioMergedRecursive" json:"io_merged_recursive,omitempty"` + IoTimeRecursive []*BlkioStatsEntry `protobuf:"bytes,7,rep,name=io_time_recursive,json=ioTimeRecursive" json:"io_time_recursive,omitempty"` + SectorsRecursive []*BlkioStatsEntry `protobuf:"bytes,8,rep,name=sectors_recursive,json=sectorsRecursive" json:"sectors_recursive,omitempty"` } func (m *BlkioStats) Reset() { *m = BlkioStats{} } @@ -713,7 +714,7 @@ func (m *BlkioStats) GetSectorsRecursive() []*BlkioStatsEntry { type HugetlbStats struct { Usage uint64 `protobuf:"varint,1,opt,name=usage" json:"usage,omitempty"` - MaxUsage uint64 `protobuf:"varint,2,opt,name=max_usage" json:"max_usage,omitempty"` + MaxUsage uint64 `protobuf:"varint,2,opt,name=max_usage,json=maxUsage" json:"max_usage,omitempty"` Failcnt uint64 `protobuf:"varint,3,opt,name=failcnt" json:"failcnt,omitempty"` Limit uint64 `protobuf:"varint,4,opt,name=limit" json:"limit,omitempty"` } @@ -724,11 +725,11 @@ func (*HugetlbStats) ProtoMessage() {} func (*HugetlbStats) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} } type CgroupStats struct { - CpuStats *CpuStats `protobuf:"bytes,1,opt,name=cpu_stats" json:"cpu_stats,omitempty"` - MemoryStats *MemoryStats `protobuf:"bytes,2,opt,name=memory_stats" json:"memory_stats,omitempty"` - BlkioStats *BlkioStats `protobuf:"bytes,3,opt,name=blkio_stats" json:"blkio_stats,omitempty"` - HugetlbStats map[string]*HugetlbStats `protobuf:"bytes,4,rep,name=hugetlb_stats" json:"hugetlb_stats,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - PidsStats *PidsStats `protobuf:"bytes,5,opt,name=pids_stats" json:"pids_stats,omitempty"` + CpuStats *CpuStats `protobuf:"bytes,1,opt,name=cpu_stats,json=cpuStats" json:"cpu_stats,omitempty"` + MemoryStats *MemoryStats `protobuf:"bytes,2,opt,name=memory_stats,json=memoryStats" json:"memory_stats,omitempty"` + BlkioStats *BlkioStats `protobuf:"bytes,3,opt,name=blkio_stats,json=blkioStats" json:"blkio_stats,omitempty"` + HugetlbStats map[string]*HugetlbStats `protobuf:"bytes,4,rep,name=hugetlb_stats,json=hugetlbStats" json:"hugetlb_stats,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + PidsStats *PidsStats `protobuf:"bytes,5,opt,name=pids_stats,json=pidsStats" json:"pids_stats,omitempty"` } func (m *CgroupStats) Reset() { *m = CgroupStats{} } @@ -772,8 +773,8 @@ func (m *CgroupStats) GetPidsStats() *PidsStats { } type StatsResponse struct { - NetworkStats []*NetworkStats `protobuf:"bytes,1,rep,name=network_stats" json:"network_stats,omitempty"` - CgroupStats *CgroupStats `protobuf:"bytes,2,opt,name=cgroup_stats" json:"cgroup_stats,omitempty"` + NetworkStats []*NetworkStats `protobuf:"bytes,1,rep,name=network_stats,json=networkStats" json:"network_stats,omitempty"` + CgroupStats *CgroupStats `protobuf:"bytes,2,opt,name=cgroup_stats,json=cgroupStats" json:"cgroup_stats,omitempty"` Timestamp uint64 `protobuf:"varint,3,opt,name=timestamp" json:"timestamp,omitempty"` } @@ -1314,125 +1315,152 @@ var _API_serviceDesc = grpc.ServiceDesc{ } var fileDescriptor0 = []byte{ - // 1918 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xd4, 0x58, 0x5b, 0x8f, 0x1b, 0x49, - 0x15, 0xce, 0xd8, 0x1e, 0xcf, 0xf8, 0xf8, 0x32, 0x99, 0xce, 0x5c, 0x1c, 0x2f, 0x9b, 0x0d, 0xcd, - 0xc2, 0x46, 0xb0, 0x1a, 0x2d, 0x5e, 0x2e, 0x4b, 0x90, 0x10, 0x61, 0xb2, 0xda, 0x05, 0x25, 0xc1, - 0x3b, 0x93, 0x2c, 0xe2, 0xc9, 0xea, 0xe9, 0xae, 0xd8, 0xc5, 0xb4, 0xbb, 0x9b, 0xaa, 0xea, 0xb9, - 0xfc, 0x08, 0x7e, 0x09, 0x12, 0xe2, 0x89, 0x1f, 0xc0, 0xff, 0xe0, 0x8d, 0x27, 0x24, 0xfe, 0x03, - 0xa7, 0x4e, 0x55, 0xb5, 0xbb, 0xdb, 0xf6, 0x04, 0x09, 0xf1, 0xb0, 0x2f, 0x96, 0xab, 0xea, 0x5c, - 0xbf, 0x73, 0xa9, 0x53, 0x0d, 0x9d, 0x20, 0xe3, 0x27, 0x99, 0x48, 0x55, 0xea, 0x6d, 0xab, 0xdb, - 0x8c, 0x49, 0xff, 0x21, 0x1c, 0x7f, 0xc1, 0xd4, 0x39, 0x13, 0x57, 0x4c, 0x7c, 0xcd, 0x84, 0xe4, - 0x69, 0x72, 0xc6, 0xfe, 0x98, 0x33, 0xa9, 0xfc, 0xdf, 0xc3, 0x70, 0xf5, 0x48, 0x66, 0x69, 0x22, - 0x99, 0xd7, 0x87, 0xed, 0x45, 0xf0, 0x87, 0x54, 0x0c, 0xb7, 0x1e, 0x6f, 0x3d, 0xe9, 0xd3, 0x92, - 0x27, 0xb8, 0x6c, 0xb8, 0x65, 0x16, 0xa8, 0x70, 0x3e, 0x6c, 0xd2, 0xf2, 0x3e, 0xec, 0x0a, 0x76, - 0xc5, 0xb5, 0x80, 0x61, 0x0b, 0x77, 0x3a, 0xfe, 0x05, 0x1c, 0xbc, 0xc9, 0xa2, 0x40, 0xb1, 0x89, - 0x48, 0x43, 0x26, 0xa5, 0x55, 0xe9, 0x01, 0x34, 0x78, 0x44, 0x32, 0x3b, 0x5e, 0x17, 0x9a, 0x19, - 0x2e, 0x1a, 0xb4, 0xc0, 0x93, 0x30, 0x4e, 0x25, 0x3b, 0x57, 0x11, 0x4f, 0x48, 0xec, 0xae, 0xd6, - 0x72, 0xcd, 0x23, 0x35, 0x27, 0x99, 0x7d, 0x6f, 0x00, 0xed, 0x39, 0xe3, 0xb3, 0xb9, 0x1a, 0x6e, - 0xeb, 0xb5, 0x7f, 0x0c, 0x87, 0x35, 0x1d, 0xc6, 0x76, 0xff, 0x1f, 0x5b, 0x70, 0x74, 0x2a, 0x18, - 0x9e, 0x9c, 0xa6, 0x89, 0x0a, 0x78, 0xc2, 0xc4, 0x3a, 0xfd, 0xb8, 0xb8, 0xc8, 0x93, 0x28, 0x66, - 0x93, 0x00, 0x75, 0x2c, 0xcd, 0x98, 0xb3, 0xf0, 0x32, 0x4b, 0x79, 0xa2, 0xc8, 0x8c, 0x8e, 0x36, - 0x43, 0x92, 0x55, 0xe4, 0x9a, 0x36, 0x03, 0x97, 0x69, 0x6e, 0xcc, 0x70, 0x6b, 0x26, 0xc4, 0xb0, - 0xed, 0xd6, 0x71, 0x70, 0xc1, 0x62, 0x39, 0xdc, 0x79, 0xdc, 0xc4, 0xf5, 0x03, 0xe8, 0x26, 0xe9, - 0x84, 0x5f, 0xa5, 0xea, 0x2c, 0x4d, 0xd5, 0x70, 0x97, 0x5c, 0xdb, 0x83, 0x1d, 0x91, 0x27, 0x8a, - 0x2f, 0xd8, 0xb0, 0x43, 0x5c, 0x48, 0x65, 0x37, 0x9e, 0x89, 0x99, 0x1c, 0x02, 0xb1, 0x1e, 0x42, - 0x7f, 0x69, 0xcd, 0x73, 0x2e, 0x86, 0x5d, 0x02, 0xf7, 0x17, 0x70, 0xbc, 0xe2, 0x9e, 0x0d, 0xdb, - 0x77, 0xa0, 0x13, 0xba, 0x4d, 0x72, 0xb3, 0x3b, 0xbe, 0x7f, 0x42, 0x89, 0x70, 0x52, 0x10, 0xfb, - 0x9f, 0x41, 0xff, 0x9c, 0xcf, 0x92, 0x20, 0x7e, 0x67, 0x54, 0xb4, 0x6f, 0x44, 0x69, 0x02, 0xed, - 0xdf, 0x87, 0x81, 0xe3, 0xb4, 0x58, 0xff, 0xa5, 0x01, 0xfb, 0xcf, 0xa2, 0xe8, 0x8e, 0x30, 0x63, - 0x72, 0x28, 0x26, 0x30, 0x7b, 0x50, 0x4a, 0x83, 0x9c, 0x7f, 0x08, 0xad, 0x5c, 0xa2, 0x7d, 0x4d, - 0xb2, 0xaf, 0x6b, 0xed, 0x7b, 0x83, 0x5b, 0x5e, 0x0f, 0x5a, 0x81, 0xf6, 0xbf, 0x45, 0xfe, 0xa3, - 0x2d, 0x2c, 0xb9, 0x42, 0x9c, 0xed, 0x22, 0xbc, 0x8e, 0x2c, 0xc8, 0xd6, 0xca, 0x9d, 0x6a, 0x80, - 0x76, 0x6b, 0x01, 0xea, 0xd4, 0x02, 0x04, 0xb4, 0x3e, 0x80, 0x5e, 0x18, 0x64, 0xc1, 0x05, 0x8f, - 0xb9, 0xe2, 0x4c, 0x22, 0xa8, 0x5a, 0xfc, 0x31, 0xec, 0x05, 0x59, 0x16, 0x88, 0x45, 0x2a, 0xd0, - 0x99, 0xb7, 0x3c, 0x66, 0xc3, 0x9e, 0x23, 0x97, 0x2c, 0xe6, 0x49, 0x7e, 0xf3, 0x42, 0x87, 0x75, - 0xd8, 0xa7, 0x5d, 0x24, 0x4f, 0xd2, 0x57, 0xec, 0x7a, 0x22, 0xf8, 0x15, 0xd2, 0xce, 0x50, 0xce, - 0x80, 0x9c, 0x7b, 0x84, 0x91, 0x8d, 0xf9, 0x82, 0x2b, 0x39, 0xdc, 0x43, 0xc1, 0xdd, 0x71, 0xdf, - 0xfa, 0x77, 0x46, 0xbb, 0xfe, 0x18, 0xda, 0xe6, 0x9f, 0xf6, 0x55, 0x9f, 0x58, 0x98, 0x70, 0x25, - 0xd3, 0xb7, 0x8a, 0x20, 0x6a, 0xe9, 0xd5, 0x3c, 0x10, 0x11, 0x41, 0xd4, 0xc2, 0x80, 0xb5, 0x08, - 0x1d, 0xf4, 0x3a, 0xb7, 0xb8, 0xf6, 0xf5, 0x62, 0x66, 0x03, 0xd5, 0xf7, 0x8e, 0x60, 0x10, 0x44, - 0x11, 0xfa, 0x93, 0x22, 0xcc, 0x5f, 0xf0, 0x48, 0x22, 0x67, 0x13, 0x03, 0x76, 0x00, 0x5e, 0x39, - 0x3a, 0x36, 0x68, 0x61, 0x91, 0x40, 0x45, 0x76, 0xad, 0x8b, 0xdc, 0x77, 0x2b, 0xc5, 0xd0, 0xa0, - 0x68, 0xed, 0xbb, 0x6c, 0x2a, 0x0e, 0x56, 0xb3, 0x94, 0xca, 0xc6, 0x1f, 0xc1, 0x70, 0x55, 0x89, - 0x35, 0xe0, 0x37, 0x70, 0xfc, 0x9c, 0xc5, 0xec, 0x5d, 0x06, 0x20, 0x0a, 0x49, 0x80, 0x25, 0x62, - 0x92, 0x71, 0xb3, 0x9e, 0x55, 0x59, 0x56, 0xcf, 0x53, 0x38, 0x7c, 0xc1, 0xa5, 0xba, 0x5b, 0xcb, - 0x8a, 0x5c, 0x52, 0x87, 0xdd, 0x11, 0x4a, 0x4e, 0x3a, 0x53, 0x0a, 0xc3, 0xd8, 0x0d, 0x57, 0x36, - 0x9f, 0x31, 0x12, 0x2a, 0xcc, 0x6c, 0xd3, 0xc2, 0x42, 0xce, 0x13, 0x7e, 0x73, 0x9e, 0x86, 0x97, - 0x4c, 0x49, 0xea, 0x19, 0xd4, 0xc9, 0xe4, 0x9c, 0xc5, 0x31, 0xb5, 0x8c, 0x5d, 0xff, 0x97, 0x70, - 0x54, 0x37, 0xcb, 0xd6, 0xef, 0xf7, 0xa0, 0xbb, 0xb4, 0x45, 0xa2, 0xb6, 0xe6, 0x5a, 0xcc, 0xd1, - 0xe9, 0xde, 0xb9, 0x42, 0x6c, 0xd7, 0xf8, 0xe3, 0x3f, 0x86, 0x41, 0x51, 0xeb, 0x44, 0x64, 0x2a, - 0x20, 0x50, 0xb9, 0xb4, 0x14, 0x7f, 0x6e, 0xc0, 0x8e, 0xcd, 0x09, 0x57, 0x49, 0xff, 0xc7, 0x5a, - 0xdd, 0x87, 0x8e, 0xbc, 0x95, 0x8a, 0x2d, 0x26, 0xb6, 0x62, 0xfb, 0xdf, 0xac, 0x8a, 0xfd, 0xd3, - 0x16, 0x74, 0x0a, 0x40, 0xdf, 0x79, 0x83, 0x7c, 0x1b, 0x3a, 0x99, 0x81, 0x96, 0x99, 0x22, 0xec, - 0x8e, 0x07, 0x56, 0x9e, 0x83, 0x7c, 0x19, 0x8e, 0x56, 0xed, 0xc6, 0x30, 0xe8, 0x21, 0xb0, 0x99, - 0x2e, 0xe1, 0xb6, 0x2e, 0xe1, 0xf2, 0x55, 0x41, 0xed, 0xce, 0xff, 0x08, 0x76, 0x5e, 0x06, 0xe1, - 0x1c, 0xad, 0xd1, 0x94, 0x61, 0x66, 0xc3, 0x4a, 0x17, 0xe4, 0x82, 0x21, 0x1a, 0xb7, 0xa6, 0x89, - 0xf8, 0x5f, 0x63, 0x9f, 0x37, 0x49, 0x62, 0xb3, 0xeb, 0x43, 0x2c, 0x68, 0xe7, 0x88, 0x4b, 0xae, - 0x95, 0xeb, 0xc1, 0xfb, 0x00, 0x76, 0x16, 0x46, 0xbe, 0xad, 0x79, 0x67, 0xbf, 0xd5, 0xea, 0x5f, - 0xc2, 0x91, 0xb9, 0x78, 0xef, 0xbc, 0x5e, 0x57, 0x2e, 0x12, 0xe3, 0xb2, 0xb9, 0x53, 0x9f, 0x40, - 0x47, 0x30, 0x99, 0xe6, 0x02, 0x01, 0x21, 0x14, 0xba, 0xe3, 0x43, 0x97, 0x5b, 0x24, 0xfa, 0xcc, - 0x9e, 0xfa, 0xff, 0xdc, 0x82, 0x41, 0x75, 0x4b, 0x97, 0xd8, 0x45, 0x7c, 0xc9, 0xd3, 0xdf, 0x99, - 0x69, 0xc0, 0x38, 0x8f, 0x59, 0x86, 0x50, 0x9c, 0x63, 0xd7, 0x44, 0x89, 0x8d, 0xd2, 0xd6, 0x84, - 0x09, 0x9e, 0x46, 0xcb, 0x49, 0x05, 0xb7, 0xbe, 0xca, 0x53, 0x15, 0xd8, 0xa9, 0x42, 0xdf, 0xf8, - 0x08, 0x21, 0x53, 0xa7, 0x1a, 0xc8, 0xed, 0x62, 0x0a, 0xa0, 0xbd, 0x97, 0x6c, 0x21, 0x6d, 0x16, - 0xa3, 0x52, 0x03, 0xee, 0x0b, 0x9d, 0x14, 0x36, 0x8f, 0x91, 0xd0, 0x6c, 0x9e, 0x5f, 0x07, 0x19, - 0x25, 0x73, 0x1f, 0x2b, 0x66, 0xdf, 0xec, 0xa1, 0xbd, 0x38, 0x5a, 0x05, 0xba, 0x27, 0x53, 0x5e, - 0xd3, 0xd1, 0x25, 0x13, 0x09, 0x8b, 0x5f, 0x96, 0x24, 0x01, 0xdd, 0xac, 0x38, 0xa6, 0xad, 0x60, - 0x6a, 0x9b, 0x98, 0x0f, 0xfd, 0xcf, 0xaf, 0x18, 0xb6, 0x03, 0x87, 0x32, 0xfa, 0xa5, 0xd3, 0x01, - 0x01, 0x5d, 0x64, 0xe4, 0x7d, 0xcb, 0xff, 0x0a, 0xb6, 0x89, 0xa6, 0x76, 0xa9, 0x98, 0x78, 0xac, - 0x0b, 0x41, 0xdf, 0xc5, 0xa7, 0xe5, 0x6a, 0x74, 0x29, 0x72, 0x9b, 0x44, 0xfe, 0x6d, 0x0b, 0x7a, - 0xaf, 0x98, 0xba, 0x4e, 0xc5, 0xa5, 0xce, 0x22, 0x59, 0x6b, 0x81, 0x7a, 0xe6, 0xbb, 0x99, 0x5e, - 0xdc, 0x2a, 0x0b, 0x77, 0x4b, 0x83, 0x81, 0x3b, 0x93, 0xc0, 0x34, 0x3e, 0xba, 0xb9, 0xb4, 0xdc, - 0xb3, 0x9b, 0x29, 0x56, 0x72, 0x2a, 0x4c, 0x9c, 0x89, 0x0c, 0xb7, 0x22, 0x91, 0x66, 0x19, 0x8b, - 0x8c, 0x2e, 0x2d, 0xec, 0xb5, 0x13, 0xd6, 0x76, 0x54, 0xb8, 0x93, 0x59, 0x61, 0x3b, 0x4e, 0xd8, - 0xeb, 0x42, 0xd8, 0x6e, 0x89, 0xcc, 0x09, 0xeb, 0x90, 0xe1, 0x0b, 0xd8, 0xc5, 0x58, 0xbe, 0x91, - 0xc1, 0x8c, 0x52, 0x45, 0x61, 0xac, 0xe3, 0x69, 0xae, 0x97, 0x06, 0x2c, 0xdd, 0x1f, 0x32, 0x26, - 0x30, 0xc2, 0x76, 0xb7, 0x81, 0x85, 0xd0, 0xf2, 0xde, 0x83, 0x07, 0xb4, 0x9c, 0xf2, 0x64, 0x6a, - 0xa2, 0xb4, 0x48, 0x23, 0x66, 0xfd, 0xc0, 0xc8, 0x15, 0x87, 0xba, 0x1f, 0xd2, 0x11, 0xf9, 0xe3, - 0xbf, 0x86, 0xc1, 0xeb, 0x39, 0x4e, 0xdc, 0x0a, 0x3b, 0xce, 0xec, 0x79, 0xa0, 0x02, 0x5d, 0xb1, - 0x19, 0x25, 0x9d, 0xb4, 0x0a, 0x91, 0x5b, 0x19, 0x12, 0x16, 0x4d, 0xdd, 0x91, 0x01, 0x0d, 0x2f, - 0xee, 0xe5, 0x11, 0x15, 0xb9, 0xb9, 0xf2, 0x15, 0x39, 0x61, 0x80, 0xf7, 0x29, 0x8f, 0x4b, 0x2e, - 0x74, 0xc7, 0x7b, 0xae, 0x6a, 0x9d, 0xa3, 0x27, 0xb0, 0xa7, 0x0a, 0x2b, 0xa6, 0x98, 0x48, 0x81, - 0x2d, 0x5e, 0x57, 0x56, 0x35, 0x1b, 0x75, 0x8f, 0xa4, 0xa6, 0x6c, 0xc5, 0x1a, 0xad, 0x3f, 0x80, - 0x0e, 0x36, 0x69, 0x69, 0xd4, 0xa2, 0x1b, 0x61, 0x2e, 0x04, 0x66, 0x95, 0x75, 0x03, 0xbb, 0x36, - 0x75, 0x44, 0xdb, 0x5e, 0x5e, 0x01, 0x98, 0x3c, 0x26, 0x81, 0x78, 0x58, 0xc6, 0x18, 0x63, 0xb5, - 0x08, 0x6e, 0x0a, 0x80, 0xf5, 0x16, 0xca, 0x7b, 0x1b, 0xf0, 0x38, 0xb4, 0x83, 0x75, 0x49, 0x9e, - 0x01, 0xf2, 0x5f, 0x5b, 0xd0, 0x35, 0x02, 0x8d, 0x7e, 0x3c, 0x0e, 0xb1, 0xe3, 0x38, 0x89, 0x8f, - 0x9d, 0x82, 0xea, 0x20, 0x52, 0x32, 0x01, 0xe7, 0x15, 0x89, 0x75, 0x58, 0xf2, 0x68, 0x2d, 0xd9, - 0x47, 0xd0, 0x33, 0xf1, 0xb5, 0x84, 0xad, 0x4d, 0x84, 0x1f, 0xeb, 0x5b, 0x0a, 0x2d, 0xa1, 0xb6, - 0xdc, 0x1d, 0xbf, 0x5f, 0xa1, 0x20, 0x1b, 0x4f, 0xe8, 0xf7, 0xf3, 0x44, 0x89, 0xdb, 0xd1, 0xc7, - 0x00, 0xcb, 0x95, 0xae, 0xae, 0x4b, 0x76, 0x6b, 0x6b, 0x05, 0x3d, 0xb9, 0x0a, 0xe2, 0xdc, 0x02, - 0xf1, 0xb4, 0xf1, 0xd9, 0x16, 0x4e, 0x40, 0x7b, 0xbf, 0xd2, 0x3d, 0xac, 0xc4, 0x52, 0x79, 0x72, - 0xb5, 0xaa, 0x4f, 0xae, 0x96, 0x2e, 0xe5, 0x34, 0x5b, 0xbe, 0x48, 0x8c, 0x3c, 0x03, 0xdc, 0xdf, - 0x9b, 0x00, 0x4b, 0x61, 0xde, 0x53, 0x18, 0xf1, 0x74, 0xaa, 0x7b, 0x0f, 0x0f, 0x99, 0x29, 0xaa, - 0xa9, 0x60, 0x18, 0x4a, 0xc9, 0xaf, 0x98, 0xed, 0xfa, 0x47, 0xd6, 0x97, 0xba, 0x0d, 0x3f, 0x86, - 0xc3, 0x25, 0x6f, 0x54, 0x62, 0x6b, 0xdc, 0xc9, 0xf6, 0x29, 0x3c, 0x40, 0x36, 0xec, 0x4e, 0x79, - 0x85, 0xa9, 0x79, 0x27, 0xd3, 0xcf, 0xe0, 0x61, 0xc9, 0x4e, 0x9d, 0xfb, 0x25, 0xd6, 0xd6, 0x9d, - 0xac, 0x3f, 0x81, 0x23, 0x64, 0xbd, 0x0e, 0xb8, 0xaa, 0xf3, 0x6d, 0xff, 0x17, 0x76, 0x2e, 0x98, - 0x98, 0x55, 0xec, 0x6c, 0xdf, 0xc9, 0xf4, 0x43, 0xd8, 0x47, 0xa6, 0x9a, 0x9e, 0x9d, 0x77, 0xb1, - 0x48, 0x16, 0x2a, 0xec, 0x53, 0x25, 0x96, 0xdd, 0xbb, 0x58, 0xfc, 0x09, 0xf4, 0xbe, 0xcc, 0x67, - 0x4c, 0xc5, 0x17, 0x45, 0xf6, 0xff, 0x8f, 0xf5, 0xf4, 0xd7, 0x06, 0x74, 0x4f, 0x67, 0x22, 0xcd, - 0xb3, 0x4a, 0x1b, 0x31, 0x29, 0xbd, 0xd2, 0x46, 0x0c, 0xcd, 0x13, 0xe8, 0x99, 0xcb, 0xcb, 0x92, - 0x99, 0x5a, 0xf3, 0x56, 0x33, 0x5f, 0x4f, 0xaa, 0x74, 0x09, 0x5b, 0xc2, 0x6a, 0xb5, 0x95, 0xb2, - 0xf1, 0xe7, 0xd0, 0x9f, 0x1b, 0xbf, 0x2c, 0xa5, 0x89, 0xec, 0x87, 0x4e, 0xf3, 0xd2, 0xc0, 0x93, - 0xb2, 0xff, 0x06, 0x47, 0x1c, 0x58, 0xf4, 0x24, 0x34, 0x75, 0x65, 0x58, 0x7e, 0xcf, 0x16, 0x8d, - 0x6a, 0xf4, 0x25, 0xec, 0xaf, 0xb2, 0x56, 0x0a, 0xd0, 0x2f, 0x17, 0x60, 0x77, 0xfc, 0xc0, 0x8a, - 0x28, 0x73, 0x51, 0x55, 0xde, 0x98, 0x89, 0xa9, 0x78, 0x29, 0x79, 0xdf, 0x87, 0x7e, 0x62, 0xee, - 0xc0, 0x02, 0xb7, 0x66, 0x49, 0x40, 0xe5, 0x7e, 0x44, 0xec, 0x42, 0xf2, 0x66, 0x2d, 0x76, 0xe5, - 0x48, 0x54, 0x6e, 0x5b, 0xd3, 0x79, 0xed, 0x40, 0xbf, 0xee, 0x05, 0x3d, 0xfe, 0x77, 0x1b, 0x9a, - 0xcf, 0x26, 0xbf, 0xf6, 0xde, 0xc0, 0xfd, 0xfa, 0xf7, 0x1a, 0xef, 0x91, 0x15, 0xbf, 0xe1, 0x1b, - 0xcf, 0xe8, 0x83, 0x8d, 0xe7, 0x76, 0xba, 0xb8, 0xe7, 0x9d, 0xc1, 0x5e, 0xed, 0x73, 0x82, 0xe7, - 0x5a, 0xdd, 0xfa, 0xaf, 0x28, 0xa3, 0x47, 0x9b, 0x8e, 0xcb, 0x32, 0x6b, 0xe3, 0x4c, 0x21, 0x73, - 0xfd, 0xe8, 0x58, 0xc8, 0xdc, 0x34, 0x05, 0xdd, 0xf3, 0x7e, 0x0a, 0x6d, 0xf3, 0xf1, 0xc1, 0x3b, - 0xb0, 0xb4, 0x95, 0xaf, 0x18, 0xa3, 0xc3, 0xda, 0x6e, 0xc1, 0xf8, 0x02, 0xfa, 0x95, 0x0f, 0x45, - 0xde, 0x7b, 0x15, 0x5d, 0xd5, 0x6f, 0x17, 0xa3, 0x6f, 0xad, 0x3f, 0x2c, 0xa4, 0x9d, 0x02, 0x2c, - 0x9f, 0xd4, 0xde, 0xd0, 0x52, 0xaf, 0x7c, 0x03, 0x19, 0x3d, 0x5c, 0x73, 0x52, 0x08, 0xc1, 0x50, - 0xd6, 0x1f, 0xc7, 0x5e, 0x0d, 0xd5, 0xfa, 0x9b, 0xb5, 0x08, 0xe5, 0xc6, 0x57, 0x35, 0x89, 0xad, - 0xbf, 0x85, 0x0b, 0xb1, 0x1b, 0x1e, 0xdc, 0x85, 0xd8, 0x8d, 0x8f, 0xe8, 0x7b, 0xde, 0x6f, 0x61, - 0x50, 0x7d, 0xaf, 0x7a, 0x0e, 0xa4, 0xb5, 0xaf, 0xeb, 0xd1, 0xfb, 0x1b, 0x4e, 0x0b, 0x81, 0x3f, - 0x82, 0x6d, 0xf3, 0x32, 0x75, 0x85, 0x54, 0x7e, 0xcc, 0x8e, 0x0e, 0xaa, 0x9b, 0x05, 0xd7, 0x27, - 0xd0, 0x36, 0x83, 0x70, 0x91, 0x00, 0x95, 0xb9, 0x78, 0xd4, 0x2b, 0xef, 0xfa, 0xf7, 0x3e, 0xd9, - 0x72, 0x7a, 0x64, 0x45, 0x8f, 0x5c, 0xa7, 0xa7, 0x14, 0x9c, 0x8b, 0x36, 0x7d, 0x40, 0xfd, 0xf4, - 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf9, 0xfa, 0x57, 0x5a, 0x4d, 0x15, 0x00, 0x00, + // 2348 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xec, 0x59, 0x4b, 0x73, 0x1c, 0x49, + 0x11, 0xf6, 0x3c, 0xa5, 0xc9, 0x79, 0x48, 0xea, 0xd5, 0x63, 0x3c, 0xbb, 0xf6, 0x9a, 0x8e, 0x05, + 0x0c, 0x2c, 0xc2, 0x8c, 0x77, 0x03, 0x07, 0x44, 0x10, 0x61, 0x4b, 0x66, 0x31, 0x6b, 0x2d, 0xe3, + 0x96, 0xc4, 0x1e, 0x27, 0x5a, 0xdd, 0xe5, 0x99, 0x46, 0x33, 0xdd, 0xbd, 0xdd, 0x35, 0xd2, 0xe8, + 0xc2, 0x81, 0x03, 0xdc, 0xf8, 0x03, 0x10, 0x5c, 0xb8, 0x71, 0xe7, 0xc0, 0x2f, 0x20, 0x82, 0x1f, + 0xc2, 0x8d, 0x3b, 0x47, 0xb2, 0xaa, 0xb2, 0xab, 0xab, 0xe7, 0x21, 0x99, 0x03, 0xc1, 0x85, 0xcb, + 0x44, 0xd5, 0x57, 0x59, 0x99, 0x59, 0xf9, 0xaa, 0xec, 0x1a, 0x68, 0xb8, 0x71, 0x70, 0x18, 0x27, + 0x11, 0x8f, 0xac, 0x1a, 0xbf, 0x89, 0x59, 0x6a, 0xdf, 0x87, 0x83, 0xcf, 0x18, 0x3f, 0x65, 0xc9, + 0x15, 0x4b, 0x7e, 0xc1, 0x92, 0x34, 0x88, 0x42, 0x87, 0x7d, 0x35, 0x63, 0x29, 0xb7, 0xe7, 0xd0, + 0x5d, 0x5e, 0x4a, 0xe3, 0x28, 0x4c, 0x99, 0xb5, 0x0b, 0xb5, 0xa9, 0xfb, 0xcb, 0x28, 0xe9, 0x96, + 0x1e, 0x95, 0x1e, 0xb7, 0x1d, 0x35, 0x91, 0x68, 0x10, 0x22, 0x5a, 0x26, 0x54, 0x4c, 0x04, 0x1a, + 0xbb, 0xdc, 0x1b, 0x77, 0x2b, 0x0a, 0x95, 0x13, 0xab, 0x07, 0x9b, 0x09, 0xbb, 0x0a, 0x04, 0xd7, + 0x6e, 0x15, 0x17, 0x1a, 0x8e, 0x9e, 0xdb, 0xbf, 0x29, 0xc1, 0xee, 0x79, 0xec, 0xbb, 0x9c, 0x0d, + 0x92, 0xc8, 0x63, 0x69, 0x4a, 0x2a, 0x59, 0x1d, 0x28, 0x07, 0xbe, 0x94, 0xd9, 0x70, 0x70, 0x64, + 0x6d, 0x43, 0x25, 0x46, 0xa0, 0x2c, 0x01, 0x31, 0xb4, 0x1e, 0x02, 0x78, 0x93, 0x28, 0x65, 0xa7, + 0xdc, 0x0f, 0x42, 0x29, 0x71, 0xd3, 0x31, 0x10, 0xa1, 0xcc, 0x75, 0xe0, 0xf3, 0xb1, 0x94, 0x89, + 0xca, 0xc8, 0x89, 0xb5, 0x0f, 0xf5, 0x31, 0x0b, 0x46, 0x63, 0xde, 0xad, 0x49, 0x98, 0x66, 0xf6, + 0x01, 0xec, 0x2d, 0xe8, 0xa1, 0xce, 0x6f, 0xff, 0xbd, 0x0c, 0xfb, 0x47, 0x09, 0xc3, 0x95, 0xa3, + 0x28, 0xe4, 0x6e, 0x10, 0xb2, 0x64, 0x9d, 0x8e, 0xa8, 0xd1, 0xc5, 0x2c, 0xf4, 0x27, 0x6c, 0xe0, + 0xa2, 0x58, 0xa5, 0xaa, 0x81, 0x48, 0x8d, 0xc7, 0xcc, 0xbb, 0x8c, 0xa3, 0x20, 0xe4, 0x52, 0x63, + 0x5c, 0xcf, 0x11, 0xa1, 0x71, 0x2a, 0x0f, 0xa3, 0xac, 0xa4, 0x26, 0x42, 0x63, 0x1c, 0x44, 0x33, + 0xa5, 0x71, 0xc3, 0xa1, 0x19, 0xe1, 0x2c, 0x49, 0xba, 0x75, 0x8d, 0xe3, 0x4c, 0xe0, 0x13, 0xf7, + 0x82, 0x4d, 0xd2, 0xee, 0xc6, 0xa3, 0x8a, 0xc0, 0xd5, 0xcc, 0x7a, 0x04, 0xcd, 0x30, 0x1a, 0x04, + 0x57, 0x11, 0x77, 0xa2, 0x88, 0x77, 0x37, 0xa5, 0xc1, 0x4c, 0xc8, 0xea, 0xc2, 0x46, 0x32, 0x0b, + 0x79, 0x30, 0x65, 0xdd, 0x86, 0x64, 0x99, 0x4d, 0xc5, 0x5e, 0x1a, 0x3e, 0x4f, 0x46, 0x69, 0x17, + 0x24, 0x63, 0x13, 0xb2, 0x3e, 0x82, 0x76, 0x7e, 0x92, 0xe3, 0x20, 0xe9, 0x36, 0x25, 0x87, 0x22, + 0x68, 0xbf, 0x82, 0x83, 0x25, 0x5b, 0x52, 0x9c, 0x1d, 0x42, 0xc3, 0xcb, 0x40, 0x69, 0xd3, 0x66, + 0x7f, 0xfb, 0x50, 0x46, 0xee, 0x61, 0x4e, 0x9c, 0x93, 0x20, 0xab, 0xf6, 0x69, 0x30, 0x0a, 0xdd, + 0xc9, 0xbb, 0x47, 0x8c, 0xb0, 0x98, 0xdc, 0x42, 0xf1, 0x49, 0x33, 0x7b, 0x1b, 0x3a, 0x19, 0x2b, + 0x72, 0xfa, 0x5f, 0x2a, 0xb0, 0xf3, 0xdc, 0xf7, 0xef, 0x88, 0x49, 0x0c, 0x6c, 0xce, 0x12, 0x0c, + 0x7d, 0xe4, 0x58, 0x96, 0xe6, 0xd4, 0x73, 0xeb, 0x43, 0xa8, 0xce, 0x52, 0x3c, 0x49, 0x45, 0x9e, + 0xa4, 0x49, 0x27, 0x39, 0x47, 0xc8, 0x91, 0x0b, 0x96, 0x05, 0x55, 0x57, 0xd8, 0xb2, 0x2a, 0x6d, + 0x29, 0xc7, 0x42, 0x65, 0x16, 0x5e, 0xa1, 0x9f, 0x05, 0x24, 0x86, 0x02, 0xf1, 0xae, 0x7d, 0xf2, + 0xb0, 0x18, 0x66, 0xc7, 0xda, 0xc8, 0x8f, 0xa5, 0xc3, 0x66, 0x73, 0x75, 0xd8, 0x34, 0xd6, 0x84, + 0x0d, 0x14, 0xc2, 0xc6, 0x86, 0x96, 0xe7, 0xc6, 0xee, 0x45, 0x30, 0x09, 0x78, 0xc0, 0x52, 0xf4, + 0x9f, 0x50, 0xa2, 0x80, 0x59, 0x8f, 0x61, 0xcb, 0x8d, 0x63, 0x37, 0x99, 0x46, 0x09, 0x9a, 0xe6, + 0x6d, 0x30, 0x61, 0xdd, 0x96, 0x64, 0xb2, 0x08, 0x0b, 0x6e, 0x29, 0x9b, 0x04, 0xe1, 0x6c, 0xfe, + 0x5a, 0x44, 0x5f, 0xb7, 0x2d, 0xc9, 0x0a, 0x98, 0xe0, 0x16, 0x46, 0x5f, 0xb0, 0xeb, 0x41, 0x12, + 0x5c, 0xe1, 0x9e, 0x11, 0x0a, 0xed, 0x48, 0x2b, 0x2e, 0xc2, 0xd6, 0x37, 0x31, 0x30, 0x27, 0xc1, + 0x34, 0xe0, 0x69, 0x77, 0x0b, 0xd5, 0x6a, 0xf6, 0xdb, 0x64, 0x4f, 0x47, 0xa2, 0x4e, 0xb6, 0x6a, + 0x1f, 0x43, 0x5d, 0x41, 0xc2, 0xbc, 0x82, 0x84, 0xbc, 0x25, 0xc7, 0x02, 0x4b, 0xa3, 0xb7, 0x5c, + 0xfa, 0xaa, 0xea, 0xc8, 0xb1, 0xc0, 0xc6, 0x6e, 0xe2, 0x4b, 0x3f, 0x21, 0x26, 0xc6, 0xb6, 0x03, + 0x55, 0xe1, 0x28, 0x61, 0xea, 0x19, 0x39, 0xbc, 0xed, 0x88, 0xa1, 0x40, 0x46, 0x14, 0x53, 0x88, + 0xe0, 0xd0, 0xfa, 0x06, 0x74, 0x5c, 0xdf, 0x47, 0xf3, 0x44, 0xe8, 0xf5, 0xcf, 0x02, 0x3f, 0x45, + 0x4e, 0x15, 0x5c, 0x5c, 0x40, 0xed, 0x5d, 0xb0, 0xcc, 0x80, 0xa2, 0x38, 0xfb, 0x75, 0x49, 0x27, + 0x84, 0xce, 0x93, 0x75, 0xd1, 0xf6, 0xfd, 0x42, 0xf5, 0x28, 0xcb, 0xb8, 0xda, 0xc9, 0x32, 0x24, + 0xdf, 0x6d, 0x16, 0x94, 0xa5, 0xa4, 0xac, 0xac, 0x4a, 0xca, 0x1e, 0x74, 0x97, 0x75, 0x20, 0x05, + 0x3d, 0x38, 0x38, 0x66, 0x13, 0xf6, 0x2e, 0xfa, 0xa1, 0x25, 0x43, 0x17, 0x4b, 0x87, 0x4a, 0x38, + 0x39, 0x7e, 0x77, 0x05, 0x96, 0x85, 0x90, 0x02, 0x27, 0xb0, 0xf7, 0x3a, 0x48, 0xf9, 0xdd, 0xe2, + 0x97, 0x44, 0x95, 0x57, 0x89, 0xfa, 0x15, 0x40, 0xce, 0x4a, 0xab, 0x5c, 0x32, 0x54, 0x46, 0x8c, + 0xcd, 0x03, 0x4e, 0x09, 0x2d, 0xc7, 0xc2, 0xed, 0xdc, 0x8b, 0xe9, 0x8e, 0x11, 0x43, 0x51, 0x10, + 0x67, 0x61, 0x30, 0x3f, 0x8d, 0xbc, 0x4b, 0xc6, 0x53, 0x59, 0xb0, 0xb1, 0x98, 0x1a, 0x90, 0xcc, + 0xca, 0x31, 0x9b, 0x4c, 0x64, 0xd5, 0xde, 0x74, 0xd4, 0x04, 0x8f, 0xb3, 0xbf, 0x78, 0x1c, 0xaa, + 0x7f, 0x4f, 0xa1, 0x99, 0xab, 0x9a, 0xa2, 0x4a, 0x95, 0xd5, 0xfe, 0x35, 0xa9, 0xec, 0x87, 0xd0, + 0x3a, 0xe5, 0xe8, 0xb9, 0x35, 0x46, 0xb1, 0x1f, 0x43, 0x47, 0x17, 0x4f, 0x49, 0xa8, 0xd2, 0xdf, + 0xe5, 0xb3, 0x94, 0xa8, 0x68, 0x66, 0xff, 0xb5, 0x02, 0x1b, 0x14, 0x9d, 0x59, 0x89, 0x29, 0xe5, + 0x25, 0xe6, 0x7f, 0x52, 0xe9, 0x3e, 0x80, 0x46, 0x7a, 0x93, 0x72, 0x36, 0x1d, 0x50, 0xbd, 0x6b, + 0x3b, 0x39, 0xf0, 0xff, 0xaa, 0x97, 0x57, 0xbd, 0xbf, 0x95, 0xa0, 0xa1, 0xdd, 0xfc, 0x1f, 0x77, + 0x25, 0x1f, 0x43, 0x23, 0x56, 0x8e, 0x67, 0xaa, 0x78, 0x35, 0xfb, 0x1d, 0x12, 0x94, 0x95, 0xab, + 0x9c, 0xc0, 0x88, 0x9f, 0xaa, 0x19, 0x3f, 0x46, 0xd7, 0x51, 0x2b, 0x74, 0x1d, 0xe8, 0xfc, 0x58, + 0x54, 0xc5, 0xba, 0xac, 0x8a, 0x72, 0x6c, 0xf6, 0x19, 0x1b, 0x85, 0x3e, 0xc3, 0xfe, 0x14, 0x36, + 0x4e, 0x5c, 0x6f, 0x8c, 0xe7, 0x10, 0x1b, 0xbd, 0x98, 0xc2, 0x14, 0x37, 0x8a, 0xb1, 0x10, 0x32, + 0x65, 0x68, 0xef, 0x1b, 0x2a, 0xe1, 0x34, 0xb3, 0x2f, 0xb1, 0x17, 0x50, 0x69, 0x40, 0xc9, 0xf4, + 0x04, 0x6b, 0x65, 0x66, 0x90, 0x2c, 0x97, 0x96, 0xbb, 0x09, 0x83, 0x06, 0xdd, 0xb2, 0x31, 0x55, + 0x92, 0xa9, 0xb4, 0x66, 0x36, 0x20, 0x7d, 0x9c, 0x6c, 0xd9, 0xfe, 0x6d, 0x09, 0xf6, 0x55, 0xab, + 0x78, 0x67, 0x43, 0xb8, 0xba, 0x05, 0x51, 0xe6, 0xab, 0x14, 0xcc, 0xf7, 0x14, 0x1a, 0x09, 0x4b, + 0xa3, 0x59, 0x82, 0x66, 0x96, 0x96, 0x6d, 0xf6, 0xf7, 0xb2, 0x4c, 0x92, 0xb2, 0x1c, 0x5a, 0x75, + 0x72, 0x3a, 0xfb, 0x0f, 0x15, 0xe8, 0x14, 0x57, 0x45, 0x5d, 0xba, 0x98, 0x5c, 0x06, 0xd1, 0x97, + 0xaa, 0xc7, 0x55, 0xc6, 0x33, 0x21, 0x91, 0x55, 0x68, 0xcb, 0x53, 0xbc, 0xe8, 0x50, 0x92, 0xba, + 0xc8, 0x72, 0x80, 0x56, 0x07, 0x2c, 0x09, 0x22, 0x9f, 0xba, 0xa4, 0x1c, 0x10, 0x65, 0x00, 0x27, + 0x6f, 0x66, 0x11, 0x77, 0xa9, 0xab, 0xd6, 0x73, 0xd9, 0xdc, 0xa2, 0x8f, 0x18, 0x3f, 0x12, 0x5e, + 0xab, 0x51, 0x73, 0xab, 0x91, 0x7c, 0xfd, 0x84, 0x4d, 0x53, 0x4a, 0x73, 0x03, 0x11, 0x9a, 0x2b, + 0x6f, 0xbe, 0x16, 0x41, 0x4d, 0xf9, 0x6e, 0x42, 0x82, 0x83, 0x9a, 0x9e, 0x5e, 0xbb, 0xb1, 0x4c, + 0xfb, 0xb6, 0x63, 0x20, 0x18, 0xc8, 0x3b, 0x6a, 0x86, 0xd6, 0xc0, 0x4f, 0x19, 0x57, 0xdc, 0xbe, + 0xb2, 0x0c, 0xb4, 0x9d, 0xe5, 0x05, 0x41, 0x7d, 0xc9, 0x92, 0x90, 0x4d, 0x4e, 0x0c, 0xa9, 0xa0, + 0xa8, 0x97, 0x16, 0xac, 0x3e, 0xec, 0x2a, 0xf0, 0xec, 0x68, 0x60, 0x6e, 0x68, 0xca, 0x0d, 0x2b, + 0xd7, 0xc4, 0x07, 0xd7, 0x52, 0x9c, 0xd0, 0xad, 0xf6, 0x5d, 0x68, 0xbf, 0xbc, 0x62, 0x58, 0xc1, + 0xb3, 0xc8, 0x41, 0xbb, 0x8b, 0x04, 0xc0, 0x68, 0x98, 0xc6, 0xd2, 0x6b, 0x55, 0x27, 0x07, 0xec, + 0x14, 0x6a, 0x92, 0x7c, 0x65, 0x57, 0xa3, 0x82, 0xae, 0xac, 0x83, 0xae, 0x18, 0x62, 0x6d, 0x1d, + 0x62, 0x14, 0x8c, 0xd5, 0x3c, 0x18, 0x0b, 0x42, 0x6b, 0x8b, 0x42, 0x7f, 0x57, 0x86, 0xd6, 0x17, + 0x8c, 0x5f, 0x47, 0xc9, 0xa5, 0x48, 0xae, 0x74, 0xe5, 0x6d, 0x79, 0x1f, 0xbf, 0xed, 0xe6, 0xc3, + 0x8b, 0x1b, 0x4e, 0xc1, 0x54, 0xc5, 0x5c, 0x9e, 0xbf, 0x10, 0x53, 0xeb, 0x01, 0x00, 0x2e, 0x0d, + 0x5c, 0x75, 0x43, 0xaa, 0xfe, 0xaa, 0x91, 0xcc, 0x09, 0xb0, 0xde, 0x87, 0x86, 0x33, 0x1f, 0x62, + 0x0d, 0x8e, 0x12, 0x15, 0xf1, 0x55, 0xfc, 0x2c, 0x9c, 0xbf, 0x94, 0x73, 0xb1, 0x17, 0x17, 0xfd, + 0x24, 0x8a, 0x63, 0xe6, 0x67, 0xaa, 0x25, 0xf3, 0x63, 0x05, 0x08, 0xa9, 0x67, 0x99, 0xd4, 0xba, + 0x92, 0xca, 0x73, 0xa9, 0xb8, 0x14, 0x93, 0xd4, 0x0d, 0x3a, 0x94, 0x29, 0xf5, 0x4c, 0x4b, 0xdd, + 0x54, 0x52, 0xb9, 0x21, 0xf5, 0x2c, 0x97, 0xda, 0xc8, 0xf6, 0x92, 0x54, 0xfb, 0xcf, 0x25, 0xd8, + 0xc4, 0x50, 0x3e, 0x4f, 0xdd, 0x11, 0xc3, 0x5b, 0xaf, 0xc9, 0x31, 0xec, 0x27, 0xc3, 0x99, 0x98, + 0x92, 0xcb, 0x40, 0x42, 0x8a, 0xe0, 0x6b, 0xd0, 0x8a, 0x59, 0x82, 0x01, 0x4e, 0x14, 0x65, 0x2c, + 0x42, 0x55, 0xa7, 0xa9, 0x30, 0x45, 0x72, 0x08, 0xef, 0xc9, 0xb5, 0x61, 0x10, 0x0e, 0x55, 0x04, + 0x4d, 0x23, 0x9f, 0x91, 0xa9, 0x76, 0xe4, 0xd2, 0xab, 0xf0, 0x73, 0xbd, 0x60, 0x7d, 0x1b, 0x76, + 0x34, 0xbd, 0xb8, 0x59, 0x25, 0xb5, 0x32, 0xdd, 0x16, 0x51, 0x9f, 0x13, 0x8c, 0x8d, 0x4e, 0xe7, + 0x6c, 0x8c, 0x9f, 0xff, 0x1c, 0xaf, 0x9e, 0xd1, 0xb1, 0x8b, 0x09, 0x8a, 0x55, 0x37, 0x96, 0x69, + 0x9c, 0x92, 0xb6, 0xd9, 0xd4, 0xfa, 0x0e, 0xec, 0x70, 0x45, 0xcb, 0xfc, 0x61, 0x46, 0xa3, 0xbc, + 0xb9, 0xad, 0x17, 0x06, 0x44, 0xfc, 0x75, 0xe8, 0xe4, 0xc4, 0xb2, 0x86, 0x2b, 0x7d, 0xdb, 0x1a, + 0x3d, 0x13, 0x95, 0xfc, 0xf7, 0xca, 0x58, 0x2a, 0x72, 0x3e, 0x96, 0x55, 0xc5, 0x30, 0x55, 0xb3, + 0xbf, 0x95, 0x55, 0x63, 0x32, 0x86, 0xac, 0x24, 0xca, 0x2c, 0x3f, 0x86, 0x2d, 0xae, 0x55, 0x1f, + 0x62, 0x02, 0xb9, 0x54, 0x92, 0xb3, 0x8a, 0x58, 0x3c, 0x98, 0xd3, 0xe1, 0xc5, 0x83, 0xa2, 0xe5, + 0x55, 0x9b, 0x40, 0x02, 0x95, 0x7e, 0x4d, 0x85, 0x49, 0x11, 0xf6, 0x8f, 0xa0, 0x81, 0x3d, 0x44, + 0xaa, 0xb4, 0x43, 0xc3, 0x78, 0xb3, 0x24, 0xc1, 0xfc, 0xca, 0x0c, 0x43, 0x53, 0xd1, 0x63, 0xc8, + 0x2b, 0x96, 0x8c, 0xa1, 0x26, 0x76, 0x04, 0xa0, 0xd2, 0x5c, 0x4a, 0x43, 0x1a, 0x33, 0x04, 0xd4, + 0x44, 0xc4, 0xd9, 0xd4, 0x9d, 0x6b, 0xd7, 0xcb, 0x38, 0x43, 0x40, 0x1d, 0x10, 0x05, 0xbe, 0x75, + 0x83, 0x89, 0x47, 0x8f, 0x00, 0x28, 0x90, 0xa6, 0xb9, 0xc0, 0xaa, 0x29, 0xf0, 0x4f, 0x65, 0x68, + 0x2a, 0x89, 0x4a, 0x61, 0xa4, 0xf2, 0xf0, 0x32, 0xd2, 0x22, 0xe5, 0x04, 0xdb, 0x85, 0x5a, 0x2e, + 0x2e, 0x6f, 0x1d, 0x73, 0x55, 0x33, 0xdd, 0xf0, 0x72, 0x4c, 0xb1, 0x5e, 0x1a, 0xd6, 0x59, 0x49, + 0xdd, 0x10, 0x44, 0x4a, 0xe1, 0x4f, 0xa0, 0xa5, 0xe2, 0x93, 0xf6, 0x54, 0xd7, 0xed, 0x69, 0x2a, + 0x32, 0xb5, 0xeb, 0xa9, 0xe8, 0xd0, 0x50, 0x5f, 0xd9, 0x11, 0x34, 0xfb, 0x0f, 0x0a, 0xe4, 0xf2, + 0x24, 0x87, 0xf2, 0xf7, 0x65, 0xc8, 0xb1, 0x34, 0x2b, 0xda, 0xde, 0x33, 0x80, 0x1c, 0x14, 0x35, + 0xeb, 0x92, 0xdd, 0x64, 0x9d, 0x28, 0x0e, 0xc5, 0xd9, 0xaf, 0xdc, 0xc9, 0x2c, 0x33, 0xaa, 0x9a, + 0xfc, 0xb0, 0xfc, 0xac, 0x84, 0x9f, 0x2a, 0x5b, 0x2f, 0xc4, 0x3d, 0x67, 0x6c, 0x2f, 0xbc, 0x5d, + 0x55, 0x57, 0xbe, 0x5d, 0x55, 0xb3, 0xb7, 0x2b, 0x2c, 0xa3, 0x51, 0x4c, 0xb7, 0x32, 0x8e, 0x72, + 0x41, 0x55, 0x43, 0x90, 0xfd, 0x8f, 0x2a, 0x40, 0x2e, 0xc5, 0x3a, 0x85, 0x5e, 0x10, 0x0d, 0xc5, + 0xa5, 0x12, 0x78, 0x4c, 0x15, 0xa4, 0x61, 0xc2, 0x30, 0x7c, 0xd2, 0xe0, 0x8a, 0x51, 0xdf, 0xb1, + 0x4f, 0xe7, 0x5e, 0x50, 0xce, 0x39, 0xc0, 0x99, 0xda, 0x28, 0x2b, 0x97, 0x93, 0x6d, 0xb3, 0x7e, + 0x06, 0x7b, 0x39, 0x53, 0xdf, 0xe0, 0x57, 0xbe, 0x95, 0xdf, 0x7b, 0x9a, 0x9f, 0x9f, 0xf3, 0xfa, + 0x09, 0x20, 0x3c, 0xc4, 0x3b, 0x66, 0x56, 0xe0, 0x54, 0xb9, 0x95, 0xd3, 0x4e, 0x10, 0xbd, 0x91, + 0x3b, 0x72, 0x3e, 0x6f, 0xe0, 0xbe, 0x71, 0x50, 0x91, 0xf6, 0x06, 0xb7, 0xea, 0xad, 0xdc, 0xf6, + 0xb5, 0x5e, 0xa2, 0x30, 0xe4, 0x2c, 0x3f, 0x07, 0x5c, 0x19, 0x5e, 0xbb, 0x01, 0x5f, 0xe4, 0x57, + 0xbb, 0xeb, 0x9c, 0x5f, 0xe2, 0xa6, 0x22, 0x33, 0x75, 0xce, 0x29, 0x4b, 0x46, 0x85, 0x73, 0xd6, + 0xef, 0x3a, 0xe7, 0x89, 0xdc, 0x91, 0xf3, 0x79, 0x01, 0x08, 0x2e, 0xea, 0xb3, 0x71, 0x2b, 0x97, + 0xad, 0x20, 0x2a, 0xea, 0x72, 0x04, 0x3b, 0x29, 0xf3, 0x38, 0xde, 0x28, 0x06, 0x8f, 0xcd, 0x5b, + 0x79, 0x6c, 0xd3, 0x06, 0xcd, 0xc4, 0xfe, 0x0a, 0x5a, 0x3f, 0x9d, 0x8d, 0x18, 0x9f, 0x5c, 0xe8, + 0x9c, 0xff, 0x6f, 0x97, 0x99, 0x7f, 0x61, 0x99, 0x39, 0x1a, 0x25, 0xd1, 0x2c, 0x2e, 0x54, 0x6d, + 0x95, 0xc3, 0x4b, 0x55, 0x5b, 0xd2, 0xc8, 0xaa, 0xad, 0xa8, 0x3f, 0x85, 0x96, 0x6a, 0xb2, 0x68, + 0x83, 0xaa, 0x42, 0xd6, 0x72, 0xd2, 0x67, 0x4d, 0x9d, 0xda, 0xd6, 0xa7, 0x86, 0x95, 0x76, 0x15, + 0xab, 0x51, 0x6e, 0x26, 0xfc, 0x62, 0xc9, 0xb3, 0xee, 0x15, 0xb4, 0xc7, 0xca, 0x36, 0xb4, 0x4b, + 0x05, 0xe0, 0x47, 0x99, 0x72, 0xf9, 0x19, 0x0e, 0x4d, 0x1b, 0x2a, 0x53, 0xb7, 0xc6, 0xa6, 0x59, + 0xbf, 0x07, 0x20, 0x3e, 0x49, 0x86, 0x59, 0xa1, 0x32, 0x9f, 0x1d, 0xf5, 0x0d, 0x81, 0xdf, 0x3f, + 0xd9, 0xb0, 0x77, 0x06, 0x3b, 0x4b, 0x3c, 0x57, 0x94, 0xa9, 0x6f, 0x99, 0x65, 0xaa, 0xd9, 0x7f, + 0x8f, 0x58, 0x9a, 0x5b, 0xcd, 0xda, 0xf5, 0xc7, 0x92, 0xfa, 0x82, 0xd1, 0x2f, 0x43, 0xd6, 0x33, + 0x68, 0x87, 0xaa, 0xf9, 0xd2, 0x0e, 0xa8, 0x18, 0x8c, 0xcc, 0xc6, 0xcc, 0x69, 0x85, 0x66, 0x9b, + 0x86, 0x8e, 0xf0, 0xa4, 0x05, 0x56, 0x3a, 0xc2, 0x30, 0x8e, 0xd3, 0xf4, 0x0c, 0x6f, 0x17, 0x9a, + 0xc1, 0xca, 0x62, 0x33, 0x48, 0x0f, 0x0d, 0xeb, 0x9e, 0x42, 0xfb, 0xff, 0xac, 0x43, 0xe5, 0xf9, + 0xe0, 0x95, 0x75, 0x0e, 0xdb, 0x8b, 0xff, 0x24, 0x58, 0x0f, 0x49, 0xf4, 0x9a, 0x7f, 0x1f, 0x7a, + 0x1f, 0xae, 0x5d, 0xa7, 0x6e, 0xf9, 0x9e, 0xe5, 0xc0, 0xd6, 0xc2, 0xbb, 0xb1, 0x95, 0x5d, 0x27, + 0xab, 0xdf, 0xe6, 0x7b, 0x0f, 0xd7, 0x2d, 0x9b, 0x3c, 0x17, 0xda, 0x73, 0xcd, 0x73, 0xf5, 0xe7, + 0x9d, 0xe6, 0xb9, 0xae, 0xab, 0xbf, 0x67, 0xfd, 0x00, 0xea, 0xea, 0x25, 0xd9, 0xda, 0x25, 0xda, + 0xc2, 0x1b, 0x75, 0x6f, 0x6f, 0x01, 0xd5, 0x1b, 0x5f, 0x43, 0xbb, 0xf0, 0xf7, 0x83, 0xf5, 0x7e, + 0x41, 0x56, 0xf1, 0x21, 0xba, 0xf7, 0xc1, 0xea, 0x45, 0xcd, 0xed, 0x08, 0x20, 0x7f, 0x6c, 0xb4, + 0xba, 0x44, 0xbd, 0xf4, 0xa0, 0xdd, 0xbb, 0xbf, 0x62, 0x45, 0x33, 0x41, 0x57, 0x2e, 0x3e, 0x0b, + 0x5a, 0x0b, 0x56, 0x5d, 0x7c, 0x94, 0xd3, 0xae, 0x5c, 0xfb, 0x9e, 0x28, 0xd9, 0x2e, 0x3e, 0xf6, + 0x69, 0xb6, 0x6b, 0x9e, 0x1a, 0x35, 0xdb, 0xb5, 0xaf, 0x84, 0xf7, 0xac, 0x9f, 0x43, 0xa7, 0xf8, + 0xb0, 0x66, 0x65, 0x46, 0x5a, 0xf9, 0x7c, 0xd8, 0x7b, 0xb0, 0x66, 0x55, 0x33, 0xfc, 0x04, 0x6a, + 0xea, 0xc5, 0x2c, 0x4b, 0x39, 0xf3, 0xa1, 0xad, 0xb7, 0x5b, 0x04, 0xf5, 0xae, 0x27, 0x50, 0x57, + 0x1f, 0x76, 0x3a, 0x00, 0x0a, 0xdf, 0x79, 0xbd, 0x96, 0x89, 0xda, 0xf7, 0x9e, 0x94, 0x32, 0x39, + 0x69, 0x41, 0x4e, 0xba, 0x4a, 0x8e, 0xe1, 0x9c, 0x8b, 0xba, 0xfc, 0x6b, 0xef, 0xe9, 0xbf, 0x03, + 0x00, 0x00, 0xff, 0xff, 0x58, 0xa9, 0x0a, 0x41, 0xe7, 0x1b, 0x00, 0x00, } diff --git a/api/grpc/types/api.proto b/api/grpc/types/api.proto index 63a07bd..7ae3a3d 100644 --- a/api/grpc/types/api.proto +++ b/api/grpc/types/api.proto @@ -199,6 +199,7 @@ message UpdateResource { uint32 memorySwap = 8; uint32 memoryReservation = 9; uint32 kernelMemoryLimit = 10; + uint32 kernelTCPMemoryLimit = 11; } message UpdateContainerResponse { diff --git a/ctr/container.go b/ctr/container.go index b435239..d3d8f8e 100644 --- a/ctr/container.go +++ b/ctr/container.go @@ -597,6 +597,9 @@ var updateCommand = cli.Command{ cli.IntFlag{ Name: "kernel-limit", }, + cli.IntFlag{ + Name: "kernel-tcp-limit", + }, cli.IntFlag{ Name: "blkio-weight", }, @@ -621,6 +624,8 @@ var updateCommand = cli.Command{ req.Resources.CpuShares = uint32(context.Int("cpu-shares")) req.Resources.CpusetCpus = context.String("cpuset-cpus") req.Resources.CpusetMems = context.String("cpuset-mems") + req.Resources.KernelMemoryLimit = uint32(context.Int("kernel-limit")) + req.Resources.KernelTCPMemoryLimit = uint32(context.Int("kernel-tcp-limit")) c := getClient(context) if _, err := c.UpdateContainer(netcontext.Background(), req); err != nil { fatal(err.Error(), 1) diff --git a/runtime/container_linux.go b/runtime/container_linux.go index 3309dfb..c1b7bcb 100644 --- a/runtime/container_linux.go +++ b/runtime/container_linux.go @@ -62,6 +62,7 @@ func (c *container) UpdateResources(r *Resource) error { Reservation: u64Ptr(uint64(r.MemoryReservation)), Swap: u64Ptr(uint64(r.MemorySwap)), Kernel: u64Ptr(uint64(r.KernelMemory)), + KernelTCP: u64Ptr(uint64(r.KernelTCPMemory)), }, CPU: &ocs.CPU{ Shares: u64Ptr(uint64(r.CPUShares)), diff --git a/runtime/runtime.go b/runtime/runtime.go index 3004bc7..f1f4ca7 100644 --- a/runtime/runtime.go +++ b/runtime/runtime.go @@ -78,6 +78,7 @@ type Resource struct { CpusetCpus string CpusetMems string KernelMemory int64 + KernelTCPMemory int64 Memory int64 MemoryReservation int64 MemorySwap int64