From 53295ab9b6d5dc43be7b6d87bd42da32a1e99a51 Mon Sep 17 00:00:00 2001 From: qingfeng777 <251098199@qq.com> Date: Sun, 17 Nov 2024 00:37:16 +0800 Subject: [PATCH] feat: workflow template support record last run time with workqueue. Fixes #1915 Signed-off-by: qingfeng777 <251098199@qq.com> --- api/jsonschema/schema.json | 16 + api/openapi-spec/swagger.json | 16 + docs/fields.md | 10 + .../argoproj.io_clusterworkflowtemplates.yaml | 6 + .../full/argoproj.io_workflowtemplates.yaml | 6 + .../argoproj.io_clusterworkflowtemplates.yaml | 4 + .../argoproj.io_workflowtemplates.yaml | 4 + manifests/quick-start-minimal.yaml | 8 + manifests/quick-start-mysql.yaml | 8 + manifests/quick-start-postgres.yaml | 8 + .../cluster_workflow_template_types.go | 3 +- pkg/apis/workflow/v1alpha1/generated.pb.go | 1661 ++++++++++------- pkg/apis/workflow/v1alpha1/generated.proto | 10 + .../workflow/v1alpha1/openapi_generated.go | 39 +- .../v1alpha1/workflow_template_types.go | 9 +- .../v1alpha1/zz_generated.deepcopy.go | 19 + ...WorkflowV1alpha1ClusterWorkflowTemplate.md | 1 + ...rgoprojWorkflowV1alpha1WorkflowTemplate.md | 1 + ...jWorkflowV1alpha1WorkflowTemplateStatus.md | 14 + ...flow_v1alpha1_cluster_workflow_template.py | 6 + ...roj_workflow_v1alpha1_workflow_template.py | 6 + ...kflow_v1alpha1_workflow_template_status.py | 255 +++ .../client/argo_workflows/models/__init__.py | 1 + .../docs/ClusterWorkflowTemplateServiceApi.md | 9 + ...WorkflowV1alpha1ClusterWorkflowTemplate.md | 1 + ...rgoprojWorkflowV1alpha1WorkflowTemplate.md | 1 + ...jWorkflowV1alpha1WorkflowTemplateStatus.md | 13 + .../client/docs/WorkflowTemplateServiceApi.md | 9 + server/workflow/workflow_server.go | 8 +- workflow/controller/operator.go | 6 +- workflow/templateresolution/context.go | 86 +- workflow/templateresolution/context_test.go | 80 +- .../templateresolution/template_status.go | 93 + 33 files changed, 1696 insertions(+), 721 deletions(-) create mode 100644 sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus.md create mode 100644 sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_template_status.py create mode 100644 sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus.md create mode 100644 workflow/templateresolution/template_status.go diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json index e18ea4ee1285..6306971befad 100644 --- a/api/jsonschema/schema.json +++ b/api/jsonschema/schema.json @@ -4424,6 +4424,9 @@ }, "spec": { "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.WorkflowSpec" + }, + "status": { + "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.WorkflowTemplateStatus" } }, "required": [ @@ -8245,6 +8248,9 @@ }, "spec": { "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.WorkflowSpec" + }, + "status": { + "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.WorkflowTemplateStatus" } }, "required": [ @@ -8332,6 +8338,16 @@ }, "type": "object" }, + "io.argoproj.workflow.v1alpha1.WorkflowTemplateStatus": { + "description": "WorkflowTemplateStatus contains overall status information about a WorkflowTemplate", + "properties": { + "lastRunAt": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time", + "description": "Time at which this workflowtemplate last run" + } + }, + "type": "object" + }, "io.argoproj.workflow.v1alpha1.WorkflowTemplateUpdateRequest": { "properties": { "name": { diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index bc16fe9238f4..ccd4e44d57f9 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -8469,6 +8469,9 @@ }, "spec": { "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.WorkflowSpec" + }, + "status": { + "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.WorkflowTemplateStatus" } } }, @@ -12254,6 +12257,9 @@ }, "spec": { "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.WorkflowSpec" + }, + "status": { + "$ref": "#/definitions/io.argoproj.workflow.v1alpha1.WorkflowTemplateStatus" } } }, @@ -12329,6 +12335,16 @@ } } }, + "io.argoproj.workflow.v1alpha1.WorkflowTemplateStatus": { + "description": "WorkflowTemplateStatus contains overall status information about a WorkflowTemplate", + "type": "object", + "properties": { + "lastRunAt": { + "description": "Time at which this workflowtemplate last run", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Time" + } + } + }, "io.argoproj.workflow.v1alpha1.WorkflowTemplateUpdateRequest": { "type": "object", "properties": { diff --git a/docs/fields.md b/docs/fields.md index 19ef63bd5d76..da29150e5156 100644 --- a/docs/fields.md +++ b/docs/fields.md @@ -435,6 +435,7 @@ WorkflowTemplate is the definition of a workflow template resource |`kind`|`string`|Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds| |`metadata`|[`ObjectMeta`](#objectmeta)|_No description available_| |`spec`|[`WorkflowSpec`](#workflowspec)|_No description available_| +|`status`|[`WorkflowTemplateStatus`](#workflowtemplatestatus)|_No description available_| ## WorkflowEventBinding @@ -1317,6 +1318,15 @@ CronWorkflowStatus is the status of a CronWorkflow |`phase`|`string`|v3.6 and after: Phase is an enum of Active or Stopped. It changes to Stopped when stopStrategy.expression is true| |`succeeded`|`integer`|v3.6 and after: Succeeded counts how many times child workflows succeeded| +## WorkflowTemplateStatus + +WorkflowTemplateStatus contains overall status information about a WorkflowTemplate + +### Fields +| Field Name | Field Type | Description | +|:----------:|:----------:|---------------| +|`lastRunAt`|[`Time`](#time)|Time at which this workflowtemplate last run| + ## WorkflowEventBindingSpec _No description available_ diff --git a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml index 0cc5f7ca2477..1f6e0d6a1000 100644 --- a/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_clusterworkflowtemplates.yaml @@ -21752,6 +21752,12 @@ spec: type: string type: object type: object + status: + properties: + lastRunAt: + format: date-time + type: string + type: object required: - metadata - spec diff --git a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml index 330b98e7f927..76fc9d4ec7ab 100644 --- a/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml +++ b/manifests/base/crds/full/argoproj.io_workflowtemplates.yaml @@ -21751,6 +21751,12 @@ spec: type: string type: object type: object + status: + properties: + lastRunAt: + format: date-time + type: string + type: object required: - metadata - spec diff --git a/manifests/base/crds/minimal/argoproj.io_clusterworkflowtemplates.yaml b/manifests/base/crds/minimal/argoproj.io_clusterworkflowtemplates.yaml index 889dfe2f508f..028ee1eb433e 100644 --- a/manifests/base/crds/minimal/argoproj.io_clusterworkflowtemplates.yaml +++ b/manifests/base/crds/minimal/argoproj.io_clusterworkflowtemplates.yaml @@ -28,6 +28,10 @@ spec: type: object x-kubernetes-map-type: atomic x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-map-type: atomic + x-kubernetes-preserve-unknown-fields: true required: - metadata - spec diff --git a/manifests/base/crds/minimal/argoproj.io_workflowtemplates.yaml b/manifests/base/crds/minimal/argoproj.io_workflowtemplates.yaml index 8165ec25b8ba..49a2e7680f0b 100644 --- a/manifests/base/crds/minimal/argoproj.io_workflowtemplates.yaml +++ b/manifests/base/crds/minimal/argoproj.io_workflowtemplates.yaml @@ -27,6 +27,10 @@ spec: type: object x-kubernetes-map-type: atomic x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-map-type: atomic + x-kubernetes-preserve-unknown-fields: true required: - metadata - spec diff --git a/manifests/quick-start-minimal.yaml b/manifests/quick-start-minimal.yaml index 78ad3e0e6f80..1ade59633ab6 100644 --- a/manifests/quick-start-minimal.yaml +++ b/manifests/quick-start-minimal.yaml @@ -29,6 +29,10 @@ spec: type: object x-kubernetes-map-type: atomic x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-map-type: atomic + x-kubernetes-preserve-unknown-fields: true required: - metadata - spec @@ -2687,6 +2691,10 @@ spec: type: object x-kubernetes-map-type: atomic x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-map-type: atomic + x-kubernetes-preserve-unknown-fields: true required: - metadata - spec diff --git a/manifests/quick-start-mysql.yaml b/manifests/quick-start-mysql.yaml index 9cb62fe1bd6a..9ded98259d68 100644 --- a/manifests/quick-start-mysql.yaml +++ b/manifests/quick-start-mysql.yaml @@ -29,6 +29,10 @@ spec: type: object x-kubernetes-map-type: atomic x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-map-type: atomic + x-kubernetes-preserve-unknown-fields: true required: - metadata - spec @@ -2687,6 +2691,10 @@ spec: type: object x-kubernetes-map-type: atomic x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-map-type: atomic + x-kubernetes-preserve-unknown-fields: true required: - metadata - spec diff --git a/manifests/quick-start-postgres.yaml b/manifests/quick-start-postgres.yaml index 7cb175c2cea6..11e6e1f87e5e 100644 --- a/manifests/quick-start-postgres.yaml +++ b/manifests/quick-start-postgres.yaml @@ -29,6 +29,10 @@ spec: type: object x-kubernetes-map-type: atomic x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-map-type: atomic + x-kubernetes-preserve-unknown-fields: true required: - metadata - spec @@ -2687,6 +2691,10 @@ spec: type: object x-kubernetes-map-type: atomic x-kubernetes-preserve-unknown-fields: true + status: + type: object + x-kubernetes-map-type: atomic + x-kubernetes-preserve-unknown-fields: true required: - metadata - spec diff --git a/pkg/apis/workflow/v1alpha1/cluster_workflow_template_types.go b/pkg/apis/workflow/v1alpha1/cluster_workflow_template_types.go index a9c27f620e8d..9a462edee0d3 100644 --- a/pkg/apis/workflow/v1alpha1/cluster_workflow_template_types.go +++ b/pkg/apis/workflow/v1alpha1/cluster_workflow_template_types.go @@ -15,7 +15,8 @@ import ( type ClusterWorkflowTemplate struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata" protobuf:"bytes,1,opt,name=metadata"` - Spec WorkflowSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + Spec WorkflowSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + Status WorkflowTemplateStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` } type ClusterWorkflowTemplates []ClusterWorkflowTemplate diff --git a/pkg/apis/workflow/v1alpha1/generated.pb.go b/pkg/apis/workflow/v1alpha1/generated.pb.go index 90ddb8a58c04..b16a8bce118b 100644 --- a/pkg/apis/workflow/v1alpha1/generated.pb.go +++ b/pkg/apis/workflow/v1alpha1/generated.pb.go @@ -4236,10 +4236,38 @@ func (m *WorkflowTemplateRef) XXX_DiscardUnknown() { var xxx_messageInfo_WorkflowTemplateRef proto.InternalMessageInfo +func (m *WorkflowTemplateStatus) Reset() { *m = WorkflowTemplateStatus{} } +func (*WorkflowTemplateStatus) ProtoMessage() {} +func (*WorkflowTemplateStatus) Descriptor() ([]byte, []int) { + return fileDescriptor_724696e352c3df5f, []int{150} +} +func (m *WorkflowTemplateStatus) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *WorkflowTemplateStatus) 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 *WorkflowTemplateStatus) XXX_Merge(src proto.Message) { + xxx_messageInfo_WorkflowTemplateStatus.Merge(m, src) +} +func (m *WorkflowTemplateStatus) XXX_Size() int { + return m.Size() +} +func (m *WorkflowTemplateStatus) XXX_DiscardUnknown() { + xxx_messageInfo_WorkflowTemplateStatus.DiscardUnknown(m) +} + +var xxx_messageInfo_WorkflowTemplateStatus proto.InternalMessageInfo + func (m *ZipStrategy) Reset() { *m = ZipStrategy{} } func (*ZipStrategy) ProtoMessage() {} func (*ZipStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_724696e352c3df5f, []int{150} + return fileDescriptor_724696e352c3df5f, []int{151} } func (m *ZipStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4440,6 +4468,7 @@ func init() { proto.RegisterType((*WorkflowTemplate)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.WorkflowTemplate") proto.RegisterType((*WorkflowTemplateList)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.WorkflowTemplateList") proto.RegisterType((*WorkflowTemplateRef)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.WorkflowTemplateRef") + proto.RegisterType((*WorkflowTemplateStatus)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.WorkflowTemplateStatus") proto.RegisterType((*ZipStrategy)(nil), "github.com.argoproj.argo_workflows.v3.pkg.apis.workflow.v1alpha1.ZipStrategy") } @@ -4448,705 +4477,708 @@ func init() { } var fileDescriptor_724696e352c3df5f = []byte{ - // 11163 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0xbd, 0x6b, 0x70, 0x64, 0xc7, - 0x75, 0x18, 0xcc, 0x3b, 0xc0, 0xe0, 0x71, 0xf0, 0x58, 0x6c, 0xef, 0x6b, 0x88, 0x25, 0x17, 0xf4, - 0xa5, 0xc8, 0x8f, 0xb4, 0x28, 0xac, 0xb9, 0x94, 0xbe, 0x30, 0x52, 0x22, 0x09, 0x8f, 0x05, 0x16, - 0x04, 0xb0, 0x00, 0x7b, 0xb0, 0xbb, 0x26, 0x45, 0x4b, 0xba, 0x98, 0x69, 0xcc, 0x5c, 0x62, 0xe6, - 0xde, 0xe1, 0xbd, 0x77, 0xb0, 0x0b, 0x3e, 0x24, 0x85, 0x7a, 0xc7, 0xb2, 0x15, 0xcb, 0x92, 0x2c, - 0x29, 0x49, 0x95, 0xa2, 0x48, 0x09, 0x4b, 0x76, 0x25, 0x65, 0xff, 0x4a, 0xd9, 0xff, 0x52, 0x29, - 0x97, 0x52, 0x4e, 0x25, 0x72, 0x45, 0x29, 0xeb, 0x87, 0x0d, 0x46, 0x9b, 0x44, 0x95, 0x4a, 0xa2, - 0xaa, 0x58, 0x15, 0x27, 0xf1, 0xe6, 0x51, 0xa9, 0x7e, 0xde, 0xee, 0x3b, 0x77, 0xb0, 0x03, 0x6c, - 0x03, 0xab, 0xb2, 0x7f, 0x01, 0x73, 0xfa, 0xf4, 0x39, 0xdd, 0x7d, 0xbb, 0x4f, 0x9f, 0x3e, 0xe7, - 0xf4, 0x69, 0x58, 0xaf, 0xf9, 0x49, 0xbd, 0xbd, 0x39, 0x5d, 0x09, 0x9b, 0x17, 0xbd, 0xa8, 0x16, - 0xb6, 0xa2, 0xf0, 0x65, 0xf6, 0xcf, 0xbb, 0x6e, 0x86, 0xd1, 0xf6, 0x56, 0x23, 0xbc, 0x19, 0x5f, - 0xdc, 0x79, 0xe6, 0x62, 0x6b, 0xbb, 0x76, 0xd1, 0x6b, 0xf9, 0xf1, 0x45, 0x09, 0xbd, 0xb8, 0xf3, - 0xb4, 0xd7, 0x68, 0xd5, 0xbd, 0xa7, 0x2f, 0xd6, 0x48, 0x40, 0x22, 0x2f, 0x21, 0xd5, 0xe9, 0x56, - 0x14, 0x26, 0x21, 0xfa, 0x60, 0x4a, 0x71, 0x5a, 0x52, 0x64, 0xff, 0x7c, 0x44, 0x51, 0x9c, 0xde, - 0x79, 0x66, 0xba, 0xb5, 0x5d, 0x9b, 0xa6, 0x14, 0xa7, 0x25, 0x74, 0x5a, 0x52, 0x9c, 0x7c, 0x97, - 0xd6, 0xa6, 0x5a, 0x58, 0x0b, 0x2f, 0x32, 0xc2, 0x9b, 0xed, 0x2d, 0xf6, 0x8b, 0xfd, 0x60, 0xff, - 0x71, 0x86, 0x93, 0xee, 0xf6, 0xb3, 0xf1, 0xb4, 0x1f, 0xd2, 0xf6, 0x5d, 0xac, 0x84, 0x11, 0xb9, - 0xb8, 0xd3, 0xd1, 0xa8, 0xc9, 0x77, 0x68, 0x38, 0xad, 0xb0, 0xe1, 0x57, 0x76, 0xf3, 0xb0, 0xde, - 0x9d, 0x62, 0x35, 0xbd, 0x4a, 0xdd, 0x0f, 0x48, 0xb4, 0x9b, 0x76, 0xbd, 0x49, 0x12, 0x2f, 0xaf, - 0xd6, 0xc5, 0x6e, 0xb5, 0xa2, 0x76, 0x90, 0xf8, 0x4d, 0xd2, 0x51, 0xe1, 0xff, 0xbf, 0x5b, 0x85, - 0xb8, 0x52, 0x27, 0x4d, 0xaf, 0xa3, 0xde, 0x33, 0xdd, 0xea, 0xb5, 0x13, 0xbf, 0x71, 0xd1, 0x0f, - 0x92, 0x38, 0x89, 0xb2, 0x95, 0xdc, 0xcb, 0x30, 0x30, 0xd3, 0x0c, 0xdb, 0x41, 0x82, 0xde, 0x07, - 0xc5, 0x1d, 0xaf, 0xd1, 0x26, 0x25, 0xe7, 0x11, 0xe7, 0x89, 0xe1, 0xd9, 0xc7, 0xbe, 0xb7, 0x37, - 0xf5, 0xc0, 0xed, 0xbd, 0xa9, 0xe2, 0x75, 0x0a, 0xbc, 0xb3, 0x37, 0x75, 0x9a, 0x04, 0x95, 0xb0, - 0xea, 0x07, 0xb5, 0x8b, 0x2f, 0xc7, 0x61, 0x30, 0x7d, 0xb5, 0xdd, 0xdc, 0x24, 0x11, 0xe6, 0x75, - 0xdc, 0x7f, 0x5d, 0x80, 0x13, 0x33, 0x51, 0xa5, 0xee, 0xef, 0x90, 0x72, 0x42, 0xe9, 0xd7, 0x76, - 0x51, 0x1d, 0xfa, 0x12, 0x2f, 0x62, 0xe4, 0x46, 0x2e, 0xad, 0x4e, 0xdf, 0xeb, 0x77, 0x9f, 0xde, - 0xf0, 0x22, 0x49, 0x7b, 0x76, 0xf0, 0xf6, 0xde, 0x54, 0xdf, 0x86, 0x17, 0x61, 0xca, 0x02, 0x35, - 0xa0, 0x3f, 0x08, 0x03, 0x52, 0x2a, 0x30, 0x56, 0x57, 0xef, 0x9d, 0xd5, 0xd5, 0x30, 0x50, 0xfd, - 0x98, 0x1d, 0xba, 0xbd, 0x37, 0xd5, 0x4f, 0x21, 0x98, 0x71, 0xa1, 0xfd, 0x7a, 0xd5, 0x6f, 0x95, - 0xfa, 0x6c, 0xf5, 0xeb, 0x45, 0xbf, 0x65, 0xf6, 0xeb, 0x45, 0xbf, 0x85, 0x29, 0x0b, 0xf7, 0xf3, - 0x05, 0x18, 0x9e, 0x89, 0x6a, 0xed, 0x26, 0x09, 0x92, 0x18, 0x7d, 0x1c, 0xa0, 0xe5, 0x45, 0x5e, - 0x93, 0x24, 0x24, 0x8a, 0x4b, 0xce, 0x23, 0x7d, 0x4f, 0x8c, 0x5c, 0x5a, 0xbe, 0x77, 0xf6, 0xeb, - 0x92, 0xe6, 0x2c, 0x12, 0x9f, 0x1c, 0x14, 0x28, 0xc6, 0x1a, 0x4b, 0xf4, 0x1a, 0x0c, 0x7b, 0x51, - 0xe2, 0x6f, 0x79, 0x95, 0x24, 0x2e, 0x15, 0x18, 0xff, 0xe7, 0xee, 0x9d, 0xff, 0x8c, 0x20, 0x39, - 0x7b, 0x52, 0xb0, 0x1f, 0x96, 0x90, 0x18, 0xa7, 0xfc, 0xdc, 0xdf, 0xed, 0x87, 0x91, 0x99, 0x28, - 0x59, 0x9c, 0x2b, 0x27, 0x5e, 0xd2, 0x8e, 0xd1, 0x1f, 0x38, 0x70, 0x2a, 0xe6, 0xc3, 0xe6, 0x93, - 0x78, 0x3d, 0x0a, 0x2b, 0x24, 0x8e, 0x49, 0x55, 0x8c, 0xcb, 0x96, 0x95, 0x76, 0x49, 0x66, 0xd3, - 0xe5, 0x4e, 0x46, 0x97, 0x83, 0x24, 0xda, 0x9d, 0x7d, 0x5a, 0xb4, 0xf9, 0x54, 0x0e, 0xc6, 0x9b, - 0x6f, 0x4f, 0x21, 0xd9, 0x15, 0x4a, 0x89, 0x7f, 0x62, 0x9c, 0xd7, 0x6a, 0xf4, 0x75, 0x07, 0x46, - 0x5b, 0x61, 0x35, 0xc6, 0xa4, 0x12, 0xb6, 0x5b, 0xa4, 0x2a, 0x86, 0xf7, 0x23, 0x76, 0xbb, 0xb1, - 0xae, 0x71, 0xe0, 0xed, 0x3f, 0x2d, 0xda, 0x3f, 0xaa, 0x17, 0x61, 0xa3, 0x29, 0xe8, 0x59, 0x18, - 0x0d, 0xc2, 0xa4, 0xdc, 0x22, 0x15, 0x7f, 0xcb, 0x27, 0x55, 0x36, 0xf1, 0x87, 0xd2, 0x9a, 0x57, - 0xb5, 0x32, 0x6c, 0x60, 0x4e, 0x2e, 0x40, 0xa9, 0xdb, 0xc8, 0xa1, 0x09, 0xe8, 0xdb, 0x26, 0xbb, - 0x5c, 0xd8, 0x60, 0xfa, 0x2f, 0x3a, 0x2d, 0x05, 0x10, 0x5d, 0xc6, 0x43, 0x42, 0xb2, 0xbc, 0xb7, - 0xf0, 0xac, 0x33, 0xf9, 0x01, 0x38, 0xd9, 0xd1, 0xf4, 0x83, 0x10, 0x70, 0xbf, 0x3f, 0x00, 0x43, - 0xf2, 0x53, 0xa0, 0x47, 0xa0, 0x3f, 0xf0, 0x9a, 0x52, 0xce, 0x8d, 0x8a, 0x7e, 0xf4, 0x5f, 0xf5, - 0x9a, 0x74, 0x85, 0x7b, 0x4d, 0x42, 0x31, 0x5a, 0x5e, 0x52, 0x67, 0x74, 0x34, 0x8c, 0x75, 0x2f, - 0xa9, 0x63, 0x56, 0x82, 0x1e, 0x82, 0xfe, 0x66, 0x58, 0x25, 0x6c, 0x2c, 0x8a, 0x5c, 0x42, 0xac, - 0x86, 0x55, 0x82, 0x19, 0x94, 0xd6, 0xdf, 0x8a, 0xc2, 0x66, 0xa9, 0xdf, 0xac, 0xbf, 0x10, 0x85, - 0x4d, 0xcc, 0x4a, 0xd0, 0xd7, 0x1c, 0x98, 0x90, 0x73, 0x7b, 0x25, 0xac, 0x78, 0x89, 0x1f, 0x06, - 0xa5, 0x22, 0x93, 0x28, 0xd8, 0xde, 0x92, 0x92, 0x94, 0x67, 0x4b, 0xa2, 0x09, 0x13, 0xd9, 0x12, - 0xdc, 0xd1, 0x0a, 0x74, 0x09, 0xa0, 0xd6, 0x08, 0x37, 0xbd, 0x06, 0x1d, 0x90, 0xd2, 0x00, 0xeb, - 0x82, 0x92, 0x0c, 0x8b, 0xaa, 0x04, 0x6b, 0x58, 0xe8, 0x16, 0x0c, 0x7a, 0x5c, 0xfa, 0x97, 0x06, - 0x59, 0x27, 0x9e, 0xb7, 0xd1, 0x09, 0x63, 0x3b, 0x99, 0x1d, 0xb9, 0xbd, 0x37, 0x35, 0x28, 0x80, - 0x58, 0xb2, 0x43, 0x4f, 0xc1, 0x50, 0xd8, 0xa2, 0xed, 0xf6, 0x1a, 0xa5, 0x21, 0x36, 0x31, 0x27, - 0x44, 0x5b, 0x87, 0xd6, 0x04, 0x1c, 0x2b, 0x0c, 0xf4, 0x24, 0x0c, 0xc6, 0xed, 0x4d, 0xfa, 0x1d, - 0x4b, 0xc3, 0xac, 0x63, 0x27, 0x04, 0xf2, 0x60, 0x99, 0x83, 0xb1, 0x2c, 0x47, 0xef, 0x81, 0x91, - 0x88, 0x54, 0xda, 0x51, 0x4c, 0xe8, 0x87, 0x2d, 0x01, 0xa3, 0x7d, 0x4a, 0xa0, 0x8f, 0xe0, 0xb4, - 0x08, 0xeb, 0x78, 0xe8, 0xfd, 0x30, 0x4e, 0x3f, 0xf0, 0xe5, 0x5b, 0xad, 0x88, 0xc4, 0x31, 0xfd, - 0xaa, 0x23, 0x8c, 0xd1, 0x59, 0x51, 0x73, 0x7c, 0xc1, 0x28, 0xc5, 0x19, 0x6c, 0xf4, 0x3a, 0x80, - 0xa7, 0x64, 0x46, 0x69, 0x94, 0x0d, 0xe6, 0x8a, 0xbd, 0x19, 0xb1, 0x38, 0x37, 0x3b, 0x4e, 0xbf, - 0x63, 0xfa, 0x1b, 0x6b, 0xfc, 0xe8, 0xf8, 0x54, 0x49, 0x83, 0x24, 0xa4, 0x5a, 0x1a, 0x63, 0x1d, - 0x56, 0xe3, 0x33, 0xcf, 0xc1, 0x58, 0x96, 0xbb, 0x7f, 0xbb, 0x00, 0x1a, 0x15, 0x34, 0x0b, 0x43, - 0x42, 0xae, 0x89, 0x25, 0x39, 0xfb, 0xb8, 0xfc, 0x0e, 0xf2, 0x0b, 0xde, 0xd9, 0xcb, 0x95, 0x87, - 0xaa, 0x1e, 0x7a, 0x03, 0x46, 0x5a, 0x61, 0x75, 0x95, 0x24, 0x5e, 0xd5, 0x4b, 0x3c, 0xb1, 0x9b, - 0x5b, 0xd8, 0x61, 0x24, 0xc5, 0xd9, 0x13, 0xf4, 0xd3, 0xad, 0xa7, 0x2c, 0xb0, 0xce, 0x0f, 0x3d, - 0x07, 0x28, 0x26, 0xd1, 0x8e, 0x5f, 0x21, 0x33, 0x95, 0x0a, 0x55, 0x89, 0xd8, 0x02, 0xe8, 0x63, - 0x9d, 0x99, 0x14, 0x9d, 0x41, 0xe5, 0x0e, 0x0c, 0x9c, 0x53, 0xcb, 0xfd, 0x41, 0x01, 0xc6, 0xb5, - 0xbe, 0xb6, 0x48, 0x05, 0xbd, 0xe5, 0xc0, 0x09, 0xb5, 0x9d, 0xcd, 0xee, 0x5e, 0xa5, 0xb3, 0x8a, - 0x6f, 0x56, 0xc4, 0xe6, 0xf7, 0xa5, 0xbc, 0xd4, 0x4f, 0xc1, 0x87, 0xcb, 0xfa, 0x73, 0xa2, 0x0f, - 0x27, 0x32, 0xa5, 0x38, 0xdb, 0xac, 0xc9, 0xaf, 0x3a, 0x70, 0x3a, 0x8f, 0x44, 0x8e, 0xcc, 0xad, - 0xeb, 0x32, 0xd7, 0xaa, 0xf0, 0xa2, 0x5c, 0x69, 0x67, 0x74, 0x39, 0xfe, 0x7f, 0x0b, 0x30, 0xa1, - 0x4f, 0x21, 0xa6, 0x09, 0xfc, 0x53, 0x07, 0xce, 0xc8, 0x1e, 0x60, 0x12, 0xb7, 0x1b, 0x99, 0xe1, - 0x6d, 0x5a, 0x1d, 0x5e, 0xbe, 0x93, 0xce, 0xe4, 0xf1, 0xe3, 0xc3, 0xfc, 0xb0, 0x18, 0xe6, 0x33, - 0xb9, 0x38, 0x38, 0xbf, 0xa9, 0x93, 0xdf, 0x76, 0x60, 0xb2, 0x3b, 0xd1, 0x9c, 0x81, 0x6f, 0x99, - 0x03, 0xff, 0xa2, 0xbd, 0x4e, 0x72, 0xf6, 0x6c, 0xf8, 0x59, 0x67, 0xf5, 0x0f, 0xf0, 0x5b, 0x43, - 0xd0, 0xb1, 0x87, 0xa0, 0xa7, 0x61, 0x44, 0x88, 0xe3, 0x95, 0xb0, 0x16, 0xb3, 0x46, 0x0e, 0xf1, - 0xb5, 0x36, 0x93, 0x82, 0xb1, 0x8e, 0x83, 0xaa, 0x50, 0x88, 0x9f, 0x11, 0x4d, 0xb7, 0x20, 0xde, - 0xca, 0xcf, 0x28, 0x2d, 0x72, 0xe0, 0xf6, 0xde, 0x54, 0xa1, 0xfc, 0x0c, 0x2e, 0xc4, 0xcf, 0x50, - 0x4d, 0xbd, 0xe6, 0x27, 0xf6, 0x34, 0xf5, 0x45, 0x3f, 0x51, 0x7c, 0x98, 0xa6, 0xbe, 0xe8, 0x27, - 0x98, 0xb2, 0xa0, 0x27, 0x90, 0x7a, 0x92, 0xb4, 0xd8, 0x8e, 0x6f, 0xe5, 0x04, 0x72, 0x65, 0x63, - 0x63, 0x5d, 0xf1, 0x62, 0xfa, 0x05, 0x85, 0x60, 0xc6, 0x05, 0x7d, 0xce, 0xa1, 0x23, 0xce, 0x0b, - 0xc3, 0x68, 0x57, 0x28, 0x0e, 0xd7, 0xec, 0x4d, 0x81, 0x30, 0xda, 0x55, 0xcc, 0xc5, 0x87, 0x54, - 0x05, 0x58, 0x67, 0xcd, 0x3a, 0x5e, 0xdd, 0x8a, 0x99, 0x9e, 0x60, 0xa7, 0xe3, 0xf3, 0x0b, 0xe5, - 0x4c, 0xc7, 0xe7, 0x17, 0xca, 0x98, 0x71, 0xa1, 0x1f, 0x34, 0xf2, 0x6e, 0x0a, 0x1d, 0xc3, 0xc2, - 0x07, 0xc5, 0xde, 0x4d, 0xf3, 0x83, 0x62, 0xef, 0x26, 0xa6, 0x2c, 0x28, 0xa7, 0x30, 0x8e, 0x99, - 0x4a, 0x61, 0x85, 0xd3, 0x5a, 0xb9, 0x6c, 0x72, 0x5a, 0x2b, 0x97, 0x31, 0x65, 0xc1, 0x26, 0x69, - 0x25, 0x66, 0xfa, 0x88, 0x9d, 0x49, 0x3a, 0x97, 0xe1, 0xb4, 0x38, 0x57, 0xc6, 0x94, 0x05, 0x15, - 0x19, 0xde, 0xab, 0xed, 0x88, 0x2b, 0x33, 0x23, 0x97, 0xd6, 0x2c, 0xcc, 0x17, 0x4a, 0x4e, 0x71, - 0x1b, 0xbe, 0xbd, 0x37, 0x55, 0x64, 0x20, 0xcc, 0x19, 0xb9, 0xbf, 0xdf, 0x97, 0x8a, 0x0b, 0x29, - 0xcf, 0xd1, 0xaf, 0xb1, 0x8d, 0x50, 0xc8, 0x02, 0xa1, 0xfa, 0x3a, 0x47, 0xa6, 0xfa, 0x9e, 0xe2, - 0x3b, 0x9e, 0xc1, 0x0e, 0x67, 0xf9, 0xa3, 0x2f, 0x39, 0x9d, 0x67, 0x5b, 0xcf, 0xfe, 0x5e, 0x96, - 0x6e, 0xcc, 0x7c, 0xaf, 0xd8, 0xf7, 0xc8, 0x3b, 0xf9, 0x39, 0x27, 0x55, 0x22, 0xe2, 0x6e, 0xfb, - 0xc0, 0x47, 0xcd, 0x7d, 0xc0, 0xe2, 0x81, 0x5c, 0x97, 0xfb, 0x9f, 0x77, 0x60, 0x4c, 0xc2, 0xa9, - 0x7a, 0x1c, 0xa3, 0x5b, 0x30, 0x24, 0x5b, 0x2a, 0xbe, 0x9e, 0x4d, 0x5b, 0x80, 0x52, 0xe2, 0x55, - 0x63, 0x14, 0x37, 0xf7, 0xad, 0x01, 0x40, 0xe9, 0x5e, 0xd5, 0x0a, 0x63, 0x9f, 0x49, 0xa2, 0x43, - 0xec, 0x42, 0x81, 0xb6, 0x0b, 0x5d, 0xb7, 0xb9, 0x0b, 0xa5, 0xcd, 0x32, 0xf6, 0xa3, 0x2f, 0x65, - 0xe4, 0x36, 0xdf, 0x98, 0x3e, 0x72, 0x24, 0x72, 0x5b, 0x6b, 0xc2, 0xfe, 0x12, 0x7c, 0x47, 0x48, - 0x70, 0xbe, 0x75, 0xfd, 0xa2, 0x5d, 0x09, 0xae, 0xb5, 0x22, 0x2b, 0xcb, 0x23, 0x2e, 0x61, 0xf9, - 0xde, 0x75, 0xc3, 0xaa, 0x84, 0xd5, 0xb8, 0x9a, 0xb2, 0x36, 0xe2, 0xb2, 0x76, 0xc0, 0x16, 0x4f, - 0x4d, 0xd6, 0x66, 0x79, 0x2a, 0xa9, 0xfb, 0xaa, 0x94, 0xba, 0x7c, 0xd7, 0x7a, 0xc1, 0xb2, 0xd4, - 0xd5, 0xf8, 0x76, 0xca, 0xdf, 0x57, 0xe0, 0x4c, 0x27, 0x1e, 0x26, 0x5b, 0xe8, 0x22, 0x0c, 0x57, - 0xc2, 0x60, 0xcb, 0xaf, 0xad, 0x7a, 0x2d, 0x71, 0x5e, 0x53, 0xb2, 0x68, 0x4e, 0x16, 0xe0, 0x14, - 0x07, 0x3d, 0xcc, 0x05, 0x0f, 0xb7, 0x88, 0x8c, 0x08, 0xd4, 0xbe, 0x65, 0xb2, 0xcb, 0xa4, 0xd0, - 0x7b, 0x87, 0xbe, 0xf6, 0xcd, 0xa9, 0x07, 0x3e, 0xf1, 0xc7, 0x8f, 0x3c, 0xe0, 0xfe, 0x61, 0x1f, - 0x9c, 0xcf, 0xe5, 0x29, 0xb4, 0xf5, 0xdf, 0x32, 0xb4, 0x75, 0xad, 0x5c, 0x48, 0x91, 0x1b, 0x36, - 0x15, 0x59, 0x8d, 0x7c, 0x9e, 0x5e, 0xae, 0x15, 0xe3, 0xfc, 0x46, 0xd1, 0x81, 0x0a, 0xbc, 0x26, - 0x89, 0x5b, 0x5e, 0x85, 0x88, 0xde, 0xab, 0x81, 0xba, 0x2a, 0x0b, 0x70, 0x8a, 0xc3, 0x8f, 0xd0, - 0x5b, 0x5e, 0xbb, 0x91, 0x08, 0x43, 0x99, 0x76, 0x84, 0x66, 0x60, 0x2c, 0xcb, 0xd1, 0xdf, 0x71, - 0x00, 0x75, 0x72, 0x15, 0x0b, 0x71, 0xe3, 0x28, 0xc6, 0x61, 0xf6, 0xec, 0x6d, 0xed, 0x10, 0xae, - 0xf5, 0x34, 0xa7, 0x1d, 0xda, 0x37, 0xfd, 0x58, 0xba, 0x0f, 0xf1, 0xc3, 0x41, 0x0f, 0x36, 0x34, - 0x66, 0x6a, 0xa9, 0x54, 0x48, 0x1c, 0x73, 0x73, 0x9c, 0x6e, 0x6a, 0x61, 0x60, 0x2c, 0xcb, 0xd1, - 0x14, 0x14, 0x49, 0x14, 0x85, 0x91, 0x38, 0x6b, 0xb3, 0x69, 0x7c, 0x99, 0x02, 0x30, 0x87, 0xbb, - 0x3f, 0x2e, 0x40, 0xa9, 0xdb, 0xe9, 0x04, 0xfd, 0x8e, 0x76, 0xae, 0x16, 0x27, 0x27, 0x71, 0xf0, - 0x0b, 0x8f, 0xee, 0x4c, 0x94, 0x3d, 0x00, 0x76, 0x39, 0x61, 0x8b, 0x52, 0x9c, 0x6d, 0xe0, 0xe4, - 0x97, 0xb5, 0x13, 0xb6, 0x4e, 0x22, 0x67, 0x83, 0xdf, 0x32, 0x37, 0xf8, 0x75, 0xdb, 0x9d, 0xd2, - 0xb7, 0xf9, 0x3f, 0x29, 0xc2, 0x29, 0x59, 0x5a, 0x26, 0x74, 0xab, 0x7c, 0xbe, 0x4d, 0xa2, 0x5d, - 0xf4, 0x47, 0x0e, 0x9c, 0xf6, 0xb2, 0xa6, 0x1b, 0x9f, 0x1c, 0xc1, 0x40, 0x6b, 0x5c, 0xa7, 0x67, - 0x72, 0x38, 0xf2, 0x81, 0xbe, 0x24, 0x06, 0xfa, 0x74, 0x1e, 0x4a, 0x17, 0xbb, 0x7b, 0x6e, 0x07, - 0xd0, 0xb3, 0x30, 0x2a, 0xe1, 0xcc, 0xdc, 0xc3, 0x97, 0xb8, 0x32, 0x6e, 0xcf, 0x68, 0x65, 0xd8, - 0xc0, 0xa4, 0x35, 0x13, 0xd2, 0x6c, 0x35, 0xbc, 0x84, 0x68, 0x86, 0x22, 0x55, 0x73, 0x43, 0x2b, - 0xc3, 0x06, 0x26, 0x7a, 0x1c, 0x06, 0x82, 0xb0, 0x4a, 0x96, 0xaa, 0xc2, 0x40, 0x3c, 0x2e, 0xea, - 0x0c, 0x5c, 0x65, 0x50, 0x2c, 0x4a, 0xd1, 0x63, 0xa9, 0x35, 0xae, 0xc8, 0x96, 0xd0, 0x48, 0x9e, - 0x25, 0x0e, 0xfd, 0x3d, 0x07, 0x86, 0x69, 0x8d, 0x8d, 0xdd, 0x16, 0xa1, 0x7b, 0x1b, 0xfd, 0x22, - 0xd5, 0xa3, 0xf9, 0x22, 0x57, 0x25, 0x1b, 0xd3, 0xd4, 0x31, 0xac, 0xe0, 0x6f, 0xbe, 0x3d, 0x35, - 0x24, 0x7f, 0xe0, 0xb4, 0x55, 0x93, 0x8b, 0xf0, 0x60, 0xd7, 0xaf, 0x79, 0x20, 0x57, 0xc0, 0x5f, - 0x83, 0x71, 0xb3, 0x11, 0x07, 0xf2, 0x03, 0xfc, 0x13, 0x6d, 0xd9, 0xf1, 0x7e, 0x09, 0x79, 0x76, - 0xdf, 0xb4, 0x59, 0x35, 0x19, 0xe6, 0xc5, 0xd4, 0x33, 0x27, 0xc3, 0xbc, 0x98, 0x0c, 0xf3, 0xee, - 0x1f, 0x38, 0xe9, 0xd2, 0xd4, 0xd4, 0x3c, 0xba, 0x31, 0xb7, 0xa3, 0x86, 0x10, 0xc4, 0x6a, 0x63, - 0xbe, 0x86, 0x57, 0x30, 0x85, 0xa3, 0x2f, 0x6b, 0xd2, 0x91, 0x56, 0x6b, 0x0b, 0xb7, 0x86, 0x25, - 0x13, 0xbd, 0x41, 0xb8, 0x53, 0xfe, 0x89, 0x02, 0x9c, 0x6d, 0x82, 0xfb, 0xa5, 0x02, 0x3c, 0xbc, - 0xaf, 0xd2, 0x9a, 0xdb, 0x70, 0xe7, 0xbe, 0x37, 0x9c, 0x6e, 0x6b, 0x11, 0x69, 0x85, 0xd7, 0xf0, - 0x8a, 0xf8, 0x5e, 0x6a, 0x5b, 0xc3, 0x1c, 0x8c, 0x65, 0x39, 0x55, 0x1d, 0xb6, 0xc9, 0xee, 0x42, - 0x18, 0x35, 0xbd, 0x44, 0x48, 0x07, 0xa5, 0x3a, 0x2c, 0xcb, 0x02, 0x9c, 0xe2, 0xb8, 0x7f, 0xe4, - 0x40, 0xb6, 0x01, 0xc8, 0x83, 0xf1, 0x76, 0x4c, 0x22, 0xba, 0xa5, 0x96, 0x49, 0x25, 0x22, 0x72, - 0x7a, 0x3e, 0x36, 0xcd, 0xbd, 0xfd, 0xb4, 0x87, 0xd3, 0x95, 0x30, 0x22, 0xd3, 0x3b, 0x4f, 0x4f, - 0x73, 0x8c, 0x65, 0xb2, 0x5b, 0x26, 0x0d, 0x42, 0x69, 0xcc, 0xa2, 0xdb, 0x7b, 0x53, 0xe3, 0xd7, - 0x0c, 0x02, 0x38, 0x43, 0x90, 0xb2, 0x68, 0x79, 0x71, 0x7c, 0x33, 0x8c, 0xaa, 0x82, 0x45, 0xe1, - 0xc0, 0x2c, 0xd6, 0x0d, 0x02, 0x38, 0x43, 0xd0, 0xfd, 0x01, 0x3d, 0x3e, 0xea, 0x5a, 0x2b, 0xfa, - 0x26, 0xd5, 0x7d, 0x28, 0x64, 0xb6, 0x11, 0x6e, 0xce, 0x85, 0x41, 0xe2, 0xf9, 0x01, 0x91, 0xc1, - 0x02, 0x1b, 0x96, 0x74, 0x64, 0x83, 0x76, 0x6a, 0xc3, 0xef, 0x2c, 0xc3, 0x39, 0x6d, 0xa1, 0x3a, - 0xce, 0x66, 0x23, 0xdc, 0xcc, 0x7a, 0x01, 0x29, 0x12, 0x66, 0x25, 0xee, 0x4f, 0x1d, 0x38, 0xd7, - 0x45, 0x19, 0x47, 0x5f, 0x75, 0x60, 0x6c, 0xf3, 0x67, 0xa2, 0x6f, 0x66, 0x33, 0xd0, 0xfb, 0x61, - 0x9c, 0x02, 0xe8, 0x4e, 0x24, 0xe6, 0x66, 0xc1, 0xf4, 0x50, 0xcd, 0x1a, 0xa5, 0x38, 0x83, 0xed, - 0xfe, 0x7a, 0x01, 0x72, 0xb8, 0xa0, 0xa7, 0x60, 0x88, 0x04, 0xd5, 0x56, 0xe8, 0x07, 0x89, 0x10, - 0x46, 0x4a, 0xea, 0x5d, 0x16, 0x70, 0xac, 0x30, 0xc4, 0xf9, 0x43, 0x0c, 0x4c, 0xa1, 0xe3, 0xfc, - 0x21, 0x5a, 0x9e, 0xe2, 0xa0, 0x1a, 0x4c, 0x78, 0xdc, 0xbf, 0xc2, 0xe6, 0x1e, 0x9b, 0xa6, 0x7d, - 0x07, 0x99, 0xa6, 0xa7, 0x99, 0xfb, 0x33, 0x43, 0x02, 0x77, 0x10, 0x45, 0xef, 0x81, 0x91, 0x76, - 0x4c, 0xca, 0xf3, 0xcb, 0x73, 0x11, 0xa9, 0xf2, 0x53, 0xb1, 0xe6, 0xf7, 0xbb, 0x96, 0x16, 0x61, - 0x1d, 0xcf, 0xfd, 0x67, 0x0e, 0x0c, 0xce, 0x7a, 0x95, 0xed, 0x70, 0x6b, 0x8b, 0x0e, 0x45, 0xb5, - 0x1d, 0xa5, 0x86, 0x2d, 0x6d, 0x28, 0xe6, 0x05, 0x1c, 0x2b, 0x0c, 0xb4, 0x01, 0x03, 0x7c, 0xc1, - 0x8b, 0x65, 0xf7, 0x0b, 0x5a, 0x7f, 0x54, 0x1c, 0x0f, 0x9b, 0x0e, 0xed, 0xc4, 0x6f, 0x4c, 0xf3, - 0x38, 0x9e, 0xe9, 0xa5, 0x20, 0x59, 0x8b, 0xca, 0x49, 0xe4, 0x07, 0xb5, 0x59, 0xa0, 0xdb, 0xc5, - 0x02, 0xa3, 0x81, 0x05, 0x2d, 0xda, 0x8d, 0xa6, 0x77, 0x4b, 0xb2, 0x13, 0xe2, 0x47, 0x75, 0x63, - 0x35, 0x2d, 0xc2, 0x3a, 0x9e, 0xfb, 0x87, 0x0e, 0x0c, 0xcf, 0x7a, 0xb1, 0x5f, 0xf9, 0x0b, 0x24, - 0x7c, 0x3e, 0x0c, 0xc5, 0x39, 0xaf, 0x52, 0x27, 0xe8, 0x5a, 0xf6, 0xd0, 0x3b, 0x72, 0xe9, 0x89, - 0x3c, 0x36, 0xea, 0x00, 0xac, 0x73, 0x1a, 0xeb, 0x76, 0x34, 0x76, 0xdf, 0x76, 0x60, 0x7c, 0xae, - 0xe1, 0x93, 0x20, 0x99, 0x23, 0x51, 0xc2, 0x06, 0xae, 0x06, 0x13, 0x15, 0x05, 0x39, 0xcc, 0xd0, - 0xb1, 0xd9, 0x3a, 0x97, 0x21, 0x81, 0x3b, 0x88, 0xa2, 0x2a, 0x9c, 0xe0, 0xb0, 0x74, 0x55, 0x1c, - 0x68, 0xfc, 0x98, 0x75, 0x74, 0xce, 0xa4, 0x80, 0xb3, 0x24, 0xdd, 0x9f, 0x38, 0x70, 0x6e, 0xae, - 0xd1, 0x8e, 0x13, 0x12, 0xdd, 0x10, 0xd2, 0x48, 0xaa, 0xb7, 0xe8, 0xa3, 0x30, 0xd4, 0x94, 0x1e, - 0x5b, 0xe7, 0x2e, 0x13, 0x98, 0xc9, 0x33, 0x8a, 0x4d, 0x1b, 0xb3, 0xb6, 0xf9, 0x32, 0xa9, 0x24, - 0xab, 0x24, 0xf1, 0xd2, 0xf0, 0x82, 0x14, 0x86, 0x15, 0x55, 0xd4, 0x82, 0xfe, 0xb8, 0x45, 0x2a, - 0xf6, 0xa2, 0xbb, 0x64, 0x1f, 0xca, 0x2d, 0x52, 0x49, 0xe5, 0x3a, 0xf3, 0x35, 0x32, 0x4e, 0xee, - 0xff, 0x72, 0xe0, 0x7c, 0x97, 0xfe, 0xae, 0xf8, 0x71, 0x82, 0x5e, 0xea, 0xe8, 0xf3, 0x74, 0x6f, - 0x7d, 0xa6, 0xb5, 0x59, 0x8f, 0x95, 0x40, 0x90, 0x10, 0xad, 0xbf, 0x1f, 0x83, 0xa2, 0x9f, 0x90, - 0xa6, 0x34, 0x43, 0x5b, 0x30, 0x18, 0x75, 0xe9, 0xcb, 0xec, 0x98, 0x8c, 0xf1, 0x5b, 0xa2, 0xfc, - 0x30, 0x67, 0xeb, 0x6e, 0xc3, 0xc0, 0x5c, 0xd8, 0x68, 0x37, 0x83, 0xde, 0x22, 0x65, 0x92, 0xdd, - 0x16, 0xc9, 0xee, 0x91, 0x4c, 0xfd, 0x67, 0x25, 0xd2, 0x70, 0xd4, 0x97, 0x6f, 0x38, 0x72, 0xff, - 0xb9, 0x03, 0x74, 0x55, 0x55, 0x7d, 0xe1, 0x49, 0xe4, 0xe4, 0x38, 0xc3, 0x87, 0x75, 0x72, 0x77, - 0xf6, 0xa6, 0xc6, 0x14, 0xa2, 0x46, 0xff, 0xc3, 0x30, 0x10, 0xb3, 0x23, 0xb9, 0x68, 0xc3, 0x82, - 0xd4, 0x9f, 0xf9, 0x41, 0xfd, 0xce, 0xde, 0x54, 0x4f, 0x61, 0x9b, 0xd3, 0x8a, 0xb6, 0x70, 0x7a, - 0x0a, 0xaa, 0x54, 0xe1, 0x6b, 0x92, 0x38, 0xf6, 0x6a, 0xf2, 0x84, 0xa7, 0x14, 0xbe, 0x55, 0x0e, - 0xc6, 0xb2, 0xdc, 0xfd, 0x8a, 0x03, 0x63, 0x6a, 0xf3, 0xa2, 0xea, 0x3b, 0xba, 0xaa, 0x6f, 0x73, - 0x7c, 0xa6, 0x3c, 0xdc, 0x45, 0xe2, 0x88, 0x8d, 0x7c, 0xff, 0x5d, 0xf0, 0xdd, 0x30, 0x5a, 0x25, - 0x2d, 0x12, 0x54, 0x49, 0x50, 0xa1, 0xc7, 0x6f, 0x3a, 0x43, 0x86, 0x67, 0x27, 0xe8, 0x79, 0x73, - 0x5e, 0x83, 0x63, 0x03, 0xcb, 0xfd, 0x96, 0x03, 0x0f, 0x2a, 0x72, 0x65, 0x92, 0x60, 0x92, 0x44, - 0xbb, 0x2a, 0x4c, 0xf3, 0x60, 0xbb, 0xd5, 0x0d, 0xaa, 0xff, 0x26, 0x11, 0x67, 0x7e, 0xb8, 0xed, - 0x6a, 0x84, 0x6b, 0xcb, 0x8c, 0x08, 0x96, 0xd4, 0xdc, 0x5f, 0xed, 0x83, 0xd3, 0x7a, 0x23, 0x95, - 0x80, 0xf9, 0xa4, 0x03, 0xa0, 0x46, 0x80, 0x6e, 0xc8, 0x7d, 0x76, 0x7c, 0x57, 0xc6, 0x97, 0x4a, - 0x45, 0x90, 0x02, 0xc7, 0x58, 0x63, 0x8b, 0x5e, 0x80, 0xd1, 0x1d, 0xba, 0x28, 0xc8, 0x2a, 0x55, - 0x17, 0xe2, 0x52, 0x1f, 0x6b, 0xc6, 0x54, 0xde, 0xc7, 0xbc, 0x9e, 0xe2, 0xa5, 0xe6, 0x00, 0x0d, - 0x18, 0x63, 0x83, 0x14, 0x3d, 0xe9, 0x8c, 0x45, 0xfa, 0x27, 0x11, 0x36, 0xf1, 0x0f, 0x59, 0xec, - 0x63, 0xf6, 0xab, 0xcf, 0x9e, 0xbc, 0xbd, 0x37, 0x35, 0x66, 0x80, 0xb0, 0xd9, 0x08, 0xf7, 0x05, - 0x60, 0x63, 0xe1, 0x07, 0x6d, 0xb2, 0x16, 0xa0, 0x47, 0xa5, 0x8d, 0x8e, 0xfb, 0x55, 0x94, 0xe4, - 0xd0, 0xed, 0x74, 0xf4, 0x2c, 0xbb, 0xe5, 0xf9, 0x0d, 0x16, 0xbe, 0x48, 0xb1, 0xd4, 0x59, 0x76, - 0x81, 0x41, 0xb1, 0x28, 0x75, 0xa7, 0x61, 0x70, 0x8e, 0xf6, 0x9d, 0x44, 0x94, 0xae, 0x1e, 0x75, - 0x3c, 0x66, 0x44, 0x1d, 0xcb, 0xe8, 0xe2, 0x0d, 0x38, 0x33, 0x17, 0x11, 0x2f, 0x21, 0xe5, 0x67, - 0x66, 0xdb, 0x95, 0x6d, 0x92, 0xf0, 0xd0, 0xae, 0x18, 0xbd, 0x0f, 0xc6, 0x42, 0xb6, 0x65, 0xac, - 0x84, 0x95, 0x6d, 0x3f, 0xa8, 0x09, 0x93, 0xeb, 0x19, 0x41, 0x65, 0x6c, 0x4d, 0x2f, 0xc4, 0x26, - 0xae, 0xfb, 0xef, 0x0b, 0x30, 0x3a, 0x17, 0x85, 0x81, 0x14, 0x8b, 0xc7, 0xb0, 0x95, 0x25, 0xc6, - 0x56, 0x66, 0xc1, 0xdd, 0xa9, 0xb7, 0xbf, 0xdb, 0x76, 0x86, 0x5e, 0x57, 0x22, 0xb2, 0xcf, 0xd6, - 0x11, 0xc4, 0xe0, 0xcb, 0x68, 0xa7, 0x1f, 0xdb, 0x14, 0xa0, 0xee, 0x7f, 0x70, 0x60, 0x42, 0x47, - 0x3f, 0x86, 0x1d, 0x34, 0x36, 0x77, 0xd0, 0xab, 0x76, 0xfb, 0xdb, 0x65, 0xdb, 0x7c, 0x7b, 0xd0, - 0xec, 0x27, 0xf3, 0x75, 0x7f, 0xcd, 0x81, 0xd1, 0x9b, 0x1a, 0x40, 0x74, 0xd6, 0xb6, 0x12, 0xf3, - 0x0e, 0x29, 0x66, 0x74, 0xe8, 0x9d, 0xcc, 0x6f, 0x6c, 0xb4, 0x84, 0xca, 0xfd, 0xb8, 0x52, 0x27, - 0xd5, 0x76, 0x43, 0x6e, 0xdf, 0x6a, 0x48, 0xcb, 0x02, 0x8e, 0x15, 0x06, 0x7a, 0x09, 0x4e, 0x56, - 0xc2, 0xa0, 0xd2, 0x8e, 0x22, 0x12, 0x54, 0x76, 0xd7, 0xd9, 0x1d, 0x09, 0xb1, 0x21, 0x4e, 0x8b, - 0x6a, 0x27, 0xe7, 0xb2, 0x08, 0x77, 0xf2, 0x80, 0xb8, 0x93, 0x10, 0x77, 0x16, 0xc4, 0x74, 0xcb, - 0x12, 0x07, 0x2e, 0xcd, 0x59, 0xc0, 0xc0, 0x58, 0x96, 0xa3, 0x6b, 0x70, 0x2e, 0x4e, 0xbc, 0x28, - 0xf1, 0x83, 0xda, 0x3c, 0xf1, 0xaa, 0x0d, 0x3f, 0xa0, 0x47, 0x89, 0x30, 0xa8, 0x72, 0x57, 0x62, - 0xdf, 0xec, 0xf9, 0xdb, 0x7b, 0x53, 0xe7, 0xca, 0xf9, 0x28, 0xb8, 0x5b, 0x5d, 0xf4, 0x61, 0x98, - 0x14, 0xee, 0x88, 0xad, 0x76, 0xe3, 0xb9, 0x70, 0x33, 0xbe, 0xe2, 0xc7, 0xf4, 0x1c, 0xbf, 0xe2, - 0x37, 0xfd, 0x84, 0x39, 0x0c, 0x8b, 0xb3, 0x17, 0x6e, 0xef, 0x4d, 0x4d, 0x96, 0xbb, 0x62, 0xe1, - 0x7d, 0x28, 0x20, 0x0c, 0x67, 0xb9, 0xf0, 0xeb, 0xa0, 0x3d, 0xc8, 0x68, 0x4f, 0xde, 0xde, 0x9b, - 0x3a, 0xbb, 0x90, 0x8b, 0x81, 0xbb, 0xd4, 0xa4, 0x5f, 0x30, 0xf1, 0x9b, 0xe4, 0xd5, 0x30, 0x20, - 0x2c, 0x50, 0x45, 0xfb, 0x82, 0x1b, 0x02, 0x8e, 0x15, 0x06, 0x7a, 0x39, 0x9d, 0x89, 0x74, 0xb9, - 0x88, 0x80, 0x93, 0x83, 0x4b, 0x38, 0x76, 0x34, 0xb9, 0xa1, 0x51, 0x62, 0x91, 0x94, 0x06, 0x6d, - 0xf4, 0x29, 0x07, 0x46, 0xe3, 0x24, 0x54, 0xf7, 0x1a, 0x44, 0xc4, 0x89, 0x85, 0x69, 0x5f, 0xd6, - 0xa8, 0x72, 0xc5, 0x47, 0x87, 0x60, 0x83, 0x2b, 0x7a, 0x27, 0x0c, 0xcb, 0x09, 0x1c, 0x97, 0x46, - 0x98, 0xae, 0xc4, 0x8e, 0x71, 0x72, 0x7e, 0xc7, 0x38, 0x2d, 0xa7, 0xaa, 0xec, 0xcd, 0x3a, 0x09, - 0x58, 0xcc, 0xad, 0xa6, 0xca, 0xde, 0xa8, 0x93, 0x00, 0xb3, 0x12, 0xf7, 0xc7, 0x7d, 0x80, 0x3a, - 0x05, 0x1f, 0x5a, 0x86, 0x01, 0xaf, 0x92, 0xf8, 0x3b, 0x32, 0xde, 0xf0, 0xd1, 0x3c, 0xa5, 0x80, - 0x0f, 0x20, 0x26, 0x5b, 0x84, 0xce, 0x7b, 0x92, 0x4a, 0xcb, 0x19, 0x56, 0x15, 0x0b, 0x12, 0x28, - 0x84, 0x93, 0x0d, 0x2f, 0x4e, 0x64, 0x0b, 0xab, 0xf4, 0x43, 0x8a, 0xed, 0xe2, 0xe7, 0x7b, 0xfb, - 0x54, 0xb4, 0xc6, 0xec, 0x19, 0xba, 0x1e, 0x57, 0xb2, 0x84, 0x70, 0x27, 0x6d, 0xf4, 0x71, 0xa6, - 0x5d, 0x71, 0xd5, 0x57, 0xaa, 0x35, 0xcb, 0x56, 0x34, 0x0f, 0x4e, 0xd3, 0xd0, 0xac, 0x04, 0x1b, - 0xac, 0xb1, 0x44, 0x17, 0x61, 0x98, 0xad, 0x1b, 0x52, 0x25, 0x7c, 0xf5, 0xf7, 0xa5, 0x4a, 0x70, - 0x59, 0x16, 0xe0, 0x14, 0x47, 0xd3, 0x32, 0xf8, 0x82, 0xef, 0xa2, 0x65, 0xa0, 0x67, 0xa1, 0xd8, - 0xaa, 0x7b, 0xb1, 0x8c, 0x61, 0x77, 0xa5, 0xd4, 0x5e, 0xa7, 0x40, 0x26, 0x9a, 0xb4, 0x6f, 0xc9, - 0x80, 0x98, 0x57, 0x70, 0xff, 0x05, 0xc0, 0xe0, 0xfc, 0xcc, 0xe2, 0x86, 0x17, 0x6f, 0xf7, 0x70, - 0x06, 0xa2, 0xcb, 0x50, 0x28, 0xab, 0x59, 0x41, 0x2a, 0x95, 0x58, 0xac, 0x30, 0x50, 0x00, 0x03, - 0x7e, 0x40, 0x25, 0x4f, 0x69, 0xdc, 0x96, 0x9f, 0x41, 0x9d, 0xe7, 0x98, 0x21, 0x68, 0x89, 0x51, - 0xc7, 0x82, 0x0b, 0x7a, 0x1d, 0x86, 0x3d, 0x79, 0x85, 0x48, 0xec, 0xff, 0xcb, 0x36, 0x0c, 0xe8, - 0x82, 0xa4, 0x1e, 0xc2, 0x24, 0x40, 0x38, 0x65, 0x88, 0x3e, 0xe1, 0xc0, 0x88, 0xec, 0x3a, 0x26, - 0x5b, 0xc2, 0xb7, 0xbd, 0x6a, 0xaf, 0xcf, 0x98, 0x6c, 0xf1, 0xf8, 0x16, 0x0d, 0x80, 0x75, 0x96, - 0x1d, 0x67, 0xa6, 0x62, 0x2f, 0x67, 0x26, 0x74, 0x13, 0x86, 0x6f, 0xfa, 0x49, 0x9d, 0xed, 0xf0, - 0xc2, 0xa7, 0xb6, 0x70, 0xef, 0xad, 0xa6, 0xe4, 0xd2, 0x11, 0xbb, 0x21, 0x19, 0xe0, 0x94, 0x17, - 0x5d, 0x0e, 0xf4, 0x07, 0xbb, 0x82, 0xc5, 0xf6, 0x86, 0x61, 0xb3, 0x02, 0x2b, 0xc0, 0x29, 0x0e, - 0x1d, 0xe2, 0x51, 0xfa, 0xab, 0x4c, 0x5e, 0x69, 0x53, 0xd1, 0x22, 0x62, 0x16, 0x2d, 0xcc, 0x2b, - 0x49, 0x91, 0x0f, 0xd6, 0x0d, 0x8d, 0x07, 0x36, 0x38, 0x2a, 0xd1, 0x39, 0xdc, 0x4d, 0x74, 0xa2, - 0xd7, 0xf9, 0x19, 0x8e, 0x1f, 0x26, 0xc4, 0x6e, 0xb0, 0x62, 0xe7, 0x7c, 0xc3, 0x69, 0xf2, 0x6b, - 0x0d, 0xe9, 0x6f, 0xac, 0xf1, 0xa3, 0x12, 0x23, 0x0c, 0x2e, 0xdf, 0xf2, 0x13, 0x71, 0x19, 0x43, - 0x49, 0x8c, 0x35, 0x06, 0xc5, 0xa2, 0x94, 0xc7, 0x6e, 0xd0, 0x49, 0x10, 0x8b, 0x5d, 0x40, 0x8b, - 0xdd, 0x60, 0x60, 0x2c, 0xcb, 0xd1, 0xdf, 0x75, 0xa0, 0x58, 0x0f, 0xc3, 0xed, 0xb8, 0x34, 0xc6, - 0x26, 0x87, 0x05, 0x9d, 0x5a, 0x48, 0x9c, 0xe9, 0x2b, 0x94, 0xac, 0x79, 0xbd, 0xac, 0xc8, 0x60, - 0x77, 0xf6, 0xa6, 0xc6, 0x57, 0xfc, 0x2d, 0x52, 0xd9, 0xad, 0x34, 0x08, 0x83, 0xbc, 0xf9, 0xb6, - 0x06, 0xb9, 0xbc, 0x43, 0x82, 0x04, 0xf3, 0x56, 0x4d, 0x7e, 0xde, 0x01, 0x48, 0x09, 0xe5, 0x38, - 0x49, 0x89, 0x19, 0x56, 0x60, 0xe1, 0x40, 0x6d, 0x34, 0x4d, 0xf7, 0xba, 0xfe, 0x2b, 0x07, 0x46, - 0x68, 0xe7, 0xa4, 0x08, 0x7c, 0x1c, 0x06, 0x12, 0x2f, 0xaa, 0x11, 0xe9, 0x28, 0x50, 0x9f, 0x63, - 0x83, 0x41, 0xb1, 0x28, 0x45, 0x01, 0x14, 0x13, 0x2f, 0xde, 0x96, 0x6a, 0xfc, 0x92, 0xb5, 0x21, - 0x4e, 0x35, 0x78, 0xfa, 0x2b, 0xc6, 0x9c, 0x0d, 0x7a, 0x02, 0x86, 0xe8, 0xd6, 0xb1, 0xe0, 0xc5, - 0x32, 0x76, 0x67, 0x94, 0x0a, 0xf1, 0x05, 0x01, 0xc3, 0xaa, 0xd4, 0xfd, 0xf5, 0x02, 0xf4, 0xcf, - 0xf3, 0x03, 0xdd, 0x40, 0x1c, 0xb6, 0xa3, 0x0a, 0x11, 0x8a, 0xbd, 0x85, 0x39, 0x4d, 0xe9, 0x96, - 0x19, 0x4d, 0xed, 0x48, 0xc5, 0x7e, 0x63, 0xc1, 0x0b, 0x7d, 0xd9, 0x81, 0xf1, 0x24, 0xf2, 0x82, - 0x78, 0x8b, 0xb9, 0x64, 0xfc, 0x30, 0x10, 0x43, 0x64, 0x61, 0x16, 0x6e, 0x18, 0x74, 0xcb, 0x09, - 0x69, 0xa5, 0x9e, 0x21, 0xb3, 0x0c, 0x67, 0xda, 0xe0, 0xfe, 0x86, 0x03, 0x90, 0xb6, 0x1e, 0x7d, - 0xce, 0x81, 0x31, 0x4f, 0x8f, 0x19, 0x15, 0x63, 0xb4, 0x66, 0xcf, 0x7f, 0xcb, 0xc8, 0x72, 0x5b, - 0x86, 0x01, 0xc2, 0x26, 0x63, 0xf7, 0x3d, 0x50, 0x64, 0xab, 0x83, 0x1d, 0x7a, 0x84, 0xed, 0x3b, - 0x6b, 0xec, 0x92, 0x36, 0x71, 0xac, 0x30, 0xdc, 0x97, 0x60, 0xfc, 0xf2, 0x2d, 0x52, 0x69, 0x27, - 0x61, 0xc4, 0x2d, 0xff, 0x5d, 0xee, 0x08, 0x39, 0x87, 0xba, 0x23, 0xf4, 0x5d, 0x07, 0x46, 0xb4, - 0x00, 0x42, 0xba, 0x53, 0xd7, 0xe6, 0xca, 0xdc, 0xc0, 0x21, 0x86, 0x6a, 0xd9, 0x4a, 0x88, 0x22, - 0x27, 0x99, 0x6e, 0x23, 0x0a, 0x84, 0x53, 0x86, 0x77, 0x09, 0xf0, 0x73, 0x7f, 0xdf, 0x81, 0x33, - 0xb9, 0xd1, 0x8e, 0xf7, 0xb9, 0xd9, 0x86, 0x93, 0xbd, 0xd0, 0x83, 0x93, 0xfd, 0xb7, 0x1d, 0x48, - 0x29, 0x51, 0x51, 0xb4, 0x99, 0xb6, 0x5c, 0x13, 0x45, 0x82, 0x93, 0x28, 0x45, 0xaf, 0xc3, 0x39, - 0xf3, 0x0b, 0x1e, 0xd2, 0xdf, 0xc2, 0x0f, 0xa7, 0xf9, 0x94, 0x70, 0x37, 0x16, 0xee, 0xd7, 0x1d, - 0x28, 0x2e, 0x7a, 0xed, 0x1a, 0xe9, 0xc9, 0x5c, 0x46, 0xe5, 0x58, 0x44, 0xbc, 0x46, 0x22, 0x8f, - 0x0e, 0x42, 0x8e, 0x61, 0x01, 0xc3, 0xaa, 0x14, 0xcd, 0xc0, 0x70, 0xd8, 0x22, 0x86, 0x8f, 0xf0, - 0x51, 0x39, 0x7a, 0x6b, 0xb2, 0x80, 0x6e, 0x3b, 0x8c, 0xbb, 0x82, 0xe0, 0xb4, 0x96, 0xfb, 0x8d, - 0x01, 0x18, 0xd1, 0xee, 0xc5, 0x50, 0x5d, 0x20, 0x22, 0xad, 0x30, 0xab, 0x2f, 0xd3, 0x09, 0x83, - 0x59, 0x09, 0x5d, 0x83, 0x11, 0xd9, 0xf1, 0x63, 0x2e, 0xb6, 0x8c, 0x35, 0x88, 0x05, 0x1c, 0x2b, - 0x0c, 0x34, 0x05, 0xc5, 0x2a, 0x69, 0x25, 0x75, 0xd6, 0xbc, 0x7e, 0x1e, 0x1c, 0x38, 0x4f, 0x01, - 0x98, 0xc3, 0x29, 0xc2, 0x16, 0x49, 0x2a, 0x75, 0x66, 0x19, 0x16, 0xd1, 0x83, 0x0b, 0x14, 0x80, - 0x39, 0x3c, 0xc7, 0x8b, 0x59, 0x3c, 0x7a, 0x2f, 0xe6, 0x80, 0x65, 0x2f, 0x26, 0x6a, 0xc1, 0xa9, - 0x38, 0xae, 0xaf, 0x47, 0xfe, 0x8e, 0x97, 0x90, 0x74, 0xf6, 0x0d, 0x1e, 0x84, 0xcf, 0x39, 0x76, - 0x53, 0xbd, 0x7c, 0x25, 0x4b, 0x05, 0xe7, 0x91, 0x46, 0x65, 0x38, 0xe3, 0x07, 0x31, 0xa9, 0xb4, - 0x23, 0xb2, 0x54, 0x0b, 0xc2, 0x88, 0x5c, 0x09, 0x63, 0x4a, 0x4e, 0xdc, 0xb3, 0x55, 0xf1, 0xb4, - 0x4b, 0x79, 0x48, 0x38, 0xbf, 0x2e, 0x5a, 0x84, 0x93, 0x55, 0x3f, 0xf6, 0x36, 0x1b, 0xa4, 0xdc, - 0xde, 0x6c, 0x86, 0xfc, 0x68, 0x3e, 0xcc, 0x08, 0x3e, 0x28, 0xed, 0x48, 0xf3, 0x59, 0x04, 0xdc, - 0x59, 0x07, 0x3d, 0x0b, 0xa3, 0xb1, 0x1f, 0xd4, 0x1a, 0x64, 0x36, 0xf2, 0x82, 0x4a, 0x5d, 0x5c, - 0xd0, 0x55, 0xf6, 0xf6, 0xb2, 0x56, 0x86, 0x0d, 0x4c, 0xb6, 0xe6, 0x79, 0x9d, 0x8c, 0x36, 0x28, - 0xb0, 0x45, 0x29, 0x9a, 0x81, 0x13, 0xb2, 0x0f, 0xe5, 0x6d, 0xbf, 0xb5, 0xb1, 0x52, 0x66, 0x5a, - 0xe1, 0x50, 0x1a, 0x2d, 0xb4, 0x64, 0x16, 0xe3, 0x2c, 0xbe, 0xfb, 0x43, 0x07, 0x46, 0xf5, 0x70, - 0x78, 0xaa, 0xac, 0x43, 0x7d, 0x7e, 0xa1, 0xcc, 0xb7, 0x13, 0x7b, 0x4a, 0xc3, 0x15, 0x45, 0x33, - 0x3d, 0x6f, 0xa7, 0x30, 0xac, 0xf1, 0xec, 0xe1, 0x72, 0xfb, 0xa3, 0x50, 0xdc, 0x0a, 0xa9, 0x4e, - 0xd3, 0x67, 0xda, 0xfa, 0x17, 0x28, 0x10, 0xf3, 0x32, 0xf7, 0xbf, 0x39, 0x70, 0x36, 0x3f, 0xd2, - 0xff, 0x67, 0xa1, 0x93, 0x97, 0x00, 0x68, 0x57, 0x8c, 0x7d, 0x41, 0x4b, 0x6f, 0x21, 0x4b, 0xb0, - 0x86, 0xd5, 0x5b, 0xb7, 0xff, 0x65, 0x01, 0x34, 0x9e, 0xe8, 0x0b, 0x0e, 0x8c, 0x51, 0xb6, 0xcb, - 0xd1, 0xa6, 0xd1, 0xdb, 0x35, 0x3b, 0xbd, 0x55, 0x64, 0x53, 0x97, 0x86, 0x01, 0xc6, 0x26, 0x73, - 0xf4, 0x4e, 0x18, 0xf6, 0xaa, 0xd5, 0x88, 0xc4, 0xb1, 0x72, 0x0e, 0x32, 0x83, 0xd7, 0x8c, 0x04, - 0xe2, 0xb4, 0x9c, 0xca, 0xe1, 0x7a, 0x75, 0x2b, 0xa6, 0xa2, 0x4d, 0xc8, 0x7e, 0x25, 0x87, 0x29, - 0x13, 0x0a, 0xc7, 0x0a, 0x03, 0x5d, 0x87, 0xb3, 0x55, 0x2f, 0xf1, 0xb8, 0x0a, 0x48, 0xa2, 0xf5, - 0x28, 0x4c, 0x48, 0x85, 0xed, 0x1b, 0x3c, 0x88, 0xf5, 0x82, 0xa8, 0x7b, 0x76, 0x3e, 0x17, 0x0b, - 0x77, 0xa9, 0xed, 0xfe, 0x4a, 0x3f, 0x98, 0x7d, 0x42, 0x55, 0x38, 0xb1, 0x1d, 0x6d, 0xce, 0xb1, - 0x98, 0x8d, 0xc3, 0xc4, 0x4e, 0xb0, 0x98, 0x86, 0x65, 0x93, 0x02, 0xce, 0x92, 0x14, 0x5c, 0x96, - 0xc9, 0x6e, 0xe2, 0x6d, 0x1e, 0x3a, 0x72, 0x62, 0xd9, 0xa4, 0x80, 0xb3, 0x24, 0xd1, 0x7b, 0x60, - 0x64, 0x3b, 0xda, 0x94, 0xbb, 0x47, 0x36, 0x0c, 0x67, 0x39, 0x2d, 0xc2, 0x3a, 0x1e, 0xfd, 0x34, - 0xdb, 0xd1, 0x26, 0xdd, 0xb0, 0x65, 0x12, 0x09, 0xf5, 0x69, 0x96, 0x05, 0x1c, 0x2b, 0x0c, 0xd4, - 0x02, 0xb4, 0x2d, 0x47, 0x4f, 0x45, 0xa8, 0x88, 0x4d, 0xae, 0xf7, 0x00, 0x17, 0x76, 0x35, 0x60, - 0xb9, 0x83, 0x0e, 0xce, 0xa1, 0x8d, 0x5e, 0x80, 0x73, 0xdb, 0xd1, 0xa6, 0xd0, 0x63, 0xd6, 0x23, - 0x3f, 0xa8, 0xf8, 0x2d, 0x23, 0x61, 0xc4, 0x94, 0x68, 0xee, 0xb9, 0xe5, 0x7c, 0x34, 0xdc, 0xad, - 0xbe, 0xfb, 0x3b, 0xfd, 0xc0, 0xae, 0xba, 0x52, 0x31, 0xdd, 0x24, 0x49, 0x3d, 0xac, 0x66, 0x55, - 0xb3, 0x55, 0x06, 0xc5, 0xa2, 0x54, 0x06, 0xc0, 0x16, 0xba, 0x04, 0xc0, 0xde, 0x84, 0xc1, 0x3a, - 0xf1, 0xaa, 0x24, 0x92, 0xc6, 0xcd, 0x15, 0x3b, 0x97, 0x73, 0xaf, 0x30, 0xa2, 0xa9, 0x85, 0x80, - 0xff, 0x8e, 0xb1, 0xe4, 0x86, 0xde, 0x0b, 0xe3, 0x54, 0xc7, 0x0a, 0xdb, 0x89, 0xf4, 0x4f, 0x70, - 0xe3, 0x26, 0xdb, 0xec, 0x37, 0x8c, 0x12, 0x9c, 0xc1, 0x44, 0xf3, 0x30, 0x21, 0x7c, 0x09, 0xca, - 0x68, 0x2a, 0x06, 0x56, 0x65, 0xf2, 0x28, 0x67, 0xca, 0x71, 0x47, 0x0d, 0x16, 0xc0, 0x18, 0x56, - 0xb9, 0x3b, 0x59, 0x0f, 0x60, 0x0c, 0xab, 0xbb, 0x98, 0x95, 0xa0, 0x57, 0x61, 0x88, 0xfe, 0x5d, - 0x88, 0xc2, 0xa6, 0x30, 0x1b, 0xad, 0xdb, 0x19, 0x1d, 0xca, 0x43, 0x1c, 0x62, 0x99, 0xee, 0x39, - 0x2b, 0xb8, 0x60, 0xc5, 0x8f, 0x1e, 0xa5, 0xf4, 0xed, 0xf2, 0x3a, 0x89, 0xfc, 0xad, 0x5d, 0xa6, - 0xcf, 0x0c, 0xa5, 0x47, 0xa9, 0xa5, 0x0e, 0x0c, 0x9c, 0x53, 0xcb, 0xfd, 0x42, 0x01, 0x46, 0xf5, - 0x1b, 0xd3, 0x77, 0x8b, 0x8a, 0x8e, 0xd3, 0x49, 0xc1, 0x0f, 0xce, 0x57, 0x2c, 0x74, 0xfb, 0x6e, - 0x13, 0xa2, 0x0e, 0xfd, 0x5e, 0x5b, 0x28, 0xb2, 0x56, 0xec, 0x73, 0xac, 0xc7, 0xed, 0xa4, 0xce, - 0xaf, 0xd6, 0xb1, 0x78, 0x65, 0xc6, 0xc1, 0xfd, 0x74, 0x1f, 0x0c, 0xc9, 0x42, 0xf4, 0x29, 0x07, - 0x20, 0x8d, 0x1b, 0x13, 0xa2, 0x74, 0xdd, 0x46, 0x50, 0x91, 0x1e, 0xf2, 0xa6, 0x99, 0xf9, 0x15, - 0x1c, 0x6b, 0x7c, 0x51, 0x02, 0x03, 0x21, 0x6d, 0xdc, 0x25, 0x7b, 0xb7, 0xfe, 0xd7, 0x28, 0xe3, - 0x4b, 0x8c, 0x7b, 0x6a, 0xd1, 0x63, 0x30, 0x2c, 0x78, 0xd1, 0xc3, 0xe9, 0xa6, 0x0c, 0x67, 0xb4, - 0x67, 0xfd, 0x56, 0x11, 0x92, 0xe9, 0x59, 0x53, 0x81, 0x70, 0xca, 0xd0, 0x7d, 0x1a, 0xc6, 0xcd, - 0xc5, 0x40, 0x0f, 0x2b, 0x9b, 0xbb, 0x09, 0xe1, 0xa6, 0x90, 0x51, 0x7e, 0x58, 0x99, 0xa5, 0x00, - 0xcc, 0xe1, 0xee, 0x0f, 0x1c, 0x80, 0x54, 0xbc, 0xf4, 0xe0, 0x7d, 0x78, 0x54, 0xb7, 0xe3, 0x75, - 0x3b, 0x11, 0x7e, 0x1c, 0x86, 0xd9, 0x3f, 0x6c, 0xa1, 0xf7, 0xd9, 0x0a, 0x3e, 0x48, 0xdb, 0x29, - 0x96, 0x3a, 0xd3, 0x35, 0xae, 0x4b, 0x46, 0x38, 0xe5, 0xe9, 0x86, 0x30, 0x91, 0xc5, 0x46, 0x1f, - 0x82, 0xd1, 0x58, 0x6e, 0xab, 0xe9, 0xfd, 0xbf, 0x1e, 0xb7, 0x5f, 0xee, 0xfa, 0xd3, 0xaa, 0x63, - 0x83, 0x98, 0xbb, 0x06, 0x03, 0x56, 0x87, 0xd0, 0xfd, 0x8e, 0x03, 0xc3, 0xcc, 0xfb, 0x5a, 0x8b, - 0xbc, 0x66, 0x5a, 0xa5, 0x6f, 0x9f, 0x51, 0x8f, 0x61, 0x90, 0x9b, 0x0f, 0x64, 0xd4, 0x92, 0x05, - 0x29, 0xc3, 0x93, 0xf5, 0xa5, 0x52, 0x86, 0xdb, 0x29, 0x62, 0x2c, 0x39, 0xb9, 0x9f, 0x29, 0xc0, - 0xc0, 0x52, 0xd0, 0x6a, 0xff, 0xa5, 0x4f, 0x18, 0xb7, 0x0a, 0xfd, 0x4b, 0x09, 0x69, 0x9a, 0x79, - 0x0d, 0x47, 0x67, 0x1f, 0xd3, 0x73, 0x1a, 0x96, 0xcc, 0x9c, 0x86, 0xd8, 0xbb, 0x29, 0x83, 0xfa, - 0x84, 0xf9, 0x3a, 0xbd, 0x03, 0xf9, 0x14, 0x0c, 0xaf, 0x78, 0x9b, 0xa4, 0xb1, 0x4c, 0x76, 0xd9, - 0x8d, 0x45, 0x1e, 0x60, 0xe2, 0xa4, 0x36, 0x07, 0x23, 0x18, 0x64, 0x1e, 0xc6, 0x19, 0xb6, 0x5a, - 0x0c, 0xf4, 0x44, 0x42, 0xd2, 0xa4, 0x50, 0x8e, 0x79, 0x22, 0xd1, 0x12, 0x42, 0x69, 0x58, 0xee, - 0x34, 0x8c, 0xa4, 0x54, 0x7a, 0xe0, 0xfa, 0xd3, 0x02, 0x8c, 0x19, 0x56, 0x78, 0xc3, 0x37, 0xe9, - 0xdc, 0xd5, 0x37, 0x69, 0xf8, 0x0a, 0x0b, 0xf7, 0xdb, 0x57, 0xd8, 0x77, 0xfc, 0xbe, 0x42, 0xf3, - 0x23, 0xf5, 0xf7, 0xf4, 0x91, 0x1a, 0xd0, 0xbf, 0xe2, 0x07, 0xdb, 0xbd, 0xc9, 0x99, 0xb8, 0x12, - 0xb6, 0x3a, 0xe4, 0x4c, 0x99, 0x02, 0x31, 0x2f, 0x93, 0x9a, 0x4b, 0x5f, 0xbe, 0xe6, 0xe2, 0x7e, - 0xca, 0x81, 0xd1, 0x55, 0x2f, 0xf0, 0xb7, 0x48, 0x9c, 0xb0, 0x79, 0x95, 0x1c, 0xe9, 0xcd, 0xb5, - 0xd1, 0x2e, 0x39, 0x18, 0xde, 0x74, 0xe0, 0xe4, 0x2a, 0x69, 0x86, 0xfe, 0xab, 0x5e, 0x1a, 0x33, - 0x4b, 0xdb, 0x5e, 0xf7, 0x13, 0x11, 0x22, 0xa8, 0xda, 0x7e, 0xc5, 0x4f, 0x30, 0x85, 0xdf, 0xc5, - 0xc4, 0xcc, 0xee, 0x84, 0xd0, 0x03, 0x9a, 0x76, 0x9b, 0x32, 0x8d, 0x86, 0x95, 0x05, 0x38, 0xc5, - 0x71, 0x7f, 0xd7, 0x81, 0x41, 0xde, 0x08, 0x15, 0x66, 0xec, 0x74, 0xa1, 0x5d, 0x87, 0x22, 0xab, - 0x27, 0x66, 0xf5, 0xa2, 0x05, 0xf5, 0x87, 0x92, 0xe3, 0x6b, 0x90, 0xfd, 0x8b, 0x39, 0x03, 0x76, - 0x6c, 0xf1, 0x6e, 0xcd, 0xa8, 0x70, 0xe1, 0xf4, 0xd8, 0xc2, 0xa0, 0x58, 0x94, 0xba, 0xdf, 0xe8, - 0x83, 0x21, 0x95, 0x7a, 0x8c, 0x25, 0x86, 0x08, 0x82, 0x30, 0xf1, 0x78, 0x18, 0x06, 0x97, 0xd5, - 0x1f, 0xb2, 0x97, 0xfa, 0x6c, 0x7a, 0x26, 0xa5, 0xce, 0x5d, 0x8b, 0xea, 0x10, 0xaa, 0x95, 0x60, - 0xbd, 0x11, 0xe8, 0x63, 0x30, 0xd0, 0xa0, 0xd2, 0x47, 0x8a, 0xee, 0xeb, 0x16, 0x9b, 0xc3, 0xc4, - 0x9a, 0x68, 0x89, 0x1a, 0x21, 0x0e, 0xc4, 0x82, 0xeb, 0xe4, 0xfb, 0x61, 0x22, 0xdb, 0xea, 0xbb, - 0x5d, 0xf6, 0x1c, 0xd6, 0xaf, 0x8a, 0xfe, 0x55, 0x21, 0x3d, 0x0f, 0x5e, 0xd5, 0x7d, 0x1e, 0x46, - 0x56, 0x49, 0x12, 0xf9, 0x15, 0x46, 0xe0, 0x6e, 0x93, 0xab, 0x27, 0xfd, 0xe1, 0xb3, 0x6c, 0xb2, - 0x52, 0x9a, 0x31, 0x7a, 0x1d, 0xa0, 0x15, 0x85, 0xf4, 0xfc, 0x4a, 0xda, 0xf2, 0x63, 0x5b, 0xd0, - 0x87, 0xd7, 0x15, 0x4d, 0xee, 0x0d, 0x4f, 0x7f, 0x63, 0x8d, 0x9f, 0xfb, 0x22, 0x14, 0x57, 0xdb, - 0x09, 0xb9, 0xd5, 0x83, 0xc4, 0x3a, 0x68, 0xf6, 0x03, 0xf7, 0x43, 0x30, 0xca, 0x68, 0x5f, 0x09, - 0x1b, 0x74, 0x5b, 0xa5, 0x43, 0xd3, 0xa4, 0xbf, 0xb3, 0xfe, 0x0a, 0x86, 0x84, 0x79, 0x19, 0x5d, - 0x32, 0xf5, 0xb0, 0x51, 0x55, 0x37, 0xc1, 0xd4, 0x84, 0xb8, 0xc2, 0xa0, 0x58, 0x94, 0xba, 0x9f, - 0x2c, 0xc0, 0x08, 0xab, 0x28, 0xc4, 0xcd, 0x2e, 0x0c, 0xd6, 0x39, 0x1f, 0x31, 0x86, 0x16, 0xe2, - 0xcb, 0xf4, 0xd6, 0x6b, 0x67, 0x39, 0x0e, 0xc0, 0x92, 0x1f, 0x65, 0x7d, 0xd3, 0xf3, 0x13, 0xca, - 0xba, 0x70, 0xb4, 0xac, 0x6f, 0x70, 0x36, 0x58, 0xf2, 0x73, 0x7f, 0x09, 0xd8, 0x0d, 0xeb, 0x85, - 0x86, 0x57, 0xe3, 0x23, 0x17, 0x6e, 0x93, 0xaa, 0x90, 0xb9, 0xda, 0xc8, 0x51, 0x28, 0x16, 0xa5, - 0xfc, 0xd6, 0x6a, 0x12, 0xf9, 0x2a, 0x32, 0x5b, 0xbb, 0xb5, 0xca, 0xc0, 0x32, 0x0e, 0xbf, 0xea, - 0x7e, 0xa5, 0x00, 0xc0, 0x12, 0xd5, 0xf1, 0x8b, 0xd1, 0xbf, 0x20, 0x83, 0xa8, 0x4c, 0x1f, 0xa7, - 0x0a, 0xa2, 0x62, 0x57, 0xbf, 0xf5, 0xe0, 0x29, 0xfd, 0xc2, 0x44, 0x61, 0xff, 0x0b, 0x13, 0xa8, - 0x05, 0x83, 0x61, 0x3b, 0xa1, 0xba, 0xaa, 0xd8, 0xec, 0x2d, 0xb8, 0xf8, 0xd7, 0x38, 0x41, 0x7e, - 0xcb, 0x40, 0xfc, 0xc0, 0x92, 0x0d, 0x7a, 0x16, 0x86, 0x5a, 0x51, 0x58, 0xa3, 0x7b, 0xb7, 0xd8, - 0xde, 0x1f, 0x92, 0xfa, 0xd0, 0xba, 0x80, 0xdf, 0xd1, 0xfe, 0xc7, 0x0a, 0xdb, 0xfd, 0xe3, 0x09, - 0x3e, 0x2e, 0x62, 0xee, 0x4d, 0x42, 0xc1, 0x97, 0x96, 0x29, 0x10, 0x24, 0x0a, 0x4b, 0xf3, 0xb8, - 0xe0, 0x57, 0xd5, 0xba, 0x2a, 0x74, 0x5d, 0x57, 0xef, 0x81, 0x91, 0xaa, 0x1f, 0xb7, 0x1a, 0xde, - 0xee, 0xd5, 0x1c, 0xb3, 0xe0, 0x7c, 0x5a, 0x84, 0x75, 0x3c, 0xf4, 0x94, 0xb8, 0x1e, 0xd3, 0x6f, - 0x98, 0x82, 0xe4, 0xf5, 0x98, 0xf4, 0xe2, 0x3d, 0xbf, 0x19, 0x93, 0x4d, 0x50, 0x50, 0xec, 0x39, - 0x41, 0x41, 0x56, 0x13, 0x1b, 0x38, 0x7e, 0x4d, 0xec, 0x7d, 0x30, 0x26, 0x7f, 0x32, 0xf5, 0xa8, - 0x74, 0x9a, 0xb5, 0x5e, 0x99, 0xc1, 0x37, 0xf4, 0x42, 0x6c, 0xe2, 0xa6, 0x93, 0x76, 0xb0, 0xd7, - 0x49, 0x7b, 0x09, 0x60, 0x33, 0x6c, 0x07, 0x55, 0x2f, 0xda, 0x5d, 0x9a, 0x17, 0xc1, 0xb4, 0x4a, - 0xf1, 0x9b, 0x55, 0x25, 0x58, 0xc3, 0xd2, 0x27, 0xfa, 0xf0, 0x5d, 0x26, 0xfa, 0x87, 0x60, 0x98, - 0x05, 0x1e, 0x93, 0xea, 0x4c, 0x22, 0xa2, 0x9f, 0x0e, 0x12, 0xcd, 0x99, 0xc6, 0x43, 0x4a, 0x22, - 0x38, 0xa5, 0x87, 0x3e, 0x0c, 0xb0, 0xe5, 0x07, 0x7e, 0x5c, 0x67, 0xd4, 0x47, 0x0e, 0x4c, 0x5d, - 0xf5, 0x73, 0x41, 0x51, 0xc1, 0x1a, 0x45, 0xf4, 0x12, 0x9c, 0x24, 0x71, 0xe2, 0x37, 0xbd, 0x84, - 0x54, 0xd5, 0x85, 0xd2, 0x12, 0xb3, 0x65, 0xaa, 0xd0, 0xef, 0xcb, 0x59, 0x84, 0x3b, 0x79, 0x40, - 0xdc, 0x49, 0xc8, 0x58, 0x91, 0x93, 0x07, 0x59, 0x91, 0xe8, 0x7f, 0x3a, 0x70, 0x32, 0x22, 0x3c, - 0x24, 0x26, 0x56, 0x0d, 0x3b, 0xc3, 0xc4, 0x71, 0xc5, 0x46, 0x0e, 0x78, 0x95, 0xec, 0x05, 0x67, - 0xb9, 0x70, 0xc5, 0x85, 0xc8, 0xde, 0x77, 0x94, 0xdf, 0xc9, 0x03, 0xbe, 0xf9, 0xf6, 0xd4, 0x54, - 0xe7, 0x5b, 0x04, 0x8a, 0x38, 0x5d, 0x79, 0x7f, 0xf3, 0xed, 0xa9, 0x09, 0xf9, 0x3b, 0x1d, 0xb4, - 0x8e, 0x4e, 0xd2, 0x6d, 0xb5, 0x15, 0x56, 0x97, 0xd6, 0x45, 0x98, 0x9a, 0xda, 0x56, 0xd7, 0x29, - 0x10, 0xf3, 0x32, 0xf4, 0x04, 0x0c, 0x55, 0x3d, 0xd2, 0x0c, 0x03, 0x95, 0xcd, 0x97, 0x69, 0xf3, - 0xf3, 0x02, 0x86, 0x55, 0x29, 0x3d, 0x43, 0x04, 0x62, 0x4b, 0x29, 0x9d, 0xb7, 0x75, 0x86, 0x90, - 0x9b, 0x14, 0xe7, 0x2a, 0x7f, 0x61, 0xc5, 0x09, 0x35, 0x60, 0xc0, 0x67, 0x86, 0x0a, 0x11, 0x09, - 0x6b, 0xc1, 0x3a, 0xc2, 0x0d, 0x1f, 0x32, 0x0e, 0x96, 0x89, 0x7e, 0xc1, 0x43, 0xdf, 0x6b, 0x4e, - 0x1c, 0xcf, 0x5e, 0xf3, 0x04, 0x0c, 0x55, 0xea, 0x7e, 0xa3, 0x1a, 0x91, 0xa0, 0x34, 0xc1, 0x4e, - 0xec, 0x6c, 0x24, 0xe6, 0x04, 0x0c, 0xab, 0x52, 0xf4, 0x57, 0x60, 0x2c, 0x6c, 0x27, 0x4c, 0xb4, - 0xd0, 0x71, 0x8a, 0x4b, 0x27, 0x19, 0x3a, 0x8b, 0x6b, 0x5a, 0xd3, 0x0b, 0xb0, 0x89, 0x47, 0x45, - 0x7c, 0x3d, 0x8c, 0x59, 0x5e, 0x22, 0x26, 0xe2, 0xcf, 0x9a, 0x22, 0xfe, 0x8a, 0x56, 0x86, 0x0d, - 0x4c, 0xf4, 0x35, 0x07, 0x4e, 0x36, 0xb3, 0x07, 0xb8, 0xd2, 0x39, 0x36, 0x32, 0x65, 0x1b, 0x8a, - 0x7e, 0x86, 0x34, 0x8f, 0x48, 0xef, 0x00, 0xe3, 0xce, 0x46, 0xb0, 0x0c, 0x61, 0xf1, 0x6e, 0x50, - 0xa9, 0x47, 0x61, 0x60, 0x36, 0xef, 0x41, 0x5b, 0xf7, 0xe2, 0xd8, 0xda, 0xce, 0x63, 0x31, 0xfb, - 0xe0, 0xed, 0xbd, 0xa9, 0x33, 0xb9, 0x45, 0x38, 0xbf, 0x51, 0x93, 0xf3, 0x70, 0x36, 0x5f, 0x3e, - 0xdc, 0xed, 0xc4, 0xd1, 0xa7, 0x9f, 0x38, 0x16, 0xe0, 0xc1, 0xae, 0x8d, 0xa2, 0x3b, 0x8d, 0xd4, - 0x36, 0x1d, 0x73, 0xa7, 0xe9, 0xd0, 0x0e, 0xc7, 0x61, 0x54, 0x7f, 0xbc, 0xc2, 0xfd, 0x3f, 0x7d, - 0x00, 0xa9, 0x9d, 0x1c, 0x79, 0x30, 0xce, 0x6d, 0xf2, 0x4b, 0xf3, 0x87, 0xbe, 0xd1, 0x3f, 0x67, - 0x10, 0xc0, 0x19, 0x82, 0xa8, 0x09, 0x88, 0x43, 0xf8, 0xef, 0xc3, 0xf8, 0x56, 0x99, 0x2b, 0x72, - 0xae, 0x83, 0x08, 0xce, 0x21, 0x4c, 0x7b, 0x94, 0x84, 0xdb, 0x24, 0xb8, 0x86, 0x57, 0x0e, 0x93, - 0x16, 0x82, 0x7b, 0xe3, 0x0c, 0x02, 0x38, 0x43, 0x10, 0xb9, 0x30, 0xc0, 0x6c, 0x33, 0x32, 0x76, - 0x9c, 0x89, 0x17, 0xa6, 0x69, 0xc4, 0x58, 0x94, 0xa0, 0xaf, 0x38, 0x30, 0x2e, 0xb3, 0x5b, 0x30, - 0x6b, 0xa8, 0x8c, 0x1a, 0xbf, 0x66, 0xcb, 0xcf, 0x71, 0x59, 0xa7, 0x9e, 0xc6, 0x64, 0x1a, 0xe0, - 0x18, 0x67, 0x1a, 0xe1, 0xbe, 0x00, 0xa7, 0x72, 0xaa, 0x5b, 0x39, 0xd1, 0x7e, 0xd7, 0x81, 0x11, - 0x2d, 0xe9, 0x22, 0x7a, 0x1d, 0x86, 0xc3, 0xb2, 0xf5, 0x40, 0xc0, 0xb5, 0x72, 0x47, 0x20, 0xa0, - 0x02, 0xe1, 0x94, 0x61, 0x2f, 0xf1, 0x8b, 0xb9, 0x19, 0x22, 0xef, 0x73, 0xb3, 0x0f, 0x1c, 0xbf, - 0xf8, 0x2b, 0x45, 0x48, 0x29, 0x1d, 0x30, 0xeb, 0x4a, 0x1a, 0xed, 0x58, 0xd8, 0x37, 0xda, 0xb1, - 0x0a, 0x27, 0x3c, 0xe6, 0x4b, 0x3e, 0x64, 0xae, 0x15, 0x9e, 0x73, 0xd7, 0xa4, 0x80, 0xb3, 0x24, - 0x29, 0x97, 0x38, 0xad, 0xca, 0xb8, 0xf4, 0x1f, 0x98, 0x4b, 0xd9, 0xa4, 0x80, 0xb3, 0x24, 0xd1, - 0x4b, 0x50, 0xaa, 0xb0, 0xbb, 0xc3, 0xbc, 0x8f, 0x4b, 0x5b, 0x57, 0xc3, 0x64, 0x3d, 0x22, 0x31, - 0x09, 0x12, 0x91, 0x55, 0xed, 0x11, 0x31, 0x0a, 0xa5, 0xb9, 0x2e, 0x78, 0xb8, 0x2b, 0x05, 0x7a, - 0x4c, 0x61, 0xce, 0x68, 0x3f, 0xd9, 0x65, 0x42, 0x44, 0x78, 0xe9, 0xd5, 0x31, 0xa5, 0xac, 0x17, - 0x62, 0x13, 0x17, 0xfd, 0xb2, 0x03, 0x63, 0x0d, 0x69, 0xae, 0xc7, 0xed, 0x86, 0x4c, 0x11, 0x8a, - 0xad, 0x4c, 0xbf, 0x15, 0x9d, 0x32, 0xd7, 0x25, 0x0c, 0x10, 0x36, 0x79, 0x67, 0x13, 0xdf, 0x0c, - 0xf5, 0x98, 0xf8, 0xe6, 0x07, 0x0e, 0x4c, 0x64, 0xb9, 0xa1, 0x6d, 0x78, 0xb8, 0xe9, 0x45, 0xdb, - 0x4b, 0xc1, 0x56, 0xc4, 0xee, 0x88, 0x24, 0x7c, 0x32, 0xcc, 0x6c, 0x25, 0x24, 0x9a, 0xf7, 0x76, - 0xb9, 0xfb, 0xb3, 0xa8, 0xde, 0x98, 0x7a, 0x78, 0x75, 0x3f, 0x64, 0xbc, 0x3f, 0x2d, 0x54, 0x86, - 0x33, 0x14, 0x81, 0xe5, 0xc5, 0xf3, 0xc3, 0x20, 0x65, 0x52, 0x60, 0x4c, 0x54, 0x9c, 0xe2, 0x6a, - 0x1e, 0x12, 0xce, 0xaf, 0xeb, 0x5e, 0x86, 0x01, 0x7e, 0x65, 0xef, 0x9e, 0xfc, 0x47, 0xee, 0xbf, - 0x29, 0x80, 0x54, 0x0c, 0xff, 0x72, 0xbb, 0xe3, 0xe8, 0x26, 0x1a, 0x31, 0x93, 0x92, 0xb0, 0x76, - 0xb0, 0x4d, 0x54, 0x64, 0xa0, 0x14, 0x25, 0x54, 0x63, 0x26, 0xb7, 0xfc, 0x64, 0x2e, 0xac, 0x4a, - 0x1b, 0x07, 0xd3, 0x98, 0x2f, 0x0b, 0x18, 0x56, 0xa5, 0xee, 0xa7, 0x1c, 0x18, 0xa3, 0xbd, 0x6c, - 0x34, 0x48, 0xa3, 0x9c, 0x90, 0x56, 0x8c, 0x62, 0x28, 0xc6, 0xf4, 0x1f, 0x7b, 0xa6, 0xc0, 0xf4, - 0x9a, 0x27, 0x69, 0x69, 0xce, 0x1a, 0xca, 0x04, 0x73, 0x5e, 0xee, 0x5b, 0x7d, 0x30, 0xac, 0x06, - 0xbb, 0x07, 0x7b, 0xea, 0xa5, 0x34, 0x39, 0x2c, 0x97, 0xc0, 0x25, 0x2d, 0x31, 0xec, 0x1d, 0x3a, - 0x74, 0xc1, 0x2e, 0xcf, 0x92, 0x91, 0x66, 0x89, 0x7d, 0xca, 0x74, 0x35, 0x9f, 0xd5, 0xe7, 0x9f, - 0x86, 0x2f, 0x7c, 0xce, 0xb7, 0x74, 0x4f, 0x7f, 0xbf, 0xad, 0xdd, 0x4c, 0xb9, 0x31, 0xbb, 0xbb, - 0xf8, 0x33, 0xef, 0x06, 0x15, 0x7b, 0x7a, 0x37, 0xe8, 0x49, 0xe8, 0x27, 0x41, 0xbb, 0xc9, 0x54, - 0xa5, 0x61, 0x76, 0x44, 0xe8, 0xbf, 0x1c, 0xb4, 0x9b, 0x66, 0xcf, 0x18, 0x0a, 0x7a, 0x3f, 0x8c, - 0x54, 0x49, 0x5c, 0x89, 0x7c, 0x96, 0xfa, 0x41, 0x58, 0x76, 0x1e, 0x62, 0xe6, 0xb2, 0x14, 0x6c, - 0x56, 0xd4, 0x2b, 0xb8, 0xaf, 0xc2, 0xc0, 0x7a, 0xa3, 0x5d, 0xf3, 0x03, 0xd4, 0x82, 0x01, 0x9e, - 0x08, 0x42, 0xec, 0xf6, 0x16, 0xce, 0x9d, 0x5c, 0x54, 0x68, 0x51, 0x28, 0xfc, 0xb6, 0xaf, 0xe0, - 0xe3, 0x7e, 0xb2, 0x00, 0xf4, 0x68, 0xbe, 0x38, 0x87, 0xfe, 0x7a, 0xc7, 0x33, 0x39, 0x3f, 0x97, - 0xf3, 0x4c, 0xce, 0x18, 0x43, 0xce, 0x79, 0x21, 0xa7, 0x01, 0x63, 0xcc, 0x39, 0x22, 0xf7, 0x40, - 0xa1, 0x56, 0x3f, 0xd3, 0x63, 0xee, 0x04, 0xbd, 0xaa, 0xd8, 0x11, 0x74, 0x10, 0x36, 0x89, 0xa3, - 0x55, 0x38, 0xc5, 0x73, 0x8c, 0xce, 0x93, 0x86, 0xb7, 0x9b, 0xc9, 0x25, 0x76, 0x5e, 0xbe, 0x7c, - 0x36, 0xdf, 0x89, 0x82, 0xf3, 0xea, 0xb9, 0xbf, 0xd7, 0x0f, 0x9a, 0x4b, 0xa2, 0x87, 0xd5, 0xf2, - 0x4a, 0xc6, 0x01, 0xb5, 0x6a, 0xc5, 0x01, 0x25, 0xbd, 0x3a, 0x5c, 0x02, 0x99, 0x3e, 0x27, 0xda, - 0xa8, 0x3a, 0x69, 0xb4, 0x44, 0x1f, 0x55, 0xa3, 0xae, 0x90, 0x46, 0x0b, 0xb3, 0x12, 0x75, 0xd7, - 0xb1, 0xbf, 0xeb, 0x5d, 0xc7, 0x3a, 0x14, 0x6b, 0x5e, 0xbb, 0x46, 0x44, 0x04, 0xa6, 0x05, 0x5f, - 0x23, 0xbb, 0x7d, 0xc1, 0x7d, 0x8d, 0xec, 0x5f, 0xcc, 0x19, 0xd0, 0xc5, 0x5e, 0x97, 0x21, 0x29, - 0xc2, 0x48, 0x6b, 0x61, 0xb1, 0xab, 0x28, 0x17, 0xbe, 0xd8, 0xd5, 0x4f, 0x9c, 0x32, 0x43, 0x2d, - 0x18, 0xac, 0xf0, 0x0c, 0x2e, 0x42, 0x67, 0x59, 0xb2, 0x71, 0x99, 0x93, 0x11, 0xe4, 0xd6, 0x14, - 0xf1, 0x03, 0x4b, 0x36, 0xee, 0x45, 0x18, 0xd1, 0x5e, 0xeb, 0xa0, 0x9f, 0x41, 0x25, 0x0f, 0xd1, - 0x3e, 0xc3, 0xbc, 0x97, 0x78, 0x98, 0x95, 0xb8, 0xdf, 0xea, 0x07, 0x65, 0x4b, 0xd3, 0xaf, 0x1e, - 0x7a, 0x15, 0x2d, 0xd5, 0x91, 0x71, 0x0d, 0x3f, 0x0c, 0xb0, 0x28, 0xa5, 0x7a, 0x5d, 0x93, 0x44, - 0x35, 0x75, 0x8e, 0x16, 0xe2, 0x5a, 0xe9, 0x75, 0xab, 0x7a, 0x21, 0x36, 0x71, 0xa9, 0x52, 0xde, - 0x14, 0x2e, 0xfa, 0x6c, 0x60, 0xb5, 0x74, 0xdd, 0x63, 0x85, 0xc1, 0x72, 0x25, 0x34, 0x35, 0x8f, - 0xbe, 0x08, 0xc4, 0xb4, 0xe1, 0x50, 0xd2, 0xa8, 0xf2, 0x80, 0x29, 0x1d, 0x82, 0x0d, 0xae, 0x68, - 0x11, 0x4e, 0xc6, 0x24, 0x59, 0xbb, 0x19, 0x90, 0x48, 0x65, 0x29, 0x10, 0xc9, 0x38, 0xd4, 0xc5, - 0x8c, 0x72, 0x16, 0x01, 0x77, 0xd6, 0xc9, 0x8d, 0x5d, 0x2d, 0x1e, 0x38, 0x76, 0x75, 0x1e, 0x26, - 0xb6, 0x3c, 0xbf, 0xd1, 0x8e, 0x48, 0xd7, 0x08, 0xd8, 0x85, 0x4c, 0x39, 0xee, 0xa8, 0xc1, 0xee, - 0x06, 0x35, 0xbc, 0x5a, 0x5c, 0x1a, 0xd4, 0xee, 0x06, 0x51, 0x00, 0xe6, 0x70, 0xf7, 0x37, 0x1d, - 0xe0, 0x59, 0x90, 0x66, 0xb6, 0xb6, 0xfc, 0xc0, 0x4f, 0x76, 0xd1, 0xd7, 0x1d, 0x98, 0x08, 0xc2, - 0x2a, 0x99, 0x09, 0x12, 0x5f, 0x02, 0xed, 0xa5, 0xa6, 0x67, 0xbc, 0xae, 0x66, 0xc8, 0xf3, 0x94, - 0x1a, 0x59, 0x28, 0xee, 0x68, 0x86, 0x7b, 0x0e, 0xce, 0xe4, 0x12, 0x70, 0x7f, 0xd0, 0x07, 0x66, - 0x32, 0x27, 0xf4, 0x3c, 0x14, 0x1b, 0x2c, 0xbd, 0x88, 0x73, 0xc8, 0x2c, 0x5d, 0x6c, 0xac, 0x78, - 0xfe, 0x11, 0x4e, 0x09, 0xcd, 0xc3, 0x08, 0xcb, 0x10, 0x25, 0x92, 0xbf, 0x14, 0x8c, 0xac, 0x0a, - 0x23, 0x38, 0x2d, 0xba, 0x63, 0xfe, 0xc4, 0x7a, 0x35, 0xf4, 0x1a, 0x0c, 0x6e, 0xf2, 0x3c, 0x99, - 0xf6, 0x7c, 0x7e, 0x22, 0xf1, 0x26, 0xd3, 0x8d, 0x64, 0x16, 0xce, 0x3b, 0xe9, 0xbf, 0x58, 0x72, - 0x44, 0xbb, 0x30, 0xe4, 0xc9, 0x6f, 0xda, 0x6f, 0xeb, 0xa2, 0x86, 0x31, 0x7f, 0x44, 0xc4, 0x8c, - 0xfc, 0x86, 0x8a, 0x5d, 0x26, 0xb4, 0xa8, 0xd8, 0x53, 0x68, 0xd1, 0x77, 0x1c, 0x80, 0xf4, 0x51, - 0x11, 0x74, 0x0b, 0x86, 0xe2, 0x67, 0x0c, 0x43, 0x85, 0x8d, 0x4b, 0xfe, 0x82, 0xa2, 0x76, 0x11, - 0x56, 0x40, 0xb0, 0xe2, 0x76, 0x37, 0xe3, 0xca, 0x4f, 0x1d, 0x38, 0x9d, 0xf7, 0xf8, 0xc9, 0x7d, - 0x6c, 0xf1, 0x41, 0xed, 0x2a, 0xa2, 0xc2, 0x7a, 0x44, 0xb6, 0xfc, 0x5b, 0x39, 0xd9, 0x9a, 0x79, - 0x01, 0x4e, 0x71, 0xdc, 0x3f, 0x1d, 0x04, 0xc5, 0xf8, 0x88, 0xec, 0x30, 0x8f, 0xd3, 0x33, 0x53, - 0x2d, 0xd5, 0xb9, 0x14, 0x1e, 0x66, 0x50, 0x2c, 0x4a, 0xe9, 0xb9, 0x49, 0x06, 0xc5, 0x0b, 0x91, - 0xcd, 0x66, 0xa1, 0x0c, 0x9e, 0xc7, 0xaa, 0x34, 0xcf, 0xb2, 0x53, 0x3c, 0x16, 0xcb, 0xce, 0x80, - 0x7d, 0xcb, 0x4e, 0x13, 0x50, 0xcc, 0x17, 0x0a, 0x33, 0xa7, 0x08, 0x46, 0xa3, 0x07, 0x36, 0x34, - 0x97, 0x3b, 0x88, 0xe0, 0x1c, 0xc2, 0x2c, 0x86, 0x22, 0x6c, 0x90, 0x19, 0x7c, 0x55, 0x1c, 0x3e, - 0xd2, 0x18, 0x0a, 0x0e, 0xc6, 0xb2, 0xfc, 0x90, 0xa6, 0x14, 0xf4, 0xdb, 0xce, 0x3e, 0xb6, 0xaa, - 0x61, 0x5b, 0x5b, 0x50, 0x6e, 0x26, 0x3d, 0x76, 0x92, 0x3a, 0x8c, 0x01, 0xec, 0x1b, 0x0e, 0x9c, - 0x24, 0x41, 0x25, 0xda, 0x65, 0x74, 0x04, 0x35, 0xe1, 0xe2, 0xbe, 0x66, 0x63, 0xad, 0x5f, 0xce, - 0x12, 0xe7, 0x9e, 0xa4, 0x0e, 0x30, 0xee, 0x6c, 0x06, 0x5a, 0x83, 0xa1, 0x8a, 0x27, 0xe6, 0xc5, - 0xc8, 0x41, 0xe6, 0x05, 0x77, 0xd4, 0xcd, 0x88, 0xd9, 0xa0, 0x88, 0xb8, 0x3f, 0x2e, 0xc0, 0xa9, - 0x9c, 0x26, 0xb1, 0xfb, 0x5a, 0x4d, 0xba, 0x00, 0x96, 0xaa, 0xd9, 0xe5, 0xbf, 0x2c, 0xe0, 0x58, - 0x61, 0xa0, 0x75, 0x38, 0xbd, 0xdd, 0x8c, 0x53, 0x2a, 0x73, 0x61, 0x90, 0x90, 0x5b, 0x52, 0x18, - 0x48, 0xf7, 0xf7, 0xe9, 0xe5, 0x1c, 0x1c, 0x9c, 0x5b, 0x93, 0x6a, 0x4b, 0x24, 0xf0, 0x36, 0x1b, - 0x24, 0x2d, 0x12, 0xb7, 0x18, 0x95, 0xb6, 0x74, 0x39, 0x53, 0x8e, 0x3b, 0x6a, 0xa0, 0xcf, 0x39, - 0x70, 0x3e, 0x26, 0xd1, 0x0e, 0x89, 0xca, 0x7e, 0x95, 0xcc, 0xb5, 0xe3, 0x24, 0x6c, 0x92, 0xe8, - 0x90, 0xd6, 0xd9, 0xa9, 0xdb, 0x7b, 0x53, 0xe7, 0xcb, 0xdd, 0xa9, 0xe1, 0xfd, 0x58, 0xb9, 0x9f, - 0x73, 0x60, 0xbc, 0xcc, 0xce, 0xee, 0x4a, 0x75, 0xb7, 0x9d, 0x4b, 0xf5, 0x71, 0x95, 0xba, 0x23, - 0x23, 0x84, 0xcd, 0x64, 0x1b, 0xee, 0xcb, 0x30, 0x51, 0x26, 0x4d, 0xaf, 0x55, 0x67, 0xb7, 0x98, - 0x79, 0xf8, 0xd7, 0x45, 0x18, 0x8e, 0x25, 0x2c, 0xfb, 0x7c, 0x92, 0x42, 0xc6, 0x29, 0x0e, 0x7a, - 0x8c, 0x87, 0xaa, 0xc9, 0x0b, 0x47, 0xc3, 0xfc, 0x90, 0xc3, 0xe3, 0xdb, 0x62, 0x2c, 0xcb, 0xdc, - 0xb7, 0x1c, 0x18, 0x4d, 0xeb, 0x93, 0x2d, 0x54, 0x83, 0x13, 0x15, 0xed, 0xb2, 0x5e, 0x7a, 0x4d, - 0xa2, 0xf7, 0x7b, 0x7d, 0x3c, 0xc5, 0xb3, 0x49, 0x04, 0x67, 0xa9, 0x1e, 0x3c, 0xd2, 0xef, 0x8b, - 0x05, 0x38, 0xa1, 0x9a, 0x2a, 0xfc, 0x94, 0x6f, 0x64, 0x03, 0xf2, 0xb0, 0x8d, 0x24, 0x44, 0xe6, - 0xd8, 0xef, 0x13, 0x94, 0xf7, 0x46, 0x36, 0x28, 0xef, 0x48, 0xd9, 0x77, 0xb8, 0x5e, 0xbf, 0x53, - 0x80, 0x21, 0x95, 0x12, 0xe9, 0x79, 0x28, 0xb2, 0x93, 0xeb, 0xbd, 0xe9, 0xdf, 0xec, 0x14, 0x8c, - 0x39, 0x25, 0x4a, 0x92, 0x05, 0xfd, 0x1c, 0x3a, 0xf1, 0xee, 0x30, 0xb7, 0x5f, 0x7a, 0x51, 0x82, - 0x39, 0x25, 0xb4, 0x0c, 0x7d, 0x24, 0xa8, 0x0a, 0x45, 0xfc, 0xe0, 0x04, 0xd9, 0x43, 0x67, 0x97, - 0x83, 0x2a, 0xa6, 0x54, 0x58, 0x5e, 0x36, 0xae, 0x6f, 0x65, 0x9e, 0xb5, 0x11, 0xca, 0x96, 0x28, - 0x75, 0x67, 0xc1, 0xc8, 0xd9, 0x77, 0xa8, 0x9b, 0x11, 0xbf, 0xdc, 0x07, 0x03, 0xe5, 0xf6, 0x26, - 0x3d, 0x96, 0x7c, 0xdb, 0x81, 0x53, 0x37, 0x33, 0x99, 0xad, 0xd3, 0x75, 0x72, 0xcd, 0x9e, 0x1d, - 0x58, 0x0f, 0x5e, 0x53, 0xd6, 0xaf, 0x9c, 0x42, 0x9c, 0xd7, 0x1c, 0x23, 0xb9, 0x6c, 0xdf, 0x91, - 0x24, 0x97, 0xbd, 0x75, 0xc4, 0xb7, 0x37, 0xc6, 0xba, 0xdd, 0xdc, 0x70, 0x7f, 0xaf, 0x08, 0xc0, - 0xbf, 0xc6, 0x5a, 0x2b, 0xe9, 0xc5, 0xb2, 0xf7, 0x2c, 0x8c, 0xd6, 0x48, 0x40, 0x22, 0x19, 0x9a, - 0x98, 0x79, 0x75, 0x69, 0x51, 0x2b, 0xc3, 0x06, 0x26, 0x9b, 0x2c, 0x41, 0x12, 0xed, 0x72, 0x55, - 0x3b, 0x7b, 0x43, 0x43, 0x95, 0x60, 0x0d, 0x0b, 0x4d, 0x1b, 0x8e, 0x17, 0xee, 0xc3, 0x1f, 0xdf, - 0xc7, 0x4f, 0xf2, 0x7e, 0x18, 0x37, 0x33, 0xb1, 0x08, 0x85, 0x4f, 0xf9, 0xdc, 0xcd, 0x04, 0x2e, - 0x38, 0x83, 0x4d, 0x17, 0x42, 0x35, 0xda, 0xc5, 0xed, 0x40, 0x68, 0x7e, 0x6a, 0x21, 0xcc, 0x33, - 0x28, 0x16, 0xa5, 0x2c, 0x85, 0x05, 0xdb, 0x03, 0x39, 0x5c, 0xa4, 0xc1, 0x48, 0x53, 0x58, 0x68, - 0x65, 0xd8, 0xc0, 0xa4, 0x1c, 0x84, 0x65, 0x14, 0xcc, 0xa5, 0x96, 0x31, 0x67, 0xb6, 0x60, 0x3c, - 0x34, 0x2d, 0x3a, 0x5c, 0x0d, 0x7a, 0x77, 0x8f, 0x53, 0xcf, 0xa8, 0xcb, 0x63, 0x25, 0x32, 0x06, - 0xa0, 0x0c, 0x7d, 0xaa, 0xfa, 0xea, 0x17, 0x19, 0x46, 0xcd, 0xc8, 0xd6, 0xae, 0x77, 0x0d, 0xd6, - 0xe1, 0x74, 0x2b, 0xac, 0xae, 0x47, 0x7e, 0x18, 0xf9, 0xc9, 0xee, 0x5c, 0xc3, 0x8b, 0x63, 0x36, - 0x31, 0xc6, 0x4c, 0x95, 0x68, 0x3d, 0x07, 0x07, 0xe7, 0xd6, 0xa4, 0x67, 0xa2, 0x96, 0x00, 0xb2, - 0xf8, 0xb2, 0x22, 0x57, 0xea, 0x24, 0x22, 0x56, 0xa5, 0xee, 0x29, 0x38, 0x59, 0x6e, 0xb7, 0x5a, - 0x0d, 0x9f, 0x54, 0x95, 0x63, 0xc3, 0xfd, 0x00, 0x9c, 0x10, 0xa9, 0x67, 0x95, 0x02, 0x72, 0xa0, - 0x44, 0xe9, 0xee, 0x7f, 0xec, 0x83, 0x13, 0x99, 0x68, 0x1e, 0xf4, 0x5a, 0x56, 0x6d, 0xb0, 0x93, - 0x12, 0x55, 0x53, 0x18, 0x44, 0x7e, 0xd3, 0x3c, 0x15, 0xa4, 0x2e, 0x43, 0xf1, 0xad, 0x5d, 0x81, - 0x61, 0x01, 0xeb, 0x7c, 0x57, 0x31, 0xe2, 0xf9, 0x3f, 0x06, 0xa0, 0xd8, 0xca, 0x5b, 0xf7, 0xb6, - 0xfb, 0xc9, 0xd6, 0xaf, 0x82, 0xc4, 0x58, 0xe3, 0x88, 0x02, 0x18, 0x64, 0x0d, 0x21, 0xf2, 0xde, - 0xa5, 0xb5, 0xbe, 0x32, 0xad, 0x6d, 0x95, 0xd3, 0xc6, 0x92, 0x89, 0xfb, 0xd9, 0x02, 0xe4, 0x87, - 0x8c, 0xa1, 0x8f, 0x75, 0x7e, 0xf0, 0xe7, 0x2d, 0x0e, 0x84, 0x88, 0x59, 0xeb, 0xfe, 0xcd, 0x03, - 0xf3, 0x9b, 0xaf, 0x5a, 0x1a, 0x07, 0xc1, 0xb7, 0xe3, 0xcb, 0xbb, 0xff, 0xc3, 0x81, 0x91, 0x8d, - 0x8d, 0x15, 0xb5, 0xb5, 0x63, 0x38, 0x1b, 0xf3, 0x94, 0x06, 0xcc, 0xb3, 0x3e, 0x17, 0x36, 0x5b, - 0xdc, 0xd1, 0x2e, 0x02, 0x00, 0x58, 0xd6, 0xe3, 0x72, 0x2e, 0x06, 0xee, 0x52, 0x13, 0x2d, 0xc1, - 0x29, 0xbd, 0xa4, 0xac, 0x3d, 0x32, 0x59, 0x14, 0x19, 0x8e, 0x3a, 0x8b, 0x71, 0x5e, 0x9d, 0x2c, - 0x29, 0x61, 0x50, 0x66, 0xdb, 0x73, 0x0e, 0x29, 0x51, 0x8c, 0xf3, 0xea, 0xb8, 0x6b, 0x30, 0xb2, - 0xe1, 0x45, 0xaa, 0xe3, 0x1f, 0x84, 0x89, 0x4a, 0xd8, 0x94, 0xea, 0xca, 0x0a, 0xd9, 0x21, 0x0d, - 0xd1, 0x65, 0xfe, 0xb2, 0x4b, 0xa6, 0x0c, 0x77, 0x60, 0xbb, 0xff, 0xf5, 0x02, 0xa8, 0x2b, 0x9a, - 0x3d, 0xec, 0xa8, 0x2d, 0x15, 0x4c, 0x5b, 0xb4, 0x1c, 0x4c, 0xab, 0xf6, 0x96, 0x4c, 0x40, 0x6d, - 0x92, 0x06, 0xd4, 0x0e, 0xd8, 0x0e, 0xa8, 0x55, 0x4a, 0x76, 0x47, 0x50, 0xed, 0x57, 0x1d, 0x18, - 0x0d, 0xc2, 0x2a, 0x51, 0x1e, 0xd0, 0x41, 0xb6, 0xc2, 0x5f, 0xb2, 0x77, 0x37, 0x81, 0x07, 0x87, - 0x0a, 0xf2, 0x3c, 0xd0, 0x5b, 0x6d, 0xc9, 0x7a, 0x11, 0x36, 0xda, 0x81, 0x16, 0x34, 0xd3, 0x32, - 0xf7, 0xe0, 0x3c, 0x94, 0x77, 0x44, 0xbb, 0xab, 0x9d, 0xf8, 0x96, 0xa6, 0x27, 0x0e, 0xdb, 0x32, - 0x99, 0xca, 0x7b, 0x77, 0x9a, 0x23, 0x4a, 0x26, 0xee, 0x4e, 0xf5, 0x47, 0x17, 0x06, 0x78, 0x44, - 0xb8, 0xc8, 0xa5, 0xc5, 0xfc, 0xa3, 0x3c, 0x5a, 0x1c, 0x8b, 0x12, 0x94, 0xc8, 0x28, 0x8b, 0x11, - 0x5b, 0xcf, 0x70, 0x18, 0x51, 0x1c, 0xf9, 0x61, 0x16, 0xe8, 0x39, 0xfd, 0xe8, 0x3f, 0xda, 0xcb, - 0xd1, 0x7f, 0xac, 0xeb, 0xb1, 0xff, 0x0b, 0x0e, 0x8c, 0x56, 0xb4, 0x67, 0x31, 0x4a, 0x4f, 0xd8, - 0x7a, 0xfe, 0x3b, 0xef, 0xf5, 0x12, 0xee, 0x76, 0x33, 0x9e, 0xe1, 0x30, 0xb8, 0xb3, 0x04, 0xa2, - 0xcc, 0xce, 0xc1, 0x54, 0x1d, 0x2b, 0x89, 0x39, 0x4c, 0xbb, 0x89, 0x8c, 0x56, 0xa5, 0x30, 0x2c, - 0x78, 0xa1, 0xd7, 0x61, 0x48, 0x5e, 0x2a, 0x10, 0xc1, 0xf7, 0xd8, 0x86, 0x1f, 0xc4, 0x74, 0xb6, - 0xca, 0xac, 0x83, 0x1c, 0x8a, 0x15, 0x47, 0x54, 0x87, 0xbe, 0xaa, 0x57, 0x13, 0x61, 0xf8, 0xab, - 0x76, 0xb2, 0xba, 0x4a, 0x9e, 0xec, 0x48, 0x3a, 0x3f, 0xb3, 0x88, 0x29, 0x0b, 0x74, 0x2b, 0x7d, - 0x57, 0x60, 0xc2, 0xda, 0xee, 0x6b, 0xaa, 0x85, 0x5c, 0x27, 0xe8, 0x78, 0xa6, 0xa0, 0x2a, 0xfc, - 0xd3, 0xff, 0x1f, 0x63, 0xbb, 0x60, 0x27, 0x2d, 0x2c, 0x4f, 0xf4, 0x92, 0xfa, 0xb8, 0x29, 0x97, - 0x7a, 0x92, 0xb4, 0x4a, 0x3f, 0x6f, 0x8b, 0x0b, 0x4b, 0x57, 0xc2, 0x5f, 0x6a, 0xdf, 0xd8, 0x58, - 0xc7, 0x8c, 0x3a, 0x6a, 0xc0, 0x40, 0x8b, 0x85, 0xce, 0x94, 0xde, 0x69, 0x6b, 0x6f, 0xe1, 0xa1, - 0x38, 0x7c, 0x6e, 0xf2, 0xff, 0xb1, 0xe0, 0x81, 0x2e, 0xc3, 0x20, 0x7f, 0x1e, 0x87, 0x5f, 0x83, - 0x18, 0xb9, 0x34, 0xd9, 0xfd, 0x91, 0x9d, 0x74, 0xa3, 0xe0, 0xbf, 0x63, 0x2c, 0xeb, 0xa2, 0x2f, - 0x3a, 0x30, 0x4e, 0x25, 0x6a, 0xfa, 0x9e, 0x4f, 0x09, 0xd9, 0x92, 0x59, 0xd7, 0x62, 0xaa, 0x91, - 0x48, 0x59, 0xa3, 0x8e, 0x85, 0x4b, 0x06, 0x3b, 0x9c, 0x61, 0x8f, 0xde, 0x80, 0xa1, 0xd8, 0xaf, - 0x92, 0x8a, 0x17, 0xc5, 0xa5, 0x53, 0x47, 0xd3, 0x94, 0xd4, 0x23, 0x26, 0x18, 0x61, 0xc5, 0x12, - 0xfd, 0x1a, 0x7b, 0x50, 0xb5, 0x52, 0xf7, 0x77, 0xc8, 0x4a, 0x58, 0xe1, 0xc7, 0x98, 0xd3, 0xb6, - 0xd6, 0xbe, 0xf4, 0xfd, 0x49, 0xca, 0xc2, 0x51, 0x64, 0xb2, 0xc3, 0x59, 0xfe, 0xe8, 0x6f, 0x38, - 0x70, 0x86, 0x3f, 0x7c, 0x90, 0x7d, 0xcb, 0xe3, 0xcc, 0x21, 0x4d, 0x52, 0xec, 0xfe, 0xc6, 0x4c, - 0x1e, 0x49, 0x9c, 0xcf, 0x89, 0xa5, 0x29, 0x36, 0x9f, 0x5f, 0x3a, 0x6b, 0xd5, 0x33, 0xdc, 0xfb, - 0x93, 0x4b, 0xe8, 0x69, 0x18, 0x69, 0x89, 0xed, 0xd0, 0x8f, 0x9b, 0xec, 0x36, 0x4e, 0x1f, 0xbf, - 0x27, 0xb9, 0x9e, 0x82, 0xb1, 0x8e, 0x63, 0xe4, 0xac, 0x7e, 0x72, 0xbf, 0x9c, 0xd5, 0xe8, 0x1a, - 0x8c, 0x24, 0x61, 0x43, 0xa4, 0x6d, 0x8d, 0x4b, 0x25, 0x36, 0x03, 0x2f, 0xe4, 0xad, 0xad, 0x0d, - 0x85, 0x96, 0x9e, 0xdc, 0x53, 0x58, 0x8c, 0x75, 0x3a, 0x2c, 0x02, 0x5a, 0x3c, 0x28, 0x11, 0xb1, - 0x23, 0xfb, 0x83, 0x99, 0x08, 0x68, 0xbd, 0x10, 0x9b, 0xb8, 0x68, 0x11, 0x4e, 0xb6, 0x3a, 0xce, - 0xfc, 0xfc, 0x16, 0xa0, 0x0a, 0x3a, 0xe9, 0x3c, 0xf0, 0x77, 0xd6, 0x31, 0x4e, 0xfb, 0xe7, 0xf7, - 0x3b, 0xed, 0x77, 0xc9, 0xe0, 0xfc, 0xd0, 0x61, 0x32, 0x38, 0xa3, 0x2a, 0x3c, 0xe4, 0xb5, 0x93, - 0x90, 0xa5, 0xe4, 0x31, 0xab, 0xf0, 0x60, 0xf0, 0x47, 0x78, 0x7c, 0xf9, 0xed, 0xbd, 0xa9, 0x87, - 0x66, 0xf6, 0xc1, 0xc3, 0xfb, 0x52, 0x41, 0xaf, 0xc2, 0x10, 0x11, 0x59, 0xa8, 0x4b, 0x3f, 0x67, - 0x4b, 0x49, 0x30, 0xf3, 0x5a, 0xcb, 0x38, 0x5b, 0x0e, 0xc3, 0x8a, 0x1f, 0xda, 0x80, 0x91, 0x7a, - 0x18, 0x27, 0x33, 0x0d, 0xdf, 0x8b, 0x49, 0x5c, 0x7a, 0x98, 0x4d, 0x9a, 0x5c, 0xdd, 0xeb, 0x8a, - 0x44, 0x4b, 0xe7, 0xcc, 0x95, 0xb4, 0x26, 0xd6, 0xc9, 0x20, 0xc2, 0xfc, 0xc3, 0x2c, 0x12, 0x5e, - 0xfa, 0xbe, 0x2e, 0xb0, 0x8e, 0x3d, 0x9e, 0x47, 0x79, 0x3d, 0xac, 0x96, 0x4d, 0x6c, 0xe5, 0x20, - 0xd6, 0x81, 0x38, 0x4b, 0x13, 0x3d, 0x0b, 0xa3, 0xad, 0xb0, 0x5a, 0x6e, 0x91, 0xca, 0xba, 0x97, - 0x54, 0xea, 0xa5, 0x29, 0xd3, 0xca, 0xb8, 0xae, 0x95, 0x61, 0x03, 0x13, 0xb5, 0x60, 0xb0, 0xc9, - 0x73, 0x35, 0x94, 0x1e, 0xb5, 0x75, 0xb6, 0x11, 0xc9, 0x1f, 0x84, 0x0d, 0x81, 0xff, 0xc0, 0x92, - 0x0d, 0xfa, 0xfb, 0x0e, 0x9c, 0xc8, 0xdc, 0x2f, 0x2b, 0xbd, 0xc3, 0x9a, 0xca, 0x62, 0x12, 0x9e, - 0x7d, 0x9c, 0x0d, 0x9f, 0x09, 0xbc, 0xd3, 0x09, 0xc2, 0xd9, 0x16, 0xf1, 0x71, 0x61, 0x09, 0x57, - 0x4a, 0x8f, 0xd9, 0x1b, 0x17, 0x46, 0x50, 0x8e, 0x0b, 0xfb, 0x81, 0x25, 0x1b, 0xf4, 0x24, 0x0c, - 0x8a, 0xdc, 0x88, 0xa5, 0xc7, 0x4d, 0xaf, 0xbb, 0x48, 0xa1, 0x88, 0x65, 0xf9, 0xe4, 0x07, 0xe0, - 0x64, 0xc7, 0xd1, 0xed, 0x40, 0x59, 0x3f, 0x7e, 0xc3, 0x01, 0xfd, 0x42, 0xba, 0xf5, 0xa7, 0x5f, - 0x9e, 0x85, 0xd1, 0x0a, 0x7f, 0x89, 0x93, 0x5f, 0x69, 0xef, 0x37, 0xed, 0xbd, 0x73, 0x5a, 0x19, - 0x36, 0x30, 0xdd, 0x2b, 0x80, 0x3a, 0xf3, 0xf2, 0x1f, 0xca, 0x71, 0xf2, 0x0f, 0x1d, 0x18, 0x33, - 0x74, 0x06, 0xeb, 0x7e, 0xd5, 0x05, 0x40, 0x4d, 0x3f, 0x8a, 0xc2, 0x48, 0x7f, 0xf2, 0x50, 0xa4, - 0x9d, 0x60, 0xf1, 0x16, 0xab, 0x1d, 0xa5, 0x38, 0xa7, 0x86, 0xfb, 0x8f, 0xfb, 0x21, 0x0d, 0x34, - 0x57, 0x59, 0x8b, 0x9d, 0xae, 0x59, 0x8b, 0x9f, 0x82, 0xa1, 0x97, 0xe3, 0x30, 0x58, 0x4f, 0x73, - 0x1b, 0xab, 0x6f, 0xf1, 0x5c, 0x79, 0xed, 0x2a, 0xc3, 0x54, 0x18, 0x0c, 0xfb, 0x95, 0x05, 0xbf, - 0x91, 0x74, 0x26, 0xbf, 0x7d, 0xee, 0x79, 0x0e, 0xc7, 0x0a, 0x83, 0xbd, 0x7e, 0xb8, 0x43, 0x94, - 0x23, 0x20, 0x7d, 0xfd, 0x90, 0x3f, 0xb9, 0xc1, 0xca, 0xd0, 0x45, 0x18, 0x56, 0x4e, 0x04, 0xe1, - 0x99, 0x50, 0x23, 0xa5, 0x3c, 0x0d, 0x38, 0xc5, 0x61, 0x0a, 0xa1, 0x30, 0x3c, 0x0b, 0x13, 0x4a, - 0xd9, 0xc6, 0xf1, 0x24, 0x63, 0xca, 0xe6, 0xb2, 0x5d, 0x82, 0xb1, 0x62, 0x99, 0xe7, 0x5b, 0x1e, - 0x3e, 0x12, 0xdf, 0xb2, 0x76, 0xeb, 0xa1, 0xd8, 0xeb, 0xad, 0x07, 0x73, 0x6e, 0x0f, 0xf5, 0x34, - 0xb7, 0x3f, 0xdd, 0x07, 0x83, 0xd7, 0x49, 0xc4, 0xd2, 0xc6, 0x3f, 0x09, 0x83, 0x3b, 0xfc, 0xdf, - 0xec, 0x95, 0x59, 0x81, 0x81, 0x65, 0x39, 0xfd, 0x6e, 0x9b, 0x6d, 0xbf, 0x51, 0x9d, 0x4f, 0x57, - 0x71, 0x9a, 0xd6, 0x51, 0x16, 0xe0, 0x14, 0x87, 0x56, 0xa8, 0x51, 0xcd, 0xbe, 0xd9, 0xf4, 0x3b, - 0x1e, 0xf6, 0x5f, 0x94, 0x05, 0x38, 0xc5, 0x41, 0x8f, 0xc3, 0x40, 0xcd, 0x4f, 0x36, 0xbc, 0x5a, - 0xd6, 0x33, 0xba, 0xc8, 0xa0, 0x58, 0x94, 0x32, 0xb7, 0x98, 0x9f, 0x6c, 0x44, 0x84, 0x59, 0x76, - 0x3b, 0x32, 0x76, 0x2c, 0x6a, 0x65, 0xd8, 0xc0, 0x64, 0x4d, 0x0a, 0x45, 0xcf, 0x44, 0x9c, 0x6c, - 0xda, 0x24, 0x59, 0x80, 0x53, 0x1c, 0x3a, 0xff, 0x2b, 0x61, 0xb3, 0xe5, 0x37, 0x44, 0x04, 0xb7, - 0x36, 0xff, 0xe7, 0x04, 0x1c, 0x2b, 0x0c, 0x8a, 0x4d, 0x45, 0x18, 0x15, 0x3f, 0xd9, 0x97, 0xe6, - 0xd6, 0x05, 0x1c, 0x2b, 0x0c, 0xf7, 0x3a, 0x8c, 0xf1, 0x95, 0x3c, 0xd7, 0xf0, 0xfc, 0xe6, 0xe2, - 0x1c, 0xba, 0xdc, 0x71, 0xeb, 0xe1, 0xc9, 0x9c, 0x5b, 0x0f, 0x67, 0x8c, 0x4a, 0x9d, 0xb7, 0x1f, - 0xdc, 0x1f, 0x16, 0x60, 0xe8, 0x18, 0x1f, 0xeb, 0x3c, 0xf6, 0x77, 0xa7, 0xd1, 0xad, 0xcc, 0x43, - 0x9d, 0xeb, 0x36, 0x2f, 0x31, 0xed, 0xfb, 0x48, 0xe7, 0x7f, 0x2a, 0xc0, 0x59, 0x89, 0x2a, 0xcf, - 0x72, 0x8b, 0x73, 0xec, 0x01, 0xb4, 0xa3, 0x1f, 0xe8, 0xc8, 0x18, 0xe8, 0x75, 0x7b, 0xa7, 0xd1, - 0xc5, 0xb9, 0xae, 0x43, 0xfd, 0x6a, 0x66, 0xa8, 0xb1, 0x55, 0xae, 0xfb, 0x0f, 0xf6, 0x9f, 0x3b, - 0x30, 0x99, 0x3f, 0xd8, 0xc7, 0xf0, 0x36, 0xea, 0x1b, 0xe6, 0xdb, 0xa8, 0xbf, 0x68, 0x6f, 0x8a, - 0x99, 0x5d, 0xe9, 0xf2, 0x4a, 0xea, 0x7f, 0x77, 0xe0, 0xb4, 0xac, 0xc0, 0x76, 0xcf, 0x59, 0x3f, - 0x60, 0xc1, 0x3b, 0x47, 0x3f, 0xcd, 0x5e, 0x37, 0xa6, 0xd9, 0x8b, 0xf6, 0x3a, 0xae, 0xf7, 0xa3, - 0xeb, 0x9b, 0xf2, 0x7f, 0xe6, 0x40, 0x29, 0xaf, 0xc2, 0x31, 0x7c, 0xf2, 0xd7, 0xcc, 0x4f, 0x7e, - 0xfd, 0x68, 0x7a, 0xde, 0xfd, 0x83, 0x97, 0xba, 0x0d, 0x14, 0x6a, 0x48, 0xbd, 0xca, 0xb1, 0xe5, - 0x93, 0xe6, 0x2c, 0xf2, 0x15, 0xb4, 0x06, 0x0c, 0xc4, 0x2c, 0x4a, 0x45, 0x4c, 0x81, 0x2b, 0x36, - 0xb4, 0x2d, 0x4a, 0x4f, 0xd8, 0xd8, 0xd9, 0xff, 0x58, 0xf0, 0x70, 0x7f, 0xb3, 0x00, 0xe7, 0xd4, - 0x9b, 0xc7, 0x64, 0x87, 0x34, 0xd2, 0xf5, 0xc1, 0x5e, 0xc8, 0xf0, 0xd4, 0x4f, 0x7b, 0x2f, 0x64, - 0xa4, 0x2c, 0xd2, 0xb5, 0x90, 0xc2, 0xb0, 0xc6, 0x13, 0x95, 0xe1, 0x0c, 0x7b, 0xd1, 0x62, 0xc1, - 0x0f, 0xbc, 0x86, 0xff, 0x2a, 0x89, 0x30, 0x69, 0x86, 0x3b, 0x5e, 0x43, 0x68, 0xea, 0xea, 0xd6, - 0xf4, 0x42, 0x1e, 0x12, 0xce, 0xaf, 0xdb, 0x71, 0xe2, 0xee, 0xeb, 0xf5, 0xc4, 0xed, 0xfe, 0x89, - 0x03, 0xa3, 0xc7, 0xf8, 0x42, 0x74, 0x68, 0x2e, 0x89, 0xe7, 0xec, 0x2d, 0x89, 0x2e, 0xcb, 0x60, - 0xaf, 0x08, 0x1d, 0x8f, 0xe6, 0xa2, 0xcf, 0x38, 0x2a, 0x8e, 0x87, 0xc7, 0x4b, 0x7e, 0xd8, 0x5e, - 0x3b, 0x0e, 0x92, 0x6a, 0x13, 0x7d, 0x23, 0x93, 0x7f, 0xb4, 0x60, 0x2b, 0x89, 0x56, 0x47, 0x6b, - 0x0e, 0x91, 0x87, 0xf4, 0xab, 0x0e, 0x00, 0x6f, 0xa7, 0x48, 0x5f, 0x4e, 0xdb, 0xb6, 0x79, 0x64, - 0x23, 0x45, 0x99, 0xf0, 0xa6, 0xa9, 0x25, 0x94, 0x16, 0x60, 0xad, 0x25, 0xf7, 0x90, 0x60, 0xf4, - 0x9e, 0x73, 0x9b, 0x7e, 0xd1, 0x81, 0x13, 0x99, 0xe6, 0xe6, 0xd4, 0xdf, 0x32, 0xdf, 0x78, 0xb4, - 0xa0, 0x59, 0x99, 0x49, 0xad, 0x75, 0xe3, 0xc9, 0x7f, 0x71, 0xc1, 0x78, 0x6d, 0x1c, 0xbd, 0x06, - 0xc3, 0xd2, 0xf2, 0x21, 0xa7, 0xb7, 0xcd, 0xb7, 0x6e, 0xd5, 0xf1, 0x46, 0x42, 0x62, 0x9c, 0xf2, - 0xcb, 0x84, 0x09, 0x16, 0x7a, 0x0a, 0x13, 0xbc, 0xbf, 0x2f, 0xe5, 0xe6, 0xdb, 0xa5, 0xfb, 0x8f, - 0xc4, 0x2e, 0xfd, 0x90, 0x75, 0xbb, 0xf4, 0xc3, 0xc7, 0x6c, 0x97, 0xd6, 0x9c, 0x84, 0xc5, 0x7b, - 0x70, 0x12, 0xbe, 0x06, 0xa7, 0x77, 0xd2, 0x43, 0xa7, 0x9a, 0x49, 0x22, 0x75, 0xd3, 0x93, 0xb9, - 0xd6, 0x68, 0x7a, 0x80, 0x8e, 0x13, 0x12, 0x24, 0xda, 0x71, 0x35, 0x8d, 0x50, 0xbc, 0x9e, 0x43, - 0x0e, 0xe7, 0x32, 0xc9, 0x7a, 0x7b, 0x06, 0x7b, 0xf0, 0xf6, 0xbc, 0xe5, 0xc0, 0x19, 0xaf, 0xe3, - 0x9a, 0x1d, 0x26, 0x5b, 0x22, 0xe4, 0xe4, 0x86, 0x3d, 0x15, 0xc2, 0x20, 0x2f, 0xdc, 0x6a, 0x79, - 0x45, 0x38, 0xbf, 0x41, 0xe8, 0xb1, 0xd4, 0xf5, 0xce, 0xe3, 0x5a, 0xf3, 0xfd, 0xe4, 0xdf, 0xc8, - 0xc6, 0xf3, 0x00, 0x1b, 0xfa, 0x8f, 0xda, 0x3d, 0x6d, 0x5b, 0x88, 0xe9, 0x19, 0xb9, 0x87, 0x98, - 0x9e, 0x8c, 0xeb, 0x6d, 0xd4, 0x92, 0xeb, 0x2d, 0x80, 0x09, 0xbf, 0xe9, 0xd5, 0xc8, 0x7a, 0xbb, - 0xd1, 0xe0, 0xf7, 0x66, 0xe4, 0x6b, 0xc4, 0xb9, 0x16, 0xbc, 0x95, 0xb0, 0xe2, 0x35, 0xb2, 0xef, - 0xd0, 0xab, 0xfb, 0x41, 0x4b, 0x19, 0x4a, 0xb8, 0x83, 0x36, 0x9d, 0xb0, 0x2c, 0x87, 0x20, 0x49, - 0xe8, 0x68, 0xb3, 0xc0, 0x91, 0x21, 0x3e, 0x61, 0xaf, 0xa4, 0x60, 0xac, 0xe3, 0xa0, 0x65, 0x18, - 0xae, 0x06, 0xb1, 0xb8, 0x31, 0x7c, 0x82, 0x09, 0xb3, 0x77, 0x51, 0x11, 0x38, 0x7f, 0xb5, 0xac, - 0xee, 0x0a, 0x3f, 0x94, 0x93, 0x14, 0x53, 0x95, 0xe3, 0xb4, 0x3e, 0x5a, 0x65, 0xc4, 0xc4, 0x3b, - 0x6b, 0x3c, 0x9e, 0xe3, 0x91, 0x2e, 0x0e, 0xa3, 0xf9, 0xab, 0xf2, 0xa5, 0xb8, 0x31, 0xc1, 0x4e, - 0x3c, 0x98, 0x96, 0x52, 0xd0, 0x5e, 0x85, 0x3e, 0xb9, 0xef, 0xab, 0xd0, 0x2c, 0x1b, 0x6e, 0xd2, - 0x50, 0xee, 0xe1, 0x0b, 0xd6, 0xb2, 0xe1, 0xa6, 0x91, 0x92, 0x22, 0x1b, 0x6e, 0x0a, 0xc0, 0x3a, - 0x4b, 0xb4, 0xd6, 0xcd, 0x4d, 0x7e, 0x8a, 0x09, 0x8d, 0x83, 0x3b, 0xbd, 0x75, 0x7f, 0xe9, 0xe9, - 0x7d, 0xfd, 0xa5, 0x1d, 0xfe, 0xdd, 0x33, 0x07, 0xf0, 0xef, 0xd6, 0x59, 0x9e, 0xd2, 0xc5, 0x39, - 0xe1, 0x52, 0xb7, 0x70, 0xbe, 0x63, 0x99, 0x51, 0x78, 0xe4, 0x29, 0xfb, 0x17, 0x73, 0x06, 0x5d, - 0x03, 0xc8, 0xcf, 0x1d, 0x3a, 0x80, 0x9c, 0x8a, 0xe7, 0x14, 0xce, 0x12, 0xde, 0x16, 0x85, 0x78, - 0x4e, 0xc1, 0x58, 0xc7, 0xc9, 0x7a, 0x4b, 0x1f, 0x3c, 0x32, 0x6f, 0xe9, 0xe4, 0x31, 0x78, 0x4b, - 0xcf, 0xf7, 0xec, 0x2d, 0xbd, 0x05, 0xa7, 0x5a, 0x61, 0x75, 0xde, 0x8f, 0xa3, 0x36, 0xbb, 0x48, - 0x38, 0xdb, 0xae, 0xd6, 0x48, 0xc2, 0xdc, 0xad, 0x23, 0x97, 0xde, 0xa5, 0x37, 0xb2, 0xc5, 0x16, - 0xb2, 0x5c, 0xa3, 0x99, 0x0a, 0xcc, 0x74, 0xc2, 0xa2, 0x6e, 0x73, 0x0a, 0x71, 0x1e, 0x0b, 0xdd, - 0x4f, 0xfb, 0xc8, 0xf1, 0xf8, 0x69, 0x3f, 0x08, 0x43, 0x71, 0xbd, 0x9d, 0x54, 0xc3, 0x9b, 0x01, - 0x73, 0xc6, 0x0f, 0xcf, 0xbe, 0x43, 0x99, 0xb2, 0x05, 0xfc, 0xce, 0xde, 0xd4, 0x84, 0xfc, 0x5f, - 0xb3, 0x62, 0x0b, 0x08, 0xfa, 0x66, 0x97, 0xfb, 0x4a, 0xee, 0x51, 0xde, 0x57, 0x3a, 0x77, 0xa0, - 0xbb, 0x4a, 0x79, 0xce, 0xe8, 0x47, 0x7f, 0xe6, 0x9c, 0xd1, 0x5f, 0x77, 0x60, 0x6c, 0x47, 0x77, - 0x19, 0x08, 0x87, 0xb9, 0x85, 0xc0, 0x1d, 0xc3, 0x13, 0x31, 0xeb, 0x52, 0x39, 0x67, 0x80, 0xee, - 0x64, 0x01, 0xd8, 0x6c, 0x49, 0x4e, 0x50, 0xd1, 0x63, 0xf7, 0x2b, 0xa8, 0xe8, 0x0d, 0x26, 0xc7, - 0xe4, 0x21, 0x97, 0x79, 0xd1, 0xed, 0xc6, 0x14, 0x4b, 0x99, 0xa8, 0x42, 0x8a, 0x75, 0x7e, 0xe8, - 0x0b, 0x0e, 0x4c, 0xc8, 0x73, 0x99, 0x70, 0xf9, 0xc5, 0x22, 0x2a, 0xd2, 0xe6, 0x71, 0x90, 0x85, - 0xd5, 0x6f, 0x64, 0xf8, 0xe0, 0x0e, 0xce, 0x54, 0xaa, 0xab, 0x20, 0xb4, 0x5a, 0xcc, 0x82, 0x7f, - 0x85, 0x0e, 0x33, 0x93, 0x82, 0xb1, 0x8e, 0x83, 0xbe, 0xe5, 0x40, 0xb1, 0x1e, 0x86, 0xdb, 0x71, - 0xe9, 0x49, 0x26, 0xd0, 0x5f, 0xb0, 0xac, 0x9b, 0x5e, 0xa1, 0xb4, 0xb9, 0x52, 0xfa, 0xb4, 0xb4, - 0x1d, 0x31, 0xd8, 0x9d, 0xbd, 0xa9, 0x71, 0xe3, 0x39, 0xa7, 0xf8, 0xcd, 0xb7, 0x35, 0x88, 0xb0, - 0x6d, 0xb2, 0xa6, 0xa1, 0x2f, 0x3b, 0x30, 0x71, 0x33, 0x63, 0xd0, 0x10, 0x61, 0xa1, 0xd8, 0xbe, - 0xa9, 0x84, 0x0f, 0x77, 0x16, 0x8a, 0x3b, 0x5a, 0x80, 0x3e, 0x6f, 0x1a, 0x3a, 0x79, 0xfc, 0xa8, - 0xc5, 0x01, 0xcc, 0x18, 0x56, 0xf9, 0xb5, 0xa0, 0x7c, 0x8b, 0xe7, 0x3d, 0xc7, 0x87, 0x4c, 0xd2, - 0xce, 0xa4, 0x1f, 0x2b, 0xa7, 0x2a, 0x31, 0xed, 0x2d, 0x16, 0x16, 0xbb, 0xf1, 0xf9, 0x75, 0x73, - 0xcb, 0x97, 0xcf, 0xc2, 0xb8, 0xe9, 0xdb, 0x43, 0xef, 0x36, 0x9f, 0xea, 0xb8, 0x90, 0x7d, 0xf5, - 0x60, 0x4c, 0xe2, 0x1b, 0x2f, 0x1f, 0x18, 0x4f, 0x13, 0x14, 0x8e, 0xf4, 0x69, 0x82, 0xbe, 0xe3, - 0x79, 0x9a, 0x60, 0xe2, 0x28, 0x9e, 0x26, 0x38, 0x79, 0xa0, 0xa7, 0x09, 0xb4, 0xa7, 0x21, 0xfa, - 0xef, 0xf2, 0x34, 0xc4, 0x0c, 0x9c, 0x90, 0x77, 0x7f, 0x88, 0xc8, 0xfe, 0xce, 0xdd, 0xfe, 0xea, - 0x95, 0xf1, 0x39, 0xb3, 0x18, 0x67, 0xf1, 0xe9, 0x22, 0x2b, 0x06, 0xac, 0xe6, 0x80, 0xad, 0x77, - 0xa3, 0xcc, 0xa9, 0xc5, 0x8e, 0xcf, 0x42, 0x44, 0xc9, 0x68, 0xe7, 0x22, 0x83, 0xdd, 0x91, 0xff, - 0x60, 0xde, 0x02, 0xf4, 0x12, 0x94, 0xc2, 0xad, 0xad, 0x46, 0xe8, 0x55, 0xd3, 0xf7, 0x13, 0x64, - 0x5c, 0x02, 0xbf, 0xab, 0xaa, 0xd2, 0xed, 0xae, 0x75, 0xc1, 0xc3, 0x5d, 0x29, 0xa0, 0xb7, 0xa8, - 0x62, 0x92, 0x84, 0x11, 0xa9, 0xa6, 0xb6, 0x9a, 0x61, 0xd6, 0x67, 0x62, 0xbd, 0xcf, 0x65, 0x93, - 0x0f, 0xef, 0xbd, 0xfa, 0x28, 0x99, 0x52, 0x9c, 0x6d, 0x16, 0x8a, 0xe0, 0x6c, 0x2b, 0xcf, 0x54, - 0x14, 0x8b, 0x1b, 0x4b, 0xfb, 0x19, 0xac, 0xd4, 0x5b, 0xda, 0xb9, 0xc6, 0xa6, 0x18, 0x77, 0xa1, - 0xac, 0xbf, 0x71, 0x30, 0x74, 0x3c, 0x6f, 0x1c, 0x7c, 0x1c, 0xa0, 0x22, 0xb3, 0xad, 0x49, 0xe3, - 0xc3, 0xb2, 0x95, 0xab, 0x34, 0x9c, 0xa6, 0xf6, 0xac, 0xac, 0x62, 0x83, 0x35, 0x96, 0xe8, 0x7f, - 0xe7, 0x3e, 0x02, 0xc2, 0x2d, 0x2c, 0x35, 0xeb, 0x73, 0xe2, 0x67, 0xee, 0x21, 0x90, 0x7f, 0xe0, - 0xc0, 0x24, 0x9f, 0x79, 0x59, 0xe5, 0x9e, 0xaa, 0x16, 0xe2, 0x6e, 0x8f, 0xed, 0xd0, 0x15, 0x9e, - 0x35, 0xc9, 0xe0, 0xca, 0x1c, 0xdd, 0xfb, 0xb4, 0x04, 0x7d, 0x35, 0xe7, 0x48, 0x71, 0xc2, 0x96, - 0xcd, 0x32, 0xff, 0x29, 0x87, 0x53, 0xb7, 0x7b, 0x39, 0x45, 0xfc, 0xa3, 0xae, 0x26, 0x55, 0xc4, - 0x9a, 0xf7, 0x4b, 0x47, 0x64, 0x52, 0xd5, 0xdf, 0x9b, 0x38, 0x90, 0x61, 0xf5, 0x8b, 0x0e, 0x4c, - 0x78, 0x99, 0x50, 0x13, 0x66, 0x07, 0xb2, 0x62, 0x93, 0x9a, 0x89, 0xd2, 0xf8, 0x15, 0xa6, 0xe4, - 0x65, 0xa3, 0x5a, 0x70, 0x07, 0x73, 0xf4, 0x43, 0x07, 0xce, 0x27, 0x5e, 0xbc, 0xcd, 0xb3, 0x39, - 0xc7, 0xe9, 0x5d, 0x5d, 0xd1, 0xb8, 0xd3, 0x6c, 0x35, 0xbe, 0x62, 0x7d, 0x35, 0x6e, 0x74, 0xe7, - 0xc9, 0xd7, 0xe5, 0xa3, 0x62, 0x5d, 0x9e, 0xdf, 0x07, 0x13, 0xef, 0xd7, 0xf4, 0xc9, 0xcf, 0x38, - 0xfc, 0xd5, 0xaf, 0xae, 0x2a, 0xdf, 0xa6, 0xa9, 0xf2, 0xad, 0xd8, 0x7c, 0x77, 0x48, 0xd7, 0x3d, - 0x7f, 0xd5, 0x81, 0xd3, 0x79, 0x3b, 0x52, 0x4e, 0x93, 0x3e, 0x6a, 0x36, 0xc9, 0xe2, 0x29, 0x4b, - 0x6f, 0x90, 0x95, 0x67, 0x4f, 0x26, 0xaf, 0xc2, 0x23, 0x77, 0xfb, 0x8a, 0x77, 0xa3, 0x37, 0xa4, - 0xab, 0xc5, 0x7f, 0x36, 0xac, 0x79, 0x21, 0x13, 0xd2, 0xb2, 0x1e, 0xc3, 0x1d, 0xc0, 0x80, 0x1f, - 0x34, 0xfc, 0x80, 0x88, 0xfb, 0x9a, 0x36, 0xcf, 0xb0, 0xe2, 0xd9, 0x22, 0x4a, 0x1d, 0x0b, 0x2e, - 0xf7, 0xd9, 0x29, 0x99, 0x7d, 0x08, 0xae, 0xff, 0xf8, 0x1f, 0x82, 0xbb, 0x09, 0xc3, 0x37, 0xfd, - 0xa4, 0xce, 0x82, 0x29, 0x84, 0xaf, 0xcf, 0xc2, 0x3d, 0x47, 0x4a, 0x2e, 0xed, 0xfb, 0x0d, 0xc9, - 0x00, 0xa7, 0xbc, 0xd0, 0x45, 0xce, 0x98, 0x45, 0x6e, 0x67, 0x43, 0x6a, 0x6f, 0xc8, 0x02, 0x9c, - 0xe2, 0xd0, 0xc1, 0x1a, 0xa5, 0xbf, 0x64, 0x0e, 0x28, 0x91, 0x19, 0xd9, 0x46, 0xc6, 0x4b, 0x41, - 0x91, 0xdf, 0x26, 0xbe, 0xa1, 0xf1, 0xc0, 0x06, 0x47, 0x95, 0x9c, 0x7a, 0xa8, 0x6b, 0x72, 0xea, - 0xd7, 0x99, 0xc2, 0x96, 0xf8, 0x41, 0x9b, 0xac, 0x05, 0x22, 0xde, 0x7b, 0xc5, 0xce, 0xdd, 0x67, - 0x4e, 0x93, 0x1f, 0xc1, 0xd3, 0xdf, 0x58, 0xe3, 0xa7, 0xb9, 0x5c, 0x46, 0xf6, 0x75, 0xb9, 0xa4, - 0x26, 0x97, 0x51, 0xeb, 0x26, 0x97, 0x84, 0xb4, 0xac, 0x98, 0x5c, 0x7e, 0xa6, 0xcc, 0x01, 0x7f, - 0xee, 0x00, 0x52, 0x7a, 0x97, 0x12, 0xa8, 0xc7, 0x10, 0x54, 0xf9, 0x09, 0x07, 0x20, 0x50, 0xcf, - 0x85, 0xda, 0xdd, 0x05, 0x39, 0xcd, 0xb4, 0x01, 0x29, 0x0c, 0x6b, 0x3c, 0xdd, 0x3f, 0x75, 0xd2, - 0xd8, 0xe5, 0xb4, 0xef, 0xc7, 0x10, 0x44, 0xb6, 0x6b, 0x06, 0x91, 0x6d, 0x58, 0x34, 0xdd, 0xab, - 0x6e, 0x74, 0x09, 0x27, 0xfb, 0x49, 0x01, 0x4e, 0xe8, 0xc8, 0x65, 0x72, 0x1c, 0x1f, 0xfb, 0xa6, - 0x11, 0x41, 0x7b, 0xcd, 0x6e, 0x7f, 0xcb, 0xc2, 0x03, 0x94, 0x17, 0xad, 0xfd, 0xf1, 0x4c, 0xb4, - 0xf6, 0x0d, 0xfb, 0xac, 0xf7, 0x0f, 0xd9, 0xfe, 0xcf, 0x0e, 0x9c, 0xca, 0xd4, 0x38, 0x86, 0x09, - 0xb6, 0x63, 0x4e, 0xb0, 0xe7, 0xad, 0xf7, 0xba, 0xcb, 0xec, 0xfa, 0x76, 0xa1, 0xa3, 0xb7, 0xec, - 0x10, 0xf7, 0x69, 0x07, 0x8a, 0x54, 0x5b, 0x96, 0xf1, 0x5c, 0x1f, 0x3d, 0x92, 0x19, 0xc0, 0xf4, - 0x7a, 0x21, 0x9d, 0x55, 0xfb, 0x18, 0x0c, 0x73, 0xee, 0x93, 0x9f, 0x72, 0x00, 0x52, 0xa4, 0xfb, - 0xa5, 0x02, 0xbb, 0xdf, 0x2d, 0xc0, 0x99, 0xdc, 0x69, 0x84, 0x3e, 0xab, 0x2c, 0x72, 0x8e, 0xed, - 0x68, 0x45, 0x83, 0x91, 0x6e, 0x98, 0x1b, 0x33, 0x0c, 0x73, 0xc2, 0x1e, 0x77, 0xbf, 0x0e, 0x30, - 0x42, 0x4c, 0x6b, 0x83, 0xf5, 0x63, 0x27, 0x0d, 0x80, 0x55, 0x79, 0x8d, 0xfe, 0x02, 0x5e, 0xe2, - 0x71, 0x7f, 0xa2, 0xdd, 0x70, 0x90, 0x1d, 0x3d, 0x06, 0x59, 0x71, 0xd3, 0x94, 0x15, 0xd8, 0xbe, - 0x1f, 0xb9, 0x8b, 0xb0, 0x78, 0x05, 0xf2, 0x1c, 0xcb, 0xbd, 0x25, 0x81, 0x34, 0xae, 0xc3, 0x16, - 0x7a, 0xbe, 0x0e, 0x3b, 0x06, 0x23, 0x2f, 0xfa, 0x2a, 0x81, 0xe8, 0xec, 0xf4, 0xf7, 0x7e, 0x74, - 0xe1, 0x81, 0xef, 0xff, 0xe8, 0xc2, 0x03, 0x3f, 0xfc, 0xd1, 0x85, 0x07, 0x3e, 0x71, 0xfb, 0x82, - 0xf3, 0xbd, 0xdb, 0x17, 0x9c, 0xef, 0xdf, 0xbe, 0xe0, 0xfc, 0xf0, 0xf6, 0x05, 0xe7, 0xdf, 0xde, - 0xbe, 0xe0, 0xfc, 0xad, 0x7f, 0x77, 0xe1, 0x81, 0x17, 0x87, 0x64, 0xc7, 0xfe, 0x5f, 0x00, 0x00, - 0x00, 0xff, 0xff, 0xc9, 0x42, 0x1f, 0x61, 0xd5, 0xd8, 0x00, 0x00, + // 11207 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x7d, 0x5b, 0x70, 0x64, 0xc7, + 0x75, 0x18, 0xef, 0x00, 0x83, 0xc7, 0xc1, 0x63, 0xb1, 0xbd, 0xaf, 0x21, 0x48, 0x2e, 0xe8, 0x4b, + 0x91, 0x21, 0x2d, 0x0a, 0x6b, 0x2e, 0xa5, 0x84, 0x91, 0x12, 0x49, 0x78, 0x2c, 0xb0, 0x20, 0x80, + 0x05, 0xd8, 0x83, 0xdd, 0x15, 0x1f, 0x96, 0x74, 0x31, 0xd3, 0x98, 0xb9, 0xc4, 0xcc, 0xbd, 0xc3, + 0x7b, 0xef, 0x60, 0x17, 0x7c, 0x48, 0x0a, 0xf5, 0x8e, 0x65, 0x2b, 0x96, 0x25, 0x59, 0x52, 0x92, + 0x2a, 0x45, 0x91, 0x12, 0x96, 0xec, 0x4a, 0xca, 0xfe, 0x4a, 0xd9, 0x7f, 0xa9, 0x94, 0x4b, 0x29, + 0xa7, 0x12, 0xb9, 0xa2, 0x94, 0xf5, 0x61, 0x83, 0xd1, 0x26, 0x51, 0xe5, 0xe5, 0x2a, 0x5b, 0x15, + 0x27, 0xf1, 0xe6, 0x51, 0xae, 0x7e, 0xde, 0xee, 0x3b, 0x77, 0xb0, 0x03, 0x6c, 0x03, 0xab, 0xb2, + 0xbf, 0x80, 0x39, 0x7d, 0xfa, 0x9c, 0xee, 0xbe, 0xdd, 0xa7, 0x4f, 0x9f, 0x73, 0xfa, 0x34, 0xac, + 0xd7, 0xfc, 0xa4, 0xde, 0xde, 0x9c, 0xae, 0x84, 0xcd, 0x0b, 0x5e, 0x54, 0x0b, 0x5b, 0x51, 0xf8, + 0x32, 0xfb, 0xe7, 0x5d, 0x37, 0xc2, 0x68, 0x7b, 0xab, 0x11, 0xde, 0x88, 0x2f, 0xec, 0x3c, 0x7d, + 0xa1, 0xb5, 0x5d, 0xbb, 0xe0, 0xb5, 0xfc, 0xf8, 0x82, 0x84, 0x5e, 0xd8, 0x79, 0xca, 0x6b, 0xb4, + 0xea, 0xde, 0x53, 0x17, 0x6a, 0x24, 0x20, 0x91, 0x97, 0x90, 0xea, 0x74, 0x2b, 0x0a, 0x93, 0x10, + 0x7d, 0x30, 0xa5, 0x38, 0x2d, 0x29, 0xb2, 0x7f, 0x3e, 0xa2, 0x28, 0x4e, 0xef, 0x3c, 0x3d, 0xdd, + 0xda, 0xae, 0x4d, 0x53, 0x8a, 0xd3, 0x12, 0x3a, 0x2d, 0x29, 0x4e, 0xbe, 0x4b, 0x6b, 0x53, 0x2d, + 0xac, 0x85, 0x17, 0x18, 0xe1, 0xcd, 0xf6, 0x16, 0xfb, 0xc5, 0x7e, 0xb0, 0xff, 0x38, 0xc3, 0x49, + 0x77, 0xfb, 0x99, 0x78, 0xda, 0x0f, 0x69, 0xfb, 0x2e, 0x54, 0xc2, 0x88, 0x5c, 0xd8, 0xe9, 0x68, + 0xd4, 0xe4, 0x3b, 0x34, 0x9c, 0x56, 0xd8, 0xf0, 0x2b, 0xbb, 0x79, 0x58, 0xef, 0x4e, 0xb1, 0x9a, + 0x5e, 0xa5, 0xee, 0x07, 0x24, 0xda, 0x4d, 0xbb, 0xde, 0x24, 0x89, 0x97, 0x57, 0xeb, 0x42, 0xb7, + 0x5a, 0x51, 0x3b, 0x48, 0xfc, 0x26, 0xe9, 0xa8, 0xf0, 0x57, 0xef, 0x54, 0x21, 0xae, 0xd4, 0x49, + 0xd3, 0xeb, 0xa8, 0xf7, 0x74, 0xb7, 0x7a, 0xed, 0xc4, 0x6f, 0x5c, 0xf0, 0x83, 0x24, 0x4e, 0xa2, + 0x6c, 0x25, 0xf7, 0x12, 0x0c, 0xcc, 0x34, 0xc3, 0x76, 0x90, 0xa0, 0xf7, 0x41, 0x71, 0xc7, 0x6b, + 0xb4, 0x49, 0xc9, 0x79, 0xd8, 0x79, 0x7c, 0x78, 0xf6, 0xd1, 0xef, 0xed, 0x4d, 0xdd, 0x77, 0x6b, + 0x6f, 0xaa, 0x78, 0x8d, 0x02, 0x6f, 0xef, 0x4d, 0x9d, 0x26, 0x41, 0x25, 0xac, 0xfa, 0x41, 0xed, + 0xc2, 0xcb, 0x71, 0x18, 0x4c, 0x5f, 0x69, 0x37, 0x37, 0x49, 0x84, 0x79, 0x1d, 0xf7, 0xdf, 0x16, + 0xe0, 0xc4, 0x4c, 0x54, 0xa9, 0xfb, 0x3b, 0xa4, 0x9c, 0x50, 0xfa, 0xb5, 0x5d, 0x54, 0x87, 0xbe, + 0xc4, 0x8b, 0x18, 0xb9, 0x91, 0x8b, 0xab, 0xd3, 0x77, 0xfb, 0xdd, 0xa7, 0x37, 0xbc, 0x48, 0xd2, + 0x9e, 0x1d, 0xbc, 0xb5, 0x37, 0xd5, 0xb7, 0xe1, 0x45, 0x98, 0xb2, 0x40, 0x0d, 0xe8, 0x0f, 0xc2, + 0x80, 0x94, 0x0a, 0x8c, 0xd5, 0x95, 0xbb, 0x67, 0x75, 0x25, 0x0c, 0x54, 0x3f, 0x66, 0x87, 0x6e, + 0xed, 0x4d, 0xf5, 0x53, 0x08, 0x66, 0x5c, 0x68, 0xbf, 0x5e, 0xf5, 0x5b, 0xa5, 0x3e, 0x5b, 0xfd, + 0x7a, 0xc1, 0x6f, 0x99, 0xfd, 0x7a, 0xc1, 0x6f, 0x61, 0xca, 0xc2, 0xfd, 0x7c, 0x01, 0x86, 0x67, + 0xa2, 0x5a, 0xbb, 0x49, 0x82, 0x24, 0x46, 0x1f, 0x07, 0x68, 0x79, 0x91, 0xd7, 0x24, 0x09, 0x89, + 0xe2, 0x92, 0xf3, 0x70, 0xdf, 0xe3, 0x23, 0x17, 0x97, 0xef, 0x9e, 0xfd, 0xba, 0xa4, 0x39, 0x8b, + 0xc4, 0x27, 0x07, 0x05, 0x8a, 0xb1, 0xc6, 0x12, 0xbd, 0x06, 0xc3, 0x5e, 0x94, 0xf8, 0x5b, 0x5e, + 0x25, 0x89, 0x4b, 0x05, 0xc6, 0xff, 0xd9, 0xbb, 0xe7, 0x3f, 0x23, 0x48, 0xce, 0x9e, 0x14, 0xec, + 0x87, 0x25, 0x24, 0xc6, 0x29, 0x3f, 0xf7, 0xb7, 0xfa, 0x61, 0x64, 0x26, 0x4a, 0x16, 0xe7, 0xca, + 0x89, 0x97, 0xb4, 0x63, 0xf4, 0xbb, 0x0e, 0x9c, 0x8a, 0xf9, 0xb0, 0xf9, 0x24, 0x5e, 0x8f, 0xc2, + 0x0a, 0x89, 0x63, 0x52, 0x15, 0xe3, 0xb2, 0x65, 0xa5, 0x5d, 0x92, 0xd9, 0x74, 0xb9, 0x93, 0xd1, + 0xa5, 0x20, 0x89, 0x76, 0x67, 0x9f, 0x12, 0x6d, 0x3e, 0x95, 0x83, 0xf1, 0xe6, 0xdb, 0x53, 0x48, + 0x76, 0x85, 0x52, 0xe2, 0x9f, 0x18, 0xe7, 0xb5, 0x1a, 0x7d, 0xdd, 0x81, 0xd1, 0x56, 0x58, 0x8d, + 0x31, 0xa9, 0x84, 0xed, 0x16, 0xa9, 0x8a, 0xe1, 0xfd, 0x88, 0xdd, 0x6e, 0xac, 0x6b, 0x1c, 0x78, + 0xfb, 0x4f, 0x8b, 0xf6, 0x8f, 0xea, 0x45, 0xd8, 0x68, 0x0a, 0x7a, 0x06, 0x46, 0x83, 0x30, 0x29, + 0xb7, 0x48, 0xc5, 0xdf, 0xf2, 0x49, 0x95, 0x4d, 0xfc, 0xa1, 0xb4, 0xe6, 0x15, 0xad, 0x0c, 0x1b, + 0x98, 0x93, 0x0b, 0x50, 0xea, 0x36, 0x72, 0x68, 0x02, 0xfa, 0xb6, 0xc9, 0x2e, 0x17, 0x36, 0x98, + 0xfe, 0x8b, 0x4e, 0x4b, 0x01, 0x44, 0x97, 0xf1, 0x90, 0x90, 0x2c, 0xef, 0x2d, 0x3c, 0xe3, 0x4c, + 0x7e, 0x00, 0x4e, 0x76, 0x34, 0xfd, 0x20, 0x04, 0xdc, 0xef, 0x0f, 0xc0, 0x90, 0xfc, 0x14, 0xe8, + 0x61, 0xe8, 0x0f, 0xbc, 0xa6, 0x94, 0x73, 0xa3, 0xa2, 0x1f, 0xfd, 0x57, 0xbc, 0x26, 0x5d, 0xe1, + 0x5e, 0x93, 0x50, 0x8c, 0x96, 0x97, 0xd4, 0x19, 0x1d, 0x0d, 0x63, 0xdd, 0x4b, 0xea, 0x98, 0x95, + 0xa0, 0x07, 0xa1, 0xbf, 0x19, 0x56, 0x09, 0x1b, 0x8b, 0x22, 0x97, 0x10, 0xab, 0x61, 0x95, 0x60, + 0x06, 0xa5, 0xf5, 0xb7, 0xa2, 0xb0, 0x59, 0xea, 0x37, 0xeb, 0x2f, 0x44, 0x61, 0x13, 0xb3, 0x12, + 0xf4, 0x35, 0x07, 0x26, 0xe4, 0xdc, 0x5e, 0x09, 0x2b, 0x5e, 0xe2, 0x87, 0x41, 0xa9, 0xc8, 0x24, + 0x0a, 0xb6, 0xb7, 0xa4, 0x24, 0xe5, 0xd9, 0x92, 0x68, 0xc2, 0x44, 0xb6, 0x04, 0x77, 0xb4, 0x02, + 0x5d, 0x04, 0xa8, 0x35, 0xc2, 0x4d, 0xaf, 0x41, 0x07, 0xa4, 0x34, 0xc0, 0xba, 0xa0, 0x24, 0xc3, + 0xa2, 0x2a, 0xc1, 0x1a, 0x16, 0xba, 0x09, 0x83, 0x1e, 0x97, 0xfe, 0xa5, 0x41, 0xd6, 0x89, 0xe7, + 0x6c, 0x74, 0xc2, 0xd8, 0x4e, 0x66, 0x47, 0x6e, 0xed, 0x4d, 0x0d, 0x0a, 0x20, 0x96, 0xec, 0xd0, + 0x93, 0x30, 0x14, 0xb6, 0x68, 0xbb, 0xbd, 0x46, 0x69, 0x88, 0x4d, 0xcc, 0x09, 0xd1, 0xd6, 0xa1, + 0x35, 0x01, 0xc7, 0x0a, 0x03, 0x3d, 0x01, 0x83, 0x71, 0x7b, 0x93, 0x7e, 0xc7, 0xd2, 0x30, 0xeb, + 0xd8, 0x09, 0x81, 0x3c, 0x58, 0xe6, 0x60, 0x2c, 0xcb, 0xd1, 0x7b, 0x60, 0x24, 0x22, 0x95, 0x76, + 0x14, 0x13, 0xfa, 0x61, 0x4b, 0xc0, 0x68, 0x9f, 0x12, 0xe8, 0x23, 0x38, 0x2d, 0xc2, 0x3a, 0x1e, + 0x7a, 0x3f, 0x8c, 0xd3, 0x0f, 0x7c, 0xe9, 0x66, 0x2b, 0x22, 0x71, 0x4c, 0xbf, 0xea, 0x08, 0x63, + 0x74, 0x56, 0xd4, 0x1c, 0x5f, 0x30, 0x4a, 0x71, 0x06, 0x1b, 0xbd, 0x0e, 0xe0, 0x29, 0x99, 0x51, + 0x1a, 0x65, 0x83, 0xb9, 0x62, 0x6f, 0x46, 0x2c, 0xce, 0xcd, 0x8e, 0xd3, 0xef, 0x98, 0xfe, 0xc6, + 0x1a, 0x3f, 0x3a, 0x3e, 0x55, 0xd2, 0x20, 0x09, 0xa9, 0x96, 0xc6, 0x58, 0x87, 0xd5, 0xf8, 0xcc, + 0x73, 0x30, 0x96, 0xe5, 0xee, 0xdf, 0x2d, 0x80, 0x46, 0x05, 0xcd, 0xc2, 0x90, 0x90, 0x6b, 0x62, + 0x49, 0xce, 0x3e, 0x26, 0xbf, 0x83, 0xfc, 0x82, 0xb7, 0xf7, 0x72, 0xe5, 0xa1, 0xaa, 0x87, 0xde, + 0x80, 0x91, 0x56, 0x58, 0x5d, 0x25, 0x89, 0x57, 0xf5, 0x12, 0x4f, 0xec, 0xe6, 0x16, 0x76, 0x18, + 0x49, 0x71, 0xf6, 0x04, 0xfd, 0x74, 0xeb, 0x29, 0x0b, 0xac, 0xf3, 0x43, 0xcf, 0x02, 0x8a, 0x49, + 0xb4, 0xe3, 0x57, 0xc8, 0x4c, 0xa5, 0x42, 0x55, 0x22, 0xb6, 0x00, 0xfa, 0x58, 0x67, 0x26, 0x45, + 0x67, 0x50, 0xb9, 0x03, 0x03, 0xe7, 0xd4, 0x72, 0x7f, 0x50, 0x80, 0x71, 0xad, 0xaf, 0x2d, 0x52, + 0x41, 0x6f, 0x39, 0x70, 0x42, 0x6d, 0x67, 0xb3, 0xbb, 0x57, 0xe8, 0xac, 0xe2, 0x9b, 0x15, 0xb1, + 0xf9, 0x7d, 0x29, 0x2f, 0xf5, 0x53, 0xf0, 0xe1, 0xb2, 0xfe, 0x9c, 0xe8, 0xc3, 0x89, 0x4c, 0x29, + 0xce, 0x36, 0x6b, 0xf2, 0xab, 0x0e, 0x9c, 0xce, 0x23, 0x91, 0x23, 0x73, 0xeb, 0xba, 0xcc, 0xb5, + 0x2a, 0xbc, 0x28, 0x57, 0xda, 0x19, 0x5d, 0x8e, 0xff, 0xff, 0x02, 0x4c, 0xe8, 0x53, 0x88, 0x69, + 0x02, 0xff, 0xdc, 0x81, 0x33, 0xb2, 0x07, 0x98, 0xc4, 0xed, 0x46, 0x66, 0x78, 0x9b, 0x56, 0x87, + 0x97, 0xef, 0xa4, 0x33, 0x79, 0xfc, 0xf8, 0x30, 0x3f, 0x24, 0x86, 0xf9, 0x4c, 0x2e, 0x0e, 0xce, + 0x6f, 0xea, 0xe4, 0xb7, 0x1d, 0x98, 0xec, 0x4e, 0x34, 0x67, 0xe0, 0x5b, 0xe6, 0xc0, 0xbf, 0x60, + 0xaf, 0x93, 0x9c, 0x3d, 0x1b, 0x7e, 0xd6, 0x59, 0xfd, 0x03, 0xfc, 0xfa, 0x10, 0x74, 0xec, 0x21, + 0xe8, 0x29, 0x18, 0x11, 0xe2, 0x78, 0x25, 0xac, 0xc5, 0xac, 0x91, 0x43, 0x7c, 0xad, 0xcd, 0xa4, + 0x60, 0xac, 0xe3, 0xa0, 0x2a, 0x14, 0xe2, 0xa7, 0x45, 0xd3, 0x2d, 0x88, 0xb7, 0xf2, 0xd3, 0x4a, + 0x8b, 0x1c, 0xb8, 0xb5, 0x37, 0x55, 0x28, 0x3f, 0x8d, 0x0b, 0xf1, 0xd3, 0x54, 0x53, 0xaf, 0xf9, + 0x89, 0x3d, 0x4d, 0x7d, 0xd1, 0x4f, 0x14, 0x1f, 0xa6, 0xa9, 0x2f, 0xfa, 0x09, 0xa6, 0x2c, 0xe8, + 0x09, 0xa4, 0x9e, 0x24, 0x2d, 0xb6, 0xe3, 0x5b, 0x39, 0x81, 0x5c, 0xde, 0xd8, 0x58, 0x57, 0xbc, + 0x98, 0x7e, 0x41, 0x21, 0x98, 0x71, 0x41, 0x9f, 0x73, 0xe8, 0x88, 0xf3, 0xc2, 0x30, 0xda, 0x15, + 0x8a, 0xc3, 0x55, 0x7b, 0x53, 0x20, 0x8c, 0x76, 0x15, 0x73, 0xf1, 0x21, 0x55, 0x01, 0xd6, 0x59, + 0xb3, 0x8e, 0x57, 0xb7, 0x62, 0xa6, 0x27, 0xd8, 0xe9, 0xf8, 0xfc, 0x42, 0x39, 0xd3, 0xf1, 0xf9, + 0x85, 0x32, 0x66, 0x5c, 0xe8, 0x07, 0x8d, 0xbc, 0x1b, 0x42, 0xc7, 0xb0, 0xf0, 0x41, 0xb1, 0x77, + 0xc3, 0xfc, 0xa0, 0xd8, 0xbb, 0x81, 0x29, 0x0b, 0xca, 0x29, 0x8c, 0x63, 0xa6, 0x52, 0x58, 0xe1, + 0xb4, 0x56, 0x2e, 0x9b, 0x9c, 0xd6, 0xca, 0x65, 0x4c, 0x59, 0xb0, 0x49, 0x5a, 0x89, 0x99, 0x3e, + 0x62, 0x67, 0x92, 0xce, 0x65, 0x38, 0x2d, 0xce, 0x95, 0x31, 0x65, 0x41, 0x45, 0x86, 0xf7, 0x6a, + 0x3b, 0xe2, 0xca, 0xcc, 0xc8, 0xc5, 0x35, 0x0b, 0xf3, 0x85, 0x92, 0x53, 0xdc, 0x86, 0x6f, 0xed, + 0x4d, 0x15, 0x19, 0x08, 0x73, 0x46, 0xee, 0xef, 0xf4, 0xa5, 0xe2, 0x42, 0xca, 0x73, 0xf4, 0xcb, + 0x6c, 0x23, 0x14, 0xb2, 0x40, 0xa8, 0xbe, 0xce, 0x91, 0xa9, 0xbe, 0xa7, 0xf8, 0x8e, 0x67, 0xb0, + 0xc3, 0x59, 0xfe, 0xe8, 0x4b, 0x4e, 0xe7, 0xd9, 0xd6, 0xb3, 0xbf, 0x97, 0xa5, 0x1b, 0x33, 0xdf, + 0x2b, 0xf6, 0x3d, 0xf2, 0x4e, 0x7e, 0xce, 0x49, 0x95, 0x88, 0xb8, 0xdb, 0x3e, 0xf0, 0x51, 0x73, + 0x1f, 0xb0, 0x78, 0x20, 0xd7, 0xe5, 0xfe, 0xe7, 0x1d, 0x18, 0x93, 0x70, 0xaa, 0x1e, 0xc7, 0xe8, + 0x26, 0x0c, 0xc9, 0x96, 0x8a, 0xaf, 0x67, 0xd3, 0x16, 0xa0, 0x94, 0x78, 0xd5, 0x18, 0xc5, 0xcd, + 0x7d, 0x6b, 0x00, 0x50, 0xba, 0x57, 0xb5, 0xc2, 0xd8, 0x67, 0x92, 0xe8, 0x10, 0xbb, 0x50, 0xa0, + 0xed, 0x42, 0xd7, 0x6c, 0xee, 0x42, 0x69, 0xb3, 0x8c, 0xfd, 0xe8, 0x4b, 0x19, 0xb9, 0xcd, 0x37, + 0xa6, 0x8f, 0x1c, 0x89, 0xdc, 0xd6, 0x9a, 0xb0, 0xbf, 0x04, 0xdf, 0x11, 0x12, 0x9c, 0x6f, 0x5d, + 0x1f, 0xb2, 0x2b, 0xc1, 0xb5, 0x56, 0x64, 0x65, 0x79, 0xc4, 0x25, 0x2c, 0xdf, 0xbb, 0xae, 0x5b, + 0x95, 0xb0, 0x1a, 0x57, 0x53, 0xd6, 0x46, 0x5c, 0xd6, 0x0e, 0xd8, 0xe2, 0xa9, 0xc9, 0xda, 0x2c, + 0x4f, 0x25, 0x75, 0x5f, 0x95, 0x52, 0x97, 0xef, 0x5a, 0xcf, 0x5b, 0x96, 0xba, 0x1a, 0xdf, 0x4e, + 0xf9, 0xfb, 0x0a, 0x9c, 0xe9, 0xc4, 0xc3, 0x64, 0x0b, 0x5d, 0x80, 0xe1, 0x4a, 0x18, 0x6c, 0xf9, + 0xb5, 0x55, 0xaf, 0x25, 0xce, 0x6b, 0x4a, 0x16, 0xcd, 0xc9, 0x02, 0x9c, 0xe2, 0xa0, 0x87, 0xb8, + 0xe0, 0xe1, 0x16, 0x91, 0x11, 0x81, 0xda, 0xb7, 0x4c, 0x76, 0x99, 0x14, 0x7a, 0xef, 0xd0, 0xd7, + 0xbe, 0x39, 0x75, 0xdf, 0x27, 0xfe, 0xe0, 0xe1, 0xfb, 0xdc, 0xdf, 0xeb, 0x83, 0x07, 0x72, 0x79, + 0x0a, 0x6d, 0xfd, 0xd7, 0x0d, 0x6d, 0x5d, 0x2b, 0x17, 0x52, 0xe4, 0xba, 0x4d, 0x45, 0x56, 0x23, + 0x9f, 0xa7, 0x97, 0x6b, 0xc5, 0x38, 0xbf, 0x51, 0x74, 0xa0, 0x02, 0xaf, 0x49, 0xe2, 0x96, 0x57, + 0x21, 0xa2, 0xf7, 0x6a, 0xa0, 0xae, 0xc8, 0x02, 0x9c, 0xe2, 0xf0, 0x23, 0xf4, 0x96, 0xd7, 0x6e, + 0x24, 0xc2, 0x50, 0xa6, 0x1d, 0xa1, 0x19, 0x18, 0xcb, 0x72, 0xf4, 0xf7, 0x1c, 0x40, 0x9d, 0x5c, + 0xc5, 0x42, 0xdc, 0x38, 0x8a, 0x71, 0x98, 0x3d, 0x7b, 0x4b, 0x3b, 0x84, 0x6b, 0x3d, 0xcd, 0x69, + 0x87, 0xf6, 0x4d, 0x3f, 0x96, 0xee, 0x43, 0xfc, 0x70, 0xd0, 0x83, 0x0d, 0x8d, 0x99, 0x5a, 0x2a, + 0x15, 0x12, 0xc7, 0xdc, 0x1c, 0xa7, 0x9b, 0x5a, 0x18, 0x18, 0xcb, 0x72, 0x34, 0x05, 0x45, 0x12, + 0x45, 0x61, 0x24, 0xce, 0xda, 0x6c, 0x1a, 0x5f, 0xa2, 0x00, 0xcc, 0xe1, 0xee, 0x8f, 0x0b, 0x50, + 0xea, 0x76, 0x3a, 0x41, 0xbf, 0xa9, 0x9d, 0xab, 0xc5, 0xc9, 0x49, 0x1c, 0xfc, 0xc2, 0xa3, 0x3b, + 0x13, 0x65, 0x0f, 0x80, 0x5d, 0x4e, 0xd8, 0xa2, 0x14, 0x67, 0x1b, 0x38, 0xf9, 0x65, 0xed, 0x84, + 0xad, 0x93, 0xc8, 0xd9, 0xe0, 0xb7, 0xcc, 0x0d, 0x7e, 0xdd, 0x76, 0xa7, 0xf4, 0x6d, 0xfe, 0x0f, + 0x8b, 0x70, 0x4a, 0x96, 0x96, 0x09, 0xdd, 0x2a, 0x9f, 0x6b, 0x93, 0x68, 0x17, 0xfd, 0xbe, 0x03, + 0xa7, 0xbd, 0xac, 0xe9, 0xc6, 0x27, 0x47, 0x30, 0xd0, 0x1a, 0xd7, 0xe9, 0x99, 0x1c, 0x8e, 0x7c, + 0xa0, 0x2f, 0x8a, 0x81, 0x3e, 0x9d, 0x87, 0xd2, 0xc5, 0xee, 0x9e, 0xdb, 0x01, 0xf4, 0x0c, 0x8c, + 0x4a, 0x38, 0x33, 0xf7, 0xf0, 0x25, 0xae, 0x8c, 0xdb, 0x33, 0x5a, 0x19, 0x36, 0x30, 0x69, 0xcd, + 0x84, 0x34, 0x5b, 0x0d, 0x2f, 0x21, 0x9a, 0xa1, 0x48, 0xd5, 0xdc, 0xd0, 0xca, 0xb0, 0x81, 0x89, + 0x1e, 0x83, 0x81, 0x20, 0xac, 0x92, 0xa5, 0xaa, 0x30, 0x10, 0x8f, 0x8b, 0x3a, 0x03, 0x57, 0x18, + 0x14, 0x8b, 0x52, 0xf4, 0x68, 0x6a, 0x8d, 0x2b, 0xb2, 0x25, 0x34, 0x92, 0x67, 0x89, 0x43, 0xff, + 0xc0, 0x81, 0x61, 0x5a, 0x63, 0x63, 0xb7, 0x45, 0xe8, 0xde, 0x46, 0xbf, 0x48, 0xf5, 0x68, 0xbe, + 0xc8, 0x15, 0xc9, 0xc6, 0x34, 0x75, 0x0c, 0x2b, 0xf8, 0x9b, 0x6f, 0x4f, 0x0d, 0xc9, 0x1f, 0x38, + 0x6d, 0xd5, 0xe4, 0x22, 0xdc, 0xdf, 0xf5, 0x6b, 0x1e, 0xc8, 0x15, 0xf0, 0x37, 0x60, 0xdc, 0x6c, + 0xc4, 0x81, 0xfc, 0x00, 0xff, 0x4c, 0x5b, 0x76, 0xbc, 0x5f, 0x42, 0x9e, 0xdd, 0x33, 0x6d, 0x56, + 0x4d, 0x86, 0x79, 0x31, 0xf5, 0xcc, 0xc9, 0x30, 0x2f, 0x26, 0xc3, 0xbc, 0xfb, 0xbb, 0x4e, 0xba, + 0x34, 0x35, 0x35, 0x8f, 0x6e, 0xcc, 0xed, 0xa8, 0x21, 0x04, 0xb1, 0xda, 0x98, 0xaf, 0xe2, 0x15, + 0x4c, 0xe1, 0xe8, 0xcb, 0x9a, 0x74, 0xa4, 0xd5, 0xda, 0xc2, 0xad, 0x61, 0xc9, 0x44, 0x6f, 0x10, + 0xee, 0x94, 0x7f, 0xa2, 0x00, 0x67, 0x9b, 0xe0, 0x7e, 0xa9, 0x00, 0x0f, 0xed, 0xab, 0xb4, 0xe6, + 0x36, 0xdc, 0xb9, 0xe7, 0x0d, 0xa7, 0xdb, 0x5a, 0x44, 0x5a, 0xe1, 0x55, 0xbc, 0x22, 0xbe, 0x97, + 0xda, 0xd6, 0x30, 0x07, 0x63, 0x59, 0x4e, 0x55, 0x87, 0x6d, 0xb2, 0xbb, 0x10, 0x46, 0x4d, 0x2f, + 0x11, 0xd2, 0x41, 0xa9, 0x0e, 0xcb, 0xb2, 0x00, 0xa7, 0x38, 0xee, 0xef, 0x3b, 0x90, 0x6d, 0x00, + 0xf2, 0x60, 0xbc, 0x1d, 0x93, 0x88, 0x6e, 0xa9, 0x65, 0x52, 0x89, 0x88, 0x9c, 0x9e, 0x8f, 0x4e, + 0x73, 0x6f, 0x3f, 0xed, 0xe1, 0x74, 0x25, 0x8c, 0xc8, 0xf4, 0xce, 0x53, 0xd3, 0x1c, 0x63, 0x99, + 0xec, 0x96, 0x49, 0x83, 0x50, 0x1a, 0xb3, 0xe8, 0xd6, 0xde, 0xd4, 0xf8, 0x55, 0x83, 0x00, 0xce, + 0x10, 0xa4, 0x2c, 0x5a, 0x5e, 0x1c, 0xdf, 0x08, 0xa3, 0xaa, 0x60, 0x51, 0x38, 0x30, 0x8b, 0x75, + 0x83, 0x00, 0xce, 0x10, 0x74, 0x7f, 0x40, 0x8f, 0x8f, 0xba, 0xd6, 0x8a, 0xbe, 0x49, 0x75, 0x1f, + 0x0a, 0x99, 0x6d, 0x84, 0x9b, 0x73, 0x61, 0x90, 0x78, 0x7e, 0x40, 0x64, 0xb0, 0xc0, 0x86, 0x25, + 0x1d, 0xd9, 0xa0, 0x9d, 0xda, 0xf0, 0x3b, 0xcb, 0x70, 0x4e, 0x5b, 0xa8, 0x8e, 0xb3, 0xd9, 0x08, + 0x37, 0xb3, 0x5e, 0x40, 0x8a, 0x84, 0x59, 0x89, 0xfb, 0x13, 0x07, 0xce, 0x75, 0x51, 0xc6, 0xd1, + 0x57, 0x1d, 0x18, 0xdb, 0xfc, 0xa9, 0xe8, 0x9b, 0xd9, 0x0c, 0xf4, 0x7e, 0x18, 0xa7, 0x00, 0xba, + 0x13, 0x89, 0xb9, 0x59, 0x30, 0x3d, 0x54, 0xb3, 0x46, 0x29, 0xce, 0x60, 0xbb, 0xbf, 0x52, 0x80, + 0x1c, 0x2e, 0xe8, 0x49, 0x18, 0x22, 0x41, 0xb5, 0x15, 0xfa, 0x41, 0x22, 0x84, 0x91, 0x92, 0x7a, + 0x97, 0x04, 0x1c, 0x2b, 0x0c, 0x71, 0xfe, 0x10, 0x03, 0x53, 0xe8, 0x38, 0x7f, 0x88, 0x96, 0xa7, + 0x38, 0xa8, 0x06, 0x13, 0x1e, 0xf7, 0xaf, 0xb0, 0xb9, 0xc7, 0xa6, 0x69, 0xdf, 0x41, 0xa6, 0xe9, + 0x69, 0xe6, 0xfe, 0xcc, 0x90, 0xc0, 0x1d, 0x44, 0xd1, 0x7b, 0x60, 0xa4, 0x1d, 0x93, 0xf2, 0xfc, + 0xf2, 0x5c, 0x44, 0xaa, 0xfc, 0x54, 0xac, 0xf9, 0xfd, 0xae, 0xa6, 0x45, 0x58, 0xc7, 0x73, 0xff, + 0x85, 0x03, 0x83, 0xb3, 0x5e, 0x65, 0x3b, 0xdc, 0xda, 0xa2, 0x43, 0x51, 0x6d, 0x47, 0xa9, 0x61, + 0x4b, 0x1b, 0x8a, 0x79, 0x01, 0xc7, 0x0a, 0x03, 0x6d, 0xc0, 0x00, 0x5f, 0xf0, 0x62, 0xd9, 0xfd, + 0x9c, 0xd6, 0x1f, 0x15, 0xc7, 0xc3, 0xa6, 0x43, 0x3b, 0xf1, 0x1b, 0xd3, 0x3c, 0x8e, 0x67, 0x7a, + 0x29, 0x48, 0xd6, 0xa2, 0x72, 0x12, 0xf9, 0x41, 0x6d, 0x16, 0xe8, 0x76, 0xb1, 0xc0, 0x68, 0x60, + 0x41, 0x8b, 0x76, 0xa3, 0xe9, 0xdd, 0x94, 0xec, 0x84, 0xf8, 0x51, 0xdd, 0x58, 0x4d, 0x8b, 0xb0, + 0x8e, 0xe7, 0xfe, 0x9e, 0x03, 0xc3, 0xb3, 0x5e, 0xec, 0x57, 0xfe, 0x02, 0x09, 0x9f, 0x0f, 0x43, + 0x71, 0xce, 0xab, 0xd4, 0x09, 0xba, 0x9a, 0x3d, 0xf4, 0x8e, 0x5c, 0x7c, 0x3c, 0x8f, 0x8d, 0x3a, + 0x00, 0xeb, 0x9c, 0xc6, 0xba, 0x1d, 0x8d, 0xdd, 0xb7, 0x1d, 0x18, 0x9f, 0x6b, 0xf8, 0x24, 0x48, + 0xe6, 0x48, 0x94, 0xb0, 0x81, 0xab, 0xc1, 0x44, 0x45, 0x41, 0x0e, 0x33, 0x74, 0x6c, 0xb6, 0xce, + 0x65, 0x48, 0xe0, 0x0e, 0xa2, 0xa8, 0x0a, 0x27, 0x38, 0x2c, 0x5d, 0x15, 0x07, 0x1a, 0x3f, 0x66, + 0x1d, 0x9d, 0x33, 0x29, 0xe0, 0x2c, 0x49, 0xf7, 0x8f, 0x0b, 0x70, 0x6e, 0xae, 0xd1, 0x8e, 0x13, + 0x12, 0x5d, 0x17, 0xd2, 0x48, 0xaa, 0xb7, 0xe8, 0xa3, 0x30, 0xd4, 0x94, 0x1e, 0x5b, 0xe7, 0x0e, + 0x13, 0x98, 0xc9, 0x33, 0x8a, 0x4d, 0x1b, 0xb3, 0xb6, 0xf9, 0x32, 0xa9, 0x24, 0xab, 0x24, 0xf1, + 0xd2, 0xf0, 0x82, 0x14, 0x86, 0x15, 0x55, 0xd4, 0x82, 0xfe, 0xb8, 0x45, 0x2a, 0xf6, 0xa2, 0xbb, + 0x64, 0x1f, 0xca, 0x2d, 0x52, 0x49, 0xe5, 0x3a, 0xf3, 0x35, 0x32, 0x4e, 0xe8, 0x13, 0x0e, 0x0c, + 0xc4, 0xec, 0x9c, 0x27, 0x64, 0xcc, 0x87, 0xec, 0x31, 0x95, 0x03, 0xc7, 0xcf, 0x91, 0xa9, 0xba, + 0x27, 0x7c, 0x6d, 0x82, 0xaf, 0xfb, 0x7f, 0x1c, 0x78, 0xa0, 0xcb, 0x90, 0xaf, 0xf8, 0x71, 0x82, + 0x5e, 0xea, 0x18, 0xf6, 0xe9, 0xde, 0x86, 0x9d, 0xd6, 0x66, 0x83, 0xae, 0x64, 0x92, 0x84, 0x68, + 0x43, 0xfe, 0x31, 0x28, 0xfa, 0x09, 0x69, 0x4a, 0x4b, 0xb8, 0x05, 0x9b, 0x55, 0x97, 0xbe, 0xcc, + 0x8e, 0xc9, 0x30, 0xc3, 0x25, 0xca, 0x0f, 0x73, 0xb6, 0xee, 0x36, 0x0c, 0xcc, 0x85, 0x8d, 0x76, + 0x33, 0xe8, 0x2d, 0x58, 0x27, 0xd9, 0x6d, 0x91, 0xec, 0x36, 0xcd, 0x4e, 0x20, 0xac, 0x44, 0xda, + 0xae, 0xfa, 0xf2, 0x6d, 0x57, 0xee, 0xbf, 0x74, 0x80, 0x2e, 0xec, 0xaa, 0x2f, 0x9c, 0x99, 0x9c, + 0x1c, 0x67, 0xf8, 0x90, 0x4e, 0xee, 0xf6, 0xde, 0xd4, 0x98, 0x42, 0xd4, 0xe8, 0x7f, 0x58, 0xcd, + 0x16, 0xde, 0x86, 0x05, 0xf3, 0x9b, 0xde, 0xde, 0x9b, 0xea, 0x29, 0x72, 0x74, 0x5a, 0xd1, 0x36, + 0xe7, 0x02, 0xd5, 0x39, 0x9b, 0x24, 0x8e, 0xbd, 0x9a, 0x3c, 0x64, 0x2a, 0x9d, 0x73, 0x95, 0x83, + 0xb1, 0x2c, 0x77, 0xbf, 0xe2, 0xc0, 0x98, 0xda, 0x3f, 0xe9, 0x09, 0x02, 0x5d, 0xd1, 0x77, 0x5a, + 0x3e, 0x53, 0x1e, 0xea, 0x22, 0xf4, 0x84, 0x2e, 0xb1, 0xff, 0x46, 0xfc, 0x6e, 0x18, 0xad, 0x92, + 0x16, 0x09, 0xaa, 0x24, 0xa8, 0xf8, 0x84, 0xcf, 0x90, 0xe1, 0xd9, 0x09, 0x7a, 0xe4, 0x9d, 0xd7, + 0xe0, 0xd8, 0xc0, 0x72, 0xbf, 0xe5, 0xc0, 0xfd, 0x8a, 0x5c, 0x99, 0x24, 0x98, 0x24, 0xd1, 0xae, + 0x8a, 0x14, 0x3d, 0xd8, 0x86, 0x79, 0x9d, 0xaa, 0xe0, 0x49, 0xc4, 0x99, 0x1f, 0x6e, 0xc7, 0x1c, + 0xe1, 0x0a, 0x3b, 0x23, 0x82, 0x25, 0x35, 0xf7, 0x97, 0xfa, 0xe0, 0xb4, 0xde, 0x48, 0x25, 0xe3, + 0x3e, 0xe9, 0x00, 0xa8, 0x11, 0xa0, 0x3a, 0x41, 0x9f, 0x1d, 0xf7, 0x99, 0xf1, 0xa5, 0x52, 0x29, + 0xa8, 0xc0, 0x31, 0xd6, 0xd8, 0xa2, 0xe7, 0x61, 0x74, 0x87, 0x2e, 0x0a, 0xb2, 0x4a, 0x35, 0x16, + 0x2a, 0x9a, 0x68, 0x33, 0xa6, 0xf2, 0x3e, 0xe6, 0xb5, 0x14, 0x2f, 0xb5, 0x48, 0x68, 0xc0, 0x18, + 0x1b, 0xa4, 0xe8, 0x61, 0x6b, 0x2c, 0xd2, 0x3f, 0x89, 0x30, 0xcb, 0xbf, 0x68, 0xb1, 0x8f, 0xd9, + 0xaf, 0x3e, 0x7b, 0xf2, 0xd6, 0xde, 0xd4, 0x98, 0x01, 0xc2, 0x66, 0x23, 0xdc, 0xe7, 0x81, 0x8d, + 0x85, 0x1f, 0xb4, 0xc9, 0x5a, 0x80, 0x1e, 0x91, 0x66, 0x42, 0xee, 0xda, 0x51, 0x92, 0x43, 0x37, + 0x15, 0xd2, 0xe3, 0xf4, 0x96, 0xe7, 0x37, 0x58, 0x04, 0x25, 0xc5, 0x52, 0xf2, 0x75, 0x81, 0x41, + 0xb1, 0x28, 0x75, 0xa7, 0x61, 0x70, 0x8e, 0xf6, 0x9d, 0x44, 0x94, 0xae, 0x1e, 0xf8, 0x3c, 0x66, + 0x04, 0x3e, 0xcb, 0x00, 0xe7, 0x0d, 0x38, 0x33, 0x17, 0x11, 0x2a, 0xb7, 0x9f, 0x9e, 0x6d, 0x57, + 0xb6, 0x49, 0xc2, 0xa3, 0xcb, 0x62, 0xf4, 0x3e, 0x18, 0x0b, 0xd9, 0xae, 0xb5, 0x12, 0x56, 0xb6, + 0xfd, 0xa0, 0x26, 0xac, 0xbe, 0x67, 0x04, 0x95, 0xb1, 0x35, 0xbd, 0x10, 0x9b, 0xb8, 0xee, 0x7f, + 0x2c, 0xc0, 0xe8, 0x5c, 0x14, 0x06, 0x52, 0x2c, 0x1e, 0xc3, 0x6e, 0x9a, 0x18, 0xbb, 0xa9, 0x05, + 0x8f, 0xab, 0xde, 0xfe, 0xae, 0x3b, 0xea, 0xeb, 0x99, 0x0d, 0x75, 0xc3, 0x32, 0xdf, 0xfd, 0x37, + 0xd3, 0xff, 0xe4, 0xc0, 0x84, 0x8e, 0x7e, 0x0c, 0x3b, 0x68, 0x6c, 0xee, 0xa0, 0x57, 0xec, 0xf6, + 0xb7, 0xcb, 0xb6, 0xf9, 0xf6, 0xa0, 0xd9, 0x4f, 0xe6, 0x6e, 0xff, 0x9a, 0x03, 0xa3, 0x37, 0x34, + 0x80, 0xe8, 0xac, 0x6d, 0x3d, 0xea, 0x1d, 0x52, 0xcc, 0xe8, 0xd0, 0xdb, 0x99, 0xdf, 0xd8, 0x68, + 0x09, 0x95, 0xfb, 0x71, 0xa5, 0x4e, 0xaa, 0xed, 0x86, 0xdc, 0xbe, 0xd5, 0x90, 0x96, 0x05, 0x1c, + 0x2b, 0x0c, 0xf4, 0x12, 0x9c, 0xac, 0x84, 0x41, 0xa5, 0x1d, 0x45, 0x24, 0xa8, 0xec, 0xae, 0xb3, + 0x6b, 0x1a, 0x62, 0x43, 0x9c, 0x16, 0xd5, 0x4e, 0xce, 0x65, 0x11, 0x6e, 0xe7, 0x01, 0x71, 0x27, + 0x21, 0xee, 0xaf, 0x88, 0xe9, 0x96, 0x25, 0xce, 0x7c, 0x9a, 0xbf, 0x82, 0x81, 0xb1, 0x2c, 0x47, + 0x57, 0xe1, 0x5c, 0x9c, 0x78, 0x51, 0xe2, 0x07, 0xb5, 0x79, 0xe2, 0x55, 0x1b, 0x7e, 0x40, 0x4f, + 0x33, 0x61, 0x50, 0xe5, 0xde, 0xcc, 0xbe, 0xd9, 0x07, 0x6e, 0xed, 0x4d, 0x9d, 0x2b, 0xe7, 0xa3, + 0xe0, 0x6e, 0x75, 0xd1, 0x87, 0x61, 0x52, 0x78, 0x44, 0xb6, 0xda, 0x8d, 0x67, 0xc3, 0xcd, 0xf8, + 0xb2, 0x1f, 0x27, 0x61, 0xb4, 0xbb, 0xe2, 0x37, 0xfd, 0x84, 0xf9, 0x2c, 0x8b, 0xb3, 0xe7, 0x6f, + 0xed, 0x4d, 0x4d, 0x96, 0xbb, 0x62, 0xe1, 0x7d, 0x28, 0x20, 0x0c, 0x67, 0xb9, 0xf0, 0xeb, 0xa0, + 0x3d, 0xc8, 0x68, 0x4f, 0xde, 0xda, 0x9b, 0x3a, 0xbb, 0x90, 0x8b, 0x81, 0xbb, 0xd4, 0xa4, 0x5f, + 0x30, 0xf1, 0x9b, 0xe4, 0xd5, 0x30, 0x20, 0x2c, 0x56, 0x46, 0xfb, 0x82, 0x1b, 0x02, 0x8e, 0x15, + 0x06, 0x7a, 0x39, 0x9d, 0x89, 0x74, 0xb9, 0x88, 0x98, 0x97, 0x83, 0x4b, 0x38, 0x76, 0x3a, 0xba, + 0xae, 0x51, 0x62, 0xc1, 0x9c, 0x06, 0x6d, 0xf4, 0x29, 0x07, 0x46, 0xe3, 0x24, 0x54, 0x57, 0x2b, + 0x44, 0xd0, 0x8b, 0x85, 0x69, 0x5f, 0xd6, 0xa8, 0x72, 0xc5, 0x47, 0x87, 0x60, 0x83, 0x2b, 0x7a, + 0x27, 0x0c, 0xcb, 0x09, 0x1c, 0x97, 0x46, 0x98, 0xae, 0xc4, 0x4e, 0x92, 0x72, 0x7e, 0xc7, 0x38, + 0x2d, 0xa7, 0xaa, 0xec, 0x8d, 0x3a, 0x09, 0x58, 0xd8, 0xaf, 0xa6, 0xca, 0x5e, 0xaf, 0x93, 0x00, + 0xb3, 0x12, 0xf7, 0xc7, 0x7d, 0x80, 0x3a, 0x05, 0x1f, 0x5a, 0x86, 0x01, 0xaf, 0x92, 0xf8, 0x3b, + 0x32, 0xe4, 0xf1, 0x91, 0x3c, 0xa5, 0x80, 0x0f, 0x20, 0x26, 0x5b, 0x84, 0xce, 0x7b, 0x92, 0x4a, + 0xcb, 0x19, 0x56, 0x15, 0x0b, 0x12, 0x28, 0x84, 0x93, 0x0d, 0x2f, 0x4e, 0x64, 0x0b, 0xab, 0xf4, + 0x43, 0x8a, 0xed, 0xe2, 0x67, 0x7b, 0xfb, 0x54, 0xb4, 0xc6, 0xec, 0x19, 0xba, 0x1e, 0x57, 0xb2, + 0x84, 0x70, 0x27, 0x6d, 0xf4, 0x71, 0xa6, 0x5d, 0x71, 0xd5, 0x57, 0xaa, 0x35, 0xcb, 0x56, 0x34, + 0x0f, 0x4e, 0xd3, 0xd0, 0xac, 0x04, 0x1b, 0xac, 0xb1, 0x44, 0x17, 0x60, 0x98, 0xad, 0x1b, 0x52, + 0x25, 0x7c, 0xf5, 0xf7, 0xa5, 0x4a, 0x70, 0x59, 0x16, 0xe0, 0x14, 0x47, 0xd3, 0x32, 0xf8, 0x82, + 0xef, 0xa2, 0x65, 0xa0, 0x67, 0xa0, 0xd8, 0xaa, 0x7b, 0xb1, 0x0c, 0xa3, 0x77, 0xa5, 0xd4, 0x5e, + 0xa7, 0x40, 0x26, 0x9a, 0xb4, 0x6f, 0xc9, 0x80, 0x98, 0x57, 0x70, 0xff, 0x15, 0xc0, 0xe0, 0xfc, + 0xcc, 0xe2, 0x86, 0x17, 0x6f, 0xf7, 0x70, 0x06, 0xa2, 0xcb, 0x50, 0x28, 0xab, 0x59, 0x41, 0x2a, + 0x95, 0x58, 0xac, 0x30, 0x50, 0x00, 0x03, 0x7e, 0x40, 0x25, 0x4f, 0x69, 0xdc, 0x96, 0xab, 0x43, + 0x9d, 0xe7, 0x98, 0x2d, 0x6a, 0x89, 0x51, 0xc7, 0x82, 0x0b, 0x7a, 0x1d, 0x86, 0x3d, 0x79, 0x8b, + 0x49, 0xec, 0xff, 0xcb, 0x36, 0x6c, 0xf8, 0x82, 0xa4, 0x1e, 0x45, 0x25, 0x40, 0x38, 0x65, 0x48, + 0x0f, 0xf3, 0x23, 0xb2, 0xeb, 0x98, 0x6c, 0x09, 0xf7, 0xfa, 0xaa, 0xbd, 0x3e, 0x63, 0xb2, 0xc5, + 0x43, 0x6c, 0x34, 0x00, 0xd6, 0x59, 0x76, 0x9c, 0x99, 0x8a, 0xbd, 0x9c, 0x99, 0xd0, 0x0d, 0x18, + 0xbe, 0xe1, 0x27, 0x75, 0xb6, 0xc3, 0x0b, 0xb7, 0xde, 0xc2, 0xdd, 0xb7, 0x9a, 0x92, 0x4b, 0x47, + 0xec, 0xba, 0x64, 0x80, 0x53, 0x5e, 0x74, 0x39, 0xd0, 0x1f, 0xec, 0x16, 0x18, 0xdb, 0x1b, 0x86, + 0xcd, 0x0a, 0xac, 0x00, 0xa7, 0x38, 0x74, 0x88, 0x47, 0xe9, 0xaf, 0x32, 0x79, 0xa5, 0x4d, 0x45, + 0x8b, 0x08, 0x9b, 0xb4, 0x30, 0xaf, 0x24, 0x45, 0x3e, 0x58, 0xd7, 0x35, 0x1e, 0xd8, 0xe0, 0xa8, + 0x44, 0xe7, 0x70, 0x37, 0xd1, 0x89, 0x5e, 0xe7, 0x67, 0x38, 0x7e, 0x98, 0x10, 0xbb, 0xc1, 0x8a, + 0x9d, 0xf3, 0x0d, 0xa7, 0xc9, 0x6f, 0x56, 0xa4, 0xbf, 0xb1, 0xc6, 0x8f, 0x4a, 0x8c, 0x30, 0xb8, + 0x74, 0xd3, 0x4f, 0xc4, 0x7d, 0x10, 0x25, 0x31, 0xd6, 0x18, 0x14, 0x8b, 0x52, 0x1e, 0x3e, 0x42, + 0x27, 0x41, 0x2c, 0x76, 0x01, 0x2d, 0x7c, 0x84, 0x81, 0xb1, 0x2c, 0x47, 0x7f, 0xdf, 0x81, 0x62, + 0x3d, 0x0c, 0xb7, 0xe3, 0xd2, 0x18, 0x9b, 0x1c, 0x16, 0x74, 0x6a, 0x21, 0x71, 0xa6, 0x2f, 0x53, + 0xb2, 0xe6, 0x0d, 0xb7, 0x22, 0x83, 0xdd, 0xde, 0x9b, 0x1a, 0x5f, 0xf1, 0xb7, 0x48, 0x65, 0xb7, + 0xd2, 0x20, 0x0c, 0xf2, 0xe6, 0xdb, 0x1a, 0xe4, 0xd2, 0x0e, 0x09, 0x12, 0xcc, 0x5b, 0x35, 0xf9, + 0x79, 0x07, 0x20, 0x25, 0x94, 0xe3, 0xa7, 0x25, 0x66, 0x64, 0x83, 0x85, 0x03, 0xb5, 0xd1, 0x34, + 0xdd, 0xf1, 0xfb, 0x6f, 0x1c, 0x18, 0xa1, 0x9d, 0x93, 0x22, 0xf0, 0x31, 0x18, 0x48, 0xbc, 0xa8, + 0x46, 0xa4, 0xaf, 0x42, 0x7d, 0x8e, 0x0d, 0x06, 0xc5, 0xa2, 0x14, 0x05, 0x50, 0x4c, 0xbc, 0x78, + 0x5b, 0xaa, 0xf1, 0x4b, 0xd6, 0x86, 0x38, 0xd5, 0xe0, 0xe9, 0xaf, 0x18, 0x73, 0x36, 0xe8, 0x71, + 0x18, 0xa2, 0x5b, 0xc7, 0x82, 0x17, 0xcb, 0xf0, 0xa1, 0x51, 0x2a, 0xc4, 0x17, 0x04, 0x0c, 0xab, + 0x52, 0xf7, 0x57, 0x0a, 0xd0, 0x3f, 0xcf, 0x0f, 0x74, 0x03, 0x71, 0xd8, 0x8e, 0x2a, 0x44, 0x28, + 0xf6, 0x16, 0xe6, 0x34, 0xa5, 0x5b, 0x66, 0x34, 0xb5, 0x23, 0x15, 0xfb, 0x8d, 0x05, 0x2f, 0xf4, + 0x65, 0x07, 0xc6, 0x93, 0xc8, 0x0b, 0xe2, 0x2d, 0xe6, 0x15, 0xf2, 0xc3, 0x40, 0x0c, 0x91, 0x85, + 0x59, 0xb8, 0x61, 0xd0, 0x2d, 0x27, 0xa4, 0x95, 0x3a, 0xa7, 0xcc, 0x32, 0x9c, 0x69, 0x83, 0xfb, + 0xab, 0x0e, 0x40, 0xda, 0x7a, 0xf4, 0x39, 0x07, 0xc6, 0x3c, 0x3d, 0x6c, 0x55, 0x8c, 0xd1, 0x9a, + 0x3d, 0x17, 0x32, 0x23, 0xcb, 0x6d, 0x19, 0x06, 0x08, 0x9b, 0x8c, 0xdd, 0xf7, 0x40, 0x91, 0xad, + 0x0e, 0x76, 0xe8, 0x11, 0xe6, 0xf7, 0xac, 0xb1, 0x4b, 0x9a, 0xe5, 0xb1, 0xc2, 0x70, 0x5f, 0x82, + 0xf1, 0x4b, 0x37, 0x49, 0xa5, 0x9d, 0x84, 0x11, 0x77, 0x3e, 0x74, 0xb9, 0xa6, 0xe4, 0x1c, 0xea, + 0x9a, 0xd2, 0x77, 0x1d, 0x18, 0xd1, 0x62, 0x18, 0xe9, 0x4e, 0x5d, 0x9b, 0x2b, 0x73, 0x03, 0x87, + 0x18, 0xaa, 0x65, 0x2b, 0x51, 0x92, 0x9c, 0x64, 0xba, 0x8d, 0x28, 0x10, 0x4e, 0x19, 0xde, 0x21, + 0xc6, 0xd0, 0xfd, 0x1d, 0x07, 0xce, 0xe4, 0x06, 0x5c, 0xde, 0xe3, 0x66, 0x1b, 0x7e, 0xfe, 0x42, + 0x0f, 0x7e, 0xfe, 0xdf, 0x70, 0x20, 0xa5, 0x44, 0x45, 0xd1, 0x66, 0xda, 0x72, 0x4d, 0x14, 0x09, + 0x4e, 0xa2, 0x14, 0xbd, 0x0e, 0xe7, 0xcc, 0x2f, 0x78, 0x48, 0x97, 0x0f, 0x3f, 0x9c, 0xe6, 0x53, + 0xc2, 0xdd, 0x58, 0xb8, 0x5f, 0x77, 0xa0, 0xb8, 0xe8, 0xb5, 0x6b, 0xa4, 0x27, 0x73, 0x19, 0x95, + 0x63, 0x11, 0xf1, 0x1a, 0x89, 0x3c, 0x3a, 0x08, 0x39, 0x86, 0x05, 0x0c, 0xab, 0x52, 0x34, 0x03, + 0xc3, 0x61, 0x8b, 0x18, 0x6e, 0xca, 0x47, 0xe4, 0xe8, 0xad, 0xc9, 0x02, 0xba, 0xed, 0x30, 0xee, + 0x0a, 0x82, 0xd3, 0x5a, 0xee, 0x37, 0x06, 0x60, 0x44, 0xbb, 0x9a, 0x43, 0x75, 0x81, 0x88, 0xb4, + 0xc2, 0xac, 0xbe, 0x4c, 0x27, 0x0c, 0x66, 0x25, 0x74, 0x0d, 0x46, 0x64, 0xc7, 0x8f, 0xb9, 0xd8, + 0x32, 0xd6, 0x20, 0x16, 0x70, 0xac, 0x30, 0xd0, 0x14, 0x14, 0xab, 0xa4, 0x95, 0xd4, 0x59, 0xf3, + 0xfa, 0x79, 0x7c, 0xe2, 0x3c, 0x05, 0x60, 0x0e, 0xa7, 0x08, 0x5b, 0x24, 0xa9, 0xd4, 0x99, 0x65, + 0x58, 0x04, 0x30, 0x2e, 0x50, 0x00, 0xe6, 0xf0, 0x1c, 0x47, 0x6a, 0xf1, 0xe8, 0x1d, 0xa9, 0x03, + 0x96, 0x1d, 0xa9, 0xa8, 0x05, 0xa7, 0xe2, 0xb8, 0xbe, 0x1e, 0xf9, 0x3b, 0x5e, 0x42, 0xd2, 0xd9, + 0x37, 0x78, 0x10, 0x3e, 0xe7, 0xd8, 0x65, 0xf9, 0xf2, 0xe5, 0x2c, 0x15, 0x9c, 0x47, 0x1a, 0x95, + 0xe1, 0x8c, 0x1f, 0xc4, 0xa4, 0xd2, 0x8e, 0xc8, 0x52, 0x2d, 0x08, 0x23, 0x72, 0x39, 0x8c, 0x29, + 0x39, 0x71, 0xd5, 0x57, 0x85, 0xf4, 0x2e, 0xe5, 0x21, 0xe1, 0xfc, 0xba, 0x68, 0x11, 0x4e, 0x56, + 0xfd, 0xd8, 0xdb, 0x6c, 0x90, 0x72, 0x7b, 0xb3, 0x19, 0xf2, 0xa3, 0xf9, 0x30, 0x23, 0x78, 0xbf, + 0xb4, 0x23, 0xcd, 0x67, 0x11, 0x70, 0x67, 0x1d, 0xf4, 0x0c, 0x8c, 0xc6, 0x7e, 0x50, 0x6b, 0x90, + 0xd9, 0xc8, 0x0b, 0x2a, 0x75, 0x71, 0x47, 0x58, 0xd9, 0xdb, 0xcb, 0x5a, 0x19, 0x36, 0x30, 0xd9, + 0x9a, 0xe7, 0x75, 0x32, 0xda, 0xa0, 0xc0, 0x16, 0xa5, 0x68, 0x06, 0x4e, 0xc8, 0x3e, 0x94, 0xb7, + 0xfd, 0xd6, 0xc6, 0x4a, 0x99, 0x69, 0x85, 0x43, 0x69, 0xc0, 0xd2, 0x92, 0x59, 0x8c, 0xb3, 0xf8, + 0xee, 0x0f, 0x1d, 0x18, 0xd5, 0x23, 0xf2, 0xa9, 0xb2, 0x0e, 0xf5, 0xf9, 0x85, 0x32, 0xdf, 0x4e, + 0xec, 0x29, 0x0d, 0x97, 0x15, 0xcd, 0xf4, 0xbc, 0x9d, 0xc2, 0xb0, 0xc6, 0xb3, 0x87, 0xfb, 0xf5, + 0x8f, 0x40, 0x71, 0x2b, 0xa4, 0x3a, 0x4d, 0x9f, 0x69, 0xeb, 0x5f, 0xa0, 0x40, 0xcc, 0xcb, 0xdc, + 0xff, 0xe1, 0xc0, 0xd9, 0xfc, 0xcb, 0x06, 0x3f, 0x0d, 0x9d, 0xbc, 0x08, 0x40, 0xbb, 0x62, 0xec, + 0x0b, 0x5a, 0x86, 0x0d, 0x59, 0x82, 0x35, 0xac, 0xde, 0xba, 0xfd, 0xaf, 0x0b, 0xa0, 0xf1, 0x44, + 0x5f, 0x70, 0x60, 0x8c, 0xb2, 0x5d, 0x8e, 0x36, 0x8d, 0xde, 0xae, 0xd9, 0xe9, 0xad, 0x22, 0x9b, + 0xba, 0x34, 0x0c, 0x30, 0x36, 0x99, 0xa3, 0x77, 0xc2, 0xb0, 0x57, 0xad, 0x46, 0x24, 0x8e, 0x95, + 0x73, 0x90, 0x19, 0xbc, 0x66, 0x24, 0x10, 0xa7, 0xe5, 0x54, 0x0e, 0xd7, 0xab, 0x5b, 0x31, 0x15, + 0x6d, 0x42, 0xf6, 0x2b, 0x39, 0x4c, 0x99, 0x50, 0x38, 0x56, 0x18, 0xe8, 0x1a, 0x9c, 0xad, 0x7a, + 0x89, 0xc7, 0x55, 0x40, 0x12, 0xad, 0x47, 0x61, 0x42, 0x2a, 0x6c, 0xdf, 0xe0, 0x71, 0xb4, 0xe7, + 0x45, 0xdd, 0xb3, 0xf3, 0xb9, 0x58, 0xb8, 0x4b, 0x6d, 0xf7, 0x17, 0xfb, 0xc1, 0xec, 0x13, 0xaa, + 0xc2, 0x89, 0xed, 0x68, 0x73, 0x8e, 0x85, 0x8d, 0x1c, 0x26, 0x7c, 0x83, 0x85, 0x55, 0x2c, 0x9b, + 0x14, 0x70, 0x96, 0xa4, 0xe0, 0xb2, 0x4c, 0x76, 0x13, 0x6f, 0xf3, 0xd0, 0xc1, 0x1b, 0xcb, 0x26, + 0x05, 0x9c, 0x25, 0x89, 0xde, 0x03, 0x23, 0xdb, 0xd1, 0xa6, 0xdc, 0x3d, 0xb2, 0x91, 0x40, 0xcb, + 0x69, 0x11, 0xd6, 0xf1, 0xe8, 0xa7, 0xd9, 0x8e, 0x36, 0xe9, 0x86, 0x2d, 0xf3, 0x58, 0xa8, 0x4f, + 0xb3, 0x2c, 0xe0, 0x58, 0x61, 0xa0, 0x16, 0xa0, 0x6d, 0x39, 0x7a, 0x2a, 0x48, 0x46, 0x6c, 0x72, + 0xbd, 0xc7, 0xd8, 0xb0, 0xdb, 0x09, 0xcb, 0x1d, 0x74, 0x70, 0x0e, 0x6d, 0xf4, 0x3c, 0x9c, 0xdb, + 0x8e, 0x36, 0x85, 0x1e, 0xb3, 0x1e, 0xf9, 0x41, 0xc5, 0x6f, 0x19, 0x39, 0x2b, 0xa6, 0x44, 0x73, + 0xcf, 0x2d, 0xe7, 0xa3, 0xe1, 0x6e, 0xf5, 0xdd, 0xdf, 0xec, 0x07, 0x76, 0xdb, 0x96, 0x8a, 0xe9, + 0x26, 0x49, 0xea, 0x61, 0x35, 0xab, 0x9a, 0xad, 0x32, 0x28, 0x16, 0xa5, 0x32, 0x06, 0xb7, 0xd0, + 0x25, 0x06, 0xf7, 0x06, 0x0c, 0xd6, 0x89, 0x57, 0x25, 0x91, 0x34, 0x6e, 0xae, 0xd8, 0xb9, 0x1f, + 0x7c, 0x99, 0x11, 0x4d, 0x2d, 0x04, 0xfc, 0x77, 0x8c, 0x25, 0x37, 0xf4, 0x5e, 0x18, 0xa7, 0x3a, + 0x56, 0xd8, 0x4e, 0xa4, 0x7f, 0x82, 0x1b, 0x37, 0xd9, 0x66, 0xbf, 0x61, 0x94, 0xe0, 0x0c, 0x26, + 0x9a, 0x87, 0x09, 0xe1, 0x4b, 0x50, 0x46, 0x53, 0x31, 0xb0, 0x2a, 0x99, 0x48, 0x39, 0x53, 0x8e, + 0x3b, 0x6a, 0xb0, 0x18, 0xca, 0xb0, 0xca, 0xdd, 0xc9, 0x7a, 0x0c, 0x65, 0x58, 0xdd, 0xc5, 0xac, + 0x04, 0xbd, 0x0a, 0x43, 0xf4, 0xef, 0x42, 0x14, 0x36, 0x85, 0xd9, 0x68, 0xdd, 0xce, 0xe8, 0x50, + 0x1e, 0xe2, 0x10, 0xcb, 0x74, 0xcf, 0x59, 0xc1, 0x05, 0x2b, 0x7e, 0xf4, 0x28, 0xa5, 0x6f, 0x97, + 0xd7, 0x48, 0xe4, 0x6f, 0xed, 0x32, 0x7d, 0x66, 0x28, 0x3d, 0x4a, 0x2d, 0x75, 0x60, 0xe0, 0x9c, + 0x5a, 0xee, 0x17, 0x0a, 0x30, 0xaa, 0x5f, 0xda, 0xbe, 0x53, 0x60, 0x76, 0x9c, 0x4e, 0x0a, 0x7e, + 0x70, 0xbe, 0x6c, 0xa1, 0xdb, 0x77, 0x9a, 0x10, 0x75, 0xe8, 0xf7, 0xda, 0x42, 0x91, 0xb5, 0x62, + 0x9f, 0x63, 0x3d, 0x6e, 0x27, 0x75, 0x7e, 0xbb, 0x8f, 0x85, 0x4c, 0x33, 0x0e, 0xee, 0xa7, 0xfb, + 0x60, 0x48, 0x16, 0xa2, 0x4f, 0x39, 0x00, 0x69, 0xe8, 0x9a, 0x10, 0xa5, 0xeb, 0x36, 0x82, 0x8a, + 0xf4, 0xa8, 0x3b, 0xcd, 0xcc, 0xaf, 0xe0, 0x58, 0xe3, 0x8b, 0x12, 0x18, 0x08, 0x69, 0xe3, 0x2e, + 0xda, 0x4b, 0x3c, 0xb0, 0x46, 0x19, 0x5f, 0x64, 0xdc, 0x53, 0x8b, 0x1e, 0x83, 0x61, 0xc1, 0x8b, + 0x1e, 0x4e, 0x37, 0x65, 0x44, 0xa5, 0x3d, 0xeb, 0xb7, 0x0a, 0xd2, 0x4c, 0xcf, 0x9a, 0x0a, 0x84, + 0x53, 0x86, 0xee, 0x53, 0x30, 0x6e, 0x2e, 0x06, 0x7a, 0x58, 0xd9, 0xdc, 0x4d, 0x08, 0x37, 0x85, + 0x8c, 0xf2, 0xc3, 0xca, 0x2c, 0x05, 0x60, 0x0e, 0x77, 0x7f, 0xe0, 0x00, 0xa4, 0xe2, 0xa5, 0x07, + 0xef, 0xc3, 0x23, 0xba, 0x1d, 0xaf, 0xdb, 0x89, 0xf0, 0xe3, 0x30, 0xcc, 0xfe, 0x61, 0x0b, 0xbd, + 0xcf, 0x56, 0xf0, 0x41, 0xda, 0x4e, 0xb1, 0xd4, 0x99, 0xae, 0x71, 0x4d, 0x32, 0xc2, 0x29, 0x4f, + 0x37, 0x84, 0x89, 0x2c, 0x36, 0x7a, 0x11, 0x46, 0x63, 0xb9, 0xad, 0xa6, 0x57, 0x10, 0x7b, 0xdc, + 0x7e, 0xb9, 0xeb, 0x4f, 0xab, 0x8e, 0x0d, 0x62, 0xee, 0x1a, 0x0c, 0x58, 0x1d, 0x42, 0xf7, 0x3b, + 0x0e, 0x0c, 0x33, 0xef, 0x6b, 0x2d, 0xf2, 0x9a, 0x69, 0x95, 0xbe, 0x7d, 0x46, 0x3d, 0x86, 0x41, + 0x6e, 0x3e, 0x90, 0x51, 0x4b, 0x16, 0xa4, 0x0c, 0xcf, 0x17, 0x98, 0x4a, 0x19, 0x6e, 0xa7, 0x88, + 0xb1, 0xe4, 0xe4, 0x7e, 0xa6, 0x00, 0x03, 0x4b, 0x41, 0xab, 0xfd, 0x97, 0x3e, 0x67, 0xdd, 0x2a, + 0xf4, 0x2f, 0x25, 0xa4, 0x69, 0xa6, 0x56, 0x1c, 0x9d, 0x7d, 0x54, 0x4f, 0xab, 0x58, 0x32, 0xd3, + 0x2a, 0x62, 0xef, 0x86, 0x0c, 0xea, 0x13, 0xe6, 0xeb, 0xf4, 0x1a, 0xe6, 0x93, 0x30, 0xbc, 0xe2, + 0x6d, 0x92, 0xc6, 0x32, 0xd9, 0x65, 0x97, 0x26, 0x79, 0x80, 0x89, 0x93, 0xda, 0x1c, 0x8c, 0x60, + 0x90, 0x79, 0x18, 0x67, 0xd8, 0x6a, 0x31, 0xd0, 0x13, 0x09, 0x49, 0xf3, 0x52, 0x39, 0xe6, 0x89, + 0x44, 0xcb, 0x49, 0xa5, 0x61, 0xb9, 0xd3, 0x30, 0x92, 0x52, 0xe9, 0x81, 0xeb, 0x4f, 0x0a, 0x30, + 0x66, 0x58, 0xe1, 0x0d, 0xdf, 0xa4, 0x73, 0x47, 0xdf, 0xa4, 0xe1, 0x2b, 0x2c, 0xdc, 0x6b, 0x5f, + 0x61, 0xdf, 0xf1, 0xfb, 0x0a, 0xcd, 0x8f, 0xd4, 0xdf, 0xd3, 0x47, 0x6a, 0x40, 0xff, 0x8a, 0x1f, + 0x6c, 0xf7, 0x26, 0x67, 0xe2, 0x4a, 0xd8, 0xea, 0x90, 0x33, 0x65, 0x0a, 0xc4, 0xbc, 0x4c, 0x6a, + 0x2e, 0x7d, 0xf9, 0x9a, 0x8b, 0xfb, 0x29, 0x07, 0x46, 0x57, 0xbd, 0xc0, 0xdf, 0x22, 0x71, 0xc2, + 0xe6, 0x55, 0x72, 0xa4, 0x97, 0xe7, 0x46, 0xbb, 0xa4, 0x81, 0x78, 0xd3, 0x81, 0x93, 0xab, 0xa4, + 0x19, 0xfa, 0xaf, 0x7a, 0x69, 0xcc, 0x2c, 0x6d, 0x7b, 0xdd, 0x4f, 0x44, 0x88, 0xa0, 0x6a, 0xfb, + 0x65, 0x3f, 0xc1, 0x14, 0x7e, 0x07, 0x13, 0x33, 0xbb, 0x96, 0x42, 0x0f, 0x68, 0xda, 0x85, 0xce, + 0x34, 0x1a, 0x56, 0x16, 0xe0, 0x14, 0xc7, 0xfd, 0x2d, 0x07, 0x06, 0x79, 0x23, 0x54, 0x98, 0xb1, + 0xd3, 0x85, 0x76, 0x1d, 0x8a, 0xac, 0x9e, 0x98, 0xd5, 0x8b, 0x16, 0xd4, 0x1f, 0x4a, 0x8e, 0xaf, + 0x41, 0xf6, 0x2f, 0xe6, 0x0c, 0xd8, 0xb1, 0xc5, 0xbb, 0x39, 0xa3, 0xc2, 0x85, 0xd3, 0x63, 0x0b, + 0x83, 0x62, 0x51, 0xea, 0x7e, 0xa3, 0x0f, 0x86, 0x54, 0xf6, 0x33, 0x96, 0x9b, 0x22, 0x08, 0xc2, + 0xc4, 0xe3, 0x61, 0x18, 0x5c, 0x56, 0xbf, 0x68, 0x2f, 0xfb, 0xda, 0xf4, 0x4c, 0x4a, 0x9d, 0xbb, + 0x16, 0xd5, 0x21, 0x54, 0x2b, 0xc1, 0x7a, 0x23, 0xd0, 0xc7, 0x60, 0xa0, 0x41, 0xa5, 0x8f, 0x14, + 0xdd, 0xd7, 0x2c, 0x36, 0x87, 0x89, 0x35, 0xd1, 0x12, 0x35, 0x42, 0x1c, 0x88, 0x05, 0xd7, 0xc9, + 0xf7, 0xc3, 0x44, 0xb6, 0xd5, 0x77, 0xba, 0x6f, 0x3a, 0xac, 0xdf, 0x56, 0xfd, 0xeb, 0x42, 0x7a, + 0x1e, 0xbc, 0xaa, 0xfb, 0x1c, 0x8c, 0xac, 0x92, 0x24, 0xf2, 0x2b, 0x8c, 0xc0, 0x9d, 0x26, 0x57, + 0x4f, 0xfa, 0xc3, 0x67, 0xd9, 0x64, 0xa5, 0x34, 0x63, 0xf4, 0x3a, 0x40, 0x2b, 0x0a, 0xe9, 0xf9, + 0x95, 0xb4, 0xe5, 0xc7, 0xb6, 0xa0, 0x0f, 0xaf, 0x2b, 0x9a, 0xdc, 0x1b, 0x9e, 0xfe, 0xc6, 0x1a, + 0x3f, 0xf7, 0x05, 0x28, 0xae, 0xb6, 0x13, 0x72, 0xb3, 0x07, 0x89, 0x75, 0xd0, 0x04, 0x0c, 0xee, + 0x8b, 0x30, 0xca, 0x68, 0x5f, 0x0e, 0x1b, 0x74, 0x5b, 0xa5, 0x43, 0xd3, 0xa4, 0xbf, 0xb3, 0xfe, + 0x0a, 0x86, 0x84, 0x79, 0x19, 0x5d, 0x32, 0xf5, 0xb0, 0x51, 0x55, 0x97, 0xd1, 0xd4, 0x84, 0xb8, + 0xcc, 0xa0, 0x58, 0x94, 0xba, 0x9f, 0x2c, 0xc0, 0x08, 0xab, 0x28, 0xc4, 0xcd, 0x2e, 0x0c, 0xd6, + 0x39, 0x1f, 0x31, 0x86, 0x16, 0xe2, 0xcb, 0xf4, 0xd6, 0x6b, 0x67, 0x39, 0x0e, 0xc0, 0x92, 0x1f, + 0x65, 0x7d, 0xc3, 0xf3, 0x13, 0xca, 0xba, 0x70, 0xb4, 0xac, 0xaf, 0x73, 0x36, 0x58, 0xf2, 0x73, + 0x7f, 0x1e, 0xd8, 0x25, 0xef, 0x85, 0x86, 0x57, 0xe3, 0x23, 0x17, 0x6e, 0x93, 0xaa, 0x90, 0xb9, + 0xda, 0xc8, 0x51, 0x28, 0x16, 0xa5, 0xfc, 0xe2, 0x6c, 0x12, 0xf9, 0x2a, 0x32, 0x5b, 0xbb, 0x38, + 0xcb, 0xc0, 0x32, 0x0e, 0xbf, 0xea, 0x7e, 0xa5, 0x00, 0xc0, 0x72, 0xe5, 0xf1, 0xbb, 0xd9, 0x3f, + 0x27, 0x83, 0xa8, 0x4c, 0x1f, 0xa7, 0x0a, 0xa2, 0x62, 0xb7, 0xcf, 0xf5, 0xe0, 0x29, 0xfd, 0xc2, + 0x44, 0x61, 0xff, 0x0b, 0x13, 0xa8, 0x05, 0x83, 0x61, 0x3b, 0xa1, 0xba, 0xaa, 0xd8, 0xec, 0x2d, + 0xb8, 0xf8, 0xd7, 0x38, 0x41, 0x7e, 0xcb, 0x40, 0xfc, 0xc0, 0x92, 0x0d, 0x7a, 0x06, 0x86, 0x5a, + 0x51, 0x58, 0xa3, 0x7b, 0xb7, 0xd8, 0xde, 0x1f, 0x94, 0xfa, 0xd0, 0xba, 0x80, 0xdf, 0xd6, 0xfe, + 0xc7, 0x0a, 0xdb, 0xfd, 0x83, 0x09, 0x3e, 0x2e, 0x62, 0xee, 0x4d, 0x42, 0xc1, 0x97, 0x96, 0x29, + 0x10, 0x24, 0x0a, 0x4b, 0xf3, 0xb8, 0xe0, 0x57, 0xd5, 0xba, 0x2a, 0x74, 0x5d, 0x57, 0xef, 0x81, + 0x91, 0xaa, 0x1f, 0xb7, 0x1a, 0xde, 0xee, 0x95, 0x1c, 0xb3, 0xe0, 0x7c, 0x5a, 0x84, 0x75, 0x3c, + 0xf4, 0xa4, 0xb8, 0x1e, 0xd3, 0x6f, 0x98, 0x82, 0xe4, 0xf5, 0x98, 0xf4, 0xee, 0x3f, 0xbf, 0x19, + 0x93, 0xcd, 0x91, 0x50, 0xec, 0x39, 0x47, 0x42, 0x56, 0x13, 0x1b, 0x38, 0x7e, 0x4d, 0xec, 0x7d, + 0x30, 0x26, 0x7f, 0x32, 0xf5, 0xa8, 0x74, 0x9a, 0xb5, 0x5e, 0x99, 0xc1, 0x37, 0xf4, 0x42, 0x6c, + 0xe2, 0xa6, 0x93, 0x76, 0xb0, 0xd7, 0x49, 0x7b, 0x11, 0x60, 0x33, 0x6c, 0x07, 0x55, 0x2f, 0xda, + 0x5d, 0x9a, 0x17, 0xc1, 0xb4, 0x4a, 0xf1, 0x9b, 0x55, 0x25, 0x58, 0xc3, 0xd2, 0x27, 0xfa, 0xf0, + 0x1d, 0x26, 0xfa, 0x8b, 0x30, 0xcc, 0x02, 0x8f, 0x49, 0x75, 0x26, 0x11, 0xd1, 0x4f, 0x07, 0x89, + 0xe6, 0x4c, 0xe3, 0x21, 0x25, 0x11, 0x9c, 0xd2, 0x43, 0x1f, 0x06, 0xd8, 0xf2, 0x03, 0x3f, 0xae, + 0x33, 0xea, 0x23, 0x07, 0xa6, 0xae, 0xfa, 0xb9, 0xa0, 0xa8, 0x60, 0x8d, 0x22, 0x7a, 0x09, 0x4e, + 0x92, 0x38, 0xf1, 0x9b, 0x5e, 0x42, 0xaa, 0xea, 0x4e, 0x6b, 0x89, 0xd9, 0x32, 0x55, 0xe8, 0xf7, + 0xa5, 0x2c, 0xc2, 0xed, 0x3c, 0x20, 0xee, 0x24, 0x64, 0xac, 0xc8, 0xc9, 0x83, 0xac, 0x48, 0xf4, + 0xbf, 0x1d, 0x38, 0x19, 0x11, 0x1e, 0x12, 0x13, 0xab, 0x86, 0x9d, 0x61, 0xe2, 0xb8, 0x62, 0x23, + 0x0d, 0xbd, 0xca, 0x37, 0x83, 0xb3, 0x5c, 0xb8, 0xe2, 0x42, 0x64, 0xef, 0x3b, 0xca, 0x6f, 0xe7, + 0x01, 0xdf, 0x7c, 0x7b, 0x6a, 0xaa, 0xf3, 0x39, 0x04, 0x45, 0x9c, 0xae, 0xbc, 0xbf, 0xfd, 0xf6, + 0xd4, 0x84, 0xfc, 0x9d, 0x0e, 0x5a, 0x47, 0x27, 0xe9, 0xb6, 0xda, 0x0a, 0xab, 0x4b, 0xeb, 0x22, + 0x4c, 0x4d, 0x6d, 0xab, 0xeb, 0x14, 0x88, 0x79, 0x19, 0x7a, 0x1c, 0x86, 0xaa, 0x1e, 0x69, 0x86, + 0x81, 0x4a, 0x28, 0xcc, 0xb4, 0xf9, 0x79, 0x01, 0xc3, 0xaa, 0x94, 0x9e, 0x21, 0x02, 0xb1, 0xa5, + 0x94, 0x1e, 0xb0, 0x75, 0x86, 0x90, 0x9b, 0x14, 0xe7, 0x2a, 0x7f, 0x61, 0xc5, 0x09, 0x35, 0x60, + 0xc0, 0x67, 0x86, 0x0a, 0x11, 0x09, 0x6b, 0xc1, 0x3a, 0xc2, 0x0d, 0x1f, 0x32, 0x0e, 0x96, 0x89, + 0x7e, 0xc1, 0x43, 0xdf, 0x6b, 0x4e, 0x1c, 0xcf, 0x5e, 0xf3, 0x38, 0x0c, 0x55, 0xea, 0x7e, 0xa3, + 0x1a, 0x91, 0xa0, 0x34, 0xc1, 0x4e, 0xec, 0x6c, 0x24, 0xe6, 0x04, 0x0c, 0xab, 0x52, 0xf4, 0xd7, + 0x60, 0x2c, 0x6c, 0x27, 0x4c, 0xb4, 0xd0, 0x71, 0x8a, 0x4b, 0x27, 0x19, 0x3a, 0x8b, 0x6b, 0x5a, + 0xd3, 0x0b, 0xb0, 0x89, 0x47, 0x45, 0x7c, 0x3d, 0x8c, 0x59, 0x6a, 0x24, 0x26, 0xe2, 0xcf, 0x9a, + 0x22, 0xfe, 0xb2, 0x56, 0x86, 0x0d, 0x4c, 0xf4, 0x35, 0x07, 0x4e, 0x36, 0xb3, 0x07, 0xb8, 0xd2, + 0x39, 0x36, 0x32, 0x65, 0x1b, 0x8a, 0x7e, 0x86, 0x34, 0x8f, 0x48, 0xef, 0x00, 0xe3, 0xce, 0x46, + 0xb0, 0x24, 0x65, 0xf1, 0x6e, 0x50, 0xa9, 0x47, 0x61, 0x60, 0x36, 0xef, 0x7e, 0x5b, 0xf7, 0xe2, + 0xd8, 0xda, 0xce, 0x63, 0x31, 0x7b, 0xff, 0xad, 0xbd, 0xa9, 0x33, 0xb9, 0x45, 0x38, 0xbf, 0x51, + 0x93, 0xf3, 0x70, 0x36, 0x5f, 0x3e, 0xdc, 0xe9, 0xc4, 0xd1, 0xa7, 0x9f, 0x38, 0x16, 0xe0, 0xfe, + 0xae, 0x8d, 0xa2, 0x3b, 0x8d, 0xd4, 0x36, 0x1d, 0x73, 0xa7, 0xe9, 0xd0, 0x0e, 0xc7, 0x61, 0x54, + 0x7f, 0x3f, 0xc3, 0xfd, 0x7f, 0x7d, 0x00, 0xa9, 0x9d, 0x1c, 0x79, 0x30, 0xce, 0x6d, 0xf2, 0x4b, + 0xf3, 0x87, 0x4e, 0x2a, 0x30, 0x67, 0x10, 0xc0, 0x19, 0x82, 0xa8, 0x09, 0x88, 0x43, 0xf8, 0xef, + 0xc3, 0xf8, 0x56, 0x99, 0x2b, 0x72, 0xae, 0x83, 0x08, 0xce, 0x21, 0x4c, 0x7b, 0x94, 0x84, 0xdb, + 0x24, 0xb8, 0x8a, 0x57, 0x0e, 0x93, 0x99, 0x82, 0x7b, 0xe3, 0x0c, 0x02, 0x38, 0x43, 0x10, 0xb9, + 0x30, 0xc0, 0x6c, 0x33, 0x32, 0x76, 0x9c, 0x89, 0x17, 0xa6, 0x69, 0xc4, 0x58, 0x94, 0xa0, 0xaf, + 0x38, 0x30, 0x2e, 0x13, 0x6c, 0x30, 0x6b, 0xa8, 0x8c, 0x1a, 0xbf, 0x6a, 0xcb, 0xcf, 0x71, 0x49, + 0xa7, 0x9e, 0xc6, 0x64, 0x1a, 0xe0, 0x18, 0x67, 0x1a, 0xe1, 0x3e, 0x0f, 0xa7, 0x72, 0xaa, 0x5b, + 0x39, 0xd1, 0x7e, 0xd7, 0x81, 0x11, 0x2d, 0xef, 0x23, 0x7a, 0x1d, 0x86, 0xc3, 0xb2, 0xf5, 0x40, + 0xc0, 0xb5, 0x72, 0x47, 0x20, 0xa0, 0x02, 0xe1, 0x94, 0x61, 0x2f, 0xf1, 0x8b, 0xb9, 0x49, 0x2a, + 0xef, 0x71, 0xb3, 0x0f, 0x1c, 0xbf, 0xf8, 0x8b, 0x45, 0x48, 0x29, 0x1d, 0x30, 0xf1, 0x4b, 0x1a, + 0xed, 0x58, 0xd8, 0x37, 0xda, 0xb1, 0x0a, 0x27, 0x3c, 0xe6, 0x4b, 0x3e, 0x64, 0xba, 0x17, 0x9e, + 0xf6, 0xd7, 0xa4, 0x80, 0xb3, 0x24, 0x29, 0x97, 0x38, 0xad, 0xca, 0xb8, 0xf4, 0x1f, 0x98, 0x4b, + 0xd9, 0xa4, 0x80, 0xb3, 0x24, 0xd1, 0x4b, 0x50, 0xaa, 0xb0, 0xbb, 0xc3, 0xbc, 0x8f, 0x4b, 0x5b, + 0x57, 0xc2, 0x64, 0x3d, 0x22, 0x31, 0x09, 0x12, 0x91, 0xd8, 0xed, 0x61, 0x31, 0x0a, 0xa5, 0xb9, + 0x2e, 0x78, 0xb8, 0x2b, 0x05, 0x7a, 0x4c, 0x61, 0xce, 0x68, 0x3f, 0xd9, 0x65, 0x42, 0x44, 0x78, + 0xe9, 0xd5, 0x31, 0xa5, 0xac, 0x17, 0x62, 0x13, 0x17, 0xfd, 0x82, 0x03, 0x63, 0x0d, 0x69, 0xae, + 0xc7, 0xed, 0x86, 0xcc, 0x52, 0x8a, 0xad, 0x4c, 0xbf, 0x15, 0x9d, 0x32, 0xd7, 0x25, 0x0c, 0x10, + 0x36, 0x79, 0x67, 0x73, 0xef, 0x0c, 0xf5, 0x98, 0x7b, 0xe7, 0x07, 0x0e, 0x4c, 0x64, 0xb9, 0xa1, + 0x6d, 0x78, 0xa8, 0xe9, 0x45, 0xdb, 0x4b, 0xc1, 0x56, 0xc4, 0xee, 0x88, 0x24, 0x7c, 0x32, 0xcc, + 0x6c, 0x25, 0x24, 0x9a, 0xf7, 0x76, 0xb9, 0xfb, 0xb3, 0xa8, 0x9e, 0xb9, 0x7a, 0x68, 0x75, 0x3f, + 0x64, 0xbc, 0x3f, 0x2d, 0x54, 0x86, 0x33, 0x14, 0x81, 0xa5, 0xe6, 0xf3, 0xc3, 0x20, 0x65, 0x52, + 0x60, 0x4c, 0x54, 0x9c, 0xe2, 0x6a, 0x1e, 0x12, 0xce, 0xaf, 0xeb, 0x5e, 0x82, 0x01, 0x7e, 0x65, + 0xef, 0xae, 0xfc, 0x47, 0xee, 0xbf, 0x2b, 0x80, 0x54, 0x0c, 0xff, 0x72, 0xbb, 0xe3, 0xe8, 0x26, + 0x1a, 0x31, 0x93, 0x92, 0xb0, 0x76, 0xb0, 0x4d, 0x54, 0x24, 0xc1, 0x14, 0x25, 0x54, 0x63, 0x26, + 0x37, 0xfd, 0x64, 0x2e, 0xac, 0x4a, 0x1b, 0x07, 0xd3, 0x98, 0x2f, 0x09, 0x18, 0x56, 0xa5, 0xee, + 0xa7, 0x1c, 0x18, 0xa3, 0xbd, 0x6c, 0x34, 0x48, 0xa3, 0x9c, 0x90, 0x56, 0x8c, 0x62, 0x28, 0xc6, + 0xf4, 0x1f, 0x7b, 0xa6, 0xc0, 0xf4, 0x9a, 0x27, 0x69, 0x69, 0xce, 0x1a, 0xca, 0x04, 0x73, 0x5e, + 0xee, 0x5b, 0x7d, 0x30, 0xac, 0x06, 0xbb, 0x07, 0x7b, 0xea, 0xc5, 0x34, 0x3f, 0x2d, 0x97, 0xc0, + 0x25, 0x2d, 0x37, 0xed, 0x6d, 0x3a, 0x74, 0xc1, 0x2e, 0xcf, 0x92, 0x91, 0x26, 0xaa, 0x7d, 0xd2, + 0x74, 0x35, 0x9f, 0xd5, 0xe7, 0x9f, 0x86, 0x2f, 0x7c, 0xce, 0x37, 0x75, 0x4f, 0x7f, 0xbf, 0xad, + 0xdd, 0x4c, 0xb9, 0x31, 0xbb, 0xbb, 0xf8, 0x33, 0x4f, 0x17, 0x15, 0x7b, 0x7a, 0xba, 0xe8, 0x09, + 0xe8, 0x27, 0x41, 0xbb, 0xc9, 0x54, 0xa5, 0x61, 0x76, 0x44, 0xe8, 0xbf, 0x14, 0xb4, 0x9b, 0x66, + 0xcf, 0x18, 0x0a, 0x7a, 0x3f, 0x8c, 0x54, 0x49, 0x5c, 0x89, 0x7c, 0x96, 0xfa, 0x41, 0x58, 0x76, + 0x1e, 0x64, 0xe6, 0xb2, 0x14, 0x6c, 0x56, 0xd4, 0x2b, 0xb8, 0xaf, 0xc2, 0xc0, 0x7a, 0xa3, 0x5d, + 0xf3, 0x03, 0xd4, 0x82, 0x01, 0x9e, 0x08, 0x42, 0xec, 0xf6, 0x16, 0xce, 0x9d, 0x5c, 0x54, 0x68, + 0x51, 0x28, 0xfc, 0xb6, 0xaf, 0xe0, 0xe3, 0x7e, 0xb2, 0x00, 0xf4, 0x68, 0xbe, 0x38, 0x87, 0xfe, + 0x66, 0xc7, 0x4b, 0x3d, 0x3f, 0x93, 0xf3, 0x52, 0xcf, 0x18, 0x43, 0xce, 0x79, 0xa4, 0xa7, 0x01, + 0x63, 0xcc, 0x39, 0x22, 0xf7, 0x40, 0xa1, 0x56, 0x3f, 0xdd, 0x63, 0xee, 0x04, 0xbd, 0xaa, 0xd8, + 0x11, 0x74, 0x10, 0x36, 0x89, 0xa3, 0x55, 0x38, 0xc5, 0xd3, 0x9c, 0xce, 0x93, 0x86, 0xb7, 0x9b, + 0x49, 0x67, 0xf6, 0x80, 0x7c, 0x7c, 0x6d, 0xbe, 0x13, 0x05, 0xe7, 0xd5, 0x73, 0x7f, 0xbb, 0x1f, + 0x34, 0x97, 0x44, 0x0f, 0xab, 0xe5, 0x95, 0x8c, 0x03, 0x6a, 0xd5, 0x8a, 0x03, 0x4a, 0x7a, 0x75, + 0xb8, 0x04, 0x32, 0x7d, 0x4e, 0xb4, 0x51, 0x75, 0xd2, 0x68, 0x89, 0x3e, 0xaa, 0x46, 0x5d, 0x26, + 0x8d, 0x16, 0x66, 0x25, 0xea, 0xae, 0x63, 0x7f, 0xd7, 0xbb, 0x8e, 0x75, 0x28, 0xd6, 0xbc, 0x76, + 0x8d, 0x88, 0x08, 0x4c, 0x0b, 0xbe, 0x46, 0x76, 0xfb, 0x82, 0xfb, 0x1a, 0xd9, 0xbf, 0x98, 0x33, + 0xa0, 0x8b, 0xbd, 0x2e, 0x43, 0x52, 0x84, 0x91, 0xd6, 0xc2, 0x62, 0x57, 0x51, 0x2e, 0x7c, 0xb1, + 0xab, 0x9f, 0x38, 0x65, 0x86, 0x5a, 0x30, 0x58, 0xe1, 0x19, 0x5c, 0x84, 0xce, 0xb2, 0x64, 0xe3, + 0x32, 0x27, 0x23, 0xc8, 0xad, 0x29, 0xe2, 0x07, 0x96, 0x6c, 0xdc, 0x0b, 0x30, 0xa2, 0x3d, 0x18, + 0x42, 0x3f, 0x83, 0x4a, 0x1e, 0xa2, 0x7d, 0x86, 0x79, 0x2f, 0xf1, 0x30, 0x2b, 0x71, 0xbf, 0xd5, + 0x0f, 0xca, 0x96, 0xa6, 0x5f, 0x3d, 0xf4, 0x2a, 0x5a, 0xaa, 0x23, 0xe3, 0x1a, 0x7e, 0x18, 0x60, + 0x51, 0x4a, 0xf5, 0xba, 0x26, 0x89, 0x6a, 0xea, 0x1c, 0x2d, 0xc4, 0xb5, 0xd2, 0xeb, 0x56, 0xf5, + 0x42, 0x6c, 0xe2, 0x52, 0xa5, 0xbc, 0x29, 0x5c, 0xf4, 0xd9, 0xc0, 0x6a, 0xe9, 0xba, 0xc7, 0x0a, + 0x83, 0xe5, 0x4a, 0x68, 0x6a, 0x1e, 0x7d, 0x11, 0x88, 0x69, 0xc3, 0xa1, 0xa4, 0x51, 0xe5, 0x01, + 0x53, 0x3a, 0x04, 0x1b, 0x5c, 0xd1, 0x22, 0x9c, 0x8c, 0x49, 0xb2, 0x76, 0x23, 0x20, 0x91, 0xca, + 0x52, 0x20, 0x92, 0x71, 0xa8, 0x8b, 0x19, 0xe5, 0x2c, 0x02, 0xee, 0xac, 0x93, 0x1b, 0xbb, 0x5a, + 0x3c, 0x70, 0xec, 0xea, 0x3c, 0x4c, 0x6c, 0x79, 0x7e, 0xa3, 0x1d, 0x91, 0xae, 0x11, 0xb0, 0x0b, + 0x99, 0x72, 0xdc, 0x51, 0x83, 0xdd, 0x0d, 0x6a, 0x78, 0xb5, 0xb8, 0x34, 0xa8, 0xdd, 0x0d, 0xa2, + 0x00, 0xcc, 0xe1, 0xee, 0xaf, 0x39, 0xc0, 0xb3, 0x20, 0xcd, 0x6c, 0x6d, 0xf9, 0x81, 0x9f, 0xec, + 0xa2, 0xaf, 0x3b, 0x30, 0x11, 0x84, 0x55, 0x32, 0x13, 0x24, 0xbe, 0x04, 0xda, 0xcb, 0x8e, 0xcf, + 0x78, 0x5d, 0xc9, 0x90, 0xe7, 0x29, 0x35, 0xb2, 0x50, 0xdc, 0xd1, 0x0c, 0xf7, 0x1c, 0x9c, 0xc9, + 0x25, 0xe0, 0xfe, 0xa0, 0x0f, 0xcc, 0x64, 0x4e, 0xe8, 0x39, 0x28, 0x36, 0x58, 0x7a, 0x11, 0xe7, + 0x90, 0x59, 0xba, 0xd8, 0x58, 0xf1, 0xfc, 0x23, 0x9c, 0x12, 0x9a, 0x87, 0x11, 0x96, 0x21, 0x4a, + 0x24, 0x7f, 0x29, 0x18, 0x59, 0x15, 0x46, 0x70, 0x5a, 0x74, 0xdb, 0xfc, 0x89, 0xf5, 0x6a, 0xe8, + 0x35, 0x18, 0xdc, 0xe4, 0xa9, 0x3a, 0xed, 0xf9, 0xfc, 0x44, 0xee, 0x4f, 0xa6, 0x1b, 0xc9, 0x44, + 0xa0, 0xb7, 0xd3, 0x7f, 0xb1, 0xe4, 0x88, 0x76, 0x61, 0xc8, 0x93, 0xdf, 0xb4, 0xdf, 0xd6, 0x45, + 0x0d, 0x63, 0xfe, 0x88, 0x88, 0x19, 0xf9, 0x0d, 0x15, 0xbb, 0x4c, 0x68, 0x51, 0xb1, 0xa7, 0xd0, + 0xa2, 0xef, 0x38, 0x00, 0xe9, 0xbb, 0x26, 0xe8, 0x26, 0x0c, 0xc5, 0x4f, 0x1b, 0x86, 0x0a, 0x1b, + 0x97, 0xfc, 0x05, 0x45, 0xed, 0x22, 0xac, 0x80, 0x60, 0xc5, 0xed, 0x4e, 0xc6, 0x95, 0x9f, 0x38, + 0x70, 0x3a, 0xef, 0xfd, 0x95, 0x7b, 0xd8, 0xe2, 0x83, 0xda, 0x55, 0x44, 0x85, 0xf5, 0x88, 0x6c, + 0xf9, 0x37, 0x73, 0x12, 0x46, 0xf3, 0x02, 0x9c, 0xe2, 0xb8, 0x7f, 0x32, 0x08, 0x8a, 0xf1, 0x11, + 0xd9, 0x61, 0x1e, 0xa3, 0x67, 0xa6, 0x5a, 0xaa, 0x73, 0x29, 0x3c, 0xcc, 0xa0, 0x58, 0x94, 0xd2, + 0x73, 0x93, 0x0c, 0x8a, 0x17, 0x22, 0x9b, 0xcd, 0x42, 0x19, 0x3c, 0x8f, 0x55, 0x69, 0x9e, 0x65, + 0xa7, 0x78, 0x2c, 0x96, 0x9d, 0x01, 0xfb, 0x96, 0x9d, 0x26, 0xa0, 0x98, 0x2f, 0x14, 0x66, 0x4e, + 0x11, 0x8c, 0x46, 0x0f, 0x6c, 0x68, 0x2e, 0x77, 0x10, 0xc1, 0x39, 0x84, 0x59, 0x0c, 0x45, 0xd8, + 0x20, 0x33, 0xf8, 0x8a, 0x38, 0x7c, 0xa4, 0x31, 0x14, 0x1c, 0x8c, 0x65, 0xf9, 0x21, 0x4d, 0x29, + 0xe8, 0x37, 0x9c, 0x7d, 0x6c, 0x55, 0xc3, 0xb6, 0xb6, 0xa0, 0xdc, 0x4c, 0x7a, 0xec, 0x24, 0x75, + 0x18, 0x03, 0xd8, 0x37, 0x1c, 0x38, 0x49, 0x82, 0x4a, 0xb4, 0xcb, 0xe8, 0x08, 0x6a, 0xc2, 0xc5, + 0x7d, 0xd5, 0xc6, 0x5a, 0xbf, 0x94, 0x25, 0xce, 0x3d, 0x49, 0x1d, 0x60, 0xdc, 0xd9, 0x0c, 0xb4, + 0x06, 0x43, 0x15, 0x4f, 0xcc, 0x8b, 0x91, 0x83, 0xcc, 0x0b, 0xee, 0xa8, 0x9b, 0x11, 0xb3, 0x41, + 0x11, 0x71, 0x7f, 0x5c, 0x80, 0x53, 0x39, 0x4d, 0x62, 0xf7, 0xb5, 0x9a, 0x74, 0x01, 0x2c, 0x55, + 0xb3, 0xcb, 0x7f, 0x59, 0xc0, 0xb1, 0xc2, 0x40, 0xeb, 0x70, 0x7a, 0xbb, 0x19, 0xa7, 0x54, 0xe6, + 0xc2, 0x20, 0x21, 0x37, 0xa5, 0x30, 0x90, 0xee, 0xef, 0xd3, 0xcb, 0x39, 0x38, 0x38, 0xb7, 0x26, + 0xd5, 0x96, 0x48, 0xe0, 0x6d, 0x36, 0x48, 0x5a, 0x24, 0x6e, 0x31, 0x2a, 0x6d, 0xe9, 0x52, 0xa6, + 0x1c, 0x77, 0xd4, 0x40, 0x9f, 0x73, 0xe0, 0x81, 0x98, 0x44, 0x3b, 0x24, 0x2a, 0xfb, 0x55, 0x32, + 0xd7, 0x8e, 0x93, 0xb0, 0x49, 0xa2, 0x43, 0x5a, 0x67, 0xa7, 0x6e, 0xed, 0x4d, 0x3d, 0x50, 0xee, + 0x4e, 0x0d, 0xef, 0xc7, 0xca, 0xfd, 0x9c, 0x03, 0xe3, 0x65, 0x76, 0x76, 0x57, 0xaa, 0xbb, 0xed, + 0x5c, 0xaa, 0x8f, 0xa9, 0xd4, 0x1d, 0x19, 0x21, 0x6c, 0x26, 0xdb, 0x70, 0x5f, 0x86, 0x89, 0x32, + 0x69, 0x7a, 0xad, 0x3a, 0xbb, 0xc5, 0xcc, 0xc3, 0xbf, 0x2e, 0xc0, 0x70, 0x2c, 0x61, 0xd9, 0x17, + 0x9c, 0x14, 0x32, 0x4e, 0x71, 0xd0, 0xa3, 0x3c, 0x54, 0x4d, 0x5e, 0x38, 0x1a, 0xe6, 0x87, 0x1c, + 0x1e, 0xdf, 0x16, 0x63, 0x59, 0xe6, 0xbe, 0xe5, 0xc0, 0x68, 0x5a, 0x9f, 0x6c, 0xa1, 0x1a, 0x9c, + 0xa8, 0x68, 0x97, 0xf5, 0xd2, 0x6b, 0x12, 0xbd, 0xdf, 0xeb, 0xe3, 0x59, 0xa6, 0x4d, 0x22, 0x38, + 0x4b, 0xf5, 0xe0, 0x91, 0x7e, 0x5f, 0x2c, 0xc0, 0x09, 0xd5, 0x54, 0xe1, 0xa7, 0x7c, 0x23, 0x1b, + 0x90, 0x87, 0x6d, 0x24, 0x21, 0x32, 0xc7, 0x7e, 0x9f, 0xa0, 0xbc, 0x37, 0xb2, 0x41, 0x79, 0x47, + 0xca, 0xbe, 0xc3, 0xf5, 0xfa, 0x9d, 0x02, 0x0c, 0xa9, 0x94, 0x48, 0xcf, 0x41, 0x91, 0x9d, 0x5c, + 0xef, 0x4e, 0xff, 0x66, 0xa7, 0x60, 0xcc, 0x29, 0x51, 0x92, 0x2c, 0xe8, 0xe7, 0xd0, 0x89, 0x77, + 0x87, 0xb9, 0xfd, 0xd2, 0x8b, 0x12, 0xcc, 0x29, 0xa1, 0x65, 0xe8, 0x23, 0x41, 0x55, 0x28, 0xe2, + 0x07, 0x27, 0xc8, 0xde, 0x5a, 0xbb, 0x14, 0x54, 0x31, 0xa5, 0xc2, 0xf2, 0xb2, 0x71, 0x7d, 0x2b, + 0xf3, 0xb2, 0x8e, 0x50, 0xb6, 0x44, 0xa9, 0x3b, 0x0b, 0x46, 0xce, 0xbe, 0x43, 0xdd, 0x8c, 0xf8, + 0x85, 0x3e, 0x18, 0x28, 0xb7, 0x37, 0xe9, 0xb1, 0xe4, 0xdb, 0x0e, 0x9c, 0xba, 0x91, 0xc9, 0x6c, + 0x9d, 0xae, 0x93, 0xab, 0xf6, 0x93, 0x87, 0x63, 0xb2, 0x95, 0x5a, 0xbf, 0x72, 0x0a, 0x71, 0x5e, + 0x73, 0x8c, 0xe4, 0xb2, 0x7d, 0x47, 0x92, 0x5c, 0xf6, 0xe6, 0x11, 0xdf, 0xde, 0x18, 0xeb, 0x76, + 0x73, 0xc3, 0xfd, 0xed, 0x22, 0x00, 0xff, 0x1a, 0x6b, 0xad, 0xa4, 0x17, 0xcb, 0xde, 0x33, 0x30, + 0x5a, 0x23, 0x01, 0x89, 0x64, 0x68, 0x62, 0xe6, 0xe1, 0xa7, 0x45, 0xad, 0x0c, 0x1b, 0x98, 0x6c, + 0xb2, 0x04, 0x49, 0xb4, 0xcb, 0x55, 0xed, 0xec, 0x0d, 0x0d, 0x55, 0x82, 0x35, 0x2c, 0x34, 0x6d, + 0x38, 0x5e, 0xb8, 0x0f, 0x7f, 0x7c, 0x1f, 0x3f, 0xc9, 0xfb, 0x61, 0xdc, 0xcc, 0xc4, 0x22, 0x14, + 0x3e, 0xe5, 0x73, 0x37, 0x13, 0xb8, 0xe0, 0x0c, 0x36, 0x5d, 0x08, 0xd5, 0x68, 0x17, 0xb7, 0x03, + 0xa1, 0xf9, 0xa9, 0x85, 0x30, 0xcf, 0xa0, 0x58, 0x94, 0xb2, 0x14, 0x16, 0x6c, 0x0f, 0xe4, 0x70, + 0x91, 0x06, 0x23, 0x4d, 0x61, 0xa1, 0x95, 0x61, 0x03, 0x93, 0x72, 0x10, 0x96, 0x51, 0x30, 0x97, + 0x5a, 0xc6, 0x9c, 0xd9, 0x82, 0xf1, 0xd0, 0xb4, 0xe8, 0x70, 0x35, 0xe8, 0xdd, 0x3d, 0x4e, 0x3d, + 0xa3, 0x2e, 0x8f, 0x95, 0xc8, 0x18, 0x80, 0x32, 0xf4, 0xa9, 0xea, 0xab, 0x5f, 0x64, 0x18, 0x35, + 0x23, 0x5b, 0xbb, 0xde, 0x35, 0x58, 0x87, 0xd3, 0xad, 0xb0, 0xba, 0x1e, 0xf9, 0x61, 0xe4, 0x27, + 0xbb, 0x73, 0x0d, 0x2f, 0x8e, 0xd9, 0xc4, 0x18, 0x33, 0x55, 0xa2, 0xf5, 0x1c, 0x1c, 0x9c, 0x5b, + 0x93, 0x9e, 0x89, 0x5a, 0x02, 0xc8, 0xe2, 0xcb, 0x8a, 0x5c, 0xa9, 0x93, 0x88, 0x58, 0x95, 0xba, + 0xa7, 0xe0, 0x64, 0xb9, 0xdd, 0x6a, 0x35, 0x7c, 0x52, 0x55, 0x8e, 0x0d, 0xf7, 0x03, 0x70, 0x42, + 0xa4, 0x9e, 0x55, 0x0a, 0xc8, 0x81, 0x12, 0xa5, 0xbb, 0xff, 0xb9, 0x0f, 0x4e, 0x64, 0xa2, 0x79, + 0xd0, 0x6b, 0x59, 0xb5, 0xc1, 0x4e, 0x4a, 0x54, 0x4d, 0x61, 0x10, 0xf9, 0x4d, 0xf3, 0x54, 0x90, + 0xba, 0x0c, 0xc5, 0xb7, 0x76, 0x05, 0x86, 0x05, 0xac, 0xf3, 0x5d, 0xc5, 0x88, 0xe7, 0xff, 0x18, + 0x80, 0x62, 0x2b, 0x6f, 0xdd, 0xdb, 0xee, 0x27, 0x5b, 0xbf, 0x0a, 0x12, 0x63, 0x8d, 0x23, 0x0a, + 0x60, 0x90, 0x35, 0x84, 0xc8, 0x7b, 0x97, 0xd6, 0xfa, 0xca, 0xb4, 0xb6, 0x55, 0x4e, 0x1b, 0x4b, + 0x26, 0xee, 0x67, 0x0b, 0x90, 0x1f, 0x32, 0x86, 0x3e, 0xd6, 0xf9, 0xc1, 0x9f, 0xb3, 0x38, 0x10, + 0x22, 0x66, 0xad, 0xfb, 0x37, 0x0f, 0xcc, 0x6f, 0xbe, 0x6a, 0x69, 0x1c, 0x04, 0xdf, 0x8e, 0x2f, + 0xef, 0xfe, 0x2f, 0x07, 0x46, 0x36, 0x36, 0x56, 0xd4, 0xd6, 0x8e, 0xe1, 0x6c, 0xcc, 0x53, 0x1a, + 0x30, 0xcf, 0xfa, 0x5c, 0xd8, 0x6c, 0x71, 0x47, 0xbb, 0x08, 0x00, 0x60, 0x59, 0x8f, 0xcb, 0xb9, + 0x18, 0xb8, 0x4b, 0x4d, 0xb4, 0x04, 0xa7, 0xf4, 0x92, 0xb2, 0xf6, 0xce, 0x65, 0x51, 0x64, 0x38, + 0xea, 0x2c, 0xc6, 0x79, 0x75, 0xb2, 0xa4, 0x84, 0x41, 0x99, 0x6d, 0xcf, 0x39, 0xa4, 0x44, 0x31, + 0xce, 0xab, 0xe3, 0xae, 0xc1, 0xc8, 0x86, 0x17, 0xa9, 0x8e, 0x7f, 0x10, 0x26, 0x2a, 0x61, 0x53, + 0xaa, 0x2b, 0x2b, 0x64, 0x87, 0x34, 0x44, 0x97, 0xf9, 0xe3, 0x32, 0x99, 0x32, 0xdc, 0x81, 0xed, + 0xfe, 0xf1, 0x79, 0x50, 0x57, 0x34, 0x7b, 0xd8, 0x51, 0x5b, 0x2a, 0x98, 0xb6, 0x68, 0x39, 0x98, + 0x56, 0xed, 0x2d, 0x99, 0x80, 0xda, 0x24, 0x0d, 0xa8, 0x1d, 0xb0, 0x1d, 0x50, 0xab, 0x94, 0xec, + 0x8e, 0xa0, 0xda, 0xaf, 0x3a, 0x30, 0x1a, 0x84, 0x55, 0xa2, 0x3c, 0xa0, 0x83, 0x6c, 0x85, 0xbf, + 0x64, 0xef, 0x6e, 0x02, 0x0f, 0x0e, 0x15, 0xe4, 0x79, 0xa0, 0xb7, 0xda, 0x92, 0xf5, 0x22, 0x6c, + 0xb4, 0x03, 0x2d, 0x68, 0xa6, 0x65, 0xee, 0xc1, 0x79, 0x30, 0xef, 0x88, 0x76, 0x47, 0x3b, 0xf1, + 0x4d, 0x4d, 0x4f, 0x1c, 0xb6, 0x65, 0x32, 0x95, 0xf7, 0xee, 0x34, 0x47, 0x94, 0x4c, 0xdc, 0x9d, + 0xea, 0x8f, 0x2e, 0x0c, 0xf0, 0x88, 0x70, 0x91, 0x4b, 0x8b, 0xf9, 0x47, 0x79, 0xb4, 0x38, 0x16, + 0x25, 0x28, 0x91, 0x51, 0x16, 0x23, 0xb6, 0x9e, 0xe1, 0x30, 0xa2, 0x38, 0xf2, 0xc3, 0x2c, 0xd0, + 0xb3, 0xfa, 0xd1, 0x7f, 0xb4, 0x97, 0xa3, 0xff, 0x58, 0xd7, 0x63, 0xff, 0x17, 0x1c, 0x18, 0xad, + 0x68, 0xcf, 0x62, 0x94, 0x1e, 0xb7, 0xf5, 0x02, 0x79, 0xde, 0xeb, 0x25, 0xdc, 0xed, 0x66, 0x3c, + 0xc3, 0x61, 0x70, 0x67, 0x09, 0x44, 0x99, 0x9d, 0x83, 0xa9, 0x3a, 0x56, 0x12, 0x73, 0x98, 0x76, + 0x13, 0x19, 0xad, 0x4a, 0x61, 0x58, 0xf0, 0x42, 0xaf, 0xc3, 0x90, 0xbc, 0x54, 0x20, 0x82, 0xef, + 0xb1, 0x0d, 0x3f, 0x88, 0xe9, 0x6c, 0x95, 0x59, 0x07, 0x39, 0x14, 0x2b, 0x8e, 0xa8, 0x0e, 0x7d, + 0x55, 0xaf, 0x26, 0xc2, 0xf0, 0x57, 0xed, 0x64, 0x75, 0x95, 0x3c, 0xd9, 0x91, 0x74, 0x7e, 0x66, + 0x11, 0x53, 0x16, 0xe8, 0x66, 0xfa, 0xae, 0xc0, 0x84, 0xb5, 0xdd, 0xd7, 0x54, 0x0b, 0xb9, 0x4e, + 0xd0, 0xf1, 0x4c, 0x41, 0x55, 0xf8, 0xa7, 0xff, 0x0a, 0x63, 0xbb, 0x60, 0x27, 0x2d, 0x2c, 0x4f, + 0xf4, 0x92, 0xfa, 0xb8, 0x29, 0x97, 0x7a, 0x92, 0xb4, 0x4a, 0x3f, 0x6b, 0x8b, 0x0b, 0x4b, 0x57, + 0xc2, 0x1f, 0x8b, 0xdf, 0xd8, 0x58, 0xc7, 0x8c, 0x3a, 0x6a, 0xc0, 0x40, 0x8b, 0x85, 0xce, 0x94, + 0xde, 0x69, 0x6b, 0x6f, 0xe1, 0xa1, 0x38, 0x7c, 0x6e, 0xf2, 0xff, 0xb1, 0xe0, 0x81, 0x2e, 0xc1, + 0x20, 0x7f, 0x1e, 0x87, 0x5f, 0x83, 0x18, 0xb9, 0x38, 0xd9, 0xfd, 0x91, 0x9d, 0x74, 0xa3, 0xe0, + 0xbf, 0x63, 0x2c, 0xeb, 0xa2, 0x2f, 0x3a, 0x30, 0x4e, 0x25, 0x6a, 0xfa, 0x9e, 0x4f, 0x09, 0xd9, + 0x92, 0x59, 0x57, 0x63, 0xaa, 0x91, 0x48, 0x59, 0xa3, 0x8e, 0x85, 0x4b, 0x06, 0x3b, 0x9c, 0x61, + 0x8f, 0xde, 0x80, 0xa1, 0xd8, 0xaf, 0x92, 0x8a, 0x17, 0xc5, 0xa5, 0x53, 0x47, 0xd3, 0x94, 0xd4, + 0x23, 0x26, 0x18, 0x61, 0xc5, 0x12, 0xfd, 0x32, 0x7b, 0xd3, 0xb5, 0x52, 0xf7, 0x77, 0xc8, 0x4a, + 0x58, 0xe1, 0xc7, 0x98, 0xd3, 0xb6, 0xd6, 0xbe, 0xf4, 0xfd, 0x49, 0xca, 0xc2, 0x51, 0x64, 0xb2, + 0xc3, 0x59, 0xfe, 0xe8, 0x6f, 0x39, 0x70, 0x86, 0x3f, 0x7c, 0x90, 0x7d, 0xcb, 0xe3, 0xcc, 0x21, + 0x4d, 0x52, 0xec, 0xfe, 0xc6, 0x4c, 0x1e, 0x49, 0x9c, 0xcf, 0x89, 0xa5, 0x29, 0x36, 0x9f, 0x5f, + 0x3a, 0x6b, 0xd5, 0x33, 0xdc, 0xfb, 0x93, 0x4b, 0xe8, 0x29, 0x18, 0x69, 0x89, 0xed, 0xd0, 0x8f, + 0x9b, 0xec, 0x36, 0x4e, 0x1f, 0xbf, 0x27, 0xb9, 0x9e, 0x82, 0xb1, 0x8e, 0x63, 0xe4, 0xac, 0x7e, + 0x62, 0xbf, 0x9c, 0xd5, 0xe8, 0x2a, 0x8c, 0x24, 0x61, 0x43, 0xa4, 0x6d, 0x8d, 0x4b, 0x25, 0x36, + 0x03, 0xcf, 0xe7, 0xad, 0xad, 0x0d, 0x85, 0x96, 0x9e, 0xdc, 0x53, 0x58, 0x8c, 0x75, 0x3a, 0x2c, + 0x02, 0x5a, 0x3c, 0x28, 0x11, 0xb1, 0x23, 0xfb, 0xfd, 0x99, 0x08, 0x68, 0xbd, 0x10, 0x9b, 0xb8, + 0x68, 0x11, 0x4e, 0xb6, 0x3a, 0xce, 0xfc, 0xfc, 0x16, 0xa0, 0x0a, 0x3a, 0xe9, 0x3c, 0xf0, 0x77, + 0xd6, 0x31, 0x4e, 0xfb, 0x0f, 0xec, 0x77, 0xda, 0xef, 0x92, 0xc1, 0xf9, 0xc1, 0xc3, 0x64, 0x70, + 0x46, 0x55, 0x78, 0xd0, 0x6b, 0x27, 0x21, 0x4b, 0xc9, 0x63, 0x56, 0xe1, 0xc1, 0xe0, 0x0f, 0xf3, + 0xf8, 0xf2, 0x5b, 0x7b, 0x53, 0x0f, 0xce, 0xec, 0x83, 0x87, 0xf7, 0xa5, 0x82, 0x5e, 0x85, 0x21, + 0x22, 0xb2, 0x50, 0x97, 0x7e, 0xc6, 0x96, 0x92, 0x60, 0xe6, 0xb5, 0x96, 0x71, 0xb6, 0x1c, 0x86, + 0x15, 0x3f, 0xb4, 0x01, 0x23, 0xf5, 0x30, 0x4e, 0x66, 0x1a, 0xbe, 0x17, 0x93, 0xb8, 0xf4, 0x10, + 0x9b, 0x34, 0xb9, 0xba, 0xd7, 0x65, 0x89, 0x96, 0xce, 0x99, 0xcb, 0x69, 0x4d, 0xac, 0x93, 0x41, + 0x84, 0xf9, 0x87, 0x59, 0x24, 0xbc, 0xf4, 0x7d, 0x9d, 0x67, 0x1d, 0x7b, 0x2c, 0x8f, 0xf2, 0x7a, + 0x58, 0x2d, 0x9b, 0xd8, 0xca, 0x41, 0xac, 0x03, 0x71, 0x96, 0x26, 0x7a, 0x06, 0x46, 0x5b, 0x61, + 0xb5, 0xdc, 0x22, 0x95, 0x75, 0x2f, 0xa9, 0xd4, 0x4b, 0x53, 0xa6, 0x95, 0x71, 0x5d, 0x2b, 0xc3, + 0x06, 0x26, 0x6a, 0xc1, 0x60, 0x93, 0xe7, 0x6a, 0x28, 0x3d, 0x62, 0xeb, 0x6c, 0x23, 0x92, 0x3f, + 0x08, 0x1b, 0x02, 0xff, 0x81, 0x25, 0x1b, 0xf4, 0x0f, 0x1d, 0x38, 0x91, 0xb9, 0x5f, 0x56, 0x7a, + 0x87, 0x35, 0x95, 0xc5, 0x24, 0x3c, 0xfb, 0x18, 0x1b, 0x3e, 0x13, 0x78, 0xbb, 0x13, 0x84, 0xb3, + 0x2d, 0xe2, 0xe3, 0xc2, 0x12, 0xae, 0x94, 0x1e, 0xb5, 0x37, 0x2e, 0x8c, 0xa0, 0x1c, 0x17, 0xf6, + 0x03, 0x4b, 0x36, 0xe8, 0x09, 0x18, 0x14, 0xb9, 0x11, 0x4b, 0x8f, 0x99, 0x5e, 0x77, 0x91, 0x42, + 0x11, 0xcb, 0xf2, 0xc9, 0x0f, 0xc0, 0xc9, 0x8e, 0xa3, 0xdb, 0x81, 0xb2, 0x7e, 0xfc, 0xaa, 0x03, + 0xfa, 0x85, 0x74, 0xeb, 0x4f, 0xbf, 0x3c, 0x03, 0xa3, 0x15, 0xfe, 0x12, 0x27, 0xbf, 0xd2, 0xde, + 0x6f, 0xda, 0x7b, 0xe7, 0xb4, 0x32, 0x6c, 0x60, 0xba, 0x97, 0x01, 0x75, 0xe6, 0xe5, 0x3f, 0x94, + 0xe3, 0xe4, 0x1f, 0x3b, 0x30, 0x66, 0xe8, 0x0c, 0xd6, 0xfd, 0xaa, 0x0b, 0x80, 0x9a, 0x7e, 0x14, + 0x85, 0x91, 0xfe, 0xe4, 0xa1, 0x48, 0x3b, 0xc1, 0xe2, 0x2d, 0x56, 0x3b, 0x4a, 0x71, 0x4e, 0x0d, + 0xf7, 0x9f, 0xf6, 0x43, 0x1a, 0x68, 0xae, 0xb2, 0x16, 0x3b, 0x5d, 0xb3, 0x16, 0x3f, 0x09, 0x43, + 0x2f, 0xc7, 0x61, 0xb0, 0x9e, 0xe6, 0x36, 0x56, 0xdf, 0xe2, 0xd9, 0xf2, 0xda, 0x15, 0x86, 0xa9, + 0x30, 0x18, 0xf6, 0x2b, 0x0b, 0x7e, 0x23, 0xe9, 0x4c, 0x7e, 0xfb, 0xec, 0x73, 0x1c, 0x8e, 0x15, + 0x06, 0x7b, 0xfd, 0x70, 0x87, 0x28, 0x47, 0x40, 0xfa, 0xfa, 0x21, 0x7f, 0x72, 0x83, 0x95, 0xa1, + 0x0b, 0x30, 0xac, 0x9c, 0x08, 0xc2, 0x33, 0xa1, 0x46, 0x4a, 0x79, 0x1a, 0x70, 0x8a, 0xc3, 0x14, + 0x42, 0x61, 0x78, 0x16, 0x26, 0x94, 0xb2, 0x8d, 0xe3, 0x49, 0xc6, 0x94, 0xcd, 0x65, 0xbb, 0x04, + 0x63, 0xc5, 0x32, 0xcf, 0xb7, 0x3c, 0x7c, 0x24, 0xbe, 0x65, 0xed, 0xd6, 0x43, 0xb1, 0xd7, 0x5b, + 0x0f, 0xe6, 0xdc, 0x1e, 0xea, 0x69, 0x6e, 0x7f, 0xba, 0x0f, 0x06, 0xaf, 0x91, 0x88, 0xa5, 0x8d, + 0x7f, 0x02, 0x06, 0x77, 0xf8, 0xbf, 0xd9, 0x2b, 0xb3, 0x02, 0x03, 0xcb, 0x72, 0xfa, 0xdd, 0x36, + 0xdb, 0x7e, 0xa3, 0x3a, 0x9f, 0xae, 0xe2, 0x34, 0xad, 0xa3, 0x2c, 0xc0, 0x29, 0x0e, 0xad, 0x50, + 0xa3, 0x9a, 0x7d, 0xb3, 0xe9, 0x27, 0xd9, 0x50, 0xb1, 0x45, 0x59, 0x80, 0x53, 0x1c, 0xf4, 0x18, + 0x0c, 0xd4, 0xfc, 0x64, 0xc3, 0xab, 0x65, 0x3d, 0xa3, 0x8b, 0x0c, 0x8a, 0x45, 0x29, 0x73, 0x8b, + 0xf9, 0xc9, 0x46, 0x44, 0x98, 0x65, 0xb7, 0x23, 0x63, 0xc7, 0xa2, 0x56, 0x86, 0x0d, 0x4c, 0xd6, + 0xa4, 0x50, 0xf4, 0x4c, 0xc4, 0xc9, 0xa6, 0x4d, 0x92, 0x05, 0x38, 0xc5, 0xa1, 0xf3, 0xbf, 0x12, + 0x36, 0x5b, 0x7e, 0x43, 0x44, 0x70, 0x6b, 0xf3, 0x7f, 0x4e, 0xc0, 0xb1, 0xc2, 0xa0, 0xd8, 0x54, + 0x84, 0x51, 0xf1, 0x93, 0x7d, 0x69, 0x6e, 0x5d, 0xc0, 0xb1, 0xc2, 0x70, 0xaf, 0xc1, 0x18, 0x5f, + 0xc9, 0x73, 0x0d, 0xcf, 0x6f, 0x2e, 0xce, 0xa1, 0x4b, 0x1d, 0xb7, 0x1e, 0x9e, 0xc8, 0xb9, 0xf5, + 0x70, 0xc6, 0xa8, 0xd4, 0x79, 0xfb, 0xc1, 0xfd, 0x61, 0x01, 0x86, 0x8e, 0xf1, 0xb1, 0xce, 0xe3, + 0x7f, 0xfa, 0xfa, 0x66, 0xe6, 0xa1, 0xce, 0x75, 0x9b, 0x97, 0x98, 0xf6, 0x7d, 0xa4, 0xf3, 0xbf, + 0x16, 0xe0, 0xac, 0x44, 0x95, 0x67, 0xb9, 0xc5, 0x39, 0xf6, 0x00, 0xda, 0xd1, 0x0f, 0x74, 0x64, + 0x0c, 0xf4, 0xba, 0xbd, 0xd3, 0xe8, 0xe2, 0x5c, 0xd7, 0xa1, 0x7e, 0x35, 0x33, 0xd4, 0xd8, 0x2a, + 0xd7, 0xfd, 0x07, 0xfb, 0xcf, 0x1c, 0x98, 0xcc, 0x1f, 0xec, 0x63, 0x78, 0x1b, 0xf5, 0x0d, 0xf3, + 0x6d, 0x54, 0x8b, 0x8f, 0xab, 0x9b, 0x5d, 0xe9, 0xf2, 0x4a, 0xea, 0xff, 0x74, 0xe0, 0xb4, 0xac, + 0xc0, 0x76, 0xcf, 0x59, 0x3f, 0x60, 0xc1, 0x3b, 0x47, 0x3f, 0xcd, 0x5e, 0x37, 0xa6, 0xd9, 0x0b, + 0xf6, 0x3a, 0xae, 0xf7, 0xa3, 0xdb, 0x84, 0x73, 0xff, 0xd4, 0x81, 0x52, 0x5e, 0x85, 0x63, 0xf8, + 0xe4, 0xaf, 0x99, 0x9f, 0xfc, 0xda, 0xd1, 0xf4, 0xbc, 0xfb, 0x07, 0x2f, 0x75, 0x1b, 0x28, 0xd4, + 0x90, 0x7a, 0x95, 0x63, 0xcb, 0x27, 0xcd, 0x59, 0xe4, 0x2b, 0x68, 0x0d, 0x18, 0x88, 0x59, 0x94, + 0x8a, 0x98, 0x02, 0x97, 0x6d, 0x68, 0x5b, 0x94, 0x9e, 0xb0, 0xb1, 0xb3, 0xff, 0xb1, 0xe0, 0xe1, + 0xfe, 0x5a, 0x01, 0xce, 0xa9, 0x37, 0x8f, 0xc9, 0x0e, 0x69, 0xa4, 0xeb, 0x83, 0xbd, 0x90, 0xe1, + 0xa9, 0x9f, 0xf6, 0x5e, 0xc8, 0x48, 0x59, 0xa4, 0x6b, 0x21, 0x85, 0x61, 0x8d, 0x27, 0x2a, 0xc3, + 0x19, 0xf6, 0xa2, 0xc5, 0x82, 0x1f, 0x78, 0x0d, 0xff, 0x55, 0x12, 0x61, 0xd2, 0x0c, 0x77, 0xbc, + 0x86, 0xd0, 0xd4, 0xd5, 0xad, 0xe9, 0x85, 0x3c, 0x24, 0x9c, 0x5f, 0xb7, 0xe3, 0xc4, 0xdd, 0xd7, + 0xeb, 0x89, 0xdb, 0xfd, 0x43, 0x07, 0x46, 0x8f, 0xf1, 0x85, 0xe8, 0xd0, 0x5c, 0x12, 0xcf, 0xda, + 0x5b, 0x12, 0x5d, 0x96, 0xc1, 0x5e, 0x11, 0x3a, 0x1e, 0xcd, 0x45, 0x9f, 0x71, 0x54, 0x1c, 0x0f, + 0x8f, 0x97, 0xfc, 0xb0, 0xbd, 0x76, 0x1c, 0x24, 0xd5, 0x26, 0xfa, 0x46, 0x26, 0xff, 0x68, 0xc1, + 0x56, 0x12, 0xad, 0x8e, 0xd6, 0x1c, 0x22, 0x0f, 0xe9, 0x57, 0x1d, 0x00, 0xde, 0x4e, 0x91, 0xbe, + 0x9c, 0xb6, 0x6d, 0xf3, 0xc8, 0x46, 0x8a, 0x32, 0xe1, 0x4d, 0x53, 0x4b, 0x28, 0x2d, 0xc0, 0x5a, + 0x4b, 0xee, 0x22, 0xc1, 0xe8, 0x5d, 0xe7, 0x36, 0xfd, 0xa2, 0x03, 0x27, 0x32, 0xcd, 0xcd, 0xa9, + 0xbf, 0x65, 0xbe, 0xf1, 0x68, 0x41, 0xb3, 0x32, 0x93, 0x5a, 0xeb, 0xc6, 0x93, 0xff, 0xee, 0x82, + 0xf1, 0xda, 0x38, 0x7a, 0x0d, 0x86, 0xa5, 0xe5, 0x43, 0x4e, 0x6f, 0x9b, 0x6f, 0xdd, 0xaa, 0xe3, + 0x8d, 0x84, 0xc4, 0x38, 0xe5, 0x97, 0x09, 0x13, 0x2c, 0xf4, 0x14, 0x26, 0x78, 0x6f, 0x5f, 0xca, + 0xcd, 0xb7, 0x4b, 0xf7, 0x1f, 0x89, 0x5d, 0xfa, 0x41, 0xeb, 0x76, 0xe9, 0x87, 0x8e, 0xd9, 0x2e, + 0xad, 0x39, 0x09, 0x8b, 0x77, 0xe1, 0x24, 0x7c, 0x0d, 0x4e, 0xef, 0xa4, 0x87, 0x4e, 0x35, 0x93, + 0x44, 0xea, 0xa6, 0x27, 0x72, 0xad, 0xd1, 0xf4, 0x00, 0x1d, 0x27, 0x24, 0x48, 0xb4, 0xe3, 0x6a, + 0x1a, 0xa1, 0x78, 0x2d, 0x87, 0x1c, 0xce, 0x65, 0x92, 0xf5, 0xf6, 0x0c, 0xf6, 0xe0, 0xed, 0x79, + 0xcb, 0x81, 0x33, 0x5e, 0xc7, 0x35, 0x3b, 0x4c, 0xb6, 0x44, 0xc8, 0xc9, 0x75, 0x7b, 0x2a, 0x84, + 0x41, 0x5e, 0xb8, 0xd5, 0xf2, 0x8a, 0x70, 0x7e, 0x83, 0xd0, 0xa3, 0xa9, 0xeb, 0x9d, 0xc7, 0xb5, + 0xe6, 0xfb, 0xc9, 0xbf, 0x91, 0x8d, 0xe7, 0x01, 0x36, 0xf4, 0x1f, 0xb5, 0x7b, 0xda, 0xb6, 0x10, + 0xd3, 0x33, 0x72, 0x17, 0x31, 0x3d, 0x19, 0xd7, 0xdb, 0xa8, 0x25, 0xd7, 0x5b, 0x00, 0x13, 0x7e, + 0xd3, 0xab, 0x91, 0xf5, 0x76, 0xa3, 0xc1, 0xef, 0xcd, 0xc8, 0xd7, 0x88, 0x73, 0x2d, 0x78, 0x2b, + 0x61, 0xc5, 0x6b, 0x64, 0xdf, 0xa1, 0x57, 0xf7, 0x83, 0x96, 0x32, 0x94, 0x70, 0x07, 0x6d, 0x3a, + 0x61, 0x59, 0x0e, 0x41, 0x92, 0xd0, 0xd1, 0x66, 0x81, 0x23, 0x43, 0x7c, 0xc2, 0x5e, 0x4e, 0xc1, + 0x58, 0xc7, 0x41, 0xcb, 0x30, 0x5c, 0x0d, 0x62, 0x71, 0x63, 0xf8, 0x04, 0x13, 0x66, 0xef, 0xa2, + 0x22, 0x70, 0xfe, 0x4a, 0x59, 0xdd, 0x15, 0x7e, 0x30, 0x27, 0x29, 0xa6, 0x2a, 0xc7, 0x69, 0x7d, + 0xb4, 0xca, 0x88, 0x89, 0x77, 0xd6, 0x78, 0x3c, 0xc7, 0xc3, 0x5d, 0x1c, 0x46, 0xf3, 0x57, 0xe4, + 0x4b, 0x71, 0x63, 0x82, 0x9d, 0x78, 0x30, 0x2d, 0xa5, 0xa0, 0xbd, 0x0a, 0x7d, 0x72, 0xdf, 0x57, + 0xa1, 0x59, 0x36, 0xdc, 0xa4, 0xa1, 0xdc, 0xc3, 0xe7, 0xad, 0x65, 0xc3, 0x4d, 0x23, 0x25, 0x45, + 0x36, 0xdc, 0x14, 0x80, 0x75, 0x96, 0x68, 0xad, 0x9b, 0x9b, 0xfc, 0x14, 0x13, 0x1a, 0x07, 0x77, + 0x7a, 0xeb, 0xfe, 0xd2, 0xd3, 0xfb, 0xfa, 0x4b, 0x3b, 0xfc, 0xbb, 0x67, 0x0e, 0xe0, 0xdf, 0xad, + 0xb3, 0x3c, 0xa5, 0x8b, 0x73, 0xc2, 0xa5, 0x6e, 0xe1, 0x7c, 0xc7, 0x32, 0xa3, 0xf0, 0xc8, 0x53, + 0xf6, 0x2f, 0xe6, 0x0c, 0xba, 0x06, 0x90, 0x9f, 0x3b, 0x74, 0x00, 0x39, 0x15, 0xcf, 0x29, 0x9c, + 0x25, 0xbc, 0x2d, 0x0a, 0xf1, 0x9c, 0x82, 0xb1, 0x8e, 0x93, 0xf5, 0x96, 0xde, 0x7f, 0x64, 0xde, + 0xd2, 0xc9, 0x63, 0xf0, 0x96, 0x3e, 0xd0, 0xb3, 0xb7, 0xf4, 0x26, 0x9c, 0x6a, 0x85, 0xd5, 0x79, + 0x3f, 0x8e, 0xda, 0xec, 0x22, 0xe1, 0x6c, 0xbb, 0x5a, 0x23, 0x09, 0x73, 0xb7, 0x8e, 0x5c, 0x7c, + 0x97, 0xde, 0xc8, 0x16, 0x5b, 0xc8, 0x72, 0x8d, 0x66, 0x2a, 0x30, 0xd3, 0x09, 0x8b, 0xba, 0xcd, + 0x29, 0xc4, 0x79, 0x2c, 0x74, 0x3f, 0xed, 0xc3, 0xc7, 0xe3, 0xa7, 0xfd, 0x20, 0x0c, 0xc5, 0xf5, + 0x76, 0x52, 0x0d, 0x6f, 0x04, 0xcc, 0x19, 0x3f, 0x3c, 0xfb, 0x0e, 0x65, 0xca, 0x16, 0xf0, 0xdb, + 0x7b, 0x53, 0x13, 0xf2, 0x7f, 0xcd, 0x8a, 0x2d, 0x20, 0xe8, 0x9b, 0x5d, 0xee, 0x2b, 0xb9, 0x47, + 0x79, 0x5f, 0xe9, 0xdc, 0x81, 0xee, 0x2a, 0xe5, 0x39, 0xa3, 0x1f, 0xf9, 0xa9, 0x73, 0x46, 0x7f, + 0xdd, 0x81, 0xb1, 0x1d, 0xdd, 0x65, 0x20, 0x1c, 0xe6, 0x16, 0x02, 0x77, 0x0c, 0x4f, 0xc4, 0xac, + 0x4b, 0xe5, 0x9c, 0x01, 0xba, 0x9d, 0x05, 0x60, 0xb3, 0x25, 0x39, 0x41, 0x45, 0x8f, 0xde, 0xab, + 0xa0, 0xa2, 0x37, 0x98, 0x1c, 0x93, 0x87, 0x5c, 0xe6, 0x45, 0xb7, 0x1b, 0x53, 0x2c, 0x65, 0xa2, + 0x0a, 0x29, 0xd6, 0xf9, 0xa1, 0x2f, 0x38, 0x30, 0x21, 0xcf, 0x65, 0xc2, 0xe5, 0x17, 0x8b, 0xa8, + 0x48, 0x9b, 0xc7, 0x41, 0x16, 0x56, 0xbf, 0x91, 0xe1, 0x83, 0x3b, 0x38, 0x53, 0xa9, 0xae, 0x82, + 0xd0, 0x6a, 0x31, 0x0b, 0xfe, 0x15, 0x3a, 0xcc, 0x4c, 0x0a, 0xc6, 0x3a, 0x0e, 0xfa, 0x96, 0x03, + 0xc5, 0x7a, 0x18, 0x6e, 0xc7, 0xa5, 0x27, 0x98, 0x40, 0x7f, 0xde, 0xb2, 0x6e, 0x7a, 0x99, 0xd2, + 0xe6, 0x4a, 0xe9, 0x53, 0xd2, 0x76, 0xc4, 0x60, 0xb7, 0xf7, 0xa6, 0xc6, 0x8d, 0xe7, 0x9c, 0xe2, + 0x37, 0xdf, 0xd6, 0x20, 0xc2, 0xb6, 0xc9, 0x9a, 0x86, 0xbe, 0xec, 0xc0, 0xc4, 0x8d, 0x8c, 0x41, + 0x43, 0x84, 0x85, 0x62, 0xfb, 0xa6, 0x12, 0x3e, 0xdc, 0x59, 0x28, 0xee, 0x68, 0x01, 0xfa, 0xbc, + 0x69, 0xe8, 0xe4, 0xf1, 0xa3, 0x16, 0x07, 0x30, 0x63, 0x58, 0xe5, 0xd7, 0x82, 0xf2, 0x2d, 0x9e, + 0x77, 0x1d, 0x1f, 0x32, 0x49, 0x3b, 0x93, 0x7e, 0xac, 0x9c, 0xaa, 0xc4, 0xb4, 0xb7, 0x58, 0x58, + 0xec, 0xc6, 0xe7, 0xd7, 0xcd, 0x2d, 0x5f, 0x3e, 0x0b, 0xe3, 0xa6, 0x6f, 0x0f, 0xbd, 0xdb, 0x7c, + 0xaa, 0xe3, 0x7c, 0xf6, 0xd5, 0x83, 0x31, 0x89, 0x6f, 0xbc, 0x7c, 0x60, 0x3c, 0x4d, 0x50, 0x38, + 0xd2, 0xa7, 0x09, 0xfa, 0x8e, 0xe7, 0x69, 0x82, 0x89, 0xa3, 0x78, 0x9a, 0xe0, 0xe4, 0x81, 0x9e, + 0x26, 0xd0, 0x9e, 0x86, 0xe8, 0xbf, 0xc3, 0xd3, 0x10, 0x33, 0x70, 0x42, 0xde, 0xfd, 0x21, 0x22, + 0xfb, 0x3b, 0x77, 0xfb, 0xab, 0x57, 0xc6, 0xe7, 0xcc, 0x62, 0x9c, 0xc5, 0xa7, 0x8b, 0xac, 0x18, + 0xb0, 0x9a, 0x03, 0xb6, 0xde, 0x8d, 0x32, 0xa7, 0x16, 0x3b, 0x3e, 0x0b, 0x11, 0x25, 0xa3, 0x9d, + 0x8b, 0x0c, 0x76, 0x5b, 0xfe, 0x83, 0x79, 0x0b, 0xd0, 0x4b, 0x50, 0x0a, 0xb7, 0xb6, 0x1a, 0xa1, + 0x57, 0x4d, 0xdf, 0x4f, 0x90, 0x71, 0x09, 0xfc, 0xae, 0xaa, 0x4a, 0xb7, 0xbb, 0xd6, 0x05, 0x0f, + 0x77, 0xa5, 0x80, 0xde, 0xa2, 0x8a, 0x49, 0x12, 0x46, 0xa4, 0x9a, 0xda, 0x6a, 0x86, 0x59, 0x9f, + 0x89, 0xf5, 0x3e, 0x97, 0x4d, 0x3e, 0xbc, 0xf7, 0xea, 0xa3, 0x64, 0x4a, 0x71, 0xb6, 0x59, 0x28, + 0x82, 0xb3, 0xad, 0x3c, 0x53, 0x51, 0x2c, 0x6e, 0x2c, 0xed, 0x67, 0xb0, 0x52, 0x6f, 0x69, 0xe7, + 0x1a, 0x9b, 0x62, 0xdc, 0x85, 0xb2, 0xfe, 0xc6, 0xc1, 0xd0, 0xf1, 0xbc, 0x71, 0xf0, 0x71, 0x80, + 0x8a, 0xcc, 0xb6, 0x26, 0x8d, 0x0f, 0xcb, 0x56, 0xae, 0xd2, 0x70, 0x9a, 0xda, 0xb3, 0xb2, 0x8a, + 0x0d, 0xd6, 0x58, 0xa2, 0xff, 0x9b, 0xfb, 0x08, 0x08, 0xb7, 0xb0, 0xd4, 0xac, 0xcf, 0x89, 0x9f, + 0xba, 0x87, 0x40, 0xfe, 0x91, 0x03, 0x93, 0x7c, 0xe6, 0x65, 0x95, 0x7b, 0xaa, 0x5a, 0x88, 0xbb, + 0x3d, 0xb6, 0x43, 0x57, 0x78, 0xd6, 0x24, 0x83, 0x2b, 0x73, 0x74, 0xef, 0xd3, 0x12, 0xf4, 0xd5, + 0x9c, 0x23, 0xc5, 0x09, 0x5b, 0x36, 0xcb, 0xfc, 0xa7, 0x1c, 0x4e, 0xdd, 0xea, 0xe5, 0x14, 0xf1, + 0x4f, 0xba, 0x9a, 0x54, 0x11, 0x6b, 0xde, 0xcf, 0x1f, 0x91, 0x49, 0x55, 0x7f, 0x6f, 0xe2, 0x40, + 0x86, 0xd5, 0x2f, 0x3a, 0x30, 0xe1, 0x65, 0x42, 0x4d, 0x98, 0x1d, 0xc8, 0x8a, 0x4d, 0x6a, 0x26, + 0x4a, 0xe3, 0x57, 0x98, 0x92, 0x97, 0x8d, 0x6a, 0xc1, 0x1d, 0xcc, 0xd1, 0x0f, 0x1d, 0x78, 0x20, + 0xf1, 0xe2, 0x6d, 0x9e, 0xcd, 0x39, 0x4e, 0xef, 0xea, 0x8a, 0xc6, 0x9d, 0x66, 0xab, 0xf1, 0x15, + 0xeb, 0xab, 0x71, 0xa3, 0x3b, 0x4f, 0xbe, 0x2e, 0x1f, 0x11, 0xeb, 0xf2, 0x81, 0x7d, 0x30, 0xf1, + 0x7e, 0x4d, 0x9f, 0xfc, 0x8c, 0xc3, 0x5f, 0xfd, 0xea, 0xaa, 0xf2, 0x6d, 0x9a, 0x2a, 0xdf, 0x8a, + 0xcd, 0x77, 0x87, 0x74, 0xdd, 0xf3, 0x97, 0x1c, 0x38, 0x9d, 0xb7, 0x23, 0xe5, 0x34, 0xe9, 0xa3, + 0x66, 0x93, 0x2c, 0x9e, 0xb2, 0xf4, 0x06, 0x59, 0x79, 0xf6, 0x64, 0xf2, 0x0a, 0x3c, 0x7c, 0xa7, + 0xaf, 0x78, 0x27, 0x7a, 0x43, 0xba, 0x5a, 0xfc, 0xa7, 0xc3, 0x9a, 0x17, 0x32, 0x21, 0x2d, 0xeb, + 0x31, 0xdc, 0x01, 0x0c, 0xf8, 0x41, 0xc3, 0x0f, 0x88, 0xb8, 0xaf, 0x69, 0xf3, 0x0c, 0x2b, 0x9e, + 0x2d, 0xa2, 0xd4, 0xb1, 0xe0, 0x72, 0x8f, 0x9d, 0x92, 0xd9, 0x87, 0xe0, 0xfa, 0x8f, 0xff, 0x21, + 0xb8, 0x1b, 0x30, 0x7c, 0xc3, 0x4f, 0xea, 0x2c, 0x98, 0x42, 0xf8, 0xfa, 0x2c, 0xdc, 0x73, 0xa4, + 0xe4, 0xd2, 0xbe, 0x5f, 0x97, 0x0c, 0x70, 0xca, 0x0b, 0x5d, 0xe0, 0x8c, 0x59, 0xe4, 0x76, 0x36, + 0xa4, 0xf6, 0xba, 0x2c, 0xc0, 0x29, 0x0e, 0x1d, 0xac, 0x51, 0xfa, 0x4b, 0xe6, 0x80, 0x12, 0x99, + 0x91, 0x6d, 0x64, 0xbc, 0x14, 0x14, 0xf9, 0x6d, 0xe2, 0xeb, 0x1a, 0x0f, 0x6c, 0x70, 0x54, 0xc9, + 0xa9, 0x87, 0xba, 0x26, 0xa7, 0x7e, 0x9d, 0x29, 0x6c, 0x89, 0x1f, 0xb4, 0xc9, 0x5a, 0x20, 0xe2, + 0xbd, 0x57, 0xec, 0xdc, 0x7d, 0xe6, 0x34, 0xf9, 0x11, 0x3c, 0xfd, 0x8d, 0x35, 0x7e, 0x9a, 0xcb, + 0x65, 0x64, 0x5f, 0x97, 0x4b, 0x6a, 0x72, 0x19, 0xb5, 0x6e, 0x72, 0x49, 0x48, 0xcb, 0x8a, 0xc9, + 0xe5, 0xa7, 0xca, 0x1c, 0xf0, 0x67, 0x0e, 0x20, 0xa5, 0x77, 0x29, 0x81, 0x7a, 0x0c, 0x41, 0x95, + 0x9f, 0x70, 0x00, 0x02, 0xf5, 0x5c, 0xa8, 0xdd, 0x5d, 0x90, 0xd3, 0x4c, 0x1b, 0x90, 0xc2, 0xb0, + 0xc6, 0xd3, 0xfd, 0x13, 0x27, 0x8d, 0x5d, 0x4e, 0xfb, 0x7e, 0x0c, 0x41, 0x64, 0xbb, 0x66, 0x10, + 0xd9, 0x86, 0x45, 0xd3, 0xbd, 0xea, 0x46, 0x97, 0x70, 0xb2, 0x3f, 0x2a, 0xc0, 0x09, 0x1d, 0xb9, + 0x4c, 0x8e, 0xe3, 0x63, 0xdf, 0x30, 0x22, 0x68, 0xaf, 0xda, 0xed, 0x6f, 0x59, 0x78, 0x80, 0xf2, + 0xa2, 0xb5, 0x3f, 0x9e, 0x89, 0xd6, 0xbe, 0x6e, 0x9f, 0xf5, 0xfe, 0x21, 0xdb, 0xff, 0xcd, 0x81, + 0x53, 0x99, 0x1a, 0xc7, 0x30, 0xc1, 0x76, 0xcc, 0x09, 0xf6, 0x9c, 0xf5, 0x5e, 0x77, 0x99, 0x5d, + 0xdf, 0x2e, 0x74, 0xf4, 0x96, 0x1d, 0xe2, 0x3e, 0xed, 0x40, 0x91, 0x6a, 0xcb, 0x32, 0x9e, 0xeb, + 0xa3, 0x47, 0x32, 0x03, 0x98, 0x5e, 0x2f, 0xa4, 0xb3, 0x6a, 0x1f, 0x83, 0x61, 0xce, 0x7d, 0xf2, + 0x53, 0x0e, 0x40, 0x8a, 0x74, 0xaf, 0x54, 0x60, 0xf7, 0xbb, 0x05, 0x38, 0x93, 0x3b, 0x8d, 0xd0, + 0x67, 0x95, 0x45, 0xce, 0xb1, 0x1d, 0xad, 0x68, 0x30, 0xd2, 0x0d, 0x73, 0x63, 0x86, 0x61, 0x4e, + 0xd8, 0xe3, 0xee, 0xd5, 0x01, 0x46, 0x88, 0x69, 0x6d, 0xb0, 0xfe, 0x4b, 0x21, 0x0d, 0x80, 0x55, + 0x79, 0x8d, 0xfe, 0x22, 0x5e, 0xe2, 0xf9, 0x84, 0x93, 0x11, 0x56, 0x1f, 0xb2, 0xef, 0xd2, 0xbd, + 0x83, 0xb4, 0xfa, 0x23, 0xed, 0x92, 0x85, 0xac, 0x72, 0x0c, 0xe2, 0xea, 0x86, 0x29, 0xae, 0xb0, + 0xfd, 0x7e, 0x77, 0x91, 0x57, 0xaf, 0x40, 0x9e, 0x6f, 0xbb, 0xb7, 0x3c, 0x94, 0xc6, 0x8d, 0xdc, + 0x42, 0xcf, 0x37, 0x72, 0xdb, 0x9a, 0xce, 0x61, 0x7c, 0x14, 0xf4, 0x22, 0x0c, 0x37, 0xbc, 0x38, + 0xc1, 0xed, 0x60, 0x46, 0xde, 0x6b, 0x38, 0x94, 0x43, 0x65, 0x45, 0x12, 0xc1, 0x29, 0x3d, 0x77, + 0x0c, 0x46, 0x5e, 0xf0, 0x55, 0xea, 0xd4, 0xd9, 0xe9, 0xef, 0xfd, 0xe8, 0xfc, 0x7d, 0xdf, 0xff, + 0xd1, 0xf9, 0xfb, 0x7e, 0xf8, 0xa3, 0xf3, 0xf7, 0x7d, 0xe2, 0xd6, 0x79, 0xe7, 0x7b, 0xb7, 0xce, + 0x3b, 0xdf, 0xbf, 0x75, 0xde, 0xf9, 0xe1, 0xad, 0xf3, 0xce, 0xbf, 0xbf, 0x75, 0xde, 0xf9, 0x3b, + 0xff, 0xe1, 0xfc, 0x7d, 0x2f, 0x0c, 0xc9, 0xf1, 0xfc, 0xf3, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf8, + 0x0c, 0xf4, 0xb1, 0x52, 0xda, 0x00, 0x00, } func (m *Amount) Marshal() (dAtA []byte, err error) { @@ -6757,6 +6789,16 @@ func (m *ClusterWorkflowTemplate) MarshalToSizedBuffer(dAtA []byte) (int, error) _ = i var l int _ = l + { + size, err := m.Status.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a { size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -14058,6 +14100,16 @@ func (m *WorkflowTemplate) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + { + size, err := m.Status.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a { size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -14164,6 +14216,39 @@ func (m *WorkflowTemplateRef) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *WorkflowTemplateStatus) 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 *WorkflowTemplateStatus) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *WorkflowTemplateStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.LastRunAt.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *ZipStrategy) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -14759,6 +14844,8 @@ func (m *ClusterWorkflowTemplate) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = m.Spec.Size() n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) return n } @@ -17377,6 +17464,8 @@ func (m *WorkflowTemplate) Size() (n int) { n += 1 + l + sovGenerated(uint64(l)) l = m.Spec.Size() n += 1 + l + sovGenerated(uint64(l)) + l = m.Status.Size() + n += 1 + l + sovGenerated(uint64(l)) return n } @@ -17409,6 +17498,17 @@ func (m *WorkflowTemplateRef) Size() (n int) { return n } +func (m *WorkflowTemplateStatus) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.LastRunAt.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + func (m *ZipStrategy) Size() (n int) { if m == nil { return 0 @@ -17837,6 +17937,7 @@ func (this *ClusterWorkflowTemplate) String() string { s := strings.Join([]string{`&ClusterWorkflowTemplate{`, `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v11.ObjectMeta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "WorkflowSpec", "WorkflowSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "WorkflowTemplateStatus", "WorkflowTemplateStatus", 1), `&`, ``, 1) + `,`, `}`, }, "") return s @@ -19776,6 +19877,7 @@ func (this *WorkflowTemplate) String() string { s := strings.Join([]string{`&WorkflowTemplate{`, `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v11.ObjectMeta", 1), `&`, ``, 1) + `,`, `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "WorkflowSpec", "WorkflowSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "WorkflowTemplateStatus", "WorkflowTemplateStatus", 1), `&`, ``, 1) + `,`, `}`, }, "") return s @@ -19807,6 +19909,16 @@ func (this *WorkflowTemplateRef) String() string { }, "") return s } +func (this *WorkflowTemplateStatus) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&WorkflowTemplateStatus{`, + `LastRunAt:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.LastRunAt), "Time", "v11.Time", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} func (this *ZipStrategy) String() string { if this == nil { return "nil" @@ -24867,6 +24979,39 @@ func (m *ClusterWorkflowTemplate) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", 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 err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -47633,6 +47778,39 @@ func (m *WorkflowTemplate) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", 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 err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -47873,6 +48051,89 @@ func (m *WorkflowTemplateRef) Unmarshal(dAtA []byte) error { } return nil } +func (m *WorkflowTemplateStatus) 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: WorkflowTemplateStatus: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: WorkflowTemplateStatus: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastRunAt", 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 err := m.LastRunAt.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 *ZipStrategy) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/pkg/apis/workflow/v1alpha1/generated.proto b/pkg/apis/workflow/v1alpha1/generated.proto index 5ae06f70e020..673a0353a074 100644 --- a/pkg/apis/workflow/v1alpha1/generated.proto +++ b/pkg/apis/workflow/v1alpha1/generated.proto @@ -367,6 +367,8 @@ message ClusterWorkflowTemplate { optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; optional WorkflowSpec spec = 2; + + optional WorkflowTemplateStatus status = 3; } // ClusterWorkflowTemplateList is list of ClusterWorkflowTemplate resources @@ -2267,6 +2269,8 @@ message WorkflowTemplate { optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; optional WorkflowSpec spec = 2; + + optional WorkflowTemplateStatus status = 3; } // WorkflowTemplateList is list of WorkflowTemplate resources @@ -2286,6 +2290,12 @@ message WorkflowTemplateRef { optional bool clusterScope = 2; } +// WorkflowTemplateStatus contains overall status information about a WorkflowTemplate +message WorkflowTemplateStatus { + // Time at which this workflowtemplate last run + optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastRunAt = 1; +} + // ZipStrategy will unzip zipped input artifacts message ZipStrategy { } diff --git a/pkg/apis/workflow/v1alpha1/openapi_generated.go b/pkg/apis/workflow/v1alpha1/openapi_generated.go index a89ff0719d32..c9987a8d150e 100644 --- a/pkg/apis/workflow/v1alpha1/openapi_generated.go +++ b/pkg/apis/workflow/v1alpha1/openapi_generated.go @@ -164,6 +164,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowTemplate": schema_pkg_apis_workflow_v1alpha1_WorkflowTemplate(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowTemplateList": schema_pkg_apis_workflow_v1alpha1_WorkflowTemplateList(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowTemplateRef": schema_pkg_apis_workflow_v1alpha1_WorkflowTemplateRef(ref), + "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowTemplateStatus": schema_pkg_apis_workflow_v1alpha1_WorkflowTemplateStatus(ref), "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.ZipStrategy": schema_pkg_apis_workflow_v1alpha1_ZipStrategy(ref), } } @@ -1532,12 +1533,18 @@ func schema_pkg_apis_workflow_v1alpha1_ClusterWorkflowTemplate(ref common.Refere Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowSpec"), }, }, + "status": { + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowTemplateStatus"), + }, + }, }, Required: []string{"metadata", "spec"}, }, }, Dependencies: []string{ - "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowSpec", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"}, + "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowSpec", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowTemplateStatus", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"}, } } @@ -8572,12 +8579,18 @@ func schema_pkg_apis_workflow_v1alpha1_WorkflowTemplate(ref common.ReferenceCall Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowSpec"), }, }, + "status": { + SchemaProps: spec.SchemaProps{ + Default: map[string]interface{}{}, + Ref: ref("github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowTemplateStatus"), + }, + }, }, Required: []string{"metadata", "spec"}, }, }, Dependencies: []string{ - "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowSpec", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"}, + "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowSpec", "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1.WorkflowTemplateStatus", "k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta"}, } } @@ -8657,6 +8670,28 @@ func schema_pkg_apis_workflow_v1alpha1_WorkflowTemplateRef(ref common.ReferenceC } } +func schema_pkg_apis_workflow_v1alpha1_WorkflowTemplateStatus(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "WorkflowTemplateStatus contains overall status information about a WorkflowTemplate", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "lastRunAt": { + SchemaProps: spec.SchemaProps{ + Description: "Time at which this workflowtemplate last run", + Default: map[string]interface{}{}, + Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Time"), + }, + }, + }, + }, + }, + Dependencies: []string{ + "k8s.io/apimachinery/pkg/apis/meta/v1.Time"}, + } +} + func schema_pkg_apis_workflow_v1alpha1_ZipStrategy(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ diff --git a/pkg/apis/workflow/v1alpha1/workflow_template_types.go b/pkg/apis/workflow/v1alpha1/workflow_template_types.go index 1317fc18b2a5..9125f175ac0d 100644 --- a/pkg/apis/workflow/v1alpha1/workflow_template_types.go +++ b/pkg/apis/workflow/v1alpha1/workflow_template_types.go @@ -14,7 +14,8 @@ import ( type WorkflowTemplate struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata" protobuf:"bytes,1,opt,name=metadata"` - Spec WorkflowSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + Spec WorkflowSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` + Status WorkflowTemplateStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` } type WorkflowTemplates []WorkflowTemplate @@ -60,3 +61,9 @@ func (wftmpl *WorkflowTemplate) GetResourceScope() ResourceScope { func (wftmpl *WorkflowTemplate) GetWorkflowSpec() *WorkflowSpec { return &wftmpl.Spec } + +// WorkflowTemplateStatus contains overall status information about a WorkflowTemplate +type WorkflowTemplateStatus struct { + // Time at which this workflowtemplate last run + LastRunAt metav1.Time `json:"lastRunAt,omitempty" protobuf:"bytes,1,opt,name=lastRunAt"` +} diff --git a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go index 7592ca05ced8..765f8fe26403 100644 --- a/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/workflow/v1alpha1/zz_generated.deepcopy.go @@ -776,6 +776,7 @@ func (in *ClusterWorkflowTemplate) DeepCopyInto(out *ClusterWorkflowTemplate) { out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) return } @@ -4254,6 +4255,7 @@ func (in *WorkflowTemplate) DeepCopyInto(out *WorkflowTemplate) { out.TypeMeta = in.TypeMeta in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) return } @@ -4324,6 +4326,23 @@ func (in *WorkflowTemplateRef) DeepCopy() *WorkflowTemplateRef { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *WorkflowTemplateStatus) DeepCopyInto(out *WorkflowTemplateStatus) { + *out = *in + in.LastRunAt.DeepCopyInto(&out.LastRunAt) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowTemplateStatus. +func (in *WorkflowTemplateStatus) DeepCopy() *WorkflowTemplateStatus { + if in == nil { + return nil + } + out := new(WorkflowTemplateStatus) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in WorkflowTemplates) DeepCopyInto(out *WorkflowTemplates) { { diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate.md index 353b7076e538..0df7c064c95b 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate.md @@ -12,6 +12,7 @@ Name | Type | Description | Notes **kind** | **String** | Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds | [optional] **metadata** | [**io.kubernetes.client.openapi.models.V1ObjectMeta**](io.kubernetes.client.openapi.models.V1ObjectMeta.md) | | **spec** | [**IoArgoprojWorkflowV1alpha1WorkflowSpec**](IoArgoprojWorkflowV1alpha1WorkflowSpec.md) | | +**status** | [**IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus**](IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus.md) | | [optional] diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplate.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplate.md index 5e721925b010..22e34b26b108 100644 --- a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplate.md +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplate.md @@ -12,6 +12,7 @@ Name | Type | Description | Notes **kind** | **String** | Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds | [optional] **metadata** | [**io.kubernetes.client.openapi.models.V1ObjectMeta**](io.kubernetes.client.openapi.models.V1ObjectMeta.md) | | **spec** | [**IoArgoprojWorkflowV1alpha1WorkflowSpec**](IoArgoprojWorkflowV1alpha1WorkflowSpec.md) | | +**status** | [**IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus**](IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus.md) | | [optional] diff --git a/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus.md b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus.md new file mode 100644 index 000000000000..c770a0faccee --- /dev/null +++ b/sdks/java/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus.md @@ -0,0 +1,14 @@ + + +# IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus + +WorkflowTemplateStatus contains overall status information about a WorkflowTemplate + +## Properties + +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**lastRunAt** | **java.time.Instant** | | [optional] + + + diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_cluster_workflow_template.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_cluster_workflow_template.py index b9b2c127ad4d..bc8f1e1fa411 100644 --- a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_cluster_workflow_template.py +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_cluster_workflow_template.py @@ -31,8 +31,10 @@ def lazy_import(): from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_spec import IoArgoprojWorkflowV1alpha1WorkflowSpec + from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_template_status import IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus from argo_workflows.model.object_meta import ObjectMeta globals()['IoArgoprojWorkflowV1alpha1WorkflowSpec'] = IoArgoprojWorkflowV1alpha1WorkflowSpec + globals()['IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus'] = IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus globals()['ObjectMeta'] = ObjectMeta @@ -93,6 +95,7 @@ def openapi_types(): 'spec': (IoArgoprojWorkflowV1alpha1WorkflowSpec,), # noqa: E501 'api_version': (str,), # noqa: E501 'kind': (str,), # noqa: E501 + 'status': (IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus,), # noqa: E501 } @cached_property @@ -105,6 +108,7 @@ def discriminator(): 'spec': 'spec', # noqa: E501 'api_version': 'apiVersion', # noqa: E501 'kind': 'kind', # noqa: E501 + 'status': 'status', # noqa: E501 } read_only_vars = { @@ -154,6 +158,7 @@ def _from_openapi_data(cls, metadata, spec, *args, **kwargs): # noqa: E501 _visited_composed_classes = (Animal,) api_version (str): APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources. [optional] # noqa: E501 kind (str): Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds. [optional] # noqa: E501 + status (IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -243,6 +248,7 @@ def __init__(self, metadata, spec, *args, **kwargs): # noqa: E501 _visited_composed_classes = (Animal,) api_version (str): APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources. [optional] # noqa: E501 kind (str): Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds. [optional] # noqa: E501 + status (IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_template.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_template.py index cefd3e6511f2..9c65ac7ebb73 100644 --- a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_template.py +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_template.py @@ -31,8 +31,10 @@ def lazy_import(): from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_spec import IoArgoprojWorkflowV1alpha1WorkflowSpec + from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_template_status import IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus from argo_workflows.model.object_meta import ObjectMeta globals()['IoArgoprojWorkflowV1alpha1WorkflowSpec'] = IoArgoprojWorkflowV1alpha1WorkflowSpec + globals()['IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus'] = IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus globals()['ObjectMeta'] = ObjectMeta @@ -93,6 +95,7 @@ def openapi_types(): 'spec': (IoArgoprojWorkflowV1alpha1WorkflowSpec,), # noqa: E501 'api_version': (str,), # noqa: E501 'kind': (str,), # noqa: E501 + 'status': (IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus,), # noqa: E501 } @cached_property @@ -105,6 +108,7 @@ def discriminator(): 'spec': 'spec', # noqa: E501 'api_version': 'apiVersion', # noqa: E501 'kind': 'kind', # noqa: E501 + 'status': 'status', # noqa: E501 } read_only_vars = { @@ -154,6 +158,7 @@ def _from_openapi_data(cls, metadata, spec, *args, **kwargs): # noqa: E501 _visited_composed_classes = (Animal,) api_version (str): APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources. [optional] # noqa: E501 kind (str): Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds. [optional] # noqa: E501 + status (IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -243,6 +248,7 @@ def __init__(self, metadata, spec, *args, **kwargs): # noqa: E501 _visited_composed_classes = (Animal,) api_version (str): APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources. [optional] # noqa: E501 kind (str): Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds. [optional] # noqa: E501 + status (IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_template_status.py b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_template_status.py new file mode 100644 index 000000000000..d58dec89a114 --- /dev/null +++ b/sdks/python/client/argo_workflows/model/io_argoproj_workflow_v1alpha1_workflow_template_status.py @@ -0,0 +1,255 @@ +""" + Argo Workflows API + + Argo Workflows is an open source container-native workflow engine for orchestrating parallel jobs on Kubernetes. For more information, please see https://argo-workflows.readthedocs.io/en/latest/ # noqa: E501 + + The version of the OpenAPI document: VERSION + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from argo_workflows.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, + OpenApiModel +) +from argo_workflows.exceptions import ApiAttributeError + + + +class IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + } + + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + return { + 'last_run_at': (datetime,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'last_run_at': 'lastRunAt', # noqa: E501 + } + + read_only_vars = { + } + + _composed_schemas = {} + + @classmethod + @convert_js_args_to_python_args + def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 + """IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus - a model defined in OpenAPI + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + last_run_at (datetime): Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.. [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + self = super(OpenApiModel, cls).__new__(cls) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) + return self + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, *args, **kwargs): # noqa: E501 + """IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus - a model defined in OpenAPI + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + last_run_at (datetime): Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.. [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) + if var_name in self.read_only_vars: + raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " + f"class with read only attributes.") diff --git a/sdks/python/client/argo_workflows/models/__init__.py b/sdks/python/client/argo_workflows/models/__init__.py index 75e1b8f38746..dabac1ef8095 100644 --- a/sdks/python/client/argo_workflows/models/__init__.py +++ b/sdks/python/client/argo_workflows/models/__init__.py @@ -321,6 +321,7 @@ from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_template_lint_request import IoArgoprojWorkflowV1alpha1WorkflowTemplateLintRequest from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_template_list import IoArgoprojWorkflowV1alpha1WorkflowTemplateList from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_template_ref import IoArgoprojWorkflowV1alpha1WorkflowTemplateRef +from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_template_status import IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_template_update_request import IoArgoprojWorkflowV1alpha1WorkflowTemplateUpdateRequest from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_terminate_request import IoArgoprojWorkflowV1alpha1WorkflowTerminateRequest from argo_workflows.model.io_argoproj_workflow_v1alpha1_workflow_watch_event import IoArgoprojWorkflowV1alpha1WorkflowWatchEvent diff --git a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md index f0d815b1073b..7224ba74df65 100644 --- a/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/ClusterWorkflowTemplateServiceApi.md @@ -11293,6 +11293,9 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", ), ), + status=IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus( + last_run_at=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), ), ) # IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateCreateRequest | @@ -22800,6 +22803,9 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", ), ), + status=IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus( + last_run_at=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), ), ) # IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateLintRequest | @@ -34213,6 +34219,9 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", ), ), + status=IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus( + last_run_at=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), ), ) # IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateUpdateRequest | diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate.md index 5f7ef820c86a..863652f37a70 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate.md @@ -9,6 +9,7 @@ Name | Type | Description | Notes **spec** | [**IoArgoprojWorkflowV1alpha1WorkflowSpec**](IoArgoprojWorkflowV1alpha1WorkflowSpec.md) | | **api_version** | **str** | APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources | [optional] **kind** | **str** | Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds | [optional] +**status** | [**IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus**](IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus.md) | | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplate.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplate.md index 932ccdf2006f..af0bd9d8c29f 100644 --- a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplate.md +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplate.md @@ -9,6 +9,7 @@ Name | Type | Description | Notes **spec** | [**IoArgoprojWorkflowV1alpha1WorkflowSpec**](IoArgoprojWorkflowV1alpha1WorkflowSpec.md) | | **api_version** | **str** | APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources | [optional] **kind** | **str** | Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds | [optional] +**status** | [**IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus**](IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus.md) | | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus.md b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus.md new file mode 100644 index 000000000000..4c30b8eb5066 --- /dev/null +++ b/sdks/python/client/docs/IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus.md @@ -0,0 +1,13 @@ +# IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus + +WorkflowTemplateStatus contains overall status information about a WorkflowTemplate + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**last_run_at** | **datetime** | Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers. | [optional] +**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/sdks/python/client/docs/WorkflowTemplateServiceApi.md b/sdks/python/client/docs/WorkflowTemplateServiceApi.md index 2319839824d7..30828c498d35 100644 --- a/sdks/python/client/docs/WorkflowTemplateServiceApi.md +++ b/sdks/python/client/docs/WorkflowTemplateServiceApi.md @@ -11295,6 +11295,9 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", ), ), + status=IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus( + last_run_at=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), ), ) # IoArgoprojWorkflowV1alpha1WorkflowTemplateCreateRequest | @@ -22809,6 +22812,9 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", ), ), + status=IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus( + last_run_at=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), ), ) # IoArgoprojWorkflowV1alpha1WorkflowTemplateLintRequest | @@ -34236,6 +34242,9 @@ with argo_workflows.ApiClient(configuration) as api_client: name="name_example", ), ), + status=IoArgoprojWorkflowV1alpha1WorkflowTemplateStatus( + last_run_at=dateutil_parser('1970-01-01T00:00:00.00Z'), + ), ), ) # IoArgoprojWorkflowV1alpha1WorkflowTemplateUpdateRequest | diff --git a/server/workflow/workflow_server.go b/server/workflow/workflow_server.go index 6f8e08a7386d..42a208bae8fe 100644 --- a/server/workflow/workflow_server.go +++ b/server/workflow/workflow_server.go @@ -774,8 +774,12 @@ func (s *workflowServer) SubmitWorkflow(ctx context.Context, req *workflowpkg.Wo return nil, sutils.ToStatusError(err, codes.Internal) } - wftmplGetter := templateresolution.WrapWorkflowTemplateInterface(wfClient.ArgoprojV1alpha1().WorkflowTemplates(req.Namespace)) - cwftmplGetter := templateresolution.WrapClusterWorkflowTemplateInterface(wfClient.ArgoprojV1alpha1().ClusterWorkflowTemplates()) + wftmplClient := wfClient.ArgoprojV1alpha1().WorkflowTemplates(req.Namespace) + cwftmplClient := wfClient.ArgoprojV1alpha1().ClusterWorkflowTemplates() + templateresolution.SetWorkflowTemplateClient(wftmplClient, cwftmplClient) + + wftmplGetter := templateresolution.WrapWorkflowTemplateInterface(wftmplClient) + cwftmplGetter := templateresolution.WrapClusterWorkflowTemplateInterface(cwftmplClient) err = validate.ValidateWorkflow(wftmplGetter, cwftmplGetter, wf, validate.ValidateOpts{Submit: true}) if err != nil { diff --git a/workflow/controller/operator.go b/workflow/controller/operator.go index bc86b71da857..e4a218241def 100644 --- a/workflow/controller/operator.go +++ b/workflow/controller/operator.go @@ -3677,7 +3677,11 @@ func (woc *wfOperationCtx) createTemplateContext(scope wfv1.ResourceScope, resou } else { clusterWorkflowTemplateGetter = &templateresolution.NullClusterWorkflowTemplateGetter{} } - ctx := templateresolution.NewContext(woc.controller.wftmplInformer.Lister().WorkflowTemplates(woc.wf.Namespace), clusterWorkflowTemplateGetter, woc.execWf, woc.wf) + + clientSet := woc.controller.wfclientset.ArgoprojV1alpha1().WorkflowTemplates(woc.controller.GetManagedNamespace()) + cClientSet := woc.controller.wfclientset.ArgoprojV1alpha1().ClusterWorkflowTemplates() + ctx := templateresolution.NewContextWithClientSet(woc.controller.wftmplInformer.Lister().WorkflowTemplates(woc.wf.Namespace), + clusterWorkflowTemplateGetter, clientSet, cClientSet, woc.execWf, woc.wf) switch scope { case wfv1.ResourceScopeNamespaced: diff --git a/workflow/templateresolution/context.go b/workflow/templateresolution/context.go index 131864685887..a19f3a1dd5dc 100644 --- a/workflow/templateresolution/context.go +++ b/workflow/templateresolution/context.go @@ -69,34 +69,71 @@ type Context struct { wftmplGetter WorkflowTemplateNamespacedGetter // cwftmplGetter is an interface to get ClusterWorkflowTemplates cwftmplGetter ClusterWorkflowTemplateGetter + // wftmplClient is an interface to operate WorkflowTemplates. + wftmplClient typed.WorkflowTemplateInterface + // cwftmplClient is an interface to operate ClusterWorkflowTemplates + cwftmplClient typed.ClusterWorkflowTemplateInterface // tmplBase is the base of local template search. tmplBase wfv1.TemplateHolder // workflow is the Workflow where templates will be stored workflow *wfv1.Workflow // log is a logrus entry. log *log.Entry + // wftmplStatusQueue is two queues for tmpl.Status update + wftmplStatusQueue *wftmplStatusQueue } // NewContext returns new Context. func NewContext(wftmplGetter WorkflowTemplateNamespacedGetter, cwftmplGetter ClusterWorkflowTemplateGetter, tmplBase wfv1.TemplateHolder, workflow *wfv1.Workflow) *Context { - return &Context{ + ctx := &Context{ wftmplGetter: wftmplGetter, cwftmplGetter: cwftmplGetter, + wftmplClient: wftmplClientHolder, + cwftmplClient: cwftmplClientHolder, tmplBase: tmplBase, workflow: workflow, log: log.WithFields(log.Fields{}), } + wftmplStatusQueue := NewTmplStatusQueue(ctx) + go wftmplStatusQueue.run(context.TODO()) + ctx.wftmplStatusQueue = wftmplStatusQueue + return ctx } -// NewContextFromClientSet returns new Context. -func NewContextFromClientSet(wftmplClientset typed.WorkflowTemplateInterface, clusterWftmplClient typed.ClusterWorkflowTemplateInterface, tmplBase wfv1.TemplateHolder, workflow *wfv1.Workflow) *Context { - return &Context{ - wftmplGetter: WrapWorkflowTemplateInterface(wftmplClientset), - cwftmplGetter: WrapClusterWorkflowTemplateInterface(clusterWftmplClient), +var ( + wftmplClientHolder typed.WorkflowTemplateInterface + cwftmplClientHolder typed.ClusterWorkflowTemplateInterface +) + +func SetWorkflowTemplateClient(wftmplClient typed.WorkflowTemplateInterface, cwftmplClient typed.ClusterWorkflowTemplateInterface) { + wftmplClientHolder, cwftmplClientHolder = wftmplClient, cwftmplClient +} + +// NewContextWithClientSet returns new Context. +// if Getter is nil, use clientset as Getter. +func NewContextWithClientSet(wftmplGetter WorkflowTemplateNamespacedGetter, cwftmplGetter ClusterWorkflowTemplateGetter, + wftmplClient typed.WorkflowTemplateInterface, cwftmplClient typed.ClusterWorkflowTemplateInterface, tmplBase wfv1.TemplateHolder, workflow *wfv1.Workflow) *Context { + wftmplClientHolder, cwftmplClientHolder = wftmplClient, cwftmplClient + if wftmplGetter == nil { + wftmplGetter = WrapWorkflowTemplateInterface(wftmplClient) + } + if cwftmplGetter == nil { + cwftmplGetter = WrapClusterWorkflowTemplateInterface(cwftmplClient) + } + + ctx := &Context{ + wftmplGetter: wftmplGetter, + cwftmplGetter: cwftmplGetter, + wftmplClient: wftmplClient, + cwftmplClient: cwftmplClient, tmplBase: tmplBase, workflow: workflow, log: log.WithFields(log.Fields{}), } + wftmplStatusQueue := NewTmplStatusQueue(ctx) + go wftmplStatusQueue.run(context.TODO()) + ctx.wftmplStatusQueue = wftmplStatusQueue + return ctx } // GetTemplateByName returns a template by name in the context. @@ -135,6 +172,11 @@ func (ctx *Context) GetTemplateFromRef(tmplRef *wfv1.TemplateRef) (*wfv1.Templat } return nil, err } + if tmplRef.ClusterScope { + ctx.wftmplStatusQueue.cwftmplQueue.Add(tmplRef.Name) + } else { + ctx.wftmplStatusQueue.wftmplQueue.Add(tmplRef.Name) + } template = wftmpl.GetTemplateByName(tmplRef.Template) @@ -166,6 +208,38 @@ func (ctx *Context) GetTemplateScope() string { return string(ctx.tmplBase.GetResourceScope()) + "/" + ctx.tmplBase.GetName() } +// updateTemplateStatus update the WorkflowTemplate.Status of a given WorkflowTemplate. +func (ctx *Context) updateTemplateStatus(c context.Context, name string) error { + if ctx.wftmplClient == nil { + ctx.log.Warnln("while try update template status, wftmplClient not set") + return nil + } + wftmple, err := ctx.wftmplClient.Get(c, name, metav1.GetOptions{}) + if err != nil { + return err + } + + wftmple.Status.LastRunAt = metav1.Now() + _, err = ctx.wftmplClient.Update(c, wftmple, metav1.UpdateOptions{}) + return err +} + +// updateCtemplateStatus update the ClusterWorkflowTemplate.Status of a given ClusterWorkflowTemplate. +func (ctx *Context) updateCtemplateStatus(c context.Context, name string) error { + if ctx.cwftmplClient == nil { + ctx.log.Warnln("while try update cluster template status, cwftmplClient not set") + return nil + } + wftmple, err := ctx.cwftmplClient.Get(c, name, metav1.GetOptions{}) + if err != nil { + return err + } + + wftmple.Status.LastRunAt = metav1.Now() + _, err = ctx.cwftmplClient.Update(c, wftmple, metav1.UpdateOptions{}) + return err +} + // ResolveTemplate digs into referenes and returns a merged template. // This method is the public start point of template resolution. func (ctx *Context) ResolveTemplate(tmplHolder wfv1.TemplateReferenceHolder) (*Context, *wfv1.Template, bool, error) { diff --git a/workflow/templateresolution/context_test.go b/workflow/templateresolution/context_test.go index 70abade41c04..816808f1c5ff 100644 --- a/workflow/templateresolution/context_test.go +++ b/workflow/templateresolution/context_test.go @@ -8,6 +8,7 @@ import ( "github.com/stretchr/testify/require" apierr "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1" wfclientset "github.com/argoproj/argo-workflows/v3/pkg/client/clientset/versioned" @@ -24,6 +25,16 @@ func createWorkflowTemplate(wfClientset wfclientset.Interface, yamlStr string) e return err } +func createClusterWorkflowTemplate(wfClientset wfclientset.Interface, yamlStr string) error { + ctx := context.Background() + cwftmpl := wfv1.MustUnmarshalClusterWorkflowTemplate(yamlStr) + _, err := wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates().Create(ctx, cwftmpl, metav1.CreateOptions{}) + if err != nil && apierr.IsAlreadyExists(err) { + return nil + } + return err +} + // Deprecated func unmarshalWftmpl(yamlStr string) *wfv1.WorkflowTemplate { return wfv1.MustUnmarshalWorkflowTemplate(yamlStr) @@ -103,7 +114,7 @@ spec: func TestGetTemplateByName(t *testing.T) { wfClientset := fakewfclientset.NewSimpleClientset() wftmpl := unmarshalWftmpl(baseWorkflowTemplateYaml) - ctx := NewContextFromClientSet(wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) + ctx := NewContextWithClientSet(nil, nil, wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) tmpl, err := ctx.GetTemplateByName("whalesay") require.NoError(t, err) @@ -125,7 +136,7 @@ func TestGetTemplateFromRef(t *testing.T) { t.Fatal(err) } wftmpl := unmarshalWftmpl(baseWorkflowTemplateYaml) - ctx := NewContextFromClientSet(wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) + ctx := NewContextWithClientSet(nil, nil, wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) // Get the template of existing template reference. tmplRef := wfv1.TemplateRef{Name: "some-workflow-template", Template: "whalesay"} @@ -156,7 +167,7 @@ func TestGetTemplate(t *testing.T) { t.Fatal(err) } wftmpl := unmarshalWftmpl(baseWorkflowTemplateYaml) - ctx := NewContextFromClientSet(wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) + ctx := NewContextWithClientSet(nil, nil, wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) // Get the template of existing template name. tmplHolder := wfv1.WorkflowStep{Template: "whalesay"} @@ -186,7 +197,7 @@ func TestGetTemplate(t *testing.T) { func TestGetCurrentTemplateBase(t *testing.T) { wfClientset := fakewfclientset.NewSimpleClientset() wftmpl := unmarshalWftmpl(baseWorkflowTemplateYaml) - ctx := NewContextFromClientSet(wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) + ctx := NewContextWithClientSet(nil, nil, wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) // Get the template base of existing template name. tmplBase := ctx.GetCurrentTemplateBase() @@ -206,7 +217,7 @@ func TestWithTemplateHolder(t *testing.T) { t.Fatal(err) } wftmpl := unmarshalWftmpl(baseWorkflowTemplateYaml) - ctx := NewContextFromClientSet(wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) + ctx := NewContextWithClientSet(nil, nil, wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) var tmplGetter wfv1.TemplateHolder // Get the template base of existing template name. @@ -248,7 +259,7 @@ func TestResolveTemplate(t *testing.T) { require.NoError(t, err) wftmpl := unmarshalWftmpl(baseWorkflowTemplateYaml) - ctx := NewContextFromClientSet(wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) + ctx := NewContextWithClientSet(nil, nil, wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) // Get the template of template name. tmplHolder := wfv1.WorkflowStep{Template: "whalesay"} @@ -321,7 +332,7 @@ func TestResolveTemplate(t *testing.T) { func TestWithTemplateBase(t *testing.T) { wfClientset := fakewfclientset.NewSimpleClientset() wftmpl := unmarshalWftmpl(baseWorkflowTemplateYaml) - ctx := NewContextFromClientSet(wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) + ctx := NewContextWithClientSet(nil, nil, wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) anotherWftmpl := unmarshalWftmpl(anotherWorkflowTemplateYaml) @@ -335,7 +346,8 @@ func TestWithTemplateBase(t *testing.T) { func TestOnWorkflowTemplate(t *testing.T) { wfClientset := fakewfclientset.NewSimpleClientset() wftmpl := unmarshalWftmpl(baseWorkflowTemplateYaml) - ctx := NewContextFromClientSet(wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) + ctx := NewContextWithClientSet(nil, nil, wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), + wftmpl, nil) err := createWorkflowTemplate(wfClientset, anotherWorkflowTemplateYaml) require.NoError(t, err) @@ -346,3 +358,55 @@ func TestOnWorkflowTemplate(t *testing.T) { tmpl := newCtx.tmplBase.GetTemplateByName("whalesay") assert.NotNil(t, tmpl) } + +func TestUpdateTemplLastRun(t *testing.T) { + wfClientset := fakewfclientset.NewSimpleClientset() + wftmpl := unmarshalWftmpl(someWorkflowTemplateYaml) + ctx := NewContextWithClientSet(nil, nil, wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), wftmpl, nil) + + err := createWorkflowTemplate(wfClientset, someWorkflowTemplateYaml) + if err != nil { + t.Fatal(err) + } + + wftemplateName := "some-workflow-template" + templateClient := wfClientset.ArgoprojV1alpha1().WorkflowTemplates(v1.NamespaceDefault) + + err = ctx.updateTemplateStatus(context.TODO(), wftmpl.GetName()) + if err != nil { + t.Fatal(err) + } + + wftmpl, err = templateClient.Get(context.Background(), wftemplateName, v1.GetOptions{}) + if err != nil { + t.Fatal(err) + return + } + assert.NotEmpty(t, wftmpl.Status.LastRunAt) +} + +func TestUpdateCtemplLastRun(t *testing.T) { + wfClientset := fakewfclientset.NewSimpleClientset() + cwftmpl := wfv1.MustUnmarshalClusterWorkflowTemplate(someWorkflowTemplateYaml) + ctx := NewContextWithClientSet(nil, nil, wfClientset.ArgoprojV1alpha1().WorkflowTemplates(metav1.NamespaceDefault), wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates(), cwftmpl, nil) + + err := createClusterWorkflowTemplate(wfClientset, someWorkflowTemplateYaml) + if err != nil { + t.Fatal(err) + } + + wftemplateName := "some-workflow-template" + ctemplateClient := wfClientset.ArgoprojV1alpha1().ClusterWorkflowTemplates() + + err = ctx.updateCtemplateStatus(context.TODO(), cwftmpl.GetName()) + if err != nil { + t.Fatal(err) + } + + cwftmpl, err = ctemplateClient.Get(context.Background(), wftemplateName, v1.GetOptions{}) + if err != nil { + t.Fatal(err) + return + } + assert.NotEmpty(t, cwftmpl.Status.LastRunAt) +} diff --git a/workflow/templateresolution/template_status.go b/workflow/templateresolution/template_status.go new file mode 100644 index 000000000000..e964d8aa3f58 --- /dev/null +++ b/workflow/templateresolution/template_status.go @@ -0,0 +1,93 @@ +package templateresolution + +import ( + "context" + + "github.com/argoproj/pkg/sync" + log "github.com/sirupsen/logrus" + runtimeutil "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/client-go/util/workqueue" +) + +type wftmplStatusQueue struct { + wftmplQueue workqueue.RateLimitingInterface + cwftmplQueue workqueue.RateLimitingInterface + + keyLock sync.KeyLock + ckeyLock sync.KeyLock + ctx *Context +} + +func NewTmplStatusQueue(ctx *Context) *wftmplStatusQueue { + return &wftmplStatusQueue{ + wftmplQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "tmpl-status-queue"), + cwftmplQueue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "ctmpl-status-queue"), + keyLock: sync.NewKeyLock(), + ckeyLock: sync.NewKeyLock(), + ctx: ctx, + } +} + +func (q *wftmplStatusQueue) run(ctx context.Context) { + defer q.wftmplQueue.ShutDown() + defer q.cwftmplQueue.ShutDown() + go q.runTmplStatusUpdate() + go q.runCtmplStatusUpdate() + <-ctx.Done() +} + +func (q *wftmplStatusQueue) runTmplStatusUpdate() { + ctx := context.TODO() + for q.processNextTmplItem(ctx) { + } +} + +func (q *wftmplStatusQueue) runCtmplStatusUpdate() { + ctx := context.TODO() + for q.processNextCtmplItem(ctx) { + } +} + +func (q *wftmplStatusQueue) processNextTmplItem(ctx context.Context) bool { + defer runtimeutil.HandleCrash(runtimeutil.PanicHandlers...) + + key, quit := q.wftmplQueue.Get() + if quit { + return false + } + defer q.wftmplQueue.Done(key) + + q.keyLock.Lock(key.(string)) + defer q.keyLock.Unlock(key.(string)) + + logCtx := log.WithField("wftmplStatus", key) + logCtx.Infof("Processing %s", key) + + err := q.ctx.updateTemplateStatus(ctx, key.(string)) + if err != nil { + log.Errorf("Update workflow template %s err: %v", key.(string), err) + } + return true +} + +func (q *wftmplStatusQueue) processNextCtmplItem(ctx context.Context) bool { + defer runtimeutil.HandleCrash(runtimeutil.PanicHandlers...) + + key, quit := q.cwftmplQueue.Get() + if quit { + return false + } + defer q.cwftmplQueue.Done(key) + + q.ckeyLock.Lock(key.(string)) + defer q.ckeyLock.Unlock(key.(string)) + + logCtx := log.WithField("cwftmplStatus", key) + logCtx.Infof("Processing %s", key) + + err := q.ctx.updateCtemplateStatus(ctx, key.(string)) + if err != nil { + log.Errorf("Update cluster workflow template %s err: %v", key.(string), err) + } + return true +}