From 3b936d310c1372f7ed09acee5d0e24b007d9c84a Mon Sep 17 00:00:00 2001 From: ravisantoshgudimetla Date: Tue, 31 Aug 2021 15:07:51 -0400 Subject: [PATCH 1/5] api: Introduce os field to pod spec --- pkg/apis/core/types.go | 70 +++++++++++++++++++++++++ staging/src/k8s.io/api/core/v1/types.go | 67 +++++++++++++++++++++++ 2 files changed, 137 insertions(+) diff --git a/pkg/apis/core/types.go b/pkg/apis/core/types.go index 7a690f64b19..d290b27ee15 100644 --- a/pkg/apis/core/types.go +++ b/pkg/apis/core/types.go @@ -2887,6 +2887,54 @@ type PodSpec struct { // All topologySpreadConstraints are ANDed. // +optional TopologySpreadConstraints []TopologySpreadConstraint + // Specifies the OS of the containers in the pod. + // Some pod and container fields are restricted if this is set. + // + // If the OS field is set to linux, the following fields must be unset: + // - securityContext.windowsOptions + // + // If the OS field is set to windows, following fields must be unset: + // - spec.hostPID + // - spec.hostIPC + // - spec.securityContext.seLinuxOptions + // - spec.securityContext.seccompProfile + // - spec.securityContext.fsGroup + // - spec.securityContext.fsGroupChangePolicy + // - spec.securityContext.sysctls + // - spec.shareProcessNamespace + // - spec.securityContext.runAsUser + // - spec.securityContext.runAsGroup + // - spec.securityContext.supplementalGroups + // - spec.containers[*].securityContext.seLinuxOptions + // - spec.containers[*].securityContext.seccompProfile + // - spec.containers[*].securityContext.capabilities + // - spec.containers[*].securityContext.readOnlyRootFilesystem + // - spec.containers[*].securityContext.privileged + // - spec.containers[*].securityContext.allowPrivilegeEscalation + // - spec.containers[*].securityContext.procMount + // - spec.containers[*].securityContext.runAsUser + // - spec.containers[*].securityContext.runAsGroup + // +optional + // This is an alpha field and requires the IdentifyPodOS feature + OS *PodOS +} + +// OSName is the set of OS'es that can be used in OS. +type OSName string + +// These are valid values for OSName +const ( + Linux OSName = "linux" + Windows OSName = "windows" +) + +// PodOS defines the OS parameters of a pod. +type PodOS struct { + // Name is the name of the operating system. The currently supported values are linux and windows. + // Additional value may be defined in future and can be one of: + // https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration + // Clients should expect to handle additional values and treat unrecognized values in this field as os: null + Name OSName } // HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the @@ -2932,11 +2980,13 @@ type PodSecurityContext struct { HostNetwork bool // Use the host's pid namespace. // Optional: Default to false. + // Note that this field cannot be set when spec.os.name is windows. // +k8s:conversion-gen=false // +optional HostPID bool // Use the host's ipc namespace. // Optional: Default to false. + // Note that this field cannot be set when spec.os.name is windows. // +k8s:conversion-gen=false // +optional HostIPC bool @@ -2944,6 +2994,7 @@ type PodSecurityContext struct { // When this is set containers will be able to view and signal processes from other containers // in the same pod, and the first process in each container will not be assigned PID 1. // HostPID and ShareProcessNamespace cannot both be set. + // Note that this field cannot be set when spec.os.name is windows. // Optional: Default to false. // +k8s:conversion-gen=false // +optional @@ -2953,11 +3004,13 @@ type PodSecurityContext struct { // container. May also be set in SecurityContext. If set in // both SecurityContext and PodSecurityContext, the value specified in SecurityContext // takes precedence for that container. + // Note that this field cannot be set when spec.os.name is windows. // +optional SELinuxOptions *SELinuxOptions // The Windows specific settings applied to all containers. // If unspecified, the options within a container's SecurityContext will be used. // If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is linux. // +optional WindowsOptions *WindowsSecurityContextOptions // The UID to run the entrypoint of the container process. @@ -2965,6 +3018,7 @@ type PodSecurityContext struct { // May also be set in SecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence // for that container. + // Note that this field cannot be set when spec.os.name is windows. // +optional RunAsUser *int64 // The GID to run the entrypoint of the container process. @@ -2972,6 +3026,7 @@ type PodSecurityContext struct { // May also be set in SecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence // for that container. + // Note that this field cannot be set when spec.os.name is windows. // +optional RunAsGroup *int64 // Indicates that the container must run as a non-root user. @@ -2986,6 +3041,7 @@ type PodSecurityContext struct { // A list of groups applied to the first process run in each container, in addition // to the container's primary GID. If unspecified, no groups will be added to // any container. + // Note that this field cannot be set when spec.os.name is windows. // +optional SupplementalGroups []int64 // A special supplemental group that applies to all containers in a pod. @@ -2997,6 +3053,7 @@ type PodSecurityContext struct { // 3. The permission bits are OR'd with rw-rw---- // // If unset, the Kubelet will not modify the ownership and permissions of any volume. + // Note that this field cannot be set when spec.os.name is windows. // +optional FSGroup *int64 // fsGroupChangePolicy defines behavior of changing ownership and permission of the volume @@ -3005,13 +3062,16 @@ type PodSecurityContext struct { // It will have no effect on ephemeral volume types such as: secret, configmaps // and emptydir. // Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. + // Note that this field cannot be set when spec.os.name is windows. // +optional FSGroupChangePolicy *PodFSGroupChangePolicy // Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported // sysctls (by the container runtime) might fail to launch. + // Note that this field cannot be set when spec.os.name is windows. // +optional Sysctls []Sysctl // The seccomp options to use by the containers in this pod. + // Note that this field cannot be set when spec.os.name is windows. // +optional SeccompProfile *SeccompProfile } @@ -5288,34 +5348,40 @@ type ComponentStatusList struct { type SecurityContext struct { // The capabilities to add/drop when running containers. // Defaults to the default set of capabilities granted by the container runtime. + // Note that this field cannot be set when spec.os.name is windows. // +optional Capabilities *Capabilities // Run container in privileged mode. // Processes in privileged containers are essentially equivalent to root on the host. // Defaults to false. + // Note that this field cannot be set when spec.os.name is windows. // +optional Privileged *bool // The SELinux context to be applied to the container. // If unspecified, the container runtime will allocate a random SELinux context for each // container. May also be set in PodSecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is windows. // +optional SELinuxOptions *SELinuxOptions // The Windows specific settings applied to all containers. // If unspecified, the options from the PodSecurityContext will be used. // If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is linux. // +optional WindowsOptions *WindowsSecurityContextOptions // The UID to run the entrypoint of the container process. // Defaults to user specified in image metadata if unspecified. // May also be set in PodSecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is windows. // +optional RunAsUser *int64 // The GID to run the entrypoint of the container process. // Uses runtime default if unset. // May also be set in PodSecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is windows. // +optional RunAsGroup *int64 // Indicates that the container must run as a non-root user. @@ -5328,21 +5394,25 @@ type SecurityContext struct { RunAsNonRoot *bool // The read-only root filesystem allows you to restrict the locations that an application can write // files to, ensuring the persistent data can only be written to mounts. + // Note that this field cannot be set when spec.os.name is windows. // +optional ReadOnlyRootFilesystem *bool // AllowPrivilegeEscalation controls whether a process can gain more // privileges than its parent process. This bool directly controls if // the no_new_privs flag will be set on the container process. + // Note that this field cannot be set when spec.os.name is windows. // +optional AllowPrivilegeEscalation *bool // ProcMount denotes the type of proc mount to use for the containers. // The default is DefaultProcMount which uses the container runtime defaults for // readonly paths and masked paths. + // Note that this field cannot be set when spec.os.name is windows. // +optional ProcMount *ProcMountType // The seccomp options to use by this container. If seccomp options are // provided at both the pod & container level, the container options // override the pod options. + // Note that this field cannot be set when spec.os.name is windows. // +optional SeccompProfile *SeccompProfile } diff --git a/staging/src/k8s.io/api/core/v1/types.go b/staging/src/k8s.io/api/core/v1/types.go index caf13f69a5b..38bffeeea28 100644 --- a/staging/src/k8s.io/api/core/v1/types.go +++ b/staging/src/k8s.io/api/core/v1/types.go @@ -3186,6 +3186,54 @@ type PodSpec struct { // Default to false. // +optional SetHostnameAsFQDN *bool `json:"setHostnameAsFQDN,omitempty" protobuf:"varint,35,opt,name=setHostnameAsFQDN"` + // Specifies the OS of the containers in the pod. + // Some pod and container fields are restricted if this is set. + // + // If the OS field is set to linux, the following fields must be unset: + // -securityContext.windowsOptions + // + // If the OS field is set to windows, following fields must be unset: + // - spec.hostPID + // - spec.hostIPC + // - spec.securityContext.seLinuxOptions + // - spec.securityContext.seccompProfile + // - spec.securityContext.fsGroup + // - spec.securityContext.fsGroupChangePolicy + // - spec.securityContext.sysctls + // - spec.shareProcessNamespace + // - spec.securityContext.runAsUser + // - spec.securityContext.runAsGroup + // - spec.securityContext.supplementalGroups + // - spec.containers[*].securityContext.seLinuxOptions + // - spec.containers[*].securityContext.seccompProfile + // - spec.containers[*].securityContext.capabilities + // - spec.containers[*].securityContext.readOnlyRootFilesystem + // - spec.containers[*].securityContext.privileged + // - spec.containers[*].securityContext.allowPrivilegeEscalation + // - spec.containers[*].securityContext.procMount + // - spec.containers[*].securityContext.runAsUser + // - spec.containers[*].securityContext.runAsGroup + // +optional + // This is an alpha field and requires the IdentifyPodOS feature + OS *PodOS `json:"os,omitempty" protobuf:"bytes,36,opt,name=os"` +} + +// OSName is the set of OS'es that can be used in OS. +type OSName string + +// These are valid values for OSName +const ( + Linux OSName = "linux" + Windows OSName = "windows" +) + +// PodOS defines the OS parameters of a pod. +type PodOS struct { + // Name is the name of the operating system. The currently supported values are linux and windows. + // Additional value may be defined in future and can be one of: + // https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration + // Clients should expect to handle additional values and treat unrecognized values in this field as os: null + Name OSName `json:"name" protobuf:"bytes,1,opt,name=name"` } type UnsatisfiableConstraintAction string @@ -3293,11 +3341,13 @@ type PodSecurityContext struct { // container. May also be set in SecurityContext. If set in // both SecurityContext and PodSecurityContext, the value specified in SecurityContext // takes precedence for that container. + // Note that this field cannot be set when spec.os.name is windows. // +optional SELinuxOptions *SELinuxOptions `json:"seLinuxOptions,omitempty" protobuf:"bytes,1,opt,name=seLinuxOptions"` // The Windows specific settings applied to all containers. // If unspecified, the options within a container's SecurityContext will be used. // If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is linux. // +optional WindowsOptions *WindowsSecurityContextOptions `json:"windowsOptions,omitempty" protobuf:"bytes,8,opt,name=windowsOptions"` // The UID to run the entrypoint of the container process. @@ -3305,6 +3355,7 @@ type PodSecurityContext struct { // May also be set in SecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence // for that container. + // Note that this field cannot be set when spec.os.name is windows. // +optional RunAsUser *int64 `json:"runAsUser,omitempty" protobuf:"varint,2,opt,name=runAsUser"` // The GID to run the entrypoint of the container process. @@ -3312,6 +3363,7 @@ type PodSecurityContext struct { // May also be set in SecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence // for that container. + // Note that this field cannot be set when spec.os.name is windows. // +optional RunAsGroup *int64 `json:"runAsGroup,omitempty" protobuf:"varint,6,opt,name=runAsGroup"` // Indicates that the container must run as a non-root user. @@ -3325,6 +3377,7 @@ type PodSecurityContext struct { // A list of groups applied to the first process run in each container, in addition // to the container's primary GID. If unspecified, no groups will be added to // any container. + // Note that this field cannot be set when spec.os.name is windows. // +optional SupplementalGroups []int64 `json:"supplementalGroups,omitempty" protobuf:"varint,4,rep,name=supplementalGroups"` // A special supplemental group that applies to all containers in a pod. @@ -3336,10 +3389,12 @@ type PodSecurityContext struct { // 3. The permission bits are OR'd with rw-rw---- // // If unset, the Kubelet will not modify the ownership and permissions of any volume. + // Note that this field cannot be set when spec.os.name is windows. // +optional FSGroup *int64 `json:"fsGroup,omitempty" protobuf:"varint,5,opt,name=fsGroup"` // Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported // sysctls (by the container runtime) might fail to launch. + // Note that this field cannot be set when spec.os.name is windows. // +optional Sysctls []Sysctl `json:"sysctls,omitempty" protobuf:"bytes,7,rep,name=sysctls"` // fsGroupChangePolicy defines behavior of changing ownership and permission of the volume @@ -3348,9 +3403,11 @@ type PodSecurityContext struct { // It will have no effect on ephemeral volume types such as: secret, configmaps // and emptydir. // Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. + // Note that this field cannot be set when spec.os.name is windows. // +optional FSGroupChangePolicy *PodFSGroupChangePolicy `json:"fsGroupChangePolicy,omitempty" protobuf:"bytes,9,opt,name=fsGroupChangePolicy"` // The seccomp options to use by the containers in this pod. + // Note that this field cannot be set when spec.os.name is windows. // +optional SeccompProfile *SeccompProfile `json:"seccompProfile,omitempty" protobuf:"bytes,10,opt,name=seccompProfile"` } @@ -6141,34 +6198,40 @@ type DownwardAPIProjection struct { type SecurityContext struct { // The capabilities to add/drop when running containers. // Defaults to the default set of capabilities granted by the container runtime. + // Note that this field cannot be set when spec.os.name is windows. // +optional Capabilities *Capabilities `json:"capabilities,omitempty" protobuf:"bytes,1,opt,name=capabilities"` // Run container in privileged mode. // Processes in privileged containers are essentially equivalent to root on the host. // Defaults to false. + // Note that this field cannot be set when spec.os.name is windows. // +optional Privileged *bool `json:"privileged,omitempty" protobuf:"varint,2,opt,name=privileged"` // The SELinux context to be applied to the container. // If unspecified, the container runtime will allocate a random SELinux context for each // container. May also be set in PodSecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is windows. // +optional SELinuxOptions *SELinuxOptions `json:"seLinuxOptions,omitempty" protobuf:"bytes,3,opt,name=seLinuxOptions"` // The Windows specific settings applied to all containers. // If unspecified, the options from the PodSecurityContext will be used. // If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is linux. // +optional WindowsOptions *WindowsSecurityContextOptions `json:"windowsOptions,omitempty" protobuf:"bytes,10,opt,name=windowsOptions"` // The UID to run the entrypoint of the container process. // Defaults to user specified in image metadata if unspecified. // May also be set in PodSecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is windows. // +optional RunAsUser *int64 `json:"runAsUser,omitempty" protobuf:"varint,4,opt,name=runAsUser"` // The GID to run the entrypoint of the container process. // Uses runtime default if unset. // May also be set in PodSecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is windows. // +optional RunAsGroup *int64 `json:"runAsGroup,omitempty" protobuf:"varint,8,opt,name=runAsGroup"` // Indicates that the container must run as a non-root user. @@ -6181,6 +6244,7 @@ type SecurityContext struct { RunAsNonRoot *bool `json:"runAsNonRoot,omitempty" protobuf:"varint,5,opt,name=runAsNonRoot"` // Whether this container has a read-only root filesystem. // Default is false. + // Note that this field cannot be set when spec.os.name is windows. // +optional ReadOnlyRootFilesystem *bool `json:"readOnlyRootFilesystem,omitempty" protobuf:"varint,6,opt,name=readOnlyRootFilesystem"` // AllowPrivilegeEscalation controls whether a process can gain more @@ -6189,17 +6253,20 @@ type SecurityContext struct { // AllowPrivilegeEscalation is true always when the container is: // 1) run as Privileged // 2) has CAP_SYS_ADMIN + // Note that this field cannot be set when spec.os.name is windows. // +optional AllowPrivilegeEscalation *bool `json:"allowPrivilegeEscalation,omitempty" protobuf:"varint,7,opt,name=allowPrivilegeEscalation"` // procMount denotes the type of proc mount to use for the containers. // The default is DefaultProcMount which uses the container runtime defaults for // readonly paths and masked paths. // This requires the ProcMountType feature flag to be enabled. + // Note that this field cannot be set when spec.os.name is windows. // +optional ProcMount *ProcMountType `json:"procMount,omitempty" protobuf:"bytes,9,opt,name=procMount"` // The seccomp options to use by this container. If seccomp options are // provided at both the pod & container level, the container options // override the pod options. + // Note that this field cannot be set when spec.os.name is windows. // +optional SeccompProfile *SeccompProfile `json:"seccompProfile,omitempty" protobuf:"bytes,11,opt,name=seccompProfile"` } From 8d97eaf48cba0e07e13688c810e99181d6947811 Mon Sep 17 00:00:00 2001 From: ravisantoshgudimetla Date: Thu, 14 Oct 2021 13:48:14 -0400 Subject: [PATCH 2/5] feature: Add podOS featuregate --- pkg/features/kube_features.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/features/kube_features.go b/pkg/features/kube_features.go index a009669bd47..5ea035c4fff 100644 --- a/pkg/features/kube_features.go +++ b/pkg/features/kube_features.go @@ -689,6 +689,13 @@ const ( // StatefulSetMinReadySeconds allows minReadySeconds to be respected by StatefulSet controller StatefulSetMinReadySeconds featuregate.Feature = "StatefulSetMinReadySeconds" + // owner: @ravig + // alpha: v1.23 + // + // IdentifyPodOS allows user to specify OS on which they'd like the Pod run. The user should still set the nodeSelector + // with appropriate `kubernetes.io/os` label for scheduler to identify appropriate node for the pod to run. + IdentifyPodOS featuregate.Feature = "IdentifyPodOS" + // owner: @gjkim42 // kep: http://kep.k8s.io/2595 // alpha: v1.22 @@ -898,6 +905,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS CPUManagerPolicyAlphaOptions: {Default: false, PreRelease: featuregate.Alpha}, CPUManagerPolicyBetaOptions: {Default: true, PreRelease: featuregate.Beta}, JobMutableNodeSchedulingDirectives: {Default: true, PreRelease: featuregate.Beta}, + IdentifyPodOS: {Default: false, PreRelease: featuregate.Alpha}, // inherited features from generic apiserver, relisted here to get a conflict if it is changed // unintentionally on either side: From d7d0beb65f91d645ce3e5cf1f2957c24e6f4e48b Mon Sep 17 00:00:00 2001 From: ravisantoshgudimetla Date: Wed, 20 Oct 2021 15:40:49 -0400 Subject: [PATCH 3/5] api: Handle validation of PodOS field presence --- pkg/api/pod/util.go | 19 + pkg/api/pod/util_test.go | 82 ++ pkg/apis/core/validation/validation.go | 139 ++- pkg/apis/core/validation/validation_test.go | 1039 +++++++++++++++---- 4 files changed, 1098 insertions(+), 181 deletions(-) diff --git a/pkg/api/pod/util.go b/pkg/api/pod/util.go index d1614240e2e..12dacf65ba3 100644 --- a/pkg/api/pod/util.go +++ b/pkg/api/pod/util.go @@ -418,6 +418,8 @@ func GetValidationOptionsFromPodSpecAndMeta(podSpec, oldPodSpec *api.PodSpec, po AllowWindowsHostProcessField: utilfeature.DefaultFeatureGate.Enabled(features.WindowsHostProcessContainers), // Allow pod spec with expanded DNS configuration AllowExpandedDNSConfig: utilfeature.DefaultFeatureGate.Enabled(features.ExpandedDNSConfig) || haveSameExpandedDNSConfig(podSpec, oldPodSpec), + // Allow pod spec to use OS field + AllowOSField: utilfeature.DefaultFeatureGate.Enabled(features.IdentifyPodOS), } if oldPodSpec != nil { @@ -433,6 +435,9 @@ func GetValidationOptionsFromPodSpecAndMeta(podSpec, oldPodSpec *api.PodSpec, po // if old spec has Windows Host Process fields set, we must allow it opts.AllowWindowsHostProcessField = opts.AllowWindowsHostProcessField || setsWindowsHostProcess(oldPodSpec) + // if old spec has OS field set, we must allow it + opts.AllowOSField = opts.AllowOSField || oldPodSpec.OS != nil + // if old spec used non-integer multiple of huge page unit size, we must allow it opts.AllowIndivisibleHugePagesValues = usesIndivisibleHugePagesValues(oldPodSpec) } @@ -564,10 +569,24 @@ func dropDisabledFields( // does not specify any values for these fields. podSpec.PreemptionPolicy = nil } + if !utilfeature.DefaultFeatureGate.Enabled(features.IdentifyPodOS) && !podOSInUse(oldPodSpec) { + podSpec.OS = nil + } dropDisabledPodAffinityTermFields(podSpec, oldPodSpec) } +// podOSInUse returns true if the pod spec is non-nil and has OS field set +func podOSInUse(podSpec *api.PodSpec) bool { + if podSpec == nil { + return false + } + if podSpec.OS != nil { + return true + } + return false +} + // dropDisabledProcMountField removes disabled fields from PodSpec related // to ProcMount only if it is not already used by the old spec func dropDisabledProcMountField(podSpec, oldPodSpec *api.PodSpec) { diff --git a/pkg/api/pod/util_test.go b/pkg/api/pod/util_test.go index e9b5c494554..60c8cfe8af4 100644 --- a/pkg/api/pod/util_test.go +++ b/pkg/api/pod/util_test.go @@ -1708,3 +1708,85 @@ func TestDropDisabledPodAffinityTermFields(t *testing.T) { }) } } + +func TestDropOSField(t *testing.T) { + podWithOSField := func() *api.Pod { + osField := api.PodOS{Name: "linux"} + return &api.Pod{ + Spec: api.PodSpec{ + OS: &osField, + }, + } + } + podWithoutOSField := func() *api.Pod { return &api.Pod{} } + podInfo := []struct { + description string + hasPodOSField bool + pod func() *api.Pod + }{ + { + description: "has PodOS field", + hasPodOSField: true, + pod: podWithOSField, + }, + { + description: "does not have PodOS field", + hasPodOSField: false, + pod: podWithoutOSField, + }, + { + description: "is nil", + hasPodOSField: false, + pod: func() *api.Pod { return nil }, + }, + } + + for _, enabled := range []bool{true, false} { + for _, oldPodInfo := range podInfo { + for _, newPodInfo := range podInfo { + oldPodHasOsField, oldPod := oldPodInfo.hasPodOSField, oldPodInfo.pod() + newPodHasOSField, newPod := newPodInfo.hasPodOSField, newPodInfo.pod() + if newPod == nil { + continue + } + + t.Run(fmt.Sprintf("feature enabled=%v, old pod %v, new pod %v", enabled, oldPodInfo.description, newPodInfo.description), func(t *testing.T) { + defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IdentifyPodOS, enabled)() + + var oldPodSpec *api.PodSpec + if oldPod != nil { + oldPodSpec = &oldPod.Spec + } + dropDisabledFields(&newPod.Spec, nil, oldPodSpec, nil) + + // old pod should never be changed + if !reflect.DeepEqual(oldPod, oldPodInfo.pod()) { + t.Errorf("old pod changed: %v", cmp.Diff(oldPod, oldPodInfo.pod())) + } + + switch { + case enabled || oldPodHasOsField: + // new pod should not be changed if the feature is enabled, or if the old pod had subpaths + if !reflect.DeepEqual(newPod, newPodInfo.pod()) { + t.Errorf("new pod changed: %v", cmp.Diff(newPod, newPodInfo.pod())) + } + case newPodHasOSField: + // new pod should be changed + if reflect.DeepEqual(newPod, newPodInfo.pod()) { + t.Errorf("new pod was not changed") + } + // new pod should not have OSfield + if !reflect.DeepEqual(newPod, podWithoutOSField()) { + t.Errorf("new pod has OS field: %v", cmp.Diff(newPod, podWithoutOSField())) + } + default: + // new pod should not need to be changed + if !reflect.DeepEqual(newPod, newPodInfo.pod()) { + t.Errorf("new pod changed: %v", cmp.Diff(newPod, newPodInfo.pod())) + } + } + }) + } + } + } +} diff --git a/pkg/apis/core/validation/validation.go b/pkg/apis/core/validation/validation.go index b96143672da..2f8e6b4a8c2 100644 --- a/pkg/apis/core/validation/validation.go +++ b/pkg/apis/core/validation/validation.go @@ -98,6 +98,12 @@ var allowedEphemeralContainerFields = map[string]bool{ "TTY": true, } +// validOS stores the set of valid OSes within pod spec. +// The valid values currently are linux, windows. +// In future, they can be expanded to values from +// https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration +var validOS = sets.NewString(string(core.Linux), string(core.Windows)) + // ValidateHasLabel requires that metav1.ObjectMeta has a Label with key and expectedValue func ValidateHasLabel(meta metav1.ObjectMeta, fldPath *field.Path, key, expectedValue string) field.ErrorList { allErrs := field.ErrorList{} @@ -2923,7 +2929,7 @@ func validateFieldAllowList(value interface{}, allowedFields map[string]bool, er return allErrs } -func validateInitContainers(containers, otherContainers []core.Container, deviceVolumes map[string]core.VolumeSource, fldPath *field.Path, opts PodValidationOptions) field.ErrorList { +func validateInitContainers(containers []core.Container, otherContainers []core.Container, deviceVolumes map[string]core.VolumeSource, fldPath *field.Path, opts PodValidationOptions) field.ErrorList { var allErrs field.ErrorList if len(containers) > 0 { allErrs = append(allErrs, validateContainers(containers, true, deviceVolumes, fldPath, opts)...) @@ -3347,6 +3353,8 @@ type PodValidationOptions struct { AllowWindowsHostProcessField bool // Allow more DNSSearchPaths and longer DNSSearchListChars AllowExpandedDNSConfig bool + // Allow OSField to be set in the pod spec + AllowOSField bool } // validatePodMetadataAndSpec tests if required fields in the pod.metadata and pod.spec are set, @@ -3503,6 +3511,115 @@ func ValidatePodSpec(spec *core.PodSpec, podMeta *metav1.ObjectMeta, fldPath *fi allErrs = append(allErrs, validateOverhead(spec.Overhead, fldPath.Child("overhead"), opts)...) } + if spec.OS != nil { + osErrs := validateOS(spec, fldPath.Child("os"), opts) + switch { + case len(osErrs) > 0: + allErrs = append(allErrs, osErrs...) + case spec.OS.Name == core.Linux: + allErrs = append(allErrs, validateLinux(spec, fldPath)...) + case spec.OS.Name == core.Windows: + allErrs = append(allErrs, validateWindows(spec, fldPath)...) + } + } + return allErrs +} + +func validateLinux(spec *core.PodSpec, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + securityContext := spec.SecurityContext + if securityContext != nil && securityContext.WindowsOptions != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("securityContext").Child("windowsOptions"), "windows options cannot be set for a linux pod")) + } + podshelper.VisitContainersWithPath(spec, fldPath, func(c *core.Container, cFldPath *field.Path) bool { + sc := c.SecurityContext + if sc != nil && sc.WindowsOptions != nil { + fldPath := cFldPath.Child("securityContext") + allErrs = append(allErrs, field.Forbidden(fldPath.Child("windowsOptions"), "windows options cannot be set for a linux pod")) + } + return true + }) + return allErrs +} + +func validateWindows(spec *core.PodSpec, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + securityContext := spec.SecurityContext + // validate Pod SecurityContext + if securityContext != nil { + if securityContext.SELinuxOptions != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("securityContext").Child("seLinuxOptions"), "cannot be set for a windows pod")) + } + if securityContext.HostPID { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("hostPID"), "cannot be set for a windows pod")) + } + if securityContext.HostIPC { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("hostIPC"), "cannot be set for a windows pod")) + } + if securityContext.SeccompProfile != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("securityContext").Child("seccompProfile"), "cannot be set for a windows pod")) + } + if securityContext.FSGroup != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("securityContext").Child("fsGroup"), "cannot be set for a windows pod")) + } + if securityContext.FSGroupChangePolicy != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("securityContext").Child("fsGroupChangePolicy"), "cannot be set for a windows pod")) + } + if len(securityContext.Sysctls) > 0 { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("securityContext").Child("sysctls"), "cannot be set for a windows pod")) + } + if securityContext.ShareProcessNamespace != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("shareProcessNamespace"), "cannot be set for a windows pod")) + } + if securityContext.RunAsUser != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("securityContext").Child("runAsUser"), "cannot be set for a windows pod")) + } + if securityContext.RunAsGroup != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("securityContext").Child("runAsGroup"), "cannot be set for a windows pod")) + } + if securityContext.SupplementalGroups != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("securityContext").Child("supplementalGroups"), "cannot be set for a windows pod")) + } + } + podshelper.VisitContainersWithPath(spec, fldPath, func(c *core.Container, cFldPath *field.Path) bool { + // validate container security context + sc := c.SecurityContext + // OS based podSecurityContext validation + // There is some naming overlap between Windows and Linux Security Contexts but all the Windows Specific options + // are set via securityContext.WindowsOptions which we validate below + // TODO: Think if we need to relax this restriction or some of the restrictions + if sc != nil { + fldPath := cFldPath.Child("securityContext") + if sc.SELinuxOptions != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("seLinuxOptions"), "cannot be set for a windows pod")) + } + if sc.SeccompProfile != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("seccompProfile"), "cannot be set for a windows pod")) + } + if sc.Capabilities != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("capabilities"), "cannot be set for a windows pod")) + } + if sc.ReadOnlyRootFilesystem != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("readOnlyRootFilesystem"), "cannot be set for a windows pod")) + } + if sc.Privileged != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("privileged"), "cannot be set for a windows pod")) + } + if sc.AllowPrivilegeEscalation != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("allowPrivilegeEscalation"), "cannot be set for a windows pod")) + } + if sc.ProcMount != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("procMount"), "cannot be set for a windows pod")) + } + if sc.RunAsUser != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("runAsUser"), "cannot be set for a windows pod")) + } + if sc.RunAsGroup != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("runAsGroup"), "cannot be set for a windows pod")) + } + } + return true + }) return allErrs } @@ -6174,6 +6291,26 @@ func validateWindowsHostProcessPod(podSpec *core.PodSpec, fieldPath *field.Path, return allErrs } +// validateOS validates the OS field within pod spec +func validateOS(podSpec *core.PodSpec, fldPath *field.Path, opts PodValidationOptions) field.ErrorList { + allErrs := field.ErrorList{} + os := podSpec.OS + if os == nil { + return allErrs + } + if !opts.AllowOSField { + return append(allErrs, field.Forbidden(fldPath, "cannot be set when IdentifyPodOS feature is not enabled")) + } + if len(os.Name) == 0 { + return append(allErrs, field.Required(fldPath.Child("name"), "cannot be empty")) + } + osName := string(os.Name) + if !validOS.Has(osName) { + allErrs = append(allErrs, field.NotSupported(fldPath, osName, validOS.List())) + } + return allErrs +} + func ValidatePodLogOptions(opts *core.PodLogOptions) field.ErrorList { allErrs := field.ErrorList{} if opts.TailLines != nil && *opts.TailLines < 0 { diff --git a/pkg/apis/core/validation/validation_test.go b/pkg/apis/core/validation/validation_test.go index 64d98ecd266..b7b8772b81c 100644 --- a/pkg/apis/core/validation/validation_test.go +++ b/pkg/apis/core/validation/validation_test.go @@ -32,6 +32,7 @@ import ( "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" + "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/validation" "k8s.io/apimachinery/pkg/util/validation/field" utilfeature "k8s.io/apiserver/pkg/util/feature" @@ -523,7 +524,7 @@ func TestValidatePersistentVolumeSpec(t *testing.T) { AccessModes: []core.PersistentVolumeAccessMode{core.ReadWriteOnce}, }, }, - "inline-pvspec-with-sc": { + "inline-pvspec-with-podSec": { isExpectedFailure: true, isInlineSpec: true, pvSpec: &core.PersistentVolumeSpec{ @@ -6448,6 +6449,124 @@ func TestValidateEphemeralContainers(t *testing.T) { } } +func TestValidateWindowsPodSecurityContext(t *testing.T) { + validWindowsSC := &core.PodSecurityContext{WindowsOptions: &core.WindowsSecurityContextOptions{RunAsUserName: utilpointer.String("dummy")}} + invalidWindowsSC := &core.PodSecurityContext{SELinuxOptions: &core.SELinuxOptions{Role: "dummyRole"}} + cases := map[string]struct { + podSec *core.PodSpec + expectErr bool + errorType field.ErrorType + errorDetail string + featureEnabled bool + }{ + "valid SC, windows, no error": { + podSec: &core.PodSpec{SecurityContext: validWindowsSC}, + expectErr: false, + featureEnabled: true, + }, + "invalid SC, windows, error": { + podSec: &core.PodSpec{SecurityContext: invalidWindowsSC}, + errorType: "FieldValueForbidden", + errorDetail: "cannot be set for a windows pod", + expectErr: true, + featureEnabled: true, + }, + "valid SC, windows, no error, no IdentifyPodOS featuregate": { + podSec: &core.PodSpec{SecurityContext: validWindowsSC}, + expectErr: false, + featureEnabled: false, + }, + "invalid SC, windows, error, no IdentifyPodOS featuregate": { + podSec: &core.PodSpec{SecurityContext: invalidWindowsSC}, + errorType: "FieldValueForbidden", + errorDetail: "cannot be set for a windows pod", + expectErr: true, + featureEnabled: false, + }, + } + for k, v := range cases { + t.Run(k, func(t *testing.T) { + defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IdentifyPodOS, v.featureEnabled)() + errs := validateWindows(v.podSec, field.NewPath("field")) + if v.expectErr && len(errs) > 0 { + if errs[0].Type != v.errorType || !strings.Contains(errs[0].Detail, v.errorDetail) { + t.Errorf("[%s] Expected error type %q with detail %q, got %v", k, v.errorType, v.errorDetail, errs) + } + } else if v.expectErr && len(errs) == 0 { + t.Errorf("Unexpected success") + } + if !v.expectErr && len(errs) != 0 { + t.Errorf("Unexpected error(s): %v", errs) + } + }) + } +} + +func TestValidateLinuxPodSecurityContext(t *testing.T) { + runAsUser := int64(1) + validLinuxSC := &core.PodSecurityContext{ + SELinuxOptions: &core.SELinuxOptions{ + User: "user", + Role: "role", + Type: "type", + Level: "level", + }, + RunAsUser: &runAsUser, + } + invalidLinuxSC := &core.PodSecurityContext{ + WindowsOptions: &core.WindowsSecurityContextOptions{RunAsUserName: utilpointer.String("myUser")}, + } + + cases := map[string]struct { + podSpec *core.PodSpec + expectErr bool + errorType field.ErrorType + errorDetail string + featureEnabled bool + }{ + "valid SC, linux, no error": { + podSpec: &core.PodSpec{SecurityContext: validLinuxSC}, + expectErr: false, + featureEnabled: true, + }, + "invalid SC, linux, error": { + podSpec: &core.PodSpec{SecurityContext: invalidLinuxSC}, + errorType: "FieldValueForbidden", + errorDetail: "windows options cannot be set for a linux pod", + expectErr: true, + featureEnabled: true, + }, + "valid SC, linux, no error, no IdentifyPodOS featuregate": { + podSpec: &core.PodSpec{SecurityContext: validLinuxSC}, + expectErr: false, + featureEnabled: false, + }, + "invalid SC, linux, error, no IdentifyPodOS featuregate": { + podSpec: &core.PodSpec{SecurityContext: invalidLinuxSC}, + errorType: "FieldValueForbidden", + errorDetail: "windows options cannot be set for a linux pod", + expectErr: true, + featureEnabled: false, + }, + } + for k, v := range cases { + t.Run(k, func(t *testing.T) { + defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IdentifyPodOS, v.featureEnabled)() + errs := validateLinux(v.podSpec, field.NewPath("field")) + if v.expectErr && len(errs) > 0 { + if errs[0].Type != v.errorType || !strings.Contains(errs[0].Detail, v.errorDetail) { + t.Errorf("[%s] Expected error type %q with detail %q, got %v", k, v.errorType, v.errorDetail, errs) + } + } else if v.expectErr && len(errs) == 0 { + t.Errorf("Unexpected success") + } + if !v.expectErr && len(errs) != 0 { + t.Errorf("Unexpected error(s): %v", errs) + } + }) + } +} + func TestValidateContainers(t *testing.T) { volumeDevices := make(map[string]core.VolumeSource) capabilities.SetForTests(capabilities.Capabilities{ @@ -9447,24 +9566,25 @@ func TestValidatePodUpdate(t *testing.T) { ) tests := []struct { - new core.Pod - old core.Pod - err string - test string + new core.Pod + old core.Pod + err string + test string + enablePodOS bool }{ - {core.Pod{}, core.Pod{}, "", "nothing"}, + {new: core.Pod{}, old: core.Pod{}, err: "", test: "nothing"}, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "bar"}, }, - "metadata.name", - "ids", + err: "metadata.name", + test: "ids", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Labels: map[string]string{ @@ -9472,7 +9592,7 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Labels: map[string]string{ @@ -9480,11 +9600,11 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - "", - "labels", + err: "", + test: "labels", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Annotations: map[string]string{ @@ -9492,7 +9612,7 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Annotations: map[string]string{ @@ -9500,11 +9620,11 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - "", - "annotations", + err: "", + test: "annotations", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -9516,7 +9636,7 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ Containers: []core.Container{ @@ -9529,11 +9649,11 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - "may not add or remove containers", - "less containers", + err: "may not add or remove containers", + test: "less containers", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -9548,7 +9668,7 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ Containers: []core.Container{ @@ -9558,11 +9678,11 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - "may not add or remove containers", - "more containers", + err: "may not add or remove containers", + test: "more containers", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -9574,7 +9694,7 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ InitContainers: []core.Container{ @@ -9587,47 +9707,47 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - "may not add or remove containers", - "more init containers", + err: "may not add or remove containers", + test: "more init containers", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{Containers: []core.Container{{Image: "foo:V1"}}}, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", DeletionTimestamp: &now}, Spec: core.PodSpec{Containers: []core.Container{{Image: "foo:V1"}}}, }, - "metadata.deletionTimestamp", - "deletion timestamp removed", + err: "metadata.deletionTimestamp", + test: "deletion timestamp removed", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", DeletionTimestamp: &now}, Spec: core.PodSpec{Containers: []core.Container{{Image: "foo:V1"}}}, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{Containers: []core.Container{{Image: "foo:V1"}}}, }, - "metadata.deletionTimestamp", - "deletion timestamp added", + err: "metadata.deletionTimestamp", + test: "deletion timestamp added", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", DeletionTimestamp: &now, DeletionGracePeriodSeconds: &grace}, Spec: core.PodSpec{Containers: []core.Container{{Image: "foo:V1"}}}, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo", DeletionTimestamp: &now, DeletionGracePeriodSeconds: &grace2}, Spec: core.PodSpec{Containers: []core.Container{{Image: "foo:V1"}}}, }, - "metadata.deletionGracePeriodSeconds", - "deletion grace period seconds changed", + err: "metadata.deletionGracePeriodSeconds", + test: "deletion grace period seconds changed", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ Containers: []core.Container{ @@ -9640,7 +9760,7 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ Containers: []core.Container{ @@ -9653,11 +9773,11 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - "", - "image change", + err: "", + test: "image change", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ InitContainers: []core.Container{ @@ -9670,7 +9790,7 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ InitContainers: []core.Container{ @@ -9683,11 +9803,11 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - "", - "init container image change", + err: "", + test: "init container image change", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ Containers: []core.Container{ @@ -9699,7 +9819,7 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ Containers: []core.Container{ @@ -9712,11 +9832,11 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - "spec.containers[0].image", - "image change to empty", + err: "spec.containers[0].image", + test: "image change to empty", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ InitContainers: []core.Container{ @@ -9728,7 +9848,7 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ InitContainers: []core.Container{ @@ -9741,11 +9861,11 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - "spec.initContainers[0].image", - "init container image change to empty", + err: "spec.initContainers[0].image", + test: "init container image change to empty", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ EphemeralContainers: []core.EphemeralContainer{ @@ -9758,136 +9878,136 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{}, }, - "Forbidden: pod updates may not change fields other than", - "ephemeralContainer changes are not allowed via normal pod update", + err: "Forbidden: pod updates may not change fields other than", + test: "ephemeralContainer changes are not allowed via normal pod update", }, { - core.Pod{ + new: core.Pod{ Spec: core.PodSpec{}, }, - core.Pod{ + old: core.Pod{ Spec: core.PodSpec{}, }, - "", - "activeDeadlineSeconds no change, nil", + err: "", + test: "activeDeadlineSeconds no change, nil", }, { - core.Pod{ + new: core.Pod{ Spec: core.PodSpec{ ActiveDeadlineSeconds: &activeDeadlineSecondsPositive, }, }, - core.Pod{ + old: core.Pod{ Spec: core.PodSpec{ ActiveDeadlineSeconds: &activeDeadlineSecondsPositive, }, }, - "", - "activeDeadlineSeconds no change, set", + err: "", + test: "activeDeadlineSeconds no change, set", }, { - core.Pod{ + new: core.Pod{ Spec: core.PodSpec{ ActiveDeadlineSeconds: &activeDeadlineSecondsPositive, }, }, - core.Pod{}, - "", - "activeDeadlineSeconds change to positive from nil", + old: core.Pod{}, + err: "", + test: "activeDeadlineSeconds change to positive from nil", }, { - core.Pod{ + new: core.Pod{ Spec: core.PodSpec{ ActiveDeadlineSeconds: &activeDeadlineSecondsPositive, }, }, - core.Pod{ + old: core.Pod{ Spec: core.PodSpec{ ActiveDeadlineSeconds: &activeDeadlineSecondsLarger, }, }, - "", - "activeDeadlineSeconds change to smaller positive", + err: "", + test: "activeDeadlineSeconds change to smaller positive", }, { - core.Pod{ + new: core.Pod{ Spec: core.PodSpec{ ActiveDeadlineSeconds: &activeDeadlineSecondsLarger, }, }, - core.Pod{ + old: core.Pod{ Spec: core.PodSpec{ ActiveDeadlineSeconds: &activeDeadlineSecondsPositive, }, }, - "spec.activeDeadlineSeconds", - "activeDeadlineSeconds change to larger positive", + err: "spec.activeDeadlineSeconds", + test: "activeDeadlineSeconds change to larger positive", }, { - core.Pod{ + new: core.Pod{ Spec: core.PodSpec{ ActiveDeadlineSeconds: &activeDeadlineSecondsNegative, }, }, - core.Pod{}, - "spec.activeDeadlineSeconds", - "activeDeadlineSeconds change to negative from nil", + old: core.Pod{}, + err: "spec.activeDeadlineSeconds", + test: "activeDeadlineSeconds change to negative from nil", }, { - core.Pod{ + new: core.Pod{ Spec: core.PodSpec{ ActiveDeadlineSeconds: &activeDeadlineSecondsNegative, }, }, - core.Pod{ + old: core.Pod{ Spec: core.PodSpec{ ActiveDeadlineSeconds: &activeDeadlineSecondsPositive, }, }, - "spec.activeDeadlineSeconds", - "activeDeadlineSeconds change to negative from positive", + err: "spec.activeDeadlineSeconds", + test: "activeDeadlineSeconds change to negative from positive", }, { - core.Pod{ + new: core.Pod{ Spec: core.PodSpec{ ActiveDeadlineSeconds: &activeDeadlineSecondsZero, }, }, - core.Pod{ + old: core.Pod{ Spec: core.PodSpec{ ActiveDeadlineSeconds: &activeDeadlineSecondsPositive, }, }, - "spec.activeDeadlineSeconds", - "activeDeadlineSeconds change to zero from positive", + err: "spec.activeDeadlineSeconds", + test: "activeDeadlineSeconds change to zero from positive", }, { - core.Pod{ + new: core.Pod{ Spec: core.PodSpec{ ActiveDeadlineSeconds: &activeDeadlineSecondsZero, }, }, - core.Pod{}, - "spec.activeDeadlineSeconds", - "activeDeadlineSeconds change to zero from nil", + old: core.Pod{}, + err: "spec.activeDeadlineSeconds", + test: "activeDeadlineSeconds change to zero from nil", }, { - core.Pod{}, - core.Pod{ + new: core.Pod{}, + old: core.Pod{ Spec: core.PodSpec{ ActiveDeadlineSeconds: &activeDeadlineSecondsPositive, }, }, - "spec.activeDeadlineSeconds", - "activeDeadlineSeconds change to nil from positive", + err: "spec.activeDeadlineSeconds", + test: "activeDeadlineSeconds change to nil from positive", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ Containers: []core.Container{ @@ -9900,7 +10020,7 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ Containers: []core.Container{ @@ -9913,11 +10033,11 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - "spec: Forbidden: pod updates may not change fields", - "cpu change", + err: "spec: Forbidden: pod updates may not change fields", + test: "cpu change", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ Containers: []core.Container{ @@ -9930,7 +10050,7 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ Containers: []core.Container{ @@ -9943,11 +10063,11 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - "spec: Forbidden: pod updates may not change fields", - "fsGroupChangePolicy change", + err: "spec: Forbidden: pod updates may not change fields", + test: "fsGroupChangePolicy change", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ Containers: []core.Container{ @@ -9960,7 +10080,7 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ Containers: []core.Container{ @@ -9973,11 +10093,11 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - "spec: Forbidden: pod updates may not change fields", - "port change", + err: "spec: Forbidden: pod updates may not change fields", + test: "port change", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Labels: map[string]string{ @@ -9985,7 +10105,7 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", Labels: map[string]string{ @@ -9993,11 +10113,11 @@ func TestValidatePodUpdate(t *testing.T) { }, }, }, - "", - "bad label change", + err: "", + test: "bad label change", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10006,7 +10126,7 @@ func TestValidatePodUpdate(t *testing.T) { Tolerations: []core.Toleration{{Key: "key1", Value: "value2"}}, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10015,11 +10135,11 @@ func TestValidatePodUpdate(t *testing.T) { Tolerations: []core.Toleration{{Key: "key1", Value: "value1"}}, }, }, - "spec.tolerations: Forbidden", - "existing toleration value modified in pod spec updates", + err: "spec.tolerations: Forbidden", + test: "existing toleration value modified in pod spec updates", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10028,7 +10148,7 @@ func TestValidatePodUpdate(t *testing.T) { Tolerations: []core.Toleration{{Key: "key1", Value: "value2", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: nil}}, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10037,11 +10157,11 @@ func TestValidatePodUpdate(t *testing.T) { Tolerations: []core.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{10}[0]}}, }, }, - "spec.tolerations: Forbidden", - "existing toleration value modified in pod spec updates with modified tolerationSeconds", + err: "spec.tolerations: Forbidden", + test: "existing toleration value modified in pod spec updates with modified tolerationSeconds", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10050,7 +10170,7 @@ func TestValidatePodUpdate(t *testing.T) { Tolerations: []core.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{10}[0]}}, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10058,11 +10178,11 @@ func TestValidatePodUpdate(t *testing.T) { NodeName: "node1", Tolerations: []core.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{20}[0]}}, }}, - "", - "modified tolerationSeconds in existing toleration value in pod spec updates", + err: "", + test: "modified tolerationSeconds in existing toleration value in pod spec updates", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10070,7 +10190,7 @@ func TestValidatePodUpdate(t *testing.T) { Tolerations: []core.Toleration{{Key: "key1", Value: "value2"}}, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10079,11 +10199,11 @@ func TestValidatePodUpdate(t *testing.T) { Tolerations: []core.Toleration{{Key: "key1", Value: "value1"}}, }, }, - "spec.tolerations: Forbidden", - "toleration modified in updates to an unscheduled pod", + err: "spec.tolerations: Forbidden", + test: "toleration modified in updates to an unscheduled pod", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10092,7 +10212,7 @@ func TestValidatePodUpdate(t *testing.T) { Tolerations: []core.Toleration{{Key: "key1", Value: "value1"}}, }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10101,11 +10221,11 @@ func TestValidatePodUpdate(t *testing.T) { Tolerations: []core.Toleration{{Key: "key1", Value: "value1"}}, }, }, - "", - "tolerations unmodified in updates to a scheduled pod", + err: "", + test: "tolerations unmodified in updates to a scheduled pod", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10116,7 +10236,7 @@ func TestValidatePodUpdate(t *testing.T) { {Key: "key2", Value: "value2", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{30}[0]}, }, }}, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10125,11 +10245,11 @@ func TestValidatePodUpdate(t *testing.T) { Tolerations: []core.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{10}[0]}}, }, }, - "", - "added valid new toleration to existing tolerations in pod spec updates", + err: "", + test: "added valid new toleration to existing tolerations in pod spec updates", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{ NodeName: "node1", Tolerations: []core.Toleration{ @@ -10137,42 +10257,42 @@ func TestValidatePodUpdate(t *testing.T) { {Key: "key2", Value: "value2", Operator: "Equal", Effect: "NoSchedule", TolerationSeconds: &[]int64{30}[0]}, }, }}, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, Spec: core.PodSpec{ NodeName: "node1", Tolerations: []core.Toleration{{Key: "key1", Value: "value1", Operator: "Equal", Effect: "NoExecute", TolerationSeconds: &[]int64{10}[0]}}, }}, - "spec.tolerations[1].effect", - "added invalid new toleration to existing tolerations in pod spec updates", + err: "spec.tolerations[1].effect", + test: "added invalid new toleration to existing tolerations in pod spec updates", }, { - core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{NodeName: "foo"}}, - core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}}, - "spec: Forbidden: pod updates may not change fields", - "removed nodeName from pod spec", + new: core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{NodeName: "foo"}}, + old: core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}}, + err: "spec: Forbidden: pod updates may not change fields", + test: "removed nodeName from pod spec", }, { - core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{core.MirrorPodAnnotationKey: ""}}, Spec: core.PodSpec{NodeName: "foo"}}, - core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{NodeName: "foo"}}, - "metadata.annotations[kubernetes.io/config.mirror]", - "added mirror pod annotation", + new: core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{core.MirrorPodAnnotationKey: ""}}, Spec: core.PodSpec{NodeName: "foo"}}, + old: core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{NodeName: "foo"}}, + err: "metadata.annotations[kubernetes.io/config.mirror]", + test: "added mirror pod annotation", }, { - core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{NodeName: "foo"}}, - core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{core.MirrorPodAnnotationKey: ""}}, Spec: core.PodSpec{NodeName: "foo"}}, - "metadata.annotations[kubernetes.io/config.mirror]", - "removed mirror pod annotation", + new: core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}, Spec: core.PodSpec{NodeName: "foo"}}, + old: core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{core.MirrorPodAnnotationKey: ""}}, Spec: core.PodSpec{NodeName: "foo"}}, + err: "metadata.annotations[kubernetes.io/config.mirror]", + test: "removed mirror pod annotation", }, { - core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{core.MirrorPodAnnotationKey: "foo"}}, Spec: core.PodSpec{NodeName: "foo"}}, - core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{core.MirrorPodAnnotationKey: "bar"}}, Spec: core.PodSpec{NodeName: "foo"}}, - "metadata.annotations[kubernetes.io/config.mirror]", - "changed mirror pod annotation", + new: core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{core.MirrorPodAnnotationKey: "foo"}}, Spec: core.PodSpec{NodeName: "foo"}}, + old: core.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo", Annotations: map[string]string{core.MirrorPodAnnotationKey: "bar"}}, Spec: core.PodSpec{NodeName: "foo"}}, + err: "metadata.annotations[kubernetes.io/config.mirror]", + test: "changed mirror pod annotation", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10181,7 +10301,7 @@ func TestValidatePodUpdate(t *testing.T) { PriorityClassName: "bar-priority", }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10190,11 +10310,11 @@ func TestValidatePodUpdate(t *testing.T) { PriorityClassName: "foo-priority", }, }, - "spec: Forbidden: pod updates", - "changed priority class name", + err: "spec: Forbidden: pod updates", + test: "changed priority class name", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10203,7 +10323,7 @@ func TestValidatePodUpdate(t *testing.T) { PriorityClassName: "", }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10212,11 +10332,11 @@ func TestValidatePodUpdate(t *testing.T) { PriorityClassName: "foo-priority", }, }, - "spec: Forbidden: pod updates", - "removed priority class name", + err: "spec: Forbidden: pod updates", + test: "removed priority class name", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10224,7 +10344,7 @@ func TestValidatePodUpdate(t *testing.T) { TerminationGracePeriodSeconds: utilpointer.Int64Ptr(1), }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10232,11 +10352,11 @@ func TestValidatePodUpdate(t *testing.T) { TerminationGracePeriodSeconds: utilpointer.Int64Ptr(-1), }, }, - "", - "update termination grace period seconds", + err: "", + test: "update termination grace period seconds", }, { - core.Pod{ + new: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10244,7 +10364,7 @@ func TestValidatePodUpdate(t *testing.T) { TerminationGracePeriodSeconds: utilpointer.Int64Ptr(0), }, }, - core.Pod{ + old: core.Pod{ ObjectMeta: metav1.ObjectMeta{ Name: "foo", }, @@ -10252,11 +10372,137 @@ func TestValidatePodUpdate(t *testing.T) { TerminationGracePeriodSeconds: utilpointer.Int64Ptr(-1), }, }, - "spec: Forbidden: pod updates", - "update termination grace period seconds not 1", + err: "spec: Forbidden: pod updates", + test: "update termination grace period seconds not 1", + }, + { + new: core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + }, + Spec: core.PodSpec{ + OS: &core.PodOS{Name: core.Windows}, + SecurityContext: &core.PodSecurityContext{SELinuxOptions: &core.SELinuxOptions{Role: "dummy"}}, + }, + }, + old: core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + }, + Spec: core.PodSpec{ + OS: &core.PodOS{Name: core.Linux}, + SecurityContext: &core.PodSecurityContext{SELinuxOptions: &core.SELinuxOptions{Role: "dummy"}}, + }, + }, + err: "Forbidden: pod updates may not change fields other than `spec.containers[*].image`,", + test: "pod OS changing from Linux to Windows, no IdentifyPodOS featuregate set, no validation done", + enablePodOS: false, + }, + { + new: core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + }, + Spec: core.PodSpec{ + OS: &core.PodOS{Name: core.Windows}, + SecurityContext: &core.PodSecurityContext{SELinuxOptions: &core.SELinuxOptions{Role: "dummy"}}, + }, + }, + old: core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + }, + Spec: core.PodSpec{ + OS: &core.PodOS{Name: core.Linux}, + SecurityContext: &core.PodSecurityContext{SELinuxOptions: &core.SELinuxOptions{Role: "dummy"}}, + }, + }, + err: "Forbidden: pod updates may not change fields other than `spec.containers[*].image", + test: "pod OS changing from Linux to Windows, IdentifyPodOS featuregate set", + enablePodOS: true, + }, + { + new: core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + }, + Spec: core.PodSpec{ + OS: &core.PodOS{Name: core.Windows}, + SecurityContext: &core.PodSecurityContext{SELinuxOptions: &core.SELinuxOptions{Role: "dummy"}}, + }, + }, + old: core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + }, + Spec: core.PodSpec{ + OS: &core.PodOS{Name: core.Linux}, + SecurityContext: &core.PodSecurityContext{SELinuxOptions: &core.SELinuxOptions{Role: "dummy"}}, + }, + }, + err: "spec.securityContext.seLinuxOptions: Forbidden", + test: "pod OS changing from Linux to Windows, IdentifyPodOS featuregate set, we'd get SELinux errors as well", + enablePodOS: true, + }, + { + new: core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + }, + Spec: core.PodSpec{ + OS: &core.PodOS{Name: "dummy"}, + }, + }, + old: core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + }, + Spec: core.PodSpec{}, + }, + err: "Forbidden: pod updates may not change fields other than `spec.containers[*].image", + test: "invalid PodOS update, IdentifyPodOS featuregate set", + enablePodOS: true, + }, + { + new: core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + }, + Spec: core.PodSpec{ + OS: &core.PodOS{Name: core.Windows}, + }, + }, + old: core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + }, + Spec: core.PodSpec{}, + }, + err: "Forbidden: pod updates may not change fields other than `spec.containers[*].image", + test: "no pod spec OS to a valid value, no featuregate", + enablePodOS: false, + }, + { + new: core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + }, + Spec: core.PodSpec{ + OS: &core.PodOS{Name: core.Linux}, + }, + }, + old: core.Pod{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + }, + Spec: core.PodSpec{ + OS: &core.PodOS{Name: core.Windows}, + }, + }, + err: "Forbidden: pod updates may not change fields other than ", + test: "update pod spec OS to a valid value, featuregate disabled", }, } - for _, test := range tests { test.new.ObjectMeta.ResourceVersion = "1" test.old.ObjectMeta.ResourceVersion = "1" @@ -10283,7 +10529,7 @@ func TestValidatePodUpdate(t *testing.T) { test.old.Spec.RestartPolicy = "Always" } - errs := ValidatePodUpdate(&test.new, &test.old, PodValidationOptions{}) + errs := ValidatePodUpdate(&test.new, &test.old, PodValidationOptions{AllowOSField: test.enablePodOS}) if test.err == "" { if len(errs) != 0 { t.Errorf("unexpected invalid: %s (%+v)\nA: %+v\nB: %+v", test.test, errs, test.new, test.old) @@ -16728,6 +16974,281 @@ func TestValidateEndpointsUpdate(t *testing.T) { } } +func TestValidateWindowsSecurityContext(t *testing.T) { + tests := []struct { + name string + sc *core.PodSpec + expectError bool + errorMsg string + errorType field.ErrorType + featureEnabled bool + }{ + { + name: "pod with SELinux Options", + sc: &core.PodSpec{Containers: []core.Container{{SecurityContext: &core.SecurityContext{SELinuxOptions: &core.SELinuxOptions{Role: "dummy"}}}}}, + expectError: true, + errorMsg: "cannot be set for a windows pod", + errorType: "FieldValueForbidden", + featureEnabled: true, + }, + { + name: "pod with SeccompProfile", + sc: &core.PodSpec{Containers: []core.Container{{SecurityContext: &core.SecurityContext{SeccompProfile: &core.SeccompProfile{LocalhostProfile: utilpointer.String("dummy")}}}}}, + expectError: true, + errorMsg: "cannot be set for a windows pod", + errorType: "FieldValueForbidden", + featureEnabled: true, + }, + { + name: "pod with WindowsOptions, no error", + sc: &core.PodSpec{Containers: []core.Container{{SecurityContext: &core.SecurityContext{WindowsOptions: &core.WindowsSecurityContextOptions{RunAsUserName: utilpointer.String("dummy")}}}}}, + expectError: false, + featureEnabled: true, + }, + { + name: "pod with SELinux Options, no IdentifyPodOS enabled", + sc: &core.PodSpec{Containers: []core.Container{{SecurityContext: &core.SecurityContext{SELinuxOptions: &core.SELinuxOptions{Role: "dummy"}}}}}, + expectError: true, + errorMsg: "cannot be set for a windows pod", + errorType: "FieldValueForbidden", + featureEnabled: false, + }, + { + name: "pod with SeccompProfile, no IdentifyPodOS enabled", + sc: &core.PodSpec{Containers: []core.Container{{SecurityContext: &core.SecurityContext{SeccompProfile: &core.SeccompProfile{LocalhostProfile: utilpointer.String("dummy")}}}}}, + expectError: true, + errorMsg: "cannot be set for a windows pod", + errorType: "FieldValueForbidden", + featureEnabled: false, + }, + { + name: "pod with WindowsOptions, no error, no IdentifyPodOS enabled", + sc: &core.PodSpec{Containers: []core.Container{{SecurityContext: &core.SecurityContext{WindowsOptions: &core.WindowsSecurityContextOptions{RunAsUserName: utilpointer.String("dummy")}}}}}, + expectError: false, + featureEnabled: false, + }, + } + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IdentifyPodOS, test.featureEnabled)() + errs := validateWindows(test.sc, field.NewPath("field")) + if test.expectError && len(errs) > 0 { + if errs[0].Type != test.errorType { + t.Errorf("expected error type %q got %q", test.errorType, errs[0].Type) + } + if errs[0].Detail != test.errorMsg { + t.Errorf("expected error detail %q, got %q", test.errorMsg, errs[0].Detail) + } + } else if test.expectError && len(errs) == 0 { + t.Error("Unexpected success") + } + if !test.expectError && len(errs) != 0 { + t.Errorf("Unexpected error(s): %v", errs) + } + }) + } +} + +func TestValidateOSFields(t *testing.T) { + // Contains the list of OS specific fields within pod spec. + // All the fields in pod spec should be either osSpecific or osNeutral field + // To make a field OS specific: + // - Add documentation to the os specific field indicating which os it can/cannot be set for + // - Add documentation to the os field in the api + // - Add validation logic validateLinux, validateWindows functions to make sure the field is only set for eligible OSes + osSpecificFields := sets.NewString( + "Containers[*].SecurityContext.AllowPrivilegeEscalation", + "Containers[*].SecurityContext.Capabilities", + "Containers[*].SecurityContext.Privileged", + "Containers[*].SecurityContext.ProcMount", + "Containers[*].SecurityContext.ReadOnlyRootFilesystem", + "Containers[*].SecurityContext.RunAsGroup", + "Containers[*].SecurityContext.RunAsUser", + "Containers[*].SecurityContext.SELinuxOptions", + "Containers[*].SecurityContext.SeccompProfile", + "Containers[*].SecurityContext.WindowsOptions", + "InitContainers[*].SecurityContext.AllowPrivilegeEscalation", + "InitContainers[*].SecurityContext.Capabilities", + "InitContainers[*].SecurityContext.Privileged", + "InitContainers[*].SecurityContext.ProcMount", + "InitContainers[*].SecurityContext.ReadOnlyRootFilesystem", + "InitContainers[*].SecurityContext.RunAsGroup", + "InitContainers[*].SecurityContext.RunAsUser", + "InitContainers[*].SecurityContext.SELinuxOptions", + "InitContainers[*].SecurityContext.SeccompProfile", + "InitContainers[*].SecurityContext.WindowsOptions", + "EphemeralContainers[*].EphemeralContainerCommon.SecurityContext.AllowPrivilegeEscalation", + "EphemeralContainers[*].EphemeralContainerCommon.SecurityContext.Capabilities", + "EphemeralContainers[*].EphemeralContainerCommon.SecurityContext.Privileged", + "EphemeralContainers[*].EphemeralContainerCommon.SecurityContext.ProcMount", + "EphemeralContainers[*].EphemeralContainerCommon.SecurityContext.ReadOnlyRootFilesystem", + "EphemeralContainers[*].EphemeralContainerCommon.SecurityContext.RunAsGroup", + "EphemeralContainers[*].EphemeralContainerCommon.SecurityContext.RunAsUser", + "EphemeralContainers[*].EphemeralContainerCommon.SecurityContext.SELinuxOptions", + "EphemeralContainers[*].EphemeralContainerCommon.SecurityContext.SeccompProfile", + "EphemeralContainers[*].EphemeralContainerCommon.SecurityContext.WindowsOptions", + "OS", + "SecurityContext.FSGroup", + "SecurityContext.FSGroupChangePolicy", + "SecurityContext.HostIPC", + "SecurityContext.HostNetwork", + "SecurityContext.HostPID", + "SecurityContext.RunAsGroup", + "SecurityContext.RunAsUser", + "SecurityContext.SELinuxOptions", + "SecurityContext.SeccompProfile", + "SecurityContext.ShareProcessNamespace", + "SecurityContext.SupplementalGroups", + "SecurityContext.Sysctls", + "SecurityContext.WindowsOptions", + ) + osNeutralFields := sets.NewString( + "ActiveDeadlineSeconds", + "Affinity", + "AutomountServiceAccountToken", + "Containers[*].Args", + "Containers[*].Command", + "Containers[*].Env", + "Containers[*].EnvFrom", + "Containers[*].Image", + "Containers[*].ImagePullPolicy", + "Containers[*].Lifecycle", + "Containers[*].LivenessProbe", + "Containers[*].Name", + "Containers[*].Ports", + "Containers[*].ReadinessProbe", + "Containers[*].Resources", + "Containers[*].SecurityContext.RunAsNonRoot", + "Containers[*].Stdin", + "Containers[*].StdinOnce", + "Containers[*].StartupProbe", + "Containers[*].VolumeDevices[*]", + "Containers[*].VolumeMounts[*]", + "Containers[*].TTY", + "Containers[*].TerminationMessagePath", + "Containers[*].TerminationMessagePolicy", + "Containers[*].WorkingDir", + "DNSPolicy", + "EnableServiceLinks", + "EphemeralContainers[*].EphemeralContainerCommon.Args", + "EphemeralContainers[*].EphemeralContainerCommon.Command", + "EphemeralContainers[*].EphemeralContainerCommon.Env", + "EphemeralContainers[*].EphemeralContainerCommon.EnvFrom", + "EphemeralContainers[*].EphemeralContainerCommon.Image", + "EphemeralContainers[*].EphemeralContainerCommon.ImagePullPolicy", + "EphemeralContainers[*].EphemeralContainerCommon.Lifecycle", + "EphemeralContainers[*].EphemeralContainerCommon.LivenessProbe", + "EphemeralContainers[*].EphemeralContainerCommon.Name", + "EphemeralContainers[*].EphemeralContainerCommon.Ports", + "EphemeralContainers[*].EphemeralContainerCommon.ReadinessProbe", + "EphemeralContainers[*].EphemeralContainerCommon.Resources", + "EphemeralContainers[*].EphemeralContainerCommon.Stdin", + "EphemeralContainers[*].EphemeralContainerCommon.StdinOnce", + "EphemeralContainers[*].EphemeralContainerCommon.TTY", + "EphemeralContainers[*].EphemeralContainerCommon.TerminationMessagePath", + "EphemeralContainers[*].EphemeralContainerCommon.TerminationMessagePolicy", + "EphemeralContainers[*].EphemeralContainerCommon.WorkingDir", + "EphemeralContainers[*].TargetContainerName", + "EphemeralContainers[*].EphemeralContainerCommon.SecurityContext.RunAsNonRoot", + "EphemeralContainers[*].EphemeralContainerCommon.StartupProbe", + "EphemeralContainers[*].EphemeralContainerCommon.VolumeDevices[*]", + "EphemeralContainers[*].EphemeralContainerCommon.VolumeMounts[*]", + "HostAliases", + "Hostname", + "ImagePullSecrets", + "InitContainers[*].Args", + "InitContainers[*].Command", + "InitContainers[*].Env", + "InitContainers[*].EnvFrom", + "InitContainers[*].Image", + "InitContainers[*].ImagePullPolicy", + "InitContainers[*].Lifecycle", + "InitContainers[*].LivenessProbe", + "InitContainers[*].Name", + "InitContainers[*].Ports", + "InitContainers[*].ReadinessProbe", + "InitContainers[*].Resources", + "InitContainers[*].Stdin", + "InitContainers[*].StdinOnce", + "InitContainers[*].TTY", + "InitContainers[*].TerminationMessagePath", + "InitContainers[*].TerminationMessagePolicy", + "InitContainers[*].WorkingDir", + "InitContainers[*].SecurityContext.RunAsNonRoot", + "InitContainers[*].StartupProbe", + "InitContainers[*].VolumeDevices[*]", + "InitContainers[*].VolumeMounts[*]", + "NodeName", + "NodeSelector", + "PreemptionPolicy", + "Priority", + "PriorityClassName", + "ReadinessGates", + "RestartPolicy", + "RuntimeClassName", + "SchedulerName", + "SecurityContext.RunAsNonRoot", + "ServiceAccountName", + "SetHostnameAsFQDN", + "Subdomain", + "TerminationGracePeriodSeconds", + "Volumes", + "DNSConfig", + "Overhead", + "Tolerations", + "TopologySpreadConstraints", + ) + + expect := sets.NewString().Union(osSpecificFields).Union(osNeutralFields) + + result := collectResourcePaths(t, expect, reflect.TypeOf(&core.PodSpec{}), nil) + + if !expect.Equal(result) { + // expected fields missing from result + missing := expect.Difference(result) + // unexpected fields in result but not specified in expect + unexpected := result.Difference(expect) + if len(missing) > 0 { + t.Errorf("the following fields were expected, but missing from the result. "+ + "If the field has been removed, please remove it from the osNeutralFields set "+ + "or remove it from the osSpecificFields set, as appropriate:\n%s", + strings.Join(missing.List(), "\n")) + } + if len(unexpected) > 0 { + t.Errorf("the following fields were in the result, but unexpected. "+ + "If the field is new, please add it to the osNeutralFields set "+ + "or add it to the osSpecificFields set, as appropriate:\n%s", + strings.Join(unexpected.List(), "\n")) + } + } +} + +// collectResourcePaths traverses the object, computing all the struct paths. +func collectResourcePaths(t *testing.T, skipRecurseList sets.String, tp reflect.Type, path *field.Path) sets.String { + if pathStr := path.String(); len(pathStr) > 0 && skipRecurseList.Has(pathStr) { + return sets.NewString(pathStr) + } + + paths := sets.NewString() + switch tp.Kind() { + case reflect.Ptr: + paths.Insert(collectResourcePaths(t, skipRecurseList, tp.Elem(), path).List()...) + case reflect.Struct: + for i := 0; i < tp.NumField(); i++ { + field := tp.Field(i) + paths.Insert(collectResourcePaths(t, skipRecurseList, field.Type, path.Child(field.Name)).List()...) + } + case reflect.Map, reflect.Slice: + paths.Insert(collectResourcePaths(t, skipRecurseList, tp.Elem(), path.Key("*")).List()...) + case reflect.Interface: + t.Fatalf("unexpected interface{} field %s", path.String()) + default: + // if we hit a primitive type, we're at a leaf + paths.Insert(path.String()) + } + return paths +} + func TestValidateTLSSecret(t *testing.T) { successCases := map[string]core.Secret{ "empty certificate chain": { @@ -16774,6 +17295,75 @@ func TestValidateTLSSecret(t *testing.T) { } } +func TestValidateLinuxSecurityContext(t *testing.T) { + runAsUser := int64(1) + validLinuxSC := &core.SecurityContext{ + Privileged: utilpointer.BoolPtr(false), + Capabilities: &core.Capabilities{ + Add: []core.Capability{"foo"}, + Drop: []core.Capability{"bar"}, + }, + SELinuxOptions: &core.SELinuxOptions{ + User: "user", + Role: "role", + Type: "type", + Level: "level", + }, + RunAsUser: &runAsUser, + } + invalidLinuxSC := &core.SecurityContext{ + WindowsOptions: &core.WindowsSecurityContextOptions{RunAsUserName: utilpointer.String("myUser")}, + } + cases := map[string]struct { + sc *core.PodSpec + expectErr bool + errorType field.ErrorType + errorDetail string + featureEnabled bool + }{ + "valid SC, linux, no error": { + sc: &core.PodSpec{Containers: []core.Container{{SecurityContext: validLinuxSC}}}, + expectErr: false, + featureEnabled: true, + }, + "invalid SC, linux, error": { + sc: &core.PodSpec{Containers: []core.Container{{SecurityContext: invalidLinuxSC}}}, + errorType: "FieldValueForbidden", + errorDetail: "windows options cannot be set for a linux pod", + expectErr: true, + featureEnabled: true, + }, + "valid SC, linux, no error, no IdentifyPodOS featuregate": { + sc: &core.PodSpec{Containers: []core.Container{{SecurityContext: validLinuxSC}}}, + expectErr: false, + featureEnabled: false, + }, + "invalid SC, linux, error, no IdentifyPodOS featuregate": { + sc: &core.PodSpec{Containers: []core.Container{{SecurityContext: invalidLinuxSC}}}, + errorType: "FieldValueForbidden", + errorDetail: "windows options cannot be set for a linux pod", + expectErr: true, + featureEnabled: false, + }, + } + for k, v := range cases { + t.Run(k, func(t *testing.T) { + defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IdentifyPodOS, v.featureEnabled)() + errs := validateLinux(v.sc, field.NewPath("field")) + if v.expectErr && len(errs) > 0 { + if errs[0].Type != v.errorType || !strings.Contains(errs[0].Detail, v.errorDetail) { + t.Errorf("[%s] Expected error type %q with detail %q, got %v", k, v.errorType, v.errorDetail, errs) + } + } else if v.expectErr && len(errs) == 0 { + t.Errorf("Unexpected success") + } + if !v.expectErr && len(errs) != 0 { + t.Errorf("Unexpected error(s): %v", errs) + } + }) + } +} + func TestValidateSecurityContext(t *testing.T) { runAsUser := int64(1) fullValidSC := func() *core.SecurityContext { @@ -19145,3 +19735,92 @@ func TestValidateWindowsHostProcessPod(t *testing.T) { }) } } + +func TestValidateOS(t *testing.T) { + testCases := []struct { + name string + expectError bool + featureEnabled bool + podSpec *core.PodSpec + }{ + { + name: "no OS field, featuregate", + expectError: false, + featureEnabled: true, + podSpec: &core.PodSpec{OS: nil}, + }, + { + name: "empty OS field, featuregate", + expectError: true, + featureEnabled: true, + podSpec: &core.PodSpec{OS: &core.PodOS{}}, + }, + { + name: "no OS field, no featuregate", + expectError: false, + featureEnabled: false, + podSpec: &core.PodSpec{OS: nil}, + }, + { + name: "empty OS field, no featuregate", + expectError: true, + featureEnabled: false, + podSpec: &core.PodSpec{OS: &core.PodOS{}}, + }, + { + name: "OS field, featuregate, valid OS", + expectError: false, + featureEnabled: true, + podSpec: &core.PodSpec{OS: &core.PodOS{Name: core.Linux}}, + }, + { + name: "OS field, featuregate, valid OS", + expectError: false, + featureEnabled: true, + podSpec: &core.PodSpec{OS: &core.PodOS{Name: core.Windows}}, + }, + { + name: "OS field, featuregate, empty OS", + expectError: true, + featureEnabled: true, + podSpec: &core.PodSpec{OS: &core.PodOS{Name: ""}}, + }, + { + name: "OS field, no featuregate, empty OS", + expectError: true, + featureEnabled: false, + podSpec: &core.PodSpec{OS: &core.PodOS{Name: ""}}, + }, + { + name: "OS field, featuregate, invalid OS", + expectError: true, + featureEnabled: true, + podSpec: &core.PodSpec{OS: &core.PodOS{Name: "dummyOS"}}, + }, + { + name: "OS field, no featuregate, valid OS", + expectError: true, + featureEnabled: false, + podSpec: &core.PodSpec{OS: &core.PodOS{Name: core.Linux}}, + }, + { + name: "OS field, no featuregate, invalid OS", + expectError: true, + featureEnabled: false, + podSpec: &core.PodSpec{OS: &core.PodOS{Name: "dummyOS"}}, + }, + } + for _, testCase := range testCases { + t.Run(testCase.name, func(t *testing.T) { + defer featuregatetesting.SetFeatureGateDuringTest(t, utilfeature.DefaultFeatureGate, features.IdentifyPodOS, testCase.featureEnabled)() + + errs := validateOS(testCase.podSpec, field.NewPath("spec"), PodValidationOptions{AllowOSField: testCase.featureEnabled}) + if testCase.expectError && len(errs) == 0 { + t.Errorf("Unexpected success") + } + if !testCase.expectError && len(errs) != 0 { + t.Errorf("Unexpected error(s): %v", errs) + } + }) + } +} From 41f8f95fc5dee7613673dc6edd98a85c2c1d4c18 Mon Sep 17 00:00:00 2001 From: ravisantoshgudimetla Date: Thu, 14 Oct 2021 23:45:20 -0400 Subject: [PATCH 4/5] generated: Add os field to Pod Spec --- api/openapi-spec/swagger.json | 55 +- pkg/apis/core/v1/zz_generated.conversion.go | 32 + pkg/apis/core/zz_generated.deepcopy.go | 21 + .../src/k8s.io/api/core/v1/generated.pb.go | 2133 +++++++++-------- .../src/k8s.io/api/core/v1/generated.proto | 59 + .../core/v1/types_swagger_doc_generated.go | 46 +- .../api/core/v1/zz_generated.deepcopy.go | 21 + .../applyconfigurations/core/v1/podos.go | 43 + .../applyconfigurations/core/v1/podspec.go | 9 + .../applyconfigurations/internal/internal.go | 10 + .../client-go/applyconfigurations/utils.go | 2 + 11 files changed, 1436 insertions(+), 995 deletions(-) create mode 100644 staging/src/k8s.io/client-go/applyconfigurations/core/v1/podos.go diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index ee11b75a866..941d4f01912 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -7687,6 +7687,19 @@ } ] }, + "io.k8s.api.core.v1.PodOS": { + "description": "PodOS defines the OS parameters of a pod.", + "properties": { + "name": { + "description": "Name is the name of the operating system. The currently supported values are linux and windows. Additional value may be defined in future and can be one of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration Clients should expect to handle additional values and treat unrecognized values in this field as os: null", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, "io.k8s.api.core.v1.PodReadinessGate": { "description": "PodReadinessGate contains the reference to a pod condition", "properties": { @@ -7704,16 +7717,16 @@ "description": "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.", "properties": { "fsGroup": { - "description": "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.", + "description": "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows.", "format": "int64", "type": "integer" }, "fsGroupChangePolicy": { - "description": "fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used.", + "description": "fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows.", "type": "string" }, "runAsGroup": { - "description": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", + "description": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.", "format": "int64", "type": "integer" }, @@ -7722,20 +7735,20 @@ "type": "boolean" }, "runAsUser": { - "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", + "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.", "format": "int64", "type": "integer" }, "seLinuxOptions": { "$ref": "#/definitions/io.k8s.api.core.v1.SELinuxOptions", - "description": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container." + "description": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows." }, "seccompProfile": { "$ref": "#/definitions/io.k8s.api.core.v1.SeccompProfile", - "description": "The seccomp options to use by the containers in this pod." + "description": "The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows." }, "supplementalGroups": { - "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", + "description": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. Note that this field cannot be set when spec.os.name is windows.", "items": { "format": "int64", "type": "integer" @@ -7743,7 +7756,7 @@ "type": "array" }, "sysctls": { - "description": "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.", + "description": "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.", "items": { "$ref": "#/definitions/io.k8s.api.core.v1.Sysctl" }, @@ -7751,7 +7764,7 @@ }, "windowsOptions": { "$ref": "#/definitions/io.k8s.api.core.v1.WindowsSecurityContextOptions", - "description": "The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." + "description": "The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux." } }, "type": "object" @@ -7857,6 +7870,10 @@ "type": "object", "x-kubernetes-map-type": "atomic" }, + "os": { + "$ref": "#/definitions/io.k8s.api.core.v1.PodOS", + "description": "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup This is an alpha field and requires the IdentifyPodOS feature" + }, "overhead": { "additionalProperties": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.api.resource.Quantity" @@ -9064,27 +9081,27 @@ "description": "SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.", "properties": { "allowPrivilegeEscalation": { - "description": "AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN", + "description": "AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.", "type": "boolean" }, "capabilities": { "$ref": "#/definitions/io.k8s.api.core.v1.Capabilities", - "description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime." + "description": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows." }, "privileged": { - "description": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.", + "description": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.", "type": "boolean" }, "procMount": { - "description": "procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled.", + "description": "procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.", "type": "string" }, "readOnlyRootFilesystem": { - "description": "Whether this container has a read-only root filesystem. Default is false.", + "description": "Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.", "type": "boolean" }, "runAsGroup": { - "description": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "description": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.", "format": "int64", "type": "integer" }, @@ -9093,21 +9110,21 @@ "type": "boolean" }, "runAsUser": { - "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "description": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.", "format": "int64", "type": "integer" }, "seLinuxOptions": { "$ref": "#/definitions/io.k8s.api.core.v1.SELinuxOptions", - "description": "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." + "description": "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows." }, "seccompProfile": { "$ref": "#/definitions/io.k8s.api.core.v1.SeccompProfile", - "description": "The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options." + "description": "The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows." }, "windowsOptions": { "$ref": "#/definitions/io.k8s.api.core.v1.WindowsSecurityContextOptions", - "description": "The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." + "description": "The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux." } }, "type": "object" diff --git a/pkg/apis/core/v1/zz_generated.conversion.go b/pkg/apis/core/v1/zz_generated.conversion.go index 9e4aa8425a9..f02bf0dedd7 100644 --- a/pkg/apis/core/v1/zz_generated.conversion.go +++ b/pkg/apis/core/v1/zz_generated.conversion.go @@ -1302,6 +1302,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddGeneratedConversionFunc((*v1.PodOS)(nil), (*core.PodOS)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_PodOS_To_core_PodOS(a.(*v1.PodOS), b.(*core.PodOS), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*core.PodOS)(nil), (*v1.PodOS)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_core_PodOS_To_v1_PodOS(a.(*core.PodOS), b.(*v1.PodOS), scope) + }); err != nil { + return err + } if err := s.AddGeneratedConversionFunc((*v1.PodPortForwardOptions)(nil), (*core.PodPortForwardOptions)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1_PodPortForwardOptions_To_core_PodPortForwardOptions(a.(*v1.PodPortForwardOptions), b.(*core.PodPortForwardOptions), scope) }); err != nil { @@ -5895,6 +5905,26 @@ func Convert_url_Values_To_v1_PodLogOptions(in *url.Values, out *v1.PodLogOption return autoConvert_url_Values_To_v1_PodLogOptions(in, out, s) } +func autoConvert_v1_PodOS_To_core_PodOS(in *v1.PodOS, out *core.PodOS, s conversion.Scope) error { + out.Name = core.OSName(in.Name) + return nil +} + +// Convert_v1_PodOS_To_core_PodOS is an autogenerated conversion function. +func Convert_v1_PodOS_To_core_PodOS(in *v1.PodOS, out *core.PodOS, s conversion.Scope) error { + return autoConvert_v1_PodOS_To_core_PodOS(in, out, s) +} + +func autoConvert_core_PodOS_To_v1_PodOS(in *core.PodOS, out *v1.PodOS, s conversion.Scope) error { + out.Name = v1.OSName(in.Name) + return nil +} + +// Convert_core_PodOS_To_v1_PodOS is an autogenerated conversion function. +func Convert_core_PodOS_To_v1_PodOS(in *core.PodOS, out *v1.PodOS, s conversion.Scope) error { + return autoConvert_core_PodOS_To_v1_PodOS(in, out, s) +} + func autoConvert_v1_PodPortForwardOptions_To_core_PodPortForwardOptions(in *v1.PodPortForwardOptions, out *core.PodPortForwardOptions, s conversion.Scope) error { out.Ports = *(*[]int32)(unsafe.Pointer(&in.Ports)) return nil @@ -6107,6 +6137,7 @@ func autoConvert_v1_PodSpec_To_core_PodSpec(in *v1.PodSpec, out *core.PodSpec, s out.Overhead = *(*core.ResourceList)(unsafe.Pointer(&in.Overhead)) out.TopologySpreadConstraints = *(*[]core.TopologySpreadConstraint)(unsafe.Pointer(&in.TopologySpreadConstraints)) out.SetHostnameAsFQDN = (*bool)(unsafe.Pointer(in.SetHostnameAsFQDN)) + out.OS = (*core.PodOS)(unsafe.Pointer(in.OS)) return nil } @@ -6159,6 +6190,7 @@ func autoConvert_core_PodSpec_To_v1_PodSpec(in *core.PodSpec, out *v1.PodSpec, s out.Overhead = *(*v1.ResourceList)(unsafe.Pointer(&in.Overhead)) out.EnableServiceLinks = (*bool)(unsafe.Pointer(in.EnableServiceLinks)) out.TopologySpreadConstraints = *(*[]v1.TopologySpreadConstraint)(unsafe.Pointer(&in.TopologySpreadConstraints)) + out.OS = (*v1.PodOS)(unsafe.Pointer(in.OS)) return nil } diff --git a/pkg/apis/core/zz_generated.deepcopy.go b/pkg/apis/core/zz_generated.deepcopy.go index 335db4aba31..aece1f4adf6 100644 --- a/pkg/apis/core/zz_generated.deepcopy.go +++ b/pkg/apis/core/zz_generated.deepcopy.go @@ -3603,6 +3603,22 @@ func (in *PodLogOptions) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodOS) DeepCopyInto(out *PodOS) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodOS. +func (in *PodOS) DeepCopy() *PodOS { + if in == nil { + return nil + } + out := new(PodOS) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PodPortForwardOptions) DeepCopyInto(out *PodPortForwardOptions) { *out = *in @@ -3897,6 +3913,11 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.OS != nil { + in, out := &in.OS, &out.OS + *out = new(PodOS) + **out = **in + } return } diff --git a/staging/src/k8s.io/api/core/v1/generated.pb.go b/staging/src/k8s.io/api/core/v1/generated.pb.go index 2594443719b..b9030376b50 100644 --- a/staging/src/k8s.io/api/core/v1/generated.pb.go +++ b/staging/src/k8s.io/api/core/v1/generated.pb.go @@ -3689,10 +3689,38 @@ func (m *PodLogOptions) XXX_DiscardUnknown() { var xxx_messageInfo_PodLogOptions proto.InternalMessageInfo +func (m *PodOS) Reset() { *m = PodOS{} } +func (*PodOS) ProtoMessage() {} +func (*PodOS) Descriptor() ([]byte, []int) { + return fileDescriptor_83c10c24ec417dc9, []int{130} +} +func (m *PodOS) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PodOS) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *PodOS) XXX_Merge(src proto.Message) { + xxx_messageInfo_PodOS.Merge(m, src) +} +func (m *PodOS) XXX_Size() int { + return m.Size() +} +func (m *PodOS) XXX_DiscardUnknown() { + xxx_messageInfo_PodOS.DiscardUnknown(m) +} + +var xxx_messageInfo_PodOS proto.InternalMessageInfo + func (m *PodPortForwardOptions) Reset() { *m = PodPortForwardOptions{} } func (*PodPortForwardOptions) ProtoMessage() {} func (*PodPortForwardOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{130} + return fileDescriptor_83c10c24ec417dc9, []int{131} } func (m *PodPortForwardOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3720,7 +3748,7 @@ var xxx_messageInfo_PodPortForwardOptions proto.InternalMessageInfo func (m *PodProxyOptions) Reset() { *m = PodProxyOptions{} } func (*PodProxyOptions) ProtoMessage() {} func (*PodProxyOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{131} + return fileDescriptor_83c10c24ec417dc9, []int{132} } func (m *PodProxyOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3748,7 +3776,7 @@ var xxx_messageInfo_PodProxyOptions proto.InternalMessageInfo func (m *PodReadinessGate) Reset() { *m = PodReadinessGate{} } func (*PodReadinessGate) ProtoMessage() {} func (*PodReadinessGate) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{132} + return fileDescriptor_83c10c24ec417dc9, []int{133} } func (m *PodReadinessGate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3776,7 +3804,7 @@ var xxx_messageInfo_PodReadinessGate proto.InternalMessageInfo func (m *PodSecurityContext) Reset() { *m = PodSecurityContext{} } func (*PodSecurityContext) ProtoMessage() {} func (*PodSecurityContext) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{133} + return fileDescriptor_83c10c24ec417dc9, []int{134} } func (m *PodSecurityContext) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3804,7 +3832,7 @@ var xxx_messageInfo_PodSecurityContext proto.InternalMessageInfo func (m *PodSignature) Reset() { *m = PodSignature{} } func (*PodSignature) ProtoMessage() {} func (*PodSignature) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{134} + return fileDescriptor_83c10c24ec417dc9, []int{135} } func (m *PodSignature) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3832,7 +3860,7 @@ var xxx_messageInfo_PodSignature proto.InternalMessageInfo func (m *PodSpec) Reset() { *m = PodSpec{} } func (*PodSpec) ProtoMessage() {} func (*PodSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{135} + return fileDescriptor_83c10c24ec417dc9, []int{136} } func (m *PodSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3860,7 +3888,7 @@ var xxx_messageInfo_PodSpec proto.InternalMessageInfo func (m *PodStatus) Reset() { *m = PodStatus{} } func (*PodStatus) ProtoMessage() {} func (*PodStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{136} + return fileDescriptor_83c10c24ec417dc9, []int{137} } func (m *PodStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3888,7 +3916,7 @@ var xxx_messageInfo_PodStatus proto.InternalMessageInfo func (m *PodStatusResult) Reset() { *m = PodStatusResult{} } func (*PodStatusResult) ProtoMessage() {} func (*PodStatusResult) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{137} + return fileDescriptor_83c10c24ec417dc9, []int{138} } func (m *PodStatusResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3916,7 +3944,7 @@ var xxx_messageInfo_PodStatusResult proto.InternalMessageInfo func (m *PodTemplate) Reset() { *m = PodTemplate{} } func (*PodTemplate) ProtoMessage() {} func (*PodTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{138} + return fileDescriptor_83c10c24ec417dc9, []int{139} } func (m *PodTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3944,7 +3972,7 @@ var xxx_messageInfo_PodTemplate proto.InternalMessageInfo func (m *PodTemplateList) Reset() { *m = PodTemplateList{} } func (*PodTemplateList) ProtoMessage() {} func (*PodTemplateList) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{139} + return fileDescriptor_83c10c24ec417dc9, []int{140} } func (m *PodTemplateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3972,7 +4000,7 @@ var xxx_messageInfo_PodTemplateList proto.InternalMessageInfo func (m *PodTemplateSpec) Reset() { *m = PodTemplateSpec{} } func (*PodTemplateSpec) ProtoMessage() {} func (*PodTemplateSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{140} + return fileDescriptor_83c10c24ec417dc9, []int{141} } func (m *PodTemplateSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4000,7 +4028,7 @@ var xxx_messageInfo_PodTemplateSpec proto.InternalMessageInfo func (m *PortStatus) Reset() { *m = PortStatus{} } func (*PortStatus) ProtoMessage() {} func (*PortStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{141} + return fileDescriptor_83c10c24ec417dc9, []int{142} } func (m *PortStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4028,7 +4056,7 @@ var xxx_messageInfo_PortStatus proto.InternalMessageInfo func (m *PortworxVolumeSource) Reset() { *m = PortworxVolumeSource{} } func (*PortworxVolumeSource) ProtoMessage() {} func (*PortworxVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{142} + return fileDescriptor_83c10c24ec417dc9, []int{143} } func (m *PortworxVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4056,7 +4084,7 @@ var xxx_messageInfo_PortworxVolumeSource proto.InternalMessageInfo func (m *Preconditions) Reset() { *m = Preconditions{} } func (*Preconditions) ProtoMessage() {} func (*Preconditions) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{143} + return fileDescriptor_83c10c24ec417dc9, []int{144} } func (m *Preconditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4084,7 +4112,7 @@ var xxx_messageInfo_Preconditions proto.InternalMessageInfo func (m *PreferAvoidPodsEntry) Reset() { *m = PreferAvoidPodsEntry{} } func (*PreferAvoidPodsEntry) ProtoMessage() {} func (*PreferAvoidPodsEntry) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{144} + return fileDescriptor_83c10c24ec417dc9, []int{145} } func (m *PreferAvoidPodsEntry) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4112,7 +4140,7 @@ var xxx_messageInfo_PreferAvoidPodsEntry proto.InternalMessageInfo func (m *PreferredSchedulingTerm) Reset() { *m = PreferredSchedulingTerm{} } func (*PreferredSchedulingTerm) ProtoMessage() {} func (*PreferredSchedulingTerm) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{145} + return fileDescriptor_83c10c24ec417dc9, []int{146} } func (m *PreferredSchedulingTerm) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4140,7 +4168,7 @@ var xxx_messageInfo_PreferredSchedulingTerm proto.InternalMessageInfo func (m *Probe) Reset() { *m = Probe{} } func (*Probe) ProtoMessage() {} func (*Probe) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{146} + return fileDescriptor_83c10c24ec417dc9, []int{147} } func (m *Probe) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4168,7 +4196,7 @@ var xxx_messageInfo_Probe proto.InternalMessageInfo func (m *ProjectedVolumeSource) Reset() { *m = ProjectedVolumeSource{} } func (*ProjectedVolumeSource) ProtoMessage() {} func (*ProjectedVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{147} + return fileDescriptor_83c10c24ec417dc9, []int{148} } func (m *ProjectedVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4196,7 +4224,7 @@ var xxx_messageInfo_ProjectedVolumeSource proto.InternalMessageInfo func (m *QuobyteVolumeSource) Reset() { *m = QuobyteVolumeSource{} } func (*QuobyteVolumeSource) ProtoMessage() {} func (*QuobyteVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{148} + return fileDescriptor_83c10c24ec417dc9, []int{149} } func (m *QuobyteVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4224,7 +4252,7 @@ var xxx_messageInfo_QuobyteVolumeSource proto.InternalMessageInfo func (m *RBDPersistentVolumeSource) Reset() { *m = RBDPersistentVolumeSource{} } func (*RBDPersistentVolumeSource) ProtoMessage() {} func (*RBDPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{149} + return fileDescriptor_83c10c24ec417dc9, []int{150} } func (m *RBDPersistentVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4252,7 +4280,7 @@ var xxx_messageInfo_RBDPersistentVolumeSource proto.InternalMessageInfo func (m *RBDVolumeSource) Reset() { *m = RBDVolumeSource{} } func (*RBDVolumeSource) ProtoMessage() {} func (*RBDVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{150} + return fileDescriptor_83c10c24ec417dc9, []int{151} } func (m *RBDVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4280,7 +4308,7 @@ var xxx_messageInfo_RBDVolumeSource proto.InternalMessageInfo func (m *RangeAllocation) Reset() { *m = RangeAllocation{} } func (*RangeAllocation) ProtoMessage() {} func (*RangeAllocation) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{151} + return fileDescriptor_83c10c24ec417dc9, []int{152} } func (m *RangeAllocation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4308,7 +4336,7 @@ var xxx_messageInfo_RangeAllocation proto.InternalMessageInfo func (m *ReplicationController) Reset() { *m = ReplicationController{} } func (*ReplicationController) ProtoMessage() {} func (*ReplicationController) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{152} + return fileDescriptor_83c10c24ec417dc9, []int{153} } func (m *ReplicationController) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4336,7 +4364,7 @@ var xxx_messageInfo_ReplicationController proto.InternalMessageInfo func (m *ReplicationControllerCondition) Reset() { *m = ReplicationControllerCondition{} } func (*ReplicationControllerCondition) ProtoMessage() {} func (*ReplicationControllerCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{153} + return fileDescriptor_83c10c24ec417dc9, []int{154} } func (m *ReplicationControllerCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4364,7 +4392,7 @@ var xxx_messageInfo_ReplicationControllerCondition proto.InternalMessageInfo func (m *ReplicationControllerList) Reset() { *m = ReplicationControllerList{} } func (*ReplicationControllerList) ProtoMessage() {} func (*ReplicationControllerList) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{154} + return fileDescriptor_83c10c24ec417dc9, []int{155} } func (m *ReplicationControllerList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4392,7 +4420,7 @@ var xxx_messageInfo_ReplicationControllerList proto.InternalMessageInfo func (m *ReplicationControllerSpec) Reset() { *m = ReplicationControllerSpec{} } func (*ReplicationControllerSpec) ProtoMessage() {} func (*ReplicationControllerSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{155} + return fileDescriptor_83c10c24ec417dc9, []int{156} } func (m *ReplicationControllerSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4420,7 +4448,7 @@ var xxx_messageInfo_ReplicationControllerSpec proto.InternalMessageInfo func (m *ReplicationControllerStatus) Reset() { *m = ReplicationControllerStatus{} } func (*ReplicationControllerStatus) ProtoMessage() {} func (*ReplicationControllerStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{156} + return fileDescriptor_83c10c24ec417dc9, []int{157} } func (m *ReplicationControllerStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4448,7 +4476,7 @@ var xxx_messageInfo_ReplicationControllerStatus proto.InternalMessageInfo func (m *ResourceFieldSelector) Reset() { *m = ResourceFieldSelector{} } func (*ResourceFieldSelector) ProtoMessage() {} func (*ResourceFieldSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{157} + return fileDescriptor_83c10c24ec417dc9, []int{158} } func (m *ResourceFieldSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4476,7 +4504,7 @@ var xxx_messageInfo_ResourceFieldSelector proto.InternalMessageInfo func (m *ResourceQuota) Reset() { *m = ResourceQuota{} } func (*ResourceQuota) ProtoMessage() {} func (*ResourceQuota) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{158} + return fileDescriptor_83c10c24ec417dc9, []int{159} } func (m *ResourceQuota) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4504,7 +4532,7 @@ var xxx_messageInfo_ResourceQuota proto.InternalMessageInfo func (m *ResourceQuotaList) Reset() { *m = ResourceQuotaList{} } func (*ResourceQuotaList) ProtoMessage() {} func (*ResourceQuotaList) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{159} + return fileDescriptor_83c10c24ec417dc9, []int{160} } func (m *ResourceQuotaList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4532,7 +4560,7 @@ var xxx_messageInfo_ResourceQuotaList proto.InternalMessageInfo func (m *ResourceQuotaSpec) Reset() { *m = ResourceQuotaSpec{} } func (*ResourceQuotaSpec) ProtoMessage() {} func (*ResourceQuotaSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{160} + return fileDescriptor_83c10c24ec417dc9, []int{161} } func (m *ResourceQuotaSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4560,7 +4588,7 @@ var xxx_messageInfo_ResourceQuotaSpec proto.InternalMessageInfo func (m *ResourceQuotaStatus) Reset() { *m = ResourceQuotaStatus{} } func (*ResourceQuotaStatus) ProtoMessage() {} func (*ResourceQuotaStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{161} + return fileDescriptor_83c10c24ec417dc9, []int{162} } func (m *ResourceQuotaStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4588,7 +4616,7 @@ var xxx_messageInfo_ResourceQuotaStatus proto.InternalMessageInfo func (m *ResourceRequirements) Reset() { *m = ResourceRequirements{} } func (*ResourceRequirements) ProtoMessage() {} func (*ResourceRequirements) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{162} + return fileDescriptor_83c10c24ec417dc9, []int{163} } func (m *ResourceRequirements) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4616,7 +4644,7 @@ var xxx_messageInfo_ResourceRequirements proto.InternalMessageInfo func (m *SELinuxOptions) Reset() { *m = SELinuxOptions{} } func (*SELinuxOptions) ProtoMessage() {} func (*SELinuxOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{163} + return fileDescriptor_83c10c24ec417dc9, []int{164} } func (m *SELinuxOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4644,7 +4672,7 @@ var xxx_messageInfo_SELinuxOptions proto.InternalMessageInfo func (m *ScaleIOPersistentVolumeSource) Reset() { *m = ScaleIOPersistentVolumeSource{} } func (*ScaleIOPersistentVolumeSource) ProtoMessage() {} func (*ScaleIOPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{164} + return fileDescriptor_83c10c24ec417dc9, []int{165} } func (m *ScaleIOPersistentVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4672,7 +4700,7 @@ var xxx_messageInfo_ScaleIOPersistentVolumeSource proto.InternalMessageInfo func (m *ScaleIOVolumeSource) Reset() { *m = ScaleIOVolumeSource{} } func (*ScaleIOVolumeSource) ProtoMessage() {} func (*ScaleIOVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{165} + return fileDescriptor_83c10c24ec417dc9, []int{166} } func (m *ScaleIOVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4700,7 +4728,7 @@ var xxx_messageInfo_ScaleIOVolumeSource proto.InternalMessageInfo func (m *ScopeSelector) Reset() { *m = ScopeSelector{} } func (*ScopeSelector) ProtoMessage() {} func (*ScopeSelector) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{166} + return fileDescriptor_83c10c24ec417dc9, []int{167} } func (m *ScopeSelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4728,7 +4756,7 @@ var xxx_messageInfo_ScopeSelector proto.InternalMessageInfo func (m *ScopedResourceSelectorRequirement) Reset() { *m = ScopedResourceSelectorRequirement{} } func (*ScopedResourceSelectorRequirement) ProtoMessage() {} func (*ScopedResourceSelectorRequirement) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{167} + return fileDescriptor_83c10c24ec417dc9, []int{168} } func (m *ScopedResourceSelectorRequirement) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4756,7 +4784,7 @@ var xxx_messageInfo_ScopedResourceSelectorRequirement proto.InternalMessageInfo func (m *SeccompProfile) Reset() { *m = SeccompProfile{} } func (*SeccompProfile) ProtoMessage() {} func (*SeccompProfile) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{168} + return fileDescriptor_83c10c24ec417dc9, []int{169} } func (m *SeccompProfile) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4784,7 +4812,7 @@ var xxx_messageInfo_SeccompProfile proto.InternalMessageInfo func (m *Secret) Reset() { *m = Secret{} } func (*Secret) ProtoMessage() {} func (*Secret) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{169} + return fileDescriptor_83c10c24ec417dc9, []int{170} } func (m *Secret) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4812,7 +4840,7 @@ var xxx_messageInfo_Secret proto.InternalMessageInfo func (m *SecretEnvSource) Reset() { *m = SecretEnvSource{} } func (*SecretEnvSource) ProtoMessage() {} func (*SecretEnvSource) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{170} + return fileDescriptor_83c10c24ec417dc9, []int{171} } func (m *SecretEnvSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4840,7 +4868,7 @@ var xxx_messageInfo_SecretEnvSource proto.InternalMessageInfo func (m *SecretKeySelector) Reset() { *m = SecretKeySelector{} } func (*SecretKeySelector) ProtoMessage() {} func (*SecretKeySelector) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{171} + return fileDescriptor_83c10c24ec417dc9, []int{172} } func (m *SecretKeySelector) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4868,7 +4896,7 @@ var xxx_messageInfo_SecretKeySelector proto.InternalMessageInfo func (m *SecretList) Reset() { *m = SecretList{} } func (*SecretList) ProtoMessage() {} func (*SecretList) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{172} + return fileDescriptor_83c10c24ec417dc9, []int{173} } func (m *SecretList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4896,7 +4924,7 @@ var xxx_messageInfo_SecretList proto.InternalMessageInfo func (m *SecretProjection) Reset() { *m = SecretProjection{} } func (*SecretProjection) ProtoMessage() {} func (*SecretProjection) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{173} + return fileDescriptor_83c10c24ec417dc9, []int{174} } func (m *SecretProjection) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4924,7 +4952,7 @@ var xxx_messageInfo_SecretProjection proto.InternalMessageInfo func (m *SecretReference) Reset() { *m = SecretReference{} } func (*SecretReference) ProtoMessage() {} func (*SecretReference) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{174} + return fileDescriptor_83c10c24ec417dc9, []int{175} } func (m *SecretReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4952,7 +4980,7 @@ var xxx_messageInfo_SecretReference proto.InternalMessageInfo func (m *SecretVolumeSource) Reset() { *m = SecretVolumeSource{} } func (*SecretVolumeSource) ProtoMessage() {} func (*SecretVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{175} + return fileDescriptor_83c10c24ec417dc9, []int{176} } func (m *SecretVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4980,7 +5008,7 @@ var xxx_messageInfo_SecretVolumeSource proto.InternalMessageInfo func (m *SecurityContext) Reset() { *m = SecurityContext{} } func (*SecurityContext) ProtoMessage() {} func (*SecurityContext) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{176} + return fileDescriptor_83c10c24ec417dc9, []int{177} } func (m *SecurityContext) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5008,7 +5036,7 @@ var xxx_messageInfo_SecurityContext proto.InternalMessageInfo func (m *SerializedReference) Reset() { *m = SerializedReference{} } func (*SerializedReference) ProtoMessage() {} func (*SerializedReference) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{177} + return fileDescriptor_83c10c24ec417dc9, []int{178} } func (m *SerializedReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5036,7 +5064,7 @@ var xxx_messageInfo_SerializedReference proto.InternalMessageInfo func (m *Service) Reset() { *m = Service{} } func (*Service) ProtoMessage() {} func (*Service) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{178} + return fileDescriptor_83c10c24ec417dc9, []int{179} } func (m *Service) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5064,7 +5092,7 @@ var xxx_messageInfo_Service proto.InternalMessageInfo func (m *ServiceAccount) Reset() { *m = ServiceAccount{} } func (*ServiceAccount) ProtoMessage() {} func (*ServiceAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{179} + return fileDescriptor_83c10c24ec417dc9, []int{180} } func (m *ServiceAccount) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5092,7 +5120,7 @@ var xxx_messageInfo_ServiceAccount proto.InternalMessageInfo func (m *ServiceAccountList) Reset() { *m = ServiceAccountList{} } func (*ServiceAccountList) ProtoMessage() {} func (*ServiceAccountList) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{180} + return fileDescriptor_83c10c24ec417dc9, []int{181} } func (m *ServiceAccountList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5120,7 +5148,7 @@ var xxx_messageInfo_ServiceAccountList proto.InternalMessageInfo func (m *ServiceAccountTokenProjection) Reset() { *m = ServiceAccountTokenProjection{} } func (*ServiceAccountTokenProjection) ProtoMessage() {} func (*ServiceAccountTokenProjection) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{181} + return fileDescriptor_83c10c24ec417dc9, []int{182} } func (m *ServiceAccountTokenProjection) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5148,7 +5176,7 @@ var xxx_messageInfo_ServiceAccountTokenProjection proto.InternalMessageInfo func (m *ServiceList) Reset() { *m = ServiceList{} } func (*ServiceList) ProtoMessage() {} func (*ServiceList) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{182} + return fileDescriptor_83c10c24ec417dc9, []int{183} } func (m *ServiceList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5176,7 +5204,7 @@ var xxx_messageInfo_ServiceList proto.InternalMessageInfo func (m *ServicePort) Reset() { *m = ServicePort{} } func (*ServicePort) ProtoMessage() {} func (*ServicePort) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{183} + return fileDescriptor_83c10c24ec417dc9, []int{184} } func (m *ServicePort) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5204,7 +5232,7 @@ var xxx_messageInfo_ServicePort proto.InternalMessageInfo func (m *ServiceProxyOptions) Reset() { *m = ServiceProxyOptions{} } func (*ServiceProxyOptions) ProtoMessage() {} func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{184} + return fileDescriptor_83c10c24ec417dc9, []int{185} } func (m *ServiceProxyOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5232,7 +5260,7 @@ var xxx_messageInfo_ServiceProxyOptions proto.InternalMessageInfo func (m *ServiceSpec) Reset() { *m = ServiceSpec{} } func (*ServiceSpec) ProtoMessage() {} func (*ServiceSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{185} + return fileDescriptor_83c10c24ec417dc9, []int{186} } func (m *ServiceSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5260,7 +5288,7 @@ var xxx_messageInfo_ServiceSpec proto.InternalMessageInfo func (m *ServiceStatus) Reset() { *m = ServiceStatus{} } func (*ServiceStatus) ProtoMessage() {} func (*ServiceStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{186} + return fileDescriptor_83c10c24ec417dc9, []int{187} } func (m *ServiceStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5288,7 +5316,7 @@ var xxx_messageInfo_ServiceStatus proto.InternalMessageInfo func (m *SessionAffinityConfig) Reset() { *m = SessionAffinityConfig{} } func (*SessionAffinityConfig) ProtoMessage() {} func (*SessionAffinityConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{187} + return fileDescriptor_83c10c24ec417dc9, []int{188} } func (m *SessionAffinityConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5316,7 +5344,7 @@ var xxx_messageInfo_SessionAffinityConfig proto.InternalMessageInfo func (m *StorageOSPersistentVolumeSource) Reset() { *m = StorageOSPersistentVolumeSource{} } func (*StorageOSPersistentVolumeSource) ProtoMessage() {} func (*StorageOSPersistentVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{188} + return fileDescriptor_83c10c24ec417dc9, []int{189} } func (m *StorageOSPersistentVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5344,7 +5372,7 @@ var xxx_messageInfo_StorageOSPersistentVolumeSource proto.InternalMessageInfo func (m *StorageOSVolumeSource) Reset() { *m = StorageOSVolumeSource{} } func (*StorageOSVolumeSource) ProtoMessage() {} func (*StorageOSVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{189} + return fileDescriptor_83c10c24ec417dc9, []int{190} } func (m *StorageOSVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5372,7 +5400,7 @@ var xxx_messageInfo_StorageOSVolumeSource proto.InternalMessageInfo func (m *Sysctl) Reset() { *m = Sysctl{} } func (*Sysctl) ProtoMessage() {} func (*Sysctl) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{190} + return fileDescriptor_83c10c24ec417dc9, []int{191} } func (m *Sysctl) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5400,7 +5428,7 @@ var xxx_messageInfo_Sysctl proto.InternalMessageInfo func (m *TCPSocketAction) Reset() { *m = TCPSocketAction{} } func (*TCPSocketAction) ProtoMessage() {} func (*TCPSocketAction) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{191} + return fileDescriptor_83c10c24ec417dc9, []int{192} } func (m *TCPSocketAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5428,7 +5456,7 @@ var xxx_messageInfo_TCPSocketAction proto.InternalMessageInfo func (m *Taint) Reset() { *m = Taint{} } func (*Taint) ProtoMessage() {} func (*Taint) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{192} + return fileDescriptor_83c10c24ec417dc9, []int{193} } func (m *Taint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5456,7 +5484,7 @@ var xxx_messageInfo_Taint proto.InternalMessageInfo func (m *Toleration) Reset() { *m = Toleration{} } func (*Toleration) ProtoMessage() {} func (*Toleration) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{193} + return fileDescriptor_83c10c24ec417dc9, []int{194} } func (m *Toleration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5484,7 +5512,7 @@ var xxx_messageInfo_Toleration proto.InternalMessageInfo func (m *TopologySelectorLabelRequirement) Reset() { *m = TopologySelectorLabelRequirement{} } func (*TopologySelectorLabelRequirement) ProtoMessage() {} func (*TopologySelectorLabelRequirement) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{194} + return fileDescriptor_83c10c24ec417dc9, []int{195} } func (m *TopologySelectorLabelRequirement) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5512,7 +5540,7 @@ var xxx_messageInfo_TopologySelectorLabelRequirement proto.InternalMessageInfo func (m *TopologySelectorTerm) Reset() { *m = TopologySelectorTerm{} } func (*TopologySelectorTerm) ProtoMessage() {} func (*TopologySelectorTerm) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{195} + return fileDescriptor_83c10c24ec417dc9, []int{196} } func (m *TopologySelectorTerm) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5540,7 +5568,7 @@ var xxx_messageInfo_TopologySelectorTerm proto.InternalMessageInfo func (m *TopologySpreadConstraint) Reset() { *m = TopologySpreadConstraint{} } func (*TopologySpreadConstraint) ProtoMessage() {} func (*TopologySpreadConstraint) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{196} + return fileDescriptor_83c10c24ec417dc9, []int{197} } func (m *TopologySpreadConstraint) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5568,7 +5596,7 @@ var xxx_messageInfo_TopologySpreadConstraint proto.InternalMessageInfo func (m *TypedLocalObjectReference) Reset() { *m = TypedLocalObjectReference{} } func (*TypedLocalObjectReference) ProtoMessage() {} func (*TypedLocalObjectReference) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{197} + return fileDescriptor_83c10c24ec417dc9, []int{198} } func (m *TypedLocalObjectReference) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5596,7 +5624,7 @@ var xxx_messageInfo_TypedLocalObjectReference proto.InternalMessageInfo func (m *Volume) Reset() { *m = Volume{} } func (*Volume) ProtoMessage() {} func (*Volume) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{198} + return fileDescriptor_83c10c24ec417dc9, []int{199} } func (m *Volume) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5624,7 +5652,7 @@ var xxx_messageInfo_Volume proto.InternalMessageInfo func (m *VolumeDevice) Reset() { *m = VolumeDevice{} } func (*VolumeDevice) ProtoMessage() {} func (*VolumeDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{199} + return fileDescriptor_83c10c24ec417dc9, []int{200} } func (m *VolumeDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5652,7 +5680,7 @@ var xxx_messageInfo_VolumeDevice proto.InternalMessageInfo func (m *VolumeMount) Reset() { *m = VolumeMount{} } func (*VolumeMount) ProtoMessage() {} func (*VolumeMount) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{200} + return fileDescriptor_83c10c24ec417dc9, []int{201} } func (m *VolumeMount) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5680,7 +5708,7 @@ var xxx_messageInfo_VolumeMount proto.InternalMessageInfo func (m *VolumeNodeAffinity) Reset() { *m = VolumeNodeAffinity{} } func (*VolumeNodeAffinity) ProtoMessage() {} func (*VolumeNodeAffinity) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{201} + return fileDescriptor_83c10c24ec417dc9, []int{202} } func (m *VolumeNodeAffinity) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5708,7 +5736,7 @@ var xxx_messageInfo_VolumeNodeAffinity proto.InternalMessageInfo func (m *VolumeProjection) Reset() { *m = VolumeProjection{} } func (*VolumeProjection) ProtoMessage() {} func (*VolumeProjection) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{202} + return fileDescriptor_83c10c24ec417dc9, []int{203} } func (m *VolumeProjection) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5736,7 +5764,7 @@ var xxx_messageInfo_VolumeProjection proto.InternalMessageInfo func (m *VolumeSource) Reset() { *m = VolumeSource{} } func (*VolumeSource) ProtoMessage() {} func (*VolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{203} + return fileDescriptor_83c10c24ec417dc9, []int{204} } func (m *VolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5764,7 +5792,7 @@ var xxx_messageInfo_VolumeSource proto.InternalMessageInfo func (m *VsphereVirtualDiskVolumeSource) Reset() { *m = VsphereVirtualDiskVolumeSource{} } func (*VsphereVirtualDiskVolumeSource) ProtoMessage() {} func (*VsphereVirtualDiskVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{204} + return fileDescriptor_83c10c24ec417dc9, []int{205} } func (m *VsphereVirtualDiskVolumeSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5792,7 +5820,7 @@ var xxx_messageInfo_VsphereVirtualDiskVolumeSource proto.InternalMessageInfo func (m *WeightedPodAffinityTerm) Reset() { *m = WeightedPodAffinityTerm{} } func (*WeightedPodAffinityTerm) ProtoMessage() {} func (*WeightedPodAffinityTerm) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{205} + return fileDescriptor_83c10c24ec417dc9, []int{206} } func (m *WeightedPodAffinityTerm) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5820,7 +5848,7 @@ var xxx_messageInfo_WeightedPodAffinityTerm proto.InternalMessageInfo func (m *WindowsSecurityContextOptions) Reset() { *m = WindowsSecurityContextOptions{} } func (*WindowsSecurityContextOptions) ProtoMessage() {} func (*WindowsSecurityContextOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_83c10c24ec417dc9, []int{206} + return fileDescriptor_83c10c24ec417dc9, []int{207} } func (m *WindowsSecurityContextOptions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5992,6 +6020,7 @@ func init() { proto.RegisterType((*PodIP)(nil), "k8s.io.api.core.v1.PodIP") proto.RegisterType((*PodList)(nil), "k8s.io.api.core.v1.PodList") proto.RegisterType((*PodLogOptions)(nil), "k8s.io.api.core.v1.PodLogOptions") + proto.RegisterType((*PodOS)(nil), "k8s.io.api.core.v1.PodOS") proto.RegisterType((*PodPortForwardOptions)(nil), "k8s.io.api.core.v1.PodPortForwardOptions") proto.RegisterType((*PodProxyOptions)(nil), "k8s.io.api.core.v1.PodProxyOptions") proto.RegisterType((*PodReadinessGate)(nil), "k8s.io.api.core.v1.PodReadinessGate") @@ -6087,887 +6116,889 @@ func init() { } var fileDescriptor_83c10c24ec417dc9 = []byte{ - // 14068 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x69, 0x70, 0x5c, 0xd9, - 0x79, 0x18, 0xaa, 0xdb, 0x8d, 0xad, 0x3f, 0xec, 0x07, 0x24, 0x07, 0xc4, 0x0c, 0x09, 0xce, 0xa5, - 0xc4, 0xe1, 0x68, 0x66, 0x40, 0x71, 0x16, 0x69, 0x3c, 0x23, 0x8d, 0x05, 0xa0, 0x01, 0xb2, 0x87, - 0x04, 0xd8, 0x73, 0x1a, 0x24, 0x25, 0x79, 0xa4, 0xd2, 0x45, 0xf7, 0x01, 0x70, 0x85, 0xee, 0x7b, - 0x7b, 0xee, 0xbd, 0x0d, 0x12, 0xf3, 0xe4, 0x7a, 0x7e, 0xf2, 0x2a, 0x2f, 0xaf, 0x54, 0xaf, 0xfc, - 0xb2, 0xd8, 0x2e, 0x57, 0xca, 0x71, 0xca, 0x56, 0x94, 0xcd, 0xb1, 0x63, 0x3b, 0x96, 0x13, 0x3b, - 0xbb, 0x93, 0x1f, 0x8e, 0xe3, 0x4a, 0x2c, 0x57, 0xb9, 0x82, 0xd8, 0x74, 0xaa, 0x5c, 0xfa, 0x11, - 0xdb, 0x89, 0x93, 0x1f, 0x41, 0x5c, 0x71, 0xea, 0xac, 0xf7, 0x9c, 0xbb, 0x74, 0x37, 0x38, 0x20, - 0x34, 0x52, 0xcd, 0xbf, 0xee, 0xf3, 0x7d, 0xe7, 0x3b, 0xe7, 0x9e, 0xf5, 0x3b, 0xdf, 0x0a, 0xaf, - 0xee, 0xbe, 0x1c, 0x2e, 0xb8, 0xfe, 0x95, 0xdd, 0xce, 0x26, 0x09, 0x3c, 0x12, 0x91, 0xf0, 0xca, - 0x1e, 0xf1, 0x1a, 0x7e, 0x70, 0x45, 0x00, 0x9c, 0xb6, 0x7b, 0xa5, 0xee, 0x07, 0xe4, 0xca, 0xde, - 0xd5, 0x2b, 0xdb, 0xc4, 0x23, 0x81, 0x13, 0x91, 0xc6, 0x42, 0x3b, 0xf0, 0x23, 0x1f, 0x21, 0x8e, - 0xb3, 0xe0, 0xb4, 0xdd, 0x05, 0x8a, 0xb3, 0xb0, 0x77, 0x75, 0xee, 0xb9, 0x6d, 0x37, 0xda, 0xe9, - 0x6c, 0x2e, 0xd4, 0xfd, 0xd6, 0x95, 0x6d, 0x7f, 0xdb, 0xbf, 0xc2, 0x50, 0x37, 0x3b, 0x5b, 0xec, - 0x1f, 0xfb, 0xc3, 0x7e, 0x71, 0x12, 0x73, 0x2f, 0xc6, 0xcd, 0xb4, 0x9c, 0xfa, 0x8e, 0xeb, 0x91, - 0x60, 0xff, 0x4a, 0x7b, 0x77, 0x9b, 0xb5, 0x1b, 0x90, 0xd0, 0xef, 0x04, 0x75, 0x92, 0x6c, 0xb8, - 0x6b, 0xad, 0xf0, 0x4a, 0x8b, 0x44, 0x4e, 0x46, 0x77, 0xe7, 0xae, 0xe4, 0xd5, 0x0a, 0x3a, 0x5e, - 0xe4, 0xb6, 0xd2, 0xcd, 0x7c, 0xb8, 0x57, 0x85, 0xb0, 0xbe, 0x43, 0x5a, 0x4e, 0xaa, 0xde, 0x0b, - 0x79, 0xf5, 0x3a, 0x91, 0xdb, 0xbc, 0xe2, 0x7a, 0x51, 0x18, 0x05, 0xc9, 0x4a, 0xf6, 0xd7, 0x2c, - 0xb8, 0xb0, 0x78, 0xb7, 0xb6, 0xd2, 0x74, 0xc2, 0xc8, 0xad, 0x2f, 0x35, 0xfd, 0xfa, 0x6e, 0x2d, - 0xf2, 0x03, 0x72, 0xc7, 0x6f, 0x76, 0x5a, 0xa4, 0xc6, 0x06, 0x02, 0x3d, 0x0b, 0x23, 0x7b, 0xec, - 0x7f, 0xa5, 0x3c, 0x6b, 0x5d, 0xb0, 0x2e, 0x97, 0x96, 0xa6, 0x7e, 0xe3, 0x60, 0xfe, 0x7d, 0x0f, - 0x0e, 0xe6, 0x47, 0xee, 0x88, 0x72, 0xac, 0x30, 0xd0, 0x25, 0x18, 0xda, 0x0a, 0x37, 0xf6, 0xdb, - 0x64, 0xb6, 0xc0, 0x70, 0x27, 0x04, 0xee, 0xd0, 0x6a, 0x8d, 0x96, 0x62, 0x01, 0x45, 0x57, 0xa0, - 0xd4, 0x76, 0x82, 0xc8, 0x8d, 0x5c, 0xdf, 0x9b, 0x2d, 0x5e, 0xb0, 0x2e, 0x0f, 0x2e, 0x4d, 0x0b, - 0xd4, 0x52, 0x55, 0x02, 0x70, 0x8c, 0x43, 0xbb, 0x11, 0x10, 0xa7, 0x71, 0xcb, 0x6b, 0xee, 0xcf, - 0x0e, 0x5c, 0xb0, 0x2e, 0x8f, 0xc4, 0xdd, 0xc0, 0xa2, 0x1c, 0x2b, 0x0c, 0xfb, 0xc7, 0x0a, 0x30, - 0xb2, 0xb8, 0xb5, 0xe5, 0x7a, 0x6e, 0xb4, 0x8f, 0xee, 0xc0, 0x98, 0xe7, 0x37, 0x88, 0xfc, 0xcf, - 0xbe, 0x62, 0xf4, 0xf9, 0x0b, 0x0b, 0xe9, 0xa5, 0xb4, 0xb0, 0xae, 0xe1, 0x2d, 0x4d, 0x3d, 0x38, - 0x98, 0x1f, 0xd3, 0x4b, 0xb0, 0x41, 0x07, 0x61, 0x18, 0x6d, 0xfb, 0x0d, 0x45, 0xb6, 0xc0, 0xc8, - 0xce, 0x67, 0x91, 0xad, 0xc6, 0x68, 0x4b, 0x93, 0x0f, 0x0e, 0xe6, 0x47, 0xb5, 0x02, 0xac, 0x13, - 0x41, 0x9b, 0x30, 0x49, 0xff, 0x7a, 0x91, 0xab, 0xe8, 0x16, 0x19, 0xdd, 0x8b, 0x79, 0x74, 0x35, - 0xd4, 0xa5, 0x99, 0x07, 0x07, 0xf3, 0x93, 0x89, 0x42, 0x9c, 0x24, 0x68, 0xbf, 0x0d, 0x13, 0x8b, - 0x51, 0xe4, 0xd4, 0x77, 0x48, 0x83, 0xcf, 0x20, 0x7a, 0x11, 0x06, 0x3c, 0xa7, 0x45, 0xc4, 0xfc, - 0x5e, 0x10, 0x03, 0x3b, 0xb0, 0xee, 0xb4, 0xc8, 0xe1, 0xc1, 0xfc, 0xd4, 0x6d, 0xcf, 0x7d, 0xab, - 0x23, 0x56, 0x05, 0x2d, 0xc3, 0x0c, 0x1b, 0x3d, 0x0f, 0xd0, 0x20, 0x7b, 0x6e, 0x9d, 0x54, 0x9d, - 0x68, 0x47, 0xcc, 0x37, 0x12, 0x75, 0xa1, 0xac, 0x20, 0x58, 0xc3, 0xb2, 0xef, 0x43, 0x69, 0x71, - 0xcf, 0x77, 0x1b, 0x55, 0xbf, 0x11, 0xa2, 0x5d, 0x98, 0x6c, 0x07, 0x64, 0x8b, 0x04, 0xaa, 0x68, - 0xd6, 0xba, 0x50, 0xbc, 0x3c, 0xfa, 0xfc, 0xe5, 0xcc, 0x8f, 0x35, 0x51, 0x57, 0xbc, 0x28, 0xd8, - 0x5f, 0x7a, 0x4c, 0xb4, 0x37, 0x99, 0x80, 0xe2, 0x24, 0x65, 0xfb, 0x9f, 0x17, 0xe0, 0xf4, 0xe2, - 0xdb, 0x9d, 0x80, 0x94, 0xdd, 0x70, 0x37, 0xb9, 0xc2, 0x1b, 0x6e, 0xb8, 0xbb, 0x1e, 0x8f, 0x80, - 0x5a, 0x5a, 0x65, 0x51, 0x8e, 0x15, 0x06, 0x7a, 0x0e, 0x86, 0xe9, 0xef, 0xdb, 0xb8, 0x22, 0x3e, - 0x79, 0x46, 0x20, 0x8f, 0x96, 0x9d, 0xc8, 0x29, 0x73, 0x10, 0x96, 0x38, 0x68, 0x0d, 0x46, 0xeb, - 0x6c, 0x43, 0x6e, 0xaf, 0xf9, 0x0d, 0xc2, 0x26, 0xb3, 0xb4, 0xf4, 0x0c, 0x45, 0x5f, 0x8e, 0x8b, - 0x0f, 0x0f, 0xe6, 0x67, 0x79, 0xdf, 0x04, 0x09, 0x0d, 0x86, 0xf5, 0xfa, 0xc8, 0x56, 0xfb, 0x6b, - 0x80, 0x51, 0x82, 0x8c, 0xbd, 0x75, 0x59, 0xdb, 0x2a, 0x83, 0x6c, 0xab, 0x8c, 0x65, 0x6f, 0x13, - 0x74, 0x15, 0x06, 0x76, 0x5d, 0xaf, 0x31, 0x3b, 0xc4, 0x68, 0x9d, 0xa3, 0x73, 0x7e, 0xc3, 0xf5, - 0x1a, 0x87, 0x07, 0xf3, 0xd3, 0x46, 0x77, 0x68, 0x21, 0x66, 0xa8, 0xf6, 0x9f, 0x59, 0x30, 0xcf, - 0x60, 0xab, 0x6e, 0x93, 0x54, 0x49, 0x10, 0xba, 0x61, 0x44, 0xbc, 0xc8, 0x18, 0xd0, 0xe7, 0x01, - 0x42, 0x52, 0x0f, 0x48, 0xa4, 0x0d, 0xa9, 0x5a, 0x18, 0x35, 0x05, 0xc1, 0x1a, 0x16, 0x3d, 0x10, - 0xc2, 0x1d, 0x27, 0x60, 0xeb, 0x4b, 0x0c, 0xac, 0x3a, 0x10, 0x6a, 0x12, 0x80, 0x63, 0x1c, 0xe3, - 0x40, 0x28, 0xf6, 0x3a, 0x10, 0xd0, 0xc7, 0x60, 0x32, 0x6e, 0x2c, 0x6c, 0x3b, 0x75, 0x39, 0x80, - 0x6c, 0xcb, 0xd4, 0x4c, 0x10, 0x4e, 0xe2, 0xda, 0x7f, 0xd3, 0x12, 0x8b, 0x87, 0x7e, 0xf5, 0xbb, - 0xfc, 0x5b, 0xed, 0x5f, 0xb6, 0x60, 0x78, 0xc9, 0xf5, 0x1a, 0xae, 0xb7, 0x8d, 0x3e, 0x0b, 0x23, - 0xf4, 0x6e, 0x6a, 0x38, 0x91, 0x23, 0xce, 0xbd, 0x0f, 0x69, 0x7b, 0x4b, 0x5d, 0x15, 0x0b, 0xed, - 0xdd, 0x6d, 0x5a, 0x10, 0x2e, 0x50, 0x6c, 0xba, 0xdb, 0x6e, 0x6d, 0x7e, 0x8e, 0xd4, 0xa3, 0x35, - 0x12, 0x39, 0xf1, 0xe7, 0xc4, 0x65, 0x58, 0x51, 0x45, 0x37, 0x60, 0x28, 0x72, 0x82, 0x6d, 0x12, - 0x89, 0x03, 0x30, 0xf3, 0xa0, 0xe2, 0x35, 0x31, 0xdd, 0x91, 0xc4, 0xab, 0x93, 0xf8, 0x5a, 0xd8, - 0x60, 0x55, 0xb1, 0x20, 0x61, 0xff, 0xc8, 0x30, 0x9c, 0x5d, 0xae, 0x55, 0x72, 0xd6, 0xd5, 0x25, - 0x18, 0x6a, 0x04, 0xee, 0x1e, 0x09, 0xc4, 0x38, 0x2b, 0x2a, 0x65, 0x56, 0x8a, 0x05, 0x14, 0xbd, - 0x0c, 0x63, 0xfc, 0x42, 0xba, 0xee, 0x78, 0x8d, 0xa6, 0x1c, 0xe2, 0x53, 0x02, 0x7b, 0xec, 0x8e, - 0x06, 0xc3, 0x06, 0xe6, 0x11, 0x17, 0xd5, 0xa5, 0xc4, 0x66, 0xcc, 0xbb, 0xec, 0xbe, 0x68, 0xc1, - 0x14, 0x6f, 0x66, 0x31, 0x8a, 0x02, 0x77, 0xb3, 0x13, 0x91, 0x70, 0x76, 0x90, 0x9d, 0x74, 0xcb, - 0x59, 0xa3, 0x95, 0x3b, 0x02, 0x0b, 0x77, 0x12, 0x54, 0xf8, 0x21, 0x38, 0x2b, 0xda, 0x9d, 0x4a, - 0x82, 0x71, 0xaa, 0x59, 0xf4, 0xdd, 0x16, 0xcc, 0xd5, 0x7d, 0x2f, 0x0a, 0xfc, 0x66, 0x93, 0x04, - 0xd5, 0xce, 0x66, 0xd3, 0x0d, 0x77, 0xf8, 0x3a, 0xc5, 0x64, 0x8b, 0x9d, 0x04, 0x39, 0x73, 0xa8, - 0x90, 0xc4, 0x1c, 0x9e, 0x7f, 0x70, 0x30, 0x3f, 0xb7, 0x9c, 0x4b, 0x0a, 0x77, 0x69, 0x06, 0xed, - 0x02, 0xa2, 0x57, 0x69, 0x2d, 0x72, 0xb6, 0x49, 0xdc, 0xf8, 0x70, 0xff, 0x8d, 0x9f, 0x79, 0x70, - 0x30, 0x8f, 0xd6, 0x53, 0x24, 0x70, 0x06, 0x59, 0xf4, 0x16, 0x9c, 0xa2, 0xa5, 0xa9, 0x6f, 0x1d, - 0xe9, 0xbf, 0xb9, 0xd9, 0x07, 0x07, 0xf3, 0xa7, 0xd6, 0x33, 0x88, 0xe0, 0x4c, 0xd2, 0xe8, 0xbb, - 0x2c, 0x38, 0x1b, 0x7f, 0xfe, 0xca, 0xfd, 0xb6, 0xe3, 0x35, 0xe2, 0x86, 0x4b, 0xfd, 0x37, 0x4c, - 0xcf, 0xe4, 0xb3, 0xcb, 0x79, 0x94, 0x70, 0x7e, 0x23, 0x73, 0xcb, 0x70, 0x3a, 0x73, 0xb5, 0xa0, - 0x29, 0x28, 0xee, 0x12, 0xce, 0x05, 0x95, 0x30, 0xfd, 0x89, 0x4e, 0xc1, 0xe0, 0x9e, 0xd3, 0xec, - 0x88, 0x8d, 0x82, 0xf9, 0x9f, 0x57, 0x0a, 0x2f, 0x5b, 0xf6, 0xbf, 0x28, 0xc2, 0xe4, 0x72, 0xad, - 0xf2, 0x50, 0xbb, 0x50, 0xbf, 0x86, 0x0a, 0x5d, 0xaf, 0xa1, 0xf8, 0x52, 0x2b, 0xe6, 0x5e, 0x6a, - 0xff, 0x77, 0xc6, 0x16, 0x1a, 0x60, 0x5b, 0xe8, 0xdb, 0x72, 0xb6, 0xd0, 0x31, 0x6f, 0x9c, 0xbd, - 0x9c, 0x55, 0x34, 0xc8, 0x26, 0x33, 0x93, 0x63, 0xb9, 0xe9, 0xd7, 0x9d, 0x66, 0xf2, 0xe8, 0x3b, - 0xe2, 0x52, 0x3a, 0x9e, 0x79, 0xac, 0xc3, 0xd8, 0xb2, 0xd3, 0x76, 0x36, 0xdd, 0xa6, 0x1b, 0xb9, - 0x24, 0x44, 0x4f, 0x41, 0xd1, 0x69, 0x34, 0x18, 0xb7, 0x55, 0x5a, 0x3a, 0xfd, 0xe0, 0x60, 0xbe, - 0xb8, 0xd8, 0xa0, 0xd7, 0x3e, 0x28, 0xac, 0x7d, 0x4c, 0x31, 0xd0, 0x07, 0x61, 0xa0, 0x11, 0xf8, - 0xed, 0xd9, 0x02, 0xc3, 0xa4, 0xbb, 0x6e, 0xa0, 0x1c, 0xf8, 0xed, 0x04, 0x2a, 0xc3, 0xb1, 0x7f, - 0xbd, 0x00, 0x4f, 0x2c, 0x93, 0xf6, 0xce, 0x6a, 0x2d, 0xe7, 0xfc, 0xbe, 0x0c, 0x23, 0x2d, 0xdf, - 0x73, 0x23, 0x3f, 0x08, 0x45, 0xd3, 0x6c, 0x45, 0xac, 0x89, 0x32, 0xac, 0xa0, 0xe8, 0x02, 0x0c, - 0xb4, 0x63, 0xa6, 0x72, 0x4c, 0x32, 0xa4, 0x8c, 0x9d, 0x64, 0x10, 0x8a, 0xd1, 0x09, 0x49, 0x20, - 0x56, 0x8c, 0xc2, 0xb8, 0x1d, 0x92, 0x00, 0x33, 0x48, 0x7c, 0x33, 0xd3, 0x3b, 0x5b, 0x9c, 0xd0, - 0x89, 0x9b, 0x99, 0x42, 0xb0, 0x86, 0x85, 0xaa, 0x50, 0x0a, 0x13, 0x33, 0xdb, 0xd7, 0x36, 0x1d, - 0x67, 0x57, 0xb7, 0x9a, 0xc9, 0x98, 0x88, 0x71, 0xa3, 0x0c, 0xf5, 0xbc, 0xba, 0xbf, 0x5a, 0x00, - 0xc4, 0x87, 0xf0, 0x9b, 0x6c, 0xe0, 0x6e, 0xa7, 0x07, 0xae, 0xff, 0x2d, 0x71, 0x5c, 0xa3, 0xf7, - 0xdf, 0x2d, 0x78, 0x62, 0xd9, 0xf5, 0x1a, 0x24, 0xc8, 0x59, 0x80, 0x8f, 0xe6, 0x2d, 0x7b, 0x34, - 0xa6, 0xc1, 0x58, 0x62, 0x03, 0xc7, 0xb0, 0xc4, 0xec, 0x3f, 0xb1, 0x00, 0xf1, 0xcf, 0x7e, 0xd7, - 0x7d, 0xec, 0xed, 0xf4, 0xc7, 0x1e, 0xc3, 0xb2, 0xb0, 0x6f, 0xc2, 0xc4, 0x72, 0xd3, 0x25, 0x5e, - 0x54, 0xa9, 0x2e, 0xfb, 0xde, 0x96, 0xbb, 0x8d, 0x5e, 0x81, 0x89, 0xc8, 0x6d, 0x11, 0xbf, 0x13, - 0xd5, 0x48, 0xdd, 0xf7, 0xd8, 0x4b, 0xd2, 0xba, 0x3c, 0xb8, 0x84, 0x1e, 0x1c, 0xcc, 0x4f, 0x6c, - 0x18, 0x10, 0x9c, 0xc0, 0xb4, 0x7f, 0x8f, 0x8e, 0x9f, 0xdf, 0x6a, 0xfb, 0x1e, 0xf1, 0xa2, 0x65, - 0xdf, 0x6b, 0x70, 0x89, 0xc3, 0x2b, 0x30, 0x10, 0xd1, 0xf1, 0xe0, 0x63, 0x77, 0x49, 0x6e, 0x14, - 0x3a, 0x0a, 0x87, 0x07, 0xf3, 0x67, 0xd2, 0x35, 0xd8, 0x38, 0xb1, 0x3a, 0xe8, 0xdb, 0x60, 0x28, - 0x8c, 0x9c, 0xa8, 0x13, 0x8a, 0xd1, 0x7c, 0x52, 0x8e, 0x66, 0x8d, 0x95, 0x1e, 0x1e, 0xcc, 0x4f, - 0xaa, 0x6a, 0xbc, 0x08, 0x8b, 0x0a, 0xe8, 0x69, 0x18, 0x6e, 0x91, 0x30, 0x74, 0xb6, 0xe5, 0x6d, - 0x38, 0x29, 0xea, 0x0e, 0xaf, 0xf1, 0x62, 0x2c, 0xe1, 0xe8, 0x22, 0x0c, 0x92, 0x20, 0xf0, 0x03, - 0xb1, 0x47, 0xc7, 0x05, 0xe2, 0xe0, 0x0a, 0x2d, 0xc4, 0x1c, 0x66, 0xff, 0x5b, 0x0b, 0x26, 0x55, - 0x5f, 0x79, 0x5b, 0x27, 0xf0, 0x2a, 0xf8, 0x14, 0x40, 0x5d, 0x7e, 0x60, 0xc8, 0x6e, 0x8f, 0xd1, - 0xe7, 0x2f, 0x65, 0x5e, 0xd4, 0xa9, 0x61, 0x8c, 0x29, 0xab, 0xa2, 0x10, 0x6b, 0xd4, 0xec, 0x7f, - 0x64, 0xc1, 0x4c, 0xe2, 0x8b, 0x6e, 0xba, 0x61, 0x84, 0xde, 0x4c, 0x7d, 0xd5, 0x42, 0x7f, 0x5f, - 0x45, 0x6b, 0xb3, 0x6f, 0x52, 0x4b, 0x59, 0x96, 0x68, 0x5f, 0x74, 0x1d, 0x06, 0xdd, 0x88, 0xb4, - 0xe4, 0xc7, 0x5c, 0xec, 0xfa, 0x31, 0xbc, 0x57, 0xf1, 0x8c, 0x54, 0x68, 0x4d, 0xcc, 0x09, 0xd8, - 0xbf, 0x5e, 0x84, 0x12, 0x5f, 0xb6, 0x6b, 0x4e, 0xfb, 0x04, 0xe6, 0xe2, 0x19, 0x28, 0xb9, 0xad, - 0x56, 0x27, 0x72, 0x36, 0xc5, 0x71, 0x3e, 0xc2, 0xb7, 0x56, 0x45, 0x16, 0xe2, 0x18, 0x8e, 0x2a, - 0x30, 0xc0, 0xba, 0xc2, 0xbf, 0xf2, 0xa9, 0xec, 0xaf, 0x14, 0x7d, 0x5f, 0x28, 0x3b, 0x91, 0xc3, - 0x39, 0x29, 0x75, 0x8f, 0xd0, 0x22, 0xcc, 0x48, 0x20, 0x07, 0x60, 0xd3, 0xf5, 0x9c, 0x60, 0x9f, - 0x96, 0xcd, 0x16, 0x19, 0xc1, 0xe7, 0xba, 0x13, 0x5c, 0x52, 0xf8, 0x9c, 0xac, 0xfa, 0xb0, 0x18, - 0x80, 0x35, 0xa2, 0x73, 0x1f, 0x81, 0x92, 0x42, 0x3e, 0x0a, 0x43, 0x34, 0xf7, 0x31, 0x98, 0x4c, - 0xb4, 0xd5, 0xab, 0xfa, 0x98, 0xce, 0x4f, 0xfd, 0x0a, 0x3b, 0x32, 0x44, 0xaf, 0x57, 0xbc, 0x3d, - 0x71, 0xe4, 0xbe, 0x0d, 0xa7, 0x9a, 0x19, 0x27, 0x99, 0x98, 0xd7, 0xfe, 0x4f, 0xbe, 0x27, 0xc4, - 0x67, 0x9f, 0xca, 0x82, 0xe2, 0xcc, 0x36, 0x28, 0x8f, 0xe0, 0xb7, 0xe9, 0x06, 0x71, 0x9a, 0x3a, - 0xbb, 0x7d, 0x4b, 0x94, 0x61, 0x05, 0xa5, 0xe7, 0xdd, 0x29, 0xd5, 0xf9, 0x1b, 0x64, 0xbf, 0x46, - 0x9a, 0xa4, 0x1e, 0xf9, 0xc1, 0x37, 0xb4, 0xfb, 0xe7, 0xf8, 0xe8, 0xf3, 0xe3, 0x72, 0x54, 0x10, - 0x28, 0xde, 0x20, 0xfb, 0x7c, 0x2a, 0xf4, 0xaf, 0x2b, 0x76, 0xfd, 0xba, 0x9f, 0xb3, 0x60, 0x5c, - 0x7d, 0xdd, 0x09, 0x9c, 0x0b, 0x4b, 0xe6, 0xb9, 0x70, 0xae, 0xeb, 0x02, 0xcf, 0x39, 0x11, 0xbe, - 0x5a, 0x80, 0xb3, 0x0a, 0x87, 0xbe, 0x0d, 0xf8, 0x1f, 0xb1, 0xaa, 0xae, 0x40, 0xc9, 0x53, 0x52, - 0x2b, 0xcb, 0x14, 0x17, 0xc5, 0x32, 0xab, 0x18, 0x87, 0xb2, 0x78, 0x5e, 0x2c, 0x5a, 0x1a, 0xd3, - 0xc5, 0xb9, 0x42, 0x74, 0xbb, 0x04, 0xc5, 0x8e, 0xdb, 0x10, 0x17, 0xcc, 0x87, 0xe4, 0x68, 0xdf, - 0xae, 0x94, 0x0f, 0x0f, 0xe6, 0x9f, 0xcc, 0x53, 0x25, 0xd0, 0x9b, 0x2d, 0x5c, 0xb8, 0x5d, 0x29, - 0x63, 0x5a, 0x19, 0x2d, 0xc2, 0xa4, 0xd4, 0x96, 0xdc, 0xa1, 0xec, 0x96, 0xef, 0x89, 0x7b, 0x48, - 0xc9, 0x64, 0xb1, 0x09, 0xc6, 0x49, 0x7c, 0x54, 0x86, 0xa9, 0xdd, 0xce, 0x26, 0x69, 0x92, 0x88, - 0x7f, 0xf0, 0x0d, 0xc2, 0x25, 0x96, 0xa5, 0xf8, 0x65, 0x76, 0x23, 0x01, 0xc7, 0xa9, 0x1a, 0xf6, - 0x5f, 0xb0, 0xfb, 0x40, 0x8c, 0x5e, 0x35, 0xf0, 0xe9, 0xc2, 0xa2, 0xd4, 0xbf, 0x91, 0xcb, 0xb9, - 0x9f, 0x55, 0x71, 0x83, 0xec, 0x6f, 0xf8, 0x94, 0x33, 0xcf, 0x5e, 0x15, 0xc6, 0x9a, 0x1f, 0xe8, - 0xba, 0xe6, 0x7f, 0xa1, 0x00, 0xa7, 0xd5, 0x08, 0x18, 0x4c, 0xe0, 0x37, 0xfb, 0x18, 0x5c, 0x85, - 0xd1, 0x06, 0xd9, 0x72, 0x3a, 0xcd, 0x48, 0x89, 0xcf, 0x07, 0xb9, 0x0a, 0xa5, 0x1c, 0x17, 0x63, - 0x1d, 0xe7, 0x08, 0xc3, 0xf6, 0x3f, 0x46, 0xd9, 0x45, 0x1c, 0x39, 0x74, 0x8d, 0xab, 0x5d, 0x63, - 0xe5, 0xee, 0x9a, 0x8b, 0x30, 0xe8, 0xb6, 0x28, 0x63, 0x56, 0x30, 0xf9, 0xad, 0x0a, 0x2d, 0xc4, - 0x1c, 0x86, 0x3e, 0x00, 0xc3, 0x75, 0xbf, 0xd5, 0x72, 0xbc, 0x06, 0xbb, 0xf2, 0x4a, 0x4b, 0xa3, - 0x94, 0x77, 0x5b, 0xe6, 0x45, 0x58, 0xc2, 0xd0, 0x13, 0x30, 0xe0, 0x04, 0xdb, 0x5c, 0x86, 0x51, - 0x5a, 0x1a, 0xa1, 0x2d, 0x2d, 0x06, 0xdb, 0x21, 0x66, 0xa5, 0xf4, 0x09, 0x76, 0xcf, 0x0f, 0x76, - 0x5d, 0x6f, 0xbb, 0xec, 0x06, 0x62, 0x4b, 0xa8, 0xbb, 0xf0, 0xae, 0x82, 0x60, 0x0d, 0x0b, 0xad, - 0xc2, 0x60, 0xdb, 0x0f, 0xa2, 0x70, 0x76, 0x88, 0x0d, 0xf7, 0x93, 0x39, 0x07, 0x11, 0xff, 0xda, - 0xaa, 0x1f, 0x44, 0xf1, 0x07, 0xd0, 0x7f, 0x21, 0xe6, 0xd5, 0xd1, 0x4d, 0x18, 0x26, 0xde, 0xde, - 0x6a, 0xe0, 0xb7, 0x66, 0x67, 0xf2, 0x29, 0xad, 0x70, 0x14, 0xbe, 0xcc, 0x62, 0x1e, 0x55, 0x14, - 0x63, 0x49, 0x02, 0x7d, 0x1b, 0x14, 0x89, 0xb7, 0x37, 0x3b, 0xcc, 0x28, 0xcd, 0xe5, 0x50, 0xba, - 0xe3, 0x04, 0xf1, 0x99, 0xbf, 0xe2, 0xed, 0x61, 0x5a, 0x07, 0x7d, 0x12, 0x4a, 0xf2, 0xc0, 0x08, - 0x85, 0xb0, 0x2e, 0x73, 0xc1, 0xca, 0x63, 0x06, 0x93, 0xb7, 0x3a, 0x6e, 0x40, 0x5a, 0xc4, 0x8b, - 0xc2, 0xf8, 0x84, 0x94, 0xd0, 0x10, 0xc7, 0xd4, 0xd0, 0x27, 0xa5, 0x84, 0x78, 0xcd, 0xef, 0x78, - 0x51, 0x38, 0x5b, 0x62, 0xdd, 0xcb, 0xd4, 0xdd, 0xdd, 0x89, 0xf1, 0x92, 0x22, 0x64, 0x5e, 0x19, - 0x1b, 0xa4, 0xd0, 0xa7, 0x61, 0x9c, 0xff, 0xe7, 0x1a, 0xb0, 0x70, 0xf6, 0x34, 0xa3, 0x7d, 0x21, - 0x9f, 0x36, 0x47, 0x5c, 0x3a, 0x2d, 0x88, 0x8f, 0xeb, 0xa5, 0x21, 0x36, 0xa9, 0x21, 0x0c, 0xe3, - 0x4d, 0x77, 0x8f, 0x78, 0x24, 0x0c, 0xab, 0x81, 0xbf, 0x49, 0x66, 0x81, 0x0d, 0xcc, 0xd9, 0x6c, - 0x8d, 0x99, 0xbf, 0x49, 0x96, 0xa6, 0x29, 0xcd, 0x9b, 0x7a, 0x1d, 0x6c, 0x92, 0x40, 0xb7, 0x61, - 0x82, 0xbe, 0xd8, 0xdc, 0x98, 0xe8, 0x68, 0x2f, 0xa2, 0xec, 0x5d, 0x85, 0x8d, 0x4a, 0x38, 0x41, - 0x04, 0xdd, 0x82, 0xb1, 0x30, 0x72, 0x82, 0xa8, 0xd3, 0xe6, 0x44, 0xcf, 0xf4, 0x22, 0xca, 0x14, - 0xae, 0x35, 0xad, 0x0a, 0x36, 0x08, 0xa0, 0xd7, 0xa1, 0xd4, 0x74, 0xb7, 0x48, 0x7d, 0xbf, 0xde, - 0x24, 0xb3, 0x63, 0x8c, 0x5a, 0xe6, 0xa1, 0x72, 0x53, 0x22, 0x71, 0x3e, 0x57, 0xfd, 0xc5, 0x71, - 0x75, 0x74, 0x07, 0xce, 0x44, 0x24, 0x68, 0xb9, 0x9e, 0x43, 0x0f, 0x03, 0xf1, 0xb4, 0x62, 0x8a, - 0xcc, 0x71, 0xb6, 0xdb, 0xce, 0x8b, 0xd9, 0x38, 0xb3, 0x91, 0x89, 0x85, 0x73, 0x6a, 0xa3, 0xfb, - 0x30, 0x9b, 0x01, 0xf1, 0x9b, 0x6e, 0x7d, 0x7f, 0xf6, 0x14, 0xa3, 0xfc, 0x51, 0x41, 0x79, 0x76, - 0x23, 0x07, 0xef, 0xb0, 0x0b, 0x0c, 0xe7, 0x52, 0x47, 0xb7, 0x60, 0x92, 0x9d, 0x40, 0xd5, 0x4e, - 0xb3, 0x29, 0x1a, 0x9c, 0x60, 0x0d, 0x7e, 0x40, 0xde, 0xc7, 0x15, 0x13, 0x7c, 0x78, 0x30, 0x0f, - 0xf1, 0x3f, 0x9c, 0xac, 0x8d, 0x36, 0x99, 0xce, 0xac, 0x13, 0xb8, 0xd1, 0x3e, 0x3d, 0x37, 0xc8, - 0xfd, 0x68, 0x76, 0xb2, 0xab, 0xbc, 0x42, 0x47, 0x55, 0x8a, 0x35, 0xbd, 0x10, 0x27, 0x09, 0xd2, - 0x23, 0x35, 0x8c, 0x1a, 0xae, 0x37, 0x3b, 0xc5, 0xdf, 0x25, 0xf2, 0x44, 0xaa, 0xd1, 0x42, 0xcc, - 0x61, 0x4c, 0x5f, 0x46, 0x7f, 0xdc, 0xa2, 0x37, 0xd7, 0x34, 0x43, 0x8c, 0xf5, 0x65, 0x12, 0x80, - 0x63, 0x1c, 0xca, 0x4c, 0x46, 0xd1, 0xfe, 0x2c, 0x62, 0xa8, 0xea, 0x60, 0xd9, 0xd8, 0xf8, 0x24, - 0xa6, 0xe5, 0xf6, 0x26, 0x4c, 0xa8, 0x83, 0x90, 0x8d, 0x09, 0x9a, 0x87, 0x41, 0xc6, 0x3e, 0x09, - 0xe9, 0x5a, 0x89, 0x76, 0x81, 0xb1, 0x56, 0x98, 0x97, 0xb3, 0x2e, 0xb8, 0x6f, 0x93, 0xa5, 0xfd, - 0x88, 0xf0, 0x37, 0x7d, 0x51, 0xeb, 0x82, 0x04, 0xe0, 0x18, 0xc7, 0xfe, 0xdf, 0x9c, 0x0d, 0x8d, - 0x4f, 0xdb, 0x3e, 0xee, 0x97, 0x67, 0x61, 0x64, 0xc7, 0x0f, 0x23, 0x8a, 0xcd, 0xda, 0x18, 0x8c, - 0x19, 0xcf, 0xeb, 0xa2, 0x1c, 0x2b, 0x0c, 0xf4, 0x2a, 0x8c, 0xd7, 0xf5, 0x06, 0xc4, 0xe5, 0xa8, - 0x8e, 0x11, 0xa3, 0x75, 0x6c, 0xe2, 0xa2, 0x97, 0x61, 0x84, 0xd9, 0x80, 0xd4, 0xfd, 0xa6, 0xe0, - 0xda, 0xe4, 0x0d, 0x3f, 0x52, 0x15, 0xe5, 0x87, 0xda, 0x6f, 0xac, 0xb0, 0xd1, 0x25, 0x18, 0xa2, - 0x5d, 0xa8, 0x54, 0xc5, 0xb5, 0xa4, 0x04, 0x45, 0xd7, 0x59, 0x29, 0x16, 0x50, 0xfb, 0xff, 0x2b, - 0x68, 0xa3, 0x4c, 0xdf, 0xc3, 0x04, 0x55, 0x61, 0xf8, 0x9e, 0xe3, 0x46, 0xae, 0xb7, 0x2d, 0xf8, - 0x8f, 0xa7, 0xbb, 0xde, 0x51, 0xac, 0xd2, 0x5d, 0x5e, 0x81, 0xdf, 0xa2, 0xe2, 0x0f, 0x96, 0x64, - 0x28, 0xc5, 0xa0, 0xe3, 0x79, 0x94, 0x62, 0xa1, 0x5f, 0x8a, 0x98, 0x57, 0xe0, 0x14, 0xc5, 0x1f, - 0x2c, 0xc9, 0xa0, 0x37, 0x01, 0xe4, 0x0e, 0x23, 0x0d, 0x61, 0x7b, 0xf1, 0x6c, 0x6f, 0xa2, 0x1b, - 0xaa, 0xce, 0xd2, 0x04, 0xbd, 0xa3, 0xe3, 0xff, 0x58, 0xa3, 0x67, 0x47, 0x8c, 0x4f, 0x4b, 0x77, - 0x06, 0x7d, 0x07, 0x5d, 0xe2, 0x4e, 0x10, 0x91, 0xc6, 0x62, 0x24, 0x06, 0xe7, 0x83, 0xfd, 0x3d, - 0x52, 0x36, 0xdc, 0x16, 0xd1, 0xb7, 0x83, 0x20, 0x82, 0x63, 0x7a, 0xf6, 0x2f, 0x15, 0x61, 0x36, - 0xaf, 0xbb, 0x74, 0xd1, 0x91, 0xfb, 0x6e, 0xb4, 0x4c, 0xd9, 0x2b, 0xcb, 0x5c, 0x74, 0x2b, 0xa2, - 0x1c, 0x2b, 0x0c, 0x3a, 0xfb, 0xa1, 0xbb, 0x2d, 0xdf, 0x98, 0x83, 0xf1, 0xec, 0xd7, 0x58, 0x29, - 0x16, 0x50, 0x8a, 0x17, 0x10, 0x27, 0x14, 0xc6, 0x3d, 0xda, 0x2a, 0xc1, 0xac, 0x14, 0x0b, 0xa8, - 0x2e, 0xed, 0x1a, 0xe8, 0x21, 0xed, 0x32, 0x86, 0x68, 0xf0, 0x78, 0x87, 0x08, 0x7d, 0x06, 0x60, - 0xcb, 0xf5, 0xdc, 0x70, 0x87, 0x51, 0x1f, 0x3a, 0x32, 0x75, 0xc5, 0x9c, 0xad, 0x2a, 0x2a, 0x58, - 0xa3, 0x88, 0x5e, 0x82, 0x51, 0xb5, 0x01, 0x2b, 0x65, 0xa6, 0xe9, 0xd4, 0x2c, 0x47, 0xe2, 0xd3, - 0xa8, 0x8c, 0x75, 0x3c, 0xfb, 0x73, 0xc9, 0xf5, 0x22, 0x76, 0x80, 0x36, 0xbe, 0x56, 0xbf, 0xe3, - 0x5b, 0xe8, 0x3e, 0xbe, 0xf6, 0xd7, 0x8b, 0x30, 0x69, 0x34, 0xd6, 0x09, 0xfb, 0x38, 0xb3, 0xae, - 0xd1, 0x03, 0xdc, 0x89, 0x88, 0xd8, 0x7f, 0x76, 0xef, 0xad, 0xa2, 0x1f, 0xf2, 0x74, 0x07, 0xf0, - 0xfa, 0xe8, 0x33, 0x50, 0x6a, 0x3a, 0x21, 0x93, 0x9c, 0x11, 0xb1, 0xef, 0xfa, 0x21, 0x16, 0x3f, - 0x4c, 0x9c, 0x30, 0xd2, 0x6e, 0x4d, 0x4e, 0x3b, 0x26, 0x49, 0x6f, 0x1a, 0xca, 0x9f, 0x48, 0xeb, - 0x31, 0xd5, 0x09, 0xca, 0xc4, 0xec, 0x63, 0x0e, 0x43, 0x2f, 0xc3, 0x58, 0x40, 0xd8, 0xaa, 0x58, - 0xa6, 0xdc, 0x1c, 0x5b, 0x66, 0x83, 0x31, 0xdb, 0x87, 0x35, 0x18, 0x36, 0x30, 0xe3, 0xb7, 0xc1, - 0x50, 0x97, 0xb7, 0xc1, 0xd3, 0x30, 0xcc, 0x7e, 0xa8, 0x15, 0xa0, 0x66, 0xa3, 0xc2, 0x8b, 0xb1, - 0x84, 0x27, 0x17, 0xcc, 0x48, 0x7f, 0x0b, 0x86, 0xbe, 0x3e, 0xc4, 0xa2, 0x66, 0x5a, 0xe6, 0x11, - 0x7e, 0xca, 0x89, 0x25, 0x8f, 0x25, 0xcc, 0xfe, 0x20, 0x4c, 0x94, 0x1d, 0xd2, 0xf2, 0xbd, 0x15, - 0xaf, 0xd1, 0xf6, 0x5d, 0x2f, 0x42, 0xb3, 0x30, 0xc0, 0x2e, 0x11, 0x7e, 0x04, 0x0c, 0xd0, 0x86, - 0x30, 0x2b, 0xb1, 0xb7, 0xe1, 0x74, 0xd9, 0xbf, 0xe7, 0xdd, 0x73, 0x82, 0xc6, 0x62, 0xb5, 0xa2, - 0xbd, 0xaf, 0xd7, 0xe5, 0xfb, 0x8e, 0x1b, 0x6d, 0x65, 0x1e, 0xbd, 0x5a, 0x4d, 0xce, 0xd6, 0xae, - 0xba, 0x4d, 0x92, 0x23, 0x05, 0xf9, 0xcb, 0x05, 0xa3, 0xa5, 0x18, 0x5f, 0x69, 0xb5, 0xac, 0x5c, - 0xad, 0xd6, 0x1b, 0x30, 0xb2, 0xe5, 0x92, 0x66, 0x03, 0x93, 0x2d, 0xb1, 0x12, 0x9f, 0xca, 0xb7, - 0x43, 0x59, 0xa5, 0x98, 0x52, 0xea, 0xc5, 0x5f, 0x87, 0xab, 0xa2, 0x32, 0x56, 0x64, 0xd0, 0x2e, - 0x4c, 0xc9, 0x07, 0x83, 0x84, 0x8a, 0x75, 0xf9, 0x74, 0xb7, 0x57, 0x88, 0x49, 0xfc, 0xd4, 0x83, - 0x83, 0xf9, 0x29, 0x9c, 0x20, 0x83, 0x53, 0x84, 0xe9, 0x73, 0xb0, 0x45, 0x4f, 0xe0, 0x01, 0x36, - 0xfc, 0xec, 0x39, 0xc8, 0x5e, 0xb6, 0xac, 0xd4, 0xfe, 0x09, 0x0b, 0x1e, 0x4b, 0x8d, 0x8c, 0x78, - 0xe1, 0x1f, 0xf3, 0x2c, 0x24, 0x5f, 0xdc, 0x85, 0xde, 0x2f, 0x6e, 0xfb, 0x6f, 0x59, 0x70, 0x6a, - 0xa5, 0xd5, 0x8e, 0xf6, 0xcb, 0xae, 0xa9, 0x82, 0xfa, 0x08, 0x0c, 0xb5, 0x48, 0xc3, 0xed, 0xb4, - 0xc4, 0xcc, 0xcd, 0xcb, 0x53, 0x6a, 0x8d, 0x95, 0x1e, 0x1e, 0xcc, 0x8f, 0xd7, 0x22, 0x3f, 0x70, - 0xb6, 0x09, 0x2f, 0xc0, 0x02, 0x9d, 0x9d, 0xf5, 0xee, 0xdb, 0xe4, 0xa6, 0xdb, 0x72, 0xa5, 0x5d, - 0x51, 0x57, 0x99, 0xdd, 0x82, 0x1c, 0xd0, 0x85, 0x37, 0x3a, 0x8e, 0x17, 0xb9, 0xd1, 0xbe, 0xd0, - 0x1e, 0x49, 0x22, 0x38, 0xa6, 0x67, 0x7f, 0xcd, 0x82, 0x49, 0xb9, 0xee, 0x17, 0x1b, 0x8d, 0x80, - 0x84, 0x21, 0x9a, 0x83, 0x82, 0xdb, 0x16, 0xbd, 0x04, 0xd1, 0xcb, 0x42, 0xa5, 0x8a, 0x0b, 0x6e, - 0x5b, 0xb2, 0x65, 0xec, 0x20, 0x2c, 0x9a, 0x8a, 0xb4, 0xeb, 0xa2, 0x1c, 0x2b, 0x0c, 0x74, 0x19, - 0x46, 0x3c, 0xbf, 0xc1, 0x6d, 0xbb, 0xf8, 0x95, 0xc6, 0x16, 0xd8, 0xba, 0x28, 0xc3, 0x0a, 0x8a, - 0xaa, 0x50, 0xe2, 0x66, 0x4f, 0xf1, 0xa2, 0xed, 0xcb, 0x78, 0x8a, 0x7d, 0xd9, 0x86, 0xac, 0x89, - 0x63, 0x22, 0xf6, 0xaf, 0x59, 0x30, 0x26, 0xbf, 0xac, 0x4f, 0x9e, 0x93, 0x6e, 0xad, 0x98, 0xdf, - 0x8c, 0xb7, 0x16, 0xe5, 0x19, 0x19, 0xc4, 0x60, 0x15, 0x8b, 0x47, 0x62, 0x15, 0xaf, 0xc2, 0xa8, - 0xd3, 0x6e, 0x57, 0x4d, 0x3e, 0x93, 0x2d, 0xa5, 0xc5, 0xb8, 0x18, 0xeb, 0x38, 0xf6, 0x8f, 0x17, - 0x60, 0x42, 0x7e, 0x41, 0xad, 0xb3, 0x19, 0x92, 0x08, 0x6d, 0x40, 0xc9, 0xe1, 0xb3, 0x44, 0xe4, - 0x22, 0xbf, 0x98, 0x2d, 0x47, 0x30, 0xa6, 0x34, 0xbe, 0xf0, 0x17, 0x65, 0x6d, 0x1c, 0x13, 0x42, - 0x4d, 0x98, 0xf6, 0xfc, 0x88, 0x1d, 0xfe, 0x0a, 0xde, 0x4d, 0xb5, 0x93, 0xa4, 0x7e, 0x56, 0x50, - 0x9f, 0x5e, 0x4f, 0x52, 0xc1, 0x69, 0xc2, 0x68, 0x45, 0xca, 0x66, 0x8a, 0xf9, 0xc2, 0x00, 0x7d, - 0xe2, 0xb2, 0x45, 0x33, 0xf6, 0xaf, 0x5a, 0x50, 0x92, 0x68, 0x27, 0xa1, 0xc5, 0x5b, 0x83, 0xe1, - 0x90, 0x4d, 0x82, 0x1c, 0x1a, 0xbb, 0x5b, 0xc7, 0xf9, 0x7c, 0xc5, 0x77, 0x1a, 0xff, 0x1f, 0x62, - 0x49, 0x83, 0x89, 0xe6, 0x55, 0xf7, 0xdf, 0x25, 0xa2, 0x79, 0xd5, 0x9f, 0x9c, 0x4b, 0xe9, 0x8f, - 0x58, 0x9f, 0x35, 0x59, 0x17, 0x65, 0xbd, 0xda, 0x01, 0xd9, 0x72, 0xef, 0x27, 0x59, 0xaf, 0x2a, - 0x2b, 0xc5, 0x02, 0x8a, 0xde, 0x84, 0xb1, 0xba, 0x94, 0xc9, 0xc6, 0x3b, 0xfc, 0x52, 0x57, 0xfd, - 0x80, 0x52, 0x25, 0x71, 0x59, 0xc8, 0xb2, 0x56, 0x1f, 0x1b, 0xd4, 0x4c, 0x33, 0x82, 0x62, 0x2f, - 0x33, 0x82, 0x98, 0x6e, 0xbe, 0x52, 0xfd, 0x27, 0x2d, 0x18, 0xe2, 0xb2, 0xb8, 0xfe, 0x44, 0xa1, - 0x9a, 0x66, 0x2d, 0x1e, 0xbb, 0x3b, 0xb4, 0x50, 0x68, 0xca, 0xd0, 0x1a, 0x94, 0xd8, 0x0f, 0x26, - 0x4b, 0x2c, 0xe6, 0x5b, 0xdd, 0xf3, 0x56, 0xf5, 0x0e, 0xde, 0x91, 0xd5, 0x70, 0x4c, 0xc1, 0xfe, - 0xd1, 0x22, 0x3d, 0xdd, 0x62, 0x54, 0xe3, 0xd2, 0xb7, 0x1e, 0xdd, 0xa5, 0x5f, 0x78, 0x54, 0x97, - 0xfe, 0x36, 0x4c, 0xd6, 0x35, 0x3d, 0x5c, 0x3c, 0x93, 0x97, 0xbb, 0x2e, 0x12, 0x4d, 0x65, 0xc7, - 0xa5, 0x2c, 0xcb, 0x26, 0x11, 0x9c, 0xa4, 0x8a, 0xbe, 0x03, 0xc6, 0xf8, 0x3c, 0x8b, 0x56, 0xb8, - 0x25, 0xc6, 0x07, 0xf2, 0xd7, 0x8b, 0xde, 0x04, 0x97, 0xca, 0x69, 0xd5, 0xb1, 0x41, 0xcc, 0xfe, - 0x53, 0x0b, 0xd0, 0x4a, 0x7b, 0x87, 0xb4, 0x48, 0xe0, 0x34, 0x63, 0x71, 0xfa, 0x0f, 0x5a, 0x30, - 0x4b, 0x52, 0xc5, 0xcb, 0x7e, 0xab, 0x25, 0x1e, 0x2d, 0x39, 0xef, 0xea, 0x95, 0x9c, 0x3a, 0xca, - 0x2d, 0x61, 0x36, 0x0f, 0x03, 0xe7, 0xb6, 0x87, 0xd6, 0x60, 0x86, 0xdf, 0x92, 0x0a, 0xa0, 0xd9, - 0x5e, 0x3f, 0x2e, 0x08, 0xcf, 0x6c, 0xa4, 0x51, 0x70, 0x56, 0x3d, 0xfb, 0x7b, 0xc6, 0x20, 0xb7, - 0x17, 0xef, 0xe9, 0x11, 0xde, 0xd3, 0x23, 0xbc, 0xa7, 0x47, 0x78, 0x4f, 0x8f, 0xf0, 0x9e, 0x1e, - 0xe1, 0x5b, 0x5e, 0x8f, 0xf0, 0xff, 0x5b, 0x70, 0x5a, 0x5d, 0x03, 0xc6, 0xc3, 0xf7, 0xf3, 0x30, - 0xc3, 0xb7, 0xdb, 0x72, 0xd3, 0x71, 0x5b, 0x1b, 0xa4, 0xd5, 0x6e, 0x3a, 0x91, 0xd4, 0xba, 0x5f, - 0xcd, 0x5c, 0xb9, 0x09, 0x8b, 0x55, 0xa3, 0xe2, 0xd2, 0x63, 0xf4, 0x7a, 0xca, 0x00, 0xe0, 0xac, - 0x66, 0xec, 0x5f, 0x1a, 0x81, 0xc1, 0x95, 0x3d, 0xe2, 0x45, 0x27, 0xf0, 0x44, 0xa8, 0xc3, 0x84, - 0xeb, 0xed, 0xf9, 0xcd, 0x3d, 0xd2, 0xe0, 0xf0, 0xa3, 0xbc, 0x64, 0xcf, 0x08, 0xd2, 0x13, 0x15, - 0x83, 0x04, 0x4e, 0x90, 0x7c, 0x14, 0xd2, 0xe4, 0x6b, 0x30, 0xc4, 0x0f, 0x71, 0x21, 0x4a, 0xce, - 0x3c, 0xb3, 0xd9, 0x20, 0x8a, 0xab, 0x29, 0x96, 0x74, 0xf3, 0x4b, 0x42, 0x54, 0x47, 0x9f, 0x83, - 0x89, 0x2d, 0x37, 0x08, 0xa3, 0x0d, 0xb7, 0x45, 0xc2, 0xc8, 0x69, 0xb5, 0x1f, 0x42, 0x7a, 0xac, - 0xc6, 0x61, 0xd5, 0xa0, 0x84, 0x13, 0x94, 0xd1, 0x36, 0x8c, 0x37, 0x1d, 0xbd, 0xa9, 0xe1, 0x23, - 0x37, 0xa5, 0x6e, 0x87, 0x9b, 0x3a, 0x21, 0x6c, 0xd2, 0xa5, 0xdb, 0xa9, 0xce, 0x04, 0xa0, 0x23, - 0x4c, 0x2c, 0xa0, 0xb6, 0x13, 0x97, 0x7c, 0x72, 0x18, 0x65, 0x74, 0x98, 0x81, 0x6c, 0xc9, 0x64, - 0x74, 0x34, 0x33, 0xd8, 0xcf, 0x42, 0x89, 0xd0, 0x21, 0xa4, 0x84, 0xc5, 0x05, 0x73, 0xa5, 0xbf, - 0xbe, 0xae, 0xb9, 0xf5, 0xc0, 0x37, 0xe5, 0xf6, 0x2b, 0x92, 0x12, 0x8e, 0x89, 0xa2, 0x65, 0x18, - 0x0a, 0x49, 0xe0, 0x92, 0x50, 0x5c, 0x35, 0x5d, 0xa6, 0x91, 0xa1, 0x71, 0xdf, 0x12, 0xfe, 0x1b, - 0x8b, 0xaa, 0x74, 0x79, 0x39, 0x4c, 0xa4, 0xc9, 0x2e, 0x03, 0x6d, 0x79, 0x2d, 0xb2, 0x52, 0x2c, - 0xa0, 0xe8, 0x75, 0x18, 0x0e, 0x48, 0x93, 0x29, 0x86, 0xc6, 0xfb, 0x5f, 0xe4, 0x5c, 0xcf, 0xc4, - 0xeb, 0x61, 0x49, 0x00, 0xdd, 0x00, 0x14, 0x10, 0xca, 0x28, 0xb9, 0xde, 0xb6, 0x32, 0x1b, 0x15, - 0x07, 0xad, 0x62, 0x48, 0x71, 0x8c, 0x21, 0xdd, 0x7c, 0x70, 0x46, 0x35, 0x74, 0x0d, 0xa6, 0x55, - 0x69, 0xc5, 0x0b, 0x23, 0x87, 0x1e, 0x70, 0x93, 0x8c, 0x96, 0x92, 0x53, 0xe0, 0x24, 0x02, 0x4e, - 0xd7, 0xb1, 0xbf, 0x6c, 0x01, 0x1f, 0xe7, 0x13, 0x78, 0x9d, 0xbf, 0x66, 0xbe, 0xce, 0xcf, 0xe6, - 0xce, 0x5c, 0xce, 0xcb, 0xfc, 0xcb, 0x16, 0x8c, 0x6a, 0x33, 0x1b, 0xaf, 0x59, 0xab, 0xcb, 0x9a, - 0xed, 0xc0, 0x14, 0x5d, 0xe9, 0xb7, 0x36, 0x43, 0x12, 0xec, 0x91, 0x06, 0x5b, 0x98, 0x85, 0x87, - 0x5b, 0x98, 0xca, 0x44, 0xed, 0x66, 0x82, 0x20, 0x4e, 0x35, 0x61, 0x7f, 0x56, 0x76, 0x55, 0x59, - 0xf4, 0xd5, 0xd5, 0x9c, 0x27, 0x2c, 0xfa, 0xd4, 0xac, 0xe2, 0x18, 0x87, 0x6e, 0xb5, 0x1d, 0x3f, - 0x8c, 0x92, 0x16, 0x7d, 0xd7, 0xfd, 0x30, 0xc2, 0x0c, 0x62, 0xbf, 0x00, 0xb0, 0x72, 0x9f, 0xd4, - 0xf9, 0x8a, 0xd5, 0x1f, 0x0f, 0x56, 0xfe, 0xe3, 0xc1, 0xfe, 0x6d, 0x0b, 0x26, 0x56, 0x97, 0x8d, - 0x9b, 0x6b, 0x01, 0x80, 0xbf, 0x78, 0xee, 0xde, 0x5d, 0x97, 0xea, 0x70, 0xae, 0xd1, 0x54, 0xa5, - 0x58, 0xc3, 0x40, 0x67, 0xa1, 0xd8, 0xec, 0x78, 0x42, 0x7c, 0x38, 0x4c, 0xaf, 0xc7, 0x9b, 0x1d, - 0x0f, 0xd3, 0x32, 0xcd, 0xa5, 0xa0, 0xd8, 0xb7, 0x4b, 0x41, 0x4f, 0xd7, 0x7e, 0x34, 0x0f, 0x83, - 0xf7, 0xee, 0xb9, 0x0d, 0xee, 0x40, 0x29, 0x54, 0xf5, 0x77, 0xef, 0x56, 0xca, 0x21, 0xe6, 0xe5, - 0xf6, 0x97, 0x8a, 0x30, 0xb7, 0xda, 0x24, 0xf7, 0xdf, 0xa1, 0x13, 0x69, 0xbf, 0x0e, 0x11, 0x47, - 0x13, 0xc4, 0x1c, 0xd5, 0xe9, 0xa5, 0xf7, 0x78, 0x6c, 0xc1, 0x30, 0x37, 0x68, 0x93, 0x2e, 0xa5, - 0xaf, 0x66, 0xb5, 0x9e, 0x3f, 0x20, 0x0b, 0xdc, 0x30, 0x4e, 0x78, 0xc4, 0xa9, 0x0b, 0x53, 0x94, - 0x62, 0x49, 0x7c, 0xee, 0x15, 0x18, 0xd3, 0x31, 0x8f, 0xe4, 0x7e, 0xf6, 0xff, 0x14, 0x61, 0x8a, - 0xf6, 0xe0, 0x91, 0x4e, 0xc4, 0xed, 0xf4, 0x44, 0x1c, 0xb7, 0x0b, 0x52, 0xef, 0xd9, 0x78, 0x33, - 0x39, 0x1b, 0x57, 0xf3, 0x66, 0xe3, 0xa4, 0xe7, 0xe0, 0xbb, 0x2d, 0x98, 0x59, 0x6d, 0xfa, 0xf5, - 0xdd, 0x84, 0x9b, 0xd0, 0x4b, 0x30, 0x4a, 0x8f, 0xe3, 0xd0, 0xf0, 0x60, 0x37, 0x62, 0x1a, 0x08, - 0x10, 0xd6, 0xf1, 0xb4, 0x6a, 0xb7, 0x6f, 0x57, 0xca, 0x59, 0xa1, 0x10, 0x04, 0x08, 0xeb, 0x78, - 0xf6, 0x6f, 0x5a, 0x70, 0xee, 0xda, 0xf2, 0x4a, 0xbc, 0x14, 0x53, 0xd1, 0x18, 0x2e, 0xc1, 0x50, - 0xbb, 0xa1, 0x75, 0x25, 0x16, 0xaf, 0x96, 0x59, 0x2f, 0x04, 0xf4, 0xdd, 0x12, 0x69, 0xe4, 0x67, - 0x2d, 0x98, 0xb9, 0xe6, 0x46, 0xf4, 0x76, 0x4d, 0xc6, 0x05, 0xa0, 0xd7, 0x6b, 0xe8, 0x46, 0x7e, - 0xb0, 0x9f, 0x8c, 0x0b, 0x80, 0x15, 0x04, 0x6b, 0x58, 0xbc, 0xe5, 0x3d, 0x97, 0x99, 0x52, 0x17, - 0x4c, 0x45, 0x13, 0x16, 0xe5, 0x58, 0x61, 0xd0, 0x0f, 0x6b, 0xb8, 0x01, 0x93, 0xd1, 0xed, 0x8b, - 0x13, 0x56, 0x7d, 0x58, 0x59, 0x02, 0x70, 0x8c, 0x63, 0xff, 0xb1, 0x05, 0xf3, 0xd7, 0x9a, 0x9d, - 0x30, 0x22, 0xc1, 0x56, 0x98, 0x73, 0x3a, 0xbe, 0x00, 0x25, 0x22, 0x25, 0xe2, 0xa2, 0xd7, 0x8a, - 0x63, 0x54, 0xa2, 0x72, 0x1e, 0x9e, 0x40, 0xe1, 0xf5, 0xe1, 0x74, 0x78, 0x34, 0xaf, 0xb1, 0x55, - 0x40, 0x44, 0x6f, 0x4b, 0x8f, 0xd7, 0xc0, 0x1c, 0xbf, 0x57, 0x52, 0x50, 0x9c, 0x51, 0xc3, 0xfe, - 0x09, 0x0b, 0x4e, 0xab, 0x0f, 0x7e, 0xd7, 0x7d, 0xa6, 0xfd, 0xf3, 0x05, 0x18, 0xbf, 0xbe, 0xb1, - 0x51, 0xbd, 0x46, 0x22, 0x71, 0x6d, 0xf7, 0xd6, 0x73, 0x63, 0x4d, 0x5d, 0xd7, 0xed, 0x31, 0xd7, - 0x89, 0xdc, 0xe6, 0x02, 0x0f, 0xfb, 0xb3, 0x50, 0xf1, 0xa2, 0x5b, 0x41, 0x2d, 0x0a, 0x5c, 0x6f, - 0x3b, 0x53, 0xc1, 0x27, 0x99, 0x8b, 0x62, 0x1e, 0x73, 0x81, 0x5e, 0x80, 0x21, 0x16, 0x77, 0x48, - 0x4e, 0xc2, 0xe3, 0xea, 0x2d, 0xc4, 0x4a, 0x0f, 0x0f, 0xe6, 0x4b, 0xb7, 0x71, 0x85, 0xff, 0xc1, - 0x02, 0x15, 0xdd, 0x86, 0xd1, 0x9d, 0x28, 0x6a, 0x5f, 0x27, 0x4e, 0x83, 0x04, 0xf2, 0x38, 0x3c, - 0x9f, 0x75, 0x1c, 0xd2, 0x41, 0xe0, 0x68, 0xf1, 0x09, 0x12, 0x97, 0x85, 0x58, 0xa7, 0x63, 0xd7, - 0x00, 0x62, 0xd8, 0x31, 0x69, 0x2a, 0xec, 0x3f, 0xb4, 0x60, 0x98, 0x87, 0x80, 0x08, 0xd0, 0x47, - 0x61, 0x80, 0xdc, 0x27, 0x75, 0xc1, 0xf1, 0x66, 0x76, 0x38, 0xe6, 0xb4, 0xb8, 0xc4, 0x95, 0xfe, - 0xc7, 0xac, 0x16, 0xba, 0x0e, 0xc3, 0xb4, 0xb7, 0xd7, 0x54, 0x3c, 0x8c, 0x27, 0xf3, 0xbe, 0x58, - 0x4d, 0x3b, 0x67, 0xce, 0x44, 0x11, 0x96, 0xd5, 0x99, 0x7a, 0xb8, 0xde, 0xae, 0xd1, 0x13, 0x3b, - 0xea, 0xc6, 0x58, 0x6c, 0x2c, 0x57, 0x39, 0x92, 0xa0, 0xc6, 0xd5, 0xc3, 0xb2, 0x10, 0xc7, 0x44, - 0xec, 0x0d, 0x28, 0xd1, 0x49, 0x5d, 0x6c, 0xba, 0x4e, 0x77, 0x8d, 0xf7, 0x33, 0x50, 0x92, 0xfa, - 0xec, 0x50, 0xb8, 0x7e, 0x33, 0xaa, 0x52, 0xdd, 0x1d, 0xe2, 0x18, 0x6e, 0x6f, 0xc1, 0x29, 0x66, - 0x9d, 0xe8, 0x44, 0x3b, 0xc6, 0x1e, 0xeb, 0xbd, 0x98, 0x9f, 0x15, 0x0f, 0x48, 0x3e, 0x33, 0xb3, - 0x9a, 0x77, 0xe5, 0x98, 0xa4, 0x18, 0x3f, 0x26, 0xed, 0xaf, 0x0f, 0xc0, 0xe3, 0x95, 0x5a, 0x7e, - 0x74, 0x90, 0x97, 0x61, 0x8c, 0xf3, 0xa5, 0x74, 0x69, 0x3b, 0x4d, 0xd1, 0xae, 0x12, 0xb5, 0x6e, - 0x68, 0x30, 0x6c, 0x60, 0xa2, 0x73, 0x50, 0x74, 0xdf, 0xf2, 0x92, 0xbe, 0x47, 0x95, 0x37, 0xd6, - 0x31, 0x2d, 0xa7, 0x60, 0xca, 0xe2, 0xf2, 0xbb, 0x43, 0x81, 0x15, 0x9b, 0xfb, 0x1a, 0x4c, 0xb8, - 0x61, 0x3d, 0x74, 0x2b, 0x1e, 0x3d, 0x67, 0xb4, 0x93, 0x4a, 0x09, 0x37, 0x68, 0xa7, 0x15, 0x14, - 0x27, 0xb0, 0xb5, 0x8b, 0x6c, 0xb0, 0x6f, 0x36, 0xb9, 0xa7, 0x2f, 0x34, 0x7d, 0x01, 0xb4, 0xd9, - 0xd7, 0x85, 0x4c, 0x66, 0x2e, 0x5e, 0x00, 0xfc, 0x83, 0x43, 0x2c, 0x61, 0xf4, 0xe5, 0x58, 0xdf, - 0x71, 0xda, 0x8b, 0x9d, 0x68, 0xa7, 0xec, 0x86, 0x75, 0x7f, 0x8f, 0x04, 0xfb, 0xec, 0xd1, 0x3f, - 0x12, 0xbf, 0x1c, 0x15, 0x60, 0xf9, 0xfa, 0x62, 0x95, 0x62, 0xe2, 0x74, 0x1d, 0xb4, 0x08, 0x93, - 0xb2, 0xb0, 0x46, 0x42, 0x76, 0x85, 0x8d, 0x32, 0x32, 0xca, 0x1b, 0x48, 0x14, 0x2b, 0x22, 0x49, - 0x7c, 0x93, 0x93, 0x86, 0xe3, 0xe0, 0xa4, 0x3f, 0x02, 0xe3, 0xae, 0xe7, 0x46, 0xae, 0x13, 0xf9, - 0x5c, 0xe1, 0xc3, 0xdf, 0xf7, 0x4c, 0x92, 0x5d, 0xd1, 0x01, 0xd8, 0xc4, 0xb3, 0xff, 0xf3, 0x00, - 0x4c, 0xb3, 0x69, 0x7b, 0x6f, 0x85, 0x7d, 0x2b, 0xad, 0xb0, 0xdb, 0xe9, 0x15, 0x76, 0x1c, 0x4f, - 0x84, 0x87, 0x5e, 0x66, 0x9f, 0x83, 0x92, 0x72, 0x80, 0x92, 0x1e, 0x90, 0x56, 0x8e, 0x07, 0x64, - 0x6f, 0xee, 0x43, 0xda, 0x90, 0x15, 0x33, 0x6d, 0xc8, 0xfe, 0xaa, 0x05, 0xb1, 0x06, 0x03, 0x5d, - 0x87, 0x52, 0xdb, 0x67, 0xa6, 0x91, 0x81, 0xb4, 0x37, 0x7e, 0x3c, 0xf3, 0xa2, 0xe2, 0x97, 0x22, - 0xff, 0xf8, 0xaa, 0xac, 0x81, 0xe3, 0xca, 0x68, 0x09, 0x86, 0xdb, 0x01, 0xa9, 0x45, 0x2c, 0x48, - 0x48, 0x4f, 0x3a, 0x7c, 0x8d, 0x70, 0x7c, 0x2c, 0x2b, 0xda, 0xbf, 0x60, 0x01, 0x70, 0x33, 0x2d, - 0xc7, 0xdb, 0x26, 0x27, 0x20, 0xb5, 0x2e, 0xc3, 0x40, 0xd8, 0x26, 0xf5, 0x6e, 0x46, 0xab, 0x71, - 0x7f, 0x6a, 0x6d, 0x52, 0x8f, 0x07, 0x9c, 0xfe, 0xc3, 0xac, 0xb6, 0xfd, 0xbd, 0x00, 0x13, 0x31, - 0x5a, 0x25, 0x22, 0x2d, 0xf4, 0x9c, 0x11, 0x34, 0xe0, 0x6c, 0x22, 0x68, 0x40, 0x89, 0x61, 0x6b, - 0x02, 0xd2, 0xcf, 0x41, 0xb1, 0xe5, 0xdc, 0x17, 0x12, 0xb0, 0x67, 0xba, 0x77, 0x83, 0xd2, 0x5f, - 0x58, 0x73, 0xee, 0xf3, 0x47, 0xe2, 0x33, 0x72, 0x81, 0xac, 0x39, 0xf7, 0x0f, 0xb9, 0x69, 0x2a, - 0x3b, 0xa4, 0x6e, 0xba, 0x61, 0xf4, 0x85, 0xff, 0x14, 0xff, 0x67, 0xcb, 0x8e, 0x36, 0xc2, 0xda, - 0x72, 0x3d, 0x61, 0x81, 0xd4, 0x57, 0x5b, 0xae, 0x97, 0x6c, 0xcb, 0xf5, 0xfa, 0x68, 0xcb, 0xf5, - 0xd0, 0xdb, 0x30, 0x2c, 0x0c, 0x04, 0x45, 0x90, 0x9e, 0x2b, 0x7d, 0xb4, 0x27, 0xec, 0x0b, 0x79, - 0x9b, 0x57, 0xe4, 0x23, 0x58, 0x94, 0xf6, 0x6c, 0x57, 0x36, 0x88, 0xfe, 0x92, 0x05, 0x13, 0xe2, - 0x37, 0x26, 0x6f, 0x75, 0x48, 0x18, 0x09, 0xde, 0xf3, 0xc3, 0xfd, 0xf7, 0x41, 0x54, 0xe4, 0x5d, - 0xf9, 0xb0, 0x3c, 0x66, 0x4d, 0x60, 0xcf, 0x1e, 0x25, 0x7a, 0x81, 0xfe, 0x8e, 0x05, 0xa7, 0x5a, - 0xce, 0x7d, 0xde, 0x22, 0x2f, 0xc3, 0x4e, 0xe4, 0xfa, 0x42, 0xd1, 0xfe, 0xd1, 0xfe, 0xa6, 0x3f, - 0x55, 0x9d, 0x77, 0x52, 0x6a, 0x03, 0x4f, 0x65, 0xa1, 0xf4, 0xec, 0x6a, 0x66, 0xbf, 0xe6, 0xb6, - 0x60, 0x44, 0xae, 0xb7, 0x0c, 0x51, 0x43, 0x59, 0x67, 0xac, 0x8f, 0x6c, 0x9f, 0xa9, 0x3b, 0xe3, - 0xd3, 0x76, 0xc4, 0x5a, 0x7b, 0xa4, 0xed, 0x7c, 0x0e, 0xc6, 0xf4, 0x35, 0xf6, 0x48, 0xdb, 0x7a, - 0x0b, 0x66, 0x32, 0xd6, 0xd2, 0x23, 0x6d, 0xf2, 0x1e, 0x9c, 0xcd, 0x5d, 0x1f, 0x8f, 0xb2, 0x61, - 0xfb, 0xe7, 0x2d, 0xfd, 0x1c, 0x3c, 0x01, 0xd5, 0xc1, 0xb2, 0xa9, 0x3a, 0x38, 0xdf, 0x7d, 0xe7, - 0xe4, 0xe8, 0x0f, 0xde, 0xd4, 0x3b, 0x4d, 0x4f, 0x75, 0xf4, 0x3a, 0x0c, 0x35, 0x69, 0x89, 0x34, - 0x33, 0xb5, 0x7b, 0xef, 0xc8, 0x98, 0x97, 0x62, 0xe5, 0x21, 0x16, 0x14, 0xec, 0x5f, 0xb6, 0x60, - 0xe0, 0x04, 0x46, 0x02, 0x9b, 0x23, 0xf1, 0x5c, 0x2e, 0x69, 0x11, 0x3f, 0x78, 0x01, 0x3b, 0xf7, - 0x56, 0xee, 0x47, 0xc4, 0x0b, 0xd9, 0x53, 0x31, 0x73, 0x60, 0x7e, 0xda, 0x82, 0x99, 0x9b, 0xbe, - 0xd3, 0x58, 0x72, 0x9a, 0x8e, 0x57, 0x27, 0x41, 0xc5, 0xdb, 0x3e, 0x92, 0x8d, 0x74, 0xa1, 0xa7, - 0x8d, 0xf4, 0xb2, 0x34, 0x31, 0x1a, 0xc8, 0x9f, 0x3f, 0xca, 0x48, 0x26, 0xc3, 0xa8, 0x18, 0xc6, - 0xb0, 0x3b, 0x80, 0xf4, 0x5e, 0x0a, 0x8f, 0x15, 0x0c, 0xc3, 0x2e, 0xef, 0xaf, 0x98, 0xc4, 0xa7, - 0xb2, 0x19, 0xbc, 0xd4, 0xe7, 0x69, 0xbe, 0x18, 0xbc, 0x00, 0x4b, 0x42, 0xf6, 0xcb, 0x90, 0xe9, - 0xf6, 0xde, 0x5b, 0xf8, 0x60, 0x7f, 0x12, 0xa6, 0x59, 0xcd, 0x23, 0x3e, 0x8c, 0xed, 0x84, 0x6c, - 0x33, 0x23, 0x20, 0x9e, 0xfd, 0x45, 0x0b, 0x26, 0xd7, 0x13, 0x71, 0xc2, 0x2e, 0x31, 0x6d, 0x68, - 0x86, 0x48, 0xbd, 0xc6, 0x4a, 0xb1, 0x80, 0x1e, 0xbb, 0x24, 0xeb, 0x2f, 0x2c, 0x88, 0x23, 0x51, - 0x9c, 0x00, 0xfb, 0xb6, 0x6c, 0xb0, 0x6f, 0x99, 0x12, 0x16, 0xd5, 0x9d, 0x3c, 0xee, 0x0d, 0xdd, - 0x50, 0x31, 0x9a, 0xba, 0x08, 0x57, 0x62, 0x32, 0x7c, 0x29, 0x4e, 0x98, 0x81, 0x9c, 0x64, 0xd4, - 0x26, 0xfb, 0x77, 0x0a, 0x80, 0x14, 0x6e, 0xdf, 0x31, 0xa4, 0xd2, 0x35, 0x8e, 0x27, 0x86, 0xd4, - 0x1e, 0x20, 0xa6, 0xcf, 0x0f, 0x1c, 0x2f, 0xe4, 0x64, 0x5d, 0x21, 0xbb, 0x3b, 0x9a, 0xb1, 0xc0, - 0x9c, 0x68, 0x12, 0xdd, 0x4c, 0x51, 0xc3, 0x19, 0x2d, 0x68, 0x76, 0x1a, 0x83, 0xfd, 0xda, 0x69, - 0x0c, 0xf5, 0xf0, 0x4a, 0xfb, 0x39, 0x0b, 0xc6, 0xd5, 0x30, 0xbd, 0x4b, 0x6c, 0xc6, 0x55, 0x7f, - 0x72, 0x0e, 0xd0, 0xaa, 0xd6, 0x65, 0x76, 0xb1, 0x7c, 0x3b, 0xf3, 0x2e, 0x74, 0x9a, 0xee, 0xdb, - 0x44, 0x45, 0xf0, 0x9b, 0x17, 0xde, 0x82, 0xa2, 0xf4, 0xf0, 0x60, 0x7e, 0x5c, 0xfd, 0xe3, 0x11, - 0x83, 0xe3, 0x2a, 0xf4, 0x48, 0x9e, 0x4c, 0x2c, 0x45, 0xf4, 0x12, 0x0c, 0xb6, 0x77, 0x9c, 0x90, - 0x24, 0x7c, 0x6b, 0x06, 0xab, 0xb4, 0xf0, 0xf0, 0x60, 0x7e, 0x42, 0x55, 0x60, 0x25, 0x98, 0x63, - 0xf7, 0x1f, 0x99, 0x2b, 0xbd, 0x38, 0x7b, 0x46, 0xe6, 0xfa, 0x53, 0x0b, 0x06, 0xd6, 0xfd, 0xc6, - 0x49, 0x1c, 0x01, 0xaf, 0x19, 0x47, 0xc0, 0x13, 0x79, 0xc1, 0xdc, 0x73, 0x77, 0xff, 0x6a, 0x62, - 0xf7, 0x9f, 0xcf, 0xa5, 0xd0, 0x7d, 0xe3, 0xb7, 0x60, 0x94, 0x85, 0x88, 0x17, 0x7e, 0x44, 0x2f, - 0x18, 0x1b, 0x7e, 0x3e, 0xb1, 0xe1, 0x27, 0x35, 0x54, 0x6d, 0xa7, 0x3f, 0x0d, 0xc3, 0xc2, 0x31, - 0x25, 0xe9, 0xa4, 0x29, 0x70, 0xb1, 0x84, 0xdb, 0x3f, 0x59, 0x04, 0x23, 0x24, 0x3d, 0xfa, 0x55, - 0x0b, 0x16, 0x02, 0x6e, 0xb0, 0xda, 0x28, 0x77, 0x02, 0xd7, 0xdb, 0xae, 0xd5, 0x77, 0x48, 0xa3, - 0xd3, 0x74, 0xbd, 0xed, 0xca, 0xb6, 0xe7, 0xab, 0xe2, 0x95, 0xfb, 0xa4, 0xde, 0x61, 0x4a, 0xb0, - 0x1e, 0xf1, 0xef, 0x95, 0xe1, 0xf7, 0xf3, 0x0f, 0x0e, 0xe6, 0x17, 0xf0, 0x91, 0x68, 0xe3, 0x23, - 0xf6, 0x05, 0xfd, 0xa6, 0x05, 0x57, 0x78, 0xa4, 0xf6, 0xfe, 0xfb, 0xdf, 0xe5, 0xb5, 0x5c, 0x95, - 0xa4, 0x62, 0x22, 0x1b, 0x24, 0x68, 0x2d, 0x7d, 0x44, 0x0c, 0xe8, 0x95, 0xea, 0xd1, 0xda, 0xc2, - 0x47, 0xed, 0x9c, 0xfd, 0x4f, 0x8a, 0x30, 0x2e, 0x22, 0x38, 0x89, 0x3b, 0xe0, 0x25, 0x63, 0x49, - 0x3c, 0x99, 0x58, 0x12, 0xd3, 0x06, 0xf2, 0xf1, 0x1c, 0xff, 0x21, 0x4c, 0xd3, 0xc3, 0xf9, 0x3a, - 0x71, 0x82, 0x68, 0x93, 0x38, 0xdc, 0xfc, 0xaa, 0x78, 0xe4, 0xd3, 0x5f, 0x89, 0xe7, 0x6e, 0x26, - 0x89, 0xe1, 0x34, 0xfd, 0x6f, 0xa5, 0x3b, 0xc7, 0x83, 0xa9, 0x54, 0x10, 0xae, 0x4f, 0x41, 0x49, - 0x79, 0x55, 0x88, 0x43, 0xa7, 0x7b, 0x2c, 0xbb, 0x24, 0x05, 0x2e, 0x42, 0x8b, 0x3d, 0x7a, 0x62, - 0x72, 0xf6, 0xdf, 0x2b, 0x18, 0x0d, 0xf2, 0x49, 0x5c, 0x87, 0x11, 0x27, 0x0c, 0xdd, 0x6d, 0x8f, - 0x34, 0xc4, 0x8e, 0x7d, 0x7f, 0xde, 0x8e, 0x35, 0x9a, 0x61, 0x9e, 0x2d, 0x8b, 0xa2, 0x26, 0x56, - 0x34, 0xd0, 0x75, 0x6e, 0xe4, 0xb6, 0x27, 0xdf, 0x7b, 0xfd, 0x51, 0x03, 0x69, 0x06, 0xb7, 0x47, - 0xb0, 0xa8, 0x8f, 0x3e, 0xcd, 0xad, 0x10, 0x6f, 0x78, 0xfe, 0x3d, 0xef, 0x9a, 0xef, 0xcb, 0x28, - 0x09, 0xfd, 0x11, 0x9c, 0x96, 0xb6, 0x87, 0xaa, 0x3a, 0x36, 0xa9, 0xf5, 0x17, 0xd5, 0xf2, 0xf3, - 0x30, 0x43, 0x49, 0x9b, 0x4e, 0xcc, 0x21, 0x22, 0x30, 0x29, 0xc2, 0x83, 0xc9, 0x32, 0x31, 0x76, - 0x99, 0x4f, 0x39, 0xb3, 0x76, 0x2c, 0x47, 0xbe, 0x61, 0x92, 0xc0, 0x49, 0x9a, 0xf6, 0xcf, 0x58, - 0xc0, 0x1c, 0x3a, 0x4f, 0x80, 0x1f, 0xf9, 0x98, 0xc9, 0x8f, 0xcc, 0xe6, 0x0d, 0x72, 0x0e, 0x2b, - 0xf2, 0x22, 0x5f, 0x59, 0xd5, 0xc0, 0xbf, 0xbf, 0x2f, 0x4c, 0x47, 0x7a, 0xbf, 0x3f, 0xec, 0xff, - 0x65, 0xf1, 0x43, 0x4c, 0xf9, 0x3c, 0xa0, 0xef, 0x84, 0x91, 0xba, 0xd3, 0x76, 0xea, 0x3c, 0x7f, - 0x4a, 0xae, 0x44, 0xcf, 0xa8, 0xb4, 0xb0, 0x2c, 0x6a, 0x70, 0x09, 0x95, 0x0c, 0x33, 0x37, 0x22, - 0x8b, 0x7b, 0x4a, 0xa5, 0x54, 0x93, 0x73, 0xbb, 0x30, 0x6e, 0x10, 0x7b, 0xa4, 0xe2, 0x8c, 0xef, - 0xe4, 0x57, 0xac, 0x0a, 0x8b, 0xd8, 0x82, 0x69, 0x4f, 0xfb, 0x4f, 0x2f, 0x14, 0xf9, 0xb8, 0x7c, - 0x7f, 0xaf, 0x4b, 0x94, 0xdd, 0x3e, 0x9a, 0xaf, 0x68, 0x82, 0x0c, 0x4e, 0x53, 0xb6, 0x7f, 0xca, - 0x82, 0xc7, 0x74, 0x44, 0xcd, 0x1d, 0xa5, 0x97, 0x8e, 0xa0, 0x0c, 0x23, 0x7e, 0x9b, 0x04, 0x4e, - 0xe4, 0x07, 0xe2, 0xd6, 0xb8, 0x2c, 0x07, 0xfd, 0x96, 0x28, 0x3f, 0x14, 0xd1, 0xc7, 0x25, 0x75, - 0x59, 0x8e, 0x55, 0x4d, 0xfa, 0xfa, 0x64, 0x83, 0x11, 0x0a, 0xc7, 0x23, 0x76, 0x06, 0x30, 0x75, - 0x79, 0x88, 0x05, 0xc4, 0xfe, 0xba, 0xc5, 0x17, 0x96, 0xde, 0x75, 0xf4, 0x16, 0x4c, 0xb5, 0x9c, - 0xa8, 0xbe, 0xb3, 0x72, 0xbf, 0x1d, 0x70, 0x8d, 0x8b, 0x1c, 0xa7, 0x67, 0x7a, 0x8d, 0x93, 0xf6, - 0x91, 0xb1, 0x61, 0xe5, 0x5a, 0x82, 0x18, 0x4e, 0x91, 0x47, 0x9b, 0x30, 0xca, 0xca, 0x98, 0x4f, - 0x5d, 0xd8, 0x8d, 0x35, 0xc8, 0x6b, 0x4d, 0x59, 0x1c, 0xac, 0xc5, 0x74, 0xb0, 0x4e, 0xd4, 0xfe, - 0x4a, 0x91, 0xef, 0x76, 0xc6, 0xca, 0x3f, 0x0d, 0xc3, 0x6d, 0xbf, 0xb1, 0x5c, 0x29, 0x63, 0x31, - 0x0b, 0xea, 0x1a, 0xa9, 0xf2, 0x62, 0x2c, 0xe1, 0xe8, 0x32, 0x8c, 0x88, 0x9f, 0x52, 0x43, 0xc6, - 0xce, 0x66, 0x81, 0x17, 0x62, 0x05, 0x45, 0xcf, 0x03, 0xb4, 0x03, 0x7f, 0xcf, 0x6d, 0xb0, 0x58, - 0x0f, 0x45, 0xd3, 0x58, 0xa8, 0xaa, 0x20, 0x58, 0xc3, 0x42, 0xaf, 0xc2, 0x78, 0xc7, 0x0b, 0x39, - 0x3b, 0xa2, 0x45, 0x76, 0x55, 0x66, 0x2c, 0xb7, 0x75, 0x20, 0x36, 0x71, 0xd1, 0x22, 0x0c, 0x45, - 0x0e, 0x33, 0x7e, 0x19, 0xcc, 0x37, 0xbe, 0xdd, 0xa0, 0x18, 0x7a, 0xaa, 0x0e, 0x5a, 0x01, 0x8b, - 0x8a, 0xe8, 0x53, 0xd2, 0xbd, 0x95, 0x1f, 0xec, 0xc2, 0xea, 0xbd, 0xbf, 0x4b, 0x40, 0x73, 0x6e, - 0x15, 0xd6, 0xf4, 0x06, 0x2d, 0xf4, 0x0a, 0x00, 0xb9, 0x1f, 0x91, 0xc0, 0x73, 0x9a, 0xca, 0xb6, - 0x4c, 0xf1, 0x05, 0x65, 0x7f, 0xdd, 0x8f, 0x6e, 0x87, 0x64, 0x45, 0x61, 0x60, 0x0d, 0xdb, 0xfe, - 0xcd, 0x12, 0x40, 0xcc, 0xb7, 0xa3, 0xb7, 0x53, 0x07, 0xd7, 0xb3, 0xdd, 0x39, 0xfd, 0xe3, 0x3b, - 0xb5, 0xd0, 0xf7, 0x59, 0x30, 0xea, 0x34, 0x9b, 0x7e, 0xdd, 0xe1, 0xb1, 0x77, 0x0b, 0xdd, 0x0f, - 0x4e, 0xd1, 0xfe, 0x62, 0x5c, 0x83, 0x77, 0xe1, 0x05, 0xb9, 0x42, 0x35, 0x48, 0xcf, 0x5e, 0xe8, - 0x0d, 0xa3, 0x0f, 0xc9, 0xa7, 0x62, 0xd1, 0x18, 0x4a, 0xf5, 0x54, 0x2c, 0xb1, 0x3b, 0x42, 0x7f, - 0x25, 0xde, 0x36, 0x5e, 0x89, 0x03, 0xf9, 0xfe, 0x7b, 0x06, 0xfb, 0xda, 0xeb, 0x81, 0x88, 0xaa, - 0xba, 0x2f, 0xff, 0x60, 0xbe, 0xb3, 0x9c, 0xf6, 0x4e, 0xea, 0xe1, 0xc7, 0xff, 0x39, 0x98, 0x6c, - 0x98, 0x4c, 0x80, 0x58, 0x89, 0x4f, 0xe5, 0xd1, 0x4d, 0xf0, 0x0c, 0xf1, 0xb5, 0x9f, 0x00, 0xe0, - 0x24, 0x61, 0x54, 0xe5, 0xa1, 0x1d, 0x2a, 0xde, 0x96, 0x2f, 0x3c, 0x2f, 0xec, 0xdc, 0xb9, 0xdc, - 0x0f, 0x23, 0xd2, 0xa2, 0x98, 0xf1, 0xed, 0xbe, 0x2e, 0xea, 0x62, 0x45, 0x05, 0xbd, 0x0e, 0x43, - 0xcc, 0x5b, 0x2a, 0x9c, 0x1d, 0xc9, 0x97, 0x38, 0x9b, 0xb1, 0xca, 0xe2, 0x0d, 0xc9, 0xfe, 0x86, - 0x58, 0x50, 0x40, 0xd7, 0xa5, 0x2f, 0x62, 0x58, 0xf1, 0x6e, 0x87, 0x84, 0xf9, 0x22, 0x96, 0x96, - 0xde, 0x1f, 0xbb, 0x19, 0xf2, 0xf2, 0xcc, 0x84, 0x5e, 0x46, 0x4d, 0xca, 0x45, 0x89, 0xff, 0x32, - 0x4f, 0xd8, 0x2c, 0xe4, 0x77, 0xcf, 0xcc, 0x25, 0x16, 0x0f, 0xe7, 0x1d, 0x93, 0x04, 0x4e, 0xd2, - 0xa4, 0x1c, 0x29, 0xdf, 0xf5, 0xc2, 0x77, 0xa3, 0xd7, 0xd9, 0xc1, 0x1f, 0xe2, 0xec, 0x36, 0xe2, - 0x25, 0x58, 0xd4, 0x3f, 0x51, 0xf6, 0x60, 0xce, 0x83, 0xa9, 0xe4, 0x16, 0x7d, 0xa4, 0xec, 0xc8, - 0x1f, 0x0e, 0xc0, 0x84, 0xb9, 0xa4, 0xd0, 0x15, 0x28, 0x09, 0x22, 0x2a, 0xb6, 0xbf, 0xda, 0x25, - 0x6b, 0x12, 0x80, 0x63, 0x1c, 0x96, 0xd2, 0x81, 0x55, 0xd7, 0x8c, 0x75, 0xe3, 0x94, 0x0e, 0x0a, - 0x82, 0x35, 0x2c, 0xfa, 0xb0, 0xda, 0xf4, 0xfd, 0x48, 0x5d, 0x48, 0x6a, 0xdd, 0x2d, 0xb1, 0x52, - 0x2c, 0xa0, 0xf4, 0x22, 0xda, 0x25, 0x81, 0x47, 0x9a, 0x66, 0x14, 0x60, 0x75, 0x11, 0xdd, 0xd0, - 0x81, 0xd8, 0xc4, 0xa5, 0xd7, 0xa9, 0x1f, 0xb2, 0x85, 0x2c, 0x9e, 0x6f, 0xb1, 0xf1, 0x73, 0x8d, - 0xbb, 0x43, 0x4b, 0x38, 0xfa, 0x24, 0x3c, 0xa6, 0x22, 0x1d, 0x61, 0xae, 0xcd, 0x90, 0x2d, 0x0e, - 0x19, 0xd2, 0x96, 0xc7, 0x96, 0xb3, 0xd1, 0x70, 0x5e, 0x7d, 0xf4, 0x1a, 0x4c, 0x08, 0x16, 0x5f, - 0x52, 0x1c, 0x36, 0x0d, 0x6c, 0x6e, 0x18, 0x50, 0x9c, 0xc0, 0x96, 0x71, 0x8c, 0x19, 0x97, 0x2d, - 0x29, 0x8c, 0xa4, 0xe3, 0x18, 0xeb, 0x70, 0x9c, 0xaa, 0x81, 0x16, 0x61, 0x92, 0xf3, 0x60, 0xae, - 0xb7, 0xcd, 0xe7, 0x44, 0xb8, 0x56, 0xa9, 0x2d, 0x75, 0xcb, 0x04, 0xe3, 0x24, 0x3e, 0x7a, 0x19, - 0xc6, 0x9c, 0xa0, 0xbe, 0xe3, 0x46, 0xa4, 0x1e, 0x75, 0x02, 0xee, 0x73, 0xa5, 0x59, 0x28, 0x2d, - 0x6a, 0x30, 0x6c, 0x60, 0xda, 0x6f, 0xc3, 0x4c, 0x46, 0x9c, 0x04, 0xba, 0x70, 0x9c, 0xb6, 0x2b, - 0xbf, 0x29, 0x61, 0xc6, 0xbc, 0x58, 0xad, 0xc8, 0xaf, 0xd1, 0xb0, 0xe8, 0xea, 0x64, 0xf1, 0x14, - 0xb4, 0xb4, 0x80, 0x6a, 0x75, 0xae, 0x4a, 0x00, 0x8e, 0x71, 0xec, 0xff, 0x56, 0x80, 0xc9, 0x0c, - 0xdd, 0x0a, 0x4b, 0x4d, 0x97, 0x78, 0xa4, 0xc4, 0x99, 0xe8, 0xcc, 0xb0, 0xd8, 0x85, 0x23, 0x84, - 0xc5, 0x2e, 0xf6, 0x0a, 0x8b, 0x3d, 0xf0, 0x4e, 0xc2, 0x62, 0x9b, 0x23, 0x36, 0xd8, 0xd7, 0x88, - 0x65, 0x84, 0xd2, 0x1e, 0x3a, 0x62, 0x28, 0x6d, 0x63, 0xd0, 0x87, 0xfb, 0x18, 0xf4, 0x1f, 0x2d, - 0xc0, 0x54, 0xd2, 0x92, 0xf2, 0x04, 0xe4, 0xb6, 0xaf, 0x1b, 0x72, 0xdb, 0xcb, 0xfd, 0xb8, 0xc2, - 0xe6, 0xca, 0x70, 0x71, 0x42, 0x86, 0xfb, 0xc1, 0xbe, 0xa8, 0x75, 0x97, 0xe7, 0xfe, 0xf5, 0x02, - 0x9c, 0xce, 0xf4, 0xc5, 0x3d, 0x81, 0xb1, 0xb9, 0x65, 0x8c, 0xcd, 0x73, 0x7d, 0xbb, 0x09, 0xe7, - 0x0e, 0xd0, 0xdd, 0xc4, 0x00, 0x5d, 0xe9, 0x9f, 0x64, 0xf7, 0x51, 0xfa, 0x5a, 0x11, 0xce, 0x67, - 0xd6, 0x8b, 0xc5, 0x9e, 0xab, 0x86, 0xd8, 0xf3, 0xf9, 0x84, 0xd8, 0xd3, 0xee, 0x5e, 0xfb, 0x78, - 0xe4, 0xa0, 0xc2, 0x5d, 0x96, 0x39, 0xfd, 0x3f, 0xa4, 0x0c, 0xd4, 0x70, 0x97, 0x55, 0x84, 0xb0, - 0x49, 0xf7, 0x5b, 0x49, 0xf6, 0xf9, 0xaf, 0x2d, 0x38, 0x9b, 0x39, 0x37, 0x27, 0x20, 0xeb, 0x5a, - 0x37, 0x65, 0x5d, 0x4f, 0xf7, 0xbd, 0x5a, 0x73, 0x84, 0x5f, 0x5f, 0x19, 0xcc, 0xf9, 0x16, 0xf6, - 0x92, 0xbf, 0x05, 0xa3, 0x4e, 0xbd, 0x4e, 0xc2, 0x70, 0xcd, 0x6f, 0xa8, 0xc8, 0xbf, 0xcf, 0xb1, - 0x77, 0x56, 0x5c, 0x7c, 0x78, 0x30, 0x3f, 0x97, 0x24, 0x11, 0x83, 0xb1, 0x4e, 0x01, 0x7d, 0x1a, - 0x46, 0x42, 0x71, 0x6f, 0x8a, 0xb9, 0x7f, 0xa1, 0xcf, 0xc1, 0x71, 0x36, 0x49, 0xd3, 0x0c, 0x4d, - 0xa4, 0x24, 0x15, 0x8a, 0xa4, 0x19, 0xc6, 0xa4, 0x70, 0xac, 0x61, 0x4c, 0x9e, 0x07, 0xd8, 0x53, - 0x8f, 0x81, 0xa4, 0xfc, 0x41, 0x7b, 0x26, 0x68, 0x58, 0xe8, 0xe3, 0x30, 0x15, 0xf2, 0xd8, 0x7d, - 0xcb, 0x4d, 0x27, 0x64, 0xce, 0x32, 0x62, 0x15, 0xb2, 0xf0, 0x47, 0xb5, 0x04, 0x0c, 0xa7, 0xb0, - 0xd1, 0xaa, 0x6c, 0x95, 0x05, 0x1a, 0xe4, 0x0b, 0xf3, 0x52, 0xdc, 0xa2, 0x48, 0x8c, 0x7b, 0x2a, - 0x39, 0xfc, 0x6c, 0xe0, 0xb5, 0x9a, 0xe8, 0xd3, 0x00, 0x74, 0xf9, 0x08, 0x39, 0xc4, 0x70, 0xfe, - 0xe1, 0x49, 0x4f, 0x95, 0x46, 0xa6, 0x6d, 0x2f, 0xf3, 0x70, 0x2d, 0x2b, 0x22, 0x58, 0x23, 0x88, - 0xb6, 0x60, 0x3c, 0xfe, 0x17, 0xe7, 0x8d, 0x3c, 0x62, 0x0b, 0x4c, 0xee, 0x5d, 0xd6, 0xe9, 0x60, - 0x93, 0xac, 0xfd, 0xa3, 0x03, 0xf0, 0x78, 0x97, 0xb3, 0x18, 0x2d, 0x9a, 0xfa, 0xde, 0x67, 0x92, - 0x8f, 0xf8, 0xb9, 0xcc, 0xca, 0xc6, 0xab, 0x3e, 0xb1, 0xe4, 0x0b, 0xef, 0x78, 0xc9, 0xff, 0x90, - 0xa5, 0x89, 0x57, 0xb8, 0x65, 0xe9, 0xc7, 0x8e, 0x78, 0xc7, 0x1c, 0xa3, 0xbc, 0x65, 0x2b, 0x43, - 0x68, 0xf1, 0x7c, 0xdf, 0xdd, 0xe9, 0x5b, 0x8a, 0x71, 0xb2, 0xd2, 0xe8, 0xdf, 0xb6, 0xe0, 0x5c, - 0xd7, 0xe0, 0x20, 0xdf, 0x84, 0x8c, 0x89, 0xfd, 0x05, 0x0b, 0x9e, 0xcc, 0xac, 0x61, 0x98, 0x33, - 0x5d, 0x81, 0x52, 0x9d, 0x16, 0x6a, 0xde, 0xa0, 0xb1, 0x9b, 0xbc, 0x04, 0xe0, 0x18, 0xc7, 0xb0, - 0x5a, 0x2a, 0xf4, 0xb4, 0x5a, 0xfa, 0x35, 0x0b, 0x52, 0x87, 0xcb, 0x09, 0xdc, 0x72, 0x15, 0xf3, - 0x96, 0x7b, 0x7f, 0x3f, 0xa3, 0x99, 0x73, 0xc1, 0xfd, 0xc9, 0x24, 0x9c, 0xc9, 0xf1, 0x86, 0xda, - 0x83, 0xe9, 0xed, 0x3a, 0x31, 0xfd, 0x6c, 0xbb, 0xc5, 0x9f, 0xe9, 0xea, 0x94, 0xcb, 0x52, 0x84, - 0x4e, 0xa7, 0x50, 0x70, 0xba, 0x09, 0xf4, 0x05, 0x0b, 0x4e, 0x39, 0xf7, 0xc2, 0x15, 0xca, 0xad, - 0xb8, 0xf5, 0xa5, 0xa6, 0x5f, 0xdf, 0xa5, 0x57, 0x81, 0xdc, 0x08, 0x2f, 0x66, 0x4a, 0x90, 0xee, - 0xd6, 0x52, 0xf8, 0x46, 0xf3, 0x2c, 0x67, 0x6a, 0x16, 0x16, 0xce, 0x6c, 0x0b, 0x61, 0x11, 0x48, - 0x9f, 0xbe, 0x85, 0xba, 0x78, 0x82, 0x67, 0xb9, 0xad, 0xf1, 0xeb, 0x57, 0x42, 0xb0, 0xa2, 0x83, - 0x3e, 0x0b, 0xa5, 0x6d, 0xe9, 0x4b, 0x9a, 0x71, 0xbd, 0xc7, 0x03, 0xd9, 0xdd, 0xc3, 0x96, 0xab, - 0x81, 0x15, 0x12, 0x8e, 0x89, 0xa2, 0xd7, 0xa0, 0xe8, 0x6d, 0x85, 0xdd, 0xd2, 0x8e, 0x26, 0xec, - 0xfd, 0x78, 0xbc, 0x85, 0xf5, 0xd5, 0x1a, 0xa6, 0x15, 0xd1, 0x75, 0x28, 0x06, 0x9b, 0x0d, 0x21, - 0xfe, 0xcc, 0xdc, 0xa4, 0x78, 0xa9, 0x9c, 0xd3, 0x2b, 0x46, 0x09, 0x2f, 0x95, 0x31, 0x25, 0x81, - 0xaa, 0x30, 0xc8, 0x5c, 0x88, 0xc4, 0x65, 0x9a, 0xf9, 0x6c, 0xe8, 0xe2, 0x8a, 0xc7, 0x83, 0x32, - 0x30, 0x04, 0xcc, 0x09, 0xa1, 0x0d, 0x18, 0xaa, 0xb3, 0x14, 0x95, 0xe2, 0xf6, 0xfc, 0x50, 0xa6, - 0xa0, 0xb3, 0x4b, 0xee, 0x4e, 0x21, 0xf7, 0x63, 0x18, 0x58, 0xd0, 0x62, 0x54, 0x49, 0x7b, 0x67, - 0x2b, 0x14, 0x29, 0x95, 0xb3, 0xa9, 0x76, 0x49, 0x49, 0x2b, 0xa8, 0x32, 0x0c, 0x2c, 0x68, 0xa1, - 0x57, 0xa0, 0xb0, 0x55, 0x17, 0xee, 0x41, 0x99, 0x12, 0x4f, 0x33, 0x64, 0xc6, 0xd2, 0xd0, 0x83, - 0x83, 0xf9, 0xc2, 0xea, 0x32, 0x2e, 0x6c, 0xd5, 0xd1, 0x3a, 0x0c, 0x6f, 0x71, 0x27, 0x7b, 0x21, - 0xd4, 0x7c, 0x2a, 0xdb, 0xff, 0x3f, 0xe5, 0x87, 0xcf, 0x3d, 0x63, 0x04, 0x00, 0x4b, 0x22, 0x2c, - 0x2e, 0xbd, 0x0a, 0x16, 0x20, 0x62, 0x95, 0x2d, 0x1c, 0x2d, 0xc0, 0x03, 0x67, 0x6e, 0xe2, 0x90, - 0x03, 0x58, 0xa3, 0x48, 0x57, 0xb5, 0x23, 0xf3, 0xda, 0x8b, 0xa0, 0x36, 0x99, 0xab, 0xba, 0x47, - 0xca, 0x7f, 0xbe, 0xaa, 0x15, 0x12, 0x8e, 0x89, 0xa2, 0x5d, 0x18, 0xdf, 0x0b, 0xdb, 0x3b, 0x44, - 0x6e, 0x69, 0x16, 0xe3, 0x26, 0xe7, 0x5e, 0xbe, 0x23, 0x10, 0xdd, 0x20, 0xea, 0x38, 0xcd, 0xd4, - 0x29, 0xc4, 0x78, 0xa8, 0x3b, 0x3a, 0x31, 0x6c, 0xd2, 0xa6, 0xc3, 0xff, 0x56, 0xc7, 0xdf, 0xdc, - 0x8f, 0x88, 0x08, 0x31, 0x96, 0x39, 0xfc, 0x6f, 0x70, 0x94, 0xf4, 0xf0, 0x0b, 0x00, 0x96, 0x44, - 0xd0, 0x1d, 0x31, 0x3c, 0xec, 0xf4, 0x9c, 0xca, 0x8f, 0x03, 0xba, 0x28, 0x91, 0x72, 0x06, 0x85, - 0x9d, 0x96, 0x31, 0x29, 0x76, 0x4a, 0xb6, 0x77, 0xfc, 0xc8, 0xf7, 0x12, 0x27, 0xf4, 0x74, 0xfe, - 0x29, 0x59, 0xcd, 0xc0, 0x4f, 0x9f, 0x92, 0x59, 0x58, 0x38, 0xb3, 0x2d, 0xd4, 0x80, 0x89, 0xb6, - 0x1f, 0x44, 0xf7, 0xfc, 0x40, 0xae, 0x2f, 0xd4, 0x45, 0x28, 0x63, 0x60, 0x8a, 0x16, 0x59, 0xf4, - 0x3e, 0x13, 0x82, 0x13, 0x34, 0xd1, 0x27, 0x60, 0x38, 0xac, 0x3b, 0x4d, 0x52, 0xb9, 0x35, 0x3b, - 0x93, 0x7f, 0xfd, 0xd4, 0x38, 0x4a, 0xce, 0xea, 0xe2, 0x41, 0xec, 0x39, 0x0a, 0x96, 0xe4, 0xd0, - 0x2a, 0x0c, 0xb2, 0xbc, 0x63, 0x2c, 0x1e, 0x5e, 0x4e, 0x38, 0xd3, 0x94, 0xf5, 0x35, 0x3f, 0x9b, - 0x58, 0x31, 0xe6, 0xd5, 0xe9, 0x1e, 0x10, 0x6f, 0x13, 0x3f, 0x9c, 0x3d, 0x9d, 0xbf, 0x07, 0xc4, - 0x93, 0xe6, 0x56, 0xad, 0xdb, 0x1e, 0x50, 0x48, 0x38, 0x26, 0x4a, 0x4f, 0x66, 0x7a, 0x9a, 0x9e, - 0xe9, 0x62, 0x36, 0x94, 0x7b, 0x96, 0xb2, 0x93, 0x99, 0x9e, 0xa4, 0x94, 0x84, 0xfd, 0xfb, 0xc3, - 0x69, 0x9e, 0x85, 0xbd, 0x66, 0xbf, 0xc7, 0x4a, 0x29, 0x3a, 0x3f, 0xdc, 0xaf, 0x70, 0xed, 0x18, - 0x59, 0xf0, 0x2f, 0x58, 0x70, 0xa6, 0x9d, 0xf9, 0x21, 0x82, 0x01, 0xe8, 0x4f, 0x46, 0xc7, 0x3f, - 0x5d, 0xc5, 0x4e, 0xcc, 0x86, 0xe3, 0x9c, 0x96, 0x92, 0xcf, 0x9c, 0xe2, 0x3b, 0x7e, 0xe6, 0xac, - 0xc1, 0x08, 0x63, 0x32, 0x7b, 0xa4, 0x6c, 0x4e, 0xbe, 0xf9, 0x18, 0x2b, 0xb1, 0x2c, 0x2a, 0x62, - 0x45, 0x02, 0xfd, 0xb0, 0x05, 0xe7, 0x92, 0x5d, 0xc7, 0x84, 0x81, 0x45, 0xc0, 0x45, 0xfe, 0x90, - 0x5e, 0x15, 0xdf, 0x9f, 0xe2, 0xff, 0x0d, 0xe4, 0xc3, 0x5e, 0x08, 0xb8, 0x7b, 0x63, 0xa8, 0x9c, - 0xf1, 0x92, 0x1f, 0x32, 0xb5, 0x17, 0x7d, 0xbc, 0xe6, 0x5f, 0x84, 0xb1, 0x96, 0xdf, 0xf1, 0x22, - 0x61, 0x65, 0x24, 0x2c, 0x1e, 0x98, 0xa6, 0x7f, 0x4d, 0x2b, 0xc7, 0x06, 0x56, 0x42, 0x06, 0x30, - 0xf2, 0xd0, 0x32, 0x80, 0x37, 0x61, 0xcc, 0xd3, 0xcc, 0x62, 0x05, 0x3f, 0x70, 0x29, 0x3f, 0x58, - 0xaa, 0x6e, 0x44, 0xcb, 0x7b, 0xa9, 0x97, 0x60, 0x83, 0xda, 0xc9, 0x3e, 0xf8, 0xbe, 0x6c, 0x65, - 0x30, 0xf5, 0x5c, 0x04, 0xf0, 0x51, 0x53, 0x04, 0x70, 0x29, 0x29, 0x02, 0x48, 0x49, 0xae, 0x8d, - 0xd7, 0x7f, 0xff, 0xb9, 0x60, 0xfa, 0x0d, 0xb8, 0x68, 0x37, 0xe1, 0x42, 0xaf, 0x6b, 0x89, 0x99, - 0x9b, 0x35, 0x94, 0x9e, 0x32, 0x36, 0x37, 0x6b, 0x54, 0xca, 0x98, 0x41, 0xfa, 0x0d, 0xe5, 0x63, - 0xff, 0x17, 0x0b, 0x8a, 0x55, 0xbf, 0x71, 0x02, 0x0f, 0xde, 0x8f, 0x19, 0x0f, 0xde, 0xc7, 0xb3, - 0x2f, 0xc4, 0x46, 0xae, 0xdc, 0x7d, 0x25, 0x21, 0x77, 0x3f, 0x97, 0x47, 0xa0, 0xbb, 0x94, 0xfd, - 0xa7, 0x8b, 0x30, 0x5a, 0xf5, 0x1b, 0xca, 0xd6, 0xfb, 0x9f, 0x3d, 0x8c, 0xad, 0x77, 0x6e, 0x46, - 0x03, 0x8d, 0x32, 0xb3, 0x52, 0x93, 0x6e, 0xae, 0xdf, 0x64, 0x26, 0xdf, 0x77, 0x89, 0xbb, 0xbd, - 0x13, 0x91, 0x46, 0xf2, 0x73, 0x4e, 0xce, 0xe4, 0xfb, 0xf7, 0x0b, 0x30, 0x99, 0x68, 0x1d, 0x35, - 0x61, 0xbc, 0xa9, 0x4b, 0x75, 0xc5, 0x3a, 0x7d, 0x28, 0x81, 0xb0, 0x30, 0x99, 0xd5, 0x8a, 0xb0, - 0x49, 0x1c, 0x2d, 0x00, 0x28, 0x35, 0xa7, 0x14, 0xeb, 0x31, 0xae, 0x5f, 0xe9, 0x41, 0x43, 0xac, - 0x61, 0xa0, 0x97, 0x60, 0x34, 0xf2, 0xdb, 0x7e, 0xd3, 0xdf, 0xde, 0xbf, 0x41, 0x64, 0xf0, 0x28, - 0x65, 0x08, 0xb7, 0x11, 0x83, 0xb0, 0x8e, 0x87, 0xee, 0xc3, 0xb4, 0x22, 0x52, 0x3b, 0x06, 0x49, - 0x37, 0x93, 0x2a, 0xac, 0x27, 0x29, 0xe2, 0x74, 0x23, 0xf6, 0xcf, 0x16, 0xf9, 0x10, 0x7b, 0x91, - 0xfb, 0xde, 0x6e, 0x78, 0x77, 0xef, 0x86, 0xaf, 0x59, 0x30, 0x45, 0x5b, 0x67, 0x56, 0x3e, 0xf2, - 0x9a, 0x57, 0xe1, 0x99, 0xad, 0x2e, 0xe1, 0x99, 0x2f, 0xd1, 0x53, 0xb3, 0xe1, 0x77, 0x22, 0x21, - 0xbb, 0xd3, 0x8e, 0x45, 0x5a, 0x8a, 0x05, 0x54, 0xe0, 0x91, 0x20, 0x10, 0x9e, 0x89, 0x3a, 0x1e, - 0x09, 0x02, 0x2c, 0xa0, 0x32, 0x7a, 0xf3, 0x40, 0x76, 0xf4, 0x66, 0x1e, 0x84, 0x53, 0xd8, 0x83, - 0x08, 0x86, 0x4b, 0x0b, 0xc2, 0x29, 0x0d, 0x45, 0x62, 0x1c, 0xfb, 0xe7, 0x8b, 0x30, 0x56, 0xf5, - 0x1b, 0xb1, 0x8a, 0xf3, 0x45, 0x43, 0xc5, 0x79, 0x21, 0xa1, 0xe2, 0x9c, 0xd2, 0x71, 0xdf, 0x53, - 0x68, 0x7e, 0xa3, 0x14, 0x9a, 0xff, 0xd8, 0x62, 0xb3, 0x56, 0x5e, 0xaf, 0x71, 0xa3, 0x31, 0x74, - 0x15, 0x46, 0xd9, 0x01, 0xc3, 0x5c, 0x61, 0xa5, 0xde, 0x8f, 0x65, 0x25, 0x5a, 0x8f, 0x8b, 0xb1, - 0x8e, 0x83, 0x2e, 0xc3, 0x48, 0x48, 0x9c, 0xa0, 0xbe, 0xa3, 0x4e, 0x57, 0xa1, 0xa4, 0xe3, 0x65, - 0x58, 0x41, 0xd1, 0x1b, 0x71, 0xfc, 0xc7, 0x62, 0xbe, 0x6b, 0x9d, 0xde, 0x1f, 0xbe, 0x45, 0xf2, - 0x83, 0x3e, 0xda, 0x77, 0x01, 0xa5, 0xf1, 0xfb, 0x08, 0x7c, 0x36, 0x6f, 0x06, 0x3e, 0x2b, 0xa5, - 0x82, 0x9e, 0xfd, 0xb9, 0x05, 0x13, 0x55, 0xbf, 0x41, 0xb7, 0xee, 0xb7, 0xd2, 0x3e, 0xd5, 0x83, - 0xdf, 0x0e, 0x75, 0x09, 0x7e, 0x7b, 0x11, 0x06, 0xab, 0x7e, 0xa3, 0x52, 0xed, 0xe6, 0xd7, 0x6e, - 0xff, 0x0d, 0x0b, 0x86, 0xab, 0x7e, 0xe3, 0x04, 0xd4, 0x02, 0x1f, 0x35, 0xd5, 0x02, 0x8f, 0xe5, - 0xac, 0x9b, 0x1c, 0x4d, 0xc0, 0x5f, 0x1b, 0x80, 0x71, 0xda, 0x4f, 0x7f, 0x5b, 0x4e, 0xa5, 0x31, - 0x6c, 0x56, 0x1f, 0xc3, 0x46, 0xb9, 0x70, 0xbf, 0xd9, 0xf4, 0xef, 0x25, 0xa7, 0x75, 0x95, 0x95, - 0x62, 0x01, 0x45, 0xcf, 0xc2, 0x48, 0x3b, 0x20, 0x7b, 0xae, 0x2f, 0xd8, 0x5b, 0x4d, 0xc9, 0x52, - 0x15, 0xe5, 0x58, 0x61, 0xd0, 0x67, 0x61, 0xe8, 0x7a, 0xf4, 0x2a, 0xaf, 0xfb, 0x5e, 0x83, 0x4b, - 0xce, 0x8b, 0x22, 0x43, 0x83, 0x56, 0x8e, 0x0d, 0x2c, 0x74, 0x17, 0x4a, 0xec, 0x3f, 0x3b, 0x76, - 0x8e, 0x9e, 0xeb, 0x53, 0xe4, 0x7e, 0x13, 0x04, 0x70, 0x4c, 0x0b, 0x3d, 0x0f, 0x10, 0xc9, 0x28, - 0xe7, 0xa1, 0x08, 0x72, 0xa5, 0x9e, 0x02, 0x2a, 0xfe, 0x79, 0x88, 0x35, 0x2c, 0xf4, 0x0c, 0x94, - 0x22, 0xc7, 0x6d, 0xde, 0x74, 0x3d, 0x12, 0x32, 0x89, 0x78, 0x51, 0xa6, 0x60, 0x13, 0x85, 0x38, - 0x86, 0x53, 0x56, 0x8c, 0x45, 0x80, 0xe0, 0x99, 0x82, 0x47, 0x18, 0x36, 0x63, 0xc5, 0x6e, 0xaa, - 0x52, 0xac, 0x61, 0xa0, 0x1d, 0x78, 0xc2, 0xf5, 0x58, 0x36, 0x03, 0x52, 0xdb, 0x75, 0xdb, 0x1b, - 0x37, 0x6b, 0x77, 0x48, 0xe0, 0x6e, 0xed, 0x2f, 0x39, 0xf5, 0x5d, 0xe2, 0xc9, 0x2c, 0x8e, 0xef, - 0x17, 0x5d, 0x7c, 0xa2, 0xd2, 0x05, 0x17, 0x77, 0xa5, 0x64, 0xbf, 0x0c, 0xa7, 0xab, 0x7e, 0xa3, - 0xea, 0x07, 0xd1, 0xaa, 0x1f, 0xdc, 0x73, 0x82, 0x86, 0x5c, 0x29, 0xf3, 0x32, 0x1a, 0x03, 0x3d, - 0x0a, 0x07, 0xf9, 0x41, 0x61, 0x44, 0x5a, 0x78, 0x81, 0x31, 0x5f, 0x47, 0xf4, 0x21, 0xaa, 0x33, - 0x36, 0x40, 0xa5, 0xf6, 0xb8, 0xe6, 0x44, 0x04, 0xdd, 0x62, 0x29, 0x8b, 0xe3, 0x1b, 0x51, 0x54, - 0x7f, 0x5a, 0x4b, 0x59, 0x1c, 0x03, 0x33, 0xaf, 0x50, 0xb3, 0xbe, 0xfd, 0x5f, 0x07, 0xd9, 0xe1, - 0x98, 0x48, 0x0f, 0x81, 0x3e, 0x03, 0x13, 0x21, 0xb9, 0xe9, 0x7a, 0x9d, 0xfb, 0x52, 0x1a, 0xd1, - 0xc5, 0x0b, 0xac, 0xb6, 0xa2, 0x63, 0x72, 0x99, 0xa6, 0x59, 0x86, 0x13, 0xd4, 0x50, 0x0b, 0x26, - 0xee, 0xb9, 0x5e, 0xc3, 0xbf, 0x17, 0x4a, 0xfa, 0x23, 0xf9, 0xa2, 0xcd, 0xbb, 0x1c, 0x33, 0xd1, - 0x47, 0xa3, 0xb9, 0xbb, 0x06, 0x31, 0x9c, 0x20, 0x4e, 0x17, 0x60, 0xd0, 0xf1, 0x16, 0xc3, 0xdb, - 0x21, 0x09, 0x44, 0xf2, 0x69, 0xb6, 0x00, 0xb1, 0x2c, 0xc4, 0x31, 0x9c, 0x2e, 0x40, 0xf6, 0xe7, - 0x5a, 0xe0, 0x77, 0x78, 0x2e, 0x02, 0xb1, 0x00, 0xb1, 0x2a, 0xc5, 0x1a, 0x06, 0xdd, 0xa0, 0xec, - 0xdf, 0xba, 0xef, 0x61, 0xdf, 0x8f, 0xe4, 0x96, 0x66, 0xe9, 0x4e, 0xb5, 0x72, 0x6c, 0x60, 0xa1, - 0x55, 0x40, 0x61, 0xa7, 0xdd, 0x6e, 0x32, 0xf3, 0x12, 0xa7, 0xc9, 0x48, 0x71, 0x95, 0x7b, 0x91, - 0x87, 0x68, 0xad, 0xa5, 0xa0, 0x38, 0xa3, 0x06, 0x3d, 0xab, 0xb7, 0x44, 0x57, 0x07, 0x59, 0x57, - 0xb9, 0x1a, 0xa4, 0xc6, 0xfb, 0x29, 0x61, 0x68, 0x05, 0x86, 0xc3, 0xfd, 0xb0, 0x1e, 0x89, 0x58, - 0x73, 0x39, 0x19, 0x80, 0x6a, 0x0c, 0x45, 0x4b, 0x40, 0xc7, 0xab, 0x60, 0x59, 0x17, 0xd5, 0x61, - 0x46, 0x50, 0x5c, 0xde, 0x71, 0x3c, 0x95, 0x4f, 0x85, 0x5b, 0xd9, 0x5e, 0x7d, 0x70, 0x30, 0x3f, - 0x23, 0x5a, 0xd6, 0xc1, 0x87, 0x07, 0xf3, 0x67, 0xaa, 0x7e, 0x23, 0x03, 0x82, 0xb3, 0xa8, 0xf1, - 0xc5, 0x57, 0xaf, 0xfb, 0xad, 0x76, 0x35, 0xf0, 0xb7, 0xdc, 0x26, 0xe9, 0xa6, 0x4a, 0xaa, 0x19, - 0x98, 0x62, 0xf1, 0x19, 0x65, 0x38, 0x41, 0xcd, 0xfe, 0x4e, 0xc6, 0xcf, 0xb0, 0x7c, 0xcb, 0x51, - 0x27, 0x20, 0xa8, 0x05, 0xe3, 0x6d, 0xb6, 0x4d, 0x44, 0x86, 0x00, 0xb1, 0xd6, 0x5f, 0xec, 0x53, - 0x24, 0x72, 0x8f, 0x5e, 0x03, 0xa6, 0x99, 0x4a, 0x55, 0x27, 0x87, 0x4d, 0xea, 0xf6, 0x4f, 0x3c, - 0xc6, 0x6e, 0xc4, 0x1a, 0x97, 0x73, 0x0c, 0x0b, 0xa3, 0x7e, 0xf1, 0xb4, 0x9a, 0xcb, 0x17, 0xb8, - 0xc5, 0xd3, 0x22, 0x1c, 0x03, 0xb0, 0xac, 0x8b, 0x3e, 0x0d, 0x13, 0xf4, 0xa5, 0xa2, 0x6e, 0xa5, - 0x70, 0xf6, 0x54, 0x7e, 0xf0, 0x05, 0x85, 0xa5, 0x67, 0x0f, 0xd1, 0x2b, 0xe3, 0x04, 0x31, 0xf4, - 0x06, 0x33, 0x0b, 0x91, 0xa4, 0x0b, 0xfd, 0x90, 0xd6, 0x2d, 0x40, 0x24, 0x59, 0x8d, 0x08, 0xea, - 0xc0, 0x4c, 0x3a, 0xd7, 0x58, 0x38, 0x6b, 0xe7, 0xb3, 0x7c, 0xe9, 0x74, 0x61, 0x71, 0x9a, 0x87, - 0x34, 0x2c, 0xc4, 0x59, 0xf4, 0xd1, 0x4d, 0x18, 0x17, 0x49, 0x87, 0xc5, 0xca, 0x2d, 0x1a, 0x72, - 0xc0, 0x71, 0xac, 0x03, 0x0f, 0x93, 0x05, 0xd8, 0xac, 0x8c, 0xb6, 0xe1, 0x9c, 0x96, 0x04, 0xe8, - 0x5a, 0xe0, 0x30, 0x65, 0xbe, 0xcb, 0x8e, 0x53, 0xed, 0xae, 0x7e, 0xf2, 0xc1, 0xc1, 0xfc, 0xb9, - 0x8d, 0x6e, 0x88, 0xb8, 0x3b, 0x1d, 0x74, 0x0b, 0x4e, 0x73, 0xd7, 0xe1, 0x32, 0x71, 0x1a, 0x4d, - 0xd7, 0x53, 0xcc, 0x00, 0xdf, 0xf2, 0x67, 0x1f, 0x1c, 0xcc, 0x9f, 0x5e, 0xcc, 0x42, 0xc0, 0xd9, - 0xf5, 0xd0, 0x47, 0xa1, 0xd4, 0xf0, 0x42, 0x31, 0x06, 0x43, 0x46, 0x9e, 0xa5, 0x52, 0x79, 0xbd, - 0xa6, 0xbe, 0x3f, 0xfe, 0x83, 0xe3, 0x0a, 0x68, 0x9b, 0xcb, 0x8a, 0x95, 0x04, 0x63, 0x38, 0x15, - 0x3a, 0x29, 0x29, 0xe4, 0x33, 0x9c, 0x07, 0xb9, 0x92, 0x44, 0xd9, 0xd4, 0x1b, 0x7e, 0x85, 0x06, - 0x61, 0xf4, 0x3a, 0x20, 0xfa, 0x82, 0x70, 0xeb, 0x64, 0xb1, 0xce, 0xd2, 0x4f, 0x30, 0xd1, 0xfa, - 0x88, 0xe9, 0xce, 0x56, 0x4b, 0x61, 0xe0, 0x8c, 0x5a, 0xe8, 0x3a, 0x3d, 0x55, 0xf4, 0x52, 0x71, - 0x6a, 0xa9, 0xac, 0x78, 0x65, 0xd2, 0x0e, 0x48, 0xdd, 0x89, 0x48, 0xc3, 0xa4, 0x88, 0x13, 0xf5, - 0x50, 0x03, 0x9e, 0x70, 0x3a, 0x91, 0xcf, 0xc4, 0xf0, 0x26, 0xea, 0x86, 0xbf, 0x4b, 0x3c, 0xa6, - 0x01, 0x1b, 0x59, 0xba, 0x40, 0xb9, 0x8d, 0xc5, 0x2e, 0x78, 0xb8, 0x2b, 0x15, 0xca, 0x25, 0xaa, - 0x34, 0xb8, 0x60, 0x06, 0x84, 0xca, 0x48, 0x85, 0xfb, 0x12, 0x8c, 0xee, 0xf8, 0x61, 0xb4, 0x4e, - 0xa2, 0x7b, 0x7e, 0xb0, 0x2b, 0xe2, 0x7a, 0xc6, 0xb1, 0xa0, 0x63, 0x10, 0xd6, 0xf1, 0xe8, 0x33, - 0x90, 0xd9, 0x67, 0x54, 0xca, 0x4c, 0x35, 0x3e, 0x12, 0x9f, 0x31, 0xd7, 0x79, 0x31, 0x96, 0x70, - 0x89, 0x5a, 0xa9, 0x2e, 0x33, 0x35, 0x77, 0x02, 0xb5, 0x52, 0x5d, 0xc6, 0x12, 0x4e, 0x97, 0x6b, - 0xb8, 0xe3, 0x04, 0xa4, 0x1a, 0xf8, 0x75, 0x12, 0x6a, 0x11, 0xc8, 0x1f, 0xe7, 0x51, 0x4b, 0xe9, - 0x72, 0xad, 0x65, 0x21, 0xe0, 0xec, 0x7a, 0x88, 0xa4, 0x13, 0x60, 0x4d, 0xe4, 0xeb, 0x27, 0xd2, - 0xfc, 0x4c, 0x9f, 0x39, 0xb0, 0x3c, 0x98, 0x52, 0xa9, 0xb7, 0x78, 0x9c, 0xd2, 0x70, 0x76, 0x92, - 0xad, 0xed, 0xfe, 0x83, 0x9c, 0x2a, 0x8d, 0x4f, 0x25, 0x41, 0x09, 0xa7, 0x68, 0x1b, 0x31, 0xbf, - 0xa6, 0x7a, 0xc6, 0xfc, 0xba, 0x02, 0xa5, 0xb0, 0xb3, 0xd9, 0xf0, 0x5b, 0x8e, 0xeb, 0x31, 0x35, - 0xb7, 0xf6, 0x1e, 0xa9, 0x49, 0x00, 0x8e, 0x71, 0xd0, 0x2a, 0x8c, 0x38, 0x52, 0x9d, 0x83, 0xf2, - 0xa3, 0xbc, 0x28, 0x25, 0x0e, 0x0f, 0x7c, 0x20, 0x15, 0x38, 0xaa, 0x2e, 0x7a, 0x15, 0xc6, 0x85, - 0xeb, 0xab, 0xc8, 0xfa, 0x38, 0x63, 0xfa, 0x27, 0xd5, 0x74, 0x20, 0x36, 0x71, 0xd1, 0x6d, 0x18, - 0x8d, 0xfc, 0x26, 0x73, 0xb2, 0xa1, 0x6c, 0xde, 0x99, 0xfc, 0x78, 0x65, 0x1b, 0x0a, 0x4d, 0x97, - 0xa4, 0xaa, 0xaa, 0x58, 0xa7, 0x83, 0x36, 0xf8, 0x7a, 0x67, 0x91, 0xb8, 0x49, 0x38, 0xfb, 0x58, - 0xfe, 0x9d, 0xa4, 0x02, 0x76, 0x9b, 0xdb, 0x41, 0xd4, 0xc4, 0x3a, 0x19, 0x74, 0x0d, 0xa6, 0xdb, - 0x81, 0xeb, 0xb3, 0x35, 0xa1, 0x34, 0x79, 0xb3, 0x66, 0x1a, 0xa0, 0x6a, 0x12, 0x01, 0xa7, 0xeb, - 0x30, 0xcf, 0x65, 0x51, 0x38, 0x7b, 0x96, 0x27, 0x86, 0xe6, 0xcf, 0x3b, 0x5e, 0x86, 0x15, 0x14, - 0xad, 0xb1, 0x93, 0x98, 0x4b, 0x26, 0x66, 0xe7, 0xf2, 0x03, 0xcb, 0xe8, 0x12, 0x0c, 0xce, 0xbc, - 0xaa, 0xbf, 0x38, 0xa6, 0x80, 0x1a, 0x5a, 0x06, 0x41, 0xfa, 0x62, 0x08, 0x67, 0x9f, 0xe8, 0x62, - 0x24, 0x97, 0x78, 0x5e, 0xc4, 0x0c, 0x81, 0x51, 0x1c, 0xe2, 0x04, 0x4d, 0xf4, 0x71, 0x98, 0x12, - 0xe1, 0xf0, 0xe2, 0x61, 0x3a, 0x17, 0x9b, 0x2e, 0xe3, 0x04, 0x0c, 0xa7, 0xb0, 0x79, 0x86, 0x02, - 0x67, 0xb3, 0x49, 0xc4, 0xd1, 0x77, 0xd3, 0xf5, 0x76, 0xc3, 0xd9, 0xf3, 0xec, 0x7c, 0x10, 0x19, - 0x0a, 0x92, 0x50, 0x9c, 0x51, 0x03, 0x6d, 0xc0, 0x54, 0x3b, 0x20, 0xa4, 0xc5, 0x18, 0x7d, 0x71, - 0x9f, 0xcd, 0x73, 0xc7, 0x7d, 0xda, 0x93, 0x6a, 0x02, 0x76, 0x98, 0x51, 0x86, 0x53, 0x14, 0xd0, - 0x3d, 0x18, 0xf1, 0xf7, 0x48, 0xb0, 0x43, 0x9c, 0xc6, 0xec, 0x85, 0x2e, 0xa6, 0xf4, 0xe2, 0x72, - 0xbb, 0x25, 0x70, 0x13, 0xda, 0x7f, 0x59, 0xdc, 0x5b, 0xfb, 0x2f, 0x1b, 0x43, 0x3f, 0x62, 0xc1, - 0x59, 0xa9, 0x30, 0xa8, 0xb5, 0xe9, 0xa8, 0x2f, 0xfb, 0x5e, 0x18, 0x05, 0xdc, 0xd5, 0xfc, 0xc9, - 0x7c, 0xf7, 0xeb, 0x8d, 0x9c, 0x4a, 0x4a, 0x38, 0x7a, 0x36, 0x0f, 0x23, 0xc4, 0xf9, 0x2d, 0xa2, - 0x65, 0x98, 0x0e, 0x49, 0x24, 0x0f, 0xa3, 0xc5, 0x70, 0xf5, 0x8d, 0xf2, 0xfa, 0xec, 0x45, 0xee, - 0x27, 0x4f, 0x37, 0x43, 0x2d, 0x09, 0xc4, 0x69, 0xfc, 0xb9, 0x6f, 0x87, 0xe9, 0xd4, 0xf5, 0x7f, - 0x94, 0xcc, 0x2b, 0x73, 0xbb, 0x30, 0x6e, 0x0c, 0xf1, 0x23, 0xd5, 0x1e, 0xff, 0xcb, 0x61, 0x28, - 0x29, 0xcd, 0x22, 0xba, 0x62, 0x2a, 0x8c, 0xcf, 0x26, 0x15, 0xc6, 0x23, 0xf4, 0x5d, 0xaf, 0xeb, - 0x88, 0x37, 0x32, 0xa2, 0x83, 0xe5, 0x6d, 0xe8, 0xfe, 0xdd, 0xbe, 0x35, 0x71, 0x6d, 0xb1, 0x6f, - 0xcd, 0xf3, 0x40, 0x57, 0x09, 0xf0, 0x35, 0x98, 0xf6, 0x7c, 0xc6, 0x73, 0x92, 0x86, 0x64, 0x28, - 0x18, 0xdf, 0x50, 0xd2, 0xc3, 0x6d, 0x24, 0x10, 0x70, 0xba, 0x0e, 0x6d, 0x90, 0x5f, 0xfc, 0x49, - 0x91, 0x33, 0xe7, 0x0b, 0xb0, 0x80, 0xa2, 0x8b, 0x30, 0xd8, 0xf6, 0x1b, 0x95, 0xaa, 0xe0, 0x37, - 0xb5, 0x98, 0x94, 0x8d, 0x4a, 0x15, 0x73, 0x18, 0x5a, 0x84, 0x21, 0xf6, 0x23, 0x9c, 0x1d, 0xcb, - 0x8f, 0xab, 0xc0, 0x6a, 0x68, 0x79, 0x6d, 0x58, 0x05, 0x2c, 0x2a, 0x32, 0xd1, 0x17, 0x65, 0xd2, - 0x99, 0xe8, 0x6b, 0xf8, 0x21, 0x45, 0x5f, 0x92, 0x00, 0x8e, 0x69, 0xa1, 0xfb, 0x70, 0xda, 0x78, - 0x18, 0xf1, 0x25, 0x42, 0x42, 0xe1, 0xdb, 0x7d, 0xb1, 0xeb, 0x8b, 0x48, 0x68, 0xaa, 0xcf, 0x89, - 0x4e, 0x9f, 0xae, 0x64, 0x51, 0xc2, 0xd9, 0x0d, 0xa0, 0x26, 0x4c, 0xd7, 0x53, 0xad, 0x8e, 0xf4, - 0xdf, 0xaa, 0x9a, 0xd0, 0x74, 0x8b, 0x69, 0xc2, 0xe8, 0x55, 0x18, 0x79, 0xcb, 0x0f, 0xd9, 0x59, - 0x2d, 0x78, 0x64, 0xe9, 0x18, 0x3c, 0xf2, 0xc6, 0xad, 0x1a, 0x2b, 0x3f, 0x3c, 0x98, 0x1f, 0xad, - 0xfa, 0x0d, 0xf9, 0x17, 0xab, 0x0a, 0xe8, 0xfb, 0x2d, 0x98, 0x4b, 0xbf, 0xbc, 0x54, 0xa7, 0xc7, - 0xfb, 0xef, 0xb4, 0x2d, 0x1a, 0x9d, 0x5b, 0xc9, 0x25, 0x87, 0xbb, 0x34, 0x65, 0xff, 0x8a, 0xc5, - 0xa4, 0x6e, 0x42, 0x03, 0x44, 0xc2, 0x4e, 0xf3, 0x24, 0xd2, 0x79, 0xae, 0x18, 0xca, 0xa9, 0x87, - 0xb6, 0x5c, 0xf8, 0xa7, 0x16, 0xb3, 0x5c, 0x38, 0x41, 0x17, 0x85, 0x37, 0x60, 0x24, 0x92, 0x69, - 0x56, 0xbb, 0x64, 0x20, 0xd5, 0x3a, 0xc5, 0xac, 0x37, 0x14, 0xc7, 0xaa, 0x32, 0xaa, 0x2a, 0x32, - 0xf6, 0x3f, 0xe0, 0x33, 0x20, 0x21, 0x27, 0xa0, 0x03, 0x28, 0x9b, 0x3a, 0x80, 0xf9, 0x1e, 0x5f, - 0x90, 0xa3, 0x0b, 0xf8, 0xfb, 0x66, 0xbf, 0x99, 0xa4, 0xe6, 0xdd, 0x6e, 0x32, 0x63, 0x7f, 0xd1, - 0x02, 0x88, 0x43, 0xfe, 0x32, 0xf9, 0xb2, 0x1f, 0xc8, 0x5c, 0x8e, 0x59, 0x59, 0x8b, 0x5e, 0xa6, - 0x3c, 0xaa, 0x1f, 0xf9, 0x75, 0xbf, 0x29, 0x34, 0x5c, 0x4f, 0xc4, 0x6a, 0x08, 0x5e, 0x7e, 0xa8, - 0xfd, 0xc6, 0x0a, 0x1b, 0xcd, 0xcb, 0x00, 0x63, 0xc5, 0x58, 0x31, 0x66, 0x04, 0x17, 0xfb, 0x31, - 0x0b, 0x4e, 0x65, 0xd9, 0xbb, 0xd2, 0x17, 0x0f, 0x97, 0x59, 0x29, 0x73, 0x26, 0x35, 0x9b, 0x77, - 0x44, 0x39, 0x56, 0x18, 0x7d, 0x67, 0x28, 0x3b, 0x5a, 0xac, 0xdd, 0x5b, 0x30, 0x5e, 0x0d, 0x88, - 0x76, 0xb9, 0xbe, 0xc6, 0x9d, 0xd6, 0x79, 0x7f, 0x9e, 0x3d, 0xb2, 0xc3, 0xba, 0xfd, 0x95, 0x02, - 0x9c, 0xe2, 0x56, 0x01, 0x8b, 0x7b, 0xbe, 0xdb, 0xa8, 0xfa, 0x0d, 0x91, 0x5d, 0xee, 0x53, 0x30, - 0xd6, 0xd6, 0x04, 0x8d, 0xdd, 0xe2, 0x46, 0xea, 0x02, 0xc9, 0x58, 0x34, 0xa2, 0x97, 0x62, 0x83, - 0x16, 0x6a, 0xc0, 0x18, 0xd9, 0x73, 0xeb, 0x4a, 0xb5, 0x5c, 0x38, 0xf2, 0x45, 0xa7, 0x5a, 0x59, - 0xd1, 0xe8, 0x60, 0x83, 0xea, 0x23, 0xc8, 0x1b, 0x6c, 0xff, 0xb8, 0x05, 0x8f, 0xe5, 0x44, 0x99, - 0xa4, 0xcd, 0xdd, 0x63, 0xf6, 0x17, 0x62, 0xd9, 0xaa, 0xe6, 0xb8, 0x55, 0x06, 0x16, 0x50, 0xf4, - 0x09, 0x00, 0x6e, 0x55, 0x41, 0x9f, 0xdc, 0xbd, 0xc2, 0xf1, 0x19, 0x91, 0xc4, 0xb4, 0xa0, 0x50, - 0xb2, 0x3e, 0xd6, 0x68, 0xd9, 0x5f, 0x1a, 0x80, 0x41, 0x9e, 0xe3, 0x7c, 0x15, 0x86, 0x77, 0x78, - 0xce, 0x8d, 0x7e, 0xd2, 0x7b, 0xc4, 0xc2, 0x10, 0x5e, 0x80, 0x65, 0x65, 0xb4, 0x06, 0x33, 0x3c, - 0x67, 0x49, 0xb3, 0x4c, 0x9a, 0xce, 0xbe, 0x94, 0xdc, 0xf1, 0x7c, 0x9f, 0x4a, 0x82, 0x59, 0x49, - 0xa3, 0xe0, 0xac, 0x7a, 0xe8, 0x35, 0x98, 0xa0, 0x2f, 0x29, 0xbf, 0x13, 0x49, 0x4a, 0x3c, 0x5b, - 0x89, 0x7a, 0xba, 0x6d, 0x18, 0x50, 0x9c, 0xc0, 0xa6, 0x8f, 0xf9, 0x76, 0x4a, 0x46, 0x39, 0x18, - 0x3f, 0xe6, 0x4d, 0xb9, 0xa4, 0x89, 0xcb, 0x0c, 0x5d, 0x3b, 0xcc, 0xac, 0x77, 0x63, 0x27, 0x20, - 0xe1, 0x8e, 0xdf, 0x6c, 0x30, 0xa6, 0x6f, 0x50, 0x33, 0x74, 0x4d, 0xc0, 0x71, 0xaa, 0x06, 0xa5, - 0xb2, 0xe5, 0xb8, 0xcd, 0x4e, 0x40, 0x62, 0x2a, 0x43, 0x26, 0x95, 0xd5, 0x04, 0x1c, 0xa7, 0x6a, - 0xf4, 0x16, 0xbe, 0x0e, 0x1f, 0x8f, 0xf0, 0x95, 0x2e, 0xd8, 0xd3, 0xd5, 0xc0, 0xa7, 0x27, 0xb6, - 0x8c, 0xd1, 0xa3, 0xcc, 0xa4, 0x87, 0xa5, 0x3b, 0x71, 0x97, 0x68, 0x76, 0xc2, 0x90, 0x94, 0x53, - 0x30, 0x2c, 0x15, 0x6a, 0xc2, 0x91, 0x58, 0x52, 0x41, 0x57, 0x61, 0x54, 0xa4, 0xbc, 0x60, 0xd6, - 0xbc, 0x7c, 0x8d, 0x30, 0xcb, 0x8a, 0x72, 0x5c, 0x8c, 0x75, 0x1c, 0xfb, 0x07, 0x0a, 0x30, 0x93, - 0xe1, 0x8e, 0xc1, 0xcf, 0xc4, 0x6d, 0x37, 0x8c, 0x54, 0xf2, 0x44, 0xed, 0x4c, 0xe4, 0xe5, 0x58, - 0x61, 0xd0, 0x8d, 0xc7, 0x4f, 0xdd, 0xe4, 0x49, 0x2b, 0xcc, 0x9d, 0x05, 0xf4, 0x88, 0x69, 0x08, - 0x2f, 0xc0, 0x40, 0x27, 0x24, 0x32, 0x0e, 0xa5, 0xba, 0x83, 0x98, 0xc2, 0x8d, 0x41, 0xe8, 0x9b, - 0x60, 0x5b, 0xe9, 0xae, 0xb4, 0x37, 0x01, 0xd7, 0x5e, 0x71, 0x18, 0xed, 0x5c, 0x44, 0x3c, 0xc7, - 0x8b, 0xc4, 0xcb, 0x21, 0x0e, 0xa8, 0xc6, 0x4a, 0xb1, 0x80, 0xda, 0x5f, 0x2a, 0xc2, 0xd9, 0x5c, - 0x07, 0x2d, 0xda, 0xf5, 0x96, 0xef, 0xb9, 0x91, 0xaf, 0x4c, 0x56, 0x78, 0x10, 0x35, 0xd2, 0xde, - 0x59, 0x13, 0xe5, 0x58, 0x61, 0xa0, 0x4b, 0x30, 0xc8, 0xc4, 0x75, 0xa9, 0x34, 0x92, 0x4b, 0x65, - 0x1e, 0x55, 0x87, 0x83, 0xfb, 0x4e, 0xd1, 0x7b, 0x91, 0x5e, 0xc7, 0x7e, 0x33, 0x79, 0x3a, 0xd2, - 0xee, 0xfa, 0x7e, 0x13, 0x33, 0x20, 0xfa, 0x80, 0x18, 0xaf, 0x84, 0x8d, 0x06, 0x76, 0x1a, 0x7e, - 0xa8, 0x0d, 0xda, 0xd3, 0x30, 0xbc, 0x4b, 0xf6, 0x03, 0xd7, 0xdb, 0x4e, 0xda, 0xee, 0xdc, 0xe0, - 0xc5, 0x58, 0xc2, 0xcd, 0x8c, 0x60, 0xc3, 0xc7, 0x9d, 0x5b, 0x77, 0xa4, 0xe7, 0x5d, 0xfb, 0x43, - 0x45, 0x98, 0xc4, 0x4b, 0xe5, 0xf7, 0x26, 0xe2, 0x76, 0x7a, 0x22, 0x8e, 0x3b, 0xb7, 0x6e, 0xef, - 0xd9, 0xf8, 0x45, 0x0b, 0x26, 0x59, 0xe2, 0x0d, 0x11, 0x7e, 0xcb, 0xf5, 0xbd, 0x13, 0xe0, 0x6b, - 0x2f, 0xc2, 0x60, 0x40, 0x1b, 0x4d, 0xe6, 0x8f, 0x64, 0x3d, 0xc1, 0x1c, 0x86, 0x9e, 0x80, 0x01, - 0xd6, 0x05, 0x3a, 0x79, 0x63, 0x3c, 0xf5, 0x56, 0xd9, 0x89, 0x1c, 0xcc, 0x4a, 0x59, 0x4c, 0x19, - 0x4c, 0xda, 0x4d, 0x97, 0x77, 0x3a, 0x56, 0xa6, 0xbe, 0x3b, 0x5c, 0xb7, 0x33, 0xbb, 0xf6, 0xce, - 0x62, 0xca, 0x64, 0x93, 0xec, 0xfe, 0x66, 0xfc, 0xe3, 0x02, 0x9c, 0xcf, 0xac, 0xd7, 0x77, 0x4c, - 0x99, 0xee, 0xb5, 0x1f, 0x65, 0x6a, 0x85, 0xe2, 0x09, 0x5a, 0x46, 0x0e, 0xf4, 0xcb, 0xca, 0x0e, - 0xf6, 0x11, 0xea, 0x25, 0x73, 0xc8, 0xde, 0x25, 0xa1, 0x5e, 0x32, 0xfb, 0x96, 0xf3, 0xe6, 0xfd, - 0x8b, 0x42, 0xce, 0xb7, 0xb0, 0xd7, 0xef, 0x65, 0x7a, 0xce, 0x30, 0x60, 0x28, 0x5f, 0x94, 0xfc, - 0x8c, 0xe1, 0x65, 0x58, 0x41, 0xd1, 0x22, 0x4c, 0xb6, 0x5c, 0x8f, 0x1e, 0x3e, 0xfb, 0x26, 0x87, - 0xa9, 0x22, 0x71, 0xad, 0x99, 0x60, 0x9c, 0xc4, 0x47, 0xae, 0x16, 0x06, 0xa6, 0x90, 0x9f, 0x91, - 0x3d, 0xb7, 0xb7, 0x0b, 0xa6, 0xa2, 0x59, 0x8d, 0x62, 0x46, 0x48, 0x98, 0x35, 0x4d, 0xe8, 0x51, - 0xec, 0x5f, 0xe8, 0x31, 0x96, 0x2d, 0xf0, 0x98, 0x7b, 0x15, 0xc6, 0x1f, 0x5a, 0xca, 0x6d, 0x7f, - 0xad, 0x08, 0x8f, 0x77, 0xd9, 0xf6, 0xfc, 0xac, 0x37, 0xe6, 0x40, 0x3b, 0xeb, 0x53, 0xf3, 0x50, - 0x85, 0x53, 0x5b, 0x9d, 0x66, 0x73, 0x9f, 0x39, 0x0c, 0x90, 0x86, 0xc4, 0x10, 0x3c, 0xa5, 0x7c, - 0xe9, 0x9f, 0x5a, 0xcd, 0xc0, 0xc1, 0x99, 0x35, 0xe9, 0xcb, 0x81, 0xde, 0x24, 0xfb, 0x8a, 0x54, - 0xe2, 0xe5, 0x80, 0x75, 0x20, 0x36, 0x71, 0xd1, 0x35, 0x98, 0x76, 0xf6, 0x1c, 0x97, 0xc7, 0xd2, - 0x95, 0x04, 0xf8, 0xd3, 0x41, 0x09, 0x27, 0x17, 0x93, 0x08, 0x38, 0x5d, 0x07, 0xbd, 0x0e, 0xc8, - 0xdf, 0x64, 0x66, 0xc5, 0x8d, 0x6b, 0xc4, 0x13, 0xfa, 0x40, 0x36, 0x77, 0xc5, 0xf8, 0x48, 0xb8, - 0x95, 0xc2, 0xc0, 0x19, 0xb5, 0x12, 0xe1, 0x4e, 0x86, 0xf2, 0xc3, 0x9d, 0x74, 0x3f, 0x17, 0x7b, - 0x66, 0xf5, 0xf8, 0x8f, 0x16, 0xbd, 0xbe, 0x38, 0x93, 0x6f, 0x46, 0x07, 0x7c, 0x95, 0xd9, 0xf3, - 0x71, 0xc1, 0xa5, 0x16, 0xa4, 0xe3, 0xb4, 0x66, 0xcf, 0x17, 0x03, 0xb1, 0x89, 0xcb, 0x17, 0x44, - 0x18, 0xfb, 0x86, 0x1a, 0x2c, 0xbe, 0x08, 0x61, 0xa4, 0x30, 0xd0, 0x27, 0x61, 0xb8, 0xe1, 0xee, - 0xb9, 0xa1, 0x10, 0xdb, 0x1c, 0x59, 0x47, 0x12, 0x9f, 0x83, 0x65, 0x4e, 0x06, 0x4b, 0x7a, 0xf6, - 0x0f, 0x15, 0x60, 0x5c, 0xb6, 0xf8, 0x46, 0xc7, 0x8f, 0x9c, 0x13, 0xb8, 0x96, 0xaf, 0x19, 0xd7, - 0xf2, 0x07, 0xba, 0xc5, 0x71, 0x62, 0x5d, 0xca, 0xbd, 0x8e, 0x6f, 0x25, 0xae, 0xe3, 0xa7, 0x7a, - 0x93, 0xea, 0x7e, 0x0d, 0xff, 0x43, 0x0b, 0xa6, 0x0d, 0xfc, 0x13, 0xb8, 0x0d, 0x56, 0xcd, 0xdb, - 0xe0, 0xc9, 0x9e, 0xdf, 0x90, 0x73, 0x0b, 0x7c, 0x6f, 0x31, 0xd1, 0x77, 0x76, 0xfa, 0xbf, 0x05, - 0x03, 0x3b, 0x4e, 0xd0, 0xe8, 0x16, 0xb7, 0x3e, 0x55, 0x69, 0xe1, 0xba, 0x13, 0x08, 0x85, 0xe8, - 0xb3, 0x2a, 0x21, 0xba, 0x13, 0xf4, 0x56, 0x86, 0xb2, 0xa6, 0xd0, 0xcb, 0x30, 0x14, 0xd6, 0xfd, - 0xb6, 0x72, 0x17, 0xb8, 0xc0, 0x93, 0xa5, 0xd3, 0x92, 0xc3, 0x83, 0x79, 0x64, 0x36, 0x47, 0x8b, - 0xb1, 0xc0, 0x47, 0x9f, 0x82, 0x71, 0xf6, 0x4b, 0x59, 0x27, 0x15, 0xf3, 0x73, 0x5c, 0xd5, 0x74, - 0x44, 0x6e, 0xba, 0x67, 0x14, 0x61, 0x93, 0xd4, 0xdc, 0x36, 0x94, 0xd4, 0x67, 0x3d, 0x52, 0x25, - 0xe4, 0xbf, 0x2b, 0xc2, 0x4c, 0xc6, 0x9a, 0x43, 0xa1, 0x31, 0x13, 0x57, 0xfb, 0x5c, 0xaa, 0xef, - 0x70, 0x2e, 0x42, 0xf6, 0x1a, 0x6a, 0x88, 0xb5, 0xd5, 0x77, 0xa3, 0xb7, 0x43, 0x92, 0x6c, 0x94, - 0x16, 0xf5, 0x6e, 0x94, 0x36, 0x76, 0x62, 0x43, 0x4d, 0x1b, 0x52, 0x3d, 0x7d, 0xa4, 0x73, 0xfa, - 0x67, 0x45, 0x38, 0x95, 0x15, 0x5a, 0x0e, 0x7d, 0x3e, 0x91, 0x35, 0xf1, 0xc5, 0x7e, 0x83, 0xd2, - 0xf1, 0x54, 0x8a, 0x5c, 0xd8, 0xbc, 0xb4, 0x60, 0xe6, 0x51, 0xec, 0x39, 0xcc, 0xa2, 0x4d, 0x16, - 0xf7, 0x20, 0xe0, 0xd9, 0x2e, 0xe5, 0xf1, 0xf1, 0xe1, 0xbe, 0x3b, 0x20, 0xd2, 0x64, 0x86, 0x09, - 0xcb, 0x07, 0x59, 0xdc, 0xdb, 0xf2, 0x41, 0xb6, 0x3c, 0xe7, 0xc2, 0xa8, 0xf6, 0x35, 0x8f, 0x74, - 0xc6, 0x77, 0xe9, 0x6d, 0xa5, 0xf5, 0xfb, 0x91, 0xce, 0xfa, 0x8f, 0x5b, 0x90, 0x30, 0x86, 0x57, - 0x62, 0x31, 0x2b, 0x57, 0x2c, 0x76, 0x01, 0x06, 0x02, 0xbf, 0x49, 0x92, 0xe9, 0x05, 0xb1, 0xdf, - 0x24, 0x98, 0x41, 0x28, 0x46, 0x14, 0x0b, 0x3b, 0xc6, 0xf4, 0x87, 0x9c, 0x78, 0xa2, 0x5d, 0x84, - 0xc1, 0x26, 0xd9, 0x23, 0xcd, 0x64, 0x16, 0x98, 0x9b, 0xb4, 0x10, 0x73, 0x98, 0xfd, 0x8b, 0x03, - 0x70, 0xae, 0x6b, 0xe4, 0x10, 0xfa, 0x1c, 0xda, 0x76, 0x22, 0x72, 0xcf, 0xd9, 0x4f, 0xa6, 0x6b, - 0xb8, 0xc6, 0x8b, 0xb1, 0x84, 0x33, 0x77, 0x25, 0x1e, 0x75, 0x39, 0x21, 0x44, 0x14, 0xc1, 0x96, - 0x05, 0xd4, 0x14, 0x4a, 0x15, 0x8f, 0x43, 0x28, 0xf5, 0x3c, 0x40, 0x18, 0x36, 0xb9, 0xc9, 0x50, - 0x43, 0xf8, 0x41, 0xc5, 0xd1, 0xb9, 0x6b, 0x37, 0x05, 0x04, 0x6b, 0x58, 0xa8, 0x0c, 0x53, 0xed, - 0xc0, 0x8f, 0xb8, 0x4c, 0xb6, 0xcc, 0xad, 0xea, 0x06, 0xcd, 0xa0, 0x0d, 0xd5, 0x04, 0x1c, 0xa7, - 0x6a, 0xa0, 0x97, 0x60, 0x54, 0x04, 0x72, 0xa8, 0xfa, 0x7e, 0x53, 0x88, 0x81, 0x94, 0xa1, 0x59, - 0x2d, 0x06, 0x61, 0x1d, 0x4f, 0xab, 0xc6, 0x04, 0xbd, 0xc3, 0x99, 0xd5, 0xb8, 0xb0, 0x57, 0xc3, - 0x4b, 0x84, 0x99, 0x1c, 0xe9, 0x2b, 0xcc, 0x64, 0x2c, 0x18, 0x2b, 0xf5, 0xad, 0x44, 0x83, 0x9e, - 0xa2, 0xa4, 0x9f, 0x1b, 0x80, 0x19, 0xb1, 0x70, 0x1e, 0xf5, 0x72, 0xb9, 0x9d, 0x5e, 0x2e, 0xc7, - 0x21, 0x3a, 0x7b, 0x6f, 0xcd, 0x9c, 0xf4, 0x9a, 0xf9, 0x61, 0x0b, 0x4c, 0xf6, 0x0a, 0xfd, 0x5f, - 0xb9, 0xf9, 0x6e, 0x5e, 0xca, 0x65, 0xd7, 0x1a, 0xf2, 0x02, 0x79, 0x87, 0x99, 0x6f, 0xec, 0xff, - 0x60, 0xc1, 0x93, 0x3d, 0x29, 0xa2, 0x15, 0x28, 0x31, 0x1e, 0x50, 0x7b, 0x9d, 0x3d, 0xa5, 0xac, - 0x6e, 0x25, 0x20, 0x87, 0x25, 0x8d, 0x6b, 0xa2, 0x95, 0x54, 0x62, 0xa1, 0xa7, 0x33, 0x12, 0x0b, - 0x9d, 0x36, 0x86, 0xe7, 0x21, 0x33, 0x0b, 0xfd, 0x20, 0xbd, 0x71, 0x0c, 0x8f, 0x17, 0xf4, 0x61, - 0x43, 0xec, 0x67, 0x27, 0xc4, 0x7e, 0xc8, 0xc4, 0xd6, 0xee, 0x90, 0x8f, 0xc3, 0x14, 0x8b, 0xf0, - 0xc4, 0x6c, 0xc0, 0x85, 0x2f, 0x4e, 0x21, 0xb6, 0xf3, 0xbc, 0x99, 0x80, 0xe1, 0x14, 0xb6, 0xfd, - 0x47, 0x45, 0x18, 0xe2, 0xdb, 0xef, 0x04, 0xde, 0x84, 0xcf, 0x40, 0xc9, 0x6d, 0xb5, 0x3a, 0x3c, - 0x57, 0xcc, 0x20, 0x77, 0xc0, 0xa5, 0xf3, 0x54, 0x91, 0x85, 0x38, 0x86, 0xa3, 0x55, 0x21, 0x71, - 0xee, 0x12, 0x44, 0x92, 0x77, 0x7c, 0xa1, 0xec, 0x44, 0x0e, 0x67, 0x70, 0xd4, 0x3d, 0x1b, 0xcb, - 0xa6, 0xd1, 0x67, 0x00, 0xc2, 0x28, 0x70, 0xbd, 0x6d, 0x5a, 0x26, 0x62, 0xa6, 0x7e, 0xb0, 0x0b, - 0xb5, 0x9a, 0x42, 0xe6, 0x34, 0xe3, 0x33, 0x47, 0x01, 0xb0, 0x46, 0x11, 0x2d, 0x18, 0x37, 0xfd, - 0x5c, 0x62, 0xee, 0x80, 0x53, 0x8d, 0xe7, 0x6c, 0xee, 0x23, 0x50, 0x52, 0xc4, 0x7b, 0xc9, 0x9f, - 0xc6, 0x74, 0xb6, 0xe8, 0x63, 0x30, 0x99, 0xe8, 0xdb, 0x91, 0xc4, 0x57, 0xbf, 0x64, 0xc1, 0x24, - 0xef, 0xcc, 0x8a, 0xb7, 0x27, 0x6e, 0x83, 0xb7, 0xe1, 0x54, 0x33, 0xe3, 0x54, 0x16, 0xd3, 0xdf, - 0xff, 0x29, 0xae, 0xc4, 0x55, 0x59, 0x50, 0x9c, 0xd9, 0x06, 0xba, 0x4c, 0x77, 0x1c, 0x3d, 0x75, - 0x9d, 0xa6, 0xf0, 0xc7, 0x1d, 0xe3, 0xbb, 0x8d, 0x97, 0x61, 0x05, 0xb5, 0x7f, 0xd7, 0x82, 0x69, - 0xde, 0xf3, 0x1b, 0x64, 0x5f, 0x9d, 0x4d, 0xdf, 0xc8, 0xbe, 0x8b, 0x2c, 0x65, 0x85, 0x9c, 0x2c, - 0x65, 0xfa, 0xa7, 0x15, 0xbb, 0x7e, 0xda, 0x57, 0x2c, 0x10, 0x2b, 0xe4, 0x04, 0x84, 0x10, 0xdf, - 0x6e, 0x0a, 0x21, 0xe6, 0xf2, 0x37, 0x41, 0x8e, 0xf4, 0xe1, 0xcf, 0x2d, 0x98, 0xe2, 0x08, 0xb1, - 0xb6, 0xfc, 0x1b, 0x3a, 0x0f, 0xfd, 0xe4, 0x32, 0xbe, 0x41, 0xf6, 0x37, 0xfc, 0xaa, 0x13, 0xed, - 0x64, 0x7f, 0x94, 0x31, 0x59, 0x03, 0x5d, 0x27, 0xab, 0x21, 0x37, 0xd0, 0x11, 0x12, 0xa4, 0x1f, - 0x39, 0x89, 0x87, 0xfd, 0x75, 0x0b, 0x10, 0x6f, 0xc6, 0x60, 0xdc, 0x28, 0x3b, 0xc4, 0x4a, 0xb5, - 0x8b, 0x2e, 0x3e, 0x9a, 0x14, 0x04, 0x6b, 0x58, 0xc7, 0x32, 0x3c, 0x09, 0x93, 0x87, 0x62, 0x6f, - 0x93, 0x87, 0x23, 0x8c, 0xe8, 0xbf, 0x1a, 0x82, 0xa4, 0xd7, 0x0f, 0xba, 0x03, 0x63, 0x75, 0xa7, - 0xed, 0x6c, 0xba, 0x4d, 0x37, 0x72, 0x49, 0xd8, 0xcd, 0x28, 0x6b, 0x59, 0xc3, 0x13, 0x4a, 0x6a, - 0xad, 0x04, 0x1b, 0x74, 0xd0, 0x02, 0x40, 0x3b, 0x70, 0xf7, 0xdc, 0x26, 0xd9, 0x66, 0xb2, 0x12, - 0x16, 0x01, 0x80, 0x5b, 0x1a, 0xc9, 0x52, 0xac, 0x61, 0x64, 0xb8, 0x58, 0x17, 0x1f, 0xb1, 0x8b, - 0x35, 0x9c, 0x98, 0x8b, 0xf5, 0xc0, 0x91, 0x5c, 0xac, 0x47, 0x8e, 0xec, 0x62, 0x3d, 0xd8, 0x97, - 0x8b, 0x35, 0x86, 0x33, 0x92, 0xf7, 0xa4, 0xff, 0x57, 0xdd, 0x26, 0x11, 0x0f, 0x0e, 0x1e, 0xb6, - 0x60, 0xee, 0xc1, 0xc1, 0xfc, 0x19, 0x9c, 0x89, 0x81, 0x73, 0x6a, 0xa2, 0x4f, 0xc0, 0xac, 0xd3, - 0x6c, 0xfa, 0xf7, 0xd4, 0xa4, 0xae, 0x84, 0x75, 0xa7, 0xc9, 0x95, 0x10, 0xc3, 0x8c, 0xea, 0x13, - 0x0f, 0x0e, 0xe6, 0x67, 0x17, 0x73, 0x70, 0x70, 0x6e, 0x6d, 0xf4, 0x51, 0x28, 0xb5, 0x03, 0xbf, - 0xbe, 0xa6, 0xb9, 0x26, 0x9e, 0xa7, 0x03, 0x58, 0x95, 0x85, 0x87, 0x07, 0xf3, 0xe3, 0xea, 0x0f, - 0xbb, 0xf0, 0xe3, 0x0a, 0x19, 0x3e, 0xd3, 0xa3, 0xc7, 0xea, 0x33, 0xbd, 0x0b, 0x33, 0x35, 0x12, - 0xb8, 0x2c, 0x9d, 0x7a, 0x23, 0x3e, 0x9f, 0x36, 0xa0, 0x14, 0x24, 0x4e, 0xe4, 0xbe, 0x02, 0x3b, - 0x6a, 0xd9, 0x14, 0xe4, 0x09, 0x1c, 0x13, 0xb2, 0xff, 0xa7, 0x05, 0xc3, 0xc2, 0xcb, 0xe7, 0x04, - 0xb8, 0xc6, 0x45, 0x43, 0x93, 0x30, 0x9f, 0x3d, 0x60, 0xac, 0x33, 0xb9, 0x3a, 0x84, 0x4a, 0x42, - 0x87, 0xf0, 0x64, 0x37, 0x22, 0xdd, 0xb5, 0x07, 0x7f, 0xa5, 0x48, 0xb9, 0x77, 0xc3, 0xdf, 0xf4, - 0xd1, 0x0f, 0xc1, 0x3a, 0x0c, 0x87, 0xc2, 0xdf, 0xb1, 0x90, 0x6f, 0xa0, 0x9f, 0x9c, 0xc4, 0xd8, - 0x8e, 0x4d, 0x78, 0x38, 0x4a, 0x22, 0x99, 0x8e, 0x94, 0xc5, 0x47, 0xe8, 0x48, 0xd9, 0xcb, 0x23, - 0x77, 0xe0, 0x38, 0x3c, 0x72, 0xed, 0xaf, 0xb2, 0x9b, 0x53, 0x2f, 0x3f, 0x01, 0xa6, 0xea, 0x9a, - 0x79, 0xc7, 0xda, 0x5d, 0x56, 0x96, 0xe8, 0x54, 0x0e, 0x73, 0xf5, 0x0b, 0x16, 0x9c, 0xcb, 0xf8, - 0x2a, 0x8d, 0xd3, 0x7a, 0x16, 0x46, 0x9c, 0x4e, 0xc3, 0x55, 0x7b, 0x59, 0xd3, 0x27, 0x2e, 0x8a, - 0x72, 0xac, 0x30, 0xd0, 0x32, 0x4c, 0x93, 0xfb, 0x6d, 0x97, 0xab, 0x52, 0x75, 0xab, 0xd6, 0x22, - 0x77, 0x0d, 0x5b, 0x49, 0x02, 0x71, 0x1a, 0x5f, 0x45, 0x41, 0x29, 0xe6, 0x46, 0x41, 0xf9, 0xdb, - 0x16, 0x8c, 0x2a, 0x8f, 0xbf, 0x47, 0x3e, 0xda, 0x1f, 0x37, 0x47, 0xfb, 0xf1, 0x2e, 0xa3, 0x9d, - 0x33, 0xcc, 0xbf, 0x5d, 0x50, 0xfd, 0xad, 0xfa, 0x41, 0xd4, 0x07, 0x07, 0xf7, 0xf0, 0x76, 0xf8, - 0x57, 0x61, 0xd4, 0x69, 0xb7, 0x25, 0x40, 0xda, 0xa0, 0xb1, 0x30, 0xbd, 0x71, 0x31, 0xd6, 0x71, - 0x94, 0x5b, 0x40, 0x31, 0xd7, 0x2d, 0xa0, 0x01, 0x10, 0x39, 0xc1, 0x36, 0x89, 0x68, 0x99, 0x88, - 0x58, 0x96, 0x7f, 0xde, 0x74, 0x22, 0xb7, 0xb9, 0xe0, 0x7a, 0x51, 0x18, 0x05, 0x0b, 0x15, 0x2f, - 0xba, 0x15, 0xf0, 0x27, 0xa4, 0x16, 0x12, 0x48, 0xd1, 0xc2, 0x1a, 0x5d, 0xe9, 0xdd, 0xce, 0xda, - 0x18, 0x34, 0x8d, 0x19, 0xd6, 0x45, 0x39, 0x56, 0x18, 0xf6, 0x47, 0xd8, 0xed, 0xc3, 0xc6, 0xf4, - 0x68, 0x31, 0x74, 0xfe, 0xee, 0x98, 0x9a, 0x0d, 0xa6, 0xc9, 0x2c, 0xeb, 0x91, 0x7a, 0xba, 0x1f, - 0xf6, 0xb4, 0x61, 0xdd, 0x49, 0x2d, 0x0e, 0xe7, 0x83, 0xbe, 0x23, 0x65, 0xa0, 0xf2, 0x5c, 0x8f, - 0x5b, 0xe3, 0x08, 0x26, 0x29, 0x2c, 0x67, 0x07, 0xcb, 0x68, 0x50, 0xa9, 0x8a, 0x7d, 0xa1, 0xe5, - 0xec, 0x10, 0x00, 0x1c, 0xe3, 0x50, 0x66, 0x4a, 0xfd, 0x09, 0x67, 0x51, 0x1c, 0xbb, 0x52, 0x61, - 0x87, 0x58, 0xc3, 0x40, 0x57, 0x84, 0x40, 0x81, 0xeb, 0x05, 0x1e, 0x4f, 0x08, 0x14, 0xe4, 0x70, - 0x69, 0x52, 0xa0, 0xab, 0x30, 0xaa, 0xd2, 0x03, 0x57, 0x79, 0xd6, 0x59, 0xb1, 0xcc, 0x56, 0xe2, - 0x62, 0xac, 0xe3, 0xa0, 0x0d, 0x98, 0x0c, 0xb9, 0x9c, 0x4d, 0x05, 0x14, 0xe6, 0xf2, 0xca, 0x0f, - 0x4a, 0x2b, 0xa0, 0x9a, 0x09, 0x3e, 0x64, 0x45, 0xfc, 0x74, 0x92, 0x1e, 0xe8, 0x49, 0x12, 0xe8, - 0x35, 0x98, 0x68, 0xfa, 0x4e, 0x63, 0xc9, 0x69, 0x3a, 0x5e, 0x9d, 0x8d, 0xcf, 0x88, 0x99, 0x65, - 0xf2, 0xa6, 0x01, 0xc5, 0x09, 0x6c, 0xca, 0xbc, 0xe9, 0x25, 0x22, 0x08, 0xb6, 0xe3, 0x6d, 0x93, - 0x50, 0x24, 0x7b, 0x65, 0xcc, 0xdb, 0xcd, 0x1c, 0x1c, 0x9c, 0x5b, 0x1b, 0xbd, 0x0c, 0x63, 0xf2, - 0xf3, 0xb5, 0x80, 0x0d, 0xb1, 0x87, 0x85, 0x06, 0xc3, 0x06, 0x26, 0xba, 0x07, 0xa7, 0xe5, 0xff, - 0x8d, 0xc0, 0xd9, 0xda, 0x72, 0xeb, 0xc2, 0x8b, 0x99, 0xbb, 0x62, 0x2e, 0x4a, 0x7f, 0xc1, 0x95, - 0x2c, 0xa4, 0xc3, 0x83, 0xf9, 0x0b, 0x62, 0xd4, 0x32, 0xe1, 0x6c, 0x12, 0xb3, 0xe9, 0xa3, 0x35, - 0x98, 0xd9, 0x21, 0x4e, 0x33, 0xda, 0x59, 0xde, 0x21, 0xf5, 0x5d, 0xb9, 0xe9, 0x58, 0x18, 0x08, - 0xcd, 0x2f, 0xe1, 0x7a, 0x1a, 0x05, 0x67, 0xd5, 0x43, 0x6f, 0xc2, 0x6c, 0xbb, 0xb3, 0xd9, 0x74, - 0xc3, 0x9d, 0x75, 0x3f, 0x62, 0xa6, 0x40, 0x2a, 0xdb, 0xb0, 0x88, 0x17, 0xa1, 0x02, 0x6d, 0x54, - 0x73, 0xf0, 0x70, 0x2e, 0x05, 0xf4, 0x36, 0x9c, 0x4e, 0x2c, 0x06, 0xe1, 0x31, 0x3f, 0x91, 0x9f, - 0x52, 0xa0, 0x96, 0x55, 0x41, 0x04, 0x9f, 0xc8, 0x02, 0xe1, 0xec, 0x26, 0xd0, 0x2b, 0x00, 0x6e, - 0x7b, 0xd5, 0x69, 0xb9, 0x4d, 0xfa, 0x5c, 0x9c, 0x61, 0xeb, 0x84, 0x3e, 0x1d, 0xa0, 0x52, 0x95, - 0xa5, 0xf4, 0x7c, 0x16, 0xff, 0xf6, 0xb1, 0x86, 0x8d, 0xaa, 0x30, 0x21, 0xfe, 0xed, 0x8b, 0x69, - 0x9d, 0x56, 0xce, 0xe9, 0x13, 0xb2, 0x86, 0x9a, 0x4b, 0x64, 0x96, 0xb0, 0xd9, 0x4b, 0xd4, 0x47, - 0xdb, 0x70, 0x4e, 0x24, 0xa6, 0x26, 0xfa, 0x3a, 0x95, 0xf3, 0x10, 0xb2, 0x58, 0xfe, 0x23, 0xdc, - 0xed, 0x61, 0xb1, 0x1b, 0x22, 0xee, 0x4e, 0x87, 0xde, 0xef, 0xfa, 0x72, 0xe7, 0xee, 0xa0, 0xa7, - 0xb9, 0x79, 0x12, 0xbd, 0xdf, 0x6f, 0x26, 0x81, 0x38, 0x8d, 0x8f, 0x42, 0x38, 0xed, 0x7a, 0x59, - 0xab, 0xfb, 0x0c, 0x23, 0xf4, 0x31, 0xee, 0x09, 0xdb, 0x7d, 0x65, 0x67, 0xc2, 0xf9, 0xca, 0xce, - 0xa4, 0xfd, 0xce, 0xac, 0xf0, 0x7e, 0xc7, 0xa2, 0xb5, 0x35, 0x4e, 0x1d, 0x7d, 0x16, 0xc6, 0xf4, - 0x0f, 0x13, 0x5c, 0xc7, 0xa5, 0x6c, 0x46, 0x56, 0x3b, 0x1f, 0x38, 0x9f, 0xaf, 0xce, 0x00, 0x1d, - 0x86, 0x0d, 0x8a, 0xa8, 0x9e, 0xe1, 0x33, 0x7e, 0xa5, 0x3f, 0xae, 0xa6, 0x7f, 0x23, 0x34, 0x02, - 0xd9, 0xcb, 0x1e, 0xdd, 0x84, 0x91, 0x7a, 0xd3, 0x25, 0x5e, 0x54, 0xa9, 0x76, 0x8b, 0xf2, 0xb6, - 0x2c, 0x70, 0xc4, 0x3e, 0x12, 0xa1, 0xf9, 0x79, 0x19, 0x56, 0x14, 0xec, 0x5f, 0x2f, 0xc0, 0x7c, - 0x8f, 0x3c, 0x0f, 0x09, 0x95, 0x94, 0xd5, 0x97, 0x4a, 0x6a, 0x51, 0xa6, 0xd4, 0x5e, 0x4f, 0x48, - 0xbb, 0x12, 0xe9, 0xb2, 0x63, 0x99, 0x57, 0x12, 0xbf, 0x6f, 0x17, 0x01, 0x5d, 0xab, 0x35, 0xd0, - 0xd3, 0xc9, 0xc5, 0xd0, 0x66, 0x0f, 0xf6, 0xff, 0x04, 0xce, 0xd5, 0x4c, 0xda, 0x5f, 0x2d, 0xc0, - 0x69, 0x35, 0x84, 0xdf, 0xba, 0x03, 0x77, 0x3b, 0x3d, 0x70, 0xc7, 0xa0, 0xd7, 0xb5, 0x6f, 0xc1, - 0x10, 0x0f, 0x5b, 0xd7, 0x07, 0xeb, 0x7d, 0xd1, 0x8c, 0xf0, 0xaa, 0xb8, 0x3d, 0x23, 0xca, 0xeb, - 0xf7, 0x5b, 0x30, 0xb9, 0xb1, 0x5c, 0xad, 0xf9, 0xf5, 0x5d, 0x12, 0x2d, 0xf2, 0xa7, 0x12, 0xd6, - 0xbc, 0x6b, 0x1f, 0x86, 0x3d, 0xce, 0x62, 0xbc, 0x2f, 0xc0, 0xc0, 0x8e, 0x1f, 0x46, 0x49, 0xa3, - 0x8f, 0xeb, 0x7e, 0x18, 0x61, 0x06, 0xb1, 0x7f, 0xcf, 0x82, 0xc1, 0x0d, 0xc7, 0xf5, 0x22, 0xa9, - 0x20, 0xb0, 0x72, 0x14, 0x04, 0xfd, 0x7c, 0x17, 0x7a, 0x09, 0x86, 0xc8, 0xd6, 0x16, 0xa9, 0x47, - 0x62, 0x56, 0x65, 0x68, 0x82, 0xa1, 0x15, 0x56, 0x4a, 0x79, 0x41, 0xd6, 0x18, 0xff, 0x8b, 0x05, - 0x32, 0xba, 0x0b, 0xa5, 0xc8, 0x6d, 0x91, 0xc5, 0x46, 0x43, 0xa8, 0xcd, 0x1f, 0x22, 0xbc, 0xc2, - 0x86, 0x24, 0x80, 0x63, 0x5a, 0xf6, 0x97, 0x0a, 0x00, 0x71, 0xbc, 0x9f, 0x5e, 0x9f, 0xb8, 0x94, - 0x52, 0xa8, 0x5e, 0xca, 0x50, 0xa8, 0xa2, 0x98, 0x60, 0x86, 0x36, 0x55, 0x0d, 0x53, 0xb1, 0xaf, - 0x61, 0x1a, 0x38, 0xca, 0x30, 0x2d, 0xc3, 0x74, 0x1c, 0xaf, 0xc8, 0x0c, 0xd7, 0xc6, 0xae, 0xcf, - 0x8d, 0x24, 0x10, 0xa7, 0xf1, 0x6d, 0x02, 0x17, 0x54, 0xd8, 0x16, 0x71, 0xa3, 0x31, 0xab, 0x6c, - 0x5d, 0x41, 0xdd, 0x63, 0x9c, 0x62, 0x8d, 0x71, 0x21, 0x57, 0x63, 0xfc, 0x53, 0x16, 0x9c, 0x4a, - 0xb6, 0xc3, 0xfc, 0x71, 0xbf, 0x68, 0xc1, 0x69, 0xa6, 0x37, 0x67, 0xad, 0xa6, 0xb5, 0xf4, 0x2f, - 0x76, 0x0d, 0x45, 0x93, 0xd3, 0xe3, 0x38, 0x06, 0xc6, 0x5a, 0x16, 0x69, 0x9c, 0xdd, 0xa2, 0xfd, - 0xef, 0x0b, 0x30, 0x9b, 0x17, 0xc3, 0x86, 0x39, 0x6d, 0x38, 0xf7, 0x6b, 0xbb, 0xe4, 0x9e, 0x30, - 0x8d, 0x8f, 0x9d, 0x36, 0x78, 0x31, 0x96, 0xf0, 0x64, 0xe8, 0xfe, 0x42, 0x9f, 0xa1, 0xfb, 0x77, - 0x60, 0xfa, 0xde, 0x0e, 0xf1, 0x6e, 0x7b, 0xa1, 0x13, 0xb9, 0xe1, 0x96, 0xcb, 0x74, 0xcc, 0x7c, - 0xdd, 0xbc, 0x22, 0x0d, 0xd8, 0xef, 0x26, 0x11, 0x0e, 0x0f, 0xe6, 0xcf, 0x19, 0x05, 0x71, 0x97, - 0xf9, 0x41, 0x82, 0xd3, 0x44, 0xd3, 0x99, 0x0f, 0x06, 0x1e, 0x61, 0xe6, 0x03, 0xfb, 0x8b, 0x16, - 0x9c, 0xcd, 0x4d, 0xba, 0x8a, 0x2e, 0xc3, 0x88, 0xd3, 0x76, 0xb9, 0x98, 0x5e, 0x1c, 0xa3, 0x4c, - 0x1c, 0x54, 0xad, 0x70, 0x21, 0xbd, 0x82, 0xaa, 0x74, 0xf3, 0x85, 0xdc, 0x74, 0xf3, 0x3d, 0xb3, - 0xc7, 0xdb, 0xdf, 0x67, 0x81, 0x70, 0x38, 0xed, 0xe3, 0xec, 0xfe, 0x14, 0x8c, 0xed, 0xa5, 0xb3, - 0x23, 0x5d, 0xc8, 0xf7, 0xc0, 0x15, 0x39, 0x91, 0x14, 0x43, 0x66, 0x64, 0x42, 0x32, 0x68, 0xd9, - 0x0d, 0x10, 0xd0, 0x32, 0x61, 0x42, 0xe8, 0xde, 0xbd, 0x79, 0x1e, 0xa0, 0xc1, 0x70, 0xb5, 0x9c, - 0xfd, 0xea, 0x66, 0x2e, 0x2b, 0x08, 0xd6, 0xb0, 0xec, 0x7f, 0x53, 0x80, 0x51, 0x99, 0x8d, 0xa7, - 0xe3, 0xf5, 0x23, 0x2a, 0x3a, 0x52, 0x7a, 0x4e, 0x74, 0x05, 0x4a, 0x4c, 0x96, 0x59, 0x8d, 0x25, - 0x6c, 0x4a, 0x92, 0xb0, 0x26, 0x01, 0x38, 0xc6, 0xa1, 0xbb, 0x28, 0xec, 0x6c, 0x32, 0xf4, 0x84, - 0x7b, 0x64, 0x8d, 0x17, 0x63, 0x09, 0x47, 0x9f, 0x80, 0x29, 0x5e, 0x2f, 0xf0, 0xdb, 0xce, 0x36, - 0xd7, 0x7f, 0x0c, 0xaa, 0x00, 0x0a, 0x53, 0x6b, 0x09, 0xd8, 0xe1, 0xc1, 0xfc, 0xa9, 0x64, 0x19, - 0x53, 0xec, 0xa5, 0xa8, 0x30, 0x33, 0x27, 0xde, 0x08, 0xdd, 0xfd, 0x29, 0xeb, 0xa8, 0x18, 0x84, - 0x75, 0x3c, 0xfb, 0xb3, 0x80, 0xd2, 0x79, 0x89, 0xd0, 0xeb, 0xdc, 0xb6, 0xd5, 0x0d, 0x48, 0xa3, - 0x9b, 0xa2, 0x4f, 0x0f, 0x13, 0x20, 0x3d, 0x9b, 0x78, 0x2d, 0xac, 0xea, 0xdb, 0xff, 0x6f, 0x11, - 0xa6, 0x92, 0xbe, 0xdc, 0xe8, 0x3a, 0x0c, 0x71, 0xd6, 0x43, 0x90, 0xef, 0x62, 0x47, 0xa2, 0x79, - 0x80, 0xb3, 0x43, 0x58, 0x70, 0x2f, 0xa2, 0x3e, 0x7a, 0x13, 0x46, 0x1b, 0xfe, 0x3d, 0xef, 0x9e, - 0x13, 0x34, 0x16, 0xab, 0x15, 0xb1, 0x9c, 0x33, 0x1f, 0xb6, 0xe5, 0x18, 0x4d, 0xf7, 0x2a, 0x67, - 0x3a, 0xd3, 0x18, 0x84, 0x75, 0x72, 0x68, 0x83, 0x05, 0x33, 0xdf, 0x72, 0xb7, 0xd7, 0x9c, 0x76, - 0x37, 0x47, 0x87, 0x65, 0x89, 0xa4, 0x51, 0x1e, 0x17, 0x11, 0xcf, 0x39, 0x00, 0xc7, 0x84, 0xd0, - 0xe7, 0x61, 0x26, 0xcc, 0x11, 0xb7, 0xe7, 0xa5, 0xa9, 0xeb, 0x26, 0x81, 0x5e, 0x7a, 0xec, 0xc1, - 0xc1, 0xfc, 0x4c, 0x96, 0x60, 0x3e, 0xab, 0x19, 0xfb, 0xc7, 0x4e, 0x81, 0xb1, 0x89, 0x8d, 0xac, - 0xa5, 0xd6, 0x31, 0x65, 0x2d, 0xc5, 0x30, 0x42, 0x5a, 0xed, 0x68, 0xbf, 0xec, 0x06, 0xdd, 0x72, - 0x86, 0xaf, 0x08, 0x9c, 0x34, 0x4d, 0x09, 0xc1, 0x8a, 0x4e, 0x76, 0x6a, 0xd9, 0xe2, 0x37, 0x30, - 0xb5, 0xec, 0xc0, 0x09, 0xa6, 0x96, 0x5d, 0x87, 0xe1, 0x6d, 0x37, 0xc2, 0xa4, 0xed, 0x0b, 0xa6, - 0x3f, 0x73, 0x1d, 0x5e, 0xe3, 0x28, 0xe9, 0x24, 0x86, 0x02, 0x80, 0x25, 0x11, 0xf4, 0xba, 0xda, - 0x81, 0x43, 0xf9, 0x0f, 0xf3, 0xb4, 0xc1, 0x43, 0xe6, 0x1e, 0x14, 0x09, 0x64, 0x87, 0x1f, 0x36, - 0x81, 0xec, 0xaa, 0x4c, 0xfb, 0x3a, 0x92, 0xef, 0x95, 0xc4, 0xb2, 0xba, 0xf6, 0x48, 0xf6, 0x7a, - 0x47, 0x4f, 0x95, 0x5b, 0xca, 0x3f, 0x09, 0x54, 0x16, 0xdc, 0x3e, 0x13, 0xe4, 0x7e, 0x9f, 0x05, - 0xa7, 0xdb, 0x59, 0x59, 0xa3, 0x85, 0x6d, 0xc0, 0x4b, 0x7d, 0x27, 0xa6, 0x36, 0x1a, 0x64, 0x32, - 0xb5, 0x4c, 0x34, 0x9c, 0xdd, 0x1c, 0x1d, 0xe8, 0x60, 0xb3, 0x21, 0x74, 0xd4, 0x17, 0x73, 0x32, - 0xed, 0x76, 0xc9, 0xaf, 0xbb, 0x91, 0x91, 0xd5, 0xf5, 0xfd, 0x79, 0x59, 0x5d, 0xfb, 0xce, 0xe5, - 0xfa, 0xba, 0xca, 0xb1, 0x3b, 0x9e, 0xbf, 0x94, 0x78, 0x06, 0xdd, 0x9e, 0x99, 0x75, 0x5f, 0x57, - 0x99, 0x75, 0xbb, 0x44, 0xaa, 0xe5, 0x79, 0x73, 0x7b, 0xe6, 0xd3, 0xd5, 0x72, 0xe2, 0x4e, 0x1e, - 0x4f, 0x4e, 0x5c, 0xe3, 0xaa, 0xe1, 0x69, 0x59, 0x9f, 0xe9, 0x71, 0xd5, 0x18, 0x74, 0xbb, 0x5f, - 0x36, 0x3c, 0xff, 0xef, 0xf4, 0x43, 0xe5, 0xff, 0xbd, 0xa3, 0xe7, 0xd3, 0x45, 0x3d, 0x12, 0xc6, - 0x52, 0xa4, 0x3e, 0xb3, 0xe8, 0xde, 0xd1, 0x2f, 0xc0, 0x99, 0x7c, 0xba, 0xea, 0x9e, 0x4b, 0xd3, - 0xcd, 0xbc, 0x02, 0x53, 0xd9, 0x79, 0x4f, 0x9d, 0x4c, 0x76, 0xde, 0xd3, 0xc7, 0x9e, 0x9d, 0xf7, - 0xcc, 0x09, 0x64, 0xe7, 0x7d, 0xec, 0x04, 0xb3, 0xf3, 0xde, 0x61, 0x06, 0x35, 0x3c, 0x6c, 0x8f, - 0x88, 0xac, 0x9b, 0x1d, 0xc5, 0x35, 0x2b, 0xb6, 0x0f, 0xff, 0x38, 0x05, 0xc2, 0x31, 0xa9, 0x8c, - 0xac, 0xbf, 0xb3, 0x8f, 0x20, 0xeb, 0xef, 0x7a, 0x9c, 0xf5, 0xf7, 0x6c, 0xfe, 0x54, 0x67, 0xb8, - 0x60, 0xe4, 0xe4, 0xfa, 0xbd, 0xa3, 0xe7, 0xe8, 0x7d, 0xbc, 0x8b, 0xd6, 0x24, 0x4b, 0xf0, 0xd8, - 0x25, 0x33, 0xef, 0x6b, 0x3c, 0x33, 0xef, 0x13, 0xf9, 0x27, 0x79, 0xf2, 0xba, 0x33, 0xf2, 0xf1, - 0xd2, 0x7e, 0xa9, 0x18, 0x8e, 0x2c, 0x86, 0x70, 0x4e, 0xbf, 0x54, 0x10, 0xc8, 0x74, 0xbf, 0x14, - 0x08, 0xc7, 0xa4, 0xec, 0x1f, 0x28, 0xc0, 0xf9, 0xee, 0xfb, 0x2d, 0x96, 0xa6, 0x56, 0x63, 0x25, - 0x72, 0x42, 0x9a, 0xca, 0xdf, 0x6c, 0x31, 0x56, 0xdf, 0x21, 0xe9, 0xae, 0xc1, 0xb4, 0xf2, 0xdd, - 0x68, 0xba, 0xf5, 0xfd, 0xf5, 0xf8, 0xe5, 0xab, 0xfc, 0xdd, 0x6b, 0x49, 0x04, 0x9c, 0xae, 0x83, - 0x16, 0x61, 0xd2, 0x28, 0xac, 0x94, 0xc5, 0xdb, 0x4c, 0x89, 0x6f, 0x6b, 0x26, 0x18, 0x27, 0xf1, - 0xed, 0x2f, 0x5b, 0xf0, 0x58, 0x4e, 0x5a, 0xbb, 0xbe, 0x23, 0xae, 0x6d, 0xc1, 0x64, 0xdb, 0xac, - 0xda, 0x23, 0x48, 0xa4, 0x91, 0x3c, 0x4f, 0xf5, 0x35, 0x01, 0xc0, 0x49, 0xa2, 0xf6, 0xcf, 0x14, - 0xe0, 0x5c, 0x57, 0x63, 0x44, 0x84, 0xe1, 0xcc, 0x76, 0x2b, 0x74, 0x96, 0x03, 0xd2, 0x20, 0x5e, - 0xe4, 0x3a, 0xcd, 0x5a, 0x9b, 0xd4, 0x35, 0x79, 0x38, 0xb3, 0xea, 0xbb, 0xb6, 0x56, 0x5b, 0x4c, - 0x63, 0xe0, 0x9c, 0x9a, 0x68, 0x15, 0x50, 0x1a, 0x22, 0x66, 0x98, 0x45, 0xa3, 0x4e, 0xd3, 0xc3, - 0x19, 0x35, 0xd0, 0x47, 0x60, 0x5c, 0x19, 0x39, 0x6a, 0x33, 0xce, 0x0e, 0x76, 0xac, 0x03, 0xb0, - 0x89, 0x87, 0xae, 0xf2, 0x70, 0xe6, 0x22, 0xf0, 0xbd, 0x10, 0x9e, 0x4f, 0xca, 0x58, 0xe5, 0xa2, - 0x18, 0xeb, 0x38, 0x4b, 0x97, 0x7f, 0xe3, 0x0f, 0xce, 0xbf, 0xef, 0xb7, 0xfe, 0xe0, 0xfc, 0xfb, - 0x7e, 0xf7, 0x0f, 0xce, 0xbf, 0xef, 0xbb, 0x1e, 0x9c, 0xb7, 0x7e, 0xe3, 0xc1, 0x79, 0xeb, 0xb7, - 0x1e, 0x9c, 0xb7, 0x7e, 0xf7, 0xc1, 0x79, 0xeb, 0xf7, 0x1f, 0x9c, 0xb7, 0xbe, 0xf4, 0x87, 0xe7, - 0xdf, 0xf7, 0xa9, 0xc2, 0xde, 0xd5, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x11, 0xbd, 0x2b, 0x2b, - 0x30, 0x04, 0x01, 0x00, + // 14109 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x70, 0x5c, 0xd7, + 0x79, 0x98, 0xef, 0x2e, 0x5e, 0xfb, 0xe1, 0x7d, 0x40, 0x52, 0x20, 0x24, 0x12, 0xd4, 0x95, 0x4d, + 0x51, 0x96, 0x04, 0x9a, 0x7a, 0xd8, 0x8a, 0x64, 0x2b, 0x06, 0xb0, 0x00, 0xb9, 0x22, 0x01, 0xae, + 0xce, 0x82, 0xa4, 0xed, 0xc8, 0x1e, 0x5f, 0xec, 0x1e, 0x00, 0x57, 0xd8, 0xbd, 0x77, 0x75, 0xef, + 0x5d, 0x90, 0x50, 0x9d, 0x69, 0xea, 0x3c, 0x9d, 0x47, 0xc7, 0xd3, 0x49, 0x5f, 0x49, 0x26, 0xd3, + 0x49, 0xd3, 0x49, 0x5c, 0xf7, 0x95, 0x26, 0x4d, 0xd2, 0x38, 0x6d, 0xd2, 0x77, 0xda, 0x1f, 0x49, + 0x9a, 0x69, 0xe3, 0xcc, 0x64, 0x8a, 0x26, 0x4c, 0x67, 0x32, 0xfe, 0xd1, 0x24, 0x6d, 0xda, 0x1f, + 0x45, 0x33, 0x4d, 0xe7, 0x3c, 0xef, 0x39, 0xf7, 0xb1, 0xbb, 0xa0, 0x40, 0x58, 0xf6, 0xe8, 0xdf, + 0xee, 0xf9, 0xbe, 0xf3, 0x9d, 0x73, 0xcf, 0xf3, 0x3b, 0xdf, 0x13, 0x5e, 0xd9, 0x7d, 0x29, 0x5c, + 0x70, 0xfd, 0xcb, 0xbb, 0x9d, 0x4d, 0x12, 0x78, 0x24, 0x22, 0xe1, 0xe5, 0x3d, 0xe2, 0x35, 0xfc, + 0xe0, 0xb2, 0x00, 0x38, 0x6d, 0xf7, 0x72, 0xdd, 0x0f, 0xc8, 0xe5, 0xbd, 0x2b, 0x97, 0xb7, 0x89, + 0x47, 0x02, 0x27, 0x22, 0x8d, 0x85, 0x76, 0xe0, 0x47, 0x3e, 0x42, 0x1c, 0x67, 0xc1, 0x69, 0xbb, + 0x0b, 0x14, 0x67, 0x61, 0xef, 0xca, 0xdc, 0xb3, 0xdb, 0x6e, 0xb4, 0xd3, 0xd9, 0x5c, 0xa8, 0xfb, + 0xad, 0xcb, 0xdb, 0xfe, 0xb6, 0x7f, 0x99, 0xa1, 0x6e, 0x76, 0xb6, 0xd8, 0x3f, 0xf6, 0x87, 0xfd, + 0xe2, 0x24, 0xe6, 0x5e, 0x88, 0x9b, 0x69, 0x39, 0xf5, 0x1d, 0xd7, 0x23, 0xc1, 0xfe, 0xe5, 0xf6, + 0xee, 0x36, 0x6b, 0x37, 0x20, 0xa1, 0xdf, 0x09, 0xea, 0x24, 0xd9, 0x70, 0xd7, 0x5a, 0xe1, 0xe5, + 0x16, 0x89, 0x9c, 0x8c, 0xee, 0xce, 0x5d, 0xce, 0xab, 0x15, 0x74, 0xbc, 0xc8, 0x6d, 0xa5, 0x9b, + 0xf9, 0x70, 0xaf, 0x0a, 0x61, 0x7d, 0x87, 0xb4, 0x9c, 0x54, 0xbd, 0xe7, 0xf3, 0xea, 0x75, 0x22, + 0xb7, 0x79, 0xd9, 0xf5, 0xa2, 0x30, 0x0a, 0x92, 0x95, 0xec, 0xaf, 0x5a, 0x70, 0x61, 0xf1, 0x4e, + 0x6d, 0xa5, 0xe9, 0x84, 0x91, 0x5b, 0x5f, 0x6a, 0xfa, 0xf5, 0xdd, 0x5a, 0xe4, 0x07, 0xe4, 0xb6, + 0xdf, 0xec, 0xb4, 0x48, 0x8d, 0x0d, 0x04, 0x7a, 0x06, 0x46, 0xf6, 0xd8, 0xff, 0x4a, 0x79, 0xd6, + 0xba, 0x60, 0x5d, 0x2a, 0x2d, 0x4d, 0xfd, 0xda, 0xc1, 0xfc, 0xfb, 0xee, 0x1f, 0xcc, 0x8f, 0xdc, + 0x16, 0xe5, 0x58, 0x61, 0xa0, 0x8b, 0x30, 0xb4, 0x15, 0x6e, 0xec, 0xb7, 0xc9, 0x6c, 0x81, 0xe1, + 0x4e, 0x08, 0xdc, 0xa1, 0xd5, 0x1a, 0x2d, 0xc5, 0x02, 0x8a, 0x2e, 0x43, 0xa9, 0xed, 0x04, 0x91, + 0x1b, 0xb9, 0xbe, 0x37, 0x5b, 0xbc, 0x60, 0x5d, 0x1a, 0x5c, 0x9a, 0x16, 0xa8, 0xa5, 0xaa, 0x04, + 0xe0, 0x18, 0x87, 0x76, 0x23, 0x20, 0x4e, 0xe3, 0xa6, 0xd7, 0xdc, 0x9f, 0x1d, 0xb8, 0x60, 0x5d, + 0x1a, 0x89, 0xbb, 0x81, 0x45, 0x39, 0x56, 0x18, 0xf6, 0x8f, 0x14, 0x60, 0x64, 0x71, 0x6b, 0xcb, + 0xf5, 0xdc, 0x68, 0x1f, 0xdd, 0x86, 0x31, 0xcf, 0x6f, 0x10, 0xf9, 0x9f, 0x7d, 0xc5, 0xe8, 0x73, + 0x17, 0x16, 0xd2, 0x4b, 0x69, 0x61, 0x5d, 0xc3, 0x5b, 0x9a, 0xba, 0x7f, 0x30, 0x3f, 0xa6, 0x97, + 0x60, 0x83, 0x0e, 0xc2, 0x30, 0xda, 0xf6, 0x1b, 0x8a, 0x6c, 0x81, 0x91, 0x9d, 0xcf, 0x22, 0x5b, + 0x8d, 0xd1, 0x96, 0x26, 0xef, 0x1f, 0xcc, 0x8f, 0x6a, 0x05, 0x58, 0x27, 0x82, 0x36, 0x61, 0x92, + 0xfe, 0xf5, 0x22, 0x57, 0xd1, 0x2d, 0x32, 0xba, 0x4f, 0xe4, 0xd1, 0xd5, 0x50, 0x97, 0x66, 0xee, + 0x1f, 0xcc, 0x4f, 0x26, 0x0a, 0x71, 0x92, 0xa0, 0xfd, 0x36, 0x4c, 0x2c, 0x46, 0x91, 0x53, 0xdf, + 0x21, 0x0d, 0x3e, 0x83, 0xe8, 0x05, 0x18, 0xf0, 0x9c, 0x16, 0x11, 0xf3, 0x7b, 0x41, 0x0c, 0xec, + 0xc0, 0xba, 0xd3, 0x22, 0x87, 0x07, 0xf3, 0x53, 0xb7, 0x3c, 0xf7, 0xad, 0x8e, 0x58, 0x15, 0xb4, + 0x0c, 0x33, 0x6c, 0xf4, 0x1c, 0x40, 0x83, 0xec, 0xb9, 0x75, 0x52, 0x75, 0xa2, 0x1d, 0x31, 0xdf, + 0x48, 0xd4, 0x85, 0xb2, 0x82, 0x60, 0x0d, 0xcb, 0xbe, 0x07, 0xa5, 0xc5, 0x3d, 0xdf, 0x6d, 0x54, + 0xfd, 0x46, 0x88, 0x76, 0x61, 0xb2, 0x1d, 0x90, 0x2d, 0x12, 0xa8, 0xa2, 0x59, 0xeb, 0x42, 0xf1, + 0xd2, 0xe8, 0x73, 0x97, 0x32, 0x3f, 0xd6, 0x44, 0x5d, 0xf1, 0xa2, 0x60, 0x7f, 0xe9, 0x11, 0xd1, + 0xde, 0x64, 0x02, 0x8a, 0x93, 0x94, 0xed, 0x7f, 0x5d, 0x80, 0xd3, 0x8b, 0x6f, 0x77, 0x02, 0x52, + 0x76, 0xc3, 0xdd, 0xe4, 0x0a, 0x6f, 0xb8, 0xe1, 0xee, 0x7a, 0x3c, 0x02, 0x6a, 0x69, 0x95, 0x45, + 0x39, 0x56, 0x18, 0xe8, 0x59, 0x18, 0xa6, 0xbf, 0x6f, 0xe1, 0x8a, 0xf8, 0xe4, 0x19, 0x81, 0x3c, + 0x5a, 0x76, 0x22, 0xa7, 0xcc, 0x41, 0x58, 0xe2, 0xa0, 0x35, 0x18, 0xad, 0xb3, 0x0d, 0xb9, 0xbd, + 0xe6, 0x37, 0x08, 0x9b, 0xcc, 0xd2, 0xd2, 0xd3, 0x14, 0x7d, 0x39, 0x2e, 0x3e, 0x3c, 0x98, 0x9f, + 0xe5, 0x7d, 0x13, 0x24, 0x34, 0x18, 0xd6, 0xeb, 0x23, 0x5b, 0xed, 0xaf, 0x01, 0x46, 0x09, 0x32, + 0xf6, 0xd6, 0x25, 0x6d, 0xab, 0x0c, 0xb2, 0xad, 0x32, 0x96, 0xbd, 0x4d, 0xd0, 0x15, 0x18, 0xd8, + 0x75, 0xbd, 0xc6, 0xec, 0x10, 0xa3, 0x75, 0x8e, 0xce, 0xf9, 0x75, 0xd7, 0x6b, 0x1c, 0x1e, 0xcc, + 0x4f, 0x1b, 0xdd, 0xa1, 0x85, 0x98, 0xa1, 0xda, 0x7f, 0x6a, 0xc1, 0x3c, 0x83, 0xad, 0xba, 0x4d, + 0x52, 0x25, 0x41, 0xe8, 0x86, 0x11, 0xf1, 0x22, 0x63, 0x40, 0x9f, 0x03, 0x08, 0x49, 0x3d, 0x20, + 0x91, 0x36, 0xa4, 0x6a, 0x61, 0xd4, 0x14, 0x04, 0x6b, 0x58, 0xf4, 0x40, 0x08, 0x77, 0x9c, 0x80, + 0xad, 0x2f, 0x31, 0xb0, 0xea, 0x40, 0xa8, 0x49, 0x00, 0x8e, 0x71, 0x8c, 0x03, 0xa1, 0xd8, 0xeb, + 0x40, 0x40, 0x1f, 0x83, 0xc9, 0xb8, 0xb1, 0xb0, 0xed, 0xd4, 0xe5, 0x00, 0xb2, 0x2d, 0x53, 0x33, + 0x41, 0x38, 0x89, 0x6b, 0xff, 0x5d, 0x4b, 0x2c, 0x1e, 0xfa, 0xd5, 0xef, 0xf2, 0x6f, 0xb5, 0x7f, + 0xd1, 0x82, 0xe1, 0x25, 0xd7, 0x6b, 0xb8, 0xde, 0x36, 0xfa, 0x2c, 0x8c, 0xd0, 0xbb, 0xa9, 0xe1, + 0x44, 0x8e, 0x38, 0xf7, 0x3e, 0xa4, 0xed, 0x2d, 0x75, 0x55, 0x2c, 0xb4, 0x77, 0xb7, 0x69, 0x41, + 0xb8, 0x40, 0xb1, 0xe9, 0x6e, 0xbb, 0xb9, 0xf9, 0x26, 0xa9, 0x47, 0x6b, 0x24, 0x72, 0xe2, 0xcf, + 0x89, 0xcb, 0xb0, 0xa2, 0x8a, 0xae, 0xc3, 0x50, 0xe4, 0x04, 0xdb, 0x24, 0x12, 0x07, 0x60, 0xe6, + 0x41, 0xc5, 0x6b, 0x62, 0xba, 0x23, 0x89, 0x57, 0x27, 0xf1, 0xb5, 0xb0, 0xc1, 0xaa, 0x62, 0x41, + 0xc2, 0xfe, 0xa1, 0x61, 0x38, 0xbb, 0x5c, 0xab, 0xe4, 0xac, 0xab, 0x8b, 0x30, 0xd4, 0x08, 0xdc, + 0x3d, 0x12, 0x88, 0x71, 0x56, 0x54, 0xca, 0xac, 0x14, 0x0b, 0x28, 0x7a, 0x09, 0xc6, 0xf8, 0x85, + 0x74, 0xcd, 0xf1, 0x1a, 0x4d, 0x39, 0xc4, 0xa7, 0x04, 0xf6, 0xd8, 0x6d, 0x0d, 0x86, 0x0d, 0xcc, + 0x23, 0x2e, 0xaa, 0x8b, 0x89, 0xcd, 0x98, 0x77, 0xd9, 0x7d, 0xc1, 0x82, 0x29, 0xde, 0xcc, 0x62, + 0x14, 0x05, 0xee, 0x66, 0x27, 0x22, 0xe1, 0xec, 0x20, 0x3b, 0xe9, 0x96, 0xb3, 0x46, 0x2b, 0x77, + 0x04, 0x16, 0x6e, 0x27, 0xa8, 0xf0, 0x43, 0x70, 0x56, 0xb4, 0x3b, 0x95, 0x04, 0xe3, 0x54, 0xb3, + 0xe8, 0x3b, 0x2d, 0x98, 0xab, 0xfb, 0x5e, 0x14, 0xf8, 0xcd, 0x26, 0x09, 0xaa, 0x9d, 0xcd, 0xa6, + 0x1b, 0xee, 0xf0, 0x75, 0x8a, 0xc9, 0x16, 0x3b, 0x09, 0x72, 0xe6, 0x50, 0x21, 0x89, 0x39, 0x3c, + 0x7f, 0xff, 0x60, 0x7e, 0x6e, 0x39, 0x97, 0x14, 0xee, 0xd2, 0x0c, 0xda, 0x05, 0x44, 0xaf, 0xd2, + 0x5a, 0xe4, 0x6c, 0x93, 0xb8, 0xf1, 0xe1, 0xfe, 0x1b, 0x3f, 0x73, 0xff, 0x60, 0x1e, 0xad, 0xa7, + 0x48, 0xe0, 0x0c, 0xb2, 0xe8, 0x2d, 0x38, 0x45, 0x4b, 0x53, 0xdf, 0x3a, 0xd2, 0x7f, 0x73, 0xb3, + 0xf7, 0x0f, 0xe6, 0x4f, 0xad, 0x67, 0x10, 0xc1, 0x99, 0xa4, 0xd1, 0x77, 0x58, 0x70, 0x36, 0xfe, + 0xfc, 0x95, 0x7b, 0x6d, 0xc7, 0x6b, 0xc4, 0x0d, 0x97, 0xfa, 0x6f, 0x98, 0x9e, 0xc9, 0x67, 0x97, + 0xf3, 0x28, 0xe1, 0xfc, 0x46, 0xe6, 0x96, 0xe1, 0x74, 0xe6, 0x6a, 0x41, 0x53, 0x50, 0xdc, 0x25, + 0x9c, 0x0b, 0x2a, 0x61, 0xfa, 0x13, 0x9d, 0x82, 0xc1, 0x3d, 0xa7, 0xd9, 0x11, 0x1b, 0x05, 0xf3, + 0x3f, 0x2f, 0x17, 0x5e, 0xb2, 0xec, 0x7f, 0x53, 0x84, 0xc9, 0xe5, 0x5a, 0xe5, 0x81, 0x76, 0xa1, + 0x7e, 0x0d, 0x15, 0xba, 0x5e, 0x43, 0xf1, 0xa5, 0x56, 0xcc, 0xbd, 0xd4, 0xfe, 0x62, 0xc6, 0x16, + 0x1a, 0x60, 0x5b, 0xe8, 0x5b, 0x72, 0xb6, 0xd0, 0x31, 0x6f, 0x9c, 0xbd, 0x9c, 0x55, 0x34, 0xc8, + 0x26, 0x33, 0x93, 0x63, 0xb9, 0xe1, 0xd7, 0x9d, 0x66, 0xf2, 0xe8, 0x3b, 0xe2, 0x52, 0x3a, 0x9e, + 0x79, 0xac, 0xc3, 0xd8, 0xb2, 0xd3, 0x76, 0x36, 0xdd, 0xa6, 0x1b, 0xb9, 0x24, 0x44, 0x4f, 0x42, + 0xd1, 0x69, 0x34, 0x18, 0xb7, 0x55, 0x5a, 0x3a, 0x7d, 0xff, 0x60, 0xbe, 0xb8, 0xd8, 0xa0, 0xd7, + 0x3e, 0x28, 0xac, 0x7d, 0x4c, 0x31, 0xd0, 0x07, 0x61, 0xa0, 0x11, 0xf8, 0xed, 0xd9, 0x02, 0xc3, + 0xa4, 0xbb, 0x6e, 0xa0, 0x1c, 0xf8, 0xed, 0x04, 0x2a, 0xc3, 0xb1, 0x7f, 0xb5, 0x00, 0x8f, 0x2d, + 0x93, 0xf6, 0xce, 0x6a, 0x2d, 0xe7, 0xfc, 0xbe, 0x04, 0x23, 0x2d, 0xdf, 0x73, 0x23, 0x3f, 0x08, + 0x45, 0xd3, 0x6c, 0x45, 0xac, 0x89, 0x32, 0xac, 0xa0, 0xe8, 0x02, 0x0c, 0xb4, 0x63, 0xa6, 0x72, + 0x4c, 0x32, 0xa4, 0x8c, 0x9d, 0x64, 0x10, 0x8a, 0xd1, 0x09, 0x49, 0x20, 0x56, 0x8c, 0xc2, 0xb8, + 0x15, 0x92, 0x00, 0x33, 0x48, 0x7c, 0x33, 0xd3, 0x3b, 0x5b, 0x9c, 0xd0, 0x89, 0x9b, 0x99, 0x42, + 0xb0, 0x86, 0x85, 0xaa, 0x50, 0x0a, 0x13, 0x33, 0xdb, 0xd7, 0x36, 0x1d, 0x67, 0x57, 0xb7, 0x9a, + 0xc9, 0x98, 0x88, 0x71, 0xa3, 0x0c, 0xf5, 0xbc, 0xba, 0xbf, 0x52, 0x00, 0xc4, 0x87, 0xf0, 0x1b, + 0x6c, 0xe0, 0x6e, 0xa5, 0x07, 0xae, 0xff, 0x2d, 0x71, 0x5c, 0xa3, 0xf7, 0xbf, 0x2c, 0x78, 0x6c, + 0xd9, 0xf5, 0x1a, 0x24, 0xc8, 0x59, 0x80, 0x0f, 0xe7, 0x2d, 0x7b, 0x34, 0xa6, 0xc1, 0x58, 0x62, + 0x03, 0xc7, 0xb0, 0xc4, 0xec, 0x3f, 0xb6, 0x00, 0xf1, 0xcf, 0x7e, 0xd7, 0x7d, 0xec, 0xad, 0xf4, + 0xc7, 0x1e, 0xc3, 0xb2, 0xb0, 0x6f, 0xc0, 0xc4, 0x72, 0xd3, 0x25, 0x5e, 0x54, 0xa9, 0x2e, 0xfb, + 0xde, 0x96, 0xbb, 0x8d, 0x5e, 0x86, 0x89, 0xc8, 0x6d, 0x11, 0xbf, 0x13, 0xd5, 0x48, 0xdd, 0xf7, + 0xd8, 0x4b, 0xd2, 0xba, 0x34, 0xb8, 0x84, 0xee, 0x1f, 0xcc, 0x4f, 0x6c, 0x18, 0x10, 0x9c, 0xc0, + 0xb4, 0x7f, 0x97, 0x8e, 0x9f, 0xdf, 0x6a, 0xfb, 0x1e, 0xf1, 0xa2, 0x65, 0xdf, 0x6b, 0x70, 0x89, + 0xc3, 0xcb, 0x30, 0x10, 0xd1, 0xf1, 0xe0, 0x63, 0x77, 0x51, 0x6e, 0x14, 0x3a, 0x0a, 0x87, 0x07, + 0xf3, 0x67, 0xd2, 0x35, 0xd8, 0x38, 0xb1, 0x3a, 0xe8, 0x5b, 0x60, 0x28, 0x8c, 0x9c, 0xa8, 0x13, + 0x8a, 0xd1, 0x7c, 0x5c, 0x8e, 0x66, 0x8d, 0x95, 0x1e, 0x1e, 0xcc, 0x4f, 0xaa, 0x6a, 0xbc, 0x08, + 0x8b, 0x0a, 0xe8, 0x29, 0x18, 0x6e, 0x91, 0x30, 0x74, 0xb6, 0xe5, 0x6d, 0x38, 0x29, 0xea, 0x0e, + 0xaf, 0xf1, 0x62, 0x2c, 0xe1, 0xe8, 0x09, 0x18, 0x24, 0x41, 0xe0, 0x07, 0x62, 0x8f, 0x8e, 0x0b, + 0xc4, 0xc1, 0x15, 0x5a, 0x88, 0x39, 0xcc, 0xfe, 0x0d, 0x0b, 0x26, 0x55, 0x5f, 0x79, 0x5b, 0x27, + 0xf0, 0x2a, 0xf8, 0x14, 0x40, 0x5d, 0x7e, 0x60, 0xc8, 0x6e, 0x8f, 0xd1, 0xe7, 0x2e, 0x66, 0x5e, + 0xd4, 0xa9, 0x61, 0x8c, 0x29, 0xab, 0xa2, 0x10, 0x6b, 0xd4, 0xec, 0x7f, 0x66, 0xc1, 0x4c, 0xe2, + 0x8b, 0x6e, 0xb8, 0x61, 0x84, 0xde, 0x48, 0x7d, 0xd5, 0x42, 0x7f, 0x5f, 0x45, 0x6b, 0xb3, 0x6f, + 0x52, 0x4b, 0x59, 0x96, 0x68, 0x5f, 0x74, 0x0d, 0x06, 0xdd, 0x88, 0xb4, 0xe4, 0xc7, 0x3c, 0xd1, + 0xf5, 0x63, 0x78, 0xaf, 0xe2, 0x19, 0xa9, 0xd0, 0x9a, 0x98, 0x13, 0xb0, 0x7f, 0xb5, 0x08, 0x25, + 0xbe, 0x6c, 0xd7, 0x9c, 0xf6, 0x09, 0xcc, 0xc5, 0xd3, 0x50, 0x72, 0x5b, 0xad, 0x4e, 0xe4, 0x6c, + 0x8a, 0xe3, 0x7c, 0x84, 0x6f, 0xad, 0x8a, 0x2c, 0xc4, 0x31, 0x1c, 0x55, 0x60, 0x80, 0x75, 0x85, + 0x7f, 0xe5, 0x93, 0xd9, 0x5f, 0x29, 0xfa, 0xbe, 0x50, 0x76, 0x22, 0x87, 0x73, 0x52, 0xea, 0x1e, + 0xa1, 0x45, 0x98, 0x91, 0x40, 0x0e, 0xc0, 0xa6, 0xeb, 0x39, 0xc1, 0x3e, 0x2d, 0x9b, 0x2d, 0x32, + 0x82, 0xcf, 0x76, 0x27, 0xb8, 0xa4, 0xf0, 0x39, 0x59, 0xf5, 0x61, 0x31, 0x00, 0x6b, 0x44, 0xe7, + 0x3e, 0x02, 0x25, 0x85, 0x7c, 0x14, 0x86, 0x68, 0xee, 0x63, 0x30, 0x99, 0x68, 0xab, 0x57, 0xf5, + 0x31, 0x9d, 0x9f, 0xfa, 0x25, 0x76, 0x64, 0x88, 0x5e, 0xaf, 0x78, 0x7b, 0xe2, 0xc8, 0x7d, 0x1b, + 0x4e, 0x35, 0x33, 0x4e, 0x32, 0x31, 0xaf, 0xfd, 0x9f, 0x7c, 0x8f, 0x89, 0xcf, 0x3e, 0x95, 0x05, + 0xc5, 0x99, 0x6d, 0x50, 0x1e, 0xc1, 0x6f, 0xd3, 0x0d, 0xe2, 0x34, 0x75, 0x76, 0xfb, 0xa6, 0x28, + 0xc3, 0x0a, 0x4a, 0xcf, 0xbb, 0x53, 0xaa, 0xf3, 0xd7, 0xc9, 0x7e, 0x8d, 0x34, 0x49, 0x3d, 0xf2, + 0x83, 0xaf, 0x6b, 0xf7, 0xcf, 0xf1, 0xd1, 0xe7, 0xc7, 0xe5, 0xa8, 0x20, 0x50, 0xbc, 0x4e, 0xf6, + 0xf9, 0x54, 0xe8, 0x5f, 0x57, 0xec, 0xfa, 0x75, 0x3f, 0x63, 0xc1, 0xb8, 0xfa, 0xba, 0x13, 0x38, + 0x17, 0x96, 0xcc, 0x73, 0xe1, 0x5c, 0xd7, 0x05, 0x9e, 0x73, 0x22, 0x7c, 0xa5, 0x00, 0x67, 0x15, + 0x0e, 0x7d, 0x1b, 0xf0, 0x3f, 0x62, 0x55, 0x5d, 0x86, 0x92, 0xa7, 0xa4, 0x56, 0x96, 0x29, 0x2e, + 0x8a, 0x65, 0x56, 0x31, 0x0e, 0x65, 0xf1, 0xbc, 0x58, 0xb4, 0x34, 0xa6, 0x8b, 0x73, 0x85, 0xe8, + 0x76, 0x09, 0x8a, 0x1d, 0xb7, 0x21, 0x2e, 0x98, 0x0f, 0xc9, 0xd1, 0xbe, 0x55, 0x29, 0x1f, 0x1e, + 0xcc, 0x3f, 0x9e, 0xa7, 0x4a, 0xa0, 0x37, 0x5b, 0xb8, 0x70, 0xab, 0x52, 0xc6, 0xb4, 0x32, 0x5a, + 0x84, 0x49, 0xa9, 0x2d, 0xb9, 0x4d, 0xd9, 0x2d, 0xdf, 0x13, 0xf7, 0x90, 0x92, 0xc9, 0x62, 0x13, + 0x8c, 0x93, 0xf8, 0xa8, 0x0c, 0x53, 0xbb, 0x9d, 0x4d, 0xd2, 0x24, 0x11, 0xff, 0xe0, 0xeb, 0x84, + 0x4b, 0x2c, 0x4b, 0xf1, 0xcb, 0xec, 0x7a, 0x02, 0x8e, 0x53, 0x35, 0xec, 0x3f, 0x67, 0xf7, 0x81, + 0x18, 0xbd, 0x6a, 0xe0, 0xd3, 0x85, 0x45, 0xa9, 0x7f, 0x3d, 0x97, 0x73, 0x3f, 0xab, 0xe2, 0x3a, + 0xd9, 0xdf, 0xf0, 0x29, 0x67, 0x9e, 0xbd, 0x2a, 0x8c, 0x35, 0x3f, 0xd0, 0x75, 0xcd, 0xff, 0x5c, + 0x01, 0x4e, 0xab, 0x11, 0x30, 0x98, 0xc0, 0x6f, 0xf4, 0x31, 0xb8, 0x02, 0xa3, 0x0d, 0xb2, 0xe5, + 0x74, 0x9a, 0x91, 0x12, 0x9f, 0x0f, 0x72, 0x15, 0x4a, 0x39, 0x2e, 0xc6, 0x3a, 0xce, 0x11, 0x86, + 0xed, 0x7f, 0x8f, 0xb2, 0x8b, 0x38, 0x72, 0xe8, 0x1a, 0x57, 0xbb, 0xc6, 0xca, 0xdd, 0x35, 0x4f, + 0xc0, 0xa0, 0xdb, 0xa2, 0x8c, 0x59, 0xc1, 0xe4, 0xb7, 0x2a, 0xb4, 0x10, 0x73, 0x18, 0xfa, 0x00, + 0x0c, 0xd7, 0xfd, 0x56, 0xcb, 0xf1, 0x1a, 0xec, 0xca, 0x2b, 0x2d, 0x8d, 0x52, 0xde, 0x6d, 0x99, + 0x17, 0x61, 0x09, 0x43, 0x8f, 0xc1, 0x80, 0x13, 0x6c, 0x73, 0x19, 0x46, 0x69, 0x69, 0x84, 0xb6, + 0xb4, 0x18, 0x6c, 0x87, 0x98, 0x95, 0xd2, 0x27, 0xd8, 0x5d, 0x3f, 0xd8, 0x75, 0xbd, 0xed, 0xb2, + 0x1b, 0x88, 0x2d, 0xa1, 0xee, 0xc2, 0x3b, 0x0a, 0x82, 0x35, 0x2c, 0xb4, 0x0a, 0x83, 0x6d, 0x3f, + 0x88, 0xc2, 0xd9, 0x21, 0x36, 0xdc, 0x8f, 0xe7, 0x1c, 0x44, 0xfc, 0x6b, 0xab, 0x7e, 0x10, 0xc5, + 0x1f, 0x40, 0xff, 0x85, 0x98, 0x57, 0x47, 0x37, 0x60, 0x98, 0x78, 0x7b, 0xab, 0x81, 0xdf, 0x9a, + 0x9d, 0xc9, 0xa7, 0xb4, 0xc2, 0x51, 0xf8, 0x32, 0x8b, 0x79, 0x54, 0x51, 0x8c, 0x25, 0x09, 0xf4, + 0x2d, 0x50, 0x24, 0xde, 0xde, 0xec, 0x30, 0xa3, 0x34, 0x97, 0x43, 0xe9, 0xb6, 0x13, 0xc4, 0x67, + 0xfe, 0x8a, 0xb7, 0x87, 0x69, 0x1d, 0xf4, 0x49, 0x28, 0xc9, 0x03, 0x23, 0x14, 0xc2, 0xba, 0xcc, + 0x05, 0x2b, 0x8f, 0x19, 0x4c, 0xde, 0xea, 0xb8, 0x01, 0x69, 0x11, 0x2f, 0x0a, 0xe3, 0x13, 0x52, + 0x42, 0x43, 0x1c, 0x53, 0x43, 0x9f, 0x94, 0x12, 0xe2, 0x35, 0xbf, 0xe3, 0x45, 0xe1, 0x6c, 0x89, + 0x75, 0x2f, 0x53, 0x77, 0x77, 0x3b, 0xc6, 0x4b, 0x8a, 0x90, 0x79, 0x65, 0x6c, 0x90, 0x42, 0x9f, + 0x86, 0x71, 0xfe, 0x9f, 0x6b, 0xc0, 0xc2, 0xd9, 0xd3, 0x8c, 0xf6, 0x85, 0x7c, 0xda, 0x1c, 0x71, + 0xe9, 0xb4, 0x20, 0x3e, 0xae, 0x97, 0x86, 0xd8, 0xa4, 0x86, 0x30, 0x8c, 0x37, 0xdd, 0x3d, 0xe2, + 0x91, 0x30, 0xac, 0x06, 0xfe, 0x26, 0x99, 0x05, 0x36, 0x30, 0x67, 0xb3, 0x35, 0x66, 0xfe, 0x26, + 0x59, 0x9a, 0xa6, 0x34, 0x6f, 0xe8, 0x75, 0xb0, 0x49, 0x02, 0xdd, 0x82, 0x09, 0xfa, 0x62, 0x73, + 0x63, 0xa2, 0xa3, 0xbd, 0x88, 0xb2, 0x77, 0x15, 0x36, 0x2a, 0xe1, 0x04, 0x11, 0x74, 0x13, 0xc6, + 0xc2, 0xc8, 0x09, 0xa2, 0x4e, 0x9b, 0x13, 0x3d, 0xd3, 0x8b, 0x28, 0x53, 0xb8, 0xd6, 0xb4, 0x2a, + 0xd8, 0x20, 0x80, 0x5e, 0x83, 0x52, 0xd3, 0xdd, 0x22, 0xf5, 0xfd, 0x7a, 0x93, 0xcc, 0x8e, 0x31, + 0x6a, 0x99, 0x87, 0xca, 0x0d, 0x89, 0xc4, 0xf9, 0x5c, 0xf5, 0x17, 0xc7, 0xd5, 0xd1, 0x6d, 0x38, + 0x13, 0x91, 0xa0, 0xe5, 0x7a, 0x0e, 0x3d, 0x0c, 0xc4, 0xd3, 0x8a, 0x29, 0x32, 0xc7, 0xd9, 0x6e, + 0x3b, 0x2f, 0x66, 0xe3, 0xcc, 0x46, 0x26, 0x16, 0xce, 0xa9, 0x8d, 0xee, 0xc1, 0x6c, 0x06, 0xc4, + 0x6f, 0xba, 0xf5, 0xfd, 0xd9, 0x53, 0x8c, 0xf2, 0x47, 0x05, 0xe5, 0xd9, 0x8d, 0x1c, 0xbc, 0xc3, + 0x2e, 0x30, 0x9c, 0x4b, 0x1d, 0xdd, 0x84, 0x49, 0x76, 0x02, 0x55, 0x3b, 0xcd, 0xa6, 0x68, 0x70, + 0x82, 0x35, 0xf8, 0x01, 0x79, 0x1f, 0x57, 0x4c, 0xf0, 0xe1, 0xc1, 0x3c, 0xc4, 0xff, 0x70, 0xb2, + 0x36, 0xda, 0x64, 0x3a, 0xb3, 0x4e, 0xe0, 0x46, 0xfb, 0xf4, 0xdc, 0x20, 0xf7, 0xa2, 0xd9, 0xc9, + 0xae, 0xf2, 0x0a, 0x1d, 0x55, 0x29, 0xd6, 0xf4, 0x42, 0x9c, 0x24, 0x48, 0x8f, 0xd4, 0x30, 0x6a, + 0xb8, 0xde, 0xec, 0x14, 0x7f, 0x97, 0xc8, 0x13, 0xa9, 0x46, 0x0b, 0x31, 0x87, 0x31, 0x7d, 0x19, + 0xfd, 0x71, 0x93, 0xde, 0x5c, 0xd3, 0x0c, 0x31, 0xd6, 0x97, 0x49, 0x00, 0x8e, 0x71, 0x28, 0x33, + 0x19, 0x45, 0xfb, 0xb3, 0x88, 0xa1, 0xaa, 0x83, 0x65, 0x63, 0xe3, 0x93, 0x98, 0x96, 0xdb, 0x9b, + 0x30, 0xa1, 0x0e, 0x42, 0x36, 0x26, 0x68, 0x1e, 0x06, 0x19, 0xfb, 0x24, 0xa4, 0x6b, 0x25, 0xda, + 0x05, 0xc6, 0x5a, 0x61, 0x5e, 0xce, 0xba, 0xe0, 0xbe, 0x4d, 0x96, 0xf6, 0x23, 0xc2, 0xdf, 0xf4, + 0x45, 0xad, 0x0b, 0x12, 0x80, 0x63, 0x1c, 0xfb, 0xff, 0x71, 0x36, 0x34, 0x3e, 0x6d, 0xfb, 0xb8, + 0x5f, 0x9e, 0x81, 0x91, 0x1d, 0x3f, 0x8c, 0x28, 0x36, 0x6b, 0x63, 0x30, 0x66, 0x3c, 0xaf, 0x89, + 0x72, 0xac, 0x30, 0xd0, 0x2b, 0x30, 0x5e, 0xd7, 0x1b, 0x10, 0x97, 0xa3, 0x3a, 0x46, 0x8c, 0xd6, + 0xb1, 0x89, 0x8b, 0x5e, 0x82, 0x11, 0x66, 0x03, 0x52, 0xf7, 0x9b, 0x82, 0x6b, 0x93, 0x37, 0xfc, + 0x48, 0x55, 0x94, 0x1f, 0x6a, 0xbf, 0xb1, 0xc2, 0x46, 0x17, 0x61, 0x88, 0x76, 0xa1, 0x52, 0x15, + 0xd7, 0x92, 0x12, 0x14, 0x5d, 0x63, 0xa5, 0x58, 0x40, 0xed, 0xbf, 0x52, 0xd0, 0x46, 0x99, 0xbe, + 0x87, 0x09, 0xaa, 0xc2, 0xf0, 0x5d, 0xc7, 0x8d, 0x5c, 0x6f, 0x5b, 0xf0, 0x1f, 0x4f, 0x75, 0xbd, + 0xa3, 0x58, 0xa5, 0x3b, 0xbc, 0x02, 0xbf, 0x45, 0xc5, 0x1f, 0x2c, 0xc9, 0x50, 0x8a, 0x41, 0xc7, + 0xf3, 0x28, 0xc5, 0x42, 0xbf, 0x14, 0x31, 0xaf, 0xc0, 0x29, 0x8a, 0x3f, 0x58, 0x92, 0x41, 0x6f, + 0x00, 0xc8, 0x1d, 0x46, 0x1a, 0xc2, 0xf6, 0xe2, 0x99, 0xde, 0x44, 0x37, 0x54, 0x9d, 0xa5, 0x09, + 0x7a, 0x47, 0xc7, 0xff, 0xb1, 0x46, 0xcf, 0x8e, 0x18, 0x9f, 0x96, 0xee, 0x0c, 0xfa, 0x36, 0xba, + 0xc4, 0x9d, 0x20, 0x22, 0x8d, 0xc5, 0x48, 0x0c, 0xce, 0x07, 0xfb, 0x7b, 0xa4, 0x6c, 0xb8, 0x2d, + 0xa2, 0x6f, 0x07, 0x41, 0x04, 0xc7, 0xf4, 0xec, 0x5f, 0x28, 0xc2, 0x6c, 0x5e, 0x77, 0xe9, 0xa2, + 0x23, 0xf7, 0xdc, 0x68, 0x99, 0xb2, 0x57, 0x96, 0xb9, 0xe8, 0x56, 0x44, 0x39, 0x56, 0x18, 0x74, + 0xf6, 0x43, 0x77, 0x5b, 0xbe, 0x31, 0x07, 0xe3, 0xd9, 0xaf, 0xb1, 0x52, 0x2c, 0xa0, 0x14, 0x2f, + 0x20, 0x4e, 0x28, 0x8c, 0x7b, 0xb4, 0x55, 0x82, 0x59, 0x29, 0x16, 0x50, 0x5d, 0xda, 0x35, 0xd0, + 0x43, 0xda, 0x65, 0x0c, 0xd1, 0xe0, 0xf1, 0x0e, 0x11, 0xfa, 0x0c, 0xc0, 0x96, 0xeb, 0xb9, 0xe1, + 0x0e, 0xa3, 0x3e, 0x74, 0x64, 0xea, 0x8a, 0x39, 0x5b, 0x55, 0x54, 0xb0, 0x46, 0x11, 0xbd, 0x08, + 0xa3, 0x6a, 0x03, 0x56, 0xca, 0x4c, 0xd3, 0xa9, 0x59, 0x8e, 0xc4, 0xa7, 0x51, 0x19, 0xeb, 0x78, + 0xf6, 0x9b, 0xc9, 0xf5, 0x22, 0x76, 0x80, 0x36, 0xbe, 0x56, 0xbf, 0xe3, 0x5b, 0xe8, 0x3e, 0xbe, + 0xf6, 0xd7, 0x8a, 0x30, 0x69, 0x34, 0xd6, 0x09, 0xfb, 0x38, 0xb3, 0xae, 0xd2, 0x03, 0xdc, 0x89, + 0x88, 0xd8, 0x7f, 0x76, 0xef, 0xad, 0xa2, 0x1f, 0xf2, 0x74, 0x07, 0xf0, 0xfa, 0xe8, 0x33, 0x50, + 0x6a, 0x3a, 0x21, 0x93, 0x9c, 0x11, 0xb1, 0xef, 0xfa, 0x21, 0x16, 0x3f, 0x4c, 0x9c, 0x30, 0xd2, + 0x6e, 0x4d, 0x4e, 0x3b, 0x26, 0x49, 0x6f, 0x1a, 0xca, 0x9f, 0x48, 0xeb, 0x31, 0xd5, 0x09, 0xca, + 0xc4, 0xec, 0x63, 0x0e, 0x43, 0x2f, 0xc1, 0x58, 0x40, 0xd8, 0xaa, 0x58, 0xa6, 0xdc, 0x1c, 0x5b, + 0x66, 0x83, 0x31, 0xdb, 0x87, 0x35, 0x18, 0x36, 0x30, 0xe3, 0xb7, 0xc1, 0x50, 0x97, 0xb7, 0xc1, + 0x53, 0x30, 0xcc, 0x7e, 0xa8, 0x15, 0xa0, 0x66, 0xa3, 0xc2, 0x8b, 0xb1, 0x84, 0x27, 0x17, 0xcc, + 0x48, 0x7f, 0x0b, 0x86, 0xbe, 0x3e, 0xc4, 0xa2, 0x66, 0x5a, 0xe6, 0x11, 0x7e, 0xca, 0x89, 0x25, + 0x8f, 0x25, 0xcc, 0xfe, 0x20, 0x4c, 0x94, 0x1d, 0xd2, 0xf2, 0xbd, 0x15, 0xaf, 0xd1, 0xf6, 0x5d, + 0x2f, 0x42, 0xb3, 0x30, 0xc0, 0x2e, 0x11, 0x7e, 0x04, 0x0c, 0xd0, 0x86, 0x30, 0x2b, 0xb1, 0xb7, + 0xe1, 0x74, 0xd9, 0xbf, 0xeb, 0xdd, 0x75, 0x82, 0xc6, 0x62, 0xb5, 0xa2, 0xbd, 0xaf, 0xd7, 0xe5, + 0xfb, 0x8e, 0x1b, 0x6d, 0x65, 0x1e, 0xbd, 0x5a, 0x4d, 0xce, 0xd6, 0xae, 0xba, 0x4d, 0x92, 0x23, + 0x05, 0xf9, 0xeb, 0x05, 0xa3, 0xa5, 0x18, 0x5f, 0x69, 0xb5, 0xac, 0x5c, 0xad, 0xd6, 0xeb, 0x30, + 0xb2, 0xe5, 0x92, 0x66, 0x03, 0x93, 0x2d, 0xb1, 0x12, 0x9f, 0xcc, 0xb7, 0x43, 0x59, 0xa5, 0x98, + 0x52, 0xea, 0xc5, 0x5f, 0x87, 0xab, 0xa2, 0x32, 0x56, 0x64, 0xd0, 0x2e, 0x4c, 0xc9, 0x07, 0x83, + 0x84, 0x8a, 0x75, 0xf9, 0x54, 0xb7, 0x57, 0x88, 0x49, 0xfc, 0xd4, 0xfd, 0x83, 0xf9, 0x29, 0x9c, + 0x20, 0x83, 0x53, 0x84, 0xe9, 0x73, 0xb0, 0x45, 0x4f, 0xe0, 0x01, 0x36, 0xfc, 0xec, 0x39, 0xc8, + 0x5e, 0xb6, 0xac, 0xd4, 0xfe, 0x31, 0x0b, 0x1e, 0x49, 0x8d, 0x8c, 0x78, 0xe1, 0x1f, 0xf3, 0x2c, + 0x24, 0x5f, 0xdc, 0x85, 0xde, 0x2f, 0x6e, 0xfb, 0xef, 0x59, 0x70, 0x6a, 0xa5, 0xd5, 0x8e, 0xf6, + 0xcb, 0xae, 0xa9, 0x82, 0xfa, 0x08, 0x0c, 0xb5, 0x48, 0xc3, 0xed, 0xb4, 0xc4, 0xcc, 0xcd, 0xcb, + 0x53, 0x6a, 0x8d, 0x95, 0x1e, 0x1e, 0xcc, 0x8f, 0xd7, 0x22, 0x3f, 0x70, 0xb6, 0x09, 0x2f, 0xc0, + 0x02, 0x9d, 0x9d, 0xf5, 0xee, 0xdb, 0xe4, 0x86, 0xdb, 0x72, 0xa5, 0x5d, 0x51, 0x57, 0x99, 0xdd, + 0x82, 0x1c, 0xd0, 0x85, 0xd7, 0x3b, 0x8e, 0x17, 0xb9, 0xd1, 0xbe, 0xd0, 0x1e, 0x49, 0x22, 0x38, + 0xa6, 0x67, 0x7f, 0xd5, 0x82, 0x49, 0xb9, 0xee, 0x17, 0x1b, 0x8d, 0x80, 0x84, 0x21, 0x9a, 0x83, + 0x82, 0xdb, 0x16, 0xbd, 0x04, 0xd1, 0xcb, 0x42, 0xa5, 0x8a, 0x0b, 0x6e, 0x5b, 0xb2, 0x65, 0xec, + 0x20, 0x2c, 0x9a, 0x8a, 0xb4, 0x6b, 0xa2, 0x1c, 0x2b, 0x0c, 0x74, 0x09, 0x46, 0x3c, 0xbf, 0xc1, + 0x6d, 0xbb, 0xf8, 0x95, 0xc6, 0x16, 0xd8, 0xba, 0x28, 0xc3, 0x0a, 0x8a, 0xaa, 0x50, 0xe2, 0x66, + 0x4f, 0xf1, 0xa2, 0xed, 0xcb, 0x78, 0x8a, 0x7d, 0xd9, 0x86, 0xac, 0x89, 0x63, 0x22, 0xf6, 0xaf, + 0x58, 0x30, 0x26, 0xbf, 0xac, 0x4f, 0x9e, 0x93, 0x6e, 0xad, 0x98, 0xdf, 0x8c, 0xb7, 0x16, 0xe5, + 0x19, 0x19, 0xc4, 0x60, 0x15, 0x8b, 0x47, 0x62, 0x15, 0xaf, 0xc0, 0xa8, 0xd3, 0x6e, 0x57, 0x4d, + 0x3e, 0x93, 0x2d, 0xa5, 0xc5, 0xb8, 0x18, 0xeb, 0x38, 0xf6, 0x8f, 0x16, 0x60, 0x42, 0x7e, 0x41, + 0xad, 0xb3, 0x19, 0x92, 0x08, 0x6d, 0x40, 0xc9, 0xe1, 0xb3, 0x44, 0xe4, 0x22, 0x7f, 0x22, 0x5b, + 0x8e, 0x60, 0x4c, 0x69, 0x7c, 0xe1, 0x2f, 0xca, 0xda, 0x38, 0x26, 0x84, 0x9a, 0x30, 0xed, 0xf9, + 0x11, 0x3b, 0xfc, 0x15, 0xbc, 0x9b, 0x6a, 0x27, 0x49, 0xfd, 0xac, 0xa0, 0x3e, 0xbd, 0x9e, 0xa4, + 0x82, 0xd3, 0x84, 0xd1, 0x8a, 0x94, 0xcd, 0x14, 0xf3, 0x85, 0x01, 0xfa, 0xc4, 0x65, 0x8b, 0x66, + 0xec, 0x5f, 0xb6, 0xa0, 0x24, 0xd1, 0x4e, 0x42, 0x8b, 0xb7, 0x06, 0xc3, 0x21, 0x9b, 0x04, 0x39, + 0x34, 0x76, 0xb7, 0x8e, 0xf3, 0xf9, 0x8a, 0xef, 0x34, 0xfe, 0x3f, 0xc4, 0x92, 0x06, 0x13, 0xcd, + 0xab, 0xee, 0xbf, 0x4b, 0x44, 0xf3, 0xaa, 0x3f, 0x39, 0x97, 0xd2, 0x1f, 0xb2, 0x3e, 0x6b, 0xb2, + 0x2e, 0xca, 0x7a, 0xb5, 0x03, 0xb2, 0xe5, 0xde, 0x4b, 0xb2, 0x5e, 0x55, 0x56, 0x8a, 0x05, 0x14, + 0xbd, 0x01, 0x63, 0x75, 0x29, 0x93, 0x8d, 0x77, 0xf8, 0xc5, 0xae, 0xfa, 0x01, 0xa5, 0x4a, 0xe2, + 0xb2, 0x90, 0x65, 0xad, 0x3e, 0x36, 0xa8, 0x99, 0x66, 0x04, 0xc5, 0x5e, 0x66, 0x04, 0x31, 0xdd, + 0x7c, 0xa5, 0xfa, 0x8f, 0x5b, 0x30, 0xc4, 0x65, 0x71, 0xfd, 0x89, 0x42, 0x35, 0xcd, 0x5a, 0x3c, + 0x76, 0xb7, 0x69, 0xa1, 0xd0, 0x94, 0xa1, 0x35, 0x28, 0xb1, 0x1f, 0x4c, 0x96, 0x58, 0xcc, 0xb7, + 0xba, 0xe7, 0xad, 0xea, 0x1d, 0xbc, 0x2d, 0xab, 0xe1, 0x98, 0x82, 0xfd, 0xc3, 0x45, 0x7a, 0xba, + 0xc5, 0xa8, 0xc6, 0xa5, 0x6f, 0x3d, 0xbc, 0x4b, 0xbf, 0xf0, 0xb0, 0x2e, 0xfd, 0x6d, 0x98, 0xac, + 0x6b, 0x7a, 0xb8, 0x78, 0x26, 0x2f, 0x75, 0x5d, 0x24, 0x9a, 0xca, 0x8e, 0x4b, 0x59, 0x96, 0x4d, + 0x22, 0x38, 0x49, 0x15, 0x7d, 0x1b, 0x8c, 0xf1, 0x79, 0x16, 0xad, 0x70, 0x4b, 0x8c, 0x0f, 0xe4, + 0xaf, 0x17, 0xbd, 0x09, 0x2e, 0x95, 0xd3, 0xaa, 0x63, 0x83, 0x98, 0xfd, 0x27, 0x16, 0xa0, 0x95, + 0xf6, 0x0e, 0x69, 0x91, 0xc0, 0x69, 0xc6, 0xe2, 0xf4, 0xef, 0xb7, 0x60, 0x96, 0xa4, 0x8a, 0x97, + 0xfd, 0x56, 0x4b, 0x3c, 0x5a, 0x72, 0xde, 0xd5, 0x2b, 0x39, 0x75, 0x94, 0x5b, 0xc2, 0x6c, 0x1e, + 0x06, 0xce, 0x6d, 0x0f, 0xad, 0xc1, 0x0c, 0xbf, 0x25, 0x15, 0x40, 0xb3, 0xbd, 0x7e, 0x54, 0x10, + 0x9e, 0xd9, 0x48, 0xa3, 0xe0, 0xac, 0x7a, 0xf6, 0x77, 0x8d, 0x41, 0x6e, 0x2f, 0xde, 0xd3, 0x23, + 0xbc, 0xa7, 0x47, 0x78, 0x4f, 0x8f, 0xf0, 0x9e, 0x1e, 0xe1, 0x3d, 0x3d, 0xc2, 0x37, 0xbd, 0x1e, + 0xe1, 0xaf, 0x5a, 0x70, 0x5a, 0x5d, 0x03, 0xc6, 0xc3, 0xf7, 0x73, 0x30, 0xc3, 0xb7, 0xdb, 0x72, + 0xd3, 0x71, 0x5b, 0x1b, 0xa4, 0xd5, 0x6e, 0x3a, 0x91, 0xd4, 0xba, 0x5f, 0xc9, 0x5c, 0xb9, 0x09, + 0x8b, 0x55, 0xa3, 0xe2, 0xd2, 0x23, 0xf4, 0x7a, 0xca, 0x00, 0xe0, 0xac, 0x66, 0xec, 0x5f, 0x18, + 0x81, 0xc1, 0x95, 0x3d, 0xe2, 0x45, 0x27, 0xf0, 0x44, 0xa8, 0xc3, 0x84, 0xeb, 0xed, 0xf9, 0xcd, + 0x3d, 0xd2, 0xe0, 0xf0, 0xa3, 0xbc, 0x64, 0xcf, 0x08, 0xd2, 0x13, 0x15, 0x83, 0x04, 0x4e, 0x90, + 0x7c, 0x18, 0xd2, 0xe4, 0xab, 0x30, 0xc4, 0x0f, 0x71, 0x21, 0x4a, 0xce, 0x3c, 0xb3, 0xd9, 0x20, + 0x8a, 0xab, 0x29, 0x96, 0x74, 0xf3, 0x4b, 0x42, 0x54, 0x47, 0x6f, 0xc2, 0xc4, 0x96, 0x1b, 0x84, + 0xd1, 0x86, 0xdb, 0x22, 0x61, 0xe4, 0xb4, 0xda, 0x0f, 0x20, 0x3d, 0x56, 0xe3, 0xb0, 0x6a, 0x50, + 0xc2, 0x09, 0xca, 0x68, 0x1b, 0xc6, 0x9b, 0x8e, 0xde, 0xd4, 0xf0, 0x91, 0x9b, 0x52, 0xb7, 0xc3, + 0x0d, 0x9d, 0x10, 0x36, 0xe9, 0xd2, 0xed, 0x54, 0x67, 0x02, 0xd0, 0x11, 0x26, 0x16, 0x50, 0xdb, + 0x89, 0x4b, 0x3e, 0x39, 0x8c, 0x32, 0x3a, 0xcc, 0x40, 0xb6, 0x64, 0x32, 0x3a, 0x9a, 0x19, 0xec, + 0x67, 0xa1, 0x44, 0xe8, 0x10, 0x52, 0xc2, 0xe2, 0x82, 0xb9, 0xdc, 0x5f, 0x5f, 0xd7, 0xdc, 0x7a, + 0xe0, 0x9b, 0x72, 0xfb, 0x15, 0x49, 0x09, 0xc7, 0x44, 0xd1, 0x32, 0x0c, 0x85, 0x24, 0x70, 0x49, + 0x28, 0xae, 0x9a, 0x2e, 0xd3, 0xc8, 0xd0, 0xb8, 0x6f, 0x09, 0xff, 0x8d, 0x45, 0x55, 0xba, 0xbc, + 0x1c, 0x26, 0xd2, 0x64, 0x97, 0x81, 0xb6, 0xbc, 0x16, 0x59, 0x29, 0x16, 0x50, 0xf4, 0x1a, 0x0c, + 0x07, 0xa4, 0xc9, 0x14, 0x43, 0xe3, 0xfd, 0x2f, 0x72, 0xae, 0x67, 0xe2, 0xf5, 0xb0, 0x24, 0x80, + 0xae, 0x03, 0x0a, 0x08, 0x65, 0x94, 0x5c, 0x6f, 0x5b, 0x99, 0x8d, 0x8a, 0x83, 0x56, 0x31, 0xa4, + 0x38, 0xc6, 0x90, 0x6e, 0x3e, 0x38, 0xa3, 0x1a, 0xba, 0x0a, 0xd3, 0xaa, 0xb4, 0xe2, 0x85, 0x91, + 0x43, 0x0f, 0xb8, 0x49, 0x46, 0x4b, 0xc9, 0x29, 0x70, 0x12, 0x01, 0xa7, 0xeb, 0xd8, 0x5f, 0xb2, + 0x80, 0x8f, 0xf3, 0x09, 0xbc, 0xce, 0x5f, 0x35, 0x5f, 0xe7, 0x67, 0x73, 0x67, 0x2e, 0xe7, 0x65, + 0xfe, 0x25, 0x0b, 0x46, 0xb5, 0x99, 0x8d, 0xd7, 0xac, 0xd5, 0x65, 0xcd, 0x76, 0x60, 0x8a, 0xae, + 0xf4, 0x9b, 0x9b, 0x21, 0x09, 0xf6, 0x48, 0x83, 0x2d, 0xcc, 0xc2, 0x83, 0x2d, 0x4c, 0x65, 0xa2, + 0x76, 0x23, 0x41, 0x10, 0xa7, 0x9a, 0xb0, 0x3f, 0x2b, 0xbb, 0xaa, 0x2c, 0xfa, 0xea, 0x6a, 0xce, + 0x13, 0x16, 0x7d, 0x6a, 0x56, 0x71, 0x8c, 0x43, 0xb7, 0xda, 0x8e, 0x1f, 0x46, 0x49, 0x8b, 0xbe, + 0x6b, 0x7e, 0x18, 0x61, 0x06, 0xb1, 0x9f, 0x07, 0x58, 0xb9, 0x47, 0xea, 0x7c, 0xc5, 0xea, 0x8f, + 0x07, 0x2b, 0xff, 0xf1, 0x60, 0xff, 0x96, 0x05, 0x13, 0xab, 0xcb, 0xc6, 0xcd, 0xb5, 0x00, 0xc0, + 0x5f, 0x3c, 0x77, 0xee, 0xac, 0x4b, 0x75, 0x38, 0xd7, 0x68, 0xaa, 0x52, 0xac, 0x61, 0xa0, 0xb3, + 0x50, 0x6c, 0x76, 0x3c, 0x21, 0x3e, 0x1c, 0xa6, 0xd7, 0xe3, 0x8d, 0x8e, 0x87, 0x69, 0x99, 0xe6, + 0x52, 0x50, 0xec, 0xdb, 0xa5, 0xa0, 0xa7, 0x6b, 0x3f, 0x9a, 0x87, 0xc1, 0xbb, 0x77, 0xdd, 0x06, + 0x77, 0xa0, 0x14, 0xaa, 0xfa, 0x3b, 0x77, 0x2a, 0xe5, 0x10, 0xf3, 0x72, 0xfb, 0x8b, 0x45, 0x98, + 0x5b, 0x6d, 0x92, 0x7b, 0xef, 0xd0, 0x89, 0xb4, 0x5f, 0x87, 0x88, 0xa3, 0x09, 0x62, 0x8e, 0xea, + 0xf4, 0xd2, 0x7b, 0x3c, 0xb6, 0x60, 0x98, 0x1b, 0xb4, 0x49, 0x97, 0xd2, 0x57, 0xb2, 0x5a, 0xcf, + 0x1f, 0x90, 0x05, 0x6e, 0x18, 0x27, 0x3c, 0xe2, 0xd4, 0x85, 0x29, 0x4a, 0xb1, 0x24, 0x3e, 0xf7, + 0x32, 0x8c, 0xe9, 0x98, 0x47, 0x72, 0x3f, 0xfb, 0x4b, 0x45, 0x98, 0xa2, 0x3d, 0x78, 0xa8, 0x13, + 0x71, 0x2b, 0x3d, 0x11, 0xc7, 0xed, 0x82, 0xd4, 0x7b, 0x36, 0xde, 0x48, 0xce, 0xc6, 0x95, 0xbc, + 0xd9, 0x38, 0xe9, 0x39, 0xf8, 0x4e, 0x0b, 0x66, 0x56, 0x9b, 0x7e, 0x7d, 0x37, 0xe1, 0x26, 0xf4, + 0x22, 0x8c, 0xd2, 0xe3, 0x38, 0x34, 0x3c, 0xd8, 0x8d, 0x98, 0x06, 0x02, 0x84, 0x75, 0x3c, 0xad, + 0xda, 0xad, 0x5b, 0x95, 0x72, 0x56, 0x28, 0x04, 0x01, 0xc2, 0x3a, 0x9e, 0xfd, 0xeb, 0x16, 0x9c, + 0xbb, 0xba, 0xbc, 0x12, 0x2f, 0xc5, 0x54, 0x34, 0x86, 0x8b, 0x30, 0xd4, 0x6e, 0x68, 0x5d, 0x89, + 0xc5, 0xab, 0x65, 0xd6, 0x0b, 0x01, 0x7d, 0xb7, 0x44, 0x1a, 0xf9, 0x69, 0x0b, 0x66, 0xae, 0xba, + 0x11, 0xbd, 0x5d, 0x93, 0x71, 0x01, 0xe8, 0xf5, 0x1a, 0xba, 0x91, 0x1f, 0xec, 0x27, 0xe3, 0x02, + 0x60, 0x05, 0xc1, 0x1a, 0x16, 0x6f, 0x79, 0xcf, 0x65, 0xa6, 0xd4, 0x05, 0x53, 0xd1, 0x84, 0x45, + 0x39, 0x56, 0x18, 0xf4, 0xc3, 0x1a, 0x6e, 0xc0, 0x64, 0x74, 0xfb, 0xe2, 0x84, 0x55, 0x1f, 0x56, + 0x96, 0x00, 0x1c, 0xe3, 0xd8, 0x7f, 0x64, 0xc1, 0xfc, 0xd5, 0x66, 0x27, 0x8c, 0x48, 0xb0, 0x15, + 0xe6, 0x9c, 0x8e, 0xcf, 0x43, 0x89, 0x48, 0x89, 0xb8, 0xe8, 0xb5, 0xe2, 0x18, 0x95, 0xa8, 0x9c, + 0x87, 0x27, 0x50, 0x78, 0x7d, 0x38, 0x1d, 0x1e, 0xcd, 0x6b, 0x6c, 0x15, 0x10, 0xd1, 0xdb, 0xd2, + 0xe3, 0x35, 0x30, 0xc7, 0xef, 0x95, 0x14, 0x14, 0x67, 0xd4, 0xb0, 0x7f, 0xcc, 0x82, 0xd3, 0xea, + 0x83, 0xdf, 0x75, 0x9f, 0x69, 0xff, 0x6c, 0x01, 0xc6, 0xaf, 0x6d, 0x6c, 0x54, 0xaf, 0x92, 0x48, + 0x5c, 0xdb, 0xbd, 0xf5, 0xdc, 0x58, 0x53, 0xd7, 0x75, 0x7b, 0xcc, 0x75, 0x22, 0xb7, 0xb9, 0xc0, + 0xc3, 0xfe, 0x2c, 0x54, 0xbc, 0xe8, 0x66, 0x50, 0x8b, 0x02, 0xd7, 0xdb, 0xce, 0x54, 0xf0, 0x49, + 0xe6, 0xa2, 0x98, 0xc7, 0x5c, 0xa0, 0xe7, 0x61, 0x88, 0xc5, 0x1d, 0x92, 0x93, 0xf0, 0xa8, 0x7a, + 0x0b, 0xb1, 0xd2, 0xc3, 0x83, 0xf9, 0xd2, 0x2d, 0x5c, 0xe1, 0x7f, 0xb0, 0x40, 0x45, 0xb7, 0x60, + 0x74, 0x27, 0x8a, 0xda, 0xd7, 0x88, 0xd3, 0x20, 0x81, 0x3c, 0x0e, 0xcf, 0x67, 0x1d, 0x87, 0x74, + 0x10, 0x38, 0x5a, 0x7c, 0x82, 0xc4, 0x65, 0x21, 0xd6, 0xe9, 0xd8, 0x35, 0x80, 0x18, 0x76, 0x4c, + 0x9a, 0x0a, 0xfb, 0x0f, 0x2c, 0x18, 0xe6, 0x21, 0x20, 0x02, 0xf4, 0x51, 0x18, 0x20, 0xf7, 0x48, + 0x5d, 0x70, 0xbc, 0x99, 0x1d, 0x8e, 0x39, 0x2d, 0x2e, 0x71, 0xa5, 0xff, 0x31, 0xab, 0x85, 0xae, + 0xc1, 0x30, 0xed, 0xed, 0x55, 0x15, 0x0f, 0xe3, 0xf1, 0xbc, 0x2f, 0x56, 0xd3, 0xce, 0x99, 0x33, + 0x51, 0x84, 0x65, 0x75, 0xa6, 0x1e, 0xae, 0xb7, 0x6b, 0xf4, 0xc4, 0x8e, 0xba, 0x31, 0x16, 0x1b, + 0xcb, 0x55, 0x8e, 0x24, 0xa8, 0x71, 0xf5, 0xb0, 0x2c, 0xc4, 0x31, 0x11, 0x7b, 0x03, 0x4a, 0x74, + 0x52, 0x17, 0x9b, 0xae, 0xd3, 0x5d, 0xe3, 0xfd, 0x34, 0x94, 0xa4, 0x3e, 0x3b, 0x14, 0xae, 0xdf, + 0x8c, 0xaa, 0x54, 0x77, 0x87, 0x38, 0x86, 0xdb, 0x5b, 0x70, 0x8a, 0x59, 0x27, 0x3a, 0xd1, 0x8e, + 0xb1, 0xc7, 0x7a, 0x2f, 0xe6, 0x67, 0xc4, 0x03, 0x92, 0xcf, 0xcc, 0xac, 0xe6, 0x5d, 0x39, 0x26, + 0x29, 0xc6, 0x8f, 0x49, 0xfb, 0x6b, 0x03, 0xf0, 0x68, 0xa5, 0x96, 0x1f, 0x1d, 0xe4, 0x25, 0x18, + 0xe3, 0x7c, 0x29, 0x5d, 0xda, 0x4e, 0x53, 0xb4, 0xab, 0x44, 0xad, 0x1b, 0x1a, 0x0c, 0x1b, 0x98, + 0xe8, 0x1c, 0x14, 0xdd, 0xb7, 0xbc, 0xa4, 0xef, 0x51, 0xe5, 0xf5, 0x75, 0x4c, 0xcb, 0x29, 0x98, + 0xb2, 0xb8, 0xfc, 0xee, 0x50, 0x60, 0xc5, 0xe6, 0xbe, 0x0a, 0x13, 0x6e, 0x58, 0x0f, 0xdd, 0x8a, + 0x47, 0xcf, 0x19, 0xed, 0xa4, 0x52, 0xc2, 0x0d, 0xda, 0x69, 0x05, 0xc5, 0x09, 0x6c, 0xed, 0x22, + 0x1b, 0xec, 0x9b, 0x4d, 0xee, 0xe9, 0x0b, 0x4d, 0x5f, 0x00, 0x6d, 0xf6, 0x75, 0x21, 0x93, 0x99, + 0x8b, 0x17, 0x00, 0xff, 0xe0, 0x10, 0x4b, 0x18, 0x7d, 0x39, 0xd6, 0x77, 0x9c, 0xf6, 0x62, 0x27, + 0xda, 0x29, 0xbb, 0x61, 0xdd, 0xdf, 0x23, 0xc1, 0x3e, 0x7b, 0xf4, 0x8f, 0xc4, 0x2f, 0x47, 0x05, + 0x58, 0xbe, 0xb6, 0x58, 0xa5, 0x98, 0x38, 0x5d, 0x07, 0x2d, 0xc2, 0xa4, 0x2c, 0xac, 0x91, 0x90, + 0x5d, 0x61, 0xa3, 0x8c, 0x8c, 0xf2, 0x06, 0x12, 0xc5, 0x8a, 0x48, 0x12, 0xdf, 0xe4, 0xa4, 0xe1, + 0x38, 0x38, 0xe9, 0x8f, 0xc0, 0xb8, 0xeb, 0xb9, 0x91, 0xeb, 0x44, 0x3e, 0x57, 0xf8, 0xf0, 0xf7, + 0x3d, 0x93, 0x64, 0x57, 0x74, 0x00, 0x36, 0xf1, 0xec, 0xff, 0x36, 0x00, 0xd3, 0x6c, 0xda, 0xde, + 0x5b, 0x61, 0xdf, 0x4c, 0x2b, 0xec, 0x56, 0x7a, 0x85, 0x1d, 0xc7, 0x13, 0xe1, 0x81, 0x97, 0xd9, + 0x9b, 0x50, 0x52, 0x0e, 0x50, 0xd2, 0x03, 0xd2, 0xca, 0xf1, 0x80, 0xec, 0xcd, 0x7d, 0x48, 0x1b, + 0xb2, 0x62, 0xa6, 0x0d, 0xd9, 0xdf, 0xb4, 0x20, 0xd6, 0x60, 0xa0, 0x6b, 0x50, 0x6a, 0xfb, 0xcc, + 0x34, 0x32, 0x90, 0xf6, 0xc6, 0x8f, 0x66, 0x5e, 0x54, 0xfc, 0x52, 0xe4, 0x1f, 0x5f, 0x95, 0x35, + 0x70, 0x5c, 0x19, 0x2d, 0xc1, 0x70, 0x3b, 0x20, 0xb5, 0x88, 0x05, 0x09, 0xe9, 0x49, 0x87, 0xaf, + 0x11, 0x8e, 0x8f, 0x65, 0x45, 0xfb, 0xe7, 0x2c, 0x00, 0x6e, 0xa6, 0xe5, 0x78, 0xdb, 0xe4, 0x04, + 0xa4, 0xd6, 0x65, 0x18, 0x08, 0xdb, 0xa4, 0xde, 0xcd, 0x68, 0x35, 0xee, 0x4f, 0xad, 0x4d, 0xea, + 0xf1, 0x80, 0xd3, 0x7f, 0x98, 0xd5, 0xb6, 0xbf, 0x1b, 0x60, 0x22, 0x46, 0xab, 0x44, 0xa4, 0x85, + 0x9e, 0x35, 0x82, 0x06, 0x9c, 0x4d, 0x04, 0x0d, 0x28, 0x31, 0x6c, 0x4d, 0x40, 0xfa, 0x26, 0x14, + 0x5b, 0xce, 0x3d, 0x21, 0x01, 0x7b, 0xba, 0x7b, 0x37, 0x28, 0xfd, 0x85, 0x35, 0xe7, 0x1e, 0x7f, + 0x24, 0x3e, 0x2d, 0x17, 0xc8, 0x9a, 0x73, 0xef, 0x90, 0x9b, 0xa6, 0xb2, 0x43, 0xea, 0x86, 0x1b, + 0x46, 0x9f, 0xff, 0xaf, 0xf1, 0x7f, 0xb6, 0xec, 0x68, 0x23, 0xac, 0x2d, 0xd7, 0x13, 0x16, 0x48, + 0x7d, 0xb5, 0xe5, 0x7a, 0xc9, 0xb6, 0x5c, 0xaf, 0x8f, 0xb6, 0x5c, 0x0f, 0xbd, 0x0d, 0xc3, 0xc2, + 0x40, 0x50, 0x04, 0xe9, 0xb9, 0xdc, 0x47, 0x7b, 0xc2, 0xbe, 0x90, 0xb7, 0x79, 0x59, 0x3e, 0x82, + 0x45, 0x69, 0xcf, 0x76, 0x65, 0x83, 0xe8, 0xaf, 0x59, 0x30, 0x21, 0x7e, 0x63, 0xf2, 0x56, 0x87, + 0x84, 0x91, 0xe0, 0x3d, 0x3f, 0xdc, 0x7f, 0x1f, 0x44, 0x45, 0xde, 0x95, 0x0f, 0xcb, 0x63, 0xd6, + 0x04, 0xf6, 0xec, 0x51, 0xa2, 0x17, 0xe8, 0x1f, 0x58, 0x70, 0xaa, 0xe5, 0xdc, 0xe3, 0x2d, 0xf2, + 0x32, 0xec, 0x44, 0xae, 0x2f, 0x14, 0xed, 0x1f, 0xed, 0x6f, 0xfa, 0x53, 0xd5, 0x79, 0x27, 0xa5, + 0x36, 0xf0, 0x54, 0x16, 0x4a, 0xcf, 0xae, 0x66, 0xf6, 0x6b, 0x6e, 0x0b, 0x46, 0xe4, 0x7a, 0xcb, + 0x10, 0x35, 0x94, 0x75, 0xc6, 0xfa, 0xc8, 0xf6, 0x99, 0xba, 0x33, 0x3e, 0x6d, 0x47, 0xac, 0xb5, + 0x87, 0xda, 0xce, 0x9b, 0x30, 0xa6, 0xaf, 0xb1, 0x87, 0xda, 0xd6, 0x5b, 0x30, 0x93, 0xb1, 0x96, + 0x1e, 0x6a, 0x93, 0x77, 0xe1, 0x6c, 0xee, 0xfa, 0x78, 0x98, 0x0d, 0xdb, 0x3f, 0x6b, 0xe9, 0xe7, + 0xe0, 0x09, 0xa8, 0x0e, 0x96, 0x4d, 0xd5, 0xc1, 0xf9, 0xee, 0x3b, 0x27, 0x47, 0x7f, 0xf0, 0x86, + 0xde, 0x69, 0x7a, 0xaa, 0xa3, 0xd7, 0x60, 0xa8, 0x49, 0x4b, 0xa4, 0x99, 0xa9, 0xdd, 0x7b, 0x47, + 0xc6, 0xbc, 0x14, 0x2b, 0x0f, 0xb1, 0xa0, 0x60, 0xff, 0xa2, 0x05, 0x03, 0x27, 0x30, 0x12, 0xd8, + 0x1c, 0x89, 0x67, 0x73, 0x49, 0x8b, 0xf8, 0xc1, 0x0b, 0xd8, 0xb9, 0xbb, 0x72, 0x2f, 0x22, 0x5e, + 0xc8, 0x9e, 0x8a, 0x99, 0x03, 0xf3, 0x93, 0x16, 0xcc, 0xdc, 0xf0, 0x9d, 0xc6, 0x92, 0xd3, 0x74, + 0xbc, 0x3a, 0x09, 0x2a, 0xde, 0xf6, 0x91, 0x6c, 0xa4, 0x0b, 0x3d, 0x6d, 0xa4, 0x97, 0xa5, 0x89, + 0xd1, 0x40, 0xfe, 0xfc, 0x51, 0x46, 0x32, 0x19, 0x46, 0xc5, 0x30, 0x86, 0xdd, 0x01, 0xa4, 0xf7, + 0x52, 0x78, 0xac, 0x60, 0x18, 0x76, 0x79, 0x7f, 0xc5, 0x24, 0x3e, 0x99, 0xcd, 0xe0, 0xa5, 0x3e, + 0x4f, 0xf3, 0xc5, 0xe0, 0x05, 0x58, 0x12, 0xb2, 0x5f, 0x82, 0x4c, 0xb7, 0xf7, 0xde, 0xc2, 0x07, + 0xfb, 0x93, 0x30, 0xcd, 0x6a, 0x1e, 0xf1, 0x61, 0x6c, 0x27, 0x64, 0x9b, 0x19, 0x01, 0xf1, 0xec, + 0x2f, 0x58, 0x30, 0xb9, 0x9e, 0x88, 0x13, 0x76, 0x91, 0x69, 0x43, 0x33, 0x44, 0xea, 0x35, 0x56, + 0x8a, 0x05, 0xf4, 0xd8, 0x25, 0x59, 0x7f, 0x6e, 0x41, 0x1c, 0x89, 0xe2, 0x04, 0xd8, 0xb7, 0x65, + 0x83, 0x7d, 0xcb, 0x94, 0xb0, 0xa8, 0xee, 0xe4, 0x71, 0x6f, 0xe8, 0xba, 0x8a, 0xd1, 0xd4, 0x45, + 0xb8, 0x12, 0x93, 0xe1, 0x4b, 0x71, 0xc2, 0x0c, 0xe4, 0x24, 0xa3, 0x36, 0xd9, 0xbf, 0x5d, 0x00, + 0xa4, 0x70, 0xfb, 0x8e, 0x21, 0x95, 0xae, 0x71, 0x3c, 0x31, 0xa4, 0xf6, 0x00, 0x31, 0x7d, 0x7e, + 0xe0, 0x78, 0x21, 0x27, 0xeb, 0x0a, 0xd9, 0xdd, 0xd1, 0x8c, 0x05, 0xe6, 0x44, 0x93, 0xe8, 0x46, + 0x8a, 0x1a, 0xce, 0x68, 0x41, 0xb3, 0xd3, 0x18, 0xec, 0xd7, 0x4e, 0x63, 0xa8, 0x87, 0x57, 0xda, + 0xcf, 0x58, 0x30, 0xae, 0x86, 0xe9, 0x5d, 0x62, 0x33, 0xae, 0xfa, 0x93, 0x73, 0x80, 0x56, 0xb5, + 0x2e, 0xb3, 0x8b, 0xe5, 0x5b, 0x99, 0x77, 0xa1, 0xd3, 0x74, 0xdf, 0x26, 0x2a, 0x82, 0xdf, 0xbc, + 0xf0, 0x16, 0x14, 0xa5, 0x87, 0x07, 0xf3, 0xe3, 0xea, 0x1f, 0x8f, 0x18, 0x1c, 0x57, 0xa1, 0x47, + 0xf2, 0x64, 0x62, 0x29, 0xa2, 0x17, 0x61, 0xb0, 0xbd, 0xe3, 0x84, 0x24, 0xe1, 0x5b, 0x33, 0x58, + 0xa5, 0x85, 0x87, 0x07, 0xf3, 0x13, 0xaa, 0x02, 0x2b, 0xc1, 0x1c, 0xbb, 0xff, 0xc8, 0x5c, 0xe9, + 0xc5, 0xd9, 0x33, 0x32, 0xd7, 0x9f, 0x58, 0x30, 0xb0, 0xee, 0x37, 0x4e, 0xe2, 0x08, 0x78, 0xd5, + 0x38, 0x02, 0x1e, 0xcb, 0x0b, 0xe6, 0x9e, 0xbb, 0xfb, 0x57, 0x13, 0xbb, 0xff, 0x7c, 0x2e, 0x85, + 0xee, 0x1b, 0xbf, 0x05, 0xa3, 0x2c, 0x44, 0xbc, 0xf0, 0x23, 0x7a, 0xde, 0xd8, 0xf0, 0xf3, 0x89, + 0x0d, 0x3f, 0xa9, 0xa1, 0x6a, 0x3b, 0xfd, 0x29, 0x18, 0x16, 0x8e, 0x29, 0x49, 0x27, 0x4d, 0x81, + 0x8b, 0x25, 0xdc, 0xfe, 0xf1, 0x22, 0x18, 0x21, 0xe9, 0xd1, 0x2f, 0x5b, 0xb0, 0x10, 0x70, 0x83, + 0xd5, 0x46, 0xb9, 0x13, 0xb8, 0xde, 0x76, 0xad, 0xbe, 0x43, 0x1a, 0x9d, 0xa6, 0xeb, 0x6d, 0x57, + 0xb6, 0x3d, 0x5f, 0x15, 0xaf, 0xdc, 0x23, 0xf5, 0x0e, 0x53, 0x82, 0xf5, 0x88, 0x7f, 0xaf, 0x0c, + 0xbf, 0x9f, 0xbb, 0x7f, 0x30, 0xbf, 0x80, 0x8f, 0x44, 0x1b, 0x1f, 0xb1, 0x2f, 0xe8, 0xd7, 0x2d, + 0xb8, 0xcc, 0x23, 0xb5, 0xf7, 0xdf, 0xff, 0x2e, 0xaf, 0xe5, 0xaa, 0x24, 0x15, 0x13, 0xd9, 0x20, + 0x41, 0x6b, 0xe9, 0x23, 0x62, 0x40, 0x2f, 0x57, 0x8f, 0xd6, 0x16, 0x3e, 0x6a, 0xe7, 0xec, 0x7f, + 0x51, 0x84, 0x71, 0x11, 0xc1, 0x49, 0xdc, 0x01, 0x2f, 0x1a, 0x4b, 0xe2, 0xf1, 0xc4, 0x92, 0x98, + 0x36, 0x90, 0x8f, 0xe7, 0xf8, 0x0f, 0x61, 0x9a, 0x1e, 0xce, 0xd7, 0x88, 0x13, 0x44, 0x9b, 0xc4, + 0xe1, 0xe6, 0x57, 0xc5, 0x23, 0x9f, 0xfe, 0x4a, 0x3c, 0x77, 0x23, 0x49, 0x0c, 0xa7, 0xe9, 0x7f, + 0x33, 0xdd, 0x39, 0x1e, 0x4c, 0xa5, 0x82, 0x70, 0x7d, 0x0a, 0x4a, 0xca, 0xab, 0x42, 0x1c, 0x3a, + 0xdd, 0x63, 0xd9, 0x25, 0x29, 0x70, 0x11, 0x5a, 0xec, 0xd1, 0x13, 0x93, 0xb3, 0xff, 0x51, 0xc1, + 0x68, 0x90, 0x4f, 0xe2, 0x3a, 0x8c, 0x38, 0x61, 0xe8, 0x6e, 0x7b, 0xa4, 0x21, 0x76, 0xec, 0xfb, + 0xf3, 0x76, 0xac, 0xd1, 0x0c, 0xf3, 0x6c, 0x59, 0x14, 0x35, 0xb1, 0xa2, 0x81, 0xae, 0x71, 0x23, + 0xb7, 0x3d, 0xf9, 0xde, 0xeb, 0x8f, 0x1a, 0x48, 0x33, 0xb8, 0x3d, 0x82, 0x45, 0x7d, 0xf4, 0x69, + 0x6e, 0x85, 0x78, 0xdd, 0xf3, 0xef, 0x7a, 0x57, 0x7d, 0x5f, 0x46, 0x49, 0xe8, 0x8f, 0xe0, 0xb4, + 0xb4, 0x3d, 0x54, 0xd5, 0xb1, 0x49, 0xad, 0xbf, 0xa8, 0x96, 0x9f, 0x83, 0x19, 0x4a, 0xda, 0x74, + 0x62, 0x0e, 0x11, 0x81, 0x49, 0x11, 0x1e, 0x4c, 0x96, 0x89, 0xb1, 0xcb, 0x7c, 0xca, 0x99, 0xb5, + 0x63, 0x39, 0xf2, 0x75, 0x93, 0x04, 0x4e, 0xd2, 0xb4, 0x7f, 0xca, 0x02, 0xe6, 0xd0, 0x79, 0x02, + 0xfc, 0xc8, 0xc7, 0x4c, 0x7e, 0x64, 0x36, 0x6f, 0x90, 0x73, 0x58, 0x91, 0x17, 0xf8, 0xca, 0xaa, + 0x06, 0xfe, 0xbd, 0x7d, 0x61, 0x3a, 0xd2, 0xfb, 0xfd, 0x61, 0xff, 0x5f, 0x8b, 0x1f, 0x62, 0xca, + 0xe7, 0x01, 0x7d, 0x3b, 0x8c, 0xd4, 0x9d, 0xb6, 0x53, 0xe7, 0xf9, 0x53, 0x72, 0x25, 0x7a, 0x46, + 0xa5, 0x85, 0x65, 0x51, 0x83, 0x4b, 0xa8, 0x64, 0x98, 0xb9, 0x11, 0x59, 0xdc, 0x53, 0x2a, 0xa5, + 0x9a, 0x9c, 0xdb, 0x85, 0x71, 0x83, 0xd8, 0x43, 0x15, 0x67, 0x7c, 0x3b, 0xbf, 0x62, 0x55, 0x58, + 0xc4, 0x16, 0x4c, 0x7b, 0xda, 0x7f, 0x7a, 0xa1, 0xc8, 0xc7, 0xe5, 0xfb, 0x7b, 0x5d, 0xa2, 0xec, + 0xf6, 0xd1, 0x7c, 0x45, 0x13, 0x64, 0x70, 0x9a, 0xb2, 0xfd, 0x13, 0x16, 0x3c, 0xa2, 0x23, 0x6a, + 0xee, 0x28, 0xbd, 0x74, 0x04, 0x65, 0x18, 0xf1, 0xdb, 0x24, 0x70, 0x22, 0x3f, 0x10, 0xb7, 0xc6, + 0x25, 0x39, 0xe8, 0x37, 0x45, 0xf9, 0xa1, 0x88, 0x3e, 0x2e, 0xa9, 0xcb, 0x72, 0xac, 0x6a, 0xd2, + 0xd7, 0x27, 0x1b, 0x8c, 0x50, 0x38, 0x1e, 0xb1, 0x33, 0x80, 0xa9, 0xcb, 0x43, 0x2c, 0x20, 0xf6, + 0xd7, 0x2c, 0xbe, 0xb0, 0xf4, 0xae, 0xa3, 0xb7, 0x60, 0xaa, 0xe5, 0x44, 0xf5, 0x9d, 0x95, 0x7b, + 0xed, 0x80, 0x6b, 0x5c, 0xe4, 0x38, 0x3d, 0xdd, 0x6b, 0x9c, 0xb4, 0x8f, 0x8c, 0x0d, 0x2b, 0xd7, + 0x12, 0xc4, 0x70, 0x8a, 0x3c, 0xda, 0x84, 0x51, 0x56, 0xc6, 0x7c, 0xea, 0xc2, 0x6e, 0xac, 0x41, + 0x5e, 0x6b, 0xca, 0xe2, 0x60, 0x2d, 0xa6, 0x83, 0x75, 0xa2, 0xf6, 0x97, 0x8b, 0x7c, 0xb7, 0x33, + 0x56, 0xfe, 0x29, 0x18, 0x6e, 0xfb, 0x8d, 0xe5, 0x4a, 0x19, 0x8b, 0x59, 0x50, 0xd7, 0x48, 0x95, + 0x17, 0x63, 0x09, 0x47, 0x97, 0x60, 0x44, 0xfc, 0x94, 0x1a, 0x32, 0x76, 0x36, 0x0b, 0xbc, 0x10, + 0x2b, 0x28, 0x7a, 0x0e, 0xa0, 0x1d, 0xf8, 0x7b, 0x6e, 0x83, 0xc5, 0x7a, 0x28, 0x9a, 0xc6, 0x42, + 0x55, 0x05, 0xc1, 0x1a, 0x16, 0x7a, 0x05, 0xc6, 0x3b, 0x5e, 0xc8, 0xd9, 0x11, 0x2d, 0xb2, 0xab, + 0x32, 0x63, 0xb9, 0xa5, 0x03, 0xb1, 0x89, 0x8b, 0x16, 0x61, 0x28, 0x72, 0x98, 0xf1, 0xcb, 0x60, + 0xbe, 0xf1, 0xed, 0x06, 0xc5, 0xd0, 0x53, 0x75, 0xd0, 0x0a, 0x58, 0x54, 0x44, 0x9f, 0x92, 0xee, + 0xad, 0xfc, 0x60, 0x17, 0x56, 0xef, 0xfd, 0x5d, 0x02, 0x9a, 0x73, 0xab, 0xb0, 0xa6, 0x37, 0x68, + 0xa1, 0x97, 0x01, 0xc8, 0xbd, 0x88, 0x04, 0x9e, 0xd3, 0x54, 0xb6, 0x65, 0x8a, 0x2f, 0x28, 0xfb, + 0xeb, 0x7e, 0x74, 0x2b, 0x24, 0x2b, 0x0a, 0x03, 0x6b, 0xd8, 0xf6, 0xaf, 0x97, 0x00, 0x62, 0xbe, + 0x1d, 0xbd, 0x9d, 0x3a, 0xb8, 0x9e, 0xe9, 0xce, 0xe9, 0x1f, 0xdf, 0xa9, 0x85, 0xbe, 0xc7, 0x82, + 0x51, 0xa7, 0xd9, 0xf4, 0xeb, 0x0e, 0x8f, 0xbd, 0x5b, 0xe8, 0x7e, 0x70, 0x8a, 0xf6, 0x17, 0xe3, + 0x1a, 0xbc, 0x0b, 0xcf, 0xcb, 0x15, 0xaa, 0x41, 0x7a, 0xf6, 0x42, 0x6f, 0x18, 0x7d, 0x48, 0x3e, + 0x15, 0x8b, 0xc6, 0x50, 0xaa, 0xa7, 0x62, 0x89, 0xdd, 0x11, 0xfa, 0x2b, 0xf1, 0x96, 0xf1, 0x4a, + 0x1c, 0xc8, 0xf7, 0xdf, 0x33, 0xd8, 0xd7, 0x5e, 0x0f, 0x44, 0x54, 0xd5, 0x7d, 0xf9, 0x07, 0xf3, + 0x9d, 0xe5, 0xb4, 0x77, 0x52, 0x0f, 0x3f, 0xfe, 0x37, 0x61, 0xb2, 0x61, 0x32, 0x01, 0x62, 0x25, + 0x3e, 0x99, 0x47, 0x37, 0xc1, 0x33, 0xc4, 0xd7, 0x7e, 0x02, 0x80, 0x93, 0x84, 0x51, 0x95, 0x87, + 0x76, 0xa8, 0x78, 0x5b, 0xbe, 0xf0, 0xbc, 0xb0, 0x73, 0xe7, 0x72, 0x3f, 0x8c, 0x48, 0x8b, 0x62, + 0xc6, 0xb7, 0xfb, 0xba, 0xa8, 0x8b, 0x15, 0x15, 0xf4, 0x1a, 0x0c, 0x31, 0x6f, 0xa9, 0x70, 0x76, + 0x24, 0x5f, 0xe2, 0x6c, 0xc6, 0x2a, 0x8b, 0x37, 0x24, 0xfb, 0x1b, 0x62, 0x41, 0x01, 0x5d, 0x93, + 0xbe, 0x88, 0x61, 0xc5, 0xbb, 0x15, 0x12, 0xe6, 0x8b, 0x58, 0x5a, 0x7a, 0x7f, 0xec, 0x66, 0xc8, + 0xcb, 0x33, 0x13, 0x7a, 0x19, 0x35, 0x29, 0x17, 0x25, 0xfe, 0xcb, 0x3c, 0x61, 0xb3, 0x90, 0xdf, + 0x3d, 0x33, 0x97, 0x58, 0x3c, 0x9c, 0xb7, 0x4d, 0x12, 0x38, 0x49, 0x93, 0x72, 0xa4, 0x7c, 0xd7, + 0x0b, 0xdf, 0x8d, 0x5e, 0x67, 0x07, 0x7f, 0x88, 0xb3, 0xdb, 0x88, 0x97, 0x60, 0x51, 0xff, 0x44, + 0xd9, 0x83, 0x39, 0x0f, 0xa6, 0x92, 0x5b, 0xf4, 0xa1, 0xb2, 0x23, 0x7f, 0x30, 0x00, 0x13, 0xe6, + 0x92, 0x42, 0x97, 0xa1, 0x24, 0x88, 0xa8, 0xd8, 0xfe, 0x6a, 0x97, 0xac, 0x49, 0x00, 0x8e, 0x71, + 0x58, 0x4a, 0x07, 0x56, 0x5d, 0x33, 0xd6, 0x8d, 0x53, 0x3a, 0x28, 0x08, 0xd6, 0xb0, 0xe8, 0xc3, + 0x6a, 0xd3, 0xf7, 0x23, 0x75, 0x21, 0xa9, 0x75, 0xb7, 0xc4, 0x4a, 0xb1, 0x80, 0xd2, 0x8b, 0x68, + 0x97, 0x04, 0x1e, 0x69, 0x9a, 0x51, 0x80, 0xd5, 0x45, 0x74, 0x5d, 0x07, 0x62, 0x13, 0x97, 0x5e, + 0xa7, 0x7e, 0xc8, 0x16, 0xb2, 0x78, 0xbe, 0xc5, 0xc6, 0xcf, 0x35, 0xee, 0x0e, 0x2d, 0xe1, 0xe8, + 0x93, 0xf0, 0x88, 0x8a, 0x74, 0x84, 0xb9, 0x36, 0x43, 0xb6, 0x38, 0x64, 0x48, 0x5b, 0x1e, 0x59, + 0xce, 0x46, 0xc3, 0x79, 0xf5, 0xd1, 0xab, 0x30, 0x21, 0x58, 0x7c, 0x49, 0x71, 0xd8, 0x34, 0xb0, + 0xb9, 0x6e, 0x40, 0x71, 0x02, 0x5b, 0xc6, 0x31, 0x66, 0x5c, 0xb6, 0xa4, 0x30, 0x92, 0x8e, 0x63, + 0xac, 0xc3, 0x71, 0xaa, 0x06, 0x5a, 0x84, 0x49, 0xce, 0x83, 0xb9, 0xde, 0x36, 0x9f, 0x13, 0xe1, + 0x5a, 0xa5, 0xb6, 0xd4, 0x4d, 0x13, 0x8c, 0x93, 0xf8, 0xe8, 0x25, 0x18, 0x73, 0x82, 0xfa, 0x8e, + 0x1b, 0x91, 0x7a, 0xd4, 0x09, 0xb8, 0xcf, 0x95, 0x66, 0xa1, 0xb4, 0xa8, 0xc1, 0xb0, 0x81, 0x69, + 0xbf, 0x0d, 0x33, 0x19, 0x71, 0x12, 0xe8, 0xc2, 0x71, 0xda, 0xae, 0xfc, 0xa6, 0x84, 0x19, 0xf3, + 0x62, 0xb5, 0x22, 0xbf, 0x46, 0xc3, 0xa2, 0xab, 0x93, 0xc5, 0x53, 0xd0, 0xd2, 0x02, 0xaa, 0xd5, + 0xb9, 0x2a, 0x01, 0x38, 0xc6, 0xb1, 0xff, 0x67, 0x01, 0x26, 0x33, 0x74, 0x2b, 0x2c, 0x35, 0x5d, + 0xe2, 0x91, 0x12, 0x67, 0xa2, 0x33, 0xc3, 0x62, 0x17, 0x8e, 0x10, 0x16, 0xbb, 0xd8, 0x2b, 0x2c, + 0xf6, 0xc0, 0x3b, 0x09, 0x8b, 0x6d, 0x8e, 0xd8, 0x60, 0x5f, 0x23, 0x96, 0x11, 0x4a, 0x7b, 0xe8, + 0x88, 0xa1, 0xb4, 0x8d, 0x41, 0x1f, 0xee, 0x63, 0xd0, 0x7f, 0xb8, 0x00, 0x53, 0x49, 0x4b, 0xca, + 0x13, 0x90, 0xdb, 0xbe, 0x66, 0xc8, 0x6d, 0x2f, 0xf5, 0xe3, 0x0a, 0x9b, 0x2b, 0xc3, 0xc5, 0x09, + 0x19, 0xee, 0x07, 0xfb, 0xa2, 0xd6, 0x5d, 0x9e, 0xfb, 0xb7, 0x0b, 0x70, 0x3a, 0xd3, 0x17, 0xf7, + 0x04, 0xc6, 0xe6, 0xa6, 0x31, 0x36, 0xcf, 0xf6, 0xed, 0x26, 0x9c, 0x3b, 0x40, 0x77, 0x12, 0x03, + 0x74, 0xb9, 0x7f, 0x92, 0xdd, 0x47, 0xe9, 0xab, 0x45, 0x38, 0x9f, 0x59, 0x2f, 0x16, 0x7b, 0xae, + 0x1a, 0x62, 0xcf, 0xe7, 0x12, 0x62, 0x4f, 0xbb, 0x7b, 0xed, 0xe3, 0x91, 0x83, 0x0a, 0x77, 0x59, + 0xe6, 0xf4, 0xff, 0x80, 0x32, 0x50, 0xc3, 0x5d, 0x56, 0x11, 0xc2, 0x26, 0xdd, 0x6f, 0x26, 0xd9, + 0xe7, 0xbf, 0xb7, 0xe0, 0x6c, 0xe6, 0xdc, 0x9c, 0x80, 0xac, 0x6b, 0xdd, 0x94, 0x75, 0x3d, 0xd5, + 0xf7, 0x6a, 0xcd, 0x11, 0x7e, 0x7d, 0x79, 0x30, 0xe7, 0x5b, 0xd8, 0x4b, 0xfe, 0x26, 0x8c, 0x3a, + 0xf5, 0x3a, 0x09, 0xc3, 0x35, 0xbf, 0xa1, 0x22, 0xff, 0x3e, 0xcb, 0xde, 0x59, 0x71, 0xf1, 0xe1, + 0xc1, 0xfc, 0x5c, 0x92, 0x44, 0x0c, 0xc6, 0x3a, 0x05, 0xf4, 0x69, 0x18, 0x09, 0xc5, 0xbd, 0x29, + 0xe6, 0xfe, 0xf9, 0x3e, 0x07, 0xc7, 0xd9, 0x24, 0x4d, 0x33, 0x34, 0x91, 0x92, 0x54, 0x28, 0x92, + 0x66, 0x18, 0x93, 0xc2, 0xb1, 0x86, 0x31, 0x79, 0x0e, 0x60, 0x4f, 0x3d, 0x06, 0x92, 0xf2, 0x07, + 0xed, 0x99, 0xa0, 0x61, 0xa1, 0x8f, 0xc3, 0x54, 0xc8, 0x63, 0xf7, 0x2d, 0x37, 0x9d, 0x90, 0x39, + 0xcb, 0x88, 0x55, 0xc8, 0xc2, 0x1f, 0xd5, 0x12, 0x30, 0x9c, 0xc2, 0x46, 0xab, 0xb2, 0x55, 0x16, + 0x68, 0x90, 0x2f, 0xcc, 0x8b, 0x71, 0x8b, 0x22, 0x31, 0xee, 0xa9, 0xe4, 0xf0, 0xb3, 0x81, 0xd7, + 0x6a, 0xa2, 0x4f, 0x03, 0xd0, 0xe5, 0x23, 0xe4, 0x10, 0xc3, 0xf9, 0x87, 0x27, 0x3d, 0x55, 0x1a, + 0x99, 0xb6, 0xbd, 0xcc, 0xc3, 0xb5, 0xac, 0x88, 0x60, 0x8d, 0x20, 0xda, 0x82, 0xf1, 0xf8, 0x5f, + 0x9c, 0x37, 0xf2, 0x88, 0x2d, 0x30, 0xb9, 0x77, 0x59, 0xa7, 0x83, 0x4d, 0xb2, 0xf6, 0x0f, 0x0f, + 0xc0, 0xa3, 0x5d, 0xce, 0x62, 0xb4, 0x68, 0xea, 0x7b, 0x9f, 0x4e, 0x3e, 0xe2, 0xe7, 0x32, 0x2b, + 0x1b, 0xaf, 0xfa, 0xc4, 0x92, 0x2f, 0xbc, 0xe3, 0x25, 0xff, 0x03, 0x96, 0x26, 0x5e, 0xe1, 0x96, + 0xa5, 0x1f, 0x3b, 0xe2, 0x1d, 0x73, 0x8c, 0xf2, 0x96, 0xad, 0x0c, 0xa1, 0xc5, 0x73, 0x7d, 0x77, + 0xa7, 0x6f, 0x29, 0xc6, 0xc9, 0x4a, 0xa3, 0x7f, 0xcb, 0x82, 0x73, 0x5d, 0x83, 0x83, 0x7c, 0x03, + 0x32, 0x26, 0xf6, 0xe7, 0x2d, 0x78, 0x3c, 0xb3, 0x86, 0x61, 0xce, 0x74, 0x19, 0x4a, 0x75, 0x5a, + 0xa8, 0x79, 0x83, 0xc6, 0x6e, 0xf2, 0x12, 0x80, 0x63, 0x1c, 0xc3, 0x6a, 0xa9, 0xd0, 0xd3, 0x6a, + 0xe9, 0x57, 0x2c, 0x48, 0x1d, 0x2e, 0x27, 0x70, 0xcb, 0x55, 0xcc, 0x5b, 0xee, 0xfd, 0xfd, 0x8c, + 0x66, 0xce, 0x05, 0xf7, 0xc7, 0x93, 0x70, 0x26, 0xc7, 0x1b, 0x6a, 0x0f, 0xa6, 0xb7, 0xeb, 0xc4, + 0xf4, 0xb3, 0xed, 0x16, 0x7f, 0xa6, 0xab, 0x53, 0x2e, 0x4b, 0x11, 0x3a, 0x9d, 0x42, 0xc1, 0xe9, + 0x26, 0xd0, 0xe7, 0x2d, 0x38, 0xe5, 0xdc, 0x0d, 0x57, 0x28, 0xb7, 0xe2, 0xd6, 0x97, 0x9a, 0x7e, + 0x7d, 0x97, 0x5e, 0x05, 0x72, 0x23, 0xbc, 0x90, 0x29, 0x41, 0xba, 0x53, 0x4b, 0xe1, 0x1b, 0xcd, + 0xb3, 0x9c, 0xa9, 0x59, 0x58, 0x38, 0xb3, 0x2d, 0x84, 0x45, 0x20, 0x7d, 0xfa, 0x16, 0xea, 0xe2, + 0x09, 0x9e, 0xe5, 0xb6, 0xc6, 0xaf, 0x5f, 0x09, 0xc1, 0x8a, 0x0e, 0xfa, 0x2c, 0x94, 0xb6, 0xa5, + 0x2f, 0x69, 0xc6, 0xf5, 0x1e, 0x0f, 0x64, 0x77, 0x0f, 0x5b, 0xae, 0x06, 0x56, 0x48, 0x38, 0x26, + 0x8a, 0x5e, 0x85, 0xa2, 0xb7, 0x15, 0x76, 0x4b, 0x3b, 0x9a, 0xb0, 0xf7, 0xe3, 0xf1, 0x16, 0xd6, + 0x57, 0x6b, 0x98, 0x56, 0x44, 0xd7, 0xa0, 0x18, 0x6c, 0x36, 0x84, 0xf8, 0x33, 0x73, 0x93, 0xe2, + 0xa5, 0x72, 0x4e, 0xaf, 0x18, 0x25, 0xbc, 0x54, 0xc6, 0x94, 0x04, 0xaa, 0xc2, 0x20, 0x73, 0x21, + 0x12, 0x97, 0x69, 0xe6, 0xb3, 0xa1, 0x8b, 0x2b, 0x1e, 0x0f, 0xca, 0xc0, 0x10, 0x30, 0x27, 0x84, + 0x36, 0x60, 0xa8, 0xce, 0x52, 0x54, 0x8a, 0xdb, 0xf3, 0x43, 0x99, 0x82, 0xce, 0x2e, 0xb9, 0x3b, + 0x85, 0xdc, 0x8f, 0x61, 0x60, 0x41, 0x8b, 0x51, 0x25, 0xed, 0x9d, 0xad, 0x50, 0xa4, 0x54, 0xce, + 0xa6, 0xda, 0x25, 0x25, 0xad, 0xa0, 0xca, 0x30, 0xb0, 0xa0, 0x85, 0x5e, 0x86, 0xc2, 0x56, 0x5d, + 0xb8, 0x07, 0x65, 0x4a, 0x3c, 0xcd, 0x90, 0x19, 0x4b, 0x43, 0xf7, 0x0f, 0xe6, 0x0b, 0xab, 0xcb, + 0xb8, 0xb0, 0x55, 0x47, 0xeb, 0x30, 0xbc, 0xc5, 0x9d, 0xec, 0x85, 0x50, 0xf3, 0xc9, 0x6c, 0xff, + 0xff, 0x94, 0x1f, 0x3e, 0xf7, 0x8c, 0x11, 0x00, 0x2c, 0x89, 0xb0, 0xb8, 0xf4, 0x2a, 0x58, 0x80, + 0x88, 0x55, 0xb6, 0x70, 0xb4, 0x00, 0x0f, 0x9c, 0xb9, 0x89, 0x43, 0x0e, 0x60, 0x8d, 0x22, 0x5d, + 0xd5, 0x8e, 0xcc, 0x6b, 0x2f, 0x82, 0xda, 0x64, 0xae, 0xea, 0x1e, 0x29, 0xff, 0xf9, 0xaa, 0x56, + 0x48, 0x38, 0x26, 0x8a, 0x76, 0x61, 0x7c, 0x2f, 0x6c, 0xef, 0x10, 0xb9, 0xa5, 0x59, 0x8c, 0x9b, + 0x9c, 0x7b, 0xf9, 0xb6, 0x40, 0x74, 0x83, 0xa8, 0xe3, 0x34, 0x53, 0xa7, 0x10, 0xe3, 0xa1, 0x6e, + 0xeb, 0xc4, 0xb0, 0x49, 0x9b, 0x0e, 0xff, 0x5b, 0x1d, 0x7f, 0x73, 0x3f, 0x22, 0x22, 0xc4, 0x58, + 0xe6, 0xf0, 0xbf, 0xce, 0x51, 0xd2, 0xc3, 0x2f, 0x00, 0x58, 0x12, 0x41, 0xb7, 0xc5, 0xf0, 0xb0, + 0xd3, 0x73, 0x2a, 0x3f, 0x0e, 0xe8, 0xa2, 0x44, 0xca, 0x19, 0x14, 0x76, 0x5a, 0xc6, 0xa4, 0xd8, + 0x29, 0xd9, 0xde, 0xf1, 0x23, 0xdf, 0x4b, 0x9c, 0xd0, 0xd3, 0xf9, 0xa7, 0x64, 0x35, 0x03, 0x3f, + 0x7d, 0x4a, 0x66, 0x61, 0xe1, 0xcc, 0xb6, 0x50, 0x03, 0x26, 0xda, 0x7e, 0x10, 0xdd, 0xf5, 0x03, + 0xb9, 0xbe, 0x50, 0x17, 0xa1, 0x8c, 0x81, 0x29, 0x5a, 0x64, 0xd1, 0xfb, 0x4c, 0x08, 0x4e, 0xd0, + 0x44, 0x9f, 0x80, 0xe1, 0xb0, 0xee, 0x34, 0x49, 0xe5, 0xe6, 0xec, 0x4c, 0xfe, 0xf5, 0x53, 0xe3, + 0x28, 0x39, 0xab, 0x8b, 0x07, 0xb1, 0xe7, 0x28, 0x58, 0x92, 0x43, 0xab, 0x30, 0xc8, 0xf2, 0x8e, + 0xb1, 0x78, 0x78, 0x39, 0xe1, 0x4c, 0x53, 0xd6, 0xd7, 0xfc, 0x6c, 0x62, 0xc5, 0x98, 0x57, 0xa7, + 0x7b, 0x40, 0xbc, 0x4d, 0xfc, 0x70, 0xf6, 0x74, 0xfe, 0x1e, 0x10, 0x4f, 0x9a, 0x9b, 0xb5, 0x6e, + 0x7b, 0x40, 0x21, 0xe1, 0x98, 0x28, 0x3d, 0x99, 0xe9, 0x69, 0x7a, 0xa6, 0x8b, 0xd9, 0x50, 0xee, + 0x59, 0xca, 0x4e, 0x66, 0x7a, 0x92, 0x52, 0x12, 0xf6, 0xef, 0x0d, 0xa7, 0x79, 0x16, 0xf6, 0x9a, + 0xfd, 0x2e, 0x2b, 0xa5, 0xe8, 0xfc, 0x70, 0xbf, 0xc2, 0xb5, 0x63, 0x64, 0xc1, 0x3f, 0x6f, 0xc1, + 0x99, 0x76, 0xe6, 0x87, 0x08, 0x06, 0xa0, 0x3f, 0x19, 0x1d, 0xff, 0x74, 0x15, 0x3b, 0x31, 0x1b, + 0x8e, 0x73, 0x5a, 0x4a, 0x3e, 0x73, 0x8a, 0xef, 0xf8, 0x99, 0xb3, 0x06, 0x23, 0x8c, 0xc9, 0xec, + 0x91, 0xb2, 0x39, 0xf9, 0xe6, 0x63, 0xac, 0xc4, 0xb2, 0xa8, 0x88, 0x15, 0x09, 0xf4, 0x83, 0x16, + 0x9c, 0x4b, 0x76, 0x1d, 0x13, 0x06, 0x16, 0x01, 0x17, 0xf9, 0x43, 0x7a, 0x55, 0x7c, 0x7f, 0x8a, + 0xff, 0x37, 0x90, 0x0f, 0x7b, 0x21, 0xe0, 0xee, 0x8d, 0xa1, 0x72, 0xc6, 0x4b, 0x7e, 0xc8, 0xd4, + 0x5e, 0xf4, 0xf1, 0x9a, 0x7f, 0x01, 0xc6, 0x5a, 0x7e, 0xc7, 0x8b, 0x84, 0x95, 0x91, 0xb0, 0x78, + 0x60, 0x9a, 0xfe, 0x35, 0xad, 0x1c, 0x1b, 0x58, 0x09, 0x19, 0xc0, 0xc8, 0x03, 0xcb, 0x00, 0xde, + 0x80, 0x31, 0x4f, 0x33, 0x8b, 0x15, 0xfc, 0xc0, 0xc5, 0xfc, 0x60, 0xa9, 0xba, 0x11, 0x2d, 0xef, + 0xa5, 0x5e, 0x82, 0x0d, 0x6a, 0x27, 0xfb, 0xe0, 0xfb, 0x92, 0x95, 0xc1, 0xd4, 0x73, 0x11, 0xc0, + 0x47, 0x4d, 0x11, 0xc0, 0xc5, 0xa4, 0x08, 0x20, 0x25, 0xb9, 0x36, 0x5e, 0xff, 0xfd, 0xe7, 0x82, + 0xe9, 0x37, 0xe0, 0xa2, 0xdd, 0x84, 0x0b, 0xbd, 0xae, 0x25, 0x66, 0x6e, 0xd6, 0x50, 0x7a, 0xca, + 0xd8, 0xdc, 0xac, 0x51, 0x29, 0x63, 0x06, 0xe9, 0x37, 0x94, 0x8f, 0xfd, 0xdf, 0x2d, 0x28, 0x56, + 0xfd, 0xc6, 0x09, 0x3c, 0x78, 0x3f, 0x66, 0x3c, 0x78, 0x1f, 0xcd, 0xbe, 0x10, 0x1b, 0xb9, 0x72, + 0xf7, 0x95, 0x84, 0xdc, 0xfd, 0x5c, 0x1e, 0x81, 0xee, 0x52, 0xf6, 0x9f, 0x2c, 0xc2, 0x68, 0xd5, + 0x6f, 0x28, 0x5b, 0xef, 0x7f, 0xf5, 0x20, 0xb6, 0xde, 0xb9, 0x19, 0x0d, 0x34, 0xca, 0xcc, 0x4a, + 0x4d, 0xba, 0xb9, 0x7e, 0x83, 0x99, 0x7c, 0xdf, 0x21, 0xee, 0xf6, 0x4e, 0x44, 0x1a, 0xc9, 0xcf, + 0x39, 0x39, 0x93, 0xef, 0xdf, 0x2b, 0xc0, 0x64, 0xa2, 0x75, 0xd4, 0x84, 0xf1, 0xa6, 0x2e, 0xd5, + 0x15, 0xeb, 0xf4, 0x81, 0x04, 0xc2, 0xc2, 0x64, 0x56, 0x2b, 0xc2, 0x26, 0x71, 0xb4, 0x00, 0xa0, + 0xd4, 0x9c, 0x52, 0xac, 0xc7, 0xb8, 0x7e, 0xa5, 0x07, 0x0d, 0xb1, 0x86, 0x81, 0x5e, 0x84, 0xd1, + 0xc8, 0x6f, 0xfb, 0x4d, 0x7f, 0x7b, 0xff, 0x3a, 0x91, 0xc1, 0xa3, 0x94, 0x21, 0xdc, 0x46, 0x0c, + 0xc2, 0x3a, 0x1e, 0xba, 0x07, 0xd3, 0x8a, 0x48, 0xed, 0x18, 0x24, 0xdd, 0x4c, 0xaa, 0xb0, 0x9e, + 0xa4, 0x88, 0xd3, 0x8d, 0xd8, 0x3f, 0x5d, 0xe4, 0x43, 0xec, 0x45, 0xee, 0x7b, 0xbb, 0xe1, 0xdd, + 0xbd, 0x1b, 0xbe, 0x6a, 0xc1, 0x14, 0x6d, 0x9d, 0x59, 0xf9, 0xc8, 0x6b, 0x5e, 0x85, 0x67, 0xb6, + 0xba, 0x84, 0x67, 0xbe, 0x48, 0x4f, 0xcd, 0x86, 0xdf, 0x89, 0x84, 0xec, 0x4e, 0x3b, 0x16, 0x69, + 0x29, 0x16, 0x50, 0x81, 0x47, 0x82, 0x40, 0x78, 0x26, 0xea, 0x78, 0x24, 0x08, 0xb0, 0x80, 0xca, + 0xe8, 0xcd, 0x03, 0xd9, 0xd1, 0x9b, 0x79, 0x10, 0x4e, 0x61, 0x0f, 0x22, 0x18, 0x2e, 0x2d, 0x08, + 0xa7, 0x34, 0x14, 0x89, 0x71, 0xec, 0x9f, 0x2d, 0xc2, 0x58, 0xd5, 0x6f, 0xc4, 0x2a, 0xce, 0x17, + 0x0c, 0x15, 0xe7, 0x85, 0x84, 0x8a, 0x73, 0x4a, 0xc7, 0x7d, 0x4f, 0xa1, 0xf9, 0xf5, 0x52, 0x68, + 0xfe, 0x73, 0x8b, 0xcd, 0x5a, 0x79, 0xbd, 0xc6, 0x8d, 0xc6, 0xd0, 0x15, 0x18, 0x65, 0x07, 0x0c, + 0x73, 0x85, 0x95, 0x7a, 0x3f, 0x96, 0x95, 0x68, 0x3d, 0x2e, 0xc6, 0x3a, 0x0e, 0xba, 0x04, 0x23, + 0x21, 0x71, 0x82, 0xfa, 0x8e, 0x3a, 0x5d, 0x85, 0x92, 0x8e, 0x97, 0x61, 0x05, 0x45, 0xaf, 0xc7, + 0xf1, 0x1f, 0x8b, 0xf9, 0xae, 0x75, 0x7a, 0x7f, 0xf8, 0x16, 0xc9, 0x0f, 0xfa, 0x68, 0xdf, 0x01, + 0x94, 0xc6, 0xef, 0x23, 0xf0, 0xd9, 0xbc, 0x19, 0xf8, 0xac, 0x94, 0x0a, 0x7a, 0xf6, 0x67, 0x16, + 0x4c, 0x54, 0xfd, 0x06, 0xdd, 0xba, 0xdf, 0x4c, 0xfb, 0x54, 0x0f, 0x7e, 0x3b, 0xd4, 0x25, 0xf8, + 0xed, 0x13, 0x30, 0x58, 0xf5, 0x1b, 0x95, 0x6a, 0x37, 0xbf, 0x76, 0xfb, 0xef, 0x58, 0x30, 0x5c, + 0xf5, 0x1b, 0x27, 0xa0, 0x16, 0xf8, 0xa8, 0xa9, 0x16, 0x78, 0x24, 0x67, 0xdd, 0xe4, 0x68, 0x02, + 0xfe, 0xd6, 0x00, 0x8c, 0xd3, 0x7e, 0xfa, 0xdb, 0x72, 0x2a, 0x8d, 0x61, 0xb3, 0xfa, 0x18, 0x36, + 0xca, 0x85, 0xfb, 0xcd, 0xa6, 0x7f, 0x37, 0x39, 0xad, 0xab, 0xac, 0x14, 0x0b, 0x28, 0x7a, 0x06, + 0x46, 0xda, 0x01, 0xd9, 0x73, 0x7d, 0xc1, 0xde, 0x6a, 0x4a, 0x96, 0xaa, 0x28, 0xc7, 0x0a, 0x83, + 0x3e, 0x0b, 0x43, 0xd7, 0xa3, 0x57, 0x79, 0xdd, 0xf7, 0x1a, 0x5c, 0x72, 0x5e, 0x14, 0x19, 0x1a, + 0xb4, 0x72, 0x6c, 0x60, 0xa1, 0x3b, 0x50, 0x62, 0xff, 0xd9, 0xb1, 0x73, 0xf4, 0x5c, 0x9f, 0x22, + 0xf7, 0x9b, 0x20, 0x80, 0x63, 0x5a, 0xe8, 0x39, 0x80, 0x48, 0x46, 0x39, 0x0f, 0x45, 0x90, 0x2b, + 0xf5, 0x14, 0x50, 0xf1, 0xcf, 0x43, 0xac, 0x61, 0xa1, 0xa7, 0xa1, 0x14, 0x39, 0x6e, 0xf3, 0x86, + 0xeb, 0x91, 0x90, 0x49, 0xc4, 0x8b, 0x32, 0x05, 0x9b, 0x28, 0xc4, 0x31, 0x9c, 0xb2, 0x62, 0x2c, + 0x02, 0x04, 0xcf, 0x14, 0x3c, 0xc2, 0xb0, 0x19, 0x2b, 0x76, 0x43, 0x95, 0x62, 0x0d, 0x03, 0xed, + 0xc0, 0x63, 0xae, 0xc7, 0xb2, 0x19, 0x90, 0xda, 0xae, 0xdb, 0xde, 0xb8, 0x51, 0xbb, 0x4d, 0x02, + 0x77, 0x6b, 0x7f, 0xc9, 0xa9, 0xef, 0x12, 0x4f, 0x66, 0x71, 0x7c, 0xbf, 0xe8, 0xe2, 0x63, 0x95, + 0x2e, 0xb8, 0xb8, 0x2b, 0x25, 0xfb, 0x79, 0xb6, 0xde, 0x6f, 0xd6, 0xd0, 0x07, 0x8d, 0xa3, 0xe3, + 0x8c, 0x7e, 0x74, 0x1c, 0x1e, 0xcc, 0x0f, 0xdd, 0xac, 0x69, 0x01, 0x0c, 0x5e, 0x82, 0xd3, 0x55, + 0xbf, 0x51, 0xf5, 0x83, 0x68, 0xd5, 0x0f, 0xee, 0x3a, 0x41, 0x43, 0x2e, 0xaf, 0x79, 0x19, 0xc2, + 0x81, 0x9e, 0x9f, 0x83, 0xfc, 0x74, 0x31, 0xc2, 0x33, 0x3c, 0xcf, 0x38, 0xb6, 0x23, 0x3a, 0x1e, + 0xd5, 0x19, 0xef, 0xa0, 0xf2, 0x81, 0x5c, 0x75, 0x22, 0x82, 0x6e, 0xb2, 0x3c, 0xc7, 0xf1, 0x35, + 0x2a, 0xaa, 0x3f, 0xa5, 0xe5, 0x39, 0x8e, 0x81, 0x99, 0xf7, 0xae, 0x59, 0xdf, 0xfe, 0x1f, 0x83, + 0xec, 0x44, 0x4d, 0xe4, 0x94, 0x40, 0x9f, 0x81, 0x89, 0x90, 0xdc, 0x70, 0xbd, 0xce, 0x3d, 0x29, + 0xc2, 0xe8, 0xe2, 0x3a, 0x56, 0x5b, 0xd1, 0x31, 0xb9, 0x20, 0xd4, 0x2c, 0xc3, 0x09, 0x6a, 0xa8, + 0x05, 0x13, 0x77, 0x5d, 0xaf, 0xe1, 0xdf, 0x0d, 0x25, 0xfd, 0x91, 0x7c, 0x79, 0xe8, 0x1d, 0x8e, + 0x99, 0xe8, 0xa3, 0xd1, 0xdc, 0x1d, 0x83, 0x18, 0x4e, 0x10, 0xa7, 0xab, 0x36, 0xe8, 0x78, 0x8b, + 0xe1, 0xad, 0x90, 0x04, 0x22, 0x63, 0x35, 0x5b, 0xb5, 0x58, 0x16, 0xe2, 0x18, 0x4e, 0x57, 0x2d, + 0xfb, 0x73, 0x35, 0xf0, 0x3b, 0x3c, 0x81, 0x81, 0x58, 0xb5, 0x58, 0x95, 0x62, 0x0d, 0x83, 0xee, + 0x6a, 0xf6, 0x6f, 0xdd, 0xf7, 0xb0, 0xef, 0x47, 0xf2, 0x1c, 0x60, 0x39, 0x52, 0xb5, 0x72, 0x6c, + 0x60, 0xa1, 0x55, 0x40, 0x61, 0xa7, 0xdd, 0x6e, 0x32, 0x9b, 0x14, 0xa7, 0xc9, 0x48, 0x71, 0x3d, + 0x7d, 0x91, 0xc7, 0x75, 0xad, 0xa5, 0xa0, 0x38, 0xa3, 0x06, 0x3d, 0xe0, 0xb7, 0x44, 0x57, 0x07, + 0x59, 0x57, 0xb9, 0xee, 0xa4, 0xc6, 0xfb, 0x29, 0x61, 0x68, 0x05, 0x86, 0xc3, 0xfd, 0xb0, 0x1e, + 0x89, 0x00, 0x75, 0x39, 0x69, 0x83, 0x6a, 0x0c, 0x45, 0xcb, 0x5a, 0xc7, 0xab, 0x60, 0x59, 0x17, + 0xd5, 0x61, 0x46, 0x50, 0x5c, 0xde, 0x71, 0x3c, 0x95, 0x84, 0x85, 0x9b, 0xe6, 0x5e, 0xb9, 0x7f, + 0x30, 0x3f, 0x23, 0x5a, 0xd6, 0xc1, 0x87, 0x07, 0xf3, 0x67, 0xaa, 0x7e, 0x23, 0x03, 0x82, 0xb3, + 0xa8, 0xf1, 0xc5, 0x57, 0xaf, 0xfb, 0xad, 0x76, 0x35, 0xf0, 0xb7, 0xdc, 0x26, 0xe9, 0xa6, 0x7f, + 0xaa, 0x19, 0x98, 0x62, 0xf1, 0x19, 0x65, 0x38, 0x41, 0xcd, 0xfe, 0x76, 0xc6, 0x04, 0xb1, 0x24, + 0xcd, 0x51, 0x27, 0x20, 0xa8, 0x05, 0xe3, 0x6d, 0xb6, 0x4d, 0x44, 0x5a, 0x01, 0xb1, 0xd6, 0x5f, + 0xe8, 0x53, 0x8e, 0x72, 0x97, 0xde, 0x1d, 0xa6, 0x6d, 0x4b, 0x55, 0x27, 0x87, 0x4d, 0xea, 0xf6, + 0x6f, 0x3c, 0xc2, 0xae, 0xd1, 0x1a, 0x17, 0x8e, 0x0c, 0x0b, 0x4f, 0x00, 0xf1, 0x1e, 0x9b, 0xcb, + 0x97, 0xd2, 0xc5, 0xd3, 0x22, 0xbc, 0x09, 0xb0, 0xac, 0x8b, 0x3e, 0x0d, 0x13, 0xf4, 0x79, 0xa3, + 0xae, 0xb2, 0x70, 0xf6, 0x54, 0x7e, 0xc4, 0x06, 0x85, 0xa5, 0xa7, 0x1c, 0xd1, 0x2b, 0xe3, 0x04, + 0x31, 0xf4, 0x3a, 0xb3, 0x25, 0x91, 0xa4, 0x0b, 0xfd, 0x90, 0xd6, 0xcd, 0x46, 0x24, 0x59, 0x8d, + 0x08, 0xea, 0xc0, 0x4c, 0x3a, 0x41, 0x59, 0x38, 0x6b, 0xe7, 0xf3, 0x89, 0xe9, 0x1c, 0x63, 0x71, + 0x6e, 0x88, 0x34, 0x2c, 0xc4, 0x59, 0xf4, 0xd1, 0x0d, 0x18, 0x17, 0x99, 0x8a, 0xc5, 0xca, 0x2d, + 0x1a, 0xc2, 0xc3, 0x71, 0xac, 0x03, 0x0f, 0x93, 0x05, 0xd8, 0xac, 0x8c, 0xb6, 0xe1, 0x9c, 0x96, + 0x39, 0xe8, 0x6a, 0xe0, 0x30, 0x0b, 0x00, 0x97, 0x1d, 0xa7, 0xda, 0x05, 0xff, 0xf8, 0xfd, 0x83, + 0xf9, 0x73, 0x1b, 0xdd, 0x10, 0x71, 0x77, 0x3a, 0xe8, 0x26, 0x9c, 0xe6, 0xfe, 0xc6, 0x65, 0xe2, + 0x34, 0x9a, 0xae, 0xa7, 0x38, 0x08, 0xbe, 0xe5, 0xcf, 0xde, 0x3f, 0x98, 0x3f, 0xbd, 0x98, 0x85, + 0x80, 0xb3, 0xeb, 0xa1, 0x8f, 0x42, 0xa9, 0xe1, 0x85, 0x62, 0x0c, 0x86, 0x8c, 0xe4, 0x4c, 0xa5, + 0xf2, 0x7a, 0x4d, 0x7d, 0x7f, 0xfc, 0x07, 0xc7, 0x15, 0xd0, 0x36, 0x17, 0x30, 0x2b, 0xb1, 0xc7, + 0x70, 0x2a, 0xde, 0x52, 0x52, 0x32, 0x68, 0x78, 0x1c, 0x72, 0xcd, 0x8a, 0x32, 0xc4, 0x37, 0x9c, + 0x11, 0x0d, 0xc2, 0xe8, 0x35, 0x40, 0xf4, 0xd9, 0xe1, 0xd6, 0xc9, 0x62, 0x9d, 0xe5, 0xac, 0x60, + 0xf2, 0xf8, 0x11, 0xd3, 0x07, 0xae, 0x96, 0xc2, 0xc0, 0x19, 0xb5, 0xd0, 0x35, 0x7a, 0xaa, 0xe8, + 0xa5, 0xe2, 0xd4, 0x52, 0xa9, 0xf4, 0xca, 0xa4, 0x1d, 0x90, 0xba, 0x13, 0x91, 0x86, 0x49, 0x11, + 0x27, 0xea, 0xa1, 0x06, 0x3c, 0xe6, 0x74, 0x22, 0x9f, 0xc9, 0xee, 0x4d, 0xd4, 0x0d, 0x7f, 0x97, + 0x78, 0x4c, 0x6d, 0x36, 0xb2, 0x74, 0x81, 0xb2, 0x28, 0x8b, 0x5d, 0xf0, 0x70, 0x57, 0x2a, 0x94, + 0xb5, 0x54, 0xb9, 0x73, 0xc1, 0x8c, 0x22, 0x95, 0x91, 0x3f, 0xf7, 0x45, 0x18, 0xdd, 0xf1, 0xc3, + 0x68, 0x9d, 0x44, 0x77, 0xfd, 0x60, 0x57, 0x04, 0x03, 0x8d, 0x03, 0x48, 0xc7, 0x20, 0xac, 0xe3, + 0xd1, 0xb7, 0x23, 0x33, 0xea, 0xa8, 0x94, 0x99, 0x3e, 0x7d, 0x24, 0x3e, 0x63, 0xae, 0xf1, 0x62, + 0x2c, 0xe1, 0x12, 0xb5, 0x52, 0x5d, 0x66, 0xba, 0xf1, 0x04, 0x6a, 0xa5, 0xba, 0x8c, 0x25, 0x9c, + 0x2e, 0xd7, 0x70, 0xc7, 0x09, 0x48, 0x35, 0xf0, 0xeb, 0x24, 0xd4, 0xc2, 0x96, 0x3f, 0xca, 0x43, + 0x9d, 0xd2, 0xe5, 0x5a, 0xcb, 0x42, 0xc0, 0xd9, 0xf5, 0x10, 0x49, 0x67, 0xcd, 0x9a, 0xc8, 0x57, + 0x6a, 0xa4, 0xf9, 0x99, 0x3e, 0x13, 0x67, 0x79, 0x30, 0xa5, 0xf2, 0x75, 0xf1, 0xe0, 0xa6, 0xe1, + 0xec, 0x24, 0x5b, 0xdb, 0xfd, 0x47, 0x46, 0x55, 0x6a, 0xa2, 0x4a, 0x82, 0x12, 0x4e, 0xd1, 0x36, + 0x02, 0x85, 0x4d, 0xf5, 0x0c, 0x14, 0x76, 0x19, 0x4a, 0x61, 0x67, 0xb3, 0xe1, 0xb7, 0x1c, 0xd7, + 0x63, 0xba, 0x71, 0xed, 0x11, 0x53, 0x93, 0x00, 0x1c, 0xe3, 0xa0, 0x55, 0x18, 0x71, 0xa4, 0x0e, + 0x08, 0xe5, 0x87, 0x86, 0x51, 0x9a, 0x1f, 0x1e, 0x2d, 0x41, 0x6a, 0x7d, 0x54, 0x5d, 0xf4, 0x0a, + 0x8c, 0x0b, 0x7f, 0x59, 0x91, 0x2a, 0x72, 0xc6, 0x74, 0x6a, 0xaa, 0xe9, 0x40, 0x6c, 0xe2, 0xa2, + 0x5b, 0x30, 0x1a, 0xf9, 0x4d, 0xe6, 0x99, 0x43, 0xd9, 0xbc, 0x33, 0xf9, 0x41, 0xce, 0x36, 0x14, + 0x9a, 0x2e, 0x7e, 0x55, 0x55, 0xb1, 0x4e, 0x07, 0x6d, 0xf0, 0xf5, 0xce, 0xc2, 0x77, 0x93, 0x70, + 0xf6, 0x91, 0xfc, 0x3b, 0x49, 0x45, 0xf9, 0x36, 0xb7, 0x83, 0xa8, 0x89, 0x75, 0x32, 0xe8, 0x2a, + 0x4c, 0xb7, 0x03, 0xd7, 0x67, 0x6b, 0x42, 0xa9, 0xff, 0x66, 0xcd, 0xdc, 0x41, 0xd5, 0x24, 0x02, + 0x4e, 0xd7, 0x61, 0xee, 0xce, 0xa2, 0x70, 0xf6, 0x2c, 0xcf, 0x26, 0xcd, 0xdf, 0x84, 0xbc, 0x0c, + 0x2b, 0x28, 0x5a, 0x63, 0x27, 0x31, 0x17, 0x67, 0xcc, 0xce, 0xe5, 0x47, 0xa3, 0xd1, 0xc5, 0x1e, + 0x9c, 0x79, 0x55, 0x7f, 0x71, 0x4c, 0x01, 0x35, 0xb4, 0xb4, 0x83, 0xf4, 0xc5, 0x10, 0xce, 0x3e, + 0xd6, 0xc5, 0xb2, 0x2e, 0xf1, 0xbc, 0x88, 0x19, 0x02, 0xa3, 0x38, 0xc4, 0x09, 0x9a, 0xe8, 0xe3, + 0x30, 0x25, 0x62, 0xe8, 0xc5, 0xc3, 0x74, 0x2e, 0xb6, 0x77, 0xc6, 0x09, 0x18, 0x4e, 0x61, 0xf3, + 0xb4, 0x06, 0xce, 0x66, 0x93, 0x88, 0xa3, 0xef, 0x86, 0xeb, 0xed, 0x86, 0xb3, 0xe7, 0xd9, 0xf9, + 0x20, 0xd2, 0x1a, 0x24, 0xa1, 0x38, 0xa3, 0x06, 0xda, 0x80, 0xa9, 0x76, 0x40, 0x48, 0x8b, 0x31, + 0xfa, 0xe2, 0x3e, 0x9b, 0xe7, 0xde, 0xfe, 0xb4, 0x27, 0xd5, 0x04, 0xec, 0x30, 0xa3, 0x0c, 0xa7, + 0x28, 0xa0, 0xbb, 0x30, 0xe2, 0xef, 0x91, 0x60, 0x87, 0x38, 0x8d, 0xd9, 0x0b, 0x5d, 0xec, 0xef, + 0xc5, 0xe5, 0x76, 0x53, 0xe0, 0x26, 0x4c, 0x06, 0x64, 0x71, 0x6f, 0x93, 0x01, 0xd9, 0x18, 0xfa, + 0x21, 0x0b, 0xce, 0x4a, 0x2d, 0x43, 0xad, 0x4d, 0x47, 0x7d, 0xd9, 0xf7, 0xc2, 0x28, 0xe0, 0xfe, + 0xe9, 0x8f, 0xe7, 0xfb, 0x6c, 0x6f, 0xe4, 0x54, 0x52, 0x12, 0xd5, 0xb3, 0x79, 0x18, 0x21, 0xce, + 0x6f, 0x11, 0x2d, 0xc3, 0x74, 0x48, 0x22, 0x79, 0x18, 0x2d, 0x86, 0xab, 0xaf, 0x97, 0xd7, 0x67, + 0x9f, 0xe0, 0xce, 0xf5, 0x74, 0x33, 0xd4, 0x92, 0x40, 0x9c, 0xc6, 0x47, 0x57, 0xa0, 0xe0, 0x87, + 0xb3, 0xef, 0xef, 0x92, 0xa9, 0x92, 0x3e, 0xc5, 0xb9, 0xe9, 0xd8, 0xcd, 0x1a, 0x2e, 0xf8, 0xe1, + 0xdc, 0xb7, 0xc2, 0x74, 0x8a, 0x63, 0x38, 0x4a, 0x86, 0x97, 0xb9, 0x5d, 0x18, 0x37, 0x66, 0xe5, + 0xa1, 0x6a, 0xa9, 0xff, 0xed, 0x30, 0x94, 0x94, 0x06, 0x13, 0x5d, 0x36, 0x15, 0xd3, 0x67, 0x93, + 0x8a, 0xe9, 0x91, 0xaa, 0xdf, 0x30, 0x74, 0xd1, 0x1b, 0x19, 0x51, 0xc8, 0xf2, 0xce, 0x80, 0xfe, + 0xdd, 0xcb, 0x35, 0xb1, 0x70, 0xb1, 0x6f, 0x0d, 0xf7, 0x40, 0x57, 0x49, 0xf3, 0x55, 0x98, 0xf6, + 0x7c, 0xc6, 0xa6, 0x92, 0x86, 0xe4, 0x41, 0x18, 0xab, 0x51, 0xd2, 0xc3, 0x7a, 0x24, 0x10, 0x70, + 0xba, 0x0e, 0x6d, 0x90, 0xf3, 0x0a, 0x49, 0xd1, 0x36, 0x67, 0x25, 0xb0, 0x80, 0xa2, 0x27, 0x60, + 0xb0, 0xed, 0x37, 0x2a, 0x55, 0xc1, 0xa2, 0x6a, 0xb1, 0x2f, 0x1b, 0x95, 0x2a, 0xe6, 0x30, 0xb4, + 0x08, 0x43, 0xec, 0x47, 0x38, 0x3b, 0x96, 0x1f, 0xbf, 0x81, 0xd5, 0xd0, 0xf2, 0xe7, 0xb0, 0x0a, + 0x58, 0x54, 0x64, 0x22, 0x36, 0xca, 0xd7, 0x33, 0x11, 0xdb, 0xf0, 0x03, 0x8a, 0xd8, 0x24, 0x01, + 0x1c, 0xd3, 0x42, 0xf7, 0xe0, 0xb4, 0xf1, 0x96, 0xe2, 0x4b, 0x84, 0x84, 0xc2, 0x87, 0xfc, 0x89, + 0xae, 0x8f, 0x28, 0xa1, 0x11, 0x3f, 0x27, 0x3a, 0x7d, 0xba, 0x92, 0x45, 0x09, 0x67, 0x37, 0x80, + 0x9a, 0x30, 0x5d, 0x4f, 0xb5, 0x3a, 0xd2, 0x7f, 0xab, 0x6a, 0x42, 0xd3, 0x2d, 0xa6, 0x09, 0xa3, + 0x57, 0x60, 0xe4, 0x2d, 0x3f, 0x64, 0xc7, 0xbb, 0x60, 0xab, 0xa5, 0x03, 0xf2, 0xc8, 0xeb, 0x37, + 0x6b, 0xac, 0xfc, 0xf0, 0x60, 0x7e, 0xb4, 0xea, 0x37, 0xe4, 0x5f, 0xac, 0x2a, 0xa0, 0xef, 0xb5, + 0x60, 0x2e, 0xfd, 0x58, 0x53, 0x9d, 0x1e, 0xef, 0xbf, 0xd3, 0xb6, 0x68, 0x74, 0x6e, 0x25, 0x97, + 0x1c, 0xee, 0xd2, 0x94, 0xfd, 0x4b, 0x16, 0x13, 0xd4, 0x09, 0x4d, 0x13, 0x09, 0x3b, 0xcd, 0x93, + 0x48, 0x1b, 0xba, 0x62, 0x28, 0xc1, 0x1e, 0xd8, 0x42, 0xe2, 0x5f, 0x5a, 0xcc, 0x42, 0xe2, 0x04, + 0x5d, 0x21, 0x5e, 0x87, 0x91, 0x48, 0xa6, 0x73, 0xed, 0x92, 0xe9, 0x54, 0xeb, 0x14, 0xb3, 0x12, + 0x51, 0x4c, 0xae, 0xca, 0xdc, 0xaa, 0xc8, 0xd8, 0xff, 0x84, 0xcf, 0x80, 0x84, 0x9c, 0x80, 0xae, + 0xa1, 0x6c, 0xea, 0x1a, 0xe6, 0x7b, 0x7c, 0x41, 0x8e, 0xce, 0xe1, 0x1f, 0x9b, 0xfd, 0x66, 0xc2, + 0x9d, 0x77, 0xbb, 0x69, 0x8e, 0xfd, 0x05, 0x0b, 0x20, 0x0e, 0x2d, 0xcc, 0x44, 0xd2, 0x7e, 0x20, + 0x73, 0x46, 0x66, 0x65, 0x47, 0x7a, 0x89, 0xb2, 0xb5, 0x7e, 0xe4, 0xd7, 0xfd, 0xa6, 0xd0, 0xa4, + 0x3d, 0x16, 0xab, 0x3b, 0x78, 0xf9, 0xa1, 0xf6, 0x1b, 0x2b, 0x6c, 0x34, 0x2f, 0x03, 0x99, 0x15, + 0x63, 0x05, 0x9c, 0x11, 0xc4, 0xec, 0x47, 0x2c, 0x38, 0x95, 0x65, 0x57, 0x4b, 0x1f, 0x49, 0x5c, + 0xcc, 0xa5, 0xcc, 0xa6, 0xd4, 0x6c, 0xde, 0x16, 0xe5, 0x58, 0x61, 0xf4, 0x9d, 0x09, 0xed, 0x68, + 0x31, 0x7d, 0x6f, 0xc2, 0x78, 0x35, 0x20, 0xda, 0xe5, 0xfa, 0x2a, 0x77, 0x8e, 0xe7, 0xfd, 0x79, + 0xe6, 0xc8, 0x8e, 0xf1, 0xf6, 0x97, 0x0b, 0x70, 0x8a, 0x5b, 0x1f, 0x2c, 0xee, 0xf9, 0x6e, 0xa3, + 0xea, 0x37, 0x44, 0x16, 0xbb, 0x4f, 0xc1, 0x58, 0x5b, 0x93, 0x4d, 0x76, 0x8b, 0x4f, 0xa9, 0xcb, + 0x30, 0x63, 0x69, 0x8a, 0x5e, 0x8a, 0x0d, 0x5a, 0xa8, 0x01, 0x63, 0x64, 0xcf, 0xad, 0x2b, 0x15, + 0x76, 0xe1, 0xc8, 0x17, 0x9d, 0x6a, 0x65, 0x45, 0xa3, 0x83, 0x0d, 0xaa, 0x0f, 0x21, 0x3f, 0xb1, + 0xfd, 0xa3, 0x16, 0x3c, 0x92, 0x13, 0xcd, 0x92, 0x36, 0x77, 0x97, 0xd9, 0x79, 0x88, 0x65, 0xab, + 0x9a, 0xe3, 0xd6, 0x1f, 0x58, 0x40, 0xd1, 0x27, 0x00, 0xb8, 0xf5, 0x06, 0x7d, 0xa5, 0xf7, 0x0a, + 0xfb, 0x67, 0x44, 0x2c, 0xd3, 0x82, 0x4f, 0xc9, 0xfa, 0x58, 0xa3, 0x65, 0x7f, 0x71, 0x00, 0x06, + 0x79, 0x2e, 0xf5, 0x55, 0x18, 0xde, 0xe1, 0xb9, 0x3d, 0xfa, 0x49, 0x23, 0x12, 0xcb, 0x4f, 0x78, + 0x01, 0x96, 0x95, 0xd1, 0x1a, 0xcc, 0xf0, 0xdc, 0x28, 0xcd, 0x32, 0x69, 0x3a, 0xfb, 0x52, 0xd8, + 0xc7, 0xf3, 0x8a, 0x2a, 0xa1, 0x67, 0x25, 0x8d, 0x82, 0xb3, 0xea, 0xa1, 0x57, 0x61, 0x82, 0x3e, + 0xbe, 0xfc, 0x4e, 0x24, 0x29, 0xf1, 0xac, 0x28, 0xea, 0xb5, 0xb7, 0x61, 0x40, 0x71, 0x02, 0x9b, + 0xbe, 0xff, 0xdb, 0x29, 0xb1, 0xe6, 0x60, 0xfc, 0xfe, 0x37, 0x45, 0x99, 0x26, 0x2e, 0x33, 0xa8, + 0xed, 0x30, 0xf3, 0xe1, 0x8d, 0x9d, 0x80, 0x84, 0x3b, 0x7e, 0xb3, 0xc1, 0x98, 0xbe, 0x41, 0xcd, + 0xa0, 0x36, 0x01, 0xc7, 0xa9, 0x1a, 0x94, 0xca, 0x96, 0xe3, 0x36, 0x3b, 0x01, 0x89, 0xa9, 0x0c, + 0x99, 0x54, 0x56, 0x13, 0x70, 0x9c, 0xaa, 0xd1, 0x5b, 0x5e, 0x3b, 0x7c, 0x3c, 0xf2, 0x5a, 0xba, + 0x60, 0x4f, 0x57, 0x03, 0x9f, 0x9e, 0xd8, 0x32, 0x16, 0x90, 0x32, 0xc7, 0x1e, 0x96, 0x6e, 0xcb, + 0x5d, 0xa2, 0xe6, 0x09, 0x83, 0x55, 0x4e, 0xc1, 0xb0, 0x88, 0xa8, 0x09, 0x87, 0x65, 0x49, 0x05, + 0x5d, 0x81, 0x51, 0x91, 0x5a, 0x83, 0x59, 0x0d, 0xf3, 0x35, 0xc2, 0x2c, 0x38, 0xca, 0x71, 0x31, + 0xd6, 0x71, 0xec, 0xef, 0x2b, 0xc0, 0x4c, 0x86, 0xdb, 0x07, 0x3f, 0x13, 0xb7, 0xdd, 0x30, 0x52, + 0x49, 0x1a, 0xb5, 0x33, 0x91, 0x97, 0x63, 0x85, 0x41, 0x37, 0x1e, 0x3f, 0x75, 0x93, 0x27, 0xad, + 0x30, 0xab, 0x16, 0xd0, 0x23, 0xa6, 0x3b, 0xbc, 0x00, 0x03, 0x9d, 0x90, 0xc8, 0x78, 0x97, 0xea, + 0x0e, 0x62, 0x3a, 0x3a, 0x06, 0xa1, 0x6f, 0x82, 0x6d, 0xa5, 0xee, 0xd2, 0xde, 0x04, 0x5c, 0xe1, + 0xc5, 0x61, 0xb4, 0x73, 0x11, 0xf1, 0x1c, 0x2f, 0x12, 0x2f, 0x87, 0x38, 0x70, 0x1b, 0x2b, 0xc5, + 0x02, 0x6a, 0x7f, 0xb1, 0x08, 0x67, 0x73, 0x1d, 0xc1, 0x68, 0xd7, 0x5b, 0xbe, 0xe7, 0x46, 0xbe, + 0x32, 0x8d, 0xe1, 0xc1, 0xda, 0x48, 0x7b, 0x67, 0x4d, 0x94, 0x63, 0x85, 0x81, 0x2e, 0xc2, 0x20, + 0x93, 0xf0, 0xa5, 0xd2, 0x55, 0x2e, 0x95, 0x79, 0xf4, 0x1e, 0x0e, 0xee, 0x3b, 0x15, 0xf0, 0x13, + 0xf4, 0x3a, 0xf6, 0x9b, 0xc9, 0xd3, 0x91, 0x76, 0xd7, 0xf7, 0x9b, 0x98, 0x01, 0xd1, 0x07, 0xc4, + 0x78, 0x25, 0x6c, 0x41, 0xb0, 0xd3, 0xf0, 0x43, 0x6d, 0xd0, 0x9e, 0x82, 0xe1, 0x5d, 0xb2, 0x1f, + 0xb8, 0xde, 0x76, 0xd2, 0x46, 0xe8, 0x3a, 0x2f, 0xc6, 0x12, 0x6e, 0x66, 0x1e, 0x1b, 0x3e, 0xee, + 0x1c, 0xbe, 0x23, 0x3d, 0xef, 0xda, 0x1f, 0x28, 0xc2, 0x24, 0x5e, 0x2a, 0xbf, 0x37, 0x11, 0xb7, + 0xd2, 0x13, 0x71, 0xdc, 0x39, 0x7c, 0x7b, 0xcf, 0xc6, 0xcf, 0x5b, 0x30, 0xc9, 0x12, 0x7c, 0x88, + 0x30, 0x5f, 0xae, 0xef, 0x9d, 0x00, 0x5f, 0xfb, 0x04, 0x0c, 0x06, 0xb4, 0xd1, 0x64, 0x9e, 0x4a, + 0xd6, 0x13, 0xcc, 0x61, 0xe8, 0x31, 0x18, 0x60, 0x5d, 0xa0, 0x93, 0x37, 0xc6, 0x53, 0x7c, 0x95, + 0x9d, 0xc8, 0xc1, 0xac, 0x94, 0xc5, 0xae, 0xc1, 0xa4, 0xdd, 0x74, 0x79, 0xa7, 0x63, 0xfd, 0xeb, + 0xbb, 0xc3, 0x45, 0x3c, 0xb3, 0x6b, 0xef, 0x2c, 0x76, 0x4d, 0x36, 0xc9, 0xee, 0x6f, 0xc6, 0x3f, + 0x2a, 0xc0, 0xf9, 0xcc, 0x7a, 0x7d, 0xc7, 0xae, 0xe9, 0x5e, 0xfb, 0x61, 0xa6, 0x70, 0x28, 0x9e, + 0xa0, 0x05, 0xe6, 0x40, 0xbf, 0xac, 0xec, 0x60, 0x1f, 0x21, 0x65, 0x32, 0x87, 0xec, 0x5d, 0x12, + 0x52, 0x26, 0xb3, 0x6f, 0x39, 0x6f, 0xde, 0x3f, 0x2f, 0xe4, 0x7c, 0x0b, 0x7b, 0xfd, 0x5e, 0xa2, + 0xe7, 0x0c, 0x03, 0x86, 0xf2, 0x45, 0xc9, 0xcf, 0x18, 0x5e, 0x86, 0x15, 0x14, 0x2d, 0xc2, 0x64, + 0xcb, 0xf5, 0xe8, 0xe1, 0xb3, 0x6f, 0x72, 0x98, 0x2a, 0xe2, 0xd7, 0x9a, 0x09, 0xc6, 0x49, 0x7c, + 0xe4, 0x6a, 0xe1, 0x66, 0x0a, 0xf9, 0x99, 0xdf, 0x73, 0x7b, 0xbb, 0x60, 0xea, 0xa6, 0xd5, 0x28, + 0x66, 0x84, 0x9e, 0x59, 0xd3, 0x84, 0x1e, 0xc5, 0xfe, 0x85, 0x1e, 0x63, 0xd9, 0x02, 0x8f, 0xb9, + 0x57, 0x60, 0xfc, 0x81, 0xa5, 0xdc, 0xf6, 0x57, 0x8b, 0xf0, 0x68, 0x97, 0x6d, 0xcf, 0xcf, 0x7a, + 0x63, 0x0e, 0xb4, 0xb3, 0x3e, 0x35, 0x0f, 0x55, 0x38, 0xb5, 0xd5, 0x69, 0x36, 0xf7, 0x99, 0x63, + 0x02, 0x69, 0x48, 0x0c, 0xc1, 0x53, 0xca, 0x97, 0xfe, 0xa9, 0xd5, 0x0c, 0x1c, 0x9c, 0x59, 0x93, + 0xbe, 0x1c, 0xe8, 0x4d, 0xb2, 0xaf, 0x48, 0x25, 0x5e, 0x0e, 0x58, 0x07, 0x62, 0x13, 0x17, 0x5d, + 0x85, 0x69, 0x67, 0xcf, 0x71, 0x79, 0xcc, 0x5e, 0x49, 0x80, 0x3f, 0x1d, 0x94, 0x70, 0x72, 0x31, + 0x89, 0x80, 0xd3, 0x75, 0xd0, 0x6b, 0x80, 0xfc, 0x4d, 0x66, 0xbe, 0xdc, 0xb8, 0x4a, 0x3c, 0xa1, + 0x42, 0x64, 0x73, 0x57, 0x8c, 0x8f, 0x84, 0x9b, 0x29, 0x0c, 0x9c, 0x51, 0x2b, 0x11, 0x56, 0x65, + 0x28, 0x3f, 0xac, 0x4a, 0xf7, 0x73, 0xb1, 0x67, 0xf6, 0x90, 0xff, 0x62, 0xd1, 0xeb, 0x8b, 0x33, + 0xf9, 0x66, 0x14, 0xc2, 0x57, 0x98, 0x09, 0x20, 0x17, 0x5c, 0x6a, 0xc1, 0x40, 0x4e, 0x6b, 0x26, + 0x80, 0x31, 0x10, 0x9b, 0xb8, 0x7c, 0x41, 0x84, 0xb1, 0x0f, 0xaa, 0xc1, 0xe2, 0x8b, 0x50, 0x49, + 0x0a, 0x03, 0x7d, 0x12, 0x86, 0x1b, 0xee, 0x9e, 0x1b, 0x0a, 0xb1, 0xcd, 0x91, 0x75, 0x24, 0xf1, + 0x39, 0x58, 0xe6, 0x64, 0xb0, 0xa4, 0x67, 0xff, 0x40, 0x01, 0xc6, 0x65, 0x8b, 0xaf, 0x77, 0xfc, + 0xc8, 0x39, 0x81, 0x6b, 0xf9, 0xaa, 0x71, 0x2d, 0x7f, 0xa0, 0x5b, 0xbc, 0x28, 0xd6, 0xa5, 0xdc, + 0xeb, 0xf8, 0x66, 0xe2, 0x3a, 0x7e, 0xb2, 0x37, 0xa9, 0xee, 0xd7, 0xf0, 0x3f, 0xb5, 0x60, 0xda, + 0xc0, 0x3f, 0x81, 0xdb, 0x60, 0xd5, 0xbc, 0x0d, 0x1e, 0xef, 0xf9, 0x0d, 0x39, 0xb7, 0xc0, 0x77, + 0x17, 0x13, 0x7d, 0x67, 0xa7, 0xff, 0x5b, 0x30, 0xb0, 0xe3, 0x04, 0x8d, 0x6e, 0xf1, 0xf1, 0x53, + 0x95, 0x16, 0xae, 0x39, 0x81, 0xd0, 0xa1, 0x3e, 0xa3, 0x12, 0xaf, 0x3b, 0x41, 0x6f, 0xfd, 0x29, + 0x6b, 0x0a, 0xbd, 0x04, 0x43, 0x61, 0xdd, 0x6f, 0x2b, 0xb7, 0x84, 0x0b, 0x3c, 0x29, 0x3b, 0x2d, + 0x39, 0x3c, 0x98, 0x47, 0x66, 0x73, 0xb4, 0x18, 0x0b, 0x7c, 0xf4, 0x29, 0x18, 0x67, 0xbf, 0x94, + 0x41, 0x53, 0x31, 0x3f, 0x97, 0x56, 0x4d, 0x47, 0xe4, 0xd6, 0x7e, 0x46, 0x11, 0x36, 0x49, 0xcd, + 0x6d, 0x43, 0x49, 0x7d, 0xd6, 0x43, 0x55, 0x42, 0xfe, 0xc7, 0x22, 0xcc, 0x64, 0xac, 0x39, 0x14, + 0x1a, 0x33, 0x71, 0xa5, 0xcf, 0xa5, 0xfa, 0x0e, 0xe7, 0x22, 0x64, 0xaf, 0xa1, 0x86, 0x58, 0x5b, + 0x7d, 0x37, 0x7a, 0x2b, 0x24, 0xc9, 0x46, 0x69, 0x51, 0xef, 0x46, 0x69, 0x63, 0x27, 0x36, 0xd4, + 0xb4, 0x21, 0xd5, 0xd3, 0x87, 0x3a, 0xa7, 0x7f, 0x5a, 0x84, 0x53, 0x59, 0x21, 0xec, 0xd0, 0xe7, + 0x12, 0xd9, 0x19, 0x5f, 0xe8, 0x37, 0xf8, 0x1d, 0x4f, 0xd9, 0xc8, 0x85, 0xcd, 0x4b, 0x0b, 0x66, + 0xbe, 0xc6, 0x9e, 0xc3, 0x2c, 0xda, 0x64, 0xf1, 0x15, 0x02, 0x9e, 0x55, 0x53, 0x1e, 0x1f, 0x1f, + 0xee, 0xbb, 0x03, 0x22, 0x1d, 0x67, 0x98, 0x30, 0x96, 0x90, 0xc5, 0xbd, 0x8d, 0x25, 0x64, 0xcb, + 0x73, 0x2e, 0x8c, 0x6a, 0x5f, 0xf3, 0x50, 0x67, 0x7c, 0x97, 0xde, 0x56, 0x5a, 0xbf, 0x1f, 0xea, + 0xac, 0xff, 0xa8, 0x05, 0x09, 0xfb, 0x79, 0x25, 0x16, 0xb3, 0x72, 0xc5, 0x62, 0x17, 0x60, 0x20, + 0xf0, 0x9b, 0x24, 0x99, 0xc6, 0x10, 0xfb, 0x4d, 0x82, 0x19, 0x84, 0x62, 0x44, 0xb1, 0xb0, 0x63, + 0x4c, 0x7f, 0xc8, 0x89, 0x27, 0xda, 0x13, 0x30, 0xd8, 0x24, 0x7b, 0xa4, 0x99, 0xcc, 0x36, 0x73, + 0x83, 0x16, 0x62, 0x0e, 0xb3, 0x7f, 0x7e, 0x00, 0xce, 0x75, 0x8d, 0x50, 0x42, 0x9f, 0x43, 0xdb, + 0x4e, 0x44, 0xee, 0x3a, 0xfb, 0xc9, 0xb4, 0x10, 0x57, 0x79, 0x31, 0x96, 0x70, 0xe6, 0x16, 0xc5, + 0xa3, 0x3b, 0x27, 0x84, 0x88, 0x22, 0xa8, 0xb3, 0x80, 0x9a, 0x42, 0xa9, 0xe2, 0x71, 0x08, 0xa5, + 0x9e, 0x03, 0x08, 0xc3, 0x26, 0xb7, 0x32, 0x6a, 0x08, 0x7f, 0xab, 0x38, 0x0a, 0x78, 0xed, 0x86, + 0x80, 0x60, 0x0d, 0x0b, 0x95, 0x61, 0xaa, 0x1d, 0xf8, 0x11, 0x97, 0xc9, 0x96, 0xb9, 0x21, 0xde, + 0xa0, 0x19, 0x1c, 0xa2, 0x9a, 0x80, 0xe3, 0x54, 0x0d, 0xf4, 0x22, 0x8c, 0x8a, 0x80, 0x11, 0x55, + 0xdf, 0x6f, 0x0a, 0x31, 0x90, 0xb2, 0x4d, 0xab, 0xc5, 0x20, 0xac, 0xe3, 0x69, 0xd5, 0x98, 0xa0, + 0x77, 0x38, 0xb3, 0x1a, 0x17, 0xf6, 0x6a, 0x78, 0x89, 0x70, 0x96, 0x23, 0x7d, 0x85, 0xb3, 0x8c, + 0x05, 0x63, 0xa5, 0xbe, 0x95, 0x68, 0xd0, 0x53, 0x94, 0xf4, 0x33, 0x03, 0x30, 0x23, 0x16, 0xce, + 0xc3, 0x5e, 0x2e, 0xb7, 0xd2, 0xcb, 0xe5, 0x38, 0x44, 0x67, 0xef, 0xad, 0x99, 0x93, 0x5e, 0x33, + 0x3f, 0x68, 0x81, 0xc9, 0x5e, 0xa1, 0xbf, 0x90, 0x9b, 0x57, 0xe7, 0xc5, 0x5c, 0x76, 0xad, 0x21, + 0x2f, 0x90, 0x77, 0x98, 0x61, 0xc7, 0xfe, 0xcf, 0x16, 0x3c, 0xde, 0x93, 0x22, 0x5a, 0x81, 0x12, + 0xe3, 0x01, 0xb5, 0xd7, 0xd9, 0x93, 0xca, 0x50, 0x57, 0x02, 0x72, 0x58, 0xd2, 0xb8, 0x26, 0x5a, + 0x49, 0x25, 0x30, 0x7a, 0x2a, 0x23, 0x81, 0xd1, 0x69, 0x63, 0x78, 0x1e, 0x30, 0x83, 0xd1, 0xf7, + 0xd3, 0x1b, 0xc7, 0x70, 0x92, 0x41, 0x1f, 0x36, 0xc4, 0x7e, 0x76, 0x42, 0xec, 0x87, 0x4c, 0x6c, + 0xed, 0x0e, 0xf9, 0x38, 0x4c, 0xb1, 0x48, 0x52, 0xcc, 0x6c, 0x5c, 0xb8, 0xef, 0x14, 0x62, 0xd3, + 0xd0, 0x1b, 0x09, 0x18, 0x4e, 0x61, 0xdb, 0x7f, 0x58, 0x84, 0x21, 0xbe, 0xfd, 0x4e, 0xe0, 0x4d, + 0xf8, 0x34, 0x94, 0xdc, 0x56, 0xab, 0xc3, 0x73, 0xd2, 0x0c, 0x72, 0x47, 0x5f, 0x3a, 0x4f, 0x15, + 0x59, 0x88, 0x63, 0x38, 0x5a, 0x15, 0x12, 0xe7, 0x2e, 0xc1, 0x2a, 0x79, 0xc7, 0x17, 0xca, 0x4e, + 0xe4, 0x70, 0x06, 0x47, 0xdd, 0xb3, 0xb1, 0x6c, 0x1a, 0x7d, 0x06, 0x20, 0x8c, 0x02, 0xd7, 0xdb, + 0xa6, 0x65, 0x22, 0x36, 0xeb, 0x07, 0xbb, 0x50, 0xab, 0x29, 0x64, 0x4e, 0x33, 0x3e, 0x73, 0x14, + 0x00, 0x6b, 0x14, 0xd1, 0x82, 0x71, 0xd3, 0xcf, 0x25, 0xe6, 0x0e, 0x38, 0xd5, 0x78, 0xce, 0xe6, + 0x3e, 0x02, 0x25, 0x45, 0xbc, 0x97, 0xfc, 0x69, 0x4c, 0x67, 0x8b, 0x3e, 0x06, 0x93, 0x89, 0xbe, + 0x1d, 0x49, 0x7c, 0xf5, 0x0b, 0x16, 0x4c, 0xf2, 0xce, 0xac, 0x78, 0x7b, 0xe2, 0x36, 0x78, 0x1b, + 0x4e, 0x35, 0x33, 0x4e, 0x65, 0x31, 0xfd, 0xfd, 0x9f, 0xe2, 0x4a, 0x5c, 0x95, 0x05, 0xc5, 0x99, + 0x6d, 0xa0, 0x4b, 0x74, 0xc7, 0xd1, 0x53, 0xd7, 0x69, 0x0a, 0xbf, 0xdf, 0x31, 0xbe, 0xdb, 0x78, + 0x19, 0x56, 0x50, 0xfb, 0x77, 0x2c, 0x98, 0xe6, 0x3d, 0xbf, 0x4e, 0xf6, 0xd5, 0xd9, 0xf4, 0xf5, + 0xec, 0xbb, 0xc8, 0x86, 0x56, 0xc8, 0xc9, 0x86, 0xa6, 0x7f, 0x5a, 0xb1, 0xeb, 0xa7, 0x7d, 0xd9, + 0x02, 0xb1, 0x42, 0x4e, 0x40, 0x08, 0xf1, 0xad, 0xa6, 0x10, 0x62, 0x2e, 0x7f, 0x13, 0xe4, 0x48, + 0x1f, 0xfe, 0xcc, 0x82, 0x29, 0x8e, 0x10, 0x6b, 0xcb, 0xbf, 0xae, 0xf3, 0xd0, 0x4f, 0xce, 0xe4, + 0xeb, 0x64, 0x7f, 0xc3, 0xaf, 0x3a, 0xd1, 0x4e, 0xf6, 0x47, 0x19, 0x93, 0x35, 0xd0, 0x75, 0xb2, + 0x1a, 0x72, 0x03, 0x1d, 0x21, 0x11, 0xfb, 0x91, 0x93, 0x85, 0xd8, 0x5f, 0xb3, 0x00, 0xf1, 0x66, + 0x0c, 0xc6, 0x8d, 0xb2, 0x43, 0xac, 0x54, 0xbb, 0xe8, 0xe2, 0xa3, 0x49, 0x41, 0xb0, 0x86, 0x75, + 0x2c, 0xc3, 0x93, 0x30, 0x79, 0x28, 0xf6, 0x36, 0x79, 0x38, 0xc2, 0x88, 0xfe, 0xbb, 0x21, 0x48, + 0x3a, 0x0a, 0xa1, 0xdb, 0x30, 0x56, 0x77, 0xda, 0xce, 0xa6, 0xdb, 0x74, 0x23, 0x97, 0x84, 0xdd, + 0x8c, 0xb2, 0x96, 0x35, 0x3c, 0xa1, 0xa4, 0xd6, 0x4a, 0xb0, 0x41, 0x07, 0x2d, 0x00, 0xb4, 0x03, + 0x77, 0xcf, 0x6d, 0x92, 0x6d, 0x26, 0x2b, 0x61, 0x91, 0x06, 0xb8, 0xa5, 0x91, 0x2c, 0xc5, 0x1a, + 0x46, 0x86, 0x57, 0x76, 0xf1, 0x21, 0x7b, 0x65, 0xc3, 0x89, 0x79, 0x65, 0x0f, 0x1c, 0xc9, 0x2b, + 0x7b, 0xe4, 0xc8, 0x5e, 0xd9, 0x83, 0x7d, 0x79, 0x65, 0x63, 0x38, 0x23, 0x79, 0x4f, 0xfa, 0x7f, + 0xd5, 0x6d, 0x12, 0xf1, 0xe0, 0xe0, 0xe1, 0x11, 0xe6, 0xee, 0x1f, 0xcc, 0x9f, 0xc1, 0x99, 0x18, + 0x38, 0xa7, 0x26, 0xfa, 0x04, 0xcc, 0x3a, 0xcd, 0xa6, 0x7f, 0x57, 0x4d, 0xea, 0x4a, 0x58, 0x77, + 0x9a, 0x5c, 0x09, 0x31, 0xcc, 0xa8, 0x3e, 0x76, 0xff, 0x60, 0x7e, 0x76, 0x31, 0x07, 0x07, 0xe7, + 0xd6, 0x46, 0x1f, 0x85, 0x52, 0x3b, 0xf0, 0xeb, 0x6b, 0x9a, 0x37, 0xe3, 0x79, 0x3a, 0x80, 0x55, + 0x59, 0x78, 0x78, 0x30, 0x3f, 0xae, 0xfe, 0xb0, 0x0b, 0x3f, 0xae, 0x90, 0xe1, 0x66, 0x3d, 0x7a, + 0xac, 0x6e, 0xd6, 0xbb, 0x30, 0x53, 0x23, 0x81, 0xcb, 0xd2, 0xb6, 0x37, 0xe2, 0xf3, 0x69, 0x03, + 0x4a, 0x41, 0xe2, 0x44, 0xee, 0x2b, 0x80, 0xa4, 0x96, 0xb5, 0x41, 0x9e, 0xc0, 0x31, 0x21, 0xfb, + 0xff, 0x58, 0x30, 0x2c, 0x1c, 0x83, 0x4e, 0x80, 0x6b, 0x5c, 0x34, 0x34, 0x09, 0xf3, 0xd9, 0x03, + 0xc6, 0x3a, 0x93, 0xab, 0x43, 0xa8, 0x24, 0x74, 0x08, 0x8f, 0x77, 0x23, 0xd2, 0x5d, 0x7b, 0xf0, + 0x37, 0x8a, 0x94, 0x7b, 0x37, 0x5c, 0x54, 0x1f, 0xfe, 0x10, 0xac, 0xc3, 0x70, 0x28, 0x5c, 0x24, + 0x0b, 0xf9, 0x06, 0xfa, 0xc9, 0x49, 0x8c, 0xed, 0xd8, 0x84, 0x53, 0xa4, 0x24, 0x92, 0xe9, 0x7b, + 0x59, 0x7c, 0x88, 0xbe, 0x97, 0xbd, 0x9c, 0x78, 0x07, 0x8e, 0xc3, 0x89, 0xd7, 0xfe, 0x0a, 0xbb, + 0x39, 0xf5, 0xf2, 0x13, 0x60, 0xaa, 0xae, 0x9a, 0x77, 0xac, 0xdd, 0x65, 0x65, 0x89, 0x4e, 0xe5, + 0x30, 0x57, 0x3f, 0x67, 0xc1, 0xb9, 0x8c, 0xaf, 0xd2, 0x38, 0xad, 0x67, 0x60, 0xc4, 0xe9, 0x34, + 0x5c, 0xb5, 0x97, 0x35, 0x7d, 0xe2, 0xa2, 0x28, 0xc7, 0x0a, 0x03, 0x2d, 0xc3, 0x34, 0xb9, 0xd7, + 0x76, 0xb9, 0x2a, 0x55, 0xb7, 0x6a, 0x2d, 0x72, 0x6f, 0xb2, 0x95, 0x24, 0x10, 0xa7, 0xf1, 0x55, + 0xe0, 0x94, 0x62, 0x6e, 0xe0, 0x94, 0xbf, 0x6f, 0xc1, 0xa8, 0x72, 0x12, 0x7c, 0xe8, 0xa3, 0xfd, + 0x71, 0x73, 0xb4, 0x1f, 0xed, 0x32, 0xda, 0x39, 0xc3, 0xfc, 0x5b, 0x05, 0xd5, 0xdf, 0xaa, 0x1f, + 0x44, 0x7d, 0x70, 0x70, 0x0f, 0x6e, 0x87, 0x7f, 0x05, 0x46, 0x9d, 0x76, 0x5b, 0x02, 0xa4, 0x0d, + 0x1a, 0x0b, 0x07, 0x1c, 0x17, 0x63, 0x1d, 0x47, 0xb9, 0x05, 0x14, 0x73, 0xdd, 0x02, 0x1a, 0x00, + 0x91, 0x13, 0x6c, 0x93, 0x88, 0x96, 0x89, 0xc8, 0x68, 0xf9, 0xe7, 0x4d, 0x27, 0x72, 0x9b, 0x0b, + 0xae, 0x17, 0x85, 0x51, 0xb0, 0x50, 0xf1, 0xa2, 0x9b, 0x01, 0x7f, 0x42, 0x6a, 0xa1, 0x87, 0x14, + 0x2d, 0xac, 0xd1, 0x95, 0x0e, 0xf1, 0xac, 0x8d, 0x41, 0xd3, 0x98, 0x61, 0x5d, 0x94, 0x63, 0x85, + 0x61, 0x7f, 0x84, 0xdd, 0x3e, 0x6c, 0x4c, 0x8f, 0x16, 0x76, 0xe7, 0x1f, 0x8e, 0xa9, 0xd9, 0x60, + 0x9a, 0xcc, 0xb2, 0x1e, 0xdc, 0xa7, 0xfb, 0x61, 0x4f, 0x1b, 0xd6, 0x9d, 0xd4, 0xe2, 0x08, 0x40, + 0xe8, 0xdb, 0x52, 0x06, 0x2a, 0xcf, 0xf6, 0xb8, 0x35, 0x8e, 0x60, 0x92, 0xc2, 0x72, 0x83, 0xb0, + 0xcc, 0x09, 0x95, 0xaa, 0xd8, 0x17, 0x5a, 0x6e, 0x10, 0x01, 0xc0, 0x31, 0x0e, 0x65, 0xa6, 0xd4, + 0x9f, 0x70, 0x16, 0xc5, 0x31, 0x32, 0x15, 0x76, 0x88, 0x35, 0x0c, 0x74, 0x59, 0x08, 0x14, 0xb8, + 0x5e, 0xe0, 0xd1, 0x84, 0x40, 0x41, 0x0e, 0x97, 0x26, 0x05, 0xba, 0x02, 0xa3, 0x2a, 0x0d, 0x71, + 0x95, 0x67, 0xb7, 0x15, 0xcb, 0x6c, 0x25, 0x2e, 0xc6, 0x3a, 0x0e, 0xda, 0x80, 0xc9, 0x90, 0xcb, + 0xd9, 0x54, 0xe0, 0x62, 0x2e, 0xaf, 0xfc, 0xa0, 0xb4, 0x02, 0xaa, 0x99, 0xe0, 0x43, 0x56, 0xc4, + 0x4f, 0x27, 0xe9, 0xb4, 0x9e, 0x24, 0x81, 0x5e, 0x85, 0x89, 0xa6, 0xef, 0x34, 0x96, 0x9c, 0xa6, + 0xe3, 0xd5, 0xd9, 0xf8, 0x8c, 0x98, 0xd9, 0x2c, 0x6f, 0x18, 0x50, 0x9c, 0xc0, 0xa6, 0xcc, 0x9b, + 0x5e, 0x22, 0x82, 0x6d, 0x3b, 0xde, 0x36, 0x09, 0x45, 0x52, 0x59, 0xc6, 0xbc, 0xdd, 0xc8, 0xc1, + 0xc1, 0xb9, 0xb5, 0xd1, 0x4b, 0x30, 0x26, 0x3f, 0x5f, 0x8b, 0xf1, 0x10, 0x7b, 0x58, 0x68, 0x30, + 0x6c, 0x60, 0xa2, 0xbb, 0x70, 0x5a, 0xfe, 0xdf, 0x08, 0x9c, 0xad, 0x2d, 0xb7, 0x2e, 0x1c, 0x9f, + 0xb9, 0x2b, 0xe6, 0xa2, 0xf4, 0x17, 0x5c, 0xc9, 0x42, 0x3a, 0x3c, 0x98, 0xbf, 0x20, 0x46, 0x2d, + 0x13, 0xce, 0x26, 0x31, 0x9b, 0x3e, 0x5a, 0x83, 0x99, 0x1d, 0xe2, 0x34, 0xa3, 0x9d, 0xe5, 0x1d, + 0x52, 0xdf, 0x95, 0x9b, 0x8e, 0x45, 0x8e, 0xd0, 0xfc, 0x12, 0xae, 0xa5, 0x51, 0x70, 0x56, 0x3d, + 0xf4, 0x06, 0xcc, 0xb6, 0x3b, 0x9b, 0x4d, 0x37, 0xdc, 0x59, 0xf7, 0x23, 0x66, 0x0a, 0xa4, 0xb2, + 0x1a, 0x8b, 0x10, 0x13, 0x2a, 0x36, 0x47, 0x35, 0x07, 0x0f, 0xe7, 0x52, 0x40, 0x6f, 0xc3, 0xe9, + 0xc4, 0x62, 0x10, 0x4e, 0xf6, 0x13, 0xf9, 0xa9, 0x0b, 0x6a, 0x59, 0x15, 0x44, 0xbc, 0x8a, 0x2c, + 0x10, 0xce, 0x6e, 0x02, 0xbd, 0x0c, 0xe0, 0xb6, 0x57, 0x9d, 0x96, 0xdb, 0xa4, 0xcf, 0xc5, 0x19, + 0xb6, 0x4e, 0xe8, 0xd3, 0x01, 0x2a, 0x55, 0x59, 0x4a, 0xcf, 0x67, 0xf1, 0x6f, 0x1f, 0x6b, 0xd8, + 0xa8, 0x0a, 0x13, 0xe2, 0xdf, 0xbe, 0x98, 0xd6, 0x69, 0xe5, 0xcf, 0x3e, 0x21, 0x6b, 0xa8, 0xb9, + 0x44, 0x66, 0x09, 0x9b, 0xbd, 0x44, 0x7d, 0xb4, 0x0d, 0xe7, 0x44, 0x02, 0x6c, 0xa2, 0xaf, 0x53, + 0x39, 0x0f, 0x21, 0xcb, 0x19, 0x30, 0xc2, 0xdd, 0x1e, 0x16, 0xbb, 0x21, 0xe2, 0xee, 0x74, 0xe8, + 0xfd, 0xae, 0x2f, 0x77, 0xee, 0x0e, 0x7a, 0x9a, 0x9b, 0x27, 0xd1, 0xfb, 0xfd, 0x46, 0x12, 0x88, + 0xd3, 0xf8, 0x28, 0x84, 0xd3, 0xae, 0x97, 0xb5, 0xba, 0xcf, 0x30, 0x42, 0x1f, 0xe3, 0x9e, 0xb0, + 0xdd, 0x57, 0x76, 0x26, 0x9c, 0xaf, 0xec, 0x4c, 0xda, 0xef, 0xcc, 0x0a, 0xef, 0xb7, 0x2d, 0x5a, + 0x5b, 0xe3, 0xd4, 0xd1, 0x67, 0x61, 0x4c, 0xff, 0x30, 0xc1, 0x75, 0x5c, 0xcc, 0x66, 0x64, 0xb5, + 0xf3, 0x81, 0xf3, 0xf9, 0xea, 0x0c, 0xd0, 0x61, 0xd8, 0xa0, 0x88, 0xea, 0x19, 0x3e, 0xe3, 0x97, + 0xfb, 0xe3, 0x6a, 0xfa, 0x37, 0x42, 0x23, 0x90, 0xbd, 0xec, 0xd1, 0x0d, 0x18, 0xa9, 0x37, 0x5d, + 0xe2, 0x45, 0x95, 0x6a, 0xb7, 0xc0, 0x70, 0xcb, 0x02, 0x47, 0xec, 0x23, 0x91, 0x02, 0x80, 0x97, + 0x61, 0x45, 0xc1, 0xfe, 0xd5, 0x02, 0xcc, 0xf7, 0xc8, 0x27, 0x91, 0x50, 0x49, 0x59, 0x7d, 0xa9, + 0xa4, 0x16, 0x65, 0xea, 0xee, 0xf5, 0x84, 0xb4, 0x2b, 0x91, 0x96, 0x3b, 0x96, 0x79, 0x25, 0xf1, + 0xfb, 0x76, 0x11, 0xd0, 0xb5, 0x5a, 0x03, 0x3d, 0x9d, 0x5c, 0x0c, 0x6d, 0xf6, 0x60, 0xff, 0x4f, + 0xe0, 0x5c, 0xcd, 0xa4, 0xfd, 0x95, 0x02, 0x9c, 0x56, 0x43, 0xf8, 0xcd, 0x3b, 0x70, 0xb7, 0xd2, + 0x03, 0x77, 0x0c, 0x7a, 0x5d, 0xfb, 0x26, 0x0c, 0xf1, 0x48, 0x77, 0x7d, 0xb0, 0xde, 0x4f, 0x98, + 0x91, 0x64, 0x15, 0xb7, 0x67, 0x44, 0x93, 0xfd, 0x5e, 0x0b, 0x26, 0x37, 0x96, 0xab, 0x35, 0xbf, + 0xbe, 0x4b, 0xa2, 0x45, 0xfe, 0x54, 0xc2, 0x9a, 0x77, 0xed, 0x83, 0xb0, 0xc7, 0x59, 0x8c, 0xf7, + 0x05, 0x18, 0xd8, 0xf1, 0xc3, 0x28, 0x69, 0xf4, 0x71, 0xcd, 0x0f, 0x23, 0xcc, 0x20, 0xf6, 0xef, + 0x5a, 0x30, 0xb8, 0xe1, 0xb8, 0x5e, 0x24, 0x15, 0x04, 0x56, 0x8e, 0x82, 0xa0, 0x9f, 0xef, 0x42, + 0x2f, 0xc2, 0x10, 0xd9, 0xda, 0x22, 0xf5, 0x48, 0xcc, 0xaa, 0x0c, 0x4d, 0x30, 0xb4, 0xc2, 0x4a, + 0x29, 0x2f, 0xc8, 0x1a, 0xe3, 0x7f, 0xb1, 0x40, 0x46, 0x77, 0xa0, 0x14, 0xb9, 0x2d, 0xb2, 0xd8, + 0x68, 0x08, 0xb5, 0xf9, 0x03, 0x84, 0x57, 0xd8, 0x90, 0x04, 0x70, 0x4c, 0xcb, 0xfe, 0x62, 0x01, + 0x20, 0x0e, 0x11, 0xd4, 0xeb, 0x13, 0x97, 0x52, 0x0a, 0xd5, 0x8b, 0x19, 0x0a, 0x55, 0x14, 0x13, + 0xcc, 0xd0, 0xa6, 0xaa, 0x61, 0x2a, 0xf6, 0x35, 0x4c, 0x03, 0x47, 0x19, 0xa6, 0x65, 0x98, 0x8e, + 0x43, 0x1c, 0x99, 0x11, 0xde, 0xd8, 0xf5, 0xb9, 0x91, 0x04, 0xe2, 0x34, 0xbe, 0x4d, 0xe0, 0x82, + 0x8a, 0xf4, 0x22, 0x6e, 0x34, 0x66, 0x95, 0xad, 0x2b, 0xa8, 0x7b, 0x8c, 0x53, 0xac, 0x31, 0x2e, + 0xe4, 0x6a, 0x8c, 0x7f, 0xc2, 0x82, 0x53, 0xc9, 0x76, 0x98, 0x3f, 0xee, 0x17, 0x2c, 0x38, 0xcd, + 0xf4, 0xe6, 0xac, 0xd5, 0xb4, 0x96, 0xfe, 0x85, 0xae, 0xd1, 0x6b, 0x72, 0x7a, 0x1c, 0xc7, 0xc0, + 0x58, 0xcb, 0x22, 0x8d, 0xb3, 0x5b, 0xb4, 0xff, 0x53, 0x01, 0x66, 0xf3, 0xc2, 0xde, 0x30, 0xa7, + 0x0d, 0xe7, 0x5e, 0x6d, 0x97, 0xdc, 0x15, 0xa6, 0xf1, 0xb1, 0xd3, 0x06, 0x2f, 0xc6, 0x12, 0x9e, + 0x4c, 0x11, 0x50, 0xe8, 0x33, 0x45, 0xc0, 0x0e, 0x4c, 0xdf, 0xdd, 0x21, 0xde, 0x2d, 0x2f, 0x74, + 0x22, 0x37, 0xdc, 0x72, 0x99, 0x8e, 0x99, 0xaf, 0x9b, 0x97, 0xa5, 0x01, 0xfb, 0x9d, 0x24, 0xc2, + 0xe1, 0xc1, 0xfc, 0x39, 0xa3, 0x20, 0xee, 0x32, 0x3f, 0x48, 0x70, 0x9a, 0x68, 0x3a, 0xc3, 0xc2, + 0xc0, 0x43, 0xcc, 0xb0, 0x60, 0x7f, 0xc1, 0x82, 0xb3, 0xb9, 0xc9, 0x5d, 0xd1, 0x25, 0x18, 0x71, + 0xda, 0x2e, 0x17, 0xd3, 0x8b, 0x63, 0x94, 0x89, 0x83, 0xaa, 0x15, 0x2e, 0xa4, 0x57, 0x50, 0x95, + 0xd6, 0xbe, 0x90, 0x9b, 0xd6, 0xbe, 0x67, 0x96, 0x7a, 0xfb, 0x7b, 0x2c, 0x10, 0x0e, 0xa7, 0x7d, + 0x9c, 0xdd, 0x9f, 0x82, 0xb1, 0xbd, 0x74, 0x16, 0xa6, 0x0b, 0xf9, 0x1e, 0xb8, 0x22, 0xf7, 0x92, + 0x62, 0xc8, 0x8c, 0x8c, 0x4b, 0x06, 0x2d, 0xbb, 0x01, 0x02, 0x5a, 0x26, 0x4c, 0x08, 0xdd, 0xbb, + 0x37, 0xcf, 0x01, 0x34, 0x18, 0x2e, 0x4b, 0xcd, 0x58, 0x30, 0x6f, 0xe6, 0xb2, 0x82, 0x60, 0x0d, + 0xcb, 0xfe, 0x0f, 0x05, 0x18, 0x95, 0x59, 0x7f, 0x3a, 0x5e, 0x3f, 0xa2, 0xa2, 0x23, 0xa5, 0x01, + 0x45, 0x97, 0xa1, 0xc4, 0x64, 0x99, 0xd5, 0x58, 0xc2, 0xa6, 0x24, 0x09, 0x6b, 0x12, 0x80, 0x63, + 0x1c, 0xba, 0x8b, 0xc2, 0xce, 0x26, 0x43, 0x4f, 0xb8, 0x47, 0xd6, 0x78, 0x31, 0x96, 0x70, 0xf4, + 0x09, 0x98, 0xe2, 0xf5, 0x02, 0xbf, 0xed, 0x6c, 0x73, 0xfd, 0xc7, 0xa0, 0x0a, 0xa0, 0x30, 0xb5, + 0x96, 0x80, 0x1d, 0x1e, 0xcc, 0x9f, 0x4a, 0x96, 0x31, 0xc5, 0x5e, 0x8a, 0x0a, 0x33, 0x73, 0xe2, + 0x8d, 0xd0, 0xdd, 0x9f, 0xb2, 0x8e, 0x8a, 0x41, 0x58, 0xc7, 0xb3, 0x3f, 0x0b, 0x28, 0x9d, 0xff, + 0x08, 0xbd, 0xc6, 0x6d, 0x5b, 0xdd, 0x80, 0x34, 0xba, 0x29, 0xfa, 0xf4, 0x30, 0x01, 0xd2, 0xb3, + 0x89, 0xd7, 0xc2, 0xaa, 0xbe, 0xfd, 0x97, 0x8b, 0x30, 0x95, 0xf4, 0xe5, 0x46, 0xd7, 0x60, 0x88, + 0xb3, 0x1e, 0x82, 0x7c, 0x17, 0x3b, 0x12, 0xcd, 0x03, 0x9c, 0x1d, 0xc2, 0x82, 0x7b, 0x11, 0xf5, + 0xd1, 0x1b, 0x30, 0xda, 0xf0, 0xef, 0x7a, 0x77, 0x9d, 0xa0, 0xb1, 0x58, 0xad, 0x88, 0xe5, 0x9c, + 0xf9, 0xb0, 0x2d, 0xc7, 0x68, 0xba, 0x57, 0x39, 0xd3, 0x99, 0xc6, 0x20, 0xac, 0x93, 0x43, 0x1b, + 0x2c, 0x68, 0xfa, 0x96, 0xbb, 0xbd, 0xe6, 0xb4, 0xbb, 0x39, 0x3a, 0x2c, 0x4b, 0x24, 0x8d, 0xf2, + 0xb8, 0x88, 0xac, 0xce, 0x01, 0x38, 0x26, 0x84, 0x3e, 0x07, 0x33, 0x61, 0x8e, 0xb8, 0x3d, 0x2f, + 0x1d, 0x5e, 0x37, 0x09, 0xf4, 0xd2, 0x23, 0xf7, 0x0f, 0xe6, 0x67, 0xb2, 0x04, 0xf3, 0x59, 0xcd, + 0xd8, 0x3f, 0x72, 0x0a, 0x8c, 0x4d, 0x6c, 0x64, 0x47, 0xb5, 0x8e, 0x29, 0x3b, 0x2a, 0x86, 0x11, + 0xd2, 0x6a, 0x47, 0xfb, 0x65, 0x37, 0xe8, 0x96, 0x9b, 0x7c, 0x45, 0xe0, 0xa4, 0x69, 0x4a, 0x08, + 0x56, 0x74, 0xb2, 0x53, 0xd8, 0x16, 0xbf, 0x8e, 0x29, 0x6c, 0x07, 0x4e, 0x30, 0x85, 0xed, 0x3a, + 0x0c, 0x6f, 0xbb, 0x11, 0x26, 0x6d, 0x5f, 0x30, 0xfd, 0x99, 0xeb, 0xf0, 0x2a, 0x47, 0x49, 0x27, + 0x4b, 0x14, 0x00, 0x2c, 0x89, 0xa0, 0xd7, 0xd4, 0x0e, 0x1c, 0xca, 0x7f, 0x98, 0xa7, 0x0d, 0x1e, + 0x32, 0xf7, 0xa0, 0x48, 0x54, 0x3b, 0xfc, 0xa0, 0x89, 0x6a, 0x57, 0x65, 0x7a, 0xd9, 0x91, 0x7c, + 0xaf, 0x24, 0x96, 0x3d, 0xb6, 0x47, 0x52, 0xd9, 0xdb, 0x7a, 0x4a, 0xde, 0x52, 0xfe, 0x49, 0xa0, + 0xb2, 0xed, 0xf6, 0x99, 0x88, 0xf7, 0x7b, 0x2c, 0x38, 0xdd, 0xce, 0xca, 0x4e, 0x2d, 0x6c, 0x03, + 0x5e, 0xec, 0x3b, 0x01, 0xb6, 0xd1, 0x20, 0x93, 0xa9, 0x65, 0xa2, 0xe1, 0xec, 0xe6, 0xe8, 0x40, + 0x07, 0x9b, 0x0d, 0xa1, 0xa3, 0x7e, 0x22, 0x27, 0xa3, 0x6f, 0x97, 0x3c, 0xbe, 0x1b, 0x19, 0xd9, + 0x63, 0xdf, 0x9f, 0x97, 0x3d, 0xb6, 0xef, 0x9c, 0xb1, 0xaf, 0xa9, 0x5c, 0xbe, 0xe3, 0xf9, 0x4b, + 0x89, 0x67, 0xea, 0xed, 0x99, 0xc1, 0xf7, 0x35, 0x95, 0xc1, 0xb7, 0x4b, 0x70, 0x5b, 0x9e, 0x9f, + 0xb7, 0x67, 0xde, 0x5e, 0x2d, 0xf7, 0xee, 0xe4, 0xf1, 0xe4, 0xde, 0x35, 0xae, 0x1a, 0x9e, 0xfe, + 0xf5, 0xe9, 0x1e, 0x57, 0x8d, 0x41, 0xb7, 0xfb, 0x65, 0xc3, 0xf3, 0x0c, 0x4f, 0x3f, 0x50, 0x9e, + 0xe1, 0xdb, 0x7a, 0xde, 0x5e, 0xd4, 0x23, 0x31, 0x2d, 0x45, 0xea, 0x33, 0x5b, 0xef, 0x6d, 0xfd, + 0x02, 0x9c, 0xc9, 0xa7, 0xab, 0xee, 0xb9, 0x34, 0xdd, 0xcc, 0x2b, 0x30, 0x95, 0x05, 0xf8, 0xd4, + 0xc9, 0x64, 0x01, 0x3e, 0x7d, 0xec, 0x59, 0x80, 0xcf, 0x9c, 0x40, 0x16, 0xe0, 0x47, 0x4e, 0x30, + 0x0b, 0xf0, 0x6d, 0x66, 0x50, 0xc3, 0xc3, 0xf6, 0x88, 0x60, 0xbc, 0xd9, 0x81, 0x5f, 0xb3, 0x62, + 0xfb, 0xf0, 0x8f, 0x53, 0x20, 0x1c, 0x93, 0xca, 0xc8, 0x2e, 0x3c, 0xfb, 0x10, 0xb2, 0x0b, 0xaf, + 0xc7, 0xd9, 0x85, 0xcf, 0xe6, 0x4f, 0x75, 0x86, 0x0b, 0x46, 0x4e, 0x4e, 0xe1, 0xdb, 0x7a, 0x2e, + 0xe0, 0x47, 0xbb, 0x68, 0x4d, 0xb2, 0x04, 0x8f, 0x5d, 0x32, 0x00, 0xbf, 0xca, 0x33, 0x00, 0x3f, + 0x96, 0x7f, 0x92, 0x27, 0xaf, 0x3b, 0x23, 0xef, 0x2f, 0xed, 0x97, 0x8a, 0xe1, 0xc8, 0xc2, 0x0e, + 0xe7, 0xf4, 0x4b, 0x05, 0x81, 0x4c, 0xf7, 0x4b, 0x81, 0x70, 0x4c, 0xca, 0xfe, 0xbe, 0x02, 0x9c, + 0xef, 0xbe, 0xdf, 0x62, 0x69, 0x6a, 0x35, 0x56, 0x22, 0x27, 0xa4, 0xa9, 0xfc, 0xcd, 0x16, 0x63, + 0xf5, 0x1d, 0x92, 0xee, 0x2a, 0x4c, 0x2b, 0xdf, 0x8d, 0xa6, 0x5b, 0xdf, 0x5f, 0x8f, 0x5f, 0xbe, + 0xca, 0xdf, 0xbd, 0x96, 0x44, 0xc0, 0xe9, 0x3a, 0x68, 0x11, 0x26, 0x8d, 0xc2, 0x4a, 0x59, 0xbc, + 0xcd, 0x94, 0xf8, 0xb6, 0x66, 0x82, 0x71, 0x12, 0xdf, 0xfe, 0x92, 0x05, 0x8f, 0xe4, 0xa4, 0xcf, + 0xeb, 0x3b, 0xe2, 0xda, 0x16, 0x4c, 0xb6, 0xcd, 0xaa, 0x3d, 0x82, 0x44, 0x1a, 0x49, 0xfa, 0x54, + 0x5f, 0x13, 0x00, 0x9c, 0x24, 0x6a, 0xff, 0x54, 0x01, 0xce, 0x75, 0x35, 0x46, 0x44, 0x18, 0xce, + 0x6c, 0xb7, 0x42, 0x67, 0x39, 0x20, 0x0d, 0xe2, 0x45, 0xae, 0xd3, 0xac, 0xb5, 0x49, 0x5d, 0x93, + 0x87, 0x33, 0xab, 0xbe, 0xab, 0x6b, 0xb5, 0xc5, 0x34, 0x06, 0xce, 0xa9, 0x89, 0x56, 0x01, 0xa5, + 0x21, 0x62, 0x86, 0x59, 0x00, 0xeb, 0x34, 0x3d, 0x9c, 0x51, 0x03, 0x7d, 0x04, 0xc6, 0x95, 0x91, + 0xa3, 0x36, 0xe3, 0xec, 0x60, 0xc7, 0x3a, 0x00, 0x9b, 0x78, 0xe8, 0x0a, 0x8f, 0x80, 0x2e, 0x62, + 0xe5, 0x0b, 0xe1, 0xf9, 0xa4, 0x0c, 0x6f, 0x2e, 0x8a, 0xb1, 0x8e, 0xb3, 0x74, 0xe9, 0xd7, 0x7e, + 0xff, 0xfc, 0xfb, 0x7e, 0xf3, 0xf7, 0xcf, 0xbf, 0xef, 0x77, 0x7e, 0xff, 0xfc, 0xfb, 0xbe, 0xe3, + 0xfe, 0x79, 0xeb, 0xd7, 0xee, 0x9f, 0xb7, 0x7e, 0xf3, 0xfe, 0x79, 0xeb, 0x77, 0xee, 0x9f, 0xb7, + 0x7e, 0xef, 0xfe, 0x79, 0xeb, 0x8b, 0x7f, 0x70, 0xfe, 0x7d, 0x9f, 0x2a, 0xec, 0x5d, 0xf9, 0xff, + 0x01, 0x00, 0x00, 0xff, 0xff, 0x6b, 0xfb, 0x80, 0x16, 0x98, 0x04, 0x01, 0x00, } func (m *AWSElasticBlockStoreVolumeSource) Marshal() (dAtA []byte, err error) { @@ -14590,6 +14621,34 @@ func (m *PodLogOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *PodOS) 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 *PodOS) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PodOS) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *PodPortForwardOptions) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -14843,6 +14902,20 @@ func (m *PodSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.OS != nil { + { + size, err := m.OS.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2 + i-- + dAtA[i] = 0xa2 + } if m.SetHostnameAsFQDN != nil { i-- if *m.SetHostnameAsFQDN { @@ -22247,6 +22320,17 @@ func (m *PodLogOptions) Size() (n int) { return n } +func (m *PodOS) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + func (m *PodPortForwardOptions) Size() (n int) { if m == nil { return 0 @@ -22483,6 +22567,10 @@ func (m *PodSpec) Size() (n int) { if m.SetHostnameAsFQDN != nil { n += 3 } + if m.OS != nil { + l = m.OS.Size() + n += 2 + l + sovGenerated(uint64(l)) + } return n } @@ -26124,6 +26212,16 @@ func (this *PodLogOptions) String() string { }, "") return s } +func (this *PodOS) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodOS{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `}`, + }, "") + return s +} func (this *PodPortForwardOptions) String() string { if this == nil { return "nil" @@ -26293,6 +26391,7 @@ func (this *PodSpec) String() string { `TopologySpreadConstraints:` + repeatedStringForTopologySpreadConstraints + `,`, `EphemeralContainers:` + repeatedStringForEphemeralContainers + `,`, `SetHostnameAsFQDN:` + valueToStringGenerated(this.SetHostnameAsFQDN) + `,`, + `OS:` + strings.Replace(this.OS.String(), "PodOS", "PodOS", 1) + `,`, `}`, }, "") return s @@ -51535,6 +51634,88 @@ func (m *PodLogOptions) Unmarshal(dAtA []byte) error { } return nil } +func (m *PodOS) 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 ErrIntOverflowGenerated + } + 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: PodOS: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodOS: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + 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 ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = OSName(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *PodPortForwardOptions) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -53550,6 +53731,42 @@ func (m *PodSpec) Unmarshal(dAtA []byte) error { } b := bool(v != 0) m.SetHostnameAsFQDN = &b + case 36: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OS", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.OS == nil { + m.OS = &PodOS{} + } + if err := m.OS.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/staging/src/k8s.io/api/core/v1/generated.proto b/staging/src/k8s.io/api/core/v1/generated.proto index 830dbc39b80..1d38dfb6d9d 100644 --- a/staging/src/k8s.io/api/core/v1/generated.proto +++ b/staging/src/k8s.io/api/core/v1/generated.proto @@ -3276,6 +3276,15 @@ message PodLogOptions { optional bool insecureSkipTLSVerifyBackend = 9; } +// PodOS defines the OS parameters of a pod. +message PodOS { + // Name is the name of the operating system. The currently supported values are linux and windows. + // Additional value may be defined in future and can be one of: + // https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration + // Clients should expect to handle additional values and treat unrecognized values in this field as os: null + optional string name = 1; +} + // PodPortForwardOptions is the query options to a Pod's port forward call // when using WebSockets. // The `port` query parameter must specify the port or @@ -3311,12 +3320,14 @@ message PodSecurityContext { // container. May also be set in SecurityContext. If set in // both SecurityContext and PodSecurityContext, the value specified in SecurityContext // takes precedence for that container. + // Note that this field cannot be set when spec.os.name is windows. // +optional optional SELinuxOptions seLinuxOptions = 1; // The Windows specific settings applied to all containers. // If unspecified, the options within a container's SecurityContext will be used. // If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is linux. // +optional optional WindowsSecurityContextOptions windowsOptions = 8; @@ -3325,6 +3336,7 @@ message PodSecurityContext { // May also be set in SecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence // for that container. + // Note that this field cannot be set when spec.os.name is windows. // +optional optional int64 runAsUser = 2; @@ -3333,6 +3345,7 @@ message PodSecurityContext { // May also be set in SecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence // for that container. + // Note that this field cannot be set when spec.os.name is windows. // +optional optional int64 runAsGroup = 6; @@ -3348,6 +3361,7 @@ message PodSecurityContext { // A list of groups applied to the first process run in each container, in addition // to the container's primary GID. If unspecified, no groups will be added to // any container. + // Note that this field cannot be set when spec.os.name is windows. // +optional repeated int64 supplementalGroups = 4; @@ -3360,11 +3374,13 @@ message PodSecurityContext { // 3. The permission bits are OR'd with rw-rw---- // // If unset, the Kubelet will not modify the ownership and permissions of any volume. + // Note that this field cannot be set when spec.os.name is windows. // +optional optional int64 fsGroup = 5; // Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported // sysctls (by the container runtime) might fail to launch. + // Note that this field cannot be set when spec.os.name is windows. // +optional repeated Sysctl sysctls = 7; @@ -3374,10 +3390,12 @@ message PodSecurityContext { // It will have no effect on ephemeral volume types such as: secret, configmaps // and emptydir. // Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. + // Note that this field cannot be set when spec.os.name is windows. // +optional optional string fsGroupChangePolicy = 9; // The seccomp options to use by the containers in this pod. + // Note that this field cannot be set when spec.os.name is windows. // +optional optional SeccompProfile seccompProfile = 10; } @@ -3648,6 +3666,37 @@ message PodSpec { // Default to false. // +optional optional bool setHostnameAsFQDN = 35; + + // Specifies the OS of the containers in the pod. + // Some pod and container fields are restricted if this is set. + // + // If the OS field is set to linux, the following fields must be unset: + // -securityContext.windowsOptions + // + // If the OS field is set to windows, following fields must be unset: + // - spec.hostPID + // - spec.hostIPC + // - spec.securityContext.seLinuxOptions + // - spec.securityContext.seccompProfile + // - spec.securityContext.fsGroup + // - spec.securityContext.fsGroupChangePolicy + // - spec.securityContext.sysctls + // - spec.shareProcessNamespace + // - spec.securityContext.runAsUser + // - spec.securityContext.runAsGroup + // - spec.securityContext.supplementalGroups + // - spec.containers[*].securityContext.seLinuxOptions + // - spec.containers[*].securityContext.seccompProfile + // - spec.containers[*].securityContext.capabilities + // - spec.containers[*].securityContext.readOnlyRootFilesystem + // - spec.containers[*].securityContext.privileged + // - spec.containers[*].securityContext.allowPrivilegeEscalation + // - spec.containers[*].securityContext.procMount + // - spec.containers[*].securityContext.runAsUser + // - spec.containers[*].securityContext.runAsGroup + // +optional + // This is an alpha field and requires the IdentifyPodOS feature + optional PodOS os = 36; } // PodStatus represents information about the status of a pod. Status may trail the actual @@ -4605,12 +4654,14 @@ message SecretVolumeSource { message SecurityContext { // The capabilities to add/drop when running containers. // Defaults to the default set of capabilities granted by the container runtime. + // Note that this field cannot be set when spec.os.name is windows. // +optional optional Capabilities capabilities = 1; // Run container in privileged mode. // Processes in privileged containers are essentially equivalent to root on the host. // Defaults to false. + // Note that this field cannot be set when spec.os.name is windows. // +optional optional bool privileged = 2; @@ -4618,12 +4669,14 @@ message SecurityContext { // If unspecified, the container runtime will allocate a random SELinux context for each // container. May also be set in PodSecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is windows. // +optional optional SELinuxOptions seLinuxOptions = 3; // The Windows specific settings applied to all containers. // If unspecified, the options from the PodSecurityContext will be used. // If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is linux. // +optional optional WindowsSecurityContextOptions windowsOptions = 10; @@ -4631,6 +4684,7 @@ message SecurityContext { // Defaults to user specified in image metadata if unspecified. // May also be set in PodSecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is windows. // +optional optional int64 runAsUser = 4; @@ -4638,6 +4692,7 @@ message SecurityContext { // Uses runtime default if unset. // May also be set in PodSecurityContext. If set in both SecurityContext and // PodSecurityContext, the value specified in SecurityContext takes precedence. + // Note that this field cannot be set when spec.os.name is windows. // +optional optional int64 runAsGroup = 8; @@ -4652,6 +4707,7 @@ message SecurityContext { // Whether this container has a read-only root filesystem. // Default is false. + // Note that this field cannot be set when spec.os.name is windows. // +optional optional bool readOnlyRootFilesystem = 6; @@ -4661,6 +4717,7 @@ message SecurityContext { // AllowPrivilegeEscalation is true always when the container is: // 1) run as Privileged // 2) has CAP_SYS_ADMIN + // Note that this field cannot be set when spec.os.name is windows. // +optional optional bool allowPrivilegeEscalation = 7; @@ -4668,12 +4725,14 @@ message SecurityContext { // The default is DefaultProcMount which uses the container runtime defaults for // readonly paths and masked paths. // This requires the ProcMountType feature flag to be enabled. + // Note that this field cannot be set when spec.os.name is windows. // +optional optional string procMount = 9; // The seccomp options to use by this container. If seccomp options are // provided at both the pod & container level, the container options // override the pod options. + // Note that this field cannot be set when spec.os.name is windows. // +optional optional SeccompProfile seccompProfile = 11; } diff --git a/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go b/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go index 921c2b4c3f7..924d98328f9 100644 --- a/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go +++ b/staging/src/k8s.io/api/core/v1/types_swagger_doc_generated.go @@ -1558,6 +1558,15 @@ func (PodLogOptions) SwaggerDoc() map[string]string { return map_PodLogOptions } +var map_PodOS = map[string]string{ + "": "PodOS defines the OS parameters of a pod.", + "name": "Name is the name of the operating system. The currently supported values are linux and windows. Additional value may be defined in future and can be one of: https://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration Clients should expect to handle additional values and treat unrecognized values in this field as os: null", +} + +func (PodOS) SwaggerDoc() map[string]string { + return map_PodOS +} + var map_PodPortForwardOptions = map[string]string{ "": "PodPortForwardOptions is the query options to a Pod's port forward call when using WebSockets. The `port` query parameter must specify the port or ports (comma separated) to forward over. Port forwarding over SPDY does not use these options. It requires the port to be passed in the `port` header as part of request.", "ports": "List of ports to forward Required when using WebSockets", @@ -1587,16 +1596,16 @@ func (PodReadinessGate) SwaggerDoc() map[string]string { var map_PodSecurityContext = map[string]string{ "": "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext. Field values of container.securityContext take precedence over field values of PodSecurityContext.", - "seLinuxOptions": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", - "windowsOptions": "The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", - "runAsUser": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", - "runAsGroup": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.", + "seLinuxOptions": "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.", + "windowsOptions": "The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.", + "runAsUser": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.", + "runAsGroup": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows.", "runAsNonRoot": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", - "supplementalGroups": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container.", + "supplementalGroups": "A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. Note that this field cannot be set when spec.os.name is windows.", "fsGroup": "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw ", - "sysctls": "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch.", - "fsGroupChangePolicy": "fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used.", - "seccompProfile": "The seccomp options to use by the containers in this pod.", + "sysctls": "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows.", + "fsGroupChangePolicy": "fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows.", + "seccompProfile": "The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows.", } func (PodSecurityContext) SwaggerDoc() map[string]string { @@ -1649,6 +1658,7 @@ var map_PodSpec = map[string]string{ "overhead": "Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md This field is beta-level as of Kubernetes v1.18, and is only honored by servers that enable the PodOverhead feature.", "topologySpreadConstraints": "TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.", "setHostnameAsFQDN": "If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", + "os": "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup This is an alpha field and requires the IdentifyPodOS feature", } func (PodSpec) SwaggerDoc() map[string]string { @@ -2126,17 +2136,17 @@ func (SecretVolumeSource) SwaggerDoc() map[string]string { var map_SecurityContext = map[string]string{ "": "SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.", - "capabilities": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime.", - "privileged": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false.", - "seLinuxOptions": "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", - "windowsOptions": "The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", - "runAsUser": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", - "runAsGroup": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", + "capabilities": "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows.", + "privileged": "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows.", + "seLinuxOptions": "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.", + "windowsOptions": "The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux.", + "runAsUser": "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.", + "runAsGroup": "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows.", "runAsNonRoot": "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.", - "readOnlyRootFilesystem": "Whether this container has a read-only root filesystem. Default is false.", - "allowPrivilegeEscalation": "AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN", - "procMount": "procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled.", - "seccompProfile": "The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options.", + "readOnlyRootFilesystem": "Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows.", + "allowPrivilegeEscalation": "AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows.", + "procMount": "procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows.", + "seccompProfile": "The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows.", } func (SecurityContext) SwaggerDoc() map[string]string { diff --git a/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go b/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go index f92790a0d50..ce981d4bfad 100644 --- a/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go +++ b/staging/src/k8s.io/api/core/v1/zz_generated.deepcopy.go @@ -3601,6 +3601,22 @@ func (in *PodLogOptions) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodOS) DeepCopyInto(out *PodOS) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodOS. +func (in *PodOS) DeepCopy() *PodOS { + if in == nil { + return nil + } + out := new(PodOS) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PodPortForwardOptions) DeepCopyInto(out *PodPortForwardOptions) { *out = *in @@ -3895,6 +3911,11 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { *out = new(bool) **out = **in } + if in.OS != nil { + in, out := &in.OS, &out.OS + *out = new(PodOS) + **out = **in + } return } diff --git a/staging/src/k8s.io/client-go/applyconfigurations/core/v1/podos.go b/staging/src/k8s.io/client-go/applyconfigurations/core/v1/podos.go new file mode 100644 index 00000000000..a5315d636b6 --- /dev/null +++ b/staging/src/k8s.io/client-go/applyconfigurations/core/v1/podos.go @@ -0,0 +1,43 @@ +/* +Copyright The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by applyconfiguration-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "k8s.io/api/core/v1" +) + +// PodOSApplyConfiguration represents an declarative configuration of the PodOS type for use +// with apply. +type PodOSApplyConfiguration struct { + Name *v1.OSName `json:"name,omitempty"` +} + +// PodOSApplyConfiguration constructs an declarative configuration of the PodOS type for use with +// apply. +func PodOS() *PodOSApplyConfiguration { + return &PodOSApplyConfiguration{} +} + +// WithName sets the Name field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the Name field is set to the value of the last call. +func (b *PodOSApplyConfiguration) WithName(value v1.OSName) *PodOSApplyConfiguration { + b.Name = &value + return b +} diff --git a/staging/src/k8s.io/client-go/applyconfigurations/core/v1/podspec.go b/staging/src/k8s.io/client-go/applyconfigurations/core/v1/podspec.go index d1c9ea9cb62..015859e9a38 100644 --- a/staging/src/k8s.io/client-go/applyconfigurations/core/v1/podspec.go +++ b/staging/src/k8s.io/client-go/applyconfigurations/core/v1/podspec.go @@ -60,6 +60,7 @@ type PodSpecApplyConfiguration struct { Overhead *corev1.ResourceList `json:"overhead,omitempty"` TopologySpreadConstraints []TopologySpreadConstraintApplyConfiguration `json:"topologySpreadConstraints,omitempty"` SetHostnameAsFQDN *bool `json:"setHostnameAsFQDN,omitempty"` + OS *PodOSApplyConfiguration `json:"os,omitempty"` } // PodSpecApplyConfiguration constructs an declarative configuration of the PodSpec type for use with @@ -398,3 +399,11 @@ func (b *PodSpecApplyConfiguration) WithSetHostnameAsFQDN(value bool) *PodSpecAp b.SetHostnameAsFQDN = &value return b } + +// WithOS sets the OS field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the OS field is set to the value of the last call. +func (b *PodSpecApplyConfiguration) WithOS(value *PodOSApplyConfiguration) *PodSpecApplyConfiguration { + b.OS = value + return b +} diff --git a/staging/src/k8s.io/client-go/applyconfigurations/internal/internal.go b/staging/src/k8s.io/client-go/applyconfigurations/internal/internal.go index 67e776fed81..4cc311da2b0 100644 --- a/staging/src/k8s.io/client-go/applyconfigurations/internal/internal.go +++ b/staging/src/k8s.io/client-go/applyconfigurations/internal/internal.go @@ -5226,6 +5226,13 @@ var schemaYAML = typed.YAMLObject(`types: - name: ip type: scalar: string +- name: io.k8s.api.core.v1.PodOS + map: + fields: + - name: name + type: + scalar: string + default: "" - name: io.k8s.api.core.v1.PodReadinessGate map: fields: @@ -5354,6 +5361,9 @@ var schemaYAML = typed.YAMLObject(`types: elementType: scalar: string elementRelationship: atomic + - name: os + type: + namedType: io.k8s.api.core.v1.PodOS - name: overhead type: map: diff --git a/staging/src/k8s.io/client-go/applyconfigurations/utils.go b/staging/src/k8s.io/client-go/applyconfigurations/utils.go index 5ab96d7da40..9819e945644 100644 --- a/staging/src/k8s.io/client-go/applyconfigurations/utils.go +++ b/staging/src/k8s.io/client-go/applyconfigurations/utils.go @@ -661,6 +661,8 @@ func ForKind(kind schema.GroupVersionKind) interface{} { return &applyconfigurationscorev1.PodDNSConfigOptionApplyConfiguration{} case corev1.SchemeGroupVersion.WithKind("PodIP"): return &applyconfigurationscorev1.PodIPApplyConfiguration{} + case corev1.SchemeGroupVersion.WithKind("PodOS"): + return &applyconfigurationscorev1.PodOSApplyConfiguration{} case corev1.SchemeGroupVersion.WithKind("PodReadinessGate"): return &applyconfigurationscorev1.PodReadinessGateApplyConfiguration{} case corev1.SchemeGroupVersion.WithKind("PodSecurityContext"): From 8a6533089a59ffed0cce561cad8ee2625279c45d Mon Sep 17 00:00:00 2001 From: ravisantoshgudimetla Date: Thu, 28 Oct 2021 17:33:51 -0400 Subject: [PATCH 5/5] testdata: Pod OS field --- .../api/testdata/HEAD/apps.v1.DaemonSet.json | 35 ++++--- .../api/testdata/HEAD/apps.v1.DaemonSet.pb | Bin 7727 -> 7778 bytes .../api/testdata/HEAD/apps.v1.DaemonSet.yaml | 32 +++--- .../api/testdata/HEAD/apps.v1.Deployment.json | 36 ++++--- .../api/testdata/HEAD/apps.v1.Deployment.pb | Bin 8371 -> 8364 bytes .../api/testdata/HEAD/apps.v1.Deployment.yaml | 33 ++++--- .../api/testdata/HEAD/apps.v1.ReplicaSet.json | 21 ++-- .../api/testdata/HEAD/apps.v1.ReplicaSet.pb | Bin 8040 -> 8051 bytes .../api/testdata/HEAD/apps.v1.ReplicaSet.yaml | 18 ++-- .../testdata/HEAD/apps.v1.StatefulSet.json | 82 ++++++++-------- .../api/testdata/HEAD/apps.v1.StatefulSet.pb | Bin 9083 -> 9099 bytes .../testdata/HEAD/apps.v1.StatefulSet.yaml | 78 ++++++++------- .../HEAD/apps.v1beta1.Deployment.json | 38 ++++---- .../testdata/HEAD/apps.v1beta1.Deployment.pb | Bin 8378 -> 8383 bytes .../HEAD/apps.v1beta1.Deployment.yaml | 35 ++++--- .../HEAD/apps.v1beta1.StatefulSet.json | 82 ++++++++-------- .../testdata/HEAD/apps.v1beta1.StatefulSet.pb | Bin 9081 -> 9098 bytes .../HEAD/apps.v1beta1.StatefulSet.yaml | 78 ++++++++------- .../testdata/HEAD/apps.v1beta2.DaemonSet.json | 35 ++++--- .../testdata/HEAD/apps.v1beta2.DaemonSet.pb | Bin 7732 -> 7783 bytes .../testdata/HEAD/apps.v1beta2.DaemonSet.yaml | 32 +++--- .../HEAD/apps.v1beta2.Deployment.json | 36 ++++--- .../testdata/HEAD/apps.v1beta2.Deployment.pb | Bin 8376 -> 8369 bytes .../HEAD/apps.v1beta2.Deployment.yaml | 33 ++++--- .../HEAD/apps.v1beta2.ReplicaSet.json | 21 ++-- .../testdata/HEAD/apps.v1beta2.ReplicaSet.pb | Bin 8045 -> 8056 bytes .../HEAD/apps.v1beta2.ReplicaSet.yaml | 18 ++-- .../HEAD/apps.v1beta2.StatefulSet.json | 82 ++++++++-------- .../testdata/HEAD/apps.v1beta2.StatefulSet.pb | Bin 9088 -> 9104 bytes .../HEAD/apps.v1beta2.StatefulSet.yaml | 78 ++++++++------- .../api/testdata/HEAD/batch.v1.CronJob.json | 9 +- .../api/testdata/HEAD/batch.v1.CronJob.pb | Bin 8307 -> 8311 bytes .../api/testdata/HEAD/batch.v1.CronJob.yaml | 6 +- .../api/testdata/HEAD/batch.v1.Job.json | 31 +++--- .../k8s.io/api/testdata/HEAD/batch.v1.Job.pb | Bin 7896 -> 7946 bytes .../api/testdata/HEAD/batch.v1.Job.yaml | 28 +++--- .../testdata/HEAD/batch.v1beta1.CronJob.json | 9 +- .../testdata/HEAD/batch.v1beta1.CronJob.pb | Bin 8312 -> 8316 bytes .../testdata/HEAD/batch.v1beta1.CronJob.yaml | 6 +- .../HEAD/batch.v1beta1.JobTemplate.json | 11 ++- .../HEAD/batch.v1beta1.JobTemplate.pb | Bin 8248 -> 8263 bytes .../HEAD/batch.v1beta1.JobTemplate.yaml | 8 +- .../k8s.io/api/testdata/HEAD/core.v1.Pod.json | 91 +++++++++--------- .../k8s.io/api/testdata/HEAD/core.v1.Pod.pb | Bin 8040 -> 8100 bytes .../k8s.io/api/testdata/HEAD/core.v1.Pod.yaml | 88 ++++++++--------- .../testdata/HEAD/core.v1.PodTemplate.json | 5 +- .../api/testdata/HEAD/core.v1.PodTemplate.pb | Bin 7691 -> 7723 bytes .../testdata/HEAD/core.v1.PodTemplate.yaml | 2 + .../HEAD/core.v1.ReplicationController.json | 21 ++-- .../HEAD/core.v1.ReplicationController.pb | Bin 8148 -> 8159 bytes .../HEAD/core.v1.ReplicationController.yaml | 18 ++-- .../HEAD/extensions.v1beta1.DaemonSet.json | 37 +++---- .../HEAD/extensions.v1beta1.DaemonSet.pb | Bin 7755 -> 7802 bytes .../HEAD/extensions.v1beta1.DaemonSet.yaml | 34 ++++--- .../HEAD/extensions.v1beta1.Deployment.json | 38 ++++---- .../HEAD/extensions.v1beta1.Deployment.pb | Bin 8384 -> 8389 bytes .../HEAD/extensions.v1beta1.Deployment.yaml | 35 ++++--- .../HEAD/extensions.v1beta1.ReplicaSet.json | 21 ++-- .../HEAD/extensions.v1beta1.ReplicaSet.pb | Bin 8051 -> 8062 bytes .../HEAD/extensions.v1beta1.ReplicaSet.yaml | 18 ++-- 60 files changed, 771 insertions(+), 648 deletions(-) diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.DaemonSet.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.DaemonSet.json index 05243a0eb26..d9ba8655ec1 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.DaemonSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.DaemonSet.json @@ -1533,34 +1533,37 @@ } } ], - "setHostnameAsFQDN": false + "setHostnameAsFQDN": false, + "os": { + "name": "Ê" + } } }, "updateStrategy": { - "type": "șa汸\u003cƋlɋN磋镮ȺPÈ", + "type": "汸\u003cƋlɋN磋镮ȺPÈɥ偁髕ģƗ鐫", "rollingUpdate": { "maxUnavailable": 2, "maxSurge": 3 } }, - "minReadySeconds": 1750503412, - "revisionHistoryLimit": 128240007 + "minReadySeconds": -463159422, + "revisionHistoryLimit": -855944448 }, "status": { - "currentNumberScheduled": -900194589, - "numberMisscheduled": 295177820, - "desiredNumberScheduled": 1576197985, - "numberReady": -702578810, - "observedGeneration": -1989254568785172688, - "updatedNumberScheduled": -855944448, - "numberAvailable": -1556190810, - "numberUnavailable": -487001726, - "collisionCount": -2081947001, + "currentNumberScheduled": -1556190810, + "numberMisscheduled": -487001726, + "desiredNumberScheduled": 929611261, + "numberReady": -1728725476, + "observedGeneration": -6594742865080720976, + "updatedNumberScheduled": -1612961101, + "numberAvailable": 1731921624, + "numberUnavailable": 826023875, + "collisionCount": 619959999, "conditions": [ { - "type": "薑Ȣ#闬輙怀¹bCũw¼ ǫ", - "status": ":$", - "lastTransitionTime": "2082-11-07T20:44:23Z", + "type": "¹bCũw¼ ǫđ槴Ċį軠\u003e桼劑躮", + "status": "9=ȳB鼲糰Eè6苁嗀ĕ佣", + "lastTransitionTime": "2821-04-08T08:07:20Z", "reason": "495", "message": "496" } diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.DaemonSet.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.DaemonSet.pb index cbce71e46f6d655f592bb2b0159e9ad43b348dc6..d7f35cd05531678a8bff93703eaf341aee58e46e 100644 GIT binary patch delta 292 zcmZ2)^T=j`G~>aEGP@Y>ZM?3`$oOjVZ^q4x+cvLf+8|ZGh>3-Z>2Q~n1((XRjXP|P zb?2Py_Itj#`{mSiCw2uK?l`&hX=CHd)l-iwJ~sX3gw;X*mRzrPplW>%Q<=i2d~K)L$= zj2asbpL}<}bK~A6j0T&pe)tCx{?BM}qxa2DHiyIeKXfvC>|c9+Ia5#wm(rn~NzO-C zmLJ-qaD4TViO-gAIns4x{fpfT?4B*$^R#Q?i(Tu4q%3VuY<7CNXVde|8(a^sFniJ6 m_;h;1k*QDiE|%ip*l}}jXNmxW60?b=sTPo6HIrgcVgLZAY@6!< delta 240 zcmaE4v)*QcG-KaHnO%$rHeOd|WPCjNH{)i;^_$l-ZIG&$(&3UgF*EVm#vL}tx^qr; z`#oRW{c`HM6T1QqcL)h^v2id6Fi9~8foNta28A#4ZyjPYXrDaUR%!wx$K$;ZF8%or z1dIZA<~-桼劑躮 + currentNumberScheduled: -1556190810 + desiredNumberScheduled: 929611261 + numberAvailable: 1731921624 + numberMisscheduled: -487001726 + numberReady: -1728725476 + numberUnavailable: 826023875 + observedGeneration: -6594742865080720976 + updatedNumberScheduled: -1612961101 diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.Deployment.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.Deployment.json index 7f7b990bf13..31083694261 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.Deployment.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.Deployment.json @@ -1537,37 +1537,41 @@ } } ], - "setHostnameAsFQDN": false + "setHostnameAsFQDN": false, + "os": { + "name": "c'V{E犓`ɜɅc" + } } }, "strategy": { - "type": "ʔF{ȃ騑ȫ(踶NJđƟÝɹ橽ƴåj", + "type": "Ýɹ橽ƴåj}c殶ėŔ裑烴\u003c暉Ŝ!", "rollingUpdate": { "maxUnavailable": 2, "maxSurge": 3 } }, - "minReadySeconds": 2115665292, - "revisionHistoryLimit": 237456757, - "progressDeadlineSeconds": -1402499324 + "minReadySeconds": -779806398, + "revisionHistoryLimit": 440570496, + "paused": true, + "progressDeadlineSeconds": 1952245732 }, "status": { - "observedGeneration": -8619941635428506201, - "replicas": -380889943, - "updatedReplicas": 466048730, - "readyReplicas": -601845829, - "availableReplicas": 426527089, - "unavailableReplicas": -1890403855, + "observedGeneration": 3465735415490749292, + "replicas": 1535734699, + "updatedReplicas": 1969397344, + "readyReplicas": 1117243224, + "availableReplicas": 1150861753, + "unavailableReplicas": -750110452, "conditions": [ { - "type": "绰爪qĖĖȠ姓ȇ\u003e尪璎妽", - "status": "ĈȖ董缞濪葷cŲ", - "lastUpdateTime": "1999-05-06T18:42:43Z", - "lastTransitionTime": "2109-09-25T13:37:56Z", + "type": "妽4LM桵Ţ宧ʜ", + "status": "ŲNªǕt谍Ã\u0026榠塹", + "lastUpdateTime": "2128-12-14T03:53:25Z", + "lastTransitionTime": "2463-06-07T06:21:23Z", "reason": "491", "message": "492" } ], - "collisionCount": -2046786896 + "collisionCount": 407647568 } } \ No newline at end of file diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.Deployment.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.Deployment.pb index 31efb844076649b35893bfcb067bc6f42e234940..b0ca4fb892d30d45afe40531232f53a03551d9f0 100644 GIT binary patch delta 262 zcmV+h0r~#3L99WL907`v9l8P1vDjMy0i}~P0-yqfI zV9A`xg<~Q%3L?Xu$+_mKy~eb|rD}a+=B~EHm&KImqmk!>v^?gTiN%~D5)cXo2mlZQ z8UPXo2mlZR8UQH5vXqSd|NsC00Wg52iqZi%0Z8P}^P&eDdkE~t#IE@Nu#7MetLLTM z1sLGGimL}8xr1ioqy#98@~E2q|NsC00WwAk5ap)5G)ztAp|!=L<*uj7oDvkpvQEOP z$CY&Gu#LlmCg!G~<)OJE12j1?Dg!h*GBOAVwZ-e#5)c472ngfs_JBGN065r=-;@ME M(CVNJT=9w`b6`~6%$Xa z)_AdF+wra=6OYY5Jon_zXDjy}+j4kmmXH7!8wY~`lN5sxh-Q{z(CGR7@&miU*I9E5 zEf_pn=FNNj>pu`MN=;+rSbloX+@2X<)^{)ptX#R_)IYF<#I3b+?=dQToV4*YqsGV2 zr+)na3+EaIa>+d3z2SMss=_1Fj!ZkT;OX+oC)(|vZdmnvQs2{MdxeCLbex#>V&dZG zd*(gczv{)r?a4尪璎妽 - observedGeneration: -8619941635428506201 - readyReplicas: -601845829 - replicas: -380889943 - unavailableReplicas: -1890403855 - updatedReplicas: 466048730 + status: ŲNªǕt谍Ã&榠塹 + type: 妽4LM桵Ţ宧ʜ + observedGeneration: 3465735415490749292 + readyReplicas: 1117243224 + replicas: 1535734699 + unavailableReplicas: -750110452 + updatedReplicas: 1969397344 diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.json index eb54d883944..79a1559b75b 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.json @@ -1542,21 +1542,24 @@ } } ], - "setHostnameAsFQDN": true + "setHostnameAsFQDN": true, + "os": { + "name": "+\u0026ɃB沅零șPî壣" + } } } }, "status": { - "replicas": 1205668420, - "fullyLabeledReplicas": -1754098513, - "readyReplicas": -877836536, - "availableReplicas": 138992869, - "observedGeneration": -7169014491472696647, + "replicas": 157451826, + "fullyLabeledReplicas": -1872689134, + "readyReplicas": 1791185938, + "availableReplicas": 1559072561, + "observedGeneration": 5029735218517286947, "conditions": [ { - "type": "零șPî壣V礆á¤拈tY圻醆锛[", - "status": "嬜Š\u0026?鳢.ǀŭ瘢颦z疵", - "lastTransitionTime": "2455-07-16T22:37:15Z", + "type": "Y圻醆锛[M牍Ƃ氙吐ɝ鶼", + "status": "ŭ瘢颦z疵悡nȩ純z邜", + "lastTransitionTime": "2124-10-20T09:17:54Z", "reason": "491", "message": "492" } diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.pb index d50b76310547a8a30a5ebf9eee5ec9c78ec15702..e86bafced65deb1638f1a5de584a73b233102248 100644 GIT binary patch delta 189 zcmV;u07C!hKJz}190Adh9l8OZk=W(|t&_h2!vX2Dg91_;9{qacp9{L}dV|Ns918g&S=jEYMTl8}Uh`Tzg_{{a}I!1}L+vCZa1Ad;w! z)&?lCp0?)&GEE8`S>>F&>4t{sl$%>k=ZTHRg66Q9<&coco$0o`5*fv<=a{1DqNaN1 rmbK=Bp>D{jALq1`dg+3k8VCr&nX;J@5C9?rG&wOU12j1@8UP{yg_~i( delta 178 zcmV;j08Rh%KIlG>90A6W9l8OBk=W(|m6N{#!vWE=g91_o@0{Qv*|{{blFxuZfdQwk#Ko3_ZA zP{Xd}qoY>mq=v(x!ldSlh;&)yoV)3UhUt`>TM`-NtenN5CO_%3qAtgP#jWRFM12j1?Dg!h*G8zCP0O~$oGXMYp diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.yaml index 7d7421bb35a..dcc2e2a011a 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.ReplicaSet.yaml @@ -742,6 +742,8 @@ spec: nodeName: "395" nodeSelector: "391": "392" + os: + name: +&ɃB沅零șPî壣 overhead: D傕Ɠ栊闔虝巒瀦ŕ: "124" preemptionPolicy: Iƭij韺ʧ> @@ -1055,14 +1057,14 @@ spec: storagePolicyName: "105" volumePath: "103" status: - availableReplicas: 138992869 + availableReplicas: 1559072561 conditions: - - lastTransitionTime: "2455-07-16T22:37:15Z" + - lastTransitionTime: "2124-10-20T09:17:54Z" message: "492" reason: "491" - status: 嬜Š&?鳢.ǀŭ瘢颦z疵 - type: 零șPî壣V礆á¤拈tY圻醆锛[ - fullyLabeledReplicas: -1754098513 - observedGeneration: -7169014491472696647 - readyReplicas: -877836536 - replicas: 1205668420 + status: ŭ瘢颦z疵悡nȩ純z邜 + type: Y圻醆锛[M牍Ƃ氙吐ɝ鶼 + fullyLabeledReplicas: -1872689134 + observedGeneration: 5029735218517286947 + readyReplicas: 1791185938 + replicas: 157451826 diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.json index e54bd8b897f..ce0362e4b21 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.json @@ -1537,7 +1537,10 @@ } } ], - "setHostnameAsFQDN": false + "setHostnameAsFQDN": false, + "os": { + "name": "c'V{E犓`ɜɅc" + } } }, "volumeClaimTemplates": [ @@ -1547,11 +1550,11 @@ "generateName": "492", "namespace": "493", "selfLink": "494", - "uid": "4LM桵Ţ宧ʜ嵹ʌ5Ë}", - "resourceVersion": "932117408350471144", - "generation": 4446917721686139397, - "creationTimestamp": "2013-04-06T12:27:00Z", - "deletionGracePeriodSeconds": -2948232978388571762, + "uid": "`", + "resourceVersion": "5863709333089187294", + "generation": 6477367096865964611, + "creationTimestamp": "2097-02-11T08:53:04Z", + "deletionGracePeriodSeconds": 5497143372256332223, "labels": { "496": "497" }, @@ -1563,9 +1566,9 @@ "apiVersion": "500", "kind": "501", "name": "502", - "uid": "憲Ħ焵i,ŋ", + "uid": "Z穑S13t", "controller": false, - "blockOwnerDeletion": false + "blockOwnerDeletion": true } ], "finalizers": [ @@ -1575,7 +1578,7 @@ "managedFields": [ { "manager": "505", - "operation": "Ʀ§:Ǫ魚Emv看ƜZ穑S", + "operation": "董缞濪葷cŲNª", "apiVersion": "506", "fieldsType": "507", "subresource": "508" @@ -1584,30 +1587,33 @@ }, "spec": { "accessModes": [ - "Is{豘ñ澀j劎笜釼鮭Ɯ" + "豘ñ澀j劎笜釼鮭Ɯ镶Eq荣¿S5Tƙ" ], "selector": { "matchLabels": { - "789--9opn2/8.--4-___..1.N_l..-_.1-j---30q.-2_9.9-..-JA-H-C5-8_--4.__z22": "E_3-a__w.___-_-mv9h.-7.s__-_g6_-_N4-R._P-___0..X" + "N_l..-_.1-j---30q.-2_9.9-..-JA-H-5": "8_--4.__z2-.T2I" }, "matchExpressions": [ { - "key": "R_-U7-F34-6.-_-O-F__h9", - "operator": "Exists" + "key": "7--4a06y7-dt--5--8-69vc31o-865227qok-3-v8e7wfk4ek.hi93f---z-4-q24gt/Mw.___-_-mv9h.-7.s__-_g6_-_No", + "operator": "In", + "values": [ + "D.9-F_A-t0-o.7_a-t.-d6h__._-.Z-Q.1-B.__--wr_-Iu9._.UT-o" + ] } ] }, "resources": { "limits": { - "獪霛圦Ƶ": "159" + "xġ疾ɇù扻喥|{軈ĕʦ竳÷ 骵蓧": "587" }, "requests": { - "-劺b": "142" + "": "856" } }, "volumeName": "515", "storageClassName": "516", - "volumeMode": "ê婼SƸ炃\u0026-Ƹ绿浠穸æǷ^ɘʘ", + "volumeMode": "涼ĥ訛\\`ĝňYuĞyÜ蛃慕ʓvâ", "dataSource": { "apiGroup": "517", "kind": "518", @@ -1620,19 +1626,19 @@ } }, "status": { - "phase": "h蹤?攫垳ȿūDmÒ侠泊蠻毜鷟傚罢ț", + "phase": "忣àÂƺ琰Ȃ芋醳鮩!廊臚cɶċ", "accessModes": [ - "\u003e7u?=ȳ皆Cds壋" + "v}鮩澊聝楧" ], "capacity": { - "H%": "764" + "问Ð7ɞŶJŖ)j{驟ʦcȃ": "657" }, "conditions": [ { - "type": "A麭T棞詢¡ɅǏõxġ疾ɇ", - "status": "=击S", - "lastProbeTime": "2806-03-31T09:12:56Z", - "lastTransitionTime": "2430-10-28T09:53:06Z", + "type": "ņȎZȐ樾'Ż£劾ů", + "status": "Q¢鬣_棈Ý泷", + "lastProbeTime": "2156-05-28T07:29:36Z", + "lastTransitionTime": "2066-08-08T11:27:30Z", "reason": "523", "message": "524" } @@ -1641,34 +1647,34 @@ } ], "serviceName": "525", - "podManagementPolicy": "軈ĕʦ竳÷ 骵蓧應ĸ簋涼ĥ訛\\`ĝňY", + "podManagementPolicy": "婵=ǻ", "updateStrategy": { - "type": "Ä嚕uʟ膠ĉ班康%m忣àÂƺ琰Ȃ", + "type": "ɝÔȗ$`Ž#", "rollingUpdate": { - "partition": 804652982 + "partition": -1644040574 } }, - "revisionHistoryLimit": -827620894, - "minReadySeconds": -619299042 + "revisionHistoryLimit": -1205784111, + "minReadySeconds": 1505300966 }, "status": { - "observedGeneration": 5447372700200122498, - "replicas": -2070785865, - "readyReplicas": 1702437783, - "currentReplicas": -1694062357, - "updatedReplicas": -296989682, + "observedGeneration": 7422250233075984176, + "replicas": -326265137, + "readyReplicas": 1683394621, + "currentReplicas": 1862659237, + "updatedReplicas": 798811297, "currentRevision": "526", "updateRevision": "527", - "collisionCount": 1261428189, + "collisionCount": -1290326833, "conditions": [ { - "type": "鮩澊聝楧p问Ð7ɞŶJŖ)j{驟ʦ", - "status": "N崑-ņȎ", - "lastTransitionTime": "2128-12-14T15:28:07Z", + "type": "´Aƺå嫹^Ȇɀ*ǹ", + "status": "蟷尨BABȳ", + "lastTransitionTime": "2464-04-30T23:47:03Z", "reason": "528", "message": "529" } ], - "availableReplicas": -346713296 + "availableReplicas": -1012893423 } } \ No newline at end of file diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.pb index d66686eedfe23293c591bd95a7185ac5893ec03b..5ccd618b923e76d219ffb7898b44fad5e17b6df0 100644 GIT binary patch delta 921 zcmXAnZA?>F7{_}{Aa|FD&E1x`W*S-+btLE7-uFvpB8{jlo0$`r$zCp`DonC9xLOo+ zAR@352~7vML7}!*0fm8`?Vwn)-WFSu&G>1qp50c;SqejoMaLtDprD!|Xg9Jk zcap(z)f3Flk0=WhswZksUEZ0P$W^l>1ZRWbaZet$UY$83%_#AlRU%1!B)n66TukF>|JFtwKDi>UIc(9M6sC!L={f6maqTxuydR^!^5-{tJOR003wPG-xF0 zI_IYMn_yEBh~P_?P)`7k_&OKWu@E~QxW4i$Be(T4LIB&ua^SQ82f>N8z)668Y`rKF zA|R^4F2V|IunPc9heS|$SRh1VPZe;$=eDwBu@ae2hSag4PivCCRQKM)$&sVdusU>7 zIn}@9bx8s5&!&>rQ3NZI7lM*sYG0ho_D!eTRd)ewcKu+_M3Oytk?S~2 zDRH-Y!l#5T7){t3ZE#BJ<1!P+`mr~8z# z_=Z$05tQBW)Q|Y;U5S8pDJUwzZmHF$gri0j{j=xEzpoo~W)uw!-Iy#i=-?el3jP6- z&MAg0kjJlVz7{JpVucx>^j&)Jt(w%;61)&?zuk53$qTrUEjRw|_~q$}+@S>T{F-n4 z2A%#b+HrX--BxF~J{h_5d}VXZRsYREL2+n#@Nq%y#F81AhrsaIo~n+0dx2QAU~b?$m^@9k|#mp?1!4L8JUZb z7+6s%t>eQYHl@NXXlr3~U~P*n!oqD!+wG6hjOwyvG2X8%S;CTK8WnfiogdG6&XYIK z`#$e+?Rj3`_ZCv;J6Pe1$=K`y&#HK$&-MV8ddZ)%Kw4f??S$2;YF%c*@IiT-GM zR0s$2J|TK1e~IQ@=Sa+ECJBO}Oja{(q8NgpDC>pPzxQLEH-D?H(P{@m9WISdb)e^d zqJxVsJC_jm_KFSd26Po|BJ>bQ<65!nRw^K!j~?HVc5Q=_$)vKXPC;Tm3xRSXpjb^~ z>ob9cVAbNdGU=^r`Bw6|GQPu7sK2RbV<90hH4v;=RE_FCXl;|HJ^Zvd*KtB{_DDbY z6vwO*p3L~L&FJe5=o;z!am6+UveY^FdX&K@Y1 zn{d1tt3b;eS#Xd6^=1lKaKM6(K|RYJvtea*XO6di(+cww7Sh0v3!&Mj%#393+zjBA zoEM{<6q?}!i}BBMp1jAs+F04%i=f+%$#<^r6bB}R;YfBqJ@I}EfBDHACq|qymlS{W zDe)1(?v?J2W`{7{d(7#b)!B&T?W+BrJ|Im*`1k^+j7Md6P;_*sW~3>X7@JMqkZ%rsb|iHzeeqBgKr8w4g7?bl{D|De zrMjiwNg)y6)FRA}@f>f@B&5EntQ{-U#(E2{)Vm&chW~l-3Ld1PeR!o%cv<55ene|u zel+lt`|d9v>f-*~^`|BMjjM}KCdw-Qyyq=ED+ybAJkx)#lxT5aOBDpB;rHbH!`B*X zQKJ$LiE~c*yKCZ&;7R3bnD1k9!|B-G^x)PLZAxe)AHY`c7jE~1bXT^g5-!8x`fCY; X%YZi4Vt8BgRN&V~|2NR9jH>?t_PmJ0 diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.yaml index 7a812f43f5e..d8cc0762514 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1.StatefulSet.yaml @@ -31,10 +31,10 @@ metadata: selfLink: "5" uid: "7" spec: - minReadySeconds: -619299042 - podManagementPolicy: 軈ĕʦ竳÷ 骵蓧應ĸ簋涼ĥ訛\`ĝňY + minReadySeconds: 1505300966 + podManagementPolicy: 婵=ǻ replicas: 896585016 - revisionHistoryLimit: -827620894 + revisionHistoryLimit: -1205784111 selector: matchExpressions: - key: 50-u--25cu87--r7p-w1e67-8pj5t-kl-v0q6b68--nu5oii38fn-8.629b-jd-8c45-0-8--6n--w0--w---196g8d--iv1-5--5ht-a-29--0qso796/3___47._49pIB_o61ISU4--A_.XK_._M99 @@ -740,6 +740,8 @@ spec: nodeName: "395" nodeSelector: "391": "392" + os: + name: c'V{E犓`ɜɅc overhead: D輷: "792" preemptionPolicy: m珢\%傢z¦Ā竚ĐȌƨǴ叆 @@ -1058,42 +1060,42 @@ spec: volumePath: "103" updateStrategy: rollingUpdate: - partition: 804652982 - type: Ä嚕uʟ膠ĉ班康%m忣àÂƺ琰Ȃ + partition: -1644040574 + type: ɝÔȗ$`Ž# volumeClaimTemplates: - metadata: annotations: "498": "499" clusterName: "504" - creationTimestamp: "2013-04-06T12:27:00Z" - deletionGracePeriodSeconds: -2948232978388571762 + creationTimestamp: "2097-02-11T08:53:04Z" + deletionGracePeriodSeconds: 5497143372256332223 finalizers: - "503" generateName: "492" - generation: 4446917721686139397 + generation: 6477367096865964611 labels: "496": "497" managedFields: - apiVersion: "506" fieldsType: "507" manager: "505" - operation: Ʀ§:Ǫ魚Emv看ƜZ穑S + operation: 董缞濪葷cŲNª subresource: "508" name: "491" namespace: "493" ownerReferences: - apiVersion: "500" - blockOwnerDeletion: false + blockOwnerDeletion: true controller: false kind: "501" name: "502" - uid: 憲Ħ焵i,ŋ - resourceVersion: "932117408350471144" + uid: Z穑S13t + resourceVersion: "5863709333089187294" selfLink: "494" - uid: 4LM桵Ţ宧ʜ嵹ʌ5Ë} + uid: '`' spec: accessModes: - - Is{豘ñ澀j劎笜釼鮭Ɯ + - 豘ñ澀j劎笜釼鮭Ɯ镶Eq荣¿S5Tƙ dataSource: apiGroup: "517" kind: "518" @@ -1104,44 +1106,46 @@ spec: name: "522" resources: limits: - 獪霛圦Ƶ: "159" + xġ疾ɇù扻喥|{軈ĕʦ竳÷ 骵蓧: "587" requests: - -劺b: "142" + "": "856" selector: matchExpressions: - - key: R_-U7-F34-6.-_-O-F__h9 - operator: Exists + - key: 7--4a06y7-dt--5--8-69vc31o-865227qok-3-v8e7wfk4ek.hi93f---z-4-q24gt/Mw.___-_-mv9h.-7.s__-_g6_-_No + operator: In + values: + - D.9-F_A-t0-o.7_a-t.-d6h__._-.Z-Q.1-B.__--wr_-Iu9._.UT-o matchLabels: - 789--9opn2/8.--4-___..1.N_l..-_.1-j---30q.-2_9.9-..-JA-H-C5-8_--4.__z22: E_3-a__w.___-_-mv9h.-7.s__-_g6_-_N4-R._P-___0..X + N_l..-_.1-j---30q.-2_9.9-..-JA-H-5: 8_--4.__z2-.T2I storageClassName: "516" - volumeMode: ê婼SƸ炃&-Ƹ绿浠穸æǷ^ɘʘ + volumeMode: 涼ĥ訛\`ĝňYuĞyÜ蛃慕ʓvâ volumeName: "515" status: accessModes: - - '>7u?=ȳ皆Cds壋' + - v}鮩澊聝楧 capacity: - H%: "764" + 问Ð7ɞŶJŖ)j{驟ʦcȃ: "657" conditions: - - lastProbeTime: "2806-03-31T09:12:56Z" - lastTransitionTime: "2430-10-28T09:53:06Z" + - lastProbeTime: "2156-05-28T07:29:36Z" + lastTransitionTime: "2066-08-08T11:27:30Z" message: "524" reason: "523" - status: =击S - type: A麭T棞詢¡ɅǏõxġ疾ɇ - phase: h蹤?攫垳ȿūDmÒ侠泊蠻毜鷟傚罢ț + status: Q¢鬣_棈Ý泷 + type: ņȎZȐ樾'Ż£劾ů + phase: 忣àÂƺ琰Ȃ芋醳鮩!廊臚cɶċ status: - availableReplicas: -346713296 - collisionCount: 1261428189 + availableReplicas: -1012893423 + collisionCount: -1290326833 conditions: - - lastTransitionTime: "2128-12-14T15:28:07Z" + - lastTransitionTime: "2464-04-30T23:47:03Z" message: "529" reason: "528" - status: N崑-ņȎ - type: 鮩澊聝楧p问Ð7ɞŶJŖ)j{驟ʦ - currentReplicas: -1694062357 + status: 蟷尨BABȳ + type: ´Aƺå嫹^Ȇɀ*ǹ + currentReplicas: 1862659237 currentRevision: "526" - observedGeneration: 5447372700200122498 - readyReplicas: 1702437783 - replicas: -2070785865 + observedGeneration: 7422250233075984176 + readyReplicas: 1683394621 + replicas: -326265137 updateRevision: "527" - updatedReplicas: -296989682 + updatedReplicas: 798811297 diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.json index 996b6d53a93..691a5171630 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.json @@ -1537,40 +1537,44 @@ } } ], - "setHostnameAsFQDN": false + "setHostnameAsFQDN": false, + "os": { + "name": "c'V{E犓`ɜɅc" + } } }, "strategy": { - "type": "ʔF{ȃ騑ȫ(踶NJđƟÝɹ橽ƴåj", + "type": "Ýɹ橽ƴåj}c殶ėŔ裑烴\u003c暉Ŝ!", "rollingUpdate": { "maxUnavailable": 2, "maxSurge": 3 } }, - "minReadySeconds": 2115665292, - "revisionHistoryLimit": 237456757, + "minReadySeconds": -779806398, + "revisionHistoryLimit": 440570496, + "paused": true, "rollbackTo": { - "revision": 1498428055681994500 + "revision": -7008927308432218140 }, - "progressDeadlineSeconds": -164140734 + "progressDeadlineSeconds": -43713883 }, "status": { - "observedGeneration": -1635909846206320942, - "replicas": -253906853, - "updatedReplicas": -602665165, - "readyReplicas": -859094691, - "availableReplicas": -1624946983, - "unavailableReplicas": -779806398, + "observedGeneration": 6595930309397245706, + "replicas": -98839735, + "updatedReplicas": -691251015, + "readyReplicas": -408821490, + "availableReplicas": 376262938, + "unavailableReplicas": 632292328, "conditions": [ { - "type": "mv看ƜZ", - "status": "ȇ\u003e尪璎妽4LM桵Ţ宧ʜ", - "lastUpdateTime": "2322-02-12T18:39:07Z", - "lastTransitionTime": "2398-05-12T06:43:28Z", + "type": "ĈȖ董缞濪葷cŲ", + "status": "5Ë", + "lastUpdateTime": "2909-01-09T22:03:18Z", + "lastTransitionTime": "2294-05-20T00:00:03Z", "reason": "491", "message": "492" } ], - "collisionCount": 165914268 + "collisionCount": 955020766 } } \ No newline at end of file diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.pb index 3bbd25819167c23ad7da6a6cba9b38122a5dd3bc..73b5b1b32208de7dacc68a838181321af3845cd7 100644 GIT binary patch delta 262 zcmdnxxZiPtBIAsSO1l`JY`h!I$hdT}CDQ_?7OTy-nLf%`E@Bek;!9Q!t9E_fH96tr zoRh7|N@iS2hv%N$`E2FhV_Oa{&8kg)wr<;z=|`u$SUmB0^A?+DvpSE?QJnlyUbz0y zrYSvt{{sP|LBrCnONkUJs+^f2X``fT7Pk_OSgQI!Xq={+*3>JNd+V}ng+v#xc^~U4O IQVdEA0PO{dBme*a delta 271 zcmdn*xXW>ZBID$VO1l_OZoC`K$T(@TCDQ_?kCvNnGkuh)S2E>NJT=9w`b6`~6%$Xa z)_AdF+wra=6OYY5Jon_zXDjy}+j4kmmXH7!8wY~`lN5sxh-Q{z(CGR7@&miU*I9E5 zEf}1*I9le-d)(D?|EY+_p-Xo+{s#d@sUAj-OLuoanlZI?*-J)&+Yi3AK_nzL&%5y8 zFIY{!!p+{PKYxPR8izJb>469vIdgI3mOY=-eQZvYkmQMWyQdpgJ)hL~blF}LAKzyS zw;o;eblvh(bCj4(EDg1Qgpm;k$LY?!n=}O&tT;F(OnSK1NPxlOZqwRlf51jN%sJcV JFU6q5003P@iTeNm diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.yaml index 49136a7a2e9..8b19696db5b 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.Deployment.yaml @@ -31,12 +31,13 @@ metadata: selfLink: "5" uid: "7" spec: - minReadySeconds: 2115665292 - progressDeadlineSeconds: -164140734 + minReadySeconds: -779806398 + paused: true + progressDeadlineSeconds: -43713883 replicas: 896585016 - revisionHistoryLimit: 237456757 + revisionHistoryLimit: 440570496 rollbackTo: - revision: 1498428055681994500 + revision: -7008927308432218140 selector: matchExpressions: - key: 50-u--25cu87--r7p-w1e67-8pj5t-kl-v0q6b68--nu5oii38fn-8.629b-jd-8c45-0-8--6n--w0--w---196g8d--iv1-5--5ht-a-29--0qso796/3___47._49pIB_o61ISU4--A_.XK_._M99 @@ -47,7 +48,7 @@ spec: rollingUpdate: maxSurge: 3 maxUnavailable: 2 - type: ʔF{ȃ騑ȫ(踶NJđƟÝɹ橽ƴåj + type: Ýɹ橽ƴåj}c殶ėŔ裑烴<暉Ŝ! template: metadata: annotations: @@ -746,6 +747,8 @@ spec: nodeName: "395" nodeSelector: "391": "392" + os: + name: c'V{E犓`ɜɅc overhead: D輷: "792" preemptionPolicy: m珢\%傢z¦Ā竚ĐȌƨǴ叆 @@ -1063,17 +1066,17 @@ spec: storagePolicyName: "105" volumePath: "103" status: - availableReplicas: -1624946983 - collisionCount: 165914268 + availableReplicas: 376262938 + collisionCount: 955020766 conditions: - - lastTransitionTime: "2398-05-12T06:43:28Z" - lastUpdateTime: "2322-02-12T18:39:07Z" + - lastTransitionTime: "2294-05-20T00:00:03Z" + lastUpdateTime: "2909-01-09T22:03:18Z" message: "492" reason: "491" - status: ȇ>尪璎妽4LM桵Ţ宧ʜ - type: mv看ƜZ - observedGeneration: -1635909846206320942 - readyReplicas: -859094691 - replicas: -253906853 - unavailableReplicas: -779806398 - updatedReplicas: -602665165 + status: 5Ë + type: ĈȖ董缞濪葷cŲ + observedGeneration: 6595930309397245706 + readyReplicas: -408821490 + replicas: -98839735 + unavailableReplicas: 632292328 + updatedReplicas: -691251015 diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.json index 280b1f15e9e..471ecab54e4 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.json @@ -1537,7 +1537,10 @@ } } ], - "setHostnameAsFQDN": false + "setHostnameAsFQDN": false, + "os": { + "name": "c'V{E犓`ɜɅc" + } } }, "volumeClaimTemplates": [ @@ -1547,11 +1550,11 @@ "generateName": "492", "namespace": "493", "selfLink": "494", - "uid": "4LM桵Ţ宧ʜ嵹ʌ5Ë}", - "resourceVersion": "932117408350471144", - "generation": 4446917721686139397, - "creationTimestamp": "2013-04-06T12:27:00Z", - "deletionGracePeriodSeconds": -2948232978388571762, + "uid": "`", + "resourceVersion": "5863709333089187294", + "generation": 6477367096865964611, + "creationTimestamp": "2097-02-11T08:53:04Z", + "deletionGracePeriodSeconds": 5497143372256332223, "labels": { "496": "497" }, @@ -1563,9 +1566,9 @@ "apiVersion": "500", "kind": "501", "name": "502", - "uid": "憲Ħ焵i,ŋ", + "uid": "Z穑S13t", "controller": false, - "blockOwnerDeletion": false + "blockOwnerDeletion": true } ], "finalizers": [ @@ -1575,7 +1578,7 @@ "managedFields": [ { "manager": "505", - "operation": "Ʀ§:Ǫ魚Emv看ƜZ穑S", + "operation": "董缞濪葷cŲNª", "apiVersion": "506", "fieldsType": "507", "subresource": "508" @@ -1584,30 +1587,33 @@ }, "spec": { "accessModes": [ - "Is{豘ñ澀j劎笜釼鮭Ɯ" + "豘ñ澀j劎笜釼鮭Ɯ镶Eq荣¿S5Tƙ" ], "selector": { "matchLabels": { - "789--9opn2/8.--4-___..1.N_l..-_.1-j---30q.-2_9.9-..-JA-H-C5-8_--4.__z22": "E_3-a__w.___-_-mv9h.-7.s__-_g6_-_N4-R._P-___0..X" + "N_l..-_.1-j---30q.-2_9.9-..-JA-H-5": "8_--4.__z2-.T2I" }, "matchExpressions": [ { - "key": "R_-U7-F34-6.-_-O-F__h9", - "operator": "Exists" + "key": "7--4a06y7-dt--5--8-69vc31o-865227qok-3-v8e7wfk4ek.hi93f---z-4-q24gt/Mw.___-_-mv9h.-7.s__-_g6_-_No", + "operator": "In", + "values": [ + "D.9-F_A-t0-o.7_a-t.-d6h__._-.Z-Q.1-B.__--wr_-Iu9._.UT-o" + ] } ] }, "resources": { "limits": { - "獪霛圦Ƶ": "159" + "xġ疾ɇù扻喥|{軈ĕʦ竳÷ 骵蓧": "587" }, "requests": { - "-劺b": "142" + "": "856" } }, "volumeName": "515", "storageClassName": "516", - "volumeMode": "ê婼SƸ炃\u0026-Ƹ绿浠穸æǷ^ɘʘ", + "volumeMode": "涼ĥ訛\\`ĝňYuĞyÜ蛃慕ʓvâ", "dataSource": { "apiGroup": "517", "kind": "518", @@ -1620,19 +1626,19 @@ } }, "status": { - "phase": "h蹤?攫垳ȿūDmÒ侠泊蠻毜鷟傚罢ț", + "phase": "忣àÂƺ琰Ȃ芋醳鮩!廊臚cɶċ", "accessModes": [ - "\u003e7u?=ȳ皆Cds壋" + "v}鮩澊聝楧" ], "capacity": { - "H%": "764" + "问Ð7ɞŶJŖ)j{驟ʦcȃ": "657" }, "conditions": [ { - "type": "A麭T棞詢¡ɅǏõxġ疾ɇ", - "status": "=击S", - "lastProbeTime": "2806-03-31T09:12:56Z", - "lastTransitionTime": "2430-10-28T09:53:06Z", + "type": "ņȎZȐ樾'Ż£劾ů", + "status": "Q¢鬣_棈Ý泷", + "lastProbeTime": "2156-05-28T07:29:36Z", + "lastTransitionTime": "2066-08-08T11:27:30Z", "reason": "523", "message": "524" } @@ -1641,34 +1647,34 @@ } ], "serviceName": "525", - "podManagementPolicy": "軈ĕʦ竳÷ 骵蓧應ĸ簋涼ĥ訛\\`ĝňY", + "podManagementPolicy": "婵=ǻ", "updateStrategy": { - "type": "Ä嚕uʟ膠ĉ班康%m忣àÂƺ琰Ȃ", + "type": "ɝÔȗ$`Ž#", "rollingUpdate": { - "partition": 804652982 + "partition": -1644040574 } }, - "revisionHistoryLimit": -827620894, - "minReadySeconds": -619299042 + "revisionHistoryLimit": -1205784111, + "minReadySeconds": 1505300966 }, "status": { - "observedGeneration": 186539306115504993, - "replicas": 807518438, - "readyReplicas": -425205512, - "currentReplicas": 214266202, - "updatedReplicas": 702030092, + "observedGeneration": 2345785178116014414, + "replicas": 923301621, + "readyReplicas": 2036280873, + "currentReplicas": 2102009515, + "updatedReplicas": -1974512490, "currentRevision": "526", "updateRevision": "527", - "collisionCount": 1054770378, + "collisionCount": -1001798049, "conditions": [ { - "type": "gWǰ绿络aw壳Ĝxɮǻ蝀}", - "status": "驟ʦcȃ/ILǓ巟軷p羯孛", - "lastTransitionTime": "2919-04-11T18:57:19Z", + "type": "Ǒl徙蔿Yċʤw", + "status": "ǹ脡È6", + "lastTransitionTime": "2744-07-10T16:37:22Z", "reason": "528", "message": "529" } ], - "availableReplicas": 597030717 + "availableReplicas": -180607525 } } \ No newline at end of file diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta1.StatefulSet.pb index d93e9dd38d05d1f7f6750bed536f803342197039..66f72dd0cb03472d255353744348da48feddc148 100644 GIT binary patch delta 923 zcmW+ze@qis9PhPZ-W~}ww=FZ>mcX&7GkM4LejnMANrnTmnK^MAu;gGBbzs(DDky9r zLj+bPp{ZaTg3yXkoVtxzrj<79wb0hgME%E~n@)SZZXrXXiDV}19q*6N`@B!y_xt(0 z?_1vNet&?({_+%E#LoQuM=gd;cuUM<=B|>NJLX5PclgX!kmp$cNqbqw?X625PablR z|K@-o1}vOxClD|;1T2Yw+lbXMFY%JVinPqKEG@})Nn~VBQoB~v^!@(F)ulMTbU6Ji z&uaQ8;$3`t^Twl-AJhP&mtgb~zgXpx!R5v`fMq*R+iez}W=Omy6Yy-av#yQkNYf?> z+lvU>hJbTp8vxpQg3vww%%xE+GOc@N9r0hbM5m2vfk7aaB9I7=1+4R)D|oddI~Xi$ z)(`umk!^g{{4wHfPz=`XkBw)B!pR=>g7#e~Jv8xkyB_L|4W>?IPS2>b(Xs6GdEGln z?nEYSkb}((x64)hp|`T|wFW0)uK3C(zK2XVE1RH;hE7UU>Y0;Qj`J0*1Za>*e6p8wY>^D(S+>+Q=kPe#U}Kr;m_-0Bk|tqeX-F4>T!Mepmu05 z=o@wp-*7w^2=v$VW|7WVGd2VKAYw@S-3|HI#NZ2R#m zor{zG+VXsX_37gHua>oeJI_;V3Qo^W{k>+xP+;y_?X%VUhLKQ$KrH|B`$^yPRq^9u zkiX#BlMWx#k3_0teW{bJ1io-V?;2No1(Z4Z&-LzFlo^#tMo9Uy+n1LDM(GM>Gm)nM E0phfExBvhE delta 857 zcmW-deM}Q)9LIat)LhQRbeBc8(?94D&BA=n-u138B+Q8eF=3g3En_d)P3L_1gK5MU zqA_4mkk(nWVhEh{3R|&|B3pAUwh9?{w52Xf7MDmiW7K#r{l|nq_GTRVl;@An^L>8L zFTec0-@wlQ8u}^Zx64%-r0>UvpCibXa1AP<%f93Tba~@9RMdw5j^I|##}E)K3E`q3 zxa##>(+7G~UKrJ;#*3mR-zr|@mEakc@VQuq@o-MBi+6G!hT%BxdG()rsqPzp*4AOz z)p%FXX1DCVbT88-rI!Quk+8G!t$hyM$~zenf~8*5dwx=5#yR=WmW5z7EIFMPujMEd zu2T?P00HH0o~X#h=ErOD6Q#sZecK5`4CchojQHi2@)$P@;i-f05;BUDyV_5Oqm>m+ z#Af^re68`_L`fXh#8^%yY`B%-eZ)H42DCtC@9LX_R(Xb}A_#sO-|6xC0Pr0?@-4g7 zO9Q|GK@ez~p~J5`92Glw;1ytz7KBqQOE~KV7uX{R;Y*GUtsH2kh27GJx-VETCozrE>h|ego zeEQ49!QxqIA6-134=Hko z8a1xXF7^_(TCF$RLSoq9-PHJAyM@9!G5?Bm&26{9rCAqDo8`)iXWuci7u11b%$Q6n z>3OL%A)DcGy|+)DF{Xoh>bClWd1LsCuhi=c7e1{4c$IQa8yYxXjF>%=+Gm6kS|+`z zO`982B*mZ082!@)Kd}Z&g_d5T?>*_B`s>9@c#y`Mm;6 z&-R|RzWMLZ5qV|xxAKoC1N+~;IREHZw7jLe2Ex-=?0f#VwYdo=4}6lJh6x*4anDI@ zEUAhei&OcmdA;ilL6+i?V(jZe_tsra`LLFbnA!9ZWA>(&7$&ieSg1$(7u?=ȳ皆Cds壋' + - v}鮩澊聝楧 capacity: - H%: "764" + 问Ð7ɞŶJŖ)j{驟ʦcȃ: "657" conditions: - - lastProbeTime: "2806-03-31T09:12:56Z" - lastTransitionTime: "2430-10-28T09:53:06Z" + - lastProbeTime: "2156-05-28T07:29:36Z" + lastTransitionTime: "2066-08-08T11:27:30Z" message: "524" reason: "523" - status: =击S - type: A麭T棞詢¡ɅǏõxġ疾ɇ - phase: h蹤?攫垳ȿūDmÒ侠泊蠻毜鷟傚罢ț + status: Q¢鬣_棈Ý泷 + type: ņȎZȐ樾'Ż£劾ů + phase: 忣àÂƺ琰Ȃ芋醳鮩!廊臚cɶċ status: - availableReplicas: 597030717 - collisionCount: 1054770378 + availableReplicas: -180607525 + collisionCount: -1001798049 conditions: - - lastTransitionTime: "2919-04-11T18:57:19Z" + - lastTransitionTime: "2744-07-10T16:37:22Z" message: "529" reason: "528" - status: 驟ʦcȃ/ILǓ巟軷p羯孛 - type: gWǰ绿络aw壳Ĝxɮǻ蝀} - currentReplicas: 214266202 + status: ǹ脡È6 + type: Ǒl徙蔿Yċʤw + currentReplicas: 2102009515 currentRevision: "526" - observedGeneration: 186539306115504993 - readyReplicas: -425205512 - replicas: 807518438 + observedGeneration: 2345785178116014414 + readyReplicas: 2036280873 + replicas: 923301621 updateRevision: "527" - updatedReplicas: 702030092 + updatedReplicas: -1974512490 diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.json index 4bb2f6cb8dc..263adf31277 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.json @@ -1533,34 +1533,37 @@ } } ], - "setHostnameAsFQDN": false + "setHostnameAsFQDN": false, + "os": { + "name": "Ê" + } } }, "updateStrategy": { - "type": "șa汸\u003cƋlɋN磋镮ȺPÈ", + "type": "汸\u003cƋlɋN磋镮ȺPÈɥ偁髕ģƗ鐫", "rollingUpdate": { "maxUnavailable": 2, "maxSurge": 3 } }, - "minReadySeconds": 1750503412, - "revisionHistoryLimit": 128240007 + "minReadySeconds": -463159422, + "revisionHistoryLimit": -855944448 }, "status": { - "currentNumberScheduled": -900194589, - "numberMisscheduled": 295177820, - "desiredNumberScheduled": 1576197985, - "numberReady": -702578810, - "observedGeneration": -1989254568785172688, - "updatedNumberScheduled": -855944448, - "numberAvailable": -1556190810, - "numberUnavailable": -487001726, - "collisionCount": -2081947001, + "currentNumberScheduled": -1556190810, + "numberMisscheduled": -487001726, + "desiredNumberScheduled": 929611261, + "numberReady": -1728725476, + "observedGeneration": -6594742865080720976, + "updatedNumberScheduled": -1612961101, + "numberAvailable": 1731921624, + "numberUnavailable": 826023875, + "collisionCount": 619959999, "conditions": [ { - "type": "薑Ȣ#闬輙怀¹bCũw¼ ǫ", - "status": ":$", - "lastTransitionTime": "2082-11-07T20:44:23Z", + "type": "¹bCũw¼ ǫđ槴Ċį軠\u003e桼劑躮", + "status": "9=ȳB鼲糰Eè6苁嗀ĕ佣", + "lastTransitionTime": "2821-04-08T08:07:20Z", "reason": "495", "message": "496" } diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.pb index 6b0a087d989fc1e7e2834a11e28cd39b62d640f7..49fc4bd2aff6d49e67979998ada711115b05060a 100644 GIT binary patch delta 291 zcmdmD^W0{F0^`Anin|!^ZM>t*$oOg!(`LqPo3}7+kg8wA#KOgNxJ$}{OXbCMgCX5X~&bpwRSx z(&B&rfq>DVVcFZ~f51$srHmZQF8`eQ3(ON}di;1gM2*DX--~uLE6n+G?f6fiT>XDW zjSYuSzPsPKaqkjFgUwez`~wO9XSBG{`(`Jb!{PlOI+;E8uRXtCnz3=c6mj z5A9JnzWT_-XUn%7={mCh#qI@m&lc`^+BNaTu606EmbNE0JH6bq>G|dju7_8cz36Uy lI=$h@)F*ovOL1`QxVg78MSwwx*~HRR3rMhO@h{;Mtii2Z$@6<)S0t`ybCYGjJ LK*CIlL5TqX%=l~} diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.yaml index 5577e3ad744..3f275c5ffea 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.DaemonSet.yaml @@ -31,8 +31,8 @@ metadata: selfLink: "5" uid: "7" spec: - minReadySeconds: 1750503412 - revisionHistoryLimit: 128240007 + minReadySeconds: -463159422 + revisionHistoryLimit: -855944448 selector: matchExpressions: - key: p503---477-49p---o61---4fy--9---7--9-9s-0-u5lj2--10pq-0-7-9-2-0/fP81.-.9Vdx.TB_M-H_5_.t..bG0 @@ -736,6 +736,8 @@ spec: nodeName: "399" nodeSelector: "395": "396" + os: + name: Ê overhead: 隅DžbİEMǶɼ`|褞: "229" preemptionPolicy: n{鳻 @@ -1053,20 +1055,20 @@ spec: rollingUpdate: maxSurge: 3 maxUnavailable: 2 - type: șa汸<ƋlɋN磋镮ȺPÈ + type: 汸<ƋlɋN磋镮ȺPÈɥ偁髕ģƗ鐫 status: - collisionCount: -2081947001 + collisionCount: 619959999 conditions: - - lastTransitionTime: "2082-11-07T20:44:23Z" + - lastTransitionTime: "2821-04-08T08:07:20Z" message: "496" reason: "495" - status: :$ - type: 薑Ȣ#闬輙怀¹bCũw¼ ǫ - currentNumberScheduled: -900194589 - desiredNumberScheduled: 1576197985 - numberAvailable: -1556190810 - numberMisscheduled: 295177820 - numberReady: -702578810 - numberUnavailable: -487001726 - observedGeneration: -1989254568785172688 - updatedNumberScheduled: -855944448 + status: 9=ȳB鼲糰Eè6苁嗀ĕ佣 + type: ¹bCũw¼ ǫđ槴Ċį軠>桼劑躮 + currentNumberScheduled: -1556190810 + desiredNumberScheduled: 929611261 + numberAvailable: 1731921624 + numberMisscheduled: -487001726 + numberReady: -1728725476 + numberUnavailable: 826023875 + observedGeneration: -6594742865080720976 + updatedNumberScheduled: -1612961101 diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.json index f0d6e901260..ae72560b878 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.json @@ -1537,37 +1537,41 @@ } } ], - "setHostnameAsFQDN": false + "setHostnameAsFQDN": false, + "os": { + "name": "c'V{E犓`ɜɅc" + } } }, "strategy": { - "type": "ʔF{ȃ騑ȫ(踶NJđƟÝɹ橽ƴåj", + "type": "Ýɹ橽ƴåj}c殶ėŔ裑烴\u003c暉Ŝ!", "rollingUpdate": { "maxUnavailable": 2, "maxSurge": 3 } }, - "minReadySeconds": 2115665292, - "revisionHistoryLimit": 237456757, - "progressDeadlineSeconds": -1402499324 + "minReadySeconds": -779806398, + "revisionHistoryLimit": 440570496, + "paused": true, + "progressDeadlineSeconds": 1952245732 }, "status": { - "observedGeneration": -8619941635428506201, - "replicas": -380889943, - "updatedReplicas": 466048730, - "readyReplicas": -601845829, - "availableReplicas": 426527089, - "unavailableReplicas": -1890403855, + "observedGeneration": 3465735415490749292, + "replicas": 1535734699, + "updatedReplicas": 1969397344, + "readyReplicas": 1117243224, + "availableReplicas": 1150861753, + "unavailableReplicas": -750110452, "conditions": [ { - "type": "绰爪qĖĖȠ姓ȇ\u003e尪璎妽", - "status": "ĈȖ董缞濪葷cŲ", - "lastUpdateTime": "1999-05-06T18:42:43Z", - "lastTransitionTime": "2109-09-25T13:37:56Z", + "type": "妽4LM桵Ţ宧ʜ", + "status": "ŲNªǕt谍Ã\u0026榠塹", + "lastUpdateTime": "2128-12-14T03:53:25Z", + "lastTransitionTime": "2463-06-07T06:21:23Z", "reason": "491", "message": "492" } ], - "collisionCount": -2046786896 + "collisionCount": 407647568 } } \ No newline at end of file diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.Deployment.pb index 34e44f8760110ac987a97f52b6e3ac91ad24d01c..884023eae3768ca98dcb9364ca59f2dd2b915c48 100644 GIT binary patch delta 248 zcmV zV9A`xg<~Q%3L?Xu$+_mKy~eb|rD}a+=B~EHm&KImqmk!>v^?gTiN%~Dlkp!Df5Nhq zjQ#)r|Nj9nfTfDk0XP9j2O4__?8d~d`2VnsFc7QfrQ8J=;Jk{f2OznF*A zjPj_O{r~^}{{b>a3J~R{y);Zs=ApI4qUElq%A67u#j;Mqs>hXd=&+5$gC^#tpyi>t yA_FuzF)9NzIWjT`2(`uQ*Afr_8afCFNJT=9w`b6`~6%$Xa z)_AdF+wra=6OYY5Jon_zXDjy}+j4kmmXH7!8wY~`lN5sxh-Q{z(CGR7@&miU*I9E5 zEf_pn=FNNj>pu`MN=;+rSbloX+@2X<)^{)ptX#R_)IYF<#I3b+?=dQToV4*YqsGV2 zr+)na3+EaIa>+d3z2SMss=_1Fj!ZkT;OX+oC)(|vZdmnvQs2{MdxeCLbex#>V&dZG zd*(gczv{)r?a4尪璎妽 - observedGeneration: -8619941635428506201 - readyReplicas: -601845829 - replicas: -380889943 - unavailableReplicas: -1890403855 - updatedReplicas: 466048730 + status: ŲNªǕt谍Ã&榠塹 + type: 妽4LM桵Ţ宧ʜ + observedGeneration: 3465735415490749292 + readyReplicas: 1117243224 + replicas: 1535734699 + unavailableReplicas: -750110452 + updatedReplicas: 1969397344 diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.json index 0befb531a03..0e23cd69c6e 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.json @@ -1542,21 +1542,24 @@ } } ], - "setHostnameAsFQDN": true + "setHostnameAsFQDN": true, + "os": { + "name": "+\u0026ɃB沅零șPî壣" + } } } }, "status": { - "replicas": 1205668420, - "fullyLabeledReplicas": -1754098513, - "readyReplicas": -877836536, - "availableReplicas": 138992869, - "observedGeneration": -7169014491472696647, + "replicas": 157451826, + "fullyLabeledReplicas": -1872689134, + "readyReplicas": 1791185938, + "availableReplicas": 1559072561, + "observedGeneration": 5029735218517286947, "conditions": [ { - "type": "零șPî壣V礆á¤拈tY圻醆锛[", - "status": "嬜Š\u0026?鳢.ǀŭ瘢颦z疵", - "lastTransitionTime": "2455-07-16T22:37:15Z", + "type": "Y圻醆锛[M牍Ƃ氙吐ɝ鶼", + "status": "ŭ瘢颦z疵悡nȩ純z邜", + "lastTransitionTime": "2124-10-20T09:17:54Z", "reason": "491", "message": "492" } diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.pb index f74e9638f6f7b3566b92b1f43c5ef8d63a31ce0f..7d5cf31ffb4384e252f52e9a61203db6b9059c42 100644 GIT binary patch delta 189 zcmV;u07C!mKKMS6Apy~mBDw*ek=^D2t&_w7!vX2Dhyqd^f1&~v3KJ_P$%8`XvW4lJ zw#b=K!>;9{qacp9{L}dV|Ns918g&S=jEYMTl8}Uh`Tzg_{{a}I!1}L+vCZa1Ad;w! z)&?lCp0?)&GEE8`S>>F&>4t{sl$%>k=ZTHRg66Q9<&coco$0o`5*fv<=a{1DqNaN1 rmbK=Bp>D{jALq1`dg+3k8VCr&nX;J@5C9?rG&wOU12j1@8UP{yo&aIv delta 178 zcmV;j08Rh+KJ7k`ApypbBDw*Gk=^D2m6OB)!vWE=hyqd^e;|&w{L}dV|Ns918i4@_ z#FX^D1Q4&O%Degh|Ns917`fGvvDxXO!JGjgh>o@0{Qv*|{{blFxuZfdQwk#Ko3_ZA zP{Xd}qoY>mq=v(x!ldSlh;&)yoV)3UhUt`>TM`-NtenN5CO_%3qAtgP#jWRFM12j1?Dg!h*G8zCP00A*xRsaA1 diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.yaml index be480ef7939..65c49fc9c8e 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.ReplicaSet.yaml @@ -742,6 +742,8 @@ spec: nodeName: "395" nodeSelector: "391": "392" + os: + name: +&ɃB沅零șPî壣 overhead: D傕Ɠ栊闔虝巒瀦ŕ: "124" preemptionPolicy: Iƭij韺ʧ> @@ -1055,14 +1057,14 @@ spec: storagePolicyName: "105" volumePath: "103" status: - availableReplicas: 138992869 + availableReplicas: 1559072561 conditions: - - lastTransitionTime: "2455-07-16T22:37:15Z" + - lastTransitionTime: "2124-10-20T09:17:54Z" message: "492" reason: "491" - status: 嬜Š&?鳢.ǀŭ瘢颦z疵 - type: 零șPî壣V礆á¤拈tY圻醆锛[ - fullyLabeledReplicas: -1754098513 - observedGeneration: -7169014491472696647 - readyReplicas: -877836536 - replicas: 1205668420 + status: ŭ瘢颦z疵悡nȩ純z邜 + type: Y圻醆锛[M牍Ƃ氙吐ɝ鶼 + fullyLabeledReplicas: -1872689134 + observedGeneration: 5029735218517286947 + readyReplicas: 1791185938 + replicas: 157451826 diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.json b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.json index e0228c60348..a2c33d1d2b1 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.json @@ -1537,7 +1537,10 @@ } } ], - "setHostnameAsFQDN": false + "setHostnameAsFQDN": false, + "os": { + "name": "c'V{E犓`ɜɅc" + } } }, "volumeClaimTemplates": [ @@ -1547,11 +1550,11 @@ "generateName": "492", "namespace": "493", "selfLink": "494", - "uid": "4LM桵Ţ宧ʜ嵹ʌ5Ë}", - "resourceVersion": "932117408350471144", - "generation": 4446917721686139397, - "creationTimestamp": "2013-04-06T12:27:00Z", - "deletionGracePeriodSeconds": -2948232978388571762, + "uid": "`", + "resourceVersion": "5863709333089187294", + "generation": 6477367096865964611, + "creationTimestamp": "2097-02-11T08:53:04Z", + "deletionGracePeriodSeconds": 5497143372256332223, "labels": { "496": "497" }, @@ -1563,9 +1566,9 @@ "apiVersion": "500", "kind": "501", "name": "502", - "uid": "憲Ħ焵i,ŋ", + "uid": "Z穑S13t", "controller": false, - "blockOwnerDeletion": false + "blockOwnerDeletion": true } ], "finalizers": [ @@ -1575,7 +1578,7 @@ "managedFields": [ { "manager": "505", - "operation": "Ʀ§:Ǫ魚Emv看ƜZ穑S", + "operation": "董缞濪葷cŲNª", "apiVersion": "506", "fieldsType": "507", "subresource": "508" @@ -1584,30 +1587,33 @@ }, "spec": { "accessModes": [ - "Is{豘ñ澀j劎笜釼鮭Ɯ" + "豘ñ澀j劎笜釼鮭Ɯ镶Eq荣¿S5Tƙ" ], "selector": { "matchLabels": { - "789--9opn2/8.--4-___..1.N_l..-_.1-j---30q.-2_9.9-..-JA-H-C5-8_--4.__z22": "E_3-a__w.___-_-mv9h.-7.s__-_g6_-_N4-R._P-___0..X" + "N_l..-_.1-j---30q.-2_9.9-..-JA-H-5": "8_--4.__z2-.T2I" }, "matchExpressions": [ { - "key": "R_-U7-F34-6.-_-O-F__h9", - "operator": "Exists" + "key": "7--4a06y7-dt--5--8-69vc31o-865227qok-3-v8e7wfk4ek.hi93f---z-4-q24gt/Mw.___-_-mv9h.-7.s__-_g6_-_No", + "operator": "In", + "values": [ + "D.9-F_A-t0-o.7_a-t.-d6h__._-.Z-Q.1-B.__--wr_-Iu9._.UT-o" + ] } ] }, "resources": { "limits": { - "獪霛圦Ƶ": "159" + "xġ疾ɇù扻喥|{軈ĕʦ竳÷ 骵蓧": "587" }, "requests": { - "-劺b": "142" + "": "856" } }, "volumeName": "515", "storageClassName": "516", - "volumeMode": "ê婼SƸ炃\u0026-Ƹ绿浠穸æǷ^ɘʘ", + "volumeMode": "涼ĥ訛\\`ĝňYuĞyÜ蛃慕ʓvâ", "dataSource": { "apiGroup": "517", "kind": "518", @@ -1620,19 +1626,19 @@ } }, "status": { - "phase": "h蹤?攫垳ȿūDmÒ侠泊蠻毜鷟傚罢ț", + "phase": "忣àÂƺ琰Ȃ芋醳鮩!廊臚cɶċ", "accessModes": [ - "\u003e7u?=ȳ皆Cds壋" + "v}鮩澊聝楧" ], "capacity": { - "H%": "764" + "问Ð7ɞŶJŖ)j{驟ʦcȃ": "657" }, "conditions": [ { - "type": "A麭T棞詢¡ɅǏõxġ疾ɇ", - "status": "=击S", - "lastProbeTime": "2806-03-31T09:12:56Z", - "lastTransitionTime": "2430-10-28T09:53:06Z", + "type": "ņȎZȐ樾'Ż£劾ů", + "status": "Q¢鬣_棈Ý泷", + "lastProbeTime": "2156-05-28T07:29:36Z", + "lastTransitionTime": "2066-08-08T11:27:30Z", "reason": "523", "message": "524" } @@ -1641,34 +1647,34 @@ } ], "serviceName": "525", - "podManagementPolicy": "軈ĕʦ竳÷ 骵蓧應ĸ簋涼ĥ訛\\`ĝňY", + "podManagementPolicy": "婵=ǻ", "updateStrategy": { - "type": "Ä嚕uʟ膠ĉ班康%m忣àÂƺ琰Ȃ", + "type": "ɝÔȗ$`Ž#", "rollingUpdate": { - "partition": 804652982 + "partition": -1644040574 } }, - "revisionHistoryLimit": -827620894, - "minReadySeconds": -619299042 + "revisionHistoryLimit": -1205784111, + "minReadySeconds": 1505300966 }, "status": { - "observedGeneration": 5447372700200122498, - "replicas": -2070785865, - "readyReplicas": 1702437783, - "currentReplicas": -1694062357, - "updatedReplicas": -296989682, + "observedGeneration": 7422250233075984176, + "replicas": -326265137, + "readyReplicas": 1683394621, + "currentReplicas": 1862659237, + "updatedReplicas": 798811297, "currentRevision": "526", "updateRevision": "527", - "collisionCount": 1261428189, + "collisionCount": -1290326833, "conditions": [ { - "type": "鮩澊聝楧p问Ð7ɞŶJŖ)j{驟ʦ", - "status": "N崑-ņȎ", - "lastTransitionTime": "2128-12-14T15:28:07Z", + "type": "´Aƺå嫹^Ȇɀ*ǹ", + "status": "蟷尨BABȳ", + "lastTransitionTime": "2464-04-30T23:47:03Z", "reason": "528", "message": "529" } ], - "availableReplicas": -346713296 + "availableReplicas": -1012893423 } } \ No newline at end of file diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.pb b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.pb index eafde89afc00971c64a9b8309c4c256fcf1291fd..b3d3d9b87c9e9cd8f6a31ef10d0d438e44518ac8 100644 GIT binary patch delta 929 zcmX9*e@q)y9PgDt&PT$UQ{z%Kfx~Q*JFPNpv<-X^{$${H_((jn>*zq ze=i1c3>4WV8-akaB49}b_A0E2d6W}*R-h%8Woc2ei2@_pMWyedqW&^`cfS+IZ=Y80 zm03)$t_FVlYvYGIU%uQ33@zT!65ie9qQRxsr$Ny^j<#8gIGQ2x#{9H@uZ{Iop(9P3 zMC=G6Y$pP{7ux~Q&Jl#}kK~sowAC5ipKxU^?@rAa-8_Rpa3T;1e-YRgxK#c`cVQ%6 z)2^S6q*nKG4Qrnh&w-s_+lT3M`O%f!fU=-{np8)lA9d-;!Su-b`TWJ0l1POLGgtJ$ z1)><)i30HmFd0|mR{ zrHwlLp2QwRCY{g@+Zp>I&(2o@^%YOHxCwLJ2Ug)lWcrd^4Lvk;Q-a(KJrq2^AC_fG zhEyZmgCaUn1_+NGkzw6YiIS;(4bY7yY~z`7ExweF>Qm!yH>HD_!Tm?m6UUXa`uIuh z)W~|ELkS0#D=NDuF;J{JJHR-T|(p*saEIam0Q)ao6D8+k!9Jqb|AzIiA*MIH%_Mc5!t3_^oS8V+R zpZ`A5cX=w?bI5XSHh$~h&C9LJp&Q|n^619cy^`h~=W>5MFdIg^1A$O`ZR6&d|3zNo z0FnBpdTmjOsuvgD$@b@Zs;({&rTSz-ou6`6JF_vA{O`G?VFyZ%nnfe3^rrvriQt1x JC##7x{RdS6ck=)M delta 864 zcmXAle@qi+7{_~MCG{|-UX0ALKj;ySL*KJ^z3a6ksDmMFGBw~5rpr!^OLPg7$XtxX zfJH&tjUN_~lmb`K)d-t!Pii43e7)51Ys4*I_MhGvwUt6kuUD89XQ41$ zfS|1i$W}90Va&bcDO;Y%OgX9=f0UiJnDdD2?W@nWF;Wn01%wInD^cxd%`J9UabYdC z4c&wm$UjeHoI|419rI%>G=*alPuL~H0o?oGp}49Vc52-<>HvnDeD<}*#-Q@czA z05sq@jvz?FzEP(utYmx}pXe)DhgFY`LBw8n9w?a~%i1 zWWhcI4U7cfz(KH&<4&2e{HpV(n}2AAVM!yU6DCCOe0^+IwzO{p@Cq+VeqQ#@3hw3L zH;KXIpnU^g(%OTdrKi$!H}^>Wlj4Xkz8IbSv{AUWvcO9|Ynl&Bzc@3&QPJX%?~TQW zFwJiE+@A8dPj+-vo@^G!ZQ24*tcA=?*^9CHG8;q2Sg= zadBMW1xqX>_s+yESiU;YlX|P%`*-{FzpvlIgVeN+tff+Ka$4Jms4c6{`tRHCJ>0Je zx)L}4&-owTSYDaTFaGC|BlRk0Z0{bt^KvaGvjZE;AlRDc;l-yP)K#K*X4)$)Sksq= zrCXk+%#CTGmraaB1D{6+KK`yH;~h=9v2_Q;yL}+q5$`U6%jmSdc!I%Yz&56Acyq&y N`}b$>KhP?0#XE{3dl>)# diff --git a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.yaml index f8a32b3aa8d..e2742f2573f 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/apps.v1beta2.StatefulSet.yaml @@ -31,10 +31,10 @@ metadata: selfLink: "5" uid: "7" spec: - minReadySeconds: -619299042 - podManagementPolicy: 軈ĕʦ竳÷ 骵蓧應ĸ簋涼ĥ訛\`ĝňY + minReadySeconds: 1505300966 + podManagementPolicy: 婵=ǻ replicas: 896585016 - revisionHistoryLimit: -827620894 + revisionHistoryLimit: -1205784111 selector: matchExpressions: - key: 50-u--25cu87--r7p-w1e67-8pj5t-kl-v0q6b68--nu5oii38fn-8.629b-jd-8c45-0-8--6n--w0--w---196g8d--iv1-5--5ht-a-29--0qso796/3___47._49pIB_o61ISU4--A_.XK_._M99 @@ -740,6 +740,8 @@ spec: nodeName: "395" nodeSelector: "391": "392" + os: + name: c'V{E犓`ɜɅc overhead: D輷: "792" preemptionPolicy: m珢\%傢z¦Ā竚ĐȌƨǴ叆 @@ -1058,42 +1060,42 @@ spec: volumePath: "103" updateStrategy: rollingUpdate: - partition: 804652982 - type: Ä嚕uʟ膠ĉ班康%m忣àÂƺ琰Ȃ + partition: -1644040574 + type: ɝÔȗ$`Ž# volumeClaimTemplates: - metadata: annotations: "498": "499" clusterName: "504" - creationTimestamp: "2013-04-06T12:27:00Z" - deletionGracePeriodSeconds: -2948232978388571762 + creationTimestamp: "2097-02-11T08:53:04Z" + deletionGracePeriodSeconds: 5497143372256332223 finalizers: - "503" generateName: "492" - generation: 4446917721686139397 + generation: 6477367096865964611 labels: "496": "497" managedFields: - apiVersion: "506" fieldsType: "507" manager: "505" - operation: Ʀ§:Ǫ魚Emv看ƜZ穑S + operation: 董缞濪葷cŲNª subresource: "508" name: "491" namespace: "493" ownerReferences: - apiVersion: "500" - blockOwnerDeletion: false + blockOwnerDeletion: true controller: false kind: "501" name: "502" - uid: 憲Ħ焵i,ŋ - resourceVersion: "932117408350471144" + uid: Z穑S13t + resourceVersion: "5863709333089187294" selfLink: "494" - uid: 4LM桵Ţ宧ʜ嵹ʌ5Ë} + uid: '`' spec: accessModes: - - Is{豘ñ澀j劎笜釼鮭Ɯ + - 豘ñ澀j劎笜釼鮭Ɯ镶Eq荣¿S5Tƙ dataSource: apiGroup: "517" kind: "518" @@ -1104,44 +1106,46 @@ spec: name: "522" resources: limits: - 獪霛圦Ƶ: "159" + xġ疾ɇù扻喥|{軈ĕʦ竳÷ 骵蓧: "587" requests: - -劺b: "142" + "": "856" selector: matchExpressions: - - key: R_-U7-F34-6.-_-O-F__h9 - operator: Exists + - key: 7--4a06y7-dt--5--8-69vc31o-865227qok-3-v8e7wfk4ek.hi93f---z-4-q24gt/Mw.___-_-mv9h.-7.s__-_g6_-_No + operator: In + values: + - D.9-F_A-t0-o.7_a-t.-d6h__._-.Z-Q.1-B.__--wr_-Iu9._.UT-o matchLabels: - 789--9opn2/8.--4-___..1.N_l..-_.1-j---30q.-2_9.9-..-JA-H-C5-8_--4.__z22: E_3-a__w.___-_-mv9h.-7.s__-_g6_-_N4-R._P-___0..X + N_l..-_.1-j---30q.-2_9.9-..-JA-H-5: 8_--4.__z2-.T2I storageClassName: "516" - volumeMode: ê婼SƸ炃&-Ƹ绿浠穸æǷ^ɘʘ + volumeMode: 涼ĥ訛\`ĝňYuĞyÜ蛃慕ʓvâ volumeName: "515" status: accessModes: - - '>7u?=ȳ皆Cds壋' + - v}鮩澊聝楧 capacity: - H%: "764" + 问Ð7ɞŶJŖ)j{驟ʦcȃ: "657" conditions: - - lastProbeTime: "2806-03-31T09:12:56Z" - lastTransitionTime: "2430-10-28T09:53:06Z" + - lastProbeTime: "2156-05-28T07:29:36Z" + lastTransitionTime: "2066-08-08T11:27:30Z" message: "524" reason: "523" - status: =击S - type: A麭T棞詢¡ɅǏõxġ疾ɇ - phase: h蹤?攫垳ȿūDmÒ侠泊蠻毜鷟傚罢ț + status: Q¢鬣_棈Ý泷 + type: ņȎZȐ樾'Ż£劾ů + phase: 忣àÂƺ琰Ȃ芋醳鮩!廊臚cɶċ status: - availableReplicas: -346713296 - collisionCount: 1261428189 + availableReplicas: -1012893423 + collisionCount: -1290326833 conditions: - - lastTransitionTime: "2128-12-14T15:28:07Z" + - lastTransitionTime: "2464-04-30T23:47:03Z" message: "529" reason: "528" - status: N崑-ņȎ - type: 鮩澊聝楧p问Ð7ɞŶJŖ)j{驟ʦ - currentReplicas: -1694062357 + status: 蟷尨BABȳ + type: ´Aƺå嫹^Ȇɀ*ǹ + currentReplicas: 1862659237 currentRevision: "526" - observedGeneration: 5447372700200122498 - readyReplicas: 1702437783 - replicas: -2070785865 + observedGeneration: 7422250233075984176 + readyReplicas: 1683394621 + replicas: -326265137 updateRevision: "527" - updatedReplicas: -296989682 + updatedReplicas: 798811297 diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.json b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.json index 02a8eec39d0..b58065100aa 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.json +++ b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.json @@ -1597,11 +1597,14 @@ } } ], - "setHostnameAsFQDN": true + "setHostnameAsFQDN": true, + "os": { + "name": "+\u0026ɃB沅零șPî壣" + } } }, - "ttlSecondsAfterFinished": -1166275743, - "completionMode": "ĵ/Ş槀墺=Ĉ鳟/d\u0026蒡", + "ttlSecondsAfterFinished": -2008027992, + "completionMode": "蒡", "suspend": false } }, diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.pb b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.pb index 610b854a870fec5198e35c479bfaf9abf308118a..2a2f580cbebaa065cfc21e84d40f9b69c6be9cf3 100644 GIT binary patch delta 95 zcmezD@ZDj86yx=Y(z_V%OuS~wIAJmm;~vJ#lTR`(Wtw0;xq#_1BT%*L?IpkFf1>V delta 91 zcmezF@Y!L46yxQI(z_UMOuS~w*fW`jaS!A9$tM|?GX1ccT)=dhaq(ss<|Q&Z7K?UH vn*H-X5HLDCoc7`JZ!ptK{K!`Qqw}6EZ+NISqP>2TrB%v>! diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.yaml b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.yaml index 8620acc8f9e..861900c8f37 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.CronJob.yaml @@ -67,7 +67,7 @@ spec: spec: activeDeadlineSeconds: -1483125035702892746 backoffLimit: -1822122846 - completionMode: ĵ/Ş槀墺=Ĉ鳟/d&蒡 + completionMode: 蒡 completions: -106888179 manualSelector: true parallelism: -856030588 @@ -784,6 +784,8 @@ spec: nodeName: "411" nodeSelector: "407": "408" + os: + name: +&ɃB沅零șPî壣 overhead: D傕Ɠ栊闔虝巒瀦ŕ: "124" preemptionPolicy: Iƭij韺ʧ> @@ -1099,7 +1101,7 @@ spec: storagePolicyID: "125" storagePolicyName: "124" volumePath: "122" - ttlSecondsAfterFinished: -1166275743 + ttlSecondsAfterFinished: -2008027992 schedule: "20" startingDeadlineSeconds: -2555947251840004808 successfulJobsHistoryLimit: -1190434752 diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.json b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.json index df74f0ace43..a3430083ccd 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.json +++ b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.json @@ -1544,36 +1544,39 @@ } } ], - "setHostnameAsFQDN": false + "setHostnameAsFQDN": false, + "os": { + "name": "脡ǯ?b砸ƻ舁Ȁ贠ȇö匉" + } } }, - "ttlSecondsAfterFinished": -1284862566, - "completionMode": "", - "suspend": false + "ttlSecondsAfterFinished": -166315230, + "completionMode": "TaI楅©Ǫ壿/š^劶äɲ泒", + "suspend": true }, "status": { "conditions": [ { - "type": "ɓ为\\Ŧƺ猑\\#ȼ縤ɰTaI楅©", - "status": "翻颌徚J殦殐ƕ蟶ŃēÖ釐駆Ŕƿe魛ĩ", - "lastProbeTime": "2427-08-17T22:26:07Z", - "lastTransitionTime": "2012-08-22T05:26:31Z", + "type": "燬Ǻ媳ɦ:Ȱ掯鿊刞篍倧F*Ʊ巭銔0", + "status": "", + "lastProbeTime": "2534-12-23T07:02:01Z", + "lastTransitionTime": "2015-06-07T16:38:22Z", "reason": "493", "message": "494" } ], - "active": 543081713, - "succeeded": -377965530, - "failed": 77405208, + "active": -257419482, + "succeeded": -808276219, + "failed": -29650850, "completedIndexes": "495", "uncountedTerminatedPods": { "succeeded": [ - "Ʊ巭銔07?为Èá網抒h" + "抒h莤W{ɳ謏Ɵȗń暸a" ], "failed": [ - "W" + "ʖ臓祴ʬlǢǤųG3Ç" ] }, - "ready": -1917014749 + "ready": 934248925 } } \ No newline at end of file diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.pb b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.pb index cd5da71dc1c556259a2b65202aed8ba7918d57f2..0fc6265bf7f3e7032a5961f92cd0318487c17e6e 100644 GIT binary patch delta 296 zcmca%+hsRFjPcz>@m)-9))Oz6Fy5Z*!FYsen#E>5rf<^qiG^^k z$9BKyXgtyIV#|UP?T5EL?di1WIJUU!?|&d*bXfH5#s(1UKckm)NTTPnrLBin9$)oz z@qYcI3*(-4Z9BZ=i!fTxNA*!?V8iFZXvn?U?s` zeectTmPW}4>c7wsa1@AsWM6H0TOq~q5B%XCm%6QSYB)t0M<`--FkIg?Z{bbT9GB#= tjZe3)ec3g|z}z0_qQf1B7e3#%=~>sL3?asFkHxn>z5M~!B*mb_00279fqno0 diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.yaml b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.yaml index 52a975eda96..35078cbfc8a 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/batch.v1.Job.yaml @@ -33,7 +33,7 @@ metadata: spec: activeDeadlineSeconds: -5584804243908071872 backoffLimit: -783752440 - completionMode: "" + completionMode: TaI楅©Ǫ壿/š^劶äɲ泒 completions: 1305381319 manualSelector: true parallelism: 896585016 @@ -45,7 +45,7 @@ spec: - 3_bQw.-dG6c-.x matchLabels: hjT9s-j41-0-6p-JFHn7y-74.-0MUORQQ.N4: 3L.u - suspend: false + suspend: true template: metadata: annotations: @@ -749,6 +749,8 @@ spec: nodeName: "397" nodeSelector: "393": "394" + os: + name: 脡ǯ?b砸ƻ舁Ȁ贠ȇö匉 overhead: <ƋlɋN磋镮ȺPÈɥ偁髕ģƗ: "283" preemptionPolicy: 梊蝴.Ĉ马āƭw鰕ǰ"șa @@ -1059,22 +1061,22 @@ spec: storagePolicyID: "106" storagePolicyName: "105" volumePath: "103" - ttlSecondsAfterFinished: -1284862566 + ttlSecondsAfterFinished: -166315230 status: - active: 543081713 + active: -257419482 completedIndexes: "495" conditions: - - lastProbeTime: "2427-08-17T22:26:07Z" - lastTransitionTime: "2012-08-22T05:26:31Z" + - lastProbeTime: "2534-12-23T07:02:01Z" + lastTransitionTime: "2015-06-07T16:38:22Z" message: "494" reason: "493" - status: 翻颌徚J殦殐ƕ蟶ŃēÖ釐駆Ŕƿe魛ĩ - type: ɓ为\Ŧƺ猑\#ȼ縤ɰTaI楅© - failed: 77405208 - ready: -1917014749 - succeeded: -377965530 + status: "" + type: 燬Ǻ媳ɦ:Ȱ掯鿊刞篍倧F*Ʊ巭銔0 + failed: -29650850 + ready: 934248925 + succeeded: -808276219 uncountedTerminatedPods: failed: - - W + - ʖ臓祴ʬlǢǤųG3Ç succeeded: - - Ʊ巭銔07?为Èá網抒h + - 抒h莤W{ɳ謏Ɵȗń暸a diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.json b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.json index 78c59f9455a..1cd112a170c 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.json +++ b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.json @@ -1597,11 +1597,14 @@ } } ], - "setHostnameAsFQDN": true + "setHostnameAsFQDN": true, + "os": { + "name": "+\u0026ɃB沅零șPî壣" + } } }, - "ttlSecondsAfterFinished": -1166275743, - "completionMode": "ĵ/Ş槀墺=Ĉ鳟/d\u0026蒡", + "ttlSecondsAfterFinished": -2008027992, + "completionMode": "蒡", "suspend": false } }, diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.pb b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.pb index 0e4f7ba919ac18130cf09c3e03e7234006bea77d..9e0e0f55ab819b1f84b25b9b345cc1ff656ca458 100644 GIT binary patch delta 95 zcmez2@W)|-Jmd9=3cDEZOuTK%IAO9N;~vJ#lg}|OWtw0;xs>TLBT%*QXw7yJ{~W{ delta 91 zcmez4@WWw(Jmckw3cDC@OuTK%*fUv>aS!A9$>$iCGX1ccT*`Eraq(tP<|Q&Z7K?UH vn*H-X5HLDCoc7`JZ!ptK{K!`Qqw}6EZ+NISqRfq=wG2buH diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.yaml b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.yaml index 77d7a69b6a6..4cccbc609a0 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.CronJob.yaml @@ -67,7 +67,7 @@ spec: spec: activeDeadlineSeconds: -1483125035702892746 backoffLimit: -1822122846 - completionMode: ĵ/Ş槀墺=Ĉ鳟/d&蒡 + completionMode: 蒡 completions: -106888179 manualSelector: true parallelism: -856030588 @@ -784,6 +784,8 @@ spec: nodeName: "411" nodeSelector: "407": "408" + os: + name: +&ɃB沅零șPî壣 overhead: D傕Ɠ栊闔虝巒瀦ŕ: "124" preemptionPolicy: Iƭij韺ʧ> @@ -1099,7 +1101,7 @@ spec: storagePolicyID: "125" storagePolicyName: "124" volumePath: "122" - ttlSecondsAfterFinished: -1166275743 + ttlSecondsAfterFinished: -2008027992 schedule: "20" startingDeadlineSeconds: -2555947251840004808 successfulJobsHistoryLimit: -1190434752 diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.JobTemplate.json b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.JobTemplate.json index 5c70e764e3b..2c613237516 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.JobTemplate.json +++ b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.JobTemplate.json @@ -1591,12 +1591,15 @@ } } ], - "setHostnameAsFQDN": true + "setHostnameAsFQDN": true, + "os": { + "name": "Ʌmƣ乇ǡ\u003cʍʃ'ơa6ʔF{ȃ" + } } }, - "ttlSecondsAfterFinished": 1600150514, - "completionMode": "ıȦjJ綒鷈颿懽]轸", - "suspend": false + "ttlSecondsAfterFinished": -908823020, + "completionMode": "`", + "suspend": true } } } \ No newline at end of file diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.JobTemplate.pb b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.JobTemplate.pb index 3dc356c2b58d44d1f989f21027ce96062dee398b..0e55ecb96d67e05205956f5c8757cb5dc3f38360 100644 GIT binary patch delta 98 zcmdntaNJ>nGUL37D!UjTPrSdLar5MU#*2){CMPnTWBk6^fcd73-6AF#E~%5PxyKei z+1Y-4q0On@Q_bqf7ABgVn&MV{qS<1~$}`J<{s#g^hbeC^p8Er4dNC#hFiJ5fF#rHV Ck}-Jz delta 83 zcmV-Z0IdJVK)67VBLR<*B)S3Ak>9TYq?3;U(E+EEVFJzp*t0ML*&Hu8l&Q?8`Tzg_ p{{cYqw}JZwN*2Vi$fjya=eCmRw}|PYzvhR%UFf~IPyiYLA^_C2D&7D9 diff --git a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.JobTemplate.yaml b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.JobTemplate.yaml index 8f32468ece2..c78e03fd725 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.JobTemplate.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/batch.v1beta1.JobTemplate.yaml @@ -64,7 +64,7 @@ template: spec: activeDeadlineSeconds: -9086179100394185427 backoffLimit: -1796008812 - completionMode: ıȦjJ綒鷈颿懽]轸 + completionMode: '`' completions: -1771909905 manualSelector: false parallelism: -443114323 @@ -76,7 +76,7 @@ template: - Ou1.m_.5AW-_S-.3g.7_2fNc5-_.-RX8 matchLabels: g5i9/l-Y._.-444: c2_kS91.e5K-_e63_-_3-n-_-__3u-.__P__.7U-Uo_4_-D7r__.am64 - suspend: false + suspend: true template: metadata: annotations: @@ -781,6 +781,8 @@ template: nodeName: "409" nodeSelector: "405": "406" + os: + name: Ʌmƣ乇ǡ<ʍʃ'ơa6ʔF{ȃ overhead: Ɇȏ+&ɃB沅零șPî壣V礆á¤: "650" preemptionPolicy: 牯雫íȣƎǗ啕倽|銜Ʌ0斃搡Cʼn嘡 @@ -1095,4 +1097,4 @@ template: storagePolicyID: "124" storagePolicyName: "123" volumePath: "121" - ttlSecondsAfterFinished: 1600150514 + ttlSecondsAfterFinished: -908823020 diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.json b/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.json index 3ca76e1716b..8febf175d74 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.json +++ b/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.json @@ -1475,16 +1475,19 @@ } } ], - "setHostnameAsFQDN": false + "setHostnameAsFQDN": false, + "os": { + "name": "値å镮" + } }, "status": { - "phase": "VǢɾ纤ą", + "phase": "ą¨?ɣ蔫椁", "conditions": [ { - "type": "?ɣ蔫椁Ȕ蝬KȴǃmŁȒ|'从", - "status": "{煰", - "lastProbeTime": "2761-08-29T15:09:53Z", - "lastTransitionTime": "2608-03-08T03:06:33Z", + "type": "蝬KȴǃmŁȒ|'从LŸɬʥ", + "status": "鮫ʌ槧ą°Z拕獘:p", + "lastProbeTime": "2964-11-28T11:39:16Z", + "lastTransitionTime": "2684-04-17T20:01:15Z", "reason": "466", "message": "467" } @@ -1508,15 +1511,15 @@ "message": "476" }, "running": { - "startedAt": "2207-07-09T15:21:43Z" + "startedAt": "2045-05-04T00:27:18Z" }, "terminated": { - "exitCode": 1874682186, - "signal": -768346969, + "exitCode": 840157370, + "signal": 165747350, "reason": "477", "message": "478", - "startedAt": "2757-03-25T09:04:49Z", - "finishedAt": "2465-03-18T23:55:27Z", + "startedAt": "2362-01-25T20:42:09Z", + "finishedAt": "2115-03-23T22:33:35Z", "containerID": "479" } }, @@ -1526,24 +1529,24 @@ "message": "481" }, "running": { - "startedAt": "2687-07-04T15:23:41Z" + "startedAt": "2405-08-10T09:51:44Z" }, "terminated": { - "exitCode": 1892596557, - "signal": -1952419528, + "exitCode": 1690803571, + "signal": 1574959758, "reason": "482", "message": "483", - "startedAt": "2135-06-21T01:04:43Z", - "finishedAt": "2719-07-17T22:00:10Z", + "startedAt": "2871-08-02T00:56:38Z", + "finishedAt": "2056-06-22T17:22:55Z", "containerID": "484" } }, - "ready": false, - "restartCount": -391574961, + "ready": true, + "restartCount": -560956057, "image": "485", "imageID": "486", "containerID": "487", - "started": true + "started": false } ], "containerStatuses": [ @@ -1555,15 +1558,15 @@ "message": "490" }, "running": { - "startedAt": "2760-10-14T11:51:24Z" + "startedAt": "2514-10-23T19:30:50Z" }, "terminated": { - "exitCode": 165747350, - "signal": 470888375, + "exitCode": -1915588568, + "signal": -748558554, "reason": "491", "message": "492", - "startedAt": "2942-12-12T07:01:06Z", - "finishedAt": "2699-11-10T05:45:30Z", + "startedAt": "2669-01-03T02:05:34Z", + "finishedAt": "2539-08-23T00:33:24Z", "containerID": "493" } }, @@ -1573,27 +1576,27 @@ "message": "495" }, "running": { - "startedAt": "2127-06-24T09:29:52Z" + "startedAt": "2940-02-10T02:45:51Z" }, "terminated": { - "exitCode": 1574959758, - "signal": 1657812021, + "exitCode": 508776344, + "signal": -419737006, "reason": "496", "message": "497", - "startedAt": "2153-04-02T23:06:37Z", - "finishedAt": "2299-04-20T19:57:50Z", + "startedAt": "2556-04-09T04:29:45Z", + "finishedAt": "2716-06-10T12:34:06Z", "containerID": "498" } }, - "ready": true, - "restartCount": 2015720150, + "ready": false, + "restartCount": 839330574, "image": "499", "imageID": "500", "containerID": "501", - "started": false + "started": true } ], - "qosClass": "澵貛香\"砻B", + "qosClass": "!ɝ茀ǨĪ弊ʥ汹ȡWU=ȑ-A敲", "ephemeralContainerStatuses": [ { "name": "502", @@ -1603,15 +1606,15 @@ "message": "504" }, "running": { - "startedAt": "2513-06-23T10:07:34Z" + "startedAt": "2307-01-05T17:43:36Z" }, "terminated": { - "exitCode": -1155216843, - "signal": 839330574, + "exitCode": 390203674, + "signal": -372320382, "reason": "505", "message": "506", - "startedAt": "2296-08-29T04:36:22Z", - "finishedAt": "2685-03-12T10:07:19Z", + "startedAt": "2843-07-14T02:23:26Z", + "finishedAt": "2475-06-22T13:38:30Z", "containerID": "507" } }, @@ -1621,20 +1624,20 @@ "message": "509" }, "running": { - "startedAt": "2100-10-03T01:21:07Z" + "startedAt": "2873-08-04T14:47:20Z" }, "terminated": { - "exitCode": -1308926448, - "signal": 1208014329, + "exitCode": -1736264167, + "signal": -61756682, "reason": "510", "message": "511", - "startedAt": "2915-11-30T10:57:55Z", - "finishedAt": "2358-12-25T12:18:48Z", + "startedAt": "2083-06-13T02:40:30Z", + "finishedAt": "2162-04-09T16:36:03Z", "containerID": "512" } }, "ready": true, - "restartCount": 1093414706, + "restartCount": -598136292, "image": "513", "imageID": "514", "containerID": "515", diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.pb b/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.pb index e6760c4400a48c19946dac00a304fc9b5d748b29..799829460bbc9b43de0ad3a31ba5603c7b1d103a 100644 GIT binary patch delta 762 zcmX|ZY-V<5XT~T?daw&6N(e$PQ9(u&6+H#(rk1xB zS6eev%UpHKdsN<{GH<(*E|iz(MKO2X%{0iYO;bDbEj14x=VQ+N{{QnoWZl#8cXYod+qB0smko7{fpQ5a1lZ{@l0DM0c(KPNUCZ zVN>XB{;H-Uu4hBp7X~b@lIyXvJ=UWGo$jXLIyN%U(l}h?YiNLP+A@5F_PN{T370s8 zW{ZL=R~f>9P+@QDpS05X9WmxUlBOh8Wz%R{FEo~tG@b=@^u?Qdb3a3H8gfp%7lRw{ zkWBsPt@~@Z(_2#tN3Tuow#1bAWOj$x=K=};L%r<$g6F9TFU z`Zp?2FS0mFnK!a&>n52Stv#dvl9YMb0F5S)tj>A! z@hp~{$hN)Mqq~=Rg~R)nc~$3Wm=_GpS7tKANm%&3uLb?TLks^oJ~*RS8ze``0uNL{ r(5X|_#t2MZ@>Yy&#Z*CrIV#6yXF@-S2(3mC6C_xYASaU?VIckj7FH2t delta 701 zcmXxhZ%7ky7zglM+w|AHsN=#nCz9<&Nl@M0?smWJg@g5GHK>S+h#~GSc*k?A_T^X)HY5&hDq1?6ddEp-3_8 z$%V=TgRb0@toLHZle=|o*T-=`Yq(l!k8%j974_yBhB6_PO#8g9AZps-j_YW>gfZ)+ zY3;?z>Ln}B(lkO7o}tQVhT`_3p2YRT%*eax_c{(v1rro;H$t)8Nc0jzi3t5($rg_@ zlnoBd+yNq4B~6lv6o}-jF%@qr2?tAQ8 zZ-nL&dN#RMtz#Z8&2?2b;L*Y;ZUxdP7$z9*`pw|6EHzUtbD?nN54jJq+*pRK zVT%Kb;?$jjVfeE~EsObl3Np#OSj!~yW){9AGD0y|S+$c95~1L$3c(nE;dVgJ!5!HI z#R4PDe0ds&RYIis`#(BhW^IK^Et1S*&2w1^=v|%~+DgE{#B%39@K?l}HUKE_015(t daW&uDM!-jteG7XCD2VWvVvErZL$Gsu!(R+K>)8MR diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.yaml b/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.yaml index 5b24fe836b5..d406e8aa124 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/core.v1.Pod.yaml @@ -696,6 +696,8 @@ spec: nodeName: "370" nodeSelector: "366": "367" + os: + name: 値å镮 overhead: kƱ: "313" preemptionPolicy: ħ\ @@ -1008,45 +1010,45 @@ spec: volumePath: "79" status: conditions: - - lastProbeTime: "2761-08-29T15:09:53Z" - lastTransitionTime: "2608-03-08T03:06:33Z" + - lastProbeTime: "2964-11-28T11:39:16Z" + lastTransitionTime: "2684-04-17T20:01:15Z" message: "467" reason: "466" - status: '{煰' - type: ?ɣ蔫椁Ȕ蝬KȴǃmŁȒ|'从 + status: 鮫ʌ槧ą°Z拕獘:p + type: 蝬KȴǃmŁȒ|'从LŸɬʥ containerStatuses: - containerID: "501" image: "499" imageID: "500" lastState: running: - startedAt: "2127-06-24T09:29:52Z" + startedAt: "2940-02-10T02:45:51Z" terminated: containerID: "498" - exitCode: 1574959758 - finishedAt: "2299-04-20T19:57:50Z" + exitCode: 508776344 + finishedAt: "2716-06-10T12:34:06Z" message: "497" reason: "496" - signal: 1657812021 - startedAt: "2153-04-02T23:06:37Z" + signal: -419737006 + startedAt: "2556-04-09T04:29:45Z" waiting: message: "495" reason: "494" name: "488" - ready: true - restartCount: 2015720150 - started: false + ready: false + restartCount: 839330574 + started: true state: running: - startedAt: "2760-10-14T11:51:24Z" + startedAt: "2514-10-23T19:30:50Z" terminated: containerID: "493" - exitCode: 165747350 - finishedAt: "2699-11-10T05:45:30Z" + exitCode: -1915588568 + finishedAt: "2539-08-23T00:33:24Z" message: "492" reason: "491" - signal: 470888375 - startedAt: "2942-12-12T07:01:06Z" + signal: -748558554 + startedAt: "2669-01-03T02:05:34Z" waiting: message: "490" reason: "489" @@ -1056,33 +1058,33 @@ status: imageID: "514" lastState: running: - startedAt: "2100-10-03T01:21:07Z" + startedAt: "2873-08-04T14:47:20Z" terminated: containerID: "512" - exitCode: -1308926448 - finishedAt: "2358-12-25T12:18:48Z" + exitCode: -1736264167 + finishedAt: "2162-04-09T16:36:03Z" message: "511" reason: "510" - signal: 1208014329 - startedAt: "2915-11-30T10:57:55Z" + signal: -61756682 + startedAt: "2083-06-13T02:40:30Z" waiting: message: "509" reason: "508" name: "502" ready: true - restartCount: 1093414706 + restartCount: -598136292 started: true state: running: - startedAt: "2513-06-23T10:07:34Z" + startedAt: "2307-01-05T17:43:36Z" terminated: containerID: "507" - exitCode: -1155216843 - finishedAt: "2685-03-12T10:07:19Z" + exitCode: 390203674 + finishedAt: "2475-06-22T13:38:30Z" message: "506" reason: "505" - signal: 839330574 - startedAt: "2296-08-29T04:36:22Z" + signal: -372320382 + startedAt: "2843-07-14T02:23:26Z" waiting: message: "504" reason: "503" @@ -1093,41 +1095,41 @@ status: imageID: "486" lastState: running: - startedAt: "2687-07-04T15:23:41Z" + startedAt: "2405-08-10T09:51:44Z" terminated: containerID: "484" - exitCode: 1892596557 - finishedAt: "2719-07-17T22:00:10Z" + exitCode: 1690803571 + finishedAt: "2056-06-22T17:22:55Z" message: "483" reason: "482" - signal: -1952419528 - startedAt: "2135-06-21T01:04:43Z" + signal: 1574959758 + startedAt: "2871-08-02T00:56:38Z" waiting: message: "481" reason: "480" name: "474" - ready: false - restartCount: -391574961 - started: true + ready: true + restartCount: -560956057 + started: false state: running: - startedAt: "2207-07-09T15:21:43Z" + startedAt: "2045-05-04T00:27:18Z" terminated: containerID: "479" - exitCode: 1874682186 - finishedAt: "2465-03-18T23:55:27Z" + exitCode: 840157370 + finishedAt: "2115-03-23T22:33:35Z" message: "478" reason: "477" - signal: -768346969 - startedAt: "2757-03-25T09:04:49Z" + signal: 165747350 + startedAt: "2362-01-25T20:42:09Z" waiting: message: "476" reason: "475" message: "468" nominatedNodeName: "470" - phase: VǢɾ纤ą + phase: ą¨?ɣ蔫椁 podIP: "472" podIPs: - ip: "473" - qosClass: 澵貛香"砻B + qosClass: '!ɝ茀ǨĪ弊ʥ汹ȡWU=ȑ-A敲' reason: "469" diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.json b/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.json index fede0026eec..071cb725b63 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.json +++ b/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.json @@ -1527,7 +1527,10 @@ } } ], - "setHostnameAsFQDN": false + "setHostnameAsFQDN": false, + "os": { + "name": "脡ǯ?b砸ƻ舁Ȁ贠ȇö匉" + } } } } \ No newline at end of file diff --git a/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.pb b/staging/src/k8s.io/api/testdata/HEAD/core.v1.PodTemplate.pb index b8f32d80550a93378c19d6bc66feb7d9ba4a4abc..9860de7d67f9be1b4a4eceb0504d0c2cc2decb00 100644 GIT binary patch delta 61 zcmV-D0K)%^JgYpA7y^wvks7%H(vj4!0iv^n0fQVQq5>TX8|Z|g$FDzP=b*U8yXc64 T$bjgypvZ^Aw&je88UP{yQR*E? delta 29 lcmZ2&(`_?Bg6XaGM5&#Ona=l2nqr+FcJbXF&gKQ@y-F5v%mp?9e<(% z6$%q8Cdq?B=CXz9o3_ZAP{Xd}qoW{>w*1rh|NsC00UC7(vW$vL5R#CDgZcme|Nj9P zqrm#Fg|W@%MIe%>jn)Pzv7WZ)1u{(v99iX@yXl68>6DvWP3MV?#)9UsndOj>$(`x8 zyb>A3t>>7c>7u53=a#kRf}w86sUPRGlzQocoEiuS!kMy}5)c3)12i}{Dg!h)I2r&V E0AJ=~?*IS* delta 191 zcmV;w06_oWKh!^vA_1(CBf1prJP5d&!>a=l2nqr+FcJbXF&fX2@y-E&v%mp?9e*H> zw*1rh|NsC00UCh;2*i~1z621jsmi6^C5nNY*7<)fok=cIet<(#|ehKA{sn_ChY<*b~=pe8@* tv!X7?fW@unn4;;Trh4a=wHgQrn-q @@ -1048,14 +1050,14 @@ spec: storagePolicyName: "101" volumePath: "99" status: - availableReplicas: 138992869 + availableReplicas: 1559072561 conditions: - - lastTransitionTime: "2455-07-16T22:37:15Z" + - lastTransitionTime: "2124-10-20T09:17:54Z" message: "488" reason: "487" - status: 嬜Š&?鳢.ǀŭ瘢颦z疵 - type: 零șPî壣V礆á¤拈tY圻醆锛[ - fullyLabeledReplicas: -1754098513 - observedGeneration: -7169014491472696647 - readyReplicas: -877836536 - replicas: 1205668420 + status: ŭ瘢颦z疵悡nȩ純z邜 + type: Y圻醆锛[M牍Ƃ氙吐ɝ鶼 + fullyLabeledReplicas: -1872689134 + observedGeneration: 5029735218517286947 + readyReplicas: 1791185938 + replicas: 157451826 diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.json b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.json index d3fb9f05c71..a61098b6444 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.json @@ -1533,35 +1533,38 @@ } } ], - "setHostnameAsFQDN": false + "setHostnameAsFQDN": false, + "os": { + "name": "Ê" + } } }, "updateStrategy": { - "type": "șa汸\u003cƋlɋN磋镮ȺPÈ", + "type": "汸\u003cƋlɋN磋镮ȺPÈɥ偁髕ģƗ鐫", "rollingUpdate": { "maxUnavailable": 2, "maxSurge": 3 } }, - "minReadySeconds": 1750503412, - "templateGeneration": -360030892563979363, - "revisionHistoryLimit": -900194589 + "minReadySeconds": -463159422, + "templateGeneration": 6610342178136989005, + "revisionHistoryLimit": -1556190810 }, "status": { - "currentNumberScheduled": 295177820, - "numberMisscheduled": 1576197985, - "desiredNumberScheduled": -702578810, - "numberReady": 1539090224, - "observedGeneration": 1991467680216601344, - "updatedNumberScheduled": -1556190810, - "numberAvailable": -487001726, - "numberUnavailable": 929611261, - "collisionCount": -1535458227, + "currentNumberScheduled": -487001726, + "numberMisscheduled": 929611261, + "desiredNumberScheduled": -1728725476, + "numberReady": -36544080, + "observedGeneration": 3978304359289858739, + "updatedNumberScheduled": 1731921624, + "numberAvailable": 826023875, + "numberUnavailable": -780958866, + "collisionCount": -1460952461, "conditions": [ { - "type": "Ȣ#", - "status": "罦¦褅桃|薝Țµʍ^鼑:$Ǿ觇ƒ幦", - "lastTransitionTime": "2721-06-15T10:27:00Z", + "type": "bCũw¼ ǫđ槴Ċį軠\u003e桼劑", + "status": "Y9=ȳB鼲糰Eè6苁嗀ĕ佣8ç", + "lastTransitionTime": "2885-07-28T14:08:43Z", "reason": "495", "message": "496" } diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.pb b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.pb index ecb98780ab478d7e51fd7272483dfa85a0c065dd..4e419c95e862fddef6618b12e01d86b5abaa955b 100644 GIT binary patch delta 288 zcmX?Y^UG#}8soW%>bn?UY<#55$oOh98`EaSZJT#7ZII$##KgkIbht~(f=gv`p{!{A z$)!&l8(*%TdSvmj=`Sa&782lM<6sbAl41}7(acf|3QhkfE&lf(2pBca?&`VQ_-y69 zXoF>!f6n{`7L;1S$kFup@pOn1fxo{O?Pivk^XJ;}pI~W)4Tn#@1F?YGH(&km@8tE5 zv&;={^uF22W^s7`hr&)~hj(q~y8nVzcziyx?l{EQpkOZ9BAPEcFz{>dD=BmNG{US_QYnVmwPrn-@L)~@CvgR-HlJDHyoMzWba~&!^@>O aI9|`6a4}neL5bPK(o_pbm`O1xF#rJP!bn>(ZhWN7$oP0N8`EaS^_zDwZIG&$(&3UgF*EVm#vL}tx^qr; z`#oRW{c`HM6T1QqcL)h^v2id6Fi9~8foNta28A#4ZyjROn0tKJlOH>GHT-5Yc)a() zr9c0HfKh4!BgdUN4|*5{9_~B+o>ijl|KAON!7>UP&V9Pes?o6Q?ejY;k6)BFSa$j6 z%wJ%sB#WlUkEj0wvmO5aUbLIp<7~(4#SqCL2QKClinG^@dm;DD;M+h(|F`HPLY5@r|DF!750N3P( ANB{r; diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.yaml index 19265af843b..22b314f98c8 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.DaemonSet.yaml @@ -31,8 +31,8 @@ metadata: selfLink: "5" uid: "7" spec: - minReadySeconds: 1750503412 - revisionHistoryLimit: -900194589 + minReadySeconds: -463159422 + revisionHistoryLimit: -1556190810 selector: matchExpressions: - key: p503---477-49p---o61---4fy--9---7--9-9s-0-u5lj2--10pq-0-7-9-2-0/fP81.-.9Vdx.TB_M-H_5_.t..bG0 @@ -736,6 +736,8 @@ spec: nodeName: "399" nodeSelector: "395": "396" + os: + name: Ê overhead: 隅DžbİEMǶɼ`|褞: "229" preemptionPolicy: n{鳻 @@ -1049,25 +1051,25 @@ spec: storagePolicyID: "106" storagePolicyName: "105" volumePath: "103" - templateGeneration: -360030892563979363 + templateGeneration: 6610342178136989005 updateStrategy: rollingUpdate: maxSurge: 3 maxUnavailable: 2 - type: șa汸<ƋlɋN磋镮ȺPÈ + type: 汸<ƋlɋN磋镮ȺPÈɥ偁髕ģƗ鐫 status: - collisionCount: -1535458227 + collisionCount: -1460952461 conditions: - - lastTransitionTime: "2721-06-15T10:27:00Z" + - lastTransitionTime: "2885-07-28T14:08:43Z" message: "496" reason: "495" - status: 罦¦褅桃|薝Țµʍ^鼑:$Ǿ觇ƒ幦 - type: Ȣ# - currentNumberScheduled: 295177820 - desiredNumberScheduled: -702578810 - numberAvailable: -487001726 - numberMisscheduled: 1576197985 - numberReady: 1539090224 - numberUnavailable: 929611261 - observedGeneration: 1991467680216601344 - updatedNumberScheduled: -1556190810 + status: Y9=ȳB鼲糰Eè6苁嗀ĕ佣8ç + type: bCũw¼ ǫđ槴Ċį軠>桼劑 + currentNumberScheduled: -487001726 + desiredNumberScheduled: -1728725476 + numberAvailable: 826023875 + numberMisscheduled: 929611261 + numberReady: -36544080 + numberUnavailable: -780958866 + observedGeneration: 3978304359289858739 + updatedNumberScheduled: 1731921624 diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.json b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.json index d341aeeb778..b5eb7c076f2 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.json +++ b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.json @@ -1537,40 +1537,44 @@ } } ], - "setHostnameAsFQDN": false + "setHostnameAsFQDN": false, + "os": { + "name": "c'V{E犓`ɜɅc" + } } }, "strategy": { - "type": "ʔF{ȃ騑ȫ(踶NJđƟÝɹ橽ƴåj", + "type": "Ýɹ橽ƴåj}c殶ėŔ裑烴\u003c暉Ŝ!", "rollingUpdate": { "maxUnavailable": 2, "maxSurge": 3 } }, - "minReadySeconds": 2115665292, - "revisionHistoryLimit": 237456757, + "minReadySeconds": -779806398, + "revisionHistoryLimit": 440570496, + "paused": true, "rollbackTo": { - "revision": 1498428055681994500 + "revision": -7008927308432218140 }, - "progressDeadlineSeconds": -164140734 + "progressDeadlineSeconds": -43713883 }, "status": { - "observedGeneration": -1635909846206320942, - "replicas": -253906853, - "updatedReplicas": -602665165, - "readyReplicas": -859094691, - "availableReplicas": -1624946983, - "unavailableReplicas": -779806398, + "observedGeneration": 6595930309397245706, + "replicas": -98839735, + "updatedReplicas": -691251015, + "readyReplicas": -408821490, + "availableReplicas": 376262938, + "unavailableReplicas": 632292328, "conditions": [ { - "type": "mv看ƜZ", - "status": "ȇ\u003e尪璎妽4LM桵Ţ宧ʜ", - "lastUpdateTime": "2322-02-12T18:39:07Z", - "lastTransitionTime": "2398-05-12T06:43:28Z", + "type": "ĈȖ董缞濪葷cŲ", + "status": "5Ë", + "lastUpdateTime": "2909-01-09T22:03:18Z", + "lastTransitionTime": "2294-05-20T00:00:03Z", "reason": "491", "message": "492" } ], - "collisionCount": 165914268 + "collisionCount": 955020766 } } \ No newline at end of file diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.pb b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.pb index c46fdeaf5d857b5bb46db9ca4f847a29f853af22..03916857134bc7764de42f6e7152357ee6ef5ba6 100644 GIT binary patch delta 276 zcmX@$c+_!%I^&Fq8oL;uYt?vP3igj9|#x?8kTllVzgj%;^ugA{_~>m+b`Xn$LO*2>*UuU>HmyU zNJT=9w`b6`~6%$Xa z)_AdF+wra=6OYY5Jon_zXDjy}+j4kmmXH7!8wY~`lN5sxh-Q{z(CGR7@&miU*I9E5 zEf}1*I9le-d)(D?|EY+_p-Xo+{s#d@sUAj-OLuoanlZI?*-J)&+Yi3AK_nzL&%5y8 zFIY{!!p+{PKYxPR8izJb>469vIdgI3mOY=-eQZvYkmQMWyQdpgJ)hL~blF}LAKzyS zw;o;eblvh(bCj4(EDg1Qgpm;k$LY?!n=}O&tT;F(OnSK1NPxlOZqwRlf51jN%sJcV JFU6q5004*WiX{L5 diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.yaml b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.yaml index 352c82f5720..3866f67dcf8 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.Deployment.yaml @@ -31,12 +31,13 @@ metadata: selfLink: "5" uid: "7" spec: - minReadySeconds: 2115665292 - progressDeadlineSeconds: -164140734 + minReadySeconds: -779806398 + paused: true + progressDeadlineSeconds: -43713883 replicas: 896585016 - revisionHistoryLimit: 237456757 + revisionHistoryLimit: 440570496 rollbackTo: - revision: 1498428055681994500 + revision: -7008927308432218140 selector: matchExpressions: - key: 50-u--25cu87--r7p-w1e67-8pj5t-kl-v0q6b68--nu5oii38fn-8.629b-jd-8c45-0-8--6n--w0--w---196g8d--iv1-5--5ht-a-29--0qso796/3___47._49pIB_o61ISU4--A_.XK_._M99 @@ -47,7 +48,7 @@ spec: rollingUpdate: maxSurge: 3 maxUnavailable: 2 - type: ʔF{ȃ騑ȫ(踶NJđƟÝɹ橽ƴåj + type: Ýɹ橽ƴåj}c殶ėŔ裑烴<暉Ŝ! template: metadata: annotations: @@ -746,6 +747,8 @@ spec: nodeName: "395" nodeSelector: "391": "392" + os: + name: c'V{E犓`ɜɅc overhead: D輷: "792" preemptionPolicy: m珢\%傢z¦Ā竚ĐȌƨǴ叆 @@ -1063,17 +1066,17 @@ spec: storagePolicyName: "105" volumePath: "103" status: - availableReplicas: -1624946983 - collisionCount: 165914268 + availableReplicas: 376262938 + collisionCount: 955020766 conditions: - - lastTransitionTime: "2398-05-12T06:43:28Z" - lastUpdateTime: "2322-02-12T18:39:07Z" + - lastTransitionTime: "2294-05-20T00:00:03Z" + lastUpdateTime: "2909-01-09T22:03:18Z" message: "492" reason: "491" - status: ȇ>尪璎妽4LM桵Ţ宧ʜ - type: mv看ƜZ - observedGeneration: -1635909846206320942 - readyReplicas: -859094691 - replicas: -253906853 - unavailableReplicas: -779806398 - updatedReplicas: -602665165 + status: 5Ë + type: ĈȖ董缞濪葷cŲ + observedGeneration: 6595930309397245706 + readyReplicas: -408821490 + replicas: -98839735 + unavailableReplicas: 632292328 + updatedReplicas: -691251015 diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.json b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.json index b9b471cb494..9dac2e3e7ce 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.json +++ b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.json @@ -1542,21 +1542,24 @@ } } ], - "setHostnameAsFQDN": true + "setHostnameAsFQDN": true, + "os": { + "name": "+\u0026ɃB沅零șPî壣" + } } } }, "status": { - "replicas": 1205668420, - "fullyLabeledReplicas": -1754098513, - "readyReplicas": -877836536, - "availableReplicas": 138992869, - "observedGeneration": -7169014491472696647, + "replicas": 157451826, + "fullyLabeledReplicas": -1872689134, + "readyReplicas": 1791185938, + "availableReplicas": 1559072561, + "observedGeneration": 5029735218517286947, "conditions": [ { - "type": "零șPî壣V礆á¤拈tY圻醆锛[", - "status": "嬜Š\u0026?鳢.ǀŭ瘢颦z疵", - "lastTransitionTime": "2455-07-16T22:37:15Z", + "type": "Y圻醆锛[M牍Ƃ氙吐ɝ鶼", + "status": "ŭ瘢颦z疵悡nȩ純z邜", + "lastTransitionTime": "2124-10-20T09:17:54Z", "reason": "491", "message": "492" } diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.pb b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.pb index 2a1628605f3588def90e65b2225fb145338269bb..8b9a9805f47f60993690290008a6d046760d23d8 100644 GIT binary patch delta 189 zcmV;u07C!sKK?$CCjrrsD7pckk>ln8t&_?D!vX2Djsj8~f1&~v3KJ_P$%8`XvW4lJ zw#b=K!>;9{qacp9{L}dV|Ns918g&S=jEYMTl8}Uh`Tzg_{{a}I!1}L+vCZa1Ad;w! z)&?lCp0?)&GEE8`S>>F&>4t{sl$%>k=ZTHRg66Q9<&coco$0o`5*fv<=a{1DqNaN1 rmbK=Bp>D{jALq1`dg+3k8VCr&nX;J@5C9?rG&wOU12j1@8UP{yyGCLS delta 178 zcmV;j08Rh?KJz}1CjrKhD7pcMk>ln8m6OT=!vWE=jsj8~e;|&w{L}dV|Ns918i4@_ z#FX^D1Q4&O%Degh|Ns917`fGvvDxXO!JGjgh>o@0{Qv*|{{blFxuZfdQwk#Ko3_ZA zP{Xd}qoY>mq=v(x!ldSlh;&)yoV)3UhUt`>TM`-NtenN5CO_%3qAtgP#jWRFM12j1?Dg!h*G8zCP034}afB*mh diff --git a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.yaml b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.yaml index bfc22f6521b..feb85a8819d 100644 --- a/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.yaml +++ b/staging/src/k8s.io/api/testdata/HEAD/extensions.v1beta1.ReplicaSet.yaml @@ -742,6 +742,8 @@ spec: nodeName: "395" nodeSelector: "391": "392" + os: + name: +&ɃB沅零șPî壣 overhead: D傕Ɠ栊闔虝巒瀦ŕ: "124" preemptionPolicy: Iƭij韺ʧ> @@ -1055,14 +1057,14 @@ spec: storagePolicyName: "105" volumePath: "103" status: - availableReplicas: 138992869 + availableReplicas: 1559072561 conditions: - - lastTransitionTime: "2455-07-16T22:37:15Z" + - lastTransitionTime: "2124-10-20T09:17:54Z" message: "492" reason: "491" - status: 嬜Š&?鳢.ǀŭ瘢颦z疵 - type: 零șPî壣V礆á¤拈tY圻醆锛[ - fullyLabeledReplicas: -1754098513 - observedGeneration: -7169014491472696647 - readyReplicas: -877836536 - replicas: 1205668420 + status: ŭ瘢颦z疵悡nȩ純z邜 + type: Y圻醆锛[M牍Ƃ氙吐ɝ鶼 + fullyLabeledReplicas: -1872689134 + observedGeneration: 5029735218517286947 + readyReplicas: 1791185938 + replicas: 157451826