From 2dda807d3cefcc8df039f3338e1530dccfe58620 Mon Sep 17 00:00:00 2001 From: Mohamed Chiheb Date: Thu, 10 Mar 2022 17:59:51 +0100 Subject: [PATCH 01/10] Make values accepts a string and an object Signed-off-by: Mohamed Chiheb --- assets/swagger.json | 27 +- cmd/argocd/commands/app.go | 2 +- cmd/util/app.go | 2 +- hack/generate-proto.sh | 2 +- manifests/core-install.yaml | 12 +- manifests/crds/application-crd.yaml | 12 +- manifests/ha/install.yaml | 15 +- manifests/ha/namespace-install.yaml | 3 - manifests/install.yaml | 12 +- pkg/apis/application/v1alpha1/generated.pb.go | 1179 ++++++++++------- pkg/apis/application/v1alpha1/generated.proto | 12 +- pkg/apis/application/v1alpha1/object_types.go | 69 + .../application/v1alpha1/openapi_generated.go | 18 +- pkg/apis/application/v1alpha1/types.go | 5 +- .../v1alpha1/zz_generated.deepcopy.go | 22 + reposerver/repository/repository.go | 4 +- reposerver/repository/repository_test.go | 30 +- 17 files changed, 891 insertions(+), 535 deletions(-) create mode 100644 pkg/apis/application/v1alpha1/object_types.go diff --git a/assets/swagger.json b/assets/swagger.json index a2e071ae0626c..278a7e67e2f9e 100644 --- a/assets/swagger.json +++ b/assets/swagger.json @@ -4130,6 +4130,17 @@ } } }, + "runtimeRawExtension": { + "description": "RawExtension is used to hold extensions in external versions.\n\nTo use this, make a field which has RawExtension as its type in your external, versioned\nstruct, and Object in your internal struct. You also need to register your\nvarious plugin types.\n\n// Internal package:\ntype MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n}\ntype PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package:\ntype MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n}\ntype PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this:\n{\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\n\nSo what happens? Decode first uses json or yaml to unmarshal the serialized data into\nyour external MyAPIObject. That causes the raw JSON to be stored, but not unpacked.\nThe next step is to copy (using pkg/conversion) into the internal struct. The runtime\npackage's DefaultScheme has conversion functions installed which will unpack the\nJSON stored in RawExtension, turning it into the correct object type, and storing it\nin the Object. (TODO: In the case where the object is of an unknown type, a\nruntime.Unknown object will be created and stored.)\n\n+k8s:deepcopy-gen=true\n+protobuf=true\n+k8s:openapi-gen=true", + "type": "object", + "properties": { + "raw": { + "description": "Raw is the underlying serialization of this object.\n\nTODO: Determine how to detect ContentType and ContentEncoding of 'Raw' data.", + "type": "string", + "format": "byte" + } + } + }, "runtimeStreamError": { "type": "object", "properties": { @@ -4946,8 +4957,7 @@ } }, "values": { - "type": "string", - "title": "Values specifies Helm values to be passed to helm template, typically defined as a block" + "$ref": "#/definitions/v1alpha1Object" }, "version": { "type": "string", @@ -5683,6 +5693,19 @@ } } }, + "v1alpha1Object": { + "type": "object", + "title": "+kubebuilder:validation:Type=\"\"", + "properties": { + "raw": { + "$ref": "#/definitions/runtimeRawExtension" + }, + "values": { + "type": "string", + "title": "Values as string if Raw == nil" + } + } + }, "v1alpha1Operation": { "type": "object", "title": "Operation contains information about a requested or running operation", diff --git a/cmd/argocd/commands/app.go b/cmd/argocd/commands/app.go index 04712c78d761c..26ac0f924bee5 100644 --- a/cmd/argocd/commands/app.go +++ b/cmd/argocd/commands/app.go @@ -647,7 +647,7 @@ func NewApplicationUnsetCommand(clientOpts *argocdclient.ClientOptions) *cobra.C } } if valuesLiteral { - app.Spec.Source.Helm.Values = "" + app.Spec.Source.Helm.Values.Values = "" updated = true } for _, valuesFile := range valuesFiles { diff --git a/cmd/util/app.go b/cmd/util/app.go index 20f851005881d..f9753164ec4b8 100644 --- a/cmd/util/app.go +++ b/cmd/util/app.go @@ -398,7 +398,7 @@ func setHelmOpt(src *argoappv1.ApplicationSource, opts helmOpts) { src.Helm.IgnoreMissingValueFiles = opts.ignoreMissingValueFiles } if len(opts.values) > 0 { - src.Helm.Values = opts.values + src.Helm.Values.Values = opts.values } if opts.releaseName != "" { src.Helm.ReleaseName = opts.releaseName diff --git a/hack/generate-proto.sh b/hack/generate-proto.sh index 232ef126dcf42..2253eb0cc34e2 100755 --- a/hack/generate-proto.sh +++ b/hack/generate-proto.sh @@ -121,7 +121,7 @@ clean_swagger() { } echo "If additional types are added, the number of expected collisions may need to be increased" -EXPECTED_COLLISION_COUNT=62 +EXPECTED_COLLISION_COUNT=64 collect_swagger server ${EXPECTED_COLLISION_COUNT} clean_swagger server clean_swagger reposerver diff --git a/manifests/core-install.yaml b/manifests/core-install.yaml index 18457ee3bd83d..06a5fae1f0e1c 100644 --- a/manifests/core-install.yaml +++ b/manifests/core-install.yaml @@ -280,7 +280,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -627,7 +627,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -981,7 +981,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -1352,7 +1352,7 @@ spec: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -1697,7 +1697,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -2031,7 +2031,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") diff --git a/manifests/crds/application-crd.yaml b/manifests/crds/application-crd.yaml index 7a894b84f22e4..7e37e96268b2e 100644 --- a/manifests/crds/application-crd.yaml +++ b/manifests/crds/application-crd.yaml @@ -279,7 +279,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -626,7 +626,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -980,7 +980,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -1351,7 +1351,7 @@ spec: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -1696,7 +1696,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -2030,7 +2030,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") diff --git a/manifests/ha/install.yaml b/manifests/ha/install.yaml index fc8ca277254c5..3186d83e2456d 100644 --- a/manifests/ha/install.yaml +++ b/manifests/ha/install.yaml @@ -280,7 +280,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -627,7 +627,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -981,7 +981,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -1352,7 +1352,7 @@ spec: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -1697,7 +1697,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -2031,7 +2031,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -9738,7 +9738,6 @@ spec: apiVersion: v1 kind: Service metadata: - annotations: null labels: app.kubernetes.io/component: redis app.kubernetes.io/name: argocd-redis-ha @@ -9840,7 +9839,6 @@ spec: apiVersion: v1 kind: Service metadata: - annotations: null labels: app.kubernetes.io/component: redis app.kubernetes.io/name: argocd-redis-ha-haproxy @@ -10811,7 +10809,6 @@ spec: apiVersion: apps/v1 kind: StatefulSet metadata: - annotations: {} labels: app.kubernetes.io/component: redis app.kubernetes.io/name: argocd-redis-ha diff --git a/manifests/ha/namespace-install.yaml b/manifests/ha/namespace-install.yaml index 4aa100e20da7e..7dbf9c746b950 100644 --- a/manifests/ha/namespace-install.yaml +++ b/manifests/ha/namespace-install.yaml @@ -1025,7 +1025,6 @@ spec: apiVersion: v1 kind: Service metadata: - annotations: null labels: app.kubernetes.io/component: redis app.kubernetes.io/name: argocd-redis-ha @@ -1127,7 +1126,6 @@ spec: apiVersion: v1 kind: Service metadata: - annotations: null labels: app.kubernetes.io/component: redis app.kubernetes.io/name: argocd-redis-ha-haproxy @@ -2098,7 +2096,6 @@ spec: apiVersion: apps/v1 kind: StatefulSet metadata: - annotations: {} labels: app.kubernetes.io/component: redis app.kubernetes.io/name: argocd-redis-ha diff --git a/manifests/install.yaml b/manifests/install.yaml index fc5c4562dab97..d29497698c09a 100644 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -280,7 +280,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -627,7 +627,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -981,7 +981,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -1352,7 +1352,7 @@ spec: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -1697,7 +1697,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") @@ -2031,7 +2031,7 @@ spec: values: description: Values specifies Helm values to be passed to helm template, typically defined as a block - type: string + x-kubernetes-preserve-unknown-fields: true version: description: Version is the Helm version to use for templating (either "2" or "3") diff --git a/pkg/apis/application/v1alpha1/generated.pb.go b/pkg/apis/application/v1alpha1/generated.pb.go index 705cbf1eaa56f..9ab90e7ae4783 100644 --- a/pkg/apis/application/v1alpha1/generated.pb.go +++ b/pkg/apis/application/v1alpha1/generated.pb.go @@ -16,6 +16,7 @@ import ( k8s_io_api_core_v1 "k8s.io/api/core/v1" v11 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" math "math" math_bits "math/bits" @@ -1380,10 +1381,38 @@ func (m *KustomizeOptions) XXX_DiscardUnknown() { var xxx_messageInfo_KustomizeOptions proto.InternalMessageInfo +func (m *Object) Reset() { *m = Object{} } +func (*Object) ProtoMessage() {} +func (*Object) Descriptor() ([]byte, []int) { + return fileDescriptor_030104ce3b95bcac, []int{48} +} +func (m *Object) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Object) 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 *Object) XXX_Merge(src proto.Message) { + xxx_messageInfo_Object.Merge(m, src) +} +func (m *Object) XXX_Size() int { + return m.Size() +} +func (m *Object) XXX_DiscardUnknown() { + xxx_messageInfo_Object.DiscardUnknown(m) +} + +var xxx_messageInfo_Object proto.InternalMessageInfo + func (m *Operation) Reset() { *m = Operation{} } func (*Operation) ProtoMessage() {} func (*Operation) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{48} + return fileDescriptor_030104ce3b95bcac, []int{49} } func (m *Operation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1411,7 +1440,7 @@ var xxx_messageInfo_Operation proto.InternalMessageInfo func (m *OperationInitiator) Reset() { *m = OperationInitiator{} } func (*OperationInitiator) ProtoMessage() {} func (*OperationInitiator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{49} + return fileDescriptor_030104ce3b95bcac, []int{50} } func (m *OperationInitiator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1439,7 +1468,7 @@ var xxx_messageInfo_OperationInitiator proto.InternalMessageInfo func (m *OperationState) Reset() { *m = OperationState{} } func (*OperationState) ProtoMessage() {} func (*OperationState) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{50} + return fileDescriptor_030104ce3b95bcac, []int{51} } func (m *OperationState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1467,7 +1496,7 @@ var xxx_messageInfo_OperationState proto.InternalMessageInfo func (m *OrphanedResourceKey) Reset() { *m = OrphanedResourceKey{} } func (*OrphanedResourceKey) ProtoMessage() {} func (*OrphanedResourceKey) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{51} + return fileDescriptor_030104ce3b95bcac, []int{52} } func (m *OrphanedResourceKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1495,7 +1524,7 @@ var xxx_messageInfo_OrphanedResourceKey proto.InternalMessageInfo func (m *OrphanedResourcesMonitorSettings) Reset() { *m = OrphanedResourcesMonitorSettings{} } func (*OrphanedResourcesMonitorSettings) ProtoMessage() {} func (*OrphanedResourcesMonitorSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{52} + return fileDescriptor_030104ce3b95bcac, []int{53} } func (m *OrphanedResourcesMonitorSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1523,7 +1552,7 @@ var xxx_messageInfo_OrphanedResourcesMonitorSettings proto.InternalMessageInfo func (m *OverrideIgnoreDiff) Reset() { *m = OverrideIgnoreDiff{} } func (*OverrideIgnoreDiff) ProtoMessage() {} func (*OverrideIgnoreDiff) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{53} + return fileDescriptor_030104ce3b95bcac, []int{54} } func (m *OverrideIgnoreDiff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1551,7 +1580,7 @@ var xxx_messageInfo_OverrideIgnoreDiff proto.InternalMessageInfo func (m *ProjectRole) Reset() { *m = ProjectRole{} } func (*ProjectRole) ProtoMessage() {} func (*ProjectRole) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{54} + return fileDescriptor_030104ce3b95bcac, []int{55} } func (m *ProjectRole) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1579,7 +1608,7 @@ var xxx_messageInfo_ProjectRole proto.InternalMessageInfo func (m *RepoCreds) Reset() { *m = RepoCreds{} } func (*RepoCreds) ProtoMessage() {} func (*RepoCreds) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{55} + return fileDescriptor_030104ce3b95bcac, []int{56} } func (m *RepoCreds) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1607,7 +1636,7 @@ var xxx_messageInfo_RepoCreds proto.InternalMessageInfo func (m *RepoCredsList) Reset() { *m = RepoCredsList{} } func (*RepoCredsList) ProtoMessage() {} func (*RepoCredsList) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{56} + return fileDescriptor_030104ce3b95bcac, []int{57} } func (m *RepoCredsList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1635,7 +1664,7 @@ var xxx_messageInfo_RepoCredsList proto.InternalMessageInfo func (m *Repository) Reset() { *m = Repository{} } func (*Repository) ProtoMessage() {} func (*Repository) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{57} + return fileDescriptor_030104ce3b95bcac, []int{58} } func (m *Repository) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1663,7 +1692,7 @@ var xxx_messageInfo_Repository proto.InternalMessageInfo func (m *RepositoryCertificate) Reset() { *m = RepositoryCertificate{} } func (*RepositoryCertificate) ProtoMessage() {} func (*RepositoryCertificate) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{58} + return fileDescriptor_030104ce3b95bcac, []int{59} } func (m *RepositoryCertificate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1691,7 +1720,7 @@ var xxx_messageInfo_RepositoryCertificate proto.InternalMessageInfo func (m *RepositoryCertificateList) Reset() { *m = RepositoryCertificateList{} } func (*RepositoryCertificateList) ProtoMessage() {} func (*RepositoryCertificateList) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{59} + return fileDescriptor_030104ce3b95bcac, []int{60} } func (m *RepositoryCertificateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1719,7 +1748,7 @@ var xxx_messageInfo_RepositoryCertificateList proto.InternalMessageInfo func (m *RepositoryList) Reset() { *m = RepositoryList{} } func (*RepositoryList) ProtoMessage() {} func (*RepositoryList) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{60} + return fileDescriptor_030104ce3b95bcac, []int{61} } func (m *RepositoryList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1747,7 +1776,7 @@ var xxx_messageInfo_RepositoryList proto.InternalMessageInfo func (m *ResourceAction) Reset() { *m = ResourceAction{} } func (*ResourceAction) ProtoMessage() {} func (*ResourceAction) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{61} + return fileDescriptor_030104ce3b95bcac, []int{62} } func (m *ResourceAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1775,7 +1804,7 @@ var xxx_messageInfo_ResourceAction proto.InternalMessageInfo func (m *ResourceActionDefinition) Reset() { *m = ResourceActionDefinition{} } func (*ResourceActionDefinition) ProtoMessage() {} func (*ResourceActionDefinition) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{62} + return fileDescriptor_030104ce3b95bcac, []int{63} } func (m *ResourceActionDefinition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1803,7 +1832,7 @@ var xxx_messageInfo_ResourceActionDefinition proto.InternalMessageInfo func (m *ResourceActionParam) Reset() { *m = ResourceActionParam{} } func (*ResourceActionParam) ProtoMessage() {} func (*ResourceActionParam) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{63} + return fileDescriptor_030104ce3b95bcac, []int{64} } func (m *ResourceActionParam) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1831,7 +1860,7 @@ var xxx_messageInfo_ResourceActionParam proto.InternalMessageInfo func (m *ResourceActions) Reset() { *m = ResourceActions{} } func (*ResourceActions) ProtoMessage() {} func (*ResourceActions) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{64} + return fileDescriptor_030104ce3b95bcac, []int{65} } func (m *ResourceActions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1859,7 +1888,7 @@ var xxx_messageInfo_ResourceActions proto.InternalMessageInfo func (m *ResourceDiff) Reset() { *m = ResourceDiff{} } func (*ResourceDiff) ProtoMessage() {} func (*ResourceDiff) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{65} + return fileDescriptor_030104ce3b95bcac, []int{66} } func (m *ResourceDiff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1887,7 +1916,7 @@ var xxx_messageInfo_ResourceDiff proto.InternalMessageInfo func (m *ResourceIgnoreDifferences) Reset() { *m = ResourceIgnoreDifferences{} } func (*ResourceIgnoreDifferences) ProtoMessage() {} func (*ResourceIgnoreDifferences) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{66} + return fileDescriptor_030104ce3b95bcac, []int{67} } func (m *ResourceIgnoreDifferences) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1915,7 +1944,7 @@ var xxx_messageInfo_ResourceIgnoreDifferences proto.InternalMessageInfo func (m *ResourceNetworkingInfo) Reset() { *m = ResourceNetworkingInfo{} } func (*ResourceNetworkingInfo) ProtoMessage() {} func (*ResourceNetworkingInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{67} + return fileDescriptor_030104ce3b95bcac, []int{68} } func (m *ResourceNetworkingInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1943,7 +1972,7 @@ var xxx_messageInfo_ResourceNetworkingInfo proto.InternalMessageInfo func (m *ResourceNode) Reset() { *m = ResourceNode{} } func (*ResourceNode) ProtoMessage() {} func (*ResourceNode) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{68} + return fileDescriptor_030104ce3b95bcac, []int{69} } func (m *ResourceNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1971,7 +2000,7 @@ var xxx_messageInfo_ResourceNode proto.InternalMessageInfo func (m *ResourceOverride) Reset() { *m = ResourceOverride{} } func (*ResourceOverride) ProtoMessage() {} func (*ResourceOverride) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{69} + return fileDescriptor_030104ce3b95bcac, []int{70} } func (m *ResourceOverride) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1999,7 +2028,7 @@ var xxx_messageInfo_ResourceOverride proto.InternalMessageInfo func (m *ResourceRef) Reset() { *m = ResourceRef{} } func (*ResourceRef) ProtoMessage() {} func (*ResourceRef) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{70} + return fileDescriptor_030104ce3b95bcac, []int{71} } func (m *ResourceRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2027,7 +2056,7 @@ var xxx_messageInfo_ResourceRef proto.InternalMessageInfo func (m *ResourceResult) Reset() { *m = ResourceResult{} } func (*ResourceResult) ProtoMessage() {} func (*ResourceResult) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{71} + return fileDescriptor_030104ce3b95bcac, []int{72} } func (m *ResourceResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2055,7 +2084,7 @@ var xxx_messageInfo_ResourceResult proto.InternalMessageInfo func (m *ResourceStatus) Reset() { *m = ResourceStatus{} } func (*ResourceStatus) ProtoMessage() {} func (*ResourceStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{72} + return fileDescriptor_030104ce3b95bcac, []int{73} } func (m *ResourceStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2083,7 +2112,7 @@ var xxx_messageInfo_ResourceStatus proto.InternalMessageInfo func (m *RetryStrategy) Reset() { *m = RetryStrategy{} } func (*RetryStrategy) ProtoMessage() {} func (*RetryStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{73} + return fileDescriptor_030104ce3b95bcac, []int{74} } func (m *RetryStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2111,7 +2140,7 @@ var xxx_messageInfo_RetryStrategy proto.InternalMessageInfo func (m *RevisionHistory) Reset() { *m = RevisionHistory{} } func (*RevisionHistory) ProtoMessage() {} func (*RevisionHistory) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{74} + return fileDescriptor_030104ce3b95bcac, []int{75} } func (m *RevisionHistory) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2139,7 +2168,7 @@ var xxx_messageInfo_RevisionHistory proto.InternalMessageInfo func (m *RevisionMetadata) Reset() { *m = RevisionMetadata{} } func (*RevisionMetadata) ProtoMessage() {} func (*RevisionMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{75} + return fileDescriptor_030104ce3b95bcac, []int{76} } func (m *RevisionMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2167,7 +2196,7 @@ var xxx_messageInfo_RevisionMetadata proto.InternalMessageInfo func (m *SignatureKey) Reset() { *m = SignatureKey{} } func (*SignatureKey) ProtoMessage() {} func (*SignatureKey) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{76} + return fileDescriptor_030104ce3b95bcac, []int{77} } func (m *SignatureKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2195,7 +2224,7 @@ var xxx_messageInfo_SignatureKey proto.InternalMessageInfo func (m *SyncOperation) Reset() { *m = SyncOperation{} } func (*SyncOperation) ProtoMessage() {} func (*SyncOperation) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{77} + return fileDescriptor_030104ce3b95bcac, []int{78} } func (m *SyncOperation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2223,7 +2252,7 @@ var xxx_messageInfo_SyncOperation proto.InternalMessageInfo func (m *SyncOperationResource) Reset() { *m = SyncOperationResource{} } func (*SyncOperationResource) ProtoMessage() {} func (*SyncOperationResource) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{78} + return fileDescriptor_030104ce3b95bcac, []int{79} } func (m *SyncOperationResource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2251,7 +2280,7 @@ var xxx_messageInfo_SyncOperationResource proto.InternalMessageInfo func (m *SyncOperationResult) Reset() { *m = SyncOperationResult{} } func (*SyncOperationResult) ProtoMessage() {} func (*SyncOperationResult) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{79} + return fileDescriptor_030104ce3b95bcac, []int{80} } func (m *SyncOperationResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2279,7 +2308,7 @@ var xxx_messageInfo_SyncOperationResult proto.InternalMessageInfo func (m *SyncPolicy) Reset() { *m = SyncPolicy{} } func (*SyncPolicy) ProtoMessage() {} func (*SyncPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{80} + return fileDescriptor_030104ce3b95bcac, []int{81} } func (m *SyncPolicy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2307,7 +2336,7 @@ var xxx_messageInfo_SyncPolicy proto.InternalMessageInfo func (m *SyncPolicyAutomated) Reset() { *m = SyncPolicyAutomated{} } func (*SyncPolicyAutomated) ProtoMessage() {} func (*SyncPolicyAutomated) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{81} + return fileDescriptor_030104ce3b95bcac, []int{82} } func (m *SyncPolicyAutomated) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2335,7 +2364,7 @@ var xxx_messageInfo_SyncPolicyAutomated proto.InternalMessageInfo func (m *SyncStatus) Reset() { *m = SyncStatus{} } func (*SyncStatus) ProtoMessage() {} func (*SyncStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{82} + return fileDescriptor_030104ce3b95bcac, []int{83} } func (m *SyncStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2363,7 +2392,7 @@ var xxx_messageInfo_SyncStatus proto.InternalMessageInfo func (m *SyncStrategy) Reset() { *m = SyncStrategy{} } func (*SyncStrategy) ProtoMessage() {} func (*SyncStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{83} + return fileDescriptor_030104ce3b95bcac, []int{84} } func (m *SyncStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2391,7 +2420,7 @@ var xxx_messageInfo_SyncStrategy proto.InternalMessageInfo func (m *SyncStrategyApply) Reset() { *m = SyncStrategyApply{} } func (*SyncStrategyApply) ProtoMessage() {} func (*SyncStrategyApply) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{84} + return fileDescriptor_030104ce3b95bcac, []int{85} } func (m *SyncStrategyApply) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2419,7 +2448,7 @@ var xxx_messageInfo_SyncStrategyApply proto.InternalMessageInfo func (m *SyncStrategyHook) Reset() { *m = SyncStrategyHook{} } func (*SyncStrategyHook) ProtoMessage() {} func (*SyncStrategyHook) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{85} + return fileDescriptor_030104ce3b95bcac, []int{86} } func (m *SyncStrategyHook) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2447,7 +2476,7 @@ var xxx_messageInfo_SyncStrategyHook proto.InternalMessageInfo func (m *SyncWindow) Reset() { *m = SyncWindow{} } func (*SyncWindow) ProtoMessage() {} func (*SyncWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{86} + return fileDescriptor_030104ce3b95bcac, []int{87} } func (m *SyncWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2475,7 +2504,7 @@ var xxx_messageInfo_SyncWindow proto.InternalMessageInfo func (m *TLSClientConfig) Reset() { *m = TLSClientConfig{} } func (*TLSClientConfig) ProtoMessage() {} func (*TLSClientConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{87} + return fileDescriptor_030104ce3b95bcac, []int{88} } func (m *TLSClientConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2555,6 +2584,7 @@ func init() { proto.RegisterType((*JsonnetVar)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.JsonnetVar") proto.RegisterType((*KnownTypeField)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.KnownTypeField") proto.RegisterType((*KustomizeOptions)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.KustomizeOptions") + proto.RegisterType((*Object)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Object") proto.RegisterType((*Operation)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Operation") proto.RegisterType((*OperationInitiator)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.OperationInitiator") proto.RegisterType((*OperationState)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.OperationState") @@ -2604,433 +2634,436 @@ func init() { } var fileDescriptor_030104ce3b95bcac = []byte{ - // 6807 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5d, 0x8c, 0x24, 0xc9, - 0x51, 0xf0, 0x55, 0xf7, 0xfc, 0x74, 0xc7, 0xfc, 0xec, 0x4e, 0xee, 0xcf, 0x8d, 0xe7, 0x3b, 0xef, - 0xac, 0xea, 0x64, 0xfb, 0xbe, 0xcf, 0xf6, 0xcc, 0x77, 0xcb, 0xd9, 0x1c, 0x3e, 0x73, 0x66, 0x7a, - 0x66, 0x7f, 0x66, 0x77, 0xfe, 0x36, 0x66, 0x76, 0x17, 0x9f, 0x8d, 0xb9, 0x9a, 0xea, 0xec, 0xee, - 0xda, 0xe9, 0xae, 0xea, 0xab, 0xaa, 0x9e, 0x9d, 0xb6, 0xf1, 0x9f, 0x64, 0xf0, 0x49, 0xfe, 0x95, - 0xcd, 0x83, 0x2d, 0x21, 0x30, 0x3f, 0x42, 0xe2, 0xc1, 0x02, 0x9e, 0x00, 0x21, 0x1e, 0x30, 0x2f, - 0x46, 0x3c, 0x60, 0x09, 0x84, 0x0d, 0x16, 0x83, 0xbd, 0x80, 0x0c, 0x48, 0x80, 0x00, 0xbf, 0xb0, - 0xe2, 0x01, 0xe5, 0x4f, 0x65, 0x66, 0x55, 0x77, 0xef, 0xcc, 0x6c, 0xd7, 0x2e, 0x96, 0xc5, 0xdb, - 0x74, 0x44, 0x64, 0x44, 0x64, 0x56, 0x66, 0x64, 0x44, 0x64, 0x64, 0x0e, 0xac, 0xd5, 0xbd, 0xb8, - 0xd1, 0xd9, 0x5d, 0x70, 0x83, 0xd6, 0xa2, 0x13, 0xd6, 0x83, 0x76, 0x18, 0xdc, 0xe5, 0x7f, 0xbc, - 0xdd, 0xad, 0x2e, 0xee, 0x5f, 0x5a, 0x6c, 0xef, 0xd5, 0x17, 0x9d, 0xb6, 0x17, 0x2d, 0x3a, 0xed, - 0x76, 0xd3, 0x73, 0x9d, 0xd8, 0x0b, 0xfc, 0xc5, 0xfd, 0xe7, 0x9d, 0x66, 0xbb, 0xe1, 0x3c, 0xbf, - 0x58, 0xa7, 0x3e, 0x0d, 0x9d, 0x98, 0x56, 0x17, 0xda, 0x61, 0x10, 0x07, 0xe4, 0xdd, 0x9a, 0xdb, - 0x42, 0xc2, 0x8d, 0xff, 0xf1, 0xd3, 0x6e, 0x75, 0x61, 0xff, 0xd2, 0x42, 0x7b, 0xaf, 0xbe, 0xc0, - 0xb8, 0x2d, 0x18, 0xdc, 0x16, 0x12, 0x6e, 0x73, 0x6f, 0x37, 0x74, 0xa9, 0x07, 0xf5, 0x60, 0x91, - 0x33, 0xdd, 0xed, 0xd4, 0xf8, 0x2f, 0xfe, 0x83, 0xff, 0x25, 0x84, 0xcd, 0xd9, 0x7b, 0x2f, 0x46, - 0x0b, 0x5e, 0xc0, 0xd4, 0x5b, 0x74, 0x83, 0x90, 0x2e, 0xee, 0xf7, 0x28, 0x34, 0xf7, 0x82, 0xa6, - 0x69, 0x39, 0x6e, 0xc3, 0xf3, 0x69, 0xd8, 0xd5, 0x7d, 0x6a, 0xd1, 0xd8, 0xe9, 0xd7, 0x6a, 0x71, - 0x50, 0xab, 0xb0, 0xe3, 0xc7, 0x5e, 0x8b, 0xf6, 0x34, 0x78, 0xe7, 0x51, 0x0d, 0x22, 0xb7, 0x41, - 0x5b, 0x4e, 0xb6, 0x9d, 0xfd, 0x1a, 0x4c, 0x2d, 0xdd, 0xd9, 0x5e, 0xea, 0xc4, 0x8d, 0xe5, 0xc0, - 0xaf, 0x79, 0x75, 0xf2, 0x0e, 0x98, 0x70, 0x9b, 0x9d, 0x28, 0xa6, 0xe1, 0x86, 0xd3, 0xa2, 0xb3, - 0xd6, 0x45, 0xeb, 0xb9, 0x72, 0xe5, 0xcc, 0xd7, 0x0f, 0xe7, 0x9f, 0xba, 0x7f, 0x38, 0x3f, 0xb1, - 0xac, 0x51, 0x68, 0xd2, 0x91, 0xff, 0x0b, 0xe3, 0x61, 0xd0, 0xa4, 0x4b, 0xb8, 0x31, 0x5b, 0xe0, - 0x4d, 0x4e, 0xc9, 0x26, 0xe3, 0x28, 0xc0, 0x98, 0xe0, 0xed, 0xbf, 0x28, 0x00, 0x2c, 0xb5, 0xdb, - 0x5b, 0x61, 0x70, 0x97, 0xba, 0x31, 0x79, 0x15, 0x4a, 0x6c, 0x14, 0xaa, 0x4e, 0xec, 0x70, 0x69, - 0x13, 0x97, 0xfe, 0xff, 0x82, 0xe8, 0xcc, 0x82, 0xd9, 0x19, 0xfd, 0xe5, 0x18, 0xf5, 0xc2, 0xfe, - 0xf3, 0x0b, 0x9b, 0xbb, 0xac, 0xfd, 0x3a, 0x8d, 0x9d, 0x0a, 0x91, 0xc2, 0x40, 0xc3, 0x50, 0x71, - 0x25, 0x3e, 0x8c, 0x44, 0x6d, 0xea, 0x72, 0xc5, 0x26, 0x2e, 0xad, 0x2d, 0x0c, 0x33, 0x45, 0x16, - 0xb4, 0xe6, 0xdb, 0x6d, 0xea, 0x56, 0x26, 0xa5, 0xe4, 0x11, 0xf6, 0x0b, 0xb9, 0x1c, 0xb2, 0x0f, - 0x63, 0x51, 0xec, 0xc4, 0x9d, 0x68, 0xb6, 0xc8, 0x25, 0x6e, 0xe4, 0x26, 0x91, 0x73, 0xad, 0x4c, - 0x4b, 0x99, 0x63, 0xe2, 0x37, 0x4a, 0x69, 0xf6, 0x5f, 0x5b, 0x30, 0xad, 0x89, 0xd7, 0xbc, 0x28, - 0x26, 0xef, 0xef, 0x19, 0xdc, 0x85, 0xe3, 0x0d, 0x2e, 0x6b, 0xcd, 0x87, 0xf6, 0xb4, 0x14, 0x56, - 0x4a, 0x20, 0xc6, 0xc0, 0xb6, 0x60, 0xd4, 0x8b, 0x69, 0x2b, 0x9a, 0x2d, 0x5c, 0x2c, 0x3e, 0x37, - 0x71, 0xe9, 0x5a, 0x5e, 0xfd, 0xac, 0x4c, 0x49, 0xa1, 0xa3, 0xab, 0x8c, 0x3d, 0x0a, 0x29, 0xf6, - 0xf7, 0xc1, 0xec, 0x1f, 0x1b, 0x70, 0xf2, 0x3c, 0x4c, 0x44, 0x41, 0x27, 0x74, 0x29, 0xd2, 0x76, - 0x10, 0xcd, 0x5a, 0x17, 0x8b, 0x6c, 0xea, 0xb1, 0x99, 0xba, 0xad, 0xc1, 0x68, 0xd2, 0x90, 0xcf, - 0x5a, 0x30, 0x59, 0xa5, 0x51, 0xec, 0xf9, 0x5c, 0x7e, 0xa2, 0xfc, 0xce, 0xd0, 0xca, 0x27, 0xc0, - 0x15, 0xcd, 0xbc, 0x72, 0x56, 0x76, 0x64, 0xd2, 0x00, 0x46, 0x98, 0x92, 0xcf, 0x56, 0x5c, 0x95, - 0x46, 0x6e, 0xe8, 0xb5, 0xd9, 0x6f, 0x3e, 0x67, 0x8c, 0x15, 0xb7, 0xa2, 0x51, 0x68, 0xd2, 0x11, - 0x1f, 0x46, 0xd9, 0x8a, 0x8a, 0x66, 0x47, 0xb8, 0xfe, 0xab, 0xc3, 0xe9, 0x2f, 0x07, 0x95, 0x2d, - 0x56, 0x3d, 0xfa, 0xec, 0x57, 0x84, 0x42, 0x0c, 0xf9, 0x8c, 0x05, 0xb3, 0x72, 0xc5, 0x23, 0x15, - 0x03, 0x7a, 0xa7, 0xe1, 0xc5, 0xb4, 0xe9, 0x45, 0xf1, 0xec, 0x28, 0xd7, 0x61, 0xf1, 0x78, 0x73, - 0xeb, 0x6a, 0x18, 0x74, 0xda, 0x37, 0x3c, 0xbf, 0x5a, 0xb9, 0x28, 0x25, 0xcd, 0x2e, 0x0f, 0x60, - 0x8c, 0x03, 0x45, 0x92, 0x2f, 0x5a, 0x30, 0xe7, 0x3b, 0x2d, 0x1a, 0xb5, 0x1d, 0xf6, 0x69, 0x05, - 0xba, 0xd2, 0x74, 0xdc, 0x3d, 0xae, 0xd1, 0xd8, 0xa3, 0x69, 0x64, 0x4b, 0x8d, 0xe6, 0x36, 0x06, - 0xb2, 0xc6, 0x87, 0x88, 0x25, 0xbf, 0x6a, 0xc1, 0x4c, 0x10, 0xb6, 0x1b, 0x8e, 0x4f, 0xab, 0x09, - 0x36, 0x9a, 0x1d, 0xe7, 0x4b, 0xef, 0x03, 0xc3, 0x7d, 0xa2, 0xcd, 0x2c, 0xdb, 0xf5, 0xc0, 0xf7, - 0xe2, 0x20, 0xdc, 0xa6, 0x71, 0xec, 0xf9, 0xf5, 0xa8, 0x72, 0xee, 0xfe, 0xe1, 0xfc, 0x4c, 0x0f, - 0x15, 0xf6, 0xea, 0x43, 0x3e, 0x04, 0x13, 0x51, 0xd7, 0x77, 0xef, 0x78, 0x7e, 0x35, 0xb8, 0x17, - 0xcd, 0x96, 0xf2, 0x58, 0xbe, 0xdb, 0x8a, 0xa1, 0x5c, 0x80, 0x5a, 0x00, 0x9a, 0xd2, 0xfa, 0x7f, - 0x38, 0x3d, 0x95, 0xca, 0x79, 0x7f, 0x38, 0x3d, 0x99, 0x1e, 0x22, 0x96, 0x7c, 0xd2, 0x82, 0xa9, - 0xc8, 0xab, 0xfb, 0x4e, 0xdc, 0x09, 0xe9, 0x0d, 0xda, 0x8d, 0x66, 0x81, 0x2b, 0x72, 0x7d, 0xc8, - 0x51, 0x31, 0x58, 0x56, 0xce, 0x49, 0x1d, 0xa7, 0x4c, 0x68, 0x84, 0x69, 0xb9, 0xfd, 0x16, 0x9a, - 0x9e, 0xd6, 0x13, 0xf9, 0x2e, 0x34, 0x3d, 0xa9, 0x07, 0x8a, 0xb4, 0xff, 0xb8, 0x00, 0xa7, 0xb3, - 0x7b, 0x10, 0xf9, 0x75, 0x0b, 0x4e, 0xdd, 0xbd, 0x17, 0xef, 0x04, 0x7b, 0xd4, 0x8f, 0x2a, 0x5d, - 0x66, 0x29, 0xb8, 0xf5, 0x9d, 0xb8, 0xe4, 0xe6, 0xbb, 0xdb, 0x2d, 0x5c, 0x4f, 0x4b, 0xb9, 0xec, - 0xc7, 0x61, 0xb7, 0xf2, 0xb4, 0xec, 0xcf, 0xa9, 0xeb, 0x77, 0x76, 0x4c, 0x2c, 0x66, 0x95, 0x9a, - 0xfb, 0x94, 0x05, 0x67, 0xfb, 0xb1, 0x20, 0xa7, 0xa1, 0xb8, 0x47, 0xbb, 0xc2, 0xc1, 0x41, 0xf6, - 0x27, 0xf9, 0x29, 0x18, 0xdd, 0x77, 0x9a, 0x1d, 0x2a, 0x1d, 0x85, 0xab, 0xc3, 0x75, 0x44, 0x69, - 0x86, 0x82, 0xeb, 0xbb, 0x0a, 0x2f, 0x5a, 0xf6, 0x9f, 0x16, 0x61, 0xc2, 0xd8, 0x2a, 0x9e, 0x80, - 0xf3, 0x13, 0xa4, 0x9c, 0x9f, 0xf5, 0xdc, 0x76, 0xb9, 0x81, 0xde, 0xcf, 0xbd, 0x8c, 0xf7, 0xb3, - 0x99, 0x9f, 0xc8, 0x87, 0xba, 0x3f, 0x24, 0x86, 0x72, 0xd0, 0x66, 0xce, 0x2d, 0xdb, 0x45, 0x47, - 0xf2, 0xf8, 0x84, 0x9b, 0x09, 0xbb, 0xca, 0xd4, 0xfd, 0xc3, 0xf9, 0xb2, 0xfa, 0x89, 0x5a, 0x90, - 0xfd, 0x4d, 0x0b, 0xce, 0x1a, 0x3a, 0x2e, 0x07, 0x7e, 0xd5, 0xe3, 0x9f, 0xf6, 0x22, 0x8c, 0xc4, - 0xdd, 0x76, 0xe2, 0x41, 0xab, 0x91, 0xda, 0xe9, 0xb6, 0x29, 0x72, 0x0c, 0xf3, 0x99, 0x5b, 0x34, - 0x8a, 0x9c, 0x3a, 0xcd, 0xfa, 0xcc, 0xeb, 0x02, 0x8c, 0x09, 0x9e, 0x84, 0x40, 0x9a, 0x4e, 0x14, - 0xef, 0x84, 0x8e, 0x1f, 0x71, 0xf6, 0x3b, 0x5e, 0x8b, 0xca, 0x01, 0xfe, 0x7f, 0xc7, 0x9b, 0x31, - 0xac, 0x45, 0xe5, 0xfc, 0xfd, 0xc3, 0x79, 0xb2, 0xd6, 0xc3, 0x09, 0xfb, 0x70, 0xb7, 0xbf, 0x68, - 0xc1, 0xf9, 0xfe, 0x6e, 0x0d, 0x79, 0x33, 0x8c, 0x45, 0x34, 0xdc, 0xa7, 0xa1, 0xec, 0x9d, 0xfe, - 0x24, 0x1c, 0x8a, 0x12, 0x4b, 0x16, 0xa1, 0xac, 0x4c, 0xae, 0xec, 0xe3, 0x8c, 0x24, 0x2d, 0x6b, - 0x3b, 0xad, 0x69, 0xd8, 0xa0, 0xb1, 0x1f, 0xd2, 0x09, 0x52, 0x83, 0xc6, 0xe3, 0x0d, 0x8e, 0xb1, - 0xff, 0xc6, 0x82, 0x53, 0x86, 0x56, 0x4f, 0xc0, 0xcb, 0xf5, 0xd3, 0x5e, 0xee, 0x6a, 0x6e, 0xf3, - 0x79, 0x80, 0x9b, 0xfb, 0x47, 0xa3, 0x30, 0x63, 0xce, 0x7a, 0x6e, 0x8e, 0x79, 0x80, 0x45, 0xdb, - 0xc1, 0x2d, 0x5c, 0x93, 0x63, 0xae, 0x03, 0x2c, 0x01, 0xc6, 0x04, 0xcf, 0x06, 0xb1, 0xed, 0xc4, - 0x0d, 0x39, 0xe0, 0x6a, 0x10, 0xb7, 0x9c, 0xb8, 0x81, 0x1c, 0x43, 0x5e, 0x86, 0xe9, 0xd8, 0x09, - 0xeb, 0x34, 0x46, 0xba, 0xef, 0x45, 0xc9, 0x7a, 0x29, 0x57, 0xce, 0x4b, 0xda, 0xe9, 0x9d, 0x14, - 0x16, 0x33, 0xd4, 0xe4, 0x35, 0x18, 0x69, 0xd0, 0x66, 0x4b, 0xfa, 0x35, 0xdb, 0xf9, 0xad, 0x70, - 0xde, 0xd7, 0x6b, 0xb4, 0xd9, 0xaa, 0x94, 0x98, 0xca, 0xec, 0x2f, 0xe4, 0xa2, 0xc8, 0xcf, 0x5a, - 0x50, 0xde, 0xeb, 0x44, 0x71, 0xd0, 0xf2, 0x3e, 0x48, 0x67, 0x4b, 0x5c, 0xf0, 0x4f, 0xe6, 0x2c, - 0xf8, 0x46, 0xc2, 0x5f, 0xac, 0x77, 0xf5, 0x13, 0xb5, 0x64, 0xae, 0x47, 0xd5, 0x0b, 0xa9, 0x1b, - 0x07, 0x61, 0x77, 0x16, 0x1e, 0x8b, 0x1e, 0x2b, 0x09, 0x7f, 0xa1, 0x87, 0xfa, 0x89, 0x5a, 0x32, - 0xe9, 0xc2, 0x58, 0xbb, 0xd9, 0xa9, 0x7b, 0xfe, 0xec, 0x04, 0xd7, 0xe1, 0x56, 0xce, 0x3a, 0x6c, - 0x71, 0xe6, 0x15, 0x60, 0xab, 0x5a, 0xfc, 0x8d, 0x52, 0x20, 0x79, 0x16, 0x46, 0xdd, 0x86, 0x13, - 0xc6, 0xb3, 0x93, 0x7c, 0xd2, 0xa8, 0x59, 0xbc, 0xcc, 0x80, 0x28, 0x70, 0xf6, 0x2f, 0x17, 0x60, - 0x6e, 0x70, 0xc7, 0xc4, 0x74, 0x76, 0x3b, 0x61, 0x24, 0x0c, 0x64, 0xc9, 0x9c, 0xce, 0x1c, 0x8c, - 0x09, 0x9e, 0x7c, 0xdc, 0x82, 0xf1, 0xbb, 0x51, 0xe0, 0xfb, 0x34, 0x96, 0xbb, 0xd8, 0xed, 0x9c, - 0xfb, 0x7a, 0x5d, 0x70, 0xd7, 0x3a, 0x48, 0x00, 0x26, 0x72, 0x99, 0xba, 0xf4, 0xc0, 0x6d, 0x76, - 0xaa, 0x89, 0x69, 0x52, 0xa4, 0x97, 0x05, 0x18, 0x13, 0x3c, 0x23, 0xf5, 0x7c, 0x41, 0x3a, 0x92, - 0x26, 0x5d, 0xf5, 0x25, 0xa9, 0xc4, 0xdb, 0xbf, 0x35, 0x0a, 0xe7, 0xfa, 0xce, 0x7e, 0xb2, 0x00, - 0xc0, 0x9d, 0x86, 0x2b, 0x1e, 0x8b, 0xf0, 0x44, 0x58, 0x3b, 0xcd, 0xf6, 0xf8, 0xdb, 0x0a, 0x8a, - 0x06, 0x05, 0xf9, 0x28, 0x40, 0xdb, 0x09, 0x9d, 0x16, 0x8d, 0x69, 0x98, 0x18, 0xaa, 0x1b, 0xc3, - 0x8d, 0x12, 0xd3, 0x63, 0x2b, 0xe1, 0xa9, 0x9d, 0x0c, 0x05, 0x8a, 0xd0, 0x10, 0xc9, 0x82, 0xd8, - 0x90, 0x36, 0xa9, 0x13, 0xd1, 0x0d, 0x6d, 0xbf, 0x55, 0x10, 0x8b, 0x1a, 0x85, 0x26, 0x1d, 0xdb, - 0x48, 0x78, 0x2f, 0x22, 0x39, 0x56, 0x6a, 0x23, 0xe1, 0xfd, 0x8c, 0x50, 0x62, 0xc9, 0xe7, 0x2c, - 0x98, 0xae, 0x79, 0x4d, 0xaa, 0xa5, 0xcb, 0x90, 0x73, 0x73, 0xf8, 0x4e, 0x5e, 0x31, 0xf9, 0x6a, - 0x13, 0x98, 0x02, 0x47, 0x98, 0x11, 0xcf, 0x3e, 0xf3, 0x3e, 0x0d, 0xb9, 0xed, 0x1c, 0x4b, 0x7f, - 0xe6, 0xdb, 0x02, 0x8c, 0x09, 0x9e, 0x2c, 0xc1, 0xa9, 0xb6, 0x13, 0x45, 0xcb, 0x21, 0xad, 0x52, - 0x3f, 0xf6, 0x9c, 0xa6, 0x08, 0x08, 0x4b, 0xda, 0x8b, 0xdd, 0x4a, 0xa3, 0x31, 0x4b, 0x4f, 0xde, - 0x0b, 0x4f, 0x7b, 0x75, 0x3f, 0x08, 0xe9, 0xba, 0x17, 0x45, 0x9e, 0x5f, 0xd7, 0xd3, 0x80, 0x9b, - 0xc2, 0x52, 0x65, 0x5e, 0xb2, 0x7a, 0x7a, 0xb5, 0x3f, 0x19, 0x0e, 0x6a, 0x4f, 0xde, 0x06, 0xa5, - 0x68, 0xcf, 0x6b, 0x2f, 0x87, 0xd5, 0x68, 0xb6, 0xcc, 0x79, 0xa9, 0xcd, 0x70, 0x5b, 0xc2, 0x51, - 0x51, 0xd8, 0x5f, 0x2e, 0xc0, 0xec, 0xa0, 0xf5, 0x43, 0x22, 0xb6, 0x4a, 0xe2, 0xdb, 0x4e, 0x18, - 0xc9, 0x58, 0x60, 0xc8, 0x90, 0x52, 0xf2, 0xbd, 0xed, 0x84, 0xe6, 0x7a, 0xe3, 0x02, 0x30, 0x91, - 0x44, 0xee, 0xc2, 0x48, 0xdc, 0x74, 0x72, 0xca, 0x41, 0x19, 0x12, 0xb5, 0xc7, 0xb6, 0xb6, 0x14, - 0x21, 0x97, 0x41, 0x9e, 0x81, 0x91, 0xa6, 0xb7, 0xcb, 0x3c, 0x5b, 0xb6, 0x20, 0xf9, 0x16, 0xb5, - 0xe6, 0xed, 0x46, 0xc8, 0xa1, 0xf6, 0xbf, 0x8e, 0xf5, 0x31, 0x79, 0x6a, 0x13, 0x21, 0x97, 0x00, - 0x98, 0x07, 0xb3, 0x15, 0xd2, 0x9a, 0x77, 0x20, 0x37, 0x71, 0xb5, 0xac, 0x36, 0x14, 0x06, 0x0d, - 0xaa, 0xa4, 0xcd, 0x76, 0xa7, 0xc6, 0xda, 0x14, 0x7a, 0xdb, 0x08, 0x0c, 0x1a, 0x54, 0xe4, 0x05, - 0x18, 0xf3, 0x5a, 0x4e, 0x9d, 0x26, 0x6a, 0x3e, 0xc3, 0xd6, 0xd3, 0x2a, 0x87, 0x3c, 0x38, 0x9c, - 0x9f, 0x56, 0x0a, 0x71, 0x10, 0x4a, 0x5a, 0xf2, 0x6b, 0x16, 0x4c, 0xba, 0x41, 0xab, 0x15, 0xf8, - 0x6b, 0xce, 0x2e, 0x6d, 0x26, 0x69, 0xa5, 0xbb, 0x8f, 0x6b, 0x8b, 0x5d, 0x58, 0x36, 0x84, 0x89, - 0xa0, 0x4e, 0x25, 0xcb, 0x4c, 0x14, 0xa6, 0xb4, 0x32, 0x97, 0xdd, 0xe8, 0x11, 0xcb, 0xee, 0x77, - 0x2d, 0x98, 0x11, 0x6d, 0x97, 0x7c, 0x3f, 0x88, 0x65, 0xb6, 0x4f, 0xe4, 0x85, 0x82, 0xc7, 0xdc, - 0x2d, 0x43, 0xa2, 0xe8, 0xdb, 0x1b, 0xa4, 0x9a, 0x33, 0x3d, 0x78, 0xec, 0x55, 0x92, 0x5c, 0x85, - 0x99, 0x5a, 0x10, 0xba, 0xd4, 0x1c, 0x08, 0x69, 0x33, 0x14, 0xa3, 0x2b, 0x59, 0x02, 0xec, 0x6d, - 0x43, 0x6e, 0xc3, 0x79, 0x03, 0x68, 0x8e, 0x83, 0x30, 0x1b, 0x17, 0x24, 0xb7, 0xf3, 0x57, 0xfa, - 0x52, 0xe1, 0x80, 0xd6, 0x73, 0xef, 0x81, 0x99, 0x9e, 0xef, 0xd7, 0x27, 0xa2, 0x3e, 0x6b, 0x46, - 0xd4, 0x65, 0x23, 0x10, 0x9e, 0x5b, 0x81, 0xf3, 0xfd, 0x47, 0xea, 0x24, 0x5c, 0xec, 0x5f, 0xb4, - 0xe0, 0xe9, 0x01, 0x9e, 0x8b, 0x0a, 0x25, 0xac, 0x41, 0xa1, 0x04, 0x71, 0xa0, 0x48, 0xfd, 0x7d, - 0x69, 0x38, 0xae, 0x0c, 0x37, 0x23, 0x2e, 0xfb, 0xfb, 0xe2, 0x43, 0x8f, 0xdf, 0x3f, 0x9c, 0x2f, - 0x5e, 0xf6, 0xf7, 0x91, 0xf1, 0xb6, 0x7f, 0x7e, 0x2c, 0x15, 0xad, 0x6c, 0x27, 0x01, 0x32, 0x57, - 0x54, 0xc6, 0x2a, 0x9b, 0x39, 0xcf, 0x45, 0x23, 0x1a, 0x13, 0x69, 0x6f, 0x29, 0x8e, 0x7c, 0xca, - 0xe2, 0x99, 0xe6, 0x24, 0x8a, 0x93, 0xce, 0xd4, 0xe3, 0x49, 0x7c, 0x9b, 0xf9, 0xeb, 0x04, 0x88, - 0xa6, 0x74, 0xb6, 0x92, 0xdb, 0x22, 0xd1, 0x93, 0x75, 0xa9, 0x92, 0x5c, 0x74, 0x82, 0x27, 0x07, - 0x00, 0x51, 0xd7, 0x77, 0xb7, 0x82, 0xa6, 0xe7, 0x76, 0x65, 0x68, 0x9f, 0x43, 0xb6, 0x52, 0xf0, - 0x13, 0x7e, 0x95, 0xfe, 0x8d, 0x86, 0x2c, 0xf2, 0x15, 0x0b, 0x66, 0xc4, 0xc6, 0xb9, 0xe2, 0xd5, - 0x6a, 0x34, 0xa4, 0xbe, 0x4b, 0x13, 0xd7, 0xe3, 0xce, 0x70, 0x1a, 0x24, 0x89, 0xb6, 0xd5, 0x2c, - 0x7b, 0xbd, 0xc4, 0x7b, 0x50, 0xd8, 0xab, 0x0c, 0xa9, 0xc2, 0x88, 0xe7, 0xd7, 0x02, 0x69, 0xd8, - 0x2a, 0xc3, 0x29, 0xb5, 0xea, 0xd7, 0x02, 0xbd, 0x56, 0xd8, 0x2f, 0xe4, 0xdc, 0xc9, 0x1a, 0x9c, - 0x0d, 0x65, 0xf4, 0x77, 0xcd, 0x8b, 0x98, 0x0b, 0xbf, 0xe6, 0xb5, 0xbc, 0x98, 0x1b, 0xa5, 0x62, - 0x65, 0xf6, 0xfe, 0xe1, 0xfc, 0x59, 0xec, 0x83, 0xc7, 0xbe, 0xad, 0xec, 0xd7, 0xcb, 0xe9, 0x10, - 0x57, 0x24, 0x70, 0x3e, 0x0c, 0xe5, 0x50, 0xa5, 0xcc, 0x85, 0x03, 0xb1, 0x96, 0xcf, 0x18, 0xcb, - 0xcc, 0x91, 0xca, 0x3d, 0xe8, 0xe4, 0xb8, 0x96, 0xc8, 0x1c, 0x09, 0xf6, 0xe5, 0xe5, 0xb2, 0xc8, - 0x61, 0x7e, 0x49, 0xa9, 0x3a, 0x49, 0xd6, 0xf5, 0x5d, 0xe4, 0x32, 0x48, 0x08, 0x63, 0x0d, 0xea, - 0x34, 0xe3, 0x86, 0xcc, 0xe1, 0x5c, 0x1f, 0xd6, 0x8d, 0x65, 0xbc, 0xb2, 0xf9, 0x31, 0x01, 0x45, - 0x29, 0x89, 0x1c, 0xc0, 0x78, 0x43, 0x7c, 0x04, 0xb9, 0xb7, 0xaf, 0x0f, 0x3b, 0xb8, 0xa9, 0x2f, - 0xab, 0xd7, 0xaf, 0x04, 0x60, 0x22, 0x8e, 0xfc, 0x9c, 0x05, 0xe0, 0x26, 0x89, 0xb1, 0x64, 0xf9, - 0x60, 0x6e, 0x76, 0x47, 0xe5, 0xdc, 0xb4, 0x6b, 0xa4, 0x40, 0x11, 0x1a, 0x92, 0xc9, 0xab, 0x30, - 0x19, 0x52, 0x37, 0xf0, 0x5d, 0xaf, 0x49, 0xab, 0x4b, 0x31, 0xf7, 0xdc, 0x4f, 0x96, 0x40, 0x3b, - 0xcd, 0xfc, 0x13, 0x34, 0x78, 0x60, 0x8a, 0x23, 0x79, 0xdd, 0x82, 0x69, 0x95, 0x1c, 0x64, 0x1f, - 0x84, 0xca, 0x24, 0xc9, 0x5a, 0x4e, 0xa9, 0x48, 0xce, 0xb3, 0x42, 0x58, 0x84, 0x92, 0x86, 0x61, - 0x46, 0x2e, 0x79, 0x05, 0x20, 0xd8, 0xe5, 0x89, 0x38, 0xd6, 0xd5, 0xd2, 0x89, 0xbb, 0x3a, 0x2d, - 0x72, 0xca, 0x09, 0x07, 0x34, 0xb8, 0x91, 0x1b, 0x00, 0x62, 0xd9, 0xec, 0x74, 0xdb, 0x94, 0x87, - 0x0d, 0xe5, 0xca, 0x5b, 0x93, 0xc1, 0xdf, 0x56, 0x98, 0x07, 0x87, 0xf3, 0xbd, 0x01, 0x2e, 0xcf, - 0x80, 0x1a, 0xcd, 0xc9, 0x87, 0x60, 0x3c, 0xea, 0xb4, 0x5a, 0x8e, 0xca, 0xa7, 0x6c, 0xe5, 0xb7, - 0x23, 0x0a, 0xbe, 0x7a, 0x6e, 0x4a, 0x00, 0x26, 0x12, 0x6d, 0x1f, 0x48, 0x2f, 0x3d, 0x79, 0x01, - 0x26, 0xe9, 0x41, 0x4c, 0x43, 0xdf, 0x69, 0xde, 0xc2, 0xb5, 0x24, 0x02, 0xe7, 0x1f, 0xff, 0xb2, - 0x01, 0xc7, 0x14, 0x15, 0xb1, 0x95, 0xe7, 0x5d, 0xe0, 0xf4, 0xa0, 0x3d, 0xef, 0xc4, 0xcf, 0xb6, - 0xff, 0xb3, 0x90, 0xf2, 0x08, 0x76, 0x42, 0x4a, 0x49, 0x00, 0xa3, 0x7e, 0x50, 0x55, 0x46, 0xef, - 0x7a, 0x3e, 0x46, 0x6f, 0x23, 0xa8, 0x1a, 0x67, 0xb9, 0xec, 0x57, 0x84, 0x42, 0x0e, 0x3f, 0xec, - 0x4a, 0x4e, 0x05, 0x39, 0x42, 0x3a, 0x41, 0x79, 0x4a, 0x56, 0x87, 0x5d, 0x9b, 0xa6, 0x20, 0x4c, - 0xcb, 0x25, 0x7b, 0x30, 0xda, 0x08, 0xa2, 0x58, 0xc4, 0x2a, 0x43, 0x7b, 0x61, 0xd7, 0x82, 0x28, - 0xe6, 0x5b, 0x98, 0xea, 0x36, 0x83, 0x44, 0x28, 0x64, 0xd8, 0xdf, 0xb3, 0x52, 0xf9, 0x96, 0x3b, - 0x4e, 0xec, 0x36, 0x2e, 0xef, 0x53, 0x9f, 0xcd, 0x67, 0x33, 0x59, 0xff, 0xa3, 0x66, 0xb2, 0xfe, - 0xc1, 0xe1, 0xfc, 0x5b, 0x06, 0x15, 0xd7, 0xdc, 0x63, 0x1c, 0x16, 0x38, 0x0b, 0x23, 0xaf, 0xff, - 0x31, 0x0b, 0x26, 0x0c, 0xf5, 0xe4, 0x86, 0x92, 0x63, 0xde, 0x58, 0x39, 0x57, 0x06, 0x10, 0x4d, - 0x91, 0xf6, 0x17, 0x2c, 0x18, 0xaf, 0x38, 0xee, 0x5e, 0x50, 0xab, 0xb1, 0x00, 0xbf, 0xda, 0x91, - 0xc7, 0x22, 0xa2, 0x7f, 0x2a, 0xc0, 0x5f, 0x91, 0x70, 0x54, 0x14, 0x6c, 0x0e, 0xd7, 0x1c, 0x37, - 0x0e, 0x42, 0xae, 0x76, 0x51, 0xcc, 0xe1, 0x2b, 0x1c, 0x82, 0x12, 0x43, 0xde, 0x01, 0x13, 0x2d, - 0xe7, 0x20, 0x69, 0x9c, 0x4d, 0xf6, 0xac, 0x6b, 0x14, 0x9a, 0x74, 0xf6, 0x1f, 0x96, 0x61, 0x5c, - 0x9e, 0x3f, 0x1e, 0xfb, 0x04, 0x21, 0xf1, 0xe2, 0x0b, 0x03, 0xbd, 0xf8, 0x08, 0xc6, 0x5c, 0x5e, - 0xba, 0x24, 0xb7, 0xd2, 0x21, 0xd3, 0x5e, 0x52, 0x41, 0x51, 0x0d, 0xa5, 0xd5, 0x12, 0xbf, 0x51, - 0x8a, 0x22, 0x9f, 0xb7, 0xe0, 0x94, 0x1b, 0xf8, 0x3e, 0x75, 0xb5, 0x9d, 0x1f, 0xc9, 0xe3, 0x84, - 0x6d, 0x39, 0xcd, 0x54, 0xa7, 0x88, 0x32, 0x08, 0xcc, 0x8a, 0x27, 0x2f, 0xc1, 0x94, 0x18, 0xb3, - 0xdb, 0xa9, 0xf8, 0x58, 0x9f, 0x39, 0x9b, 0x48, 0x4c, 0xd3, 0x92, 0x05, 0x91, 0x67, 0xe0, 0x87, - 0x30, 0x22, 0x46, 0x96, 0xf9, 0x46, 0x75, 0x4a, 0x13, 0xa1, 0x41, 0x41, 0x42, 0x20, 0x21, 0xad, - 0x85, 0x34, 0x6a, 0x20, 0x7d, 0xad, 0x43, 0xa3, 0x98, 0xef, 0x31, 0xe3, 0x8f, 0x76, 0x1e, 0x85, - 0x3d, 0x9c, 0xb0, 0x0f, 0x77, 0xb2, 0x27, 0x1d, 0xdd, 0x52, 0x1e, 0xcb, 0x49, 0x7e, 0xe6, 0x81, - 0xfe, 0xee, 0x3c, 0x8c, 0x46, 0x0d, 0x27, 0xac, 0xf2, 0xbd, 0xad, 0x58, 0x29, 0x33, 0x5b, 0xb2, - 0xcd, 0x00, 0x28, 0xe0, 0x64, 0x05, 0x4e, 0x67, 0x4e, 0xcc, 0x23, 0xbe, 0x7b, 0x95, 0x2a, 0xb3, - 0x92, 0xdd, 0xe9, 0xcc, 0x59, 0x7b, 0x84, 0x3d, 0x2d, 0xcc, 0x20, 0x68, 0xe2, 0x88, 0x20, 0xa8, - 0x0b, 0x63, 0x4d, 0x91, 0x08, 0x98, 0xe4, 0xa6, 0xf2, 0x66, 0x2e, 0x03, 0xb0, 0x60, 0x26, 0x60, - 0xd4, 0x6c, 0x97, 0x09, 0x05, 0x29, 0x90, 0x7c, 0x86, 0x19, 0x34, 0x23, 0x77, 0x30, 0xc5, 0x15, - 0xb8, 0x9d, 0x8f, 0x02, 0x3d, 0xa9, 0x12, 0x6d, 0xdd, 0x8c, 0x44, 0x84, 0x29, 0x7f, 0xee, 0xc7, - 0x60, 0xe2, 0x51, 0xf3, 0x0e, 0x2f, 0xc3, 0xe9, 0xa1, 0x32, 0x0e, 0xdf, 0xb7, 0x20, 0xf9, 0xae, - 0xcb, 0x8e, 0xdb, 0xa0, 0x6c, 0xca, 0x90, 0x97, 0x61, 0x5a, 0x85, 0x11, 0xcb, 0x41, 0xc7, 0x8f, - 0x39, 0xaf, 0xa2, 0xce, 0x25, 0x63, 0x0a, 0x8b, 0x19, 0x6a, 0xb2, 0x08, 0x65, 0x36, 0x4e, 0xa2, - 0xa9, 0x30, 0xbb, 0x2a, 0x54, 0x59, 0xda, 0x5a, 0x95, 0xad, 0x34, 0x0d, 0x09, 0x60, 0xa6, 0xe9, - 0x44, 0x31, 0xd7, 0x80, 0x45, 0x15, 0x8f, 0x78, 0x1a, 0xcc, 0x0b, 0x86, 0xd6, 0xb2, 0x8c, 0xb0, - 0x97, 0xb7, 0xfd, 0xcd, 0x11, 0x98, 0x4a, 0x59, 0x46, 0xb6, 0xab, 0x74, 0x22, 0xe6, 0xfa, 0xa8, - 0x14, 0x8b, 0xda, 0x55, 0x6e, 0x49, 0x38, 0x2a, 0x0a, 0x46, 0xdd, 0x76, 0xa2, 0xe8, 0x5e, 0x10, - 0x56, 0xa5, 0x29, 0x57, 0xd4, 0x5b, 0x12, 0x8e, 0x8a, 0x82, 0xed, 0x2f, 0xbb, 0xd4, 0x09, 0x69, - 0xc8, 0x0b, 0x28, 0xb2, 0xfb, 0x4b, 0x45, 0xa3, 0xd0, 0xa4, 0xe3, 0x46, 0x39, 0x6e, 0x46, 0xcb, - 0x4d, 0x8f, 0xfa, 0xb1, 0x50, 0x33, 0x1f, 0xa3, 0xbc, 0xb3, 0xb6, 0x6d, 0x32, 0xd5, 0x46, 0x39, - 0x83, 0xc0, 0xac, 0x78, 0xf2, 0x09, 0x0b, 0xa6, 0x9c, 0x7b, 0x91, 0xae, 0xaf, 0xe5, 0x56, 0x79, - 0xe8, 0x4d, 0x2a, 0x55, 0xb2, 0x5b, 0x99, 0x61, 0xe6, 0x3d, 0x05, 0xc2, 0xb4, 0x50, 0xf2, 0x25, - 0x0b, 0x08, 0x3d, 0xa0, 0xee, 0x56, 0x18, 0xec, 0x7b, 0xd5, 0xe4, 0x1b, 0xca, 0xf0, 0x67, 0x48, - 0x6f, 0xfb, 0x72, 0x0f, 0x5f, 0x61, 0xd5, 0x7b, 0xe1, 0xd8, 0x47, 0x07, 0xfb, 0xaf, 0x8a, 0x30, - 0x61, 0x18, 0xe3, 0xbe, 0x3b, 0xab, 0xf5, 0x03, 0xb6, 0xb3, 0x16, 0x4e, 0xb0, 0xb3, 0x7e, 0x14, - 0xca, 0x6e, 0x62, 0x28, 0xf2, 0xa9, 0x07, 0xce, 0x9a, 0x1f, 0x6d, 0x2b, 0x14, 0x08, 0xb5, 0x4c, - 0x72, 0x15, 0x66, 0x0c, 0x36, 0xd2, 0xc8, 0x8c, 0x70, 0x23, 0xa3, 0x12, 0x4d, 0x4b, 0x59, 0x02, - 0xec, 0x6d, 0x43, 0x9e, 0x67, 0x5e, 0xad, 0x27, 0xfb, 0x25, 0xa2, 0x78, 0x59, 0x6b, 0xbb, 0xb4, - 0xb5, 0x9a, 0x80, 0xd1, 0xa4, 0xb1, 0xbf, 0x69, 0xa9, 0x8f, 0xfb, 0x04, 0x0a, 0x35, 0xee, 0xa6, - 0x0b, 0x35, 0x2e, 0xe7, 0x32, 0xcc, 0x03, 0x8a, 0x34, 0x36, 0x60, 0x7c, 0x39, 0x68, 0xb5, 0x1c, - 0xbf, 0x4a, 0xde, 0x04, 0xe3, 0xae, 0xf8, 0x53, 0x86, 0x89, 0x13, 0x6c, 0xff, 0x96, 0x58, 0x4c, - 0x70, 0xe4, 0x19, 0x18, 0x71, 0xc2, 0x7a, 0x12, 0x1a, 0xf2, 0xb3, 0xa3, 0xa5, 0xb0, 0x1e, 0x21, - 0x87, 0xda, 0x5f, 0x2c, 0x00, 0x2c, 0x07, 0xad, 0xb6, 0x13, 0xd2, 0xea, 0x4e, 0xf0, 0xbf, 0x39, - 0x62, 0x11, 0x31, 0x7c, 0xda, 0x02, 0xc2, 0x46, 0x25, 0xf0, 0xa9, 0x1f, 0xab, 0xc3, 0x57, 0xb6, - 0x5f, 0xba, 0x09, 0x54, 0x6e, 0x3e, 0x7a, 0x0d, 0x24, 0x08, 0xd4, 0x34, 0xc7, 0x88, 0x22, 0x9e, - 0x4d, 0x76, 0xfc, 0x62, 0xba, 0xa6, 0x81, 0x1f, 0x94, 0x4a, 0x07, 0xc0, 0xfe, 0x5a, 0x01, 0xce, - 0x0b, 0xb3, 0xb5, 0xee, 0xf8, 0x4e, 0x9d, 0xb6, 0x98, 0x56, 0xc7, 0x3d, 0x6d, 0x70, 0x99, 0xfb, - 0xea, 0x25, 0x25, 0x0c, 0xc3, 0x4e, 0x4e, 0x31, 0xa9, 0xc4, 0x34, 0x5a, 0xf5, 0xbd, 0x18, 0x39, - 0x73, 0x12, 0x41, 0x29, 0xb9, 0xe1, 0x21, 0x8d, 0x4d, 0x4e, 0x82, 0xd4, 0xba, 0xbb, 0x2a, 0xd9, - 0xa3, 0x12, 0xc4, 0x36, 0xf7, 0x66, 0xe0, 0xee, 0x21, 0x6d, 0x07, 0xdc, 0xb0, 0x18, 0x27, 0xc8, - 0x6b, 0x12, 0x8e, 0x8a, 0xc2, 0xfe, 0x9a, 0x05, 0x59, 0x93, 0xcb, 0xa3, 0x41, 0x51, 0x33, 0x98, - 0x8d, 0x06, 0xd3, 0x25, 0x7e, 0x27, 0xa8, 0x98, 0x7b, 0x3f, 0x4c, 0x38, 0x71, 0x4c, 0x5b, 0x6d, - 0x11, 0x9a, 0x14, 0x1f, 0x2d, 0xfd, 0xb5, 0x1e, 0x54, 0xbd, 0x9a, 0xc7, 0x43, 0x12, 0x93, 0x9d, - 0x7d, 0x13, 0x4a, 0xc9, 0x89, 0xcf, 0x31, 0x3e, 0xfd, 0xb3, 0x29, 0x77, 0x72, 0xc0, 0xe4, 0x7a, - 0x50, 0x80, 0x3e, 0x7b, 0x26, 0xeb, 0xb2, 0xb6, 0x2e, 0xa9, 0x2e, 0x9f, 0xcc, 0xc2, 0x90, 0x03, - 0x71, 0xda, 0x25, 0xf2, 0x2c, 0xef, 0xcd, 0x7b, 0xcf, 0xd7, 0x07, 0x60, 0x13, 0x52, 0x3f, 0x75, - 0x08, 0x46, 0x2e, 0x01, 0xe8, 0x4d, 0x41, 0x16, 0x7a, 0xa8, 0x4c, 0xad, 0xde, 0x3b, 0xd0, 0xa0, - 0x62, 0x2e, 0xa0, 0xe7, 0x47, 0xb1, 0xd3, 0x6c, 0x5e, 0xf3, 0xfc, 0x58, 0xc6, 0xb2, 0xca, 0x60, - 0xac, 0x6a, 0x14, 0x9a, 0x74, 0x73, 0xef, 0x34, 0xbe, 0xcb, 0x49, 0xdc, 0xfa, 0x4f, 0x17, 0x60, - 0xfa, 0xaa, 0xdf, 0xd9, 0xba, 0xba, 0xd5, 0xd9, 0x6d, 0x7a, 0xee, 0x0d, 0xda, 0x65, 0x1f, 0x6d, - 0x8f, 0x76, 0x57, 0x57, 0xe4, 0xb0, 0xab, 0x8f, 0x76, 0x83, 0x01, 0x51, 0xe0, 0x98, 0x9a, 0x35, - 0xcf, 0xaf, 0xd3, 0xb0, 0x1d, 0x7a, 0xd2, 0x77, 0x37, 0xd4, 0xbc, 0xa2, 0x51, 0x68, 0xd2, 0x31, - 0xde, 0xc1, 0x3d, 0x9f, 0x86, 0x59, 0x6b, 0xb3, 0xc9, 0x80, 0x28, 0x70, 0x8c, 0x28, 0x0e, 0x3b, - 0x51, 0x2c, 0x47, 0x4c, 0x11, 0xed, 0x30, 0x20, 0x0a, 0x1c, 0x9b, 0x1e, 0x51, 0x67, 0x97, 0x67, - 0x61, 0x33, 0xe7, 0xe1, 0xdb, 0x02, 0x8c, 0x09, 0x9e, 0x91, 0xee, 0xd1, 0xee, 0x0a, 0xdb, 0x7b, - 0x33, 0x15, 0x2b, 0x37, 0x04, 0x18, 0x13, 0xbc, 0xfd, 0xf7, 0x16, 0x90, 0xf4, 0x70, 0x3c, 0x81, - 0xed, 0xfb, 0xb5, 0xf4, 0xf6, 0x3d, 0x64, 0xc2, 0x3c, 0xad, 0xfe, 0x80, 0x5d, 0xfc, 0x57, 0x2c, - 0x98, 0x34, 0xcf, 0x4e, 0x48, 0x3d, 0x63, 0x88, 0x36, 0xd3, 0x86, 0xe8, 0xc1, 0xe1, 0xfc, 0x8f, - 0xf7, 0xbb, 0xae, 0x58, 0xf7, 0xe2, 0xa0, 0x1d, 0xbd, 0x9d, 0xfa, 0x75, 0xcf, 0xa7, 0x3c, 0x33, - 0x28, 0xce, 0x5c, 0x52, 0x07, 0x33, 0xcb, 0x41, 0x95, 0x3e, 0x82, 0x25, 0xb3, 0xef, 0xc0, 0x4c, - 0x4f, 0x99, 0xd2, 0x31, 0x8c, 0xce, 0x91, 0x55, 0xa0, 0x36, 0xc2, 0x04, 0x63, 0xbc, 0xd9, 0x16, - 0x87, 0x23, 0xcb, 0x30, 0x23, 0xaa, 0xad, 0x98, 0xa4, 0x6d, 0xb7, 0x41, 0x5b, 0xaa, 0xf4, 0x8c, - 0x07, 0x8a, 0xb7, 0xb3, 0x48, 0xec, 0xa5, 0xb7, 0x3f, 0x63, 0xc1, 0x54, 0xaa, 0x72, 0x2c, 0x27, - 0xf3, 0xc8, 0x57, 0x5a, 0xc0, 0x8f, 0xf2, 0x42, 0xcf, 0x17, 0xb9, 0xbe, 0x92, 0xb1, 0xd2, 0x34, - 0x0a, 0x4d, 0x3a, 0xfb, 0x0b, 0x05, 0x28, 0x25, 0x59, 0xe1, 0x63, 0xa8, 0xf2, 0x29, 0x0b, 0xa6, - 0x54, 0x70, 0xce, 0x5d, 0x76, 0x31, 0x19, 0x37, 0x86, 0xcf, 0x4b, 0xab, 0xf3, 0x5e, 0xe6, 0xb2, - 0xab, 0xd8, 0x01, 0x4d, 0x61, 0x98, 0x96, 0x4d, 0x6e, 0x03, 0x44, 0xdd, 0x28, 0xa6, 0x2d, 0x23, - 0x78, 0xb0, 0x8d, 0x15, 0xb7, 0xe0, 0x06, 0x21, 0x65, 0xeb, 0x6b, 0x23, 0xa8, 0xd2, 0x6d, 0x45, - 0xa9, 0x8d, 0xab, 0x86, 0xa1, 0xc1, 0xc9, 0xfe, 0xcd, 0x02, 0x9c, 0xce, 0xaa, 0x44, 0xde, 0x07, - 0x93, 0x89, 0x74, 0xe3, 0xe6, 0x67, 0x92, 0x0a, 0x9f, 0x44, 0x03, 0xf7, 0xe0, 0x70, 0x7e, 0xbe, - 0xf7, 0xea, 0xeb, 0x82, 0x49, 0x82, 0x29, 0x66, 0x22, 0x43, 0x22, 0x53, 0x79, 0x95, 0xee, 0x52, - 0xbb, 0x2d, 0xd3, 0x1c, 0x46, 0x86, 0xc4, 0xc4, 0x62, 0x86, 0x9a, 0x6c, 0xc1, 0x59, 0x03, 0xb2, - 0x41, 0xbd, 0x7a, 0x63, 0x37, 0x08, 0xc5, 0x15, 0x83, 0x62, 0xe5, 0x19, 0xc9, 0xe5, 0x2c, 0xf6, - 0xa1, 0xc1, 0xbe, 0x2d, 0x99, 0xd3, 0xe2, 0x3a, 0x6d, 0xc7, 0xf5, 0xe2, 0xae, 0x8c, 0x86, 0x94, - 0x6d, 0x5a, 0x96, 0x70, 0x54, 0x14, 0xf6, 0x3a, 0x8c, 0x1c, 0x73, 0x06, 0x1d, 0x6b, 0xaf, 0xbf, - 0x09, 0x25, 0xc6, 0x8e, 0xd9, 0xa2, 0xbc, 0x58, 0x06, 0x50, 0x4a, 0x6e, 0x9c, 0x10, 0x1b, 0x8a, - 0x9e, 0x93, 0x24, 0xa1, 0x54, 0xb7, 0x56, 0xa3, 0xa8, 0xc3, 0x3d, 0x19, 0x86, 0x24, 0xcf, 0x42, - 0x91, 0x1e, 0xb4, 0xb3, 0xd9, 0xa6, 0xcb, 0x07, 0x6d, 0x2f, 0xa4, 0x11, 0x23, 0xa2, 0x07, 0x6d, - 0x32, 0x07, 0x05, 0xaf, 0x2a, 0x37, 0x29, 0x90, 0x34, 0x85, 0xd5, 0x15, 0x2c, 0x78, 0x55, 0xfb, - 0x00, 0xca, 0xea, 0x8a, 0x0b, 0xd9, 0x4b, 0x6c, 0xb7, 0x95, 0xc7, 0x31, 0x4e, 0xc2, 0x77, 0x80, - 0xd5, 0xee, 0x00, 0xe8, 0x3a, 0xbd, 0xbc, 0xec, 0xcb, 0x45, 0x18, 0x71, 0x03, 0x59, 0xde, 0x5b, - 0xd2, 0x6c, 0xb8, 0xd1, 0xe6, 0x18, 0xfb, 0x0e, 0x4c, 0xdf, 0xf0, 0x83, 0x7b, 0x3e, 0xdb, 0x4c, - 0xaf, 0x78, 0xb4, 0x59, 0x65, 0x8c, 0x6b, 0xec, 0x8f, 0xac, 0x8b, 0xc0, 0xb1, 0x28, 0x70, 0xea, - 0x1e, 0x48, 0x61, 0xd0, 0x3d, 0x10, 0xfb, 0x63, 0x16, 0x9c, 0x56, 0x05, 0x64, 0x89, 0x35, 0x7e, - 0x11, 0x26, 0x77, 0x3b, 0x5e, 0xb3, 0x2a, 0x7f, 0x4b, 0x11, 0xaa, 0x44, 0xae, 0x62, 0xe0, 0x30, - 0x45, 0xc9, 0xdc, 0xad, 0x5d, 0xcf, 0x77, 0xc2, 0xee, 0x96, 0x36, 0xff, 0xca, 0x22, 0x54, 0x14, - 0x06, 0x0d, 0x2a, 0xfb, 0xcf, 0x8b, 0xa0, 0xaf, 0xb7, 0x10, 0x4f, 0x56, 0x42, 0x58, 0x79, 0xe4, - 0xaa, 0xb6, 0xbb, 0xbe, 0xab, 0x2f, 0xd2, 0x94, 0x32, 0x85, 0x10, 0x9f, 0xb4, 0x98, 0xa3, 0xe7, - 0xc5, 0x9e, 0xc3, 0xd7, 0xa7, 0x8c, 0x8e, 0xb6, 0x72, 0x3a, 0x2c, 0x5f, 0x15, 0x9c, 0x83, 0xd0, - 0x74, 0x1d, 0x95, 0x30, 0x34, 0x25, 0x93, 0x57, 0xe5, 0xf1, 0x42, 0x31, 0xb7, 0x3a, 0x9a, 0x52, - 0xe6, 0x4c, 0xa1, 0x0d, 0xa3, 0x21, 0x8d, 0xc3, 0xa4, 0x82, 0xe9, 0xc6, 0xb0, 0x87, 0xad, 0x71, - 0xd8, 0xdd, 0x8e, 0x59, 0x04, 0x56, 0x37, 0xfc, 0x1b, 0x0e, 0x46, 0x21, 0xc8, 0x8e, 0x80, 0xf4, - 0x8e, 0xc5, 0x09, 0x53, 0xb7, 0x8b, 0x50, 0x76, 0x3a, 0x71, 0xd0, 0x62, 0xc3, 0xc4, 0x3f, 0x4f, - 0xc9, 0x48, 0x4e, 0x27, 0x08, 0xd4, 0x34, 0xf6, 0xe7, 0x46, 0x21, 0x53, 0x9a, 0x40, 0x0e, 0xcc, - 0xab, 0x59, 0x56, 0xbe, 0x57, 0xb3, 0x94, 0x32, 0xfd, 0xae, 0x67, 0x91, 0x3a, 0x8c, 0xb6, 0x1b, - 0x4e, 0x94, 0x2c, 0xbf, 0x9b, 0xc9, 0x30, 0x6d, 0x31, 0xe0, 0x83, 0xc3, 0xf9, 0x9f, 0x38, 0x9e, - 0x3b, 0xc7, 0xe6, 0xea, 0xa2, 0xa8, 0xd3, 0xd4, 0xa2, 0x39, 0x0f, 0x14, 0xfc, 0x4d, 0x87, 0xae, - 0x78, 0x44, 0x68, 0xfa, 0x71, 0x4b, 0xd4, 0xb3, 0x21, 0x8d, 0x3a, 0xcd, 0x58, 0xce, 0x86, 0x9b, - 0x39, 0xae, 0x32, 0xc1, 0x58, 0x17, 0xb6, 0x89, 0xdf, 0x68, 0x08, 0x25, 0xef, 0x83, 0x72, 0x14, - 0x3b, 0x61, 0xfc, 0x88, 0x65, 0x30, 0x6a, 0xd0, 0xb7, 0x13, 0x26, 0xa8, 0xf9, 0x91, 0x57, 0x00, - 0x6a, 0x9e, 0xef, 0x45, 0x8d, 0x47, 0x3c, 0x15, 0xe4, 0x8a, 0x5f, 0x51, 0x1c, 0xd0, 0xe0, 0xc6, - 0xac, 0x1b, 0x9f, 0xdb, 0x22, 0x8f, 0x59, 0xe2, 0xdb, 0x97, 0xb2, 0x6e, 0xa8, 0x30, 0x68, 0x50, - 0xd9, 0x1f, 0x81, 0x33, 0xd9, 0x6b, 0xd1, 0x32, 0xc2, 0xab, 0x87, 0x41, 0xa7, 0x9d, 0x35, 0xdf, - 0xfc, 0xda, 0x2c, 0x0a, 0x1c, 0x33, 0xdf, 0x7b, 0x9e, 0x5f, 0xcd, 0x9a, 0xef, 0x1b, 0x9e, 0x5f, - 0x45, 0x8e, 0x39, 0xc6, 0x9d, 0xb5, 0xdf, 0xb7, 0xe0, 0xe2, 0x51, 0xb7, 0xb7, 0x59, 0xf4, 0x7e, - 0xcf, 0x09, 0x7d, 0x79, 0x1d, 0x86, 0xdb, 0x8e, 0x3b, 0x4e, 0xe8, 0x23, 0x87, 0x92, 0x2e, 0x8c, - 0x89, 0xd2, 0x3f, 0xe9, 0x90, 0xde, 0xcc, 0xf7, 0x2e, 0x39, 0x0b, 0x91, 0x54, 0xd2, 0x45, 0x94, - 0x1d, 0xa2, 0x14, 0x68, 0x7f, 0xc7, 0x02, 0xb2, 0xb9, 0x4f, 0xc3, 0xd0, 0xab, 0x1a, 0xc5, 0x8a, - 0xe4, 0x05, 0x98, 0xbc, 0xbb, 0xbd, 0xb9, 0xb1, 0x15, 0x78, 0x3e, 0xbf, 0x8f, 0x61, 0x94, 0xc8, - 0x5c, 0x37, 0xe0, 0x98, 0xa2, 0x62, 0x41, 0xc6, 0xdd, 0xd7, 0xd8, 0x96, 0x73, 0xf9, 0xa0, 0x1d, - 0xd2, 0x28, 0x52, 0x2f, 0x30, 0xc8, 0x20, 0xe3, 0xfa, 0xcd, 0x0c, 0x12, 0x7b, 0xe9, 0xc9, 0x26, - 0x9c, 0x6b, 0xf1, 0x04, 0x5c, 0x95, 0xef, 0xb4, 0x91, 0xc8, 0xc6, 0x85, 0x49, 0xc1, 0xfb, 0x1b, - 0xee, 0x1f, 0xce, 0x9f, 0x5b, 0xef, 0x47, 0x80, 0xfd, 0xdb, 0xd9, 0x5f, 0x2d, 0xc0, 0x84, 0xf1, - 0x02, 0xc2, 0x31, 0x7c, 0x8a, 0xcc, 0xa3, 0x0d, 0x85, 0x63, 0x3e, 0xda, 0xf0, 0x1c, 0x94, 0xda, - 0x41, 0xd3, 0x73, 0x3d, 0x55, 0x9d, 0x3f, 0xc9, 0xcf, 0xc0, 0x24, 0x0c, 0x15, 0x96, 0xdc, 0x83, - 0xb2, 0xba, 0xca, 0x2c, 0xeb, 0xf5, 0xf2, 0xf2, 0xaa, 0xd4, 0xe2, 0xd5, 0x57, 0x94, 0xb5, 0x2c, - 0x62, 0xc3, 0x18, 0x9f, 0xf9, 0x49, 0x86, 0x9f, 0x17, 0x80, 0xf0, 0x25, 0x11, 0xa1, 0xc4, 0xd8, - 0xff, 0x34, 0x0a, 0x65, 0xa4, 0xed, 0x60, 0x39, 0xa4, 0xd5, 0x88, 0xbc, 0x11, 0x8a, 0x9d, 0xb0, - 0x29, 0x07, 0x4b, 0xa5, 0x7f, 0x6e, 0xe1, 0x1a, 0x32, 0x78, 0x6a, 0xbb, 0x29, 0x9c, 0xe8, 0xa4, - 0xb0, 0x78, 0xe4, 0x49, 0xe1, 0x4b, 0x30, 0x15, 0x45, 0x8d, 0xad, 0xd0, 0xdb, 0x77, 0x62, 0x36, - 0x89, 0x65, 0xae, 0x44, 0x1f, 0xcd, 0x6c, 0x5f, 0xd3, 0x48, 0x4c, 0xd3, 0x92, 0xab, 0x30, 0xa3, - 0xcf, 0xeb, 0x68, 0x18, 0xf3, 0xd4, 0x88, 0xc8, 0xa2, 0xa8, 0x93, 0x11, 0x7d, 0xc2, 0x27, 0x09, - 0xb0, 0xb7, 0x0d, 0x59, 0x81, 0xd3, 0x29, 0x20, 0x53, 0x44, 0xa4, 0x58, 0x54, 0x2d, 0x40, 0x8a, - 0x0f, 0xd3, 0xa5, 0xa7, 0x05, 0x59, 0x87, 0x33, 0xe2, 0xfb, 0xf2, 0x2b, 0xf0, 0xaa, 0x47, 0xe3, - 0x9c, 0xd1, 0xff, 0x91, 0x8c, 0xce, 0x5c, 0xed, 0x25, 0xc1, 0x7e, 0xed, 0xd8, 0x0c, 0x55, 0xe0, - 0xd5, 0x15, 0x69, 0x29, 0xd5, 0x0c, 0x55, 0x6c, 0x56, 0xab, 0x68, 0xd2, 0x91, 0xf7, 0xc2, 0xd3, - 0xfa, 0xa7, 0xc8, 0xac, 0x09, 0xf7, 0x61, 0x45, 0x96, 0x42, 0xa8, 0x9b, 0x46, 0x57, 0xfb, 0x92, - 0x55, 0x71, 0x50, 0x7b, 0xb2, 0x0b, 0x73, 0x0a, 0x75, 0x99, 0x99, 0x83, 0x76, 0xe8, 0x45, 0xb4, - 0xe2, 0x44, 0xf4, 0x56, 0xd8, 0xe4, 0xc5, 0x13, 0x65, 0xfd, 0x8c, 0xc3, 0x55, 0x2f, 0xbe, 0xd6, - 0x8f, 0x12, 0xd7, 0xf0, 0x21, 0x5c, 0x98, 0xb7, 0x42, 0x7d, 0x67, 0xb7, 0x49, 0x37, 0x97, 0x57, - 0x79, 0x49, 0x85, 0xe1, 0xad, 0x5c, 0x4e, 0x10, 0xa8, 0x69, 0x94, 0x7b, 0x3e, 0x39, 0xd0, 0x3d, - 0xff, 0xb6, 0x05, 0x53, 0x6a, 0xb2, 0x3f, 0x81, 0x3c, 0x58, 0x33, 0x9d, 0x07, 0xbb, 0x3a, 0xac, - 0x9b, 0x28, 0x35, 0x1f, 0x10, 0x4c, 0x7d, 0xaf, 0x0c, 0xc0, 0x1f, 0xc6, 0xf1, 0x78, 0xa9, 0xee, - 0x45, 0x18, 0x09, 0x69, 0x3b, 0xc8, 0x5a, 0x3e, 0x9e, 0xc3, 0xe7, 0x98, 0x1f, 0xdc, 0xe5, 0xdc, - 0xef, 0xe4, 0x78, 0xf4, 0x7f, 0xf6, 0xe4, 0x78, 0x1b, 0xce, 0x79, 0x7e, 0x44, 0xdd, 0x4e, 0x28, - 0x77, 0xce, 0x6b, 0x41, 0xa4, 0xac, 0x43, 0xa9, 0xf2, 0x46, 0xc9, 0xe8, 0xdc, 0x6a, 0x3f, 0x22, - 0xec, 0xdf, 0x96, 0x0d, 0x69, 0x82, 0x90, 0x77, 0x82, 0x74, 0x88, 0x2f, 0xe1, 0xa8, 0x28, 0xf4, - 0x82, 0x58, 0xab, 0x25, 0x97, 0x7e, 0x32, 0x0b, 0x62, 0xed, 0xca, 0x36, 0x6a, 0x9a, 0xfe, 0x56, - 0xb1, 0x9c, 0x93, 0x55, 0x84, 0x13, 0x5b, 0xc5, 0x64, 0x7d, 0x4e, 0x0c, 0x7c, 0x46, 0x21, 0xd9, - 0xac, 0x27, 0x07, 0x6e, 0xd6, 0x2f, 0xc3, 0xb4, 0xe7, 0x37, 0x68, 0xe8, 0xc5, 0xb4, 0xca, 0xd7, - 0xc2, 0xec, 0x14, 0x1f, 0x08, 0x95, 0x7d, 0x5a, 0x4d, 0x61, 0x31, 0x43, 0x9d, 0x36, 0x2a, 0xd3, - 0xc7, 0x30, 0x2a, 0x03, 0x4c, 0xf9, 0xa9, 0x7c, 0x4c, 0xf9, 0xe9, 0xe1, 0x4d, 0xf9, 0xcc, 0x63, - 0x35, 0xe5, 0x24, 0x17, 0x53, 0xfe, 0x2c, 0x8c, 0xb6, 0xc3, 0xe0, 0xa0, 0x3b, 0x7b, 0x26, 0xed, - 0x9e, 0x6f, 0x31, 0x20, 0x0a, 0x9c, 0x59, 0x40, 0x77, 0xf6, 0xe1, 0x05, 0x74, 0xf6, 0xeb, 0x05, - 0x38, 0xa7, 0x2d, 0x1d, 0x9b, 0x5f, 0x5e, 0x8d, 0xad, 0x75, 0x7e, 0x33, 0x53, 0x14, 0x6d, 0x18, - 0x89, 0x4f, 0x9d, 0x43, 0x55, 0x18, 0x34, 0xa8, 0x78, 0xfe, 0x90, 0x86, 0xbc, 0xec, 0x37, 0x6b, - 0x06, 0x97, 0x25, 0x1c, 0x15, 0x05, 0x7f, 0x55, 0x8f, 0x86, 0xb1, 0x3c, 0x93, 0xc9, 0x56, 0x34, - 0x2d, 0x6b, 0x14, 0x9a, 0x74, 0xcc, 0x5d, 0x74, 0x93, 0x25, 0xc8, 0x4c, 0xe1, 0xa4, 0x70, 0x17, - 0xd5, 0xaa, 0x53, 0xd8, 0x44, 0x1d, 0x9e, 0x28, 0x1e, 0xed, 0x55, 0x87, 0x67, 0x21, 0x14, 0x85, - 0xfd, 0x1f, 0x16, 0xbc, 0xa1, 0xef, 0x50, 0x3c, 0x81, 0xed, 0xed, 0x20, 0xbd, 0xbd, 0x6d, 0x0f, - 0xbf, 0xbd, 0xf5, 0xf4, 0x62, 0xc0, 0x56, 0xf7, 0x97, 0x16, 0x4c, 0x6b, 0xfa, 0x27, 0xd0, 0x55, - 0x2f, 0xd7, 0xf7, 0xf1, 0xb4, 0xea, 0xa2, 0x1c, 0x35, 0xd5, 0xb7, 0x6f, 0xf3, 0xbe, 0x89, 0x60, - 0x6e, 0xc9, 0x4d, 0x1e, 0xa0, 0x39, 0x22, 0x88, 0xe9, 0xc2, 0x18, 0xbf, 0xc2, 0x1f, 0xe5, 0x13, - 0x54, 0xa6, 0xe5, 0xf3, 0x13, 0x20, 0x1d, 0x54, 0xf2, 0x9f, 0x11, 0x4a, 0x81, 0xbc, 0x28, 0xdd, - 0x8b, 0x98, 0xbd, 0xac, 0xca, 0x94, 0xab, 0x2e, 0x4a, 0x97, 0x70, 0x54, 0x14, 0x76, 0x0b, 0x66, - 0xd3, 0xcc, 0x57, 0x68, 0x8d, 0xe7, 0xee, 0x8e, 0xd5, 0xcd, 0x45, 0x28, 0x3b, 0xbc, 0xd5, 0x5a, - 0xc7, 0xc9, 0xbe, 0x42, 0xb3, 0x94, 0x20, 0x50, 0xd3, 0xd8, 0xbf, 0x61, 0xc1, 0x99, 0x3e, 0x9d, - 0xc9, 0x31, 0xd5, 0x1c, 0x6b, 0x2b, 0x30, 0xe0, 0x65, 0xa0, 0x2a, 0xad, 0x39, 0x49, 0x76, 0xc8, - 0xb0, 0x6a, 0x2b, 0x02, 0x8c, 0x09, 0xde, 0xfe, 0x67, 0x0b, 0x4e, 0xa5, 0x75, 0x8d, 0xc8, 0x75, - 0x20, 0xa2, 0x33, 0x2b, 0x5e, 0xe4, 0x06, 0xfb, 0x34, 0xec, 0xb2, 0x9e, 0x0b, 0xad, 0xe7, 0x24, - 0x27, 0xb2, 0xd4, 0x43, 0x81, 0x7d, 0x5a, 0xf1, 0xda, 0xdf, 0xaa, 0x1a, 0xed, 0x64, 0xa6, 0xdc, - 0xce, 0x73, 0xa6, 0xe8, 0x8f, 0x69, 0x46, 0xd0, 0x4a, 0x24, 0x9a, 0xf2, 0xed, 0xef, 0x8c, 0x80, - 0x3a, 0x8b, 0xe2, 0x79, 0x88, 0x9c, 0xb2, 0x38, 0xa9, 0xa7, 0x8a, 0x8a, 0x27, 0x78, 0xaa, 0x68, - 0xe4, 0x61, 0x39, 0x02, 0xf1, 0x6e, 0x8e, 0xf6, 0x45, 0x0d, 0xa3, 0xbf, 0xa3, 0x51, 0x68, 0xd2, - 0x31, 0x4d, 0x9a, 0xde, 0x3e, 0x15, 0x8d, 0xc6, 0xd2, 0x9a, 0xac, 0x25, 0x08, 0xd4, 0x34, 0x4c, - 0x93, 0xaa, 0x57, 0xab, 0xc9, 0x48, 0x51, 0x69, 0xc2, 0x46, 0x07, 0x39, 0x86, 0x51, 0x34, 0x82, - 0x60, 0x4f, 0xfa, 0x7f, 0x8a, 0xe2, 0x5a, 0x10, 0xec, 0x21, 0xc7, 0x30, 0x8f, 0xc5, 0x0f, 0xc2, - 0x96, 0xd3, 0xf4, 0x3e, 0x48, 0xab, 0x4a, 0x8a, 0xf4, 0xfb, 0x94, 0xc7, 0xb2, 0xd1, 0x4b, 0x82, - 0xfd, 0xda, 0xb1, 0x19, 0xd8, 0x0e, 0x69, 0xd5, 0x73, 0x63, 0x93, 0x1b, 0xa4, 0x67, 0xe0, 0x56, - 0x0f, 0x05, 0xf6, 0x69, 0x45, 0x96, 0xe0, 0x54, 0x72, 0x96, 0x98, 0xd4, 0x90, 0x08, 0x67, 0x50, - 0xf9, 0xe1, 0x98, 0x46, 0x63, 0x96, 0x9e, 0x59, 0x9b, 0x96, 0xac, 0xe4, 0xe1, 0x6e, 0xa2, 0x61, - 0x6d, 0x92, 0x0a, 0x1f, 0x54, 0x14, 0xf6, 0xc7, 0x8b, 0x6c, 0x77, 0x1c, 0x70, 0x3b, 0xf7, 0x89, - 0x65, 0x0d, 0xd3, 0x33, 0x72, 0xe4, 0x18, 0x33, 0xf2, 0x05, 0x98, 0xbc, 0x1b, 0x05, 0xbe, 0xca, - 0xc8, 0x8d, 0x0e, 0xcc, 0xc8, 0x19, 0x54, 0xfd, 0x33, 0x72, 0x63, 0x79, 0x65, 0xe4, 0xc6, 0x1f, - 0x31, 0x23, 0xf7, 0x27, 0xa3, 0x70, 0x5e, 0x9d, 0x27, 0xd3, 0xf8, 0x5e, 0x10, 0xee, 0x79, 0x7e, - 0x9d, 0x9f, 0xc1, 0x7e, 0xc5, 0x82, 0x49, 0xb1, 0x5e, 0xe4, 0xc3, 0x08, 0xe2, 0xcc, 0xb1, 0x96, - 0xd3, 0xdd, 0xb5, 0x94, 0xb0, 0x85, 0x1d, 0x43, 0x50, 0xe6, 0x95, 0x0a, 0x13, 0x85, 0x29, 0x8d, - 0xc8, 0x87, 0x01, 0x92, 0x17, 0xb3, 0x6a, 0x39, 0xbd, 0x1b, 0x96, 0xe8, 0x87, 0xb4, 0xa6, 0x7d, - 0xd3, 0x1d, 0x25, 0x04, 0x0d, 0x81, 0xe4, 0x75, 0x4b, 0xdd, 0x15, 0x11, 0xa7, 0x59, 0xaf, 0x3e, - 0x96, 0xb1, 0x39, 0xce, 0xd5, 0x11, 0x84, 0x71, 0xcf, 0xaf, 0xb3, 0x79, 0x22, 0x93, 0x98, 0x6f, - 0xe9, 0x57, 0xbf, 0xb0, 0x16, 0x38, 0xd5, 0x8a, 0xd3, 0x74, 0x7c, 0x97, 0x86, 0xab, 0x82, 0xdc, - 0x7c, 0x36, 0x89, 0x03, 0x30, 0x61, 0xd4, 0x73, 0x39, 0x73, 0xf4, 0x38, 0x97, 0x33, 0xe7, 0xde, - 0x03, 0x33, 0x3d, 0x1f, 0xf3, 0x44, 0x57, 0x47, 0x1e, 0xfd, 0xd6, 0x89, 0xfd, 0x07, 0x63, 0x7a, - 0xd3, 0xda, 0x08, 0xaa, 0xe2, 0x8a, 0x60, 0xa8, 0xbf, 0xa8, 0xf4, 0x3d, 0x73, 0x9c, 0x22, 0xc6, - 0xd3, 0x4b, 0x0a, 0x88, 0xa6, 0x48, 0x36, 0x47, 0xdb, 0x4e, 0x48, 0xfd, 0xc7, 0x3d, 0x47, 0xb7, - 0x94, 0x10, 0x34, 0x04, 0x92, 0x46, 0xea, 0xb8, 0xf5, 0xca, 0xf0, 0xc7, 0xad, 0xcc, 0x1d, 0xee, - 0x7b, 0x95, 0xeb, 0xf3, 0x16, 0x4c, 0xfb, 0xa9, 0x99, 0x2b, 0x8f, 0xdc, 0x76, 0x1e, 0xc7, 0xaa, - 0x10, 0x57, 0xb3, 0xd3, 0x30, 0xcc, 0xc8, 0xef, 0xb7, 0xa5, 0x8d, 0x9e, 0x70, 0x4b, 0xd3, 0x77, - 0x8d, 0xc7, 0x06, 0xdd, 0x35, 0x26, 0xbe, 0x7a, 0x65, 0x60, 0x3c, 0xf7, 0x57, 0x06, 0xa0, 0xcf, - 0x0b, 0x03, 0x77, 0xa0, 0xec, 0x86, 0xd4, 0x89, 0x1f, 0xf1, 0xc2, 0x39, 0x7f, 0xec, 0x6e, 0x39, - 0x61, 0x80, 0x9a, 0x97, 0xfd, 0x67, 0x45, 0x38, 0x9d, 0x8c, 0x48, 0x72, 0x14, 0xc5, 0xf6, 0x47, - 0x21, 0x57, 0x3b, 0xb7, 0x6a, 0x7f, 0xbc, 0x96, 0x20, 0x50, 0xd3, 0x30, 0x7f, 0xac, 0x13, 0xd1, - 0xcd, 0x36, 0xf5, 0xd7, 0xbc, 0xdd, 0x88, 0x8f, 0xb8, 0x51, 0x42, 0x76, 0x4b, 0xa3, 0xd0, 0xa4, - 0x63, 0xce, 0xb8, 0xf0, 0x8b, 0xa3, 0xec, 0xc9, 0xae, 0xf4, 0xb7, 0x31, 0xc1, 0x93, 0x2f, 0xf7, - 0x7d, 0x2e, 0x24, 0x9f, 0x9a, 0x86, 0x9e, 0x13, 0xb8, 0x13, 0xbe, 0x13, 0xf2, 0x39, 0x0b, 0x4e, - 0xed, 0xa5, 0xea, 0x57, 0x12, 0x93, 0x3c, 0x64, 0xa5, 0x65, 0xba, 0x28, 0x46, 0x4f, 0xe1, 0x34, - 0x3c, 0xc2, 0xac, 0x74, 0xfb, 0xdf, 0x2c, 0x30, 0xcd, 0xd3, 0xf1, 0x3c, 0x2b, 0xe3, 0x01, 0xa8, - 0xc2, 0x11, 0x0f, 0x40, 0x25, 0x4e, 0x58, 0xf1, 0x78, 0x4e, 0xff, 0xc8, 0x09, 0x9c, 0xfe, 0xd1, - 0x81, 0x5e, 0xdb, 0x1b, 0xa1, 0xd8, 0xf1, 0xaa, 0xd2, 0x6f, 0xd7, 0x87, 0x61, 0xab, 0x2b, 0xc8, - 0xe0, 0xf6, 0xef, 0x8d, 0xea, 0x38, 0x5d, 0x1e, 0xc5, 0xff, 0x50, 0x74, 0xbb, 0xa6, 0x0a, 0x67, - 0x45, 0xcf, 0x37, 0x7a, 0x0a, 0x67, 0xdf, 0x7d, 0xf2, 0x4a, 0x0b, 0x31, 0x40, 0x83, 0xea, 0x66, - 0xc7, 0x8f, 0x28, 0xb3, 0xb8, 0x0b, 0x25, 0x16, 0xda, 0xf0, 0x84, 0x5b, 0x29, 0xa5, 0x54, 0xe9, - 0x9a, 0x84, 0x3f, 0x38, 0x9c, 0x7f, 0xd7, 0xc9, 0xd5, 0x4a, 0x5a, 0xa3, 0xe2, 0x4f, 0x22, 0x28, - 0xb3, 0xbf, 0x79, 0x45, 0x88, 0x0c, 0x9a, 0x6e, 0x29, 0x5b, 0x94, 0x20, 0x72, 0x29, 0x37, 0xd1, - 0x72, 0x88, 0x0f, 0x65, 0xfe, 0x54, 0x11, 0x17, 0x2a, 0x62, 0xab, 0x2d, 0x55, 0x97, 0x91, 0x20, - 0x1e, 0x1c, 0xce, 0xbf, 0x74, 0x72, 0xa1, 0xaa, 0x39, 0x6a, 0x11, 0xf6, 0xdf, 0x15, 0xf5, 0xdc, - 0x95, 0xf5, 0xd2, 0x3f, 0x14, 0x73, 0xf7, 0xc5, 0xcc, 0xdc, 0xbd, 0xd8, 0x33, 0x77, 0xa7, 0xf5, - 0x73, 0x3e, 0xa9, 0xd9, 0xf8, 0xa4, 0x37, 0xd8, 0xa3, 0xe3, 0x78, 0xee, 0x59, 0xbc, 0xd6, 0xf1, - 0x42, 0x1a, 0x6d, 0x85, 0x1d, 0xdf, 0xf3, 0xeb, 0xf2, 0x51, 0x47, 0xc3, 0xb3, 0x48, 0xa1, 0x31, - 0x4b, 0x6f, 0x7f, 0x95, 0x9f, 0x77, 0x1a, 0xc5, 0x65, 0xec, 0x2b, 0x37, 0xf9, 0x6b, 0x4f, 0xa2, - 0xa2, 0x54, 0x7d, 0x65, 0xf1, 0xc4, 0x93, 0xc0, 0x91, 0x7b, 0x30, 0xbe, 0x2b, 0x5e, 0x9c, 0xc8, - 0xe7, 0x8a, 0x93, 0x7c, 0xbe, 0x82, 0x5f, 0x26, 0x4d, 0xde, 0xb2, 0x78, 0xa0, 0xff, 0xc4, 0x44, - 0x9a, 0xfd, 0x4b, 0x45, 0x38, 0x95, 0x79, 0x8b, 0x88, 0x05, 0xfc, 0xc9, 0xc3, 0x53, 0xd9, 0xec, - 0xbc, 0x7a, 0xd4, 0x58, 0x51, 0x90, 0x0f, 0x00, 0x54, 0x69, 0xbb, 0x19, 0x74, 0xb9, 0xe3, 0x32, - 0x72, 0x62, 0xc7, 0x45, 0xf9, 0xba, 0x2b, 0x8a, 0x0b, 0x1a, 0x1c, 0x65, 0x19, 0xed, 0xa8, 0x78, - 0x4f, 0x23, 0x5d, 0x46, 0x6b, 0xdc, 0xf4, 0x1b, 0x7b, 0xb2, 0x37, 0xfd, 0x3c, 0x38, 0x25, 0x54, - 0x54, 0x25, 0x5c, 0x8f, 0x50, 0xa9, 0x75, 0x86, 0xcd, 0xa8, 0x95, 0x34, 0x1b, 0xcc, 0xf2, 0xb5, - 0x3f, 0x5b, 0x60, 0xee, 0x9b, 0x18, 0xec, 0xf5, 0x24, 0x39, 0xfe, 0x66, 0x18, 0x73, 0x3a, 0x71, - 0x23, 0xe8, 0x79, 0x01, 0x64, 0x89, 0x43, 0x51, 0x62, 0xc9, 0x1a, 0x8c, 0x54, 0x9d, 0x38, 0x79, - 0x94, 0xff, 0x24, 0xca, 0xe9, 0x4c, 0x98, 0x13, 0x53, 0xe4, 0x5c, 0xc8, 0x33, 0x30, 0x12, 0x3b, - 0xf5, 0xd4, 0x0b, 0x9e, 0x3b, 0x4e, 0x3d, 0x42, 0x0e, 0x35, 0x77, 0x97, 0x91, 0x23, 0x76, 0x97, - 0x97, 0x8c, 0x7f, 0x17, 0x61, 0x9c, 0xba, 0xf4, 0xfe, 0x8b, 0x07, 0x51, 0xd8, 0x9f, 0xa2, 0xb5, - 0x7f, 0x04, 0x26, 0xcd, 0x7f, 0x01, 0x71, 0xac, 0xbb, 0x46, 0xf6, 0x3f, 0x8e, 0xc0, 0x54, 0xaa, - 0xcc, 0x2f, 0x35, 0xcb, 0xad, 0x23, 0x67, 0x39, 0x3f, 0x4f, 0xeb, 0xf8, 0x54, 0x16, 0x71, 0x1a, - 0xe7, 0x69, 0x1d, 0x9f, 0xa2, 0xc0, 0xb1, 0xaf, 0x52, 0x0d, 0xbb, 0xd8, 0xf1, 0x65, 0x56, 0x5e, - 0x7d, 0x95, 0x15, 0x0e, 0x45, 0x89, 0x65, 0x01, 0xec, 0x64, 0xc4, 0x8d, 0xa2, 0xb0, 0x11, 0x72, - 0xd5, 0x5c, 0xcf, 0xe3, 0xd5, 0x34, 0x59, 0xd2, 0xca, 0x03, 0x7a, 0x13, 0x82, 0x29, 0x89, 0xe4, - 0x13, 0x96, 0xf9, 0x5e, 0xdc, 0x58, 0x1e, 0xa7, 0x49, 0xd9, 0x2a, 0x4a, 0xb1, 0x82, 0x1e, 0xfe, - 0x6c, 0x5c, 0xa4, 0x16, 0xf0, 0xf8, 0xe3, 0x59, 0xc0, 0xd0, 0x67, 0xf1, 0xbe, 0x15, 0xca, 0x2d, - 0xc7, 0xf7, 0x6a, 0x34, 0x8a, 0xc5, 0xbf, 0x6f, 0x29, 0x8b, 0xe8, 0x69, 0x3d, 0x01, 0xa2, 0xc6, - 0xf3, 0x7f, 0x92, 0xc4, 0x3b, 0x26, 0x82, 0x98, 0xb2, 0xf1, 0x4f, 0x92, 0x34, 0x18, 0x4d, 0x1a, - 0xfb, 0xb7, 0x2d, 0x38, 0xd7, 0x77, 0x30, 0x7e, 0x70, 0xd3, 0x9f, 0xf6, 0xef, 0x14, 0xe0, 0x4c, - 0x9f, 0x32, 0x58, 0xd2, 0x7d, 0x6c, 0xcf, 0x0a, 0xca, 0x3a, 0xdb, 0xa9, 0x81, 0x73, 0xe3, 0x64, - 0xdb, 0x90, 0xde, 0x0a, 0x8a, 0x4f, 0x74, 0x2b, 0xb0, 0xbf, 0x5a, 0x00, 0xe3, 0x01, 0x4c, 0xf2, - 0x11, 0xb3, 0xe2, 0xdb, 0xca, 0xab, 0x3a, 0x59, 0x30, 0x57, 0x15, 0xe3, 0x62, 0xd4, 0xfa, 0x15, - 0x90, 0x67, 0xe7, 0x6b, 0xe1, 0xe8, 0xf9, 0x4a, 0x9a, 0x49, 0x69, 0x7d, 0x31, 0xff, 0xd2, 0xfa, - 0x72, 0x4f, 0x59, 0xfd, 0x2f, 0x58, 0x62, 0xa6, 0x65, 0xba, 0xa4, 0x2d, 0xac, 0xf5, 0x10, 0x0b, - 0xfb, 0x36, 0x28, 0x45, 0xb4, 0x59, 0x63, 0x9e, 0x9d, 0xb4, 0xc4, 0xfa, 0xbd, 0x6d, 0x09, 0x47, - 0x45, 0xc1, 0xef, 0xce, 0x36, 0x9b, 0xc1, 0xbd, 0xcb, 0xad, 0x76, 0xdc, 0x95, 0x36, 0x59, 0xdf, - 0x9d, 0x55, 0x18, 0x34, 0xa8, 0xec, 0x7f, 0xb7, 0xc4, 0xe7, 0x94, 0x3e, 0xfa, 0x8b, 0x99, 0x3b, - 0x8d, 0xc7, 0x77, 0x6f, 0x7f, 0x06, 0xc0, 0x55, 0x6f, 0x12, 0xe4, 0xf3, 0x2e, 0xa6, 0x7e, 0xe3, - 0xc0, 0x7c, 0xac, 0x31, 0x81, 0xa1, 0x21, 0x2f, 0xb5, 0x78, 0x8a, 0x47, 0x2d, 0x1e, 0xfb, 0x5f, - 0x2c, 0x48, 0x6d, 0x16, 0xa4, 0x0d, 0xa3, 0x4c, 0x83, 0x6e, 0x3e, 0x2f, 0x28, 0x98, 0xac, 0xd9, - 0xc2, 0x92, 0xd3, 0x82, 0xff, 0x89, 0x42, 0x10, 0x69, 0x4a, 0xef, 0xbc, 0x90, 0xc7, 0x2b, 0x1f, - 0xa6, 0x40, 0xe6, 0xdf, 0xcb, 0x7f, 0x88, 0xa1, 0x3c, 0x7d, 0xfb, 0x45, 0x98, 0xe9, 0x51, 0x8a, - 0xdf, 0x48, 0x0a, 0x92, 0x67, 0x23, 0x8c, 0x19, 0xc8, 0xef, 0x47, 0xa2, 0xc0, 0x31, 0x07, 0xff, - 0x74, 0x96, 0x3d, 0xf9, 0x92, 0x05, 0x33, 0x51, 0x96, 0xdf, 0xe3, 0x1a, 0x3b, 0x95, 0xb9, 0xea, - 0x41, 0x61, 0xaf, 0x12, 0xf6, 0x7f, 0x49, 0xf3, 0x24, 0xfe, 0x81, 0x98, 0xda, 0x5c, 0xac, 0x81, - 0x9b, 0x0b, 0x5b, 0x62, 0x6e, 0x83, 0x56, 0x3b, 0xcd, 0x9e, 0xda, 0x9c, 0x6d, 0x09, 0x47, 0x45, - 0x91, 0x7a, 0x1f, 0xaf, 0x78, 0xe4, 0xfb, 0x78, 0x2f, 0xc0, 0xa4, 0xf9, 0x34, 0x0a, 0x4f, 0xa1, - 0xc9, 0xc3, 0x07, 0xf3, 0x15, 0x15, 0x4c, 0x51, 0x65, 0xde, 0x57, 0x1b, 0x3d, 0xf2, 0x7d, 0xb5, - 0xe7, 0xa0, 0x24, 0xdf, 0x0a, 0x4b, 0xf2, 0xbb, 0xa2, 0xf0, 0x47, 0xc2, 0x50, 0x61, 0x99, 0x81, - 0x68, 0x39, 0x7e, 0xc7, 0x69, 0xb2, 0x11, 0x92, 0xf5, 0x80, 0x6a, 0x65, 0xad, 0x2b, 0x0c, 0x1a, - 0x54, 0xac, 0xc7, 0xb1, 0xd7, 0xa2, 0xaf, 0x04, 0x7e, 0x92, 0x19, 0x51, 0x3d, 0xde, 0x91, 0x70, - 0x54, 0x14, 0xf6, 0x3f, 0x58, 0x90, 0x7d, 0xe8, 0x28, 0x55, 0x83, 0x68, 0x1d, 0x59, 0x83, 0x98, - 0xae, 0xaf, 0x2a, 0x1c, 0xab, 0xbe, 0xca, 0x2c, 0x7d, 0x2a, 0x3e, 0xb4, 0xf4, 0xe9, 0x4d, 0xfa, - 0x5e, 0xbb, 0xa8, 0x91, 0x9a, 0xe8, 0x77, 0xa7, 0x9d, 0xd8, 0x30, 0xe6, 0x3a, 0xaa, 0xc4, 0x7b, - 0x52, 0xb8, 0x55, 0xcb, 0x4b, 0x9c, 0x48, 0x62, 0x2a, 0x0b, 0x5f, 0xff, 0xee, 0x85, 0xa7, 0xbe, - 0xf1, 0xdd, 0x0b, 0x4f, 0x7d, 0xeb, 0xbb, 0x17, 0x9e, 0xfa, 0xd8, 0xfd, 0x0b, 0xd6, 0xd7, 0xef, - 0x5f, 0xb0, 0xbe, 0x71, 0xff, 0x82, 0xf5, 0xad, 0xfb, 0x17, 0xac, 0xef, 0xdc, 0xbf, 0x60, 0x7d, - 0xfe, 0x6f, 0x2f, 0x3c, 0xf5, 0x4a, 0x29, 0x99, 0xd9, 0xff, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x0b, - 0x6f, 0x9f, 0x87, 0xbc, 0x76, 0x00, 0x00, + // 6861 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3d, 0x5b, 0x6c, 0x24, 0xd9, + 0x55, 0x5b, 0xdd, 0x7e, 0x74, 0x1f, 0x3f, 0x66, 0x7c, 0xe7, 0xb1, 0xce, 0xb0, 0x19, 0x8f, 0x6a, + 0x95, 0x64, 0x21, 0x59, 0x9b, 0x1d, 0x36, 0x61, 0xc9, 0x86, 0x0d, 0x6e, 0x7b, 0x1e, 0x9e, 0xf1, + 0x6b, 0x8f, 0x3d, 0x33, 0x64, 0x13, 0xc2, 0x96, 0xab, 0x6f, 0x77, 0xd7, 0xb8, 0xbb, 0xaa, 0xb7, + 0xaa, 0xda, 0x76, 0x27, 0xe4, 0x25, 0x05, 0xb2, 0x52, 0x9e, 0x4a, 0xf8, 0x48, 0x24, 0x04, 0xe1, + 0x21, 0x24, 0x3e, 0x22, 0xc4, 0x17, 0x20, 0xc4, 0x07, 0xe1, 0x27, 0x88, 0x0f, 0x22, 0x81, 0x48, + 0x20, 0xc2, 0x24, 0x03, 0x28, 0x80, 0x04, 0x08, 0x88, 0x90, 0x18, 0xf1, 0x81, 0xee, 0xa3, 0xee, + 0xbd, 0x55, 0xdd, 0x3d, 0xb6, 0xa7, 0x6b, 0x86, 0x28, 0xe2, 0xcf, 0x7d, 0xce, 0xb9, 0xe7, 0xdc, + 0x7b, 0xeb, 0xde, 0xf3, 0xba, 0xe7, 0x5e, 0xc3, 0x6a, 0xdd, 0x8b, 0x1b, 0x9d, 0x9d, 0x79, 0x37, + 0x68, 0x2d, 0x38, 0x61, 0x3d, 0x68, 0x87, 0xc1, 0x5d, 0xfe, 0xc7, 0xb3, 0x6e, 0x75, 0x61, 0xef, + 0xf2, 0x42, 0x7b, 0xb7, 0xbe, 0xe0, 0xb4, 0xbd, 0x68, 0xc1, 0x69, 0xb7, 0x9b, 0x9e, 0xeb, 0xc4, + 0x5e, 0xe0, 0x2f, 0xec, 0x3d, 0xe7, 0x34, 0xdb, 0x0d, 0xe7, 0xb9, 0x85, 0x3a, 0xf5, 0x69, 0xe8, + 0xc4, 0xb4, 0x3a, 0xdf, 0x0e, 0x83, 0x38, 0x20, 0xef, 0xd2, 0xdc, 0xe6, 0x13, 0x6e, 0xfc, 0x8f, + 0x9f, 0x75, 0xab, 0xf3, 0x7b, 0x97, 0xe7, 0xdb, 0xbb, 0xf5, 0x79, 0xc6, 0x6d, 0xde, 0xe0, 0x36, + 0x9f, 0x70, 0xbb, 0xf0, 0xac, 0xd1, 0x97, 0x7a, 0x50, 0x0f, 0x16, 0x38, 0xd3, 0x9d, 0x4e, 0x8d, + 0xff, 0xe2, 0x3f, 0xf8, 0x5f, 0x42, 0xd8, 0x05, 0x7b, 0xf7, 0x85, 0x68, 0xde, 0x0b, 0x58, 0xf7, + 0x16, 0xdc, 0x20, 0xa4, 0x0b, 0x7b, 0x3d, 0x1d, 0xba, 0xf0, 0xbc, 0xa6, 0x69, 0x39, 0x6e, 0xc3, + 0xf3, 0x69, 0xd8, 0xd5, 0x63, 0x6a, 0xd1, 0xd8, 0xe9, 0xd7, 0x6a, 0x61, 0x50, 0xab, 0xb0, 0xe3, + 0xc7, 0x5e, 0x8b, 0xf6, 0x34, 0x78, 0xc7, 0x51, 0x0d, 0x22, 0xb7, 0x41, 0x5b, 0x4e, 0xb6, 0x9d, + 0xfd, 0x1a, 0x4c, 0x2d, 0xde, 0xd9, 0x5a, 0xec, 0xc4, 0x8d, 0xa5, 0xc0, 0xaf, 0x79, 0x75, 0xf2, + 0x76, 0x98, 0x70, 0x9b, 0x9d, 0x28, 0xa6, 0xe1, 0xba, 0xd3, 0xa2, 0xb3, 0xd6, 0x25, 0xeb, 0x99, + 0x72, 0xe5, 0xcc, 0xd7, 0x0e, 0xe7, 0x9e, 0xb8, 0x77, 0x38, 0x37, 0xb1, 0xa4, 0x51, 0x68, 0xd2, + 0x91, 0x1f, 0x86, 0xf1, 0x30, 0x68, 0xd2, 0x45, 0x5c, 0x9f, 0x2d, 0xf0, 0x26, 0xa7, 0x64, 0x93, + 0x71, 0x14, 0x60, 0x4c, 0xf0, 0xf6, 0x5f, 0x16, 0x00, 0x16, 0xdb, 0xed, 0xcd, 0x30, 0xb8, 0x4b, + 0xdd, 0x98, 0xbc, 0x0a, 0x25, 0x36, 0x0b, 0x55, 0x27, 0x76, 0xb8, 0xb4, 0x89, 0xcb, 0x3f, 0x3a, + 0x2f, 0x06, 0x33, 0x6f, 0x0e, 0x46, 0x7f, 0x39, 0x46, 0x3d, 0xbf, 0xf7, 0xdc, 0xfc, 0xc6, 0x0e, + 0x6b, 0xbf, 0x46, 0x63, 0xa7, 0x42, 0xa4, 0x30, 0xd0, 0x30, 0x54, 0x5c, 0x89, 0x0f, 0x23, 0x51, + 0x9b, 0xba, 0xbc, 0x63, 0x13, 0x97, 0x57, 0xe7, 0x87, 0x59, 0x22, 0xf3, 0xba, 0xe7, 0x5b, 0x6d, + 0xea, 0x56, 0x26, 0xa5, 0xe4, 0x11, 0xf6, 0x0b, 0xb9, 0x1c, 0xb2, 0x07, 0x63, 0x51, 0xec, 0xc4, + 0x9d, 0x68, 0xb6, 0xc8, 0x25, 0xae, 0xe7, 0x26, 0x91, 0x73, 0xad, 0x4c, 0x4b, 0x99, 0x63, 0xe2, + 0x37, 0x4a, 0x69, 0xf6, 0xdf, 0x58, 0x30, 0xad, 0x89, 0x57, 0xbd, 0x28, 0x26, 0xef, 0xeb, 0x99, + 0xdc, 0xf9, 0xe3, 0x4d, 0x2e, 0x6b, 0xcd, 0xa7, 0xf6, 0xb4, 0x14, 0x56, 0x4a, 0x20, 0xc6, 0xc4, + 0xb6, 0x60, 0xd4, 0x8b, 0x69, 0x2b, 0x9a, 0x2d, 0x5c, 0x2a, 0x3e, 0x33, 0x71, 0xf9, 0x7a, 0x5e, + 0xe3, 0xac, 0x4c, 0x49, 0xa1, 0xa3, 0x2b, 0x8c, 0x3d, 0x0a, 0x29, 0xf6, 0xf7, 0xc0, 0x1c, 0x1f, + 0x9b, 0x70, 0xf2, 0x1c, 0x4c, 0x44, 0x41, 0x27, 0x74, 0x29, 0xd2, 0x76, 0x10, 0xcd, 0x5a, 0x97, + 0x8a, 0x6c, 0xe9, 0xb1, 0x95, 0xba, 0xa5, 0xc1, 0x68, 0xd2, 0x90, 0xcf, 0x58, 0x30, 0x59, 0xa5, + 0x51, 0xec, 0xf9, 0x5c, 0x7e, 0xd2, 0xf9, 0xed, 0xa1, 0x3b, 0x9f, 0x00, 0x97, 0x35, 0xf3, 0xca, + 0x59, 0x39, 0x90, 0x49, 0x03, 0x18, 0x61, 0x4a, 0x3e, 0xdb, 0x71, 0x55, 0x1a, 0xb9, 0xa1, 0xd7, + 0x66, 0xbf, 0xf9, 0x9a, 0x31, 0x76, 0xdc, 0xb2, 0x46, 0xa1, 0x49, 0x47, 0x7c, 0x18, 0x65, 0x3b, + 0x2a, 0x9a, 0x1d, 0xe1, 0xfd, 0x5f, 0x19, 0xae, 0xff, 0x72, 0x52, 0xd9, 0x66, 0xd5, 0xb3, 0xcf, + 0x7e, 0x45, 0x28, 0xc4, 0x90, 0x4f, 0x5b, 0x30, 0x2b, 0x77, 0x3c, 0x52, 0x31, 0xa1, 0x77, 0x1a, + 0x5e, 0x4c, 0x9b, 0x5e, 0x14, 0xcf, 0x8e, 0xf2, 0x3e, 0x2c, 0x1c, 0x6f, 0x6d, 0x5d, 0x0b, 0x83, + 0x4e, 0xfb, 0xa6, 0xe7, 0x57, 0x2b, 0x97, 0xa4, 0xa4, 0xd9, 0xa5, 0x01, 0x8c, 0x71, 0xa0, 0x48, + 0xf2, 0x05, 0x0b, 0x2e, 0xf8, 0x4e, 0x8b, 0x46, 0x6d, 0x87, 0x7d, 0x5a, 0x81, 0xae, 0x34, 0x1d, + 0x77, 0x97, 0xf7, 0x68, 0xec, 0xe1, 0x7a, 0x64, 0xcb, 0x1e, 0x5d, 0x58, 0x1f, 0xc8, 0x1a, 0x1f, + 0x20, 0x96, 0xfc, 0xba, 0x05, 0x33, 0x41, 0xd8, 0x6e, 0x38, 0x3e, 0xad, 0x26, 0xd8, 0x68, 0x76, + 0x9c, 0x6f, 0xbd, 0xf7, 0x0f, 0xf7, 0x89, 0x36, 0xb2, 0x6c, 0xd7, 0x02, 0xdf, 0x8b, 0x83, 0x70, + 0x8b, 0xc6, 0xb1, 0xe7, 0xd7, 0xa3, 0xca, 0xb9, 0x7b, 0x87, 0x73, 0x33, 0x3d, 0x54, 0xd8, 0xdb, + 0x1f, 0xf2, 0x41, 0x98, 0x88, 0xba, 0xbe, 0x7b, 0xc7, 0xf3, 0xab, 0xc1, 0x7e, 0x34, 0x5b, 0xca, + 0x63, 0xfb, 0x6e, 0x29, 0x86, 0x72, 0x03, 0x6a, 0x01, 0x68, 0x4a, 0xeb, 0xff, 0xe1, 0xf4, 0x52, + 0x2a, 0xe7, 0xfd, 0xe1, 0xf4, 0x62, 0x7a, 0x80, 0x58, 0xf2, 0x09, 0x0b, 0xa6, 0x22, 0xaf, 0xee, + 0x3b, 0x71, 0x27, 0xa4, 0x37, 0x69, 0x37, 0x9a, 0x05, 0xde, 0x91, 0x1b, 0x43, 0xce, 0x8a, 0xc1, + 0xb2, 0x72, 0x4e, 0xf6, 0x71, 0xca, 0x84, 0x46, 0x98, 0x96, 0xdb, 0x6f, 0xa3, 0xe9, 0x65, 0x3d, + 0x91, 0xef, 0x46, 0xd3, 0x8b, 0x7a, 0xa0, 0x48, 0xfb, 0x4f, 0x0a, 0x70, 0x3a, 0x6b, 0x83, 0xc8, + 0x6f, 0x5a, 0x70, 0xea, 0xee, 0x7e, 0xbc, 0x1d, 0xec, 0x52, 0x3f, 0xaa, 0x74, 0x99, 0xa6, 0xe0, + 0xda, 0x77, 0xe2, 0xb2, 0x9b, 0xaf, 0xb5, 0x9b, 0xbf, 0x91, 0x96, 0x72, 0xc5, 0x8f, 0xc3, 0x6e, + 0xe5, 0x49, 0x39, 0x9e, 0x53, 0x37, 0xee, 0x6c, 0x9b, 0x58, 0xcc, 0x76, 0xea, 0xc2, 0x27, 0x2d, + 0x38, 0xdb, 0x8f, 0x05, 0x39, 0x0d, 0xc5, 0x5d, 0xda, 0x15, 0x0e, 0x0e, 0xb2, 0x3f, 0xc9, 0xcf, + 0xc0, 0xe8, 0x9e, 0xd3, 0xec, 0x50, 0xe9, 0x28, 0x5c, 0x1b, 0x6e, 0x20, 0xaa, 0x67, 0x28, 0xb8, + 0xbe, 0xb3, 0xf0, 0x82, 0x65, 0xff, 0x59, 0x11, 0x26, 0x0c, 0x53, 0xf1, 0x18, 0x9c, 0x9f, 0x20, + 0xe5, 0xfc, 0xac, 0xe5, 0x66, 0xe5, 0x06, 0x7a, 0x3f, 0xfb, 0x19, 0xef, 0x67, 0x23, 0x3f, 0x91, + 0x0f, 0x74, 0x7f, 0x48, 0x0c, 0xe5, 0xa0, 0xcd, 0x9c, 0x5b, 0x66, 0x45, 0x47, 0xf2, 0xf8, 0x84, + 0x1b, 0x09, 0xbb, 0xca, 0xd4, 0xbd, 0xc3, 0xb9, 0xb2, 0xfa, 0x89, 0x5a, 0x90, 0xfd, 0x0d, 0x0b, + 0xce, 0x1a, 0x7d, 0x5c, 0x0a, 0xfc, 0xaa, 0xc7, 0x3f, 0xed, 0x25, 0x18, 0x89, 0xbb, 0xed, 0xc4, + 0x83, 0x56, 0x33, 0xb5, 0xdd, 0x6d, 0x53, 0xe4, 0x18, 0xe6, 0x33, 0xb7, 0x68, 0x14, 0x39, 0x75, + 0x9a, 0xf5, 0x99, 0xd7, 0x04, 0x18, 0x13, 0x3c, 0x09, 0x81, 0x34, 0x9d, 0x28, 0xde, 0x0e, 0x1d, + 0x3f, 0xe2, 0xec, 0xb7, 0xbd, 0x16, 0x95, 0x13, 0xfc, 0x23, 0xc7, 0x5b, 0x31, 0xac, 0x45, 0xe5, + 0xfc, 0xbd, 0xc3, 0x39, 0xb2, 0xda, 0xc3, 0x09, 0xfb, 0x70, 0xb7, 0xbf, 0x60, 0xc1, 0xf9, 0xfe, + 0x6e, 0x0d, 0x79, 0x33, 0x8c, 0x45, 0x34, 0xdc, 0xa3, 0xa1, 0x1c, 0x9d, 0xfe, 0x24, 0x1c, 0x8a, + 0x12, 0x4b, 0x16, 0xa0, 0xac, 0x54, 0xae, 0x1c, 0xe3, 0x8c, 0x24, 0x2d, 0x6b, 0x3d, 0xad, 0x69, + 0xd8, 0xa4, 0xb1, 0x1f, 0xd2, 0x09, 0x52, 0x93, 0xc6, 0xe3, 0x0d, 0x8e, 0xb1, 0xff, 0xd6, 0x82, + 0x53, 0x46, 0xaf, 0x1e, 0x83, 0x97, 0xeb, 0xa7, 0xbd, 0xdc, 0x95, 0xdc, 0xd6, 0xf3, 0x00, 0x37, + 0xf7, 0x8f, 0x47, 0x61, 0xc6, 0x5c, 0xf5, 0x5c, 0x1d, 0xf3, 0x00, 0x8b, 0xb6, 0x83, 0x5b, 0xb8, + 0x2a, 0xe7, 0x5c, 0x07, 0x58, 0x02, 0x8c, 0x09, 0x9e, 0x4d, 0x62, 0xdb, 0x89, 0x1b, 0x72, 0xc2, + 0xd5, 0x24, 0x6e, 0x3a, 0x71, 0x03, 0x39, 0x86, 0xbc, 0x04, 0xd3, 0xb1, 0x13, 0xd6, 0x69, 0x8c, + 0x74, 0xcf, 0x8b, 0x92, 0xfd, 0x52, 0xae, 0x9c, 0x97, 0xb4, 0xd3, 0xdb, 0x29, 0x2c, 0x66, 0xa8, + 0xc9, 0x6b, 0x30, 0xd2, 0xa0, 0xcd, 0x96, 0xf4, 0x6b, 0xb6, 0xf2, 0xdb, 0xe1, 0x7c, 0xac, 0xd7, + 0x69, 0xb3, 0x55, 0x29, 0xb1, 0x2e, 0xb3, 0xbf, 0x90, 0x8b, 0x22, 0x3f, 0x6f, 0x41, 0x79, 0xb7, + 0x13, 0xc5, 0x41, 0xcb, 0xfb, 0x00, 0x9d, 0x2d, 0x71, 0xc1, 0x3f, 0x9d, 0xb3, 0xe0, 0x9b, 0x09, + 0x7f, 0xb1, 0xdf, 0xd5, 0x4f, 0xd4, 0x92, 0x79, 0x3f, 0xaa, 0x5e, 0x48, 0xdd, 0x38, 0x08, 0xbb, + 0xb3, 0xf0, 0x48, 0xfa, 0xb1, 0x9c, 0xf0, 0x17, 0xfd, 0x50, 0x3f, 0x51, 0x4b, 0x26, 0x5d, 0x18, + 0x6b, 0x37, 0x3b, 0x75, 0xcf, 0x9f, 0x9d, 0xe0, 0x7d, 0xb8, 0x95, 0x73, 0x1f, 0x36, 0x39, 0xf3, + 0x0a, 0xb0, 0x5d, 0x2d, 0xfe, 0x46, 0x29, 0x90, 0x3c, 0x0d, 0xa3, 0x6e, 0xc3, 0x09, 0xe3, 0xd9, + 0x49, 0xbe, 0x68, 0xd4, 0x2a, 0x5e, 0x62, 0x40, 0x14, 0x38, 0xfb, 0x57, 0x0b, 0x70, 0x61, 0xf0, + 0xc0, 0xc4, 0x72, 0x76, 0x3b, 0x61, 0x24, 0x14, 0x64, 0xc9, 0x5c, 0xce, 0x1c, 0x8c, 0x09, 0x9e, + 0x7c, 0xcc, 0x82, 0xf1, 0xbb, 0x51, 0xe0, 0xfb, 0x34, 0x96, 0x56, 0xec, 0x76, 0xce, 0x63, 0xbd, + 0x21, 0xb8, 0xeb, 0x3e, 0x48, 0x00, 0x26, 0x72, 0x59, 0x77, 0xe9, 0x81, 0xdb, 0xec, 0x54, 0x13, + 0xd5, 0xa4, 0x48, 0xaf, 0x08, 0x30, 0x26, 0x78, 0x46, 0xea, 0xf9, 0x82, 0x74, 0x24, 0x4d, 0xba, + 0xe2, 0x4b, 0x52, 0x89, 0xb7, 0xff, 0x6b, 0x14, 0xce, 0xf5, 0x5d, 0xfd, 0x64, 0x1e, 0x80, 0x3b, + 0x0d, 0x57, 0x3d, 0x16, 0xe1, 0x89, 0xb0, 0x76, 0x9a, 0xd9, 0xf8, 0xdb, 0x0a, 0x8a, 0x06, 0x05, + 0xf9, 0x08, 0x40, 0xdb, 0x09, 0x9d, 0x16, 0x8d, 0x69, 0x98, 0x28, 0xaa, 0x9b, 0xc3, 0xcd, 0x12, + 0xeb, 0xc7, 0x66, 0xc2, 0x53, 0x3b, 0x19, 0x0a, 0x14, 0xa1, 0x21, 0x92, 0x05, 0xb1, 0x21, 0x6d, + 0x52, 0x27, 0xa2, 0xeb, 0x5a, 0x7f, 0xab, 0x20, 0x16, 0x35, 0x0a, 0x4d, 0x3a, 0xd2, 0x84, 0x31, + 0x3e, 0x8a, 0x48, 0x1a, 0xec, 0xe5, 0x21, 0x0d, 0x36, 0xf7, 0x80, 0xb4, 0x39, 0xe2, 0xb3, 0x15, + 0xa1, 0x94, 0x41, 0x3e, 0x6b, 0xc1, 0x74, 0xcd, 0x6b, 0x52, 0x3d, 0x06, 0x19, 0xb8, 0x6e, 0x0c, + 0x3f, 0x55, 0x57, 0x4d, 0xbe, 0x5a, 0x91, 0xa6, 0xc0, 0x11, 0x66, 0xc4, 0xb3, 0xc5, 0xb2, 0x47, + 0x43, 0xae, 0x81, 0xc7, 0xd2, 0x8b, 0xe5, 0xb6, 0x00, 0x63, 0x82, 0x27, 0x8b, 0x70, 0xaa, 0xed, + 0x44, 0xd1, 0x52, 0x48, 0xab, 0xd4, 0x8f, 0x3d, 0xa7, 0x29, 0xc2, 0xca, 0x92, 0xf6, 0x85, 0x37, + 0xd3, 0x68, 0xcc, 0xd2, 0x93, 0xf7, 0xc0, 0x93, 0x5e, 0xdd, 0x0f, 0x42, 0xba, 0xe6, 0x45, 0x91, + 0xe7, 0xd7, 0xf5, 0x62, 0xe2, 0x0a, 0xb5, 0x54, 0x99, 0x93, 0xac, 0x9e, 0x5c, 0xe9, 0x4f, 0x86, + 0x83, 0xda, 0x93, 0xb7, 0x41, 0x29, 0xda, 0xf5, 0xda, 0x4b, 0x61, 0x35, 0x9a, 0x2d, 0x73, 0x5e, + 0xca, 0xa4, 0x6e, 0x49, 0x38, 0x2a, 0x0a, 0xfb, 0x4b, 0x05, 0x98, 0x1d, 0xb4, 0x0b, 0x49, 0xc4, + 0xf6, 0x5a, 0x7c, 0xdb, 0x09, 0x23, 0x19, 0x51, 0x0c, 0x19, 0x98, 0x4a, 0xbe, 0xb7, 0x9d, 0xd0, + 0xdc, 0xb5, 0x5c, 0x00, 0x26, 0x92, 0xc8, 0x5d, 0x18, 0x89, 0x9b, 0x4e, 0x4e, 0x99, 0x2c, 0x43, + 0xa2, 0xf6, 0xfb, 0x56, 0x17, 0x23, 0xe4, 0x32, 0xc8, 0x53, 0x30, 0xd2, 0xf4, 0x76, 0x98, 0x7f, + 0xcc, 0xb6, 0x35, 0x37, 0x74, 0xab, 0xde, 0x4e, 0x84, 0x1c, 0x6a, 0xff, 0xdb, 0x58, 0x1f, 0xc5, + 0xa9, 0x4c, 0x11, 0xb9, 0x0c, 0xc0, 0xfc, 0xa0, 0xcd, 0x90, 0xd6, 0xbc, 0x03, 0xe9, 0x0a, 0xa8, + 0xcd, 0xb9, 0xae, 0x30, 0x68, 0x50, 0x25, 0x6d, 0xb6, 0x3a, 0x35, 0xd6, 0xa6, 0xd0, 0xdb, 0x46, + 0x60, 0xd0, 0xa0, 0x22, 0xcf, 0xc3, 0x98, 0xd7, 0x72, 0xea, 0x34, 0xe9, 0xe6, 0x53, 0x6c, 0x3f, + 0xad, 0x70, 0xc8, 0xfd, 0xc3, 0xb9, 0x69, 0xd5, 0x21, 0x0e, 0x42, 0x49, 0x4b, 0x7e, 0xc3, 0x82, + 0x49, 0x37, 0x68, 0xb5, 0x02, 0x7f, 0xd5, 0xd9, 0xa1, 0xcd, 0x24, 0x39, 0x75, 0xf7, 0x51, 0x19, + 0xea, 0xf9, 0x25, 0x43, 0x98, 0x08, 0x0d, 0x55, 0xca, 0xcd, 0x44, 0x61, 0xaa, 0x57, 0xe6, 0xb6, + 0x1b, 0x3d, 0x62, 0xdb, 0xfd, 0x9e, 0x05, 0x33, 0xa2, 0xed, 0xa2, 0xef, 0x07, 0xb1, 0xcc, 0x19, + 0x8a, 0xec, 0x52, 0xf0, 0x88, 0x87, 0x65, 0x48, 0x14, 0x63, 0x7b, 0x83, 0xec, 0xe6, 0x4c, 0x0f, + 0x1e, 0x7b, 0x3b, 0x49, 0xae, 0xc1, 0x4c, 0x2d, 0x08, 0x5d, 0x6a, 0x4e, 0x84, 0xd4, 0x19, 0x8a, + 0xd1, 0xd5, 0x2c, 0x01, 0xf6, 0xb6, 0x21, 0xb7, 0xe1, 0xbc, 0x01, 0x34, 0xe7, 0x41, 0xa8, 0x8d, + 0x8b, 0x92, 0xdb, 0xf9, 0xab, 0x7d, 0xa9, 0x70, 0x40, 0xeb, 0x0b, 0xef, 0x86, 0x99, 0x9e, 0xef, + 0xd7, 0x27, 0x2e, 0x3f, 0x6b, 0xc6, 0xe5, 0x65, 0x23, 0x9c, 0xbe, 0xb0, 0x0c, 0xe7, 0xfb, 0xcf, + 0xd4, 0x49, 0xb8, 0xd8, 0xbf, 0x6c, 0xc1, 0x93, 0x03, 0xfc, 0x1f, 0x15, 0x90, 0x58, 0x83, 0x02, + 0x12, 0xe2, 0x40, 0x91, 0xfa, 0x7b, 0x52, 0x71, 0x5c, 0x1d, 0x6e, 0x45, 0x5c, 0xf1, 0xf7, 0xc4, + 0x87, 0x1e, 0xbf, 0x77, 0x38, 0x57, 0xbc, 0xe2, 0xef, 0x21, 0xe3, 0x6d, 0xff, 0xe2, 0x58, 0x2a, + 0xe6, 0xd9, 0x4a, 0xc2, 0x6c, 0xde, 0x51, 0x19, 0xf1, 0x6c, 0xe4, 0xbc, 0x16, 0x8d, 0x98, 0x4e, + 0x24, 0xcf, 0xa5, 0x38, 0xf2, 0x49, 0x8b, 0xe7, 0xab, 0x93, 0x58, 0x50, 0xba, 0x64, 0x8f, 0x26, + 0x7d, 0x6e, 0x66, 0xc1, 0x13, 0x20, 0x9a, 0xd2, 0xd9, 0x4e, 0x6e, 0x8b, 0x74, 0x51, 0xd6, 0x31, + 0x4b, 0x32, 0xda, 0x09, 0x9e, 0x1c, 0x00, 0x44, 0x5d, 0xdf, 0xdd, 0x0c, 0x9a, 0x9e, 0xdb, 0x95, + 0xfe, 0x46, 0x0e, 0x39, 0x4f, 0xc1, 0x4f, 0x78, 0x67, 0xfa, 0x37, 0x1a, 0xb2, 0xc8, 0x97, 0x2d, + 0x98, 0x11, 0x86, 0x73, 0xd9, 0xab, 0xd5, 0x68, 0x48, 0x7d, 0x97, 0x26, 0xae, 0xc7, 0x9d, 0xe1, + 0x7a, 0x90, 0xa4, 0xeb, 0x56, 0xb2, 0xec, 0xf5, 0x16, 0xef, 0x41, 0x61, 0x6f, 0x67, 0x48, 0x15, + 0x46, 0x3c, 0xbf, 0x16, 0x48, 0xc5, 0x56, 0x19, 0xae, 0x53, 0x2b, 0x7e, 0x2d, 0xd0, 0x7b, 0x85, + 0xfd, 0x42, 0xce, 0x9d, 0xac, 0xc2, 0xd9, 0x50, 0xc6, 0x90, 0xd7, 0xbd, 0x88, 0x05, 0x02, 0xab, + 0x5e, 0xcb, 0x8b, 0xb9, 0x52, 0x2a, 0x56, 0x66, 0xef, 0x1d, 0xce, 0x9d, 0xc5, 0x3e, 0x78, 0xec, + 0xdb, 0xca, 0x7e, 0xbd, 0x9c, 0x0e, 0x94, 0x45, 0x1a, 0xe8, 0x43, 0x50, 0x0e, 0x55, 0xe2, 0x5d, + 0x38, 0x10, 0xab, 0xf9, 0xcc, 0xb1, 0xcc, 0x3f, 0xa9, 0x0c, 0x86, 0x4e, 0xb1, 0x6b, 0x89, 0xcc, + 0x91, 0x60, 0x5f, 0x5e, 0x6e, 0x8b, 0x1c, 0xd6, 0x97, 0x94, 0xaa, 0x53, 0x6d, 0x5d, 0xdf, 0x45, + 0x2e, 0x83, 0x84, 0x30, 0xd6, 0xa0, 0x4e, 0x33, 0x6e, 0xc8, 0x4c, 0xd0, 0x8d, 0x61, 0xdd, 0x58, + 0xc6, 0x2b, 0x9b, 0x65, 0x13, 0x50, 0x94, 0x92, 0xc8, 0x01, 0x8c, 0x37, 0xc4, 0x47, 0x90, 0xb6, + 0x7d, 0x6d, 0xd8, 0xc9, 0x4d, 0x7d, 0x59, 0xbd, 0x7f, 0x25, 0x00, 0x13, 0x71, 0xe4, 0x17, 0x2c, + 0x00, 0x37, 0x49, 0xaf, 0x25, 0xdb, 0x07, 0x73, 0xd3, 0x3b, 0x2a, 0x73, 0xa7, 0x5d, 0x23, 0x05, + 0x8a, 0xd0, 0x90, 0x4c, 0x5e, 0x85, 0xc9, 0x90, 0xba, 0x81, 0xef, 0x7a, 0x4d, 0x5a, 0x5d, 0x8c, + 0xb9, 0xe7, 0x7e, 0xb2, 0x34, 0xdc, 0x69, 0xe6, 0x9f, 0xa0, 0xc1, 0x03, 0x53, 0x1c, 0xc9, 0xeb, + 0x16, 0x4c, 0xab, 0x14, 0x23, 0xfb, 0x20, 0x54, 0xa6, 0x5a, 0x56, 0x73, 0x4a, 0x68, 0x72, 0x9e, + 0x15, 0xc2, 0x22, 0x94, 0x34, 0x0c, 0x33, 0x72, 0xc9, 0x2b, 0x00, 0xc1, 0x0e, 0x4f, 0xe7, 0xb1, + 0xa1, 0x96, 0x4e, 0x3c, 0xd4, 0x69, 0x91, 0x99, 0x4e, 0x38, 0xa0, 0xc1, 0x8d, 0xdc, 0x04, 0x10, + 0xdb, 0x66, 0xbb, 0xdb, 0xa6, 0x3c, 0x6c, 0x28, 0x57, 0xde, 0x9a, 0x4c, 0xfe, 0x96, 0xc2, 0xdc, + 0x3f, 0x9c, 0xeb, 0x0d, 0x93, 0x79, 0x1e, 0xd5, 0x68, 0x4e, 0x3e, 0x08, 0xe3, 0x51, 0xa7, 0xd5, + 0x72, 0x54, 0x56, 0x66, 0x33, 0x3f, 0x8b, 0x28, 0xf8, 0xea, 0xb5, 0x29, 0x01, 0x98, 0x48, 0xb4, + 0x7d, 0x20, 0xbd, 0xf4, 0xe4, 0x79, 0x98, 0xa4, 0x07, 0x31, 0x0d, 0x7d, 0xa7, 0x79, 0x0b, 0x57, + 0x93, 0x38, 0x9e, 0x7f, 0xfc, 0x2b, 0x06, 0x1c, 0x53, 0x54, 0xc4, 0x56, 0x9e, 0x77, 0x81, 0xd3, + 0x83, 0xf6, 0xbc, 0x13, 0x3f, 0xdb, 0xfe, 0xef, 0x42, 0xca, 0x23, 0xd8, 0x0e, 0x29, 0x25, 0x01, + 0x8c, 0xfa, 0x41, 0x55, 0x29, 0xbd, 0x1b, 0xf9, 0x28, 0xbd, 0xf5, 0xa0, 0x6a, 0x9c, 0x08, 0xb3, + 0x5f, 0x11, 0x0a, 0x39, 0xfc, 0xc8, 0x2c, 0x39, 0x5b, 0xe4, 0x08, 0xe9, 0x04, 0xe5, 0x29, 0x59, + 0x1d, 0x99, 0x6d, 0x98, 0x82, 0x30, 0x2d, 0x97, 0xec, 0xc2, 0x68, 0x23, 0x88, 0x62, 0x11, 0xab, + 0x0c, 0xed, 0x85, 0x5d, 0x0f, 0xa2, 0x98, 0x9b, 0x30, 0x35, 0x6c, 0x06, 0x89, 0x50, 0xc8, 0xb0, + 0xbf, 0x6b, 0xa5, 0xb2, 0x36, 0x77, 0x9c, 0xd8, 0x6d, 0x5c, 0xd9, 0xa3, 0x3e, 0x5b, 0xcf, 0x66, + 0xca, 0xff, 0xc7, 0xcd, 0x94, 0xff, 0xfd, 0xc3, 0xb9, 0xb7, 0x0c, 0x2a, 0xd1, 0xd9, 0x67, 0x1c, + 0xe6, 0x39, 0x0b, 0xe3, 0x74, 0xe0, 0xa3, 0x16, 0x4c, 0x18, 0xdd, 0x93, 0x06, 0x25, 0xc7, 0xec, + 0xb3, 0x72, 0xae, 0x0c, 0x20, 0x9a, 0x22, 0xed, 0xcf, 0x5b, 0x30, 0x5e, 0x71, 0xdc, 0xdd, 0xa0, + 0x56, 0x63, 0x01, 0x7e, 0xb5, 0x23, 0x0f, 0x57, 0xc4, 0xf8, 0x54, 0x80, 0xbf, 0x2c, 0xe1, 0xa8, + 0x28, 0xd8, 0x1a, 0xae, 0x39, 0x6e, 0x1c, 0x84, 0xbc, 0xdb, 0x45, 0xb1, 0x86, 0xaf, 0x72, 0x08, + 0x4a, 0x0c, 0x79, 0x3b, 0x4c, 0xb4, 0x9c, 0x83, 0xa4, 0x71, 0x36, 0x65, 0xb4, 0xa6, 0x51, 0x68, + 0xd2, 0xd9, 0x7f, 0x54, 0x86, 0x71, 0x79, 0x8a, 0x79, 0xec, 0x73, 0x88, 0xc4, 0x8b, 0x2f, 0x0c, + 0xf4, 0xe2, 0x23, 0x18, 0x73, 0x79, 0x01, 0x94, 0x34, 0xa5, 0x43, 0x26, 0xcf, 0x64, 0x07, 0x45, + 0x4d, 0x95, 0xee, 0x96, 0xf8, 0x8d, 0x52, 0x14, 0xf9, 0x9c, 0x05, 0xa7, 0xdc, 0xc0, 0xf7, 0xa9, + 0xab, 0xf5, 0xfc, 0x48, 0x1e, 0xe7, 0x74, 0x4b, 0x69, 0xa6, 0x3a, 0x45, 0x94, 0x41, 0x60, 0x56, + 0x3c, 0x79, 0x11, 0xa6, 0xc4, 0x9c, 0xdd, 0x4e, 0xc5, 0xc7, 0xfa, 0xe4, 0xda, 0x44, 0x62, 0x9a, + 0x96, 0xcc, 0x8b, 0x3c, 0x03, 0x3f, 0xca, 0x11, 0x31, 0xb2, 0xcc, 0x5a, 0xaa, 0xb3, 0x9e, 0x08, + 0x0d, 0x0a, 0x12, 0x02, 0x09, 0x69, 0x2d, 0xa4, 0x51, 0x03, 0xe9, 0x6b, 0x1d, 0x1a, 0xc5, 0xdc, + 0xc6, 0x8c, 0x3f, 0xdc, 0xa9, 0x16, 0xf6, 0x70, 0xc2, 0x3e, 0xdc, 0xc9, 0xae, 0x74, 0x74, 0x4b, + 0x79, 0x6c, 0x27, 0xf9, 0x99, 0x07, 0xfa, 0xbb, 0x73, 0x30, 0x1a, 0x35, 0x9c, 0xb0, 0xca, 0x6d, + 0x5b, 0xb1, 0x52, 0x66, 0xba, 0x64, 0x8b, 0x01, 0x50, 0xc0, 0xc9, 0x32, 0x9c, 0xce, 0x9c, 0xbb, + 0x47, 0xdc, 0x7a, 0x95, 0x2a, 0xb3, 0x92, 0xdd, 0xe9, 0xcc, 0x89, 0x7d, 0x84, 0x3d, 0x2d, 0xcc, + 0x20, 0x68, 0xe2, 0x88, 0x20, 0xa8, 0x0b, 0x63, 0x4d, 0x91, 0x08, 0x98, 0xe4, 0xaa, 0xf2, 0xe5, + 0x5c, 0x26, 0x60, 0xde, 0x4c, 0xc0, 0xa8, 0xd5, 0x2e, 0x13, 0x0a, 0x52, 0x20, 0xf9, 0x34, 0x53, + 0x68, 0x46, 0xee, 0x60, 0x8a, 0x77, 0xe0, 0x76, 0x3e, 0x1d, 0xe8, 0x49, 0x95, 0x68, 0xed, 0x66, + 0x24, 0x22, 0x4c, 0xf9, 0x17, 0x7e, 0x02, 0x26, 0x1e, 0x36, 0xef, 0xf0, 0x12, 0x9c, 0x1e, 0x2a, + 0xe3, 0xf0, 0x3d, 0x0b, 0x92, 0xef, 0xba, 0xe4, 0xb8, 0x0d, 0xca, 0x96, 0x0c, 0x79, 0x09, 0xa6, + 0x55, 0x18, 0xb1, 0x14, 0x74, 0xfc, 0x98, 0xf3, 0x2a, 0xea, 0x5c, 0x32, 0xa6, 0xb0, 0x98, 0xa1, + 0x26, 0x0b, 0x50, 0x66, 0xf3, 0x24, 0x9a, 0x0a, 0xb5, 0xab, 0x42, 0x95, 0xc5, 0xcd, 0x15, 0xd9, + 0x4a, 0xd3, 0x90, 0x00, 0x66, 0x9a, 0x4e, 0x14, 0xf3, 0x1e, 0xb0, 0xa8, 0xe2, 0x21, 0xcf, 0x94, + 0x79, 0xd9, 0xd1, 0x6a, 0x96, 0x11, 0xf6, 0xf2, 0xb6, 0xbf, 0x31, 0x02, 0x53, 0x29, 0xcd, 0xc8, + 0xac, 0x4a, 0x27, 0x62, 0xae, 0x8f, 0x4a, 0xb1, 0x28, 0xab, 0x72, 0x4b, 0xc2, 0x51, 0x51, 0x30, + 0xea, 0xb6, 0x13, 0x45, 0xfb, 0x41, 0x58, 0x95, 0xaa, 0x5c, 0x51, 0x6f, 0x4a, 0x38, 0x2a, 0x0a, + 0x66, 0x5f, 0x76, 0xa8, 0x13, 0xd2, 0x90, 0x97, 0x61, 0x64, 0xed, 0x4b, 0x45, 0xa3, 0xd0, 0xa4, + 0xe3, 0x4a, 0x39, 0x6e, 0x46, 0x4b, 0x4d, 0x8f, 0xfa, 0xb1, 0xe8, 0x66, 0x3e, 0x4a, 0x79, 0x7b, + 0x75, 0xcb, 0x64, 0xaa, 0x95, 0x72, 0x06, 0x81, 0x59, 0xf1, 0xe4, 0xe3, 0x16, 0x4c, 0x39, 0xfb, + 0x91, 0xae, 0xd2, 0xe5, 0x5a, 0x79, 0x68, 0x23, 0x95, 0x2a, 0xfc, 0xad, 0xcc, 0x30, 0xf5, 0x9e, + 0x02, 0x61, 0x5a, 0x28, 0xf9, 0xa2, 0x05, 0x84, 0x1e, 0x50, 0x77, 0x33, 0x0c, 0xf6, 0xbc, 0x6a, + 0xf2, 0x0d, 0x65, 0xf8, 0x33, 0xa4, 0xb7, 0x7d, 0xa5, 0x87, 0xaf, 0xd0, 0xea, 0xbd, 0x70, 0xec, + 0xd3, 0x07, 0xfb, 0xaf, 0x8b, 0x30, 0x61, 0x28, 0xe3, 0xbe, 0x96, 0xd5, 0xfa, 0x3e, 0xb3, 0xac, + 0x85, 0x13, 0x58, 0xd6, 0x8f, 0x40, 0xd9, 0x4d, 0x14, 0x45, 0x3e, 0x55, 0xc5, 0x59, 0xf5, 0xa3, + 0x75, 0x85, 0x02, 0xa1, 0x96, 0x49, 0xae, 0xc1, 0x8c, 0xc1, 0x46, 0x2a, 0x99, 0x11, 0xae, 0x64, + 0x54, 0xa2, 0x69, 0x31, 0x4b, 0x80, 0xbd, 0x6d, 0xc8, 0x73, 0xcc, 0xab, 0xf5, 0xe4, 0xb8, 0x44, + 0x14, 0x2f, 0x2b, 0x76, 0x17, 0x37, 0x57, 0x12, 0x30, 0x9a, 0x34, 0xf6, 0x37, 0x2c, 0xf5, 0x71, + 0x1f, 0x43, 0xb9, 0xc7, 0xdd, 0x74, 0xb9, 0xc7, 0x95, 0x5c, 0xa6, 0x79, 0x40, 0xa9, 0xc7, 0x3a, + 0x8c, 0x2f, 0x05, 0xad, 0x96, 0xe3, 0x57, 0xc9, 0x9b, 0x60, 0xdc, 0x15, 0x7f, 0xca, 0x30, 0x71, + 0x82, 0xd9, 0x6f, 0x89, 0xc5, 0x04, 0x47, 0x9e, 0x82, 0x11, 0x27, 0xac, 0x27, 0xa1, 0x21, 0x3f, + 0x3b, 0x5a, 0x0c, 0xeb, 0x11, 0x72, 0xa8, 0xfd, 0x85, 0x02, 0xc0, 0x52, 0xd0, 0x6a, 0x3b, 0x21, + 0xad, 0x6e, 0x07, 0xff, 0x9f, 0x23, 0x16, 0x11, 0xc3, 0xa7, 0x2c, 0x20, 0x6c, 0x56, 0x02, 0x9f, + 0xfa, 0xb1, 0x3a, 0x7c, 0x65, 0xf6, 0xd2, 0x4d, 0xa0, 0xd2, 0xf8, 0xe8, 0x3d, 0x90, 0x20, 0x50, + 0xd3, 0x1c, 0x23, 0x8a, 0x78, 0x3a, 0xb1, 0xf8, 0xc5, 0x74, 0x65, 0x04, 0x3f, 0x28, 0x95, 0x0e, + 0x80, 0xfd, 0xd5, 0x02, 0x9c, 0x17, 0x6a, 0x6b, 0xcd, 0xf1, 0x9d, 0x3a, 0x6d, 0xb1, 0x5e, 0x1d, + 0xf7, 0xb4, 0xc1, 0x65, 0xee, 0xab, 0x97, 0x14, 0x42, 0x0c, 0xbb, 0x38, 0xc5, 0xa2, 0x12, 0xcb, + 0x68, 0xc5, 0xf7, 0x62, 0xe4, 0xcc, 0x49, 0x04, 0xa5, 0xe4, 0x9e, 0x88, 0x54, 0x36, 0x39, 0x09, + 0x52, 0xfb, 0xee, 0x9a, 0x64, 0x8f, 0x4a, 0x10, 0x33, 0xee, 0xcd, 0xc0, 0xdd, 0x45, 0xda, 0x0e, + 0xb8, 0x62, 0x31, 0x4e, 0x90, 0x57, 0x25, 0x1c, 0x15, 0x85, 0xfd, 0x55, 0x0b, 0xb2, 0x2a, 0x97, + 0x47, 0x83, 0xa2, 0xf2, 0x30, 0x1b, 0x0d, 0xa6, 0x0b, 0x05, 0x4f, 0x50, 0x77, 0xf7, 0x3e, 0x98, + 0x70, 0xe2, 0x98, 0xb6, 0xda, 0x22, 0x34, 0x29, 0x3e, 0x5c, 0xfa, 0x6b, 0x2d, 0xa8, 0x7a, 0x35, + 0x8f, 0x87, 0x24, 0x26, 0x3b, 0xfb, 0x65, 0x28, 0x25, 0x27, 0x3e, 0xc7, 0xf8, 0xf4, 0x4f, 0xa7, + 0xdc, 0xc9, 0x01, 0x8b, 0xeb, 0x7e, 0x01, 0xfa, 0xd8, 0x4c, 0x36, 0x64, 0xad, 0x5d, 0x52, 0x43, + 0x3e, 0x99, 0x86, 0x21, 0x07, 0xe2, 0xb4, 0x4b, 0xe4, 0x59, 0xde, 0x93, 0xb7, 0xcd, 0xd7, 0x07, + 0x60, 0x13, 0xb2, 0x7f, 0xea, 0x10, 0x8c, 0x5c, 0x06, 0xd0, 0x46, 0x41, 0x96, 0xd6, 0xa8, 0x4c, + 0xad, 0xb6, 0x1d, 0x68, 0x50, 0x31, 0x17, 0xd0, 0xf3, 0xa3, 0xd8, 0x69, 0x36, 0xaf, 0x7b, 0x7e, + 0x2c, 0x63, 0x59, 0xa5, 0x30, 0x56, 0x34, 0x0a, 0x4d, 0xba, 0x0b, 0xef, 0x30, 0xbe, 0xcb, 0x49, + 0xdc, 0xfa, 0x4f, 0x15, 0x60, 0xfa, 0x9a, 0xdf, 0xd9, 0xbc, 0xb6, 0xd9, 0xd9, 0x69, 0x7a, 0xee, + 0x4d, 0xda, 0x65, 0x1f, 0x6d, 0x97, 0x76, 0x57, 0x96, 0xe5, 0xb4, 0xab, 0x8f, 0x76, 0x93, 0x01, + 0x51, 0xe0, 0x58, 0x37, 0x6b, 0x9e, 0x5f, 0xa7, 0x61, 0x3b, 0xf4, 0xa4, 0xef, 0x6e, 0x74, 0xf3, + 0xaa, 0x46, 0xa1, 0x49, 0xc7, 0x78, 0x07, 0xfb, 0x3e, 0x0d, 0xb3, 0xda, 0x66, 0x83, 0x01, 0x51, + 0xe0, 0x18, 0x51, 0x1c, 0x76, 0xa2, 0x58, 0xce, 0x98, 0x22, 0xda, 0x66, 0x40, 0x14, 0x38, 0xb6, + 0x3c, 0xa2, 0xce, 0x0e, 0xcf, 0xc2, 0x66, 0xce, 0xc3, 0xb7, 0x04, 0x18, 0x13, 0x3c, 0x23, 0xdd, + 0xa5, 0xdd, 0x65, 0x66, 0x7b, 0x33, 0x15, 0x2b, 0x37, 0x05, 0x18, 0x13, 0xbc, 0xfd, 0x0f, 0x16, + 0x90, 0xf4, 0x74, 0x3c, 0x06, 0xf3, 0xfd, 0x5a, 0xda, 0x7c, 0x0f, 0x99, 0x30, 0x4f, 0x77, 0x7f, + 0x80, 0x15, 0xff, 0x35, 0x0b, 0x26, 0xcd, 0xb3, 0x13, 0x52, 0xcf, 0x28, 0xa2, 0x8d, 0xb4, 0x22, + 0xba, 0x7f, 0x38, 0xf7, 0x93, 0xfd, 0x2e, 0x3d, 0xd6, 0xbd, 0x38, 0x68, 0x47, 0xcf, 0x52, 0xbf, + 0xee, 0xf9, 0x94, 0x67, 0x06, 0xc5, 0x99, 0x4b, 0xea, 0x60, 0x66, 0x29, 0xa8, 0xd2, 0x87, 0xd0, + 0x64, 0xf6, 0x1d, 0x98, 0xe9, 0x29, 0x53, 0x3a, 0x86, 0xd2, 0x39, 0xb2, 0x96, 0xd4, 0x46, 0x98, + 0x60, 0x8c, 0x37, 0xda, 0xe2, 0x70, 0x64, 0x09, 0x66, 0x44, 0xb5, 0x15, 0x93, 0xb4, 0xe5, 0x36, + 0x68, 0x4b, 0x15, 0xb0, 0xf1, 0x40, 0xf1, 0x76, 0x16, 0x89, 0xbd, 0xf4, 0xf6, 0xa7, 0x2d, 0x98, + 0x4a, 0xd5, 0x9f, 0xe5, 0xa4, 0x1e, 0xf9, 0x4e, 0x0b, 0xf8, 0x51, 0x5e, 0xe8, 0xf9, 0x22, 0xd7, + 0x57, 0x32, 0x76, 0x9a, 0x46, 0xa1, 0x49, 0x67, 0x7f, 0xbe, 0x00, 0xa5, 0x24, 0x2b, 0x7c, 0x8c, + 0xae, 0x7c, 0xd2, 0x82, 0x29, 0x15, 0x9c, 0x73, 0x97, 0x5d, 0x2c, 0xc6, 0xf5, 0xe1, 0xf3, 0xd2, + 0xea, 0xbc, 0x97, 0xb9, 0xec, 0x2a, 0x76, 0x40, 0x53, 0x18, 0xa6, 0x65, 0x93, 0xdb, 0x00, 0x51, + 0x37, 0x8a, 0x69, 0xcb, 0x08, 0x1e, 0x6c, 0x63, 0xc7, 0xcd, 0xbb, 0x41, 0x48, 0xd9, 0xfe, 0x5a, + 0x0f, 0xaa, 0x74, 0x4b, 0x51, 0x6a, 0xe5, 0xaa, 0x61, 0x68, 0x70, 0xb2, 0x7f, 0xbb, 0x00, 0xa7, + 0xb3, 0x5d, 0x22, 0xef, 0x85, 0xc9, 0x44, 0xba, 0x71, 0x7f, 0x34, 0x49, 0x85, 0x4f, 0xa2, 0x81, + 0xbb, 0x7f, 0x38, 0x37, 0xd7, 0x7b, 0x81, 0x76, 0xde, 0x24, 0xc1, 0x14, 0x33, 0x91, 0x21, 0x91, + 0xa9, 0xbc, 0x4a, 0x77, 0xb1, 0xdd, 0x96, 0x69, 0x0e, 0x23, 0x43, 0x62, 0x62, 0x31, 0x43, 0x4d, + 0x36, 0xe1, 0xac, 0x01, 0x59, 0xa7, 0x5e, 0xbd, 0xb1, 0x13, 0x84, 0xe2, 0xa2, 0x42, 0xb1, 0xf2, + 0x94, 0xe4, 0x72, 0x16, 0xfb, 0xd0, 0x60, 0xdf, 0x96, 0xcc, 0x69, 0x71, 0x9d, 0xb6, 0xe3, 0x7a, + 0x71, 0x57, 0x46, 0x43, 0x4a, 0x37, 0x2d, 0x49, 0x38, 0x2a, 0x0a, 0x7b, 0x0d, 0x46, 0x8e, 0xb9, + 0x82, 0x8e, 0x65, 0xeb, 0x5f, 0x86, 0x12, 0x63, 0xc7, 0x74, 0x51, 0x5e, 0x2c, 0x03, 0x28, 0x25, + 0xf7, 0x56, 0x88, 0x0d, 0x45, 0xcf, 0x49, 0x92, 0x50, 0x6a, 0x58, 0x2b, 0x51, 0xd4, 0xe1, 0x9e, + 0x0c, 0x43, 0x92, 0xa7, 0xa1, 0x48, 0x0f, 0xda, 0xd9, 0x6c, 0xd3, 0x95, 0x83, 0xb6, 0x17, 0xd2, + 0x88, 0x11, 0xd1, 0x83, 0x36, 0xb9, 0x00, 0x05, 0xaf, 0x2a, 0x8d, 0x14, 0x48, 0x9a, 0xc2, 0xca, + 0x32, 0x16, 0xbc, 0xaa, 0x7d, 0x00, 0x65, 0x75, 0x51, 0x86, 0xec, 0x26, 0xba, 0xdb, 0xca, 0xe3, + 0x18, 0x27, 0xe1, 0x3b, 0x40, 0x6b, 0x77, 0x00, 0x74, 0x9d, 0x5e, 0x5e, 0xfa, 0xe5, 0x12, 0x8c, + 0xb8, 0x81, 0x2c, 0x12, 0x2e, 0x69, 0x36, 0x5c, 0x69, 0x73, 0x8c, 0x7d, 0x07, 0xa6, 0x6f, 0xfa, + 0xc1, 0xbe, 0xcf, 0x8c, 0xe9, 0x55, 0x8f, 0x36, 0xab, 0x8c, 0x71, 0x8d, 0xfd, 0x91, 0x75, 0x11, + 0x38, 0x16, 0x05, 0x4e, 0xdd, 0x26, 0x29, 0x0c, 0xba, 0x4d, 0x62, 0x7f, 0xd4, 0x82, 0xd3, 0xaa, + 0x80, 0x2c, 0xd1, 0xc6, 0x2f, 0xc0, 0xe4, 0x4e, 0xc7, 0x6b, 0x56, 0xe5, 0x6f, 0x29, 0x42, 0x95, + 0xc8, 0x55, 0x0c, 0x1c, 0xa6, 0x28, 0x99, 0xbb, 0xb5, 0xe3, 0xf9, 0x4e, 0xd8, 0xdd, 0xd4, 0xea, + 0x5f, 0x69, 0x84, 0x8a, 0xc2, 0xa0, 0x41, 0x65, 0x7f, 0x00, 0xc6, 0x44, 0x05, 0x2e, 0x73, 0xc5, + 0x65, 0x5d, 0x6f, 0xc6, 0x15, 0xcf, 0x54, 0xe4, 0x5e, 0x87, 0x62, 0xe8, 0xec, 0xcb, 0x68, 0xe6, + 0xd9, 0x81, 0x6e, 0x80, 0xbc, 0xc4, 0x3e, 0x8f, 0xce, 0xfe, 0x95, 0x83, 0x98, 0xfa, 0xcc, 0xb9, + 0x13, 0x35, 0x52, 0xe8, 0xec, 0x23, 0x63, 0x61, 0xff, 0x45, 0x11, 0xf4, 0x05, 0x1d, 0xe2, 0xc9, + 0x2a, 0x0c, 0x2b, 0x8f, 0x3c, 0xd9, 0x56, 0xd7, 0x77, 0xf5, 0x55, 0xa0, 0x52, 0xa6, 0x08, 0xe3, + 0x13, 0x16, 0x73, 0x32, 0xbd, 0xd8, 0x73, 0xb8, 0x6e, 0x90, 0x63, 0xd9, 0xcc, 0xe9, 0xa0, 0x7e, + 0x45, 0x70, 0x0e, 0x42, 0xd3, 0x6d, 0x55, 0xc2, 0xd0, 0x94, 0x4c, 0x5e, 0x95, 0x47, 0x1b, 0xc5, + 0xdc, 0x6a, 0x78, 0x4a, 0x99, 0xf3, 0x8c, 0x36, 0x8c, 0x86, 0x34, 0x0e, 0x93, 0xea, 0xa9, 0x9b, + 0xc3, 0x1e, 0xf4, 0xc6, 0x61, 0x77, 0x2b, 0x66, 0xd1, 0x5f, 0xdd, 0xf0, 0xad, 0x38, 0x18, 0x85, + 0x20, 0x3b, 0x02, 0xd2, 0x3b, 0x17, 0x27, 0x4c, 0x1b, 0x2f, 0x40, 0xd9, 0xe9, 0xc4, 0x41, 0x8b, + 0x4d, 0x13, 0xff, 0x3c, 0x25, 0x23, 0x31, 0x9e, 0x20, 0x50, 0xd3, 0xd8, 0x9f, 0x1d, 0x85, 0x4c, + 0x59, 0x04, 0x39, 0x30, 0x2f, 0x97, 0x59, 0xf9, 0x5e, 0x2e, 0x53, 0x9d, 0xe9, 0x77, 0xc1, 0x8c, + 0xd4, 0x61, 0xb4, 0xdd, 0x70, 0xa2, 0x64, 0xeb, 0xbf, 0x9c, 0x4c, 0xd3, 0x26, 0x03, 0xde, 0x3f, + 0x9c, 0xfb, 0xa9, 0xe3, 0xb9, 0x92, 0x6c, 0xad, 0x2e, 0x88, 0x1a, 0x51, 0x2d, 0x9a, 0xf3, 0x40, + 0xc1, 0xdf, 0x74, 0x26, 0x8b, 0x47, 0x84, 0xc5, 0x1f, 0xb3, 0x44, 0x2d, 0x1d, 0xd2, 0xa8, 0xd3, + 0x8c, 0xe5, 0x6a, 0x78, 0x39, 0xc7, 0x5d, 0x26, 0x18, 0xeb, 0xa2, 0x3a, 0xf1, 0x1b, 0x0d, 0xa1, + 0xe4, 0xbd, 0x50, 0x8e, 0x62, 0x27, 0x8c, 0x1f, 0xb2, 0x04, 0x47, 0x4d, 0xfa, 0x56, 0xc2, 0x04, + 0x35, 0x3f, 0xf2, 0x0a, 0x40, 0xcd, 0xf3, 0xbd, 0xa8, 0xf1, 0x90, 0x27, 0x92, 0xbc, 0xe3, 0x57, + 0x15, 0x07, 0x34, 0xb8, 0x31, 0xcd, 0xca, 0xd7, 0xb6, 0xc8, 0xa1, 0x96, 0xb8, 0xe9, 0x54, 0x9a, + 0x15, 0x15, 0x06, 0x0d, 0x2a, 0xfb, 0xc3, 0x70, 0x26, 0x7b, 0xb1, 0x5b, 0x46, 0x97, 0xf5, 0x30, + 0xe8, 0xb4, 0xb3, 0xa6, 0x83, 0x5f, 0xfc, 0x45, 0x81, 0x63, 0xa6, 0x63, 0xd7, 0xf3, 0xab, 0x59, + 0xd3, 0x71, 0xd3, 0xf3, 0xab, 0xc8, 0x31, 0xc7, 0xb8, 0x75, 0xf7, 0x07, 0x16, 0x5c, 0x3a, 0xea, + 0xfe, 0x39, 0x79, 0x0a, 0x46, 0xf6, 0x9d, 0xd0, 0x97, 0x17, 0x7a, 0xb8, 0xee, 0xb8, 0xe3, 0x84, + 0x3e, 0x72, 0x28, 0xe9, 0xc2, 0x98, 0x28, 0x3b, 0x94, 0xce, 0xf0, 0xcb, 0xf9, 0xde, 0x86, 0x67, + 0xe1, 0x99, 0xb2, 0x32, 0xa2, 0xe4, 0x11, 0xa5, 0x40, 0xfb, 0xdb, 0x16, 0x90, 0x8d, 0x3d, 0x1a, + 0x86, 0x5e, 0xd5, 0x28, 0x94, 0x24, 0xcf, 0xc3, 0xe4, 0xdd, 0xad, 0x8d, 0xf5, 0xcd, 0xc0, 0xf3, + 0xf9, 0x5d, 0x10, 0xa3, 0x3c, 0xe7, 0x86, 0x01, 0xc7, 0x14, 0x15, 0x0b, 0x70, 0xee, 0xbe, 0xc6, + 0xcc, 0xdd, 0x95, 0x83, 0x76, 0x48, 0xa3, 0x48, 0xbd, 0x21, 0x21, 0x03, 0x9c, 0x1b, 0x2f, 0x67, + 0x90, 0xd8, 0x4b, 0x4f, 0x36, 0xe0, 0x5c, 0x8b, 0x27, 0xff, 0xaa, 0xdc, 0xca, 0x47, 0x22, 0x13, + 0x18, 0x26, 0xc5, 0xf6, 0x6f, 0xb8, 0x77, 0x38, 0x77, 0x6e, 0xad, 0x1f, 0x01, 0xf6, 0x6f, 0x67, + 0x7f, 0xa5, 0x00, 0x13, 0xc6, 0x1b, 0x0e, 0xc7, 0xf0, 0x67, 0x32, 0xcf, 0x4e, 0x14, 0x8e, 0xf9, + 0xec, 0xc4, 0x33, 0x50, 0x6a, 0x07, 0x4d, 0xcf, 0xf5, 0xd4, 0xcd, 0x80, 0x49, 0x7e, 0xfe, 0x26, + 0x61, 0xa8, 0xb0, 0x64, 0x1f, 0xca, 0xea, 0x32, 0xb6, 0xac, 0x15, 0xcc, 0xcb, 0xa3, 0x53, 0x9b, + 0x57, 0x5f, 0xb2, 0xd6, 0xb2, 0x88, 0x0d, 0x63, 0x7c, 0xe5, 0x27, 0xa7, 0x0b, 0xbc, 0xf8, 0x84, + 0x6f, 0x89, 0x08, 0x25, 0xc6, 0xfe, 0xe7, 0x51, 0x28, 0x23, 0x6d, 0x07, 0x4b, 0x21, 0xad, 0x46, + 0xe4, 0x8d, 0x50, 0xec, 0x84, 0x4d, 0x39, 0x59, 0x2a, 0xf5, 0x74, 0x0b, 0x57, 0x91, 0xc1, 0x53, + 0xe6, 0xa6, 0x70, 0xa2, 0x53, 0xca, 0xe2, 0x91, 0xa7, 0x94, 0x2f, 0xc2, 0x54, 0x14, 0x35, 0x36, + 0x43, 0x6f, 0xcf, 0x89, 0xd9, 0x22, 0x96, 0x79, 0x1a, 0x7d, 0x2c, 0xb4, 0x75, 0x5d, 0x23, 0x31, + 0x4d, 0x4b, 0xae, 0xc1, 0x8c, 0x3e, 0x2b, 0xa4, 0x61, 0xcc, 0xd3, 0x32, 0x22, 0x83, 0xa3, 0x4e, + 0x65, 0xf4, 0xe9, 0xa2, 0x24, 0xc0, 0xde, 0x36, 0x64, 0x19, 0x4e, 0xa7, 0x80, 0xac, 0x23, 0x22, + 0xbd, 0xa3, 0xea, 0x10, 0x52, 0x7c, 0x58, 0x5f, 0x7a, 0x5a, 0x90, 0x35, 0x38, 0x23, 0xbe, 0x2f, + 0xbf, 0xc4, 0xaf, 0x46, 0x34, 0xce, 0x19, 0xfd, 0x90, 0x64, 0x74, 0xe6, 0x5a, 0x2f, 0x09, 0xf6, + 0x6b, 0xc7, 0x56, 0xa8, 0x02, 0xaf, 0x2c, 0x4b, 0x4d, 0xa9, 0x56, 0xa8, 0x62, 0xb3, 0x52, 0x45, + 0x93, 0x8e, 0xbc, 0x07, 0x9e, 0xd4, 0x3f, 0x45, 0x56, 0x4f, 0xb8, 0x0f, 0xcb, 0xb2, 0x0c, 0x43, + 0xdd, 0x72, 0xba, 0xd6, 0x97, 0xac, 0x8a, 0x83, 0xda, 0x93, 0x1d, 0xb8, 0xa0, 0x50, 0x57, 0x98, + 0x3a, 0x68, 0x87, 0x5e, 0x44, 0x2b, 0x4e, 0x44, 0x6f, 0x85, 0x4d, 0x5e, 0xb8, 0x51, 0xd6, 0x0f, + 0x51, 0x5c, 0xf3, 0xe2, 0xeb, 0xfd, 0x28, 0x71, 0x15, 0x1f, 0xc0, 0x85, 0x79, 0x2b, 0xd4, 0x77, + 0x76, 0x9a, 0x74, 0x63, 0x69, 0x85, 0x97, 0x73, 0x18, 0xde, 0xca, 0x95, 0x04, 0x81, 0x9a, 0x46, + 0x85, 0x06, 0x93, 0x03, 0x43, 0x83, 0x6f, 0x59, 0x30, 0xa5, 0x16, 0xfb, 0x63, 0xc8, 0xc1, 0x35, + 0xd3, 0x39, 0xb8, 0x6b, 0xc3, 0xba, 0x89, 0xb2, 0xe7, 0x03, 0x02, 0xb9, 0xef, 0x96, 0x01, 0xf8, + 0xd3, 0x3e, 0x1e, 0x2f, 0x13, 0xbe, 0x04, 0x23, 0x21, 0x6d, 0x07, 0x59, 0xcd, 0xc7, 0xcf, 0x0f, + 0x38, 0xe6, 0xfb, 0x77, 0x3b, 0xf7, 0x3b, 0xb5, 0x1e, 0xfd, 0xbf, 0x3d, 0xb5, 0xde, 0x82, 0x73, + 0x9e, 0x1f, 0x51, 0xb7, 0x13, 0x4a, 0xcb, 0x79, 0x3d, 0x88, 0x94, 0x76, 0x28, 0x55, 0xde, 0x28, + 0x19, 0x9d, 0x5b, 0xe9, 0x47, 0x84, 0xfd, 0xdb, 0xb2, 0x29, 0x4d, 0x10, 0xf2, 0x3e, 0x92, 0x4e, + 0x2f, 0x48, 0x38, 0x2a, 0x0a, 0xbd, 0x21, 0x56, 0x6b, 0xc9, 0x85, 0xa3, 0xcc, 0x86, 0x58, 0xbd, + 0xba, 0x85, 0x9a, 0xa6, 0xbf, 0x56, 0x2c, 0xe7, 0xa4, 0x15, 0xe1, 0xc4, 0x5a, 0x31, 0xd9, 0x9f, + 0x13, 0x03, 0x1f, 0x82, 0x48, 0x8c, 0xf5, 0xe4, 0x40, 0x63, 0xfd, 0x12, 0x4c, 0x7b, 0x7e, 0x83, + 0x86, 0x5e, 0x4c, 0xab, 0x7c, 0x2f, 0xcc, 0x4e, 0xf1, 0x89, 0x50, 0x99, 0xaf, 0x95, 0x14, 0x16, + 0x33, 0xd4, 0x69, 0xa5, 0x32, 0x7d, 0x0c, 0xa5, 0x32, 0x40, 0x95, 0x9f, 0xca, 0x47, 0x95, 0x9f, + 0x1e, 0x5e, 0x95, 0xcf, 0x3c, 0x52, 0x55, 0x4e, 0x72, 0x51, 0xe5, 0x4f, 0xc3, 0x68, 0x3b, 0x0c, + 0x0e, 0xba, 0xb3, 0x67, 0xd2, 0xee, 0xf9, 0x26, 0x03, 0xa2, 0xc0, 0x99, 0xc5, 0x7b, 0x67, 0x1f, + 0x5c, 0xbc, 0x67, 0xbf, 0x5e, 0x80, 0x73, 0x5a, 0xd3, 0xb1, 0xf5, 0xe5, 0xd5, 0xd8, 0x5e, 0xe7, + 0xb7, 0x42, 0x45, 0xc1, 0x88, 0x91, 0x74, 0xd5, 0xf9, 0x5b, 0x85, 0x41, 0x83, 0x8a, 0xe7, 0x2e, + 0x69, 0xc8, 0x4b, 0x8e, 0xb3, 0x6a, 0x70, 0x49, 0xc2, 0x51, 0x51, 0xf0, 0x77, 0x01, 0x69, 0x18, + 0xcb, 0xf3, 0xa0, 0x6c, 0x35, 0xd5, 0x92, 0x46, 0xa1, 0x49, 0xc7, 0xdc, 0x45, 0x37, 0xd9, 0x82, + 0x4c, 0x15, 0x4e, 0x0a, 0x77, 0x51, 0xed, 0x3a, 0x85, 0x4d, 0xba, 0xc3, 0x93, 0xd4, 0xa3, 0xbd, + 0xdd, 0xe1, 0x59, 0x08, 0x45, 0x61, 0xff, 0xa7, 0x05, 0x6f, 0xe8, 0x3b, 0x15, 0x8f, 0xc1, 0xbc, + 0x1d, 0xa4, 0xcd, 0xdb, 0xd6, 0xf0, 0xe6, 0xad, 0x67, 0x14, 0x03, 0x4c, 0xdd, 0x5f, 0x59, 0x30, + 0xad, 0xe9, 0x1f, 0xc3, 0x50, 0xbd, 0x5c, 0x5f, 0xf8, 0xd3, 0x5d, 0x17, 0xa5, 0xb0, 0xa9, 0xb1, + 0x7d, 0x8b, 0x8f, 0x4d, 0x04, 0x73, 0x8b, 0x6e, 0xf2, 0x84, 0xce, 0x11, 0x41, 0x4c, 0x17, 0xc6, + 0xf8, 0x23, 0x04, 0x51, 0x3e, 0x41, 0x65, 0x5a, 0x3e, 0x3f, 0x7d, 0xd2, 0x41, 0x25, 0xff, 0x19, + 0xa1, 0x14, 0xc8, 0x0b, 0xe2, 0xbd, 0x88, 0xe9, 0xcb, 0xaa, 0x4c, 0xf7, 0xea, 0x82, 0x78, 0x09, + 0x47, 0x45, 0x61, 0xb7, 0x60, 0x36, 0xcd, 0x7c, 0x99, 0xd6, 0x78, 0xee, 0xee, 0x58, 0xc3, 0x5c, + 0x80, 0xb2, 0xc3, 0x5b, 0xad, 0x76, 0x9c, 0xec, 0x3b, 0x3a, 0x8b, 0x09, 0x02, 0x35, 0x8d, 0xfd, + 0x5b, 0x16, 0x9c, 0xe9, 0x33, 0x98, 0x1c, 0xd3, 0xdc, 0xb1, 0xd6, 0x02, 0x03, 0xde, 0x36, 0xaa, + 0xd2, 0x9a, 0x93, 0x64, 0x87, 0x0c, 0xad, 0xb6, 0x2c, 0xc0, 0x98, 0xe0, 0xed, 0x7f, 0xb1, 0xe0, + 0x54, 0xba, 0xaf, 0x11, 0xb9, 0x01, 0x44, 0x0c, 0x66, 0xd9, 0x8b, 0xdc, 0x60, 0x8f, 0x86, 0x5d, + 0x36, 0x72, 0xd1, 0xeb, 0x0b, 0x92, 0x13, 0x59, 0xec, 0xa1, 0xc0, 0x3e, 0xad, 0x78, 0xdd, 0x71, + 0x55, 0xcd, 0x76, 0xb2, 0x52, 0x6e, 0xe7, 0xb9, 0x52, 0xf4, 0xc7, 0x34, 0x23, 0x68, 0x25, 0x12, + 0x4d, 0xf9, 0xf6, 0xb7, 0x47, 0x40, 0x9d, 0x83, 0xf1, 0x3c, 0x44, 0x4e, 0x59, 0x9c, 0xd4, 0x63, + 0x4b, 0xc5, 0x13, 0x3c, 0xb6, 0x34, 0xf2, 0xa0, 0x1c, 0x81, 0x78, 0xf9, 0x47, 0xfb, 0xa2, 0x86, + 0xd2, 0xdf, 0xd6, 0x28, 0x34, 0xe9, 0x58, 0x4f, 0x9a, 0xde, 0x1e, 0x15, 0x8d, 0xc6, 0xd2, 0x3d, + 0x59, 0x4d, 0x10, 0xa8, 0x69, 0x58, 0x4f, 0xaa, 0x5e, 0xad, 0x26, 0x23, 0x45, 0xd5, 0x13, 0x36, + 0x3b, 0xc8, 0x31, 0x8c, 0xa2, 0x11, 0x04, 0xbb, 0xd2, 0xff, 0x53, 0x14, 0xd7, 0x83, 0x60, 0x17, + 0x39, 0x86, 0x79, 0x2c, 0x7e, 0x10, 0xb6, 0x9c, 0xa6, 0xf7, 0x01, 0x5a, 0x55, 0x52, 0xa4, 0xdf, + 0xa7, 0x3c, 0x96, 0xf5, 0x5e, 0x12, 0xec, 0xd7, 0x8e, 0xad, 0xc0, 0x76, 0x48, 0xab, 0x9e, 0x1b, + 0x9b, 0xdc, 0x20, 0xbd, 0x02, 0x37, 0x7b, 0x28, 0xb0, 0x4f, 0x2b, 0xb2, 0x08, 0xa7, 0x92, 0x73, + 0xcc, 0xa4, 0x7e, 0x45, 0x38, 0x83, 0xca, 0x0f, 0xc7, 0x34, 0x1a, 0xb3, 0xf4, 0x4c, 0xdb, 0xb4, + 0x64, 0x15, 0x11, 0x77, 0x13, 0x0d, 0x6d, 0x93, 0x54, 0x17, 0xa1, 0xa2, 0xb0, 0x3f, 0x56, 0x64, + 0xd6, 0x71, 0xc0, 0xcd, 0xe0, 0xc7, 0x96, 0x35, 0x4c, 0xaf, 0xc8, 0x91, 0x63, 0xac, 0xc8, 0xe7, + 0x61, 0xf2, 0x6e, 0x14, 0xf8, 0x2a, 0x23, 0x37, 0x3a, 0x30, 0x23, 0x67, 0x50, 0xf5, 0xcf, 0xc8, + 0x8d, 0xe5, 0x95, 0x91, 0x1b, 0x7f, 0xc8, 0x8c, 0xdc, 0x9f, 0x8e, 0xc2, 0x79, 0x75, 0x96, 0x4d, + 0xe3, 0xfd, 0x20, 0xdc, 0xf5, 0xfc, 0x3a, 0x3f, 0xff, 0xfd, 0xb2, 0x05, 0x93, 0x62, 0xbf, 0xc8, + 0x47, 0x19, 0xc4, 0x79, 0x67, 0x2d, 0xa7, 0x7b, 0x73, 0x29, 0x61, 0xf3, 0xdb, 0x86, 0xa0, 0xcc, + 0x0b, 0x19, 0x26, 0x0a, 0x53, 0x3d, 0x22, 0x1f, 0x02, 0x48, 0xde, 0xfc, 0xaa, 0xe5, 0xf4, 0xf2, + 0x59, 0xd2, 0x3f, 0xa4, 0x35, 0xed, 0x9b, 0x6e, 0x2b, 0x21, 0x68, 0x08, 0x24, 0xaf, 0x5b, 0xea, + 0x9e, 0x8a, 0x38, 0xcd, 0x7a, 0xf5, 0x91, 0xcc, 0xcd, 0x71, 0xae, 0xad, 0x20, 0x8c, 0x7b, 0x7e, + 0x9d, 0xad, 0x13, 0x99, 0xc4, 0x7c, 0x4b, 0xbf, 0xda, 0x89, 0xd5, 0xc0, 0xa9, 0x56, 0x9c, 0xa6, + 0xe3, 0xbb, 0x34, 0x5c, 0x11, 0xe4, 0xe6, 0xc3, 0x4f, 0x1c, 0x80, 0x09, 0xa3, 0x9e, 0x8b, 0xa1, + 0xa3, 0xc7, 0xb9, 0x18, 0x7a, 0xe1, 0xdd, 0x30, 0xd3, 0xf3, 0x31, 0x4f, 0x74, 0x6d, 0xe5, 0xe1, + 0x6f, 0xbc, 0xd8, 0x7f, 0x38, 0xa6, 0x8d, 0xd6, 0x7a, 0x50, 0x15, 0xd7, 0x13, 0x43, 0xfd, 0x45, + 0xa5, 0xef, 0x99, 0xe3, 0x12, 0x31, 0x1e, 0x8f, 0x52, 0x40, 0x34, 0x45, 0xb2, 0x35, 0xda, 0x76, + 0x42, 0xea, 0x3f, 0xea, 0x35, 0xba, 0xa9, 0x84, 0xa0, 0x21, 0x90, 0x34, 0x52, 0xc7, 0xad, 0x57, + 0x87, 0x3f, 0x6e, 0x65, 0xee, 0x70, 0xdf, 0x6b, 0x64, 0x9f, 0xb3, 0x60, 0xda, 0x4f, 0xad, 0x5c, + 0x79, 0xe4, 0xb6, 0xfd, 0x28, 0x76, 0x85, 0xb8, 0x16, 0x9e, 0x86, 0x61, 0x46, 0x7e, 0x3f, 0x93, + 0x36, 0x7a, 0x42, 0x93, 0xa6, 0xef, 0x39, 0x8f, 0x0d, 0xba, 0xe7, 0x4c, 0x7c, 0xf5, 0xc2, 0xc1, + 0x78, 0xee, 0x2f, 0x1c, 0x40, 0x9f, 0xd7, 0x0d, 0xee, 0x40, 0xd9, 0x0d, 0xa9, 0x13, 0x3f, 0xe4, + 0x65, 0x77, 0xfe, 0x5c, 0xdf, 0x52, 0xc2, 0x00, 0x35, 0x2f, 0xfb, 0xcf, 0x8b, 0x70, 0x3a, 0x99, + 0x91, 0xe4, 0x28, 0x8a, 0xd9, 0x47, 0x21, 0x57, 0x3b, 0xb7, 0xca, 0x3e, 0x5e, 0x4f, 0x10, 0xa8, + 0x69, 0x98, 0x3f, 0xd6, 0x89, 0xe8, 0x46, 0x9b, 0xfa, 0xab, 0xde, 0x4e, 0xc4, 0x67, 0xdc, 0x28, + 0x5f, 0xbb, 0xa5, 0x51, 0x68, 0xd2, 0x31, 0x67, 0x5c, 0xf8, 0xc5, 0x51, 0xf6, 0x64, 0x57, 0xfa, + 0xdb, 0x98, 0xe0, 0xc9, 0x97, 0xfa, 0x3e, 0x55, 0x92, 0x4f, 0x4d, 0x43, 0xcf, 0x09, 0xdc, 0x09, + 0xdf, 0x28, 0xf9, 0xac, 0x05, 0xa7, 0x76, 0x53, 0xb5, 0x33, 0x89, 0x4a, 0x1e, 0xb2, 0xca, 0x33, + 0x5d, 0x90, 0xa3, 0x97, 0x70, 0x1a, 0x1e, 0x61, 0x56, 0xba, 0xfd, 0xef, 0x16, 0x98, 0xea, 0xe9, + 0x78, 0x9e, 0x95, 0xf1, 0xf8, 0x54, 0xe1, 0x88, 0xc7, 0xa7, 0x12, 0x27, 0xac, 0x78, 0x3c, 0xa7, + 0x7f, 0xe4, 0x04, 0x4e, 0xff, 0xe8, 0x40, 0xaf, 0xed, 0x8d, 0x50, 0xec, 0x78, 0x55, 0xe9, 0xb7, + 0xeb, 0xc3, 0xb0, 0x95, 0x65, 0x64, 0x70, 0xfb, 0xf7, 0x47, 0x75, 0x9c, 0x2e, 0x8f, 0xe2, 0x7f, + 0x20, 0x86, 0x5d, 0x53, 0x45, 0xbb, 0x62, 0xe4, 0xeb, 0x3d, 0x45, 0xbb, 0xef, 0x3a, 0x79, 0xa5, + 0x85, 0x98, 0xa0, 0x41, 0x35, 0xbb, 0xe3, 0x47, 0x94, 0x59, 0xdc, 0x85, 0x12, 0x0b, 0x6d, 0x78, + 0xc2, 0xad, 0x94, 0xea, 0x54, 0xe9, 0xba, 0x84, 0xdf, 0x3f, 0x9c, 0x7b, 0xe7, 0xc9, 0xbb, 0x95, + 0xb4, 0x46, 0xc5, 0x9f, 0x44, 0x50, 0x66, 0x7f, 0xf3, 0x8a, 0x10, 0x19, 0x34, 0xdd, 0x52, 0xba, + 0x28, 0x41, 0xe4, 0x52, 0x6e, 0xa2, 0xe5, 0x10, 0x1f, 0xca, 0xfc, 0x99, 0x24, 0x2e, 0x54, 0xc4, + 0x56, 0x9b, 0xaa, 0x2e, 0x23, 0x41, 0xdc, 0x3f, 0x9c, 0x7b, 0xf1, 0xe4, 0x42, 0x55, 0x73, 0xd4, + 0x22, 0xec, 0xbf, 0x2f, 0xea, 0xb5, 0x2b, 0x6b, 0xb5, 0x7f, 0x20, 0xd6, 0xee, 0x0b, 0x99, 0xb5, + 0x7b, 0xa9, 0x67, 0xed, 0x4e, 0xeb, 0xa7, 0x84, 0x52, 0xab, 0xf1, 0x71, 0x1b, 0xd8, 0xa3, 0xe3, + 0x78, 0xee, 0x59, 0xbc, 0xd6, 0xf1, 0x42, 0x1a, 0x6d, 0x86, 0x1d, 0xdf, 0xf3, 0xeb, 0xf2, 0x41, + 0x49, 0xc3, 0xb3, 0x48, 0xa1, 0x31, 0x4b, 0x6f, 0x7f, 0x85, 0x9f, 0x77, 0x1a, 0xc5, 0x65, 0xec, + 0x2b, 0x37, 0xf9, 0x4b, 0x53, 0xa2, 0x9a, 0x55, 0x7d, 0x65, 0xf1, 0xbc, 0x94, 0xc0, 0x91, 0x7d, + 0x18, 0xdf, 0x11, 0xaf, 0x5d, 0xe4, 0x73, 0xbd, 0x4a, 0x3e, 0x9d, 0xc1, 0x2f, 0xb2, 0x26, 0xef, + 0x68, 0xdc, 0xd7, 0x7f, 0x62, 0x22, 0xcd, 0xfe, 0x95, 0x22, 0x9c, 0xca, 0xbc, 0x83, 0xc4, 0x02, + 0xfe, 0xe4, 0xd1, 0xab, 0x6c, 0x76, 0x5e, 0x3d, 0xcb, 0xac, 0x28, 0xc8, 0xfb, 0x01, 0xaa, 0xb4, + 0xdd, 0x0c, 0xba, 0xdc, 0x71, 0x19, 0x39, 0xb1, 0xe3, 0xa2, 0x7c, 0xdd, 0x65, 0xc5, 0x05, 0x0d, + 0x8e, 0xb2, 0x84, 0x77, 0x54, 0xbc, 0xe5, 0x91, 0x2e, 0xe1, 0x35, 0x6e, 0x19, 0x8e, 0x3d, 0xde, + 0x5b, 0x86, 0x1e, 0x9c, 0x12, 0x5d, 0x54, 0x25, 0x5c, 0x0f, 0x51, 0xa9, 0x75, 0x86, 0xad, 0xa8, + 0xe5, 0x34, 0x1b, 0xcc, 0xf2, 0xb5, 0x3f, 0x53, 0x60, 0xee, 0x9b, 0x98, 0xec, 0xb5, 0x24, 0x39, + 0xfe, 0x66, 0x18, 0x73, 0x3a, 0x71, 0x23, 0xe8, 0x79, 0x7d, 0x64, 0x91, 0x43, 0x51, 0x62, 0xc9, + 0x2a, 0x8c, 0x54, 0x9d, 0x38, 0xf9, 0xb7, 0x02, 0x27, 0xe9, 0x9c, 0xce, 0x84, 0x39, 0x31, 0x45, + 0xce, 0x85, 0x3c, 0x05, 0x23, 0xb1, 0x53, 0x4f, 0xbd, 0x1e, 0xba, 0xed, 0xd4, 0x23, 0xe4, 0x50, + 0xd3, 0xba, 0x8c, 0x1c, 0x61, 0x5d, 0x5e, 0x34, 0xfe, 0xe1, 0x85, 0x71, 0xea, 0xd2, 0xfb, 0x4f, + 0x2a, 0xc4, 0xa5, 0x82, 0x14, 0xad, 0xfd, 0x63, 0x30, 0x69, 0xfe, 0x13, 0x8b, 0x63, 0xdd, 0x73, + 0xb2, 0xff, 0x69, 0x04, 0xa6, 0x52, 0x65, 0x7e, 0xa9, 0x55, 0x6e, 0x1d, 0xb9, 0xca, 0xf9, 0x79, + 0x5a, 0xc7, 0xa7, 0xb2, 0x88, 0xd3, 0x38, 0x4f, 0xeb, 0xf8, 0x14, 0x05, 0x8e, 0x7d, 0x95, 0x6a, + 0xd8, 0xc5, 0x8e, 0x2f, 0xb3, 0xf2, 0xea, 0xab, 0x2c, 0x73, 0x28, 0x4a, 0x2c, 0x0b, 0x60, 0x27, + 0x23, 0xae, 0x14, 0x85, 0x8e, 0x90, 0xbb, 0xe6, 0x46, 0x1e, 0x2f, 0xb6, 0xc9, 0x92, 0x56, 0x1e, + 0xd0, 0x9b, 0x10, 0x4c, 0x49, 0x24, 0x1f, 0xb7, 0xcc, 0xb7, 0xea, 0xc6, 0xf2, 0x38, 0x4d, 0xca, + 0x56, 0x51, 0x8a, 0x1d, 0xf4, 0xe0, 0x27, 0xeb, 0x22, 0xb5, 0x81, 0xc7, 0x1f, 0xcd, 0x06, 0x86, + 0x3e, 0x9b, 0xf7, 0xad, 0x50, 0x6e, 0x39, 0xbe, 0x57, 0xa3, 0x51, 0x2c, 0xfe, 0x01, 0x4d, 0x59, + 0x44, 0x4f, 0x6b, 0x09, 0x10, 0x35, 0x9e, 0xff, 0x9b, 0x27, 0x3e, 0x30, 0x11, 0xc4, 0x94, 0x8d, + 0x7f, 0xf3, 0xa4, 0xc1, 0x68, 0xd2, 0xd8, 0xbf, 0x63, 0xc1, 0xb9, 0xbe, 0x93, 0xf1, 0xfd, 0x9b, + 0xfe, 0xb4, 0x7f, 0xb7, 0x00, 0x67, 0xfa, 0x94, 0xc1, 0x92, 0xee, 0x23, 0x7b, 0xd2, 0x50, 0xd6, + 0xd9, 0x4e, 0x0d, 0x5c, 0x1b, 0x27, 0x33, 0x43, 0xda, 0x14, 0x14, 0x1f, 0xab, 0x29, 0xb0, 0xbf, + 0x52, 0x00, 0xe3, 0xf1, 0x4d, 0xf2, 0x61, 0xb3, 0xe2, 0xdb, 0xca, 0xab, 0x3a, 0x59, 0x30, 0x57, + 0x15, 0xe3, 0x62, 0xd6, 0xfa, 0x15, 0x90, 0x67, 0xd7, 0x6b, 0xe1, 0xe8, 0xf5, 0x4a, 0x9a, 0x49, + 0x69, 0x7d, 0x31, 0xff, 0xd2, 0xfa, 0x72, 0x4f, 0x59, 0xfd, 0x2f, 0x59, 0x62, 0xa5, 0x65, 0x86, + 0xa4, 0x35, 0xac, 0xf5, 0x00, 0x0d, 0xfb, 0x36, 0x28, 0x45, 0xb4, 0x59, 0x63, 0x9e, 0x9d, 0xd4, + 0xc4, 0xfa, 0xad, 0x6f, 0x09, 0x47, 0x45, 0xc1, 0xef, 0xed, 0x36, 0x9b, 0xc1, 0xfe, 0x95, 0x56, + 0x3b, 0xee, 0x4a, 0x9d, 0xac, 0xef, 0xed, 0x2a, 0x0c, 0x1a, 0x54, 0xf6, 0x7f, 0x58, 0xe2, 0x73, + 0x4a, 0x1f, 0xfd, 0x85, 0xcc, 0x7d, 0xca, 0xe3, 0xbb, 0xb7, 0x3f, 0x07, 0xe0, 0xaa, 0xf7, 0x10, + 0xf2, 0x79, 0x93, 0x53, 0xbf, 0xaf, 0x60, 0x3e, 0x14, 0x99, 0xc0, 0xd0, 0x90, 0x97, 0xda, 0x3c, + 0xc5, 0xa3, 0x36, 0x8f, 0xfd, 0xaf, 0x16, 0xa4, 0x8c, 0x05, 0x69, 0xc3, 0x28, 0xeb, 0x41, 0x37, + 0x9f, 0xd7, 0x1b, 0x4c, 0xd6, 0x6c, 0x63, 0xc9, 0x65, 0xc1, 0xff, 0x44, 0x21, 0x88, 0x34, 0xa5, + 0x77, 0x5e, 0xc8, 0xe3, 0x85, 0x11, 0x53, 0x20, 0xf3, 0xef, 0xe5, 0xbf, 0xf4, 0x50, 0x9e, 0xbe, + 0xfd, 0x02, 0xcc, 0xf4, 0x74, 0x8a, 0xdf, 0x86, 0x0a, 0x92, 0x27, 0x2b, 0x8c, 0x15, 0xc8, 0xef, + 0x66, 0xa2, 0xc0, 0x31, 0x07, 0xff, 0x74, 0x96, 0x3d, 0xf9, 0xa2, 0x05, 0x33, 0x51, 0x96, 0xdf, + 0xa3, 0x9a, 0x3b, 0x95, 0xb9, 0xea, 0x41, 0x61, 0x6f, 0x27, 0xec, 0xff, 0x91, 0xea, 0x49, 0xfc, + 0x0b, 0x34, 0x65, 0x5c, 0xac, 0x81, 0xc6, 0x85, 0x6d, 0x31, 0xb7, 0x41, 0xab, 0x9d, 0x66, 0x4f, + 0x6d, 0xce, 0x96, 0x84, 0xa3, 0xa2, 0x48, 0xbd, 0xcd, 0x57, 0x3c, 0xf2, 0x6d, 0xbe, 0xe7, 0x61, + 0xd2, 0x7c, 0x96, 0x85, 0xa7, 0xd0, 0xe4, 0xe1, 0x83, 0xf9, 0x82, 0x0b, 0xa6, 0xa8, 0x32, 0x6f, + 0xbb, 0x8d, 0x1e, 0xf9, 0xb6, 0xdb, 0x33, 0x50, 0x92, 0xef, 0x94, 0x25, 0xf9, 0x5d, 0x51, 0xf8, + 0x23, 0x61, 0xa8, 0xb0, 0x4c, 0x41, 0xb4, 0x1c, 0xbf, 0xe3, 0x34, 0xd9, 0x0c, 0xc9, 0x7a, 0x40, + 0xb5, 0xb3, 0xd6, 0x14, 0x06, 0x0d, 0x2a, 0x36, 0xe2, 0xd8, 0x6b, 0xd1, 0x57, 0x02, 0x3f, 0xc9, + 0x8c, 0xa8, 0x11, 0x6f, 0x4b, 0x38, 0x2a, 0x0a, 0xfb, 0x1f, 0x2d, 0xc8, 0x3e, 0xb2, 0x94, 0xaa, + 0x41, 0xb4, 0x8e, 0xac, 0x41, 0x4c, 0xd7, 0x57, 0x15, 0x8e, 0x55, 0x5f, 0x65, 0x96, 0x3e, 0x15, + 0x1f, 0x58, 0xfa, 0xf4, 0x26, 0x7d, 0xa7, 0x5e, 0xd4, 0x48, 0x4d, 0xf4, 0xbb, 0x4f, 0x4f, 0x6c, + 0x18, 0x73, 0x1d, 0x55, 0xe2, 0x3d, 0x29, 0xdc, 0xaa, 0xa5, 0x45, 0x4e, 0x24, 0x31, 0x95, 0xf9, + 0xaf, 0x7d, 0xe7, 0xe2, 0x13, 0x5f, 0xff, 0xce, 0xc5, 0x27, 0xbe, 0xf9, 0x9d, 0x8b, 0x4f, 0x7c, + 0xf4, 0xde, 0x45, 0xeb, 0x6b, 0xf7, 0x2e, 0x5a, 0x5f, 0xbf, 0x77, 0xd1, 0xfa, 0xe6, 0xbd, 0x8b, + 0xd6, 0xb7, 0xef, 0x5d, 0xb4, 0x3e, 0xf7, 0x77, 0x17, 0x9f, 0x78, 0xa5, 0x94, 0xac, 0xec, 0xff, + 0x0d, 0x00, 0x00, 0xff, 0xff, 0x55, 0xf2, 0x31, 0x9f, 0x7e, 0x77, 0x00, 0x00, } func (m *AWSAuthConfig) Marshal() (dAtA []byte, err error) { @@ -3779,9 +3812,14 @@ func (m *ApplicationSourceHelm) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x2a } } - i -= len(m.Values) - copy(dAtA[i:], m.Values) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Values))) + { + size, err := m.Values.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } i-- dAtA[i] = 0x22 i -= len(m.ReleaseName) @@ -5715,6 +5753,46 @@ func (m *KustomizeOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *Object) 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 *Object) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Object) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Raw != nil { + { + size, err := m.Raw.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Values) + copy(dAtA[i:], m.Values) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Values))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *Operation) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -8393,7 +8471,7 @@ func (m *ApplicationSourceHelm) Size() (n int) { } l = len(m.ReleaseName) n += 1 + l + sovGenerated(uint64(l)) - l = len(m.Values) + l = m.Values.Size() n += 1 + l + sovGenerated(uint64(l)) if len(m.FileParameters) > 0 { for _, e := range m.FileParameters { @@ -9128,6 +9206,21 @@ func (m *KustomizeOptions) Size() (n int) { return n } +func (m *Object) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Values) + n += 1 + l + sovGenerated(uint64(l)) + if m.Raw != nil { + l = m.Raw.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *Operation) Size() (n int) { if m == nil { return 0 @@ -10257,7 +10350,7 @@ func (this *ApplicationSourceHelm) String() string { `ValueFiles:` + fmt.Sprintf("%v", this.ValueFiles) + `,`, `Parameters:` + repeatedStringForParameters + `,`, `ReleaseName:` + fmt.Sprintf("%v", this.ReleaseName) + `,`, - `Values:` + fmt.Sprintf("%v", this.Values) + `,`, + `Values:` + strings.Replace(strings.Replace(this.Values.String(), "Object", "Object", 1), `&`, ``, 1) + `,`, `FileParameters:` + repeatedStringForFileParameters + `,`, `Version:` + fmt.Sprintf("%v", this.Version) + `,`, `PassCredentials:` + fmt.Sprintf("%v", this.PassCredentials) + `,`, @@ -10844,6 +10937,17 @@ func (this *KustomizeOptions) String() string { }, "") return s } +func (this *Object) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Object{`, + `Values:` + fmt.Sprintf("%v", this.Values) + `,`, + `Raw:` + strings.Replace(fmt.Sprintf("%v", this.Raw), "RawExtension", "runtime.RawExtension", 1) + `,`, + `}`, + }, "") + return s +} func (this *Operation) String() string { if this == nil { return "nil" @@ -13702,7 +13806,7 @@ func (m *ApplicationSourceHelm) Unmarshal(dAtA []byte) error { if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Values", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowGenerated @@ -13712,23 +13816,24 @@ func (m *ApplicationSourceHelm) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLengthGenerated } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLengthGenerated } if postIndex > l { return io.ErrUnexpectedEOF } - m.Values = string(dAtA[iNdEx:postIndex]) + if err := m.Values.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 5: if wireType != 2 { @@ -20124,6 +20229,124 @@ func (m *KustomizeOptions) Unmarshal(dAtA []byte) error { } return nil } +func (m *Object) 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: Object: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Object: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Values", 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.Values = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Raw", 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.Raw == nil { + m.Raw = &runtime.RawExtension{} + } + if err := m.Raw.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *Operation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pkg/apis/application/v1alpha1/generated.proto b/pkg/apis/application/v1alpha1/generated.proto index 6cd24cf78f3d5..0a8d624abb0c6 100644 --- a/pkg/apis/application/v1alpha1/generated.proto +++ b/pkg/apis/application/v1alpha1/generated.proto @@ -197,7 +197,8 @@ message ApplicationSourceHelm { optional string releaseName = 3; // Values specifies Helm values to be passed to helm template, typically defined as a block - optional string values = 4; + // +kubebuilder:pruning:PreserveUnknownFields + optional Object values = 4; // FileParameters are file parameters to the helm template repeated HelmFileParameter fileParameters = 5; @@ -691,6 +692,15 @@ message KustomizeOptions { optional string binaryPath = 2; } +// +kubebuilder:validation:Type="" +message Object { + // Values as string if Raw == nil + optional string values = 1; + + // Raw is Values in raw format if Raw != nil + optional k8s.io.apimachinery.pkg.runtime.RawExtension raw = 2; +} + // Operation contains information about a requested or running operation message Operation { // Sync contains parameters for the operation diff --git a/pkg/apis/application/v1alpha1/object_types.go b/pkg/apis/application/v1alpha1/object_types.go new file mode 100644 index 0000000000000..df097c60dee1d --- /dev/null +++ b/pkg/apis/application/v1alpha1/object_types.go @@ -0,0 +1,69 @@ +package v1alpha1 + +import ( + "encoding/json" + + "k8s.io/apimachinery/pkg/runtime" +) + +// +kubebuilder:validation:Type="" +type Object struct { + // Values as string if Raw == nil + Values string `json:"-" protobuf:"bytes,1,opt,name=values"` + // Raw is Values in raw format if Raw != nil + Raw *runtime.RawExtension `json:"-" protobuf:"bytes,2,opt,name=raw"` +} + +// IsEmpty returns true if the Object is empty +func (o Object) IsEmpty() bool { + return o.Raw == nil && o.Values == "" +} + +// Value returns the value +func (o Object) Value() []byte { + if o.Raw != nil { + return o.Raw.Raw + } + return []byte(o.Values) +} + +// MarshalJSON implements the json.Marshaller interface. +func (o Object) MarshalJSON() ([]byte, error) { + if o.Raw == nil { + if o.Values != "" { + return json.Marshal(o.Values) + } + return []byte("null"), nil + } + return o.Raw.MarshalJSON() +} + +// UnmarshalJSON implements the json.Unmarshaller interface. +func (o *Object) UnmarshalJSON(value []byte) error { + var v interface{} + if err := json.Unmarshal([]byte(value), &v); err != nil { + // handle error + return err + } + switch v.(type) { + case map[string]interface{}: + // it's an object + o.Raw = &runtime.RawExtension{} + return o.Raw.UnmarshalJSON(value) + default: + // default to string + o.Values = string(value) + } + + return nil +} + +// OpenAPISchemaType is used by the kube-openapi generator when constructing +// the OpenAPI spec of this type. +// +// See: https://github.com/kubernetes/kube-openapi/tree/master/pkg/generators +func (_ Object) OpenAPISchemaType() []string { return []string{"string"} } + +// OpenAPISchemaFormat is used by the kube-openapi generator when constructing +// the OpenAPI spec of this type. +func (_ Object) OpenAPISchemaFormat() string { return "" } diff --git a/pkg/apis/application/v1alpha1/openapi_generated.go b/pkg/apis/application/v1alpha1/openapi_generated.go index 8f42cefe89513..9908d548057d9 100644 --- a/pkg/apis/application/v1alpha1/openapi_generated.go +++ b/pkg/apis/application/v1alpha1/openapi_generated.go @@ -62,6 +62,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.JsonnetVar": schema_pkg_apis_application_v1alpha1_JsonnetVar(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.KnownTypeField": schema_pkg_apis_application_v1alpha1_KnownTypeField(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.KustomizeOptions": schema_pkg_apis_application_v1alpha1_KustomizeOptions(ref), + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.Object": schema_pkg_apis_application_v1alpha1_Object(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.Operation": schema_pkg_apis_application_v1alpha1_Operation(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.OperationInitiator": schema_pkg_apis_application_v1alpha1_OperationInitiator(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.OperationState": schema_pkg_apis_application_v1alpha1_OperationState(ref), @@ -747,8 +748,8 @@ func schema_pkg_apis_application_v1alpha1_ApplicationSourceHelm(ref common.Refer "values": { SchemaProps: spec.SchemaProps{ Description: "Values specifies Helm values to be passed to helm template, typically defined as a block", - Type: []string{"string"}, - Format: "", + Default: map[string]interface{}{}, + Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.Object"), }, }, "fileParameters": { @@ -797,7 +798,7 @@ func schema_pkg_apis_application_v1alpha1_ApplicationSourceHelm(ref common.Refer }, }, Dependencies: []string{ - "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmFileParameter", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmParameter"}, + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmFileParameter", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmParameter", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.Object"}, } } @@ -2418,6 +2419,17 @@ func schema_pkg_apis_application_v1alpha1_KustomizeOptions(ref common.ReferenceC } } +func schema_pkg_apis_application_v1alpha1_Object(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: Object{}.OpenAPISchemaType(), + Format: Object{}.OpenAPISchemaFormat(), + }, + }, + } +} + func schema_pkg_apis_application_v1alpha1_Operation(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ diff --git a/pkg/apis/application/v1alpha1/types.go b/pkg/apis/application/v1alpha1/types.go index 4095e7964bd2b..50e64caf63215 100644 --- a/pkg/apis/application/v1alpha1/types.go +++ b/pkg/apis/application/v1alpha1/types.go @@ -234,7 +234,8 @@ type ApplicationSourceHelm struct { // ReleaseName is the Helm release name to use. If omitted it will use the application name ReleaseName string `json:"releaseName,omitempty" protobuf:"bytes,3,opt,name=releaseName"` // Values specifies Helm values to be passed to helm template, typically defined as a block - Values string `json:"values,omitempty" protobuf:"bytes,4,opt,name=values"` + // +kubebuilder:pruning:PreserveUnknownFields + Values Object `json:"values,omitempty" protobuf:"bytes,4,opt,name=values"` // FileParameters are file parameters to the helm template FileParameters []HelmFileParameter `json:"fileParameters,omitempty" protobuf:"bytes,5,opt,name=fileParameters"` // Version is the Helm version to use for templating (either "2" or "3") @@ -326,7 +327,7 @@ func (in *ApplicationSourceHelm) AddFileParameter(p HelmFileParameter) { // IsZero Returns true if the Helm options in an application source are considered zero func (h *ApplicationSourceHelm) IsZero() bool { - return h == nil || (h.Version == "") && (h.ReleaseName == "") && len(h.ValueFiles) == 0 && len(h.Parameters) == 0 && len(h.FileParameters) == 0 && h.Values == "" && !h.PassCredentials && !h.IgnoreMissingValueFiles && !h.SkipCrds + return h == nil || (h.Version == "") && (h.ReleaseName == "") && len(h.ValueFiles) == 0 && len(h.Parameters) == 0 && len(h.FileParameters) == 0 && h.Values.IsEmpty() && !h.PassCredentials && !h.IgnoreMissingValueFiles && !h.SkipCrds } // KustomizeImage represents a Kustomize image definition in the format [old_image_name=]: diff --git a/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go index c3a2dfddfb197..79a9caba054a3 100644 --- a/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go @@ -353,6 +353,7 @@ func (in *ApplicationSourceHelm) DeepCopyInto(out *ApplicationSourceHelm) { *out = make([]HelmParameter, len(*in)) copy(*out, *in) } + in.Values.DeepCopyInto(&out.Values) if in.FileParameters != nil { in, out := &in.FileParameters, &out.FileParameters *out = make([]HelmFileParameter, len(*in)) @@ -1253,6 +1254,27 @@ func (in *KustomizeOptions) DeepCopy() *KustomizeOptions { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Object) DeepCopyInto(out *Object) { + *out = *in + if in.Raw != nil { + in, out := &in.Raw, &out.Raw + *out = new(runtime.RawExtension) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Object. +func (in *Object) DeepCopy() *Object { + if in == nil { + return nil + } + out := new(Object) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Operation) DeepCopyInto(out *Operation) { *out = *in diff --git a/reposerver/repository/repository.go b/reposerver/repository/repository.go index f6fc8aa859c6c..b287a358ef7a5 100644 --- a/reposerver/repository/repository.go +++ b/reposerver/repository/repository.go @@ -727,14 +727,14 @@ func helmTemplate(appPath string, repoRoot string, env *v1alpha1.Env, q *apiclie templateOpts.Values = append(templateOpts.Values, path) } - if appHelm.Values != "" { + if !appHelm.Values.IsEmpty() { rand, err := uuid.NewRandom() if err != nil { return nil, err } p := path.Join(os.TempDir(), rand.String()) defer func() { _ = os.RemoveAll(p) }() - err = ioutil.WriteFile(p, []byte(appHelm.Values), 0644) + err = ioutil.WriteFile(p, appHelm.Values.Value(), 0644) if err != nil { return nil, err } diff --git a/reposerver/repository/repository_test.go b/reposerver/repository/repository_test.go index 6c2a96a6782b1..44fc97e1518cb 100644 --- a/reposerver/repository/repository_test.go +++ b/reposerver/repository/repository_test.go @@ -641,7 +641,7 @@ func TestGenerateHelmWithValues(t *testing.T) { Path: "./util/helm/testdata/redis", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"values-production.yaml"}, - Values: `cluster: {slaveCount: 2}`, + Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, }, }, }) @@ -703,7 +703,7 @@ func TestGenerateHelmWithValuesDirectoryTraversal(t *testing.T) { Path: "./util/helm/testdata/redis", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"../minio/values.yaml"}, - Values: `cluster: {slaveCount: 2}`, + Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, }, }, }) @@ -801,7 +801,7 @@ func TestGenerateHelmWithURL(t *testing.T) { Path: "./util/helm/testdata/redis", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"https://raw.githubusercontent.com/argoproj/argocd-example-apps/master/helm-guestbook/values.yaml"}, - Values: `cluster: {slaveCount: 2}`, + Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, }, }, HelmOptions: &argoappv1.HelmOptions{ValuesFileSchemes: []string{"https"}}, @@ -821,7 +821,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { Path: "./util/helm/testdata/redis", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"../../../../../minio/values.yaml"}, - Values: `cluster: {slaveCount: 2}`, + Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, }, }, }) @@ -838,7 +838,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { Path: ".", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"../my-chart/my-chart-values.yaml"}, - Values: `cluster: {slaveCount: 2}`, + Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, }, }, }) @@ -854,7 +854,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { Path: ".", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"/my-chart-values.yaml"}, - Values: `cluster: {slaveCount: 2}`, + Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, }, }, }) @@ -870,7 +870,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { Path: ".", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"/../../../my-chart-values.yaml"}, - Values: `cluster: {slaveCount: 2}`, + Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`} , }, }, }) @@ -887,7 +887,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { Path: ".", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"file://../../../../my-chart-values.yaml"}, - Values: `cluster: {slaveCount: 2}`, + Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, }, }, }) @@ -934,11 +934,13 @@ func TestGenerateHelmWithAbsoluteFileParameter(t *testing.T) { Path: "./util/helm/testdata/redis", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"values-production.yaml"}, - Values: `cluster: {slaveCount: 2}`, - FileParameters: []argoappv1.HelmFileParameter{{ - Name: "passwordContent", - Path: externalSecretPath, - }}, + Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, + FileParameters: []argoappv1.HelmFileParameter{ + argoappv1.HelmFileParameter{ + Name: "passwordContent", + Path: externalSecretPath, + }, + }, }, }, }) @@ -959,7 +961,7 @@ func TestGenerateHelmWithFileParameter(t *testing.T) { Path: "./util/helm/testdata/redis", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"values-production.yaml"}, - Values: `cluster: {slaveCount: 2}`, + Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, FileParameters: []argoappv1.HelmFileParameter{ argoappv1.HelmFileParameter{ Name: "passwordContent", From 4abd841ec8791b3d649d357cacadcdeeb62073eb Mon Sep 17 00:00:00 2001 From: Mohamed Chiheb Date: Fri, 11 Mar 2022 10:20:21 +0100 Subject: [PATCH 02/10] Fix string Values Signed-off-by: Mohamed Chiheb --- pkg/apis/application/v1alpha1/object_types.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkg/apis/application/v1alpha1/object_types.go b/pkg/apis/application/v1alpha1/object_types.go index df097c60dee1d..3503ed87e924b 100644 --- a/pkg/apis/application/v1alpha1/object_types.go +++ b/pkg/apis/application/v1alpha1/object_types.go @@ -2,6 +2,7 @@ package v1alpha1 import ( "encoding/json" + "strconv" "k8s.io/apimachinery/pkg/runtime" ) @@ -51,8 +52,12 @@ func (o *Object) UnmarshalJSON(value []byte) error { o.Raw = &runtime.RawExtension{} return o.Raw.UnmarshalJSON(value) default: - // default to string - o.Values = string(value) + // default to string + s, err := strconv.Unquote(string(value)) + if err != nil { + return err + } + o.Values = s } return nil From 61ca96d5f7b02159eefeb6eb6236e6124410fe3d Mon Sep 17 00:00:00 2001 From: Mohamed Chiheb Date: Wed, 16 Mar 2022 17:05:36 +0100 Subject: [PATCH 03/10] Make argocd application spec.source.hem.values accepts either a string or object Signed-off-by: Mohamed Chiheb --- assets/swagger.json | 28 +- pkg/apis/application/v1alpha1/generated.pb.go | 1337 ++++++++--------- pkg/apis/application/v1alpha1/generated.proto | 23 +- .../application/v1alpha1/openapi_generated.go | 33 +- ...bject_types.go => stringorobject_types.go} | 60 +- pkg/apis/application/v1alpha1/types.go | 3 +- .../v1alpha1/zz_generated.deepcopy.go | 42 +- reposerver/repository/repository_test.go | 20 +- .../application-parameters.tsx | 67 +- 9 files changed, 836 insertions(+), 777 deletions(-) rename pkg/apis/application/v1alpha1/{object_types.go => stringorobject_types.go} (51%) diff --git a/assets/swagger.json b/assets/swagger.json index 278a7e67e2f9e..83518c0f0af3c 100644 --- a/assets/swagger.json +++ b/assets/swagger.json @@ -4957,7 +4957,7 @@ } }, "values": { - "$ref": "#/definitions/v1alpha1Object" + "$ref": "#/definitions/v1alpha1StringOrObject" }, "version": { "type": "string", @@ -5693,19 +5693,6 @@ } } }, - "v1alpha1Object": { - "type": "object", - "title": "+kubebuilder:validation:Type=\"\"", - "properties": { - "raw": { - "$ref": "#/definitions/runtimeRawExtension" - }, - "values": { - "type": "string", - "title": "Values as string if Raw == nil" - } - } - }, "v1alpha1Operation": { "type": "object", "title": "Operation contains information about a requested or running operation", @@ -6482,6 +6469,19 @@ } } }, + "v1alpha1StringOrObject": { + "type": "object", + "title": "+patchStrategy=replace\n+protobuf.options.(gogoproto.goproto_stringer)=false\n+kubebuilder:validation:Type=\"\"", + "properties": { + "raw": { + "$ref": "#/definitions/runtimeRawExtension" + }, + "values": { + "type": "string", + "title": "Values as string if Raw == nil" + } + } + }, "v1alpha1SyncOperation": { "description": "SyncOperation contains details about a sync operation.", "type": "object", diff --git a/pkg/apis/application/v1alpha1/generated.pb.go b/pkg/apis/application/v1alpha1/generated.pb.go index 9ab90e7ae4783..f8ab5847bc188 100644 --- a/pkg/apis/application/v1alpha1/generated.pb.go +++ b/pkg/apis/application/v1alpha1/generated.pb.go @@ -1381,38 +1381,10 @@ func (m *KustomizeOptions) XXX_DiscardUnknown() { var xxx_messageInfo_KustomizeOptions proto.InternalMessageInfo -func (m *Object) Reset() { *m = Object{} } -func (*Object) ProtoMessage() {} -func (*Object) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{48} -} -func (m *Object) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Object) 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 *Object) XXX_Merge(src proto.Message) { - xxx_messageInfo_Object.Merge(m, src) -} -func (m *Object) XXX_Size() int { - return m.Size() -} -func (m *Object) XXX_DiscardUnknown() { - xxx_messageInfo_Object.DiscardUnknown(m) -} - -var xxx_messageInfo_Object proto.InternalMessageInfo - func (m *Operation) Reset() { *m = Operation{} } func (*Operation) ProtoMessage() {} func (*Operation) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{49} + return fileDescriptor_030104ce3b95bcac, []int{48} } func (m *Operation) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1440,7 +1412,7 @@ var xxx_messageInfo_Operation proto.InternalMessageInfo func (m *OperationInitiator) Reset() { *m = OperationInitiator{} } func (*OperationInitiator) ProtoMessage() {} func (*OperationInitiator) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{50} + return fileDescriptor_030104ce3b95bcac, []int{49} } func (m *OperationInitiator) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1468,7 +1440,7 @@ var xxx_messageInfo_OperationInitiator proto.InternalMessageInfo func (m *OperationState) Reset() { *m = OperationState{} } func (*OperationState) ProtoMessage() {} func (*OperationState) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{51} + return fileDescriptor_030104ce3b95bcac, []int{50} } func (m *OperationState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1496,7 +1468,7 @@ var xxx_messageInfo_OperationState proto.InternalMessageInfo func (m *OrphanedResourceKey) Reset() { *m = OrphanedResourceKey{} } func (*OrphanedResourceKey) ProtoMessage() {} func (*OrphanedResourceKey) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{52} + return fileDescriptor_030104ce3b95bcac, []int{51} } func (m *OrphanedResourceKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1524,7 +1496,7 @@ var xxx_messageInfo_OrphanedResourceKey proto.InternalMessageInfo func (m *OrphanedResourcesMonitorSettings) Reset() { *m = OrphanedResourcesMonitorSettings{} } func (*OrphanedResourcesMonitorSettings) ProtoMessage() {} func (*OrphanedResourcesMonitorSettings) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{53} + return fileDescriptor_030104ce3b95bcac, []int{52} } func (m *OrphanedResourcesMonitorSettings) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1552,7 +1524,7 @@ var xxx_messageInfo_OrphanedResourcesMonitorSettings proto.InternalMessageInfo func (m *OverrideIgnoreDiff) Reset() { *m = OverrideIgnoreDiff{} } func (*OverrideIgnoreDiff) ProtoMessage() {} func (*OverrideIgnoreDiff) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{54} + return fileDescriptor_030104ce3b95bcac, []int{53} } func (m *OverrideIgnoreDiff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1580,7 +1552,7 @@ var xxx_messageInfo_OverrideIgnoreDiff proto.InternalMessageInfo func (m *ProjectRole) Reset() { *m = ProjectRole{} } func (*ProjectRole) ProtoMessage() {} func (*ProjectRole) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{55} + return fileDescriptor_030104ce3b95bcac, []int{54} } func (m *ProjectRole) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1608,7 +1580,7 @@ var xxx_messageInfo_ProjectRole proto.InternalMessageInfo func (m *RepoCreds) Reset() { *m = RepoCreds{} } func (*RepoCreds) ProtoMessage() {} func (*RepoCreds) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{56} + return fileDescriptor_030104ce3b95bcac, []int{55} } func (m *RepoCreds) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1636,7 +1608,7 @@ var xxx_messageInfo_RepoCreds proto.InternalMessageInfo func (m *RepoCredsList) Reset() { *m = RepoCredsList{} } func (*RepoCredsList) ProtoMessage() {} func (*RepoCredsList) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{57} + return fileDescriptor_030104ce3b95bcac, []int{56} } func (m *RepoCredsList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1664,7 +1636,7 @@ var xxx_messageInfo_RepoCredsList proto.InternalMessageInfo func (m *Repository) Reset() { *m = Repository{} } func (*Repository) ProtoMessage() {} func (*Repository) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{58} + return fileDescriptor_030104ce3b95bcac, []int{57} } func (m *Repository) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1692,7 +1664,7 @@ var xxx_messageInfo_Repository proto.InternalMessageInfo func (m *RepositoryCertificate) Reset() { *m = RepositoryCertificate{} } func (*RepositoryCertificate) ProtoMessage() {} func (*RepositoryCertificate) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{59} + return fileDescriptor_030104ce3b95bcac, []int{58} } func (m *RepositoryCertificate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1720,7 +1692,7 @@ var xxx_messageInfo_RepositoryCertificate proto.InternalMessageInfo func (m *RepositoryCertificateList) Reset() { *m = RepositoryCertificateList{} } func (*RepositoryCertificateList) ProtoMessage() {} func (*RepositoryCertificateList) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{60} + return fileDescriptor_030104ce3b95bcac, []int{59} } func (m *RepositoryCertificateList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1748,7 +1720,7 @@ var xxx_messageInfo_RepositoryCertificateList proto.InternalMessageInfo func (m *RepositoryList) Reset() { *m = RepositoryList{} } func (*RepositoryList) ProtoMessage() {} func (*RepositoryList) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{61} + return fileDescriptor_030104ce3b95bcac, []int{60} } func (m *RepositoryList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1776,7 +1748,7 @@ var xxx_messageInfo_RepositoryList proto.InternalMessageInfo func (m *ResourceAction) Reset() { *m = ResourceAction{} } func (*ResourceAction) ProtoMessage() {} func (*ResourceAction) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{62} + return fileDescriptor_030104ce3b95bcac, []int{61} } func (m *ResourceAction) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1804,7 +1776,7 @@ var xxx_messageInfo_ResourceAction proto.InternalMessageInfo func (m *ResourceActionDefinition) Reset() { *m = ResourceActionDefinition{} } func (*ResourceActionDefinition) ProtoMessage() {} func (*ResourceActionDefinition) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{63} + return fileDescriptor_030104ce3b95bcac, []int{62} } func (m *ResourceActionDefinition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1832,7 +1804,7 @@ var xxx_messageInfo_ResourceActionDefinition proto.InternalMessageInfo func (m *ResourceActionParam) Reset() { *m = ResourceActionParam{} } func (*ResourceActionParam) ProtoMessage() {} func (*ResourceActionParam) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{64} + return fileDescriptor_030104ce3b95bcac, []int{63} } func (m *ResourceActionParam) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1860,7 +1832,7 @@ var xxx_messageInfo_ResourceActionParam proto.InternalMessageInfo func (m *ResourceActions) Reset() { *m = ResourceActions{} } func (*ResourceActions) ProtoMessage() {} func (*ResourceActions) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{65} + return fileDescriptor_030104ce3b95bcac, []int{64} } func (m *ResourceActions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1888,7 +1860,7 @@ var xxx_messageInfo_ResourceActions proto.InternalMessageInfo func (m *ResourceDiff) Reset() { *m = ResourceDiff{} } func (*ResourceDiff) ProtoMessage() {} func (*ResourceDiff) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{66} + return fileDescriptor_030104ce3b95bcac, []int{65} } func (m *ResourceDiff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1916,7 +1888,7 @@ var xxx_messageInfo_ResourceDiff proto.InternalMessageInfo func (m *ResourceIgnoreDifferences) Reset() { *m = ResourceIgnoreDifferences{} } func (*ResourceIgnoreDifferences) ProtoMessage() {} func (*ResourceIgnoreDifferences) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{67} + return fileDescriptor_030104ce3b95bcac, []int{66} } func (m *ResourceIgnoreDifferences) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1944,7 +1916,7 @@ var xxx_messageInfo_ResourceIgnoreDifferences proto.InternalMessageInfo func (m *ResourceNetworkingInfo) Reset() { *m = ResourceNetworkingInfo{} } func (*ResourceNetworkingInfo) ProtoMessage() {} func (*ResourceNetworkingInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{68} + return fileDescriptor_030104ce3b95bcac, []int{67} } func (m *ResourceNetworkingInfo) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1972,7 +1944,7 @@ var xxx_messageInfo_ResourceNetworkingInfo proto.InternalMessageInfo func (m *ResourceNode) Reset() { *m = ResourceNode{} } func (*ResourceNode) ProtoMessage() {} func (*ResourceNode) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{69} + return fileDescriptor_030104ce3b95bcac, []int{68} } func (m *ResourceNode) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2000,7 +1972,7 @@ var xxx_messageInfo_ResourceNode proto.InternalMessageInfo func (m *ResourceOverride) Reset() { *m = ResourceOverride{} } func (*ResourceOverride) ProtoMessage() {} func (*ResourceOverride) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{70} + return fileDescriptor_030104ce3b95bcac, []int{69} } func (m *ResourceOverride) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2028,7 +2000,7 @@ var xxx_messageInfo_ResourceOverride proto.InternalMessageInfo func (m *ResourceRef) Reset() { *m = ResourceRef{} } func (*ResourceRef) ProtoMessage() {} func (*ResourceRef) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{71} + return fileDescriptor_030104ce3b95bcac, []int{70} } func (m *ResourceRef) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2056,7 +2028,7 @@ var xxx_messageInfo_ResourceRef proto.InternalMessageInfo func (m *ResourceResult) Reset() { *m = ResourceResult{} } func (*ResourceResult) ProtoMessage() {} func (*ResourceResult) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{72} + return fileDescriptor_030104ce3b95bcac, []int{71} } func (m *ResourceResult) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2084,7 +2056,7 @@ var xxx_messageInfo_ResourceResult proto.InternalMessageInfo func (m *ResourceStatus) Reset() { *m = ResourceStatus{} } func (*ResourceStatus) ProtoMessage() {} func (*ResourceStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{73} + return fileDescriptor_030104ce3b95bcac, []int{72} } func (m *ResourceStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2112,7 +2084,7 @@ var xxx_messageInfo_ResourceStatus proto.InternalMessageInfo func (m *RetryStrategy) Reset() { *m = RetryStrategy{} } func (*RetryStrategy) ProtoMessage() {} func (*RetryStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{74} + return fileDescriptor_030104ce3b95bcac, []int{73} } func (m *RetryStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2140,7 +2112,7 @@ var xxx_messageInfo_RetryStrategy proto.InternalMessageInfo func (m *RevisionHistory) Reset() { *m = RevisionHistory{} } func (*RevisionHistory) ProtoMessage() {} func (*RevisionHistory) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{75} + return fileDescriptor_030104ce3b95bcac, []int{74} } func (m *RevisionHistory) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2168,7 +2140,7 @@ var xxx_messageInfo_RevisionHistory proto.InternalMessageInfo func (m *RevisionMetadata) Reset() { *m = RevisionMetadata{} } func (*RevisionMetadata) ProtoMessage() {} func (*RevisionMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{76} + return fileDescriptor_030104ce3b95bcac, []int{75} } func (m *RevisionMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2196,7 +2168,7 @@ var xxx_messageInfo_RevisionMetadata proto.InternalMessageInfo func (m *SignatureKey) Reset() { *m = SignatureKey{} } func (*SignatureKey) ProtoMessage() {} func (*SignatureKey) Descriptor() ([]byte, []int) { - return fileDescriptor_030104ce3b95bcac, []int{77} + return fileDescriptor_030104ce3b95bcac, []int{76} } func (m *SignatureKey) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2221,6 +2193,34 @@ func (m *SignatureKey) XXX_DiscardUnknown() { var xxx_messageInfo_SignatureKey proto.InternalMessageInfo +func (m *StringOrObject) Reset() { *m = StringOrObject{} } +func (*StringOrObject) ProtoMessage() {} +func (*StringOrObject) Descriptor() ([]byte, []int) { + return fileDescriptor_030104ce3b95bcac, []int{77} +} +func (m *StringOrObject) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *StringOrObject) 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 *StringOrObject) XXX_Merge(src proto.Message) { + xxx_messageInfo_StringOrObject.Merge(m, src) +} +func (m *StringOrObject) XXX_Size() int { + return m.Size() +} +func (m *StringOrObject) XXX_DiscardUnknown() { + xxx_messageInfo_StringOrObject.DiscardUnknown(m) +} + +var xxx_messageInfo_StringOrObject proto.InternalMessageInfo + func (m *SyncOperation) Reset() { *m = SyncOperation{} } func (*SyncOperation) ProtoMessage() {} func (*SyncOperation) Descriptor() ([]byte, []int) { @@ -2584,7 +2584,6 @@ func init() { proto.RegisterType((*JsonnetVar)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.JsonnetVar") proto.RegisterType((*KnownTypeField)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.KnownTypeField") proto.RegisterType((*KustomizeOptions)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.KustomizeOptions") - proto.RegisterType((*Object)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Object") proto.RegisterType((*Operation)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.Operation") proto.RegisterType((*OperationInitiator)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.OperationInitiator") proto.RegisterType((*OperationState)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.OperationState") @@ -2616,6 +2615,7 @@ func init() { proto.RegisterType((*RevisionHistory)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.RevisionHistory") proto.RegisterType((*RevisionMetadata)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.RevisionMetadata") proto.RegisterType((*SignatureKey)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.SignatureKey") + proto.RegisterType((*StringOrObject)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.StringOrObject") proto.RegisterType((*SyncOperation)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.SyncOperation") proto.RegisterType((*SyncOperationResource)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.SyncOperationResource") proto.RegisterType((*SyncOperationResult)(nil), "github.com.argoproj.argo_cd.v2.pkg.apis.application.v1alpha1.SyncOperationResult") @@ -2634,436 +2634,438 @@ func init() { } var fileDescriptor_030104ce3b95bcac = []byte{ - // 6861 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x3d, 0x5b, 0x6c, 0x24, 0xd9, - 0x55, 0x5b, 0xdd, 0x7e, 0x74, 0x1f, 0x3f, 0x66, 0x7c, 0xe7, 0xb1, 0xce, 0xb0, 0x19, 0x8f, 0x6a, - 0x95, 0x64, 0x21, 0x59, 0x9b, 0x1d, 0x36, 0x61, 0xc9, 0x86, 0x0d, 0x6e, 0x7b, 0x1e, 0x9e, 0xf1, - 0x6b, 0x8f, 0x3d, 0x33, 0x64, 0x13, 0xc2, 0x96, 0xab, 0x6f, 0x77, 0xd7, 0xb8, 0xbb, 0xaa, 0xb7, - 0xaa, 0xda, 0x76, 0x27, 0xe4, 0x25, 0x05, 0xb2, 0x52, 0x9e, 0x4a, 0xf8, 0x48, 0x24, 0x04, 0xe1, - 0x21, 0x24, 0x3e, 0x22, 0xc4, 0x17, 0x20, 0xc4, 0x07, 0xe1, 0x27, 0x88, 0x0f, 0x22, 0x81, 0x48, - 0x20, 0xc2, 0x24, 0x03, 0x28, 0x80, 0x04, 0x08, 0x88, 0x90, 0x18, 0xf1, 0x81, 0xee, 0xa3, 0xee, - 0xbd, 0x55, 0xdd, 0x3d, 0xb6, 0xa7, 0x6b, 0x86, 0x28, 0xe2, 0xcf, 0x7d, 0xce, 0xb9, 0xe7, 0xdc, - 0x7b, 0xeb, 0xde, 0xf3, 0xba, 0xe7, 0x5e, 0xc3, 0x6a, 0xdd, 0x8b, 0x1b, 0x9d, 0x9d, 0x79, 0x37, - 0x68, 0x2d, 0x38, 0x61, 0x3d, 0x68, 0x87, 0xc1, 0x5d, 0xfe, 0xc7, 0xb3, 0x6e, 0x75, 0x61, 0xef, - 0xf2, 0x42, 0x7b, 0xb7, 0xbe, 0xe0, 0xb4, 0xbd, 0x68, 0xc1, 0x69, 0xb7, 0x9b, 0x9e, 0xeb, 0xc4, - 0x5e, 0xe0, 0x2f, 0xec, 0x3d, 0xe7, 0x34, 0xdb, 0x0d, 0xe7, 0xb9, 0x85, 0x3a, 0xf5, 0x69, 0xe8, - 0xc4, 0xb4, 0x3a, 0xdf, 0x0e, 0x83, 0x38, 0x20, 0xef, 0xd2, 0xdc, 0xe6, 0x13, 0x6e, 0xfc, 0x8f, - 0x9f, 0x75, 0xab, 0xf3, 0x7b, 0x97, 0xe7, 0xdb, 0xbb, 0xf5, 0x79, 0xc6, 0x6d, 0xde, 0xe0, 0x36, - 0x9f, 0x70, 0xbb, 0xf0, 0xac, 0xd1, 0x97, 0x7a, 0x50, 0x0f, 0x16, 0x38, 0xd3, 0x9d, 0x4e, 0x8d, - 0xff, 0xe2, 0x3f, 0xf8, 0x5f, 0x42, 0xd8, 0x05, 0x7b, 0xf7, 0x85, 0x68, 0xde, 0x0b, 0x58, 0xf7, - 0x16, 0xdc, 0x20, 0xa4, 0x0b, 0x7b, 0x3d, 0x1d, 0xba, 0xf0, 0xbc, 0xa6, 0x69, 0x39, 0x6e, 0xc3, - 0xf3, 0x69, 0xd8, 0xd5, 0x63, 0x6a, 0xd1, 0xd8, 0xe9, 0xd7, 0x6a, 0x61, 0x50, 0xab, 0xb0, 0xe3, - 0xc7, 0x5e, 0x8b, 0xf6, 0x34, 0x78, 0xc7, 0x51, 0x0d, 0x22, 0xb7, 0x41, 0x5b, 0x4e, 0xb6, 0x9d, - 0xfd, 0x1a, 0x4c, 0x2d, 0xde, 0xd9, 0x5a, 0xec, 0xc4, 0x8d, 0xa5, 0xc0, 0xaf, 0x79, 0x75, 0xf2, - 0x76, 0x98, 0x70, 0x9b, 0x9d, 0x28, 0xa6, 0xe1, 0xba, 0xd3, 0xa2, 0xb3, 0xd6, 0x25, 0xeb, 0x99, - 0x72, 0xe5, 0xcc, 0xd7, 0x0e, 0xe7, 0x9e, 0xb8, 0x77, 0x38, 0x37, 0xb1, 0xa4, 0x51, 0x68, 0xd2, - 0x91, 0x1f, 0x86, 0xf1, 0x30, 0x68, 0xd2, 0x45, 0x5c, 0x9f, 0x2d, 0xf0, 0x26, 0xa7, 0x64, 0x93, - 0x71, 0x14, 0x60, 0x4c, 0xf0, 0xf6, 0x5f, 0x16, 0x00, 0x16, 0xdb, 0xed, 0xcd, 0x30, 0xb8, 0x4b, - 0xdd, 0x98, 0xbc, 0x0a, 0x25, 0x36, 0x0b, 0x55, 0x27, 0x76, 0xb8, 0xb4, 0x89, 0xcb, 0x3f, 0x3a, - 0x2f, 0x06, 0x33, 0x6f, 0x0e, 0x46, 0x7f, 0x39, 0x46, 0x3d, 0xbf, 0xf7, 0xdc, 0xfc, 0xc6, 0x0e, - 0x6b, 0xbf, 0x46, 0x63, 0xa7, 0x42, 0xa4, 0x30, 0xd0, 0x30, 0x54, 0x5c, 0x89, 0x0f, 0x23, 0x51, - 0x9b, 0xba, 0xbc, 0x63, 0x13, 0x97, 0x57, 0xe7, 0x87, 0x59, 0x22, 0xf3, 0xba, 0xe7, 0x5b, 0x6d, - 0xea, 0x56, 0x26, 0xa5, 0xe4, 0x11, 0xf6, 0x0b, 0xb9, 0x1c, 0xb2, 0x07, 0x63, 0x51, 0xec, 0xc4, - 0x9d, 0x68, 0xb6, 0xc8, 0x25, 0xae, 0xe7, 0x26, 0x91, 0x73, 0xad, 0x4c, 0x4b, 0x99, 0x63, 0xe2, - 0x37, 0x4a, 0x69, 0xf6, 0xdf, 0x58, 0x30, 0xad, 0x89, 0x57, 0xbd, 0x28, 0x26, 0xef, 0xeb, 0x99, - 0xdc, 0xf9, 0xe3, 0x4d, 0x2e, 0x6b, 0xcd, 0xa7, 0xf6, 0xb4, 0x14, 0x56, 0x4a, 0x20, 0xc6, 0xc4, - 0xb6, 0x60, 0xd4, 0x8b, 0x69, 0x2b, 0x9a, 0x2d, 0x5c, 0x2a, 0x3e, 0x33, 0x71, 0xf9, 0x7a, 0x5e, - 0xe3, 0xac, 0x4c, 0x49, 0xa1, 0xa3, 0x2b, 0x8c, 0x3d, 0x0a, 0x29, 0xf6, 0xf7, 0xc0, 0x1c, 0x1f, - 0x9b, 0x70, 0xf2, 0x1c, 0x4c, 0x44, 0x41, 0x27, 0x74, 0x29, 0xd2, 0x76, 0x10, 0xcd, 0x5a, 0x97, - 0x8a, 0x6c, 0xe9, 0xb1, 0x95, 0xba, 0xa5, 0xc1, 0x68, 0xd2, 0x90, 0xcf, 0x58, 0x30, 0x59, 0xa5, - 0x51, 0xec, 0xf9, 0x5c, 0x7e, 0xd2, 0xf9, 0xed, 0xa1, 0x3b, 0x9f, 0x00, 0x97, 0x35, 0xf3, 0xca, - 0x59, 0x39, 0x90, 0x49, 0x03, 0x18, 0x61, 0x4a, 0x3e, 0xdb, 0x71, 0x55, 0x1a, 0xb9, 0xa1, 0xd7, - 0x66, 0xbf, 0xf9, 0x9a, 0x31, 0x76, 0xdc, 0xb2, 0x46, 0xa1, 0x49, 0x47, 0x7c, 0x18, 0x65, 0x3b, - 0x2a, 0x9a, 0x1d, 0xe1, 0xfd, 0x5f, 0x19, 0xae, 0xff, 0x72, 0x52, 0xd9, 0x66, 0xd5, 0xb3, 0xcf, - 0x7e, 0x45, 0x28, 0xc4, 0x90, 0x4f, 0x5b, 0x30, 0x2b, 0x77, 0x3c, 0x52, 0x31, 0xa1, 0x77, 0x1a, - 0x5e, 0x4c, 0x9b, 0x5e, 0x14, 0xcf, 0x8e, 0xf2, 0x3e, 0x2c, 0x1c, 0x6f, 0x6d, 0x5d, 0x0b, 0x83, - 0x4e, 0xfb, 0xa6, 0xe7, 0x57, 0x2b, 0x97, 0xa4, 0xa4, 0xd9, 0xa5, 0x01, 0x8c, 0x71, 0xa0, 0x48, - 0xf2, 0x05, 0x0b, 0x2e, 0xf8, 0x4e, 0x8b, 0x46, 0x6d, 0x87, 0x7d, 0x5a, 0x81, 0xae, 0x34, 0x1d, - 0x77, 0x97, 0xf7, 0x68, 0xec, 0xe1, 0x7a, 0x64, 0xcb, 0x1e, 0x5d, 0x58, 0x1f, 0xc8, 0x1a, 0x1f, - 0x20, 0x96, 0xfc, 0xba, 0x05, 0x33, 0x41, 0xd8, 0x6e, 0x38, 0x3e, 0xad, 0x26, 0xd8, 0x68, 0x76, - 0x9c, 0x6f, 0xbd, 0xf7, 0x0f, 0xf7, 0x89, 0x36, 0xb2, 0x6c, 0xd7, 0x02, 0xdf, 0x8b, 0x83, 0x70, - 0x8b, 0xc6, 0xb1, 0xe7, 0xd7, 0xa3, 0xca, 0xb9, 0x7b, 0x87, 0x73, 0x33, 0x3d, 0x54, 0xd8, 0xdb, - 0x1f, 0xf2, 0x41, 0x98, 0x88, 0xba, 0xbe, 0x7b, 0xc7, 0xf3, 0xab, 0xc1, 0x7e, 0x34, 0x5b, 0xca, - 0x63, 0xfb, 0x6e, 0x29, 0x86, 0x72, 0x03, 0x6a, 0x01, 0x68, 0x4a, 0xeb, 0xff, 0xe1, 0xf4, 0x52, - 0x2a, 0xe7, 0xfd, 0xe1, 0xf4, 0x62, 0x7a, 0x80, 0x58, 0xf2, 0x09, 0x0b, 0xa6, 0x22, 0xaf, 0xee, - 0x3b, 0x71, 0x27, 0xa4, 0x37, 0x69, 0x37, 0x9a, 0x05, 0xde, 0x91, 0x1b, 0x43, 0xce, 0x8a, 0xc1, - 0xb2, 0x72, 0x4e, 0xf6, 0x71, 0xca, 0x84, 0x46, 0x98, 0x96, 0xdb, 0x6f, 0xa3, 0xe9, 0x65, 0x3d, - 0x91, 0xef, 0x46, 0xd3, 0x8b, 0x7a, 0xa0, 0x48, 0xfb, 0x4f, 0x0a, 0x70, 0x3a, 0x6b, 0x83, 0xc8, - 0x6f, 0x5a, 0x70, 0xea, 0xee, 0x7e, 0xbc, 0x1d, 0xec, 0x52, 0x3f, 0xaa, 0x74, 0x99, 0xa6, 0xe0, - 0xda, 0x77, 0xe2, 0xb2, 0x9b, 0xaf, 0xb5, 0x9b, 0xbf, 0x91, 0x96, 0x72, 0xc5, 0x8f, 0xc3, 0x6e, - 0xe5, 0x49, 0x39, 0x9e, 0x53, 0x37, 0xee, 0x6c, 0x9b, 0x58, 0xcc, 0x76, 0xea, 0xc2, 0x27, 0x2d, - 0x38, 0xdb, 0x8f, 0x05, 0x39, 0x0d, 0xc5, 0x5d, 0xda, 0x15, 0x0e, 0x0e, 0xb2, 0x3f, 0xc9, 0xcf, - 0xc0, 0xe8, 0x9e, 0xd3, 0xec, 0x50, 0xe9, 0x28, 0x5c, 0x1b, 0x6e, 0x20, 0xaa, 0x67, 0x28, 0xb8, - 0xbe, 0xb3, 0xf0, 0x82, 0x65, 0xff, 0x59, 0x11, 0x26, 0x0c, 0x53, 0xf1, 0x18, 0x9c, 0x9f, 0x20, - 0xe5, 0xfc, 0xac, 0xe5, 0x66, 0xe5, 0x06, 0x7a, 0x3f, 0xfb, 0x19, 0xef, 0x67, 0x23, 0x3f, 0x91, - 0x0f, 0x74, 0x7f, 0x48, 0x0c, 0xe5, 0xa0, 0xcd, 0x9c, 0x5b, 0x66, 0x45, 0x47, 0xf2, 0xf8, 0x84, - 0x1b, 0x09, 0xbb, 0xca, 0xd4, 0xbd, 0xc3, 0xb9, 0xb2, 0xfa, 0x89, 0x5a, 0x90, 0xfd, 0x0d, 0x0b, - 0xce, 0x1a, 0x7d, 0x5c, 0x0a, 0xfc, 0xaa, 0xc7, 0x3f, 0xed, 0x25, 0x18, 0x89, 0xbb, 0xed, 0xc4, - 0x83, 0x56, 0x33, 0xb5, 0xdd, 0x6d, 0x53, 0xe4, 0x18, 0xe6, 0x33, 0xb7, 0x68, 0x14, 0x39, 0x75, - 0x9a, 0xf5, 0x99, 0xd7, 0x04, 0x18, 0x13, 0x3c, 0x09, 0x81, 0x34, 0x9d, 0x28, 0xde, 0x0e, 0x1d, - 0x3f, 0xe2, 0xec, 0xb7, 0xbd, 0x16, 0x95, 0x13, 0xfc, 0x23, 0xc7, 0x5b, 0x31, 0xac, 0x45, 0xe5, - 0xfc, 0xbd, 0xc3, 0x39, 0xb2, 0xda, 0xc3, 0x09, 0xfb, 0x70, 0xb7, 0xbf, 0x60, 0xc1, 0xf9, 0xfe, - 0x6e, 0x0d, 0x79, 0x33, 0x8c, 0x45, 0x34, 0xdc, 0xa3, 0xa1, 0x1c, 0x9d, 0xfe, 0x24, 0x1c, 0x8a, - 0x12, 0x4b, 0x16, 0xa0, 0xac, 0x54, 0xae, 0x1c, 0xe3, 0x8c, 0x24, 0x2d, 0x6b, 0x3d, 0xad, 0x69, - 0xd8, 0xa4, 0xb1, 0x1f, 0xd2, 0x09, 0x52, 0x93, 0xc6, 0xe3, 0x0d, 0x8e, 0xb1, 0xff, 0xd6, 0x82, - 0x53, 0x46, 0xaf, 0x1e, 0x83, 0x97, 0xeb, 0xa7, 0xbd, 0xdc, 0x95, 0xdc, 0xd6, 0xf3, 0x00, 0x37, - 0xf7, 0x8f, 0x47, 0x61, 0xc6, 0x5c, 0xf5, 0x5c, 0x1d, 0xf3, 0x00, 0x8b, 0xb6, 0x83, 0x5b, 0xb8, - 0x2a, 0xe7, 0x5c, 0x07, 0x58, 0x02, 0x8c, 0x09, 0x9e, 0x4d, 0x62, 0xdb, 0x89, 0x1b, 0x72, 0xc2, - 0xd5, 0x24, 0x6e, 0x3a, 0x71, 0x03, 0x39, 0x86, 0xbc, 0x04, 0xd3, 0xb1, 0x13, 0xd6, 0x69, 0x8c, - 0x74, 0xcf, 0x8b, 0x92, 0xfd, 0x52, 0xae, 0x9c, 0x97, 0xb4, 0xd3, 0xdb, 0x29, 0x2c, 0x66, 0xa8, - 0xc9, 0x6b, 0x30, 0xd2, 0xa0, 0xcd, 0x96, 0xf4, 0x6b, 0xb6, 0xf2, 0xdb, 0xe1, 0x7c, 0xac, 0xd7, - 0x69, 0xb3, 0x55, 0x29, 0xb1, 0x2e, 0xb3, 0xbf, 0x90, 0x8b, 0x22, 0x3f, 0x6f, 0x41, 0x79, 0xb7, - 0x13, 0xc5, 0x41, 0xcb, 0xfb, 0x00, 0x9d, 0x2d, 0x71, 0xc1, 0x3f, 0x9d, 0xb3, 0xe0, 0x9b, 0x09, - 0x7f, 0xb1, 0xdf, 0xd5, 0x4f, 0xd4, 0x92, 0x79, 0x3f, 0xaa, 0x5e, 0x48, 0xdd, 0x38, 0x08, 0xbb, - 0xb3, 0xf0, 0x48, 0xfa, 0xb1, 0x9c, 0xf0, 0x17, 0xfd, 0x50, 0x3f, 0x51, 0x4b, 0x26, 0x5d, 0x18, - 0x6b, 0x37, 0x3b, 0x75, 0xcf, 0x9f, 0x9d, 0xe0, 0x7d, 0xb8, 0x95, 0x73, 0x1f, 0x36, 0x39, 0xf3, - 0x0a, 0xb0, 0x5d, 0x2d, 0xfe, 0x46, 0x29, 0x90, 0x3c, 0x0d, 0xa3, 0x6e, 0xc3, 0x09, 0xe3, 0xd9, - 0x49, 0xbe, 0x68, 0xd4, 0x2a, 0x5e, 0x62, 0x40, 0x14, 0x38, 0xfb, 0x57, 0x0b, 0x70, 0x61, 0xf0, - 0xc0, 0xc4, 0x72, 0x76, 0x3b, 0x61, 0x24, 0x14, 0x64, 0xc9, 0x5c, 0xce, 0x1c, 0x8c, 0x09, 0x9e, - 0x7c, 0xcc, 0x82, 0xf1, 0xbb, 0x51, 0xe0, 0xfb, 0x34, 0x96, 0x56, 0xec, 0x76, 0xce, 0x63, 0xbd, - 0x21, 0xb8, 0xeb, 0x3e, 0x48, 0x00, 0x26, 0x72, 0x59, 0x77, 0xe9, 0x81, 0xdb, 0xec, 0x54, 0x13, - 0xd5, 0xa4, 0x48, 0xaf, 0x08, 0x30, 0x26, 0x78, 0x46, 0xea, 0xf9, 0x82, 0x74, 0x24, 0x4d, 0xba, - 0xe2, 0x4b, 0x52, 0x89, 0xb7, 0xff, 0x6b, 0x14, 0xce, 0xf5, 0x5d, 0xfd, 0x64, 0x1e, 0x80, 0x3b, - 0x0d, 0x57, 0x3d, 0x16, 0xe1, 0x89, 0xb0, 0x76, 0x9a, 0xd9, 0xf8, 0xdb, 0x0a, 0x8a, 0x06, 0x05, - 0xf9, 0x08, 0x40, 0xdb, 0x09, 0x9d, 0x16, 0x8d, 0x69, 0x98, 0x28, 0xaa, 0x9b, 0xc3, 0xcd, 0x12, - 0xeb, 0xc7, 0x66, 0xc2, 0x53, 0x3b, 0x19, 0x0a, 0x14, 0xa1, 0x21, 0x92, 0x05, 0xb1, 0x21, 0x6d, - 0x52, 0x27, 0xa2, 0xeb, 0x5a, 0x7f, 0xab, 0x20, 0x16, 0x35, 0x0a, 0x4d, 0x3a, 0xd2, 0x84, 0x31, - 0x3e, 0x8a, 0x48, 0x1a, 0xec, 0xe5, 0x21, 0x0d, 0x36, 0xf7, 0x80, 0xb4, 0x39, 0xe2, 0xb3, 0x15, - 0xa1, 0x94, 0x41, 0x3e, 0x6b, 0xc1, 0x74, 0xcd, 0x6b, 0x52, 0x3d, 0x06, 0x19, 0xb8, 0x6e, 0x0c, - 0x3f, 0x55, 0x57, 0x4d, 0xbe, 0x5a, 0x91, 0xa6, 0xc0, 0x11, 0x66, 0xc4, 0xb3, 0xc5, 0xb2, 0x47, - 0x43, 0xae, 0x81, 0xc7, 0xd2, 0x8b, 0xe5, 0xb6, 0x00, 0x63, 0x82, 0x27, 0x8b, 0x70, 0xaa, 0xed, - 0x44, 0xd1, 0x52, 0x48, 0xab, 0xd4, 0x8f, 0x3d, 0xa7, 0x29, 0xc2, 0xca, 0x92, 0xf6, 0x85, 0x37, - 0xd3, 0x68, 0xcc, 0xd2, 0x93, 0xf7, 0xc0, 0x93, 0x5e, 0xdd, 0x0f, 0x42, 0xba, 0xe6, 0x45, 0x91, - 0xe7, 0xd7, 0xf5, 0x62, 0xe2, 0x0a, 0xb5, 0x54, 0x99, 0x93, 0xac, 0x9e, 0x5c, 0xe9, 0x4f, 0x86, - 0x83, 0xda, 0x93, 0xb7, 0x41, 0x29, 0xda, 0xf5, 0xda, 0x4b, 0x61, 0x35, 0x9a, 0x2d, 0x73, 0x5e, - 0xca, 0xa4, 0x6e, 0x49, 0x38, 0x2a, 0x0a, 0xfb, 0x4b, 0x05, 0x98, 0x1d, 0xb4, 0x0b, 0x49, 0xc4, - 0xf6, 0x5a, 0x7c, 0xdb, 0x09, 0x23, 0x19, 0x51, 0x0c, 0x19, 0x98, 0x4a, 0xbe, 0xb7, 0x9d, 0xd0, - 0xdc, 0xb5, 0x5c, 0x00, 0x26, 0x92, 0xc8, 0x5d, 0x18, 0x89, 0x9b, 0x4e, 0x4e, 0x99, 0x2c, 0x43, - 0xa2, 0xf6, 0xfb, 0x56, 0x17, 0x23, 0xe4, 0x32, 0xc8, 0x53, 0x30, 0xd2, 0xf4, 0x76, 0x98, 0x7f, - 0xcc, 0xb6, 0x35, 0x37, 0x74, 0xab, 0xde, 0x4e, 0x84, 0x1c, 0x6a, 0xff, 0xdb, 0x58, 0x1f, 0xc5, - 0xa9, 0x4c, 0x11, 0xb9, 0x0c, 0xc0, 0xfc, 0xa0, 0xcd, 0x90, 0xd6, 0xbc, 0x03, 0xe9, 0x0a, 0xa8, - 0xcd, 0xb9, 0xae, 0x30, 0x68, 0x50, 0x25, 0x6d, 0xb6, 0x3a, 0x35, 0xd6, 0xa6, 0xd0, 0xdb, 0x46, - 0x60, 0xd0, 0xa0, 0x22, 0xcf, 0xc3, 0x98, 0xd7, 0x72, 0xea, 0x34, 0xe9, 0xe6, 0x53, 0x6c, 0x3f, - 0xad, 0x70, 0xc8, 0xfd, 0xc3, 0xb9, 0x69, 0xd5, 0x21, 0x0e, 0x42, 0x49, 0x4b, 0x7e, 0xc3, 0x82, - 0x49, 0x37, 0x68, 0xb5, 0x02, 0x7f, 0xd5, 0xd9, 0xa1, 0xcd, 0x24, 0x39, 0x75, 0xf7, 0x51, 0x19, - 0xea, 0xf9, 0x25, 0x43, 0x98, 0x08, 0x0d, 0x55, 0xca, 0xcd, 0x44, 0x61, 0xaa, 0x57, 0xe6, 0xb6, - 0x1b, 0x3d, 0x62, 0xdb, 0xfd, 0x9e, 0x05, 0x33, 0xa2, 0xed, 0xa2, 0xef, 0x07, 0xb1, 0xcc, 0x19, - 0x8a, 0xec, 0x52, 0xf0, 0x88, 0x87, 0x65, 0x48, 0x14, 0x63, 0x7b, 0x83, 0xec, 0xe6, 0x4c, 0x0f, - 0x1e, 0x7b, 0x3b, 0x49, 0xae, 0xc1, 0x4c, 0x2d, 0x08, 0x5d, 0x6a, 0x4e, 0x84, 0xd4, 0x19, 0x8a, - 0xd1, 0xd5, 0x2c, 0x01, 0xf6, 0xb6, 0x21, 0xb7, 0xe1, 0xbc, 0x01, 0x34, 0xe7, 0x41, 0xa8, 0x8d, - 0x8b, 0x92, 0xdb, 0xf9, 0xab, 0x7d, 0xa9, 0x70, 0x40, 0xeb, 0x0b, 0xef, 0x86, 0x99, 0x9e, 0xef, - 0xd7, 0x27, 0x2e, 0x3f, 0x6b, 0xc6, 0xe5, 0x65, 0x23, 0x9c, 0xbe, 0xb0, 0x0c, 0xe7, 0xfb, 0xcf, - 0xd4, 0x49, 0xb8, 0xd8, 0xbf, 0x6c, 0xc1, 0x93, 0x03, 0xfc, 0x1f, 0x15, 0x90, 0x58, 0x83, 0x02, - 0x12, 0xe2, 0x40, 0x91, 0xfa, 0x7b, 0x52, 0x71, 0x5c, 0x1d, 0x6e, 0x45, 0x5c, 0xf1, 0xf7, 0xc4, - 0x87, 0x1e, 0xbf, 0x77, 0x38, 0x57, 0xbc, 0xe2, 0xef, 0x21, 0xe3, 0x6d, 0xff, 0xe2, 0x58, 0x2a, - 0xe6, 0xd9, 0x4a, 0xc2, 0x6c, 0xde, 0x51, 0x19, 0xf1, 0x6c, 0xe4, 0xbc, 0x16, 0x8d, 0x98, 0x4e, - 0x24, 0xcf, 0xa5, 0x38, 0xf2, 0x49, 0x8b, 0xe7, 0xab, 0x93, 0x58, 0x50, 0xba, 0x64, 0x8f, 0x26, - 0x7d, 0x6e, 0x66, 0xc1, 0x13, 0x20, 0x9a, 0xd2, 0xd9, 0x4e, 0x6e, 0x8b, 0x74, 0x51, 0xd6, 0x31, - 0x4b, 0x32, 0xda, 0x09, 0x9e, 0x1c, 0x00, 0x44, 0x5d, 0xdf, 0xdd, 0x0c, 0x9a, 0x9e, 0xdb, 0x95, - 0xfe, 0x46, 0x0e, 0x39, 0x4f, 0xc1, 0x4f, 0x78, 0x67, 0xfa, 0x37, 0x1a, 0xb2, 0xc8, 0x97, 0x2d, - 0x98, 0x11, 0x86, 0x73, 0xd9, 0xab, 0xd5, 0x68, 0x48, 0x7d, 0x97, 0x26, 0xae, 0xc7, 0x9d, 0xe1, - 0x7a, 0x90, 0xa4, 0xeb, 0x56, 0xb2, 0xec, 0xf5, 0x16, 0xef, 0x41, 0x61, 0x6f, 0x67, 0x48, 0x15, - 0x46, 0x3c, 0xbf, 0x16, 0x48, 0xc5, 0x56, 0x19, 0xae, 0x53, 0x2b, 0x7e, 0x2d, 0xd0, 0x7b, 0x85, - 0xfd, 0x42, 0xce, 0x9d, 0xac, 0xc2, 0xd9, 0x50, 0xc6, 0x90, 0xd7, 0xbd, 0x88, 0x05, 0x02, 0xab, - 0x5e, 0xcb, 0x8b, 0xb9, 0x52, 0x2a, 0x56, 0x66, 0xef, 0x1d, 0xce, 0x9d, 0xc5, 0x3e, 0x78, 0xec, - 0xdb, 0xca, 0x7e, 0xbd, 0x9c, 0x0e, 0x94, 0x45, 0x1a, 0xe8, 0x43, 0x50, 0x0e, 0x55, 0xe2, 0x5d, - 0x38, 0x10, 0xab, 0xf9, 0xcc, 0xb1, 0xcc, 0x3f, 0xa9, 0x0c, 0x86, 0x4e, 0xb1, 0x6b, 0x89, 0xcc, - 0x91, 0x60, 0x5f, 0x5e, 0x6e, 0x8b, 0x1c, 0xd6, 0x97, 0x94, 0xaa, 0x53, 0x6d, 0x5d, 0xdf, 0x45, - 0x2e, 0x83, 0x84, 0x30, 0xd6, 0xa0, 0x4e, 0x33, 0x6e, 0xc8, 0x4c, 0xd0, 0x8d, 0x61, 0xdd, 0x58, - 0xc6, 0x2b, 0x9b, 0x65, 0x13, 0x50, 0x94, 0x92, 0xc8, 0x01, 0x8c, 0x37, 0xc4, 0x47, 0x90, 0xb6, - 0x7d, 0x6d, 0xd8, 0xc9, 0x4d, 0x7d, 0x59, 0xbd, 0x7f, 0x25, 0x00, 0x13, 0x71, 0xe4, 0x17, 0x2c, - 0x00, 0x37, 0x49, 0xaf, 0x25, 0xdb, 0x07, 0x73, 0xd3, 0x3b, 0x2a, 0x73, 0xa7, 0x5d, 0x23, 0x05, - 0x8a, 0xd0, 0x90, 0x4c, 0x5e, 0x85, 0xc9, 0x90, 0xba, 0x81, 0xef, 0x7a, 0x4d, 0x5a, 0x5d, 0x8c, - 0xb9, 0xe7, 0x7e, 0xb2, 0x34, 0xdc, 0x69, 0xe6, 0x9f, 0xa0, 0xc1, 0x03, 0x53, 0x1c, 0xc9, 0xeb, - 0x16, 0x4c, 0xab, 0x14, 0x23, 0xfb, 0x20, 0x54, 0xa6, 0x5a, 0x56, 0x73, 0x4a, 0x68, 0x72, 0x9e, - 0x15, 0xc2, 0x22, 0x94, 0x34, 0x0c, 0x33, 0x72, 0xc9, 0x2b, 0x00, 0xc1, 0x0e, 0x4f, 0xe7, 0xb1, - 0xa1, 0x96, 0x4e, 0x3c, 0xd4, 0x69, 0x91, 0x99, 0x4e, 0x38, 0xa0, 0xc1, 0x8d, 0xdc, 0x04, 0x10, - 0xdb, 0x66, 0xbb, 0xdb, 0xa6, 0x3c, 0x6c, 0x28, 0x57, 0xde, 0x9a, 0x4c, 0xfe, 0x96, 0xc2, 0xdc, - 0x3f, 0x9c, 0xeb, 0x0d, 0x93, 0x79, 0x1e, 0xd5, 0x68, 0x4e, 0x3e, 0x08, 0xe3, 0x51, 0xa7, 0xd5, - 0x72, 0x54, 0x56, 0x66, 0x33, 0x3f, 0x8b, 0x28, 0xf8, 0xea, 0xb5, 0x29, 0x01, 0x98, 0x48, 0xb4, - 0x7d, 0x20, 0xbd, 0xf4, 0xe4, 0x79, 0x98, 0xa4, 0x07, 0x31, 0x0d, 0x7d, 0xa7, 0x79, 0x0b, 0x57, - 0x93, 0x38, 0x9e, 0x7f, 0xfc, 0x2b, 0x06, 0x1c, 0x53, 0x54, 0xc4, 0x56, 0x9e, 0x77, 0x81, 0xd3, - 0x83, 0xf6, 0xbc, 0x13, 0x3f, 0xdb, 0xfe, 0xef, 0x42, 0xca, 0x23, 0xd8, 0x0e, 0x29, 0x25, 0x01, - 0x8c, 0xfa, 0x41, 0x55, 0x29, 0xbd, 0x1b, 0xf9, 0x28, 0xbd, 0xf5, 0xa0, 0x6a, 0x9c, 0x08, 0xb3, - 0x5f, 0x11, 0x0a, 0x39, 0xfc, 0xc8, 0x2c, 0x39, 0x5b, 0xe4, 0x08, 0xe9, 0x04, 0xe5, 0x29, 0x59, - 0x1d, 0x99, 0x6d, 0x98, 0x82, 0x30, 0x2d, 0x97, 0xec, 0xc2, 0x68, 0x23, 0x88, 0x62, 0x11, 0xab, - 0x0c, 0xed, 0x85, 0x5d, 0x0f, 0xa2, 0x98, 0x9b, 0x30, 0x35, 0x6c, 0x06, 0x89, 0x50, 0xc8, 0xb0, - 0xbf, 0x6b, 0xa5, 0xb2, 0x36, 0x77, 0x9c, 0xd8, 0x6d, 0x5c, 0xd9, 0xa3, 0x3e, 0x5b, 0xcf, 0x66, - 0xca, 0xff, 0xc7, 0xcd, 0x94, 0xff, 0xfd, 0xc3, 0xb9, 0xb7, 0x0c, 0x2a, 0xd1, 0xd9, 0x67, 0x1c, - 0xe6, 0x39, 0x0b, 0xe3, 0x74, 0xe0, 0xa3, 0x16, 0x4c, 0x18, 0xdd, 0x93, 0x06, 0x25, 0xc7, 0xec, - 0xb3, 0x72, 0xae, 0x0c, 0x20, 0x9a, 0x22, 0xed, 0xcf, 0x5b, 0x30, 0x5e, 0x71, 0xdc, 0xdd, 0xa0, - 0x56, 0x63, 0x01, 0x7e, 0xb5, 0x23, 0x0f, 0x57, 0xc4, 0xf8, 0x54, 0x80, 0xbf, 0x2c, 0xe1, 0xa8, - 0x28, 0xd8, 0x1a, 0xae, 0x39, 0x6e, 0x1c, 0x84, 0xbc, 0xdb, 0x45, 0xb1, 0x86, 0xaf, 0x72, 0x08, - 0x4a, 0x0c, 0x79, 0x3b, 0x4c, 0xb4, 0x9c, 0x83, 0xa4, 0x71, 0x36, 0x65, 0xb4, 0xa6, 0x51, 0x68, - 0xd2, 0xd9, 0x7f, 0x54, 0x86, 0x71, 0x79, 0x8a, 0x79, 0xec, 0x73, 0x88, 0xc4, 0x8b, 0x2f, 0x0c, - 0xf4, 0xe2, 0x23, 0x18, 0x73, 0x79, 0x01, 0x94, 0x34, 0xa5, 0x43, 0x26, 0xcf, 0x64, 0x07, 0x45, - 0x4d, 0x95, 0xee, 0x96, 0xf8, 0x8d, 0x52, 0x14, 0xf9, 0x9c, 0x05, 0xa7, 0xdc, 0xc0, 0xf7, 0xa9, - 0xab, 0xf5, 0xfc, 0x48, 0x1e, 0xe7, 0x74, 0x4b, 0x69, 0xa6, 0x3a, 0x45, 0x94, 0x41, 0x60, 0x56, - 0x3c, 0x79, 0x11, 0xa6, 0xc4, 0x9c, 0xdd, 0x4e, 0xc5, 0xc7, 0xfa, 0xe4, 0xda, 0x44, 0x62, 0x9a, - 0x96, 0xcc, 0x8b, 0x3c, 0x03, 0x3f, 0xca, 0x11, 0x31, 0xb2, 0xcc, 0x5a, 0xaa, 0xb3, 0x9e, 0x08, - 0x0d, 0x0a, 0x12, 0x02, 0x09, 0x69, 0x2d, 0xa4, 0x51, 0x03, 0xe9, 0x6b, 0x1d, 0x1a, 0xc5, 0xdc, - 0xc6, 0x8c, 0x3f, 0xdc, 0xa9, 0x16, 0xf6, 0x70, 0xc2, 0x3e, 0xdc, 0xc9, 0xae, 0x74, 0x74, 0x4b, - 0x79, 0x6c, 0x27, 0xf9, 0x99, 0x07, 0xfa, 0xbb, 0x73, 0x30, 0x1a, 0x35, 0x9c, 0xb0, 0xca, 0x6d, - 0x5b, 0xb1, 0x52, 0x66, 0xba, 0x64, 0x8b, 0x01, 0x50, 0xc0, 0xc9, 0x32, 0x9c, 0xce, 0x9c, 0xbb, - 0x47, 0xdc, 0x7a, 0x95, 0x2a, 0xb3, 0x92, 0xdd, 0xe9, 0xcc, 0x89, 0x7d, 0x84, 0x3d, 0x2d, 0xcc, - 0x20, 0x68, 0xe2, 0x88, 0x20, 0xa8, 0x0b, 0x63, 0x4d, 0x91, 0x08, 0x98, 0xe4, 0xaa, 0xf2, 0xe5, - 0x5c, 0x26, 0x60, 0xde, 0x4c, 0xc0, 0xa8, 0xd5, 0x2e, 0x13, 0x0a, 0x52, 0x20, 0xf9, 0x34, 0x53, - 0x68, 0x46, 0xee, 0x60, 0x8a, 0x77, 0xe0, 0x76, 0x3e, 0x1d, 0xe8, 0x49, 0x95, 0x68, 0xed, 0x66, - 0x24, 0x22, 0x4c, 0xf9, 0x17, 0x7e, 0x02, 0x26, 0x1e, 0x36, 0xef, 0xf0, 0x12, 0x9c, 0x1e, 0x2a, - 0xe3, 0xf0, 0x3d, 0x0b, 0x92, 0xef, 0xba, 0xe4, 0xb8, 0x0d, 0xca, 0x96, 0x0c, 0x79, 0x09, 0xa6, - 0x55, 0x18, 0xb1, 0x14, 0x74, 0xfc, 0x98, 0xf3, 0x2a, 0xea, 0x5c, 0x32, 0xa6, 0xb0, 0x98, 0xa1, - 0x26, 0x0b, 0x50, 0x66, 0xf3, 0x24, 0x9a, 0x0a, 0xb5, 0xab, 0x42, 0x95, 0xc5, 0xcd, 0x15, 0xd9, - 0x4a, 0xd3, 0x90, 0x00, 0x66, 0x9a, 0x4e, 0x14, 0xf3, 0x1e, 0xb0, 0xa8, 0xe2, 0x21, 0xcf, 0x94, - 0x79, 0xd9, 0xd1, 0x6a, 0x96, 0x11, 0xf6, 0xf2, 0xb6, 0xbf, 0x31, 0x02, 0x53, 0x29, 0xcd, 0xc8, - 0xac, 0x4a, 0x27, 0x62, 0xae, 0x8f, 0x4a, 0xb1, 0x28, 0xab, 0x72, 0x4b, 0xc2, 0x51, 0x51, 0x30, - 0xea, 0xb6, 0x13, 0x45, 0xfb, 0x41, 0x58, 0x95, 0xaa, 0x5c, 0x51, 0x6f, 0x4a, 0x38, 0x2a, 0x0a, - 0x66, 0x5f, 0x76, 0xa8, 0x13, 0xd2, 0x90, 0x97, 0x61, 0x64, 0xed, 0x4b, 0x45, 0xa3, 0xd0, 0xa4, - 0xe3, 0x4a, 0x39, 0x6e, 0x46, 0x4b, 0x4d, 0x8f, 0xfa, 0xb1, 0xe8, 0x66, 0x3e, 0x4a, 0x79, 0x7b, - 0x75, 0xcb, 0x64, 0xaa, 0x95, 0x72, 0x06, 0x81, 0x59, 0xf1, 0xe4, 0xe3, 0x16, 0x4c, 0x39, 0xfb, - 0x91, 0xae, 0xd2, 0xe5, 0x5a, 0x79, 0x68, 0x23, 0x95, 0x2a, 0xfc, 0xad, 0xcc, 0x30, 0xf5, 0x9e, - 0x02, 0x61, 0x5a, 0x28, 0xf9, 0xa2, 0x05, 0x84, 0x1e, 0x50, 0x77, 0x33, 0x0c, 0xf6, 0xbc, 0x6a, - 0xf2, 0x0d, 0x65, 0xf8, 0x33, 0xa4, 0xb7, 0x7d, 0xa5, 0x87, 0xaf, 0xd0, 0xea, 0xbd, 0x70, 0xec, - 0xd3, 0x07, 0xfb, 0xaf, 0x8b, 0x30, 0x61, 0x28, 0xe3, 0xbe, 0x96, 0xd5, 0xfa, 0x3e, 0xb3, 0xac, - 0x85, 0x13, 0x58, 0xd6, 0x8f, 0x40, 0xd9, 0x4d, 0x14, 0x45, 0x3e, 0x55, 0xc5, 0x59, 0xf5, 0xa3, - 0x75, 0x85, 0x02, 0xa1, 0x96, 0x49, 0xae, 0xc1, 0x8c, 0xc1, 0x46, 0x2a, 0x99, 0x11, 0xae, 0x64, - 0x54, 0xa2, 0x69, 0x31, 0x4b, 0x80, 0xbd, 0x6d, 0xc8, 0x73, 0xcc, 0xab, 0xf5, 0xe4, 0xb8, 0x44, - 0x14, 0x2f, 0x2b, 0x76, 0x17, 0x37, 0x57, 0x12, 0x30, 0x9a, 0x34, 0xf6, 0x37, 0x2c, 0xf5, 0x71, - 0x1f, 0x43, 0xb9, 0xc7, 0xdd, 0x74, 0xb9, 0xc7, 0x95, 0x5c, 0xa6, 0x79, 0x40, 0xa9, 0xc7, 0x3a, - 0x8c, 0x2f, 0x05, 0xad, 0x96, 0xe3, 0x57, 0xc9, 0x9b, 0x60, 0xdc, 0x15, 0x7f, 0xca, 0x30, 0x71, - 0x82, 0xd9, 0x6f, 0x89, 0xc5, 0x04, 0x47, 0x9e, 0x82, 0x11, 0x27, 0xac, 0x27, 0xa1, 0x21, 0x3f, - 0x3b, 0x5a, 0x0c, 0xeb, 0x11, 0x72, 0xa8, 0xfd, 0x85, 0x02, 0xc0, 0x52, 0xd0, 0x6a, 0x3b, 0x21, - 0xad, 0x6e, 0x07, 0xff, 0x9f, 0x23, 0x16, 0x11, 0xc3, 0xa7, 0x2c, 0x20, 0x6c, 0x56, 0x02, 0x9f, - 0xfa, 0xb1, 0x3a, 0x7c, 0x65, 0xf6, 0xd2, 0x4d, 0xa0, 0xd2, 0xf8, 0xe8, 0x3d, 0x90, 0x20, 0x50, - 0xd3, 0x1c, 0x23, 0x8a, 0x78, 0x3a, 0xb1, 0xf8, 0xc5, 0x74, 0x65, 0x04, 0x3f, 0x28, 0x95, 0x0e, - 0x80, 0xfd, 0xd5, 0x02, 0x9c, 0x17, 0x6a, 0x6b, 0xcd, 0xf1, 0x9d, 0x3a, 0x6d, 0xb1, 0x5e, 0x1d, - 0xf7, 0xb4, 0xc1, 0x65, 0xee, 0xab, 0x97, 0x14, 0x42, 0x0c, 0xbb, 0x38, 0xc5, 0xa2, 0x12, 0xcb, - 0x68, 0xc5, 0xf7, 0x62, 0xe4, 0xcc, 0x49, 0x04, 0xa5, 0xe4, 0x9e, 0x88, 0x54, 0x36, 0x39, 0x09, - 0x52, 0xfb, 0xee, 0x9a, 0x64, 0x8f, 0x4a, 0x10, 0x33, 0xee, 0xcd, 0xc0, 0xdd, 0x45, 0xda, 0x0e, - 0xb8, 0x62, 0x31, 0x4e, 0x90, 0x57, 0x25, 0x1c, 0x15, 0x85, 0xfd, 0x55, 0x0b, 0xb2, 0x2a, 0x97, - 0x47, 0x83, 0xa2, 0xf2, 0x30, 0x1b, 0x0d, 0xa6, 0x0b, 0x05, 0x4f, 0x50, 0x77, 0xf7, 0x3e, 0x98, - 0x70, 0xe2, 0x98, 0xb6, 0xda, 0x22, 0x34, 0x29, 0x3e, 0x5c, 0xfa, 0x6b, 0x2d, 0xa8, 0x7a, 0x35, - 0x8f, 0x87, 0x24, 0x26, 0x3b, 0xfb, 0x65, 0x28, 0x25, 0x27, 0x3e, 0xc7, 0xf8, 0xf4, 0x4f, 0xa7, - 0xdc, 0xc9, 0x01, 0x8b, 0xeb, 0x7e, 0x01, 0xfa, 0xd8, 0x4c, 0x36, 0x64, 0xad, 0x5d, 0x52, 0x43, - 0x3e, 0x99, 0x86, 0x21, 0x07, 0xe2, 0xb4, 0x4b, 0xe4, 0x59, 0xde, 0x93, 0xb7, 0xcd, 0xd7, 0x07, - 0x60, 0x13, 0xb2, 0x7f, 0xea, 0x10, 0x8c, 0x5c, 0x06, 0xd0, 0x46, 0x41, 0x96, 0xd6, 0xa8, 0x4c, - 0xad, 0xb6, 0x1d, 0x68, 0x50, 0x31, 0x17, 0xd0, 0xf3, 0xa3, 0xd8, 0x69, 0x36, 0xaf, 0x7b, 0x7e, - 0x2c, 0x63, 0x59, 0xa5, 0x30, 0x56, 0x34, 0x0a, 0x4d, 0xba, 0x0b, 0xef, 0x30, 0xbe, 0xcb, 0x49, - 0xdc, 0xfa, 0x4f, 0x15, 0x60, 0xfa, 0x9a, 0xdf, 0xd9, 0xbc, 0xb6, 0xd9, 0xd9, 0x69, 0x7a, 0xee, - 0x4d, 0xda, 0x65, 0x1f, 0x6d, 0x97, 0x76, 0x57, 0x96, 0xe5, 0xb4, 0xab, 0x8f, 0x76, 0x93, 0x01, - 0x51, 0xe0, 0x58, 0x37, 0x6b, 0x9e, 0x5f, 0xa7, 0x61, 0x3b, 0xf4, 0xa4, 0xef, 0x6e, 0x74, 0xf3, - 0xaa, 0x46, 0xa1, 0x49, 0xc7, 0x78, 0x07, 0xfb, 0x3e, 0x0d, 0xb3, 0xda, 0x66, 0x83, 0x01, 0x51, - 0xe0, 0x18, 0x51, 0x1c, 0x76, 0xa2, 0x58, 0xce, 0x98, 0x22, 0xda, 0x66, 0x40, 0x14, 0x38, 0xb6, - 0x3c, 0xa2, 0xce, 0x0e, 0xcf, 0xc2, 0x66, 0xce, 0xc3, 0xb7, 0x04, 0x18, 0x13, 0x3c, 0x23, 0xdd, - 0xa5, 0xdd, 0x65, 0x66, 0x7b, 0x33, 0x15, 0x2b, 0x37, 0x05, 0x18, 0x13, 0xbc, 0xfd, 0x0f, 0x16, - 0x90, 0xf4, 0x74, 0x3c, 0x06, 0xf3, 0xfd, 0x5a, 0xda, 0x7c, 0x0f, 0x99, 0x30, 0x4f, 0x77, 0x7f, - 0x80, 0x15, 0xff, 0x35, 0x0b, 0x26, 0xcd, 0xb3, 0x13, 0x52, 0xcf, 0x28, 0xa2, 0x8d, 0xb4, 0x22, - 0xba, 0x7f, 0x38, 0xf7, 0x93, 0xfd, 0x2e, 0x3d, 0xd6, 0xbd, 0x38, 0x68, 0x47, 0xcf, 0x52, 0xbf, - 0xee, 0xf9, 0x94, 0x67, 0x06, 0xc5, 0x99, 0x4b, 0xea, 0x60, 0x66, 0x29, 0xa8, 0xd2, 0x87, 0xd0, - 0x64, 0xf6, 0x1d, 0x98, 0xe9, 0x29, 0x53, 0x3a, 0x86, 0xd2, 0x39, 0xb2, 0x96, 0xd4, 0x46, 0x98, - 0x60, 0x8c, 0x37, 0xda, 0xe2, 0x70, 0x64, 0x09, 0x66, 0x44, 0xb5, 0x15, 0x93, 0xb4, 0xe5, 0x36, - 0x68, 0x4b, 0x15, 0xb0, 0xf1, 0x40, 0xf1, 0x76, 0x16, 0x89, 0xbd, 0xf4, 0xf6, 0xa7, 0x2d, 0x98, - 0x4a, 0xd5, 0x9f, 0xe5, 0xa4, 0x1e, 0xf9, 0x4e, 0x0b, 0xf8, 0x51, 0x5e, 0xe8, 0xf9, 0x22, 0xd7, - 0x57, 0x32, 0x76, 0x9a, 0x46, 0xa1, 0x49, 0x67, 0x7f, 0xbe, 0x00, 0xa5, 0x24, 0x2b, 0x7c, 0x8c, - 0xae, 0x7c, 0xd2, 0x82, 0x29, 0x15, 0x9c, 0x73, 0x97, 0x5d, 0x2c, 0xc6, 0xf5, 0xe1, 0xf3, 0xd2, - 0xea, 0xbc, 0x97, 0xb9, 0xec, 0x2a, 0x76, 0x40, 0x53, 0x18, 0xa6, 0x65, 0x93, 0xdb, 0x00, 0x51, - 0x37, 0x8a, 0x69, 0xcb, 0x08, 0x1e, 0x6c, 0x63, 0xc7, 0xcd, 0xbb, 0x41, 0x48, 0xd9, 0xfe, 0x5a, - 0x0f, 0xaa, 0x74, 0x4b, 0x51, 0x6a, 0xe5, 0xaa, 0x61, 0x68, 0x70, 0xb2, 0x7f, 0xbb, 0x00, 0xa7, - 0xb3, 0x5d, 0x22, 0xef, 0x85, 0xc9, 0x44, 0xba, 0x71, 0x7f, 0x34, 0x49, 0x85, 0x4f, 0xa2, 0x81, - 0xbb, 0x7f, 0x38, 0x37, 0xd7, 0x7b, 0x81, 0x76, 0xde, 0x24, 0xc1, 0x14, 0x33, 0x91, 0x21, 0x91, - 0xa9, 0xbc, 0x4a, 0x77, 0xb1, 0xdd, 0x96, 0x69, 0x0e, 0x23, 0x43, 0x62, 0x62, 0x31, 0x43, 0x4d, - 0x36, 0xe1, 0xac, 0x01, 0x59, 0xa7, 0x5e, 0xbd, 0xb1, 0x13, 0x84, 0xe2, 0xa2, 0x42, 0xb1, 0xf2, - 0x94, 0xe4, 0x72, 0x16, 0xfb, 0xd0, 0x60, 0xdf, 0x96, 0xcc, 0x69, 0x71, 0x9d, 0xb6, 0xe3, 0x7a, - 0x71, 0x57, 0x46, 0x43, 0x4a, 0x37, 0x2d, 0x49, 0x38, 0x2a, 0x0a, 0x7b, 0x0d, 0x46, 0x8e, 0xb9, - 0x82, 0x8e, 0x65, 0xeb, 0x5f, 0x86, 0x12, 0x63, 0xc7, 0x74, 0x51, 0x5e, 0x2c, 0x03, 0x28, 0x25, - 0xf7, 0x56, 0x88, 0x0d, 0x45, 0xcf, 0x49, 0x92, 0x50, 0x6a, 0x58, 0x2b, 0x51, 0xd4, 0xe1, 0x9e, - 0x0c, 0x43, 0x92, 0xa7, 0xa1, 0x48, 0x0f, 0xda, 0xd9, 0x6c, 0xd3, 0x95, 0x83, 0xb6, 0x17, 0xd2, - 0x88, 0x11, 0xd1, 0x83, 0x36, 0xb9, 0x00, 0x05, 0xaf, 0x2a, 0x8d, 0x14, 0x48, 0x9a, 0xc2, 0xca, - 0x32, 0x16, 0xbc, 0xaa, 0x7d, 0x00, 0x65, 0x75, 0x51, 0x86, 0xec, 0x26, 0xba, 0xdb, 0xca, 0xe3, - 0x18, 0x27, 0xe1, 0x3b, 0x40, 0x6b, 0x77, 0x00, 0x74, 0x9d, 0x5e, 0x5e, 0xfa, 0xe5, 0x12, 0x8c, - 0xb8, 0x81, 0x2c, 0x12, 0x2e, 0x69, 0x36, 0x5c, 0x69, 0x73, 0x8c, 0x7d, 0x07, 0xa6, 0x6f, 0xfa, - 0xc1, 0xbe, 0xcf, 0x8c, 0xe9, 0x55, 0x8f, 0x36, 0xab, 0x8c, 0x71, 0x8d, 0xfd, 0x91, 0x75, 0x11, - 0x38, 0x16, 0x05, 0x4e, 0xdd, 0x26, 0x29, 0x0c, 0xba, 0x4d, 0x62, 0x7f, 0xd4, 0x82, 0xd3, 0xaa, - 0x80, 0x2c, 0xd1, 0xc6, 0x2f, 0xc0, 0xe4, 0x4e, 0xc7, 0x6b, 0x56, 0xe5, 0x6f, 0x29, 0x42, 0x95, - 0xc8, 0x55, 0x0c, 0x1c, 0xa6, 0x28, 0x99, 0xbb, 0xb5, 0xe3, 0xf9, 0x4e, 0xd8, 0xdd, 0xd4, 0xea, - 0x5f, 0x69, 0x84, 0x8a, 0xc2, 0xa0, 0x41, 0x65, 0x7f, 0x00, 0xc6, 0x44, 0x05, 0x2e, 0x73, 0xc5, - 0x65, 0x5d, 0x6f, 0xc6, 0x15, 0xcf, 0x54, 0xe4, 0x5e, 0x87, 0x62, 0xe8, 0xec, 0xcb, 0x68, 0xe6, - 0xd9, 0x81, 0x6e, 0x80, 0xbc, 0xc4, 0x3e, 0x8f, 0xce, 0xfe, 0x95, 0x83, 0x98, 0xfa, 0xcc, 0xb9, - 0x13, 0x35, 0x52, 0xe8, 0xec, 0x23, 0x63, 0x61, 0xff, 0x45, 0x11, 0xf4, 0x05, 0x1d, 0xe2, 0xc9, - 0x2a, 0x0c, 0x2b, 0x8f, 0x3c, 0xd9, 0x56, 0xd7, 0x77, 0xf5, 0x55, 0xa0, 0x52, 0xa6, 0x08, 0xe3, - 0x13, 0x16, 0x73, 0x32, 0xbd, 0xd8, 0x73, 0xb8, 0x6e, 0x90, 0x63, 0xd9, 0xcc, 0xe9, 0xa0, 0x7e, - 0x45, 0x70, 0x0e, 0x42, 0xd3, 0x6d, 0x55, 0xc2, 0xd0, 0x94, 0x4c, 0x5e, 0x95, 0x47, 0x1b, 0xc5, - 0xdc, 0x6a, 0x78, 0x4a, 0x99, 0xf3, 0x8c, 0x36, 0x8c, 0x86, 0x34, 0x0e, 0x93, 0xea, 0xa9, 0x9b, - 0xc3, 0x1e, 0xf4, 0xc6, 0x61, 0x77, 0x2b, 0x66, 0xd1, 0x5f, 0xdd, 0xf0, 0xad, 0x38, 0x18, 0x85, - 0x20, 0x3b, 0x02, 0xd2, 0x3b, 0x17, 0x27, 0x4c, 0x1b, 0x2f, 0x40, 0xd9, 0xe9, 0xc4, 0x41, 0x8b, - 0x4d, 0x13, 0xff, 0x3c, 0x25, 0x23, 0x31, 0x9e, 0x20, 0x50, 0xd3, 0xd8, 0x9f, 0x1d, 0x85, 0x4c, - 0x59, 0x04, 0x39, 0x30, 0x2f, 0x97, 0x59, 0xf9, 0x5e, 0x2e, 0x53, 0x9d, 0xe9, 0x77, 0xc1, 0x8c, - 0xd4, 0x61, 0xb4, 0xdd, 0x70, 0xa2, 0x64, 0xeb, 0xbf, 0x9c, 0x4c, 0xd3, 0x26, 0x03, 0xde, 0x3f, - 0x9c, 0xfb, 0xa9, 0xe3, 0xb9, 0x92, 0x6c, 0xad, 0x2e, 0x88, 0x1a, 0x51, 0x2d, 0x9a, 0xf3, 0x40, - 0xc1, 0xdf, 0x74, 0x26, 0x8b, 0x47, 0x84, 0xc5, 0x1f, 0xb3, 0x44, 0x2d, 0x1d, 0xd2, 0xa8, 0xd3, - 0x8c, 0xe5, 0x6a, 0x78, 0x39, 0xc7, 0x5d, 0x26, 0x18, 0xeb, 0xa2, 0x3a, 0xf1, 0x1b, 0x0d, 0xa1, - 0xe4, 0xbd, 0x50, 0x8e, 0x62, 0x27, 0x8c, 0x1f, 0xb2, 0x04, 0x47, 0x4d, 0xfa, 0x56, 0xc2, 0x04, - 0x35, 0x3f, 0xf2, 0x0a, 0x40, 0xcd, 0xf3, 0xbd, 0xa8, 0xf1, 0x90, 0x27, 0x92, 0xbc, 0xe3, 0x57, - 0x15, 0x07, 0x34, 0xb8, 0x31, 0xcd, 0xca, 0xd7, 0xb6, 0xc8, 0xa1, 0x96, 0xb8, 0xe9, 0x54, 0x9a, - 0x15, 0x15, 0x06, 0x0d, 0x2a, 0xfb, 0xc3, 0x70, 0x26, 0x7b, 0xb1, 0x5b, 0x46, 0x97, 0xf5, 0x30, - 0xe8, 0xb4, 0xb3, 0xa6, 0x83, 0x5f, 0xfc, 0x45, 0x81, 0x63, 0xa6, 0x63, 0xd7, 0xf3, 0xab, 0x59, - 0xd3, 0x71, 0xd3, 0xf3, 0xab, 0xc8, 0x31, 0xc7, 0xb8, 0x75, 0xf7, 0x07, 0x16, 0x5c, 0x3a, 0xea, - 0xfe, 0x39, 0x79, 0x0a, 0x46, 0xf6, 0x9d, 0xd0, 0x97, 0x17, 0x7a, 0xb8, 0xee, 0xb8, 0xe3, 0x84, - 0x3e, 0x72, 0x28, 0xe9, 0xc2, 0x98, 0x28, 0x3b, 0x94, 0xce, 0xf0, 0xcb, 0xf9, 0xde, 0x86, 0x67, - 0xe1, 0x99, 0xb2, 0x32, 0xa2, 0xe4, 0x11, 0xa5, 0x40, 0xfb, 0xdb, 0x16, 0x90, 0x8d, 0x3d, 0x1a, - 0x86, 0x5e, 0xd5, 0x28, 0x94, 0x24, 0xcf, 0xc3, 0xe4, 0xdd, 0xad, 0x8d, 0xf5, 0xcd, 0xc0, 0xf3, - 0xf9, 0x5d, 0x10, 0xa3, 0x3c, 0xe7, 0x86, 0x01, 0xc7, 0x14, 0x15, 0x0b, 0x70, 0xee, 0xbe, 0xc6, - 0xcc, 0xdd, 0x95, 0x83, 0x76, 0x48, 0xa3, 0x48, 0xbd, 0x21, 0x21, 0x03, 0x9c, 0x1b, 0x2f, 0x67, - 0x90, 0xd8, 0x4b, 0x4f, 0x36, 0xe0, 0x5c, 0x8b, 0x27, 0xff, 0xaa, 0xdc, 0xca, 0x47, 0x22, 0x13, - 0x18, 0x26, 0xc5, 0xf6, 0x6f, 0xb8, 0x77, 0x38, 0x77, 0x6e, 0xad, 0x1f, 0x01, 0xf6, 0x6f, 0x67, - 0x7f, 0xa5, 0x00, 0x13, 0xc6, 0x1b, 0x0e, 0xc7, 0xf0, 0x67, 0x32, 0xcf, 0x4e, 0x14, 0x8e, 0xf9, - 0xec, 0xc4, 0x33, 0x50, 0x6a, 0x07, 0x4d, 0xcf, 0xf5, 0xd4, 0xcd, 0x80, 0x49, 0x7e, 0xfe, 0x26, - 0x61, 0xa8, 0xb0, 0x64, 0x1f, 0xca, 0xea, 0x32, 0xb6, 0xac, 0x15, 0xcc, 0xcb, 0xa3, 0x53, 0x9b, - 0x57, 0x5f, 0xb2, 0xd6, 0xb2, 0x88, 0x0d, 0x63, 0x7c, 0xe5, 0x27, 0xa7, 0x0b, 0xbc, 0xf8, 0x84, - 0x6f, 0x89, 0x08, 0x25, 0xc6, 0xfe, 0xe7, 0x51, 0x28, 0x23, 0x6d, 0x07, 0x4b, 0x21, 0xad, 0x46, - 0xe4, 0x8d, 0x50, 0xec, 0x84, 0x4d, 0x39, 0x59, 0x2a, 0xf5, 0x74, 0x0b, 0x57, 0x91, 0xc1, 0x53, - 0xe6, 0xa6, 0x70, 0xa2, 0x53, 0xca, 0xe2, 0x91, 0xa7, 0x94, 0x2f, 0xc2, 0x54, 0x14, 0x35, 0x36, - 0x43, 0x6f, 0xcf, 0x89, 0xd9, 0x22, 0x96, 0x79, 0x1a, 0x7d, 0x2c, 0xb4, 0x75, 0x5d, 0x23, 0x31, - 0x4d, 0x4b, 0xae, 0xc1, 0x8c, 0x3e, 0x2b, 0xa4, 0x61, 0xcc, 0xd3, 0x32, 0x22, 0x83, 0xa3, 0x4e, - 0x65, 0xf4, 0xe9, 0xa2, 0x24, 0xc0, 0xde, 0x36, 0x64, 0x19, 0x4e, 0xa7, 0x80, 0xac, 0x23, 0x22, - 0xbd, 0xa3, 0xea, 0x10, 0x52, 0x7c, 0x58, 0x5f, 0x7a, 0x5a, 0x90, 0x35, 0x38, 0x23, 0xbe, 0x2f, - 0xbf, 0xc4, 0xaf, 0x46, 0x34, 0xce, 0x19, 0xfd, 0x90, 0x64, 0x74, 0xe6, 0x5a, 0x2f, 0x09, 0xf6, - 0x6b, 0xc7, 0x56, 0xa8, 0x02, 0xaf, 0x2c, 0x4b, 0x4d, 0xa9, 0x56, 0xa8, 0x62, 0xb3, 0x52, 0x45, - 0x93, 0x8e, 0xbc, 0x07, 0x9e, 0xd4, 0x3f, 0x45, 0x56, 0x4f, 0xb8, 0x0f, 0xcb, 0xb2, 0x0c, 0x43, - 0xdd, 0x72, 0xba, 0xd6, 0x97, 0xac, 0x8a, 0x83, 0xda, 0x93, 0x1d, 0xb8, 0xa0, 0x50, 0x57, 0x98, - 0x3a, 0x68, 0x87, 0x5e, 0x44, 0x2b, 0x4e, 0x44, 0x6f, 0x85, 0x4d, 0x5e, 0xb8, 0x51, 0xd6, 0x0f, - 0x51, 0x5c, 0xf3, 0xe2, 0xeb, 0xfd, 0x28, 0x71, 0x15, 0x1f, 0xc0, 0x85, 0x79, 0x2b, 0xd4, 0x77, - 0x76, 0x9a, 0x74, 0x63, 0x69, 0x85, 0x97, 0x73, 0x18, 0xde, 0xca, 0x95, 0x04, 0x81, 0x9a, 0x46, - 0x85, 0x06, 0x93, 0x03, 0x43, 0x83, 0x6f, 0x59, 0x30, 0xa5, 0x16, 0xfb, 0x63, 0xc8, 0xc1, 0x35, - 0xd3, 0x39, 0xb8, 0x6b, 0xc3, 0xba, 0x89, 0xb2, 0xe7, 0x03, 0x02, 0xb9, 0xef, 0x96, 0x01, 0xf8, - 0xd3, 0x3e, 0x1e, 0x2f, 0x13, 0xbe, 0x04, 0x23, 0x21, 0x6d, 0x07, 0x59, 0xcd, 0xc7, 0xcf, 0x0f, - 0x38, 0xe6, 0xfb, 0x77, 0x3b, 0xf7, 0x3b, 0xb5, 0x1e, 0xfd, 0xbf, 0x3d, 0xb5, 0xde, 0x82, 0x73, - 0x9e, 0x1f, 0x51, 0xb7, 0x13, 0x4a, 0xcb, 0x79, 0x3d, 0x88, 0x94, 0x76, 0x28, 0x55, 0xde, 0x28, - 0x19, 0x9d, 0x5b, 0xe9, 0x47, 0x84, 0xfd, 0xdb, 0xb2, 0x29, 0x4d, 0x10, 0xf2, 0x3e, 0x92, 0x4e, - 0x2f, 0x48, 0x38, 0x2a, 0x0a, 0xbd, 0x21, 0x56, 0x6b, 0xc9, 0x85, 0xa3, 0xcc, 0x86, 0x58, 0xbd, - 0xba, 0x85, 0x9a, 0xa6, 0xbf, 0x56, 0x2c, 0xe7, 0xa4, 0x15, 0xe1, 0xc4, 0x5a, 0x31, 0xd9, 0x9f, - 0x13, 0x03, 0x1f, 0x82, 0x48, 0x8c, 0xf5, 0xe4, 0x40, 0x63, 0xfd, 0x12, 0x4c, 0x7b, 0x7e, 0x83, - 0x86, 0x5e, 0x4c, 0xab, 0x7c, 0x2f, 0xcc, 0x4e, 0xf1, 0x89, 0x50, 0x99, 0xaf, 0x95, 0x14, 0x16, - 0x33, 0xd4, 0x69, 0xa5, 0x32, 0x7d, 0x0c, 0xa5, 0x32, 0x40, 0x95, 0x9f, 0xca, 0x47, 0x95, 0x9f, - 0x1e, 0x5e, 0x95, 0xcf, 0x3c, 0x52, 0x55, 0x4e, 0x72, 0x51, 0xe5, 0x4f, 0xc3, 0x68, 0x3b, 0x0c, - 0x0e, 0xba, 0xb3, 0x67, 0xd2, 0xee, 0xf9, 0x26, 0x03, 0xa2, 0xc0, 0x99, 0xc5, 0x7b, 0x67, 0x1f, - 0x5c, 0xbc, 0x67, 0xbf, 0x5e, 0x80, 0x73, 0x5a, 0xd3, 0xb1, 0xf5, 0xe5, 0xd5, 0xd8, 0x5e, 0xe7, - 0xb7, 0x42, 0x45, 0xc1, 0x88, 0x91, 0x74, 0xd5, 0xf9, 0x5b, 0x85, 0x41, 0x83, 0x8a, 0xe7, 0x2e, - 0x69, 0xc8, 0x4b, 0x8e, 0xb3, 0x6a, 0x70, 0x49, 0xc2, 0x51, 0x51, 0xf0, 0x77, 0x01, 0x69, 0x18, - 0xcb, 0xf3, 0xa0, 0x6c, 0x35, 0xd5, 0x92, 0x46, 0xa1, 0x49, 0xc7, 0xdc, 0x45, 0x37, 0xd9, 0x82, - 0x4c, 0x15, 0x4e, 0x0a, 0x77, 0x51, 0xed, 0x3a, 0x85, 0x4d, 0xba, 0xc3, 0x93, 0xd4, 0xa3, 0xbd, - 0xdd, 0xe1, 0x59, 0x08, 0x45, 0x61, 0xff, 0xa7, 0x05, 0x6f, 0xe8, 0x3b, 0x15, 0x8f, 0xc1, 0xbc, - 0x1d, 0xa4, 0xcd, 0xdb, 0xd6, 0xf0, 0xe6, 0xad, 0x67, 0x14, 0x03, 0x4c, 0xdd, 0x5f, 0x59, 0x30, - 0xad, 0xe9, 0x1f, 0xc3, 0x50, 0xbd, 0x5c, 0x5f, 0xf8, 0xd3, 0x5d, 0x17, 0xa5, 0xb0, 0xa9, 0xb1, - 0x7d, 0x8b, 0x8f, 0x4d, 0x04, 0x73, 0x8b, 0x6e, 0xf2, 0x84, 0xce, 0x11, 0x41, 0x4c, 0x17, 0xc6, - 0xf8, 0x23, 0x04, 0x51, 0x3e, 0x41, 0x65, 0x5a, 0x3e, 0x3f, 0x7d, 0xd2, 0x41, 0x25, 0xff, 0x19, - 0xa1, 0x14, 0xc8, 0x0b, 0xe2, 0xbd, 0x88, 0xe9, 0xcb, 0xaa, 0x4c, 0xf7, 0xea, 0x82, 0x78, 0x09, - 0x47, 0x45, 0x61, 0xb7, 0x60, 0x36, 0xcd, 0x7c, 0x99, 0xd6, 0x78, 0xee, 0xee, 0x58, 0xc3, 0x5c, - 0x80, 0xb2, 0xc3, 0x5b, 0xad, 0x76, 0x9c, 0xec, 0x3b, 0x3a, 0x8b, 0x09, 0x02, 0x35, 0x8d, 0xfd, - 0x5b, 0x16, 0x9c, 0xe9, 0x33, 0x98, 0x1c, 0xd3, 0xdc, 0xb1, 0xd6, 0x02, 0x03, 0xde, 0x36, 0xaa, - 0xd2, 0x9a, 0x93, 0x64, 0x87, 0x0c, 0xad, 0xb6, 0x2c, 0xc0, 0x98, 0xe0, 0xed, 0x7f, 0xb1, 0xe0, - 0x54, 0xba, 0xaf, 0x11, 0xb9, 0x01, 0x44, 0x0c, 0x66, 0xd9, 0x8b, 0xdc, 0x60, 0x8f, 0x86, 0x5d, - 0x36, 0x72, 0xd1, 0xeb, 0x0b, 0x92, 0x13, 0x59, 0xec, 0xa1, 0xc0, 0x3e, 0xad, 0x78, 0xdd, 0x71, - 0x55, 0xcd, 0x76, 0xb2, 0x52, 0x6e, 0xe7, 0xb9, 0x52, 0xf4, 0xc7, 0x34, 0x23, 0x68, 0x25, 0x12, - 0x4d, 0xf9, 0xf6, 0xb7, 0x47, 0x40, 0x9d, 0x83, 0xf1, 0x3c, 0x44, 0x4e, 0x59, 0x9c, 0xd4, 0x63, - 0x4b, 0xc5, 0x13, 0x3c, 0xb6, 0x34, 0xf2, 0xa0, 0x1c, 0x81, 0x78, 0xf9, 0x47, 0xfb, 0xa2, 0x86, - 0xd2, 0xdf, 0xd6, 0x28, 0x34, 0xe9, 0x58, 0x4f, 0x9a, 0xde, 0x1e, 0x15, 0x8d, 0xc6, 0xd2, 0x3d, - 0x59, 0x4d, 0x10, 0xa8, 0x69, 0x58, 0x4f, 0xaa, 0x5e, 0xad, 0x26, 0x23, 0x45, 0xd5, 0x13, 0x36, - 0x3b, 0xc8, 0x31, 0x8c, 0xa2, 0x11, 0x04, 0xbb, 0xd2, 0xff, 0x53, 0x14, 0xd7, 0x83, 0x60, 0x17, - 0x39, 0x86, 0x79, 0x2c, 0x7e, 0x10, 0xb6, 0x9c, 0xa6, 0xf7, 0x01, 0x5a, 0x55, 0x52, 0xa4, 0xdf, - 0xa7, 0x3c, 0x96, 0xf5, 0x5e, 0x12, 0xec, 0xd7, 0x8e, 0xad, 0xc0, 0x76, 0x48, 0xab, 0x9e, 0x1b, - 0x9b, 0xdc, 0x20, 0xbd, 0x02, 0x37, 0x7b, 0x28, 0xb0, 0x4f, 0x2b, 0xb2, 0x08, 0xa7, 0x92, 0x73, - 0xcc, 0xa4, 0x7e, 0x45, 0x38, 0x83, 0xca, 0x0f, 0xc7, 0x34, 0x1a, 0xb3, 0xf4, 0x4c, 0xdb, 0xb4, - 0x64, 0x15, 0x11, 0x77, 0x13, 0x0d, 0x6d, 0x93, 0x54, 0x17, 0xa1, 0xa2, 0xb0, 0x3f, 0x56, 0x64, - 0xd6, 0x71, 0xc0, 0xcd, 0xe0, 0xc7, 0x96, 0x35, 0x4c, 0xaf, 0xc8, 0x91, 0x63, 0xac, 0xc8, 0xe7, - 0x61, 0xf2, 0x6e, 0x14, 0xf8, 0x2a, 0x23, 0x37, 0x3a, 0x30, 0x23, 0x67, 0x50, 0xf5, 0xcf, 0xc8, - 0x8d, 0xe5, 0x95, 0x91, 0x1b, 0x7f, 0xc8, 0x8c, 0xdc, 0x9f, 0x8e, 0xc2, 0x79, 0x75, 0x96, 0x4d, - 0xe3, 0xfd, 0x20, 0xdc, 0xf5, 0xfc, 0x3a, 0x3f, 0xff, 0xfd, 0xb2, 0x05, 0x93, 0x62, 0xbf, 0xc8, - 0x47, 0x19, 0xc4, 0x79, 0x67, 0x2d, 0xa7, 0x7b, 0x73, 0x29, 0x61, 0xf3, 0xdb, 0x86, 0xa0, 0xcc, - 0x0b, 0x19, 0x26, 0x0a, 0x53, 0x3d, 0x22, 0x1f, 0x02, 0x48, 0xde, 0xfc, 0xaa, 0xe5, 0xf4, 0xf2, - 0x59, 0xd2, 0x3f, 0xa4, 0x35, 0xed, 0x9b, 0x6e, 0x2b, 0x21, 0x68, 0x08, 0x24, 0xaf, 0x5b, 0xea, - 0x9e, 0x8a, 0x38, 0xcd, 0x7a, 0xf5, 0x91, 0xcc, 0xcd, 0x71, 0xae, 0xad, 0x20, 0x8c, 0x7b, 0x7e, - 0x9d, 0xad, 0x13, 0x99, 0xc4, 0x7c, 0x4b, 0xbf, 0xda, 0x89, 0xd5, 0xc0, 0xa9, 0x56, 0x9c, 0xa6, - 0xe3, 0xbb, 0x34, 0x5c, 0x11, 0xe4, 0xe6, 0xc3, 0x4f, 0x1c, 0x80, 0x09, 0xa3, 0x9e, 0x8b, 0xa1, - 0xa3, 0xc7, 0xb9, 0x18, 0x7a, 0xe1, 0xdd, 0x30, 0xd3, 0xf3, 0x31, 0x4f, 0x74, 0x6d, 0xe5, 0xe1, - 0x6f, 0xbc, 0xd8, 0x7f, 0x38, 0xa6, 0x8d, 0xd6, 0x7a, 0x50, 0x15, 0xd7, 0x13, 0x43, 0xfd, 0x45, - 0xa5, 0xef, 0x99, 0xe3, 0x12, 0x31, 0x1e, 0x8f, 0x52, 0x40, 0x34, 0x45, 0xb2, 0x35, 0xda, 0x76, - 0x42, 0xea, 0x3f, 0xea, 0x35, 0xba, 0xa9, 0x84, 0xa0, 0x21, 0x90, 0x34, 0x52, 0xc7, 0xad, 0x57, - 0x87, 0x3f, 0x6e, 0x65, 0xee, 0x70, 0xdf, 0x6b, 0x64, 0x9f, 0xb3, 0x60, 0xda, 0x4f, 0xad, 0x5c, - 0x79, 0xe4, 0xb6, 0xfd, 0x28, 0x76, 0x85, 0xb8, 0x16, 0x9e, 0x86, 0x61, 0x46, 0x7e, 0x3f, 0x93, - 0x36, 0x7a, 0x42, 0x93, 0xa6, 0xef, 0x39, 0x8f, 0x0d, 0xba, 0xe7, 0x4c, 0x7c, 0xf5, 0xc2, 0xc1, - 0x78, 0xee, 0x2f, 0x1c, 0x40, 0x9f, 0xd7, 0x0d, 0xee, 0x40, 0xd9, 0x0d, 0xa9, 0x13, 0x3f, 0xe4, - 0x65, 0x77, 0xfe, 0x5c, 0xdf, 0x52, 0xc2, 0x00, 0x35, 0x2f, 0xfb, 0xcf, 0x8b, 0x70, 0x3a, 0x99, - 0x91, 0xe4, 0x28, 0x8a, 0xd9, 0x47, 0x21, 0x57, 0x3b, 0xb7, 0xca, 0x3e, 0x5e, 0x4f, 0x10, 0xa8, - 0x69, 0x98, 0x3f, 0xd6, 0x89, 0xe8, 0x46, 0x9b, 0xfa, 0xab, 0xde, 0x4e, 0xc4, 0x67, 0xdc, 0x28, - 0x5f, 0xbb, 0xa5, 0x51, 0x68, 0xd2, 0x31, 0x67, 0x5c, 0xf8, 0xc5, 0x51, 0xf6, 0x64, 0x57, 0xfa, - 0xdb, 0x98, 0xe0, 0xc9, 0x97, 0xfa, 0x3e, 0x55, 0x92, 0x4f, 0x4d, 0x43, 0xcf, 0x09, 0xdc, 0x09, - 0xdf, 0x28, 0xf9, 0xac, 0x05, 0xa7, 0x76, 0x53, 0xb5, 0x33, 0x89, 0x4a, 0x1e, 0xb2, 0xca, 0x33, - 0x5d, 0x90, 0xa3, 0x97, 0x70, 0x1a, 0x1e, 0x61, 0x56, 0xba, 0xfd, 0xef, 0x16, 0x98, 0xea, 0xe9, - 0x78, 0x9e, 0x95, 0xf1, 0xf8, 0x54, 0xe1, 0x88, 0xc7, 0xa7, 0x12, 0x27, 0xac, 0x78, 0x3c, 0xa7, - 0x7f, 0xe4, 0x04, 0x4e, 0xff, 0xe8, 0x40, 0xaf, 0xed, 0x8d, 0x50, 0xec, 0x78, 0x55, 0xe9, 0xb7, - 0xeb, 0xc3, 0xb0, 0x95, 0x65, 0x64, 0x70, 0xfb, 0xf7, 0x47, 0x75, 0x9c, 0x2e, 0x8f, 0xe2, 0x7f, - 0x20, 0x86, 0x5d, 0x53, 0x45, 0xbb, 0x62, 0xe4, 0xeb, 0x3d, 0x45, 0xbb, 0xef, 0x3a, 0x79, 0xa5, - 0x85, 0x98, 0xa0, 0x41, 0x35, 0xbb, 0xe3, 0x47, 0x94, 0x59, 0xdc, 0x85, 0x12, 0x0b, 0x6d, 0x78, - 0xc2, 0xad, 0x94, 0xea, 0x54, 0xe9, 0xba, 0x84, 0xdf, 0x3f, 0x9c, 0x7b, 0xe7, 0xc9, 0xbb, 0x95, - 0xb4, 0x46, 0xc5, 0x9f, 0x44, 0x50, 0x66, 0x7f, 0xf3, 0x8a, 0x10, 0x19, 0x34, 0xdd, 0x52, 0xba, - 0x28, 0x41, 0xe4, 0x52, 0x6e, 0xa2, 0xe5, 0x10, 0x1f, 0xca, 0xfc, 0x99, 0x24, 0x2e, 0x54, 0xc4, - 0x56, 0x9b, 0xaa, 0x2e, 0x23, 0x41, 0xdc, 0x3f, 0x9c, 0x7b, 0xf1, 0xe4, 0x42, 0x55, 0x73, 0xd4, - 0x22, 0xec, 0xbf, 0x2f, 0xea, 0xb5, 0x2b, 0x6b, 0xb5, 0x7f, 0x20, 0xd6, 0xee, 0x0b, 0x99, 0xb5, - 0x7b, 0xa9, 0x67, 0xed, 0x4e, 0xeb, 0xa7, 0x84, 0x52, 0xab, 0xf1, 0x71, 0x1b, 0xd8, 0xa3, 0xe3, - 0x78, 0xee, 0x59, 0xbc, 0xd6, 0xf1, 0x42, 0x1a, 0x6d, 0x86, 0x1d, 0xdf, 0xf3, 0xeb, 0xf2, 0x41, - 0x49, 0xc3, 0xb3, 0x48, 0xa1, 0x31, 0x4b, 0x6f, 0x7f, 0x85, 0x9f, 0x77, 0x1a, 0xc5, 0x65, 0xec, - 0x2b, 0x37, 0xf9, 0x4b, 0x53, 0xa2, 0x9a, 0x55, 0x7d, 0x65, 0xf1, 0xbc, 0x94, 0xc0, 0x91, 0x7d, - 0x18, 0xdf, 0x11, 0xaf, 0x5d, 0xe4, 0x73, 0xbd, 0x4a, 0x3e, 0x9d, 0xc1, 0x2f, 0xb2, 0x26, 0xef, - 0x68, 0xdc, 0xd7, 0x7f, 0x62, 0x22, 0xcd, 0xfe, 0x95, 0x22, 0x9c, 0xca, 0xbc, 0x83, 0xc4, 0x02, - 0xfe, 0xe4, 0xd1, 0xab, 0x6c, 0x76, 0x5e, 0x3d, 0xcb, 0xac, 0x28, 0xc8, 0xfb, 0x01, 0xaa, 0xb4, - 0xdd, 0x0c, 0xba, 0xdc, 0x71, 0x19, 0x39, 0xb1, 0xe3, 0xa2, 0x7c, 0xdd, 0x65, 0xc5, 0x05, 0x0d, - 0x8e, 0xb2, 0x84, 0x77, 0x54, 0xbc, 0xe5, 0x91, 0x2e, 0xe1, 0x35, 0x6e, 0x19, 0x8e, 0x3d, 0xde, - 0x5b, 0x86, 0x1e, 0x9c, 0x12, 0x5d, 0x54, 0x25, 0x5c, 0x0f, 0x51, 0xa9, 0x75, 0x86, 0xad, 0xa8, - 0xe5, 0x34, 0x1b, 0xcc, 0xf2, 0xb5, 0x3f, 0x53, 0x60, 0xee, 0x9b, 0x98, 0xec, 0xb5, 0x24, 0x39, - 0xfe, 0x66, 0x18, 0x73, 0x3a, 0x71, 0x23, 0xe8, 0x79, 0x7d, 0x64, 0x91, 0x43, 0x51, 0x62, 0xc9, - 0x2a, 0x8c, 0x54, 0x9d, 0x38, 0xf9, 0xb7, 0x02, 0x27, 0xe9, 0x9c, 0xce, 0x84, 0x39, 0x31, 0x45, - 0xce, 0x85, 0x3c, 0x05, 0x23, 0xb1, 0x53, 0x4f, 0xbd, 0x1e, 0xba, 0xed, 0xd4, 0x23, 0xe4, 0x50, - 0xd3, 0xba, 0x8c, 0x1c, 0x61, 0x5d, 0x5e, 0x34, 0xfe, 0xe1, 0x85, 0x71, 0xea, 0xd2, 0xfb, 0x4f, - 0x2a, 0xc4, 0xa5, 0x82, 0x14, 0xad, 0xfd, 0x63, 0x30, 0x69, 0xfe, 0x13, 0x8b, 0x63, 0xdd, 0x73, - 0xb2, 0xff, 0x69, 0x04, 0xa6, 0x52, 0x65, 0x7e, 0xa9, 0x55, 0x6e, 0x1d, 0xb9, 0xca, 0xf9, 0x79, - 0x5a, 0xc7, 0xa7, 0xb2, 0x88, 0xd3, 0x38, 0x4f, 0xeb, 0xf8, 0x14, 0x05, 0x8e, 0x7d, 0x95, 0x6a, - 0xd8, 0xc5, 0x8e, 0x2f, 0xb3, 0xf2, 0xea, 0xab, 0x2c, 0x73, 0x28, 0x4a, 0x2c, 0x0b, 0x60, 0x27, - 0x23, 0xae, 0x14, 0x85, 0x8e, 0x90, 0xbb, 0xe6, 0x46, 0x1e, 0x2f, 0xb6, 0xc9, 0x92, 0x56, 0x1e, - 0xd0, 0x9b, 0x10, 0x4c, 0x49, 0x24, 0x1f, 0xb7, 0xcc, 0xb7, 0xea, 0xc6, 0xf2, 0x38, 0x4d, 0xca, - 0x56, 0x51, 0x8a, 0x1d, 0xf4, 0xe0, 0x27, 0xeb, 0x22, 0xb5, 0x81, 0xc7, 0x1f, 0xcd, 0x06, 0x86, - 0x3e, 0x9b, 0xf7, 0xad, 0x50, 0x6e, 0x39, 0xbe, 0x57, 0xa3, 0x51, 0x2c, 0xfe, 0x01, 0x4d, 0x59, - 0x44, 0x4f, 0x6b, 0x09, 0x10, 0x35, 0x9e, 0xff, 0x9b, 0x27, 0x3e, 0x30, 0x11, 0xc4, 0x94, 0x8d, - 0x7f, 0xf3, 0xa4, 0xc1, 0x68, 0xd2, 0xd8, 0xbf, 0x63, 0xc1, 0xb9, 0xbe, 0x93, 0xf1, 0xfd, 0x9b, - 0xfe, 0xb4, 0x7f, 0xb7, 0x00, 0x67, 0xfa, 0x94, 0xc1, 0x92, 0xee, 0x23, 0x7b, 0xd2, 0x50, 0xd6, - 0xd9, 0x4e, 0x0d, 0x5c, 0x1b, 0x27, 0x33, 0x43, 0xda, 0x14, 0x14, 0x1f, 0xab, 0x29, 0xb0, 0xbf, - 0x52, 0x00, 0xe3, 0xf1, 0x4d, 0xf2, 0x61, 0xb3, 0xe2, 0xdb, 0xca, 0xab, 0x3a, 0x59, 0x30, 0x57, - 0x15, 0xe3, 0x62, 0xd6, 0xfa, 0x15, 0x90, 0x67, 0xd7, 0x6b, 0xe1, 0xe8, 0xf5, 0x4a, 0x9a, 0x49, - 0x69, 0x7d, 0x31, 0xff, 0xd2, 0xfa, 0x72, 0x4f, 0x59, 0xfd, 0x2f, 0x59, 0x62, 0xa5, 0x65, 0x86, - 0xa4, 0x35, 0xac, 0xf5, 0x00, 0x0d, 0xfb, 0x36, 0x28, 0x45, 0xb4, 0x59, 0x63, 0x9e, 0x9d, 0xd4, - 0xc4, 0xfa, 0xad, 0x6f, 0x09, 0x47, 0x45, 0xc1, 0xef, 0xed, 0x36, 0x9b, 0xc1, 0xfe, 0x95, 0x56, - 0x3b, 0xee, 0x4a, 0x9d, 0xac, 0xef, 0xed, 0x2a, 0x0c, 0x1a, 0x54, 0xf6, 0x7f, 0x58, 0xe2, 0x73, - 0x4a, 0x1f, 0xfd, 0x85, 0xcc, 0x7d, 0xca, 0xe3, 0xbb, 0xb7, 0x3f, 0x07, 0xe0, 0xaa, 0xf7, 0x10, - 0xf2, 0x79, 0x93, 0x53, 0xbf, 0xaf, 0x60, 0x3e, 0x14, 0x99, 0xc0, 0xd0, 0x90, 0x97, 0xda, 0x3c, - 0xc5, 0xa3, 0x36, 0x8f, 0xfd, 0xaf, 0x16, 0xa4, 0x8c, 0x05, 0x69, 0xc3, 0x28, 0xeb, 0x41, 0x37, - 0x9f, 0xd7, 0x1b, 0x4c, 0xd6, 0x6c, 0x63, 0xc9, 0x65, 0xc1, 0xff, 0x44, 0x21, 0x88, 0x34, 0xa5, - 0x77, 0x5e, 0xc8, 0xe3, 0x85, 0x11, 0x53, 0x20, 0xf3, 0xef, 0xe5, 0xbf, 0xf4, 0x50, 0x9e, 0xbe, - 0xfd, 0x02, 0xcc, 0xf4, 0x74, 0x8a, 0xdf, 0x86, 0x0a, 0x92, 0x27, 0x2b, 0x8c, 0x15, 0xc8, 0xef, - 0x66, 0xa2, 0xc0, 0x31, 0x07, 0xff, 0x74, 0x96, 0x3d, 0xf9, 0xa2, 0x05, 0x33, 0x51, 0x96, 0xdf, - 0xa3, 0x9a, 0x3b, 0x95, 0xb9, 0xea, 0x41, 0x61, 0x6f, 0x27, 0xec, 0xff, 0x91, 0xea, 0x49, 0xfc, - 0x0b, 0x34, 0x65, 0x5c, 0xac, 0x81, 0xc6, 0x85, 0x6d, 0x31, 0xb7, 0x41, 0xab, 0x9d, 0x66, 0x4f, - 0x6d, 0xce, 0x96, 0x84, 0xa3, 0xa2, 0x48, 0xbd, 0xcd, 0x57, 0x3c, 0xf2, 0x6d, 0xbe, 0xe7, 0x61, - 0xd2, 0x7c, 0x96, 0x85, 0xa7, 0xd0, 0xe4, 0xe1, 0x83, 0xf9, 0x82, 0x0b, 0xa6, 0xa8, 0x32, 0x6f, - 0xbb, 0x8d, 0x1e, 0xf9, 0xb6, 0xdb, 0x33, 0x50, 0x92, 0xef, 0x94, 0x25, 0xf9, 0x5d, 0x51, 0xf8, - 0x23, 0x61, 0xa8, 0xb0, 0x4c, 0x41, 0xb4, 0x1c, 0xbf, 0xe3, 0x34, 0xd9, 0x0c, 0xc9, 0x7a, 0x40, - 0xb5, 0xb3, 0xd6, 0x14, 0x06, 0x0d, 0x2a, 0x36, 0xe2, 0xd8, 0x6b, 0xd1, 0x57, 0x02, 0x3f, 0xc9, - 0x8c, 0xa8, 0x11, 0x6f, 0x4b, 0x38, 0x2a, 0x0a, 0xfb, 0x1f, 0x2d, 0xc8, 0x3e, 0xb2, 0x94, 0xaa, - 0x41, 0xb4, 0x8e, 0xac, 0x41, 0x4c, 0xd7, 0x57, 0x15, 0x8e, 0x55, 0x5f, 0x65, 0x96, 0x3e, 0x15, - 0x1f, 0x58, 0xfa, 0xf4, 0x26, 0x7d, 0xa7, 0x5e, 0xd4, 0x48, 0x4d, 0xf4, 0xbb, 0x4f, 0x4f, 0x6c, - 0x18, 0x73, 0x1d, 0x55, 0xe2, 0x3d, 0x29, 0xdc, 0xaa, 0xa5, 0x45, 0x4e, 0x24, 0x31, 0x95, 0xf9, - 0xaf, 0x7d, 0xe7, 0xe2, 0x13, 0x5f, 0xff, 0xce, 0xc5, 0x27, 0xbe, 0xf9, 0x9d, 0x8b, 0x4f, 0x7c, - 0xf4, 0xde, 0x45, 0xeb, 0x6b, 0xf7, 0x2e, 0x5a, 0x5f, 0xbf, 0x77, 0xd1, 0xfa, 0xe6, 0xbd, 0x8b, - 0xd6, 0xb7, 0xef, 0x5d, 0xb4, 0x3e, 0xf7, 0x77, 0x17, 0x9f, 0x78, 0xa5, 0x94, 0xac, 0xec, 0xff, - 0x0d, 0x00, 0x00, 0xff, 0xff, 0x55, 0xf2, 0x31, 0x9f, 0x7e, 0x77, 0x00, 0x00, + // 6883 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x5b, 0x8c, 0x24, 0xc9, + 0x55, 0xe8, 0x66, 0x55, 0x3f, 0xaa, 0x4e, 0x3f, 0x66, 0x3a, 0xe6, 0xb1, 0xed, 0xb9, 0xeb, 0xe9, + 0x51, 0xae, 0x6c, 0xef, 0xbd, 0xf6, 0x76, 0xdf, 0x9d, 0xbb, 0xf6, 0x5d, 0xbc, 0x66, 0x4d, 0x57, + 0xf7, 0x3c, 0x7a, 0xa6, 0x5f, 0x7b, 0xba, 0x67, 0x06, 0xaf, 0x8d, 0xd9, 0xec, 0xac, 0xa8, 0xaa, + 0x9c, 0xae, 0xca, 0xac, 0xcd, 0xcc, 0xea, 0xee, 0xb2, 0xb1, 0xbd, 0x96, 0x0c, 0x5e, 0xc9, 0x4f, + 0xd9, 0x7c, 0xd8, 0x12, 0x02, 0xf3, 0x10, 0x12, 0x1f, 0x16, 0xe2, 0x0b, 0x10, 0xe2, 0x03, 0xf3, + 0x63, 0xc4, 0x07, 0x96, 0x40, 0xd8, 0x60, 0x68, 0xec, 0x01, 0x64, 0x40, 0x02, 0x04, 0xf8, 0x87, + 0x11, 0x42, 0x28, 0x1e, 0x19, 0x11, 0x99, 0x55, 0x35, 0xdd, 0x3d, 0x95, 0x33, 0x58, 0x16, 0x7f, + 0x5d, 0xe7, 0x9c, 0x38, 0xe7, 0x44, 0x64, 0xc4, 0x89, 0x73, 0x4e, 0x9c, 0x88, 0x86, 0xd5, 0xba, + 0x17, 0x37, 0x3a, 0x3b, 0xf3, 0x6e, 0xd0, 0x5a, 0x70, 0xc2, 0x7a, 0xd0, 0x0e, 0x83, 0xbb, 0xfc, + 0x8f, 0x67, 0xdd, 0xea, 0xc2, 0xde, 0xe5, 0x85, 0xf6, 0x6e, 0x7d, 0xc1, 0x69, 0x7b, 0xd1, 0x82, + 0xd3, 0x6e, 0x37, 0x3d, 0xd7, 0x89, 0xbd, 0xc0, 0x5f, 0xd8, 0x7b, 0xce, 0x69, 0xb6, 0x1b, 0xce, + 0x73, 0x0b, 0x75, 0xea, 0xd3, 0xd0, 0x89, 0x69, 0x75, 0xbe, 0x1d, 0x06, 0x71, 0x40, 0xde, 0xa3, + 0xb9, 0xcd, 0x27, 0xdc, 0xf8, 0x1f, 0x3f, 0xe9, 0x56, 0xe7, 0xf7, 0x2e, 0xcf, 0xb7, 0x77, 0xeb, + 0xf3, 0x8c, 0xdb, 0xbc, 0xc1, 0x6d, 0x3e, 0xe1, 0x76, 0xe1, 0x59, 0x43, 0x97, 0x7a, 0x50, 0x0f, + 0x16, 0x38, 0xd3, 0x9d, 0x4e, 0x8d, 0xff, 0xe2, 0x3f, 0xf8, 0x5f, 0x42, 0xd8, 0x05, 0x7b, 0xf7, + 0x85, 0x68, 0xde, 0x0b, 0x98, 0x7a, 0x0b, 0x6e, 0x10, 0xd2, 0x85, 0xbd, 0x1e, 0x85, 0x2e, 0x3c, + 0xaf, 0x69, 0x5a, 0x8e, 0xdb, 0xf0, 0x7c, 0x1a, 0x76, 0x75, 0x9f, 0x5a, 0x34, 0x76, 0xfa, 0xb5, + 0x5a, 0x18, 0xd4, 0x2a, 0xec, 0xf8, 0xb1, 0xd7, 0xa2, 0x3d, 0x0d, 0xde, 0x75, 0x54, 0x83, 0xc8, + 0x6d, 0xd0, 0x96, 0x93, 0x6d, 0x67, 0xbf, 0x06, 0x53, 0x8b, 0x77, 0xb6, 0x16, 0x3b, 0x71, 0x63, + 0x29, 0xf0, 0x6b, 0x5e, 0x9d, 0xbc, 0x13, 0x26, 0xdc, 0x66, 0x27, 0x8a, 0x69, 0xb8, 0xee, 0xb4, + 0xe8, 0xac, 0x75, 0xc9, 0x7a, 0xa6, 0x5c, 0x39, 0xf3, 0xf5, 0xc3, 0xb9, 0x27, 0xee, 0x1d, 0xce, + 0x4d, 0x2c, 0x69, 0x14, 0x9a, 0x74, 0xe4, 0x7f, 0xc3, 0x78, 0x18, 0x34, 0xe9, 0x22, 0xae, 0xcf, + 0x16, 0x78, 0x93, 0x53, 0xb2, 0xc9, 0x38, 0x0a, 0x30, 0x26, 0x78, 0xfb, 0x4f, 0x0b, 0x00, 0x8b, + 0xed, 0xf6, 0x66, 0x18, 0xdc, 0xa5, 0x6e, 0x4c, 0x5e, 0x85, 0x12, 0x1b, 0x85, 0xaa, 0x13, 0x3b, + 0x5c, 0xda, 0xc4, 0xe5, 0xff, 0x3b, 0x2f, 0x3a, 0x33, 0x6f, 0x76, 0x46, 0x7f, 0x39, 0x46, 0x3d, + 0xbf, 0xf7, 0xdc, 0xfc, 0xc6, 0x0e, 0x6b, 0xbf, 0x46, 0x63, 0xa7, 0x42, 0xa4, 0x30, 0xd0, 0x30, + 0x54, 0x5c, 0x89, 0x0f, 0x23, 0x51, 0x9b, 0xba, 0x5c, 0xb1, 0x89, 0xcb, 0xab, 0xf3, 0xc3, 0x4c, + 0x91, 0x79, 0xad, 0xf9, 0x56, 0x9b, 0xba, 0x95, 0x49, 0x29, 0x79, 0x84, 0xfd, 0x42, 0x2e, 0x87, + 0xec, 0xc1, 0x58, 0x14, 0x3b, 0x71, 0x27, 0x9a, 0x2d, 0x72, 0x89, 0xeb, 0xb9, 0x49, 0xe4, 0x5c, + 0x2b, 0xd3, 0x52, 0xe6, 0x98, 0xf8, 0x8d, 0x52, 0x9a, 0xfd, 0x97, 0x16, 0x4c, 0x6b, 0xe2, 0x55, + 0x2f, 0x8a, 0xc9, 0x07, 0x7a, 0x06, 0x77, 0xfe, 0x78, 0x83, 0xcb, 0x5a, 0xf3, 0xa1, 0x3d, 0x2d, + 0x85, 0x95, 0x12, 0x88, 0x31, 0xb0, 0x2d, 0x18, 0xf5, 0x62, 0xda, 0x8a, 0x66, 0x0b, 0x97, 0x8a, + 0xcf, 0x4c, 0x5c, 0xbe, 0x9e, 0x57, 0x3f, 0x2b, 0x53, 0x52, 0xe8, 0xe8, 0x0a, 0x63, 0x8f, 0x42, + 0x8a, 0xfd, 0x7d, 0x30, 0xfb, 0xc7, 0x06, 0x9c, 0x3c, 0x07, 0x13, 0x51, 0xd0, 0x09, 0x5d, 0x8a, + 0xb4, 0x1d, 0x44, 0xb3, 0xd6, 0xa5, 0x22, 0x9b, 0x7a, 0x6c, 0xa6, 0x6e, 0x69, 0x30, 0x9a, 0x34, + 0xe4, 0xb3, 0x16, 0x4c, 0x56, 0x69, 0x14, 0x7b, 0x3e, 0x97, 0x9f, 0x28, 0xbf, 0x3d, 0xb4, 0xf2, + 0x09, 0x70, 0x59, 0x33, 0xaf, 0x9c, 0x95, 0x1d, 0x99, 0x34, 0x80, 0x11, 0xa6, 0xe4, 0xb3, 0x15, + 0x57, 0xa5, 0x91, 0x1b, 0x7a, 0x6d, 0xf6, 0x9b, 0xcf, 0x19, 0x63, 0xc5, 0x2d, 0x6b, 0x14, 0x9a, + 0x74, 0xc4, 0x87, 0x51, 0xb6, 0xa2, 0xa2, 0xd9, 0x11, 0xae, 0xff, 0xca, 0x70, 0xfa, 0xcb, 0x41, + 0x65, 0x8b, 0x55, 0x8f, 0x3e, 0xfb, 0x15, 0xa1, 0x10, 0x43, 0x3e, 0x63, 0xc1, 0xac, 0x5c, 0xf1, + 0x48, 0xc5, 0x80, 0xde, 0x69, 0x78, 0x31, 0x6d, 0x7a, 0x51, 0x3c, 0x3b, 0xca, 0x75, 0x58, 0x38, + 0xde, 0xdc, 0xba, 0x16, 0x06, 0x9d, 0xf6, 0x4d, 0xcf, 0xaf, 0x56, 0x2e, 0x49, 0x49, 0xb3, 0x4b, + 0x03, 0x18, 0xe3, 0x40, 0x91, 0xe4, 0x8b, 0x16, 0x5c, 0xf0, 0x9d, 0x16, 0x8d, 0xda, 0x0e, 0xfb, + 0xb4, 0x02, 0x5d, 0x69, 0x3a, 0xee, 0x2e, 0xd7, 0x68, 0xec, 0xe1, 0x34, 0xb2, 0xa5, 0x46, 0x17, + 0xd6, 0x07, 0xb2, 0xc6, 0x07, 0x88, 0x25, 0xbf, 0x6c, 0xc1, 0x4c, 0x10, 0xb6, 0x1b, 0x8e, 0x4f, + 0xab, 0x09, 0x36, 0x9a, 0x1d, 0xe7, 0x4b, 0xef, 0x83, 0xc3, 0x7d, 0xa2, 0x8d, 0x2c, 0xdb, 0xb5, + 0xc0, 0xf7, 0xe2, 0x20, 0xdc, 0xa2, 0x71, 0xec, 0xf9, 0xf5, 0xa8, 0x72, 0xee, 0xde, 0xe1, 0xdc, + 0x4c, 0x0f, 0x15, 0xf6, 0xea, 0x43, 0x3e, 0x0c, 0x13, 0x51, 0xd7, 0x77, 0xef, 0x78, 0x7e, 0x35, + 0xd8, 0x8f, 0x66, 0x4b, 0x79, 0x2c, 0xdf, 0x2d, 0xc5, 0x50, 0x2e, 0x40, 0x2d, 0x00, 0x4d, 0x69, + 0xfd, 0x3f, 0x9c, 0x9e, 0x4a, 0xe5, 0xbc, 0x3f, 0x9c, 0x9e, 0x4c, 0x0f, 0x10, 0x4b, 0x3e, 0x69, + 0xc1, 0x54, 0xe4, 0xd5, 0x7d, 0x27, 0xee, 0x84, 0xf4, 0x26, 0xed, 0x46, 0xb3, 0xc0, 0x15, 0xb9, + 0x31, 0xe4, 0xa8, 0x18, 0x2c, 0x2b, 0xe7, 0xa4, 0x8e, 0x53, 0x26, 0x34, 0xc2, 0xb4, 0xdc, 0x7e, + 0x0b, 0x4d, 0x4f, 0xeb, 0x89, 0x7c, 0x17, 0x9a, 0x9e, 0xd4, 0x03, 0x45, 0xda, 0x7f, 0x50, 0x80, + 0xd3, 0xd9, 0x3d, 0x88, 0xfc, 0xaa, 0x05, 0xa7, 0xee, 0xee, 0xc7, 0xdb, 0xc1, 0x2e, 0xf5, 0xa3, + 0x4a, 0x97, 0x59, 0x0a, 0x6e, 0x7d, 0x27, 0x2e, 0xbb, 0xf9, 0xee, 0x76, 0xf3, 0x37, 0xd2, 0x52, + 0xae, 0xf8, 0x71, 0xd8, 0xad, 0x3c, 0x29, 0xfb, 0x73, 0xea, 0xc6, 0x9d, 0x6d, 0x13, 0x8b, 0x59, + 0xa5, 0x2e, 0x7c, 0xca, 0x82, 0xb3, 0xfd, 0x58, 0x90, 0xd3, 0x50, 0xdc, 0xa5, 0x5d, 0xe1, 0xe0, + 0x20, 0xfb, 0x93, 0xfc, 0x04, 0x8c, 0xee, 0x39, 0xcd, 0x0e, 0x95, 0x8e, 0xc2, 0xb5, 0xe1, 0x3a, + 0xa2, 0x34, 0x43, 0xc1, 0xf5, 0xdd, 0x85, 0x17, 0x2c, 0xfb, 0x8f, 0x8a, 0x30, 0x61, 0x6c, 0x15, + 0x8f, 0xc1, 0xf9, 0x09, 0x52, 0xce, 0xcf, 0x5a, 0x6e, 0xbb, 0xdc, 0x40, 0xef, 0x67, 0x3f, 0xe3, + 0xfd, 0x6c, 0xe4, 0x27, 0xf2, 0x81, 0xee, 0x0f, 0x89, 0xa1, 0x1c, 0xb4, 0x99, 0x73, 0xcb, 0x76, + 0xd1, 0x91, 0x3c, 0x3e, 0xe1, 0x46, 0xc2, 0xae, 0x32, 0x75, 0xef, 0x70, 0xae, 0xac, 0x7e, 0xa2, + 0x16, 0x64, 0x7f, 0xd3, 0x82, 0xb3, 0x86, 0x8e, 0x4b, 0x81, 0x5f, 0xf5, 0xf8, 0xa7, 0xbd, 0x04, + 0x23, 0x71, 0xb7, 0x9d, 0x78, 0xd0, 0x6a, 0xa4, 0xb6, 0xbb, 0x6d, 0x8a, 0x1c, 0xc3, 0x7c, 0xe6, + 0x16, 0x8d, 0x22, 0xa7, 0x4e, 0xb3, 0x3e, 0xf3, 0x9a, 0x00, 0x63, 0x82, 0x27, 0x21, 0x90, 0xa6, + 0x13, 0xc5, 0xdb, 0xa1, 0xe3, 0x47, 0x9c, 0xfd, 0xb6, 0xd7, 0xa2, 0x72, 0x80, 0xff, 0xcf, 0xf1, + 0x66, 0x0c, 0x6b, 0x51, 0x39, 0x7f, 0xef, 0x70, 0x8e, 0xac, 0xf6, 0x70, 0xc2, 0x3e, 0xdc, 0xed, + 0x2f, 0x5a, 0x70, 0xbe, 0xbf, 0x5b, 0x43, 0xde, 0x0a, 0x63, 0x11, 0x0d, 0xf7, 0x68, 0x28, 0x7b, + 0xa7, 0x3f, 0x09, 0x87, 0xa2, 0xc4, 0x92, 0x05, 0x28, 0x2b, 0x93, 0x2b, 0xfb, 0x38, 0x23, 0x49, + 0xcb, 0xda, 0x4e, 0x6b, 0x1a, 0x36, 0x68, 0xec, 0x87, 0x74, 0x82, 0xd4, 0xa0, 0xf1, 0x78, 0x83, + 0x63, 0xec, 0xbf, 0xb2, 0xe0, 0x94, 0xa1, 0xd5, 0x63, 0xf0, 0x72, 0xfd, 0xb4, 0x97, 0xbb, 0x92, + 0xdb, 0x7c, 0x1e, 0xe0, 0xe6, 0xfe, 0xfe, 0x28, 0xcc, 0x98, 0xb3, 0x9e, 0x9b, 0x63, 0x1e, 0x60, + 0xd1, 0x76, 0x70, 0x0b, 0x57, 0xe5, 0x98, 0xeb, 0x00, 0x4b, 0x80, 0x31, 0xc1, 0xb3, 0x41, 0x6c, + 0x3b, 0x71, 0x43, 0x0e, 0xb8, 0x1a, 0xc4, 0x4d, 0x27, 0x6e, 0x20, 0xc7, 0x90, 0x97, 0x60, 0x3a, + 0x76, 0xc2, 0x3a, 0x8d, 0x91, 0xee, 0x79, 0x51, 0xb2, 0x5e, 0xca, 0x95, 0xf3, 0x92, 0x76, 0x7a, + 0x3b, 0x85, 0xc5, 0x0c, 0x35, 0x79, 0x0d, 0x46, 0x1a, 0xb4, 0xd9, 0x92, 0x7e, 0xcd, 0x56, 0x7e, + 0x2b, 0x9c, 0xf7, 0xf5, 0x3a, 0x6d, 0xb6, 0x2a, 0x25, 0xa6, 0x32, 0xfb, 0x0b, 0xb9, 0x28, 0xf2, + 0xd3, 0x16, 0x94, 0x77, 0x3b, 0x51, 0x1c, 0xb4, 0xbc, 0x0f, 0xd1, 0xd9, 0x12, 0x17, 0xfc, 0xe3, + 0x39, 0x0b, 0xbe, 0x99, 0xf0, 0x17, 0xeb, 0x5d, 0xfd, 0x44, 0x2d, 0x99, 0xeb, 0x51, 0xf5, 0x42, + 0xea, 0xc6, 0x41, 0xd8, 0x9d, 0x85, 0x47, 0xa2, 0xc7, 0x72, 0xc2, 0x5f, 0xe8, 0xa1, 0x7e, 0xa2, + 0x96, 0x4c, 0xba, 0x30, 0xd6, 0x6e, 0x76, 0xea, 0x9e, 0x3f, 0x3b, 0xc1, 0x75, 0xb8, 0x95, 0xb3, + 0x0e, 0x9b, 0x9c, 0x79, 0x05, 0xd8, 0xaa, 0x16, 0x7f, 0xa3, 0x14, 0x48, 0x9e, 0x86, 0x51, 0xb7, + 0xe1, 0x84, 0xf1, 0xec, 0x24, 0x9f, 0x34, 0x6a, 0x16, 0x2f, 0x31, 0x20, 0x0a, 0x9c, 0xfd, 0x8b, + 0x05, 0xb8, 0x30, 0xb8, 0x63, 0x62, 0x3a, 0xbb, 0x9d, 0x30, 0x12, 0x06, 0xb2, 0x64, 0x4e, 0x67, + 0x0e, 0xc6, 0x04, 0x4f, 0x3e, 0x6e, 0xc1, 0xf8, 0xdd, 0x28, 0xf0, 0x7d, 0x1a, 0xcb, 0x5d, 0xec, + 0x76, 0xce, 0x7d, 0xbd, 0x21, 0xb8, 0x6b, 0x1d, 0x24, 0x00, 0x13, 0xb9, 0x4c, 0x5d, 0x7a, 0xe0, + 0x36, 0x3b, 0xd5, 0xc4, 0x34, 0x29, 0xd2, 0x2b, 0x02, 0x8c, 0x09, 0x9e, 0x91, 0x7a, 0xbe, 0x20, + 0x1d, 0x49, 0x93, 0xae, 0xf8, 0x92, 0x54, 0xe2, 0xed, 0xff, 0x1c, 0x85, 0x73, 0x7d, 0x67, 0x3f, + 0x99, 0x07, 0xe0, 0x4e, 0xc3, 0x55, 0x8f, 0x45, 0x78, 0x22, 0xac, 0x9d, 0x66, 0x7b, 0xfc, 0x6d, + 0x05, 0x45, 0x83, 0x82, 0x7c, 0x0c, 0xa0, 0xed, 0x84, 0x4e, 0x8b, 0xc6, 0x34, 0x4c, 0x0c, 0xd5, + 0xcd, 0xe1, 0x46, 0x89, 0xe9, 0xb1, 0x99, 0xf0, 0xd4, 0x4e, 0x86, 0x02, 0x45, 0x68, 0x88, 0x64, + 0x41, 0x6c, 0x48, 0x9b, 0xd4, 0x89, 0xe8, 0xba, 0xb6, 0xdf, 0x2a, 0x88, 0x45, 0x8d, 0x42, 0x93, + 0x8e, 0xc4, 0x30, 0xc6, 0x7b, 0x11, 0xc9, 0x0d, 0x7b, 0xc8, 0xe4, 0xcc, 0x56, 0x1c, 0x7a, 0x7e, + 0x7d, 0x23, 0x14, 0x9e, 0x90, 0xde, 0x96, 0xf8, 0xa8, 0x45, 0x28, 0x65, 0x91, 0xcf, 0x59, 0x30, + 0x5d, 0xf3, 0x9a, 0x54, 0xf7, 0x45, 0x06, 0xb0, 0x1b, 0xc3, 0x0f, 0xd9, 0x55, 0x93, 0xaf, 0x36, + 0xa8, 0x29, 0x70, 0x84, 0x19, 0xf1, 0x6c, 0xd2, 0xec, 0xd1, 0x90, 0x5b, 0xe2, 0xb1, 0xf4, 0xa4, + 0xb9, 0x2d, 0xc0, 0x98, 0xe0, 0xc9, 0x22, 0x9c, 0x6a, 0x3b, 0x51, 0xb4, 0x14, 0xd2, 0x2a, 0xf5, + 0x63, 0xcf, 0x69, 0x8a, 0xf0, 0xb2, 0xa4, 0x7d, 0xe2, 0xcd, 0x34, 0x1a, 0xb3, 0xf4, 0xe4, 0x7d, + 0xf0, 0xa4, 0x57, 0xf7, 0x83, 0x90, 0xae, 0x79, 0x51, 0xe4, 0xf9, 0x75, 0x3d, 0xa9, 0xb8, 0x61, + 0x2d, 0x55, 0xe6, 0x24, 0xab, 0x27, 0x57, 0xfa, 0x93, 0xe1, 0xa0, 0xf6, 0xe4, 0x1d, 0x50, 0x8a, + 0x76, 0xbd, 0xf6, 0x52, 0x58, 0x8d, 0x66, 0xcb, 0x9c, 0x97, 0xda, 0x5a, 0xb7, 0x24, 0x1c, 0x15, + 0x85, 0xfd, 0xe5, 0x02, 0xcc, 0x0e, 0x5a, 0x8d, 0x24, 0x62, 0x6b, 0x2e, 0xbe, 0xed, 0x84, 0x91, + 0x8c, 0x2c, 0x86, 0x0c, 0x50, 0x25, 0xdf, 0xdb, 0x4e, 0x68, 0xae, 0x5e, 0x2e, 0x00, 0x13, 0x49, + 0xe4, 0x2e, 0x8c, 0xc4, 0x4d, 0x27, 0xa7, 0x8c, 0x96, 0x21, 0x51, 0xfb, 0x7f, 0xab, 0x8b, 0x11, + 0x72, 0x19, 0xe4, 0x29, 0x18, 0x69, 0x7a, 0x3b, 0xcc, 0x4f, 0x66, 0xcb, 0x9b, 0x6f, 0x78, 0xab, + 0xde, 0x4e, 0x84, 0x1c, 0x6a, 0xff, 0xf3, 0x58, 0x1f, 0x03, 0xaa, 0xb6, 0x24, 0x72, 0x19, 0x80, + 0xf9, 0x43, 0x9b, 0x21, 0xad, 0x79, 0x07, 0xd2, 0x25, 0x50, 0x8b, 0x74, 0x5d, 0x61, 0xd0, 0xa0, + 0x4a, 0xda, 0x6c, 0x75, 0x6a, 0xac, 0x4d, 0xa1, 0xb7, 0x8d, 0xc0, 0xa0, 0x41, 0x45, 0x9e, 0x87, + 0x31, 0xaf, 0xe5, 0xd4, 0x69, 0xa2, 0xe6, 0x53, 0x6c, 0x3d, 0xad, 0x70, 0xc8, 0xfd, 0xc3, 0xb9, + 0x69, 0xa5, 0x10, 0x07, 0xa1, 0xa4, 0x25, 0xbf, 0x62, 0xc1, 0xa4, 0x1b, 0xb4, 0x5a, 0x81, 0xbf, + 0xea, 0xec, 0xd0, 0x66, 0x92, 0xa4, 0xba, 0xfb, 0xa8, 0x36, 0xec, 0xf9, 0x25, 0x43, 0x98, 0x08, + 0x11, 0x55, 0xea, 0xcd, 0x44, 0x61, 0x4a, 0x2b, 0x73, 0xd9, 0x8d, 0x1e, 0xb1, 0xec, 0x7e, 0xcb, + 0x82, 0x19, 0xd1, 0x76, 0xd1, 0xf7, 0x83, 0x58, 0xe6, 0x0e, 0x45, 0x96, 0x29, 0x78, 0xc4, 0xdd, + 0x32, 0x24, 0x8a, 0xbe, 0xbd, 0x49, 0xaa, 0x39, 0xd3, 0x83, 0xc7, 0x5e, 0x25, 0xc9, 0x35, 0x98, + 0xa9, 0x05, 0xa1, 0x4b, 0xcd, 0x81, 0x90, 0x36, 0x43, 0x31, 0xba, 0x9a, 0x25, 0xc0, 0xde, 0x36, + 0xe4, 0x36, 0x9c, 0x37, 0x80, 0xe6, 0x38, 0x08, 0xb3, 0x71, 0x51, 0x72, 0x3b, 0x7f, 0xb5, 0x2f, + 0x15, 0x0e, 0x68, 0x7d, 0xe1, 0xbd, 0x30, 0xd3, 0xf3, 0xfd, 0xfa, 0xc4, 0xe7, 0x67, 0xcd, 0xf8, + 0xbc, 0x6c, 0x84, 0xd5, 0x17, 0x96, 0xe1, 0x7c, 0xff, 0x91, 0x3a, 0x09, 0x17, 0xfb, 0xe7, 0x2d, + 0x78, 0x72, 0x80, 0x1f, 0xa4, 0x02, 0x13, 0x6b, 0x50, 0x60, 0x42, 0x1c, 0x28, 0x52, 0x7f, 0x4f, + 0x1a, 0x8e, 0xab, 0xc3, 0xcd, 0x88, 0x2b, 0xfe, 0x9e, 0xf8, 0xd0, 0xe3, 0xf7, 0x0e, 0xe7, 0x8a, + 0x57, 0xfc, 0x3d, 0x64, 0xbc, 0xed, 0x9f, 0x1d, 0x4b, 0xc5, 0x3e, 0x5b, 0x49, 0xb8, 0xcd, 0x15, + 0x95, 0x91, 0xcf, 0x46, 0xce, 0x73, 0xd1, 0x88, 0xed, 0x44, 0x12, 0x5d, 0x8a, 0x23, 0x9f, 0xb2, + 0x78, 0xde, 0x3a, 0x89, 0x09, 0xa5, 0x6b, 0xf6, 0x68, 0xd2, 0xe8, 0x66, 0x36, 0x3c, 0x01, 0xa2, + 0x29, 0x9d, 0xad, 0xe4, 0xb6, 0x48, 0x1b, 0x65, 0x1d, 0xb4, 0x24, 0xb3, 0x9d, 0xe0, 0xc9, 0x01, + 0x40, 0xd4, 0xf5, 0xdd, 0xcd, 0xa0, 0xe9, 0xb9, 0x5d, 0xe9, 0x77, 0xe4, 0x90, 0xfb, 0x14, 0xfc, + 0x84, 0x97, 0xa6, 0x7f, 0xa3, 0x21, 0x8b, 0x7c, 0xc5, 0x82, 0x19, 0xb1, 0x71, 0x2e, 0x7b, 0xb5, + 0x1a, 0x0d, 0xa9, 0xef, 0xd2, 0xc4, 0xf5, 0xb8, 0x33, 0x9c, 0x06, 0x49, 0xda, 0x6e, 0x25, 0xcb, + 0x5e, 0x2f, 0xf1, 0x1e, 0x14, 0xf6, 0x2a, 0x43, 0xaa, 0x30, 0xe2, 0xf9, 0xb5, 0x40, 0x1a, 0xb6, + 0xca, 0x70, 0x4a, 0xad, 0xf8, 0xb5, 0x40, 0xaf, 0x15, 0xf6, 0x0b, 0x39, 0x77, 0xb2, 0x0a, 0x67, + 0x43, 0x19, 0x4b, 0x5e, 0xf7, 0x22, 0x16, 0x10, 0xac, 0x7a, 0x2d, 0x2f, 0xe6, 0x46, 0xa9, 0x58, + 0x99, 0xbd, 0x77, 0x38, 0x77, 0x16, 0xfb, 0xe0, 0xb1, 0x6f, 0x2b, 0xfb, 0x8d, 0x72, 0x3a, 0x60, + 0x16, 0xe9, 0xa0, 0x8f, 0x40, 0x39, 0x54, 0x09, 0x78, 0xe1, 0x40, 0xac, 0xe6, 0x33, 0xc6, 0x32, + 0x0f, 0xa5, 0x32, 0x19, 0x3a, 0xd5, 0xae, 0x25, 0x32, 0x47, 0x82, 0x7d, 0x79, 0xb9, 0x2c, 0x72, + 0x98, 0x5f, 0x52, 0xaa, 0x4e, 0xb9, 0x75, 0x7d, 0x17, 0xb9, 0x0c, 0x12, 0xc2, 0x58, 0x83, 0x3a, + 0xcd, 0xb8, 0x21, 0x33, 0x42, 0x37, 0x86, 0x75, 0x63, 0x19, 0xaf, 0x6c, 0xb6, 0x4d, 0x40, 0x51, + 0x4a, 0x22, 0x07, 0x30, 0xde, 0x10, 0x1f, 0x41, 0xee, 0xed, 0x6b, 0xc3, 0x0e, 0x6e, 0xea, 0xcb, + 0xea, 0xf5, 0x2b, 0x01, 0x98, 0x88, 0x23, 0x3f, 0x63, 0x01, 0xb8, 0x49, 0x9a, 0x2d, 0x59, 0x3e, + 0x98, 0x9b, 0xdd, 0x51, 0x19, 0x3c, 0xed, 0x1a, 0x29, 0x50, 0x84, 0x86, 0x64, 0xf2, 0x2a, 0x4c, + 0x86, 0xd4, 0x0d, 0x7c, 0xd7, 0x6b, 0xd2, 0xea, 0x62, 0xcc, 0x3d, 0xf7, 0x93, 0xa5, 0xe3, 0x4e, + 0x33, 0xff, 0x04, 0x0d, 0x1e, 0x98, 0xe2, 0x48, 0xde, 0xb0, 0x60, 0x5a, 0xa5, 0x1a, 0xd9, 0x07, + 0xa1, 0x32, 0xe5, 0xb2, 0x9a, 0x53, 0x62, 0x93, 0xf3, 0xac, 0x10, 0x16, 0xa1, 0xa4, 0x61, 0x98, + 0x91, 0x4b, 0x5e, 0x01, 0x08, 0x76, 0x78, 0x5a, 0x8f, 0x75, 0xb5, 0x74, 0xe2, 0xae, 0x4e, 0x8b, + 0x0c, 0x75, 0xc2, 0x01, 0x0d, 0x6e, 0xe4, 0x26, 0x80, 0x58, 0x36, 0xdb, 0xdd, 0x36, 0xe5, 0x61, + 0x43, 0xb9, 0xf2, 0xf6, 0x64, 0xf0, 0xb7, 0x14, 0xe6, 0xfe, 0xe1, 0x5c, 0x6f, 0xb8, 0xcc, 0xf3, + 0xa9, 0x46, 0x73, 0xf2, 0x61, 0x18, 0x8f, 0x3a, 0xad, 0x96, 0xa3, 0xb2, 0x33, 0x9b, 0xf9, 0xed, + 0x88, 0x82, 0xaf, 0x9e, 0x9b, 0x12, 0x80, 0x89, 0x44, 0xdb, 0x07, 0xd2, 0x4b, 0x4f, 0x9e, 0x87, + 0x49, 0x7a, 0x10, 0xd3, 0xd0, 0x77, 0x9a, 0xb7, 0x70, 0x35, 0x89, 0xe7, 0xf9, 0xc7, 0xbf, 0x62, + 0xc0, 0x31, 0x45, 0x45, 0x6c, 0xe5, 0x79, 0x17, 0x38, 0x3d, 0x68, 0xcf, 0x3b, 0xf1, 0xb3, 0xed, + 0x7f, 0x2f, 0xa4, 0x3c, 0x82, 0xed, 0x90, 0x52, 0x12, 0xc0, 0xa8, 0x1f, 0x54, 0x95, 0xd1, 0xbb, + 0x91, 0x8f, 0xd1, 0x5b, 0x0f, 0xaa, 0xc6, 0xc9, 0x30, 0xfb, 0x15, 0xa1, 0x90, 0xc3, 0x8f, 0xce, + 0x92, 0x33, 0x46, 0x8e, 0x90, 0x4e, 0x50, 0x9e, 0x92, 0xd5, 0xd1, 0xd9, 0x86, 0x29, 0x08, 0xd3, + 0x72, 0xc9, 0x2e, 0x8c, 0x36, 0x82, 0x28, 0x16, 0xb1, 0xca, 0xd0, 0x5e, 0xd8, 0xf5, 0x20, 0x8a, + 0xf9, 0x16, 0xa6, 0xba, 0xcd, 0x20, 0x11, 0x0a, 0x19, 0xf6, 0xf7, 0xac, 0x54, 0xf6, 0xe6, 0x8e, + 0x13, 0xbb, 0x8d, 0x2b, 0x7b, 0xd4, 0x67, 0xf3, 0xd9, 0x4c, 0xfd, 0xff, 0x7f, 0x33, 0xf5, 0x7f, + 0xff, 0x70, 0xee, 0x6d, 0x83, 0x4a, 0x75, 0xf6, 0x19, 0x87, 0x79, 0xce, 0xc2, 0x38, 0x25, 0x78, + 0xdd, 0x82, 0x09, 0x43, 0x3d, 0xb9, 0xa1, 0xe4, 0x98, 0x85, 0x56, 0xce, 0x95, 0x01, 0x44, 0x53, + 0xa4, 0xfd, 0x05, 0x0b, 0xc6, 0x2b, 0x8e, 0xbb, 0x1b, 0xd4, 0x6a, 0x2c, 0xc0, 0xaf, 0x76, 0xe4, + 0x21, 0x8b, 0xe8, 0x9f, 0x0a, 0xf0, 0x97, 0x25, 0x1c, 0x15, 0x05, 0x9b, 0xc3, 0x35, 0xc7, 0x8d, + 0x83, 0x90, 0xab, 0x5d, 0x14, 0x73, 0xf8, 0x2a, 0x87, 0xa0, 0xc4, 0x90, 0x77, 0xc2, 0x44, 0xcb, + 0x39, 0x48, 0x1a, 0x67, 0x53, 0x47, 0x6b, 0x1a, 0x85, 0x26, 0x9d, 0xfd, 0x7b, 0x65, 0x18, 0x97, + 0xa7, 0x99, 0xc7, 0x3e, 0x8f, 0x48, 0xbc, 0xf8, 0xc2, 0x40, 0x2f, 0x3e, 0x82, 0x31, 0x97, 0x17, + 0x42, 0xc9, 0xad, 0x74, 0xc8, 0x24, 0x9a, 0x54, 0x50, 0xd4, 0x56, 0x69, 0xb5, 0xc4, 0x6f, 0x94, + 0xa2, 0xc8, 0xe7, 0x2d, 0x38, 0xe5, 0x06, 0xbe, 0x4f, 0x5d, 0x6d, 0xe7, 0x47, 0xf2, 0x38, 0xaf, + 0x5b, 0x4a, 0x33, 0xd5, 0x29, 0xa2, 0x0c, 0x02, 0xb3, 0xe2, 0xc9, 0x8b, 0x30, 0x25, 0xc6, 0xec, + 0x76, 0x2a, 0x3e, 0xd6, 0x27, 0xd8, 0x26, 0x12, 0xd3, 0xb4, 0x64, 0x5e, 0xe4, 0x19, 0xf8, 0x91, + 0x8e, 0x88, 0x91, 0x65, 0xf6, 0x52, 0x9d, 0xf9, 0x44, 0x68, 0x50, 0x90, 0x10, 0x48, 0x48, 0x6b, + 0x21, 0x8d, 0x1a, 0x48, 0x5f, 0xeb, 0xd0, 0x28, 0xe6, 0x7b, 0xcc, 0xf8, 0xc3, 0x9d, 0x6e, 0x61, + 0x0f, 0x27, 0xec, 0xc3, 0x9d, 0xec, 0x4a, 0x47, 0xb7, 0x94, 0xc7, 0x72, 0x92, 0x9f, 0x79, 0xa0, + 0xbf, 0x3b, 0x07, 0xa3, 0x51, 0xc3, 0x09, 0xab, 0x7c, 0x6f, 0x2b, 0x56, 0xca, 0xcc, 0x96, 0x6c, + 0x31, 0x00, 0x0a, 0x38, 0x59, 0x86, 0xd3, 0x99, 0xf3, 0xf7, 0x88, 0xef, 0x5e, 0xa5, 0xca, 0xac, + 0x64, 0x77, 0x3a, 0x73, 0x72, 0x1f, 0x61, 0x4f, 0x0b, 0x33, 0x08, 0x9a, 0x38, 0x22, 0x08, 0xea, + 0xc2, 0x58, 0x53, 0x24, 0x02, 0x26, 0xb9, 0xa9, 0x7c, 0x39, 0x97, 0x01, 0x98, 0x37, 0x13, 0x30, + 0x6a, 0xb6, 0xcb, 0x84, 0x82, 0x14, 0x48, 0x3e, 0xc3, 0x0c, 0x9a, 0x91, 0x3b, 0x98, 0xe2, 0x0a, + 0xdc, 0xce, 0x47, 0x81, 0x9e, 0x54, 0x89, 0xb6, 0x6e, 0x46, 0x22, 0xc2, 0x94, 0x7f, 0xe1, 0x47, + 0x60, 0xe2, 0x61, 0xf3, 0x0e, 0x2f, 0xc1, 0xe9, 0xa1, 0x32, 0x0e, 0xdf, 0xb7, 0x20, 0xf9, 0xae, + 0x4b, 0x8e, 0xdb, 0xa0, 0x6c, 0xca, 0x90, 0x97, 0x60, 0x5a, 0x85, 0x11, 0x4b, 0x41, 0xc7, 0x8f, + 0x39, 0xaf, 0xa2, 0xce, 0x25, 0x63, 0x0a, 0x8b, 0x19, 0x6a, 0xb2, 0x00, 0x65, 0x36, 0x4e, 0xa2, + 0xa9, 0x30, 0xbb, 0x2a, 0x54, 0x59, 0xdc, 0x5c, 0x91, 0xad, 0x34, 0x0d, 0x09, 0x60, 0xa6, 0xe9, + 0x44, 0x31, 0xd7, 0x80, 0x45, 0x15, 0x0f, 0x79, 0xb6, 0xcc, 0xcb, 0x8f, 0x56, 0xb3, 0x8c, 0xb0, + 0x97, 0xb7, 0xfd, 0xcd, 0x11, 0x98, 0x4a, 0x59, 0x46, 0xb6, 0xab, 0x74, 0x22, 0xe6, 0xfa, 0xa8, + 0x14, 0x8b, 0xda, 0x55, 0x6e, 0x49, 0x38, 0x2a, 0x0a, 0x46, 0xdd, 0x76, 0xa2, 0x68, 0x3f, 0x08, + 0xab, 0xd2, 0x94, 0x2b, 0xea, 0x4d, 0x09, 0x47, 0x45, 0xc1, 0xf6, 0x97, 0x1d, 0xea, 0x84, 0x34, + 0xe4, 0xe5, 0x18, 0xd9, 0xfd, 0xa5, 0xa2, 0x51, 0x68, 0xd2, 0x71, 0xa3, 0x1c, 0x37, 0xa3, 0xa5, + 0xa6, 0x47, 0xfd, 0x58, 0xa8, 0x99, 0x8f, 0x51, 0xde, 0x5e, 0xdd, 0x32, 0x99, 0x6a, 0xa3, 0x9c, + 0x41, 0x60, 0x56, 0x3c, 0xf9, 0x84, 0x05, 0x53, 0xce, 0x7e, 0xa4, 0xab, 0x75, 0xb9, 0x55, 0x1e, + 0x7a, 0x93, 0x4a, 0x15, 0x00, 0x57, 0x66, 0x98, 0x79, 0x4f, 0x81, 0x30, 0x2d, 0x94, 0x7c, 0xc9, + 0x02, 0x42, 0x0f, 0xa8, 0xbb, 0x19, 0x06, 0x7b, 0x5e, 0x35, 0xf9, 0x86, 0x32, 0xfc, 0x19, 0xd2, + 0xdb, 0xbe, 0xd2, 0xc3, 0x57, 0x58, 0xf5, 0x5e, 0x38, 0xf6, 0xd1, 0xc1, 0xfe, 0xf3, 0x22, 0x4c, + 0x18, 0xc6, 0xb8, 0xef, 0xce, 0x6a, 0xfd, 0x80, 0xed, 0xac, 0x85, 0x13, 0xec, 0xac, 0x1f, 0x83, + 0xb2, 0x9b, 0x18, 0x8a, 0x7c, 0xaa, 0x8b, 0xb3, 0xe6, 0x47, 0xdb, 0x0a, 0x05, 0x42, 0x2d, 0x93, + 0x5c, 0x83, 0x19, 0x83, 0x8d, 0x34, 0x32, 0x23, 0xdc, 0xc8, 0xa8, 0x44, 0xd3, 0x62, 0x96, 0x00, + 0x7b, 0xdb, 0x90, 0xe7, 0x98, 0x57, 0xeb, 0xc9, 0x7e, 0x89, 0x28, 0x5e, 0x56, 0xee, 0x2e, 0x6e, + 0xae, 0x24, 0x60, 0x34, 0x69, 0xec, 0x6f, 0x5a, 0xea, 0xe3, 0x3e, 0x86, 0xb2, 0x8f, 0xbb, 0xe9, + 0xb2, 0x8f, 0x2b, 0xb9, 0x0c, 0xf3, 0x80, 0x92, 0x8f, 0x75, 0x18, 0x5f, 0x0a, 0x5a, 0x2d, 0xc7, + 0xaf, 0x92, 0xb7, 0xc0, 0xb8, 0x2b, 0xfe, 0x94, 0x61, 0xe2, 0x04, 0xdb, 0xbf, 0x25, 0x16, 0x13, + 0x1c, 0x79, 0x0a, 0x46, 0x9c, 0xb0, 0x9e, 0x84, 0x86, 0xfc, 0xec, 0x68, 0x31, 0xac, 0x47, 0xc8, + 0xa1, 0xf6, 0x17, 0x0b, 0x00, 0x4b, 0x41, 0xab, 0xed, 0x84, 0xb4, 0xba, 0x1d, 0xfc, 0x4f, 0x8e, + 0x58, 0x44, 0x0c, 0x9f, 0xb6, 0x80, 0xb0, 0x51, 0x09, 0x7c, 0xea, 0xc7, 0xea, 0xf0, 0x95, 0xed, + 0x97, 0x6e, 0x02, 0x95, 0x9b, 0x8f, 0x5e, 0x03, 0x09, 0x02, 0x35, 0xcd, 0x31, 0xa2, 0x88, 0xa7, + 0x93, 0x1d, 0xbf, 0x98, 0xae, 0x90, 0xe0, 0x07, 0xa5, 0xd2, 0x01, 0xb0, 0xbf, 0x56, 0x80, 0xf3, + 0xc2, 0x6c, 0xad, 0x39, 0xbe, 0x53, 0xa7, 0x2d, 0xa6, 0xd5, 0x71, 0x4f, 0x1b, 0x5c, 0xe6, 0xbe, + 0x7a, 0x49, 0x41, 0xc4, 0xb0, 0x93, 0x53, 0x4c, 0x2a, 0x31, 0x8d, 0x56, 0x7c, 0x2f, 0x46, 0xce, + 0x9c, 0x44, 0x50, 0x4a, 0xee, 0x8b, 0x48, 0x63, 0x93, 0x93, 0x20, 0xb5, 0xee, 0xae, 0x49, 0xf6, + 0xa8, 0x04, 0xb1, 0xcd, 0xbd, 0x19, 0xb8, 0xbb, 0x48, 0xdb, 0x01, 0x37, 0x2c, 0xc6, 0x09, 0xf2, + 0xaa, 0x84, 0xa3, 0xa2, 0xb0, 0xbf, 0x66, 0x41, 0xd6, 0xe4, 0xf2, 0x68, 0x50, 0x54, 0x20, 0x66, + 0xa3, 0xc1, 0x74, 0xc1, 0xe0, 0x09, 0xea, 0xef, 0x3e, 0x00, 0x13, 0x4e, 0x1c, 0xd3, 0x56, 0x5b, + 0x84, 0x26, 0xc5, 0x87, 0x4b, 0x7f, 0xad, 0x05, 0x55, 0xaf, 0xe6, 0xf1, 0x90, 0xc4, 0x64, 0x67, + 0xbf, 0x0c, 0xa5, 0xe4, 0xc4, 0xe7, 0x18, 0x9f, 0xfe, 0xe9, 0x94, 0x3b, 0x39, 0x60, 0x72, 0xdd, + 0x2f, 0x40, 0x9f, 0x3d, 0x93, 0x75, 0x59, 0x5b, 0x97, 0x54, 0x97, 0x4f, 0x66, 0x61, 0xc8, 0x81, + 0x38, 0xed, 0x12, 0x79, 0x96, 0xf7, 0xe5, 0xbd, 0xe7, 0xeb, 0x03, 0xb0, 0x09, 0xa9, 0x9f, 0x3a, + 0x04, 0x23, 0x97, 0x01, 0xf4, 0xa6, 0x20, 0x4b, 0x6c, 0x54, 0xa6, 0x56, 0xef, 0x1d, 0x68, 0x50, + 0x31, 0x17, 0xd0, 0xf3, 0xa3, 0xd8, 0x69, 0x36, 0xaf, 0x7b, 0x7e, 0x2c, 0x63, 0x59, 0x65, 0x30, + 0x56, 0x34, 0x0a, 0x4d, 0xba, 0x0b, 0xef, 0x32, 0xbe, 0xcb, 0x49, 0xdc, 0xfa, 0x4f, 0x17, 0x60, + 0xfa, 0x9a, 0xdf, 0xd9, 0xbc, 0xb6, 0xd9, 0xd9, 0x69, 0x7a, 0xee, 0x4d, 0xda, 0x65, 0x1f, 0x6d, + 0x97, 0x76, 0x57, 0x96, 0xe5, 0xb0, 0xab, 0x8f, 0x76, 0x93, 0x01, 0x51, 0xe0, 0x98, 0x9a, 0x35, + 0xcf, 0xaf, 0xd3, 0xb0, 0x1d, 0x7a, 0xd2, 0x77, 0x37, 0xd4, 0xbc, 0xaa, 0x51, 0x68, 0xd2, 0x31, + 0xde, 0xc1, 0xbe, 0x4f, 0xc3, 0xac, 0xb5, 0xd9, 0x60, 0x40, 0x14, 0x38, 0x46, 0x14, 0x87, 0x9d, + 0x28, 0x96, 0x23, 0xa6, 0x88, 0xb6, 0x19, 0x10, 0x05, 0x8e, 0x4d, 0x8f, 0xa8, 0xb3, 0xc3, 0xb3, + 0xb0, 0x99, 0xf3, 0xf0, 0x2d, 0x01, 0xc6, 0x04, 0xcf, 0x48, 0x77, 0x69, 0x77, 0x99, 0xed, 0xbd, + 0x99, 0x8a, 0x95, 0x9b, 0x02, 0x8c, 0x09, 0xde, 0xfe, 0x5b, 0x0b, 0x48, 0x7a, 0x38, 0x1e, 0xc3, + 0xf6, 0xfd, 0x5a, 0x7a, 0xfb, 0x1e, 0x32, 0x61, 0x9e, 0x56, 0x7f, 0xc0, 0x2e, 0xfe, 0x4b, 0x16, + 0x4c, 0x9a, 0x67, 0x27, 0xa4, 0x9e, 0x31, 0x44, 0x1b, 0x69, 0x43, 0x74, 0xff, 0x70, 0xee, 0x47, + 0xfb, 0x5d, 0x7e, 0xac, 0x7b, 0x71, 0xd0, 0x8e, 0x9e, 0xa5, 0x7e, 0xdd, 0xf3, 0x29, 0xcf, 0x0c, + 0x8a, 0x33, 0x97, 0xd4, 0xc1, 0xcc, 0x52, 0x50, 0xa5, 0x0f, 0x61, 0xc9, 0xec, 0x3b, 0x30, 0xd3, + 0x53, 0xa6, 0x74, 0x0c, 0xa3, 0x73, 0x64, 0x4d, 0xa9, 0x8d, 0x30, 0xc1, 0x18, 0x6f, 0xb4, 0xc5, + 0xe1, 0xc8, 0x12, 0xcc, 0x88, 0x6a, 0x2b, 0x26, 0x69, 0xcb, 0x6d, 0xd0, 0x96, 0x2a, 0x64, 0xe3, + 0x81, 0xe2, 0xed, 0x2c, 0x12, 0x7b, 0xe9, 0xed, 0xcf, 0x58, 0x30, 0x95, 0xaa, 0x43, 0xcb, 0xc9, + 0x3c, 0xf2, 0x95, 0x16, 0xf0, 0xa3, 0xbc, 0xd0, 0xf3, 0x45, 0xae, 0xaf, 0x64, 0xac, 0x34, 0x8d, + 0x42, 0x93, 0xce, 0xfe, 0x42, 0x01, 0x4a, 0x49, 0x56, 0xf8, 0x18, 0xaa, 0x7c, 0xca, 0x82, 0x29, + 0x15, 0x9c, 0x73, 0x97, 0x5d, 0x4c, 0xc6, 0xf5, 0xe1, 0xf3, 0xd2, 0xea, 0xbc, 0x97, 0xb9, 0xec, + 0x2a, 0x76, 0x40, 0x53, 0x18, 0xa6, 0x65, 0x93, 0xdb, 0x00, 0x51, 0x37, 0x8a, 0x69, 0xcb, 0x08, + 0x1e, 0x6c, 0x63, 0xc5, 0xcd, 0xbb, 0x41, 0x48, 0xd9, 0xfa, 0x5a, 0x0f, 0xaa, 0x74, 0x4b, 0x51, + 0x6a, 0xe3, 0xaa, 0x61, 0x68, 0x70, 0xb2, 0x7f, 0xbd, 0x00, 0xa7, 0xb3, 0x2a, 0x91, 0xf7, 0xc3, + 0x64, 0x22, 0xdd, 0xb8, 0x47, 0x9a, 0xa4, 0xc2, 0x27, 0xd1, 0xc0, 0xdd, 0x3f, 0x9c, 0x9b, 0xeb, + 0xbd, 0x48, 0x3b, 0x6f, 0x92, 0x60, 0x8a, 0x99, 0xc8, 0x90, 0xc8, 0x54, 0x5e, 0xa5, 0xbb, 0xd8, + 0x6e, 0xcb, 0x34, 0x87, 0x91, 0x21, 0x31, 0xb1, 0x98, 0xa1, 0x26, 0x9b, 0x70, 0xd6, 0x80, 0xac, + 0x53, 0xaf, 0xde, 0xd8, 0x09, 0x42, 0x71, 0x61, 0xa1, 0x58, 0x79, 0x4a, 0x72, 0x39, 0x8b, 0x7d, + 0x68, 0xb0, 0x6f, 0x4b, 0xe6, 0xb4, 0xb8, 0x4e, 0xdb, 0x71, 0xbd, 0xb8, 0x2b, 0xa3, 0x21, 0x65, + 0x9b, 0x96, 0x24, 0x1c, 0x15, 0x85, 0xbd, 0x06, 0x23, 0xc7, 0x9c, 0x41, 0xc7, 0xda, 0xeb, 0x5f, + 0x86, 0x12, 0x63, 0xc7, 0x6c, 0x51, 0x5e, 0x2c, 0x03, 0x28, 0x25, 0xf7, 0x57, 0x88, 0x0d, 0x45, + 0xcf, 0x49, 0x92, 0x50, 0xaa, 0x5b, 0x2b, 0x51, 0xd4, 0xe1, 0x9e, 0x0c, 0x43, 0x92, 0xa7, 0xa1, + 0x48, 0x0f, 0xda, 0xd9, 0x6c, 0xd3, 0x95, 0x83, 0xb6, 0x17, 0xd2, 0x88, 0x11, 0xd1, 0x83, 0x36, + 0xb9, 0x00, 0x05, 0xaf, 0x2a, 0x37, 0x29, 0x90, 0x34, 0x85, 0x95, 0x65, 0x2c, 0x78, 0x55, 0xfb, + 0x00, 0xca, 0xea, 0xc2, 0x0c, 0xd9, 0x4d, 0x6c, 0xb7, 0x95, 0xc7, 0x31, 0x4e, 0xc2, 0x77, 0x80, + 0xd5, 0xee, 0x00, 0xe8, 0x3a, 0xbd, 0xbc, 0xec, 0xcb, 0x25, 0x18, 0x71, 0x03, 0x59, 0x2c, 0x5c, + 0xd2, 0x6c, 0xb8, 0xd1, 0xe6, 0x18, 0xfb, 0x0e, 0x4c, 0xdf, 0xf4, 0x83, 0x7d, 0x9f, 0x6d, 0xa6, + 0x57, 0x3d, 0xda, 0xac, 0x32, 0xc6, 0x35, 0xf6, 0x47, 0xd6, 0x45, 0xe0, 0x58, 0x14, 0x38, 0x75, + 0xab, 0xa4, 0x30, 0xe8, 0x56, 0x89, 0xfd, 0xba, 0x05, 0xa7, 0x55, 0x01, 0x59, 0x62, 0x8d, 0x5f, + 0x80, 0xc9, 0x9d, 0x8e, 0xd7, 0xac, 0xca, 0xdf, 0x52, 0x84, 0x2a, 0x91, 0xab, 0x18, 0x38, 0x4c, + 0x51, 0x32, 0x77, 0x6b, 0xc7, 0xf3, 0x9d, 0xb0, 0xbb, 0xa9, 0xcd, 0xbf, 0xb2, 0x08, 0x15, 0x85, + 0x41, 0x83, 0xca, 0xfe, 0x93, 0x22, 0xe8, 0xcb, 0x32, 0xc4, 0x93, 0x95, 0x10, 0x56, 0x1e, 0xb9, + 0xaa, 0xad, 0xae, 0xef, 0xea, 0x6b, 0x39, 0xa5, 0x4c, 0x21, 0xc4, 0x27, 0x2d, 0xe6, 0xe8, 0x79, + 0xb1, 0xe7, 0xf0, 0xf5, 0x29, 0xa3, 0xa3, 0xcd, 0x9c, 0x0e, 0xcb, 0x57, 0x04, 0xe7, 0x20, 0x34, + 0x5d, 0x47, 0x25, 0x0c, 0x4d, 0xc9, 0xe4, 0x55, 0x79, 0xbc, 0x50, 0xcc, 0xad, 0x8e, 0xa6, 0x94, + 0x39, 0x53, 0x68, 0xc3, 0x68, 0x48, 0xe3, 0x30, 0xa9, 0x60, 0xba, 0x39, 0xec, 0x61, 0x6b, 0x1c, + 0x76, 0xb7, 0x62, 0x16, 0x81, 0xd5, 0x0d, 0xff, 0x86, 0x83, 0x51, 0x08, 0xb2, 0x23, 0x20, 0xbd, + 0x63, 0x71, 0xc2, 0xd4, 0xed, 0x02, 0x94, 0x9d, 0x4e, 0x1c, 0xb4, 0xd8, 0x30, 0xf1, 0xcf, 0x53, + 0x32, 0x92, 0xd3, 0x09, 0x02, 0x35, 0x8d, 0xfd, 0xb9, 0x51, 0xc8, 0x94, 0x26, 0x90, 0x03, 0xf3, + 0xa2, 0x97, 0x95, 0xef, 0x45, 0x2f, 0xa5, 0x4c, 0xbf, 0xcb, 0x5e, 0xa4, 0x0e, 0xa3, 0xed, 0x86, + 0x13, 0x25, 0xcb, 0xef, 0xe5, 0x64, 0x98, 0x36, 0x19, 0xf0, 0xfe, 0xe1, 0xdc, 0x8f, 0x1d, 0xcf, + 0x9d, 0x63, 0x73, 0x75, 0x41, 0xd4, 0x69, 0x6a, 0xd1, 0x9c, 0x07, 0x0a, 0xfe, 0xa6, 0x43, 0x57, + 0x3c, 0x22, 0x34, 0xfd, 0xb8, 0x25, 0xea, 0xd9, 0x90, 0x46, 0x9d, 0x66, 0x2c, 0x67, 0xc3, 0xcb, + 0x39, 0xae, 0x32, 0xc1, 0x58, 0x17, 0xb6, 0x89, 0xdf, 0x68, 0x08, 0x25, 0xef, 0x87, 0x72, 0x14, + 0x3b, 0x61, 0xfc, 0x90, 0x65, 0x30, 0x6a, 0xd0, 0xb7, 0x12, 0x26, 0xa8, 0xf9, 0x91, 0x57, 0x00, + 0x6a, 0x9e, 0xef, 0x45, 0x8d, 0x87, 0x3c, 0x15, 0xe4, 0x8a, 0x5f, 0x55, 0x1c, 0xd0, 0xe0, 0xc6, + 0xac, 0x1b, 0x9f, 0xdb, 0x22, 0x8f, 0x59, 0xe2, 0xdb, 0x97, 0xb2, 0x6e, 0xa8, 0x30, 0x68, 0x50, + 0xd9, 0x1f, 0x85, 0x33, 0xd9, 0x4b, 0xd6, 0x32, 0xc2, 0xab, 0x87, 0x41, 0xa7, 0x9d, 0x35, 0xdf, + 0xfc, 0x12, 0x2e, 0x0a, 0x1c, 0x33, 0xdf, 0xbb, 0x9e, 0x5f, 0xcd, 0x9a, 0xef, 0x9b, 0x9e, 0x5f, + 0x45, 0x8e, 0x39, 0xc6, 0x0d, 0xb8, 0xdf, 0xb1, 0xe0, 0xd2, 0x51, 0x77, 0xc1, 0x59, 0xf4, 0xbe, + 0xef, 0x84, 0xbe, 0xbc, 0x5c, 0xc3, 0x6d, 0xc7, 0x1d, 0x27, 0xf4, 0x91, 0x43, 0x49, 0x17, 0xc6, + 0x44, 0xe9, 0x9f, 0x74, 0x48, 0x5f, 0xce, 0xf7, 0x66, 0x3a, 0x0b, 0x91, 0x54, 0xd2, 0x45, 0x94, + 0x1d, 0xa2, 0x14, 0x68, 0x7f, 0xc7, 0x02, 0xb2, 0xb1, 0x47, 0xc3, 0xd0, 0xab, 0x1a, 0xc5, 0x8a, + 0xe4, 0x79, 0x98, 0xbc, 0xbb, 0xb5, 0xb1, 0xbe, 0x19, 0x78, 0x3e, 0xbf, 0x8f, 0x61, 0x94, 0xc8, + 0xdc, 0x30, 0xe0, 0x98, 0xa2, 0x62, 0x41, 0xc6, 0xdd, 0xd7, 0xd8, 0x96, 0x73, 0xe5, 0xa0, 0x1d, + 0xd2, 0x28, 0x52, 0xef, 0x39, 0xc8, 0x20, 0xe3, 0xc6, 0xcb, 0x19, 0x24, 0xf6, 0xd2, 0x93, 0x0d, + 0x38, 0xd7, 0xe2, 0x09, 0xb8, 0x2a, 0xdf, 0x69, 0x23, 0x91, 0x8d, 0x0b, 0x93, 0x82, 0xf7, 0x37, + 0xdd, 0x3b, 0x9c, 0x3b, 0xb7, 0xd6, 0x8f, 0x00, 0xfb, 0xb7, 0xb3, 0xbf, 0x5a, 0x80, 0x09, 0xe3, + 0x3d, 0x85, 0x63, 0xf8, 0x14, 0x99, 0x27, 0x20, 0x0a, 0xc7, 0x7c, 0x02, 0xe2, 0x19, 0x28, 0xb5, + 0x83, 0xa6, 0xe7, 0x7a, 0xaa, 0x3a, 0x7f, 0x92, 0x9f, 0x81, 0x49, 0x18, 0x2a, 0x2c, 0xd9, 0x87, + 0xb2, 0xba, 0x18, 0x2d, 0xeb, 0xf5, 0xf2, 0xf2, 0xaa, 0xd4, 0xe2, 0xd5, 0x17, 0x9e, 0xb5, 0x2c, + 0x62, 0xc3, 0x18, 0x9f, 0xf9, 0x49, 0x86, 0x9f, 0x17, 0x80, 0xf0, 0x25, 0x11, 0xa1, 0xc4, 0xd8, + 0xff, 0x30, 0x0a, 0x65, 0xa4, 0xed, 0x60, 0x29, 0xa4, 0xd5, 0x88, 0xbc, 0x19, 0x8a, 0x9d, 0xb0, + 0x29, 0x07, 0x4b, 0xa5, 0x7f, 0x6e, 0xe1, 0x2a, 0x32, 0x78, 0x6a, 0xbb, 0x29, 0x9c, 0xe8, 0xa4, + 0xb0, 0x78, 0xe4, 0x49, 0xe1, 0x8b, 0x30, 0x15, 0x45, 0x8d, 0xcd, 0xd0, 0xdb, 0x73, 0x62, 0x36, + 0x89, 0x65, 0xae, 0x44, 0x1f, 0xcd, 0x6c, 0x5d, 0xd7, 0x48, 0x4c, 0xd3, 0x92, 0x6b, 0x30, 0xa3, + 0xcf, 0xeb, 0x68, 0x18, 0xf3, 0xd4, 0x88, 0xc8, 0xa2, 0xa8, 0x93, 0x11, 0x7d, 0xc2, 0x27, 0x09, + 0xb0, 0xb7, 0x0d, 0x59, 0x86, 0xd3, 0x29, 0x20, 0x53, 0x44, 0xa4, 0x58, 0x54, 0x2d, 0x40, 0x8a, + 0x0f, 0xd3, 0xa5, 0xa7, 0x05, 0x59, 0x83, 0x33, 0xe2, 0xfb, 0xf2, 0x0b, 0xf5, 0xaa, 0x47, 0xe3, + 0x9c, 0xd1, 0xff, 0x92, 0x8c, 0xce, 0x5c, 0xeb, 0x25, 0xc1, 0x7e, 0xed, 0xd8, 0x0c, 0x55, 0xe0, + 0x95, 0x65, 0x69, 0x29, 0xd5, 0x0c, 0x55, 0x6c, 0x56, 0xaa, 0x68, 0xd2, 0x91, 0xf7, 0xc1, 0x93, + 0xfa, 0xa7, 0xc8, 0xac, 0x09, 0xf7, 0x61, 0x59, 0x96, 0x42, 0xa8, 0x9b, 0x46, 0xd7, 0xfa, 0x92, + 0x55, 0x71, 0x50, 0x7b, 0xb2, 0x03, 0x17, 0x14, 0xea, 0x0a, 0x33, 0x07, 0xed, 0xd0, 0x8b, 0x68, + 0xc5, 0x89, 0xe8, 0xad, 0xb0, 0xc9, 0x8b, 0x27, 0xca, 0xfa, 0x51, 0x88, 0x6b, 0x5e, 0x7c, 0xbd, + 0x1f, 0x25, 0xae, 0xe2, 0x03, 0xb8, 0x30, 0x6f, 0x85, 0xfa, 0xce, 0x4e, 0x93, 0x6e, 0x2c, 0xad, + 0xf0, 0x92, 0x0a, 0xc3, 0x5b, 0xb9, 0x92, 0x20, 0x50, 0xd3, 0x28, 0xf7, 0x7c, 0x72, 0xa0, 0x7b, + 0xfe, 0x6d, 0x0b, 0xa6, 0xd4, 0x64, 0x7f, 0x0c, 0x79, 0xb0, 0x66, 0x3a, 0x0f, 0x76, 0x6d, 0x58, + 0x37, 0x51, 0x6a, 0x3e, 0x20, 0x98, 0xfa, 0x5e, 0x19, 0x80, 0x3f, 0xb3, 0xe3, 0xf1, 0x52, 0xdd, + 0x4b, 0x30, 0x12, 0xd2, 0x76, 0x90, 0xb5, 0x7c, 0x3c, 0x87, 0xcf, 0x31, 0x3f, 0xb8, 0xcb, 0xb9, + 0xdf, 0xc9, 0xf1, 0xe8, 0x7f, 0xef, 0xc9, 0xf1, 0x16, 0x9c, 0xf3, 0xfc, 0x88, 0xba, 0x9d, 0x50, + 0xee, 0x9c, 0xd7, 0x83, 0x48, 0x59, 0x87, 0x52, 0xe5, 0xcd, 0x92, 0xd1, 0xb9, 0x95, 0x7e, 0x44, + 0xd8, 0xbf, 0x2d, 0x1b, 0xd2, 0x04, 0x21, 0xef, 0x04, 0xe9, 0x10, 0x5f, 0xc2, 0x51, 0x51, 0xe8, + 0x05, 0xb1, 0x5a, 0x4b, 0x2e, 0xfd, 0x64, 0x16, 0xc4, 0xea, 0xd5, 0x2d, 0xd4, 0x34, 0xfd, 0xad, + 0x62, 0x39, 0x27, 0xab, 0x08, 0x27, 0xb6, 0x8a, 0xc9, 0xfa, 0x9c, 0x18, 0xf8, 0x28, 0x43, 0xb2, + 0x59, 0x4f, 0x0e, 0xdc, 0xac, 0x5f, 0x82, 0x69, 0xcf, 0x6f, 0xd0, 0xd0, 0x8b, 0x69, 0x95, 0xaf, + 0x85, 0xd9, 0x29, 0x3e, 0x10, 0x2a, 0xfb, 0xb4, 0x92, 0xc2, 0x62, 0x86, 0x3a, 0x6d, 0x54, 0xa6, + 0x8f, 0x61, 0x54, 0x06, 0x98, 0xf2, 0x53, 0xf9, 0x98, 0xf2, 0xd3, 0xc3, 0x9b, 0xf2, 0x99, 0x47, + 0x6a, 0xca, 0x49, 0x2e, 0xa6, 0xfc, 0x69, 0x18, 0x6d, 0x87, 0xc1, 0x41, 0x77, 0xf6, 0x4c, 0xda, + 0x3d, 0xdf, 0x64, 0x40, 0x14, 0x38, 0xb3, 0x80, 0xee, 0xec, 0x83, 0x0b, 0xe8, 0xec, 0x37, 0x0a, + 0x70, 0x4e, 0x5b, 0x3a, 0x36, 0xbf, 0xbc, 0x1a, 0x5b, 0xeb, 0xfc, 0x66, 0xa6, 0x28, 0xda, 0x30, + 0x12, 0x9f, 0x3a, 0x87, 0xaa, 0x30, 0x68, 0x50, 0xf1, 0xfc, 0x21, 0x0d, 0x79, 0xd9, 0x6f, 0xd6, + 0x0c, 0x2e, 0x49, 0x38, 0x2a, 0x0a, 0xfe, 0x46, 0x1f, 0x0d, 0x63, 0x79, 0x26, 0x93, 0xad, 0x68, + 0x5a, 0xd2, 0x28, 0x34, 0xe9, 0x98, 0xbb, 0xe8, 0x26, 0x4b, 0x90, 0x99, 0xc2, 0x49, 0xe1, 0x2e, + 0xaa, 0x55, 0xa7, 0xb0, 0x89, 0x3a, 0x3c, 0x51, 0x3c, 0xda, 0xab, 0x0e, 0xcf, 0x42, 0x28, 0x0a, + 0xfb, 0xdf, 0x2c, 0x78, 0x53, 0xdf, 0xa1, 0x78, 0x0c, 0xdb, 0xdb, 0x41, 0x7a, 0x7b, 0xdb, 0x1a, + 0x7e, 0x7b, 0xeb, 0xe9, 0xc5, 0x80, 0xad, 0xee, 0xcf, 0x2c, 0x98, 0xd6, 0xf4, 0x8f, 0xa1, 0xab, + 0x5e, 0xae, 0xaf, 0xed, 0x69, 0xd5, 0x45, 0x39, 0x6a, 0xaa, 0x6f, 0xdf, 0xe6, 0x7d, 0x13, 0xc1, + 0xdc, 0xa2, 0x9b, 0x3c, 0x67, 0x73, 0x44, 0x10, 0xd3, 0x85, 0x31, 0xfe, 0x20, 0x40, 0x94, 0x4f, + 0x50, 0x99, 0x96, 0xcf, 0x4f, 0x80, 0x74, 0x50, 0xc9, 0x7f, 0x46, 0x28, 0x05, 0xf2, 0xa2, 0x74, + 0x2f, 0x62, 0xf6, 0xb2, 0x2a, 0x53, 0xae, 0xba, 0x28, 0x5d, 0xc2, 0x51, 0x51, 0xd8, 0x2d, 0x98, + 0x4d, 0x33, 0x5f, 0xa6, 0x35, 0x9e, 0xbb, 0x3b, 0x56, 0x37, 0x17, 0xa0, 0xec, 0xf0, 0x56, 0xab, + 0x1d, 0x27, 0xfb, 0xa6, 0xcd, 0x62, 0x82, 0x40, 0x4d, 0x63, 0xff, 0x9a, 0x05, 0x67, 0xfa, 0x74, + 0x26, 0xc7, 0x54, 0x73, 0xac, 0xad, 0xc0, 0x80, 0x77, 0x86, 0xaa, 0xb4, 0xe6, 0x24, 0xd9, 0x21, + 0xc3, 0xaa, 0x2d, 0x0b, 0x30, 0x26, 0x78, 0xfb, 0x1f, 0x2d, 0x38, 0x95, 0xd6, 0x35, 0x22, 0x37, + 0x80, 0x88, 0xce, 0x2c, 0x7b, 0x91, 0x1b, 0xec, 0xd1, 0xb0, 0xcb, 0x7a, 0x2e, 0xb4, 0xbe, 0x20, + 0x39, 0x91, 0xc5, 0x1e, 0x0a, 0xec, 0xd3, 0x8a, 0xd7, 0xfe, 0x56, 0xd5, 0x68, 0x27, 0x33, 0xe5, + 0x76, 0x9e, 0x33, 0x45, 0x7f, 0x4c, 0x33, 0x82, 0x56, 0x22, 0xd1, 0x94, 0x6f, 0x7f, 0x67, 0x04, + 0xd4, 0x59, 0x14, 0xcf, 0x43, 0xe4, 0x94, 0xc5, 0x49, 0x3d, 0x7c, 0x54, 0x3c, 0xc1, 0xc3, 0x47, + 0x23, 0x0f, 0xca, 0x11, 0x88, 0x57, 0x78, 0xb4, 0x2f, 0x6a, 0x18, 0xfd, 0x6d, 0x8d, 0x42, 0x93, + 0x8e, 0x69, 0xd2, 0xf4, 0xf6, 0xa8, 0x68, 0x34, 0x96, 0xd6, 0x64, 0x35, 0x41, 0xa0, 0xa6, 0x61, + 0x9a, 0x54, 0xbd, 0x5a, 0x4d, 0x46, 0x8a, 0x4a, 0x13, 0x36, 0x3a, 0xc8, 0x31, 0x8c, 0xa2, 0x11, + 0x04, 0xbb, 0xd2, 0xff, 0x53, 0x14, 0xd7, 0x83, 0x60, 0x17, 0x39, 0x86, 0x79, 0x2c, 0x7e, 0x10, + 0xb6, 0x9c, 0xa6, 0xf7, 0x21, 0x5a, 0x55, 0x52, 0xa4, 0xdf, 0xa7, 0x3c, 0x96, 0xf5, 0x5e, 0x12, + 0xec, 0xd7, 0x8e, 0xcd, 0xc0, 0x76, 0x48, 0xab, 0x9e, 0x1b, 0x9b, 0xdc, 0x20, 0x3d, 0x03, 0x37, + 0x7b, 0x28, 0xb0, 0x4f, 0x2b, 0xb2, 0x08, 0xa7, 0x92, 0xb3, 0xc4, 0xa4, 0x86, 0x44, 0x38, 0x83, + 0xca, 0x0f, 0xc7, 0x34, 0x1a, 0xb3, 0xf4, 0xcc, 0xda, 0xb4, 0x64, 0x25, 0x0f, 0x77, 0x13, 0x0d, + 0x6b, 0x93, 0x54, 0xf8, 0xa0, 0xa2, 0xb0, 0x3f, 0x5e, 0x64, 0xbb, 0xe3, 0x80, 0xdb, 0xb9, 0x8f, + 0x2d, 0x6b, 0x98, 0x9e, 0x91, 0x23, 0xc7, 0x98, 0x91, 0xcf, 0xc3, 0xe4, 0xdd, 0x28, 0xf0, 0x55, + 0x46, 0x6e, 0x74, 0x60, 0x46, 0xce, 0xa0, 0xea, 0x9f, 0x91, 0x1b, 0xcb, 0x2b, 0x23, 0x37, 0xfe, + 0x90, 0x19, 0xb9, 0x3f, 0x1c, 0x85, 0xf3, 0xea, 0x3c, 0x99, 0xc6, 0xfb, 0x41, 0xb8, 0xeb, 0xf9, + 0x75, 0x7e, 0x06, 0xfb, 0x15, 0x0b, 0x26, 0xc5, 0x7a, 0x91, 0x0f, 0x23, 0x88, 0x33, 0xc7, 0x5a, + 0x4e, 0x77, 0xd7, 0x52, 0xc2, 0xe6, 0xb7, 0x0d, 0x41, 0x99, 0x57, 0x2a, 0x4c, 0x14, 0xa6, 0x34, + 0x22, 0x1f, 0x01, 0x48, 0xde, 0xdf, 0xaa, 0xe5, 0xf4, 0x0a, 0x59, 0xa2, 0x1f, 0xd2, 0x9a, 0xf6, + 0x4d, 0xb7, 0x95, 0x10, 0x34, 0x04, 0x92, 0x37, 0x2c, 0x75, 0x57, 0x44, 0x9c, 0x66, 0xbd, 0xfa, + 0x48, 0xc6, 0xe6, 0x38, 0x57, 0x47, 0x10, 0xc6, 0x3d, 0xbf, 0xce, 0xe6, 0x89, 0x4c, 0x62, 0xbe, + 0xad, 0x5f, 0xfd, 0xc2, 0x6a, 0xe0, 0x54, 0x2b, 0x4e, 0xd3, 0xf1, 0x5d, 0x1a, 0xae, 0x08, 0x72, + 0xf3, 0x11, 0x26, 0x0e, 0xc0, 0x84, 0x51, 0xcf, 0xe5, 0xcc, 0xd1, 0xe3, 0x5c, 0xce, 0xbc, 0xf0, + 0x5e, 0x98, 0xe9, 0xf9, 0x98, 0x27, 0xba, 0x3a, 0xf2, 0xf0, 0xb7, 0x4e, 0xec, 0xdf, 0x1d, 0xd3, + 0x9b, 0xd6, 0x7a, 0x50, 0x15, 0x57, 0x04, 0x43, 0xfd, 0x45, 0xa5, 0xef, 0x99, 0xe3, 0x14, 0x31, + 0x1e, 0x72, 0x52, 0x40, 0x34, 0x45, 0xb2, 0x39, 0xda, 0x76, 0x42, 0xea, 0x3f, 0xea, 0x39, 0xba, + 0xa9, 0x84, 0xa0, 0x21, 0x90, 0x34, 0x52, 0xc7, 0xad, 0x57, 0x87, 0x3f, 0x6e, 0x65, 0xee, 0x70, + 0xdf, 0xab, 0x5c, 0x9f, 0xb7, 0x60, 0xda, 0x4f, 0xcd, 0x5c, 0x79, 0xe4, 0xb6, 0xfd, 0x28, 0x56, + 0x85, 0xb8, 0x9a, 0x9d, 0x86, 0x61, 0x46, 0x7e, 0xbf, 0x2d, 0x6d, 0xf4, 0x84, 0x5b, 0x9a, 0xbe, + 0x6b, 0x3c, 0x36, 0xe8, 0xae, 0x31, 0xf1, 0xd5, 0x2b, 0x03, 0xe3, 0xb9, 0xbf, 0x32, 0x00, 0x7d, + 0x5e, 0x18, 0xb8, 0x03, 0x65, 0x37, 0xa4, 0x4e, 0xfc, 0x90, 0x17, 0xce, 0xf9, 0xd3, 0x79, 0x4b, + 0x09, 0x03, 0xd4, 0xbc, 0xec, 0x3f, 0x2e, 0xc2, 0xe9, 0x64, 0x44, 0x92, 0xa3, 0x28, 0xb6, 0x3f, + 0x0a, 0xb9, 0xda, 0xb9, 0x55, 0xfb, 0xe3, 0xf5, 0x04, 0x81, 0x9a, 0x86, 0xf9, 0x63, 0x9d, 0x88, + 0x6e, 0xb4, 0xa9, 0xbf, 0xea, 0xed, 0x44, 0x7c, 0xc4, 0x8d, 0x12, 0xb2, 0x5b, 0x1a, 0x85, 0x26, + 0x1d, 0x73, 0xc6, 0x85, 0x5f, 0x1c, 0x65, 0x4f, 0x76, 0xa5, 0xbf, 0x8d, 0x09, 0x9e, 0x7c, 0xb9, + 0xef, 0x73, 0x21, 0xf9, 0xd4, 0x34, 0xf4, 0x9c, 0xc0, 0x9d, 0xf0, 0x9d, 0x90, 0xcf, 0x59, 0x70, + 0x6a, 0x37, 0x55, 0xbf, 0x92, 0x98, 0xe4, 0x21, 0x2b, 0x2d, 0xd3, 0x45, 0x31, 0x7a, 0x0a, 0xa7, + 0xe1, 0x11, 0x66, 0xa5, 0xdb, 0xff, 0x62, 0x81, 0x69, 0x9e, 0x8e, 0xe7, 0x59, 0x19, 0x0f, 0x40, + 0x15, 0x8e, 0x78, 0x00, 0x2a, 0x71, 0xc2, 0x8a, 0xc7, 0x73, 0xfa, 0x47, 0x4e, 0xe0, 0xf4, 0x8f, + 0x0e, 0xf4, 0xda, 0xde, 0x0c, 0xc5, 0x8e, 0x57, 0x95, 0x7e, 0xbb, 0x3e, 0x0c, 0x5b, 0x59, 0x46, + 0x06, 0xb7, 0x7f, 0x7b, 0x54, 0xc7, 0xe9, 0xf2, 0x28, 0xfe, 0x87, 0xa2, 0xdb, 0x35, 0x55, 0x38, + 0x2b, 0x7a, 0xbe, 0xde, 0x53, 0x38, 0xfb, 0x9e, 0x93, 0x57, 0x5a, 0x88, 0x01, 0x1a, 0x54, 0x37, + 0x3b, 0x7e, 0x44, 0x99, 0xc5, 0x5d, 0x28, 0xb1, 0xd0, 0x86, 0x27, 0xdc, 0x4a, 0x29, 0xa5, 0x4a, + 0xd7, 0x25, 0xfc, 0xfe, 0xe1, 0xdc, 0xbb, 0x4f, 0xae, 0x56, 0xd2, 0x1a, 0x15, 0x7f, 0x12, 0x41, + 0x99, 0xfd, 0xcd, 0x2b, 0x42, 0x64, 0xd0, 0x74, 0x4b, 0xd9, 0xa2, 0x04, 0x91, 0x4b, 0xb9, 0x89, + 0x96, 0x43, 0x7c, 0x28, 0xf3, 0xa7, 0x8a, 0xb8, 0x50, 0x11, 0x5b, 0x6d, 0xaa, 0xba, 0x8c, 0x04, + 0x71, 0xff, 0x70, 0xee, 0xc5, 0x93, 0x0b, 0x55, 0xcd, 0x51, 0x8b, 0xb0, 0xff, 0xa6, 0xa8, 0xe7, + 0xae, 0xac, 0x97, 0xfe, 0xa1, 0x98, 0xbb, 0x2f, 0x64, 0xe6, 0xee, 0xa5, 0x9e, 0xb9, 0x3b, 0xad, + 0x9f, 0xf3, 0x49, 0xcd, 0xc6, 0xc7, 0xbd, 0xc1, 0x1e, 0x1d, 0xc7, 0x73, 0xcf, 0xe2, 0xb5, 0x8e, + 0x17, 0xd2, 0x68, 0x33, 0xec, 0xf8, 0x9e, 0x5f, 0x97, 0x8f, 0x3a, 0x1a, 0x9e, 0x45, 0x0a, 0x8d, + 0x59, 0x7a, 0xfb, 0xab, 0xfc, 0xbc, 0xd3, 0x28, 0x2e, 0x63, 0x5f, 0xb9, 0xc9, 0x5f, 0x7b, 0x12, + 0x15, 0xa5, 0xea, 0x2b, 0x8b, 0x27, 0x9e, 0x04, 0x8e, 0xec, 0xc3, 0xf8, 0x8e, 0x78, 0x71, 0x22, + 0x9f, 0x2b, 0x4e, 0xf2, 0xf9, 0x0a, 0x7e, 0x99, 0x34, 0x79, 0xcb, 0xe2, 0xbe, 0xfe, 0x13, 0x13, + 0x69, 0xf6, 0x2f, 0x14, 0xe1, 0x54, 0xe6, 0x2d, 0x22, 0x16, 0xf0, 0x27, 0x0f, 0x4f, 0x65, 0xb3, + 0xf3, 0xea, 0x89, 0x64, 0x45, 0x41, 0x3e, 0x08, 0x50, 0xa5, 0xed, 0x66, 0xd0, 0xe5, 0x8e, 0xcb, + 0xc8, 0x89, 0x1d, 0x17, 0xe5, 0xeb, 0x2e, 0x2b, 0x2e, 0x68, 0x70, 0x94, 0x65, 0xb4, 0xa3, 0xe2, + 0x3d, 0x8d, 0x74, 0x19, 0xad, 0x71, 0xd3, 0x6f, 0xec, 0xf1, 0xde, 0xf4, 0xf3, 0xe0, 0x94, 0x50, + 0x51, 0x95, 0x70, 0x3d, 0x44, 0xa5, 0xd6, 0x19, 0x36, 0xa3, 0x96, 0xd3, 0x6c, 0x30, 0xcb, 0xd7, + 0xfe, 0x6c, 0x81, 0xb9, 0x6f, 0x62, 0xb0, 0xd7, 0x92, 0xe4, 0xf8, 0x5b, 0x61, 0xcc, 0xe9, 0xc4, + 0x8d, 0xa0, 0xe7, 0x05, 0x90, 0x45, 0x0e, 0x45, 0x89, 0x25, 0xab, 0x30, 0x52, 0x75, 0xe2, 0xe4, + 0x89, 0xff, 0x93, 0x28, 0xa7, 0x33, 0x61, 0x4e, 0x4c, 0x91, 0x73, 0x21, 0x4f, 0xc1, 0x48, 0xec, + 0xd4, 0x53, 0x2f, 0x78, 0x6e, 0x3b, 0xf5, 0x08, 0x39, 0xd4, 0xdc, 0x5d, 0x46, 0x8e, 0xd8, 0x5d, + 0x5e, 0x34, 0xfe, 0xf9, 0x84, 0x71, 0xea, 0xd2, 0xfb, 0x0f, 0x23, 0x44, 0x61, 0x7f, 0x8a, 0xd6, + 0xfe, 0x7f, 0x30, 0x69, 0xfe, 0x43, 0x89, 0x63, 0xdd, 0x35, 0xb2, 0x3f, 0x6d, 0xc1, 0x74, 0xfa, + 0xb9, 0x5c, 0x36, 0x86, 0xf2, 0x31, 0xde, 0xcc, 0x18, 0x66, 0x9e, 0xcf, 0xbd, 0x0e, 0xc5, 0xd0, + 0xd9, 0x97, 0x43, 0xf8, 0xec, 0xc0, 0x21, 0x94, 0xff, 0x79, 0x6a, 0x1e, 0x9d, 0x7d, 0x16, 0x48, + 0xfb, 0xec, 0x7b, 0x89, 0x07, 0x0d, 0xd1, 0xd9, 0x47, 0xc6, 0xe2, 0xdd, 0xa5, 0x2f, 0x7d, 0x65, + 0xee, 0x89, 0xd7, 0xff, 0xe2, 0xd2, 0x13, 0xf6, 0xdf, 0x8f, 0xc0, 0x54, 0xaa, 0xea, 0x30, 0xb5, + 0xe8, 0xac, 0x23, 0x17, 0x1d, 0x3f, 0xde, 0xeb, 0xf8, 0x54, 0xd6, 0x94, 0x1a, 0xc7, 0x7b, 0x1d, + 0x9f, 0xa2, 0xc0, 0xb1, 0x0e, 0x56, 0xc3, 0x2e, 0x76, 0x7c, 0x79, 0x48, 0xa0, 0x3a, 0xb8, 0xcc, + 0xa1, 0x28, 0xb1, 0x2c, 0x9e, 0x9e, 0x8c, 0xb8, 0x8d, 0x16, 0x26, 0x4b, 0x2e, 0xe2, 0x1b, 0x79, + 0x3c, 0xe2, 0x26, 0x2b, 0x6c, 0x79, 0x7e, 0xc1, 0x84, 0x60, 0x4a, 0x22, 0xf9, 0x84, 0x65, 0x3e, + 0x5f, 0x37, 0x96, 0xc7, 0xe1, 0x56, 0xb6, 0xa8, 0x53, 0x2c, 0xe8, 0x07, 0xbf, 0x62, 0x17, 0x29, + 0x7b, 0x32, 0xfe, 0x68, 0xec, 0x09, 0xf4, 0xb1, 0x25, 0x6f, 0x87, 0x72, 0xcb, 0xf1, 0xbd, 0x1a, + 0x8d, 0x62, 0xf1, 0xbf, 0x69, 0xca, 0x22, 0x98, 0x5b, 0x4b, 0x80, 0xa8, 0xf1, 0xfc, 0x3f, 0x40, + 0xf1, 0x8e, 0x89, 0x98, 0xaa, 0x6c, 0xfc, 0x07, 0x28, 0x0d, 0x46, 0x93, 0xc6, 0xfe, 0x0d, 0x0b, + 0xce, 0xf5, 0x1d, 0x8c, 0x1f, 0xdc, 0x6c, 0xac, 0xfd, 0x9b, 0x05, 0x38, 0xd3, 0xa7, 0x2a, 0x97, + 0x74, 0x1f, 0xd9, 0x2b, 0x87, 0xb2, 0xec, 0x77, 0x6a, 0xe0, 0xdc, 0x38, 0xd9, 0xae, 0xa8, 0x77, + 0xa6, 0xe2, 0x63, 0xdd, 0x99, 0xec, 0xaf, 0x16, 0xc0, 0x78, 0x8f, 0x93, 0x7c, 0xd4, 0x2c, 0x40, + 0xb7, 0xf2, 0x2a, 0x96, 0x16, 0xcc, 0x55, 0x01, 0xbb, 0x18, 0xb5, 0x7e, 0xf5, 0xec, 0xd9, 0xf9, + 0x5a, 0x38, 0x7a, 0xbe, 0x92, 0x66, 0x52, 0xe9, 0x5f, 0xcc, 0xbf, 0xd2, 0xbf, 0xdc, 0x53, 0xe5, + 0xff, 0x73, 0x96, 0x98, 0x69, 0x99, 0x2e, 0x69, 0x0b, 0x6b, 0x3d, 0xc0, 0xc2, 0xbe, 0x03, 0x4a, + 0x11, 0x6d, 0xd6, 0x98, 0xa3, 0x29, 0x2d, 0xb1, 0x7e, 0xfe, 0x5b, 0xc2, 0x51, 0x51, 0xf0, 0xab, + 0xbc, 0xcd, 0x66, 0xb0, 0x7f, 0xa5, 0xd5, 0x8e, 0xbb, 0xd2, 0x26, 0xeb, 0xab, 0xbc, 0x0a, 0x83, + 0x06, 0x95, 0xfd, 0xaf, 0x96, 0xf8, 0x9c, 0x32, 0x64, 0x78, 0x21, 0x73, 0xc5, 0xf2, 0xf8, 0xde, + 0xf6, 0x4f, 0x01, 0xb8, 0xea, 0x89, 0x84, 0x7c, 0x9e, 0xe9, 0xd4, 0x4f, 0x2e, 0x98, 0x6f, 0x47, + 0x26, 0x30, 0x34, 0xe4, 0xa5, 0x16, 0x4f, 0xf1, 0xa8, 0xc5, 0x63, 0xff, 0x93, 0x05, 0xa9, 0xcd, + 0x82, 0xb4, 0x61, 0x94, 0x69, 0xd0, 0xcd, 0xe7, 0x41, 0x07, 0x93, 0x35, 0x5b, 0x58, 0x72, 0x5a, + 0xf0, 0x3f, 0x51, 0x08, 0x22, 0x4d, 0x19, 0x2c, 0x14, 0xf2, 0x78, 0x74, 0xc4, 0x14, 0xc8, 0xc2, + 0x0d, 0xf9, 0xdf, 0x3e, 0x54, 0xe0, 0x61, 0xbf, 0x00, 0x33, 0x3d, 0x4a, 0xf1, 0x0b, 0x52, 0x41, + 0xf2, 0x8a, 0x85, 0x31, 0x03, 0xf9, 0x75, 0x4d, 0x14, 0x38, 0x16, 0x6f, 0x9c, 0xce, 0xb2, 0x27, + 0x5f, 0xb2, 0x60, 0x26, 0xca, 0xf2, 0x7b, 0x54, 0x63, 0xa7, 0x12, 0x69, 0x3d, 0x28, 0xec, 0x55, + 0xc2, 0xfe, 0x0f, 0x69, 0x9e, 0xc4, 0x7f, 0x47, 0x53, 0x9b, 0x8b, 0x35, 0x70, 0x73, 0x61, 0x4b, + 0xcc, 0x6d, 0xd0, 0x6a, 0xa7, 0xd9, 0x53, 0x2a, 0xb4, 0x25, 0xe1, 0xa8, 0x28, 0x52, 0xcf, 0xf5, + 0x15, 0x8f, 0x7c, 0xae, 0xef, 0x79, 0x98, 0x34, 0x5f, 0x6a, 0xe1, 0x19, 0x3d, 0x79, 0x16, 0x62, + 0x3e, 0xea, 0x82, 0x29, 0xaa, 0xcc, 0x73, 0x6f, 0xa3, 0x47, 0x3e, 0xf7, 0xf6, 0x0c, 0x94, 0xe4, + 0xd3, 0x65, 0x49, 0xba, 0x59, 0xd4, 0x21, 0x49, 0x18, 0x2a, 0x2c, 0x33, 0x10, 0x2d, 0xc7, 0xef, + 0x38, 0x4d, 0x36, 0x42, 0xb2, 0x3c, 0x51, 0xad, 0xac, 0x35, 0x85, 0x41, 0x83, 0x8a, 0xf5, 0x98, + 0xb9, 0x9d, 0xaf, 0x04, 0x7e, 0x92, 0xa8, 0x51, 0x3d, 0xde, 0x96, 0x70, 0x54, 0x14, 0xf6, 0xdf, + 0x59, 0x90, 0x7d, 0x77, 0x29, 0x55, 0x12, 0x69, 0x1d, 0x59, 0x12, 0x99, 0x2e, 0xf7, 0x2a, 0x1c, + 0xab, 0xdc, 0xcb, 0xac, 0xc4, 0x2a, 0x3e, 0xb0, 0x12, 0xeb, 0x2d, 0xfa, 0x9a, 0xbd, 0x28, 0xd9, + 0x9a, 0xe8, 0x77, 0xc5, 0x9e, 0xd8, 0x30, 0xe6, 0x3a, 0xaa, 0xe2, 0x7c, 0x52, 0xb8, 0x55, 0x4b, + 0x8b, 0x9c, 0x48, 0x62, 0x2a, 0xf3, 0x5f, 0xff, 0xee, 0xc5, 0x27, 0xbe, 0xf1, 0xdd, 0x8b, 0x4f, + 0x7c, 0xeb, 0xbb, 0x17, 0x9f, 0x78, 0xfd, 0xde, 0x45, 0xeb, 0xeb, 0xf7, 0x2e, 0x5a, 0xdf, 0xb8, + 0x77, 0xd1, 0xfa, 0xd6, 0xbd, 0x8b, 0xd6, 0x77, 0xee, 0x5d, 0xb4, 0x3e, 0xff, 0xd7, 0x17, 0x9f, + 0x78, 0xa5, 0x94, 0xcc, 0xec, 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0xfa, 0x84, 0x65, 0x8e, 0x99, + 0x77, 0x00, 0x00, } func (m *AWSAuthConfig) Marshal() (dAtA []byte, err error) { @@ -5753,46 +5755,6 @@ func (m *KustomizeOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *Object) 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 *Object) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Object) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Raw != nil { - { - size, err := m.Raw.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenerated(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - i -= len(m.Values) - copy(dAtA[i:], m.Values) - i = encodeVarintGenerated(dAtA, i, uint64(len(m.Values))) - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - func (m *Operation) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -7604,6 +7566,46 @@ func (m *SignatureKey) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *StringOrObject) 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 *StringOrObject) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *StringOrObject) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Raw != nil { + { + size, err := m.Raw.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Values) + copy(dAtA[i:], m.Values) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Values))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *SyncOperation) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -9206,21 +9208,6 @@ func (m *KustomizeOptions) Size() (n int) { return n } -func (m *Object) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Values) - n += 1 + l + sovGenerated(uint64(l)) - if m.Raw != nil { - l = m.Raw.Size() - n += 1 + l + sovGenerated(uint64(l)) - } - return n -} - func (m *Operation) Size() (n int) { if m == nil { return 0 @@ -9901,6 +9888,21 @@ func (m *SignatureKey) Size() (n int) { return n } +func (m *StringOrObject) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Values) + n += 1 + l + sovGenerated(uint64(l)) + if m.Raw != nil { + l = m.Raw.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *SyncOperation) Size() (n int) { if m == nil { return 0 @@ -10350,7 +10352,7 @@ func (this *ApplicationSourceHelm) String() string { `ValueFiles:` + fmt.Sprintf("%v", this.ValueFiles) + `,`, `Parameters:` + repeatedStringForParameters + `,`, `ReleaseName:` + fmt.Sprintf("%v", this.ReleaseName) + `,`, - `Values:` + strings.Replace(strings.Replace(this.Values.String(), "Object", "Object", 1), `&`, ``, 1) + `,`, + `Values:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Values), "StringOrObject", "StringOrObject", 1), `&`, ``, 1) + `,`, `FileParameters:` + repeatedStringForFileParameters + `,`, `Version:` + fmt.Sprintf("%v", this.Version) + `,`, `PassCredentials:` + fmt.Sprintf("%v", this.PassCredentials) + `,`, @@ -10937,17 +10939,6 @@ func (this *KustomizeOptions) String() string { }, "") return s } -func (this *Object) String() string { - if this == nil { - return "nil" - } - s := strings.Join([]string{`&Object{`, - `Values:` + fmt.Sprintf("%v", this.Values) + `,`, - `Raw:` + strings.Replace(fmt.Sprintf("%v", this.Raw), "RawExtension", "runtime.RawExtension", 1) + `,`, - `}`, - }, "") - return s -} func (this *Operation) String() string { if this == nil { return "nil" @@ -20229,124 +20220,6 @@ func (m *KustomizeOptions) Unmarshal(dAtA []byte) error { } return nil } -func (m *Object) 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: Object: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Object: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Values", 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.Values = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Raw", 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.Raw == nil { - m.Raw = &runtime.RawExtension{} - } - if err := m.Raw.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - 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 *Operation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -26766,6 +26639,124 @@ func (m *SignatureKey) Unmarshal(dAtA []byte) error { } return nil } +func (m *StringOrObject) 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: StringOrObject: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StringOrObject: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Values", 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.Values = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Raw", 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.Raw == nil { + m.Raw = &runtime.RawExtension{} + } + if err := m.Raw.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + 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 *SyncOperation) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pkg/apis/application/v1alpha1/generated.proto b/pkg/apis/application/v1alpha1/generated.proto index 0a8d624abb0c6..ac14a5621c442 100644 --- a/pkg/apis/application/v1alpha1/generated.proto +++ b/pkg/apis/application/v1alpha1/generated.proto @@ -198,7 +198,8 @@ message ApplicationSourceHelm { // Values specifies Helm values to be passed to helm template, typically defined as a block // +kubebuilder:pruning:PreserveUnknownFields - optional Object values = 4; + // +patchStrategy=replace + optional StringOrObject values = 4; // FileParameters are file parameters to the helm template repeated HelmFileParameter fileParameters = 5; @@ -692,15 +693,6 @@ message KustomizeOptions { optional string binaryPath = 2; } -// +kubebuilder:validation:Type="" -message Object { - // Values as string if Raw == nil - optional string values = 1; - - // Raw is Values in raw format if Raw != nil - optional k8s.io.apimachinery.pkg.runtime.RawExtension raw = 2; -} - // Operation contains information about a requested or running operation message Operation { // Sync contains parameters for the operation @@ -1208,6 +1200,17 @@ message SignatureKey { optional string keyID = 1; } +// +patchStrategy=replace +// +protobuf.options.(gogoproto.goproto_stringer)=false +// +kubebuilder:validation:Type="" +message StringOrObject { + // Values as string if Raw == nil + optional string values = 1; + + // Raw is Values in raw format if Raw != nil + optional k8s.io.apimachinery.pkg.runtime.RawExtension raw = 2; +} + // SyncOperation contains details about a sync operation. message SyncOperation { // Revision is the revision (Git) or chart version (Helm) which to sync the application to diff --git a/pkg/apis/application/v1alpha1/openapi_generated.go b/pkg/apis/application/v1alpha1/openapi_generated.go index 9908d548057d9..894d265a17750 100644 --- a/pkg/apis/application/v1alpha1/openapi_generated.go +++ b/pkg/apis/application/v1alpha1/openapi_generated.go @@ -62,7 +62,6 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.JsonnetVar": schema_pkg_apis_application_v1alpha1_JsonnetVar(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.KnownTypeField": schema_pkg_apis_application_v1alpha1_KnownTypeField(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.KustomizeOptions": schema_pkg_apis_application_v1alpha1_KustomizeOptions(ref), - "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.Object": schema_pkg_apis_application_v1alpha1_Object(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.Operation": schema_pkg_apis_application_v1alpha1_Operation(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.OperationInitiator": schema_pkg_apis_application_v1alpha1_OperationInitiator(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.OperationState": schema_pkg_apis_application_v1alpha1_OperationState(ref), @@ -92,6 +91,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.RevisionHistory": schema_pkg_apis_application_v1alpha1_RevisionHistory(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.RevisionMetadata": schema_pkg_apis_application_v1alpha1_RevisionMetadata(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SignatureKey": schema_pkg_apis_application_v1alpha1_SignatureKey(ref), + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.StringOrObject": schema_pkg_apis_application_v1alpha1_StringOrObject(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncOperation": schema_pkg_apis_application_v1alpha1_SyncOperation(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncOperationResource": schema_pkg_apis_application_v1alpha1_SyncOperationResource(ref), "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.SyncOperationResult": schema_pkg_apis_application_v1alpha1_SyncOperationResult(ref), @@ -746,10 +746,15 @@ func schema_pkg_apis_application_v1alpha1_ApplicationSourceHelm(ref common.Refer }, }, "values": { + VendorExtensible: spec.VendorExtensible{ + Extensions: spec.Extensions{ + "x-kubernetes-patch-strategy": "replace", + }, + }, SchemaProps: spec.SchemaProps{ Description: "Values specifies Helm values to be passed to helm template, typically defined as a block", Default: map[string]interface{}{}, - Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.Object"), + Ref: ref("github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.StringOrObject"), }, }, "fileParameters": { @@ -798,7 +803,7 @@ func schema_pkg_apis_application_v1alpha1_ApplicationSourceHelm(ref common.Refer }, }, Dependencies: []string{ - "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmFileParameter", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmParameter", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.Object"}, + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmFileParameter", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.HelmParameter", "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1.StringOrObject"}, } } @@ -2419,17 +2424,6 @@ func schema_pkg_apis_application_v1alpha1_KustomizeOptions(ref common.ReferenceC } } -func schema_pkg_apis_application_v1alpha1_Object(ref common.ReferenceCallback) common.OpenAPIDefinition { - return common.OpenAPIDefinition{ - Schema: spec.Schema{ - SchemaProps: spec.SchemaProps{ - Type: Object{}.OpenAPISchemaType(), - Format: Object{}.OpenAPISchemaFormat(), - }, - }, - } -} - func schema_pkg_apis_application_v1alpha1_Operation(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -4112,6 +4106,17 @@ func schema_pkg_apis_application_v1alpha1_SignatureKey(ref common.ReferenceCallb } } +func schema_pkg_apis_application_v1alpha1_StringOrObject(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: StringOrObject{}.OpenAPISchemaType(), + Format: StringOrObject{}.OpenAPISchemaFormat(), + }, + }, + } +} + func schema_pkg_apis_application_v1alpha1_SyncOperation(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ diff --git a/pkg/apis/application/v1alpha1/object_types.go b/pkg/apis/application/v1alpha1/stringorobject_types.go similarity index 51% rename from pkg/apis/application/v1alpha1/object_types.go rename to pkg/apis/application/v1alpha1/stringorobject_types.go index 3503ed87e924b..b09e7f6c00d98 100644 --- a/pkg/apis/application/v1alpha1/object_types.go +++ b/pkg/apis/application/v1alpha1/stringorobject_types.go @@ -5,10 +5,13 @@ import ( "strconv" "k8s.io/apimachinery/pkg/runtime" + "sigs.k8s.io/yaml" ) +// +patchStrategy=replace +// +protobuf.options.(gogoproto.goproto_stringer)=false // +kubebuilder:validation:Type="" -type Object struct { +type StringOrObject struct { // Values as string if Raw == nil Values string `json:"-" protobuf:"bytes,1,opt,name=values"` // Raw is Values in raw format if Raw != nil @@ -16,20 +19,24 @@ type Object struct { } // IsEmpty returns true if the Object is empty -func (o Object) IsEmpty() bool { +func (o StringOrObject) IsEmpty() bool { return o.Raw == nil && o.Values == "" } -// Value returns the value -func (o Object) Value() []byte { +// Value returns either the value in Raw or Values +func (o StringOrObject) Value() []byte { if o.Raw != nil { - return o.Raw.Raw + b, err := yaml.JSONToYAML(o.Raw.Raw) + if err != nil { + return []byte{} + } + return b } return []byte(o.Values) } // MarshalJSON implements the json.Marshaller interface. -func (o Object) MarshalJSON() ([]byte, error) { +func (o StringOrObject) MarshalJSON() ([]byte, error) { if o.Raw == nil { if o.Values != "" { return json.Marshal(o.Values) @@ -40,9 +47,9 @@ func (o Object) MarshalJSON() ([]byte, error) { } // UnmarshalJSON implements the json.Unmarshaller interface. -func (o *Object) UnmarshalJSON(value []byte) error { +func (o *StringOrObject) UnmarshalJSON(value []byte) error { var v interface{} - if err := json.Unmarshal([]byte(value), &v); err != nil { + if err := json.Unmarshal(value, &v); err != nil { // handle error return err } @@ -52,23 +59,44 @@ func (o *Object) UnmarshalJSON(value []byte) error { o.Raw = &runtime.RawExtension{} return o.Raw.UnmarshalJSON(value) default: - // default to string - s, err := strconv.Unquote(string(value)) - if err != nil { - return err - } - o.Values = s + // default to string + s, err := strconv.Unquote(string(value)) + if err != nil { + return err + } + o.Values = s } return nil } +// String formats the Object as a string +func (o *StringOrObject) String() string { + if o == nil { + return "" + } + if o.Raw == nil { + return o.Values + } + + b, err := yaml.JSONToYAML(o.Raw.Raw) + if err != nil { + return "" + } + return string(b) +} + +// ToUnstructured implements the value.UnstructuredConverter interface. +func (o StringOrObject) ToUnstructured() interface{} { + return o.String() +} + // OpenAPISchemaType is used by the kube-openapi generator when constructing // the OpenAPI spec of this type. // // See: https://github.com/kubernetes/kube-openapi/tree/master/pkg/generators -func (_ Object) OpenAPISchemaType() []string { return []string{"string"} } +func (_ StringOrObject) OpenAPISchemaType() []string { return []string{"string"} } // OpenAPISchemaFormat is used by the kube-openapi generator when constructing // the OpenAPI spec of this type. -func (_ Object) OpenAPISchemaFormat() string { return "" } +func (_ StringOrObject) OpenAPISchemaFormat() string { return "" } diff --git a/pkg/apis/application/v1alpha1/types.go b/pkg/apis/application/v1alpha1/types.go index 50e64caf63215..473708e61cc67 100644 --- a/pkg/apis/application/v1alpha1/types.go +++ b/pkg/apis/application/v1alpha1/types.go @@ -235,7 +235,8 @@ type ApplicationSourceHelm struct { ReleaseName string `json:"releaseName,omitempty" protobuf:"bytes,3,opt,name=releaseName"` // Values specifies Helm values to be passed to helm template, typically defined as a block // +kubebuilder:pruning:PreserveUnknownFields - Values Object `json:"values,omitempty" protobuf:"bytes,4,opt,name=values"` + // +patchStrategy=replace + Values StringOrObject `json:"values,omitempty" patchStrategy:"replace" protobuf:"bytes,4,opt,name=values"` // FileParameters are file parameters to the helm template FileParameters []HelmFileParameter `json:"fileParameters,omitempty" protobuf:"bytes,5,opt,name=fileParameters"` // Version is the Helm version to use for templating (either "2" or "3") diff --git a/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go index 79a9caba054a3..547b6f66b986f 100644 --- a/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/application/v1alpha1/zz_generated.deepcopy.go @@ -1254,27 +1254,6 @@ func (in *KustomizeOptions) DeepCopy() *KustomizeOptions { return out } -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Object) DeepCopyInto(out *Object) { - *out = *in - if in.Raw != nil { - in, out := &in.Raw, &out.Raw - *out = new(runtime.RawExtension) - (*in).DeepCopyInto(*out) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Object. -func (in *Object) DeepCopy() *Object { - if in == nil { - return nil - } - out := new(Object) - in.DeepCopyInto(out) - return out -} - // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Operation) DeepCopyInto(out *Operation) { *out = *in @@ -2028,6 +2007,27 @@ func (in *SignatureKey) DeepCopy() *SignatureKey { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *StringOrObject) DeepCopyInto(out *StringOrObject) { + *out = *in + if in.Raw != nil { + in, out := &in.Raw, &out.Raw + *out = new(runtime.RawExtension) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new StringOrObject. +func (in *StringOrObject) DeepCopy() *StringOrObject { + if in == nil { + return nil + } + out := new(StringOrObject) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SyncOperation) DeepCopyInto(out *SyncOperation) { *out = *in diff --git a/reposerver/repository/repository_test.go b/reposerver/repository/repository_test.go index 44fc97e1518cb..d38046438a8e7 100644 --- a/reposerver/repository/repository_test.go +++ b/reposerver/repository/repository_test.go @@ -641,7 +641,7 @@ func TestGenerateHelmWithValues(t *testing.T) { Path: "./util/helm/testdata/redis", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"values-production.yaml"}, - Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, + Values: argoappv1.StringOrObject{Values: `cluster: {slaveCount: 2}`}, }, }, }) @@ -703,7 +703,7 @@ func TestGenerateHelmWithValuesDirectoryTraversal(t *testing.T) { Path: "./util/helm/testdata/redis", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"../minio/values.yaml"}, - Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, + Values: argoappv1.StringOrObject{Values: `cluster: {slaveCount: 2}`}, }, }, }) @@ -801,7 +801,7 @@ func TestGenerateHelmWithURL(t *testing.T) { Path: "./util/helm/testdata/redis", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"https://raw.githubusercontent.com/argoproj/argocd-example-apps/master/helm-guestbook/values.yaml"}, - Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, + Values: argoappv1.StringOrObject{Values: `cluster: {slaveCount: 2}`}, }, }, HelmOptions: &argoappv1.HelmOptions{ValuesFileSchemes: []string{"https"}}, @@ -821,7 +821,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { Path: "./util/helm/testdata/redis", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"../../../../../minio/values.yaml"}, - Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, + Values: argoappv1.StringOrObject{Values: `cluster: {slaveCount: 2}`}, }, }, }) @@ -838,7 +838,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { Path: ".", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"../my-chart/my-chart-values.yaml"}, - Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, + Values: argoappv1.StringOrObject{Values: `cluster: {slaveCount: 2}`}, }, }, }) @@ -854,7 +854,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { Path: ".", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"/my-chart-values.yaml"}, - Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, + Values: argoappv1.StringOrObject{Values: `cluster: {slaveCount: 2}`}, }, }, }) @@ -870,7 +870,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { Path: ".", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"/../../../my-chart-values.yaml"}, - Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`} , + Values: argoappv1.StringOrObject{Values: `cluster: {slaveCount: 2}`} , }, }, }) @@ -887,7 +887,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { Path: ".", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"file://../../../../my-chart-values.yaml"}, - Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, + Values: argoappv1.StringOrObject{Values: `cluster: {slaveCount: 2}`}, }, }, }) @@ -934,7 +934,7 @@ func TestGenerateHelmWithAbsoluteFileParameter(t *testing.T) { Path: "./util/helm/testdata/redis", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"values-production.yaml"}, - Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, + Values: argoappv1.StringOrObject{Values: `cluster: {slaveCount: 2}`}, FileParameters: []argoappv1.HelmFileParameter{ argoappv1.HelmFileParameter{ Name: "passwordContent", @@ -961,7 +961,7 @@ func TestGenerateHelmWithFileParameter(t *testing.T) { Path: "./util/helm/testdata/redis", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"values-production.yaml"}, - Values: argoappv1.Object{Values: `cluster: {slaveCount: 2}`}, + Values: argoappv1.StringOrObject{Values: `cluster: {slaveCount: 2}`}, FileParameters: []argoappv1.HelmFileParameter{ argoappv1.HelmFileParameter{ Name: "passwordContent", diff --git a/ui/src/app/applications/components/application-parameters/application-parameters.tsx b/ui/src/app/applications/components/application-parameters/application-parameters.tsx index 972783777f682..05aaa55b812d9 100644 --- a/ui/src/app/applications/components/application-parameters/application-parameters.tsx +++ b/ui/src/app/applications/components/application-parameters/application-parameters.tsx @@ -9,6 +9,10 @@ import {services} from '../../../shared/services'; import {ImageTagFieldEditor} from './kustomize'; import * as kustomize from './kustomize-image'; import {VarsInputField} from './vars-input-field'; +import * as jsYaml from 'js-yaml'; +import { helpTip } from '../utils'; + +let isValuesRaw = false; const TextWithMetadataField = ReactFormField((props: {metadata: {value: string}; fieldApi: FieldApi; className: string}) => { const { @@ -115,6 +119,12 @@ export const ApplicationParameters = (props: { const app = props.application; const source = props.application.spec.source; const [removedOverrides, setRemovedOverrides] = React.useState(new Array()); + let appValues : string; + if (app && app.spec && app.spec.source && app.spec.source.helm && app.spec.source.helm.values) { + isValuesRaw = typeof(app.spec.source.helm.values) === "string" ? false : true + appValues = isValuesRaw ? jsYaml.safeDump(app.spec.source.helm.values) : app.spec.source.helm.values; + app.spec.source.helm.values = isValuesRaw ? jsYaml.safeDump(app.spec.source.helm.values) : app.spec.source.helm.values; + } let attributes: EditablePanelItem[] = []; @@ -192,28 +202,37 @@ export const ApplicationParameters = (props: { /> ) }); - attributes.push({ + attributes.push({ title: 'VALUES', view: app.spec.source.helm && ( -
{app.spec.source.helm.values}
+
{appValues}
), - edit: (formApi: FormApi) => ( -
-
-                        
-                    
- {props.details.helm.values && ( -
- - -
{props.details.helm.values}
-
-
- )} -
- ) + edit: (formApi: FormApi) => { + if (app && app.spec && app.spec.source && app.spec.source.helm && app.spec.source.helm.values) { + if (isValuesRaw && typeof(app.spec.source.helm.values)!= "string") { + app.spec.source.helm.values = jsYaml.safeDump(app.spec.source.helm.values); // set values to string + } else if (isValuesRaw && typeof(app.spec.source.helm.values) === "string") { + app.spec.source.helm.values = jsYaml.safeLoad(app.spec.source.helm.values); // load values as json + } + } + return ( +
+
+                            
+                        
+ {appValues && ( +
+ + +
{appValues}
+
+
+ )} +
+ ) + } }); const paramsByName = new Map(); (props.details.helm.parameters || []).forEach(param => paramsByName.set(param.name, param)); @@ -304,7 +323,11 @@ export const ApplicationParameters = (props: { edit: (formApi: FormApi) => }); } - + if (app && app.spec && app.spec.source && app.spec.source.helm && app.spec.source.helm.values) { + if (isValuesRaw && typeof(app.spec.source.helm.values) === "string" ) { + app.spec.source.helm.values = jsYaml.safeLoad(app.spec.source.helm.values) // Load values as json + } + } return ( ()); }) From b5f6ecd3b1ecf136a5041d92b6d6f781a32da018 Mon Sep 17 00:00:00 2001 From: Mohamed Chiheb Date: Mon, 21 Mar 2022 14:40:13 +0100 Subject: [PATCH 04/10] Add org to users Signed-off-by: Mohamed Chiheb --- USERS.md | 1 + manifests/ha/install.yaml | 3 +++ manifests/ha/namespace-install.yaml | 3 +++ reposerver/repository/repository_test.go | 2 +- .../application-parameters/application-parameters.tsx | 4 ++-- 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/USERS.md b/USERS.md index 92a2fe7c1a9aa..66385e9a3013c 100644 --- a/USERS.md +++ b/USERS.md @@ -201,3 +201,4 @@ Currently, the following organizations are **officially** using Argo CD: 1. [Yubo](https://www.yubo.live/) 1. [Zimpler](https://www.zimpler.com/) 1. [ZOZO](https://corp.zozo.com/) +1. [Renault Group](https://www.renaultgroup.com/) diff --git a/manifests/ha/install.yaml b/manifests/ha/install.yaml index 3186d83e2456d..201f7625fe789 100644 --- a/manifests/ha/install.yaml +++ b/manifests/ha/install.yaml @@ -9738,6 +9738,7 @@ spec: apiVersion: v1 kind: Service metadata: + annotations: null labels: app.kubernetes.io/component: redis app.kubernetes.io/name: argocd-redis-ha @@ -9839,6 +9840,7 @@ spec: apiVersion: v1 kind: Service metadata: + annotations: null labels: app.kubernetes.io/component: redis app.kubernetes.io/name: argocd-redis-ha-haproxy @@ -10809,6 +10811,7 @@ spec: apiVersion: apps/v1 kind: StatefulSet metadata: + annotations: {} labels: app.kubernetes.io/component: redis app.kubernetes.io/name: argocd-redis-ha diff --git a/manifests/ha/namespace-install.yaml b/manifests/ha/namespace-install.yaml index 7dbf9c746b950..aef860e40070a 100644 --- a/manifests/ha/namespace-install.yaml +++ b/manifests/ha/namespace-install.yaml @@ -1025,6 +1025,7 @@ spec: apiVersion: v1 kind: Service metadata: + annotations: null labels: app.kubernetes.io/component: redis app.kubernetes.io/name: argocd-redis-ha @@ -1127,6 +1128,7 @@ apiVersion: v1 kind: Service metadata: labels: + annotations: null app.kubernetes.io/component: redis app.kubernetes.io/name: argocd-redis-ha-haproxy app.kubernetes.io/part-of: argocd @@ -2096,6 +2098,7 @@ spec: apiVersion: apps/v1 kind: StatefulSet metadata: + annotations: {} labels: app.kubernetes.io/component: redis app.kubernetes.io/name: argocd-redis-ha diff --git a/reposerver/repository/repository_test.go b/reposerver/repository/repository_test.go index d38046438a8e7..fd22b763a9ff5 100644 --- a/reposerver/repository/repository_test.go +++ b/reposerver/repository/repository_test.go @@ -870,7 +870,7 @@ func TestGenerateHelmWithValuesDirectoryTraversalOutsideRepo(t *testing.T) { Path: ".", Helm: &argoappv1.ApplicationSourceHelm{ ValueFiles: []string{"/../../../my-chart-values.yaml"}, - Values: argoappv1.StringOrObject{Values: `cluster: {slaveCount: 2}`} , + Values: argoappv1.StringOrObject{Values: `cluster: {slaveCount: 2}`}, }, }, }) diff --git a/ui/src/app/applications/components/application-parameters/application-parameters.tsx b/ui/src/app/applications/components/application-parameters/application-parameters.tsx index 05aaa55b812d9..a9aaf995182e9 100644 --- a/ui/src/app/applications/components/application-parameters/application-parameters.tsx +++ b/ui/src/app/applications/components/application-parameters/application-parameters.tsx @@ -121,7 +121,7 @@ export const ApplicationParameters = (props: { const [removedOverrides, setRemovedOverrides] = React.useState(new Array()); let appValues : string; if (app && app.spec && app.spec.source && app.spec.source.helm && app.spec.source.helm.values) { - isValuesRaw = typeof(app.spec.source.helm.values) === "string" ? false : true + isValuesRaw = typeof(app.spec.source.helm.values) !== "string" appValues = isValuesRaw ? jsYaml.safeDump(app.spec.source.helm.values) : app.spec.source.helm.values; app.spec.source.helm.values = isValuesRaw ? jsYaml.safeDump(app.spec.source.helm.values) : app.spec.source.helm.values; } @@ -211,7 +211,7 @@ export const ApplicationParameters = (props: { ), edit: (formApi: FormApi) => { if (app && app.spec && app.spec.source && app.spec.source.helm && app.spec.source.helm.values) { - if (isValuesRaw && typeof(app.spec.source.helm.values)!= "string") { + if (isValuesRaw && typeof(app.spec.source.helm.values) !== "string") { app.spec.source.helm.values = jsYaml.safeDump(app.spec.source.helm.values); // set values to string } else if (isValuesRaw && typeof(app.spec.source.helm.values) === "string") { app.spec.source.helm.values = jsYaml.safeLoad(app.spec.source.helm.values); // load values as json From e23b384a484bf948b3f24c336880bfab2b8e2c62 Mon Sep 17 00:00:00 2001 From: Mohamed Chiheb Date: Mon, 21 Mar 2022 16:52:47 +0100 Subject: [PATCH 05/10] Fix e2e test and fix lint Signed-off-by: Mohamed Chiheb --- manifests/ha/namespace-install.yaml | 2 +- .../application/v1alpha1/stringorobject_types.go | 2 +- test/e2e/helm_test.go | 2 +- .../application-parameters.tsx | 16 ++++++++-------- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/manifests/ha/namespace-install.yaml b/manifests/ha/namespace-install.yaml index aef860e40070a..4aa100e20da7e 100644 --- a/manifests/ha/namespace-install.yaml +++ b/manifests/ha/namespace-install.yaml @@ -1127,8 +1127,8 @@ spec: apiVersion: v1 kind: Service metadata: + annotations: null labels: - annotations: null app.kubernetes.io/component: redis app.kubernetes.io/name: argocd-redis-ha-haproxy app.kubernetes.io/part-of: argocd diff --git a/pkg/apis/application/v1alpha1/stringorobject_types.go b/pkg/apis/application/v1alpha1/stringorobject_types.go index b09e7f6c00d98..4ef0d3448fc97 100644 --- a/pkg/apis/application/v1alpha1/stringorobject_types.go +++ b/pkg/apis/application/v1alpha1/stringorobject_types.go @@ -41,7 +41,7 @@ func (o StringOrObject) MarshalJSON() ([]byte, error) { if o.Values != "" { return json.Marshal(o.Values) } - return []byte("null"), nil + return []byte(""), nil } return o.Raw.MarshalJSON() } diff --git a/test/e2e/helm_test.go b/test/e2e/helm_test.go index a1850e06eab74..d486be5bcbe92 100644 --- a/test/e2e/helm_test.go +++ b/test/e2e/helm_test.go @@ -202,7 +202,7 @@ func TestHelmValuesLiteralFileLocal(t *testing.T) { if err != nil { panic(err) } - assert.Equal(t, string(data), app.Spec.Source.Helm.Values) + assert.Equal(t, string(data), app.Spec.Source.Helm.Values.Values) }). When(). AppUnSet("--values-literal"). diff --git a/ui/src/app/applications/components/application-parameters/application-parameters.tsx b/ui/src/app/applications/components/application-parameters/application-parameters.tsx index a9aaf995182e9..11b31827880f3 100644 --- a/ui/src/app/applications/components/application-parameters/application-parameters.tsx +++ b/ui/src/app/applications/components/application-parameters/application-parameters.tsx @@ -10,7 +10,6 @@ import {ImageTagFieldEditor} from './kustomize'; import * as kustomize from './kustomize-image'; import {VarsInputField} from './vars-input-field'; import * as jsYaml from 'js-yaml'; -import { helpTip } from '../utils'; let isValuesRaw = false; @@ -119,9 +118,10 @@ export const ApplicationParameters = (props: { const app = props.application; const source = props.application.spec.source; const [removedOverrides, setRemovedOverrides] = React.useState(new Array()); + /* tslint:disable:prettier*/ let appValues : string; if (app && app.spec && app.spec.source && app.spec.source.helm && app.spec.source.helm.values) { - isValuesRaw = typeof(app.spec.source.helm.values) !== "string" + isValuesRaw = typeof(app.spec.source.helm.values) !== 'string'; // nolint appValues = isValuesRaw ? jsYaml.safeDump(app.spec.source.helm.values) : app.spec.source.helm.values; app.spec.source.helm.values = isValuesRaw ? jsYaml.safeDump(app.spec.source.helm.values) : app.spec.source.helm.values; } @@ -211,9 +211,9 @@ export const ApplicationParameters = (props: { ), edit: (formApi: FormApi) => { if (app && app.spec && app.spec.source && app.spec.source.helm && app.spec.source.helm.values) { - if (isValuesRaw && typeof(app.spec.source.helm.values) !== "string") { + if (isValuesRaw && typeof(app.spec.source.helm.values) !== 'string') { app.spec.source.helm.values = jsYaml.safeDump(app.spec.source.helm.values); // set values to string - } else if (isValuesRaw && typeof(app.spec.source.helm.values) === "string") { + } else if (isValuesRaw && typeof(app.spec.source.helm.values) === 'string') { app.spec.source.helm.values = jsYaml.safeLoad(app.spec.source.helm.values); // load values as json } } @@ -324,7 +324,7 @@ export const ApplicationParameters = (props: { }); } if (app && app.spec && app.spec.source && app.spec.source.helm && app.spec.source.helm.values) { - if (isValuesRaw && typeof(app.spec.source.helm.values) === "string" ) { + if (isValuesRaw && typeof(app.spec.source.helm.values) === 'string' ) { app.spec.source.helm.values = jsYaml.safeLoad(app.spec.source.helm.values) // Load values as json } } @@ -348,9 +348,9 @@ export const ApplicationParameters = (props: { } if (app && app.spec && app.spec.source && app.spec.source.helm && app.spec.source.helm.values) { - if (isValuesRaw && typeof(input.spec.source.helm.values) === "string") { - input.spec.source.helm.values = jsYaml.safeLoad(input.spec.source.helm.values) // Load values as json - app.spec.source.helm.values = jsYaml.safeLoad(app.spec.source.helm.values) + if (isValuesRaw && typeof(input.spec.source.helm.values) === 'string') { + input.spec.source.helm.values = jsYaml.safeLoad(input.spec.source.helm.values); // Load values as json + app.spec.source.helm.values = jsYaml.safeLoad(app.spec.source.helm.values); } } From 953ce0aa47f9c8b71e396933ff99144ad7163ce5 Mon Sep 17 00:00:00 2001 From: Mohamed Chiheb Date: Tue, 22 Mar 2022 14:47:03 +0100 Subject: [PATCH 06/10] Add unit test for helm values as raw format Signed-off-by: Mohamed Chiheb --- reposerver/repository/repository_test.go | 35 ++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/reposerver/repository/repository_test.go b/reposerver/repository/repository_test.go index fd22b763a9ff5..c18768038c4ac 100644 --- a/reposerver/repository/repository_test.go +++ b/reposerver/repository/repository_test.go @@ -666,6 +666,41 @@ func TestGenerateHelmWithValues(t *testing.T) { } +func TestGenerateHelmWithRawValues(t *testing.T) { + service := newService("../..") + + res, err := service.GenerateManifest(context.Background(), &apiclient.ManifestRequest{ + Repo: &argoappv1.Repository{}, + AppName: "test", + ApplicationSource: &argoappv1.ApplicationSource{ + Path: "./util/helm/testdata/redis", + Helm: &argoappv1.ApplicationSourceHelm{ + ValueFiles: []string{"values-production.yaml"}, + Values: argoappv1.StringOrObject{Raw: &runtime.RawExtension{Raw: []byte(`cluster: {slaveCount: 2}`)}}, + }, + }, + }) + + assert.NoError(t, err) + + replicasVerified := false + for _, src := range res.Manifests { + obj := unstructured.Unstructured{} + err = json.Unmarshal([]byte(src), &obj) + assert.NoError(t, err) + + if obj.GetKind() == "Deployment" && obj.GetName() == "test-redis-slave" { + var dep v1.Deployment + err := runtime.DefaultUnstructuredConverter.FromUnstructured(obj.Object, &dep) + assert.NoError(t, err) + assert.Equal(t, int32(2), *dep.Spec.Replicas) + replicasVerified = true + } + } + assert.True(t, replicasVerified) + +} + func TestHelmWithMissingValueFiles(t *testing.T) { service := newService("../..") missingValuesFile := "values-prod-overrides.yaml" From 831035a677e542d6e716d323f9b76721c5d900be Mon Sep 17 00:00:00 2001 From: Mohamed Chiheb Date: Tue, 22 Mar 2022 15:41:10 +0100 Subject: [PATCH 07/10] Fix MarshalJSON Signed-off-by: Mohamed Chiheb --- pkg/apis/application/v1alpha1/stringorobject_types.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/apis/application/v1alpha1/stringorobject_types.go b/pkg/apis/application/v1alpha1/stringorobject_types.go index 4ef0d3448fc97..b09e7f6c00d98 100644 --- a/pkg/apis/application/v1alpha1/stringorobject_types.go +++ b/pkg/apis/application/v1alpha1/stringorobject_types.go @@ -41,7 +41,7 @@ func (o StringOrObject) MarshalJSON() ([]byte, error) { if o.Values != "" { return json.Marshal(o.Values) } - return []byte(""), nil + return []byte("null"), nil } return o.Raw.MarshalJSON() } From 40533b2a4d2371dacd4dc13b2cfb7ae17916e06e Mon Sep 17 00:00:00 2001 From: Mohamed Chiheb Date: Tue, 22 Mar 2022 17:19:18 +0100 Subject: [PATCH 08/10] Fix TestHelmValuesLiteralFileRemote test Signed-off-by: Mohamed Chiheb --- test/e2e/helm_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/helm_test.go b/test/e2e/helm_test.go index d486be5bcbe92..b3623c557e14b 100644 --- a/test/e2e/helm_test.go +++ b/test/e2e/helm_test.go @@ -244,7 +244,7 @@ func TestHelmValuesLiteralFileRemote(t *testing.T) { AppSet("--values-literal-file", "http://"+address). Then(). And(func(app *Application) { - assert.Equal(t, "a: b", app.Spec.Source.Helm.Values) + assert.Equal(t, "a: b", app.Spec.Source.Helm.Values.Values) }). When(). AppUnSet("--values-literal"). From b6718cb3077e497ea2f62d1191a21f8decabd5f5 Mon Sep 17 00:00:00 2001 From: Mohamed Chiheb Date: Wed, 30 Mar 2022 17:43:06 +0100 Subject: [PATCH 09/10] Add a cli flag for accepting helm values as raw object and adding an e2e that sets values as raw via this flag Signed-off-by: Mohamed Chiheb Signed-off-by: Mohamed Chiheb Signed-off-by: Mohamed Chiheb --- cmd/argocd/commands/app.go | 10 ++++++- cmd/util/app.go | 24 +++++++++++++++++ .../argocd_admin_app_generate-spec.md | 1 + docs/user-guide/commands/argocd_app_create.md | 1 + docs/user-guide/commands/argocd_app_set.md | 1 + docs/user-guide/commands/argocd_app_unset.md | 1 + test/e2e/helm_test.go | 27 +++++++++++++++++++ 7 files changed, 64 insertions(+), 1 deletion(-) diff --git a/cmd/argocd/commands/app.go b/cmd/argocd/commands/app.go index 26ac0f924bee5..8e7cac7caeb08 100644 --- a/cmd/argocd/commands/app.go +++ b/cmd/argocd/commands/app.go @@ -576,6 +576,7 @@ func NewApplicationUnsetCommand(clientOpts *argocdclient.ClientOptions) *cobra.C kustomizeImages []string pluginEnvs []string appOpts cmdutil.AppOptions + valuesRawLiteral bool ) var command = &cobra.Command{ Use: "unset APPNAME parameters", @@ -632,7 +633,7 @@ func NewApplicationUnsetCommand(clientOpts *argocdclient.ClientOptions) *cobra.C } } if app.Spec.Source.Helm != nil { - if len(parameters) == 0 && len(valuesFiles) == 0 && !valuesLiteral && !ignoreMissingValueFiles { + if len(parameters) == 0 && len(valuesFiles) == 0 && !valuesLiteral && !valuesRawLiteral && !ignoreMissingValueFiles { c.HelpFunc()(c, args) os.Exit(1) } @@ -650,6 +651,12 @@ func NewApplicationUnsetCommand(clientOpts *argocdclient.ClientOptions) *cobra.C app.Spec.Source.Helm.Values.Values = "" updated = true } + if valuesRawLiteral { + app.Spec.Source.Helm.Values = argoappv1.StringOrObject{ + Raw: nil, + } + updated = true + } for _, valuesFile := range valuesFiles { specValueFiles := app.Spec.Source.Helm.ValueFiles for i, vf := range specValueFiles { @@ -705,6 +712,7 @@ func NewApplicationUnsetCommand(clientOpts *argocdclient.ClientOptions) *cobra.C command.Flags().BoolVar(&kustomizeVersion, "kustomize-version", false, "Kustomize version") command.Flags().StringArrayVar(&kustomizeImages, "kustomize-image", []string{}, "Kustomize images name (e.g. --kustomize-image node --kustomize-image mysql)") command.Flags().StringArrayVar(&pluginEnvs, "plugin-env", []string{}, "Unset plugin env variables (e.g --plugin-env name)") + command.Flags().BoolVar(&valuesRawLiteral, "values-raw-literal", false, "Unset literal Helm values raw") return command } diff --git a/cmd/util/app.go b/cmd/util/app.go index f9753164ec4b8..8011f48e3ea41 100644 --- a/cmd/util/app.go +++ b/cmd/util/app.go @@ -10,11 +10,13 @@ import ( "time" "github.com/argoproj/gitops-engine/pkg/utils/kube" + "sigs.k8s.io/yaml" log "github.com/sirupsen/logrus" "github.com/spf13/cobra" "github.com/spf13/pflag" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/utils/pointer" "github.com/argoproj/argo-cd/v2/pkg/apis/application" @@ -74,6 +76,7 @@ type AppOptions struct { retryBackoffDuration time.Duration retryBackoffMaxDuration time.Duration retryBackoffFactor int64 + valuesRaw string } func AddAppFlags(command *cobra.Command, opts *AppOptions) { @@ -126,6 +129,7 @@ func AddAppFlags(command *cobra.Command, opts *AppOptions) { command.Flags().DurationVar(&opts.retryBackoffDuration, "sync-retry-backoff-duration", argoappv1.DefaultSyncRetryDuration, "Sync retry backoff base duration. Input needs to be a duration (e.g. 2m, 1h)") command.Flags().DurationVar(&opts.retryBackoffMaxDuration, "sync-retry-backoff-max-duration", argoappv1.DefaultSyncRetryMaxDuration, "Max sync retry backoff duration. Input needs to be a duration (e.g. 2m, 1h)") command.Flags().Int64Var(&opts.retryBackoffFactor, "sync-retry-backoff-factor", argoappv1.DefaultSyncRetryFactor, "Factor multiplies the base duration after each failed sync retry") + command.Flags().StringVar(&opts.valuesRaw, "values-raw-literal-file", "", "Filename or URL to import as a literal Helm values raw object") } func SetAppSpecOptions(flags *pflag.FlagSet, spec *argoappv1.ApplicationSpec, appOpts *AppOptions) int { @@ -151,6 +155,18 @@ func SetAppSpecOptions(flags *pflag.FlagSet, spec *argoappv1.ApplicationSpec, ap setHelmOpt(&spec.Source, helmOpts{valueFiles: appOpts.valuesFiles}) case "ignore-missing-value-files": setHelmOpt(&spec.Source, helmOpts{ignoreMissingValueFiles: appOpts.ignoreMissingValueFiles}) + case "values-raw-literal-file": + var data []byte + + // read uri + parsedURL, err := url.ParseRequestURI(appOpts.valuesRaw) + if err != nil || !(parsedURL.Scheme == "http" || parsedURL.Scheme == "https") { + data, err = ioutil.ReadFile(appOpts.valuesRaw) + } else { + data, err = config.ReadRemoteFile(appOpts.valuesRaw) + } + errors.CheckError(err) + setHelmOpt(&spec.Source, helmOpts{valuesRaw: data}) case "values-literal-file": var data []byte @@ -385,6 +401,7 @@ type helmOpts struct { helmSetFiles []string passCredentials bool skipCrds bool + valuesRaw []byte } func setHelmOpt(src *argoappv1.ApplicationSource, opts helmOpts) { @@ -400,6 +417,13 @@ func setHelmOpt(src *argoappv1.ApplicationSource, opts helmOpts) { if len(opts.values) > 0 { src.Helm.Values.Values = opts.values } + if len(opts.valuesRaw) > 0 { + data, err := yaml.YAMLToJSON(opts.valuesRaw) + if err != nil { + log.Fatal(err) + } + src.Helm.Values.Raw = &runtime.RawExtension{Raw: data} + } if opts.releaseName != "" { src.Helm.ReleaseName = opts.releaseName } diff --git a/docs/user-guide/commands/argocd_admin_app_generate-spec.md b/docs/user-guide/commands/argocd_admin_app_generate-spec.md index c85735e6f9fe1..49d1105a7dfad 100644 --- a/docs/user-guide/commands/argocd_admin_app_generate-spec.md +++ b/docs/user-guide/commands/argocd_admin_app_generate-spec.md @@ -89,6 +89,7 @@ argocd admin app generate-spec APPNAME [flags] --validate Validation of repo and cluster (default true) --values stringArray Helm values file(s) to use --values-literal-file string Filename or URL to import as a literal Helm values block + --values-raw-literal-file string Filename or URL to import as a literal Helm values raw object ``` ### Options inherited from parent commands diff --git a/docs/user-guide/commands/argocd_app_create.md b/docs/user-guide/commands/argocd_app_create.md index 96173c570787a..173ab58ddfb72 100644 --- a/docs/user-guide/commands/argocd_app_create.md +++ b/docs/user-guide/commands/argocd_app_create.md @@ -88,6 +88,7 @@ argocd app create APPNAME [flags] --validate Validation of repo and cluster (default true) --values stringArray Helm values file(s) to use --values-literal-file string Filename or URL to import as a literal Helm values block + --values-raw-literal-file string Filename or URL to import as a literal Helm values raw object ``` ### Options inherited from parent commands diff --git a/docs/user-guide/commands/argocd_app_set.md b/docs/user-guide/commands/argocd_app_set.md index 14b89ac0de3cc..827a5aaa8e7c6 100644 --- a/docs/user-guide/commands/argocd_app_set.md +++ b/docs/user-guide/commands/argocd_app_set.md @@ -59,6 +59,7 @@ argocd app set APPNAME [flags] --validate Validation of repo and cluster (default true) --values stringArray Helm values file(s) to use --values-literal-file string Filename or URL to import as a literal Helm values block + --values-raw-literal-file string Filename or URL to import as a literal Helm values raw object ``` ### Options inherited from parent commands diff --git a/docs/user-guide/commands/argocd_app_unset.md b/docs/user-guide/commands/argocd_app_unset.md index cb94e2343e393..62656a05afd50 100644 --- a/docs/user-guide/commands/argocd_app_unset.md +++ b/docs/user-guide/commands/argocd_app_unset.md @@ -32,6 +32,7 @@ argocd app unset APPNAME parameters [flags] --plugin-env stringArray Unset plugin env variables (e.g --plugin-env name) --values stringArray Unset one or more Helm values files --values-literal Unset literal Helm values block + --values-raw-literal Unset literal Helm values raw ``` ### Options inherited from parent commands diff --git a/test/e2e/helm_test.go b/test/e2e/helm_test.go index b3623c557e14b..e506aa560c245 100644 --- a/test/e2e/helm_test.go +++ b/test/e2e/helm_test.go @@ -16,6 +16,7 @@ import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" + "sigs.k8s.io/yaml" . "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" "github.com/argoproj/argo-cd/v2/test/e2e/fixture" @@ -212,6 +213,32 @@ func TestHelmValuesLiteralFileLocal(t *testing.T) { }) } +func TestHelmValuesLiteralFileLocalRawObject(t *testing.T) { + Given(t). + Path("helm"). + When(). + CreateApp(). + AppSet("--values-raw-literal-file", "testdata/helm/baz.yaml"). + Then(). + And(func(app *Application) { + data, err := ioutil.ReadFile("testdata/helm/baz.yaml") + if err != nil { + panic(err) + } + data, err = yaml.YAMLToJSON(data) + if err != nil { + panic(err) + } + assert.Equal(t, data, app.Spec.Source.Helm.Values.Raw.Raw) + }). + When(). + AppUnSet("--values-raw-literal"). + Then(). + And(func(app *Application) { + assert.Nil(t, app.Spec.Source.Helm) + }) +} + func TestHelmValuesLiteralFileRemote(t *testing.T) { sentinel := "a: b" serve := func(c chan<- string) { From f201dc134544939cf674defb4fce22f644bd30fd Mon Sep 17 00:00:00 2001 From: Mohamed Chiheb Date: Wed, 30 Mar 2022 17:43:39 +0100 Subject: [PATCH 10/10] Regenrate Signed-off-by: Mohamed Chiheb --- manifests/core-install.yaml | 42 +++++++++++++------------- manifests/crds/applicationset-crd.yaml | 42 +++++++++++++------------- manifests/ha/install.yaml | 42 +++++++++++++------------- manifests/install.yaml | 42 +++++++++++++------------- 4 files changed, 84 insertions(+), 84 deletions(-) diff --git a/manifests/core-install.yaml b/manifests/core-install.yaml index 06a5fae1f0e1c..90aefbe2cb7e2 100644 --- a/manifests/core-install.yaml +++ b/manifests/core-install.yaml @@ -2374,7 +2374,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -2661,7 +2661,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -2950,7 +2950,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -3215,7 +3215,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -3510,7 +3510,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -3797,7 +3797,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4086,7 +4086,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4351,7 +4351,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4644,7 +4644,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4989,7 +4989,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -5247,7 +5247,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -5542,7 +5542,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -5829,7 +5829,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -6118,7 +6118,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -6383,7 +6383,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -6676,7 +6676,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -7021,7 +7021,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -7283,7 +7283,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -7573,7 +7573,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -7918,7 +7918,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -8181,7 +8181,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object diff --git a/manifests/crds/applicationset-crd.yaml b/manifests/crds/applicationset-crd.yaml index 065976751dfa5..b138200e3cd77 100644 --- a/manifests/crds/applicationset-crd.yaml +++ b/manifests/crds/applicationset-crd.yaml @@ -222,7 +222,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -509,7 +509,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -798,7 +798,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -1063,7 +1063,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -1358,7 +1358,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -1645,7 +1645,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -1934,7 +1934,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -2199,7 +2199,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -2492,7 +2492,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -2837,7 +2837,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -3095,7 +3095,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -3390,7 +3390,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -3677,7 +3677,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -3966,7 +3966,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4231,7 +4231,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4524,7 +4524,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4869,7 +4869,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -5131,7 +5131,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -5421,7 +5421,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -5766,7 +5766,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -6029,7 +6029,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object diff --git a/manifests/ha/install.yaml b/manifests/ha/install.yaml index 201f7625fe789..e384764b05957 100644 --- a/manifests/ha/install.yaml +++ b/manifests/ha/install.yaml @@ -2374,7 +2374,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -2661,7 +2661,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -2950,7 +2950,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -3215,7 +3215,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -3510,7 +3510,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -3797,7 +3797,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4086,7 +4086,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4351,7 +4351,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4644,7 +4644,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4989,7 +4989,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -5247,7 +5247,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -5542,7 +5542,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -5829,7 +5829,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -6118,7 +6118,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -6383,7 +6383,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -6676,7 +6676,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -7021,7 +7021,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -7283,7 +7283,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -7573,7 +7573,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -7918,7 +7918,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -8181,7 +8181,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object diff --git a/manifests/install.yaml b/manifests/install.yaml index d29497698c09a..8f724a9fb7db3 100644 --- a/manifests/install.yaml +++ b/manifests/install.yaml @@ -2374,7 +2374,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -2661,7 +2661,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -2950,7 +2950,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -3215,7 +3215,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -3510,7 +3510,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -3797,7 +3797,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4086,7 +4086,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4351,7 +4351,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4644,7 +4644,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -4989,7 +4989,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -5247,7 +5247,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -5542,7 +5542,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -5829,7 +5829,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -6118,7 +6118,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -6383,7 +6383,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -6676,7 +6676,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -7021,7 +7021,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -7283,7 +7283,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -7573,7 +7573,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -7918,7 +7918,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object @@ -8181,7 +8181,7 @@ spec: type: string type: array values: - type: string + x-kubernetes-preserve-unknown-fields: true version: type: string type: object