Merge pull request #49983 from liyinan926/master

Automatic merge from submit-queue

Added field CollisionCount to StatefulSetStatus

**What this PR does / why we need it**:
This PR added a new field `CollisionCount` into `StatefulSetStatus`, similarly in terms of both name and semantics to the existing `CollisionCount` field in `DaemonSetStatus`.  The field will be used for collision avoidance when the `StatefulSet` controller creates name for the newest ControllerRevision, which will be done in another PR.

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: #49909.

**Special notes for your reviewer**:
A second PR will include logic that actually uses the field for collision avoidance.

**Release note**:
```release-note
Added field CollisionCount to StatefulSetStatus in both apps/v1beta1 and apps/v1beta2
```
This commit is contained in:
Kubernetes Submit Queue 2017-08-10 19:35:15 -07:00 committed by GitHub
commit d72ffcd89f
25 changed files with 722 additions and 332 deletions

View File

@ -53477,6 +53477,11 @@
"replicas"
],
"properties": {
"collisionCount": {
"description": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.",
"type": "integer",
"format": "int64"
},
"currentReplicas": {
"description": "currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.",
"type": "integer",
@ -54273,6 +54278,11 @@
"replicas"
],
"properties": {
"collisionCount": {
"description": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.",
"type": "integer",
"format": "int64"
},
"currentReplicas": {
"description": "currentReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by currentRevision.",
"type": "integer",

View File

@ -6279,6 +6279,11 @@
"updateRevision": {
"type": "string",
"description": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)"
},
"collisionCount": {
"type": "integer",
"format": "int64",
"description": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision."
}
}
},

View File

@ -7791,6 +7791,11 @@
"updateRevision": {
"type": "string",
"description": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)"
},
"collisionCount": {
"type": "integer",
"format": "int64",
"description": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision."
}
}
},

View File

@ -5135,6 +5135,13 @@ Examples:<br>
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">collisionCount</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">integer (int64)</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
</tbody>
</table>

View File

@ -1581,6 +1581,13 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }
<td class="tableblock halign-left valign-top"><p class="tableblock">string</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">collisionCount</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">integer (int64)</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
</tbody>
</table>

View File

@ -734,6 +734,9 @@ func appsFuncs(codecs runtimeserializer.CodecFactory) []interface{} {
if s.Status.ObservedGeneration == nil {
s.Status.ObservedGeneration = new(int64)
}
if s.Status.CollisionCount == nil {
s.Status.CollisionCount = new(int64)
}
},
}
}

View File

@ -187,6 +187,12 @@ type StatefulSetStatus struct {
// updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence
// [replicas-updatedReplicas,replicas)
UpdateRevision string
// collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller
// uses this field as a collision avoidance mechanism when it needs to create the name for the
// newest ControllerRevision.
// +optional
CollisionCount *int64
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

View File

@ -625,6 +625,7 @@ func autoConvert_v1beta1_StatefulSetStatus_To_apps_StatefulSetStatus(in *v1beta1
out.UpdatedReplicas = in.UpdatedReplicas
out.CurrentRevision = in.CurrentRevision
out.UpdateRevision = in.UpdateRevision
out.CollisionCount = (*int64)(unsafe.Pointer(in.CollisionCount))
return nil
}
@ -641,6 +642,7 @@ func autoConvert_apps_StatefulSetStatus_To_v1beta1_StatefulSetStatus(in *apps.St
out.UpdatedReplicas = in.UpdatedReplicas
out.CurrentRevision = in.CurrentRevision
out.UpdateRevision = in.UpdateRevision
out.CollisionCount = (*int64)(unsafe.Pointer(in.CollisionCount))
return nil
}

View File

@ -237,6 +237,10 @@ func Convert_v1beta2_StatefulSetStatus_To_apps_StatefulSetStatus(in *appsv1beta2
out.UpdatedReplicas = in.UpdatedReplicas
out.CurrentRevision = in.CurrentRevision
out.UpdateRevision = in.UpdateRevision
if in.CollisionCount != nil {
out.CollisionCount = new(int64)
*out.CollisionCount = *in.CollisionCount
}
return nil
}
@ -250,6 +254,10 @@ func Convert_apps_StatefulSetStatus_To_v1beta2_StatefulSetStatus(in *apps.Statef
out.UpdatedReplicas = in.UpdatedReplicas
out.CurrentRevision = in.CurrentRevision
out.UpdateRevision = in.UpdateRevision
if in.CollisionCount != nil {
out.CollisionCount = new(int64)
*out.CollisionCount = *in.CollisionCount
}
return nil
}

View File

@ -862,6 +862,7 @@ func autoConvert_v1beta2_StatefulSetStatus_To_apps_StatefulSetStatus(in *v1beta2
out.UpdatedReplicas = in.UpdatedReplicas
out.CurrentRevision = in.CurrentRevision
out.UpdateRevision = in.UpdateRevision
out.CollisionCount = (*int64)(unsafe.Pointer(in.CollisionCount))
return nil
}
@ -873,6 +874,7 @@ func autoConvert_apps_StatefulSetStatus_To_v1beta2_StatefulSetStatus(in *apps.St
out.UpdatedReplicas = in.UpdatedReplicas
out.CurrentRevision = in.CurrentRevision
out.UpdateRevision = in.UpdateRevision
out.CollisionCount = (*int64)(unsafe.Pointer(in.CollisionCount))
return nil
}

View File

@ -33,6 +33,7 @@ go_test(
"//pkg/apis/apps:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/validation/field:go_default_library",
],
)

View File

@ -163,9 +163,39 @@ func ValidateStatefulSetUpdate(statefulSet, oldStatefulSet *apps.StatefulSet) fi
return allErrs
}
// ValidateStatefulSetStatus validates a StatefulSetStatus.
func ValidateStatefulSetStatus(status *apps.StatefulSetStatus, fieldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{}
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.Replicas), fieldPath.Child("replicas"))...)
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.ReadyReplicas), fieldPath.Child("readyReplicas"))...)
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.CurrentReplicas), fieldPath.Child("currentReplicas"))...)
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.UpdatedReplicas), fieldPath.Child("updatedReplicas"))...)
if status.ObservedGeneration != nil {
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(*status.ObservedGeneration), fieldPath.Child("observedGeneration"))...)
}
if status.CollisionCount != nil {
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(*status.CollisionCount), fieldPath.Child("collisionCount"))...)
}
msg := "cannot be greater than status.replicas"
if status.ReadyReplicas > status.Replicas {
allErrs = append(allErrs, field.Invalid(fieldPath.Child("readyReplicas"), status.ReadyReplicas, msg))
}
if status.CurrentReplicas > status.Replicas {
allErrs = append(allErrs, field.Invalid(fieldPath.Child("currentReplicas"), status.CurrentReplicas, msg))
}
if status.UpdatedReplicas > status.Replicas {
allErrs = append(allErrs, field.Invalid(fieldPath.Child("updatedReplicas"), status.UpdatedReplicas, msg))
}
return allErrs
}
// ValidateStatefulSetStatusUpdate tests if required fields in the StatefulSet are set.
func ValidateStatefulSetStatusUpdate(statefulSet, oldStatefulSet *apps.StatefulSet) field.ErrorList {
allErrs := field.ErrorList{}
allErrs = append(allErrs, ValidateStatefulSetStatus(&statefulSet.Status, field.NewPath("status"))...)
allErrs = append(allErrs, apivalidation.ValidateObjectMetaUpdate(&statefulSet.ObjectMeta, &oldStatefulSet.ObjectMeta, field.NewPath("metadata"))...)
// TODO: Validate status.
return allErrs

View File

@ -22,6 +22,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/apis/apps"
)
@ -300,6 +301,119 @@ func TestValidateStatefulSet(t *testing.T) {
}
}
func TestValidateStatefulSetStatus(t *testing.T) {
minusOne := int64(-1)
tests := []struct {
name string
replicas int32
readyReplicas int32
currentReplicas int32
updatedReplicas int32
observedGeneration *int64
collisionCount *int64
expectedErr bool
}{
{
name: "valid status",
replicas: 3,
readyReplicas: 3,
currentReplicas: 2,
updatedReplicas: 1,
expectedErr: false,
},
{
name: "invalid replicas",
replicas: -1,
readyReplicas: 3,
currentReplicas: 2,
updatedReplicas: 1,
expectedErr: true,
},
{
name: "invalid readyReplicas",
replicas: 3,
readyReplicas: -1,
currentReplicas: 2,
updatedReplicas: 1,
expectedErr: true,
},
{
name: "invalid currentReplicas",
replicas: 3,
readyReplicas: 3,
currentReplicas: -1,
updatedReplicas: 1,
expectedErr: true,
},
{
name: "invalid updatedReplicas",
replicas: 3,
readyReplicas: 3,
currentReplicas: 2,
updatedReplicas: -1,
expectedErr: true,
},
{
name: "invalid observedGeneration",
replicas: 3,
readyReplicas: 3,
currentReplicas: 2,
updatedReplicas: 1,
observedGeneration: &minusOne,
expectedErr: true,
},
{
name: "invalid collisionCount",
replicas: 3,
readyReplicas: 3,
currentReplicas: 2,
updatedReplicas: 1,
collisionCount: &minusOne,
expectedErr: true,
},
{
name: "readyReplicas greater than replicas",
replicas: 3,
readyReplicas: 4,
currentReplicas: 2,
updatedReplicas: 1,
expectedErr: true,
},
{
name: "currentReplicas greater than replicas",
replicas: 3,
readyReplicas: 3,
currentReplicas: 4,
updatedReplicas: 1,
expectedErr: true,
},
{
name: "updatedReplicas greater than replicas",
replicas: 3,
readyReplicas: 3,
currentReplicas: 2,
updatedReplicas: 4,
expectedErr: true,
},
}
for _, test := range tests {
status := apps.StatefulSetStatus{
Replicas: test.replicas,
ReadyReplicas: test.readyReplicas,
CurrentReplicas: test.currentReplicas,
UpdatedReplicas: test.updatedReplicas,
ObservedGeneration: test.observedGeneration,
CollisionCount: test.collisionCount,
}
errs := ValidateStatefulSetStatus(&status, field.NewPath("status"))
if hasErr := len(errs) > 0; hasErr != test.expectedErr {
t.Errorf("%s: expected error: %t, got error: %t\nerrors: %s", test.name, test.expectedErr, hasErr, errs.ToAggregate().Error())
}
}
}
func TestValidateStatefulSetUpdate(t *testing.T) {
validLabels := map[string]string{"a": "b"}
validPodTemplate := api.PodTemplate{

View File

@ -273,6 +273,15 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) {
**out = **in
}
}
if in.CollisionCount != nil {
in, out := &in.CollisionCount, &out.CollisionCount
if *in == nil {
*out = nil
} else {
*out = new(int64)
**out = **in
}
}
return
}

View File

