Repository: numaproj/numaflow
Pull request #264 (2022-10-25 03:41:39)

fix: set default property values for minimal CRD installation
Signed-off-by: Derek Wang <whynowy@gmail.com>

When doing minimal CRD installation, default values of some of the properties are not set, then we see unexpected behaviors. This PR fix the issue by setting default values.

<!--

Before you push your changes:

* Run `make pre-push -B` to fix codegen and lint problems.

Then, you MUST:

* Sign-off your commit (otherwise the DCO check will fail).
* Use [a conventional commit message](https://www.conventionalcommits.org/en/v1.0.0/) (otherwise the commit message check will fail).

If you did not do this, reset all your commit and replace them with a single commit:

```
git reset HEAD~1 ;# change 1 to how many commits you made
git commit --signoff -m 'feat: my feat. Fixes #1234'
```

When creating your PR: 

* Make sure that "Fixes #" or "Closes #" is in both the PR title (for release notes) and description (to automatically link and close the issue).
* Say how you tested your changes. If you changed the UI, attach screenshots.
* Set your PR as a draft initially.
* Your PR needs to pass the required checks before it can be approved. 
* Once required tests have passed, mark your PR "Ready for review".

If changes were requested, once you've made them, you MUST dismiss the review to get it reviewed again.

-->



Patch:
diff --git a/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml b/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml
index 0dd115f8..98b9a22a 100644
--- a/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml
+++ b/config/base/crds/full/numaflow.numaproj.io_pipelines.yaml
@@ -121,7 +121,7 @@ spec:
                   by each vertex's settings
                 properties:
                   bufferMaxLength:
-                    default: 30000
+                    default: 50000
                     description: BufferMaxLength is used to define the max length
                       of a buffer Only applies to UDF and Source vertice as only they
                       do buffer write. It can be overridden by the settings in vertex
diff --git a/config/install.yaml b/config/install.yaml
index cd680bf1..fba19bdf 100644
--- a/config/install.yaml
+++ b/config/install.yaml
@@ -4847,7 +4847,7 @@ spec:
                   by each vertex's settings
                 properties:
                   bufferMaxLength:
-                    default: 30000
+                    default: 50000
                     description: BufferMaxLength is used to define the max length
                       of a buffer Only applies to UDF and Source vertice as only they
                       do buffer write. It can be overridden by the settings in vertex
diff --git a/config/namespace-install.yaml b/config/namespace-install.yaml
index 9d68721d..3f26a07b 100644
--- a/config/namespace-install.yaml
+++ b/config/namespace-install.yaml
@@ -4847,7 +4847,7 @@ spec:
                   by each vertex's settings
                 properties:
                   bufferMaxLength:
-                    default: 30000
+                    default: 50000
                     description: BufferMaxLength is used to define the max length
                       of a buffer Only applies to UDF and Source vertice as only they
                       do buffer write. It can be overridden by the settings in vertex
diff --git a/pkg/apis/numaflow/v1alpha1/const.go b/pkg/apis/numaflow/v1alpha1/const.go
index 35c59410..d155db97 100644
--- a/pkg/apis/numaflow/v1alpha1/const.go
+++ b/pkg/apis/numaflow/v1alpha1/const.go
@@ -98,8 +98,10 @@ const (
 
 	DefaultRequeueAfter = 10 * time.Second
 
+	// ISB
 	DefaultBufferLength     = 50000
 	DefaultBufferUsageLimit = 0.8
+	DefaultReadBatchSize    = 500
 
 	// Auto scaling
 	DefaultLookbackSeconds         = 180 // Default lookback seconds for calculating avg rate and pending
@@ -124,9 +126,6 @@ const (
 	// Default window options
 	DefaultWindowType     = FixedType
 	DefaultWindowDuration = 0
-
-	// Default reduce forward options
-	DefaultReadBatchSize = 100
 )
 
 // PBQ store's backend type.
diff --git a/pkg/apis/numaflow/v1alpha1/generated.pb.go b/pkg/apis/numaflow/v1alpha1/generated.pb.go
index 6d2ead61..a7ee3172 100644
--- a/pkg/apis/numaflow/v1alpha1/generated.pb.go
+++ b/pkg/apis/numaflow/v1alpha1/generated.pb.go
@@ -1632,299 +1632,299 @@ func init() {
 }
 
 var fileDescriptor_9d0d1b17d3865563 = []byte{
-	// 4671 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7c, 0x5d, 0x6c, 0x24, 0x57,
-	0x56, 0x7f, 0xaa, 0x3f, 0xec, 0xee, 0xd3, 0xf6, 0xd8, 0xbe, 0x33, 0x99, 0xf4, 0x78, 0x27, 0xee,
-	0xf9, 0x77, 0x94, 0x68, 0xfe, 0xb0, 0xdb, 0x26, 0x26, 0xcb, 0xce, 0x02, 0xd9, 0xc4, 0x6d, 0x8f,
-	0x3d, 0x9e, 0xb1, 0x27, 0xe6, 0xb4, 0x3d, 0xb3, 0x49, 0x56, 0x0c, 0xe5, 0xea, 0xdb, 0xed, 0x4a,
-	0x57, 0x57, 0xf5, 0x56, 0xdd, 0xf6, 0x8c, 0x23, 0x56, 0x20, 0xf1, 0x10, 0x10, 0xa0, 0x5d, 0x69,
-	0x5f, 0x90, 0x56, 0xac, 0x78, 0x58, 0x09, 0x81, 0xb4, 0x2f, 0x08, 0x24, 0x04, 0x5a, 0x89, 0x27,
-	0x14, 0x5e, 0x50, 0x1e, 0x90, 0x08, 0xd2, 0xca, 0xda, 0x18, 0x89, 0x37, 0xc4, 0xa2, 0x7d, 0x1b,
-	0x21, 0x81, 0xee, 0x47, 0x7d, 0x76, 0xb5, 0xc7, 0xee, 0xb6, 0xc3, 0x03, 0xf3, 0xd6, 0x75, 0xcf,
-	0x39, 0xbf, 0x73, 0xeb, 0x7e, 0x9c, 0x7b, 0x3e, 0x6e, 0x35, 0xac, 0xb7, 0x4d, 0xb6, 0xdf, 0xdf,
-	0xab, 0x19, 0x4e, 0x77, 0xd1, 0xee, 0x77, 0xf5, 0x9e, 0xeb, 0x7c, 0x20, 0x7e, 0xb4, 0x2c, 0xe7,
-	0xf1, 0x62, 0xaf, 0xd3, 0x5e, 0xd4, 0x7b, 0xa6, 0x17, 0xb6, 0x1c, 0xbc, 0xae, 0x5b, 0xbd, 0x7d,
-	0xfd, 0xf5, 0xc5, 0x36, 0xb5, 0xa9, 0xab, 0x33, 0xda, 0xac, 0xf5, 0x5c, 0x87, 0x39, 0xe4, 0x2b,
-	0x21, 0x50, 0xcd, 0x07, 0xaa, 0xf9, 0x62, 0xb5, 0x5e, 0xa7, 0x5d, 0xe3, 0x40, 0x61, 0x8b, 0x0f,
-	0x34, 0xff, 0xa5, 0x48, 0x0f, 0xda, 0x4e, 0xdb, 0x59, 0x14, 0x78, 0x7b, 0xfd, 0x96, 0x78, 0x12,
-	0x0f, 0xe2, 0x97, 0xd4, 0x33, 0x5f, 0xed, 0xdc, 0xf2, 0x6a, 0xa6, 0xc3, 0xbb, 0xb5, 0x68, 0x38,
-	0x2e, 0x5d, 0x3c, 0x18, 0xe8, 0xcb, 0xfc, 0x1b, 0x21, 0x4f, 0x57, 0x37, 0xf6, 0x4d, 0x9b, 0xba,
-	0x87, 0xfe, 0xbb, 0x2c, 0xba, 0xd4, 0x73, 0xfa, 0xae, 0x41, 0xcf, 0x24, 0xe5, 0x2d, 0x76, 0x29,
-	0xd3, 0xd3, 0x74, 0x2d, 0x0e, 0x93, 0x72, 0xfb, 0x36, 0x33, 0xbb, 0x83, 0x6a, 0x7e, 0xe9, 0x59,
-	0x02, 0x9e, 0xb1, 0x4f, 0xbb, 0x7a, 0x52, 0xae, 0xfa, 0x1f, 0x53, 0x70, 0x69, 0x79, 0xcf, 0x63,
-	0xae, 0x6e, 0xb0, 0x07, 0xd4, 0x65, 0xf4, 0x09, 0xb9, 0x01, 0x39, 0x5b, 0xef, 0xd2, 0xb2, 0x76,
-	0x43, 0xbb, 0x59, 0xac, 0x4f, 0x7d, 0x7c, 0x54, 0x79, 0xe1, 0xf8, 0xa8, 0x92, 0xbb, 0xaf, 0x77,
-	0x29, 0x0a, 0x0a, 0x31, 0x60, 0x42, 0xbe, 0x6d, 0x39, 0x7b, 0x43, 0xbb, 0x59, 0x5a, 0x7a, 0xab,
-	0x36, 0xe2, 0x34, 0xd5, 0x1a, 0x02, 0xa6, 0x0e, 0xc7, 0x47, 0x95, 0x09, 0xf9, 0x1b, 0x15, 0x34,
-	0x79, 0x1f, 0x72, 0x9e, 0x69, 0x77, 0xca, 0x39, 0xa1, 0xe2, 0xcd, 0xd1, 0x55, 0x98, 0x76, 0xa7,
-	0x5e, 0xe0, 0x6f, 0xc0, 0x7f, 0xa1, 0x00, 0x25, 0xdf, 0xd6, 0x60, 0xce, 0x70, 0x6c, 0xa6, 0xf3,
-	0x81, 0xda, 0xa1, 0xdd, 0x9e, 0xa5, 0x33, 0x5a, 0xce, 0x0b, 0x55, 0x77, 0x47, 0x56, 0xb5, 0x92,
-	0x44, 0xac, 0xbf, 0x78, 0x7c, 0x54, 0x99, 0x1b, 0x68, 0xc6, 0x41, 0xdd, 0xe4, 0x21, 0x64, 0xfb,
-	0xcd, 0x56, 0x79, 0x42, 0x74, 0xe1, 0x57, 0x47, 0xee, 0xc2, 0xee, 0xea, 0x5a, 0x7d, 0xf2, 0xf8,
-	0xa8, 0x92, 0xdd, 0x5d, 0x5d, 0x43, 0x8e, 0x48, 0x3a, 0x50, 0xe0, 0xab, 0xac, 0xa9, 0x33, 0xbd,
-	0x3c, 0x29, 0xd0, 0x97, 0x47, 0x46, 0xdf, 0x52, 0x40, 0xf5, 0xa9, 0xe3, 0xa3, 0x4a, 0xc1, 0x7f,
-	0xc2, 0x40, 0x01, 0xf9, 0xae, 0x06, 0x53, 0xb6, 0xd3, 0xa4, 0x0d, 0x6a, 0x51, 0x83, 0x39, 0x6e,
-	0xb9, 0x70, 0x23, 0x7b, 0xb3, 0xb4, 0xf4, 0xee, 0xc8, 0x1a, 0xe3, 0x6b, 0xb3, 0x76, 0x3f, 0x82,
-	0x7d, 0xdb, 0x66, 0xee, 0x61, 0xfd, 0x8a, 0x5a, 0x9f, 0x53, 0x51, 0x12, 0xc6, 0x3a, 0x41, 0x76,
-	0xa1, 0xc4, 0x1c, 0x8b, 0xaf, 0x7b, 0xd3, 0xb1, 0xbd, 0x72, 0x51, 0xf4, 0x69, 0xa1, 0x26, 0xb7,
-	0x0c, 0xd7, 0x5c, 0xe3, 0x7b, 0xbe, 0x76, 0xf0, 0x7a, 0x6d, 0x27, 0x60, 0xab, 0x5f, 0x56, 0xc0,
-	0xa5, 0xb0, 0xcd, 0xc3, 0x28, 0x0e, 0xa1, 0x30, 0xe3, 0x51, 0xa3, 0xef, 0x9a, 0xec, 0x90, 0x4f,
-	0x31, 0x7d, 0xc2, 0xca, 0x20, 0x06, 0xf8, 0xb5, 0x34, 0xe8, 0x6d, 0xa7, 0xd9, 0x88, 0x73, 0xd7,
-	0x2f, 0x1f, 0x1f, 0x55, 0x66, 0x12, 0x8d, 0x98, 0xc4, 0x24, 0x36, 0xcc, 0x9a, 0x5d, 0xbd, 0x4d,
-	0xb7, 0xfb, 0x96, 0xd5, 0xa0, 0x86, 0x4b, 0x99, 0x57, 0x2e, 0x89, 0x57, 0xb8, 0x99, 0xa6, 0x67,
-	0xd3, 0x31, 0x74, 0xeb, 0x9d, 0xbd, 0x0f, 0xa8, 0xc1, 0x90, 0xb6, 0xa8, 0x4b, 0x6d, 0x83, 0xd6,
-	0xcb, 0xea, 0x65, 0x66, 0x37, 0x12, 0x48, 0x38, 0x80, 0x4d, 0xd6, 0x61, 0xae, 0xe7, 0x9a, 0x8e,
-	0xe8, 0x82, 0xa5, 0x7b, 0x1e, 0xdf, 0xf8, 0xe5, 0x29, 0x61, 0x0c, 0xae, 0x29, 0x98, 0xb9, 0xed,
-	0x24, 0x03, 0x0e, 0xca, 0x90, 0x9b, 0x50, 0xf0, 0x1b, 0xcb, 0xd3, 0x37, 0xb4, 0x9b, 0x79, 0xb9,
-	0x6c, 0x7c, 0x59, 0x0c, 0xa8, 0x64, 0x0d, 0x0a, 0x7a, 0xab, 0x65, 0xda, 0x9c, 0xf3, 0x92, 0x18,
-	0xc2, 0xeb, 0x69, 0xaf, 0xb6, 0xac, 0x78, 0x24, 0x8e, 0xff, 0x84, 0x81, 0x2c, 0xb9, 0x0b, 0xc4,
-	0xa3, 0xee, 0x81, 0x69, 0xd0, 0x65, 0xc3, 0x70, 0xfa, 0x36, 0x13, 0x7d, 0x9f, 0x11, 0x7d, 0x9f,
-	0x57, 0x7d, 0x27, 0x8d, 0x01, 0x0e, 0x4c, 0x91, 0x22, 0xb7, 0x61, 0xf2, 0xc0, 0xb1, 0xfa, 0x5d,
-	0xea, 0x95, 0x67, 0xc5, 0x68, 0xcf, 0xa7, 0x75, 0xe9, 0x81, 0x60, 0xa9, 0xcf, 0x28, 0xf0, 0x49,
-	0xf9, 0xec, 0xa1, 0x2f, 0x4b, 0x4c, 0x98, 0xb0, 0xcc, 0xae, 0xc9, 0xbc, 0xf2, 0x9c, 0x78, 0xb1,
-	0xdb, 0x23, 0x6f, 0x05, 0xb9, 0x05, 0x36, 0x05, 0x98, 0xb4, 0x98, 0xf2, 0x37, 0x2a, 0x05, 0xc4,
-	0x80, 0xbc, 0x67, 0xe8, 0x16, 0x2d, 0x13, 0xa1, 0xe9, 0x6b, 0xa3, 0x9b, 0x4c, 0x8e, 0x52, 0x9f,
-	0x56, 0xef, 0x94, 0x17, 0x8f, 0x28, 0xb1, 0xe7, 0xdf, 0x82, 0xb9, 0x81, 0x4d, 0x48, 0x66, 0x21,
-	0xdb, 0xa1, 0x87, 0xf2, 0xc4, 0x40, 0xfe, 0x93, 0x5c, 0x81, 0xfc, 0x81, 0x6e, 0xf5, 0x69, 0x39,
-	0x23, 0xda, 0xe4, 0xc3, 0x2f, 0x67, 0x6e, 0x69, 0xd5, 0x87, 0x30, 0xbd, 0xdc, 0x67, 0xfb, 0x8e,
-	0x6b, 0x7e, 0x28, 0xf6, 0x11, 0x59, 0x83, 0x3c, 0x73, 0x3a, 0xd4, 0x16, 0xe2, 0xa5, 0xa5, 0x57,
-	0xd3, 0x86, 0x59, 0xae, 0xcd, 0x7b, 0xf4, 0xd0, 0xd7, 0x5b, 0x2f, 0xf2, 0x9e, 0xed, 0x70, 0x39,
-	0x94, 0xe2, 0xd5, 0xf7, 0x60, 0xa2, 0xde, 0x6f, 0xb5, 0xa8, 0x7b, 0x8a, 0x13, 0xac, 0x06, 0x39,
-	0x76, 0xd8, 0x53, 0xbd, 0x0b, 0x96, 0x46, 0x6e, 0xe7, 0xb0, 0x47, 0x9f, 0x1e, 0x55, 0x40, 0xe2,
-	0xf0, 0x27, 0x14, 0x7c, 0xd5, 0x9f, 0x69, 0x70, 0x59, 0x36, 0xaa, 0xd5, 0xb3, 0xe2, 0xd8, 0x2d,
-	0xb3, 0x4d, 0x28, 0xe4, 0x5d, 0xda, 0x34, 0x3d, 0xd5, 0xf7, 0xd5, 0x91, 0x87, 0x1c, 0x39, 0x8a,
-	0x04, 0x95, 0xaf, 0x26, 0x1a, 0x50, 0xa2, 0x93, 0x3e, 0x14, 0x3f, 0xa0, 0xcc, 0x63, 0x2e, 0xd5,
-	0xbb, 0xa2, 0xcf, 0xa5, 0xa5, 0x3b, 0x23, 0xab, 0xba, 0x4b, 0x59, 0x43, 0x20, 0x29, 0x75, 0xd3,
-	0xc7, 0x47, 0x95, 0x62, 0xd0, 0x88, 0xa1, 0xa6, 0xea, 0xbf, 0x65, 0xa0, 0x18, 0x1c, 0x5e, 0xe4,
-	0x15, 0xc8, 0x0b, 0x5b, 0xa1, 0x86, 0x35, 0x58, 0x1e, 0xc2, 0xa4, 0xa0, 0xa4, 0x91, 0x57, 0x61,
-	0xd2, 0x70, 0xba, 0x5d, 0xdd, 0x6e, 0x96, 0x33, 0x37, 0xb2, 0x37, 0x8b, 0xf5, 0x12, 0xdf, 0x15,
-	0x2b, 0xb2, 0x09, 0x7d, 0x1a, 0xb9, 0x0e, 0x39, 0xdd, 0x6d, 0x7b, 0xe5, 0xac, 0xe0, 0x11, 0xa7,
-	0xf3, 0xb2, 0xdb, 0xf6, 0x50, 0xb4, 0x92, 0xaf, 0x42, 0x96, 0xda, 0x07, 0xe5, 0xdc, 0xf0, 0x6d,
-	0x77, 0xdb, 0x3e, 0x78, 0xa0, 0xbb, 0xf5, 0x92, 0xea, 0x43, 0xf6, 0xb6, 0x7d, 0x80, 0x5c, 0x86,
-	0xbc, 0x0b, 0x53, 0x72, 0xe7, 0x6d, 0xf1, 0x8d, 0xec, 0x95, 0xf3, 0x02, 0xa3, 0x32, 0x7c, 0xeb,
-	0x0a, 0xbe, 0xf0, 0x14, 0x89, 0x34, 0x7a, 0x18, 0x83, 0x22, 0xef, 0x42, 0xd1, 0xf7, 0xf2, 0x3c,
-	0x75, 0x4e, 0xa7, 0x1a, 0x60, 0x54, 0x4c, 0x48, 0xbf, 0xd9, 0x37, 0x5d, 0xda, 0xa5, 0x36, 0xf3,
-	0xea, 0x73, 0x4a, 0x41, 0xd1, 0xa7, 0x7a, 0x18, 0xa2, 0x55, 0xff, 0x33, 0x03, 0x83, 0x5e, 0x42,
-	0x5c, 0xa1, 0x76, 0x9e, 0x0a, 0xc9, 0x1e, 0xcc, 0x04, 0x76, 0x7f, 0xdb, 0xb1, 0x4c, 0xe3, 0x50,
-	0x6d, 0x85, 0x5b, 0x4a, 0x6c, 0x66, 0x23, 0x4e, 0x7e, 0x7a, 0x54, 0x79, 0x79, 0xd0, 0x47, 0xae,
-	0x85, 0x0c, 0x98, 0x04, 0xe4, 0x3a, 0x92, 0xc7, 0xa3, 0x74, 0x17, 0x5f, 0x19, 0xb2, 0xc3, 0x47,
-	0x38, 0x1b, 0x47, 0x5f, 0x29, 0xd5, 0x3f, 0xcb, 0x40, 0xee, 0x76, 0xb3, 0x4d, 0xb9, 0xb5, 0x68,
-	0xb9, 0x4e, 0x37, 0x69, 0x2d, 0xd6, 0x5c, 0xa7, 0x8b, 0x82, 0x42, 0xe6, 0x21, 0xc3, 0x1c, 0x35,
-	0x40, 0xa0, 0xe8, 0x99, 0x1d, 0x07, 0x33, 0xcc, 0x21, 0x1f, 0x02, 0x18, 0x8e, 0xdd, 0x34, 0xa5,
-	0x6b, 0x91, 0x1d, 0xd3, 0x83, 0x5c, 0x73, 0xdc, 0xc7, 0xba, 0xdb, 0x5c, 0x09, 0x10, 0xeb, 0x97,
-	0x8e, 0x8f, 0x2a, 0x10, 0x3e, 0x63, 0x44, 0x1b, 0x69, 0x07, 0x67, 0x8b, 0x74, 0x92, 0x57, 0x46,
-	0xd6, 0xcb, 0x07, 0x62, 0xf8, 0xc9, 0x52, 0xfd, 0x43, 0x0d, 0x20, 0x64, 0x21, 0x6f, 0xc2, 0xcc,
-	0x9e, 0x30, 0x86, 0x5b, 0xfa, 0x93, 0x4d, 0x6a, 0xb7, 0xd9, 0xbe, 0x18, 0xbc, 0x9c, 0x9c, 0xb4,
-	0x7a, 0x9c, 0x84, 0x49, 0x5e, 0xf2, 0x36, 0xcc, 0xca, 0xa6, 0x5d, 0x4f, 0x57, 0x98, 0x62, 0x70,
-	0xa7, 0xeb, 0x57, 0xb8, 0x8b, 0x52, 0x4f, 0xd0, 0x70, 0x80, 0xbb, 0xfa, 0x06, 0xcc, 0x0d, 0x8c,
-	0x14, 0xa9, 0x40, 0xbe, 0x43, 0x0f, 0x37, 0xf8, 0x39, 0xc2, 0x8d, 0x8a, 0xb0, 0xa2, 0xf7, 0x78,
-	0x03, 0xca, 0xf6, 0xea, 0x7f, 0x69, 0x50, 0x58, 0xeb, 0xdb, 0x86, 0x38, 0x75, 0x9e, 0x7d, 0x46,
-	0xf8, 0x36, 0x2a, 0x93, 0x6a, 0xa3, 0xfa, 0x30, 0xd1, 0x79, 0x1c, 0xd8, 0xb0, 0xd2, 0xd2, 0xd6,
-	0xe8, 0x73, 0xae, 0xba, 0x54, 0xbb, 0x27, 0xf0, 0xa4, 0x5b, 0x7b, 0x49, 0x75, 0x68, 0xe2, 0xde,
-	0x43, 0xa1, 0x54, 0x29, 0x9b, 0xff, 0x2a, 0x94, 0x22, 0x6c, 0x67, 0x3a, 0x78, 0x7f, 0xa8, 0xc1,
-	0xcc, 0xba, 0x0c, 0xff, 0x1c, 0x57, 0x06, 0x5b, 0xe4, 0x1a, 0x64, 0xdd, 0x5e, 0x5f, 0xc8, 0x67,
-	0x65, 0xdc, 0x80, 0xdb, 0xbb, 0xc8, 0xdb, 0xc8, 0xd7, 0xa1, 0xd0, 0xec, 0x4b, 0x57, 0x57, 0x1d,
-	0x39, 0xb5, 0xc8, 0xfe, 0x0a, 0x82, 0xcc, 0xf0, 0xcd, 0x78, 0x10, 0xc0, 0x77, 0xdc, 0xaa, 0x92,
-	0x92, 0x5e, 0x9a, 0xff, 0x84, 0x01, 0x1a, 0x3f, 0x23, 0xba, 0x5e, 0xbb, 0x61, 0x7e, 0x28, 0xe3,
-	0xc7, 0xbc, 0x3c, 0x23, 0xb6, 0x64, 0x13, 0xfa, 0xb4, 0xea, 0xb7, 0x33, 0x70, 0x75, 0x9d, 0xb2,
-	0x55, 0x9d, 0x76, 0x1d, 0x7b, 0x95, 0xf6, 0x2c, 0xe7, 0x90, 0x9b, 0x36, 0xa4, 0xdf, 0x24, 0x6f,
-	0x03, 0x98, 0xde, 0x5e, 0xe3, 0xc0, 0xe0, 0x47, 0xb4, 0x9a, 0xc2, 0x1b, 0x6a, 0xc4, 0x60, 0xa3,
-	0x51, 0x57, 0x94, 0xa7, 0xb1, 0x27, 0x8c, 0xc8, 0x84, 0x87, 0x59, 0xe6, 0x84, 0xc3, 0xac, 0x01,
-	0xd0, 0x0b, 0x0d, 0x64, 0x56, 0x70, 0xfe, 0xa2, 0xaf, 0xe6, 0x2c, 0xb6, 0x31, 0x02, 0x33, 0x8e,
-	0xc9, 0xfa, 0x9b, 0x2c, 0xcc, 0xaf, 0x53, 0x16, 0x9c, 0xd5, 0xca, 0x17, 0x69, 0xf4, 0xa8, 0xc1,
-	0x47, 0xe5, 0x23, 0x0d, 0x26, 0x2c, 0x7d, 0x8f, 0x5a, 0x9e, 0xd8, 0x02, 0xa5, 0xa5, 0x47, 0x23,
-	0xaf, 0xc9, 0xe1, 0x5a, 0x6a, 0x9b, 0x42, 0x43, 0x62, 0x95, 0xca, 0x46, 0x54, 0xea, 0xc9, 0x97,
-	0xa1, 0x64, 0x58, 0x7d, 0x8f, 0x51, 0x77, 0xdb, 0x71, 0xe5, 0xe6, 0xce, 0x87, 0x01, 0xd5, 0x4a,
-	0x48, 0xc2, 0x28, 0x1f, 0x59, 0x02, 0x30, 0x2c, 0x93, 0xda, 0x4c, 0x48, 0xc9, 0xb5, 0x41, 0xfc,
-	0xf1, 0x5e, 0x09, 0x28, 0x18, 0xe1, 0xe2, 0xaa, 0xba, 0x8e, 0x6d, 0x32, 0x47, 0xaa, 0xca, 0xc5,
-	0x55, 0x6d, 0x85, 0x24, 0x8c, 0xf2, 0x09, 0x31, 0xca, 0x5c, 0xd3, 0xf0, 0x84, 0x58, 0x3e, 0x21,
-	0x16, 0x92, 0x30, 0xca, 0xc7, 0xb7, 0x5f, 0xe4, 0xfd, 0xcf, 0xb4, 0xfd, 0xfe, 0xb6, 0x00, 0x0b,
-	0xb1, 0x61, 0x65, 0x3a, 0xa3, 0xad, 0xbe, 0xd5, 0xa0, 0xcc, 0x9f, 0xc0, 0x2f, 0x43, 0x49, 0x05,
-	0x22, 0xf7, 0x43, 0xd3, 0x14, 0x74, 0xaa, 0x11, 0x92, 0x30, 0xca, 0x47, 0x7e, 0x3f, 0x9c, 0xf7,
-	0x8c, 0x98, 0x77, 0xe3, 0x7c, 0xe6, 0x7d, 0xa0, 0x83, 0xa7, 0x9a, 0xfb, 0x45, 0x28, 0xda, 0x3a,
-	0xf3, 0xc4, 0x46, 0x52, 0x7b, 0x26, 0xf0, 0x45, 0xee, 0xfb, 0x04, 0x0c, 0x79, 0xc8, 0x36, 0x5c,
-	0x51, 0x43, 0x7c, 0xfb, 0x49, 0xcf, 0x71, 0x19, 0x75, 0xa5, 0x6c, 0x4e, 0xc8, 0x5e, 0x57, 0xb2,
-	0x57, 0xb6, 0x52, 0x78, 0x30, 0x55, 0x92, 0x6c, 0xc1, 0x65, 0x43, 0xf8, 0xb6, 0x48, 0x2d, 0x47,
-	0x6f, 0xfa, 0x80, 0x79, 0x01, 0xf8, 0x05, 0x05, 0x78, 0x79, 0x65, 0x90, 0x05, 0xd3, 0xe4, 0x92,
-	0xab, 0x79, 0x62, 0xa4, 0xd5, 0x3c, 0x39, 0xca, 0x6a, 0x2e, 0x8c, 0xb6, 0x9a, 0x8b, 0xa7, 0x5b,
-	0xcd, 0x7c, 0xe4, 0xf9, 0x3a, 0xa2, 0x2e, 0x0f, 0xc8, 0x64, 0x88, 0x25, 0x16, 0x1e, 0xc4, 0x47,
-	0xbe, 0x91, 0xc2, 0x83, 0xa9, 0x92, 0x64, 0x0f, 0xe6, 0x65, 0xfb, 0x6d, 0xdb, 0x70, 0x0f, 0x7b,
-	0xdc, 0xdc, 0x47, 0x70, 0x4b, 0x02, 0xb7, 0xaa, 0x70, 0xe7, 0x1b, 0x43, 0x39, 0xf1, 0x04, 0x14,
-	0xf2, 0x2b, 0x30, 0x2d, 0x67, 0x69, 0x4b, 0xef, 0x45, 0x72, 0x13, 0x2f, 0x2a, 0xd8, 0xe9, 0x95,
-	0x28, 0x11, 0xe3, 0xbc, 0x64, 0x19, 0x66, 0x7a, 0x07, 0x06, 0xff, 0xb9, 0xd1, 0xba, 0x4f, 0x69,
-	0x93, 0x36, 0x45, 0x6a, 0xa2, 0x58, 0x7f, 0xc9, 0x77, 0x7c, 0xb7, 0xe3, 0x64, 0x4c, 0xf2, 0x93,
-	0x5b, 0x30, 0xe5, 0x31, 0xdd, 0x65, 0x2a, 0xa8, 0x11, 0x09, 0x8b, 0x62, 0x18, 0x41, 0x34, 0x22,
-	0x34, 0x8c, 0x71, 0x8e, 0x63, 0x3d, 0x9e, 0xca, 0xc3, 0x50, 0x44, 0x85, 0x09, 0xb3, 0xff, 0x3b,
-	0x49, 0xb3, 0xff, 0xfe, 0x38, 0xdb, 0x3f, 0x45, 0xc3, 0xa9, 0xb6, 0xfd, 0x5d, 0x20, 0xae, 0x8a,
-	0x61, 0x65, 0x18, 0x13, 0xb1, 0xfc, 0x41, 0xea, 0x05, 0x07, 0x38, 0x30, 0x45, 0x8a, 0x34, 0xe0,
-	0x45, 0x8f, 0xda, 0xcc, 0xb4, 0xa9, 0x15, 0x87, 0x93, 0x47, 0xc2, 0xcb, 0x0a, 0xee, 0xc5, 0x46,
-	0x1a, 0x13, 0xa6, 0xcb, 0x8e, 0x33, 0xf8, 0x3f, 0x2e, 0x8a, 0x73, 0x57, 0x0e, 0xcd, 0xb9, 0x99,
-	0xed, 0x8f, 0x92, 0x66, 0xfb, 0xd1, 0xf8, 0xf3, 0x36, 0x9a, 0xc9, 0x5e, 0x02, 0x10, 0xb3, 0x10,
-	0xb5, 0xd9, 0x81, 0xa5, 0xc2, 0x80, 0x82, 0x11, 0x2e, 0xbe, 0x0b, 0xfd, 0x71, 0x8e, 0x9a, 0xeb,
-	0x60, 0x17, 0x36, 0xa2, 0x44, 0x8c, 0xf3, 0x0e, 0x35, 0xf9, 0xf9, 0x91, 0x4d, 0xfe, 0x5d, 0x20,
-	0xa6, 0x6d, 0xb2, 0x60, 0xca, 0x25, 0xde, 0x44, 0x3c, 0xf3, 0xb7, 0x31, 0xc0, 0x81, 0x29, 0x52,
-	0x43, 0x96, 0xf2, 0xe4, 0xf9, 0x2e, 0xe5, 0xc2, 0xe8, 0x4b, 0x99, 0x3c, 0x82, 0x6b, 0x42, 0x95,
-	0x1a, 0x9f, 0x38, 0xb0, 0x34, 0xfe, 0xff, 0x4f, 0x01, 0x5f, 0xc3, 0x61, 0x8c, 0x38, 0x1c, 0x83,
-	0xcf, 0x8f, 0xe1, 0xd2, 0x26, 0x57, 0xae, 0x5b, 0xc3, 0x0f, 0x86, 0x95, 0x14, 0x1e, 0x4c, 0x95,
-	0xe4, 0x4b, 0x8c, 0xf1, 0x65, 0xa8, 0xef, 0x59, 0xb4, 0x29, 0x0e, 0x82, 0x42, 0xb8, 0xc4, 0x76,
-	0x36, 0x1b, 0x8a, 0x82, 0x11, 0xae, 0x34, 0x5b, 0x3d, 0x75, 0x46, 0x5b, 0xbd, 0x2e, 0xca, 0x3c,
-	0xad, 0xd8, 0x91, 0xa0, 0x0c, 0x7e, 0x90, 0xcb, 0x5e, 0x49, 0x32, 0xe0, 0xa0, 0x8c, 0x38, 0x2a,
-	0x0d, 0xd7, 0xec, 0x31, 0x2f, 0x8e, 0x75, 0x29, 0x71, 0x54, 0xa6, 0xf0, 0x60, 0xaa, 0x24, 0x77,
-	0x52, 0xf6, 0xa9, 0x6e, 0xb1, 0xfd, 0x38, 0xe0, 0x4c, 0xdc, 0x49, 0xb9, 0x33, 0xc8, 0x82, 0x69,
-	0x72, 0xe3, 0x98, 0xb7, 0x3f, 0xc8, 0xc0, 0xe5, 0x75, 0xaa, 0x4a, 0x2c, 0xdb, 0x4e, 0xd3, 0xb7,
-	0x6b, 0xff, 0x47, 0xa3, 0xac, 0x3f, 0xd6, 0x00, 0xee, 0xec, 0xec, 0x6c, 0xab, 0x10, 0xb9, 0x09,
-	0x39, 0xbd, 0xaf, 0x32, 0x1c, 0xa5, 0xa5, 0xb5, 0xd1, 0x2b, 0x59, 0xd1, 0xa4, 0xb7, 0x4a, 0x27,
-	0xf4, 0xd9, 0x3e, 0x0a, 0x74, 0xf2, 0xff, 0x61, 0x52, 0x9d, 0x0d, 0x62, 0xac, 0x0a, 0x61, 0x45,
-	0x41, 0x9d, 0x1f, 0xe8, 0xd3, 0xab, 0x3f, 0xcd, 0xc0, 0xd5, 0x0d, 0x9b, 0x51, 0xb7, 0xc1, 0x68,
-	0x2f, 0x96, 0x94, 0x26, 0xbf, 0x11, 0xa9, 0xf5, 0xc9, 0xfe, 0xfe, 0xc2, 0xe9, 0x62, 0x76, 0x59,
-	0x2f, 0xda, 0xa2, 0x4c, 0x0f, 0x77, 0x65, 0xd8, 0x16, 0x29, 0xf0, 0xf5, 0x21, 0xe7, 0xf5, 0xa8,
-	0xa1, 0x32, 0x02, 0x8d, 0x91, 0x47, 0x23, 0xfd, 0x05, 0xf8, 0xca, 0x0b, 0x73, 0x31, 0x62, 0x1d,
-	0x0a, 0x75, 0xe4, 0x5b, 0x30, 0xe1, 0x31, 0x9d, 0xf5, 0xfd, 0x0c, 0xdb, 0xee, 0x79, 0x2b, 0x16,
-	0xe0, 0xe1, 0x01, 0x29, 0x9f, 0x51, 0x29, 0xad, 0xfe, 0x54, 0x83, 0xf9, 0x74, 0xc1, 0x4d, 0xd3,
-	0x63, 0xe4, 0x1b, 0x03, 0xc3, 0x7e, 0xca, 0x54, 0x09, 0x97, 0x16, 0x83, 0x3e, 0xab, 0x14, 0x17,
-	0xfc, 0x96, 0xc8, 0x90, 0x33, 0xc8, 0x9b, 0x8c, 0x76, 0x7d, 0x2f, 0xe1, 0x9d, 0x73, 0x7e, 0xf5,
-	0xc8, 0xae, 0xe4, 0x5a, 0x50, 0x2a, 0xab, 0x7e, 0x94, 0x19, 0xf6, 0xca, 0x7c, 0x5a, 0x48, 0x27,
-	0x5e, 0xf8, 0xb8, 0x3b, 0x5e, 0xe1, 0xa3, 0xde, 0x8f, 0xf4, 0x67, 0xb0, 0xfc, 0xf1, 0x9b, 0x83,
-	0xe5, 0x8f, 0x77, 0xc6, 0x2f, 0x7f, 0x24, 0x46, 0x61, 0x68, 0x15, 0xe4, 0xc7, 0x19, 0xb8, 0x7e,
-	0xd2, 0xaa, 0x21, 0xed, 0x60, 0x71, 0x6a, 0xe3, 0x5e, 0x87, 0x38, 0x71, 0x19, 0x92, 0x25, 0xc8,
-	0xf7, 0xf6, 0x75, 0xcf, 0x37, 0xa7, 0xfe, 0xa9, 0x93, 0xdf, 0xe6, 0x8d, 0x4f, 0x8f, 0x2a, 0x25,
-	0x69, 0x86, 0xc5, 0x23, 0x4a, 0x56, 0x6e, 0x58, 0xba, 0xd4, 0xf3, 0x42, 0xc7, 0x2e, 0x30, 0x2c,
-	0x5b, 0xb2, 0x19, 0x7d, 0x3a, 0x61, 0x30, 0x21, 0x83, 0x25, 0x95, 0x4e, 0xde, 0x1c, 0xf9, 0x3d,
-	0x52, 0x4a, 0x65, 0xe1, 0x4b, 0xa9, 0xb8, 0x5b, 0xe9, 0xaa, 0xfe, 0xc5, 0x25, 0xb8, 0x9a, 0x3e,
-	0x27, 0xbc, 0xef, 0x07, 0xd4, 0xf5, 0x4c, 0xc7, 0x56, 0xa7, 0x4f, 0x58, 0x66, 0x95, 0xcd, 0xe8,
-	0xd3, 0xc9, 0x4d, 0x28, 0xb8, 0xb4, 0x67, 0x99, 0x86, 0xee, 0xa9, 0xa0, 0x43, 0x64, 0x1f, 0x51,
-	0xb5, 0x61, 0x40, 0x1d, 0x72, 0xf5, 0x23, 0xfb, 0xbf, 0x78, 0xf5, 0xe3, 0x4f, 0x35, 0xee, 0xcf,
-	0xc9, 0x8c, 0xc3, 0x80, 0x80, 0x9a, 0x8b, 0xf3, 0xec, 0xd9, 0xcb, 0xd2, 0x2f, 0x1c, 0xa2, 0x10,
-	0x87, 0xf7, 0x85, 0xfc, 0x40, 0x83, 0x72, 0x37, 0xe1, 0x30, 0x5e, 0xe0, 0xed, 0x99, 0xeb, 0xc7,
-	0x47, 0x95, 0xf2, 0xd6, 0x10, 0x7d, 0x38, 0xb4, 0x27, 0xe4, 0xb7, 0xa0, 0xd4, 0xe3, 0xeb, 0xc2,
-	0x63, 0xd4, 0x36, 0xa8, 0xaa, 0xd5, 0x8d, 0xbe, 0x9a, 0xb7, 0x43, 0xac, 0x06, 0x73, 0x75, 0x46,
-	0xdb, 0x87, 0xf5, 0x19, 0x1e, 0xda, 0x45, 0x08, 0x18, 0xd5, 0x18, 0xbb, 0x73, 0xb3, 0x75, 0xd1,
-	0x77, 0x6e, 0xbe, 0x97, 0x7e, 0xe7, 0x46, 0x3f, 0x67, 0x0b, 0xf9, 0xfc, 0xee, 0xcd, 0xf3, 0xbb,
-	0x37, 0x9f, 0xd7, 0xdd, 0x9b, 0x9b, 0x50, 0xf0, 0x28, 0x63, 0xa6, 0xdd, 0xf6, 0xca, 0xb3, 0xb2,
-	0x40, 0xc7, 0xb5, 0x36, 0x54, 0x1b, 0x06, 0x54, 0xf2, 0xf3, 0x50, 0x14, 0x29, 0xb6, 0x65, 0xb7,
-	0xed, 0x95, 0xe7, 0x44, 0xa5, 0x4e, 0x9c, 0xe4, 0x0d, 0xbf, 0x11, 0x43, 0x3a, 0x79, 0x03, 0xa6,
-	0x64, 0x29, 0x51, 0x1e, 0x41, 0xe2, 0x9e, 0x4c, 0xb1, 0x3e, 0xcb, 0x57, 0x70, 0x3d, 0xd2, 0x8e,
-	0x31, 0x2e, 0x1e, 0xba, 0xd2, 0x20, 0x0f, 0x59, 0xbe, 0x1c, 0x0f, 0x5d, 0xc3, 0x0c, 0x25, 0x46,
-	0xb8, 0xc8, 0xcb, 0x90, 0x65, 0x96, 0x57, 0xbe, 0x22, 0x98, 0x83, 0x10, 0x63, 0x67, 0xb3, 0x81,
-	0xbc, 0x7d, 0xfc, 0x4b, 0x34, 0xff, 0xad, 0xc1, 0x4c, 0xe2, 0x1e, 0x07, 0xd7, 0xd9, 0x77, 0x2d,
-	0x75, 0x52, 0x06, 0x3a, 0x77, 0x71, 0x13, 0x79, 0x3b, 0x79, 0xa4, 0xe2, 0x98, 0xcc, 0x98, 0xf6,
-	0xe8, 0xfe, 0xf2, 0x4e, 0x83, 0x07, 0x2e, 0x03, 0x21, 0xcc, 0xad, 0xc4, 0xe8, 0x66, 0xe3, 0x79,
-	0xd1, 0x93, 0x47, 0x38, 0x92, 0x1c, 0xc8, 0x9d, 0x26, 0x39, 0x50, 0xfd, 0x54, 0x83, 0xe2, 0x3d,
-	0xbd, 0xd5, 0xd1, 0x1b, 0xa6, 0xdd, 0x21, 0xaf, 0xc2, 0xe4, 0x9e, 0xeb, 0x74, 0xa8, 0xeb, 0xa9,
-	0xea, 0xaf, 0x28, 0x29, 0xd6, 0x65, 0x13, 0xfa, 0x34, 0x1e, 0x8f, 0x32, 0xa7, 0x67, 0x1a, 0xc9,
-	0x78, 0x74, 0x87, 0x37, 0xa2, 0xa4, 0x91, 0x87, 0x72, 0xee, 0xb2, 0x63, 0xde, 0xc4, 0xdc, 0xd9,
-	0x6c, 0xc8, 0x8a, 0xaa, 0x3f, 0xeb, 0xe4, 0xb5, 0x98, 0x7f, 0x55, 0x1c, 0xea, 0x11, 0x7d, 0x2f,
-	0x03, 0x25, 0xf9, 0x6a, 0x32, 0x02, 0x3d, 0xcf, 0x97, 0x7b, 0x4b, 0x24, 0xcf, 0xbd, 0x7e, 0x97,
-	0xba, 0xeb, 0xae, 0xd3, 0xef, 0xa9, 0x59, 0x8a, 0x26, 0x43, 0x42, 0x62, 0x90, 0x40, 0x0f, 0x9b,
-	0xfc, 0xd1, 0xc9, 0x5d, 0xe0, 0xe8, 0xe4, 0x4f, 0x1c, 0x9d, 0xbf, 0xd4, 0xa0, 0xb8, 0x69, 0xb6,
-	0xa8, 0x71, 0x68, 0x58, 0x94, 0x7c, 0x03, 0xca, 0x4d, 0x6a, 0x51, 0x46, 0xd7, 0x5d, 0xdd, 0xa0,
-	0xdb, 0xd4, 0x35, 0x85, 0xa9, 0x77, 0xec, 0xa6, 0xf4, 0xc6, 0xf3, 0x41, 0xc6, 0xa2, 0xbc, 0x3a,
-	0x84, 0x0f, 0x87, 0x22, 0x90, 0x0d, 0x98, 0x6a, 0x52, 0xcf, 0x74, 0x69, 0x73, 0x3b, 0xe2, 0x77,
-	0xbf, 0xea, 0x2f, 0xe9, 0xd5, 0x08, 0xed, 0xe9, 0x51, 0x65, 0x7a, 0xdb, 0xec, 0x51, 0xcb, 0xb4,
-	0xa9, 0x74, 0xc0, 0x63, 0xa2, 0xd5, 0x3c, 0x64, 0x37, 0x9d, 0x76, 0xf5, 0x77, 0xb3, 0x10, 0x9c,
-	0xe1, 0xe4, 0xf7, 0x34, 0x28, 0xe9, 0xb6, 0xed, 0x30, 0x75, 0x38, 0xca, 0xf4, 0x3d, 0x8e, 0xed,
-	0x2a, 0xd4, 0x96, 0x43, 0x50, 0x79, 0x52, 0x07, 0x07, 0x6a, 0x84, 0x82, 0x51, 0xdd, 0xa4, 0x9f,
-	0x48, 0x46, 0x6f, 0x8d, 0xdf, 0x8b, 0x53, 0xa4, 0x9e, 0xe7, 0xbf, 0x06, 0xb3, 0xc9, 0xce, 0x9e,
-	0xc5, 0x10, 0x8e, 0x93, 0xf6, 0xfa, 0x13, 0x0d, 0x0a, 0xbe, 0x31, 0x23, 0x2b, 0x90, 0xeb, 0x7b,
-	0xd4, 0x3d, 0xdb, 0x1d, 0x44, 0x61, 0x01, 0x77, 0x3d, 0xea, 0xa2, 0x10, 0x26, 0xef, 0x40, 0xa1,
-	0xa7, 0x7b, 0xde, 0x63, 0xc7, 0x6d, 0x2a, 0x33, 0x7b, 0x4a, 0x20, 0x79, 0x36, 0x2b, 0x51, 0x0c,
-	0x40, 0xaa, 0x3f, 0x9a, 0x86, 0xd2, 0x7d, 0x9d, 0x99, 0x07, 0x54, 0xc4, 0xc3, 0x17, 0x13, 0x10,
-	0x7d, 0x5f, 0x83, 0xab, 0xf1, 0xcc, 0xf5, 0x05, 0x46, 0x45, 0xf3, 0xc7, 0x47, 0x95, 0xab, 0x98,
-	0xaa, 0x0d, 0x87, 0xf4, 0x42, 0xc4, 0x47, 0x03, 0x89, 0xf0, 0x8b, 0x8e, 0x8f, 0x1a, 0xc3, 0x14,
-	0xe2, 0xf0, 0xbe, 0x3c, 0x8f, 0x8f, 0x46, 0x88, 0x8f, 0x2e, 0xfc, 0x9b, 0x84, 0xef, 0xa4, 0xc7,
-	0x47, 0x0f, 0x46, 0xf7, 0x80, 0xc2, 0x1d, 0xf9, 0x3c, 0x28, 0x7a, 0x1e, 0x14, 0x7d, 0x5e, 0x41,
-	0x51, 0x2f, 0x11, 0x14, 0x8d, 0x53, 0x8c, 0x50, 0x55, 0x7e, 0x89, 0x36, 0x2c, 0xb8, 0x1a, 0x3f,
-	0x4c, 0xf9, 0xa3, 0x0c, 0x5c, 0x4e, 0xb1, 0x0e, 0xe4, 0x6d, 0x98, 0xf5, 0x98, 0xe3, 0xea, 0x6d,
-	0x1a, 0x4e, 0xa8, 0x3c, 0xd0, 0xc4, 0x0d, 0xd0, 0x46, 0x82, 0x86, 0x03, 0xdc, 0xe4, 0x11, 0x80,
-	0x6e, 0x18, 0xd4, 0xf3, 0xb6, 0x9c, 0xa6, 0xef, 0x97, 0xbd, 0xc5, 0xc3, 0x85, 0xe5, 0xa0, 0xf5,
-	0xe9, 0x51, 0xe5, 0x4b, 0x69, 0x05, 0x23, 0xbf, 0x3f, 0x4c, 0xde, 0xf5, 0x0e, 0x05, 0x30, 0x02,
-	0x49, 0x7e, 0x1d, 0x40, 0xde, 0xfe, 0x0e, 0xee, 0x29, 0x3e, 0x23, 0xab, 0x5f, 0xf3, 0x6f, 0x57,
-	0xd7, 0x7e, 0xad, 0xaf, 0xdb, 0x8c, 0xaf, 0x0a, 0x71, 0x77, 0xf7, 0x41, 0x80, 0x82, 0x11, 0xc4,
-	0xea, 0xdf, 0x67, 0xa0, 0xe0, 0xfb, 0x8b, 0x9f, 0x43, 0xdd, 0xa6, 0x1d, 0xab, 0xdb, 0x8c, 0xfe,
-	0x11, 0x8a, 0xdf, 0xe5, 0xa1, 0x95, 0x1a, 0x27, 0x51, 0xa9, 0x59, 0x1f, 0x5f, 0xd5, 0xc9, 0xb5,
-	0x99, 0x1f, 0x66, 0xe0, 0x92, 0xcf, 0xaa, 0xee, 0x27, 0x7f, 0x05, 0xa6, 0x5d, 0xaa, 0x37, 0xeb,
-	0x3a, 0x33, 0xf6, 0xc5, 0xf4, 0xc9, 0xdb, 0xc9, 0x73, 0xc7, 0x47, 0x95, 0x69, 0x8c, 0x12, 0x30,
-	0xce, 0x97, 0x76, 0xb1, 0x39, 0x33, 0xe6, 0xc5, 0xe6, 0xec, 0x59, 0x2e, 0x36, 0x13, 0x1d, 0x4a,
-	0xbc, 0x47, 0x3b, 0x66, 0x97, 0x3a, 0x7d, 0xa6, 0x7c, 0x9b, 0xb3, 0xde, 0xbb, 0x15, 0x67, 0x2f,
-	0x86, 0x30, 0x18, 0xc5, 0xac, 0xfe, 0x93, 0x06, 0x53, 0xe1, 0x78, 0x5d, 0x78, 0xf5, 0xaa, 0x15,
-	0xaf, 0x5e, 0x2d, 0x8f, 0xbd, 0x1c, 0x86, 0xd4, 0xab, 0x7e, 0x90, 0x0f, 0x5f, 0x4b, 0x54, 0xa8,
-	0xf6, 0x60, 0xde, 0x4c, 0xad, 0xda, 0x44, 0xac, 0x4d, 0x70, 0x15, 0x6d, 0x63, 0x28, 0x27, 0x9e,
-	0x80, 0x42, 0xfa, 0x50, 0x38, 0xa0, 0x2e, 0x33, 0x0d, 0xea, 0xbf, 0xdf, 0xfa, 0x39, 0x7d, 0xe9,
-	0x18, 0x8e, 0xe9, 0x03, 0xa5, 0x00, 0x03, 0x55, 0x64, 0x0f, 0xf2, 0xb4, 0xd9, 0xa6, 0xfe, 0xd5,
-	0xf3, 0x37, 0xc7, 0xba, 0xf6, 0x1f, 0x8e, 0x27, 0x7f, 0xf2, 0x50, 0x42, 0x13, 0x0f, 0x8a, 0x96,
-	0x1f, 0x65, 0xab, 0x75, 0x58, 0x1f, 0x59, 0x4f, 0x10, 0xaf, 0x87, 0x57, 0x41, 0x83, 0x26, 0x0c,
-	0xf5, 0x90, 0x4e, 0xf0, 0x41, 0x43, 0xfe, 0x9c, 0x8c, 0xc7, 0x09, 0x9f, 0xcb, 0x79, 0x50, 0x7c,
-	0xac, 0x33, 0xea, 0x76, 0x75, 0xb7, 0xa3, 0x7c, 0xe0, 0xd1, 0xdf, 0xf0, 0xa1, 0x8f, 0x14, 0xbe,
-	0x61, 0xd0, 0x84, 0xa1, 0x9e, 0xea, 0x8f, 0x22, 0xd6, 0xea, 0xf3, 0x2e, 0x1f, 0xbe, 0x11, 0x2f,
-	0x1f, 0x2e, 0x24, 0xcb, 0x87, 0x89, 0xfc, 0xc5, 0xd9, 0x0b, 0x88, 0x3a, 0x94, 0x2c, 0xdd, 0x63,
-	0xbb, 0xbd, 0xa6, 0xce, 0x54, 0x22, 0xaf, 0xb4, 0xf4, 0x73, 0xa7, 0x33, 0x26, 0xdc, 0x3c, 0x85,
-	0x2e, 0xee, 0x66, 0x08, 0x83, 0x51, 0xcc, 0xea, 0xbf, 0x6b, 0x30, 0x37, 0x50, 0x32, 0x26, 0xfb,
-	0x30, 0x61, 0x0b, 0xa7, 0x7c, 0xec, 0xef, 0xf0, 0x22, 0xbe, 0xbd, 0x5c, 0x34, 0xaa, 0x41, 0xe1,
-	0x13, 0x1b, 0x0a, 0xf4, 0x09, 0xa3, 0xae, 0xad, 0x5b, 0xea, 0x2c, 0x3d, 0x9f, 0x6f, 0xfe, 0x84,
-	0x0b, 0x76, 0x5b, 0x21, 0x63, 0xa0, 0xa3, 0xfa, 0xb3, 0x0c, 0x94, 0x22, 0x7c, 0xcf, 0x4a, 0xf2,
-	0x8a, 0xab, 0x88, 0x32, 0x3a, 0xdd, 0x75, 0x2d, 0x35, 0xd1, 0x91, 0xab, 0x88, 0x8a, 0x84, 0x9b,
-	0x18, 0xe5, 0x23, 0x4b, 0x00, 0x5d, 0xdd, 0x63, 0xd4, 0x15, 0xb6, 0x31, 0x71, 0x01, 0x70, 0x2b,
-	0xa0, 0x60, 0x84, 0x8b, 0xdc, 0x50, 0x19, 0x93, 0x5c, 0xfc, 0x03, 0x9a, 0x21, 0xe9, 0x90, 0xfc,
-	0x39, 0xa4, 0x43, 0x48, 0x1b, 0x66, 0xfd, 0x5e, 0xfb, 0x54, 0xb5, 0x71, 0x4f, 0x09, 0x2c, 0xbd,
-	0xcb, 0x04, 0x04, 0x0e, 0x80, 0x56, 0xff, 0x4a, 0x83, 0xe9, 0x98, 0x8b, 0x4c, 0x5e, 0x89, 0xde,
-	0x77, 0x88, 0x24, 0x57, 0x63, 0xf7, 0x14, 0x5e, 0x83, 0x09, 0x39, 0x40, 0x6a, 0xe0, 0x83, 0x8d,
-	0x28, 0x87, 0x10, 0x15, 0x95, 0x6f, 0x29, 0x95, 0x7d, 0x49, 0x6e, 0x29, 0x95, 0x9e, 0x41, 0x9f,
-	0x4e, 0xbe, 0xc8, 0x9d, 0x7e, 0xd9, 0x3b, 0x35, 0xd2, 0xc1, 0xc1, 0xe0, 0xbf, 0x07, 0x06, 0x1c,
-	0xd5, 0xef, 0xe7, 0x40, 0x7e, 0xad, 0xcb, 0xe5, 0x9a, 0xa6, 0x27, 0x13, 0xea, 0x9a, 0x48, 0xa8,
-	0x07, 0x72, 0xab, 0xaa, 0x1d, 0x03, 0x0e, 0x72, 0x0d, 0xb2, 0x5d, 0xd3, 0x56, 0x79, 0x22, 0x91,
-	0x96, 0xdd, 0x32, 0x6d, 0xe4, 0x6d, 0x82, 0xa4, 0x3f, 0x51, 0x37, 0x6f, 0x25, 0x49, 0x7f, 0x82,
-	0xbc, 0x8d, 0x7b, 0x4b, 0x96, 0xe3, 0x74, 0xf6, 0x74, 0xa3, 0xe3, 0xa7, 0x5c, 0x73, 0xc2, 0xdb,
-	0x11, 0xde, 0xd2, 0x66, 0x9c, 0x84, 0x49, 0x5e, 0x2e, 0x6e, 0x38, 0x8e, 0xd5, 0x74, 0x1e, 0xdb,
-	0xbe, 0x78, 0x3e, 0x14, 0x5f, 0x89, 0x93, 0x30, 0xc9, 0x4b, 0x76, 0xe1, 0xa5, 0x0f, 0xa9, 0xeb,
-	0xa8, 0x11, 0x6b, 0x58, 0x94, 0xf6, 0x7c, 0x98, 0x09, 0x01, 0xf3, 0x85, 0xe3, 0xa3, 0xca, 0x4b,
-	0xef, 0xa5, 0xb3, 0xe0, 0x30, 0x59, 0x0e, 0xcb, 0x74, 0xb7, 0x4d, 0xd9, 0xb6, 0xeb, 0xf0, 0x60,
-	0xc0, 0xb4, 0xdb, 0x3e, 0xec, 0x64, 0x08, 0xbb, 0x93, 0xce, 0x82, 0xc3, 0x64, 0xc9, 0x0a, 0xcc,
-	0x49, 0x52, 0xc4, 0x09, 0x14, 0x77, 0x40, 0xa7, 0xe5, 0x45, 0x81, 0x9d, 0x24, 0x11, 0x07, 0xf9,
-	0xb9, 0x7f, 0xe9, 0x67, 0xed, 0xb6, 0xa9, 0x2b, 0x26, 0x5a, 0x5c, 0xf7, 0x54, 0xfe, 0x25, 0x26,
-	0x68, 0x38, 0xc0, 0x2d, 0x3e, 0x7a, 0x14, 0x05, 0x93, 0x87, 0x90, 0xb5, 0x9c, 0xb6, 0x32, 0x97,
-	0xa3, 0xa7, 0xf1, 0x37, 0x9d, 0xb6, 0x5c, 0x14, 0x9b, 0x4e, 0x1b, 0x39, 0x22, 0x31, 0x20, 0xdf,
-	0xd1, 0x5b, 0x1d, 0x5d, 0x59, 0xc7, 0xd1, 0x4f, 0xd4, 0xa0, 0xb8, 0xa3, 0xbe, 0xe4, 0xe3, 0x8f,
-	0x28, 0xb1, 0x89, 0x01, 0x13, 0xfd, 0xa6, 0xf8, 0x77, 0x90, 0x71, 0xff, 0x80, 0x64, 0x77, 0x55,
-	0xa8, 0x10, 0xa6, 0x5e, 0xfe, 0x46, 0x05, 0x5d, 0xfd, 0x87, 0x0c, 0xa8, 0xff, 0x24, 0x21, 0x7d,
-	0x28, 0xb6, 0xfd, 0x2f, 0xe7, 0xd4, 0x98, 0xdd, 0x19, 0xe3, 0xb2, 0x76, 0xec, 0x1b, 0x3c, 0x59,
-	0xaf, 0x0c, 0x1a, 0x31, 0xd4, 0x44, 0x68, 0x7c, 0x2c, 0x57, 0xc7, 0x1c, 0x4b, 0xa9, 0x6e, 0x70,
-	0x34, 0x75, 0xc8, 0xed, 0x33, 0xd6, 0x53, 0x63, 0x39, 0xfa, 0x47, 0xa4, 0xe1, 0xa5, 0x49, 0x99,
-	0x19, 0xe7, 0xcf, 0x28, 0xa0, 0xab, 0x5d, 0x50, 0xce, 0x08, 0x31, 0x62, 0xdf, 0xcb, 0xca, 0x8a,
-	0xc7, 0xe2, 0xe9, 0x5c, 0x84, 0xe0, 0x5b, 0xcf, 0xc8, 0x67, 0x34, 0xa9, 0x1f, 0xc6, 0x56, 0xff,
-	0x25, 0x03, 0xd9, 0x9d, 0xcd, 0x86, 0xbc, 0x15, 0x2e, 0xd2, 0x57, 0xb4, 0xd1, 0x31, 0x7b, 0x0f,
-	0xa8, 0x6b, 0xb6, 0x0e, 0x95, 0x3d, 0x8c, 0xdc, 0x0a, 0x4f, 0x72, 0x60, 0x8a, 0x14, 0x79, 0x1f,
-	0xa6, 0x0c, 0x7d, 0x85, 0xba, 0x4c, 0x1e, 0x2b, 0x67, 0x4b, 0xf0, 0x8b, 0x1a, 0xf3, 0xca, 0x72,
-	0x28, 0x8e, 0x31, 0x30, 0xb2, 0x0b, 0x60, 0x84, 0xd0, 0xd9, 0xb3, 0x40, 0xcb, 0x0f, 0x84, 0x43,
-	0xe0, 0x08, 0x10, 0x41, 0x28, 0x76, 0x38, 0xab, 0x40, 0xcd, 0x9d, 0x05, 0x55, 0x2c, 0xca, 0x7b,
-	0xbe, 0x2c, 0x86, 0x30, 0xd5, 0x9f, 0x68, 0x90, 0xdd, 0x5d, 0x5d, 0x23, 0x0e, 0x14, 0x83, 0xab,
-	0x4c, 0x6a, 0x4f, 0xd4, 0xc7, 0xcf, 0x6d, 0x4b, 0xc5, 0xc1, 0x23, 0x86, 0x3a, 0xc8, 0x3e, 0x4c,
-	0xee, 0xf5, 0x4d, 0x8b, 0x99, 0xb6, 0x48, 0xfe, 0x8d, 0x13, 0x4b, 0xfa, 0x9f, 0xdc, 0xaa, 0x4a,
-	0xaa, 0x44, 0x45, 0x1f, 0xbe, 0xfa, 0x2d, 0x50, 0xb6, 0x80, 0xc7, 0x08, 0x17, 0xf1, 0x92, 0x41,
-	0x8c, 0x90, 0xf6, 0xa2, 0xd5, 0xbf, 0xcb, 0xc0, 0x84, 0xfa, 0x2f, 0xa6, 0x8b, 0x4f, 0x0c, 0xd1,
-	0x58, 0x62, 0x68, 0x65, 0xcc, 0x7f, 0x27, 0x19, 0x9a, 0x16, 0xea, 0x26, 0xd2, 0x42, 0xe3, 0xfe,
-	0x0d, 0xca, 0x33, 0x92, 0x42, 0xff, 0xa8, 0xc1, 0x25, 0xc9, 0xb8, 0x61, 0x7b, 0x4c, 0xb7, 0x0d,
-	0xf1, 0xa7, 0x55, 0x07, 0xa2, 0x65, 0xec, 0x30, 0x4b, 0x45, 0xe8, 0xe2, 0xcc, 0x90, 0xbf, 0x51,
-	0x41, 0x73, 0xb7, 0x6b, 0xdf, 0xf1, 0x98, 0xf8, 0xb2, 0x3c, 0x13, 0x77, 0xd7, 0xee, 0xa8, 0x76,
-	0x0c, 0x38, 0x92, 0x7e, 0x60, 0x7e, 0xb8, 0x1f, 0x58, 0xfd, 0x73, 0x0d, 0xa6, 0xa2, 0x7f, 0x00,
-	0x33, 0x7a, 0x8e, 0x2b, 0x91, 0x62, 0xca, 0x5c, 0x40, 0x8a, 0xe9, 0x13, 0x0d, 0xc0, 0xef, 0xec,
-	0x85, 0x27, 0x98, 0x9a, 0xf1, 0x04, 0xd3, 0xd8, 0xd3, 0x9a, 0x9e, 0x5e, 0xfa, 0xeb, 0x9c, 0xff,
-	0x4a, 0x22, 0xb9, 0xf4, 0x91, 0x06, 0x97, 0xf4, 0x58, 0xc2, 0x46, 0xbd, 0xd9, 0xb9, 0xe5, 0x7f,
-	0xae, 0xaa, 0x6e, 0x24, 0xfe, 0x9d, 0x0d, 0x13, 0x6a, 0xc9, 0x2d, 0x98, 0xea, 0xa9, 0xb0, 0xfd,
-	0x7e, 0xb8, 0xea, 0x82, 0x22, 0xd4, 0x76, 0x84, 0x86, 0x31, 0xce, 0x67, 0x24, 0xc8, 0xb2, 0xe7,
-	0x92, 0x20, 0x8b, 0x56, 0xa1, 0x73, 0x27, 0x56, 0xa1, 0x6d, 0x28, 0xb6, 0x5c, 0xa7, 0x2b, 0x72,
-	0x50, 0xea, 0x5f, 0x5b, 0xc6, 0xcc, 0x6b, 0x05, 0x46, 0x76, 0xcd, 0xc7, 0xc5, 0x50, 0x05, 0x3f,
-	0x4d, 0x98, 0x23, 0xb5, 0x4d, 0x9c, 0x87, 0xb6, 0x60, 0xeb, 0xee, 0x48, 0x54, 0xf4, 0xe1, 0xab,
-	0xff, 0x9c, 0xf1, 0xb7, 0x6e, 0x23, 0x71, 0x8d, 0x5b, 0x1b, 0x72, 0x8d, 0x5b, 0x7d, 0x89, 0x13,
-	0xcd, 0xc2, 0xbc, 0x06, 0x13, 0x2e, 0xd5, 0x3d, 0xc7, 0x56, 0xdf, 0xb4, 0x05, 0x86, 0x0f, 0x45,
-	0x2b, 0x2a, 0x6a, 0x34, 0x5b, 0x93, 0x79, 0x46, 0xb6, 0xe6, 0x8b, 0x91, 0xb9, 0x91, 0x59, 0xea,
-	0x60, 0x9b, 0xa5, 0xcc, 0x8f, 0x08, 0x44, 0x55, 0x01, 0x35, 0x9f, 0x0c, 0x44, 0x55, 0x91, 0x33,
-	0xe0, 0x20, 0x4d, 0x98, 0xb2, 0x74, 0x8f, 0x89, 0xa0, 0xa3, 0xb9, 0xcc, 0x46, 0x48, 0x05, 0x05,
-	0x2b, 0x78, 0x33, 0x82, 0x83, 0x31, 0xd4, 0xea, 0x77, 0x35, 0x08, 0xb3, 0x6c, 0x67, 0x0c, 0x79,
-	0xbf, 0x0e, 0x85, 0xae, 0xfe, 0x64, 0x95, 0x5a, 0xfa, 0xe1, 0x38, 0x7f, 0x6f, 0xb1, 0xa5, 0x30,
-	0x30, 0x40, 0xab, 0xd7, 0x3e, 0xfe, 0x6c, 0xe1, 0x85, 0x4f, 0x3e, 0x5b, 0x78, 0xe1, 0xd3, 0xcf,
-	0x16, 0x5e, 0xf8, 0xed, 0xe3, 0x05, 0xed, 0xe3, 0xe3, 0x05, 0xed, 0x93, 0xe3, 0x05, 0xed, 0xd3,
-	0xe3, 0x05, 0xed, 0x27, 0xc7, 0x0b, 0xda, 0x77, 0xfe, 0x75, 0xe1, 0x85, 0xf7, 0x0a, 0xfe, 0xf2,
-	0xf9, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xed, 0xc9, 0x9b, 0x44, 0x2d, 0x53, 0x00, 0x00,
+	// 4668 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5c, 0x5d, 0x6c, 0x23, 0x59,
+	0x56, 0x9e, 0xf2, 0x4f, 0x62, 0x1f, 0x27, 0x9d, 0xe4, 0x76, 0x4f, 0xaf, 0x3b, 0xdb, 0x13, 0x37,
+	0x1e, 0xcd, 0xa8, 0x81, 0x5d, 0x87, 0x09, 0xb3, 0x6c, 0x2f, 0x30, 0x3b, 0x13, 0x27, 0x9d, 0x74,
+	0xba, 0x93, 0x9e, 0x70, 0x9c, 0x74, 0xcf, 0x0f, 0xa2, 0xa9, 0x94, 0xaf, 0x9d, 0x1a, 0x97, 0xab,
+	0xbc, 0x55, 0xd7, 0xe9, 0xce, 0x88, 0x15, 0x48, 0x3c, 0x0c, 0x08, 0xd0, 0xae, 0xb4, 0x2f, 0x48,
+	0x2b, 0x56, 0x3c, 0xac, 0x84, 0x40, 0x5a, 0x09, 0x21, 0x21, 0x21, 0xd0, 0x4a, 0x3c, 0xa1, 0xe1,
+	0x05, 0xcd, 0x03, 0x12, 0x83, 0xb4, 0x8a, 0x76, 0x82, 0xc4, 0x1b, 0x62, 0xd1, 0xbe, 0xb5, 0x90,
+	0x40, 0xf7, 0xa7, 0x7e, 0x5d, 0x4e, 0x27, 0x76, 0x32, 0x3c, 0xd0, 0x6f, 0xae, 0x7b, 0xce, 0xf9,
+	0xce, 0xad, 0xfb, 0x73, 0xee, 0xf9, 0xb9, 0x65, 0x58, 0x6f, 0x9b, 0x6c, 0xbf, 0xbf, 0x57, 0x33,
+	0x9c, 0xee, 0xa2, 0xdd, 0xef, 0xea, 0x3d, 0xd7, 0xf9, 0x40, 0xfc, 0x68, 0x59, 0xce, 0xe3, 0xc5,
+	0x5e, 0xa7, 0xbd, 0xa8, 0xf7, 0x4c, 0x2f, 0x6c, 0x39, 0x78, 0x4d, 0xb7, 0x7a, 0xfb, 0xfa, 0x6b,
+	0x8b, 0x6d, 0x6a, 0x53, 0x57, 0x67, 0xb4, 0x59, 0xeb, 0xb9, 0x0e, 0x73, 0xc8, 0x57, 0x43, 0xa0,
+	0x9a, 0x0f, 0x54, 0xf3, 0xc5, 0x6a, 0xbd, 0x4e, 0xbb, 0xc6, 0x81, 0xc2, 0x16, 0x1f, 0x68, 0xfe,
+	0xcb, 0x91, 0x1e, 0xb4, 0x9d, 0xb6, 0xb3, 0x28, 0xf0, 0xf6, 0xfa, 0x2d, 0xf1, 0x24, 0x1e, 0xc4,
+	0x2f, 0xa9, 0x67, 0xbe, 0xda, 0xb9, 0xe5, 0xd5, 0x4c, 0x87, 0x77, 0x6b, 0xd1, 0x70, 0x5c, 0xba,
+	0x78, 0x30, 0xd0, 0x97, 0xf9, 0xd7, 0x43, 0x9e, 0xae, 0x6e, 0xec, 0x9b, 0x36, 0x75, 0x0f, 0xfd,
+	0x77, 0x59, 0x74, 0xa9, 0xe7, 0xf4, 0x5d, 0x83, 0x9e, 0x49, 0xca, 0x5b, 0xec, 0x52, 0xa6, 0xa7,
+	0xe9, 0x5a, 0x1c, 0x26, 0xe5, 0xf6, 0x6d, 0x66, 0x76, 0x07, 0xd5, 0xfc, 0xd2, 0xb3, 0x04, 0x3c,
+	0x63, 0x9f, 0x76, 0xf5, 0xa4, 0x5c, 0xf5, 0x3f, 0xa7, 0xe0, 0xd2, 0xf2, 0x9e, 0xc7, 0x5c, 0xdd,
+	0x60, 0x0f, 0xa8, 0xcb, 0xe8, 0x13, 0x72, 0x03, 0x72, 0xb6, 0xde, 0xa5, 0x65, 0xed, 0x86, 0x76,
+	0xb3, 0x58, 0x9f, 0xfa, 0xf8, 0xa8, 0xf2, 0xc2, 0xf1, 0x51, 0x25, 0x77, 0x5f, 0xef, 0x52, 0x14,
+	0x14, 0x62, 0xc0, 0x84, 0x7c, 0xdb, 0x72, 0xf6, 0x86, 0x76, 0xb3, 0xb4, 0xf4, 0x66, 0x6d, 0xc4,
+	0x69, 0xaa, 0x35, 0x04, 0x4c, 0x1d, 0x8e, 0x8f, 0x2a, 0x13, 0xf2, 0x37, 0x2a, 0x68, 0xf2, 0x3e,
+	0xe4, 0x3c, 0xd3, 0xee, 0x94, 0x73, 0x42, 0xc5, 0x1b, 0xa3, 0xab, 0x30, 0xed, 0x4e, 0xbd, 0xc0,
+	0xdf, 0x80, 0xff, 0x42, 0x01, 0x4a, 0xbe, 0xa5, 0xc1, 0x9c, 0xe1, 0xd8, 0x4c, 0xe7, 0x03, 0xb5,
+	0x43, 0xbb, 0x3d, 0x4b, 0x67, 0xb4, 0x9c, 0x17, 0xaa, 0xee, 0x8e, 0xac, 0x6a, 0x25, 0x89, 0x58,
+	0x7f, 0xf1, 0xf8, 0xa8, 0x32, 0x37, 0xd0, 0x8c, 0x83, 0xba, 0xc9, 0x43, 0xc8, 0xf6, 0x9b, 0xad,
+	0xf2, 0x84, 0xe8, 0xc2, 0xaf, 0x8e, 0xdc, 0x85, 0xdd, 0xd5, 0xb5, 0xfa, 0xe4, 0xf1, 0x51, 0x25,
+	0xbb, 0xbb, 0xba, 0x86, 0x1c, 0x91, 0x74, 0xa0, 0xc0, 0x57, 0x59, 0x53, 0x67, 0x7a, 0x79, 0x52,
+	0xa0, 0x2f, 0x8f, 0x8c, 0xbe, 0xa5, 0x80, 0xea, 0x53, 0xc7, 0x47, 0x95, 0x82, 0xff, 0x84, 0x81,
+	0x02, 0xf2, 0x1d, 0x0d, 0xa6, 0x6c, 0xa7, 0x49, 0x1b, 0xd4, 0xa2, 0x06, 0x73, 0xdc, 0x72, 0xe1,
+	0x46, 0xf6, 0x66, 0x69, 0xe9, 0xdd, 0x91, 0x35, 0xc6, 0xd7, 0x66, 0xed, 0x7e, 0x04, 0xfb, 0xb6,
+	0xcd, 0xdc, 0xc3, 0xfa, 0x15, 0xb5, 0x3e, 0xa7, 0xa2, 0x24, 0x8c, 0x75, 0x82, 0xec, 0x42, 0x89,
+	0x39, 0x16, 0x5f, 0xf7, 0xa6, 0x63, 0x7b, 0xe5, 0xa2, 0xe8, 0xd3, 0x42, 0x4d, 0x6e, 0x19, 0xae,
+	0xb9, 0xc6, 0xf7, 0x7c, 0xed, 0xe0, 0xb5, 0xda, 0x4e, 0xc0, 0x56, 0xbf, 0xac, 0x80, 0x4b, 0x61,
+	0x9b, 0x87, 0x51, 0x1c, 0x42, 0x61, 0xc6, 0xa3, 0x46, 0xdf, 0x35, 0xd9, 0x21, 0x9f, 0x62, 0xfa,
+	0x84, 0x95, 0x41, 0x0c, 0xf0, 0xab, 0x69, 0xd0, 0xdb, 0x4e, 0xb3, 0x11, 0xe7, 0xae, 0x5f, 0x3e,
+	0x3e, 0xaa, 0xcc, 0x24, 0x1a, 0x31, 0x89, 0x49, 0x6c, 0x98, 0x35, 0xbb, 0x7a, 0x9b, 0x6e, 0xf7,
+	0x2d, 0xab, 0x41, 0x0d, 0x97, 0x32, 0xaf, 0x5c, 0x12, 0xaf, 0x70, 0x33, 0x4d, 0xcf, 0xa6, 0x63,
+	0xe8, 0xd6, 0xdb, 0x7b, 0x1f, 0x50, 0x83, 0x21, 0x6d, 0x51, 0x97, 0xda, 0x06, 0xad, 0x97, 0xd5,
+	0xcb, 0xcc, 0x6e, 0x24, 0x90, 0x70, 0x00, 0x9b, 0xac, 0xc3, 0x5c, 0xcf, 0x35, 0x1d, 0xd1, 0x05,
+	0x4b, 0xf7, 0x3c, 0xbe, 0xf1, 0xcb, 0x53, 0xc2, 0x18, 0x5c, 0x53, 0x30, 0x73, 0xdb, 0x49, 0x06,
+	0x1c, 0x94, 0x21, 0x37, 0xa1, 0xe0, 0x37, 0x96, 0xa7, 0x6f, 0x68, 0x37, 0xf3, 0x72, 0xd9, 0xf8,
+	0xb2, 0x18, 0x50, 0xc9, 0x1a, 0x14, 0xf4, 0x56, 0xcb, 0xb4, 0x39, 0xe7, 0x25, 0x31, 0x84, 0xd7,
+	0xd3, 0x5e, 0x6d, 0x59, 0xf1, 0x48, 0x1c, 0xff, 0x09, 0x03, 0x59, 0x72, 0x17, 0x88, 0x47, 0xdd,
+	0x03, 0xd3, 0xa0, 0xcb, 0x86, 0xe1, 0xf4, 0x6d, 0x26, 0xfa, 0x3e, 0x23, 0xfa, 0x3e, 0xaf, 0xfa,
+	0x4e, 0x1a, 0x03, 0x1c, 0x98, 0x22, 0x45, 0x6e, 0xc3, 0xe4, 0x81, 0x63, 0xf5, 0xbb, 0xd4, 0x2b,
+	0xcf, 0x8a, 0xd1, 0x9e, 0x4f, 0xeb, 0xd2, 0x03, 0xc1, 0x52, 0x9f, 0x51, 0xe0, 0x93, 0xf2, 0xd9,
+	0x43, 0x5f, 0x96, 0x98, 0x30, 0x61, 0x99, 0x5d, 0x93, 0x79, 0xe5, 0x39, 0xf1, 0x62, 0xb7, 0x47,
+	0xde, 0x0a, 0x72, 0x0b, 0x6c, 0x0a, 0x30, 0x69, 0x31, 0xe5, 0x6f, 0x54, 0x0a, 0x88, 0x01, 0x79,
+	0xcf, 0xd0, 0x2d, 0x5a, 0x26, 0x42, 0xd3, 0xd7, 0x47, 0x37, 0x99, 0x1c, 0xa5, 0x3e, 0xad, 0xde,
+	0x29, 0x2f, 0x1e, 0x51, 0x62, 0xcf, 0xbf, 0x09, 0x73, 0x03, 0x9b, 0x90, 0xcc, 0x42, 0xb6, 0x43,
+	0x0f, 0xe5, 0x89, 0x81, 0xfc, 0x27, 0xb9, 0x02, 0xf9, 0x03, 0xdd, 0xea, 0xd3, 0x72, 0x46, 0xb4,
+	0xc9, 0x87, 0x5f, 0xce, 0xdc, 0xd2, 0xaa, 0x0f, 0x61, 0x7a, 0xb9, 0xcf, 0xf6, 0x1d, 0xd7, 0xfc,
+	0x50, 0xec, 0x23, 0xb2, 0x06, 0x79, 0xe6, 0x74, 0xa8, 0x2d, 0xc4, 0x4b, 0x4b, 0xaf, 0xa4, 0x0d,
+	0xb3, 0x5c, 0x9b, 0xf7, 0xe8, 0xa1, 0xaf, 0xb7, 0x5e, 0xe4, 0x3d, 0xdb, 0xe1, 0x72, 0x28, 0xc5,
+	0xab, 0xef, 0xc1, 0x44, 0xbd, 0xdf, 0x6a, 0x51, 0xf7, 0x14, 0x27, 0x58, 0x0d, 0x72, 0xec, 0xb0,
+	0xa7, 0x7a, 0x17, 0x2c, 0x8d, 0xdc, 0xce, 0x61, 0x8f, 0x3e, 0x3d, 0xaa, 0x80, 0xc4, 0xe1, 0x4f,
+	0x28, 0xf8, 0xaa, 0x3f, 0xd5, 0xe0, 0xb2, 0x6c, 0x54, 0xab, 0x67, 0xc5, 0xb1, 0x5b, 0x66, 0x9b,
+	0x50, 0xc8, 0xbb, 0xb4, 0x69, 0x7a, 0xaa, 0xef, 0xab, 0x23, 0x0f, 0x39, 0x72, 0x14, 0x09, 0x2a,
+	0x5f, 0x4d, 0x34, 0xa0, 0x44, 0x27, 0x7d, 0x28, 0x7e, 0x40, 0x99, 0xc7, 0x5c, 0xaa, 0x77, 0x45,
+	0x9f, 0x4b, 0x4b, 0x77, 0x46, 0x56, 0x75, 0x97, 0xb2, 0x86, 0x40, 0x52, 0xea, 0xa6, 0x8f, 0x8f,
+	0x2a, 0xc5, 0xa0, 0x11, 0x43, 0x4d, 0xd5, 0x7f, 0xcf, 0x40, 0x31, 0x38, 0xbc, 0xc8, 0xcb, 0x90,
+	0x17, 0xb6, 0x42, 0x0d, 0x6b, 0xb0, 0x3c, 0x84, 0x49, 0x41, 0x49, 0x23, 0xaf, 0xc0, 0xa4, 0xe1,
+	0x74, 0xbb, 0xba, 0xdd, 0x2c, 0x67, 0x6e, 0x64, 0x6f, 0x16, 0xeb, 0x25, 0xbe, 0x2b, 0x56, 0x64,
+	0x13, 0xfa, 0x34, 0x72, 0x1d, 0x72, 0xba, 0xdb, 0xf6, 0xca, 0x59, 0xc1, 0x23, 0x4e, 0xe7, 0x65,
+	0xb7, 0xed, 0xa1, 0x68, 0x25, 0x5f, 0x83, 0x2c, 0xb5, 0x0f, 0xca, 0xb9, 0xe1, 0xdb, 0xee, 0xb6,
+	0x7d, 0xf0, 0x40, 0x77, 0xeb, 0x25, 0xd5, 0x87, 0xec, 0x6d, 0xfb, 0x00, 0xb9, 0x0c, 0x79, 0x17,
+	0xa6, 0xe4, 0xce, 0xdb, 0xe2, 0x1b, 0xd9, 0x2b, 0xe7, 0x05, 0x46, 0x65, 0xf8, 0xd6, 0x15, 0x7c,
+	0xe1, 0x29, 0x12, 0x69, 0xf4, 0x30, 0x06, 0x45, 0xde, 0x85, 0xa2, 0xef, 0xe5, 0x79, 0xea, 0x9c,
+	0x4e, 0x35, 0xc0, 0xa8, 0x98, 0x90, 0x7e, 0xa3, 0x6f, 0xba, 0xb4, 0x4b, 0x6d, 0xe6, 0xd5, 0xe7,
+	0x94, 0x82, 0xa2, 0x4f, 0xf5, 0x30, 0x44, 0xab, 0xfe, 0x57, 0x06, 0x06, 0xbd, 0x84, 0xb8, 0x42,
+	0xed, 0x3c, 0x15, 0x92, 0x3d, 0x98, 0x09, 0xec, 0xfe, 0xb6, 0x63, 0x99, 0xc6, 0xa1, 0xda, 0x0a,
+	0xb7, 0x94, 0xd8, 0xcc, 0x46, 0x9c, 0xfc, 0xf4, 0xa8, 0xf2, 0xd2, 0xa0, 0x8f, 0x5c, 0x0b, 0x19,
+	0x30, 0x09, 0xc8, 0x75, 0x24, 0x8f, 0x47, 0xe9, 0x2e, 0xbe, 0x3c, 0x64, 0x87, 0x8f, 0x70, 0x36,
+	0x8e, 0xbe, 0x52, 0xaa, 0x7f, 0x9e, 0x81, 0xdc, 0xed, 0x66, 0x9b, 0x72, 0x6b, 0xd1, 0x72, 0x9d,
+	0x6e, 0xd2, 0x5a, 0xac, 0xb9, 0x4e, 0x17, 0x05, 0x85, 0xcc, 0x43, 0x86, 0x39, 0x6a, 0x80, 0x40,
+	0xd1, 0x33, 0x3b, 0x0e, 0x66, 0x98, 0x43, 0x3e, 0x04, 0x30, 0x1c, 0xbb, 0x69, 0x4a, 0xd7, 0x22,
+	0x3b, 0xa6, 0x07, 0xb9, 0xe6, 0xb8, 0x8f, 0x75, 0xb7, 0xb9, 0x12, 0x20, 0xd6, 0x2f, 0x1d, 0x1f,
+	0x55, 0x20, 0x7c, 0xc6, 0x88, 0x36, 0xd2, 0x0e, 0xce, 0x16, 0xe9, 0x24, 0xaf, 0x8c, 0xac, 0x97,
+	0x0f, 0xc4, 0xf0, 0x93, 0xa5, 0xfa, 0x47, 0x1a, 0x40, 0xc8, 0x42, 0xde, 0x80, 0x99, 0x3d, 0x61,
+	0x0c, 0xb7, 0xf4, 0x27, 0x9b, 0xd4, 0x6e, 0xb3, 0x7d, 0x31, 0x78, 0x39, 0x39, 0x69, 0xf5, 0x38,
+	0x09, 0x93, 0xbc, 0xe4, 0x2d, 0x98, 0x95, 0x4d, 0xbb, 0x9e, 0xae, 0x30, 0xc5, 0xe0, 0x4e, 0xd7,
+	0xaf, 0x70, 0x17, 0xa5, 0x9e, 0xa0, 0xe1, 0x00, 0x77, 0xf5, 0x75, 0x98, 0x1b, 0x18, 0x29, 0x52,
+	0x81, 0x7c, 0x87, 0x1e, 0x6e, 0xf0, 0x73, 0x84, 0x1b, 0x15, 0x61, 0x45, 0xef, 0xf1, 0x06, 0x94,
+	0xed, 0xd5, 0xff, 0xd6, 0xa0, 0xb0, 0xd6, 0xb7, 0x0d, 0x71, 0xea, 0x3c, 0xfb, 0x8c, 0xf0, 0x6d,
+	0x54, 0x26, 0xd5, 0x46, 0xf5, 0x61, 0xa2, 0xf3, 0x38, 0xb0, 0x61, 0xa5, 0xa5, 0xad, 0xd1, 0xe7,
+	0x5c, 0x75, 0xa9, 0x76, 0x4f, 0xe0, 0x49, 0xb7, 0xf6, 0x92, 0xea, 0xd0, 0xc4, 0xbd, 0x87, 0x42,
+	0xa9, 0x52, 0x36, 0xff, 0x35, 0x28, 0x45, 0xd8, 0xce, 0x74, 0xf0, 0xfe, 0x40, 0x83, 0x99, 0x75,
+	0x19, 0xfe, 0x39, 0xae, 0x0c, 0xb6, 0xc8, 0x35, 0xc8, 0xba, 0xbd, 0xbe, 0x90, 0xcf, 0xca, 0xb8,
+	0x01, 0xb7, 0x77, 0x91, 0xb7, 0x91, 0x77, 0xa0, 0xd0, 0xec, 0x4b, 0x57, 0x57, 0x1d, 0x39, 0xb5,
+	0xc8, 0xfe, 0x0a, 0x82, 0xcc, 0xf0, 0xcd, 0x78, 0x10, 0xc0, 0x77, 0xdc, 0xaa, 0x92, 0x92, 0x5e,
+	0x9a, 0xff, 0x84, 0x01, 0x1a, 0x3f, 0x23, 0xba, 0x5e, 0xbb, 0x61, 0x7e, 0x28, 0xe3, 0xc7, 0xbc,
+	0x3c, 0x23, 0xb6, 0x64, 0x13, 0xfa, 0xb4, 0xea, 0xb7, 0x32, 0x70, 0x75, 0x9d, 0xb2, 0x55, 0x9d,
+	0x76, 0x1d, 0x7b, 0x95, 0xf6, 0x2c, 0xe7, 0x90, 0x9b, 0x36, 0xa4, 0xdf, 0x20, 0x6f, 0x01, 0x98,
+	0xde, 0x5e, 0xe3, 0xc0, 0xe0, 0x47, 0xb4, 0x9a, 0xc2, 0x1b, 0x6a, 0xc4, 0x60, 0xa3, 0x51, 0x57,
+	0x94, 0xa7, 0xb1, 0x27, 0x8c, 0xc8, 0x84, 0x87, 0x59, 0xe6, 0x84, 0xc3, 0xac, 0x01, 0xd0, 0x0b,
+	0x0d, 0x64, 0x56, 0x70, 0xfe, 0xa2, 0xaf, 0xe6, 0x2c, 0xb6, 0x31, 0x02, 0x33, 0x8e, 0xc9, 0xfa,
+	0xdb, 0x2c, 0xcc, 0xaf, 0x53, 0x16, 0x9c, 0xd5, 0xca, 0x17, 0x69, 0xf4, 0xa8, 0xc1, 0x47, 0xe5,
+	0x23, 0x0d, 0x26, 0x2c, 0x7d, 0x8f, 0x5a, 0x9e, 0xd8, 0x02, 0xa5, 0xa5, 0x47, 0x23, 0xaf, 0xc9,
+	0xe1, 0x5a, 0x6a, 0x9b, 0x42, 0x43, 0x62, 0x95, 0xca, 0x46, 0x54, 0xea, 0xc9, 0x57, 0xa0, 0x64,
+	0x58, 0x7d, 0x8f, 0x51, 0x77, 0xdb, 0x71, 0xe5, 0xe6, 0xce, 0x87, 0x01, 0xd5, 0x4a, 0x48, 0xc2,
+	0x28, 0x1f, 0x59, 0x02, 0x30, 0x2c, 0x93, 0xda, 0x4c, 0x48, 0xc9, 0xb5, 0x41, 0xfc, 0xf1, 0x5e,
+	0x09, 0x28, 0x18, 0xe1, 0xe2, 0xaa, 0xba, 0x8e, 0x6d, 0x32, 0x47, 0xaa, 0xca, 0xc5, 0x55, 0x6d,
+	0x85, 0x24, 0x8c, 0xf2, 0x09, 0x31, 0xca, 0x5c, 0xd3, 0xf0, 0x84, 0x58, 0x3e, 0x21, 0x16, 0x92,
+	0x30, 0xca, 0xc7, 0xb7, 0x5f, 0xe4, 0xfd, 0xcf, 0xb4, 0xfd, 0xfe, 0xae, 0x00, 0x0b, 0xb1, 0x61,
+	0x65, 0x3a, 0xa3, 0xad, 0xbe, 0xd5, 0xa0, 0xcc, 0x9f, 0xc0, 0xaf, 0x40, 0x49, 0x05, 0x22, 0xf7,
+	0x43, 0xd3, 0x14, 0x74, 0xaa, 0x11, 0x92, 0x30, 0xca, 0x47, 0xfe, 0x20, 0x9c, 0xf7, 0x8c, 0x98,
+	0x77, 0xe3, 0x7c, 0xe6, 0x7d, 0xa0, 0x83, 0xa7, 0x9a, 0xfb, 0x45, 0x28, 0xda, 0x3a, 0xf3, 0xc4,
+	0x46, 0x52, 0x7b, 0x26, 0xf0, 0x45, 0xee, 0xfb, 0x04, 0x0c, 0x79, 0xc8, 0x36, 0x5c, 0x51, 0x43,
+	0x7c, 0xfb, 0x49, 0xcf, 0x71, 0x19, 0x75, 0xa5, 0x6c, 0x4e, 0xc8, 0x5e, 0x57, 0xb2, 0x57, 0xb6,
+	0x52, 0x78, 0x30, 0x55, 0x92, 0x6c, 0xc1, 0x65, 0x43, 0xf8, 0xb6, 0x48, 0x2d, 0x47, 0x6f, 0xfa,
+	0x80, 0x79, 0x01, 0xf8, 0x45, 0x05, 0x78, 0x79, 0x65, 0x90, 0x05, 0xd3, 0xe4, 0x92, 0xab, 0x79,
+	0x62, 0xa4, 0xd5, 0x3c, 0x39, 0xca, 0x6a, 0x2e, 0x8c, 0xb6, 0x9a, 0x8b, 0xa7, 0x5b, 0xcd, 0x7c,
+	0xe4, 0xf9, 0x3a, 0xa2, 0x2e, 0x0f, 0xc8, 0x64, 0x88, 0x25, 0x16, 0x1e, 0xc4, 0x47, 0xbe, 0x91,
+	0xc2, 0x83, 0xa9, 0x92, 0x64, 0x0f, 0xe6, 0x65, 0xfb, 0x6d, 0xdb, 0x70, 0x0f, 0x7b, 0xdc, 0xdc,
+	0x47, 0x70, 0x4b, 0x02, 0xb7, 0xaa, 0x70, 0xe7, 0x1b, 0x43, 0x39, 0xf1, 0x04, 0x14, 0xf2, 0x2b,
+	0x30, 0x2d, 0x67, 0x69, 0x4b, 0xef, 0x45, 0x72, 0x13, 0x2f, 0x2a, 0xd8, 0xe9, 0x95, 0x28, 0x11,
+	0xe3, 0xbc, 0x64, 0x19, 0x66, 0x7a, 0x07, 0x06, 0xff, 0xb9, 0xd1, 0xba, 0x4f, 0x69, 0x93, 0x36,
+	0x45, 0x6a, 0xa2, 0x58, 0xff, 0x82, 0xef, 0xf8, 0x6e, 0xc7, 0xc9, 0x98, 0xe4, 0x27, 0xb7, 0x60,
+	0xca, 0x63, 0xba, 0xcb, 0x54, 0x50, 0x23, 0x12, 0x16, 0xc5, 0x30, 0x82, 0x68, 0x44, 0x68, 0x18,
+	0xe3, 0x1c, 0xc7, 0x7a, 0x3c, 0x95, 0x87, 0xa1, 0x88, 0x0a, 0x13, 0x66, 0xff, 0x77, 0x93, 0x66,
+	0xff, 0xfd, 0x71, 0xb6, 0x7f, 0x8a, 0x86, 0x53, 0x6d, 0xfb, 0xbb, 0x40, 0x5c, 0x15, 0xc3, 0xca,
+	0x30, 0x26, 0x62, 0xf9, 0x83, 0xd4, 0x0b, 0x0e, 0x70, 0x60, 0x8a, 0x14, 0x69, 0xc0, 0x8b, 0x1e,
+	0xb5, 0x99, 0x69, 0x53, 0x2b, 0x0e, 0x27, 0x8f, 0x84, 0x97, 0x14, 0xdc, 0x8b, 0x8d, 0x34, 0x26,
+	0x4c, 0x97, 0x1d, 0x67, 0xf0, 0x7f, 0x54, 0x14, 0xe7, 0xae, 0x1c, 0x9a, 0x73, 0x33, 0xdb, 0x1f,
+	0x25, 0xcd, 0xf6, 0xa3, 0xf1, 0xe7, 0x6d, 0x34, 0x93, 0xbd, 0x04, 0x20, 0x66, 0x21, 0x6a, 0xb3,
+	0x03, 0x4b, 0x85, 0x01, 0x05, 0x23, 0x5c, 0x7c, 0x17, 0xfa, 0xe3, 0x1c, 0x35, 0xd7, 0xc1, 0x2e,
+	0x6c, 0x44, 0x89, 0x18, 0xe7, 0x1d, 0x6a, 0xf2, 0xf3, 0x23, 0x9b, 0xfc, 0xbb, 0x40, 0x4c, 0xdb,
+	0x64, 0xc1, 0x94, 0x4b, 0xbc, 0x89, 0x78, 0xe6, 0x6f, 0x63, 0x80, 0x03, 0x53, 0xa4, 0x86, 0x2c,
+	0xe5, 0xc9, 0xf3, 0x5d, 0xca, 0x85, 0xd1, 0x97, 0x32, 0x79, 0x04, 0xd7, 0x84, 0x2a, 0x35, 0x3e,
+	0x71, 0x60, 0x69, 0xfc, 0x7f, 0x46, 0x01, 0x5f, 0xc3, 0x61, 0x8c, 0x38, 0x1c, 0x83, 0xcf, 0x8f,
+	0xe1, 0xd2, 0x26, 0x57, 0xae, 0x5b, 0xc3, 0x0f, 0x86, 0x95, 0x14, 0x1e, 0x4c, 0x95, 0xe4, 0x4b,
+	0x8c, 0xf1, 0x65, 0xa8, 0xef, 0x59, 0xb4, 0x29, 0x0e, 0x82, 0x42, 0xb8, 0xc4, 0x76, 0x36, 0x1b,
+	0x8a, 0x82, 0x11, 0xae, 0x34, 0x5b, 0x3d, 0x75, 0x46, 0x5b, 0xbd, 0x2e, 0xca, 0x3c, 0xad, 0xd8,
+	0x91, 0xa0, 0x0c, 0x7e, 0x90, 0xcb, 0x5e, 0x49, 0x32, 0xe0, 0xa0, 0x8c, 0x38, 0x2a, 0x0d, 0xd7,
+	0xec, 0x31, 0x2f, 0x8e, 0x75, 0x29, 0x71, 0x54, 0xa6, 0xf0, 0x60, 0xaa, 0x24, 0x77, 0x52, 0xf6,
+	0xa9, 0x6e, 0xb1, 0xfd, 0x38, 0xe0, 0x4c, 0xdc, 0x49, 0xb9, 0x33, 0xc8, 0x82, 0x69, 0x72, 0xe3,
+	0x98, 0xb7, 0x3f, 0xcc, 0xc0, 0xe5, 0x75, 0xaa, 0x4a, 0x2c, 0xdb, 0x4e, 0xd3, 0xb7, 0x6b, 0xff,
+	0x4f, 0xa3, 0xac, 0x3f, 0xd1, 0x00, 0xee, 0xec, 0xec, 0x6c, 0xab, 0x10, 0xb9, 0x09, 0x39, 0xbd,
+	0xaf, 0x32, 0x1c, 0xa5, 0xa5, 0xb5, 0xd1, 0x2b, 0x59, 0xd1, 0xa4, 0xb7, 0x4a, 0x27, 0xf4, 0xd9,
+	0x3e, 0x0a, 0x74, 0xf2, 0xb3, 0x30, 0xa9, 0xce, 0x06, 0x31, 0x56, 0x85, 0xb0, 0xa2, 0xa0, 0xce,
+	0x0f, 0xf4, 0xe9, 0xd5, 0x9f, 0x64, 0xe0, 0xea, 0x86, 0xcd, 0xa8, 0xdb, 0x60, 0xb4, 0x17, 0x4b,
+	0x4a, 0x93, 0xdf, 0x8c, 0xd4, 0xfa, 0x64, 0x7f, 0x7f, 0xe1, 0x74, 0x31, 0xbb, 0xac, 0x17, 0x6d,
+	0x51, 0xa6, 0x87, 0xbb, 0x32, 0x6c, 0x8b, 0x14, 0xf8, 0xfa, 0x90, 0xf3, 0x7a, 0xd4, 0x50, 0x19,
+	0x81, 0xc6, 0xc8, 0xa3, 0x91, 0xfe, 0x02, 0x7c, 0xe5, 0x85, 0xb9, 0x18, 0xb1, 0x0e, 0x85, 0x3a,
+	0xf2, 0x4d, 0x98, 0xf0, 0x98, 0xce, 0xfa, 0x7e, 0x86, 0x6d, 0xf7, 0xbc, 0x15, 0x0b, 0xf0, 0xf0,
+	0x80, 0x94, 0xcf, 0xa8, 0x94, 0x56, 0x7f, 0xa2, 0xc1, 0x7c, 0xba, 0xe0, 0xa6, 0xe9, 0x31, 0xf2,
+	0xeb, 0x03, 0xc3, 0x7e, 0xca, 0x54, 0x09, 0x97, 0x16, 0x83, 0x3e, 0xab, 0x14, 0x17, 0xfc, 0x96,
+	0xc8, 0x90, 0x33, 0xc8, 0x9b, 0x8c, 0x76, 0x7d, 0x2f, 0xe1, 0xed, 0x73, 0x7e, 0xf5, 0xc8, 0xae,
+	0xe4, 0x5a, 0x50, 0x2a, 0xab, 0x7e, 0x94, 0x19, 0xf6, 0xca, 0x7c, 0x5a, 0x48, 0x27, 0x5e, 0xf8,
+	0xb8, 0x3b, 0x5e, 0xe1, 0xa3, 0xde, 0x8f, 0xf4, 0x67, 0xb0, 0xfc, 0xf1, 0x5b, 0x83, 0xe5, 0x8f,
+	0xb7, 0xc7, 0x2f, 0x7f, 0x24, 0x46, 0x61, 0x68, 0x15, 0xe4, 0x47, 0x19, 0xb8, 0x7e, 0xd2, 0xaa,
+	0x21, 0xed, 0x60, 0x71, 0x6a, 0xe3, 0x5e, 0x87, 0x38, 0x71, 0x19, 0x92, 0x25, 0xc8, 0xf7, 0xf6,
+	0x75, 0xcf, 0x37, 0xa7, 0xfe, 0xa9, 0x93, 0xdf, 0xe6, 0x8d, 0x4f, 0x8f, 0x2a, 0x25, 0x69, 0x86,
+	0xc5, 0x23, 0x4a, 0x56, 0x6e, 0x58, 0xba, 0xd4, 0xf3, 0x42, 0xc7, 0x2e, 0x30, 0x2c, 0x5b, 0xb2,
+	0x19, 0x7d, 0x3a, 0x61, 0x30, 0x21, 0x83, 0x25, 0x95, 0x4e, 0xde, 0x1c, 0xf9, 0x3d, 0x52, 0x4a,
+	0x65, 0xe1, 0x4b, 0xa9, 0xb8, 0x5b, 0xe9, 0xaa, 0xfe, 0xd5, 0x25, 0xb8, 0x9a, 0x3e, 0x27, 0xbc,
+	0xef, 0x07, 0xd4, 0xf5, 0x4c, 0xc7, 0x56, 0xa7, 0x4f, 0x58, 0x66, 0x95, 0xcd, 0xe8, 0xd3, 0xc9,
+	0x4d, 0x28, 0xb8, 0xb4, 0x67, 0x99, 0x86, 0xee, 0xa9, 0xa0, 0x43, 0x64, 0x1f, 0x51, 0xb5, 0x61,
+	0x40, 0x1d, 0x72, 0xf5, 0x23, 0xfb, 0x7f, 0x78, 0xf5, 0xe3, 0xcf, 0x34, 0xee, 0xcf, 0xc9, 0x8c,
+	0xc3, 0x80, 0x80, 0x9a, 0x8b, 0xf3, 0xec, 0xd9, 0x4b, 0xd2, 0x2f, 0x1c, 0xa2, 0x10, 0x87, 0xf7,
+	0x85, 0x7c, 0x5f, 0x83, 0x72, 0x37, 0xe1, 0x30, 0x5e, 0xe0, 0xed, 0x99, 0xeb, 0xc7, 0x47, 0x95,
+	0xf2, 0xd6, 0x10, 0x7d, 0x38, 0xb4, 0x27, 0xe4, 0xb7, 0xa1, 0xd4, 0xe3, 0xeb, 0xc2, 0x63, 0xd4,
+	0x36, 0xa8, 0xaa, 0xd5, 0x8d, 0xbe, 0x9a, 0xb7, 0x43, 0xac, 0x06, 0x73, 0x75, 0x46, 0xdb, 0x87,
+	0xf5, 0x19, 0x1e, 0xda, 0x45, 0x08, 0x18, 0xd5, 0x18, 0xbb, 0x73, 0xb3, 0x75, 0xd1, 0x77, 0x6e,
+	0xbe, 0x9b, 0x7e, 0xe7, 0x46, 0x3f, 0x67, 0x0b, 0xf9, 0xfc, 0xee, 0xcd, 0xf3, 0xbb, 0x37, 0x9f,
+	0xd7, 0xdd, 0x9b, 0x9b, 0x50, 0xf0, 0x28, 0x63, 0xa6, 0xdd, 0xf6, 0xca, 0xb3, 0xb2, 0x40, 0xc7,
+	0xb5, 0x36, 0x54, 0x1b, 0x06, 0x54, 0xf2, 0xf3, 0x50, 0x14, 0x29, 0xb6, 0x65, 0xb7, 0xed, 0x95,
+	0xe7, 0x44, 0xa5, 0x4e, 0x9c, 0xe4, 0x0d, 0xbf, 0x11, 0x43, 0x3a, 0x79, 0x1d, 0xa6, 0x64, 0x29,
+	0x51, 0x1e, 0x41, 0xe2, 0x9e, 0x4c, 0xb1, 0x3e, 0xcb, 0x57, 0x70, 0x3d, 0xd2, 0x8e, 0x31, 0x2e,
+	0x1e, 0xba, 0xd2, 0x20, 0x0f, 0x59, 0xbe, 0x1c, 0x0f, 0x5d, 0xc3, 0x0c, 0x25, 0x46, 0xb8, 0xc8,
+	0x4b, 0x90, 0x65, 0x96, 0x57, 0xbe, 0x22, 0x98, 0x83, 0x10, 0x63, 0x67, 0xb3, 0x81, 0xbc, 0x7d,
+	0xfc, 0x4b, 0x34, 0xff, 0xa3, 0xc1, 0x4c, 0xe2, 0x1e, 0x07, 0xd7, 0xd9, 0x77, 0x2d, 0x75, 0x52,
+	0x06, 0x3a, 0x77, 0x71, 0x13, 0x79, 0x3b, 0x79, 0xa4, 0xe2, 0x98, 0xcc, 0x98, 0xf6, 0xe8, 0xfe,
+	0xf2, 0x4e, 0x83, 0x07, 0x2e, 0x03, 0x21, 0xcc, 0xad, 0xc4, 0xe8, 0x66, 0xe3, 0x79, 0xd1, 0x93,
+	0x47, 0x38, 0x92, 0x1c, 0xc8, 0x9d, 0x26, 0x39, 0x50, 0xfd, 0x54, 0x83, 0xe2, 0x3d, 0xbd, 0xd5,
+	0xd1, 0x1b, 0xa6, 0xdd, 0x21, 0xaf, 0xc0, 0xe4, 0x9e, 0xeb, 0x74, 0xa8, 0xeb, 0xa9, 0xea, 0xaf,
+	0x28, 0x29, 0xd6, 0x65, 0x13, 0xfa, 0x34, 0x1e, 0x8f, 0x32, 0xa7, 0x67, 0x1a, 0xc9, 0x78, 0x74,
+	0x87, 0x37, 0xa2, 0xa4, 0x91, 0x87, 0x72, 0xee, 0xb2, 0x63, 0xde, 0xc4, 0xdc, 0xd9, 0x6c, 0xc8,
+	0x8a, 0xaa, 0x3f, 0xeb, 0xe4, 0xd5, 0x98, 0x7f, 0x55, 0x1c, 0xea, 0x11, 0x7d, 0x37, 0x03, 0x25,
+	0xf9, 0x6a, 0x32, 0x02, 0x3d, 0xcf, 0x97, 0x7b, 0x53, 0x24, 0xcf, 0xbd, 0x7e, 0x97, 0xba, 0xeb,
+	0xae, 0xd3, 0xef, 0xa9, 0x59, 0x8a, 0x26, 0x43, 0x42, 0x62, 0x90, 0x40, 0x0f, 0x9b, 0xfc, 0xd1,
+	0xc9, 0x5d, 0xe0, 0xe8, 0xe4, 0x4f, 0x1c, 0x9d, 0xbf, 0xd4, 0xa0, 0xb8, 0x69, 0xb6, 0xa8, 0x71,
+	0x68, 0x58, 0x94, 0xbc, 0x03, 0xe5, 0x26, 0xb5, 0x28, 0xa3, 0xeb, 0xae, 0x6e, 0xd0, 0x6d, 0xea,
+	0x9a, 0xc2, 0xd4, 0x3b, 0x76, 0x53, 0x7a, 0xe3, 0x79, 0xe9, 0x44, 0xac, 0x0e, 0xe1, 0xc1, 0xa1,
+	0xd2, 0x64, 0x03, 0xa6, 0x9a, 0xd4, 0x33, 0x5d, 0xda, 0xdc, 0x8e, 0xf8, 0xdc, 0xaf, 0xf8, 0xcb,
+	0x79, 0x35, 0x42, 0x7b, 0x7a, 0x54, 0x99, 0xde, 0x36, 0x7b, 0xd4, 0x32, 0x6d, 0x2a, 0x9d, 0xef,
+	0x98, 0x68, 0x35, 0x0f, 0xd9, 0x4d, 0xa7, 0x5d, 0xfd, 0xbd, 0x2c, 0x04, 0xe7, 0x37, 0xf9, 0x7d,
+	0x0d, 0x4a, 0xba, 0x6d, 0x3b, 0x4c, 0x1d, 0x8c, 0x32, 0x75, 0x8f, 0x63, 0xbb, 0x09, 0xb5, 0xe5,
+	0x10, 0x54, 0x9e, 0xd2, 0xc1, 0x61, 0x1a, 0xa1, 0x60, 0x54, 0x37, 0xe9, 0x27, 0x12, 0xd1, 0x5b,
+	0xe3, 0xf7, 0xe2, 0x14, 0x69, 0xe7, 0xf9, 0xaf, 0xc3, 0x6c, 0xb2, 0xb3, 0x67, 0x31, 0x82, 0xe3,
+	0xa4, 0xbc, 0xfe, 0x54, 0x83, 0x82, 0x6f, 0xc8, 0xc8, 0x0a, 0xe4, 0xfa, 0x1e, 0x75, 0xcf, 0x76,
+	0xff, 0x50, 0x58, 0xbf, 0x5d, 0x8f, 0xba, 0x28, 0x84, 0xc9, 0xdb, 0x50, 0xe8, 0xe9, 0x9e, 0xf7,
+	0xd8, 0x71, 0x9b, 0xca, 0xc4, 0x9e, 0x12, 0x48, 0x9e, 0xcb, 0x4a, 0x14, 0x03, 0x90, 0xea, 0x0f,
+	0xa7, 0xa1, 0x74, 0x5f, 0x67, 0xe6, 0x01, 0x15, 0xb1, 0xf0, 0xc5, 0x04, 0x43, 0xdf, 0xd3, 0xe0,
+	0x6a, 0x3c, 0x6b, 0x7d, 0x81, 0x11, 0xd1, 0xfc, 0xf1, 0x51, 0xe5, 0x2a, 0xa6, 0x6a, 0xc3, 0x21,
+	0xbd, 0x10, 0xb1, 0xd1, 0x40, 0x12, 0xfc, 0xa2, 0x63, 0xa3, 0xc6, 0x30, 0x85, 0x38, 0xbc, 0x2f,
+	0xcf, 0x63, 0xa3, 0x11, 0x62, 0xa3, 0x0b, 0xff, 0x1e, 0xe1, 0xdb, 0xe9, 0xb1, 0xd1, 0x83, 0xd1,
+	0xbd, 0x9f, 0x70, 0x47, 0x3e, 0x0f, 0x88, 0x9e, 0x07, 0x44, 0x9f, 0x57, 0x40, 0xd4, 0x4b, 0x04,
+	0x44, 0xe3, 0x14, 0x22, 0x54, 0x85, 0x5f, 0xa2, 0x0d, 0x0b, 0xac, 0xc6, 0x0f, 0x51, 0xfe, 0x38,
+	0x03, 0x97, 0x53, 0xac, 0x03, 0x79, 0x0b, 0x66, 0x3d, 0xe6, 0xb8, 0x7a, 0x9b, 0x86, 0x13, 0x2a,
+	0x0f, 0x34, 0x71, 0xfb, 0xb3, 0x91, 0xa0, 0xe1, 0x00, 0x37, 0x79, 0x04, 0xa0, 0x1b, 0x06, 0xf5,
+	0xbc, 0x2d, 0xa7, 0xe9, 0xfb, 0x65, 0x6f, 0xf2, 0x50, 0x61, 0x39, 0x68, 0x7d, 0x7a, 0x54, 0xf9,
+	0x72, 0x5a, 0xb1, 0xc8, 0xef, 0x0f, 0x93, 0xf7, 0xbc, 0x43, 0x01, 0x8c, 0x40, 0x92, 0xdf, 0x00,
+	0x90, 0x37, 0xbf, 0x83, 0x3b, 0x8a, 0xcf, 0xc8, 0xe8, 0xd7, 0xfc, 0x9b, 0xd5, 0xb5, 0x5f, 0xeb,
+	0xeb, 0x36, 0xe3, 0xab, 0x42, 0xdc, 0xdb, 0x7d, 0x10, 0xa0, 0x60, 0x04, 0xb1, 0xfa, 0x0f, 0x19,
+	0x28, 0xf8, 0xfe, 0xe2, 0xe7, 0x50, 0xb3, 0x69, 0xc7, 0x6a, 0x36, 0xa3, 0x7f, 0x80, 0xe2, 0x77,
+	0x79, 0x68, 0x95, 0xc6, 0x49, 0x54, 0x69, 0xd6, 0xc7, 0x57, 0x75, 0x72, 0x5d, 0xe6, 0x07, 0x19,
+	0xb8, 0xe4, 0xb3, 0xaa, 0xbb, 0xc9, 0x5f, 0x85, 0x69, 0x97, 0xea, 0xcd, 0xba, 0xce, 0x8c, 0x7d,
+	0x31, 0x7d, 0xf2, 0x66, 0xf2, 0xdc, 0xf1, 0x51, 0x65, 0x1a, 0xa3, 0x04, 0x8c, 0xf3, 0xa5, 0x5d,
+	0x6a, 0xce, 0x8c, 0x79, 0xa9, 0x39, 0x7b, 0x96, 0x4b, 0xcd, 0x44, 0x87, 0x12, 0xef, 0xd1, 0x8e,
+	0xd9, 0xa5, 0x4e, 0x9f, 0x29, 0xdf, 0xe6, 0xac, 0x77, 0x6e, 0xc5, 0xd9, 0x8b, 0x21, 0x0c, 0x46,
+	0x31, 0xab, 0xff, 0xac, 0xc1, 0x54, 0x38, 0x5e, 0x17, 0x5e, 0xb9, 0x6a, 0xc5, 0x2b, 0x57, 0xcb,
+	0x63, 0x2f, 0x87, 0x21, 0xb5, 0xaa, 0xef, 0xe7, 0xc3, 0xd7, 0x12, 0xd5, 0xa9, 0x3d, 0x98, 0x37,
+	0x53, 0x2b, 0x36, 0x11, 0x6b, 0x13, 0x5c, 0x43, 0xdb, 0x18, 0xca, 0x89, 0x27, 0xa0, 0x90, 0x3e,
+	0x14, 0x0e, 0xa8, 0xcb, 0x4c, 0x83, 0xfa, 0xef, 0xb7, 0x7e, 0x4e, 0x5f, 0x39, 0x86, 0x63, 0xfa,
+	0x40, 0x29, 0xc0, 0x40, 0x15, 0xd9, 0x83, 0x3c, 0x6d, 0xb6, 0xa9, 0x7f, 0xed, 0xfc, 0x8d, 0xb1,
+	0xae, 0xfc, 0x87, 0xe3, 0xc9, 0x9f, 0x3c, 0x94, 0xd0, 0xc4, 0x83, 0xa2, 0xe5, 0x47, 0xd8, 0x6a,
+	0x1d, 0xd6, 0x47, 0xd6, 0x13, 0xc4, 0xea, 0xe1, 0x35, 0xd0, 0xa0, 0x09, 0x43, 0x3d, 0xa4, 0x13,
+	0x7c, 0xcc, 0x90, 0x3f, 0x27, 0xe3, 0x71, 0xc2, 0xa7, 0x72, 0x1e, 0x14, 0x1f, 0xeb, 0x8c, 0xba,
+	0x5d, 0xdd, 0xed, 0x28, 0x1f, 0x78, 0xf4, 0x37, 0x7c, 0xe8, 0x23, 0x85, 0x6f, 0x18, 0x34, 0x61,
+	0xa8, 0xa7, 0xfa, 0xc3, 0x88, 0xb5, 0xfa, 0xbc, 0x4b, 0x87, 0xaf, 0xc7, 0x4b, 0x87, 0x0b, 0xc9,
+	0xd2, 0x61, 0x22, 0x7f, 0x71, 0xf6, 0xe2, 0xa1, 0x0e, 0x25, 0x4b, 0xf7, 0xd8, 0x6e, 0xaf, 0xa9,
+	0x33, 0x95, 0xc4, 0x2b, 0x2d, 0xfd, 0xdc, 0xe9, 0x8c, 0x09, 0x37, 0x4f, 0xa1, 0x8b, 0xbb, 0x19,
+	0xc2, 0x60, 0x14, 0xb3, 0xfa, 0x1f, 0x1a, 0xcc, 0x0d, 0x94, 0x8b, 0xc9, 0x3e, 0x4c, 0xd8, 0xc2,
+	0x29, 0x1f, 0xfb, 0x1b, 0xbc, 0x88, 0x6f, 0x2f, 0x17, 0x8d, 0x6a, 0x50, 0xf8, 0xc4, 0x86, 0x02,
+	0x7d, 0xc2, 0xa8, 0x6b, 0xeb, 0x96, 0x3a, 0x4b, 0xcf, 0xe7, 0x7b, 0x3f, 0xe1, 0x82, 0xdd, 0x56,
+	0xc8, 0x18, 0xe8, 0xa8, 0xfe, 0x34, 0x03, 0xa5, 0x08, 0xdf, 0xb3, 0x12, 0xbc, 0xe2, 0x1a, 0xa2,
+	0x8c, 0x4e, 0x77, 0x5d, 0x4b, 0x4d, 0x74, 0xe4, 0x1a, 0xa2, 0x22, 0xe1, 0x26, 0x46, 0xf9, 0xc8,
+	0x12, 0x40, 0x57, 0xf7, 0x18, 0x75, 0x85, 0x6d, 0x4c, 0x5c, 0xfe, 0xdb, 0x0a, 0x28, 0x18, 0xe1,
+	0x22, 0x37, 0x54, 0xc6, 0x24, 0x17, 0xff, 0x78, 0x66, 0x48, 0x3a, 0x24, 0x7f, 0x0e, 0xe9, 0x10,
+	0xd2, 0x86, 0x59, 0xbf, 0xd7, 0x3e, 0x55, 0x6d, 0xdc, 0x53, 0x02, 0x4b, 0xef, 0x32, 0x01, 0x81,
+	0x03, 0xa0, 0xd5, 0xbf, 0xd6, 0x60, 0x3a, 0xe6, 0x22, 0x93, 0x97, 0xa3, 0x77, 0x1d, 0x22, 0x89,
+	0xd5, 0xd8, 0x1d, 0x85, 0x57, 0x61, 0x42, 0x0e, 0x90, 0x1a, 0xf8, 0x60, 0x23, 0xca, 0x21, 0x44,
+	0x45, 0xe5, 0x5b, 0x4a, 0x65, 0x5f, 0x92, 0x5b, 0x4a, 0xa5, 0x67, 0xd0, 0xa7, 0x93, 0x2f, 0x71,
+	0xa7, 0x5f, 0xf6, 0x4e, 0x8d, 0x74, 0x70, 0x30, 0xf8, 0xef, 0x81, 0x01, 0x47, 0xf5, 0x7b, 0x39,
+	0x90, 0x5f, 0xea, 0x72, 0xb9, 0xa6, 0xe9, 0xc9, 0x64, 0xba, 0x26, 0x92, 0xe9, 0x81, 0xdc, 0xaa,
+	0x6a, 0xc7, 0x80, 0x83, 0x5c, 0x83, 0x6c, 0xd7, 0xb4, 0x55, 0x9e, 0x48, 0xa4, 0x64, 0xb7, 0x4c,
+	0x1b, 0x79, 0x9b, 0x20, 0xe9, 0x4f, 0xd4, 0xad, 0x5b, 0x49, 0xd2, 0x9f, 0x20, 0x6f, 0xe3, 0xde,
+	0x92, 0xe5, 0x38, 0x9d, 0x3d, 0xdd, 0xe8, 0xf8, 0xe9, 0xd6, 0x9c, 0xf0, 0x76, 0x84, 0xb7, 0xb4,
+	0x19, 0x27, 0x61, 0x92, 0x97, 0x8b, 0x1b, 0x8e, 0x63, 0x35, 0x9d, 0xc7, 0xb6, 0x2f, 0x9e, 0x0f,
+	0xc5, 0x57, 0xe2, 0x24, 0x4c, 0xf2, 0x92, 0x5d, 0xf8, 0xc2, 0x87, 0xd4, 0x75, 0xd4, 0x88, 0x35,
+	0x2c, 0x4a, 0x7b, 0x3e, 0xcc, 0x84, 0x80, 0xf9, 0xe2, 0xf1, 0x51, 0xe5, 0x0b, 0xef, 0xa5, 0xb3,
+	0xe0, 0x30, 0x59, 0x0e, 0xcb, 0x74, 0xb7, 0x4d, 0xd9, 0xb6, 0xeb, 0xf0, 0x60, 0xc0, 0xb4, 0xdb,
+	0x3e, 0xec, 0x64, 0x08, 0xbb, 0x93, 0xce, 0x82, 0xc3, 0x64, 0xc9, 0x0a, 0xcc, 0x49, 0x52, 0xc4,
+	0x09, 0x14, 0xf7, 0x3f, 0xa7, 0xe5, 0x25, 0x81, 0x9d, 0x24, 0x11, 0x07, 0xf9, 0xb9, 0x7f, 0xe9,
+	0x67, 0xed, 0xb6, 0xa9, 0x2b, 0x26, 0x5a, 0x5c, 0xf5, 0x54, 0xfe, 0x25, 0x26, 0x68, 0x38, 0xc0,
+	0x2d, 0x3e, 0x78, 0x14, 0xc5, 0x92, 0x87, 0x90, 0xb5, 0x9c, 0xb6, 0x32, 0x97, 0xa3, 0xa7, 0xf0,
+	0x37, 0x9d, 0xb6, 0x5c, 0x14, 0x9b, 0x4e, 0x1b, 0x39, 0x22, 0x31, 0x20, 0xdf, 0xd1, 0x5b, 0x1d,
+	0x5d, 0x59, 0xc7, 0xd1, 0x4f, 0xd4, 0xa0, 0xb0, 0xa3, 0xbe, 0xe2, 0xe3, 0x8f, 0x28, 0xb1, 0x89,
+	0x01, 0x13, 0xfd, 0xa6, 0xf8, 0x67, 0x90, 0x71, 0xff, 0x7c, 0x64, 0x77, 0x55, 0xa8, 0x10, 0xa6,
+	0x5e, 0xfe, 0x46, 0x05, 0x5d, 0xfd, 0xc7, 0x0c, 0xa8, 0xff, 0x23, 0x21, 0x7d, 0x28, 0xb6, 0xfd,
+	0xaf, 0xe6, 0xd4, 0x98, 0xdd, 0x19, 0xe3, 0xa2, 0x76, 0xec, 0xfb, 0x3b, 0x59, 0xab, 0x0c, 0x1a,
+	0x31, 0xd4, 0x44, 0x68, 0x7c, 0x2c, 0x57, 0xc7, 0x1c, 0x4b, 0xa9, 0x6e, 0x70, 0x34, 0x75, 0xc8,
+	0xed, 0x33, 0xd6, 0x53, 0x63, 0x39, 0xfa, 0x07, 0xa4, 0xe1, 0x85, 0x49, 0x99, 0x19, 0xe7, 0xcf,
+	0x28, 0xa0, 0xab, 0x5d, 0x50, 0xce, 0x08, 0x31, 0x62, 0xdf, 0xca, 0xca, 0x8a, 0xc7, 0xe2, 0xe9,
+	0x5c, 0x84, 0xe0, 0x3b, 0xcf, 0xc8, 0x27, 0x34, 0xa9, 0x1f, 0xc5, 0x56, 0xff, 0x35, 0x03, 0xd9,
+	0x9d, 0xcd, 0x86, 0xbc, 0x11, 0x2e, 0xd2, 0x57, 0xb4, 0xd1, 0x31, 0x7b, 0x0f, 0xa8, 0x6b, 0xb6,
+	0x0e, 0x95, 0x3d, 0x8c, 0xdc, 0x08, 0x4f, 0x72, 0x60, 0x8a, 0x14, 0x79, 0x1f, 0xa6, 0x0c, 0x7d,
+	0x85, 0xba, 0x4c, 0x1e, 0x2b, 0x67, 0x4b, 0xf0, 0x8b, 0xfa, 0xf2, 0xca, 0x72, 0x28, 0x8e, 0x31,
+	0x30, 0xb2, 0x0b, 0x60, 0x84, 0xd0, 0xd9, 0xb3, 0x40, 0xcb, 0x8f, 0x83, 0x43, 0xe0, 0x08, 0x10,
+	0x41, 0x28, 0x76, 0x38, 0xab, 0x40, 0xcd, 0x9d, 0x05, 0x55, 0x2c, 0xca, 0x7b, 0xbe, 0x2c, 0x86,
+	0x30, 0xd5, 0x1f, 0x6b, 0x90, 0xdd, 0x5d, 0x5d, 0x23, 0x0e, 0x14, 0x83, 0x6b, 0x4c, 0x6a, 0x4f,
+	0xd4, 0xc7, 0xcf, 0x6d, 0x4b, 0xc5, 0xc1, 0x23, 0x86, 0x3a, 0xc8, 0x3e, 0x4c, 0xee, 0xf5, 0x4d,
+	0x8b, 0x99, 0xb6, 0x48, 0xfe, 0x8d, 0x13, 0x4b, 0xfa, 0x9f, 0xdb, 0xaa, 0x2a, 0xaa, 0x44, 0x45,
+	0x1f, 0xbe, 0xfa, 0x4d, 0x50, 0xb6, 0x80, 0xc7, 0x08, 0x17, 0xf1, 0x92, 0x41, 0x8c, 0x90, 0xf6,
+	0xa2, 0xd5, 0xbf, 0xcf, 0xc0, 0x84, 0xfa, 0x1f, 0xa6, 0x8b, 0x4f, 0x0c, 0xd1, 0x58, 0x62, 0x68,
+	0x65, 0xcc, 0x7f, 0x26, 0x19, 0x9a, 0x16, 0xea, 0x26, 0xd2, 0x42, 0xe3, 0xfe, 0x05, 0xca, 0x33,
+	0x92, 0x42, 0xff, 0xa4, 0xc1, 0x25, 0xc9, 0xb8, 0x61, 0x7b, 0x4c, 0xb7, 0x0d, 0xf1, 0x87, 0x55,
+	0x07, 0xa2, 0x65, 0xec, 0x30, 0x4b, 0x45, 0xe8, 0xe2, 0xcc, 0x90, 0xbf, 0x51, 0x41, 0x73, 0xb7,
+	0x6b, 0xdf, 0xf1, 0x98, 0xf8, 0xaa, 0x3c, 0x13, 0x77, 0xd7, 0xee, 0xa8, 0x76, 0x0c, 0x38, 0x92,
+	0x7e, 0x60, 0x7e, 0xb8, 0x1f, 0x58, 0xfd, 0x0b, 0x0d, 0xa6, 0xa2, 0x7f, 0xfe, 0x32, 0x7a, 0x8e,
+	0x2b, 0x91, 0x62, 0xca, 0x5c, 0x40, 0x8a, 0xe9, 0x13, 0x0d, 0xc0, 0xef, 0xec, 0x85, 0x27, 0x98,
+	0x9a, 0xf1, 0x04, 0xd3, 0xd8, 0xd3, 0x9a, 0x9e, 0x5e, 0xfa, 0x9b, 0x9c, 0xff, 0x4a, 0x22, 0xb9,
+	0xf4, 0x91, 0x06, 0x97, 0xf4, 0x58, 0xc2, 0x46, 0xbd, 0xd9, 0xb9, 0xe5, 0x7f, 0xae, 0xaa, 0x6e,
+	0x24, 0xfe, 0x99, 0x0d, 0x13, 0x6a, 0xc9, 0x2d, 0x98, 0xea, 0xa9, 0xb0, 0xfd, 0x7e, 0xb8, 0xea,
+	0x82, 0x22, 0xd4, 0x76, 0x84, 0x86, 0x31, 0xce, 0x67, 0x24, 0xc8, 0xb2, 0xe7, 0x92, 0x20, 0x8b,
+	0x56, 0xa1, 0x73, 0x27, 0x56, 0xa1, 0x6d, 0x28, 0xb6, 0x5c, 0xa7, 0x2b, 0x72, 0x50, 0xea, 0x1f,
+	0x5b, 0xc6, 0xcc, 0x6b, 0x05, 0x46, 0x76, 0xcd, 0xc7, 0xc5, 0x50, 0x05, 0x3f, 0x4d, 0x98, 0x23,
+	0xb5, 0x4d, 0x9c, 0x87, 0xb6, 0x60, 0xeb, 0xee, 0x48, 0x54, 0xf4, 0xe1, 0xab, 0xff, 0x92, 0xf1,
+	0xb7, 0x6e, 0x23, 0x71, 0x85, 0x5b, 0x1b, 0x72, 0x85, 0x5b, 0x7d, 0x85, 0x13, 0xcd, 0xc2, 0xbc,
+	0x0a, 0x13, 0x2e, 0xd5, 0x3d, 0xc7, 0x56, 0xdf, 0xb3, 0x05, 0x86, 0x0f, 0x45, 0x2b, 0x2a, 0x6a,
+	0x34, 0x5b, 0x93, 0x79, 0x46, 0xb6, 0xe6, 0x4b, 0x91, 0xb9, 0x91, 0x59, 0xea, 0x60, 0x9b, 0xa5,
+	0xcc, 0x8f, 0x08, 0x44, 0x55, 0x01, 0x35, 0x9f, 0x0c, 0x44, 0x55, 0x91, 0x33, 0xe0, 0x20, 0x4d,
+	0x98, 0xb2, 0x74, 0x8f, 0x89, 0xa0, 0xa3, 0xb9, 0xcc, 0x46, 0x48, 0x05, 0x05, 0x2b, 0x78, 0x33,
+	0x82, 0x83, 0x31, 0xd4, 0xea, 0x77, 0x34, 0x08, 0xb3, 0x6c, 0x67, 0x0c, 0x79, 0xdf, 0x81, 0x42,
+	0x57, 0x7f, 0xb2, 0x4a, 0x2d, 0xfd, 0x70, 0x9c, 0xbf, 0xb6, 0xd8, 0x52, 0x18, 0x18, 0xa0, 0xd5,
+	0x6b, 0x1f, 0x7f, 0xb6, 0xf0, 0xc2, 0x27, 0x9f, 0x2d, 0xbc, 0xf0, 0xe9, 0x67, 0x0b, 0x2f, 0xfc,
+	0xce, 0xf1, 0x82, 0xf6, 0xf1, 0xf1, 0x82, 0xf6, 0xc9, 0xf1, 0x82, 0xf6, 0xe9, 0xf1, 0x82, 0xf6,
+	0xe3, 0xe3, 0x05, 0xed, 0xdb, 0xff, 0xb6, 0xf0, 0xc2, 0x7b, 0x05, 0x7f, 0xf9, 0xfc, 0x6f, 0x00,
+	0x00, 0x00, 0xff, 0xff, 0x02, 0x47, 0xe0, 0x39, 0x29, 0x53, 0x00, 0x00,
 }
 
 func (m *AbstractVertex) Marshal() (dAtA []byte, err error) {
@@ -3742,9 +3742,11 @@ func (m *Lifecycle) MarshalToSizedBuffer(dAtA []byte) (int, error) {
 	i = encodeVarintGenerated(dAtA, i, uint64(len(m.DesiredPhase)))
 	i--
 	dAtA[i] = 0x12
-	i = encodeVarintGenerated(dAtA, i, uint64(m.DeleteGracePeriodSeconds))
-	i--
-	dAtA[i] = 0x8
+	if m.DeleteGracePeriodSeconds != nil {
+		i = encodeVarintGenerated(dAtA, i, uint64(*m.DeleteGracePeriodSeconds))
+		i--
+		dAtA[i] = 0x8
+	}
 	return len(dAtA) - i, nil
 }
 
@@ -6001,7 +6003,9 @@ func (m *Lifecycle) Size() (n int) {
 	}
 	var l int
 	_ = l
-	n += 1 + sovGenerated(uint64(m.DeleteGracePeriodSeconds))
+	if m.DeleteGracePeriodSeconds != nil {
+		n += 1 + sovGenerated(uint64(*m.DeleteGracePeriodSeconds))
+	}
 	l = len(m.DesiredPhase)
 	n += 1 + l + sovGenerated(uint64(l))
 	return n
@@ -7088,7 +7092,7 @@ func (this *Lifecycle) String() string {
 		return "nil"
 	}
 	s := strings.Join([]string{`&Lifecycle{`,
-		`DeleteGracePeriodSeconds:` + fmt.Sprintf("%v", this.DeleteGracePeriodSeconds) + `,`,
+		`DeleteGracePeriodSeconds:` + valueToStringGenerated(this.DeleteGracePeriodSeconds) + `,`,
 		`DesiredPhase:` + fmt.Sprintf("%v", this.DesiredPhase) + `,`,
 		`}`,
 	}, "")
@@ -13703,7 +13707,7 @@ func (m *Lifecycle) Unmarshal(dAtA []byte) error {
 			if wireType != 0 {
 				return fmt.Errorf("proto: wrong wireType = %d for field DeleteGracePeriodSeconds", wireType)
 			}
-			m.DeleteGracePeriodSeconds = 0
+			var v int32
 			for shift := uint(0); ; shift += 7 {
 				if shift >= 64 {
 					return ErrIntOverflowGenerated
@@ -13713,11 +13717,12 @@ func (m *Lifecycle) Unmarshal(dAtA []byte) error {
 				}
 				b := dAtA[iNdEx]
 				iNdEx++
-				m.DeleteGracePeriodSeconds |= int32(b&0x7F) << shift
+				v |= int32(b&0x7F) << shift
 				if b < 0x80 {
 					break
 				}
 			}
+			m.DeleteGracePeriodSeconds = &v
 		case 2:
 			if wireType != 2 {
 				return fmt.Errorf("proto: wrong wireType = %d for field DesiredPhase", wireType)
diff --git a/pkg/apis/numaflow/v1alpha1/generated.proto b/pkg/apis/numaflow/v1alpha1/generated.proto
index 8a39b026..cf4629a9 100644
--- a/pkg/apis/numaflow/v1alpha1/generated.proto
+++ b/pkg/apis/numaflow/v1alpha1/generated.proto
@@ -681,7 +681,7 @@ message PipelineLimits {
   // BufferMaxLength is used to define the max length of a buffer
   // Only applies to UDF and Source vertice as only they do buffer write.
   // It can be overridden by the settings in vertex limits.
-  // +kubebuilder:default=30000
+  // +kubebuilder:default=50000
   // +optional
   optional uint64 bufferMaxLength = 2;
 
diff --git a/pkg/apis/numaflow/v1alpha1/pipeline_types.go b/pkg/apis/numaflow/v1alpha1/pipeline_types.go
index 7f495b22..c858ccf8 100644
--- a/pkg/apis/numaflow/v1alpha1/pipeline_types.go
+++ b/pkg/apis/numaflow/v1alpha1/pipeline_types.go
@@ -22,6 +22,7 @@ import (
 	"fmt"
 	"os"
 	"strings"
+	"time"
 
 	appv1 "k8s.io/api/apps/v1"
 	corev1 "k8s.io/api/core/v1"
@@ -259,18 +260,61 @@ func (p Pipeline) GetDaemonServiceObj() *corev1.Service {
 	}
 }
 
+// GetPipelineLimits returns the pipeline limits with default values
+func (p Pipeline) GetPipelineLimits() PipelineLimits {
+	defaultReadBatchSize := uint64(DefaultReadBatchSize)
+	defaultBufferMaxLength := uint64(DefaultBufferLength)
+	defaultBufferUsageLimit := uint32(100 * DefaultBufferUsageLimit)
+	defaultReadTimeout := time.Second
+	limits := PipelineLimits{
+		ReadBatchSize:    &defaultReadBatchSize,
+		BufferMaxLength:  &defaultBufferMaxLength,
+		BufferUsageLimit: &defaultBufferUsageLimit,
+		ReadTimeout:      &metav1.Duration{Duration: defaultReadTimeout},
+	}
+	if x := p.Spec.Limits; x != nil {
+		if x.ReadBatchSize != nil {
+			limits.ReadBatchSize = x.ReadBatchSize
+		}
+		if x.BufferMaxLength != nil {
+			limits.BufferMaxLength = x.BufferMaxLength
+		}
+		if x.BufferUsageLimit != nil {
+			limits.BufferUsageLimit = x.BufferUsageLimit
+		}
+		if x.ReadTimeout != nil {
+			limits.ReadTimeout = x.ReadTimeout
+		}
+	}
+	return limits
+}
+
 type Lifecycle struct {
 	// DeleteGracePeriodSeconds used to delete pipeline gracefully
 	// +kubebuilder:default=30
 	// +optional
-	DeleteGracePeriodSeconds int32 `json:"deleteGracePeriodSeconds,omitempty" protobuf:"varint,1,opt,name=deleteGracePeriodSeconds"`
-
+	DeleteGracePeriodSeconds *int32 `json:"deleteGracePeriodSeconds,omitempty" protobuf:"varint,1,opt,name=deleteGracePeriodSeconds"`
 	// DesiredPhase used to bring the pipeline from current phase to desired phase
 	// +kubebuilder:default=Running
 	// +optional
 	DesiredPhase PipelinePhase `json:"desiredPhase,omitempty" protobuf:"bytes,2,opt,name=desiredPhase"`
 }
 
+// GetDeleteGracePeriodSeconds returns the value DeleteGracePeriodSeconds.
+func (lc Lifecycle) GetDeleteGracePeriodSeconds() int32 {
+	if lc.DeleteGracePeriodSeconds != nil {
+		return *lc.DeleteGracePeriodSeconds
+	}
+	return 30
+}
+
+func (lc Lifecycle) GetDesiredPhase() PipelinePhase {
+	if string(lc.DesiredPhase) != "" {
+		return lc.DesiredPhase
+	}
+	return PipelinePhaseRunning
+}
+
 type PipelineSpec struct {
 	// +optional
 	InterStepBufferServiceName string `json:"interStepBufferServiceName,omitempty" protobuf:"bytes,1,opt,name=interStepBufferServiceName"`
@@ -306,6 +350,14 @@ type Watermark struct {
 	MaxDelay *metav1.Duration `json:"maxDelay,omitempty" protobuf:"bytes,2,opt,name=maxDelay"`
 }
 
+// GetMaxDelay returns the configured max delay with a default value
+func (wm Watermark) GetMaxDelay() time.Duration {
+	if wm.MaxDelay != nil {
+		return wm.MaxDelay.Duration
+	}
+	return time.Duration(0)
+}
+
 type PipelineLimits struct {
 	// Read batch size for all the vertices in the pipeline, can be overridden by the vertex's limit settings
 	// +kubebuilder:default=500
@@ -314,7 +366,7 @@ type PipelineLimits struct {
 	// BufferMaxLength is used to define the max length of a buffer
 	// Only applies to UDF and Source vertice as only they do buffer write.
 	// It can be overridden by the settings in vertex limits.
-	// +kubebuilder:default=30000
+	// +kubebuilder:default=50000
 	// +optional
 	BufferMaxLength *uint64 `json:"bufferMaxLength,omitempty" protobuf:"varint,2,opt,name=bufferMaxLength"`
 	// BufferUsageLimit is used to define the pencentage of the buffer usage limit, a valid value should be less than 100, for example, 85.
diff --git a/pkg/apis/numaflow/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/numaflow/v1alpha1/zz_generated.deepcopy.go
index 5dd386f3..9dc6571e 100644
--- a/pkg/apis/numaflow/v1alpha1/zz_generated.deepcopy.go
+++ b/pkg/apis/numaflow/v1alpha1/zz_generated.deepcopy.go
@@ -815,6 +815,11 @@ func (in *KafkaSource) DeepCopy() *KafkaSource {
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *Lifecycle) DeepCopyInto(out *Lifecycle) {
 	*out = *in
+	if in.DeleteGracePeriodSeconds != nil {
+		in, out := &in.DeleteGracePeriodSeconds, &out.DeleteGracePeriodSeconds
+		*out = new(int32)
+		**out = **in
+	}
 	return
 }
 
@@ -1130,7 +1135,7 @@ func (in *PipelineSpec) DeepCopyInto(out *PipelineSpec) {
 			(*in)[i].DeepCopyInto(&(*out)[i])
 		}
 	}
-	out.Lifecycle = in.Lifecycle
+	in.Lifecycle.DeepCopyInto(&out.Lifecycle)
 	if in.Limits != nil {
 		in, out := &in.Limits, &out.Limits
 		*out = new(PipelineLimits)
diff --git a/pkg/daemon/server/service/pipeline_metrics_query.go b/pkg/daemon/server/service/pipeline_metrics_query.go
index 5858bea3..9c157a30 100644
--- a/pkg/daemon/server/service/pipeline_metrics_query.go
+++ b/pkg/daemon/server/service/pipeline_metrics_query.go
@@ -196,16 +196,9 @@ func (ps *pipelineMetadataQuery) GetVertexMetrics(ctx context.Context, req *daem
 }
 
 func getBufferLimits(pl *v1alpha1.Pipeline, edge v1alpha1.Edge) (bufferLength int64, bufferUsageLimit float64) {
-	bufferLength = int64(v1alpha1.DefaultBufferLength)
-	bufferUsageLimit = v1alpha1.DefaultBufferUsageLimit
-	if x := pl.Spec.Limits; x != nil {
-		if x.BufferMaxLength != nil {
-			bufferLength = int64(*x.BufferMaxLength)
-		}
-		if x.BufferUsageLimit != nil {
-			bufferUsageLimit = float64(*x.BufferUsageLimit) / 100
-		}
-	}
+	plLimits := pl.GetPipelineLimits()
+	bufferLength = int64(*plLimits.BufferMaxLength)
+	bufferUsageLimit = float64(*plLimits.BufferUsageLimit) / 100
 	if x := edge.Limits; x != nil {
 		if x.BufferMaxLength != nil {
 			bufferLength = int64(*x.BufferMaxLength)
diff --git a/pkg/isb/forward/forward.go b/pkg/isb/forward/forward.go
index db87a04a..0e173f1f 100644
--- a/pkg/isb/forward/forward.go
+++ b/pkg/isb/forward/forward.go
@@ -54,8 +54,8 @@ func NewInterStepDataForward(vertex *dfv1.Vertex,
 
 	options := &options{
 		retryInterval:  time.Millisecond,
-		readBatchSize:  1,
-		udfConcurrency: 1,
+		readBatchSize:  dfv1.DefaultReadBatchSize,
+		udfConcurrency: dfv1.DefaultReadBatchSize,
 		logger:         logging.NewLogger(),
 	}
 	for _, o := range opts {
diff --git a/pkg/reconciler/isbsvc/validate.go b/pkg/reconciler/isbsvc/validate.go
index ef891503..d420e922 100644
--- a/pkg/reconciler/isbsvc/validate.go
+++ b/pkg/reconciler/isbsvc/validate.go
@@ -8,25 +8,28 @@ import (
 
 // ValidateInterStepBufferService accepts an isbs and performs validation against it
 func ValidateInterStepBufferService(isbs *dfv1.InterStepBufferService) error {
+	if isbs.Spec.Redis != nil && isbs.Spec.JetStream != nil {
+		return fmt.Errorf(`invalid spec: "spec.redis" and "spec.jetstream" can not be defined together`)
+	}
 	if isbs.Spec.Redis == nil && isbs.Spec.JetStream == nil {
-		return fmt.Errorf("invalid spec: either \"spec.redis\" or \"spec.jetstream\" needs to be specified")
+		return fmt.Errorf(`invalid spec: either "spec.redis" or "spec.jetstream" needs to be specified`)
 	}
 	if isbs.Spec.Redis != nil {
 		if isbs.Spec.Redis.Native != nil && isbs.Spec.Redis.External != nil {
-			return fmt.Errorf("\"native\" and \"external\" can not be defined together")
+			return fmt.Errorf(`"native" and "external" can not be defined together`)
 		}
 		if isbs.Spec.Redis.Native == nil && isbs.Spec.Redis.External == nil {
-			return fmt.Errorf("either \"native\" or \"external\" must be defined")
+			return fmt.Errorf(`either "native" or "external" must be defined`)
 		}
 		if native := isbs.Spec.Redis.Native; native != nil {
 			if native.Version == "" {
-				return fmt.Errorf("invalid spec: \"spec.redis.native.version\" is not defined")
+				return fmt.Errorf(`invalid spec: "spec.redis.native.version" is not defined`)
 			}
 		}
 	}
 	if x := isbs.Spec.JetStream; x != nil {
 		if x.Version == "" {
-			return fmt.Errorf("invalid spec: \"spec.jetstream.version\" is not defined")
+			return fmt.Errorf(`invalid spec: "spec.jetstream.version" is not defined`)
 		}
 	}
 	return nil
diff --git a/pkg/reconciler/pipeline/controller.go b/pkg/reconciler/pipeline/controller.go
index 25ab6ab1..f8afc0d5 100644
--- a/pkg/reconciler/pipeline/controller.go
+++ b/pkg/reconciler/pipeline/controller.go
@@ -83,7 +83,7 @@ func (r *pipelineReconciler) reconcile(ctx context.Context, pl *dfv1.Pipeline) (
 	if !pl.DeletionTimestamp.IsZero() {
 		log.Info("Deleting pipeline")
 		if controllerutil.ContainsFinalizer(pl, finalizerName) {
-			if time.Now().Before(pl.DeletionTimestamp.Add(time.Duration(pl.Spec.Lifecycle.DeleteGracePeriodSeconds) * time.Second)) {
+			if time.Now().Before(pl.DeletionTimestamp.Add(time.Duration(pl.Spec.Lifecycle.GetDeleteGracePeriodSeconds()) * time.Second)) {
 				safeToDelete, err := r.safeToDelete(ctx, pl)
 				if err != nil {
 					log.Errorw("Failed to check if it's safe to delete the pipeline", zap.Error(err))
@@ -112,7 +112,7 @@ func (r *pipelineReconciler) reconcile(ctx context.Context, pl *dfv1.Pipeline) (
 		return r.reconcileNonLifecycleChanges(ctx, pl)
 	}
 
-	if oldPhase := pl.Status.Phase; oldPhase != pl.Spec.Lifecycle.DesiredPhase {
+	if oldPhase := pl.Status.Phase; oldPhase != pl.Spec.Lifecycle.GetDesiredPhase() {
 		requeue, err := r.updateDesiredState(ctx, pl)
 		if err != nil {
 			log.Errorw("Updated desired pipeline phase failed", zap.Error(err))
@@ -261,7 +261,7 @@ func (r *pipelineReconciler) reconcileNonLifecycleChanges(ctx context.Context, p
 	}
 
 	pl.Status.MarkDeployed()
-	pl.Status.SetPhase(pl.Spec.Lifecycle.DesiredPhase, "")
+	pl.Status.SetPhase(pl.Spec.Lifecycle.GetDesiredPhase(), "")
 	return ctrl.Result{}, nil
 }
 
@@ -456,34 +456,30 @@ func buildVertices(pl *dfv1.Pipeline) map[string]dfv1.Vertex {
 }
 
 func copyVertexLimits(pl *dfv1.Pipeline, v *dfv1.AbstractVertex) {
-	if pl.Spec.Limits == nil {
-		return
-	}
+	plLimits := pl.GetPipelineLimits()
 	if v.Limits == nil {
 		v.Limits = &dfv1.VertexLimits{}
 	}
 	if v.Limits.ReadBatchSize == nil {
-		v.Limits.ReadBatchSize = pl.Spec.Limits.ReadBatchSize
+		v.Limits.ReadBatchSize = plLimits.ReadBatchSize
 	}
 	if v.Limits.ReadTimeout == nil {
-		v.Limits.ReadTimeout = pl.Spec.Limits.ReadTimeout
+		v.Limits.ReadTimeout = plLimits.ReadTimeout
 	}
 }
 
 func copyEdgeLimits(pl *dfv1.Pipeline, edges []dfv1.Edge) []dfv1.Edge {
-	if pl.Spec.Limits == nil {
-		return edges
-	}
+	plLimits := pl.GetPipelineLimits()
 	result := []dfv1.Edge{}
 	for _, e := range edges {
 		if e.Limits == nil {
 			e.Limits = &dfv1.EdgeLimits{}
 		}
 		if e.Limits.BufferMaxLength == nil {
-			e.Limits.BufferMaxLength = pl.Spec.Limits.BufferMaxLength
+			e.Limits.BufferMaxLength = plLimits.BufferMaxLength
 		}
 		if e.Limits.BufferUsageLimit == nil {
-			e.Limits.BufferUsageLimit = pl.Spec.Limits.BufferUsageLimit
+			e.Limits.BufferUsageLimit = plLimits.BufferUsageLimit
 		}
 		result = append(result, e)
 	}
@@ -535,7 +531,7 @@ var allVertexFilter vertexFilterFunc = func(v dfv1.Vertex) bool { return true }
 var sourceVertexFilter vertexFilterFunc = func(v dfv1.Vertex) bool { return v.IsASource() }
 
 func (r *pipelineReconciler) updateDesiredState(ctx context.Context, pl *dfv1.Pipeline) (bool, error) {
-	switch pl.Spec.Lifecycle.DesiredPhase {
+	switch pl.Spec.Lifecycle.GetDesiredPhase() {
 	case dfv1.PipelinePhasePaused:
 		return r.pausePipeline(ctx, pl)
 	case dfv1.PipelinePhaseRunning, dfv1.PipelinePhaseUnknown:
diff --git a/pkg/reconciler/vertex/controller.go b/pkg/reconciler/vertex/controller.go
index 933e5694..716e0ec3 100644
--- a/pkg/reconciler/vertex/controller.go
+++ b/pkg/reconciler/vertex/controller.go
@@ -285,10 +285,7 @@ func (r *vertexReconciler) buildPodSpec(vertex *dfv1.Vertex, pl *dfv1.Pipeline,
 		Value: fmt.Sprintf("%t", pl.Spec.Watermark.Disabled),
 	})
 
-	maxDelay := "0s"
-	if x := pl.Spec.Watermark.MaxDelay; x != nil {
-		maxDelay = x.Duration.String()
-	}
+	maxDelay := pl.Spec.Watermark.GetMaxDelay().String()
 	podSpec.Containers[0].Env = append(podSpec.Containers[0].Env, corev1.EnvVar{
 		Name:  dfv1.EnvWatermarkMaxDelay,
 		Value: maxDelay,
diff --git a/pkg/reconciler/vertex/scaling/scaling.go b/pkg/reconciler/vertex/scaling/scaling.go
index addbc80d..3ba1830b 100644
--- a/pkg/reconciler/vertex/scaling/scaling.go
+++ b/pkg/reconciler/vertex/scaling/scaling.go
@@ -169,7 +169,7 @@ func (s *Scaler) scaleOneVertex(ctx context.Context, key string, worker int) err
 		log.Debug("Corresponding Pipeline being deleted")
 		return nil
 	}
-	if pl.Spec.Lifecycle.DesiredPhase != dfv1.PipelinePhaseRunning {
+	if pl.Spec.Lifecycle.GetDesiredPhase() != dfv1.PipelinePhaseRunning {
 		log.Debug("Corresponding Pipeline not in Running state")
 		return nil
 	}


Test patch:
diff --git a/pkg/apis/numaflow/v1alpha1/pipeline_types_test.go b/pkg/apis/numaflow/v1alpha1/pipeline_types_test.go
index 6b91aef0..0af30552 100644
--- a/pkg/apis/numaflow/v1alpha1/pipeline_types_test.go
+++ b/pkg/apis/numaflow/v1alpha1/pipeline_types_test.go
@@ -2,10 +2,12 @@ package v1alpha1
 
 import (
 	"testing"
+	"time"
 
 	"github.com/stretchr/testify/assert"
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/utils/pointer"
 )
 
 var (
@@ -218,3 +220,50 @@ func Test_GetDownstreamEdges(t *testing.T) {
 	edges = pl.GetDownstreamEdges("notexisting")
 	assert.Equal(t, 0, len(edges))
 }
+
+func Test_GetWatermarkMaxDelay(t *testing.T) {
+	wm := Watermark{}
+	assert.Equal(t, "0s", wm.GetMaxDelay().String())
+	wm.MaxDelay = &metav1.Duration{Duration: time.Duration(2 * time.Second)}
+	assert.Equal(t, "2s", wm.GetMaxDelay().String())
+}
+
+func Test_GetDeleteGracePeriodSeconds(t *testing.T) {
+	lc := Lifecycle{}
+	assert.Equal(t, int32(30), lc.GetDeleteGracePeriodSeconds())
+	lc.DeleteGracePeriodSeconds = pointer.Int32(50)
+	assert.Equal(t, int32(50), lc.GetDeleteGracePeriodSeconds())
+}
+
+func Test_GetDesiredPhase(t *testing.T) {
+	lc := Lifecycle{}
+	assert.Equal(t, PipelinePhaseRunning, lc.GetDesiredPhase())
+	lc.DesiredPhase = PipelinePhasePaused
+	assert.Equal(t, PipelinePhasePaused, lc.GetDesiredPhase())
+}
+
+func Test_GetPipelineLimits(t *testing.T) {
+	pl := Pipeline{
+		Spec: PipelineSpec{},
+	}
+	l := pl.GetPipelineLimits()
+	assert.Equal(t, int64(DefaultBufferLength), int64(*l.BufferMaxLength))
+	assert.Equal(t, float64(DefaultBufferUsageLimit), float64(*l.BufferUsageLimit)/100)
+	assert.Equal(t, int64(DefaultReadBatchSize), int64(*l.ReadBatchSize))
+	assert.Equal(t, "1s", l.ReadTimeout.Duration.String())
+
+	length := uint64(2000)
+	usuageLimit := uint32(40)
+	readBatch := uint64(321)
+	pl.Spec.Limits = &PipelineLimits{
+		BufferMaxLength:  &length,
+		BufferUsageLimit: &usuageLimit,
+		ReadBatchSize:    &readBatch,
+		ReadTimeout:      &metav1.Duration{Duration: time.Duration(5 * time.Second)},
+	}
+	l = pl.GetPipelineLimits()
+	assert.Equal(t, length, *l.BufferMaxLength)
+	assert.Equal(t, float64(40)/100, float64(*l.BufferUsageLimit)/100)
+	assert.Equal(t, readBatch, *l.ReadBatchSize)
+	assert.Equal(t, "5s", l.ReadTimeout.Duration.String())
+}
diff --git a/pkg/reconciler/isbsvc/validate_test.go b/pkg/reconciler/isbsvc/validate_test.go
index f54e4adf..97ffda50 100644
--- a/pkg/reconciler/isbsvc/validate_test.go
+++ b/pkg/reconciler/isbsvc/validate_test.go
@@ -42,12 +42,20 @@ func TestValidateInterStepBuffer(t *testing.T) {
 		assert.NoError(t, err)
 	})
 
+	t.Run("test both redis and jetstream configured", func(t *testing.T) {
+		isbs := testJetStreamIsbs.DeepCopy()
+		isbs.Spec.Redis = testRedisIsbs.DeepCopy().Spec.Redis
+		err := ValidateInterStepBufferService(isbs)
+		assert.Error(t, err)
+		assert.Contains(t, err.Error(), `spec.redis" and "spec.jetstream" can not be defined together`)
+	})
+
 	t.Run("test missing spec.redis", func(t *testing.T) {
 		isbs := testRedisIsbs.DeepCopy()
 		isbs.Spec.Redis = nil
 		err := ValidateInterStepBufferService(isbs)
 		assert.Error(t, err)
-		assert.Contains(t, err.Error(), "either \"spec.redis\" or \"spec.jetstream\" needs to be specified")
+		assert.Contains(t, err.Error(), `either "spec.redis" or "spec.jetstream" needs to be specified`)
 	})
 
 	t.Run("test missing version", func(t *testing.T) {
@@ -55,7 +63,7 @@ func TestValidateInterStepBuffer(t *testing.T) {
 		isbs.Spec.Redis.Native.Version = ""
 		err := ValidateInterStepBufferService(isbs)
 		assert.Error(t, err)
-		assert.Contains(t, err.Error(), "\"spec.redis.native.version\" is not defined")
+		assert.Contains(t, err.Error(), `"spec.redis.native.version" is not defined`)
 	})
 
 	t.Run("test both native and external configured", func(t *testing.T) {
diff --git a/pkg/reconciler/pipeline/controller_test.go b/pkg/reconciler/pipeline/controller_test.go
index 352b8506..0907da5a 100644
--- a/pkg/reconciler/pipeline/controller_test.go
+++ b/pkg/reconciler/pipeline/controller_test.go
@@ -137,7 +137,8 @@ func Test_copyVertexLimits(t *testing.T) {
 	pl := testPipeline.DeepCopy()
 	v := pl.Spec.Vertices[0].DeepCopy()
 	copyVertexLimits(pl, v)
-	assert.Nil(t, v.Limits)
+	assert.NotNil(t, v.Limits)
+	assert.Equal(t, int64(dfv1.DefaultReadBatchSize), int64(*v.Limits.ReadBatchSize))
 	one := uint64(1)
 	limitJson := `{"readTimeout": "2s"}`
 	var pipelineLimit dfv1.PipelineLimits
@@ -145,10 +146,11 @@ func Test_copyVertexLimits(t *testing.T) {
 	assert.NoError(t, err)
 	pipelineLimit.ReadBatchSize = &one
 	pl.Spec.Limits = &pipelineLimit
-	copyVertexLimits(pl, v)
-	assert.NotNil(t, v.Limits)
-	assert.Equal(t, one, *v.Limits.ReadBatchSize)
-	assert.Equal(t, "2s", v.Limits.ReadTimeout.Duration.String())
+	v1 := new(dfv1.AbstractVertex)
+	copyVertexLimits(pl, v1)
+	assert.NotNil(t, v1.Limits)
+	assert.Equal(t, int64(one), int64(*v1.Limits.ReadBatchSize))
+	assert.Equal(t, "2s", v1.Limits.ReadTimeout.Duration.String())
 	two := uint64(2)
 	vertexLimitJson := `{"readTimeout": "3s"}`
 	var vertexLimit dfv1.VertexLimits
@@ -167,7 +169,8 @@ func Test_copyEdgeLimits(t *testing.T) {
 	edges := []dfv1.Edge{{From: "in", To: "out"}}
 	result := copyEdgeLimits(pl, edges)
 	for _, e := range result {
-		assert.Nil(t, e.Limits)
+		assert.NotNil(t, e.Limits)
+		assert.Equal(t, int64(dfv1.DefaultBufferLength), int64(*e.Limits.BufferMaxLength))
 	}
 	onethouand := uint64(1000)
 	eighty := uint32(80)