From 71a646d45b700220f436e207a99e7ba6c796b593 Mon Sep 17 00:00:00 2001 From: Yashash H L Date: Fri, 12 Dec 2025 20:03:49 +0530 Subject: [PATCH 1/4] feat: option to disable exactly once Signed-off-by: Yashash H L --- api/json-schema/schema.json | 25 + api/openapi-spec/swagger.json | 25 + cmd/commands/isbsvc_create.go | 10 + .../full/numaflow.numaproj.io_pipelines.yaml | 12 + ...numaflow.numaproj.io_servingpipelines.yaml | 12 + .../full/numaflow.numaproj.io_vertices.yaml | 12 + config/install.yaml | 36 + config/namespace-install.yaml | 36 + docs/APIs.md | 186 ++ examples/1-simple-pipeline.yaml | 2 + pkg/apis/numaflow/v1alpha1/generated.pb.go | 1728 ++++++++++------- pkg/apis/numaflow/v1alpha1/generated.proto | 23 + pkg/apis/numaflow/v1alpha1/pipeline_types.go | 30 +- pkg/apis/numaflow/v1alpha1/vertex_types.go | 3 + .../v1alpha1/zz_generated.deepcopy.go | 31 + .../numaflow/v1alpha1/zz_generated.openapi.go | 51 +- pkg/isbsvc/interface.go | 12 + pkg/isbsvc/jetstream_service.go | 31 +- pkg/reconciler/pipeline/controller.go | 5 + rust/numaflow-core/src/config/pipeline.rs | 17 +- rust/numaflow-core/src/config/pipeline/isb.rs | 11 + .../src/pipeline/isb/jetstream/js_reader.rs | 36 +- rust/numaflow-core/src/pipeline/isb/reader.rs | 17 +- .../src/models/exactly_once.rs | 39 + rust/numaflow-models/src/models/mod.rs | 2 + .../src/models/pipeline_spec.rs | 3 + .../numaflow-models/src/models/vertex_spec.rs | 3 + 27 files changed, 1670 insertions(+), 728 deletions(-) create mode 100644 rust/numaflow-models/src/models/exactly_once.rs diff --git a/api/json-schema/schema.json b/api/json-schema/schema.json index 6428af1c09..79dc9a42ea 100644 --- a/api/json-schema/schema.json +++ b/api/json-schema/schema.json @@ -20125,6 +20125,23 @@ ], "type": "object" }, + "io.numaproj.numaflow.v1alpha1.ExactlyOnce": { + "properties": { + "consistentAck": { + "description": "ConsistentAck enables consistent acknowledgement of offsets to ISB throughout the pipeline.", + "type": "boolean" + }, + "dedupWindow": { + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Duration", + "description": "DedupWindow is the duration for which the deduplication will be enabled." + }, + "enabled": { + "description": "Enabled enables exactly once processing.", + "type": "boolean" + } + }, + "type": "object" + }, "io.numaproj.numaflow.v1alpha1.FixedWindow": { "description": "FixedWindow describes a fixed window", "properties": { @@ -21537,6 +21554,10 @@ }, "type": "array" }, + "exactlyOnce": { + "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.ExactlyOnce", + "description": "ExactlyOnce is the exactly-once settings for the pipeline." + }, "interStepBuffer": { "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.InterStepBuffer", "description": "InterStepBuffer configuration specific to this pipeline." @@ -22918,6 +22939,10 @@ "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", "type": "string" }, + "exactlyOnce": { + "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.ExactlyOnce", + "description": "ExactlyOnce indicates the exactly-once settings for the vertex, it's populated from the pipeline exactlyOnce settings." + }, "fromEdges": { "items": { "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.CombinedEdge" diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index 21ecd3cee3..fc816f46ff 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -20129,6 +20129,23 @@ } } }, + "io.numaproj.numaflow.v1alpha1.ExactlyOnce": { + "type": "object", + "properties": { + "consistentAck": { + "description": "ConsistentAck enables consistent acknowledgement of offsets to ISB throughout the pipeline.", + "type": "boolean" + }, + "dedupWindow": { + "description": "DedupWindow is the duration for which the deduplication will be enabled.", + "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Duration" + }, + "enabled": { + "description": "Enabled enables exactly once processing.", + "type": "boolean" + } + } + }, "io.numaproj.numaflow.v1alpha1.FixedWindow": { "description": "FixedWindow describes a fixed window", "type": "object", @@ -21524,6 +21541,10 @@ "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.Edge" } }, + "exactlyOnce": { + "description": "ExactlyOnce is the exactly-once settings for the pipeline.", + "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.ExactlyOnce" + }, "interStepBuffer": { "description": "InterStepBuffer configuration specific to this pipeline.", "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.InterStepBuffer" @@ -22900,6 +22921,10 @@ "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", "type": "string" }, + "exactlyOnce": { + "description": "ExactlyOnce indicates the exactly-once settings for the vertex, it's populated from the pipeline exactlyOnce settings.", + "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.ExactlyOnce" + }, "fromEdges": { "type": "array", "items": { diff --git a/cmd/commands/isbsvc_create.go b/cmd/commands/isbsvc_create.go index 2b288bf9f6..b8cf046b54 100644 --- a/cmd/commands/isbsvc_create.go +++ b/cmd/commands/isbsvc_create.go @@ -22,6 +22,7 @@ import ( "encoding/json" "fmt" "os" + "time" "github.com/spf13/cobra" "go.uber.org/zap" @@ -40,6 +41,7 @@ func NewISBSvcCreateCommand() *cobra.Command { buckets []string sideInputsStore string servingSourceStore string + dedupWindow string ) command := &cobra.Command{ @@ -79,6 +81,13 @@ func NewISBSvcCreateCommand() *cobra.Command { return err } opts = append(opts, isbsvc.WithConfig(isbSvcConfig.JetStream.StreamConfig)) + if dedupWindow != "" { + d, err := time.ParseDuration(dedupWindow) + if err != nil { + return fmt.Errorf("failed to parse dedup window duration %q, %w", dedupWindow, err) + } + opts = append(opts, isbsvc.WithDedupWindow(d)) + } default: cmd.HelpFunc()(cmd, args) return fmt.Errorf("unsupported isb service type %q", isbSvcType) @@ -98,5 +107,6 @@ func NewISBSvcCreateCommand() *cobra.Command { command.Flags().StringSliceVar(&buckets, "buckets", []string{}, "Buckets to create") // --buckets=xxa,xxb --buckets=xxc command.Flags().StringVar(&sideInputsStore, "side-inputs-store", "", "Name of the side inputs store") command.Flags().StringVar(&servingSourceStore, "serving-store", "", "Serving source streams to create") // --serving-store=a + command.Flags().StringVar(&dedupWindow, "dedup-window", "", "Deduplication window duration for exactly-once processing, e.g. 2m") return command } diff --git a/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml b/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml index 16219745dc..b03bfe953e 100644 --- a/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml +++ b/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml @@ -98,6 +98,18 @@ spec: - to type: object type: array + exactlyOnce: + properties: + consistentAck: + default: true + type: boolean + dedupWindow: + default: 2m + type: string + enabled: + default: false + type: boolean + type: object interStepBuffer: properties: compression: diff --git a/config/base/crds/full/numaflow.numaproj.io_servingpipelines.yaml b/config/base/crds/full/numaflow.numaproj.io_servingpipelines.yaml index 5625522115..ea70932636 100644 --- a/config/base/crds/full/numaflow.numaproj.io_servingpipelines.yaml +++ b/config/base/crds/full/numaflow.numaproj.io_servingpipelines.yaml @@ -77,6 +77,18 @@ spec: - to type: object type: array + exactlyOnce: + properties: + consistentAck: + default: true + type: boolean + dedupWindow: + default: 2m + type: string + enabled: + default: false + type: boolean + type: object interStepBuffer: properties: compression: diff --git a/config/base/crds/full/numaflow.numaproj.io_vertices.yaml b/config/base/crds/full/numaflow.numaproj.io_vertices.yaml index bf9cc8bcf1..4c7988c60d 100644 --- a/config/base/crds/full/numaflow.numaproj.io_vertices.yaml +++ b/config/base/crds/full/numaflow.numaproj.io_vertices.yaml @@ -753,6 +753,18 @@ spec: type: object dnsPolicy: type: string + exactlyOnce: + properties: + consistentAck: + default: true + type: boolean + dedupWindow: + default: 2m + type: string + enabled: + default: false + type: boolean + type: object fromEdges: items: properties: diff --git a/config/install.yaml b/config/install.yaml index a067e6c750..5e52f37e63 100644 --- a/config/install.yaml +++ b/config/install.yaml @@ -9806,6 +9806,18 @@ spec: - to type: object type: array + exactlyOnce: + properties: + consistentAck: + default: true + type: boolean + dedupWindow: + default: 2m + type: string + enabled: + default: false + type: boolean + type: object interStepBuffer: properties: compression: @@ -22911,6 +22923,18 @@ spec: - to type: object type: array + exactlyOnce: + properties: + consistentAck: + default: true + type: boolean + dedupWindow: + default: 2m + type: string + enabled: + default: false + type: boolean + type: object interStepBuffer: properties: compression: @@ -37853,6 +37877,18 @@ spec: type: object dnsPolicy: type: string + exactlyOnce: + properties: + consistentAck: + default: true + type: boolean + dedupWindow: + default: 2m + type: string + enabled: + default: false + type: boolean + type: object fromEdges: items: properties: diff --git a/config/namespace-install.yaml b/config/namespace-install.yaml index 6dba9d31a6..24922ae265 100644 --- a/config/namespace-install.yaml +++ b/config/namespace-install.yaml @@ -9806,6 +9806,18 @@ spec: - to type: object type: array + exactlyOnce: + properties: + consistentAck: + default: true + type: boolean + dedupWindow: + default: 2m + type: string + enabled: + default: false + type: boolean + type: object interStepBuffer: properties: compression: @@ -22911,6 +22923,18 @@ spec: - to type: object type: array + exactlyOnce: + properties: + consistentAck: + default: true + type: boolean + dedupWindow: + default: 2m + type: string + enabled: + default: false + type: boolean + type: object interStepBuffer: properties: compression: @@ -37853,6 +37877,18 @@ spec: type: object dnsPolicy: type: string + exactlyOnce: + properties: + consistentAck: + default: true + type: boolean + dedupWindow: + default: 2m + type: string + enabled: + default: false + type: boolean + type: object fromEdges: items: properties: diff --git a/docs/APIs.md b/docs/APIs.md index ab9681713b..bc5e4de4c5 100644 --- a/docs/APIs.md +++ b/docs/APIs.md @@ -2494,6 +2494,106 @@ discardLatest. if not provided, the default value is set to +

+ +ExactlyOnce +

+ +

+ +(Appears on: +PipelineSpec, +VertexSpec) +

+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +Field + + +Description +
+ +enabled
bool +
+ +

+ +Enabled enables exactly once processing. +

+ +
+ +consistentAck
bool +
+ +

+ +ConsistentAck enables consistent acknowledgement of offsets to ISB +throughout the pipeline. +

+ +
+ +dedupWindow
+ +Kubernetes meta/v1.Duration +
+ +(Optional) +

+ +DedupWindow is the duration for which the deduplication will be enabled. +

+ +
+

FixedWindow @@ -7843,6 +7943,27 @@ InterStepBuffer configuration specific to this pipeline. + + + + +exactlyOnce
+ ExactlyOnce + + + + + +(Optional) +

+ +ExactlyOnce is the exactly-once settings for the pipeline. +

+ + + + + @@ -8268,6 +8389,27 @@ InterStepBuffer configuration specific to this pipeline. + + + + +exactlyOnce
+ ExactlyOnce + + + + + +(Optional) +

+ +ExactlyOnce is the exactly-once settings for the pipeline. +

+ + + + + @@ -13788,6 +13930,28 @@ InterStepBuffer configuration specific to this pipeline. + + + + +exactlyOnce
+ ExactlyOnce + + + + + +(Optional) +

+ +ExactlyOnce indicates the exactly-once settings for the vertex, it’s +populated from the pipeline exactlyOnce settings. +

+ + + + + @@ -14319,6 +14483,28 @@ InterStepBuffer configuration specific to this pipeline. + + + + +exactlyOnce
+ ExactlyOnce + + + + + +(Optional) +

+ +ExactlyOnce indicates the exactly-once settings for the vertex, it’s +populated from the pipeline exactlyOnce settings. +

+ + + + + diff --git a/examples/1-simple-pipeline.yaml b/examples/1-simple-pipeline.yaml index 33ff62dd28..0f742e201e 100644 --- a/examples/1-simple-pipeline.yaml +++ b/examples/1-simple-pipeline.yaml @@ -3,6 +3,8 @@ kind: Pipeline metadata: name: simple-pipeline spec: +# exactlyOnce: +# consistentAck: true vertices: - name: in scale: diff --git a/pkg/apis/numaflow/v1alpha1/generated.pb.go b/pkg/apis/numaflow/v1alpha1/generated.pb.go index 990db555ef..af41d5ac00 100644 --- a/pkg/apis/numaflow/v1alpha1/generated.pb.go +++ b/pkg/apis/numaflow/v1alpha1/generated.pb.go @@ -499,10 +499,38 @@ func (m *Edge) XXX_DiscardUnknown() { var xxx_messageInfo_Edge proto.InternalMessageInfo +func (m *ExactlyOnce) Reset() { *m = ExactlyOnce{} } +func (*ExactlyOnce) ProtoMessage() {} +func (*ExactlyOnce) Descriptor() ([]byte, []int) { + return fileDescriptor_9d0d1b17d3865563, []int{16} +} +func (m *ExactlyOnce) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ExactlyOnce) 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 *ExactlyOnce) XXX_Merge(src proto.Message) { + xxx_messageInfo_ExactlyOnce.Merge(m, src) +} +func (m *ExactlyOnce) XXX_Size() int { + return m.Size() +} +func (m *ExactlyOnce) XXX_DiscardUnknown() { + xxx_messageInfo_ExactlyOnce.DiscardUnknown(m) +} + +var xxx_messageInfo_ExactlyOnce proto.InternalMessageInfo + func (m *FixedWindow) Reset() { *m = FixedWindow{} } func (*FixedWindow) ProtoMessage() {} func (*FixedWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{16} + return fileDescriptor_9d0d1b17d3865563, []int{17} } func (m *FixedWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -530,7 +558,7 @@ var xxx_messageInfo_FixedWindow proto.InternalMessageInfo func (m *ForwardConditions) Reset() { *m = ForwardConditions{} } func (*ForwardConditions) ProtoMessage() {} func (*ForwardConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{17} + return fileDescriptor_9d0d1b17d3865563, []int{18} } func (m *ForwardConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -558,7 +586,7 @@ var xxx_messageInfo_ForwardConditions proto.InternalMessageInfo func (m *GSSAPI) Reset() { *m = GSSAPI{} } func (*GSSAPI) ProtoMessage() {} func (*GSSAPI) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{18} + return fileDescriptor_9d0d1b17d3865563, []int{19} } func (m *GSSAPI) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -586,7 +614,7 @@ var xxx_messageInfo_GSSAPI proto.InternalMessageInfo func (m *GeneratorSource) Reset() { *m = GeneratorSource{} } func (*GeneratorSource) ProtoMessage() {} func (*GeneratorSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{19} + return fileDescriptor_9d0d1b17d3865563, []int{20} } func (m *GeneratorSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -614,7 +642,7 @@ var xxx_messageInfo_GeneratorSource proto.InternalMessageInfo func (m *GetDaemonDeploymentReq) Reset() { *m = GetDaemonDeploymentReq{} } func (*GetDaemonDeploymentReq) ProtoMessage() {} func (*GetDaemonDeploymentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{20} + return fileDescriptor_9d0d1b17d3865563, []int{21} } func (m *GetDaemonDeploymentReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -642,7 +670,7 @@ var xxx_messageInfo_GetDaemonDeploymentReq proto.InternalMessageInfo func (m *GetJetStreamServiceSpecReq) Reset() { *m = GetJetStreamServiceSpecReq{} } func (*GetJetStreamServiceSpecReq) ProtoMessage() {} func (*GetJetStreamServiceSpecReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{21} + return fileDescriptor_9d0d1b17d3865563, []int{22} } func (m *GetJetStreamServiceSpecReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -670,7 +698,7 @@ var xxx_messageInfo_GetJetStreamServiceSpecReq proto.InternalMessageInfo func (m *GetJetStreamStatefulSetSpecReq) Reset() { *m = GetJetStreamStatefulSetSpecReq{} } func (*GetJetStreamStatefulSetSpecReq) ProtoMessage() {} func (*GetJetStreamStatefulSetSpecReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{22} + return fileDescriptor_9d0d1b17d3865563, []int{23} } func (m *GetJetStreamStatefulSetSpecReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -698,7 +726,7 @@ var xxx_messageInfo_GetJetStreamStatefulSetSpecReq proto.InternalMessageInfo func (m *GetMonoVertexDaemonDeploymentReq) Reset() { *m = GetMonoVertexDaemonDeploymentReq{} } func (*GetMonoVertexDaemonDeploymentReq) ProtoMessage() {} func (*GetMonoVertexDaemonDeploymentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{23} + return fileDescriptor_9d0d1b17d3865563, []int{24} } func (m *GetMonoVertexDaemonDeploymentReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -726,7 +754,7 @@ var xxx_messageInfo_GetMonoVertexDaemonDeploymentReq proto.InternalMessageInfo func (m *GetMonoVertexPodSpecReq) Reset() { *m = GetMonoVertexPodSpecReq{} } func (*GetMonoVertexPodSpecReq) ProtoMessage() {} func (*GetMonoVertexPodSpecReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{24} + return fileDescriptor_9d0d1b17d3865563, []int{25} } func (m *GetMonoVertexPodSpecReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -754,7 +782,7 @@ var xxx_messageInfo_GetMonoVertexPodSpecReq proto.InternalMessageInfo func (m *GetServingPipelineResourceReq) Reset() { *m = GetServingPipelineResourceReq{} } func (*GetServingPipelineResourceReq) ProtoMessage() {} func (*GetServingPipelineResourceReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{25} + return fileDescriptor_9d0d1b17d3865563, []int{26} } func (m *GetServingPipelineResourceReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -782,7 +810,7 @@ var xxx_messageInfo_GetServingPipelineResourceReq proto.InternalMessageInfo func (m *GetSideInputDeploymentReq) Reset() { *m = GetSideInputDeploymentReq{} } func (*GetSideInputDeploymentReq) ProtoMessage() {} func (*GetSideInputDeploymentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{26} + return fileDescriptor_9d0d1b17d3865563, []int{27} } func (m *GetSideInputDeploymentReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -810,7 +838,7 @@ var xxx_messageInfo_GetSideInputDeploymentReq proto.InternalMessageInfo func (m *GetVertexPodSpecReq) Reset() { *m = GetVertexPodSpecReq{} } func (*GetVertexPodSpecReq) ProtoMessage() {} func (*GetVertexPodSpecReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{27} + return fileDescriptor_9d0d1b17d3865563, []int{28} } func (m *GetVertexPodSpecReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -838,7 +866,7 @@ var xxx_messageInfo_GetVertexPodSpecReq proto.InternalMessageInfo func (m *GroupBy) Reset() { *m = GroupBy{} } func (*GroupBy) ProtoMessage() {} func (*GroupBy) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{28} + return fileDescriptor_9d0d1b17d3865563, []int{29} } func (m *GroupBy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -866,7 +894,7 @@ var xxx_messageInfo_GroupBy proto.InternalMessageInfo func (m *HTTPSource) Reset() { *m = HTTPSource{} } func (*HTTPSource) ProtoMessage() {} func (*HTTPSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{29} + return fileDescriptor_9d0d1b17d3865563, []int{30} } func (m *HTTPSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -894,7 +922,7 @@ var xxx_messageInfo_HTTPSource proto.InternalMessageInfo func (m *IdleSource) Reset() { *m = IdleSource{} } func (*IdleSource) ProtoMessage() {} func (*IdleSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{30} + return fileDescriptor_9d0d1b17d3865563, []int{31} } func (m *IdleSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -922,7 +950,7 @@ var xxx_messageInfo_IdleSource proto.InternalMessageInfo func (m *InterStepBuffer) Reset() { *m = InterStepBuffer{} } func (*InterStepBuffer) ProtoMessage() {} func (*InterStepBuffer) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{31} + return fileDescriptor_9d0d1b17d3865563, []int{32} } func (m *InterStepBuffer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -950,7 +978,7 @@ var xxx_messageInfo_InterStepBuffer proto.InternalMessageInfo func (m *InterStepBufferService) Reset() { *m = InterStepBufferService{} } func (*InterStepBufferService) ProtoMessage() {} func (*InterStepBufferService) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{32} + return fileDescriptor_9d0d1b17d3865563, []int{33} } func (m *InterStepBufferService) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -978,7 +1006,7 @@ var xxx_messageInfo_InterStepBufferService proto.InternalMessageInfo func (m *InterStepBufferServiceList) Reset() { *m = InterStepBufferServiceList{} } func (*InterStepBufferServiceList) ProtoMessage() {} func (*InterStepBufferServiceList) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{33} + return fileDescriptor_9d0d1b17d3865563, []int{34} } func (m *InterStepBufferServiceList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1006,7 +1034,7 @@ var xxx_messageInfo_InterStepBufferServiceList proto.InternalMessageInfo func (m *InterStepBufferServiceSpec) Reset() { *m = InterStepBufferServiceSpec{} } func (*InterStepBufferServiceSpec) ProtoMessage() {} func (*InterStepBufferServiceSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{34} + return fileDescriptor_9d0d1b17d3865563, []int{35} } func (m *InterStepBufferServiceSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1034,7 +1062,7 @@ var xxx_messageInfo_InterStepBufferServiceSpec proto.InternalMessageInfo func (m *InterStepBufferServiceStatus) Reset() { *m = InterStepBufferServiceStatus{} } func (*InterStepBufferServiceStatus) ProtoMessage() {} func (*InterStepBufferServiceStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{35} + return fileDescriptor_9d0d1b17d3865563, []int{36} } func (m *InterStepBufferServiceStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1062,7 +1090,7 @@ var xxx_messageInfo_InterStepBufferServiceStatus proto.InternalMessageInfo func (m *JetStreamBufferService) Reset() { *m = JetStreamBufferService{} } func (*JetStreamBufferService) ProtoMessage() {} func (*JetStreamBufferService) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{36} + return fileDescriptor_9d0d1b17d3865563, []int{37} } func (m *JetStreamBufferService) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1090,7 +1118,7 @@ var xxx_messageInfo_JetStreamBufferService proto.InternalMessageInfo func (m *JetStreamConfig) Reset() { *m = JetStreamConfig{} } func (*JetStreamConfig) ProtoMessage() {} func (*JetStreamConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{37} + return fileDescriptor_9d0d1b17d3865563, []int{38} } func (m *JetStreamConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1118,7 +1146,7 @@ var xxx_messageInfo_JetStreamConfig proto.InternalMessageInfo func (m *JetStreamSource) Reset() { *m = JetStreamSource{} } func (*JetStreamSource) ProtoMessage() {} func (*JetStreamSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{38} + return fileDescriptor_9d0d1b17d3865563, []int{39} } func (m *JetStreamSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1146,7 +1174,7 @@ var xxx_messageInfo_JetStreamSource proto.InternalMessageInfo func (m *JobTemplate) Reset() { *m = JobTemplate{} } func (*JobTemplate) ProtoMessage() {} func (*JobTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{39} + return fileDescriptor_9d0d1b17d3865563, []int{40} } func (m *JobTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1174,7 +1202,7 @@ var xxx_messageInfo_JobTemplate proto.InternalMessageInfo func (m *KafkaSink) Reset() { *m = KafkaSink{} } func (*KafkaSink) ProtoMessage() {} func (*KafkaSink) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{40} + return fileDescriptor_9d0d1b17d3865563, []int{41} } func (m *KafkaSink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1202,7 +1230,7 @@ var xxx_messageInfo_KafkaSink proto.InternalMessageInfo func (m *KafkaSource) Reset() { *m = KafkaSource{} } func (*KafkaSource) ProtoMessage() {} func (*KafkaSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{41} + return fileDescriptor_9d0d1b17d3865563, []int{42} } func (m *KafkaSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1230,7 +1258,7 @@ var xxx_messageInfo_KafkaSource proto.InternalMessageInfo func (m *Lifecycle) Reset() { *m = Lifecycle{} } func (*Lifecycle) ProtoMessage() {} func (*Lifecycle) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{42} + return fileDescriptor_9d0d1b17d3865563, []int{43} } func (m *Lifecycle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1258,7 +1286,7 @@ var xxx_messageInfo_Lifecycle proto.InternalMessageInfo func (m *Log) Reset() { *m = Log{} } func (*Log) ProtoMessage() {} func (*Log) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{43} + return fileDescriptor_9d0d1b17d3865563, []int{44} } func (m *Log) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1286,7 +1314,7 @@ var xxx_messageInfo_Log proto.InternalMessageInfo func (m *Metadata) Reset() { *m = Metadata{} } func (*Metadata) ProtoMessage() {} func (*Metadata) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{44} + return fileDescriptor_9d0d1b17d3865563, []int{45} } func (m *Metadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1314,7 +1342,7 @@ var xxx_messageInfo_Metadata proto.InternalMessageInfo func (m *MonoVertex) Reset() { *m = MonoVertex{} } func (*MonoVertex) ProtoMessage() {} func (*MonoVertex) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{45} + return fileDescriptor_9d0d1b17d3865563, []int{46} } func (m *MonoVertex) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1342,7 +1370,7 @@ var xxx_messageInfo_MonoVertex proto.InternalMessageInfo func (m *MonoVertexLifecycle) Reset() { *m = MonoVertexLifecycle{} } func (*MonoVertexLifecycle) ProtoMessage() {} func (*MonoVertexLifecycle) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{46} + return fileDescriptor_9d0d1b17d3865563, []int{47} } func (m *MonoVertexLifecycle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1370,7 +1398,7 @@ var xxx_messageInfo_MonoVertexLifecycle proto.InternalMessageInfo func (m *MonoVertexLimits) Reset() { *m = MonoVertexLimits{} } func (*MonoVertexLimits) ProtoMessage() {} func (*MonoVertexLimits) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{47} + return fileDescriptor_9d0d1b17d3865563, []int{48} } func (m *MonoVertexLimits) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1398,7 +1426,7 @@ var xxx_messageInfo_MonoVertexLimits proto.InternalMessageInfo func (m *MonoVertexList) Reset() { *m = MonoVertexList{} } func (*MonoVertexList) ProtoMessage() {} func (*MonoVertexList) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{48} + return fileDescriptor_9d0d1b17d3865563, []int{49} } func (m *MonoVertexList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1426,7 +1454,7 @@ var xxx_messageInfo_MonoVertexList proto.InternalMessageInfo func (m *MonoVertexSpec) Reset() { *m = MonoVertexSpec{} } func (*MonoVertexSpec) ProtoMessage() {} func (*MonoVertexSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{49} + return fileDescriptor_9d0d1b17d3865563, []int{50} } func (m *MonoVertexSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1454,7 +1482,7 @@ var xxx_messageInfo_MonoVertexSpec proto.InternalMessageInfo func (m *MonoVertexStatus) Reset() { *m = MonoVertexStatus{} } func (*MonoVertexStatus) ProtoMessage() {} func (*MonoVertexStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{50} + return fileDescriptor_9d0d1b17d3865563, []int{51} } func (m *MonoVertexStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1482,7 +1510,7 @@ var xxx_messageInfo_MonoVertexStatus proto.InternalMessageInfo func (m *NatsAuth) Reset() { *m = NatsAuth{} } func (*NatsAuth) ProtoMessage() {} func (*NatsAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{51} + return fileDescriptor_9d0d1b17d3865563, []int{52} } func (m *NatsAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1510,7 +1538,7 @@ var xxx_messageInfo_NatsAuth proto.InternalMessageInfo func (m *NatsSource) Reset() { *m = NatsSource{} } func (*NatsSource) ProtoMessage() {} func (*NatsSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{52} + return fileDescriptor_9d0d1b17d3865563, []int{53} } func (m *NatsSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1538,7 +1566,7 @@ var xxx_messageInfo_NatsSource proto.InternalMessageInfo func (m *NoStore) Reset() { *m = NoStore{} } func (*NoStore) ProtoMessage() {} func (*NoStore) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{53} + return fileDescriptor_9d0d1b17d3865563, []int{54} } func (m *NoStore) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1566,7 +1594,7 @@ var xxx_messageInfo_NoStore proto.InternalMessageInfo func (m *PBQStorage) Reset() { *m = PBQStorage{} } func (*PBQStorage) ProtoMessage() {} func (*PBQStorage) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{54} + return fileDescriptor_9d0d1b17d3865563, []int{55} } func (m *PBQStorage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1594,7 +1622,7 @@ var xxx_messageInfo_PBQStorage proto.InternalMessageInfo func (m *PersistenceStrategy) Reset() { *m = PersistenceStrategy{} } func (*PersistenceStrategy) ProtoMessage() {} func (*PersistenceStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{55} + return fileDescriptor_9d0d1b17d3865563, []int{56} } func (m *PersistenceStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1622,7 +1650,7 @@ var xxx_messageInfo_PersistenceStrategy proto.InternalMessageInfo func (m *Pipeline) Reset() { *m = Pipeline{} } func (*Pipeline) ProtoMessage() {} func (*Pipeline) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{56} + return fileDescriptor_9d0d1b17d3865563, []int{57} } func (m *Pipeline) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1650,7 +1678,7 @@ var xxx_messageInfo_Pipeline proto.InternalMessageInfo func (m *PipelineLimits) Reset() { *m = PipelineLimits{} } func (*PipelineLimits) ProtoMessage() {} func (*PipelineLimits) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{57} + return fileDescriptor_9d0d1b17d3865563, []int{58} } func (m *PipelineLimits) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1678,7 +1706,7 @@ var xxx_messageInfo_PipelineLimits proto.InternalMessageInfo func (m *PipelineList) Reset() { *m = PipelineList{} } func (*PipelineList) ProtoMessage() {} func (*PipelineList) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{58} + return fileDescriptor_9d0d1b17d3865563, []int{59} } func (m *PipelineList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1706,7 +1734,7 @@ var xxx_messageInfo_PipelineList proto.InternalMessageInfo func (m *PipelineSpec) Reset() { *m = PipelineSpec{} } func (*PipelineSpec) ProtoMessage() {} func (*PipelineSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{59} + return fileDescriptor_9d0d1b17d3865563, []int{60} } func (m *PipelineSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1734,7 +1762,7 @@ var xxx_messageInfo_PipelineSpec proto.InternalMessageInfo func (m *PipelineStatus) Reset() { *m = PipelineStatus{} } func (*PipelineStatus) ProtoMessage() {} func (*PipelineStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{60} + return fileDescriptor_9d0d1b17d3865563, []int{61} } func (m *PipelineStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1762,7 +1790,7 @@ var xxx_messageInfo_PipelineStatus proto.InternalMessageInfo func (m *Ports) Reset() { *m = Ports{} } func (*Ports) ProtoMessage() {} func (*Ports) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{61} + return fileDescriptor_9d0d1b17d3865563, []int{62} } func (m *Ports) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1790,7 +1818,7 @@ var xxx_messageInfo_Ports proto.InternalMessageInfo func (m *Probe) Reset() { *m = Probe{} } func (*Probe) ProtoMessage() {} func (*Probe) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{62} + return fileDescriptor_9d0d1b17d3865563, []int{63} } func (m *Probe) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1818,7 +1846,7 @@ var xxx_messageInfo_Probe proto.InternalMessageInfo func (m *PulsarAuth) Reset() { *m = PulsarAuth{} } func (*PulsarAuth) ProtoMessage() {} func (*PulsarAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{63} + return fileDescriptor_9d0d1b17d3865563, []int{64} } func (m *PulsarAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1846,7 +1874,7 @@ var xxx_messageInfo_PulsarAuth proto.InternalMessageInfo func (m *PulsarBasicAuth) Reset() { *m = PulsarBasicAuth{} } func (*PulsarBasicAuth) ProtoMessage() {} func (*PulsarBasicAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{64} + return fileDescriptor_9d0d1b17d3865563, []int{65} } func (m *PulsarBasicAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1874,7 +1902,7 @@ var xxx_messageInfo_PulsarBasicAuth proto.InternalMessageInfo func (m *PulsarSink) Reset() { *m = PulsarSink{} } func (*PulsarSink) ProtoMessage() {} func (*PulsarSink) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{65} + return fileDescriptor_9d0d1b17d3865563, []int{66} } func (m *PulsarSink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1902,7 +1930,7 @@ var xxx_messageInfo_PulsarSink proto.InternalMessageInfo func (m *PulsarSource) Reset() { *m = PulsarSource{} } func (*PulsarSource) ProtoMessage() {} func (*PulsarSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{66} + return fileDescriptor_9d0d1b17d3865563, []int{67} } func (m *PulsarSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1930,7 +1958,7 @@ var xxx_messageInfo_PulsarSource proto.InternalMessageInfo func (m *RateLimit) Reset() { *m = RateLimit{} } func (*RateLimit) ProtoMessage() {} func (*RateLimit) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{67} + return fileDescriptor_9d0d1b17d3865563, []int{68} } func (m *RateLimit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1958,7 +1986,7 @@ var xxx_messageInfo_RateLimit proto.InternalMessageInfo func (m *RateLimiterGoBackN) Reset() { *m = RateLimiterGoBackN{} } func (*RateLimiterGoBackN) ProtoMessage() {} func (*RateLimiterGoBackN) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{68} + return fileDescriptor_9d0d1b17d3865563, []int{69} } func (m *RateLimiterGoBackN) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1986,7 +2014,7 @@ var xxx_messageInfo_RateLimiterGoBackN proto.InternalMessageInfo func (m *RateLimiterInMemoryStore) Reset() { *m = RateLimiterInMemoryStore{} } func (*RateLimiterInMemoryStore) ProtoMessage() {} func (*RateLimiterInMemoryStore) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{69} + return fileDescriptor_9d0d1b17d3865563, []int{70} } func (m *RateLimiterInMemoryStore) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2014,7 +2042,7 @@ var xxx_messageInfo_RateLimiterInMemoryStore proto.InternalMessageInfo func (m *RateLimiterModes) Reset() { *m = RateLimiterModes{} } func (*RateLimiterModes) ProtoMessage() {} func (*RateLimiterModes) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{70} + return fileDescriptor_9d0d1b17d3865563, []int{71} } func (m *RateLimiterModes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2042,7 +2070,7 @@ var xxx_messageInfo_RateLimiterModes proto.InternalMessageInfo func (m *RateLimiterOnlyIfUsed) Reset() { *m = RateLimiterOnlyIfUsed{} } func (*RateLimiterOnlyIfUsed) ProtoMessage() {} func (*RateLimiterOnlyIfUsed) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{71} + return fileDescriptor_9d0d1b17d3865563, []int{72} } func (m *RateLimiterOnlyIfUsed) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2070,7 +2098,7 @@ var xxx_messageInfo_RateLimiterOnlyIfUsed proto.InternalMessageInfo func (m *RateLimiterRedisStore) Reset() { *m = RateLimiterRedisStore{} } func (*RateLimiterRedisStore) ProtoMessage() {} func (*RateLimiterRedisStore) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{72} + return fileDescriptor_9d0d1b17d3865563, []int{73} } func (m *RateLimiterRedisStore) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2098,7 +2126,7 @@ var xxx_messageInfo_RateLimiterRedisStore proto.InternalMessageInfo func (m *RateLimiterRelaxed) Reset() { *m = RateLimiterRelaxed{} } func (*RateLimiterRelaxed) ProtoMessage() {} func (*RateLimiterRelaxed) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{73} + return fileDescriptor_9d0d1b17d3865563, []int{74} } func (m *RateLimiterRelaxed) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2126,7 +2154,7 @@ var xxx_messageInfo_RateLimiterRelaxed proto.InternalMessageInfo func (m *RateLimiterScheduled) Reset() { *m = RateLimiterScheduled{} } func (*RateLimiterScheduled) ProtoMessage() {} func (*RateLimiterScheduled) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{74} + return fileDescriptor_9d0d1b17d3865563, []int{75} } func (m *RateLimiterScheduled) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2154,7 +2182,7 @@ var xxx_messageInfo_RateLimiterScheduled proto.InternalMessageInfo func (m *RateLimiterStore) Reset() { *m = RateLimiterStore{} } func (*RateLimiterStore) ProtoMessage() {} func (*RateLimiterStore) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{75} + return fileDescriptor_9d0d1b17d3865563, []int{76} } func (m *RateLimiterStore) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2182,7 +2210,7 @@ var xxx_messageInfo_RateLimiterStore proto.InternalMessageInfo func (m *RedisAuth) Reset() { *m = RedisAuth{} } func (*RedisAuth) ProtoMessage() {} func (*RedisAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{76} + return fileDescriptor_9d0d1b17d3865563, []int{77} } func (m *RedisAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2210,7 +2238,7 @@ var xxx_messageInfo_RedisAuth proto.InternalMessageInfo func (m *RedisSentinelConfig) Reset() { *m = RedisSentinelConfig{} } func (*RedisSentinelConfig) ProtoMessage() {} func (*RedisSentinelConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{77} + return fileDescriptor_9d0d1b17d3865563, []int{78} } func (m *RedisSentinelConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2238,7 +2266,7 @@ var xxx_messageInfo_RedisSentinelConfig proto.InternalMessageInfo func (m *RetryStrategy) Reset() { *m = RetryStrategy{} } func (*RetryStrategy) ProtoMessage() {} func (*RetryStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{78} + return fileDescriptor_9d0d1b17d3865563, []int{79} } func (m *RetryStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2266,7 +2294,7 @@ var xxx_messageInfo_RetryStrategy proto.InternalMessageInfo func (m *RollingUpdateStrategy) Reset() { *m = RollingUpdateStrategy{} } func (*RollingUpdateStrategy) ProtoMessage() {} func (*RollingUpdateStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{79} + return fileDescriptor_9d0d1b17d3865563, []int{80} } func (m *RollingUpdateStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2294,7 +2322,7 @@ var xxx_messageInfo_RollingUpdateStrategy proto.InternalMessageInfo func (m *SASL) Reset() { *m = SASL{} } func (*SASL) ProtoMessage() {} func (*SASL) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{80} + return fileDescriptor_9d0d1b17d3865563, []int{81} } func (m *SASL) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2322,7 +2350,7 @@ var xxx_messageInfo_SASL proto.InternalMessageInfo func (m *SASLOAuth) Reset() { *m = SASLOAuth{} } func (*SASLOAuth) ProtoMessage() {} func (*SASLOAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{81} + return fileDescriptor_9d0d1b17d3865563, []int{82} } func (m *SASLOAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2350,7 +2378,7 @@ var xxx_messageInfo_SASLOAuth proto.InternalMessageInfo func (m *SASLPlain) Reset() { *m = SASLPlain{} } func (*SASLPlain) ProtoMessage() {} func (*SASLPlain) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{82} + return fileDescriptor_9d0d1b17d3865563, []int{83} } func (m *SASLPlain) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2378,7 +2406,7 @@ var xxx_messageInfo_SASLPlain proto.InternalMessageInfo func (m *Scale) Reset() { *m = Scale{} } func (*Scale) ProtoMessage() {} func (*Scale) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{83} + return fileDescriptor_9d0d1b17d3865563, []int{84} } func (m *Scale) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2406,7 +2434,7 @@ var xxx_messageInfo_Scale proto.InternalMessageInfo func (m *ServeSink) Reset() { *m = ServeSink{} } func (*ServeSink) ProtoMessage() {} func (*ServeSink) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{84} + return fileDescriptor_9d0d1b17d3865563, []int{85} } func (m *ServeSink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2434,7 +2462,7 @@ var xxx_messageInfo_ServeSink proto.InternalMessageInfo func (m *ServingPipeline) Reset() { *m = ServingPipeline{} } func (*ServingPipeline) ProtoMessage() {} func (*ServingPipeline) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{85} + return fileDescriptor_9d0d1b17d3865563, []int{86} } func (m *ServingPipeline) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2462,7 +2490,7 @@ var xxx_messageInfo_ServingPipeline proto.InternalMessageInfo func (m *ServingPipelineList) Reset() { *m = ServingPipelineList{} } func (*ServingPipelineList) ProtoMessage() {} func (*ServingPipelineList) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{86} + return fileDescriptor_9d0d1b17d3865563, []int{87} } func (m *ServingPipelineList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2490,7 +2518,7 @@ var xxx_messageInfo_ServingPipelineList proto.InternalMessageInfo func (m *ServingPipelineSpec) Reset() { *m = ServingPipelineSpec{} } func (*ServingPipelineSpec) ProtoMessage() {} func (*ServingPipelineSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{87} + return fileDescriptor_9d0d1b17d3865563, []int{88} } func (m *ServingPipelineSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2518,7 +2546,7 @@ var xxx_messageInfo_ServingPipelineSpec proto.InternalMessageInfo func (m *ServingPipelineStatus) Reset() { *m = ServingPipelineStatus{} } func (*ServingPipelineStatus) ProtoMessage() {} func (*ServingPipelineStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{88} + return fileDescriptor_9d0d1b17d3865563, []int{89} } func (m *ServingPipelineStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2546,7 +2574,7 @@ var xxx_messageInfo_ServingPipelineStatus proto.InternalMessageInfo func (m *ServingSource) Reset() { *m = ServingSource{} } func (*ServingSource) ProtoMessage() {} func (*ServingSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{89} + return fileDescriptor_9d0d1b17d3865563, []int{90} } func (m *ServingSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2574,7 +2602,7 @@ var xxx_messageInfo_ServingSource proto.InternalMessageInfo func (m *ServingSpec) Reset() { *m = ServingSpec{} } func (*ServingSpec) ProtoMessage() {} func (*ServingSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{90} + return fileDescriptor_9d0d1b17d3865563, []int{91} } func (m *ServingSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2602,7 +2630,7 @@ var xxx_messageInfo_ServingSpec proto.InternalMessageInfo func (m *ServingStore) Reset() { *m = ServingStore{} } func (*ServingStore) ProtoMessage() {} func (*ServingStore) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{91} + return fileDescriptor_9d0d1b17d3865563, []int{92} } func (m *ServingStore) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2630,7 +2658,7 @@ var xxx_messageInfo_ServingStore proto.InternalMessageInfo func (m *SessionWindow) Reset() { *m = SessionWindow{} } func (*SessionWindow) ProtoMessage() {} func (*SessionWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{92} + return fileDescriptor_9d0d1b17d3865563, []int{93} } func (m *SessionWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2658,7 +2686,7 @@ var xxx_messageInfo_SessionWindow proto.InternalMessageInfo func (m *SideInput) Reset() { *m = SideInput{} } func (*SideInput) ProtoMessage() {} func (*SideInput) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{93} + return fileDescriptor_9d0d1b17d3865563, []int{94} } func (m *SideInput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2686,7 +2714,7 @@ var xxx_messageInfo_SideInput proto.InternalMessageInfo func (m *SideInputTrigger) Reset() { *m = SideInputTrigger{} } func (*SideInputTrigger) ProtoMessage() {} func (*SideInputTrigger) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{94} + return fileDescriptor_9d0d1b17d3865563, []int{95} } func (m *SideInputTrigger) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2714,7 +2742,7 @@ var xxx_messageInfo_SideInputTrigger proto.InternalMessageInfo func (m *SideInputsManagerTemplate) Reset() { *m = SideInputsManagerTemplate{} } func (*SideInputsManagerTemplate) ProtoMessage() {} func (*SideInputsManagerTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{95} + return fileDescriptor_9d0d1b17d3865563, []int{96} } func (m *SideInputsManagerTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2742,7 +2770,7 @@ var xxx_messageInfo_SideInputsManagerTemplate proto.InternalMessageInfo func (m *Sink) Reset() { *m = Sink{} } func (*Sink) ProtoMessage() {} func (*Sink) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{96} + return fileDescriptor_9d0d1b17d3865563, []int{97} } func (m *Sink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2770,7 +2798,7 @@ var xxx_messageInfo_Sink proto.InternalMessageInfo func (m *SlidingWindow) Reset() { *m = SlidingWindow{} } func (*SlidingWindow) ProtoMessage() {} func (*SlidingWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{97} + return fileDescriptor_9d0d1b17d3865563, []int{98} } func (m *SlidingWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2798,7 +2826,7 @@ var xxx_messageInfo_SlidingWindow proto.InternalMessageInfo func (m *Source) Reset() { *m = Source{} } func (*Source) ProtoMessage() {} func (*Source) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{98} + return fileDescriptor_9d0d1b17d3865563, []int{99} } func (m *Source) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2826,7 +2854,7 @@ var xxx_messageInfo_Source proto.InternalMessageInfo func (m *SqsSink) Reset() { *m = SqsSink{} } func (*SqsSink) ProtoMessage() {} func (*SqsSink) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{99} + return fileDescriptor_9d0d1b17d3865563, []int{100} } func (m *SqsSink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2854,7 +2882,7 @@ var xxx_messageInfo_SqsSink proto.InternalMessageInfo func (m *SqsSource) Reset() { *m = SqsSource{} } func (*SqsSource) ProtoMessage() {} func (*SqsSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{100} + return fileDescriptor_9d0d1b17d3865563, []int{101} } func (m *SqsSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2882,7 +2910,7 @@ var xxx_messageInfo_SqsSource proto.InternalMessageInfo func (m *Status) Reset() { *m = Status{} } func (*Status) ProtoMessage() {} func (*Status) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{101} + return fileDescriptor_9d0d1b17d3865563, []int{102} } func (m *Status) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2910,7 +2938,7 @@ var xxx_messageInfo_Status proto.InternalMessageInfo func (m *TLS) Reset() { *m = TLS{} } func (*TLS) ProtoMessage() {} func (*TLS) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{102} + return fileDescriptor_9d0d1b17d3865563, []int{103} } func (m *TLS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2938,7 +2966,7 @@ var xxx_messageInfo_TLS proto.InternalMessageInfo func (m *TagConditions) Reset() { *m = TagConditions{} } func (*TagConditions) ProtoMessage() {} func (*TagConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{103} + return fileDescriptor_9d0d1b17d3865563, []int{104} } func (m *TagConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2966,7 +2994,7 @@ var xxx_messageInfo_TagConditions proto.InternalMessageInfo func (m *Templates) Reset() { *m = Templates{} } func (*Templates) ProtoMessage() {} func (*Templates) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{104} + return fileDescriptor_9d0d1b17d3865563, []int{105} } func (m *Templates) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2994,7 +3022,7 @@ var xxx_messageInfo_Templates proto.InternalMessageInfo func (m *UDF) Reset() { *m = UDF{} } func (*UDF) ProtoMessage() {} func (*UDF) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{105} + return fileDescriptor_9d0d1b17d3865563, []int{106} } func (m *UDF) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3022,7 +3050,7 @@ var xxx_messageInfo_UDF proto.InternalMessageInfo func (m *UDSink) Reset() { *m = UDSink{} } func (*UDSink) ProtoMessage() {} func (*UDSink) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{106} + return fileDescriptor_9d0d1b17d3865563, []int{107} } func (m *UDSink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3050,7 +3078,7 @@ var xxx_messageInfo_UDSink proto.InternalMessageInfo func (m *UDSource) Reset() { *m = UDSource{} } func (*UDSource) ProtoMessage() {} func (*UDSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{107} + return fileDescriptor_9d0d1b17d3865563, []int{108} } func (m *UDSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3078,7 +3106,7 @@ var xxx_messageInfo_UDSource proto.InternalMessageInfo func (m *UDTransformer) Reset() { *m = UDTransformer{} } func (*UDTransformer) ProtoMessage() {} func (*UDTransformer) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{108} + return fileDescriptor_9d0d1b17d3865563, []int{109} } func (m *UDTransformer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3106,7 +3134,7 @@ var xxx_messageInfo_UDTransformer proto.InternalMessageInfo func (m *UpdateStrategy) Reset() { *m = UpdateStrategy{} } func (*UpdateStrategy) ProtoMessage() {} func (*UpdateStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{109} + return fileDescriptor_9d0d1b17d3865563, []int{110} } func (m *UpdateStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3134,7 +3162,7 @@ var xxx_messageInfo_UpdateStrategy proto.InternalMessageInfo func (m *Vertex) Reset() { *m = Vertex{} } func (*Vertex) ProtoMessage() {} func (*Vertex) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{110} + return fileDescriptor_9d0d1b17d3865563, []int{111} } func (m *Vertex) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3162,7 +3190,7 @@ var xxx_messageInfo_Vertex proto.InternalMessageInfo func (m *VertexInstance) Reset() { *m = VertexInstance{} } func (*VertexInstance) ProtoMessage() {} func (*VertexInstance) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{111} + return fileDescriptor_9d0d1b17d3865563, []int{112} } func (m *VertexInstance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3190,7 +3218,7 @@ var xxx_messageInfo_VertexInstance proto.InternalMessageInfo func (m *VertexLifecycle) Reset() { *m = VertexLifecycle{} } func (*VertexLifecycle) ProtoMessage() {} func (*VertexLifecycle) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{112} + return fileDescriptor_9d0d1b17d3865563, []int{113} } func (m *VertexLifecycle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3218,7 +3246,7 @@ var xxx_messageInfo_VertexLifecycle proto.InternalMessageInfo func (m *VertexLimits) Reset() { *m = VertexLimits{} } func (*VertexLimits) ProtoMessage() {} func (*VertexLimits) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{113} + return fileDescriptor_9d0d1b17d3865563, []int{114} } func (m *VertexLimits) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3246,7 +3274,7 @@ var xxx_messageInfo_VertexLimits proto.InternalMessageInfo func (m *VertexList) Reset() { *m = VertexList{} } func (*VertexList) ProtoMessage() {} func (*VertexList) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{114} + return fileDescriptor_9d0d1b17d3865563, []int{115} } func (m *VertexList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3274,7 +3302,7 @@ var xxx_messageInfo_VertexList proto.InternalMessageInfo func (m *VertexSpec) Reset() { *m = VertexSpec{} } func (*VertexSpec) ProtoMessage() {} func (*VertexSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{115} + return fileDescriptor_9d0d1b17d3865563, []int{116} } func (m *VertexSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3302,7 +3330,7 @@ var xxx_messageInfo_VertexSpec proto.InternalMessageInfo func (m *VertexStatus) Reset() { *m = VertexStatus{} } func (*VertexStatus) ProtoMessage() {} func (*VertexStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{116} + return fileDescriptor_9d0d1b17d3865563, []int{117} } func (m *VertexStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3330,7 +3358,7 @@ var xxx_messageInfo_VertexStatus proto.InternalMessageInfo func (m *VertexTemplate) Reset() { *m = VertexTemplate{} } func (*VertexTemplate) ProtoMessage() {} func (*VertexTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{117} + return fileDescriptor_9d0d1b17d3865563, []int{118} } func (m *VertexTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3358,7 +3386,7 @@ var xxx_messageInfo_VertexTemplate proto.InternalMessageInfo func (m *Watermark) Reset() { *m = Watermark{} } func (*Watermark) ProtoMessage() {} func (*Watermark) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{118} + return fileDescriptor_9d0d1b17d3865563, []int{119} } func (m *Watermark) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3386,7 +3414,7 @@ var xxx_messageInfo_Watermark proto.InternalMessageInfo func (m *Window) Reset() { *m = Window{} } func (*Window) ProtoMessage() {} func (*Window) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{119} + return fileDescriptor_9d0d1b17d3865563, []int{120} } func (m *Window) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3429,6 +3457,7 @@ func init() { proto.RegisterType((*ContainerTemplate)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.ContainerTemplate") proto.RegisterType((*DaemonTemplate)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.DaemonTemplate") proto.RegisterType((*Edge)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.Edge") + proto.RegisterType((*ExactlyOnce)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.ExactlyOnce") proto.RegisterType((*FixedWindow)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.FixedWindow") proto.RegisterType((*ForwardConditions)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.ForwardConditions") proto.RegisterType((*GSSAPI)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.GSSAPI") @@ -3544,597 +3573,602 @@ func init() { } var fileDescriptor_9d0d1b17d3865563 = []byte{ - // 9430 bytes of a gzipped FileDescriptorProto + // 9514 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x24, 0x57, 0x72, 0x98, 0xe6, 0x8b, 0x33, 0x53, 0xc3, 0x8f, 0xdd, 0xb7, 0xab, 0x15, 0xb5, 0xb7, 0xda, 0x59, - 0xb7, 0xac, 0xb3, 0x2e, 0x27, 0x93, 0x11, 0xef, 0xa4, 0xd3, 0x9d, 0x4e, 0x27, 0xcd, 0x90, 0xcb, - 0x5d, 0x6a, 0xc9, 0x25, 0x55, 0x43, 0xee, 0xea, 0x4e, 0xb9, 0x53, 0x9a, 0x3d, 0x8f, 0xc3, 0x5e, - 0xf6, 0x74, 0xcf, 0x76, 0xf7, 0x70, 0x97, 0x72, 0x84, 0x3b, 0xdb, 0x70, 0x74, 0x4e, 0x0c, 0x24, - 0x48, 0x10, 0x9c, 0x91, 0xc4, 0x39, 0x18, 0x30, 0xe0, 0x1f, 0x81, 0x81, 0x20, 0x89, 0xfd, 0xc3, - 0x06, 0x92, 0xd8, 0x3f, 0x9c, 0x43, 0x7c, 0x4e, 0x0e, 0x46, 0x80, 0x5c, 0xe0, 0x84, 0xc9, 0x31, - 0xc9, 0x8f, 0xe4, 0x97, 0x63, 0x20, 0x89, 0xb3, 0x09, 0xe0, 0xe0, 0x7d, 0xf5, 0xd7, 0xf4, 0xac, - 0xc8, 0xe9, 0x59, 0x6a, 0xe5, 0xe8, 0xd7, 0x4c, 0x57, 0xd5, 0xab, 0x7a, 0xfd, 0xfa, 0x7d, 0x54, + 0xb7, 0xac, 0x3b, 0x5d, 0x4e, 0x26, 0x23, 0xde, 0x49, 0xa7, 0x3b, 0x9d, 0x4e, 0x9a, 0x21, 0x97, + 0xbb, 0xd4, 0x92, 0x4b, 0xaa, 0x86, 0xdc, 0xd5, 0x9d, 0x72, 0xa7, 0x34, 0x7b, 0x1e, 0x87, 0x2d, + 0xf6, 0x74, 0xcf, 0x76, 0xf7, 0x70, 0x97, 0x72, 0x84, 0x3b, 0xdb, 0x70, 0x74, 0x4e, 0x0c, 0xc4, + 0x48, 0x10, 0xd8, 0x48, 0xe2, 0x1c, 0x0c, 0x18, 0xf0, 0x8f, 0xc0, 0x40, 0x90, 0xc4, 0xfe, 0xe1, + 0x03, 0x92, 0x38, 0x3f, 0x9c, 0x43, 0x7c, 0x4e, 0x0e, 0x46, 0x80, 0x28, 0x70, 0xc2, 0xe4, 0x98, + 0xe4, 0x47, 0xf2, 0xcb, 0x31, 0x90, 0xc4, 0xd9, 0x04, 0x70, 0xf0, 0xbe, 0xfa, 0x6b, 0x7a, 0x56, + 0xe4, 0xf4, 0x2c, 0xb5, 0xba, 0xe8, 0xd7, 0x4c, 0x57, 0xd5, 0xab, 0x7a, 0xfd, 0xfa, 0x7d, 0x54, 0xd5, 0xab, 0x57, 0x0f, 0xae, 0x75, 0x4c, 0x7f, 0xb7, 0xbf, 0x3d, 0x67, 0x38, 0xdd, 0x79, 0xbb, - 0xdf, 0xd5, 0x7b, 0xae, 0x73, 0x87, 0xff, 0xd9, 0xb1, 0x9c, 0x7b, 0xf3, 0xbd, 0xbd, 0xce, 0xbc, - 0xde, 0x33, 0xbd, 0x10, 0xb2, 0xff, 0xa2, 0x6e, 0xf5, 0x76, 0xf5, 0x17, 0xe7, 0x3b, 0xd4, 0xa6, - 0xae, 0xee, 0xd3, 0xf6, 0x5c, 0xcf, 0x75, 0x7c, 0x87, 0x7c, 0x21, 0x64, 0x34, 0xa7, 0x18, 0xcd, - 0xa9, 0x62, 0x73, 0xbd, 0xbd, 0xce, 0x1c, 0x63, 0x14, 0x42, 0x14, 0xa3, 0x8b, 0x3f, 0x19, 0xa9, - 0x41, 0xc7, 0xe9, 0x38, 0xf3, 0x9c, 0xdf, 0x76, 0x7f, 0x87, 0x3f, 0xf1, 0x07, 0xfe, 0x4f, 0xc8, - 0xb9, 0xa8, 0xed, 0xbd, 0xe2, 0xcd, 0x99, 0x0e, 0xab, 0xd6, 0xbc, 0xe1, 0xb8, 0x74, 0x7e, 0x7f, - 0xa0, 0x2e, 0x17, 0x3f, 0x1f, 0xd2, 0x74, 0x75, 0x63, 0xd7, 0xb4, 0xa9, 0x7b, 0xa0, 0xde, 0x65, - 0xde, 0xa5, 0x9e, 0xd3, 0x77, 0x0d, 0x7a, 0xa2, 0x52, 0xde, 0x7c, 0x97, 0xfa, 0x7a, 0x9a, 0xac, - 0xf9, 0x61, 0xa5, 0xdc, 0xbe, 0xed, 0x9b, 0xdd, 0x41, 0x31, 0x2f, 0x7f, 0x58, 0x01, 0xcf, 0xd8, - 0xa5, 0x5d, 0x7d, 0xa0, 0xdc, 0xe7, 0x86, 0x95, 0xeb, 0xfb, 0xa6, 0x35, 0x6f, 0xda, 0xbe, 0xe7, - 0xbb, 0xc9, 0x42, 0xda, 0x3f, 0xc8, 0xc3, 0x54, 0xe3, 0x76, 0xab, 0xe1, 0x79, 0xfd, 0x2e, 0x45, - 0xc7, 0xa2, 0xe4, 0x33, 0x50, 0x76, 0x1d, 0x8b, 0x36, 0x5c, 0x7b, 0x36, 0x77, 0x25, 0xf7, 0x7c, - 0xb5, 0x39, 0xf3, 0xbd, 0xc3, 0xfa, 0x13, 0x47, 0x87, 0xf5, 0x32, 0x43, 0x37, 0xf0, 0x26, 0x2a, - 0x3c, 0x79, 0x11, 0x6a, 0x1e, 0xf5, 0x3c, 0xd3, 0xb1, 0x6f, 0xea, 0x5d, 0x3a, 0x9b, 0x17, 0xe4, - 0x47, 0x87, 0xf5, 0x5a, 0x2b, 0x04, 0x63, 0x94, 0x86, 0xbc, 0x06, 0x33, 0xed, 0xbe, 0xab, 0xfb, - 0xa6, 0x63, 0xb7, 0xa8, 0xe1, 0xd8, 0x6d, 0x6f, 0xb6, 0x70, 0x25, 0xf7, 0x7c, 0xa9, 0x79, 0xee, - 0xe8, 0xb0, 0x3e, 0xb3, 0x14, 0x47, 0x61, 0x92, 0x96, 0xcc, 0x01, 0xd0, 0xfb, 0x3e, 0x75, 0x6d, - 0xdd, 0x5a, 0x59, 0x9a, 0x2d, 0x72, 0x81, 0xd3, 0x47, 0x87, 0x75, 0xb8, 0x1a, 0x40, 0x31, 0x42, - 0x41, 0x34, 0x98, 0xe8, 0x39, 0x96, 0x69, 0x1c, 0xcc, 0x96, 0x38, 0x2d, 0x1c, 0x1d, 0xd6, 0x27, - 0x36, 0x38, 0x04, 0x25, 0x86, 0xf1, 0x14, 0xff, 0x1a, 0xae, 0xed, 0xcd, 0x4e, 0x5c, 0x29, 0x28, - 0x9e, 0x82, 0xae, 0x81, 0x37, 0x3d, 0x8c, 0x50, 0x68, 0xbf, 0x0d, 0x70, 0xae, 0xb1, 0xed, 0xf9, - 0xae, 0x6e, 0xf8, 0x1b, 0x4e, 0x7b, 0x93, 0x76, 0x7b, 0x96, 0xee, 0x53, 0xb2, 0x07, 0x15, 0xd6, - 0x07, 0xda, 0xba, 0xaf, 0xf3, 0x96, 0xab, 0x2d, 0x34, 0xe6, 0x46, 0xec, 0xf3, 0x73, 0x6b, 0x92, - 0x51, 0x73, 0xf2, 0xe8, 0xb0, 0x5e, 0x51, 0x4f, 0x18, 0x08, 0x20, 0xbf, 0x98, 0x83, 0x49, 0xdb, - 0x69, 0xd3, 0x16, 0xb5, 0xa8, 0xe1, 0x3b, 0xee, 0x6c, 0xfe, 0x4a, 0xe1, 0xf9, 0xda, 0xc2, 0x37, - 0x46, 0x96, 0x98, 0xf2, 0x46, 0x73, 0x37, 0x23, 0x02, 0xae, 0xda, 0xbe, 0x7b, 0xd0, 0x3c, 0x2f, - 0xfb, 0xc2, 0x64, 0x14, 0x85, 0xb1, 0x9a, 0x90, 0x2d, 0xa8, 0xf9, 0x8e, 0x45, 0xc5, 0x87, 0x63, - 0x9f, 0x97, 0x55, 0xec, 0xf2, 0x9c, 0xe8, 0x9d, 0x4c, 0xfc, 0x1c, 0x1b, 0x96, 0x73, 0xfb, 0x2f, - 0xce, 0x6d, 0x06, 0x64, 0xcd, 0x73, 0x92, 0x71, 0x2d, 0x84, 0x79, 0x18, 0xe5, 0x43, 0x28, 0xcc, - 0x78, 0xd4, 0xe8, 0xbb, 0xa6, 0x7f, 0xb0, 0xe8, 0xd8, 0x3e, 0xbd, 0xef, 0xf3, 0xef, 0x5f, 0x5b, - 0xf8, 0x74, 0x1a, 0xeb, 0x0d, 0xa7, 0xdd, 0x8a, 0x53, 0x8b, 0x1e, 0x96, 0x00, 0x62, 0x92, 0x27, - 0xb1, 0xe1, 0x8c, 0xd9, 0xd5, 0x3b, 0x74, 0xa3, 0x6f, 0x59, 0x2d, 0x6a, 0xb8, 0xd4, 0xf7, 0x66, - 0x4b, 0xfc, 0x15, 0x9e, 0x4f, 0x93, 0xb3, 0xea, 0x18, 0xba, 0xb5, 0xbe, 0x7d, 0x87, 0x1a, 0x3e, - 0xd2, 0x1d, 0xea, 0x52, 0xdb, 0xa0, 0xcd, 0x59, 0xf9, 0x32, 0x67, 0x56, 0x12, 0x9c, 0x70, 0x80, - 0x37, 0xb9, 0x06, 0x67, 0x7b, 0xae, 0xe9, 0xf0, 0x2a, 0x58, 0xba, 0xe7, 0xf1, 0x91, 0x34, 0xc1, - 0x3b, 0xeb, 0xd3, 0x92, 0xcd, 0xd9, 0x8d, 0x24, 0x01, 0x0e, 0x96, 0x21, 0xcf, 0x43, 0x45, 0x01, - 0x67, 0xcb, 0x7c, 0x48, 0xf1, 0xbe, 0xa3, 0xca, 0x62, 0x80, 0x25, 0xcb, 0x50, 0xd1, 0x77, 0x76, - 0x4c, 0x9b, 0x51, 0x56, 0x78, 0x13, 0x5e, 0x4a, 0x7b, 0xb5, 0x86, 0xa4, 0x11, 0x7c, 0xd4, 0x13, - 0x06, 0x65, 0xc9, 0x9b, 0x40, 0x3c, 0xea, 0xee, 0x9b, 0x06, 0x6d, 0x18, 0x86, 0xd3, 0xb7, 0x7d, - 0x5e, 0xf7, 0x2a, 0xaf, 0xfb, 0x45, 0x59, 0x77, 0xd2, 0x1a, 0xa0, 0xc0, 0x94, 0x52, 0xe4, 0x0d, - 0x38, 0x23, 0xa7, 0xb7, 0xb0, 0x15, 0x80, 0x73, 0x3a, 0xcf, 0x1a, 0x12, 0x13, 0x38, 0x1c, 0xa0, - 0x26, 0x6d, 0xb8, 0xa4, 0xf7, 0x7d, 0xa7, 0xcb, 0x58, 0xc6, 0x85, 0x6e, 0x3a, 0x7b, 0xd4, 0x9e, - 0xad, 0x5d, 0xc9, 0x3d, 0x5f, 0x69, 0x5e, 0x39, 0x3a, 0xac, 0x5f, 0x6a, 0x3c, 0x84, 0x0e, 0x1f, - 0xca, 0x85, 0xac, 0x43, 0xb5, 0x6d, 0x7b, 0x62, 0x66, 0x98, 0x9d, 0xe4, 0x15, 0x7c, 0x51, 0xbe, - 0x6a, 0x75, 0xe9, 0x66, 0x4b, 0x20, 0x1e, 0x1c, 0xd6, 0x2f, 0x0d, 0xae, 0x42, 0x73, 0x01, 0x1e, - 0x43, 0x1e, 0x64, 0x8d, 0x33, 0x5c, 0x74, 0xec, 0x1d, 0xb3, 0x33, 0x3b, 0xc5, 0xbf, 0xc6, 0x95, - 0x21, 0x1d, 0x7a, 0xe9, 0x66, 0x4b, 0xd0, 0x35, 0xa7, 0xa4, 0x38, 0xf1, 0x88, 0x21, 0x07, 0xd2, - 0x86, 0x69, 0xb5, 0x7e, 0x2d, 0x5a, 0xba, 0xd9, 0xf5, 0x66, 0xa7, 0x79, 0xe7, 0xfd, 0xf1, 0x21, - 0x3c, 0x31, 0x4a, 0xdc, 0xbc, 0x20, 0x5f, 0x65, 0x3a, 0x06, 0xf6, 0x30, 0xc1, 0xf3, 0xe2, 0xeb, - 0x70, 0x76, 0x60, 0x6e, 0x20, 0x67, 0xa0, 0xb0, 0x47, 0x0f, 0xc4, 0xa2, 0x81, 0xec, 0x2f, 0x39, - 0x0f, 0xa5, 0x7d, 0xdd, 0xea, 0xcb, 0x95, 0x01, 0xc5, 0xc3, 0x97, 0xf2, 0xaf, 0xe4, 0xb4, 0xdf, - 0x2f, 0xc1, 0xa4, 0x9a, 0x71, 0x5a, 0xa6, 0xbd, 0x47, 0x6e, 0x43, 0xc1, 0x72, 0x3a, 0x72, 0xde, - 0xfc, 0xf2, 0xc8, 0xb3, 0xd8, 0xaa, 0xd3, 0x69, 0x96, 0x8f, 0x0e, 0xeb, 0x85, 0x55, 0xa7, 0x83, - 0x8c, 0x23, 0x31, 0xa0, 0xb4, 0xa7, 0xef, 0xec, 0xe9, 0xbc, 0x0e, 0xb5, 0x85, 0xe6, 0xc8, 0xac, - 0x6f, 0x30, 0x2e, 0xac, 0xae, 0xcd, 0xea, 0xd1, 0x61, 0xbd, 0xc4, 0x1f, 0x51, 0xf0, 0x26, 0x0e, - 0x54, 0xb7, 0x2d, 0xdd, 0xd8, 0xdb, 0x75, 0x2c, 0xca, 0xd7, 0xb3, 0x2c, 0x82, 0x9a, 0x8a, 0x93, - 0xf8, 0xcc, 0xc1, 0x23, 0x86, 0x32, 0x88, 0x01, 0x13, 0xfd, 0xb6, 0x67, 0xda, 0x7b, 0x72, 0x0e, - 0x7c, 0x7d, 0x64, 0x69, 0x5b, 0x4b, 0xfc, 0x9d, 0xf8, 0xc2, 0x28, 0xfe, 0xa3, 0x64, 0xcd, 0x9a, - 0x8e, 0x8d, 0x54, 0xca, 0xd7, 0xce, 0x2c, 0x6f, 0xc4, 0x06, 0x12, 0x0d, 0x9b, 0x8e, 0x3f, 0xa2, - 0xe0, 0x4d, 0xde, 0x81, 0x82, 0x77, 0xd7, 0xe3, 0x33, 0x5e, 0x6d, 0xe1, 0x8d, 0xd1, 0x45, 0xdc, - 0xf5, 0xb8, 0x00, 0xfe, 0xf1, 0x5b, 0x77, 0x3d, 0x64, 0x5c, 0x49, 0x07, 0x26, 0x7a, 0x7d, 0xcb, - 0xd3, 0x5d, 0x3e, 0x23, 0xd6, 0x16, 0x16, 0x47, 0xe6, 0xbf, 0xc1, 0xd9, 0x84, 0x4d, 0x25, 0x9e, - 0x51, 0xb2, 0xd7, 0xfe, 0x64, 0x12, 0xa6, 0x55, 0x7f, 0xbe, 0x45, 0x5d, 0x9f, 0xde, 0x27, 0x57, - 0xa0, 0x68, 0xb3, 0x59, 0x4c, 0x28, 0x51, 0x93, 0x72, 0x64, 0x15, 0xf9, 0xec, 0xc5, 0x31, 0xec, - 0x23, 0x8a, 0x51, 0x25, 0xfb, 0xe6, 0xe8, 0x1f, 0xb1, 0xc5, 0xd9, 0x88, 0x9a, 0x89, 0xff, 0x28, - 0x59, 0x93, 0x77, 0xa0, 0xc8, 0xfb, 0x89, 0xe8, 0x95, 0xaf, 0x8d, 0x2e, 0x82, 0xbd, 0x7a, 0x85, - 0xbd, 0x01, 0xef, 0x23, 0x9c, 0x29, 0x1b, 0xb5, 0xfd, 0xf6, 0x8e, 0xec, 0x83, 0x5f, 0xce, 0xd0, - 0x07, 0x97, 0xc5, 0x87, 0xdb, 0x5a, 0x5a, 0x46, 0xc6, 0x91, 0xfc, 0xb5, 0x1c, 0x9c, 0x35, 0x1c, - 0xdb, 0xd7, 0x99, 0x16, 0xab, 0xf4, 0x11, 0xd9, 0x0f, 0xdf, 0x1c, 0x59, 0xce, 0x62, 0x92, 0x63, - 0xf3, 0x49, 0xb6, 0xbc, 0x0e, 0x80, 0x71, 0x50, 0x36, 0xf9, 0x3b, 0x39, 0x78, 0x92, 0x2d, 0x7b, - 0x03, 0xc4, 0xb2, 0xeb, 0x8e, 0xb3, 0x56, 0x4f, 0x1f, 0x1d, 0xd6, 0x9f, 0x5c, 0x49, 0x13, 0x86, - 0xe9, 0x75, 0x60, 0xb5, 0x3b, 0xa7, 0x0f, 0x6a, 0x70, 0xb2, 0xdb, 0xaf, 0x8e, 0x53, 0x2b, 0x6c, - 0x7e, 0x4a, 0x76, 0xe5, 0x34, 0x25, 0x18, 0xd3, 0x6a, 0x41, 0xae, 0x42, 0x79, 0xdf, 0xb1, 0xfa, - 0x5d, 0xea, 0xcd, 0x56, 0xf8, 0x6a, 0x74, 0x31, 0x6d, 0x35, 0xba, 0xc5, 0x49, 0x42, 0x73, 0x43, - 0x3c, 0x7b, 0xa8, 0xca, 0x12, 0x13, 0x26, 0x2c, 0xb3, 0x6b, 0xfa, 0x1e, 0xd7, 0x31, 0x6a, 0x0b, - 0x57, 0x47, 0x7e, 0x2d, 0x31, 0x44, 0x57, 0x39, 0x33, 0x31, 0x6a, 0xc4, 0x7f, 0x94, 0x02, 0xf8, - 0xd4, 0x67, 0xe8, 0x96, 0xd0, 0x41, 0x6a, 0x0b, 0x5f, 0x19, 0x7d, 0xd8, 0x30, 0x2e, 0xcd, 0x29, - 0xf9, 0x4e, 0x25, 0xfe, 0x88, 0x82, 0x37, 0xf9, 0x3a, 0x4c, 0xc7, 0xbe, 0xa6, 0x37, 0x5b, 0xe3, - 0xad, 0xf3, 0x4c, 0x5a, 0xeb, 0x04, 0x54, 0xe1, 0x22, 0x1d, 0xeb, 0x21, 0x1e, 0x26, 0x98, 0x91, - 0x1b, 0x50, 0xf1, 0xcc, 0x36, 0x35, 0x74, 0xd7, 0x9b, 0x9d, 0x3c, 0x0e, 0xe3, 0x33, 0x92, 0x71, - 0xa5, 0x25, 0x8b, 0x61, 0xc0, 0x80, 0x1b, 0x49, 0xba, 0xeb, 0x9b, 0x42, 0xa7, 0x9f, 0xe2, 0xfa, - 0xa5, 0x30, 0x92, 0x02, 0x28, 0x46, 0x28, 0x18, 0x3d, 0x2b, 0xbb, 0x62, 0xf7, 0xfa, 0xbe, 0xd0, - 0x41, 0xa4, 0x51, 0xd5, 0x0a, 0xa0, 0x18, 0xa1, 0x20, 0xbf, 0x96, 0x83, 0x4f, 0x85, 0x8f, 0x83, - 0x83, 0x6c, 0x66, 0xec, 0x83, 0xac, 0x7e, 0x74, 0x58, 0xff, 0x54, 0x6b, 0xb8, 0x48, 0x7c, 0x58, - 0x7d, 0xc8, 0x07, 0x39, 0x98, 0xee, 0xf7, 0xda, 0xba, 0x4f, 0x5b, 0x3e, 0xb3, 0xa7, 0x3b, 0x07, - 0xb3, 0x67, 0x78, 0x15, 0xaf, 0x8d, 0x3e, 0x0b, 0xc6, 0xd8, 0x85, 0x9f, 0x39, 0x0e, 0xc7, 0x84, - 0x58, 0xed, 0x0e, 0x9c, 0x6d, 0x18, 0x46, 0xbf, 0xdb, 0xb7, 0x74, 0xdf, 0x71, 0x6f, 0x9b, 0x76, - 0xdb, 0xb9, 0x47, 0xb6, 0xa0, 0xcc, 0xb4, 0x63, 0xa7, 0xef, 0x4b, 0x95, 0x6a, 0x2e, 0xf2, 0xe9, - 0x03, 0xef, 0x40, 0x58, 0x1b, 0x66, 0x57, 0xb2, 0xce, 0xa0, 0x0c, 0xf0, 0x66, 0x8d, 0x8d, 0xc0, - 0x4d, 0xc1, 0x02, 0x15, 0x2f, 0xed, 0x36, 0x4c, 0x35, 0xfa, 0xfe, 0xae, 0xe3, 0x9a, 0xef, 0x71, - 0x32, 0xb2, 0x0c, 0x25, 0x9f, 0x6b, 0xd7, 0x42, 0xca, 0x73, 0x69, 0x1d, 0x4c, 0x58, 0x3a, 0x37, - 0xe8, 0x81, 0x52, 0x17, 0x85, 0x16, 0x20, 0xb4, 0x6d, 0x51, 0x5c, 0xfb, 0x4e, 0x1e, 0xca, 0x4d, - 0xdd, 0xd8, 0x73, 0x76, 0x76, 0xc8, 0xdb, 0x50, 0x31, 0x6d, 0x9f, 0xba, 0xfb, 0xba, 0x35, 0x62, - 0xe5, 0xb9, 0xc1, 0xb2, 0x22, 0x79, 0x60, 0xc0, 0x8d, 0xd4, 0xa1, 0xe4, 0xf9, 0xb4, 0xe7, 0xf1, - 0xf5, 0x76, 0x4a, 0x2a, 0x23, 0x0c, 0x80, 0x02, 0x4e, 0x34, 0x98, 0xd8, 0xd1, 0xb9, 0x39, 0xcd, - 0x96, 0xcb, 0x9c, 0x98, 0x1a, 0x96, 0x39, 0x04, 0x25, 0x86, 0xac, 0x40, 0xc1, 0xd0, 0x7b, 0x72, - 0xcd, 0x3b, 0x69, 0xcd, 0xf8, 0x2a, 0xb7, 0xa8, 0xf7, 0x90, 0xf1, 0x60, 0xe2, 0xee, 0x98, 0xbe, - 0x4f, 0x5d, 0xbe, 0xb2, 0x49, 0x71, 0x6f, 0x72, 0x08, 0x4a, 0x8c, 0xf6, 0xcb, 0x39, 0xa8, 0x36, - 0x75, 0xcf, 0x34, 0x58, 0xc3, 0x93, 0x45, 0x28, 0xf6, 0x3d, 0xea, 0x9e, 0xac, 0xb9, 0xf9, 0xaa, - 0xbd, 0xe5, 0x51, 0x17, 0x79, 0x61, 0xb2, 0x0e, 0x95, 0x9e, 0xee, 0x79, 0xf7, 0x1c, 0xb7, 0x2d, - 0x35, 0x8f, 0x63, 0x32, 0x12, 0x06, 0xa5, 0x2c, 0x8a, 0x01, 0x13, 0xad, 0x06, 0xa1, 0x96, 0xaa, - 0xfd, 0x42, 0x0e, 0xce, 0x35, 0xfb, 0x3b, 0x3b, 0xd4, 0x95, 0xf6, 0x93, 0xb4, 0x4c, 0xfa, 0x50, - 0xbd, 0x43, 0x7d, 0xcf, 0x77, 0xa9, 0xde, 0x95, 0x62, 0xaf, 0x8f, 0x3c, 0x56, 0xde, 0xa4, 0x7e, - 0x8b, 0x73, 0x8a, 0x1a, 0x44, 0x01, 0x10, 0x43, 0x49, 0xda, 0x6f, 0x97, 0x60, 0x72, 0xd1, 0xe9, - 0x6e, 0x9b, 0x36, 0x6d, 0x5f, 0x6d, 0x77, 0x28, 0x79, 0x17, 0x8a, 0xb4, 0xdd, 0xa1, 0xb2, 0x09, - 0x47, 0x57, 0x88, 0x18, 0xb3, 0x50, 0xad, 0x63, 0x4f, 0xc8, 0x19, 0x93, 0x55, 0x98, 0xde, 0x71, - 0x9d, 0xae, 0x58, 0x63, 0x36, 0x0f, 0x7a, 0xca, 0x31, 0xf6, 0xe3, 0x6a, 0x40, 0x2f, 0xc7, 0xb0, - 0x0f, 0x0e, 0xeb, 0x10, 0x3e, 0x61, 0xa2, 0x2c, 0x79, 0x1b, 0x66, 0x43, 0x48, 0x30, 0xd9, 0x2e, - 0x32, 0x8b, 0x54, 0x7a, 0xce, 0x2e, 0x1d, 0x1d, 0xd6, 0x67, 0x97, 0x87, 0xd0, 0xe0, 0xd0, 0xd2, - 0x6c, 0x0a, 0x3b, 0x13, 0x22, 0xc5, 0x02, 0x28, 0xbb, 0xf5, 0x98, 0x56, 0x56, 0x6e, 0xba, 0x2f, - 0x27, 0x44, 0xe0, 0x80, 0x50, 0xb2, 0x0c, 0x93, 0xbe, 0x13, 0x69, 0x2f, 0xe1, 0xab, 0xd3, 0x94, - 0xaf, 0x69, 0xd3, 0x19, 0xda, 0x5a, 0xb1, 0x72, 0x04, 0xe1, 0x82, 0x7a, 0x4e, 0xb4, 0xd4, 0x04, - 0x6f, 0xa9, 0x8b, 0x47, 0x87, 0xf5, 0x0b, 0x9b, 0xa9, 0x14, 0x38, 0xa4, 0x24, 0xf9, 0xe9, 0x1c, - 0x4c, 0x2b, 0x94, 0x6c, 0xa3, 0xf2, 0x38, 0xdb, 0x88, 0xb0, 0x1e, 0xb1, 0x19, 0x13, 0x80, 0x09, - 0x81, 0x5a, 0x13, 0x6a, 0x8b, 0x4e, 0xb7, 0xe7, 0x0a, 0x3f, 0x2a, 0xf9, 0x1c, 0x14, 0x7d, 0xd6, - 0x4c, 0xc2, 0xb2, 0xa8, 0xab, 0x2e, 0x28, 0x9b, 0x67, 0x26, 0x42, 0xca, 0xdb, 0x88, 0x13, 0x6b, - 0xbf, 0x5e, 0x86, 0x6a, 0xb0, 0x8c, 0x91, 0x67, 0xa1, 0xc4, 0x3d, 0x51, 0x92, 0x47, 0xa0, 0x9f, - 0x70, 0x87, 0x15, 0x0a, 0x1c, 0x79, 0x0e, 0xca, 0x86, 0xd3, 0xed, 0xea, 0x76, 0x9b, 0x7b, 0x17, - 0xab, 0x62, 0x51, 0x58, 0x14, 0x20, 0x54, 0x38, 0x72, 0x09, 0x8a, 0xba, 0xdb, 0x11, 0x8e, 0xbe, - 0xaa, 0x98, 0x6c, 0x1a, 0x6e, 0xc7, 0x43, 0x0e, 0x25, 0x5f, 0x84, 0x02, 0xb5, 0xf7, 0x67, 0x8b, - 0xc3, 0xf5, 0xbe, 0xab, 0xf6, 0xfe, 0x2d, 0xdd, 0x6d, 0xd6, 0x64, 0x1d, 0x0a, 0x57, 0xed, 0x7d, - 0x64, 0x65, 0xc8, 0x2a, 0x94, 0xa9, 0xbd, 0xcf, 0xfa, 0x8f, 0xf4, 0xc0, 0xfd, 0xd8, 0x90, 0xe2, - 0x8c, 0x44, 0x9a, 0x40, 0x81, 0xf6, 0x28, 0xc1, 0xa8, 0x58, 0x90, 0xaf, 0xc2, 0xa4, 0x50, 0x24, - 0xd7, 0xd8, 0x77, 0x15, 0x8e, 0xde, 0xda, 0x42, 0x7d, 0xb8, 0x26, 0xca, 0xe9, 0x42, 0x8f, 0x67, - 0x04, 0xe8, 0x61, 0x8c, 0x15, 0xf9, 0x2a, 0x54, 0x95, 0x83, 0x44, 0xf5, 0x8e, 0x54, 0x67, 0xa1, - 0xf2, 0xaa, 0x20, 0xbd, 0xdb, 0x37, 0x5d, 0xda, 0xa5, 0xb6, 0xef, 0x35, 0xcf, 0x2a, 0xf7, 0x91, - 0xc2, 0x7a, 0x18, 0x72, 0x23, 0xdb, 0x83, 0x5e, 0x4f, 0xe1, 0xb2, 0x7b, 0x76, 0xc8, 0x94, 0x3d, - 0x82, 0xcb, 0xf3, 0x1b, 0x30, 0x13, 0xb8, 0x25, 0xa5, 0x67, 0x4b, 0x38, 0xf1, 0x3e, 0xcf, 0x8a, - 0xaf, 0xc4, 0x51, 0x0f, 0x0e, 0xeb, 0xcf, 0xa4, 0xf8, 0xb6, 0x42, 0x02, 0x4c, 0x32, 0x23, 0xef, - 0xc1, 0xb4, 0x4b, 0xf5, 0xb6, 0x69, 0x53, 0xcf, 0xdb, 0x70, 0x9d, 0xed, 0xec, 0x5a, 0x35, 0xe7, - 0x22, 0x86, 0x0e, 0xc6, 0x38, 0x63, 0x42, 0x12, 0xb9, 0x07, 0x53, 0x96, 0xb9, 0x4f, 0x43, 0xd1, - 0xb5, 0xb1, 0x88, 0x3e, 0x7b, 0x74, 0x58, 0x9f, 0x5a, 0x8d, 0x32, 0xc6, 0xb8, 0x1c, 0xa6, 0x19, - 0xf5, 0x1c, 0xd7, 0x57, 0xaa, 0xf7, 0x8f, 0x3d, 0x54, 0xf5, 0xde, 0x70, 0x5c, 0x3f, 0x1c, 0x84, - 0xec, 0xc9, 0x43, 0x51, 0x5c, 0xfb, 0xc7, 0x25, 0x18, 0x34, 0x50, 0xe3, 0x3d, 0x2e, 0x37, 0xee, - 0x1e, 0x97, 0xec, 0x0d, 0x62, 0xfd, 0x7a, 0x45, 0x16, 0x1b, 0x43, 0x8f, 0x48, 0xe9, 0xd5, 0x85, - 0x71, 0xf7, 0xea, 0xc7, 0x66, 0xe2, 0x19, 0xec, 0xfe, 0x13, 0x1f, 0x5d, 0xf7, 0x2f, 0x9f, 0x4e, - 0xf7, 0xd7, 0xbe, 0x5d, 0x84, 0xe9, 0x25, 0x9d, 0x76, 0x1d, 0xfb, 0x43, 0x7d, 0x14, 0xb9, 0xc7, - 0xc2, 0x47, 0xf1, 0x3c, 0x54, 0x5c, 0xda, 0xb3, 0x4c, 0x43, 0x17, 0xe6, 0x81, 0xdc, 0x3e, 0x41, - 0x09, 0xc3, 0x00, 0x3b, 0xc4, 0x37, 0x55, 0x78, 0x2c, 0x7d, 0x53, 0xc5, 0x8f, 0xde, 0x37, 0xa5, - 0xfd, 0x74, 0x1e, 0xb8, 0x7a, 0x4c, 0xae, 0x40, 0x91, 0xa9, 0x7e, 0x49, 0x8f, 0x28, 0x1f, 0x2d, - 0x1c, 0x43, 0x2e, 0x42, 0xde, 0x77, 0xe4, 0x74, 0x03, 0x12, 0x9f, 0xdf, 0x74, 0x30, 0xef, 0x3b, - 0xe4, 0x3d, 0x00, 0xc3, 0xb1, 0xdb, 0xa6, 0xda, 0x55, 0xcc, 0xf6, 0x62, 0xcb, 0x8e, 0x7b, 0x4f, - 0x77, 0xdb, 0x8b, 0x01, 0x47, 0xe1, 0x9d, 0x08, 0x9f, 0x31, 0x22, 0x8d, 0xbc, 0x0e, 0x13, 0x8e, - 0xbd, 0xdc, 0xb7, 0x2c, 0xb9, 0xe5, 0xfc, 0x13, 0xcc, 0x50, 0x5b, 0xe7, 0x90, 0x07, 0x87, 0xf5, - 0xa7, 0x85, 0xb9, 0xc3, 0x9e, 0x6e, 0xbb, 0xa6, 0x6f, 0xda, 0x9d, 0xc0, 0x58, 0x97, 0xc5, 0xb4, - 0xbf, 0x91, 0x83, 0xda, 0xb2, 0x79, 0x9f, 0xb6, 0xa5, 0x7d, 0x8e, 0x30, 0x61, 0x51, 0xbb, 0xe3, - 0xef, 0x8e, 0x68, 0xe1, 0x0a, 0x9f, 0x15, 0xe7, 0x80, 0x92, 0x13, 0x99, 0x87, 0xaa, 0xb0, 0x79, - 0x4c, 0xbb, 0xc3, 0xdb, 0xb0, 0x12, 0xce, 0xf4, 0x2d, 0x85, 0xc0, 0x90, 0x46, 0x7b, 0x1f, 0xce, - 0x0e, 0x34, 0x03, 0xd9, 0x85, 0xa2, 0xaf, 0x77, 0xd4, 0xa2, 0xb2, 0x3c, 0x72, 0x03, 0x6f, 0xea, - 0x9d, 0x48, 0xe3, 0x06, 0x1f, 0x7b, 0x53, 0x67, 0x9a, 0x21, 0x93, 0xa0, 0xfd, 0x46, 0x11, 0x26, - 0xae, 0xb5, 0x5a, 0x8d, 0x8d, 0x15, 0xf2, 0x12, 0xd4, 0xe4, 0x9e, 0xe0, 0xcd, 0xd0, 0x65, 0x1e, - 0x6c, 0x09, 0xb7, 0x42, 0x14, 0x46, 0xe9, 0x98, 0x16, 0xeb, 0x52, 0xdd, 0xea, 0xca, 0x1e, 0x13, - 0x2c, 0xa0, 0xc8, 0x80, 0x28, 0x70, 0x44, 0x87, 0x69, 0x66, 0xf5, 0xda, 0x7a, 0x97, 0x0a, 0x8b, - 0x56, 0xf6, 0x9d, 0x63, 0xda, 0xbc, 0x7c, 0x96, 0xdd, 0x8a, 0x31, 0xc0, 0x04, 0x43, 0xf2, 0x0a, - 0x54, 0xf4, 0xbe, 0xbf, 0xcb, 0x6d, 0x17, 0xd1, 0x41, 0x2e, 0xf1, 0x2d, 0x53, 0x09, 0x7b, 0x70, - 0x58, 0x9f, 0xbc, 0x81, 0xcd, 0x97, 0xd4, 0x33, 0x06, 0xd4, 0xac, 0x72, 0xca, 0x8a, 0x96, 0x95, - 0x2b, 0x9d, 0xb8, 0x72, 0x1b, 0x31, 0x06, 0x98, 0x60, 0x48, 0xde, 0x81, 0xc9, 0x3d, 0x7a, 0xe0, - 0xeb, 0xdb, 0x52, 0xc0, 0xc4, 0x49, 0x04, 0x9c, 0x61, 0x9a, 0xef, 0x8d, 0x48, 0x71, 0x8c, 0x31, - 0x23, 0x1e, 0x9c, 0xdf, 0xa3, 0xee, 0x36, 0x75, 0x1d, 0xb9, 0x01, 0x29, 0x85, 0x94, 0x4f, 0x22, - 0x64, 0xf6, 0xe8, 0xb0, 0x7e, 0xfe, 0x46, 0x0a, 0x1b, 0x4c, 0x65, 0xae, 0xfd, 0xef, 0x3c, 0xcc, - 0x5c, 0x13, 0x71, 0x2c, 0x8e, 0x2b, 0x96, 0x5f, 0xf2, 0x34, 0x14, 0xdc, 0x5e, 0x9f, 0xf7, 0x9c, - 0x82, 0xf0, 0xb2, 0xe0, 0xc6, 0x16, 0x32, 0x18, 0x79, 0x1b, 0x2a, 0x2a, 0x8c, 0x44, 0xfa, 0x1d, - 0x46, 0xf2, 0x27, 0xa9, 0x27, 0x0c, 0xb8, 0x31, 0x03, 0xa9, 0xeb, 0x75, 0x5a, 0xe6, 0x7b, 0x54, - 0x9a, 0xe2, 0xdc, 0x40, 0x5a, 0x13, 0x20, 0x54, 0x38, 0xb6, 0xb4, 0xec, 0xd1, 0x03, 0x61, 0x88, - 0x16, 0xc3, 0xa5, 0xe5, 0x86, 0x84, 0x61, 0x80, 0x25, 0x75, 0xb5, 0x61, 0xca, 0x7a, 0x41, 0x51, - 0x38, 0xa8, 0x6e, 0x31, 0x80, 0xdc, 0x3b, 0x65, 0xf3, 0x86, 0xf4, 0x18, 0x4d, 0x8c, 0x3e, 0x6f, - 0xc4, 0x3d, 0x4c, 0xe4, 0xb3, 0x50, 0xe5, 0xcc, 0x9b, 0x96, 0xb3, 0xcd, 0x3f, 0x5c, 0x55, 0xb8, - 0x53, 0x6e, 0x29, 0x20, 0x86, 0x78, 0xed, 0x4f, 0xf3, 0x70, 0xe1, 0x1a, 0xf5, 0xc5, 0xd2, 0xbe, - 0x44, 0x7b, 0x96, 0x73, 0xc0, 0x94, 0x4a, 0xa4, 0x77, 0xc9, 0x1b, 0x00, 0xa6, 0xb7, 0xdd, 0xda, - 0x37, 0x36, 0x43, 0xe3, 0xf4, 0x8a, 0x1c, 0x92, 0xb0, 0xd2, 0x6a, 0x4a, 0xcc, 0x83, 0xd8, 0x13, - 0x46, 0xca, 0x84, 0x56, 0x69, 0xfe, 0x21, 0x56, 0x69, 0x0b, 0xa0, 0x17, 0xaa, 0xa6, 0x05, 0x4e, - 0xf9, 0x39, 0x25, 0xe6, 0x24, 0x5a, 0x69, 0x84, 0x4d, 0x16, 0x65, 0xd1, 0x86, 0x33, 0x6d, 0xba, - 0xa3, 0xf7, 0x2d, 0x3f, 0x50, 0xa7, 0xe5, 0x20, 0x3e, 0xbe, 0x46, 0x1e, 0x04, 0x8c, 0x2c, 0x25, - 0x38, 0xe1, 0x00, 0x6f, 0xed, 0x37, 0x0b, 0x70, 0xf1, 0x1a, 0xf5, 0x03, 0x67, 0x97, 0x9c, 0x1d, - 0x5b, 0x3d, 0x6a, 0xb0, 0xaf, 0xf0, 0x41, 0x0e, 0x26, 0x2c, 0x7d, 0x9b, 0x5a, 0x6c, 0x0a, 0x67, - 0x6f, 0xf3, 0xee, 0xc8, 0x53, 0xf8, 0x70, 0x29, 0x73, 0xab, 0x5c, 0x82, 0x88, 0x09, 0x9a, 0x96, - 0x95, 0x9f, 0x10, 0x40, 0x94, 0xe2, 0xd9, 0xa4, 0x6e, 0x58, 0x7d, 0xcf, 0x17, 0xe6, 0x8d, 0x54, - 0xaa, 0x82, 0x49, 0x7d, 0x31, 0x44, 0x61, 0x94, 0x8e, 0x2c, 0x00, 0x18, 0x96, 0x49, 0x6d, 0x9f, - 0x97, 0x12, 0xe3, 0x8a, 0xa8, 0xef, 0xbb, 0x18, 0x60, 0x30, 0x42, 0xc5, 0x44, 0x75, 0x1d, 0xdb, - 0xf4, 0x1d, 0x21, 0xaa, 0x18, 0x17, 0xb5, 0x16, 0xa2, 0x30, 0x4a, 0xc7, 0x8b, 0x51, 0xdf, 0x35, - 0x0d, 0x8f, 0x17, 0x2b, 0x25, 0x8a, 0x85, 0x28, 0x8c, 0xd2, 0x5d, 0xfc, 0x22, 0xd4, 0x22, 0xef, - 0x7f, 0xa2, 0xb8, 0x87, 0xbf, 0x5f, 0x85, 0xcb, 0xb1, 0x66, 0xf5, 0x75, 0x9f, 0xee, 0xf4, 0xad, - 0x16, 0xf5, 0xd5, 0x07, 0x1c, 0x71, 0x2d, 0xfc, 0xab, 0xe1, 0x77, 0x17, 0xa1, 0x60, 0xc6, 0x78, - 0xbe, 0xfb, 0x40, 0x05, 0x8f, 0xf5, 0xed, 0xe7, 0xa1, 0x6a, 0xeb, 0xbe, 0xc7, 0x07, 0xae, 0x1c, - 0xa3, 0x81, 0x2e, 0x72, 0x53, 0x21, 0x30, 0xa4, 0x21, 0x1b, 0x70, 0x5e, 0x36, 0xf1, 0xd5, 0xfb, - 0xcc, 0xf0, 0xa5, 0xae, 0x28, 0x2b, 0x97, 0x53, 0x59, 0xf6, 0xfc, 0x5a, 0x0a, 0x0d, 0xa6, 0x96, - 0x24, 0x6b, 0x70, 0xce, 0x10, 0xe1, 0x31, 0xd4, 0x72, 0xf4, 0xb6, 0x62, 0x28, 0x7c, 0x8b, 0x81, - 0x7d, 0xb0, 0x38, 0x48, 0x82, 0x69, 0xe5, 0x92, 0xbd, 0x79, 0x62, 0xa4, 0xde, 0x5c, 0x1e, 0xa5, - 0x37, 0x57, 0x46, 0xeb, 0xcd, 0xd5, 0xe3, 0xf5, 0x66, 0xd6, 0xf2, 0x3c, 0x12, 0xc3, 0x65, 0xea, - 0x89, 0x58, 0x61, 0x23, 0xd1, 0x57, 0x41, 0xcb, 0xb7, 0x52, 0x68, 0x30, 0xb5, 0x24, 0xd9, 0x86, - 0x8b, 0x02, 0x7e, 0xd5, 0x36, 0xdc, 0x83, 0x9e, 0x8c, 0xdf, 0x54, 0x7c, 0x6b, 0x31, 0xe7, 0xee, - 0xc5, 0xd6, 0x50, 0x4a, 0x7c, 0x08, 0x17, 0xf2, 0x2a, 0x4c, 0x89, 0xaf, 0xb4, 0xa6, 0xf7, 0x38, - 0x5b, 0x11, 0x8b, 0xf5, 0xa4, 0x64, 0x3b, 0xb5, 0x18, 0x45, 0x62, 0x9c, 0x96, 0x34, 0x60, 0xa6, - 0xb7, 0x6f, 0xb0, 0xbf, 0x2b, 0x3b, 0x37, 0x29, 0x6d, 0xd3, 0x36, 0xdf, 0xd1, 0xac, 0x36, 0x9f, - 0x52, 0x2e, 0x8e, 0x8d, 0x38, 0x1a, 0x93, 0xf4, 0xe4, 0x15, 0x98, 0xf4, 0x7c, 0xdd, 0xf5, 0xa5, - 0x37, 0x74, 0x76, 0x5a, 0xc4, 0xaa, 0x29, 0x67, 0x61, 0x2b, 0x82, 0xc3, 0x18, 0x65, 0xea, 0x7a, - 0x31, 0xf3, 0xe8, 0xd6, 0x8b, 0x2c, 0xb3, 0xd5, 0x3f, 0xcf, 0xc3, 0x95, 0x6b, 0xd4, 0x5f, 0x73, - 0x6c, 0xe9, 0x8f, 0x4e, 0x5b, 0xf6, 0x8f, 0xe5, 0x4a, 0x8e, 0x2f, 0xda, 0xf9, 0xb1, 0x2e, 0xda, - 0x85, 0x31, 0x2d, 0xda, 0xc5, 0x47, 0xb8, 0x68, 0xff, 0x93, 0x3c, 0x3c, 0x15, 0x6b, 0xc9, 0x0d, - 0xa7, 0xad, 0x26, 0xfc, 0x4f, 0x1a, 0xf0, 0x18, 0x0d, 0xf8, 0xfb, 0x05, 0x78, 0xe6, 0x1a, 0x15, - 0x21, 0x99, 0x76, 0x67, 0xc3, 0xec, 0x51, 0xcb, 0xb4, 0x69, 0x84, 0x2d, 0xf9, 0xcb, 0x39, 0x98, - 0x14, 0xba, 0xa4, 0x0c, 0xa6, 0xcc, 0xea, 0x57, 0x4a, 0xd9, 0xc4, 0x0c, 0x07, 0xb8, 0xd0, 0x60, - 0xe5, 0xea, 0x11, 0x93, 0xfb, 0x89, 0x16, 0x7b, 0x9c, 0xef, 0xf9, 0x33, 0x05, 0x78, 0x9a, 0x7d, - 0x4f, 0x15, 0x62, 0xf1, 0x89, 0x29, 0xf1, 0x11, 0x7c, 0x84, 0x5f, 0x2d, 0xc1, 0xb9, 0x6b, 0xd4, - 0x1f, 0x98, 0x91, 0xfe, 0x3f, 0x6d, 0xfe, 0x35, 0x38, 0x17, 0x86, 0xfc, 0xb4, 0x7c, 0xc7, 0x15, - 0x1a, 0x78, 0x42, 0x63, 0x6c, 0x0d, 0x92, 0x60, 0x5a, 0x39, 0xf2, 0x55, 0x78, 0xca, 0x13, 0xd3, - 0x95, 0xf0, 0x51, 0x08, 0x85, 0x3a, 0x12, 0xdf, 0xaf, 0x76, 0x6e, 0x9f, 0x6a, 0xa5, 0x93, 0xe1, - 0xb0, 0xf2, 0xe4, 0x9b, 0x30, 0xd9, 0x93, 0x53, 0x20, 0xfb, 0x66, 0x99, 0x77, 0xa4, 0x37, 0x22, - 0xcc, 0xc2, 0x39, 0x2e, 0x0a, 0xc5, 0x98, 0xc0, 0xd4, 0x9e, 0x5a, 0x79, 0x84, 0x3d, 0xf5, 0x8f, - 0xf3, 0x50, 0xbe, 0xe6, 0x3a, 0xfd, 0x5e, 0xf3, 0x80, 0x74, 0x60, 0xe2, 0x1e, 0xf7, 0xa2, 0xca, - 0x19, 0x7e, 0xf4, 0xb0, 0x59, 0xe1, 0x8c, 0x0d, 0x8d, 0x18, 0xf1, 0x8c, 0x92, 0x3d, 0xeb, 0xc4, - 0x7b, 0xf4, 0x80, 0xb6, 0xa5, 0x33, 0x35, 0xe8, 0xc4, 0x37, 0x18, 0x10, 0x05, 0x8e, 0x74, 0x61, - 0x46, 0xb7, 0x2c, 0xe7, 0x1e, 0x6d, 0xaf, 0xea, 0x3e, 0xdf, 0x00, 0x91, 0xfe, 0xc5, 0x93, 0xba, - 0x66, 0xf8, 0xae, 0x56, 0x23, 0xce, 0x0a, 0x93, 0xbc, 0xc9, 0x1d, 0x28, 0x7b, 0xbe, 0xe3, 0x2a, - 0xd3, 0x28, 0x53, 0x48, 0x73, 0xf3, 0xad, 0x96, 0x60, 0x25, 0xfc, 0x56, 0xf2, 0x01, 0x95, 0x00, - 0xed, 0x97, 0x72, 0x00, 0xd7, 0x37, 0x37, 0x37, 0xa4, 0x8b, 0xad, 0x0d, 0x45, 0xbd, 0x1f, 0x78, - 0xac, 0x47, 0xf7, 0x0c, 0xc7, 0x22, 0xc8, 0x64, 0xbc, 0x40, 0xdf, 0xdf, 0x45, 0xce, 0x9d, 0x7c, - 0x06, 0xca, 0xd2, 0xac, 0x95, 0xcd, 0x1e, 0x6c, 0xac, 0xc9, 0x95, 0x18, 0x15, 0x5e, 0xfb, 0xe5, - 0x02, 0xc0, 0x4a, 0xdb, 0xa2, 0x2d, 0x15, 0xe9, 0x5c, 0xf5, 0x77, 0x5d, 0xea, 0xed, 0x3a, 0x56, - 0x7b, 0x44, 0xb7, 0x3a, 0xf7, 0x7b, 0x6d, 0x2a, 0x26, 0x18, 0xf2, 0x23, 0x6d, 0xa6, 0xef, 0xd3, - 0x9e, 0x0a, 0x2a, 0x1b, 0xd1, 0x91, 0x78, 0x46, 0xd8, 0x06, 0x21, 0x1f, 0x8c, 0x71, 0x25, 0x3a, - 0xd4, 0x4c, 0xdb, 0x10, 0x03, 0xa4, 0x79, 0x30, 0x62, 0x47, 0xe2, 0x07, 0xf0, 0x56, 0x42, 0x36, - 0x18, 0xe5, 0xc9, 0xfa, 0xab, 0x69, 0x9b, 0xbe, 0x68, 0xb3, 0x25, 0x6a, 0xe9, 0x07, 0x23, 0x86, - 0xb2, 0xf1, 0xfe, 0xba, 0x12, 0x67, 0x85, 0x49, 0xde, 0xda, 0x5f, 0xc9, 0xc1, 0x0c, 0x7f, 0x3d, - 0xf6, 0xd6, 0x42, 0xa3, 0x22, 0xf7, 0xa0, 0x66, 0x84, 0x31, 0x2a, 0xb2, 0x29, 0x97, 0x32, 0xec, - 0x51, 0x05, 0xbc, 0xc4, 0xbb, 0x47, 0x00, 0x18, 0x95, 0xa4, 0xfd, 0x51, 0x1e, 0x2e, 0x24, 0x2a, - 0x23, 0x3b, 0x15, 0xf9, 0x8b, 0x03, 0x87, 0xf7, 0xfe, 0xfc, 0xf1, 0xda, 0x43, 0x9c, 0xfd, 0x5a, - 0xa3, 0xbe, 0x1e, 0xda, 0xf5, 0x21, 0x2c, 0x72, 0x62, 0xaf, 0x0f, 0x45, 0x8f, 0xcd, 0xd5, 0xe2, - 0x75, 0x5b, 0x23, 0xbf, 0x6e, 0xfa, 0x0b, 0xf0, 0x99, 0x3b, 0xd8, 0x65, 0xe1, 0x33, 0x36, 0x17, - 0x47, 0xde, 0x87, 0x09, 0xcf, 0xd7, 0xfd, 0xbe, 0x9a, 0x96, 0xb6, 0xc6, 0x2d, 0x98, 0x33, 0x0f, - 0xe7, 0x50, 0xf1, 0x8c, 0x52, 0xa8, 0xf6, 0x47, 0x39, 0xb8, 0x98, 0x5e, 0x70, 0xd5, 0xf4, 0x7c, - 0xf2, 0x17, 0x06, 0x9a, 0xfd, 0x98, 0xdd, 0x90, 0x95, 0xe6, 0x8d, 0x1e, 0x04, 0x2d, 0x2b, 0x48, - 0xa4, 0xc9, 0x7d, 0x28, 0x99, 0x3e, 0xed, 0x2a, 0x8f, 0xd8, 0xfa, 0x98, 0x5f, 0x3d, 0xa2, 0xd6, - 0x30, 0x29, 0x28, 0x84, 0x69, 0x7f, 0x7b, 0xe8, 0x2b, 0xf3, 0xa5, 0xf3, 0x2f, 0x0d, 0xc6, 0x41, - 0xae, 0x67, 0x8f, 0x83, 0x4c, 0x54, 0x6c, 0x68, 0x38, 0xe4, 0x0f, 0x0b, 0x70, 0xe9, 0x61, 0x1f, - 0x92, 0xad, 0xae, 0xb2, 0xbf, 0x64, 0x5d, 0x5d, 0x1f, 0xde, 0x33, 0xc8, 0x02, 0x94, 0x7a, 0xbb, - 0xba, 0xa7, 0x54, 0xc4, 0x4b, 0x41, 0xf4, 0x0b, 0x03, 0x3e, 0x60, 0x53, 0x18, 0x57, 0x2d, 0xf9, - 0x23, 0x0a, 0x52, 0xb6, 0x38, 0x74, 0xa9, 0xe7, 0x85, 0x4e, 0xc5, 0x60, 0x71, 0x58, 0x13, 0x60, - 0x54, 0x78, 0xe2, 0xc3, 0x84, 0x70, 0xfa, 0xc8, 0xe9, 0x6d, 0xbc, 0x76, 0x60, 0xf0, 0x52, 0xd2, - 0x02, 0x94, 0xb2, 0xc8, 0x9c, 0x0c, 0xcd, 0x2b, 0xc5, 0x0e, 0x41, 0x16, 0x53, 0xb4, 0x65, 0x4e, - 0x47, 0xde, 0x04, 0xe2, 0x6c, 0x73, 0x37, 0x57, 0x5b, 0xee, 0x68, 0xb1, 0x19, 0x71, 0x82, 0xef, - 0x62, 0x05, 0x47, 0x28, 0xd7, 0x07, 0x28, 0x30, 0xa5, 0x94, 0xf6, 0xaf, 0x2a, 0x70, 0x21, 0xbd, - 0x3f, 0xb0, 0x76, 0xdb, 0xa7, 0x2e, 0x9f, 0x6d, 0x13, 0x67, 0xba, 0x6f, 0x09, 0x30, 0x2a, 0xfc, - 0xc7, 0x3a, 0x0e, 0xe2, 0x57, 0x73, 0xf0, 0xb4, 0x2b, 0xbd, 0xb6, 0xa7, 0x11, 0x0b, 0xf1, 0xcc, - 0xd1, 0x61, 0xfd, 0x69, 0x1c, 0x26, 0x10, 0x87, 0xd7, 0x85, 0xfc, 0x4a, 0x0e, 0x66, 0xa5, 0x13, - 0x76, 0xf1, 0x14, 0x8e, 0x39, 0xf1, 0x10, 0xe1, 0xb5, 0x21, 0xf2, 0x70, 0x68, 0x4d, 0xc8, 0x37, - 0xa1, 0xd6, 0x63, 0xfd, 0xc2, 0xf3, 0xa9, 0x6d, 0xa8, 0xb8, 0xa5, 0xd1, 0x47, 0xd2, 0x46, 0xc8, - 0x2b, 0x38, 0xe6, 0xc0, 0x57, 0xec, 0x08, 0x02, 0xa3, 0x12, 0x1f, 0xf3, 0x73, 0x4d, 0xcf, 0x43, - 0xc5, 0xa3, 0xbe, 0x6f, 0xda, 0x1d, 0x61, 0xfd, 0x54, 0xc5, 0x58, 0x69, 0x49, 0x18, 0x06, 0x58, - 0xf2, 0x59, 0xa8, 0x72, 0x27, 0x70, 0xc3, 0xed, 0x78, 0xb3, 0x55, 0x1e, 0x28, 0x3b, 0x25, 0xe2, - 0x32, 0x24, 0x10, 0x43, 0x3c, 0xf9, 0x3c, 0x4c, 0x6e, 0xf3, 0xe1, 0x2b, 0x1d, 0x59, 0xc2, 0x13, - 0xcf, 0x75, 0xc7, 0x66, 0x04, 0x8e, 0x31, 0x2a, 0xb2, 0x00, 0x40, 0x03, 0x4f, 0xb9, 0x3c, 0xed, - 0x1c, 0x68, 0x24, 0xa1, 0x0f, 0x1d, 0x23, 0x54, 0xe4, 0x19, 0x28, 0xf8, 0x96, 0xc7, 0x7d, 0xe7, - 0x95, 0xd0, 0x20, 0xde, 0x5c, 0x6d, 0x21, 0x83, 0x6b, 0x7f, 0x9a, 0x83, 0x99, 0x44, 0xa4, 0x3d, - 0x2b, 0xd2, 0x77, 0x2d, 0x39, 0x8d, 0x04, 0x45, 0xb6, 0x70, 0x15, 0x19, 0x9c, 0xbc, 0x2b, 0x8d, - 0x84, 0x7c, 0xc6, 0x04, 0x08, 0x37, 0x75, 0xdf, 0x63, 0x56, 0xc1, 0x80, 0x7d, 0xc0, 0x1d, 0xef, - 0x61, 0x7d, 0xe4, 0x3a, 0x10, 0x71, 0xbc, 0x87, 0x38, 0x8c, 0x51, 0xb2, 0x06, 0xf2, 0x2d, 0xef, - 0xaa, 0xad, 0x6f, 0x5b, 0xb4, 0xcd, 0x67, 0x83, 0x48, 0x03, 0x6d, 0xae, 0xb6, 0x24, 0x06, 0x23, - 0x54, 0xda, 0x6f, 0x15, 0x22, 0x2d, 0x20, 0xed, 0x8c, 0x0f, 0x69, 0x81, 0x4f, 0xb3, 0x05, 0x34, - 0x58, 0xdc, 0xab, 0xd1, 0xf5, 0x8f, 0x2f, 0xc6, 0x12, 0x4b, 0x5e, 0x80, 0x8a, 0xe1, 0xd8, 0x5e, - 0xbf, 0x4b, 0x5d, 0xf9, 0x12, 0x81, 0x2a, 0xb3, 0x28, 0xe1, 0x18, 0x50, 0x90, 0x2f, 0xc3, 0x74, - 0x9b, 0x5a, 0xe6, 0x3e, 0x75, 0xdf, 0x95, 0x09, 0x2d, 0x8a, 0xf1, 0x0d, 0x8f, 0x25, 0x81, 0x95, - 0x1e, 0x91, 0xa9, 0x76, 0xf4, 0x91, 0xbc, 0x0a, 0x33, 0x3b, 0xa6, 0xe5, 0x53, 0xf7, 0x5d, 0xaf, - 0xcf, 0x75, 0x53, 0x91, 0xd3, 0xa0, 0x2a, 0x02, 0x48, 0x96, 0x39, 0xaa, 0x25, 0x31, 0x38, 0xbd, - 0x13, 0x7b, 0x26, 0xb7, 0x45, 0x27, 0x99, 0xc8, 0x78, 0xc8, 0x73, 0x73, 0xb5, 0x25, 0x02, 0x33, - 0x54, 0xf7, 0x0a, 0xfa, 0x4a, 0xf9, 0x11, 0xf5, 0x15, 0xed, 0x5f, 0x14, 0xa0, 0xf6, 0xa6, 0xb3, - 0xfd, 0x31, 0x89, 0x40, 0x4c, 0x5f, 0x4f, 0xf3, 0x1f, 0xe1, 0x7a, 0xba, 0x05, 0x4f, 0xf9, 0xbe, - 0x25, 0x73, 0xaf, 0x34, 0x76, 0x7c, 0xea, 0x2e, 0x9b, 0xb6, 0xe9, 0xed, 0xd2, 0xb6, 0xdc, 0x97, - 0xff, 0xd4, 0xd1, 0x61, 0xfd, 0xa9, 0xcd, 0xcd, 0xd5, 0x34, 0x12, 0x1c, 0x56, 0x96, 0xcf, 0x6f, - 0xe2, 0xac, 0x17, 0x3f, 0xdf, 0x20, 0xb7, 0xeb, 0xc5, 0xfc, 0x16, 0x81, 0x63, 0x8c, 0x4a, 0xfb, - 0xf7, 0x79, 0xa8, 0x06, 0x67, 0xf0, 0xc9, 0x73, 0x50, 0xde, 0x76, 0x9d, 0x3d, 0xea, 0x8a, 0x30, - 0x07, 0x79, 0x36, 0xa1, 0x29, 0x40, 0xa8, 0x70, 0xe4, 0x59, 0x28, 0xf9, 0x4e, 0xcf, 0x34, 0x92, - 0x7e, 0xc8, 0x4d, 0x06, 0x44, 0x81, 0xe3, 0x23, 0x96, 0x47, 0x24, 0xf1, 0xb7, 0xaa, 0x44, 0x46, - 0x2c, 0x87, 0xa2, 0xc4, 0xaa, 0x81, 0x50, 0x1c, 0xfb, 0x40, 0xf8, 0x74, 0xa0, 0xab, 0x96, 0xe2, - 0x53, 0x46, 0x42, 0xbb, 0x7c, 0x07, 0x8a, 0x9e, 0xee, 0x59, 0x72, 0x28, 0x66, 0x38, 0xcb, 0xdd, - 0x68, 0xad, 0xca, 0xb3, 0xdc, 0x8d, 0xd6, 0x2a, 0x72, 0xa6, 0xda, 0x3f, 0x2c, 0x40, 0x4d, 0xb4, - 0xaf, 0x98, 0xe6, 0xc6, 0xd9, 0xc2, 0xaf, 0xf3, 0xdd, 0x5a, 0x3e, 0x93, 0x71, 0x2f, 0x9e, 0x9c, - 0xf0, 0x82, 0x04, 0x27, 0x8b, 0x51, 0x64, 0xb0, 0x63, 0x1b, 0x82, 0xfe, 0x6c, 0x37, 0x3d, 0x5b, - 0xd3, 0x78, 0x1e, 0x09, 0xa9, 0x8c, 0xcb, 0x20, 0xac, 0x60, 0x4d, 0xbb, 0x11, 0xc1, 0x61, 0x8c, - 0x52, 0xfb, 0xef, 0x79, 0xa8, 0xae, 0x9a, 0x3b, 0xd4, 0x38, 0x30, 0x2c, 0x4a, 0xbe, 0x01, 0x17, - 0xdb, 0xd4, 0xa2, 0x6c, 0x69, 0xbf, 0xe6, 0xea, 0x06, 0xdd, 0xa0, 0xae, 0xc9, 0xf3, 0xe0, 0xf0, - 0x3c, 0x4b, 0x22, 0x36, 0xee, 0xf2, 0xd1, 0x61, 0xfd, 0xe2, 0xd2, 0x50, 0x2a, 0x7c, 0x08, 0x07, - 0xb2, 0x02, 0x93, 0x6d, 0xea, 0x99, 0x2e, 0x6d, 0x6f, 0x44, 0x2c, 0xb7, 0xe7, 0x54, 0x3d, 0x97, - 0x22, 0xb8, 0x07, 0x87, 0xf5, 0x29, 0xe5, 0x3f, 0x16, 0x26, 0x5c, 0xac, 0x28, 0x9b, 0x5a, 0x7a, - 0x7a, 0xdf, 0xa3, 0x29, 0xf5, 0x2c, 0xf0, 0x7a, 0xf2, 0xa9, 0x65, 0x23, 0x9d, 0x04, 0x87, 0x95, - 0x25, 0xdb, 0x30, 0xcb, 0xeb, 0x9f, 0xc6, 0xb7, 0xc8, 0xf9, 0x7e, 0xfa, 0xe8, 0xb0, 0xae, 0x2d, - 0xd1, 0x9e, 0x4b, 0x0d, 0xdd, 0xa7, 0xed, 0xa5, 0x21, 0xd4, 0x38, 0x94, 0x8f, 0x56, 0x82, 0xc2, - 0xaa, 0xd3, 0xd1, 0xbe, 0x5d, 0x80, 0x20, 0x31, 0x13, 0xf9, 0xf9, 0x1c, 0xd4, 0x74, 0xdb, 0x76, - 0x7c, 0x99, 0xf4, 0x48, 0x84, 0x5e, 0x61, 0xe6, 0xfc, 0x4f, 0x73, 0x8d, 0x90, 0xa9, 0x88, 0xb8, - 0x09, 0x02, 0x3a, 0x22, 0x18, 0x8c, 0xca, 0x26, 0xfd, 0x44, 0x20, 0xd0, 0x5a, 0xf6, 0x5a, 0x1c, - 0x23, 0xe4, 0xe7, 0xe2, 0x57, 0xe0, 0x4c, 0xb2, 0xb2, 0x27, 0x09, 0x36, 0xc8, 0x12, 0xa7, 0xf0, - 0xfd, 0x3c, 0x40, 0xb8, 0xb5, 0x7e, 0x0a, 0xbe, 0x3c, 0x33, 0xe6, 0xcb, 0x1b, 0xfd, 0xc8, 0x77, - 0x58, 0xe9, 0xa1, 0xfe, 0xbb, 0xbb, 0x09, 0xff, 0xdd, 0xca, 0x38, 0x84, 0x3d, 0xdc, 0x67, 0xb7, - 0x0d, 0xe7, 0x42, 0xda, 0x70, 0x76, 0xb9, 0x91, 0x18, 0xfd, 0x42, 0x01, 0xfe, 0x89, 0x21, 0xa3, - 0x7f, 0x26, 0x12, 0xeb, 0x30, 0x38, 0xfe, 0xb5, 0xef, 0xe6, 0xe1, 0x4c, 0x54, 0x08, 0x3f, 0x07, - 0xfa, 0x05, 0x98, 0x72, 0xa9, 0xde, 0x6e, 0xea, 0xbe, 0xb1, 0xcb, 0xa3, 0x6a, 0x73, 0x3c, 0x0c, - 0x96, 0x9f, 0x36, 0xc1, 0x28, 0x02, 0xe3, 0x74, 0x44, 0x87, 0x1a, 0x03, 0xc8, 0xf3, 0xea, 0x23, - 0x3a, 0xe7, 0xb9, 0x25, 0x8a, 0x21, 0x1b, 0x8c, 0xf2, 0x24, 0x0e, 0x54, 0x99, 0xc5, 0x2a, 0x34, - 0x96, 0xac, 0x29, 0x7e, 0x50, 0x71, 0x12, 0x56, 0x60, 0xf0, 0x88, 0xa1, 0x0c, 0xed, 0x87, 0x39, - 0x98, 0x8e, 0xb6, 0xd0, 0x23, 0xf7, 0x96, 0xee, 0xc6, 0xbd, 0xa5, 0x8b, 0x63, 0xe8, 0x68, 0x43, - 0x3c, 0xa4, 0x7f, 0x58, 0x8b, 0xbe, 0x1a, 0xf7, 0x8a, 0x46, 0xdd, 0x4e, 0xb9, 0x87, 0xba, 0x9d, - 0x3e, 0xc9, 0x9a, 0x33, 0x34, 0x6b, 0xce, 0x30, 0xfb, 0xa6, 0xf4, 0x18, 0xdb, 0x37, 0x13, 0x1f, - 0xa1, 0x7d, 0x13, 0xc9, 0x4b, 0x53, 0xce, 0x90, 0x97, 0xa6, 0x1b, 0xe4, 0xa5, 0xa9, 0x8c, 0x6d, - 0x8a, 0x3e, 0x4e, 0x6e, 0x9a, 0xea, 0xa9, 0xe6, 0xa6, 0x81, 0x47, 0x95, 0x9b, 0xa6, 0x96, 0x35, - 0x37, 0xcd, 0xcf, 0xe6, 0x60, 0xba, 0x1d, 0x3b, 0x6b, 0xc8, 0x3d, 0x5a, 0x59, 0x16, 0xe6, 0xf8, - 0xd1, 0x45, 0xe1, 0x26, 0x89, 0xc3, 0x30, 0x21, 0x32, 0x2d, 0x23, 0xcc, 0xd4, 0x47, 0x92, 0x11, - 0x86, 0xbc, 0x0f, 0x55, 0x4b, 0xad, 0xda, 0x3c, 0x30, 0x35, 0xcb, 0xd8, 0x4f, 0xd1, 0x04, 0xc2, - 0x50, 0xee, 0x00, 0x84, 0xa1, 0x44, 0xed, 0x7f, 0x95, 0xa3, 0x4b, 0xfb, 0x69, 0x6f, 0x2b, 0xbd, - 0x1c, 0xdf, 0x56, 0xba, 0x92, 0xdc, 0x56, 0x1a, 0xd0, 0x4b, 0xe4, 0xd6, 0xd2, 0x0b, 0x91, 0x05, - 0xa8, 0xc0, 0xd3, 0xc3, 0x04, 0x5d, 0x2e, 0x65, 0x11, 0x6a, 0xc0, 0x8c, 0x54, 0x67, 0x14, 0x92, - 0x4f, 0xe7, 0x53, 0x61, 0x04, 0xf1, 0x52, 0x1c, 0x8d, 0x49, 0x7a, 0x26, 0xd0, 0x53, 0xc9, 0x5b, - 0x4b, 0x71, 0xff, 0x5f, 0x90, 0x58, 0x35, 0xa0, 0x60, 0x76, 0xaa, 0x4b, 0x75, 0x4f, 0x6e, 0x0e, - 0x45, 0xec, 0x54, 0xe4, 0x50, 0x94, 0xd8, 0xe8, 0x0e, 0x59, 0xf9, 0x43, 0x76, 0xc8, 0x74, 0xa8, - 0x59, 0xba, 0xe7, 0x8b, 0xce, 0xd4, 0x96, 0x73, 0xd7, 0x9f, 0x3b, 0x9e, 0x42, 0xc1, 0xb4, 0xa2, - 0xd0, 0x14, 0x59, 0x0d, 0xd9, 0x60, 0x94, 0x27, 0x69, 0xc3, 0x24, 0x7b, 0xe4, 0x33, 0x4b, 0xbb, - 0xe1, 0xcb, 0x19, 0xeb, 0x24, 0x32, 0x02, 0x23, 0x78, 0x35, 0xc2, 0x07, 0x63, 0x5c, 0x87, 0x6c, - 0xa2, 0xc1, 0x28, 0x9b, 0x68, 0xe4, 0x55, 0xa1, 0x82, 0x1e, 0x04, 0x9f, 0xb5, 0xc6, 0x3f, 0x6b, - 0xe0, 0x66, 0xc5, 0x28, 0x12, 0xe3, 0xb4, 0xac, 0x57, 0xf4, 0x65, 0x33, 0xa8, 0xe2, 0x93, 0xf1, - 0x5e, 0xb1, 0x15, 0x47, 0x63, 0x92, 0x9e, 0x6c, 0xc0, 0xf9, 0x00, 0x14, 0xad, 0xc6, 0x14, 0xe7, - 0x13, 0x44, 0xe3, 0x6f, 0xa5, 0xd0, 0x60, 0x6a, 0x49, 0x7e, 0x70, 0xa1, 0xef, 0xba, 0xd4, 0xf6, - 0xaf, 0xeb, 0xde, 0xae, 0x0c, 0x54, 0x0f, 0x0f, 0x2e, 0x84, 0x28, 0x8c, 0xd2, 0x91, 0x05, 0x00, - 0xc1, 0x8e, 0x97, 0x9a, 0xe1, 0xa5, 0x02, 0xa3, 0x68, 0x2b, 0xc0, 0x60, 0x84, 0x4a, 0xfb, 0xbf, - 0x39, 0xa8, 0x28, 0x67, 0x2c, 0x5b, 0xa6, 0xb6, 0x75, 0xcf, 0x34, 0xe4, 0x80, 0xcf, 0x90, 0x0f, - 0x53, 0x65, 0x3f, 0x12, 0xe7, 0xe1, 0xf8, 0x23, 0x0a, 0xde, 0x61, 0xfe, 0xa9, 0x7c, 0xa6, 0xfc, - 0x53, 0x64, 0x11, 0x8a, 0xf6, 0x1e, 0x3d, 0x38, 0xd9, 0xd1, 0x50, 0xae, 0xd7, 0xdd, 0xbc, 0x41, - 0x0f, 0x90, 0x17, 0xd6, 0x7e, 0x3d, 0x0f, 0xc0, 0x5e, 0xff, 0x78, 0xfb, 0x04, 0x9f, 0x81, 0xb2, - 0x74, 0xc6, 0xab, 0xc4, 0xd9, 0x41, 0xa0, 0x93, 0x00, 0xa3, 0xc2, 0x93, 0x67, 0xa1, 0x74, 0xb7, - 0x4f, 0xfb, 0x6a, 0xd3, 0x3b, 0x58, 0xb1, 0xdf, 0x62, 0x40, 0x14, 0xb8, 0x47, 0xe7, 0x22, 0x53, - 0x6e, 0xfa, 0xd2, 0xa3, 0x72, 0xd3, 0x57, 0xa1, 0x7c, 0xd3, 0xe1, 0x71, 0x93, 0xda, 0x7f, 0xcb, - 0x03, 0x84, 0x71, 0x69, 0xe4, 0x97, 0x72, 0xf0, 0x64, 0xb0, 0x1d, 0xe8, 0x0b, 0xc5, 0x8b, 0xa7, - 0xa0, 0xcd, 0xec, 0xb2, 0x4f, 0xdb, 0x8a, 0xe4, 0x47, 0xdb, 0x37, 0xd2, 0xc4, 0x61, 0x7a, 0x2d, - 0x08, 0x42, 0x85, 0x76, 0x7b, 0xfe, 0xc1, 0x92, 0xe9, 0xca, 0x1e, 0x98, 0x1a, 0xfe, 0x78, 0x55, - 0xd2, 0x88, 0xa2, 0xd2, 0xec, 0xe0, 0xf6, 0x8d, 0xc2, 0x60, 0xc0, 0x87, 0xec, 0x42, 0xc5, 0x76, - 0xde, 0xf5, 0x58, 0x73, 0xc8, 0xee, 0x38, 0x7a, 0x56, 0x54, 0xd9, 0xac, 0xc2, 0x75, 0x2b, 0x1f, - 0xb0, 0x6c, 0xcb, 0xc6, 0xfe, 0xc5, 0x3c, 0x9c, 0x4b, 0x69, 0x07, 0xf2, 0x06, 0x9c, 0x91, 0x21, - 0x80, 0x61, 0x2e, 0xe6, 0x5c, 0x98, 0x8b, 0xb9, 0x95, 0xc0, 0xe1, 0x00, 0x35, 0x79, 0x17, 0x40, - 0x37, 0x0c, 0xea, 0x79, 0x6b, 0x4e, 0x5b, 0xad, 0xc4, 0xaf, 0xb3, 0x89, 0xa3, 0x11, 0x40, 0x1f, - 0x1c, 0xd6, 0x7f, 0x32, 0x2d, 0xaa, 0x37, 0xd1, 0xce, 0x61, 0x01, 0x8c, 0xb0, 0x24, 0xdf, 0x00, - 0x10, 0xda, 0x77, 0x70, 0xf8, 0xf6, 0x43, 0x6c, 0xe1, 0x39, 0x95, 0xe0, 0x64, 0xee, 0xad, 0xbe, - 0x6e, 0xfb, 0xa6, 0x7f, 0x20, 0x0e, 0xfc, 0xdf, 0x0a, 0xb8, 0x60, 0x84, 0xa3, 0xf6, 0xbb, 0x79, - 0xa8, 0x28, 0xf7, 0xe5, 0x29, 0xf8, 0x93, 0x3a, 0x31, 0x7f, 0xd2, 0x98, 0xe2, 0x78, 0xd3, 0xbc, - 0x49, 0x4e, 0xc2, 0x9b, 0x74, 0x2d, 0xbb, 0xa8, 0x87, 0xfb, 0x92, 0xfe, 0x5e, 0x01, 0xa6, 0x15, - 0x69, 0x56, 0x2f, 0xcf, 0x6b, 0x30, 0x23, 0x76, 0xbc, 0xd7, 0xf4, 0xfb, 0x22, 0xf7, 0x01, 0x6f, - 0xb0, 0xa2, 0x08, 0x45, 0x6c, 0xc6, 0x51, 0x98, 0xa4, 0x65, 0xdd, 0x5a, 0x80, 0xb6, 0x98, 0xfa, - 0x13, 0x3a, 0x72, 0xa6, 0x44, 0xb7, 0x6e, 0x26, 0x70, 0x38, 0x40, 0x9d, 0x74, 0x33, 0x15, 0x1f, - 0xb5, 0x9b, 0xa9, 0x74, 0x0a, 0x6e, 0xa6, 0x7f, 0x9d, 0x83, 0xc9, 0xf0, 0x03, 0x3d, 0x72, 0x27, - 0xd3, 0x4e, 0xdc, 0xc9, 0xd4, 0xc8, 0xdc, 0xff, 0x86, 0xb8, 0x98, 0xbe, 0x53, 0x81, 0x58, 0xfc, - 0x3a, 0xd9, 0x86, 0x8b, 0x66, 0x6a, 0xdc, 0x5b, 0x64, 0x7a, 0x0b, 0x0e, 0x25, 0xae, 0x0c, 0xa5, - 0xc4, 0x87, 0x70, 0x21, 0x7d, 0xa8, 0xec, 0x53, 0xd7, 0x37, 0x0d, 0xaa, 0xde, 0xef, 0x5a, 0x66, - 0x9f, 0x8b, 0x74, 0xa4, 0x05, 0x6d, 0x7a, 0x4b, 0x0a, 0xc0, 0x40, 0x14, 0xd9, 0x86, 0x12, 0x6d, - 0x77, 0xa8, 0xba, 0x6a, 0x21, 0x63, 0x4a, 0xc3, 0xa0, 0x3d, 0xd9, 0x93, 0x87, 0x82, 0x35, 0xf1, - 0xa2, 0x36, 0x65, 0x31, 0x63, 0xbf, 0x3c, 0xa6, 0x25, 0x49, 0xf6, 0x02, 0xc7, 0x4a, 0x69, 0x4c, - 0xb3, 0xd5, 0x43, 0xdc, 0x2a, 0x1e, 0x54, 0xef, 0xe9, 0x3e, 0x75, 0xbb, 0xba, 0xbb, 0x27, 0xbd, - 0x52, 0xa3, 0xbf, 0xe1, 0x6d, 0xc5, 0x29, 0x7c, 0xc3, 0x00, 0x84, 0xa1, 0x1c, 0x36, 0xdc, 0x7d, - 0xe9, 0x40, 0x50, 0x99, 0xe3, 0x46, 0x17, 0xaa, 0x5c, 0x11, 0x9e, 0x8c, 0x63, 0x57, 0x8f, 0x18, - 0xca, 0x20, 0xfb, 0xb1, 0xbc, 0xbc, 0x22, 0x1b, 0x73, 0x86, 0xc4, 0xee, 0x8a, 0x55, 0xb8, 0xbe, - 0x0d, 0xc9, 0xef, 0xfb, 0x41, 0x0e, 0x66, 0x12, 0x23, 0x47, 0x5a, 0x83, 0xd7, 0xc7, 0x15, 0x95, - 0xab, 0x22, 0xd2, 0x63, 0x40, 0x4c, 0x4a, 0xd5, 0xfe, 0x47, 0x29, 0x5c, 0x91, 0x4e, 0xdb, 0x39, - 0xf1, 0xf9, 0xb8, 0x73, 0xe2, 0x72, 0xd2, 0x39, 0x91, 0xd8, 0x32, 0x3d, 0x79, 0xd4, 0x6b, 0xc2, - 0xa6, 0x2f, 0x3e, 0x02, 0x9b, 0xfe, 0x45, 0xa8, 0xed, 0xf3, 0x39, 0x49, 0x24, 0x34, 0x29, 0xf1, - 0x15, 0x94, 0x2f, 0x6a, 0xb7, 0x42, 0x30, 0x46, 0x69, 0xf8, 0x3d, 0x41, 0xe2, 0xfa, 0x88, 0x20, - 0x19, 0xa7, 0x2c, 0xd2, 0x0a, 0xc1, 0x18, 0xa5, 0xe1, 0x01, 0x73, 0xa6, 0xbd, 0x27, 0x0a, 0x94, - 0x79, 0x01, 0x11, 0x30, 0xa7, 0x80, 0x18, 0xe2, 0xc9, 0xf3, 0x50, 0xe9, 0xb7, 0x77, 0x04, 0x6d, - 0x85, 0xd3, 0x72, 0xe5, 0x7a, 0x6b, 0x69, 0x59, 0x26, 0x58, 0x51, 0x58, 0x56, 0x93, 0xae, 0xde, - 0x53, 0x08, 0xde, 0x03, 0x65, 0x4d, 0xd6, 0x42, 0x30, 0x46, 0x69, 0xc8, 0x97, 0x60, 0xda, 0xa5, - 0xed, 0xbe, 0x41, 0x83, 0x52, 0xc0, 0x4b, 0xc9, 0xf4, 0x6b, 0x51, 0x0c, 0x26, 0x28, 0x87, 0x78, - 0x26, 0x6a, 0x23, 0x79, 0x26, 0xbe, 0x02, 0xd3, 0x6d, 0x57, 0x37, 0x6d, 0xda, 0x5e, 0xb7, 0xf9, - 0xbe, 0xb8, 0x0c, 0xdb, 0x0b, 0xbc, 0x82, 0x4b, 0x31, 0x2c, 0x26, 0xa8, 0xb5, 0x65, 0x10, 0x89, - 0x05, 0x49, 0x1d, 0x4a, 0xbb, 0xbe, 0xdf, 0x53, 0xfb, 0x2c, 0xdc, 0x18, 0xe6, 0xc7, 0x7c, 0x50, - 0xc0, 0xc9, 0x25, 0x28, 0xb2, 0x3f, 0x32, 0xfc, 0x97, 0x5b, 0x6b, 0x0c, 0x8f, 0x1c, 0xaa, 0xfd, - 0x5e, 0x1e, 0x4a, 0x22, 0xb9, 0xdc, 0x0a, 0x9c, 0x33, 0x6d, 0xd3, 0x37, 0x75, 0x8b, 0x9f, 0xf5, - 0x88, 0xc6, 0x19, 0x94, 0x9a, 0x4f, 0x1d, 0x1d, 0xd6, 0xcf, 0xad, 0x0c, 0xa2, 0x31, 0xad, 0x0c, - 0x6b, 0x64, 0x99, 0x63, 0x5a, 0x71, 0x11, 0xc2, 0x45, 0x76, 0xd4, 0x18, 0x06, 0x13, 0x94, 0x4c, - 0x9f, 0xec, 0x0d, 0x04, 0x10, 0x94, 0x84, 0x3e, 0x19, 0xdf, 0xd3, 0x8f, 0xd3, 0x71, 0x3b, 0xa7, - 0xcf, 0x6d, 0x8a, 0xe0, 0xc8, 0x8f, 0x8c, 0x45, 0x12, 0x76, 0x4e, 0x02, 0x87, 0x03, 0xd4, 0x8c, - 0xc3, 0x8e, 0x6e, 0x5a, 0x7d, 0x97, 0x86, 0x1c, 0x4a, 0x21, 0x87, 0xe5, 0x04, 0x0e, 0x07, 0xa8, - 0xb5, 0xdf, 0xcb, 0x01, 0x88, 0xbb, 0x24, 0xb8, 0xd3, 0x64, 0x4c, 0xf9, 0xb4, 0x49, 0x1f, 0xaa, - 0xdb, 0xca, 0x6d, 0x92, 0x39, 0xd9, 0xb2, 0xa8, 0x5f, 0xe8, 0x86, 0x11, 0xd7, 0x92, 0xa8, 0x47, - 0x0c, 0x25, 0x69, 0xff, 0x28, 0x07, 0x33, 0x09, 0x6a, 0xb2, 0x0e, 0x15, 0x95, 0x2e, 0xeb, 0x64, - 0x6f, 0x25, 0xc6, 0xb0, 0x2c, 0x8a, 0x01, 0x93, 0xf1, 0xa7, 0xaf, 0xfe, 0x99, 0xbc, 0xfa, 0x06, - 0x3c, 0xb4, 0x6c, 0x01, 0x40, 0xa6, 0xb5, 0x68, 0xb7, 0x5d, 0xa9, 0x19, 0x86, 0xcb, 0x5b, 0x80, - 0xc1, 0x08, 0xd5, 0xf1, 0xa2, 0xa0, 0x5e, 0x81, 0xc9, 0x9e, 0xeb, 0xb0, 0x09, 0xc2, 0xe5, 0x4a, - 0x67, 0x22, 0x74, 0x75, 0x23, 0x82, 0xc3, 0x18, 0x25, 0xd1, 0xa5, 0x0b, 0x66, 0x62, 0x2c, 0xb7, - 0x98, 0xa4, 0x3a, 0x61, 0xfe, 0x24, 0x0f, 0x93, 0xb2, 0x11, 0x84, 0xfb, 0xea, 0x51, 0x36, 0x83, - 0x0a, 0xee, 0x4a, 0x6b, 0x86, 0xc5, 0x08, 0x0e, 0x63, 0x94, 0x64, 0x89, 0x0d, 0xd8, 0x6d, 0xcf, - 0x70, 0x4d, 0x1e, 0xbe, 0xcc, 0x4b, 0x8b, 0x30, 0xd8, 0xe0, 0x2c, 0x69, 0x2b, 0x81, 0xc7, 0x81, - 0x12, 0xe4, 0x05, 0xa8, 0x74, 0xf5, 0xfb, 0x5b, 0xb6, 0x6e, 0xec, 0xc9, 0xd5, 0x2b, 0x50, 0xae, - 0xd7, 0x24, 0x1c, 0x03, 0x8a, 0xd3, 0x68, 0xfa, 0xef, 0x16, 0x21, 0xb4, 0xcd, 0xc8, 0xd3, 0x50, - 0xe8, 0xea, 0xf7, 0xa5, 0x51, 0xcc, 0x3d, 0x71, 0x6b, 0xfa, 0x7d, 0x64, 0x30, 0x8e, 0x32, 0x6d, - 0x69, 0xf4, 0x0a, 0x94, 0x69, 0x23, 0x83, 0x91, 0x3b, 0x30, 0xed, 0xea, 0xdd, 0xde, 0x56, 0x4f, - 0xd9, 0x99, 0x23, 0x1e, 0x1e, 0x14, 0xab, 0x5a, 0x8c, 0x13, 0x26, 0x38, 0x93, 0x3e, 0x94, 0x84, - 0x7b, 0xaa, 0x98, 0x71, 0xbb, 0x33, 0x78, 0x69, 0xa6, 0xa0, 0x39, 0x2e, 0x95, 0x77, 0x7d, 0x25, - 0xa0, 0x28, 0xa4, 0x31, 0xb1, 0x5d, 0xa7, 0x1d, 0x1c, 0x89, 0x1f, 0x8b, 0xd8, 0x35, 0xc6, 0x70, - 0x40, 0x2c, 0x87, 0xa2, 0x90, 0x26, 0xdc, 0x15, 0xac, 0x0f, 0xb6, 0x45, 0xb3, 0xf0, 0x9e, 0x50, - 0x51, 0xee, 0x8a, 0x08, 0x02, 0xe3, 0x74, 0x64, 0x05, 0x0a, 0xbe, 0x6f, 0x49, 0xad, 0x7e, 0xa4, - 0x8b, 0x02, 0x36, 0x37, 0x57, 0x91, 0xf1, 0xd0, 0xfe, 0x66, 0x1e, 0x48, 0xa4, 0x7e, 0xd7, 0x9c, - 0xa6, 0x6e, 0xec, 0xdd, 0x64, 0x1f, 0xdd, 0x70, 0x1c, 0x6b, 0xc9, 0xb9, 0x67, 0x8b, 0x85, 0x6e, - 0xc4, 0x63, 0xaf, 0xfc, 0xa3, 0x2f, 0xc6, 0x38, 0x61, 0x82, 0x33, 0x59, 0x06, 0xc2, 0xba, 0x81, - 0x84, 0x18, 0xd4, 0xf6, 0xd5, 0xf1, 0xfe, 0xa9, 0xe6, 0x05, 0xa6, 0xc6, 0xe0, 0x00, 0x16, 0x53, - 0x4a, 0x30, 0xa5, 0x21, 0x38, 0x55, 0x1b, 0x61, 0x24, 0x1c, 0x31, 0x5c, 0x69, 0xd8, 0x1c, 0x44, - 0x63, 0x5a, 0x19, 0xed, 0x22, 0xcc, 0x46, 0x1a, 0x65, 0xc5, 0x5e, 0xa3, 0x5d, 0xc7, 0x3d, 0x10, - 0xbe, 0xcd, 0x5f, 0x29, 0xc2, 0xc0, 0x17, 0x25, 0x3f, 0x97, 0x83, 0xaa, 0x67, 0xec, 0xd2, 0x76, - 0xdf, 0xa2, 0x6a, 0xed, 0x58, 0x1b, 0x4b, 0xef, 0x55, 0x4c, 0x45, 0x2e, 0xc3, 0x34, 0x0c, 0x86, - 0x92, 0xc9, 0xfb, 0x50, 0x76, 0xa9, 0xa5, 0xdf, 0xa7, 0xea, 0x83, 0xdd, 0x18, 0x47, 0x25, 0x50, - 0xb0, 0x54, 0x5f, 0x23, 0x09, 0x47, 0x25, 0x93, 0xfc, 0x7c, 0x0e, 0xc0, 0xb1, 0xad, 0x83, 0x95, - 0x9d, 0x2d, 0x4f, 0x86, 0x72, 0xd7, 0x16, 0x6e, 0x8e, 0xa3, 0x0a, 0xeb, 0x01, 0x57, 0xe1, 0x4c, - 0x4f, 0x45, 0x61, 0x44, 0x38, 0x6b, 0x8a, 0x8e, 0xe8, 0xcd, 0x72, 0x36, 0x19, 0x4b, 0x53, 0xc8, - 0x01, 0x32, 0xd0, 0x14, 0x12, 0x8e, 0x4a, 0xa6, 0xb6, 0x0d, 0xe9, 0x75, 0x1c, 0xd6, 0x4d, 0x73, - 0x23, 0x74, 0xd3, 0xff, 0x9c, 0x8b, 0x09, 0x41, 0xda, 0x36, 0x45, 0x96, 0x08, 0x72, 0x05, 0x8a, - 0x6c, 0x8e, 0x49, 0x26, 0xc4, 0xe5, 0xde, 0x6e, 0x8e, 0x61, 0x33, 0x7e, 0xdf, 0xb5, 0xe4, 0x72, - 0x5a, 0x8e, 0xed, 0x1f, 0xed, 0x43, 0xc5, 0xa3, 0xb6, 0x6f, 0xda, 0xd4, 0x92, 0x9f, 0x70, 0xf4, - 0xdd, 0x10, 0x51, 0x27, 0xc9, 0x4d, 0x1e, 0x71, 0x94, 0x47, 0x99, 0x04, 0x0c, 0x03, 0x59, 0xe4, - 0x02, 0xe4, 0xdb, 0xdb, 0x52, 0x4f, 0x9e, 0x38, 0x3a, 0xac, 0xe7, 0x97, 0x9a, 0x98, 0x6f, 0x6f, - 0x6b, 0xe7, 0x21, 0xa5, 0xd3, 0x69, 0x17, 0x20, 0x75, 0x34, 0x68, 0xbf, 0x91, 0x87, 0x81, 0x89, - 0x9e, 0x77, 0x4c, 0x37, 0x68, 0x1e, 0x39, 0x36, 0x6e, 0x8e, 0x67, 0x6c, 0x28, 0xae, 0x03, 0x1d, - 0x33, 0x44, 0x61, 0x44, 0x38, 0xf9, 0x5b, 0x39, 0x98, 0x32, 0xa3, 0x53, 0x8a, 0x9c, 0x2f, 0xde, - 0x1a, 0x47, 0x75, 0x62, 0x73, 0x95, 0x38, 0x9d, 0x37, 0x0c, 0x8b, 0xf1, 0x5a, 0x68, 0xbf, 0x96, - 0x83, 0x2a, 0xaf, 0xf2, 0xc7, 0x44, 0xb9, 0xfe, 0xcd, 0x22, 0x9c, 0x4b, 0xe9, 0x5e, 0x4c, 0xbd, - 0xec, 0xea, 0x9e, 0x2f, 0x75, 0xc0, 0x84, 0x7a, 0xb9, 0x16, 0x60, 0x30, 0x42, 0x45, 0x3e, 0x0b, - 0x55, 0x6a, 0xb7, 0x7b, 0x8e, 0x69, 0xfb, 0x9e, 0xbc, 0x92, 0x82, 0xdb, 0x22, 0x57, 0x15, 0x10, - 0x43, 0x3c, 0xb9, 0x0f, 0x93, 0xaa, 0xcf, 0x72, 0x2b, 0x28, 0xab, 0xd3, 0x32, 0x68, 0x74, 0x99, - 0xc5, 0x21, 0xc2, 0x1b, 0x63, 0x92, 0xb8, 0x0f, 0x5f, 0x11, 0x67, 0xf7, 0xe1, 0x07, 0x62, 0x85, - 0x0f, 0x5f, 0x3d, 0x62, 0x28, 0x83, 0x38, 0x50, 0x53, 0x15, 0xd8, 0x5c, 0x6d, 0x8d, 0xe5, 0xa4, - 0x96, 0xbc, 0xc5, 0x39, 0x60, 0x8a, 0x51, 0x09, 0x64, 0x07, 0x2a, 0x5c, 0x3a, 0x93, 0x56, 0x1e, - 0x83, 0x34, 0x19, 0xeb, 0x29, 0x38, 0x62, 0xc0, 0x5b, 0xfb, 0xa7, 0x39, 0x98, 0x42, 0xea, 0xb3, - 0xbe, 0x2f, 0xf7, 0x26, 0x3b, 0x50, 0x96, 0xa7, 0x82, 0x64, 0x7f, 0x7f, 0x23, 0x43, 0x5c, 0x01, - 0xe7, 0x23, 0xcf, 0xb5, 0xe8, 0xc6, 0xde, 0xfa, 0xce, 0x0e, 0x2a, 0xee, 0xe4, 0x2a, 0x54, 0x1d, - 0x5b, 0x1a, 0xf0, 0x72, 0xfe, 0xfd, 0x09, 0xf6, 0x01, 0xd6, 0x15, 0xf0, 0xc1, 0x61, 0xfd, 0x42, - 0xf0, 0x10, 0xab, 0x24, 0x86, 0x25, 0xb5, 0x9f, 0x63, 0x93, 0xbf, 0x63, 0x59, 0xa6, 0xdd, 0x89, - 0x47, 0x6d, 0x11, 0x0b, 0xa6, 0x85, 0x91, 0xb1, 0xaf, 0x9b, 0x96, 0xbe, 0x6d, 0xd1, 0x0f, 0xdd, - 0x5b, 0xec, 0xfb, 0xa6, 0x35, 0x27, 0xee, 0xf1, 0x9e, 0x5b, 0xb1, 0xfd, 0x75, 0xb7, 0xe5, 0xbb, - 0xa6, 0xdd, 0x11, 0xea, 0xdb, 0x5a, 0x8c, 0x17, 0x26, 0x78, 0x6b, 0xff, 0xae, 0x08, 0xfc, 0xc4, - 0x09, 0xf9, 0x02, 0x54, 0xbb, 0xd4, 0xd8, 0xd5, 0x6d, 0xd3, 0x53, 0x99, 0xd8, 0xd9, 0x8c, 0x58, - 0x5d, 0x53, 0xc0, 0x07, 0x6c, 0xda, 0x6f, 0xb4, 0x56, 0xf9, 0x29, 0xf5, 0x90, 0x96, 0x18, 0x30, - 0xd1, 0xf1, 0x3c, 0xbd, 0x67, 0x66, 0x8e, 0xbb, 0x15, 0x49, 0xbf, 0x85, 0x13, 0x5e, 0xfc, 0x47, - 0xc9, 0x9a, 0x18, 0x50, 0xea, 0x59, 0xba, 0x69, 0x67, 0x8e, 0xb0, 0x66, 0x6f, 0xb0, 0xc1, 0x38, - 0x09, 0xe7, 0x08, 0xff, 0x8b, 0x82, 0x37, 0xe9, 0x43, 0xcd, 0x33, 0x5c, 0xbd, 0xeb, 0xed, 0xea, - 0x0b, 0x2f, 0xbd, 0x9c, 0x79, 0x62, 0x08, 0x45, 0x89, 0x41, 0xb3, 0x88, 0x8d, 0xb5, 0xd6, 0xf5, - 0xc6, 0xc2, 0x4b, 0x2f, 0x63, 0x54, 0x4e, 0x54, 0xec, 0x4b, 0x2f, 0x2e, 0x64, 0xbf, 0x54, 0x35, - 0x5d, 0xec, 0x4b, 0x2f, 0x2e, 0x60, 0x54, 0x0e, 0x6b, 0x52, 0x27, 0x62, 0xc1, 0x66, 0x13, 0xb8, - 0x1e, 0xc6, 0xe1, 0xf0, 0xbf, 0x28, 0x78, 0x6b, 0xff, 0x33, 0x07, 0xd5, 0x00, 0xcf, 0x16, 0x11, - 0x91, 0xce, 0x74, 0x65, 0x69, 0x84, 0x55, 0x69, 0x51, 0x16, 0xc5, 0x80, 0x09, 0x79, 0x07, 0x26, - 0xc5, 0x7f, 0x99, 0x5e, 0x3c, 0x7f, 0xe2, 0x1c, 0xe6, 0x8b, 0x91, 0xe2, 0x18, 0x63, 0x46, 0x5e, - 0x85, 0x29, 0xee, 0x34, 0x53, 0xab, 0x88, 0x74, 0x48, 0x04, 0x21, 0x5f, 0x9b, 0x51, 0x24, 0xc6, - 0x69, 0x83, 0x17, 0xe7, 0x5f, 0x82, 0x6c, 0x01, 0xb0, 0x95, 0x54, 0xd6, 0xf2, 0x44, 0xaf, 0xce, - 0xa3, 0x11, 0xb6, 0x82, 0xc2, 0x18, 0x61, 0x94, 0x92, 0x25, 0x3e, 0x3f, 0xee, 0x2c, 0xf1, 0xf3, - 0x50, 0xdd, 0xd5, 0xed, 0xb6, 0xb7, 0xab, 0xef, 0x51, 0x79, 0x0c, 0x32, 0xd8, 0xb9, 0xba, 0xae, - 0x10, 0x18, 0xd2, 0x68, 0xbf, 0x33, 0x01, 0x22, 0x62, 0x98, 0xbc, 0x00, 0x95, 0xb6, 0xe9, 0x89, - 0x53, 0xd5, 0x39, 0x5e, 0x32, 0xf0, 0xa7, 0x2c, 0x49, 0x38, 0x06, 0x14, 0x51, 0x1f, 0x46, 0x29, - 0xe1, 0xc3, 0x90, 0x9e, 0x8f, 0x42, 0x04, 0xa5, 0x3c, 0x1f, 0xaf, 0xc1, 0x8c, 0xe5, 0x38, 0x7b, - 0x6c, 0x72, 0x8e, 0x1e, 0xe7, 0x9a, 0x12, 0x7b, 0x3e, 0xab, 0x71, 0x14, 0x26, 0x69, 0xc9, 0x16, - 0x3c, 0xf5, 0x1e, 0x75, 0x1d, 0x19, 0x13, 0xd7, 0xb2, 0x28, 0xed, 0x29, 0x36, 0xc2, 0x03, 0xc4, - 0x4f, 0x9b, 0x7d, 0x2d, 0x9d, 0x04, 0x87, 0x95, 0xe5, 0xe7, 0x63, 0x75, 0xb7, 0x43, 0xfd, 0x0d, - 0xd7, 0x31, 0xa8, 0xe7, 0x99, 0x76, 0x47, 0xb1, 0x9d, 0x08, 0xd9, 0x6e, 0xa6, 0x93, 0xe0, 0xb0, - 0xb2, 0xe4, 0x6d, 0x98, 0x15, 0x28, 0xb1, 0x63, 0xd5, 0x10, 0x93, 0xb8, 0x69, 0xa9, 0x9b, 0xdd, - 0xa7, 0x84, 0xc6, 0xb8, 0x39, 0x84, 0x06, 0x87, 0x96, 0x26, 0x6f, 0xc2, 0x19, 0x15, 0xc2, 0xba, - 0xc1, 0xb4, 0x71, 0xdd, 0xa2, 0x72, 0xc3, 0x44, 0x1e, 0x0b, 0x54, 0xc7, 0xe2, 0x30, 0x41, 0x85, - 0x03, 0xe5, 0x08, 0xc2, 0x05, 0x1e, 0x2a, 0xbe, 0xd5, 0x5b, 0x74, 0x1c, 0xab, 0xed, 0xdc, 0xb3, - 0xd5, 0xbb, 0x8b, 0x5d, 0x15, 0x7e, 0xd9, 0x5a, 0x2b, 0x95, 0x02, 0x87, 0x94, 0x64, 0x6f, 0xce, - 0x31, 0x4b, 0xce, 0x3d, 0x3b, 0xc9, 0x15, 0xc2, 0x37, 0x6f, 0x0d, 0xa1, 0xc1, 0xa1, 0xa5, 0xb9, - 0xfb, 0x22, 0xf1, 0x06, 0x5b, 0x3d, 0x19, 0xdc, 0x29, 0xac, 0xc4, 0x01, 0x2c, 0xa6, 0x94, 0x20, - 0xab, 0x70, 0x3e, 0x09, 0x65, 0xe2, 0x64, 0x9c, 0xa7, 0xb0, 0xfe, 0x53, 0xf0, 0x98, 0x5a, 0x4a, - 0xab, 0x41, 0x35, 0xb8, 0x1b, 0x5b, 0xfb, 0xc3, 0x3c, 0xcc, 0x24, 0xf2, 0x9b, 0x9e, 0x42, 0xe8, - 0x91, 0x1d, 0x0b, 0x3d, 0x5a, 0xcd, 0x74, 0xc7, 0x77, 0xa4, 0xe6, 0x43, 0x23, 0x90, 0xf6, 0x13, - 0x11, 0x48, 0x37, 0xc7, 0x26, 0xf1, 0xe1, 0x81, 0x48, 0x47, 0x39, 0x38, 0x97, 0x28, 0x71, 0x0a, - 0xe1, 0x2e, 0xdd, 0x78, 0xb8, 0xcb, 0xf5, 0x71, 0xbd, 0xec, 0x90, 0xa8, 0x97, 0xff, 0x33, 0xf8, - 0x92, 0x2d, 0x11, 0xf6, 0x55, 0x96, 0xa9, 0x24, 0xe5, 0x3b, 0x2e, 0x65, 0xad, 0x08, 0xff, 0xbe, - 0xf1, 0xd4, 0x7c, 0x76, 0x07, 0x95, 0x14, 0xe2, 0x41, 0x45, 0xe5, 0x8b, 0x1c, 0x6f, 0x50, 0x5b, - 0xd0, 0xd8, 0x41, 0x0a, 0xe0, 0x40, 0x90, 0xf6, 0x9d, 0x02, 0x3c, 0x99, 0xda, 0x29, 0x4e, 0x6f, - 0x83, 0xff, 0xd5, 0xf8, 0x06, 0xff, 0x73, 0xc9, 0x0d, 0xfe, 0xf3, 0x89, 0xfa, 0x3d, 0xc6, 0xfb, - 0xfc, 0x63, 0xdc, 0xbb, 0xd6, 0x66, 0x60, 0x2a, 0x96, 0xe3, 0x54, 0xfb, 0x83, 0x09, 0xa8, 0x45, - 0x7a, 0xd2, 0x63, 0x97, 0x5b, 0x92, 0xbc, 0xab, 0xae, 0xef, 0x2b, 0x64, 0xbd, 0x30, 0x8d, 0x71, - 0x91, 0x46, 0x48, 0xe4, 0x5e, 0x3f, 0xf2, 0x25, 0x98, 0xee, 0x7a, 0x9d, 0x95, 0xa5, 0xeb, 0x54, - 0x6f, 0x53, 0xf7, 0x06, 0x55, 0x09, 0x5d, 0x84, 0x31, 0x17, 0xc3, 0x60, 0x82, 0x92, 0xac, 0xc2, - 0x93, 0x2e, 0xbd, 0xdb, 0xa7, 0x9e, 0x1f, 0xdf, 0x1a, 0x97, 0xca, 0x8c, 0x5c, 0xcf, 0x12, 0x04, - 0x1e, 0xa6, 0x17, 0x62, 0x73, 0x94, 0xd8, 0xce, 0x99, 0xc8, 0x38, 0x50, 0xd5, 0x07, 0xe5, 0x4e, - 0x2d, 0xe9, 0x24, 0x09, 0x21, 0x6a, 0x1b, 0x27, 0xfd, 0x18, 0x60, 0xf9, 0x23, 0x3c, 0x06, 0x18, - 0x3d, 0x7b, 0x5a, 0x79, 0xe8, 0xd9, 0xd3, 0x61, 0x07, 0x2c, 0xab, 0x8f, 0xc3, 0x01, 0x4b, 0xed, - 0x9b, 0x10, 0x6b, 0x70, 0xe2, 0x40, 0x35, 0x78, 0xd9, 0xcc, 0xa7, 0x30, 0xc2, 0xa3, 0x78, 0xdc, - 0x0f, 0x15, 0x3c, 0x62, 0x28, 0x43, 0xdb, 0x61, 0xc3, 0x9c, 0xa7, 0xda, 0x7c, 0xb4, 0xd7, 0x90, - 0xff, 0x9b, 0x3c, 0x54, 0x83, 0x38, 0x33, 0x72, 0x05, 0x8a, 0x76, 0xe8, 0x43, 0x0c, 0x74, 0x0e, - 0xee, 0x3d, 0xe4, 0x98, 0x78, 0x43, 0xe4, 0x1f, 0x7d, 0x43, 0x44, 0x0f, 0x96, 0x16, 0x32, 0x1c, - 0x2c, 0xed, 0x41, 0xd9, 0x77, 0xcd, 0x4e, 0x87, 0xba, 0x99, 0xb7, 0x5a, 0x83, 0xe6, 0xda, 0x14, - 0x0c, 0x65, 0xcb, 0x8a, 0x07, 0x54, 0x62, 0xb4, 0x3b, 0x70, 0x26, 0x49, 0xc9, 0x0f, 0xaa, 0x49, - 0xbf, 0xbd, 0x6c, 0xe3, 0xf0, 0xa0, 0x9a, 0x84, 0x63, 0x40, 0xc1, 0x06, 0x13, 0xfb, 0x4c, 0xef, - 0x39, 0xb6, 0x5a, 0x04, 0xf9, 0x60, 0xda, 0x94, 0x30, 0x0c, 0xb0, 0xda, 0x7f, 0x2d, 0xc0, 0xd3, - 0x61, 0xb4, 0xe0, 0x9a, 0x6e, 0xeb, 0x9d, 0xf8, 0x9d, 0x86, 0x9f, 0xe4, 0x6a, 0x1a, 0xcb, 0x1d, - 0x90, 0x85, 0xc7, 0xe0, 0x0e, 0xc8, 0x3f, 0x2e, 0x00, 0x3f, 0x01, 0x4f, 0xbe, 0x09, 0x93, 0xaa, - 0x3d, 0xd9, 0xb3, 0xfc, 0x9c, 0x57, 0x33, 0x7f, 0x4e, 0x7e, 0xd0, 0x3e, 0x88, 0x21, 0x89, 0x42, - 0x31, 0x26, 0x90, 0x38, 0x50, 0xd9, 0xd1, 0x2d, 0x6b, 0x5b, 0x37, 0xf6, 0x32, 0x6b, 0xa6, 0x31, - 0xe1, 0xbc, 0x9b, 0x2f, 0x4b, 0xd6, 0x18, 0x08, 0x21, 0x2e, 0x54, 0x1d, 0x5b, 0xc6, 0x92, 0xc9, - 0x6f, 0x31, 0x26, 0x89, 0x53, 0xc2, 0x1f, 0x2d, 0x79, 0x63, 0x28, 0x86, 0xfc, 0x6c, 0x0e, 0xa6, - 0xdc, 0xa8, 0x4b, 0x5a, 0xce, 0x1f, 0xcb, 0x19, 0xb6, 0x21, 0x22, 0xdc, 0xa2, 0xc7, 0x21, 0xa3, - 0x7e, 0xef, 0xb8, 0x4c, 0xed, 0xbf, 0xe4, 0x60, 0xaa, 0x65, 0x99, 0x6d, 0xd3, 0xee, 0x3c, 0xc2, - 0x6b, 0x2f, 0xd7, 0xa1, 0xe4, 0x59, 0x66, 0x9b, 0x8e, 0x98, 0xf5, 0x83, 0x6b, 0x66, 0xac, 0x96, - 0x4c, 0x41, 0x61, 0x3f, 0xf1, 0x7b, 0x34, 0x0b, 0xc7, 0xb8, 0x47, 0xf3, 0x77, 0x2b, 0x20, 0xf3, - 0x47, 0x90, 0x3e, 0x54, 0x3b, 0xea, 0x66, 0x42, 0xf9, 0x8e, 0xd7, 0x33, 0xdc, 0xc3, 0x15, 0xbb, - 0xe3, 0x50, 0x7c, 0xef, 0x00, 0x88, 0xa1, 0x24, 0x42, 0xa1, 0xc4, 0xd3, 0x42, 0x65, 0xce, 0xa5, - 0x1d, 0x49, 0x00, 0x26, 0x5a, 0x86, 0x03, 0x50, 0x70, 0x27, 0xba, 0x0c, 0x0c, 0x2d, 0x64, 0x8c, - 0x85, 0x0a, 0x93, 0xca, 0x27, 0xa3, 0x4b, 0x99, 0x08, 0x5b, 0xf7, 0xbd, 0xcc, 0xc9, 0xed, 0xc3, - 0x73, 0x98, 0xf2, 0x98, 0xa6, 0xee, 0x7b, 0xc8, 0x59, 0x93, 0x9f, 0x82, 0x9a, 0xef, 0xea, 0xb6, - 0xb7, 0xe3, 0xb8, 0x5d, 0xea, 0x4a, 0x3f, 0xfc, 0x72, 0x86, 0x34, 0x1c, 0x9b, 0x21, 0x37, 0x11, - 0x16, 0x14, 0x03, 0x61, 0x54, 0x1a, 0xd9, 0x83, 0x4a, 0xbf, 0x2d, 0x2a, 0x26, 0xf5, 0xed, 0x46, - 0x06, 0xc9, 0xd1, 0xa3, 0x84, 0xea, 0x09, 0x03, 0x01, 0xac, 0x37, 0x86, 0xa9, 0xa6, 0xcb, 0x19, - 0x7b, 0x63, 0x22, 0x0d, 0xe6, 0xf0, 0x1c, 0xd3, 0xa4, 0x1b, 0x7a, 0x1b, 0x2a, 0x19, 0x1b, 0x37, - 0x66, 0x35, 0xca, 0x6b, 0x0a, 0x92, 0xbe, 0x06, 0x13, 0x26, 0x7a, 0x3c, 0xb8, 0x4e, 0xaa, 0xe1, - 0x57, 0x33, 0xc6, 0xe8, 0x45, 0xd3, 0xc2, 0x08, 0x08, 0x4a, 0x01, 0xe4, 0xeb, 0x50, 0xf0, 0xee, - 0x7a, 0xf2, 0xfa, 0xfa, 0x0c, 0x3b, 0x29, 0x77, 0x55, 0xdf, 0xe4, 0x5e, 0xee, 0xd6, 0x5d, 0x0f, - 0x19, 0x5f, 0xed, 0xb7, 0xf2, 0x50, 0x66, 0x38, 0xb6, 0x4e, 0xcd, 0x43, 0x55, 0xbf, 0xe7, 0x21, - 0xed, 0x84, 0x49, 0x9b, 0x83, 0x59, 0xa8, 0x71, 0xbb, 0x25, 0x10, 0x18, 0xd2, 0xb0, 0x02, 0xfc, - 0x20, 0x30, 0xdf, 0x4f, 0xcf, 0xc7, 0x0b, 0xbc, 0xa5, 0x10, 0x18, 0xd2, 0x90, 0x5b, 0x70, 0x81, - 0x3f, 0xac, 0xdf, 0xb3, 0xa9, 0xdb, 0xb8, 0xdd, 0x6a, 0x18, 0x86, 0xd3, 0xe7, 0x7b, 0x36, 0x85, - 0xd8, 0xe9, 0x84, 0x0b, 0x6f, 0xa5, 0x52, 0xe1, 0x90, 0xd2, 0x64, 0x1f, 0x40, 0xf7, 0xbc, 0x7e, - 0x97, 0xa2, 0x13, 0x9c, 0x15, 0xca, 0x60, 0xd1, 0xdf, 0x6e, 0x35, 0x02, 0x6e, 0x62, 0x97, 0x24, - 0x7c, 0xc6, 0x88, 0x24, 0xed, 0xfb, 0x25, 0xa8, 0x06, 0x2d, 0xfb, 0x31, 0x6e, 0xbf, 0x45, 0x38, - 0xbb, 0x6f, 0x7a, 0xa6, 0x70, 0xd9, 0x47, 0xcf, 0x1a, 0x96, 0x84, 0x3a, 0x78, 0x2b, 0x89, 0xc4, - 0x41, 0x7a, 0xb2, 0x02, 0xe7, 0xba, 0xfa, 0xfd, 0x9b, 0xfd, 0xee, 0x36, 0x75, 0xd7, 0x77, 0xa4, - 0xff, 0xc8, 0x93, 0xc1, 0xe9, 0x3c, 0x7e, 0x69, 0x6d, 0x10, 0x8d, 0x69, 0x65, 0xc8, 0x6b, 0x30, - 0x73, 0x4f, 0x37, 0xb9, 0xd7, 0x20, 0xba, 0xbb, 0x51, 0x12, 0x7b, 0x2f, 0xb7, 0xe3, 0x28, 0x4c, - 0xd2, 0x92, 0x17, 0xa1, 0xa6, 0x82, 0x32, 0xb6, 0x5c, 0x4b, 0x65, 0xa5, 0x38, 0x3a, 0xac, 0xd7, - 0xd4, 0x26, 0xda, 0x16, 0xae, 0x62, 0x94, 0x86, 0x7c, 0x09, 0xa6, 0x75, 0xdf, 0x77, 0xcd, 0xed, - 0xbe, 0xcf, 0x9b, 0x5a, 0x1c, 0x54, 0x92, 0xbe, 0x91, 0x46, 0x0c, 0x83, 0x09, 0x4a, 0xb2, 0x0e, - 0x4f, 0x4a, 0x27, 0x59, 0x9c, 0x50, 0x66, 0x5d, 0xe6, 0xaa, 0xeb, 0x5a, 0x1a, 0x01, 0xa6, 0x97, - 0x4b, 0x74, 0x67, 0x38, 0xb5, 0xee, 0xdc, 0x05, 0xe9, 0x5c, 0x24, 0x46, 0xec, 0xe6, 0x73, 0x91, - 0x5a, 0x70, 0xfe, 0x78, 0x6a, 0x4e, 0x70, 0x05, 0x77, 0xe4, 0xd2, 0xc9, 0xd4, 0x2b, 0xce, 0xb5, - 0x7f, 0x9b, 0x87, 0xc2, 0xe6, 0x6a, 0x8b, 0xbc, 0x09, 0xc4, 0xb4, 0x3d, 0x6a, 0xf4, 0x5d, 0xda, - 0xda, 0x33, 0x7b, 0xb7, 0xa8, 0x6b, 0xee, 0x1c, 0xc8, 0x7d, 0xbd, 0xc0, 0xed, 0xb7, 0x32, 0x40, - 0x81, 0x29, 0xa5, 0xf8, 0xb6, 0xad, 0xbe, 0x48, 0xdd, 0x0c, 0xdb, 0xb6, 0x8d, 0xb0, 0x38, 0xc6, - 0x98, 0x91, 0x2d, 0x00, 0x23, 0x64, 0x5d, 0x38, 0xf1, 0x5e, 0x6b, 0x84, 0x71, 0x84, 0x11, 0x41, - 0xa8, 0xee, 0x31, 0x52, 0xce, 0xb5, 0x78, 0x12, 0xae, 0x7c, 0x41, 0xbc, 0xa1, 0xca, 0x62, 0xc8, - 0x46, 0xb3, 0x61, 0x2a, 0x76, 0x1d, 0x3a, 0xf9, 0x22, 0x54, 0x9c, 0x5e, 0x44, 0x4b, 0xac, 0xf2, - 0x54, 0xf2, 0x95, 0x75, 0x09, 0x7b, 0x70, 0x58, 0x9f, 0x5a, 0x75, 0x3a, 0xa6, 0xa1, 0x00, 0x18, - 0x90, 0x13, 0x0d, 0x26, 0x78, 0xe2, 0x43, 0x15, 0x00, 0xc5, 0x97, 0x29, 0x7e, 0x55, 0xb3, 0x87, - 0x12, 0xa3, 0x7d, 0xab, 0x08, 0xe1, 0xe9, 0x3f, 0xe2, 0xc1, 0x84, 0x48, 0x55, 0x24, 0x15, 0xd2, - 0x47, 0x9a, 0x15, 0x49, 0x8a, 0x22, 0x1d, 0x28, 0xdc, 0x71, 0xb6, 0x33, 0xeb, 0xa3, 0x91, 0xec, - 0xcd, 0x62, 0xce, 0x88, 0x00, 0x90, 0x49, 0x20, 0xdf, 0xcd, 0xc1, 0x59, 0x2f, 0xe9, 0x45, 0x90, - 0xdd, 0x01, 0xb3, 0xbb, 0x4b, 0x92, 0x7e, 0x09, 0x91, 0xf3, 0x7f, 0x28, 0x1a, 0x07, 0xeb, 0xc2, - 0xda, 0x5f, 0x1c, 0x86, 0x93, 0xdd, 0x69, 0xf4, 0xf6, 0x17, 0x07, 0xec, 0xe2, 0xed, 0x1f, 0x87, - 0xa1, 0x14, 0xa5, 0xfd, 0x87, 0x1c, 0x14, 0xb6, 0x96, 0x96, 0x4f, 0xdd, 0x07, 0x48, 0x3a, 0x50, - 0xee, 0x88, 0x8b, 0xba, 0x32, 0x67, 0xaf, 0x90, 0x17, 0x7e, 0x09, 0xb5, 0x4f, 0x3e, 0xa0, 0xe2, - 0xae, 0x1d, 0xc0, 0xc4, 0xd6, 0x92, 0x34, 0xe9, 0x4f, 0xd9, 0xcf, 0xf9, 0x53, 0x10, 0x68, 0xdb, - 0xa7, 0x2f, 0xfc, 0x5b, 0x39, 0x88, 0x1b, 0x18, 0xa7, 0x5f, 0x85, 0x3f, 0xc8, 0x41, 0x22, 0x07, - 0x19, 0x79, 0x59, 0x5e, 0x7c, 0x12, 0x3f, 0x48, 0xaf, 0x2e, 0x3e, 0x21, 0x71, 0xea, 0xc8, 0x05, - 0x28, 0x1f, 0xe4, 0x60, 0xca, 0x8d, 0xc6, 0xc7, 0xc9, 0x29, 0x23, 0x43, 0xd4, 0x6f, 0x5a, 0xb4, - 0x9d, 0x3c, 0xae, 0x11, 0x45, 0x61, 0x5c, 0xae, 0xf6, 0xcf, 0xf2, 0x30, 0x71, 0x6a, 0x09, 0x64, - 0x69, 0x6c, 0xd7, 0x7d, 0x31, 0xe3, 0x8c, 0x30, 0x74, 0xb3, 0xbd, 0x9b, 0xd8, 0x6c, 0xbf, 0x9a, - 0x55, 0xd0, 0xc3, 0xf7, 0xd8, 0xff, 0x65, 0x0e, 0xe4, 0x7c, 0xb4, 0x62, 0x7b, 0xbe, 0x6e, 0x1b, - 0x94, 0x18, 0xc1, 0xe4, 0x97, 0x75, 0xe7, 0x55, 0x26, 0x42, 0x10, 0xeb, 0x1d, 0xff, 0xaf, 0x26, - 0x3b, 0xf2, 0x02, 0x54, 0x76, 0x1d, 0xcf, 0xb7, 0x43, 0xcd, 0x3d, 0xf0, 0x50, 0x5f, 0x97, 0x70, - 0x0c, 0x28, 0xc8, 0x67, 0xa0, 0x2c, 0x37, 0x74, 0x64, 0xa8, 0x51, 0xe0, 0x80, 0x97, 0x3b, 0x3e, - 0xa8, 0xf0, 0xda, 0xd7, 0x60, 0x26, 0x99, 0x05, 0xf7, 0x5a, 0x6a, 0x16, 0xdc, 0x67, 0x87, 0x64, - 0xc1, 0xad, 0x0d, 0xcf, 0x80, 0xfb, 0x77, 0x0b, 0x30, 0xf9, 0xb1, 0xc9, 0x7e, 0x9b, 0x92, 0x7a, - 0xa5, 0x90, 0x31, 0xf5, 0x4a, 0xf1, 0x44, 0xa9, 0x57, 0x4e, 0x3d, 0x2f, 0xca, 0x0f, 0x72, 0x00, - 0xa7, 0x96, 0x7a, 0xb7, 0x1d, 0x0f, 0x13, 0xc9, 0x3c, 0x48, 0xd2, 0xa3, 0x43, 0x7e, 0xa7, 0xac, - 0x5e, 0x89, 0xef, 0xb9, 0x7f, 0x90, 0x83, 0x69, 0x3d, 0x96, 0x65, 0x24, 0xb3, 0x82, 0x98, 0x48, - 0x5a, 0x12, 0x1c, 0x4d, 0x8f, 0xc3, 0x31, 0x21, 0x96, 0x1f, 0x8c, 0x95, 0x01, 0x11, 0x11, 0xeb, - 0x7b, 0xe0, 0x1e, 0x52, 0x79, 0x30, 0x36, 0xf2, 0xf4, 0x21, 0x59, 0x5d, 0x0a, 0x63, 0xc9, 0xea, - 0x12, 0xdd, 0x1e, 0x2e, 0x3e, 0x74, 0x7b, 0x78, 0x1f, 0xaa, 0x3b, 0xae, 0xd3, 0xe5, 0x89, 0x53, - 0xf8, 0x05, 0x2b, 0x59, 0x66, 0xdc, 0x45, 0xa7, 0xbb, 0x6d, 0xda, 0xb4, 0xcd, 0x93, 0xb2, 0x04, - 0x9e, 0x88, 0x65, 0xc5, 0x1f, 0x43, 0x51, 0x7c, 0x9f, 0xd0, 0x11, 0x52, 0x27, 0xc6, 0x29, 0x35, - 0x98, 0x18, 0x37, 0x05, 0x77, 0x54, 0x62, 0xe2, 0xc9, 0x52, 0xca, 0xa7, 0x94, 0x2c, 0xe5, 0x20, - 0x9a, 0x83, 0xa6, 0x92, 0xd1, 0x9d, 0x79, 0xa2, 0x9c, 0xa6, 0x8f, 0x51, 0xfa, 0x92, 0x5f, 0x28, - 0xab, 0x65, 0xe3, 0xb1, 0xbb, 0xb0, 0xef, 0x93, 0xac, 0xaa, 0x1d, 0x3a, 0x90, 0xf2, 0xb4, 0x72, - 0x8a, 0x29, 0x4f, 0xab, 0xe3, 0x49, 0x79, 0x0a, 0xd9, 0x52, 0x9e, 0xd6, 0xc6, 0x94, 0xf2, 0x74, - 0x72, 0x5c, 0x29, 0x4f, 0xa7, 0x46, 0x4a, 0x79, 0x3a, 0x7d, 0xac, 0x94, 0xa7, 0x87, 0x05, 0x48, - 0x98, 0xe0, 0x9f, 0x44, 0x2e, 0xfc, 0x99, 0x8a, 0x5c, 0xf8, 0x76, 0x1e, 0xc2, 0xd5, 0xe8, 0x84, - 0x67, 0x1d, 0xde, 0xe6, 0x99, 0x26, 0xc4, 0x25, 0xcb, 0xa3, 0x69, 0xe5, 0x93, 0x32, 0x2b, 0x85, - 0xb8, 0x5d, 0x39, 0xe0, 0x46, 0x3c, 0x00, 0x33, 0xb8, 0xf9, 0x3a, 0xf3, 0x7e, 0x6c, 0x78, 0x89, - 0xb6, 0x70, 0x8d, 0x86, 0xcf, 0x18, 0x11, 0xa3, 0x7d, 0xbf, 0x00, 0xf2, 0x8a, 0x74, 0x42, 0xa1, - 0xb4, 0x63, 0x86, 0xe7, 0xd7, 0x47, 0x77, 0xf0, 0x2d, 0x33, 0x2e, 0xf2, 0x1e, 0x76, 0xbe, 0xe1, - 0xcc, 0x01, 0x28, 0xb8, 0xf3, 0x9d, 0x44, 0x11, 0x40, 0x20, 0xdb, 0x2f, 0xc3, 0x4e, 0x62, 0x34, - 0x10, 0x41, 0xee, 0x24, 0x0a, 0x10, 0x2a, 0x19, 0x62, 0xe3, 0x52, 0x5c, 0x4a, 0x5d, 0xc8, 0xbc, - 0x71, 0x19, 0x89, 0x83, 0x53, 0x1b, 0x97, 0xe2, 0x4a, 0x6a, 0x25, 0x83, 0xbc, 0x0f, 0x35, 0xdd, - 0x30, 0xfa, 0xdd, 0xbe, 0xc5, 0x1d, 0xc1, 0x59, 0xef, 0x27, 0x6d, 0x84, 0xbc, 0xa4, 0x58, 0x6e, - 0xd3, 0x45, 0xc0, 0x18, 0x95, 0xd7, 0xfc, 0xfa, 0xf7, 0x7e, 0x74, 0xf9, 0x89, 0x1f, 0xfc, 0xe8, - 0xf2, 0x13, 0x3f, 0xfc, 0xd1, 0xe5, 0x27, 0xbe, 0x75, 0x74, 0x39, 0xf7, 0xbd, 0xa3, 0xcb, 0xb9, - 0x1f, 0x1c, 0x5d, 0xce, 0xfd, 0xf0, 0xe8, 0x72, 0xee, 0x3f, 0x1e, 0x5d, 0xce, 0xfd, 0xf5, 0xff, - 0x74, 0xf9, 0x89, 0xaf, 0x7d, 0x21, 0xac, 0xce, 0xbc, 0xaa, 0xce, 0xbc, 0x12, 0x3e, 0xdf, 0xdb, - 0xeb, 0xcc, 0xb3, 0xea, 0x84, 0x10, 0x55, 0x9d, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x0b, - 0x4b, 0xb8, 0x39, 0xb6, 0x00, 0x00, + 0xdf, 0xd5, 0x7b, 0xae, 0xf3, 0x0e, 0xff, 0xb3, 0x63, 0x39, 0x77, 0xe7, 0x7b, 0x7b, 0x9d, 0x79, + 0xbd, 0x67, 0x7a, 0x21, 0x64, 0xff, 0x79, 0xdd, 0xea, 0xed, 0xea, 0xcf, 0xcf, 0x77, 0xa8, 0x4d, + 0x5d, 0xdd, 0xa7, 0xed, 0xb9, 0x9e, 0xeb, 0xf8, 0x0e, 0xf9, 0x62, 0xc8, 0x68, 0x4e, 0x31, 0x9a, + 0x53, 0xc5, 0xe6, 0x7a, 0x7b, 0x9d, 0x39, 0xc6, 0x28, 0x84, 0x28, 0x46, 0x17, 0x7f, 0x2a, 0x52, + 0x83, 0x8e, 0xd3, 0x71, 0xe6, 0x39, 0xbf, 0xed, 0xfe, 0x0e, 0x7f, 0xe2, 0x0f, 0xfc, 0x9f, 0x90, + 0x73, 0x51, 0xdb, 0x7b, 0xc9, 0x9b, 0x33, 0x1d, 0x56, 0xad, 0x79, 0xc3, 0x71, 0xe9, 0xfc, 0xfe, + 0x40, 0x5d, 0x2e, 0x7e, 0x21, 0xa4, 0xe9, 0xea, 0xc6, 0xae, 0x69, 0x53, 0xf7, 0x40, 0xbd, 0xcb, + 0xbc, 0x4b, 0x3d, 0xa7, 0xef, 0x1a, 0xf4, 0x44, 0xa5, 0xbc, 0xf9, 0x2e, 0xf5, 0xf5, 0x34, 0x59, + 0xf3, 0xc3, 0x4a, 0xb9, 0x7d, 0xdb, 0x37, 0xbb, 0x83, 0x62, 0x5e, 0xfc, 0xb0, 0x02, 0x9e, 0xb1, + 0x4b, 0xbb, 0xfa, 0x40, 0xb9, 0xcf, 0x0f, 0x2b, 0xd7, 0xf7, 0x4d, 0x6b, 0xde, 0xb4, 0x7d, 0xcf, + 0x77, 0x93, 0x85, 0xb4, 0xbf, 0x9f, 0x87, 0xa9, 0xc6, 0xed, 0x56, 0xc3, 0xf3, 0xfa, 0x5d, 0x8a, + 0x8e, 0x45, 0xc9, 0x67, 0xa1, 0xec, 0x3a, 0x16, 0x6d, 0xb8, 0xf6, 0x6c, 0xee, 0x4a, 0xee, 0xd9, + 0x6a, 0x73, 0xe6, 0xfb, 0x87, 0xf5, 0xc7, 0x8e, 0x0e, 0xeb, 0x65, 0x86, 0x6e, 0xe0, 0x4d, 0x54, + 0x78, 0xf2, 0x3c, 0xd4, 0x3c, 0xea, 0x79, 0xa6, 0x63, 0xdf, 0xd4, 0xbb, 0x74, 0x36, 0x2f, 0xc8, + 0x8f, 0x0e, 0xeb, 0xb5, 0x56, 0x08, 0xc6, 0x28, 0x0d, 0x79, 0x05, 0x66, 0xda, 0x7d, 0x57, 0xf7, + 0x4d, 0xc7, 0x6e, 0x51, 0xc3, 0xb1, 0xdb, 0xde, 0x6c, 0xe1, 0x4a, 0xee, 0xd9, 0x52, 0xf3, 0xdc, + 0xd1, 0x61, 0x7d, 0x66, 0x29, 0x8e, 0xc2, 0x24, 0x2d, 0x99, 0x03, 0xa0, 0xf7, 0x7c, 0xea, 0xda, + 0xba, 0xb5, 0xb2, 0x34, 0x5b, 0xe4, 0x02, 0xa7, 0x8f, 0x0e, 0xeb, 0x70, 0x35, 0x80, 0x62, 0x84, + 0x82, 0x68, 0x30, 0xd1, 0x73, 0x2c, 0xd3, 0x38, 0x98, 0x2d, 0x71, 0x5a, 0x38, 0x3a, 0xac, 0x4f, + 0x6c, 0x70, 0x08, 0x4a, 0x0c, 0xe3, 0x29, 0xfe, 0x35, 0x5c, 0xdb, 0x9b, 0x9d, 0xb8, 0x52, 0x50, + 0x3c, 0x05, 0x5d, 0x03, 0x6f, 0x7a, 0x18, 0xa1, 0xd0, 0x7e, 0x17, 0xe0, 0x5c, 0x63, 0xdb, 0xf3, + 0x5d, 0xdd, 0xf0, 0x37, 0x9c, 0xf6, 0x26, 0xed, 0xf6, 0x2c, 0xdd, 0xa7, 0x64, 0x0f, 0x2a, 0xac, + 0x0f, 0xb4, 0x75, 0x5f, 0xe7, 0x2d, 0x57, 0x5b, 0x68, 0xcc, 0x8d, 0xd8, 0xe7, 0xe7, 0xd6, 0x24, + 0xa3, 0xe6, 0xe4, 0xd1, 0x61, 0xbd, 0xa2, 0x9e, 0x30, 0x10, 0x40, 0x7e, 0x25, 0x07, 0x93, 0xb6, + 0xd3, 0xa6, 0x2d, 0x6a, 0x51, 0xc3, 0x77, 0xdc, 0xd9, 0xfc, 0x95, 0xc2, 0xb3, 0xb5, 0x85, 0x6f, + 0x8e, 0x2c, 0x31, 0xe5, 0x8d, 0xe6, 0x6e, 0x46, 0x04, 0x5c, 0xb5, 0x7d, 0xf7, 0xa0, 0x79, 0x5e, + 0xf6, 0x85, 0xc9, 0x28, 0x0a, 0x63, 0x35, 0x21, 0x5b, 0x50, 0xf3, 0x1d, 0x8b, 0x8a, 0x0f, 0xc7, + 0x3e, 0x2f, 0xab, 0xd8, 0xe5, 0x39, 0xd1, 0x3b, 0x99, 0xf8, 0x39, 0x36, 0x2c, 0xe7, 0xf6, 0x9f, + 0x9f, 0xdb, 0x0c, 0xc8, 0x9a, 0xe7, 0x24, 0xe3, 0x5a, 0x08, 0xf3, 0x30, 0xca, 0x87, 0x50, 0x98, + 0xf1, 0xa8, 0xd1, 0x77, 0x4d, 0xff, 0x60, 0xd1, 0xb1, 0x7d, 0x7a, 0xcf, 0xe7, 0xdf, 0xbf, 0xb6, + 0xf0, 0xe9, 0x34, 0xd6, 0x1b, 0x4e, 0xbb, 0x15, 0xa7, 0x16, 0x3d, 0x2c, 0x01, 0xc4, 0x24, 0x4f, + 0x62, 0xc3, 0x19, 0xb3, 0xab, 0x77, 0xe8, 0x46, 0xdf, 0xb2, 0x5a, 0xd4, 0x70, 0xa9, 0xef, 0xcd, + 0x96, 0xf8, 0x2b, 0x3c, 0x9b, 0x26, 0x67, 0xd5, 0x31, 0x74, 0x6b, 0x7d, 0xfb, 0x1d, 0x6a, 0xf8, + 0x48, 0x77, 0xa8, 0x4b, 0x6d, 0x83, 0x36, 0x67, 0xe5, 0xcb, 0x9c, 0x59, 0x49, 0x70, 0xc2, 0x01, + 0xde, 0xe4, 0x1a, 0x9c, 0xed, 0xb9, 0xa6, 0xc3, 0xab, 0x60, 0xe9, 0x9e, 0xc7, 0x47, 0xd2, 0x04, + 0xef, 0xac, 0x4f, 0x4a, 0x36, 0x67, 0x37, 0x92, 0x04, 0x38, 0x58, 0x86, 0x3c, 0x0b, 0x15, 0x05, + 0x9c, 0x2d, 0xf3, 0x21, 0xc5, 0xfb, 0x8e, 0x2a, 0x8b, 0x01, 0x96, 0x2c, 0x43, 0x45, 0xdf, 0xd9, + 0x31, 0x6d, 0x46, 0x59, 0xe1, 0x4d, 0x78, 0x29, 0xed, 0xd5, 0x1a, 0x92, 0x46, 0xf0, 0x51, 0x4f, + 0x18, 0x94, 0x25, 0xaf, 0x03, 0xf1, 0xa8, 0xbb, 0x6f, 0x1a, 0xb4, 0x61, 0x18, 0x4e, 0xdf, 0xf6, + 0x79, 0xdd, 0xab, 0xbc, 0xee, 0x17, 0x65, 0xdd, 0x49, 0x6b, 0x80, 0x02, 0x53, 0x4a, 0x91, 0xd7, + 0xe0, 0x8c, 0x9c, 0xde, 0xc2, 0x56, 0x00, 0xce, 0xe9, 0x3c, 0x6b, 0x48, 0x4c, 0xe0, 0x70, 0x80, + 0x9a, 0xb4, 0xe1, 0x92, 0xde, 0xf7, 0x9d, 0x2e, 0x63, 0x19, 0x17, 0xba, 0xe9, 0xec, 0x51, 0x7b, + 0xb6, 0x76, 0x25, 0xf7, 0x6c, 0xa5, 0x79, 0xe5, 0xe8, 0xb0, 0x7e, 0xa9, 0xf1, 0x00, 0x3a, 0x7c, + 0x20, 0x17, 0xb2, 0x0e, 0xd5, 0xb6, 0xed, 0x89, 0x99, 0x61, 0x76, 0x92, 0x57, 0xf0, 0x79, 0xf9, + 0xaa, 0xd5, 0xa5, 0x9b, 0x2d, 0x81, 0xb8, 0x7f, 0x58, 0xbf, 0x34, 0xb8, 0x0a, 0xcd, 0x05, 0x78, + 0x0c, 0x79, 0x90, 0x35, 0xce, 0x70, 0xd1, 0xb1, 0x77, 0xcc, 0xce, 0xec, 0x14, 0xff, 0x1a, 0x57, + 0x86, 0x74, 0xe8, 0xa5, 0x9b, 0x2d, 0x41, 0xd7, 0x9c, 0x92, 0xe2, 0xc4, 0x23, 0x86, 0x1c, 0x48, + 0x1b, 0xa6, 0xd5, 0xfa, 0xb5, 0x68, 0xe9, 0x66, 0xd7, 0x9b, 0x9d, 0xe6, 0x9d, 0xf7, 0x27, 0x87, + 0xf0, 0xc4, 0x28, 0x71, 0xf3, 0x82, 0x7c, 0x95, 0xe9, 0x18, 0xd8, 0xc3, 0x04, 0xcf, 0x8b, 0xaf, + 0xc2, 0xd9, 0x81, 0xb9, 0x81, 0x9c, 0x81, 0xc2, 0x1e, 0x3d, 0x10, 0x8b, 0x06, 0xb2, 0xbf, 0xe4, + 0x3c, 0x94, 0xf6, 0x75, 0xab, 0x2f, 0x57, 0x06, 0x14, 0x0f, 0x5f, 0xce, 0xbf, 0x94, 0xd3, 0xfe, + 0xa0, 0x04, 0x93, 0x6a, 0xc6, 0x69, 0x99, 0xf6, 0x1e, 0xb9, 0x0d, 0x05, 0xcb, 0xe9, 0xc8, 0x79, + 0xf3, 0x2b, 0x23, 0xcf, 0x62, 0xab, 0x4e, 0xa7, 0x59, 0x3e, 0x3a, 0xac, 0x17, 0x56, 0x9d, 0x0e, + 0x32, 0x8e, 0xc4, 0x80, 0xd2, 0x9e, 0xbe, 0xb3, 0xa7, 0xf3, 0x3a, 0xd4, 0x16, 0x9a, 0x23, 0xb3, + 0xbe, 0xc1, 0xb8, 0xb0, 0xba, 0x36, 0xab, 0x47, 0x87, 0xf5, 0x12, 0x7f, 0x44, 0xc1, 0x9b, 0x38, + 0x50, 0xdd, 0xb6, 0x74, 0x63, 0x6f, 0xd7, 0xb1, 0x28, 0x5f, 0xcf, 0xb2, 0x08, 0x6a, 0x2a, 0x4e, + 0xe2, 0x33, 0x07, 0x8f, 0x18, 0xca, 0x20, 0x06, 0x4c, 0xf4, 0xdb, 0x9e, 0x69, 0xef, 0xc9, 0x39, + 0xf0, 0xd5, 0x91, 0xa5, 0x6d, 0x2d, 0xf1, 0x77, 0xe2, 0x0b, 0xa3, 0xf8, 0x8f, 0x92, 0x35, 0x6b, + 0x3a, 0x36, 0x52, 0x29, 0x5f, 0x3b, 0xb3, 0xbc, 0x11, 0x1b, 0x48, 0x34, 0x6c, 0x3a, 0xfe, 0x88, + 0x82, 0x37, 0x79, 0x0b, 0x0a, 0xde, 0x1d, 0x8f, 0xcf, 0x78, 0xb5, 0x85, 0xd7, 0x46, 0x17, 0x71, + 0xc7, 0xe3, 0x02, 0xf8, 0xc7, 0x6f, 0xdd, 0xf1, 0x90, 0x71, 0x25, 0x1d, 0x98, 0xe8, 0xf5, 0x2d, + 0x4f, 0x77, 0xf9, 0x8c, 0x58, 0x5b, 0x58, 0x1c, 0x99, 0xff, 0x06, 0x67, 0x13, 0x36, 0x95, 0x78, + 0x46, 0xc9, 0x5e, 0xfb, 0xd3, 0x49, 0x98, 0x56, 0xfd, 0xf9, 0x16, 0x75, 0x7d, 0x7a, 0x8f, 0x5c, + 0x81, 0xa2, 0xcd, 0x66, 0x31, 0xa1, 0x44, 0x4d, 0xca, 0x91, 0x55, 0xe4, 0xb3, 0x17, 0xc7, 0xb0, + 0x8f, 0x28, 0x46, 0x95, 0xec, 0x9b, 0xa3, 0x7f, 0xc4, 0x16, 0x67, 0x23, 0x6a, 0x26, 0xfe, 0xa3, + 0x64, 0x4d, 0xde, 0x82, 0x22, 0xef, 0x27, 0xa2, 0x57, 0xbe, 0x32, 0xba, 0x08, 0xf6, 0xea, 0x15, + 0xf6, 0x06, 0xbc, 0x8f, 0x70, 0xa6, 0x6c, 0xd4, 0xf6, 0xdb, 0x3b, 0xb2, 0x0f, 0x7e, 0x25, 0x43, + 0x1f, 0x5c, 0x16, 0x1f, 0x6e, 0x6b, 0x69, 0x19, 0x19, 0x47, 0xf2, 0xd7, 0x72, 0x70, 0xd6, 0x70, + 0x6c, 0x5f, 0x67, 0x5a, 0xac, 0xd2, 0x47, 0x64, 0x3f, 0x7c, 0x7d, 0x64, 0x39, 0x8b, 0x49, 0x8e, + 0xcd, 0xc7, 0xd9, 0xf2, 0x3a, 0x00, 0xc6, 0x41, 0xd9, 0xe4, 0x6f, 0xe7, 0xe0, 0x71, 0xb6, 0xec, + 0x0d, 0x10, 0xcb, 0xae, 0x3b, 0xce, 0x5a, 0x3d, 0x79, 0x74, 0x58, 0x7f, 0x7c, 0x25, 0x4d, 0x18, + 0xa6, 0xd7, 0x81, 0xd5, 0xee, 0x9c, 0x3e, 0xa8, 0xc1, 0xc9, 0x6e, 0xbf, 0x3a, 0x4e, 0xad, 0xb0, + 0xf9, 0x29, 0xd9, 0x95, 0xd3, 0x94, 0x60, 0x4c, 0xab, 0x05, 0xb9, 0x0a, 0xe5, 0x7d, 0xc7, 0xea, + 0x77, 0xa9, 0x37, 0x5b, 0xe1, 0xab, 0xd1, 0xc5, 0xb4, 0xd5, 0xe8, 0x16, 0x27, 0x09, 0xcd, 0x0d, + 0xf1, 0xec, 0xa1, 0x2a, 0x4b, 0x4c, 0x98, 0xb0, 0xcc, 0xae, 0xe9, 0x7b, 0x5c, 0xc7, 0xa8, 0x2d, + 0x5c, 0x1d, 0xf9, 0xb5, 0xc4, 0x10, 0x5d, 0xe5, 0xcc, 0xc4, 0xa8, 0x11, 0xff, 0x51, 0x0a, 0xe0, + 0x53, 0x9f, 0xa1, 0x5b, 0x42, 0x07, 0xa9, 0x2d, 0x7c, 0x75, 0xf4, 0x61, 0xc3, 0xb8, 0x34, 0xa7, + 0xe4, 0x3b, 0x95, 0xf8, 0x23, 0x0a, 0xde, 0xe4, 0x1b, 0x30, 0x1d, 0xfb, 0x9a, 0xde, 0x6c, 0x8d, + 0xb7, 0xce, 0x53, 0x69, 0xad, 0x13, 0x50, 0x85, 0x8b, 0x74, 0xac, 0x87, 0x78, 0x98, 0x60, 0x46, + 0x6e, 0x40, 0xc5, 0x33, 0xdb, 0xd4, 0xd0, 0x5d, 0x6f, 0x76, 0xf2, 0x38, 0x8c, 0xcf, 0x48, 0xc6, + 0x95, 0x96, 0x2c, 0x86, 0x01, 0x03, 0x6e, 0x24, 0xe9, 0xae, 0x6f, 0x0a, 0x9d, 0x7e, 0x8a, 0xeb, + 0x97, 0xc2, 0x48, 0x0a, 0xa0, 0x18, 0xa1, 0x60, 0xf4, 0xac, 0xec, 0x8a, 0xdd, 0xeb, 0xfb, 0x42, + 0x07, 0x91, 0x46, 0x55, 0x2b, 0x80, 0x62, 0x84, 0x82, 0xfc, 0x66, 0x0e, 0x3e, 0x15, 0x3e, 0x0e, + 0x0e, 0xb2, 0x99, 0xb1, 0x0f, 0xb2, 0xfa, 0xd1, 0x61, 0xfd, 0x53, 0xad, 0xe1, 0x22, 0xf1, 0x41, + 0xf5, 0x21, 0xef, 0xe7, 0x60, 0xba, 0xdf, 0x6b, 0xeb, 0x3e, 0x6d, 0xf9, 0xcc, 0x9e, 0xee, 0x1c, + 0xcc, 0x9e, 0xe1, 0x55, 0xbc, 0x36, 0xfa, 0x2c, 0x18, 0x63, 0x17, 0x7e, 0xe6, 0x38, 0x1c, 0x13, + 0x62, 0xb5, 0x77, 0xe0, 0x6c, 0xc3, 0x30, 0xfa, 0xdd, 0xbe, 0xa5, 0xfb, 0x8e, 0x7b, 0xdb, 0xb4, + 0xdb, 0xce, 0x5d, 0xb2, 0x05, 0x65, 0xa6, 0x1d, 0x3b, 0x7d, 0x5f, 0xaa, 0x54, 0x73, 0x91, 0x4f, + 0x1f, 0x78, 0x07, 0xc2, 0xda, 0x30, 0xbb, 0x92, 0x75, 0x06, 0x65, 0x80, 0x37, 0x6b, 0x6c, 0x04, + 0x6e, 0x0a, 0x16, 0xa8, 0x78, 0x69, 0xb7, 0x61, 0xaa, 0xd1, 0xf7, 0x77, 0x1d, 0xd7, 0x7c, 0x97, + 0x93, 0x91, 0x65, 0x28, 0xf9, 0x5c, 0xbb, 0x16, 0x52, 0x9e, 0x49, 0xeb, 0x60, 0xc2, 0xd2, 0xb9, + 0x41, 0x0f, 0x94, 0xba, 0x28, 0xb4, 0x00, 0xa1, 0x6d, 0x8b, 0xe2, 0xda, 0x2f, 0xe7, 0xa1, 0xdc, + 0xd4, 0x8d, 0x3d, 0x67, 0x67, 0x87, 0xbc, 0x09, 0x15, 0xd3, 0xf6, 0xa9, 0xbb, 0xaf, 0x5b, 0x23, + 0x56, 0x9e, 0x1b, 0x2c, 0x2b, 0x92, 0x07, 0x06, 0xdc, 0x48, 0x1d, 0x4a, 0x9e, 0x4f, 0x7b, 0x1e, + 0x5f, 0x6f, 0xa7, 0xa4, 0x32, 0xc2, 0x00, 0x28, 0xe0, 0x44, 0x83, 0x89, 0x1d, 0x9d, 0x9b, 0xd3, + 0x6c, 0xb9, 0xcc, 0x89, 0xa9, 0x61, 0x99, 0x43, 0x50, 0x62, 0xc8, 0x0a, 0x14, 0x0c, 0xbd, 0x27, + 0xd7, 0xbc, 0x93, 0xd6, 0x8c, 0xaf, 0x72, 0x8b, 0x7a, 0x0f, 0x19, 0x0f, 0x26, 0xee, 0x1d, 0xd3, + 0xf7, 0xa9, 0xcb, 0x57, 0x36, 0x29, 0xee, 0x75, 0x0e, 0x41, 0x89, 0xd1, 0x7e, 0x2d, 0x07, 0xd5, + 0xa6, 0xee, 0x99, 0x06, 0x6b, 0x78, 0xb2, 0x08, 0xc5, 0xbe, 0x47, 0xdd, 0x93, 0x35, 0x37, 0x5f, + 0xb5, 0xb7, 0x3c, 0xea, 0x22, 0x2f, 0x4c, 0xd6, 0xa1, 0xd2, 0xd3, 0x3d, 0xef, 0xae, 0xe3, 0xb6, + 0xa5, 0xe6, 0x71, 0x4c, 0x46, 0xc2, 0xa0, 0x94, 0x45, 0x31, 0x60, 0xa2, 0xd5, 0x20, 0xd4, 0x52, + 0xb5, 0x5f, 0xcc, 0xc1, 0xb9, 0x66, 0x7f, 0x67, 0x87, 0xba, 0xd2, 0x7e, 0x92, 0x96, 0x49, 0x1f, + 0xaa, 0xef, 0x50, 0xdf, 0xf3, 0x5d, 0xaa, 0x77, 0xa5, 0xd8, 0xeb, 0x23, 0x8f, 0x95, 0xd7, 0xa9, + 0xdf, 0xe2, 0x9c, 0xa2, 0x06, 0x51, 0x00, 0xc4, 0x50, 0x92, 0xf6, 0xbb, 0x25, 0x98, 0x5c, 0x74, + 0xba, 0xdb, 0xa6, 0x4d, 0xdb, 0x57, 0xdb, 0x1d, 0x4a, 0xde, 0x86, 0x22, 0x6d, 0x77, 0xa8, 0x6c, + 0xc2, 0xd1, 0x15, 0x22, 0xc6, 0x2c, 0x54, 0xeb, 0xd8, 0x13, 0x72, 0xc6, 0x64, 0x15, 0xa6, 0x77, + 0x5c, 0xa7, 0x2b, 0xd6, 0x98, 0xcd, 0x83, 0x9e, 0x72, 0x8c, 0xfd, 0xa4, 0x1a, 0xd0, 0xcb, 0x31, + 0xec, 0xfd, 0xc3, 0x3a, 0x84, 0x4f, 0x98, 0x28, 0x4b, 0xde, 0x84, 0xd9, 0x10, 0x12, 0x4c, 0xb6, + 0x8b, 0xcc, 0x22, 0x95, 0x9e, 0xb3, 0x4b, 0x47, 0x87, 0xf5, 0xd9, 0xe5, 0x21, 0x34, 0x38, 0xb4, + 0x34, 0x9b, 0xc2, 0xce, 0x84, 0x48, 0xb1, 0x00, 0xca, 0x6e, 0x3d, 0xa6, 0x95, 0x95, 0x9b, 0xee, + 0xcb, 0x09, 0x11, 0x38, 0x20, 0x94, 0x2c, 0xc3, 0xa4, 0xef, 0x44, 0xda, 0x4b, 0xf8, 0xea, 0x34, + 0xe5, 0x6b, 0xda, 0x74, 0x86, 0xb6, 0x56, 0xac, 0x1c, 0x41, 0xb8, 0xa0, 0x9e, 0x13, 0x2d, 0x35, + 0xc1, 0x5b, 0xea, 0xe2, 0xd1, 0x61, 0xfd, 0xc2, 0x66, 0x2a, 0x05, 0x0e, 0x29, 0x49, 0x7e, 0x26, + 0x07, 0xd3, 0x0a, 0x25, 0xdb, 0xa8, 0x3c, 0xce, 0x36, 0x22, 0xac, 0x47, 0x6c, 0xc6, 0x04, 0x60, + 0x42, 0xa0, 0xd6, 0x84, 0xda, 0xa2, 0xd3, 0xed, 0xb9, 0xc2, 0x8f, 0x4a, 0x3e, 0x0f, 0x45, 0x9f, + 0x35, 0x93, 0xb0, 0x2c, 0xea, 0xaa, 0x0b, 0xca, 0xe6, 0x99, 0x89, 0x90, 0xf2, 0x36, 0xe2, 0xc4, + 0xda, 0x6f, 0x95, 0xa1, 0x1a, 0x2c, 0x63, 0xe4, 0x69, 0x28, 0x71, 0x4f, 0x94, 0xe4, 0x11, 0xe8, + 0x27, 0xdc, 0x61, 0x85, 0x02, 0x47, 0x9e, 0x81, 0xb2, 0xe1, 0x74, 0xbb, 0xba, 0xdd, 0xe6, 0xde, + 0xc5, 0xaa, 0x58, 0x14, 0x16, 0x05, 0x08, 0x15, 0x8e, 0x5c, 0x82, 0xa2, 0xee, 0x76, 0x84, 0xa3, + 0xaf, 0x2a, 0x26, 0x9b, 0x86, 0xdb, 0xf1, 0x90, 0x43, 0xc9, 0x97, 0xa0, 0x40, 0xed, 0xfd, 0xd9, + 0xe2, 0x70, 0xbd, 0xef, 0xaa, 0xbd, 0x7f, 0x4b, 0x77, 0x9b, 0x35, 0x59, 0x87, 0xc2, 0x55, 0x7b, + 0x1f, 0x59, 0x19, 0xb2, 0x0a, 0x65, 0x6a, 0xef, 0xb3, 0xfe, 0x23, 0x3d, 0x70, 0x3f, 0x31, 0xa4, + 0x38, 0x23, 0x91, 0x26, 0x50, 0xa0, 0x3d, 0x4a, 0x30, 0x2a, 0x16, 0xe4, 0x6b, 0x30, 0x29, 0x14, + 0xc9, 0x35, 0xf6, 0x5d, 0x85, 0xa3, 0xb7, 0xb6, 0x50, 0x1f, 0xae, 0x89, 0x72, 0xba, 0xd0, 0xe3, + 0x19, 0x01, 0x7a, 0x18, 0x63, 0x45, 0xbe, 0x06, 0x55, 0xe5, 0x20, 0x51, 0xbd, 0x23, 0xd5, 0x59, + 0xa8, 0xbc, 0x2a, 0x48, 0xef, 0xf4, 0x4d, 0x97, 0x76, 0xa9, 0xed, 0x7b, 0xcd, 0xb3, 0xca, 0x7d, + 0xa4, 0xb0, 0x1e, 0x86, 0xdc, 0xc8, 0xf6, 0xa0, 0xd7, 0x53, 0xb8, 0xec, 0x9e, 0x1e, 0x32, 0x65, + 0x8f, 0xe0, 0xf2, 0xfc, 0x26, 0xcc, 0x04, 0x6e, 0x49, 0xe9, 0xd9, 0x12, 0x4e, 0xbc, 0x2f, 0xb0, + 0xe2, 0x2b, 0x71, 0xd4, 0xfd, 0xc3, 0xfa, 0x53, 0x29, 0xbe, 0xad, 0x90, 0x00, 0x93, 0xcc, 0xc8, + 0xbb, 0x30, 0xed, 0x52, 0xbd, 0x6d, 0xda, 0xd4, 0xf3, 0x36, 0x5c, 0x67, 0x3b, 0xbb, 0x56, 0xcd, + 0xb9, 0x88, 0xa1, 0x83, 0x31, 0xce, 0x98, 0x90, 0x44, 0xee, 0xc2, 0x94, 0x65, 0xee, 0xd3, 0x50, + 0x74, 0x6d, 0x2c, 0xa2, 0xcf, 0x1e, 0x1d, 0xd6, 0xa7, 0x56, 0xa3, 0x8c, 0x31, 0x2e, 0x87, 0x69, + 0x46, 0x3d, 0xc7, 0xf5, 0x95, 0xea, 0xfd, 0x13, 0x0f, 0x54, 0xbd, 0x37, 0x1c, 0xd7, 0x0f, 0x07, + 0x21, 0x7b, 0xf2, 0x50, 0x14, 0xd7, 0xfe, 0x51, 0x09, 0x06, 0x0d, 0xd4, 0x78, 0x8f, 0xcb, 0x8d, + 0xbb, 0xc7, 0x25, 0x7b, 0x83, 0x58, 0xbf, 0x5e, 0x92, 0xc5, 0xc6, 0xd0, 0x23, 0x52, 0x7a, 0x75, + 0x61, 0xdc, 0xbd, 0xfa, 0x91, 0x99, 0x78, 0x06, 0xbb, 0xff, 0xc4, 0x47, 0xd7, 0xfd, 0xcb, 0xa7, + 0xd3, 0xfd, 0xb5, 0xef, 0x14, 0x61, 0x7a, 0x49, 0xa7, 0x5d, 0xc7, 0xfe, 0x50, 0x1f, 0x45, 0xee, + 0x91, 0xf0, 0x51, 0x3c, 0x0b, 0x15, 0x97, 0xf6, 0x2c, 0xd3, 0xd0, 0x85, 0x79, 0x20, 0xb7, 0x4f, + 0x50, 0xc2, 0x30, 0xc0, 0x0e, 0xf1, 0x4d, 0x15, 0x1e, 0x49, 0xdf, 0x54, 0xf1, 0xa3, 0xf7, 0x4d, + 0x69, 0x3f, 0x93, 0x07, 0xae, 0x1e, 0x93, 0x2b, 0x50, 0x64, 0xaa, 0x5f, 0xd2, 0x23, 0xca, 0x47, + 0x0b, 0xc7, 0x90, 0x8b, 0x90, 0xf7, 0x1d, 0x39, 0xdd, 0x80, 0xc4, 0xe7, 0x37, 0x1d, 0xcc, 0xfb, + 0x0e, 0x79, 0x17, 0xc0, 0x70, 0xec, 0xb6, 0xa9, 0x76, 0x15, 0xb3, 0xbd, 0xd8, 0xb2, 0xe3, 0xde, + 0xd5, 0xdd, 0xf6, 0x62, 0xc0, 0x51, 0x78, 0x27, 0xc2, 0x67, 0x8c, 0x48, 0x23, 0xaf, 0xc2, 0x84, + 0x63, 0x2f, 0xf7, 0x2d, 0x4b, 0x6e, 0x39, 0x7f, 0x86, 0x19, 0x6a, 0xeb, 0x1c, 0x72, 0xff, 0xb0, + 0xfe, 0xa4, 0x30, 0x77, 0xd8, 0xd3, 0x6d, 0xd7, 0xf4, 0x4d, 0xbb, 0x13, 0x18, 0xeb, 0xb2, 0x98, + 0xf6, 0x41, 0x0e, 0x6a, 0x57, 0xef, 0xe9, 0x86, 0x6f, 0x1d, 0xac, 0xdb, 0x06, 0xdf, 0x64, 0xa7, + 0xb6, 0xbe, 0x6d, 0xd1, 0x36, 0x6f, 0x8d, 0x4a, 0x74, 0xfa, 0xe0, 0x60, 0x54, 0x78, 0xf2, 0x32, + 0x4c, 0x19, 0x8e, 0xed, 0x99, 0x9e, 0x4f, 0x6d, 0xbf, 0x61, 0xec, 0xf1, 0xe6, 0xa9, 0x34, 0x1f, + 0x97, 0x05, 0xa6, 0x16, 0xa3, 0x48, 0x8c, 0xd3, 0x12, 0x1d, 0x6a, 0x6d, 0xda, 0xee, 0xf7, 0x84, + 0x5b, 0x40, 0xb6, 0xda, 0x49, 0x8d, 0x56, 0xbe, 0xa3, 0xbf, 0x14, 0xb2, 0xc1, 0x28, 0x4f, 0xed, + 0xaf, 0xe7, 0xa0, 0xb6, 0x6c, 0xde, 0xa3, 0x6d, 0xe9, 0x7a, 0x40, 0x98, 0xb0, 0xa8, 0xdd, 0xf1, + 0x77, 0x47, 0x34, 0xde, 0x85, 0x3b, 0x8e, 0x73, 0x40, 0xc9, 0x89, 0xcc, 0x43, 0x55, 0x98, 0x73, + 0xa6, 0xdd, 0x91, 0xef, 0x1f, 0x2c, 0x62, 0x2d, 0x85, 0xc0, 0x90, 0x46, 0x7b, 0x0f, 0xce, 0x0e, + 0x7c, 0x61, 0xb2, 0x0b, 0x45, 0x5f, 0xef, 0xa8, 0xf5, 0x72, 0x79, 0xe4, 0xbe, 0xb3, 0xa9, 0x77, + 0x22, 0xfd, 0x26, 0xe8, 0xc7, 0x9b, 0x3a, 0x53, 0x7a, 0x99, 0x04, 0xed, 0xb7, 0x8b, 0x30, 0x71, + 0xad, 0xd5, 0x6a, 0x6c, 0xac, 0x90, 0x17, 0xa0, 0x26, 0xb7, 0x3b, 0x6f, 0x86, 0xbb, 0x01, 0xc1, + 0x6e, 0x77, 0x2b, 0x44, 0x61, 0x94, 0x8e, 0x29, 0xe8, 0x2e, 0xd5, 0xad, 0xae, 0x1c, 0x0c, 0x81, + 0x6e, 0x80, 0x0c, 0x88, 0x02, 0x47, 0x74, 0x98, 0x66, 0x06, 0xbd, 0xad, 0x77, 0xa9, 0x30, 0xd6, + 0xe5, 0x07, 0x3e, 0xa6, 0x39, 0xcf, 0x17, 0x90, 0xad, 0x18, 0x03, 0x4c, 0x30, 0x24, 0x2f, 0x41, + 0x45, 0xef, 0xfb, 0xbb, 0xdc, 0x2c, 0x13, 0x7d, 0xff, 0x12, 0xdf, 0x0d, 0x96, 0xb0, 0xfb, 0x87, + 0xf5, 0xc9, 0x1b, 0xd8, 0x7c, 0x41, 0x3d, 0x63, 0x40, 0xcd, 0x2a, 0xa7, 0x1c, 0x04, 0xb2, 0x72, + 0xa5, 0x13, 0x57, 0x6e, 0x23, 0xc6, 0x00, 0x13, 0x0c, 0xc9, 0x5b, 0x30, 0xb9, 0x47, 0x0f, 0x7c, + 0x7d, 0x5b, 0x0a, 0x98, 0x38, 0x89, 0x80, 0x33, 0x4c, 0xa9, 0xbf, 0x11, 0x29, 0x8e, 0x31, 0x66, + 0xc4, 0x83, 0xf3, 0x7b, 0xd4, 0xdd, 0xa6, 0xae, 0x23, 0xf7, 0x56, 0xa5, 0x90, 0xf2, 0x49, 0x84, + 0xcc, 0x1e, 0x1d, 0xd6, 0xcf, 0xdf, 0x48, 0x61, 0x83, 0xa9, 0xcc, 0xb5, 0xff, 0x9d, 0x87, 0x99, + 0x6b, 0x22, 0x44, 0xc7, 0x71, 0x85, 0x66, 0x41, 0x9e, 0x84, 0x82, 0xdb, 0xeb, 0xf3, 0x9e, 0x53, + 0x10, 0x0e, 0x24, 0xdc, 0xd8, 0x42, 0x06, 0x23, 0x6f, 0x42, 0x45, 0x45, 0xc8, 0x48, 0x97, 0xca, + 0x48, 0xae, 0x32, 0xf5, 0x84, 0x01, 0x37, 0x66, 0xfb, 0x75, 0xbd, 0x4e, 0xcb, 0x7c, 0x97, 0x4a, + 0x2f, 0x03, 0xb7, 0xfd, 0xd6, 0x04, 0x08, 0x15, 0x8e, 0xad, 0x9a, 0x7b, 0xf4, 0x40, 0xd8, 0xd8, + 0xc5, 0x70, 0xd5, 0xbc, 0x21, 0x61, 0x18, 0x60, 0x49, 0x5d, 0xed, 0x05, 0xb3, 0x5e, 0x50, 0x14, + 0xbe, 0xb7, 0x5b, 0x0c, 0x20, 0xb7, 0x85, 0xd9, 0xbc, 0x21, 0x9d, 0x61, 0x13, 0xa3, 0xcf, 0x1b, + 0x71, 0xe7, 0x19, 0xf9, 0x1c, 0x54, 0x39, 0xf3, 0xa6, 0xe5, 0x6c, 0xf3, 0x0f, 0x57, 0x15, 0x9e, + 0xa2, 0x5b, 0x0a, 0x88, 0x21, 0x5e, 0xfb, 0xb3, 0x3c, 0x5c, 0xb8, 0x46, 0x7d, 0xa1, 0xb5, 0x2c, + 0xd1, 0x9e, 0xe5, 0x1c, 0x30, 0x7d, 0x19, 0xe9, 0x1d, 0xf2, 0x1a, 0x80, 0xe9, 0x6d, 0xb7, 0xf6, + 0x8d, 0xcd, 0xd0, 0xee, 0xbe, 0x22, 0x87, 0x24, 0xac, 0xb4, 0x9a, 0x12, 0x73, 0x3f, 0xf6, 0x84, + 0x91, 0x32, 0xa1, 0xc1, 0x9d, 0x7f, 0x80, 0xc1, 0xdd, 0x02, 0xe8, 0x85, 0x5a, 0x77, 0x81, 0x53, + 0x7e, 0x5e, 0x89, 0x39, 0x89, 0xc2, 0x1d, 0x61, 0x93, 0x45, 0x0f, 0xb6, 0xe1, 0x4c, 0x9b, 0xee, + 0xe8, 0x7d, 0xcb, 0x0f, 0x2c, 0x05, 0x39, 0x88, 0x8f, 0x6f, 0x6c, 0x04, 0xb1, 0x30, 0x4b, 0x09, + 0x4e, 0x38, 0xc0, 0x5b, 0xfb, 0x9d, 0x02, 0x5c, 0xbc, 0x46, 0xfd, 0xc0, 0x8f, 0x27, 0x67, 0xc7, + 0x56, 0x8f, 0x1a, 0xec, 0x2b, 0xbc, 0x9f, 0x83, 0x09, 0x4b, 0xdf, 0xa6, 0x16, 0x9b, 0xc2, 0xd9, + 0xdb, 0xbc, 0x3d, 0xf2, 0x14, 0x3e, 0x5c, 0xca, 0xdc, 0x2a, 0x97, 0x20, 0xc2, 0x9d, 0xa6, 0x65, + 0xe5, 0x27, 0x04, 0x10, 0xa5, 0x78, 0x36, 0xa9, 0x1b, 0x56, 0xdf, 0xf3, 0x85, 0xe5, 0x26, 0xf5, + 0xc5, 0x60, 0x52, 0x5f, 0x0c, 0x51, 0x18, 0xa5, 0x23, 0x0b, 0x00, 0x86, 0x65, 0x52, 0xdb, 0xe7, + 0xa5, 0xc4, 0xb8, 0x22, 0xea, 0xfb, 0x2e, 0x06, 0x18, 0x8c, 0x50, 0x31, 0x51, 0x5d, 0xc7, 0x36, + 0x7d, 0x47, 0x88, 0x2a, 0xc6, 0x45, 0xad, 0x85, 0x28, 0x8c, 0xd2, 0xf1, 0x62, 0xd4, 0x77, 0x4d, + 0xc3, 0xe3, 0xc5, 0x4a, 0x89, 0x62, 0x21, 0x0a, 0xa3, 0x74, 0x17, 0xbf, 0x04, 0xb5, 0xc8, 0xfb, + 0x9f, 0x28, 0xa4, 0xe3, 0xef, 0x55, 0xe1, 0x72, 0xac, 0x59, 0x7d, 0xdd, 0xa7, 0x3b, 0x7d, 0xab, + 0x45, 0x7d, 0xf5, 0x01, 0x47, 0x5c, 0x0b, 0xff, 0x6a, 0xf8, 0xdd, 0x45, 0x94, 0x9b, 0x31, 0x9e, + 0xef, 0x3e, 0x50, 0xc1, 0x63, 0x7d, 0xfb, 0x79, 0xa8, 0xda, 0xba, 0xef, 0xf1, 0x81, 0x2b, 0xc7, + 0x68, 0xa0, 0x8b, 0xdc, 0x54, 0x08, 0x0c, 0x69, 0xc8, 0x06, 0x9c, 0x97, 0x4d, 0x7c, 0xf5, 0x1e, + 0xb3, 0xe9, 0xa9, 0x2b, 0xca, 0xca, 0xe5, 0x54, 0x96, 0x3d, 0xbf, 0x96, 0x42, 0x83, 0xa9, 0x25, + 0xc9, 0x1a, 0x9c, 0x33, 0x44, 0xe4, 0x0f, 0xb5, 0x1c, 0xbd, 0xad, 0x18, 0x0a, 0xb7, 0x69, 0x60, + 0xfa, 0x2c, 0x0e, 0x92, 0x60, 0x5a, 0xb9, 0x64, 0x6f, 0x9e, 0x18, 0xa9, 0x37, 0x97, 0x47, 0xe9, + 0xcd, 0x95, 0xd1, 0x7a, 0x73, 0xf5, 0x78, 0xbd, 0x99, 0xb5, 0x3c, 0x0f, 0x32, 0x71, 0x99, 0x7a, + 0x22, 0x56, 0xd8, 0x48, 0x60, 0x59, 0xd0, 0xf2, 0xad, 0x14, 0x1a, 0x4c, 0x2d, 0x49, 0xb6, 0xe1, + 0xa2, 0x80, 0x5f, 0xb5, 0x0d, 0xf7, 0xa0, 0x27, 0x43, 0x53, 0x15, 0xdf, 0x5a, 0xcc, 0x6f, 0x7d, + 0xb1, 0x35, 0x94, 0x12, 0x1f, 0xc0, 0x45, 0x2a, 0xfc, 0x3b, 0x66, 0x67, 0x4d, 0xef, 0x71, 0xb6, + 0x22, 0xcc, 0x2c, 0xaa, 0xf0, 0x87, 0x48, 0x8c, 0xd3, 0x92, 0x06, 0xcc, 0xf4, 0xf6, 0x0d, 0xf6, + 0x77, 0x65, 0xe7, 0x26, 0xa5, 0x6d, 0xda, 0xe6, 0x9b, 0xb5, 0xd5, 0xe6, 0x13, 0xca, 0x7b, 0xb3, + 0x11, 0x47, 0x63, 0x92, 0x9e, 0xbc, 0x04, 0x93, 0x9e, 0xaf, 0xbb, 0xbe, 0x74, 0xf4, 0xce, 0x4e, + 0x8b, 0x30, 0x3c, 0xe5, 0x07, 0x6d, 0x45, 0x70, 0x18, 0xa3, 0x4c, 0x5d, 0x2f, 0x66, 0x1e, 0xde, + 0x7a, 0x91, 0x65, 0xb6, 0xfa, 0xe7, 0x79, 0xb8, 0x72, 0x8d, 0xfa, 0x6b, 0x8e, 0x2d, 0x5d, 0xed, + 0x69, 0xcb, 0xfe, 0xb1, 0xbc, 0xe4, 0xf1, 0x45, 0x3b, 0x3f, 0xd6, 0x45, 0xbb, 0x30, 0xa6, 0x45, + 0xbb, 0xf8, 0x10, 0x17, 0xed, 0x7f, 0x9c, 0x87, 0x27, 0x62, 0x2d, 0xb9, 0xe1, 0xb4, 0xd5, 0x84, + 0xff, 0x49, 0x03, 0x1e, 0xa3, 0x01, 0xff, 0xa0, 0x00, 0x4f, 0x5d, 0xa3, 0x22, 0xda, 0xd4, 0xee, + 0x6c, 0x98, 0x3d, 0x6a, 0x99, 0x36, 0x8d, 0xb0, 0x25, 0x7f, 0x39, 0x07, 0x93, 0x42, 0x97, 0x94, + 0x71, 0xa2, 0x59, 0x5d, 0x66, 0x29, 0xfb, 0xb3, 0xe1, 0x00, 0x17, 0x1a, 0xac, 0x5c, 0x3d, 0x62, + 0x72, 0x3f, 0xd1, 0x62, 0x8f, 0xf3, 0x3d, 0x7f, 0xb6, 0x00, 0x4f, 0xb2, 0xef, 0xa9, 0xa2, 0x47, + 0x3e, 0x31, 0x25, 0x3e, 0x82, 0x8f, 0xf0, 0x1b, 0x25, 0x38, 0x77, 0x8d, 0xfa, 0x03, 0x33, 0xd2, + 0xff, 0xa7, 0xcd, 0xbf, 0x06, 0xe7, 0xc2, 0x68, 0xa6, 0x96, 0xef, 0xb8, 0x42, 0x03, 0x4f, 0x68, + 0x8c, 0xad, 0x41, 0x12, 0x4c, 0x2b, 0x47, 0xbe, 0x06, 0x4f, 0x78, 0x62, 0xba, 0x12, 0x3e, 0x0a, + 0xa1, 0x50, 0x47, 0x8e, 0x2e, 0xa8, 0x4d, 0xe9, 0x27, 0x5a, 0xe9, 0x64, 0x38, 0xac, 0x3c, 0xf9, + 0x16, 0x4c, 0xf6, 0xe4, 0x14, 0xc8, 0xbe, 0x59, 0xe6, 0xcd, 0xf6, 0x8d, 0x08, 0xb3, 0x70, 0x8e, + 0x8b, 0x42, 0x31, 0x26, 0x30, 0xb5, 0xa7, 0x56, 0x1e, 0x62, 0x4f, 0xfd, 0x93, 0x3c, 0x94, 0xaf, + 0xb9, 0x4e, 0xbf, 0xd7, 0x3c, 0x20, 0x1d, 0x98, 0xb8, 0x2b, 0x3c, 0xb5, 0xb9, 0x8c, 0x11, 0xc1, + 0xc2, 0x19, 0x1b, 0x1a, 0x31, 0xd2, 0x73, 0x2b, 0xd9, 0xb3, 0x4e, 0xbc, 0x47, 0x0f, 0x68, 0x5b, + 0x3a, 0x53, 0x83, 0x4e, 0x7c, 0x83, 0x01, 0x51, 0xe0, 0x48, 0x17, 0x66, 0x74, 0xcb, 0x72, 0xee, + 0xd2, 0xf6, 0xaa, 0xee, 0xf3, 0xbd, 0x9d, 0x11, 0x1d, 0xc8, 0x7c, 0xc3, 0xae, 0x11, 0x67, 0x85, + 0x49, 0xde, 0xe4, 0x1d, 0x28, 0x7b, 0xbe, 0xe3, 0x2a, 0xd3, 0x28, 0x53, 0xb4, 0x76, 0xf3, 0x8d, + 0x96, 0x60, 0x25, 0xfc, 0x56, 0xf2, 0x01, 0x95, 0x00, 0xed, 0x57, 0x73, 0x00, 0xd7, 0x37, 0x37, + 0x37, 0xa4, 0x8b, 0xad, 0x0d, 0x45, 0xbd, 0x1f, 0x78, 0xac, 0x47, 0xf7, 0x0c, 0xc7, 0x82, 0xe3, + 0x64, 0x28, 0x44, 0xdf, 0xdf, 0x45, 0xce, 0x9d, 0x7c, 0x16, 0xca, 0xd2, 0xac, 0x95, 0xcd, 0x1e, + 0x38, 0xfd, 0xe5, 0x4a, 0x8c, 0x0a, 0xaf, 0xfd, 0x5a, 0x01, 0x60, 0xa5, 0x6d, 0xd1, 0x96, 0x0a, + 0xe2, 0xae, 0xfa, 0xbb, 0x2e, 0xf5, 0x76, 0x1d, 0xab, 0x3d, 0xa2, 0x5b, 0x9d, 0xfb, 0xbd, 0x36, + 0x15, 0x13, 0x0c, 0xf9, 0x91, 0x36, 0xd3, 0xf7, 0x69, 0x4f, 0xc5, 0xcb, 0x8d, 0xe8, 0x48, 0x3c, + 0x23, 0x6c, 0x83, 0x90, 0x0f, 0xc6, 0xb8, 0x12, 0x1d, 0x6a, 0xa6, 0x6d, 0x88, 0x01, 0xd2, 0x3c, + 0xc8, 0xb2, 0x13, 0xb1, 0x12, 0xb2, 0xc1, 0x28, 0x4f, 0xd6, 0x5f, 0x4d, 0xdb, 0xf4, 0x45, 0x9b, + 0x2d, 0x51, 0x4b, 0x3f, 0x18, 0x31, 0x4a, 0x8f, 0xf7, 0xd7, 0x95, 0x38, 0x2b, 0x4c, 0xf2, 0xd6, + 0xfe, 0x4a, 0x0e, 0x66, 0xf8, 0xeb, 0xb1, 0xb7, 0x16, 0x1a, 0x15, 0xb9, 0x0b, 0x35, 0x23, 0x0c, + 0xbf, 0x91, 0x4d, 0xb9, 0x94, 0x61, 0xfb, 0x2d, 0xe0, 0x25, 0xde, 0x3d, 0x02, 0xc0, 0xa8, 0x24, + 0xed, 0x8f, 0xf3, 0x70, 0x21, 0x51, 0x19, 0xd9, 0xa9, 0xc8, 0x5f, 0x1c, 0x38, 0x97, 0xf8, 0xe7, + 0x8f, 0xd7, 0x1e, 0xe2, 0x58, 0xdb, 0x1a, 0xf5, 0xf5, 0xd0, 0xae, 0x0f, 0x61, 0x91, 0xc3, 0x88, + 0x7d, 0x28, 0x7a, 0x6c, 0xae, 0x16, 0xaf, 0xdb, 0x1a, 0xf9, 0x75, 0xd3, 0x5f, 0x80, 0xcf, 0xdc, + 0xc1, 0x2e, 0x0b, 0x9f, 0xb1, 0xb9, 0x38, 0xf2, 0x1e, 0x4c, 0x78, 0xbe, 0xee, 0xf7, 0xd5, 0xb4, + 0xb4, 0x35, 0x6e, 0xc1, 0x9c, 0x79, 0x38, 0x87, 0x8a, 0x67, 0x94, 0x42, 0xb5, 0x3f, 0xce, 0xc1, + 0xc5, 0xf4, 0x82, 0xab, 0xa6, 0xe7, 0x93, 0xbf, 0x30, 0xd0, 0xec, 0xc7, 0xec, 0x86, 0xac, 0x34, + 0x6f, 0xf4, 0x20, 0x1e, 0x5b, 0x41, 0x22, 0x4d, 0xee, 0x43, 0xc9, 0xf4, 0x69, 0x57, 0x79, 0xc4, + 0xd6, 0xc7, 0xfc, 0xea, 0x11, 0xb5, 0x86, 0x49, 0x41, 0x21, 0x4c, 0xfb, 0x5b, 0x43, 0x5f, 0x99, + 0x2f, 0x9d, 0x7f, 0x69, 0x30, 0xc4, 0x73, 0x3d, 0x7b, 0x88, 0x67, 0xa2, 0x62, 0x43, 0x23, 0x3d, + 0x3f, 0x28, 0xc0, 0xa5, 0x07, 0x7d, 0x48, 0xb6, 0xba, 0xca, 0xfe, 0x92, 0x75, 0x75, 0x7d, 0x70, + 0xcf, 0x20, 0x0b, 0x50, 0xea, 0xed, 0xea, 0x9e, 0x52, 0x11, 0x2f, 0x05, 0x81, 0x3d, 0x0c, 0x78, + 0x9f, 0x4d, 0x61, 0x5c, 0xb5, 0xe4, 0x8f, 0x28, 0x48, 0xd9, 0xe2, 0xd0, 0xa5, 0x9e, 0x17, 0x3a, + 0x15, 0x83, 0xc5, 0x61, 0x4d, 0x80, 0x51, 0xe1, 0x89, 0x0f, 0x13, 0xc2, 0xe9, 0x23, 0xa7, 0xb7, + 0xf1, 0xda, 0x81, 0xc1, 0x4b, 0x49, 0x0b, 0x50, 0xca, 0x22, 0x73, 0x32, 0xea, 0xb0, 0x14, 0x3b, + 0xdf, 0x59, 0x4c, 0xd1, 0x96, 0x39, 0x1d, 0x79, 0x1d, 0x88, 0xb3, 0xcd, 0xdd, 0x5c, 0x6d, 0xb9, + 0xa3, 0xc5, 0x66, 0xc4, 0x09, 0xbe, 0x8b, 0x15, 0x9c, 0x0e, 0x5d, 0x1f, 0xa0, 0xc0, 0x94, 0x52, + 0xda, 0xbf, 0xaa, 0xc0, 0x85, 0xf4, 0xfe, 0xc0, 0xda, 0x6d, 0x9f, 0xba, 0x7c, 0xb6, 0x4d, 0x1c, + 0x57, 0xbf, 0x25, 0xc0, 0xa8, 0xf0, 0x1f, 0xeb, 0x10, 0x8f, 0xdf, 0xc8, 0xc1, 0x93, 0xae, 0xf4, + 0xda, 0x9e, 0x46, 0x98, 0xc7, 0x53, 0x47, 0x87, 0xf5, 0x27, 0x71, 0x98, 0x40, 0x1c, 0x5e, 0x17, + 0xf2, 0xeb, 0x39, 0x98, 0x95, 0x4e, 0xd8, 0xc5, 0x53, 0x38, 0xc1, 0xc5, 0xa3, 0x9f, 0xd7, 0x86, + 0xc8, 0xc3, 0xa1, 0x35, 0x21, 0xdf, 0x82, 0x5a, 0x8f, 0xf5, 0x0b, 0xcf, 0xa7, 0xb6, 0xa1, 0x42, + 0xb2, 0x46, 0x1f, 0x49, 0x1b, 0x21, 0xaf, 0xe0, 0x04, 0x07, 0x5f, 0xb1, 0x23, 0x08, 0x8c, 0x4a, + 0x7c, 0xc4, 0x8f, 0x6c, 0x3d, 0x0b, 0x15, 0x8f, 0xfa, 0xbe, 0x69, 0x77, 0x84, 0xf5, 0x53, 0x15, + 0x63, 0xa5, 0x25, 0x61, 0x18, 0x60, 0xc9, 0xe7, 0xa0, 0xca, 0x9d, 0xc0, 0x0d, 0xb7, 0xe3, 0xcd, + 0x56, 0x79, 0x0c, 0xf0, 0x94, 0x88, 0xcb, 0x90, 0x40, 0x0c, 0xf1, 0xe4, 0x0b, 0x30, 0xb9, 0xcd, + 0x87, 0xaf, 0x74, 0x64, 0x09, 0x4f, 0x3c, 0xd7, 0x1d, 0x9b, 0x11, 0x38, 0xc6, 0xa8, 0xc8, 0x02, + 0x00, 0x0d, 0x3c, 0xe5, 0xf2, 0x20, 0x77, 0xa0, 0x91, 0x84, 0x3e, 0x74, 0x8c, 0x50, 0x91, 0xa7, + 0xa0, 0xe0, 0x5b, 0x1e, 0xf7, 0x9d, 0x57, 0x42, 0x83, 0x78, 0x73, 0xb5, 0x85, 0x0c, 0xae, 0xfd, + 0x59, 0x0e, 0x66, 0x12, 0x87, 0x08, 0x58, 0x91, 0xbe, 0x6b, 0xc9, 0x69, 0x24, 0x28, 0xb2, 0x85, + 0xab, 0xc8, 0xe0, 0xe4, 0x6d, 0x69, 0x24, 0xe4, 0x33, 0xe6, 0x76, 0xb8, 0xa9, 0xfb, 0x1e, 0xb3, + 0x0a, 0x06, 0xec, 0x03, 0xee, 0x78, 0x0f, 0xeb, 0x23, 0xd7, 0x81, 0x88, 0xe3, 0x3d, 0xc4, 0x61, + 0x8c, 0x92, 0x35, 0x90, 0x6f, 0x79, 0x32, 0x74, 0x88, 0xcf, 0x06, 0x91, 0x06, 0xda, 0x5c, 0x6d, + 0xa9, 0xa0, 0xa2, 0x08, 0x95, 0xf6, 0xbd, 0x42, 0xa4, 0x05, 0xa4, 0x9d, 0xf1, 0x21, 0x2d, 0xf0, + 0x69, 0xb6, 0x80, 0x06, 0x8b, 0x7b, 0x35, 0xba, 0xfe, 0xf1, 0xc5, 0x58, 0x62, 0xc9, 0x73, 0x50, + 0x31, 0x1c, 0xdb, 0xeb, 0x77, 0xa9, 0x2b, 0x5f, 0x22, 0x50, 0x65, 0x16, 0x25, 0x1c, 0x03, 0x0a, + 0xf2, 0x15, 0x98, 0x6e, 0x53, 0xcb, 0xdc, 0xa7, 0xee, 0xdb, 0x32, 0x57, 0x47, 0x31, 0xbe, 0xe1, + 0xb1, 0x24, 0xb0, 0xd2, 0x23, 0x32, 0xd5, 0x8e, 0x3e, 0x92, 0x97, 0x61, 0x66, 0xc7, 0xb4, 0x7c, + 0xea, 0xbe, 0xed, 0xf5, 0xb9, 0x6e, 0x2a, 0xd2, 0x35, 0x54, 0x45, 0x00, 0xc9, 0x32, 0x47, 0xb5, + 0x24, 0x06, 0xa7, 0x77, 0x62, 0xcf, 0xe4, 0xb6, 0xe8, 0x24, 0x13, 0x19, 0xcf, 0xaf, 0x6e, 0xae, + 0xb6, 0x44, 0x60, 0x86, 0xea, 0x5e, 0x41, 0x5f, 0x29, 0x3f, 0xa4, 0xbe, 0xa2, 0xfd, 0x8b, 0x02, + 0xd4, 0x5e, 0x77, 0xb6, 0x3f, 0x26, 0xc1, 0x95, 0xe9, 0xeb, 0x69, 0xfe, 0x23, 0x5c, 0x4f, 0xb7, + 0xe0, 0x09, 0xdf, 0xb7, 0x64, 0x5a, 0x99, 0xc6, 0x8e, 0x4f, 0xdd, 0x65, 0xd3, 0x36, 0xbd, 0x5d, + 0xda, 0x96, 0xfb, 0xf2, 0x9f, 0x3a, 0x3a, 0xac, 0x3f, 0xb1, 0xb9, 0xb9, 0x9a, 0x46, 0x82, 0xc3, + 0xca, 0xf2, 0xf9, 0x4d, 0x1c, 0x63, 0xe3, 0x47, 0x37, 0xe4, 0x76, 0xbd, 0x98, 0xdf, 0x22, 0x70, + 0x8c, 0x51, 0x69, 0xff, 0x3e, 0x0f, 0xd5, 0x20, 0xbd, 0x00, 0x79, 0x06, 0xca, 0xdb, 0xae, 0xb3, + 0x47, 0x5d, 0x11, 0xe6, 0x20, 0x8f, 0x5d, 0x34, 0x05, 0x08, 0x15, 0x8e, 0x3c, 0x0d, 0x25, 0xdf, + 0xe9, 0x99, 0x46, 0xd2, 0x0f, 0xb9, 0xc9, 0x80, 0x28, 0x70, 0x7c, 0xc4, 0xf2, 0x88, 0x24, 0xfe, + 0x56, 0x95, 0xc8, 0x88, 0xe5, 0x50, 0x94, 0x58, 0x35, 0x10, 0x8a, 0x63, 0x1f, 0x08, 0x9f, 0x0e, + 0x74, 0xd5, 0x52, 0x7c, 0xca, 0x48, 0x68, 0x97, 0x6f, 0x41, 0xd1, 0xd3, 0x3d, 0x4b, 0x0e, 0xc5, + 0x0c, 0xc7, 0xd4, 0x1b, 0xad, 0x55, 0x79, 0x4c, 0xbd, 0xd1, 0x5a, 0x45, 0xce, 0x54, 0xfb, 0x07, + 0x05, 0xa8, 0x89, 0xf6, 0x15, 0xd3, 0xdc, 0x38, 0x5b, 0xf8, 0x55, 0x11, 0x9e, 0xc9, 0x66, 0x32, + 0xee, 0xc5, 0x93, 0x13, 0x5e, 0x90, 0xbb, 0x65, 0x31, 0x8a, 0x0c, 0x76, 0x6c, 0x43, 0xd0, 0x8f, + 0x77, 0xd3, 0xb3, 0x35, 0x8d, 0xa7, 0xc8, 0x90, 0xca, 0xb8, 0x0c, 0xc2, 0x0a, 0xd6, 0xb4, 0x1b, + 0x11, 0x1c, 0xc6, 0x28, 0xb5, 0xff, 0x9e, 0x87, 0xea, 0xaa, 0xb9, 0x43, 0x8d, 0x03, 0xc3, 0xa2, + 0xe4, 0x9b, 0x70, 0xb1, 0x4d, 0x2d, 0xca, 0x96, 0xf6, 0x6b, 0xae, 0x6e, 0xd0, 0x0d, 0xea, 0x9a, + 0x3c, 0xc5, 0x0f, 0x4f, 0x21, 0x25, 0x62, 0xe3, 0x2e, 0x1f, 0x1d, 0xd6, 0x2f, 0x2e, 0x0d, 0xa5, + 0xc2, 0x07, 0x70, 0x20, 0x2b, 0x30, 0xd9, 0xa6, 0x9e, 0xe9, 0xd2, 0xf6, 0x46, 0xc4, 0x72, 0x7b, + 0x46, 0xd5, 0x73, 0x29, 0x82, 0xbb, 0x7f, 0x58, 0x9f, 0x52, 0xfe, 0x63, 0x61, 0xc2, 0xc5, 0x8a, + 0xb2, 0xa9, 0xa5, 0xa7, 0xf7, 0x3d, 0x9a, 0x52, 0xcf, 0x02, 0xaf, 0x27, 0x9f, 0x5a, 0x36, 0xd2, + 0x49, 0x70, 0x58, 0x59, 0xb2, 0x0d, 0xb3, 0xbc, 0xfe, 0x69, 0x7c, 0x8b, 0x9c, 0xef, 0xa7, 0x8f, + 0x0e, 0xeb, 0xda, 0x12, 0xed, 0xb9, 0xd4, 0xd0, 0x7d, 0xda, 0x5e, 0x1a, 0x42, 0x8d, 0x43, 0xf9, + 0x68, 0x25, 0x28, 0xac, 0x3a, 0x1d, 0xed, 0x3b, 0x05, 0x08, 0x72, 0x4e, 0x91, 0x5f, 0xc8, 0x41, + 0x4d, 0xb7, 0x6d, 0xc7, 0x97, 0xf9, 0x9c, 0x44, 0xe8, 0x15, 0x66, 0x4e, 0x6d, 0x35, 0xd7, 0x08, + 0x99, 0x8a, 0x88, 0x9b, 0x20, 0xa0, 0x23, 0x82, 0xc1, 0xa8, 0x6c, 0xd2, 0x4f, 0x04, 0x02, 0xad, + 0x65, 0xaf, 0xc5, 0x31, 0x42, 0x7e, 0x2e, 0x7e, 0x15, 0xce, 0x24, 0x2b, 0x7b, 0x92, 0x60, 0x83, + 0x2c, 0x71, 0x0a, 0x3f, 0xc8, 0x03, 0x84, 0x5b, 0xeb, 0xa7, 0xe0, 0xcb, 0x33, 0x63, 0xbe, 0xbc, + 0xd1, 0x4f, 0xb3, 0x87, 0x95, 0x1e, 0xea, 0xbf, 0xbb, 0x93, 0xf0, 0xdf, 0xad, 0x8c, 0x43, 0xd8, + 0x83, 0x7d, 0x76, 0xdb, 0x70, 0x2e, 0xa4, 0x0d, 0x67, 0x97, 0x1b, 0x89, 0xd1, 0x2f, 0x14, 0xe0, + 0xcf, 0x0c, 0x19, 0xfd, 0x33, 0x91, 0x58, 0x87, 0xc1, 0xf1, 0xaf, 0x7d, 0x37, 0x0f, 0x67, 0xa2, + 0x42, 0xf8, 0x11, 0xd7, 0x2f, 0xc2, 0x94, 0x4b, 0xf5, 0x76, 0x53, 0xf7, 0x8d, 0x5d, 0x1e, 0x55, + 0x9b, 0xe3, 0x61, 0xb0, 0xfc, 0x20, 0x0d, 0x46, 0x11, 0x18, 0xa7, 0x23, 0x3a, 0xd4, 0x18, 0x40, + 0x1e, 0xc5, 0x1f, 0xd1, 0x39, 0xcf, 0x2d, 0x51, 0x0c, 0xd9, 0x60, 0x94, 0x27, 0x71, 0xa0, 0xca, + 0x2c, 0x56, 0xa1, 0xb1, 0x64, 0xcd, 0x5e, 0x84, 0x8a, 0x93, 0xb0, 0x02, 0x83, 0x47, 0x0c, 0x65, + 0x68, 0x1f, 0xe4, 0x60, 0x3a, 0xda, 0x42, 0x0f, 0xdd, 0x5b, 0xba, 0x1b, 0xf7, 0x96, 0x2e, 0x8e, + 0xa1, 0xa3, 0x0d, 0xf1, 0x90, 0xfe, 0x51, 0x2d, 0xfa, 0x6a, 0xdc, 0x2b, 0x1a, 0x75, 0x3b, 0xe5, + 0x1e, 0xe8, 0x76, 0xfa, 0x24, 0x21, 0xd0, 0xd0, 0x84, 0x40, 0xc3, 0xec, 0x9b, 0xd2, 0x23, 0x6c, + 0xdf, 0x4c, 0x7c, 0x84, 0xf6, 0x4d, 0x24, 0xe5, 0x4e, 0x39, 0x43, 0xca, 0x9d, 0x6e, 0x90, 0x72, + 0xa7, 0x32, 0xb6, 0x29, 0xfa, 0x38, 0x69, 0x77, 0xaa, 0xa7, 0x9a, 0x76, 0x07, 0x1e, 0x56, 0xda, + 0x9d, 0x5a, 0xd6, 0xb4, 0x3b, 0x3f, 0x97, 0x83, 0xe9, 0x76, 0xec, 0x18, 0x25, 0xf7, 0x68, 0x65, + 0x59, 0x98, 0xe3, 0xa7, 0x32, 0x85, 0x9b, 0x24, 0x0e, 0xc3, 0x84, 0xc8, 0xb4, 0x64, 0x37, 0x53, + 0x1f, 0x49, 0xb2, 0x1b, 0xf2, 0x1e, 0x54, 0x2d, 0xb5, 0x6a, 0xf3, 0xc0, 0xd4, 0x2c, 0x63, 0x3f, + 0x45, 0x13, 0x08, 0x43, 0xb9, 0x03, 0x10, 0x86, 0x12, 0xb5, 0xff, 0x55, 0x8e, 0x2e, 0xed, 0xa7, + 0xbd, 0xad, 0xf4, 0x62, 0x7c, 0x5b, 0xe9, 0x4a, 0x72, 0x5b, 0x69, 0x40, 0x2f, 0x91, 0x5b, 0x4b, + 0xcf, 0x45, 0x16, 0xa0, 0x02, 0xcf, 0x7c, 0x13, 0x74, 0xb9, 0x94, 0x45, 0xa8, 0x01, 0x33, 0x52, + 0x9d, 0x51, 0x48, 0x3e, 0x9d, 0x4f, 0x85, 0x11, 0xc4, 0x4b, 0x71, 0x34, 0x26, 0xe9, 0x99, 0x40, + 0x4f, 0xe5, 0xa5, 0x2d, 0xc5, 0xfd, 0x7f, 0x41, 0xce, 0xd8, 0x80, 0x82, 0xd9, 0xa9, 0x2e, 0xd5, + 0x3d, 0xb9, 0x39, 0x14, 0xb1, 0x53, 0x91, 0x43, 0x51, 0x62, 0xa3, 0x3b, 0x64, 0xe5, 0x0f, 0xd9, + 0x21, 0xd3, 0xa1, 0x66, 0xe9, 0x9e, 0x2f, 0x3a, 0x53, 0x5b, 0xce, 0x5d, 0x7f, 0xee, 0x78, 0x0a, + 0x05, 0xd3, 0x8a, 0x42, 0x53, 0x64, 0x35, 0x64, 0x83, 0x51, 0x9e, 0xa4, 0x0d, 0x93, 0xec, 0x91, + 0xcf, 0x2c, 0xed, 0x86, 0x2f, 0x67, 0xac, 0x93, 0xc8, 0x08, 0x8c, 0xe0, 0xd5, 0x08, 0x1f, 0x8c, + 0x71, 0x1d, 0xb2, 0x89, 0x06, 0xa3, 0x6c, 0xa2, 0x91, 0x97, 0x85, 0x0a, 0x7a, 0x10, 0x7c, 0xd6, + 0x1a, 0xff, 0xac, 0x81, 0x9b, 0x15, 0xa3, 0x48, 0x8c, 0xd3, 0xb2, 0x5e, 0xd1, 0x97, 0xcd, 0xa0, + 0x8a, 0x4f, 0xc6, 0x7b, 0xc5, 0x56, 0x1c, 0x8d, 0x49, 0x7a, 0xb2, 0x01, 0xe7, 0x03, 0x50, 0xb4, + 0x1a, 0x53, 0x9c, 0x4f, 0x10, 0x8d, 0xbf, 0x95, 0x42, 0x83, 0xa9, 0x25, 0xf9, 0xc1, 0x85, 0xbe, + 0xeb, 0x52, 0xdb, 0xbf, 0xae, 0x7b, 0xbb, 0x32, 0x50, 0x3d, 0x3c, 0xb8, 0x10, 0xa2, 0x30, 0x4a, + 0x47, 0x16, 0x00, 0x04, 0x3b, 0x5e, 0x6a, 0x86, 0x97, 0x0a, 0x8c, 0xa2, 0xad, 0x00, 0x83, 0x11, + 0x2a, 0xed, 0xff, 0xe6, 0xa0, 0xa2, 0x9c, 0xb1, 0x6c, 0x99, 0xda, 0xd6, 0x3d, 0xd3, 0x90, 0x03, + 0x3e, 0x43, 0xaa, 0x4f, 0x95, 0xd8, 0x49, 0x9c, 0x87, 0xe3, 0x8f, 0x28, 0x78, 0x87, 0xa9, 0xb5, + 0xf2, 0x99, 0x52, 0x6b, 0x91, 0x45, 0x28, 0xda, 0x7b, 0xf4, 0xe0, 0x64, 0x47, 0x43, 0xb9, 0x5e, + 0x77, 0xf3, 0x06, 0x3d, 0x40, 0x5e, 0x58, 0xfb, 0xad, 0x3c, 0x00, 0x7b, 0xfd, 0xe3, 0xed, 0x13, + 0x7c, 0x16, 0xca, 0xd2, 0x19, 0xaf, 0x72, 0x82, 0x07, 0x81, 0x4e, 0x02, 0x8c, 0x0a, 0x4f, 0x9e, + 0x86, 0xd2, 0x9d, 0x3e, 0xed, 0xab, 0x4d, 0xef, 0x60, 0xc5, 0x7e, 0x83, 0x01, 0x51, 0xe0, 0x1e, + 0x9e, 0x8b, 0x4c, 0xb9, 0xe9, 0x4b, 0x0f, 0xcb, 0x4d, 0x5f, 0x85, 0xf2, 0x4d, 0x87, 0xc7, 0x4d, + 0x6a, 0xff, 0x2d, 0x0f, 0x10, 0xc6, 0xa5, 0x91, 0x5f, 0xcd, 0xc1, 0xe3, 0xc1, 0x76, 0xa0, 0x2f, + 0x14, 0x2f, 0x9e, 0x5d, 0x37, 0xb3, 0xcb, 0x3e, 0x6d, 0x2b, 0x92, 0x9f, 0xda, 0xdf, 0x48, 0x13, + 0x87, 0xe9, 0xb5, 0x20, 0x08, 0x15, 0xda, 0xed, 0xf9, 0x07, 0x4b, 0xa6, 0x2b, 0x7b, 0x60, 0x6a, + 0xf8, 0xe3, 0x55, 0x49, 0x23, 0x8a, 0x4a, 0xb3, 0x83, 0xdb, 0x37, 0x0a, 0x83, 0x01, 0x1f, 0xb2, + 0x0b, 0x15, 0xdb, 0x79, 0xdb, 0x63, 0xcd, 0x21, 0xbb, 0xe3, 0xe8, 0x09, 0x5f, 0x65, 0xb3, 0x0a, + 0xd7, 0xad, 0x7c, 0xc0, 0xb2, 0x2d, 0x1b, 0xfb, 0x57, 0xf2, 0x70, 0x2e, 0xa5, 0x1d, 0xc8, 0x6b, + 0x70, 0x46, 0x86, 0x00, 0x86, 0x69, 0xa6, 0x73, 0x61, 0x9a, 0xe9, 0x56, 0x02, 0x87, 0x03, 0xd4, + 0xe4, 0x6d, 0x00, 0xdd, 0x30, 0xa8, 0xe7, 0xad, 0x39, 0x6d, 0xb5, 0x12, 0xbf, 0xca, 0x26, 0x8e, + 0x46, 0x00, 0xbd, 0x7f, 0x58, 0xff, 0xa9, 0xb4, 0xa8, 0xde, 0x44, 0x3b, 0x87, 0x05, 0x30, 0xc2, + 0x92, 0x7c, 0x13, 0x40, 0x68, 0xdf, 0xc1, 0xe1, 0xdb, 0x0f, 0xb1, 0x85, 0xe7, 0x54, 0xee, 0x96, + 0xb9, 0x37, 0xfa, 0xba, 0xed, 0x9b, 0xfe, 0x81, 0xc8, 0x65, 0x70, 0x2b, 0xe0, 0x82, 0x11, 0x8e, + 0xda, 0xef, 0xe5, 0xa1, 0xa2, 0xdc, 0x97, 0xa7, 0xe0, 0x4f, 0xea, 0xc4, 0xfc, 0x49, 0x63, 0x8a, + 0xe3, 0x4d, 0xf3, 0x26, 0x39, 0x09, 0x6f, 0xd2, 0xb5, 0xec, 0xa2, 0x1e, 0xec, 0x4b, 0xfa, 0xbb, + 0x05, 0x98, 0x56, 0xa4, 0x59, 0xbd, 0x3c, 0xaf, 0xc0, 0x8c, 0xd8, 0xf1, 0x5e, 0xd3, 0xef, 0x89, + 0xdc, 0x07, 0xbc, 0xc1, 0x8a, 0x22, 0x14, 0xb1, 0x19, 0x47, 0x61, 0x92, 0x96, 0x75, 0x6b, 0x01, + 0xda, 0x62, 0xea, 0x4f, 0xe8, 0xc8, 0x99, 0x12, 0xdd, 0xba, 0x99, 0xc0, 0xe1, 0x00, 0x75, 0xd2, + 0xcd, 0x54, 0x7c, 0xd8, 0x6e, 0xa6, 0xd2, 0x29, 0xb8, 0x99, 0xfe, 0x75, 0x0e, 0x26, 0xc3, 0x0f, + 0xf4, 0xd0, 0x9d, 0x4c, 0x3b, 0x71, 0x27, 0x53, 0x23, 0x73, 0xff, 0x1b, 0xe2, 0x62, 0xfa, 0xa5, + 0x2a, 0xc4, 0xe2, 0xd7, 0xc9, 0x36, 0x5c, 0x34, 0x53, 0xe3, 0xde, 0x22, 0xd3, 0x5b, 0x70, 0x28, + 0x71, 0x65, 0x28, 0x25, 0x3e, 0x80, 0x0b, 0xe9, 0x43, 0x65, 0x9f, 0xba, 0xbe, 0x69, 0x50, 0xf5, + 0x7e, 0xd7, 0x32, 0xfb, 0x5c, 0xa4, 0x23, 0x2d, 0x68, 0xd3, 0x5b, 0x52, 0x00, 0x06, 0xa2, 0xc8, + 0x36, 0x94, 0x68, 0xbb, 0x43, 0xd5, 0x2d, 0x12, 0x19, 0xb3, 0x35, 0x06, 0xed, 0xc9, 0x9e, 0x3c, + 0x14, 0xac, 0x89, 0x17, 0xb5, 0x29, 0x8b, 0x19, 0xfb, 0xe5, 0x31, 0x2d, 0x49, 0xb2, 0x17, 0x38, + 0x56, 0x4a, 0x63, 0x9a, 0xad, 0x1e, 0xe0, 0x56, 0xf1, 0xa0, 0x7a, 0x57, 0xf7, 0xa9, 0xdb, 0xd5, + 0xdd, 0x3d, 0xe9, 0x95, 0x1a, 0xfd, 0x0d, 0x6f, 0x2b, 0x4e, 0xe1, 0x1b, 0x06, 0x20, 0x0c, 0xe5, + 0xb0, 0xe1, 0xee, 0x4b, 0x07, 0x82, 0x4a, 0x8a, 0x37, 0xba, 0x50, 0xe5, 0x8a, 0xf0, 0x64, 0x1c, + 0xbb, 0x7a, 0xc4, 0x50, 0x06, 0xd9, 0x8f, 0xa5, 0x1c, 0x16, 0x89, 0xa6, 0x33, 0xe4, 0xac, 0x57, + 0xac, 0xc2, 0xf5, 0x6d, 0x48, 0xea, 0xe2, 0xf7, 0x73, 0x30, 0x93, 0x18, 0x39, 0xd2, 0x1a, 0xbc, + 0x3e, 0xae, 0xa8, 0x5c, 0x15, 0x91, 0x1e, 0x03, 0x62, 0x52, 0x2a, 0xb9, 0x0b, 0x35, 0x1a, 0x26, + 0x19, 0x92, 0x59, 0xf6, 0x46, 0x8f, 0x3e, 0x8f, 0x24, 0x2c, 0x12, 0x53, 0x7b, 0x04, 0x80, 0x51, + 0x49, 0xda, 0xff, 0x28, 0x85, 0x4b, 0xe1, 0x69, 0x7b, 0x45, 0xbe, 0x10, 0xf7, 0x8a, 0x5c, 0x4e, + 0x7a, 0x45, 0x12, 0x7b, 0xb5, 0x27, 0x0f, 0xb7, 0x4d, 0x38, 0x13, 0x8a, 0x0f, 0xc1, 0x99, 0xf0, + 0x3c, 0xd4, 0xf6, 0xf9, 0x64, 0x28, 0x32, 0xa9, 0x94, 0xf8, 0xd2, 0xcd, 0x9b, 0xfc, 0x56, 0x08, + 0xc6, 0x28, 0x0d, 0xbf, 0x7b, 0x49, 0x5c, 0xc9, 0x11, 0x24, 0x38, 0x95, 0x45, 0x5a, 0x21, 0x18, + 0xa3, 0x34, 0x3c, 0x52, 0xcf, 0xb4, 0xf7, 0x44, 0x81, 0x32, 0x2f, 0x20, 0x22, 0xf5, 0x14, 0x10, + 0x43, 0x3c, 0x79, 0x16, 0x2a, 0xfd, 0xf6, 0x8e, 0xa0, 0xad, 0x70, 0x5a, 0xae, 0xd5, 0x6f, 0x2d, + 0x2d, 0xcb, 0xcc, 0x2e, 0x0a, 0xcb, 0x6a, 0xd2, 0xd5, 0x7b, 0x0a, 0xc1, 0xbb, 0xbe, 0xac, 0xc9, + 0x5a, 0x08, 0xc6, 0x28, 0x0d, 0xf9, 0x32, 0x4c, 0xbb, 0xb4, 0xdd, 0x37, 0x68, 0x50, 0x0a, 0x78, + 0x29, 0x99, 0xd2, 0x2e, 0x8a, 0xc1, 0x04, 0xe5, 0x10, 0x97, 0x48, 0x6d, 0x24, 0x97, 0xc8, 0x57, + 0x61, 0xba, 0xed, 0xea, 0xa6, 0x4d, 0xdb, 0xeb, 0x36, 0xdf, 0x90, 0x97, 0xf1, 0x82, 0x81, 0x3b, + 0x72, 0x29, 0x86, 0xc5, 0x04, 0xb5, 0xb6, 0x0c, 0x22, 0x59, 0x23, 0xa9, 0x43, 0x69, 0xd7, 0xf7, + 0x7b, 0x6a, 0x83, 0x87, 0x5b, 0xe1, 0xfc, 0x7c, 0x11, 0x0a, 0x38, 0xb9, 0x04, 0x45, 0xf6, 0x47, + 0xc6, 0x1d, 0x73, 0x33, 0x91, 0xe1, 0x91, 0x43, 0xb5, 0xdf, 0xcf, 0x43, 0x49, 0x24, 0xec, 0x5b, + 0x81, 0x73, 0xa6, 0x6d, 0xfa, 0xa6, 0x6e, 0xf1, 0x43, 0x26, 0xd1, 0x00, 0x87, 0x52, 0xf3, 0x89, + 0xa3, 0xc3, 0xfa, 0xb9, 0x95, 0x41, 0x34, 0xa6, 0x95, 0x61, 0x8d, 0x2c, 0xf3, 0x76, 0x2b, 0x2e, + 0x42, 0xb8, 0xc8, 0x38, 0x1b, 0xc3, 0x60, 0x82, 0x92, 0x29, 0xb2, 0xbd, 0x81, 0xc8, 0x85, 0x92, + 0x50, 0x64, 0xe3, 0xc1, 0x04, 0x71, 0x3a, 0x6e, 0x60, 0xf5, 0xb9, 0x31, 0x13, 0x9c, 0x35, 0x92, + 0x41, 0x50, 0xc2, 0xc0, 0x4a, 0xe0, 0x70, 0x80, 0x9a, 0x71, 0xd8, 0xd1, 0x4d, 0xab, 0xef, 0xd2, + 0x90, 0x43, 0x29, 0xe4, 0xb0, 0x9c, 0xc0, 0xe1, 0x00, 0xb5, 0xf6, 0xfb, 0x39, 0x00, 0x71, 0x3f, + 0x07, 0xf7, 0xd6, 0x8c, 0x29, 0x47, 0x39, 0xe9, 0x43, 0x75, 0x5b, 0xf9, 0x6b, 0x32, 0x27, 0xb0, + 0x16, 0xf5, 0x0b, 0xfd, 0x3f, 0xe2, 0xaa, 0x17, 0xf5, 0x88, 0xa1, 0x24, 0xed, 0x1f, 0xe6, 0x60, + 0x26, 0x41, 0x4d, 0xd6, 0xa1, 0xa2, 0xf2, 0x74, 0x9d, 0xec, 0xad, 0xc4, 0x18, 0x96, 0x45, 0x31, + 0x60, 0x32, 0xfe, 0x94, 0xe0, 0x3f, 0x9b, 0x57, 0xdf, 0x80, 0xc7, 0xb4, 0x2d, 0x00, 0xc8, 0x7c, + 0x1a, 0xed, 0xb6, 0x2b, 0x55, 0xd2, 0x70, 0x5d, 0x0d, 0x30, 0x18, 0xa1, 0x3a, 0x5e, 0xf8, 0xd5, + 0x4b, 0x30, 0xd9, 0x73, 0x1d, 0x36, 0x41, 0xb8, 0x5c, 0xdb, 0x4d, 0xc4, 0xcc, 0x6e, 0x44, 0x70, + 0x18, 0xa3, 0x24, 0xba, 0xf4, 0xfd, 0x4c, 0x8c, 0xe5, 0x66, 0x98, 0x54, 0xef, 0xcf, 0x9f, 0xe6, + 0x61, 0x52, 0x36, 0x82, 0xf0, 0x9b, 0x3d, 0xcc, 0x66, 0x50, 0x51, 0x65, 0x69, 0xcd, 0xb0, 0x18, + 0xc1, 0x61, 0x8c, 0x92, 0x2c, 0xb1, 0x01, 0xbb, 0xed, 0x19, 0xae, 0xc9, 0xe3, 0xa6, 0x79, 0x69, + 0x11, 0x7f, 0x1b, 0x1c, 0x62, 0x6d, 0x25, 0xf0, 0x38, 0x50, 0x82, 0x3c, 0x07, 0x95, 0xae, 0x7e, + 0x6f, 0xcb, 0xd6, 0x8d, 0x3d, 0xb9, 0x7a, 0x05, 0x5a, 0xfd, 0x9a, 0x84, 0x63, 0x40, 0x71, 0x1a, + 0x4d, 0xff, 0xdd, 0x22, 0x84, 0x46, 0x21, 0x79, 0x12, 0x0a, 0x5d, 0xfd, 0x9e, 0xb4, 0xc6, 0xb9, + 0x0b, 0x70, 0x4d, 0xbf, 0x87, 0x0c, 0xc6, 0x51, 0xa6, 0x2d, 0xad, 0x6d, 0x81, 0x32, 0x6d, 0x64, + 0x30, 0xf2, 0x0e, 0x4c, 0xbb, 0x7a, 0xb7, 0xb7, 0xd5, 0x53, 0x06, 0xee, 0x88, 0xa7, 0x16, 0xc5, + 0xaa, 0x16, 0xe3, 0x84, 0x09, 0xce, 0xa4, 0x0f, 0x25, 0xe1, 0x17, 0x2b, 0x66, 0xdc, 0x67, 0x0d, + 0x5e, 0x9a, 0x69, 0x86, 0x8e, 0x4b, 0xe5, 0xfd, 0x69, 0x09, 0x28, 0x0a, 0x69, 0x4c, 0x6c, 0xd7, + 0x69, 0x07, 0x67, 0xf1, 0xc7, 0x22, 0x76, 0x8d, 0x31, 0x1c, 0x10, 0xcb, 0xa1, 0x28, 0xa4, 0x09, + 0x3f, 0x09, 0xeb, 0x83, 0x6d, 0xd1, 0x2c, 0xbc, 0x27, 0x54, 0x94, 0x9f, 0x24, 0x82, 0xc0, 0x38, + 0x1d, 0x59, 0x81, 0x82, 0xef, 0x5b, 0xd2, 0x9c, 0x18, 0xe9, 0xf2, 0x85, 0xcd, 0xcd, 0x55, 0x64, + 0x3c, 0xb4, 0xbf, 0x91, 0x07, 0x12, 0xa9, 0xdf, 0x35, 0xa7, 0xa9, 0x1b, 0x7b, 0x37, 0xd9, 0x47, + 0x37, 0x1c, 0xc7, 0x5a, 0x72, 0xee, 0xda, 0x62, 0xa1, 0x1b, 0xf1, 0xbc, 0x2d, 0xff, 0xe8, 0x8b, + 0x31, 0x4e, 0x98, 0xe0, 0x4c, 0x96, 0x81, 0xb0, 0x6e, 0x20, 0x21, 0x06, 0xb5, 0x7d, 0x95, 0x57, + 0x60, 0xaa, 0x79, 0x81, 0xa9, 0x31, 0x38, 0x80, 0xc5, 0x94, 0x12, 0x4c, 0x69, 0x08, 0x8e, 0xf3, + 0x46, 0x18, 0x09, 0x0f, 0x10, 0x57, 0x1a, 0x36, 0x07, 0xd1, 0x98, 0x56, 0x46, 0xbb, 0x08, 0xb3, + 0x91, 0x46, 0x59, 0xb1, 0xd7, 0x68, 0xd7, 0x71, 0x0f, 0x84, 0x53, 0xf5, 0xd7, 0x8b, 0x30, 0xf0, + 0x45, 0xc9, 0xcf, 0xe7, 0xa0, 0xea, 0x19, 0xbb, 0xb4, 0xdd, 0xb7, 0xa8, 0x5a, 0x3b, 0xd6, 0xc6, + 0xd2, 0x7b, 0x15, 0x53, 0x91, 0x44, 0x31, 0x0d, 0x83, 0xa1, 0x64, 0xf2, 0x1e, 0x94, 0x5d, 0x6a, + 0xe9, 0xf7, 0xa8, 0xfa, 0x60, 0x37, 0xc6, 0x51, 0x09, 0x14, 0x2c, 0xd5, 0xd7, 0x48, 0xc2, 0x51, + 0xc9, 0x24, 0xbf, 0x90, 0x03, 0x70, 0x6c, 0xeb, 0x60, 0x65, 0x67, 0xcb, 0x93, 0x31, 0xe4, 0xb5, + 0x85, 0x9b, 0xe3, 0xa8, 0xc2, 0x7a, 0xc0, 0x55, 0x78, 0xf1, 0x53, 0x51, 0x18, 0x11, 0xce, 0x9a, + 0xa2, 0x23, 0x7a, 0xb3, 0x9c, 0x4d, 0xc6, 0xd2, 0x14, 0x72, 0x80, 0x0c, 0x34, 0x85, 0x84, 0xa3, + 0x92, 0xa9, 0x6d, 0x43, 0x7a, 0x1d, 0x87, 0x75, 0xd3, 0xdc, 0x08, 0xdd, 0xf4, 0x3f, 0xe7, 0x62, + 0x42, 0x90, 0xb6, 0x4d, 0x91, 0x9e, 0x82, 0x5c, 0x81, 0x22, 0x9b, 0x63, 0x92, 0x49, 0x86, 0xb9, + 0x9b, 0x9d, 0x63, 0xd8, 0x8c, 0xdf, 0x77, 0x2d, 0xb9, 0x9c, 0x96, 0x63, 0x1b, 0x57, 0xfb, 0x50, + 0xf1, 0xa8, 0xed, 0x9b, 0x36, 0xb5, 0xe4, 0x27, 0x1c, 0x7d, 0x1b, 0x46, 0xd4, 0x49, 0x72, 0x93, + 0x67, 0x2b, 0xe5, 0x19, 0x2a, 0x01, 0xc3, 0x40, 0x16, 0xb9, 0x00, 0xf9, 0xf6, 0xb6, 0xd4, 0x93, + 0x27, 0x8e, 0x0e, 0xeb, 0xf9, 0xa5, 0x26, 0xe6, 0xdb, 0xdb, 0xda, 0x79, 0x48, 0xe9, 0x74, 0xda, + 0x05, 0x48, 0x1d, 0x0d, 0xda, 0x6f, 0xe7, 0x61, 0x60, 0xa2, 0xe7, 0x1d, 0xd3, 0x0d, 0x9a, 0x47, + 0x8e, 0x8d, 0x9b, 0xe3, 0x19, 0x1b, 0x8a, 0xeb, 0x40, 0xc7, 0x0c, 0x51, 0x18, 0x11, 0x4e, 0xfe, + 0x66, 0x0e, 0xa6, 0xcc, 0xe8, 0x94, 0x22, 0xe7, 0x8b, 0x37, 0xc6, 0x51, 0x9d, 0xd8, 0x5c, 0x25, + 0x8e, 0x05, 0x0e, 0xc3, 0x62, 0xbc, 0x16, 0xda, 0x6f, 0xe6, 0xa0, 0xca, 0xab, 0xfc, 0x31, 0x51, + 0xae, 0x7f, 0xa7, 0x08, 0xe7, 0x52, 0xba, 0x17, 0x53, 0x2f, 0xbb, 0xba, 0xe7, 0x4b, 0x1d, 0x30, + 0xa1, 0x5e, 0xae, 0x05, 0x18, 0x8c, 0x50, 0x91, 0xcf, 0x41, 0x95, 0xda, 0xed, 0x9e, 0x63, 0xda, + 0xbe, 0x27, 0xaf, 0xf9, 0xe0, 0xb6, 0xc8, 0x55, 0x05, 0xc4, 0x10, 0x4f, 0xee, 0xc1, 0xa4, 0xea, + 0xb3, 0xdc, 0x0a, 0xca, 0xea, 0x2d, 0x0d, 0x1a, 0x5d, 0xa6, 0x8f, 0x88, 0xf0, 0xc6, 0x98, 0x24, + 0xbe, 0x79, 0xa0, 0x88, 0xb3, 0x6f, 0x1e, 0x04, 0x62, 0xc5, 0xe6, 0x81, 0x7a, 0xc4, 0x50, 0x06, + 0x71, 0xa0, 0xa6, 0x2a, 0xb0, 0xb9, 0xda, 0x1a, 0xcb, 0x11, 0x31, 0x79, 0x33, 0x76, 0xc0, 0x14, + 0xa3, 0x12, 0xc8, 0x0e, 0x54, 0xb8, 0x74, 0x26, 0xad, 0x3c, 0x06, 0x69, 0x32, 0xc8, 0x54, 0x70, + 0xc4, 0x80, 0xb7, 0xf6, 0x4f, 0x72, 0x30, 0x85, 0xd4, 0x67, 0x7d, 0x5f, 0x6e, 0x8a, 0x76, 0xa0, + 0x2c, 0x8f, 0x23, 0xc9, 0xfe, 0xfe, 0x5a, 0x86, 0x80, 0x06, 0xce, 0x47, 0x1e, 0xa8, 0xd1, 0x8d, + 0xbd, 0xf5, 0x9d, 0x1d, 0x54, 0xdc, 0xc9, 0x55, 0xa8, 0x3a, 0xb6, 0x34, 0xe0, 0xe5, 0xfc, 0xfb, + 0x19, 0xf6, 0x01, 0xd6, 0x15, 0xf0, 0xfe, 0x61, 0xfd, 0x42, 0xf0, 0x10, 0xab, 0x24, 0x86, 0x25, + 0xb5, 0x9f, 0x67, 0x93, 0xbf, 0x63, 0x59, 0xa6, 0xdd, 0x89, 0x87, 0x8b, 0x11, 0x0b, 0xa6, 0x85, + 0x91, 0xb1, 0xaf, 0x9b, 0x96, 0xbe, 0x6d, 0xd1, 0x0f, 0xdd, 0xd4, 0xec, 0xfb, 0xa6, 0x35, 0x27, + 0xee, 0x46, 0x9f, 0x5b, 0xb1, 0xfd, 0x75, 0xb7, 0xe5, 0xbb, 0xa6, 0xdd, 0x11, 0xea, 0xdb, 0x5a, + 0x8c, 0x17, 0x26, 0x78, 0x6b, 0xff, 0xae, 0x08, 0xfc, 0xa8, 0x0b, 0xf9, 0x22, 0x54, 0xbb, 0xd4, + 0xd8, 0xd5, 0x6d, 0xd3, 0x53, 0xd9, 0xed, 0xd9, 0x8c, 0x58, 0x5d, 0x53, 0xc0, 0xfb, 0x6c, 0xda, + 0x6f, 0xb4, 0x56, 0xf9, 0xf1, 0xf8, 0x90, 0x96, 0x18, 0x30, 0xd1, 0xf1, 0x3c, 0xbd, 0x67, 0x66, + 0x0e, 0xf8, 0x15, 0xd9, 0xc6, 0x85, 0xf7, 0x5f, 0xfc, 0x47, 0xc9, 0x9a, 0x18, 0x50, 0xea, 0x59, + 0xba, 0x69, 0x67, 0x0e, 0xed, 0x66, 0x6f, 0xb0, 0xc1, 0x38, 0x09, 0xe7, 0x08, 0xff, 0x8b, 0x82, + 0x37, 0xe9, 0x43, 0xcd, 0x33, 0x5c, 0xbd, 0xeb, 0xed, 0xea, 0x0b, 0x2f, 0xbc, 0x98, 0x79, 0x62, + 0x08, 0x45, 0x89, 0x41, 0xb3, 0x88, 0x8d, 0xb5, 0xd6, 0xf5, 0xc6, 0xc2, 0x0b, 0x2f, 0x62, 0x54, + 0x4e, 0x54, 0xec, 0x0b, 0xcf, 0x2f, 0x64, 0xbf, 0xa8, 0x36, 0x5d, 0xec, 0x0b, 0xcf, 0x2f, 0x60, + 0x54, 0x0e, 0x6b, 0x52, 0x27, 0x62, 0xc1, 0x66, 0x13, 0xb8, 0x1e, 0x06, 0x00, 0xf1, 0xbf, 0x28, + 0x78, 0x6b, 0xff, 0x33, 0x07, 0xd5, 0x00, 0xcf, 0x16, 0x11, 0x91, 0x47, 0x75, 0x65, 0x69, 0x84, + 0x55, 0x69, 0x51, 0x16, 0xc5, 0x80, 0x09, 0x79, 0x0b, 0x26, 0xc5, 0x7f, 0x99, 0xd7, 0x3c, 0x7f, + 0xe2, 0xe4, 0xe9, 0x8b, 0x91, 0xe2, 0x18, 0x63, 0x46, 0x5e, 0x86, 0x29, 0xee, 0x34, 0x53, 0xab, + 0x88, 0x74, 0x48, 0x04, 0xb1, 0x66, 0x9b, 0x51, 0x24, 0xc6, 0x69, 0x83, 0x17, 0xe7, 0x5f, 0x82, + 0x6c, 0x01, 0xb0, 0x95, 0x54, 0xd6, 0xf2, 0x44, 0xaf, 0xce, 0xc3, 0x20, 0xb6, 0x82, 0xc2, 0x18, + 0x61, 0x94, 0x92, 0x9e, 0x3e, 0x3f, 0xee, 0xf4, 0xf4, 0xf3, 0x50, 0xdd, 0xd5, 0xed, 0xb6, 0xb7, + 0xab, 0xef, 0x51, 0x79, 0xfe, 0x32, 0xd8, 0x32, 0xbb, 0xae, 0x10, 0x18, 0xd2, 0x68, 0xff, 0x6c, + 0x02, 0x44, 0xa8, 0x32, 0x79, 0x0e, 0x2a, 0x6d, 0xd3, 0x8b, 0x5e, 0x10, 0x11, 0xf8, 0x53, 0x96, + 0x24, 0x1c, 0x03, 0x8a, 0xa8, 0x0f, 0xa3, 0x94, 0xf0, 0x61, 0x48, 0xcf, 0x47, 0x21, 0x82, 0x52, + 0x9e, 0x8f, 0x57, 0x60, 0xc6, 0x72, 0x9c, 0x3d, 0x36, 0x39, 0x47, 0xcf, 0x91, 0x4d, 0x89, 0xcd, + 0xa6, 0xd5, 0x38, 0x0a, 0x93, 0xb4, 0x64, 0x0b, 0x9e, 0x78, 0x97, 0xba, 0x8e, 0x0c, 0xc6, 0x6b, + 0x59, 0x94, 0xf6, 0x14, 0x1b, 0xe1, 0x01, 0xe2, 0xc7, 0xdc, 0xbe, 0x9e, 0x4e, 0x82, 0xc3, 0xca, + 0xf2, 0x83, 0xb9, 0xba, 0xdb, 0xa1, 0xfe, 0x86, 0xeb, 0x18, 0xd4, 0xf3, 0x4c, 0xbb, 0xa3, 0xd8, + 0x4e, 0x84, 0x6c, 0x37, 0xd3, 0x49, 0x70, 0x58, 0x59, 0xf2, 0x26, 0xcc, 0x0a, 0x94, 0xd8, 0x2a, + 0x6b, 0x88, 0x49, 0xdc, 0xb4, 0xd4, 0x6d, 0xf9, 0x53, 0x42, 0x63, 0xdc, 0x1c, 0x42, 0x83, 0x43, + 0x4b, 0x93, 0xd7, 0xe1, 0x8c, 0x8a, 0x9d, 0xdd, 0x60, 0xda, 0xb8, 0x6e, 0x51, 0xb9, 0x61, 0x22, + 0xcf, 0x23, 0xaa, 0xf3, 0x78, 0x98, 0xa0, 0xc2, 0x81, 0x72, 0x04, 0xe1, 0x02, 0x8f, 0x51, 0xdf, + 0xea, 0x2d, 0x3a, 0x8e, 0xd5, 0x76, 0xee, 0xda, 0xea, 0xdd, 0xc5, 0xae, 0x0a, 0xbf, 0xc0, 0xae, + 0x95, 0x4a, 0x81, 0x43, 0x4a, 0xb2, 0x37, 0xe7, 0x98, 0x25, 0xe7, 0xae, 0x9d, 0xe4, 0x0a, 0xe1, + 0x9b, 0xb7, 0x86, 0xd0, 0xe0, 0xd0, 0xd2, 0xdc, 0x7d, 0x91, 0x78, 0x83, 0xad, 0x9e, 0x8c, 0x2a, + 0x15, 0x56, 0xe2, 0x00, 0x16, 0x53, 0x4a, 0x90, 0x55, 0x38, 0x9f, 0x84, 0x32, 0x71, 0x32, 0xc0, + 0x54, 0x58, 0xff, 0x29, 0x78, 0x4c, 0x2d, 0xa5, 0xd5, 0xa0, 0x1a, 0xdc, 0x37, 0xae, 0xfd, 0x51, + 0x1e, 0x66, 0x12, 0x89, 0x55, 0x4f, 0x21, 0xe6, 0xc9, 0x8e, 0xc5, 0x3c, 0xad, 0x66, 0xba, 0x37, + 0x3d, 0x52, 0xf3, 0xa1, 0xa1, 0x4f, 0xfb, 0x89, 0xd0, 0xa7, 0x9b, 0x63, 0x93, 0xf8, 0xe0, 0x08, + 0xa8, 0xa3, 0x1c, 0x9c, 0x4b, 0x94, 0x38, 0x85, 0x38, 0x9b, 0x6e, 0x3c, 0xce, 0xe6, 0xfa, 0xb8, + 0x5e, 0x76, 0x48, 0xb8, 0xcd, 0xff, 0x19, 0x7c, 0xc9, 0x96, 0x88, 0x37, 0x2b, 0xcb, 0x1c, 0x96, + 0xf2, 0x1d, 0x97, 0xb2, 0x56, 0x84, 0x7f, 0xdf, 0x78, 0x4e, 0x40, 0xbb, 0x83, 0x4a, 0x0a, 0xf1, + 0xa0, 0xa2, 0x12, 0x55, 0x8e, 0x37, 0x9a, 0x2e, 0x68, 0xec, 0x20, 0xf7, 0x70, 0x20, 0x48, 0xfb, + 0xe5, 0x02, 0x3c, 0x9e, 0xda, 0x29, 0x4e, 0x6f, 0x83, 0xff, 0xe5, 0xf8, 0x06, 0xff, 0x33, 0xc9, + 0x0d, 0xfe, 0xf3, 0x89, 0xfa, 0x3d, 0xc2, 0xfb, 0xfc, 0x63, 0xdc, 0xbb, 0xd6, 0x66, 0x60, 0x2a, + 0x96, 0x5c, 0x55, 0xfb, 0xc3, 0x09, 0xa8, 0x45, 0x7a, 0xd2, 0x23, 0x97, 0xd4, 0x92, 0xbc, 0xad, + 0xae, 0x44, 0x2c, 0x64, 0xbd, 0x84, 0x8e, 0x71, 0x91, 0x46, 0x48, 0xe4, 0xae, 0x44, 0xf2, 0x65, + 0x98, 0xee, 0x7a, 0x9d, 0x95, 0xa5, 0xeb, 0x54, 0x6f, 0x53, 0xf7, 0x06, 0x55, 0x99, 0x64, 0x84, + 0x31, 0x17, 0xc3, 0x60, 0x82, 0x92, 0xac, 0xc2, 0xe3, 0x2e, 0xbd, 0xd3, 0xa7, 0x9e, 0x1f, 0xdf, + 0x1a, 0x97, 0xca, 0x8c, 0x5c, 0xcf, 0x12, 0x04, 0x1e, 0xa6, 0x17, 0x62, 0x73, 0x94, 0xd8, 0xce, + 0x99, 0xc8, 0x38, 0x50, 0xd5, 0x07, 0xe5, 0x4e, 0x2d, 0xe9, 0x24, 0x09, 0x21, 0x6a, 0x1b, 0x27, + 0xfd, 0xfc, 0x61, 0xf9, 0x23, 0x3c, 0x7f, 0x18, 0x3d, 0xf4, 0x5a, 0x79, 0xe0, 0xa1, 0xd7, 0x61, + 0x27, 0x3b, 0xab, 0x8f, 0xc2, 0xc9, 0x4e, 0xed, 0x5b, 0x10, 0x6b, 0x70, 0xe2, 0x40, 0x35, 0x78, + 0xd9, 0xcc, 0xc7, 0x3f, 0xc2, 0x33, 0x80, 0xdc, 0x0f, 0x15, 0x3c, 0x62, 0x28, 0x43, 0xdb, 0x61, + 0xc3, 0x9c, 0xe7, 0xf8, 0x7c, 0xb8, 0x57, 0xbb, 0xff, 0x9b, 0x3c, 0x54, 0x83, 0x00, 0x37, 0x72, + 0x05, 0x8a, 0x76, 0xe8, 0x43, 0x0c, 0x74, 0x0e, 0xee, 0x3d, 0xe4, 0x98, 0x78, 0x43, 0xe4, 0x1f, + 0x7e, 0x43, 0x44, 0x4f, 0xb4, 0x16, 0x32, 0x9c, 0x68, 0xed, 0x41, 0xd9, 0x77, 0xcd, 0x4e, 0x87, + 0xba, 0x99, 0xb7, 0x5a, 0x83, 0xe6, 0xda, 0x14, 0x0c, 0x65, 0xcb, 0x8a, 0x07, 0x54, 0x62, 0xb4, + 0x77, 0xe0, 0x4c, 0x92, 0x92, 0x9f, 0x90, 0x93, 0x7e, 0x7b, 0xd9, 0xc6, 0xe1, 0x09, 0x39, 0x09, + 0xc7, 0x80, 0x82, 0x0d, 0x26, 0xf6, 0x99, 0xde, 0x75, 0x6c, 0xb5, 0x08, 0xf2, 0xc1, 0xb4, 0x29, + 0x61, 0x18, 0x60, 0xb5, 0xff, 0x5a, 0x80, 0x27, 0xc3, 0x30, 0xc5, 0x35, 0xdd, 0xd6, 0x3b, 0xf1, + 0x7b, 0x22, 0x3f, 0x49, 0x12, 0x35, 0x96, 0x7b, 0x35, 0x0b, 0x8f, 0xc0, 0xbd, 0x9a, 0x7f, 0x52, + 0x00, 0x7e, 0xf4, 0x9e, 0x7c, 0x0b, 0x26, 0x55, 0x7b, 0xb2, 0x67, 0xf9, 0x39, 0xaf, 0x66, 0xfe, + 0x9c, 0xfc, 0x84, 0x7f, 0x10, 0x43, 0x12, 0x85, 0x62, 0x4c, 0x20, 0x71, 0xa0, 0xb2, 0xa3, 0x5b, + 0xd6, 0xb6, 0x2e, 0x6f, 0xa7, 0x1c, 0x9b, 0x70, 0xde, 0xcd, 0x97, 0x25, 0x6b, 0x0c, 0x84, 0x10, + 0x17, 0xaa, 0x8e, 0x2d, 0x63, 0xc9, 0xe4, 0xb7, 0x18, 0x93, 0xc4, 0x29, 0xe1, 0x8f, 0x96, 0xbc, + 0x31, 0x14, 0x43, 0x7e, 0x2e, 0x07, 0x53, 0x6e, 0xd4, 0x25, 0x2d, 0xe7, 0x8f, 0xe5, 0x0c, 0xdb, + 0x10, 0x11, 0x6e, 0xd1, 0x73, 0x98, 0x51, 0xbf, 0x77, 0x5c, 0xa6, 0xf6, 0x5f, 0x72, 0x30, 0xd5, + 0xb2, 0xcc, 0xb6, 0x69, 0x77, 0x1e, 0xe2, 0x7d, 0x9b, 0xeb, 0x50, 0xf2, 0x2c, 0xb3, 0x4d, 0x47, + 0x4c, 0x37, 0xc2, 0x35, 0x33, 0x56, 0x4b, 0xa6, 0xa0, 0xb0, 0x9f, 0xf8, 0x05, 0x9e, 0x85, 0x63, + 0x5c, 0xe0, 0xf9, 0x7b, 0x15, 0x90, 0x89, 0x2b, 0x48, 0x1f, 0xaa, 0x1d, 0x75, 0x25, 0xa2, 0x7c, + 0xc7, 0xeb, 0x19, 0x2e, 0x00, 0x8b, 0x5d, 0xae, 0x28, 0xbe, 0x77, 0x00, 0xc4, 0x50, 0x12, 0xa1, + 0x50, 0xe2, 0xf9, 0xa8, 0x32, 0x27, 0xf1, 0x8e, 0x64, 0x1e, 0x13, 0x2d, 0xc3, 0x01, 0x28, 0xb8, + 0x13, 0x5d, 0x06, 0x86, 0x16, 0x32, 0xc6, 0x42, 0x85, 0xd9, 0xec, 0x93, 0xd1, 0xa5, 0x4c, 0x84, + 0xad, 0xfb, 0x5e, 0xe6, 0xac, 0xfa, 0xe1, 0x01, 0x50, 0x79, 0x3e, 0x54, 0xf7, 0x3d, 0xe4, 0xac, + 0xc9, 0x4f, 0x43, 0xcd, 0x77, 0x75, 0xdb, 0xdb, 0x71, 0xdc, 0x2e, 0x75, 0xa5, 0x1f, 0x7e, 0x39, + 0x43, 0xfe, 0x8f, 0xcd, 0x90, 0x9b, 0x08, 0x0b, 0x8a, 0x81, 0x30, 0x2a, 0x8d, 0xec, 0x41, 0xa5, + 0xdf, 0x16, 0x15, 0x93, 0xfa, 0x76, 0x23, 0x83, 0xe4, 0xe8, 0x19, 0x46, 0xf5, 0x84, 0x81, 0x00, + 0xd6, 0x1b, 0xc3, 0x1c, 0xd7, 0xe5, 0x8c, 0xbd, 0x31, 0x91, 0x7f, 0x73, 0x78, 0x72, 0x6b, 0xd2, + 0x0d, 0xbd, 0x0d, 0x95, 0x8c, 0x8d, 0x1b, 0xb3, 0x1a, 0xe5, 0xfd, 0x08, 0x49, 0x5f, 0x83, 0x09, + 0x13, 0x3d, 0x1e, 0x5c, 0x27, 0xd5, 0xf0, 0xab, 0x19, 0x63, 0xf4, 0xa2, 0xf9, 0x68, 0x04, 0x04, + 0xa5, 0x00, 0xf2, 0x0d, 0x28, 0x78, 0x77, 0x3c, 0x79, 0x58, 0x21, 0xc3, 0x4e, 0xca, 0x1d, 0xd5, + 0x37, 0xb9, 0x97, 0xbb, 0x75, 0xc7, 0x43, 0xc6, 0x57, 0xfb, 0x5e, 0x1e, 0xca, 0x0c, 0xc7, 0xd6, + 0xa9, 0x79, 0xa8, 0xea, 0x77, 0x3d, 0xa4, 0x9d, 0x30, 0x5b, 0x74, 0x30, 0x0b, 0x35, 0x6e, 0xb7, + 0x04, 0x02, 0x43, 0x1a, 0x56, 0x80, 0x9f, 0x40, 0xe6, 0xfb, 0xe9, 0xf9, 0x78, 0x81, 0x37, 0x14, + 0x02, 0x43, 0x1a, 0x72, 0x0b, 0x2e, 0xf0, 0x87, 0xf5, 0xbb, 0x36, 0x75, 0x1b, 0xb7, 0x5b, 0x0d, + 0xc3, 0x70, 0xfa, 0x7c, 0xcf, 0xa6, 0x10, 0x3b, 0x9d, 0x70, 0xe1, 0x8d, 0x54, 0x2a, 0x1c, 0x52, + 0x9a, 0xec, 0x03, 0xe8, 0x9e, 0xd7, 0xef, 0x52, 0x74, 0x82, 0x43, 0x4a, 0x19, 0x2c, 0xfa, 0xdb, + 0xad, 0x46, 0xc0, 0x4d, 0xec, 0x92, 0x84, 0xcf, 0x18, 0x91, 0xa4, 0xfd, 0xa0, 0x04, 0xd5, 0xa0, + 0x65, 0x3f, 0xc6, 0xed, 0xb7, 0x08, 0x67, 0xf7, 0x4d, 0xcf, 0x14, 0x2e, 0xfb, 0xe8, 0x21, 0xc7, + 0x92, 0x50, 0x07, 0x6f, 0x25, 0x91, 0x38, 0x48, 0x4f, 0x56, 0xe0, 0x5c, 0x57, 0xbf, 0x77, 0xb3, + 0xdf, 0xdd, 0xa6, 0xee, 0xfa, 0x8e, 0xf4, 0x1f, 0x79, 0x32, 0x38, 0x9d, 0xc7, 0x2f, 0xad, 0x0d, + 0xa2, 0x31, 0xad, 0x0c, 0x79, 0x05, 0x66, 0xee, 0xea, 0x26, 0xf7, 0x1a, 0x44, 0x77, 0x37, 0x4a, + 0x62, 0xef, 0xe5, 0x76, 0x1c, 0x85, 0x49, 0x5a, 0xf2, 0x3c, 0xd4, 0x54, 0x50, 0xc6, 0x96, 0x6b, + 0xa9, 0x74, 0x18, 0xfc, 0x88, 0x8e, 0x02, 0xe3, 0x2a, 0x46, 0x69, 0xc8, 0x97, 0x61, 0x5a, 0xf7, + 0x7d, 0xd7, 0xdc, 0xee, 0xfb, 0xbc, 0xa9, 0xc5, 0x09, 0x29, 0xe9, 0x1b, 0x69, 0xc4, 0x30, 0x98, + 0xa0, 0x24, 0xeb, 0xf0, 0xb8, 0x74, 0x92, 0xc5, 0x09, 0x65, 0xba, 0x67, 0xae, 0xba, 0xae, 0xa5, + 0x11, 0x60, 0x7a, 0xb9, 0x44, 0x77, 0x86, 0x53, 0xeb, 0xce, 0x5d, 0x90, 0xce, 0x45, 0x62, 0xc4, + 0x6e, 0x93, 0x17, 0x39, 0x0d, 0xe7, 0x8f, 0xa7, 0xe6, 0x04, 0x77, 0x7f, 0x47, 0x6e, 0xbb, 0x4c, + 0xbd, 0x36, 0x5e, 0xfb, 0xb7, 0x79, 0x28, 0x6c, 0xae, 0xb6, 0xc8, 0xeb, 0x40, 0x4c, 0xdb, 0xa3, + 0x46, 0xdf, 0xa5, 0xad, 0x3d, 0xb3, 0x77, 0x8b, 0xba, 0xe6, 0xce, 0x81, 0xdc, 0xd7, 0x0b, 0xdc, + 0x7e, 0x2b, 0x03, 0x14, 0x98, 0x52, 0x8a, 0x6f, 0xdb, 0xea, 0x8b, 0xd4, 0xcd, 0xb0, 0x6d, 0xdb, + 0x08, 0x8b, 0x63, 0x8c, 0x19, 0xd9, 0x02, 0x30, 0x42, 0xd6, 0x85, 0x13, 0xef, 0xb5, 0x46, 0x18, + 0x47, 0x18, 0x11, 0x84, 0xea, 0x1e, 0x23, 0xe5, 0x5c, 0x8b, 0x27, 0xe1, 0xca, 0x17, 0xc4, 0x1b, + 0xaa, 0x2c, 0x86, 0x6c, 0x34, 0x1b, 0xa6, 0x62, 0xf7, 0xb0, 0x93, 0x2f, 0x41, 0xc5, 0xe9, 0x45, + 0xb4, 0xc4, 0x2a, 0xcf, 0x61, 0x5f, 0x59, 0x97, 0xb0, 0xfb, 0x87, 0xf5, 0xa9, 0x55, 0xa7, 0x63, + 0x1a, 0x0a, 0x80, 0x01, 0x39, 0xd1, 0x60, 0x82, 0x67, 0x5c, 0x54, 0x01, 0x50, 0x7c, 0x99, 0xe2, + 0x77, 0x44, 0x7b, 0x28, 0x31, 0xda, 0xb7, 0x8b, 0x10, 0x1e, 0x3b, 0x24, 0x1e, 0x4c, 0x88, 0x1c, + 0x49, 0x52, 0x21, 0x7d, 0xa8, 0xe9, 0x98, 0xa4, 0x28, 0xd2, 0x81, 0xc2, 0x3b, 0xce, 0x76, 0x66, + 0x7d, 0x34, 0x92, 0x36, 0x5a, 0xcc, 0x19, 0x11, 0x00, 0x32, 0x09, 0xe4, 0xbb, 0x39, 0x38, 0xeb, + 0x25, 0xbd, 0x08, 0xb2, 0x3b, 0x60, 0x76, 0x77, 0x49, 0xd2, 0x2f, 0x21, 0x2e, 0x1b, 0x18, 0x8a, + 0xc6, 0xc1, 0xba, 0xb0, 0xf6, 0x17, 0x87, 0xe1, 0x64, 0x77, 0x1a, 0xbd, 0xfd, 0xc5, 0x01, 0xbb, + 0x78, 0xfb, 0xc7, 0x61, 0x28, 0x45, 0x69, 0xff, 0x21, 0x07, 0x85, 0xad, 0xa5, 0xe5, 0x53, 0xf7, + 0x01, 0x92, 0x0e, 0x94, 0x3b, 0xe2, 0x86, 0xb0, 0xcc, 0x69, 0x33, 0xe4, 0x4d, 0x63, 0x42, 0xed, + 0x93, 0x0f, 0xa8, 0xb8, 0x6b, 0x07, 0x30, 0xb1, 0xb5, 0x24, 0x4d, 0xfa, 0x53, 0xf6, 0x73, 0xfe, + 0x34, 0x04, 0xda, 0xf6, 0xe9, 0x0b, 0xff, 0x76, 0x0e, 0xe2, 0x06, 0xc6, 0xe9, 0x57, 0xe1, 0x0f, + 0x73, 0x90, 0x48, 0x7e, 0x46, 0x5e, 0x94, 0x37, 0xae, 0xc4, 0x4f, 0xf0, 0xab, 0x1b, 0x57, 0x48, + 0x9c, 0x3a, 0x72, 0xf3, 0xca, 0xfb, 0x39, 0x98, 0x72, 0xa3, 0xf1, 0x71, 0x72, 0xca, 0xc8, 0x10, + 0xf5, 0x9b, 0x16, 0x6d, 0x27, 0x8f, 0x6b, 0x44, 0x51, 0x18, 0x97, 0xab, 0xfd, 0xd3, 0x3c, 0x4c, + 0x9c, 0x5a, 0xe6, 0x5a, 0x1a, 0xdb, 0x75, 0x5f, 0xcc, 0x38, 0x23, 0x0c, 0xdd, 0x6c, 0xef, 0x26, + 0x36, 0xdb, 0xaf, 0x66, 0x15, 0xf4, 0xe0, 0x3d, 0xf6, 0x7f, 0x99, 0x03, 0x39, 0x1f, 0xad, 0xd8, + 0x9e, 0xaf, 0xdb, 0x06, 0x25, 0x46, 0x30, 0xf9, 0x65, 0xdd, 0x79, 0x95, 0x19, 0x18, 0xc4, 0x7a, + 0xc7, 0xff, 0xab, 0xc9, 0x8e, 0x3c, 0x07, 0x95, 0x5d, 0xc7, 0xf3, 0xed, 0x50, 0x73, 0x0f, 0x3c, + 0xd4, 0xd7, 0x25, 0x1c, 0x03, 0x0a, 0xf2, 0x59, 0x28, 0xcb, 0x0d, 0x1d, 0x19, 0x6a, 0x14, 0x38, + 0xe0, 0xe5, 0x8e, 0x0f, 0x2a, 0xbc, 0xf6, 0x75, 0x98, 0x49, 0xa6, 0xdf, 0xbd, 0x96, 0x9a, 0x7e, + 0xf7, 0xe9, 0x21, 0xe9, 0x77, 0x6b, 0xc3, 0x53, 0xef, 0xfe, 0x9d, 0x02, 0x4c, 0x7e, 0x6c, 0xd2, + 0xee, 0xa6, 0xe4, 0x7c, 0x29, 0x64, 0xcc, 0xf9, 0x52, 0x3c, 0x51, 0xce, 0x97, 0x53, 0x4f, 0xc8, + 0xf2, 0xc3, 0x1c, 0xc0, 0xa9, 0xe5, 0xfc, 0x6d, 0xc7, 0xc3, 0x44, 0x32, 0x0f, 0x92, 0xf4, 0xe8, + 0x90, 0xef, 0x55, 0xd4, 0x2b, 0xf1, 0x3d, 0xf7, 0xf7, 0x73, 0x30, 0xad, 0xc7, 0xd2, 0x9b, 0x64, + 0x56, 0x10, 0x13, 0xd9, 0x52, 0x82, 0xa3, 0xe9, 0x71, 0x38, 0x26, 0xc4, 0xf2, 0x83, 0xb1, 0x32, + 0x20, 0x22, 0x62, 0x7d, 0x0f, 0x5c, 0x80, 0x2a, 0x0f, 0xc6, 0x46, 0x9e, 0x3e, 0x24, 0x9d, 0x4c, + 0x61, 0x2c, 0xe9, 0x64, 0xa2, 0xdb, 0xc3, 0xc5, 0x07, 0x6e, 0x0f, 0xef, 0x43, 0x75, 0xc7, 0x75, + 0xba, 0x3c, 0x63, 0x0b, 0xbf, 0xd9, 0x25, 0xcb, 0x8c, 0xbb, 0xe8, 0x74, 0xb7, 0x4d, 0x9b, 0xb6, + 0x79, 0x36, 0x98, 0xc0, 0x13, 0xb1, 0xac, 0xf8, 0x63, 0x28, 0x8a, 0xef, 0x13, 0x3a, 0x42, 0xea, + 0xc4, 0x38, 0xa5, 0x06, 0x13, 0xe3, 0xa6, 0xe0, 0x8e, 0x4a, 0x4c, 0x3c, 0x4b, 0x4b, 0xf9, 0x94, + 0xb2, 0xb4, 0x1c, 0x44, 0x93, 0xdf, 0x54, 0x32, 0xba, 0x33, 0x4f, 0x94, 0x4c, 0xf5, 0x93, 0xbc, + 0x29, 0x54, 0xfb, 0xc5, 0xb2, 0x5a, 0xaf, 0x1e, 0xb9, 0x2b, 0x0a, 0x3f, 0xc9, 0x23, 0xdb, 0xa1, + 0x03, 0x49, 0x5e, 0x2b, 0xa7, 0x98, 0xe4, 0xb5, 0x3a, 0x9e, 0x24, 0xaf, 0x90, 0x2d, 0xc9, 0x6b, + 0x6d, 0x4c, 0x49, 0x5e, 0x27, 0xc7, 0x95, 0xe4, 0x75, 0x6a, 0xa4, 0x24, 0xaf, 0xd3, 0xc7, 0x4a, + 0xf2, 0x7a, 0x58, 0x80, 0x84, 0xed, 0xff, 0x49, 0xc8, 0xc4, 0x8f, 0x55, 0xc8, 0xc4, 0x77, 0xf2, + 0x10, 0x2e, 0x83, 0x27, 0x3c, 0x64, 0xf1, 0x26, 0x4f, 0x71, 0x21, 0xae, 0x95, 0x1e, 0xcd, 0x1c, + 0x98, 0x94, 0xe9, 0x30, 0xc4, 0x7d, 0xd2, 0x01, 0x37, 0xe2, 0x01, 0x98, 0xc1, 0x5d, 0xdf, 0x99, + 0x37, 0x82, 0xc3, 0x6b, 0xc3, 0x85, 0x4f, 0x36, 0x7c, 0xc6, 0x88, 0x18, 0xed, 0x07, 0x05, 0x90, + 0x97, 0xc2, 0x13, 0x0a, 0xa5, 0x1d, 0x33, 0x3c, 0x38, 0x3f, 0xfa, 0xc2, 0xb7, 0xcc, 0xb8, 0xc8, + 0x9b, 0xe7, 0xf9, 0x4e, 0x37, 0x07, 0xa0, 0xe0, 0xce, 0xb7, 0x30, 0x45, 0xe4, 0x82, 0x6c, 0xbf, + 0x0c, 0x5b, 0x98, 0xd1, 0x08, 0x08, 0xb9, 0x85, 0x29, 0x40, 0xa8, 0x64, 0x88, 0x1d, 0x53, 0x71, + 0x0d, 0x77, 0x21, 0xf3, 0x8e, 0x69, 0x24, 0x00, 0x4f, 0xed, 0x98, 0x8a, 0x4b, 0xb8, 0x95, 0x0c, + 0xf2, 0x1e, 0xd4, 0x74, 0xc3, 0xe8, 0x77, 0xfb, 0x16, 0xf7, 0x40, 0x67, 0xbd, 0x91, 0xb5, 0x11, + 0xf2, 0x92, 0x62, 0xb9, 0x26, 0x11, 0x01, 0x63, 0x54, 0x5e, 0xf3, 0x1b, 0xdf, 0xff, 0xd1, 0xe5, + 0xc7, 0x7e, 0xf8, 0xa3, 0xcb, 0x8f, 0x7d, 0xf0, 0xa3, 0xcb, 0x8f, 0x7d, 0xfb, 0xe8, 0x72, 0xee, + 0xfb, 0x47, 0x97, 0x73, 0x3f, 0x3c, 0xba, 0x9c, 0xfb, 0xe0, 0xe8, 0x72, 0xee, 0x3f, 0x1e, 0x5d, + 0xce, 0xfd, 0xd2, 0x7f, 0xba, 0xfc, 0xd8, 0xd7, 0xbf, 0x18, 0x56, 0x67, 0x5e, 0x55, 0x67, 0x5e, + 0x09, 0x9f, 0xef, 0xed, 0x75, 0xe6, 0x59, 0x75, 0x42, 0x88, 0xaa, 0xce, 0xff, 0x0b, 0x00, 0x00, + 0xff, 0xff, 0x23, 0xe5, 0xa5, 0xf2, 0x06, 0xb8, 0x00, 0x00, } func (m *AWSAssumeRole) Marshal() (dAtA []byte, err error) { @@ -5396,6 +5430,57 @@ func (m *Edge) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ExactlyOnce) 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 *ExactlyOnce) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ExactlyOnce) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.DedupWindow != nil { + { + size, err := m.DedupWindow.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + i-- + if m.ConsistentAck { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + i-- + if m.Enabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + return len(dAtA) - i, nil +} + func (m *FixedWindow) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -8102,6 +8187,18 @@ func (m *PipelineSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.ExactlyOnce != nil { + { + size, err := m.ExactlyOnce.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } if m.InterStepBuffer != nil { { size, err := m.InterStepBuffer.MarshalToSizedBuffer(dAtA[:i]) @@ -11123,6 +11220,18 @@ func (m *VertexSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.ExactlyOnce != nil { + { + size, err := m.ExactlyOnce.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } if m.InterStepBuffer != nil { { size, err := m.InterStepBuffer.MarshalToSizedBuffer(dAtA[:i]) @@ -11980,6 +12089,21 @@ func (m *Edge) Size() (n int) { return n } +func (m *ExactlyOnce) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 2 + n += 2 + if m.DedupWindow != nil { + l = m.DedupWindow.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *FixedWindow) Size() (n int) { if m == nil { return 0 @@ -12994,6 +13118,10 @@ func (m *PipelineSpec) Size() (n int) { l = m.InterStepBuffer.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.ExactlyOnce != nil { + l = m.ExactlyOnce.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -14124,6 +14252,10 @@ func (m *VertexSpec) Size() (n int) { l = m.InterStepBuffer.Size() n += 1 + l + sovGenerated(uint64(l)) } + if m.ExactlyOnce != nil { + l = m.ExactlyOnce.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -14528,6 +14660,18 @@ func (this *Edge) String() string { }, "") return s } +func (this *ExactlyOnce) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ExactlyOnce{`, + `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, + `ConsistentAck:` + fmt.Sprintf("%v", this.ConsistentAck) + `,`, + `DedupWindow:` + strings.Replace(fmt.Sprintf("%v", this.DedupWindow), "Duration", "v11.Duration", 1) + `,`, + `}`, + }, "") + return s +} func (this *FixedWindow) String() string { if this == nil { return "nil" @@ -15243,6 +15387,7 @@ func (this *PipelineSpec) String() string { `Templates:` + strings.Replace(this.Templates.String(), "Templates", "Templates", 1) + `,`, `SideInputs:` + repeatedStringForSideInputs + `,`, `InterStepBuffer:` + strings.Replace(this.InterStepBuffer.String(), "InterStepBuffer", "InterStepBuffer", 1) + `,`, + `ExactlyOnce:` + strings.Replace(this.ExactlyOnce.String(), "ExactlyOnce", "ExactlyOnce", 1) + `,`, `}`, }, "") return s @@ -15970,6 +16115,7 @@ func (this *VertexSpec) String() string { `Watermark:` + strings.Replace(strings.Replace(this.Watermark.String(), "Watermark", "Watermark", 1), `&`, ``, 1) + `,`, `Lifecycle:` + strings.Replace(strings.Replace(this.Lifecycle.String(), "VertexLifecycle", "VertexLifecycle", 1), `&`, ``, 1) + `,`, `InterStepBuffer:` + strings.Replace(this.InterStepBuffer.String(), "InterStepBuffer", "InterStepBuffer", 1) + `,`, + `ExactlyOnce:` + strings.Replace(this.ExactlyOnce.String(), "ExactlyOnce", "ExactlyOnce", 1) + `,`, `}`, }, "") return s @@ -19799,6 +19945,132 @@ func (m *Edge) Unmarshal(dAtA []byte) error { } return nil } +func (m *ExactlyOnce) 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: ExactlyOnce: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ExactlyOnce: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Enabled = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ConsistentAck", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ConsistentAck = bool(v != 0) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DedupWindow", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DedupWindow == nil { + m.DedupWindow = &v11.Duration{} + } + if err := m.DedupWindow.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 *FixedWindow) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -28827,6 +29099,42 @@ func (m *PipelineSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExactlyOnce", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ExactlyOnce == nil { + m.ExactlyOnce = &ExactlyOnce{} + } + if err := m.ExactlyOnce.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -37552,6 +37860,42 @@ func (m *VertexSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExactlyOnce", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ExactlyOnce == nil { + m.ExactlyOnce = &ExactlyOnce{} + } + if err := m.ExactlyOnce.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/pkg/apis/numaflow/v1alpha1/generated.proto b/pkg/apis/numaflow/v1alpha1/generated.proto index d8c5395619..e13a83a909 100644 --- a/pkg/apis/numaflow/v1alpha1/generated.proto +++ b/pkg/apis/numaflow/v1alpha1/generated.proto @@ -467,6 +467,21 @@ message Edge { optional string onFull = 4; } +message ExactlyOnce { + // Enabled enables exactly once processing. + // +kubebuilder:default=false + optional bool enabled = 1; + + // ConsistentAck enables consistent acknowledgement of offsets to ISB throughout the pipeline. + // +kubebuilder:default=true + optional bool consistentAck = 2; + + // DedupWindow is the duration for which the deduplication will be enabled. + // +optional + // +kubebuilder:default="2m" + optional .k8s.io.apimachinery.pkg.apis.meta.v1.Duration dedupWindow = 3; +} + // FixedWindow describes a fixed window message FixedWindow { // Length is the duration of the fixed window. @@ -1307,6 +1322,10 @@ message PipelineSpec { // InterStepBuffer configuration specific to this pipeline. // +optional optional InterStepBuffer interStepBuffer = 9; + + // ExactlyOnce is the exactly-once settings for the pipeline. + // +optional + optional ExactlyOnce exactlyOnce = 10; } message PipelineStatus { @@ -2241,6 +2260,10 @@ message VertexSpec { // InterStepBuffer configuration specific to this pipeline. // +optional optional InterStepBuffer interStepBuffer = 9; + + // ExactlyOnce indicates the exactly-once settings for the vertex, it's populated from the pipeline exactlyOnce settings. + // +optional + optional ExactlyOnce exactlyOnce = 10; } message VertexStatus { diff --git a/pkg/apis/numaflow/v1alpha1/pipeline_types.go b/pkg/apis/numaflow/v1alpha1/pipeline_types.go index a1f6da0781..d494f4f91a 100644 --- a/pkg/apis/numaflow/v1alpha1/pipeline_types.go +++ b/pkg/apis/numaflow/v1alpha1/pipeline_types.go @@ -113,7 +113,7 @@ func (p Pipeline) GetVertex(vertexName string) *AbstractVertex { // ListAllEdges returns a copy of all the edges. func (p Pipeline) ListAllEdges() []Edge { - edges := []Edge{} + var edges []Edge for _, e := range p.Spec.Edges { edgeCopy := e.DeepCopy() edges = append(edges, *edgeCopy) @@ -455,8 +455,8 @@ func (p Pipeline) GetTerminationGracePeriodSeconds() int64 { if p.Spec.Lifecycle.DeletionGracePeriodSeconds != nil { return *p.Spec.Lifecycle.DeletionGracePeriodSeconds } - if p.Spec.Lifecycle.DeprecatedDeleteGracePeriodSeconds != nil { - return *p.Spec.Lifecycle.DeprecatedDeleteGracePeriodSeconds + if p.Spec.Lifecycle.DeletionGracePeriodSeconds != nil { + return *p.Spec.Lifecycle.DeletionGracePeriodSeconds } if p.DeletionGracePeriodSeconds != nil { return *p.DeletionGracePeriodSeconds @@ -511,6 +511,9 @@ type PipelineSpec struct { // InterStepBuffer configuration specific to this pipeline. // +optional InterStepBuffer *InterStepBuffer `json:"interStepBuffer,omitempty" protobuf:"bytes,9,opt,name=interStepBuffer"` + // ExactlyOnce is the exactly-once settings for the pipeline. + // +optional + ExactlyOnce *ExactlyOnce `json:"exactlyOnce,omitempty" protobuf:"bytes,10,opt,name=exactlyOnce"` } // InterStepBuffer configuration specifically for the pipeline. @@ -520,6 +523,27 @@ type InterStepBuffer struct { Compression *Compression `json:"compression,omitempty" protobuf:"bytes,2,opt,name=compression"` } +type ExactlyOnce struct { + // Enabled enables exactly once processing. + // +kubebuilder:default=false + Enabled bool `json:"enabled,omitempty" protobuf:"bytes,1,opt,name=enabled"` + // ConsistentAck enables consistent acknowledgement of offsets to ISB throughout the pipeline. + // +kubebuilder:default=true + ConsistentAck bool `json:"consistentAck,omitempty" protobuf:"bytes,2,opt,name=consistentAck"` + // DedupWindow is the duration for which the deduplication will be enabled. + // +optional + // +kubebuilder:default="2m" + DedupWindow *metav1.Duration `json:"dedupWindow,omitempty" protobuf:"bytes,3,opt,name=dedupWindow"` +} + +// GetDedupWindow returns the dedup window duration string, defaulting to "2m" if not set. +func (e ExactlyOnce) GetDedupWindow() string { + if e.DedupWindow != nil { + return e.DedupWindow.Duration.String() + } + return "2m" +} + // Compression is the compression settings for the messages in the InterStepBuffer type Compression struct { // Type is the type of compression to be used diff --git a/pkg/apis/numaflow/v1alpha1/vertex_types.go b/pkg/apis/numaflow/v1alpha1/vertex_types.go index 70da0def52..ce8f147e83 100644 --- a/pkg/apis/numaflow/v1alpha1/vertex_types.go +++ b/pkg/apis/numaflow/v1alpha1/vertex_types.go @@ -557,6 +557,9 @@ type VertexSpec struct { // InterStepBuffer configuration specific to this pipeline. // +optional InterStepBuffer *InterStepBuffer `json:"interStepBuffer,omitempty" protobuf:"bytes,9,opt,name=interStepBuffer"` + // ExactlyOnce indicates the exactly-once settings for the vertex, it's populated from the pipeline exactlyOnce settings. + // +optional + ExactlyOnce *ExactlyOnce `json:"exactlyOnce,omitempty" protobuf:"bytes,10,opt,name=exactlyOnce"` } type AbstractVertex struct { diff --git a/pkg/apis/numaflow/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/numaflow/v1alpha1/zz_generated.deepcopy.go index 766f4677af..67251323fe 100644 --- a/pkg/apis/numaflow/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/numaflow/v1alpha1/zz_generated.deepcopy.go @@ -658,6 +658,27 @@ func (in *Edge) DeepCopy() *Edge { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExactlyOnce) DeepCopyInto(out *ExactlyOnce) { + *out = *in + if in.DedupWindow != nil { + in, out := &in.DedupWindow, &out.DedupWindow + *out = new(metav1.Duration) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExactlyOnce. +func (in *ExactlyOnce) DeepCopy() *ExactlyOnce { + if in == nil { + return nil + } + out := new(ExactlyOnce) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *FixedWindow) DeepCopyInto(out *FixedWindow) { *out = *in @@ -1947,6 +1968,11 @@ func (in *PipelineSpec) DeepCopyInto(out *PipelineSpec) { *out = new(InterStepBuffer) (*in).DeepCopyInto(*out) } + if in.ExactlyOnce != nil { + in, out := &in.ExactlyOnce, &out.ExactlyOnce + *out = new(ExactlyOnce) + (*in).DeepCopyInto(*out) + } return } @@ -3587,6 +3613,11 @@ func (in *VertexSpec) DeepCopyInto(out *VertexSpec) { *out = new(InterStepBuffer) (*in).DeepCopyInto(*out) } + if in.ExactlyOnce != nil { + in, out := &in.ExactlyOnce, &out.ExactlyOnce + *out = new(ExactlyOnce) + (*in).DeepCopyInto(*out) + } return } diff --git a/pkg/apis/numaflow/v1alpha1/zz_generated.openapi.go b/pkg/apis/numaflow/v1alpha1/zz_generated.openapi.go index 26dc909721..881c2404ac 100644 --- a/pkg/apis/numaflow/v1alpha1/zz_generated.openapi.go +++ b/pkg/apis/numaflow/v1alpha1/zz_generated.openapi.go @@ -44,6 +44,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ContainerTemplate": schema_pkg_apis_numaflow_v1alpha1_ContainerTemplate(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.DaemonTemplate": schema_pkg_apis_numaflow_v1alpha1_DaemonTemplate(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Edge": schema_pkg_apis_numaflow_v1alpha1_Edge(ref), + "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ExactlyOnce": schema_pkg_apis_numaflow_v1alpha1_ExactlyOnce(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.FixedWindow": schema_pkg_apis_numaflow_v1alpha1_FixedWindow(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ForwardConditions": schema_pkg_apis_numaflow_v1alpha1_ForwardConditions(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.GSSAPI": schema_pkg_apis_numaflow_v1alpha1_GSSAPI(ref), @@ -1371,6 +1372,40 @@ func schema_pkg_apis_numaflow_v1alpha1_Edge(ref common.ReferenceCallback) common } } +func schema_pkg_apis_numaflow_v1alpha1_ExactlyOnce(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "enabled": { + SchemaProps: spec.SchemaProps{ + Description: "Enabled enables exactly once processing.", + Type: []string{"boolean"}, + Format: "", + }, + }, + "consistentAck": { + SchemaProps: spec.SchemaProps{ + Description: "ConsistentAck enables consistent acknowledgement of offsets to ISB throughout the pipeline.", + Type: []string{"boolean"}, + Format: "", + }, + }, + "dedupWindow": { + SchemaProps: spec.SchemaProps{ + Description: "DedupWindow is the duration for which the deduplication will be enabled.", + Ref: ref("k8s.io/apimachinery/pkg/apis/meta/v1.Duration"), + }, + }, + }, + }, + }, + Dependencies: []string{ + "k8s.io/apimachinery/pkg/apis/meta/v1.Duration"}, + } +} + func schema_pkg_apis_numaflow_v1alpha1_FixedWindow(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -4024,11 +4059,17 @@ func schema_pkg_apis_numaflow_v1alpha1_PipelineSpec(ref common.ReferenceCallback Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.InterStepBuffer"), }, }, + "exactlyOnce": { + SchemaProps: spec.SchemaProps{ + Description: "ExactlyOnce is the exactly-once settings for the pipeline.", + Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ExactlyOnce"), + }, + }, }, }, }, Dependencies: []string{ - "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.AbstractVertex", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Edge", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.InterStepBuffer", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Lifecycle", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.PipelineLimits", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.SideInput", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Templates", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Watermark"}, + "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.AbstractVertex", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Edge", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ExactlyOnce", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.InterStepBuffer", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Lifecycle", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.PipelineLimits", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.SideInput", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Templates", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Watermark"}, } } @@ -6757,12 +6798,18 @@ func schema_pkg_apis_numaflow_v1alpha1_VertexSpec(ref common.ReferenceCallback) Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.InterStepBuffer"), }, }, + "exactlyOnce": { + SchemaProps: spec.SchemaProps{ + Description: "ExactlyOnce indicates the exactly-once settings for the vertex, it's populated from the pipeline exactlyOnce settings.", + Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ExactlyOnce"), + }, + }, }, Required: []string{"name", "pipelineName"}, }, }, Dependencies: []string{ - "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.CombinedEdge", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ContainerTemplate", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.InterStepBuffer", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Metadata", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Scale", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Sink", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Source", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.UDF", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.UpdateStrategy", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.VertexLifecycle", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.VertexLimits", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Watermark", "k8s.io/api/core/v1.Affinity", "k8s.io/api/core/v1.Container", "k8s.io/api/core/v1.LocalObjectReference", "k8s.io/api/core/v1.PodDNSConfig", "k8s.io/api/core/v1.PodResourceClaim", "k8s.io/api/core/v1.PodSecurityContext", "k8s.io/api/core/v1.Toleration", "k8s.io/api/core/v1.Volume"}, + "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.CombinedEdge", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ContainerTemplate", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ExactlyOnce", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.InterStepBuffer", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Metadata", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Scale", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Sink", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Source", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.UDF", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.UpdateStrategy", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.VertexLifecycle", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.VertexLimits", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Watermark", "k8s.io/api/core/v1.Affinity", "k8s.io/api/core/v1.Container", "k8s.io/api/core/v1.LocalObjectReference", "k8s.io/api/core/v1.PodDNSConfig", "k8s.io/api/core/v1.PodResourceClaim", "k8s.io/api/core/v1.PodSecurityContext", "k8s.io/api/core/v1.Toleration", "k8s.io/api/core/v1.Volume"}, } } diff --git a/pkg/isbsvc/interface.go b/pkg/isbsvc/interface.go index 1b58621318..b2ecbadf31 100644 --- a/pkg/isbsvc/interface.go +++ b/pkg/isbsvc/interface.go @@ -19,6 +19,7 @@ package isbsvc import ( "context" "fmt" + "time" ) // ISBService is an interface used to do the operations on ISBSvc @@ -37,6 +38,9 @@ type ISBService interface { type createOptions struct { // config is configuration for the to be created buffers and buckets config string + // dedupWindow is the duration for deduplication window when exactly-once is enabled + // If nil, deduplication is disabled + dedupWindow *time.Duration } type CreateOption func(*createOptions) error @@ -49,6 +53,14 @@ func WithConfig(conf string) CreateOption { } } +// WithDedupWindow sets the deduplication window duration for exactly-once processing +func WithDedupWindow(d time.Duration) CreateOption { + return func(o *createOptions) error { + o.dedupWindow = &d + return nil + } +} + // BufferInfo wraps the buffer state information type BufferInfo struct { Name string diff --git a/pkg/isbsvc/jetstream_service.go b/pkg/isbsvc/jetstream_service.go index 3cc781c5ad..8b996cb3e2 100644 --- a/pkg/isbsvc/jetstream_service.go +++ b/pkg/isbsvc/jetstream_service.go @@ -175,18 +175,25 @@ func (jss *jetStreamSvc) CreateBuffersAndBuckets(ctx context.Context, buffers, b discard = nats.DiscardOld } - if _, err := jss.js.AddStream(&nats.StreamConfig{ - Name: streamName, - Subjects: []string{streamName}, // Use the stream name as the only subject - Retention: retention, - Discard: discard, - MaxMsgs: v.GetInt64("stream.maxMsgs"), - MaxAge: v.GetDuration("stream.maxAge"), - MaxBytes: v.GetInt64("stream.maxBytes"), - Storage: nats.StorageType(v.GetInt("stream.storage")), - Replicas: v.GetInt("stream.replicas"), - Duplicates: v.GetDuration("stream.duplicates"), // No duplication in this period - }); err != nil { + streamConfig := &nats.StreamConfig{ + Name: streamName, + Subjects: []string{streamName}, // Use the stream name as the only subject + Retention: retention, + Discard: discard, + MaxMsgs: v.GetInt64("stream.maxMsgs"), + MaxAge: v.GetDuration("stream.maxAge"), + MaxBytes: v.GetInt64("stream.maxBytes"), + Storage: nats.StorageType(v.GetInt("stream.storage")), + Replicas: v.GetInt("stream.replicas"), + } + // Only set Duplicates window when exactly-once is enabled + if creatOpts.dedupWindow != nil { + streamConfig.Duplicates = *creatOpts.dedupWindow + } else { + streamConfig.Duplicates = 0 + } + + if _, err := jss.js.AddStream(streamConfig); err != nil { return fmt.Errorf("failed to create stream %q and buffers, %w", streamName, err) } log.Infow("Succeeded to create a stream", zap.String("stream", streamName)) diff --git a/pkg/reconciler/pipeline/controller.go b/pkg/reconciler/pipeline/controller.go index 310b009e97..de7b42623f 100644 --- a/pkg/reconciler/pipeline/controller.go +++ b/pkg/reconciler/pipeline/controller.go @@ -329,6 +329,10 @@ func (r *pipelineReconciler) reconcileFixedResources(ctx context.Context, pl *df } args := []string{fmt.Sprintf("--buffers=%s", strings.Join(bfs, ",")), fmt.Sprintf("--buckets=%s", strings.Join(bks, ","))} args = append(args, fmt.Sprintf("--side-inputs-store=%s", pl.GetSideInputsStoreName())) + // Add dedup window when exactly-once is enabled + if pl.Spec.ExactlyOnce != nil && pl.Spec.ExactlyOnce.Enabled { + args = append(args, fmt.Sprintf("--dedup-window=%s", pl.Spec.ExactlyOnce.GetDedupWindow())) + } batchJob := buildISBBatchJob(pl, r.image, isbSvc.Status.Config, "isbsvc-create", args, "cre") if err := r.client.Create(ctx, batchJob); err != nil && !apierrors.IsAlreadyExists(err) { r.recorder.Eventf(pl, corev1.EventTypeWarning, "CreateJobForISBCreationFailed", "Failed to create a Job: %w", err.Error()) @@ -685,6 +689,7 @@ func buildVertices(pl *dfv1.Pipeline) map[string]dfv1.Vertex { DesiredPhase: dfv1.VertexPhase(pl.GetDesiredPhase()), }, InterStepBuffer: pl.Spec.InterStepBuffer, + ExactlyOnce: pl.Spec.ExactlyOnce, } hash := sharedutil.MustHash(spec.DeepCopyWithoutReplicasAndLifecycle()) obj := dfv1.Vertex{ diff --git a/rust/numaflow-core/src/config/pipeline.rs b/rust/numaflow-core/src/config/pipeline.rs index 85f964adce..d50e5407b8 100644 --- a/rust/numaflow-core/src/config/pipeline.rs +++ b/rust/numaflow-core/src/config/pipeline.rs @@ -634,8 +634,22 @@ impl PipelineConfig { }); } + // Parse exactly_once from the spec level + let exactly_once = match vertex_obj.spec.exactly_once.as_ref() { + None => isb::ExactlyOnceConfig::default(), + Some(eo) => isb::ExactlyOnceConfig { + enabled: eo.enabled.unwrap_or(false), + consistent_ack: eo.consistent_ack.unwrap_or(true), + }, + }; + let isb_config: Option = match vertex_obj.spec.inter_step_buffer.as_ref() { - None => None, + None => Some(isb::ISBConfig { + compression: isb::Compression { + compress_type: isb::CompressionType::None, + }, + exactly_once, + }), Some(isb_spec) => { let compress_type = match isb_spec.compression.as_ref() { None => isb::CompressionType::None, @@ -655,6 +669,7 @@ impl PipelineConfig { }; Some(isb::ISBConfig { compression: isb::Compression { compress_type }, + exactly_once, }) } }; diff --git a/rust/numaflow-core/src/config/pipeline/isb.rs b/rust/numaflow-core/src/config/pipeline/isb.rs index 380fb24037..69faa3e424 100644 --- a/rust/numaflow-core/src/config/pipeline/isb.rs +++ b/rust/numaflow-core/src/config/pipeline/isb.rs @@ -198,6 +198,17 @@ mod tests { #[derive(Debug, Clone, PartialEq)] pub(crate) struct ISBConfig { pub(crate) compression: Compression, + pub(crate) exactly_once: ExactlyOnceConfig, +} + +/// Configuration for exactly-once semantics. +#[derive(Debug, Clone, PartialEq, Default)] +pub(crate) struct ExactlyOnceConfig { + /// Whether exactly-once processing is enabled. + pub(crate) enabled: bool, + /// Whether consistent acknowledgement of offsets to ISB is enabled. + /// When true, double_ack is used; when false, simple ack is used. + pub(crate) consistent_ack: bool, } #[derive(Debug, Clone, PartialEq)] diff --git a/rust/numaflow-core/src/pipeline/isb/jetstream/js_reader.rs b/rust/numaflow-core/src/pipeline/isb/jetstream/js_reader.rs index 48e003d70e..b109c08a28 100644 --- a/rust/numaflow-core/src/pipeline/isb/jetstream/js_reader.rs +++ b/rust/numaflow-core/src/pipeline/isb/jetstream/js_reader.rs @@ -108,6 +108,8 @@ pub(crate) struct JetStreamReader { offset2jsmsg: Arc>>, /// interval at which we should send wip ack to avoid redelivery. wip_ack_interval: Duration, + /// whether to use double_ack (consistent ack) or simple ack + consistent_ack: bool, } impl JetStreamReader { @@ -127,13 +129,21 @@ impl JetStreamReader { .map_err(|e| Error::ISB(format!("Failed to get consumer info {e}")))?; let ack_wait_seconds = consumer_info.config.ack_wait.as_secs(); + let (compression_type, consistent_ack) = match isb_config { + Some(config) => ( + Some(config.compression.compress_type), + config.exactly_once.consistent_ack, + ), + None => (None, false), + }; Ok(Self { stream, read_consumer: Arc::new(consumer.clone()), js_context: Arc::new(js_ctx), - compression_type: isb_config.map(|c| c.compression.compress_type), + compression_type, offset2jsmsg: Arc::new(RwLock::new(HashMap::new())), wip_ack_interval: Duration::from_secs(ack_wait_seconds / 3), // give 2 chances + consistent_ack, }) } @@ -203,15 +213,28 @@ impl JetStreamReader { /// Mark message as in progress by sending work in progress ack. pub(crate) async fn mark_wip(&self, offset: &Offset) -> Result<()> { if let Some(msg) = self.get_js_message(offset, false) { - let _ = msg.ack_with(AckKind::Progress).await; + msg.ack_with(AckKind::Progress).await.map_err(|e| { + Error::ISB(format!( + "Failed to send work in progress ack to JetStream: {e}" + )) + })?; } Ok(()) } - /// Acknowledge the offset + /// Acknowledge the offset. + /// Uses double_ack when consistent_ack is enabled, otherwise uses simple ack. pub(crate) async fn ack(&self, offset: &Offset) -> Result<()> { if let Some(msg) = self.get_js_message(offset, true) { - let _ = msg.double_ack().await; + if self.consistent_ack { + msg.double_ack() + .await + .map_err(|e| Error::ISB(format!("Failed to double ack message: {e}")))?; + } else { + msg.ack() + .await + .map_err(|e| Error::ISB(format!("Failed to ack message: {e}")))?; + } } Ok(()) } @@ -219,7 +242,9 @@ impl JetStreamReader { /// Negatively acknowledge the offset pub(crate) async fn nack(&self, offset: &Offset) -> Result<()> { if let Some(msg) = self.get_js_message(offset, true) { - let _ = msg.ack_with(AckKind::Nak(None)).await; + msg.ack_with(AckKind::Nak(None)) + .await + .map_err(|e| Error::ISB(format!("Failed to nack message: {e}")))?; } Ok(()) } @@ -310,6 +335,7 @@ mod tests { compression: Compression { compress_type: CompressionType::Gzip, }, + exactly_once: crate::config::pipeline::isb::ExactlyOnceConfig::default(), }; let mut js_reader = JetStreamReader::new(stream.clone(), context.clone(), Some(isb_config)) diff --git a/rust/numaflow-core/src/pipeline/isb/reader.rs b/rust/numaflow-core/src/pipeline/isb/reader.rs index d79538e233..f873e00ae9 100644 --- a/rust/numaflow-core/src/pipeline/isb/reader.rs +++ b/rust/numaflow-core/src/pipeline/isb/reader.rs @@ -186,11 +186,7 @@ impl ISBReader { let interval = fixed::Interval::from_millis(ACK_RETRY_INTERVAL).take(ACK_RETRY_ATTEMPTS); let _ = Retry::new( interval, - async || { - jsr.ack(offset) - .await - .map_err(|e| Error::ISB(format!("Failed to send Ack to JetStream: {e}"))) - }, + async || jsr.ack(offset).await, |e: &Error| { if cancel.is_cancelled() { error!( @@ -212,14 +208,7 @@ impl ISBReader { let interval = fixed::Interval::from_millis(ACK_RETRY_INTERVAL).take(ACK_RETRY_ATTEMPTS); let _ = Retry::new( interval, - async || { - let nack_result = jsr - .nack(offset) - .await - .map_err(|e| Error::ISB(format!("Failed to send Nak to JetStream: {e}"))); - info!(?offset, "Nak sent for offset"); - nack_result - }, + async || jsr.nack(offset).await, |e: &Error| { if cancel.is_cancelled() { error!( @@ -234,6 +223,7 @@ impl ISBReader { }, ) .await; + info!(?offset, "Nak sent for offset"); } /// Creates and writes a WMB message for reduce vertex when it is idle. @@ -886,6 +876,7 @@ mod tests { compression: crate::config::pipeline::isb::Compression { compress_type: CompressionType::Gzip, }, + exactly_once: crate::config::pipeline::isb::ExactlyOnceConfig::default(), }; let buf_reader_config = BufferReaderConfig { diff --git a/rust/numaflow-models/src/models/exactly_once.rs b/rust/numaflow-models/src/models/exactly_once.rs new file mode 100644 index 0000000000..c74f97a451 --- /dev/null +++ b/rust/numaflow-models/src/models/exactly_once.rs @@ -0,0 +1,39 @@ +/* +Copyright 2022 The Numaproj Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by Openapi Generator. DO NOT EDIT. + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct ExactlyOnce { + /// ConsistentAck enables consistent acknowledgement of offsets to ISB throughout the pipeline. + #[serde(rename = "consistentAck", skip_serializing_if = "Option::is_none")] + pub consistent_ack: Option, + #[serde(rename = "dedupWindow", skip_serializing_if = "Option::is_none")] + pub dedup_window: Option, + /// Enabled enables exactly once processing. + #[serde(rename = "enabled", skip_serializing_if = "Option::is_none")] + pub enabled: Option, +} + +impl ExactlyOnce { + pub fn new() -> ExactlyOnce { + ExactlyOnce { + consistent_ack: None, + dedup_window: None, + enabled: None, + } + } +} diff --git a/rust/numaflow-models/src/models/mod.rs b/rust/numaflow-models/src/models/mod.rs index 1a85098ae7..7dd149227f 100644 --- a/rust/numaflow-models/src/models/mod.rs +++ b/rust/numaflow-models/src/models/mod.rs @@ -32,6 +32,8 @@ pub mod daemon_template; pub use self::daemon_template::DaemonTemplate; pub mod edge; pub use self::edge::Edge; +pub mod exactly_once; +pub use self::exactly_once::ExactlyOnce; pub mod fixed_window; pub use self::fixed_window::FixedWindow; pub mod forward_conditions; diff --git a/rust/numaflow-models/src/models/pipeline_spec.rs b/rust/numaflow-models/src/models/pipeline_spec.rs index 352972a64b..0fe17adbac 100644 --- a/rust/numaflow-models/src/models/pipeline_spec.rs +++ b/rust/numaflow-models/src/models/pipeline_spec.rs @@ -21,6 +21,8 @@ pub struct PipelineSpec { /// Edges define the relationships between vertices #[serde(rename = "edges", skip_serializing_if = "Option::is_none")] pub edges: Option>, + #[serde(rename = "exactlyOnce", skip_serializing_if = "Option::is_none")] + pub exactly_once: Option>, #[serde(rename = "interStepBuffer", skip_serializing_if = "Option::is_none")] pub inter_step_buffer: Option>, /// InterStepBufferServiceName is the name of the InterStepBufferService to be used by the pipeline @@ -48,6 +50,7 @@ impl PipelineSpec { pub fn new() -> PipelineSpec { PipelineSpec { edges: None, + exactly_once: None, inter_step_buffer: None, inter_step_buffer_service_name: None, lifecycle: None, diff --git a/rust/numaflow-models/src/models/vertex_spec.rs b/rust/numaflow-models/src/models/vertex_spec.rs index 55efcd8af3..ef3117c19f 100644 --- a/rust/numaflow-models/src/models/vertex_spec.rs +++ b/rust/numaflow-models/src/models/vertex_spec.rs @@ -33,6 +33,8 @@ pub struct VertexSpec { /// Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. #[serde(rename = "dnsPolicy", skip_serializing_if = "Option::is_none")] pub dns_policy: Option, + #[serde(rename = "exactlyOnce", skip_serializing_if = "Option::is_none")] + pub exactly_once: Option>, #[serde(rename = "fromEdges", skip_serializing_if = "Option::is_none")] pub from_edges: Option>, /// ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod @@ -128,6 +130,7 @@ impl VertexSpec { container_template: None, dns_config: None, dns_policy: None, + exactly_once: None, from_edges: None, image_pull_secrets: None, init_container_template: None, From 869d4672b2def2e157d3f1a7d48a6213d0b2e0e1 Mon Sep 17 00:00:00 2001 From: Yashash H L Date: Wed, 17 Dec 2025 12:48:45 +0530 Subject: [PATCH 2/4] address review comments Signed-off-by: Yashash H L --- rust/numaflow-core/src/config/pipeline.rs | 20 ++++++---- rust/numaflow-core/src/config/pipeline/isb.rs | 7 ++-- .../src/mapper/map/user_defined.rs | 8 ++-- .../src/pipeline/isb/jetstream/js_reader.rs | 27 ++++++++------ rust/numaflow-core/src/pipeline/isb/reader.rs | 2 +- rust/numaflow-core/src/sinker/actor.rs | 34 ----------------- rust/numaflow-models/hack/swaggerfilter.py | 1 + .../src/models/at_least_once.rs | 29 +++++++++++++++ rust/numaflow-models/src/models/delivery.rs | 37 +++++++++++++++++++ .../src/models/exactly_once.rs | 7 ++-- rust/numaflow-models/src/models/mod.rs | 4 ++ .../src/models/pipeline_spec.rs | 6 +-- .../numaflow-models/src/models/vertex_spec.rs | 6 +-- 13 files changed, 117 insertions(+), 71 deletions(-) create mode 100644 rust/numaflow-models/src/models/at_least_once.rs create mode 100644 rust/numaflow-models/src/models/delivery.rs diff --git a/rust/numaflow-core/src/config/pipeline.rs b/rust/numaflow-core/src/config/pipeline.rs index d50e5407b8..11dffcbb24 100644 --- a/rust/numaflow-core/src/config/pipeline.rs +++ b/rust/numaflow-core/src/config/pipeline.rs @@ -634,14 +634,18 @@ impl PipelineConfig { }); } - // Parse exactly_once from the spec level - let exactly_once = match vertex_obj.spec.exactly_once.as_ref() { - None => isb::ExactlyOnceConfig::default(), - Some(eo) => isb::ExactlyOnceConfig { - enabled: eo.enabled.unwrap_or(false), - consistent_ack: eo.consistent_ack.unwrap_or(true), - }, - }; + // Parse exactly_once from the delivery settings + // If delivery.exactly_once is Some, exactly-once is enabled + // double_ack is used only when exactly_once is set AND consistent_ack is true + let exactly_once = vertex_obj + .spec + .delivery + .as_ref() + .and_then(|d| d.exactly_once.as_ref()) + .map(|eo| isb::ExactlyOnceConfig { + // Default to false if not specified + consistent_ack: eo.consistent_ack.unwrap_or(false), + }); let isb_config: Option = match vertex_obj.spec.inter_step_buffer.as_ref() { None => Some(isb::ISBConfig { diff --git a/rust/numaflow-core/src/config/pipeline/isb.rs b/rust/numaflow-core/src/config/pipeline/isb.rs index 69faa3e424..71e137a117 100644 --- a/rust/numaflow-core/src/config/pipeline/isb.rs +++ b/rust/numaflow-core/src/config/pipeline/isb.rs @@ -198,14 +198,13 @@ mod tests { #[derive(Debug, Clone, PartialEq)] pub(crate) struct ISBConfig { pub(crate) compression: Compression, - pub(crate) exactly_once: ExactlyOnceConfig, + /// Exactly-once configuration. None means at-least-once delivery. + pub(crate) exactly_once: Option, } /// Configuration for exactly-once semantics. -#[derive(Debug, Clone, PartialEq, Default)] +#[derive(Debug, Clone, PartialEq)] pub(crate) struct ExactlyOnceConfig { - /// Whether exactly-once processing is enabled. - pub(crate) enabled: bool, /// Whether consistent acknowledgement of offsets to ISB is enabled. /// When true, double_ack is used; when false, simple ack is used. pub(crate) consistent_ack: bool, diff --git a/rust/numaflow-core/src/mapper/map/user_defined.rs b/rust/numaflow-core/src/mapper/map/user_defined.rs index c766103089..3a9a9e4397 100644 --- a/rust/numaflow-core/src/mapper/map/user_defined.rs +++ b/rust/numaflow-core/src/mapper/map/user_defined.rs @@ -520,9 +520,11 @@ impl UserDefinedStreamMap { // only insert if we are able to send the message to the server if let Err(e) = self.read_tx.send(message.into()).await { error!(?e, "Failed to send message to server"); - let _ = respond_to.send(Err(Error::Mapper(format!( - "failed to send message to stream map server: {e}" - )))); + let _ = respond_to + .send(Err(Error::Mapper(format!( + "failed to send message to stream map server: {e}" + )))) + .await; return; } diff --git a/rust/numaflow-core/src/pipeline/isb/jetstream/js_reader.rs b/rust/numaflow-core/src/pipeline/isb/jetstream/js_reader.rs index b109c08a28..b61785aeb9 100644 --- a/rust/numaflow-core/src/pipeline/isb/jetstream/js_reader.rs +++ b/rust/numaflow-core/src/pipeline/isb/jetstream/js_reader.rs @@ -108,8 +108,8 @@ pub(crate) struct JetStreamReader { offset2jsmsg: Arc>>, /// interval at which we should send wip ack to avoid redelivery. wip_ack_interval: Duration, - /// whether to use double_ack (consistent ack) or simple ack - consistent_ack: bool, + /// whether to use double_ack (exactly-once with consistent_ack) or simple ack + use_double_ack: bool, } impl JetStreamReader { @@ -129,11 +129,16 @@ impl JetStreamReader { .map_err(|e| Error::ISB(format!("Failed to get consumer info {e}")))?; let ack_wait_seconds = consumer_info.config.ack_wait.as_secs(); - let (compression_type, consistent_ack) = match isb_config { - Some(config) => ( - Some(config.compression.compress_type), - config.exactly_once.consistent_ack, - ), + let (compression_type, use_double_ack) = match isb_config { + Some(config) => { + let compression = Some(config.compression.compress_type); + // Use double_ack only when exactly_once is set AND consistent_ack is true + let double_ack = config + .exactly_once + .map(|eo| eo.consistent_ack) + .unwrap_or(false); + (compression, double_ack) + } None => (None, false), }; Ok(Self { @@ -143,7 +148,7 @@ impl JetStreamReader { compression_type, offset2jsmsg: Arc::new(RwLock::new(HashMap::new())), wip_ack_interval: Duration::from_secs(ack_wait_seconds / 3), // give 2 chances - consistent_ack, + use_double_ack, }) } @@ -223,10 +228,10 @@ impl JetStreamReader { } /// Acknowledge the offset. - /// Uses double_ack when consistent_ack is enabled, otherwise uses simple ack. + /// Uses double_ack when exactly_once with consistent_ack is enabled, otherwise uses simple ack. pub(crate) async fn ack(&self, offset: &Offset) -> Result<()> { if let Some(msg) = self.get_js_message(offset, true) { - if self.consistent_ack { + if self.use_double_ack { msg.double_ack() .await .map_err(|e| Error::ISB(format!("Failed to double ack message: {e}")))?; @@ -335,7 +340,7 @@ mod tests { compression: Compression { compress_type: CompressionType::Gzip, }, - exactly_once: crate::config::pipeline::isb::ExactlyOnceConfig::default(), + exactly_once: None, }; let mut js_reader = JetStreamReader::new(stream.clone(), context.clone(), Some(isb_config)) diff --git a/rust/numaflow-core/src/pipeline/isb/reader.rs b/rust/numaflow-core/src/pipeline/isb/reader.rs index f873e00ae9..52a9929a2e 100644 --- a/rust/numaflow-core/src/pipeline/isb/reader.rs +++ b/rust/numaflow-core/src/pipeline/isb/reader.rs @@ -876,7 +876,7 @@ mod tests { compression: crate::config::pipeline::isb::Compression { compress_type: CompressionType::Gzip, }, - exactly_once: crate::config::pipeline::isb::ExactlyOnceConfig::default(), + exactly_once: None, }; let buf_reader_config = BufferReaderConfig { diff --git a/rust/numaflow-core/src/sinker/actor.rs b/rust/numaflow-core/src/sinker/actor.rs index 423581c1b2..29eaae110f 100644 --- a/rust/numaflow-core/src/sinker/actor.rs +++ b/rust/numaflow-core/src/sinker/actor.rs @@ -242,37 +242,3 @@ where } } } - -#[cfg(test)] -mod tests { - use std::collections::HashMap; - use std::ops::Deref; - use std::ops::DerefMut; - use std::sync::Arc; - - #[derive(Debug, Clone)] - struct Inner { - value: usize, - map: HashMap, - } - - #[derive(Debug, Clone)] - struct Outer { - value: Arc, - } - - #[test] - fn test_metadata_clone() { - let inner = Inner { - value: 42, - map: HashMap::new(), - }; - let mut outer = Outer { - value: Arc::new(inner), - }; - let cloned = Inner { - value: outer.value.value, - map: Arc::make_mut(&mut outer.value).map.clone(), - }; - } -} diff --git a/rust/numaflow-models/hack/swaggerfilter.py b/rust/numaflow-models/hack/swaggerfilter.py index 9ab7881664..476dc5f8d9 100755 --- a/rust/numaflow-models/hack/swaggerfilter.py +++ b/rust/numaflow-models/hack/swaggerfilter.py @@ -40,6 +40,7 @@ def main(): "io.numaproj.numaflow.v1alpha1.RateLimiterInMemoryStore", "io.numaproj.numaflow.v1alpha1.RateLimiterRelaxed", "io.numaproj.numaflow.v1alpha1.RateLimiterScheduled", + "io.numaproj.numaflow.v1alpha1.AtLeastOnce", ]: defs[k]["allOf"] = [] diff --git a/rust/numaflow-models/src/models/at_least_once.rs b/rust/numaflow-models/src/models/at_least_once.rs new file mode 100644 index 0000000000..b4649c5ad2 --- /dev/null +++ b/rust/numaflow-models/src/models/at_least_once.rs @@ -0,0 +1,29 @@ +/* +Copyright 2022 The Numaproj Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by Openapi Generator. DO NOT EDIT. + +/// AtLeastOnce : AtLeastOnce is the at-least-once delivery settings (default behavior). + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct AtLeastOnce {} + +impl AtLeastOnce { + /// AtLeastOnce is the at-least-once delivery settings (default behavior). + pub fn new() -> AtLeastOnce { + AtLeastOnce {} + } +} diff --git a/rust/numaflow-models/src/models/delivery.rs b/rust/numaflow-models/src/models/delivery.rs new file mode 100644 index 0000000000..84a308bae8 --- /dev/null +++ b/rust/numaflow-models/src/models/delivery.rs @@ -0,0 +1,37 @@ +/* +Copyright 2022 The Numaproj Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by Openapi Generator. DO NOT EDIT. + +/// Delivery : Delivery is the delivery semantics for the pipeline. + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct Delivery { + #[serde(rename = "atLeastOnce", skip_serializing_if = "Option::is_none")] + pub at_least_once: Option>, + #[serde(rename = "exactlyOnce", skip_serializing_if = "Option::is_none")] + pub exactly_once: Option>, +} + +impl Delivery { + /// Delivery is the delivery semantics for the pipeline. + pub fn new() -> Delivery { + Delivery { + at_least_once: None, + exactly_once: None, + } + } +} diff --git a/rust/numaflow-models/src/models/exactly_once.rs b/rust/numaflow-models/src/models/exactly_once.rs index c74f97a451..03ee5b818b 100644 --- a/rust/numaflow-models/src/models/exactly_once.rs +++ b/rust/numaflow-models/src/models/exactly_once.rs @@ -16,6 +16,8 @@ limitations under the License. // Code generated by Openapi Generator. DO NOT EDIT. +/// ExactlyOnce : ExactlyOnce is the exactly-once delivery settings. + #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub struct ExactlyOnce { /// ConsistentAck enables consistent acknowledgement of offsets to ISB throughout the pipeline. @@ -23,17 +25,14 @@ pub struct ExactlyOnce { pub consistent_ack: Option, #[serde(rename = "dedupWindow", skip_serializing_if = "Option::is_none")] pub dedup_window: Option, - /// Enabled enables exactly once processing. - #[serde(rename = "enabled", skip_serializing_if = "Option::is_none")] - pub enabled: Option, } impl ExactlyOnce { + /// ExactlyOnce is the exactly-once delivery settings. pub fn new() -> ExactlyOnce { ExactlyOnce { consistent_ack: None, dedup_window: None, - enabled: None, } } } diff --git a/rust/numaflow-models/src/models/mod.rs b/rust/numaflow-models/src/models/mod.rs index 7dd149227f..a9047a3bf7 100644 --- a/rust/numaflow-models/src/models/mod.rs +++ b/rust/numaflow-models/src/models/mod.rs @@ -6,6 +6,8 @@ pub mod abstract_vertex; pub use self::abstract_vertex::AbstractVertex; pub mod accumulator_window; pub use self::accumulator_window::AccumulatorWindow; +pub mod at_least_once; +pub use self::at_least_once::AtLeastOnce; pub mod authorization; pub use self::authorization::Authorization; pub mod aws_assume_role; @@ -30,6 +32,8 @@ pub mod container_template; pub use self::container_template::ContainerTemplate; pub mod daemon_template; pub use self::daemon_template::DaemonTemplate; +pub mod delivery; +pub use self::delivery::Delivery; pub mod edge; pub use self::edge::Edge; pub mod exactly_once; diff --git a/rust/numaflow-models/src/models/pipeline_spec.rs b/rust/numaflow-models/src/models/pipeline_spec.rs index 0fe17adbac..0fa77577d6 100644 --- a/rust/numaflow-models/src/models/pipeline_spec.rs +++ b/rust/numaflow-models/src/models/pipeline_spec.rs @@ -18,11 +18,11 @@ limitations under the License. #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub struct PipelineSpec { + #[serde(rename = "delivery", skip_serializing_if = "Option::is_none")] + pub delivery: Option>, /// Edges define the relationships between vertices #[serde(rename = "edges", skip_serializing_if = "Option::is_none")] pub edges: Option>, - #[serde(rename = "exactlyOnce", skip_serializing_if = "Option::is_none")] - pub exactly_once: Option>, #[serde(rename = "interStepBuffer", skip_serializing_if = "Option::is_none")] pub inter_step_buffer: Option>, /// InterStepBufferServiceName is the name of the InterStepBufferService to be used by the pipeline @@ -49,8 +49,8 @@ pub struct PipelineSpec { impl PipelineSpec { pub fn new() -> PipelineSpec { PipelineSpec { + delivery: None, edges: None, - exactly_once: None, inter_step_buffer: None, inter_step_buffer_service_name: None, lifecycle: None, diff --git a/rust/numaflow-models/src/models/vertex_spec.rs b/rust/numaflow-models/src/models/vertex_spec.rs index ef3117c19f..e8e505a0e7 100644 --- a/rust/numaflow-models/src/models/vertex_spec.rs +++ b/rust/numaflow-models/src/models/vertex_spec.rs @@ -28,13 +28,13 @@ pub struct VertexSpec { pub automount_service_account_token: Option, #[serde(rename = "containerTemplate", skip_serializing_if = "Option::is_none")] pub container_template: Option>, + #[serde(rename = "delivery", skip_serializing_if = "Option::is_none")] + pub delivery: Option>, #[serde(rename = "dnsConfig", skip_serializing_if = "Option::is_none")] pub dns_config: Option, /// Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'. #[serde(rename = "dnsPolicy", skip_serializing_if = "Option::is_none")] pub dns_policy: Option, - #[serde(rename = "exactlyOnce", skip_serializing_if = "Option::is_none")] - pub exactly_once: Option>, #[serde(rename = "fromEdges", skip_serializing_if = "Option::is_none")] pub from_edges: Option>, /// ImagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling any of the images used by this PodSpec. If specified, these secrets will be passed to individual puller implementations for them to use. For example, in the case of docker, only DockerConfig type secrets are honored. More info: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod @@ -128,9 +128,9 @@ impl VertexSpec { affinity: None, automount_service_account_token: None, container_template: None, + delivery: None, dns_config: None, dns_policy: None, - exactly_once: None, from_edges: None, image_pull_secrets: None, init_container_template: None, From 2c1f8e7c22fcc52b2109861cf5d65ae44f5010d5 Mon Sep 17 00:00:00 2001 From: Yashash H L Date: Wed, 17 Dec 2025 12:50:26 +0530 Subject: [PATCH 3/4] controller changes Signed-off-by: Yashash H L --- api/json-schema/schema.json | 39 +- api/openapi-spec/swagger.json | 39 +- .../full/numaflow.numaproj.io_pipelines.yaml | 26 +- ...numaflow.numaproj.io_servingpipelines.yaml | 26 +- .../full/numaflow.numaproj.io_vertices.yaml | 26 +- config/install.yaml | 78 +- config/namespace-install.yaml | 78 +- docs/APIs.md | 168 +- pkg/apis/numaflow/v1alpha1/generated.pb.go | 1843 ++++++++++------- pkg/apis/numaflow/v1alpha1/generated.proto | 34 +- pkg/apis/numaflow/v1alpha1/pipeline_types.go | 50 +- pkg/apis/numaflow/v1alpha1/vertex_types.go | 4 +- .../v1alpha1/zz_generated.deepcopy.go | 54 +- .../numaflow/v1alpha1/zz_generated.openapi.go | 66 +- pkg/reconciler/pipeline/controller.go | 6 +- 15 files changed, 1550 insertions(+), 987 deletions(-) diff --git a/api/json-schema/schema.json b/api/json-schema/schema.json index 79dc9a42ea..5f8636f6a0 100644 --- a/api/json-schema/schema.json +++ b/api/json-schema/schema.json @@ -19789,6 +19789,10 @@ }, "type": "object" }, + "io.numaproj.numaflow.v1alpha1.AtLeastOnce": { + "description": "AtLeastOnce is the at-least-once delivery settings (default behavior).", + "type": "object" + }, "io.numaproj.numaflow.v1alpha1.Authorization": { "properties": { "token": { @@ -20102,6 +20106,20 @@ }, "type": "object" }, + "io.numaproj.numaflow.v1alpha1.Delivery": { + "description": "Delivery is the delivery semantics for the pipeline.", + "properties": { + "atLeastOnce": { + "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.AtLeastOnce", + "description": "AtLeastOnce enables at-least-once processing semantics (default behavior)." + }, + "exactlyOnce": { + "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.ExactlyOnce", + "description": "ExactlyOnce enables exactly-once processing semantics." + } + }, + "type": "object" + }, "io.numaproj.numaflow.v1alpha1.Edge": { "properties": { "conditions": { @@ -20126,6 +20144,7 @@ "type": "object" }, "io.numaproj.numaflow.v1alpha1.ExactlyOnce": { + "description": "ExactlyOnce is the exactly-once delivery settings.", "properties": { "consistentAck": { "description": "ConsistentAck enables consistent acknowledgement of offsets to ISB throughout the pipeline.", @@ -20134,10 +20153,6 @@ "dedupWindow": { "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Duration", "description": "DedupWindow is the duration for which the deduplication will be enabled." - }, - "enabled": { - "description": "Enabled enables exactly once processing.", - "type": "boolean" } }, "type": "object" @@ -21547,6 +21562,10 @@ }, "io.numaproj.numaflow.v1alpha1.PipelineSpec": { "properties": { + "delivery": { + "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.Delivery", + "description": "Delivery is the delivery semantics for the pipeline." + }, "edges": { "description": "Edges define the relationships between vertices", "items": { @@ -21554,10 +21573,6 @@ }, "type": "array" }, - "exactlyOnce": { - "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.ExactlyOnce", - "description": "ExactlyOnce is the exactly-once settings for the pipeline." - }, "interStepBuffer": { "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.InterStepBuffer", "description": "InterStepBuffer configuration specific to this pipeline." @@ -22931,6 +22946,10 @@ "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.ContainerTemplate", "description": "Container template for the main numa container." }, + "delivery": { + "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.Delivery", + "description": "Delivery indicates the delivery semantics for the vertex, it's populated from the pipeline delivery settings." + }, "dnsConfig": { "$ref": "#/definitions/io.k8s.api.core.v1.PodDNSConfig", "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy." @@ -22939,10 +22958,6 @@ "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", "type": "string" }, - "exactlyOnce": { - "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.ExactlyOnce", - "description": "ExactlyOnce indicates the exactly-once settings for the vertex, it's populated from the pipeline exactlyOnce settings." - }, "fromEdges": { "items": { "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.CombinedEdge" diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json index fc816f46ff..7891c7fe91 100644 --- a/api/openapi-spec/swagger.json +++ b/api/openapi-spec/swagger.json @@ -19793,6 +19793,10 @@ } } }, + "io.numaproj.numaflow.v1alpha1.AtLeastOnce": { + "description": "AtLeastOnce is the at-least-once delivery settings (default behavior).", + "type": "object" + }, "io.numaproj.numaflow.v1alpha1.Authorization": { "type": "object", "properties": { @@ -20106,6 +20110,20 @@ } } }, + "io.numaproj.numaflow.v1alpha1.Delivery": { + "description": "Delivery is the delivery semantics for the pipeline.", + "type": "object", + "properties": { + "atLeastOnce": { + "description": "AtLeastOnce enables at-least-once processing semantics (default behavior).", + "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.AtLeastOnce" + }, + "exactlyOnce": { + "description": "ExactlyOnce enables exactly-once processing semantics.", + "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.ExactlyOnce" + } + } + }, "io.numaproj.numaflow.v1alpha1.Edge": { "type": "object", "required": [ @@ -20130,6 +20148,7 @@ } }, "io.numaproj.numaflow.v1alpha1.ExactlyOnce": { + "description": "ExactlyOnce is the exactly-once delivery settings.", "type": "object", "properties": { "consistentAck": { @@ -20139,10 +20158,6 @@ "dedupWindow": { "description": "DedupWindow is the duration for which the deduplication will be enabled.", "$ref": "#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.Duration" - }, - "enabled": { - "description": "Enabled enables exactly once processing.", - "type": "boolean" } } }, @@ -21534,6 +21549,10 @@ "io.numaproj.numaflow.v1alpha1.PipelineSpec": { "type": "object", "properties": { + "delivery": { + "description": "Delivery is the delivery semantics for the pipeline.", + "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.Delivery" + }, "edges": { "description": "Edges define the relationships between vertices", "type": "array", @@ -21541,10 +21560,6 @@ "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.Edge" } }, - "exactlyOnce": { - "description": "ExactlyOnce is the exactly-once settings for the pipeline.", - "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.ExactlyOnce" - }, "interStepBuffer": { "description": "InterStepBuffer configuration specific to this pipeline.", "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.InterStepBuffer" @@ -22913,6 +22928,10 @@ "description": "Container template for the main numa container.", "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.ContainerTemplate" }, + "delivery": { + "description": "Delivery indicates the delivery semantics for the vertex, it's populated from the pipeline delivery settings.", + "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.Delivery" + }, "dnsConfig": { "description": "Specifies the DNS parameters of a pod. Parameters specified here will be merged to the generated DNS configuration based on DNSPolicy.", "$ref": "#/definitions/io.k8s.api.core.v1.PodDNSConfig" @@ -22921,10 +22940,6 @@ "description": "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'.", "type": "string" }, - "exactlyOnce": { - "description": "ExactlyOnce indicates the exactly-once settings for the vertex, it's populated from the pipeline exactlyOnce settings.", - "$ref": "#/definitions/io.numaproj.numaflow.v1alpha1.ExactlyOnce" - }, "fromEdges": { "type": "array", "items": { diff --git a/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml b/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml index b03bfe953e..d9bf77e3df 100644 --- a/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml +++ b/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml @@ -61,6 +61,20 @@ spec: type: object spec: properties: + delivery: + properties: + atLeastOnce: + type: object + exactlyOnce: + properties: + consistentAck: + default: false + type: boolean + dedupWindow: + default: 2m + type: string + type: object + type: object edges: items: properties: @@ -98,18 +112,6 @@ spec: - to type: object type: array - exactlyOnce: - properties: - consistentAck: - default: true - type: boolean - dedupWindow: - default: 2m - type: string - enabled: - default: false - type: boolean - type: object interStepBuffer: properties: compression: diff --git a/config/base/crds/full/numaflow.numaproj.io_servingpipelines.yaml b/config/base/crds/full/numaflow.numaproj.io_servingpipelines.yaml index ea70932636..7610543e07 100644 --- a/config/base/crds/full/numaflow.numaproj.io_servingpipelines.yaml +++ b/config/base/crds/full/numaflow.numaproj.io_servingpipelines.yaml @@ -40,6 +40,20 @@ spec: properties: pipeline: properties: + delivery: + properties: + atLeastOnce: + type: object + exactlyOnce: + properties: + consistentAck: + default: false + type: boolean + dedupWindow: + default: 2m + type: string + type: object + type: object edges: items: properties: @@ -77,18 +91,6 @@ spec: - to type: object type: array - exactlyOnce: - properties: - consistentAck: - default: true - type: boolean - dedupWindow: - default: 2m - type: string - enabled: - default: false - type: boolean - type: object interStepBuffer: properties: compression: diff --git a/config/base/crds/full/numaflow.numaproj.io_vertices.yaml b/config/base/crds/full/numaflow.numaproj.io_vertices.yaml index 4c7988c60d..eaf5567118 100644 --- a/config/base/crds/full/numaflow.numaproj.io_vertices.yaml +++ b/config/base/crds/full/numaflow.numaproj.io_vertices.yaml @@ -728,6 +728,20 @@ spec: type: object type: object type: object + delivery: + properties: + atLeastOnce: + type: object + exactlyOnce: + properties: + consistentAck: + default: false + type: boolean + dedupWindow: + default: 2m + type: string + type: object + type: object dnsConfig: properties: nameservers: @@ -753,18 +767,6 @@ spec: type: object dnsPolicy: type: string - exactlyOnce: - properties: - consistentAck: - default: true - type: boolean - dedupWindow: - default: 2m - type: string - enabled: - default: false - type: boolean - type: object fromEdges: items: properties: diff --git a/config/install.yaml b/config/install.yaml index 5e52f37e63..8619eeba18 100644 --- a/config/install.yaml +++ b/config/install.yaml @@ -9769,6 +9769,20 @@ spec: type: object spec: properties: + delivery: + properties: + atLeastOnce: + type: object + exactlyOnce: + properties: + consistentAck: + default: false + type: boolean + dedupWindow: + default: 2m + type: string + type: object + type: object edges: items: properties: @@ -9806,18 +9820,6 @@ spec: - to type: object type: array - exactlyOnce: - properties: - consistentAck: - default: true - type: boolean - dedupWindow: - default: 2m - type: string - enabled: - default: false - type: boolean - type: object interStepBuffer: properties: compression: @@ -22886,6 +22888,20 @@ spec: properties: pipeline: properties: + delivery: + properties: + atLeastOnce: + type: object + exactlyOnce: + properties: + consistentAck: + default: false + type: boolean + dedupWindow: + default: 2m + type: string + type: object + type: object edges: items: properties: @@ -22923,18 +22939,6 @@ spec: - to type: object type: array - exactlyOnce: - properties: - consistentAck: - default: true - type: boolean - dedupWindow: - default: 2m - type: string - enabled: - default: false - type: boolean - type: object interStepBuffer: properties: compression: @@ -37852,6 +37856,20 @@ spec: type: object type: object type: object + delivery: + properties: + atLeastOnce: + type: object + exactlyOnce: + properties: + consistentAck: + default: false + type: boolean + dedupWindow: + default: 2m + type: string + type: object + type: object dnsConfig: properties: nameservers: @@ -37877,18 +37895,6 @@ spec: type: object dnsPolicy: type: string - exactlyOnce: - properties: - consistentAck: - default: true - type: boolean - dedupWindow: - default: 2m - type: string - enabled: - default: false - type: boolean - type: object fromEdges: items: properties: diff --git a/config/namespace-install.yaml b/config/namespace-install.yaml index 24922ae265..40fb906496 100644 --- a/config/namespace-install.yaml +++ b/config/namespace-install.yaml @@ -9769,6 +9769,20 @@ spec: type: object spec: properties: + delivery: + properties: + atLeastOnce: + type: object + exactlyOnce: + properties: + consistentAck: + default: false + type: boolean + dedupWindow: + default: 2m + type: string + type: object + type: object edges: items: properties: @@ -9806,18 +9820,6 @@ spec: - to type: object type: array - exactlyOnce: - properties: - consistentAck: - default: true - type: boolean - dedupWindow: - default: 2m - type: string - enabled: - default: false - type: boolean - type: object interStepBuffer: properties: compression: @@ -22886,6 +22888,20 @@ spec: properties: pipeline: properties: + delivery: + properties: + atLeastOnce: + type: object + exactlyOnce: + properties: + consistentAck: + default: false + type: boolean + dedupWindow: + default: 2m + type: string + type: object + type: object edges: items: properties: @@ -22923,18 +22939,6 @@ spec: - to type: object type: array - exactlyOnce: - properties: - consistentAck: - default: true - type: boolean - dedupWindow: - default: 2m - type: string - enabled: - default: false - type: boolean - type: object interStepBuffer: properties: compression: @@ -37852,6 +37856,20 @@ spec: type: object type: object type: object + delivery: + properties: + atLeastOnce: + type: object + exactlyOnce: + properties: + consistentAck: + default: false + type: boolean + dedupWindow: + default: 2m + type: string + type: object + type: object dnsConfig: properties: nameservers: @@ -37877,18 +37895,6 @@ spec: type: object dnsPolicy: type: string - exactlyOnce: - properties: - consistentAck: - default: true - type: boolean - dedupWindow: - default: 2m - type: string - enabled: - default: false - type: boolean - type: object fromEdges: items: properties: diff --git a/docs/APIs.md b/docs/APIs.md index bc5e4de4c5..ca8182d59f 100644 --- a/docs/APIs.md +++ b/docs/APIs.md @@ -1177,6 +1177,26 @@ accumulator is removed. +

+ +AtLeastOnce +

+ +

+ +(Appears on: +Delivery) +

+ +

+ +

+ +AtLeastOnce is the at-least-once delivery settings (default behavior). +

+ +

+

Authorization @@ -2381,6 +2401,96 @@ ContainerTemplate +

+ +Delivery +

+ +

+ +(Appears on: +PipelineSpec, +VertexSpec) +

+ +

+ +

+ +Delivery is the delivery semantics for the pipeline. +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +Field + + +Description +
+ +exactlyOnce
+ ExactlyOnce + +
+ +(Optional) +

+ +ExactlyOnce enables exactly-once processing semantics. +

+ +
+ +atLeastOnce
+ AtLeastOnce + +
+ +(Optional) +

+ +AtLeastOnce enables at-least-once processing semantics (default +behavior). +

+ +
+

Edge @@ -2502,12 +2612,16 @@ ExactlyOnce

(Appears on: -PipelineSpec, -VertexSpec) +Delivery)

+

+ +ExactlyOnce is the exactly-once delivery settings. +

+

@@ -2536,24 +2650,6 @@ Description - - - - - - - - @@ -7947,9 +8043,8 @@ InterStepBuffer configuration specific to this pipeline. @@ -8393,9 +8488,8 @@ InterStepBuffer configuration specific to this pipeline. @@ -13934,9 +14028,8 @@ InterStepBuffer configuration specific to this pipeline. @@ -14487,9 +14580,8 @@ InterStepBuffer configuration specific to this pipeline. diff --git a/pkg/apis/numaflow/v1alpha1/generated.pb.go b/pkg/apis/numaflow/v1alpha1/generated.pb.go index af41d5ac00..13d4fa5fd9 100644 --- a/pkg/apis/numaflow/v1alpha1/generated.pb.go +++ b/pkg/apis/numaflow/v1alpha1/generated.pb.go @@ -191,10 +191,38 @@ func (m *AccumulatorWindow) XXX_DiscardUnknown() { var xxx_messageInfo_AccumulatorWindow proto.InternalMessageInfo +func (m *AtLeastOnce) Reset() { *m = AtLeastOnce{} } +func (*AtLeastOnce) ProtoMessage() {} +func (*AtLeastOnce) Descriptor() ([]byte, []int) { + return fileDescriptor_9d0d1b17d3865563, []int{5} +} +func (m *AtLeastOnce) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AtLeastOnce) 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 *AtLeastOnce) XXX_Merge(src proto.Message) { + xxx_messageInfo_AtLeastOnce.Merge(m, src) +} +func (m *AtLeastOnce) XXX_Size() int { + return m.Size() +} +func (m *AtLeastOnce) XXX_DiscardUnknown() { + xxx_messageInfo_AtLeastOnce.DiscardUnknown(m) +} + +var xxx_messageInfo_AtLeastOnce proto.InternalMessageInfo + func (m *Authorization) Reset() { *m = Authorization{} } func (*Authorization) ProtoMessage() {} func (*Authorization) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{5} + return fileDescriptor_9d0d1b17d3865563, []int{6} } func (m *Authorization) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -222,7 +250,7 @@ var xxx_messageInfo_Authorization proto.InternalMessageInfo func (m *Backoff) Reset() { *m = Backoff{} } func (*Backoff) ProtoMessage() {} func (*Backoff) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{6} + return fileDescriptor_9d0d1b17d3865563, []int{7} } func (m *Backoff) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -250,7 +278,7 @@ var xxx_messageInfo_Backoff proto.InternalMessageInfo func (m *BasicAuth) Reset() { *m = BasicAuth{} } func (*BasicAuth) ProtoMessage() {} func (*BasicAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{7} + return fileDescriptor_9d0d1b17d3865563, []int{8} } func (m *BasicAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -278,7 +306,7 @@ var xxx_messageInfo_BasicAuth proto.InternalMessageInfo func (m *Blackhole) Reset() { *m = Blackhole{} } func (*Blackhole) ProtoMessage() {} func (*Blackhole) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{8} + return fileDescriptor_9d0d1b17d3865563, []int{9} } func (m *Blackhole) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -306,7 +334,7 @@ var xxx_messageInfo_Blackhole proto.InternalMessageInfo func (m *BufferServiceConfig) Reset() { *m = BufferServiceConfig{} } func (*BufferServiceConfig) ProtoMessage() {} func (*BufferServiceConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{9} + return fileDescriptor_9d0d1b17d3865563, []int{10} } func (m *BufferServiceConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -334,7 +362,7 @@ var xxx_messageInfo_BufferServiceConfig proto.InternalMessageInfo func (m *CombinedEdge) Reset() { *m = CombinedEdge{} } func (*CombinedEdge) ProtoMessage() {} func (*CombinedEdge) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{10} + return fileDescriptor_9d0d1b17d3865563, []int{11} } func (m *CombinedEdge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -362,7 +390,7 @@ var xxx_messageInfo_CombinedEdge proto.InternalMessageInfo func (m *Compression) Reset() { *m = Compression{} } func (*Compression) ProtoMessage() {} func (*Compression) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{11} + return fileDescriptor_9d0d1b17d3865563, []int{12} } func (m *Compression) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -390,7 +418,7 @@ var xxx_messageInfo_Compression proto.InternalMessageInfo func (m *Container) Reset() { *m = Container{} } func (*Container) ProtoMessage() {} func (*Container) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{12} + return fileDescriptor_9d0d1b17d3865563, []int{13} } func (m *Container) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -418,7 +446,7 @@ var xxx_messageInfo_Container proto.InternalMessageInfo func (m *ContainerTemplate) Reset() { *m = ContainerTemplate{} } func (*ContainerTemplate) ProtoMessage() {} func (*ContainerTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{13} + return fileDescriptor_9d0d1b17d3865563, []int{14} } func (m *ContainerTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -446,7 +474,7 @@ var xxx_messageInfo_ContainerTemplate proto.InternalMessageInfo func (m *DaemonTemplate) Reset() { *m = DaemonTemplate{} } func (*DaemonTemplate) ProtoMessage() {} func (*DaemonTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{14} + return fileDescriptor_9d0d1b17d3865563, []int{15} } func (m *DaemonTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -471,10 +499,38 @@ func (m *DaemonTemplate) XXX_DiscardUnknown() { var xxx_messageInfo_DaemonTemplate proto.InternalMessageInfo +func (m *Delivery) Reset() { *m = Delivery{} } +func (*Delivery) ProtoMessage() {} +func (*Delivery) Descriptor() ([]byte, []int) { + return fileDescriptor_9d0d1b17d3865563, []int{16} +} +func (m *Delivery) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Delivery) 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 *Delivery) XXX_Merge(src proto.Message) { + xxx_messageInfo_Delivery.Merge(m, src) +} +func (m *Delivery) XXX_Size() int { + return m.Size() +} +func (m *Delivery) XXX_DiscardUnknown() { + xxx_messageInfo_Delivery.DiscardUnknown(m) +} + +var xxx_messageInfo_Delivery proto.InternalMessageInfo + func (m *Edge) Reset() { *m = Edge{} } func (*Edge) ProtoMessage() {} func (*Edge) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{15} + return fileDescriptor_9d0d1b17d3865563, []int{17} } func (m *Edge) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -502,7 +558,7 @@ var xxx_messageInfo_Edge proto.InternalMessageInfo func (m *ExactlyOnce) Reset() { *m = ExactlyOnce{} } func (*ExactlyOnce) ProtoMessage() {} func (*ExactlyOnce) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{16} + return fileDescriptor_9d0d1b17d3865563, []int{18} } func (m *ExactlyOnce) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -530,7 +586,7 @@ var xxx_messageInfo_ExactlyOnce proto.InternalMessageInfo func (m *FixedWindow) Reset() { *m = FixedWindow{} } func (*FixedWindow) ProtoMessage() {} func (*FixedWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{17} + return fileDescriptor_9d0d1b17d3865563, []int{19} } func (m *FixedWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -558,7 +614,7 @@ var xxx_messageInfo_FixedWindow proto.InternalMessageInfo func (m *ForwardConditions) Reset() { *m = ForwardConditions{} } func (*ForwardConditions) ProtoMessage() {} func (*ForwardConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{18} + return fileDescriptor_9d0d1b17d3865563, []int{20} } func (m *ForwardConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -586,7 +642,7 @@ var xxx_messageInfo_ForwardConditions proto.InternalMessageInfo func (m *GSSAPI) Reset() { *m = GSSAPI{} } func (*GSSAPI) ProtoMessage() {} func (*GSSAPI) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{19} + return fileDescriptor_9d0d1b17d3865563, []int{21} } func (m *GSSAPI) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -614,7 +670,7 @@ var xxx_messageInfo_GSSAPI proto.InternalMessageInfo func (m *GeneratorSource) Reset() { *m = GeneratorSource{} } func (*GeneratorSource) ProtoMessage() {} func (*GeneratorSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{20} + return fileDescriptor_9d0d1b17d3865563, []int{22} } func (m *GeneratorSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -642,7 +698,7 @@ var xxx_messageInfo_GeneratorSource proto.InternalMessageInfo func (m *GetDaemonDeploymentReq) Reset() { *m = GetDaemonDeploymentReq{} } func (*GetDaemonDeploymentReq) ProtoMessage() {} func (*GetDaemonDeploymentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{21} + return fileDescriptor_9d0d1b17d3865563, []int{23} } func (m *GetDaemonDeploymentReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -670,7 +726,7 @@ var xxx_messageInfo_GetDaemonDeploymentReq proto.InternalMessageInfo func (m *GetJetStreamServiceSpecReq) Reset() { *m = GetJetStreamServiceSpecReq{} } func (*GetJetStreamServiceSpecReq) ProtoMessage() {} func (*GetJetStreamServiceSpecReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{22} + return fileDescriptor_9d0d1b17d3865563, []int{24} } func (m *GetJetStreamServiceSpecReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -698,7 +754,7 @@ var xxx_messageInfo_GetJetStreamServiceSpecReq proto.InternalMessageInfo func (m *GetJetStreamStatefulSetSpecReq) Reset() { *m = GetJetStreamStatefulSetSpecReq{} } func (*GetJetStreamStatefulSetSpecReq) ProtoMessage() {} func (*GetJetStreamStatefulSetSpecReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{23} + return fileDescriptor_9d0d1b17d3865563, []int{25} } func (m *GetJetStreamStatefulSetSpecReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -726,7 +782,7 @@ var xxx_messageInfo_GetJetStreamStatefulSetSpecReq proto.InternalMessageInfo func (m *GetMonoVertexDaemonDeploymentReq) Reset() { *m = GetMonoVertexDaemonDeploymentReq{} } func (*GetMonoVertexDaemonDeploymentReq) ProtoMessage() {} func (*GetMonoVertexDaemonDeploymentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{24} + return fileDescriptor_9d0d1b17d3865563, []int{26} } func (m *GetMonoVertexDaemonDeploymentReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -754,7 +810,7 @@ var xxx_messageInfo_GetMonoVertexDaemonDeploymentReq proto.InternalMessageInfo func (m *GetMonoVertexPodSpecReq) Reset() { *m = GetMonoVertexPodSpecReq{} } func (*GetMonoVertexPodSpecReq) ProtoMessage() {} func (*GetMonoVertexPodSpecReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{25} + return fileDescriptor_9d0d1b17d3865563, []int{27} } func (m *GetMonoVertexPodSpecReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -782,7 +838,7 @@ var xxx_messageInfo_GetMonoVertexPodSpecReq proto.InternalMessageInfo func (m *GetServingPipelineResourceReq) Reset() { *m = GetServingPipelineResourceReq{} } func (*GetServingPipelineResourceReq) ProtoMessage() {} func (*GetServingPipelineResourceReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{26} + return fileDescriptor_9d0d1b17d3865563, []int{28} } func (m *GetServingPipelineResourceReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -810,7 +866,7 @@ var xxx_messageInfo_GetServingPipelineResourceReq proto.InternalMessageInfo func (m *GetSideInputDeploymentReq) Reset() { *m = GetSideInputDeploymentReq{} } func (*GetSideInputDeploymentReq) ProtoMessage() {} func (*GetSideInputDeploymentReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{27} + return fileDescriptor_9d0d1b17d3865563, []int{29} } func (m *GetSideInputDeploymentReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -838,7 +894,7 @@ var xxx_messageInfo_GetSideInputDeploymentReq proto.InternalMessageInfo func (m *GetVertexPodSpecReq) Reset() { *m = GetVertexPodSpecReq{} } func (*GetVertexPodSpecReq) ProtoMessage() {} func (*GetVertexPodSpecReq) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{28} + return fileDescriptor_9d0d1b17d3865563, []int{30} } func (m *GetVertexPodSpecReq) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -866,7 +922,7 @@ var xxx_messageInfo_GetVertexPodSpecReq proto.InternalMessageInfo func (m *GroupBy) Reset() { *m = GroupBy{} } func (*GroupBy) ProtoMessage() {} func (*GroupBy) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{29} + return fileDescriptor_9d0d1b17d3865563, []int{31} } func (m *GroupBy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -894,7 +950,7 @@ var xxx_messageInfo_GroupBy proto.InternalMessageInfo func (m *HTTPSource) Reset() { *m = HTTPSource{} } func (*HTTPSource) ProtoMessage() {} func (*HTTPSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{30} + return fileDescriptor_9d0d1b17d3865563, []int{32} } func (m *HTTPSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -922,7 +978,7 @@ var xxx_messageInfo_HTTPSource proto.InternalMessageInfo func (m *IdleSource) Reset() { *m = IdleSource{} } func (*IdleSource) ProtoMessage() {} func (*IdleSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{31} + return fileDescriptor_9d0d1b17d3865563, []int{33} } func (m *IdleSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -950,7 +1006,7 @@ var xxx_messageInfo_IdleSource proto.InternalMessageInfo func (m *InterStepBuffer) Reset() { *m = InterStepBuffer{} } func (*InterStepBuffer) ProtoMessage() {} func (*InterStepBuffer) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{32} + return fileDescriptor_9d0d1b17d3865563, []int{34} } func (m *InterStepBuffer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -978,7 +1034,7 @@ var xxx_messageInfo_InterStepBuffer proto.InternalMessageInfo func (m *InterStepBufferService) Reset() { *m = InterStepBufferService{} } func (*InterStepBufferService) ProtoMessage() {} func (*InterStepBufferService) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{33} + return fileDescriptor_9d0d1b17d3865563, []int{35} } func (m *InterStepBufferService) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1006,7 +1062,7 @@ var xxx_messageInfo_InterStepBufferService proto.InternalMessageInfo func (m *InterStepBufferServiceList) Reset() { *m = InterStepBufferServiceList{} } func (*InterStepBufferServiceList) ProtoMessage() {} func (*InterStepBufferServiceList) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{34} + return fileDescriptor_9d0d1b17d3865563, []int{36} } func (m *InterStepBufferServiceList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1034,7 +1090,7 @@ var xxx_messageInfo_InterStepBufferServiceList proto.InternalMessageInfo func (m *InterStepBufferServiceSpec) Reset() { *m = InterStepBufferServiceSpec{} } func (*InterStepBufferServiceSpec) ProtoMessage() {} func (*InterStepBufferServiceSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{35} + return fileDescriptor_9d0d1b17d3865563, []int{37} } func (m *InterStepBufferServiceSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1062,7 +1118,7 @@ var xxx_messageInfo_InterStepBufferServiceSpec proto.InternalMessageInfo func (m *InterStepBufferServiceStatus) Reset() { *m = InterStepBufferServiceStatus{} } func (*InterStepBufferServiceStatus) ProtoMessage() {} func (*InterStepBufferServiceStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{36} + return fileDescriptor_9d0d1b17d3865563, []int{38} } func (m *InterStepBufferServiceStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1090,7 +1146,7 @@ var xxx_messageInfo_InterStepBufferServiceStatus proto.InternalMessageInfo func (m *JetStreamBufferService) Reset() { *m = JetStreamBufferService{} } func (*JetStreamBufferService) ProtoMessage() {} func (*JetStreamBufferService) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{37} + return fileDescriptor_9d0d1b17d3865563, []int{39} } func (m *JetStreamBufferService) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1118,7 +1174,7 @@ var xxx_messageInfo_JetStreamBufferService proto.InternalMessageInfo func (m *JetStreamConfig) Reset() { *m = JetStreamConfig{} } func (*JetStreamConfig) ProtoMessage() {} func (*JetStreamConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{38} + return fileDescriptor_9d0d1b17d3865563, []int{40} } func (m *JetStreamConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1146,7 +1202,7 @@ var xxx_messageInfo_JetStreamConfig proto.InternalMessageInfo func (m *JetStreamSource) Reset() { *m = JetStreamSource{} } func (*JetStreamSource) ProtoMessage() {} func (*JetStreamSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{39} + return fileDescriptor_9d0d1b17d3865563, []int{41} } func (m *JetStreamSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1174,7 +1230,7 @@ var xxx_messageInfo_JetStreamSource proto.InternalMessageInfo func (m *JobTemplate) Reset() { *m = JobTemplate{} } func (*JobTemplate) ProtoMessage() {} func (*JobTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{40} + return fileDescriptor_9d0d1b17d3865563, []int{42} } func (m *JobTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1202,7 +1258,7 @@ var xxx_messageInfo_JobTemplate proto.InternalMessageInfo func (m *KafkaSink) Reset() { *m = KafkaSink{} } func (*KafkaSink) ProtoMessage() {} func (*KafkaSink) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{41} + return fileDescriptor_9d0d1b17d3865563, []int{43} } func (m *KafkaSink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1230,7 +1286,7 @@ var xxx_messageInfo_KafkaSink proto.InternalMessageInfo func (m *KafkaSource) Reset() { *m = KafkaSource{} } func (*KafkaSource) ProtoMessage() {} func (*KafkaSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{42} + return fileDescriptor_9d0d1b17d3865563, []int{44} } func (m *KafkaSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1258,7 +1314,7 @@ var xxx_messageInfo_KafkaSource proto.InternalMessageInfo func (m *Lifecycle) Reset() { *m = Lifecycle{} } func (*Lifecycle) ProtoMessage() {} func (*Lifecycle) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{43} + return fileDescriptor_9d0d1b17d3865563, []int{45} } func (m *Lifecycle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1286,7 +1342,7 @@ var xxx_messageInfo_Lifecycle proto.InternalMessageInfo func (m *Log) Reset() { *m = Log{} } func (*Log) ProtoMessage() {} func (*Log) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{44} + return fileDescriptor_9d0d1b17d3865563, []int{46} } func (m *Log) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1314,7 +1370,7 @@ var xxx_messageInfo_Log proto.InternalMessageInfo func (m *Metadata) Reset() { *m = Metadata{} } func (*Metadata) ProtoMessage() {} func (*Metadata) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{45} + return fileDescriptor_9d0d1b17d3865563, []int{47} } func (m *Metadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1342,7 +1398,7 @@ var xxx_messageInfo_Metadata proto.InternalMessageInfo func (m *MonoVertex) Reset() { *m = MonoVertex{} } func (*MonoVertex) ProtoMessage() {} func (*MonoVertex) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{46} + return fileDescriptor_9d0d1b17d3865563, []int{48} } func (m *MonoVertex) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1370,7 +1426,7 @@ var xxx_messageInfo_MonoVertex proto.InternalMessageInfo func (m *MonoVertexLifecycle) Reset() { *m = MonoVertexLifecycle{} } func (*MonoVertexLifecycle) ProtoMessage() {} func (*MonoVertexLifecycle) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{47} + return fileDescriptor_9d0d1b17d3865563, []int{49} } func (m *MonoVertexLifecycle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1398,7 +1454,7 @@ var xxx_messageInfo_MonoVertexLifecycle proto.InternalMessageInfo func (m *MonoVertexLimits) Reset() { *m = MonoVertexLimits{} } func (*MonoVertexLimits) ProtoMessage() {} func (*MonoVertexLimits) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{48} + return fileDescriptor_9d0d1b17d3865563, []int{50} } func (m *MonoVertexLimits) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1426,7 +1482,7 @@ var xxx_messageInfo_MonoVertexLimits proto.InternalMessageInfo func (m *MonoVertexList) Reset() { *m = MonoVertexList{} } func (*MonoVertexList) ProtoMessage() {} func (*MonoVertexList) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{49} + return fileDescriptor_9d0d1b17d3865563, []int{51} } func (m *MonoVertexList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1454,7 +1510,7 @@ var xxx_messageInfo_MonoVertexList proto.InternalMessageInfo func (m *MonoVertexSpec) Reset() { *m = MonoVertexSpec{} } func (*MonoVertexSpec) ProtoMessage() {} func (*MonoVertexSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{50} + return fileDescriptor_9d0d1b17d3865563, []int{52} } func (m *MonoVertexSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1482,7 +1538,7 @@ var xxx_messageInfo_MonoVertexSpec proto.InternalMessageInfo func (m *MonoVertexStatus) Reset() { *m = MonoVertexStatus{} } func (*MonoVertexStatus) ProtoMessage() {} func (*MonoVertexStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{51} + return fileDescriptor_9d0d1b17d3865563, []int{53} } func (m *MonoVertexStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1510,7 +1566,7 @@ var xxx_messageInfo_MonoVertexStatus proto.InternalMessageInfo func (m *NatsAuth) Reset() { *m = NatsAuth{} } func (*NatsAuth) ProtoMessage() {} func (*NatsAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{52} + return fileDescriptor_9d0d1b17d3865563, []int{54} } func (m *NatsAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1538,7 +1594,7 @@ var xxx_messageInfo_NatsAuth proto.InternalMessageInfo func (m *NatsSource) Reset() { *m = NatsSource{} } func (*NatsSource) ProtoMessage() {} func (*NatsSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{53} + return fileDescriptor_9d0d1b17d3865563, []int{55} } func (m *NatsSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1566,7 +1622,7 @@ var xxx_messageInfo_NatsSource proto.InternalMessageInfo func (m *NoStore) Reset() { *m = NoStore{} } func (*NoStore) ProtoMessage() {} func (*NoStore) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{54} + return fileDescriptor_9d0d1b17d3865563, []int{56} } func (m *NoStore) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1594,7 +1650,7 @@ var xxx_messageInfo_NoStore proto.InternalMessageInfo func (m *PBQStorage) Reset() { *m = PBQStorage{} } func (*PBQStorage) ProtoMessage() {} func (*PBQStorage) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{55} + return fileDescriptor_9d0d1b17d3865563, []int{57} } func (m *PBQStorage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1622,7 +1678,7 @@ var xxx_messageInfo_PBQStorage proto.InternalMessageInfo func (m *PersistenceStrategy) Reset() { *m = PersistenceStrategy{} } func (*PersistenceStrategy) ProtoMessage() {} func (*PersistenceStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{56} + return fileDescriptor_9d0d1b17d3865563, []int{58} } func (m *PersistenceStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1650,7 +1706,7 @@ var xxx_messageInfo_PersistenceStrategy proto.InternalMessageInfo func (m *Pipeline) Reset() { *m = Pipeline{} } func (*Pipeline) ProtoMessage() {} func (*Pipeline) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{57} + return fileDescriptor_9d0d1b17d3865563, []int{59} } func (m *Pipeline) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1678,7 +1734,7 @@ var xxx_messageInfo_Pipeline proto.InternalMessageInfo func (m *PipelineLimits) Reset() { *m = PipelineLimits{} } func (*PipelineLimits) ProtoMessage() {} func (*PipelineLimits) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{58} + return fileDescriptor_9d0d1b17d3865563, []int{60} } func (m *PipelineLimits) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1706,7 +1762,7 @@ var xxx_messageInfo_PipelineLimits proto.InternalMessageInfo func (m *PipelineList) Reset() { *m = PipelineList{} } func (*PipelineList) ProtoMessage() {} func (*PipelineList) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{59} + return fileDescriptor_9d0d1b17d3865563, []int{61} } func (m *PipelineList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1734,7 +1790,7 @@ var xxx_messageInfo_PipelineList proto.InternalMessageInfo func (m *PipelineSpec) Reset() { *m = PipelineSpec{} } func (*PipelineSpec) ProtoMessage() {} func (*PipelineSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{60} + return fileDescriptor_9d0d1b17d3865563, []int{62} } func (m *PipelineSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1762,7 +1818,7 @@ var xxx_messageInfo_PipelineSpec proto.InternalMessageInfo func (m *PipelineStatus) Reset() { *m = PipelineStatus{} } func (*PipelineStatus) ProtoMessage() {} func (*PipelineStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{61} + return fileDescriptor_9d0d1b17d3865563, []int{63} } func (m *PipelineStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1790,7 +1846,7 @@ var xxx_messageInfo_PipelineStatus proto.InternalMessageInfo func (m *Ports) Reset() { *m = Ports{} } func (*Ports) ProtoMessage() {} func (*Ports) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{62} + return fileDescriptor_9d0d1b17d3865563, []int{64} } func (m *Ports) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1818,7 +1874,7 @@ var xxx_messageInfo_Ports proto.InternalMessageInfo func (m *Probe) Reset() { *m = Probe{} } func (*Probe) ProtoMessage() {} func (*Probe) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{63} + return fileDescriptor_9d0d1b17d3865563, []int{65} } func (m *Probe) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1846,7 +1902,7 @@ var xxx_messageInfo_Probe proto.InternalMessageInfo func (m *PulsarAuth) Reset() { *m = PulsarAuth{} } func (*PulsarAuth) ProtoMessage() {} func (*PulsarAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{64} + return fileDescriptor_9d0d1b17d3865563, []int{66} } func (m *PulsarAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1874,7 +1930,7 @@ var xxx_messageInfo_PulsarAuth proto.InternalMessageInfo func (m *PulsarBasicAuth) Reset() { *m = PulsarBasicAuth{} } func (*PulsarBasicAuth) ProtoMessage() {} func (*PulsarBasicAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{65} + return fileDescriptor_9d0d1b17d3865563, []int{67} } func (m *PulsarBasicAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1902,7 +1958,7 @@ var xxx_messageInfo_PulsarBasicAuth proto.InternalMessageInfo func (m *PulsarSink) Reset() { *m = PulsarSink{} } func (*PulsarSink) ProtoMessage() {} func (*PulsarSink) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{66} + return fileDescriptor_9d0d1b17d3865563, []int{68} } func (m *PulsarSink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1930,7 +1986,7 @@ var xxx_messageInfo_PulsarSink proto.InternalMessageInfo func (m *PulsarSource) Reset() { *m = PulsarSource{} } func (*PulsarSource) ProtoMessage() {} func (*PulsarSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{67} + return fileDescriptor_9d0d1b17d3865563, []int{69} } func (m *PulsarSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1958,7 +2014,7 @@ var xxx_messageInfo_PulsarSource proto.InternalMessageInfo func (m *RateLimit) Reset() { *m = RateLimit{} } func (*RateLimit) ProtoMessage() {} func (*RateLimit) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{68} + return fileDescriptor_9d0d1b17d3865563, []int{70} } func (m *RateLimit) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1986,7 +2042,7 @@ var xxx_messageInfo_RateLimit proto.InternalMessageInfo func (m *RateLimiterGoBackN) Reset() { *m = RateLimiterGoBackN{} } func (*RateLimiterGoBackN) ProtoMessage() {} func (*RateLimiterGoBackN) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{69} + return fileDescriptor_9d0d1b17d3865563, []int{71} } func (m *RateLimiterGoBackN) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2014,7 +2070,7 @@ var xxx_messageInfo_RateLimiterGoBackN proto.InternalMessageInfo func (m *RateLimiterInMemoryStore) Reset() { *m = RateLimiterInMemoryStore{} } func (*RateLimiterInMemoryStore) ProtoMessage() {} func (*RateLimiterInMemoryStore) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{70} + return fileDescriptor_9d0d1b17d3865563, []int{72} } func (m *RateLimiterInMemoryStore) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2042,7 +2098,7 @@ var xxx_messageInfo_RateLimiterInMemoryStore proto.InternalMessageInfo func (m *RateLimiterModes) Reset() { *m = RateLimiterModes{} } func (*RateLimiterModes) ProtoMessage() {} func (*RateLimiterModes) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{71} + return fileDescriptor_9d0d1b17d3865563, []int{73} } func (m *RateLimiterModes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2070,7 +2126,7 @@ var xxx_messageInfo_RateLimiterModes proto.InternalMessageInfo func (m *RateLimiterOnlyIfUsed) Reset() { *m = RateLimiterOnlyIfUsed{} } func (*RateLimiterOnlyIfUsed) ProtoMessage() {} func (*RateLimiterOnlyIfUsed) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{72} + return fileDescriptor_9d0d1b17d3865563, []int{74} } func (m *RateLimiterOnlyIfUsed) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2098,7 +2154,7 @@ var xxx_messageInfo_RateLimiterOnlyIfUsed proto.InternalMessageInfo func (m *RateLimiterRedisStore) Reset() { *m = RateLimiterRedisStore{} } func (*RateLimiterRedisStore) ProtoMessage() {} func (*RateLimiterRedisStore) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{73} + return fileDescriptor_9d0d1b17d3865563, []int{75} } func (m *RateLimiterRedisStore) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2126,7 +2182,7 @@ var xxx_messageInfo_RateLimiterRedisStore proto.InternalMessageInfo func (m *RateLimiterRelaxed) Reset() { *m = RateLimiterRelaxed{} } func (*RateLimiterRelaxed) ProtoMessage() {} func (*RateLimiterRelaxed) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{74} + return fileDescriptor_9d0d1b17d3865563, []int{76} } func (m *RateLimiterRelaxed) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2154,7 +2210,7 @@ var xxx_messageInfo_RateLimiterRelaxed proto.InternalMessageInfo func (m *RateLimiterScheduled) Reset() { *m = RateLimiterScheduled{} } func (*RateLimiterScheduled) ProtoMessage() {} func (*RateLimiterScheduled) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{75} + return fileDescriptor_9d0d1b17d3865563, []int{77} } func (m *RateLimiterScheduled) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2182,7 +2238,7 @@ var xxx_messageInfo_RateLimiterScheduled proto.InternalMessageInfo func (m *RateLimiterStore) Reset() { *m = RateLimiterStore{} } func (*RateLimiterStore) ProtoMessage() {} func (*RateLimiterStore) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{76} + return fileDescriptor_9d0d1b17d3865563, []int{78} } func (m *RateLimiterStore) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2210,7 +2266,7 @@ var xxx_messageInfo_RateLimiterStore proto.InternalMessageInfo func (m *RedisAuth) Reset() { *m = RedisAuth{} } func (*RedisAuth) ProtoMessage() {} func (*RedisAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{77} + return fileDescriptor_9d0d1b17d3865563, []int{79} } func (m *RedisAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2238,7 +2294,7 @@ var xxx_messageInfo_RedisAuth proto.InternalMessageInfo func (m *RedisSentinelConfig) Reset() { *m = RedisSentinelConfig{} } func (*RedisSentinelConfig) ProtoMessage() {} func (*RedisSentinelConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{78} + return fileDescriptor_9d0d1b17d3865563, []int{80} } func (m *RedisSentinelConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2266,7 +2322,7 @@ var xxx_messageInfo_RedisSentinelConfig proto.InternalMessageInfo func (m *RetryStrategy) Reset() { *m = RetryStrategy{} } func (*RetryStrategy) ProtoMessage() {} func (*RetryStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{79} + return fileDescriptor_9d0d1b17d3865563, []int{81} } func (m *RetryStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2294,7 +2350,7 @@ var xxx_messageInfo_RetryStrategy proto.InternalMessageInfo func (m *RollingUpdateStrategy) Reset() { *m = RollingUpdateStrategy{} } func (*RollingUpdateStrategy) ProtoMessage() {} func (*RollingUpdateStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{80} + return fileDescriptor_9d0d1b17d3865563, []int{82} } func (m *RollingUpdateStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2322,7 +2378,7 @@ var xxx_messageInfo_RollingUpdateStrategy proto.InternalMessageInfo func (m *SASL) Reset() { *m = SASL{} } func (*SASL) ProtoMessage() {} func (*SASL) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{81} + return fileDescriptor_9d0d1b17d3865563, []int{83} } func (m *SASL) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2350,7 +2406,7 @@ var xxx_messageInfo_SASL proto.InternalMessageInfo func (m *SASLOAuth) Reset() { *m = SASLOAuth{} } func (*SASLOAuth) ProtoMessage() {} func (*SASLOAuth) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{82} + return fileDescriptor_9d0d1b17d3865563, []int{84} } func (m *SASLOAuth) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2378,7 +2434,7 @@ var xxx_messageInfo_SASLOAuth proto.InternalMessageInfo func (m *SASLPlain) Reset() { *m = SASLPlain{} } func (*SASLPlain) ProtoMessage() {} func (*SASLPlain) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{83} + return fileDescriptor_9d0d1b17d3865563, []int{85} } func (m *SASLPlain) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2406,7 +2462,7 @@ var xxx_messageInfo_SASLPlain proto.InternalMessageInfo func (m *Scale) Reset() { *m = Scale{} } func (*Scale) ProtoMessage() {} func (*Scale) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{84} + return fileDescriptor_9d0d1b17d3865563, []int{86} } func (m *Scale) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2434,7 +2490,7 @@ var xxx_messageInfo_Scale proto.InternalMessageInfo func (m *ServeSink) Reset() { *m = ServeSink{} } func (*ServeSink) ProtoMessage() {} func (*ServeSink) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{85} + return fileDescriptor_9d0d1b17d3865563, []int{87} } func (m *ServeSink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2462,7 +2518,7 @@ var xxx_messageInfo_ServeSink proto.InternalMessageInfo func (m *ServingPipeline) Reset() { *m = ServingPipeline{} } func (*ServingPipeline) ProtoMessage() {} func (*ServingPipeline) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{86} + return fileDescriptor_9d0d1b17d3865563, []int{88} } func (m *ServingPipeline) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2490,7 +2546,7 @@ var xxx_messageInfo_ServingPipeline proto.InternalMessageInfo func (m *ServingPipelineList) Reset() { *m = ServingPipelineList{} } func (*ServingPipelineList) ProtoMessage() {} func (*ServingPipelineList) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{87} + return fileDescriptor_9d0d1b17d3865563, []int{89} } func (m *ServingPipelineList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2518,7 +2574,7 @@ var xxx_messageInfo_ServingPipelineList proto.InternalMessageInfo func (m *ServingPipelineSpec) Reset() { *m = ServingPipelineSpec{} } func (*ServingPipelineSpec) ProtoMessage() {} func (*ServingPipelineSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{88} + return fileDescriptor_9d0d1b17d3865563, []int{90} } func (m *ServingPipelineSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2546,7 +2602,7 @@ var xxx_messageInfo_ServingPipelineSpec proto.InternalMessageInfo func (m *ServingPipelineStatus) Reset() { *m = ServingPipelineStatus{} } func (*ServingPipelineStatus) ProtoMessage() {} func (*ServingPipelineStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{89} + return fileDescriptor_9d0d1b17d3865563, []int{91} } func (m *ServingPipelineStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2574,7 +2630,7 @@ var xxx_messageInfo_ServingPipelineStatus proto.InternalMessageInfo func (m *ServingSource) Reset() { *m = ServingSource{} } func (*ServingSource) ProtoMessage() {} func (*ServingSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{90} + return fileDescriptor_9d0d1b17d3865563, []int{92} } func (m *ServingSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2602,7 +2658,7 @@ var xxx_messageInfo_ServingSource proto.InternalMessageInfo func (m *ServingSpec) Reset() { *m = ServingSpec{} } func (*ServingSpec) ProtoMessage() {} func (*ServingSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{91} + return fileDescriptor_9d0d1b17d3865563, []int{93} } func (m *ServingSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2630,7 +2686,7 @@ var xxx_messageInfo_ServingSpec proto.InternalMessageInfo func (m *ServingStore) Reset() { *m = ServingStore{} } func (*ServingStore) ProtoMessage() {} func (*ServingStore) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{92} + return fileDescriptor_9d0d1b17d3865563, []int{94} } func (m *ServingStore) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2658,7 +2714,7 @@ var xxx_messageInfo_ServingStore proto.InternalMessageInfo func (m *SessionWindow) Reset() { *m = SessionWindow{} } func (*SessionWindow) ProtoMessage() {} func (*SessionWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{93} + return fileDescriptor_9d0d1b17d3865563, []int{95} } func (m *SessionWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2686,7 +2742,7 @@ var xxx_messageInfo_SessionWindow proto.InternalMessageInfo func (m *SideInput) Reset() { *m = SideInput{} } func (*SideInput) ProtoMessage() {} func (*SideInput) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{94} + return fileDescriptor_9d0d1b17d3865563, []int{96} } func (m *SideInput) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2714,7 +2770,7 @@ var xxx_messageInfo_SideInput proto.InternalMessageInfo func (m *SideInputTrigger) Reset() { *m = SideInputTrigger{} } func (*SideInputTrigger) ProtoMessage() {} func (*SideInputTrigger) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{95} + return fileDescriptor_9d0d1b17d3865563, []int{97} } func (m *SideInputTrigger) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2742,7 +2798,7 @@ var xxx_messageInfo_SideInputTrigger proto.InternalMessageInfo func (m *SideInputsManagerTemplate) Reset() { *m = SideInputsManagerTemplate{} } func (*SideInputsManagerTemplate) ProtoMessage() {} func (*SideInputsManagerTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{96} + return fileDescriptor_9d0d1b17d3865563, []int{98} } func (m *SideInputsManagerTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2770,7 +2826,7 @@ var xxx_messageInfo_SideInputsManagerTemplate proto.InternalMessageInfo func (m *Sink) Reset() { *m = Sink{} } func (*Sink) ProtoMessage() {} func (*Sink) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{97} + return fileDescriptor_9d0d1b17d3865563, []int{99} } func (m *Sink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2798,7 +2854,7 @@ var xxx_messageInfo_Sink proto.InternalMessageInfo func (m *SlidingWindow) Reset() { *m = SlidingWindow{} } func (*SlidingWindow) ProtoMessage() {} func (*SlidingWindow) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{98} + return fileDescriptor_9d0d1b17d3865563, []int{100} } func (m *SlidingWindow) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2826,7 +2882,7 @@ var xxx_messageInfo_SlidingWindow proto.InternalMessageInfo func (m *Source) Reset() { *m = Source{} } func (*Source) ProtoMessage() {} func (*Source) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{99} + return fileDescriptor_9d0d1b17d3865563, []int{101} } func (m *Source) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2854,7 +2910,7 @@ var xxx_messageInfo_Source proto.InternalMessageInfo func (m *SqsSink) Reset() { *m = SqsSink{} } func (*SqsSink) ProtoMessage() {} func (*SqsSink) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{100} + return fileDescriptor_9d0d1b17d3865563, []int{102} } func (m *SqsSink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2882,7 +2938,7 @@ var xxx_messageInfo_SqsSink proto.InternalMessageInfo func (m *SqsSource) Reset() { *m = SqsSource{} } func (*SqsSource) ProtoMessage() {} func (*SqsSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{101} + return fileDescriptor_9d0d1b17d3865563, []int{103} } func (m *SqsSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2910,7 +2966,7 @@ var xxx_messageInfo_SqsSource proto.InternalMessageInfo func (m *Status) Reset() { *m = Status{} } func (*Status) ProtoMessage() {} func (*Status) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{102} + return fileDescriptor_9d0d1b17d3865563, []int{104} } func (m *Status) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2938,7 +2994,7 @@ var xxx_messageInfo_Status proto.InternalMessageInfo func (m *TLS) Reset() { *m = TLS{} } func (*TLS) ProtoMessage() {} func (*TLS) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{103} + return fileDescriptor_9d0d1b17d3865563, []int{105} } func (m *TLS) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2966,7 +3022,7 @@ var xxx_messageInfo_TLS proto.InternalMessageInfo func (m *TagConditions) Reset() { *m = TagConditions{} } func (*TagConditions) ProtoMessage() {} func (*TagConditions) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{104} + return fileDescriptor_9d0d1b17d3865563, []int{106} } func (m *TagConditions) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2994,7 +3050,7 @@ var xxx_messageInfo_TagConditions proto.InternalMessageInfo func (m *Templates) Reset() { *m = Templates{} } func (*Templates) ProtoMessage() {} func (*Templates) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{105} + return fileDescriptor_9d0d1b17d3865563, []int{107} } func (m *Templates) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3022,7 +3078,7 @@ var xxx_messageInfo_Templates proto.InternalMessageInfo func (m *UDF) Reset() { *m = UDF{} } func (*UDF) ProtoMessage() {} func (*UDF) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{106} + return fileDescriptor_9d0d1b17d3865563, []int{108} } func (m *UDF) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3050,7 +3106,7 @@ var xxx_messageInfo_UDF proto.InternalMessageInfo func (m *UDSink) Reset() { *m = UDSink{} } func (*UDSink) ProtoMessage() {} func (*UDSink) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{107} + return fileDescriptor_9d0d1b17d3865563, []int{109} } func (m *UDSink) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3078,7 +3134,7 @@ var xxx_messageInfo_UDSink proto.InternalMessageInfo func (m *UDSource) Reset() { *m = UDSource{} } func (*UDSource) ProtoMessage() {} func (*UDSource) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{108} + return fileDescriptor_9d0d1b17d3865563, []int{110} } func (m *UDSource) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3106,7 +3162,7 @@ var xxx_messageInfo_UDSource proto.InternalMessageInfo func (m *UDTransformer) Reset() { *m = UDTransformer{} } func (*UDTransformer) ProtoMessage() {} func (*UDTransformer) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{109} + return fileDescriptor_9d0d1b17d3865563, []int{111} } func (m *UDTransformer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3134,7 +3190,7 @@ var xxx_messageInfo_UDTransformer proto.InternalMessageInfo func (m *UpdateStrategy) Reset() { *m = UpdateStrategy{} } func (*UpdateStrategy) ProtoMessage() {} func (*UpdateStrategy) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{110} + return fileDescriptor_9d0d1b17d3865563, []int{112} } func (m *UpdateStrategy) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3162,7 +3218,7 @@ var xxx_messageInfo_UpdateStrategy proto.InternalMessageInfo func (m *Vertex) Reset() { *m = Vertex{} } func (*Vertex) ProtoMessage() {} func (*Vertex) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{111} + return fileDescriptor_9d0d1b17d3865563, []int{113} } func (m *Vertex) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3190,7 +3246,7 @@ var xxx_messageInfo_Vertex proto.InternalMessageInfo func (m *VertexInstance) Reset() { *m = VertexInstance{} } func (*VertexInstance) ProtoMessage() {} func (*VertexInstance) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{112} + return fileDescriptor_9d0d1b17d3865563, []int{114} } func (m *VertexInstance) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3218,7 +3274,7 @@ var xxx_messageInfo_VertexInstance proto.InternalMessageInfo func (m *VertexLifecycle) Reset() { *m = VertexLifecycle{} } func (*VertexLifecycle) ProtoMessage() {} func (*VertexLifecycle) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{113} + return fileDescriptor_9d0d1b17d3865563, []int{115} } func (m *VertexLifecycle) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3246,7 +3302,7 @@ var xxx_messageInfo_VertexLifecycle proto.InternalMessageInfo func (m *VertexLimits) Reset() { *m = VertexLimits{} } func (*VertexLimits) ProtoMessage() {} func (*VertexLimits) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{114} + return fileDescriptor_9d0d1b17d3865563, []int{116} } func (m *VertexLimits) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3274,7 +3330,7 @@ var xxx_messageInfo_VertexLimits proto.InternalMessageInfo func (m *VertexList) Reset() { *m = VertexList{} } func (*VertexList) ProtoMessage() {} func (*VertexList) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{115} + return fileDescriptor_9d0d1b17d3865563, []int{117} } func (m *VertexList) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3302,7 +3358,7 @@ var xxx_messageInfo_VertexList proto.InternalMessageInfo func (m *VertexSpec) Reset() { *m = VertexSpec{} } func (*VertexSpec) ProtoMessage() {} func (*VertexSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{116} + return fileDescriptor_9d0d1b17d3865563, []int{118} } func (m *VertexSpec) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3330,7 +3386,7 @@ var xxx_messageInfo_VertexSpec proto.InternalMessageInfo func (m *VertexStatus) Reset() { *m = VertexStatus{} } func (*VertexStatus) ProtoMessage() {} func (*VertexStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{117} + return fileDescriptor_9d0d1b17d3865563, []int{119} } func (m *VertexStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3358,7 +3414,7 @@ var xxx_messageInfo_VertexStatus proto.InternalMessageInfo func (m *VertexTemplate) Reset() { *m = VertexTemplate{} } func (*VertexTemplate) ProtoMessage() {} func (*VertexTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{118} + return fileDescriptor_9d0d1b17d3865563, []int{120} } func (m *VertexTemplate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3386,7 +3442,7 @@ var xxx_messageInfo_VertexTemplate proto.InternalMessageInfo func (m *Watermark) Reset() { *m = Watermark{} } func (*Watermark) ProtoMessage() {} func (*Watermark) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{119} + return fileDescriptor_9d0d1b17d3865563, []int{121} } func (m *Watermark) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3414,7 +3470,7 @@ var xxx_messageInfo_Watermark proto.InternalMessageInfo func (m *Window) Reset() { *m = Window{} } func (*Window) ProtoMessage() {} func (*Window) Descriptor() ([]byte, []int) { - return fileDescriptor_9d0d1b17d3865563, []int{120} + return fileDescriptor_9d0d1b17d3865563, []int{122} } func (m *Window) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -3446,6 +3502,7 @@ func init() { proto.RegisterType((*AbstractSink)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.AbstractSink") proto.RegisterType((*AbstractVertex)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.AbstractVertex") proto.RegisterType((*AccumulatorWindow)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.AccumulatorWindow") + proto.RegisterType((*AtLeastOnce)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.AtLeastOnce") proto.RegisterType((*Authorization)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.Authorization") proto.RegisterType((*Backoff)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.Backoff") proto.RegisterType((*BasicAuth)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.BasicAuth") @@ -3456,6 +3513,7 @@ func init() { proto.RegisterType((*Container)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.Container") proto.RegisterType((*ContainerTemplate)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.ContainerTemplate") proto.RegisterType((*DaemonTemplate)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.DaemonTemplate") + proto.RegisterType((*Delivery)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.Delivery") proto.RegisterType((*Edge)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.Edge") proto.RegisterType((*ExactlyOnce)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.ExactlyOnce") proto.RegisterType((*FixedWindow)(nil), "github.com.numaproj.numaflow.pkg.apis.numaflow.v1alpha1.FixedWindow") @@ -3573,602 +3631,605 @@ func init() { } var fileDescriptor_9d0d1b17d3865563 = []byte{ - // 9514 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x24, 0x57, - 0x72, 0x98, 0xe6, 0x8b, 0x33, 0x53, 0xc3, 0x8f, 0xdd, 0xb7, 0xab, 0x15, 0xb5, 0xb7, 0xda, 0x59, - 0xb7, 0xac, 0x3b, 0x5d, 0x4e, 0x26, 0x23, 0xde, 0x49, 0xa7, 0x3b, 0x9d, 0x4e, 0x9a, 0x21, 0x97, - 0xbb, 0xd4, 0x92, 0x4b, 0xaa, 0x86, 0xdc, 0xd5, 0x9d, 0x72, 0xa7, 0x34, 0x7b, 0x1e, 0x87, 0x2d, - 0xf6, 0x74, 0xcf, 0x76, 0xf7, 0x70, 0x97, 0x72, 0x84, 0x3b, 0xdb, 0x70, 0x74, 0x4e, 0x0c, 0xc4, - 0x48, 0x10, 0xd8, 0x48, 0xe2, 0x1c, 0x0c, 0x18, 0xf0, 0x8f, 0xc0, 0x40, 0x90, 0xc4, 0xfe, 0xe1, - 0x03, 0x92, 0x38, 0x3f, 0x9c, 0x43, 0x7c, 0x4e, 0x0e, 0x46, 0x80, 0x28, 0x70, 0xc2, 0xe4, 0x98, - 0xe4, 0x47, 0xf2, 0xcb, 0x31, 0x90, 0xc4, 0xd9, 0x04, 0x70, 0xf0, 0xbe, 0xfa, 0x6b, 0x7a, 0x56, - 0xe4, 0xf4, 0x2c, 0xb5, 0xba, 0xe8, 0xd7, 0x4c, 0x57, 0xd5, 0xab, 0x7a, 0xfd, 0xfa, 0x7d, 0x54, - 0xd5, 0xab, 0x57, 0x0f, 0xae, 0x75, 0x4c, 0x7f, 0xb7, 0xbf, 0x3d, 0x67, 0x38, 0xdd, 0x79, 0xbb, - 0xdf, 0xd5, 0x7b, 0xae, 0xf3, 0x0e, 0xff, 0xb3, 0x63, 0x39, 0x77, 0xe7, 0x7b, 0x7b, 0x9d, 0x79, - 0xbd, 0x67, 0x7a, 0x21, 0x64, 0xff, 0x79, 0xdd, 0xea, 0xed, 0xea, 0xcf, 0xcf, 0x77, 0xa8, 0x4d, - 0x5d, 0xdd, 0xa7, 0xed, 0xb9, 0x9e, 0xeb, 0xf8, 0x0e, 0xf9, 0x62, 0xc8, 0x68, 0x4e, 0x31, 0x9a, - 0x53, 0xc5, 0xe6, 0x7a, 0x7b, 0x9d, 0x39, 0xc6, 0x28, 0x84, 0x28, 0x46, 0x17, 0x7f, 0x2a, 0x52, - 0x83, 0x8e, 0xd3, 0x71, 0xe6, 0x39, 0xbf, 0xed, 0xfe, 0x0e, 0x7f, 0xe2, 0x0f, 0xfc, 0x9f, 0x90, - 0x73, 0x51, 0xdb, 0x7b, 0xc9, 0x9b, 0x33, 0x1d, 0x56, 0xad, 0x79, 0xc3, 0x71, 0xe9, 0xfc, 0xfe, - 0x40, 0x5d, 0x2e, 0x7e, 0x21, 0xa4, 0xe9, 0xea, 0xc6, 0xae, 0x69, 0x53, 0xf7, 0x40, 0xbd, 0xcb, - 0xbc, 0x4b, 0x3d, 0xa7, 0xef, 0x1a, 0xf4, 0x44, 0xa5, 0xbc, 0xf9, 0x2e, 0xf5, 0xf5, 0x34, 0x59, - 0xf3, 0xc3, 0x4a, 0xb9, 0x7d, 0xdb, 0x37, 0xbb, 0x83, 0x62, 0x5e, 0xfc, 0xb0, 0x02, 0x9e, 0xb1, - 0x4b, 0xbb, 0xfa, 0x40, 0xb9, 0xcf, 0x0f, 0x2b, 0xd7, 0xf7, 0x4d, 0x6b, 0xde, 0xb4, 0x7d, 0xcf, - 0x77, 0x93, 0x85, 0xb4, 0xbf, 0x9f, 0x87, 0xa9, 0xc6, 0xed, 0x56, 0xc3, 0xf3, 0xfa, 0x5d, 0x8a, - 0x8e, 0x45, 0xc9, 0x67, 0xa1, 0xec, 0x3a, 0x16, 0x6d, 0xb8, 0xf6, 0x6c, 0xee, 0x4a, 0xee, 0xd9, - 0x6a, 0x73, 0xe6, 0xfb, 0x87, 0xf5, 0xc7, 0x8e, 0x0e, 0xeb, 0x65, 0x86, 0x6e, 0xe0, 0x4d, 0x54, - 0x78, 0xf2, 0x3c, 0xd4, 0x3c, 0xea, 0x79, 0xa6, 0x63, 0xdf, 0xd4, 0xbb, 0x74, 0x36, 0x2f, 0xc8, - 0x8f, 0x0e, 0xeb, 0xb5, 0x56, 0x08, 0xc6, 0x28, 0x0d, 0x79, 0x05, 0x66, 0xda, 0x7d, 0x57, 0xf7, - 0x4d, 0xc7, 0x6e, 0x51, 0xc3, 0xb1, 0xdb, 0xde, 0x6c, 0xe1, 0x4a, 0xee, 0xd9, 0x52, 0xf3, 0xdc, - 0xd1, 0x61, 0x7d, 0x66, 0x29, 0x8e, 0xc2, 0x24, 0x2d, 0x99, 0x03, 0xa0, 0xf7, 0x7c, 0xea, 0xda, - 0xba, 0xb5, 0xb2, 0x34, 0x5b, 0xe4, 0x02, 0xa7, 0x8f, 0x0e, 0xeb, 0x70, 0x35, 0x80, 0x62, 0x84, - 0x82, 0x68, 0x30, 0xd1, 0x73, 0x2c, 0xd3, 0x38, 0x98, 0x2d, 0x71, 0x5a, 0x38, 0x3a, 0xac, 0x4f, - 0x6c, 0x70, 0x08, 0x4a, 0x0c, 0xe3, 0x29, 0xfe, 0x35, 0x5c, 0xdb, 0x9b, 0x9d, 0xb8, 0x52, 0x50, - 0x3c, 0x05, 0x5d, 0x03, 0x6f, 0x7a, 0x18, 0xa1, 0xd0, 0x7e, 0x17, 0xe0, 0x5c, 0x63, 0xdb, 0xf3, - 0x5d, 0xdd, 0xf0, 0x37, 0x9c, 0xf6, 0x26, 0xed, 0xf6, 0x2c, 0xdd, 0xa7, 0x64, 0x0f, 0x2a, 0xac, - 0x0f, 0xb4, 0x75, 0x5f, 0xe7, 0x2d, 0x57, 0x5b, 0x68, 0xcc, 0x8d, 0xd8, 0xe7, 0xe7, 0xd6, 0x24, - 0xa3, 0xe6, 0xe4, 0xd1, 0x61, 0xbd, 0xa2, 0x9e, 0x30, 0x10, 0x40, 0x7e, 0x25, 0x07, 0x93, 0xb6, - 0xd3, 0xa6, 0x2d, 0x6a, 0x51, 0xc3, 0x77, 0xdc, 0xd9, 0xfc, 0x95, 0xc2, 0xb3, 0xb5, 0x85, 0x6f, - 0x8e, 0x2c, 0x31, 0xe5, 0x8d, 0xe6, 0x6e, 0x46, 0x04, 0x5c, 0xb5, 0x7d, 0xf7, 0xa0, 0x79, 0x5e, - 0xf6, 0x85, 0xc9, 0x28, 0x0a, 0x63, 0x35, 0x21, 0x5b, 0x50, 0xf3, 0x1d, 0x8b, 0x8a, 0x0f, 0xc7, - 0x3e, 0x2f, 0xab, 0xd8, 0xe5, 0x39, 0xd1, 0x3b, 0x99, 0xf8, 0x39, 0x36, 0x2c, 0xe7, 0xf6, 0x9f, - 0x9f, 0xdb, 0x0c, 0xc8, 0x9a, 0xe7, 0x24, 0xe3, 0x5a, 0x08, 0xf3, 0x30, 0xca, 0x87, 0x50, 0x98, - 0xf1, 0xa8, 0xd1, 0x77, 0x4d, 0xff, 0x60, 0xd1, 0xb1, 0x7d, 0x7a, 0xcf, 0xe7, 0xdf, 0xbf, 0xb6, - 0xf0, 0xe9, 0x34, 0xd6, 0x1b, 0x4e, 0xbb, 0x15, 0xa7, 0x16, 0x3d, 0x2c, 0x01, 0xc4, 0x24, 0x4f, - 0x62, 0xc3, 0x19, 0xb3, 0xab, 0x77, 0xe8, 0x46, 0xdf, 0xb2, 0x5a, 0xd4, 0x70, 0xa9, 0xef, 0xcd, - 0x96, 0xf8, 0x2b, 0x3c, 0x9b, 0x26, 0x67, 0xd5, 0x31, 0x74, 0x6b, 0x7d, 0xfb, 0x1d, 0x6a, 0xf8, - 0x48, 0x77, 0xa8, 0x4b, 0x6d, 0x83, 0x36, 0x67, 0xe5, 0xcb, 0x9c, 0x59, 0x49, 0x70, 0xc2, 0x01, - 0xde, 0xe4, 0x1a, 0x9c, 0xed, 0xb9, 0xa6, 0xc3, 0xab, 0x60, 0xe9, 0x9e, 0xc7, 0x47, 0xd2, 0x04, - 0xef, 0xac, 0x4f, 0x4a, 0x36, 0x67, 0x37, 0x92, 0x04, 0x38, 0x58, 0x86, 0x3c, 0x0b, 0x15, 0x05, - 0x9c, 0x2d, 0xf3, 0x21, 0xc5, 0xfb, 0x8e, 0x2a, 0x8b, 0x01, 0x96, 0x2c, 0x43, 0x45, 0xdf, 0xd9, - 0x31, 0x6d, 0x46, 0x59, 0xe1, 0x4d, 0x78, 0x29, 0xed, 0xd5, 0x1a, 0x92, 0x46, 0xf0, 0x51, 0x4f, - 0x18, 0x94, 0x25, 0xaf, 0x03, 0xf1, 0xa8, 0xbb, 0x6f, 0x1a, 0xb4, 0x61, 0x18, 0x4e, 0xdf, 0xf6, - 0x79, 0xdd, 0xab, 0xbc, 0xee, 0x17, 0x65, 0xdd, 0x49, 0x6b, 0x80, 0x02, 0x53, 0x4a, 0x91, 0xd7, - 0xe0, 0x8c, 0x9c, 0xde, 0xc2, 0x56, 0x00, 0xce, 0xe9, 0x3c, 0x6b, 0x48, 0x4c, 0xe0, 0x70, 0x80, - 0x9a, 0xb4, 0xe1, 0x92, 0xde, 0xf7, 0x9d, 0x2e, 0x63, 0x19, 0x17, 0xba, 0xe9, 0xec, 0x51, 0x7b, - 0xb6, 0x76, 0x25, 0xf7, 0x6c, 0xa5, 0x79, 0xe5, 0xe8, 0xb0, 0x7e, 0xa9, 0xf1, 0x00, 0x3a, 0x7c, - 0x20, 0x17, 0xb2, 0x0e, 0xd5, 0xb6, 0xed, 0x89, 0x99, 0x61, 0x76, 0x92, 0x57, 0xf0, 0x79, 0xf9, - 0xaa, 0xd5, 0xa5, 0x9b, 0x2d, 0x81, 0xb8, 0x7f, 0x58, 0xbf, 0x34, 0xb8, 0x0a, 0xcd, 0x05, 0x78, - 0x0c, 0x79, 0x90, 0x35, 0xce, 0x70, 0xd1, 0xb1, 0x77, 0xcc, 0xce, 0xec, 0x14, 0xff, 0x1a, 0x57, - 0x86, 0x74, 0xe8, 0xa5, 0x9b, 0x2d, 0x41, 0xd7, 0x9c, 0x92, 0xe2, 0xc4, 0x23, 0x86, 0x1c, 0x48, - 0x1b, 0xa6, 0xd5, 0xfa, 0xb5, 0x68, 0xe9, 0x66, 0xd7, 0x9b, 0x9d, 0xe6, 0x9d, 0xf7, 0x27, 0x87, - 0xf0, 0xc4, 0x28, 0x71, 0xf3, 0x82, 0x7c, 0x95, 0xe9, 0x18, 0xd8, 0xc3, 0x04, 0xcf, 0x8b, 0xaf, - 0xc2, 0xd9, 0x81, 0xb9, 0x81, 0x9c, 0x81, 0xc2, 0x1e, 0x3d, 0x10, 0x8b, 0x06, 0xb2, 0xbf, 0xe4, - 0x3c, 0x94, 0xf6, 0x75, 0xab, 0x2f, 0x57, 0x06, 0x14, 0x0f, 0x5f, 0xce, 0xbf, 0x94, 0xd3, 0xfe, - 0xa0, 0x04, 0x93, 0x6a, 0xc6, 0x69, 0x99, 0xf6, 0x1e, 0xb9, 0x0d, 0x05, 0xcb, 0xe9, 0xc8, 0x79, - 0xf3, 0x2b, 0x23, 0xcf, 0x62, 0xab, 0x4e, 0xa7, 0x59, 0x3e, 0x3a, 0xac, 0x17, 0x56, 0x9d, 0x0e, - 0x32, 0x8e, 0xc4, 0x80, 0xd2, 0x9e, 0xbe, 0xb3, 0xa7, 0xf3, 0x3a, 0xd4, 0x16, 0x9a, 0x23, 0xb3, - 0xbe, 0xc1, 0xb8, 0xb0, 0xba, 0x36, 0xab, 0x47, 0x87, 0xf5, 0x12, 0x7f, 0x44, 0xc1, 0x9b, 0x38, - 0x50, 0xdd, 0xb6, 0x74, 0x63, 0x6f, 0xd7, 0xb1, 0x28, 0x5f, 0xcf, 0xb2, 0x08, 0x6a, 0x2a, 0x4e, - 0xe2, 0x33, 0x07, 0x8f, 0x18, 0xca, 0x20, 0x06, 0x4c, 0xf4, 0xdb, 0x9e, 0x69, 0xef, 0xc9, 0x39, - 0xf0, 0xd5, 0x91, 0xa5, 0x6d, 0x2d, 0xf1, 0x77, 0xe2, 0x0b, 0xa3, 0xf8, 0x8f, 0x92, 0x35, 0x6b, - 0x3a, 0x36, 0x52, 0x29, 0x5f, 0x3b, 0xb3, 0xbc, 0x11, 0x1b, 0x48, 0x34, 0x6c, 0x3a, 0xfe, 0x88, - 0x82, 0x37, 0x79, 0x0b, 0x0a, 0xde, 0x1d, 0x8f, 0xcf, 0x78, 0xb5, 0x85, 0xd7, 0x46, 0x17, 0x71, - 0xc7, 0xe3, 0x02, 0xf8, 0xc7, 0x6f, 0xdd, 0xf1, 0x90, 0x71, 0x25, 0x1d, 0x98, 0xe8, 0xf5, 0x2d, - 0x4f, 0x77, 0xf9, 0x8c, 0x58, 0x5b, 0x58, 0x1c, 0x99, 0xff, 0x06, 0x67, 0x13, 0x36, 0x95, 0x78, - 0x46, 0xc9, 0x5e, 0xfb, 0xd3, 0x49, 0x98, 0x56, 0xfd, 0xf9, 0x16, 0x75, 0x7d, 0x7a, 0x8f, 0x5c, - 0x81, 0xa2, 0xcd, 0x66, 0x31, 0xa1, 0x44, 0x4d, 0xca, 0x91, 0x55, 0xe4, 0xb3, 0x17, 0xc7, 0xb0, - 0x8f, 0x28, 0x46, 0x95, 0xec, 0x9b, 0xa3, 0x7f, 0xc4, 0x16, 0x67, 0x23, 0x6a, 0x26, 0xfe, 0xa3, - 0x64, 0x4d, 0xde, 0x82, 0x22, 0xef, 0x27, 0xa2, 0x57, 0xbe, 0x32, 0xba, 0x08, 0xf6, 0xea, 0x15, - 0xf6, 0x06, 0xbc, 0x8f, 0x70, 0xa6, 0x6c, 0xd4, 0xf6, 0xdb, 0x3b, 0xb2, 0x0f, 0x7e, 0x25, 0x43, - 0x1f, 0x5c, 0x16, 0x1f, 0x6e, 0x6b, 0x69, 0x19, 0x19, 0x47, 0xf2, 0xd7, 0x72, 0x70, 0xd6, 0x70, - 0x6c, 0x5f, 0x67, 0x5a, 0xac, 0xd2, 0x47, 0x64, 0x3f, 0x7c, 0x7d, 0x64, 0x39, 0x8b, 0x49, 0x8e, - 0xcd, 0xc7, 0xd9, 0xf2, 0x3a, 0x00, 0xc6, 0x41, 0xd9, 0xe4, 0x6f, 0xe7, 0xe0, 0x71, 0xb6, 0xec, - 0x0d, 0x10, 0xcb, 0xae, 0x3b, 0xce, 0x5a, 0x3d, 0x79, 0x74, 0x58, 0x7f, 0x7c, 0x25, 0x4d, 0x18, - 0xa6, 0xd7, 0x81, 0xd5, 0xee, 0x9c, 0x3e, 0xa8, 0xc1, 0xc9, 0x6e, 0xbf, 0x3a, 0x4e, 0xad, 0xb0, - 0xf9, 0x29, 0xd9, 0x95, 0xd3, 0x94, 0x60, 0x4c, 0xab, 0x05, 0xb9, 0x0a, 0xe5, 0x7d, 0xc7, 0xea, - 0x77, 0xa9, 0x37, 0x5b, 0xe1, 0xab, 0xd1, 0xc5, 0xb4, 0xd5, 0xe8, 0x16, 0x27, 0x09, 0xcd, 0x0d, - 0xf1, 0xec, 0xa1, 0x2a, 0x4b, 0x4c, 0x98, 0xb0, 0xcc, 0xae, 0xe9, 0x7b, 0x5c, 0xc7, 0xa8, 0x2d, - 0x5c, 0x1d, 0xf9, 0xb5, 0xc4, 0x10, 0x5d, 0xe5, 0xcc, 0xc4, 0xa8, 0x11, 0xff, 0x51, 0x0a, 0xe0, - 0x53, 0x9f, 0xa1, 0x5b, 0x42, 0x07, 0xa9, 0x2d, 0x7c, 0x75, 0xf4, 0x61, 0xc3, 0xb8, 0x34, 0xa7, - 0xe4, 0x3b, 0x95, 0xf8, 0x23, 0x0a, 0xde, 0xe4, 0x1b, 0x30, 0x1d, 0xfb, 0x9a, 0xde, 0x6c, 0x8d, - 0xb7, 0xce, 0x53, 0x69, 0xad, 0x13, 0x50, 0x85, 0x8b, 0x74, 0xac, 0x87, 0x78, 0x98, 0x60, 0x46, - 0x6e, 0x40, 0xc5, 0x33, 0xdb, 0xd4, 0xd0, 0x5d, 0x6f, 0x76, 0xf2, 0x38, 0x8c, 0xcf, 0x48, 0xc6, - 0x95, 0x96, 0x2c, 0x86, 0x01, 0x03, 0x6e, 0x24, 0xe9, 0xae, 0x6f, 0x0a, 0x9d, 0x7e, 0x8a, 0xeb, - 0x97, 0xc2, 0x48, 0x0a, 0xa0, 0x18, 0xa1, 0x60, 0xf4, 0xac, 0xec, 0x8a, 0xdd, 0xeb, 0xfb, 0x42, - 0x07, 0x91, 0x46, 0x55, 0x2b, 0x80, 0x62, 0x84, 0x82, 0xfc, 0x66, 0x0e, 0x3e, 0x15, 0x3e, 0x0e, - 0x0e, 0xb2, 0x99, 0xb1, 0x0f, 0xb2, 0xfa, 0xd1, 0x61, 0xfd, 0x53, 0xad, 0xe1, 0x22, 0xf1, 0x41, - 0xf5, 0x21, 0xef, 0xe7, 0x60, 0xba, 0xdf, 0x6b, 0xeb, 0x3e, 0x6d, 0xf9, 0xcc, 0x9e, 0xee, 0x1c, - 0xcc, 0x9e, 0xe1, 0x55, 0xbc, 0x36, 0xfa, 0x2c, 0x18, 0x63, 0x17, 0x7e, 0xe6, 0x38, 0x1c, 0x13, - 0x62, 0xb5, 0x77, 0xe0, 0x6c, 0xc3, 0x30, 0xfa, 0xdd, 0xbe, 0xa5, 0xfb, 0x8e, 0x7b, 0xdb, 0xb4, - 0xdb, 0xce, 0x5d, 0xb2, 0x05, 0x65, 0xa6, 0x1d, 0x3b, 0x7d, 0x5f, 0xaa, 0x54, 0x73, 0x91, 0x4f, - 0x1f, 0x78, 0x07, 0xc2, 0xda, 0x30, 0xbb, 0x92, 0x75, 0x06, 0x65, 0x80, 0x37, 0x6b, 0x6c, 0x04, - 0x6e, 0x0a, 0x16, 0xa8, 0x78, 0x69, 0xb7, 0x61, 0xaa, 0xd1, 0xf7, 0x77, 0x1d, 0xd7, 0x7c, 0x97, - 0x93, 0x91, 0x65, 0x28, 0xf9, 0x5c, 0xbb, 0x16, 0x52, 0x9e, 0x49, 0xeb, 0x60, 0xc2, 0xd2, 0xb9, - 0x41, 0x0f, 0x94, 0xba, 0x28, 0xb4, 0x00, 0xa1, 0x6d, 0x8b, 0xe2, 0xda, 0x2f, 0xe7, 0xa1, 0xdc, - 0xd4, 0x8d, 0x3d, 0x67, 0x67, 0x87, 0xbc, 0x09, 0x15, 0xd3, 0xf6, 0xa9, 0xbb, 0xaf, 0x5b, 0x23, - 0x56, 0x9e, 0x1b, 0x2c, 0x2b, 0x92, 0x07, 0x06, 0xdc, 0x48, 0x1d, 0x4a, 0x9e, 0x4f, 0x7b, 0x1e, - 0x5f, 0x6f, 0xa7, 0xa4, 0x32, 0xc2, 0x00, 0x28, 0xe0, 0x44, 0x83, 0x89, 0x1d, 0x9d, 0x9b, 0xd3, - 0x6c, 0xb9, 0xcc, 0x89, 0xa9, 0x61, 0x99, 0x43, 0x50, 0x62, 0xc8, 0x0a, 0x14, 0x0c, 0xbd, 0x27, - 0xd7, 0xbc, 0x93, 0xd6, 0x8c, 0xaf, 0x72, 0x8b, 0x7a, 0x0f, 0x19, 0x0f, 0x26, 0xee, 0x1d, 0xd3, - 0xf7, 0xa9, 0xcb, 0x57, 0x36, 0x29, 0xee, 0x75, 0x0e, 0x41, 0x89, 0xd1, 0x7e, 0x2d, 0x07, 0xd5, - 0xa6, 0xee, 0x99, 0x06, 0x6b, 0x78, 0xb2, 0x08, 0xc5, 0xbe, 0x47, 0xdd, 0x93, 0x35, 0x37, 0x5f, - 0xb5, 0xb7, 0x3c, 0xea, 0x22, 0x2f, 0x4c, 0xd6, 0xa1, 0xd2, 0xd3, 0x3d, 0xef, 0xae, 0xe3, 0xb6, - 0xa5, 0xe6, 0x71, 0x4c, 0x46, 0xc2, 0xa0, 0x94, 0x45, 0x31, 0x60, 0xa2, 0xd5, 0x20, 0xd4, 0x52, - 0xb5, 0x5f, 0xcc, 0xc1, 0xb9, 0x66, 0x7f, 0x67, 0x87, 0xba, 0xd2, 0x7e, 0x92, 0x96, 0x49, 0x1f, - 0xaa, 0xef, 0x50, 0xdf, 0xf3, 0x5d, 0xaa, 0x77, 0xa5, 0xd8, 0xeb, 0x23, 0x8f, 0x95, 0xd7, 0xa9, - 0xdf, 0xe2, 0x9c, 0xa2, 0x06, 0x51, 0x00, 0xc4, 0x50, 0x92, 0xf6, 0xbb, 0x25, 0x98, 0x5c, 0x74, - 0xba, 0xdb, 0xa6, 0x4d, 0xdb, 0x57, 0xdb, 0x1d, 0x4a, 0xde, 0x86, 0x22, 0x6d, 0x77, 0xa8, 0x6c, - 0xc2, 0xd1, 0x15, 0x22, 0xc6, 0x2c, 0x54, 0xeb, 0xd8, 0x13, 0x72, 0xc6, 0x64, 0x15, 0xa6, 0x77, - 0x5c, 0xa7, 0x2b, 0xd6, 0x98, 0xcd, 0x83, 0x9e, 0x72, 0x8c, 0xfd, 0xa4, 0x1a, 0xd0, 0xcb, 0x31, - 0xec, 0xfd, 0xc3, 0x3a, 0x84, 0x4f, 0x98, 0x28, 0x4b, 0xde, 0x84, 0xd9, 0x10, 0x12, 0x4c, 0xb6, - 0x8b, 0xcc, 0x22, 0x95, 0x9e, 0xb3, 0x4b, 0x47, 0x87, 0xf5, 0xd9, 0xe5, 0x21, 0x34, 0x38, 0xb4, - 0x34, 0x9b, 0xc2, 0xce, 0x84, 0x48, 0xb1, 0x00, 0xca, 0x6e, 0x3d, 0xa6, 0x95, 0x95, 0x9b, 0xee, - 0xcb, 0x09, 0x11, 0x38, 0x20, 0x94, 0x2c, 0xc3, 0xa4, 0xef, 0x44, 0xda, 0x4b, 0xf8, 0xea, 0x34, - 0xe5, 0x6b, 0xda, 0x74, 0x86, 0xb6, 0x56, 0xac, 0x1c, 0x41, 0xb8, 0xa0, 0x9e, 0x13, 0x2d, 0x35, - 0xc1, 0x5b, 0xea, 0xe2, 0xd1, 0x61, 0xfd, 0xc2, 0x66, 0x2a, 0x05, 0x0e, 0x29, 0x49, 0x7e, 0x26, - 0x07, 0xd3, 0x0a, 0x25, 0xdb, 0xa8, 0x3c, 0xce, 0x36, 0x22, 0xac, 0x47, 0x6c, 0xc6, 0x04, 0x60, - 0x42, 0xa0, 0xd6, 0x84, 0xda, 0xa2, 0xd3, 0xed, 0xb9, 0xc2, 0x8f, 0x4a, 0x3e, 0x0f, 0x45, 0x9f, - 0x35, 0x93, 0xb0, 0x2c, 0xea, 0xaa, 0x0b, 0xca, 0xe6, 0x99, 0x89, 0x90, 0xf2, 0x36, 0xe2, 0xc4, - 0xda, 0x6f, 0x95, 0xa1, 0x1a, 0x2c, 0x63, 0xe4, 0x69, 0x28, 0x71, 0x4f, 0x94, 0xe4, 0x11, 0xe8, - 0x27, 0xdc, 0x61, 0x85, 0x02, 0x47, 0x9e, 0x81, 0xb2, 0xe1, 0x74, 0xbb, 0xba, 0xdd, 0xe6, 0xde, - 0xc5, 0xaa, 0x58, 0x14, 0x16, 0x05, 0x08, 0x15, 0x8e, 0x5c, 0x82, 0xa2, 0xee, 0x76, 0x84, 0xa3, - 0xaf, 0x2a, 0x26, 0x9b, 0x86, 0xdb, 0xf1, 0x90, 0x43, 0xc9, 0x97, 0xa0, 0x40, 0xed, 0xfd, 0xd9, - 0xe2, 0x70, 0xbd, 0xef, 0xaa, 0xbd, 0x7f, 0x4b, 0x77, 0x9b, 0x35, 0x59, 0x87, 0xc2, 0x55, 0x7b, - 0x1f, 0x59, 0x19, 0xb2, 0x0a, 0x65, 0x6a, 0xef, 0xb3, 0xfe, 0x23, 0x3d, 0x70, 0x3f, 0x31, 0xa4, - 0x38, 0x23, 0x91, 0x26, 0x50, 0xa0, 0x3d, 0x4a, 0x30, 0x2a, 0x16, 0xe4, 0x6b, 0x30, 0x29, 0x14, - 0xc9, 0x35, 0xf6, 0x5d, 0x85, 0xa3, 0xb7, 0xb6, 0x50, 0x1f, 0xae, 0x89, 0x72, 0xba, 0xd0, 0xe3, - 0x19, 0x01, 0x7a, 0x18, 0x63, 0x45, 0xbe, 0x06, 0x55, 0xe5, 0x20, 0x51, 0xbd, 0x23, 0xd5, 0x59, - 0xa8, 0xbc, 0x2a, 0x48, 0xef, 0xf4, 0x4d, 0x97, 0x76, 0xa9, 0xed, 0x7b, 0xcd, 0xb3, 0xca, 0x7d, - 0xa4, 0xb0, 0x1e, 0x86, 0xdc, 0xc8, 0xf6, 0xa0, 0xd7, 0x53, 0xb8, 0xec, 0x9e, 0x1e, 0x32, 0x65, - 0x8f, 0xe0, 0xf2, 0xfc, 0x26, 0xcc, 0x04, 0x6e, 0x49, 0xe9, 0xd9, 0x12, 0x4e, 0xbc, 0x2f, 0xb0, - 0xe2, 0x2b, 0x71, 0xd4, 0xfd, 0xc3, 0xfa, 0x53, 0x29, 0xbe, 0xad, 0x90, 0x00, 0x93, 0xcc, 0xc8, - 0xbb, 0x30, 0xed, 0x52, 0xbd, 0x6d, 0xda, 0xd4, 0xf3, 0x36, 0x5c, 0x67, 0x3b, 0xbb, 0x56, 0xcd, - 0xb9, 0x88, 0xa1, 0x83, 0x31, 0xce, 0x98, 0x90, 0x44, 0xee, 0xc2, 0x94, 0x65, 0xee, 0xd3, 0x50, - 0x74, 0x6d, 0x2c, 0xa2, 0xcf, 0x1e, 0x1d, 0xd6, 0xa7, 0x56, 0xa3, 0x8c, 0x31, 0x2e, 0x87, 0x69, - 0x46, 0x3d, 0xc7, 0xf5, 0x95, 0xea, 0xfd, 0x13, 0x0f, 0x54, 0xbd, 0x37, 0x1c, 0xd7, 0x0f, 0x07, - 0x21, 0x7b, 0xf2, 0x50, 0x14, 0xd7, 0xfe, 0x51, 0x09, 0x06, 0x0d, 0xd4, 0x78, 0x8f, 0xcb, 0x8d, - 0xbb, 0xc7, 0x25, 0x7b, 0x83, 0x58, 0xbf, 0x5e, 0x92, 0xc5, 0xc6, 0xd0, 0x23, 0x52, 0x7a, 0x75, - 0x61, 0xdc, 0xbd, 0xfa, 0x91, 0x99, 0x78, 0x06, 0xbb, 0xff, 0xc4, 0x47, 0xd7, 0xfd, 0xcb, 0xa7, - 0xd3, 0xfd, 0xb5, 0xef, 0x14, 0x61, 0x7a, 0x49, 0xa7, 0x5d, 0xc7, 0xfe, 0x50, 0x1f, 0x45, 0xee, - 0x91, 0xf0, 0x51, 0x3c, 0x0b, 0x15, 0x97, 0xf6, 0x2c, 0xd3, 0xd0, 0x85, 0x79, 0x20, 0xb7, 0x4f, - 0x50, 0xc2, 0x30, 0xc0, 0x0e, 0xf1, 0x4d, 0x15, 0x1e, 0x49, 0xdf, 0x54, 0xf1, 0xa3, 0xf7, 0x4d, - 0x69, 0x3f, 0x93, 0x07, 0xae, 0x1e, 0x93, 0x2b, 0x50, 0x64, 0xaa, 0x5f, 0xd2, 0x23, 0xca, 0x47, - 0x0b, 0xc7, 0x90, 0x8b, 0x90, 0xf7, 0x1d, 0x39, 0xdd, 0x80, 0xc4, 0xe7, 0x37, 0x1d, 0xcc, 0xfb, - 0x0e, 0x79, 0x17, 0xc0, 0x70, 0xec, 0xb6, 0xa9, 0x76, 0x15, 0xb3, 0xbd, 0xd8, 0xb2, 0xe3, 0xde, - 0xd5, 0xdd, 0xf6, 0x62, 0xc0, 0x51, 0x78, 0x27, 0xc2, 0x67, 0x8c, 0x48, 0x23, 0xaf, 0xc2, 0x84, - 0x63, 0x2f, 0xf7, 0x2d, 0x4b, 0x6e, 0x39, 0x7f, 0x86, 0x19, 0x6a, 0xeb, 0x1c, 0x72, 0xff, 0xb0, - 0xfe, 0xa4, 0x30, 0x77, 0xd8, 0xd3, 0x6d, 0xd7, 0xf4, 0x4d, 0xbb, 0x13, 0x18, 0xeb, 0xb2, 0x98, - 0xf6, 0x41, 0x0e, 0x6a, 0x57, 0xef, 0xe9, 0x86, 0x6f, 0x1d, 0xac, 0xdb, 0x06, 0xdf, 0x64, 0xa7, - 0xb6, 0xbe, 0x6d, 0xd1, 0x36, 0x6f, 0x8d, 0x4a, 0x74, 0xfa, 0xe0, 0x60, 0x54, 0x78, 0xf2, 0x32, - 0x4c, 0x19, 0x8e, 0xed, 0x99, 0x9e, 0x4f, 0x6d, 0xbf, 0x61, 0xec, 0xf1, 0xe6, 0xa9, 0x34, 0x1f, - 0x97, 0x05, 0xa6, 0x16, 0xa3, 0x48, 0x8c, 0xd3, 0x12, 0x1d, 0x6a, 0x6d, 0xda, 0xee, 0xf7, 0x84, - 0x5b, 0x40, 0xb6, 0xda, 0x49, 0x8d, 0x56, 0xbe, 0xa3, 0xbf, 0x14, 0xb2, 0xc1, 0x28, 0x4f, 0xed, - 0xaf, 0xe7, 0xa0, 0xb6, 0x6c, 0xde, 0xa3, 0x6d, 0xe9, 0x7a, 0x40, 0x98, 0xb0, 0xa8, 0xdd, 0xf1, - 0x77, 0x47, 0x34, 0xde, 0x85, 0x3b, 0x8e, 0x73, 0x40, 0xc9, 0x89, 0xcc, 0x43, 0x55, 0x98, 0x73, - 0xa6, 0xdd, 0x91, 0xef, 0x1f, 0x2c, 0x62, 0x2d, 0x85, 0xc0, 0x90, 0x46, 0x7b, 0x0f, 0xce, 0x0e, - 0x7c, 0x61, 0xb2, 0x0b, 0x45, 0x5f, 0xef, 0xa8, 0xf5, 0x72, 0x79, 0xe4, 0xbe, 0xb3, 0xa9, 0x77, - 0x22, 0xfd, 0x26, 0xe8, 0xc7, 0x9b, 0x3a, 0x53, 0x7a, 0x99, 0x04, 0xed, 0xb7, 0x8b, 0x30, 0x71, - 0xad, 0xd5, 0x6a, 0x6c, 0xac, 0x90, 0x17, 0xa0, 0x26, 0xb7, 0x3b, 0x6f, 0x86, 0xbb, 0x01, 0xc1, - 0x6e, 0x77, 0x2b, 0x44, 0x61, 0x94, 0x8e, 0x29, 0xe8, 0x2e, 0xd5, 0xad, 0xae, 0x1c, 0x0c, 0x81, - 0x6e, 0x80, 0x0c, 0x88, 0x02, 0x47, 0x74, 0x98, 0x66, 0x06, 0xbd, 0xad, 0x77, 0xa9, 0x30, 0xd6, - 0xe5, 0x07, 0x3e, 0xa6, 0x39, 0xcf, 0x17, 0x90, 0xad, 0x18, 0x03, 0x4c, 0x30, 0x24, 0x2f, 0x41, - 0x45, 0xef, 0xfb, 0xbb, 0xdc, 0x2c, 0x13, 0x7d, 0xff, 0x12, 0xdf, 0x0d, 0x96, 0xb0, 0xfb, 0x87, - 0xf5, 0xc9, 0x1b, 0xd8, 0x7c, 0x41, 0x3d, 0x63, 0x40, 0xcd, 0x2a, 0xa7, 0x1c, 0x04, 0xb2, 0x72, - 0xa5, 0x13, 0x57, 0x6e, 0x23, 0xc6, 0x00, 0x13, 0x0c, 0xc9, 0x5b, 0x30, 0xb9, 0x47, 0x0f, 0x7c, - 0x7d, 0x5b, 0x0a, 0x98, 0x38, 0x89, 0x80, 0x33, 0x4c, 0xa9, 0xbf, 0x11, 0x29, 0x8e, 0x31, 0x66, - 0xc4, 0x83, 0xf3, 0x7b, 0xd4, 0xdd, 0xa6, 0xae, 0x23, 0xf7, 0x56, 0xa5, 0x90, 0xf2, 0x49, 0x84, - 0xcc, 0x1e, 0x1d, 0xd6, 0xcf, 0xdf, 0x48, 0x61, 0x83, 0xa9, 0xcc, 0xb5, 0xff, 0x9d, 0x87, 0x99, - 0x6b, 0x22, 0x44, 0xc7, 0x71, 0x85, 0x66, 0x41, 0x9e, 0x84, 0x82, 0xdb, 0xeb, 0xf3, 0x9e, 0x53, - 0x10, 0x0e, 0x24, 0xdc, 0xd8, 0x42, 0x06, 0x23, 0x6f, 0x42, 0x45, 0x45, 0xc8, 0x48, 0x97, 0xca, - 0x48, 0xae, 0x32, 0xf5, 0x84, 0x01, 0x37, 0x66, 0xfb, 0x75, 0xbd, 0x4e, 0xcb, 0x7c, 0x97, 0x4a, - 0x2f, 0x03, 0xb7, 0xfd, 0xd6, 0x04, 0x08, 0x15, 0x8e, 0xad, 0x9a, 0x7b, 0xf4, 0x40, 0xd8, 0xd8, - 0xc5, 0x70, 0xd5, 0xbc, 0x21, 0x61, 0x18, 0x60, 0x49, 0x5d, 0xed, 0x05, 0xb3, 0x5e, 0x50, 0x14, - 0xbe, 0xb7, 0x5b, 0x0c, 0x20, 0xb7, 0x85, 0xd9, 0xbc, 0x21, 0x9d, 0x61, 0x13, 0xa3, 0xcf, 0x1b, - 0x71, 0xe7, 0x19, 0xf9, 0x1c, 0x54, 0x39, 0xf3, 0xa6, 0xe5, 0x6c, 0xf3, 0x0f, 0x57, 0x15, 0x9e, - 0xa2, 0x5b, 0x0a, 0x88, 0x21, 0x5e, 0xfb, 0xb3, 0x3c, 0x5c, 0xb8, 0x46, 0x7d, 0xa1, 0xb5, 0x2c, - 0xd1, 0x9e, 0xe5, 0x1c, 0x30, 0x7d, 0x19, 0xe9, 0x1d, 0xf2, 0x1a, 0x80, 0xe9, 0x6d, 0xb7, 0xf6, - 0x8d, 0xcd, 0xd0, 0xee, 0xbe, 0x22, 0x87, 0x24, 0xac, 0xb4, 0x9a, 0x12, 0x73, 0x3f, 0xf6, 0x84, - 0x91, 0x32, 0xa1, 0xc1, 0x9d, 0x7f, 0x80, 0xc1, 0xdd, 0x02, 0xe8, 0x85, 0x5a, 0x77, 0x81, 0x53, - 0x7e, 0x5e, 0x89, 0x39, 0x89, 0xc2, 0x1d, 0x61, 0x93, 0x45, 0x0f, 0xb6, 0xe1, 0x4c, 0x9b, 0xee, - 0xe8, 0x7d, 0xcb, 0x0f, 0x2c, 0x05, 0x39, 0x88, 0x8f, 0x6f, 0x6c, 0x04, 0xb1, 0x30, 0x4b, 0x09, - 0x4e, 0x38, 0xc0, 0x5b, 0xfb, 0x9d, 0x02, 0x5c, 0xbc, 0x46, 0xfd, 0xc0, 0x8f, 0x27, 0x67, 0xc7, - 0x56, 0x8f, 0x1a, 0xec, 0x2b, 0xbc, 0x9f, 0x83, 0x09, 0x4b, 0xdf, 0xa6, 0x16, 0x9b, 0xc2, 0xd9, - 0xdb, 0xbc, 0x3d, 0xf2, 0x14, 0x3e, 0x5c, 0xca, 0xdc, 0x2a, 0x97, 0x20, 0xc2, 0x9d, 0xa6, 0x65, - 0xe5, 0x27, 0x04, 0x10, 0xa5, 0x78, 0x36, 0xa9, 0x1b, 0x56, 0xdf, 0xf3, 0x85, 0xe5, 0x26, 0xf5, - 0xc5, 0x60, 0x52, 0x5f, 0x0c, 0x51, 0x18, 0xa5, 0x23, 0x0b, 0x00, 0x86, 0x65, 0x52, 0xdb, 0xe7, - 0xa5, 0xc4, 0xb8, 0x22, 0xea, 0xfb, 0x2e, 0x06, 0x18, 0x8c, 0x50, 0x31, 0x51, 0x5d, 0xc7, 0x36, - 0x7d, 0x47, 0x88, 0x2a, 0xc6, 0x45, 0xad, 0x85, 0x28, 0x8c, 0xd2, 0xf1, 0x62, 0xd4, 0x77, 0x4d, - 0xc3, 0xe3, 0xc5, 0x4a, 0x89, 0x62, 0x21, 0x0a, 0xa3, 0x74, 0x17, 0xbf, 0x04, 0xb5, 0xc8, 0xfb, - 0x9f, 0x28, 0xa4, 0xe3, 0xef, 0x55, 0xe1, 0x72, 0xac, 0x59, 0x7d, 0xdd, 0xa7, 0x3b, 0x7d, 0xab, - 0x45, 0x7d, 0xf5, 0x01, 0x47, 0x5c, 0x0b, 0xff, 0x6a, 0xf8, 0xdd, 0x45, 0x94, 0x9b, 0x31, 0x9e, - 0xef, 0x3e, 0x50, 0xc1, 0x63, 0x7d, 0xfb, 0x79, 0xa8, 0xda, 0xba, 0xef, 0xf1, 0x81, 0x2b, 0xc7, - 0x68, 0xa0, 0x8b, 0xdc, 0x54, 0x08, 0x0c, 0x69, 0xc8, 0x06, 0x9c, 0x97, 0x4d, 0x7c, 0xf5, 0x1e, - 0xb3, 0xe9, 0xa9, 0x2b, 0xca, 0xca, 0xe5, 0x54, 0x96, 0x3d, 0xbf, 0x96, 0x42, 0x83, 0xa9, 0x25, - 0xc9, 0x1a, 0x9c, 0x33, 0x44, 0xe4, 0x0f, 0xb5, 0x1c, 0xbd, 0xad, 0x18, 0x0a, 0xb7, 0x69, 0x60, - 0xfa, 0x2c, 0x0e, 0x92, 0x60, 0x5a, 0xb9, 0x64, 0x6f, 0x9e, 0x18, 0xa9, 0x37, 0x97, 0x47, 0xe9, - 0xcd, 0x95, 0xd1, 0x7a, 0x73, 0xf5, 0x78, 0xbd, 0x99, 0xb5, 0x3c, 0x0f, 0x32, 0x71, 0x99, 0x7a, - 0x22, 0x56, 0xd8, 0x48, 0x60, 0x59, 0xd0, 0xf2, 0xad, 0x14, 0x1a, 0x4c, 0x2d, 0x49, 0xb6, 0xe1, - 0xa2, 0x80, 0x5f, 0xb5, 0x0d, 0xf7, 0xa0, 0x27, 0x43, 0x53, 0x15, 0xdf, 0x5a, 0xcc, 0x6f, 0x7d, - 0xb1, 0x35, 0x94, 0x12, 0x1f, 0xc0, 0x45, 0x2a, 0xfc, 0x3b, 0x66, 0x67, 0x4d, 0xef, 0x71, 0xb6, - 0x22, 0xcc, 0x2c, 0xaa, 0xf0, 0x87, 0x48, 0x8c, 0xd3, 0x92, 0x06, 0xcc, 0xf4, 0xf6, 0x0d, 0xf6, - 0x77, 0x65, 0xe7, 0x26, 0xa5, 0x6d, 0xda, 0xe6, 0x9b, 0xb5, 0xd5, 0xe6, 0x13, 0xca, 0x7b, 0xb3, - 0x11, 0x47, 0x63, 0x92, 0x9e, 0xbc, 0x04, 0x93, 0x9e, 0xaf, 0xbb, 0xbe, 0x74, 0xf4, 0xce, 0x4e, - 0x8b, 0x30, 0x3c, 0xe5, 0x07, 0x6d, 0x45, 0x70, 0x18, 0xa3, 0x4c, 0x5d, 0x2f, 0x66, 0x1e, 0xde, - 0x7a, 0x91, 0x65, 0xb6, 0xfa, 0xe7, 0x79, 0xb8, 0x72, 0x8d, 0xfa, 0x6b, 0x8e, 0x2d, 0x5d, 0xed, - 0x69, 0xcb, 0xfe, 0xb1, 0xbc, 0xe4, 0xf1, 0x45, 0x3b, 0x3f, 0xd6, 0x45, 0xbb, 0x30, 0xa6, 0x45, - 0xbb, 0xf8, 0x10, 0x17, 0xed, 0x7f, 0x9c, 0x87, 0x27, 0x62, 0x2d, 0xb9, 0xe1, 0xb4, 0xd5, 0x84, - 0xff, 0x49, 0x03, 0x1e, 0xa3, 0x01, 0xff, 0xa0, 0x00, 0x4f, 0x5d, 0xa3, 0x22, 0xda, 0xd4, 0xee, - 0x6c, 0x98, 0x3d, 0x6a, 0x99, 0x36, 0x8d, 0xb0, 0x25, 0x7f, 0x39, 0x07, 0x93, 0x42, 0x97, 0x94, - 0x71, 0xa2, 0x59, 0x5d, 0x66, 0x29, 0xfb, 0xb3, 0xe1, 0x00, 0x17, 0x1a, 0xac, 0x5c, 0x3d, 0x62, - 0x72, 0x3f, 0xd1, 0x62, 0x8f, 0xf3, 0x3d, 0x7f, 0xb6, 0x00, 0x4f, 0xb2, 0xef, 0xa9, 0xa2, 0x47, - 0x3e, 0x31, 0x25, 0x3e, 0x82, 0x8f, 0xf0, 0x1b, 0x25, 0x38, 0x77, 0x8d, 0xfa, 0x03, 0x33, 0xd2, - 0xff, 0xa7, 0xcd, 0xbf, 0x06, 0xe7, 0xc2, 0x68, 0xa6, 0x96, 0xef, 0xb8, 0x42, 0x03, 0x4f, 0x68, - 0x8c, 0xad, 0x41, 0x12, 0x4c, 0x2b, 0x47, 0xbe, 0x06, 0x4f, 0x78, 0x62, 0xba, 0x12, 0x3e, 0x0a, - 0xa1, 0x50, 0x47, 0x8e, 0x2e, 0xa8, 0x4d, 0xe9, 0x27, 0x5a, 0xe9, 0x64, 0x38, 0xac, 0x3c, 0xf9, - 0x16, 0x4c, 0xf6, 0xe4, 0x14, 0xc8, 0xbe, 0x59, 0xe6, 0xcd, 0xf6, 0x8d, 0x08, 0xb3, 0x70, 0x8e, - 0x8b, 0x42, 0x31, 0x26, 0x30, 0xb5, 0xa7, 0x56, 0x1e, 0x62, 0x4f, 0xfd, 0x93, 0x3c, 0x94, 0xaf, - 0xb9, 0x4e, 0xbf, 0xd7, 0x3c, 0x20, 0x1d, 0x98, 0xb8, 0x2b, 0x3c, 0xb5, 0xb9, 0x8c, 0x11, 0xc1, - 0xc2, 0x19, 0x1b, 0x1a, 0x31, 0xd2, 0x73, 0x2b, 0xd9, 0xb3, 0x4e, 0xbc, 0x47, 0x0f, 0x68, 0x5b, - 0x3a, 0x53, 0x83, 0x4e, 0x7c, 0x83, 0x01, 0x51, 0xe0, 0x48, 0x17, 0x66, 0x74, 0xcb, 0x72, 0xee, - 0xd2, 0xf6, 0xaa, 0xee, 0xf3, 0xbd, 0x9d, 0x11, 0x1d, 0xc8, 0x7c, 0xc3, 0xae, 0x11, 0x67, 0x85, - 0x49, 0xde, 0xe4, 0x1d, 0x28, 0x7b, 0xbe, 0xe3, 0x2a, 0xd3, 0x28, 0x53, 0xb4, 0x76, 0xf3, 0x8d, - 0x96, 0x60, 0x25, 0xfc, 0x56, 0xf2, 0x01, 0x95, 0x00, 0xed, 0x57, 0x73, 0x00, 0xd7, 0x37, 0x37, - 0x37, 0xa4, 0x8b, 0xad, 0x0d, 0x45, 0xbd, 0x1f, 0x78, 0xac, 0x47, 0xf7, 0x0c, 0xc7, 0x82, 0xe3, - 0x64, 0x28, 0x44, 0xdf, 0xdf, 0x45, 0xce, 0x9d, 0x7c, 0x16, 0xca, 0xd2, 0xac, 0x95, 0xcd, 0x1e, - 0x38, 0xfd, 0xe5, 0x4a, 0x8c, 0x0a, 0xaf, 0xfd, 0x5a, 0x01, 0x60, 0xa5, 0x6d, 0xd1, 0x96, 0x0a, - 0xe2, 0xae, 0xfa, 0xbb, 0x2e, 0xf5, 0x76, 0x1d, 0xab, 0x3d, 0xa2, 0x5b, 0x9d, 0xfb, 0xbd, 0x36, - 0x15, 0x13, 0x0c, 0xf9, 0x91, 0x36, 0xd3, 0xf7, 0x69, 0x4f, 0xc5, 0xcb, 0x8d, 0xe8, 0x48, 0x3c, - 0x23, 0x6c, 0x83, 0x90, 0x0f, 0xc6, 0xb8, 0x12, 0x1d, 0x6a, 0xa6, 0x6d, 0x88, 0x01, 0xd2, 0x3c, - 0xc8, 0xb2, 0x13, 0xb1, 0x12, 0xb2, 0xc1, 0x28, 0x4f, 0xd6, 0x5f, 0x4d, 0xdb, 0xf4, 0x45, 0x9b, - 0x2d, 0x51, 0x4b, 0x3f, 0x18, 0x31, 0x4a, 0x8f, 0xf7, 0xd7, 0x95, 0x38, 0x2b, 0x4c, 0xf2, 0xd6, - 0xfe, 0x4a, 0x0e, 0x66, 0xf8, 0xeb, 0xb1, 0xb7, 0x16, 0x1a, 0x15, 0xb9, 0x0b, 0x35, 0x23, 0x0c, - 0xbf, 0x91, 0x4d, 0xb9, 0x94, 0x61, 0xfb, 0x2d, 0xe0, 0x25, 0xde, 0x3d, 0x02, 0xc0, 0xa8, 0x24, - 0xed, 0x8f, 0xf3, 0x70, 0x21, 0x51, 0x19, 0xd9, 0xa9, 0xc8, 0x5f, 0x1c, 0x38, 0x97, 0xf8, 0xe7, - 0x8f, 0xd7, 0x1e, 0xe2, 0x58, 0xdb, 0x1a, 0xf5, 0xf5, 0xd0, 0xae, 0x0f, 0x61, 0x91, 0xc3, 0x88, - 0x7d, 0x28, 0x7a, 0x6c, 0xae, 0x16, 0xaf, 0xdb, 0x1a, 0xf9, 0x75, 0xd3, 0x5f, 0x80, 0xcf, 0xdc, - 0xc1, 0x2e, 0x0b, 0x9f, 0xb1, 0xb9, 0x38, 0xf2, 0x1e, 0x4c, 0x78, 0xbe, 0xee, 0xf7, 0xd5, 0xb4, - 0xb4, 0x35, 0x6e, 0xc1, 0x9c, 0x79, 0x38, 0x87, 0x8a, 0x67, 0x94, 0x42, 0xb5, 0x3f, 0xce, 0xc1, - 0xc5, 0xf4, 0x82, 0xab, 0xa6, 0xe7, 0x93, 0xbf, 0x30, 0xd0, 0xec, 0xc7, 0xec, 0x86, 0xac, 0x34, - 0x6f, 0xf4, 0x20, 0x1e, 0x5b, 0x41, 0x22, 0x4d, 0xee, 0x43, 0xc9, 0xf4, 0x69, 0x57, 0x79, 0xc4, - 0xd6, 0xc7, 0xfc, 0xea, 0x11, 0xb5, 0x86, 0x49, 0x41, 0x21, 0x4c, 0xfb, 0x5b, 0x43, 0x5f, 0x99, - 0x2f, 0x9d, 0x7f, 0x69, 0x30, 0xc4, 0x73, 0x3d, 0x7b, 0x88, 0x67, 0xa2, 0x62, 0x43, 0x23, 0x3d, - 0x3f, 0x28, 0xc0, 0xa5, 0x07, 0x7d, 0x48, 0xb6, 0xba, 0xca, 0xfe, 0x92, 0x75, 0x75, 0x7d, 0x70, - 0xcf, 0x20, 0x0b, 0x50, 0xea, 0xed, 0xea, 0x9e, 0x52, 0x11, 0x2f, 0x05, 0x81, 0x3d, 0x0c, 0x78, - 0x9f, 0x4d, 0x61, 0x5c, 0xb5, 0xe4, 0x8f, 0x28, 0x48, 0xd9, 0xe2, 0xd0, 0xa5, 0x9e, 0x17, 0x3a, - 0x15, 0x83, 0xc5, 0x61, 0x4d, 0x80, 0x51, 0xe1, 0x89, 0x0f, 0x13, 0xc2, 0xe9, 0x23, 0xa7, 0xb7, - 0xf1, 0xda, 0x81, 0xc1, 0x4b, 0x49, 0x0b, 0x50, 0xca, 0x22, 0x73, 0x32, 0xea, 0xb0, 0x14, 0x3b, - 0xdf, 0x59, 0x4c, 0xd1, 0x96, 0x39, 0x1d, 0x79, 0x1d, 0x88, 0xb3, 0xcd, 0xdd, 0x5c, 0x6d, 0xb9, - 0xa3, 0xc5, 0x66, 0xc4, 0x09, 0xbe, 0x8b, 0x15, 0x9c, 0x0e, 0x5d, 0x1f, 0xa0, 0xc0, 0x94, 0x52, - 0xda, 0xbf, 0xaa, 0xc0, 0x85, 0xf4, 0xfe, 0xc0, 0xda, 0x6d, 0x9f, 0xba, 0x7c, 0xb6, 0x4d, 0x1c, - 0x57, 0xbf, 0x25, 0xc0, 0xa8, 0xf0, 0x1f, 0xeb, 0x10, 0x8f, 0xdf, 0xc8, 0xc1, 0x93, 0xae, 0xf4, - 0xda, 0x9e, 0x46, 0x98, 0xc7, 0x53, 0x47, 0x87, 0xf5, 0x27, 0x71, 0x98, 0x40, 0x1c, 0x5e, 0x17, - 0xf2, 0xeb, 0x39, 0x98, 0x95, 0x4e, 0xd8, 0xc5, 0x53, 0x38, 0xc1, 0xc5, 0xa3, 0x9f, 0xd7, 0x86, - 0xc8, 0xc3, 0xa1, 0x35, 0x21, 0xdf, 0x82, 0x5a, 0x8f, 0xf5, 0x0b, 0xcf, 0xa7, 0xb6, 0xa1, 0x42, - 0xb2, 0x46, 0x1f, 0x49, 0x1b, 0x21, 0xaf, 0xe0, 0x04, 0x07, 0x5f, 0xb1, 0x23, 0x08, 0x8c, 0x4a, - 0x7c, 0xc4, 0x8f, 0x6c, 0x3d, 0x0b, 0x15, 0x8f, 0xfa, 0xbe, 0x69, 0x77, 0x84, 0xf5, 0x53, 0x15, - 0x63, 0xa5, 0x25, 0x61, 0x18, 0x60, 0xc9, 0xe7, 0xa0, 0xca, 0x9d, 0xc0, 0x0d, 0xb7, 0xe3, 0xcd, - 0x56, 0x79, 0x0c, 0xf0, 0x94, 0x88, 0xcb, 0x90, 0x40, 0x0c, 0xf1, 0xe4, 0x0b, 0x30, 0xb9, 0xcd, - 0x87, 0xaf, 0x74, 0x64, 0x09, 0x4f, 0x3c, 0xd7, 0x1d, 0x9b, 0x11, 0x38, 0xc6, 0xa8, 0xc8, 0x02, - 0x00, 0x0d, 0x3c, 0xe5, 0xf2, 0x20, 0x77, 0xa0, 0x91, 0x84, 0x3e, 0x74, 0x8c, 0x50, 0x91, 0xa7, - 0xa0, 0xe0, 0x5b, 0x1e, 0xf7, 0x9d, 0x57, 0x42, 0x83, 0x78, 0x73, 0xb5, 0x85, 0x0c, 0xae, 0xfd, - 0x59, 0x0e, 0x66, 0x12, 0x87, 0x08, 0x58, 0x91, 0xbe, 0x6b, 0xc9, 0x69, 0x24, 0x28, 0xb2, 0x85, - 0xab, 0xc8, 0xe0, 0xe4, 0x6d, 0x69, 0x24, 0xe4, 0x33, 0xe6, 0x76, 0xb8, 0xa9, 0xfb, 0x1e, 0xb3, - 0x0a, 0x06, 0xec, 0x03, 0xee, 0x78, 0x0f, 0xeb, 0x23, 0xd7, 0x81, 0x88, 0xe3, 0x3d, 0xc4, 0x61, - 0x8c, 0x92, 0x35, 0x90, 0x6f, 0x79, 0x32, 0x74, 0x88, 0xcf, 0x06, 0x91, 0x06, 0xda, 0x5c, 0x6d, - 0xa9, 0xa0, 0xa2, 0x08, 0x95, 0xf6, 0xbd, 0x42, 0xa4, 0x05, 0xa4, 0x9d, 0xf1, 0x21, 0x2d, 0xf0, - 0x69, 0xb6, 0x80, 0x06, 0x8b, 0x7b, 0x35, 0xba, 0xfe, 0xf1, 0xc5, 0x58, 0x62, 0xc9, 0x73, 0x50, - 0x31, 0x1c, 0xdb, 0xeb, 0x77, 0xa9, 0x2b, 0x5f, 0x22, 0x50, 0x65, 0x16, 0x25, 0x1c, 0x03, 0x0a, - 0xf2, 0x15, 0x98, 0x6e, 0x53, 0xcb, 0xdc, 0xa7, 0xee, 0xdb, 0x32, 0x57, 0x47, 0x31, 0xbe, 0xe1, - 0xb1, 0x24, 0xb0, 0xd2, 0x23, 0x32, 0xd5, 0x8e, 0x3e, 0x92, 0x97, 0x61, 0x66, 0xc7, 0xb4, 0x7c, - 0xea, 0xbe, 0xed, 0xf5, 0xb9, 0x6e, 0x2a, 0xd2, 0x35, 0x54, 0x45, 0x00, 0xc9, 0x32, 0x47, 0xb5, - 0x24, 0x06, 0xa7, 0x77, 0x62, 0xcf, 0xe4, 0xb6, 0xe8, 0x24, 0x13, 0x19, 0xcf, 0xaf, 0x6e, 0xae, - 0xb6, 0x44, 0x60, 0x86, 0xea, 0x5e, 0x41, 0x5f, 0x29, 0x3f, 0xa4, 0xbe, 0xa2, 0xfd, 0x8b, 0x02, - 0xd4, 0x5e, 0x77, 0xb6, 0x3f, 0x26, 0xc1, 0x95, 0xe9, 0xeb, 0x69, 0xfe, 0x23, 0x5c, 0x4f, 0xb7, - 0xe0, 0x09, 0xdf, 0xb7, 0x64, 0x5a, 0x99, 0xc6, 0x8e, 0x4f, 0xdd, 0x65, 0xd3, 0x36, 0xbd, 0x5d, - 0xda, 0x96, 0xfb, 0xf2, 0x9f, 0x3a, 0x3a, 0xac, 0x3f, 0xb1, 0xb9, 0xb9, 0x9a, 0x46, 0x82, 0xc3, - 0xca, 0xf2, 0xf9, 0x4d, 0x1c, 0x63, 0xe3, 0x47, 0x37, 0xe4, 0x76, 0xbd, 0x98, 0xdf, 0x22, 0x70, - 0x8c, 0x51, 0x69, 0xff, 0x3e, 0x0f, 0xd5, 0x20, 0xbd, 0x00, 0x79, 0x06, 0xca, 0xdb, 0xae, 0xb3, - 0x47, 0x5d, 0x11, 0xe6, 0x20, 0x8f, 0x5d, 0x34, 0x05, 0x08, 0x15, 0x8e, 0x3c, 0x0d, 0x25, 0xdf, - 0xe9, 0x99, 0x46, 0xd2, 0x0f, 0xb9, 0xc9, 0x80, 0x28, 0x70, 0x7c, 0xc4, 0xf2, 0x88, 0x24, 0xfe, - 0x56, 0x95, 0xc8, 0x88, 0xe5, 0x50, 0x94, 0x58, 0x35, 0x10, 0x8a, 0x63, 0x1f, 0x08, 0x9f, 0x0e, - 0x74, 0xd5, 0x52, 0x7c, 0xca, 0x48, 0x68, 0x97, 0x6f, 0x41, 0xd1, 0xd3, 0x3d, 0x4b, 0x0e, 0xc5, - 0x0c, 0xc7, 0xd4, 0x1b, 0xad, 0x55, 0x79, 0x4c, 0xbd, 0xd1, 0x5a, 0x45, 0xce, 0x54, 0xfb, 0x07, - 0x05, 0xa8, 0x89, 0xf6, 0x15, 0xd3, 0xdc, 0x38, 0x5b, 0xf8, 0x55, 0x11, 0x9e, 0xc9, 0x66, 0x32, - 0xee, 0xc5, 0x93, 0x13, 0x5e, 0x90, 0xbb, 0x65, 0x31, 0x8a, 0x0c, 0x76, 0x6c, 0x43, 0xd0, 0x8f, - 0x77, 0xd3, 0xb3, 0x35, 0x8d, 0xa7, 0xc8, 0x90, 0xca, 0xb8, 0x0c, 0xc2, 0x0a, 0xd6, 0xb4, 0x1b, - 0x11, 0x1c, 0xc6, 0x28, 0xb5, 0xff, 0x9e, 0x87, 0xea, 0xaa, 0xb9, 0x43, 0x8d, 0x03, 0xc3, 0xa2, - 0xe4, 0x9b, 0x70, 0xb1, 0x4d, 0x2d, 0xca, 0x96, 0xf6, 0x6b, 0xae, 0x6e, 0xd0, 0x0d, 0xea, 0x9a, - 0x3c, 0xc5, 0x0f, 0x4f, 0x21, 0x25, 0x62, 0xe3, 0x2e, 0x1f, 0x1d, 0xd6, 0x2f, 0x2e, 0x0d, 0xa5, - 0xc2, 0x07, 0x70, 0x20, 0x2b, 0x30, 0xd9, 0xa6, 0x9e, 0xe9, 0xd2, 0xf6, 0x46, 0xc4, 0x72, 0x7b, - 0x46, 0xd5, 0x73, 0x29, 0x82, 0xbb, 0x7f, 0x58, 0x9f, 0x52, 0xfe, 0x63, 0x61, 0xc2, 0xc5, 0x8a, - 0xb2, 0xa9, 0xa5, 0xa7, 0xf7, 0x3d, 0x9a, 0x52, 0xcf, 0x02, 0xaf, 0x27, 0x9f, 0x5a, 0x36, 0xd2, - 0x49, 0x70, 0x58, 0x59, 0xb2, 0x0d, 0xb3, 0xbc, 0xfe, 0x69, 0x7c, 0x8b, 0x9c, 0xef, 0xa7, 0x8f, - 0x0e, 0xeb, 0xda, 0x12, 0xed, 0xb9, 0xd4, 0xd0, 0x7d, 0xda, 0x5e, 0x1a, 0x42, 0x8d, 0x43, 0xf9, - 0x68, 0x25, 0x28, 0xac, 0x3a, 0x1d, 0xed, 0x3b, 0x05, 0x08, 0x72, 0x4e, 0x91, 0x5f, 0xc8, 0x41, - 0x4d, 0xb7, 0x6d, 0xc7, 0x97, 0xf9, 0x9c, 0x44, 0xe8, 0x15, 0x66, 0x4e, 0x6d, 0x35, 0xd7, 0x08, - 0x99, 0x8a, 0x88, 0x9b, 0x20, 0xa0, 0x23, 0x82, 0xc1, 0xa8, 0x6c, 0xd2, 0x4f, 0x04, 0x02, 0xad, - 0x65, 0xaf, 0xc5, 0x31, 0x42, 0x7e, 0x2e, 0x7e, 0x15, 0xce, 0x24, 0x2b, 0x7b, 0x92, 0x60, 0x83, - 0x2c, 0x71, 0x0a, 0x3f, 0xc8, 0x03, 0x84, 0x5b, 0xeb, 0xa7, 0xe0, 0xcb, 0x33, 0x63, 0xbe, 0xbc, - 0xd1, 0x4f, 0xb3, 0x87, 0x95, 0x1e, 0xea, 0xbf, 0xbb, 0x93, 0xf0, 0xdf, 0xad, 0x8c, 0x43, 0xd8, - 0x83, 0x7d, 0x76, 0xdb, 0x70, 0x2e, 0xa4, 0x0d, 0x67, 0x97, 0x1b, 0x89, 0xd1, 0x2f, 0x14, 0xe0, - 0xcf, 0x0c, 0x19, 0xfd, 0x33, 0x91, 0x58, 0x87, 0xc1, 0xf1, 0xaf, 0x7d, 0x37, 0x0f, 0x67, 0xa2, - 0x42, 0xf8, 0x11, 0xd7, 0x2f, 0xc2, 0x94, 0x4b, 0xf5, 0x76, 0x53, 0xf7, 0x8d, 0x5d, 0x1e, 0x55, - 0x9b, 0xe3, 0x61, 0xb0, 0xfc, 0x20, 0x0d, 0x46, 0x11, 0x18, 0xa7, 0x23, 0x3a, 0xd4, 0x18, 0x40, - 0x1e, 0xc5, 0x1f, 0xd1, 0x39, 0xcf, 0x2d, 0x51, 0x0c, 0xd9, 0x60, 0x94, 0x27, 0x71, 0xa0, 0xca, - 0x2c, 0x56, 0xa1, 0xb1, 0x64, 0xcd, 0x5e, 0x84, 0x8a, 0x93, 0xb0, 0x02, 0x83, 0x47, 0x0c, 0x65, - 0x68, 0x1f, 0xe4, 0x60, 0x3a, 0xda, 0x42, 0x0f, 0xdd, 0x5b, 0xba, 0x1b, 0xf7, 0x96, 0x2e, 0x8e, - 0xa1, 0xa3, 0x0d, 0xf1, 0x90, 0xfe, 0x51, 0x2d, 0xfa, 0x6a, 0xdc, 0x2b, 0x1a, 0x75, 0x3b, 0xe5, - 0x1e, 0xe8, 0x76, 0xfa, 0x24, 0x21, 0xd0, 0xd0, 0x84, 0x40, 0xc3, 0xec, 0x9b, 0xd2, 0x23, 0x6c, - 0xdf, 0x4c, 0x7c, 0x84, 0xf6, 0x4d, 0x24, 0xe5, 0x4e, 0x39, 0x43, 0xca, 0x9d, 0x6e, 0x90, 0x72, - 0xa7, 0x32, 0xb6, 0x29, 0xfa, 0x38, 0x69, 0x77, 0xaa, 0xa7, 0x9a, 0x76, 0x07, 0x1e, 0x56, 0xda, - 0x9d, 0x5a, 0xd6, 0xb4, 0x3b, 0x3f, 0x97, 0x83, 0xe9, 0x76, 0xec, 0x18, 0x25, 0xf7, 0x68, 0x65, - 0x59, 0x98, 0xe3, 0xa7, 0x32, 0x85, 0x9b, 0x24, 0x0e, 0xc3, 0x84, 0xc8, 0xb4, 0x64, 0x37, 0x53, - 0x1f, 0x49, 0xb2, 0x1b, 0xf2, 0x1e, 0x54, 0x2d, 0xb5, 0x6a, 0xf3, 0xc0, 0xd4, 0x2c, 0x63, 0x3f, - 0x45, 0x13, 0x08, 0x43, 0xb9, 0x03, 0x10, 0x86, 0x12, 0xb5, 0xff, 0x55, 0x8e, 0x2e, 0xed, 0xa7, - 0xbd, 0xad, 0xf4, 0x62, 0x7c, 0x5b, 0xe9, 0x4a, 0x72, 0x5b, 0x69, 0x40, 0x2f, 0x91, 0x5b, 0x4b, - 0xcf, 0x45, 0x16, 0xa0, 0x02, 0xcf, 0x7c, 0x13, 0x74, 0xb9, 0x94, 0x45, 0xa8, 0x01, 0x33, 0x52, - 0x9d, 0x51, 0x48, 0x3e, 0x9d, 0x4f, 0x85, 0x11, 0xc4, 0x4b, 0x71, 0x34, 0x26, 0xe9, 0x99, 0x40, - 0x4f, 0xe5, 0xa5, 0x2d, 0xc5, 0xfd, 0x7f, 0x41, 0xce, 0xd8, 0x80, 0x82, 0xd9, 0xa9, 0x2e, 0xd5, - 0x3d, 0xb9, 0x39, 0x14, 0xb1, 0x53, 0x91, 0x43, 0x51, 0x62, 0xa3, 0x3b, 0x64, 0xe5, 0x0f, 0xd9, - 0x21, 0xd3, 0xa1, 0x66, 0xe9, 0x9e, 0x2f, 0x3a, 0x53, 0x5b, 0xce, 0x5d, 0x7f, 0xee, 0x78, 0x0a, - 0x05, 0xd3, 0x8a, 0x42, 0x53, 0x64, 0x35, 0x64, 0x83, 0x51, 0x9e, 0xa4, 0x0d, 0x93, 0xec, 0x91, - 0xcf, 0x2c, 0xed, 0x86, 0x2f, 0x67, 0xac, 0x93, 0xc8, 0x08, 0x8c, 0xe0, 0xd5, 0x08, 0x1f, 0x8c, - 0x71, 0x1d, 0xb2, 0x89, 0x06, 0xa3, 0x6c, 0xa2, 0x91, 0x97, 0x85, 0x0a, 0x7a, 0x10, 0x7c, 0xd6, - 0x1a, 0xff, 0xac, 0x81, 0x9b, 0x15, 0xa3, 0x48, 0x8c, 0xd3, 0xb2, 0x5e, 0xd1, 0x97, 0xcd, 0xa0, - 0x8a, 0x4f, 0xc6, 0x7b, 0xc5, 0x56, 0x1c, 0x8d, 0x49, 0x7a, 0xb2, 0x01, 0xe7, 0x03, 0x50, 0xb4, - 0x1a, 0x53, 0x9c, 0x4f, 0x10, 0x8d, 0xbf, 0x95, 0x42, 0x83, 0xa9, 0x25, 0xf9, 0xc1, 0x85, 0xbe, - 0xeb, 0x52, 0xdb, 0xbf, 0xae, 0x7b, 0xbb, 0x32, 0x50, 0x3d, 0x3c, 0xb8, 0x10, 0xa2, 0x30, 0x4a, - 0x47, 0x16, 0x00, 0x04, 0x3b, 0x5e, 0x6a, 0x86, 0x97, 0x0a, 0x8c, 0xa2, 0xad, 0x00, 0x83, 0x11, - 0x2a, 0xed, 0xff, 0xe6, 0xa0, 0xa2, 0x9c, 0xb1, 0x6c, 0x99, 0xda, 0xd6, 0x3d, 0xd3, 0x90, 0x03, - 0x3e, 0x43, 0xaa, 0x4f, 0x95, 0xd8, 0x49, 0x9c, 0x87, 0xe3, 0x8f, 0x28, 0x78, 0x87, 0xa9, 0xb5, - 0xf2, 0x99, 0x52, 0x6b, 0x91, 0x45, 0x28, 0xda, 0x7b, 0xf4, 0xe0, 0x64, 0x47, 0x43, 0xb9, 0x5e, - 0x77, 0xf3, 0x06, 0x3d, 0x40, 0x5e, 0x58, 0xfb, 0xad, 0x3c, 0x00, 0x7b, 0xfd, 0xe3, 0xed, 0x13, - 0x7c, 0x16, 0xca, 0xd2, 0x19, 0xaf, 0x72, 0x82, 0x07, 0x81, 0x4e, 0x02, 0x8c, 0x0a, 0x4f, 0x9e, - 0x86, 0xd2, 0x9d, 0x3e, 0xed, 0xab, 0x4d, 0xef, 0x60, 0xc5, 0x7e, 0x83, 0x01, 0x51, 0xe0, 0x1e, - 0x9e, 0x8b, 0x4c, 0xb9, 0xe9, 0x4b, 0x0f, 0xcb, 0x4d, 0x5f, 0x85, 0xf2, 0x4d, 0x87, 0xc7, 0x4d, - 0x6a, 0xff, 0x2d, 0x0f, 0x10, 0xc6, 0xa5, 0x91, 0x5f, 0xcd, 0xc1, 0xe3, 0xc1, 0x76, 0xa0, 0x2f, - 0x14, 0x2f, 0x9e, 0x5d, 0x37, 0xb3, 0xcb, 0x3e, 0x6d, 0x2b, 0x92, 0x9f, 0xda, 0xdf, 0x48, 0x13, - 0x87, 0xe9, 0xb5, 0x20, 0x08, 0x15, 0xda, 0xed, 0xf9, 0x07, 0x4b, 0xa6, 0x2b, 0x7b, 0x60, 0x6a, - 0xf8, 0xe3, 0x55, 0x49, 0x23, 0x8a, 0x4a, 0xb3, 0x83, 0xdb, 0x37, 0x0a, 0x83, 0x01, 0x1f, 0xb2, - 0x0b, 0x15, 0xdb, 0x79, 0xdb, 0x63, 0xcd, 0x21, 0xbb, 0xe3, 0xe8, 0x09, 0x5f, 0x65, 0xb3, 0x0a, - 0xd7, 0xad, 0x7c, 0xc0, 0xb2, 0x2d, 0x1b, 0xfb, 0x57, 0xf2, 0x70, 0x2e, 0xa5, 0x1d, 0xc8, 0x6b, - 0x70, 0x46, 0x86, 0x00, 0x86, 0x69, 0xa6, 0x73, 0x61, 0x9a, 0xe9, 0x56, 0x02, 0x87, 0x03, 0xd4, - 0xe4, 0x6d, 0x00, 0xdd, 0x30, 0xa8, 0xe7, 0xad, 0x39, 0x6d, 0xb5, 0x12, 0xbf, 0xca, 0x26, 0x8e, - 0x46, 0x00, 0xbd, 0x7f, 0x58, 0xff, 0xa9, 0xb4, 0xa8, 0xde, 0x44, 0x3b, 0x87, 0x05, 0x30, 0xc2, - 0x92, 0x7c, 0x13, 0x40, 0x68, 0xdf, 0xc1, 0xe1, 0xdb, 0x0f, 0xb1, 0x85, 0xe7, 0x54, 0xee, 0x96, - 0xb9, 0x37, 0xfa, 0xba, 0xed, 0x9b, 0xfe, 0x81, 0xc8, 0x65, 0x70, 0x2b, 0xe0, 0x82, 0x11, 0x8e, - 0xda, 0xef, 0xe5, 0xa1, 0xa2, 0xdc, 0x97, 0xa7, 0xe0, 0x4f, 0xea, 0xc4, 0xfc, 0x49, 0x63, 0x8a, - 0xe3, 0x4d, 0xf3, 0x26, 0x39, 0x09, 0x6f, 0xd2, 0xb5, 0xec, 0xa2, 0x1e, 0xec, 0x4b, 0xfa, 0xbb, - 0x05, 0x98, 0x56, 0xa4, 0x59, 0xbd, 0x3c, 0xaf, 0xc0, 0x8c, 0xd8, 0xf1, 0x5e, 0xd3, 0xef, 0x89, - 0xdc, 0x07, 0xbc, 0xc1, 0x8a, 0x22, 0x14, 0xb1, 0x19, 0x47, 0x61, 0x92, 0x96, 0x75, 0x6b, 0x01, - 0xda, 0x62, 0xea, 0x4f, 0xe8, 0xc8, 0x99, 0x12, 0xdd, 0xba, 0x99, 0xc0, 0xe1, 0x00, 0x75, 0xd2, - 0xcd, 0x54, 0x7c, 0xd8, 0x6e, 0xa6, 0xd2, 0x29, 0xb8, 0x99, 0xfe, 0x75, 0x0e, 0x26, 0xc3, 0x0f, - 0xf4, 0xd0, 0x9d, 0x4c, 0x3b, 0x71, 0x27, 0x53, 0x23, 0x73, 0xff, 0x1b, 0xe2, 0x62, 0xfa, 0xa5, - 0x2a, 0xc4, 0xe2, 0xd7, 0xc9, 0x36, 0x5c, 0x34, 0x53, 0xe3, 0xde, 0x22, 0xd3, 0x5b, 0x70, 0x28, - 0x71, 0x65, 0x28, 0x25, 0x3e, 0x80, 0x0b, 0xe9, 0x43, 0x65, 0x9f, 0xba, 0xbe, 0x69, 0x50, 0xf5, - 0x7e, 0xd7, 0x32, 0xfb, 0x5c, 0xa4, 0x23, 0x2d, 0x68, 0xd3, 0x5b, 0x52, 0x00, 0x06, 0xa2, 0xc8, - 0x36, 0x94, 0x68, 0xbb, 0x43, 0xd5, 0x2d, 0x12, 0x19, 0xb3, 0x35, 0x06, 0xed, 0xc9, 0x9e, 0x3c, - 0x14, 0xac, 0x89, 0x17, 0xb5, 0x29, 0x8b, 0x19, 0xfb, 0xe5, 0x31, 0x2d, 0x49, 0xb2, 0x17, 0x38, - 0x56, 0x4a, 0x63, 0x9a, 0xad, 0x1e, 0xe0, 0x56, 0xf1, 0xa0, 0x7a, 0x57, 0xf7, 0xa9, 0xdb, 0xd5, - 0xdd, 0x3d, 0xe9, 0x95, 0x1a, 0xfd, 0x0d, 0x6f, 0x2b, 0x4e, 0xe1, 0x1b, 0x06, 0x20, 0x0c, 0xe5, - 0xb0, 0xe1, 0xee, 0x4b, 0x07, 0x82, 0x4a, 0x8a, 0x37, 0xba, 0x50, 0xe5, 0x8a, 0xf0, 0x64, 0x1c, - 0xbb, 0x7a, 0xc4, 0x50, 0x06, 0xd9, 0x8f, 0xa5, 0x1c, 0x16, 0x89, 0xa6, 0x33, 0xe4, 0xac, 0x57, - 0xac, 0xc2, 0xf5, 0x6d, 0x48, 0xea, 0xe2, 0xf7, 0x73, 0x30, 0x93, 0x18, 0x39, 0xd2, 0x1a, 0xbc, - 0x3e, 0xae, 0xa8, 0x5c, 0x15, 0x91, 0x1e, 0x03, 0x62, 0x52, 0x2a, 0xb9, 0x0b, 0x35, 0x1a, 0x26, - 0x19, 0x92, 0x59, 0xf6, 0x46, 0x8f, 0x3e, 0x8f, 0x24, 0x2c, 0x12, 0x53, 0x7b, 0x04, 0x80, 0x51, - 0x49, 0xda, 0xff, 0x28, 0x85, 0x4b, 0xe1, 0x69, 0x7b, 0x45, 0xbe, 0x10, 0xf7, 0x8a, 0x5c, 0x4e, - 0x7a, 0x45, 0x12, 0x7b, 0xb5, 0x27, 0x0f, 0xb7, 0x4d, 0x38, 0x13, 0x8a, 0x0f, 0xc1, 0x99, 0xf0, - 0x3c, 0xd4, 0xf6, 0xf9, 0x64, 0x28, 0x32, 0xa9, 0x94, 0xf8, 0xd2, 0xcd, 0x9b, 0xfc, 0x56, 0x08, - 0xc6, 0x28, 0x0d, 0xbf, 0x7b, 0x49, 0x5c, 0xc9, 0x11, 0x24, 0x38, 0x95, 0x45, 0x5a, 0x21, 0x18, - 0xa3, 0x34, 0x3c, 0x52, 0xcf, 0xb4, 0xf7, 0x44, 0x81, 0x32, 0x2f, 0x20, 0x22, 0xf5, 0x14, 0x10, - 0x43, 0x3c, 0x79, 0x16, 0x2a, 0xfd, 0xf6, 0x8e, 0xa0, 0xad, 0x70, 0x5a, 0xae, 0xd5, 0x6f, 0x2d, - 0x2d, 0xcb, 0xcc, 0x2e, 0x0a, 0xcb, 0x6a, 0xd2, 0xd5, 0x7b, 0x0a, 0xc1, 0xbb, 0xbe, 0xac, 0xc9, - 0x5a, 0x08, 0xc6, 0x28, 0x0d, 0xf9, 0x32, 0x4c, 0xbb, 0xb4, 0xdd, 0x37, 0x68, 0x50, 0x0a, 0x78, - 0x29, 0x99, 0xd2, 0x2e, 0x8a, 0xc1, 0x04, 0xe5, 0x10, 0x97, 0x48, 0x6d, 0x24, 0x97, 0xc8, 0x57, - 0x61, 0xba, 0xed, 0xea, 0xa6, 0x4d, 0xdb, 0xeb, 0x36, 0xdf, 0x90, 0x97, 0xf1, 0x82, 0x81, 0x3b, - 0x72, 0x29, 0x86, 0xc5, 0x04, 0xb5, 0xb6, 0x0c, 0x22, 0x59, 0x23, 0xa9, 0x43, 0x69, 0xd7, 0xf7, - 0x7b, 0x6a, 0x83, 0x87, 0x5b, 0xe1, 0xfc, 0x7c, 0x11, 0x0a, 0x38, 0xb9, 0x04, 0x45, 0xf6, 0x47, - 0xc6, 0x1d, 0x73, 0x33, 0x91, 0xe1, 0x91, 0x43, 0xb5, 0xdf, 0xcf, 0x43, 0x49, 0x24, 0xec, 0x5b, - 0x81, 0x73, 0xa6, 0x6d, 0xfa, 0xa6, 0x6e, 0xf1, 0x43, 0x26, 0xd1, 0x00, 0x87, 0x52, 0xf3, 0x89, - 0xa3, 0xc3, 0xfa, 0xb9, 0x95, 0x41, 0x34, 0xa6, 0x95, 0x61, 0x8d, 0x2c, 0xf3, 0x76, 0x2b, 0x2e, - 0x42, 0xb8, 0xc8, 0x38, 0x1b, 0xc3, 0x60, 0x82, 0x92, 0x29, 0xb2, 0xbd, 0x81, 0xc8, 0x85, 0x92, - 0x50, 0x64, 0xe3, 0xc1, 0x04, 0x71, 0x3a, 0x6e, 0x60, 0xf5, 0xb9, 0x31, 0x13, 0x9c, 0x35, 0x92, - 0x41, 0x50, 0xc2, 0xc0, 0x4a, 0xe0, 0x70, 0x80, 0x9a, 0x71, 0xd8, 0xd1, 0x4d, 0xab, 0xef, 0xd2, - 0x90, 0x43, 0x29, 0xe4, 0xb0, 0x9c, 0xc0, 0xe1, 0x00, 0xb5, 0xf6, 0xfb, 0x39, 0x00, 0x71, 0x3f, - 0x07, 0xf7, 0xd6, 0x8c, 0x29, 0x47, 0x39, 0xe9, 0x43, 0x75, 0x5b, 0xf9, 0x6b, 0x32, 0x27, 0xb0, - 0x16, 0xf5, 0x0b, 0xfd, 0x3f, 0xe2, 0xaa, 0x17, 0xf5, 0x88, 0xa1, 0x24, 0xed, 0x1f, 0xe6, 0x60, - 0x26, 0x41, 0x4d, 0xd6, 0xa1, 0xa2, 0xf2, 0x74, 0x9d, 0xec, 0xad, 0xc4, 0x18, 0x96, 0x45, 0x31, - 0x60, 0x32, 0xfe, 0x94, 0xe0, 0x3f, 0x9b, 0x57, 0xdf, 0x80, 0xc7, 0xb4, 0x2d, 0x00, 0xc8, 0x7c, - 0x1a, 0xed, 0xb6, 0x2b, 0x55, 0xd2, 0x70, 0x5d, 0x0d, 0x30, 0x18, 0xa1, 0x3a, 0x5e, 0xf8, 0xd5, - 0x4b, 0x30, 0xd9, 0x73, 0x1d, 0x36, 0x41, 0xb8, 0x5c, 0xdb, 0x4d, 0xc4, 0xcc, 0x6e, 0x44, 0x70, - 0x18, 0xa3, 0x24, 0xba, 0xf4, 0xfd, 0x4c, 0x8c, 0xe5, 0x66, 0x98, 0x54, 0xef, 0xcf, 0x9f, 0xe6, - 0x61, 0x52, 0x36, 0x82, 0xf0, 0x9b, 0x3d, 0xcc, 0x66, 0x50, 0x51, 0x65, 0x69, 0xcd, 0xb0, 0x18, - 0xc1, 0x61, 0x8c, 0x92, 0x2c, 0xb1, 0x01, 0xbb, 0xed, 0x19, 0xae, 0xc9, 0xe3, 0xa6, 0x79, 0x69, - 0x11, 0x7f, 0x1b, 0x1c, 0x62, 0x6d, 0x25, 0xf0, 0x38, 0x50, 0x82, 0x3c, 0x07, 0x95, 0xae, 0x7e, - 0x6f, 0xcb, 0xd6, 0x8d, 0x3d, 0xb9, 0x7a, 0x05, 0x5a, 0xfd, 0x9a, 0x84, 0x63, 0x40, 0x71, 0x1a, - 0x4d, 0xff, 0xdd, 0x22, 0x84, 0x46, 0x21, 0x79, 0x12, 0x0a, 0x5d, 0xfd, 0x9e, 0xb4, 0xc6, 0xb9, - 0x0b, 0x70, 0x4d, 0xbf, 0x87, 0x0c, 0xc6, 0x51, 0xa6, 0x2d, 0xad, 0x6d, 0x81, 0x32, 0x6d, 0x64, - 0x30, 0xf2, 0x0e, 0x4c, 0xbb, 0x7a, 0xb7, 0xb7, 0xd5, 0x53, 0x06, 0xee, 0x88, 0xa7, 0x16, 0xc5, - 0xaa, 0x16, 0xe3, 0x84, 0x09, 0xce, 0xa4, 0x0f, 0x25, 0xe1, 0x17, 0x2b, 0x66, 0xdc, 0x67, 0x0d, - 0x5e, 0x9a, 0x69, 0x86, 0x8e, 0x4b, 0xe5, 0xfd, 0x69, 0x09, 0x28, 0x0a, 0x69, 0x4c, 0x6c, 0xd7, - 0x69, 0x07, 0x67, 0xf1, 0xc7, 0x22, 0x76, 0x8d, 0x31, 0x1c, 0x10, 0xcb, 0xa1, 0x28, 0xa4, 0x09, - 0x3f, 0x09, 0xeb, 0x83, 0x6d, 0xd1, 0x2c, 0xbc, 0x27, 0x54, 0x94, 0x9f, 0x24, 0x82, 0xc0, 0x38, - 0x1d, 0x59, 0x81, 0x82, 0xef, 0x5b, 0xd2, 0x9c, 0x18, 0xe9, 0xf2, 0x85, 0xcd, 0xcd, 0x55, 0x64, - 0x3c, 0xb4, 0xbf, 0x91, 0x07, 0x12, 0xa9, 0xdf, 0x35, 0xa7, 0xa9, 0x1b, 0x7b, 0x37, 0xd9, 0x47, - 0x37, 0x1c, 0xc7, 0x5a, 0x72, 0xee, 0xda, 0x62, 0xa1, 0x1b, 0xf1, 0xbc, 0x2d, 0xff, 0xe8, 0x8b, - 0x31, 0x4e, 0x98, 0xe0, 0x4c, 0x96, 0x81, 0xb0, 0x6e, 0x20, 0x21, 0x06, 0xb5, 0x7d, 0x95, 0x57, - 0x60, 0xaa, 0x79, 0x81, 0xa9, 0x31, 0x38, 0x80, 0xc5, 0x94, 0x12, 0x4c, 0x69, 0x08, 0x8e, 0xf3, - 0x46, 0x18, 0x09, 0x0f, 0x10, 0x57, 0x1a, 0x36, 0x07, 0xd1, 0x98, 0x56, 0x46, 0xbb, 0x08, 0xb3, - 0x91, 0x46, 0x59, 0xb1, 0xd7, 0x68, 0xd7, 0x71, 0x0f, 0x84, 0x53, 0xf5, 0xd7, 0x8b, 0x30, 0xf0, - 0x45, 0xc9, 0xcf, 0xe7, 0xa0, 0xea, 0x19, 0xbb, 0xb4, 0xdd, 0xb7, 0xa8, 0x5a, 0x3b, 0xd6, 0xc6, - 0xd2, 0x7b, 0x15, 0x53, 0x91, 0x44, 0x31, 0x0d, 0x83, 0xa1, 0x64, 0xf2, 0x1e, 0x94, 0x5d, 0x6a, - 0xe9, 0xf7, 0xa8, 0xfa, 0x60, 0x37, 0xc6, 0x51, 0x09, 0x14, 0x2c, 0xd5, 0xd7, 0x48, 0xc2, 0x51, - 0xc9, 0x24, 0xbf, 0x90, 0x03, 0x70, 0x6c, 0xeb, 0x60, 0x65, 0x67, 0xcb, 0x93, 0x31, 0xe4, 0xb5, - 0x85, 0x9b, 0xe3, 0xa8, 0xc2, 0x7a, 0xc0, 0x55, 0x78, 0xf1, 0x53, 0x51, 0x18, 0x11, 0xce, 0x9a, - 0xa2, 0x23, 0x7a, 0xb3, 0x9c, 0x4d, 0xc6, 0xd2, 0x14, 0x72, 0x80, 0x0c, 0x34, 0x85, 0x84, 0xa3, - 0x92, 0xa9, 0x6d, 0x43, 0x7a, 0x1d, 0x87, 0x75, 0xd3, 0xdc, 0x08, 0xdd, 0xf4, 0x3f, 0xe7, 0x62, - 0x42, 0x90, 0xb6, 0x4d, 0x91, 0x9e, 0x82, 0x5c, 0x81, 0x22, 0x9b, 0x63, 0x92, 0x49, 0x86, 0xb9, - 0x9b, 0x9d, 0x63, 0xd8, 0x8c, 0xdf, 0x77, 0x2d, 0xb9, 0x9c, 0x96, 0x63, 0x1b, 0x57, 0xfb, 0x50, - 0xf1, 0xa8, 0xed, 0x9b, 0x36, 0xb5, 0xe4, 0x27, 0x1c, 0x7d, 0x1b, 0x46, 0xd4, 0x49, 0x72, 0x93, - 0x67, 0x2b, 0xe5, 0x19, 0x2a, 0x01, 0xc3, 0x40, 0x16, 0xb9, 0x00, 0xf9, 0xf6, 0xb6, 0xd4, 0x93, - 0x27, 0x8e, 0x0e, 0xeb, 0xf9, 0xa5, 0x26, 0xe6, 0xdb, 0xdb, 0xda, 0x79, 0x48, 0xe9, 0x74, 0xda, - 0x05, 0x48, 0x1d, 0x0d, 0xda, 0x6f, 0xe7, 0x61, 0x60, 0xa2, 0xe7, 0x1d, 0xd3, 0x0d, 0x9a, 0x47, - 0x8e, 0x8d, 0x9b, 0xe3, 0x19, 0x1b, 0x8a, 0xeb, 0x40, 0xc7, 0x0c, 0x51, 0x18, 0x11, 0x4e, 0xfe, - 0x66, 0x0e, 0xa6, 0xcc, 0xe8, 0x94, 0x22, 0xe7, 0x8b, 0x37, 0xc6, 0x51, 0x9d, 0xd8, 0x5c, 0x25, - 0x8e, 0x05, 0x0e, 0xc3, 0x62, 0xbc, 0x16, 0xda, 0x6f, 0xe6, 0xa0, 0xca, 0xab, 0xfc, 0x31, 0x51, - 0xae, 0x7f, 0xa7, 0x08, 0xe7, 0x52, 0xba, 0x17, 0x53, 0x2f, 0xbb, 0xba, 0xe7, 0x4b, 0x1d, 0x30, - 0xa1, 0x5e, 0xae, 0x05, 0x18, 0x8c, 0x50, 0x91, 0xcf, 0x41, 0x95, 0xda, 0xed, 0x9e, 0x63, 0xda, - 0xbe, 0x27, 0xaf, 0xf9, 0xe0, 0xb6, 0xc8, 0x55, 0x05, 0xc4, 0x10, 0x4f, 0xee, 0xc1, 0xa4, 0xea, - 0xb3, 0xdc, 0x0a, 0xca, 0xea, 0x2d, 0x0d, 0x1a, 0x5d, 0xa6, 0x8f, 0x88, 0xf0, 0xc6, 0x98, 0x24, - 0xbe, 0x79, 0xa0, 0x88, 0xb3, 0x6f, 0x1e, 0x04, 0x62, 0xc5, 0xe6, 0x81, 0x7a, 0xc4, 0x50, 0x06, - 0x71, 0xa0, 0xa6, 0x2a, 0xb0, 0xb9, 0xda, 0x1a, 0xcb, 0x11, 0x31, 0x79, 0x33, 0x76, 0xc0, 0x14, - 0xa3, 0x12, 0xc8, 0x0e, 0x54, 0xb8, 0x74, 0x26, 0xad, 0x3c, 0x06, 0x69, 0x32, 0xc8, 0x54, 0x70, - 0xc4, 0x80, 0xb7, 0xf6, 0x4f, 0x72, 0x30, 0x85, 0xd4, 0x67, 0x7d, 0x5f, 0x6e, 0x8a, 0x76, 0xa0, - 0x2c, 0x8f, 0x23, 0xc9, 0xfe, 0xfe, 0x5a, 0x86, 0x80, 0x06, 0xce, 0x47, 0x1e, 0xa8, 0xd1, 0x8d, - 0xbd, 0xf5, 0x9d, 0x1d, 0x54, 0xdc, 0xc9, 0x55, 0xa8, 0x3a, 0xb6, 0x34, 0xe0, 0xe5, 0xfc, 0xfb, - 0x19, 0xf6, 0x01, 0xd6, 0x15, 0xf0, 0xfe, 0x61, 0xfd, 0x42, 0xf0, 0x10, 0xab, 0x24, 0x86, 0x25, - 0xb5, 0x9f, 0x67, 0x93, 0xbf, 0x63, 0x59, 0xa6, 0xdd, 0x89, 0x87, 0x8b, 0x11, 0x0b, 0xa6, 0x85, - 0x91, 0xb1, 0xaf, 0x9b, 0x96, 0xbe, 0x6d, 0xd1, 0x0f, 0xdd, 0xd4, 0xec, 0xfb, 0xa6, 0x35, 0x27, - 0xee, 0x46, 0x9f, 0x5b, 0xb1, 0xfd, 0x75, 0xb7, 0xe5, 0xbb, 0xa6, 0xdd, 0x11, 0xea, 0xdb, 0x5a, - 0x8c, 0x17, 0x26, 0x78, 0x6b, 0xff, 0xae, 0x08, 0xfc, 0xa8, 0x0b, 0xf9, 0x22, 0x54, 0xbb, 0xd4, - 0xd8, 0xd5, 0x6d, 0xd3, 0x53, 0xd9, 0xed, 0xd9, 0x8c, 0x58, 0x5d, 0x53, 0xc0, 0xfb, 0x6c, 0xda, - 0x6f, 0xb4, 0x56, 0xf9, 0xf1, 0xf8, 0x90, 0x96, 0x18, 0x30, 0xd1, 0xf1, 0x3c, 0xbd, 0x67, 0x66, - 0x0e, 0xf8, 0x15, 0xd9, 0xc6, 0x85, 0xf7, 0x5f, 0xfc, 0x47, 0xc9, 0x9a, 0x18, 0x50, 0xea, 0x59, - 0xba, 0x69, 0x67, 0x0e, 0xed, 0x66, 0x6f, 0xb0, 0xc1, 0x38, 0x09, 0xe7, 0x08, 0xff, 0x8b, 0x82, - 0x37, 0xe9, 0x43, 0xcd, 0x33, 0x5c, 0xbd, 0xeb, 0xed, 0xea, 0x0b, 0x2f, 0xbc, 0x98, 0x79, 0x62, - 0x08, 0x45, 0x89, 0x41, 0xb3, 0x88, 0x8d, 0xb5, 0xd6, 0xf5, 0xc6, 0xc2, 0x0b, 0x2f, 0x62, 0x54, - 0x4e, 0x54, 0xec, 0x0b, 0xcf, 0x2f, 0x64, 0xbf, 0xa8, 0x36, 0x5d, 0xec, 0x0b, 0xcf, 0x2f, 0x60, - 0x54, 0x0e, 0x6b, 0x52, 0x27, 0x62, 0xc1, 0x66, 0x13, 0xb8, 0x1e, 0x06, 0x00, 0xf1, 0xbf, 0x28, - 0x78, 0x6b, 0xff, 0x33, 0x07, 0xd5, 0x00, 0xcf, 0x16, 0x11, 0x91, 0x47, 0x75, 0x65, 0x69, 0x84, - 0x55, 0x69, 0x51, 0x16, 0xc5, 0x80, 0x09, 0x79, 0x0b, 0x26, 0xc5, 0x7f, 0x99, 0xd7, 0x3c, 0x7f, - 0xe2, 0xe4, 0xe9, 0x8b, 0x91, 0xe2, 0x18, 0x63, 0x46, 0x5e, 0x86, 0x29, 0xee, 0x34, 0x53, 0xab, - 0x88, 0x74, 0x48, 0x04, 0xb1, 0x66, 0x9b, 0x51, 0x24, 0xc6, 0x69, 0x83, 0x17, 0xe7, 0x5f, 0x82, - 0x6c, 0x01, 0xb0, 0x95, 0x54, 0xd6, 0xf2, 0x44, 0xaf, 0xce, 0xc3, 0x20, 0xb6, 0x82, 0xc2, 0x18, - 0x61, 0x94, 0x92, 0x9e, 0x3e, 0x3f, 0xee, 0xf4, 0xf4, 0xf3, 0x50, 0xdd, 0xd5, 0xed, 0xb6, 0xb7, - 0xab, 0xef, 0x51, 0x79, 0xfe, 0x32, 0xd8, 0x32, 0xbb, 0xae, 0x10, 0x18, 0xd2, 0x68, 0xff, 0x6c, - 0x02, 0x44, 0xa8, 0x32, 0x79, 0x0e, 0x2a, 0x6d, 0xd3, 0x8b, 0x5e, 0x10, 0x11, 0xf8, 0x53, 0x96, - 0x24, 0x1c, 0x03, 0x8a, 0xa8, 0x0f, 0xa3, 0x94, 0xf0, 0x61, 0x48, 0xcf, 0x47, 0x21, 0x82, 0x52, - 0x9e, 0x8f, 0x57, 0x60, 0xc6, 0x72, 0x9c, 0x3d, 0x36, 0x39, 0x47, 0xcf, 0x91, 0x4d, 0x89, 0xcd, - 0xa6, 0xd5, 0x38, 0x0a, 0x93, 0xb4, 0x64, 0x0b, 0x9e, 0x78, 0x97, 0xba, 0x8e, 0x0c, 0xc6, 0x6b, - 0x59, 0x94, 0xf6, 0x14, 0x1b, 0xe1, 0x01, 0xe2, 0xc7, 0xdc, 0xbe, 0x9e, 0x4e, 0x82, 0xc3, 0xca, - 0xf2, 0x83, 0xb9, 0xba, 0xdb, 0xa1, 0xfe, 0x86, 0xeb, 0x18, 0xd4, 0xf3, 0x4c, 0xbb, 0xa3, 0xd8, - 0x4e, 0x84, 0x6c, 0x37, 0xd3, 0x49, 0x70, 0x58, 0x59, 0xf2, 0x26, 0xcc, 0x0a, 0x94, 0xd8, 0x2a, - 0x6b, 0x88, 0x49, 0xdc, 0xb4, 0xd4, 0x6d, 0xf9, 0x53, 0x42, 0x63, 0xdc, 0x1c, 0x42, 0x83, 0x43, - 0x4b, 0x93, 0xd7, 0xe1, 0x8c, 0x8a, 0x9d, 0xdd, 0x60, 0xda, 0xb8, 0x6e, 0x51, 0xb9, 0x61, 0x22, - 0xcf, 0x23, 0xaa, 0xf3, 0x78, 0x98, 0xa0, 0xc2, 0x81, 0x72, 0x04, 0xe1, 0x02, 0x8f, 0x51, 0xdf, - 0xea, 0x2d, 0x3a, 0x8e, 0xd5, 0x76, 0xee, 0xda, 0xea, 0xdd, 0xc5, 0xae, 0x0a, 0xbf, 0xc0, 0xae, - 0x95, 0x4a, 0x81, 0x43, 0x4a, 0xb2, 0x37, 0xe7, 0x98, 0x25, 0xe7, 0xae, 0x9d, 0xe4, 0x0a, 0xe1, - 0x9b, 0xb7, 0x86, 0xd0, 0xe0, 0xd0, 0xd2, 0xdc, 0x7d, 0x91, 0x78, 0x83, 0xad, 0x9e, 0x8c, 0x2a, - 0x15, 0x56, 0xe2, 0x00, 0x16, 0x53, 0x4a, 0x90, 0x55, 0x38, 0x9f, 0x84, 0x32, 0x71, 0x32, 0xc0, - 0x54, 0x58, 0xff, 0x29, 0x78, 0x4c, 0x2d, 0xa5, 0xd5, 0xa0, 0x1a, 0xdc, 0x37, 0xae, 0xfd, 0x51, - 0x1e, 0x66, 0x12, 0x89, 0x55, 0x4f, 0x21, 0xe6, 0xc9, 0x8e, 0xc5, 0x3c, 0xad, 0x66, 0xba, 0x37, - 0x3d, 0x52, 0xf3, 0xa1, 0xa1, 0x4f, 0xfb, 0x89, 0xd0, 0xa7, 0x9b, 0x63, 0x93, 0xf8, 0xe0, 0x08, - 0xa8, 0xa3, 0x1c, 0x9c, 0x4b, 0x94, 0x38, 0x85, 0x38, 0x9b, 0x6e, 0x3c, 0xce, 0xe6, 0xfa, 0xb8, - 0x5e, 0x76, 0x48, 0xb8, 0xcd, 0xff, 0x19, 0x7c, 0xc9, 0x96, 0x88, 0x37, 0x2b, 0xcb, 0x1c, 0x96, - 0xf2, 0x1d, 0x97, 0xb2, 0x56, 0x84, 0x7f, 0xdf, 0x78, 0x4e, 0x40, 0xbb, 0x83, 0x4a, 0x0a, 0xf1, - 0xa0, 0xa2, 0x12, 0x55, 0x8e, 0x37, 0x9a, 0x2e, 0x68, 0xec, 0x20, 0xf7, 0x70, 0x20, 0x48, 0xfb, - 0xe5, 0x02, 0x3c, 0x9e, 0xda, 0x29, 0x4e, 0x6f, 0x83, 0xff, 0xe5, 0xf8, 0x06, 0xff, 0x33, 0xc9, - 0x0d, 0xfe, 0xf3, 0x89, 0xfa, 0x3d, 0xc2, 0xfb, 0xfc, 0x63, 0xdc, 0xbb, 0xd6, 0x66, 0x60, 0x2a, - 0x96, 0x5c, 0x55, 0xfb, 0xc3, 0x09, 0xa8, 0x45, 0x7a, 0xd2, 0x23, 0x97, 0xd4, 0x92, 0xbc, 0xad, - 0xae, 0x44, 0x2c, 0x64, 0xbd, 0x84, 0x8e, 0x71, 0x91, 0x46, 0x48, 0xe4, 0xae, 0x44, 0xf2, 0x65, - 0x98, 0xee, 0x7a, 0x9d, 0x95, 0xa5, 0xeb, 0x54, 0x6f, 0x53, 0xf7, 0x06, 0x55, 0x99, 0x64, 0x84, - 0x31, 0x17, 0xc3, 0x60, 0x82, 0x92, 0xac, 0xc2, 0xe3, 0x2e, 0xbd, 0xd3, 0xa7, 0x9e, 0x1f, 0xdf, - 0x1a, 0x97, 0xca, 0x8c, 0x5c, 0xcf, 0x12, 0x04, 0x1e, 0xa6, 0x17, 0x62, 0x73, 0x94, 0xd8, 0xce, - 0x99, 0xc8, 0x38, 0x50, 0xd5, 0x07, 0xe5, 0x4e, 0x2d, 0xe9, 0x24, 0x09, 0x21, 0x6a, 0x1b, 0x27, - 0xfd, 0xfc, 0x61, 0xf9, 0x23, 0x3c, 0x7f, 0x18, 0x3d, 0xf4, 0x5a, 0x79, 0xe0, 0xa1, 0xd7, 0x61, - 0x27, 0x3b, 0xab, 0x8f, 0xc2, 0xc9, 0x4e, 0xed, 0x5b, 0x10, 0x6b, 0x70, 0xe2, 0x40, 0x35, 0x78, - 0xd9, 0xcc, 0xc7, 0x3f, 0xc2, 0x33, 0x80, 0xdc, 0x0f, 0x15, 0x3c, 0x62, 0x28, 0x43, 0xdb, 0x61, - 0xc3, 0x9c, 0xe7, 0xf8, 0x7c, 0xb8, 0x57, 0xbb, 0xff, 0x9b, 0x3c, 0x54, 0x83, 0x00, 0x37, 0x72, - 0x05, 0x8a, 0x76, 0xe8, 0x43, 0x0c, 0x74, 0x0e, 0xee, 0x3d, 0xe4, 0x98, 0x78, 0x43, 0xe4, 0x1f, - 0x7e, 0x43, 0x44, 0x4f, 0xb4, 0x16, 0x32, 0x9c, 0x68, 0xed, 0x41, 0xd9, 0x77, 0xcd, 0x4e, 0x87, - 0xba, 0x99, 0xb7, 0x5a, 0x83, 0xe6, 0xda, 0x14, 0x0c, 0x65, 0xcb, 0x8a, 0x07, 0x54, 0x62, 0xb4, - 0x77, 0xe0, 0x4c, 0x92, 0x92, 0x9f, 0x90, 0x93, 0x7e, 0x7b, 0xd9, 0xc6, 0xe1, 0x09, 0x39, 0x09, - 0xc7, 0x80, 0x82, 0x0d, 0x26, 0xf6, 0x99, 0xde, 0x75, 0x6c, 0xb5, 0x08, 0xf2, 0xc1, 0xb4, 0x29, - 0x61, 0x18, 0x60, 0xb5, 0xff, 0x5a, 0x80, 0x27, 0xc3, 0x30, 0xc5, 0x35, 0xdd, 0xd6, 0x3b, 0xf1, - 0x7b, 0x22, 0x3f, 0x49, 0x12, 0x35, 0x96, 0x7b, 0x35, 0x0b, 0x8f, 0xc0, 0xbd, 0x9a, 0x7f, 0x52, - 0x00, 0x7e, 0xf4, 0x9e, 0x7c, 0x0b, 0x26, 0x55, 0x7b, 0xb2, 0x67, 0xf9, 0x39, 0xaf, 0x66, 0xfe, - 0x9c, 0xfc, 0x84, 0x7f, 0x10, 0x43, 0x12, 0x85, 0x62, 0x4c, 0x20, 0x71, 0xa0, 0xb2, 0xa3, 0x5b, - 0xd6, 0xb6, 0x2e, 0x6f, 0xa7, 0x1c, 0x9b, 0x70, 0xde, 0xcd, 0x97, 0x25, 0x6b, 0x0c, 0x84, 0x10, - 0x17, 0xaa, 0x8e, 0x2d, 0x63, 0xc9, 0xe4, 0xb7, 0x18, 0x93, 0xc4, 0x29, 0xe1, 0x8f, 0x96, 0xbc, - 0x31, 0x14, 0x43, 0x7e, 0x2e, 0x07, 0x53, 0x6e, 0xd4, 0x25, 0x2d, 0xe7, 0x8f, 0xe5, 0x0c, 0xdb, - 0x10, 0x11, 0x6e, 0xd1, 0x73, 0x98, 0x51, 0xbf, 0x77, 0x5c, 0xa6, 0xf6, 0x5f, 0x72, 0x30, 0xd5, - 0xb2, 0xcc, 0xb6, 0x69, 0x77, 0x1e, 0xe2, 0x7d, 0x9b, 0xeb, 0x50, 0xf2, 0x2c, 0xb3, 0x4d, 0x47, - 0x4c, 0x37, 0xc2, 0x35, 0x33, 0x56, 0x4b, 0xa6, 0xa0, 0xb0, 0x9f, 0xf8, 0x05, 0x9e, 0x85, 0x63, - 0x5c, 0xe0, 0xf9, 0x7b, 0x15, 0x90, 0x89, 0x2b, 0x48, 0x1f, 0xaa, 0x1d, 0x75, 0x25, 0xa2, 0x7c, - 0xc7, 0xeb, 0x19, 0x2e, 0x00, 0x8b, 0x5d, 0xae, 0x28, 0xbe, 0x77, 0x00, 0xc4, 0x50, 0x12, 0xa1, - 0x50, 0xe2, 0xf9, 0xa8, 0x32, 0x27, 0xf1, 0x8e, 0x64, 0x1e, 0x13, 0x2d, 0xc3, 0x01, 0x28, 0xb8, - 0x13, 0x5d, 0x06, 0x86, 0x16, 0x32, 0xc6, 0x42, 0x85, 0xd9, 0xec, 0x93, 0xd1, 0xa5, 0x4c, 0x84, - 0xad, 0xfb, 0x5e, 0xe6, 0xac, 0xfa, 0xe1, 0x01, 0x50, 0x79, 0x3e, 0x54, 0xf7, 0x3d, 0xe4, 0xac, - 0xc9, 0x4f, 0x43, 0xcd, 0x77, 0x75, 0xdb, 0xdb, 0x71, 0xdc, 0x2e, 0x75, 0xa5, 0x1f, 0x7e, 0x39, - 0x43, 0xfe, 0x8f, 0xcd, 0x90, 0x9b, 0x08, 0x0b, 0x8a, 0x81, 0x30, 0x2a, 0x8d, 0xec, 0x41, 0xa5, - 0xdf, 0x16, 0x15, 0x93, 0xfa, 0x76, 0x23, 0x83, 0xe4, 0xe8, 0x19, 0x46, 0xf5, 0x84, 0x81, 0x00, - 0xd6, 0x1b, 0xc3, 0x1c, 0xd7, 0xe5, 0x8c, 0xbd, 0x31, 0x91, 0x7f, 0x73, 0x78, 0x72, 0x6b, 0xd2, - 0x0d, 0xbd, 0x0d, 0x95, 0x8c, 0x8d, 0x1b, 0xb3, 0x1a, 0xe5, 0xfd, 0x08, 0x49, 0x5f, 0x83, 0x09, - 0x13, 0x3d, 0x1e, 0x5c, 0x27, 0xd5, 0xf0, 0xab, 0x19, 0x63, 0xf4, 0xa2, 0xf9, 0x68, 0x04, 0x04, - 0xa5, 0x00, 0xf2, 0x0d, 0x28, 0x78, 0x77, 0x3c, 0x79, 0x58, 0x21, 0xc3, 0x4e, 0xca, 0x1d, 0xd5, - 0x37, 0xb9, 0x97, 0xbb, 0x75, 0xc7, 0x43, 0xc6, 0x57, 0xfb, 0x5e, 0x1e, 0xca, 0x0c, 0xc7, 0xd6, - 0xa9, 0x79, 0xa8, 0xea, 0x77, 0x3d, 0xa4, 0x9d, 0x30, 0x5b, 0x74, 0x30, 0x0b, 0x35, 0x6e, 0xb7, - 0x04, 0x02, 0x43, 0x1a, 0x56, 0x80, 0x9f, 0x40, 0xe6, 0xfb, 0xe9, 0xf9, 0x78, 0x81, 0x37, 0x14, - 0x02, 0x43, 0x1a, 0x72, 0x0b, 0x2e, 0xf0, 0x87, 0xf5, 0xbb, 0x36, 0x75, 0x1b, 0xb7, 0x5b, 0x0d, - 0xc3, 0x70, 0xfa, 0x7c, 0xcf, 0xa6, 0x10, 0x3b, 0x9d, 0x70, 0xe1, 0x8d, 0x54, 0x2a, 0x1c, 0x52, - 0x9a, 0xec, 0x03, 0xe8, 0x9e, 0xd7, 0xef, 0x52, 0x74, 0x82, 0x43, 0x4a, 0x19, 0x2c, 0xfa, 0xdb, - 0xad, 0x46, 0xc0, 0x4d, 0xec, 0x92, 0x84, 0xcf, 0x18, 0x91, 0xa4, 0xfd, 0xa0, 0x04, 0xd5, 0xa0, - 0x65, 0x3f, 0xc6, 0xed, 0xb7, 0x08, 0x67, 0xf7, 0x4d, 0xcf, 0x14, 0x2e, 0xfb, 0xe8, 0x21, 0xc7, - 0x92, 0x50, 0x07, 0x6f, 0x25, 0x91, 0x38, 0x48, 0x4f, 0x56, 0xe0, 0x5c, 0x57, 0xbf, 0x77, 0xb3, - 0xdf, 0xdd, 0xa6, 0xee, 0xfa, 0x8e, 0xf4, 0x1f, 0x79, 0x32, 0x38, 0x9d, 0xc7, 0x2f, 0xad, 0x0d, - 0xa2, 0x31, 0xad, 0x0c, 0x79, 0x05, 0x66, 0xee, 0xea, 0x26, 0xf7, 0x1a, 0x44, 0x77, 0x37, 0x4a, - 0x62, 0xef, 0xe5, 0x76, 0x1c, 0x85, 0x49, 0x5a, 0xf2, 0x3c, 0xd4, 0x54, 0x50, 0xc6, 0x96, 0x6b, - 0xa9, 0x74, 0x18, 0xfc, 0x88, 0x8e, 0x02, 0xe3, 0x2a, 0x46, 0x69, 0xc8, 0x97, 0x61, 0x5a, 0xf7, - 0x7d, 0xd7, 0xdc, 0xee, 0xfb, 0xbc, 0xa9, 0xc5, 0x09, 0x29, 0xe9, 0x1b, 0x69, 0xc4, 0x30, 0x98, - 0xa0, 0x24, 0xeb, 0xf0, 0xb8, 0x74, 0x92, 0xc5, 0x09, 0x65, 0xba, 0x67, 0xae, 0xba, 0xae, 0xa5, - 0x11, 0x60, 0x7a, 0xb9, 0x44, 0x77, 0x86, 0x53, 0xeb, 0xce, 0x5d, 0x90, 0xce, 0x45, 0x62, 0xc4, - 0x6e, 0x93, 0x17, 0x39, 0x0d, 0xe7, 0x8f, 0xa7, 0xe6, 0x04, 0x77, 0x7f, 0x47, 0x6e, 0xbb, 0x4c, - 0xbd, 0x36, 0x5e, 0xfb, 0xb7, 0x79, 0x28, 0x6c, 0xae, 0xb6, 0xc8, 0xeb, 0x40, 0x4c, 0xdb, 0xa3, - 0x46, 0xdf, 0xa5, 0xad, 0x3d, 0xb3, 0x77, 0x8b, 0xba, 0xe6, 0xce, 0x81, 0xdc, 0xd7, 0x0b, 0xdc, - 0x7e, 0x2b, 0x03, 0x14, 0x98, 0x52, 0x8a, 0x6f, 0xdb, 0xea, 0x8b, 0xd4, 0xcd, 0xb0, 0x6d, 0xdb, - 0x08, 0x8b, 0x63, 0x8c, 0x19, 0xd9, 0x02, 0x30, 0x42, 0xd6, 0x85, 0x13, 0xef, 0xb5, 0x46, 0x18, - 0x47, 0x18, 0x11, 0x84, 0xea, 0x1e, 0x23, 0xe5, 0x5c, 0x8b, 0x27, 0xe1, 0xca, 0x17, 0xc4, 0x1b, - 0xaa, 0x2c, 0x86, 0x6c, 0x34, 0x1b, 0xa6, 0x62, 0xf7, 0xb0, 0x93, 0x2f, 0x41, 0xc5, 0xe9, 0x45, - 0xb4, 0xc4, 0x2a, 0xcf, 0x61, 0x5f, 0x59, 0x97, 0xb0, 0xfb, 0x87, 0xf5, 0xa9, 0x55, 0xa7, 0x63, - 0x1a, 0x0a, 0x80, 0x01, 0x39, 0xd1, 0x60, 0x82, 0x67, 0x5c, 0x54, 0x01, 0x50, 0x7c, 0x99, 0xe2, - 0x77, 0x44, 0x7b, 0x28, 0x31, 0xda, 0xb7, 0x8b, 0x10, 0x1e, 0x3b, 0x24, 0x1e, 0x4c, 0x88, 0x1c, - 0x49, 0x52, 0x21, 0x7d, 0xa8, 0xe9, 0x98, 0xa4, 0x28, 0xd2, 0x81, 0xc2, 0x3b, 0xce, 0x76, 0x66, - 0x7d, 0x34, 0x92, 0x36, 0x5a, 0xcc, 0x19, 0x11, 0x00, 0x32, 0x09, 0xe4, 0xbb, 0x39, 0x38, 0xeb, - 0x25, 0xbd, 0x08, 0xb2, 0x3b, 0x60, 0x76, 0x77, 0x49, 0xd2, 0x2f, 0x21, 0x2e, 0x1b, 0x18, 0x8a, - 0xc6, 0xc1, 0xba, 0xb0, 0xf6, 0x17, 0x87, 0xe1, 0x64, 0x77, 0x1a, 0xbd, 0xfd, 0xc5, 0x01, 0xbb, - 0x78, 0xfb, 0xc7, 0x61, 0x28, 0x45, 0x69, 0xff, 0x21, 0x07, 0x85, 0xad, 0xa5, 0xe5, 0x53, 0xf7, - 0x01, 0x92, 0x0e, 0x94, 0x3b, 0xe2, 0x86, 0xb0, 0xcc, 0x69, 0x33, 0xe4, 0x4d, 0x63, 0x42, 0xed, - 0x93, 0x0f, 0xa8, 0xb8, 0x6b, 0x07, 0x30, 0xb1, 0xb5, 0x24, 0x4d, 0xfa, 0x53, 0xf6, 0x73, 0xfe, - 0x34, 0x04, 0xda, 0xf6, 0xe9, 0x0b, 0xff, 0x76, 0x0e, 0xe2, 0x06, 0xc6, 0xe9, 0x57, 0xe1, 0x0f, - 0x73, 0x90, 0x48, 0x7e, 0x46, 0x5e, 0x94, 0x37, 0xae, 0xc4, 0x4f, 0xf0, 0xab, 0x1b, 0x57, 0x48, - 0x9c, 0x3a, 0x72, 0xf3, 0xca, 0xfb, 0x39, 0x98, 0x72, 0xa3, 0xf1, 0x71, 0x72, 0xca, 0xc8, 0x10, - 0xf5, 0x9b, 0x16, 0x6d, 0x27, 0x8f, 0x6b, 0x44, 0x51, 0x18, 0x97, 0xab, 0xfd, 0xd3, 0x3c, 0x4c, - 0x9c, 0x5a, 0xe6, 0x5a, 0x1a, 0xdb, 0x75, 0x5f, 0xcc, 0x38, 0x23, 0x0c, 0xdd, 0x6c, 0xef, 0x26, - 0x36, 0xdb, 0xaf, 0x66, 0x15, 0xf4, 0xe0, 0x3d, 0xf6, 0x7f, 0x99, 0x03, 0x39, 0x1f, 0xad, 0xd8, - 0x9e, 0xaf, 0xdb, 0x06, 0x25, 0x46, 0x30, 0xf9, 0x65, 0xdd, 0x79, 0x95, 0x19, 0x18, 0xc4, 0x7a, - 0xc7, 0xff, 0xab, 0xc9, 0x8e, 0x3c, 0x07, 0x95, 0x5d, 0xc7, 0xf3, 0xed, 0x50, 0x73, 0x0f, 0x3c, - 0xd4, 0xd7, 0x25, 0x1c, 0x03, 0x0a, 0xf2, 0x59, 0x28, 0xcb, 0x0d, 0x1d, 0x19, 0x6a, 0x14, 0x38, - 0xe0, 0xe5, 0x8e, 0x0f, 0x2a, 0xbc, 0xf6, 0x75, 0x98, 0x49, 0xa6, 0xdf, 0xbd, 0x96, 0x9a, 0x7e, - 0xf7, 0xe9, 0x21, 0xe9, 0x77, 0x6b, 0xc3, 0x53, 0xef, 0xfe, 0x9d, 0x02, 0x4c, 0x7e, 0x6c, 0xd2, - 0xee, 0xa6, 0xe4, 0x7c, 0x29, 0x64, 0xcc, 0xf9, 0x52, 0x3c, 0x51, 0xce, 0x97, 0x53, 0x4f, 0xc8, - 0xf2, 0xc3, 0x1c, 0xc0, 0xa9, 0xe5, 0xfc, 0x6d, 0xc7, 0xc3, 0x44, 0x32, 0x0f, 0x92, 0xf4, 0xe8, - 0x90, 0xef, 0x55, 0xd4, 0x2b, 0xf1, 0x3d, 0xf7, 0xf7, 0x73, 0x30, 0xad, 0xc7, 0xd2, 0x9b, 0x64, - 0x56, 0x10, 0x13, 0xd9, 0x52, 0x82, 0xa3, 0xe9, 0x71, 0x38, 0x26, 0xc4, 0xf2, 0x83, 0xb1, 0x32, - 0x20, 0x22, 0x62, 0x7d, 0x0f, 0x5c, 0x80, 0x2a, 0x0f, 0xc6, 0x46, 0x9e, 0x3e, 0x24, 0x9d, 0x4c, - 0x61, 0x2c, 0xe9, 0x64, 0xa2, 0xdb, 0xc3, 0xc5, 0x07, 0x6e, 0x0f, 0xef, 0x43, 0x75, 0xc7, 0x75, - 0xba, 0x3c, 0x63, 0x0b, 0xbf, 0xd9, 0x25, 0xcb, 0x8c, 0xbb, 0xe8, 0x74, 0xb7, 0x4d, 0x9b, 0xb6, - 0x79, 0x36, 0x98, 0xc0, 0x13, 0xb1, 0xac, 0xf8, 0x63, 0x28, 0x8a, 0xef, 0x13, 0x3a, 0x42, 0xea, - 0xc4, 0x38, 0xa5, 0x06, 0x13, 0xe3, 0xa6, 0xe0, 0x8e, 0x4a, 0x4c, 0x3c, 0x4b, 0x4b, 0xf9, 0x94, - 0xb2, 0xb4, 0x1c, 0x44, 0x93, 0xdf, 0x54, 0x32, 0xba, 0x33, 0x4f, 0x94, 0x4c, 0xf5, 0x93, 0xbc, - 0x29, 0x54, 0xfb, 0xc5, 0xb2, 0x5a, 0xaf, 0x1e, 0xb9, 0x2b, 0x0a, 0x3f, 0xc9, 0x23, 0xdb, 0xa1, - 0x03, 0x49, 0x5e, 0x2b, 0xa7, 0x98, 0xe4, 0xb5, 0x3a, 0x9e, 0x24, 0xaf, 0x90, 0x2d, 0xc9, 0x6b, - 0x6d, 0x4c, 0x49, 0x5e, 0x27, 0xc7, 0x95, 0xe4, 0x75, 0x6a, 0xa4, 0x24, 0xaf, 0xd3, 0xc7, 0x4a, - 0xf2, 0x7a, 0x58, 0x80, 0x84, 0xed, 0xff, 0x49, 0xc8, 0xc4, 0x8f, 0x55, 0xc8, 0xc4, 0x77, 0xf2, - 0x10, 0x2e, 0x83, 0x27, 0x3c, 0x64, 0xf1, 0x26, 0x4f, 0x71, 0x21, 0xae, 0x95, 0x1e, 0xcd, 0x1c, - 0x98, 0x94, 0xe9, 0x30, 0xc4, 0x7d, 0xd2, 0x01, 0x37, 0xe2, 0x01, 0x98, 0xc1, 0x5d, 0xdf, 0x99, - 0x37, 0x82, 0xc3, 0x6b, 0xc3, 0x85, 0x4f, 0x36, 0x7c, 0xc6, 0x88, 0x18, 0xed, 0x07, 0x05, 0x90, - 0x97, 0xc2, 0x13, 0x0a, 0xa5, 0x1d, 0x33, 0x3c, 0x38, 0x3f, 0xfa, 0xc2, 0xb7, 0xcc, 0xb8, 0xc8, - 0x9b, 0xe7, 0xf9, 0x4e, 0x37, 0x07, 0xa0, 0xe0, 0xce, 0xb7, 0x30, 0x45, 0xe4, 0x82, 0x6c, 0xbf, - 0x0c, 0x5b, 0x98, 0xd1, 0x08, 0x08, 0xb9, 0x85, 0x29, 0x40, 0xa8, 0x64, 0x88, 0x1d, 0x53, 0x71, - 0x0d, 0x77, 0x21, 0xf3, 0x8e, 0x69, 0x24, 0x00, 0x4f, 0xed, 0x98, 0x8a, 0x4b, 0xb8, 0x95, 0x0c, - 0xf2, 0x1e, 0xd4, 0x74, 0xc3, 0xe8, 0x77, 0xfb, 0x16, 0xf7, 0x40, 0x67, 0xbd, 0x91, 0xb5, 0x11, - 0xf2, 0x92, 0x62, 0xb9, 0x26, 0x11, 0x01, 0x63, 0x54, 0x5e, 0xf3, 0x1b, 0xdf, 0xff, 0xd1, 0xe5, - 0xc7, 0x7e, 0xf8, 0xa3, 0xcb, 0x8f, 0x7d, 0xf0, 0xa3, 0xcb, 0x8f, 0x7d, 0xfb, 0xe8, 0x72, 0xee, - 0xfb, 0x47, 0x97, 0x73, 0x3f, 0x3c, 0xba, 0x9c, 0xfb, 0xe0, 0xe8, 0x72, 0xee, 0x3f, 0x1e, 0x5d, - 0xce, 0xfd, 0xd2, 0x7f, 0xba, 0xfc, 0xd8, 0xd7, 0xbf, 0x18, 0x56, 0x67, 0x5e, 0x55, 0x67, 0x5e, - 0x09, 0x9f, 0xef, 0xed, 0x75, 0xe6, 0x59, 0x75, 0x42, 0x88, 0xaa, 0xce, 0xff, 0x0b, 0x00, 0x00, - 0xff, 0xff, 0x23, 0xe5, 0xa5, 0xf2, 0x06, 0xb8, 0x00, 0x00, + // 9566 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x8c, 0x24, 0xc7, + 0x75, 0x98, 0xe6, 0x6b, 0x67, 0xe6, 0xcd, 0x7e, 0xdc, 0xd5, 0x1d, 0x8f, 0xcb, 0xd3, 0xe9, 0xf6, + 0xdc, 0x32, 0x25, 0x2a, 0xa2, 0x77, 0xc3, 0x93, 0x48, 0x51, 0xa2, 0x28, 0x72, 0x66, 0xf7, 0xf6, + 0x6e, 0x79, 0xbb, 0xb7, 0xcb, 0x37, 0xbb, 0x77, 0x94, 0x18, 0x89, 0xe9, 0xed, 0xae, 0x9d, 0x6d, + 0x6e, 0x4f, 0xf7, 0x5c, 0x77, 0xcf, 0xde, 0x2d, 0x1d, 0x42, 0xb2, 0x1d, 0x87, 0x72, 0x62, 0x20, + 0x41, 0x82, 0xc0, 0x46, 0x12, 0x47, 0x30, 0x60, 0xc0, 0x3f, 0x02, 0x21, 0x41, 0x12, 0xfb, 0x87, + 0x0d, 0x24, 0x71, 0x7e, 0x38, 0x42, 0x2c, 0x27, 0x82, 0x11, 0x20, 0x0a, 0x9c, 0x6c, 0xa2, 0x4d, + 0xf2, 0x23, 0xf9, 0xe5, 0x18, 0x48, 0xe2, 0x5c, 0x02, 0x38, 0xa8, 0xaf, 0xfe, 0x9a, 0x9e, 0xe3, + 0xee, 0xf4, 0xdc, 0xf2, 0x68, 0xf3, 0xd7, 0x4c, 0xbf, 0xf7, 0xea, 0xbd, 0xea, 0xea, 0x57, 0x55, + 0xaf, 0x5e, 0xbd, 0x7a, 0x05, 0xd7, 0x3b, 0x56, 0xb0, 0xdb, 0xdf, 0x9e, 0x37, 0xdc, 0xee, 0x82, + 0xd3, 0xef, 0xea, 0x3d, 0xcf, 0x7d, 0x9b, 0xff, 0xd9, 0xb1, 0xdd, 0x7b, 0x0b, 0xbd, 0xbd, 0xce, + 0x82, 0xde, 0xb3, 0xfc, 0x08, 0xb2, 0xff, 0x9c, 0x6e, 0xf7, 0x76, 0xf5, 0xe7, 0x16, 0x3a, 0xd4, + 0xa1, 0x9e, 0x1e, 0x50, 0x73, 0xbe, 0xe7, 0xb9, 0x81, 0x4b, 0xbe, 0x10, 0x31, 0x9a, 0x57, 0x8c, + 0xe6, 0x55, 0xb1, 0xf9, 0xde, 0x5e, 0x67, 0x9e, 0x31, 0x8a, 0x20, 0x8a, 0xd1, 0xc5, 0x9f, 0x88, + 0xd5, 0xa0, 0xe3, 0x76, 0xdc, 0x05, 0xce, 0x6f, 0xbb, 0xbf, 0xc3, 0x9f, 0xf8, 0x03, 0xff, 0x27, + 0xe4, 0x5c, 0xd4, 0xf6, 0x5e, 0xf4, 0xe7, 0x2d, 0x97, 0x55, 0x6b, 0xc1, 0x70, 0x3d, 0xba, 0xb0, + 0x3f, 0x50, 0x97, 0x8b, 0x9f, 0x8f, 0x68, 0xba, 0xba, 0xb1, 0x6b, 0x39, 0xd4, 0x3b, 0x50, 0xef, + 0xb2, 0xe0, 0x51, 0xdf, 0xed, 0x7b, 0x06, 0x3d, 0x51, 0x29, 0x7f, 0xa1, 0x4b, 0x03, 0x3d, 0x4b, + 0xd6, 0xc2, 0xb0, 0x52, 0x5e, 0xdf, 0x09, 0xac, 0xee, 0xa0, 0x98, 0x17, 0xde, 0xaf, 0x80, 0x6f, + 0xec, 0xd2, 0xae, 0x3e, 0x50, 0xee, 0x73, 0xc3, 0xca, 0xf5, 0x03, 0xcb, 0x5e, 0xb0, 0x9c, 0xc0, + 0x0f, 0xbc, 0x74, 0x21, 0xed, 0x1f, 0x14, 0x61, 0xaa, 0x79, 0xa7, 0xdd, 0xf4, 0xfd, 0x7e, 0x97, + 0xa2, 0x6b, 0x53, 0xf2, 0x19, 0xa8, 0x7a, 0xae, 0x4d, 0x9b, 0x9e, 0x33, 0x5b, 0xb8, 0x52, 0x78, + 0xa6, 0xde, 0x9a, 0xf9, 0xde, 0xe1, 0xdc, 0xc7, 0x8e, 0x0e, 0xe7, 0xaa, 0x0c, 0xdd, 0xc4, 0x5b, + 0xa8, 0xf0, 0xe4, 0x39, 0x68, 0xf8, 0xd4, 0xf7, 0x2d, 0xd7, 0xb9, 0xa5, 0x77, 0xe9, 0x6c, 0x51, + 0x90, 0x1f, 0x1d, 0xce, 0x35, 0xda, 0x11, 0x18, 0xe3, 0x34, 0xe4, 0x65, 0x98, 0x31, 0xfb, 0x9e, + 0x1e, 0x58, 0xae, 0xd3, 0xa6, 0x86, 0xeb, 0x98, 0xfe, 0x6c, 0xe9, 0x4a, 0xe1, 0x99, 0x4a, 0xeb, + 0xdc, 0xd1, 0xe1, 0xdc, 0xcc, 0x52, 0x12, 0x85, 0x69, 0x5a, 0x32, 0x0f, 0x40, 0xef, 0x07, 0xd4, + 0x73, 0x74, 0x7b, 0x65, 0x69, 0xb6, 0xcc, 0x05, 0x4e, 0x1f, 0x1d, 0xce, 0xc1, 0xb5, 0x10, 0x8a, + 0x31, 0x0a, 0xa2, 0xc1, 0x44, 0xcf, 0xb5, 0x2d, 0xe3, 0x60, 0xb6, 0xc2, 0x69, 0xe1, 0xe8, 0x70, + 0x6e, 0x62, 0x83, 0x43, 0x50, 0x62, 0x18, 0x4f, 0xf1, 0xaf, 0xe9, 0x39, 0xfe, 0xec, 0xc4, 0x95, + 0x92, 0xe2, 0x29, 0xe8, 0x9a, 0x78, 0xcb, 0xc7, 0x18, 0x85, 0xf6, 0x5b, 0x00, 0xe7, 0x9a, 0xdb, + 0x7e, 0xe0, 0xe9, 0x46, 0xb0, 0xe1, 0x9a, 0x9b, 0xb4, 0xdb, 0xb3, 0xf5, 0x80, 0x92, 0x3d, 0xa8, + 0x31, 0x1d, 0x30, 0xf5, 0x40, 0xe7, 0x2d, 0xd7, 0xb8, 0xda, 0x9c, 0x1f, 0x51, 0xe7, 0xe7, 0xd7, + 0x24, 0xa3, 0xd6, 0xe4, 0xd1, 0xe1, 0x5c, 0x4d, 0x3d, 0x61, 0x28, 0x80, 0xfc, 0x62, 0x01, 0x26, + 0x1d, 0xd7, 0xa4, 0x6d, 0x6a, 0x53, 0x23, 0x70, 0xbd, 0xd9, 0xe2, 0x95, 0xd2, 0x33, 0x8d, 0xab, + 0xdf, 0x18, 0x59, 0x62, 0xc6, 0x1b, 0xcd, 0xdf, 0x8a, 0x09, 0xb8, 0xe6, 0x04, 0xde, 0x41, 0xeb, + 0xbc, 0xd4, 0x85, 0xc9, 0x38, 0x0a, 0x13, 0x35, 0x21, 0x5b, 0xd0, 0x08, 0x5c, 0x9b, 0x8a, 0x0f, + 0xc7, 0x3e, 0x2f, 0xab, 0xd8, 0xe5, 0x79, 0xa1, 0x9d, 0x4c, 0xfc, 0x3c, 0xeb, 0x96, 0xf3, 0xfb, + 0xcf, 0xcd, 0x6f, 0x86, 0x64, 0xad, 0x73, 0x92, 0x71, 0x23, 0x82, 0xf9, 0x18, 0xe7, 0x43, 0x28, + 0xcc, 0xf8, 0xd4, 0xe8, 0x7b, 0x56, 0x70, 0xb0, 0xe8, 0x3a, 0x01, 0xbd, 0x1f, 0xf0, 0xef, 0xdf, + 0xb8, 0xfa, 0xa9, 0x2c, 0xd6, 0x1b, 0xae, 0xd9, 0x4e, 0x52, 0x0b, 0x0d, 0x4b, 0x01, 0x31, 0xcd, + 0x93, 0x38, 0x70, 0xc6, 0xea, 0xea, 0x1d, 0xba, 0xd1, 0xb7, 0xed, 0x36, 0x35, 0x3c, 0x1a, 0xf8, + 0xb3, 0x15, 0xfe, 0x0a, 0xcf, 0x64, 0xc9, 0x59, 0x75, 0x0d, 0xdd, 0x5e, 0xdf, 0x7e, 0x9b, 0x1a, + 0x01, 0xd2, 0x1d, 0xea, 0x51, 0xc7, 0xa0, 0xad, 0x59, 0xf9, 0x32, 0x67, 0x56, 0x52, 0x9c, 0x70, + 0x80, 0x37, 0xb9, 0x0e, 0x67, 0x7b, 0x9e, 0xe5, 0xf2, 0x2a, 0xd8, 0xba, 0xef, 0xf3, 0x9e, 0x34, + 0xc1, 0x95, 0xf5, 0x29, 0xc9, 0xe6, 0xec, 0x46, 0x9a, 0x00, 0x07, 0xcb, 0x90, 0x67, 0xa0, 0xa6, + 0x80, 0xb3, 0x55, 0xde, 0xa5, 0xb8, 0xee, 0xa8, 0xb2, 0x18, 0x62, 0xc9, 0x32, 0xd4, 0xf4, 0x9d, + 0x1d, 0xcb, 0x61, 0x94, 0x35, 0xde, 0x84, 0x97, 0xb2, 0x5e, 0xad, 0x29, 0x69, 0x04, 0x1f, 0xf5, + 0x84, 0x61, 0x59, 0xf2, 0x1a, 0x10, 0x9f, 0x7a, 0xfb, 0x96, 0x41, 0x9b, 0x86, 0xe1, 0xf6, 0x9d, + 0x80, 0xd7, 0xbd, 0xce, 0xeb, 0x7e, 0x51, 0xd6, 0x9d, 0xb4, 0x07, 0x28, 0x30, 0xa3, 0x14, 0x79, + 0x15, 0xce, 0xc8, 0xe1, 0x2d, 0x6a, 0x05, 0xe0, 0x9c, 0xce, 0xb3, 0x86, 0xc4, 0x14, 0x0e, 0x07, + 0xa8, 0x89, 0x09, 0x97, 0xf4, 0x7e, 0xe0, 0x76, 0x19, 0xcb, 0xa4, 0xd0, 0x4d, 0x77, 0x8f, 0x3a, + 0xb3, 0x8d, 0x2b, 0x85, 0x67, 0x6a, 0xad, 0x2b, 0x47, 0x87, 0x73, 0x97, 0x9a, 0x0f, 0xa1, 0xc3, + 0x87, 0x72, 0x21, 0xeb, 0x50, 0x37, 0x1d, 0x5f, 0x8c, 0x0c, 0xb3, 0x93, 0xbc, 0x82, 0xcf, 0xc9, + 0x57, 0xad, 0x2f, 0xdd, 0x6a, 0x0b, 0xc4, 0x83, 0xc3, 0xb9, 0x4b, 0x83, 0xb3, 0xd0, 0x7c, 0x88, + 0xc7, 0x88, 0x07, 0x59, 0xe3, 0x0c, 0x17, 0x5d, 0x67, 0xc7, 0xea, 0xcc, 0x4e, 0xf1, 0xaf, 0x71, + 0x65, 0x88, 0x42, 0x2f, 0xdd, 0x6a, 0x0b, 0xba, 0xd6, 0x94, 0x14, 0x27, 0x1e, 0x31, 0xe2, 0x40, + 0x4c, 0x98, 0x56, 0xf3, 0xd7, 0xa2, 0xad, 0x5b, 0x5d, 0x7f, 0x76, 0x9a, 0x2b, 0xef, 0x8f, 0x0f, + 0xe1, 0x89, 0x71, 0xe2, 0xd6, 0x05, 0xf9, 0x2a, 0xd3, 0x09, 0xb0, 0x8f, 0x29, 0x9e, 0x17, 0x5f, + 0x81, 0xb3, 0x03, 0x63, 0x03, 0x39, 0x03, 0xa5, 0x3d, 0x7a, 0x20, 0x26, 0x0d, 0x64, 0x7f, 0xc9, + 0x79, 0xa8, 0xec, 0xeb, 0x76, 0x5f, 0xce, 0x0c, 0x28, 0x1e, 0xbe, 0x54, 0x7c, 0xb1, 0xa0, 0xfd, + 0x6e, 0x05, 0x26, 0xd5, 0x88, 0xd3, 0xb6, 0x9c, 0x3d, 0x72, 0x07, 0x4a, 0xb6, 0xdb, 0x91, 0xe3, + 0xe6, 0x97, 0x47, 0x1e, 0xc5, 0x56, 0xdd, 0x4e, 0xab, 0x7a, 0x74, 0x38, 0x57, 0x5a, 0x75, 0x3b, + 0xc8, 0x38, 0x12, 0x03, 0x2a, 0x7b, 0xfa, 0xce, 0x9e, 0xce, 0xeb, 0xd0, 0xb8, 0xda, 0x1a, 0x99, + 0xf5, 0x4d, 0xc6, 0x85, 0xd5, 0xb5, 0x55, 0x3f, 0x3a, 0x9c, 0xab, 0xf0, 0x47, 0x14, 0xbc, 0x89, + 0x0b, 0xf5, 0x6d, 0x5b, 0x37, 0xf6, 0x76, 0x5d, 0x9b, 0xf2, 0xf9, 0x2c, 0x8f, 0xa0, 0x96, 0xe2, + 0x24, 0x3e, 0x73, 0xf8, 0x88, 0x91, 0x0c, 0x62, 0xc0, 0x44, 0xdf, 0xf4, 0x2d, 0x67, 0x4f, 0x8e, + 0x81, 0xaf, 0x8c, 0x2c, 0x6d, 0x6b, 0x89, 0xbf, 0x13, 0x9f, 0x18, 0xc5, 0x7f, 0x94, 0xac, 0x59, + 0xd3, 0xb1, 0x9e, 0x4a, 0xf9, 0xdc, 0x99, 0xe7, 0x8d, 0x58, 0x47, 0xa2, 0x51, 0xd3, 0xf1, 0x47, + 0x14, 0xbc, 0xc9, 0x9b, 0x50, 0xf2, 0xef, 0xfa, 0x7c, 0xc4, 0x6b, 0x5c, 0x7d, 0x75, 0x74, 0x11, + 0x77, 0x7d, 0x2e, 0x80, 0x7f, 0xfc, 0xf6, 0x5d, 0x1f, 0x19, 0x57, 0xd2, 0x81, 0x89, 0x5e, 0xdf, + 0xf6, 0x75, 0x8f, 0x8f, 0x88, 0x8d, 0xab, 0x8b, 0x23, 0xf3, 0xdf, 0xe0, 0x6c, 0xa2, 0xa6, 0x12, + 0xcf, 0x28, 0xd9, 0x6b, 0x7f, 0x34, 0x09, 0xd3, 0x4a, 0x9f, 0x6f, 0x53, 0x2f, 0xa0, 0xf7, 0xc9, + 0x15, 0x28, 0x3b, 0x6c, 0x14, 0x13, 0x46, 0xd4, 0xa4, 0xec, 0x59, 0x65, 0x3e, 0x7a, 0x71, 0x0c, + 0xfb, 0x88, 0xa2, 0x57, 0x49, 0xdd, 0x1c, 0xfd, 0x23, 0xb6, 0x39, 0x1b, 0x51, 0x33, 0xf1, 0x1f, + 0x25, 0x6b, 0xf2, 0x26, 0x94, 0xb9, 0x9e, 0x08, 0xad, 0x7c, 0x79, 0x74, 0x11, 0xec, 0xd5, 0x6b, + 0xec, 0x0d, 0xb8, 0x8e, 0x70, 0xa6, 0xac, 0xd7, 0xf6, 0xcd, 0x1d, 0xa9, 0x83, 0x5f, 0xce, 0xa1, + 0x83, 0xcb, 0xe2, 0xc3, 0x6d, 0x2d, 0x2d, 0x23, 0xe3, 0x48, 0xfe, 0x6a, 0x01, 0xce, 0x1a, 0xae, + 0x13, 0xe8, 0xcc, 0x8a, 0x55, 0xf6, 0x88, 0xd4, 0xc3, 0xd7, 0x46, 0x96, 0xb3, 0x98, 0xe6, 0xd8, + 0x7a, 0x82, 0x4d, 0xaf, 0x03, 0x60, 0x1c, 0x94, 0x4d, 0xfe, 0x76, 0x01, 0x9e, 0x60, 0xd3, 0xde, + 0x00, 0xb1, 0x54, 0xdd, 0x71, 0xd6, 0xea, 0xa9, 0xa3, 0xc3, 0xb9, 0x27, 0x56, 0xb2, 0x84, 0x61, + 0x76, 0x1d, 0x58, 0xed, 0xce, 0xe9, 0x83, 0x16, 0x9c, 0x54, 0xfb, 0xd5, 0x71, 0x5a, 0x85, 0xad, + 0x8f, 0x4b, 0x55, 0xce, 0x32, 0x82, 0x31, 0xab, 0x16, 0xe4, 0x1a, 0x54, 0xf7, 0x5d, 0xbb, 0xdf, + 0xa5, 0xfe, 0x6c, 0x8d, 0xcf, 0x46, 0x17, 0xb3, 0x66, 0xa3, 0xdb, 0x9c, 0x24, 0x5a, 0x6e, 0x88, + 0x67, 0x1f, 0x55, 0x59, 0x62, 0xc1, 0x84, 0x6d, 0x75, 0xad, 0xc0, 0xe7, 0x36, 0x46, 0xe3, 0xea, + 0xb5, 0x91, 0x5f, 0x4b, 0x74, 0xd1, 0x55, 0xce, 0x4c, 0xf4, 0x1a, 0xf1, 0x1f, 0xa5, 0x00, 0x3e, + 0xf4, 0x19, 0xba, 0x2d, 0x6c, 0x90, 0xc6, 0xd5, 0xaf, 0x8c, 0xde, 0x6d, 0x18, 0x97, 0xd6, 0x94, + 0x7c, 0xa7, 0x0a, 0x7f, 0x44, 0xc1, 0x9b, 0x7c, 0x1d, 0xa6, 0x13, 0x5f, 0xd3, 0x9f, 0x6d, 0xf0, + 0xd6, 0xf9, 0x44, 0x56, 0xeb, 0x84, 0x54, 0xd1, 0x24, 0x9d, 0xd0, 0x10, 0x1f, 0x53, 0xcc, 0xc8, + 0x4d, 0xa8, 0xf9, 0x96, 0x49, 0x0d, 0xdd, 0xf3, 0x67, 0x27, 0x8f, 0xc3, 0xf8, 0x8c, 0x64, 0x5c, + 0x6b, 0xcb, 0x62, 0x18, 0x32, 0xe0, 0x8b, 0x24, 0xdd, 0x0b, 0x2c, 0x61, 0xd3, 0x4f, 0x71, 0xfb, + 0x52, 0x2c, 0x92, 0x42, 0x28, 0xc6, 0x28, 0x18, 0x3d, 0x2b, 0xbb, 0xe2, 0xf4, 0xfa, 0x81, 0xb0, + 0x41, 0xe4, 0xa2, 0xaa, 0x1d, 0x42, 0x31, 0x46, 0x41, 0xbe, 0x5b, 0x80, 0x8f, 0x47, 0x8f, 0x83, + 0x9d, 0x6c, 0x66, 0xec, 0x9d, 0x6c, 0xee, 0xe8, 0x70, 0xee, 0xe3, 0xed, 0xe1, 0x22, 0xf1, 0x61, + 0xf5, 0x21, 0xef, 0x15, 0x60, 0xba, 0xdf, 0x33, 0xf5, 0x80, 0xb6, 0x03, 0xb6, 0x9e, 0xee, 0x1c, + 0xcc, 0x9e, 0xe1, 0x55, 0xbc, 0x3e, 0xfa, 0x28, 0x98, 0x60, 0x17, 0x7d, 0xe6, 0x24, 0x1c, 0x53, + 0x62, 0xb5, 0xb7, 0xe1, 0x6c, 0xd3, 0x30, 0xfa, 0xdd, 0xbe, 0xad, 0x07, 0xae, 0x77, 0xc7, 0x72, + 0x4c, 0xf7, 0x1e, 0xd9, 0x82, 0x2a, 0xb3, 0x8e, 0xdd, 0x7e, 0x20, 0x4d, 0xaa, 0xf9, 0xd8, 0xa7, + 0x0f, 0xbd, 0x03, 0x51, 0x6d, 0xd8, 0xba, 0x92, 0x29, 0x83, 0x5a, 0x80, 0xb7, 0x1a, 0xac, 0x07, + 0x6e, 0x0a, 0x16, 0xa8, 0x78, 0x69, 0x53, 0xd0, 0x68, 0x06, 0xab, 0x54, 0xf7, 0x83, 0x75, 0xc7, + 0xa0, 0xda, 0x1d, 0x98, 0x6a, 0xf6, 0x83, 0x5d, 0xd7, 0xb3, 0xde, 0xe1, 0xa5, 0xc8, 0x32, 0x54, + 0x02, 0x6e, 0x6c, 0x0b, 0xa1, 0x4f, 0x67, 0xe9, 0x9b, 0x58, 0xf8, 0xdc, 0xa4, 0x07, 0xca, 0x7a, + 0x14, 0x46, 0x81, 0x30, 0xbe, 0x45, 0x71, 0xed, 0x17, 0x8a, 0x50, 0x6d, 0xe9, 0xc6, 0x9e, 0xbb, + 0xb3, 0x43, 0xde, 0x80, 0x9a, 0xe5, 0x04, 0xd4, 0xdb, 0xd7, 0xed, 0x11, 0xdf, 0x85, 0xaf, 0x5f, + 0x56, 0x24, 0x0f, 0x0c, 0xb9, 0x91, 0x39, 0xa8, 0xf8, 0x01, 0xed, 0xf9, 0x7c, 0xfa, 0x9d, 0x92, + 0xb6, 0x09, 0x03, 0xa0, 0x80, 0x13, 0x0d, 0x26, 0x76, 0x74, 0xbe, 0xba, 0x66, 0xb3, 0x67, 0x41, + 0x8c, 0x14, 0xcb, 0x1c, 0x82, 0x12, 0x43, 0x56, 0xa0, 0x64, 0xe8, 0x3d, 0x39, 0x05, 0x9e, 0xb4, + 0x66, 0x7c, 0xd2, 0x5b, 0xd4, 0x7b, 0xc8, 0x78, 0x30, 0x71, 0x6f, 0x5b, 0x41, 0x40, 0x3d, 0x3e, + 0xd1, 0x49, 0x71, 0xaf, 0x71, 0x08, 0x4a, 0x8c, 0xf6, 0xcb, 0x05, 0xa8, 0xb7, 0x74, 0xdf, 0x32, + 0x58, 0xc3, 0x93, 0x45, 0x28, 0xf7, 0x7d, 0xea, 0x9d, 0xac, 0xb9, 0xf9, 0x24, 0xbe, 0xe5, 0x53, + 0x0f, 0x79, 0x61, 0xb2, 0x0e, 0xb5, 0x9e, 0xee, 0xfb, 0xf7, 0x5c, 0xcf, 0x94, 0x86, 0xc8, 0x31, + 0x19, 0x89, 0xf5, 0xa5, 0x2c, 0x8a, 0x21, 0x13, 0xad, 0x01, 0x91, 0xd1, 0xaa, 0xfd, 0x7c, 0x01, + 0xce, 0xb5, 0xfa, 0x3b, 0x3b, 0xd4, 0x93, 0xcb, 0x29, 0xb9, 0x50, 0xe9, 0x43, 0xfd, 0x6d, 0x1a, + 0xf8, 0x81, 0x47, 0xf5, 0xae, 0x14, 0x7b, 0x63, 0xe4, 0xae, 0xf3, 0x1a, 0x0d, 0xda, 0x9c, 0x53, + 0x7c, 0x7d, 0x14, 0x02, 0x31, 0x92, 0xa4, 0xfd, 0x56, 0x05, 0x26, 0x17, 0xdd, 0xee, 0xb6, 0xe5, + 0x50, 0xf3, 0x9a, 0xd9, 0xa1, 0xe4, 0x2d, 0x28, 0x53, 0xb3, 0x43, 0x65, 0x13, 0x8e, 0x6e, 0x1f, + 0x31, 0x66, 0x91, 0x95, 0xc7, 0x9e, 0x90, 0x33, 0x26, 0xab, 0x30, 0xbd, 0xe3, 0xb9, 0x5d, 0x31, + 0xe5, 0x6c, 0x1e, 0xf4, 0x94, 0x9f, 0xec, 0xc7, 0x55, 0xff, 0x5e, 0x4e, 0x60, 0x1f, 0x1c, 0xce, + 0x41, 0xf4, 0x84, 0xa9, 0xb2, 0xe4, 0x0d, 0x98, 0x8d, 0x20, 0xe1, 0xd8, 0xbb, 0xc8, 0x16, 0xa8, + 0xd2, 0x91, 0x76, 0xe9, 0xe8, 0x70, 0x6e, 0x76, 0x79, 0x08, 0x0d, 0x0e, 0x2d, 0xcd, 0x46, 0xb4, + 0x33, 0x11, 0x52, 0xcc, 0x87, 0x52, 0xad, 0xc7, 0x34, 0xd1, 0xf2, 0x95, 0xfc, 0x72, 0x4a, 0x04, + 0x0e, 0x08, 0x25, 0xcb, 0x30, 0x19, 0xb8, 0xb1, 0xf6, 0x12, 0xae, 0x3b, 0x4d, 0xb9, 0x9e, 0x36, + 0xdd, 0xa1, 0xad, 0x95, 0x28, 0x47, 0x10, 0x2e, 0xa8, 0xe7, 0x54, 0x4b, 0x4d, 0xf0, 0x96, 0xba, + 0x78, 0x74, 0x38, 0x77, 0x61, 0x33, 0x93, 0x02, 0x87, 0x94, 0x24, 0x3f, 0x55, 0x80, 0x69, 0x85, + 0x92, 0x6d, 0x54, 0x1d, 0x67, 0x1b, 0x11, 0xa6, 0x11, 0x9b, 0x09, 0x01, 0x98, 0x12, 0xa8, 0xb5, + 0xa0, 0xb1, 0xe8, 0x76, 0x7b, 0x9e, 0x70, 0xab, 0x92, 0xcf, 0x41, 0x39, 0x60, 0xcd, 0x24, 0x16, + 0x1a, 0x73, 0x4a, 0x05, 0x65, 0xf3, 0xcc, 0xc4, 0x48, 0x79, 0x1b, 0x71, 0x62, 0xed, 0xd7, 0xaa, + 0x50, 0x0f, 0x67, 0x35, 0xf2, 0x49, 0xa8, 0x70, 0xc7, 0x94, 0xe4, 0x11, 0x9a, 0x2b, 0xdc, 0x7f, + 0x85, 0x02, 0x47, 0x9e, 0x86, 0xaa, 0xe1, 0x76, 0xbb, 0xba, 0x63, 0x72, 0x67, 0x63, 0x5d, 0xcc, + 0x11, 0x8b, 0x02, 0x84, 0x0a, 0x47, 0x2e, 0x41, 0x59, 0xf7, 0x3a, 0xc2, 0xef, 0x57, 0x17, 0x83, + 0x4d, 0xd3, 0xeb, 0xf8, 0xc8, 0xa1, 0xe4, 0x8b, 0x50, 0xa2, 0xce, 0xfe, 0x6c, 0x79, 0xb8, 0x19, + 0x78, 0xcd, 0xd9, 0xbf, 0xad, 0x7b, 0xad, 0x86, 0xac, 0x43, 0xe9, 0x9a, 0xb3, 0x8f, 0xac, 0x0c, + 0x59, 0x85, 0x2a, 0x75, 0xf6, 0x99, 0xfe, 0x48, 0x87, 0xdc, 0x8f, 0x0d, 0x29, 0xce, 0x48, 0xe4, + 0x8a, 0x28, 0x34, 0x26, 0x25, 0x18, 0x15, 0x0b, 0xf2, 0x55, 0x98, 0x14, 0x76, 0xe5, 0x1a, 0xfb, + 0xae, 0xc2, 0xef, 0xdb, 0xb8, 0x3a, 0x37, 0xdc, 0x30, 0xe5, 0x74, 0x91, 0x03, 0x34, 0x06, 0xf4, + 0x31, 0xc1, 0x8a, 0x7c, 0x15, 0xea, 0xca, 0x5f, 0xa2, 0xb4, 0x23, 0xd3, 0x77, 0xa8, 0x9c, 0x2c, + 0x48, 0xef, 0xf6, 0x2d, 0x8f, 0x76, 0xa9, 0x13, 0xf8, 0xad, 0xb3, 0xca, 0x9b, 0xa4, 0xb0, 0x3e, + 0x46, 0xdc, 0xc8, 0xf6, 0xa0, 0x13, 0x54, 0x78, 0xf0, 0x3e, 0x39, 0x64, 0xc8, 0x1e, 0xc1, 0x03, + 0xfa, 0x0d, 0x98, 0x09, 0xbd, 0x94, 0xd2, 0xd1, 0x25, 0x7c, 0x7a, 0x9f, 0x67, 0xc5, 0x57, 0x92, + 0xa8, 0x07, 0x87, 0x73, 0x9f, 0xc8, 0x70, 0x75, 0x45, 0x04, 0x98, 0x66, 0x46, 0xde, 0x81, 0x69, + 0x8f, 0xea, 0xa6, 0xe5, 0x50, 0xdf, 0xdf, 0xf0, 0xdc, 0xed, 0xfc, 0x46, 0x36, 0xe7, 0x22, 0xba, + 0x0e, 0x26, 0x38, 0x63, 0x4a, 0x12, 0xb9, 0x07, 0x53, 0xb6, 0xb5, 0x4f, 0x23, 0xd1, 0x8d, 0xb1, + 0x88, 0x3e, 0x7b, 0x74, 0x38, 0x37, 0xb5, 0x1a, 0x67, 0x8c, 0x49, 0x39, 0xcc, 0x32, 0xea, 0xb9, + 0x5e, 0xa0, 0x2c, 0xf1, 0x1f, 0x7b, 0xa8, 0x25, 0xbe, 0xe1, 0x7a, 0x41, 0xd4, 0x09, 0xd9, 0x93, + 0x8f, 0xa2, 0xb8, 0xf6, 0x8f, 0x2b, 0x30, 0xb8, 0x5e, 0x4d, 0x6a, 0x5c, 0x61, 0xdc, 0x1a, 0x97, + 0xd6, 0x06, 0x31, 0x7f, 0xbd, 0x28, 0x8b, 0x8d, 0x41, 0x23, 0x32, 0xb4, 0xba, 0x34, 0x6e, 0xad, + 0x7e, 0x6c, 0x06, 0x9e, 0x41, 0xf5, 0x9f, 0xf8, 0xe0, 0xd4, 0xbf, 0x7a, 0x3a, 0xea, 0xaf, 0x7d, + 0xbb, 0x0c, 0xd3, 0x4b, 0x3a, 0xed, 0xba, 0xce, 0xfb, 0xba, 0x2c, 0x0a, 0x8f, 0x85, 0xcb, 0xe2, + 0x19, 0xa8, 0x79, 0xb4, 0x67, 0x5b, 0x86, 0x2e, 0x96, 0x07, 0x72, 0x37, 0x05, 0x25, 0x0c, 0x43, + 0xec, 0x10, 0x57, 0x55, 0xe9, 0xb1, 0x74, 0x55, 0x95, 0x3f, 0x78, 0x57, 0x95, 0xf6, 0xff, 0x0a, + 0x50, 0x5b, 0xa2, 0x4c, 0x3d, 0xbc, 0x03, 0x72, 0x0f, 0x1a, 0xf4, 0xbe, 0x6e, 0x04, 0xf6, 0x01, + 0x5b, 0x50, 0xca, 0x6f, 0xbf, 0x34, 0xba, 0x11, 0x1e, 0xf1, 0x12, 0xfb, 0xd0, 0x31, 0x00, 0xc6, + 0x25, 0x31, 0xc1, 0x7a, 0xb4, 0x92, 0x95, 0x0b, 0x90, 0xd1, 0x05, 0xc7, 0x56, 0xc5, 0x42, 0x70, + 0x0c, 0x80, 0x71, 0x49, 0xda, 0x4f, 0x15, 0x81, 0xaf, 0x0e, 0xc8, 0x15, 0x28, 0x33, 0xcb, 0x37, + 0xed, 0x1f, 0xe6, 0x83, 0x05, 0xc7, 0x90, 0x8b, 0x50, 0x0c, 0x5c, 0x39, 0xda, 0x82, 0xc4, 0x17, + 0x37, 0x5d, 0x2c, 0x06, 0x2e, 0x79, 0x07, 0xc0, 0x70, 0x1d, 0xd3, 0x52, 0x7b, 0xac, 0xf9, 0xbe, + 0xeb, 0xb2, 0xeb, 0xdd, 0xd3, 0x3d, 0x73, 0x31, 0xe4, 0x28, 0x7c, 0x35, 0xd1, 0x33, 0xc6, 0xa4, + 0x91, 0x57, 0x60, 0xc2, 0x75, 0x96, 0xfb, 0xb6, 0x2d, 0x37, 0xe0, 0x3f, 0xcd, 0xd6, 0xa9, 0xeb, + 0x1c, 0xf2, 0xe0, 0x70, 0xee, 0x29, 0xb1, 0xda, 0x63, 0x4f, 0x77, 0x3c, 0x2b, 0xb0, 0x9c, 0x4e, + 0xe8, 0xba, 0x90, 0xc5, 0xb4, 0xef, 0x16, 0x20, 0xfe, 0x65, 0xc8, 0x4b, 0x30, 0x65, 0xb8, 0x8e, + 0x6f, 0xf9, 0x01, 0x75, 0x82, 0xa6, 0xb1, 0xc7, 0xdb, 0xa4, 0xd6, 0x7a, 0x42, 0xbe, 0xf3, 0xd4, + 0x62, 0x1c, 0x89, 0x49, 0x5a, 0xa2, 0x43, 0xc3, 0xa4, 0x66, 0xbf, 0x27, 0x3c, 0x1f, 0xf2, 0x4b, + 0x9e, 0x74, 0x21, 0xce, 0xbf, 0xd9, 0x52, 0xc4, 0x06, 0xe3, 0x3c, 0xb5, 0xbf, 0x5e, 0x80, 0xc6, + 0xb2, 0x75, 0x9f, 0x9a, 0xd2, 0xbb, 0x82, 0x30, 0x61, 0x53, 0xa7, 0x13, 0xec, 0x8e, 0xe8, 0x90, + 0x10, 0x1e, 0x47, 0xce, 0x01, 0x25, 0x27, 0xb2, 0x00, 0x75, 0xb1, 0x44, 0xb5, 0x9c, 0x0e, 0x7f, + 0x89, 0x5a, 0x34, 0x31, 0xb7, 0x15, 0x02, 0x23, 0x1a, 0xed, 0x5d, 0x38, 0x3b, 0xf0, 0xd9, 0xc8, + 0x2e, 0x94, 0x03, 0xbd, 0xa3, 0x6c, 0x80, 0xe5, 0x91, 0x15, 0x62, 0x53, 0xef, 0xc4, 0x94, 0x21, + 0x54, 0xce, 0x4d, 0x9d, 0x19, 0xf2, 0x4c, 0x82, 0xf6, 0xeb, 0x65, 0x98, 0xb8, 0xde, 0x6e, 0x37, + 0x37, 0x56, 0xc8, 0xf3, 0xd0, 0x90, 0x3b, 0xba, 0xb7, 0xa2, 0x0d, 0x8f, 0x70, 0x43, 0xbf, 0x1d, + 0xa1, 0x30, 0x4e, 0xc7, 0x16, 0x1d, 0x1e, 0xd5, 0xed, 0xae, 0xd4, 0xf0, 0xd0, 0xde, 0x41, 0x06, + 0x44, 0x81, 0x23, 0x3a, 0x4c, 0xf7, 0x7d, 0xea, 0x39, 0x7a, 0x97, 0x0a, 0x07, 0x84, 0xd4, 0xf5, + 0x63, 0xba, 0x28, 0xf8, 0xa4, 0xb8, 0x95, 0x60, 0x80, 0x29, 0x86, 0xe4, 0x45, 0xa8, 0xe9, 0xfd, + 0x60, 0x97, 0x2f, 0x35, 0x85, 0x42, 0x5f, 0xe2, 0x1b, 0xde, 0x12, 0xf6, 0xe0, 0x70, 0x6e, 0xf2, + 0x26, 0xb6, 0x9e, 0x57, 0xcf, 0x18, 0x52, 0xb3, 0xca, 0x29, 0xa7, 0x87, 0xac, 0x5c, 0xe5, 0xc4, + 0x95, 0xdb, 0x48, 0x30, 0xc0, 0x14, 0x43, 0xf2, 0x26, 0x4c, 0xee, 0xd1, 0x83, 0x40, 0xdf, 0x96, + 0x02, 0x26, 0x4e, 0x22, 0xe0, 0x0c, 0x5b, 0xa8, 0xdc, 0x8c, 0x15, 0xc7, 0x04, 0x33, 0xe2, 0xc3, + 0xf9, 0x3d, 0xea, 0x6d, 0x53, 0xcf, 0x95, 0xdb, 0xc7, 0x52, 0x48, 0xf5, 0x24, 0x42, 0x66, 0x8f, + 0x0e, 0xe7, 0xce, 0xdf, 0xcc, 0x60, 0x83, 0x99, 0xcc, 0xb5, 0xff, 0x53, 0x84, 0x99, 0xeb, 0x22, + 0x0a, 0xc9, 0xf5, 0x84, 0xb5, 0x44, 0x9e, 0x82, 0x92, 0xd7, 0xeb, 0x73, 0xcd, 0x29, 0x09, 0xa7, + 0x18, 0x6e, 0x6c, 0x21, 0x83, 0x91, 0x37, 0xa0, 0xa6, 0x82, 0x80, 0x46, 0xec, 0xdb, 0x7c, 0xe2, + 0x56, 0x4f, 0x18, 0x72, 0x63, 0xeb, 0xd9, 0xae, 0xdf, 0x69, 0x5b, 0xef, 0x50, 0xe9, 0x39, 0xe1, + 0xeb, 0xd9, 0x35, 0x01, 0x42, 0x85, 0x63, 0x96, 0xc0, 0x1e, 0x3d, 0x10, 0x7e, 0x83, 0x72, 0x64, + 0x09, 0xdc, 0x94, 0x30, 0x0c, 0xb1, 0x64, 0x4e, 0x6d, 0x77, 0x33, 0x2d, 0x28, 0x0b, 0x7f, 0xe2, + 0x6d, 0x06, 0x90, 0x3b, 0xdf, 0x6c, 0xdc, 0x90, 0x0e, 0xbe, 0x89, 0xd1, 0xc7, 0x8d, 0xa4, 0x43, + 0x90, 0x7c, 0x16, 0xea, 0x9c, 0x79, 0xcb, 0x76, 0xb7, 0xf9, 0x87, 0xab, 0x0b, 0xef, 0xd7, 0x6d, + 0x05, 0xc4, 0x08, 0xaf, 0xfd, 0x71, 0x11, 0x2e, 0x5c, 0xa7, 0x81, 0xb0, 0xc4, 0x96, 0x68, 0xcf, + 0x76, 0x0f, 0xd8, 0x1a, 0x00, 0xe9, 0x5d, 0xf2, 0x2a, 0x80, 0xe5, 0x6f, 0xb7, 0xf7, 0x8d, 0xcd, + 0xc8, 0x97, 0x70, 0x45, 0x76, 0x49, 0x58, 0x69, 0xb7, 0x24, 0xe6, 0x41, 0xe2, 0x09, 0x63, 0x65, + 0x22, 0x27, 0x42, 0xf1, 0x21, 0x4e, 0x84, 0x36, 0x40, 0x2f, 0x5a, 0x49, 0x94, 0x38, 0xe5, 0xe7, + 0x94, 0x98, 0x93, 0x2c, 0x22, 0x62, 0x6c, 0xf2, 0xd8, 0xf6, 0x0e, 0x9c, 0x31, 0xe9, 0x8e, 0xde, + 0xb7, 0x83, 0x70, 0xf5, 0x23, 0x3b, 0xf1, 0xf1, 0x17, 0x50, 0x61, 0xb8, 0xcf, 0x52, 0x8a, 0x13, + 0x0e, 0xf0, 0xd6, 0x7e, 0xa3, 0x04, 0x17, 0xaf, 0xd3, 0x20, 0xf4, 0x4d, 0xca, 0xd1, 0xb1, 0xdd, + 0xa3, 0x06, 0xfb, 0x0a, 0xef, 0x15, 0x60, 0xc2, 0xd6, 0xb7, 0xa9, 0xcd, 0x86, 0x70, 0xf6, 0x36, + 0x6f, 0x8d, 0x3c, 0x84, 0x0f, 0x97, 0x32, 0xbf, 0xca, 0x25, 0x88, 0x88, 0xae, 0x69, 0x59, 0xf9, + 0x09, 0x01, 0x44, 0x29, 0x9e, 0x0d, 0xea, 0x86, 0xdd, 0xf7, 0x03, 0xb1, 0x1a, 0x95, 0x36, 0x70, + 0x38, 0xa8, 0x2f, 0x46, 0x28, 0x8c, 0xd3, 0x91, 0xab, 0x00, 0x86, 0x6d, 0x51, 0x27, 0xe0, 0xa5, + 0x44, 0xbf, 0x22, 0xea, 0xfb, 0x2e, 0x86, 0x18, 0x8c, 0x51, 0x31, 0x51, 0x5d, 0xd7, 0xb1, 0x02, + 0x57, 0x88, 0x2a, 0x27, 0x45, 0xad, 0x45, 0x28, 0x8c, 0xd3, 0xf1, 0x62, 0x34, 0xf0, 0x2c, 0xc3, + 0xe7, 0xc5, 0x2a, 0xa9, 0x62, 0x11, 0x0a, 0xe3, 0x74, 0x17, 0xbf, 0x08, 0x8d, 0xd8, 0xfb, 0x9f, + 0x28, 0x6a, 0xe5, 0xef, 0xd5, 0xe1, 0x72, 0xa2, 0x59, 0x03, 0x3d, 0xa0, 0x3b, 0x7d, 0xbb, 0x4d, + 0x03, 0xf5, 0x01, 0x47, 0x9c, 0x0b, 0xff, 0x4a, 0xf4, 0xdd, 0x45, 0x20, 0x9f, 0x31, 0x9e, 0xef, + 0x3e, 0x50, 0xc1, 0x63, 0x7d, 0xfb, 0x05, 0xa8, 0x3b, 0x7a, 0xe0, 0xf3, 0x8e, 0x2b, 0xfb, 0x68, + 0x68, 0x8b, 0xdc, 0x52, 0x08, 0x8c, 0x68, 0xc8, 0x06, 0x9c, 0x97, 0x4d, 0x7c, 0xed, 0x7e, 0xcf, + 0xf5, 0x02, 0xea, 0x89, 0xb2, 0x72, 0x3a, 0x95, 0x65, 0xcf, 0xaf, 0x65, 0xd0, 0x60, 0x66, 0x49, + 0xb2, 0x06, 0xe7, 0x0c, 0x11, 0xdc, 0x44, 0x6d, 0x57, 0x37, 0x15, 0x43, 0xe1, 0x0a, 0x0e, 0x97, + 0x73, 0x8b, 0x83, 0x24, 0x98, 0x55, 0x2e, 0xad, 0xcd, 0x13, 0x23, 0x69, 0x73, 0x75, 0x14, 0x6d, + 0xae, 0x8d, 0xa6, 0xcd, 0xf5, 0xe3, 0x69, 0x33, 0x6b, 0x79, 0x1e, 0x47, 0xe3, 0x31, 0xf3, 0x44, + 0xcc, 0xb0, 0xb1, 0xd8, 0xb9, 0xb0, 0xe5, 0xdb, 0x19, 0x34, 0x98, 0x59, 0x92, 0x6c, 0xc3, 0x45, + 0x01, 0xbf, 0xe6, 0x18, 0xde, 0x41, 0x4f, 0x46, 0xdf, 0x2a, 0xbe, 0x8d, 0x84, 0x2f, 0xfe, 0x62, + 0x7b, 0x28, 0x25, 0x3e, 0x84, 0x8b, 0x34, 0xf8, 0x77, 0xac, 0xce, 0x9a, 0xde, 0xe3, 0x6c, 0x45, + 0x24, 0x5d, 0xdc, 0xe0, 0x8f, 0x90, 0x98, 0xa4, 0x25, 0x4d, 0x98, 0xe9, 0xed, 0x1b, 0xec, 0xef, + 0xca, 0xce, 0x2d, 0x4a, 0x4d, 0x6a, 0xf2, 0xfd, 0xe8, 0x7a, 0xeb, 0x49, 0xe5, 0x91, 0xda, 0x48, + 0xa2, 0x31, 0x4d, 0x4f, 0x5e, 0x84, 0x49, 0x3f, 0xd0, 0xbd, 0x40, 0x3a, 0xaf, 0x67, 0xa7, 0x45, + 0xa4, 0xa1, 0xf2, 0xed, 0xb6, 0x63, 0x38, 0x4c, 0x50, 0x66, 0xce, 0x17, 0x33, 0x8f, 0x6e, 0xbe, + 0xc8, 0x33, 0x5a, 0xfd, 0x8b, 0x22, 0x5c, 0xb9, 0x4e, 0x83, 0x35, 0xd7, 0x91, 0xdb, 0x07, 0x59, + 0xd3, 0xfe, 0xb1, 0x3c, 0xff, 0xc9, 0x49, 0xbb, 0x38, 0xd6, 0x49, 0xbb, 0x34, 0xa6, 0x49, 0xbb, + 0xfc, 0x08, 0x27, 0xed, 0x7f, 0x52, 0x84, 0x27, 0x13, 0x2d, 0xb9, 0xe1, 0x9a, 0x6a, 0xc0, 0xff, + 0xa8, 0x01, 0x8f, 0xd1, 0x80, 0xbf, 0x5b, 0x82, 0x4f, 0x5c, 0xa7, 0x22, 0xa0, 0xd6, 0xe9, 0x6c, + 0x58, 0x3d, 0x6a, 0x5b, 0x0e, 0x8d, 0xb1, 0x25, 0x7f, 0xa9, 0x00, 0x93, 0xc2, 0x96, 0x94, 0xa1, + 0xb0, 0x79, 0xdd, 0x80, 0x19, 0x7b, 0xce, 0x51, 0x07, 0x17, 0x16, 0xac, 0x9c, 0x3d, 0x12, 0x72, + 0x3f, 0xb2, 0x62, 0x8f, 0xf3, 0x3d, 0x7f, 0xba, 0x04, 0x4f, 0xb1, 0xef, 0xa9, 0x02, 0x64, 0x3e, + 0x5a, 0x4a, 0x7c, 0x00, 0x1f, 0xe1, 0x57, 0x2b, 0x70, 0xee, 0x3a, 0x0d, 0x06, 0x46, 0xa4, 0x3f, + 0xa5, 0xcd, 0xbf, 0x06, 0xe7, 0xa2, 0x80, 0xad, 0x76, 0xe0, 0x7a, 0xc2, 0x02, 0x4f, 0x59, 0x8c, + 0xed, 0x41, 0x12, 0xcc, 0x2a, 0x47, 0xbe, 0x0a, 0x4f, 0xfa, 0x62, 0xb8, 0x12, 0x3e, 0x0a, 0x61, + 0x50, 0xc7, 0x4e, 0x67, 0xa8, 0x8d, 0xf6, 0x27, 0xdb, 0xd9, 0x64, 0x38, 0xac, 0x3c, 0xf9, 0x26, + 0x4c, 0xf6, 0xe4, 0x10, 0xc8, 0xbe, 0x59, 0xee, 0x00, 0x82, 0x8d, 0x18, 0xb3, 0x68, 0x8c, 0x8b, + 0x43, 0x31, 0x21, 0x30, 0x53, 0x53, 0x6b, 0x8f, 0x50, 0x53, 0xff, 0xb0, 0x08, 0xd5, 0xeb, 0x9e, + 0xdb, 0xef, 0xb5, 0x0e, 0x48, 0x07, 0x26, 0xee, 0x09, 0x4f, 0x6d, 0x21, 0x67, 0xd0, 0xb3, 0x70, + 0xc6, 0x46, 0x8b, 0x18, 0xe9, 0xb9, 0x95, 0xec, 0x99, 0x12, 0xef, 0xd1, 0x03, 0x6a, 0x4a, 0x67, + 0x6a, 0xa8, 0xc4, 0x37, 0x19, 0x10, 0x05, 0x8e, 0x74, 0x61, 0x46, 0xb7, 0x6d, 0xf7, 0x1e, 0x35, + 0x57, 0xf5, 0x80, 0xef, 0x57, 0x49, 0xff, 0xe2, 0x49, 0x5d, 0x33, 0x7c, 0x13, 0xb2, 0x99, 0x64, + 0x85, 0x69, 0xde, 0xe4, 0x6d, 0xa8, 0xfa, 0x81, 0xeb, 0xa9, 0xa5, 0x51, 0xae, 0x80, 0xf4, 0xd6, + 0xeb, 0x6d, 0xc1, 0x4a, 0xf8, 0xad, 0xe4, 0x03, 0x2a, 0x01, 0xda, 0x2f, 0x15, 0x00, 0x6e, 0x6c, + 0x6e, 0x6e, 0x48, 0x17, 0x9b, 0x09, 0x65, 0xbd, 0x1f, 0x7a, 0xac, 0x47, 0xf7, 0x0c, 0x27, 0x02, + 0xfe, 0x64, 0x78, 0x47, 0x3f, 0xd8, 0x45, 0xce, 0x9d, 0x7c, 0x06, 0xaa, 0x72, 0x59, 0x2b, 0x9b, + 0x3d, 0xdc, 0x07, 0x95, 0x33, 0x31, 0x2a, 0xbc, 0xf6, 0xcb, 0x25, 0x80, 0x15, 0xd3, 0xa6, 0x6d, + 0x15, 0xa7, 0x5e, 0x0f, 0x76, 0x3d, 0xea, 0xef, 0xba, 0xb6, 0x39, 0xa2, 0x5b, 0x9d, 0xfb, 0xbd, + 0x36, 0x15, 0x13, 0x8c, 0xf8, 0x11, 0x93, 0xd9, 0xfb, 0xb4, 0xa7, 0x62, 0x00, 0x47, 0x74, 0x24, + 0x9e, 0x11, 0x6b, 0x83, 0x88, 0x0f, 0x26, 0xb8, 0x12, 0x1d, 0x1a, 0x96, 0x63, 0x88, 0x0e, 0xd2, + 0x3a, 0x18, 0x51, 0x91, 0xf8, 0x4e, 0xc4, 0x4a, 0xc4, 0x06, 0xe3, 0x3c, 0x99, 0xbe, 0x5a, 0x8e, + 0x15, 0x88, 0x36, 0x5b, 0xa2, 0xb6, 0x7e, 0x30, 0x62, 0xe4, 0x21, 0xd7, 0xd7, 0x95, 0x24, 0x2b, + 0x4c, 0xf3, 0xd6, 0xfe, 0x72, 0x01, 0x66, 0xf8, 0xeb, 0xb1, 0xb7, 0x16, 0x16, 0x15, 0xb9, 0x07, + 0x0d, 0x23, 0x0a, 0x29, 0xca, 0xbd, 0x73, 0x16, 0x0b, 0x4f, 0x12, 0xef, 0x1e, 0x03, 0x60, 0x5c, + 0x92, 0xf6, 0x07, 0x45, 0xb8, 0x90, 0xaa, 0x8c, 0x54, 0x2a, 0xf2, 0xe7, 0x07, 0x8e, 0x5e, 0xfe, + 0xd9, 0xe3, 0xb5, 0x87, 0x38, 0xb9, 0xb7, 0x46, 0x03, 0x3d, 0x5a, 0xd7, 0x47, 0xb0, 0xd8, 0x79, + 0xcb, 0x3e, 0x94, 0x7d, 0x36, 0x56, 0x8b, 0xd7, 0x6d, 0x8f, 0xfc, 0xba, 0xd9, 0x2f, 0xc0, 0x47, + 0xee, 0x70, 0x97, 0x85, 0x8f, 0xd8, 0x5c, 0x1c, 0x79, 0x17, 0x26, 0xfc, 0x40, 0x0f, 0xfa, 0x6a, + 0x58, 0xda, 0x1a, 0xb7, 0x60, 0xce, 0x3c, 0x1a, 0x43, 0xc5, 0x33, 0x4a, 0xa1, 0xda, 0x1f, 0x14, + 0xe0, 0x62, 0x76, 0xc1, 0x55, 0xcb, 0x0f, 0xc8, 0x9f, 0x1b, 0x68, 0xf6, 0x63, 0xaa, 0x21, 0x2b, + 0xcd, 0x1b, 0x3d, 0x0c, 0x39, 0x57, 0x90, 0x58, 0x93, 0x07, 0x50, 0xb1, 0x02, 0xda, 0x55, 0x1e, + 0xb1, 0xf5, 0x31, 0xbf, 0x7a, 0xcc, 0xac, 0x61, 0x52, 0x50, 0x08, 0xd3, 0xfe, 0xd6, 0xd0, 0x57, + 0xe6, 0x53, 0xe7, 0x5f, 0x18, 0x0c, 0x5b, 0x5d, 0xcf, 0x1f, 0xb6, 0x9a, 0xaa, 0xd8, 0xd0, 0xe8, + 0xd5, 0x1f, 0x96, 0xe0, 0xd2, 0xc3, 0x3e, 0x24, 0x9b, 0x5d, 0xa5, 0xbe, 0xe4, 0x9d, 0x5d, 0x1f, + 0xae, 0x19, 0xe4, 0x2a, 0x54, 0x7a, 0xbb, 0xba, 0xaf, 0x4c, 0xc4, 0x4b, 0x61, 0xb0, 0x12, 0x03, + 0x3e, 0x60, 0x43, 0x18, 0x37, 0x2d, 0xf9, 0x23, 0x0a, 0x52, 0x36, 0x39, 0x74, 0xa9, 0xef, 0x47, + 0x4e, 0xc5, 0x70, 0x72, 0x58, 0x13, 0x60, 0x54, 0x78, 0x12, 0xc0, 0x84, 0x70, 0xfa, 0xc8, 0xe1, + 0x6d, 0xbc, 0xeb, 0xc0, 0xf0, 0xa5, 0xe4, 0x0a, 0x50, 0xca, 0x22, 0xf3, 0x32, 0x92, 0xb2, 0x92, + 0x38, 0xc2, 0x5a, 0xce, 0xb0, 0x96, 0x39, 0x1d, 0x79, 0x0d, 0x88, 0xbb, 0xcd, 0xdd, 0x5c, 0xa6, + 0xdc, 0xd1, 0x62, 0x23, 0xe2, 0x04, 0xdf, 0xc5, 0x0a, 0x0f, 0xc0, 0xae, 0x0f, 0x50, 0x60, 0x46, + 0x29, 0xed, 0x5f, 0xd7, 0xe0, 0x42, 0xb6, 0x3e, 0xb0, 0x76, 0xdb, 0xa7, 0x1e, 0x1f, 0x6d, 0x53, + 0x27, 0xf2, 0x6f, 0x0b, 0x30, 0x2a, 0xfc, 0x87, 0x3a, 0x6c, 0xe5, 0x57, 0x0b, 0xf0, 0x94, 0x27, + 0xbd, 0xb6, 0xa7, 0x11, 0xba, 0xf2, 0x89, 0xa3, 0xc3, 0xb9, 0xa7, 0x70, 0x98, 0x40, 0x1c, 0x5e, + 0x17, 0xf2, 0x2b, 0x05, 0x98, 0x95, 0x4e, 0xd8, 0xc5, 0x53, 0x38, 0xa4, 0xc6, 0x23, 0xba, 0xd7, + 0x86, 0xc8, 0xc3, 0xa1, 0x35, 0x21, 0xdf, 0x84, 0x46, 0x8f, 0xe9, 0x85, 0x1f, 0x50, 0xc7, 0x50, + 0x61, 0x66, 0xa3, 0xf7, 0xa4, 0x8d, 0x88, 0x57, 0x78, 0x48, 0x85, 0xcf, 0xd8, 0x31, 0x04, 0xc6, + 0x25, 0x3e, 0xe6, 0xa7, 0xd2, 0x9e, 0x81, 0x9a, 0x4f, 0x83, 0xc0, 0x72, 0x3a, 0x62, 0xf5, 0x53, + 0x17, 0x7d, 0xa5, 0x2d, 0x61, 0x18, 0x62, 0xc9, 0x67, 0xa1, 0xce, 0x9d, 0xc0, 0x4d, 0xaf, 0xe3, + 0xcf, 0xd6, 0x79, 0x5c, 0xf3, 0x94, 0x88, 0xcb, 0x90, 0x40, 0x8c, 0xf0, 0xe4, 0xf3, 0x30, 0xb9, + 0xcd, 0xbb, 0xaf, 0x74, 0x64, 0x09, 0x4f, 0x3c, 0xb7, 0x1d, 0x5b, 0x31, 0x38, 0x26, 0xa8, 0xc8, + 0x55, 0x00, 0x1a, 0x7a, 0xca, 0xe5, 0x59, 0xf5, 0xd0, 0x22, 0x89, 0x7c, 0xe8, 0x18, 0xa3, 0x22, + 0x9f, 0x80, 0x52, 0x60, 0xfb, 0xdc, 0x77, 0x5e, 0x8b, 0x16, 0xc4, 0x9b, 0xab, 0x6d, 0x64, 0x70, + 0xed, 0x8f, 0x0b, 0x30, 0x93, 0x3a, 0x18, 0xc1, 0x8a, 0xf4, 0x3d, 0x5b, 0x0e, 0x23, 0x61, 0x91, + 0x2d, 0x5c, 0x45, 0x06, 0x27, 0x6f, 0xc9, 0x45, 0x42, 0x31, 0x67, 0xfa, 0x8a, 0x5b, 0x7a, 0xe0, + 0xb3, 0x55, 0xc1, 0xc0, 0xfa, 0x80, 0x3b, 0xde, 0xa3, 0xfa, 0xc8, 0x79, 0x20, 0xe6, 0x78, 0x8f, + 0x70, 0x98, 0xa0, 0x64, 0x0d, 0x14, 0xd8, 0xfe, 0x35, 0x47, 0xdf, 0xb6, 0xa9, 0xc9, 0x47, 0x83, + 0x58, 0x03, 0x6d, 0xae, 0xb6, 0x25, 0x06, 0x63, 0x54, 0xda, 0x6f, 0x96, 0x62, 0x2d, 0x20, 0xd7, + 0x19, 0xef, 0xd3, 0x02, 0x9f, 0x62, 0x13, 0x68, 0x38, 0xb9, 0xd7, 0xe3, 0xf3, 0x1f, 0x9f, 0x8c, + 0x25, 0x96, 0x3c, 0x0b, 0x35, 0xc3, 0x75, 0xfc, 0x7e, 0x97, 0x7a, 0xf2, 0x25, 0x42, 0x53, 0x66, + 0x51, 0xc2, 0x31, 0xa4, 0x20, 0x5f, 0x86, 0x69, 0x53, 0x84, 0xbc, 0xbd, 0x25, 0xd3, 0x91, 0x94, + 0x93, 0x1b, 0x1e, 0x32, 0x20, 0x4e, 0x7a, 0x44, 0xa6, 0xcc, 0xf8, 0x23, 0x79, 0x09, 0x66, 0x76, + 0x2c, 0x3b, 0xa0, 0xde, 0x5b, 0x7e, 0x9f, 0xdb, 0xa6, 0x22, 0x23, 0x45, 0x5d, 0x04, 0x90, 0x2c, + 0x73, 0x54, 0x5b, 0x62, 0x70, 0x7a, 0x27, 0xf1, 0x4c, 0xee, 0x08, 0x25, 0x99, 0xc8, 0x79, 0x44, + 0x77, 0x73, 0xb5, 0x2d, 0x02, 0x33, 0x94, 0x7a, 0x85, 0xba, 0x52, 0x7d, 0x44, 0xba, 0xa2, 0xfd, + 0xcb, 0x12, 0x34, 0x5e, 0x73, 0xb7, 0x3f, 0x24, 0x01, 0xa3, 0xd9, 0xf3, 0x69, 0xf1, 0x03, 0x9c, + 0x4f, 0xb7, 0xe0, 0xc9, 0x20, 0xb0, 0x65, 0xe6, 0x9c, 0xe6, 0x4e, 0x40, 0xbd, 0x65, 0xcb, 0xb1, + 0xfc, 0x5d, 0x6a, 0xca, 0x7d, 0xf9, 0x8f, 0x1f, 0x1d, 0xce, 0x3d, 0xb9, 0xb9, 0xb9, 0x9a, 0x45, + 0x82, 0xc3, 0xca, 0xf2, 0xf1, 0x4d, 0x1c, 0xcd, 0xe3, 0xc7, 0x51, 0xe4, 0x76, 0xbd, 0x18, 0xdf, + 0x62, 0x70, 0x4c, 0x50, 0x69, 0xff, 0xa1, 0x08, 0xf5, 0x30, 0x83, 0x02, 0x79, 0x1a, 0xaa, 0xdb, + 0x9e, 0xbb, 0x47, 0x3d, 0x11, 0xe6, 0x20, 0x8f, 0x92, 0xb4, 0x04, 0x08, 0x15, 0x8e, 0x7c, 0x12, + 0x2a, 0x81, 0xdb, 0xb3, 0x8c, 0xb4, 0x1f, 0x72, 0x93, 0x01, 0x51, 0xe0, 0x78, 0x8f, 0xe5, 0x11, + 0x49, 0xfc, 0xad, 0x6a, 0xb1, 0x1e, 0xcb, 0xa1, 0x28, 0xb1, 0xaa, 0x23, 0x94, 0xc7, 0xde, 0x11, + 0x3e, 0x15, 0xda, 0xaa, 0x95, 0xe4, 0x90, 0x91, 0xb2, 0x2e, 0xdf, 0x84, 0xb2, 0xaf, 0xfb, 0xb6, + 0xec, 0x8a, 0x39, 0x4e, 0xe2, 0x37, 0xdb, 0xab, 0xf2, 0x24, 0x7e, 0xb3, 0xbd, 0x8a, 0x9c, 0xa9, + 0xf6, 0x0f, 0x4b, 0xd0, 0x10, 0xed, 0x2b, 0x86, 0xb9, 0x71, 0xb6, 0xf0, 0x2b, 0x22, 0x3c, 0x93, + 0x8d, 0x64, 0xdc, 0x8b, 0x27, 0x07, 0xbc, 0x30, 0x3d, 0xcd, 0x62, 0x1c, 0x19, 0xee, 0xd8, 0x46, + 0xa0, 0x3f, 0xd9, 0x4d, 0xcf, 0xe6, 0x34, 0x9e, 0x05, 0x44, 0x1a, 0xe3, 0x32, 0x08, 0x2b, 0x9c, + 0xd3, 0x6e, 0xc6, 0x70, 0x98, 0xa0, 0xd4, 0xfe, 0x47, 0x11, 0xea, 0xab, 0xd6, 0x0e, 0x35, 0x0e, + 0x0c, 0x9b, 0x92, 0x6f, 0xc0, 0x45, 0x93, 0xda, 0x94, 0x4d, 0xed, 0xd7, 0x3d, 0xdd, 0xa0, 0x1b, + 0xd4, 0xb3, 0x78, 0x16, 0x23, 0x9e, 0x25, 0x4b, 0xc4, 0xc6, 0x5d, 0x3e, 0x3a, 0x9c, 0xbb, 0xb8, + 0x34, 0x94, 0x0a, 0x1f, 0xc2, 0x81, 0xac, 0xc0, 0xa4, 0x49, 0x7d, 0xcb, 0xa3, 0xe6, 0x46, 0x6c, + 0xe5, 0xf6, 0xb4, 0xaa, 0xe7, 0x52, 0x0c, 0xf7, 0xe0, 0x70, 0x6e, 0x4a, 0xf9, 0x8f, 0xc5, 0x12, + 0x2e, 0x51, 0x94, 0x0d, 0x2d, 0x3d, 0xbd, 0xef, 0xd3, 0x8c, 0x7a, 0x96, 0x78, 0x3d, 0xf9, 0xd0, + 0xb2, 0x91, 0x4d, 0x82, 0xc3, 0xca, 0x92, 0x6d, 0x98, 0xe5, 0xf5, 0xcf, 0xe2, 0x5b, 0xe6, 0x7c, + 0x3f, 0x75, 0x74, 0x38, 0xa7, 0x2d, 0xd1, 0x9e, 0x47, 0x0d, 0x3d, 0xa0, 0xe6, 0xd2, 0x10, 0x6a, + 0x1c, 0xca, 0x47, 0xab, 0x40, 0x69, 0xd5, 0xed, 0x68, 0xdf, 0x2e, 0x41, 0x98, 0x56, 0x8b, 0xfc, + 0x5c, 0x01, 0x1a, 0xba, 0xe3, 0xb8, 0x81, 0x4c, 0x59, 0x25, 0x42, 0xaf, 0x30, 0x77, 0xf6, 0xae, + 0xf9, 0x66, 0xc4, 0x54, 0x44, 0xdc, 0x84, 0x01, 0x1d, 0x31, 0x0c, 0xc6, 0x65, 0x93, 0x7e, 0x2a, + 0x10, 0x68, 0x2d, 0x7f, 0x2d, 0x8e, 0x11, 0xf2, 0x73, 0xf1, 0x2b, 0x70, 0x26, 0x5d, 0xd9, 0x93, + 0x04, 0x1b, 0xe4, 0x89, 0x53, 0xf8, 0x7e, 0x11, 0x20, 0xda, 0x5a, 0x3f, 0x05, 0x5f, 0x9e, 0x95, + 0xf0, 0xe5, 0x8d, 0x7e, 0x60, 0x3f, 0xaa, 0xf4, 0x50, 0xff, 0xdd, 0xdd, 0x94, 0xff, 0x6e, 0x65, + 0x1c, 0xc2, 0x1e, 0xee, 0xb3, 0xdb, 0x86, 0x73, 0x11, 0x6d, 0x34, 0xba, 0xdc, 0x4c, 0xf5, 0x7e, + 0x61, 0x00, 0x7f, 0x7a, 0x48, 0xef, 0x9f, 0x89, 0xc5, 0x3a, 0x0c, 0xf6, 0x7f, 0xed, 0x3b, 0x45, + 0x38, 0x13, 0x17, 0xc2, 0x8f, 0xed, 0x7e, 0x01, 0xa6, 0x3c, 0xaa, 0x9b, 0x2d, 0x3d, 0x30, 0x76, + 0x79, 0x54, 0x6d, 0x81, 0x87, 0xc1, 0xf2, 0xc3, 0x41, 0x18, 0x47, 0x60, 0x92, 0x8e, 0xe8, 0xd0, + 0x60, 0x00, 0x99, 0x6d, 0x20, 0x4f, 0x04, 0x3f, 0x46, 0x6c, 0x30, 0xce, 0x93, 0xb8, 0x50, 0x67, + 0x2b, 0x56, 0x61, 0xb1, 0xe4, 0x4d, 0xd0, 0x84, 0x8a, 0x93, 0x58, 0x05, 0x86, 0x8f, 0x18, 0xc9, + 0xd0, 0x7e, 0x58, 0x80, 0xe9, 0x78, 0x0b, 0x3d, 0x72, 0x6f, 0xe9, 0x6e, 0xd2, 0x5b, 0xba, 0x38, + 0x06, 0x45, 0x1b, 0xe2, 0x21, 0xfd, 0xfd, 0x46, 0xfc, 0xd5, 0xb8, 0x57, 0x34, 0xee, 0x76, 0x2a, + 0x3c, 0xd4, 0xed, 0xf4, 0x51, 0xce, 0xa3, 0xa1, 0x39, 0x8f, 0x86, 0xad, 0x6f, 0x2a, 0x8f, 0xf1, + 0xfa, 0x66, 0xe2, 0x03, 0x5c, 0xdf, 0xc4, 0xb2, 0x0a, 0x55, 0x73, 0x64, 0x15, 0xea, 0x86, 0x59, + 0x85, 0x6a, 0x63, 0x1b, 0xa2, 0x8f, 0x93, 0x59, 0xa8, 0x7e, 0xaa, 0x99, 0x85, 0xe0, 0x51, 0x65, + 0x16, 0x6a, 0xe4, 0xcd, 0x2c, 0xf4, 0x33, 0x05, 0x98, 0x36, 0x13, 0x47, 0x43, 0xb9, 0x47, 0x2b, + 0xcf, 0xc4, 0x9c, 0x3c, 0x69, 0x2a, 0xdc, 0x24, 0x49, 0x18, 0xa6, 0x44, 0x66, 0xe5, 0xf3, 0x99, + 0xfa, 0x40, 0xf2, 0xf9, 0x90, 0x77, 0xa1, 0x6e, 0xab, 0x59, 0x9b, 0x07, 0xa6, 0xe6, 0xe9, 0xfb, + 0x19, 0x96, 0x40, 0x14, 0xca, 0x1d, 0x82, 0x30, 0x92, 0xa8, 0xfd, 0xef, 0x6a, 0x7c, 0x6a, 0x3f, + 0xed, 0x6d, 0xa5, 0x17, 0x92, 0xdb, 0x4a, 0x57, 0xd2, 0xdb, 0x4a, 0x03, 0x76, 0x89, 0xdc, 0x5a, + 0x7a, 0x36, 0x36, 0x01, 0x95, 0x78, 0x36, 0x9f, 0x50, 0xe5, 0x32, 0x26, 0xa1, 0x26, 0xcc, 0x48, + 0x73, 0x46, 0x21, 0xf9, 0x70, 0x3e, 0x15, 0x45, 0x10, 0x2f, 0x25, 0xd1, 0x98, 0xa6, 0x67, 0x02, + 0x7d, 0x95, 0x7a, 0xb7, 0x92, 0xf4, 0xff, 0x85, 0x69, 0x71, 0x43, 0x0a, 0xb6, 0x4e, 0xf5, 0xa8, + 0xee, 0xcb, 0xcd, 0xa1, 0xd8, 0x3a, 0x15, 0x39, 0x14, 0x25, 0x36, 0xbe, 0x43, 0x56, 0x7d, 0x9f, + 0x1d, 0x32, 0x1d, 0x1a, 0xb6, 0xee, 0x07, 0x42, 0x99, 0x4c, 0x39, 0x76, 0xfd, 0x99, 0xe3, 0x19, + 0x14, 0xcc, 0x2a, 0x8a, 0x96, 0x22, 0xab, 0x11, 0x1b, 0x8c, 0xf3, 0x24, 0x26, 0x4c, 0xb2, 0x47, + 0x3e, 0xb2, 0x98, 0xcd, 0x40, 0x8e, 0x58, 0x27, 0x91, 0x11, 0x2e, 0x82, 0x57, 0x63, 0x7c, 0x30, + 0xc1, 0x75, 0xc8, 0x26, 0x1a, 0x8c, 0xb2, 0x89, 0x46, 0x5e, 0x12, 0x26, 0xe8, 0x41, 0xf8, 0x59, + 0x1b, 0xfc, 0xb3, 0x86, 0x6e, 0x56, 0x8c, 0x23, 0x31, 0x49, 0xcb, 0xb4, 0xa2, 0x2f, 0x9b, 0x41, + 0x15, 0x9f, 0x4c, 0x6a, 0xc5, 0x56, 0x12, 0x8d, 0x69, 0x7a, 0xb2, 0x01, 0xe7, 0x43, 0x50, 0xbc, + 0x1a, 0x53, 0x9c, 0x4f, 0x18, 0x8d, 0xbf, 0x95, 0x41, 0x83, 0x99, 0x25, 0xf9, 0xc1, 0x85, 0xbe, + 0xe7, 0x51, 0x27, 0xb8, 0xa1, 0xfb, 0xbb, 0x32, 0x50, 0x3d, 0x3a, 0xb8, 0x10, 0xa1, 0x30, 0x4e, + 0x47, 0xae, 0x02, 0x08, 0x76, 0xbc, 0xd4, 0x0c, 0x2f, 0x15, 0x2e, 0x8a, 0xb6, 0x42, 0x0c, 0xc6, + 0xa8, 0xf8, 0xc1, 0x6c, 0xe5, 0x8c, 0x65, 0xd3, 0xd4, 0xb6, 0xee, 0x5b, 0x86, 0xec, 0xf0, 0x39, + 0xb2, 0x99, 0xaa, 0x64, 0x55, 0xe2, 0x3c, 0x1c, 0x7f, 0x44, 0xc1, 0x3b, 0x4a, 0x17, 0x56, 0xcc, + 0x95, 0x2e, 0x8c, 0x2c, 0x42, 0xd9, 0xd9, 0xa3, 0x07, 0x27, 0x3b, 0x1a, 0xca, 0xed, 0xba, 0x5b, + 0x37, 0xe9, 0x01, 0xf2, 0xc2, 0xda, 0xaf, 0x15, 0x01, 0xd8, 0xeb, 0x1f, 0x6f, 0x9f, 0xe0, 0x33, + 0x50, 0x95, 0xce, 0x78, 0x95, 0xf6, 0x3c, 0x0c, 0x74, 0x12, 0x60, 0x54, 0x78, 0xf2, 0x49, 0xa8, + 0xdc, 0xed, 0xd3, 0xbe, 0xda, 0xf4, 0x0e, 0x67, 0xec, 0xd7, 0x19, 0x10, 0x05, 0xee, 0xd1, 0xb9, + 0xc8, 0x94, 0x9b, 0xbe, 0xf2, 0xa8, 0xdc, 0xf4, 0x75, 0xa8, 0xde, 0x72, 0x79, 0xdc, 0xa4, 0xf6, + 0xdf, 0x8b, 0x00, 0x51, 0x5c, 0x1a, 0xf9, 0xa5, 0x02, 0x3c, 0x11, 0x6e, 0x07, 0x06, 0xc2, 0xf0, + 0xe2, 0x09, 0x84, 0x73, 0xbb, 0xec, 0xb3, 0xb6, 0x22, 0x79, 0x26, 0x82, 0x8d, 0x2c, 0x71, 0x98, + 0x5d, 0x0b, 0x82, 0x50, 0xa3, 0xdd, 0x5e, 0x70, 0xb0, 0x64, 0x79, 0x52, 0x03, 0x33, 0xc3, 0x1f, + 0xaf, 0x49, 0x1a, 0x51, 0x54, 0x2e, 0x3b, 0xf8, 0xfa, 0x46, 0x61, 0x30, 0xe4, 0x43, 0x76, 0xa1, + 0xe6, 0xb8, 0x6f, 0xf9, 0xac, 0x39, 0xa4, 0x3a, 0x8e, 0x9e, 0xd3, 0x56, 0x36, 0xab, 0x70, 0xdd, + 0xca, 0x07, 0xac, 0x3a, 0xb2, 0xb1, 0x7f, 0xb1, 0x08, 0xe7, 0x32, 0xda, 0x81, 0xbc, 0x0a, 0x67, + 0x64, 0x08, 0x60, 0x94, 0x49, 0xbb, 0x10, 0x65, 0xd2, 0x6e, 0xa7, 0x70, 0x38, 0x40, 0x4d, 0xde, + 0x02, 0xd0, 0x0d, 0x83, 0xfa, 0xfe, 0x9a, 0x6b, 0xaa, 0x99, 0xf8, 0x15, 0x36, 0x70, 0x34, 0x43, + 0xe8, 0x83, 0xc3, 0xb9, 0x9f, 0xc8, 0x8a, 0xea, 0x4d, 0xb5, 0x73, 0x54, 0x00, 0x63, 0x2c, 0xc9, + 0x37, 0x00, 0x84, 0xf5, 0x1d, 0x1e, 0xbe, 0x7d, 0x9f, 0xb5, 0xf0, 0xbc, 0xca, 0x47, 0x33, 0xff, + 0x7a, 0x5f, 0x77, 0x02, 0x2b, 0x38, 0x10, 0x09, 0x0a, 0x6e, 0x87, 0x5c, 0x30, 0xc6, 0x51, 0xfb, + 0xed, 0x22, 0xd4, 0x94, 0xfb, 0xf2, 0x14, 0xfc, 0x49, 0x9d, 0x84, 0x3f, 0x69, 0x4c, 0x71, 0xbc, + 0x59, 0xde, 0x24, 0x37, 0xe5, 0x4d, 0xba, 0x9e, 0x5f, 0xd4, 0xc3, 0x7d, 0x49, 0x7f, 0xb7, 0x04, + 0xd3, 0x8a, 0x34, 0xaf, 0x97, 0xe7, 0x65, 0x98, 0x11, 0x3b, 0xde, 0x6b, 0xfa, 0x7d, 0x91, 0xfb, + 0x80, 0x37, 0x58, 0x59, 0x84, 0x22, 0xb6, 0x92, 0x28, 0x4c, 0xd3, 0x32, 0xb5, 0x16, 0xa0, 0x2d, + 0x66, 0xfe, 0x44, 0x8e, 0x9c, 0x29, 0xa1, 0xd6, 0xad, 0x14, 0x0e, 0x07, 0xa8, 0xd3, 0x6e, 0xa6, + 0xf2, 0xa3, 0x76, 0x33, 0x55, 0x4e, 0xc1, 0xcd, 0xf4, 0x6f, 0x0a, 0x30, 0x19, 0x7d, 0xa0, 0x47, + 0xee, 0x64, 0xda, 0x49, 0x3a, 0x99, 0x9a, 0xb9, 0xf5, 0x6f, 0x88, 0x8b, 0xe9, 0x2f, 0xd6, 0x21, + 0x11, 0xbf, 0x4e, 0xb6, 0xe1, 0xa2, 0x95, 0x19, 0xf7, 0x16, 0x1b, 0xde, 0xc2, 0x43, 0x89, 0x2b, + 0x43, 0x29, 0xf1, 0x21, 0x5c, 0x48, 0x1f, 0x6a, 0xfb, 0xd4, 0x0b, 0x2c, 0x83, 0xaa, 0xf7, 0xbb, + 0x9e, 0xdb, 0xe7, 0x22, 0x1d, 0x69, 0x61, 0x9b, 0xde, 0x96, 0x02, 0x30, 0x14, 0x45, 0xb6, 0xa1, + 0x42, 0xcd, 0x0e, 0x55, 0x17, 0x65, 0xe4, 0xcc, 0x40, 0x19, 0xb6, 0x27, 0x7b, 0xf2, 0x51, 0xb0, + 0x26, 0x7e, 0x7c, 0x4d, 0x59, 0xce, 0xa9, 0x97, 0xc7, 0x5c, 0x49, 0x92, 0xbd, 0xd0, 0xb1, 0x52, + 0x19, 0xd3, 0x68, 0xf5, 0x10, 0xb7, 0x8a, 0x0f, 0xf5, 0x7b, 0x7a, 0x40, 0xbd, 0xae, 0xee, 0xed, + 0x49, 0xaf, 0xd4, 0xe8, 0x6f, 0x78, 0x47, 0x71, 0x8a, 0xde, 0x30, 0x04, 0x61, 0x24, 0x87, 0x75, + 0xf7, 0x40, 0x3a, 0x10, 0x54, 0xa2, 0xbf, 0xd1, 0x85, 0x2a, 0x57, 0x84, 0x2f, 0xe3, 0xd8, 0xd5, + 0x23, 0x46, 0x32, 0xc8, 0x7e, 0x22, 0xab, 0xb2, 0xc8, 0xa5, 0x9d, 0x23, 0x2d, 0xbf, 0x62, 0x15, + 0xcd, 0x6f, 0x43, 0xb2, 0x33, 0xbf, 0x57, 0x80, 0x99, 0x54, 0xcf, 0x91, 0xab, 0xc1, 0x1b, 0xe3, + 0x8a, 0xca, 0x55, 0x11, 0xe9, 0x09, 0x20, 0xa6, 0xa5, 0x92, 0x3d, 0xa8, 0xc9, 0xe0, 0x98, 0x03, + 0x99, 0x36, 0x70, 0xf4, 0x41, 0x48, 0x65, 0xa1, 0x92, 0x19, 0x42, 0xe4, 0x13, 0x86, 0x02, 0xb4, + 0xff, 0x59, 0x89, 0xa6, 0xbf, 0xd3, 0xf6, 0x84, 0x7c, 0x3e, 0xe9, 0x09, 0xb9, 0x9c, 0xf6, 0x84, + 0xa4, 0xf6, 0x67, 0x4f, 0x1e, 0x62, 0x9b, 0x72, 0x20, 0x94, 0x1f, 0x81, 0x03, 0xe1, 0x39, 0x68, + 0xec, 0xf3, 0x01, 0x50, 0x64, 0x4f, 0xa9, 0xf0, 0xe9, 0x9a, 0xcf, 0xa0, 0xb7, 0x23, 0x30, 0xc6, + 0x69, 0xf8, 0x95, 0x52, 0xe2, 0xa6, 0x91, 0x30, 0x51, 0xab, 0x2c, 0xd2, 0x8e, 0xc0, 0x18, 0xa7, + 0xe1, 0xd1, 0x79, 0x96, 0xb3, 0x27, 0x0a, 0x54, 0x79, 0x01, 0x11, 0x9d, 0xa7, 0x80, 0x18, 0xe1, + 0xc9, 0x33, 0x50, 0xeb, 0x9b, 0x3b, 0x82, 0xb6, 0xc6, 0x69, 0xf9, 0xc7, 0xdf, 0x5a, 0x5a, 0x96, + 0xd9, 0x5c, 0x14, 0x96, 0xd5, 0xa4, 0xab, 0xf7, 0x14, 0x82, 0xab, 0xbb, 0xac, 0xc9, 0x5a, 0x04, + 0xc6, 0x38, 0x0d, 0xf9, 0x12, 0x4c, 0x7b, 0xd4, 0xec, 0x1b, 0x34, 0x2c, 0x05, 0xbc, 0x94, 0x4c, + 0xcd, 0x17, 0xc7, 0x60, 0x8a, 0x72, 0x88, 0x1b, 0xa4, 0x31, 0x92, 0x1b, 0xe4, 0x2b, 0x30, 0x6d, + 0x7a, 0xba, 0xe5, 0x50, 0x73, 0xdd, 0xe1, 0x9b, 0xf0, 0x32, 0x46, 0x30, 0x74, 0x41, 0x2e, 0x25, + 0xb0, 0x98, 0xa2, 0xd6, 0x96, 0x41, 0x24, 0x9d, 0x24, 0x73, 0x50, 0xd9, 0x0d, 0x82, 0x9e, 0xda, + 0xd4, 0xe1, 0x2b, 0x6f, 0x7e, 0xa6, 0x08, 0x05, 0x9c, 0x5c, 0x82, 0x32, 0xfb, 0x23, 0x63, 0x8d, + 0xf9, 0xd2, 0x90, 0xe1, 0x91, 0x43, 0xb5, 0xdf, 0x29, 0x42, 0x45, 0x24, 0x1e, 0x5c, 0x81, 0x73, + 0x96, 0x63, 0x05, 0x96, 0x6e, 0xf3, 0x83, 0x25, 0xf1, 0xa0, 0x86, 0x4a, 0xeb, 0xc9, 0xa3, 0xc3, + 0xb9, 0x73, 0x2b, 0x83, 0x68, 0xcc, 0x2a, 0xc3, 0x1a, 0x59, 0xa6, 0x23, 0x57, 0x5c, 0x84, 0x70, + 0x91, 0x39, 0x37, 0x81, 0xc1, 0x14, 0x25, 0x33, 0x5e, 0x7b, 0x03, 0xd1, 0x0a, 0x15, 0x61, 0xbc, + 0x26, 0x03, 0x08, 0x92, 0x74, 0x7c, 0x51, 0xd5, 0xe7, 0x0b, 0x98, 0xf0, 0x7c, 0x91, 0x0c, 0x7c, + 0x12, 0x8b, 0xaa, 0x14, 0x0e, 0x07, 0xa8, 0x19, 0x87, 0x1d, 0xdd, 0xb2, 0xfb, 0x1e, 0x8d, 0x38, + 0x54, 0x22, 0x0e, 0xcb, 0x29, 0x1c, 0x0e, 0x50, 0x6b, 0xbf, 0x53, 0x00, 0x10, 0xd7, 0x8e, 0x70, + 0x0f, 0xcd, 0x98, 0x72, 0xad, 0x93, 0x3e, 0xd4, 0xb7, 0x95, 0x8f, 0x26, 0x77, 0x22, 0x6e, 0x51, + 0xbf, 0xc8, 0xe7, 0x23, 0x6e, 0xb0, 0x51, 0x8f, 0x18, 0x49, 0xd2, 0xfe, 0x51, 0x01, 0x66, 0x52, + 0xd4, 0x64, 0x1d, 0x6a, 0x2a, 0x37, 0xd7, 0xc9, 0xde, 0x4a, 0xf4, 0x61, 0x59, 0x14, 0x43, 0x26, + 0xe3, 0x4f, 0x6d, 0xfe, 0xd3, 0x45, 0xf5, 0x0d, 0x78, 0x1c, 0xdb, 0x55, 0x00, 0x99, 0x43, 0xc3, + 0x34, 0x3d, 0x69, 0x86, 0x46, 0x73, 0x69, 0x88, 0xc1, 0x18, 0xd5, 0xf1, 0x42, 0xae, 0x5e, 0x84, + 0xc9, 0x9e, 0xe7, 0xb2, 0x01, 0xc2, 0xe3, 0x16, 0x6e, 0x2a, 0x4e, 0x76, 0x23, 0x86, 0xc3, 0x04, + 0x25, 0xd1, 0xa5, 0xbf, 0x67, 0x62, 0x2c, 0x17, 0xde, 0x64, 0x7a, 0x7c, 0xfe, 0xa8, 0x08, 0x93, + 0xb2, 0x11, 0x84, 0xaf, 0xec, 0x51, 0x36, 0x83, 0x8a, 0x24, 0xcb, 0x6a, 0x86, 0xc5, 0x18, 0x0e, + 0x13, 0x94, 0x64, 0x89, 0x75, 0xd8, 0x6d, 0xdf, 0xf0, 0x2c, 0x1e, 0x2b, 0xcd, 0x4b, 0x8b, 0x98, + 0xdb, 0xf0, 0xe0, 0x6a, 0x3b, 0x85, 0xc7, 0x81, 0x12, 0xe4, 0x59, 0xa8, 0x75, 0xf5, 0xfb, 0x5b, + 0x8e, 0x6e, 0xec, 0xc9, 0xd9, 0x2b, 0xb4, 0xe4, 0xd7, 0x24, 0x1c, 0x43, 0x8a, 0xd3, 0x68, 0xfa, + 0xef, 0x94, 0x21, 0x5a, 0x08, 0x92, 0xa7, 0xa0, 0xd4, 0xd5, 0xef, 0xcb, 0x15, 0x38, 0x77, 0xfb, + 0xad, 0xe9, 0xf7, 0x91, 0xc1, 0x38, 0xca, 0x72, 0xe4, 0x0a, 0x5b, 0xa0, 0x2c, 0x07, 0x19, 0x8c, + 0xbc, 0x0d, 0xd3, 0x9e, 0xde, 0xed, 0x6d, 0xf5, 0xd4, 0xa2, 0x76, 0xc4, 0x93, 0x8a, 0x62, 0x56, + 0x4b, 0x70, 0xc2, 0x14, 0x67, 0xd2, 0x87, 0x8a, 0xf0, 0x85, 0x95, 0x73, 0xee, 0xad, 0x86, 0x2f, + 0xcd, 0xac, 0x41, 0xd7, 0xa3, 0xf2, 0x5a, 0xb8, 0x14, 0x14, 0x85, 0x34, 0x26, 0xb6, 0xeb, 0x9a, + 0xe1, 0xf9, 0xfb, 0xb1, 0x88, 0x5d, 0x63, 0x0c, 0x07, 0xc4, 0x72, 0x28, 0x0a, 0x69, 0xc2, 0x37, + 0xc2, 0x74, 0xd0, 0x14, 0xcd, 0xc2, 0x35, 0xa1, 0xa6, 0x7c, 0x23, 0x31, 0x04, 0x26, 0xe9, 0xc8, + 0x0a, 0x94, 0x82, 0xc0, 0x96, 0x4b, 0x88, 0x91, 0x2e, 0x91, 0xd8, 0xdc, 0x5c, 0x45, 0xc6, 0x43, + 0xfb, 0x1b, 0x45, 0x20, 0xb1, 0xfa, 0x5d, 0x77, 0x5b, 0xba, 0xb1, 0x77, 0x8b, 0x7d, 0x74, 0xc3, + 0x75, 0xed, 0x25, 0xf7, 0x9e, 0x23, 0x26, 0xba, 0x11, 0xcf, 0xd8, 0xf2, 0x8f, 0xbe, 0x98, 0xe0, + 0x84, 0x29, 0xce, 0x64, 0x19, 0x08, 0x53, 0x03, 0x09, 0x31, 0xa8, 0x13, 0xa8, 0x5c, 0x02, 0x53, + 0xad, 0x0b, 0xcc, 0x8c, 0xc1, 0x01, 0x2c, 0x66, 0x94, 0x60, 0x46, 0x43, 0x78, 0x84, 0x37, 0xc6, + 0x48, 0x78, 0x7d, 0xb8, 0xd1, 0xb0, 0x39, 0x88, 0xc6, 0xac, 0x32, 0xda, 0x45, 0x98, 0x8d, 0x35, + 0xca, 0x8a, 0xb3, 0x46, 0xbb, 0xae, 0x77, 0x20, 0x1c, 0xa9, 0xbf, 0x52, 0x86, 0x81, 0x2f, 0x4a, + 0x7e, 0xb6, 0x00, 0x75, 0xdf, 0xd8, 0xa5, 0x66, 0xdf, 0xa6, 0x6a, 0xee, 0x58, 0x1b, 0x8b, 0xf6, + 0x2a, 0xa6, 0x22, 0x71, 0x62, 0x16, 0x06, 0x23, 0xc9, 0xe4, 0x5d, 0xa8, 0x7a, 0xd4, 0xd6, 0xef, + 0x53, 0xf5, 0xc1, 0x6e, 0x8e, 0xa3, 0x12, 0x28, 0x58, 0xaa, 0xaf, 0x91, 0x86, 0xa3, 0x92, 0x49, + 0x7e, 0xae, 0x00, 0xe0, 0x3a, 0xf6, 0xc1, 0xca, 0xce, 0x96, 0x2f, 0xe3, 0xc6, 0x1b, 0x57, 0x6f, + 0x8d, 0xa3, 0x0a, 0xeb, 0x21, 0x57, 0xe1, 0xb9, 0xcf, 0x44, 0x61, 0x4c, 0x38, 0x6b, 0x8a, 0x8e, + 0xd0, 0x66, 0x39, 0x9a, 0x8c, 0xa5, 0x29, 0x64, 0x07, 0x19, 0x68, 0x0a, 0x09, 0x47, 0x25, 0x53, + 0xdb, 0x86, 0xec, 0x3a, 0x0e, 0x53, 0xd3, 0xc2, 0x08, 0x6a, 0xfa, 0x5f, 0x0a, 0x09, 0x21, 0x48, + 0x4d, 0x4b, 0xa4, 0xa4, 0x20, 0x57, 0xa0, 0xcc, 0xc6, 0x98, 0x74, 0xb6, 0x60, 0xee, 0x5a, 0xe7, + 0x18, 0x36, 0xe2, 0xf7, 0x3d, 0x5b, 0x4e, 0xa7, 0xd5, 0xc4, 0x66, 0xd5, 0x3e, 0xd4, 0x7c, 0xea, + 0x04, 0x96, 0x43, 0x6d, 0xf9, 0x09, 0x47, 0xdf, 0x7a, 0x11, 0x75, 0x92, 0xdc, 0xe4, 0x79, 0x4a, + 0x79, 0x6e, 0x4a, 0xc0, 0x30, 0x94, 0x45, 0x2e, 0x40, 0xd1, 0xdc, 0x96, 0x76, 0xf2, 0xc4, 0xd1, + 0xe1, 0x5c, 0x71, 0xa9, 0x85, 0x45, 0x73, 0x5b, 0x3b, 0x0f, 0x19, 0x4a, 0xa7, 0x5d, 0x80, 0xcc, + 0xde, 0xa0, 0xfd, 0x7a, 0x11, 0x06, 0x06, 0x7a, 0xae, 0x98, 0x5e, 0xd8, 0x3c, 0xb2, 0x6f, 0xdc, + 0x1a, 0x4f, 0xdf, 0x50, 0x5c, 0x07, 0x14, 0x33, 0x42, 0x61, 0x4c, 0x38, 0xf9, 0x9b, 0x05, 0x98, + 0xb2, 0xe2, 0x43, 0x8a, 0x1c, 0x2f, 0x5e, 0x1f, 0x47, 0x75, 0x12, 0x63, 0x95, 0x38, 0x0a, 0x38, + 0x0c, 0x8b, 0xc9, 0x5a, 0x68, 0xdf, 0x2d, 0x40, 0x9d, 0x57, 0xf9, 0x43, 0x62, 0x5c, 0xff, 0x46, + 0x19, 0xce, 0x65, 0xa8, 0x17, 0x33, 0x2f, 0xbb, 0xba, 0x1f, 0x48, 0x1b, 0x30, 0x65, 0x5e, 0xae, + 0x85, 0x18, 0x8c, 0x51, 0x91, 0xcf, 0x42, 0x9d, 0x3a, 0x66, 0xcf, 0xb5, 0x9c, 0xc0, 0x97, 0xd7, + 0x95, 0xf0, 0xb5, 0xc8, 0x35, 0x05, 0xc4, 0x08, 0x4f, 0xee, 0xc3, 0xa4, 0xd2, 0x59, 0xbe, 0x0a, + 0xca, 0xeb, 0x21, 0x0d, 0x1b, 0x5d, 0xa6, 0x8c, 0x88, 0xf1, 0xc6, 0x84, 0x24, 0xbe, 0x61, 0xa0, + 0x88, 0xf3, 0x6f, 0x18, 0x84, 0x62, 0xc5, 0x86, 0x81, 0x7a, 0xc4, 0x48, 0x06, 0x71, 0xa1, 0xa1, + 0x2a, 0xb0, 0xb9, 0xda, 0x1e, 0xcb, 0xb1, 0x30, 0x79, 0xe1, 0x77, 0xc8, 0x14, 0xe3, 0x12, 0xc8, + 0x0e, 0xd4, 0xb8, 0x74, 0x26, 0xad, 0x3a, 0x06, 0x69, 0x32, 0xb0, 0x54, 0x70, 0xc4, 0x90, 0xb7, + 0xf6, 0x4f, 0x0b, 0x30, 0x85, 0x34, 0x60, 0xba, 0x2f, 0x37, 0x42, 0x3b, 0x50, 0x95, 0x47, 0x90, + 0xa4, 0xbe, 0xbf, 0x9a, 0x23, 0x88, 0x81, 0xf3, 0x91, 0x87, 0x68, 0x74, 0x63, 0x6f, 0x7d, 0x67, + 0x07, 0x15, 0x77, 0x72, 0x0d, 0xea, 0xae, 0x23, 0x17, 0xf0, 0x72, 0xfc, 0xfd, 0x34, 0xfb, 0x00, + 0xeb, 0x0a, 0xf8, 0xe0, 0x70, 0xee, 0x42, 0xf8, 0x90, 0xa8, 0x24, 0x46, 0x25, 0xb5, 0x9f, 0x65, + 0x83, 0xbf, 0x6b, 0xdb, 0x96, 0xd3, 0x49, 0x86, 0x88, 0x11, 0x1b, 0xa6, 0xc5, 0x22, 0x63, 0x5f, + 0xb7, 0x6c, 0x7d, 0xdb, 0xa6, 0xef, 0xbb, 0x91, 0xd9, 0x0f, 0x2c, 0x7b, 0x5e, 0x5c, 0xf9, 0x3e, + 0xbf, 0xe2, 0x04, 0xeb, 0x5e, 0x3b, 0xf0, 0x2c, 0xa7, 0x23, 0xcc, 0xb7, 0xb5, 0x04, 0x2f, 0x4c, + 0xf1, 0xd6, 0xfe, 0x7d, 0x19, 0xf8, 0xf1, 0x16, 0xf2, 0x05, 0xa8, 0x77, 0xa9, 0xb1, 0xab, 0x3b, + 0x96, 0xaf, 0xd2, 0xd4, 0xb3, 0x11, 0xb1, 0xbe, 0xa6, 0x80, 0x0f, 0xd8, 0xb0, 0xdf, 0x6c, 0xaf, + 0xf2, 0x23, 0xf1, 0x11, 0x2d, 0x31, 0x60, 0xa2, 0xe3, 0xfb, 0x7a, 0xcf, 0xca, 0x1d, 0xe4, 0x2b, + 0x32, 0x8c, 0x0b, 0x8f, 0xbf, 0xf8, 0x8f, 0x92, 0x35, 0x31, 0xa0, 0xd2, 0xb3, 0x75, 0xcb, 0xc9, + 0x1d, 0xce, 0xcd, 0xde, 0x60, 0x83, 0x71, 0x12, 0xce, 0x11, 0xfe, 0x17, 0x05, 0x6f, 0xd2, 0x87, + 0x86, 0x6f, 0x78, 0x7a, 0xd7, 0xdf, 0xd5, 0xaf, 0x3e, 0xff, 0x42, 0xee, 0x81, 0x21, 0x12, 0x25, + 0x3a, 0xcd, 0x22, 0x36, 0xd7, 0xda, 0x37, 0x9a, 0x57, 0x9f, 0x7f, 0x01, 0xe3, 0x72, 0xe2, 0x62, + 0x9f, 0x7f, 0xee, 0x6a, 0xfe, 0xfb, 0x77, 0xb3, 0xc5, 0x3e, 0xff, 0xdc, 0x55, 0x8c, 0xcb, 0x61, + 0x4d, 0xea, 0xc6, 0x56, 0xb0, 0xf9, 0x04, 0xae, 0x47, 0x41, 0x3f, 0xfc, 0x2f, 0x0a, 0xde, 0xda, + 0xff, 0x2a, 0x40, 0x3d, 0xc4, 0xb3, 0x49, 0x44, 0xe4, 0x4e, 0x5d, 0x59, 0x1a, 0x61, 0x56, 0x5a, + 0x94, 0x45, 0x31, 0x64, 0x42, 0xde, 0x84, 0x49, 0xf1, 0x5f, 0xe6, 0x32, 0x2f, 0x9e, 0x38, 0x61, + 0xfa, 0x62, 0xac, 0x38, 0x26, 0x98, 0x91, 0x97, 0x60, 0x8a, 0x3b, 0xcd, 0xd4, 0x2c, 0x22, 0x1d, + 0x12, 0x61, 0x7c, 0xd9, 0x66, 0x1c, 0x89, 0x49, 0xda, 0xf0, 0xc5, 0xf9, 0x97, 0x20, 0x5b, 0x00, + 0x6c, 0x26, 0x95, 0xb5, 0x3c, 0xd1, 0xab, 0xf3, 0xd0, 0x87, 0xad, 0xb0, 0x30, 0xc6, 0x18, 0x65, + 0xa4, 0xa4, 0x2f, 0x8e, 0x3b, 0x25, 0xfd, 0x02, 0xd4, 0x77, 0x75, 0xc7, 0xf4, 0x77, 0xf5, 0x3d, + 0x2a, 0xcf, 0x5c, 0x86, 0xdb, 0x64, 0x37, 0x14, 0x02, 0x23, 0x1a, 0xed, 0x9f, 0x4f, 0x80, 0x08, + 0x4f, 0x26, 0xcf, 0x42, 0xcd, 0xb4, 0x7c, 0x71, 0x84, 0x5b, 0xdc, 0xf1, 0x10, 0xfa, 0x53, 0x96, + 0x24, 0x1c, 0x43, 0x8a, 0xb8, 0x0f, 0xa3, 0x92, 0xf2, 0x61, 0x48, 0xcf, 0x47, 0x29, 0x86, 0x52, + 0x9e, 0x8f, 0x97, 0x61, 0xc6, 0x76, 0xdd, 0x3d, 0x36, 0x38, 0xc7, 0xcf, 0x8e, 0x4d, 0x89, 0x0d, + 0xa6, 0xd5, 0x24, 0x0a, 0xd3, 0xb4, 0x64, 0x0b, 0x9e, 0x7c, 0x87, 0x7a, 0xae, 0x0c, 0xc0, 0x6b, + 0xdb, 0x94, 0xf6, 0x14, 0x1b, 0xe1, 0x01, 0xe2, 0x47, 0xdb, 0xbe, 0x96, 0x4d, 0x82, 0xc3, 0xca, + 0xf2, 0xc3, 0xb8, 0xba, 0xd7, 0xa1, 0xc1, 0x86, 0xe7, 0x1a, 0xd4, 0xf7, 0x2d, 0xa7, 0xa3, 0xd8, + 0x4e, 0x44, 0x6c, 0x37, 0xb3, 0x49, 0x70, 0x58, 0x59, 0xf2, 0x06, 0xcc, 0x0a, 0x94, 0xd8, 0x1e, + 0x6b, 0x8a, 0x41, 0xdc, 0xb2, 0xad, 0xe0, 0x40, 0x6e, 0x85, 0x70, 0x8b, 0x71, 0x73, 0x08, 0x0d, + 0x0e, 0x2d, 0x4d, 0x5e, 0x83, 0x33, 0x2a, 0x5e, 0x76, 0x83, 0x59, 0xe3, 0xba, 0x4d, 0xe5, 0x86, + 0x89, 0x3c, 0x83, 0xa8, 0xce, 0xe0, 0x61, 0x8a, 0x0a, 0x07, 0xca, 0x11, 0x84, 0x0b, 0x3c, 0x2e, + 0x7d, 0xab, 0xb7, 0xe8, 0xba, 0xb6, 0xe9, 0xde, 0x73, 0xd4, 0xbb, 0x8b, 0x5d, 0x15, 0x7e, 0x11, + 0x5f, 0x3b, 0x93, 0x02, 0x87, 0x94, 0x64, 0x6f, 0xce, 0x31, 0x4b, 0xee, 0x3d, 0x27, 0xcd, 0x15, + 0xa2, 0x37, 0x6f, 0x0f, 0xa1, 0xc1, 0xa1, 0xa5, 0xb9, 0xfb, 0x22, 0xf5, 0x06, 0x5b, 0x3d, 0x19, + 0x49, 0x2a, 0x56, 0x89, 0x03, 0x58, 0xcc, 0x28, 0x41, 0x56, 0xe1, 0x7c, 0x1a, 0xca, 0xc4, 0xc9, + 0xa0, 0x52, 0xb1, 0xfa, 0xcf, 0xc0, 0x63, 0x66, 0x29, 0xad, 0x01, 0xf5, 0xf0, 0x1a, 0x75, 0xed, + 0xf7, 0x8b, 0x30, 0x93, 0x4a, 0xa6, 0x7a, 0x0a, 0x71, 0x4e, 0x4e, 0x22, 0xce, 0x69, 0x35, 0xd7, + 0x75, 0xf0, 0xb1, 0x9a, 0x0f, 0x0d, 0x77, 0xda, 0x4f, 0x85, 0x3b, 0xdd, 0x1a, 0x9b, 0xc4, 0x87, + 0x47, 0x3d, 0x1d, 0x15, 0xe0, 0x5c, 0xaa, 0xc4, 0x29, 0xc4, 0xd6, 0x74, 0x93, 0xb1, 0x35, 0x37, + 0xc6, 0xf5, 0xb2, 0x43, 0x42, 0x6c, 0xfe, 0xef, 0xe0, 0x4b, 0xb6, 0x45, 0x8c, 0x59, 0x55, 0xe6, + 0xad, 0xcc, 0x7d, 0x1b, 0x93, 0x4a, 0x8c, 0xc9, 0xbe, 0x6f, 0x32, 0x0f, 0xa0, 0xd3, 0x41, 0x25, + 0x85, 0xf8, 0x50, 0x53, 0xc9, 0x29, 0xc7, 0x1b, 0x41, 0x17, 0x36, 0x76, 0x98, 0x6f, 0x38, 0x14, + 0xa4, 0xfd, 0x42, 0x09, 0x9e, 0xc8, 0x54, 0x8a, 0xd3, 0xdb, 0xe0, 0x7f, 0x29, 0xb9, 0xc1, 0xff, + 0x74, 0x7a, 0x83, 0xff, 0x7c, 0xaa, 0x7e, 0x8f, 0xf1, 0x3e, 0xff, 0x18, 0xf7, 0xae, 0xb5, 0x19, + 0x98, 0x4a, 0x24, 0x54, 0xd5, 0x7e, 0x6f, 0x02, 0x1a, 0x31, 0x4d, 0x7a, 0xec, 0x12, 0x59, 0x92, + 0xb7, 0xd4, 0xd5, 0x8e, 0xa5, 0xbc, 0x97, 0xe9, 0x31, 0x2e, 0x72, 0x11, 0x12, 0xbb, 0xf3, 0x91, + 0x7c, 0x09, 0xa6, 0xbb, 0x7e, 0x67, 0x65, 0xe9, 0x06, 0xd5, 0x4d, 0xea, 0xdd, 0xa4, 0x2a, 0x7b, + 0x8c, 0x58, 0xcc, 0x25, 0x30, 0x98, 0xa2, 0x24, 0xab, 0xf0, 0x84, 0x47, 0xef, 0xf6, 0xa9, 0x1f, + 0x24, 0xb7, 0xc6, 0xa5, 0x31, 0x23, 0xe7, 0xb3, 0x14, 0x81, 0x8f, 0xd9, 0x85, 0xd8, 0x18, 0x25, + 0xb6, 0x73, 0x26, 0x72, 0x76, 0x54, 0xf5, 0x41, 0xb9, 0x53, 0x4b, 0x3a, 0x49, 0x22, 0x88, 0xda, + 0xc6, 0xc9, 0x3e, 0x73, 0x58, 0xfd, 0x00, 0xcf, 0x1c, 0xc6, 0x0f, 0xba, 0xd6, 0x1e, 0x7a, 0xd0, + 0x75, 0xd8, 0x69, 0xce, 0xfa, 0xe3, 0x70, 0x9a, 0x53, 0xfb, 0x26, 0x24, 0x1a, 0x9c, 0xb8, 0x50, + 0x0f, 0x5f, 0x36, 0xf7, 0x91, 0x8f, 0xe8, 0xdc, 0x1f, 0xf7, 0x43, 0x85, 0x8f, 0x18, 0xc9, 0xd0, + 0x76, 0x58, 0x37, 0xe7, 0x79, 0x3d, 0x1f, 0xed, 0x8d, 0xf5, 0xff, 0xb6, 0x08, 0xf5, 0x30, 0xa8, + 0x8d, 0x5c, 0x81, 0xb2, 0x13, 0xf9, 0x10, 0x43, 0x9b, 0x83, 0x7b, 0x0f, 0x39, 0x26, 0xd9, 0x10, + 0xc5, 0x47, 0xdf, 0x10, 0xf1, 0x53, 0xac, 0xa5, 0x1c, 0xa7, 0x58, 0x7b, 0x50, 0x0d, 0x3c, 0xab, + 0xd3, 0xa1, 0x5e, 0xee, 0xad, 0xd6, 0xb0, 0xb9, 0x36, 0x05, 0x43, 0xd9, 0xb2, 0xe2, 0x01, 0x95, + 0x18, 0xed, 0x6d, 0x38, 0x93, 0xa6, 0xe4, 0xa7, 0xe2, 0xa4, 0xdf, 0x5e, 0xb6, 0x71, 0x74, 0x2a, + 0x4e, 0xc2, 0x31, 0xa4, 0x60, 0x9d, 0x89, 0x7d, 0xa6, 0x77, 0x5c, 0x47, 0x4d, 0x82, 0xbc, 0x33, + 0x6d, 0x4a, 0x18, 0x86, 0x58, 0xed, 0xbf, 0x95, 0xe0, 0xa9, 0x28, 0x34, 0x71, 0x4d, 0x77, 0xf4, + 0x4e, 0xf2, 0xbe, 0xcb, 0x8f, 0x12, 0x43, 0x8d, 0xe5, 0x7e, 0xd0, 0xd2, 0x63, 0x70, 0x3f, 0xe8, + 0x1f, 0x96, 0x80, 0x1f, 0xb7, 0x27, 0xdf, 0x84, 0x49, 0xd5, 0x9e, 0xec, 0x59, 0x7e, 0xce, 0x6b, + 0xb9, 0x3f, 0x27, 0x3f, 0xd5, 0x1f, 0xc6, 0x90, 0xc4, 0xa1, 0x98, 0x10, 0x48, 0x5c, 0xa8, 0xed, + 0xe8, 0xb6, 0xbd, 0xad, 0x1b, 0x7b, 0xb9, 0x2d, 0xd3, 0x84, 0x70, 0xae, 0xe6, 0xcb, 0x92, 0x35, + 0x86, 0x42, 0x88, 0x07, 0x75, 0xd7, 0x91, 0xb1, 0x64, 0xf2, 0x5b, 0x8c, 0x49, 0xe2, 0x94, 0xf0, + 0x47, 0x4b, 0xde, 0x18, 0x89, 0x21, 0x3f, 0x53, 0x80, 0x29, 0x2f, 0xee, 0x92, 0x96, 0xe3, 0xc7, + 0x72, 0x8e, 0x6d, 0x88, 0x18, 0xb7, 0xf8, 0xd9, 0xcb, 0xb8, 0xdf, 0x3b, 0x29, 0x53, 0xfb, 0xaf, + 0x05, 0x98, 0x6a, 0xdb, 0x96, 0x69, 0x39, 0x9d, 0x47, 0x78, 0xc7, 0xe6, 0x3a, 0x54, 0x7c, 0xdb, + 0x32, 0xe9, 0x88, 0x29, 0x46, 0xb8, 0x65, 0xc6, 0x6a, 0xc9, 0x0c, 0x14, 0xf6, 0x93, 0xbc, 0xb4, + 0xb3, 0x74, 0x8c, 0x4b, 0x3b, 0x7f, 0xbb, 0x06, 0x32, 0x59, 0x05, 0xe9, 0x43, 0xbd, 0xa3, 0xae, + 0x41, 0x94, 0xef, 0x78, 0x23, 0xc7, 0xa5, 0x5f, 0x89, 0x0b, 0x15, 0xc5, 0xf7, 0x0e, 0x81, 0x18, + 0x49, 0x22, 0x14, 0x2a, 0x3c, 0x07, 0x55, 0xee, 0xc4, 0xdd, 0xb1, 0x6c, 0x63, 0xa2, 0x65, 0x38, + 0x00, 0x05, 0x77, 0xa2, 0xcb, 0xc0, 0xd0, 0x52, 0xce, 0x58, 0xa8, 0x28, 0x83, 0x7d, 0x3a, 0xba, + 0x94, 0x89, 0x70, 0xf4, 0xc0, 0xcf, 0x9d, 0x49, 0x3f, 0x3a, 0xf4, 0x29, 0xcf, 0x84, 0xea, 0x81, + 0x8f, 0x9c, 0x35, 0xf9, 0x49, 0x68, 0x04, 0x9e, 0xee, 0xf8, 0x3b, 0xae, 0xd7, 0xa5, 0x9e, 0xf4, + 0xc3, 0x2f, 0xe7, 0xc8, 0xf9, 0xb1, 0x19, 0x71, 0x13, 0x61, 0x41, 0x09, 0x10, 0xc6, 0xa5, 0x91, + 0x3d, 0xa8, 0xf5, 0x4d, 0x51, 0x31, 0x69, 0x6f, 0x37, 0x73, 0x48, 0x8e, 0x9f, 0x5b, 0x54, 0x4f, + 0x18, 0x0a, 0x60, 0xda, 0x18, 0xe5, 0xb5, 0xae, 0xe6, 0xd4, 0xc6, 0x54, 0xce, 0xcd, 0xe1, 0x09, + 0xad, 0x49, 0x37, 0xf2, 0x36, 0xd4, 0x72, 0x36, 0x6e, 0x62, 0xd5, 0x28, 0xef, 0x44, 0x48, 0xfb, + 0x1a, 0x2c, 0x98, 0xe8, 0xf1, 0xe0, 0x3a, 0x69, 0x86, 0x5f, 0xcb, 0x19, 0xa3, 0x17, 0xcf, 0x41, + 0x23, 0x20, 0x28, 0x05, 0x90, 0xaf, 0x43, 0xc9, 0xbf, 0xeb, 0xcb, 0x33, 0x0a, 0x39, 0x76, 0x52, + 0xee, 0x2a, 0xdd, 0xe4, 0x5e, 0xee, 0xf6, 0x5d, 0x1f, 0x19, 0x5f, 0xed, 0x37, 0x8b, 0x50, 0x65, + 0x38, 0x36, 0x4f, 0x2d, 0x40, 0x5d, 0xbf, 0xe7, 0x23, 0xed, 0x44, 0x19, 0xa2, 0xc3, 0x51, 0xa8, + 0x79, 0xa7, 0x2d, 0x10, 0x18, 0xd1, 0xb0, 0x02, 0xfc, 0xd4, 0x31, 0xdf, 0x4f, 0x2f, 0x26, 0x0b, + 0xbc, 0xae, 0x10, 0x18, 0xd1, 0x90, 0xdb, 0x70, 0x81, 0x3f, 0xac, 0xdf, 0x73, 0xa8, 0xd7, 0xbc, + 0xd3, 0x6e, 0x1a, 0x86, 0xdb, 0xe7, 0x7b, 0x36, 0xa5, 0xc4, 0xe9, 0x84, 0x0b, 0xaf, 0x67, 0x52, + 0xe1, 0x90, 0xd2, 0x64, 0x1f, 0x40, 0xf7, 0xfd, 0x7e, 0x97, 0xa2, 0x1b, 0x1e, 0x4c, 0xca, 0xb1, + 0xa2, 0xbf, 0xd3, 0x6e, 0x86, 0xdc, 0xc4, 0x2e, 0x49, 0xf4, 0x8c, 0x31, 0x49, 0xda, 0xf7, 0x2b, + 0x50, 0x0f, 0x5b, 0xf6, 0x43, 0xdc, 0x7e, 0x8b, 0x70, 0x76, 0xdf, 0xf2, 0x2d, 0xe1, 0xb2, 0x8f, + 0x1f, 0x6c, 0xac, 0x08, 0x73, 0xf0, 0x76, 0x1a, 0x89, 0x83, 0xf4, 0x64, 0x05, 0xce, 0x75, 0xf5, + 0xfb, 0xb7, 0xfa, 0xdd, 0x6d, 0xea, 0xad, 0xef, 0x48, 0xff, 0x91, 0x2f, 0x83, 0xd3, 0x79, 0xfc, + 0xd2, 0xda, 0x20, 0x1a, 0xb3, 0xca, 0x90, 0x97, 0x61, 0xe6, 0x9e, 0x6e, 0x71, 0xaf, 0x41, 0x7c, + 0x77, 0xa3, 0x22, 0xf6, 0x5e, 0xee, 0x24, 0x51, 0x98, 0xa6, 0x25, 0xcf, 0x41, 0x43, 0x05, 0x65, + 0x6c, 0x79, 0xb6, 0x4a, 0x81, 0xc1, 0xef, 0x71, 0x57, 0x60, 0x5c, 0xc5, 0x38, 0x0d, 0xf9, 0x12, + 0x4c, 0xeb, 0x41, 0xe0, 0x59, 0xdb, 0xfd, 0x80, 0x37, 0xb5, 0x38, 0x15, 0x25, 0x7d, 0x23, 0xcd, + 0x04, 0x06, 0x53, 0x94, 0x64, 0x1d, 0x9e, 0x90, 0x4e, 0xb2, 0x24, 0xa1, 0x4c, 0xf1, 0xcc, 0x4d, + 0xd7, 0xb5, 0x2c, 0x02, 0xcc, 0x2e, 0x97, 0x52, 0x67, 0x38, 0x35, 0x75, 0xee, 0x82, 0x74, 0x2e, + 0x12, 0x23, 0x71, 0x2d, 0xbc, 0xc8, 0x63, 0xb8, 0x70, 0x3c, 0x33, 0x27, 0xbc, 0xef, 0x3b, 0x76, + 0xc3, 0x65, 0xe6, 0xfd, 0xef, 0xda, 0xbf, 0x2b, 0x42, 0x69, 0x73, 0xb5, 0x4d, 0x5e, 0x03, 0x62, + 0x39, 0x3e, 0x35, 0xfa, 0x1e, 0x6d, 0xef, 0x59, 0xbd, 0xdb, 0xd4, 0xb3, 0x76, 0x0e, 0xe4, 0xbe, + 0x5e, 0xe8, 0xf6, 0x5b, 0x19, 0xa0, 0xc0, 0x8c, 0x52, 0x7c, 0xdb, 0x56, 0x5f, 0xa4, 0x5e, 0x8e, + 0x6d, 0xdb, 0x66, 0x54, 0x1c, 0x13, 0xcc, 0xc8, 0x16, 0x80, 0x11, 0xb1, 0x2e, 0x9d, 0x78, 0xaf, + 0x35, 0xc6, 0x38, 0xc6, 0x88, 0x20, 0xd4, 0xf7, 0x18, 0x29, 0xe7, 0x5a, 0x3e, 0x09, 0x57, 0x3e, + 0x21, 0xde, 0x54, 0x65, 0x31, 0x62, 0xa3, 0x39, 0x30, 0x95, 0xb8, 0x7b, 0x9d, 0x7c, 0x11, 0x6a, + 0x6e, 0x2f, 0x66, 0x25, 0xd6, 0x79, 0xde, 0xfa, 0xda, 0xba, 0x84, 0x3d, 0x38, 0x9c, 0x9b, 0x5a, + 0x75, 0x3b, 0x96, 0xa1, 0x00, 0x18, 0x92, 0x13, 0x0d, 0x26, 0x78, 0x96, 0x45, 0x15, 0x00, 0xc5, + 0xa7, 0x29, 0x7e, 0x2f, 0xb4, 0x8f, 0x12, 0xa3, 0x7d, 0xab, 0x0c, 0xd1, 0x51, 0x43, 0xe2, 0xc3, + 0x84, 0xc8, 0x8b, 0x24, 0x0d, 0xd2, 0x47, 0x9a, 0x82, 0x49, 0x8a, 0x22, 0x1d, 0x28, 0xbd, 0xed, + 0x6e, 0xe7, 0xb6, 0x47, 0x63, 0xa9, 0xa2, 0xc5, 0x98, 0x11, 0x03, 0x20, 0x93, 0x40, 0xbe, 0x53, + 0x80, 0xb3, 0x7e, 0xda, 0x8b, 0x20, 0xd5, 0x01, 0xf3, 0xbb, 0x4b, 0xd2, 0x7e, 0x09, 0x71, 0xc1, + 0xc0, 0x50, 0x34, 0x0e, 0xd6, 0x85, 0xb5, 0xbf, 0x38, 0x0c, 0x27, 0xd5, 0x69, 0xf4, 0xf6, 0x17, + 0x07, 0xec, 0x92, 0xed, 0x9f, 0x84, 0xa1, 0x14, 0xa5, 0xfd, 0xc7, 0x02, 0x94, 0xb6, 0x96, 0x96, + 0x4f, 0xdd, 0x07, 0x48, 0x3a, 0x50, 0xed, 0x88, 0x5b, 0xc1, 0x72, 0xa7, 0xca, 0x90, 0xb7, 0x8b, + 0x09, 0xb3, 0x4f, 0x3e, 0xa0, 0xe2, 0xae, 0x1d, 0xc0, 0xc4, 0xd6, 0x92, 0x5c, 0xd2, 0x9f, 0xb2, + 0x9f, 0xf3, 0x27, 0x21, 0xb4, 0xb6, 0x4f, 0x5f, 0xf8, 0xb7, 0x0a, 0x90, 0x5c, 0x60, 0x9c, 0x7e, + 0x15, 0x7e, 0xaf, 0x00, 0xa9, 0x84, 0x67, 0xe4, 0x05, 0x79, 0xcb, 0x4a, 0xf2, 0xd4, 0xbe, 0xba, + 0x65, 0x85, 0x24, 0xa9, 0x63, 0xb7, 0xad, 0xbc, 0x57, 0x80, 0x29, 0x2f, 0x1e, 0x1f, 0x27, 0x87, + 0x8c, 0x1c, 0x51, 0xbf, 0x59, 0xd1, 0x76, 0xf2, 0xb8, 0x46, 0x1c, 0x85, 0x49, 0xb9, 0xda, 0x3f, + 0x2b, 0xc2, 0xc4, 0xa9, 0x65, 0xab, 0xa5, 0x89, 0x5d, 0xf7, 0xc5, 0x9c, 0x23, 0xc2, 0xd0, 0xcd, + 0xf6, 0x6e, 0x6a, 0xb3, 0xfd, 0x5a, 0x5e, 0x41, 0x0f, 0xdf, 0x63, 0xff, 0x57, 0x05, 0x90, 0xe3, + 0xd1, 0x8a, 0xe3, 0x07, 0xba, 0x63, 0x50, 0x62, 0x84, 0x83, 0x5f, 0xde, 0x9d, 0x57, 0x99, 0x75, + 0x41, 0xcc, 0x77, 0xfc, 0xbf, 0x1a, 0xec, 0xc8, 0xb3, 0x50, 0xdb, 0x75, 0xfd, 0xc0, 0x89, 0x2c, + 0xf7, 0xd0, 0x43, 0x7d, 0x43, 0xc2, 0x31, 0xa4, 0x20, 0x9f, 0x81, 0xaa, 0xdc, 0xd0, 0x91, 0xa1, + 0x46, 0xa1, 0x03, 0x5e, 0xee, 0xf8, 0xa0, 0xc2, 0x6b, 0x5f, 0x83, 0x99, 0x74, 0xca, 0xdd, 0xeb, + 0x99, 0x29, 0x77, 0x3f, 0x39, 0x24, 0xe5, 0x6e, 0x63, 0x78, 0xba, 0xdd, 0xbf, 0x53, 0x82, 0xc9, + 0x0f, 0x4d, 0xaa, 0xdd, 0x8c, 0x3c, 0x2f, 0xa5, 0x9c, 0x79, 0x5e, 0xca, 0x27, 0xca, 0xf3, 0x72, + 0xea, 0x49, 0x58, 0x7e, 0x50, 0x00, 0x38, 0xb5, 0x3c, 0xbf, 0x66, 0x32, 0x4c, 0x24, 0x77, 0x27, + 0xc9, 0x8e, 0x0e, 0xf9, 0xfb, 0x35, 0xf5, 0x4a, 0x7c, 0xcf, 0xfd, 0xbd, 0x02, 0x4c, 0xeb, 0x89, + 0x94, 0x26, 0xb9, 0x0d, 0xc4, 0x54, 0x86, 0x94, 0xf0, 0x68, 0x7a, 0x12, 0x8e, 0x29, 0xb1, 0xfc, + 0x60, 0xac, 0x0c, 0x88, 0x88, 0xad, 0xbe, 0x07, 0x2e, 0x3d, 0x95, 0x07, 0x63, 0x63, 0x4f, 0xef, + 0x93, 0x42, 0xa6, 0x34, 0x96, 0x14, 0x32, 0xf1, 0xed, 0xe1, 0xf2, 0x43, 0xb7, 0x87, 0xf7, 0xa1, + 0xbe, 0xe3, 0xb9, 0x5d, 0x9e, 0xa5, 0x85, 0xdf, 0xe6, 0x92, 0x67, 0xc4, 0x5d, 0x74, 0xbb, 0xdb, + 0x96, 0x43, 0x4d, 0x9e, 0x01, 0x26, 0xf4, 0x44, 0x2c, 0x2b, 0xfe, 0x18, 0x89, 0xe2, 0xfb, 0x84, + 0xae, 0x90, 0x3a, 0x31, 0x4e, 0xa9, 0xe1, 0xc0, 0xb8, 0x29, 0xb8, 0xa3, 0x12, 0x93, 0xcc, 0xcc, + 0x52, 0x3d, 0xa5, 0xcc, 0x2c, 0x07, 0xf1, 0x84, 0x37, 0xb5, 0x9c, 0xee, 0xcc, 0x13, 0x25, 0x50, + 0xfd, 0xd3, 0x9a, 0x2b, 0xe5, 0xe7, 0xab, 0x6a, 0x8e, 0x7a, 0xec, 0xae, 0x22, 0xfc, 0x28, 0x5f, + 0x6c, 0x87, 0x0e, 0x24, 0x73, 0xad, 0x9d, 0x62, 0x32, 0xd7, 0xfa, 0x78, 0x92, 0xb9, 0x42, 0xbe, + 0x64, 0xae, 0x8d, 0x31, 0x25, 0x73, 0x9d, 0x1c, 0x57, 0x32, 0xd7, 0xa9, 0x91, 0x92, 0xb9, 0x4e, + 0x1f, 0x2b, 0x99, 0xeb, 0x61, 0x09, 0x52, 0xeb, 0xfd, 0x8f, 0xc2, 0x24, 0xfe, 0x44, 0x85, 0x49, + 0x7c, 0xbb, 0x08, 0xd1, 0xd4, 0x77, 0xc2, 0x83, 0x15, 0x6f, 0xf0, 0xb4, 0x16, 0xe2, 0xfa, 0xe8, + 0xd1, 0x96, 0x00, 0x93, 0x32, 0x05, 0x86, 0xb8, 0x37, 0x3a, 0xe4, 0x46, 0x7c, 0x00, 0x2b, 0xbc, + 0xd3, 0x3b, 0xf7, 0xe6, 0x6f, 0x74, 0x3d, 0xb8, 0xf0, 0xc3, 0x46, 0xcf, 0x18, 0x13, 0xa3, 0x7d, + 0xbf, 0x04, 0xf2, 0xf2, 0x77, 0x42, 0xa1, 0xb2, 0x63, 0x45, 0x87, 0xe5, 0x47, 0xf7, 0x26, 0x2e, + 0x33, 0x2e, 0xf2, 0x86, 0x79, 0xbe, 0xbb, 0xcd, 0x01, 0x28, 0xb8, 0xf3, 0x6d, 0x4b, 0x11, 0xad, + 0x20, 0xdb, 0x2f, 0xc7, 0xb6, 0x65, 0x3c, 0xea, 0x41, 0x6e, 0x5b, 0x0a, 0x10, 0x2a, 0x19, 0x62, + 0x97, 0x54, 0x5c, 0xb7, 0x5d, 0xca, 0xbd, 0x4b, 0x1a, 0x0b, 0xba, 0x53, 0xbb, 0xa4, 0xe2, 0xb2, + 0x6d, 0x25, 0x83, 0xbc, 0x0b, 0x0d, 0xdd, 0x30, 0xfa, 0xdd, 0xbe, 0xcd, 0xbd, 0xce, 0x79, 0x6f, + 0x5e, 0x6d, 0x46, 0xbc, 0xa4, 0x58, 0xbe, 0x80, 0x8c, 0x81, 0x31, 0x2e, 0xaf, 0xf5, 0xf5, 0xef, + 0xfd, 0xe8, 0xf2, 0xc7, 0x7e, 0xf0, 0xa3, 0xcb, 0x1f, 0xfb, 0xe1, 0x8f, 0x2e, 0x7f, 0xec, 0x5b, + 0x47, 0x97, 0x0b, 0xdf, 0x3b, 0xba, 0x5c, 0xf8, 0xc1, 0xd1, 0xe5, 0xc2, 0x0f, 0x8f, 0x2e, 0x17, + 0xfe, 0xd3, 0xd1, 0xe5, 0xc2, 0x5f, 0xfb, 0xcf, 0x97, 0x3f, 0xf6, 0xb5, 0x2f, 0x44, 0xd5, 0x59, + 0x50, 0xd5, 0x59, 0x50, 0xc2, 0x17, 0x7a, 0x7b, 0x9d, 0x05, 0x56, 0x9d, 0x08, 0xa2, 0xaa, 0xf3, + 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x25, 0x81, 0xf2, 0xcd, 0xd1, 0xb8, 0x00, 0x00, } func (m *AWSAssumeRole) Marshal() (dAtA []byte, err error) { @@ -4750,6 +4811,29 @@ func (m *AccumulatorWindow) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *AtLeastOnce) 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 *AtLeastOnce) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AtLeastOnce) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func (m *Authorization) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -5378,6 +5462,53 @@ func (m *DaemonTemplate) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *Delivery) 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 *Delivery) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Delivery) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.AtLeastOnce != nil { + { + size, err := m.AtLeastOnce.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.ExactlyOnce != nil { + { + size, err := m.ExactlyOnce.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 *Edge) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -5460,7 +5591,7 @@ func (m *ExactlyOnce) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenerated(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x1a + dAtA[i] = 0x12 } i-- if m.ConsistentAck { @@ -5469,14 +5600,6 @@ func (m *ExactlyOnce) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0 } i-- - dAtA[i] = 0x10 - i-- - if m.Enabled { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- dAtA[i] = 0x8 return len(dAtA) - i, nil } @@ -8187,9 +8310,9 @@ func (m *PipelineSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.ExactlyOnce != nil { + if m.Delivery != nil { { - size, err := m.ExactlyOnce.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Delivery.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -11220,9 +11343,9 @@ func (m *VertexSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.ExactlyOnce != nil { + if m.Delivery != nil { { - size, err := m.ExactlyOnce.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Delivery.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -11826,6 +11949,15 @@ func (m *AccumulatorWindow) Size() (n int) { return n } +func (m *AtLeastOnce) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func (m *Authorization) Size() (n int) { if m == nil { return 0 @@ -12068,6 +12200,23 @@ func (m *DaemonTemplate) Size() (n int) { return n } +func (m *Delivery) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ExactlyOnce != nil { + l = m.ExactlyOnce.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if m.AtLeastOnce != nil { + l = m.AtLeastOnce.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + return n +} + func (m *Edge) Size() (n int) { if m == nil { return 0 @@ -12096,7 +12245,6 @@ func (m *ExactlyOnce) Size() (n int) { var l int _ = l n += 2 - n += 2 if m.DedupWindow != nil { l = m.DedupWindow.Size() n += 1 + l + sovGenerated(uint64(l)) @@ -13118,8 +13266,8 @@ func (m *PipelineSpec) Size() (n int) { l = m.InterStepBuffer.Size() n += 1 + l + sovGenerated(uint64(l)) } - if m.ExactlyOnce != nil { - l = m.ExactlyOnce.Size() + if m.Delivery != nil { + l = m.Delivery.Size() n += 1 + l + sovGenerated(uint64(l)) } return n @@ -14252,8 +14400,8 @@ func (m *VertexSpec) Size() (n int) { l = m.InterStepBuffer.Size() n += 1 + l + sovGenerated(uint64(l)) } - if m.ExactlyOnce != nil { - l = m.ExactlyOnce.Size() + if m.Delivery != nil { + l = m.Delivery.Size() n += 1 + l + sovGenerated(uint64(l)) } return n @@ -14487,6 +14635,15 @@ func (this *AccumulatorWindow) String() string { }, "") return s } +func (this *AtLeastOnce) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&AtLeastOnce{`, + `}`, + }, "") + return s +} func (this *Authorization) String() string { if this == nil { return "nil" @@ -14647,6 +14804,17 @@ func (this *DaemonTemplate) String() string { }, "") return s } +func (this *Delivery) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Delivery{`, + `ExactlyOnce:` + strings.Replace(this.ExactlyOnce.String(), "ExactlyOnce", "ExactlyOnce", 1) + `,`, + `AtLeastOnce:` + strings.Replace(this.AtLeastOnce.String(), "AtLeastOnce", "AtLeastOnce", 1) + `,`, + `}`, + }, "") + return s +} func (this *Edge) String() string { if this == nil { return "nil" @@ -14665,7 +14833,6 @@ func (this *ExactlyOnce) String() string { return "nil" } s := strings.Join([]string{`&ExactlyOnce{`, - `Enabled:` + fmt.Sprintf("%v", this.Enabled) + `,`, `ConsistentAck:` + fmt.Sprintf("%v", this.ConsistentAck) + `,`, `DedupWindow:` + strings.Replace(fmt.Sprintf("%v", this.DedupWindow), "Duration", "v11.Duration", 1) + `,`, `}`, @@ -15387,7 +15554,7 @@ func (this *PipelineSpec) String() string { `Templates:` + strings.Replace(this.Templates.String(), "Templates", "Templates", 1) + `,`, `SideInputs:` + repeatedStringForSideInputs + `,`, `InterStepBuffer:` + strings.Replace(this.InterStepBuffer.String(), "InterStepBuffer", "InterStepBuffer", 1) + `,`, - `ExactlyOnce:` + strings.Replace(this.ExactlyOnce.String(), "ExactlyOnce", "ExactlyOnce", 1) + `,`, + `Delivery:` + strings.Replace(this.Delivery.String(), "Delivery", "Delivery", 1) + `,`, `}`, }, "") return s @@ -16115,7 +16282,7 @@ func (this *VertexSpec) String() string { `Watermark:` + strings.Replace(strings.Replace(this.Watermark.String(), "Watermark", "Watermark", 1), `&`, ``, 1) + `,`, `Lifecycle:` + strings.Replace(strings.Replace(this.Lifecycle.String(), "VertexLifecycle", "VertexLifecycle", 1), `&`, ``, 1) + `,`, `InterStepBuffer:` + strings.Replace(this.InterStepBuffer.String(), "InterStepBuffer", "InterStepBuffer", 1) + `,`, - `ExactlyOnce:` + strings.Replace(this.ExactlyOnce.String(), "ExactlyOnce", "ExactlyOnce", 1) + `,`, + `Delivery:` + strings.Replace(this.Delivery.String(), "Delivery", "Delivery", 1) + `,`, `}`, }, "") return s @@ -17989,6 +18156,56 @@ func (m *AccumulatorWindow) Unmarshal(dAtA []byte) error { } return nil } +func (m *AtLeastOnce) 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: AtLeastOnce: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AtLeastOnce: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + 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 *Authorization) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -19762,6 +19979,128 @@ func (m *DaemonTemplate) Unmarshal(dAtA []byte) error { } return nil } +func (m *Delivery) 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: Delivery: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Delivery: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExactlyOnce", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ExactlyOnce == nil { + m.ExactlyOnce = &ExactlyOnce{} + } + if err := m.ExactlyOnce.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AtLeastOnce", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AtLeastOnce == nil { + m.AtLeastOnce = &AtLeastOnce{} + } + if err := m.AtLeastOnce.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 *Edge) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -19975,26 +20314,6 @@ func (m *ExactlyOnce) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Enabled", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenerated - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Enabled = bool(v != 0) - case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field ConsistentAck", wireType) } @@ -20014,7 +20333,7 @@ func (m *ExactlyOnce) Unmarshal(dAtA []byte) error { } } m.ConsistentAck = bool(v != 0) - case 3: + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field DedupWindow", wireType) } @@ -29101,7 +29420,7 @@ func (m *PipelineSpec) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 10: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExactlyOnce", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Delivery", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -29128,10 +29447,10 @@ func (m *PipelineSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ExactlyOnce == nil { - m.ExactlyOnce = &ExactlyOnce{} + if m.Delivery == nil { + m.Delivery = &Delivery{} } - if err := m.ExactlyOnce.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Delivery.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -37862,7 +38181,7 @@ func (m *VertexSpec) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 10: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ExactlyOnce", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Delivery", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -37889,10 +38208,10 @@ func (m *VertexSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.ExactlyOnce == nil { - m.ExactlyOnce = &ExactlyOnce{} + if m.Delivery == nil { + m.Delivery = &Delivery{} } - if err := m.ExactlyOnce.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Delivery.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/pkg/apis/numaflow/v1alpha1/generated.proto b/pkg/apis/numaflow/v1alpha1/generated.proto index e13a83a909..b272baec41 100644 --- a/pkg/apis/numaflow/v1alpha1/generated.proto +++ b/pkg/apis/numaflow/v1alpha1/generated.proto @@ -271,6 +271,10 @@ message AccumulatorWindow { optional .k8s.io.apimachinery.pkg.apis.meta.v1.Duration timeout = 1; } +// AtLeastOnce is the at-least-once delivery settings (default behavior). +message AtLeastOnce { +} + message Authorization { // A secret selector which contains bearer token // To use this, the client needs to add "Authorization: Bearer " in the header @@ -450,6 +454,17 @@ message DaemonTemplate { optional ContainerTemplate initContainerTemplate = 4; } +// Delivery is the delivery semantics for the pipeline. +message Delivery { + // ExactlyOnce enables exactly-once processing semantics. + // +optional + optional ExactlyOnce exactlyOnce = 1; + + // AtLeastOnce enables at-least-once processing semantics (default behavior). + // +optional + optional AtLeastOnce atLeastOnce = 2; +} + message Edge { optional string from = 1; @@ -467,19 +482,16 @@ message Edge { optional string onFull = 4; } +// ExactlyOnce is the exactly-once delivery settings. message ExactlyOnce { - // Enabled enables exactly once processing. - // +kubebuilder:default=false - optional bool enabled = 1; - // ConsistentAck enables consistent acknowledgement of offsets to ISB throughout the pipeline. - // +kubebuilder:default=true - optional bool consistentAck = 2; + // +kubebuilder:default=false + optional bool consistentAck = 1; // DedupWindow is the duration for which the deduplication will be enabled. // +optional // +kubebuilder:default="2m" - optional .k8s.io.apimachinery.pkg.apis.meta.v1.Duration dedupWindow = 3; + optional .k8s.io.apimachinery.pkg.apis.meta.v1.Duration dedupWindow = 2; } // FixedWindow describes a fixed window @@ -1323,9 +1335,9 @@ message PipelineSpec { // +optional optional InterStepBuffer interStepBuffer = 9; - // ExactlyOnce is the exactly-once settings for the pipeline. + // Delivery is the delivery semantics for the pipeline. // +optional - optional ExactlyOnce exactlyOnce = 10; + optional Delivery delivery = 10; } message PipelineStatus { @@ -2261,9 +2273,9 @@ message VertexSpec { // +optional optional InterStepBuffer interStepBuffer = 9; - // ExactlyOnce indicates the exactly-once settings for the vertex, it's populated from the pipeline exactlyOnce settings. + // Delivery indicates the delivery semantics for the vertex, it's populated from the pipeline delivery settings. // +optional - optional ExactlyOnce exactlyOnce = 10; + optional Delivery delivery = 10; } message VertexStatus { diff --git a/pkg/apis/numaflow/v1alpha1/pipeline_types.go b/pkg/apis/numaflow/v1alpha1/pipeline_types.go index d494f4f91a..ef89b6ade9 100644 --- a/pkg/apis/numaflow/v1alpha1/pipeline_types.go +++ b/pkg/apis/numaflow/v1alpha1/pipeline_types.go @@ -455,8 +455,8 @@ func (p Pipeline) GetTerminationGracePeriodSeconds() int64 { if p.Spec.Lifecycle.DeletionGracePeriodSeconds != nil { return *p.Spec.Lifecycle.DeletionGracePeriodSeconds } - if p.Spec.Lifecycle.DeletionGracePeriodSeconds != nil { - return *p.Spec.Lifecycle.DeletionGracePeriodSeconds + if p.Spec.Lifecycle.DeprecatedDeleteGracePeriodSeconds != nil { + return *p.Spec.Lifecycle.DeprecatedDeleteGracePeriodSeconds } if p.DeletionGracePeriodSeconds != nil { return *p.DeletionGracePeriodSeconds @@ -511,9 +511,9 @@ type PipelineSpec struct { // InterStepBuffer configuration specific to this pipeline. // +optional InterStepBuffer *InterStepBuffer `json:"interStepBuffer,omitempty" protobuf:"bytes,9,opt,name=interStepBuffer"` - // ExactlyOnce is the exactly-once settings for the pipeline. + // Delivery is the delivery semantics for the pipeline. // +optional - ExactlyOnce *ExactlyOnce `json:"exactlyOnce,omitempty" protobuf:"bytes,10,opt,name=exactlyOnce"` + Delivery *Delivery `json:"delivery,omitempty" protobuf:"bytes,10,opt,name=delivery"` } // InterStepBuffer configuration specifically for the pipeline. @@ -523,27 +523,43 @@ type InterStepBuffer struct { Compression *Compression `json:"compression,omitempty" protobuf:"bytes,2,opt,name=compression"` } -type ExactlyOnce struct { - // Enabled enables exactly once processing. - // +kubebuilder:default=false - Enabled bool `json:"enabled,omitempty" protobuf:"bytes,1,opt,name=enabled"` - // ConsistentAck enables consistent acknowledgement of offsets to ISB throughout the pipeline. - // +kubebuilder:default=true - ConsistentAck bool `json:"consistentAck,omitempty" protobuf:"bytes,2,opt,name=consistentAck"` - // DedupWindow is the duration for which the deduplication will be enabled. +// Delivery is the delivery semantics for the pipeline. +type Delivery struct { + // ExactlyOnce enables exactly-once processing semantics. // +optional - // +kubebuilder:default="2m" - DedupWindow *metav1.Duration `json:"dedupWindow,omitempty" protobuf:"bytes,3,opt,name=dedupWindow"` + ExactlyOnce *ExactlyOnce `json:"exactlyOnce,omitempty" protobuf:"bytes,1,opt,name=exactlyOnce"` + // AtLeastOnce enables at-least-once processing semantics (default behavior). + // +optional + AtLeastOnce *AtLeastOnce `json:"atLeastOnce,omitempty" protobuf:"bytes,2,opt,name=atLeastOnce"` +} + +// IsExactlyOnce returns true if exactly-once delivery is enabled. +func (d *Delivery) IsExactlyOnce() bool { + return d != nil && d.ExactlyOnce != nil } // GetDedupWindow returns the dedup window duration string, defaulting to "2m" if not set. -func (e ExactlyOnce) GetDedupWindow() string { - if e.DedupWindow != nil { - return e.DedupWindow.Duration.String() +func (d *Delivery) GetDedupWindow() string { + if d != nil && d.ExactlyOnce != nil && d.ExactlyOnce.DedupWindow != nil { + return d.ExactlyOnce.DedupWindow.Duration.String() } return "2m" } +// ExactlyOnce is the exactly-once delivery settings. +type ExactlyOnce struct { + // ConsistentAck enables consistent acknowledgement of offsets to ISB throughout the pipeline. + // +kubebuilder:default=false + ConsistentAck bool `json:"consistentAck,omitempty" protobuf:"bytes,1,opt,name=consistentAck"` + // DedupWindow is the duration for which the deduplication will be enabled. + // +optional + // +kubebuilder:default="2m" + DedupWindow *metav1.Duration `json:"dedupWindow,omitempty" protobuf:"bytes,2,opt,name=dedupWindow"` +} + +// AtLeastOnce is the at-least-once delivery settings (default behavior). +type AtLeastOnce struct{} + // Compression is the compression settings for the messages in the InterStepBuffer type Compression struct { // Type is the type of compression to be used diff --git a/pkg/apis/numaflow/v1alpha1/vertex_types.go b/pkg/apis/numaflow/v1alpha1/vertex_types.go index ce8f147e83..c0dc454967 100644 --- a/pkg/apis/numaflow/v1alpha1/vertex_types.go +++ b/pkg/apis/numaflow/v1alpha1/vertex_types.go @@ -557,9 +557,9 @@ type VertexSpec struct { // InterStepBuffer configuration specific to this pipeline. // +optional InterStepBuffer *InterStepBuffer `json:"interStepBuffer,omitempty" protobuf:"bytes,9,opt,name=interStepBuffer"` - // ExactlyOnce indicates the exactly-once settings for the vertex, it's populated from the pipeline exactlyOnce settings. + // Delivery indicates the delivery semantics for the vertex, it's populated from the pipeline delivery settings. // +optional - ExactlyOnce *ExactlyOnce `json:"exactlyOnce,omitempty" protobuf:"bytes,10,opt,name=exactlyOnce"` + Delivery *Delivery `json:"delivery,omitempty" protobuf:"bytes,10,opt,name=delivery"` } type AbstractVertex struct { diff --git a/pkg/apis/numaflow/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/numaflow/v1alpha1/zz_generated.deepcopy.go index 67251323fe..0c458b07cb 100644 --- a/pkg/apis/numaflow/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/numaflow/v1alpha1/zz_generated.deepcopy.go @@ -303,6 +303,22 @@ func (in *AccumulatorWindow) DeepCopy() *AccumulatorWindow { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AtLeastOnce) DeepCopyInto(out *AtLeastOnce) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AtLeastOnce. +func (in *AtLeastOnce) DeepCopy() *AtLeastOnce { + if in == nil { + return nil + } + out := new(AtLeastOnce) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Authorization) DeepCopyInto(out *Authorization) { *out = *in @@ -632,6 +648,32 @@ func (in *DaemonTemplate) DeepCopy() *DaemonTemplate { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Delivery) DeepCopyInto(out *Delivery) { + *out = *in + if in.ExactlyOnce != nil { + in, out := &in.ExactlyOnce, &out.ExactlyOnce + *out = new(ExactlyOnce) + (*in).DeepCopyInto(*out) + } + if in.AtLeastOnce != nil { + in, out := &in.AtLeastOnce, &out.AtLeastOnce + *out = new(AtLeastOnce) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Delivery. +func (in *Delivery) DeepCopy() *Delivery { + if in == nil { + return nil + } + out := new(Delivery) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Edge) DeepCopyInto(out *Edge) { *out = *in @@ -1968,9 +2010,9 @@ func (in *PipelineSpec) DeepCopyInto(out *PipelineSpec) { *out = new(InterStepBuffer) (*in).DeepCopyInto(*out) } - if in.ExactlyOnce != nil { - in, out := &in.ExactlyOnce, &out.ExactlyOnce - *out = new(ExactlyOnce) + if in.Delivery != nil { + in, out := &in.Delivery, &out.Delivery + *out = new(Delivery) (*in).DeepCopyInto(*out) } return @@ -3613,9 +3655,9 @@ func (in *VertexSpec) DeepCopyInto(out *VertexSpec) { *out = new(InterStepBuffer) (*in).DeepCopyInto(*out) } - if in.ExactlyOnce != nil { - in, out := &in.ExactlyOnce, &out.ExactlyOnce - *out = new(ExactlyOnce) + if in.Delivery != nil { + in, out := &in.Delivery, &out.Delivery + *out = new(Delivery) (*in).DeepCopyInto(*out) } return diff --git a/pkg/apis/numaflow/v1alpha1/zz_generated.openapi.go b/pkg/apis/numaflow/v1alpha1/zz_generated.openapi.go index 881c2404ac..aa27fdbbd4 100644 --- a/pkg/apis/numaflow/v1alpha1/zz_generated.openapi.go +++ b/pkg/apis/numaflow/v1alpha1/zz_generated.openapi.go @@ -33,6 +33,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.AbstractSink": schema_pkg_apis_numaflow_v1alpha1_AbstractSink(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.AbstractVertex": schema_pkg_apis_numaflow_v1alpha1_AbstractVertex(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.AccumulatorWindow": schema_pkg_apis_numaflow_v1alpha1_AccumulatorWindow(ref), + "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.AtLeastOnce": schema_pkg_apis_numaflow_v1alpha1_AtLeastOnce(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Authorization": schema_pkg_apis_numaflow_v1alpha1_Authorization(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Backoff": schema_pkg_apis_numaflow_v1alpha1_Backoff(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.BasicAuth": schema_pkg_apis_numaflow_v1alpha1_BasicAuth(ref), @@ -43,6 +44,7 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Container": schema_pkg_apis_numaflow_v1alpha1_Container(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ContainerTemplate": schema_pkg_apis_numaflow_v1alpha1_ContainerTemplate(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.DaemonTemplate": schema_pkg_apis_numaflow_v1alpha1_DaemonTemplate(ref), + "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Delivery": schema_pkg_apis_numaflow_v1alpha1_Delivery(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Edge": schema_pkg_apis_numaflow_v1alpha1_Edge(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ExactlyOnce": schema_pkg_apis_numaflow_v1alpha1_ExactlyOnce(ref), "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.FixedWindow": schema_pkg_apis_numaflow_v1alpha1_FixedWindow(ref), @@ -727,6 +729,17 @@ func schema_pkg_apis_numaflow_v1alpha1_AccumulatorWindow(ref common.ReferenceCal } } +func schema_pkg_apis_numaflow_v1alpha1_AtLeastOnce(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "AtLeastOnce is the at-least-once delivery settings (default behavior).", + Type: []string{"object"}, + }, + }, + } +} + func schema_pkg_apis_numaflow_v1alpha1_Authorization(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -1330,6 +1343,33 @@ func schema_pkg_apis_numaflow_v1alpha1_DaemonTemplate(ref common.ReferenceCallba } } +func schema_pkg_apis_numaflow_v1alpha1_Delivery(ref common.ReferenceCallback) common.OpenAPIDefinition { + return common.OpenAPIDefinition{ + Schema: spec.Schema{ + SchemaProps: spec.SchemaProps{ + Description: "Delivery is the delivery semantics for the pipeline.", + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "exactlyOnce": { + SchemaProps: spec.SchemaProps{ + Description: "ExactlyOnce enables exactly-once processing semantics.", + Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ExactlyOnce"), + }, + }, + "atLeastOnce": { + SchemaProps: spec.SchemaProps{ + Description: "AtLeastOnce enables at-least-once processing semantics (default behavior).", + Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.AtLeastOnce"), + }, + }, + }, + }, + }, + Dependencies: []string{ + "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.AtLeastOnce", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ExactlyOnce"}, + } +} + func schema_pkg_apis_numaflow_v1alpha1_Edge(ref common.ReferenceCallback) common.OpenAPIDefinition { return common.OpenAPIDefinition{ Schema: spec.Schema{ @@ -1376,15 +1416,9 @@ func schema_pkg_apis_numaflow_v1alpha1_ExactlyOnce(ref common.ReferenceCallback) return common.OpenAPIDefinition{ Schema: spec.Schema{ SchemaProps: spec.SchemaProps{ - Type: []string{"object"}, + Description: "ExactlyOnce is the exactly-once delivery settings.", + Type: []string{"object"}, Properties: map[string]spec.Schema{ - "enabled": { - SchemaProps: spec.SchemaProps{ - Description: "Enabled enables exactly once processing.", - Type: []string{"boolean"}, - Format: "", - }, - }, "consistentAck": { SchemaProps: spec.SchemaProps{ Description: "ConsistentAck enables consistent acknowledgement of offsets to ISB throughout the pipeline.", @@ -4059,17 +4093,17 @@ func schema_pkg_apis_numaflow_v1alpha1_PipelineSpec(ref common.ReferenceCallback Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.InterStepBuffer"), }, }, - "exactlyOnce": { + "delivery": { SchemaProps: spec.SchemaProps{ - Description: "ExactlyOnce is the exactly-once settings for the pipeline.", - Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ExactlyOnce"), + Description: "Delivery is the delivery semantics for the pipeline.", + Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Delivery"), }, }, }, }, }, Dependencies: []string{ - "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.AbstractVertex", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Edge", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ExactlyOnce", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.InterStepBuffer", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Lifecycle", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.PipelineLimits", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.SideInput", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Templates", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Watermark"}, + "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.AbstractVertex", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Delivery", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Edge", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.InterStepBuffer", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Lifecycle", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.PipelineLimits", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.SideInput", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Templates", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Watermark"}, } } @@ -6798,10 +6832,10 @@ func schema_pkg_apis_numaflow_v1alpha1_VertexSpec(ref common.ReferenceCallback) Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.InterStepBuffer"), }, }, - "exactlyOnce": { + "delivery": { SchemaProps: spec.SchemaProps{ - Description: "ExactlyOnce indicates the exactly-once settings for the vertex, it's populated from the pipeline exactlyOnce settings.", - Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ExactlyOnce"), + Description: "Delivery indicates the delivery semantics for the vertex, it's populated from the pipeline delivery settings.", + Ref: ref("github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Delivery"), }, }, }, @@ -6809,7 +6843,7 @@ func schema_pkg_apis_numaflow_v1alpha1_VertexSpec(ref common.ReferenceCallback) }, }, Dependencies: []string{ - "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.CombinedEdge", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ContainerTemplate", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ExactlyOnce", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.InterStepBuffer", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Metadata", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Scale", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Sink", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Source", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.UDF", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.UpdateStrategy", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.VertexLifecycle", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.VertexLimits", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Watermark", "k8s.io/api/core/v1.Affinity", "k8s.io/api/core/v1.Container", "k8s.io/api/core/v1.LocalObjectReference", "k8s.io/api/core/v1.PodDNSConfig", "k8s.io/api/core/v1.PodResourceClaim", "k8s.io/api/core/v1.PodSecurityContext", "k8s.io/api/core/v1.Toleration", "k8s.io/api/core/v1.Volume"}, + "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.CombinedEdge", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.ContainerTemplate", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Delivery", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.InterStepBuffer", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Metadata", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Scale", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Sink", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Source", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.UDF", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.UpdateStrategy", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.VertexLifecycle", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.VertexLimits", "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1.Watermark", "k8s.io/api/core/v1.Affinity", "k8s.io/api/core/v1.Container", "k8s.io/api/core/v1.LocalObjectReference", "k8s.io/api/core/v1.PodDNSConfig", "k8s.io/api/core/v1.PodResourceClaim", "k8s.io/api/core/v1.PodSecurityContext", "k8s.io/api/core/v1.Toleration", "k8s.io/api/core/v1.Volume"}, } } diff --git a/pkg/reconciler/pipeline/controller.go b/pkg/reconciler/pipeline/controller.go index de7b42623f..d63a6a54bb 100644 --- a/pkg/reconciler/pipeline/controller.go +++ b/pkg/reconciler/pipeline/controller.go @@ -330,8 +330,8 @@ func (r *pipelineReconciler) reconcileFixedResources(ctx context.Context, pl *df args := []string{fmt.Sprintf("--buffers=%s", strings.Join(bfs, ",")), fmt.Sprintf("--buckets=%s", strings.Join(bks, ","))} args = append(args, fmt.Sprintf("--side-inputs-store=%s", pl.GetSideInputsStoreName())) // Add dedup window when exactly-once is enabled - if pl.Spec.ExactlyOnce != nil && pl.Spec.ExactlyOnce.Enabled { - args = append(args, fmt.Sprintf("--dedup-window=%s", pl.Spec.ExactlyOnce.GetDedupWindow())) + if pl.Spec.Delivery.IsExactlyOnce() { + args = append(args, fmt.Sprintf("--dedup-window=%s", pl.Spec.Delivery.GetDedupWindow())) } batchJob := buildISBBatchJob(pl, r.image, isbSvc.Status.Config, "isbsvc-create", args, "cre") if err := r.client.Create(ctx, batchJob); err != nil && !apierrors.IsAlreadyExists(err) { @@ -689,7 +689,7 @@ func buildVertices(pl *dfv1.Pipeline) map[string]dfv1.Vertex { DesiredPhase: dfv1.VertexPhase(pl.GetDesiredPhase()), }, InterStepBuffer: pl.Spec.InterStepBuffer, - ExactlyOnce: pl.Spec.ExactlyOnce, + Delivery: pl.Spec.Delivery, } hash := sharedutil.MustHash(spec.DeepCopyWithoutReplicasAndLifecycle()) obj := dfv1.Vertex{ From ae2411779ee1ffff39b75a9cbf8564cba746138c Mon Sep 17 00:00:00 2001 From: Yashash H L Date: Wed, 17 Dec 2025 14:24:38 +0530 Subject: [PATCH 4/4] add log Signed-off-by: Yashash H L --- rust/numaflow-core/src/pipeline/isb/jetstream/js_reader.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rust/numaflow-core/src/pipeline/isb/jetstream/js_reader.rs b/rust/numaflow-core/src/pipeline/isb/jetstream/js_reader.rs index b61785aeb9..70113a4904 100644 --- a/rust/numaflow-core/src/pipeline/isb/jetstream/js_reader.rs +++ b/rust/numaflow-core/src/pipeline/isb/jetstream/js_reader.rs @@ -17,7 +17,7 @@ use bytes::Bytes; use prost::Message as ProtoMessage; use serde_json::json; use tokio_stream::StreamExt; -use tracing::warn; +use tracing::{info, warn}; /// JSWrappedMessage is a wrapper around the JetStream message that includes the /// partition index and the vertex name. @@ -137,6 +137,9 @@ impl JetStreamReader { .exactly_once .map(|eo| eo.consistent_ack) .unwrap_or(false); + if double_ack { + info!("Exactly-once with consistent_ack is enabled"); + } (compression, double_ack) } None => (None, false),
-enabled
bool -
- -

- -Enabled enables exactly once processing. -

- -
- consistentAck
bool
-exactlyOnce
- ExactlyOnce - +delivery
+ Delivery
@@ -7957,7 +8052,7 @@ InterStepBuffer configuration specific to this pipeline. (Optional)

-ExactlyOnce is the exactly-once settings for the pipeline. +Delivery is the delivery semantics for the pipeline.

-exactlyOnce
- ExactlyOnce - +delivery
+ Delivery
@@ -8403,7 +8497,7 @@ InterStepBuffer configuration specific to this pipeline. (Optional)

-ExactlyOnce is the exactly-once settings for the pipeline. +Delivery is the delivery semantics for the pipeline.

-exactlyOnce
- ExactlyOnce - +delivery
+ Delivery
@@ -13944,8 +14037,8 @@ InterStepBuffer configuration specific to this pipeline. (Optional)

-ExactlyOnce indicates the exactly-once settings for the vertex, it’s -populated from the pipeline exactlyOnce settings. +Delivery indicates the delivery semantics for the vertex, it’s populated +from the pipeline delivery settings.

-exactlyOnce
- ExactlyOnce - +delivery
+ Delivery
@@ -14497,8 +14589,8 @@ InterStepBuffer configuration specific to this pipeline. (Optional)

-ExactlyOnce indicates the exactly-once settings for the vertex, it’s -populated from the pipeline exactlyOnce settings. +Delivery indicates the delivery semantics for the vertex, it’s populated +from the pipeline delivery settings.