From d2028aa27e256853e60abb1845c373438519d62c Mon Sep 17 00:00:00 2001 From: Vigith Maurice Date: Tue, 3 Jan 2023 07:38:14 -0800 Subject: [PATCH 1/8] doc: reduce doc with windowing Signed-off-by: Vigith Maurice --- .../user-defined-functions/reduce/windowing/fixed.md | 1 + .../user-defined-functions/reduce/windowing/sliding.md | 1 + .../user-defined-functions/reduce/windowing/windowing.md | 1 + mkdocs.yml | 4 ++++ 4 files changed, 7 insertions(+) create mode 100644 docs/user-guide/user-defined-functions/reduce/windowing/fixed.md create mode 100644 docs/user-guide/user-defined-functions/reduce/windowing/sliding.md create mode 100644 docs/user-guide/user-defined-functions/reduce/windowing/windowing.md diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md b/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md new file mode 100644 index 0000000000..387f01f275 --- /dev/null +++ b/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md @@ -0,0 +1 @@ +# Fixed \ No newline at end of file diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md b/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md new file mode 100644 index 0000000000..0a99e459f1 --- /dev/null +++ b/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md @@ -0,0 +1 @@ +# Sliding \ No newline at end of file diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md b/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md new file mode 100644 index 0000000000..4bed1b4108 --- /dev/null +++ b/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md @@ -0,0 +1 @@ +# Windowing \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index b3bd724e4e..9ccd5c6f75 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -64,6 +64,10 @@ nav: - Filter: "user-guide/user-defined-functions/map/builtin-functions/filter.md" - Reduce: - Overview: "user-guide/user-defined-functions/reduce/reduce.md" + - Windowing: + - Overview: "user-guide/user-defined-functions/reduce/windowing/windowing.md" + - Fixed: "user-guide/user-defined-functions/reduce/windowing/fixed.md" + - Sliding: "user-guide/user-defined-functions/reduce/windowing/sliding.md" - user-guide/pipeline-tuning.md - user-guide/conditional-forwarding.md - user-guide/autoscaling.md From a71e4042ef5bed24b3ae57f2b2f345831ef6b5fd Mon Sep 17 00:00:00 2001 From: Vigith Maurice Date: Tue, 3 Jan 2023 09:15:08 -0800 Subject: [PATCH 2/8] chore: move pbq under reduce (#438) Signed-off-by: Vigith Maurice --- pkg/{ => reduce}/pbq/interfaces.go | 0 pkg/{ => reduce}/pbq/metrics.go | 0 pkg/{ => reduce}/pbq/options.go | 0 pkg/{ => reduce}/pbq/options_test.go | 0 pkg/{ => reduce}/pbq/partition/partition.go | 0 pkg/{ => reduce}/pbq/pbq.go | 5 +- pkg/{ => reduce}/pbq/pbq_test.go | 13 ++--- pkg/{ => reduce}/pbq/pbqmanager.go | 5 +- pkg/{ => reduce}/pbq/pbqmanager_test.go | 16 +++--- pkg/{ => reduce}/pbq/store/errors.go | 0 pkg/{ => reduce}/pbq/store/interfaces.go | 2 +- pkg/{ => reduce}/pbq/store/memory/options.go | 2 +- pkg/{ => reduce}/pbq/store/memory/store.go | 5 +- .../pbq/store/memory/store_test.go | 3 +- pkg/{ => reduce}/pbq/store/memory/stores.go | 4 +- .../pbq/store/memory/stores_test.go | 3 +- pkg/{ => reduce}/pbq/store/noop/store.go | 2 +- pkg/{ => reduce}/pbq/store/noop/stores.go | 4 +- pkg/{ => reduce}/pbq/store/wal/bootstrap.go | 2 +- pkg/{ => reduce}/pbq/store/wal/doc.go | 0 pkg/{ => reduce}/pbq/store/wal/metrics.go | 3 +- pkg/{ => reduce}/pbq/store/wal/options.go | 0 pkg/{ => reduce}/pbq/store/wal/segment.go | 2 +- .../pbq/store/wal/segment_test.go | 2 +- pkg/{ => reduce}/pbq/store/wal/stores.go | 4 +- pkg/{ => reduce}/pbq/store/wal/stores_test.go | 5 +- pkg/reduce/pnf/processandforward.go | 5 +- pkg/reduce/pnf/processandforward_test.go | 22 ++++---- pkg/reduce/readloop/ordered.go | 4 +- pkg/reduce/readloop/ordered_test.go | 10 ++-- pkg/reduce/readloop/readloop.go | 10 ++-- pkg/reduce/readloop/readloop_test.go | 10 ++-- pkg/reduce/reduce.go | 3 +- pkg/reduce/reduce_test.go | 50 +++++++++---------- pkg/udf/applier/reducer_applier.go | 2 +- pkg/udf/function/uds_grpc.go | 2 +- pkg/udf/function/uds_grpc_test.go | 2 +- pkg/udf/reduce_udf.go | 13 ++--- pkg/window/keyed/keyed.go | 2 +- pkg/window/keyed/keyed_test.go | 4 +- pkg/window/windower.go | 2 +- 41 files changed, 117 insertions(+), 106 deletions(-) rename pkg/{ => reduce}/pbq/interfaces.go (100%) rename pkg/{ => reduce}/pbq/metrics.go (100%) rename pkg/{ => reduce}/pbq/options.go (100%) rename pkg/{ => reduce}/pbq/options_test.go (100%) rename pkg/{ => reduce}/pbq/partition/partition.go (100%) rename pkg/{ => reduce}/pbq/pbq.go (97%) rename pkg/{ => reduce}/pbq/pbq_test.go (88%) rename pkg/{ => reduce}/pbq/pbqmanager.go (98%) rename pkg/{ => reduce}/pbq/pbqmanager_test.go (93%) rename pkg/{ => reduce}/pbq/store/errors.go (100%) rename pkg/{ => reduce}/pbq/store/interfaces.go (96%) rename pkg/{ => reduce}/pbq/store/memory/options.go (94%) rename pkg/{ => reduce}/pbq/store/memory/store.go (95%) rename pkg/{ => reduce}/pbq/store/memory/store_test.go (98%) rename pkg/{ => reduce}/pbq/store/memory/stores.go (95%) rename pkg/{ => reduce}/pbq/store/memory/stores_test.go (95%) rename pkg/{ => reduce}/pbq/store/noop/store.go (95%) rename pkg/{ => reduce}/pbq/store/noop/stores.go (90%) rename pkg/{ => reduce}/pbq/store/wal/bootstrap.go (98%) rename pkg/{ => reduce}/pbq/store/wal/doc.go (100%) rename pkg/{ => reduce}/pbq/store/wal/metrics.go (99%) rename pkg/{ => reduce}/pbq/store/wal/options.go (100%) rename pkg/{ => reduce}/pbq/store/wal/segment.go (99%) rename pkg/{ => reduce}/pbq/store/wal/segment_test.go (99%) rename pkg/{ => reduce}/pbq/store/wal/stores.go (98%) rename pkg/{ => reduce}/pbq/store/wal/stores_test.go (96%) diff --git a/pkg/pbq/interfaces.go b/pkg/reduce/pbq/interfaces.go similarity index 100% rename from pkg/pbq/interfaces.go rename to pkg/reduce/pbq/interfaces.go diff --git a/pkg/pbq/metrics.go b/pkg/reduce/pbq/metrics.go similarity index 100% rename from pkg/pbq/metrics.go rename to pkg/reduce/pbq/metrics.go diff --git a/pkg/pbq/options.go b/pkg/reduce/pbq/options.go similarity index 100% rename from pkg/pbq/options.go rename to pkg/reduce/pbq/options.go diff --git a/pkg/pbq/options_test.go b/pkg/reduce/pbq/options_test.go similarity index 100% rename from pkg/pbq/options_test.go rename to pkg/reduce/pbq/options_test.go diff --git a/pkg/pbq/partition/partition.go b/pkg/reduce/pbq/partition/partition.go similarity index 100% rename from pkg/pbq/partition/partition.go rename to pkg/reduce/pbq/partition/partition.go diff --git a/pkg/pbq/pbq.go b/pkg/reduce/pbq/pbq.go similarity index 97% rename from pkg/pbq/pbq.go rename to pkg/reduce/pbq/pbq.go index d5d6fb38f9..7c0d68679c 100644 --- a/pkg/pbq/pbq.go +++ b/pkg/reduce/pbq/pbq.go @@ -21,11 +21,12 @@ import ( "errors" "github.com/numaproj/numaflow/pkg/metrics" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/store" + "go.uber.org/zap" "github.com/numaproj/numaflow/pkg/isb" - "github.com/numaproj/numaflow/pkg/pbq/partition" - "github.com/numaproj/numaflow/pkg/pbq/store" ) var ErrCOB = errors.New("error while writing to pbq, pbq is closed") diff --git a/pkg/pbq/pbq_test.go b/pkg/reduce/pbq/pbq_test.go similarity index 88% rename from pkg/pbq/pbq_test.go rename to pkg/reduce/pbq/pbq_test.go index 832defda3b..28b8301566 100644 --- a/pkg/pbq/pbq_test.go +++ b/pkg/reduce/pbq/pbq_test.go @@ -24,9 +24,10 @@ import ( "github.com/numaproj/numaflow/pkg/isb" "github.com/numaproj/numaflow/pkg/isb/testutils" - "github.com/numaproj/numaflow/pkg/pbq/partition" - "github.com/numaproj/numaflow/pkg/pbq/store" - "github.com/numaproj/numaflow/pkg/pbq/store/memory" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/store" + memory2 "github.com/numaproj/numaflow/pkg/reduce/pbq/store/memory" + "github.com/stretchr/testify/assert" ) @@ -40,7 +41,7 @@ func TestPBQ_ReadWrite(t *testing.T) { ctx := context.Background() - qManager, _ := NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(storeSize)), WithChannelBufferSize(int64(buffSize)), WithReadTimeout(1*time.Second)) + qManager, _ := NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(storeSize)), WithChannelBufferSize(int64(buffSize)), WithReadTimeout(1*time.Second)) // write 10 isb messages to persisted store msgCount := 10 @@ -101,7 +102,7 @@ func Test_PBQReadWithCanceledContext(t *testing.T) { ctx := context.Background() - qManager, err = NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(storeSize)), WithChannelBufferSize(int64(bufferSize)), WithReadTimeout(1*time.Second)) + qManager, err = NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(storeSize)), WithChannelBufferSize(int64(bufferSize)), WithReadTimeout(1*time.Second)) assert.NoError(t, err) @@ -167,7 +168,7 @@ func TestPBQ_WriteWithStoreFull(t *testing.T) { var err error ctx := context.Background() - qManager, err = NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(storeSize)), WithChannelBufferSize(int64(buffSize)), WithReadTimeout(1*time.Second)) + qManager, err = NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(storeSize)), WithChannelBufferSize(int64(buffSize)), WithReadTimeout(1*time.Second)) assert.NoError(t, err) // write 101 isb messages to pbq, but the store size is 100, we should get store is full error diff --git a/pkg/pbq/pbqmanager.go b/pkg/reduce/pbq/pbqmanager.go similarity index 98% rename from pkg/pbq/pbqmanager.go rename to pkg/reduce/pbq/pbqmanager.go index ad8cf9e0c7..d71493cd8e 100644 --- a/pkg/pbq/pbqmanager.go +++ b/pkg/reduce/pbq/pbqmanager.go @@ -24,12 +24,13 @@ import ( "time" metricspkg "github.com/numaproj/numaflow/pkg/metrics" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/store" + "go.uber.org/zap" "k8s.io/apimachinery/pkg/util/wait" "github.com/numaproj/numaflow/pkg/isb" - "github.com/numaproj/numaflow/pkg/pbq/partition" - "github.com/numaproj/numaflow/pkg/pbq/store" "github.com/numaproj/numaflow/pkg/shared/logging" ) diff --git a/pkg/pbq/pbqmanager_test.go b/pkg/reduce/pbq/pbqmanager_test.go similarity index 93% rename from pkg/pbq/pbqmanager_test.go rename to pkg/reduce/pbq/pbqmanager_test.go index 2c20c7dc96..1779dce5cb 100644 --- a/pkg/pbq/pbqmanager_test.go +++ b/pkg/reduce/pbq/pbqmanager_test.go @@ -26,9 +26,9 @@ import ( "github.com/numaproj/numaflow/pkg/isb" "github.com/numaproj/numaflow/pkg/isb/testutils" - "github.com/numaproj/numaflow/pkg/pbq/partition" - "github.com/numaproj/numaflow/pkg/pbq/store/memory" - "github.com/numaproj/numaflow/pkg/pbq/store/noop" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + memory2 "github.com/numaproj/numaflow/pkg/reduce/pbq/store/memory" + "github.com/numaproj/numaflow/pkg/reduce/pbq/store/noop" ) // tests for pbqManager (store type - in-memory) @@ -37,7 +37,7 @@ func TestManager_ListPartitions(t *testing.T) { size := int64(100) ctx := context.Background() - pbqManager, err := NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(size)), + pbqManager, err := NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(size)), WithReadTimeout(1*time.Second), WithChannelBufferSize(10)) assert.NoError(t, err) @@ -75,7 +75,7 @@ func TestManager_GetPBQ(t *testing.T) { size := int64(100) var pb1, pb2 ReadWriteCloser ctx := context.Background() - pbqManager, err := NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(size)), + pbqManager, err := NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(size)), WithReadTimeout(1*time.Second), WithChannelBufferSize(10)) assert.NoError(t, err) @@ -99,7 +99,7 @@ func TestPBQFlow(t *testing.T) { size := int64(100) ctx := context.Background() - pbqManager, err := NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(size)), + pbqManager, err := NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(size)), WithReadTimeout(1*time.Second), WithChannelBufferSize(10)) assert.NoError(t, err) testPartition := partition.ID{ @@ -217,7 +217,7 @@ func TestManager_Replay(t *testing.T) { size := int64(100) ctx := context.Background() - pbqManager, err := NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(size)), + pbqManager, err := NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(size)), WithReadTimeout(1*time.Second), WithChannelBufferSize(10), WithReadBatchSize(10)) assert.NoError(t, err) testPartition := partition.ID{ @@ -289,7 +289,7 @@ func TestManager_StartUp(t *testing.T) { return []partition.ID{pID1, pID2}, nil } - stores := memory.NewMemoryStores(memory.WithStoreSize(size), memory.WithDiscoverer(dp)) + stores := memory2.NewMemoryStores(memory2.WithStoreSize(size), memory2.WithDiscoverer(dp)) ctx := context.Background() pbqManager, err := NewManager(ctx, "reduce", "test-pipeline", stores, WithReadTimeout(1*time.Second), WithChannelBufferSize(10), WithReadBatchSize(10)) diff --git a/pkg/pbq/store/errors.go b/pkg/reduce/pbq/store/errors.go similarity index 100% rename from pkg/pbq/store/errors.go rename to pkg/reduce/pbq/store/errors.go diff --git a/pkg/pbq/store/interfaces.go b/pkg/reduce/pbq/store/interfaces.go similarity index 96% rename from pkg/pbq/store/interfaces.go rename to pkg/reduce/pbq/store/interfaces.go index 912782c71d..76b3dcb3fa 100644 --- a/pkg/pbq/store/interfaces.go +++ b/pkg/reduce/pbq/store/interfaces.go @@ -20,7 +20,7 @@ import ( "context" "github.com/numaproj/numaflow/pkg/isb" - "github.com/numaproj/numaflow/pkg/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" ) // Store provides methods to read, write and delete data from the store. diff --git a/pkg/pbq/store/memory/options.go b/pkg/reduce/pbq/store/memory/options.go similarity index 94% rename from pkg/pbq/store/memory/options.go rename to pkg/reduce/pbq/store/memory/options.go index 2696d469e6..32454aaaaf 100644 --- a/pkg/pbq/store/memory/options.go +++ b/pkg/reduce/pbq/store/memory/options.go @@ -19,7 +19,7 @@ package memory import ( "context" - "github.com/numaproj/numaflow/pkg/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" ) type Option func(stores *memoryStores) diff --git a/pkg/pbq/store/memory/store.go b/pkg/reduce/pbq/store/memory/store.go similarity index 95% rename from pkg/pbq/store/memory/store.go rename to pkg/reduce/pbq/store/memory/store.go index 5128d2547a..877ecc76bd 100644 --- a/pkg/pbq/store/memory/store.go +++ b/pkg/reduce/pbq/store/memory/store.go @@ -20,8 +20,9 @@ import ( "math" "github.com/numaproj/numaflow/pkg/isb" - "github.com/numaproj/numaflow/pkg/pbq/partition" - "github.com/numaproj/numaflow/pkg/pbq/store" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/store" + "go.uber.org/zap" ) diff --git a/pkg/pbq/store/memory/store_test.go b/pkg/reduce/pbq/store/memory/store_test.go similarity index 98% rename from pkg/pbq/store/memory/store_test.go rename to pkg/reduce/pbq/store/memory/store_test.go index 8c537ff6b5..6be711d297 100644 --- a/pkg/pbq/store/memory/store_test.go +++ b/pkg/reduce/pbq/store/memory/store_test.go @@ -23,7 +23,8 @@ import ( "github.com/numaproj/numaflow/pkg/isb" "github.com/numaproj/numaflow/pkg/isb/testutils" - "github.com/numaproj/numaflow/pkg/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + "github.com/stretchr/testify/assert" ) diff --git a/pkg/pbq/store/memory/stores.go b/pkg/reduce/pbq/store/memory/stores.go similarity index 95% rename from pkg/pbq/store/memory/stores.go rename to pkg/reduce/pbq/store/memory/stores.go index 264e2bb93e..b6a63bf94b 100644 --- a/pkg/pbq/store/memory/stores.go +++ b/pkg/reduce/pbq/store/memory/stores.go @@ -22,8 +22,8 @@ import ( "sync" "github.com/numaproj/numaflow/pkg/isb" - "github.com/numaproj/numaflow/pkg/pbq/partition" - "github.com/numaproj/numaflow/pkg/pbq/store" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/store" "github.com/numaproj/numaflow/pkg/shared/logging" ) diff --git a/pkg/pbq/store/memory/stores_test.go b/pkg/reduce/pbq/store/memory/stores_test.go similarity index 95% rename from pkg/pbq/store/memory/stores_test.go rename to pkg/reduce/pbq/store/memory/stores_test.go index 6d8ae39942..528d8741e0 100644 --- a/pkg/pbq/store/memory/stores_test.go +++ b/pkg/reduce/pbq/store/memory/stores_test.go @@ -5,8 +5,9 @@ import ( "testing" "time" - "github.com/numaproj/numaflow/pkg/pbq/partition" "github.com/stretchr/testify/assert" + + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" ) func TestMemoryStores(t *testing.T) { diff --git a/pkg/pbq/store/noop/store.go b/pkg/reduce/pbq/store/noop/store.go similarity index 95% rename from pkg/pbq/store/noop/store.go rename to pkg/reduce/pbq/store/noop/store.go index 3f97bdf934..6b35316375 100644 --- a/pkg/pbq/store/noop/store.go +++ b/pkg/reduce/pbq/store/noop/store.go @@ -18,7 +18,7 @@ package noop import ( "github.com/numaproj/numaflow/pkg/isb" - "github.com/numaproj/numaflow/pkg/pbq/store" + "github.com/numaproj/numaflow/pkg/reduce/pbq/store" ) // PBQNoOpStore is a no-op pbq store which does not do any operation but can be safely invoked. diff --git a/pkg/pbq/store/noop/stores.go b/pkg/reduce/pbq/store/noop/stores.go similarity index 90% rename from pkg/pbq/store/noop/stores.go rename to pkg/reduce/pbq/store/noop/stores.go index 9e39271800..c50c4a1889 100644 --- a/pkg/pbq/store/noop/stores.go +++ b/pkg/reduce/pbq/store/noop/stores.go @@ -19,8 +19,8 @@ package noop import ( "context" - "github.com/numaproj/numaflow/pkg/pbq/partition" - "github.com/numaproj/numaflow/pkg/pbq/store" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/store" ) type noopStores struct { diff --git a/pkg/pbq/store/wal/bootstrap.go b/pkg/reduce/pbq/store/wal/bootstrap.go similarity index 98% rename from pkg/pbq/store/wal/bootstrap.go rename to pkg/reduce/pbq/store/wal/bootstrap.go index b07cb702cd..29bb3afb92 100644 --- a/pkg/pbq/store/wal/bootstrap.go +++ b/pkg/reduce/pbq/store/wal/bootstrap.go @@ -26,7 +26,7 @@ import ( "time" "github.com/numaproj/numaflow/pkg/isb" - "github.com/numaproj/numaflow/pkg/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" ) var location *time.Location diff --git a/pkg/pbq/store/wal/doc.go b/pkg/reduce/pbq/store/wal/doc.go similarity index 100% rename from pkg/pbq/store/wal/doc.go rename to pkg/reduce/pbq/store/wal/doc.go diff --git a/pkg/pbq/store/wal/metrics.go b/pkg/reduce/pbq/store/wal/metrics.go similarity index 99% rename from pkg/pbq/store/wal/metrics.go rename to pkg/reduce/pbq/store/wal/metrics.go index 0f0d894513..31d2256edf 100644 --- a/pkg/pbq/store/wal/metrics.go +++ b/pkg/reduce/pbq/store/wal/metrics.go @@ -17,9 +17,10 @@ limitations under the License. package wal import ( - metricspkg "github.com/numaproj/numaflow/pkg/metrics" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" + + metricspkg "github.com/numaproj/numaflow/pkg/metrics" ) const ( diff --git a/pkg/pbq/store/wal/options.go b/pkg/reduce/pbq/store/wal/options.go similarity index 100% rename from pkg/pbq/store/wal/options.go rename to pkg/reduce/pbq/store/wal/options.go diff --git a/pkg/pbq/store/wal/segment.go b/pkg/reduce/pbq/store/wal/segment.go similarity index 99% rename from pkg/pbq/store/wal/segment.go rename to pkg/reduce/pbq/store/wal/segment.go index b715d6552b..c68d83a3a1 100644 --- a/pkg/pbq/store/wal/segment.go +++ b/pkg/reduce/pbq/store/wal/segment.go @@ -29,7 +29,7 @@ import ( "github.com/numaproj/numaflow/pkg/isb" metricspkg "github.com/numaproj/numaflow/pkg/metrics" - "github.com/numaproj/numaflow/pkg/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" ) const ( diff --git a/pkg/pbq/store/wal/segment_test.go b/pkg/reduce/pbq/store/wal/segment_test.go similarity index 99% rename from pkg/pbq/store/wal/segment_test.go rename to pkg/reduce/pbq/store/wal/segment_test.go index 517579a480..9e6419f3bb 100644 --- a/pkg/pbq/store/wal/segment_test.go +++ b/pkg/reduce/pbq/store/wal/segment_test.go @@ -28,7 +28,7 @@ import ( dfv1 "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1" "github.com/numaproj/numaflow/pkg/isb" "github.com/numaproj/numaflow/pkg/isb/testutils" - "github.com/numaproj/numaflow/pkg/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" ) var vi = &dfv1.VertexInstance{ diff --git a/pkg/pbq/store/wal/stores.go b/pkg/reduce/pbq/store/wal/stores.go similarity index 98% rename from pkg/pbq/store/wal/stores.go rename to pkg/reduce/pbq/store/wal/stores.go index 62489a311f..a1ba0957ae 100644 --- a/pkg/pbq/store/wal/stores.go +++ b/pkg/reduce/pbq/store/wal/stores.go @@ -27,8 +27,8 @@ import ( dfv1 "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1" metricspkg "github.com/numaproj/numaflow/pkg/metrics" - "github.com/numaproj/numaflow/pkg/pbq/partition" - "github.com/numaproj/numaflow/pkg/pbq/store" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/store" ) type walStores struct { diff --git a/pkg/pbq/store/wal/stores_test.go b/pkg/reduce/pbq/store/wal/stores_test.go similarity index 96% rename from pkg/pbq/store/wal/stores_test.go rename to pkg/reduce/pbq/store/wal/stores_test.go index c94b3e1686..e6afe1625f 100644 --- a/pkg/pbq/store/wal/stores_test.go +++ b/pkg/reduce/pbq/store/wal/stores_test.go @@ -2,11 +2,12 @@ package wal import ( "context" - dfv1 "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1" "testing" "time" - "github.com/numaproj/numaflow/pkg/pbq/partition" + dfv1 "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + "github.com/stretchr/testify/assert" ) diff --git a/pkg/reduce/pnf/processandforward.go b/pkg/reduce/pnf/processandforward.go index f36763d802..8e196ee748 100644 --- a/pkg/reduce/pnf/processandforward.go +++ b/pkg/reduce/pnf/processandforward.go @@ -28,6 +28,9 @@ import ( "time" metricspkg "github.com/numaproj/numaflow/pkg/metrics" + "github.com/numaproj/numaflow/pkg/reduce/pbq" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + "go.uber.org/zap" "k8s.io/apimachinery/pkg/util/wait" @@ -39,8 +42,6 @@ import ( "github.com/numaproj/numaflow/pkg/watermark/publish" "github.com/numaproj/numaflow/pkg/isb" - "github.com/numaproj/numaflow/pkg/pbq" - "github.com/numaproj/numaflow/pkg/pbq/partition" "github.com/numaproj/numaflow/pkg/udf/applier" ) diff --git a/pkg/reduce/pnf/processandforward_test.go b/pkg/reduce/pnf/processandforward_test.go index 38edd6fba8..754794c539 100644 --- a/pkg/reduce/pnf/processandforward_test.go +++ b/pkg/reduce/pnf/processandforward_test.go @@ -25,6 +25,9 @@ import ( "github.com/numaproj/numaflow/pkg/isb" "github.com/numaproj/numaflow/pkg/isb/stores/simplebuffer" + pbq2 "github.com/numaproj/numaflow/pkg/reduce/pbq" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + memory2 "github.com/numaproj/numaflow/pkg/reduce/pbq/store/memory" "github.com/numaproj/numaflow/pkg/shared/logging" "github.com/numaproj/numaflow/pkg/watermark/generic" "github.com/numaproj/numaflow/pkg/watermark/processor" @@ -39,9 +42,6 @@ import ( dfv1 "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1" "github.com/numaproj/numaflow/pkg/isb/testutils" - "github.com/numaproj/numaflow/pkg/pbq" - "github.com/numaproj/numaflow/pkg/pbq/partition" - "github.com/numaproj/numaflow/pkg/pbq/store/memory" udfcall "github.com/numaproj/numaflow/pkg/udf/function" wmstore "github.com/numaproj/numaflow/pkg/watermark/store" ) @@ -88,14 +88,14 @@ func TestProcessAndForward_Process(t *testing.T) { Key: "partition-1", } var err error - var pbqManager *pbq.Manager + var pbqManager *pbq2.Manager - pbqManager, err = pbq.NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(100)), - pbq.WithReadTimeout(1*time.Second), pbq.WithChannelBufferSize(10)) + pbqManager, err = pbq2.NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(100)), + pbq2.WithReadTimeout(1*time.Second), pbq2.WithChannelBufferSize(10)) assert.NoError(t, err) // create a pbq for a partition - var simplePbq pbq.ReadWriteCloser + var simplePbq pbq2.ReadWriteCloser simplePbq, err = pbqManager.CreateNewPBQ(ctx, testPartition) assert.NoError(t, err) @@ -145,9 +145,9 @@ func TestProcessAndForward_Process(t *testing.T) { func TestProcessAndForward_Forward(t *testing.T) { ctx := context.Background() - var pbqManager *pbq.Manager + var pbqManager *pbq2.Manager - pbqManager, _ = pbq.NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores()) + pbqManager, _ = pbq2.NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores()) test1Buffer1 := simplebuffer.NewInMemoryBuffer("buffer1", 10) test1Buffer2 := simplebuffer.NewInMemoryBuffer("buffer2", 10) @@ -245,7 +245,7 @@ func TestProcessAndForward_Forward(t *testing.T) { } } -func createProcessAndForward(ctx context.Context, key string, pbqManager *pbq.Manager, toBuffers map[string]isb.BufferWriter) ProcessAndForward { +func createProcessAndForward(ctx context.Context, key string, pbqManager *pbq2.Manager, toBuffers map[string]isb.BufferWriter) ProcessAndForward { testPartition := partition.ID{ Start: time.UnixMilli(60000), @@ -255,7 +255,7 @@ func createProcessAndForward(ctx context.Context, key string, pbqManager *pbq.Ma // create a pbq for a partition pw := buildPublisherMap(toBuffers) - var simplePbq pbq.Reader + var simplePbq pbq2.Reader simplePbq, _ = pbqManager.CreateNewPBQ(ctx, testPartition) resultPayload, _ := json.Marshal(PayloadForTest{ diff --git a/pkg/reduce/readloop/ordered.go b/pkg/reduce/readloop/ordered.go index afbf480ef7..3f2a818dc4 100644 --- a/pkg/reduce/readloop/ordered.go +++ b/pkg/reduce/readloop/ordered.go @@ -25,13 +25,13 @@ import ( "go.uber.org/zap" "github.com/numaproj/numaflow/pkg/metrics" + "github.com/numaproj/numaflow/pkg/reduce/pbq" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" "github.com/numaproj/numaflow/pkg/isb" "github.com/numaproj/numaflow/pkg/isb/forward" "github.com/numaproj/numaflow/pkg/watermark/publish" - "github.com/numaproj/numaflow/pkg/pbq" - "github.com/numaproj/numaflow/pkg/pbq/partition" "github.com/numaproj/numaflow/pkg/reduce/pnf" "github.com/numaproj/numaflow/pkg/shared/logging" "github.com/numaproj/numaflow/pkg/udf/applier" diff --git a/pkg/reduce/readloop/ordered_test.go b/pkg/reduce/readloop/ordered_test.go index 188ae9d4ec..1a2b77eb44 100644 --- a/pkg/reduce/readloop/ordered_test.go +++ b/pkg/reduce/readloop/ordered_test.go @@ -24,15 +24,15 @@ import ( "github.com/numaproj/numaflow/pkg/isb/stores/simplebuffer" "github.com/numaproj/numaflow/pkg/isb/testutils" + pbq2 "github.com/numaproj/numaflow/pkg/reduce/pbq" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + memory2 "github.com/numaproj/numaflow/pkg/reduce/pbq/store/memory" "github.com/numaproj/numaflow/pkg/watermark/generic" "github.com/stretchr/testify/assert" dfv1 "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1" "github.com/numaproj/numaflow/pkg/isb" - "github.com/numaproj/numaflow/pkg/pbq" - "github.com/numaproj/numaflow/pkg/pbq/partition" - "github.com/numaproj/numaflow/pkg/pbq/store/memory" "github.com/numaproj/numaflow/pkg/udf/applier" ) @@ -107,8 +107,8 @@ func TestOrderedProcessing(t *testing.T) { op := newOrderedForwarder(ctx, "reduce", "test-pipeline") // although this could be declared outside, since we are using common naming scheme for partitions, // things will go haywire. - pbqManager, _ := pbq.NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(100)), - pbq.WithReadTimeout(1*time.Second), pbq.WithChannelBufferSize(10)) + pbqManager, _ := pbq2.NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(100)), + pbq2.WithReadTimeout(1*time.Second), pbq2.WithChannelBufferSize(10)) cCtx, cancelFn := context.WithCancel(ctx) defer cancelFn() for _, _partition := range tt.partitions { diff --git a/pkg/reduce/readloop/readloop.go b/pkg/reduce/readloop/readloop.go index 49fb617f24..01a6e5372c 100644 --- a/pkg/reduce/readloop/readloop.go +++ b/pkg/reduce/readloop/readloop.go @@ -37,11 +37,11 @@ import ( "k8s.io/apimachinery/pkg/util/wait" "github.com/numaproj/numaflow/pkg/metrics" + pbq2 "github.com/numaproj/numaflow/pkg/reduce/pbq" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" "github.com/numaproj/numaflow/pkg/isb" "github.com/numaproj/numaflow/pkg/isb/forward" - "github.com/numaproj/numaflow/pkg/pbq" - "github.com/numaproj/numaflow/pkg/pbq/partition" "github.com/numaproj/numaflow/pkg/shared/logging" "github.com/numaproj/numaflow/pkg/udf/applier" "github.com/numaproj/numaflow/pkg/watermark/processor" @@ -55,7 +55,7 @@ type ReadLoop struct { vertexName string pipelineName string UDF applier.ReduceApplier - pbqManager *pbq.Manager + pbqManager *pbq2.Manager windower window.Windower op *orderedForwarder log *zap.SugaredLogger @@ -70,7 +70,7 @@ func NewReadLoop(ctx context.Context, vertexName string, pipelineName string, udf applier.ReduceApplier, - pbqManager *pbq.Manager, + pbqManager *pbq2.Manager, windowingStrategy window.Windower, toBuffers map[string]isb.BufferWriter, whereToDecider forward.ToWhichStepDecider, @@ -296,7 +296,7 @@ func (rl *ReadLoop) ackMessages(ctx context.Context, messages []*isb.ReadMessage // associatePBQAndPnF associates a PBQ with the partition if a PBQ exists, else creates a new one and then associates // it to the partition. -func (rl *ReadLoop) associatePBQAndPnF(ctx context.Context, partitionID partition.ID) pbq.ReadWriteCloser { +func (rl *ReadLoop) associatePBQAndPnF(ctx context.Context, partitionID partition.ID) pbq2.ReadWriteCloser { // look for existing pbq q := rl.pbqManager.GetPBQ(partitionID) diff --git a/pkg/reduce/readloop/readloop_test.go b/pkg/reduce/readloop/readloop_test.go index ddcb4306c5..ea6f1ee881 100644 --- a/pkg/reduce/readloop/readloop_test.go +++ b/pkg/reduce/readloop/readloop_test.go @@ -11,9 +11,9 @@ import ( "github.com/numaproj/numaflow/pkg/isb" "github.com/numaproj/numaflow/pkg/isb/stores/simplebuffer" - "github.com/numaproj/numaflow/pkg/pbq" - "github.com/numaproj/numaflow/pkg/pbq/partition" - "github.com/numaproj/numaflow/pkg/pbq/store/memory" + pbq2 "github.com/numaproj/numaflow/pkg/reduce/pbq" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + memory2 "github.com/numaproj/numaflow/pkg/reduce/pbq/store/memory" "github.com/numaproj/numaflow/pkg/watermark/generic" "github.com/numaproj/numaflow/pkg/window/strategy/fixed" ) @@ -87,7 +87,7 @@ func TestReadLoop_Startup(t *testing.T) { }, } - memStoreProvider := memory.NewMemoryStores(memory.WithStoreSize(100)) + memStoreProvider := memory2.NewMemoryStores(memory2.WithStoreSize(100)) for _, id := range partitionIds { memStore, err := memStoreProvider.CreateStore(ctx, id) @@ -108,7 +108,7 @@ func TestReadLoop_Startup(t *testing.T) { } } - pManager, _ := pbq.NewManager(ctx, "reduce", "test-pipeline", memStoreProvider, pbq.WithChannelBufferSize(10)) + pManager, _ := pbq2.NewManager(ctx, "reduce", "test-pipeline", memStoreProvider, pbq2.WithChannelBufferSize(10)) to1 := simplebuffer.NewInMemoryBuffer("reduce-buffer", 4) toSteps := map[string]isb.BufferWriter{ diff --git a/pkg/reduce/reduce.go b/pkg/reduce/reduce.go index 6aa75a5259..c49228c720 100644 --- a/pkg/reduce/reduce.go +++ b/pkg/reduce/reduce.go @@ -24,12 +24,13 @@ import ( "time" "github.com/numaproj/numaflow/pkg/metrics" + "github.com/numaproj/numaflow/pkg/reduce/pbq" + "go.uber.org/zap" dfv1 "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1" "github.com/numaproj/numaflow/pkg/isb" "github.com/numaproj/numaflow/pkg/isb/forward" - "github.com/numaproj/numaflow/pkg/pbq" "github.com/numaproj/numaflow/pkg/reduce/readloop" "github.com/numaproj/numaflow/pkg/shared/logging" "github.com/numaproj/numaflow/pkg/udf/applier" diff --git a/pkg/reduce/reduce_test.go b/pkg/reduce/reduce_test.go index c0844ec90b..eadd46570f 100644 --- a/pkg/reduce/reduce_test.go +++ b/pkg/reduce/reduce_test.go @@ -31,9 +31,9 @@ import ( dfv1 "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1" "github.com/numaproj/numaflow/pkg/isb" "github.com/numaproj/numaflow/pkg/isb/stores/simplebuffer" - "github.com/numaproj/numaflow/pkg/pbq" - "github.com/numaproj/numaflow/pkg/pbq/partition" - "github.com/numaproj/numaflow/pkg/pbq/store/memory" + pbq2 "github.com/numaproj/numaflow/pkg/reduce/pbq" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" + memory2 "github.com/numaproj/numaflow/pkg/reduce/pbq/store/memory" "github.com/numaproj/numaflow/pkg/watermark/fetch" "github.com/numaproj/numaflow/pkg/watermark/processor" "github.com/numaproj/numaflow/pkg/watermark/publish" @@ -225,11 +225,11 @@ func TestDataForward_StartWithNoOpWM(t *testing.T) { } var err error - var pbqManager *pbq.Manager + var pbqManager *pbq2.Manager // create pbqManager - pbqManager, err = pbq.NewManager(child, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(100)), - pbq.WithReadTimeout(1*time.Second), pbq.WithChannelBufferSize(10)) + pbqManager, err = pbq2.NewManager(child, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(100)), + pbq2.WithReadTimeout(1*time.Second), pbq2.WithChannelBufferSize(10)) assert.NoError(t, err) publisher := map[string]publish.Publisher{ @@ -297,9 +297,9 @@ func TestReduceDataForward_Count(t *testing.T) { } // create pbq manager - var pbqManager *pbq.Manager - pbqManager, err = pbq.NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(1000)), - pbq.WithReadTimeout(1*time.Second), pbq.WithChannelBufferSize(10)) + var pbqManager *pbq2.Manager + pbqManager, err = pbq2.NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(1000)), + pbq2.WithReadTimeout(1*time.Second), pbq2.WithChannelBufferSize(10)) assert.NoError(t, err) // create in memory watermark publisher and fetcher @@ -370,9 +370,9 @@ func TestReduceDataForward_Sum(t *testing.T) { } // create pbq manager - var pbqManager *pbq.Manager - pbqManager, err = pbq.NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(1000)), - pbq.WithReadTimeout(1*time.Second), pbq.WithChannelBufferSize(10)) + var pbqManager *pbq2.Manager + pbqManager, err = pbq2.NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(1000)), + pbq2.WithReadTimeout(1*time.Second), pbq2.WithChannelBufferSize(10)) assert.NoError(t, err) // create in memory watermark publisher and fetcher @@ -443,9 +443,9 @@ func TestReduceDataForward_Max(t *testing.T) { } // create pbq manager - var pbqManager *pbq.Manager - pbqManager, err = pbq.NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(1000)), - pbq.WithReadTimeout(1*time.Second), pbq.WithChannelBufferSize(10)) + var pbqManager *pbq2.Manager + pbqManager, err = pbq2.NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(1000)), + pbq2.WithReadTimeout(1*time.Second), pbq2.WithChannelBufferSize(10)) assert.NoError(t, err) // create in memory watermark publisher and fetcher @@ -516,9 +516,9 @@ func TestReduceDataForward_SumWithDifferentKeys(t *testing.T) { } // create pbq manager - var pbqManager *pbq.Manager - pbqManager, err = pbq.NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(1000)), - pbq.WithReadTimeout(1*time.Second), pbq.WithChannelBufferSize(10)) + var pbqManager *pbq2.Manager + pbqManager, err = pbq2.NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(1000)), + pbq2.WithReadTimeout(1*time.Second), pbq2.WithChannelBufferSize(10)) assert.NoError(t, err) // create in memory watermark publisher and fetcher @@ -597,9 +597,9 @@ func TestReduceDataForward_NonKeyed(t *testing.T) { } // create pbq manager - var pbqManager *pbq.Manager - pbqManager, err = pbq.NewManager(ctx, "reduce", "test-pipeline", memory.NewMemoryStores(memory.WithStoreSize(1000)), - pbq.WithReadTimeout(1*time.Second), pbq.WithChannelBufferSize(10)) + var pbqManager *pbq2.Manager + pbqManager, err = pbq2.NewManager(ctx, "reduce", "test-pipeline", memory2.NewMemoryStores(memory2.WithStoreSize(1000)), + pbq2.WithReadTimeout(1*time.Second), pbq2.WithChannelBufferSize(10)) assert.NoError(t, err) // create in memory watermark publisher and fetcher @@ -674,12 +674,12 @@ func TestDataForward_WithContextClose(t *testing.T) { } // create a store provider - storeProvider := memory.NewMemoryStores(memory.WithStoreSize(1000)) + storeProvider := memory2.NewMemoryStores(memory2.WithStoreSize(1000)) // create pbq manager - var pbqManager *pbq.Manager - pbqManager, err = pbq.NewManager(cctx, "reduce", "test-pipeline", storeProvider, - pbq.WithReadTimeout(1*time.Second), pbq.WithChannelBufferSize(10)) + var pbqManager *pbq2.Manager + pbqManager, err = pbq2.NewManager(cctx, "reduce", "test-pipeline", storeProvider, + pbq2.WithReadTimeout(1*time.Second), pbq2.WithChannelBufferSize(10)) assert.NoError(t, err) // create in memory watermark publisher and fetcher diff --git a/pkg/udf/applier/reducer_applier.go b/pkg/udf/applier/reducer_applier.go index 5e2124869a..03f4898353 100644 --- a/pkg/udf/applier/reducer_applier.go +++ b/pkg/udf/applier/reducer_applier.go @@ -20,7 +20,7 @@ import ( "context" "github.com/numaproj/numaflow/pkg/isb" - "github.com/numaproj/numaflow/pkg/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" ) // ReduceApplier applies the HTTPBasedUDF on the read message and gives back a new message. Any UserError will be retried here, while diff --git a/pkg/udf/function/uds_grpc.go b/pkg/udf/function/uds_grpc.go index 034bb9aa35..e9152160a2 100644 --- a/pkg/udf/function/uds_grpc.go +++ b/pkg/udf/function/uds_grpc.go @@ -23,7 +23,7 @@ import ( "sync" "time" - "github.com/numaproj/numaflow/pkg/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" "github.com/numaproj/numaflow/pkg/udf/applier" functionpb "github.com/numaproj/numaflow-go/pkg/apis/proto/function/v1" diff --git a/pkg/udf/function/uds_grpc_test.go b/pkg/udf/function/uds_grpc_test.go index bb41dc7451..974a110bb0 100644 --- a/pkg/udf/function/uds_grpc_test.go +++ b/pkg/udf/function/uds_grpc_test.go @@ -35,7 +35,7 @@ import ( "github.com/numaproj/numaflow/pkg/isb" "github.com/numaproj/numaflow/pkg/isb/testutils" - "github.com/numaproj/numaflow/pkg/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" ) func NewMockUDSGRPCBasedUDF(mockClient *funcmock.MockUserDefinedFunctionClient) *udsGRPCBasedUDF { diff --git a/pkg/udf/reduce_udf.go b/pkg/udf/reduce_udf.go index c04347332e..c7953c8819 100644 --- a/pkg/udf/reduce_udf.go +++ b/pkg/udf/reduce_udf.go @@ -23,18 +23,19 @@ import ( "sync" "time" - "github.com/numaproj/numaflow/pkg/pbq/store/memory" + "go.uber.org/zap" + + "github.com/numaproj/numaflow/pkg/reduce/pbq" + "github.com/numaproj/numaflow/pkg/reduce/pbq/store" + "github.com/numaproj/numaflow/pkg/reduce/pbq/store/memory" + wal2 "github.com/numaproj/numaflow/pkg/reduce/pbq/store/wal" "github.com/numaproj/numaflow/pkg/window/strategy/fixed" "github.com/numaproj/numaflow/pkg/window/strategy/sliding" - "go.uber.org/zap" dfv1 "github.com/numaproj/numaflow/pkg/apis/numaflow/v1alpha1" "github.com/numaproj/numaflow/pkg/isb" "github.com/numaproj/numaflow/pkg/isb/forward" "github.com/numaproj/numaflow/pkg/metrics" - "github.com/numaproj/numaflow/pkg/pbq" - "github.com/numaproj/numaflow/pkg/pbq/store" - "github.com/numaproj/numaflow/pkg/pbq/store/wal" "github.com/numaproj/numaflow/pkg/reduce" "github.com/numaproj/numaflow/pkg/shared/logging" sharedutil "github.com/numaproj/numaflow/pkg/shared/util" @@ -148,7 +149,7 @@ func (u *ReduceUDFProcessor) Start(ctx context.Context) error { var storeProvider store.StoreProvider if storage := u.VertexInstance.Vertex.Spec.UDF.GroupBy.Storage; storage != nil && storage.PersistentVolumeClaim != nil { - storeProvider = wal.NewWALStores(u.VertexInstance, wal.WithStorePath(dfv1.DefaultStorePath), wal.WithMaxBufferSize(dfv1.DefaultStoreMaxBufferSize), wal.WithSyncDuration(dfv1.DefaultStoreSyncDuration)) + storeProvider = wal2.NewWALStores(u.VertexInstance, wal2.WithStorePath(dfv1.DefaultStorePath), wal2.WithMaxBufferSize(dfv1.DefaultStoreMaxBufferSize), wal2.WithSyncDuration(dfv1.DefaultStoreSyncDuration)) } else { // use in memory type by default storeProvider = memory.NewMemoryStores() diff --git a/pkg/window/keyed/keyed.go b/pkg/window/keyed/keyed.go index f352fb9dc6..a8ed992d0c 100644 --- a/pkg/window/keyed/keyed.go +++ b/pkg/window/keyed/keyed.go @@ -22,7 +22,7 @@ import ( "sync" "time" - "github.com/numaproj/numaflow/pkg/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" "github.com/numaproj/numaflow/pkg/window" ) diff --git a/pkg/window/keyed/keyed_test.go b/pkg/window/keyed/keyed_test.go index 4a29a2a583..ba71fef487 100644 --- a/pkg/window/keyed/keyed_test.go +++ b/pkg/window/keyed/keyed_test.go @@ -21,9 +21,9 @@ import ( "testing" "time" - "github.com/numaproj/numaflow/pkg/pbq/partition" - "github.com/stretchr/testify/assert" + + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" ) func TestKeyedWindow_AddKey(t *testing.T) { diff --git a/pkg/window/windower.go b/pkg/window/windower.go index b2a578019e..58275ed9b8 100644 --- a/pkg/window/windower.go +++ b/pkg/window/windower.go @@ -19,7 +19,7 @@ package window import ( "time" - "github.com/numaproj/numaflow/pkg/pbq/partition" + "github.com/numaproj/numaflow/pkg/reduce/pbq/partition" ) // AlignedKeyedWindower represents a bounded window (i.e., it will have a definite start and end time), and the From b9e2d5c59b9d067c782ebdbd198bef870addd11c Mon Sep 17 00:00:00 2001 From: Vigith Maurice Date: Tue, 3 Jan 2023 10:16:45 -0800 Subject: [PATCH 3/8] windowing overview Signed-off-by: Vigith Maurice --- .../reduce/windowing/windowing.md | 50 ++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md b/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md index 4bed1b4108..193f5537b0 100644 --- a/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md +++ b/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md @@ -1 +1,49 @@ -# Windowing \ No newline at end of file +# Windowing + +In the world of data processing on an unbounded stream, Windowing is a concept +of grouping data using temporal boundaries. We use event-time to discover +temporal boundaries on an unbounded, infinite stream and [Watermark](../../../watermarks.md) to ensure +the datasets within the boundaries are complete. The [reduce](../reduce.md) is +applied on these grouped datasets. + +Numaflow support the following types of windows + * [Fixed](fixed.md) + * [Sliding](sliding.md) + +## Non-Keyed v/s Keyed Windows + +#### Non-Keyed +A non-keyed partition is a partition where the window is the boundary condition. +Data processing on a non-keyed partition cannot be scaled horizontally because +only one partition exists. + +A non-keyed partition is usually used after aggregation and is hardly seen at +the head section of any data processing pipeline. +(There is a concept called Global Window where there is no windowing, but +let us table that for later). + +### Keyed +A keyed partition is a partition where the partition boundary is a composite +key of both the window and the key from the payload (e.g., GROUP BY country, +where country names are the keys). Each smaller partition now has a complete +set of datasets for that key and boundary. The subdivision of dividing a huge +window-based partition into smaller partitions by adding keys along with the +window will help us horizontally scale the distribution. + +Keyed partitions are heavily used to aggregate data and are frequently seen +throughout the processing pipeline. We could also convert and non-keyed problem +to a set of keyed problems and apply a non-keyed function at the end. This will +help solve the original problem in a scalable manner without affecting the +result's completeness and/or accuracy. + +### Example + +Numaflow support both Keyed and Non-Keyed windows. We set `keyed` to either +`true` (keyed) or `false` (non-keyed). + +```yaml +groupBy: + window: + ... + keyed: false +``` \ No newline at end of file From a8cc641c0da952d8a66dd1c18378edf5eadab2ca Mon Sep 17 00:00:00 2001 From: Vigith Maurice Date: Tue, 3 Jan 2023 17:19:29 -0800 Subject: [PATCH 4/8] added more doc on windowing Signed-off-by: Vigith Maurice --- .../user-defined-functions/reduce/reduce.md | 13 ++++++- .../reduce/windowing/sliding.md | 38 ++++++++++++++++++- .../reduce/windowing/windowing.md | 22 +++++++++-- 3 files changed, 67 insertions(+), 6 deletions(-) diff --git a/docs/user-guide/user-defined-functions/reduce/reduce.md b/docs/user-guide/user-defined-functions/reduce/reduce.md index 064eb6d462..5a2b223d03 100644 --- a/docs/user-guide/user-defined-functions/reduce/reduce.md +++ b/docs/user-guide/user-defined-functions/reduce/reduce.md @@ -1,3 +1,14 @@ # Reduce UDF -Work In Progress \ No newline at end of file +Reduce is one of the most commonly used abstractions in a stream processing pipeline +to define aggregation functions on a stream of data. It is the reduce feature +that helps us solve problems like "performs a summary operation (such as +counting the number of occurrence of a key, yielding user login frequencies), etc." +Since the input an unbounded stream (with infinite entries), we need an +additional parameter to convert the unbounded problem to a bounded problem +and provide results on that. That bounding condition is "time", eg, "number +of users logged in per minute". +So while processing an unbounded stream of data, we need a way to group elements +into finite chunks using time. To build these chunks the reduce function is applied to the +set of records produced using the concept of [windowing](./windowing/windowing.md). + diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md b/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md index 0a99e459f1..6f4850dc0d 100644 --- a/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md +++ b/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md @@ -1 +1,37 @@ -# Sliding \ No newline at end of file +# Sliding + +Sliding window is similar to a Fixed windows, the size of the windows is measured in time and is fixed. +The important difference from the Fixed window is the fact that it allows an element to be present in +more than one window. The additional window slide parameter controls how frequently a sliding window +is started. Hence, sliding windows will be overlapping and the slide should be smaller than the window +length. + +```yaml +window: + sliding: + length: duration + slide: duration +``` + +NOTE: A duration string is a possibly signed sequence of decimal numbers, each with optional fraction +and a unit suffix, such as "300ms", "-1.5h" or "2h45m". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". + +## Length + +The `length` is the window size of the fixed window. + +## Slide + +`slide` is the slide parameter that controls the frequency at which the sliding window is created. + +## Example + +To create a sliding window of length 1-minute which slides every 10-seconds, we can use the following +snippet. + +```yaml +window: + sliding: + length: 1m + slide: 10s +``` \ No newline at end of file diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md b/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md index 193f5537b0..c75801e027 100644 --- a/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md +++ b/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md @@ -5,8 +5,21 @@ of grouping data using temporal boundaries. We use event-time to discover temporal boundaries on an unbounded, infinite stream and [Watermark](../../../watermarks.md) to ensure the datasets within the boundaries are complete. The [reduce](../reduce.md) is applied on these grouped datasets. +Example, when we say, we want to find number of users online per minute, we use +windowing to group the users into one minute buckets. -Numaflow support the following types of windows +The entirety of windowing is under the `groupBy` section. +```yaml +groupBy: + window: + ... + keyed: ... +``` + +Under the `window` section we will define different types of windows. + +## Window Types +Numaflow supports the following types of windows * [Fixed](fixed.md) * [Sliding](sliding.md) @@ -36,14 +49,15 @@ to a set of keyed problems and apply a non-keyed function at the end. This will help solve the original problem in a scalable manner without affecting the result's completeness and/or accuracy. -### Example +### Usage Numaflow support both Keyed and Non-Keyed windows. We set `keyed` to either -`true` (keyed) or `false` (non-keyed). +`true` (keyed) or `false` (non-keyed). Please note that the non-keyed windows +are not horizontally scalable as mentioned above. ```yaml groupBy: window: ... - keyed: false + keyed: false # or true ``` \ No newline at end of file From 41cf5d6d65f1ec61a387b60d025fd72d5e9e3449 Mon Sep 17 00:00:00 2001 From: Vigith Maurice Date: Tue, 3 Jan 2023 17:20:10 -0800 Subject: [PATCH 5/8] doc on fixed Signed-off-by: Vigith Maurice --- .../reduce/windowing/fixed.md | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md b/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md index 387f01f275..def6d6e1ba 100644 --- a/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md +++ b/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md @@ -1 +1,32 @@ -# Fixed \ No newline at end of file +# Fixed + +Fixed windows (sometimes called tumbling windows) are defined by a static window size, e.g. 30 second +windows, one minute windows, etc. They are generally aligned, i.e. every window applies across all +the data for the corresponding period of time. It has a fixed size measured in time and does not +overlap. The element which belongs to one window will not belong to any other tumbling window. +For example, a window size of 20 seconds will include all entities of the stream which came in a +certain 20-second interval. + +To enable Fixed widow, we use `fixed` under `window` section. + +```yaml +window: + fixed: + length: duration +``` + +NOTE: A duration string is a possibly signed sequence of decimal numbers, each with optional fraction +and a unit suffix, such as "300ms", "-1.5h" or "2h45m". Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". + +## Length + +The `length` is the window size of the fixed window. + +## Example + +A 10-second window size can be defined as follows. +```yaml +window: + fixed: + length: 10s +``` \ No newline at end of file From e4b120991b52da07037a9935eed70b801453ea03 Mon Sep 17 00:00:00 2001 From: Yashash H L Date: Wed, 4 Jan 2023 20:44:58 +0530 Subject: [PATCH 6/8] window diagrams Signed-off-by: Yashash H L --- .../reduce/windowing/fixed.md | 7 +++++-- .../reduce/windowing/fixed.png | Bin 0 -> 130757 bytes .../reduce/windowing/sliding.md | 8 +++++--- .../reduce/windowing/sliding.png | Bin 0 -> 176314 bytes 4 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 docs/user-guide/user-defined-functions/reduce/windowing/fixed.png create mode 100644 docs/user-guide/user-defined-functions/reduce/windowing/sliding.png diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md b/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md index def6d6e1ba..c0389f89d5 100644 --- a/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md +++ b/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md @@ -28,5 +28,8 @@ A 10-second window size can be defined as follows. ```yaml window: fixed: - length: 10s -``` \ No newline at end of file + length: 60s +``` + +![plot](fixed.png) + diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/fixed.png b/docs/user-guide/user-defined-functions/reduce/windowing/fixed.png new file mode 100644 index 0000000000000000000000000000000000000000..4480897aaef4c4bea01e5d9184a6088e512c986c GIT binary patch literal 130757 zcmeGFcT`i&7e5LoAxM*66%Yg|iZl_C9z+C0iXy!UNE0d2JBbR22#AVwh@zr&q;~`n z6@;MDdl5qKz1=xjf8R%*``5ePb?<##3pwVTnc1`Vp3kl)25YD(l9L`Jg~4Ft%1UQ1 z!C*vK7>tmHcpvyArE$g`2HS6MBQLL^EHBTl;pAXxbKL?4QwomMA=1_Sz>sM0;QoCa zf>?>9oPvJL09UVT$0-Bji{TI0GS+bSyS;_kxfQcT9;`_7@HFW5!2&res zeZ?V>w*qDrO8e0x#CNtl&j_%YDNJ(CFYp|76o2c6Ge!vCBN7s+9BSBR_8*~=jf#`L z9qCDaM?YJM`@@jhhOEj$C6}za48CR`MXJWZLs{?HT4%MVpD7W(IMdDFcrWbY*MozU z92KvpVOY8+Qc}t`;RhG4Ue}eyQs$5)F|&~52)}(YScd0~lo3&(`-owhW^hS;iGE0& z1AiNWe0?7o`H5ldnMb5x-YJ!jmai5^i$23ENlhq+iClA)0yn8$ND3vCA z!7(~6Mfr4iPVRBB!&AvgHniaj4X+L_%o!u{*%uSEol8bzv_^NsGKIZ|loAQr}&6@}ZpCRd+h?M0t z%AEMsB8F>ICvT9+8AqRSfajE^3(4g(s0*OuG(Ut}DU+JfM&1}y5bwUDYazAjL`B%n z&Lo6p3A-RfG7P(D;BF+g`8=M4(2$+50|kq}9Q%g;D1nHXhbl~=pYje8bt+H5`ieG; z^vQPpeQi%ygdRa|00E!V8_hcla!20Zs{BTf_Ex_4!5i9_)LS)@j1-6NiBVG2ZdSHY zUaPdx)u4U;`8|>JiIYV9!H3^oF*_~%$U2;PV7o~05MdU^v1sr@x3^HZ!}9Hv+iumI z)vjlV2A0n@ON~)p41=@Ym%XeN(lBF-=|ZVdN)fNzn!JCYtu7QzJ58~bJqyEk5M1j> zEuz;l-K^Rw++X2+@R;OlvIAU{oJ0?%{0v_WU#mYS zHal#+h})5b`KfMgZ7Eicam2z-_Y;QiL^w!Da>F{uVeyjH4^_w_B@AyIuJR{Q_4vFW zb2J<2Cd8)GPvRrTP7J4J-*@EZWg)n>9`Q;s-37Qvm7&J|^KYE8_oWlXy*ZUlHc3b% z$7+q_sXE|DZMd)PjZu-e#2XbHK`%xIDW^nC{)98|&H=N~(;S(^v~!AQ?(-fwq^xk_ z{`Ir>-bWmG@AHgKFF0MXfJ5s&e3;k?As(K`Sr`$d#5lii?Y0>&eT#ys2D8hNk7xC) zkHp>yQ_OAtU`<^DGrIdYITC*;k3kw^d^RhY6|a)VNDwXYB0R=ijfvLWTv+$u;{fFx zJzWy*KrJ&-T>_s*og9jE=8ZeFHzXRX68b49>K-~Ck~xqRAo!+jsB~6;lg^Lc|ISLk z3CYQu!fzt_<@>4L(Yz+nB(A-EqMD-GwA#kwu>{G?owHA6njhl{o6L?02c1qRx?L1e z6yAQ}I*$zZ@&lzK@((yagwx3nJ|I=9edhX1`Wg3U`b#`xw_;0TV`9_vU+Txk>e?mh z$8_4~4_(vwn)qrdBL98sRW_&nG3trujL-F|*|VE)xIft7?W8lf%f=P)Kt4w0Xv$X& zHO=XZy{Tzw1~0wS>RyF>9eo*c}ZaIKE+#E!UoA_lC_8KzT;DU{UV=R#rdXXgk{Xg;ZG{D zJ^EMqnfVJCbZj4M2eeXW#OarJx=dZ{6z*K>RLOIeO5Owv3saU9q2!uisu zFl(~G=MI-czB0a&TPMpkqh8vk)i-}?=5Ogq>w3|ZoRU168I>-km33w&+Bit&g+p>v zbJG`-7ycSMf!isj+%>v2$QlO9v;%Gy?cTQr_F?uRZqeNG-PcAgbKt~&`Tfr1I!vtx zdc~?kS?&$qd%_w+Vg+)n3BBIkp z#BDy?r8*q6jx{goTr9GQI?&V5cj0P5XZnXpLizAFX2ZfC52P?jkGvZh7;#$27_l4i zWhh`!W>`4Btk+%mO!owT?r|N10^McZ7`@P(SW_)K*Sgs2pYj;=v+`wZw|d{Ta@Sfu zQBC;dY(QWTW*1?XKP4?0YlQB(T6(_JcKNLL3*XGGa~t&(FK-3i!ab=Tc)&T1ALDiE z#<$Dd6sq>V?Q!Xy$*BxAGn39rbK zw43$0$T738Wf#eldy6EB<_-A_vx=L$&-7T9wv?8;xw|kHIXG2*lUrdL%E2Yq4uzyd zrF_kOms?-|k*~(~R-5Vz0g=bWw>=x<`dNpiyGolklEYKfF->wwvc3sE&c5y&GHiB| z`a)hC_&PrZKf}rlKi2L2JNtL|w^`vM@NV=+v?As)X0wVF)1e9OGZeE1#Lx5a~+4=?bjCVUmR@rX`E zf_vkFu}HDv!J|Eg<*yD|ED@H>CRb?L^Xw>ZXX7ffpU&1i8a^8I;+i_Wx?RGEklkFK zmBJH+$_sTV3oi;Agp!2a-_^vV#~4^0&OKq3-%t==e#LDxK3lwWj{-o8n}LcIcKhU31Rm4<1YrElAQdMi3w z-(7zy>v?))))a5}u`Cm-eEYSMrip-wEFGlQWY?84)49ME<~8Q5>!jV6b33j&kBz7s zoHekwBk$5Tu+h{j2rbHR?D{hGp{r@Tdh_|Upysg8tR`-E-Q6bd_PM5hOiR61I5%z4 zVx3=BVynKMSnqvnrM2yJ%k`d=$}AVzcEP@#LDV}8GZ80c0gKt8)U}rNHu9jcAeCzo zoi_Q>uGJ-B>tENGIjI%(5Be}uu(`^VR>p$DFOsG{sBROLVz3&KM4PCM_rm2nl{QS}fD;8gKSm6$|g9 zDD*67F`h5E?BB8BB)@@Q9@0T%#upv*S!xh%%nxZx&MNFvD!DOXx&A54VAG(uSa}^c;)=GZI7V$l}+rt`$pf2tA`tlH`8YJ(#7iJ(s0jk6PXC-HGFJAn%*r ztl!Fd+}qwuG&A3~R4%x7W!1DzailIc>5`1}MBIGLV)16kR#aeCgvrd(=*o&p(WU9C z6xcqZ*hs>vxC9vP5*%Ao5qd(cgN%as>7)q})vCH~haklr9+>FthIA&gUr#sk%8pyR zpPZj+d)m9tFr~$PFXOs!8o|fwKWTkX2=FBxkn`U$XwQw%hR<4f`um$$`0qs73F)>= zo(hSSetG6jwpBaL2A7B|?I!cZ<&?f}t3#~39F9b?y*q@AhwkU=Jr-310mxkoU1dvE zRoF3bO$tjDZXK zfh%7+G7IK!x4EqAqN{pA!rZ}5!1StvnT3Fdog*|4Ov*z7T-sT zadDIo6m)lY7jPF5aB#8`6c!g37Zf@nc;W;6nW@#oM#ZvF32EoTcSc?UbNsEf>R zf&Cc#=gl7jr39h9|G|szjNbhea9V~`O7NG|WJpuK-46zWWU)D`ei{4*Y6ks5K%en` z{|#N^$xpn$B?*I}V9ICZE_=Wydx(lyEnR(PwybxogHU}8@b}konsz)k8Jp@ zcrJhNac=Y(_4S|WubFR(?;6_bRG*bc!{7)cF%>&%j|-U>C`$NZ9i5B#zduLp!_JO& z4s{0E-j?cINn@E;`n2MOPOvH$$3T^IO2NcayD{)2@7AmNW__diJZ4-)=^ zg#RGnKS=l^N%$Wm{09mDKZ68zBTPz?pTy$W7ak*60_~p3Y2vFOoqVqv4o4^uPM6M9 zIL_5F2IV$Nq~V|Us(+{MZ@FKpCuo>N^^N=9VxB+NAHOxbHlCJ6Avs-So)(oRv#Sw*oRQx%VYtbNv2pvadn0m4 z4P9Hbo;dVXu;s06&G^gSW0RF>)m~EAn_QeS9PYyNq%0JMDXUVGoT3|7mud6&TEtTu z`)@5}>1pJ}L2DWVQNG`tE| zYRJX*Q%cQN1ue%4o1fDK9FTSCCHWVAokSvWHVt}F$n&((GQM8A?me!fMSaRV33U7R zGYQqT#UJ@ApLglMV}gRQ?%Z=#!d}K;2#5j?%Lg{xXae*KUWhwo7nUWiyf?3@Dgm#y z4@}%gy+Wj=zdr9V5Wpzo)D*<#cRIatd!22qgz;atJV;N4s*^NGpyoBY^7)yvX_sB0 zU6I4i_Ll5C$ygwxSH#|&#?Av({ur)7fE-Dz3isa}f^=DIvr0?HNVFkZIC;RkOzB_9 zP61>$7LVUWjUgN=)+}|MK5*4+%vA2Y*(qP?^&aSP?@JgO?e?0;Fip!Sh#j(3quKjV zz2##^hq)I>aN=ArhorrHW)D2%QKyKrE6{rx^w|!+RJPFAwb--*|BK9j@+O0e9c`cC z`7#h?fgG1}Zc3Dved+%3(NQ)eF7l}HlYbehN==0l3ut+P9AtbcJJp@0lSO$jLBjP~ zyUQ2VAqV}Se;G;+PA9o1U{jSMNkgnCU!L!$W$Be}+EcwAL*ZU&3;!}Sn3xz#dm!%= z$s_*RM#-7mYa?+px9nyB@3NcEF-LAuFLUm#Z!e?Kuo5!@O#zHH^=ez?HvLGF|2E~v z;+cw#>Of}u_G8aq-TD{7#{pIELC%Q|IqzgRTU% z>B|jaM$K=I#-ZFv@(6KVGX)Cm_AC4)Y5S8@_R`)wY!zL(;z2-@Zy%EO z9&XgzWeBF2pBYsk%L8J3UYC3tEa`I{qe&qnE49|2+aZ&r?;Yvb zuIFuOO9ZKqhAL*;Hz+8^-%py)@1b2QWhv`&!u6@$?WOX}Hg@G!_Zm<%()YS2Wz@7v zIy{iHl7nvc@Xbz3&IFbhFg@ZkODV6Uu2?gP8)>Y~1DJ90Q|1x}dO9{Pjra&SeQIut z2YFEJ)EG_5Vs@#yG^^M4ZMxpy99Q+cEq)WxCn?_GGnSw30e3k!0Id)S;77;Jg%k`G z#<*LRGcI>-;tkvSw#M3OPRVv2cNcgO0F!uOqt&oA~3JBy=pfIEUJFax{EpK-K&$s=9 z%P=s^GI(J5U>FIYHmPcCOK^X9U*9wdzA2L_?6mvL>cJLjU}I=#nO1Lg(&7Xg{SaQs z8Exd=EOR|?>GFV%V~W7eZ+y}eLlVE`oAsL_!TYf$qPNv5GpY;S=8!IBnr$(#PH7Yx zbr|gJuz&+Mxcr7xV{^Rdv02e);hLpQh7G4fSsmJCfEK34&*PfMTDVB=yx8Wt#FM^@ zl0Q{I8ceWc`N9l={7mPuvqiOT=XN!7ZDz6SH3Q0@9};#}f0#|I(S!o5M^sFQT1gwQ zVG=K@hDLE9IDu%*rwH)*+Qf=sojeiKK;kfr2f%>2Mr|u3@iRyb-IpbJP*^X7_w`sx ztb4n8{p^%crFQu_3B4Rx$wLk5N>v!^oMZku>;b?v%a@%Gff8nL3YqoS4&-?I$I<7F zTY>3A8BkX2ySurFsd1O#-~2|Ib+yIcB26$*I(#}VgB3cEs3pL+mbjR^BveW|SaVqU z*7VMSf-buSYdIvYIjrDIC<#_l^;;;C_$#1sngATqxBNo$*&#KH-j+nTG#{@u$HnNR z+Mc{=pg8x@Rn$AK`l}0MxdeDYhqZw0HtY-+u9yLmYZkDTy&dECV3<|pxXBx%onzAl zNmK4!9M=ms80_lt+jJ;JvCq}yBv`VC#b{I~*jwIcmNx>Jq|-yQD%HvEvXP=C=ackd z(%P^D%xQ>v1;Vh+=COh2JKMI}TT$B!WCJO;2yqAQKy+T#K*5aOJUJQz!(1g?_g#89 zyX~Dzi=P4#SVrKl&IHjNWJIM1SxD3HUIb5ayvP7Mz}-Yxv0Nm>rZiGub*6I-nNBW` z^6S2OuzObSR0RRa*}@lBLaq;#L!g8+15`3F-*JMjQCFJuVOz!)^NNJzlxI9Q+!*nO$Lfm47y{KA%M>&8dhRs{YA0>A$)aH^5V zjyZk}SG+ANz2l_4<$pcLt$l+D?y_$X0vmd8u5}!(&vT>L^)S+vZY~}(Ju9!bE6eNK zswuV#8d`H$iLvH!)^mPHTB#?VkR$ zS5(A6?dbLct;#neNt7EbeCS3L3xs4h!A?jiR6igAmS?vy+^Q~}DT`a$$pA88g}aOl zu*-lYd_-EPF)v6#RPfQ(8SKlY6q2b0(20s3<0u3q=Kdj){hh8?SBGY-h;S4BQ_cfc zbz8GTcH`H;^Hg|kFiYY52EayQI+|4*esp4s0J?X%&V*cYI$!IFbn2pIB>^yw*VHl) z_>rQ{NK_sm%vv!`7>w{?cU*2Bs;P08j<8A3UOzF=PKNxcu9vUiGOfNM@Um7dWLObW z$mqRHuaew}rC;7@4K7}H?{-ehw&)}O;r?Sc2$#2;-aOf^?6Q;X+P2Qk9#XIDEx0$W z4tH_km$G+efIF3EdqaXBwYpZ91K@U&V#@l zV)d@^{^Q~fuo$d8N@QY3&;l1m5C|I(zI{oooCfgmk7vOrC{D0CXTnKiphUt}Ml`%Y z-;54E5B+1tKgXe5fFSVa^otI|T})3fQYjgLQ?R`0x>v}05D?2e_G~T|CJ`z=@c?B5 zhJWU@JNv&>|5)QGEjT}a1+c%;gHr;>Oo=D7?N`J_g^D_710A-%?UpJ5z-LJWgS`^W zD7t|V`I!NPdD8wpdqnA&bAZ@$5;kSrXf^Z3k|P?iz{@&$o_PWiQD38Eb zUlm}#4^FM*k|P-QMk)N=THes_!4#ElvjA!~0#sJ=hj|T7!n|_07|D4|_|W#naz`QQ z6B2eNqO40NMJ6&1QAiuXdPWA+fdnr@7Pj`)D`1N+6H;t9;%3+Rb{^*Mv`lStZVuz7 za$T0=fxHSi`qUtM4> z*zuz)!B72pQI)+_7tkj&Z>YVQ(q_cJ$d;p6;I@k!E#PSCI9MJ7M$-r*@5XY_c*C|7 zw%(NwE2)G@^hk1SHxlCJnskGZ=YcOD_0dKI(3}@vRm-Ek-`%K90Bu~xfKmsMPB)eg z9DmGBL=7bqV`A(nN%VAX<2BPNC1AYH?HVr?02&6@SneJM@Fb6suaG=mwmi?=;eBdj zd7o+2w&YbHL@7A1ihtLb!G~E{gt*F&5=Jg_3e~S@_x;w|0it*vGOT|ReVlS~j?V0DxD4Fv5=0R2BXqimaD6~w2#~n3Ug|k_0d$!EJBcG2sX*G7)#3mIV80;+ z#J{aOj^=|XqZf$sDXiq%zUS;<*K~BJ*Qyq(9S$Y3qO#U%wQ8zFkT}8vDKRfLyOkrwt)MRD&x3Wo_14fL3*t$V$VH=*A10?bC%?$g##% z&ddreH036td#}bV)z}C5^5|1l5=eA5yOjvTT~c0^MZhp6XjrE&bZUwS1*E3}9qU>E zhtvh=)Jg|ti{e^Y0o62Ar@!?Br=ounwytTLMMEK}0!}s_I@xc*a(9B#M1eC!i{B}K zSkn+?T)$2Og;g9tu@ohA?WnCE12O2mUgiS4uq8J1>I?-Kv7H{R0DO=!1iqmL@&Hpo zj^HrkZ63d+3)KkGil7PQQ*k_->))xRF*WoUR0ePN@!$HAre^}>edV5kZ7LC^@gqJ#Waw?xeF2} zej!l28$Mv5jZ!LszH)t3n^ZA=;mcolZDzJsM+t|{24(CptmRQ4%~5G zQG4Pl4N`CH`T$__l3SR-{zzGtYcy->{o`X?3kKTSNVdW{j~djufgGIO)7lMc6r-3k zA?6tfdX&RWKo08&yJPJEu>b>sO0fx-HvyxRR^2|Af5HphY2PY^fw>L8DEdl$5X)bJ zC3x<}C-h*vR(xzMum)Pd*%%-GG6mxN=}A{LtO{VFKu$4)YLOuMrek@T6jF)97-}Gf zoMrf;KHqIl#VJi|N+?!^VOjyN3tOcwgVu3i+=FI(^jGWIj6d|wM`lzoElZU+08>;& zyQg_b^qK9Loun1Kn$RfOCuJJPX7~I294gzIoBd3dyK_rt2H<&|U7?(4+(l8KhrnT- z?Jb=N@aC3&@I|+LnVb=F$fx58p?fZsRS7z>RNKq%WM7}rPTg`?@-o@F{x25sPiG8l z8we46f|3U^kxx8gOo!qTwp69zRR^Xb@p-~uy&&-Tb-=fFZv8SgxXTR@9V#V#z}Ll9 z(LJ3wV7Hj(kIX%VNdybqK0tYb;q%9*_HyFPfTgHA)jYUGj17q^zKQw_9)DJs<@tly zUsV6Nz=0UE=RQv`BOy-tp58;`M=(6f%7$l;$Eo6g!7d19m{EiobvMu>9{?wgN80bx zUQS#fSUpfmxr`UBX4VjUL?aPEhm?xsUQS#)z|gmUnLmHBPqy;k$ z&yFxV1o&?c_3g;?+9oENu4zTthgQdG1i(s2Ueb46f*Ivtjz*!}0pOH+BV>}mgrDe( zwl_Zvl;jkS%3Pi7sT*x&fVQI{jcKkkK5(dLDkpu`LR4qZ0yh;>+s&358Yx z<%KNqd}T8-20c3JCV%1RTRG5Y3Xw z`j8S^cR^Za5g&nC&<7Pb{X_Jl8Sg*qnb&@K+~q=Zkaoy}nIhg4Hwp z=w1^Dr|y6Q$J%$n^(^)kP`4NJo$+9&Jpzt3gqpx4*%eE?yC5#Gh(C&He4+~kjD=Dj zcgZglgPr4V0~ymQ^@8_GFbveEpD>_g+howa+3M~7cy;|}CG+*ONSC!2T3r`mM)|?7 zqEKQGGd*E4P+XzPP&8M4bRf2Q4d&&-kDfk?wtrnV1-T1`m>eEM*6Gr<=1KX-`lfS^ zpI2}F^zxu1@Y7|D&t54WDCXI@4^Q8Ulo>#qLJ1VP?@?arVIVD_-)(Kv5TW)MX2IBl znFm~LGw(G&3@4ZNUTR3l{q7%=+>@M(b(~QRzp5aZ4^puez*GO8ULpkWP0teh0Km6) z|6AX40e!M_XIghgE6XfTJFW^qq5^4*zrqC#RkS8ddOXuyKFbq{Be`c1f+RkB94Cx6 zb}H^QeNRuM*qsB6EBmj?7svvF^EcOUi6;SohkFo0P%$S#z4Tq|1d z-lWAL@I_Xcz-)g89`bJ7%YGmD6cQPp6OVznPZqzL3vw`(%Se~}l$YxqKw2F7y((xF z6{?g3TClK6HL9C6Q)2Y7;lt!^I_4xlpI0!LMP3^I7faS3 zCCkj3xV7YOHRV68l0-_BP-Y8RA05Yk;f1d~2rm?Yr?d!pN(~4$Qf!pb@%`oV_oEG3 znZZ$c$_P9pSu=7PcB+UfWmz`XM9(rK*cKZwhmVXn$A$Xt!X#!Q2G7G12EQ&{=r;%1 zEZKdDDnMa0;FvhUavnp^=tbA%?3 z{mLf&nM?Z>6z=>A3ja0UvM-)Ybgb25Mc}(YMsO44x8G%f{5A(e(UteErsL$mZ+tF$ zAkfIy`Yo$%C=lTs(EXvL910SuJBnA{SD06S`I6LhP~Ub-wEA!g308!P=zDVIRUq+6 z9bi@rO-g}Xz?Kr)v-&#}Z8pR?S;YHxVTJk-3nSmFDX4s;0Fyo$HY_PY_hij4WrpS2OG`9V_WKk&f5%UL3|UYM0v`;r#XzlNuAz*@FZ`+^5Pc~U`KfF zmj%Eu9bjk&Ll~s<$yIhbAhi|&q-6j=?F=Y#jb;EV{h7MRdiAZ4XZ0<;nk2(P+JQ$C z`>y^d_56|Nr)To3Dw_S82O{|-S8XzabEMcW<(z{vhCd75V9i(Yr$Dh1RS(5~_D4uT z0_~4p9n53Md;5Bt4)Wf-PFM&wFR{kiUFzTt+r za8k14QvSbB=io!0z|u_H73AU|NXGJbApXjxRrqKND1P{An*nMwq~Se+fKB~;MSG=% zrA~Yk8z@MdZgTbN&rZ6%#t<#`!$PHUY3z`l`|@I&o6jpkfpNdAtm)`4$6aW`B)3}F zJ3fYQlUcU?$o1D#>pujF+d}BXdpbwYbus3i(bhNb$X!9v5K=Z=*$(u~I-qJRiI5l~>IHYV&vT{EahI*1RCNe*f@o2m*iPUAi*j z8yH@nn+Ij%|H89P-2EA&NWtpyA z%1OtsjU@4~oc4+OL)8=9Ys7E88zt@Ym{_VViOY!mSzZ97mg^zY+CB51Ze)700NEFA*%Y4}{c9)-T8(MsREE^x?B z=)AkH4=aBLldv)aMSV;vi6KaZWjU~+n!bqKE176d&3|GHslGJ`GVFr}?n8D@z_AfK zH}FKVix8K_&l*Y$& zKv`WmijD5EzTcdE>iasVX$N%x(H8oO5XX3-v0%I-&5B7{@2_5Byj&E>u$owH3097O z9w-Wd$~$`{#VSjt=7h%E`G8?RS;2tHVn_dSv1#A+QgbKz>u9@zCZ1~i(Yjw5Y9O&6 z)o1$C?z7(p-bjLcPJPDf%cr*oxBfN#BjvF%G|+7hHYX@3DRjJikmiOMN$WIOci7N#`^Hs662*dpN?GcAR8$5TJzg%mYK(rZU`X9+3XVEN^;pm5!*U7> z6iI^uB6p&@PPEW;m|=_g3->x3B&$i6b7<5L z_bT}vVEj87V=ff-76^(6?r;J0=b-gi&E%=>P#jG{%K(L_aY{Q*ub0vZrK9x`VunKE zhLYSnNS7^l)XK{(0c%;vUTCO-1w}_+fCA@d;1Z{ZuRJPcK&43emeb;If~m=@1)%W( z$QM0JS5Hsi>z(M?+?%&S#7u}2r-LdqmoM}OlDz;PR+p1jc#M-FzF8BIAfE#XBLGA- z^ameb0x^{Fl}QqvpbdM!lg_%=0%~iNhbTV+s9YtT{%1nR`BM{UvH?+9?#^?YU<*bv zW`|tkY3T%`ve^a|)Ab(pZ@m@$9AvjMDhe-78(J|;O?0ltO#}iw>WQf@3xZ*GXroUR zGoaX7gwefO3@E`*P^Jxe?6~7lfM&I5@&bGjuMg|dgc%LII+g&#K>Dz1P1ZnGyF4v`%6;PU3T`Wm+UA{EK z2?Rg;{!!m;k?^vURyQUCHUj9iX;GsZ-*xtP+&cb0aqBn;fYLE`qlt={xT*FlH!1E`s!Cc*J{?ZjE)fCFS@fbdwt?W+n3wC zf_VBnTxG|RB1X67I~|*z+2|czajUX9=fE$4={jX?S~&?WSf191Yyl7_C0{Kct?J)Rfvq7GR< zN^&p5fO1OYUOEaWl%Yel`6UeC_$Y%J-qHT0b>-G6OgJs7DRj2jI0aT>r@ws!=ZO*P zTUGR!E3Ov&sPBpX0&SQGf8J~r~7TH3xJ#wM`nQNK*a27#Ltp5JzH#i7! zQ=+@T1#uc2M_@94TwvG05g%bLT;~Bnh3}bh&L90IN@9<{M8dq(1{Od&%&GlM9fHS; z-Xj7^UiojYMm#*@+Z4V|jq-nV59F=?obJcG))3poGqpOkU`EevUPYqFfF>DSA?Cky zrWsa}KI;h*W&tFlJ@nJ%V-fLhZ;~~!6|DEZ+qDm)pvV)jTd)0t%ugMGrbfEYw?+A@*=O^(81;Yp)v4xPq{^=F1nW;m%B1h4PJoK5~chwI+?7sJH@< z&W*b*3qsf5yZ^}sA$Ks3b6s(yEa<5E_~jxqh5?{dVZTPnt7naXkAY1~+MwiRr!MVK zxxv83>yoYv>roX83Wpr0|7Gcq-n%By`?K5ZhQ9}xA#&cPEXBON%POJeT4lXwxZwg2 z&eEr@?=5(%1Abk@e(o-Hu}EC;4JZfp&uOt^KvFMg3pa@XEB(%r9>M8@4_adt-L=06 zPfjtR#5jF2S2plH>H$sZrTPLM_Re_Shp-aWcS(PhQM4o&UOd$OF^L0h|84ALD2fc2 z0s}|hp39f&vI~7-J?XP+JGS}estEj!dc(wDC*cJ)!zj~=-klbubK}}IZd@ps)c&nQ zPWUv_aseUEnKWtQxnSOVgeg8UsA2BIx7Yd;5K+hVHvYazXE44|ymnIn?$Yq3g&D&Q z6ekX?-^?!=SiS@+*_Mn6ni4y;IrPcDF(*yEtwN&o5UJQi3Phx(au?(w{F6>+;082x za6QjO;2*un&_Qs4IaN^iu7-q}&d}5^Q8;W(Wf-m+Qa(>gl;Lcfb1Su@F6i?O=`McF zz-mi_isG`}HNgK6iVNr^=@Czf?&Cs-d6sx_;*bD*Xf^msECBz^nVJ2a%dFE*ICg?=`;#U{Crn#$zIC^ubb4186vfc{-Kh4rm^eWp0Voxa zZ#ndeWOF%Uv>H^>zjYq+7)dn!B$)oQleUE>+NbB%z|)63BX?z{)@y2b7z}uSCJH!z zci?vaZwIcRkl*k#$1eI6i-6;s!GzU!loj_%28_neFfF&5#A~j0yItHe$sXT%+Oj=L zv|&#RAn4qbx^MbWm?#NWmLVmCmL9*_bTPrS|G-vttcjuMMQS_X{jpPEj?x|?Wu!>D zZ#(ieI4D5DTQL47rbBf$EA3+d7pmy3y6NnTH+%P+{VX1WX36g@JeSC+tup~C6jx|< zmYXZ(e@=N!eyeFip@t!FQu36PwC}lT>09r%q|(bqoQj=|jCS!xOS$d&ag80TyzQoI z8%c1^jR4>hbZ$Q~-}Mfos~$m4ux=1=g!$3Npj$iV;xXtv!~kb8c{fOU%!p?~wfVPn z91vq`nRj*1N2#OSwFD9;z9)r|BX^;CxRB1EyhLERZ>t{vex_o@n$C$zgJoPo;J1pq z-of9zg3PZSUc8xKxwLY_9}?+y(bG)zi~VC`O&}-{E^eLJx!$&OVC9E~MN7;LIKIiA za3YUCVR~hCcrfHgn>NZ7Xm(3XI9byRh)=43^L4yq ze5woJ+Xa}>%zSfc5~&r7pK|8FYd^MKv=p}_LnP36jO2{gC|ABG!foq~(;7rX^jDK6yYpJ-ofur{JN$(@-$>D~(yqiFyQh=A1@M8WPUmHS`ZC~Y%lNboFop=$0iZpWt3 zFV&tr-;&UW{8V>v-met+T7#V+i;PtTqUPRhjv%#XJs}NZ9NLWelQh%q;jU52WqcFc4gZ=@oVn%%KnIe!n zU?r1Bq(P3k(tnV0;H_`trv$0huRYaPVt=@w-aOJY@3!V+4O?nJ>Ua==j}L|zmI_)M zGe75jJ>BiiD0PvDavy9dei~%ts-)`^Q~UFt1kjc7hV##Xy)Cl*YB%sMcXO2WhqRetog z4G0j1K?e*MJkR?!P*N?1qM4B~QxM#J(`WMfcGxu7;#Xh@x*Uz3m>!LUVTK7aS$(~W z2C6^A)JQEXlaBU!UfA0~UVm7>@-^|9%?482QNoW+hn)L*$5Ld=I%7*+Bj6JA>xbsy~ zLj6yNF%$1VpiIVX)wUR$V#VazmhQ1#c$xYx)RJi27{k^teXg@Q@z6#Ign8stbx zl|ShF9BB8m`X=MP^F)@!q#Z~5J4c{XD1GQ0tG7bt_``Q?iD=_DzwZ61CfxT*MJ`Cq zG&Vf3YC2@P_-N=g=nky7DY-|zstWY*9B5>AGRpi?vEjp+zTH9pvqf4Tp|0vJuoCIN zG`=EH;(#yz`n2WR*?hnt_WL9aUZXuiPW`nVC4Sjsg{O#_uWuLs?)BWTPdqeTaYJ8Q zDa%+I6zHZB_c%5G^@aeG_5ZKlkbeeZ&?o;dt-avxA{-igMB+tO=M8PTrb;|@ZMRx} zt9sMcNch0VT!#d$-v5x@N2=%p;Zfw#c!)0cfyV-5%{Fy{H;)0CK8=`>Og z?8@?F*Lg2j<4&^BD62kgc$^IGa{S?>7aIbf*;V`i^#C0EBXyZJp#6~sdRdGddTT6m zs61@jcy(UeqjQ>OeoqOsHI zW_%YO|A=om-5`u&LGYx>zf%D^r%qnapke>@nl%h_7Pub4`}N~MM*A>GIhoyyNMSkUjNfsyqLT~ zlICX_@QeK4$tL^C`EAFJJIu~hR=qx#b*~Jpfmh=6KuP_vvRgSNc*$?dQ2CGA3JFO= zIw5XL5{cUin`Az<83>bj(uGO`Wbz87z}DYi+_>G+N`q27ZO;$77w>?OAVSXeAq>Nd zoCewWDBvSEf!}1L*yQLeZkglYrMc{25hU?R(ElM;HAe%0mxC&LZM02(r=rF=VNud4 z1r$rvepih@5G9ePu=x08;yIgoB-59F1LU7>!cZzv_4Aaz`?pRHz2L058FKu-Bx8Lw z=qSAKdcqg9?bwf=M<@gD{~=513y{oJ>TjtmJ4DfQlnpg=TR#BoR?aQ}u^K9b7z%XjN4Sfv_N*iuNV6~ zcMx(U1!p@=c6eA`58(_sOUXCY+OKvk{XW*ff@K14q@LavyoMSe+G;HRmuRFk6L3Fe z807r70&74!%9)FUKpQ{iFkCwiGrChBM*>u(ln9tTP{5eT+T>^1OgLQ34V*NJ-R%9P z{=#r6#=xm0N-QOa#*%1II!=jqp;si0P_QW($QyS>a+|DNDZ&p27vEGb-JYEdu0;aF z9%2p7T=Tt4oX8Q7RrH!Zy+H@eflCx%eCe>S0NCE2ec-GBMW!`YVgMiU&_G_0)Z5ea1gS&;gB@py^3>}>0q0O*v0YQvrqf0qV=^bH?a zxylY}wPjx~`(Z+WFer8zOiD@;3ZopmW2wL9;0rs$Q+_(w#>_RW(7(*fM65;k}OJxv2;f_USgb@W0T^Gqu zm5r_fZ9(7_0COiTN|4uG)U#@VG<~POH=)WvbjhD(Cni?uiQLKaxrq-R=;ab0l^=PA zyTZHBjlQZBAob!T(}}YI`-4A5*WEwMd5r!9*U99aHP)SSiH*D!@s-5J@|E;_*@>mW z%>1T9tzKDO<*pT0Q=u>faXTjpX4hoctcj#T^-nR%KF)DhotNttS<^q7J8EBHmw8eb zKK1c}r3?k=QJ*?ZgHa*{?OINq2Tmf0&noq=wB*3n&-%lBr?ptW;c4R(lrT>?&@jX_ z$??S8%YlaREGYMILY!zf^Ks5IFgTKf130J=!Isg)?ESZ^x&&(xc*%zdymAiAOAukr z!yPSm9S~GbPQpxuVh28`%Q04Cc`$C0adoKB_4CT@Hx-z8Z;RvTX(iZ{{1Xh=fi8FU z>Vn0IXHA?H#wNZF?ysEL;dzt+`w+zJS3nUXPvN104mFB>9x+q48GNtU{ArUZ{;ln^ z>&2h{Z+F)uIx+luXbZk5t`pD8uO@N&4C#J)IFiayy+5tE@8eWC+cNoND)p#J5BJ7e zK{E;vN|mh$0*A!nrzynj=&DjpnTTfjP55Gupdr8aqrM(x7O=|{QIlI7=tf3HNlxIl zoa`e2kD@maWLAQ6?kjvkEAO!8&%7J*n4WQqPiBq(+QOh9hbYS^*L znZ(yt0VjUxHcfk;Y3}iu%IdZ;-<34p(#WIVy3P?mN>p_S#+|q zEqtp#&K|E9Mz$^eVPs$Wyz8@b1Z+vwY2=I9toV?~eMI=RFqh)`;Ik=*}%28}sk=txz+OT0Jg4``+u?5PvndN=fujs zE&@D_CP(=1EQK4k&s&=4s8_s9U~yl*_-hp!TnmGk`w|h(*IrUHmPM;C6N59@Rd5Kl zd0#^3P+V|!tikid{JRvNEtZqhmpTdqdY(aWl?N0^bghMg6VDmi-l(!nGEwFacUS`F(uin=_ln|##i`vkzhE@S@ zkE0Au>bU^;;{XeG0oV_G2J@QadKzAPBL{dHr_#fd}e5>@4{;{PbFagGRA?jSBtajm)PuNxHFNLX{) zSyEqL7k6ynx>U>!0em2MSr6BEfr~&6>xcwkRTq;65vstI&BcIPQ6j}kE?M){xpScf zQpE>KAi;qURDByMugqqeBL=bQm5*A#i9=q{1v_j5pyqTK;RXF>5Z!7hF515;l!QS>I2&fty zy3&Ti^Ftbfre;TeiK7^dsZ*ObPQIeu>SJ13(oLl0c0@ z!(wN4&zUbEVP!O$ngfkm1pG}F8@i%7AW+ehMxJ z9>flS?lthm7tn)B6j;f`K7F;x*3VlQku%WQHN|Mv`#+v&x}Xo2#)h1-3Wjz%>fMxzZ7&b=nQE5-{&4jNmEwc4mQOTvGV_fc#Uy46a~`?-0cw$tERMj5xs zE-)XbTfI>$=+twd#z(sHr9Y#15&0hCu0!CdmEnt@lD$;&J2y_-)bJN2#JBp8gT`|c z!^wN#zYl?*gsd?PVNd#hvG?BbRQLb?xJ_h~BwJHO8df$f6(N#jrOd3d*D+F784;3k zq>y=p$T5quSN1w~4#(b(^?Mvws?T*@UGKktx7+t0SGVh&^LjnUW85G2$K&~U7M%Tl zLYGK;q=Z!^_aUtaW%WD4#`sXBt|JN+oHs~&jp^?<${cTdhy7)*iZ?gpbT~yy+xjVL z7sJ=--;MqFEEY?C^NSRN7|vg`D1aStPT-hkdbVXGuRl5R#B(r=74F2OZ{0RG(sw?6 zI0VTXF|J$Vencb(bcp=P34*lkqyGLch9iKojtp+t{n)`EHIHyzR}HV7EC-;gi_Tg> z?JJ=WZTlXfl(s(ot>;|iJq0&=wo_x%mip3froC!@_lX)C7tNF&0PiqEmf#m~!=?1n z^U-g03Y}EmAK;Be9NmH;Psuh`Mz|bTCvp*z=^9xHHK9sJ-4C{y>YDKRi`<$d(wl2pFHY)8xuQ=NEuUi*G!9Br zwdN$4I}dh-qc>Aunqdk$=7+wrS-#M;$orC=v^DQ`o(%oU-5tXR7BV7I1+8uqNcu$)4*4>>AGom=2}kSd|YMb`#k9hzjEgVeM_%7G$;cQ z$Q3`zlcfCm+?wCq_gY46QCV4nhkqa!>o7BrY0`8=AQp;BWi1L9ZZ;)6+OlZKl5g?y zxp|RaK0X{Ain6YIZ+U7SvMse1&-Fe!mLyu z0U86+K0^mMFsKf@vM|%m0;uAve7>{NT=O6aB6xI>St`RP9V^oU#~Q8D^lfmk>Jz%v{*_6R;KU*$#1 zR%4K!KPko{;gDgXy0tJFN_}0H#i93Gl2^o}3~Tm{c790tfk=s+!Gugi@H&C`QbAw1 zYn?gfI8SJ!vozdro_^u)3tzOk;oM<_L=32FeSGk`IbA!S0aX_df&d`ywv4(sj}$4s z;$Yy5)-+A#c>_^tf-=YuQ>SWVU4nsq&p!tvetZ4RrC+meD9&1%?CEOjS5*`>h}0~= z+r@7AAmu|O(0$7vd+@<-`9My|w^qYdzLD<^_B{iPC!ks>!*Eo>Ba~PDmF}~r%qPRv zmwJn*`RhWrM)Jo$RyRRajS{^A_6OyY@ZL-fI=Xs&HlcClG)+vcv#UHV#NAFTV}88YM#K^OIyPBNA(YS50Le%4ZDww4SCV} zqGr;~wA<`=DuWNJ6gn+n@1C;y!+U=WXd7C{=#Yo;YabW7-|RD$ZhP`s9d2ga`%flk zYcPEYuxgQWRqq&%DidojjQ7|%cVrrTx9cW%x~@pDB!4$lzorm02YM$eebI)&qnmO0 zd!*%C!`fFf0izQiQ*I;$J4e5j`;Q;PW1fJ1X=8`97>HNNi|}K-NopxKUAPI0k67wy z+mMAWEdRdPe@)tBVlTHl#^M|_Ynmt9ds2t*gK1j;y~}V_XlA|C>IHg_T@b4M$M}DX zTBA$iEhny4 zYP^%w-7>1Y`ET-wF5|!K`@syoQi`P8ACgg}>#IxQQV9GHyl=+53|5<93Xgd=!lIY7 zwWVwGav|og_nBh8f+4P!rQ{eALg$-fvB1`50JK96x0mf83u{C|Gi_{osS} z2mzz2uoIdjx=sG#;~Adpi1|hjlmXrx$$&Gvn)1{ZUYH1Ec6`@O(WPkO1d z55hM$mWt!-g%s5IiltFkc++m>qa}GC`uqq$%Os>+{|v z2nss(qXLFCR4%n$4%H`eD|X4T_rr1qN^dwc%A8S)fL5V>)##&g+A2)zF^$Fd$U{%x z`&!Zd{+_4KnJ(y|0i&D|pAs+-G$fux?zV8~9)J9mity4H{0 zeG@xdBT!#4nuz3_5AH}BZt*Qr%OnOo0Oz!yNAIg1*f2j#HNKT2S2pw@aFcq=C{ow%$pMY3!u$p zk-5%bsJhOs^{lJ1B^NCZHA9y-ZZ&{Oj2I(~uFzOnBH zY0Hg^>Pr-%PiUC^Hll^p8s&U@+&0%e@{RADx!?SbuxhL^1XQ5Yw4~;lV{@;K-ljE0 zz1}`b*oMg(J*}79V;2&x<75(f&yxgeZs%uyb|Sm!Lg|}WD*|LY7$~uuus_0}*F~_c zHZ8j7DMwnrCFplrRywe-GB@JwD(xVS<5>P|CNxB|>be+EJmANBZd2>sswt}Q`vmLq zg1-ocfj01wA4N@4Re<>9Q5c_nA3rNMmvzl)50oR@2RBwl@=#DSt@$N~VQiHh*8YICV!Gf_ZMpN0VuLN>72n_eGL%tDMG1?YK!6^-$LYMDHeDb7R)oBwc zqL-X+Sk4JilIoB!EYDRV$Auo_+H%s%dloOvgYo5QO1L&> zN4w_Kd|mEJb=V0~-6j#NZM<5t6$A!e>8EJKQT9c<4`21ch@F0ijcgX_esCTZB63k% z-HM!vmhRgV57t!d)%4i7{YL1ni~QQ?8-fy7`O$G1fH5i~5$3dq1*52rfx*C(}MfXQ|7P6(E@hbcTp~D?OF;>UdUV z@9v_-!{J&7qQ&hO&F5J0MxuP&i;Imd?__1O(t}zU&Z;%$-~>{f0Z2N zFyQ-|i{D`~Z{&jd0oY^}k@2aE=&M3KX;BOH&dQCNr@hyA&M&t0rrVonm1KK z0o*?IYL|_V-IPLC^XEUN7?)n3SG~Oih=9Vi;Zk`V*Pg4nk2Iv;z8QJ&0lRj%_q*n1 z5o1nguNvi7COAZb#nuQNyvS`zf;V|kc)~X)=JM!##Ct69yx{Cz#FC(dF;Mn6Mr3j=dEd5dRz+6qpP>>3{K=X zDT-HuCS$=HEacd-GQ2&`N;Wp;85{TMDq4-%NpmnnQS2CYdO31+^icy3(nUq^g*-ni z|J(e9=nWRS{DmF}CfUUjF&|WV>~wp}qRu{y%Qfv&rxjngRvH_}yJ&OqN^%_UCqL$s zMYa6U+1COa`4CfwjypXb=8Iov5KhF*0RM!MI{6OkcV0WN=&|NlTk&RAW zUx$L1Exm`@3UZ2eF&jFAnm?}dwJ-20VC4kK4{BPEYE!!^YdLSxnSE^9`Sgq!E7}{O zgqyf1Za4n&j4p9peY*|UzD6Q-x0{qq>vO@Ao>FKPzLl^hC;s*6w;KWSYJ!(>m_p}1 ze!O*GS}ukfJn=herOy_LYv9=9waHU+TWB>`IQQB)wn1lHvUOK#>R8*u4&nUT1?LBK z7wi??GA2H~$;LYL1o2T1g3cMWZrO6juFv1K+*}j#qcgnb@Wdwxw&_kj zK==uP%bRn&kmAxky(kBLJLgUnD4C8*)5(YP`%{zD?cmcXxOFpK3l99C$IeT)u-%Ya zn=Z}H4WwC>`&i@~Tb_6vPf=8~i}OZyZ|CNX!!6bsHZ6~ec05mx0tf!OzVVyUiFowz zYfQp80DU@%LRS*;9=0L8;r;f=X}p&@I+POK$!k39VRyMV=v&v3gyZNlZy^Ti8jtJ$ zd@M04vv#qJ7EiGO9zXhHW%EL-CH{zWa$Jgs&0%%r#x92^Pxvt#Xr%_WaXcDRd%#%j ziG8YTOVW!Po^oIF&juFHOY;oXys(thMYABT69dxnM*i=R= z(%NZ_S=VJ3e&w9stmc>pa zvTXg`!8>n2^8B+dA$J`mAx31W_7b%PFIV109P!0q6rL7!B=Men?e7yg*N5E7))~_x2@Z^&87fN~XdVJ+w%>&@-C+ zLS(vM!$?s4aeR1atn%gF`5l_O`lFSk$MLh4^VhnSMowTw<$YJNk)e9I1I=BR$ExxPQeayzxkNS@m%FjUx$cF%yH~tkeM%>I zv-3#nVGb0*w@F*#v$)k7abA*%^6K~AI!{Iih>wfv(Xt6YEAEdN!;htJR9)>R5+~!LbCWpI>zp2M_Cjl>9`EDA!G)2G zMd^3gdT#BBkYwW$j=eS5DQ#_!m}G34iRUAx_1Mekk@eAsPA zW0cI_7PQ^MDAFFcn2z;Qmc~56E*u*ty)CwAldIAyje@vlR`E+48S%RK!&!lQsy!5E z`<0WoVk^<(4D(ZlBv|%nJ~X5qpEFaT1%fcA<)oD_|Bl{?NLUYe_1v$@k4k?@mERLa z(K2c=9MAjq^Es_`n_FlRcH1XmuGCU_*vPlCpKJzP(P#Mh`dUTal|HhaV#i1EZE4}2 z7EM-yp*b*a_sZ$1;MO+ss?5{24b4{aAm0|Mg%*i&=5&S;;XmoC=t8+H9*s+vXG_I; zi+#56Y)!Zp`J(?(x;tHdVKgS-=(wW;XOU~YSK7N~CKWy2XRv&BVS2ow3!=C6a-|mn z+D2F?dM>F+?|jXBPBj!l#K&H}c>3oy^^VOJY zxn!0BAs{TZxsSeW=p7lI)bB&n3=;C`W_zjd9g0NebI-on!xuDUdh;#1Kfbs0N#fKU z>UvH=vKP|)nrBUHSUlnw8gzr4@~@n5%2%QF&1Sc4zW#mhOV-`qPfj{HH`?&}+r(Sk zqDn!<=Rb+mIj^qA!%TblbId2~L`sUy=bN8hfggTdZ!j0orhIsO#R9J&A}N;~r+2H} zTzSF&6VNOPViFsCM-fMEST!n3_MD(uXtf8EYa4Hf?%IVjmnpR%PxiQtZt21!7;W+| zamb@b7DlgXB8rTa8ylpw_a*kb0$K5h&WMfV`QC9Po&o~dd14A~y-anKtG{#2NI$mk```Vp7&_-QupbI7gq#)j@4!17&dg@}rv{Z_R? zZFe3M7@9jtU`68@<#M6qA(+G|@hils_^;{qb>q!RAp|m3>$mAmL#R}t=gqOVIIigV z2f&znpr(8efsm1rrNIvF+>NY^8WUY2?_sVBBs@Hb!=pA*L>?j&7oL0wTm}QJX3XFI zmCJ)xH`zj}7v%_pTLB6v*O6=x0^*Z^k}pvb^FUrGI_f6H6PZuc1wd?n&&$VO3X}2< z-(oWR0%U*~Mbx`Z0b~4(Mc`{R@tNH)bM8kZgrHoQiyaQOW@y2!B)gjLRKW1u*?=#z zs5$rsqI6@bnn)2P$QJamjX&POI5ZTZ^baB*gILlQovk=HsNO7+Y1e6z_#2%KK>5+$ z?`wof_Y>+DibT~3xlrocknfLuvc)Y2Ny3-LHLQ+^6Ikq*JWjqciaX$54sk08qrR-p z*Gq3!(20)+sjj~f*b;^=o(y0qsv&eVSF{4uUj>}VwMYWKa(72S!gqa1*q$Ffk<&E< z36k7@%@M4v%*8|aUqmOp)NO55bu5uUdX+#!9AkCE;D_AGJ|qH0buadwxLt<&2(16P zf-^t(`JEm>aa979Wx#J+CpuCAnFxiSuf~6B91>^lftyLJ;F6ejk$p~(-lF1WfUMqk zHe!&r47oc5#vh8Gb-j^@MGaAiV+c%KpC9ZmuR!HlhNBleSOg3&L-07ri(K&M`)gL3 zB%sP+U!F2Y%0>gon+299QkV($kcfDdY~J$?T-x&nHJICN^|aez(Ek@N|0^qz@u2@4 zWIEF62OyGr4gp3jA&-8Wbx)Ob0{|uE0 zWRt{98RK>~MA2hNZUou`UA91v9ucQJkJ{3k$3(9z30!aqCouwfvDfknpOW-?w$13b z!w(s4$<$9?ySUv8Ac~+VhR0c`NS^Raw`y8m0oq_NcX|~}G4<4EtsMm2++uHk{VAb> z1Qb_7dg#EHr(0_BgYF{`nNLmtL)|{0MNdpg2HxU`c~?%Twq3_XVe`(R5}$p9)X<+f zR>)mb#b&*(5M}UrS;A&nuz#ZS!&A37JD|pPu}PNxxsZo2HY!GLce)Tgaj-Ge3ejR} z0ixeuE}KUSo3%5bxlaDaTR}7~$U`pU_FS#;t_nXWAuQ&f=*kTTf}jEz<}52k#sAJk z+$jdBS+}mBVmNB!L10&b@i|LiJyW&wa~e?f=LF`n7E`dLcYoY)22gbDyBfj43*1jh;69)*h^Mar>B|c@^wbSR zh%)`Bw7A!Tc@(baM99VZkO60S2y`SE?&eViA}0L67#++GI*jdjM6aqbNGO=a_nW)Y^QLQhkF%w!Dh$NQetYvw8wAlV;n?nf^vIl}B zJs<~A1>Q2#{#@Ob@Bf1|)$PDW-&kFmn(F?zPuU69WBw8xWhU7{qCmQPa*p~NP#@si&*z%sdJ^(tTI6$PnjRzvP^c=JBzbD%xDRq z+9Z)8=0UFu@8iXKW}745Io26Ssk`;BI z8cerVaKHO^=%=>j#}H8I^PF7~lA z%@LAYc?YMLCpZj-)ip`6td#60wDFRm;v8>zw&u>V1Iwm^{~E4NcOOxdEjhOrRjI!9 zx@vgBiO5svrx2Y0Fnlydd5%%OE6XC(^R}&g_mDy~QD;O_jRQBd18VAUi>2`OHNel0 z`qoOcl|N%Sc&|KQVWRil^@A)@E*}A$!7VniJul@h5fIhe-41svu4LYwkuwZur40z? z4-XXiId|-d&G}Y0oko%T`DJtI{jtuzu>D>(S;f z=ZGc-Qoma&kTtB#S>2!FuxtM$5_3W`XSvhS#CW+oEpn4lj8&@s<>~WaWFo^=GXj6F z5k14;aQAZJEuwX4NSNIsLWmJ(&%_c`q5b#+%U-X{$w1v}OAB^x6L)jh-)w1j`!T3b z8!2dnP4P*PQ6@?YEH&v&$Pa;q_*F@jYlp!Qy_)VwoANFQfWr|em96}8J1|e?Q{9c$ zu)_bR1{mB}j%6M8GRs3cp;?E!o!PlLfhYx1IcqqkP!$iB~6`Kz z_?B%>-z%)n+Wn|2G@{0Zolw80;ii9tSg=29p{b~c^hdrLc44TXB*Z?3ubR2;%zEn0 zscG1#)L&CAs%ES16q1gp;{xy@`aP=am)3&B)G`-d1c{+B>z+>BiBm22ZV=lGO)K0N zBN`qMDw(76YL+g~vdJ(?jYPIrlKw#P@X}?n0;MD;wv<*$g}Q<<(QSp0C!Z`HkXf0_ z<+?V-#)U}FmJTQCbXO+Shwu^h&+IdnANKF|ou;oJtdyoYr94};DK2N(F)!!jeVfK; zvYxu*K0npl8>)9YzyYuzTw1GXfC5eB#u`WRrf!+ER_8+8Fx*BklEq zpPPDTD3r32E5+?pw53aP$G0LJ$2RDNqZh{c-=AWjYA>5y*z)$t^Uf1f=Z$SUYoTKE z070M#5iX%`qfjjRS7U2=cbiQa?yv&?FyT=KROJ$-{#T?MXo+M zGR>}rpx>*j+Hy+JGIPqq2CiFpT+fQX?;i2d?`+Q=?1>_|Ku(T*e7F-O;3!PZxmm3-$oZGfUql+EwJrE9LgfOh zj%qfN^_D5ug7gV=AjKHEC%?#|ZNr#L>jZ3V9p50KOe=@lWoCm+W4)=kSku-tqVRaN zTL3oGmh%3VJG)8kBDk=tBV)t9X{j(}UGBb+g=y!O`6Cg^=h#v9SuP_*2wbp-m*&ZNZ~Y)Q>ks# zG*1`o+I{OC=xFRh)X(7VkH#8_@+|T?4%^J0uFPGeqbV-59y8A!sfidA8syDsTKF_> zrU62fx#La#)=>ZT&z?9yLHqBHVB=vcZSGRP(Uc{&QC=QjxJar-dtcxf8hy)C9wm6c zxq|tUb5}_55$}dd+4qykg4-IN=Cm(WL(AMX)J1TjyFDLh4@*Gdm0oBePgz;544LN;9V`5=GNwDPKT9!K+aB1gKFJMj!7&NP$(_ z%TL(w`V}f-C(yRTbFYL<2O@3a-*ZN4?Iyj4II-eb=evp%U0CeW*+Ko3v7R|+wo@Fl znyi;MnX+jj%}8o)$;Dg*_~?gC`1f$d;}Ha^{QJ}+>#h=+H<=map(=@OW=DmB6kYdb zc_p(FnO3|)20Nrd2IY%7`^dub(6kd|&$}MySMuh1)3WV#6Si&;3SNqa@Y=X9>Q*o+ zi8o;(D&4Ef_nwkEkGmpI8SY=VVawD1aK%&pQAC{~K7DOv%4Z#yF=^=`>fAV2y_BGk z`u-0gmc`NGn)=S=V{JoS4=BmMR<0|wl$RM@_kPk}x&OoB`BEd=1fkT{(-(xE9dU1+ zqS)dTz{zaA;ctJ)pxT%+>4GV2Q1UtJ;N#Te4)k3A`- z6%*v&@KM-zdw#@U1Tgup>(0Fih-*c}dV-3?xXn;jdwMK#L6by63(}KU+YEwcqu+u9&Dh9S!mW5>2h4PF5cwP;R4nUY+(qQ;(mR z=)4e5MaJ&EGPqH}HSHWTjkTKFZ5xNfScUGt98tn08_=dTG4;qL)(kgFbYBhYCAyverXDfbhC-r@l5QTt1yp{rM6V-w z>WvPru+(ek+xeq(TAQ#ZGRp%v*re})@g3lO-IRt=v~?^DW4=V$lOWzQQK%X%(x!XR zy>5Xe&h5`L-xCd%r?F$CDiluc865G8<%%F{=)9)A09HgnH;_@CbydelC|F%_WTCaK za-`B!Q(fKJBZHy_;`RV8bUCMUnI#nMm)#LVja>VH47jen+p;k&x4+fMC?85pv?H&7 z_56d}1Cg)@Xfeyk1Q!9z6rIO6FWy9STYW>=qPv|rC&8IByJ+%B*689j&R6N^Rv8Uc zQu%!cb~_pi$(zWwZm6ZQenoKQflYnQyh$Y19LV$+ttdP)y}k8;sP>g23)%E}#kTNA zF4072Zd*~2f7d?3{@Vdf+9m1Mft4h-5#Dn`QZ9iwn@%0+(Ve8q(_3LX{NAfj_VCPN z8{SC=`FssZg0Dc1r>4q4@}|0=DMNJfAqtGsi4zAeJ@au(gR&8cTLB^@8{q|a#ZicB z!u#FnN(>nP<>fN1WE-6YpX}2)>^n8=x*tL#n!k$jsrKZ+rszE#!7P9~uvDZ@lj~xX zG35z4Z_u;Xu4{B?Lo>A znmK$$#hfX;3AW^R$-xfSdQP?+$K4pITxh#R9E}sWut|XV6U;A{OP*v-haCHUf$4Z# z$Q-4jz|Xks89Fa?E!*n#s7sGwdG!@Zt~1*o?J&b+%X%#)kK$~qRV{d^?Oh&pCjoVIFwMd!=fRIA%2GTeISzEd(#$!AR0 z^zi;iPCH%;ZSCmgf)SgP)LP#YsXx*@VC531tV&xt{rzLnIVn}kTkGvpj0RDq&G1*Z%nK6ls3s1I6jj#ZY(T;d%;t8%C% zgk#gzKDxw=x=wfogwz#so&G63pm0LE^Lt^JK8i24KQ6u-s5A{wQ-|+_VqTr8*g`0r zP`YMx$rGf-r`F#ylSwAUE1gK^)sxVUwArSC1sq_k44598$Dttvs^lV} z)_O=)hHwPRBNY;bMxh}ggmO1>!Uuh2THN07ZENE*)cL$ltK((67hML+5TD1KXvT)R zlyT1mx793(GoHWe8MCLb z!PoZ-7Z5m)j|Zj)N(&7z-XXOQ7L#wt^MADU`W2YXm)wI8lR07T!>jD@kkx0u48X4~ z+}D{OW`_A#CnIRtt9d)d$IF(5&7of1VWwXSj!g%P*6V~W!WnCU?YKUg1TvWM6xuWbTCqQ&4l|ESCi`P7`u?auS94m30}g4_R7M_x7%=` zJ)`bAd#I5h^L#U)fb3Hvg#50bPG7tn|MQbZg?GdGO||7(8z-&kF~vpn5@#&K3Z3C=%B7`GZp z^MnC?gAk>1vCtZx$_2#Brt0{r^W}IAV#)tn(^$?-bWL=8kr-{ zL}DCnD3Ar`Esef^y)Js_6ycN&1RQq)0o3W=JV!ZM^3??%G7|ZWlz>`sWIC?%XI2J0 zcO>*0@ZJcI$t^ber7X_484#eHQJ31y>@d}nY(GCD92qn%+B&RwYAqO_sn^3w+L%fJ z#`DAp6DoiYf9c8%x*b?QBif50Prd3xj$HFYJyUe`xBLCP>C=+xz(qJrS|2ePmZp4S zuS~J!uQAwn?U?NmL4v5RDWw2$^>JH*An(+fz7m%USgd4Po~^>`Lotg_g1OV>NCAph z|6GX-0)qiEYRph*Sj#F3HNo*v_cmiLu_U_62K!j(}3eMbh`aA0Hq1r?E-RtYt`w6zNf-K?L7>{+Y zTdP*F*-G*^>k7(k;a2o`=&AH#s%WFk#2=R zDJbMrs=J-l?Kz>NBv_Y+?*-sGVwpKf&@ifxCxh5!!jGw6bm}=>y?u!CA-qGJ;HPVk zE}6C;07*01UeDh*ZXlCXe;t`ZTPB-UAD&}`x!cLF2F~(TZOzwnM9~p!a{C!HKx``% zB}t*ik7|d4e_u%BJDxvy{wNICW^7gOw+b*=H4;dTZ_ZD8ipY?n-!d`7gdy*b>8i z@TBDcZhjY!_OWaCc*l-z!Sy_zpHy`Dt86i)&S=}nzgv?hGWrm+9~58M$qr-x*Qk!j zBO7d_iEmV|2T|wBF++DMeFE2<9}`9U$Da^~gS-2~!v5(;+-V?Cw-1ci1EuWh$HGn0 zL1;yg&SUgv!lC3aSkB+npX$O*7+I!jeF@l(KfLEMp^7uCVg)V-k4E05@R6~D1<1lx zcKl)X@R$d1GyQM+y@%vEj4WWhS>VB+mW-I}8-Res!&a`8B*r6&FNqHXX@g{qJ6Q?; z`6pT+tG~It|F<>2Z;gl6p5^aPBQj@kf!EsXI^rL*TWN7^Wyd z!Gcm_3fmurm-M<>hM6e!jN@!3j+9>k?fEUt2u$=3UNChNh)znrLJU>fIH_8ruH?99qAoQhFM)CA?kg&p zH?n+Auj|&ZGy9fr&(Q31nqN?XaZ+5V2tQ8Sv{INN5;@6+pN3-BXv&}H+% zd)ovvp8VJgSQe59f{_vaz>o-t1f1i}1cUZG+KB>^V!L*~+~`i5?Kj;NI*5s1PPh6( z`t;ZQ7$&gZ%>Gk53D^>$f4*nfC9wj>f zMu(##$*2zsi}rhr*7v|uxlX|g9g=Pl75>VuPp_?yR1b8ZBJ0#sTb0p0Yp?!oK@W=L zK&Dr-S2wA*;2tzcz;8U2KlfX3?Ei+rCl!pTeqxLV6!bkNGgR2em!;E#-_afYH1q}U zX8r;rdRN??ci<-6p%rf6IR8`W9@ew!sZQ=TxMHCoyZaeCDZudgxWiM(jzsJ~K=@uD zrdh>x!ve?geT>5;&ZfW^$AQ&i<@+5W|9z$`j23{yHIcH}*6(+NeBcE94qW)8Ot8+0 zWIFpg&hJH_7s9%jQiKT;vaFnFzQeK;qwd5ZHy6IU)Q@e!7w$U62QHM(k0>Mj3JGFFP4L#tE@vTSyjRIC)1;%{>7?et5q-Chw)zLPN0D_;CawcfnBMT~bEL z|KbT!;k4Y1cUnqyTxVp!0#-!)Izy%b>i3uT}xRs~jyX2NN(C-zRFYR@39*CaZs6MD5V%KfL zoQLm^|Ah~)(CZwck#g#=Df$~n@q28>$<}bwRZFT~rdbMmcC>qSSCd`RXX-yWf9`W6 zmP!S@du8ZF4q_gbM-Pw5g+=@XZ$~8C1pssFi|Iljv;>_;IJYuAU4U84BTwTY^L(9o zJ8mvj&aZs`EwBE~-%zZ0$qOQkM_J=Q$887S6k2skk?q(|9+u&mGeo=J$NCVc$H8f|F2?*g5?L65lj90 zU?`8b1k+eV>-`%Xc2af*rX$_soo(M~tJyDs5r2;%euq=AqEm`Rau~!zZ0oM63{S09 ztY4b>cJd5fhy=;4oJXLpu0r#Wi0$3|m3$>41fDltZ{hPi+PCB1zXeWzU((#CQZKl| zYM$RcY#%akSYEzTyZY(^UhdLm_pOd<7Sw!e^J**W;i1sgs93sJeoEuYVh_qU($nAu zXr&App%I7W%E0=LqUSf08!uN)X|`=Q;;^8qaWpCb%7K4F=jleYOTC}aTbE&{yv97f zrAI_!)v+>yjnPH>&^zA7zJVglX6@k+sK zt2&Ahw`^qze*YsAM!=mr@Ar>Fy-buK`kBmium#NVQf+^(qT|km-&i}lQopf>7C5hK zgcu%N1}pQrQvWZ+|IfF;oAotdaQ|;Y|9{;fXyvqVYrQa4=R>po`(#`Cg%2iMV${wv zjY~c}J2J+lP;TF8z}%5*sQMF~lt3Yz{z9O;b;r5UjiOz;8zl#h-E>jk&NJBUC=i|$TQU27wrRAd>gJ25-mdq5 zTAKC(6VII!YE5mUVTqVSwOvc|KN>*=u|XY#)U~i$w|bj|tI_9&Qd5v3|7#3@JDZ>Z zmFq#~t24Xve>GJs*jTnb<9z8Zk@kKdwd^copAk-T`oMKeHW!Y((gWZk@U!Y-Fi9mp zFUq!-=6{*i@}^6b*)t-mm%67m$W;pTO@5p3M%ls{XZ)?EQSIs%;qsF!HUDDE`$k_U zR)2Gx+UHXRpwW!Pcu@8WT;Xb*`#q$QTe*+m85L{D37+u)GZkIz2w2RXrv;WaTQMuQ zwMUXtH#bs|>z-l;ZgO}iSkHPJk^b%xV~R$0YT$>vDB`TrJcq|kc?cZP&Hn(p%R{y0 zL;i^tv;H5a5OZ%YB>mQ0?j>Fy2zb+Hqc%W21j~CPelp0v5h&9NP&70^6B`MH;uXcu zkOUA-TVaJJg+(9R;ampvx#A>*-QCQ~Lurk(UqeLj6jzBR2DjSE+&UI3-L+s;pnf$J zqsk9AUYX7k`bNr>oPl+zKJsi5%5#RuV_57G_*U*FJZ!h$Ot7l64f!8Xnt&1st&)g5 zE(7NxcOT8d2Yk2;=sHPA4Z|*(l5ITl7P7>Oq-E8B1fj5h(fPuAA@jA`*+D-?Lu^|9 z&KG`aY%lF}cvFhjRWL3I#g_JnA~Wwf@A!h+DKA@7{h9GLgW7st{T9EI2KQ3a;?E6J z%nT+&p;vONXqmkZWZi>m zOUb#}KFZ!@Kz%|f;giFF@n&a)De#qmy$PiH}dX+xT!R7(g7pAu9_^TEGGR|3-$w6Ov^ zkP9!FFU4@_E|`f0dtd!gCOenGlMfy`t|U?5Yh`meO1^uK?*2sH;lJG2BDDfruk?nV zlqH#y5lvw!`Cq-96hTtNNBniR&M3vOJq&PJU(uwvgIs@Aktb51|EI9IkY#xhau|>6 zo%$O|yL>q#Z@tPHO-w+tKo7JxQ~P0Oj>w+>SIjz&Ucpc|r! z1ig1R24zN_2CM&Qdm=rISY?c$QmFTM=DAS(H%L-IOV;BFO1`1?N9aSBbPCGNjsxou z)wa3NuwEMgn6-qeCT8Vvfz%{xQ)|`XQmJrl``+pw5XW7c#8Of~c|&ADugPTHS*3UN z`!)jpop+V6w^UzosuLu=o^)vtAl#QfM#}=z3M5#C(veDl zzH4gR^zV3FN_gNK*K@&ei&T7 zTJh@0FFx~U{U?>e$0>=Gu`H3DWtbMWN=K2xKQgw3EDo-uFgl~cSd5Bu)xGta58_eM z3ap&2uS~qvgi|#SmYz(q)JazvVGzZQjcjoWZ}%>bPb3a~c(1-lRet=@ou0FDgUv%BRuYO)X0Usoklv6 z`zMYY7T%e?`aQy;$5iWPS{hBxhVUu)hYMV=O>ztux7`!a~^HC49h1= zkhV{8S?+YZmiRQZ{Te@4UctiVgp)8xB?(&fnD--`?*z zUyIW*a4t2HRGQVTnq@q|!_}3xc_Zo82ah(%BCyWXU~KoCE!YZz`Jg6oW~h;HbdZ~1 zZHb;-BOq=%nnT69SBRoZLoT-E048?I-yup&(g-djpw)%aU-%?cM|>U`GR29`F>(iT zwkyu>Lk;m1EC%%Rl3ZtcIak*NVY2$NSFaH^5&p&W`)=fQ-39Y>D*Epv&Hr(UTpikb z-O#pQtiL2vUe4XnRKJjasO(>(L`w>|qMhGoxP@f+^JPsGYQ2G>lQ-3M@z64%tKF7U`P-j81@PogY$JFkh-466 zSS}K{`;9329-|6b4-`jfBBhiu&NDG3(;c{&$);3udXxsYE|gJHtBqBIV+-0HU$v(~ zNR-gD?_a|zcU^F*Q@g(Gg|6d9(Weh)aDX-L@))UjO(+4(u=(H;CSs><4& zYF8z1z)YkIF}Rw^h!b21g@R|FK)Mq@F6H?SB<<A%@%Q`i&uiG39Y@~YykQysd#D}~=yoSh% zw5L6=(i9=p{X9DSa&`p=90evO_9#z5#6T-aGq>w%Db3$j?8kX#jma~_Hes@&93<(G zCe4>B9W7_xBjZh8J*B|O>Lz6~pz*_y-W~uW&ngvIjJwgBmAC^b5I4jPNIRCu!>C^Y zjfo$uogvkqT&=JA@aCqM&WjbQ_kw(!Gx559=M)uDS%G1S` zem0s?s9X&{s&>SccXGl}c&>XXCiGa~!W{pu&D*c9t}hE97uNO=9_i6cLKc&R$ebC= z51D!%m?(K)>L_G1Y1QhsPTu|!j60sd)6!<$$UwlQez$b%0^F@Z9O|x_6j8olKZ9=11lAwtCerq8I!|*mDIpr^SM+*w^67bmH-psbS!05M%|Kvp+<}8@|U8(=9>gPssL-dl8Xr0*0E44uZnGFOP2W ziI_KOcSfB)svE0%Y2j(_SHYQB8{Q1YrTDFefYT^~h9G!$juu(=Rqlu-)o3T=X@3*< zzF3%*XUMDi{m`P8@mbFE49!3%)Oj@r0mbSy%dyK%YIQlvvn#?CIbeS zAupV>TgK@8bL-#cLD;8uf-9LDH%Oc!Yv_15#7A}E5)A8%Du-AD94V31Q|@~{>DVBf zJ9Wf`E}BzEhMSk9ni+A_QVHE;pFWr$7<9&24GuT!p=28B?{Qo^Vjs2)+c~>>k~iL= z@>`sA6Ac>5U#i=^BQ}D-hWNS$9b@~#cD_Z-+iYo+`k*^MmFEQKS)Pn@ebpK#D~v3q zM{zg}b?GV7rmfw~kn2Mg3s(a9I&Hfw?QQ>DjFMyI$H_Ks5i-L^Fz z7daQ@*g}>yF(|_6KlSF5>D@+CA&FG^@!LIf9G7sS%!tKTYs(W7y;CfbMp?qlWvi&R zZ>B{n3Y%rsUvUry33@mW>}wW&M~Esqv|d{wOsv0hH`P_UIJ8}sDjq>xD6gI~zau7d z_zVe`LY|Ug(Wx>KObVCA5je}7wGC3l$%HLCxz9Vd%-iM+Cy88{Tl|TchrCK&l=BC! zvn{hUv8*p?p~R*B!wb4Ng8($%BkimTtR9K5zJJlvt4w6XR&zEj*VaHA*OXhNhgu!_ zpl=O1PTg!d}N65}tJldgHurR==F@h;0kW6*6x+xHp?l0W)q|Ea3RA zU}-?I$h`BTU31m4?W~og_722XwfYDdhscn_W)1X0g{Lx|*V5T{MCK-qO+^i&X+!*R zuFUJ+)>c>63YmnxhVB*Eg|=VCm8m5reSf3DS5YtT))KogO6nl-#Ji?V2ArkLUSUE> zP%CJ@rns#Qq}LC?_&6GU1F;!9Vh@VV>}2y$07D@VYCZDNjI4q6&NI&TI`25ksHK8I z(kv%=b!lmb+QnY#mi)_imHW&Gp)DjC4T15DIGgD`^<~l%^I~?j6}s(#>?fDZRRpM$ z(J8puZQ1Ah{UsbB!mane>4@3nm#?`fIca?U+-0$z_#NkjcOC+Th5m|ZgRQ4TX6jfg z*RPmC$vr=ZrBvYrHMXpmSMT0s3H7^@C}Nu?;U0sPI1NX-wFOq+^{WL(Y{_oiY2{t2 zel}vcq^Gqot*u zospeMqxz?)enElET{5_R(tbU7!4+DBHgTF|ly@Pg+y2tc87~*F2kd*VcwBtnb=>rF z_$@Sj)Dft}l<&UKbJt^yqCqzBLPh@#4-Hy*kk$=<`gAgFkdXj5IME@Ug z-yM#18~)85B7}sWlM<=8Ii3rv-e)9RFv#&8QEL*Y#7;O&q8jy%~kk#u#B{5QWaUgHmmvm7sCIiYlTPCGs@2xZ)SGD36D({p+^;kN&;YTc^K{Bf@QY&VYde^!QN|5MqIPa63!XkYrgWsmBZbHA)+o0 zVy^_sTi?3*Z}vT3B`enoHcO0k61}sA<=!&C>mzr}G3h@3%kA!0Y>&L`QB~WE34YUV z3c5oN zz$2Ejx~ntWdd*u!-n7XfLYGQ~ii9rkO~FX{t3!U7l)|(v-WHCubZEB}#V_KhTChA|z81#1rR`p~?&dET z+Xu}5PsJGN7SB<*QpEcfeo|GA=6ZW^R1TL_wIzhg17ysymrVp=^T$3XB%|FL*31Tjz zC8_E;Dd(j=X@?9rp#vY8;8VQgvk;V;7A)#K?6&?Og)%mX+SzY&c%j&`Xk)c(+kR$K zQmVPuj5|i)f_*kO?NIiu-t@Tbd!H=r%9#Bo4jHX=4^&(+BgkSNi?nPtaae0-1nPss zYjeYAun&7YFlwrZHSR3vR$KMv(+CS*otU(0otu5Js&!)NQwyc0 zkBx|-Le0v9`I)((T+R~Sot4RS>pQj&5-niH4%}z^8|Jl zeRB_6j)%$Jc=q_*g#>FY7W$n}mRwkeAC^sB%%s9CduiP-T60JIjn?E_sYWRK;Wb$* z)^zQ)#JuP?)Mdgbe>1ucoY#m7PAm~%&{!tnNB!1bI7IxT$ z*UmjxUvKn$=xJdf7xD0j%TrniE4qNW%<}tX@vFM;BK@s1Y2a(uaNQL%ytt=#4Q1cM zNq<*+5qGa4-(n#ZPWmj#BPP$oUEfyn+r2QA9zsC0b>$xb+yxlY+NM5i(7j1tY78i_AecZ{)|8nWIS6hi|(y|V%`f9^X6xs-*?;t3| zHt-(RgRbPtf<%qJ0M0JaLwt~e8Te>+SAzZ^7Dv^Vb-1X9NYQ8uri>iom5-}>S@gKE z1jX!z<(0c^v|49*R$dRsKX2(jRBY-z`T<=K%wceEf%Fl zlZ6MyyCgYRwhQBvLuJc4O0-Qu%{rohT$d@i%G*FOZ0weMqZ`vL5%m>2JY<0 z_G>@4S!?|oY<#lAnp2uxCH*CLqtioL-w=j^wl}0afL4fvPQ&B}1JV4*LHBZn?vv=& zk}q5eL=nrwd5CEWMmQ*mNoGq!P_&{ZZxy&0t{ zSXQ%y#~eewa=uJ;sZ4dnr_%XpKN_oTOZ<8Y-U6bpwLpK_O&y&<^j8O#h!b!IRynfQ zTP+$VC2lUw+`AJrOe_}pvAOr|3D0NEQ1q0eGMd-O5rmCTZi#Ph;( zxu_;#+`>kyZR+(Bxxop#-Y}|S?oySYLhC%6vYXm(4D*%aDmU#lyV3`0zt0hWaPn=Lb=u^ZjgsisVvV8$Auij33@F zKShMK@caDSHz%ah3m44{I7+AWCJgTAW&b)g;NS3slL?1pu!>@8=gr1wZ{m5ZHYPis zLUmBUHe;u;G7tq^xN;N}Fgc#-0M`g!+yD#N$O`%#cnn$Gbz(YRvsi6Gl0%#ts?E*H zritl3MHx{HS37-Va=FQp2Gw{IGe~bzIG7L6%-3FBZ25b8A=7MJ)>7LQ>a)tRN(VPQs;z5=$buiajKhMWDR6v6l z(y%pWmBWiU`gaWIwDBOOVb5`8|(u0E!TXhlMi&n50Tb%>KD-sd*#wj(zJGqcg?WDR{!PRux`ger*GLin8aZ0Efoev$JH)?wAE5 z?2VUNrz(jmP70K5e{CU~u^Rqn`tRcVdP0bY3|{Y=iGm2&if`9R%R%r8{9W*G!j2&E zKr8%rM>IFE-?y_d4Q3WqjBT~dP<(Z+d#~v2@?aJ1PB`(E?qEgdM@zK({%ZFksYz&x3?fk8Da=S+#w$0!8kQy1(DR=aX zs63l`Q;EcCT=i1gHfk}3LFt{FyKSv%!HG4u10r}L4g%fkw}m;zA}IGV|9^X+=Rpv6 z=1)zXECJ{>dp!NhXfa47-FfHAJuW1mb0U4jTr4yy#K3PnZP}N1_n8Ip98U3Mk2&L0 z3p9SMiMRH!O$TXYecT z^=SkZ**!IoLr)#IE^B>TnKXliG9vQZBU}5q=s!gIk3bJT7Q2GE7T)SZL=#LCNr5er zro0kZ&G%9rQe1Zh-CfY^x4g%tFbh;Oj$dA|^IJ_c$JJ!l%DPR+qVgp}w|H)@4l$^R zf&KL(2o(1}9j3Not2=51MkGa}g{#b-duSZ6g?u&Py&h&a`uEXaiyXtTSX4^IKc28G z#^|q5FYQTrx^Xe*_FotM@!O&p1OtekFRiOWuh$Yzt`OEDOue#opTV8kV`2gWn1Qur z-ZO{O(QH9?YO=?eZ1w2;QdFH#ht!}MI{kLnLuwNMz37z=vKa%`p_8t)Cq zSYnW`OyB*>{Ox_T_F4A!u_kjOBmE0qHhR*ps{1W;zWn>}i|D-1&*9}k9c z5?_RsLLH{tGeqzLm1LF&CLA6PpYhqfaIA;wxXy@1#9$k9mW?IXkJI_{Dd16x-_p< z&omjJMx9OsvWo;LXmkx6AJ;RliLQA7OnQ4Sjy^G}jkn$B;x9A(WjuvKv+#EOl3}cf zwR^OR0^QqZf4?MhhrRf($zK~RYX`v_E;V4x!Ksdtvn_vO1qE54s1 zOP6U^l0FT7ew*58b)_=%eQmaR`^hg7;nFM$0yRz?wuDzx`lUYbYiQ%Xp#QpAFl0Zw_O@Vw=?A33EG%^5vbo9@HvSUt$>k^z!El6%iZmz(aMF6 zbdKxQ>kcgsr|x(ULyh&vrenZb_Kf7&TjCrbK<)2tQG&Swy{Eoz7j`Yyj&@5om^oLn zhnVo)_;T#WA~5FM`lc5yl2w+6e%8t)^O&3LFAsQYyC;@ALy1g3S9P#khpJ$D|IzB{ zQ24Ken6Gwr(#7H=Xn{C<3EvDAS238~QyN&`VBf`kqK#~hFAlr3HvCxqQO@3E& z*H(EKH-dUj>vX@G)R4n)d%#_{cO1kxy$BoV8kTd1f+ZZN^KME<#l-zu1@Hv?MRKL# ztW=ZUe}&n!Xz=TdyDnOAAbjCjCylkvZ>|WHx$#@Bo+IFNJRDgoJlms#@(ck z1J30vH}3K({d)iBfm^w<#|LhxEnjM73k=j}{e6IjT#kkVKbdgp;pbCriwjmKipJ%3 zFKh!jHb!5ze<&F{#R@*CE?o|Q6ZAD{JSQ)_N zTbMU@6gVkE@n-ulO3#(n!S|RLHkSJMoj0OKkQH`9Fgk zS36_Fu$6XZ2oGqWj2?JIyI#R(bkxG{>>blMAMgNZ-EN1#B|Mp* zpWDV}_N1LAJTM>`rC~{7Y5v}hF6^ceNDRMxr$_GquUg)Q3JI13+GI*ObZQs_d&Y`;TG+n>F&ok}gHm@<$nna$`^aw76 z*vO#Wy(k?GH;#g9OdpXNh8OfX#(f0g++R*41t0dFygJ3x^6O-RddZZGy~zmbY7~zx z;%ocWxUXvG}e6Z$RpF)<79wEVJhQ0VV4H5HnVAsA}Hj}5`l2PjeZB86Ha zqnFC=HeufoowhGx6Vy0O974Jh7-T~CVb`lb7 zJ=TXnf#GAXx>ZTku2hMqMj@UUBF{!FIZhL%>)(?O2EQ)y_-w;pA*GLV6NSrbQL91r=S*^!DHwIbchsav&j z+0w6_Gk@u2JX1A(NfGDNiahkHw@6TDYg*R+!MpT#WhoUS+>aM`&;?{>;TW?ghd4%N z92b{3Ea@XYMJ$vP^L3ayt(JQm8^S1p)|E)Gq29)8yR6C{g>DR4sK^~-Rm|LZ{nt(w zW<;>kJuTHyTi!k(8j?o_ukgEIsmvF@08UZI4mctZRArEmyKps}=TicSoj`vbcQG~7%v!UgyF(`XPr80d zw=<72?{nkh54YzbTtgYj4N5I3D7WV#22B}oXzN0oNI{5Mve7@mevqyZg` z8~4XNN>y^zH$sU&Fto-JEwgx1aQtBzF2Jl z`x;p$KlkUa{Lj01^}jZ0obE~oOLREG`pln~Ll$bX|G%stR+~y;bo`$e{Sl<71{*Xr?zbM`u6 z-If03dHsC@`j81`&qBkYf;h5IHBB5Q3qft%(@@fXJCT2FTU-SQ+bX+X83qbnjMP}# z<7qm6dXQ&7rw;Z^bpXLP|9q}re|n|B)e~-WJ2Rt<5(Z?fU{)#^;Fd`1EATJ$Rd`!Y zXo_&5X?J}!!mR02liI!Fzm#?L@W-R;%R@UK;x!6g6hElQD(?fB6JJ|Ld?ubIXWbyz zsM0@}+E@JaCvc?qz;!K~mr)aP3C?>FDd-;r;aKG_vd6%YXnX(tE{JHWe*#I49Ef>o zs1kS_H%|lJ-sa9zWlvg6pQk$cI&wH^|9r~O+ch3>+U$!Akr?^*)hF1sRZq^9%{5kAWeuf-2&!5S>Ff0p8RgkeN$y zv@Kh-!B^Pi%xf*D9v;PHXp#AufT_SzEaC_$@)=BID;;_pl&JW+cK@S)=4M{wkA$g_ zx*!Ik(WWt)HLmqKteqwHpHYR6`=*-qtd*DIddRM``n0B%|NaVbdMy-k1Qk6T1X!Up zvX-Q{BD23j|3sNHflLiecopThbO+X}8WV4(^8C&arU12dhE7$ChNVW26JmWMv34v` zXbNteHU|+#yNDqZ(gVP`jzB)wwH0fpnegMmrTwc;@-1?v@%tP44{HeU%Ymv?`AJyT z=-ln5P>lW;Dz%!pn6^#8+xugf^J;V&7#j{RQFl>#PTTC4M~4<$Y7~q5-1b+m0t->@ z!>$n+>e*Sj>LAh8NImGtLwPt2UR$Sg+}jUw-*J`KH;#VDVTD5H2miN;M-GEirAEA> zQ=?!^aB1^`>b}G?=FCKrfrA7le!!)Qb@F4e?EX3V2Y`k<`p97ny#-TC6MHT6i2j)~ zHcSK%2Kk2pvjn!rdf+92$dp}lvMwTU^qLq$5C&AtmT-wYmV)%kaLMWR6tPY;Cub>5 zmsYF^!re>uHOF;;2<0z^(z!h`RLX+wN-@&PwY z@<8EI>v+BOpbjR{N@w+@|7Cj*xmKBll%M^su0LnyT)_|mWC$wP_sntxeAlGobSRQ< zr6%otz7-%#H*oD6`hs3=@CD(E{}%v3y)y=bGqYYP5692Zr}ivj?t?IG)QE)!K&3MjEF^|zfLhEy@)<^KUx(kw4kNh9 zGXUkYyLIh~ZED)b?m<8wBC2AnOncP+^9XQqY{)P^bI7^wb-{_FWPqVG7l6!IZ*MCAIkPT$4-1qs{tlJ(ocV^vD~ zc=y$BPZD^qU3hVVpf*-(k}06lVe<5Egzou^7pIS(HyIjrtFs={KE;nvOTf$ z!wLN8i&4I9H+)2FX0RekO%M#|1#5Dw43ZS>ic-`5g2y0#omPjS&FeV!&iZDKP>({z zwo<1CUC=|-^rFXk?GGc6lNycv!{5Ez>nc<9SPmoeVTV9ZeLwP1BnaV8xy3_4UOkv4 zp{p*^?${P28q@tR^1M{}qZ=fHZEvogp{yNm%E+QJExW%@+9(eikyE0k8VPJ0%lT+0SEz4QCnz;FJ05BU*8oW=H|a_zhnhMB1e3xU@l0vu^nTmIB*0SXKc-eJ#y-J!$4 z*xj|KcfGPt<}*8lS1!AgX;l$4M)0m-M=hE2^tFUIGlBukFwDose5~;WoFP?^J; zc-Yh(&uU(*Hq4XCFqb|N7D0-(@?RzKe?enU&t!n$!opjXEu>;g(2(kdj7MgE*2o^2v7ONJs=NDu` z86Fs0IbsTVB%n&oYH8Wy%<144hxW+gcCA`y=t$H8M+wWMS*Y9IxC*TJOQUZ} zl&l>WLSM|V8IHdRsj9Q!Tu;<%3S8ngovTJy8qk_pzc_Jv|@A(1$%n=WfoQ-uBa{`_aE* zh^x6VbFaK7-ZLqe%)~Azuq#4iRbel|^60P^U6l?)=RpxeW7+MNrBjApyK1W?FM(&{ zp+b472(g$>G+p+UY8w=!;e&y;J|C-S@=DBM2u}52p$?!A(wec8-L+q)IslE6m{^*O zmecQUQMOkmCduKhjJj&`#iWK(PBm!CDM&T4miv^kgm6 z7ykaXSZy)Ktpy-BKud-m5vtmv$yZKSpmjXO90SjS=tgLiKd1t$`}UZ60*Vh*_hsP+zZSKfWKqL4pUKOIYrkbLUfUG&)yJuFehk?ldLu>G2Elqrlsxn5oVy^EMJF z>ml}#`*RnFX;8r1lv!ZhS=;dfsJCUleSXirIjCF$G;b3?1ZkrbhL#b6qd125z7uMM zcCj~B=U5TiC16Yt1Ewtugl@poQwEz`ubv(#<#}CtfY@jXhE}T?9zYha+6e_*1|d=W zHtJL&_OmyQKc)oywHZ;O9@-tr@)pJ!JIz@hWlDRi8!xX5bKDn4y@}MRUTp%uutlFF zHs*O`d2St@I)EZMitbGIx1AqUgVC7`z+UD%`ja_I>=ZT#;rU_5OB-tobPY_F9LV;0 zapA*8->LNr0D2>zby?~?dM)}RaOMN9f1!rw7yFJii$X&@<|-6&zHvD6?7mnq+)lDV ztc?IG>SSA)gT)k3_yx0TsB~v(%>)~C%I#ek>yTd43k4YVd#CaVMt`C%^2U}K)j%i3 z#&12IQxFT&NA~6jSq6ilNOTvwn^nqpHfFeWt1|doYVC|CAqy={%2y`xXVEI zH0-)`ZG=-=i+fM$(~rt|HHGsu0>gY$%WJa%m0_0!;lJH>dquTm{YxY}Asz4C;B#jE zAAf(_<G3N8B9OQBnjb1_gyG?Ho64c? z0=_?#p_~_x-zm87Zad`LWLIvamBab_>z%h&2P~{Rubo$;5^?=*Y1|(F;I9+(cXehu zSgar&#$l%H<`0zCAs<3m5xrhb2v2B!Okx9u>0mGKv^vunZU5ue8EW|-V1jy6O9jw7 zb31<3{cD?-Crfu+*ErukBn*OKBpVC2kMF(n3Ao~6%F_|ZJ8P1B|Ln^-?sbqh#}U$j zm(!F}Z~u?;3WsNTerRA#M!|z$@#kvC@r>KPic(N7GH0iA{pzJKu@{i5_Cl5BJ;<{B zr1S7F%^A+Bt-M{1!aeXt4W%G+&%NTq;lNgtd0mU-yPB$)#765&!5Nx%BVGO9uL|^K zCl|_>o-KsM?^q}P6fLm@lC-r$ywd3^nR-AldL={>Imnm?4@C(%Ddy=l+%_)RG3|-{ zw%4JEISHUc(4xr*D!d#ubeFy~!@pd`e-kg^JO0Ust`L-{=W#e?LtIamF}-jPAu0)I zu*No%QmUwb%w3p2iXN$|+FGBCHJDr$mFh|deh$-pt^DQzen*joj?7y+r*RS%h4}k_ zZL4Of?bT%!{+%Sy6>JmJL~jtvC1MGbJ;z!(GhiL?)s@%6P8%nd?%%T6F zE@`v3Re$^ui0~NlufRsbl;erlX zK8$Dq#47#q=3;RGKjUzr@g0|?txA!reHQ~Y4A^kB+p$vv zD@#2Nq;PR(bD=RvUW5f^@mEfdSz+u+)E|GWA$H7=Z3+)XLgG00x<~KpXpLgN!L@K+ z6P3#?4OjoT+It`TrR6R^t!B+GKZ%eECday~8?;1G^3KJd`0r&=RW42=DTzbINbT)kM0%s4SWuCU=Pb_5?O zl&pP5!-_?6m7p1U3NJnKwq4>W4?n**2mJ}~Xpsjq#MiWG<_$eu4kXDPz`W5Yg3L<6 zK(#=VjeYHf_Py#6;x?j9G;f7aQdS2+ogpq z=62t5bo%z5LjTQuysNH!hktNAYr;!6Ft$P+FostmROHI3>pVkRwlBk|M}ffpD13OP zVuVgI{ros?3#b|UmYeO0Sn=YcNnzTH*sX+A=bjUZZgHLIzs#^Fa&I`V7Z@q@y*3GR z(%n9n<$mTT`Liiz#leDM{QlFz&dbli=pVnaw}x2Mr$AfB)x@X5(uw(1!?^V%;3g)= z*D{k+jZUB+O#fA}&T{AxIh24xbuUC8O;{tHZ_B-9V;!6U}kzHvwPEgvuk6D~(91xjY z8}SIs)F|qAZ|-#(dwTvuw8OBmGP}RPfpt)0d9(N#XyFK;uA(d+P#wwB_ua!j-#$w$ zjUYac+0aP2lTAAxR%mCkyzkDOFrbyju)EzEEI`p5hM+b8UwZ3QWLQzql0G-yo-l`d z%DWn$vz#7=xCesdHNH4|C-5b96oQJyzz1*`wDNHU;_5G{cYCtf;i|vvvl2ZxO4jR( z`uX2LGJ}BVZeahdsX;uxKI;NvGxigKBwWVDiAj15frZRl6Ja`RMVxsq9qdJeCyR#c zBZtCV>9&OJXJ5?q_(gAEeu^|NZAek4?a9{R4CBy3URUV*sJB;{>q>&8f31@nr+kc1 zWeD-y;T*_QLN+{UD6Gkij8%nzifMXo8w|9bNRRoY?29<~2UZqdRDW$fcHXUgwckX4 zb+*smhs?}Hv*?5q`lZk1)?2CwVu$vPO5_r-dBHw(?!6hC7HFSxBI*mHF0FklpFp`B zrJ-|Mz#`wyDXwG|CnMDL#(sU^;Nf84_!j=ym;^LK9oagf1CvIvp=@fmH+k<&{=~Ic zx)vRQp8e*u7uj~TUe4MwprS+|;PT?k{YdAw+#Yua`m~Na!P2s~5@omoCwoV!-AwgR zrSs_AhuN3{!&X}0L&-tA2wM!7dzCeB_>1nGUSFKx0em!S3qqOfPd_I~{|1F9K(rf6 z#5v=Wutv|m_Q8}3xh81*Nh)pz>~~y!-OQ9e-gaV0+J=Q#$8(0UQQobE$N}7i>?7@E72b z_oms!V9VJ)KjLcBrV-H`&NC^>GuGs-)7R!+WZKuEnvWl6XWTPbVso&vDZ?br78WVe zZujY#8)-L1632IW?+D)PEp}bEPSq^Q`*v=i4&dzvaN*6Wx+~pWrT|dx-S9iOW!)f5 z3*e~7-HQBndD}B{`0nYPEr>P+f`P0a3U$uXEV&yv?)wf)w!V>CN`$!rrA6 z2|k&5TghY4^xQDUsdiBy0bx#mx4xam!^xvpuUr1kbr6nPo9>XK;#5bH#3l2xc)HuZ ztna!)RBXGGwOD{+#k4o4W?tq?C1>ULH-%3DJmqeSoYOg$AHZ+(C2ph@h};P_Y~EeC zk`hwA+;5a~mRCC)vuwDfEepLi_35q8T&3PTgC`$L)6?<8aVu{(Ha2;$MVt%u0ISG5 zv$1Wu_7ZP9u7Olu=)^|MDyPJgqa@oyap^7ktuaHpGT_V^fsjZN(LI%G8CB_xo;v0Gp^z_+C7oO_AW`TCy5j$)6aXarB1GoKVJc>qvfgs&tH z_5u`-qEH8GPJIrm&3AmVB^tl)9e8k$wJ`|Ts4%d#XYpO-z^gFjw47Nw7u7c6yYn*8 zeDk0Tl{;2sKmy(8{t_F*Q5N!Ny}g(Q4N}?XWOxw#H}^t6fc0P8aX4aDcSp`tdZ-D-z%X=x-h+d}sSb zeYAMJhgY-hYkk&7IF>DyGrRtFv$N6=tRDaVZOmSWd(F5v%?+0gF`8|jA04wEKH6}* zr3zjN1CTctZU&Zcemr>Hws0JxNX?V|Wq=6v7D*dLu)U0Nwdr51={;w+3U{_ zmMp@V>UV1xOl}OpIqpDcDCu|X)}Hz?MB5RT#eXVn5y!uAm{#bt0PDG&*`c!Y=(XH$ znuJvMwuO!f*c!E|In>VBJ?_5fjkBI+58S%ty8cj_Q=*)%(!AQ}m9Ez-JOzJ~l=b;y zwQ=@Yg>T05dJcmfEih_-W12kl(EWm%=!;vb%Y1HD+s~Y)lEUuoJad`|QDxg*C=jdz zLOcn>=>8B0AN0=gtxYYgf_i*mw@Vl;LEYn%!D~uDzU8snXSmp9Q~h&E1zWpI=!*K_wuK zQ%7;5E`9}~a9?-vDDWDwmp^BE9J^(Dye1Gwye3pg6N;arcplticS@;w((?7tjpg`j zIld~Tda*nBH_j;^Dr_2n{q=4cKl?0|NAO-V?vt6y8VCuku@4ziH|{EMet*C6lDwif z71LX*9p7C*qxKlXou(~1JGG0^#`>zug(#~B;<4@i93tCwP@vZszE=O|Y$q zCv$8jo4q!vs^kPXev0ZsKUoEFstnb`Gps5Z#9H&*IYvft`G+r&MW4tt%V!lxzaDmu z;D)Wrr*fwy)7Zu7^lY38PqT8dw_#yA?tP$-?4}g8I=GbEeN*i(zIqnvE_(mWMyW2v z9o~!%dS2yrdy~z%4@&aFi~{**l@-pfhEaskM4JV}o z<2O~g$8x)5q5KI?ZL^u%v$AOz>K>Idn;gpRF5Wns!ig{CG)F8p1ml5ov@p4iXm}>$ z?R5#mqN#%fDBp(y8-i~{#SRgKp8JTmY9n`maa-+pn$Xwk1789wL56o?+9=a&p18}S z7g);TS#NJ`uZ&-9x|KQ>jZ+*)jmqr1x$ zqZ5A_uRS)|USjvv65aV-Gn%)$+4+Lxn}~?$qMUc9s)@KBM6l4!UYM1vM$$fV#~Aw` zi5_J8^kZ}qn)H!L!=;MYz#&tzxyRb*uB4(B5e*2NZgM4Tu4v2J%g{~}#OqS*tn{iE%+-i|%BI+| zy&?tHap|7hAuU6(Ddw8jPiw2HEw6Hp9^5=y%As~_`d)0yIXv>i=m*;nWMxq9bj#m3 zN1wwA#>UU4uL?--9=j9QWMOginXgetPbKiUqZ$JkB=2cUor_7|z1S0e#a`l)a6K)T#}qxSX9x>sL#sPu12$raZk&_Cw1*R+=iqa|FeFcs4Aki^;ykK;*Saga_qVydROJ(T##BPCvj zWTvCgUczI|=n+jCdQ&k>;Wg`Bik`K|9rMCX_fAUfnt4&cXX>`j`K{O*+ltX_A% z==2aV^=`X&jLkGv>wYS2yR6fEc>BqAN6hM3~x{>UrpC*{RB zk4|G>((1Si-nzTaEmE&y>}6Cr$p>_T2UpNZi9-YUgU-qox@0}36x&B_bL6dN9^5AE z5+~a}S~%3r|#V5$@NSdRxWDRyJPx>GF)8d)K8_T_a9OXt2DXQbrl# z>{=mem=o(=yT0Gu|zw@@b4jE9E<0FItv6 ziD)P#c9}XyE`fBaf8^p(Zm%M=Es@@f{EKzq_ioS0V?-~{N9|E=BQz4XCmf?mA&3%v z;cfw?m)=n>1H7p`3Fnu>H`~?3YYZNuu|>DfIl$@PniXlzq}Vz~k4vz-b%`;WF^NKE z?gIpAJ`-HAYqmh+PuD0JctK@qp!-t%!99+vMo~IpO?evq*VhKv9~hO((XD*15jW79*AiVO zPBYrQHxwkLb&nm}m|Drro1G<<;^B%gc^VQ8wN)|JZO3o2dg_uS9deH&DOJW2ClXUX ziuEHlPIPnpnm<@-@w}n6boZ*h=F8tiLtAbW@+IhZBwoE}7(-cS)E0NKZBt@uEuJIt zSQ>iGHiy#I8B?gYNe~o3XZL)}Wvn({!jl7ai3D*gh7a70PAYRHh)&wN9`MEKtT7Oz zYVC?us4=)UZCwT-x3e*KH&dz(dT&R4Tu_bvW>la>cfdOdYQJ!{ol3R?(cnfR6x$&L#SO>}3m6LN>pS+&hx(F7JOt(W9V0W3K#c!h2|5 zFvBb(tKP$vnV$DN2avclU;OexuT$hHkl8Aq#}oi+-Z+X9-kc{Ulstr$v-2xS7u9ks zd(a!gYlEccPIbr0A(mZy$VT4#jc#KsRozElwEf!6GS~IIM7ijG$B4NEZQZphdi3ro z6nY$d7&XyoJ2agX7LH7fLHcx_Q;h)u)!1g$?zX%wQFz4FpciRW=!iPdT+Rx*t9IpaK^NKlIsEsx{* zU}yg`1k#5RNY@DC<&#dCsC+v4b+6=rI2ufAJ3mJO65qgOiVM21Y%jJWk-d!_NieZ1 zR7he8yl4fTSNv8_K5s%fFGvzT5NCJDxb|`4h+W_1vUr}!&k-Rh`2(||@4Gew?)H)& z+gU#-U8?!=A=sy|jHf17bt+m@ahmNV48z`&otY9AT>R2(vS!`x!u#+H)%AlKcNLqL zX$@XVr!W$&%?&V@Hp!&K=fAZLeWBIvBDSHEQQ-2dMXr-L8nQzz6m3LTzGr_YzWV@s zaxIh=iLVTkv=Mbr`84^(7rjAJ#ZS-p@5SK`LulH*O}AYciEUgFQ+35JU!|Jn(~mnb zst3*zvp=nwBt0dTt+81&X7XD7$D~*LS&B9n-5JI4D^6SA>Ja3=pBM2tgq~(B?eI}p z?mk~CP5hgnQrnG-c6Qfy5qeYOj>N}Evc~cOEFSB_06BVMey`*h=MN74pZLuB9}PE# z?`6A?;NIVY%+G~TUPa$JLb|}!3K4qx=~pdLH5okf@F8eJpvTm@X9pu+Iv`l@v{12j zWLZ51LRx>n%D*l;Y7XCZ@aL?!L_dov#hQUwG1Fe2;20PEY~7^ie|#0L)B zYpg(t(cC)PAW&=gYfogz-R1sVrh~)~k>Va@BBH04=r^$LeoQ%mPtNunQt^#t3zf&+ z2ooj#`?d{C5Fs~Rjyi^Ect{BB(IOZ|8K1*6i54T3Ewfme{~hI)Is#FtQ@1AKaEn#r zAP|#h)P8cRH#cE?~MnMRXHw7PO<6%6a?&oAf6@z9&i%a;NjZ1wg3Jy zIV?8*L8vZyBohb4U3my;VMmhh@^lw#R`L?$S&$I^pMDTQlFh{^XX*^<6LE@S(i7k- zmi-yIA*egSzgOGv$G!HH0X?V1{oM8d43AgN(o_rO)ZwtGTz^%*(yb97z&`o2Z}<!TtNEgZVZP z5(|P<^b0$_y#i5K6z{0)7YPd!G^@$i%J?J$@@OI=I$|H3Ss-@RNk#K)2 zo^qPw`uo>g`E!tj3xRll`2G?x=u+rG z;?{7>2qp|W%8x>xHIPF~K&EcJ#Ozbt=aV3<6ogD#7a{zs-xwMKy>2oK!xc$3lPv)k z7$^5+RSL%oqH*;Q>ulngIr!Wbo8U)LMLzc8cmspz_Ht0)W2S2n_2~A5=KYeZU%3L9 z2#C$0U49w@S+8}=VV61}Y=^8v@kQ8o!UQQgn7Atjgzb8eSYK=rT#!nZi$3XSAol=~ zbKkOdKS?Gm^y%^QhpLV-JZeeZ6J=sY$PefP(e{_{l><`F_&C2_ zc%qT{AQA03!S)md2C(TF`;|TXNOFOaRUJ`@Db;Yv@qUx+*Ser@Bn9kejs9H(@UtrF z>P@Os_t1Np1z2RH6ci$x&B!7zlN0O<*r4-FruAqwWOE&`Y3Kf`Dj8jCYA0ENzcMZj9+&V~u)1(4ilsN~BX>Smsz?6h-7 zEq|RE7^B}BfhUXA_Sk0Z2Ck#ZD7<9|sPrqt9=mQpO@0`&z;FZ)nZ-KD@l~&ra&bKk z`cHR07uA=BLq3zvVFOx}=P8OSK1lU>aPfJ%?=%SNX^O(^9)BTW&?)Dky|K(nd5RPU z$!O7EyJdngwEfz;ql6K&V4!Zucbma;^>a$6Ay$_7XpGBzfJN1|3Jwu18)WyHJSz{$ zXd~i&Ilo$|*`WSSNG|5Go5L{Mj3Mu%FHD_#yr5o=xJT2urB`W$j79Q?gWl`8R@ME= zO#DqpR1@P8#ErPVjI?}=T;nlGK<=qt5LNAf0%Q^~PM#3V0A z2O+2_fFh;O^cCC9l2)N_yYt0re6Ib~`*|r@FTu2DffWaDA3&GN9}OaczI;KObHBn zpxsHtn56?KPQZ=ZIltO2g>!pIm}0nD<`#o@dpUEw+m0;@S3e>nCY6i53C*bJ0_yH=CDWpev8I7gYYvmoLfn zRl1cC9OsiYXnFyYiKZM5L__)Rd3>SH+o7(7uGxL>U7)~|6AHtL_UvNvp`+P+>h`iU=2+enn+r2+7)%1`(~`(<_)_oBp=)7d@hZeW0aJLMtgcMn- z@ArSFuaBX6Muz1%w4M>h3BJc_g9>{>T3Rh6GaX-($clSeJkF>+KF_3wgA&U7WTOQ_ zFa(aE_p~P{ZAyFxb%XjL*G{{R@jjQpmyAENsZl6~WLNe&`6wPDC&^EdN1c zb=3HPI`}%;Zi^LoDNZWjWS+~KIVIFNLO~?Zfb!#b+3b}H{LPy{Zua9(;v_gv3Ibdt zra&WrmCH|tGABN*S&SqqRBQbx8R$H=&O%ilPKd~FzrJ@NVkW@UTo(ntb3wrytx&`> zF>BnTXOyJ?(=(6NJ`K7W!~_SVj^1*w9`yGhGhP`A3#1P+-D^JS`HY?~SsV)TepXL6 zLQEg2GePR}lsEo*^nd^M6Rb^*z6Dt0_|-@N)o|jusE7Odw>r9sw?v}BPIdl_75$+$;s1CZ43sKVTe^`sayYR7b0|)rIXy9p7XY*d zs3HCVWTCb;a8l^!R{Z;YV2>_WfvdFaub^1;977=W0lx@}gS0;Kd^WX!trP&OQ?R-W zp7wp;J81rF*0QcZ&Gp^o!Efr|>-jNMh|%9hmDo&%zV#t$9B&BHhfF6{8%faQ<^RXW z2w@GQ=C{85N;VwHI5Yik9s@FD2A%uaY(5I0E}z^z9mznvJx4mD6}H#P(1!Adau0 zIxZ1%hJuoOzCEB8RI>HX9*A*qz%}T4|M;Zr$+Fd4a&~_}$Q#6Q1NDQfldgU8+$UuLC`)9G^mti=+z;EZaDg0>KZDT?n0HCpY|kB@ zy~0md!7AviiC`10iD5oH`)t`_f1{XHt0XsE7_N#J(;x~q>Q=OlN`I9FIbvTRznT=( zoWt&@Us{Lr9y3LpGKehpDM|%ji9fTgFk0F`q^bDsg%x`kg=PP;H$=Kb;V-$8)ApUVFlaMCMnhg@s$k!iRTW)kZV`0kM4thD4ipTu&Qq#u4EVTxUJW;2qWfb{L z3+zw<+lGfupI$HmjW1#~m+W~=bBhDL7kFDKj#JGxcYL2s~c= zk91^(T7GW4^g7^ZAS00z8oBu>hFTA0km^pofp%%c_IHY0!UZmJaO313 zxCi;vE}m!{m7#8SRgdmi19tD$bxue-5`gtv4vZp8;K3sM!O3`^Bk0PWc0OTL1FK@RXCgN} z9jZNpwz3``B96~b5w>Ctd-)-+%L{WY@mBpY4aJ%lCyvu)Gd{a$i*g9t!dz$we$bvT#WS zp_Z+Y;E>gm#w&Z+;+V#bcJiQWh7*E!7raxYfUfAss!qvmyZsdSU`0KL__*f4HF<<9 z7;i`22G2Lw(g8axcRRjqnGuBhH-J7`N2Tigb zC}dg(^EXlsC0e32>@rd`T(A8z4)Yl)KTca=bpP`*J<0hXqcGRcRiE%C%bh%u$4K1A zDt8PN)CQyPBnrahkPe`;ghDJ{0bzR*BoV-qoam82EBS)f*wtL<YxjRnYHqouy=| z_l-K_eTE8_-rRYD`d#EcaRGP~4OaE_Qt)3Yk}%HJg4P#Z%%Jsi5!lua5yH_{&Q~SU_m)y#i{ufi9p16%KOmmd8{sQx6*}?tmiFT7CvSgaFSQ zb$sN!SDq@pK;8RcE0s&JO#FrC2)_fU10b@ll7iwG(s57eFOl^%7qPv@@K+8%XcKeJ zJ_SV1z>5cn%nUoV1R#Sj1~f283FvkLl?6;*?fb8(<&D_%q8vjFUmk9pH96YMuX#l0 z?+3B@+9AuXvH&Y`Wox`igzsLA{kaT8UfqeBGj|2-IRqz`AdbBN2wvTf$|b=1DmlfS z?`$lKu4CaDEw&FEvAr~*qga|ENkGPI#MEjtVrEkJqz7B2Pm_8 zdoT3C1MP$+$(L)LM#{HjjY_MU9@CgU@h{tws1vTUv^4JkVn7!Vh4$|!+pIr-x5i#L zGFevIqM9WhJ3b9|oTqr{kL(_uNj8~2i&W!8%cV%&qkDz%a=YFmJN|bnDYQhi@NL*g zzvdNPt@PWXLuC`bZ(UU-o(>jl+~;_SfylPEj0wC8?&|t2oxs-&4;MG6G;t^fmDa&L z>S744IGM8hat>eAU#J}TctbuhG$96}D^^N$b!nAyvtxmT$#g=~9R1L1;Rp99XO(j2 z|5kG7xQe@}BiQvSeo02%Msxk#V8QHqnqBU4&d|5pVi#Xdc|4Y>Rnh2~A#g z#oq4NQ#Hj*y&xLmv4?0soFqFSSc*|}-is-Qs95~7K4cHiR+8YX-1l~>{L(ks z+H%4Ryb2tHj%P2)2Z_&QbXf{>rNkw_EY|!8E7m_!KIpe|J%ohIoxHMX`~Wzwvq~~X z0`hz!q_76d$2tRqSs}~Hu#&hmqbv>70fhuMl}u6U@z*d*paffm4@?j9j@QHtwmpWl z`gv2_@Z!U1d;=10>1%kzP37`FTtVPp5bHbQ`c_@I@SuyP_G3urP6iKL2XJFU6kSi7 z>o-0!5e3qvFn)^kq<+tD9s-{36O1X~HQzF=8U%uxCv|IB845|}{)@s;gc;>^hrD7P zkkPQc8RE{k-@nOic$2{okC_a}jKt@{6=zvT@FYn53)?qmm&BccZXzHAK_pE$oBTg| zB3>APSt&U<H30a4&4+MxS?R9$w$n>6R2uML<5lwb8VvzYm(llYHl4^b+46?gf;D1F~n|7j)$}oDZ_x;$3Y$YjK6{ zc70sf6PzCr3!4g!F$|6kz%agF`Hd^PBC8LPaxz zQ79q(bWA#+pDqNPd;3{Hs*YwZkX*iTaQ@BRUj!62j4M5NvvbA1^KLfpQrW4pd)jDS zKx43I(?~l*DiSUWDGYnNP)> zO}X7Ft;#T?-p=REIis$Y3*V!Wf2OELaCfnZ0t`os8UNv)H-|PcKaTTy$7ZAzVistuO)x1V&Ofe zK#RcLRag_VGe;?#68U6|P)|fpgi_2y~e);-Zp8%OhJLm#Qho5!{q;n#MWefY9viW3Y%@@#6^6FFl0c{-nMCifg*0Mu9+e6dYl9dj_;StK_=+0pTCRD+ z)I04yp)eEM^o-COfx}UI}{;`jreYm`UN>jmryJ&-{(Uxc4%9a?6h|lHSKttK)dwsFw9tvXyrYJplH7DNrE#?#~IK3 zbPxRI`a~h*3`%bY&SNAHIoIO6hfF~#0Y?(Y`fAz*4+S(B7I^y^&}-j3N7H=nPsChs zyoGx{6<_hn8NM3Ua~nA@={0WyQ#7ULjR@;n#DZLY598sKZQ3O>-Itq2QoF{;)}Q}< z^dQ3^1YHXyY>Ok$S?V%QsAGE*t$S9ZWzJ+MQgR9?QmEa4i@(N5JOmh%?BR$y%mj{M zZ#36LRygOzTq4JdW(^$E_zf^7P`QL>=2b3?x*qF!zWP)nv&}iB-I&0hT%n{xnNn{}rsr1^8}KJckP)?UM!~ zu5OF0^-smo_hpBNYQsXKbpmuav`_mmCz$(;?!oqY^pEa_2PPR|7d7m|&I~`w-9A?n zJ1Bgla{c#KGvTk99wj%riAVX{$Z1_wc(;blbx5rX@&*hBf5^_^EOe{29=q z(xr`dGv3Vqy7}~!ltVSNr9%mc@fjj4bO=Dzfu5OTAL`&wV>q0uWYplx1wiz$V!Ds& zM}@{&*r|VnI^r1)?W&;08qCrGxxRxS8HznMT*BL{03i2RNAY8GtscJz62;2J#j%O` za!KDig&DW^7ws3Ry3R}-?=0W!ZII(~RP+=@rw|W4SkdxGyc2o`D<@SWa!mYWxy?oi zMVY;Vl;F4#wW3lKC$yzApdTlHFt^1=R1s8!pbQF1<9$sE)bR3P39K8{#C>}Qt>*3b zLy}Z(uSeimKpFeG&_{~DdZt?05b_9K{8ZU}Pbpts2)?}N4Gw$s<(JG!x47&)lnup# zB;pJkQwqA@^jZh;sU&(&52f{S@?JrC;DtvXBG@?2_r>0M>$eUp2@JnL^5!X%*5lA)SEd0Kt&>7j(7xXDT+&8*HO)KJi?O zk`{@FnKlkI=&wAnN8;i)*~;<565O%iGm^dXFMB%BoTGb{L-LE#8(<2FLG#x}yq=d^ zHRUW`BN0bql1{d>M>xlSm@7!sk7-^JJjnW2Rwgq`ahEN!<}^O&nyvk2R{oU~a1gRN zi`o&-GL8aAMuygH;QdDEv>SgH#H%EdW7{Z#mvg1Wc^`xwXCk*{F4t=7CX2mTNWM%- z&UV-lis}6#69CJ^YI)m>ZSizp^P~O>fu?y>Nr$&?z;OPe)fQu!2S3op`-1*kx0QXL z+SM|1)$5FIYN{$QkuyBkA}JU(;|DrBZGi@xIur=QrOReRPd=|PFAW0R0m_On1?EE` zP&Uw#{0n`fe`7rcvA~lX1|=XE6MpkvJj3~2$3cI`sVCNbF3<(iqn>kp$q;LFRBl9z z0vq#-ACA|+4gVA|f-XjQ;ZOm&aTsD(Q)u|p#ti1WQ}O@S99~TDHG%zWv(|EAIc@TKGJak1Yh1l9zu)Qx@Ms;YEMMt0kvl1AS zpZlkwgtSp#byny*H2mfF0e{>9yZqF?Xbftd>DRX}?iN^$g$|t?AH0W)O9W$8eT`A? zI#imTI5GTsP0%`hKmrI6H~0FeK{W61N__3eZIXexuP~wmq_;!+)y-FY-q*i_z+dkW z9_I+*K!=>!>?)Z0pb_o2iIt83Q0m}N>9Sw@&FVN6@g1k%0xu^({L-&B=j*?bB;gDF zBL!c>XxEgvM<;Ca$Np)k!F1l#1U!5?>RluVEh$6;Evod>L zwM(`>+P^6%NpFQ+skSt6iDwS-f+L5w9MXzf?vnjcC_$MUQ?=U}+jq9yXsoyqRsX%g zn~%Wj?H~GCv?hwV(y=wi$>DL#Yq-_G0+tQAG7QSYp9VdIL7d1i?@Vl%xIuN}Fl51W zfp*16RGF3{f>2QhJ7IKNNhpV@YM#q9Y3`^Kd0*p-FqC5i?vy$|53fkF|H2rBu_!GH9s|wX;ZEH%V3Mrg%&A2+z-vc%aY+@N4^^xyaA2s?b+Dv z!*|6`3hP8LAVsPxABf%{dWRh%^6LjB54R>|FW?yb|Omd0Oku}G{bi(?W|h1=!u zB@a%?H7V!a8MSOwUWZ&CTkBeE@9z51KWU0YQOE85{ddl#e=evx1ZEg05z}%+m?G4% zmcW>mtCOY2Bw4(8VvroN&6{q8%u>Csmxm2k+QW%62gQ|zrB?3hFEo!Rx;-PnMjF>Z z_vNlT0Yy0@|XP?_IHjqP2uHH$bV z58+ME6Gv3j=r~PVu-Z_VTEqVYpNMbsVJ9c?-vAHg7O&hYv!a%XC*!#>o#dJgQLcG* zP{H}h(4$|~nqpZ^Rnu&;-3;#qhmiDcwtptMwY&&G z^PU-+zYXo{`98BS#=b7pnGRkn&_pBhx=rMUk|A}k?*n6^1I(-A%ohZJ# za1^D|zpIbHe+WV8FV95I&nT}79+Tg zv#c6lQoR4@tktfQjkAs{KZgm>uDuC#3NjM4Lp7w1J)uMiSQI6&F!(6D7jCzcZ?CIY z5jW9lyB&r2fyk%t)FsZ(KS&xLfw;N(?Uv4}>A~1{jK-7*sRL5$-8U$IrQb0t=WJPa zF4pS#HI6E=b}1p0kaoNQZrk=^NT5LQ1Qv<%zyfGDXWMiw%#K40ssAl9WxFNoP*^l^ z5n4T=7TZbQ1C-~0XIB6&5o8!9{wUIzTitS;Z;NZ{dM7vf-yG|=4oU{9QT*IE&Ml4! zKGU9Tjk7nuu@ouzTJ0fijPAYbxY3H8%}8WdA{O=w^IpbWR4$&y5->w!bR z%+|o*vCT*j=a_q|E2^cTOgA+p)2)5n7(V7N9H!XW$hji^5~f*qn0gMX%|mS8GdCx< z95NH^adVUTZfGH-Tj6-Bcf6GEuE_R;0?~o6c~;{a6+C9bEGlnl$Xf3ecV~Ys5_DwMVl(OF0XRtyNE5S4ofmS)C6wGH z>_uqD+K#WNVi{poER7$wn z)LKQL-k+gt`rKOOX!k8#Q`*AWxx1@lpX~ASWAz^0KH@po+`v2(nf9oX&hHAy1ieu2 z2&Gj@@{7rju=Xp>zQ4XI=H(A$@5O9tJZsI2O0HD7%4I1i$W$(;PC=ee}Q7E|o2eP~Nq5QKG%XeliSZOZRwT`7+-a+9zhnqKX02hQ&#Px?Jh z5Y0_^WxICd774@%x++BD!;t11WL5wa$So0Ci<>cuTR&!9tj<%}{$ZV}b!D)|msb*t zvGN8Y=4^RGGe^25Tf~#AU(mhX@TYXtdLIqfTTf$A(BJZtDuHgAndKUbX1v*s)h+ZSu@V-%NCTE?gStpil3TM`g9s__xYMi z(@$4M$6Bl3d+$*@dOsKnOJ)8MUmE8Blpm5&>u#%6i%K}Wd|%0@W`{efG;XA|@+;B( zQmpuD?6&>27_E;c4l9h34he$$#q`L$HfuV#+BYaydkP+MN@@Uk?Yl zH>AEgy2uy$K|!`zH9nRC-K$w=Jcit&WIikDo{ZE>v%Y`ms{+hL(#z7Nh*hp4#v59` zyqxcv6&+ro>#(X|7d0Kigl+v~xWhhouO54Ye}zEcze77nxL0heQ5J;%5C8ls2sj%< zyvGL}q008+VvUzo>>Fhpw}E8p&uk+8BX2lt8ol$IMwU#)D#W)gb0z;W^h2IO2wZ?m z-4n&W6zE*uAlZBsC(BfITj3CR0%7@9mrxMzyN*$edL@{zA72a9t!LJQwo~(TQPY0a zY}=@vhf^cYuA|9)Y}=n%C)v$U!NbUDevLVP{3c)nt~Rvnowg=SuBMPxLX3_Br4MOQ zRYXX}EI_>nz=ASgh3_26G0*49hjn(d8igYYccv{G#(9-}#Jc%vOUpitE7%vE>m8QjK*-{jiN1z& zS_M*BMv$VDMpQrbONfZnbA0#H`~ccow~twGKD>4|4=KEAC7*i2yUMR!K(}MSzvHNM zn`oHpauorQ*VQTC~r8XSvz5m$y!j}1cGM;QV)XG$(sT6ERf9| z_Yj)y8^rd`?YO23!1$cpVA|a#i;6_A6D$Gs>xXQ;tAXW(Xq1&F!&hBeyqzm*AqrL* zU5}rCtZI$#-c8;rhUmL z;uYBnm%({gf~%NQ8%)i;;bsB0d7}MJLh`b+vc1W2b@-l|uaZ$e-yU>0v=rf;6SG_^ zZ!!{NWe;Yv5jL~lk~wj%XrfLxMA}>x5lb0~3CH(_WHD-ta6e?;AZyz(|5Vc?(R8>g zBALrPYhbU%ONQdb$oFx1c0m&h$4#qL?gSYHZm1qNUbFYNHYsU_XB{fk8T8v9$FujQBCZ`DgApL4%9tNGi8 zGKNz8*?kch#f4lwg-ul1hcvFbZDOUxBAPIC<>~?)vxEu}P?BXtDw=2tG0jpwa?L5^ zzZy@^-ajy@^34cYl1m&7uq|BoJCr^wc6c!CHtu*ZsHXd>L|h`7cg}4`J`^o~pj8?7 zK0dAu&ezs2%X+&==BqB|EET?|UMVQ>F*UKWL&Qlj_t_bc+z+!xPBw;xb)1j;+PLU>5i}B;jr8rI!NUc z9pKA+1X6#3k!(_Ud|nZU3iIkix~QG)Zw%?19Dg7|T-%1dX9@@9K%R}0$|aFrpt3sh z7REU8(~3*ZlJ_#VGQFw<`TOn?M~4r~GagNl9rZNCo(et3OmhxGK>DPQOmKJc3E%>F zReZK1)w&GG3!3aqK{q-OiQm1Dc~dR}|8|M$raDTbKs%Z?PzaL{XWh9+57K_CeS-Z& zMDPvjzIo#YTSi}8ibyESk;sj+9ZPQMBz-)zb=O$>U0q*Mi-zpw)xCSU>dGIdHyc*# z!(Cbu&+vIp<(c?&JDKySe!6thP=(D8pe?Anq+{kyR-`tzKGs{s^sQ|RJY?(+vurd% zXg@)|%}7LDTuw)73rzC_xY8&Y3erGGI~>!p%b^5eD88k6rqDyA8U^s`^%f&TmZcwUP+0VriQv zjimT}p1l0<=z;puT++M$W{|qqw9K`A$CLG$Yb77t5f_qfUQr0cDu}enB-}8#~%ITLufug)pdW}vF=RISg zqk7(EI_)v!AAnzD-=eWu-x+3Nke%0&%r=OcAKpyNLA(DQ(t2VC=hK3pewL46cJDuZ zqb#TWo1J;Rl=%_nA)Fe%zC&eCM=C8CHjzihIU!0zPt>8KMg!yf?ryaz=^b4yebDWz z`TP?e3a;IE8SgwDgYwlLerobINvjHL@^o~eNwG(KQDai3QC(64lfG!L(X533rBCdjf0JS34Fi4^DF)-jC)w3Cet%edi`_?vrml9Ou8} ziLEUYxhAd4jC;@&p5N{|i6|JX>li+eOJ<^+LNZqK`}( z<|g@M)wkCUip2T3t*ctQS*m0CMn50Rv6g+t_WLjePx!WggC}&ZI_9^?qcAk#P0jAp zbEPD+Qip~}y;%ZX+bygDnAmfAcdw$&6?OcSLT@?nqMf>yESdGhN6{J|DYke`nJRWk zRU(I$hN#PK;ZGwgBm;dC3P7H*9Dgkz3HW0jzIuQAr5*2B^xjR2KQWD43VmHrvY+^5 zKWVNuEvC|n`{BXJuJLpq2^O_UH&e%!@H^ud8)~|r+R|hSjW`ae^UU30QEK&ny|KfEYzdmad1N_z?{QvagD}_%PI&AE)w>tbV@o^Md9qZ@ zMyiFI7Z223tFU&a?~b(XqNVCJ?yI<%7l3hjKKP!EP{nwiU(F14LYmk;z5sF7C5%gV z8`V>~NO8`uhTE{m{f4)M;tYkN6m zsf0BGGGdgwMWlKf<974XSX^lm9t||a2^3=uKFr+aasJXupsT8(B^n4~cx6sdP(%Nh*_j=K6{KTDIC-KXQQQyJNdh=^)TXkc6l7whNU6e z-V?WBz=m_~TwWNr1d;O0cSlVsK#YbFXAr0SM!45Oyx-ujLT&1@3w}XONmrt6&8DWK zcMJwfF0bPnaGFs;GC5c-92SeD20DS=;?})SbIdGg%wA{!@6N*9-=dG z5M-JayLh!GQB@HlhUViVNWfC-3j9f!%ldZ`MtF=%#d!-n&W#53HU-czhk&%Yahzv2 z7q+&k&kHr_a;^6mXdkZBqo<9>mrSPyB-#&A^X;Xasy_BxKI6_#Z!4aP65G8db{d^z zkHhOZq#pz_PkAbQ$ipe+K@ALHJJW4Nt9!TI`-VYQDBK%6rwf1P9C>gW=6w>GNEsWb zXgDZ-_qO9R#?04pE#>w4YWpx=CpI;p!@EOpWF~7^r;s{;s@FSBS*zJz7gJ!R7BEe|Al_QZ+;Xpi8KG%g3hu{{_?B~yK9kroKR z>Q{N{H}g3jA$GaztL%4cPBU7$V14UuMKj^}KhhH0J!TAzYUT^$&a&uKi!V3ux$<&Zz`Rro2A4m(7QI#gW4g^$Tb(tfhy-=~t`}_jVIaDD zG|uA_BephNG#M46iEn7)s%VKV9#p-B_joodIkZ1~^JONX1#--OT6|m>=(bVkGE4JT|5-(^)l8)pR3tVDhq$8TgdtP7gWd5-ZBQ)EGDVP2R_Ia6_#B*scW%J3G zOHWdK=J~O;o~&kXufvgv?$ghPJ76@NzATSo)jRnKkbz}sG5?$@Or5%+|8Bm*uv zjs8CR5LWY!m|?#VYx6mojOSpZH;HdIlFbN26$=c(h0$lC&wZ>iCZ1NT_1;T!EScgi z7!uVx^4dAd!Jsf6o=W#Oi;F+Pa5)2=1|i+!OWx)cMIY4UB@4 zaON`%RK0Zdj|H(!Y&&6KM^|>eUTDK36EcK8dohaM4pc~-m$LQ${((z`b<~R6YbS(> zy>jN>O@=Vdj)z&*A#kZo-9DVvgk~cSs@}1T5XuyeU%$-`Fc$?@1({EoH)2|kE4u9# z@Wz7T=e^auiiaUPF9;n|@b1NV7)grrq3r(8KLkJ<*+ocSL=ODjZuxpGno2<#yZ15* zpRaHGf~|pOcY*)%6fnR_mA1HEPpN{MMHx=^|9LHN{>w)G^j<(NhyXfdJjTV-u;RC& zCx-CtayE5bghL|3tF$Rtg#e$vuUd89t_g_7T_y8Fg8yMD94ogZmxG3^c;R4f3@Yi< z5XsMVr2f5~D;xCfdQ{TMpU1ca^u1q87+|~&ea5nYYnyzhTf3m|eB*z45OmE^voPrB z2ZQ8H%zs&tjp`T6Qw}6pq!&+xaBZ_<#aFkP;5q&W_z@~wGtyP@>2M*e`j2f4S|czn!*L<{pY*#@jRQwMDLqS(Ag#Px_{X9 z{d{n(n`viJBX6tmXFWBl(Z8sD)a-2EiixZf9%+hfCtpkVTbDA?5R)cFmdG(&G3^zg zCYVP%M*2LCWjFPYWw#vM5kt4)Vt5GdY6}`|9`o057n-wYbdTqAZ~!j(Q#zu74qKZv z`&b?uweAm?6aZ5B8j3Ex0-zNwiiy47mi!nT)DFUO$!wHe?yD|>mATTLP?y$|0Y9F} z@fCG?Wr=3{hLni`C9jHm{^klR=BAU$XZg8w=7LoMH9N0rV(jYPci&A>C&TsFiR{}u zKRv}=DDm(kN)%hz`wE0%T!`1U<-@9nw(2FUJ#~u&iV{fG7b$~9$=Pq9>b(o4V2Z> znjL8X4YN4$ey5G~oBk5S*5=fcvtja6Ch%<(#Z~qxt;G=|Xhin z1F$ORZB6!`^B78{3tEVn=+&Z znIJ@&;*%&|f)GVsh@M7Pur^trKY!#IlV!W_bU4V3U%|LodBt7agvW8vw)xEKHaSM> zV)w->TJbA5#^0d+;qO(l+JXa%0hx(9QT0kP;*uW--bX~jU^W5F>lSoRwc>Gxn7PmX z(~#K4hKJPhMRjp(M}yhz?06t;uYmIb-6hJQt3`0?Y<7brkCO%-$sBNYyP57 zQAyYduh2UOby$I5Klrt8SRD%X;2a^WDORmHeGSY=PLGW|mYH?u)cccN&_5DEy=Esa zt#ru?TgxnC!HJes66;Vro@AHdJi^$!1p-BuPmI0UE*mFNi18=wknhaCKF66G1pA=& zX4Bkei^-L%_)i4Yarc208J~5|{ORJGfu&3zwmAIMBSXDBcv_cf{v1tWDpr%&XoTj!1u-?3OrZK^xqU};E>#5oVd491LyIhSQwy=Y-w{v>!4zy%G1b?$}hdy@= zc-*Jk7A;=hqapf=N7RE*jAHAe=HS|tR1y%nwnUn`Me#V5Z*&6j88&=cs_F&AhIq&B z0kLD3gT3^c^`x0p1UWKUNRdOERm?HhcSmT5+v>-+10OYW z^N5}lrZ|ohAGb5Jcp+gMM2sc;r?z1k-UgyW`;nU^Ji>$(pB8I&PZ*9KJA8Pxjy{^> zl_E^gP4_-Jw}zRH*zWzsW43-3#CG@NZLTp;oob^6xMfwm)yYWl(Z$5!7(5WV_B3{^{2j^T^ts7O1Ekq zVQI>pjb2$BAt-*jjLl!(fanD!B+Gn^3%@jGaVXT+vWq=(D)gRLlqm5~tFPsKWvbpx znGi;76Kn6g2azxhM0<_O#QrEnS23zyI~S!#yD^08tBU47%4ZG*a?%?6H;oi0dN;oQ z8<-E!uL@Nu1QWi^nW}dXpztp)H>s}`2{jJ$t6rS zu+eP2OuN9-tu^UOkpb98~dQ$uPEr@T(Tv$ zzpeye|4(*)gGYmC{0`Pf`hVuZ9|4P#)0~wJLq1NUkXdqC%03G`%_F*W2n!Dqft2i8y6E%%#HDwO9NPhV zOUa?lxzFLT{Mo@W_9!P^vtvcRw@!_(Jj;reHpOm>kCrZ67M!7(2xxQ-<;?|SL81F?A@z~?cyFxNjyU|9TNyuWAnqN_L|%M)!51-wg^}mb zcp%-w*qd5$h!qUVeqTaO>D;b0JEtOWPpQ|mADyx*JhO6>`__33bp=_}DooRhsZ33@ zT7*s-tXX-uS*+UP!ULWU?#9Hsm)u$pquj{K3oF(>@$Tk!T6!T$&0g^FZd&GF^}^I> zy$u|bi|KXK)u?*wm@B9VRSYiu4g1payEpW;7UmsuYqI=)?S6yl2p+JepB3IYiNSJz zD9mOi$TCsv25RSBtI4x5(#&fMRj=%P2xXMR3NA)5A*|K6A2uk{^-tgC2x>@Vu)?C6 ze4dHOEdQqmajD(q1fw0uZ#4NOIn8~x{+94jH3&exB*yxH?#9%KM?8_-y{ z3Lv+LbDDW<{0|S30plAhkjMwhr!umMz){~@Q@6CA!@{rChCa$wJ4@_oRzPQ!I_ zG?fyyIkpD*AOw>HGLvX#4z|{EN?7Tauco|X9ZE+1(?Jmdayhlw=T$)6P#Q_MtRSzI z&HS;gUw?bSCV=6sxgT)|vH@LfN%jn3MnvfMl(lc(j)q5G=T(ZpxJ3C@P)0TW@~aTC znZR^-vqYHr13c#rp~gn7?FIaa%JOKI7^vfY$AABqr+|vG(<@&0a!|#wg!ltuxdC0b zpCAAGA!SH}gpfBK(I4M zyhn-seBAGU0 zQvu7OwwQZ+$H$wv3nDj~HJ6GsLP-VL(*Ii9_qOT9oiG_80tJW=WJ1n=1%h3HTWe$Dr<&GQ;H$VN{rVZ8Cjme{7EuMVdB8uo;IRyFU3qjY>F z_8bbx@eAzVhCM;mYa-Pr<~=--7i}ZRj7o=@n^@hdt1oF})y-$K0SFUg<-o^zH-60g z=;g0t8~SJeK2QS_J|qqhE49!@0-MA*0Qb`gRA(!JA0+`-?1X~$g&L{Mn(BV~Ux#w_L-Xl8j>jPDZC&;;^G&-4 zwmI)Fg;p@v^{xJI`3R}220(tp2?o-T?SHvr@K)3ztPG7**FHfcp_zyfH zM5`$!MA|Lnh5y>+3}lj}5Qo3qCOK9F@>L>Ky;T#+%#gN}ShcV~cE}vic#4^53TQ58 z)C8mVX`Ub_h{p{w6iqaXW?Ig}QxqUZP7kH%0!J3W*$OahT018$DSZ+24N$m%(K#zTU= z#mG%qyvCTfh?qQM+M$;2EB3lYf5CUp&^u;Mw+Ow$MU`KpohP3O2A1s!fQ*~mCqniu z>tTN03p5uI(2WtNPlG_ViRvQq|swW zhir3fF=paWy;mg%H-xt*{SWp$gNwn`k^xCYWdbCj4)DRCP6d?34LhW_5t`F7P(k8t z2t*iOr%D@~#IPv4_^gBea31fXxa3>N z|6t3SIDFduA-nx2As2r6Ml5UjJv3pl6Y*Z1s}(f$RA()qkmJK$dm3IEOj_4ZACFgE zoM~{Xd<@uQf`bSOLHh%+=_Qju#E+R9~ekmJ6NM#(zc)n(A=5r7kB{oH4UDkma_zFgA zcfy}>zluGG!XKSgMRLQ=O%{1%>>gJ98b?aJp9pGBE~g8wUPaj1li+Ptyph)%jzz%8 zT`LGC8toeEWN0d-GeCQQjK({mNs!=Gpm3wMRRO)`%DUQid_(#tw|X02lZyMVa-6PJ zp@5O*;O3FJg&NDxrf_Kw+X9jrAy?dYu@jH8qRDM_Gx7X#KiL8_S<&p<@4niI-SBk4 z%`uqNt4Y)!tk=;aFP=n^4y#r=3Ax%EZpGVc@!~bZ0`vpL2fkzKf0k$41sy6?iy=0D zb*4|s#6joZHyl_Oaei|)NM;e$%xH)YQuR+DGc!pW(dL*4RK{Vd-a~;cyYz-z3g+1F z>_)hZkjYpyI~AGvQ7V#VEM_H@lkMZ2v7!aAlGZ7KIOuOtzRFz0fbV-|!n>e0pA@^S zrVW%uf!xXT@xDn>jA_9}1%Y5L0xFmxb|@&=MIaHZ?{__wB+DHbV(zyn*}f1O)M|E- zuk@r}6eq=<_py2O$4XlU#KPWe0gJE;nZ+n%7G+W0YTSVe1HS$Oc3N#JB72x?HBQZ` z{!ZOr&e+;51A3`EASkGay|fR)?e*`iV(cwIWDd>7tJ4vr9`i*3hmyrTOJ>*Nf~2$F{#B7`!FBpMTdgH-uO|l$ z@lYG#FhAk+D!ZI_N5=-TYAT`QUwUzV8rEx{PbK9{{1R;o(85JIRIAONwu!2D6?Lcz zHb*D}MExpZ7&;|i3lqFh7BN5je-tfb8Q@w_|5cdjs|J1G4pTHQ}a1!2KY>yg`JHTH~2x}28tm;gX#9;)8cpAK;VQuqzt{zkb-b!3MU z`5(6i)pZ{r?zPTaCj+70ryHwl@|*7hUve{|6UYkOQwH3$Wf+$lgxf(Y z*JQzl=7V*jY+*u>YV?0u5)E#9AvAA#VLX00EFnJ(AmSH-?t|K9OAGfXHmyQwRczdKNQObc84?nSc1@Ad{PngE=8+StP%#n$1|WMrBI z_v>Q0?J@`p)1}MdWU0cvUeiMW|Nig0^AJR4#z2s}0%lT5fsi!RegE&fQ@S|lFa~UD zG8zkNkZy+Do3qXTs5V*xtHzY>MVK|zYbbn$lzSx5@)mU{8oh|}R$fyB5XwZ)gdwT( z?dM3huIN`Tmn;jLJCP+Df?JK3ca&B!q1A%K+QRUqc+09TeOj>+gF;u!2m6kG&$-NE zVdgXLUfY}x@h)UFFWSvb1CIPwx(+0H^ZN>hp7D{|e@9*M%qIUu@))vn|4JuhfXZ@Z zj6=y5NM%I;iR*jtT%JnWAX!GXHusBnSUTI97qK;YAjG_z79DNCf2xb0yp6KDW^gY> zZ$FOV@vQwG?+BTHkA+fte~N{KG&}lw+9Dg~O}SEPuUF8QODR2M`(+uU|6x`jXmRT! z0n*k&cc?ObD`OlX>~NyGTH{1mCC}U9E3U8{X4<+5C>pR_>sR&CUz?!TaND3}C$I1Y z{8+>JM)bHFP~34RG6gl?u&(#$o}Es5R|3#EHgrv}smWUW8lA^sZg9D6hIf4l!m-nW zf{Dm@PfaAKoLAnt#HWKPxH`3-vRfBP(Jg_I`fAH67~iTpCKc}wG2-Mk%=aTby!}#? z4As$gt78I%XVu-q6IhzWehqtXEk2{qRByabc;|lXvH$DEPA+{MeZkI9CcrUGgWER{ zE;2qWo@yQgVIuMo15;rbzAA`mmC=|&miC}vMuQt$XK2k*Wcu)%<@X26VslM?c%Ye2 z{rna=kH7;xP97F}JnX~A=zacnfXl%5#$ zB{%81S}expuF{Q4lo8)UQ?f9pY2@1fm~gl!KKB~We9)us$Mc^q8Au5GbNiKrGrZ=y z<}3K@8<-LNrux|<=QJ4Wf)2V$es{EOCrpfh+S~UtQEKN;K%9lyZhlWK=O`JM=>=J7 ziUF+?9eF3ORw-seOI>?XuXRtL5)=>Tyh1ksT>2+#&lzey_JDq~$y1>!E$jY`es?q; zJA?$-^Wn~PLR=>F9sNd=nw5?T@cRKDXYO)944L*hKs;l$dOiTE5v0cUrOo0FkS{kW z)&orh;!y+uPuJ8*K{nQskiR^uW$YHsbLx|Q`j*0XyYg!p)8*IxV7!v?F!eSmr z64m!~Tc%j;!*>_Pp1x}Dj%lAKb~}CKq9Kk86nz7Wuie!u;-lmFQ)WGr2PAw89oSal z)iHPu(bAxljc|B7n3Si-H0$o3gb2Y_3ey^g$<}}AR0)5vV%81qbKZ4=V+r9t^JLdl zyFa9yzL|C6TDV{GSj9aEx3VLQed2f~Y8Xx347`i0?o0 zC3G@8EclW-2Kh2FxIiHo5+Myp&4qaf@;73eGW7bdbuI>#RP?mY6D6JWal0cYAK>RC$aQAj<{BR=_gis4((4!sY=$ z#v*i|9OGNE@8?s;g_#%0V1&=eu7brVIb1|Jx%b>O8@d~jlTtyZr404neC22 zv*l4H55m^J`3E_BF%TNe`QSG{m!;dYlQZVqT)r8We$#hq9=B~;iR40O=^^&sa zDzIwZA?d3v3h7Eb-c9WO7VZ6526*!y+&+ZB?6Tiz5Zr`0{rd@E5;R3U1NeP+ zOQ|au>EO;X+`kZvl>XvRYX7T_Kz!rW_lQbE(A3@KWO^j_V{#VB}MsD6;3?8 zXcJuW6UQe}dVhW}&m4tz-?F^HbAtQ#5CFpKl`Kw~p!DnjNar1qh`LL;CmYm{!>D;Q zwW;UYnYN;Qmx1?NSGK@q6-+ab*gtCO*0jes=QR5dJ2aub2L^7hK76>Q5t7C|-%Hhk zBQW=&61dWTq|}0}a%t_MHv}5kj6Y$$whU}fy^cG{C{Z|&Io9glUSaCqD(pR!Z+-Ge zfD{Y&jcze85qEgib6Bb`2Fzn>7K;vF@nv7fP@A?=HE({uA(Wb~+Jnn$z0HD}*D%KtbgI z8n=u1SGMu+Xb9gj-;K zPyTsxH5JWn4imer&_ZC|NucKoj&*BhgcRZbcqw!yz-uXY6ch9 z<~G>8N7$14f7muaVRR@tkx_3Wi)CgvgnE%Bv;&RRs8) z7&MH&fD@+SFtWH=U`1xvnVNI5kS0wuV!^0UwRm-ZWU z0{>9rkx5>f)hGpv|BpAoqBrOjO1+F*hf0)_@j{7|raako%JW)3W!+v|j{Xbn1t%Tvz<75iTVAZ;W5A0IB*JAU{ zzJD*t1d|YCv3>YhgQ&qKsuu=x#u1?z*NlKgG5vit?2&aKD?@P)sp5mE`#M6>4~ZU0>OF&%LpTlB?uC`#MLayS-H0Uwfno% zL7feOes?2aRq*T#OgM8;Ep>uVYO#p&8RR?n{;zA2vQ10Iwou?U?my5RfV)65u;(=z z$t-D{ow8rsf^vz2*TcSR_c4A!pBQEUF33}*f*CH-DG4g?^s;vZQDQ6&3O)p)uwVu5 zJS>^}LZ}4$W?5J0K1?cjCo7E_f+NUw zL8jlt;62JW!IHbWuDVB=0!7eZdw=@DqfRJ)ypBv4U4lL|vh+Abs!1Rg>t&YSGks&nHhK|D)?OuG@Z-hNpXui~A1YX3P(g99;_cH+6lGOYOcje*)b0Z?XC z`C;38J&WVo3$^{l569p7mL&w0VPFApQdj_oQ7#zFT{)0w7=zc|lC``#G0;^1aP6D; zi}n5x;;}rm-WUZ2CbUWV?JB|xMjs%M!Q|4=0xuhxKT9LRR~`W}F5GWec=K)IeWz|h zYO;0Zo8QOBHTKUI#{m8jg33jliA5mgoWM-L+AV#XQ^7_=al*iF!V~{F_7Ap?a*mQL zK0G<=`t)dIH_){n=$fBO>#Hn&-NhN<{$4S%?R7%kZu@J^=KiZDpdQ3z*mq8qaq!%m zIeXu|73<-6Rr%dH${?iI@gTh>!7(!7z8R^GUo!C1%eGJf>uWjPh2RN zdmXD}AO~pSMML;iijfV2QE4uoJQSj^7L57qO`K$yL>F#@2&+8C^mMSOogCC!{ zT+t&Yu}^xr5D&P7$8IWd=%hr$$*QA2$eAs5On-NUH%R$hc8-!hf-YD_;_|<%>1gYU z4Nd2tHpxgh-ylq%#`bQfX#0q=;ocwVORsO$1dG1kgLF!*D}@%o`yG>h1rsTZkj?I) zY3*RPT3Fh|2%#yt=P$b@ZpvD`U^I)n50cCXb>!>czr0;eeOoP29WZ`AM<=pTxBZrh zBn{9ge_k`leqAeK*P!VI%;0HY1*sCOvo}dR*gC&B)9R5CfB8)=eYtcR2P;1F6YEUI zih6BSEd+P&!=-*KZdSq@l&bhWS+NRC&822>G3=P+C83}R04SFy)NZl+GIzQwP#g*4 zB_lO&^L(>pA(Wope)+27zNY-BD)ni~iA>;mI9DeX(pPmsd^?VS;xuaN#F{IVH4oeR zB-QuVI&lu@;*V_zXuRL3>f?B^UuvKaX1Yi9JGfLD@Jq8<5g-2JyL7q&O^{#wQi4|S ztwjq#Qu~6dLuSyjL0^b5$j2UTy*6$MJ#HS@1vRa5mb&Z-Aj)Xq8kNH8g@ zRFJ}bb1y()S$zP_@I3&RB`AN`wae?E?w3Jc=uCF_FBuO?TsoHmh+V3d7kiHdYwB8d zE}f^p8fQF)1J1$lFTU&~9q$Ws2tzGxjMB2eCv606$}ZZP-rnab9#rK}dGA-m z3L(SDsyAEbJpJi~)4Jn3vhtTzE9mXG@B4nkZ}(N)K>)WEqv&%Hnoj(n23Zz_^Id{?d3Odf6^XkJ0ma7JhCyhz&v%l0F~^w&r|aU{S;azgY7vWzF$lM*`aKW=K0S zr)QY~?We)H*q)VlVJ_C@uEmy1mph5zarsc?3}2qqPJO!EDe;xW{_}LFLm$AEa~d99 zf=Si^GCaQ2mF=e6ct7xd?`0o`c>}I?2qyizP<9lSv%T^I}Np@fKqNiLK__Y zBBd30%s`>F?c8ew098j>=hS6^hhE+Ij3JQqI$#QFkX=%<_`vmK?4`&Lb=h)lBdhlE_;-{!16c2 z0Jc89J_Xby?+1=8nex*d;GKV9h*2=1P6s5hZ%`r)E*5<|GqFs8X*W9=4Vi`3=5s!p8% zUhKi#P9e14PbuD|Q;$@OyO$yB$ZRKvCF=yV*EgshwCp4v8>XDG@!7ewG$v%FkF0%d zQ@7fZ?JK`^ikXq=%@#tDuf{*O!Oyf9S}|U=|MKD&j_o+HT#z+G&_`R!S-b}+zOK1o?VdK!pkQ~v%!S)J0n=(=Ey0x>??5UKa{*bP%PlmA zkZ#pnYTN{aye9QAA~;~CJd8ZMR0ZaXcIDs6M~pFy4qBcfeQ0p(SQ%Q^X1lOqz>zS? zcwMWXRclCDu_7O9f!>=hH?Hr_0mKi*pN=&B3FekT?i=7-sT?2Ldf#+GYQ^Mni#2W^ zkaKt}-cV!Br?5Sb z4@ZLP(?(FIF|JtnXq{<=*oEaUP}iM2CIGtVO=u@N!!Np|)-tY$bh!DS969U2D+|O9 z+W)aZE4%bJKkS$F{s-r*<`q5lPd`khfHtrdi`V#POB77&$K=d^wj)f_mJKlV2=irB zyDUq8{{tkt17oX*=Karh!SYMai35S$X1dSff7bY~)&Ad4Aj1fR@w-{eB?Eu%$KO0< zM}YftUE0%q|2WE(^YE)UI1lXL-oGya`*W%nO#y6?I@hpV_W92%_3;(>dJUcdNCE%9 zK6?<{F_jY8?*D8-F0ZuvdGPhyktra_=FbuR-41M94grZ@EM5lT|2))U;374MuC~Jc z-*WP=nEorK|BC7VaiadcP5-@3|GiCtvNFE{yk=f{xWdQz+ zngWwE?AqT=&u{u0t+po}AcUj6Q_F1}i&fIZ2S8Vj5rxGM@-FvRzlye8LMJT|>3(s5 z{c#)plFlfj07|}DN$L+*SB~%l28+p_CEyQ!prz{V;Qr*->8>+Zh12oAujQ9rk)XFn zS3K5QC0OFa-{CZA5PD4c((=*=AS2V`lCx(sa&tX)PsIzVo| zOrDJ64n5fOa@7YkXC(ZyLHPr*(zxFS`b6hI+OF( zUFt<~%Fr>y)%T+<)$ciZ_YkCc z{Qf2l?fU`rQCj8AeQy!4Utly&RNw86oL<+BfA?VK>v`KsMbBUcs6Wy+*g$!~=8HhCSSmy`)5;lCviSDQ z9;-t{bBhj|^_*!sr5UtH4eNgG#sjT@+%Rc-H8xUzh-Apw0?_EB*1r5Jwe4-H?X&7- zjEfrAyTM6Zv{XfXv-iIW{GcU%p~Bg!)jQT%>Ro?Qk23`+w-9cgeje;lZnq%24S9zP zfV!f%@cVr%)9;}`pS9*tkf!8d5L?mr4IS|@RYb?PeP)RXzFq*esCxDYVcTP}v-;(u##ywD zyZ^9U|3J6r&H#WO-?`5pocTQ`Bo-co&Rxnoudg`UkOhucR>8=EZb&7Jwv8-(4d1<% zd>G1Bx8sD&ZNr4CIN|Gvk^cGjRv(@9b>apmHw>rixA!#%Gi>pr)VfM5UOhBf?7>Ke z3nD90DKU#`QLQWHlI^Eun(nb(aIhDYF*9eVM!KStaa`X~TMl1;7Z;Vr_o?7=)h=37 zK>|mxWYGFR$V)lB{r9@wEv1k-2ASS+>D{jf?+6xb73$iAY~ry&-=gBiY6j8p0arZ~ zDO{Z0kx9XXYWRY{k(b)3c_EWlQkQ7~9xXu>k6_q%lEWLlMkK|&=` zE2(5jb9<%om&Clm8bePSJY2Rv&;BUHezcfj+d42?WvOZ$ieSP*P+t3E3frj!6At{& z8$F*VL<|=#2mD=o9v_VC`><;H2}I5$10%(R{hUfnMVOx@uE&Gf>|PWPrXpK|Qa+kE(s_klj@9~TE4uAA;+#jWVT-%uXYetNXp0}Lo6<2Y?r4bXO%IgyTF~&3!0TH=Y zd-z>+2%A>R(XpJUy2Q$-ZL&{hmtE*A>c=v|o9lp+VtCtk0wcX(M);I7P=xj5IX}Wv zU5In%*g}cwgixmMncd28;i6yzTA`#eZ!XA5c|3X9kMJ8#OvSc0{L#X)0+HQXsP8%Z zEwj!2_BOp6KK}08Dt8pCQo=hlV8!xgu5YEuQ0;DZLr5p9u*!*FkyW<6(agVqo>n=M zuRjXg88xkOQ9GYpZ9h8QXuPeatvQUfGdTUDw)*(BCtMm&H>myQti&OWv@gA{XHJ^P zY9A<%<)_y%OmwhFCFq9Tkd#!Dk+Ga5jzC9rwGKMFxs}Z%vRBcHCEl zdQ#>F%@EvL+;mPH8T+ygwZ)~;nL?f^%4VT47*cEt=lBcR@B0I8mU262XHSSLmI#p- z-)_}dzMp>N)iUjoWJf)49=c=6iz9`Qt1E0qkypKOWIub8?=pJLXkPdaOY{~4} z5`ZjvH8$IjU)Vr(>==`Ji9XU}MeHv)n?gSV4M)bAb&SR+K~hHi{df5oh;B7HyPuYd zVy}^KVyxq)=srLev3j?KPK>7^Y8e4Ddq6SdMe91u=JdAtuRcR-4zcIG@Y&bLIDOa? zQCM+3RJ*fh*v%3Ov0V8|F~wK3BeAq5!vs`M*P$b_?e@IGa>EO9`=P`X|oxvc`$GUxq(xEG=FgE8bamR${F1j>GW7nM0crBI3HY# zg3Zi*8P(NvO)c@AOu^ z{3YTGq2_R*!PunzxWCNU*7!sb-8;!753N_*C!1`L?j&X(r>(Os7eB#7Gu84mn$KZk zTZKwl>U%;X(fZ?+HCAlZAn7|4ydgbM2t@MRbJz%khV8Q~t|9 zaS*UI#_Ahn%J0Gm7b<|U&C!Fl4kmT*i;&d&_SW*dg4v>vPcpCsFwEPW*OMgOSQJl#}qRkt`M+RCJQmTI^nPKyR5!uNp1uW;4;)lZ`>y)23f%BoM}@T! zB9lO^ibHY81`wkHL2}dL!NJaza?Z45i3;3$zN+MG$Mn)O!?9L>TItd=@{UITjmW1z zg}TNMq>{siC!I;j!s1w;2Gr2e~ zr^h4raSorH3y4#syh=?Y4xX|zFs!*3qZ~p`$fxW?Iu-F*zKmF=CiI-7Mhhu>ASfF55uto3FxNZI$&=nnQYHi@q4`KrBVX`P|gubd`5 zz*nj&7g|-weBifO>~1f%WWAPVE1n%<$+Qk3V`U8P-VrXwsGnjQ+}*C=`)w#r z=Ca23ra6{pBKP?d8676wmo?<<%Xn9R4(VLroj&d#o0X(DZU;D1W=LFZZW*ALL7VkRTw{x zQQ+pT0 z%#$Qc_fYKeA4sK&dUbijy$ilIdiawR14|~P;&S$+PJVUG_ofcc@bgl*-Z^C|G4RtHkj*T$jmzK@2kCwwNA30P~AH| z{kcLBnQ!yb?U_rc@%C;bZke&k{8$H(Jz!gc%5&3SQHOfsrwdBCJGjestvSF~zI{^I zYh##c;<>}T`bX7k)t(XXvDH(rRXdj4N%ECy9&<%w!bP@hO1Zoa5rsyFznfh8kb}$3 zqMI?%snljn`#VmScTlms7n(nD+O|S_8O`=}spV;E$%3q#-%=y0pLkHvwl<2mz5$W~ zqED|nXOK8%#NHpP7%eRNH0;(f@AfjYh+ek4`m>8y@d+_Y1wHTUv@W`ToTYy(Mhj&p zgrUcGj(nLe)87(&lc-PEiNSUiXdpF$1+2apmR3rOOi%A1^yMO~KckAe2v2!+>rlqC z_dp~IzpvT(zFyH#X~FFdc5Y(w5~aJa0Zt3ETjI^9c`r5$6nKM+ii9_&ZODy-)Xy`k zw3JimMVFgoo2)4=jFF{ZW9)m;$g0k?{1lj@3@YMdW`M`I(I+a^654ot40(bzsccc2 zTsRXEm|*F=)*V`>yyle=o1dYe$}U$5Hi1oUypzJ}<+u)}GYSa7?GYsqzw)B9tX-jt z_Zum~MN2z=aQs@nb*${t8gHlSpn_nVxx$9Cy*4r)3ZMu1QR)j7tV3Ye^;_9X zXeC#-V$D;lN~5MfSFvyG&{OIOI8PFYf61OhtTSP*WO&b;(%_x78&l^ z&)bnUSZTpxriWcR67iBxZ|L9AVNii{(~|{EC%{nS86AOvo6vNMVxSn^H~$iWaVm3* zN!X&-qmy(G!ly^4M2|mbj&BV?3@F70J$jH-YRp?@9KL%>)$s0iL*i%+8o9{&$uSlC zV99;e!H~R-EJGwrT46v~#VUc(IaR?05ZSM_*5h&7-k=^cH9}E6$VnQ<=I1HavX8xX zyZN#q)llFTKjB7E!PPdk`q5}S-vv(j*V+y0O~W~Zffv)dhch_EgVhNxpw(v+#})>( z9yZvOqUcy4G>u5urq@EA4M~nU5-=9s%$e$o_Z^UNP+rbI+5?w(Un!+De8d(IowAX+`Eq|qBk-|wA?vSah5FR+%d-#AYf9N)_r?#}!+Rn}S zQqYOG>aUwZ+%VJ*#+^pHN@NuVlny#3YyNx;rp$931_|~(;V=HQ=M2xSLOMsCYp!g zh=3wT*3^K68g(rd(k#&?4p>>|c~m;x;zj2>VMk^8;1e9BNHgOm@7Fyn3Ere3Ebp8$ zasxB=?L?)E=-T_1=3va+oYR3A#liRWW@H97KIt+mbFgfwWH2=$!&`=NbozGdc-kP2 zcw(m5jhJ6MfQI9((C3^8x}|>M8{UY5G)kyRSthO=YpM-vlb$!4XthvzZeVOl5570H zFz_91bbgRP@gcTL_YaE(3%RR9JJ)u$NC=wzLAH%`vsj`3&gIwda$g+pC38&hUq z52S20OG)!}sD2*c{oZOZ8cs7}Z;kKwD^Z;a!HCMp-mimaS+vKCIv84ip;0h7iLBEr zZ%`3F8uc`V{UP4M*S|A9{Ht5jIwWV@K3mgOPzWIE)4f+jXpY@WaL$P*#n&T~zu!(X zm>>(&>m3a5E)3?b>*1W|AG5U0Y!NPw;}S=9#^V(|2RkiiO0Ff5bV-y8j1lXCrHLJ1 z5_I!n%A&Fisc6>n4Aqo!mtPN{iL$#=fh1g{^(tX z#I3s^LDh5!tZJGh-$?1ATTfD1eaZ^a!x@6^#hc2Q-2h*WcsDN^!7-!rzN(HG+3s!+ zQFo5uxUD{wUezdc(1c-pdp;D<8=-5aPwlY)+OAt!J^8i}H`|)a=BHq}OYW4Klg!EU zZZAeWN#v>QwtKGZsnZ?Xb8R|zqzBUiTH|vN`O%ObJ)d3r1q)+AJ^s-H8x($-i;dEP z&^-(Mq87Bq?Y>M$8XtMDd>`=?j4G%R`F&+>4@*Jf-H7SE~OICfA9L(Q~QQjcN=XWAh4e4q7QVvlz1w z92OU_pKemCs0R_8 zYPi%J@Ox$v^A%dIb67zaJ=#6o&L8$Y4(^J|trnBa3^%8uhKcmSHz{mlVI{qk7u<;s z>Eq6nic9NXrf*E@b<473;X%FjGeMa#?-%0_b`yaO8zb|iyNhV3>jS&Gi++Z!C(?wj zG``*!htWkw<`l&&KN|Sb>|fq=s^;9t6fDFEHCz6%MV14T?5pkWwSKnccux4N*hC|K6}YEQR{H%%+Junf0q;?8D*amHHHEiMP3l zKX=|YSn+9IbTYMm%yoAVjYY*6ex`be?&#+o;axppeV-$ZunQ-*^v|}TggM>3h1Vo` zxC7;C942s*)=D(ALOY}~RN3z?bj+V{M+OYJeCn35FDr(3(&AJ51gDub))`Iv0kOdW z%Q~#QfnG&}(yE|EHJxphpTFITi>g1C=u$LQ-5rt`ySy{YSyoF%Zx-(kW$|+#&}qu8 za7?!X+Law2Q?A zw2IjeL~;;F)9SDFQVT&)MAbiuPNvuJb4scY?-(95am|%irs}Y-)@PP+Hd?Tf8+AkF z%?##Hjh9yQfw|xz$?h&AcKiRy1(5G{563<>OpR)WA8L>B)U&QWzeTra>L6_K0FlvZ z=wtM-cZ4~ZklyJ38#>9q6U}>m71DWebjO$JV(&8LzVPZN_ANOswP=1-*?QFYKK3=} z@ur`(K`%r3!V?mqw<}Es3Dr*~TJF7{UatBg4}n+!Bf&gW9(E zkmDJ9&)^!l0ctZ=QHfh8^}@*^A6Z7ZEZCZ!Uz>XrVA=z*5ysXCH$qcS>Lj1;vrI__HW=D#2-jo{VaDl1VdrD12}?B>V!N|(Lb0IVxewI_dFUy0oud-d%q zN3}WcOUSP_qwg9fJhj&@Mjx=Wg^`=pt-_J6S;1Y=QH2e)b)Vw|g$sOsRL18;?oVy# zq)RjE7m1l9ex-~ea>l#^z=iCJ(hR5h@|%O7pkW5uoxEfG$E$(2*sKoAa9D+0mC+Wn z(YB*7BB%QJ;H{susv+8XHS+Wcro66Fk3z^&vnoUxG}ZB3njgWwaJZK2meO?e4K}HM zgk|!}5VmRQaNR=r-~)@?;b(~P&*^4MnYfXB5BbUp`uAEiW@n0BUx(1YLhWxRi7P`>6*wf>D_PGGnhc!J8|sVZ3)-G+-4do zJ{QV-RHo&SIn#02F{^MXkA5yg1e2@R&%Lni!0O1eYrBhV312zxtzXy0yyYoH8sp2{ ze(M}4G`6~vQ9>W=vo2h=Y>3BzJ<2e1p*Q$NoRyPOY-u7{?E)S*&ilQe<1+fX z=d!8xMW=A%7rd;ibQaFpf1x}gIw4n;58|6mYi@($n2NgE&q|kogUHel)?Fx-6l>*k z$fNO@6mKq8CkAt3nDpNHOZl`=WZqr zilU-n-#~D3!0)TimPzT=UZq4_9Yhv!YM$qYcHeNHIjFZ(d9x`6k9q%FwXi`cIv8eq z%66k@$Cm+iF-2DX@$`)U$70OcS=Q&rMm=kQX()f4S)z5{n^I9Y^&!EFvYlbAs!yF) z4#}Z=EzMAll;li!6mhtglj9kPW^%WCQz*Pd(5Vk$(6FQ^AkpVg9Dao;W-F1Pli%zz zr|!|dv8vKP;2_WB`f&HcXuy5o>_4b-h2pFq;(I0pb@6%^dPhChpSK95#GQ;&^kpw; zp^7-m>McZ4^`JkRk0#~#y(ra~uWdKwtDMQ$~Q6XOBDTWRGN(2Nw0R0KHAe2?9! z2SGlXVYzlp0givU-`<#Bm$dZJ%vq)xjxg)Ui#unnt z|A5!Yv*AbUosG(Q3yA6lC4C68qoI}JLXA#47Ux1assEZC6{oH~A)9rKd*6Jpu_Me* z^oQ5X>!vs|-HftB!4!KG+Z~aE6`zO`@UB_Dyu4k(B^nrAF}q@6h8$T4WFsjL{-Ck7 z|IB>}CMN#Z^_y1J+6T&&8{#eu~jjKYosvwL?VlRqD}>!_IO!?gEO&(Eow zeScThK_u9@RHFKd99fP9gZG+nAeCKGD(Df9vf2>+i;&Ulf3D4_&pmd{dC=jJEv=v& z4G$fz_#ZVDt6W)|!qzpjW568*m3GGL=VR==62+PP66&R_ySp*05FJs^5^c&(+3Ub; zD@30(R;sm|&6?%pRV-f|;BU0OG1r6z7mRlh7oME} zjV`m3BNWNOeZV6=h*en#ovarJ@9ED|yC}E{;))z}O@WfZ97RRJ=`-hpUm^X4F0IiLv&q{{1c>pyBzquR z!TOy9E-H}Zb{D(PV9YKPQycEQL${}P?&_c$@FGuUFTNu3`Q;uUhP)Kw^BcOdmb<|> zPSeJP<*wXPNL$al@nzhT=4~(g0!HsE%G`^XLwo(E*bR=g+>cock4?p^zox0?FA(j_3(~RarO<$oC+JMk1cxl%UGZTxPUOW2SO=QJj9UCN2>-w*d21AQxjw^12+8fOM zapkfGON$cB1UWe z>$LC3MNuyqqkR17E!jG^lM>|?zsVWkXQemoNzqohg*bU9$Yko2oa@ZSWb2dnC6C4J zz0;ELv2}yi-Y;jbPxVNvg`70KWqCR%%Vw5N2Hxv z!&Bp;6Wz$II;Yo(OGsLg>*6rR$-GSp%HUsX<@T6@JYWf=Os977GkL?)s~*8h(O)z2 zAo3eZSLM0LB_ZFs=htuuFvE_Dr6ZXJzkiIj1;H$%1KJu4kVx|2`>WaG?Jm6|Zr>ZD zt;gng96Fu+#oWbL{FLyWyS=B{*56z*EMF9G2P&J5{aPPXeN1Tcob~jsLePsJiA4&f z%)i*Die6xyFiqQ8+#@c|H?_Hl4yTPQZm*s%S5WFth_2W_ypV)ywk{apW|=;l(&Sjv zT_ombZPCg@2569W13z$aL7g@iqTD#>BrvBRNf8L2@DR0zO*{*Xz=}Q~TM^6@sJ!gb8}B{ln^Rlb6m1*47D}*bWlB{);V^&2FGOWm##ZooA4-q#LVB?Q zW3u9$=zyM)k1{toyj}{zZNS5xy%p@Va~i7T<0zN(C=Xo(X`OoFd$9n?<)+PE%Jk)C zKwn^qcmecMtjbJ92=!~=q{FiTD5s3bAsA^16Ao)z(oqcy78ybYU+3$GKD}Nc<(CmevB?2E^Lpp{ z1n&hui=N3&0yi<3HRX}A55LfSiaYh3emWsOfH=dsVf`&YfE@Xm_|h6IQ1a`#X%W^s zFn3}9ifpb3>6ePNKf|=NU%OZOMjW2L^|=o_97QN*R6TD`0NaEbQwQQ{E~xt0e^-lJ zIsBpaGlxPze|FTKBUzG=G5_dFWYMO!F#HnyxQ z-0Dy&cuEO2ZKtE_9sHR;n;id%a&B&)? zYc{wu3#@&)WFDz$@;Q&?GlIsK)y_2P)+*X6QHuLgl7WkCDSwvhG1 z1|~G(EGD@FilHbmiQHc!z?kKZC0b=hXPsO=z<-?NI*XqUp>{Jvth3~u_4qv*oh)nR z+m$bzzuQBF{nbdES*(&G5$EWcU&E*?aJvD@=B_RL)~@3A+$1x|kOw8zL`kzb?eX2hD*!YZTG?x5VZE;GW~nBTBlRy z4Z7F!OX)D0J-DL=%23qS=Ln&d8Vwh|dwA|d4gk3PEGI;XbA22)(72gvI75C0Eoksa z9>dVwNKMa+Qy%3mIycmKAXO`xq4imsk%^XjS{p!%cBLN9So2SG=IE1$FV=L}euNb` zRRq4iwysRS!*DpUV7m z++m;$*W`k6wfO9V0r9b!E?XDlb}eBdTruZZT#4752PPIKTbfrm*lr4k{UMR!yrpNXMp_qXT+mqiU%cV1$QodS<2T?6BJ-iqN z{c*q4=hpX=(Qajz+Y4%PtLE-TT;6HkczOt>Yj*+v22yUZkfMM(qC&72?+RR55?d8A6@z1AKJFana%}uZu&!? z{`b$AM$`f3$?)gqr~c9d|MiojKwlsY#{bmL|MfF_Os@bYG2^otd;j}t{<*JfXC)=u zj1`0b<|Thl`4HfBQOaxwJP7|dws0WksaS)5{LEUp9iS7~MjP+n{(Sl0tgx}Tc#yRj zXh!*uV_OfJLf^~L`T1{N@}K`3nHnKhnU#+HKgNF-h~WE+yEgyxHkn$RiZMFQgBt9A z9NT-a7_J9prT=HC|LeoQV)nzb{3~WZi1EK-_QNs!_cr_Cw)yuq`{9`Ut2BR9L;otx zzgFX4Z1y8Q`4^l0up0kjvmZe9|36HC$itCyfRuFEQZK4UmM+Y8SnK-(I*hNapt_M{ zynFX<7_&J~CfP95uln=ZXj|tn55(7ZQSb4)?*S4DWM=%Yl05m3VZ#;GwRqhhK=+Lr zfWw(Af7TB(u8IJ^D+xF^C!0pEHpDC~j@;g8((P0kl#@UGyv`Z?vAR1CG&A{AV(Qd3 z$(iDxu5#V+<4caMyhI~bJwgkK1ir>*K=kOSl(f0q(NwHjKV{nwgE%GyK5KJbZhhqc zyi+Vv-r@_e`f-bS@ufMCYjchR3)KB@I~*!*@~8KQGS=l#UjzT8m@wBx_@?%qsH>kG z>K}){w^7;T^AezG3Q?Wia&SBQ;FpT(+~>R>#+AGun55nYyXya!>t|nEzgmizPSa_N zlWoA!1INYQq0#HF>A}USS)pD7RbdDOcf6~4kP=Hu;-g0aDJD$Ny*?5pX+)YkU$WuP zl>o!f`qfkn<$%2t@B?uF-Y#tfhT0yfII{r)7fbp2^MPghuh>UyK+)GXq!k?X*Swcs zRrLt0N8(gA-SY?Q&MGQGY=N(IcW`Z5$r@>#KcljY@nU&z5dt2E<976iIfAeL;;~uI zwDznSz2*mV?fM%@D+{rd*r^(j8a)DdEe#j_#x}iPvr%a`dQD&rX`$SFVt)(89y1l~ z(&tou{cCw8l+7%c7`?f5E?(W1NPp1qF*G7^+e49pe^pU~*^S8yjRD=m-7!4;q$(uG z?TK4TF)KjpvVEvBAy417F|_~9^vNVa5>NFTi*e?hTujr<<%_Q{0H&r*#^Xi z;pRE?!xWMOBC}-EW`yshu@-zF>`m;Dq%=S^)=xLlf^T+mCWmmoTQMXr1ve;GPXb=c zEnmO18%SGfLn}-9fIK;5-MJD*-|=KIlH^nFvCUQqMV(EtzDr;#cbet3o%=TUP9W1t zVu!WH?gY~SN&n)~#4V)rSkkFWIoxn{o0Tvtot zAg+kGkD`ydmULm#Kfx0R&!G?XeVqD~^3`K814T_S956@mW&lmmJpny6cdF5ZDd;!~ zacH+*_;h2WrMlgprzwnmHXk3rTVQj1ds;ps$fcSc#nw}eJjYzN*>S9jf6#M7^w?2m zK+6EzANsJTfbweMJ!l{$>3l76nXVm2Ky!1ok4B(YNqP=r$`ll?Yn$4HeUK7+cq>4w-`khT% zVTy~x+L)bVAz6AJkfxxl_}qFxr#Q6y#8NipC8PP(4ATR$q<6CSB_bdvT_t_+oX z2%*iHb%+2BZh5BI%ym0%amEbMFK*^l@EcZE8i~O;bz4nGahL5vqsgOZ(3a|1+~H4( zvEhznUWFd@2{WWxIA*!ZFh$|`cHayWljG>H4I@==5?h;@yJPOHoKdp$;y3x)WAh{W zwPD`{1EQrbc+n!$Pu|hfw!spS;YA>gq7l05vLC^%#*xEAxVY zJ=t!ex@R&4!Z+sqK!i!XIF)E}?O zH0+j-HDeT{`p0_vE3bIM>fW9ZVxpX^XGD>)CJUoqAR_)orIq{O`iLY?BqR95c_Y5% z2P5!HkaVfGjux13x{`EGZ(aVKaA`_$wd5x?Y0l=?Wsz>EM8EOP4)NqCB~}Yww1(o0 zr(D+KH&t~G3mUB9fLnb;IK7~Bz_XWEZLN&>di`A`@%Ps-LUpu`_94~BT9lG%!{7<6 zFSE9e&j$5TRdXSR9>`#Ff4RAUIGL={lXYRhDiIsXDClS2d3BuFGx>>`rPY&IiCR!& zI**&H`D49WYn=-nTSP~QY+HusLdziAhCX@WisRgi;BZs|Ct>WuZ;mZd?FDRvA$(x{ zV_s3dpm}L%s;}a6s&BB!gU-=$v%ql6+*;IW8&+=2deA^6Z4M9`FYTcTtU>>rs-v1K zYNZYVoM;f{sw*=;Tq#vm64LPT>#DJ#YASm#-Fg+S@WT2FX{-6QFuFwVgC?GxrGB*~gC8qJ#iQ$6Gi}t1yQGKg<(#Hm?F9tr^ zY)TbupQ(5X@8YzFYCrxILO-X+(oP`-4|tfIKsxp!iWD&|Ss4gzl!s8yDdlKmO?-fR z5+c{Omxo{mBX3e$m_!tkgxuL`(#qM5E8~zt`j9v){cz3sv`VcQ z6um*`D2n!dq%mHd`|1PA50!N;IBurM_S*}TmdCnF8|NU*i-c0v@a~r5j)}Y-L%X3Y zk_n;17KtrI5xHDm(@hjCAyu7&xLz<|MDPXuP7@E8qO|jAO0{D#;`b=EY)W6Lan?u+ zxq_>qa(%nhbk(O;j7TuR3G%Kfb<9XS7yoxDEJNIKYW{YC2~L%WjyFV zoYaWAN2UtSno=i@<|=9V+8;s5jFf16;YHkMPY0Mv0 z9r&eEl#zadtqUr6X7qFVd%g6xS9f`)-2tdj7q#U(HMu-~w@xo$2Y6LGsuhfdrJ*OZIUwV}A0qq|zi=!I{qwAbuyoMpJxgzQbJ(*w!`25V z3v%=93yuj#aUuUyL1M5si5#?kJb0W>6zSzz(--Es{Z8lS=&813Z0-cBoQYtf`?gAG z-!@IH<@5WPCZY2-BTYI@%n@cn7o0iHOyHEXml#G+@@n-gnhGcv9vtZ0Nt=D|G?=z>K(t3Om?@}*@R;)TqzP<++gOpx;R<&Gg< zH+zwv)ST`$ise*)q#Nb7M#;POVZaV-fYf{sV_PU3n%G4x-FqQb1>U17=R?s&*-ng% zcjdxqW=bShsdy05lT{!{;tZ4rxRIMH>R^t?kHyJ9!xM+BCi=o~LhJeRi`1JVRNq*C zUjvd=bzZf4wR5dv>&L@dsMu7SvdLM+=6j)|2_^}dT!SLb&`;WBghY~m;B#cjugJL& zYHL9BrK*|w`~3lVq(uHBZPds_Z>5nXek{wF$3c)$CY=cM|79N@Q%#95mh zN3PPpD$#mAt?CfYdoru)V`b;Hd~}du216UeZ+bu3f>hFhuPyaGK;C}A1J9Gb(;ElAg6mkpMzso?~7+)&DShuKP$%pM*KPH%CiYfHT>U zv7iAd&{IJfH^CKYH%>1ckA|Pd{>t-pA2_|R%Nx;7H_){P?f)J>k;~Q}(!1j``SepI zd`~A@W6DXyDL?%#zbv?Sp@K6}40Av0D;%yOG$p%0MLIK_rP!OLK{bQ=uKsFdEFqK@ zCO|ci!>J(_d)*kAOh?|W47WUFkI|`Nyg5U*tr&H z1Eq`Ei$Lb1;gnw1yS~GDu>(%RKE2ZmDUPj2mM7Q^L(h>1;OK=8yx+7SSF+V*{+)c= z%DzXIs2viD=l)>WfuJNp?)k}-o7Z@}Wn9rA^Nb$c(dzW#)&~{%^o{(|K?7`XrvAk4 zoo3Yof={uJyx|Z!r=Sdzv_K7dO&C+jj(r}JXG3~na#`?kAK)l?qI_0aP(zei)1hE=SCIUU^TC9cO84dZu7c+? zv9275Erb;F1kI$DJX*d&H*ClhTlfOBmHN7s4g7v`?Wfw4QzzL;DgR3)jcxZj)$sXo z7Q5@WwOy-EhE-ke4N#;Q2xcqvTC(y9tB9ZQ?%s14cSjWpiDpf1UO2`Z4@YHcoq)j; zYevigS}wi}+Txa|2>0(sU*6{$bdnFqhd3X1jH7;An{pVNkTr(jbd$I$UvC&s@a9_; z--iz{$5~5_H<8slp@cmDA5FsOz1NE|uC+T(^KSiU8msb+aFx@trB5zN!&Lj*6Qgbp3+6cR({s4UN#e$gZU(nkf3b9mHF zHLgL$srj&HV}qYJPP(H(I}Gd&4;cAamzy>IIMYl3i$yVPN01aE93+YvE3**krQnVk zMaQNpcqnB40IaH>OQ;IudC}h22tS~$J=ZlP;A?euO+SkvL|ycztv-o3VKYWJOJ82l z3Wd@QrPELPTFIS*4U19x}dd;88SK8g`{f*tB8l7785{56Zjfd^JusS%H}VX zDe1gEGEOKX_;9FL{)f@a9orPC_pDDh&t4|y$f%y20rpVXhIB?^h#`lf&YYk^-+ch= zRjfTM_i+C7a0)d=!9Sr(+;POZxYR_2?sH1O7I=BbA}6Zg779G7crcxaP98i**96!X zSMj)PqU00lE9~9G=L@%{jtytYvJw66VJ7Ct#MrrlIhAV}LyP%>-Lg}3=DXzPUIf{= zCamPGS3^L-oZ5h{iS0N5jpa~+B5gDr4pI8S(78^Ovf^p8OW}F)7Z=~=qUq1__GWW)DrCDv7TKkZO5w6J%JyD$C$b-sDTc>2Q!zIl;Ux zepxFr4Rgf-HD0vyUZQPC)3C1Kvf}*1d=*_MPFqWDzXJO1EMbSWm+HqSr7 zKe4Vl8@D(!jMlKiW;{~l9nLEScMyhoKlB zYceP}x3PFBO^YbTE4NVmt|}*4UrQ<=PUy?;Y%5hMgFbcT+>asNS!V;R`Ns28k7E6S zWzu{@HorL&DLuT0bGbPJ-(wOSGKX8z-U4yJwFXnOGNkkt|AMr>AKAMB{FC-8n&JAt#S? zq$dj5w;Mc(0Gz#hbaBhX%TLDjaSYmVIpfLB$$0To_gHt%qZgqLSy2cD5o zT7a$7(uELY?@JcSC%C5Px(w*vc`c6w^h94kfB|6JYuuGNy3O zp1#8VCAO|OS0*PXt#2^Q5ui^cz9vIt?e8tEd`ddUyD9sbm|@AxoR-*q*ENqi8fcm0 z(T8`>0;QS~z^4ajyklYM+NIvM{)&}P4SeP-38cjgHc9!cwg(i|Y~2#Riy*{@4d8>r z?#>p^xho)U^DXgkn&D8|xea}?WbNRtK(@|~babd!Kv@B?TsR4;F1nKFnjdWJ z{q<2xm9#bvs0#PMRf?dasL;l2PW~RGy+08N>J5Nbyklf50fY%Af%rfwI1ZyJ;yl+u zcttSqerz^8%Z~R!2v$5M#0S!?dqJU2-UO&~Ga?^rdmYoS^`tML`lzu0y!CAFdBiJ^wd}dPp+> literal 0 HcmV?d00001 diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md b/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md index 6f4850dc0d..ea0f9ae507 100644 --- a/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md +++ b/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md @@ -32,6 +32,8 @@ snippet. ```yaml window: sliding: - length: 1m - slide: 10s -``` \ No newline at end of file + length: 60s + slide: 30s +``` + +![plot](sliding.png) \ No newline at end of file diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/sliding.png b/docs/user-guide/user-defined-functions/reduce/windowing/sliding.png new file mode 100644 index 0000000000000000000000000000000000000000..d4af0e66f2181ba177f2bfb5ce181d79a6e4adb8 GIT binary patch literal 176314 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�t?)fdu-5UY0Cr*f;H|FJKIuD#* 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 Date: Wed, 4 Jan 2023 07:19:23 -0800 Subject: [PATCH 7/8] move images to assets Signed-off-by: Vigith Maurice --- .../reduce/windowing => assets}/fixed.png | Bin .../reduce/windowing => assets}/sliding.png | Bin .../reduce/windowing/fixed.md | 4 ++-- .../reduce/windowing/sliding.md | 3 ++- 4 files changed, 4 insertions(+), 3 deletions(-) rename docs/{user-guide/user-defined-functions/reduce/windowing => assets}/fixed.png (100%) rename docs/{user-guide/user-defined-functions/reduce/windowing => assets}/sliding.png (100%) diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/fixed.png b/docs/assets/fixed.png similarity index 100% rename from docs/user-guide/user-defined-functions/reduce/windowing/fixed.png rename to docs/assets/fixed.png diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/sliding.png b/docs/assets/sliding.png similarity index 100% rename from docs/user-guide/user-defined-functions/reduce/windowing/sliding.png rename to docs/assets/sliding.png diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md b/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md index c0389f89d5..a28381d27c 100644 --- a/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md +++ b/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md @@ -7,6 +7,8 @@ overlap. The element which belongs to one window will not belong to any other tu For example, a window size of 20 seconds will include all entities of the stream which came in a certain 20-second interval. +![plot](../../../../assets/fixed.png) + To enable Fixed widow, we use `fixed` under `window` section. ```yaml @@ -31,5 +33,3 @@ window: length: 60s ``` -![plot](fixed.png) - diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md b/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md index ea0f9ae507..33902b5048 100644 --- a/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md +++ b/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md @@ -6,6 +6,8 @@ more than one window. The additional window slide parameter controls how frequen is started. Hence, sliding windows will be overlapping and the slide should be smaller than the window length. +![plot](../../../../assets/sliding.png) + ```yaml window: sliding: @@ -36,4 +38,3 @@ window: slide: 30s ``` -![plot](sliding.png) \ No newline at end of file From db84c63f69110aed2f48c51e9babb4ad9e1de2a0 Mon Sep 17 00:00:00 2001 From: Vigith Maurice Date: Wed, 4 Jan 2023 07:30:42 -0800 Subject: [PATCH 8/8] add groupBy as top level Signed-off-by: Vigith Maurice --- .../reduce/windowing/fixed.md | 14 ++++++++------ .../reduce/windowing/sliding.md | 18 ++++++++++-------- .../reduce/windowing/windowing.md | 3 +++ 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md b/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md index a28381d27c..46c92dfd7a 100644 --- a/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md +++ b/docs/user-guide/user-defined-functions/reduce/windowing/fixed.md @@ -12,9 +12,10 @@ certain 20-second interval. To enable Fixed widow, we use `fixed` under `window` section. ```yaml -window: - fixed: - length: duration +groupBy: + window: + fixed: + length: duration ``` NOTE: A duration string is a possibly signed sequence of decimal numbers, each with optional fraction @@ -28,8 +29,9 @@ The `length` is the window size of the fixed window. A 10-second window size can be defined as follows. ```yaml -window: - fixed: - length: 60s +groupBy: + window: + fixed: + length: 60s ``` diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md b/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md index 33902b5048..9736f4f7de 100644 --- a/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md +++ b/docs/user-guide/user-defined-functions/reduce/windowing/sliding.md @@ -9,10 +9,11 @@ length. ![plot](../../../../assets/sliding.png) ```yaml -window: - sliding: - length: duration - slide: duration +groupBy: + window: + sliding: + length: duration + slide: duration ``` NOTE: A duration string is a possibly signed sequence of decimal numbers, each with optional fraction @@ -32,9 +33,10 @@ To create a sliding window of length 1-minute which slides every 10-seconds, we snippet. ```yaml -window: - sliding: - length: 60s - slide: 30s +groupBy: + window: + sliding: + length: 60s + slide: 30s ``` diff --git a/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md b/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md index c75801e027..cc4168e79b 100644 --- a/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md +++ b/docs/user-guide/user-defined-functions/reduce/windowing/windowing.md @@ -16,6 +16,9 @@ groupBy: keyed: ... ``` +Since a window can be [Non-Keyed v/s Keyed](#non-keyed-vs-keyed-windows), +we have an explicit field called `keyed`to differentiate between both (see below). + Under the `window` section we will define different types of windows. ## Window Types