@ -992,6 +992,11 @@ func (m *StatefulSetStatus) MarshalTo(dAtA []byte) (int, error) {
i++
i = encodeVarintGenerated(dAtA, i, uint64(len(m.UpdateRevision)))
i += copy(dAtA[i:], m.UpdateRevision)
if m.CollisionCount != nil {
dAtA[i] = 0x48
i++
i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount))
}
return i, nil
}
@ -1339,6 +1344,9 @@ func (m *StatefulSetStatus) Size() (n int) {
n += 1 + l + sovGenerated(uint64(l))
l = len(m.UpdateRevision)
n += 1 + l + sovGenerated(uint64(l))
if m.CollisionCount != nil {
n += 1 + sovGenerated(uint64(*m.CollisionCount))
}
return n
}
@ -1623,6 +1631,7 @@ func (this *StatefulSetStatus) String() string {
`UpdatedReplicas:` + fmt.Sprintf("%v", this.UpdatedReplicas) + `,`,
`CurrentRevision:` + fmt.Sprintf("%v", this.CurrentRevision) + `,`,
`UpdateRevision:` + fmt.Sprintf("%v", this.UpdateRevision) + `,`,
`CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`,
`}`,
}, "")
return s
@ -4574,6 +4583,26 @@ func (m *StatefulSetStatus) Unmarshal(dAtA []byte) error {
}
m.UpdateRevision = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 9:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field CollisionCount", wireType)
}
var v int64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenerated
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= (int64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
m.CollisionCount = &v
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
@ -4817,119 +4846,119 @@ func init() {
}
var fileDescriptorGenerated = []byte{
// 1816 bytes of a gzipped FileDescriptorProto
// 1820 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0xcd, 0x6f, 0x1c, 0x49,
0x15, 0x77, 0xcf, 0x87, 0x3d, 0x2e, 0xaf, 0xc7, 0x71, 0xd9, 0xd8, 0xb3, 0x5e, 0x18, 0x5b, 0xcd,
0x6a, 0xd7, 0xd9, 0x5d, 0xf7, 0x6c, 0xbc, 0xcb, 0x6a, 0x37, 0x91, 0x56, 0x78, 0xc6, 0x61, 0xd7,
0x91, 0x8d, 0x9d, 0x1a, 0x3b, 0x88, 0x00, 0x52, 0x6a, 0x7a, 0x2a, 0xe3, 0x8e, 0xfb, 0x4b, 0xdd,
0xd5, 0x43, 0x46, 0x5c, 0xf8, 0x03, 0x90, 0xc2, 0x99, 0xbf, 0x82, 0x23, 0x82, 0x1b, 0x27, 0x5f,
0x10, 0x11, 0x17, 0x72, 0xb2, 0xc8, 0xe4, 0xca, 0x95, 0x4b, 0x24, 0x24, 0x54, 0xd5, 0xd5, 0xdf,
0xdd, 0xf6, 0x18, 0x09, 0x1f, 0xb8, 0x4d, 0xd7, 0x7b, 0xef, 0xf7, 0x5e, 0x55, 0xbd, 0x7a, 0xef,
0xf7, 0x06, 0xfc, 0xf0, 0xec, 0x4b, 0x57, 0xd1, 0xac, 0xd6, 0x99, 0xd7, 0x23, 0x8e, 0x49, 0x28,
0x71, 0x5b, 0x43, 0x62, 0xf6, 0x2d, 0xa7, 0x25, 0x04, 0xd8, 0xd6, 0x5a, 0xd8, 0xb6, 0xdd, 0xd6,
0xf0, 0x4e, 0x8f, 0x50, 0x7c, 0xa7, 0x35, 0x20, 0x26, 0x71, 0x30, 0x25, 0x7d, 0xc5, 0x76, 0x2c,
0x6a, 0xc1, 0x55, 0x5f, 0x51, 0xc1, 0xb6, 0xa6, 0x30, 0x45, 0x45, 0x28, 0xae, 0x6d, 0x0d, 0x34,
0x7a, 0xea, 0xf5, 0x14, 0xd5, 0x32, 0x5a, 0x03, 0x6b, 0x60, 0xb5, 0xb8, 0x7e, 0xcf, 0x7b, 0xca,
0xbf, 0xf8, 0x07, 0xff, 0xe5, 0xe3, 0xac, 0xc9, 0x31, 0x87, 0xaa, 0xe5, 0x90, 0xd6, 0x30, 0xe3,
0x6b, 0xed, 0x76, 0x4c, 0xc7, 0xb6, 0x74, 0x4d, 0x1d, 0x15, 0x85, 0xb5, 0xf6, 0x79, 0xa4, 0x6a,
0x60, 0xf5, 0x54, 0x33, 0x89, 0x33, 0x6a, 0xd9, 0x67, 0x03, 0xb6, 0xe0, 0xb6, 0x0c, 0x42, 0x71,
0x9e, 0x83, 0x56, 0x91, 0x95, 0xe3, 0x99, 0x54, 0x33, 0x48, 0xc6, 0xe0, 0x8b, 0xab, 0x0c, 0x5c,
0xf5, 0x94, 0x18, 0x38, 0x63, 0xf7, 0x59, 0x91, 0x9d, 0x47, 0x35, 0xbd, 0xa5, 0x99, 0xd4, 0xa5,
0x4e, 0xda, 0x48, 0xfe, 0x97, 0x04, 0x60, 0xc7, 0x32, 0xa9, 0x63, 0xe9, 0x3a, 0x71, 0x10, 0x19,
0x6a, 0xae, 0x66, 0x99, 0xf0, 0x09, 0xa8, 0xb1, 0xfd, 0xf4, 0x31, 0xc5, 0x0d, 0x69, 0x43, 0xda,
0x9c, 0xdb, 0xfe, 0x54, 0x89, 0x2e, 0x25, 0x84, 0x57, 0xec, 0xb3, 0x01, 0x5b, 0x70, 0x15, 0xa6,
0xad, 0x0c, 0xef, 0x28, 0x87, 0xbd, 0x67, 0x44, 0xa5, 0x07, 0x84, 0xe2, 0x36, 0x3c, 0xbf, 0x58,
0x9f, 0x1a, 0x5f, 0xac, 0x83, 0x68, 0x0d, 0x85, 0xa8, 0xf0, 0x10, 0x54, 0x38, 0x7a, 0x89, 0xa3,
0x6f, 0x15, 0xa2, 0x8b, 0x4d, 0x2b, 0x08, 0xff, 0xf2, 0xfe, 0x73, 0x4a, 0x4c, 0x16, 0x5e, 0xfb,
0x1d, 0x01, 0x5d, 0xd9, 0xc5, 0x14, 0x23, 0x0e, 0x04, 0x3f, 0x01, 0x35, 0x47, 0x84, 0xdf, 0x28,
0x6f, 0x48, 0x9b, 0xe5, 0xf6, 0x2d, 0xa1, 0x55, 0x0b, 0xb6, 0x85, 0x42, 0x0d, 0xf9, 0x5c, 0x02,
0x2b, 0xd9, 0x7d, 0xef, 0x6b, 0x2e, 0x85, 0x3f, 0xcf, 0xec, 0x5d, 0x99, 0x6c, 0xef, 0xcc, 0x9a,
0xef, 0x3c, 0x74, 0x1c, 0xac, 0xc4, 0xf6, 0x7d, 0x04, 0xaa, 0x1a, 0x25, 0x86, 0xdb, 0x28, 0x6d,
0x94, 0x37, 0xe7, 0xb6, 0x3f, 0x56, 0x0a, 0x72, 0x5d, 0xc9, 0x46, 0xd7, 0x9e, 0x17, 0xb8, 0xd5,
0x3d, 0x86, 0x80, 0x7c, 0x20, 0xf9, 0x37, 0x25, 0x00, 0x76, 0x89, 0xad, 0x5b, 0x23, 0x83, 0x98,
0xf4, 0x06, 0xae, 0x6e, 0x0f, 0x54, 0x5c, 0x9b, 0xa8, 0xe2, 0xea, 0x3e, 0x2c, 0xdc, 0x41, 0x14,
0x54, 0xd7, 0x26, 0x6a, 0x74, 0x69, 0xec, 0x0b, 0x71, 0x08, 0xf8, 0x10, 0x4c, 0xbb, 0x14, 0x53,
0xcf, 0xe5, 0x57, 0x36, 0xb7, 0x7d, 0x7b, 0x12, 0x30, 0x6e, 0xd0, 0xae, 0x0b, 0xb8, 0x69, 0xff,
0x1b, 0x09, 0x20, 0xf9, 0xef, 0x65, 0xb0, 0x14, 0x29, 0x77, 0x2c, 0xb3, 0xaf, 0x51, 0x96, 0xd2,
0xf7, 0x40, 0x85, 0x8e, 0x6c, 0xc2, 0xcf, 0x64, 0xb6, 0xfd, 0x61, 0x10, 0xcc, 0xf1, 0xc8, 0x26,
0x6f, 0x2f, 0xd6, 0x57, 0x73, 0x4c, 0x98, 0x08, 0x71, 0x23, 0xb8, 0x1f, 0xc6, 0x59, 0xe2, 0xe6,
0x9f, 0x27, 0x9d, 0xbf, 0xbd, 0x58, 0xcf, 0xa9, 0x35, 0x4a, 0x88, 0x94, 0x0c, 0x11, 0x7e, 0x00,
0xa6, 0x1d, 0x82, 0x5d, 0xcb, 0x6c, 0x54, 0x38, 0x5a, 0xb8, 0x15, 0xc4, 0x57, 0x91, 0x90, 0xc2,
0xdb, 0x60, 0xc6, 0x20, 0xae, 0x8b, 0x07, 0xa4, 0x51, 0xe5, 0x8a, 0x0b, 0x42, 0x71, 0xe6, 0xc0,
0x5f, 0x46, 0x81, 0x1c, 0x3e, 0x03, 0x75, 0x1d, 0xbb, 0xf4, 0xc4, 0xee, 0x63, 0x4a, 0x8e, 0x35,
0x83, 0x34, 0xa6, 0xf9, 0x81, 0x7e, 0x34, 0xd9, 0xdd, 0x33, 0x8b, 0xf6, 0x8a, 0x40, 0xaf, 0xef,
0x27, 0x90, 0x50, 0x0a, 0x19, 0x0e, 0x01, 0x64, 0x2b, 0xc7, 0x0e, 0x36, 0x5d, 0xff, 0xa0, 0x98,
0xbf, 0x99, 0x6b, 0xfb, 0x5b, 0x13, 0xfe, 0xe0, 0x7e, 0x06, 0x0d, 0xe5, 0x78, 0x90, 0xff, 0x20,
0x81, 0x7a, 0x74, 0x4d, 0x37, 0xf0, 0x56, 0xbf, 0x4d, 0xbe, 0xd5, 0xef, 0x4f, 0x90, 0x9c, 0x05,
0x6f, 0xf4, 0x9f, 0x25, 0x00, 0x23, 0x25, 0x64, 0xe9, 0x7a, 0x0f, 0xab, 0x67, 0x70, 0x03, 0x54,
0x4c, 0x6c, 0x04, 0x39, 0x19, 0x3e, 0x90, 0x1f, 0x63, 0x83, 0x20, 0x2e, 0x81, 0x2f, 0x24, 0x00,
0x3d, 0x7e, 0xf4, 0xfd, 0x1d, 0xd3, 0xb4, 0x28, 0x66, 0xa7, 0x11, 0x04, 0xd4, 0x99, 0x20, 0xa0,
0xc0, 0x97, 0x72, 0x92, 0x41, 0xb9, 0x6f, 0x52, 0x67, 0x14, 0xdd, 0x42, 0x56, 0x01, 0xe5, 0xb8,
0x86, 0x3f, 0x03, 0xc0, 0x11, 0x98, 0xc7, 0x96, 0x78, 0xb6, 0xc5, 0x35, 0x20, 0x70, 0xdf, 0xb1,
0xcc, 0xa7, 0xda, 0x20, 0x2a, 0x2c, 0x28, 0x84, 0x40, 0x31, 0xb8, 0xb5, 0xfb, 0x60, 0xb5, 0x20,
0x4e, 0x78, 0x0b, 0x94, 0xcf, 0xc8, 0xc8, 0x3f, 0x2a, 0xc4, 0x7e, 0xc2, 0x65, 0x50, 0x1d, 0x62,
0xdd, 0x23, 0xfe, 0x9b, 0x44, 0xfe, 0xc7, 0xdd, 0xd2, 0x97, 0x92, 0xfc, 0xfb, 0x6a, 0x3c, 0x53,
0x58, 0xbd, 0x81, 0x9b, 0xac, 0x3d, 0xd8, 0xba, 0xa6, 0x62, 0x97, 0x63, 0x54, 0xdb, 0xef, 0xf8,
0xad, 0xc1, 0x5f, 0x43, 0xa1, 0x14, 0xfe, 0x02, 0xd4, 0x5c, 0xa2, 0x13, 0x95, 0x5a, 0x8e, 0x28,
0x71, 0x9f, 0x4d, 0x98, 0x53, 0xb8, 0x47, 0xf4, 0xae, 0x30, 0xf5, 0xe1, 0x83, 0x2f, 0x14, 0x42,
0xc2, 0x87, 0xa0, 0x46, 0x89, 0x61, 0xeb, 0x98, 0x12, 0x71, 0x7a, 0x89, 0xbc, 0x62, 0xb5, 0x83,
0x81, 0x1d, 0x59, 0xfd, 0x63, 0xa1, 0xc6, 0xab, 0x67, 0x98, 0xa7, 0xc1, 0x2a, 0x0a, 0x61, 0xe0,
0x4f, 0x41, 0xcd, 0xa5, 0xac, 0xab, 0x0f, 0x46, 0xbc, 0xa2, 0x5c, 0xd6, 0x56, 0xe2, 0x75, 0xd4,
0x37, 0x89, 0xa0, 0x83, 0x15, 0x14, 0xc2, 0xc1, 0x1d, 0xb0, 0x60, 0x68, 0x26, 0x22, 0xb8, 0x3f,
0xea, 0x12, 0xd5, 0x32, 0xfb, 0x2e, 0x2f, 0x45, 0xd5, 0xf6, 0xaa, 0x30, 0x5a, 0x38, 0x48, 0x8a,
0x51, 0x5a, 0x1f, 0xee, 0x83, 0xe5, 0xa0, 0xed, 0x7e, 0xab, 0xb9, 0xd4, 0x72, 0x46, 0xfb, 0x9a,
0xa1, 0x51, 0x5e, 0xa0, 0xaa, 0xed, 0xc6, 0xf8, 0x62, 0x7d, 0x19, 0xe5, 0xc8, 0x51, 0xae, 0x15,
0xab, 0x9d, 0x36, 0xf6, 0x5c, 0xd2, 0xe7, 0x05, 0xa7, 0x16, 0xd5, 0xce, 0x23, 0xbe, 0x8a, 0x84,
0x14, 0xfe, 0x24, 0x91, 0xa6, 0xb5, 0xeb, 0xa5, 0x69, 0xbd, 0x38, 0x45, 0xe1, 0x09, 0x58, 0xb5,
0x1d, 0x6b, 0xe0, 0x10, 0xd7, 0xdd, 0x25, 0xb8, 0xaf, 0x6b, 0x26, 0x09, 0x4e, 0x66, 0x96, 0xef,
0xe8, 0xbd, 0xf1, 0xc5, 0xfa, 0xea, 0x51, 0xbe, 0x0a, 0x2a, 0xb2, 0x95, 0xff, 0x5c, 0x01, 0xb7,
0xd2, 0x3d, 0x0e, 0x3e, 0x00, 0xd0, 0xea, 0xb9, 0xc4, 0x19, 0x92, 0xfe, 0x37, 0x3e, 0x71, 0x63,
0xec, 0x46, 0xe2, 0xec, 0x26, 0x7c, 0xb7, 0x87, 0x19, 0x0d, 0x94, 0x63, 0xe5, 0xf3, 0x23, 0xf1,
0x00, 0x4a, 0x3c, 0xd0, 0x18, 0x3f, 0xca, 0x3c, 0x82, 0x1d, 0xb0, 0x20, 0xde, 0x7e, 0x20, 0xe4,
0xc9, 0x1a, 0xbb, 0xf7, 0x93, 0xa4, 0x18, 0xa5, 0xf5, 0xe1, 0x37, 0x60, 0x11, 0x0f, 0xb1, 0xa6,
0xe3, 0x9e, 0x4e, 0x42, 0x90, 0x0a, 0x07, 0x79, 0x57, 0x80, 0x2c, 0xee, 0xa4, 0x15, 0x50, 0xd6,
0x06, 0x1e, 0x80, 0x25, 0xcf, 0xcc, 0x42, 0xf9, 0x79, 0xf8, 0x9e, 0x80, 0x5a, 0x3a, 0xc9, 0xaa,
0xa0, 0x3c, 0x3b, 0xf8, 0x04, 0x00, 0x35, 0x68, 0xcc, 0x6e, 0x63, 0x9a, 0x57, 0xd2, 0x4f, 0x26,
0x78, 0x2f, 0x61, 0x37, 0x8f, 0xaa, 0x58, 0xb8, 0xe4, 0xa2, 0x18, 0x26, 0xbc, 0x07, 0xe6, 0x1d,
0xf6, 0x02, 0xc2, 0x50, 0x67, 0x78, 0xa8, 0xdf, 0x11, 0x66, 0xf3, 0x28, 0x2e, 0x44, 0x49, 0x5d,
0x78, 0x17, 0xd4, 0x55, 0x4b, 0xd7, 0x79, 0xe6, 0x77, 0x2c, 0xcf, 0xa4, 0x3c, 0x79, 0xcb, 0x6d,
0xc8, 0x3a, 0x73, 0x27, 0x21, 0x41, 0x29, 0x4d, 0xf9, 0x4f, 0x52, 0xbc, 0xcd, 0x04, 0xcf, 0x19,
0xde, 0x4d, 0x50, 0x9f, 0x0f, 0x52, 0xd4, 0x67, 0x25, 0x6b, 0x11, 0x63, 0x3e, 0x1a, 0x98, 0x67,
0xc9, 0xaf, 0x99, 0x03, 0xff, 0xc2, 0x45, 0x49, 0xfc, 0xf4, 0xd2, 0xa7, 0x14, 0x6a, 0xc7, 0x1a,
0xe3, 0x22, 0xdf, 0x79, 0x5c, 0x88, 0x92, 0xc8, 0xf2, 0xd7, 0xa0, 0x9e, 0x7c, 0x87, 0x09, 0x4e,
0x2f, 0x5d, 0xc9, 0xe9, 0xdf, 0x48, 0x60, 0xb5, 0xc0, 0x3b, 0xd4, 0x41, 0xdd, 0xc0, 0xcf, 0x63,
0x39, 0x72, 0x25, 0x37, 0x66, 0x53, 0x93, 0xe2, 0x4f, 0x4d, 0xca, 0x9e, 0x49, 0x0f, 0x9d, 0x2e,
0x75, 0x34, 0x73, 0xe0, 0xdf, 0xc3, 0x41, 0x02, 0x0b, 0xa5, 0xb0, 0xe1, 0x63, 0x50, 0x33, 0xf0,
0xf3, 0xae, 0xe7, 0x0c, 0xf2, 0xce, 0x6b, 0x32, 0x3f, 0xbc, 0x7f, 0x1c, 0x08, 0x14, 0x14, 0xe2,
0xc9, 0x87, 0x60, 0x23, 0xb1, 0x49, 0x56, 0x2a, 0xc8, 0x53, 0x4f, 0xef, 0x92, 0xe8, 0xc2, 0x3f,
0x06, 0xb3, 0x36, 0x76, 0xa8, 0x16, 0x96, 0x8b, 0x6a, 0x7b, 0x7e, 0x7c, 0xb1, 0x3e, 0x7b, 0x14,
0x2c, 0xa2, 0x48, 0x2e, 0xff, 0x5b, 0x02, 0xd5, 0xae, 0x8a, 0x75, 0x72, 0x03, 0xa3, 0xc3, 0x6e,
0x62, 0x74, 0x90, 0x0b, 0x93, 0x88, 0xc7, 0x53, 0x38, 0x35, 0xec, 0xa7, 0xa6, 0x86, 0xf7, 0xaf,
0xc0, 0xb9, 0x7c, 0x60, 0xf8, 0x0a, 0xcc, 0x86, 0xee, 0x12, 0x55, 0x52, 0xba, 0xaa, 0x4a, 0xca,
0xbf, 0x2b, 0x81, 0xb9, 0x98, 0x8b, 0xeb, 0x59, 0xb3, 0xe3, 0x8e, 0x11, 0x0d, 0x56, 0x86, 0xb6,
0x27, 0xd9, 0x88, 0x12, 0x90, 0x0a, 0x9f, 0xbf, 0x45, 0xdd, 0x3b, 0xcb, 0x35, 0xbe, 0x06, 0x75,
0x8a, 0x9d, 0x01, 0xa1, 0x81, 0x8c, 0x1f, 0xd8, 0x6c, 0xc4, 0xf4, 0x8f, 0x13, 0x52, 0x94, 0xd2,
0x5e, 0xbb, 0x07, 0xe6, 0x13, 0xce, 0xae, 0x45, 0xc2, 0x5e, 0xb0, 0xc3, 0x89, 0x92, 0xf3, 0x06,
0xb2, 0xeb, 0x41, 0x22, 0xbb, 0x36, 0x8b, 0x0f, 0x33, 0xf6, 0x64, 0x8a, 0x72, 0x0c, 0xa5, 0x72,
0xec, 0xa3, 0x89, 0xd0, 0x2e, 0xcf, 0xb4, 0x3f, 0x4a, 0x60, 0x21, 0xa6, 0x7d, 0x03, 0x13, 0xcc,
0x5e, 0x72, 0x82, 0x79, 0x7f, 0x92, 0x4d, 0x14, 0x8c, 0x30, 0x7f, 0xa9, 0x26, 0x82, 0xff, 0xbf,
0x27, 0xd5, 0xbf, 0x02, 0xcb, 0x43, 0x4b, 0xf7, 0x0c, 0xd2, 0xd1, 0xb1, 0x66, 0x04, 0x0a, 0x8c,
0xc1, 0x94, 0xd3, 0x7f, 0x54, 0x84, 0xf0, 0xc4, 0x71, 0x35, 0x97, 0x12, 0x93, 0x3e, 0x8a, 0x2c,
0xdb, 0xdf, 0x15, 0x4e, 0x96, 0x1f, 0xe5, 0xc0, 0xa1, 0x5c, 0x27, 0xf0, 0x07, 0x60, 0x8e, 0x11,
0x38, 0x4d, 0x25, 0x6c, 0x16, 0x14, 0xd3, 0xff, 0x92, 0x00, 0x9a, 0xeb, 0x46, 0x22, 0x14, 0xd7,
0x83, 0xa7, 0x60, 0xc9, 0xb6, 0xfa, 0x07, 0xd8, 0xc4, 0x03, 0xc2, 0xda, 0xde, 0x11, 0xff, 0x43,
0x93, 0x33, 0xed, 0xd9, 0xf6, 0x17, 0x01, 0x53, 0x3a, 0xca, 0xaa, 0xbc, 0x65, 0x94, 0x35, 0xbb,
0xcc, 0x79, 0x40, 0x1e, 0x24, 0x74, 0x40, 0xdd, 0x13, 0xed, 0x47, 0x0c, 0x1e, 0xfe, 0xfc, 0xbf,
0x3d, 0x49, 0x86, 0x9d, 0x24, 0x2c, 0xa3, 0x6a, 0x94, 0x5c, 0x47, 0x29, 0x0f, 0x85, 0x83, 0x44,
0xed, 0xbf, 0x19, 0x24, 0xe4, 0xbf, 0x96, 0xc1, 0x62, 0xe6, 0xe9, 0xc2, 0x1f, 0x5d, 0xc2, 0xb8,
0x57, 0xfe, 0x67, 0x6c, 0x3b, 0x43, 0x18, 0xcb, 0xd7, 0x20, 0x8c, 0x3b, 0x60, 0x41, 0xf5, 0x1c,
0x87, 0xcd, 0xfa, 0x49, 0x96, 0x1d, 0x52, 0xf5, 0x4e, 0x52, 0x8c, 0xd2, 0xfa, 0x79, 0x6c, 0xbf,
0x7a, 0x4d, 0xb6, 0x1f, 0x8f, 0x42, 0x30, 0x36, 0x3f, 0xed, 0xb2, 0x51, 0x08, 0xe2, 0x96, 0xd6,
0x67, 0xdd, 0xca, 0x47, 0x0d, 0x11, 0x66, 0x92, 0xdd, 0xea, 0x24, 0x21, 0x45, 0x29, 0x6d, 0xf9,
0x6f, 0x12, 0x78, 0xb7, 0x30, 0xcb, 0xe0, 0x4e, 0x82, 0x04, 0x6f, 0xa5, 0x48, 0xf0, 0xf7, 0x0a,
0x0d, 0x63, 0x5c, 0xd8, 0xc9, 0xe7, 0xc2, 0x5f, 0x4d, 0xc6, 0x85, 0x73, 0x88, 0xda, 0xd5, 0xa4,
0xb8, 0xbd, 0x75, 0xfe, 0xba, 0x39, 0xf5, 0xf2, 0x75, 0x73, 0xea, 0xd5, 0xeb, 0xe6, 0xd4, 0xaf,
0xc7, 0x4d, 0xe9, 0x7c, 0xdc, 0x94, 0x5e, 0x8e, 0x9b, 0xd2, 0xab, 0x71, 0x53, 0xfa, 0xc7, 0xb8,
0x29, 0xfd, 0xf6, 0x4d, 0x73, 0xea, 0xf1, 0x8c, 0xf0, 0xf8, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff,
0xa4, 0xc5, 0x7c, 0x3a, 0x7d, 0x19, 0x00, 0x00,
0x15, 0x77, 0xcf, 0x87, 0x3d, 0x53, 0x5e, 0x8f, 0xe3, 0xb2, 0xb1, 0x67, 0xbd, 0x30, 0xb6, 0x86,
0xd5, 0xae, 0xb3, 0xbb, 0xee, 0xd9, 0x78, 0x97, 0xd5, 0x26, 0x91, 0x22, 0x3c, 0xe3, 0x90, 0x38,
0xb2, 0xb1, 0x53, 0x63, 0x07, 0x11, 0x40, 0x4a, 0x4d, 0x4f, 0x65, 0xdc, 0x71, 0x7f, 0xa9, 0xbb,
0x7a, 0xc8, 0x88, 0x0b, 0x77, 0x90, 0xc2, 0x99, 0xbf, 0x82, 0x23, 0x82, 0x1b, 0x27, 0x5f, 0x90,
0x22, 0x2e, 0xe4, 0x64, 0x91, 0xc9, 0x95, 0x2b, 0x97, 0x48, 0x48, 0xa8, 0xaa, 0xab, 0xbf, 0xbb,
0xed, 0x31, 0x12, 0x3e, 0x70, 0x9b, 0xae, 0xf7, 0xde, 0xef, 0xbd, 0xaa, 0x7a, 0xf5, 0xde, 0xef,
0x0d, 0xf8, 0xe1, 0xe9, 0xb7, 0x8e, 0xac, 0x9a, 0xad, 0x53, 0xb7, 0x47, 0x6c, 0x83, 0x50, 0xe2,
0xb4, 0x86, 0xc4, 0xe8, 0x9b, 0x76, 0x4b, 0x08, 0xb0, 0xa5, 0xb6, 0xb0, 0x65, 0x39, 0xad, 0xe1,
0xad, 0x1e, 0xa1, 0xf8, 0x56, 0x6b, 0x40, 0x0c, 0x62, 0x63, 0x4a, 0xfa, 0xb2, 0x65, 0x9b, 0xd4,
0x84, 0x2b, 0x9e, 0xa2, 0x8c, 0x2d, 0x55, 0x66, 0x8a, 0xb2, 0x50, 0x5c, 0xdd, 0x1c, 0xa8, 0xf4,
0xc4, 0xed, 0xc9, 0x8a, 0xa9, 0xb7, 0x06, 0xe6, 0xc0, 0x6c, 0x71, 0xfd, 0x9e, 0xfb, 0x9c, 0x7f,
0xf1, 0x0f, 0xfe, 0xcb, 0xc3, 0x59, 0x6d, 0x46, 0x1c, 0x2a, 0xa6, 0x4d, 0x5a, 0xc3, 0x94, 0xaf,
0xd5, 0x9b, 0x11, 0x1d, 0xcb, 0xd4, 0x54, 0x65, 0x94, 0x17, 0xd6, 0xea, 0xd7, 0xa1, 0xaa, 0x8e,
0x95, 0x13, 0xd5, 0x20, 0xf6, 0xa8, 0x65, 0x9d, 0x0e, 0xd8, 0x82, 0xd3, 0xd2, 0x09, 0xc5, 0x59,
0x0e, 0x5a, 0x79, 0x56, 0xb6, 0x6b, 0x50, 0x55, 0x27, 0x29, 0x83, 0x6f, 0x2e, 0x33, 0x70, 0x94,
0x13, 0xa2, 0xe3, 0x94, 0xdd, 0x57, 0x79, 0x76, 0x2e, 0x55, 0xb5, 0x96, 0x6a, 0x50, 0x87, 0xda,
0x49, 0xa3, 0xe6, 0xbf, 0x24, 0x00, 0x3b, 0xa6, 0x41, 0x6d, 0x53, 0xd3, 0x88, 0x8d, 0xc8, 0x50,
0x75, 0x54, 0xd3, 0x80, 0xcf, 0x40, 0x85, 0xed, 0xa7, 0x8f, 0x29, 0xae, 0x4b, 0xeb, 0xd2, 0xc6,
0xec, 0xd6, 0x97, 0x72, 0x78, 0x29, 0x01, 0xbc, 0x6c, 0x9d, 0x0e, 0xd8, 0x82, 0x23, 0x33, 0x6d,
0x79, 0x78, 0x4b, 0x3e, 0xe8, 0xbd, 0x20, 0x0a, 0xdd, 0x27, 0x14, 0xb7, 0xe1, 0xd9, 0xf9, 0xda,
0xd4, 0xf8, 0x7c, 0x0d, 0x84, 0x6b, 0x28, 0x40, 0x85, 0x07, 0xa0, 0xc4, 0xd1, 0x0b, 0x1c, 0x7d,
0x33, 0x17, 0x5d, 0x6c, 0x5a, 0x46, 0xf8, 0x97, 0xf7, 0x5f, 0x52, 0x62, 0xb0, 0xf0, 0xda, 0x1f,
0x08, 0xe8, 0xd2, 0x0e, 0xa6, 0x18, 0x71, 0x20, 0xf8, 0x05, 0xa8, 0xd8, 0x22, 0xfc, 0x7a, 0x71,
0x5d, 0xda, 0x28, 0xb6, 0x6f, 0x08, 0xad, 0x8a, 0xbf, 0x2d, 0x14, 0x68, 0x34, 0xcf, 0x24, 0xb0,
0x9c, 0xde, 0xf7, 0x9e, 0xea, 0x50, 0xf8, 0xf3, 0xd4, 0xde, 0xe5, 0xc9, 0xf6, 0xce, 0xac, 0xf9,
0xce, 0x03, 0xc7, 0xfe, 0x4a, 0x64, 0xdf, 0x87, 0xa0, 0xac, 0x52, 0xa2, 0x3b, 0xf5, 0xc2, 0x7a,
0x71, 0x63, 0x76, 0xeb, 0x73, 0x39, 0x27, 0xd7, 0xe5, 0x74, 0x74, 0xed, 0x39, 0x81, 0x5b, 0xde,
0x65, 0x08, 0xc8, 0x03, 0x6a, 0xfe, 0xb6, 0x00, 0xc0, 0x0e, 0xb1, 0x34, 0x73, 0xa4, 0x13, 0x83,
0x5e, 0xc3, 0xd5, 0xed, 0x82, 0x92, 0x63, 0x11, 0x45, 0x5c, 0xdd, 0xa7, 0xb9, 0x3b, 0x08, 0x83,
0xea, 0x5a, 0x44, 0x09, 0x2f, 0x8d, 0x7d, 0x21, 0x0e, 0x01, 0x1f, 0x83, 0x69, 0x87, 0x62, 0xea,
0x3a, 0xfc, 0xca, 0x66, 0xb7, 0x6e, 0x4e, 0x02, 0xc6, 0x0d, 0xda, 0x35, 0x01, 0x37, 0xed, 0x7d,
0x23, 0x01, 0xd4, 0xfc, 0x7b, 0x11, 0x2c, 0x86, 0xca, 0x1d, 0xd3, 0xe8, 0xab, 0x94, 0xa5, 0xf4,
0x5d, 0x50, 0xa2, 0x23, 0x8b, 0xf0, 0x33, 0xa9, 0xb6, 0x3f, 0xf5, 0x83, 0x39, 0x1a, 0x59, 0xe4,
0xfd, 0xf9, 0xda, 0x4a, 0x86, 0x09, 0x13, 0x21, 0x6e, 0x04, 0xf7, 0x82, 0x38, 0x0b, 0xdc, 0xfc,
0xeb, 0xb8, 0xf3, 0xf7, 0xe7, 0x6b, 0x19, 0xb5, 0x46, 0x0e, 0x90, 0xe2, 0x21, 0xc2, 0x4f, 0xc0,
0xb4, 0x4d, 0xb0, 0x63, 0x1a, 0xf5, 0x12, 0x47, 0x0b, 0xb6, 0x82, 0xf8, 0x2a, 0x12, 0x52, 0x78,
0x13, 0xcc, 0xe8, 0xc4, 0x71, 0xf0, 0x80, 0xd4, 0xcb, 0x5c, 0x71, 0x5e, 0x28, 0xce, 0xec, 0x7b,
0xcb, 0xc8, 0x97, 0xc3, 0x17, 0xa0, 0xa6, 0x61, 0x87, 0x1e, 0x5b, 0x7d, 0x4c, 0xc9, 0x91, 0xaa,
0x93, 0xfa, 0x34, 0x3f, 0xd0, 0xcf, 0x26, 0xbb, 0x7b, 0x66, 0xd1, 0x5e, 0x16, 0xe8, 0xb5, 0xbd,
0x18, 0x12, 0x4a, 0x20, 0xc3, 0x21, 0x80, 0x6c, 0xe5, 0xc8, 0xc6, 0x86, 0xe3, 0x1d, 0x14, 0xf3,
0x37, 0x73, 0x65, 0x7f, 0xab, 0xc2, 0x1f, 0xdc, 0x4b, 0xa1, 0xa1, 0x0c, 0x0f, 0xcd, 0x3f, 0x4a,
0xa0, 0x16, 0x5e, 0xd3, 0x35, 0xbc, 0xd5, 0x87, 0xf1, 0xb7, 0xfa, 0xfd, 0x09, 0x92, 0x33, 0xe7,
0x8d, 0xfe, 0xb3, 0x00, 0x60, 0xa8, 0x84, 0x4c, 0x4d, 0xeb, 0x61, 0xe5, 0x14, 0xae, 0x83, 0x92,
0x81, 0x75, 0x3f, 0x27, 0x83, 0x07, 0xf2, 0x63, 0xac, 0x13, 0xc4, 0x25, 0xf0, 0x95, 0x04, 0xa0,
0xcb, 0x8f, 0xbe, 0xbf, 0x6d, 0x18, 0x26, 0xc5, 0xec, 0x34, 0xfc, 0x80, 0x3a, 0x13, 0x04, 0xe4,
0xfb, 0x92, 0x8f, 0x53, 0x28, 0xf7, 0x0d, 0x6a, 0x8f, 0xc2, 0x5b, 0x48, 0x2b, 0xa0, 0x0c, 0xd7,
0xf0, 0x67, 0x00, 0xd8, 0x02, 0xf3, 0xc8, 0x14, 0xcf, 0x36, 0xbf, 0x06, 0xf8, 0xee, 0x3b, 0xa6,
0xf1, 0x5c, 0x1d, 0x84, 0x85, 0x05, 0x05, 0x10, 0x28, 0x02, 0xb7, 0x7a, 0x1f, 0xac, 0xe4, 0xc4,
0x09, 0x6f, 0x80, 0xe2, 0x29, 0x19, 0x79, 0x47, 0x85, 0xd8, 0x4f, 0xb8, 0x04, 0xca, 0x43, 0xac,
0xb9, 0xc4, 0x7b, 0x93, 0xc8, 0xfb, 0xb8, 0x53, 0xf8, 0x56, 0x6a, 0xfe, 0xa1, 0x1c, 0xcd, 0x14,
0x56, 0x6f, 0xe0, 0x06, 0x6b, 0x0f, 0x96, 0xa6, 0x2a, 0xd8, 0xe1, 0x18, 0xe5, 0xf6, 0x07, 0x5e,
0x6b, 0xf0, 0xd6, 0x50, 0x20, 0x85, 0xbf, 0x00, 0x15, 0x87, 0x68, 0x44, 0xa1, 0xa6, 0x2d, 0x4a,
0xdc, 0x57, 0x13, 0xe6, 0x14, 0xee, 0x11, 0xad, 0x2b, 0x4c, 0x3d, 0x78, 0xff, 0x0b, 0x05, 0x90,
0xf0, 0x31, 0xa8, 0x50, 0xa2, 0x5b, 0x1a, 0xa6, 0x44, 0x9c, 0x5e, 0x2c, 0xaf, 0x58, 0xed, 0x60,
0x60, 0x87, 0x66, 0xff, 0x48, 0xa8, 0xf1, 0xea, 0x19, 0xe4, 0xa9, 0xbf, 0x8a, 0x02, 0x18, 0xf8,
0x53, 0x50, 0x71, 0x28, 0xeb, 0xea, 0x83, 0x11, 0xaf, 0x28, 0x17, 0xb5, 0x95, 0x68, 0x1d, 0xf5,
0x4c, 0x42, 0x68, 0x7f, 0x05, 0x05, 0x70, 0x70, 0x1b, 0xcc, 0xeb, 0xaa, 0x81, 0x08, 0xee, 0x8f,
0xba, 0x44, 0x31, 0x8d, 0xbe, 0xc3, 0x4b, 0x51, 0xb9, 0xbd, 0x22, 0x8c, 0xe6, 0xf7, 0xe3, 0x62,
0x94, 0xd4, 0x87, 0x7b, 0x60, 0xc9, 0x6f, 0xbb, 0x0f, 0x55, 0x87, 0x9a, 0xf6, 0x68, 0x4f, 0xd5,
0x55, 0xca, 0x0b, 0x54, 0xb9, 0x5d, 0x1f, 0x9f, 0xaf, 0x2d, 0xa1, 0x0c, 0x39, 0xca, 0xb4, 0x62,
0xb5, 0xd3, 0xc2, 0xae, 0x43, 0xfa, 0xbc, 0xe0, 0x54, 0xc2, 0xda, 0x79, 0xc8, 0x57, 0x91, 0x90,
0xc2, 0x9f, 0xc4, 0xd2, 0xb4, 0x72, 0xb5, 0x34, 0xad, 0xe5, 0xa7, 0x28, 0x3c, 0x06, 0x2b, 0x96,
0x6d, 0x0e, 0x6c, 0xe2, 0x38, 0x3b, 0x04, 0xf7, 0x35, 0xd5, 0x20, 0xfe, 0xc9, 0x54, 0xf9, 0x8e,
0x3e, 0x1a, 0x9f, 0xaf, 0xad, 0x1c, 0x66, 0xab, 0xa0, 0x3c, 0xdb, 0xe6, 0x5f, 0x4a, 0xe0, 0x46,
0xb2, 0xc7, 0xc1, 0x47, 0x00, 0x9a, 0x3d, 0x87, 0xd8, 0x43, 0xd2, 0x7f, 0xe0, 0x11, 0x37, 0xc6,
0x6e, 0x24, 0xce, 0x6e, 0x82, 0x77, 0x7b, 0x90, 0xd2, 0x40, 0x19, 0x56, 0x1e, 0x3f, 0x12, 0x0f,
0xa0, 0xc0, 0x03, 0x8d, 0xf0, 0xa3, 0xd4, 0x23, 0xd8, 0x06, 0xf3, 0xe2, 0xed, 0xfb, 0x42, 0x9e,
0xac, 0x91, 0x7b, 0x3f, 0x8e, 0x8b, 0x51, 0x52, 0x1f, 0x3e, 0x00, 0x0b, 0x78, 0x88, 0x55, 0x0d,
0xf7, 0x34, 0x12, 0x80, 0x94, 0x38, 0xc8, 0x87, 0x02, 0x64, 0x61, 0x3b, 0xa9, 0x80, 0xd2, 0x36,
0x70, 0x1f, 0x2c, 0xba, 0x46, 0x1a, 0xca, 0xcb, 0xc3, 0x8f, 0x04, 0xd4, 0xe2, 0x71, 0x5a, 0x05,
0x65, 0xd9, 0xc1, 0x67, 0x00, 0x28, 0x7e, 0x63, 0x76, 0xea, 0xd3, 0xbc, 0x92, 0x7e, 0x31, 0xc1,
0x7b, 0x09, 0xba, 0x79, 0x58, 0xc5, 0x82, 0x25, 0x07, 0x45, 0x30, 0xe1, 0x5d, 0x30, 0x67, 0xb3,
0x17, 0x10, 0x84, 0x3a, 0xc3, 0x43, 0xfd, 0x8e, 0x30, 0x9b, 0x43, 0x51, 0x21, 0x8a, 0xeb, 0xc2,
0x3b, 0xa0, 0xa6, 0x98, 0x9a, 0xc6, 0x33, 0xbf, 0x63, 0xba, 0x06, 0xe5, 0xc9, 0x5b, 0x6c, 0x43,
0xd6, 0x99, 0x3b, 0x31, 0x09, 0x4a, 0x68, 0x36, 0xff, 0x2c, 0x45, 0xdb, 0x8c, 0xff, 0x9c, 0xe1,
0x9d, 0x18, 0xf5, 0xf9, 0x24, 0x41, 0x7d, 0x96, 0xd3, 0x16, 0x11, 0xe6, 0xa3, 0x82, 0x39, 0x96,
0xfc, 0xaa, 0x31, 0xf0, 0x2e, 0x5c, 0x94, 0xc4, 0x2f, 0x2f, 0x7c, 0x4a, 0x81, 0x76, 0xa4, 0x31,
0x2e, 0xf0, 0x9d, 0x47, 0x85, 0x28, 0x8e, 0xdc, 0xbc, 0x07, 0x6a, 0xf1, 0x77, 0x18, 0xe3, 0xf4,
0xd2, 0xa5, 0x9c, 0xfe, 0x9d, 0x04, 0x56, 0x72, 0xbc, 0x43, 0x0d, 0xd4, 0x74, 0xfc, 0x32, 0x92,
0x23, 0x97, 0x72, 0x63, 0x36, 0x35, 0xc9, 0xde, 0xd4, 0x24, 0xef, 0x1a, 0xf4, 0xc0, 0xee, 0x52,
0x5b, 0x35, 0x06, 0xde, 0x3d, 0xec, 0xc7, 0xb0, 0x50, 0x02, 0x1b, 0x3e, 0x05, 0x15, 0x1d, 0xbf,
0xec, 0xba, 0xf6, 0x20, 0xeb, 0xbc, 0x26, 0xf3, 0xc3, 0xfb, 0xc7, 0xbe, 0x40, 0x41, 0x01, 0x5e,
0xf3, 0x00, 0xac, 0xc7, 0x36, 0xc9, 0x4a, 0x05, 0x79, 0xee, 0x6a, 0x5d, 0x12, 0x5e, 0xf8, 0xe7,
0xa0, 0x6a, 0x61, 0x9b, 0xaa, 0x41, 0xb9, 0x28, 0xb7, 0xe7, 0xc6, 0xe7, 0x6b, 0xd5, 0x43, 0x7f,
0x11, 0x85, 0xf2, 0xe6, 0xbf, 0x25, 0x50, 0xee, 0x2a, 0x58, 0x23, 0xd7, 0x30, 0x3a, 0xec, 0xc4,
0x46, 0x87, 0x66, 0x6e, 0x12, 0xf1, 0x78, 0x72, 0xa7, 0x86, 0xbd, 0xc4, 0xd4, 0xf0, 0xf1, 0x25,
0x38, 0x17, 0x0f, 0x0c, 0xb7, 0x41, 0x35, 0x70, 0x17, 0xab, 0x92, 0xd2, 0x65, 0x55, 0xb2, 0xf9,
0xfb, 0x02, 0x98, 0x8d, 0xb8, 0xb8, 0x9a, 0x35, 0x3b, 0xee, 0x08, 0xd1, 0x60, 0x65, 0x68, 0x6b,
0x92, 0x8d, 0xc8, 0x3e, 0xa9, 0xf0, 0xf8, 0x5b, 0xd8, 0xbd, 0xd3, 0x5c, 0xe3, 0x1e, 0xa8, 0x51,
0x6c, 0x0f, 0x08, 0xf5, 0x65, 0xfc, 0xc0, 0xaa, 0x21, 0xd3, 0x3f, 0x8a, 0x49, 0x51, 0x42, 0x7b,
0xf5, 0x2e, 0x98, 0x8b, 0x39, 0xbb, 0x12, 0x09, 0x7b, 0xc5, 0x0e, 0x27, 0x4c, 0xce, 0x6b, 0xc8,
0xae, 0x47, 0xb1, 0xec, 0xda, 0xc8, 0x3f, 0xcc, 0xc8, 0x93, 0xc9, 0xcb, 0x31, 0x94, 0xc8, 0xb1,
0xcf, 0x26, 0x42, 0xbb, 0x38, 0xd3, 0xfe, 0x24, 0x81, 0xf9, 0x88, 0xf6, 0x35, 0x4c, 0x30, 0xbb,
0xf1, 0x09, 0xe6, 0xe3, 0x49, 0x36, 0x91, 0x33, 0xc2, 0xfc, 0xb5, 0x1c, 0x0b, 0xfe, 0xff, 0x9e,
0x54, 0xff, 0x0a, 0x2c, 0x0d, 0x4d, 0xcd, 0xd5, 0x49, 0x47, 0xc3, 0xaa, 0xee, 0x2b, 0x30, 0x06,
0x53, 0x4c, 0xfe, 0x51, 0x11, 0xc0, 0x13, 0xdb, 0x51, 0x1d, 0x4a, 0x0c, 0xfa, 0x24, 0xb4, 0x6c,
0x7f, 0x57, 0x38, 0x59, 0x7a, 0x92, 0x01, 0x87, 0x32, 0x9d, 0xc0, 0x1f, 0x80, 0x59, 0x46, 0xe0,
0x54, 0x85, 0xb0, 0x59, 0x50, 0x4c, 0xff, 0x8b, 0x02, 0x68, 0xb6, 0x1b, 0x8a, 0x50, 0x54, 0x0f,
0x9e, 0x80, 0x45, 0xcb, 0xec, 0xef, 0x63, 0x03, 0x0f, 0x08, 0x6b, 0x7b, 0x87, 0xfc, 0x0f, 0x4d,
0xce, 0xb4, 0xab, 0xed, 0x6f, 0x7c, 0xa6, 0x74, 0x98, 0x56, 0x79, 0xcf, 0x28, 0x6b, 0x7a, 0x99,
0xf3, 0x80, 0x2c, 0x48, 0x68, 0x83, 0x9a, 0x2b, 0xda, 0x8f, 0x18, 0x3c, 0xbc, 0xf9, 0x7f, 0x6b,
0x92, 0x0c, 0x3b, 0x8e, 0x59, 0x86, 0xd5, 0x28, 0xbe, 0x8e, 0x12, 0x1e, 0x72, 0x07, 0x89, 0xca,
0x7f, 0x33, 0x48, 0x34, 0x7f, 0x53, 0x02, 0x0b, 0xa9, 0xa7, 0x0b, 0x7f, 0x74, 0x01, 0xe3, 0x5e,
0xfe, 0x9f, 0xb1, 0xed, 0x14, 0x61, 0x2c, 0x5e, 0x81, 0x30, 0x6e, 0x83, 0x79, 0xc5, 0xb5, 0x6d,
0x36, 0xeb, 0xc7, 0x59, 0x76, 0x40, 0xd5, 0x3b, 0x71, 0x31, 0x4a, 0xea, 0x67, 0xb1, 0xfd, 0xf2,
0x15, 0xd9, 0x7e, 0x34, 0x0a, 0xc1, 0xd8, 0xbc, 0xb4, 0x4b, 0x47, 0x21, 0x88, 0x5b, 0x52, 0x9f,
0x75, 0x2b, 0x0f, 0x35, 0x40, 0x98, 0x89, 0x77, 0xab, 0xe3, 0x98, 0x14, 0x25, 0xb4, 0x33, 0x98,
0x73, 0x75, 0x62, 0xe6, 0xfc, 0x37, 0x09, 0x7c, 0x98, 0x9b, 0xa1, 0x70, 0x3b, 0x46, 0xa0, 0x37,
0x13, 0x04, 0xfa, 0x7b, 0xb9, 0x86, 0x11, 0x1e, 0x6d, 0x67, 0xf3, 0xe8, 0xdb, 0x93, 0xf1, 0xe8,
0x0c, 0x92, 0x77, 0x39, 0xa1, 0x6e, 0x6f, 0x9e, 0xbd, 0x6d, 0x4c, 0xbd, 0x7e, 0xdb, 0x98, 0x7a,
0xf3, 0xb6, 0x31, 0xf5, 0xeb, 0x71, 0x43, 0x3a, 0x1b, 0x37, 0xa4, 0xd7, 0xe3, 0x86, 0xf4, 0x66,
0xdc, 0x90, 0xfe, 0x31, 0x6e, 0x48, 0xbf, 0x7b, 0xd7, 0x98, 0x7a, 0x3a, 0x23, 0x3c, 0xfe, 0x27,
0x00, 0x00, 0xff, 0xff, 0x72, 0x04, 0xd9, 0xa7, 0xb9, 0x19, 0x00, 0x00,
}

View File

@ -429,6 +429,12 @@ message StatefulSetStatus {
// updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence
// [replicas-updatedReplicas,replicas)
optional string updateRevision = 7;
// collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller
// uses this field as a collision avoidance mechanism when it needs to create the name for the
// newest ControllerRevision.
// +optional
optional int64 collisionCount = 9;
}
// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet

View File

@ -2419,7 +2419,7 @@ func (x *StatefulSetStatus) CodecEncodeSelf(e *codec1978.Encoder) {
} else {
yysep2 := !z.EncBinary()
yy2arr2 := z.EncBasicHandle().StructToArray
var yyq2 [7]bool
var yyq2 [8]bool
_, _, _ = yysep2, yyq2, yy2arr2
const yyr2 bool = false
yyq2[0] = x.ObservedGeneration != nil
@ -2428,9 +2428,10 @@ func (x *StatefulSetStatus) CodecEncodeSelf(e *codec1978.Encoder) {
yyq2[4] = x.UpdatedReplicas != 0
yyq2[5] = x.CurrentRevision != ""
yyq2[6] = x.UpdateRevision != ""
yyq2[7] = x.CollisionCount != nil
var yynn2 int
if yyr2 || yy2arr2 {
r.EncodeArrayStart(7)
r.EncodeArrayStart(8)
} else {
yynn2 = 1
for _, b := range yyq2 {
@ -2620,6 +2621,41 @@ func (x *StatefulSetStatus) CodecEncodeSelf(e *codec1978.Encoder) {
}
}
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
if yyq2[7] {
if x.CollisionCount == nil {
r.EncodeNil()
} else {
yy27 := *x.CollisionCount
yym28 := z.EncBinary()
_ = yym28
if false {
} else {
r.EncodeInt(int64(yy27))
}
}
} else {
r.EncodeNil()
}
} else {
if yyq2[7] {
z.EncSendContainerState(codecSelfer_containerMapKey1234)
r.EncodeString(codecSelferC_UTF81234, string("collisionCount"))
z.EncSendContainerState(codecSelfer_containerMapValue1234)
if x.CollisionCount == nil {
r.EncodeNil()
} else {
yy29 := *x.CollisionCount
yym30 := z.EncBinary()
_ = yym30
if false {
} else {
r.EncodeInt(int64(yy29))
}
}
}
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
} else {
@ -2769,6 +2805,22 @@ func (x *StatefulSetStatus) codecDecodeSelfFromMap(l int, d *codec1978.Decoder)
*((*string)(yyv16)) = r.DecodeString()
}
}
case "collisionCount":
if r.TryDecodeAsNil() {
if x.CollisionCount != nil {
x.CollisionCount = nil
}
} else {
if x.CollisionCount == nil {
x.CollisionCount = new(int64)
}
yym19 := z.DecBinary()
_ = yym19
if false {
} else {
*((*int64)(x.CollisionCount)) = int64(r.DecodeInt(64))
}
}
default:
z.DecStructFieldNotFound(-1, yys3)
} // end switch yys3
@ -2780,16 +2832,16 @@ func (x *StatefulSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder
var h codecSelfer1234
z, r := codec1978.GenHelperDecoder(d)
_, _, _ = h, z, r
var yyj18 int
var yyb18 bool
var yyhl18 bool = l >= 0
yyj18++
if yyhl18 {
yyb18 = yyj18 > l
var yyj20 int
var yyb20 bool
var yyhl20 bool = l >= 0
yyj20++
if yyhl20 {
yyb20 = yyj20 > l
} else {
yyb18 = r.CheckBreak()
yyb20 = r.CheckBreak()
}
if yyb18 {
if yyb20 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -2802,20 +2854,20 @@ func (x *StatefulSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder
if x.ObservedGeneration == nil {
x.ObservedGeneration = new(int64)
}
yym20 := z.DecBinary()
_ = yym20
yym22 := z.DecBinary()
_ = yym22
if false {
} else {
*((*int64)(x.ObservedGeneration)) = int64(r.DecodeInt(64))
}
}
yyj18++
if yyhl18 {
yyb18 = yyj18 > l
yyj20++
if yyhl20 {
yyb20 = yyj20 > l
} else {
yyb18 = r.CheckBreak()
yyb20 = r.CheckBreak()
}
if yyb18 {
if yyb20 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -2823,29 +2875,7 @@ func (x *StatefulSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder
if r.TryDecodeAsNil() {
x.Replicas = 0
} else {
yyv21 := &x.Replicas
yym22 := z.DecBinary()
_ = yym22
if false {
} else {
*((*int32)(yyv21)) = int32(r.DecodeInt(32))
}
}
yyj18++
if yyhl18 {
yyb18 = yyj18 > l
} else {
yyb18 = r.CheckBreak()
}
if yyb18 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.ReadyReplicas = 0
} else {
yyv23 := &x.ReadyReplicas
yyv23 := &x.Replicas
yym24 := z.DecBinary()
_ = yym24
if false {
@ -2853,21 +2883,21 @@ func (x *StatefulSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder
*((*int32)(yyv23)) = int32(r.DecodeInt(32))
}
}
yyj18++
if yyhl18 {
yyb18 = yyj18 > l
yyj20++
if yyhl20 {
yyb20 = yyj20 > l
} else {
yyb18 = r.CheckBreak()
yyb20 = r.CheckBreak()
}
if yyb18 {
if yyb20 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.CurrentReplicas = 0
x.ReadyReplicas = 0
} else {
yyv25 := &x.CurrentReplicas
yyv25 := &x.ReadyReplicas
yym26 := z.DecBinary()
_ = yym26
if false {
@ -2875,21 +2905,21 @@ func (x *StatefulSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder
*((*int32)(yyv25)) = int32(r.DecodeInt(32))
}
}
yyj18++
if yyhl18 {
yyb18 = yyj18 > l
yyj20++
if yyhl20 {
yyb20 = yyj20 > l
} else {
yyb18 = r.CheckBreak()
yyb20 = r.CheckBreak()
}
if yyb18 {
if yyb20 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.UpdatedReplicas = 0
x.CurrentReplicas = 0
} else {
yyv27 := &x.UpdatedReplicas
yyv27 := &x.CurrentReplicas
yym28 := z.DecBinary()
_ = yym28
if false {
@ -2897,13 +2927,35 @@ func (x *StatefulSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder
*((*int32)(yyv27)) = int32(r.DecodeInt(32))
}
}
yyj18++
if yyhl18 {
yyb18 = yyj18 > l
yyj20++
if yyhl20 {
yyb20 = yyj20 > l
} else {
yyb18 = r.CheckBreak()
yyb20 = r.CheckBreak()
}
if yyb18 {
if yyb20 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.UpdatedReplicas = 0
} else {
yyv29 := &x.UpdatedReplicas
yym30 := z.DecBinary()
_ = yym30
if false {
} else {
*((*int32)(yyv29)) = int32(r.DecodeInt(32))
}
}
yyj20++
if yyhl20 {
yyb20 = yyj20 > l
} else {
yyb20 = r.CheckBreak()
}
if yyb20 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
@ -2911,29 +2963,7 @@ func (x *StatefulSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder
if r.TryDecodeAsNil() {
x.CurrentRevision = ""
} else {
yyv29 := &x.CurrentRevision
yym30 := z.DecBinary()
_ = yym30
if false {
} else {
*((*string)(yyv29)) = r.DecodeString()
}
}
yyj18++
if yyhl18 {
yyb18 = yyj18 > l
} else {
yyb18 = r.CheckBreak()
}
if yyb18 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.UpdateRevision = ""
} else {
yyv31 := &x.UpdateRevision
yyv31 := &x.CurrentRevision
yym32 := z.DecBinary()
_ = yym32
if false {
@ -2941,18 +2971,66 @@ func (x *StatefulSetStatus) codecDecodeSelfFromArray(l int, d *codec1978.Decoder
*((*string)(yyv31)) = r.DecodeString()
}
}
for {
yyj18++
if yyhl18 {
yyb18 = yyj18 > l
yyj20++
if yyhl20 {
yyb20 = yyj20 > l
} else {
yyb20 = r.CheckBreak()
}
if yyb20 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.UpdateRevision = ""
} else {
yyv33 := &x.UpdateRevision
yym34 := z.DecBinary()
_ = yym34
if false {
} else {
yyb18 = r.CheckBreak()
*((*string)(yyv33)) = r.DecodeString()
}
if yyb18 {
}
yyj20++
if yyhl20 {
yyb20 = yyj20 > l
} else {
yyb20 = r.CheckBreak()
}
if yyb20 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
if x.CollisionCount != nil {
x.CollisionCount = nil
}
} else {
if x.CollisionCount == nil {
x.CollisionCount = new(int64)
}
yym36 := z.DecBinary()
_ = yym36
if false {
} else {
*((*int64)(x.CollisionCount)) = int64(r.DecodeInt(64))
}
}
for {
yyj20++
if yyhl20 {
yyb20 = yyj20 > l
} else {
yyb20 = r.CheckBreak()
}
if yyb20 {
break
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
z.DecStructFieldNotFound(yyj18-1, "")
z.DecStructFieldNotFound(yyj20-1, "")
}
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
}
@ -7976,7 +8054,7 @@ func (x codecSelfer1234) decSliceStatefulSet(v *[]StatefulSet, d *codec1978.Deco
yyrg1 := len(yyv1) > 0
yyv21 := yyv1
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 1008)
yyrl1, yyrt1 = z.DecInferLen(yyl1, z.DecBasicHandle().MaxInitLen, 1016)
if yyrt1 {
if yyrl1 <= cap(yyv1) {
yyv1 = yyv1[:yyrl1]

View File

@ -239,6 +239,12 @@ type StatefulSetStatus struct {
// updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence
// [replicas-updatedReplicas,replicas)
UpdateRevision string `json:"updateRevision,omitempty" protobuf:"bytes,7,opt,name=updateRevision"`
// collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller
// uses this field as a collision avoidance mechanism when it needs to create the name for the
// newest ControllerRevision.
// +optional
CollisionCount *int64 `json:"collisionCount,omitempty" protobuf:"varint,9,opt,name=collisionCount"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

View File

@ -239,6 +239,7 @@ var map_StatefulSetStatus = map[string]string{
"updatedReplicas": "updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.",
"currentRevision": "currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).",
"updateRevision": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)",
"collisionCount": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.",
}
func (StatefulSetStatus) SwaggerDoc() map[string]string {

View File

@ -689,6 +689,15 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) {
**out = **in
}
}
if in.CollisionCount != nil {
in, out := &in.CollisionCount, &out.CollisionCount
if *in == nil {
*out = nil
} else {
*out = new(int64)
**out = **in
}
}
return
}

View File

@ -1327,6 +1327,11 @@ func (m *StatefulSetStatus) MarshalTo(dAtA []byte) (int, error) {
i++
i = encodeVarintGenerated(dAtA, i, uint64(len(m.UpdateRevision)))
i += copy(dAtA[i:], m.UpdateRevision)
if m.CollisionCount != nil {
dAtA[i] = 0x48
i++
i = encodeVarintGenerated(dAtA, i, uint64(*m.CollisionCount))
}
return i, nil
}
@ -1777,6 +1782,9 @@ func (m *StatefulSetStatus) Size() (n int) {
n += 1 + l + sovGenerated(uint64(l))
l = len(m.UpdateRevision)
n += 1 + l + sovGenerated(uint64(l))
if m.CollisionCount != nil {
n += 1 + sovGenerated(uint64(*m.CollisionCount))
}
return n
}
@ -2147,6 +2155,7 @@ func (this *StatefulSetStatus) String() string {
`UpdatedReplicas:` + fmt.Sprintf("%v", this.UpdatedReplicas) + `,`,
`CurrentRevision:` + fmt.Sprintf("%v", this.CurrentRevision) + `,`,
`UpdateRevision:` + fmt.Sprintf("%v", this.UpdateRevision) + `,`,
`CollisionCount:` + valueToStringGenerated(this.CollisionCount) + `,`,
`}`,
}, "")
return s
@ -6174,6 +6183,26 @@ func (m *StatefulSetStatus) Unmarshal(dAtA []byte) error {
}
m.UpdateRevision = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 9:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field CollisionCount", wireType)
}
var v int64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenerated
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= (int64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
m.CollisionCount = &v
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
@ -6417,133 +6446,134 @@ func init() {
}
var fileDescriptorGenerated = []byte{
// 2048 bytes of a gzipped FileDescriptorProto
// 2050 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x59, 0xcb, 0x6f, 0x1c, 0xb7,
0x19, 0xf7, 0xec, 0x43, 0xda, 0xa5, 0x22, 0xc9, 0xa6, 0x54, 0x69, 0x23, 0xb7, 0x2b, 0x61, 0x12,
0x19, 0xf7, 0xec, 0x43, 0xda, 0xa5, 0x22, 0xc9, 0xa6, 0x54, 0x69, 0x23, 0xb7, 0x2b, 0x61, 0x13,
0x38, 0x72, 0x1c, 0xcf, 0xda, 0xca, 0x03, 0x89, 0x0d, 0xb4, 0xd5, 0x4a, 0xad, 0xed, 0x40, 0x92,
0x15, 0x4a, 0x32, 0xd0, 0xa0, 0x05, 0x4c, 0xed, 0xd2, 0xab, 0x89, 0xe6, 0x85, 0x19, 0xce, 0x22,
0x8b, 0x5e, 0x7a, 0x2a, 0x50, 0xa0, 0x40, 0x73, 0xee, 0x3f, 0xd1, 0x9e, 0x8a, 0xa2, 0xbd, 0x15,
0x45, 0xe1, 0x4b, 0x81, 0xa0, 0x3d, 0x24, 0x27, 0xa1, 0xde, 0x1c, 0xfb, 0x1f, 0x04, 0x28, 0x50,
0x90, 0xc3, 0x79, 0x70, 0x1e, 0xd6, 0x48, 0xb5, 0xd5, 0x20, 0xb7, 0x5d, 0x7e, 0xbf, 0xef, 0xc7,
0x8f, 0xe4, 0x47, 0x7e, 0x3f, 0x72, 0xc0, 0x0f, 0x8f, 0xdf, 0xf7, 0x34, 0xdd, 0xee, 0x1c, 0xfb,
0x87, 0xc4, 0xb5, 0x08, 0x25, 0x5e, 0x67, 0x48, 0xac, 0xbe, 0xed, 0x76, 0x84, 0x01, 0x3b, 0x7a,
0x07, 0x3b, 0x8e, 0xd7, 0x19, 0xde, 0x3e, 0x24, 0x14, 0xaf, 0x75, 0x06, 0xc4, 0x22, 0x2e, 0xa6,
0xa4, 0xaf, 0x39, 0xae, 0x4d, 0x6d, 0xb8, 0x18, 0x00, 0x35, 0xec, 0xe8, 0x1a, 0x03, 0x6a, 0x02,
0xb8, 0x74, 0x73, 0xa0, 0xd3, 0x23, 0xff, 0x50, 0xeb, 0xd9, 0x66, 0x67, 0x60, 0x0f, 0xec, 0x0e,
0xc7, 0x1f, 0xfa, 0x4f, 0xf8, 0x3f, 0xfe, 0x87, 0xff, 0x0a, 0x78, 0x96, 0xd4, 0x44, 0x87, 0x3d,
0xdb, 0x25, 0x9d, 0xe1, 0xed, 0x74, 0x5f, 0x4b, 0xd7, 0x13, 0x18, 0xc7, 0x36, 0xf4, 0xde, 0x48,
0x84, 0x95, 0x85, 0xbe, 0x13, 0x43, 0x4d, 0xdc, 0x3b, 0xd2, 0x2d, 0xe2, 0x8e, 0x3a, 0xce, 0xf1,
0x80, 0x35, 0x78, 0x1d, 0x93, 0x50, 0x9c, 0xd7, 0x41, 0xa7, 0xc8, 0xcb, 0xf5, 0x2d, 0xaa, 0x9b,
0x24, 0xe3, 0xf0, 0xde, 0x69, 0x0e, 0x5e, 0xef, 0x88, 0x98, 0x38, 0xe3, 0xf7, 0x76, 0x91, 0x9f,
0x4f, 0x75, 0xa3, 0xa3, 0x5b, 0xd4, 0xa3, 0x6e, 0xda, 0x49, 0xfd, 0x55, 0x05, 0x34, 0x37, 0x31,
0x31, 0x6d, 0x6b, 0x8f, 0x50, 0xf8, 0x18, 0x34, 0xd8, 0x30, 0xfa, 0x98, 0xe2, 0x96, 0xb2, 0xa2,
0xac, 0x4e, 0xad, 0xdd, 0xd2, 0xe2, 0xb5, 0x88, 0x58, 0x35, 0xe7, 0x78, 0xc0, 0x1a, 0x3c, 0x8d,
0xa1, 0xb5, 0xe1, 0x6d, 0xed, 0xe1, 0xe1, 0x27, 0xa4, 0x47, 0xb7, 0x09, 0xc5, 0x5d, 0xf8, 0xf4,
0x64, 0xf9, 0xd2, 0xf8, 0x64, 0x19, 0xc4, 0x6d, 0x28, 0x62, 0x85, 0xf7, 0x41, 0xcd, 0x73, 0x48,
0xaf, 0x55, 0xe1, 0xec, 0xd7, 0xb4, 0x82, 0x95, 0xd6, 0xa2, 0x98, 0xf6, 0x1c, 0xd2, 0xeb, 0xbe,
0x22, 0x38, 0x6b, 0xec, 0x1f, 0xe2, 0x0c, 0x70, 0x17, 0x4c, 0x78, 0x14, 0x53, 0xdf, 0x6b, 0x55,
0x39, 0xd7, 0x6a, 0x09, 0x2e, 0x8e, 0xef, 0xce, 0x08, 0xb6, 0x89, 0xe0, 0x3f, 0x12, 0x3c, 0xea,
0x1f, 0x14, 0x30, 0x1d, 0x61, 0xb7, 0x74, 0x8f, 0xc2, 0x9f, 0x66, 0xe6, 0x43, 0x2b, 0x37, 0x1f,
0xcc, 0x9b, 0xcf, 0xc6, 0x65, 0xd1, 0x57, 0x23, 0x6c, 0x49, 0xcc, 0xc5, 0x3d, 0x50, 0xd7, 0x29,
0x31, 0xbd, 0x56, 0x65, 0xa5, 0xba, 0x3a, 0xb5, 0xa6, 0x9e, 0x3e, 0x80, 0xee, 0xb4, 0xa0, 0xab,
0x3f, 0x60, 0x8e, 0x28, 0xf0, 0x57, 0x3f, 0xab, 0x25, 0x02, 0x67, 0x53, 0x04, 0x7f, 0x06, 0x1a,
0x1e, 0x31, 0x48, 0x8f, 0xda, 0xae, 0x08, 0xfc, 0xed, 0x92, 0x81, 0xe3, 0x43, 0x62, 0xec, 0x09,
0xd7, 0xee, 0x2b, 0x2c, 0xf2, 0xf0, 0x1f, 0x8a, 0x28, 0xe1, 0x47, 0xa0, 0x41, 0x89, 0xe9, 0x18,
0x98, 0x12, 0xb1, 0x92, 0xaf, 0x25, 0x83, 0x67, 0x7b, 0x8d, 0x91, 0xed, 0xda, 0xfd, 0x7d, 0x01,
0xe3, 0xcb, 0x18, 0x4d, 0x46, 0xd8, 0x8a, 0x22, 0x1a, 0xe8, 0x80, 0x19, 0xdf, 0xe9, 0x33, 0x24,
0x65, 0xf9, 0x39, 0x18, 0x89, 0x65, 0xbd, 0x75, 0xfa, 0xac, 0x1c, 0x48, 0x7e, 0xdd, 0x05, 0xd1,
0xcb, 0x8c, 0xdc, 0x8e, 0x52, 0xfc, 0x70, 0x1d, 0xcc, 0x9a, 0xba, 0x85, 0x08, 0xee, 0x8f, 0xf6,
0x48, 0xcf, 0xb6, 0xfa, 0x5e, 0xab, 0xb6, 0xa2, 0xac, 0xd6, 0xbb, 0x8b, 0x82, 0x60, 0x76, 0x5b,
0x36, 0xa3, 0x34, 0x1e, 0x7e, 0x08, 0x60, 0x38, 0x80, 0x7b, 0xc1, 0xc6, 0xd2, 0x6d, 0xab, 0x55,
0x5f, 0x51, 0x56, 0xab, 0xdd, 0x25, 0xc1, 0x02, 0xf7, 0x33, 0x08, 0x94, 0xe3, 0x05, 0xb7, 0xc0,
0xbc, 0x4b, 0x86, 0xba, 0xa7, 0xdb, 0xd6, 0x7d, 0xdd, 0xa3, 0xb6, 0x3b, 0xda, 0xd2, 0x4d, 0x9d,
0xb6, 0x26, 0x78, 0x4c, 0xad, 0xf1, 0xc9, 0xf2, 0x3c, 0xca, 0xb1, 0xa3, 0x5c, 0x2f, 0xf5, 0xf7,
0x75, 0x30, 0x9b, 0xca, 0x7b, 0xf8, 0x08, 0x2c, 0xf4, 0x7c, 0xd7, 0x25, 0x16, 0xdd, 0xf1, 0xcd,
0x43, 0xe2, 0xee, 0xf5, 0x8e, 0x48, 0xdf, 0x37, 0x48, 0x9f, 0xa7, 0x48, 0xbd, 0xdb, 0x16, 0x11,
0x2f, 0x6c, 0xe4, 0xa2, 0x50, 0x81, 0x37, 0x9b, 0x05, 0x8b, 0x37, 0x6d, 0xeb, 0x9e, 0x17, 0x71,
0x56, 0x38, 0x67, 0x34, 0x0b, 0x3b, 0x19, 0x04, 0xca, 0xf1, 0x62, 0x31, 0xf6, 0x89, 0xa7, 0xbb,
0xa4, 0x9f, 0x8e, 0xb1, 0x2a, 0xc7, 0xb8, 0x99, 0x8b, 0x42, 0x05, 0xde, 0xf0, 0x5d, 0x30, 0x15,
0xf4, 0xc6, 0xd7, 0x4f, 0x2c, 0xf4, 0x9c, 0x20, 0x9b, 0xda, 0x89, 0x4d, 0x28, 0x89, 0x63, 0x43,
0xb3, 0x0f, 0x3d, 0xe2, 0x0e, 0x49, 0xbf, 0x78, 0x81, 0x1f, 0x66, 0x10, 0x28, 0xc7, 0x8b, 0x0d,
0x2d, 0xc8, 0xc0, 0xcc, 0xd0, 0x26, 0xe4, 0xa1, 0x1d, 0xe4, 0xa2, 0x50, 0x81, 0x37, 0xcb, 0xe3,
0x20, 0xe4, 0xf5, 0x21, 0xd6, 0x0d, 0x7c, 0x68, 0x90, 0xd6, 0xa4, 0x9c, 0xc7, 0x3b, 0xb2, 0x19,
0xa5, 0xf1, 0xf0, 0x1e, 0xb8, 0x12, 0x34, 0x1d, 0x58, 0x38, 0x22, 0x69, 0x70, 0x92, 0x57, 0x05,
0xc9, 0x95, 0x9d, 0x34, 0x00, 0x65, 0x7d, 0xe0, 0x1d, 0x30, 0xd3, 0xb3, 0x0d, 0x83, 0xe7, 0xe3,
0x86, 0xed, 0x5b, 0xb4, 0xd5, 0xe4, 0x73, 0x05, 0xd9, 0x7e, 0xdc, 0x90, 0x2c, 0x28, 0x85, 0x54,
0xff, 0xaa, 0x80, 0xc5, 0x82, 0x3d, 0x0d, 0x7f, 0x00, 0x6a, 0x74, 0xe4, 0x10, 0x9e, 0xa8, 0xcd,
0xee, 0x8d, 0xb0, 0x1c, 0xec, 0x8f, 0x1c, 0xf2, 0xf5, 0xc9, 0xf2, 0xd5, 0x02, 0x37, 0x66, 0x46,
0xdc, 0x11, 0x1e, 0x81, 0x69, 0x97, 0x75, 0x67, 0x0d, 0x02, 0x88, 0x38, 0xb6, 0x3a, 0x85, 0xa7,
0x0b, 0x4a, 0xa2, 0xe3, 0x03, 0xf8, 0xca, 0xf8, 0x64, 0x79, 0x5a, 0xb2, 0x21, 0x99, 0x58, 0xfd,
0x75, 0x05, 0x80, 0x4d, 0xe2, 0x18, 0xf6, 0xc8, 0x24, 0xd6, 0x45, 0x94, 0xd4, 0x07, 0x52, 0x49,
0x7d, 0xa3, 0xf8, 0xbc, 0x8c, 0x82, 0x2a, 0xac, 0xa9, 0x1f, 0xa5, 0x6a, 0xea, 0xf5, 0x32, 0x64,
0xcf, 0x2f, 0xaa, 0x5f, 0x54, 0xc1, 0x5c, 0x0c, 0xde, 0xb0, 0xad, 0xbe, 0xce, 0x77, 0xc3, 0x5d,
0x69, 0x45, 0xdf, 0x48, 0xad, 0xe8, 0x62, 0x8e, 0x4b, 0x62, 0x35, 0xb7, 0xa2, 0x38, 0x2b, 0xdc,
0xfd, 0x1d, 0xb9, 0xf3, 0xaf, 0x4f, 0x96, 0x73, 0xa4, 0x9f, 0x16, 0x31, 0xc9, 0x21, 0xc2, 0x6b,
0x60, 0xc2, 0x25, 0xd8, 0xb3, 0x2d, 0x7e, 0x2c, 0x34, 0xe3, 0xa1, 0x20, 0xde, 0x8a, 0x84, 0x15,
0x5e, 0x07, 0x93, 0x26, 0xf1, 0x3c, 0x3c, 0x20, 0xfc, 0x04, 0x68, 0x76, 0x67, 0x05, 0x70, 0x72,
0x3b, 0x68, 0x46, 0xa1, 0x1d, 0x7e, 0x02, 0x66, 0x0c, 0xec, 0x89, 0x74, 0xdc, 0xd7, 0x4d, 0xc2,
0xf7, 0xf8, 0xd4, 0xda, 0x9b, 0xe5, 0xd6, 0x9e, 0x79, 0xc4, 0x75, 0x6c, 0x4b, 0x62, 0x42, 0x29,
0x66, 0x38, 0x04, 0x90, 0xb5, 0xec, 0xbb, 0xd8, 0xf2, 0x82, 0x89, 0x62, 0xfd, 0x4d, 0x9e, 0xb9,
0xbf, 0xe8, 0x3c, 0xdb, 0xca, 0xb0, 0xa1, 0x9c, 0x1e, 0xd4, 0x3f, 0x2a, 0x60, 0x26, 0x5e, 0xa6,
0x0b, 0xd0, 0x4b, 0xf7, 0x65, 0xbd, 0xf4, 0x5a, 0x89, 0xe4, 0x2c, 0x10, 0x4c, 0x5f, 0xd4, 0x92,
0xa1, 0x73, 0xc5, 0xb4, 0x0a, 0x1a, 0x2e, 0x71, 0x0c, 0xbd, 0x87, 0x3d, 0x51, 0x0e, 0xb9, 0xf8,
0x41, 0xa2, 0x0d, 0x45, 0x56, 0x49, 0x5b, 0x55, 0x5e, 0xae, 0xb6, 0xaa, 0xbe, 0x18, 0x6d, 0xf5,
0x13, 0xd0, 0xf0, 0x42, 0x55, 0x55, 0xe3, 0x94, 0x37, 0x4a, 0x6d, 0x6c, 0x21, 0xa8, 0x22, 0xea,
0x48, 0x4a, 0x45, 0x74, 0x79, 0x22, 0xaa, 0x7e, 0x46, 0x11, 0xf5, 0x42, 0x85, 0x0f, 0xdb, 0xcc,
0x0e, 0xf6, 0x3d, 0xd2, 0xe7, 0x3b, 0xa0, 0x11, 0x6f, 0xe6, 0x5d, 0xde, 0x8a, 0x84, 0x15, 0x1e,
0x80, 0x45, 0xc7, 0xb5, 0x07, 0x2e, 0xf1, 0xbc, 0x4d, 0x82, 0xfb, 0x86, 0x6e, 0x91, 0x70, 0x00,
0x4d, 0xde, 0xf1, 0xd5, 0xf1, 0xc9, 0xf2, 0xe2, 0x6e, 0x3e, 0x04, 0x15, 0xf9, 0xaa, 0x7f, 0xa9,
0x81, 0xcb, 0xe9, 0xb3, 0xb1, 0x40, 0x45, 0x28, 0xe7, 0x52, 0x11, 0x6f, 0x25, 0xf2, 0x34, 0x90,
0x58, 0xd1, 0xf2, 0xe4, 0xe4, 0xea, 0x3a, 0x98, 0x15, 0xaa, 0x21, 0x34, 0x0a, 0x1d, 0x15, 0x2d,
0xcf, 0x81, 0x6c, 0x46, 0x69, 0x3c, 0xd3, 0x06, 0x71, 0xc9, 0x0f, 0x49, 0x6a, 0xb2, 0x36, 0x58,
0x4f, 0x03, 0x50, 0xd6, 0x07, 0x6e, 0x83, 0x39, 0xdf, 0xca, 0x52, 0x05, 0xe9, 0x72, 0x55, 0x50,
0xcd, 0x1d, 0x64, 0x21, 0x28, 0xcf, 0x0f, 0x3e, 0x06, 0xa0, 0x17, 0x1e, 0xe8, 0x5e, 0x6b, 0x82,
0x1f, 0x09, 0x6f, 0x95, 0x48, 0xeb, 0xa8, 0x0a, 0xc4, 0x65, 0x35, 0x6a, 0xf2, 0x50, 0x82, 0x13,
0xde, 0x05, 0xd3, 0x2e, 0x97, 0x84, 0x61, 0xa8, 0x81, 0xac, 0xfa, 0x8e, 0x70, 0x9b, 0x46, 0x49,
0x23, 0x92, 0xb1, 0x39, 0x4a, 0xa8, 0x51, 0x5a, 0x09, 0xfd, 0x59, 0x01, 0x30, 0xbb, 0x0f, 0xe1,
0x1d, 0xa9, 0x64, 0x5e, 0x4b, 0x95, 0xcc, 0x85, 0xac, 0x47, 0xa2, 0x62, 0xea, 0xf9, 0xfa, 0xe7,
0x56, 0x49, 0xfd, 0x13, 0x1f, 0xa8, 0xe5, 0x04, 0x90, 0x98, 0x86, 0x8b, 0x79, 0x53, 0x28, 0x2b,
0x80, 0xe2, 0xa0, 0x5e, 0x80, 0x00, 0x4a, 0x90, 0x3d, 0x5f, 0x00, 0xfd, 0xbb, 0x02, 0xe6, 0x62,
0x70, 0x69, 0x01, 0x94, 0xe3, 0xf2, 0xd2, 0x04, 0x50, 0xbe, 0x82, 0xa8, 0xbe, 0x6c, 0x05, 0xf1,
0x12, 0x84, 0x17, 0x17, 0x25, 0xf1, 0xd4, 0x7d, 0x93, 0x44, 0x49, 0x1c, 0x55, 0x81, 0x28, 0xf9,
0x5d, 0x25, 0x19, 0xfa, 0xb7, 0x5e, 0x94, 0xfc, 0xef, 0xcf, 0x2f, 0xea, 0xdf, 0xaa, 0xe0, 0x72,
0x7a, 0x1f, 0x4a, 0x05, 0x52, 0x39, 0xb5, 0x40, 0xee, 0x82, 0xf9, 0x27, 0xbe, 0x61, 0x8c, 0xf8,
0x34, 0x24, 0xaa, 0x64, 0x50, 0x5a, 0xbf, 0x2b, 0x3c, 0xe7, 0x7f, 0x9c, 0x83, 0x41, 0xb9, 0x9e,
0x05, 0xc5, 0xbe, 0x7a, 0xae, 0x62, 0x9f, 0xa9, 0x40, 0xb5, 0x33, 0x54, 0xa0, 0xdc, 0xc2, 0x5d,
0x3f, 0x47, 0xe1, 0x3e, 0x5b, 0xa5, 0xcd, 0x39, 0xb8, 0x4e, 0xab, 0xb4, 0xea, 0x2f, 0x15, 0xb0,
0x90, 0x7f, 0xe1, 0x86, 0x06, 0x98, 0x31, 0xf1, 0xa7, 0xc9, 0x77, 0x89, 0xd3, 0x8a, 0x88, 0x4f,
0x75, 0x43, 0x0b, 0x9e, 0xbb, 0xb5, 0x07, 0x16, 0x7d, 0xe8, 0xee, 0x51, 0x57, 0xb7, 0x06, 0x41,
0xe5, 0xdd, 0x96, 0xb8, 0x50, 0x8a, 0x5b, 0xfd, 0x4a, 0x01, 0x8b, 0x05, 0x95, 0xef, 0x62, 0x23,
0x81, 0x1f, 0x83, 0x86, 0x89, 0x3f, 0xdd, 0xf3, 0xdd, 0x41, 0x5e, 0xad, 0x2e, 0xd7, 0x0f, 0xdf,
0xcd, 0xdb, 0x82, 0x05, 0x45, 0x7c, 0xea, 0x43, 0xb0, 0x22, 0x0d, 0x92, 0xed, 0x1c, 0xf2, 0xc4,
0x37, 0xf8, 0x26, 0x12, 0x62, 0xe3, 0x06, 0x68, 0x3a, 0xd8, 0xa5, 0x7a, 0x24, 0x55, 0xeb, 0xdd,
0xe9, 0xf1, 0xc9, 0x72, 0x73, 0x37, 0x6c, 0x44, 0xb1, 0x5d, 0xfd, 0x8f, 0x02, 0xea, 0x7b, 0x3d,
0x6c, 0x90, 0x0b, 0xa8, 0xf6, 0x9b, 0x52, 0xb5, 0x2f, 0x7e, 0x34, 0xe7, 0xf1, 0x14, 0x16, 0xfa,
0xad, 0x54, 0xa1, 0x7f, 0xfd, 0x14, 0x9e, 0xe7, 0xd7, 0xf8, 0x0f, 0x40, 0x33, 0xea, 0xee, 0x6c,
0x07, 0x90, 0xfa, 0xdb, 0x0a, 0x98, 0x4a, 0x74, 0x71, 0xc6, 0xe3, 0xeb, 0xb1, 0x74, 0xec, 0xb3,
0x8d, 0xb9, 0x56, 0x66, 0x20, 0x5a, 0x78, 0xc4, 0xff, 0xc8, 0xa2, 0x6e, 0xf2, 0x82, 0x97, 0x3d,
0xf9, 0xbf, 0x0f, 0x66, 0x28, 0x76, 0x07, 0x84, 0x86, 0x36, 0x3e, 0x61, 0xcd, 0xf8, 0x75, 0x62,
0x5f, 0xb2, 0xa2, 0x14, 0x7a, 0xe9, 0x2e, 0x98, 0x96, 0x3a, 0x83, 0x97, 0x41, 0xf5, 0x98, 0x8c,
0x02, 0xd9, 0x83, 0xd8, 0x4f, 0x38, 0x0f, 0xea, 0x43, 0x6c, 0xf8, 0x41, 0x9e, 0x37, 0x51, 0xf0,
0xe7, 0x4e, 0xe5, 0x7d, 0x45, 0xfd, 0x0d, 0x9b, 0x9c, 0x38, 0x39, 0x2f, 0x20, 0xbb, 0x3e, 0x94,
0xb2, 0xab, 0xf8, 0x9b, 0x52, 0x72, 0xcb, 0x14, 0xe5, 0x18, 0x4a, 0xe5, 0xd8, 0x9b, 0xa5, 0xd8,
0x9e, 0x9f, 0x69, 0x7f, 0x52, 0xc0, 0x6c, 0x02, 0x7d, 0x01, 0x02, 0xe7, 0x81, 0x2c, 0x70, 0x5e,
0x2f, 0x33, 0x88, 0x02, 0x85, 0xf3, 0xf7, 0xba, 0x14, 0xfc, 0xb7, 0x5e, 0xe2, 0xfc, 0x1c, 0xcc,
0x0f, 0x6d, 0xc3, 0x37, 0xc9, 0x86, 0x81, 0x75, 0x33, 0x04, 0xb0, 0x2a, 0x5e, 0x4d, 0xdf, 0x2d,
0x22, 0x7a, 0xe2, 0x7a, 0xba, 0x47, 0x89, 0x45, 0x1f, 0xc5, 0x9e, 0xb1, 0x0e, 0x79, 0x94, 0x43,
0x87, 0x72, 0x3b, 0x81, 0xef, 0x82, 0x29, 0xa6, 0x27, 0xf4, 0x1e, 0xd9, 0xc1, 0x66, 0x28, 0x9c,
0xa3, 0x2f, 0x1e, 0x7b, 0xb1, 0x09, 0x25, 0x71, 0xf0, 0x08, 0xcc, 0x39, 0x76, 0x7f, 0x1b, 0x5b,
0x78, 0x40, 0x58, 0xd9, 0xdb, 0xe5, 0xdf, 0xc4, 0xf9, 0x63, 0x4c, 0xb3, 0xfb, 0x5e, 0x78, 0x4b,
0xdf, 0xcd, 0x42, 0xd8, 0xa5, 0x25, 0xa7, 0x99, 0x5f, 0x5a, 0xf2, 0x28, 0xa1, 0x9b, 0xf9, 0xe2,
0x17, 0xbc, 0x59, 0xae, 0x95, 0xc9, 0xb0, 0x73, 0x7e, 0xf3, 0x2b, 0x7a, 0x6b, 0x6a, 0x9c, 0xeb,
0x23, 0xdb, 0x3f, 0xab, 0xe0, 0x4a, 0x66, 0xeb, 0xfe, 0x1f, 0x5f, 0x7b, 0x32, 0x72, 0xb1, 0x7a,
0x06, 0xb9, 0xb8, 0x0e, 0x66, 0xc5, 0xf7, 0xbd, 0x94, 0xda, 0x8c, 0xf4, 0xf8, 0x86, 0x6c, 0x46,
0x69, 0x7c, 0xde, 0x6b, 0x53, 0xfd, 0x8c, 0xaf, 0x4d, 0xc9, 0x28, 0x82, 0x19, 0x17, 0xa9, 0x97,
0x8d, 0x22, 0x30, 0xa3, 0x34, 0x9e, 0x55, 0xac, 0x80, 0x35, 0x62, 0x98, 0x94, 0x2b, 0xd6, 0x81,
0x64, 0x45, 0x29, 0xb4, 0xfa, 0x0f, 0x05, 0xbc, 0x5a, 0x98, 0x69, 0x70, 0x5d, 0xba, 0xb6, 0xdf,
0x4c, 0x5d, 0xdb, 0xbf, 0x57, 0xe8, 0x98, 0xb8, 0xbc, 0xbb, 0xf9, 0x6f, 0x31, 0x1f, 0x94, 0x7b,
0x8b, 0xc9, 0x11, 0x6b, 0xa7, 0x3f, 0xca, 0x74, 0x6f, 0x3e, 0x7d, 0xd6, 0xbe, 0xf4, 0xf9, 0xb3,
0xf6, 0xa5, 0x2f, 0x9f, 0xb5, 0x2f, 0xfd, 0x62, 0xdc, 0x56, 0x9e, 0x8e, 0xdb, 0xca, 0xe7, 0xe3,
0xb6, 0xf2, 0xe5, 0xb8, 0xad, 0xfc, 0x6b, 0xdc, 0x56, 0x3e, 0xfb, 0xaa, 0x7d, 0xe9, 0xe3, 0x49,
0xd1, 0xe3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x86, 0x7b, 0x61, 0x7b, 0xc4, 0x23, 0x00, 0x00,
0x15, 0xae, 0x64, 0xa0, 0x41, 0x0b, 0x98, 0xbb, 0x4b, 0xaf, 0x26, 0x9a, 0x17, 0x66, 0x38, 0x8b,
0x2c, 0x7a, 0xe9, 0xa9, 0x40, 0x81, 0x02, 0xc9, 0xb9, 0xff, 0x44, 0x7b, 0x2a, 0x8a, 0xf6, 0x56,
0x14, 0x85, 0x2f, 0x05, 0x82, 0x5e, 0x92, 0x93, 0x50, 0x6f, 0x8e, 0xfd, 0x0f, 0x02, 0x14, 0x28,
0xc8, 0xe1, 0x3c, 0x38, 0x0f, 0x6b, 0xa4, 0xd8, 0x6a, 0x91, 0xdb, 0x2e, 0xbf, 0xdf, 0xf7, 0xe3,
0x47, 0xf2, 0x23, 0xbf, 0x1f, 0x39, 0xe0, 0xc7, 0xc7, 0xef, 0xbb, 0xaa, 0x66, 0xb5, 0x8f, 0xbd,
0x1e, 0x71, 0x4c, 0x42, 0x89, 0xdb, 0x1e, 0x11, 0x73, 0x60, 0x39, 0x6d, 0x61, 0xc0, 0xb6, 0xd6,
0xc6, 0xb6, 0xed, 0xb6, 0x47, 0xb7, 0x7b, 0x84, 0xe2, 0x8d, 0xf6, 0x90, 0x98, 0xc4, 0xc1, 0x94,
0x0c, 0x54, 0xdb, 0xb1, 0xa8, 0x05, 0x97, 0x7d, 0xa0, 0x8a, 0x6d, 0x4d, 0x65, 0x40, 0x55, 0x00,
0x57, 0x6e, 0x0e, 0x35, 0x7a, 0xe4, 0xf5, 0xd4, 0xbe, 0x65, 0xb4, 0x87, 0xd6, 0xd0, 0x6a, 0x73,
0x7c, 0xcf, 0x7b, 0xc2, 0xff, 0xf1, 0x3f, 0xfc, 0x97, 0xcf, 0xb3, 0xd2, 0x8a, 0x75, 0xd8, 0xb7,
0x1c, 0xd2, 0x1e, 0xdd, 0x4e, 0xf6, 0xb5, 0x72, 0x3d, 0x86, 0xb1, 0x2d, 0x5d, 0xeb, 0x8f, 0x45,
0x58, 0x69, 0xe8, 0x3b, 0x11, 0xd4, 0xc0, 0xfd, 0x23, 0xcd, 0x24, 0xce, 0xb8, 0x6d, 0x1f, 0x0f,
0x59, 0x83, 0xdb, 0x36, 0x08, 0xc5, 0x59, 0x1d, 0xb4, 0xf3, 0xbc, 0x1c, 0xcf, 0xa4, 0x9a, 0x41,
0x52, 0x0e, 0xef, 0x9d, 0xe6, 0xe0, 0xf6, 0x8f, 0x88, 0x81, 0x53, 0x7e, 0x6f, 0xe7, 0xf9, 0x79,
0x54, 0xd3, 0xdb, 0x9a, 0x49, 0x5d, 0xea, 0x24, 0x9d, 0x5a, 0xbf, 0x29, 0x81, 0xfa, 0x36, 0x26,
0x86, 0x65, 0x76, 0x09, 0x85, 0x8f, 0x41, 0x8d, 0x0d, 0x63, 0x80, 0x29, 0x6e, 0x28, 0x6b, 0xca,
0xfa, 0xcc, 0xc6, 0x2d, 0x35, 0x5a, 0x8b, 0x90, 0x55, 0xb5, 0x8f, 0x87, 0xac, 0xc1, 0x55, 0x19,
0x5a, 0x1d, 0xdd, 0x56, 0x1f, 0xf6, 0x3e, 0x21, 0x7d, 0xba, 0x4b, 0x28, 0xee, 0xc0, 0xa7, 0x27,
0xab, 0x97, 0x26, 0x27, 0xab, 0x20, 0x6a, 0x43, 0x21, 0x2b, 0xbc, 0x0f, 0x2a, 0xae, 0x4d, 0xfa,
0x8d, 0x12, 0x67, 0xbf, 0xa6, 0xe6, 0xac, 0xb4, 0x1a, 0xc6, 0xd4, 0xb5, 0x49, 0xbf, 0xf3, 0x8a,
0xe0, 0xac, 0xb0, 0x7f, 0x88, 0x33, 0xc0, 0x7d, 0x30, 0xe5, 0x52, 0x4c, 0x3d, 0xb7, 0x51, 0xe6,
0x5c, 0xeb, 0x05, 0xb8, 0x38, 0xbe, 0x33, 0x27, 0xd8, 0xa6, 0xfc, 0xff, 0x48, 0xf0, 0xb4, 0xfe,
0xa8, 0x80, 0xd9, 0x10, 0xbb, 0xa3, 0xb9, 0x14, 0xfe, 0x3c, 0x35, 0x1f, 0x6a, 0xb1, 0xf9, 0x60,
0xde, 0x7c, 0x36, 0x2e, 0x8b, 0xbe, 0x6a, 0x41, 0x4b, 0x6c, 0x2e, 0xee, 0x81, 0xaa, 0x46, 0x89,
0xe1, 0x36, 0x4a, 0x6b, 0xe5, 0xf5, 0x99, 0x8d, 0xd6, 0xe9, 0x03, 0xe8, 0xcc, 0x0a, 0xba, 0xea,
0x03, 0xe6, 0x88, 0x7c, 0xff, 0xd6, 0xe7, 0x95, 0x58, 0xe0, 0x6c, 0x8a, 0xe0, 0x2f, 0x40, 0xcd,
0x25, 0x3a, 0xe9, 0x53, 0xcb, 0x11, 0x81, 0xbf, 0x5d, 0x30, 0x70, 0xdc, 0x23, 0x7a, 0x57, 0xb8,
0x76, 0x5e, 0x61, 0x91, 0x07, 0xff, 0x50, 0x48, 0x09, 0x3f, 0x02, 0x35, 0x4a, 0x0c, 0x5b, 0xc7,
0x94, 0x88, 0x95, 0x7c, 0x2d, 0x1e, 0x3c, 0xdb, 0x6b, 0x8c, 0x6c, 0xdf, 0x1a, 0x1c, 0x08, 0x18,
0x5f, 0xc6, 0x70, 0x32, 0x82, 0x56, 0x14, 0xd2, 0x40, 0x1b, 0xcc, 0x79, 0xf6, 0x80, 0x21, 0x29,
0xcb, 0xcf, 0xe1, 0x58, 0x2c, 0xeb, 0xad, 0xd3, 0x67, 0xe5, 0x50, 0xf2, 0xeb, 0x2c, 0x89, 0x5e,
0xe6, 0xe4, 0x76, 0x94, 0xe0, 0x87, 0x9b, 0x60, 0xde, 0xd0, 0x4c, 0x44, 0xf0, 0x60, 0xdc, 0x25,
0x7d, 0xcb, 0x1c, 0xb8, 0x8d, 0xca, 0x9a, 0xb2, 0x5e, 0xed, 0x2c, 0x0b, 0x82, 0xf9, 0x5d, 0xd9,
0x8c, 0x92, 0x78, 0xf8, 0x21, 0x80, 0xc1, 0x00, 0xee, 0xf9, 0x1b, 0x4b, 0xb3, 0xcc, 0x46, 0x75,
0x4d, 0x59, 0x2f, 0x77, 0x56, 0x04, 0x0b, 0x3c, 0x48, 0x21, 0x50, 0x86, 0x17, 0xdc, 0x01, 0x8b,
0x0e, 0x19, 0x69, 0xae, 0x66, 0x99, 0xf7, 0x35, 0x97, 0x5a, 0xce, 0x78, 0x47, 0x33, 0x34, 0xda,
0x98, 0xe2, 0x31, 0x35, 0x26, 0x27, 0xab, 0x8b, 0x28, 0xc3, 0x8e, 0x32, 0xbd, 0x5a, 0x7f, 0xa8,
0x82, 0xf9, 0x44, 0xde, 0xc3, 0x47, 0x60, 0xa9, 0xef, 0x39, 0x0e, 0x31, 0xe9, 0x9e, 0x67, 0xf4,
0x88, 0xd3, 0xed, 0x1f, 0x91, 0x81, 0xa7, 0x93, 0x01, 0x4f, 0x91, 0x6a, 0xa7, 0x29, 0x22, 0x5e,
0xda, 0xca, 0x44, 0xa1, 0x1c, 0x6f, 0x36, 0x0b, 0x26, 0x6f, 0xda, 0xd5, 0x5c, 0x37, 0xe4, 0x2c,
0x71, 0xce, 0x70, 0x16, 0xf6, 0x52, 0x08, 0x94, 0xe1, 0xc5, 0x62, 0x1c, 0x10, 0x57, 0x73, 0xc8,
0x20, 0x19, 0x63, 0x59, 0x8e, 0x71, 0x3b, 0x13, 0x85, 0x72, 0xbc, 0xe1, 0xbb, 0x60, 0xc6, 0xef,
0x8d, 0xaf, 0x9f, 0x58, 0xe8, 0x05, 0x41, 0x36, 0xb3, 0x17, 0x99, 0x50, 0x1c, 0xc7, 0x86, 0x66,
0xf5, 0x5c, 0xe2, 0x8c, 0xc8, 0x20, 0x7f, 0x81, 0x1f, 0xa6, 0x10, 0x28, 0xc3, 0x8b, 0x0d, 0xcd,
0xcf, 0xc0, 0xd4, 0xd0, 0xa6, 0xe4, 0xa1, 0x1d, 0x66, 0xa2, 0x50, 0x8e, 0x37, 0xcb, 0x63, 0x3f,
0xe4, 0xcd, 0x11, 0xd6, 0x74, 0xdc, 0xd3, 0x49, 0x63, 0x5a, 0xce, 0xe3, 0x3d, 0xd9, 0x8c, 0x92,
0x78, 0x78, 0x0f, 0x5c, 0xf1, 0x9b, 0x0e, 0x4d, 0x1c, 0x92, 0xd4, 0x38, 0xc9, 0xab, 0x82, 0xe4,
0xca, 0x5e, 0x12, 0x80, 0xd2, 0x3e, 0xf0, 0x0e, 0x98, 0xeb, 0x5b, 0xba, 0xce, 0xf3, 0x71, 0xcb,
0xf2, 0x4c, 0xda, 0xa8, 0xf3, 0xb9, 0x82, 0x6c, 0x3f, 0x6e, 0x49, 0x16, 0x94, 0x40, 0xb6, 0xfe,
0xa6, 0x80, 0xe5, 0x9c, 0x3d, 0x0d, 0x7f, 0x04, 0x2a, 0x74, 0x6c, 0x13, 0x9e, 0xa8, 0xf5, 0xce,
0x8d, 0xa0, 0x1c, 0x1c, 0x8c, 0x6d, 0xf2, 0xcd, 0xc9, 0xea, 0xd5, 0x1c, 0x37, 0x66, 0x46, 0xdc,
0x11, 0x1e, 0x81, 0x59, 0x87, 0x75, 0x67, 0x0e, 0x7d, 0x88, 0x38, 0xb6, 0xda, 0xb9, 0xa7, 0x0b,
0x8a, 0xa3, 0xa3, 0x03, 0xf8, 0xca, 0xe4, 0x64, 0x75, 0x56, 0xb2, 0x21, 0x99, 0xb8, 0xf5, 0xdb,
0x12, 0x00, 0xdb, 0xc4, 0xd6, 0xad, 0xb1, 0x41, 0xcc, 0x8b, 0x28, 0xa9, 0x0f, 0xa4, 0x92, 0xfa,
0x46, 0xfe, 0x79, 0x19, 0x06, 0x95, 0x5b, 0x53, 0x3f, 0x4a, 0xd4, 0xd4, 0xeb, 0x45, 0xc8, 0x9e,
0x5f, 0x54, 0xbf, 0x2c, 0x83, 0x85, 0x08, 0xbc, 0x65, 0x99, 0x03, 0x8d, 0xef, 0x86, 0xbb, 0xd2,
0x8a, 0xbe, 0x91, 0x58, 0xd1, 0xe5, 0x0c, 0x97, 0xd8, 0x6a, 0xee, 0x84, 0x71, 0x96, 0xb8, 0xfb,
0x3b, 0x72, 0xe7, 0xdf, 0x9c, 0xac, 0x66, 0x48, 0x3f, 0x35, 0x64, 0x92, 0x43, 0x84, 0xd7, 0xc0,
0x94, 0x43, 0xb0, 0x6b, 0x99, 0xfc, 0x58, 0xa8, 0x47, 0x43, 0x41, 0xbc, 0x15, 0x09, 0x2b, 0xbc,
0x0e, 0xa6, 0x0d, 0xe2, 0xba, 0x78, 0x48, 0xf8, 0x09, 0x50, 0xef, 0xcc, 0x0b, 0xe0, 0xf4, 0xae,
0xdf, 0x8c, 0x02, 0x3b, 0xfc, 0x04, 0xcc, 0xe9, 0xd8, 0x15, 0xe9, 0x78, 0xa0, 0x19, 0x84, 0xef,
0xf1, 0x99, 0x8d, 0x37, 0x8b, 0xad, 0x3d, 0xf3, 0x88, 0xea, 0xd8, 0x8e, 0xc4, 0x84, 0x12, 0xcc,
0x70, 0x04, 0x20, 0x6b, 0x39, 0x70, 0xb0, 0xe9, 0xfa, 0x13, 0xc5, 0xfa, 0x9b, 0x3e, 0x73, 0x7f,
0xe1, 0x79, 0xb6, 0x93, 0x62, 0x43, 0x19, 0x3d, 0xb4, 0xfe, 0xa4, 0x80, 0xb9, 0x68, 0x99, 0x2e,
0x40, 0x2f, 0xdd, 0x97, 0xf5, 0xd2, 0x6b, 0x05, 0x92, 0x33, 0x47, 0x30, 0x7d, 0x59, 0x89, 0x87,
0xce, 0x15, 0xd3, 0x3a, 0xa8, 0x39, 0xc4, 0xd6, 0xb5, 0x3e, 0x76, 0x45, 0x39, 0xe4, 0xe2, 0x07,
0x89, 0x36, 0x14, 0x5a, 0x25, 0x6d, 0x55, 0x7a, 0xb9, 0xda, 0xaa, 0xfc, 0x62, 0xb4, 0xd5, 0xcf,
0x40, 0xcd, 0x0d, 0x54, 0x55, 0x85, 0x53, 0xde, 0x28, 0xb4, 0xb1, 0x85, 0xa0, 0x0a, 0xa9, 0x43,
0x29, 0x15, 0xd2, 0x65, 0x89, 0xa8, 0xea, 0x19, 0x45, 0xd4, 0x0b, 0x15, 0x3e, 0x6c, 0x33, 0xdb,
0xd8, 0x73, 0xc9, 0x80, 0xef, 0x80, 0x5a, 0xb4, 0x99, 0xf7, 0x79, 0x2b, 0x12, 0x56, 0x78, 0x08,
0x96, 0x6d, 0xc7, 0x1a, 0x3a, 0xc4, 0x75, 0xb7, 0x09, 0x1e, 0xe8, 0x9a, 0x49, 0x82, 0x01, 0xd4,
0x79, 0xc7, 0x57, 0x27, 0x27, 0xab, 0xcb, 0xfb, 0xd9, 0x10, 0x94, 0xe7, 0xdb, 0xfa, 0x6b, 0x05,
0x5c, 0x4e, 0x9e, 0x8d, 0x39, 0x2a, 0x42, 0x39, 0x97, 0x8a, 0x78, 0x2b, 0x96, 0xa7, 0xbe, 0xc4,
0x0a, 0x97, 0x27, 0x23, 0x57, 0x37, 0xc1, 0xbc, 0x50, 0x0d, 0x81, 0x51, 0xe8, 0xa8, 0x70, 0x79,
0x0e, 0x65, 0x33, 0x4a, 0xe2, 0x99, 0x36, 0x88, 0x4a, 0x7e, 0x40, 0x52, 0x91, 0xb5, 0xc1, 0x66,
0x12, 0x80, 0xd2, 0x3e, 0x70, 0x17, 0x2c, 0x78, 0x66, 0x9a, 0xca, 0x4f, 0x97, 0xab, 0x82, 0x6a,
0xe1, 0x30, 0x0d, 0x41, 0x59, 0x7e, 0xf0, 0x31, 0x00, 0xfd, 0xe0, 0x40, 0x77, 0x1b, 0x53, 0xfc,
0x48, 0x78, 0xab, 0x40, 0x5a, 0x87, 0x55, 0x20, 0x2a, 0xab, 0x61, 0x93, 0x8b, 0x62, 0x9c, 0xf0,
0x2e, 0x98, 0x75, 0xb8, 0x24, 0x0c, 0x42, 0xf5, 0x65, 0xd5, 0xf7, 0x84, 0xdb, 0x2c, 0x8a, 0x1b,
0x91, 0x8c, 0xcd, 0x50, 0x42, 0xb5, 0xc2, 0x4a, 0xe8, 0x2f, 0x0a, 0x80, 0xe9, 0x7d, 0x08, 0xef,
0x48, 0x25, 0xf3, 0x5a, 0xa2, 0x64, 0x2e, 0xa5, 0x3d, 0x62, 0x15, 0x53, 0xcb, 0xd6, 0x3f, 0xb7,
0x0a, 0xea, 0x9f, 0xe8, 0x40, 0x2d, 0x26, 0x80, 0xc4, 0x34, 0x5c, 0xcc, 0x9b, 0x42, 0x51, 0x01,
0x14, 0x05, 0xf5, 0x02, 0x04, 0x50, 0x8c, 0xec, 0xf9, 0x02, 0xe8, 0xdf, 0x25, 0xb0, 0x10, 0x81,
0x0b, 0x0b, 0xa0, 0x0c, 0x97, 0x97, 0x26, 0x80, 0xb2, 0x15, 0x44, 0xf9, 0x65, 0x2b, 0x88, 0x97,
0x20, 0xbc, 0xb8, 0x28, 0x89, 0xa6, 0xee, 0xff, 0x49, 0x94, 0x44, 0x51, 0xe5, 0x88, 0x92, 0xdf,
0x97, 0xe2, 0xa1, 0x7f, 0xe7, 0x45, 0xc9, 0xb7, 0x7f, 0x7e, 0x69, 0xfd, 0xbd, 0x0c, 0x2e, 0x27,
0xf7, 0xa1, 0x54, 0x20, 0x95, 0x53, 0x0b, 0xe4, 0x3e, 0x58, 0x7c, 0xe2, 0xe9, 0xfa, 0x98, 0x4f,
0x43, 0xac, 0x4a, 0xfa, 0xa5, 0xf5, 0xfb, 0xc2, 0x73, 0xf1, 0xa7, 0x19, 0x18, 0x94, 0xe9, 0x99,
0x53, 0xec, 0xcb, 0xe7, 0x2a, 0xf6, 0xa9, 0x0a, 0x54, 0x39, 0x43, 0x05, 0xca, 0x2c, 0xdc, 0xd5,
0x73, 0x14, 0xee, 0xb3, 0x55, 0xda, 0x8c, 0x83, 0xeb, 0xb4, 0x4a, 0xdb, 0xfa, 0xb5, 0x02, 0x96,
0xb2, 0x2f, 0xdc, 0x50, 0x07, 0x73, 0x06, 0xfe, 0x34, 0xfe, 0x2e, 0x71, 0x5a, 0x11, 0xf1, 0xa8,
0xa6, 0xab, 0xfe, 0x73, 0xb7, 0xfa, 0xc0, 0xa4, 0x0f, 0x9d, 0x2e, 0x75, 0x34, 0x73, 0xe8, 0x57,
0xde, 0x5d, 0x89, 0x0b, 0x25, 0xb8, 0x5b, 0x5f, 0x2b, 0x60, 0x39, 0xa7, 0xf2, 0x5d, 0x6c, 0x24,
0xf0, 0x63, 0x50, 0x33, 0xf0, 0xa7, 0x5d, 0xcf, 0x19, 0x66, 0xd5, 0xea, 0x62, 0xfd, 0xf0, 0xdd,
0xbc, 0x2b, 0x58, 0x50, 0xc8, 0xd7, 0x7a, 0x08, 0xd6, 0xa4, 0x41, 0xb2, 0x9d, 0x43, 0x9e, 0x78,
0x3a, 0xdf, 0x44, 0x42, 0x6c, 0xdc, 0x00, 0x75, 0x1b, 0x3b, 0x54, 0x0b, 0xa5, 0x6a, 0xb5, 0x33,
0x3b, 0x39, 0x59, 0xad, 0xef, 0x07, 0x8d, 0x28, 0xb2, 0xb7, 0xfe, 0xa3, 0x80, 0x6a, 0xb7, 0x8f,
0x75, 0x72, 0x01, 0xd5, 0x7e, 0x5b, 0xaa, 0xf6, 0xf9, 0x8f, 0xe6, 0x3c, 0x9e, 0xdc, 0x42, 0xbf,
0x93, 0x28, 0xf4, 0xaf, 0x9f, 0xc2, 0xf3, 0xfc, 0x1a, 0xff, 0x01, 0xa8, 0x87, 0xdd, 0x9d, 0xed,
0x00, 0x6a, 0xfd, 0xae, 0x04, 0x66, 0x62, 0x5d, 0x9c, 0xf1, 0xf8, 0x7a, 0x2c, 0x1d, 0xfb, 0x6c,
0x63, 0x6e, 0x14, 0x19, 0x88, 0x1a, 0x1c, 0xf1, 0x3f, 0x31, 0xa9, 0x13, 0xbf, 0xe0, 0xa5, 0x4f,
0xfe, 0x1f, 0x82, 0x39, 0x8a, 0x9d, 0x21, 0xa1, 0x81, 0x8d, 0x4f, 0x58, 0x3d, 0x7a, 0x9d, 0x38,
0x90, 0xac, 0x28, 0x81, 0x5e, 0xb9, 0x0b, 0x66, 0xa5, 0xce, 0xe0, 0x65, 0x50, 0x3e, 0x26, 0x63,
0x5f, 0xf6, 0x20, 0xf6, 0x13, 0x2e, 0x82, 0xea, 0x08, 0xeb, 0x9e, 0x9f, 0xe7, 0x75, 0xe4, 0xff,
0xb9, 0x53, 0x7a, 0x5f, 0x69, 0x7d, 0xc6, 0x26, 0x27, 0x4a, 0xce, 0x0b, 0xc8, 0xae, 0x0f, 0xa5,
0xec, 0xca, 0xff, 0xa6, 0x14, 0xdf, 0x32, 0x79, 0x39, 0x86, 0x12, 0x39, 0xf6, 0x66, 0x21, 0xb6,
0xe7, 0x67, 0xda, 0x9f, 0x15, 0x30, 0x1f, 0x43, 0x5f, 0x80, 0xc0, 0x79, 0x20, 0x0b, 0x9c, 0xd7,
0x8b, 0x0c, 0x22, 0x47, 0xe1, 0xfc, 0xa3, 0x2a, 0x05, 0xff, 0x9d, 0x97, 0x38, 0xbf, 0x04, 0x8b,
0x23, 0x4b, 0xf7, 0x0c, 0xb2, 0xa5, 0x63, 0xcd, 0x08, 0x00, 0xac, 0x8a, 0x97, 0x93, 0x77, 0x8b,
0x90, 0x9e, 0x38, 0xae, 0xe6, 0x52, 0x62, 0xd2, 0x47, 0x91, 0x67, 0xa4, 0x43, 0x1e, 0x65, 0xd0,
0xa1, 0xcc, 0x4e, 0xe0, 0xbb, 0x60, 0x86, 0xe9, 0x09, 0xad, 0x4f, 0xf6, 0xb0, 0x11, 0x08, 0xe7,
0xf0, 0x8b, 0x47, 0x37, 0x32, 0xa1, 0x38, 0x0e, 0x1e, 0x81, 0x05, 0xdb, 0x1a, 0xec, 0x62, 0x13,
0x0f, 0x09, 0x2b, 0x7b, 0xfb, 0xfc, 0x9b, 0x38, 0x7f, 0x8c, 0xa9, 0x77, 0xde, 0x0b, 0x6e, 0xe9,
0xfb, 0x69, 0x08, 0xbb, 0xb4, 0x64, 0x34, 0xf3, 0x4b, 0x4b, 0x16, 0x25, 0x74, 0x52, 0x5f, 0xfc,
0xfc, 0x37, 0xcb, 0x8d, 0x22, 0x19, 0x76, 0xce, 0x6f, 0x7e, 0x79, 0x6f, 0x4d, 0xb5, 0x73, 0x7d,
0x64, 0xfb, 0xac, 0x02, 0xae, 0xa4, 0xb6, 0xee, 0xff, 0xf0, 0xb5, 0x27, 0x25, 0x17, 0xcb, 0x67,
0x90, 0x8b, 0x9b, 0x60, 0x5e, 0x7c, 0xdf, 0x4b, 0xa8, 0xcd, 0x50, 0x8f, 0x6f, 0xc9, 0x66, 0x94,
0xc4, 0x67, 0xbd, 0x36, 0x55, 0xcf, 0xf8, 0xda, 0x14, 0x8f, 0xc2, 0x9f, 0x71, 0x91, 0x7a, 0xe9,
0x28, 0x7c, 0x33, 0x4a, 0xe2, 0x59, 0xc5, 0xf2, 0x59, 0x43, 0x86, 0x69, 0xb9, 0x62, 0x1d, 0x4a,
0x56, 0x94, 0x40, 0x7f, 0xab, 0x6f, 0x58, 0xff, 0x54, 0xc0, 0xab, 0xb9, 0x59, 0x0a, 0x37, 0xa5,
0x2b, 0xff, 0xcd, 0xc4, 0x95, 0xff, 0x07, 0xb9, 0x8e, 0xb1, 0x8b, 0xbf, 0x93, 0xfd, 0x8e, 0xf3,
0x41, 0xb1, 0x77, 0x9c, 0x0c, 0xa1, 0x77, 0xfa, 0x83, 0x4e, 0xe7, 0xe6, 0xd3, 0x67, 0xcd, 0x4b,
0x5f, 0x3c, 0x6b, 0x5e, 0xfa, 0xea, 0x59, 0xf3, 0xd2, 0xaf, 0x26, 0x4d, 0xe5, 0xe9, 0xa4, 0xa9,
0x7c, 0x31, 0x69, 0x2a, 0x5f, 0x4d, 0x9a, 0xca, 0xbf, 0x26, 0x4d, 0xe5, 0xf3, 0xaf, 0x9b, 0x97,
0x3e, 0x9e, 0x16, 0x3d, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, 0x13, 0xf6, 0xf1, 0xb6, 0x00, 0x24,
0x00, 0x00,
}

View File

@ -666,6 +666,12 @@ message StatefulSetStatus {
// updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence
// [replicas-updatedReplicas,replicas)
optional string updateRevision = 7;
// collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller
// uses this field as a collision avoidance mechanism when it needs to create the name for the
// newest ControllerRevision.
// +optional
optional int64 collisionCount = 9;
}
// WIP: This is not ready to be used and we plan to make breaking changes to it.

View File

@ -252,6 +252,12 @@ type StatefulSetStatus struct {
// updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence
// [replicas-updatedReplicas,replicas)
UpdateRevision string `json:"updateRevision,omitempty" protobuf:"bytes,7,opt,name=updateRevision"`
// collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller
// uses this field as a collision avoidance mechanism when it needs to create the name for the
// newest ControllerRevision.
// +optional
CollisionCount *int64 `json:"collisionCount,omitempty" protobuf:"varint,9,opt,name=collisionCount"`
}
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

View File

@ -328,6 +328,7 @@ var map_StatefulSetStatus = map[string]string{
"updatedReplicas": "updatedReplicas is the number of Pods created by the StatefulSet controller from the StatefulSet version indicated by updateRevision.",
"currentRevision": "currentRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [0,currentReplicas).",
"updateRevision": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)",
"collisionCount": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.",
}
func (StatefulSetStatus) SwaggerDoc() map[string]string {

View File

@ -787,7 +787,7 @@ func (in *StatefulSet) DeepCopyInto(out *StatefulSet) {
out.TypeMeta = in.TypeMeta
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
in.Spec.DeepCopyInto(&out.Spec)
out.Status = in.Status
in.Status.DeepCopyInto(&out.Status)
return
}
@ -899,6 +899,15 @@ func (in *StatefulSetSpec) DeepCopy() *StatefulSetSpec {
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) {
*out = *in
if in.CollisionCount != nil {
in, out := &in.CollisionCount, &out.CollisionCount
if *in == nil {
*out = nil
} else {
*out = new(int64)
**out = **in
}
}
return
}