From d2c9a8cbf8d16e5b0b45446380ec44496ca4c024 Mon Sep 17 00:00:00 2001 From: Chanwit Kaewkasi Date: Mon, 4 Mar 2024 22:01:42 +0700 Subject: [PATCH] [v2.10] init patches for v2.10.2 Signed-off-by: Chanwit Kaewkasi --- .github/workflows/build_v210.yaml | 56 + Makefile | 7 + VERSION_210 | 3 + .../01-build-with-local-gitops-engine.patch | 62 + .../02-implement-loopback.patch | 210 + .../03-allow-flux-and-oci-schemes.patch | 58 + .../04-ui-fix-find-leaf-pod-bug.patch | 62 + .../05-ui-show-kstatus-in-ui.patch | 40 + .../06-show-custom-info.patch | 58 + .../07-ui-add-resource-icons.patch | 317 + .../08-ui-implement-health-checks-and.patch | 551 ++ .../09-auto-create-flux-resources.patch | 505 ++ .../10-add-flux-options-to-the-ui.patch | 22 + .../11-support-helm-oci-and.patch | 172 + .../12-add-open-in-weave-gitops.patch | 72 + .../13-upgrade-to-flux-v2.0.0-rc.1.patch | 140 + .../14-fix-branch-and-rev-info-of.patch | 86 + .../15-change-logo-to-flamingo.patch | 7565 +++++++++++++++++ .../16-override-workload-name-with.patch | 85 + .../17-add-tilt-dev-support.patch | 392 + .../18-add-oci-repository.patch | 325 + .../19-fix-special-supported-schemes.patch | 29 + .../20-add-health-message-for-helm.patch | 130 + .../21-fix-health-message-in.patch | 22 + .../22-fix-flux-2.2-oci.patch | 29 + .../23-allow-overriding-flux-object.patch | 346 + patches-argo-cd-v2.10/series | 24 + 27 files changed, 11368 insertions(+) create mode 100644 .github/workflows/build_v210.yaml create mode 100644 VERSION_210 create mode 100644 patches-argo-cd-v2.10/01-build-with-local-gitops-engine.patch create mode 100644 patches-argo-cd-v2.10/02-implement-loopback.patch create mode 100644 patches-argo-cd-v2.10/03-allow-flux-and-oci-schemes.patch create mode 100644 patches-argo-cd-v2.10/04-ui-fix-find-leaf-pod-bug.patch create mode 100644 patches-argo-cd-v2.10/05-ui-show-kstatus-in-ui.patch create mode 100644 patches-argo-cd-v2.10/06-show-custom-info.patch create mode 100644 patches-argo-cd-v2.10/07-ui-add-resource-icons.patch create mode 100644 patches-argo-cd-v2.10/08-ui-implement-health-checks-and.patch create mode 100644 patches-argo-cd-v2.10/09-auto-create-flux-resources.patch create mode 100644 patches-argo-cd-v2.10/10-add-flux-options-to-the-ui.patch create mode 100644 patches-argo-cd-v2.10/11-support-helm-oci-and.patch create mode 100644 patches-argo-cd-v2.10/12-add-open-in-weave-gitops.patch create mode 100644 patches-argo-cd-v2.10/13-upgrade-to-flux-v2.0.0-rc.1.patch create mode 100644 patches-argo-cd-v2.10/14-fix-branch-and-rev-info-of.patch create mode 100644 patches-argo-cd-v2.10/15-change-logo-to-flamingo.patch create mode 100644 patches-argo-cd-v2.10/16-override-workload-name-with.patch create mode 100644 patches-argo-cd-v2.10/17-add-tilt-dev-support.patch create mode 100644 patches-argo-cd-v2.10/18-add-oci-repository.patch create mode 100644 patches-argo-cd-v2.10/19-fix-special-supported-schemes.patch create mode 100644 patches-argo-cd-v2.10/20-add-health-message-for-helm.patch create mode 100644 patches-argo-cd-v2.10/21-fix-health-message-in.patch create mode 100644 patches-argo-cd-v2.10/22-fix-flux-2.2-oci.patch create mode 100644 patches-argo-cd-v2.10/23-allow-overriding-flux-object.patch create mode 100644 patches-argo-cd-v2.10/series diff --git a/.github/workflows/build_v210.yaml b/.github/workflows/build_v210.yaml new file mode 100644 index 0000000..bb4e734 --- /dev/null +++ b/.github/workflows/build_v210.yaml @@ -0,0 +1,56 @@ +name: build_v210 +on: + workflow_dispatch: + pull_request: + push: + branches: + - main + paths: + - patches-argo-cd-v2.10/** + - patches-gitops-engine-v2.2.0/** + - VERSION_210 + - .github/workflows/build_v210.yaml + +permissions: + contents: write + id-token: write + packages: write + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: install stgit + shell: bash + run: | + sudo apt-get install -y stgit + git config --global user.name "Chanwit Kaewkasi" + git config --global user.email "chanwit@gmail.com" + - name: Get branch names + id: branch-name + uses: tj-actions/branch-names@v5.1 + - name: Prepare + id: prep + run: | + VERSION="${{ steps.branch-name.outputs.current_branch }}-${GITHUB_SHA::8}" + echo ::set-output name=VERSION::${VERSION} + - name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build v2.10 + run: | + ln -s VERSION_210 VERSION + ln -s patches-argo-cd-v2.10 patches-argo-cd + ln -s patches-gitops-engine-v2.2.0 patches-gitops-engine + rm -rf argo-cd || true + bash -x ./init.sh + source ./VERSION + VERSION=${BASE_VERSION}-${SUFFIX_VERSION}-${{ steps.prep.outputs.VERSION }} + ( cd argo-cd && IMAGE_NAMESPACE=ghcr.io/flux-subsystem-argo/fsa IMAGE_TAG=$VERSION DOCKER_PUSH=true make image ) + unlink patches-argo-cd + unlink VERSION diff --git a/Makefile b/Makefile index 36e8c9f..273a1ae 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,10 @@ +.PHONY: init-v210 +init-v210: + ln -s VERSION_210 VERSION + ln -s patches-gitops-engine-v2.2.0 patches-gitops-engine + ln -s patches-argo-cd-v2.10 patches-argo-cd + make init + .PHONY: init-v29 init-v29: ln -s VERSION_29 VERSION diff --git a/VERSION_210 b/VERSION_210 new file mode 100644 index 0000000..704aca1 --- /dev/null +++ b/VERSION_210 @@ -0,0 +1,3 @@ +BASE_VERSION=v2.10.2 +SUFFIX_VERSION=fl.$(cat patches-argo-cd/series | cut -d- -f1 | tail -1) +GITOPS_ENGINE_VERSION=792124280fcc67d9b3498bc0a27e05844ddb1e30 diff --git a/patches-argo-cd-v2.10/01-build-with-local-gitops-engine.patch b/patches-argo-cd-v2.10/01-build-with-local-gitops-engine.patch new file mode 100644 index 0000000..afeb304 --- /dev/null +++ b/patches-argo-cd-v2.10/01-build-with-local-gitops-engine.patch @@ -0,0 +1,62 @@ +build with local gitops engine + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + .gitignore | 2 ++ + Dockerfile | 9 +++++++++ + go.mod | 1 + + 3 files changed, 12 insertions(+) + +diff --git a/.gitignore b/.gitignore +index ab17deb0d..c28c77a6a 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -25,3 +25,5 @@ cmd/argocd/argocd + cmd/argocd-application-controller/argocd-application-controller + cmd/argocd-repo-server/argocd-repo-server + cmd/argocd-server/argocd-server ++ ++gitops-engine/ +diff --git a/Dockerfile b/Dockerfile +index 2c31b5077..5e6bb92f0 100644 +--- a/Dockerfile ++++ b/Dockerfile +@@ -105,7 +105,9 @@ FROM --platform=$BUILDPLATFORM docker.io/library/golang:1.21.3@sha256:02d7116222 + + WORKDIR /go/src/github.com/argoproj/argo-cd + ++COPY ./gitops-engine ./gitops-engine + COPY go.* ./ ++ + RUN go mod download + + # Perform the build +@@ -130,9 +132,16 @@ RUN GIT_COMMIT=$GIT_COMMIT \ + # Final image + #################################################################################################### + FROM argocd-base ++ ++LABEL org.opencontainers.image.source https://github.com/flux-subsystem-argo/fsa ++ + COPY --from=argocd-build /go/src/github.com/argoproj/argo-cd/dist/argocd* /usr/local/bin/ + + USER root ++ ++RUN chmod +x /usr/local/bin/gpg-wrapper.sh && \ ++ chmod +x /usr/local/bin/git-verify-wrapper.sh ++ + RUN ln -s /usr/local/bin/argocd /usr/local/bin/argocd-server && \ + ln -s /usr/local/bin/argocd /usr/local/bin/argocd-repo-server && \ + ln -s /usr/local/bin/argocd /usr/local/bin/argocd-cmp-server && \ +diff --git a/go.mod b/go.mod +index 7113f82d6..ca987953e 100644 +--- a/go.mod ++++ b/go.mod +@@ -334,4 +334,5 @@ replace ( + k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.26.11 + k8s.io/sample-controller => k8s.io/sample-controller v0.26.11 + ++ github.com/argoproj/gitops-engine v0.7.1-0.20240122213038-792124280fcc => ./gitops-engine + ) diff --git a/patches-argo-cd-v2.10/02-implement-loopback.patch b/patches-argo-cd-v2.10/02-implement-loopback.patch new file mode 100644 index 0000000..40a2ae9 --- /dev/null +++ b/patches-argo-cd-v2.10/02-implement-loopback.patch @@ -0,0 +1,210 @@ +implement loopback reconciliation + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + controller/state.go | 40 ++++++++------ + controller/state_fsa.go | 139 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 162 insertions(+), 17 deletions(-) + create mode 100644 controller/state_fsa.go + +diff --git a/controller/state.go b/controller/state.go +index 5121fa68f..3d2e44c7d 100644 +--- a/controller/state.go ++++ b/controller/state.go +@@ -418,26 +418,32 @@ func (m *appStateManager) CompareAppState(app *v1alpha1.Application, project *v1 + } + } + +- targetObjs, manifestInfos, err = m.GetRepoObjs(app, sources, appLabelKey, revisions, noCache, noRevisionCache, verifySignature, project) +- if err != nil { +- targetObjs = make([]*unstructured.Unstructured, 0) +- msg := fmt.Sprintf("Failed to load target state: %s", err.Error()) +- conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: msg, LastTransitionTime: &now}) +- if firstSeen, ok := m.repoErrorCache.Load(app.Name); ok { +- if time.Since(firstSeen.(time.Time)) <= m.repoErrorGracePeriod && !noRevisionCache { +- // if first seen is less than grace period and it's not a Level 3 comparison, +- // ignore error and short circuit +- logCtx.Debugf("Ignoring repo error %v, already encountered error in grace period", err.Error()) ++ if isFluxSubsystemEnabled(app) && app.Spec.Source.IsHelm() { ++ targetObjs, conditions, failedToLoadObjs = m.getFluxHelmTargetObjects(app, conditions, now) ++ } else if isFluxSubsystemEnabled(app) && !app.Spec.Source.IsHelm() { ++ targetObjs, conditions, failedToLoadObjs = m.getFluxKustomizeTargetObjects(app, conditions, now) ++ } else { ++ targetObjs, manifestInfos, err = m.GetRepoObjs(app, sources, appLabelKey, revisions, noCache, noRevisionCache, verifySignature, project) ++ if err != nil { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ msg := fmt.Sprintf("Failed to load target state: %s", err.Error()) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: msg, LastTransitionTime: &now}) ++ if firstSeen, ok := m.repoErrorCache.Load(app.Name); ok { ++ if time.Since(firstSeen.(time.Time)) <= m.repoErrorGracePeriod && !noRevisionCache { ++ // if first seen is less than grace period and it's not a Level 3 comparison, ++ // ignore error and short circuit ++ logCtx.Debugf("Ignoring repo error %v, already encountered error in grace period", err.Error()) ++ return nil, CompareStateRepoError ++ } ++ } else if !noRevisionCache { ++ logCtx.Debugf("Ignoring repo error %v, new occurrence", err.Error()) ++ m.repoErrorCache.Store(app.Name, time.Now()) + return nil, CompareStateRepoError + } +- } else if !noRevisionCache { +- logCtx.Debugf("Ignoring repo error %v, new occurrence", err.Error()) +- m.repoErrorCache.Store(app.Name, time.Now()) +- return nil, CompareStateRepoError ++ failedToLoadObjs = true ++ } else { ++ m.repoErrorCache.Delete(app.Name) + } +- failedToLoadObjs = true +- } else { +- m.repoErrorCache.Delete(app.Name) + } + } else { + // Prevent applying local manifests for now when signature verification is enabled +diff --git a/controller/state_fsa.go b/controller/state_fsa.go +new file mode 100644 +index 000000000..0892309d2 +--- /dev/null ++++ b/controller/state_fsa.go +@@ -0,0 +1,139 @@ ++package controller ++ ++import ( ++ "context" ++ "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" ++ "k8s.io/apimachinery/pkg/apis/meta/v1" ++ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ++ "k8s.io/apimachinery/pkg/runtime/schema" ++) ++ ++func isFluxSubsystemEnabled(app *v1alpha1.Application) bool { ++ if app == nil { ++ return false ++ } ++ if app.Spec.SyncPolicy == nil { ++ return false ++ } ++ if app.Spec.SyncPolicy.SyncOptions == nil { ++ return false ++ } ++ if app.Spec.SyncPolicy.SyncOptions.HasOption("FluxSubsystem=true") == false { ++ return false ++ } ++ return true ++} ++ ++func (m *appStateManager) getFluxHelmTargetObjects(app *v1alpha1.Application, conditions []v1alpha1.ApplicationCondition, now v1.Time) ([]*unstructured.Unstructured, []v1alpha1.ApplicationCondition, bool) { ++ var ( ++ targetObjs []*unstructured.Unstructured ++ failedToLoadObjs bool ++ ) ++ ++ cluster, err := m.db.GetCluster(context.TODO(), app.Spec.Destination.Server) ++ if err != nil { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) ++ failedToLoadObjs = true ++ } ++ config := cluster.RESTConfig() ++ ++ var hl *unstructured.Unstructured ++ hl, err = m.kubectl.GetResource(context.TODO(), config, schema.GroupVersionKind{ ++ Group: "helm.toolkit.fluxcd.io", ++ Version: "v2beta2", ++ Kind: "HelmRelease", ++ }, app.Name, app.Spec.Destination.Namespace) ++ if err != nil { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) ++ failedToLoadObjs = true ++ } ++ ++ if hl == nil { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) ++ failedToLoadObjs = true ++ } else { ++ var source *unstructured.Unstructured ++ if sourceKind, found, err := unstructured.NestedString(hl.Object, "spec", "chart", "spec", "sourceRef", "kind"); found && err == nil { ++ if sourceName, found, err := unstructured.NestedString(hl.Object, "spec", "chart", "spec", "sourceRef", "name"); found && err == nil { ++ if sourceNS, found, err := unstructured.NestedString(hl.Object, "spec", "chart", "spec", "sourceRef", "namespace"); err == nil { ++ if !found { ++ sourceNS = hl.GetNamespace() ++ } ++ source, err = m.kubectl.GetResource(context.Background(), config, schema.GroupVersionKind{ ++ Group: "source.toolkit.fluxcd.io", ++ Version: "v1beta1", ++ Kind: sourceKind, ++ }, sourceName, sourceNS) ++ } ++ } ++ } ++ if source != nil { ++ targetObjs = []*unstructured.Unstructured{hl, source} ++ } else { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) ++ failedToLoadObjs = true ++ } ++ } ++ return targetObjs, conditions, failedToLoadObjs ++} ++ ++func (m *appStateManager) getFluxKustomizeTargetObjects(app *v1alpha1.Application, conditions []v1alpha1.ApplicationCondition, now v1.Time) ([]*unstructured.Unstructured, []v1alpha1.ApplicationCondition, bool) { ++ var ( ++ targetObjs []*unstructured.Unstructured ++ failedToLoadObjs bool ++ ) ++ ++ cluster, err := m.db.GetCluster(context.TODO(), app.Spec.Destination.Server) ++ if err != nil { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) ++ failedToLoadObjs = true ++ } ++ config := cluster.RESTConfig() ++ ++ var ks *unstructured.Unstructured ++ ks, err = m.kubectl.GetResource(context.TODO(), config, schema.GroupVersionKind{ ++ Group: "kustomize.toolkit.fluxcd.io", ++ Version: "v1beta2", ++ Kind: "Kustomization", ++ }, app.Name, app.Spec.Destination.Namespace) ++ if err != nil { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) ++ failedToLoadObjs = true ++ } ++ ++ if ks == nil { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) ++ failedToLoadObjs = true ++ } else { ++ var source *unstructured.Unstructured ++ if sourceKind, found, err := unstructured.NestedString(ks.Object, "spec", "sourceRef", "kind"); found && err == nil { ++ if sourceName, found, err := unstructured.NestedString(ks.Object, "spec", "sourceRef", "name"); found && err == nil { ++ if sourceNS, found, err := unstructured.NestedString(ks.Object, "spec", "sourceRef", "namespace"); err == nil { ++ if !found { ++ sourceNS = ks.GetNamespace() ++ } ++ source, err = m.kubectl.GetResource(context.Background(), config, schema.GroupVersionKind{ ++ Group: "source.toolkit.fluxcd.io", ++ Version: "v1beta1", ++ Kind: sourceKind, ++ }, sourceName, sourceNS) ++ } ++ } ++ } ++ if source != nil { ++ targetObjs = []*unstructured.Unstructured{ks, source} ++ } else { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) ++ failedToLoadObjs = true ++ } ++ } ++ return targetObjs, conditions, failedToLoadObjs ++} diff --git a/patches-argo-cd-v2.10/03-allow-flux-and-oci-schemes.patch b/patches-argo-cd-v2.10/03-allow-flux-and-oci-schemes.patch new file mode 100644 index 0000000..93613fd --- /dev/null +++ b/patches-argo-cd-v2.10/03-allow-flux-and-oci-schemes.patch @@ -0,0 +1,58 @@ +allow flux and oci schemes + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + reposerver/repository/repository.go | 5 +++++ + server/application/application.go | 4 ++++ + util/argo/argo.go | 5 +++++ + 3 files changed, 14 insertions(+) + +diff --git a/reposerver/repository/repository.go b/reposerver/repository/repository.go +index 5d11a6438..5085cd2a3 100644 +--- a/reposerver/repository/repository.go ++++ b/reposerver/repository/repository.go +@@ -2476,6 +2476,11 @@ func (s *Service) TestRepository(ctx context.Context, q *apiclient.TestRepositor + } + check := checks[repo.Type] + apiResp := &apiclient.TestRepositoryResponse{VerifiedRepository: false} ++ ++ // Flux or OCI scheme are special cases ++ if strings.HasPrefix(repo.Repo, "flux://") || strings.HasPrefix(repo.Repo, "oci://") { ++ return apiResp, nil ++ } + err := check() + if err != nil { + return apiResp, fmt.Errorf("error testing repository connectivity: %w", err) +diff --git a/server/application/application.go b/server/application/application.go +index 8ee16b934..83cef54ca 100644 +--- a/server/application/application.go ++++ b/server/application/application.go +@@ -2027,6 +2027,10 @@ func (s *Server) resolveRevision(ctx context.Context, app *appv1.Application, sy + // If it's already a commit SHA, then no need to look it up + return ambiguousRevision, ambiguousRevision, nil + } ++ if strings.HasPrefix(app.Spec.Source.RepoURL, "flux://") || strings.HasPrefix(app.Spec.Source.RepoURL, "oci://") { ++ // Flux or OCI scheme are special cases ++ return ambiguousRevision, ambiguousRevision, nil ++ } + } + + resolveRevisionResponse, err := repoClient.ResolveRevision(ctx, &apiclient.ResolveRevisionRequest{ +diff --git a/util/argo/argo.go b/util/argo/argo.go +index 36e513cf0..ae3ceea5a 100644 +--- a/util/argo/argo.go ++++ b/util/argo/argo.go +@@ -291,6 +291,11 @@ func ValidateRepo( + + conditions := make([]argoappv1.ApplicationCondition, 0) + ++ // Flux or OCI scheme are special cases ++ if strings.HasPrefix(spec.Source.RepoURL, "flux://") || strings.HasPrefix(spec.Source.RepoURL, "oci://") { ++ return conditions, nil ++ } ++ + // Test the repo + conn, repoClient, err := repoClientset.NewRepoServerClient() + if err != nil { diff --git a/patches-argo-cd-v2.10/04-ui-fix-find-leaf-pod-bug.patch b/patches-argo-cd-v2.10/04-ui-fix-find-leaf-pod-bug.patch new file mode 100644 index 0000000..f564d62 --- /dev/null +++ b/patches-argo-cd-v2.10/04-ui-fix-find-leaf-pod-bug.patch @@ -0,0 +1,62 @@ +ui: fix find leaf pod bug + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + .../resource-details/resource-details.tsx | 10 ++++++---- + ui/src/app/applications/components/utils.tsx | 13 ++++++++++++- + 2 files changed, 18 insertions(+), 5 deletions(-) + +diff --git a/ui/src/app/applications/components/resource-details/resource-details.tsx b/ui/src/app/applications/components/resource-details/resource-details.tsx +index 52d2fef18..7e4459666 100644 +--- a/ui/src/app/applications/components/resource-details/resource-details.tsx ++++ b/ui/src/app/applications/components/resource-details/resource-details.tsx +@@ -271,10 +271,12 @@ export const ResourceDetails = (props: ResourceDetailsProps) => { + if (selectedNode.kind === 'Pod') { + podState = liveState; + } else { +- const childPod = AppUtils.findChildPod(selectedNode, tree); +- if (childPod) { +- podState = await services.applications.getResource(application.metadata.name, application.metadata.namespace, childPod).catch(() => null); +- } ++ podState = null; ++ // CK: findChildPod is expensive, so we only call it when we need to ++ // const childPod = AppUtils.findChildPod(selectedNode, tree); ++ // if (childPod) { ++ // podState = await services.applications.getResource(application.metadata.name, application.metadata.namespace, childPod).catch(() => null); ++ // } + } + + const settings = await services.authService.settings(); +diff --git a/ui/src/app/applications/components/utils.tsx b/ui/src/app/applications/components/utils.tsx +index cd39470bf..4c0135927 100644 +--- a/ui/src/app/applications/components/utils.tsx ++++ b/ui/src/app/applications/components/utils.tsx +@@ -458,7 +458,8 @@ function getActionItems( + }); + } + +- if (findChildPod(resource, tree)) { ++ // CK: findChildPod(resource, tree) is too expensive, so we only call it for Pod resources ++ if (resource.kind === 'Pod') { + items.push({ + title: 'Logs', + iconClassName: 'fa fa-fw fa-align-left', +@@ -873,6 +874,16 @@ export const OperationState = ({app, quiet}: {app: appModels.Application; quiet? + ); + }; + ++export function getKstatusCondition(conditionType: string, ks: appModels.State): {status: string; message: string; reason: string} { ++ for (const condition of ks.status.conditions) { ++ if (condition["type"] === conditionType) { ++ return {message: condition.message, reason: condition.reason, status: condition.status}; ++ } ++ } ++ ++ return undefined; ++} ++ + export function getPodStateReason(pod: appModels.State): {message: string; reason: string; netContainerStatuses: any[]} { + let reason = pod.status.phase; + let message = ''; diff --git a/patches-argo-cd-v2.10/05-ui-show-kstatus-in-ui.patch b/patches-argo-cd-v2.10/05-ui-show-kstatus-in-ui.patch new file mode 100644 index 0000000..9a0f384 --- /dev/null +++ b/patches-argo-cd-v2.10/05-ui-show-kstatus-in-ui.patch @@ -0,0 +1,40 @@ +ui: show kstatus in ui + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + .../application-node-info.tsx | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git a/ui/src/app/applications/components/application-node-info/application-node-info.tsx b/ui/src/app/applications/components/application-node-info/application-node-info.tsx +index 18ff44e38..dc5f1f539 100644 +--- a/ui/src/app/applications/components/application-node-info/application-node-info.tsx ++++ b/ui/src/app/applications/components/application-node-info/application-node-info.tsx +@@ -10,6 +10,7 @@ import {services} from '../../../shared/services'; + import {ResourceTreeNode} from '../application-resource-tree/application-resource-tree'; + import {ApplicationResourcesDiff} from '../application-resources-diff/application-resources-diff'; + import {ComparisonStatusIcon, formatCreationTimestamp, getPodReadinessGatesState, getPodStateReason, HealthStatusIcon} from '../utils'; ++import {getKstatusCondition} from '../utils'; + import './application-node-info.scss'; + import {ReadinessGatesNotPassedWarning} from './readiness-gates-not-passed-warning'; + +@@ -138,6 +139,18 @@ export const ApplicationNodeInfo = (props: { + attributes.push({title: 'HOSTNAMES', value: hostNames}); + } else if (props.node.kind === 'ReplicaSet') { + attributes.push({title: 'REPLICAS', value: `${props.live.spec?.replicas || 0}/${props.live.status?.readyReplicas || 0}/${props.live.status?.replicas || 0}`}); ++ } else if (props.node.kind == 'Kustomization' || ++ props.node.kind == "HelmRelease" || ++ props.node.kind == "GitRepository" || ++ props.node.kind == "Bucket" || ++ props.node.kind == "OCIRepository" || ++ props.node.kind == "Terraform") { ++ const condition = getKstatusCondition("Ready", props.live) ++ if (condition) { ++ attributes.push({title: 'READY', value: condition.status}) ++ attributes.push({title: 'REASON', value: condition.reason}) ++ attributes.push({title: 'STATUS', value: condition.message}) ++ } + } + } + diff --git a/patches-argo-cd-v2.10/06-show-custom-info.patch b/patches-argo-cd-v2.10/06-show-custom-info.patch new file mode 100644 index 0000000..1894099 --- /dev/null +++ b/patches-argo-cd-v2.10/06-show-custom-info.patch @@ -0,0 +1,58 @@ +show custom info + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + controller/cache/info.go | 37 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +diff --git a/controller/cache/info.go b/controller/cache/info.go +index 53512de6b..ffa4ae32f 100644 +--- a/controller/cache/info.go ++++ b/controller/cache/info.go +@@ -67,6 +67,43 @@ func populateNodeInfo(un *unstructured.Unstructured, res *ResourceInfo, customLa + case "VirtualService": + populateIstioVirtualServiceInfo(un, res) + } ++ // TODO add Flux here ++ case "source.toolkit.fluxcd.io": ++ if revision, found, err := unstructured.NestedString(un.Object, "status", "artifact", "revision"); found && err == nil { ++ parts := strings.SplitN(revision, "/", 2) ++ if len(parts) == 1 { ++ if len(parts[0]) >= 8 { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Revision", Value: parts[0][0:8]}) ++ } ++ } else if len(parts) == 2 { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Branch", Value: parts[0]}) ++ if len(parts[1]) >= 8 { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Revision", Value: parts[1][0:8]}) ++ } ++ } ++ } ++ case "helm.toolkit.fluxcd.io": ++ switch gvk.Kind { ++ case "HelmRelease": ++ if applied, found, err := unstructured.NestedString(un.Object, "status", "lastAppliedRevision"); found && err == nil { ++ if attempted, found, err := unstructured.NestedString(un.Object, "status", "lastAppliedRevision"); found && err == nil { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Revision", Value: fmt.Sprintf("%s/%s", attempted, applied)}) ++ } ++ } ++ } ++ case "kustomize.toolkit.fluxcd.io", "infra.contrib.fluxcd.io": ++ switch gvk.Kind { ++ case "Kustomization", "Terraform": ++ if revision, found, err := unstructured.NestedString(un.Object, "status", "lastAppliedRevision"); found && err == nil { ++ parts := strings.SplitN(revision, "/", 2) ++ if len(parts) == 2 { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Branch", Value: parts[0]}) ++ if len(parts[1]) >= 8 { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Revision", Value: parts[1][0:8]}) ++ } ++ } ++ } ++ } + } + } + +or k, v := range un.GetAnnotations() { diff --git a/patches-argo-cd-v2.10/07-ui-add-resource-icons.patch b/patches-argo-cd-v2.10/07-ui-add-resource-icons.patch new file mode 100644 index 0000000..a834b6b --- /dev/null +++ b/patches-argo-cd-v2.10/07-ui-add-resource-icons.patch @@ -0,0 +1,317 @@ +ui: add resource icons + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + ui/src/app/applications/components/resources.ts | 12 ++++++ + ui/src/assets/images/resources/flux.svg | 45 ++++++++++++++++++++++ + ui/src/assets/images/resources/gitrepo.svg | 39 +++++++++++++++++++ + ui/src/assets/images/resources/helm-rel.svg | 38 +++++++++++++++++++ + ui/src/assets/images/resources/kustomization.svg | 45 ++++++++++++++++++++++ + ui/src/assets/images/resources/terraform.svg | 42 +++++++++++++++++++++ + 6 files changed, 221 insertions(+) + create mode 100644 ui/src/assets/images/resources/flux.svg + create mode 100644 ui/src/assets/images/resources/gitrepo.svg + create mode 100644 ui/src/assets/images/resources/helm-rel.svg + create mode 100644 ui/src/assets/images/resources/kustomization.svg + create mode 100644 ui/src/assets/images/resources/terraform.svg + +diff --git a/ui/src/app/applications/components/resources.ts b/ui/src/app/applications/components/resources.ts +index 957121da9..fd613d6ed 100644 +--- a/ui/src/app/applications/components/resources.ts ++++ b/ui/src/app/applications/components/resources.ts +@@ -11,13 +11,18 @@ export const resourceIcons = new Map([ + ['DaemonSet', 'ds'], + ['Endpoint', 'ep'], + ['Endpoints', 'ep'], ++ ['GitRepository', 'gitrepo'], + ['Group', 'group'], ++ ['HelmRelease', 'helm-rel'], + ['HorizontalPodAutoscaler', 'hpa'], + ['Ingress', 'ing'], + ['Job', 'job'], ++ ['Kustomization', 'kustomization'], ++ ['Kustomization', 'flux'], + ['LimitRange', 'limits'], + ['NetworkPolicy', 'netpol'], + ['Namespace', 'ns'], ++ ['OCIRepository', 'flux'], + ['Pod', 'pod'], + ['PodSecurityPolicy', 'psp'], + ['PersistentVolume', 'pv'], +@@ -31,6 +36,7 @@ export const resourceIcons = new Map([ + ['Secret', 'secret'], + ['StatefulSet', 'sts'], + ['Service', 'svc'], ++ ['Terraform', 'terraform'], + ['User', 'user'], + ['Volume', 'vol'] + ]); +@@ -48,14 +54,19 @@ export const resources = new Map([ + ['Endpoint', 'ep'], + ['Endpoints', 'ep'], + ['Event', 'ev'], ++ ['GitRepository', 'gitrepo'], + ['Group', 'group'], ++ ['HelmRelease', 'helm-rel'], + ['HorizontalPodAutoscaler', 'hpa'], + ['Ingress', 'ing'], + ['Job', 'job'], ++ ['Kustomization', 'kustomization'], ++ ['Kustomization', 'flux'], + ['LimitRange', 'limits'], + ['NetworkPolicy', 'netpol'], + ['Namespace', 'ns'], + ['Node', 'no'], ++ ['OCIRepository', 'flux'], + ['Pod', 'pod'], + ['PodSecurityPolicy', 'psp'], + ['PersistentVolume', 'pv'], +@@ -72,6 +83,7 @@ export const resources = new Map([ + ['Secret', 'secret'], + ['StatefulSet', 'sts'], + ['Service', 'svc'], ++ ['Terraform', 'terraform'], + ['User', 'user'], + ['Volume', 'vol'] + ]); +diff --git a/ui/src/assets/images/resources/flux.svg b/ui/src/assets/images/resources/flux.svg +new file mode 100644 +index 000000000..f65f02c17 +--- /dev/null ++++ b/ui/src/assets/images/resources/flux.svg +@@ -0,0 +1,45 @@ ++ ++ ++ ++ ++ ++ image/svg+xml ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/ui/src/assets/images/resources/gitrepo.svg b/ui/src/assets/images/resources/gitrepo.svg +new file mode 100644 +index 000000000..630146f45 +--- /dev/null ++++ b/ui/src/assets/images/resources/gitrepo.svg +@@ -0,0 +1,39 @@ ++ ++ ++ ++ ++ ++ image/svg+xml ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/ui/src/assets/images/resources/helm-rel.svg b/ui/src/assets/images/resources/helm-rel.svg +new file mode 100644 +index 000000000..b4bbcfba0 +--- /dev/null ++++ b/ui/src/assets/images/resources/helm-rel.svg +@@ -0,0 +1,38 @@ ++ ++ ++ ++ ++ ++ image/svg+xml ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/ui/src/assets/images/resources/kustomization.svg b/ui/src/assets/images/resources/kustomization.svg +new file mode 100644 +index 000000000..f65f02c17 +--- /dev/null ++++ b/ui/src/assets/images/resources/kustomization.svg +@@ -0,0 +1,45 @@ ++ ++ ++ ++ ++ ++ image/svg+xml ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/ui/src/assets/images/resources/terraform.svg b/ui/src/assets/images/resources/terraform.svg +new file mode 100644 +index 000000000..7acfef40b +--- /dev/null ++++ b/ui/src/assets/images/resources/terraform.svg +@@ -0,0 +1,42 @@ ++ ++ ++ ++ ++ ++ image/svg+xml ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff --git a/patches-argo-cd-v2.10/08-ui-implement-health-checks-and.patch b/patches-argo-cd-v2.10/08-ui-implement-health-checks-and.patch new file mode 100644 index 0000000..02bf81b --- /dev/null +++ b/patches-argo-cd-v2.10/08-ui-implement-health-checks-and.patch @@ -0,0 +1,551 @@ +ui: implement health checks and actions + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + .../Kustomization/actions/action_test.yaml | 4 ++ + .../Kustomization/actions/discovery.lua | 3 ++ + .../Kustomization/actions/reconcile/action.lua | 9 +++++ + .../actions/testdata/ks-requested.yaml | 26 ++++++++++++++++ + .../Kustomization/actions/testdata/ks.yaml | 24 +++++++++++++++ + .../Kustomization/health.lua | 25 +++++++++++++++ + .../Kustomization/testdata/degraded.yaml | 24 +++++++++++++++ + .../Kustomization/testdata/healthy.yaml | 24 +++++++++++++++ + .../Kustomization/testdata/progressing.yaml | 22 +++++++++++++ + .../kustomize.toolkit.fluxcd.io/health_test.yaml | 13 ++++++++ + .../GitRepository/actions/action_test.yaml | 4 ++ + .../GitRepository/actions/discovery.lua | 3 ++ + .../GitRepository/actions/reconcile/action.lua | 9 +++++ + .../actions/testdata/gitrepo-requested.yaml | 33 ++++++++++++++++++++ + .../GitRepository/actions/testdata/gitrepo.yaml | 32 +++++++++++++++++++ + .../GitRepository/health.lua | 25 +++++++++++++++ + .../GitRepository/testdata/degraded.yaml | 33 ++++++++++++++++++++ + .../GitRepository/testdata/healthy.yaml | 33 ++++++++++++++++++++ + .../GitRepository/testdata/progressing.yaml | 24 +++++++++++++++ + .../source.toolkit.fluxcd.io/health_test.yaml | 13 ++++++++ + 20 files changed, 383 insertions(+) + create mode 100644 resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/action_test.yaml + create mode 100644 resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/discovery.lua + create mode 100644 resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/reconcile/action.lua + create mode 100644 resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/testdata/ks-requested.yaml + create mode 100644 resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/testdata/ks.yaml + create mode 100644 resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/health.lua + create mode 100644 resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/testdata/degraded.yaml + create mode 100644 resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/testdata/healthy.yaml + create mode 100644 resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/testdata/progressing.yaml + create mode 100644 resource_customizations/kustomize.toolkit.fluxcd.io/health_test.yaml + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/action_test.yaml + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/discovery.lua + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/reconcile/action.lua + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo-requested.yaml + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo.yaml + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/health.lua + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/degraded.yaml + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/healthy.yaml + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/progressing.yaml + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/health_test.yaml + +diff --git a/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/action_test.yaml b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/action_test.yaml +new file mode 100644 +index 000000000..1f3e97743 +--- /dev/null ++++ b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/action_test.yaml +@@ -0,0 +1,4 @@ ++actionTests: ++- action: reconcile ++ inputPath: testdata/ks.yaml ++ expectedOutputPath: testdata/ks-requested.yaml +diff --git a/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/discovery.lua b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/discovery.lua +new file mode 100644 +index 000000000..c7f895ffb +--- /dev/null ++++ b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/discovery.lua +@@ -0,0 +1,3 @@ ++actions = {} ++actions["reconcile"] = {} ++return actions +diff --git a/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/reconcile/action.lua b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/reconcile/action.lua +new file mode 100644 +index 000000000..f83651d3c +--- /dev/null ++++ b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/reconcile/action.lua +@@ -0,0 +1,9 @@ ++local os = require("os") ++if obj.metadata == nil then ++ obj.metadata = {} ++end ++if obj.metadata.annotations == nil then ++ obj.metadata.annotations = {} ++end ++obj.metadata.annotations["reconcile.fluxcd.io/requestedAt"] = os.date("!%Y-%m-%dT%XZ") ++return obj +diff --git a/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/testdata/ks-requested.yaml b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/testdata/ks-requested.yaml +new file mode 100644 +index 000000000..c24e3d7de +--- /dev/null ++++ b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/testdata/ks-requested.yaml +@@ -0,0 +1,26 @@ ++apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 ++kind: Kustomization ++metadata: ++ name: my-secrets ++ namespace: default ++ annotations: ++ reconcile.fluxcd.io/requestedAt: "2022-02-27T20:12:28.222377213+07:00" ++spec: ++ interval: 5m ++ path: "./" ++ sourceRef: ++ kind: GitRepository ++ name: my-secrets ++ decryption: ++ provider: sops ++ secretRef: ++ name: sops-age ++status: ++ conditions: ++ - lastTransitionTime: "2020-09-17T19:28:48Z" ++ message: "Applied revision: master/a1afe267b54f38b46b487f6e938a6fd508278c07" ++ reason: ReconciliationSucceeded ++ status: "True" ++ type: Ready ++ lastAppliedRevision: master/a1afe267b54f38b46b487f6e938a6fd508278c07 ++ lastAttemptedRevision: master/a1afe267b54f38b46b487f6e938a6fd508278c07 +diff --git a/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/testdata/ks.yaml b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/testdata/ks.yaml +new file mode 100644 +index 000000000..0fac5ad09 +--- /dev/null ++++ b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/actions/testdata/ks.yaml +@@ -0,0 +1,24 @@ ++apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 ++kind: Kustomization ++metadata: ++ name: my-secrets ++ namespace: default ++spec: ++ interval: 5m ++ path: "./" ++ sourceRef: ++ kind: GitRepository ++ name: my-secrets ++ decryption: ++ provider: sops ++ secretRef: ++ name: sops-age ++status: ++ conditions: ++ - lastTransitionTime: "2020-09-17T19:28:48Z" ++ message: "Applied revision: master/a1afe267b54f38b46b487f6e938a6fd508278c07" ++ reason: ReconciliationSucceeded ++ status: "True" ++ type: Ready ++ lastAppliedRevision: master/a1afe267b54f38b46b487f6e938a6fd508278c07 ++ lastAttemptedRevision: master/a1afe267b54f38b46b487f6e938a6fd508278c07 +diff --git a/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/health.lua b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/health.lua +new file mode 100644 +index 000000000..9a9122d44 +--- /dev/null ++++ b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/health.lua +@@ -0,0 +1,25 @@ ++hs = {} ++if obj.status ~= nil then ++ if obj.status.conditions ~= nil then ++ ready_status = "" ++ for _, condition in ipairs(obj.status.conditions) do ++ if condition.type == "Ready" then ++ ready_status = condition.status ++ ready_message = condition.reason .. " - " .. condition.message ++ end ++ end ++ if ready_status == "True" then ++ hs.status = "Healthy" ++ elseif ready_status == "False" then ++ hs.status = "Degraded" ++ elseif ready_status == "Unknown" then ++ hs.status = "Progressing" ++ end ++ hs.message = ready_message ++ return hs ++ end ++end ++ ++hs.status = "Progressing" ++hs.message = "Waiting for Kustomization to reconcile ..." ++return hs +diff --git a/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/testdata/degraded.yaml b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/testdata/degraded.yaml +new file mode 100644 +index 000000000..43af6bce2 +--- /dev/null ++++ b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/testdata/degraded.yaml +@@ -0,0 +1,24 @@ ++apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 ++kind: Kustomization ++metadata: ++ name: my-secrets ++ namespace: default ++spec: ++ interval: 5m ++ path: "./" ++ sourceRef: ++ kind: GitRepository ++ name: my-secrets ++ decryption: ++ provider: sops ++ secretRef: ++ name: sops-age ++status: ++ conditions: ++ - lastTransitionTime: "2020-09-17T07:26:48Z" ++ message: "The Service 'backend' is invalid: spec.type: Unsupported value: 'Ingress'" ++ reason: ValidationFailed ++ status: "False" ++ type: Ready ++ lastAppliedRevision: master/a1afe267b54f38b46b487f6e938a6fd508278c07 ++ lastAttemptedRevision: master/7c500d302e38e7e4a3f327343a8a5c21acaaeb87 +diff --git a/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/testdata/healthy.yaml b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/testdata/healthy.yaml +new file mode 100644 +index 000000000..0fac5ad09 +--- /dev/null ++++ b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/testdata/healthy.yaml +@@ -0,0 +1,24 @@ ++apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 ++kind: Kustomization ++metadata: ++ name: my-secrets ++ namespace: default ++spec: ++ interval: 5m ++ path: "./" ++ sourceRef: ++ kind: GitRepository ++ name: my-secrets ++ decryption: ++ provider: sops ++ secretRef: ++ name: sops-age ++status: ++ conditions: ++ - lastTransitionTime: "2020-09-17T19:28:48Z" ++ message: "Applied revision: master/a1afe267b54f38b46b487f6e938a6fd508278c07" ++ reason: ReconciliationSucceeded ++ status: "True" ++ type: Ready ++ lastAppliedRevision: master/a1afe267b54f38b46b487f6e938a6fd508278c07 ++ lastAttemptedRevision: master/a1afe267b54f38b46b487f6e938a6fd508278c07 +diff --git a/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/testdata/progressing.yaml b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/testdata/progressing.yaml +new file mode 100644 +index 000000000..5379a23ba +--- /dev/null ++++ b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/testdata/progressing.yaml +@@ -0,0 +1,22 @@ ++apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 ++kind: Kustomization ++metadata: ++ name: my-secrets ++ namespace: default ++spec: ++ interval: 5m ++ path: "./" ++ sourceRef: ++ kind: GitRepository ++ name: my-secrets ++ decryption: ++ provider: sops ++ secretRef: ++ name: sops-age ++status: ++ conditions: ++ - lastTransitionTime: "2020-09-17T19:28:48Z" ++ message: "reconciliation in progress" ++ reason: Progressing ++ status: "Unknown" ++ type: Ready +diff --git a/resource_customizations/kustomize.toolkit.fluxcd.io/health_test.yaml b/resource_customizations/kustomize.toolkit.fluxcd.io/health_test.yaml +new file mode 100644 +index 000000000..07ab00d08 +--- /dev/null ++++ b/resource_customizations/kustomize.toolkit.fluxcd.io/health_test.yaml +@@ -0,0 +1,13 @@ ++tests: ++- healthStatus: ++ status: Progressing ++ message: "Progressing - reconciliation in progress" ++ inputPath: testdata/progressing.yaml ++- healthStatus: ++ status: Degraded ++ message: "ValidationFailed - The Service 'backend' is invalid: spec.type: Unsupported value: 'Ingress'" ++ inputPath: testdata/degraded.yaml ++- healthStatus: ++ status: Healthy ++ message: "ReconciliationSucceeded - Applied revision: master/a1afe267b54f38b46b487f6e938a6fd508278c07" ++ inputPath: testdata/healthy.yaml +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/action_test.yaml b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/action_test.yaml +new file mode 100644 +index 000000000..e9070b908 +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/action_test.yaml +@@ -0,0 +1,4 @@ ++actionTests: ++- action: reconcile ++ inputPath: testdata/gitrepo.yaml ++ expectedOutputPath: testdata/gitrepo-requested.yaml +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/discovery.lua b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/discovery.lua +new file mode 100644 +index 000000000..c7f895ffb +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/discovery.lua +@@ -0,0 +1,3 @@ ++actions = {} ++actions["reconcile"] = {} ++return actions +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/reconcile/action.lua b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/reconcile/action.lua +new file mode 100644 +index 000000000..f83651d3c +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/reconcile/action.lua +@@ -0,0 +1,9 @@ ++local os = require("os") ++if obj.metadata == nil then ++ obj.metadata = {} ++end ++if obj.metadata.annotations == nil then ++ obj.metadata.annotations = {} ++end ++obj.metadata.annotations["reconcile.fluxcd.io/requestedAt"] = os.date("!%Y-%m-%dT%XZ") ++return obj +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo-requested.yaml b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo-requested.yaml +new file mode 100644 +index 000000000..6eb6dc59d +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo-requested.yaml +@@ -0,0 +1,33 @@ ++apiVersion: source.toolkit.fluxcd.io/v1beta1 ++kind: GitRepository ++metadata: ++ annotations: ++ inferred-parent-of: podinfo ++ reconcile.fluxcd.io/requestedAt: "2022-02-27T20:12:28.222377213+07:00" ++ labels: ++ app.kubernetes.io/instance: test-flux ++ name: podinfo ++ namespace: dev ++spec: ++ gitImplementation: go-git ++ interval: 1m0s ++ ref: ++ branch: master ++ timeout: 60s ++ url: https://github.com/openshift-fluxv2-poc/podinfo ++status: ++ artifact: ++ checksum: ce96832ef51e011795626ae68cbfe38deedcff64776e96af618840564a394f1a ++ lastUpdateTime: "2022-02-27T13:26:53Z" ++ path: gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz ++ revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794 ++ url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz ++ conditions: ++ - lastTransitionTime: "2022-02-27T12:00:08Z" ++ message: 'Fetched revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794' ++ reason: GitOperationSucceed ++ status: "True" ++ type: Ready ++ lastHandledReconcileAt: "2022-02-27T20:12:28.222377213+07:00" ++ observedGeneration: 2 ++ url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/latest.tar.gz +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo.yaml b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo.yaml +new file mode 100644 +index 000000000..19a172233 +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo.yaml +@@ -0,0 +1,32 @@ ++apiVersion: source.toolkit.fluxcd.io/v1beta1 ++kind: GitRepository ++metadata: ++ annotations: ++ inferred-parent-of: podinfo ++ labels: ++ app.kubernetes.io/instance: test-flux ++ name: podinfo ++ namespace: dev ++spec: ++ gitImplementation: go-git ++ interval: 1m0s ++ ref: ++ branch: master ++ timeout: 60s ++ url: https://github.com/openshift-fluxv2-poc/podinfo ++status: ++ artifact: ++ checksum: ce96832ef51e011795626ae68cbfe38deedcff64776e96af618840564a394f1a ++ lastUpdateTime: "2022-02-27T13:26:53Z" ++ path: gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz ++ revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794 ++ url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz ++ conditions: ++ - lastTransitionTime: "2022-02-27T12:00:08Z" ++ message: 'Fetched revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794' ++ reason: GitOperationSucceed ++ status: "True" ++ type: Ready ++ lastHandledReconcileAt: "2022-02-27T20:12:28.222377213+07:00" ++ observedGeneration: 2 ++ url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/latest.tar.gz +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/health.lua b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/health.lua +new file mode 100644 +index 000000000..61707bd4a +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/health.lua +@@ -0,0 +1,25 @@ ++hs = {} ++if obj.status ~= nil then ++ if obj.status.conditions ~= nil then ++ ready_status = "" ++ for _, condition in ipairs(obj.status.conditions) do ++ if condition.type == "Ready" then ++ ready_status = condition.status ++ ready_message = condition.reason .. " - " .. condition.message ++ end ++ end ++ if ready_status == "True" then ++ hs.status = "Healthy" ++ elseif ready_status == "False" then ++ hs.status = "Degraded" ++ elseif ready_status == "Unknown" then ++ hs.status = "Progressing" ++ end ++ hs.message = ready_message ++ return hs ++ end ++end ++ ++hs.status = "Progressing" ++hs.message = "Waiting for GitRepository to reconcile ..." ++return hs +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/degraded.yaml b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/degraded.yaml +new file mode 100644 +index 000000000..e2c9b6d62 +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/degraded.yaml +@@ -0,0 +1,33 @@ ++apiVersion: source.toolkit.fluxcd.io/v1beta1 ++kind: GitRepository ++metadata: ++ annotations: ++ inferred-parent-of: podinfo ++ reconcile.fluxcd.io/requestedAt: "2022-02-27T22:46:00.477195452+07:00" ++ labels: ++ app.kubernetes.io/instance: test-flux ++ name: podinfo ++ namespace: dev ++spec: ++ gitImplementation: go-git ++ interval: 1m0s ++ ref: ++ branch: master ++ timeout: 60s ++ url: https://github.com/openshift-fluxv2-poc/podinfo ++status: ++ artifact: ++ checksum: ce96832ef51e011795626ae68cbfe38deedcff64776e96af618840564a394f1a ++ lastUpdateTime: "2022-02-27T13:26:53Z" ++ path: gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz ++ revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794 ++ url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz ++ conditions: ++ - lastTransitionTime: "2022-02-27T15:47:37Z" ++ message: 'unable to clone ''https://github.com/openshift-fluxv2-poc/podinfo'': authentication required' ++ reason: GitOperationFailed ++ status: "False" ++ type: Ready ++ lastHandledReconcileAt: "2022-02-27T22:46:00.477195452+07:00" ++ observedGeneration: 2 ++ url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/latest.tar.gz +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/healthy.yaml b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/healthy.yaml +new file mode 100644 +index 000000000..6eb6dc59d +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/healthy.yaml +@@ -0,0 +1,33 @@ ++apiVersion: source.toolkit.fluxcd.io/v1beta1 ++kind: GitRepository ++metadata: ++ annotations: ++ inferred-parent-of: podinfo ++ reconcile.fluxcd.io/requestedAt: "2022-02-27T20:12:28.222377213+07:00" ++ labels: ++ app.kubernetes.io/instance: test-flux ++ name: podinfo ++ namespace: dev ++spec: ++ gitImplementation: go-git ++ interval: 1m0s ++ ref: ++ branch: master ++ timeout: 60s ++ url: https://github.com/openshift-fluxv2-poc/podinfo ++status: ++ artifact: ++ checksum: ce96832ef51e011795626ae68cbfe38deedcff64776e96af618840564a394f1a ++ lastUpdateTime: "2022-02-27T13:26:53Z" ++ path: gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz ++ revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794 ++ url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz ++ conditions: ++ - lastTransitionTime: "2022-02-27T12:00:08Z" ++ message: 'Fetched revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794' ++ reason: GitOperationSucceed ++ status: "True" ++ type: Ready ++ lastHandledReconcileAt: "2022-02-27T20:12:28.222377213+07:00" ++ observedGeneration: 2 ++ url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/latest.tar.gz +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/progressing.yaml b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/progressing.yaml +new file mode 100644 +index 000000000..6054bd04b +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/progressing.yaml +@@ -0,0 +1,24 @@ ++apiVersion: source.toolkit.fluxcd.io/v1beta1 ++kind: GitRepository ++metadata: ++ annotations: ++ inferred-parent-of: podinfo ++ reconcile.fluxcd.io/requestedAt: "2022-02-27T20:12:28.222377213+07:00" ++ labels: ++ app.kubernetes.io/instance: test-flux ++ name: podinfo ++ namespace: dev ++spec: ++ gitImplementation: go-git ++ interval: 1m0s ++ ref: ++ branch: master ++ timeout: 60s ++ url: https://github.com/openshift-fluxv2-poc/podinfo ++status: ++ conditions: ++ - lastTransitionTime: "2022-02-27T12:00:08Z" ++ message: 'reconciliation in progress' ++ reason: Progressing ++ status: "Unknown" ++ type: Ready +diff --git a/resource_customizations/source.toolkit.fluxcd.io/health_test.yaml b/resource_customizations/source.toolkit.fluxcd.io/health_test.yaml +new file mode 100644 +index 000000000..4812cf55d +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/health_test.yaml +@@ -0,0 +1,13 @@ ++tests: ++- healthStatus: ++ status: Progressing ++ message: "Progressing - reconciliation in progress" ++ inputPath: testdata/progressing.yaml ++- healthStatus: ++ status: Degraded ++ message: "GitOperationFailed - unable to clone 'https://github.com/openshift-fluxv2-poc/podinfo': authentication required" ++ inputPath: testdata/degraded.yaml ++- healthStatus: ++ status: Healthy ++ message: "GitOperationSucceed - Fetched revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794" ++ inputPath: testdata/healthy.yaml diff --git a/patches-argo-cd-v2.10/09-auto-create-flux-resources.patch b/patches-argo-cd-v2.10/09-auto-create-flux-resources.patch new file mode 100644 index 0000000..87cb2c1 --- /dev/null +++ b/patches-argo-cd-v2.10/09-auto-create-flux-resources.patch @@ -0,0 +1,505 @@ +auto create flux resources + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + controller/state_fsa.go | 154 +++++++++++++++++++++++++++------- + controller/sync_fsa.go | 193 +++++++++++++++++++++++++++++++++++++++++++ + controller/sync_fsa_test.go | 47 ++++++++++ + 3 files changed, 362 insertions(+), 32 deletions(-) + create mode 100644 controller/sync_fsa.go + create mode 100644 controller/sync_fsa_test.go + +diff --git a/controller/state_fsa.go b/controller/state_fsa.go +index 0892309d2..ae5187507 100644 +--- a/controller/state_fsa.go ++++ b/controller/state_fsa.go +@@ -6,6 +6,7 @@ import ( + "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/schema" ++ "strings" + ) + + func isFluxSubsystemEnabled(app *v1alpha1.Application) bool { +@@ -24,38 +25,80 @@ func isFluxSubsystemEnabled(app *v1alpha1.Application) bool { + return true + } + ++func IsAutoCreateFluxResourcesEnabled(app *v1alpha1.Application) bool { ++ if app == nil { ++ return false ++ } ++ if app.Spec.SyncPolicy == nil { ++ return false ++ } ++ if app.Spec.SyncPolicy.SyncOptions == nil { ++ return false ++ } ++ if app.Spec.SyncPolicy.SyncOptions.HasOption("AutoCreateFluxResources=true") == false { ++ return false ++ } ++ return true ++} ++ + func (m *appStateManager) getFluxHelmTargetObjects(app *v1alpha1.Application, conditions []v1alpha1.ApplicationCondition, now v1.Time) ([]*unstructured.Unstructured, []v1alpha1.ApplicationCondition, bool) { + var ( + targetObjs []*unstructured.Unstructured + failedToLoadObjs bool + ) + ++ // always use auto-generated resources when the flag is checked ++ if IsAutoCreateFluxResourcesEnabled(app) { ++ hlObj, repoObj, genYamlErr := generateFluxHelmAndSource(app) ++ if genYamlErr != nil { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: genYamlErr.Error(), LastTransitionTime: &now}) ++ failedToLoadObjs = true ++ return targetObjs, conditions, failedToLoadObjs ++ } ++ ++ targetObjs = []*unstructured.Unstructured{hlObj, repoObj} ++ failedToLoadObjs = false ++ return targetObjs, conditions, failedToLoadObjs ++ } ++ ++ // otherwise, try to sync from cluster + cluster, err := m.db.GetCluster(context.TODO(), app.Spec.Destination.Server) + if err != nil { + targetObjs = make([]*unstructured.Unstructured, 0) + conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) + failedToLoadObjs = true ++ return targetObjs, conditions, failedToLoadObjs + } + config := cluster.RESTConfig() +- +- var hl *unstructured.Unstructured ++ var ( ++ hl *unstructured.Unstructured ++ hlNotFound bool ++ ) + hl, err = m.kubectl.GetResource(context.TODO(), config, schema.GroupVersionKind{ + Group: "helm.toolkit.fluxcd.io", + Version: "v2beta2", + Kind: "HelmRelease", + }, app.Name, app.Spec.Destination.Namespace) ++ + if err != nil { +- targetObjs = make([]*unstructured.Unstructured, 0) +- conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) +- failedToLoadObjs = true ++ // err might be a "not found" one ++ if strings.Contains(err.Error(), "not found") { ++ hlNotFound = true ++ } else { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) ++ failedToLoadObjs = true ++ return targetObjs, conditions, failedToLoadObjs ++ } + } + +- if hl == nil { +- targetObjs = make([]*unstructured.Unstructured, 0) +- conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) +- failedToLoadObjs = true +- } else { +- var source *unstructured.Unstructured ++ var ( ++ source *unstructured.Unstructured ++ sourceNotFound bool ++ ) ++ // if found HL object ++ if hlNotFound == false { + if sourceKind, found, err := unstructured.NestedString(hl.Object, "spec", "chart", "spec", "sourceRef", "kind"); found && err == nil { + if sourceName, found, err := unstructured.NestedString(hl.Object, "spec", "chart", "spec", "sourceRef", "name"); found && err == nil { + if sourceNS, found, err := unstructured.NestedString(hl.Object, "spec", "chart", "spec", "sourceRef", "namespace"); err == nil { +@@ -67,17 +110,27 @@ func (m *appStateManager) getFluxHelmTargetObjects(app *v1alpha1.Application, co + Version: "v1beta1", + Kind: sourceKind, + }, sourceName, sourceNS) ++ if err != nil { ++ if strings.Contains(err.Error(), "not found") { ++ sourceNotFound = true ++ } else { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) ++ failedToLoadObjs = true ++ return targetObjs, conditions, failedToLoadObjs ++ } ++ } + } + } + } +- if source != nil { ++ ++ if sourceNotFound == false { + targetObjs = []*unstructured.Unstructured{hl, source} +- } else { +- targetObjs = make([]*unstructured.Unstructured, 0) +- conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) +- failedToLoadObjs = true + } ++ + } ++ ++ failedToLoadObjs = false + return targetObjs, conditions, failedToLoadObjs + } + +@@ -87,32 +140,59 @@ func (m *appStateManager) getFluxKustomizeTargetObjects(app *v1alpha1.Applicatio + failedToLoadObjs bool + ) + ++ // always use auto-generated resources when the flag is checked ++ if IsAutoCreateFluxResourcesEnabled(app) { ++ ksObj, repoObj, genYamlErr := generateFluxKustomizationAndSource(app) ++ if genYamlErr != nil { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: genYamlErr.Error(), LastTransitionTime: &now}) ++ failedToLoadObjs = true ++ return targetObjs, conditions, failedToLoadObjs ++ } ++ ++ targetObjs = []*unstructured.Unstructured{ksObj, repoObj} ++ failedToLoadObjs = false ++ return targetObjs, conditions, failedToLoadObjs ++ } ++ ++ // otherwise, try to sync from cluster + cluster, err := m.db.GetCluster(context.TODO(), app.Spec.Destination.Server) + if err != nil { + targetObjs = make([]*unstructured.Unstructured, 0) + conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) + failedToLoadObjs = true ++ return targetObjs, conditions, failedToLoadObjs + } +- config := cluster.RESTConfig() + +- var ks *unstructured.Unstructured ++ config := cluster.RESTConfig() ++ var ( ++ ks *unstructured.Unstructured ++ ksNotFound bool ++ ) + ks, err = m.kubectl.GetResource(context.TODO(), config, schema.GroupVersionKind{ + Group: "kustomize.toolkit.fluxcd.io", + Version: "v1beta2", + Kind: "Kustomization", + }, app.Name, app.Spec.Destination.Namespace) ++ + if err != nil { +- targetObjs = make([]*unstructured.Unstructured, 0) +- conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) +- failedToLoadObjs = true ++ // err might be a "not found" one ++ if strings.Contains(err.Error(), "not found") { ++ ksNotFound = true ++ } else { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) ++ failedToLoadObjs = true ++ return targetObjs, conditions, failedToLoadObjs ++ } + } + +- if ks == nil { +- targetObjs = make([]*unstructured.Unstructured, 0) +- conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) +- failedToLoadObjs = true +- } else { +- var source *unstructured.Unstructured ++ var ( ++ source *unstructured.Unstructured ++ sourceNotFound bool ++ ) ++ // if found KS object ++ if ksNotFound == false { + if sourceKind, found, err := unstructured.NestedString(ks.Object, "spec", "sourceRef", "kind"); found && err == nil { + if sourceName, found, err := unstructured.NestedString(ks.Object, "spec", "sourceRef", "name"); found && err == nil { + if sourceNS, found, err := unstructured.NestedString(ks.Object, "spec", "sourceRef", "namespace"); err == nil { +@@ -124,16 +204,26 @@ func (m *appStateManager) getFluxKustomizeTargetObjects(app *v1alpha1.Applicatio + Version: "v1beta1", + Kind: sourceKind, + }, sourceName, sourceNS) ++ if err != nil { ++ if strings.Contains(err.Error(), "not found") { ++ sourceNotFound = true ++ } else { ++ targetObjs = make([]*unstructured.Unstructured, 0) ++ conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) ++ failedToLoadObjs = true ++ return targetObjs, conditions, failedToLoadObjs ++ } ++ } + } + } + } +- if source != nil { ++ ++ if sourceNotFound == false { + targetObjs = []*unstructured.Unstructured{ks, source} +- } else { +- targetObjs = make([]*unstructured.Unstructured, 0) +- conditions = append(conditions, v1alpha1.ApplicationCondition{Type: v1alpha1.ApplicationConditionComparisonError, Message: err.Error(), LastTransitionTime: &now}) +- failedToLoadObjs = true + } ++ + } ++ ++ failedToLoadObjs = false + return targetObjs, conditions, failedToLoadObjs + } +diff --git a/controller/sync_fsa.go b/controller/sync_fsa.go +new file mode 100644 +index 000000000..40188e00e +--- /dev/null ++++ b/controller/sync_fsa.go +@@ -0,0 +1,193 @@ ++package controller ++ ++import ( ++ "strings" ++ ++ appv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" ++ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ++ "sigs.k8s.io/yaml" ++) ++ ++func mergeHelmParamsAndValues(app appv1.Application) (map[string]interface{}, error) { ++ values := map[string]interface{}{} ++ if app.Spec.Source.Helm == nil { ++ return values, nil ++ } ++ ++ err := yaml.Unmarshal([]byte(app.Spec.Source.Helm.Values), &values) ++ if err != nil { ++ return nil, err ++ } ++ ++ for _, p := range app.Spec.Source.Helm.Parameters { ++ path := strings.Split(p.Name, ".") ++ err := unstructured.SetNestedField(values, p.Value, path...) ++ if err != nil { ++ return nil, err ++ } ++ } ++ return values, nil ++} ++ ++func generateFluxHelmAndSource(app *appv1.Application) (*unstructured.Unstructured, *unstructured.Unstructured, error) { ++ mergedValues, err := mergeHelmParamsAndValues(*app) ++ if err != nil { ++ return nil, nil, err ++ } ++ repo := map[string]interface{}{} ++ repoTemplate := []byte(` ++apiVersion: source.toolkit.fluxcd.io/v1beta1 ++kind: HelmRepository ++metadata: ++ name: undefined ++ namespace: undefined ++spec: ++ interval: 10m ++ url: undefined ++`) ++ if err := yaml.Unmarshal(repoTemplate, &repo); err != nil { ++ return nil, nil, err ++ } ++ repoObj := &unstructured.Unstructured{Object: repo} ++ repoObj.SetName(app.GetName()) ++ repoObj.SetNamespace(app.Spec.Destination.Namespace) ++ if err := unstructured.SetNestedField(repo, app.Spec.Source.RepoURL, ++ "spec", "url"); err != nil { ++ return nil, nil, err ++ } ++ ++ release := map[string]interface{}{} ++ releaseTemplate := []byte(` ++apiVersion: helm.toolkit.fluxcd.io/v2beta2 ++kind: HelmRelease ++metadata: ++ name: undefined ++ namespace: undefined ++spec: ++ chart: ++ spec: ++ chart: undefined ++ version: undefined ++ sourceRef: ++ kind: HelmRepository ++ name: undefined ++ namespace: undefined ++ interval: 10m ++ releaseName: undefined ++ targetNamespace: undefined ++ install: ++ replace: true ++ crds: CreateReplace ++ upgrade: ++ crds: CreateReplace ++ values: {} ++`) ++ if err := yaml.Unmarshal(releaseTemplate, &release); err != nil { ++ return nil, nil, err ++ } ++ releaseObj := &unstructured.Unstructured{Object: release} ++ releaseObj.SetName(app.GetName()) ++ releaseObj.SetNamespace(app.Spec.Destination.Namespace) ++ if err := unstructured.SetNestedField(release, app.Spec.Source.Chart, ++ "spec", "chart", "spec", "chart"); err != nil { ++ return nil, nil, err ++ } ++ if err := unstructured.SetNestedField(release, app.Spec.Source.TargetRevision, ++ "spec", "chart", "spec", "version"); err != nil { ++ return nil, nil, err ++ } ++ if err := unstructured.SetNestedField(release, repoObj.GetName(), ++ "spec", "chart", "spec", "sourceRef", "name"); err != nil { ++ return nil, nil, err ++ } ++ if err := unstructured.SetNestedField(release, app.Spec.Destination.Namespace, ++ "spec", "chart", "spec", "sourceRef", "namespace"); err != nil { ++ return nil, nil, err ++ } ++ if err := unstructured.SetNestedField(release, app.Spec.Destination.Namespace, ++ "spec", "chart", "spec", "sourceRef", "namespace"); err != nil { ++ return nil, nil, err ++ } ++ if err := unstructured.SetNestedField(release, app.GetName(), ++ "spec", "releaseName"); err != nil { ++ return nil, nil, err ++ } ++ if err := unstructured.SetNestedField(release, app.Spec.Destination.Namespace, ++ "spec", "targetNamespace"); err != nil { ++ return nil, nil, err ++ } ++ if err := unstructured.SetNestedMap(release, mergedValues, ++ "spec", "values"); err != nil { ++ return nil, nil, err ++ } ++ ++ return releaseObj, repoObj, nil ++} ++ ++func generateFluxKustomizationAndSource(app *appv1.Application) (*unstructured.Unstructured, *unstructured.Unstructured, error) { ++ repo := map[string]interface{}{} ++ repoTemplate := []byte(` ++apiVersion: source.toolkit.fluxcd.io/v1beta1 ++kind: GitRepository ++metadata: ++ name: undefined ++ namespace: undefined ++spec: ++ interval: 10m ++ url: undefined ++ ref: ++ branch: undefined ++`) ++ if err := yaml.Unmarshal(repoTemplate, &repo); err != nil { ++ return nil, nil, err ++ } ++ repoObj := &unstructured.Unstructured{Object: repo} ++ repoObj.SetName(app.GetName()) ++ repoObj.SetNamespace(app.Spec.Destination.Namespace) ++ if err := unstructured.SetNestedField(repo, app.Spec.Source.RepoURL, ++ "spec", "url"); err != nil { ++ return nil, nil, err ++ } ++ if err := unstructured.SetNestedField(repo, app.Spec.Source.TargetRevision, ++ "spec", "ref", "branch"); err != nil { ++ return nil, nil, err ++ } ++ ++ ks := map[string]interface{}{} ++ ksTemplate := []byte(` ++apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 ++kind: Kustomization ++metadata: ++ name: undefined ++ namespace: undefined ++spec: ++ interval: 10m ++ path: undefined ++ prune: true ++ wait: true ++ sourceRef: ++ kind: GitRepository ++ name: undefined ++ namespace: undefined ++`) ++ if err := yaml.Unmarshal(ksTemplate, &ks); err != nil { ++ return nil, nil, err ++ } ++ ksObj := &unstructured.Unstructured{Object: ks} ++ ksObj.SetName(app.GetName()) ++ ksObj.SetNamespace(app.Spec.Destination.Namespace) ++ if err := unstructured.SetNestedField(ks, app.Spec.Source.Path, ++ "spec", "path"); err != nil { ++ return nil, nil, err ++ } ++ if err := unstructured.SetNestedField(ks, repoObj.GetName(), ++ "spec", "sourceRef", "name"); err != nil { ++ return nil, nil, err ++ } ++ if err := unstructured.SetNestedField(ks, repoObj.GetNamespace(), ++ "spec", "sourceRef", "namespace"); err != nil { ++ return nil, nil, err ++ } ++ ++ return ksObj, repoObj, nil ++} +diff --git a/controller/sync_fsa_test.go b/controller/sync_fsa_test.go +new file mode 100644 +index 000000000..9ed03c712 +--- /dev/null ++++ b/controller/sync_fsa_test.go +@@ -0,0 +1,47 @@ ++package controller ++ ++import ( ++ "testing" ++ ++ appv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" ++ "github.com/stretchr/testify/assert" ++) ++ ++func TestMergeValues(t *testing.T) { ++ app := appv1.Application{ ++ Spec: appv1.ApplicationSpec{ ++ Source: appv1.ApplicationSource{ ++ Helm: &appv1.ApplicationSourceHelm{ ++ Parameters: []appv1.HelmParameter{ ++ { ++ Name: "ui.message", ++ Value: "aaa", ++ }, ++ }, ++ Values: ` ++ui: ++ message: abcdef ++`, ++ }, ++ }, ++ }, ++ } ++ actual, err := mergeHelmParamsAndValues(app) ++ assert.NoError(t, err, "should not have error") ++ expected := map[string]interface{}{ ++ "ui": map[string]interface{}{ ++ "message": "aaa", ++ }, ++ } ++ assert.Equal(t, expected, actual, "should equal") ++} ++ ++/* ++func TestGenerateFluxHelmAndSource(t *testing.T) { ++ generateFluxHelmAndSource(app) ++} ++ ++func TestGenerateFluxKustomizationAndSource(t *testing.T) { ++ generateFluxKustomizationAndSource(app) ++} ++*/ diff --git a/patches-argo-cd-v2.10/10-add-flux-options-to-the-ui.patch b/patches-argo-cd-v2.10/10-add-flux-options-to-the-ui.patch new file mode 100644 index 0000000..9f9284b --- /dev/null +++ b/patches-argo-cd-v2.10/10-add-flux-options-to-the-ui.patch @@ -0,0 +1,22 @@ +add flux options to the ui + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + .../application-sync-options.tsx | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/ui/src/app/applications/components/application-sync-options/application-sync-options.tsx b/ui/src/app/applications/components/application-sync-options/application-sync-options.tsx +index 7cc24173c..81f7a13ef 100644 +--- a/ui/src/app/applications/components/application-sync-options/application-sync-options.tsx ++++ b/ui/src/app/applications/components/application-sync-options/application-sync-options.tsx +@@ -94,6 +94,8 @@ const syncOptions: Array<(props: ApplicationSyncOptionProps) => React.ReactNode> + props => booleanOption('ApplyOutOfSyncOnly', 'Apply Out of Sync Only', false, props, false), + props => booleanOption('RespectIgnoreDifferences', 'Respect Ignore Differences', false, props, false), + props => booleanOption('ServerSideApply', 'Server-Side Apply', false, props, false), ++ props => booleanOption('FluxSubsystem', 'Use Flux Subsystem', false, props, false), ++ props => booleanOption('AutoCreateFluxResources', 'Auto-Create Flux Resources', false, props, false), + props => selectOption('PrunePropagationPolicy', 'Prune Propagation Policy', 'foreground', ['foreground', 'background', 'orphan'], props) + ]; + diff --git a/patches-argo-cd-v2.10/11-support-helm-oci-and.patch b/patches-argo-cd-v2.10/11-support-helm-oci-and.patch new file mode 100644 index 0000000..63f1b7e --- /dev/null +++ b/patches-argo-cd-v2.10/11-support-helm-oci-and.patch @@ -0,0 +1,172 @@ +support helm oci and ocirepository + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + controller/state_fsa.go | 7 ++-- + controller/sync_fsa.go | 89 ++++++++++++++++++++++++++++++++++++++++++++++- + 2 files changed, 91 insertions(+), 5 deletions(-) + +diff --git a/controller/state_fsa.go b/controller/state_fsa.go +index ae5187507..07087f033 100644 +--- a/controller/state_fsa.go ++++ b/controller/state_fsa.go +@@ -2,11 +2,12 @@ package controller + + import ( + "context" ++ "strings" ++ + "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" + "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" + "k8s.io/apimachinery/pkg/runtime/schema" +- "strings" + ) + + func isFluxSubsystemEnabled(app *v1alpha1.Application) bool { +@@ -107,7 +108,7 @@ func (m *appStateManager) getFluxHelmTargetObjects(app *v1alpha1.Application, co + } + source, err = m.kubectl.GetResource(context.Background(), config, schema.GroupVersionKind{ + Group: "source.toolkit.fluxcd.io", +- Version: "v1beta1", ++ Version: "v1beta2", + Kind: sourceKind, + }, sourceName, sourceNS) + if err != nil { +@@ -201,7 +202,7 @@ func (m *appStateManager) getFluxKustomizeTargetObjects(app *v1alpha1.Applicatio + } + source, err = m.kubectl.GetResource(context.Background(), config, schema.GroupVersionKind{ + Group: "source.toolkit.fluxcd.io", +- Version: "v1beta1", ++ Version: "v1beta2", + Kind: sourceKind, + }, sourceName, sourceNS) + if err != nil { +diff --git a/controller/sync_fsa.go b/controller/sync_fsa.go +index 40188e00e..4689b2f98 100644 +--- a/controller/sync_fsa.go ++++ b/controller/sync_fsa.go +@@ -36,13 +36,14 @@ func generateFluxHelmAndSource(app *appv1.Application) (*unstructured.Unstructur + } + repo := map[string]interface{}{} + repoTemplate := []byte(` +-apiVersion: source.toolkit.fluxcd.io/v1beta1 ++apiVersion: source.toolkit.fluxcd.io/v1beta2 + kind: HelmRepository + metadata: + name: undefined + namespace: undefined + spec: + interval: 10m ++ type: default + url: undefined + `) + if err := yaml.Unmarshal(repoTemplate, &repo); err != nil { +@@ -56,6 +57,14 @@ spec: + return nil, nil, err + } + ++ // Support Helm OCI ++ if strings.HasPrefix(app.Spec.Source.RepoURL, "oci://") { ++ if err := unstructured.SetNestedField(repo, "oci", ++ "spec", "type"); err != nil { ++ return nil, nil, err ++ } ++ } ++ + release := map[string]interface{}{} + releaseTemplate := []byte(` + apiVersion: helm.toolkit.fluxcd.io/v2beta2 +@@ -125,9 +134,17 @@ spec: + } + + func generateFluxKustomizationAndSource(app *appv1.Application) (*unstructured.Unstructured, *unstructured.Unstructured, error) { ++ if strings.HasPrefix(app.Spec.Source.RepoURL, "oci://") { ++ return generateFluxKustomizationAndOCISource(app) ++ } else { ++ return generateFluxKustomizationAndGitSource(app) ++ } ++} ++ ++func generateFluxKustomizationAndGitSource(app *appv1.Application) (*unstructured.Unstructured, *unstructured.Unstructured, error) { + repo := map[string]interface{}{} + repoTemplate := []byte(` +-apiVersion: source.toolkit.fluxcd.io/v1beta1 ++apiVersion: source.toolkit.fluxcd.io/v1beta2 + kind: GitRepository + metadata: + name: undefined +@@ -191,3 +208,71 @@ spec: + + return ksObj, repoObj, nil + } ++ ++func generateFluxKustomizationAndOCISource(app *appv1.Application) (*unstructured.Unstructured, *unstructured.Unstructured, error) { ++ repo := map[string]interface{}{} ++ repoTemplate := []byte(` ++apiVersion: source.toolkit.fluxcd.io/v1beta2 ++kind: OCIRepository ++metadata: ++ name: undefined ++ namespace: undefined ++spec: ++ interval: 10m ++ url: undefined ++ ref: ++ tag: undefined ++`) ++ if err := yaml.Unmarshal(repoTemplate, &repo); err != nil { ++ return nil, nil, err ++ } ++ repoObj := &unstructured.Unstructured{Object: repo} ++ repoObj.SetName(app.GetName()) ++ repoObj.SetNamespace(app.Spec.Destination.Namespace) ++ if err := unstructured.SetNestedField(repo, app.Spec.Source.RepoURL, ++ "spec", "url"); err != nil { ++ return nil, nil, err ++ } ++ if err := unstructured.SetNestedField(repo, app.Spec.Source.TargetRevision, ++ "spec", "ref", "tag"); err != nil { ++ return nil, nil, err ++ } ++ ++ ks := map[string]interface{}{} ++ ksTemplate := []byte(` ++apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 ++kind: Kustomization ++metadata: ++ name: undefined ++ namespace: undefined ++spec: ++ interval: 10m ++ path: undefined ++ prune: true ++ wait: true ++ sourceRef: ++ kind: OCIRepository ++ name: undefined ++ namespace: undefined ++`) ++ if err := yaml.Unmarshal(ksTemplate, &ks); err != nil { ++ return nil, nil, err ++ } ++ ksObj := &unstructured.Unstructured{Object: ks} ++ ksObj.SetName(app.GetName()) ++ ksObj.SetNamespace(app.Spec.Destination.Namespace) ++ if err := unstructured.SetNestedField(ks, app.Spec.Source.Path, ++ "spec", "path"); err != nil { ++ return nil, nil, err ++ } ++ if err := unstructured.SetNestedField(ks, repoObj.GetName(), ++ "spec", "sourceRef", "name"); err != nil { ++ return nil, nil, err ++ } ++ if err := unstructured.SetNestedField(ks, repoObj.GetNamespace(), ++ "spec", "sourceRef", "namespace"); err != nil { ++ return nil, nil, err ++ } ++ ++ return ksObj, repoObj, nil ++} diff --git a/patches-argo-cd-v2.10/12-add-open-in-weave-gitops.patch b/patches-argo-cd-v2.10/12-add-open-in-weave-gitops.patch new file mode 100644 index 0000000..214dfb5 --- /dev/null +++ b/patches-argo-cd-v2.10/12-add-open-in-weave-gitops.patch @@ -0,0 +1,72 @@ +add open in weave gitops + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + ui/src/app/applications/components/utils.tsx | 45 ++++++++++++++++++++++++++ + 1 file changed, 45 insertions(+) + +diff --git a/ui/src/app/applications/components/utils.tsx b/ui/src/app/applications/components/utils.tsx +index 4c0135927..1e4a60ef5 100644 +--- a/ui/src/app/applications/components/utils.tsx ++++ b/ui/src/app/applications/components/utils.tsx +@@ -424,6 +424,28 @@ function getResourceActionsMenuItems(resource: ResourceTreeNode, metadata: model + .catch(() => [] as MenuItem[]); + } + ++function getWeaveGitOpsKindPath(resourceKind: string): string { ++ switch(resourceKind) { ++ case "GitRepository": ++ return "git_repo" ++ case "Bucket": ++ return "bucket" ++ case "OCIRepository": ++ return "oci" ++ case "HelmChart": ++ return "helm_chart" ++ case "Kustomization": ++ return "kustomization" ++ case "HelmRelease": ++ return "helm_release" ++ case "Terraform": ++ return "terraform_object" ++ } ++ ++ // not match return the same string ++ return "not_implemented" ++} ++ + function getActionItems( + resource: ResourceTreeNode, + application: appModels.Application, +@@ -467,6 +489,29 @@ function getActionItems( + }); + } + ++ // CK: Open in Weave GitOps ++ if (resource.kind === 'GitRepository' || ++ resource.kind === 'Bucket' || ++ resource.kind === 'OCIRepository' || ++ resource.kind === 'Kustomization' || ++ resource.kind === 'HelmRelease' || ++ resource.kind === 'Terraform') { ++ // CK: parameterize 1. the base url, 2. the clusterName, 3. kind, 4. name and namespace ++ let baseUrl = "http://localhost:9001" ++ let clusterName = "Default" ++ if(application.metadata.annotations !== undefined) { ++ baseUrl = application.metadata.annotations["weave.gitops.flamingo/base-url"] ++ clusterName = application.metadata.annotations["weave.gitops.flamingo/cluster-name"] ++ } ++ let kind = getWeaveGitOpsKindPath(resource.kind) ++ let url = `${baseUrl}/${kind}/details?clusterName=${clusterName}&name=${resource.name}&namespace=${resource.namespace}` ++ items.unshift({ ++ title: 'Open in Weave GitOps ...', ++ iconClassName: 'fa fa-info-circle', ++ action: () => window.open(url, '_blank') ++ }); ++ } ++ + if (isQuickStart) { + return from([items]); + } diff --git a/patches-argo-cd-v2.10/13-upgrade-to-flux-v2.0.0-rc.1.patch b/patches-argo-cd-v2.10/13-upgrade-to-flux-v2.0.0-rc.1.patch new file mode 100644 index 0000000..c1ed76b --- /dev/null +++ b/patches-argo-cd-v2.10/13-upgrade-to-flux-v2.0.0-rc.1.patch @@ -0,0 +1,140 @@ +upgrade to flux v2.0.0-rc.1 + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + controller/state_fsa.go | 69 +++++++++++++++++++++++++++++++++-------------- + controller/sync_fsa.go | 4 +-- + 2 files changed, 51 insertions(+), 22 deletions(-) + +diff --git a/controller/state_fsa.go b/controller/state_fsa.go +index 07087f033..9e1c36e2f 100644 +--- a/controller/state_fsa.go ++++ b/controller/state_fsa.go +@@ -42,6 +42,51 @@ func IsAutoCreateFluxResourcesEnabled(app *v1alpha1.Application) bool { + return true + } + ++type fluxKind string ++ ++const ( ++ HelmRelease fluxKind = "HelmRelease" ++ Kustomization fluxKind = "Kustomization" ++ ++ HelmRepository fluxKind = "HelmRepository" ++ GitRepository fluxKind = "GitRepository" ++ Bucket fluxKind = "Bucket" ++ OCIRepository fluxKind = "OCIRepository" ++) ++ ++var supportedKinds = map[fluxKind]schema.GroupVersionKind{ ++ Kustomization: { ++ Group: "kustomize.toolkit.fluxcd.io", ++ Version: "v1", ++ Kind: "Kustomization", ++ }, ++ HelmRelease: { ++ Group: "helm.toolkit.fluxcd.io", ++ Version: "v2beta2", ++ Kind: "HelmRelease", ++ }, ++ HelmRepository: { ++ Group: "source.toolkit.fluxcd.io", ++ Version: "v1beta2", ++ Kind: "HelmRepository", ++ }, ++ GitRepository: { ++ Group: "source.toolkit.fluxcd.io", ++ Version: "v1", ++ Kind: "GitRepository", ++ }, ++ Bucket: { ++ Group: "source.toolkit.fluxcd.io", ++ Version: "v1beta2", ++ Kind: "Bucket", ++ }, ++ OCIRepository: { ++ Group: "source.toolkit.fluxcd.io", ++ Version: "v1beta2", ++ Kind: "OCIRepository", ++ }, ++} ++ + func (m *appStateManager) getFluxHelmTargetObjects(app *v1alpha1.Application, conditions []v1alpha1.ApplicationCondition, now v1.Time) ([]*unstructured.Unstructured, []v1alpha1.ApplicationCondition, bool) { + var ( + targetObjs []*unstructured.Unstructured +@@ -76,11 +121,7 @@ func (m *appStateManager) getFluxHelmTargetObjects(app *v1alpha1.Application, co + hl *unstructured.Unstructured + hlNotFound bool + ) +- hl, err = m.kubectl.GetResource(context.TODO(), config, schema.GroupVersionKind{ +- Group: "helm.toolkit.fluxcd.io", +- Version: "v2beta2", +- Kind: "HelmRelease", +- }, app.Name, app.Spec.Destination.Namespace) ++ hl, err = m.kubectl.GetResource(context.TODO(), config, supportedKinds[HelmRelease], app.Name, app.Spec.Destination.Namespace) + + if err != nil { + // err might be a "not found" one +@@ -106,11 +147,7 @@ func (m *appStateManager) getFluxHelmTargetObjects(app *v1alpha1.Application, co + if !found { + sourceNS = hl.GetNamespace() + } +- source, err = m.kubectl.GetResource(context.Background(), config, schema.GroupVersionKind{ +- Group: "source.toolkit.fluxcd.io", +- Version: "v1beta2", +- Kind: sourceKind, +- }, sourceName, sourceNS) ++ source, err = m.kubectl.GetResource(context.Background(), config, supportedKinds[fluxKind(sourceKind)], sourceName, sourceNS) + if err != nil { + if strings.Contains(err.Error(), "not found") { + sourceNotFound = true +@@ -170,11 +207,7 @@ func (m *appStateManager) getFluxKustomizeTargetObjects(app *v1alpha1.Applicatio + ks *unstructured.Unstructured + ksNotFound bool + ) +- ks, err = m.kubectl.GetResource(context.TODO(), config, schema.GroupVersionKind{ +- Group: "kustomize.toolkit.fluxcd.io", +- Version: "v1beta2", +- Kind: "Kustomization", +- }, app.Name, app.Spec.Destination.Namespace) ++ ks, err = m.kubectl.GetResource(context.TODO(), config, supportedKinds[Kustomization], app.Name, app.Spec.Destination.Namespace) + + if err != nil { + // err might be a "not found" one +@@ -200,11 +233,7 @@ func (m *appStateManager) getFluxKustomizeTargetObjects(app *v1alpha1.Applicatio + if !found { + sourceNS = ks.GetNamespace() + } +- source, err = m.kubectl.GetResource(context.Background(), config, schema.GroupVersionKind{ +- Group: "source.toolkit.fluxcd.io", +- Version: "v1beta2", +- Kind: sourceKind, +- }, sourceName, sourceNS) ++ source, err = m.kubectl.GetResource(context.Background(), config, supportedKinds[fluxKind(sourceKind)], sourceName, sourceNS) + if err != nil { + if strings.Contains(err.Error(), "not found") { + sourceNotFound = true +diff --git a/controller/sync_fsa.go b/controller/sync_fsa.go +index 4689b2f98..d9e1da5c8 100644 +--- a/controller/sync_fsa.go ++++ b/controller/sync_fsa.go +@@ -172,7 +172,7 @@ spec: + + ks := map[string]interface{}{} + ksTemplate := []byte(` +-apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 ++apiVersion: kustomize.toolkit.fluxcd.io/v1 + kind: Kustomization + metadata: + name: undefined +@@ -240,7 +240,7 @@ spec: + + ks := map[string]interface{}{} + ksTemplate := []byte(` +-apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 ++apiVersion: kustomize.toolkit.fluxcd.io/v1 + kind: Kustomization + metadata: + name: undefined diff --git a/patches-argo-cd-v2.10/14-fix-branch-and-rev-info-of.patch b/patches-argo-cd-v2.10/14-fix-branch-and-rev-info-of.patch new file mode 100644 index 0000000..a48a3aa --- /dev/null +++ b/patches-argo-cd-v2.10/14-fix-branch-and-rev-info-of.patch @@ -0,0 +1,86 @@ +fix branch and rev info of flux v2 + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + controller/cache/info.go | 58 ++++++++++++++++++++++++++++++++++++---------- + 1 file changed, 45 insertions(+), 13 deletions(-) + +diff --git a/controller/cache/info.go b/controller/cache/info.go +index ffa4ae32f..25cb52e8c 100644 +--- a/controller/cache/info.go ++++ b/controller/cache/info.go +@@ -70,15 +70,31 @@ func populateNodeInfo(un *unstructured.Unstructured, res *ResourceInfo, customLa + // TODO add Flux here + case "source.toolkit.fluxcd.io": + if revision, found, err := unstructured.NestedString(un.Object, "status", "artifact", "revision"); found && err == nil { +- parts := strings.SplitN(revision, "/", 2) +- if len(parts) == 1 { +- if len(parts[0]) >= 8 { +- res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Revision", Value: parts[0][0:8]}) ++ if strings.Contains(revision, "/") { ++ parts := strings.SplitN(revision, "/", 2) ++ if len(parts) == 1 { ++ if len(parts[0]) >= 8 { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Revision", Value: parts[0][0:8]}) ++ } ++ } else if len(parts) == 2 { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Branch", Value: parts[0]}) ++ if len(parts[1]) >= 8 { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Revision", Value: parts[1][0:8]}) ++ } + } +- } else if len(parts) == 2 { +- res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Branch", Value: parts[0]}) +- if len(parts[1]) >= 8 { +- res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Revision", Value: parts[1][0:8]}) ++ } else if strings.Contains(revision, "@") { ++ parts := strings.SplitN(revision, "@", 2) ++ // v2.6@sha256:c7fd0cc69b924aa5f9a6928477311737e439ca1b9e444855b0377e8a8ec65bb5 ++ if len(parts) == 2 { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Tag", Value: parts[0]}) ++ // split at : so => sha256 and c7fd0cc69b924aa5f9a6928477311737e439ca1b9e444855b0377e8a8ec65bb5 ++ split := strings.SplitN(parts[1], ":", 2) ++ if len(split) == 2 { ++ // we discard the sha256 and only take the first 8 chars ++ if len(split[1]) >= 8 { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Revision", Value: split[1][0:8]}) ++ } ++ } + } + } + } +@@ -95,11 +111,27 @@ func populateNodeInfo(un *unstructured.Unstructured, res *ResourceInfo, customLa + switch gvk.Kind { + case "Kustomization", "Terraform": + if revision, found, err := unstructured.NestedString(un.Object, "status", "lastAppliedRevision"); found && err == nil { +- parts := strings.SplitN(revision, "/", 2) +- if len(parts) == 2 { +- res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Branch", Value: parts[0]}) +- if len(parts[1]) >= 8 { +- res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Revision", Value: parts[1][0:8]}) ++ if strings.Contains(revision, "/") { ++ parts := strings.SplitN(revision, "/", 2) ++ if len(parts) == 2 { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Branch", Value: parts[0]}) ++ if len(parts[1]) >= 8 { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Revision", Value: parts[1][0:8]}) ++ } ++ } ++ } else if strings.Contains(revision, "@") { ++ parts := strings.SplitN(revision, "@", 2) ++ // v2.6@sha256:c7fd0cc69b924aa5f9a6928477311737e439ca1b9e444855b0377e8a8ec65bb5 ++ if len(parts) == 2 { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Tag", Value: parts[0]}) ++ // split at : so => sha256 and c7fd0cc69b924aa5f9a6928477311737e439ca1b9e444855b0377e8a8ec65bb5 ++ split := strings.SplitN(parts[1], ":", 2) ++ if len(split) == 2 { ++ // we discard the sha256 and only take the first 8 chars ++ if len(split[1]) >= 8 { ++ res.Info = append(res.Info, v1alpha1.InfoItem{Name: "Revision", Value: split[1][0:8]}) ++ } ++ } + } + } + } diff --git a/patches-argo-cd-v2.10/15-change-logo-to-flamingo.patch b/patches-argo-cd-v2.10/15-change-logo-to-flamingo.patch new file mode 100644 index 0000000..e16ab83 --- /dev/null +++ b/patches-argo-cd-v2.10/15-change-logo-to-flamingo.patch @@ -0,0 +1,7565 @@ +change logo to flamingo + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + ui/src/app/login/components/login.scss | 2 + ui/src/app/login/components/login.tsx | 4 - + ui/src/app/sidebar/sidebar.scss | 2 + ui/src/app/sidebar/sidebar.tsx | 6 + + ui/src/assets/images/argo.png | Bin + ui/src/assets/images/argo_o.svg | 159 ++++++++++++++++++++++++++++---- + ui/src/assets/images/argologo.svg | 118 ++++++++++++++++++++++++ + ui/src/assets/images/flamingo.png | Bin + ui/src/assets/images/flamingologo.svg | 68 ++++++++++++++ + 9 files changed, 331 insertions(+), 28 deletions(-) + create mode 100644 ui/src/assets/images/flamingo.png + create mode 100644 ui/src/assets/images/flamingologo.svg + +diff --git a/ui/src/app/login/components/login.scss b/ui/src/app/login/components/login.scss +index ac93fc3a3..2a78bc0dd 100644 +--- a/ui/src/app/login/components/login.scss ++++ b/ui/src/app/login/components/login.scss +@@ -174,7 +174,7 @@ $logoNegativePath: 'assets/images/argo.png'; + & a { + color: $argo-color-gray-2; + img{ +- width: 36px; ++ width: 60px; + filter: invert(50%); + -webkit-filter: invert(50%); + } +diff --git a/ui/src/app/login/components/login.tsx b/ui/src/app/login/components/login.tsx +index b00ef04bc..050a74e90 100644 +--- a/ui/src/app/login/components/login.tsx ++++ b/ui/src/app/login/components/login.tsx +@@ -53,7 +53,7 @@ export class Login extends React.Component, State> { + return ( +
+
+-
Let's get stuff deployed!
++
Let's get stuff deployed with Flux and Argo!
+
+
+
+@@ -119,7 +119,7 @@ export class Login extends React.Component, State> { +
Login is disabled. Please contact your system administrator.
+ )} + +diff --git a/ui/src/app/sidebar/sidebar.scss b/ui/src/app/sidebar/sidebar.scss +index d41cbeed3..d29e50fb9 100644 +--- a/ui/src/app/sidebar/sidebar.scss ++++ b/ui/src/app/sidebar/sidebar.scss +@@ -44,7 +44,7 @@ $deselected-text: #818d94; + } + + &__text-logo { +- height: 2em; ++ height: 3em; + filter: invert(100%); + } + } +diff --git a/ui/src/app/sidebar/sidebar.tsx b/ui/src/app/sidebar/sidebar.tsx +index 1aeb77c91..6ce16ea67 100644 +--- a/ui/src/app/sidebar/sidebar.tsx ++++ b/ui/src/app/sidebar/sidebar.tsx +@@ -54,13 +54,13 @@ export const Sidebar = (props: SidebarProps) => { +
+ {!props.pref.hideSidebar && ( +
+- Argo ++ Flamingo +
+ {loading ? 'Loading...' : error?.state ? 'Unknown' : version?.Version || 'Unknown'} +
+
+ )} +- Argo{' '} ++ Flamingo{' '} +
+ + {(props.navItems || []).map(item => ( +@@ -94,4 +94,4 @@ export const Sidebar = (props: SidebarProps) => { +
+
+ ); +-}; ++}; +\ No newline at end of file +diff --git a/ui/src/assets/images/argo.png b/ui/src/assets/images/argo.png +index 8b21f69deee4fb0b22145e325b5487c974569887..f5f17dc5d61fdf551a85a31cbf31d7f0832da013 100644 +GIT binary patch +literal 88907 +zcmeEt_gfQM(=F;zR1^dSq#prAfq+Pd07rU90qIRz=nx?EA}YNJNN>_b1f)agQbO+? +z0@6Dedgt!M^SNn|EfRe*VE6(4>~% +zcC$>Enjy0R0Z{sx*Won8#L=RvPrh+*B%(Hu&=Db_`$~nO8mIEyDVo}$WtQtj2N4#~ +z7rNoArI&J7@bD56i>_<+6)Us4n=94qWwp4h2BP6}9n%`F;$%{euzsP`(R@i&x`O5= +z=h*oz_YQckP+8@2o$M6v>)^oS8a6zA_LoR)`T6j#$*4LikWL0 +z(iI$LSUVh@yI5zMKUs&(olL^!4lKmE5#->T%&lZ*q71$dt9~%C)nxLrRecd*8*`mh +zVi^M$;Z;P1@^&@f9hFCMC$1OqBkqH5Fi>cJk)iG;{<)YA)knq@Pg +zAMK`E$3Z$%Y0q3xWAmgSPh3@*7u>Lm*NA}8(V*EU781}oJwazHlq;xsa_Rkr()xMX +z87z^W$I}KXd>9{i)O9V|>y&UCk!-ne41w|e2AiC)KQsbNru +zfs2@T%_D>y3)1aH!Nqye(K!<{MtqG75AR*=8+jVM&83Of%e4hJk%NA^_H$fLG$xYAl@WtV1&;6HJM_WB-qiQqy +zg}-?8k~_&B7k}&@f6x^NZ0Hiq>C(}Jg*(CelaV>Po6yCbSC45=vaB(3&e8J)xb3Uw +zjR`g~nh4-Wql5v4=Mx5JS{%FX=E7icap^<38J>r>i5*632li7bNCG@O19gv=A3g2H +z4Rj9nvoQNc$ho*7NOJbQ*L;P%J%VWum~=#_Mthey5|Ov?@P3KdQxR|YX8CHkwWL?h +zEuYLUD_7hr`bL|lSN}}!@|P7f4tX8y$z&_lHniW}ZPhVCz$7IJtO>Lf`Ai3@Uu@J~_ +zYPOX?0viol-kM@wy?AwoL)qn}&l1KWlT;#tpIiDuIpIcYw0L-5N+`4q$emJ5kH^xF +z#_S&XG0@+EbVI`1de;I=)M5-5%Q(l&$^x|3o`AKS$2&Jg7Rzce6H07BO0*h5*FdQ5 +zo@SbCoSh=(<)@BLAea-3TS$%#kX-`d>=D231NR)y5X^hm8$F+nK>D6LyK~!!*oq~= +z?0}mnyT`5)V@4WX*7ey!>UFdNvJ^{7!xKBnKl}AQ6zebY53@nLXrb!trR +zV@xg)5z3#O)bRBhE#-QgGPT1$%~xigqIi|D`)ziQiB3{6H}{?T&z)bEGG46u>S9ER +z8aCx!#l5s_lX&7$3;Bzc+}K?1s|$gY=Cjhf8+q4YEEzCm!8hj9mC3S_y@e4}p%uH^ +zr+M!4!{J@63?koJ!*L9=*&eGnG0^EYXF^967+#wxs27R!UE)*;jCZJLt#a;arNJiX +zy8|PuwEUzg8YXYEmmVwW7nM&D1l`s~5S}_0qZ$`o?vX4Tfb>MLy2v0|*j7-+rK`-@ +zu2APZtr&s3p(aPndFR|wtTNQyodU#|4yKDtYa+<-`_ZrTqhC2vbA#+_VdN&mZSnyd +zxlOWg4SkLio1`!*9G;s^*5aj^q%9g4_YWBNZH;@|E1l`RRDNURuHv-B@YU?fJxfkZ +z*^m(Mq5JQ}&oTBcj|jbcrE8XH&M{%rtZpiYeYBD=qrIVS_}YA#3lxX{2>|Nj{UG>H +zI@S;om)(DA#yNT7h@2Hrx-jdol5fPrxR|iq?IKH<$VJ1~W#__2S0LjgsKGl3c+R>Jrzkl%hvHm4zgSIC!*Tqaa-Q +z_{^9FVohqey;9P~l}avAj^Md*A^1TK)7&671F+e`O`&b31>CE^U%+4R09E@%Q19OG +z%|e7}9fYN|*pRj*u>-DxWyCMs{LlUwT<|*ls?w?yqNxjY +z^~3gawO8)s?6;WPZiiRoY=L0Z3Xg)6es*x1PugY;+;${QXF(8b+G-1x(^LzGp_PLn +zfA*QZQdRmn=No3o3?j+C5l)~|(RXoDyrQiW(4wCjR+xj06)k_TRT3+G_13$}t@qQF +ze}kP0XJ!Pdc5VDNfMrkJu4vltuN=bUs&{hkNCJ)t`P#9kE=ohVt5iz +zW{-k@vbfJs8O-8K^(UjJU +z$-!5&Z_Gh*1%V@%Osvu%teTEv?3d^(Fq$Ofho0Zl*D=#wlT+aTqMw)d4al|>_)5`v +zt&xZEE%;s@>RSd^j}o!UCyV3rrLibh0 +zBU2N2$bJrMhDy>jO-?GB6ow0z1YEd?ruDfuKVm-*ZTgwtAG`ClHcaJEQa=*10K|g*8Zfcg#(W-$n)-VO&H2gjEQo@b6_s9oK`y>S{Ojja7XIgn76(^G2*QVXI(p +z{46CN-jQ=Fpn{k9)ce&aYWUi)uPD5b*4=%3-1{FSp8lYU4Lh4CGt0lek#`<+gLVhkxV +zTwp;WRkPTvMLT8vWo0ky>#JZ}>w30yo>AZ5soe`4B_7tSbfFIwu%>4&8xtsGy?RPW +z?cBVouU~3+yiQN=U4TC;oH|}}PwGI5nxhOsNHAN^Z1UQzlrnr;JJ21+sH?7~1PU1% +ztaoX=hvG+x*fmbpQqOYFg#J>1y6voIb7*#b=T5FlH6r`4)=#Ru-*6MGTkX-;z#_?pV#@^VEC> +zeR>l}iKHT5#^UdNo?Wx-$8&vs=_SjjT4il>+60P8+ntU{H2Y)l_Uy_9Pr*6Q;efRs +z5pNj(mi&0M@}qRS*Gf8{u{k2$IVRdcjzY;j_s +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 +zEdLD4NuA7yZ&BYG4Oqbkm&8HzPorbaFQ +zfs75|j9_;^P!OkiHdEudDUumxrY>la>|AUjCd8A8t2?N%pKJ)ket|UlQ^(5Kl5Owj +z95sNeIt_pMPzV^G^~nILS9Z?b{xWno*J`5tU@(_zVqBwHW6e);@eYL;<4I)i!~cC#2#QknK(A5 +zD)(Ved=CV8CThop6^95=6Hd7)qc9a-u7Q=Kk?m}ol?Md$WMIu_d)h^q1x6lM|BA5S +zrZ^9^$9Q9cM3ZbN@k|YS +zeMFf?MHv~5gD7w}w)b|*Rm%$-SsTU-(d=3yp%{ZTKSg`hM`5z)zNgqH8k`3y!MZ#s +zQA&{Ce|`%fSoQ?b_6XN6D82_v|f`cswWSF#R +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 +zy#*^QIrS +z3w_`}oZ8}Z#y^r9*Ml_F4Re~oHoMEF7tjqAKkk1%{A)3N!Zyud6d#Crn +zr5Tn)_W40%s}FL#H!VZ>79Ze!Bcu~v+O^2bGqFDL=;_7>)eHxt_EKaXV!*AaO +zxBT|)Cb###U+>-heXfyV&&B1RY4?VsQNkBB$n^Jid>&oB!PtE8|7u0N`el%l&r^Zc +zvY5449ws9du8L_J424arI5vz^B-Jwezo8|-BJfo}bbmiu$5y~!S{4p7{?*gQx3qli +z`1o?KNWV}UbuMzrUw?Awom2F(qzm|iadTWA|DKH6?u)oX7q)QsBxWu7s;u|g!nZJi +ztJIMl^u&X=BHwox$9bRcPhEDf>{0P_IZ|U|Vi26&{OcQQ0a7IOG?^y}0GFp5x^W`$ +zxc+&vm^j||6~EJSKO$I*Wg+}HU1H1%*?JG8SZNl)qX?%Hb&<=H^}p-OSC>(7re<|> +z&(*ma)orDjN!W?It;~5VI$M6W1Xrz(!=7zSqyHRu-?8NB03kMKQmHRcj$w|@?xYp< +z6AgLU4$_pb#!0HN;Pnf+^PNV@$xC5PT(tn{I?-@-olwM?wdXDTFM2YKY|gAa=btsZ +z8BJ$xj)XGznY9I4*AI82NLeba7iG_U-mUUs!$()bB)IL?7-Zw{uc~Dvb%9F1q2gck +zZ*S_meqvdl%?r;W4dji6U^uL|bZEzmK5#@mi4VhmZ-5lQLhavKtV49e^>+|!!K;45 +znCl~v46LqoDa#752(I+v$6i6Qa#im0k~WpQiaItGe@;x60Vi@)Hl9oWz0-EA*WV;E~!`|&)vUgzWY!Px-xcaB#e{jL!`tHX#_sc)b0d@1pq#aP|YHsj_|(sgIFWB +z7dgnuk9H)x(&>Xxzw2ymZXCSI8tL~Fpc9JPG@YGmIosy!ebtwr_{UgGX0gPA-0d$0 +zMpvjh(Vr80=wEO1?p_>*|Mnc@XH+onjpyJ$|j9h+S5>Z&b7r|y&W|cCT4^!G2FAb#Hs=1%jX~Gwc1yx?P +zTw052!MHD5lxN>=u*s3^SX6?6G?sQ@;MK=Z0GchXl9ro^Ch-2BzO3%E*WCyo8vJpG +zd#+VPDIzj4s{BE5RB +z4WI+>;g{USqEqSv&|xWoc4;N{POt{Eg7dbyCCzGn-6L1^&3%z9vG6sZBjzJXTkmo` +zop%x)yS}1nj8{0|G3lScA?EXEcY3^8!%;vyFtG}04j`Vbmw<+^pv@Pf15~u3M4QGkuepi +zS6k^k_=Jp2FQh4VW)naY`3m@>IxzDyiE(^(P;dt0Y}1!LgQR38MBzC +z#>HT=q77g2r<*e~e9GQjw)N})(VQXsqs5&@k2WEz*zP2P|{WV52%^Oup&{vfm0i3TJ*zK5Rv+1v_o +zKd0&MzMkZyi?TwBZU%6kxdL$f1A_05t5}ayQnz!>WOS(3#_c+ZZ8(y}7Mi(A9zR=L +zS}s`#_Z}j~);7Z+a1w=sYZpCz8n*)Eb7{EBxSuSC!G7h+ITd_rDIBs%h|a-gS*B_g%5C6?B%s-;G?@Mo8_6%9*#6+Fd**?xmXffBr#ZX%v* +zqT$NV;=ExnT{fD4W6@lI2xGogn^*ZeSdMF)sX#DwB9LG*PYb%_ZFGu13eviVB-KC% +z;aFPX#@hGb2eC``C)kt9{%rqS@)E&}BHdOp{Q2s_QN2R3Z>pUgCcbOp!d_Yy#I8(E +z-^*Et>rnNr>?ubw{_=z;7N%RU>>x533*gzZMKZGDg+QiC^Ht>+HF|$eL3{+2MWup(d+)8n58A%DEcVNXl +zXL(7Khv)}K1NKPdO+*P1r?y0J=3mK@pHH+3Kf2weZVQUlUz)6#df#osn;-)&7nuTF +zeY-Y!Z(6l2`wxSmvW2u57tJVMyA@4t>Ui#Uv$|in%AT(6OM>-=*~Jnh)BliPt04PP +zR`FpPYh|t(al`^l6YmZcZy3J5cQU`at_j~K5D<*dq9Kuek^&S}S??g|4M)yoi7*9V +z5G#OAUoSO0F@|mN;7wjzdp9>O!Xtx$F&Y`VA=95a{XD3S|7;%d8JwBj72ott$UV+w +zL^C@B8*4kS#_4aFzmK|=czf)DBQfB5+}6-!Nyd91Z^$i2>;?z2TwZYExFMn$1PV#d +zDn(LVc|e&kl`u%~G1XFOEuh+ui-Ex{*9z-8-o4Ji)%A#G>@7Ru*?M#moBm}kusT3` +zqDYIUcaziQ`JwG(HZFJ!4i;s6V%n|WGUF}Yt +zZiG>rtlEJ +zIs~LLR|dKF>I*Ur=c6hkIAJiu7pl0wveP9peZ#zB!hTnxS#@gSs#82;er}=vxU?Vx +zobVAyADtMT*d_#VfSIJ+95`d=F;LtXyPeO^phy@IOy53m^(la5fE#!!r$l>f`>y@A +zC_BNMQbr!o#ax1-*c?2%z0Aa-W;fXpeRS;#E*~=;K-MdoRQ#BU?e-)n*7%bC7#rxv +zw*lc#XLl!eG6*_7HyvOcd=0W9a~CA9;(RgdD8n)I#Z0dUDI^dCdVn-JGc#myE0n5g +zwnq?-)WN9+=`-xkvw-hv+B*1Ym)2Pguzv3^(B8FSfED~#K$s_IF9xjCiTUqTtLydScso~ueT_t2n5wSq`uF6ew+XAP +z_8!~{LtT6gcfd_iX+qkWETy!>=k>i%v6mG#f2=_PYbx7|qHf!(?f>Vu03~dxh#VyU +zFyN6oEOpVEF756^Z3Tj*MM1pi=6bBDs%=hpce(EV$(Jxd{BUBxkWW%!9XPdyQm0CD +z8hL99j5WU&4H+2r;O9SE{y=1ph1lNy4||UR)CgJLz3;BF5*}}9$6n4noQybv@m`=f +zE>btg8f9{lO>qHLn%Y6O`iY)Of+~2N4|***^V2VolFk3*5C`5;>s+cryB#c~C?q{OQ!K!)ilVFefc>}JDn^Q$YNTT$3 +z+^m@mRP^yZK|;=hgd8Ad)^0A1(PaC83VFL2M$=V&Fp+Nd0&x^=Z^f*gse6N;qVyRU=4?9h{%a96fIxh} +zZJ5XF#1X6WIeYj~X5ddni20uY)J!v|Lnf5lVhnj({`EYu4BY3;ziQ8k?HL +zhhZzcw-QM2b~Eyf(d8oHUda@!=Rru#Npos5Mo7>To9eqgtDh+gj=0a1fct_zpid^Q +z{-$Py>sGgsH-T`)W-?v8vA?RhKkj~?Ba*-ax>>upS5HqWbE|~G +z8+H*QTdqO6#vuk55HNv>L``+y{~8gH23Do`CXT1Y~Jt1zfirAk<6D82Y;v% +zrA@~At6{n}n;{TTBnYM*rJmkjXE@GIL(JS#l#rV`x>6I*zqcy9_ECw@UsPP{N!rJz +zZmDgQ*sQ4*Q_e@x?t5qjpI4QEF&BQXDpyzd`j@4)mz!osrs+kWQlHGtN3f^dzg>1f +z@%HDeU1v$tN9`0kLT^lxU1s|mb@gS7UVTyObHXEau1?A3kP%I`oUWvHF+peh^=S2- +zsryO~yBUGXH3dGLiH~ipSv+QSUbzhYn3Mjvzyr^zx>iA{+;i2{$$jqf>&K?F4BuCL +zB=iHyLmwIRnS<(d2z?Xk_s-a3Wgdma$joME1gD5f1=I8CU?{lDqGPYjza#LWNj~vk +zw*t)D&c-W}`q=x7Ay56g0fu|@m3BUfDxgRL#tYr|j`1v`MtAn0g +zwQhG>7wxOwJ#L_Tr_hVOYYF{x;B! +zNT_Z{DPRS=L?j}}n=&`-m5?Xh;G0s%+jN;*FX&Z@YhK>iW6pVAkN=Oe!F@Y|Pf(Qr +zFe_6Y{;^|E>vfJ;(m_Pys#mVGi5%srIiW}`cSAmLfQD2>>t}IQnl!g1Vbi+4k0ayG +zgrG@fbgGV;MoTJ>IQ(U!?nhHep+V%xNv$9b)zq9Sb$sRwJ$T6P>Wbt2Op<7bc^htW +zan{gFq*}^YH*vG9gz$x&gj~*!n0*rK=kGh$vhHj+yx#WC +zKeb#1mK8F~4-fUmA+sVNAnpQJQXpEALnc=*NNyakRlN7P`mVo$s-eYH#q&B~Gexb! +z+wMe^&F7Qlm`!b)MpJbH(8G~{qGsLzS{(=1qheMzmHx=1Z$DKPW_tHxDP7tfW4K6! +zPBc3Mke??vv-HD@KF93gw_V-BkGXcM^y5nq!OyDEJ;S^+UA7fASyGzuIF4+WG?5E( +z(2TJ(`4m0Vwm@|cUDD$CgulGwdGz2R=lS9jJ)Y#p-DV$j#8?wUBi~=S!_0z8Tn)#I +zy;^vM;f~aO83(mJx3@<}80b+el>ogKNIFl|^2{H1s3?>cq`(t+u!9*-vZP|>3;D&6 +z^DZzr5_kNdvpH@kUtajmr?xZyY|8MRPXo^{t&-fn7xcvMSpPqX&PegqO6IlRZ{Y~k +zeNJc>-aocuOr==+Lvg{hjGW^eunm40?nC!9`hgS6dYQ&+x +zkOzz)_9eW{OJ3w^b;Ag#iu-wYRQNaX20^-gG#gKkhumTjdDYP%Y}DRPcvb#}6CNx< +z;W0fPUy@=$-LdJ`WU=p-=Sdv4Vn;p&u6$?sbULoL^(~tp==GUKv`T9R8d$PRZrbfJ +z(u1DLm?FjMBsMIg@(cMt!oL~qnEKiiH_c3gr4zA3X4;7&F)48{T@eRn*=G^TR*;n- +zend55v3bL#oR16C&0 +z3K#{=wjOYReEsW7@#DaKrvZ0|D~X*+$u1d>;41ynEqhJ!>iv;+=~N3Ay)l`@zhj^O +zaIPY~^8hd8v71(ZjpDH>c5upcM?O(7)*m$H8x%0yEy3g=hLO9kr6K>i)#m1x3M}fR +zp{nwN-zgxsWZladA5~1s)zcb1gRBzu|J--p5NcV6e~L2y&Oy~Bdz}bd}^9MPyk}F +zx#udIR^=zs$@14cj$d(Esw-n67s=n=Ez?W7s}qq-4?4+a;7(t_A_8Sx<|e1NAC6T| +zbr6tUxpP(TN)9{Cl=Y_Sc5|;l+P&KT)pW1Sn(#$TA#@C3EP&55x<^AcTm6?)q9sdeB +zN%HCrT>b;k(CF^aHKJGWqvwk%*=DytOXDN92mN;oY9c-9yt`7JH*v(9S+bJOaZ7&Z +z`D*UpN+#p|$p$2RTBTed4N1tah!O0%%{sL>+rHswTI~8ePFK{SG9_W6gZkHt^g?It +zcVh;<}V$3wYC*L?U|No7RXDiWV9CrgcgdSs)0b$^!1am_!5 +zG_W}nkvR2z!^%|OiQ>ZGlRB>rBlT^H?#G~{FuAetzSRA-_#XV|y~|`43`i9>%=!nu +zra!)Qd}V_tXO((D<^^Z*s=h$j+kWeq$^UFz_S4m#+SKuTLFwub^>jpoGD}7n +z(&?t^k}sO(ogJ$|61;SiV!NXIxlw{;M`N~Bz>eW>T}cVKf$A$a9og5yyR-EJb32O1 +z+c2ba-FvUK)nyzU2Kfwb{J6qLGWZ4maBDHpr1R<4c$8O@UkhiUw3|6Up@7D#hK=h4 +zH+i`+OLFYQfz9P8Y=~X$OO|+l920Jfj_vexI{!apy=7EY(Hb>OcXuNpAsy1)NGjdk +zNGhGuEg(oE-AGAysI+uOY4OaA!}M}-kh4%&@p{t;Z5$gN6jf9mfV6)T{GDij+aK-gGvWbWP|@G8Z%U3gdb&Iy07>oUX^KboKLFtv%R9miLh3C5l>Y2 +zya5kh1kf3oNQ~!7n1?!X$ +zv`pmAqXB?5imv$pYfArNO_E-~wWAj)N{EN^k?!(RQ=&82b7vmwWID7lbwe)wY>aEI +zOyBbho7059x0>>O0hiPoKO;35axm#&>-5z!cMge6-URAU!5x%+vX|A}r=GQ3m4>%p +zuE+uhw_IR&VeJCDQxKOf!$jE~dy(AQZ%r>@1uEq7CCMl-d0BP3zfV`b?2uB!m6oDi +z+r`L3ZDJn0auUHD9W>AS&j)YCAhgGCjP_(F0Re^<57kkI=ehjFRm>DO_w-ljuP}mv +zH)bR?paV<|e#MQI;@hj6s0)jdL#%tgykuZ9n|{3Wxjk-qyvlTswghwh9U%S&z39iX +zpM+ct>2}0Fj1o+wZr+LnjTRo7MMfrnaYJDj{G1s#nr;U!_u?y8b2$T^O@3iLHELt{ +zZuy^z-kNd-9E@7u3rp~2s5h*JUT`rnjl@fjtAx%B4xzH;>*)|LOjqQURF8e21-b!b +z1V|-FEko7zRVLU;8KHiELF~ihnQd8@ADC<*g#rA$z_}x3FLzRLol)#Y17e=s!AKsc +zB~ywI3-?$0LY8RX9p_-g_*mack89E5m|PcptvMg&CFXa|{nwDw=EnP5R}Bn$_e&fK +zfspaORrN_Sq--i!8J^pr~vYe7M0Mv$3yraIT9=wIn +zcCVOpYE9um;fxh!MOsXdzM!tQHAvpUgv*tc@@}*DKj!Z?(MSc}Nbo?i@)tAuom7}C +z{^4O800Ik#nAQFR(D*Din|7VIkH);5LVgoEw8(tq4xgTJs5QAXUdwU@dWvDq!UfL@ +z8-uU#usz&b{gG*-P^stO0$T=ENm`)Saw9(iHCf)%S9p +z>Q4Z%-_AEU3SC6zXHM7DeADCohdG7C_Iq#;UJBAtU&7x0?<<^(&~;1=>487LHp3CU +zOPRrKU;=!-p2@QYi0rvMCC(4s4CnfbRk#%w1_;aE-DeBzpurlw2PX7DrkXc>}N;UPm +z{5I0SjALoos=Y~r2-ub-@lK=YiLGz-?cLZYA(l9qYv;_WgcILd8s2Z*6=g#%)sKO& +zk*Y=eIE+e +zz}re5>)6qLY=`Qc2_)|<;lRAVzCP0D_Tsjq^kPuvknTNpasnxf#fFb%%Fwvj@g5W8 +zGKkU6oR$U@2j^s)09@ZsfO%x8cLD4liN@DG8$SrQZh*h|?(<-hID1QqYJMQ#clNp7 +zO|yX&Vh_A+?*TdL$%{MhN2Fx;+g8j_w#uN1$}a-?{@wj2cmVLd3kwbDklCk1JpH)O +zIyWprW$WzAD1q>>6wbqkOvq<@Ct-993QwToW48bO&Qw*)kQskWc$r+o7tc$3W3k!}IxiS1ZYxa1#u(JKTD+tmg +zbBO?JwRs=#r)SRbIuN_=tP3r=0%Wle$Ma6c9(ASGt=-k%1x0ilR;Y^9#BH +z*%NDYyKGdZuit98_M+;;!3D;M6)(Ytrlrr-SSo$c8N1x$GpOW~C6HH1)zKNs;Ej7s +zz%c~!>~6>#AUOIcaaY3!gsR)63Z-0(_0I#ZIzsXdVRC +ze``WiUAe%}FqjQ^iZhqx>VG=9@Emg#NYHTj&2!f~E-P-W_554vb+FX9jdW3V$q3rE +z6Du0ys$~Cd~SGxJ+%FveZHK?ba +zt^m!scbvVE@1x4MomhT+obv31`Gzt}FcF}Ek6-@0bb=&H4M~}33slR|vg$kV77b@9 +zb(r*cSo9$5AM7j2;$X-3=GSZyIUqX?s?^+pB-OYZxI!i!?8GO2X>$t%;I?-;xMQ7u +zUH!mcTw3lVg)|H&gJqzpzH$srv&O!_>$t4~?)R3M>(qP~PdMHK3DzPAk<0tpXW9SZ +zy~zDVw$i_gTzc)j +zfJO=aUYfaWq#IZ4t+BaN{m&VR5Vuf3Z3%g5w?A%K +z{I!J*CUsPNmT_p;z_;*C1s;narYZFtF>Fb{%J%bU7U5)2*8LBPHn=4^BM +zZp==$)#K%!`Mpo@Sfx2N`IxRg!ubWiRTqrCo1mlpTrROWH8qeW13)B;$yJAcW%LnA +zs*cLR1$+naXXv#}YycnL8{f0H +zxu5R1-Cm)$w_FqlVK%0k^D7qSy5`SR*`h-u#ynCt_8gh=${>8u+l4Q-vi`Wtmq`Kc +zKX!2M6zkHRMiF=FwQOr=A0QfHA6iDPOUg>tN)Rc&t)H3<6e)IDsyrM($2T(Wj|I81 +zc4Ul-+yw(RKLJtUIA|)^D*wZwY#a(9SPsmf^-Yp*vd$)yWNu$Uj)LBN&VKV2<;?QF +zxS}k-smX?HjF^=)poas!*?WP<(Cb>~r&4Al8$ErNr}TK*#F6EB)6P2{bENO~vtmJz +zIG8-IjbI?(FXfSYoM{y|j=2v6HiGypII<#8Ey^?rw7CD%h&ExPUxLRDIP)S900`sA +z2dC+?qt&Fa19vlOAqlM0Sn_D$4K#>Ln{QXJHIxj)pl$T~o%&Q;=XB}=f=Gt)KKIbp?sz9iDC{Hz2!h+#WUG(L+gMR|>9uH7-cqjW+L7zSX=>d8^w9PMZDFtdyFH1DkeSgY& +zuf$GHYU+0CNm(@=MtXLF4A$vi3cr+N3yZS>29R0OCh(uD4NGTj3Kl(@H4%sh5wglU +zubtAO%&hdNS)o7uV*mT-JNeLGc1!~^f!GO)LJn-={_#_Ir3Lks0+fvzyJLSAOi4~V +zi?VCH<~WY9i@gExUjP +z*JXn6DQ#*eCSCg9n#!RYfrp1DaKKn{QijP*$fN|!^4}{- +z`9Y<#yuY`UhfTJ4`$g~Pw`a4n2N$SqtR*3LpP`^io%RfcpRrruy$VvI-`v-v*S9wr +z)jU3oQj9d;nnJW#+UIxA%4T&@W2BL@s@6q+{tS@1lv$wv3=WCVCp)U`F&QQ?2_4vitD~S)5!GlSIT+0HZ3Xgp9l?vqM3jRgL|^U +zpDqn_x%@AzdUReXjlledCWZd*LJ;nv>n9~8Dg7}5)2iI!oV^>k$l@`Y?LNi=I1E5* +z3{w@m>&JRDF**DD=P$~gL`)Im#b{z(Oj~u)!gZSi>)~vv(u7aaR+Np9fB3t6teZANbE_wHMx5nn2rC@EYd_f?&tz| +zZtx<4rpwM8guPux3zZg~b~5=4So2arHT1l5u^fbibp^7gh}}5B@KX<5Yy)dPcD4mV +z+666R@C}Mw1cW#5Td?a%N-9f!!>~es>O{yrDQOsu4?^@bo#W(u@(YdoRoZ3qzbpVL +z;Z7s<-Y`sP4C$|Y*AbH)R5mB;zkdIC2M?oGeMWZI9l*W4njCkygmAF2Ow9r>Txu@P +zye~i#+WP?7XzX_^$HKVz<~M2S=|8bE*J_~o#*d*Thlg7m-B?bJ=KC5`xtzU)&PJFM +zvUFp^M_8E6uRp;<#2#ADf=SNYsM^NcKpzUH`9Henw7I#`XyL3h<2F(WmJrM4l79{b +z;T(D(f|V(a^dbNv9eL8oR2^)6g=S&GiJ*^L7zRn-JCJ9@`!L~f3}TRU7RTI`*UndM +z;>SOV{$w+f7h7XXLOSOh=$y8H?d91pTA~6v!jVi$Z82H`9YNcyLq_`H-B}umqRD0y +zJF#U7B5&F(Cqq$kJ|EbaHZtH*XCKC7TN}LpMQz7<7~d)`Zf+DVz%Du{RHq7*C`(5X +zeV}tno7kfjWTH%0>JXr91A~dZQI{yN)zYokTp)C>$E3c(Xf%7-Bj^k;m;OIlHq>XE +z*B&VXRu~qNp{M7~AG!CzXc#Z`bteY_`x*TGTClv0|fDW +zHcvX|Tbt~Fa0sQQwzgZKuBkqJ{R{Yak-|VtL0BRM>BTHxS0CJ;=wx%SUnW$1z%!U9?s3f6Z@k1>mX`pyBj7Ea@btECzqh1 +zN1$4v3OyH76uZ|Cf(XLF8luLCY0I}Z=26cV{Q==$ +z8%lhZgw$qun^X45$uJ4)H*j +zJj%*X4dmNa{o!2r)tp)uTwh`sRTUD1^eK3;t +zeTamTPn{#?1Evoe7K|Uv;{18zlgs&efBhEl$Xe#8)?DgHuj~9OZ}&*A%WsWVDj*xrcsLy+CJy~9 +z7Epe8xDl&nq&HXrGJtBBLRgZK9G!V$Hp*_SZINLcXS*|>^S{G}iLN_(uN34|W8`|1 +z8^HMBOc*CyIInewJZ3LA^z6An?ubm-#0~5`7?ZOMDlqD92YN-Sz1K*dF$4kTUk&;k|fsQaLKZRC5SDWcPp7wk=nV=Uz +zmfk!GPD|JE`$hhEg6S{ks+I`hl6$l!gUQf52=V-)n)sZ9FKQef5d9rkmu>xkCUUa~?=ID=n>6bAc@fxwKz+u}0y)Gzb1#h1> +zUMOK;3a@Rr`|uYLOL*+SKY%pgIyv>Nj-TjXzni6@*40n91$fv{-2v#c7XwU>tK$lH +zyG!nn$wHnGS*QNeb=*+_S}*bt4|GAuo`ho9osPjS%IFSPQ#RRTEMf;{ESYlAp0>~P +zoR!btZdA{Y6NN8Okadu#vQJJxST;V@3XvVB*x4;vH$j@?hJB +zwi?bJ#r(?Jw>5^DEN5k1T(&Xt_rc$DcSKMLoZpZ~MAoX`T=?x@9ZvWlunXkQy12+> +z?&&-uQM#d&uG6y(VgMD=1qFpP8)c#}$*_3`r2Af4>XhLgi^R#lD!Qe|6PJ!( +zfSGd7MO8y*EgTD=HrzDy$0LeUpfd?o+Y_hyiT3=8iE=lLznngAKE{Mg@tw2KhD?-8 +zBt3qX)ZoZX^oo#@E7#GUL{>e$+!+l-)PzT8VcS_`sx+QoZ2A|Y+J#~u3f;US+iUc7&u +z-2#t8^Cpgn7u$7WpOh3FyMFy;&Dg;Y9K*pM@phbHkcz-FtzAe3!D}DaF=`p56k`Ep +z2|hroSF(BIz(WXME9+4HP#7gD+K@87Zo)@?%!i04Pm!aFOL?@=^9)M~%MB|E@27aF +z|K*zLcq;1e&1nxB6WdG;b-eOBJ%eF?BY)wzW#0yf`_?}+YoEX@sB?g-y)r1yrbe9q +z1ePNlB=K4A8~is!DSbXW`aCS)(VxB@HUQSpR(TX_Ze?Mp0b9r7$agG>I`pV{S +zrPnV~DJWU3Wa#1W<$ZY4GXpx18U%v?1Jz@g6hh|1*Tz%_d~Tmc*2AR_r4=m2z#s?_ +ze1K^g?AxognsC2$GF)nmzn|BI(AZmVCP30K}7L_F@Y)2qi27gJ+865R@^smWu +zAK}KihvF}Jj|0EI-hLnY@F&%O+!V5--l99T4{qgpk3pe)YFp1%p^ccF(mG#THXtjx +zC0m7ZB0l{v1gm_1Kht#A(D9NUD;$itcd}vECp)rQ`dwh=<%YDiIU+{A%Kr5O7|wCqqEHy#T>9D;E- +z1HUQJ$^JhY(3<>*e9iaX3id!bsRm(`)3)rt8R;i&U#ZM~$v8@V;2Ni^@K@k(YJ$*! +zxE1fXn-#CJ%shKU9#}3rTPB~^=-G)$*qv)meXmR9YO3scTzo=2xO^w4HO3bgxiM0Z +z?cp#Qz*0n_OfwrP^Wm6W+7yAz`yL$jpy}`3F-4IZeYf^Y9AHELgG%BLHV~);5e9rg +z#^Zq#rfT5y=Y!6^D%h|*z%rQ3;c>ak_J&|7ytjAH1#)`sT;Yw!S*n#OAB7h@`}XeH +zpGrk?OctB}V?IMP$`8PNenzSDN6?`qvjpbMq0gE0PnB%Qaim76^^&Urs?XV@Os_f+X(CX2=4+Z2d0(vaf`f=!ig8>u(_U+3F +zPhc*B)13=vQ?EN=16qK5vfkB`9RQ)R6QpMe^<)@?;{M2PEz;6cRJ`nn46s@7Y4gIX +z^d}voz}Z##i%qj@s96Xkip)++o#<5Vh_i{pYT&@V!ff!DNeh=t+pVeDf?*?kqz%iK +zdSOZ|;-U+5B87x%<|rU$Ku-3UFHV-slE+S~q@X8D=sM0vdS9DgTYNp6zCQ8+F3u4V +zmEt8_vU?yGQ<-a&zTL`O!*PxWiNkc407id@?NN}yLEhZl +zK3@WZW1RPKPI2Ajhm1P2+Bt~m0qFf{_xumw^3-jVVd5N*FZm2GN?$RNVM}oR74>$f$kOoL`TN)N*jL3R3`=gdC%2rML7a-(ZWhl; +z8t%=9!}BAaiV5Wf8#`XT%#{zR^;{FmMbcteAm&~ZCM^z29qjv791Dh)swr{t!Nt#i +zF#=xdcSMt`+_|5=)_22=sf)Fb!+mEWJFX(xqo_n^_D~XOh(g}yv}J^Bg*TmnpoJAR +zU7%3ORn83^tYq(9Y@e;I^<)UJj>btKy=B`5krjg827%A7rUy{fbYxxE@93-|1e +z<2>ZpeQ1J{U_vh4HETLW|8m=}3~d9o5N1pLipd)?9iJUEwX>vG+Q%-xD~)+`32Cwh>-d +zrCp)ubJ|5WE$I)}3bh#~(N)<#k5UpwaFo?$OxrU-Ts9Res%;VeYr`x+P@aOjq5z$_ +z9zX3x18zkeV;fD#|pcaBqNzJyC4$-fI2~mrrEx +zucxMZ2kwH?XNV}20Pobnnd9T@*Iu$X65+|o31MhV+D3!xKNMk8ONflP<09ek%|^Md +zjlTqWSz%|dwbN&<&U|lwGn(!=Ef{GXt+1a%Kaw^4?7qDAXv4Cj$UP}ZiAeWg%Tz$2 +zi_~dfzjn2m@ZwEo$2{^7bZaMFT2007>G4wQ)lbrBBHmc;@Ae-Fs5QV^nQxoLIj;>7 +z#~v*dxsy=^Tgx+gdi{M%BAT{ktOAdSZOcprfhUR`JcXjGBfloPNtW{8a&`R0`#4%E{ +zbuKThlrxOYO{gquoBmVlq6fmpP$9KeuH|)KYUx$>$>ou#-c`)e>piFS8zH6<&n|96 +zZaZ^y_c`N7FA$0+yDVGdNt;~rws(C8>7_Qwuuahk{>0ly9I+MgAR=Bnf)j^jMGeoU +z&@!6NDE)Vs+t?_k^J2!$47Q~6;>P{@IQ%jgi*d3%kp-Rr#V@Jrdz!1_ +zn2!&(4=z(`BYmX$*^)K*FOQ~YrrUl8dPG~DKY0q)pt;&45etX1NB1^<-JO1(hAmMD +zc;C4x;QxaOtFrt3jVY&28gCg^MR+celc3cuh)#UC_YK`KO0B{P +z^E!&!_RyNBph +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 +z1+{n`BrP{T>@xl|@GGJ(6kRvxiDgNenMQ!x- +zUEmoEl%LEG{?vl^q})Ukd&y$wO5d^?Za%nfSD78n)9DK*ZNB+>ITUT*yo1(ln(Qu4 +zMKXEE=CZ#iZfjcxtqdLaxm_yhaqXbF09 +znOhlX)?=Nf)f-BKRLMwdn3MU?7jh!*?_ukFS#D+~Pw&_JXw{QUYAWQy3F4OuP;UtE +z*UHK_fusb)F^M{nnGAc+@t#CU7PR*z>_;Jrb&JMmGBlz_b>ZD}oYf5T*`Z#$&<#t; +z3 +z*&D&P=rDKuN-8pyg#e{crRZk0>+lsT9Uc;dTaJ0@U(ny1W6-yx?=FMy3=5WD>*7ju +z@)YsE?Z=?;b4i>Cpt@8a+>a+2vs(Z9VI0p-1(#(*`C)3;)HaV-Oo&Cxs6qJB6-ua& +zkGflc?TU1Oi?K*mp?na~4K{b82sm64@Q9Gc-n|;l-l2~Z{+a&0qY`|i)WK;glb#n~ +zY#Sf^786Y7Iq}uuzxZFBeeWn)tAyZ(dnUlLK(YHQQ~RM(#Mf1xzG}n&stlD=Yd963W9&~ +zTLyNekA?g8D{;mfuqAEU*ao>2sreH4u?=u~EdeX6wMAoptAjj~_ZN%Sy}do2-&8;suo8_O?3Jtrv+~DYHg)gBmEu%@mMd_^wQ4?p*QxjP_ +zly_zfX_k}GCZ@sE`uHu4^06k_Xg^a{zi;hk+3bSpJNx5tOaJeIalu$D-Y>543W~h@g00U)Cshj?bB4fYCb|7m)eLkc5YU`ITg^P^WJu8>Dj;^Bc2C*45&Xs +z&JhdvF_^qoR=R#&ZN@PG(HKU)F`!X$g~sF3Re28**p}9PSH_j7v(b9uI7Z9#U)v&N +zAunWU`XC(zifFZTV9?X|%oGT<`M`q!wYDB=>dKdLzMH26WDbN@v}n-V=6-a&In*Qs +zPem%>zcQUA7TU~zWI9|A+{SO7ouJFw8?__@vtaFP0FjI8U8x_cm)lIGqES@<2}D%T +zKQ2vVF*}ORJd(0?N-qYgZ7GE=v|yZdFc5iv{+9}-3F*}1BReBYzay@;AhD-WmOW7okZM}vr~IUQxn^+Rr4-qA@MEExq#s%FKJ&|9)1ewP;{ +zewFSNIb%RETK3sMmx(5oP4mIWTgOHICcDxe-Ekt~=D74`>+XW2G8Wn&abW%IHh(|O +z#f+PxcjGXi>%~qZ(*G;cy)YL3X7LG^dhL{+5=(}Fz?3H)0`JZdaGz&7L??EJH-aR? +z_@160ARBo106d|U4;RDfLyME+Cc1)2n^J>n8bVhSBz~pt6k}3JJ0oZFuA^fw+2X+d +zyNspjMb9z8hUjINxzw*lv$lR`36sdqp_jwc-GPD+Je39yN|6o-ocOs(@9^Ni_9&$N +zQeb$ez=yMsIYiggy=68GO96<}McH@G$I6ydw?m}TS4Tj1kn73Za%xI>{7qxNwOLi$ +z2vN$dJ1Pa{&J_hl^NHo`_Sh>jVFpI+?(X7zAGJ@IspW0X^O++AxbGD2Uz~QyE{qtf?xEITp?ex3Cm~!3_CNz?-X& +z7Yb-T16xz4%^Ewi`C}dk>N18i1vjPvR_y-{+raZUW7#o#Thouv%W|^d?k|2ZE!@xtq-O7a{r|fe2BHGKN}ek +z6&zRmMJ?!6Y{@#29;=>3Ls>Ju6Bnw1%8BY60tST)RzXEt9Ozl3A^5cGb)NUjLhUyz +ze`9*6iquiZ-kFXu_

lJl_o^gY5JJHQD9lmY=GX>EJ#|^ +zqx3>sl9^x_kuD*_sbuQU-S$ +zI~hx_RK1k@$t1`4^M6{3X>X%5kvWj?{}zXh3~esMqcQ+!1#QZf%!0RynBfx9=UA)} +z<*P7kV*hxnPKb4%q6{i=)(BAyO8fj9rvCn9p@gaZc}oU6UlBvSI;7gZZWi}tMnJU3 +zB>r!2X=d_}KG+(b^+EgxL*&ap8t6o#c{sX0x)z@X9ISQ;RFQWx3xr8cOr)H7`Y_;! +z(NSL`+d?)5A)?M=zNpXc?%1R4948nA5>{Uw^aWf0GJL+s_T08JqDd=%HwMnEB1G3N +z9NEq&KjAy-Dx<)lj5TY_Wb9lvNtTML7J;N@*#2L=mX_nDu35ik1#?8-KEYIq{vNaKPD%@kQ%ZpO8`sVP8NaY*{ +zt~B8f6zRDh(sw%;hYCMOCfCxfE|#d38`g!l2O&;WxStf7W97borvYB#Jn~N-xWAgb +z_aR}$fKq_AV+t!Y*imtS?W90+r#Vl}C41|AgC|2!zTNodgH9(H%%PP6L$>|Aij +zQ)_S-*QAvyomw$kjwMg6H-?U|{^IM{!J>B`Y)#6VZcl7&z6wK#dWkYYB5c^TvGr=p +zYsdP#5K2}I`P}S;)aa<-G!!cAwqUA1-^kj=+gQ71K0Kr<%e{A?)FG^^>&1ayaAO^X +z*8q4DU`*jk+t0!6lu599r&vjPx(=&i$s&=3hB?}!bFNo%dOoM2yYtj9s4Brs +z#Z;~^Yd*!jSaOo@A}Hl>#~7je0@Dag&a;c!LlFJ~3*rvIW_0#MmhrKr#UX}S#I#2o +zu^~}ZqMdECK=p2Lv;wCG_%?48!wDt|z-#tA4>?#fM263v915_;zH +zh*vD@%;!;h+;+JO`N+aw)xOF~f5SohYmhTRV>AD^b#Eif5Dz|ys0|JZoX5u94l-g8 +zKy~Iw0P8Sv4ru#x-zk9{Vmbrfw}t@}eo|?$&Y+ +zOq_a(a1tVBLKJLpp$Utcc$3`Pe@^~x-W&obN={b_CjjEOCoBT{*;*LLX<%AV`sRZU +z6wLEgseb4OhkJMul~;(3(i_t+kJG;#uSUiwgspeF{tj$*ywF+87!VySHYNiiabVJ? +zb)>%6$aP2AOD(>FU?ffyq*Ll%b17gb#Hx_(AqT&W*?)O=ad#VpdAs^;dix8Q2>YJ{ +zMvpL!zCdUOm>F2Z2;&9;|B(g!2T@4k{CVtoydDTD5MuWXR$Vv?;x9K!^mxicOfleD +z=vvaXL`KQWK{jfig%LfclKDP<{*Sp;tDt4#`8;t;gr^Evf3*a9$NJghvzGUZZK8=! +zwMRqKK4)NqdpiBb0!||w1VhmemFYXY*5IFyRQ$W`#{|^Q37k+>^^eLncl$GKKUUP6 +zF$P;>X1K9Ec}2evEMpQQ{6^#v$t2SF`b`hd9B3JNI+9@W8UDr~bbj^y;<4pq-2K$J +zZ3BslWT%F5o~`-L)E#%}3S}ZqNTWxM-YjEMP}V!af!0?|mdAp$e|lrIfw+2UXR{re +z4#6I!hOyX!(e2O4PE3Kq+kz$W@WH7W$rZPoB@k(d6{|?DNc9sb35$&_Ef!Fyp=b{J +zx7h#Y=-~f}~`8+f_ +z3q3tvm|Grj+R*l*mzB0=_-6{IXQuPKUfU<`bPb?qs^wY|#7qXHNne^>y+_spvG`g8 +zMjZ+@U`mO^zVm&H-+zp!$fb9#)wYrXa7I8zJe|5Z|Pb +zq`MK22I+1I>28q@X;4DCySv|g`#aos$>SZ(*M{Ie#&rJNC8HdwMCi-mn|bnlkPS2Qg& +zui*`Fjs;%d?XP#}wj>KV(SAsJE0Bl5#N^xgTrEBk0x=*ISovXfe%6xW+8r~DL&%mh +z5P?5R_~C$f%~CL%e7U6eNc1?4?UdKw@I_>@V~E7iCH?K#H4Mc)7gwoXYjPk2m9fJG +z_`g`|n>F+66M)w$g0czR?*A;;tzw3iXIAd9t*H +zpCamoz#$q8eZQ)1{2HhS1833NjO&JQZ3cRseB7)=Xhz~?-2*VxV^#)M3NmlPc=9OP +zSq;!x3uOYzKt6SMo$mm?k~Fqlj8%{Ks;0N|O{Fsp(K&fidn8f_;M?TulU0X2U@hf; +zcE;~yd6d$`xC(v-+__{p^^jL8;kT>hxuQJ^AsojZOsE11oz(T@dgpoJmDJ4AHu9d86-2@xQe$YC +zcP|9{otrspWY`IV{soj+QO8AwmPA_Fh&ZG5Q=y +z-6Cqtc(Dstk221;1_UWtl +zb!425kOwNDOh09XFf_?IgxJwLvrZU(OUjpIt*;MFd@HoP?k|)v;|RW)Q@7FiH~qgM +z^w%oafgcY{zB)CZOVf!#kRB%;_?bvO +zgJm}Q8H4D2WE__+oAIE1VvcdXz%_C6i_I(VwzwNTti{zY?}&qYGbS{*&Q5M)sd$C{ +zR!Y1e!v!zwm;n4GPVwT>W~uyS7p7g-!1|R&k}6(n5x+HQk5Qt8iKvdOGPVvHi%oEn +zQf-tSr4!b`z)#(FI{5&g+d$kfckpOmK+0FstfLbTw@6;x|I@-VxjDR+XWYl@eqL0b +z5@=y=Qk{=D(#Q8hu-)OiW37a~{YiqY`*q?XU#fOn&^@RZ+Xyy?fq5{pnU*xV#`r)h +zDk0H9$}mST8%cRIn>Heu)jyMGp&J}UPBmS%FQvhUSW$s+@24~4Ko%Ab=rQU`n@VXU +z?0s1z1G5?97`Hde5;@=xAm7W3o@-< +zQxOL)-J+P=tvvzKHMgaj^WWeQP7aD!JY>usDcNmjP^pS4i$1Mx=>xygOI0THVu<9h +zABKYhI)mI_<9sp^s)YhSl~!>iwFe$>#l&x*+R*NO{k}Q&kvbjxdKvJhjR(P=YeTj0 +zx^W+WMH<6^oXU +z?wK~J-neB)HF+E!UGhTo@-Vk#z*b6hHMo&CvzZWhOP>;vTriXD5S$LQB$Lk>}uBKY%jt9@YzJC<1_)*wB%G_PcXQ +zZ=wiUARLH`f-9S$zzPb1UT8sl=X&v1;8?184Gbr>9d7P{AVlX*eHx~Noe}1+`#J(9 +zvbksl>f+(yjsSQ|%u2X=*n%ub7;%vS>;DoM1OY-#1*|SKD?2ul)5Y(E5|=cwD$R9b +zC$e&rzg80&jQkP(14{R(a6HoU|AhXX;S-4wtOB +zJGf;0O0v$+lIr4FU~oVrgF1xO`l_H3;(^3UE0VS1y3i9v{aZ`~Uczexe|x7N +zJc;17O`xk{AKyX|vUftlUtc3Q>g3-ZJE|P74&^-7UtIn;L)%j1IrNd0eMaPes}cPmF^wRtcFsKedkj^nPGGp9IB%k#c2vnB(pO!qIL*DuZ|wP2m>#MA??uh@TEGgUzR@i9q{XTe`!oojgYDK4HpjY +z$9rI*K7!XFHMowuyZn +zqhe81`-n6y3Klby-If%@&=nAdoQ5gIiR{6Sy9ulXYvC8GCr=d+Io)MFd&+Z-nxbEj +zzAd&^gi{S%+an0h9;l5c3USezos_$5#{Ap{upTv*_BV26Q0_w|X>(OeSA +z-qee5EBBKRMZt$eQGvJWz`ux*C8LZzKZ4enLGZk*&We+e6ng0S;`5OYgpAu)HK6zf +zaAIbAoEA=uo*fy)t*#xD)BV}?&5aYFH4^#?09#9=b@c`}Q3H+!-56NRxR2DH-XRw+ +z`)&XoS~gy@BPcNSQ{%hiJT0MGlM~nY1sh(pDs|C3iJ@yAbNN3^n2DLW<5{I49V)%} +zhY4Wp>m5$*8Cf+dW}xTPA%N3+{^`W+{*ZnNR!lT<*~R6x^7?~f2*YftLTjdiEGOwJ +zjM72qFzL+TuLr~ks;aY*=%L_U&sWc6#NWIJwd~QyxnA)4j(zh2<#pe*E17uMH;75e +zaK2P?-*bzE{^!qg1xoP`&S0^JsckZ?%!~C5wesZpbx2K`7WuT&pm5>t^{Jl?W=cRl76nm?|}oX +z88Z;3N9{2nK3I3bGwE9&H|uG%e?!|V71_M4VM*6h(b{>;W(-K~- +z*$;$#_pARRN&aeO$_gd8xl{xwaGwFPA;F@l_S{qRf*4qElO8PGQQRH}dPH_`3b@|A +zwx_cDPPnQHY9CxsDn7apE=>tYeTXr8^)WNfJ%yS*Tuj!Ucy;=F5oBs0h&_{e@ZNB! +zR{qJN^Vfg|4qkA^o0~2r+rIkH*bJuu?PgR3{Dlb+!kP)UhQwA2tx6ohH=CLyS@E>V +zktq8B`NlsM6O#TzPS#FLOuj;hSFP$6r3ThX +zErz&HJHkX)-$_?5kP(@;Gqxn-4PP0%!za#RuSc#sR?=#KFJ|linH}lF&Aod(ALh8F +zQD;ZiB;+~ax!jH$Lf0Kx0a_1$P_VDjqGsH)!Dm2br^1Wb+|+#e$%;J%yHJRU3lOmz +zf9#Tx_?UL9s6^HFLBn&6C{9&l8< +ze|ztSw`&j?-=*zTNF`5=n6+~+be!Wov})wN%X7^n8Xldvp4CWuFT|7dNPR0}v=$>| +zf0-U(f7*-(IRoIy7)XD^uk`_Z`GQ}C*sE}b#q{3r=miFUI01yqE-04m`fX?cixJUh +zY+T~Cg^I`(HkU#N5$S`BSic;O^!}$5m3hsUy|EY&R?QCSx7j*e*sx|NbNZL?3qlwW +zejy(F6U(erYXT!fY5xRhq0U+`q9GHJo0_rA*pm0=6|)~P7T;TTO>*sDsp_erwKocz +zp7L%)-fo8wkx#4U^F6o_{djLcrI&7#Hv0|huakKkB7OQ`{g;V3N-je3W;z2y-T43X +zbrApJ{E{wD9r(yzT@8sL) +zWI)jbjE_l#Pq4quVjx&L{QoBjGa>%(evb9m)@0(lzKaJDrKXkZ)3<_DqvrHhf=hBoTk$BLvU)mTO0)8ok@!bjg!W6HvQ$#M6DGtb=p +zro*5ZyW~ig@8S}g1Qay#owV?%NdC|$BwS&Ju(050)+1hwg+nQFrj`bC6QTkqA|wIO +zWB2&Y%|bOWWEd2wMM`#w`K15{a9xJ4x~_6ZaS*b7;{wXhQAG(ovTkP+*Mpzuu*gL* +z0QE1^$1&lp>D-s69TBeK$1rWl7ku&v57GwBI;$8x9$Vv+96N#>^PP4n7BWKNF9wCs +z4#%C`4p$ahX4_ntD0-v&;$p_3*@7DVb(PU|Z!hO`EZzy72fxm#sP7~WonEn*hM<8S +zGy9bbr+2w0&-@K^asO%cn0);|TRp7n3dn&4nUGQKLp8a_@@p3yJV0Svj0#_@15ctH +z4~Ib7cBxc$y(pAKWDf2O9c{Eq8$&1aca9yhY3W0Kj++wYoAV{E82$(O^QBEA!h{cQ3nb +zjKZa9wKHY_uzuq$YY)%!4|P^1qD@ZGeqNW28gQY08EtnDu)c@6m8FQnT3_DB2#}aO +z*V&gnx_c-TaJHscwXvp4rXm8ntldr|{v!l_S{FW74hnKQSV#jeEdzH?9oTdaK@fzB5wMv5c2qZVm-Hxro~SBu{C{Q46lbEb +z>wuEA6JF4UvjJcOkOF6{t83*Dgw9_Ir?;3787xJSyiXT^bhBywRHe~2f-};0IoSXU +znMi;WQNuX&2iJ7&8*kzH$RuW_(}_t=fG8+e%#%nnTiSa*)!2_DO45Bl4B9XsJ?)L9 +z0+!P+Hr}^i1&c6vYHttVH7_p4UXt*2hEhmzqE(a3z{-_hsLw$JmJb~G5unq>xbDvh +zd`ZNKn-_{5d?o3agB=&d#ODl}tHD%1e&+*v$Z}?XX7YllL3;1S1qn@;=4>Gc6&(op +z?+6M{=SbT=Dp%GzW!DdxbaM`NmU6wAN{@EbI}-e6!egMHILuBXeYAtxnQM@;VjwBP +z@xTo?gRkIY|787twLy(iHEQlA(pzr>0y}fy_DX-A`akTv{+KZw +zav%(URaR`Qn*S$+iKOfoF}&j@Z*rb1+KFYr5Q;}XcuR+3|DJa-MCkahF67MMDwi5K +zc|h%dE*pATmP6_RB*J}-nu5@avDtA86Adw;+PNJG8%DD75$pPxodK#G@uIUkop$0^ +zSTo(gz|<0-Dh+YZ$b#1o*1yW|>Xc(k04?~f&1mM3*FM{b?>$@J)xjjN?|eH=(Jyw4 +zSdVC6YoqF_#Z!RY`mT29%{MgI_FVY;+1Ji2jvL4F7@hBqAti&XU)Yv4y&t{|@Fl$am{%1$aO~|W2w7+eSe;c3v)%GYccb1~) +zyz+d7W?pa{n9AZfu`IDZ$^q!_u9PqTFt~xs(Qwb0k+qW{rjrJR0+EQfO^obAR(GHO +zo^JgY^6l(+)v(~r6ZS^o3cE8QvA4F#F%9&sA+^5o7OE9_A38}5$?V}>n`8?M{&uxd +z06@W9L)(E~7t2@wz1M~5ho$H?q$d-Ak_ +zlkCf{c`;G2Xh>?;nlF??w=)Wx?uQ0PZMYmu7Wu^2oY=-p{o`PP^dX4xQC#Q-G>y93 +z&T$_mb0P+VA{)BL#0ZqbP44ck3tv69soKBT@&0OQzJ$iDfejvx%dHfx^)ZXXsi1*Z +z4OQN&sE;cRzJyMbDJT9w3~DQgHV7oAdqgagl2QzQ`}}-1??*2|Jr+p6rQqWAokj@J +zjJZO6QFc@%>#7+C59D(T!u^?DlN*gCzThZZTr8Yfez|Ord!!C#XkZ59^8?!9Xw8=f +z;r83TN8NuK!I^S_)5U3UFfLeSyqu0wF|yIJA45_;MHG192|@aAKLZ)FPp?#%2C}lj +z05feKhWw}TRRuJ@>ipuInT?~-{O-mEiiX&-YSC?RD7cNSzqXk+`J~X0%azo$E)G-^ +zg*uM9{LWf+p`r7}g`Wp3x9)6kY~RnkNT1eMvJUGUE5M>oqOft86a=K$O1SMcM`{AM +z8P{MURg%HmngEL}!pBS3?fDeCvrYTf+W5(%9~JiT2kkBGzqEYon6Uo_f<7DPxRnvL +zTttzM>>nJU6;{5ws_2BU{--QV76yOQS8@+X$0TU>s`Z(^C*#9gn-}rCHkWAAEY!&i +zZJjH79fvjSxywHDiDa0|x~?XpK2DgO37d9sb;0UCmU@JfnP4 +zNJW>Xr0_#Qq2o8ajD<-W#p!RUHYk>rgWToMQAGVP(pZi9_R};_jAFiE-}!7wyh@rh +z4n-(c3JlpgV?SH`ktz7?HBaW9@8gdo;geGt&J?Cfg3TWS*GCT*4y-n|YT5Y)kqKNj +zc0A85w@+7XZ96iV2hc>H8L+2mf{|?}ZrgwUP`<>jz=#fJKD+z=u<#gMJZqsI0rxg6 +z3@7($a_5|vq{pHT>EI9-rt�l*^k~<3Hxn#5v&c*@BUba0(Xm_ZMj_pnE4XXL2W* +z-<285Y-kx=2{$Tot#bukZfza<@*p!@*%gOKvEV!(;zTb_%v5sm!U#A9_e&pH%FVv5t96(UP&|T$g`2KHpWe9m +z-qIbEmC2eOVat%Js{0LX!-_acI$50T@R|U}3n8&R-732c+i&a!CJCMvaq+j(3{KGM)GqdKm +znB*@Mt?LEDPAtBq)`js^1@;jnv8gB%@c-#pnEmae+d<#n`J9cRWqSyvdWFdli#Ez6RdzTII%=po!U% +zlcEce;h!hfHjx&=eOHbFM}fbP7Ku9?tEETg)jk)i!tQ>C7S1djEfP6P0$=31t?};lZZXYL>pWovQ6G31QZ6O;&+NKiz&a&GIZr +zIxjGl$u)QW#!VCRA<=+^746eB(A3RrOcs8-yLY4p +zHTFoGx9L^^hS0&uR+*w9S@=|WLWo7o0H)R7^AQ!w7vPMd;QVG)pOz3C=NEyb*}6sl +zEP;V}^M_mEyt;@-3FaTtt|YnUk!-AH2|=oToy09T?wyJIX-O<9-z~A$z&rqAUZsgJ +z@u@q*ld&ZKQ9lRYc5Pb7y7pR)kWFVQvhI^%oTJ04!ECJ{!ngaX?{x)RYc@o+eu9=% +z%uEl{3c^4H%SsAnyr6nsE<4gp3*wOXV2Wt!!q_IeQv}t89OYoxHp+3ZGpP_UmmHL4 +z+8X&Z?_mhBNQo&VBov2;eifGXPJ-w6)M2joIfnAci$UZtldh345t2}Lt168ckE3z4 +z=!>Gn!X<^;^IKJ-d)GWxm-{`2xNb=_J5W9a=q3 +z&*Hd9`F?XPnt;!zb$=e4e7N3broF=VlB2bHP~xk8r+{`R1}O;p;c$9#rf*j7On1?e +z1X10eh6j8n#m8QmbDGuV@PAg*{Ko%s^FE;;tKMX((J3@FS~x5k2NnMndLj9qbGMj? +zmDTF%KskEWd_J_rK@^rTuQNU)}ypU}&;ieST#_l_W?l&hyqQ0>L75ta@tX&wCt- +z<|%uNLr#uK_KmUm9y45)hDsemCg}EJ16@ngd~o~m-tXq>ejIRVXgKRR@{Lv{RS0^v +zdNQ_A@k8N_JzMYxtJsLz{g7ZEHVhDunh#4P1C-g`3f5xiPVAukR~n_L#HNL^^0Vti +zmY{gCTT;^Gu!)k7gOe;*fSte?xGmQgF5qdy99~?^s>zr>^FyCJSE8Bnw{;WA+GPox +z-a$p7Z!r?4?qIE$qp!`@Rve0)tT`(AnH&$hw|@$(r`WzX_J(pHo@Cy*EvZ7Gs+v)J +zuu4o1|7wnuVy4_|XV9XelohiGSDRaLL +zu;C&`i-J!CKEpd1rYW}*a;}%&-80`*{<&s>(pai_hDMqMlMD=eZN4I4t#_DZOtQYF +zGClKweZoY3`%XDRdZ@v*k@r1u%cq^Wl~Y&m>lUw|d#4Al73Lo)yu?8F#?)9o6=a7MWhR~yc8Chc +zP&8oIvgg00i%CY$T8dNjD(y!lma!sp^%T$+x%NvgX1AYWyz!(KCv@`Ky}djdjeYrq +zU(wgq^!an`6lJx-#Bd_AA#-V6)l|-#OX|Xy+)y5!0`26?3JTxgED|AIG5^n>^f!(f +zByw5AX;6?pQ{g7Y6`xq{ +zy~a(?ZFsaT3|AbG2R(PULKkHsv!i&}ADNJCNlqQN^&&ho^yb;ld@lAie}d#ev=OKn +zvw$7>d0=BhkjD};*k%9KdF{zq2i}~}l`zEY>XKP7;JpGquLR?EV_N&jY=$>K3!bA`eHnZIlqoN1}E00{#iP@ +z{o^Rfebbwcu?5)Bb*Fv$lp^z0R+z5(>)8nv)TAul>w)($DxRz6p^Ik9ax!o+iYJlUB&Tyv;V(r?GHDO8$UUY$6-SL)j% +z5RvUF5_x_t#`x%#`R-|Uz?XSKDSkJLB9lZ5_G44bX{Z($ky15SxVm?~dYOn@FBmmJ +z%wQ}*9`5YLG-%K7Zahqwn#E7roNBw8qg|D9Hny{#5sINZZc)3=7xv$CCv?j*#ZF}B +z2%HQ-w=b4wTgFv$p=4=8fzsi&65?4RE)kv$!0S&f{wcF~7TS)#b0;h1Iz=Hoy)g-j +z-=(qDU_A&=zV*5(X_VrGCzZ|+deZjnx(p7{8+U-n)ZkZ(+M>{l&F)A99{%r@02Yp1 +z?8U3S&z|1%ESDu?|DslycOS`<$xeF9d`t#P149T7TrJ%sb~x}x_`LA^(_>DzYg0OG +zId$FGLa$`oOr?L!S}&W$^)V#Cy2bXj3=+G$pM+SHB&^+Cz6j61H?8YuR$Q>Q@3X_( +zrAxPpXN#5Nc-Pl2V@Cb)vWhRapkU=RHwMqwXpQEZhPDZO3mh2vP?7;3+Y1JBe3 +zhk4OLYYI59ymyxgDXuXKqA4+uI1BbQ$EROoZAQT`d0RHs_ox>_B^c9VuaAxEMNj-A9#gJoo +zCGyCo^+J9d^=-Mn2n~GeFKdAAbi%WLmoDTG*u}*a59%r*9v++vB(luxHF>e6#|QVb +zhpQ8Jz%#_^%(q}#}m-a?HfB{d|GI_j2^yss}3Dl +zXe#IzCRww6s5{p;HkCJy?{zdBarO}7#57!*Dx0^oHqkQ8kH85nHLuptxc&v8Q%IlK +zk5zQHyXFTb4LKJS51AsIRhc140r$%`S=!x>m&X_IQ_zv!QsJ0a%OfQ9zSm@8QqgAp +z{W0H)R1socMd~SPno=1TD&!lEl6qx!kD6kxdfqP!b$RC;UHI!X&}+2hy&8Xr3gT6} +z`SLT7mT94GGbzZ6j>3c-hx>Z=xN!L1GAVcq8pZq3{qZnPk(Pj?AXpZQyyjr3IYIxu +z>Wa;Wx2Fn3$IRQFEbE)zO*fVfM +zp7@?Nd49aH{SsFaB;Al0jD91s*Q@4l5bk!D2&D7O4G#oO_SksscAPxU2tK+D2CTF +zRYDpC7%7$j5Dn=z#~V943wj*C3KbA*FT7V4bb1Xzdw%~r!7e^Wdp6*Owq`65TwIa@ +z=CY#|azM5n)5M+lg|3p$(D--H(7-N`T+f9U90)Vz!w=qxFynlnJB+#zx0(;JGd}d* +z)C+ew2rlJ#KRUK2LFp*$haq$J`Q-7}u;R3*##48=KIpWoc6}O!Qs{&WJk+Y2xV +z1~1v&xfG0~h()!cVrwdtfXZ*RN09*C8(9Ng4(0hn*B>Et)wuD}&MOY+Vzb|w8*q*$ob9gAj?gU=aK#1 +z?r*0ga(4ZOed`@N_Mw57bJuM5Z-0jL3xX0~mVyEOIiHLJA&{^&L2VA1`XbCuMz)MPDXe}%cSr(VQyPr*k~HBJkR3RPA6m2SjC +zPHsR}M7Rl_(*Zc!tJEF2kQ%K<0m>)A&^NZdDJpW5xb1t68_*@8BCba?q(3r~r-IRE +z>wSbC;82a$uTSXc0jpBf2?gT@+;xAnwE%z!W(tVT!+@o6D}w#Xe&JJY8GOVk&c5ox(oqz +zGy-hRQR}*DyWjMkIT(d|dvUFIn8$p_VWUSodzV}gh>bY$?^NpcP?id6QnaCGE-`Wj +zZ+NkDFV9AsCTFBAC4wN-ikU}%zb0s2_L}F7I-C`2KT>p+A?I+uJB%Zz>ugy$dVE^0k_otl5ESs19eiloxkXBMI*hG1_C7$RovB +zBGX>ZL}0(Qv+p&GZ;c06=H(^jQ7zOHOXa))D{J-=?Ja+>ldrd^V4l~biw$>1{=x;q +zvhYa;vjC`~`W;74(xOGofXrP~{P&!ERULe|yFa))a$F8)na~aE7hGuTS%k?9RwivT +zT!}o?({>Um`{eR1DF2FLUWAl7r_Aoh&`J_DYQg(yYH{;)t@ICarS_I~T!8jF?*uHu +zp`u9s_qqf?+T1VbGp?Y0)+QjBg4WI~0hYq30f0 +z-oy`~bYy~yE=0#@%g-+{o}8!)%9>J`_NEN&dGXb?Qga=GFhZ+mtlyXG$bb?EwXP2H +z1ydW7>B8}D+k5roBI)0^xpxnLdMciZBY*7f5@IFa2Ye}WAUC!?sWCmEn5q}I+&S$8 +z#qn91?=8(OI>{fge8iZhdp#E4yT`lz`|GvBMo;QvHULDrRVSPw5smu^rDoD7oU53!W|NR)q +zvJk4EgF=$k`h1&|Q8{ENj|V^bZb};)8&BnjBTbdYs_oR;$rzE}fPc2HMax!>6}tu{ +z;6|ROM7lVTz{=9D_PjhseKz%M+V4z;>6hCIG*=ooTX}6fxG~_Wgm4Zr&>Eclsk5LY +z*XqtMot-G3I1F9UG%$Np?DKhBI1Ek#);Y|djshiOX4m+`zGr=%aK+Zm)yLMXD8is^ +zxu~dgdInW3)ISezE?uV>DX~$i_u>>SY(JXrrt?`qiYX3N)ARKKIq*s$C^%2tF-0n| +zTHAyD*f0^3xEdCrs6H>GvMgPI5?SHHt5M}ZwUV(z8#d@cKg?{x5X#msE#EWB_NE~} +zn$;M*uoxuG5vew~e(C`FP5Mrn`E|<5K!*CNDEq^L7}?PpLgzT4$Zm|jSP%oUa&{C4 +zyG?V90FOqE(K +zBgA1t#fD7zw4P&vs2W>EPBt-Qz}ZWYtMBIj +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 +z<9<_9>*ber{WLt5iR5#y8?xnRzS!ssQjm!G +z>Hko|l#jE`S;wM26-gvSJYWz-oY{!@xb&7vNJREHE4VK^p#KGohPzBmbW)FJ^7vQ- +z3kgO2ayLjfCGw><5fg6Q6Fn~b5Ebga;wh-6^2-*D{B8$kP(LG>`Fb;$}MZBrNn4_>SK$GA#RZF#|OxEl`JTrxXa>^XYdRAdf#1{@BFw` +zcM~EF4LKzE-aHHa_YhMD;C8)ZcndV$>F4pO7Up#5PCf8*wrO@^~% +z2@huur={rVMb+3Ykus`;pqw-^O!#h(xd}RX3!xv*%NY67R-#%wrx#ewaV&*}U<^#q +zdv0bQyJm-p(1iFIdK8Ai4{q6|6ZxMSTH5migUZ&>o4f?{T#TKm6M6ULRZO2T4nm5twC3Y$)lv<*`nH;*2s7vJE}SJWN@USt6$^x}SktjI`%P@D +zP}t*Jou+oH)g_Wkn9%6kzZiPg>K|Jk%U|^KSL1AYN1m&)m0}5W*+{!fhvdOPgL>`R4vXBDv|`P+P1Tuz| +zc`4BQeJ=D!4@>b}j!XO5$Y(xJsv#W9Mg%f;<&>D}6iKtg^P0&#my>Ldn{zOv?J0er +zqE%Gy%^OIaXr=@n*qL8*+oou7p&~#(faivi5vj!br)@ +zqj@)0@zSyv_N1 +zjHJcd(}KT2vNxxr>QC?P7uh1zwB`C_&;MIbT~c++0fn8zc=uyJ|_fioGA!LLf5o293Q!o*Tj +zX>BY_H_UJG_qOe&&mG9jj%reKvZw7cCNXc9 +zb|eNv^y^X{Jo@$A)sp#B{l^{V{08>|*Lo*jU}5TE#apWFM+0HVY&S1wl#t=Wp+u7_ +zkZu%MP+$Z0AO8_z)Rg_z(D1P}e}a&eTpSM@&(Y~RJ<~^4x59xPSGH@`jmgt2k-8G +zOCO6sTh0Nv?8DZGvYKY-qJ^9)uvt>lwQmo^rPP=pnz!A@ZWa_cCH*2YQJq}zNU(t +z^#C|Orra1e_`?X=G;W{sTjTPf$%GW<|F4X)47+Mh#8f_o4Ek$A;V2Mq}vNI +zRaI>Flvm;&0L5-@ZqLc*+1)2ih878(4|E`X~Qdcy+yX$d6^9o+fAZ1yb>lWO0J +zJDFFX=G=qD0>)!)Bcss2pY=1>z`gIM03m8B;QdR+Zsr0egV84|&C&CLZDeqOOfr$! +zpSimsnF&|V=fT;<7fh~6V(4hGf$H-!1&$g1fR4c5>1mzhKs+ZvHT!>LeRW(_P1p88 +z1QY~C0j0a7lnzNny1S*j4@gKDNGJ^l>F#bh2q;J%$wMO`AkrY+@XhAFpXdF(@ArrQ +z$eF!ouUT=eYpt1aqdX7!es=U~(=a0}r!y=|4Qfq$b;6q)9}im7G)F*s*s+j65rm2T +z_auq0roP5y?r59$etdM*iQ1VKPq|Z{b+zQTs7-xvy&Bup8wcO=#KXxfqmRTGzYkX0 +zE^GZoE%ELjr~)XOwzkw??fK^i1L$zPE{1c9K3KUmQ6nX5{#_SUQPECDZnVhlvOBmz +zusXuXP-Xa`p5b7I2rlEottqN!{8@u8MQuq}5TnOpf +zZjp;7Nf+y&L0P9Bl)+vKCDN@?x0XNq>_*obYH5YI%E`JM=}C`x+z?cB6uNBlCfe*MRW_oPVRuWYTs4$<40l%9t{ +zUAR6?p<*EWh`U4O+=%amvy8cparg99QRRcqwN*hQlYW4U+4&7{6-cBQP-fMB_Xwv| +z4cG_=ha50|$?HN~$IQ2k_P>ar`mkD}t-WfV(UGUCO$PPjpqNYF8E!uCcMj@fSh-wEr^Yd#Vh^Q--^Vi~Hj0?heOc%FH)wq|Q|TZ}zbZfY@Cn!nY!0<<+~{ +zkq<<@xuxIYpitLoxkIv8KBn=8f@+=1$=^AL$Ph$FtGQ0Ap%B%tBLnT3A=c#~qsTi_ +z@aI?_Rj<2cU)-1bPcOhCQ_stzi8-}xxR2`QAP)1o{TXJc>_rIr +z!RqkIK_Vi@W8E{$Ps^=nEQ#@9tV}v~8WPws0-!T_D4|{fOfSybgD*Yc>RVcZ0Ll$I +zbqy^oh`;W}#QDT&P%cfP2BS*f{`+^+2xK$S-=|Gr_ke*HsE$JfY#80_(z|5>pH#y9 +z><3z*zYgm3K%31Hp)>sXJ^g3@GN@lMSP;=lKdX$W)PI5HniW)gp9;Mo~KI;G)m@Y +zt3ny$`3&9s;6QySGYKQpuiZ*OcgxM+qk9T=0b6nCKLcDa@A|}3fE-@RiAv7cdSK#1=EpuMcFRi7GvkqcYurng0V8Z(8$3*TR +zlYl+K^I!rjt#hlF$#>|Q%mT5YofDU!)d7H+=*<{)C1kVFXOg+e!5cCOiI%}1?$A|x +zq$~`nD74gSkEVfMNcDFLMl-{e`zHuPNj=WasBReIQH$WpQb3J$1O6k +z6jSq#fAS;Yv_~BLlHkop^G> +z(BbP#d>qV-G1h8me*<0dg9XalxCmc!^H_3`dfCbZQewpS&HgH`d;n@;E_Io&NkI@| +zM^Ke$hU`7iRhKgM7sIJ@R+%p|`uY(VGza~ut;ex}Zqe;|p+m!Iwj8>p;W`_T7ofZRRO`w)V#Qg~A))8PN8 +z=i4F)VvTrjrA+1qEi%hyKABHunY41abqERbxNY`ic_(j5ryQ!ubSS3EgZKpYd89cO +z^?YL0@Y?%JyA(;K^f&K81*Y!eegg$4z!VEH2l3$oW*5pS&FTejz7vIdYXh~uKBn2` +zNdVnB;G^)_ +z6DT2f-dgyrp`#7s)$8#UEq8`vYn=?U|W)vAvZ>_2Awz;h4WYU!M +zD_m^eeDXhu3Z}2{y)-CM+)~@0)H3`M7c40>0-TnqpwZS^w73A@@@$t+1 +zJM)?$is*o4)fsS)S;OW2n4wUt7nvS*td&Ac8L&CaIIaXeT_zF8KLjaD){pm?Wrw*s +zhcp?bEoA+>$t3iiVtL8;e>R!yu}f#0j;@tgJEKUTD(>I1D6LfR4f9fIFb_CeuZz81x1rp2MrEGz&>MwT^JN~I%`MN_6+&>UZWh1iU +z(h<}7s@j+=$S0_itn0_xnu|xs3HNqoC(8xf`^r*;+G={_KQakrNIgl0HsXOC8I_cD +zee3Tvpt)2g$uUbT68SuN6%w@9zvo}Nt@~B}n?Jg+R=~#bp2&M;f=<5b)9U_DpcD)I +za4cntl*I$A2L}2*Y#;8s=QXDxP7l#W>fFFVVNQpE@Pp!D7hr)r)E*T!$9qd{MBt8~gO1_;3TwTPZnBJF4F7Wx)3H;4VBP<87SK5bVl@U}Svbv5r +zr1q{?4=SfMmER5X`HSIJ@m{_>!`y|^GkPQEHks~i_J&BK9aok +z*egh=NJ=d%QNFP)Iyrs&^9WpW|HKg2g-{oR0ja=I=Jof5e*@S^m8TS2Lr2RU*H{{E +z0V6&wHzo)_Z^=_zKU%y+Yb|IHt-=tr;{GDPMn +zwVW5>|K7vV$n*@GJ4x|}9x^WGvH6kP7^hSsDIrHM!pT#F%=t5WeZ|iLn*854X?=*_ +zzL|5xb7p=O@!@n^SItQh!<&U{1w;>;7|DL1I_iuFSKN#E-$9|L3LBg){+rBbbzQISIbgL +zk8~-5YVlyCIP@oM9dqWTxBe}mgKHnLk0Y3#sc1kwD{>LjVD};u*uALogzkjJMPx3> +z$+%f@za#vk{|aLm_H6`YNl_8~SwO@f`G`g5-=M#e#x>{`!bZgEFQSyRJlUC-s7pv&yeL{tQYl +zKBDcR&OvHv`h{npu6$zJ)npf~8IWS$uS_DBMW=Rxem +z4`ARR9r1hP{38M*7vx@_v!pvh-^tQnwKLqv9{kw9HFVX^z*K?vm!U?sQ+KfYElwhT +zfEY<*>Vvy{bk91xeqP@It@z~jqrdjO1jh!V{$%A$#MmjRC3)hEH~nbku70!5NFuc- +z433lsdu87|{B}aKukt06UTXJ$_C#bT(yAA`e1&~vx@WRE8UKqCC-BfHO{RmwSM2#) +z#`uw&v}s?V-Gwv3FUFNUgKVnU^CV)Db+*m2*B3c804b^%qk&HexPKdh(Vw2Yw+Zj0xD-p@k!KN*8P +zhpe>Ra-Fe%K!RXw)RZ)(Q^s)gQp7Shgz8ayS6tE)JGWcEp@xBXUizSN=Cy#~{EBj6 +z?VZyjgVMA8E&onHSg~>{g$&!_`?WZU!tyTv{Y*6rcQPL?s}sKX!cig+R2G!foH~E``ROaYhIc +zI*$@%uJm3;Hl0RP6+IaizgS1-JtqEyab3EC?ak18x*;4QJkOhEav!%749(rPlnf7< +z8j^m`Tvuu^3;V+qRuDp0KqQ%a`7%6n^lLR4(L3Mz+4S +z_7>>EK6mJ&XgWUIP2IQ2Yx1ZPRol?JH=LxfJKlyRankdWB|tgt&nptNwSm;+-7%%D +zrsKR(PNO2zh0fxf8s2Wg*S}ZLEiG?e2hRA+1qqfp#nqS$d1r>GOyfnG@li(68FEI- +z3i!?uRhmg`(oP +z)P#Hiey8=1^jXKY&Ruuv-=#WE +zv)7Kv#^}Bm{tVtbUg@(G?`8E;XxMFd{nN#{vRe5jW-JAPgaIF~)=G8LltX#>U`&nD +z&|=Jt6PhOf7I|L72a>`qi3?gBbu~o}@#tBejJG6c;lrN@qt`s)=O8w2E~r<79-VC?|yBopf!u78X{1vt$!i8lsWwm&N_gC(H6+ +zIEhi=NCHFF)dcJaF)r)1A7e7#HS8g2yAn}`HD`CO3r5sTPs+pOX{Bm`;975)XCm{+ +z!n!JTl)g9?1uqNGo9|VQ2F&T+d15}Nj*ftKix4r6gXi|o8m1&9m#37RSukH8c#g0v +zG;j*V#giwx!N>XlHzf-Z8)h6m|0GDo?pVU~{GN)<_=I)+x`x%%U1}B>>%s?cJb{Sv +z(vQS!N^p<{_?O-#qY6TypV~$?n9@x*j>W#7krE@q4Ij3W`gtTP1+Hyx3}ewmqYgdW +z!{27^k~yKHiMnmf%ELRSTM4skqOFvKa@4X(l($ZYn<^qfXZ;pI4qc>(3}cWVQ7G2$ +zeLfO7q&`QBh@&QI=qr73aoK1X7T)mMa<)h7uWxc6@iOS$c6WF;de}UM!Oc*M6V?m5 +zR2299Tk}J}oP31~^0|5~Z-Zs)we9vcE#qW&E&QDrm{z&q$2xs*vgR{an6D}3U4<(@ +z{)A$Mo|#L<((lx6BgQM@kI^NP)sIWjy%PC>kzb}*;cjO)YHu$tQe@+Y%vKpv& +zH5VL|{h_n<9;C +z1Uav4y2EslN}W^q!s-&E(d@8cf>GS829=6(6&hnX@JosmvFBQ$#Ai7WJOgut?1T!J +z7e3=0zd(_c8Xz^Fc7|&lR&gJ&VygEpT|OZpy1({C$Q|+mV*(DU>?E_c$vBb|F=lpV +zMS7$I@{pdde+YL^750B#W>rF9=i$fR7w-P_TSl7E7hOJZw~D58PzpPnRMG>;_PBKK +zbh>3($r;O`+a9MQ?^CsJ8A^n?H&%}{{bFe^iArk1_l{|1EPOVkUrWK_Yq8JAr_UeI +z?1qO6_wn|=yKrs!MsQmuPe;T^L7~R}O(pDit-ZGW#Nzkw!1I2`t&+QYT^>3SLt +zO=-NamX8*qY?5N|j|%+>?-PXRB9WL2&RZVy`G?4YV!G$VqZF +z7&i(|h#S&Mu0YI{b0BBqta5N2^VU!xDt%|ntp|D@!=-h+L{c1*IxM1@N~=RHyw +za!&*ZV%m0mQW0&Hv-2(26srmqbvbZ^LnLd-{F|B7Xab3ApHrxa@9!bdwuPC6{0c+4 +zG1&6@phVIcQBs&GiMr1oHMKAp_1K)nAdqPIL}js(IlW}Jyy1Cz^I@7NID!62{Z4Dr +zJS3dCk+2UtaKa$GK)AKS!K29c;Xj7Dh%riUjN^Xy+Z8GQlBHCvQ~aujXtBEF25X6d +zX=atXd#&yMs$kg+gKgc|nC>`7z3haZ!x(lB9?FeHygYcv4e$4^z+|+nO+}77LurC0 +z`4~;5E}$3mvJb)ili3d+#-+AJOh^><9G`_Or}>>MkL<4z-weL}QfR|ANpLXp-q`*q +zQcQXOaVi$fqBB=+>Rammp>6h+$!`Z={Up9sHl=Ej^ +zU3gE_o$s@GODfUV*4gPC)y~fw9soB^iWC}l^c3jz7sz=z8@Vh?9!9mCs$)DzPA*_K +zJY3j=TAB@&6`e-)Xqp(1FWtm;mPOJ&*wLHD^EFV;XPa1oF?_PrTSXXTy*V?(dZUCJ +zgqbgolp11-@oeV{q5QD2zm$eH;A$>V)5v2H5I1>TNrfRRO@JDz*k0iCS=DT6HhoJ* +z@Psa@im`XNLmxNcgPVui>!(8Lw~=vZFz;pTW|{B5y<*gnCh +zemJ*YO!BGstt>A3>@=VLKJG*l4W=@RG0OzhimO492P@^iY=aRH4b~`w{x8Q +zfuT2gn8DWl=iBv}W+OIgFA3&bR3+Is1d7_)Fv{&?5o^8KX5q_8`w>-x(-BMQI1bwa +z{=CUW432ytC|34vvh>_-N3lZLm^0&YZLy<_H~uZp6;oJHbFyZd8IHh#XsH^O;G+^c +zUH4Hj&C~0ST^v8QGTBv}fZLY6o8OiTtj^8Xa0iPl1(26XIXn!aY~9pjH2&o}Dx!N) +zWUH&ZW;+%_$H&+?>?+!b4zR~0f||ErF~p`NUFC9U93YXFX3e!ow^bIj9xNl_Tm!_>Fa?F{8Q!{d=i8%JVJ*(meId%3tq3q`?)4kiTiu|&3T8QrN +z58UjG<59!wf*D`>Z;V%Kg)4cequjEbyk-95Zp&0f+)n0y(xOSH&~`3Hi%XFFfF14OzItyteS7lrC;7fYv1}G-=6ssyJqmoA#-3CWkGY%7EDvsccipFt;anSA +z@}ku8QLl={SblaPk?pzeC$o=V8>7j#LMF#H$=j8&<92Q}NJr`M&gsi}`(cOhiyefuh32CjNWO0R7)g9^%??og*Lk-D5;O7(!aq +z{KrbV)l^O$+<7!_?JG!RH%*jY#rRhBGpy?wA*&nOe|m4s>b%wn6VAnkzI?J5^;|LO +zyRG!2&A#*t&0Xgf(FnFvd7oKUl}%gbaCK$=(>csU29j_)oe}u5NYSb-vxMdzqZ!(=Qf^P{r>ul0_G{cikl#eX_#+w(AsyV`W&M?7jd3c7Pn`bjGg${ +zI>O(-Uv$U9nwg$n_}3biv_Vf;`Q^E4P+PQoI6X0m$vJX%O-qm{U@o{V%b{CBrV+k( +zqFze_p9yUVVAC +zEf-?*eAg7=@UFSR;%TLgW^cGjn#H)T&f%i2N#gdeLm%SfFRDj&YJ-T%_41D+`pU1G +zmL(DZ7RiJ{e^COx&+(ajstKirMGed9P|U*WdwNq`-z$$V@=dimv-QzxZ# +zK82yzJgjtc6|Z_Z%qM~;(53sLu$dz+X{9kU3`&=!@;bkY=krQoL +z&!4z%H6b^qW+Qf2^BI*kX19p;SNkI2G_idAI`*Aur8_5Nj4OU}IIqe9APp +z>=3z-kWgPN&d16pn<-cLzK-(LY*E2Ch~D2%yP?)YPfc|wGRM>D?(MG+dJvp}(9?G& +zc8m;jKj`4pBB$T(t&XXX|p8o94myHJvJB|78<}X +zx%U@~$gwSxuj_^aqo0iWbTsGnC^E0ib-I&=5oaTnQjxyg1w}|QVY1QWb{=g_#?w=q +zk|~@C&6jH?Yf0&6@2ap;nMlG{TVqv5`))4?dFMPE!ihmL3lR^cbAmy^9#;9h3eWO{0HCCV;WCm3MNE7jdy|C` +zJXSZsG0o5rOUg`eMt2(~LBV2xd;sBEhcumCr?Qb=PZZa?4YczwiC%DJa_Xx;i2(Z# +zfwPQ^Tv~5VHu*KKuz=FNtDtzr2iuyF&*R1IOMjMsrYZ09rsBZvwjEIQZTTKX +znq0v?r5xxP{r_uenk0GOyv|IjZ2SNzlSXBimK0kB?HyW +zqjvweYHtUg2%a+ch!SR{*`X;^seiBjeeKBAQ`UBG6Ixl=b|BSD*XA@M3GhE}Zg=we +z9=SOBu5rl4IMxSv-*sV`XlOw0b&xA{f}0CM+kPN8%YNim0ga9z<%Dq$j#ktu7Z28? +znr^HQNa#&WAZ<4ddyy-7*QGHDYFdiqmp~?xG3zXh3xh2S9yqMbe|hYkaJ|ODr!Fr+ +zSj$fMHjF`CCEv$5F8hNv&?}~*1Fpf4=X8@bKDFR9yy)jTnq3>)43C&-7Jo0=&i18F +zo}8@ZWy4^B5$0BS405^ZE65rBmqiBoS3yYozQ*)NyWVl4;XH!dqnA0c@Xq;m;msPf +zVCjvU``x3Z$ltq{CK#~5nvOJ%CZF?^yj=%)xNuIqbJ!8j%5g@aYcyCY2{ip;kulLAAQdjJ}E6&~*6*oKW( +zgTW+D)#`p_ysCRe1lBR0VyJ^q@FfjZMiM78FYA@w1Y>UVND=K6O06nA66MX<(cMIHSZ`kabT>Us5b +z)oq?!AFEF?ZC5^}ioS{?p+s7YBS|A$$domu;+r+#Z_;PoBcDu6+$6u3$i>9EerPYB +zE@oF$E>FgB+Ut8O{xbY@!lD_2pVwuQ`ojB5ngLYG0L~iJP69-{z7|ceb +zhonXUj3pi^$^bCGFwd9wd|O>K?Qg5))LQvk4^Q7f^@sZkBs_|)UK(6Y!|>~15k0^B +z&U}iS+nSHs+v{Qv=e?S+heWZpwyjlb0+Ajfm(2+&CyqS#L=ewKf$27!pW1I(rzb)h +zJ>U6*1TOn_ShZ4xxcvHl7$mD(=qf%(ITa4M<-7)U6xZPGS?~NZQl964WKvlk@1j6h +z+O|sHPmBOxJNdo}i*gi*lVT8+R}GWkPKnKSr`mK9Uym`oN&RZgzTEcU@0^eSV$ZwC +z@E?zC|0tpffxb*te7tc}gN3+kGkau_GyY0Oe?O^28mSetWz}Wfr2gWeHyF9~`6*|; +z$lLv{d-4t_2oa +z62&n)fveMv`@>IfuN+Cfh5y*@WL_kd75^q70cf_L@LMq09qJwu218w3t^?c05L&cQ +zH~>=rQ59dyUr;OOE&Fu|4UX#{QPs&OjAcfxykN4^(HX5TCpo(~ta6-!%+AFkjzczV +zwAB)hcz*a&4M1TEgvA8mg!SSodpXBeUIstohUwOqoiHd<4lgTEb@KNgN_#t;kQ$qv +zkmj#{>bc2Fi3NjEkfz7c+J1?7`8?k0$^8L$XaVT-$`GOkPFzD9)w{eRg|~e-8kXSg +zq}DdOlL$TD9}de%kR{p(gOv}t&0`RyY07%`NhdPAXQ;s3NO%+y27^LXA8ORQ9BXe< +zM$Ip-2IsiRxb)R846Jki@K1tjB&aYXgTW9WL$5?C(=ph;Ow@pI)7cviyE&2c;>w%O +zA_COonVN`(732cOL3X{L3?!2Maw|t1uaKUJ_3jNDL%C3pv91WhV88wzS=>r(wMGeK +z>+_5T)$~E}v4%oH2<2;c97>S-X)n0x;HNwCRo9)Sv-Rp2UF~5lK?d)tYCfCavXC?V +z8m(5Bfj)9L?wiWrh45(BCV@vlQ9|14ifVt3xI=(ee6zS8aExye2$|7qT`}eHejs=$4S3QUnj-&Jt&)C$+5Hb!1D>HIrCAL +zkbMh2QKo-G2#MSzGJMbGH!K1BQy(TQlvhyU?Rm^)dxr6P9F9+NQq6zq6JbLK`{zo@ +zdFv@D%HEv9v!@1iHoz9IOqL+r^4X&v>ev9FH6?qtxmVtipnF@jl1g}@G*)E)8@W!& +zK>XA9HmE!$4wDypY8|A8#!isR2tMf{d2m1O&Hb_Ed1A@ZM-Y|8+F$ymU9?6}rDtsz +zM`!bA;nqj$a-7Q}8MRuAG|4y)7%T_q6}_c}oL*%7N+qdYk}0GjLv3QBPl}&ce|&Pb +zzS}=my1P_d@OivzH`=St(cVxk8jwg=?i2_3r<{)&L|;DlAicb+5s<40HB&flX+#i-SXc?E@ZKH#V&F8`VhoQ?T3rjbkeE+-G_L3hV%WUY#G5#xs*QnMzR_F| +zJDCz7m3;Tw3I7!cU#|LYWO$Vqq0I31C|aM>cpZky5*DM>t{)^Yn0jJEg6OXsS?ch@ +zS$!X*On!P?ZY;#pKYOq|B$3a!gbW-d#Ty(R$jGO9rHUo$vs^RR7QQHPN(@-_nc1`V +zRkvV)!_UC$fkVFKW;Y;51@Y2|lU!y|sABI%ma877t_~LF?b>V% +z3oyiE&4#~N0JWlL)@m5Dl7tLpUg`3afxJHX8%4hDv#3J2gM +ze&9IEBn@K-+;vy6qh0UhUtFol!yb~H@Cu^lFV7P+fKMc1{tRz@lcxWxLjBj0>!UjZ +zl;UTZ{+=URJHAbM3p50sDPCDu2Kj5e8q1cEshw(ft#V;n*gwkPEhM!F;la{-^pBvc#VT6A_A1qC4iN=z8+RqV0KP#}NUWSFs5 +zaWU1wis@D2?Zh_f2(k)8v`}*epu~;%+;Tt)Aug?eyC&k2@y`srUQ127>AP_*XJS>m +z@uDDc6`Xup4c4(elA-mp5Jq8G0qApiwq_EanrttO+sp(wl_$(HbE;ie22EpCN8>2% +zD7`dn)A!U^6oRC1&FH7nD5Sk!^V8$JYKj-_Z?GV|BIdJ1iB|i|M-cq9>13bhYToxO +z@rLw=wf9!fk;qz?O2!Cwtf)F=&$Zvjj7iS9lRwZKQ*|q=YT0|kPvfQv^Il$FTp=B2 +zv$uvhq6Sszx0bsxIPo6JPq^RQ(CB;0}#Mi +zfi3#CXQPtLn;ZcFr(s{`X4@;*b_YZgLJ+&h*2nm6`|M{h>iqx+CPM%6oUdNiovljC +zRJdQV6yUb8aH`T&YJVGH-0xRfPh^S5{oH*m`T`zhgU~v11u)z&vvr0RU*oe|Gq(&sCR=gneMdyu)U! +zlR7zKh;cu|0Ru)uTq()P9m6q!daLjMQKR$Lw#|*?Ki6b+@_pexO3(Pp-$N)fShMxeh4aW;rjq1BM@blLNwCnmz)wO!#_uF8)$NI9(7JdIMzl4nbf +z*;%hel^Mp^yM~fbFKVtjzeoOd4nWshgY&*bJU@ZC3sMlo$03p+phf`v!pHm7#EniZ +zWsQxJFM);0>f}-Sa)_BN|`EPuR +zhBJre^vL>R=wK@aZNYu?2R>iwDwnRLngZF*J-9}NWKSbmWfAp4c!0_IM^&M +zw}ap&D6T5Xbjuz~OaJo)03V<-fi`YFK|E1`kKJp^oyn{IUfNuzEztWZbIQ3nG1mR= +z$0{sXVBFJ*H=KpFF2~h60eO)A`ZNyvx+aqNva|U`=+-$JKv=k0#5ShLa|^-He#^S& +z`jzjZ=pljY)mdCBlwK^VD4pDcl#!Q7!Tb-&guBv`O|?LJfN{cYQmF2<%M=6i4hs5L +zwvwF4FC!SGoB(}VAf8v*at6XdbSq#FpClZOsBiT_!PEFbO9ezI1HANJ32X`a_Lkj{5oCAD`lz`U&oPr=AKqc`glb2F!`{^5E#;(~ +zq$Xd+%8~+6-RIX~5Kk%$ZaT`kI37|U<8w>` +z#dXC_IXsMVo!he>30JXP;fDi8a|bwxogBXFoV;gX1yqW5C%vlABiz??Uy9 +z6{D0zlt5XIzR=S7K1Gs<$kbIp2Obs{T*04Ft5;Xm*E4$MoCw&vs~FZO>ifL8bC`>> +zi}+Iur$IF(P5-kh03pktU8~qHC||Jv?2qSvDDsaMeww&O(GkGADt?i#cG-3d#8(CY +zfO17^YPt&dW>EBiD@!wQ9tqdTw*$CyMUWM>=$RY=at~mD*C@UPjIN0TRxBs^o}sX* +zWG0DV$*m*37Vi!HUNT`#=jJ0b)O}rTIIOPQ~~dB04H_Zb;~d +z$TC~4eg8x>b!QkG?JE3ZYP^6LkA%f)N;uY18mGe1AmDPp{9nb8#9LcFFUjvDKS +z{2XSZC2ojlp?qu_-m(zd`>xf`kEADy=ZD1=Ip5)NaWAIo`rtX2x0qls?i=EtUh^M$ +zr}|&4F`XwdO2dX;GwK1Dm~VF8&0*QsOa-At;(t(Lj9_V36}wQ%4{dB1P0-)Bq&C_6 +z7^N@e`>Lxw>L{Zfg+2i-sRadeeXfxfkQC%qGbp;7XM_4Z%}Z^>`;VmP#RTH%!>QSa +zWTBrRZ>104xPLDL(}``^v4v%rOK}Mn=*2r_C+1qN{PW%*6{2j(tAHMZTv{XlZgC?G5|og4A2(uU7@;C>w^4Lag+Bd%F)X +zqrz$uD$FoN7FfeWkopf`^keO(EJpE(DJ)Fz-j{e-O<$$bKe|HxX7aD?v-G6CSeIUW +zeEs8JZ+qBS20+0tZvl=Bx;$;!;S)%{n);(^tmO=YHTW9GJ~Ai^3p~LP0H>bMy>2ZJ +ziEgb%P+zEurwM6<QrKgYbwP +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 +zmzN7l3$DaY`3;Euc@s7I6f{53@fdq +zF=$HR^T_ZMdYPxzb%_&6dcQTJ|9Pw=SQpDzcLs6p6|oq)xSUrFJG<2}T~=s||IW$! +z5pT}AH1A;KAdCYP8SJru$+A+v-=_`2Be0B;d298@_D|3VvVt{_3GE$4;f}0~11=*+ +z0GJ}{Qd@->MWc?nc=)mgv_>7)_Gc-Ey`(zXt|D(IZG~^&-6~;E<@=h8apl%(?pxvo +z#_icErYjc=U&p;q@x#&^>EKysl`vLxRvIL#B_dEamagx|XpI#9!$`4G!8JBPTrDNZ7}(aJ1T$so6nk%jAYbYDie%9GUJ>tHY={`B +zDHi4eRY2^IRyiqq03oeH>we(Oe?%YI=L-v=5@91t?$H{vY +zg^YpBxu07q#@{=%od-2I;1q}mqaRjjZO;asY?b?aE65r=*S7nOh^qS(_P(w`Q0IO! +zv{-kzfVfC=x$}BLM~FC&Qi>PfWu=oW=Z`I}Aj|#jUurgX>e!#11db|jj3wR-_1b$` +zc=;a}cIP%U*4pIRDU0Di(f+%vmbhgudQr0Dk*yIKE%DOHq`C|>JofG^7db~BcRuu0 +z)bIkP-UXV9P>rTdAfTu}MdX&`iq_UdD)=>@>_<5UmlcljwKxoLG0G9rZ{G>VbA!KL +z0qqd5?O)5*Fw#=Zhel%tYswyLnqXPT__1njrQ-RZI$(LgR+6F7ZvEZ!-i@fKXZ#d^ +zs+QRr8f-M1w1lGN*EuL!{=fFVG_I*@YyVhlxvdJf*IN|@ye%TisEiT_P^}`f$~|;!OuHfQQ|8|^a$csS9^2iOi9|gwWhdRL_2aN`Qz(EDYMnH{d{@1VhNX`Wwi8b +z82mp;_pW|V&1?M0?g$R`q}Fj*=IN`&ZpHb5-&ce|LVrTjveLh@z_LppiTyWv1fvZ^Uw>b~@_lx|ElJgr6_V}RfcdEg) +z`h2O`z9)AYf(`YJS)&!Sl5@o~rD135+6U5ocNY60I^Q1jFqVB@(chI$ek@$-ULdI% +zcVLEZWJC`-I+v{QpOGqPmE#%tlV10BJnGIli1>^Ww7=?nln_FHrC^SRrUrk#o*P5Y +z2X#qV7Xy~OqK}_S{CNFSx}lUQ=IzUu;EefKYLKYh^}?Bgg?E-;rIdFOKV3Dn0n=aAeNDlr|23Sziqv_7%E#D(!np>T>Z`2 +z+!<4a(Kf*CAkWebm{;IoKmx|sO~7ZFui#nXYvzgs5dE@jK|Kihx%)72{~ +zlzG^JkVdz8VF2Olv;XcmT>9d`irPac51Mkm=V*5n^n$6q8e|t+Bk*vC7$!wB0jpu) +z=CY6b0*w(Hy6q7i6$LYXy*BP8KUc~uLk~XD_8U9$Jem#N^Y{Vzt8B$2w)P^&AH0OC +zFzrY-CZ7))c6qeXpxxV4#vdCf)K)I(@woN)v-Vf-dY=TKrcsB9zy1Oy4o~>tFncj$ +zSIi_=`RBHpuzaO2ueVPgF&#bDBm99gGs6nDr~!+-1xH2vCX*Xgi`AmR1L_}VC^dd- +zu35zyJ@lOPq|tf`;>?vt_!}P5m1>U^j~)j2Ierw}pz6HOc%^RkYCbKSH)8ilTZFD& +zh~-Bd?z%WFv_}XERdi(v?#}i!lb@a6b|Gvkd +zyDve?3rE;|pDA9AWBsZcJT$KoH&S!dTeHSjN?(7EMC(D3%a64x4;x;x@+i1E+r-y9 +zwthNC!w6n`~a1{{v%l-ws(UXL7Y!45Qg9`|Y1NT`r0zfIjMyPuug11YoAgvNJK +zyH95@BkfCbv*HLr+~Kn14hkE8@Io$?2^E6QGZ~Q%sRKBW7&0HnRr}zz{!Ju +z>sMOvS)c8-*PHX-W3{fASKi3Tkz!pD)8qxBowIy*rAi;LI-&8a$MaPSdNbkRAV)l$ +z_)=E1T~?Hk=_4C7-!82suz4fsb)1~J$nx8TU?BT&6~$WDg@wqCDNtbYB`e)xF9}Uud)5($?ZoFb)z6fI?XvzY~tHr9LUwk(o)OP($U(~Zxi(T +zM%?JJHLEA7*vR_J4IWZH`ifzM10Mw!RXj7moLuiNZSnpNomXh-bo;$7sq`+^3)_j< +zU$fN7G+ml}R*{T)3}aM4xwUB)&}n)f(I-k>LhN%B)P(-uMTR`PY;^u2eeO;B +zN4m5Yzk};&huJ&7T;w5m`zCbdBmKx?QUkAjZw=??G&x`v>~o&-Un8%-Lqz_|up^NT%M +zBUiL-#(Vb6wAbG%ZE!VIN@ZMY(Mwy*(n(B;wChsl1P#Zqf8Pb$>N0g}4DnODT(Un5 +zPh9QXf4}nE)#KrL2fF37GX?~Y3|1bQ#`>l+ezIBfn6hHvd%xVR1zEY%$rB|eN?TUs +zz9bSPY5M%i%01b!p2gnm#=&o?EWIW>RpCsmiBs9|L_XFbBcj-uqX`hmI#6Q~fB2RajV~ZE}%n)}IN1IgX +zeBA1$uTmSONCnSzSHf0m8c@$ZI8c%sQYVbTP3kj}6_FUV#Fw@C +z-eaVn0-QI&$SnjZdpFqHR=e$P4E&(v^Wsyj35V>$Vy9GycleNeBFbgkZzeBS%(dGX +zao`>)=FgC?X3f`Insr&|W;vOv|Y9Y^e*EI4~N=yKJ89$Ub5v&0ZB;qAtcoojn5}Q@IBXRwy(ifAucdnjf +z9*hzNybwO^+x)(yCjIhg$7t#1r^K+vWc;u?rNLS+u~#pvv&%uND{Se*1>#RY6ZH94 +zYY@UO1MX{^ep=f;2L$$9g(`h4vF$0b%`jT4DEW=fTju!^1KK*7JKWPj#EdLAiMH=S +zIsh67zgOx`K7~`(Rt;%2xyKrKixQ!&CwOMspf?vgv_7Ww^t31O*l00tK +zMEUTmz3Bd{PjT3bU`&!N$EeKOtlkuyq~7~Cf*AJFs6=x?2i3Yl$Ln}(fGOL7u~E4> +zb)HDHGPj!LQfY(mA0Oe@%$qL*34BedXFuHQ+RQD>>lGpgw%(*0B_S~)-Z`exuRxla)2I9xht$) +z-}zA>sDPw5{7s?GHY0RpDwr9xpxh-SV)eEMd?Whe1pZm9d9k;=*4yL0)7(VWq4IR5l~^zDGQgug +zpL_3)Vw9ltO5QSgp2$c!!OOG13Iv{Tg8g#amc0GbC38`)cVRB0Ny=HOWPE;!Nv#hn +z(YZh65E*hCf~>p)!oDR}gl?^_!YOgteeBQW9S`1?!P*4{CP!DKv#jRRdB8%rlPRLj|rL0IcbvfnYAO%uNT*GNcKLDy{$Scw&N==mcy=$t8DkKU!651>4w|t +zj#&6Cc1;d>1`W*^RFW*DGX}K+w6P`1U2>4iO`E}b5%XcrHIm@jlfU1}{6rpa%p2j2 +zzIlZ$Io3Yo@|Jf$xNAhzfIl_;)cx_!C;`OS4?UCFL&1}NkyvVrb)CY#?Wx~3Q=XIX +zwhf%{!n8YP1Bn(3=}f12YC|t6k?JNAl#84{Yo7(^3Lky<9LNm +z10!ZrUYcS-+|=8le7wV5fdf}7oM^VQEzo9eR#%%sZAQ1a20X7A#wHlKLA0a6Y`W`9 +z8TJ^}S1;VhtmP*;%@c+*GFO>RIR4}S3b-Q%u%um9hO1Nxv1|KC*Y?#qrb~5hU&hCX +znb%>(Z>vWkzO;DyIO9hw%Z**`evV(Xi$?dtqaqJBW;?P;&Q8Us{wQEnr4SPzU-Q3;Eml=jkVJUmZz|SAaueZr&ij9OmNG+1N55|hjnOJ<%{PEN%l-k)h<*02 +zB^tP1Hc2A|)Ix$-)<;A^zcZKkOj>KazR1xAvv&gr-Wo6YAU>IO#==UK6HrEpd~vh< +zB*i0A(uvW%v(TXIJ=X6{TKBogOBXcn&&{CJp5;(fQZ0-)sYS(U_>i}(CJ6m0tV+E& +z@mFX5-6pE@1da1+AB*lO_wE4D?LFVYs)(uSQej8P1!6@+~K&{Gab +z{qN=O@9Mit8*mzY7+$koZ-!N5&?R9mA+Bw%yfSozT-p$NA_S(T8CL{E0;x(V$=X%V +zEFLYb=l(KG@O6m;=G3Hl#p44#gEtJpT8=Vx=8o*0u|^e5y#nQ~QUX +zbbEyY2)y>tP_N{E?9LoDY^mbCz3n3|6cgd-Jzy=*LVUR)ZO6Zajeo#eaTlF$e|WzA +z4*-L#l<*Kx_I*`CW=&p#Vjk^rNO3NSk=Qs@cT2(s!>DLzN!W0~l5G}!J#kzG^IY;< +zYF}1C@{Z9x_Ufn9S5P;co75{tyP0u4b~nBM*e4&~hgA{CW5Imih0)XG{T8$|n8Dpr +z6YCw|gA7prP=gO9r0i&C{j%Hy+AHc+)?ywvxDqY%`P^ZGusqYnd?t^kLoL`3vqP#t +z-_2%>Xe14>1`}!d#Vn`f)`0a25l%}VX6d&L`4d4e8fw^1hF5znl3Bc2>s3#y9T=Ea +zltiLdqaoqiADa74 +zT`*28oeS{DDP6o6C(h6PP+=46HLdiR_$C9eWJpfR@MU0>{Yf<%^5v +zkwyC~tnv?T6|36p+J)?mKPrpdJonC=vmWiOHJ$r3GdGZH^1OQAVmXfAsY<64$g-7B +z5@Lr+eD&~WapZN~nUcK4mRL?pr)8QKe;DE?VDwUMc}B+#`B2)5$8Mq>S3#%wfC&Br +zKrs!vf`$1`FTFE9&LnPgNd>rwyb7iJzmUh +z-t&-h`wQ69DXeACs5Q2iMk&OA#44WmvWFG9+D8d;46sqZETmt3@$OskxRr?>yHBRZ +z-gYa(JYpnQB6K2BH+@?WvmEx2qIp2FC+Ym4`XS`?2y{3{b80VFt(|0Mb+I{lw51H; +z^!v^3Fs+Qq_!>_9pxvP4a7y&hzpqZ|cK-;#A=Jl;0bFg@){$QvI`-hcF{l5iMf+QU +z13sdm+)X#v69rQ#aO<_9{EHeCOuB_;AMFX@ps%Vkke2kQFP#u<%;aXBN&xu +zX?u|CsN5ss?uI@3?pM#wOVZLX9CPxTJ2zCcBh-k~?=VK~sND`S7gqLiYMCjYeTAfM +z4+fudUh930B%L +z@fo=44f+U02BzzZ{*l%I(sw{4kn%t4Vu32oL)$XYf`6}Y>(G$j=LwfTX#Mw +zZPWM;$wqe^GYw@sb`C*(mdQmuc9%vY14s278IS~r&W;WYZ&cJyxyTyIvjVh$<#(>8 +zf*=4Sp*6Gqnuca(wIU8Y`V=K^NU}RadQ>;FHih*>SywNiE7Hxpx%(c^;o!TZGB)--B*b&5;OQH(`9Ww6zPRn_hFcE_=Mv)L&hJ=-1QM3AMM?B3`@ +z2(Qa!uH9vGgCgKp=UVrEqa>qKA=?!?@9OM;X=`3@T?>2POj^iboS_T>E=Qw-+UQ>h +zo14()E!(?zTh~2UmKEWc8{ztGze;D_ak}6gqbX+z|yT9CADeE%O|LP_E@LuHoU5E$z +zLync&DPa-cW!Y3gclSACGvwofS2@-3!`P$-&X1)pp2YqIxekATfcOE@UKk4M&O1Pd +znB-6BOUzvTS=g9OhznN-VsdEVRZMK|PuU#dzEzLwu0Be2K^Pk{ +ztH;mVaQ;Jd&`(^6jR}J{g6=GAx?ahuWPfqtQ}@7fm47wT{NK1>TubDAXcTz0zX3l# +zc5F0FY)mg>L(Kixr|EEFZD(v3(43Y&6tqybI&6l3^Cl(zuLqt6ys7^r>mj0WwBZAp2tUIwV +zJ!{(^ag6|kz5EtZrc%ky!B9`UIagui#|!4xo8uogufbeq6Df4}+=PTJ;-YIj#5ny~ +zz?_r*rD;#9bL=*D@SsOgc+*RGv)TD+6Lu^v#}Pq}+%x>)d&_}{c9vtM-r@~?B`_7!9INp*F6om3VTN&8#`O0*G6VN +zX<49jHf0^|l3km^VzJb4B&v_sx=X)}4)lVem8jZQ@+TK +ze{#i&EzHk``f&X`q;~Wt{X6wHG-|2UGB{H!AS)i;3^VNE4KJFNjy{Z$4yk2fTlNR7ur+7#s$rCQ_ +zzAv)!A!!2-8G^_M;l+jR$?~w3BIkD&yt&;-6;(tOVaF&hv>zI)6th^ED>|f(G +zc++=6rkC2BO4nYr&kX70 +zuN2$m37Y+gF3Fbh{H80bpCWc4_U7m)3GEAxD}uXW5zQ&PDU)_v#6GY4LH4i+GvtBc +zAnp%J;f;&2o^QTo{NcK(DaE<<*BzAV3E!oV!R(GzXAdQ_P9M^(lRlPNtg<@f67Z3J +zPU4Tv$Ft5cn)tbl{(eWlW1L&AA8+*c7@NonQOVk@OmK;q=?DTRxp|mhPYTA9Ytvnr*8Tvbn>K7{NDvE1+UqY54o})EE9T>L2Fv9qK7l=OGefVpj73x+>A0y6n +z{oC3A_6M +zIWRZW3j9lPkVx@*KiD74sy)epRPIo^Rr;}hveyf<*kx0Ro--{m`EVF9>B_fZ;G=TZ73w9GDxDxoO +z-3=?ZNZ3_W2#eXtqp#;BT)fx}0%yy$lL3dPJN3CbyiO42W($JCp}{ri4m|H-hPWcA +zIJW)X5LooJGyAgMlayiWbSXo#Rx=exI!gYoWbXG^Haf*@vS+8O-C$*>S;&UeY(179 +zJj{F)NDS(l>r~ZilFh0~{tNQH2*n|9l!512k*R7AlHd-dwd7Heqr|0So-1PLa0nRm +zE{pYC$J%1O66e0Glw?*aCwA}B~c>Y}aYq8;!POP-Qv0s05? +z4v%>!omfaXh(wv8>~Avb-v0!c_cm{7ZwV-zH4Z(GM|fm^H8i(F8r4vH><|QFXU>J% +z)2SWZcwTGqWzn!L#<&0zkdUm0Am%TCaeY#RB*6uLv)m4w+6x5e5zdcAlPcugLMM$$ +zhA_0`0Ek<9tbJYEGYIgWGCen*=>*x4zAWsN)`|Y)IgFbcZdf%V6e6G+XaA7V=g5*f +z*e*);NwH>$Kju44$)OZCV|WC^U*%Z6a*C#%+(@3tRk+DsdHK>}7RTvf)&l5HNxa +z=MG +z3T0P&?2Ndkq<8y0oOU|MM}?=<3N#kN?CP$aJ?iaLZ(ju>U1xh34J3jnvz}zJ+sNsZ +zQJUJKfaf9L$raU?5yUH0nm^dso%sgWk03fPVe6mOuQlhak&@R-Zm$&k%R7GIEnep# +zSG)Nr!Q}xu*Hf^MPmB1cvrNxp#W9c@5*)@?t|uE*q<2`MqCep)@DpYNY|^bBIb-u9 +z9fl*8b)_?m;%(t|Vd&0a(P|-n8XPjjBp{B+)prKw(;)FSDY`tB`Axjq$|dxO7zK`# +zBKSEpWd7XT_`33SSA +z3&IQMAmrq=E9M8Cs&#BAmJDyOie{#sQAhqheC8o&unzkyPGfq&?T* +zJYK%|(ztCGa`FY3^yGWl)y>IY{j}V=eAgbZRB-Ewx9q>L=7ZRB5jAtC=D?!{cDgzZ0JO`rjO}b=HKp{1C|Wpus>h`JErpA&8uX+FoQhv3V4gLV~i7 +z7)~t3YK4VXHle8THHbX2$uSgO>^F9I`TLfJmEsdlr+Nt(2 +zZ9yGm^S@XLMOE6WB=CCnlh7k{97^#2&<-cjB}Y%T%;$nNi3^an)BTUnt}#6!Es5t$ +zH%n|)O?si`uDTD+4@Ui$Q?}th1ez(Je&+;se5^lwI^(FbCiz{bCAZFp99gT^;($ho +z25H{A@+7T-A21>JGz=Bd#=nSTL{1~0iSm3O$|HxzYqxr=q)jx)z-@it`k7NTs +zT&jQ4=%3%gbc_$T%z`d#`@!d0C+h#>R(P$2geI*@J#H4`44itn3m4rymts0uSsTC@ +z$}q&2znn89SwkA+7z?FNFSL2m`Uh&*a=13H`FK&Hx6(_3^w-Ga-&VxuO+~xiHS|xCr=1bXU&Hzz{|q@O2Sz$A`!ZeJK{Z`ntdIA8v~d(2 +z$V2pAcu&xE`+jxrWM9-8yvQUB4PU?E^qXkidEGi`D)YwiYsF0vPuQ&RCe*~q+I +z11*hW{_zO-XH<+447%!fiYgsHa;a}Vt&`fev61ry_!E3K=Bk958brX+9E+{BNMjN$ +zmjI@r@93geQ8nOQ?9>e!Ep2PQ#lgzM>aGcblmXNs_6wjBDk2?`2U8wv`+1rZ+jn@Nv6Z{QDDQ$bll +zD5&Zfl=}~GP*7kfNfAL6H|T?9_e7l;Zb>bNYzJ41R7lc!Go?rT=Qls|c8^LO|D4PhR+g^L-!zoyg?An! +zC$7MM``kMd{n(7jKLpp1=KP2t*C1^qr+9ObDP^%b|5xC15v-FdShYzC-AyIEnDsY2 +z^c6PM2`tt{jgY|IMU9xiT~;3b;T@`)1-#(YDdUj}oGUy$v+c{5E5Br?ahDMOX9jeu +zF2{ccQLuyN;oZ#YxX&^tX8Nr9Ihn3p@y|{~SkCuXTs)@m!Mrbei^0eba?ogj-$~)& +zB#h7tJGqXOWBbSuLdkif2NR3X+p$W9CpO0-IY86|*wUrx7i@wY^;Vj;LlR2<6XVX$ +zwg;2JqFd4Ryva{^a*2Y7|JIQCZ^>hY&nA}BR;x!!ZeL^)cm~-Y^S|S>AS|&A9bcH_ +z$V~B3XS`JsX`sE6Sz%wN{u(UQg*Up-o?ev8S||7yJMnZsVBaunFGlzM_P4jg8DS2T +z3Y^dWCe?z5)y}&V-F=P#e+k%4tHe+ek8;*Ma}Lo)4lPqNpj{WIEa&-K=a-|#8Ar4!f96-BVt5TTE&>AvN+v`(WYdY|TQ_kHi#N2)M +z%~mPC8ascFcHswI*U$!=wpFHjbPu#=H%Z7rbtP>cD6%~t?N_1SA=>acM;)g%U8(lZ +zBxV9hTAYx+6x!BZ&OBYCpn(UdRuzj$Rw;C$>(yvz>Mt})e;y;vKPMD1_f2eVO7^(_ +zD*)(X0-ovW(+HU;Z1-=?8D +zCNdn*DktWL&%V?8@+lwjyG$x3&A+6g#s+^i7Q$UZdcJr{mfwrgTJ|dW#=ID~a+bAL +zeV^jV<|1|S(EzX)DDkyPhCOm8EGuGn3~SVD)wJIe){AOf8HsN&)_z#xNJ_PJVyR@zKe5WJ`ETa6uTz3VC|L#76!upDgcV_sm1Hd_0&& +zqPzafd;c&X=u#!%uKqb}6g{U?%C(FNK1fPG0L1V( +zU=}=-+8*h*x{XbAb#;-}!{?CyOVJ*Xn2m5cr?sTVrvz$GE)dq&1sI3PK`y^%7b +zc#1qH%CBBGHKjAIPL+1|aL91#p!Kn0Nd^ybnhjD!FsUf0wnTpYt_ksvdE~LO>O+2o +z_OYw-G?*Rk`Ls7*paPf@&ejB9KJt$YhO*ZlRxd42&tdc# +zi}0$?L8FQIxDiuiQ2vofc71f)mE01ZGRJCgi+ue2clp~{E&XE}T;n=V7x_^QT#JW9 +z#|aX0U=mofKT@u2CwR&^#?|E4kAl3mexDr3uj0EDoR+Jxwf>+B|n_z~MaSb1UIQ4U`IjMV-;xA0r? +zbrd=1SIEN(3Sx-8S8(~ +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 +z%2wGsja+Yt +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 +zcVCTmtXLZ%atMT*paBI8WI61@ew&pWy +zIxw(cN&ygOB?qJiF?i&WATYs`2q-7b?W&NLv{JAT2%IvIulFx%&pp|&?YCTYk}G?p$C?2M>2y39srbe*sDNqN81-EG%!qC1q=HCG+j&& +zCzGc=q!n9anfb`t)f-I0P{WB`Ha} +zsDj(Al#m5R?GT0PAq6EvKaVF000lC~Rp7(WxI9e)_=;1l@^zZQe$IYad(_h$@|#2V>ZO+NQf3eg<{I@A +zb$&A94Z4IjNH;Cn(oyxU_}I4X@xco*9}lQX#XuZ8(Fbn;#oWKEOVD_>-JdX!^twFf +zphnV3ow~EGr7Wb%++5Qm6BcIgiPr(=8H9k+_HTY_bSrwN6{iOfn%=7_D?esBG&Rzh +zy@a$;J*2Te5K3R&2Gaw`LWekRm2{N!dg&;_;4iiu%Ao>JdZ8-krAaS+uo^A$zu_`C +z=LGcAt$V_{U%FeBNc6<8dEs^-LEh)eU>yM-3Z2#uLK2`_1rh0=Fx1b4k`+FY%lHk;UpH8arsogi}G +z(W&4*DSB#WUlbZ)KI$PFh>SU^JYEvn#&+9k!evy|YWqDB7Ri5?Bc+6{v1yQsDoPL0 +zWUl?_8N(cz&G&GzP#xPG`Vn|zBG3iIe}fiuge2}D0_PZB#hRsxx;oKire^=?JmYd= +zdT{Zthtbr-?&D`fg+|;|24A*z65zWky&VcZrAAA9Y_nd3IsUCo*cJe;h69!|{#@r@ +z!C`B(-A)+SR-BDUQg-!PC4u%Z984`p +zS_633$Yp2T4pBzdFMe$=`gk>I`Wsn{%d2me4#i}{CaDWQ*3F&|11Jx=#4ICT_3Ze? +z>j@jtDB9a_2((`VHwjxM;t(Qr@mF2-E~0r=bBrl;(XY#6Qq#i}efvMVhl8~on(RjV +zU{voyU)!|#KB_Fl7y<`4Ap^Do6&(Q7QVH{55et<3OsY>f_FuOQ +zoX^WjvX5847^zG$L_49JP@n#{?*O!VaNKR~to?gT-S%xgp851uESbK$V+aVglI=`k +zhB?saKOlYKJP}td0Vn~vTyawi$OEDYozdLc2sDXh~U4iwzn;Dt9wDhjQ)Bbh0nv +zJyPQ?%H=FeBIB-j*Z1Eh1T>d!-wo?UlBLg9yb8R4?5PUv +zMVeOnDmoM#4yRV-bMK&kYFl{EsFg8NP*LDsQ>Nu0?NNT&H!nU7_l%c*;8WO(qKyF^ +z<}h0frXH4hfroJvCq9OWdCp!>_?&+9ly*on+|ZqhE)msvwl!9|RVmDc5TH-!n%^2< +z^s`JgFurO1SaRvQZO7Mivocr`9j-SxZK5s|nS6JeSo@YQ#xy9BHb>ay|kw +zj3Kla_g)Gzf)Huuv+Qd9C(5tp{FfD3y;HO@udeg%J9UeYT+O7)WLe$wCDM`x9oJzS +z_xj9$f`Hv$LYB{Tj0R*rN1jGq|Ke@UpQ}Z#WlwgR@*Q|s2guaRCKQ*LA)vEimai3j +zj)Po#;*jwmin+vHmrxZEK)(Rz=xKq1(A?}{X(FmTT|+HU)HL#O$t4p;I6vR>PfX;I +zz&jh7RhZi68c&KI4fc%Ki8D&rrWa}yVtBB+!`k=7ldDod1|;cVz(R^8c`^W!ef7A^ +zAEH$s90}-c@j{TaGkmp_sA9jH*PexfcR8|0m;QN|^UK!lQ9A_%1xttP$s3b48Fh^9 +zC-?@Z!5W?EXsKF1HS=CmQ!XqOz1mc$XKU& +zM^y>pM~` +z#TkExe_*pzZfVh}$K%=xNA--$cS*S%9u`FkzjQ0HO*lvZDx|*cuhi3Chzp(=xK5YB#$VV7TI+qzK?D$Z-RX^XhB!$VJ+N}|MIf0jOF3l +zK*$I1NU&) +zauJst>uU<$7Xo_ob+h&l1uGfUIZ^aa?Va~dtTOd3tiR$&k$ +ztmu>XJs(B*u@OIwnDfk|5P`}dVh|O{tre@|!#dg{ckV`l$2HuZ%Lvq73y_8wI|mC9 +zs{b5p5*oiY!D9cBQ9y4R;_O?eiiyQwW8vy3CkLDXkwz{(PG2(7Wh|6d!sgN|S9NJ# +z0RjS9IS@qjgdpyBjM$+{U7+OxZ09byWxw9WkF~A;P$=N>Sf~FW53BPXUn>#hPY0As +zR%6x-h_1+KHK&3a&C$^tq=D{j-ESGY&rMMK5UEU;{Hqk}l9J|4nMIO~Uj3$*>Uvnm +zOO=Xv%}Ja;6LI#Nc9KVQ{t#{kuv|uHt?rG9UIu(OMRU&`kxDZ}HRF260aKes%d2Q& +zf$wsnAEKBB{X4N?F?|#Gg6n@NAYuy{T<(RMHh5iI!MT;I>hk#go}*% +z0(M`~ytU(O7bQ7`ii5+y?(dP5^RUf)x8aCd0DB3+Gi63k^Q*EfebH=IdCXATEqKpm +zbM4=FuRLTUaD6r;(8cU`iUwuD*a(ilNk^88ITBt=0F|j(^RI3%yhe}_slPl*t$SCL +z8-4YYQGe>>YE331cx|^qxD#ZVw@f!Prr%~){r&Sa+^m!8#4Eg&E<rt +zWQ4H-l5pHlSs3!JlAOqdb=;P}+0s_E-*2?7JHMa;U?~CMDy*q5NdmzyKmmI00&~14 +zH>8N|5>>&~Iy1?O?-uzurZ}XkVO>5Nh~N+-FWJop@I2^lS%il6`)JrE8@Dwa&%I6i +zlhNa~KX(^_{Nz($*2J%Saw6Sa`i@B;jDduG$heDR*0DgQkR!(rsj44YmF$F>Mlx;bxGwaBZ +zwP^%+V6m@fxPCz%XbPE>UFo}T9k(@>iF>2d#zXO2;h5J>%&H(UK1OuZudFUUGBx|XUi>-gpl#Y@qfv4? +zoFj?DP0*c`F{>@@n6tHs&a`v9$A81t{x4_Fs7Y5tqpmJBSZ(z%y|JLRN!jn@0sTB+ +zc99Yu${AM-ASmBoaJ);Sej-c#1a*IdkoX0nT?XzMIk!x!TS~=~emeBsBpqpkXV$WHZ~f4W49;lw +zVrE$9xXfMH`Lo03KyowFgt{Ec?fMbg0pId9vF(~nXC7kov0ayex-SYe&4q~hk^Dts +z23y|REH3yR;_Z#S6SOh)8TiMC)$jRI58*dkM*|QacrX +zX_!I82LPV6I@#FkCZ-GrudMA|gH{qO+V@wRK8{dihqu^FBLKT_l;7mu9GC38hNZ^T +za9%AU1PL@oxe$eK1*`lvHNS94l@atw3hT=^yJE_iQqJTpOUs=n*J*9L`%#@2g?0Pf +zBKBgVU-*m^Qq{gk_y2u!N;7JFf4`sPUEy`5%XQ@Q_huWbq$6b`T5nq$@Qzmui$^jD +zdcj^o({8=tFBtZ|k2{TG_JNa5K)ObYxmWS^-j9$@xO30uTZ=6zPOYJorG%Z!%uqDb +z!ZtHt{sMt8gFaA(V+?Z=QdiTSd+j&cm2?BIqZ0}1(PG=i^9N#HpF|P*R5#wp1yb~C +zFr)e$#Su(+DA)oHg4Z6ts|Ny`&>ioh#RkB_EiKG1 +zxNef*ent5OKB0rQ(EV+i>)Zhegl|*^NwvdN5|#LKakScFthKn$=#Ob9-K=(8p(#l@ +zTDZ)L(3f@~uU2uZC$I4!$b(Ls2QVN}BIgSp2Y(!fdi7z9jTjNq-y(YWs%z#1RNo8n +zj8NI2f1QkeB(?yx5Diab+PjqpB7w +zhU<7N`^;FL>|dY_F3FfRbxuEf(7R{C!TGuATl>p@1m<)$ihwNE8<32?354tjhQq3P +zU!{^1R{j7>GfpvE57E!peM=<=u~QX-T!vhg7iy8xao%9CYi9|p2R33oR|y4DXm>%` +z_EpQIk-22psh{Jxu7RFU6JJnVei=FaR8JoO|zu$WG@FSD3|(kMh!Z0N46i!nQ(YXHfg1$Izd}oeW|QVYzNlt6cp?o9Y7v;In#Nut(NAV+|(&6 +z2NsQVy%{iegQS^yCkJZ9gfiQPTn3?CCCb>t?=+4Wrh!Tlt(X38kOpp+ux?8MELUa) +zSLnIPK2*{|gH;eU6)nvA;rYTy2fXjK@UT&brK(=OnC-8bRIB}G5cFcdVoQts;{HTl +z#Xe1zkrg#><|8fl)qK2uZ5E3_FeluJKU4Zfh+44-Sg!b@@te*Y#qefHhkmkDQdw%L +zh-T)*Yyp3hsq@gj^r-R+tE<0;hMMLK3;&w5Puk!kFddgf>@nI#IWM}*hxW6}nJWPw +z_l(OtW<(=J(x1K=ny^CYWOkg;JW)z=#Rd3GaV*{tuyI;>8YLO8t}6 +zBBOC1T2fUWfaRyBjuKdOPUUVOwxctzK2j0E!*ANYZK%>bzvj@i1E%h=i9m=0+SQ5- +zN_ng8ey;;TVTK&OvpCVv_}2}E>A_yw$3U3wRK)rNfp_7WOucSWdC5=5q6c)kxsEtR +zUOV124L=6rSdu)dAnJlK(0>#HCpHnOInhh`dmejUApiE%x0TP2{7T-m5vyBRky&O; +z0SHe{{;(na=@l@-mvQW_sV3oJTmsw<>?779i%;MJNJv;;TS`N$HRD(;AB{R5SbR(` +zi^hD;e3k$vO*$8_4Fy|7`gN~eb{3xhu{499CwQvJ%ZzuNyuqdZYu$O`sonPi5bw(0 +z6N5CYEg!qJIYoTzv|6lx8!~`eA&-Z6k1fIA2iC +zT_%b`&KCTtss7P@9k&kh`?f$dwgjgW7 +zwo(`4#f*5poo5rd^u20g+4{CQ+&5j(5U=r`B476IS8&ZOwp4jCbx4EDYo5mAH8Vb0 +zYa#7_cGAQ`WEVZ94UPC+d(T}}?%1_`U*+poeFsQ_b2oq_I3=RBM5B_y` +zVexHo^|ivu`)?ON8ZIc$uEVG_ZT}XTN+jZx)6=MDujBgr%yHYzZ^vpiBE#3f`o%lQ +z))xgek%|a3530jeXpQY9jEnB{!xg*imn)alfFc4BUA)0iKkQg{MKf~MH{;4*sF+wy +zT1K)vuKzL%e7agTn0yd>_-9gDxXnAM29-Q~=9h3f8dm;jU2fSX9KXHJM;|wqx3eF8 +z4j9t%*hS~jQ^KM6=VV1u`f0Nre0Sy`^ooWi)K +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 +zVsYNx?n7c=W)NEiQEmsYLUQwJBfV#1wLm3 +zdhwK0<>bN9w?YG+S@R89TY{c0!`k^8!k$z9t=i^Ol>Z?mut%YQePr2O%EQF6$Bq`8>-rxrF%s)!TWIm=JJVxX8!Vq_c1Uh@OUEZ= +zXLkiy$)=6O`9!YjKFM7q%N&m4Wgno4Yfo0oP|>f^C6?{$@Kkk#FNaXSNstcxgBHV; +zCX1$SOnvhIIb0f|i)nHi&VOJv@cMA~%ewy4_yQ3U>11+#*RZs@TE(ivmtzF|=u&}b +zQQyrnH98s3g_h?gs!Upg5uL~QR;Ys^EkI{;=&te32_E%%9~DA=yFq%A>P^Qe +zBQbyZURtkme?7RZicr_PJ#BxHkh_Zy*+k5TNuD*S(t9|ul9ICLx@3t*TLrpfmx@SY +z8>JK2G|?N)+m=Dfr2c-Kc1xr=MxAv1vzZz`jxqg)%DgCn_oMH^5bP2D=k*_P;I@b}8v6H1WBEF?uI2h2 +zg}mZkJ5unlAKe{HJE3J|H2jp5PvV;Ya-_{nVu>nmzCL?r?TjTlPg~>YpKzo3wc>o& +zgh`8w#<7Ozoto_}d&Qp%@zdvTffS*hVT~e +zU|d9se$f5~ti|KGeQ#kxhDxLBKFCVj-KWpmSA=rapgybd!jxjhe`i|9WSj1CbydH#3z& +zZr)*HIg3z0#*3)xIQqlK(s4gkjg65*$Ab+XO(J?}q1H?}D>GP^;DBn3ZEcezyUc+K +ztCiPzm?QJ~=jv#>ZcS|V7I%^kD?9s&6aV}7YQ?GF;yU7X3_jUGzIXkMloC;XhN;bl +zqK_+?xHb&T%Evm@A3do!GR1`*fX#a8|Hsr@Fw_w(S))L3f&~o@!CitLToc^g-Q696 +z6WoHkySs%DoP)c&yX))RnLF?M1-*NB$*NVWsu@Gs@iXhR&MF&5&0H}nleBm_>99?e +zL<5$EQbVd}ub<1YL=>34qC4;~RTA5QPr|81c(IB0f0^d|s<6esfcC5S_#`G!#(M+e+I$Yw +zJHKOS#X@rOiTp_ZPwM)Yh0!4&eY=D}5q}-}BamG2cjHgM@W^SYqyZBG7p5iW=9Z&S +zr|fYe`Rn>W=e~t_gNV#?8M4@s!H2OnV3mv&2XkG$*|O9S-zuZ)w}+Bd%TtiF7V=_M +z%6(U!-~VAl5=qF%uC=o&abMCH#wZKN>F6kY;^>Yl>P~srC+LgbuRccc%h-+cqEkzQ +z)I103szYpB--@urj_b9Gs+@LthrxzNnz?R1@yp!j0vu~xJX7|}=@ji?vj&3y(m>7# +zEfhKlpr7Kav~BjwY>H}K;^*7UBK(#oP)RZRQUS1_p{lBXnm$drTKWi%!OYMM%NxI- +zd~>hlk*_pLFC7{>yYXe%Pv?X7or{)s`zya)$2ENU^H2Z#5(P?vXUup5C}M$^6!%rD +zH>u9FIVu{M)Hk68^eF1s%N?G#ef7JVgVam^(Z4fDKSn~i#k0~S=Z>YToDhb}j+=hQ +zv*JmR-z5D%n*{{th=YU?JL0%(^m`e_NV +z_v=Ux4c|YYispFm_luHsj_KZ&f=+ei$;pz`X?IPM&oC(dj&ba=)ZGo{%iTTVvss`q`-GJ}h~f?e>oi +z@)?EpY#Te)$@xaEN{skduY=WTK_L78r-cBmD8>J>&*v +zQh2}4nb*RRyJE=2a@Hq31x7l9*cB-jjnjH^Xk^-@YP7IWMDwHCM@qZzFEPUmnK2(Z +ztp{%7(kXm>XVgg`laTn+qcrNpI(Z{GD{1RxGN02Jp;V0cWr~qzKKTrtP`;x)CcO7C6_YOz?jNBuT9&NRW{4(qS<2{Gao8dea$2HS +zqh#a%S4f`{ihXVdtQPIU1TXIS?9o~NS96!vO4DR7nc;~wRgL4o>-&Sr4=>XVg@!L^ +z(&D`4!l^F;`JdxYM-oq|2QS-~Wa9l|mqG{E4^r-kOJd&LwpJ4Eo54Bn3d(ysVsfO! +z2?N;=viC@#<*riZO?@}w2^PrdU7QD28L4-;bnMY#!w39@Ugm1dR>nV5&xQ;y|83TQ +zfS&rIKX;nEXfFQ7xg;;?cfXTx?-QGql}}-T6Ke;u|IzakW@n}?(`)^Sqx1V&wu6Bg +z=7z$jip#TuW)D#QlJJ{lS{hGtv*9GnzVNG!ITJpfEtgRf{v(nLX}0=-vn{lAzfwwA +z{%YhO`*R55<3qFCHC@wtXO{NnVJ*H8`*NjIYtX`$LJvg%me=Vo*4M@a3~giiqE`@% +z`BHAWtGxKzxqA#jRZL9e)CF~YNXRdC?;w>Bl<=hsqBXXLg!`zkAI7pR*ByXqBf!*y +zzQ_~e)w3_LvSv(CG6vrXS>i^#y#kw@?4-S+&w_gn0a2NA8=P-?QP1=9+8dOP<43-U +zEv29Xg9xg(1RHFCXnU(&Xn +ztfPq?E!~U}#iQV6b^A;2t}bCBX&~|kf8B%&e(bjlsys023vhWLsU}((@I*N?_JPwg +z+9zxZj)qUq9emlwa0qPC`yY?!2b=oK2iGw$RmXv@OLcE}7` +zoKIA$LoY4!!VPowRZ06^RRU5j%~m-(Cx=MIo;qh6TQ`cEg1-t)+&}ATt*JkXCC0e~ +zL_Th2Nj+=^i1pUCIz29A_|E+j83}lzeu*7i*ZmBE&getIJZ&;;M6=Csm6`Yvx3O`@ +z&0~Kk-d%7cCYoq-F5rXEd@kQ`#RogM4{+-yuV1KQdffgK=ins-o%p(WdFOsU^+!7G +z>NN}8Zj5X;;1%v@Y-~4w@HiuX!p?-)wV(l2dD-=NaGz+N(C%8)#uigp&$Eq`tA}t* +z*kI94kfk6K64`Rp7G9@Lf9vXI=ZE)58+Gq$*9(q2 +z4hc`}N(+9ri&MaTjMjrS+&O23ciP%>DC8!mg%dDb_3|5dzJC$V=)U(aG1PqePU8KK +z>}QsNH0n6iY+6m*J0#2$_nYQ3RrPE6H+v7_frP_S-MFuQ38oMnFe9sR9Lsl`mb|B6 +zqcO^JA{3dorYBAdqnvq;z%_RW>=EGoI`^k8S3X;kn!XT9t@ibG{t6X`VRHa`9OFx5 +z*(icftJ#c>-M+KMq;yJ5{kFJ{(bwH(vz~^0MrHoOI6Ef5rad~k983uo!R_}anDuvE +zqu3|DI-~vR59T3Ig+O7>jq^VZIngwUNW;TWe7(%qX7H+$T*2**cZuUVAJAM8_%rEZ +z55(Q7Tc5k#8mkNQ_RXgX+XTmkt;f$CXEeLB^g8F~RRvcOcQj)kZwD0GXL$fvBg}vq +zEJQ*9#p-cd+`o3sh(pYvI~szGOudaH^&81&&OmWBsZ~2jy1>hlHK_m(L$&itC3>xv +zF5+eVuwGA7+ls)rk(^(KO^F7hPir%wCNYjcwX%XZ0c}c(u~+8Xp!7vW +zY_S&Tlx2e%$ay#bVfC*}76TTf|8R0e*XI-IYw`*7#Ng>E5f9DiYG0-z+ndg_GF(r+ +zFNEyPE?1P8Mm;^mkQ&?r;8BpHmZOhH)QN1-1{?fWC=N`UoG#g|*Twehjc`mHG~{tVkfdP4 +z0Fy*|)7q5D7J8nskGcm^age_-nprem8`8%-?^T*MR`(ap%m_`tv_hXlp2zmq))$){33 +zqs1Qe87n?Ffe?IsPh7d|%+4!^gv$CA%G?qcD&_h|y{#d!wsS3)_arZeXV>o_BJoxY +zMv*;`g3Ow14xJn0@O5P;4IfO(&fW}vzvfb_?t!9>ip?FM{=C;4x?8`YIuUadI9{SK +z>wHOR*;wUV%rNrc5c4bzuIAxH#7ZLmPb +zHO$)^R!Z0pwW$-VrI63f^#~0Z2W^SqLVu@u*>O(`IDOgFTe5`HuD<<_OX8E?^KQ`l +zggohlXaD>?)-9mrs(E64({Jrq{QGvO8YfsmCTi(?iz{opk+lwIBXk8Ln-TJ?8*}GJ-5HU+1q!039#2fVsRU +zgPhqoYL@2_6H9%~FS&XIuPFVIAo><3vVf#=;?79ZEN!kyBeqs>l_tdiE0O?%FJ(wV +zrdC0r$RLhhK=LCB)Yd8M9P%QH&f}I^x +zrFVw8S{B>y5x8~J57qBX#@uC1~(#|BI^o(Na29y@gUeS +znhJ(UR(s=jl9Cv_-tEC_q3GS30TNRoo@kn|=Y6(wtJ`zOT1 +z<2~K*3|{~Tr|S&`A2$%|pIZVu1y6I>mkOzeeajI243-n{-`IwE-g;#e$5fGq200^t}zfHL^Xf3LX +z0?%|?mB&n*aMd&j-5=wA!5o}6FkQFEZ@@GoKpSs}fzaJ^L$$Q6I=;Z_zS6W?!(FvY +zZv?jk*ENb{9=)$7F_5O<8iZ{hec7`F>^V64b{t-ZN(~|ikT;_ZnkG+-rwqvSB6_aa +zpq~+pJkcw+K7wx$Wt$R1Xcz=&rjR4o`om3H>#uSYi99j^cveSlb(~clLW^EL-MD%S +zjIi0a#iiVR(+BbKnt5Y&79mn-r=ypjIlksj)4*d*sDV-$D_N)5tG$!1CS}xWV{CbT +zmwV~zN4mb`x4cBLn3CmWPN3y#0v4wY37$|6Wt7Bg+78ybI+x0Sy|k3JS&_Vd**-t- +zmlMP68BHdO_6+rT8-HTB#st4(q*>q`UH{3~3EklU6LNeAl@a=1d~@IQEeI4$1%nbL +zvoY;`-@$afuH(l7@=l@*6sF&dMCJ^NFqRjh1V_1Exx*vNw1g!re`|K*$W!x+p&MJT +z4VZrm)@j=g*6$4nN)J8ySH}jC$@B48TLnm$6Rpaay-3IjbZ%xISPBkV;K1LCI4^-B +z?_3ybUKY(%uFXQ#CO-RQX1kny+0|>P)!;M9&61vUJ9DxZHG?WDExqYBTp4(`;$~=V=^9amy3*63WD4FEZr9q;l9q`7CUqz=$P=;eUSoj`)}IjsDa +zl7H;%P;)%1=6luNa7%m|Eg6V_d1rLn&YEYwS`je_CK6*>8(MYq6Q^Q +z_1>LAj#v;#mz2}#Z-3NJ&P=22vALf}!jNdc0(uNNl%KKvPN&uCUbClCQ=Tcj*m5La +zO9R{tH587t(yCw`Q|0gf*orewpUf|I;Jk;nJaM*boU6BKM$G*yp1GO@U5qPA#qjM7 +zEOXxanru)zyw2t}!a5Lwo(y>GxWrCkR(uYA05n`Eqv04z{rkcmxAfS0ipfD4YjwBg +zxYvIW3b$$dw~2@6+yOZjq<`7Uso4FsUg{yPoD1VuCQiMd^6ZcXKIB!4bR?kP%+(O? +z;8O^DKCge9e~Z(3)C2u_`7uq4M)j`)`%RD}`ZNcN6i-_@tM^P4;iLU;l`UkW-ydR| +zj&K-KUq7c!I$A88S~|~;3M%DmV}Eu{P}0jPEAu|9uuPp=-OpbD$QHA)v@!a +zoaz0c^8plwm+;Sh$#0cZ@1Jh9o(Si)&?gZ8GN{93tfLv)f{90?nEDdMK3BzO1j^%d?Zc==w*n86xhy%l +zQ@L`qv>TmQpe)Ci_BD~GZ~1(~{EkKr@riR{A9OVMdga17v3hX-M3`F5TK*Pne&eO0 +zk-C0Aa>Ud16#dpQ%wNBTvrD*vKbTLkUo`KJrC^x+V}P=_T!{Rd)(A2n>r +zpdCCWRT15zq)K|Pn57VQN_WwbXuDTFx;RS!#7_pw(LhMnpV84g?d$5-->=Bk%M~-i +zI+%=8&FT)e)Ro{>@ieb=Juv_Y&p2FkjM4@gkq;&j$3Ynk)VYf;_wkRd!gSU8@G*w3 +z5(!_?Nq$I?i$usDRFrE};_Dd8;-rTCO764Xh_bt^jCmLFUdwtye1U@^fq;Vjv~d$J +zm;A$(CNqWc^1#B}v4rVqMBup|tl|*%YI +zU0u?4rdu?h5CpWKAO@r-3qgCA$fhWd$h=cy4-NnGjoZd$u?3#YG4>j4(bzYrE8dG9 +z&Je3SM^tVII`%G=Cq&;uYdjHT6Kiq7d^G5h@IL!`Ldc+i_D!> +zW?mdCfAv}{zJPK&W;zYZgflqc|3G&7!tc_3pr?iB;t$4A!1~g9f+JG>g4}*{nO(=W +zt~km01ObT#0ht6Hf!UkIq~?OBtsWiu{tSM9S?|bIw7oH*gv8Yv%}B}mE(UIR>C(}A +zbSK}6qJ={yJd=*D5Y$i(mRE~UG7&3{)!d#{W`IYD%M~MKb%udLMmVv*uX>faT#+#g +z+aAUU?QUsEA+EH#m%*j^oxbjbhx{yc&5QSbTd(nEYI#Ykbil^c8K8 +zEFi#Wdz!IT-D<|C4+zQp#1%@6|I%@tkGe+d +z>u^j`PR-!3UMjr+mWH~O6m!NB*`s#3R;qpyP0FT@!PnYUR@I?eYq?_GuZ-hdxOm&H +z2($9%nK?j!7R*6{stYVrD-FgYHomG2BS56`%tvCWEr)^rN+g19p6!5M3M|E^Ks+z@ +zM=nIYgeO+?(oc%;up5(SY19=qN=Q1Y9g>t`V84NdLPGdh6XBPA{pVIKg3~TXxVsd& +zU#o<@tCR!+6$cA5<>1Fh#+Bl$&_pV#J=@cL>uF%KPuEd4l{%!IXG%}73g8Nz6gi-b +zZ>I20VlUl(*Xh}y6|FI5O(ui_jv-Sf(j^{M2JCZH8}qnLk-_P_voLB*Ue2+Q!dp5mR(x}=lJXw+mFY2G*$M9tpIx7M +z4LORe)|+P8O-J(z?X0N`fBN8s97TL!RCgJaVa8u0DV;U>*VY^nO6pTsev2)Ey5kpB +zR~i5L5wV13Bry_VgIBvZy{)?QH#QK`cjtD>NEAV!K}4|uV=&`qC~UqaqLbk{7H}EyF&xYySh}JW1hsMV=ymGP9eS1<7|A{oVNlVdH1UXI$m!=!f +z+#P5UwQEi{>wUZGg)y~Ld?T2kG*>_X3EY~qAc-ptBt>hMJE_JpJ40Y()bjdsI8OHS +zkY3-k7REMtdvGnq_a}rXpFM6hJ&F6T`(*_DWZOMA^4*HtQIe0=$5yXL0bLo}1y|?S +zJqyYnZQ9eCir}WlkPb_DOpgtpwD+5*_C>HjQ-q97p03g%R#6DH=V1^;{GO|D<(SXT +z7v#?kgQW>ET+_$vW4fJ=AF}nqpyT_{-vQ-5>0FZpfXRcP;?7%r+2IKheP$Zmy?F@S +z?^5mFC6(R}IE0`|y?;r?7GH|2UoY$7Z9=~LlgR0){2qSJWBsgIaI2=0t#M{HW?w3} +zyP>#GDw^!&u<=K^RS_Yd9?axCFS0@TcC@!{BG6%l1oA|n=#g1nk0G)=XvBb;+7QmY +z`>CKpNRNl`4VA2|*PdWAu6c=@vsR5UYv=KY*TTiGzY3G=@ct0+^yGpe>kAH<+A7R$(HYjgS)~&GkpPr&W)Lg#=cQd>lp1F9xST8B1HtTvR=D4UL +z%pfyf)%*yJd=v2};xk6DrA6vj11aIJ_33pcexf0GFI4vuec!-^ga$l=x{YPO-M96V +zrSmp;1Y+1M>*+3iBa;X?Re>2}y5-fz54}^QzJosJ^1PW&-8~DT2YIC%1{?YvUboZX +zo6nW9c$y{7x>6()@X(qhBp4fSM1C({&h@=)uhcW_3~;_eLNY)b!w`z&%ss^8lgSY=E?4b5&vpG)>kfc!yQbM>1EL5v6l=!dZDR<=B$ml5yV~j-tw*!8 +z)g)x*T?T+T_$0DM{k59A-zgVs`01)Hd#RoqgVt{d$tnXYJ`Try=Oa1`piR)S(uhPR#+8U`FAjSW(u$ +z*xwDXE{3sc!{AzEyJKR4FMx#^rwa0AP-C;GP)#}hEtaLxq|v=SVO#fL8OfL~0R3dJ +zNE?G~JMn&qb0OP0x2kE)pG9BYm9EC6myhpJ{tV9(IN2{7RIR(U=r)z4t&XP&jQ8di +zMv8oBXC$jhA|`nAc|*-^N$hlqiiB>7JlL?>fk3#A>pkun%;}w#lHh)X79>%ECIdS;?MmjHLWb4%(p9zXKCsF8;uyr!aMkHsfA1yd +zP!gi-e@%bC14dY-rq(NT+Lwnv_;_d_R<6EI_>u|9`>GNi77?EyLAAjT-lL!dV~$Zc&9b9B>4^H<+8*gL-pov&!_wL5SD)kV +zP0toD7QIGlZqfa7$`Vq+ssmQP#A-HC-3w$)*&BlR-Llj=a}LI +z-rm4iRULXljM$`5YGT{6PhNA#40RoBWhgG*+WG@Z(EK|c&ToAu*=M>#!^g6f{Zweo +z>HZz8l1w=6E#%B{QzOB&*x%oN$hz$4yflsopAq>6SMsO%f5rU-e7Id`vUQhNNrstQ +zLD61>W5(9Ixs>ep$7VVjiB!wmud3CO?3{Fo`00+-`4z8{BdltX{n|SY1e`hqkRIzU +zs>n%-YFm%~UmKL=T}u9$(x-q=s2%Sc-tTiUk;P}DwI$HhB>MP}smv)}Ez*?ib`EIu +zEqH8tqJ`^*a;r38s;iFpL|$AR;3S#Q)NYX&@~jX(O9=DGf4pvPW3s%2AhH-bb255x +zm5)4Ba3wfL+^ow&Vzg7_iYLD1M99&-PT+HP`I7r2g`)iIotPSa$(M10QUg8Dy%Kr7 +zWXYWTc^uO+q=Ww@BZ#MM9B!ygEoq)5yXUxRjhwyoVB6$%EHwANr)6!Wevlm7&{+->_~$O98V5& +z--J(!$}OWM`73W44X`NM9afcJR|)axQi?|!Yp`A?VWIKR9~!O`j?eVLFQ!>AAEK7@ +z`QR5s{XsWXA1HD$GV5CHs{-+psvOojypgj%W@DP2$S6~PM1dlSC4##7#O|t1r8etM +zOmKNi{CF`7e!U14NL0h5Pe%VXE0S$;(irab{u-kzh(%qk$Sufz?$y{8ShvDNYf@iW +z{gv`hQb=;CBNmWMP=r71u8c;bzL37J+3Ad;Xp6-Zg>^F9N0TU;K_B@RI*Wq&F5Kpj +z?vB!Ww6C;7xziWJoz{Ert>3V;>b-tqS?SzI{ev;AawK;Ip#x-hzrQ`PmFaOY{gk_r +z0Q26S`W%5IV%mUImzQoI^IUvE+D*9?Gf^{K1|x>)%in2OBM;`8H}aWc)ebl034KN? +z9iDbHwk~5uh)HfB$O}Jk!0>aqHp}#DbAzF)mJx;chzOO2Flbyk)dvHMGnSKb?8{N{ +zO%d07-{`VW7wYznzPA%cTB$E6^@KI|;yY&)$+`Y~Nc$iwSa^-a@G#6@I;`DOtnDMi02SSAxTAl3 +z8X+P2!uL-PnD2+6GqZO`J6&i=uo?ipi_l{qwFt;ZWqdUYdJDyeoDQjQ;9lDgUcP`u +zhLB(pfRk8Lk!X*XzlxbKwc%Xnn1R5V&TFmid|l~sfIaVl6-GX-`MqbO{^9LNa+Nm~ +zMIt;?hJ992$!jsmLBxxXD$7Dk8Sfq56Ae(;ad9v#Qv|VS1U$Q_Vb-^^b*kLG$G)#h +zFd5nD$YCm8yTz@34&JLo6a2lRN_|@r<$P1DZY6%tX?D52uRFf3d0XJLN2jt$Ml2jt +z1kvX&h=*V8&#bBb|#AVSg1m^a!_P$`lH1=zrnjqIs7BTQbhyp?$^d@ +zm%hS42~Ovt;rS|Uj3i6@j5jMcfd)9p@A`BCTrb3n&HOG+TusQLf+SYZ+Ur7Jt4I?V +z4@_yQ#OYCtTsc5>GFd4*k3(peB(Ol>D}){{a=?od+tUA+)rAI +zyQ8iXDF(zW*IKlGYo-5USM_Qh9^ZYHC{zwqlM0oO6kFF)pe+a?Uew6@F+ep!xYc9( +znX)H%qr1<~dwSrJt$VkgOXYhW8*in2rwG*T3j;p@cEaRFY{|%(aE7|<# +zU@c8pkz$}cDy5P?q}y}(ORhM6i+}EZ!onr3?nrKsN1s|^YRG@l^JQPLwzfRI(ZWqD +zIG#6{n|MH?eWRrFxXpWYSTQ>xzTkHwb;LS94~&Qu+<@?$o5n~{gx}7~DHWq}XcY;z +zyZg`+B;@Ncw6O~r<@q0zGc2r2y*I8KV=Ug5OK~#kGTRN{Cbml(la+S1vSXEhK>79z% +z{Ij5ia9dkI@#tEI6HC{~fF4+@FC#PH@N*zAIws8etR;!?AB1>)R;@jhStN(36v{z> +zY!imhP)&!B)W^`-JtEaL{)q2b_GSKhp2<6^(svi0j?|kY;IJo_M4v5ydjCK0ei*gT +zXj8kQ`*8K#>&;By8H5|;0-?HKMoR>bbyZVU?){!C6&$8khDq?<0aQ$L-LS*Qge4Aa +zfS3X3os|5rm!cYfLHz$=PoUm=s{rg^VZ`|rCSVjTc8!4=&SuYfm^wfRY+T<1>s&NHPpL8GAgmv3E^CkMv}SDu1k~#Uz-DZ>}t%Ix)KC# +z5l|mBtbZ{M{vrwR65$d+F&;6sldJdrt +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 +zJnGS2#lGqF +ztbKE}?uEX@2GS@}GfU@I^=ZujS(l-$PRp&ZEDlsnM6W@}uZ-LW@1gmVx8difBY~Q8 +zKVz(PQTCr4X2D8W?o@jE9o2s_-h}>2y^hjgeg-S(8fc{BAi>{+0e9{Rt+~w{s2lzb +z6{oerRLSfO^7%Q&oB%}!ur76BLGdrjrQ)F|4nw))PS;9mhX?pR9F+c`KYy(~+f1C5 +zxvIM#cXf8Od2$T(JrJ@rTk~)|n421YJ5jVYR8V78RQ@HqZa5KOdPkWbLvv@2KaKBnmwzz*k +z3{VZP-qp{%IY(k(Yo8zMJuej(rz}Og93hz3W|ZQvz4F=e+uf=Tr@GeC%2*|q7pgXZ +z$i=ZDcb{nFy?2gC+Y`2k@Up9BEJ@EgQqoU8+I5G%dk-L6-&dRA3K`8Fp7jxG_P!vS +zG5cLFj%w9saT{C5iQ^nj)>Z6Be4TLDU7ha#jB9*0Xt`IpEPwBBa3d))Q+7i&yTziLNv-1M=ULrALd8QkHWzGj#bQMi6vu0?$?YF%J&b5g<$i7ey7LE# +z{&On~!rFI0@1>DP!lXFi=P!f*?gG$GSU}BU_%5&abuX)#(;D5uyFYK1(63UVLa*{y +zAF%=wG(hihM-bH|Cyh=!KK%JQ%-hU7uVGWyx7vQkfB9#XF|v|xTm?*c@4Xj?BXxG- +zl*%SZL|?ThmHV|r{#$&zr_HLCc;XOsNq4N;f{9%FC+)Bw1G`H2*l6l$J*KYS8>E*B?cUfLUKvc4 +z8lhH)-^KBGuTr#!I~tE^P$Nyhj2N=)KF~?1`yRXQ*(^!xe&r+btL1&L<%1lMIO02| +zQlJ%-6Sxg(z0u05CN_NcF6Q+s7UrY|!rlZrWab(Jri#NZq1zyBi@Gz0f2|njrpZ&c +z(>xAme};{Ek;X{+hbv1V#g#exN<4avR|wAs(Zax>mdY^~Y^|h{Ki4=9+iuvR%)i85 +zagI+g5$XLl`$q+?tzB}3BjGG=L7#OBYN@(!r#wp(%G+}Z;pr)RbXNW{m>QnmxAmG( +zqRR!$hIIA#Jq(d$4ph#<1^(*+iwUYyBGObFt7U#&NSzwI#et2{ozZ7gr6cz*ZxH^K +z>Ad^5Ye}2o!qUP5PqM#5?Sdx1uy6#>UK9W(_mc^964O2AMt8R3YEG5a>vhTch +zKw!ZnWdY!Gdkmp?I<=^k&Qw_KO8VU^&~zdjM-j)6(clvSK*&A +z@zg>42TS2bKJ-j}-?6B*Kl7xxdVSHWTI#*;s#n|o3_^Jge>ThLe~B{VU|P+nfs%bE +zQDMZ>p9}|B#|B(UQ&{jk)SZV@9}RNv!EE +zKne7D?8D0AA`{9K@>FnHNGX|`loYjz;tH0sZ%N@_SPndS~7VU(0jo@@H$fGZVj+zqp5|UWcp+^hMRd* +z$%D6lpUBXdfQe-y$XyC*#TE(0B6`#-BAoRz=}sBI$M4bO=U2RTwUTIn#pH-U?X2dV +zGDs)QZmdpib~M!C%Pv*QE3WKaXTK+q;aqa4tV&uHH+YsEF;%`UWMSS9hFc_h$R78W +z3Re3K_}(0sFaFU$Y^!TS%9f;Urwgr|3&4q>cRPa--%qW@vzH9sC#qnuNY_OFONGp6 +zb@=k;aks4}l^#6-2Q8@Y0cDWYq2*jC7`C{0zk1(4J0cZ;or&gOTZmz)bLO-oY76SD +zkyk~KC~mBmQi)p3`~-hxFg$DcQ_u#{(YsEu5_VELJdopF?D__y<%fXR5XapdXsX)6 +z33)Ycc5cVqq6%SAL-K<(UNk^(mO~RH2H0XHshk3|uSVfF#^uGgf9)k5)@$T+>%*X7-rXRV)IXot`X8@Ns{&I7Nde4f?J-FOYp8#;gz8Yq3w +zVACM#+!El)Qnhlcdf*I$jel{Az2URi8|Q_?iohP{=wkl@ah`1IT(L^YrzOg4WF5Ef<*}Bs?`MS- +zxB*lygy%3iLlN%z^K4qE$cTA1id|Wi>m3plL{ttCj4Z +zXEpnJ|Go&@CS9d8+s%JmM2nDcUaWr88E9vwf%=*ME58bId@($NH2HTBW$Q$><=3eBhJ)gcGU+QN+vAw +zfBBpuKr^?bznx;QqxzjVTEW$qp7vj>E`E>I2WCa#PM^FoZK|zxG&Xgecg4<5Q9B6L +zOu$pWRZcH1qIQiGEy)y2Y&WgoI8y8`D8SdtOZGDxc@R_K+_0@ +zy}eg6FL}GxpT-Ac?gRYAv-{!WAFFsmp1{*p5#T)s5w6lA3hd30_}Wn#X_1!Lsr<_w +zocJZ1=0x3DlDx+04uA3p!7Dh$bEJ6kv#6A+{P>nq+s4gh&7LM04!8EG0KuM+;-wO%Ms +z_5#u75(d@R-mQCb57>@81wnVX{lIG!5{^i`vZ|=WBL$5&Tmc_E6cC|xt#iD{X;{0+ +z+{`Ywn=4v=2B|UIf0VwxV!RT<{xo6G&-qAsjAb@I!+j3z9oB?UrdANh-Lz6k$aj-n +z*U-N*X7iIVeDgyKgX9^CCQUhVXSmm)Yw~VXXKQYMX!vFyFm<@lrvyEr$6qvm;~HV) +zp7mD4HkC(gy5V(KkW@xzrw!*Cu6I)SwjOacuq*XGX(*rU7S&1)O3i@iCfE@6Kq4#qqHSh8Zy$pKFuhBbB^xyS>sB+KU^f+A`9Z2qZLCyL~<5yIr +zecJBRmOXKtQ3e$3>@9An^{Zzo1fDrnF4H)cLX3s$u3Q^mk&sz7_sGcW)JHZrPr>U7 +z5_aPx!JdM3dEO0tP8v(shDsk8c8$4}P>m(W$!S(ZB!W8ICdbDbC{y;QzRQiA4t3t1 +zTAE3D9-)GC=v7$ug$>epBU;=#4 +zJpyn6PDd4V*@~*ebzI6sLMSklL20by7Wbm7QsF +zF=sl*qd47oD#)x_2oXKHe6$TiKZQ{`@vpU7yjb%MMJ~S4my{;a{qf+cH5I*P{XugI +zk^HrCZ~yr2rCgDeDM&plcoKyk;4p45)-lABnxX@V7zsp@frbfWcS=)^%oKg2r +zZfU3#gMa_Z9BQ-q&1(CVvep2rh;5by%(0f>f}|CvrbBBy$X}TpXf5NVXwVMYb2kth +zP9KM~q`Y+&v=kqgn)hhx?;%_9NqoWfRCf?d{8u~_EMdlNej)KcQh?#TbavLl-5HF47~Mo*;Y?()}gH +zuzBHVQjoIdy8WoFRRNg2r6Qk;YJqO3l+zHNn_+`9KT~jRL)^rkftkEhwtY1J=_~AU +zA4a+wjedQdUu^h^QEJSsNG@*uo59TZUaeEa*hbSZk9U41N1NRa!|S%J?k+lC{6Y?h +zS)^z;hTFz+%0j&K8X(rcrl>>dH(5OEyG4<}aJRv!H@tQ;2NAkrDJA=!IZ{R!WH^Bwx01R#0chdt0*g +z>d-NLIcFn2;ko_oqe#g}*z{75(dE;>d}aUR8pBi52QR*D=G?x@DizI0p^}m|nYhmD +zy;~7a6ttUtn~j0{4Jp=*^EOph3oWp0$dSQVv0-7Ew< +zR#Y)BZZ~Vc6mZ4%y_A!ejLduvSD_I9=`>_bffe^VgRoDmY{!?OrJus{qh(&?v@}(8 +zYB-lotf;{Vu4(yf&TAAvzT;DD*+aXVp_HFF5ybD2FP|*{le$zzO%6^aLp%@ +zDzqS~GK4(a+1C(^Qup_lOEp +zhO+HNlOv9_Chb301w9N5#XTka_11o>l`FKhJ~~VvVk`O@rG!^7uA{0Xi8J@+HBzHp +zc2@xb_|Vh|mbdnk0IJ*sok?TNa1m`Eyx0l1-d;c#HnLNd(kaqQtJN0NsG?t;j(I9} +zZ`UoWHrB2TA34d|3pPDk$>4Xa>&YY!llRQIq8XdFKTE1TD3%+dho1pycMEX)&GEt) +zen9i(s$g}3Yj~{^BO*ezMGNy8GtfS>YF8e`8sUgXe=|aT-Yf~v=g#*@dK#a8 +z{;b8m%+~+%jbNbuhEq%a!^XVJ&P*jhpcrs(PiEJGp#CeDnOB3~NHsG0n@Lez0 +z>7|}7c(G^jel>D%*I*wAAZ+-JcppFh_S4Tw@-RL> +zexj#uw6}xqt}ea(F5PPQ^MoL}ZG&T`vmFffZdFO>>j)wpxNUE}%$Rzkr7MF1l%FsW +zb*!Wa^^eOwzI%Arg>jz#&WZ5zGACl}kj!7Lv@>-L#r+Pu0`T#oiC!&XUpU{pCBn5; +ziGbf=G*&l90=AvcCXrTBqOvZHByy72ajqpMP$LN_mk8uj?XjO?rt)f(yD-!QwB+boqW+RMbPWiA+f +zP@NtvzDP81?1W%oNH4oi*pLw3T8=uxyT-So`qnmQ6Af`7VC2k|}P>W%XMp%Yk_a8!B-wyviBK2%WuqQdxs00zECJoJkcU-sED9jmL|m|Qt#tcAcKmL!MzMMg2tPTK +zRI7hB&LzxqE)=w$#G`BYB#fEMF$3W~u`b;ZkyKwp8)nV)OA&@wZKW+)9cL?E$ffy;dAVWx9Vx9S;h?HT**`Bh2ZICt; +zpc9B91?ws)7wZdrWb`FmDr~_q0Ah}9?zjYz^jPAzo4doX|6SzWa0Nx^=H^+|F0W{QPGDSaU{!#kdT#XlTukSzY7>J7eDw}d}zXdhd +zBFAtu@JNWcu!6S8UNqX-9Q4Uz*W7sx>fPLy?#wR|T+*f^q^UQ1_xfhRT?9QXjJ$=@ +zQ1hG2bh@~?$V*eGj?K=n#kK9kXbkpD1Dk~;6-pL +z1maT|p*xHNyy=IYg&i?Y9f_EJx&!Rj;xvPiBSOut;)g3nohQD|-mn@_DlHiV&2 +z$e=_ur7PmInLlh7f3|)d;_nE&Zxg>7ZTgC1~m9X+D +zSVq#H(k{dQf9#9JWvK+>`YU>hKS(f#(yuv~RpdTMuG?}JadM|sv^Y%-hrD{)ksD%}~P8Q=zCqo*EbR;(1i<-vUT8%#x +zg#|fMH=%4co_+*Y2aKnm)CQl3nt<}&vUP|=B84XO^O4Sm*H()@`&30+toh8jjoC!L@ +z7o4c3btI~iU>b(YgMe--kHkKyDVPA{ZpEF@IAjGKGpJ>ysg&Lnf{q+QZ0Kg2yD$kG9YuB|x^|>#)}$SIl*Q6m7cEdf2N= +z$HaT^CnsXsYsS%&u)9mVj!-c==G)?E;Z17gAk%F=VRiLup5Zc;U>PF4wTHiafj4qK +z@=^LQ;anNj>V~bf51cp=!ekoTD&mRKUvs~O153cs!_v9}U +zLcXO#+cQAFS5zGACZ#dJ6Rc89cYr^XPFKjSCuM$_N-hIG@NR5?x7in(Y1O7*xWvPo +zd#mYUhfiDth_sIkr)~@y^#$#;ltt6!YP%n)z1y@2ze`iVINcaY1j{JUe87Mm@zuAm +zhSN2k9(cF@aJn%_ImF4wl`F%F+=dCy~ +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 +z&p6YIvK)xCD`?$dF@bb54{QCy~V2_{o +z%C@6=@GpObl{Y1{JPzlj;imD5fV!52WRt5?ndAOP8^FFC%cdO~dah(q7A7OW$0|#* +zc6t~$?54IjY0H)!0HQ#eiG2|X#4JHHk&W?>LlJHJ)CJRd%|u_W#!Dc8v*;o8mFvH~w8Ytf&!p?>%d$VO?oThyx#zN{n;X2>&f}ZR~T#-G&AvSSr_C#s<`BfHr?UYP&c*26MZ)YwTA05pBx3}sGhACO8yCg{e< +zjrJD>b6cTGYp9YxkU$Z*5cHEzoQ%TK7aNg1@IIBa<``ttaq6yG!LosBDG$;EKUl4H +ztYpiMZD8M3TRjc4A6y@O^gc!|QR%50;YbCdy})RWg856Ab<{=m`({k`I9RL&>kWQ5bk;!r=rr0_j}}hw;bHXi +zAexx$NOUC$?(R2E9n?{8M8T+>@vs$BZNNl?!FpYfW&9MW@HfG%;$A}mI6 +z^8Yko5+;&U-&x%DtbfC$V_m`$v_cHVpaa;d5|J#ecq5kfXbfWuTyU4D2nw$8m}b|* +zH|S=CTDYzxw~Ti}FS_cClp#2{yHk@S0dJ_CV4JS0pX{}J?SH0iu%S5 +z+zEIdAn?3;cC<7FKS{a*8s+Y_H1lB%gY{>>f%)1>K%0`I7OU#`#1-%D>=!i!mWu#+ +zB4R5fpht-UYIBwS%6elM>9y2po|(2hdTMq~*Bb>qRRA*b`027;(|xmQ&Z8n-UJEEB +zOeDLjr}-_JAuqTi9Q|nBOomd^4lR1)mz1A-!oMG?F^ldK4@)^uNftDqk&K6i#25!0z7 +z8Pk`C7WUECpacsbW?&t}o7kZ{{il!Fs4LEkN>>;w<)j*f#z1ZgPl~rsT9$uk3K{@* +zA&(Q)olB@EHn6CUU?^uXzhsSQm7P33x(nBq9ktYsm!n-Y4G$iP5>~SXvYtr@+m;a-ix&4}9Z`yiq7@ +z_OVD*lmU^m|7ztbbqzyu4}b}|?kF7T9oQP@vdHccv_YtnU3DoxrSMQm&hvypvwlTd +zwP6rlNK}ZM-I9q30e)W!{38lMvxK!nRaSI@el*R0r=v2N^&S+whiWyt)<5V(c-g|( +zszw*c*Yvti7~9{x8SV#5Eid_T9k&|jAi+0L$ +z)C)d4%p-=N@#26XYjR`5+&%%0^k{ty>pZz5WKb;X(b$?Aj@U`J9;dw>&Z5jHSbFaj +zp0!h*u3zEWuWq(;J=IHZcnGs3FPXCJcv}|vE5?RzV0C?HB7kYpTR(lt;L0+mrQ!)P@bk(Kj^!EpoHwFsm8|u-BGRZJU +z9PFFr>psMzBE3=YaDFJ1I(yh;qw#BXX`DU`^=Vay=i2)*D%r+dlL^xpP;E|mQFh5? +z3y(_zMv7?`#Q4*4P~i~>$Uq8d-ZHIPYMrm&O@@fsFcS@Wv4QtVraioXO0;#DcuFku +zeMYSY^L<12#{hWCO5xW%Zt*C)Oa?r&b;=aItrKnNW_H5*07BdByvUpks%$4J{&?i|ho7oQ@)*Gn87~`b$E5nm2 +z0}~U+$v~k>ldlfuZ6}i;$~-;IB1| +zP4z=xf*wH4glJ +z@k_5s@=qW4Q~%h?L}qcf{8+y$XJPyx|0RYWf=+@ZKoIh~9$N{0e@NrsaJhD*3`Dh( +zGE9bJX~Cm4nmn?BuDKC?5YUKp`k)e+yldaLbkqs17CT%9CvtmYGLn#>JFxh))>9Y5 +z%fnJ6={K2m{+75Fb1VJcs-s~;17vr)FHc$aQvYqcd+@#4v?VcwO(Ghf%7WC%bL)&# +zelIT$R(bu_YuE1i&R=}Io(xn@Zp4-2WzQrWZ3;(xrq +zz(63th&eNk-F0*%jfrypA_p0NuCbT +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 +zoSyQZ&Gt +z9vs?InWBqF)$nCc;JUy_rCszJ%fNHb*N3PP{nvLOB-0T$+|0>U>NLHNr*;B|FLlkc +zMUR>-?25W74G1cadCUad4N6QD=!OWH=&6&r2|Og;>5iBaw8jWfl{cLm +zb6}dv%N-Kh0MSa5SnsVCv;9#>nFTbnn?-NbIgiIwoDvyQK?4;W_ibrQz)cAiDAGHQ +z_OxKrUUy&4etWy6<$uydvpZ;F?DNOqdUn@KuN4nRgNnL5q2=Z{Po$feDT8ZsCCm@j +z%}+STHwLYyjAM+)L;v4;GcFzbA2d6J_M<&idspG6d6rD^d5M6wEC4P8%-hq+b^k0dy>FKkihK7&S@7YfjXpCb(oZ)ITQRV2_n32zT>PT;u2 +z;(F2+>q#fXvf$Q9?v>-koKB}3HKGIJ-~#~rB0iFPrlO6FC{T95jEi}NR@>^s_(=;Y +zlNwa`m>-R1bhI_}Ry3yp>(`qZ()oZWRt@ +zv_LT6%yBS#90^mvCoJFweWq)EpHpGdNbx@Omz}H|2|FL;h?+97)m*kIiJ)+{R +zfph{59l{8Q(%+dKe4h5fAd$i${xDUo7HT=(B|-RVjaFq3(c$TvS;PTwG{>~P#1pXN +z+*PyY?D17KGejZTlsvRJERZgQa`<>o8|b5EkB>HUHoELxOt|bc?ddnB?7mAq5Q(8) +zC(jqMxhOIK`FBO+eDNqM5(b3Lj5;BVU#`Z_nD#QbeYYyA{`b_)dmB_JNe|HN~R%P#mTz^A=jpG)LHt_B!- +zlse75FwPlVBOS`h^M}2KRmyy$qh`2(KnOi~7X?CRr2c~!ZcL_e1_br6={3v#P)<`&-K!~T1Lh9M$_b8_0#|nfsqaBv91f$L@ +zz?%51E=uh|O003ppzkeeEB{SL1~gfL8kl1=WvcI}n2k3A0->Rr{cZPV0{Q{}yNUd) +ze6m)O;n}X^erf1YRM6>wp|qe0!?TIXkRyU|OC97eRb?V@y+LemFtV_s5J6+8X2Q$I +zYNEj5#EkvusL`SxOVN|Z6MAP?wFu%@1aQ$TpoHF>mRbZ8pzj>K0EIIC&CPD-R>HZo +zb5>C)5d6Pc0DN(+35Se5X{@>216k_8WB#uaL0bsU$I^lP>3sq +zbI0G%#iu=t?J!T=!Q)q9dVzj?{u1w&_FQ@{@?kOwIZ2_ajoJBwLxk3nIEa5oHZLRN +zSlp3fAN5-cS+VO>8{2#Y+^D|BKK_{SFRz}KrBRCYFCqr?6dNLA +zE5Ae}FpDZixrgd_BOQ=2jV+Y^WuLlr+Ao=9kHKds^Sh=a`#IU0HHQS)-`dtx1~ItD +zH1TJ1HrI&LEQ-0`U(Akl{kj#G?L;Dn5t +z2PD&3hb6sD=)#@-D74#4T9$zN54b0-=vCg7O%PX>8i$K;S*s)+E<_wIh7aLeb7p;E +z-T1lSZf-2tj-91p;hFa!{DtA36?5J-;-%#hB~9SGk1Y{MTnxp`u|X3F0t~3F#|Vzf +zCFrUTcxO;%&dUohJI(S29&rg79b5nuG=$(Ahz!zLu4;IfTIRJv +z!}gijnBUxcizKm#9v5q`N?!~)Bn%xkLLO^uwU4?f4N``V@(x>yQX&T5>jBFvi5LCh +z<)$qB5CO9vb1%e>gDDnD{SGaa4aIkK8Lb{JZ4*qf +z_prBcXHBy*j7;uNU{NK{6Ndc)Kq0p#?_+@xGbMWSV8RaU^dW*fJlU@yn2x%5y|j_3 +zh9XIRFLbkT3LX5CB8cunt5-1aAF)9(kd^f1`ZFpbL9U1w$C%U-A)IXszw^gec^*)T +z^10-Fdc7>XzL?$6iKBd!uE;e2amqS)G`}@)T`$X@+S|(>X%yhRDWS;oVraUHOKO2@n($5qs%06^>QrbbL;wpc;Odc_Z$dYiGvMrysUx~u1GAN;6NpJX +zpBHNG^~qLhYm5@Yfq+v}UCxfMMSppeD&N%)nsXa+YcJO!#=&b6QaU=t&|_YxQULzHaTm|0t_4z?MYeilGC>tF<)Ms{`9+^7!K`4 +zchWJ8Cz08eS5Ju`@)@T5nsB7#ICMMLNnD-_t2s(+DD{-!?GOG9_!kn03eShv%JZ_T +zt~?bB8X3Sb^=7yeF-|+x(G%`Bg4x5?m +zO#Ju%JE-4jI2wnK(HlUiZB-N%;C~`&&NU4**;YjdI~X(>O8q%r(HOf`)X7`@gvtHGwXXr%W|>!Ih)P}n>Sr}QuTkE{UmZK*u3 +zmW6Kmil#j77Nds9UVWWotC+agd&ktmhFd>PrXR)B{(^meW3WoFo>H)08x<^~iQii` +zcH%I0qv4r>QzF=3OT>*F?WnkaQmV~zO_r&vg7?lu#rcm@CI{{ +zc<+M7+(tS}3A$pE{-^`;+S?W6V6;DaEnVZJ%Ea{evNY&j+8u@YkF~!glej;+yf*hr +zdSCKNA19^YrA#6p;%8JBCP`Vt?tLVoE^XX`lNN9V=@6r=vqCM?rT(Zt8rR9di|pD@ +z1n=1R|8rmIL0b+CmXYe0y`RlPttVYpnVBWcns_*i)o)bsXZK0aA#Tc)P=^U}ih1M3 +zUu^}x>~#!XgGtN6ZeM*e$A3~w#OYhRC84@E1U(P76&M`ki5%o)h^j^86!;*lrAIOW +zBGHH-PHK&1k%%j4m5)VVwUMO7AEa&Oqt6B|ipPIH@?NZyX|(^Fp0M-x^%egH6awq98prjRMmSuelvS5o_437b~7_asp0=K5>q**O+}D9hk|5-XhmiGPt%$H +z9ok(E`TzOuzX{`Votn7Io3?!0$>n;Gd+0a4`aR1se}@e*GJxXor|QN=p&b+Fo5x@t +zWj&3(MBGjjoOZ=83T;rP2CTniB|q7H43`Dv$+h5_dk!WvLm370R5f)DL^Nlb_?4fK +z#R%CLDGNyu11{b_eRh58Rzby5eaNbFUm5*Xj7HRT+_W?EdPj~ZFZK0f_ZM-(;=fua +zbvR@|X&^B>Nb%xrDdCLtHt>8`^x +zXg^X_@;Efc2kgZfZAY3lI#0qbbKL(uPDNCd9Mrsteh5dq(0;X^j7)b8yi6fUiY=a1 +z-$gE?XHI$^4iSc8K*9J7ygkzA^TliOplw-LKh^w9_y0+x=CTAlk(ktIyZ~S4fRhMN&rwJS_)=$ +zp$jPvt|ekYE*JM#YgsUoB()QFmT(}VR(g{YE~{Iwl|?r9D$CpUu{a^)qdok+g!4zr +z;asp38U;JQ1Y3T4)UccCpI0=DTqyi3G`(!W_y08Z4xQ654Ey}ffLJP>j;vmiCDatXS{MaN$p%{B8gdsS$S)3%DbvxI8Ev2<$r#2430aJ^^)NJ8}hHw*tro9Qu; +zn+SiP(tS7b9$Uhu2%T2&i_o$c%@%@81|xHHa&kl~6F$8!74PK>!-~*amFl_7CdG9u +zRYVJIK=?@knihXUm{vRgc=K@__X(cf_?MovI8g&V+$JztN#N8ZrUPFLtE%4nH=?yg +zJI(ky4J(VUf|0mvrSmo}`giC%U9|(z5kujTi37k=MLScYK*%5y#J4;Z;Y$-{l1>+ +zOrGqfI@M&m$+m6VwmsQ4CfhY}vN74VYnuGr-{153zdA3kbKzbaYwf)o`v{O*2gj9Y +zv6ChlPhtQ$PG`IEu5COo7X4DfcF +zVPoT!WMD#o;UYEbRQCpQ +zJT>U^_A&ghO~QJ^V3Vy03AILTh5eLtE$-dI;tNA)q3A;jO7@NOI96j!r&auf0uhY) +zt`H>^^8Q41b-o4M&VHDU1nG(4*iy?@=Y4w35=E$u1r8EyNap{J3msuR)efz5(>8P? +z!bR5!_zqI(K98%OOx|(jZu$#)Juuzxk1ODXtOdu3q+=Ci4{{kc(;jM=#2S)_6|AK@ +z_c_DaCI=mjy^Wv!9huEV1Uadx72g|sgb@FB5eQ?39Y|O0DZYDZ{M*3i_geaZkg7}z +zTUI%~9YzfXC;smrtQXjvkk_AW%wizLp`IWU{Cm~SvZP9DbX1h>~n +zbVZ{OE#OkUz{Y5N&G>VE97p785-NRjW`Nb}OxZPa`To_KVtKO|2Y(KP$Od_vJ50WjWLc~ea#1(_w# +zt7b|QDp53FEHyA%Un+quUwF*Y%q-(K|DF4@?7oy$DFTF(Rem0KN+*)P?{HVzriy>> +z#q{8ipMteFClQck$A=sd6IpWK%>QCn*;1HF$7Hua;u&ZfwU54E?}5O4b?&J4GH)(M +z5M?L5K(|g!#^p#ICAZA|$Sl#fTcI>a)}%vDkMCdq{m#Ah)W!8ujNLU%=MA1^0Mz@Mk$!&|POS +zliYL=?S&aM8dg*oe)Q(3%Yuu6w)d+o-_5^_q|7g-%HBT-D@plhJMUGMWYy(qo0~)H +zY_{AM!k}xvyLrF)F@*X4!XbhMB?OESl5X66{{LtZOWf)z9@ti6dy1<2Y%p49<7nFf +zwKOxT%OI=&=izjehedEZq*l=&hW^%g-mLL>ANM<1)NGunWXy)AUq@<{@od-61HI8A +z`N;?Kga_%r7fYIM3*)qRt9QVZkX!^3Ll~Y5JGq_yy*7#3_f!423)s_J&$u(?!&7CVlI_tByYX-_jGXR3`tf3fm2J<-Xfim%2Y^EB7aJ +ziVkkzio0C;Fz-o;~3lKcuoH8VS6ic+_5DR$wb8|#f#vC +z0r7yh9gM?f^heU5!^hir*kg^Qs~twr7arm=A;z(m3JUuw;8^Qr?#I`zxPxK(DmxNB +zW#i#8nFFuJP7LoV9B=DVseY*#4E9~8owR;#Bd$^_y1<`j +z#(et0_s@4$l+GQ$VZ>J=qd%nyW0;!H*iNp`C>pnRXoiZ?-lg`WU429Hh^f@pTkfPE +zlOaPrcl7gtD%8M~B2p8#n1A!ddsMA``p24j5h;5mt6MZCsFtnr7t#jXPb73-YlP8`G=}BbDG_2G_j4JPw +ze?=CjjpF5Cu%sKWAHOvJ6H24I4NXr1c%fLoE4x1wF~?zsIHi +z+8mE9DL>$@s2EKUQ9;Gz`3+1^c{sqcNi8j@!$&>QDpqUJh*(K%Rr>wn*tVecIJgKi +zZC&5lpR$^<9%96D81FhXOUv#|FPb;|oBIb}j7+Hw@dHKP^eJ}UI5PwPq*AfR4hNQD +zG-M_j&1buH$j~VHD4Mbj%0de!%6Qw|ZBotbhU^n4=+CY#Kp)^a1!s5CcdH3Ar=GZS +z|0)CA8jpfczYOUWhh=h?p6=Tv&E9)p(32J(s^Rax8Qb&`0|(9A(ttc!U^A*;0pE$L +z=%Z79^-epMoX)TM?<*fzl+yVOva +zkw>KybuaZZy1b@V{~hhi+7Z)Y%g}T)pOfDVCY{#&CpGtVOWO8r&S%xZ=?d1fRjr%sLqk!tbX^4W~Pvfpww85#utW$iq0D0(8^)ax{BwFMJpPI +zGO9K!`_3q+`9G6YT@Exlr_$>pZxP^qX3J9^cDyI;+~i@})fl3CfZ-`R{tF)4Wc`8GHyNzWPPTKy0I?AH;}p-aLKi2#IFhn=4Fh#jqA|D~I|3_nvO$}w3%_tP*XylDf?*?5f4Sm?#X;r#9Y|~8?+xBTf;;ut +zP5x4}lZ4G&T|iYPtRQa(uaW(236wip{1(U2aIZWLH3`Q49ZI7UkHs}}r%`_0ZqUXf +zCOt!^HNrz9Cun~r$C-uuTTCqy;-TxCLRo(IRoui$KIH}kgU*hV%4y7?<;KW6S^Km# +z1Q8O@QbPbmVIjT1+bJJ#eEYUariPOk$~yBTmq?mTqfCE?j%?s!uW3akMf$qF1Rt@l +z +zScS%m`F=0&9;HcGM7G`M;3<;|?WD~l7JUEB()aAbMNU`YoL4?aPdAgc- +zNGr|{gw4vzCOc00PN&*)5uXJGz{MaHHnZbgAbRYOoarQO4;9ZXtMQAL%KZULFH$4d +zIx~be!P?!l_udG-N>CIEuOxb;#WQ+}l{c9vo-N_t8fj%#xlMjY1^7qx5L^Ew=^0Ii +z_3aUC3?y=YkV`?UDYT9JTD3}xS@VF_oh@udBq19gq-FQkyAYTOvIn`nf8-=NKU(!% +z9MQf!BXmDph>9ndjQle>LXd9o+IL4Drl@9}n~TY6Uflitc4aVn=5)T3T}) +zhbxiI|DE5dC+YQZZnH&H>iamVl(C$P*CLt!2bBCJwcAWdMq^U*^dSRS&h(svr%9mV_9LScKpqj +zqVfJRym-uM16sr+U&xnizAVQmfn4Uy&-cu9{pZW2T)BMKS(^^OwG)WfOb@=a127*X +z{VC0)FNb^S+Y+m|m1&eQv00RL5?xurJa_JvyW4ZuZ;-1#(1(&-#l2tCrk9OBxUj^@ +zE08aEI1$HT(zVKN7MDA?0A#_s5vXj4fRistBdlWAY+^oEMyZ*SQ=ib?o7wYEU!h5Y +zoueiKUB1o>9&K8esmNQ_y+jfQ}SN;E9Ah+y) +zFYwRkFZDws68waT`T1HK1ZDe}7m?>L@GfZ4{koxo&>DaBW9kx9{wFU{m!9Y|-G0|Yw)hi4f4ipU62X1xe8u@%hW!xdQD*?3) +zD&1lCq#g$jGuZn7LnKtEkGK^E2IFN0thZ+57AgDu``E2)$b%;%Of?3PXnt+rBAAbo(?W!QJ(<^VT)fR!f&h7xKZ29Pob=_DoVWQ) +zIzDb|5F>Yx5Ux`yi9u;FM;y;5ySs(0@%As4qt8mhzu!^NB8Zyezr4ojH!M%I2Y%f^ +z>9k!}twx49>{9>}3tN!Em03;9@UAGdoRbK~vMSMh?Vy;5a#w1W;C1s-i2Bs7C-ZCA +zmVHh4M!uET(QKgpfMfE&PM9KRIFtX8?kAgq7B&XTvZ#Qy4KYHR{SmEhP;zLbw#aps +zYq9~_h$dyii$c6qw2{ZT3snZzw|e5rC{R-e^x}Pn{o#64I%6Kx=RnNAwHFV!m#ex)uOC4 +z)!;`P>1FxV>~qtT!RHVGno}X~&z|TECs=wo-5;A0vi(o8Kq>cWEY*(Q>zeg?qj2fj +zj_o@ka~2q$SP>GnQQiH!n=XE^WNMJ({r%qmPoNhYGVFCpTF+6zeLqwL +zvjxZ|MMbQ%Ael<aT6@#ddo`4BS~g#a;#E|iBTj`RiNV#0qFwOTcP>vNdvWUr1R-EVLT1grr;H7Y_ +z?Q$IjUzA}!i|UO4_5(}=L8-l;g|1IlST(Igqs55`8hLP)RM}V|Sta!Gb6kRewL_k*aUb +z2Z8BEk8#Z1dAzLvm*caDK?EG+9I8M7(9=&OKp+x&WWlu^3hH;TM6Y{6KYi9k&A-II +z<|99Kra0*mekh+<(w5}gh#3XKmtrl@faAx3p2=_|iTn?(^B6s3s(rl*3(An~9$bmT +zmOtcH!rAoS@}gnF#ULPBVgKYg@m2D_p|xh-HRX75^B&(W4#z$;p|b)?5ELoMIvcoy +zrc{1PVU}VyQj$(AoUSzf93d;embY0^S2weO_^FqZC9^&H9|gt&AdI?ltd@YD~3wPFCw?QD9wwC+bLI{d$iLl~8U`*lyV~ +zn8P4{kxKAi7pw#HISmW=HpW4OhgJeb3-aa-*>p0mE3Do_=$VNy%j<1`ccNN$4gnqlkS`V!gP*EfShK+q +zl#th?XrkR)e&O5~uHq$|JT+U9kkr?#Nneh1`*5DZfW2RVj^X6?KC3hPHBwvG%Q{gc +zuKS9rx!H{j>bAEbBvh5y-F*Kq=sM<5vD#DDyb-K{hr31$q*G6*#4|-qZWke7@zi|T +zD;=RFH36C&#z%d+6zMn;HoW_32l9Xkl!DcnYq{0Ho#%0m3VJ5Xt1+Q0Lx9Xh+2*Kx +zEw8Tnd?{jN76wCocwR!w<8jiSXX+X?6|ckti>U|6qYR$L8DW7L(+ShG-J7!X7qin> +z%zzMLM^T9WluQ>X>#^ftD*qOpP8Z5TKKxg)oZ~NE)&`FyZkf;7y2Sb5l?pW +zb^ZjLXD~Bw-d3M^KCUc__ +zDNuiKn8Mif9lsc3WMg~=6_W~_H9SRHpOjxvo`~#0YUU)j<>+WD@Q{P+Ulew)MI8uk +zJ)UQMo7#_q@PAV|sW +z-icL3<;l3iv2VZl3>dB7Ut4kIJEI^W8_>1`iL!dGiDc{vDRUx}hEWn?)gB;CJ+rak +zQnYxwoPXnDAYy+8eFKCbtifzIHX3O9xkU31hxNfZZcp=+lB~5TKsg8LC(|e^7ClD2 +zoE0USjIS|;E%_3{+kd98u@kmRSbOkw`Vu<>2^b~t#85yWDO6z1C$ELXhms1|HGApv +zO%lY&C<149x+#qow44TH>tDyz<@Oe)#?YRxq$pXgjMkjq<^BX}%gXDc?0SFx?ki&E +zhMj`*2_ZstUrX98mFyP`2f!$_kfpACJ<|e}!i4-0c1r*p27N}Gqn7Q(`JT$=|2HdI +z)OgO3aWn^Z5Fe5mnj|(lXCyP#H>WUh?5tvE(k6caj4DCPnYsX|KblD7r|eek?G86k +z=ip)c0DBdJ7SJF{>F0t3*$3_o-X%=c^DSnbOVo6nFVQzlxJfEOg$oK0Xa|v?mtL~Q +zF+76uPQQ}}9e4$$prp6)t+X +zv|3IuO+-=R@L!V_0ZzaUxyeG97ALOe3{|ESO4==&k_y$RE9)zE9=W|b`}I$;tGXnH +zr<}#=_8YMj!xQZ7Sj@WMzzzK6jVFuaQ|%~lJj3F&@8G0!p%_Y`W5&!?Ydt`~II2*r +z;5=d`4x&Xvv*5gA2C{7OLZdkNM(*d1PD|4BB^XFTfKCIJ?33v@{VSePFsyFGv5p=j +z`edB;U&&g22`o6kM>ltkI$)zp4MpFN&l7kXJ!%{Y={i75hHSe%7oogFVWgt0QOU?X +zhLFBH_!zqH`@N0})`EcOft_JdB-9_lX)e|0Rr@oIs$0pYcxAGaq>jp_0v&jb9?(Gc +z>b!mg>pI%Vm@tS6x&QZj@Fo#Y!C>3Rrv>@hgjN>w1*qytILBt0$VYK07tiM +znvZ6OjFy@dUn};>QA0$)x@$yZa=AqLb`l(lNkW#ux3Nt67iwe2C$vvwIWps(1RtCt +zb^-rQH0`yAY%{*e;(Ue*{Dhh=E4VeJsr_?|#A#ksT{?qH9g8oX)C1&kdOL(bg&!>w +z+Sz^0I!MWex~)dXoU(lXU8$pHbO5$tM7|e?J(4Z=4wve4PKqYKeROlRqSOxfzrnRA +zkP0oZeX(+aU>uO#sgEf!@;iBO)2Ok$@vP;`C>Y-46NEb4fZ3EO5P3Q_Pio;eGS}Ia +zhZ@o^urMW;97920$lTCI3B*HztiUMz+l;B{6#7G^zw3?6UHH5$z6k#=2cyVA!VhnU +zG?*?W{*0${P=`BO!Y`^w>LKm?hP#5-Tb({^Gh +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 +zxv_P~=yhGvO;g6$0)FUQb+ny%)# +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 +z@k4t~WW4Qx5t6)Vi#Nfdf)zA`-E@1dy-s +z8Vw@wMGsIa;3RUOnkvceLJiy!R=klL+fkAuP*kJSVb_38Wf3kp6DU{6{^BPc%dhWW4#{>mc#B0)G83#jupx7&^bLCR|T3_P2G212AcR)@TlK~JU|?`3}Ev(hY`}~cKG7ixyP{0(V5)-H;0mo4j +zDq^9%Fxa;d@fFVp_1oOJ(DTvQ&%&vxXChPvG()eu-Z7AJISNTTKYErjfT7E@9I!~K{H380mA%G +zS!IVmzR0*T&xi9@itx^%_tS4m)LMdn_zPmUrVH;BN9AfXaJaDq!|pO2s%#L^!=he9w<*RTM@MKcW(~jYlZu`13;h`{x3*^xxrxUKR!> +z55fx9lz9z&8s{H%fGI&A7a32(VG|VKgX}0WlZZ890RWVVx=CJjzBHQ3UG6?2@KZZk +zs?F?%iufn&fsfrGOu8G7SAFj5a%xB| +zUt`syc1NXrU&qgIwH$1nfqGBuSoAt&Ji&IKk~IP*^Z0wb(XUKVX7C67kYQG-+R##% +z3#wMG+rrbkk^ioGK-s!e+b7 +zNlq|EpUNSvXy)-e{E3f|m~aT8=Kt@IS%`v6mdrct>Vj5VcIE7siYohg!WrM+IC>*_T&ZI#Nt1&0z +z&5oDfkJ=X1;_)HF$IRu+5;F&En>v69(`VHoOaz3e(Q=;q1(0bJ9Y6IkE+C$xhulv) +z1}oX*-%Er0WQfVpgzPV$OGx}f@1}Uw{fK!}9cBwfZF&PB2pq+8vC-mf!%J!Wi +z>6BLbi{B{{?7KszQhYdd5-b2{JXaA7w$=C83AOomy;I|$QiB>OWi`ds|5fLRy7jo9 +z#XyziIW<#|Qd=sa;H}~iHf^IJR34WZ?V;YmouII3TIjvX@%PNf`n@`7f<&GD>r2n0 +zI-Scf^7nm|p}pq(HVJ{^Tb8mhEJY_8Lj8e3)vcm(dtL8pr+RHXJiO(l_lqqrhhDKK +zkO)63$v75p-UsM_l#5dK6TJxU3Q)b0BpyeX6O?wpTreVr!i+XZ0?@Sf-^E1VG!gtr +z{t%_*f9-j_9bc)^Yz!i?n{>KOURruPH)m@NhW0`WxNW3}b7~1`N5ysMqc!)VuKr!E +zU86FQbC_xGmlT7;RH&p3ALP*Jo^%Mt5jNKv7zTaTPBnlVjdQN#-KU>_h+X9#$vdZ%kU>GS8*>HlJ?>-7DU&(nMQ!C7Pv +z2}!3dLPhrsJ@=ug2;r2`+kToSRcHPBveYv*6pf31E|^Tk`$2HfQwo?x6kh^kM*R2X +z1$m+=3>ksOgdddt@FDBb2MFLhbK%)0RSfLqo!LOs+$>N=%Lr{AVuNW0xtJw%5$V!T +z|I79E^Kt$62J4H_)tOE2tI790?X5)BUk2kPKN`g-d<_|+^8NWWh&@|%5=XyvKK;xR +zBBD(*C+s*l%))KO5GfA~0E%$Ktk>~=B9}&z8JI8!y^9XUcB)+cV@@Lxeo1(5N9GJd +z7A0*)89dhU+hW6A%!3Wn7{{peR+? +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 +ztnVa@$PhZm +zw)}H_&sMEh`U1ga#zVjf(elir-Ohd>^Bi|t>dZ9|XwRQ_V#Njp_&~6QvOYhu<9+hp +zp34M%!&g~>oZa3iWDMY&{vEH(+NpoX7vV$i-Fy0bvNcg*PPPN8H{{0J)uSMnE!Ut67S +ze0&I#G539+(z(_S25Oy2dTNfo*8@H?R>f3W_K_mddnsc +zA}oM@dR!L%c_9>3fiuYzZPQs(lf{heorAS>d`zuz$0j@Z +z1r6lcDFQJXya0{@)A6T|4+rcYgnC($KS2rNNB_ +zDiqOW>cba`#eCfxSOh$3+XR>4LCRV@Fzda}o(Hw%1T&0F*u@{ARA|cQwir(X!Z0kv +z*E7^GC}3xM$RSS4C4U;kjv?~yDqwIx6TVMz>{L+1J4-l?`6EucRPJQ2Ww5Z$hWg>a +za%rz8t4RB7DFqGs4dm+aAu+VmJW^5U?wkRyvHAIaDk&;XGGev}ef0zt$p^9@^`J0u +zgsUjuf%#!r{xXeXWQ~zuC(B#AKMGY&1_?>U>hCwlgm6nT;i<)_BfQWPtQC08AUVL4JggO}3EjQ{iOV1W9tOc5CB*l=lPgAIOF(VA>n%tj`KR&X!Y2nUM8yolO)C6D?Hdiyd(Ra8(U* +zm3Mk8yDqMEzqz{l91E>c6f*)om?1~xN(X_!sCcIL?@>;nK@Hk}8^mgX@r^W%gZu`% +z)(C+OkTT4Q5FTh5g0Sa}b&4&j-*ip=n_R@Ndlhi+k_FWZ3X*?_LiwoP2aNDcK3MZz +zf=z;i$H^qXS#FYR2GP#ENR^iD*2ejcVLz1X!~jrb%wNMcw0t&Q0JFM(KvrnG1Y7o7 +zv;;pLG#et88rk9Fjyers4&;%fb~5z`T{PUH(G3UP?vW9}zMz-PkHQ4$_r)e;nY1xX +zBfS!ou3Snv>&yr$hdl4wi>dJ~xl&*Q +z8bDiARLz#!@U(5JnMow!y+i5CKRm*g*b>kjzmmjbK7YW+G>FB|j&9bctnm0eeV$u$ +z?cl&r3H9l=Y9DiQSR;bW0oh*d*a5ct`qmPV`K=y0Q5Y~%N6$B9{&P5;q@G!giFQ4wc1WT +z{3d8noD?=#mLJDb&1vPYqme}k?L3>C-z?k?N#7I*!A*s?ME{i9^LNL7hl2)_h6d6q +zkw9q_=trfx*({tx3x|u9fpHPSBCeUk#yRGA +zd$g`WhDHQw+>$8_dwPG>%XYXx62(?ALy4^Hf}6YS5Q3>Cji?HvjHgOlDCwmH@4FQr +zxRX~Xi1#~X80?IncfN`jda7)(cX4G7&1u>96{w*c2M0)2hU;P#psZj=Iz{x`n-js~ +zhY9w919p3zGas~limud03G+mg;7}D`dfL`4L26=M<<8TSWXSe@6=4-VQz#&*5(cOZ +z1#hS4l6RF#uN!-AmEMn?g?tVU#t0kUWr}K>jd4smZ0vp1F3O}Bi?1<`CkZ^J_lNP6vED%MSy-FpG=9I<;tx)>fqw8Ln54+SuS4R_mE +zvtonsq@qaW_Cn?cgBZE+hjLU|6(}TRS4B!ZQykMwy&o?z;f2#EAgoNSSI3&Ln>+P+ +zf;`k>uX?}`0Dw5hAUiLJ$i!OOy^z)u=}N*^UKBwE5|hLPpb>c-($(=vg3z5}zn|sCE-MsbNgI +znS_QE0tiHda0yKsP8L*l;rQQL)yGW^0fq`8>bK>j4kU()UE}jF&@HS&ykhZwOSNOZMgpzNsDXcJjfmhfGIRWx +zd!X0Dc{2^z&Oo2eRTwQXoT&_XliLD&!)@oRDsxqXyc8txqw&x}n*{7EwI9}(xFsyU +zl!8~YH0hKE19}bg`7@w9aIa-hGyMxIGi+cmK418)s6hgo)Aj@iA^@V0{C8L|-9p9t +z>)*Ip_s5BiQdE-}0}=+bD|#j&n96wm_L^7b!cqJobCOQwCW8z_vm;ALDO;-QvPZBu +zn>SwbBDnT~M!pYU2G>^+e*^Y8snf@{)oB;d33lap)sJJ9$ +zG)y8UU=bq^h&D=m{UOhr={6k1^7w-abOEiC%v$*0k>ON_%JVtN<&>OEi6mKYgK3o# +zq+S*6(Qdoyiu<)vmf# +zZnV|h(M=Oa6Ds26w;By>)>Ma{{`=SUj$nME>Pops2QpXs!8&O0C9GI`plB(sm$`T%-pfv_(}p6dFgmHz{Ox$m&${`@ +zE!RB0U#L*Beq*hoyObrhO`^=SUw+tdMHyj1+qW)Wz>TnL?!@W9y>hv(4jCeuysr_( +zRKIkYumJ9({FGTK`)!WVJz=*-Ss0F5+Ypy3gqItU6^wOamhnU7875ceoO(Y~_PLK( +z&=3}<#28QBR2&|Qd;&(-(P|0%nz^&UCjYETkXpyW*T&trpER|+jyB=_&=^&3Zck|- +zh5d5aE1@_hZMQIV(Dvth|KW**$)9grfahe< +zWbht#t?6V*zxt@_avxTM2!|L5Qt`U5s?;Bf&bfqjNxMA*bFB5^yUx}v{-)q5v0R}z +z->I{MeQZ=HO!6=%CK&9*Q`S@xsgxU1WuBtVlvRQw3mGer4_8lFB`~0hNb$MlhTF|h +zf}oayr}b~4u?j_K{ZoNaF684~xA={%_BYOL$M6usa)Q6k5+1~5`Yv;YyUCc^SYTDX +zzpQ!a6eGoM4LloV$$ZtF#a0TqR<~Zy#TtT(biJn$6QW%XGWj@OQ}Pj|YcGrBUN9Mo +zZ1Rh;sa_yP!Tzn_SfU!WSb=uGjH{hh5`TVBDxDRGkDxVF6;s12P^OJwN~a_GnZ@}- +zhHq!QSZ3ia8f2KDgE*fgYBaP52t*E?-!rNnVrw8!J;YXbu*sYshu+unh=+gx$mX3n)-ML& +z6TGNu#!(JKpB}RIsUXehk@W4Q+_n`jut}8m=udhE{aZm>Ai>D)dEAX`IPm{8m%>)U +z_8!upfR7CIiL>q86Cd2c#eHeKO^ztpwaUhQq1SoNJKb|km?EV;JRN~WCa3JSwe%W~ +z>w$Y49kLZNixH+?y-qGJHz%xo=H*ae5+=lHjZYzF8fxw~MW5*T6wa4i20`r0 +zLcT$s$_l(FlAC)dKY@2!PMTE_$%` +z8$#iQOMYw>9_grAcC6z_dfHmV5=Oi)$#Lk#7XLDk;xB!Hxm+oOuh4@ro0fqZHkji(%J| +zJmCp+^4vb>dcKg48F&6??1ualeTB3*_*@}D2Ee^b%UOPB$aqmQ{0zfva<-sF=Gl78 +z?g$Y~wmZnREJQK=(w7T@)-i}42D>J0Vlco!d<%qwRmH0{b?5l*oe<4hgp@4vb=SJ- +zvB$Ec`>w0fvJVs|`4Yd%*bpRt72KZnnt#@Am2|oK@OwJa-gKQ)<+hX2prG|#$KvmO +zh=8fmfx~(w9h16B4{AWW*>=gm&Y_8i$pUS)2WXN4Z=8*-9Y%Rtc4^(G5iaE?^IWFQaeHDKKol&%VI~Kze*^;&&g7L%D15@PrQjDP8fbE5+%-UT&Cl=XwKwNj +zW!u>~r8WxU4~*F7HI{Q~rW2D(2CuOtXSvlbmyPN}P +zMr==D1mkrAb6S8{c>T5JG@Fd +zXe_kG{@TS(vv*P<)JUP%t;_OnzV|9=%x$AKskWVApNX^YxMA)6XCD@{>2ey|&F*i| +zoU0bQW~3x)mDIqZHu10aPI3t?-%tX;829nr()5FufQXXriC96)y5~;Z6j1mB6aX~Q +z^8m-XeMIL3LK|)wsdX~^jJ4P4`6=(&!Oq3)Bf{4;voz(k120mjD +zGv8I1hTVY*hH#VhC>7~?onr-A9ePYHy{}LDUhPMTR@2*kWy|+tOO3?5nj(!F&%R8z +zr2^w$`g&Ca6VoWI#W?A3Pp&1wJJR#tKy?D^n}g5nsyzK=b=?)(}`Qh@5~-U)$~ZpULT@mj)e +z?65c|(bmXIQYRK`EzaoFx`X^&r#aGcZx53kx|bDiitckcR5~^7hYoko#=mj~>7_e( +z&~D_l8;N3x8t;?IWl}K^ccn-4lv=La=t+htWpc9_thl@JRrCPVc~LjM +zX}%Ypnyt@Z-+e=V34-XX(Y+y9ug=)jHYnVFr@BX45xng|H1;O)Ye6x9&6;dCA$Cre+^ +zSu>^3*tX(5gDE{dEmj!nyd>Cx>o{o#uMSG)2gq4Ec%5DX|8{oHIv_O+34zlK@~{PG``yJ%^c<%Ygiif7A5XnB{bO7#`mn6e7M?Xa)n2q) +z*y(3`$E&s$IFCZYVM!K7HB@ry +zWdq0smw-Tyz}QZE97!?lVOA`!TYPsCUQ%Vn+ +zp77VscmAt-_%TD@c@USbiM^GP5^gq*-rJQY{}Fsc +zZJ!IGrNn~x`dG|RIVn^h_l0ylU-={*61hMiUm%E+n9(lpv+bu>cNT4fKIFNq<*3Z1 +zM^JUQ$)ou}or^{Z;ROXI1*>^gn{OQ@Q50{-r-jmMk0AKZjoJ)cSXH=>iC``7yfNjs +zioD(}C)IbJhg1Vb9igMz=l3K3xrXk>Gp5KQZzks^DVJcr)cbESMU2}@bFXw{HrN{p +zSB5Q(si(a)5+rd8BO|;oNxAq(-VRmL9V)%IP}V9aB46!goRu6~Xw{IewYd^TCsRdpw~D($0Z7rD<5gkrJ3 +z$3U5Ksiy<1iJ6Ta48ZI3Vjv}Q~80r1?Lyv7_e<=5+g +zD6cX2Z;OXfp;N#-Hn6+yR;|++??Ki)15g|bW-b&i0P0R~ZyggI)ZGY(*5Y2%8p-t| +zMT{)nGtNyE#{mVTW1@w7q2e!@;oa^vt5PZFRfwzz&lRtA(2ipTkIU2Qg13m|wj5@+1_5 +zqN1ChXC~Ufl1k`an+Qymdn4#IlCP*l2vh=L4deo7wSOaV^%t6?&)ginYBB!G;uObL +z2k;&=Vvhs(`gPl%kO1zC&yYXY`AlqV{&q?HaidO^zZjzJZCNG1D-Hb@pxHXVKuoJt +zk6FKn(`9UHvTZ#S`_dej_2G19fPtcz{a@8m1QR)NBm`v|^!H2%ieH|#-RKiCW5YzB +zGJet8@&qTstT(uyG&?zGG%^7_TTt3=m(v9}E{{O*&Kk17iw5d9UE- +zB$f#%_1hjUlE8E)hm+o3X{*7zDGPisFqzrP`u%E>u+ejQ`g|wH#cF84BW4Z+qJoun +zr?{?rHe#URVmuL@l#~cOr7cx>W-;WXJo0003z;;MwwT_B^s+_w>{c +z=YgtHa#U!e0Kp-Mf|aVXNMSv9ZvT%n_#YZ{vVsbIlZQ1C&J(|-rXU7lhASVel&tES +zE`%7|kRfVh`clep7LSaK1(q$EU=a6HJ7oer|JSH%`np+~rNWQlW|a7z(_&g@ +z_j4UH$=nc>Jp&0_r2d|rfkus|AraR7oWD3-zO8CFN({_X@_^ZJ*=i6oPH<-*5Bd%e +zHAMsi!PL^}2D01e@u{BdX`}okX^Xj8YpjL31sCE))eDq$zjA)}bj>sOK031++95>) +z02QcATb{wixjvGSKhKg^({*g~?iB)bS}f2+!GmedzMMn9?~rac*_sn5o3hPU^^%$M +zqw>$BDJg>yg&{ +z^@+`YAHpCghy<{0{rIg#)Nu( +zA6X{lb$y2I?y*BF?uEs}1ppvK4fj9~bD3~mqPKpMG@;H41-a|AT@GVQCiB|JX-WeQ +zCD%G@qTB!+#O7`Trg2zelF9NY`;=i=awasTHgoK>Jt8}<#4!>`w_ +z$nw`}Gd1weaou#5a1HL$0-~S*bh+qteiv{Q4&>~u5P%1v7zGJ30-%PhnDL*8+Ga&` +zi*>^}HUEQxYb3k2w|t8SaO1&jA&(0eFOa&)Y_{edjR;Ua=?Mu{@k+fdHkS6ZuG)RT +zHuA47yOZNX27W_d_8hoowG_{zG+a==Fc~%4=s&pXI%}otd~LQ03%U~&v;*wBt-MBk +znM7}zQuBh(T(~w8rHK)af&ms#!o4uiNOlu{im)4_xq=i7p8NJ)H{;d&>@%sYm8Wqt +zs!Y47s(gKZ^7}QSxD#l8Nt0kltO%7_U4RAPNu9`u=*5jalIQg57DAfHCxVtP-Bp@v!(uNsy@hT6gyF;{sd +zEzTl+1eNatVldsBVkBx?vENsiY)K~?Z-?gF!DZuOt?9+r)vHrwAt4OJFF~HTxrQ0` +zf$_|d$>1&$bs1Y6PbkWqY{_3n_FMg{ejg&ZqJap&?eBs20;!Gj=*S(5Ie3U#nK`fi +zV;|}rGgzztVbj7@ +z$eKddPFG{q?&*c*FMOx#gG?=Jq!PC=F*_wq99jBzri~k7_Dh#|0WnzIUmvPUTURS! +zR+Pjii#M9|$Y9^TP63EpkaTY@hCOP>hCTrgvqL(b2UKO5fe +zFbv4?Cp#I@f+HmcX$uu}77J}}-`=vXRI!imxs=r$nFZ_y7o73Cq{q!+2 +zFX?A_K +z5kR<*87}A=gl>ZURL1|VdR(GR5lwG={4c|K&`UZZdB4U=w{DmUf2X$jJ3RiB$}KXj +z_cFNe3Cw(4JRgncZ4IHv+kh!4W(3+VF?}qK6q>W~y?zab{z|tYrG(H50xL}B0WZf>zfhB5)w7A#xYG5lL8nZSC +zV7y9UxZp$m^v9UzPz$e!lPx+0@8OE6B|0M?5`OavGBNRqiY9|ye9yw4J{g~WeMmM3 +z5-Y-qQXrM)@8jh-J^`%1-l3`+#o%4?JC-aGn2w+zMW9zs>R04EVlc6=!7K|jtd^^> +zjA~6&P{2O6UtD;@w5Fh-2H=60-u{1YYVRV$__7R5CJH*5lpFM}C`b%72rx%(fXKws +zCZRQDx&T?WrTl7Es)XG`GHEk%zT`5^g`-%U2q(O+iH&5wn+)5-KI<5r2eZo7PfTS^ +zFClww5k?>|>zl$+$`Kdad-w*E=0^iGoF@sL%zj_QINCW5nP(1D+A~c}aUqNJF{%b& +z0s4w;7qi*4k?Y`Ktzo1ag}plu8Kz05&xzL{)Uhvb41pN!UG3V&U7vKRM}Yh)K(fOf +zehT&PIBzPIQxb2WFo{x)ZIp~LT@vcE=NEPB&3r~eo3uL!ZIT?%y@DRi^#ApuGEz^b~n(j)!K70@GqoK7jp6`}3dx!Ex4fect_@ +zUW5&uk2d~3LD&!tW;r$!g~Vuj@E1zN9@KEE)TehU17BPi>dY)z)|$30j~e-ny)8AW +z)1I=}j6hwGBcg+K6rjEy&C}p?bVje!mvH({&%#h?sHrD65H@>^C?q{Y*4%gzzixOiE0T>GyYz& +zfaVMOkuyxnLBh&)mFaJj?XG{}Sd}i<^*pSzq= +zIT@rN?n2;2;MtA&!BFvXuE`>GJ#CfHUL&v260pJHVMK!h&f<57{G*<;w!%ZWjZ+-T +z)$}>9FSnxg;;w*sv|w|0fP`1!j?d_xdYct3wG$_Hv~av}s3cP<8Zi0}K`K<@;s*W* +zCuk>XKdI+U8W&{E^OLnf2O8 +z9p%j-cHyMC`fLK*LGQf|Z+-DWa^O#hU{5LXbvGrteryB+$H6@7{8)?=QOALk36*+_ +zvErO40yVn9dv7C+o>NDon0I${=^uxqY( +zOedEgo{<3D=!&K`%)#R_+|CL4Jow>win{H$soNnc{QOxQ87p~OGFb>Y8!KZbHaTQe +z^&HphDj5%^bQ3Jmqj)b={+FY)RFLwMOCDXUfkj3hRpG +zUEJ>NNPfXQOn|zYpONlNtyD&n_p$mg>cWrz@|-hf!QO72)SPnoRu;62?8LJW^u`X2 +z7VdCjw54Jr!ZKOpNVA%U?j-2sV5(#%H|{N7>%24B&R)!JlGT%AFihR+0|Kl7|Im@+ +zccQRRc12mSe@p(N?b5Cj4Gy?=Zf^TSo(M1SD~$0K>&dBIAn{bF{22x1AUmw*>p}9! +z0<|euj^KKf;G~s|pNxcGf>4}ASWvAZsxRfJj;WwB_6mm7ip6@WrfpN;AX(vjWRBJS +zN&yezubc-}LZ59W#leDK6X&B1;hic~=dIpZCcZnjoxbVR%Jt)FNAMdsrM4pvuivEB +z3y`@)mU59;;xrtK+gdQs>x#ap?VUvU`37r&oE>r@tl$U7gO%btAXw~1DY|U=WnU!Z +z@HN8sct%MC+Sf?1Z>tSNIm1P;i@mqF6*rrBD)BwWCIm$a1jVrlQDLhA3bgH7NCZMg +z4gWkIXk^DxX8Y{!tjzY$Od)Wka)IIHi-usZS4bzf(6J^pG%+DGJ5bTu_78+Fn|@q< +zs4dhLVhjAS{~o!dFFnrjrAiGBqd*aO8?zL@J5{so{`a<$Vw^;q@h+N|zQI8{#rWYS +zsvhP|F||fVa-4%MjoSqUvc|YqCxydfo!lm*=$13Nd1B$-Q8Yy? +zVH5Oy>lOAh52LOAonEhpm`y3lud%?cyy+&aOb#2PYsG>h4RW*qKu#NZT79#}KN{f( +z=`Ne*vXXfRr}}#NZC7hAKW)Wo{9QysOfj;}4(x~#y|lTJ+<)j4qR);_7&}6x8xZL# +z#G#>Ia=%9|*SZ-ZiA2}C6kz^83m`obhKMAhIv9IM3%53jYJ{E!1M=Uqt&-MW_b1EE +zk1pw1%AV{I@V#~16wevCxYJ)G*D9LDX9*zHt?-a`p3l9j@ULO(3q*u!p#b#jrC#A*pC4D@ov#U!cPKe%KM?2>atde0ao59U +z_ld=n^aq)H_XK*S-(zYewB(Ml!~pEAmjr54w#9*A^KPt9!*QiP+ly2MA@V?AaKHr> +z&3X`xsJ9&GVC21%{w_1jWKa+y&5Ts$w34a&W?@Hdk=$ttBvpRR^!TwpobR&J2W>~l +z^7f;-UPdA7HEU~|1JPfh0(pIA&Tl4T6Qbg2L)^{h$$D_Bf%z63H6`p6R+F@r8UvqL +zacT?grccd(&Z}Xs_cMnRd5f>$$EHvoG1%86B9Fg)yG9gJluY$(vC8Ll2TeT*E?PCX +z$T5yDpdy-{O)jCUHRayGMUBpZPWSvn(E)0A@3O@- +ze5q5wCWnQ7&!-^-4UK`o`eH;M%A8xu_g@JFtHTUQKQMn`F`80l_KpT7%ITDte%JQU +zTxqdHNW*u8jV=}g1dG>nY>Zd)l(+0a*l9(d-(2?A*XZxExz0O2pv}-DAy1+S3+`9o +z^laxwJk2(0M=#6XxrnY;LPq64h(4!bL1D)(9dYU66Q*Wxzj_!UxMVNNPr(K+qN6(y +zD7U?$DfgUc`{f<)0dE~%!+HD`+;`{Dk>RX`fP@gUUF(epFElJU0*z)1wzWgSiNBRZ +z9}gw|UGGbKzMc4IK7qS^Pa9_p?a;C4OV5&{{ABK!0>LQFm9-t1s4(Y-McIol%>=Z( +z?U_oCV2gF)Zd&jsBsL$uVrjgpRDla&mlWb(szwA(MHO~H4OYN{w>|kw=oWbuPIu%X +zdOiln38*YXw;klRg*lf`uMG4wc(>rujy +z37B7fEf<4dbxQMqK+O$)kIQm{B5}OwK|}mVPst#SP1}4!7`6X1ixcIa)l@_ +zN7c0rEZfbg1-OcioF~b-VIHF`yok6C&#!sTAsO@onOj!(Ft*=0uAPgk?rVSZRC$)y +z97U(NFN#P})$i~3M0Kf3VtFusie)oJkMUP2Q-lr)08=_YHKOW>1NHXJ>pk--3C-uy +z@u}d#h!0h8^iGMz;NB8QxVL|bSrb+tu~dX%=FetfRB^+hw)^~Id_yMu(WFQFz>zt( +z=x4tg=07oMKtJx(kHSCBPf|8J5iJk53-}yS&%@<8?`|nz+)OX%6TDtwG +z$$Mlvo-Ue!z|8KiR9WdbTGpQ!6)$w#`LWk_mUsT8iR*9V+(meY73@lX&R(HhrC{IV()0>Q-cTVqI>(apLm>Et0_{G6G6{{* +zFgJgvAfufHv=6SE8}KFnN>zrbdq>i@JqB$F7f0Hmh!KB~aoc0Q*gp!FfW$S)B4ENK +z@<2U?CAwSzz2q)Mt1A7*)5V9xAuC3t;nW|c*I(}^83Q6Ox8**qHH?-ZFjOmJr5KD{ +zR{E;drPJQfye@YptSTi=L<&m`pi74WIOnram?2`oJ*3t9g`vJt>Urj%Qzu<+=WyeZ +zVeod{ijp}QT8ZMNArD+`$-qc`N2cC#B0$ZdU#07xCgIh-j;fhVZZ0f?K_ulpfSe<{ +z2!$DQ@q1eH+I4)pHin%9syOr9RqN^K54SsAO_KSq_@gCkNw*dYs|*PIe*I&r;~C4f +z;S$yZoMr$UpCdN$>&zADf@+3?}!h!lk+C| +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 +zY(?YIn!Q%@pH&k2n~S}vVr;&7c-B0Pb +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 +zErdpi<$45rv$&Be3(>=EVS^At5=8wT7*i) +z&%}FhGg9@%JCJqGQ}`Jp5Dqi*TL)up#v{rvF2)siQW|qsisWfHc^NeSS^h1k=DAa! +zfHQuKI?j%3-x9?mcOOcDA?c22OV->;kg6xnoUkI1Q0^ye;`agp-ggD;pYib_jmP-Y +zLfZ>cn4x*$wjEN$!)1rUeNUbB0gp~680c}z?5kFn-J`n7`ui#`@r&Dc-H)+v(EAcd +zMq1>(Eb9ivwOEu_OOULrr+bwqXRG6m!!5n&Uc9c#DHT(lZI;QgBLkEWtF%-qB2M(H +z+!~c+;@SeD#R0v-Od)u0t~cS#MVO*>kCfezX0pm9;;0PC_jx<5s{wQeC?LSl;FrqW +zDE5tFM)k_B5H_Wcf-A(F--lW@a)dJpB-QqY?V=86)>0V~iffFJWGYRG7j3vk6lB2D +zeuu>^aw?YAy4qhESq{9yWLe +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 +zHk&v`jOOGi{hPQiA$}rE4C`w@L0r +z{fsNm`U;k>k+?#@VQ#uP_5C +zW44E4=XIo~-C_)uB4nvt>=x>#b$re29p+!M*1mW?765Frf$8$PUdD)P9uY9#pa3+ZkZFor$a+&-?lyw^06 +zA{aFZc*R;0JmiPU|7QI>_fK-2W;AF_ucv=RNYesy51{RfcOOr_XtLt=CeTU2+@HL% +z#!IgmB(rHNJz85~=Nar05noE(t2IhmUd`4c{4;1y>8|5kiN*}gdCN2b0Y6(lj1qAD +zCpyKGp2D-gq0o3U`CsqjugJdKq@C*rk6CP1Acr$yrkMCm{u)$6T4lnXF4Yj|*qW;y +zwdP<-ls03Zo2QS*#=x^)qN(&F>uddJF%SRWxNu+z%tAKRB_y4kK;KBR2`5mpvAEW! +zua;VojGC~z%ah|ow3K0IWoS%_xyr&ag#XcIq1w-ejsw5>IJ^(E6LW3`%sooarP +zX8mZ#Gi760T5xgCMkID&eP5$OU%1!v?4Lh?#+Rtd&?Xugry5HbR`*`kvj3AMu01vz +zITj+aNfVXmM5xzg}*v$kmGODtN2`$cUU!fxkmnP +zL^yCW)f$<(Y$CYI0}HwE!YT{V>*DUuI1E0XgjAEY{(``@<|u)MfA_QUeXCZBMg!_G +zo)PuOIP<9I#!1zX(W9$@-I`2Fdt6H0~O`}4GYFBoQj*n +zsKMe?C$IuTav5e*27_Zz#1OLrhJw~+vF12`%wyr*(mbT}B&M~9f3K?@RHEo`<7=qD +z34g=Wb!mK(ApA{h`d;a!HiZpsWps@=g<>%1za@~u^JV83i{)A;_}CAo>p%j+m?0F7 +zq#oCcJC3N5yiMeNM@isf7hGs{4UohN4uSr?ID+h(*8+qP-sC9Y0Ad@5 +z^vR@f=ejpQN{TAeB}_g|PGze(v{r9gzP93W(l%JEcRRIb)Wfz9E~`5&vxbBI2S@-W +z=|Snv;jWmS`^(9qAfULGxdNctXx6X@(1Up&M&DdE*!xY(I!(l~?jY33U=!E-?cjdv +z(Mt9SsdhrT(cnTth1%zrwAtZPTGL3t!gRx{a5RB-F>37EVA;Br%M&f3LhF>p(rir4owkD80|Ya7wc{g!p=kg +zk;a32tCKSNx#n>Bfe=4rl+1|lAMQcqM93n+O|em3R?vBA*mC5;a*h6LjLoVSsCaa7 +z6$=eCT6hL#i$$dN4{6!Bc#U2=dlwGABY<` +z9Om>e_N4TGc4TAz&k*6a!Dm!qL3l%NauB{Fo61m|=`*Ftwx6vhEAEZZGB^L2&+d{_ +zS@MMCr*wy+948Eh*sdr$e|kxaMVZP)9b}(9SkSna!0u}YWuTAnt +z*YNY%W7EH`&L8>H!@BTeU>57!CR$&D#fYdVQ-XoR5pf(r1*gqSUthC}Y|~fLF6pF@ +zeKDPLv$BkVV8;oLJB}jhz~EVV$krR<(NwbT5C7&2O^WLz8?^L#&9&EA2@j@%4kUyE +zt_CrYDebxx%tbB&0!}0q>>vOVn@1YApxC^BqcM7JHWVIPDwCJ*^=@+J5v>^ev#Szb +zI43g}pJ@<~)_lgL7=!z{*tcdw>V!Uzi~Im9YBBGmoOkNjSz4*jX@j-M%S*b8$4_6 +zbe`=+tRpMiHySqnN;Cj8#wceJl;hQK0s=;maOG^64Q(vXlh#gmN+nKB%jIn>0MW|- +zY^4VsD&hYF4%~+&l~}?RTjUXC?kZ;GJzjOU>0u5A3NyoXEIjm_7g{N(ZQ|u#sN~7W +zYwA4jBjd`C5S2H?PrI*QMR9%TLT^T}od={bfMq6I0Kc-@xaL?0f|C#mgu5h^bubxD +znw@GV@^5dnS!jKmhwM*g3AV?kK{q=FD+^r{T-!!piPDsoCS%2HbEgPnDyS9m4k^TZ +zyE}5$8QO{n&|IWhQ{hjxCMI(JFOG&v@xuqr$M=ZB!9fYc$yDjzFkH$Ze=$u*Cn1`B +zEhrHTXWLD|Nmy1~{rr#)ud-j~<1ZP$mJQeZ0%jvs241nY(KXg_t31}C_~KJl5^NJd +zTSfS5-fIxE=!hF%>jd6^-vI{(nmqWL(?x)x1muRHU#TLRzfz6ljx%l98LB#~m!ae_pWb0Btnt=!#*A1!&4GYXBP)b@VqP&5rd +zfAu*ufgymHtLj=ctXQdRK)w;krl`1*v*-;2n>>a;04N{a>xw7_?uUzMTfzcR$BPI@ +zqEaAl^geqIpZ+zC{m6f3HG3Wurfx~D`^_V^L7gCUOIkKCmmUBC_76lk;Q!o3lyoM< +zBup+XDv#|sqlkBHqs#@KCW{R7OfTLNwY`4c-E<=htOQ1$T^_56QFh#cgrP-3EYpY% +zT&<-r^`EB~>@qLJ7Tnr#O||Qbrf||nEP0%ii2iM|9LOxDyUsKT+ozpUluT8PkP9Zu +zU6-35AB@&W@CIZO))y=7=C+7a^?u-$NE^;4WxaZv#CAzl7EHk;mlLt)sM +zNC9-pcnF*_L1aV1y9~BlJbQR&xu2#Mq52YEm$@yn-u%y598f8dY4MkKc0~bto4$Y}$;wSD73V>{`d +zKV56_+Zd7t-mIL(t{O8OG|zwA2?yLeZV~c}>WBq=V51@n{RT{XDDXqndwiDk4uxb- +zNP-MpA70VBAJ`hN3;#wWKE>?UClBIN9@k-#oC*lo5zq>VBsY!r^{|H}1$C>GVpy%_Xs +zJkYV8}LOtu+DLb)=6TgBvXCSgS7SyF9};T$)1y7nC-WAYM7bb2(ZA9T$=0#23x +z2puQ>G-PUqPex%24W_(4Ef;A7V6UkE;s3s)65p4I>on7th2ka#2bApCtL$zfzn9ZG +zzWy`~8@KES;BL{uuXorIowBX*h(vpGFnW1$T+;kf^uESLev)^MXi_1B)?&TA~FxVRckZ{Ezj^6kk;{OjVN +z6%i^R@g97l{#l-*OCWBbWe^WZI^kDS$<$i~$CC2hV>%5{b8333LpuM8pfRUZ43%Yu +zV2Y;7u~^8;KR@U$)0u|{TqRIPjAg^fbd*wC*u={`{$Qdh6EJ?V2zzF9>r*+WXR^B( +zM1i-tav!4^8$PFq_7>}uxneGF?3bC-AyI2;Q9pQDO`g4B(F%*RAE^|2ze3E<@p(K9r#XWWdT +zRL&&=Grk+s6CDNm;4-|d8hAh_u4__$#n?pA9irV^Z&|74@HMjl5#PvSkn)XfiRw(P +z-nXvT&2OkU|2Y#lUp;U!7}?Q*l`05UucVfO^D}d2b2#DQLCG<=&n}m>zQ<0%CDLM{ +z+imhkn}lRDB85C=zhjy}{)hhAU>SIR9SUA9 +zC0PnzxvZ_wd-4#9YdrD2Kf@J&rxx4ZZ=^;55IyNIw>aZ==W|cyA|AUxXX(U(qMG$b +zH&t{dyNNXz@?(J8mKZZHnNK~%!O4BFY?k{ao($db@|)hdtId$e+{a(Fa}3)50LsTF +z9X!+{aZ{GAid3cp2$1j#9Tv(K!H`Wj0c8{M&l8Lrzz>GpfCrV1C7)3$<$#>9TEa9K +zftD}aw26{`(TzpTs_tz)o=o>NwSmKmM$B&%gs?(eDm1P?t0Rf^HY`~iN_-Q1HahvP +zB0tG_4-o%Z9t`v%rcX2!JmwJ-n8p-`ON_Huyq)On%_=Ro$*;jM=J#X%3aZ(B(#n +zswGvhEpKU>JbOt!ql6988TkI54gySmUH)wN*)bo(7(T7{jyS{Qn;d4kx +zz6@t#OBwkfiaF@$X8T8dbg{0cjYOfxdZeKSWAUpGGdL7%B-T8Fd-2axK{7fc$Pi3q +zZ>HhUaiGvWY_-*Qs>ZF=2eby>%D($hLJIi!e!1WuB0pm>3t#d7Ay;njsy_T)iqEw( +zja!$ns<_$Z#2HK0`q{R@~JA!yT#B%Rde&Db0&(cHqhib`CDB!XMFO^bHw +zgF(wDz!}0KxmR*;PjAWBijy9<|ISR2Mi+++Gyq0Mqnyl8X@~xcdZDx+P6A^>e^`&D +z3>zNB6m@VdGQBeE2fbNycwaRLuc|HrK +z*`_6yFBUui^rLYTc^7@4^|iGU*`|O;_g$a>@^8|ATaF51<~a2c2}}MOQ--DVT9E4E +zgy~QDGuuQ}w)$LZQ4k2gomHcR{(cO#IexIE6blngcSzxQt_FW7zZ@Nb4u}s@OyA?| +z$j17Qsuh8)dU_C0ip0nn6aEk9XE5!PUzmjPwnid?0Ck%&$xpke*g9C+jrWx?{X9P`-sG|kC?m@Ry7+bV=8$l_ +zVESk2-BfEzs77K&3UGG`5->F_+&#=(4KN +zz(H=Kj?}`vObt9!fY4e6Lx{P^*HjwCt=ZL;u>WC{7!YC8lRHP23&T)+-EW|ZVPxX- +zR3db2`dZ%GiE|3oge4|o052nu|4<-0s5$2sH?^*Conay5V7PrI-WaO@M*34r;p6{B +zTOL2|U!oEc0>e$uB#)MCU`H-27wn-#(GANzN+{wm6@T_ZliyR*E$i*qdH4&G-3ks~ +zDu0*aRvtk0gW)1Sb$3Px{`*)?N+lX@5em*!j>49=zH&ty+VHAGf~J}~q3&5RZ7qEb +zNmxEr)cM#;N0tAj%RW>VEUr{&c>tp|ZgN=%9g;!Sflph{!kr!T)&CcmM3b*Y;drx9 +zau6%!>Vas+Cu8W}$K#1-B5F0*tn(-~ln^iekp-~dYgeIpM{*?DD?`{qIN#902ib)` +znVlRJ>@MAzCl$3My9&sV{|7yaAnMQ{Z1=HOwRqsWv+d#`ViUir#hC-Oy=ZV!n+3L# +zo1D1E)`aaV-xsK3_LiYCLdXyo{`G{n<)Wo<@aPaVLf}0@5=|lGKNN+s`?5>_sG;8C +zfn9&c9Kain*t=ILsfn2N*S>fRV|kSGK5+Mpdm5Pb(Q={Vx5!KiiB#%EQGw9*x$}1RJG!I-aKC)GNrs=;r{3eLSOty +zPoXR?Ro*2+k7vi@^8t*)h%k;fy2H4)ui|YG!-Nw@g#3m&ee#zJQpMj;k4!L$J&<~0 +zo3YIJKP>?JsZ?~gh3cB(!0naUQoWX?01y3qC6RZ^Eo&2kY9MN=0rdEevF{j*s=-fh +zpCqK{OU_v{|I0VkiWw$RgcnjPS>O-?ncrSELS-xPxkc5mtAk}4UDX1(uN)t&lH~+0m~xNLe^K-(^n14w +zkO8!_8rg=H2XGnp&&tARd);{I<;#%ve@5f@%Z2FO(hHyA{e0Q^fa`jRIo +z6GcR8RuVLR0_FFAJ+N0kJst8KmZJ2Ox;xmT29nopJ0%5+`cF9(>LZVHkP#Xb}&i2*QcXIfl(WyDe;sFqb%)L$uw=k9X(i +z|Aem$tZhT^OJb`!S;M`ljuk6{Ennwr>$!IQmnn&Q)^jhHfEEIvaFsw>XQRoVt-ltx +z3b@bLOr(xvf6;cQ!l6R^r8|?npo3nwNd8A>77M(bukv|+>!^ZWa$!p3?k!V`e~e~P +z`J8MHyjh}nA*zyOoHmLKM968F+6NS5GKtC(bAyN!L*)zV{jp5=XD}EZd?Y!Z9^Nq3 +zAhL`odXV*ji_}Ug%oW!V-j@}U@rFGz@2)YyRM?dfUPu_`_lhKAa~+9Wjzx_> +zT|D7^H6V>R7}VP9{@iV}hG(XYd&YUEkq(Jgg#47YQT4WZjVG^go_@!eEjtHQQQLA9 +zyYeUMaaUMiI~E++_V^~fCP`o3)prhxLIQn+7Ao^sStH=598pAZzj52kOH4V-MBr$2 +z>B0zc>yegU%7%vwkVUy)7f4;%JtjlLp0Xpg3~dMzzy>-LN@jTF>)I3n5^Yp4LKClB +zNA*i|JD49*dHcpPQ`;-zyD2}PeG^3tl!c_(w5fcVOVQzz-$j_*y +z6S)mw-9XKYRjf!!JIiS@fPfiW`$?Psp>{b`6`I%fs09H}q))c2lb<*;a)qv5q@Sl3 +zJf<5KB}9|CfEYDr{b7VgV)76pCju}#KTGZaMp3PujDbPB>!VDb7p$@VIc##??^fqG +zn`dxUi@xYQs#QIY>Y!e35Rhqlp!-oHa%RdlV3WtHB6#9->ZnZKzjOc +zO%L3*@y>t0TvRx@n8)OVzDR@553a +zByzQtmN0VvJm*sM%$ZHw#N~`b^X<6kqSMV^-0Fy=>wXf709^fMl%Y5(*x!73QA0pS +zVo=s=twQQ5{7VvRkBJ%wpue7gJj3vE^d6H9L#S#`aEZHZvKF1lr&AL|{ndV{O728} +zAJjH5O(9{9*!P{HSHzW4d|dgtqHe~VuKVsesWlo-fHA0{{3_1tRz$r=YbXKT4Uneu +zrLV$VokMQ)Kjw(4Up%)V>>cLa^J-PWWa;NCmKiA=y@7z30L$~hAN+nzX*|N8ndi0Y +zimooJ0}7Dvz@(extC^odFBPz#62IfOl%M?f7Ktb&c=1}ciD#Y8Z(e~pRZ)p@?TPH;BeE-hpLlJ +z_`{74#yk!rQ{Df35|g5z&OJ>ZO*OPxKtRaQrcr_bS!hB$B6{km&0A9SUCXSQ`RMvm +zkNB71ZWCd^uW8DexcWiaLTLuiG{q@aSSdCb#aqo>b416_MY1MO(r=IS1LYo&Ic?okFk9Z4{t4U4O<`KZEt +z+~$#~uH$9-=&9RnS9nFdShPA>wcq^ba8zI-QvE>PVn6AW#&X1q+C~#-Wl$nh>h*`P +z(MiU2z~rTG;K{6SelqeLzle=7HytF7rhGZk?n!v7BjK|qfCCawDfgdZDsGhwB1-b|2U&QCyC8}2kuP=4nF%899yRVSO#gdIfyooXthRS +zj26@7%?8W1lphY%A_JCAA#8g;QyE0Y%9lvNaMYqmgl6*eL+a@kAM=m@wNxy!@EtZZ +zBu>0hYaii@G$iuR;U~BC0DP&?_me<*{2_Er^3~Fjd7KAMZ4UM#O&DB^Dja45YsTT{(a#g_#bFTKtGv^E%k7C_DvvoPPiHS +zNJqIjn9WTXcv=}cCjKgayHMUePsDBjsD@+>s1kqDLNf=~+^OVhm&HhudZ{&oD2>GX +zN_nQtL=7*HC)(j-9!l(H45*e^#MgH-zK|G+sYubtN-R-?+Q-f7;S1r+bGQH{i-&37r8 +zWs#HFq{aC_D6zsyTbWGw*su8Fwp=xp_w_PfwIKg8k?V9HUXnU0NyJ>ArLaEr>afL0 +zOAcs=1D*;-Z`zM1lYdl$IwSPam9~Gpb;~{n|K*h1CqPI7vM#5 +zr5tV`4uKD>*TaTh!)N;h-Vtl<6cl=#gVO11R3F +z)f>_@3#Xrdj+%DUo5Q0`>aBgDQ3N37AIB!fG<*~Yqv)spjjcX`R-e&gm+LGh-@h$6 +zLOT0DllV=k^IshX!C!COP(XVtSw;Ntdl*VDxvCC`xwkjBJ{CWFqsBP^lP5xy#BB@n +zG9{Ot>b&SS_jtq(TR96c>=FDs{9*q*8L*ABm@$qx^xx?o$7RETRpNvj^C;z5TQ(tw +zTN3t$Z8E{b=e4Cx`$MA6Wnyq?w}6EWtA^g5trx8SYxT9`yaSQu_~Igzq}s +zc`(n595MS~>t57&1UhOl5d}5?C*!G5eig6x**zATI3*t+c~CPAdMyr}kR}E-f~G$d +zU#N4M5WCnPBB_VNsQN^@b#YC}ofzR=>%*zP9+yFX*T_@o8{giJe^KDC2)Z)Tr{H}! +zWdR&VSTN6ZlE#d9YA}=)gU@%X-4R*(>C_x~PuT4^h{WB(C22`YWj8p}hlmJTh((M+ +z$(cmEqFzed!xR@!Y7KA`JlS8K4}|7q?=y~&G +zjG(DTC(^y#NGiS_IUbPu=_WR_2$Aw_g`c0_*42{T@hx5W!%K3n-M>Djf)DB<_xTsC +zUp~$A!kf$qUv4#c8Qic;4aclfl8dQM;Yp`9a@u(HO{hQ%p;QCC(U}Qwmu@1EIeq20!+R0Utj~W;?d|qd +zh$1f5tqb(v4X_yi1I}Buf!>7ijlXfQhl1A}g +z51)f(QG#E^zGvdK%iH%R6Vd{^Kb532wi6r@fZj6+9+M9ZG_#fDdCI>Rn<}-E4`qeG +z1NC3UXtq-(QES#=z?`c3=P9tFAFG1^WoFgM`D3M+hrghy>%3#^bHgpCNdsPG2MJX80Fe0kJw)4f(qhZng7 +zeQV{fVzupkWA2~;pk*|L2IR-7Xe93}4tCbT8U<0xf1M)CE|2}tl3iX +zk=#RQssuW<$&BbYhw9tpz9L&Ot%197GjOPCGjRaur6}mWnrU}GZR*%9_pnwA&(qJc +zC=8}$0(MR9Lr7k<4^Ng8i^;rX_|Ou?mY(Cikg5CuQOJ-z|$!>`uR+|}z{|J)j;qWN$f_V~0c$+4QlSs8X%{@yI54fb8<7$mUx-1>@b#9YdxF}fT@x%jQ=$_I&`G2 +zdRp7`KS`t1q#-9030S=?X!ShbzU=ui7xG04qUcXNyB$buOLqHrb#Hn{AuL^)uJ~`} +zPX$o8Qb&&s20sjj=xdXuTL;Q-J%j$_GDz2MlHZDn%X(|-(`gEXn91R2bJzZzm*#2f +zI*eW%Uo5nhC$k0&nc0&|fLM2sBFfx8R$(rD`1K*?^nD+4>+kHaVAkf}mBIYX$wC5& +zX!eTVE@<1u!Vw}Tgb&kyTa568K7%LwiQ=$Jb+VU|;@x3=Y~FCfA$9lKm~4>zFI67v +zif=a{0G|I-A3gNFN;=QxKR^0~mPC?slW37(p4$a8}H)D>Pj; +zHctxHriQKz3#B*ihI(cUcg@Ji+6Qx|e&4LIXi@w|#-*IcSx^{bN&@0IvS$`romJ0Gm*^=Pv +z4SFma{eo@ReVKx4v8~do2*Gdjc3!kus@Ib)j5(bDkEXAVs_J{*hRX#mAYBqtN((3; +z-6`E5jdXW+Nq2X5cgK|uk&u*>?(TdKpYQKo>-@u7+_le{J$vSvXJYGix_@as8z2&| +zT(~>i^}7B|&sqhm>IrxO&UxF)=8!MByiOv{J%}V-wL&9GKLxxFg=m +z2Le_R>))_Mo;kr{Oa40idYE(3;aPM-AfxQNA!h8tFNPN~{yfQpMJA9428k4l1%qGT +z5I9XGgDS?OP&h +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 +z|HNuO32{%ps==RFH1XI>9cN1;jBd?UG +zFxCQs9z7nhpgEB)4QxFErNc3QjJ=t7v< +zs8pt~PQHahVqVv&7)+J?Oc<*t@$VStfV>haJ%-DPt%q%&{x{epJ2YMnrMndY4Q +zcj6F%g>{Ik@;*Mu(s^h*STbcXBLN8+pL*}U{5U~`jlw7LYfT~N)0&;We~}v3C|4y1FiY +zbFWv_kK=XU_A^-?fZEYBIgA>tu5$Bsv38XqF+|ssCUfL!xD07anIZk&3sd%#IBwrx +z>_rQF6-%G)^rf|%d{=QC~BAuFR*bkS{Gr+zMb^7R?9|>%|*~xBj{niDI +zwN!+RmgNedWt?{VhYR{ZBAab4Vn2hb#(0eItk&T-Cb#opO=l?zdi`A7h%>ChcRff0 +z3XLX+<(m<*d7+E*XJG9-?$QII^z`auIwfTsL|9#H-@5*}UbugUR8Zqk%dC>v)VyUU +z^s4B95W#=UDPLVzTqqudToL|I^AaRSgrgX%WG9-o92Y3k*4j=|(5u*rix1k0){KjT +zSA1T)?9M2YL;9tXLbQHAV<6>Yf3}+?$M&2y2*J_=< +zS?dE^oG6O5BD^>}qQ4}}NK#G|@n%&DOgi=KTuEd?<)St7cKH8U|)@m@#y)@?pu6As- +zURH@}yJ<(mLiLA|f#jRs`1>_aQb4!EESrEEC1kHNY_vKQ*9?hD7I{IHc_i4zW0YoX>&SeF5lvyRIIlIUIgPMO1c&c7vg-&)3cUD1U7ex(zHB +z0LObs7L)vW3FQc8FP`h8s1%n$3nkiE=LHh4-CSike&>#Ax+x;K;}u%qPfr%vKx!5! +z(wU}2R~3vx3T<<7;Z_}q{gtK33fJ8zjk?y6Z7Co)WNQudlWWGhZds3T2(WCrhAd)iCXR~wU9o4VW5aCn&D>yn5WV|xOq41; +zfZHge^7+}D5lLL3brrV*?A^5P?(R#LTya)UM>am#*{zp~^b9w>==_It0pZaZ>*gM& +zAD6()E$9f|zJ-cqxs~*|qua~%rn$pS%J{D8yC1mYTS=PMf*9IF2;X;pXRZT* +zKn;%iuLOf_*IKXbT{uzU$YaqzrYr?uMdqjnJ%Pcbo$Msh@KUW#G6|VyZ{a_6-S9X> +zeF%PGz?o6RWXr%&1^xF1aleQ&4-F!$Z8sGY{CoN(Mt;v^eyPpdAzn6}bELCyXr6mK`pJ8Bq +z{TWFUlV7&;u$|rZor7z9nKY_sn7_(KBMWR$P4uUGH8xl_8$%Xx39%%j +zY^?z#&wLA03%Rq%>WDw`(}-YZ#bBaX^a1h;iWUNz=C{2rt6pl4fB0YOISlU|&#r7d +zg*$FY;>2(^632`g*ehN!1;^I361)kaWFfJPvzl}U?_g9Wt7L}zS_*IW83J&S1daDaRa9Bn$hB9RPJX%DWss4|cCIZqMFx8c!;IjqzJUjyVZ)C8Qiy&EV>aR{ +zgG?sM&qj_LWvlboqUC)gz`S`zq6=9gbC3Wta#+^AO^!%bo{bdB%*Dtwmr7N4_!IOe_5o +z$Z~0;Z+f0WG)z=HQI+ud2Ne_{G?Zo-GOrlbphsf7SyRW~TUH+NWs_=X`YVI#n +zDerUJ$!0?1Ux!E$%>4bk-)^JNTogL)j^ViALPi#I1a>#X3P)>Faw_WiMrAYI=u)`s +zy&I15$=kLXrqAT(k)N{0IMYy( +z;4IMnDxhImydM;#$U#yja`+XFX9oj}V(crf`M1!$VohLFb7QSS$K{liH|`u>tB&hG +z__LFj=M(*Fv*OUbU=li2EtkyOUead)%q}e*8peEfd{U>JxA7r~b_ikq0%qVg6;!-; +zlEPbNrLJ7@)d!A10gCl)ZOe1|_ICfc+g~?UG!P%z+G=VB`kDaH>Pcohqe729B6akK +zwOIDep~HHjR}wR71#JBSE +z)kOku-CV4nR@Zymu`m1?aVlryF+GK|X8)#~hF#mbng;fq<$a96d`!(5tZE&u5=JH) +zA2Dbmp%(2PeP%MzEk}B~X||L}T*oaNeG4Yp417X9Cb1ynkp!T+dC&TD?#@jG*q#1a(nHO6gP+RgG!UrH7) +z_vrvT*u35SPpIR-42SQbb@j|h`&^~Qb&`#M00zb>EG) +zNX%p$M7~KwO}Rr8|v=}pC-r2B*6P6v=%w__?biu= +zU6Q27lEsrD7T|=K)&>HH8T+2b-|!9Oyw%cZf#pO&<(Tbe#**sLMqRem21{{)NkK~t +z+XR?8OwKU;#Nb4z6@B%A^1}TKRY1J9?9FFmy87IF`hIrB;zgmSLd;!dBpOXg;U9`@ +z7%k721Z>m(ba_I)l^RtK&|HN*#``^3zlsQQ>{!GllrN?6lv3Ir?FV6ab*IOe5?8B4 +z)*2vDsobAGpN9bOOL?vf3saH+4MI)6DG)0@iAi(h$pKX>pGLAKjT%svPQlinb+D-f +zhZaThD5%&0^lZk5sMO7pIej}=TUL2+72h4kXV|kDxG%2IrAM7Z0=3`O7E2#~(< +z;mI7XKZsdGcThC9vWxBLEZhomCe`zWkgZvOtY7%NP~m#~1Sr9P!Z0f3TewKdbSMnp +zZDsWG&)-KKOV?2+GVJgqG$#Az7BB}Q9N>A><~0Fyt-~)r{e9C9)b#$4;1H+^wH!Y7 +zfjJZeCZ>#uql +zt^Mq?+dz3U8F^~NZn!x;fx1~tkGf^P>BfGK7syserF!lEN%ni(Sva*cwzzZ&x>E84 +zJ`s|Z-4waLJ#U4ErASyAGRBa3t+Jo+{1F*!)`?w^_V!4ih<(*(A +z-%g;FrWaV)h=Xn(5rm6nYMHRjFg8kp(RQ7TTuyV)@K!YEWK=mpyeO}3NJTfL?lZKm +z#66-U_YEiwC-3a={U`^VXuc3xuEjcnVP)8et;foEgAf}Z_xl8YcdiupdO&)m<1`{4g+FjA4e{L+2S+ob +zA&DNJu@s+l1TSxCA2O$b{3b8}v9bz>z9Is8t=TUOcW?|M{Ch!KkHXs_m!Zmp?85B6 +zN<;(1x>;#BW_Var|N^`te$ViaRPYN7262|8RpfaFLW+Zls +zVBbM|w-HteKU?0EZVB@Gw9?g?sk(Le;I?3MK{9)=ZE)05On$Ep=C|hKvdqtkkDO1t +z&TZtq0&7}m729GS3KjvLv;V4a8wGFFeUdZTgo)WmfVJ2@R)sojlW+7FM+I`HT0kc! +zNI=>epphhA)AXqN*@4{)5>KjiEtJHl6v$V1W#KL7$VQ{83JLBVi#jF@u*U +zhiD`Tn~BIA%w1OVT+3Rw3D+#u)tLhsGObeQY3iAA+Kmau^!6Y70%Yf}^x&f!49pT$ +zO|6~ab&asb$?TV_4oxdfJ1wrZDJ(lJOW_sDnmQ9AX=UZlew@LwIN7|{Ibq|2p+7&I +zqLXG&My1VTNdF^uT0?3W{_v68im;#eOr2&WOGYJ0Et0BfcK>Wqtx{t+mv2a6sa+rWh|@NAN7k*5F}B6!SI4+<`2O@3`GnN7#7Jx>7{ajePzvIi`hDOWsm^N0rH|`b^?xb} +z1?Ik1}1y-4vSdMdaBOjo<5BMABy +zw6Wb-?7E^dd^eLNoTY1(7P}Q8e4?U>599I&_)#rwOmqAZ_P6Y1;vW;PMTogeCbXH)K9IwC +zie_$6G=Qvz->+ig`%Ei;0w!PmqO-P%+TZfqkBZnf7Gh81ni|%oq=L%C2(TD6sjpN$ +zoTw9-JOeDUYEpNh+X7r06}yV2TItTkj~uqd5jHYj$I_t+d-c-qQ|fr1ahwC7FPsOq +zcKdz?OQy(HEdpyx1laxhVKV?v^e8~afLUKSZI|D?dGUJRPipS6yYP4RcjM3jZLPLUAWMM0-0CG1hTCtDHZSs)1#WR-wk!mCFt)e~t9ThSb3rn7B* +z^r$N|JF8}A{05_Trig%QBmjj4C^8NhTor#`ZSX8RgO^VEWns{un +ziQGFYeLeblH8%Rp<6pw@21K^@=`|Wbh}aj*(Eu?33Erae$D_0u?U`AX{X5U^B`5o1 +zuYP9!P1E#6o+{&egA_+Gs|mR2RXJidbXHI-1ZX_@HL7S_F0D{Q|CV4!gN?mkg=&%fSm>KFj|!|#0b5-K&*+RP<0o*6RH5mz +z{98o2TjlFrQF^C@p}m_ddZh;r@9J2W>Xa(l_H?3NFDE0`t%+ijmSZ0dzNUzhGe*ny +zrf?sA6#slwnLHw7UNQ%9AtY$atQB?AlQ#CZ>vo+m$!>dtf>U#qcKc)G_aA+-0BW0i +z4HdcUSs|cA%p6Cr&ibOG7NvM|2cs{_&a=LnnCbnhs=}`0k`e{bHz&J6#U||Iyn@7E +zYRP%tA-l=_&h>3s<-FOAxxrdSq4P^9^Ap|i4j5b@W@skwJ^h9CE&jZ)faJw(6unwx +zAopnikyH>W1q#X9q4a7%1sP%GNQ+Wso)?c+KMg<7G4aVJF;;P0)T<_q>2EA#OtQ3* +z=hFDwq~-(L;x8D^G6ALwrs*7vs(k>D?SoMvq9{Nwdo3YyjRtedb4y}I}$ +zs?kJ(_U0s2@~7@@VXm^52@nhAUNKQC#H3xHzOpsf`0u{Lfykg>y#@ahSO_=tDi1jAA~rL@c}qcK9+f5@?JPr7s2o?r)vb8 +zj(eHj)>}4=Q+hwNRFPkJgv42hUm7MohlEALiL0lc6{h)U7;tI~`@uC@u +zDtZ_AfGgmj?Uj8+bkA6CrhK8^V6L&hL-d;F?H(+stmx--ix}vkMSbm8jrP4(GIO1s +zs~G>@18vID5NKV$cmUA6k)s8Qj6|txW@YM>lRUzdL_bRV&ZNr`*SV*qd#cr6B@?^k +zZpe%~9F_makMcBj54&%iCJ1Gk;hCW4b7)G-PJMCcd#dRNahk6n5Kyr?v`eRX*}+US +z)W#k=vWc>0XT;ur?9tThG4-xomEpj-P>>Y_B9s3Nd_A35Ft#9+AK;<1>u4FrxQEA9 +zXM%m$vMZ@sG{Uyl_xgIvV|T@J1gayNrdm3bT#y^`fVAapZsgI +zpxhh!TO<{x_?~4yLKBE4mN%jJv9E!Um70wP-By}YWV+YKY1Qbm(9ME+4D>^EG{4cP +zY&unMVq|4ik23bzMh-Cd7D-4=cU#zKJg|n{=Rkj#QK~YtXUTQW2qrp@o +zQWLrBf0<@0H6Qhd;ez}D@05jodfxWWZHF8N5*YbkjGMvfHF$K{>;3bn3&@@aj9KL4 +z@H8{@Y)@PJbWdbGfx8@gl+QL$q8hvPr#UEKqbBXg{r~itAx6Hd{fO-As|(o-Bq@bQ +zX!_gezh=xUi<}c$nWo@z5R{&Dcsl9=YY$8iOAv!8&6e5-R3yWA3rZkKQ_J*rx%*PS +zLTxY?jg+e;W%cvtI)|xN5gVq|m+2pTQwHgh#u$$jpZHNBTyOkFb1 +zVO>(N=8f3>UV-Ye;iUa$AVPb&m>1a^jbFtFBPlQ=wq;@Z;r=ic^Gf?yiz&}Mqp|bB +zp*l*?=DVl+JbR4OK$wr3JU^qv1fg!AgY+c6YHD2d)*;3n&BbPTG!k}m7nADa?~;99 +zl=j<7>3A}$P9~;#s@0GhsmXDEuey@R?~-emZ;AQ3bRLiESaMA52wC@C0tIH@_#kwB +zi&ElpDeO>fkoQcI)*5QJQEy*YpwS?{ApJtXicf_MU7F)h|h9bVaW3Qu9ZG +zO&f!s_1m&6s*m4gF*Df=5bkPrmVoq+0Mr_U|10g|@yik-xV>4=AqYyK1msh^&fa`> +za-2#V0JBCW&kJaL +znMnwt0CWzlTCFq9ZSgmXn^tAbxLIVK+vxw#0)XE_iAbbK({HsM5oum@$?vRq^CFo| +zL_8UE12$HAj9HCmUYn?GTtUHRMyld5OS{EQP$wsv*>$3(*Uybu=uvGUc8J=c*WrI_ +zrr4D*y}@sD_b>5i@*ya9kPL$l#O$dp6b;O4K*nr&{F_ajd%nJ5xVL_P{>4J$KhE;6 +zEkovuw6)e}Nkb|;{ir803|5fUUPjA(*G?a4(-CsoZdW|J*qLpY!|%!U{dn}VOiK(1 +zc!ct_ETdy<_1DD-!wnCAvYcbFL#Q&{L1UaKav{y}GU;5UW>^1s2N@ACQNRt{(bbed +z%^(Sk;!+mXdrI4?{wlmwWM=Q8f~#W7tZQlBuB3kb11&yL>YLg<-CO+(EG*EWq$4%F +zEii~Hm3%LjeR)lwa`7G8}$=WX)238L{k?$A@v6 +z29w^&27pb|yJ-o1WmGKuByN(6s1yp4&hy^&0GwiYB1qs50kI#wR!Ii+w$iOBdvG_# +zk_Q~WL%f|mie0;jRvh3kI0wdFLDchwfjGI-H4IKi +zP#n}jf4`n7bl5K}f^t@M>CGRaUK?_77UJz)c +zDJk(S3~2HLS)uau#h9+fV?BFAM4E-28J +zR!n%qcuCqOW0%Stc!0VJDLF)?51504QJ;G~u#U#6& +zPjK0f<=-_vYoXb;n>?NhmCGCR2*0puvlyiDZ+{gPAZA+O)eD;Ua*d_n0E2QVpxu9z +z(1;Ca37xNv`*ocif0X$YI&OEQ#`jewXHYOw8%bFaE0rpyTR{T8NJ_aVR3KP%kLbN$22lm@8A!MM_YKSsf%e_Y=T?-2NlP0n5f&?|i +zwjB)BL@8bq-{_sk)Pq~BA9tMQCix&CHsu#Sw{?t05` +zJ{=I)`w65#v}pNWY&Z+kz4zm@r#R7VC%?3o78|S^5V13!{`fKGtK|xe8M1w)DE=p; +zuRsIA3eRV&w+^)1OCr@=P!^tU_z7MWABz#x?Ov%)eSc>`Xf?R$#!v(seya28uDRa> +zc0|W<3O2t#82~riqz*A}GX+RsyS=-~lH0*=a*etxx=u-tn>1R!yud?og|O?Sl=j&V +zW*I!nYc@FmAcsK-gkmCQK=%ShNt}Rzfx+PwJ9Vb0#Z0lXx{69MQ5&Pul~brE#dd1p +zm;ho_4ENx(?%5hDTsBbhN>;-J+hlcjk>1`fR_EAyQ+VT<`ZI(d*WSaQroEFfEO|odnCL!J{$#B4KKd`Nua53~C5e2Jxf=Sj@fx +z^REo)HKy3hYoMsxX1w)gEQXZ5u)-ndKCb-N2Wa?^+UHBLa#vH$^4s27?e#5H8?5vQnSnmQ>xW0n=Pb4s7;=K`zEM0@ip)uoPf*5j +zCzVL~Xh^CTkLefh`)|9vh`+R93%h@9X?2#wh&soA{wiN11W!+pOWCTC0lTknQKwae12 +zTbM_#R!3)klD4h>nooR2@i6f{HCsqNbre={O!!1_ab)n7WKQ=Nj1?46yJ4^9Tsl6x +z+az228%p;-t%Ua%N)v3fTOMh#cTQ5Hs7E@sg6V(`KU4b#!@WdfegFd%KrQ=a>9W71 +zHu4iF{{C4*&}qYKH06I0lTMY;MaKz*^Yg`U?W|PmSebplvM(L((l&LOhQ;ksmq%?9 +z!pdNJbKO0_Dr1YW_`wbP{D3B`+FnmM?iouT+2|{mD=;IBFIR_{s|hV_!Z(7q?~=*S +zWjaOeMg3R%j1|(xf)?LG=E(i9Q3x|D9c?7FiL~akt3m#y3RJIo5b+2YtAsT$D +z2#`3y`rO9(W>=hfB0+?JH;9ndJNj$k{2C=?Qjz;4C~k`L^|oRij%u&YW=UQb)LFV8 +zYDsxm{2qA=T0iRda{=?x +z!2!c}{bB)UU}Pvp15B@!2f?0e8}|?VQPb)^J~4JVfgiz9lHwSPrKk{P&bk(QS!b<{{Ih@jSwKqHz!tW>ia_geBRjphzwC0CYNlmnRmSu%X9z( +z!{{n$E34$|L}36GMDh6^S|OYONF`4wXDe8(=}*t}J2gfvr@WE!dRl{6YCnrqcDea| +z?lzXYZy%EhRnkA{E2zuY{N5+Pv!;- +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 +zFSD)aep)wPssI^?qyNG30i(Xtl1$k4 +zK_yaH5l_57smINx(71eXWZSrs4ITs{F%q~%fJdhofdoFtz!qE@YuNMN;}djrZFo1| +z1{BPX?;JLxfX!kC7K_6NVsNhtxZ2hVo3!VJ*FO6lRh$M^qxPh +z1dGrC4e?$8|UoRnP)hIj82z_(c%8{b?kOvwPUCDQPLT&@rc?9!Jq0oz4qHR}Ih +zX)iEMWji-L5%-;YRBwZ1_%6x+zvmfQWPz3GJv<(s$HXGoG4&mWWLt-N4tW|cFZnN(-iyuhP +z-{4__-VZ>F5CtNOboa2wES*3zVhuOk`&n1)v&EL{HpN%&tc-Quik2ng*^jbLV3;4b +z%!!lTlq_wh6aWdzKn&ma!#RLTW5JbWQw%O4!8~wvG=VvCgFd?;a?>DTzwsC;^)M8! +zv`gFv!=)K9k6Nm@k7|hHA|jMLHv%)ubh^7ys+cXd!8wm!uC8 +zp@8^u=KB#KQfMr8(m>9*5--RW42!g<7TmMebnsOYcl)b8qq-DN1)dTDF`Na$(sY|2 +zw(62cwxuzh8qTN?PeS1bAqL*7tJAWJ?m-gYtBkarxA=(4mv5Ov%G7K>;oayI#t8rZ_ilB@VztTi9zCR?wMRHm5_i!)Prl$HfBwG6 +z9X*(~E$KGt;&21i^u3;U!AY@ite*`qC$ewDpK^%{fVCWcB%NLkilH;Cq#+ +z;$($iYc-|L%@IDMmUjLRZZZ1CPG`#EHu0pv1LXWz?WZi!BIxfv!SA=qpjPkU +zS0g(dyQWz6@fcX%z^fa*nBY<#a*PF6V^SX`2mD;v=NKQauXK3_YH2J!zdqqw +zfX*Lkt!AJ@&a}9Zgk&a7S(-v|%8(OvmiX1bZA{KOTI(mOy^J~`Lch1AGSBd~B9X1J +zErR-G(qS(yO}F@GXnR7USX`|V5P=%*4Se)3oXsR%1&<|TtlP#AA3c6#MPB@r_|LF8 +zkV9EW%@SZXn~NVBVs*V9jz#O}#rXR=f8iXBHfkCwlCRH!*67813Bqh3ej^u!Y&0lf +z?03AWAE2@)Wz(~HSvp=%4a|h+E_P&=F|8COBp=vEc94(U%&krQr> +z?Ux+a1?7;6k7}z6ozTISzmi&46fBs?aQl<_-~vq=qaR!Ckd^ev~x{aJyOA +z^mIzUCU+DCpw;O&qSur%Am+F$4TeXs#?Ja^wVp0SoatbT3G&^QLC`tNjF|eC^l3y@bDN +zp?Vs%q63<$aUcmJwpi7EXTW%&8zubkQ&vDmCGUSUf6Vj +z1iU{-nIWqlbFkgc^{C7X>P+U#)EhbfQgHzlEW>PR)bLV>?gar}RqM1;>dG5$+z6A3 +zs!Ah7miOPBxvTN3U)dyJnW9pW+;Bw=h;vmD;6~?})h#!~4*nK78)3=^!pJli? +z3lAo*R0dL0gN+2+sw-phIs!MgA7OJPMqXfYQYqNMQ;Ez*K8V +z>P4gRvwR<%0)#%uCTsATIs{Y=j0#^rWt3%HZG>XK5BT=VGy_Cd(&(B%{}vZefd&5B +z0=rW|SlcBigP*6`)GC9nCsen@;ir%z2b*@Y;Wn0_(EQ5Z(9vY-haL@W0^lt%H$D_= +z0ut6ESU4Nk!FDWvZ9R~lMx*bctkca$p~hB3Cvl1|RJKpeH2^wc&J}Q}!zcKeEtN4MZQQ4sW^6oBL~rFaFoZpqByi +z0A(D0F~BNbvW1UBGt_Cj&f;o}t9>hTOAnIM;m<@9u{Dbu^i;#1F7L>26%@sYjGM~B +zx&2{PX-wm&peL9xaN10V32%l-6aMXshIGxa6=p<=!u#g&S>q-gw~vdz8OW7`PN)_3%5^dzK=Z+X{T%#JvE`CIK(lE@A&v2?~ +zbw$e|-41e_#gOaqkhBaiQUcn>1mJT>+~|Z*C;C!JJk=0zl2g}WVLm=$1#6V1wJde@ +z5VeU>1o>D=*gnzLg@ENS>a`Uzi7%hbvCA#!Hb>eWR$ET7VASfE)TX{kFypCO7BO^l +z{TQPAIq6`@9I7WmjYJMusjw0~uJ?=-{18|`;8M$E)hzZZy=KE%aa-QLs!U!lb}z38 +zGZak+zl#CiBE55BDMQ##@g!=}MLF>wJDGuyY7vf7s@4z_7p+GM@tj9BY2#Foc^QRx +zrVkqPGM$x)8fTmL1)OXp3q&$~vZ` +zJ?F2exP|Qwg;-76|LV??`EqvdP~`yaHe@!2fdd+wMdjDU2lB~YRxq{j7)`Gx|J`n5zOG?iRRW3cUGJEMkry-Yd% +z;3BAj^&p3zl6G@@vF&aKYgf(zXKUj7AlK=IW9H#Q_Z`-TC6>+lw +zvwi36w6PK^atejrkho*fD0EUpOcKRK>%ESuecg=$e^>4e&Y;7`9F`{?+x@csx>(ii?Y$f;T?X-!!iqP>k +zI)l)$-^>`zrcAFR7#_i-iAAd4EZw&*;8qplYxaHphn;dsOk_|%h6intfS;CIU6mHI +zVD;76buEel0}@7Sbf9*E*BCU&g4$n6T2RQzks&Z=C62U8sWrzUWBjcS`S0PLnEUAo +z*f{gg(11ThTFW;*YC2+8138W3NZHSNr=ptCl=4fe;r3U@7rg(}m +z>ZWA4SO1ukjV(#K;0(*`Ry`Z+RcYs-H-hS5<2V;>qU!m{4DW>aqJ4!`xcDQ=uD1Wy +z7r{?%h%R*GSb;RHDbnN5`xhf)Dg*vP%VjZM=Ig(By44|3#d_2))C*^By`!0&pZGqu +z%pi05L9`ab!TuGy>bm+Op=GJBkU&MSZ-4gnVRae<;IjcfrHFd>$0tfq5dak~O!cpZnUi#1Z%j0&{cc}T +z`6iMrD{d#OBTDM)$cxY@JYn-FM}>$C)s}fvU^K^fHKC?4XfxfmBl5mAnij2gojsNE +zU&WE^!coBu`)xy}>B~Cm*AbcEV7q&AF^uW_)PFLMbP5ZZKej8O%!pnXmM{S%-~rzF +zZa7kY(Ldp-OnDdGBYTGRYWa}m1=ldtPI`DOjnaFIX8~81Z46U~0h`NRZbIYSO~XCzZ%_ +z6|@R$a}Eg0fn)%NbLr~?f4)x?9(z9M;HfaxfBS(#ZiMs`M4SU<4l7|;l`IMMiWDEO +z3!R{TTFv_de%c{4rSC{Mt38gb8T9Yn*I%FAGm^Q;KNaSFgyIS$Q46ZHmKmWY*NGzl>$2)$ +zPn9=o7080q)l)yI9hyy?;WNx8=40SmhJ-Y&cK};rt(JuKPY*6v*V?(;N73zg(3iuj +z$=UVGX|FV78wfLxpKyFAZRehZs*gLRWPfhd +z3zLSE;C!5(DImfAs>G+LnHGXgGLG~0SZ_zzp4G5$8|TI#JaRQIvv}38{{1`^RYv4y +zK*v-|)jKYOd%mBAGj8yA?>v0Zym%&sfZTQf5)mx?p?yh&0I;?MWHTb$?6AB?<=6RY +z;b0ae_ceLRm+63-3_@K*YngY^wzL;-KdB^`Qexl(Xuc%eVDH&rWS<=#Xp|*7RI*y9 +z2rtky>}bIO&yr@gpDPH?q^2Aq)q&f2zI_AAq-w~AYn$+Se!I=Nr6YLgbcRm@HKw*0 +zdm6AydBh6x`FyiDm;ZhCRQj*rmG~DtYv2k!5-yolj(PfVj|lWHg?P}nCo|1qY20%o +z&p-W1!nP?Z`NwdVI2<`A`}MYEppp$uavsd|yx4-b7y^TCf +zt}?h*X4>R_0eb{w4Kxt&bLtaxX=PyIVvP&rOX3t%WnoZu%I#EjCax#?K~O +z#HTvM%Bjgwhakh_0k_T<%PLaK7V6J;nqvs&q4!!}kWEr4`~~qR$B_cCht113bd#Oy +zjZ^fqo;`H4rkxJKaZh8vKGqpC=n~Kd4Jci!GG0ghjM0hPntt!yP-hGr1s=etCwZJk +zH-PaoQwOpT7N5?M`&AUnq&z)9W&U5GivZtY%Jf!9+@BK@L48Sq-L4C*SPPej*o-_L +z(M^M@48-Yr8qn;*hd%)qyQw>G@2HGBt{~s8#!E>YR7)vxHBy=dZ6X-l%TkQtTxncl +z(tl4>yW;)=)>y0}5-U^a``;&_gH@6F5nWoe +zF@&;_(k#G^I$@lZJhL?ICD5_T3v3=5Ny?H9PME8cQpG#mh+Jkj2h|*ZynSaDMN$@D +zuC*cEIoY{@Msf!Dd4GA@eO{wD>#|W%qt+niOY5A>V5XZkv)0PHtzFQ?Fpvw0{Zb+aAOt~Yc +z>aut2l;itHmV-||H<%B2kriJWPd4mtji{cO4*r?CCt9jG1Uou +zdfkM+So{@q3uK%1$gRe64|z`H7VL@|_jB6xRGKp7idPOPd@+r0sGj<;2-+edRDxF9 +z!e(Mm;#gT%l@EnY=Aw# +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 +z^DqVG-X;fvYOMV$xS2h+rS^& +zU!@ro8hq3n^GJW0qmA7`fg3iF`vb7IwwH$u$$TVJC5;>hkicLD+)TdAE +zQ>^X8R&1T$*G*_l`G4(F^0!ofJz`?<`IERz<8aah?g +zQhakHJuC6aFN?I@gMSR)m=p10carf_LmZnAo~@RlwYioWA{4PbmK^ddtIE~1%RkiE +zBt)*JILCF|EE8eA*kJ@53y|c5P(B96k(da{FFpq@)LmuWeF`4ee)n$ifO>+;<=0qN +zw&Do6+?mN|!vmGlOf8*rQ4oy_lQdCbhPf=noW{JB +zpq;?3^aHWeO4nHd*BrVrS0cRX;7C$WnBFMY+6Q!qDe{J3Y}gb8qg^FTUH+fvQO(__ +zm5^0j^%w0J5rw25&Pqs$bhp2 +zjQ<5L{X4@(#C}QAbe6R#i*K1a&9Ld7tgAl6!*fSNCq%*tT28to +z<~ic8UEW+;?(dkTdE=|o#;TP|>rQ$))9(&j?*n9^ +zh)#~zI;t!!S({pRBy-aA6^qblm1^p}{kq1*s?6aoLDyOS*9HMcN4o&kGWW{@kJbdTAHrggm)nzrAPw4on@29@ZUPxH78o8B!R1gwV +zt+E8Fz=dlR`R9L&UiIyU!d6OxikMB*5dEs;k#`&yCH>yO99JciW$?w0wQ~nrLvgfe +zA*zmxrDF&*-)n?h8Bv&i{8 +z-CHYX2c~>(zz&TI!Cex;sDT#AW(5nxL-v)7J6+3*v@^Ei$2Gq=p1C(h&rLl<$gpnI91u30RMv9lnk8GD?G3 +z872H)T|xW4**>bk%j+*7${e1Xiuz&G8vKjg<~bd+`AZ{W8B+MiiLr5Yi@lTl)g^w3 +z8Ht&U%DugV%C?Y}0>nXWZ2<7DQjfdA>~;49T3slU%Red2n^Urain*IX5Hp)H{ekc-O;?}IlE4~2lTIFO2gHw*cOJmd2MQ?=QobgQNx6F7u*ZSr+4Qm_`zdgx^hs?NPZOFx=G4mQkXWf-`JGTXb^cY +zXZ`6rhh?RkQl{A0M}5xF57Ca|#eBz1Z{&T()>_I<`(S-N>dlh63_r27^%`)vO@d3c +zi<@3=DzuZ`0#46seyXGXI$L +zkRyxWj*T^^6$)=&C)v)l0E6Z~gq?{fao&AjrGwvF#b%vN@+Fw{8PE24( +z{&W4neq$zy7Oc2>f&?gDaPhTr49P{Qwt_=`61Is3rp1e2uA!#5Nr`o)K0o{mum9$? +zI73^U?v%ic(qL33Y3Qi*ag!GzZMX>L(7l&C!Pc(SZ9SRQwO7=u#e((Ejb*n46!&w+ +z^)7wQ(?x&Pw~t@OcW4FXNuiDoWj5=k^9Gn1{JyM=qv#&z!kVBN7RF?FsaLH>!gi_I +zm9cvv7Uuf7+w)xRb8S=$!`t=m942n104&v^eT{nc282>h<>(rk%5GCvGcRDW;sMirW@tw2-V +zwrAAj{x6gaVu!jpPWn>sKpQa~@k=>GlnmXt{-+xuEr>8y*76{kW2EAF3)RiXtOy9R`y!5?TnxnA@B8ngHAy3h8{z>Ox7xPn09bD(PCf@Dv +zgyK(s6pndQ%+AHE-{L^UmCT{?TKSUDc56us4NQ+cb27mQ8hdB#F6I_@*K_sy;PR1v +zQ;Z&-ng6ICDx>AMvXFcttGfVx>10A9!H~RE@+FnK^ol6LXZW29~>%r9HMWa>zc^^667z%sw@nM+xeyp4NmUL9KzJU4=S +zGozYSDT`W=9IJi^+?GH>+mxNuarurWQ9k>TM>zr$clWEU}OrFo0k9g^dHb +zJ+^9qh6$A|{r&xmwX6!^Mz +z{^zg0RP49D9U%=7PclGl-r#qtrpB$!&xWscorP}RAZ?+T03d-?09ra}uFe83e80Q|xFSomO5yH5@WNiK``FJ;Z +z#S88yfXa9}XC^X6Iy9K1di2o+6kyKmi_r8aS +zpCqbrrkA>u{*`1pXSpBW60pRiAF#wJwJ1As2`UilCH_+L%>PG#lk#nKyrb@kBG*Da +zQ5kdwJX0?TeTAf66QI8D0>p%*J{M(9`yc*NX;SiD2VF=+GpeP9rQ!ntnJUw= +zgy*)cDGCIR6UKKIDo_OH{@(6jvGm4k@&x#cqy-`d?T4lpfSlC{V1Vv^tom+X@w+Lz +z{YCA__zxW~|8=5t%+gbG?iHsy{V;-`?f|#Sw>2sN-=jVQz7G=*n+1M9Q&altG}?V` +zRD1EAn|vI|E5~zP5?FT!lIF~f)vYlKw-d;yk;;Q}e(Uw1LBhgY1`q((+OaOu1!Bnd +zZp2yX0Ee=h`(6GuyEv-Gi31E26Ta*>_BJ!}UU_R=FSD&eH{vzw3XRPEQVuKtlcvXb +ziAafcE5rwgc}4{DO$4AX=I{My7g(S_x(kre2MFB{^tQ7_f^s?28v9+=TlNten +z8Q}o--u|J)QUo(vVu9GVPh@-@?O$-4tF-9)+O#UOs;Uuq;$eDgN~;=8g|1|zjT5Fh +zHMU4|d<}_kPBn7wcR8@F?-Qy+sA~A0 +z=$K!mrCGH|RjJ+;eb6QSxt#|W +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 +zScx%V68ow&qxnU2SywVx8 +zz`~1-53>L+OK;U39ea6Y&(z&IPt>v1%9p7=I3VV_WfxByEot@^~m +z2>@yY(^lLLdnK0gP2H9-iwTbqCG)^z^uMS;$D=-I$dSq*UMEqBU5Lb<)lsnZW5xII +zS~ZOc_3Lq~`H6ZH=f%LJ69DF=;Q)>tcbG<$0UY6i#Jk{}vfiyO1k~0Xnf&;ZgavR; +z#WQ>DCrvI2CH+>OBgds9)JdkUoF1Lwaxj&vZO0m2$47^mjfKFO=rqu +zWM>E!H2TeBjMT~}At~&1FppWuac2jGZzOlt5;4u1X&*-a8UvGqiO0-Iw-tk(pW+Bw;b`0QLL#=$AK;NM$&XLPr9gcjz`P}bH3%2@ln2g&h9V7X%c1otoRGA=|gJ( +z2Usp)S5+tqu%*Y4&8-4Ye2DL}$Bkb(H-Pb}?M%*Z&tg2WQ=(2v9b)H;6&CI5R?;9- +zERmv+Y$G)lXDv&+SJ_>qOhb&TTCbgkJT|F$+bYAt3WT*Nn%|EB0 +z_3&E=nDOW)1R9HSQd)|DuDp?r#g$v7T_7ErR+b(fSB(*9t@=1NxOx8PWqb2#DIqnp +z(jPVD(YAMeo`;>kYo|8mcF-J?^S#O=QI==ncll{;@>3a!b5Z|?sjm!*qYb(Zgy00X +zpuug?0KwfgxCRRl+})kvuEE*h?(XgoWO0|^?r?|qe&4P8i`pt`c4wxa)7_^}cPF!^ +z5X7!cZ8Ca}nSBjN`d?Fxv3@%UEw3~{W++I9PzdAz-~QQFmLtX$vujBG;+N*oswd>v +z@kBD|>-m+G+6|8K4e{KR39Khjj$*oB%_b635|A-7Rf3S=*Yst_j=vE)6p4U2NFC!3 +z13pQg0czBT6>w3^@ZcSnh${WwP7T6*m7%qp4>m*MS62R?z9luq_H9ZsW#I!8U~ZDM +zZWy2qKOil)?K8aRf2g%&$;O4i08b(ib3I-V;mpF1XVdsKT<9O}jE6pgHWY +zs>vk9PM(IAYHO_03HjzAB?tk2e)<2?Ja)7vXG(acV_m12}1; +z6hL1-4*JjQuNs0QSJ8;FC%bIjchWzN!_Tm6h7L|4Kk7OIEYd3edL&6w*2KO*aKZY+ +zOA%*Z$by5+l~aq53ZEy}kVpgF=6;#KO(KFVEtk5u%JHQw*? +z34j8*^%}&c!f9r8(?mC(AuLWeV;7Wb%>FYz83mSN|jO=HDRi08uV;l5Z_w +z5{BA-3818eE-DFH5+c0!5~odj#01vLr-kf&M!w6R5Zn7jJJUy=BEEi0cR6|5mU8Md +z>8=)A=z#)h`!{jToy$CH)0@szQ(m_X!oFGE|4#rBLMhxqJO)wHzN;FOU)QKsM!%ee +zJo=z(hVD{#BF9)PD|oG=Tg54wyYQQ#WFj-9fdk2%t2UvQ-CWJraI1MXb* +zpTd9MH}%c?nsg}A0dN<9Fo^sxEMo>&Z8;?EyKGQ(RCrqAhD*k`>;-GZa;Gkk^5@=Sp~i%-CC4o_Jo+tYc9kpm4NLb3Nt>JyCj?vPL;x1E3%LBgR(|8~H&-p+ +znbb7egdSPW#}`xGhr_xq?byxJ)aE)6MWUYEHLaij!VEiDR?u~8hjyl7L_4ewY|5?y +zM*m6MrGrLrC~I)@+s>0a75+0s5&%W6Lf9<+i^<%e$?4hl=mkIx%W9c$le>`@&%P`; +zi&$}26)^~~Cxjh!8nUp1y0U>;EtJ{Yn*+Q~=b(loez{RF@oD`NMHVWbvTdK$WQvlM +zwJjb5z>Z*?XnTL(rDzvb*J%Ycy1-2i4cVf6POd^vB_Qvo +zp(p+izE^DL^;0JR-joRcGeL6LuZ&Gy4&F6jJ8|D5q}Ib?lx@!D<*p$GziDbQhk^1u!Y&KTOK^ +z6Fh9O{ghwucK9e_)S#7q3`Xz(W(xBQgN^;@(UmoH0h7oJAHNtOEmoJn^uwlKV0o-?%{_ROm<8aF| +z%X2I?jPnOH5#39W-;2Jo;|f;W||@Mx0a +zFiv47Tb^Z=7ZBM}A=}sc0mgIw29ut+-`>jMm75AWM_ +z1(h*<;4GDG5NM_zSSDOYaEiL=tl#SuxG!0>F}0B)ML?!KMoWRK`NAwN2O<1Vq2Ck+ +zErJD;K0NgH-!Q=m%9DOY0=7MSv#IXicz=2fXa3x}62%ggHa_&=pic^&7JPpL50XGR +zTLPN@D$m~=miy5MGs1hyjU!^#1JsW%jJr_wb({o~xzT@qR1jJfnw5?Jazpm=xfRoy +zom-W>m?5petDGGmZ$2Tk_X}mOxYE@PhhaDVz*a?6VRtz0bAdpgZ`KAF}Q5jyN$y0o^u}8DM6p#30-KUKDbKp`- +zjQ!$^i_&gz3fUReeU6-Dlc?avx*zd!H=(<|#|tl=)`31=3Dqhf<@67Y%PFTMzqiz=hX(=`@_tSNptuu* +z_!b`KrqfUW+_@Rd_KgSq86IuwTsim{!4yK)Yg;(G55A`KP@o=3a*p5n(GW3B8SA^& +z4;phE!NF!Fh+Tf^l;tQN0`6(kCXw|mc9R0~8n(y8vNyWxy`O9;b8xLC`W}9nrCIWg +zCaNZ-o3?z90w;*oz4+Rdj-CfJ7D`c|vauX$LXS{F7)7xtsGt-9VO4x7{S6qLHjF*Q +zoKaf_I^gr!FQSI5@8~BsG-j`B@e1ExCVAHG$B{L@AO|}&o0pX{mn$TX8h}xfH{NTq +zJ`E8ts!7)lMH8w8!Vs;|3YJF)JCOS|!q=*lCX +zT={=^GJ~+}b-U6t!SC@j&!XAdfBTeGT;E_V9N92(#(b;h`KtCgvEeeWr6c%5|06h~ +z#piI2-sdMbNxhAq@35#^sBID`?PKQIRhXkkSub?I3NVF~I!`wuQiVOCo5~+Bh)78! +z4UApbp}uQ&f544(ZiY-)ivGHDx>0~b*#?nAWz3h0(&y_{B|wG@b_IcW=JL^GOFs +zOUCD$BvM=J6%2viZ&Q_zD1p#69cmLh;x8(WhY((;!?0@lJdKe++8F${Mi{3?BrBJm +z14f35k;2 +zm`{O~ODQ*xCBtL#xq=6@q%-beZmS(uw62%F{r +zB9kYP$4=R>3rD|(r`I=}Oev;wG#^E6eeLc=ukPj?fsUt(5z~LDn;rlHg8}o<91ir5 +z%%=3q;5l8)Ryl8r$9(ayn`};k>wgLQ6jU+=PD#?ER&{IrKa=4Lms+*T8X9KxpqsLvfzyK-USbahHQ3TbssC2i3}FFEQ)0o%+O(&uAe-JA-cn+5K8Xmz?#BJ;^SsasW{X?U310SZ8qFjpxS4T(H7uZtP!SEmd+5{ipyHW0FBLXdVGzbo$0ZB_J2 +z)v8@qnGDDxBK`cC^a?l%cZO{$#r$Gp~Ew9xx`q-rj{isrfl!3iW16?H7v)I_Z3CnX;|U +zieZJw4c=v8rC1xqq!a|>hwP0~du9@dTw_oyoMm>#q*wQDzgkuHnUM1@-tf$DLI#gb +z2bznY3>w9YI{NxePz|wFBf+2D;6g@Uv+FGW8kd3=QWRZL^ft4ZhN +z<*=e-v&ws<=OGOpm>SQYYaGtZcI|+ci~>7ob;GmKUI@bt#^B@5=`d)8nM6;4E(-(<9QRXspHg#2YDrZuSHJ`|9(IP#6qO +zZtQcRAG1#+T%R`#9mnPgv?mlOVo-o!;zwQ<2#y@RuSl!nFXCoFRHrT6M^c0Wo9t +zJKOoM;Yvee9wbYzBN|xRX121sgjkX`A$n&^u?rjM%d5^=ZgasMtw+@(bnj1K)fAw; +z$lpS5#hP3S^t)c_6YeS<#-llM5VXCW +z@H@}7g@v;;_zMj$+(-WiJRH}I}0HW*pKTt3^# +zR|ldAwa~hab)>oh(gujWm+d)DB9TLRNg*VW@X$S?ehUP-vPVqow(I(M-T7DJ<#`U0 +zEESu{UpUB>-w{5*9=D-2Tu%tJySxtMxZc-R2A?k0A74D@AZ~O~#0b9ybd@tS_KwgE +z%hh|(^Q!8}Vc@k+^KRR#xKS?5uw<6n-HZoRJ9Ee1$rYrR(_R|$kDK*Yrvm!&GV$|q +z237X0WLFMtIq4U9`Cd4okj?JqzQ!^Jo;7=(CNDg=Ae4W!PznQoEsYpdagJ+@u2mX| +zam(|u`30?2{}hX5#t!2k!)n!Exh~I!bzIN!OgQV}LRmk{=nVJ-MGdh&X8dw#&?@2S +z@b8iO`maYR(YjZ7jSny0!@AjQgp((0h+L911BP4R9$cfFkOs4h&`CYF+T!w>&f?bs +z%h@_V?$gC713%j5c8|@A_=G5{gT2}6X~Z!e9{H6?-P>mfVR?$k5A_vd=eET}U|C(x +z<{`Q$JfIb-B9om{8(;cfZnR@?*NV-!#FSDoEGRQ}UoYnQ{=3`nVqAWo_Y-Na=28~7i&Z%t +z{!UJ!lxCtruAcyH84#EA!H#aiNv!XtpXzKqp0s5DY{K}HUXXsj|CguTp@g}jw|JC3 +zBg|)HoG9xl2jjv=GpY4;lx^OJh`+&PZ{Ub%@jecnUP5l!_T27BgS}%Wn^Wm7HUXsZ +z8bA;$M7o=XL2(%#GQ`A*5gPEWeBLi?YO7jb|A?km07y=?N{a+5;k?m6+M7qvy?Xd* +znTi$ZD8Lp&woLZAS=fdc7~7Ute1-d0l(|`-MvH+=o=cJY3FZJ3$xvS2s<#x+a$d2r +z5XQP`=jM`kqHWP3W6i(c^NTqbZ$<1o9FuXFiM3n4>&LSuKBe$W)-ScYr{ygt4XG>H +z=;~(*N>N)-W0J<qhM5?p)HQ;eOm|frmN!-6VwYnwMz5 +zL&aR)JG(z6gV`xxdd+AwsksYH79u>7#Qno_=>wEN +zwy{i%9V7@ZfM@oP@rdDF9E&y%Il|RFs>`yS`M0kf(BA2M4Hw+Md+(J=?WaC=v+bgd +zKM{eK*Zih;EEInpyUms`-W|@joj9SF&E^hu)kuq884 +zCy*chej1msC-44eVX_j+-M27!p%7$+D$$9Q($*Le3Zk+`+=ZK3G_Ev8GOC9m#;8%7 +zCWc-PlL;GkOXX*=zz>A(`M2XI-S(-k;}b;W_IR=C@uLC6$8#%EUCg6?AN-pk9Y*Vo +zFZ+OZBG2Imp*bC&EmxkN!ybtTSvlwTmYsrMA +zO;_FM!lPWn);DTpSHsg6_03%e1P1vvX!--TW>EazfW*77@<@$^7ERaH5CgeqQ;mcs +z6nwT0B0Us_Uoh@KK`m+3*0_j|G@JUO#d+mL9Q*_--+J0y?rn!-uNqu{r@8h_Z~|?% +z>a^TenMQa2+X+`3Sne>9d$Fl#y%;W9_$TEcG%Y-ebNOch{zW@>=``~1K+3+TPOSWm +zAUpe0 +z_Ea`mEZsI6K_SdL)h1#<0Wxmn~+<@^Puw=RXrl{#% +z`>u)gp^pAsL|Q9&)y6-5Aa@0!`xZ#XR(4Ylo^5(lCG$HAhSy;*9rH18b50qB=cWqQ +z4INu*FSAyfufvQG;$m`R1mC5b2$T5%2^vs{8NbrKr7K{)mJh9rT556nb#Tn;EqxA_gM>zcyoEED-q +zD;_GHv}YV5Xv;|^VpL!F6UTng*WV%;@YwF#BN6?UP4~MBRu{acY|8K@aFb~w>z>Ny;#Y`pr`>vms7`PVCjX8E;7;8FQ?>1zLS7tmCgI4!iM +zfP~oEnFY(ca9j8}L4}D4Mb@HJt0=81sAbh~#+|FZjV +z=yTg>Ct1v*EgOM~wo?6pPHn3iJyDc@a`M`B1*!KJoD&t=mlp-8w0oML+EdWmQRRHk +zgWEOS^(}7c$B+H}mTvnwA@*x`i!OR)`7Q{;PoF!>eA3+b25~-6W&b7cRA@EW8|M>P +ztTLK7rdJOWSgAH1`LTZKMvBlY+BwQ&DQl}Cdy4RLMt;qyoGv-)h0$DlFCg+6$b1Vnk-fCO##z5Yl>SzBv}&daBJ^4{qOC)riiAwfMX{$F?B +zBv6?*?J`M{;A9G@|Bttt^_LOg!2)S~qwA;EmANFa|Zjm><8}|eqE?yvKPLxa(xzP2AtglFHTD0}RqW?w +zi%kx?`+@;!bHp_Sy_E1&7= +zfgrcf(#%-Rm6j}MlEBIiqx!2my11Op0Dxm}ZUm!bgzbxeS(5j9R_dqK4*ZHr|9JbS +zjGkco`EEd +zg2K_+9pv2XO#fFKb08^Lut1M<`wF`pxK5Wpe(DO1N(w~B>pz`88{&Nr6?ySl{+cyy +z_dUP*)T6IN?@GZe?2^n&S=mlJ9Fl8vN7#A}66wiZ{&PEXs~RIK+N?^Prvk2Uz@)QN +zq%X=gV#^t`q)n~6P#NMGwudpS}!e0NV$GTxHaibYu$sA#&u4cIgw05ea5mN-)>M= +z8}DYPIeCZ&-b-d<`gzT1ozIgq9Xo1VKhm4FlQEPArqn*)?@ti%n@8?PP&Bq{t@T0Q +z6LF*1Bcbu{1WMX`DCAVexbaNsCi7pS?|WwMeL3BL-&gR<6x&YO^_s;tIm%}R!C +zqBYV&7?hGJ78s*Fyg~K;8J-H2KE22eJ194T^PZcfNUqU%;6$B#VT+w|W7C9oclwA@ +zRcqK7&2RP$;vGWW>Oz>6@Uiqev48CTa}TS_>*YbC8 +zQ(}JG^*hKg_Fi}3Eg?WVkF}?CNPo_r?Bqj*5WzVd++WB@_(GG>E&99( +z3tEPyphKs4Jhcc)n|-zqy|mx)p~!)lPt1x8dK&z0-jV5Hx?jX>szOQG;6?o{lIqzp +zdLQd5)>qmG?jUiGy%RdwjuNrX5TITC{v3_X?cQ~5kmxOSCo!Hl5DBuOBMI +z#jOg%^;BcVV-cBsFeR_R7%2UDPRUgIr14aG>00;@=Y59Da`4PT)saz;`9ynu*jM4g +z9kCWKC;_doJ@<lfZUt~a4y^4i~8)u7EY8#Ac8~V3CH+;>QB7fd~>NwglsjS +z^sVqGNJwO$p)_Ch{6;Uk;5I0ZrI{NS`X~RFjsb~$FQ1LRwP?et`yM27OUK{i!~`IN +zpsQ7Q3U(J~Lw0KrF+xS(89AfKKY6W{c)nv4zttZ051*Pvm7t5DHhybkOFgEq_U$)*~6X9o0zY2sC#V- +zlf-N@1{Pp%AC6^ZN>=zbLi|9+pu-bNdGJN|eOi%0szev(!DnBVG9!iWVXnT(!Uq>t +zMSn9ljHzE6EGpVcQ!>>Qr-jhqZ>~7uhcrw#;g6Q@rDS1uJZ^zOUu|gCd}^DR)Z`z? +z{HzhygNp;|+oAFvQ7Cs#AWd8GuYR|;GDTahI@hNwNoz-*Fk%@g(W?tbz6r2Mm7aW*2FCHw0UC7*@wg4I*1%!33Z*Y9BRZ1r$owGkl7-kH_=}tXf +zAcrLFZ|uyu%IZ?cy6X?*@6w!Vpynjz_}+CTl$*h9*=Eg15=$gak7@Y8d!i3@tH!JT^=+D&_eT_-huIS5&=@U +z4j>YL<)+@wB(QGYwE%tGJBfHx(B%=W6+uw>t`tuQUY}MP9)?@QX-^X~qV{enVm?5h +zv8{!|4bk)Fl=}wFQzS6?BOTnNRSKnC|I&s*u024<6<01BI4n93IqS57}wPWWsLV}A$LI)?qvsxtV+g+hO!#uNM$4$`hqP@el3w)7r=o~w7} +zY2nLt787{ZzfbQU1bhy?G^PY7$EU`%_;wqhw4%=re~(vRu!Ks4BAG#Yq@_E +zktj_zT+XMSwN?*mV}#besh`M8Bo2mK3C(5M)s#U9{Kk>8%P}Kot0Tu+NV%x=4`DTL +zMU~vzm4jFP?!_d~5W*n310JLZM24UvZJAN%GeeDLeE09GnUIq&j5ZKDDc9+GxVoO# +zdoJygGnwIj%PQYzmwL82>=7->3AZ3Vb0>ggdy*5QOnCs^kvjW#RJfFR4{NuEkD0;g +z$IrqG03A*)NwjcK_2ojuRtF`t=C?Jq^@@DLrlky_anOd)NYdBP8e};|+vbdH`8xx(H)4>M5isBgie11-@ +zAD_^w>sEdH8at{>mrn?6TL0;J=z%OGKLOlA+#I=A0$kVVQJY8B3Nmi6MZ)RR@A9h^o07!bL=91Ov{9;~&3c;uPzc>5E+tq9 +z%Y=;J?+Ojd@t=qQO0@oJ%82V(eQoU0o39B;+)-np_Wr6V{&}`mW+i_+0QM;4_B6{i +z;9`fe(X0t +z9+l$buwuN~jAMcthrJWrjgWTmSGMc)#+;~H +zfwVP1%-k#YuA>FpHRf3r$kb+24`_+@b}Te@T-Vp=qF;|>=oET&S2~9e=c*~AR1f^v +z+ok%1X86?=W`*RgNnnvUG4_K6X-04i=CFUH8k!)6RLXcKxW*|5R0KySPs+=rrEn4v235O)xA5I +zTX%IzQ@o)uS`K2;l;Q+A;1f_hR*#+I4AYEdGUK#3nY%r_baF-x=Fa~7iA(Ej?0EDb-mqz%21wB$~Y +zBy-B*cUb;-Y^GvIwEXLZzEqq4gVnzh4;{*IKywH$*jc-tu+ne&%P1G?oyXcoTFngx +zFOx*M(2Jf(m}XM68<+eQlVB7Cc!K)lF=m&NFVQUJ{XZ{T +zlH52-u9ay_DWLZNVeSWRv(*y&THn8Z3+LnJJ>T&iGJe}O;wkW5hY99&5l6R+B +z`K7;LMycM(Bq8)BJOmIl=z8(2UOL-2yQphRaONUA+SgER!j;!sEnO5OWq5oZ4G}02 +z;N*#V>!@>A$X+&%h+mb#D-VvN3FI-DngYHa2b*g$+F*rE)*;-kXW$3#`?0RP#~9I6`Ba5ybn67w9-SdNeO|%VV?@7BdyF3R>$i*Tjjzw8qR4 +zQPFB|HU_8sI50}P-p_j)vXf +zLJ2GIJ%P_FH^m^k1dHKk%8xh<0Wc2|g5w&~50gmai?&eMpy#~I+BBenxt16|o43Ma +z<-^5yX1u;HlZ-Uia-Fp-{Z+k~PSo;fe)_9hX`X7ejfZGgf&`btG(*Q>oR +z+bSUOv+tWm1Kmu5TpQ^zBGNypejLjIj-#)vw9YDo0({BCi>!nG)*gam#X}ZTn2jvC@4IHbPed!WnK5&WwPl7{j|;>Yk{EuKc6@OZ +z9&HSEDXZyNq@2Tnpd*T=OdqvXk}9)@&Rf9BEq(`=C({=8CMe? +zW!7OY1u^#7pn!Gp`Di301O)uaVM+Ww3a(CoK*tphMXU8Kq=d(>|15Wf>$&!bCA-A* +zsaCc$>#b2BEY*e3j$|{1hSE4f6oLC+mwAA;1+=koI7wniuhjkAz!^b?Fz@o$Fjlqr +zVXi2PP&GBPlG@gbxW&;z9CADrp +zT;2J+zsjO|s>QlI*AmJo5OdNu>B|FZ18y)INIy2aeS<3Sk08e~Z&{pv%pg(PQcT(y +zFjqS0HH8?$#?#<9OC4(iy88eMQt%xo<4XFAGvrG6YK>X +z3v(J_O6YL%?v-_U*S^ +z%D2*ME!$-#Al_(JzXL1Kw!+j)rpNCJQC91lSo5*jz;iY!@0rM7I3`o;VTd6BarR< +zy(1F9Ln|k@^pFGcX)pv|ll}A)@Q3@l(Cq*;Jpdy*5<)huZIe0GT9he^z@{aKI?j2&yFLFubxfi7##K`)wUa2=0TV- +zLSubtO;*Lee(tSGjeBwJNA*c}+Isi%C;o)nJ$ceuR&~DnMRvT$biiqGj@)sxW+usZ +zI}9>T1|oGV^cItwfH-vK2(O0oe7^VB#z~a%-hz1 +zk}<0*i#d(TwsW*>f^WQpY}&)Q;n7&PtMnwq1o3+a29dgVxzzND!@H+1kEm;EH_Pc> +z;5kzqECP9GBKVZbi$aorTS{@RgJ0s=NS%9Yfxfwr9Fl*BsnQ3Tt*1nV8IH>ht96Sv +zoOAq_PJV(|hfxRc!(Bn2;xEUerJ5AOq}+HVS^vQ3kx+=tWk5kI@$#`M-L-MH?%(Tu +z*Q9Y}JDh_=d+xIR>t?s`Jg;vs1M~mktwF@4`BAt%(HRq3^6R|tWh*XtCqLM?eSN

@rBghjP%`h3?Cn#XIB#e3GeAu9WM4o)5HdJqPOYU +z-z$s{a+rQ`vK=Qp^6`(2)xVJ4kw;y>C4d5wxKpnWC&@iVf`Z?Dl^~QEK-!uM6iirC +zoI*1W4;ur98Otutbzko&s*VoRtw^*p$r@OUm^{Cb!rUC-wUbD10fhl)eD +zmz6bh`H8QiYh$kMcGcp*O~LA;Xeb3*py0zPnUL0yk>O{>nf-BWD!ZxJ3a?`eN=D&} +zJC}B&im&IQ7U0vR9eW54IeC)~IIf0)UVxYPH^DG4a3w0zYg0mjrKHhqu`kXkt;O}LfMn*=`j{5vv(m(dMB1SIL-TihpMh2iN19W$^ +z3<85%_1_l6F8@Am`|Z%SfBEr8WLO}?CW;)Zp{^fv(MSsIhD-NxhrlAVJ#KmLnPALJ +z{>$2H^{2Jd*X`+FMX4@1M>{eW+r$`y#872Awj06m%HRG-4y~(3vB;UvYPf80QQ@OR +zkczQX62v+Nsl+EK#(x-@pYOvYS24Y!m1qU4F$gg3-E@Sx#Qu4c{Mdf8I>PoQ^E-jp|9rPloH%mgK81fs5*P=JK1|9HRo6@k2+!Z@ +zT>L=aH-5F9Uy{fa0vgfwnwDbR?N&UstMwkBEbGYDJ@NTQ$6Q7IJB?;WE16 +zpVZ@xgvt1{pNy6*4&d0Vhd?*su-y_v23H^}sb<7T!3xKBGamUgG)k~!q +z=<{{as$D!nU_FInNgczTQ+xp(S +zYhd}q^?@oQF5Q`YjNq++IQDGz(-hY(JnY!w$d1HK&wPXcG&mr +zpC@N}ERyiuk4|;?><;!~XYOSz9^O=WVo0(=Ju9}#f;o-cS^hM#J!lThjFZtuKck{_ +zstCzFxgbg7?6k~`^=EoB%xFP(jB~;6&3c(Tt8v_#(I@qRD&R-bRc`zer+M7YT{K^H +z&U2KCmJ;@4r8Z;@TKV!^mafGeT`Nkv2Mbl7%sjz~UPY^$jv@>~ANU!5|Gk*J0EE}2 +zn1eg^9tyf0yW`3OYR{9^R@+s|9MBKi)3?{Xy*FMR#g4H}gmbaF3hN!MRz|U++{6it +zB1+9E6JNc-!nk>*sDEOP_prZGFe{^0s8?r4&Xx*u6OS~Dgw%cr|Cnz{wu +z$EI`t{@o&=jy>ENyITxtja(KMzNIAIfhGNoNsTzlOO- +zF_pbTx&t7ADkp3PxP4V|Y62+MoIk2BiAvRr)fnWoJpb0+R4@R|`goD=#jsRpfZEj) +z!?X01>I+7Y+6X4bQ&50K=rAoFcvQe#G)b)m1Eu7OP8(>2YC3ewg@Um~NzrOCyh38) +zzT9Toa?5iU`kfxIe-A$=qyuB(=Ox3Bx`aL7kKNNB)RSyWWY5wN>waxI-ZvO>0sdzQ +zQ<7}LDE^@l?=va*^{fZ=5toQNKc#Qb7Ya)RQ|X0<;Jsf2uHT{jwN!pl$z*A6pED{^ +zH9fpL&wDXMMt&|D<%`MSP7%pnTmbF1KPEHMXxeslgGZ*raB$&-9U_#g+QU(Bn<)RH +zOU<{fkH(*J@$x^YFarecbq7TNJZ8WLv}0S5{4=Rt=o{?QfkpaDTwU!xX!zySFi;wMSCjcqs@L4qEIWKRsyNWN+qZvW +zwc42GFXpo}r%ID0Q7dn$)dhXYeN6YGtN5eVswcjmjnm{3Wx4Pq{1zE_CRdYLH7QfA +zdi48H8dA;A(_baYM4f9AH~d~_i6K#h9fUY65!#iZ=mKdnq~q^u0gG{L|^2FI!|H&VmA +zTzE0AZ+xe?Tv%%Y!o-F1=S0fw%6g1zfUU@Vg018{DQg}%_J +z*J`5?D+#*atV&7engA+%BUoKkN=3Xa$ +zub?H;**f61;2ogBf9J0#;ChhyQ|#EqS{vSHii#kh^LLB%u((7w0#UKO^GDzLh%wwH +z4X&ovMm|L=!Vi|*@Nesk%qN0C3;W?T7^Rq2^OH^x|0Vumt9pl)Jnuu{ak-W;pye+B +z`~l%mVon{AxUF`fRI#=2K9qo`L?Ux6~23Gz9^fHQRJnj>1Y|Lt&F*nJE +z55!-I-)P)>mkL3{4r4HNqtVUkJ3oogl(2 +zWCYs>Gm6_?$vzANg&Hp}9F0w2JKzaSM!Oq_6I(T+8+Dc?(?E%Lns0P&hIT!2s>HJn +zzP0d&M)<@W4IwP+jAG67ksY)uRyb@K_VqHgYR4@)tVSpYxJ=LP;es=ll{^LFJB5M% +zf)@duWwl^Xz(Bms1*9+)G5W6V+7ZNvQE@2$IExqsb^pO?c14H4pq;m4E)L%+NkdaoWxVzUVFPs +zN!;VEMM_j$a@Y4?xh5QP#xh)37CU@8)E!v5pGw`^OmvdJU$5(r$lb<2>qEeQoVUFj +z`uqF0o1G3zrNM?h(aa6VC&C&x!($N<+Zl!|(LWn%7=>*y{RtF_)hM~je)x4$sXJl& +z`-{P~%qB5#yQ&bD3mZUXHXP)4@bI_&BM@+XnBF@r3{m9Pp`aketED +z`uSU_e(w!?uBh*jM(7RgB^HA*Kgj^DkNjUX^xC&~suI=)o9k=Ak#9#h1 +z?BS%J)}o(u@wc46%y#hl={E`&pni%pqUkLXjS|VM1jc|-GO!S5IYI~NoGeZ7xE*Iu +zXH?p+k^ZowQRO+|=MsQC4NcKX7HdpPE7( +zwvEwR#3v?po-5TP|47VB!>o5{9)`mg-6IYjA?5zM%Uxvo3;*YISb%Cc?-oG*Ovh+4 +zLa&*NAz97_i|6Qf#Sfw_2O_2r@6;WnzgPc!tOO$l93+tCuKp+ns6?@X>v#J`;Hee2 +zvE@hu@mho1rtA6q=RMns!yoq)lNQiseLR`bc!D%cJFmj5 +zPMoq|eoyjQj{IXeHDTG7KyPJyTA=}AL!Vu|2pB$dP#XU~03Si%zF=)Y#i#MB6`sOZ +zJf}w*5rdjzW)wlH$&z=nVug +zIXQO1>e0`>@bvW$H+(U`4_YIF`I6K(A55XDS&Xnp&!6AmM+!`BosOJ#1jIhEdmKkl(_d^^^xy=Pt=qy18f?rj)_3%n@&vivY0*)s0GA@ +zd75j@VC9h;@5 +z!R>>{p{js8lmAoCKly(inK=Hxf3)xD<)w=AickgcU=m0efr?D;CAk>Fg$QaH2gy>N +zmX`OF^ea!QUCU3%4#R(ybk7`XYv~ad(jjZ=%?sQ+- +zn}oDaLw4wn3pH_C?Dcz0Rs=l4BW8u{x2&v>1lkbrM@NUge9mbneSX=9UMo)CHmh@) +zO&txZdpzbqNu)phGh#k1xqj$tj`WMq;KBD9Ao{vqefC6ty^uqv +z`y#i=6V_?iza$)P7)5ezEGFeO?U|I4!jW%+>syj~|Tl2%gNfEr}+5$CP +zhj1ZAoJ;6ja8HLr5gde(!wAYx9T3wiBYq~_p&aQrmJJ0H2dkFg74pc$ +z6QHss@mSU8^BV9){+xcQ1aToCj&zau4Y +zo`1^N|JgXU>f4Y0_~5Ti7t5ETbsXO*={t%!OJF9|%9aIFdt5!rQn^n{;Xi3f=PApX +zc@}D1Ja5cy3s;-ko~5rQC|i!Xvb3~io%gt1#M|gxdb*C7_T`akI^qCg??>F0Qw#0| +z0S-0(5d41Te{W$MTk@lg+pzWY@_0|{Q95jRMu3XA@~lvmXR*-qF9j?#;j!VQvKZO~ +zZ|Y50dpgY*ax~4BEkz5C3fxE_g#<7SnOeJIx}S5_SN{4~i=S+h;Rft9KL%SWFl4GbVMm`uYR=wDzX`{SIb?Du@+QLSyb +zri9%PRc_(@uqP+rcsxEK13~)?I<3US1TWQXZ`H0S`wzofCFprSK}MpNFAI9K*~fJ= +zhN7k{PZCjBxQ6}>>BT4^D$f=02h*T$==LbPu)gdUo`<);n56avl_kvz{Ge^*apn;i +z9xnXjIj5iWS!5fUNTHrZz&l`mK^yU+d_Bpk#%%F@2bL|4LU3H6-y?ntLOQrm^m<1| +zM*K6TrqsFkyNKC{j2hHbwiwl&OB?gHx4lill}I5Qk#DbB<$5!?^^T58w^)Q-zf^hr +z!KcuNKOr0qk@ng1^00W(aa**~71_+HI+s)_Tr`D~)-2zLzpdYU^1$nlPE7wU+OldX +z9qu841;%B +zEkLX~<>Yg@GM1mp4qly7sj_nA%8G?Wa71$O4vvla=fWdlahd#_ZUW(#8`It1%t#L< +zN$tm~4k5a=&fkvBU2*EEl_AS2BUElNKQc0dNzn|nt}}1|m~ni+gj~?DAeI$eB^+41 +zxCoMq__>x})zYSr-npAj`o|Z);FQZphYNpG$0UUFmU&Z%}@E7Yw`K9<|K(baT;T3$hY<$ocM; +zk*5ra$y{6r(Ivq3ux)k76q|eKVT+Y^6jG%GBBV0NI=$^W6)!tLaR=)o`KidB* +zlT*dt0GHA32=iR=w&a2J +zC$9XoPHvGz`GUx#bu3C-v_R2h)<+jf)9OmI~rAR4|FE*h-Z>+phSqVmV$c +zI&022!&!Ckpf^z{_~$fF3oyqmzzQZ0pFUl|lY{RmRoqv11(zq2K#T;2RYmB(G;RoFIuWPbh*gGRI){ob_ +zGj#wcaN-DH`rsh&?O(s}j8pz%I9IixPn?XM1ZoI?i$!U~TXDTg#lwPh)v5*Gmob0B +znhO*y+LOR>oE2-_h%C2if0So;L3C-7rOf$qBV&Z`U!4VAS?n}BH>w6rtY)D0Jos_C0HffI#7vEq3Z +zZ5rny_EXhV4w_u8)a^>B0iC>h#puzOpSS6jQ`W8d1IrGc?P5UUvf7Lg*ytTgZA+hV +za^rCdpLXkxZrq4Gx)D`}(m^NuwR!I}-H2v?htXrUjQf^$B~InNy><F|wF>-NU-H!)0{OiCt+P%YyZXgvZTx&%6)k$+gSk*O_^qA~VImDRi-+(?b_wZR +ziJi}MN`c*v#t6pdI{H$({W=@B* +zB~=2nY{}R_sQsAdbR_ymE(KhR9y#L-wJM+YpMd2DtXI4oE*&;Buy|l`ktp6pnlcX; +z4^L+-%Ht0?;d8i%^?m;C#DTh~_9P#ba +zjBgzswfwa`5Ggf9`Z9V-GuIai0iF?SK#ioP!HWcqTUmS1u~Qj%S;qi7+j~xYD|gx= +zLi|Vq{Ud<6!m$(9F8`BrPCMzV{i`+JnzW9k<}!o@XCLucTx1q|455v_oyz!4l*c>Hm1!};fXbQy}bPtsBvEnCvkQ!&d~Q@Ws7?OWtuc;SVf +z4$!o5V!}BS>Bz+LsIWK;}#y>xM)A}n5h1`F{jGD!fKp+BZoN@6y_h6u7lXlRQXC01PCSOHgnU7nR +zDCHGZ^q4Jf%7X((;nnP%AA}5!TPx$37v3VKcCIO}UYEb0N*4j1lfV$s=Jcv@Y}-$q +zeC*e_*o5m)&`YqEZl~KTvqKB{b%F`_qoYG#{OPk#y*#aomijD1dcLFQJ$nA5=RtZt +zq~}Gr*v#m8lD1^g^Cl=|ih3SZId-g~=T&0UCRfk1^n43_HE+$5;C`cMF%qD%B}SNO +zD{7J1n$jk1+O+LSn79=Yz-a^;S_I84Aysr$;ex~k_E*KY~OV5 +zcpY5V)4ApKmNphz-gT>&J^PCDHr=#-?aGg7Eqof=K$+7=pja%41N#q(pPT-6`h=g8 +zc+#_CU-d;cl~^ZB{f1lgqNjd#y>z!d4%Q{#8jor%b8o@`n_aF-;+4)17dMHYNuZ|$a=F~z=bbY4ftQ|r>Zg~D6lQu_ +zS&s_W^BFy_(es6OA#!mW2gB7=r=xm|u^LO{f>53YTaxDD!4|_O +zz!qp^^e?t~=u_nr=T>{Hxg|b7`6V#37JJ>CJgykeP}1}b)yZb3ljST`UgzpZ*$KIx +z9h6&3bxLubDzyN*{;9@TpSz*!p4DAVAN4D~{a!1-D6cy$fC%esbab2@Inv7p2S+&2a(#4+T@`UuTejqt +zKb%|qz +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%0AG1 +zoV}8-VLwhbv7^H}8;6)Xxfj*d*9xXfu`htj^Y{DZ7uI&R{6kAav?y-FrKmmuEVj## +ziElI^3>K*_!$pYPhR|SefCXADDp)Uh2A3gUG^+Js0=c`pTR#GqpF0-+t!wewSd@`3Kktq(i +zU>{62Svu$}0YldVT)~Ag1++cOB$^AfTOcge;e!~ +z(|VCA&jNJMClW~>RS3+}Qz}S^A%QG6z$czMu$7#Ss{Vb&s-NLuH=?`=yaXd%8q{LR +z!4yPgW5f-l5g@UlF!;5gXT^Wxo&f<$uD9fHvneUfvM<tanrvW)M+`PT5oe8!^{lowCP0_P8rGx7p_LeK +zYK;E##uaTlJX!^kK$vnFLR)7lXai+M(FtI|cMW3>6>sW1+C&urKgbDO&03ZQ-6uV; +zf4|YbWs4zPhP-<9-BE4ENDX +z)dQeJQD&x#Ro?0O=1gBkC80gN5cnRQIYL+vI0x<FHaK}KLwg8D +z98_SDIQsxg8UR=03pxch3JK&ok&dasss&qemfVDU?Gk!9+X)0xymHM^%QOZcNiZl` +z#-L@Wg8*Yjtx1<7y8j4_8LD=n{QxVCqkRVDHm0v8%yD +zh`SAe)sjbtP9>lvfR9PyxRHn!86Gz3u>a7iRpvI~GE|{=dFiUe|B-?50-9a`APd)WkrV~7qYZ${ +zOa{FV+Ega#xzG!JdSB6nwLi5;9ZhwI@%i|k!-KCGizj~%zVnc>5y{IINTt$jbab4} +zCVbnBcQc9JUR)DrB!XKlDPi~q_U4qLMIo>}>_(I`O!!fn5y>A~<_m<{m``4Yrfr$* +zQ(6H}Q#&`6=9+%5o;zvE6#Pps01~H?6YfY(m8I1Am<4&3lTHh~7=WIy6`)@$B-Hpe +zi7(*ZYgt2(5fU{X3e9M8BAlCUXR0-m+p={PbNM~dB@UXRK#}45#IOR%aWsa;Y6?fhPqLyWk2I$YTlc)QJZgqznD +zJCfPHoPQL0Reklc+2v+CI9WDgYrdgwnB7`C!k*7Y*%PA));m_m8Ueac$Y_zgZvpDV +zH^gf0*|N6d#{^b*u|`yGkmM~2{Z6yCe5?URJ)#Xw3E-lhDv95+P$(aYM%56uA!4dN +z77iP+Sj@PIm@Kc3VQA9VleX~U^{dn}3$Ue9uWT9XMGX@YbLC@2IK_ddBIS(Y6+>0R6r=wwnCk6!lWZ4h&nM8D*M%iV@13n_q>VqC52%Ts_Y)pyNHQe(S;LgP*6 +zqdx@!UAPw2!L=yV+-!^=I%Ft7k`3s&$N*f>JJLaADMT#-^9A9diQudNbODh7u0B=9OZ(y8yCKf#}g1$E9^vrjcs9cF7fH~=jS-G +zx>on8%I*=p5OJqiHTN>JB@M0br6$9Bgo343nIG?zIIdloV-U$D?TKnj5SU(al_3Pn +z>O3g*jz?#*^Q^)b!}Jk)2=JvECoVeo4X8Qh+v}CBex*~0=OEv +z4DpZOpNAf#iZO&rk%qvXSEB^JVB9g}_ZzJU>an|_!6cWVJMX-cw;lEvW|q^5Rl))b +zwtyH6F4$z^fQ49q8Z0F0^>G1R_|sUAJ@%Ld5fgJQP~;+?N5g4Cz)wMAT41;!W4A>uN@Ug8%Ln^E3b&yP7Gfi@Z}}~Ndz6Q99z&>0 +z#7kv0lEKc7q}jGmf~^Z?9T>Khzm86p;E`1LNhkB0EiW&Je$E(6AE6di;d3^FyI>s+ +z?#DRB?p$GrDI>s^#o06C(V%+8b|WHdrZh|2m-j!rIh4P0an`Mzqo{+|g9t`F>ksS_qv7<^W{Kc0J`c;mlyipVMhob$%6Q7BvbN_qxx{iNC$J>?kHk-|2y9{9} +zmVg$DfLZ`qNQcGepO>%TR;^uvw?x9E-J5M6SSU`XKD|0;+2KmF7EKd=iP7=NLqRpHtGr1XUl1AC4{3y%kWp+eqWBZ^FeoStJ +zZ-+PUC#P)VwS3Z<-0Pm*ePq+x&XzB>G{y$pRDL|;c*>D5?~3Qoz;{EUNJ1oli_pzj +zugY*2(q&oIEKAh`0WFx%Yf4+2URPIV3=Iv@*u#3@fd>Se#Z4EsLdzn+mI}SFZmiZc +z(1nUeT|w?zlBI) +zVuAJILkKqrh?m#3XxD-MH%+9n??ltT^yzFjUbqS^6X~O+Muu6p1sZe=01Ia3AO=~X +zwRNsq52wP9I+xq2IZ<~ULfJe(U)ME03BbMkX6r~yix}4sZ^*_5ltX*1^6L>t+Ab2h7^?v@zBka{-xrH47 +z_;O5c7K|5^tG{6=43V;?1 +zOcrQAsu(kHpv3^tf@njU1(2n=vs0@Z8ZzR6fVpY+ZgbO{-%Oo7-r=*yCTBXg*e)!v +zSPKZSWwDkM$1U0d)UY8@C+JnzqGZzQ8Xh*|6tWQ^*Q|8fK+Jm`$h59OC7b{k8QLy5 +zGC;FP0AEamjaJZ@g8Wh**P^^?1Yg+S_mP~cUA|~zhyzP*fuNCR%TmYKI*9xA)MgR# +ziob75UJfsw5QB@CpGyahJ5_cYSOHDVBAzmycT2~>2+z2sn-sLnn>Eo)I%-kk>pEsbpe@IoJzDPX*`u!C|dT#cF$`O2H1o;xk=e5nwr +zA~HCd{1iNJ?mu_qihm_WiSuVUeU7%v5Fb1gBnAvb6e6jCsVGB+rm4X|px`zHpd}Uz +zY7@brzBU@wNAc+Qg~Qf%iZrxs+f=8I#v`Xcv)C#uuyhLuux05s6ge!y0(JvugD#V< +zMOHTibSI)wvlRqE5^hQ5az-s0OBE~^1B@35fD1ZHL4Ym>M6U3IJNU~KwFvD$>A8^4 +zC7;b&M6u?5$VejFy8p<)UucH0dfo?#9m{5cn3ZMS`Y>Cqo?u-p!6XImSJC<{=z73n +z`u!7;pD*a389Sc@u26rCIyzVaV6pHF17I=X&IOnS-!;QLIo|e+yxjcLi9u>LGF$r8 +z;*3|xJ!w6dYt@v9TffwVXhciRqD;qIW)8XxT;Q$HDWEwS2Hgfs)0jNWnGL$w%f*f! +zNhthqdtxpU`E +zGn-7BEuaZ%V7Qo?27&t^2V98Z0t#UuZ<@gXwqt8E$X4P<(LZvUPI6Jyw6 +zaa_C36yd1az!u`xFEwQxU}!D142wA)dNoEilTj7)3gB7*DF+Z>!Ds=4j)N{3pwUW6 +z*AQSH+v$0=K^J?ukZ1UZW07apFH_Hr%4X|g%3ICH$dK3J?`gcNDcpU(uYm(EhrxVF +zNL3r?$+foxy5eW=+SmKl)m_bZcQn-sptKn9-SlIq=4U>ij7C`o +z7=yl*#V59$EcmX2{kM)MGJk+Py*lORq&Zxbmk(XFPGg*{HlV`-fQ8sBA~|CLxM7U^ +z*Lck@&y?F4!4+Kx!=KMlF=#NEI(}m?M8ennI{_~6!6uT6srs#)7n%8KgRHRhRBgWEkl2xy_-1iX-Y5&8}A +zFCvm7`W*#UEQLX&o$%A7uqNEy$X=cfe1QO``Qt?RM{jA!ya!zvXBvQoR=NWAr-nO&h5)E= +zEEFgyvD!5Y8Z3C0Rj^v}3~oaNv_Nt|#e}TJz-EaI4;z>THHKELGPenrA*U~m$ZwGr +z5Maw94JQtB-U73*T%`N%yU*(0waXe>zT9kWZZ`CxAr7?UF-nsSLq}(csKUBIQH#*P +zBKdJsE0&@_iUY1iXrUzs1avXet~|fD@BNvadV}*d7dbB00wMT;uQW#4D$I(l)JIql +z^kk8owt!^*U%cjj(uOpvamjs~YpzUp3&LoJGgl_T6+kKku|P<{C~{U$3L@x$+tuUN9-MF!jgO=gPG=K}2@OG`oSW<-paUPLz1#e7#;?-IPG +zLxUsnKTl`!_ifv-{5$lDccMU)4;W{bUr~UqSSB7|UE;Gc09pX5fYGA*{Qf+IZ#mEs +z#5%BH^&k!#%4QAHeB3=eZ0*^xL%0k%aX~~Lj#xl|EsmH`Wa6X+(6`}@HnrVvepNBN +z;93+8n+z-$YEW4=3x!;R{5BCKTGbgEWpt_nXrTj=s`@dTMf4WPmeZtGLCj?_u0^T5 +z9(`$F?_a9AvB}ALio6zQfd+KGRv9Cl!O~$)Fo0@{%SaqGFAKbo^*=UU6xU|2V0IV} +z7mROfu3$N8*keBJ;3i?wf+=)z@CB_47Wm-D|^D3ar +zc5*_mg{tI4=w6qZ=CsA>Es|afos`^@$h|AX9Y#)DjEdRl1X$-3a9C=i<|QSHQCf67 +z9v=h9;`0-D0^kLMG$}XZD+ +z{`*MHV;^tVSJ%sCSE=h<>F0}BdA3>a;~xTA`jiHC#MjCWLtr;0c@LDYlFf(rQB#9uZI9zJbnQyx%kvjBGL5RNv=h$n>U;B +zc-$}(34;ZL23lwxl4=G9XgY+kbTrTuc)(C6SuPO81NtISq__pU7EQ!6ExV5neip;R +z<&|t}H`h%DwYUrH6=JRs$Wmu5`hD)^YPzy)1Dd?|d!x}`+Uym2ASqf9dN2sC3SAXq +zvk-7HskuTEP#Aa=fE8k|06>`pR*1zi#asb1&BW{#x=Dp4zEQG*p_JnYbxq6f +zn@Eg5)qnKBGl_}O2|vIVe2C@3lM)QttQTJ(5I8;fGTrTnG0uG9g1cbM5a5hHhm?a> +z%)O(rAN*lU{0_gwB1^TuIDU2uC>V#YqW%CIVcVhXH3D}dif%-qr3WN9krY2h!t4dB +z(zSV2KmYlCeP7zNvhB`>`pC#a%rM<$2yK=L7K;H^EN87lX-UQ9)xcDPc7UXUy^^PJ +z&g4pz!(^+kr9}_-^%0xJJOlw;?lv@eavDD@q#R;jVS!>=K!7d9w64f|$ri91OpNg; +zFZv@fxEAf~?zWO+W0u;{K?sV08<_-jHOw;UB%*~OAZNK?%8Acs0UcL>z+f6n0xxlX +zu0{Q$snv)22JgZcuyM&15g9DV0yK+7z{)B_5LynP#gERFNTsy^bXtb~c{KJzLP0ot +z1rGuV*dpXQj}`==#KH^{2UbXPWx89?bmmGPUZ@8$g +zq2*kp$0$11}tWfpQc9F+f{L-$f=cW+wO& +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 +zjH`4JH&pkWzzx}Cv)^-o#Zb7#8 +z3YL@6hYH||EHk(iL33KMR<2y#zG>qHudlCfxE8bLMNu|g0ait{ +zavPQ+5|M2Jaw{RXCI4xn)!6%bed$y*E2r+~Qroj9kSWS35qhYprMdlW*Ij$dn-ae4d1MeV=?P_rMj)B0E2{rSYB1 +z!t&Ol6jWqdGz-*OS++&*Y}O#=`R?IiYtN1y!eyvP_7~Zf&jQskbyhz6iZhql0+TEkyA;x6 +zk3Ht=%4X&Jp4)#9LO;LT-XNAITYy}HID5q$VIBH7^Ls2B#mTi1zibQir}gLVd3pRl +zetc;3_#}gchhW42;UsW{SS-X|F#xU*$btcbb@rAEH?3K_@ePrh*hRnroS|>n1)H&a +zUF`_FHab3It^0qHAm>Lk$&S4QHF0!FVC& +z3$b8CI@to45dHOvmd4k2^>mHLVljg=Sqj8hKE+^9n4Wx;_$4ghT?+_ii+8V`DET}r +zU^m*fYtfD!J4{8X|9eb52%u$}{c0?ggDYHjMYsk{vrJ`t9mp9k+`DJ=zVEy|c!2A# +z5V%4bEF^A=@3wmo1_+$JVgoD~G5D^y;)YAQI#&My2zFVJ`~p!FjC_2Zc*zVwX$ +z>A$>e#TD0f#@<-t_bn?*Aw{Mou|N=R)@$@ZwuTKNkTGKk?s5coBQRfj0m9^j=NN^7 +zzOZ*_^hZe}d3|$pb7B%~;n&CRvzO#ziIWHml*j@CY$=hU#c9fG0lNXe`|hv)6-JAH +zRNm5*|Lnw6=`hB*s4X#Anncu~@?R8(OMqxXxdZXsbhfX0i>xRe4j1jT*=-G_Sfj^6&Ds^p +zIi%M@`4JFN>8T&UN2#@GO6j&#&g+M#+mV!WfF0vVK^Bq8SUYb}xq8uRx +zvbQSaP-)>Lylreuy+4;@HzLcN-A8vQdy$Q>fU7JZ8gf@%4pEq5THtek{k0ER%=$(# +z&*9d*NpQ5yh_mJ9D706`*)nLbkQR$bm1Y6S9Lj3DcMheWyyyA;Ctn$ir@>$;uvY-C +zkPZuI?OcC_y9xnpu`Ph#9AvrdlIyN%?_B*BMV8y`ZKYg(w7J)_;<$&@F#GCAmm}tS +zZES>H7xSJg)j}%&WTuw==S15=4q5WPUC;yivzB8^&d2Q;{OO4`Om%>1wF)j*ABF3c +zSJU_7t?Y?3k3wJaDu6dQJTTCE-;+=N{AZa=MyIydPH1nryAj+qCAe#HcOzoDfbrs^ +zzWjcdpI>165e*#!25tC*66*pbm-nrr}vg|J# +zjr|BiSOTk+s3w4*RQHSe{FquYfDJ(0SiDxF`Dm1aPfXJ +zCcKtg2t0sEFsAM2E=GO62G&-fog+L7jG$X +zq-QPg|NiyYZ!jh60W{_n-9d>V1alYkR>&=gmJuuO*=r^WKBonYgl6^+XY@nIlKDfw +z9!%~1_dP?0;Ua`SI7M$g=XSvaFPrVn79$mICN!eY*81 +zYmoU^WZD+*eEmtXiTwm_3r?h)Vx#P)*q9Spxi*h44=-m&wbBDF9|wDCxkp2b&-Y?} +zsDCZsBxkyKUur+df*u|RJ(6l*_a~a?Yr3NCXPWxRiGjZV`qi%<`U%{Nre;4*$9N&& +zg|>6X3&Ke+udfNdbyNGs&CNAyyP|>arm(U)EK4m#E40YCY!*mKp-GpcMlQOWE>7^j +zveoaT6HDx$KJ%Fm|KUmN#1CPC3bBAQZ{i9uhNwp6S>W@Z|Heg@sXvTJ#gR&@T^K@a +zU6a5{mpR7j&EkZ*tTem1us#M@45XlfNaUE@WKt@t8>zf0CDWQ2AITZRy(w*A-$eGr +z6TK6I6RM$Vxf};qCUsb*+=Ofm76Myn=G3n1bb!TPcj=|qT+qF0{d;63u)sWrJ&WP@{zZ(ItR|Y24Y<1NQ0ED1-QA +z$x?ihBxB;KI)y@J8rx&P$9)m*a@6N*WXCH}Y*&*0_A{UP(8oP?SwwM#1g_#ymvVZW2tPv3`phxz{WXX-olr$dkm=j0m;`_X!wkRL;S$M{khM`0b%E>J|V +zENrJd4AW$TgCk7UbnIH#$C^A2KaCnI|9Hfge$nK0Lk8$ElZYC0UO~xtRdEJ+(XdlxDyFj=H-{|MmdbpTPZKw5<)n#-lN;tf*eeyS7Hx0~~+L89< +z|7njxqFybPQPlyd&==BBA@&JOkTEP>g>oV>QfPq@9H%bHIjNcYu!CUB8*2fCM!gM$ +zj_7{&<&hOE?VyPDQZJ^O&+Xm2f7ic0_uP}aXUl6&;03QJ0%7Pwz>6Q?i5w35f{G%C +zLLpxefQnpGBZmV4*^iwNV_FW;5-$m2$b8FWoR8k?*oKwJ3foMUF~dD+DSS-;@wMC9n$czOO;&>UHt4MQH(5Zu +zw2?REfhC;+OM2teiS0^Y1+C)+m^^N>H^blfbUfcSxj$v|>Tk-7e$zg*mVOuZr(bqC +zcsFA*AHJR+_Nqf^VPEP;;2@+CXuKR(8ki2J$Vy4Lcz^ooPk;E!l~Ny34`Bha06n`R +z2@6!51@5`$o|=*2>=StJol|j@tAGj-5OBP2faO)hMx2q*@yIDG_g_9Ub700MPyM9M +zAYm&!;j4}>08>nWOdKphhn52;x~AzIL{U{Eiw}Sn`sjIpE(EOPayf(%0=QBTx}5@9 +z76P!4;ks9@Z98w<74M2hYp+CK%{6U*Cj?7B)YQj9zL{NoPhDvgs}HDdLInkmk+aV +zj&`~((pNT{diuA||N2||_wVYP>zV-+nc4)*L_+&t2q!%abRl6~Kfxvht`O*gr2@bu +z6bL8)V(7O*z)KM82zNn-vY%KobPQo6lo#F&ln~91gBVjM_23s>3UnGQ^0r_w6z%L< +zMsBkntVPuo+4RZmb)WjwhaafAnu`iotOZ2NQ?Zw}x+`|^#n;`7iGypa+Y0Wi{po-f +zFiyq;Ec0ETnd^0D>Cap$V%`8~;TQ|pD_lPXbtd4%(6A(M1xytUz={UHeJ!2IXqjA2 +zO<wo8+8#bQ%u|Oc$jh$Qrw6q|^^Pj*)A>whMg$(~(F2;7}oby&(2@q;ysB&Ecp9a`c +z4!st-R%uIS*Mm9ang@XjYn=5*(|f@JBa#Go +z4fv*-DgpM`4iz_WIN?~0?|3m0@K0<|3&0A|KY7ACi^w6IE5Su&h>OYD9uD51CCbXj +zjHJS}-Kr_C&ZKkEXe>hZD$&`+X%=Y#dN6Oh;f7lt_{A@NQn~cQMH)vO=1mI-u*I9# +zO_cgH7Wn+#U;hkx4S#Z)UBsp`S%5%+xfm^={vHchiSJ03=1IOffh^Q<#dM$rpC1b{ +zuhjXa&aQ!uu&#rxLSPCyzFH=m)pGf~noOm%Y&xxFl1VL1>#@XoJ(tNC8Gtij{(#h? +znqavQ&)Wh6h660rVYC4j-0O2*%`2|B;j#-axc1ISBzit}a#efZib2l@0kqV~yh}f4 +z9lWyPCy6FDYy=!D?n(%_ZmM9g<);7xCXDiEmJ>1m>`-|K^QNPa&%baGY$2x1 +z`e24NdRV;Lwo$uZWo`J7w$h~IhrOxHOUV}shI@L}Zo0m{p>^Wu(S3*KDiF2#^dY7O +zy>|%IC*Xx#bLss9*Hn5}a8L#B3GzKPvjs55(C|JXKn8B8{AGd(0H}o#Bm;nkGR2ZU +z#4{uZBbX?z_MCI#lx>eB3i_RRwmRPZbFq=<7SdK9`&I +z@ETg@rqm4};ZK^6vzV_kfEEfX`-4O)z&7Waot1$+z!vB-RbZkU`iJq>vbu9ni19A4 +zhbl3tXo((n5NshEk(=Kp04|k~+7%Uozd80&KFV}zwOy2eXoTwP8!y?o@tm{K-tQk7 +z8HmqSJi6ATwuU7tA$Q;&P@ +z($~M?=6iqglb=*ZM`4bNiq(~G0RgsD{xz^Xbk3wWP>c|4AAT#@1SC7V78E4eyAg>17IO{A!yv@H2^7U +z5@1V$m@HtgBmutQx1LX>^fVYO85}d6#e!K%3u3+;U?GFpAj_GI6Asr0Uh|sQy=_C! +zIe)4s{;o6aUykjUMdIu|jRT$zB|Fn@JF_vkCO8v?$j*B?fPl>v3bqXD0rptB-mYp{ +zmJMLFR4SN7%$A1{?%2sRZYb>PXxu?K(aF*+Jg;Uj>&}5N_r81$OF1NJz3@`ZeS{(_ +zt(~1KZ(Ox}U36fu@8x_x3$o*)9a4;C*5uqMeDTNL)jVz!v&| +z@xs|ITwe_DHkv>n)(kOQ`1{!wnZ<8{sJsNakX>Xef6y{zGo4je6W~Iilt`|&zzQ{Q +zt$5_ohwgWEDMjIg1AS5GOalQS?d%(B_s +zDV3Hj^>M$M_~|JdT)KjLd!s@;0c7E>LI7FdBE*?2q{o8ULUI*S0k9O9EYM;}r&20u +zv!tQNLJXG-_J{E8lorcO7R!9ygr=Km+qTQky7G$a{yG||yBOX-=@A2}+YK{0JEZ{KZ +z=xsKua^^}VqhcYcsmKQ=m277)ncKl&zHqwn<*NN25-9Y&F@>eV(t4SpB%H- +zyJ@)6s3vmR*C6pFoBM!;j&gO1MuMbnD<3rXES0J +zOpQm=&N5r*JXyHQoeyxLl9CLEn6vPlkz3Irt%ldpZS_N-pql39wyRgK-q1WW)cax< +ztjYP5(FR=zyeEbW(v-Ffep_I+aBUZIDI%5&^ucHyMav^GcP^$&^h(lov4Iwxc*=K) +zKo<(mY==ko3e!bqYM*MDNyGH5i$rP!y=6W(Q#tps*frN)ck6?XJo4bYz{YYGRh(N` +zU^WW~uw^!@h;^Q_0NjUe2hj34PZhdK3Oha?XJcch>fK6~`jBEJo^ZPvW(8RwdJB++ +zi{1iYAr~NxKIi~*HcJM2EL`lCq6?AuEkz#!i-lZ;NbDAoAGlvV`P8Em%w2_SfQ358 +z3rXjlbIGPFF2CusH8orS*L9sniZ=AF#zFQPM1Bc+%FBQLSK$E&lEMo`FCvBu&>BK*h}FqK7jiZ7BIp7c;S-o78M9bmeK;JdG_vJHhfB;*n_R?2I#sBv1Z>$8#^~b1<8#%z0VdO>D +zBAHCHp`nqJjz&M$R4nxYzmm;PQ}||6h3Ksvwwdd(pxZj#RcN8rCvBEnZhX^wR;^n10r=zBF7)_f?_YGe~oU0Qeo@ZlVTZ!qv<1I`tg3T6ct5v}~BL-2W +zr3{!YJBp--|V*L1JyX*@B| +zx9dz=E;G+%11~n)g)~|44zUGwxr-5ZDI$;szzS!&(08z2^5jYcV1}aN5%_|c0xsf? +zfiM?{C(y-9?nQ|2H1i@Sa|<+EJB<$v5&EKwR^fiqh`G%jbh +zk=Vnf7WlyrejpEx#D9e1^|-W%Ra-35XE||V=%o6iAB%2!{(luK_1lv+xaI;h^oX%~V~R +z$+DQLZ``!+ur!ATNvPfXd2`#|3g_Df*PAWAK +z3y;L9FRDp!u!UR&i3#PV6byyeu3NY1N~oyp85-&zTWHy4f-X3oM;(IZ7>};U*)9N9 +z@UG&nMkL@4M8+gN7XUOASDL%i&IDZuc<~bGB3ar9*r@%XNbP1tQ3S(fp*K=#_uqQm +zwKpAk_>qTRDD7#**@Oj_W&r`VEX{u6=rUU1oUNDN38#y9maz!p)U#Lsoix^ee8Bb* +zpV|YiLqGLfshv|RT=s=P7JLdbbO?V5z=dnFAhr-^vP^+209(Lh;UEjNShP5PQ&gc$ +zHfu~WS-86pI<4d%PaW7Lxe84;(>2>~xo*>@^FHnKDNWPYm-9OfK{g^J>>KNc*&FMI +z*$RX#_PJ|ZQWW!0M4kWOtd^o=&z8Zh;oJ%YTV6r*mvW2a+EqI|eam0$eIRg(=)Mz_`mJ6D$UIvr*KWSVL|}KA#-zXkUJ9Yinob(4m+2Ev8&H +z=t9fMG!?~&L|eFf5rv4xyAkg*E~bk&B3_S3Kw=1tAq}%xK^Gt11g0s$b(XSrtr#r; +zm+@Ri9gfu2ZN~e$3f^A!rS{-bV%J}H-L3!i@WT&|da(4O$W>|q_q;W#^a6-#FU|sY +z-~IIqq09Dd94%%d7H7hu97P>AVzfXf_N4q}N&h9H4*lw+l`i>#E+fNC9A}@v|GWUQ +zpa+RCm^$J%lRJ=xSv}HZ;ULQdg>NR11xx6#==n^h0J2a-BJy*`%%BajEX7r5x_P3} +z`rxg%zV$;bEgf$|pH-Q@tz6$*;O24_1|jcg7-CmoNl{9wsh9fi<85pR8WzP$ZLlxt +zV^mstHe1UMmsuRwwrLg&kn0g0tI|@+klC*?#S5)H1fa1S%r(+EsfOeSC`SUiSHZog +zCy?cQLIRw0%M~r29E;VR-?MJ>s)2zM&t +z>HGpBufK5!<7gP^zz`~!rh9dU&HC33%w`l-9`WejcoCD +zv?CZ<@R24xbJ)W*myF5aL`Y=uV|t~!UCsSK!7c$+C;2zxdqNW`|^+BUHvYX7qjY$m&s&L +z5ybT|{pEm_ydTDJ%?yMseoLJ{5(ngBfS^S~>z2bTT=*713xsX86oqdFxMI5t!Bt2H +z_%a=2DfqO*U5JA>n88EGl+O-2aRXd-*$tPUbN2av1-f`~NA`0RHh_NedbkK(i9ywy +z>PFa&h$=+C>nbpU%N!;+WpxT}1pheJ!Bi*^6*Cc2s1jW@NE{dQ<;67Jg7PND0!4nR +zq!b6(@pSex^78Y=u +z1q9gQwksmab6N}V=tIoB4?7i)zkk{ih>f#Z04N1J4xJY2oY@JoCx=7k#D8LqYp4&r +z!${O-l!<)N@gb1Kz)~ZS1#UxX8X~s@t|Tagb26!=2y`Kk1@1!Am@FrOEL3MFK^DsI +z=9_PS>x!<`e~dZ7lJ(q4^l~jl;{bc*762=6f)2}tHAyaZ8>zr>uVm+irhgl6XUDbR +zLJwQ;{>=~@J|DKPq(qFCVl#pkYOf{?m@5r1h{MiL78z_IJCi$DHMtYbb#D=9Kw`@T +zL|+<70Gys+YXIU=R5qx9F#>2y7}ZFwt8Kh^#fmkdqeu5WPw%Crrc*!{04LnlW)9E= +z9RVJ_h$b?qQ=s94H3dC1fGp%%gi=YggzGLbT_kyuIkVKVI&pkHGjX`Cu`P(At#Beg +zkw;N15YU;`^T?wQeXl6Fi%f+D9JGJ{TO2f|$g21jxaykM+>00B=Hj18oMFBeppMu~ +zofgbh4F_4`JJipbZ$8D`kNSK-d@PA(;Yj?JA`Ib!gecC?V=1@;sR;sBQYjTew<@^{ +zO+^<(1GFhn1)R`q4IF(|tnE$q0-u}^shUV8IPwK}PC4~U2tn}x2 +z7}qN?Gy7UFS6+*7%@;uUat(9|8Zc0B5C5PjCRlK$k3n>_SW#YP7N!LtK&62#`yh_{ +z+gxmBRm=KY!MyrK6$WZefLZZW3BVS*aC`F+c0SsSU=_L(&UNDwBaoPB1mY3+a(!%^ +zorUN|6lR=+cIj=A#x-*8t#NAYaXVB106+jqL_t(Z!r{oqwcQ)m^c_F+Yq+=Sr|z-v +zHT0gN&lJ!Yw6^D3Jx$U3=Y4FT8u;-5w&FtsUY;jYn0Z8zLWe43-k7h=dA!>1S5>zEp30}vi|ngIg=vctdp)lWa$+k0@>X`4?9>GEt5Hd(@NdZkDK +zS@uEq#1{f8;}3=8nwlCV5C|xda99cY{Yp?#{DC0;27_`yk`%w+@58ZxT_o}<;>itk +z*p;i+rC6x`Gw47RPi@-ii&Ay@Ndu8+?Z%IMhXrc0am%qd@G&aNY2cMnfTE{DU9-VBQ5q6h)|V3yA)AmEQox +ztUiGz2M!D%B!blBGo@B|FW31PKoiCQp0GxY{+iH>;7j_Ao3RP&+R$JYUl5^~6|bVa +zNvDN`aqXlq^$FQb{@ngujwOLC@c*_9`T#5eyh4D9k;jLFDVXY`Wf}krq6~32BK$Ve +z09n**)+8oNDM1#p(Z-GEti0g-EAGa`-h!t6WdJMfV5pEgkj+@>0MJt2E^0ZhdhyOV +zVJPhHM!MK|i6iJ#BG~e&fo`r}G1t{1DF+I_4nYW_jTv|+5M&BYKS?}T1_qrblY9o= +zBiM=iVL+!8v1ug>)8ZHzSxmvZgl5NSU?k&RGOq#Bdm0AVxp0N4lvEC|g=}{X!f3x9 +zu81NzXMr35-aY^?#{j(W5123`i)f4B&Xam!*E4s%@WQY6I#;@rbFx7fymvX+0zidv +zmP;TY0dkT3;V`jW3ZM&EE)lR?z<}`++a(0%i{kTfmJ5L{czAslfETm}5+3c7PgKHR +zjrH}3Uz3K*C{HB0kA~E +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 +z?3_8kt)CfaA{$Wrs~4wS39PX>s?>F|dt)aC0 +z3bx1+Jru9`&xeztR~C7A$qxHm=lDkhQsuB)zcjpp^&%3D8`BCzUV9xtmvzAfkImg! +z9Z@D&00Rmur5Sxg0ALP{XZAmJd~Dx$UhF?K9|2w)a3Mny=t9{A5E~boEmJHPXu0@p +zEtd$umOwD*4*_ri*rE`}rBorJqmfAZ^|#&ja_>;Q=kW32uTYsq5*82^aEAqe8<2)1 +zi3AfsLs14M!*Kf$*~uJ(BnZ|OqC6EsaO-2Sm@@W(4}73#nsSQ*TcB%FGcl1Tf!8LC +zfuLzJ37P;L!MXxS0)X($P879ME`3>U7~QV_s3=gVekstG9XJ$FU-#a)f- +zNN1%b66}cuh}GiO6oCuT-OCO`=m&RUg`{r` +z*Z$qnyyAMnj*qp)-?q$etgjHWvmF2xe+c%Lo73iCn%!1A$~yc)K-bOJX$fW1CUV-5 +zfpmV~zOmH49Y@CYfA{&`-aG~mv*l@nE+?^ErfIpvupxpF(d1eLhD#tqfD70zlz50} +zuv|*vR&@ThZ3i~2TQ~9So@1ZP=GDt)tBY7CEFdi4DGPw9Pm!Bm6%Iz}3v3!%M{ZDX +zfszb-{MM*nm&c+l%IF<;+>tp`E$20$`26Sp{+h9VhLS>Gg($_7Z#`> +z3rvqdq_EUK%Vxf>nAMx!e&9> +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 +z*BJMF8CQVK^6}Eh30SG)y400OyVHRJ42d +z?(TEXIp@UUzU00=2Twd|JMOuS=^>ZG2rvTefB=&%?eG@44~)PpAdt_Oy>h62 +z^%4>-*b?(xkSHKqoX`+14B&=DizHd{u-yU!bUtjiNTLOkE1His712WN87WxahI6mH +zz%>%*_O0%h#eP?!6n0;RpY^Kl4}k2xA4%o&m(g_EziJkfT^b +zp1QA3^H#Q6+v{oX`LTTBHOhfKUmRMp1Pgqlo@d%250M8$P(h+N-O#b)oEBSk#`#xY +zamO7$y<@uA&Bk-#h6~LLAd40V%TmexGtymO*8`A7M6vjgn4v=uLzISdA+AQz1aow#7n` +zBq&OTC~j^<<7lvfE_DELVsh2!IkpW^Vb3YT%TOVox1mC0=dxKVoy|IhOvcSa(gj*Y +z9uX~g)Tap*O|HTTRwLTfs4^nhQCoY)nXhbAd979s6D{?=u>hWKN?*UgJbwSH`!jzD +z1*tZcFi?gcFBwPbMW&hZ?I;;fHdA{V-InvCg_UpW-}@xC_ghZQtI=3YrMyla=aw%& +ztE3 +zJyR$`qD7^N4JJ5FlWrv6DG);`4I+TM%3nok?BO-|ws=sPNHPhxa +z{P`=cc=px0Zme#2!CYY5AfPJ#Hr-Eu=4p`=*30{HuQC-s**2YYov2IyMPTHkT0aN4DBe}g_RgDBwR4psi&%Od9Z1u?c2X! +z66Y`s=Ov<%pN-4J35)=3xFpR&6D5@1l=fLB>h+SvtNwJNbWURg2mw_%cNyOB*I&|;TYG(f +z@vmW{r|ms#{h<(fq*dSkUR%o?ceUNE+Wvamz0`2ede`9oHH)LMqPF +zT@)QUbSM>ed9W|>yYQTki~u9R2uyceVdNMAMxc!msE{p1O|kaPq?^@53r%QfCy92H +zawN_R@fkVs$z*Jr2+@RyCPp+tLY*x`v|M!2m1i4bW^QdY;eySa0D8zoxVWWK$%RyllZQ$XZSdr?S=)w= +zGWLByw-Da~!UfKWAf+-b!sY0(V`X<(0B6ZS&mL7%TYCI!=6B3(V+2|a0VZ2o?TvAJ +z8G%_w0Gm6oGiSj|jkmo*d`zpxYNCZyhcsPfRGVG1h2S1ENU`AV?(VL|DNdody9c-8 +zQe0cC6fF(~N^y60cP-rX{nq`Lm4DAUb4K>;*+cPdE7{McwOAUL?1X)?-v-`ymK(bW +z1zRP~HZ(js5pNTVPIcP8`<+Om^=#zvUIk-KSp+axPeV;7W?jUPeDO&wcB)pSuQA6r +zc}m_^LVIO>=xVR{t7$n^qL3uRAGuXG5;rxx&pA*~X@!|AO(Ss%^e4G>|K3F{s)XOY&|cvoeoyTLN9QY0+uq^QvZ +zOByLcN)!gRTUy{}=FICx%M=SYA4BVt1k +z9O!$j5CV2f%;*~F0z^R8g@by9DPC%$D#sROj}UJ6t^Nv|)-&mw +zHQjE=@(?uEd{6Aw9!yzu!k+(Ea9zj1%w!@o+4$?|PkSyaLXFc|HhxpmfbX+yh@TB7 +zgejW9`&~+vlysx|Ym#l29!#0~Bf`G%lmCRGV=VzEf;>MHaKS8LaeEt)%R26Cb%xFcB>}J9lI3BxBE1aH)zEIZ_9@W +zN4UE4GiaN1O9Ua>URVM5ofC|tUxBPMMqne`)U1=<_>>Atk~M@cqZ1;%#w(u2#)CY( +z!QyN^{_dpa)Tu-?hTJkP;IgJx%g2oQOL`k~s2%dk2GbZWJ?y&96NVg8n7!wvHe4~D +z_R+;*LA515L2XUnRj8FRbCR@Z;lW|SFG9F|_(nS^xxj4PRy58|WuuHl7g*K-EWkRP +z-nP43>oI19q?fjw@E1j_9ca;PuWi>Dlw5nFh>i6JqQNF6xX1q#Z=U75A;$}v_EKk_ +zI`#A^T}dPYi+?KMbKtjmM32py9*lOb3|H?RpgWJEhPpu+%RYp8UWE-oOTG-{y$^lJ +zlm$L24;PgQiw>Tj9SZ#~A)SxfkB?+f*XWK2U|yUeI?wVOMxKd>S#*Fkc5OLBVk8PU +zK{THvNvxW +zgSNFMsrkac%of>^@HdO^B4c(*=9|Hf%c=5wUk6jB+t58CO--w~@Yu*3bZUL!6bA`) +zm$+@@6d4U=tq{vtR67vDVfo3YPW1{(L!8TnnnGnmm+|rwv2{!6T}5MWu}88Sf@5D~|Ob1muciqC*5r7_O9~TX^D4@^+gSri)8 +z+mQ&+J>$HHj@Y6M;K%v^H%mJx^?&N@o!k#*_lho;aXaVIc~LvRB&=V~**^IzXUbxj +zc`kj_y^v@T&d1K^|GstRulNF_YDtDZD0V++jOO%P +za2<{lAE8vIRRPH1z9!|e%uK>%`-(eOH~{s?gf&T0a99K&!Q+AZvv3Azd}z4?_$D8R8WtDYwBr|6z-L=&>JCb60S#|6i*=2#}E5U +zCWV!EOlQGi(mgMsoW_WKcT%!}W)XjMBg@=D@|O2JXD6Kl5ZCQM)onTAK=o&r3&0W{ +zyg$j=FNQi*dKQ8C{v;~%o7&STyXgLVb&p7HXdGR0qfCWDDbVCR{Z#~PP_-)54CLlf +zF>XG4*V3siC&c>Ag7Jt&eM=^8Y0SCV(o +zr~2rm8myT)t~)mSJ8We0&~U4|*qLin6Q$dXV1;DVr2HE*fnCG*5K>R*8PN4j-vtbQ +zDR1(eZA-&)cDw+{4lRQ#zOfd`J-S6Od$yW<;gf5TOl$I26`PbD?W8pgPxt +zZ_g}r_I*!Y%TtUGq;{8DwpwOQWw8j^`Y2lv21MQmkP%dP +z{P20vc%XR&5FGf!U5SR}59g%DkFOdZ5SYp)ncWeO(PAk4w7GjVx&s=9DXt40s`9Re +zep1+0MH7L|%*K13*OM2pUVnC77+j3dp=CsPoQc8j`6S&HwTwqYmajXuD3jREb^y@R +z)y=v6Y17j?d!VV5!g9mN7>?!$10BZ%Wd`3}$w#@zN_iT&N;f8jD^-@zU$)?Q7^nDB +zf)R^{`pIITNij#lC;O*QhAkkCfOr3LMJ{Z!hElF|q5Ev?OkhX@ak7_XZ;l1dh>tli +zLl~=v0F9`hC25}$$U>kU<;ouOv1cg=`#wqfnB|WKwndWM>LGA3ymM@S( +zr_jwTF+!VWEKYgk*+*oyQHD%N-PKft;Mw%$R7%t2=zIb;G6!OCi;zqca-2@13t{eA +z7o%4BJwGHzAs-5o`>MY4eYSfjxyb%!_miwB?p_a^)mAu89Zc2xT?&-P-GI+h)wGX< +zr<&8zk~kcZlsfQ?@X1BGLm5fV60$VZW)&xXa-Rc01C8x-gDcgR<}Yd(fRRFj`>XuE +zEvwb+79>yOz%S$1$kG +z1gq@bQ>vfXLA$fS`ufaPIz0y^E!}UgN3DP3x^pR^Z!}k86rTeynh5hP>~r^MUQH=} +zk<|>vClo}NLfW0r>;l8R@gE|`u6=5=Z9_aYMkNp3J-Dy`)_BiXS$`sLc058x7Z-t0 +z>$ApM$uxUvc32(Jc#PqS5lwXkP@G#*SB6do6N11r?4t5p;RKxSp`|g@?+@R7Rw__8 +z35`Z30%5s6mUHO`Z~sogXWCw5|yADe{G@ +z_CN;BsfaNvT=NXr@#!{3Y8yx}d)gpdo5v^cot +zm@#4Zasv<1&2gk^(_h7yB)>pW^#e3gVM;=?TTI`@6&=|PcjO0A0y#;6Q(kmkHR?&p +zPx&Gw#L}4526a^0ym7I`2$clhWTDm??~7=t4Qx55F?-mHMwSZ6^VX0wG1`DTsMyRl +z(gtH=+dn%y%ddVr1$j@bzJphV$zcZS!}dtZ#bLOshBK3T;J8aD?TQ#l?bdxY2zNVz +ziAT}zmFJWtOGd0r)%c*BK!}eMd8J0kSfbeSo6-;MvzlU6usBMh`xgkP;aXCbeOCZN +zkah*El)T^Zt@2m3mzDmlUf|c*eo7y69WS+{XWBLM*N;EOsy-gYbZEHWBMGzkfzuQp +z3zWLG_CfKaadBl82p&&+7k6XujKLP<=w(JxRP2PgrhZe99kHEOGH8nwyJ0QH^W +zg~MnY>N^ZOS{Ji_hb3EJt$twkuH_gS4`JZzcv#%mf5_?y;uc8q64-J;hX9=f5)$*? +zfpv1h=v#Z&K1eAnpU4im%|q&q813CPcqCj{vPzB&8fZwy;v=gRD8}LlHhOuf#^QG( +zG^(?Dk!M4?>u^sVC$#38(Rf{;nic~+>w1 +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 +z-Aemy52+_Z>kmfE%e!`$-Zvy +z809R_cNyfn9Qru+6VI3$18w#Tkvh*46uZZyZryZguvsnhX|(AYVrAAN1T`x4wb5vq +zTeahMWpSfJ4LrfYVU4RWPH+x{USlSBdi}_M_yAQ^80RZ?H_V0v-N8+2{-_Zs!vqWV +z8e?atI;!qo)x#7MJQ8bI0{>_dbQETpE&{Cbl>|C0%l4E)EDIfl#<~9W2U9f(a9$7! +zQ~w1g=pU1LxvJemjA?gAk*y85PfHb|tikgI9u#^*7Qj={X-SBb8>PDI-{SN3zm-`2 +zPp`)9In`F*=CenmrXOR)-j?rQu4>uda^n9+gMOG`E!7U76}UEvtHm;z+h+7iR1i5L +zTuQ?K@noV^bjWvBWLs@I>Co~m7~s;Y#!WLr)*HyBNA$1ToE!yCJZ%N2P&-y>is?cM-jD@To&eM?$hv4>pRC$sFvNsHOUaWjXFwjI +zbx&dX`}|0;EZ^nGC@&yG81faavH@0;=@=|CiPR7wbq#i=|G0X8buMz_bWi&3H;)sO +zVYSu!kt?>hm%J~pQ%bD;}bf4tL2@ +z0J^h278+X(@L)$F%#qq7+s=GrUNl21dHUl3$njO81=HA{z@G-gJm_sR$X1faSM%f&J5(YtV_VsYR^uX!;cw)30S?TyYr=vJ9Im{pK!iH +zE}-ogI>(x%4tz}v1IxxAdHvB6wwE)xr>Cz6#>-+Z*CIlmjoy0MosXv8w)dT1K8Zcu +zulp|!1bOsq%_woyT+!;{cJa9O_#pn`jbT&9R8W&^FZ~9R@7$1=M#tvNdzbJ|sG%MA +zS?!t(Y$D$JV(&K{onuOYxSHC|90 +zrg`wEJcvZ4%XIr4$Uh0OwcmC+<#nuwEw&6)ark`?nSiJ +zAW)TEoka=QIh0QbAbg|ePjaQ?o3=c*${_{$6@>11B<-NxS$th>Z+8D|iPqr-es8Xv`cb}#sBJ#njbOcwa +zsZoq7zqQH#+(VU#w7A>(3}x$D)_#NCY(iYNHj^=T}TtD(D0d +z4vHN0sfHmcnALHx{^UQRlWjob_>#hVVQ>x_W3h%}CbCdaPN_I)#}(SalB7sGI=}mQ +ziqJ5+1?8b(>)sE;VH=4&Qy2;wRMBYX2nN0k1)NGZx%cd$R>EV~_ogs8-V7QYDq`nH +zzTQ_-nfjl;3EwQ=9UC9tLa1X*ZsPqq|AulQ23;rb=iOHEh+I~ilP8u!49|6b6Xe9O +zb$m@525~5Mo+PEPQJ60M*&7+UKshAN?~I~8om40^Xp1QE5AdcXHfp($@4tRm0TckJ +zLh5=>F-p@mm5+GvCXm73C; +zEQLr#ssqS>^_m=fE(&L>=giY98%rjMIc=5tp`h3fi*5awy~OE*pXZC&gO{J$%2PJE +z=!=#vk$orM%Xd;aHHyF&m5gt%V}`7Tf3F6j53EM#6+caCV-qTMCM{tv`Yd9m6`$hg +zuzjAZG9OGB#e!;oZDF?Rv~v`Drn;kzM%BU6)Uh{lAIuhtnbiNg5p^?s->v4f2Dw*24P4yss0<9w+mY +z!CZFJ2(AhF&odqEo|J(wcSgLOSD{vKUJ77e2Bo$?*bi>%DvNtcSqo)HLoKY8#L4x> +zDS?#FY@V@6Y!eJ?9w+_vlz$NL4zM?EmVBVMGobf*n`E3HPO`hxTB2$oSP)wPe`s;6 +zG%pJM{@+*q0z>g$ed&j6=)5pXGi4vPZ{zFtk +zNK*(5pxx(-_*L~iXgpmA;!v+L-HeK$(ByuUQ~apz<#nIz0N!jLOz`p5%Rm!fS$)P5 +z!^pfKuGR`7Tyc^uK!qhkuIk><`WMopgR8RCxTuo-zHOR^#ckHP| +zfB${s@S|^A4LeV1^Y`S#xV6+gmKe2j#SzRe7wGlV;No@))2}W3k;jXeo`E~6EI5-o +z-t_%tVdXsuB%QIOLTv2l7U#F~rsV&M3xr|)KVqK<1C{3khTymsIhVy`S-)W0V#8-T +z*d>DoMlIp@U_*wEFhF_OFIO2vK$a8-%H&1W&-N(wbYa2Nvmf9?V)8^V_I>L=3#@Gm +zEQecvMY|rok^hCK7ozntU_K-pP8(Wv}hwl$*3+U0IY8{7L_|>L$pDucD1ESH8wv)f(L6>J-U;FrhC$MxT +zUt6eH<87>vzIS5&D6Y^J03U)hrR)#%sGPCzV*334=qtxAH5s_R!*3eFBS~Rd2(`1- +zVY&J>U!AH|WgYm}U^p>p<^-B2~abGKe +z750zHHH{ahV>j6ei)|uC?w;>{r{()@>3bf(eG>V(`>aML%G)vZP^l^&JalfjF$@7e +zJ+DR#x4gE+rq^~k*quk}tX|%R8Sh1A)?j)92=dkjOO9gDJ_rz@pmElbwB@Y9j?4L( +z2hZn)3{s7=yrAZLa{I&m!08OQVPW1hM5cP`oX@I~MuOpreq#IwFN}#kI|O+@dx{x1 +zyoO)w|3gFLV4$%Y?F|#!hcwfKf1zkO^BM0r6Z!IXwf{Z>;_$-^q^8(J7+IA=tEw{F +zt+8-utjPQW1Hk5i&00vZ$8$m89;pFTLig+wK1{5`aDtcE*dcw}a2{UsqINo6<}zCF +zdfU9|bQ1P-X7dBu_kl#Cj0ICzTKHBjXK*W0iqQ4G8BGMNF7@b;JmZdJxXWd*L9#|t +zCx@~th`X^cqda9O%AU6V*hXHz{voOg=M*DINHgsq1SvGnj%}}X?MvjLKa`^ZD;qpa@QMNb>h2O`GYwmG +zR>SM^s`Ixtv-hMT98s27i}noFK%Ei;_Q?{M05FCs`E}RD?2dsvU6Ny8wz%)z)Ew$i +z8V`lu)9u&~KP@(KIO@E96ICU=?x!w|KPpFCO47~Sw}%qvqHLpzZGpzrVH>S~diz+;b124%tVegG`7gV9v +ze?916Yj^AecER@3<<2}$`@&`K +zd>D>P4Mr?5@R-1P2hgYR +zNBRyUJp>+~#IeJ!x_I~goC4AKn6l*_T!?H8!RXRMfVF=1dhRJH|>VRRGseZE#`-$S3<&bR;BIe&C_3qsGZq5rRc-cOteR*G*eSYei_P|+=L@B?59LC71R +zjdoa_DvgGKFXYcS)!jUiU&{3r<=9g#bNp04w`E&P5+;0g>-Ko;X?}M^PvqsGIOt&| +zoh31D2{uzxA~y@0FsyrNmW06Ac`~i`>`2jAV2{9*6W~Ev@N~Cozws_vlI13^I38&{ +zbzOYPo#F?$!2%Hll<9MxS%)t|BQco0!LUYR&#P>Ic7^bdIL8Q}{yY4yR3r?Uro1@u +z>byq85gGr&Y9X{n=f^^!i-+Its~L}stDNFlSn+{?n8Fu7%av+q6=5mjC!Vtz{E;k_ +z4`u57Xf@up3)M+~T%Q8Bo*@ZPQL!V2=v4Efcka-z1@%pTaXBr|vL%AUG@Xlw>2w$b +zgS~`A#Mk*yZ#q(umTW1gS|4b^^b7vMP@x@PjjXnhPD^pzNW}L6Z_Olc7SJ4i0Zn7N +zllK!L6?+hJo#n`j`8W@hITZ#I*JYkkx*m?$g?ZVVZs#3FjQY%6R3uBy-l|P8T$DtN +zU6!?5S&oH9ws2bv^VJ{7Dpn_Rb&Fex%Tu9Xq)Y;aX-73+T=Y8C8UK0bvv2G@a1O1x +z9(em#9T#-YrkE+5?-oJd)>>X)GHA3aZ6=)T2&y)~Lh!J4w4DSyK`<#YOR1rGoL4Si +zlUCD_#~hz9B_kjwO~~>;CamED=vYSVy~5?Ita3l3hm3k=@4h?=a<0RL79c)oS^Ph=0F_MikC456|r +z)X8($bH*^CfQ*tMw+oJzT024KjFq=w^^8QeG%doACm>|7omFW6rQEpb>JuqktWbFMoi-trXX39tPQ3!-`=2MIveBa)eWdAt2;Cd(| +zM*?kSOf)B=@5&a6elB-Q@s()2=;(JlRlFDB(O5Scq^mUL9bvyi>YI-f&!G%H6n(I! +zfkWv+f8F9D#FFb4Nwf{&54kR`l)f2@ZZiTcHu#(0uk9*5eHuU}2IYeWY(Gvwjx&&S +z-q##IKgrJ>H5m(88Jgh0efs?a8%~-{9?T}6MS&2Cs6l=B4qj!@hd1kh#+jIEf)RPc +z>CTRC#rYclJn(*7WAo~oeC%yH90BlSpM`u>;vk8qEWl1r83_E}vV +zCtwVeC@xNk=f3Gdh;F +z~jQC0d9Myz6d`wwJ2M;ixt4SNk+#BYOw)fV!DLw)d!Q3g}ames+K*EqVq^*G2hc7ouv1Y +z@ItRKXP5)omXHxMxP!iF{%-pFc~?MT9z%Srg+cx_EcY@cpH2Mtg90CN8=RPY(GDx~ +zgJ2J`UI2wFtE^c9b~pLD3K{`(%gMv#wqD^;)B0%Pa4~wO{8R}JX?m(MdIR_JXK2A> +zt=f`Sj!b70)7$)x<`Ff{@N+yI6+0FDMRhE+{xtTwl+iQxT5HWX6As+D7$@`JITK1G +z7fZ?0=y`FT2G?2dE=Abn2MmAr^?UwOZuit%=19-?wG_L%d38SR#S6}RHs>pqC2hvp +zunN-CYe;aRfKN`)ihS%*eKdQ|FAjxg*MA<@M-~S63MZL{uz*wD{c}G`<_5Y0vo%FP +zN~Bn9TxA%4boQb2%pdoGKg>jMnX%Smw+=FjjQ%p$iZ$sJZe#lLQ&5COJ(Nmm#tZE3x8F8=I}-`I +zWP5u`H!Xa@_^u(xmCk^IpRJuj$fLq3(W&h|x4Yxkz{?c!L+?8NORM5e+whgMAQd|) +zJUUf_^<_hvlmBD`el1&?Vq!j_pzHj0qL}M_p;Y_PYnf`fNuc!|Hvjb>G~Jr_9hWg@ +zXZcKrBIAMaMpETe1&DW~Ri;b4M3^PA()aQ;GGs2KNi%c`KavJT9i$s8pKW?AbLnK| +zf4rcS7%Y4f{7cBs4v3fO?qg3yuuJK&O`YT+-9f25rMHvP;%fV3iEcb1end^0Sdmpz +zBQ03PksZtU?uZe61NklJN#E`&DOl`~p_Muj!n +zGMV((fttioL&pA>E8i0_gQWI(y_?d`i7|4 E?|EUE(AN!ydqQYBsEI)~vZzI2D< +z;ljdVFUO#xPO@f4Iq*P#Rtlryy3)l37VQ2bHlsB&y +z>T1n|0nV`|>O3@X)lqizTS^MJg1slW5Ii20eg)&!6h!5HOG>(3X0?611R5qj{G`1e7K* +zV?8K0`NgFQk-|U}w$@Y`(zH0Tca}>As~jK~-_KZ5BSnp>?ctsxs8QGiH%mG_GaXrJ +zy=Bdvcfu)NVe80v*( +z%m$%wt}`=q)OJ%l9%_Hte~IgM2ePBP>8P2C4P<;Z^h>ZYEd7>cKTFAb(?!O-4Np!$DkaR8<%~SD_D*3{aY_|tGF=icC7{%S +zngFnx#X6liA%9|N<@Tfi#b*SfWu(T;oXf>s%mCH9sXAr?s*U>2Dep))`+O*q2HLNak^;p+DRO}eJ7pM1 +z1FpnXG2Vg0;_>UA;RL4BNP{VR?P#CKkds)Y+m#gp1usy`GG4Qb?|u@Gd-D0Mw+5WX +z!XS6abK?j_eQ-Jl)ccP5UdC1De_?rF>KI|#dFT337DmWoSf4u(d*BrTZQ#knCfWwE=wRtC +zBt>gUj}hEbPFGO7NJIuset`7qMV!xw1fl0BF~d7@PFTY!cqas+*>M3R2EC@La!11F +zUiMwM{c>>=NSt1FuIpSLpXN?*nteO532mqecvbNTBWdRQx8wS=eak-l`p}s(ddmj` +z3vJNDK)z|hOAoCetk&a7s()qc2G*rFcUX$*!6=i7>sRAwxEMfgd~uQ`TE-)ICl#8=`2_2e;qVxb9V`Hay66C +z^U@0v#xXVf1;lU*DIc#Ed!Pdgs<*hb0a(sWvOmw3QAcr=x +zsC4t~-A;7+q&WpIK&sx7x{2w7HIDO?yNO7)8cy{664NDAgqG;V{%d`g4dp=(AG$LSaTxrFOCJ +zoxJpArx{aa7iRcxUZXMq*?yiEJiF&d%P4AD4n@f%T!HCJC5nT@_Ix3n2NTS}+;e_` +z!E3iBi+z!i-)So!YP9M1Vs$y3mJ@JW(xaRrN#GOEc-|w=ey;n))b?OlBGx#`nTQLIbR(=d?WI~h +zkQSpIZ`9}x!L~JohYrh)n})<{kGd +zMAWxT{=h?T!8(*oOo$R-=KI%DIHe4N{!I6Wn-)7PFD0_tvD&g6m?|@W{42q3Dx`yG +z99ARDV$$^s$}R2M`*&f+xW=FKn=Jc4Pft%K9NgSD?v2%sLtIPssr5y&@J%$-#wGGR +zrw_>sBaLe^8&)dGk42^KUGEyWP83}YD6XVNV}prjJv@kPldR(HibGc=7z7n$!DaV+ +z^O=#(3~}OUl)!g<(sxYkkwT8pxm%eGUZ|QStC^(2ZyK1xt*CX`r8rx2{339(5hk8;d}(q0jF!vN^mT5MDRdMnX3NqctGJvv9|`RR?K6`ELy{LD$!DSS?+u#W +zxouY--^)NpBHl-2pw)t4Q*h)5{(LRqSMYXt?g@}u?EOgFIy$Tp3_~Es=Ci!K_PpoS +zaeUqxvzNOLuafP8TbCmd%7of)u+xtNUvS>NfQ>9Zq|T(-AHhgzZMS6lk#IB~@+ZTw +z^mrUlSX*=jO_k%irIF!X*Cc~J|HGst|hcAyT~5S;%&Zdu+$&n8fGdH%(7DI8|4PMC;$Q!vzcr;i#`h +z(`*qn*uD42Q6mcRkt=ZY%-<(f_|*NC%K7ZcN^FA1YX7TVKmH$NSal#@chX80z2$No +zs(n!u&wLuAG!#clRa9s&Yj|&NApcutqGml#awEMc@Tt0LON6`F^}!s96+`PHSXmfk +z+nBd->^OgyGHJAcZT}WY%1Tu=9rK#;j2z4mIPy#i(}QJs*%CwU2_vgqyt^n-_v?X& +zp*OkMyGp8T3@j19F~jDEkrAYJubW;wWLy@~%O%5_ROP0|6{h1A#OWB%VKcT?qWsOO +zCO3}U;(QC)vX}cP(HjO%MBYyTE;&bATb>;o*rF-vmhOU*`#VI6W9nw7C(7z%JSqipvp3 +zW~Ag{R!(e@$X7|TR7py^eg0-~`M5ABDgqh*>ovimYfO%&nrf8#EiElfq&dlPnAQ%5 +zFAO@g1${uY;Ssnw_#ry6PffjShl$xg0#<4`0hx)n7VXD2Z#Qb^LZP1-{6uVd-W7%SELcBtIQ#vF&D+|;VM# +zPqE*9_am%23lVT}b)9Mz`<$Qqs~AeiWiS6X*;(%FW)&}Pw!I`{I;m5-3%ZE!F3K7S +zE>HQfTDeBvCxv}VtYRNqp7jiDiuXK`S6(WEs(n%mV)PDB_Lg#@%(7!U?gUpo4V0Tr +zT%bv!9NobaG-dox2>}W&L&P`s(P{3jScb%=hSqQ=Lu>Q8y%KrJ{1+T9S)@^^FBR4Y +zW#{;itR{1JVEc(trc`oxW!}*}{}qP^jZ2WU#Mpshyhfx*bXi`exXJei2}1;A3X(sD +z2{`iW&9x$TkJ`FOm|lI)ixp?O6>f1poWfY|c)1!Om#tR%Hgi??jXN2dj+7*-;wlot +zQx6kh^`q5n{2{z+Pvx62ptXR6JmRP&6dVC*r#)U{vNz<}0>* +z>E9Fw+J`pe{_i$jC`NtCK*AH1z$PYZ0&7h~u@U4y_)u!eAN(mJH7RWUF8_-&{r(3P +zDYV^QYoriyqwB$-8<6SI>1hW!KDV@&zbCQpk*3rk0qk%(j&*)xH4+0zp)tu6u_f@1 +z#Jt(cfeCLDgb}op!(R8MbwJ=8?Al(u}TBM{!q*J7&ySp3Vx7Yjgz3+4OKRe^f=OeBH +ztF~y)VB;_E6WL@7IZ#YN=$n(D=cnQqN|j*@;?mWivGE=IcVES_LP2A^j_2FOl!E>g +zd1vXvZ+eU!EkTi4z2f_Nc#my7MJ}wd?FavxvdV^z~37|}j8cEA9) +zV{R2a-85YLQ^_rb&LkmJY#YNI8rr2Q3El_Mv~sTm&NJhXDz-}X{HQ6HovM;Lue~k} +z*aAXL!@o}4{x32Ar-sxdPULUx)VqNCK5vRQ(Aq>EQ(FE^3qki46kKpw`MMg$>(FE($jurCFTu0 +zXfo;z$KDgm-0vU%I8WBN6TJ`d1s5KwZ0(1@TnrQ@;KUd0m5O6_tg|6X%va~m^XIF` +z;FQ0iHw3dfj?xlkgZ@0P#dQ_Z8iN%D`jc +z=xrYA)}b9ei2~H{#u3hyC>91oUdx)6(_W1>{BoINn(RN*!(q>quDFb5o@#V|Qz@kJ +z>!~#J$4YUcB4l!{Lyt4O{jB5Y+hWwtv{A)u&in%OrjOF8^|rXJO#)_Y_-EoplyZc; +zE9cxIeTO|&R1h6+_+%8z?>*p)g`}+#rzymx_@vI~sg@?^|MyLc;m_XgahRk8Sb5Q# +z0{sLfv*Uo!F*sYTRcfpNF-m2y*34CCxbs8d%8<{GbfA*_gEF68elzy4FcZ|!F+gtx +znAEa4x&dJL0b4e%DcwG0a$*vU2a`phK%{l(D&mdIO33Aq(<`-~$h2!C{LnY{FZ~qS +zZa+Brj|^9@!hI$<<(gv43C-7(V3Ti=D+Wb`UL<Z?ARrBjeCT2s4n*jn#3D+)%_5RHfDl{2AT2ZINaie!{3DesFzs3K{LGdkP%TO>> +zDddu!^pSFxOR&k7%P|cUbkN8Cbo%Z1ej%Eez2DYR1;kbNUSXWw_GNP*(`#52s#KQ| +zb@;>p$4G>43r(b&DTP#KrXZAF1{1W8;pC8C@r!?4u%GPD{)gTC2QjI@o{e|C2_27D +zbGjLdcHZiCOy`RQVl7R$}q^5qSGA!S%Bhj<;#~G48UP{%C7EX95GsaIw7m9$H^6DssNXI!> +ze`tnucF89^rj*~zck=xoe9#W4lRz&gJox0bt3fH9TPVHFFnS#$P%HL2wZZUY@m%?) +zH`QUj=r|W*j|L9KkFJIc0T1~ +zXh}bC|F^H9I#B$I+fx+O2dYVY7;<%SS8Anr8)e)K1n}DYDKuhR)btay^y)I54qf{e%{D%ecy<|*rw-mD&4+NF!+j)T%YZgYqZEkJH7BU^F;Vw1JQe1g<6G)|> +zphN~>Gj?U7?d`!k$@fwPo4-0>KiLkLX|pMVb@eXTGv-HH294dmw10b#GOcy6yA>MzTf>ZBOAO0@}&E#IOI52 +z$LjH*e;TM*&=55@s3wesK300We?HCm^AKWiLqb1F_@6M7uqujDm>82w#I1*kY{J4L +zx-3Xw#G7u;*C6nzeeu|LS%H(!`bkW1yKZX2k>+qO@i0y7@QgS{yCv-7<0z@VORyhs +z){!oAb0SRuNRB=-_V4#gwZwmXcsoZ~VH8b@|E~~X)92$l1$K`FEM1IClAMT5udHbp +zQTbQx{E+Ki+VsS;mq9VwbvQ(-r`OhenSc4Ku}s0;o+pJke-*u}Ay}#v$;LU7uX?MQ +z^Jg2iJviW*BPH0sw- +zjg*3>QMTOv$aZY8W;_z)G$5fEEHV)%EMnRv;Y|Vl;B00T`e@^i7iB;P~g6CV2g3175rKmEl|SiDcQ +z)YgP&ECc^Hc*n4%3{pz_GjRc9ioKm;Q5-8`3y%Ry*Rt`rOK`z2m9f=#tmr$14t_fC +zJfJko=VF0B#%c6*eK=qCp-;1)yjcTCh;f#%QWw7q;2x{n67PW_yTdA#?$$8Zy~&II +zNU+u3lm+iDb1AoQ&6Y5S#vof4H)jld +zR?_K@CeM8iGh#Za`E*fDBSJ)r-#$7okYfvfu>j{j{h+>-f?VR=e{;UsBdFcWK}P-T +zqYj?a_|JvV^J&6r2vW<~uNFm}n4&uqlf`yfy`BA71Ys@|`1+xqFBlg*47RPT_Tc!K +zq42;js}>k`fn|Ao>fr_p683euOll)wSO+(VPJgb7G#_f_PC~&!+rN+aF*GI}(de0Y5VMfCJW} +zJMomx>tXm-u^l`wOKlq^S)bJ*L>V;=-~Mk-M?vihK?k+%m49W5lYYHEjWIe^%hc;) +zzMzxBP{a{%Ajuu-6W(v%gWod*+a8*e +z`P0Ik`em$jhN(wsUL-?=yoP>j=$-oNV8IkKsogUrtGB +zNJejy5;g_3Gpzuomc#35YMIwLU&{AP+=lu2Dxa@o(IVam1LJ|(mv)+o#=jTnoL48f0=J4{(mC!IzQjwA$<;%$nLx9uKYZM~ +zgV?2H*;~v3cy+kghA_Po0xgaeBPsipNa^Iq%;jfHLs}T`BS?hevCDI%Ca^~fyq%^W +z3OZ2^ny5VE76hyeofeis+KTSNBIH(x%(R +zRaoxMVBX +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 +z>w|2_B05l$rbJ`G;@SBb0*CtczIz{ +zJ?lEU%)@D$*A|kIQm*Aho!KeOC3dS9cC6p+Q=71}^Wn(Xncs}ure#Ik6_pQW67OHE +zbt|~XU*ONVxWa9a3m={7EI7SuG3U>>$wIdO#z^}=_HJ^lqYoP{g#ai-gcY;AaVQSt +z>D21(At5$qQfYsyNRevqt2q@$W8((2jk0CU)uk16(2;5s@XzQWOjsesG<}hp%pks| +zNa2@Rc&)a!;;7pl>M(=IQo1CYVo-@Q3+5jC2$fKv@Cb{S5+?p9X4eR&a^P@OJ`R8e +zW*g~@#1Dhnx+3s%K%oQn^tSC4dm6MyO|x}5dYMx8>>9+8L1Hfk`k5upGb!_=HU%qW +zG5*jQ!@&6A&1`V)xRzojm~pHvnFh|FCIZhXRlNz+8(kr&uk2p3@xH2WKJi9*y~vJ2N%ccuTDhNJ#{Ds9nBnxmt4QgS*hA>n?u?l+@&+hD$?&Lr%Da6lH* +z=j2FI?a>NM=}-UyhY`QhORCz;B|5~WrmVpY6F-sy`8|`tLD55|8$VGX#MuB5Vk3-+ +zZ=z?W`aOx&mPKU@N&oID$l3dg5YLm&ETI3)Gw@;k>2C76?fOIMGsfBgwq02S@ZTbo +zL;KADHz|2^XHCXmP}B}Lu^FDh-_c^oYJ4G;J|N2(Cgl2r7Y&}{7t +z?!;pegKY?R$)S)F^Y7r@2c#WtRv3uyq$+XM@;gI_4PEBv;s~J*GFW^0~w#LBgx_9TK)k=p)cqHwU5v((9`6k%X2x>!{-MTm-CsUU>cnz_al9#2ASTHjI +zh0FA9Rb`Jbq+yo;ai%+ji!yzwAp +zQQv9VNM;7osqbWHCo#LX^{5gnHEWz4%? +z9Ct*u^y8SkH10FYzw>a)V?M8PYsp(z-<(gNYe}L?A4N{ng?M +zbwOTq%Oo(vV#+m=Ld3kbd4wxbtHH;1wJnK@=|IlLBvLkFwD%tG|K*4Z)IC+` +z;{yO`?b!@atq^ai!VMy(U<)}AtEOY*ZD9#cstnOo`qqYNQeKwOP3}2=$43!#cul4b +zQL@GW-x_A1r8cHbqhiT=c1khXkh_F-V!pA}>tH?Bv|V4R{DhavD<0@fx`>_8k0PHU +z$NZ*n{7D0ty;nu*Xv4Mv@ySZ{IQ}J^m)%JYXs-RSH3Bnspgr9 +z&zQ0`8gGv_*PU$D{nFs0n%UdDxFndvg<2;LxD;&k>Gq-kmn?bIQ8qC)36cSHr+kjnsWLq*$-Esp)SQBy1ub`W)BWIVMHf +ztGaV?t|Sn%N@jki$wGC6`uK79)M~5z_9)ombM_DiE;`Nc%f~%-(|bvRwzI+S8}&JE +zwVZ>qOhCrkuwpqd7l5_Asctm+Fvn?2=gyY(fkIOQ`ZlHh{BUF*B?3XIu1U~$R4&SD +z|5Y3pnWE@YDZd4KMBbGRrjB_dS(ouh@nVuS>KF#7JpC4w=B`p8Bf5PsFsH0VVp14{ +z)1o?}+5LKvKyG~ZD7$(q`Nn=!B$tg8&3&{_u*&}K{PKO4Dc2kJ?qU2|jBRwwwMb#> +zBRUJ%jC{AURCl|XwRAa=h=@XQwbFrbH;&0jPr3TeqIu0xs4}akIxkY2LQDO!dwKVB +z21$1QEFL#XofGnW7$jzE>z+w(TTNxFPMVyfCg=nG`v+WhFsr?F%C<%YYj4z|lawjI;qM6x~@hO+u>;2Q{ +zP2TE*56|E>uS)zg$1=2qW5H#Q>36w3^N|hOlV)!_u`;7&6~Tos74=FY@MUD?#PRJe +zPqxDXd7|`ai%K1EMx@Q<6|t`jHU4si_i)XcpZ;gB5-X(zZl|OuWj*MMM%lLV?8-S# +zsmaz!J?+a3z{W*&c0ie{u%QI3DiYx1^EXm;R;Uk0On`;#4k%cQp}_i?T(Th0nrcvu +zyWO95k^{n9C;VTgkf6!E_W9`GfTDxyPn%T8uUv(DVO5!r@x!kHc1F}mKYpxDadfV* +zxV=c^Ld|c5N?6fQ-N=;8ViCIfNcDZB2-2EOrlRZGY_{F?FJBRBIgxfY)SWq{M8rIK +z#=_*^Acv>AMLut~u6KQ}o8_NB)~@iu4})un +z*CF{hTe72=nV%!`k(VK*nX2__xD>1;^o>W1MRRZRQ-Ud^g5#s%(Tcu*z%Hb?;K<2`gJ^@L6lb|8q_`($AZ6ZH74_&YmE3wR|&nE +zx>-fRMF{Lw^jf)TI34k+z-U=H@3@Q}<0|3G(a@ZTLiF1M_B**9cR}oZ??3+6wDGv2#|}}7cm%eZLihbqH~K);ZQtQbt8&SBLs6o +z$WI9+bg-8_1Fn`h(++~IPOC}>W3)o!c-;?odW_yIYm)+XGW4~WT7F@Tg#=UG<6*K}HXmdMcRTIi4LbrMYe$`Pp!_aogepj} +z$rU$kq7lMMnR~85hO{mZKy7r+7S)EH!&m$KHLs7qy$?y0M?t#hHm+G0`AGkg!nqe= +zvebAi?`-E?aVXeA`!j>`$EX#8(G}?AfQqCTRd3;%bqFczh;}@z +z#kpH{b*D!;p+1H&9xu2WF94(2D2sH7lgp~W&G!)mlGCvis@)HeGB!6b7Ye+LgQ;jy +z?WK|Nl7yXtiF|-ip4C|)utUfz(&Zoc${Tp>w*7pbh#&)P&2 +zewfT(Cc9tM?m=~>ZaynwU}(F^ggWWG$;qW*J^5eozx_AJ>H7!GcT*tdy#yt?TOuD2 +zW?Q<#UiCRIzr&IGw5jP=F^F%1S9lYU)v7xWS(7c1HiR=mq5!p6s`bGo?*UxeU`kpg +zty+Wp&x%ikwmjWqXKFK7{MF&e{(tM)9az)4iqer@;War!Om^9g +z?r==Ah3t=sXDP+db&xK*PGlM;JY0K#!J4x6`^Jd&LWK+ix=_f7ZGb3~pFyjrrdohO +zDuHU)%k_U64c}OORzlRi2I?LZqbg4HEpn9Z_lJdhrb1To*3<#7tTgHVdYrSKzr;Pm +zvaq+`tv7X4LF@)x?DS}3GqON?<*8#KTLd+EB0LafO*G*Y~YthLC>=FrW6n +zVK*xqmm^ +z(5;bL@MdS`Rey(GTSsnD;tIN`_A{^K>-MJkEcu8 +ze>-DUk0?+LNxL6Xo_U5ts@;T;YRd1*4{{zu?elEBkd7Z=v2Nx&OaM|`*73wLfEDmX +z*> +zV1_x^xv+1q4i?R^_F((C-gQDuVD=MRFl)~07~Jiqz6s_YsV$maoEMIZ{fpdUv{_XS +z2xc!ip(_Xjkn$|L^aWpjIy~-8eM-KxL}OE53<@5MFi +z+u4IuoxkfRcBsA7E~i_|X-P`NHCbsCxOO}4rDn~{+EVM8s;k6+>ilUzIc7p5N=tu_ +z8hk+s&x-xH;`6AkgYh{fhW|n;VeJ&YtbBWExL>8}?Z8UR!diu=q0I-7J<@rn7@Qo5FyyL)HhUpeYk^7@0b5k*4BQXZ)lb55TVx}Ip33hwmUJL +z7Jftea-sH43&hE2M|NA+{w2}4QvAZjc1%97uaolS1VMz$gi#tKX7(Q--j@Kvx%_z5 +zh?Ur{oSI}zBQXF2vD^i@gFRMF$b-qj?HFlCI^?Y7c0pg|&N`#aG8rF?+(&@)@9I{4 +zXdY@n3kDnRqZ8~tH?r4N1kAh-0`Ek)r>+;jJM5d%_#XH^ovhQM?hp=#h|5Sf0qUT} +z;A>GhzXkm|t3J +zoQ+yp4$%{Db{~~(7|nMp+cq9_S(F*zED?DwvFUTvQbaY3qXdm6GhyyOa=C7Da{7t#5?mSk9#CVZ@5HI8NHY=(}ICFUlbl6`y>Mx +zLVu>oog{W=14suU!3n50nQFRae!OK$TISs*0K4m&OVy{h?rWSS=JPZR^)w=M6e3J) +zlUx$BTWeL}H}Y?qRe!qcw5`6*VE5jAAtoczzXbMTZz!q!2zEpOdM=wNC_y}b`8J`C +z{~eh|5pJiczSM4fyvv<08~S4~HFOdEt6n&MEe;JmI19@S3=ejude!LC8mj@ZG&RETvufwlEG-U`eT=XweSM3d7_@6SFsVUT-1DRGG)eo +zPiecu!mj1VCS8_Ml9zt0eEyVyRqB|kLywQIM#L^JQ3TJ3ma)#LjC^apRK@gxs7^$o +zu|Bw#m`+7YeKX`!g!)#qd0_-oDsXm7TOVBb3s)Ihi={H@zir0~=#M6$KkK=y$4@G# +zx@PqLcKqEcfK~sD=XF#N{zR#xSEajM5=Kw-ERK(mRw^f_^cTh9kdk`n>?xsLc@`D| +zH<6>zmRy5rY%^FASmf~sNZHAyt0H#Aqiy16_)hZ=%y@@k>*7pGwQ=#|i26vPqwGiI +zau05Rl4z7l{hv|KotYNo;T8X|2Snt}IO~ZWs+*0AtvhwN^Kq&~lMqCcj5NH8)O+5)!n#hN}}ghYS`$E8XX&r)g277vn6vG)WYNV;>FK7F1`Lu +zqKDwUmpJ`zHF-z0??ZAJ7U~{h@vEk1V +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 +zdO>aY;>yoq_rKBLBIBGK7~9@`Zb=+feI=WoR +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 +z7a +zkB!`CPmFyF`y-X0qSMhH*{WI(DbXJ|F(@3n60BILP4y +zu5EN|fgk!~lGRw_LfZXh0`$CL~jw__KM2O4v9@HUqhNcd{xhtdk(hr*IqQ=rGLCuiXv5tyv~3vT8rNcigc#` +z6FPTjW&2rw124}2qiBM5C +zgOwJsRnhTDMp0L+C$s*EBpl{Sqo0|2@m4niQQhCazyD>`P*_`QeaVx{+l0d|Wh>&R +zYl)<7LrB%fwRU<;}Dd2m9-Hg6{ +zU$=D(Mg(HxOy0$W&-~x}WmBxC6lvlM#&$P~N)vb4u&F+&m}P4s5GdCxd&ZtPL5lJ3 +z6iv`}aAm0!D5NidZjl9*%KaxfMXJO03VAz^J5oMfPlnn3xD5~D9 +z`x>UJ9E2B-WFQ3!<;n^Z)clK#s$yur-`F|BlL0-2kV<5U=ITRCP=nxQ;v$6kIA5dC +z%*{=6bJdpX5l8j@>QuZJ8%|zn=v)=y)Q8dU2T!oTv021F(Y}sea9oel#GGP5TR8h7 +z0hsPD%?!{te(gZr{MtQCESTB?U;JfKB(fa}Rvxez{{a?;Ltf8SEwY)H&*<0M(oO~w +zIFu5n$RGH+B9F;n!(zv<;uul?ahAFD4-@w|cUyd|6!CyH( +zgFE|EP6KTyd%>46fr4>m8r-gjrr$}oEetY*VVZ$Z0)c8W0$f}K{cE_4=Z9os!9`ZEptN#Xt@C>JP^h^n2TIT{9~-*?`{sb^Ovp6%~+=xc_J%Qx@{*q{qb}rJIr}}WElbf5&}<9ACgoI +zE4h*Upp=yMyr}G+(D2VY!C{gvPm!}j(d8kGx9Ra1hA?{+AmjkWEccW|-+ollP7&2H +zI~9$N4XWWmMn9NQAHNEeG+`}TN(3CrhRLxpG%wud$tr&x?v +zA!2!f&bkRjD0fAB|6&x88^50AJx3;RyfAqf3D;hM6^CDh61+0i9HcTVT>TN=$i(8) +ztw~9)R!EVnmgN?$*75E=1J2mb4Uf{15`)x0tDw4dKC9_kyJjJxq7qEWy;SimJH|f+ +znih>eNj;5o>VFs6{Re44rwiJ^H;C{#EU;<4dT**LS+1r2@(SwuQv>D`z!g9D*qK_4 +zI{lM6P{=+V_fHbYpq(h;l(VgPHtgKUM3MA4*kK2$%I#2FU0_Zu(zQx};q5H@Hx=dl +zMC7X=PXm!Uc?v_?L^j7H5m;=d@gHFXVtxfMeuT)lR=Fo+b8iaNI=)1!rKsg&6^VVu +zeZZi?V}Vxetn!);}e_w2Bk$(~66eTo&w~gQ5=?zIrdsmlPW=5d70U-*ym0T$bQ{XSHG#B#t6! +z)f85Yc9s7M{6q3RRt`G@;}IBxAkoW1?Tp#e^LqkY0zw#K{RRO;l7&!IC^AmNgc#BP +z;R0X>@k2Pd-f#rd^6cTVsa*(TYkm=n5<~AVQr$t7j$65Z8yG$lX-D3XzY-mXqmVR# +zsEs}uLZL7kX_tl<&b4QlGdm)ZTlhJme7}CtpK}Zus9?Wf75E{(3tX^co5Q+uo!3yW +z%SmUax;R~RmKQJ1qM41jXTP2HF-m)ORcSr(sCN{}B%qn7errJjct1XT*y+5H+}E%H +zro^kV7!PiGcP6jriLP;kDVm<@4?K`Rp7yL}$6j~}!1mCrHra?J>V@p?FxB~GbQHjwNB|os_#^0C21<$T2~h9tpo~$yq-7kD+&*?)4+xhhmou2`{HYE +zDh#o_zsiw?ufn?26u$1K>e~iJx~qTq&ZSo|?xY}A$IKu1BCMAkXviRa|Mf>Fk1NlE +z4~T&;phfvQ98_%<7ZkYrE3Z|Tlj1AX6EkgLQ+OZ4mxBN>F#a%-E?5-e-s}>c8^dp= +zBAm3BYkTbtI+I)MXD{Q}rltGYjwQF*nLV86&hu)HbqV#(I8Q=FOZx)(X)|K7u#t94 +zEK>4)6S6i%=*0(1lPGY^GV-zMYCef%kDPf*ppYE*eJ0Rk*z1?Y0m)k?p-=|3sQxG813Wb~T-8NXXzufD#-iuYtR!iF6X*Xm +zUxT6s&rkQxHxX`F+KJZTQG8m +zxItm4AhKwX5nn5g3JuMgrMraYL}l?FL{i;IdIwt)tn_*yo*;n^v +z2+uqz|Gm7K6uI&rc`SB`K35>5m4Qb_gYc>f$M1Iur3YElPMJWa0^dS7g`^2Hl9&_Z +zgg9BiXvCoK00Ug&uBZs>6`D$gtJqu_=aa8F194Hx1WfLsQL!ZbE~jKx7VQUpM1{!H +z?|TeadBiM2K5!M@Nh&7X$pmV3TprP_a2Gsi`!ykAp8-Cqs^`Sg&-u@5j_wEjPrwEext7| +zq!>WFQYz`wC~Nsu^`Q;`l7C5qI6xbkC&bQ=M@l{iO*8^D8HL3!?f+ud;{h(4h2=2id0%$NEfWk#yfPaslj0${N8BFdCtx7}ojR*be;uLK49n +zNpGep9vFTd{qU+}CjVegtOPvYi`$uufJr}pE-&msZ*uY3aJ&SpiUta(zE>F~!E)pE +zKa3=;G@fI&PmWaTA7EAczdQJEOUHjMaIv_^U;oxNufw@J0ilOg%ugldZVQ=l0D-ui +zj6wNP{Ogy=AL*NnE{~o?*GYn+qp2@1;H!UM{-2LbTCA8&Rb`$fyK#l-cTnuZO({Ga +zApJr?`E-cuJpbv~?bn<8Yk!kj4Ue*Iynko=pAF;xJ+w+e`n~*P|$4Sn&zECax$m%>WJKGt_v0I0e5857p#Kh4DdKEQuJ9H@LpvTY=j +zY!|%FFQ56Y)0=CPUTSGc;{VTkM7C#R+2Lq6vg%hHv;h2^z4%Vl +z$58bbXQ!U*up8y}0%O#SzIsr)sX7p+kCI~z`}+T=Cg3&eAif!L8PtOrfqqBRm60y9 +zf|Eoqc4-bbBdg{9io_K=GOaZ*}@6Gqd-2kCz@t +zV~cceb!#cx;SWByR5{e3c7?;iFO+x=x1l$25C3Ge{pa!j_XPpq{Ah3iRg}lAyZQUi +z!Qv4p@aAumJ5A)?eoUjBIINpLn%!*}!xycGY6Pw|{Fe;ZTp8z4kM?&ES*L-mz~c`~Q=RNC)JETKn$19p9Jn +zC|><{S|?)-?YQrOkHCR+9hX(} +zh!&ZL_xfJ`dh52^1i`~!x=$Vn*^tIRb!(zWI5pyqkWk&;!K~t)uTLj +zRWlk>KZa`FUH-^>0v1ES$#YjAj#4hS9=A6M&bH~tZMckIf3{)$6$R0<0O4rM2BNPk +z3z`WwSm^DmLKFu7s1^9dZZtl{p2~4(Z*wPExAmMpOr>0{JN+M374h|DVw5Ov#=$6J +z<(llx_&Bd~9iCsDVCKA3x-*^RtSEnV05=Z!h64IuxO@Dkwxl?PgobVIh~ +z-r#7=shGInMQ7txPYx=LrWpgP7H|5`y+-$7XBv(v;>YcH+&erx4Lb@-FE)jofj&pOGSyl)ir} +zO0v$0QTLU~ZOWdtJ&g5SvWNxv(k;k{NZa^QxLMhl@5QF$c}{iv#B%;@{)cW(AKX4@ +z*f)}poNf3hE$(&E*Q3t-CZICYXma9I@KF95*xu8B@x3~!Y1~PV_C5lECt0`lrE!EP +zG5EM@ejrEoe53wbeO}pSru4;UFmly4z{2z10@u>5;<$g>_;&g;Hi8W|RV5qfgi1C) +zV7SY8^$l;ig&POySRATA6`My&9mx@)^Z|j~C)Pf*GF0o{cVwqGmqGMtK(YVdCDMWg +z2`Z@n4Rm^x<|-z$u>Q<9rbD*-(a&A}?dGgsthIPfk)E>75!`57&|QS8^9n0)h%w?Y +zkH5+8t9*u|Ni5rL{V+WZL@B%)0^G8Su~v{w)%E^%@@&0y0Y~g#qp;tRPq6&#O#1uM +z#|(q%47ls0c!pv&MK#(ibN67esV +zhXcmjO>{IT*A2xzkh>mZxtT9nyD6m_MY{3xzKu#WHk9~WDD+2ON(B->!YLZzY)U}s +zsFXi|`?P_+a}JXw(mxv;Ud*pqXZ~X9xy(xnR)&3^2BT6YZq(U++|Y$4Gf$3l*dSA} +z3B&Dx?~99DUttm>>3&~VDzz>;{`OpWHcMs9AKRLBdbpl)z{6>2`wQyQwC`RrSP%@w +z{ugw7hKGGf=Tk2GfnhQCQ(9VJYC_G$O2J`KyHH{!Svw`(q9LpLk*b22MCs9}=ZkYT +zeN-Z_AOR2^7YK`Xf~NlrK1=zg16Y>hZfB8q@?kO@P{>Jl(})q42VVvNg0p-tIQ;l+ +zLoOMA6$eU9rHltwHVcW#62gxN#w@ok3kj#;(80rHRHliu;9L?;m`UO)v(_G8LcAR0 +zp*27OvEcvySJt713opKC@4M2P8TraRDfzYB(v~l4ph~X{#!o&@=@LzkizBI#$$GBo +zq^YV^2cRf60>xQ{PLg2^o-WLr_vF=?=`oy?xZGP{@?GpN_5l3b`>>4xLMlN^gFn==!&W!kz +za4Isre(%4BYXFPD&Q_ER^v9HwyyqMFS+~`wxkn|nw(!pK6T0cdKB>ZiY<^YSPW=;t +zt3|=2;(kM(dblqF?%*^e&1+@rdxb}%?0nx41Nlp6g!M;bc`o^dlQovzkPZCSxtWhb|u$n6iao713iXmF*#P1HLOY$p^puc=2_t8F2`55{7#O_t7>BE +zbxYg6JwV_?r+U))3+`*FqI{&$=XeH40(dVH9TXaDHiH29ZaTeVsN=zWcM;?M;CgJk +z+KWvg^`y&KM*%%8mV!a~G(R%2y&gLff1>|(W`baSW=>MyJ}&G!ih4RSlIB-upi4D6 +zT+f#U=2Cxc>X>E$z_BL0gS+^i#UT4$I)hweZ*4TbBsIH0EZ8u~Yjd#PKYG9Tle?6@ +zz>k3gj_N65z2T4QJ(HWolWcIVh=TO}Pc8GmD!jnjL8U~&{@+_AfYCHrxRiKYwiKWxkjG5cM)q3C1Ks-QOF(bc%h$Q})>nQJ-l+hNY9n_l}02 +zEomW6)|A)uwM&k11Mu(WeU(%pioKHmIZQSXTjm+ANvgO;<~aF=K&N3@ju6q2*018* +z(qp$i%yw0F$POvdG8da*D`Q$M-GaHUcShAWfEpUugpEZWr+)S5qmI6gn(?sl9%D@C +zBJ!KXM?jANu&9l%;Bs_x8sr|{-mmiNN +zJTPuv9gz0#ebu9(_LU7n&UWXiTgmoc&%T;;e9+hOGwBiFN?(HEFr)h8$~zNX-EsPW +zPS94f`Az^&gW&kzs-AWZ2uu-2X^BoqIb#7;~^4(zMks1oD^bc-*jBuRWd>R+|B{VDQN)**ruAJm6bafTfAeh-=D +zusUJr#mbrq1&U7Pp)#er7=!Qvd`tHCB1YLd15)=fI=@xAup^zf=DlyPIXr2%Gy3h? +zvjjtUD@Cl$Xw|E?ef#uTQ1@bNI&`@2C5!WiK@T;NB%Q#m#gw)_1lf{oh?R1u%&M*$OV`VttURH%W%~`eF{;TL +z9Aq!zoD7B`#n+}IY>LruczI!hDQAj@g6ceqx$ahmN#|OcUHRo5gn*oWy_8ZXLNPU7 +z^^d3xk~9+Sl4NJ^hoVj^Z0BqC=qK%&l#-YwU4@cviWrsC%2FW +z!1c!xHD9fEG9nZx}$W$4nNuN#=-Xn?Rc$GHEMmUBM +zjf4cM`ASS_aihO!|M`w}?UrRKzhJ8Q;SSMVlu3^#=8_s$ay_AEBZ{Pm`b4?3v`=w^ +z(A`GTWf|)iCa)mt}@;6#PV;3jy#i+{IeU)@~k?@#oR#9bG%1(+if-F4PQm9=l?`s +zkjMgil<18jnbe!}^TdUxj@PH8R%n5-s5pS;y +ztG+%kAHn42NVaSnyzECGT3y+%Zj$Nj_m-?&L-R8nL;oG==NVi~WE7WOH^FeowC|4{RooiUE +zURz1Jj-+liR(A^$ChN_DBdIx~jQi!AEandD4(nD^#%w%nnj#wZJq~|-uBobEoo;o9 +zh`5l4`6;qO7*g{u1I65x{)~7K8?Ta5s*ND^_g|ObBiPKUK>GL;H>{>li0R85r>b1m +zoWodanS{#uAtP#=j^bVitLIa{p4oC`X+yEeWbwWtQj=>zO;ntAa{R6Q(ET@oQ3=D@ +zj;h!popi$)MJBTlM8pL|nJ@G;p^wnwbA5Wpl5bY@T-oXx`XW{GJdF4pIM$Y`isE@= +zp-S#1U6q|!$BJ=GWYL26S2HSxt{guyw@PO<2l+1w>~&X3nsfE~|T(e^{f- +zB2DneuzhCBh>)SF$6~m-A$;BXC4d$Ioj`}z&<9}<1s{tUFv$-JgtLj?#cCB66bVfY +z3NfI9;#|Jt!>Wj+@4faMI&r)!PzG}NR +z>SSIwR91zrxvLyM%B7y@(veN|MS@AKLQ!&_l@WDSg +zS4^P~9a)WR32w@?^AzsaJ~egiOP$UtC3OEEiGX;TJj +zK3V-*tSWV$zs!oX&y0+n8?~?%4f+OV*;QYSSBHTkNT#DorNk6Tbw*2@@mfLPe7>;SJ&x2@*7ov&nX(ja&H{`vOr=^YxUN(*bKxrA>Da$bx%B9=h;*% +zG$yR6iwgil%putHdUmCZR6?_w>bh{d{_Kh@HPT4CM(g6MlCDJu=H>go@0{m{(=Qcy +zxZQr#nzQ6uy39AjFV6+#JL{6hFx^s!A08eK^vA!ceTbnL;My>)rr>DDr4U!HCcpYn +z5JPchD*Bco2o2dE;rUOlSqiEt3cLHJ;HIQb!O@`EOd$*Y~ZpUS5Nkc$P6F +zF)R*2c&n0`Ck~J-$&GEeJk%b+Xrok&5Ip85_sIbWP+%EI)E5zek2C!;O(-7xDkTzw +zc3K(zx33^)AXXN%534hP>(19Sh1bL!b~2@EFlA{p;y$={IYeuL7ZS#4O65}o2C`ue +zCj}27Qf`cLYipqyH8Rqo&~OJDLO%;|WMsb1N50APUs^-9(glXUKUyNf9%r9V>2WXX +zuBVCy5bM~3W8zL7uUGP@)_3)iHk*NfU@F`ar1=f&1WnJQv4#HWWXh>*m<9h;BzqUN +zSOnKtIbU@!-fm1=+!zhMjtPN{o?cp0ym&;C2VwD^E3Izv-WQe@cGoJ_hqG8IMzqTfGzQLfwPYW*-ZP +zZ>a@!?siff^Fw<+l0M_(Y1Y0Q=mIv@sJfx5mLz*`OnPK;w?>lc@9MYqYagBO;HnXg}}63RkP(#EfCuT!xZ5Qg!C*W{GB;* +zv)2!3t!k~La;q?+%4GPWDK2Y74|Kk +zt{W4lUQw=HW0u=m^Ucg)kv45>YvJW;L@?fv2`4}4zgOc +zwTv-|K`=8Vyxv3y1-u@mUZ(d?wi~woK}n?5S5r=MUw(v@O1{=n+Z$AO-Zrkv +zJ7AGHWlVTq^M`;#ZF!+ICE8fI4+{|ok(5$wNQ^pyT*tsyH#{b*o06R`RmUmc_J%iR +z>2i9c=f>#k_9K2Ykkj`>#XLERb6sroOfrX1QZQGaPDN}0sF +zdpc_tMoz2Y+xS!EKd!nj1si2lXbkkKAESjtz0uvvIr(VejvR=};eFoqGOd!Ja^bqY +z@>m-I^Q(CZt9|8-+pOgGXF8KYv$EQ>`9ZM!`^^7T$}aF#weLAXNmxXLzhm>sBUvCX +zOxUv|6By=zfGArpLYDqpf0As2%3$Fq!2RQiPD6zp +zcVgm1`eG9BIY8oU@JwZ*ML*cXG5iYIBDKYWp~+(Sn^kQ-iq06VHU?a`LWB0pZ0I4T +zK6_-o_C^+gu8jvV35cz2_JyZy| +zlorTC1%V2d2r1k;VM%$3%T1L8(W(@-MP82EcQ<=jaOUu>m4nyC>N#(jJBpWc)`M2N +zA!8Nlq-`qz7>DW@EXz|u@m}djpm&TEm(I6P8ff0g40=~WS8vK)FHh;f<);#TBYmM` +zm4*R*92*zcmQ{v3fZy^r|9Pm~5Q4^xHv<5}Qp;Oc8C3}HNm@6~F;|#i7{Y&`Sj=%c +z^^w-JmaXo(awYsQ)zlvXqIQv$zM@ta^k~|0V>SYSHnhFTZoF97n$d3SD^YvYcP(RZ +zOo8V6;Xcdv*hPATgAIQiTIz@b3_6AqO=*bHEx(po+q$~~wVGK3GA&wxSKDH%lDAos +z1g>vQvgPzy7^?7AFKfv4PT=Ox#3|1eNNpgrB=EwwUp^3&oQ{hO6zmfrC>)l|@5 +zB{*QBUub6O*`x{EheM{C?3(B9R?qP1FGzi-qc*rujQ7cP>CM&I1ZDRZLtr|glkLL^ +zG`Y4AdSvR$f|5DkK5i;(ra^3rzsZA=P-||@>~*pND`UWWU(xpD{+ySrU**bjKArou +z*%)3o8fWO?=p?NkN#|&(h4{eh{QK(VrwsIU@=%oAFGpSWZx0+-;*+{TqB3 +z-V9Uej`kh2Eq@NjIimZeuRK0Ss~YEIBJ6kCtkvV`#)@BuL-(H2bZQ?ab@!t*Gg@k& +zrhW*8EY`^w&{Ch&PA}gbYVbZKrqmNQA;-5P$gJF6TR;2~zWNho3mw@#tfBSGi)sIz +zb`|A9X6=(btKpopQQ&5-V8^21$8a&UZ|PKpvUshd2e6CE}8wV5UmzayPvP9*MQ> +z;fo#q+=za|YdoSTy5ea$y|pT}fXr8D>s4U$*f(-QgE1U$d&BO6M72dAB(AyFq=!P+ +zS6fHI=1z^zkg5`rnFey2}klyJEa6So!RfpnE{&bZ8lM8 +z$Pwf@SPS^lZug^Bz#*JRa()HkQ^^1$X(z+mUvkggysg)5dD_ckzUkj34kfCo{q`-R +zmhX$2hCS_*j{1)_D?x(wl<$7eV9<)w)sFYp8;5%-pBS-J+-ZXXvJt&O4eO} +zKNfrn>unlRs+)T^COhoIqj2yygfVKb?dj*X&EsgTj@vOxm%C~54{7Gkamk-hP<{LK +zF`{Q^+H6?3BvL)}_u%Gx<%rLk5MW3yD<4@Kf=~15R^y%B&y}UL{hL`p4mr56xs}_}(PMq*6TG`ywZW%`;4NzCY +z2akeQ<(hx^b9!rQvY(iG>->4X{v~{;^y_-A?X9qjmCNT>-xT3cemtF%-M8DS$>#la +ze6Gx4k%Mz1iAU1>QB0p$<^5Vf2i~6Q^$2U)ny(iFE^Bxu^}F>NbZjg8*An_{B+lIH$e8#g>?L&JC}Yw^6eoZqHS{C +zJ1;b*zS#x=mZj?pB(HGc*d_eKgrDh1$M3xOn)w!iTAgFa5;Lp!kwbWfxxpYD7i3=^ +zKl4>DnIC@B4xL2T=iN*959f!!1~2J~FXZwV;NM*v#%LmZV1CnW6qe$s;1`(EtTTc8 +zEsiAYVzKNIv-$C8{Ua54tKbtCj2R~U4RMtFEkN?8<#V~Eb2z%QWxXj&z4D2ZD}wKv +zs@h5pSQV} +zI^l01Gc7n!#Y3CVRnG8p1Yv7;UPG-#JMJz)f#nEq*Q(48>VTbL|1`)ar#h4s%X?{Y_N~@qM|l%~$7QR|J7BsG=iVY5RS@^Ke0nQaPiH$%A1=zd~gLp+nW1VSL+P +zhT4-FO6%5bQ>S$R#dA5Ij1u>Z{U)ZNa{0t!QjVCwj*?H +z4(Uq~joPa$9@8?~KAg0)wN39m_M%1FlDQm69_P5%l}w&}w24W-y`3liSdk#UMy%T) +zi;U*D+iv~cRT@KUl*ir~p3j2AQ{9zam9S+ba3(NqP$BuI?cXsT$%}{agwA6PcTrtrC7V`piDzi!C<)BGo%n +zu4zUKq}vE1)-JwKi7dfr=+$@X +zQh7=MRJDn#W-RofNE5Krqd510`FK=yyB}sA0x9=NP+d3+vWg2O`!ES1TgBpjm<&%BGQhB6^CFUnPm{UrB9zc2=GDu@4oG +z*{V#({{FWEs&^wL4njjR0hMS91WK~0`?tv +zU4xWqVi63DZK6xF3iseid0tcNVU@C$rEF&kb7dZ%AZ%;?>IeV9_1a|TPP>Oe>ZtF= +zw5c6mnCfl4j?L8vmX)=I?X}i#*MpmNkUh4W^9rBqkL>vk-VK^{B`NMw3wlVn}+o|S!Uy`jK1Nxe%R?0+hJHNS1Lh-zR0T8u;1-E+fTYjHXyTa1Hc83 +zXXp8%-;?M@LRxZQzkV)vjb8oJZ#6p`_ut$8bZeCyc +zgAcv$`ghLr-1B}e*@ChU1+ZvUuPY#m^JFOjuwe5ELrsX>5)-R0?z0rYqV&%dExX+~ +zxOFQLh3G{nM4x~C_5MpQy<{<4=DlHX|JE@sKqZbp0`Iu5S1m;+3U2J}g>Pvsr4kx@!-% +zTffrorGFoH&KrLJX_tt0zZ?aBRWC>P)>q4aT`fl~e-37mGJl+)z?cLo_MsS(QN<7a7z>Ag`yA&MGo~&oRp4;ZY8QxFgU^|Z&nd71!^|Yi>Irs0J +zLF{KFB{B1Wkrd9i{MEPL{tXP>&z|pD?QAB2%a;IM&fEXtPv8AVmw)BOyW#<0g~xOA +z-b1ey!1lrc`son3mtW&Z&#+D1`3TTwUAje{D$zx0soLU}+- +z-=KrIl_y1>FQ!{AuMNu<1yBpR*aQSg#*ubVaGNM^?X-Tn)lGh`7pFfAhL>Udxq5!Kry8H2Wot#d(>DE>t4rGqNVeideSMwDj&8V0KwLTkQHP>-uUD$F-b)e(yr8}v;KD4e +zKp3Vr)SEn^F)TC1NJ>reYj--LUL7d1J??Mr|H5uJ{?#Haic=W%X +z?ceq%nwY1{nN-fZ6~dc7z+bR1kc>8>B|_dZPA!JqHO>Ce%e +zK5)|U+E3g1UcFZO;xil7zo42092_VDU6#=f)%&VD~0x3k-~Z)fsoDSY;`dQaWE%4_462ZU}v=1v0E +z`ORIGO@G7m0r~nJfiAUQ`lVw1!GmBI6kJM{P9l;r)rZ&-C4nxLYBd6FEhR&W5wwR$ +zoLi(=c_@7zVP{VLwOzlh8f1JxD8gl9wHJ21Mww$Uhk +zZM9y$@Ao~;Qs4`*KT-zd&I9IY&b4g+^#F_9KL@Il8l!jx>Sq>JcRu!tj9}iCgY=+Y +zFD(GD$aAIBZYvOO8nKR-N$L&Xy_J=$jqxj`>g0Uy-ay(&j@I|wbvfows-vESRUGHoD-PLdR7Mlmm +zQ#b#uot?_-Z$12{clEo0 +z4a^)Yu60JepzNvBGa9V1u5Id)1*+&HodRH^*euRFQj{R?xpDwpSzXPbjrVV%XL|el +z{r26veL(y^v*dj;R33PUTeof%SHJU}VhxYVGJ0o|i8ulNjZP=1*6Tq}zzcv&6+P0# +z_7mtLog%MiXD_lYx)JfjMzkXj`U~)vev#&pZc%X*S4%5>pbn<}AsaOBxiT2jPy6r5 +z$L+V{+uP0f#dbITc|5XzlBSrSKuifd@Krom{*Xz)Z%;nM!L3wv-vckS?S%yh^!|EV +zQJ&5+uo(P|Jep-2%6ml7o})#Z*B&-s|Cz{1Razr +z9Yj=XG{RQ5Taq$84aGYOFOV%E3b^b2U +z_H*?p{Hu-i+FwutO<^ +zN>rS94BSK>EZ%!XN>lFJH7&jO3JSEvM>C5~nPU8Qzy0n0?M5T>hVSO)W}kF^PKipf +zs-RqPKzq3;?#U}TBUs=|eg+Z>V9>@8uHyb(u2$tX?7$a!y`-&H$jqYyStbE5KFA@D +zIEwwEI5EyJo&tc;eF~8AGnM8hE{Pm0@_gF{Z28fn)~9xx-T&s`Ui)Pdm>&sL%cXz) +zWA9t}SJEXLYipMAj;iy(ia-_Bo13A)7txK-MGk-w-AGiUPOs;dq8gzKBL&)(eqknIG%2UwqP0o_4tyB` +z`T}5#ZlqQ;xp*&XEuY2)oqYC#TRXj^zP;D`4@5U&{$}&$dhOrT%i-gLM@|3B+n@DX +z?T{zT^k09SYck|I>0YPFgIYG#bT99<}9 +z502hb16gLL?$7H^7Gh9*Ucy+0^UzngI+v3D7y)$M?8Z>R9z`*trytOYi0vYZQ3Ab) +zSP+Wua)4sw25rtEV4y^$Oy^CeUcpVG3C-KH`1{q2gOs0UCzly~k)rf&pPnA1ZO#zZ +z423s(WeCgQ#n2_{F=SenD9r;v3yO0RJ*WviXqDLtZ~P9qw{BK(-0;mSRBq$IyW)*t +z4~%LCvVixC3}JyU)ML@lLISW9-+@fa-+g=ce}~Ln_wS)C +zO#<^G0p9HXbGI7*c%@o;SNFUQ*s^TiEq;I{ouLt1-)T#zzgyKu!0`J3&8;` +z@?KGwDNhxFE%IKGZkY(Mpq~Y*@ZYT5?Pk%nYiY03$vUD1<*27O@LEX#SPpou90RVX +zE_L6N3Qsc9JBM@*cA<2QbdKmoE6`hOfG^OVLIM4rZq%p0gX%g0UR-P!#dyIR8eK2~ +zU(l}spiJmNf9`9fSDaTR`eT`OhiuQh_sXRDn#XN;#=CS|KtFHH7h4+?#E4(l= +zfv^dAms6~%#Cfpb$pS4rfjSiPuE!O;S=!i)^-3jf?d_$C$HF_5{R9(nJ9stA+e{$K +z>%#!JzFv=eSN$=zoKFel-Nxqg3GA*^UI~k0l->K`4}-N|`lWQ|wb#PN +z+FBxtQ6&iCKADV06eDOwbUGzwTp|UL5cuNK2I7JUiYs_GWWV&PDmkMfH5i8_QCbYVYXBfe|cvyr2SkaTf|1 +zZ8sHKz$`?9i>s6P8_(FH%mc=O&bq965}&5)VVfSFP~M96bGuNY=5 +z2cU}p7}hZuf-dU>%yzSp1kesJC>$um%TdJ02%r?|EiV!gj@=OB1hlXe_~InXD?b8d +zmIQ=RKjJ}J-l<--5`3lIP5<6_UE6Pyz^qGve(viYXwkj4+U;miTp`h)8Kbd`nd?6Np|)#4mXTS+0V+}{8kj-h6ws0q +z(mbm(SOdDx +zANffC(@=z*=gNyOI=!ZQ_Yt|dXK&YO^RXp=ERW-k^v2FAE +z^`HvfNEFu;ua^oyzW|sJJJA6#2$A7w1h}NwFV5QqT_7|*L|=r+N;!fDb|NAas88Tf +zDH5k|WUqMep8H!kd(2mew>wW8cg6pIUY6eWl&vYMyC(c*9e8o?I;~hRi|j+}BE9Z1 +zX&lfp@>l^-Q9KsBp=0`y7>0m?2FDznB)hw56>n(J(`@bb?UV_#{)a#JInl@a0Gmb? +znwJKAPWQR69oad_XW>sn2a<0ClPN}IFzRn_k0?f>7dh}H=jlRh3ITTmZx;q?sBOj@ +zvOWgU>ZLqIK%5nd(XuGIX&P`Ie3^A6c+&GoNjig>1EnaPVa!r95^9c`S#+Fu`7~qf +z3RK~k6xO+>l~PimC(KYdfJMOviv)kuY$GmQse;?eg}V*7vQO~A6=oO}dqpu={7i)m +z)x09r{nG5GHhzzKK5jq%o)+@6kR$4mW+I1iU-I5B04+smO)m39R~|5Uzm)m(2)tVY +zkP-FB12D7&M?-?E?*JIC>pWomY$Wf^0GMIvz!=1e%m$zg4=Qj~@4Q>p7ltzD$Fv(Na3ZLCVq}tjl8snXpjLI9Mt}i>CxRI#8|Vyj3_Z +z^|4kMbY}8e5gn+5E{X5o@2|4-!EA4T;u9miqWkkygK^!WeRQi&tzUGW@xtTgb&dyK +z9MHd-ryH%V2Av=MC=|UFIfOUSD|@Y0Q~^|RbRuj+q&P|`J)#@=w9+JN(0&P2U_bi# +zi9Q+X4bD6FUN5pa<+&nCkN_5eO5-wLmfx~DJ@7IseTwfN{Ch6jQN>e*09|AU#y+c1 +z4?qRGDCTWAWJGmteb6jt*c^>OE!(^;<>s +zAg3@ff(59^Al5QZ55iD&>6sOKg+PEV21|owhu`vI$!8C05`X0u5#ycvHZzPbGE0G{ +ziT6G^VDMg)0i3T@9&xbLZQKoz_!oUUNt`vjC9f-LIJpu#wyo&l9SKOLB& +zr2rKH_D-J+x1%QpdPM(n?c5 +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 +zeLjGQwn^<1XtEICLBasY +z3RHn=+RuBdTnA7Y(SUB>)ldxby9MNF-zLhASNJ7iV(O_kX^4Al<7!)x%zu8RVF>N#a)>s +zmD$=xU(xr#3j>A&6JowUqP<}Nlw2$p=LN0)L8+LTpqrK|v;)wBH*X3ZE_-n6R_1L+ +zq%pcC&1kefTT-&SnI#EK>}+P~2JK#ETLO6ns@aRFDMkWa6igSOg&=b!0va&lVI0Iq +zijq`85G4;%j5KN?rbfx)u*`OwIPUHQzTlRfXl7K(PzL%Wa7ETLoznq&5Y>Ocb4Apk +z8n(M)u!OBviuDhlZG&`JrNi`~yLT@7 +z4vgV{Zj+}dsbBHNx7)#fX2zd@F+78|yMNIvN9!ENeMWox`(-`napeaO_CMR~#J_&r +zF}BYnaFr6cu~zwKx7X@lpXMG`S5|s>Flt741d_{3#e*n$&lI4L0|1NqeP4J-4+N|g +z;6ku$=>-={MIeeiRRB)iQXVPVrr@+%_ns;OVO+3U^o#Z@9+&7pyw}cCB@e0`h^=zt +zhVxd*X9OB~s~q%pR6lnBl$V_73v8e@O@kRbhUy%RJ-prMb%*qZJYIfM+4Cl(m8Sm= +zn`D$ED5*=(AbXLD074&Nvaz@PT&;``yf +zWLYZ5>T1@1%BGYzwQNfDAHHvqCyS^;@_3_FP{oNdOvZVt5FTxDr`=9`JeIj6sKk_q#&g*p(2!;-EKMNKTbss73Dn2Xj$)B +z3UFZaxRrqmILZv4h9txzMavSrTmdW$Y8^dD!(H0T2w;)BCxJr}qB1*r5Eq-SoD +z^pbO#RGNKA$aVF$pPmC%w54AnN +z_h=o;{MOyf-Z_0O*nNZkCQK%*TR0KE}LRk|alkfN3v*y44_Wthg#7X)y`E9mt +z5|{-Etk$A``P{A5KRoGP)UV4Wkx3AG_d=?E8tPAqyMBy;F*NBPmQLx6?% +zQ{x{8plIm<7I~@o?b;?lg@D>_o4^zSDIQRfhswB@3X?GX)w_4IciwrYa05Ni9i#tv +zPZd4eNfaO*!>eqdiUe^5WrDsKQPf3Ot&s`uENP|pTdhi~)zX9=S*ICl(`Ta>TtGPJ +z$wba4OcxceBHNN;}Xa#P7SceDMmX0E*$`u +z7*ChN{(c0oQhM~>do{8cRq-mmsi2(c%?z}ICw%2!f31ahSBV%evjh9 +z4836{0x?66n8J-4h4%gX!N$f$L79@gS4^wjmI3YD#9COyPwW3U9sj +zR&oDZ-wFWjf;XDYu&})ybgI>2{P=O$q_NURgykf0!Fy$7ld(!Es_Aa31^pHf!}Y;a +z2JvHLfD@F3qrh$GhU#UaLC{xmfV}R?^gSgI8POhHA2fdN{x{c+zWbw{FJ%3~s^4Zy +zlfYF=pi+tc=e{s@%xPF~JoxVDuQwOU|dUVWPyajr#UN0sqT#`ZYRG;4hIMI@0 +zoF@wBc3FLN4Q-P?P#{`;f|ZrD&dWg%+Z1~wOSfI^Gx;;C_=YC@ri64P|pf>H5B+#tJkFqB7(S!2I_1|Ed`tdt|(5}0C*AjGVI&^LRZNz|1Te+zhkn?5?z!hWAOHBr +zdp@g>?8w(&f4%?GOD{Rw(fW(oZx8c$hlh;Xd3*@F=lPKU9iwY=zy9mL9=!eb+vVPS +z@0C;1!rnn4mT%s~?pg_N)M{ZFg?J5*7u;K-D)b_j%2>o$r&KBfxX>#);00QNB4Rm; +z5rmXb0njuPL5FF|@B*5J6rO+;ulVHlt%A6PatZ1hc&>;h#D`sqxsnp!A}Qd#!n9`6 +zCjGKE%oVJR^QHSJLjf!;z?BX&4j4=hV0qALDS%-{VB~&C7KtsMiS&C;@iI70*4Eb2 +z*Is)~$t(owSXpohsHw@&rp}9RyzvI%dpgCPot^Od_3Jd6RKa##fJ1q;=(ohNqUG9} +zlT3qkX3mRsZChO}Q~_BMfEfCn0_h%$39(`X#5lSVlqHO_A}Jx2<~peIsnZ2vw3ln; +zas{xZ#*}E4+4?dK5(K!Y_@Kvnx4il8?r*kx>8~z$HQD3Mkp$j6X>M +zGqRD3J}xbB4=4~DwugAhhR{i5Uup_3g2EgY*iR>}L=6JgwFgs&xjbx38l(eVL^o1DFW|*Z?HTZL +zA#F-FCOX_v(bf0JcTV;t7jrfxpsfQ?1pW$OVfzSV0mMzZJ3Glk`Xk&{90i?;yYw-h +zEG+x&W-}|_xg+4E_xr#9`_6W>KIB5G(M~#)fPpR66fRQ&8i*)^YUw75&|i3cecgGa +zctuG@l5l-vBd9SGQQ6oCub}|fYBlG&-)J-x!gS3F-9<>=@^0$A`JcK}O|bpR8kZcZ2+Lz>m(W|9(vB@=z9h2q2L&UWPG +z!iShXnGA0MEV}?Kx;{p>19`GXyUZ}s>3zn1>vf4lPz4zuq$m4NzcMy!J9e+YWDq3a)&rb99q$ceAP13KZzmV-H +zz((sgH +z&ld-I7_wWV> +zXjd69xT6>V7-*cZgolgVXyjd^zD9>kEbEQR4>q^j-%GOok54?nHkt%3Q37i#r4xhV +z>UN|L)aSFB5>G8fIXLPNm`hhc%X|0l_W)TE`tI}qm@@Q6)H&3rYk3ryqJ77_!`gjZ +z@q_P?jgdQ8*VRY&KmKv|lsnc|XGa36Q`wICOsdz>osP8|SKmz3s6X!ud~x9Vqesr` +zrNYGAZGkTUFPhN9ojPD!xB_hy06ipdkpo_s&veT{_YJXx?O<^If$WSlC* +zwzvrmo$ax_qXB-CEo@6B>r#2a(LH6dIb~CNk7!+Zti7n6!4!5M*^B~RWH(yhfDo*l +zj|7gk3eV^Kc9!LpfLD?l08drMXD8O^YCXm1x;$Zq6r+&Y<&B|BKd}=cQH*d6)%A#0 +zS#O)FSz>1cxh#thcvlg%!grLYOmt=c8n?w)NwetYWm_j^s&!^nrJzo6M6zM4i +zc*?`2TlC3;DO&g2PI>A~~s>(MhG`AF&c+qbJ5D=T$8UFx{A +zH1Ke#7UYTUDUJTm6P9m3YX055X76(ocG)JAz@Dea%FxqykT%P8l +z_TPyTkbV%T;=z@t9-rjAk4&lon;wdAx{ZBwok0TX)U22U&PxJPINrP9)QZv%uB9L~ +z=-#G-TgM_4mE;=eG=rUVe?T!x+RRAc&Yy^bD~eHT=;@*WmZBJuII;wvTxp~uM=?S< +z(vdp?uDW(9Twk<)UILh>^T>!6z#>J*)Qi9r=ept+D83?;9t;Pd6@_0Jq-RzjGWMrP +zFOl~O26!qjm6+eSr=;>;5pQ3!2|c#&>%YWb*&d?@DgKHS;kaS$+rS0LQAS*Tc1#M? +zd%bAg%Go5KcSmy7yYD~RruDfiN3=i9xanE4E&8B!f-ycMh6L{CxYt!utZx~DX-OSP +zsgyYa9i7Wj4}WvD@)ylk?>BhkDn}h-+f4!&ErEJ9`l9;!lddBjA>F`n@>tB2=>rOA +z(!pil%_QTsxcT5gwojigy{$fdj*9QU^18v_zMgp;i1EMuF}6Ir1ib7$xN`0~Bj2B6 +zS86gxcPn~w!PAWZUNTWhTX-+ZR;-c%Zw;@PV0ASh_E0Fg(YoTiFxe-nQJ0VGOb5KM +zUsR)>HnDVcBPR9)zPN%Oq``<=>bf6DgsMSY8eqM`{sev(0f +zfVY6V>T9}qOVbA_(~zSIDISZA%*W7!_IGy^M-`HN2_5J?`XEm|-^RxD63Vv&zio=8 +z+NC}^kBbSzQt!VNlfbDZU|`FsMP`2(lYo?k02Z$>$9A9o=UB(6j?Phxq#WBD8wV&x +z%uIwW0;M{N(dueXS&Zn2<=x`ET^#5#h~?t47}1ft;Ac{P%SbVjf|H_i2DD6QKow-+ +z0*_IV3V`U8o(ESvJqR~hmqEw_ESg!6_li)Mgur9_C`ZL!A+t-G4dbtLHaGhyNEeVy +z0S`w?FvpkWUdCNIPv2n9_K!UHqBbVL#RD*=P!Gyf@3=l5Ovx{`ec{WnPwFc$r#Rqi +z0KGkZFaT?%k_@r3;ui7t4CXcEN`6F9id_;%|2weCPaScHZ8iy9s00|}b>6q$_|s`F +zBAp>UL8L9A?g}CUA9zt$BKs2~ +z(`74Dzmlg4QQi2f#AK8o1iclg>%3SLkL4JukdMbAuvh0-vzbueXKhVtx1MICciq#B +z%uYP3M3?Y?2DU6=rJutid!^|?mUB4eY}^`rbI-_87O^}vdj +zDw;*m)Bz@dQ)g0iATMr4feb;S3#A@lQHo{-w`D--oLi*y1g^+?g&Bur4|7}7$%P3PeP3QHp$Z=lOkDwR(OoC<@lhTbDje$Tc +z*qhjsJyC_|Td+N2fw|a^DL_>0s6u$oDISXt!0oaM9YGaB@17^fGO4YqJwx;MQM#C&d1By|%8;W8? +zz_St*BL}+R4$7u7QO*uhj5J8fQ;fXQ^D_=f +zXArV|0JI2$k?ZCe=s^l@I|5iPpB{7(qVxcRk2mCvXHPp?1jXu~(Jwu)auM=em~#p= +zd=IztYrHpPx=7bB1O+%kTokP?ql0mtVi=L?Mvi>$TWht~xAwa45dG+xBM-72CV>l* +z!1ay#7pFP3(!ekd(htN5-k@& +zkBnEPo?p5|&#&dtogh1BrFi>N_v7hCqOsGk9q=M>KyhB6kro^8zI%Xfq_omS(n>39 +zrb{agU0rmercW!4{fRDc_Gk&9MF5OTD=qi|@Wr`euph7?(1Ai;xLhEg7bn2M@41j; +zzCP7=sK^%O=A{>1!QM`3_%5M>02X2ZCPhFNfR(GD3gvJ4wCk##+VD@FW~BGrib>#* +z1jZG@p#yBg(n~a+>`VdhR +z@p3s<#+7pTr>#!%U!39=>`;@yQ%fKUgKu7|MsJ^VBK7G~8AE!Uycz{I58@^O%u63A +zrK-HWRK|3(+h$)Q38?SYCtn1(_)i{;$saT8>+0k5TpnDxavSk!1vb`>WmoBx-m6+b +z$cS!qM~NEh^(2CB^l*LsP+I9GR3j$&Ty`U3+qqaTHN0awP}>#b1uu_LtQX8sWiuKC +z*~OgGg_#s{ML-Pr&0NHJ@wTY?4jPBjF|j&`$D-gX$TD>R3w;T|Eg@J)-HfLkGPz2s +z(9<>>*@pV)eKwlW(@Jvz|8HQ+0#@odJd#(S@?se`5YFNB=W`0L6py4BJ^O6hMG1;x +zw8QKJnM0BuE}fzniBjZ(=@MKw?si=kBeXySz%t5WM6Ws16eF+Hw8S7LYAwnwM-Niw +zAQ{R%W+pY8;EZLKL$C#CCCM~P34JJGdeYH@kjo&r?T{X{$2pWeh-rJ5o>>9Nj-m(6 +zSzyGcX@uj3vkV9gMD&rey{e-3R+gdeFTcF1`&r2AiZW4CN=YabidD4AJA@56aD(Rk +z;RO+p>A+8HOx4N6a(k`z%3Iz2|D4x%X8YKQH*Oo}S_0SV6E0vhON&%Gj-qVt09PW#RiSZ)Xk#;U@S* +zXIJ08fBkyqvt|zIMx(USq8n9V%K*j)%5J2z(ji_i9qi0}T4^F79ZD-Lj~4{%(n=E( +z#_4r{n3+y1EjtvY*QY^?s;+M1098m7bsBUmsu0=CaFa`%C(9(N&<-}|E)k+8WfcwV7Cj6Co%%M)@}DX*ouwt+26Q`J*Fs1&D1Xs7zaEF9!J-a{0l?|xS) +z{xW7CvhvNF>H5}IQiEH&(rQK5H#U0mXvtHIh`SI~h$`>17|GR>=L=_rVx*ZyO$=zM +z0)Rr;_5nS}#fre2h2JvF$cfk0At`@A#{sY~d%*t^(smN!9dJb%gp`_@B0j8K!CS;$ +z=`fk%vj;68J?NsEt7|8mTuN3-)f>qd3BGtkT}xfx|7O+7MM^+}O9CkNw+YtW0F+#T +zN(6s@kTC%xvqX#wuCJ^uGLnx3TWXbP3pcvIPSXC17kR&SZj*qQ03kUayzhGb9y-Bq +znz)pXVXV}5d +z3-*`;UQiejaba9qX=OB$En1NM$-3gas3_Kp3%`z+i{q#QZSY=_Hj={9d%j$zl=beb +z$Sy_EJ)sKm1l-(_R3T0BIgkZ9B7I1@5AcEwN^Iioi^wW;nIg$w%fH9k=0O+PgjSYN +z0tU7$VWp2fvR9;1>{_4Ol2?R0gfm9yyon?S)__h@~_UjCe9=BTI1_Pu##i&X! +z-L81Hc)KXB3%z2g4EVyi4p593M2&))N!h7fl+dKeq|jt(F_ki+2MIxuie;+;iD3uh +zxWaFg7{OZ5eWC~fusA)4B0E42V)h*u@J#!aK?txV6Fo?tE{Z$RY&MsL9&{1arncY> +zQ-LpoI(h=Y==W)h&Z&3PD{rmO^}Bjn0nEzr>SF}zYLKZ^lbstk^e!dc)z!GdV3f)o +zQHgjbWhEbb>uZh5pFG-a8`yHJlx*jDNuW_F{gHIaN$1nxNnk$59Z2^a6Q@Ob10A8j +z=uS7CbS~R}E)wv4e;$B258X29=JL8my6nR2n@Ja+mu-1_(*rNu`ysj!vAqJNl~#b= +z==yaByvTE+E?2Xs3PGP5 +zOhiBx0>O>RVi{|KZ+B-W-NWeI+1bfZsOjb~v4V8#&|7ZQPvvDjFYROOKK&%N-dO=I +z0$dAUr6QM3 +zC`P!Clu&}o<);}2WipD&P>fP$BQ)E9De9&hm`*tNEJiYh9l)a50$?A}gH%v#f_B79 +z&_~`Xjvgdhkg}m@sT9p5%X9P~{*Wp?a}jV!8HD7$;17uA2%H+!R3ODi)Z0lg!7XEf++*Xsf< +zlU{^3IQ)HXlUG*Lj|IKBvU!gjtjNn?Yp=7-f$KB$cy=obC;^&b_vS|JOVd1>Q#bYro>O6O>4`UWAKrg(cZ +z_aEtXZ+E&x4jXJpA3YkSmA)CyC;^xU|xMqXG7!;=Tm3OPPdox<^){2VipdccxX>FQEHqAdV^|gog(m +zWEEnm$vzq%U-TJb3jwBJbH@AVM{NNx`Qut?lnkU_ybkKOZX9clr +zGC(}NbwHEv_dm?Wh=~XcDHRxvbSZ+wKtQ^rTe=%01U3Z)=^Q8>($ZZMX^`#?>5`Uy +zZr-2o@A-e%y(><<&g)#~Tt2chM$7I4EFq5MrwRdoJc4muj5@v2jn6hc!trz}fA +zG!MBngYEnliB`{NK;m4lZAkQg#BpxlkcedzcbjQ!O{sfa@mSah{552Tkw$~;(Y$AV +zoP?O-y{fN#Y>a+xYw}F#{+%l2hMVCW+wDiyxw(&RhKaVqj;a$JRqcPu+2mj^ +zH`eNK>FX~EyJuNjtg7nStl`B=PJ1`vBj2`i2d9^w>dK!FVu7zl{ywfSg8o%@z7Kv +zwA)M?tCv-@g1$EE1fU`_s~fP)GI6^@r7J=qtWR<*$?q}LI8w|eOtKqdlI$r1EaFnn +zDSe2~Dika56{f~_Gq{z(nG;V{9Z^LbQ`35x$dUV!BhSjypzs_wS&NPGh>WNZVb^6<{V#g9K>cS$jHFNAf+d(@=T#6vVT7Wf`TR@KY?6t|F>n_3Rhi^6ZA|uP}4? +zMDnkN)B!Xg2$oDr)S6ymF=3TdGtk?7GADb&@K@RoX|GWer^Hr?(-3znOq4&O9z;Wm +z7ZoA_Gpa@deKn`Q|0vT%M>gsgapVEMM0fCu=vvvaOGymY|U +zPc7Hm*?%pYuErg35NwF|d_?0?=O!;%qTY(!@sl2J2>$m}*103!`(Hm*j$q$b(K3T# +zF`JA$xLOfNiundLJsb3#wNpv(XN7clL*`>@w3aaZFBeU`TCow)G!}P{KV+EX={Vdr +zIC&UAWrGITJE}?9Tn*9h4H{DlLJ-VH<#Zdu&ouKs)6D)f`X2BiS<{*lkC?b~XHbHl +zq-%I3>mc!4FtvU4zVuxdE>x#*L^M`KdQAeIm1~sya$%Ncl`J)KyY(afdv8hJ58A$k +z>T-f5h6)pU#U^AW34mcOD< +zrzze{p1D+-ABR;WxTIZbp8fu4^0q}$+_z$_g2n1D&z@)EZQk*)%s294zN)hDMQTeX +zft4S2=l2c<)&pjS8BJg>XrUXTcJnO@3v{x3j!mgQVwQ^DhV(le;H+GHA+4hoImqbf<5 +z%<;w5(ZG09+xe_AhD`g%Vvb>5Eh^si(UC{3mx;Vn+V1XIZ?fZ=L9OuON@ftqC{9cG +zEw!)+^A=Av0k^s2&dF+U2%!{qkI3;=2qcDi*<%#FdCDpu%m#Io{d_#EIaiWj}(6b8O|h* +zyV?_qsr-H!k0o7<{wL3Z3xd}armZRmIzC=@)q{3iG`-0B)SX4$Iqzdure)6_NE)z{ +zg^oi(_sx@(wFo@oP@DvsDOUc8A{)yiF)8Qfp?_bO?8xxnM^a@+_{X$c%L1l18^{D@ +zzuVOVm@B~N@yN&*mmI%m6C1i3YkC|!yFmm0fTn}>H9sb9&A-l=OW_U2)P-OnZdo={-+6M(9SMLd&48>Y +zBZ~J@`LrI}$ji_IP0sQ?{*xonaUo7?8fQvVZBokiX~JGSA#aLcle60)WW8~ +zrvOj$^C$&-j#J#AF|%@IHCF +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 +zd;ceFxv@yg#6#N0MJaF!1 +zx5g7qmab7xT5i<)`gI6`oAHdSR^dsRk&dy7zv(-{lnfxE5$_w@A6p#w*i-+wDeYeE +zw_EFmJ5>Wnw!xQcqCNfoxN~8e!E^mVatH@QWT@DGGuj07QLEB%vFEt_ +zG4<2?LA33@XL~{WjYrBhO*%!yf?27!64;3rImDlyZAfd17}Cc`e#Wg0ld@vZjYCF> +ze&EiXIA{JCE9`(*zvxQj*m&h4K5LrU5XviZ}G-RXXI@vGqxNW9N+pIX@mWOrkg^4r0UT`XC(MV=naI*d1ew9KR4S&3o_N+U3 +z{n^4?pBw>}VbDX$SH6A`4+%^U^)3FH-Dn`i3j~Ndme7rqK_sF=UhnJAkHlOB2qw11 +zL2Gj;%5^i?V28Y@FEHO3jr;YdGj1fSYWge(*$u#o@H9aHR{1OOP{LRQWS+^Zs&?m< +z!1rwV27RWvBfDQ`vyFP+(YsG0ju(OAfn%EWr?1z}UGKe}&LDUSN(1%nga;KF`Q|l3 +z`YM>X3H6Pc?_$$bu1Ds2K)f6ZF`u<2mrKu@ZV}THq%aC}9+I~4jCa(wd8dE>JwG_1 +zr$HJ?z)&H;;2YKm<51m`o@o1!npT~K=w$%H&`PZ7c3Z3BrY3jji0FW%bm4&JZ2{=} +z*?ToC)stW4(tu$~kOqIukJ)z7wTDI;dg|=3vor{4bu>mJpXt?s%AAxEb+~&H3DuH~CTqH(Z&*@x) +zJf20OwN5jL>xr=xhf02LH~U?B?pIA1DRfI_#|=K8ObVAD_vKP? +z3q9j|eDe04%MFaUloi>&6M2L#PI2kDbBAHtQFHS-3K#@hfuat0ZHW>7u>+e!Z#sPo +z9QZ!rjc}<2C2I{LeU`>VL9llVY(RPa{KJbMZ@kHZrI^G}Y9amftE*Q;4hl&{!(zNh +zdEN04kp4r;8XdOX*pq^$x&3!(bphi32X1L@ejiYr{8P#zs{o&kTib6A*li^sUef*k +zFpj#q7FL?b8LD4%YHk&a3{$N;-zui4(nu2dAROFx5*khkg;=wZi!wM{We*NDPpwyKw|`sGk@s0RN)g3Eg#rZ4GNb +z6Js)y7&w3DC1q{R&Cc$$AW}qC=c4Jp8y9y3y_$03PD +z+HHT5vSsnh%AF~GU-wrmSWko_{e2vEuK +zn(ZToiHTI#ci6sAgUzORM(HaSr~H6^SSIA2EEtE;bfbv3GLLS2UnHfL;$}hqtZ4LA +zx*OM=8$y5iodH&xotS^JCp#J8^q8?u8gEN6-NLQ!qO@nD*!b%{rzWn}lwKMV_=YI( +z99Pl~6;NnI4}`e=(qW!4IB4YkCr?R0++afh(3`?)IiPZr~pD0W*|W@Z2KrE1BI6Bs*p@W0MmIZ|1P +zJn6k^KGJ&~_Q3pauiW~{Wh=DPHVrHM>b4_tV85a7Bz9PI!AM_$Ug7M0lBO%wM9(&k +zp~}IUd78BijSCciI%HXY?C34_3Dpn(qQoNi5kfw{iP8tHb5l<)G9K! +z#s)V01&CUl!yuNH)jNs4m4-m;mUv_sC5Y>*(jECm1ofK!3gTF&`%NW=x3aRlE`EEy +zoGW(n^n_u^Hb$e|sDzxIox~=c>e(1UyJ?k_RwkoTmQ9|NcNAlUnP3;J7QvV}gbYpO +z$vUATA5fpudno;=wpQKL?@6){G%+KBDBE|h!=(`R=~Dho(X+6>3&cQo?7LP +z0S$_(k84_Bu%QU?iUifPYKtO|f$8;eLA&WpuJ4|OZpHmcfEQk`uIFCv019N3hz$eX +zDK3+7%Q-x+r$-FaA$>0z5KGhfXl39V4+o@i!vQGi0+_;O3G#2$!piCdjVdMtk=p+~ +z&QvmCyP7xm1NF5i&bA6y%}^^NaCB3n0Lp8CWzcHVs86nAaB5A;h-Jabkf$QaGix-v +z?QtnrzOZ+4sz2vg0bLySz1($NI(49^J-mzTN-egXn7drMpXV=h`!;e+t<0>Xs)M)0 +zkIR}@;yzUTQUb@^Rck%~G>aQV#S1p9tTcuFg%N9FusIl}kqb7xL1-klmX|!LJZm83 +z<-0EfqGtxjJ6pD!AK&c*b;HeuO=ZpV)umPILOH#B +z##MPH<%??=i_$p+&L#gSod4AZAB3|xco*8q1V>8G{27ykuPP!4cno5|<&1ET_c6*1 +zDb`a!JAs+GIS&`3Pez<8xsPv)PYd}Tv?+p3Mmy_#U2aQDq@$3S=Q#&tK&cE+@upK% +z&ItQ^(!v;N7ij~l^}5Sc9Pm}MbEHAcvjMDkzGa9_wBK&(SQDyw`zX*ywVhjqus{(O +zg8Ng@X@18}_3B?oxP8`$TtkZTFgtn$MjPjTzZS+*%>|=IFR65YSW<@liLw7x5n`}t +z`vA#Vd$w{CM_kCH_SGuEg+*y)E+s_+Gv~YO$$X*OU$|PNuCA}$Fu`Jc2oJ+h_!aH< +zDp-q6XqNN@=SE(Lg_A)Vy?7!t*$LP{`{549892ozzD2!gV29D%ZVk)J@(A4ga@eMs +zg*Rh5=+k{tPKWRBnzs%2oq@)3+Y~n%hdLXc4O5mCNk4Y>zMsf2aPfORXf4&=IFUqB +z)bX2p@k7!%*TKgI|6Wbua7lqb=-~%%Z@dykl27AgxHO0&>b(M-xaS#K&bT;NLx_+vwqfcgAGLfE~CcJ^IT+FFpA}vC +z!!WeW)3+UtkKL#n+^H5JpHoRR36uU_zuvN$at#H{Eiq}KbRvPQOfs`vO)O)R9~K&5 +zTLnNnU(fbmUJOo^9BSN-`U>1|t%4}M74hHmVy)%3z26Mz_igwGsspv4jR?`65>u5l +z?!1vz3ZxB&)=s1z$E) +zRcXRi_ih*Fn>c$N^>rUr+f#E)Wq4j*FBI=@W!66#Bhwt$)mop_f3w`5!XDfG2LuObZzQ +zxw$>9|EwmU-he1tkLyEkgPcpt<=Qve=JSKj{pGR4G@uv409punbF#boYv6XDPrzY} +zv?W1jEOMo=Zs_=nfUL~z*?$?hfD{K5UB@P61~Sfo-mGBiLPXyixQ=cJHrG0Dn3| +zVSM$TM9=@K<@RPj?LDxffUfMiG{4iS+%&(lx%TeW3UMQ!$=~RlNQLYH1Eav2_wifk +z-Y1;57YBS+y}(0;myZ7irLE5oXwm2XH!dUwH|rB2?pDfSz7K=z1-C7vg)B!c{5!&_5^fyXe`~{qH^%6aUIP)M8!r-* +zn}4~t=V>bbH^(DCdQO`eZ+^%v@^LB%*WcE^_uep0A{IQVyjlTTO5}#V8*Ql5<1_C4 +zx<2!?*kGbAphB_9n7%QNLNRi+-u(8M?s-p)mDBWVrgX#SL9xWL*Lp@=-sg;PB<4Q2 +zErBXZO2R}EP8hJh;Btlq4RsSg +zKm1I4^AFu}a}t}@e6bbl)nM-D7j}!s_;=y<`m+<)uMn~8wQs=8bd5za=l#U4CR9XQ +zNa4!#)gpY3ghG5f8zlK={sTt^QWV_z5oJFUtWMf9IXC4mA3_ACmEXz)O(r59;phBu +zde7EPi$Hd{VjWZE_W5Z$RWX#`S2K>Ego#lQp;c~f&RSaZ*KcpH_XZkTreHEG&Pl50 +z;@tNSr~Zao^)`6WQAt_nFOLfk9KwukC)KVk{Wwq}Ek{oV6xcI+%c^xQcf2Lyq3#PI +zjdm#K??{GPf4r +z;@@X0Z?ssrZ`4s~1P~f{p6d^w4^GeVt +zZVY3&fJvZnMU=2LTWMbGbXj;Z+?g5trUZ@8Gv7+^K?HRpA!tmhnEVX9yyu=EsnbbyqYU(?sH#6 +z$?e~+&i9DSLw?V5KD{j@hF2GTP@`v|kBUeyAx!B?Zy{%L(pP-%n`{W>=q!6@2_ddk +zfxm*QixV5|xlJEV9KY@vkzO!Y7{1JQ&>0d-PRYRr(^yke%8|cgh^k>H(F;5x2A)|l +zrj&2z-cd-0BnYHeaKe#T;9^o)Ly{pTkIz140e0~l%e|486${H@&03W>nl_%&$jRaO +zI&;rg;QUGc*P+f2z&0G6-=xjFjeTJ{r>nd6z+$LTqqHJM)hoW-tD{UdvC>5p7tB$< +zT@zm}sxxL=5Xi|xu*m1s4~RX`QAKiV-2T1jvex|3-@z?uN^V5$>>S~yZlyb&b4kPq +z6LIjG*Hq-mu_B4#u*{np#r)%%luH&PE+gcL)k`7&XsohTY2<_buLw4mqY8J2)&;(_ +zkV#vkgauFFZ3)Cygn&OosgyMdF#-#vhM&EXxRkH^4dPB)n421c=Q`~mnFet!F<+jY +z6$FES0b6|E%oeAKKI-0OVec|cEqG+9#X#eXUvKXlK8Nn?%S)Gc%n)MhNQ7`CRk^KE +zsh@qUFpEdzxxwjD)0i%O?Vn~6V#*K5jzeNgtuA&jb88cLc(Y|z{fyUO3;HYY^zAMO +zK75b`HTwEl8J82$7eOAjM{KiXDEB9I +zX+{#8JI2OT)AJ@am^C9_x~0>i6c7j~hKHMm))`h;IbHDDOjvkD57MG4H|cBt;%*Ok +zx{AbNm02*e4%M?DtT$%@^Ml{eJzj4Jr+z~*YQS;u-$sHU<8)CM?3oH%+{R|QpEo_& +zyyZ;5b9QWgSF~z;N43NT7o}(eF*)Fv8F_{p7^CjJFby4K0g)~`S_!@isy1V{fDj`V +zzaqByNwa$`3k9%rO6T+f5MNd!cwH8@*VLXR$t+0xaO&ALUvGkYsN}skWHr +zqfDyje>gkqO@4QlbE)Lh0U};P46kpL+}}0xu50}LebpGBi&OvgJUI!xnxl0s{Q>Z= +z!aT!|b&usRf|$nAZ(VotN)L>COe)L5??J1A_K>jRDt})lyYU(8XAZ4?_vZgOh|LIO +zw{rvkRKxw;58;9e^T*I_Vt9GcFEuuNz>Cm8g1NTe^v{|b8w|oP0igH?e +z6T*x4Pmc17Px*sls9EgI+(&v7&BcHIJ^-b1zFYj4&kpv62aIV(Sd3468gIa*FOo8m +zTQNWYGa!CJfpULwq)y)&`u7p4lH$lznReq@gfDeU#_BnTz)u(M<^Bpb;4_8Gag!2| +z;i0QuiFMCu3rLUX=oLrrzcDo%4jFT~UqeTYc{&WhX0Fq#e(*^>hoC3yzbX5+6^Ce)!UG`3`zUj6toFOCmHryd>>MgfpRcUykS;Z2{dKj5h8mr_5U#OeBJ2e@`D4%qx +zcSc;jB}iCNB@3E=c3T#_Vw9a?^$b81z=W)=z%E(Wrt5CPbFSb6%Mk6*(lA8o*ugTN +zxiyve>pNk!Vv4$;OBuxHYBWgD71}A!GeaND9OW5oAIQ2E@5{~Ak&^;)E3=NlhW>Gg +z;3lHBMzW}+=>F-|JnMe-Ig-XHA^6LG-}~1K!n)HuX4EJV$-QAQzLIt&DWZ2U0~&f; +zddVLr$Hq+f!V=;-5^WWJKtR7mj}J)2}!2h{KA^I{(ELS=7=~2ztG4*H7xAv@CW>$~X31b1puyerhYz;ZJ~qS`gvH +zd;E576UxaiVJNM@AmmmdWq)VWfjQ{N!yUeJ2xkwFGS-R=>;y9mM?O=$#y{*A`i89e +zUZECJONugx^)MXwEVdiJPAOj&Ab=9D^`&Ge5|an{9=^iUbz9Twep@WO;$u9T`YhX4gS}6E2!{F49!WcmganPe99z=T{ +z^Ya6w1Gc{=eQTBvue3!I9@;kSWo*|M`=@mn`dhyCRDp-zTQYzYWF)FU5C@Q#k +znYTAjKQdm0A>1H*JMW +z8;fhJzn4XrEz)J?GH9$6j?1N2+okx8b@wy}Uff;>+|Uo=p+qnYm800rkp{HidS|x- +z6U-bIcUnlh^!H|4s`{%xP3^x=a8znXdzFmcDvY>20o##w`8fiQ(&iPkq^&S{zJ$28 +zOvD(Bc^1>|_U^ZW!DB!a3!Niw0+gH!$`fq;)RcIbQRf)H$_v1`Z3@F?ccB~CWph$FNF@d!MD1}Zo8qU;b +z11_Y#LMWJ~ZHi1JuEw}qN|OXB&vT<~qfGR>*^YTe;T5Mod5%qjpa +z8Nz)&%Q1ky*_m*QfN~A!a&xP=rriVJArT5@RN%mW-EwM3@Se +zx6!s*`Fq;kIKNnj=b1B7-n-0B>3+ +z9{Y=p&4%W$0QlpDI0|N}K0MtoOt)RxD`p!TuM;DCCdqcvm;{&<6MOLHYz`f>2y@iB +z-J`d{(vi9$2Z>lj37ugwU({NAtR%!Kwz{j5fVM3d +zX1;blhf77@StnE-M)GeN7Cy)q8Lv|V&8~=Dk~m1HoNrtGOa*bh{v+H| +zAzQ1Go;mbN_nGO_sM +zXOC!SdI|TEyl-M{KoFCYbe+8UMM1&DGbmBF-x_K)g^x;CT~J#!AIfZvZR{WD;440Acg5YvUc>{Kj#-(?t>fx?e6B@ +z6ZnRRro|`XCx>H{1`_JxOWsOZH9U#KL!Cp0tp&AvMT`QPrA8*d0w&@tCDDl+PG3!| +zYe1q8U_yHdk7NOc(Hx>E5~gPJ9`7^o7I;h*KVVMe9u%69?*pV3+bwY(fwqci?orpK4@L#W#J`$!GQW^ +z8rpLj_Fan^GR_oLv)AeewlN{m+v7jn_I=Aluh4ubfpM39A_1pf^Ln%TXw+M*73`PF +zZ}d&%In7K2df80I6wdPyWZJ8`rlkW(Wlmq>A<|{eI2K9iv>nx{Ll6ICGK%oQsnpyH +z_N${&dOx3FsP|hbklc9E*FME7%DY2+jS=WkOFSq<*)e+W3x*y{wFaMM!4$5F(Y7?7 +zF$TXTPyuVdQh*He_VM4Oq1&sbVl1Zn6xztIKXq2qRf|~uH~jD5lmCW~K!*Q~V+Dl$ +zo@oXoJ3RW5g<3aO0hqwC+MYq~fh*mQv$rJ-Zu!l=isEOnZ!;r>LQoiDU?*QC>e7+u +zNMUA@Iwxzj#4QDE!|*xQ+9}5_uH#=CaZ#!N>2U-w1MCjOIF-{Bnf9gDxVd;)Tb5_f&sIUX9_Vs1L%-F +z(%(&HtV4b>{?aD+!2i8ZE*nY4$ll +zC_6BTp875H3~K#)Zhb`?@(G@v#S@rB21DgSy%>%tf#R<_6Ax{iW|BPnsi#fCbV>JmtG_Xj+m3}ln#lMXe>H|U6c^|-(>NvHN-pG0U^&)Gi@W_NKpf!DqySw +z#T5xEbqOS@L}F{-MNbl=De;rP0$6c$P4fkWoP;NEgZFuO-`!NBONgNO$tj2}98&+( +zxt@V|714i*6lJTt41g9q0~VM6yU-b*gWd#x$jm-9C6X$fn1RrSdXR*pIE)UV<4&yz +z&BMzTaC9QocXTVGK)uEHQhfl#=F%q5fx%`P{~PjgkPm2yTZZ4(AiZ8@ty73cYmB{z +z?hI=~ERI4%SXCU1f?k=BfWkjsPV(`lm+;J53G|e-C8%)}Cre{^M(E#CgD*&aVBcZl +z2Oy&Em(Ev#KmafcM_AW^ECvk&yCn$4oy!c5upb)_r7>gP{IfBCfLJsDk&f@t=ZQo3yy~A}1~R3Ue4jAuJa8Vmbed$0 +zm)RTfZ9*PT2A+E$BGlax;rFp%l&*N$|0huy*ur0OI=NWhy4YVXuw4(-cut>zK-Wb? +z&j0XG2l!t2VODNTGK(ajfuPrcH-A5;(Yz)xBL?K}drxP0fM@%wp-Hqog>Jg>~E@IrwA4*Ya0maL^X4%tfkyL=)+yp`@WhYY{DL|x+b-cqkQ#ohzXx$z?m05G7s|_Oj>9) +z&&<-jHdy`r_`Jn{{MT~7#YC078K9Oib?>~YMef{1E=xMUhYu+`92^SuVn3p!2J|?K +z#H{TXlMzU`kU_6ypKpEox?rEa>$(Fn>Kh5N6BoVn6R++FwYQc*cN0#l@C)PI8xhAH3vn4gBe4e$cZu==IW4NHTP(A`m2$t1w~{saBm< +zXiMl!ZbO(*0@mQIVsSb?2jHgvQl@;`0K9i21=q?_j53#?n|2!sWOy$$SM!I21BQWP +za9xO@GCP$N5X2}o?mPeyu!CQbs17}_a14?*Awkt9*@=kAoQ*JjIoGFggRL|T#`HT1 +zH*LMW10Aj@(i{Ar2Wct?JR;J#+tq4Bt8J#`J{kSz?O&1b*ev{q7syFiYjj9gL_5$m +z0rU32E_L{V>$J+V8DcMcwZ*uI12v&i=5lyZpO*`CKFe{;b1V?PnVz`!)k^5#>e;6V +znMHTVT0QUjQbwj&$~hT6Y6?>D>cu4z#jwVizP^f~z9qV%y!ZcH0<^&rKrR +zz}8*b8DvRz23ad&%94EzMUs&{vLuAak|m3;P@EBmIs0wo0(Z6ZRViYFkjJe?OmS{mrxxkI;Q5XU-9Zm-bQ{8xPKjoI{vpVPbeM*VTHJZUt?de*3vHA(p*F +zn^ZYz0jc5;8v0!Hn^InA3x>EnVAq$)GgZ_@T0x<;XAi+JVKX!6A=XSlGEj=*HP8Qf*$ksv!rq=Wdt +zgM(r+_UIyTP$^TRmS2FY&=!@8p4lK`q*#n1T@q4XOskpe+nsGR;V11_m-`TxTIQYo +z&Okg6>jEnZN(Itsb@n($7;Hr^U)fd%Pof)`+B>x!-0&T1D17@(mEG|3M>*cl-{w_m +zj{jo6aE4kW;yp9}@Xy6hy18hnYjXo-jJHqF +zeKhvmgzAC2PPe#4D&lz!S2v!KtMrQxYI6VB+@5;-Bj73pj*z_)vwCUTB7=08LKx32 +zEBYNkE?~~d#c;T~yug|D$@?iN?1|)1+uqx=>XUta&pg@GR;Dn()l)xwZArC4hOYifx@)y$6+{V+~V!Wp9jpS{A;1 +zcRTdH`gHx&W~fO>Ykl_a))W1;=1)lNyJlD^+X=7IqT7{X*%A2ot;-Az +zKIfjzWDbo`HuqI^-(QwH^k2^;zVnuLDU-~@ti{PpOO55?+t^_RN8~+p^$!j9p0+v# +z^%?qI={29I$-RHJM#7Dj0G?A3n>0KW^f~CI^nyVC&|^Vq~vBH~A1Fo{oDNTOlA@-bP5E~xY!2=V$9lFGC79oVivW7znhU(#0eoAaoNtPsyhl=T9mrY +z6NL8Hp@~29BLdZ;&UIgtmX3C~VKMnQ2*>*SEN!~asKlcliknlvT4{?PeX1~y2;bCk +z6>_t7M33GfDwkV-x6aTNKmv1b4KE0Z>q@RWcr69N#W*kaOZf+Jr|mc@*HyA2Zi3=n +zA&&XoG$(X3QS8-xoRGh~Mt)3!efL9)07ZZj779D~|`CBo%AIvI~fRG?1>j&4@? +zX9Vqh6sCXWBwms5MbojTe&6ah+U_nFnVVWqlV;LBJ&jc_x0LgE8!d{ojM#y9gp(y3 +zc2>_snL>RH%kjH)SjbYnbEVa&56?nuDVUU}i_9@HOv9a&xoiEKd`j^cnAc(qCUVSe+2@6)lkL?b=UX~&mp}RPo~fLbmaqo9nIGUR#U2ul;oxq_z58hKI3{kjm$Q)J +zkgvYkGec5WJtAs!S+tN+jH%W}_3cKBqF>ZyytUahQH#A`$is@|jOrhZDxKS;qdoDE +z({SY*5yQbBdG&`w3zJpy7n7&2K_vyzz0DKvqRn(#0s*CLXCGkrde-5&`Q@C_61dGb +zkE$pXis@Q;$)yK{R1FbmRIttD7p_;}OdhlOpKVS1+}d`WC=cviSYO +z!eIs8^JniM_Sp=wufKhA5NKuV-w2yAjX&hzAs&L)_6t(jeKm5yn(%34x}2>it|>wdpKzizxF_e++7^g_LZz2c4+U +zJ^P9jl7)2-X>Qi-+81>>gdZSK)ju3W6z+zBLzR_?M64U1U3M=rNckli+s_6BvE50Y5Tw+A@MzajC`{Zs +zDo +znID%?5`gkeY24xyVP=hS0OR(_9HMx+NmXh`32`c7e) +zhy#`h($pxg7(3$hTc~E32XHdNcC-q{4^@5|*o19B+&*9PuBWJ*&JaB&MwmRoPG92v +zeI$a%X);)xhj+|Fi-X*dKD(h7ICi{=nHS$i59NC{EXm8AEP=NQyg6=9lJ6l`BJ3QZ +zGGTS+!n=C^fP?j0I-qk0o&g?)#Ho_iZnBGOntk70H8&E&Q-OYr5B~YH|{>5yos@nc&!%aN?sKt>>iT4EH8E*?OS2d@SO#W>6@-{X{ +zY|Mva1JAuBlZDX0{L#ZZ+|cR~J+Hw37QG);C>||H&l{pyd{iJUNQ6gJ^2Zv6|Gb|P +znAGY=HT`k^#QUE++*iluKX4V&A_mZL?z!USgTbr2lMYC^p^v=)@TY-TB86_Fb5u{i +zDi!K8Nbi!$yDD++IOn%FMw<TZLnBP4KG^_}$ZjU{5HTHca1kKR)6I*QJr +z!$q>P+xRBZPM!CFOEmnfEH0m-0Z(Ux?O)38U}+BzQ6KEMl=~TJzPYKR^bDR-LX4So +zW0%wDu{utQ=+(e{+14E~A(q1DLN;n1mkRTwhj1KQ@KuOEd?KB`m`oQ`OCf{gcchh6 +z!90+t%4(;C8Xx8)w8S%D_5=T-J^uW+qA-dFk@LuGeBP06QI~1l +z0JgX+d@eIvehFO`nAIZiX?w6+TG2Ld%kR;4Ms2Fm+QpRVT1O<#g$Q=K`B0bH7w9aV +z+va3vT(#QHW~abw`T?hZGB^cPgU1kM1<3P>n3%IQ0%cq`AFvncPY6M<5v()WP$_ts +z{pi=~QX>z*f2yQ4xy-1EI(|P|{B;Ao;E}DZq+-D3zAKHx9xgx9N3kQ{ntVQ969!Zr +zweDdb^h8J61yCt;*B}P|IR>KH-y0L;+4&)b)#oOh$o}0)Sczj4UmMwp%cm$QNnUa4 +z+Yje0(yr0OL7G}T^85)x^hexN;^=*SE8AK<9==%}8%0fbWG@ykPsVvXcjN@|hC74V +zraE$ZUMjWWGh96K)VAB!a45P_cl3a$-HW`Lj)_Qhv%fd0)3no=UZpHCH1+N=&+P=0 +z!&Xh0tUUJ6-z4k^JW!h(_L*dG85NfpToEm@D*QgE%22jL$So%-E4p#)GJdJkL~2|T +z)E=KgVx1k@>9R6wHm?t~WWr0fZnnq_1I)GcIKWKgR#0qT`4c;}7rbvLyVRehZVB4P&M6)mi$Fp;kfqMIcmN$82!d+<3oTXwmE(>@`V +zA~TFo8P)*&%E@++v7{MjaFUg$&}|d*`*IQkPL2NMd7syw5MOAdZC)d77c2MLtTCAd +zR%Cw~O9qtPB%46*?$%cpD&9HA-b`e_cM-V|Tc4+-r&{bHa(M-QZ37QtdDQ +zY`6T;%osw7txDZZ_B*g`)%!AWX_}i5-GI*5 +zRWYed$oEc|Jk>g%$z)&HY}P4MV*~o-2*d!f +z{^Bl#SPWB=x@1X1!%==&L)AnVR^YR>=kzX%mzE$4E1*r`y@Uk3TTmWUpSHk*gcfJ> +z;rq7(=i)WyI*pX2Mri6vmgn~rerE-G!sPGyS8Ay$u~!qsjtfoDS8Er&!}8UoUzw{qLmUJZxMQ@TK;t(0kqSx4 +zG&fGR2&*D^MU{pCC#Z19r+`Oc<|{!Ov}VJy-g*54jTcDl)Qw0NT?kYd=jd$}Bq*%1 +z#2u)J&01+O11qhD#TA{-5&X)NLNnl`+a$8h0P*3FkWNPaLl{B|C82Xg*HVTuf6DxG +zb_VTs`u$MGRaHtHP04=yN +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 +zNy;g(I|3moJ>9so^&E-mpF +zzn{)=C7m2T)GazlLmk$Uef!Ua@Y4ap;gLVYGYsw~o8+RKi?t0rz8SNYQDFp78dkac +zGF5WRUiXj^(K;aNSwYH5J_RMFReocdB};|GD-tnlTcB1chLVg0{U)peNjI3ZHGl0n +zUDo_I{t&KLZ4FN?HgfYiL!9Y503Bg9@;#L&Pg9InwI;r}vQ%a8MhUOhc-%xK@fRp1 +z&xWVsc(41WBtEeVLd;9ixCr)y75Hw +zo$R&8Sm-HQf*2fOT3hh@&UhU(W4!3Xot$z2ZBNS)NYO?U^9|m=VL=H3lG}F%LX^ij +zK%Z+aeIz{Rb8l0+;TQjaIrTiroM%inK=}2u1n-TWi6~K$=)DW@f(sxMS+;Nu%_~fH +z170s20~aJ6@$~qfboA@Tc+58f=-_+#X{HTj^gX_qOG%$wO`< +z-!pA!V(i2TCJ)dh4|d+Pq^G`%}JZ +zkkaU)lTkk8(@}%NI1n_)75E$Ej_zxIaubN6R%(eJh)H-dUWNCp=sP +zR6cy$BLH`tc=LTu8aBrfx4yYozRVsKJ$RnbY^{CdWh9-;19?x$vER`cj%C}B>QP33 +zdath*)+NR%5F;VG5?wq+yf@TYf-@T&If=OW5U=k#w2;)m4t-|ypf2`yy)@qABuF<*@EvJ! +zC~U1T1h)e?fhyyv=8iXxLU5g1u4A;-#xkm?>*V3(d%NBb%mD;tulDw1n>ibzU)zf2 +zJ@0#_u5GKw^z!{4?@eZPMy5pF$rj&MnWCMs%7CVDiLdRs(-}9BWm&L^ySFrLzdh`~ +zbEx%ER`;e#u8|@DbUSGKbG+FgBnE8Y2J5Wf9QxVtxaGakOr1xe5L_*o4aV*yWNAOx +z$9$OfiJ6rG4^mqNF#}Qut&M|_JWQ?_(yVelwWY7S{4}6V`P!W^56;9~4MW-jeuB{} +zO|zJZ8zUSeY%mB!9=5+%*;h4BcdAMMGTxLd{QjAt2vaeyR!92R{1M4VARyLP2jM@5 +z@!2k5HK&aC3LP9X1_04bglBV|2M{0DJu|U7%~SAo*QHNko2~MMY9(wiX?qHHb1xW| +zY1$sqJnS}Rv{{=0OxrodqyGB&lNb1#9fPV3XLXL#cOL>53woG8%u7Pnr2ON*MbVT~ +zYepVSLK}t6HkUj?iEOd8&RL@*t5OPkkx%!s9~PBU5G_vH@4aI%7pDprA~B(;uWBkXU|TAn2CVuh{Pg)z#|9 +znHAT=yuW>c{|I5`F)(E8)j_e?oNdaDWCwP{Z%U2h@D2fmdcjOk7LfudL)#c^-Blq= +zGp&dX@_|)sqcAG?EA9#e3-IPh051Ua?%2f?%-JU2f=cilXbqE0@s2cl1T7&PHaCX& +zP9)|ck3PCJo`RhI;4Kw?R=*DF+I7Wk7CW9NdjdON2sF5_gL%?lNQnfxC(z3;)u#{z +zOxSxw+1v9FRZKoFggtCmQ++Rq1!{u^^z5r)@mhAAkfrvtU87}>-XH$Yj0u`qKRon9 +z*eR=I_eJCv7V7;yb-nV#zPRyi^aP-wBLHrjOCRbXALJd`HUtfUY<@WvBM46PuLqS`Kx$3uAxR!Z7TaGUP1}$ryN^q=n6u7ytJ3*dKy6ToI7_KH +zLri`EgcKf3C=L+mJ}ia~a*HLTm)Lsbjf_TA>uJ4woEn4#7ow0%0oj_=?;4UW&wubs +zy(5k3TJX6=q*yCIXt9yGDIE}t$9xA<`r)a%r!^fwT_hjOAqU57+^iK +zjDSW0j>z(e>WsUG0ay7#qDY9_b_1W5(>3Nv2p +z^89I>YexThf78L!umV*fYC2|wLz>q*iTXh;_!57sc+n39vLF`YFp8F+e-d5xG-(Lw +zu$#|YBKlszCI#|&1G8dZ{*9uW)uy9N8T~~;8NaJ$`JYz=x?8T4ke}cKj(2u@ybhHI +z(9cSnVpHdIq9IcYWg{lgp8XcII8hUWHIPP5zWJi{_Y*5~*O_n#LD=hRY=%Aj23bnn4m#C((x~bFbUS_Yi;=;C7h&0 +zfLf}SJEzXcm%T!kmi177)C82b5En@TV46mL9E+z&bPGj0C3f^R&+c%u1)W^WV`^T$0_3Tb +z@N!nCC;)?khWznUJwkX1jNMpl_151k_7*S3{Wkl*?-{^F-rnNbE&>0By{6fldXfKB +z!>L;XGySPqEVC6jI5%({YXwB_QglKKEdxpcXf4~{RXPpdum94J?P>+abk@8~{(Bt_ +zpj<>?(ZAPGLtV!G`AdH;@MDaD}5#l}%IJhwCjS%PY +z04ShY)Q_P^jc<#-Z%m5(nbu_9T+K71ojP_G1f32>aL=Jh%oOiCEHN8 +z@PCaxb$O;W!J4ztDsuhRAq()_=E#No%Nwrj!|V6sDB=POavf{AlgLTEa|OJk37z9a +z3%DJDHKORR=l?FnwKEuZbL7*4zp4mK0#*JgF$p!U-CH(dl;#GiIO9Nk7c#eZ_+Kq1 +zAW$z7foH!r%@z6gn{lv<-I&26EvOQdBd2rLIa-qv1cu|>?>cEwCVcZgD3J>LfUtu) +z&}>%17KK+QvZPl)`{Zf7J0#DmTkUH-9Ob}GY^(|%rQ`gfJFSF?fpDW%rp|HIsvwK +z`tJ{O;K7w!d)bWCPqfelW^I+yvfMtmj*QHrH&$Z&7B-pGX+0EJKcqDsesnkJ9rg?j +O_`9sBuTiFE7xsUaNpz_I + +diff --git a/ui/src/assets/images/argo_o.svg b/ui/src/assets/images/argo_o.svg +index 0c90cb47c..c7eb277a0 100644 +--- a/ui/src/assets/images/argo_o.svg ++++ b/ui/src/assets/images/argo_o.svg +@@ -1,21 +1,140 @@ +- +- +- +- Artboard 6 +- Created with Sketch. +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ image/svg+xml ++ ++ Artboard 6 ++ ++ ++ ++ ++ Artboard 6 ++ Created with Sketch. ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +- +\ No newline at end of file ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/ui/src/assets/images/argologo.svg b/ui/src/assets/images/argologo.svg +index eeeb3fb36..30ad37999 100644 +--- a/ui/src/assets/images/argologo.svg ++++ b/ui/src/assets/images/argologo.svg +@@ -1 +1,117 @@ +-Asset 3 +\ No newline at end of file ++ ++ ++ ++ ++ ++ image/svg+xml ++ ++ Asset 3 ++ ++ ++ ++ ++ ++ ++ Asset 3 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/ui/src/assets/images/flamingo.png b/ui/src/assets/images/flamingo.png +new file mode 100644 +index 0000000000000000000000000000000000000000..ccd6d8726e3c57362b21df5ecc6fcfa6adb7c7c8 +GIT binary patch +literal 5863 +zcmai&^-~nk7RMJ@x?`8_mhR3aRl2(tk!A^LSdernB?Y7fB&B2N4nd@m76hcb<1z0K +zc<;`f`~BrRbMKjR&Ye4-SZz&Jd>kqq004lmuBN2>tkCBu$HI8tlguSVo(1TosIHIo +zyn?WxF#rHKM_oxl-!J>%i@zV4^2%W6%(9m~Tk>ncWT`MXO@R&rIU@}=%laqC97sZ0 +zUO9Mf#)mMt9~ah*Fqm8RwOIfW6A>x%NnhImmD#|A&07v<`;qgGZQj$K;*Kbl6eD`9|`atxHJ? +zXLoB_1aTT{@stEGY}Hv_$PxC`9t!p~_&yv`-BSX2v3kgZgd;E*GehHa_~pvGUmaM? +zEz(wJa-;IwJ@7j=(3N9y{z@bwQr-3h?(?(Oj-XE;)U9E5YxW$*Yss1=RtdgjBs`Ql3$K)JA +zxeBsH15p`7<U0HWs^^!ZQ0+vc_T9@fMdPlXsqxi#yGXXoCmlSL`P +zB^xyiP6qOx8I12#dVO>Fhjb#uimB0!!Lw_lD{~WjdFV)#wIon<=3=Z3@i&&^bmJo_ +zaH6CgfFC$0t&G*uPkF6B1G)D#Sq@YkMQoGfHoFnqxMYU(d`KQU;0OE?ny}c?Iq+{d +zGM5G`l@lD!-5W>Fc(OLtZ))g7^jqeXOIOWHSu*!*I^Ot7(utYSu;V(0RMg*(c94?znn^D;x`9e)EW`7pIcTR4SG-G~ +z6+*78BW&XIQ+$+kup!%+o4>GYs`dy&8eCLy`uq3Rpi5iBtY@xXiD~Z^g+r6KN1rr +zf)VD$yELWv!DN6|&mEX7YC26N&G>YqOAm+a9|cMhTxOkpwYVNNvO7{>qpys+gLIB0 +zOvws;a(1sqWl+(X&w_}t!!+#k4ATo~(Z`;pQ2Bf);|J+o@&+K5bmE6e9PYbKcmA1Q +zH{Xk)90F}+>P4~bKZ}W6*e4A+u-~Q3{z>Ba{Sf4}FMRlFe{ol?>`PLc?R=LSh|Z#X +zu;~%+p5}|*P@&&TPBz3lL&9Z6GTQAu?<1LOX+CnTu^>!t_GIXjXb+bH-C1vuK|s(~ +z+dL0%P0qv*ANwhM;s@~^^f}Pwing3A6bTksP02-h#rTD2VoZY +zwq(ZNjRG#*7y>4y9qXOiI@W}Ot`7os@N6v8mk0cohC6l=JA=q#B;u0u#K~>>@p=d5 +zs&iw&0I&{OC4gH@Rz&P^g{7n!CoJG6W^#XIe}>3`I4QBj+3aoi_|MG2jvIU{aW>QhSG(aPvoQfqp?^9yI +zgvDey_C!Pf^iP?>**)-T{(x<74DbWSs)C*9Np1^Zc;xO4BSMX`>Eh=$HpHN0k2Wt> +z$_rKVHlIUTL~USn&tsgPNoFgTz=Ism*Xh+jLs0_yO4J&sRGLW_U#$@Ku~$2tVEXon +zyL5+?3}BIxf@Uuk-oQwj3_twMSnC?{PDsVCsN!5^D-)p!xO|1utCm47U +z4_)6UF&jN2Y0y*?<ZT-ZwrJc3aL=i&_$4o^>dTlPPLGY29c7SOFKW +z2J=+u6n;+Yd+*PJLLOg0L+cX!xBoRs?n>S-<{=V%w_GJ4WXdT<7IOZFr@ycp2XjXI +zaJ}9rR2_$So-EZ&`30Yniof${nrmd4@DtfW|C7t-cv4Z9ybNY$AamTDS)Qv*6!Jh`}grQt(d8i +zA?DAB#d{^1rIx6|oP7d<8ezD9J_V|m_2;*>Z>A3B#zTecm?22K^xxG0_>5EImv(Qz +zcgk<)Ren4;VM|`@FfACPg)=ZYTwwgj5ugRJ&b2pg1K-5pK)%H2d^Cy6uPTNdUmsbf +zabp0^chk9fmpgAfq1UTgIjdJ`GjGSd1;GDzP_Ikz^Ehsoq3S_P=IutvBxr82Yw;NY$!2$@5u1z-ikq52kFzO6AK2j +zWzB|i@a7^pT12zs`fU#IHV=Cw*3RhmcFlp +z+Tru#bT1CghBfLV*?P +zz|PUQ>@7zp)Pn%DSxo*3VHvt^CT|=EDzira{vNcisV!=+>9GuLNsFg2*YnjkoPW}M +zwt{gu1j7fChGBy0XmW~J(`E2uhIkvrv9zyem4k#q@v@&OwaZdI?al&51=ZB(;hWtM +z4+dZMve8%VwV3dD8)7N*NXAPN%oh_+c}8jFX&PdSN)RZ6et0$IdtV8hso_weS)qbDiK27_OZyKB6FVcTzF%Cf+V)l}EF64EqlI+$>iFZiIL+vh``)B2vb}<3e`17**k>0B8CQ9>c +zskXmIB)JJ3eyw`~$ED0z|SbY-y +zT|~tt2VMv>*Y&@Z^r~4)-Nj7iwVo}A#KOV99I#|oHbNX<)|VXj7K4#v=G~}W>eQNA +zdK>DhQLrffa==RT&^*PrODdhaasik7jR{I7n1?EXi)hob +z9T-q`+T2I{_Ll3{oX$PZtFAbG8$Ub*FD*^;$au^akwD9>=kHh%t8q!nDM-{#prpD} +z4@H{7iA;h-Q1gDRNyL3{F;$&1b^@rj +zr~@h`>>0wC^Sf&W#52AsbH)=^K^DR0s+9~Xul-&~Ud1TCPS?~uSQh?KqehnaeLBfVZ-qERuoH+$JTjm<(f|ny187p3nZpkZk$_r1vL%)A!C5`j$M4^?t>g +z)VCai!>n2#g*A~w(~0_(xBK{J2LE*W2x%DnrDsx(33MnV{;H=~a`g`PzH>-C0N3_M +zXqaN$cHpr1TVS)7QkD(~_%OR8K+%5n7KshddC+ws*Mw$;{Pq&$V33|!T=+;m#XCIm +zVe+o5BU4NxZkH@PVHp`9bKqG>*msPb47)5zZVtNChkTk^^eD&9x~BkMrZO+27Z9ON +zT14>{a`8$x|IK3687T1+> +zdirf2df(4vE`JmfEaTP#^`s17VbSNyy3$qCo@Q~+s=^T0%l}zM4tN^qT{)iw`_A3fJhnoY6FraTjC3 +zf9E+iw1r}liTbekM^pVH^EY#)gAT9lj;^cGw2hS&bvF%Er}yW^r%j1LCY`e?r#oKh +zl#7*stg0?}BawX)>OZL;L!HJJUO?*S-v&gVSM224aoYIiCwkK>C{oH#gf_`RMbj*{ +zhxj`rm7=kLz{&{MR^oEor9Ux{kdajg_XVZ~1tZYRuu4%qe_H0$HDON6Gea*@%(Aj; +zF}zVN-L}SqF52#Bh!B0-8~U(E`z@1u*W`_)$BJB#|B^R2Wtg49_vwU +zhUK{emZ4vP@x;_sxEw%0OgKDv!R+{~gZa6)!(Rpqc?9l_RKp&x1*~REL{3_Vokmm* +z{H_u~eq(cE>2dG}?Pz}FnlZCD02`TQ}@&HK__|sagT}BOku;xu=Claagq^dPsUfJ +zsA?rfU=dgJA+B>xo^k=h@jTLpG=ct}xZj8`ziqyRc&{>63y1=52X7kTbbwgHmFEe; +z`*IGwj!1TM>EQc07K}BB0z5!xL}?n&fN6^Sd6Wwrh#D&h5N3<-0@w8v0M@zaNCdh* +zfu3y)vH(jghjDxS=8L$uxoLFjU(}av)vk9NUJ8IUIC|g*pgx|j9vNzqB3-Hqv5E*< +zNgyF5sxEI{Ks4n-rP0P^p~mx7(7^lcym>(xB#dX9j@BM0oogFon=pFU5^U@}U8To)asjhK6SR5JPC9lK;=5E{bxc*+yfD +z209A-J$N74QwWW~={1j4+}#M*qvz`evWB&mEIr~TV53Ml_I?f)vsAovE*^V!Lk#yj +z`wFia#gsmh4&8Dj2^IsHT>*PZwA{Tq}=I*~$c#sqj}8^lJJkVz%BIZ$K}Qkr)#DP*4TDz%H=lAp;+)y8iTb>VcRVm#(;~L{U*l0J4NU_-F=duAjhs#j> +zdb1L@L>cgAn7piZSV)4(IR?0!y+Zsh8KeqWD+Qqwb4#*uOgzu%4U%WbdC_zgy^TCZ +zD|?v}-R2rwLzL_rcD)0$$GWCp;7?bdXyGK+o-J*#zzNQIeN!@5wz66Rwm-RB+rKfK +zjGqf00-qqSt0)(LcMMbxx^iLxT!d{P+z2Vxy;; +z5_H?(Xi%>3lP~RW%0+S5c-~tX#QdZU%a(8HhF4xHeJ&cPzpPrdi2We{g*Mz`4E;tW +z(dWRT2?@qm=sMJHh{(E|U( +z*gqug)=p{vsi4dCNs~zH+5j6Bpe&6egh=uqk3s+@%-o**Kc ++ ++ ++ ++ ++ image/svg+xml ++ ++ Asset 3 ++ ++ ++ ++ ++ ++ ++ Asset 3 ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff --git a/patches-argo-cd-v2.10/16-override-workload-name-with.patch b/patches-argo-cd-v2.10/16-override-workload-name-with.patch new file mode 100644 index 0000000..2986066 --- /dev/null +++ b/patches-argo-cd-v2.10/16-override-workload-name-with.patch @@ -0,0 +1,85 @@ +override workload name with label + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + controller/state_fsa.go | 28 ++++++++++++++++++++++++++-- + controller/sync_fsa.go | 4 ++-- + 2 files changed, 28 insertions(+), 4 deletions(-) + +diff --git a/controller/state_fsa.go b/controller/state_fsa.go +index 9e1c36e2f..e3aab0778 100644 +--- a/controller/state_fsa.go ++++ b/controller/state_fsa.go +@@ -87,6 +87,30 @@ var supportedKinds = map[fluxKind]schema.GroupVersionKind{ + }, + } + ++const FlamingoWorkloadNameLabel = "flamingo/workload-name" ++ ++func getWorkloadName(app *v1alpha1.Application) string { ++ // if app is nil, return empty string ++ if app == nil { ++ return "" ++ } ++ ++ // if app has no labels, return app name ++ if app.GetLabels() == nil { ++ return app.Name ++ } ++ ++ // if app has labels, check if it has the workload name label ++ // if it does, return the workload name ++ labels := app.GetLabels() ++ if name, ok := labels[FlamingoWorkloadNameLabel]; ok { ++ return name ++ } ++ ++ // otherwise, return app name ++ return app.Name ++} ++ + func (m *appStateManager) getFluxHelmTargetObjects(app *v1alpha1.Application, conditions []v1alpha1.ApplicationCondition, now v1.Time) ([]*unstructured.Unstructured, []v1alpha1.ApplicationCondition, bool) { + var ( + targetObjs []*unstructured.Unstructured +@@ -121,7 +145,7 @@ func (m *appStateManager) getFluxHelmTargetObjects(app *v1alpha1.Application, co + hl *unstructured.Unstructured + hlNotFound bool + ) +- hl, err = m.kubectl.GetResource(context.TODO(), config, supportedKinds[HelmRelease], app.Name, app.Spec.Destination.Namespace) ++ hl, err = m.kubectl.GetResource(context.TODO(), config, supportedKinds[HelmRelease], getWorkloadName(app), app.Spec.Destination.Namespace) + + if err != nil { + // err might be a "not found" one +@@ -207,7 +231,7 @@ func (m *appStateManager) getFluxKustomizeTargetObjects(app *v1alpha1.Applicatio + ks *unstructured.Unstructured + ksNotFound bool + ) +- ks, err = m.kubectl.GetResource(context.TODO(), config, supportedKinds[Kustomization], app.Name, app.Spec.Destination.Namespace) ++ ks, err = m.kubectl.GetResource(context.TODO(), config, supportedKinds[Kustomization], getWorkloadName(app), app.Spec.Destination.Namespace) + + if err != nil { + // err might be a "not found" one +diff --git a/controller/sync_fsa.go b/controller/sync_fsa.go +index d9e1da5c8..b4b71f98d 100644 +--- a/controller/sync_fsa.go ++++ b/controller/sync_fsa.go +@@ -95,7 +95,7 @@ spec: + return nil, nil, err + } + releaseObj := &unstructured.Unstructured{Object: release} +- releaseObj.SetName(app.GetName()) ++ releaseObj.SetName(getWorkloadName(app)) + releaseObj.SetNamespace(app.Spec.Destination.Namespace) + if err := unstructured.SetNestedField(release, app.Spec.Source.Chart, + "spec", "chart", "spec", "chart"); err != nil { +@@ -191,7 +191,7 @@ spec: + return nil, nil, err + } + ksObj := &unstructured.Unstructured{Object: ks} +- ksObj.SetName(app.GetName()) ++ ksObj.SetName(getWorkloadName(app)) + ksObj.SetNamespace(app.Spec.Destination.Namespace) + if err := unstructured.SetNestedField(ks, app.Spec.Source.Path, + "spec", "path"); err != nil { diff --git a/patches-argo-cd-v2.10/17-add-tilt-dev-support.patch b/patches-argo-cd-v2.10/17-add-tilt-dev-support.patch new file mode 100644 index 0000000..88f61e6 --- /dev/null +++ b/patches-argo-cd-v2.10/17-add-tilt-dev-support.patch @@ -0,0 +1,392 @@ +add tilt dev support + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + Makefile | 23 ++-- + Tiltfile | 14 ++ + argocd-server-dev.yaml | 315 ++++++++++++++++++++++++++++++++++++++++++++++++ + 3 files changed, 342 insertions(+), 10 deletions(-) + create mode 100644 Tiltfile + create mode 100644 argocd-server-dev.yaml + +diff --git a/Makefile b/Makefile +index f639e3498..3532370fa 100644 +--- a/Makefile ++++ b/Makefile +@@ -291,20 +291,23 @@ build-ui: + + .PHONY: image + ifeq ($(DEV_IMAGE), true) ++DEV_IMAGE_REF?= + # The "dev" image builds the binaries from the users desktop environment (instead of in Docker) + # which speeds up builds. Dockerfile.dev needs to be copied into dist to perform the build, since + # the dist directory is under .dockerignore. + IMAGE_TAG="dev-$(shell git describe --always --dirty)" +-image: build-ui +- DOCKER_BUILDKIT=1 docker build --platform=$(TARGET_ARCH) -t argocd-base --target argocd-base . +- CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/argocd ./cmd +- ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-server +- ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-application-controller +- ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-repo-server +- ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-cmp-server +- ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-dex +- cp Dockerfile.dev dist +- DOCKER_BUILDKIT=1 docker build --platform=$(TARGET_ARCH) -t $(IMAGE_PREFIX)argocd:$(IMAGE_TAG) -f dist/Dockerfile.dev dist ++image: # build-ui ++ # DOCKER_BUILDKIT=1 docker build --platform=$(TARGET_ARCH) -t argocd-base --target argocd-base . ++ # CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GODEBUG="tarinsecurepath=0,zipinsecurepath=0" go build -v -ldflags '${LDFLAGS}' -o ${DIST_DIR}/argocd ./cmd ++ # ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-server ++ # ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-application-controller ++ # ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-repo-server ++ # ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-cmp-server ++ # ln -sfn ${DIST_DIR}/argocd ${DIST_DIR}/argocd-dex ++ # cp Dockerfile.dev dist ++ # DOCKER_BUILDKIT=1 docker build --platform=$(TARGET_ARCH) -t $(IMAGE_PREFIX)argocd:$(IMAGE_TAG) -f dist/Dockerfile.dev dist ++ DOCKER_BUILDKIT=1 docker build -t $(DEV_IMAGE_REF) --platform=$(TARGET_ARCH) . ++ docker push $(DEV_IMAGE_REF) + else + image: + DOCKER_BUILDKIT=1 docker build -t $(IMAGE_PREFIX)argocd:$(IMAGE_TAG) --platform=$(TARGET_ARCH) . +diff --git a/Tiltfile b/Tiltfile +new file mode 100644 +index 000000000..05e2ffaf6 +--- /dev/null ++++ b/Tiltfile +@@ -0,0 +1,14 @@ ++k8s_yaml('argocd-server-dev.yaml') ++ ++custom_build( ++ 'ghcr.io/flux-subsystem-argo/fsa/argocd', ++ 'DEV_IMAGE=true DEV_IMAGE_REF=$EXPECTED_REF make image', ++ ['.'], ++) ++ ++# Configure the 'argocd-server' deployment in the 'argocd' namespace ++k8s_resource(workload='argocd-server', port_forwards=8080) ++ ++# EXPECTED_REF=ghcr.io/flux-subsystem-argo/fsa/argocd:tilt-build-1693653983 ++# EXPECTED_IMAGE=flux-subsystem-argo/fsa/argocd ++# EXPECTED_TAG=tilt-build-1693653983 +diff --git a/argocd-server-dev.yaml b/argocd-server-dev.yaml +new file mode 100644 +index 000000000..425837529 +--- /dev/null ++++ b/argocd-server-dev.yaml +@@ -0,0 +1,315 @@ ++--- ++apiVersion: apps/v1 ++kind: Deployment ++metadata: ++ labels: ++ app.kubernetes.io/component: server ++ app.kubernetes.io/name: argocd-server ++ app.kubernetes.io/part-of: argocd ++ name: argocd-server ++ namespace: argocd ++spec: ++ selector: ++ matchLabels: ++ app.kubernetes.io/name: argocd-server ++ template: ++ metadata: ++ labels: ++ app.kubernetes.io/name: argocd-server ++ spec: ++ affinity: ++ podAntiAffinity: ++ preferredDuringSchedulingIgnoredDuringExecution: ++ - podAffinityTerm: ++ labelSelector: ++ matchLabels: ++ app.kubernetes.io/name: argocd-server ++ topologyKey: kubernetes.io/hostname ++ weight: 100 ++ - podAffinityTerm: ++ labelSelector: ++ matchLabels: ++ app.kubernetes.io/part-of: argocd ++ topologyKey: kubernetes.io/hostname ++ weight: 5 ++ containers: ++ - args: ++ - /usr/local/bin/argocd-server ++ env: ++ - name: ARGOCD_SERVER_INSECURE ++ valueFrom: ++ configMapKeyRef: ++ key: server.insecure ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_BASEHREF ++ valueFrom: ++ configMapKeyRef: ++ key: server.basehref ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_ROOTPATH ++ valueFrom: ++ configMapKeyRef: ++ key: server.rootpath ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_LOGFORMAT ++ valueFrom: ++ configMapKeyRef: ++ key: server.log.format ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_LOG_LEVEL ++ valueFrom: ++ configMapKeyRef: ++ key: server.log.level ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_REPO_SERVER ++ valueFrom: ++ configMapKeyRef: ++ key: repo.server ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_DEX_SERVER ++ valueFrom: ++ configMapKeyRef: ++ key: server.dex.server ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_DISABLE_AUTH ++ valueFrom: ++ configMapKeyRef: ++ key: server.disable.auth ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_ENABLE_GZIP ++ valueFrom: ++ configMapKeyRef: ++ key: server.enable.gzip ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_REPO_SERVER_TIMEOUT_SECONDS ++ valueFrom: ++ configMapKeyRef: ++ key: server.repo.server.timeout.seconds ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_X_FRAME_OPTIONS ++ valueFrom: ++ configMapKeyRef: ++ key: server.x.frame.options ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_CONTENT_SECURITY_POLICY ++ valueFrom: ++ configMapKeyRef: ++ key: server.content.security.policy ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_REPO_SERVER_PLAINTEXT ++ valueFrom: ++ configMapKeyRef: ++ key: server.repo.server.plaintext ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_REPO_SERVER_STRICT_TLS ++ valueFrom: ++ configMapKeyRef: ++ key: server.repo.server.strict.tls ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_DEX_SERVER_PLAINTEXT ++ valueFrom: ++ configMapKeyRef: ++ key: server.dex.server.plaintext ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_DEX_SERVER_STRICT_TLS ++ valueFrom: ++ configMapKeyRef: ++ key: server.dex.server.strict.tls ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_TLS_MIN_VERSION ++ valueFrom: ++ configMapKeyRef: ++ key: server.tls.minversion ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_TLS_MAX_VERSION ++ valueFrom: ++ configMapKeyRef: ++ key: server.tls.maxversion ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_TLS_CIPHERS ++ valueFrom: ++ configMapKeyRef: ++ key: server.tls.ciphers ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_CONNECTION_STATUS_CACHE_EXPIRATION ++ valueFrom: ++ configMapKeyRef: ++ key: server.connection.status.cache.expiration ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_OIDC_CACHE_EXPIRATION ++ valueFrom: ++ configMapKeyRef: ++ key: server.oidc.cache.expiration ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_LOGIN_ATTEMPTS_EXPIRATION ++ valueFrom: ++ configMapKeyRef: ++ key: server.login.attempts.expiration ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_STATIC_ASSETS ++ valueFrom: ++ configMapKeyRef: ++ key: server.staticassets ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_APP_STATE_CACHE_EXPIRATION ++ valueFrom: ++ configMapKeyRef: ++ key: server.app.state.cache.expiration ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: REDIS_SERVER ++ valueFrom: ++ configMapKeyRef: ++ key: redis.server ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: REDIS_COMPRESSION ++ valueFrom: ++ configMapKeyRef: ++ key: redis.compression ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: REDISDB ++ valueFrom: ++ configMapKeyRef: ++ key: redis.db ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_DEFAULT_CACHE_EXPIRATION ++ valueFrom: ++ configMapKeyRef: ++ key: server.default.cache.expiration ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_MAX_COOKIE_NUMBER ++ valueFrom: ++ configMapKeyRef: ++ key: server.http.cookie.maxnumber ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_LISTEN_ADDRESS ++ valueFrom: ++ configMapKeyRef: ++ key: server.listen.address ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_METRICS_LISTEN_ADDRESS ++ valueFrom: ++ configMapKeyRef: ++ key: server.metrics.listen.address ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_OTLP_ADDRESS ++ valueFrom: ++ configMapKeyRef: ++ key: otlp.address ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_APPLICATION_NAMESPACES ++ valueFrom: ++ configMapKeyRef: ++ key: application.namespaces ++ name: argocd-cmd-params-cm ++ optional: true ++ - name: ARGOCD_SERVER_ENABLE_PROXY_EXTENSION ++ valueFrom: ++ configMapKeyRef: ++ key: server.enable.proxy.extension ++ name: argocd-cmd-params-cm ++ optional: true ++ image: ghcr.io/flux-subsystem-argo/fsa/argocd:v2.8.1-fl.16-main-0a0a2f19 ++ imagePullPolicy: Always ++ livenessProbe: ++ httpGet: ++ path: /healthz?full=true ++ port: 8080 ++ initialDelaySeconds: 3 ++ periodSeconds: 30 ++ timeoutSeconds: 5 ++ name: argocd-server ++ ports: ++ - containerPort: 8080 ++ - containerPort: 8083 ++ readinessProbe: ++ httpGet: ++ path: /healthz ++ port: 8080 ++ initialDelaySeconds: 3 ++ periodSeconds: 30 ++ securityContext: ++ allowPrivilegeEscalation: false ++ capabilities: ++ drop: ++ - ALL ++ readOnlyRootFilesystem: true ++ runAsNonRoot: true ++ seccompProfile: ++ type: RuntimeDefault ++ volumeMounts: ++ - mountPath: /app/config/ssh ++ name: ssh-known-hosts ++ - mountPath: /app/config/tls ++ name: tls-certs ++ - mountPath: /app/config/server/tls ++ name: argocd-repo-server-tls ++ - mountPath: /app/config/dex/tls ++ name: argocd-dex-server-tls ++ - mountPath: /home/argocd ++ name: plugins-home ++ - mountPath: /tmp ++ name: tmp ++ serviceAccountName: argocd-server ++ volumes: ++ - emptyDir: {} ++ name: plugins-home ++ - emptyDir: {} ++ name: tmp ++ - configMap: ++ name: argocd-ssh-known-hosts-cm ++ name: ssh-known-hosts ++ - configMap: ++ name: argocd-tls-certs-cm ++ name: tls-certs ++ - name: argocd-repo-server-tls ++ secret: ++ items: ++ - key: tls.crt ++ path: tls.crt ++ - key: tls.key ++ path: tls.key ++ - key: ca.crt ++ path: ca.crt ++ optional: true ++ secretName: argocd-repo-server-tls ++ - name: argocd-dex-server-tls ++ secret: ++ items: ++ - key: tls.crt ++ path: tls.crt ++ - key: ca.crt ++ path: ca.crt ++ optional: true ++ secretName: argocd-dex-server-tls diff --git a/patches-argo-cd-v2.10/18-add-oci-repository.patch b/patches-argo-cd-v2.10/18-add-oci-repository.patch new file mode 100644 index 0000000..a7d219d --- /dev/null +++ b/patches-argo-cd-v2.10/18-add-oci-repository.patch @@ -0,0 +1,325 @@ +add oci repository verification support + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + .../GitRepository/actions/action_test.yaml | 4 -- + .../actions/testdata/gitrepo-requested.yaml | 33 -------------------- + .../GitRepository/actions/testdata/gitrepo.yaml | 32 ------------------- + .../GitRepository/health.lua | 2 + + .../GitRepository/testdata/degraded.yaml | 33 -------------------- + .../GitRepository/testdata/healthy.yaml | 33 -------------------- + .../GitRepository/testdata/progressing.yaml | 24 --------------- + .../OCIRepository/actions/discovery.lua | 3 ++ + .../OCIRepository/actions/reconcile/action.lua | 9 +++++ + .../OCIRepository/health.lua | 25 +++++++++++++++ + .../source.toolkit.fluxcd.io/health_test.yaml | 13 -------- + .../application-node-info.tsx | 2 + + 12 files changed, 39 insertions(+), 174 deletions(-) + delete mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/action_test.yaml + delete mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo-requested.yaml + delete mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo.yaml + delete mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/degraded.yaml + delete mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/healthy.yaml + delete mode 100644 resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/progressing.yaml + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/OCIRepository/actions/discovery.lua + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/OCIRepository/actions/reconcile/action.lua + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/OCIRepository/health.lua + delete mode 100644 resource_customizations/source.toolkit.fluxcd.io/health_test.yaml + +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/action_test.yaml b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/action_test.yaml +deleted file mode 100644 +index e9070b908..000000000 +--- a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/action_test.yaml ++++ /dev/null +@@ -1,4 +0,0 @@ +-actionTests: +-- action: reconcile +- inputPath: testdata/gitrepo.yaml +- expectedOutputPath: testdata/gitrepo-requested.yaml +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo-requested.yaml b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo-requested.yaml +deleted file mode 100644 +index 6eb6dc59d..000000000 +--- a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo-requested.yaml ++++ /dev/null +@@ -1,33 +0,0 @@ +-apiVersion: source.toolkit.fluxcd.io/v1beta1 +-kind: GitRepository +-metadata: +- annotations: +- inferred-parent-of: podinfo +- reconcile.fluxcd.io/requestedAt: "2022-02-27T20:12:28.222377213+07:00" +- labels: +- app.kubernetes.io/instance: test-flux +- name: podinfo +- namespace: dev +-spec: +- gitImplementation: go-git +- interval: 1m0s +- ref: +- branch: master +- timeout: 60s +- url: https://github.com/openshift-fluxv2-poc/podinfo +-status: +- artifact: +- checksum: ce96832ef51e011795626ae68cbfe38deedcff64776e96af618840564a394f1a +- lastUpdateTime: "2022-02-27T13:26:53Z" +- path: gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz +- revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794 +- url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz +- conditions: +- - lastTransitionTime: "2022-02-27T12:00:08Z" +- message: 'Fetched revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794' +- reason: GitOperationSucceed +- status: "True" +- type: Ready +- lastHandledReconcileAt: "2022-02-27T20:12:28.222377213+07:00" +- observedGeneration: 2 +- url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/latest.tar.gz +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo.yaml b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo.yaml +deleted file mode 100644 +index 19a172233..000000000 +--- a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/actions/testdata/gitrepo.yaml ++++ /dev/null +@@ -1,32 +0,0 @@ +-apiVersion: source.toolkit.fluxcd.io/v1beta1 +-kind: GitRepository +-metadata: +- annotations: +- inferred-parent-of: podinfo +- labels: +- app.kubernetes.io/instance: test-flux +- name: podinfo +- namespace: dev +-spec: +- gitImplementation: go-git +- interval: 1m0s +- ref: +- branch: master +- timeout: 60s +- url: https://github.com/openshift-fluxv2-poc/podinfo +-status: +- artifact: +- checksum: ce96832ef51e011795626ae68cbfe38deedcff64776e96af618840564a394f1a +- lastUpdateTime: "2022-02-27T13:26:53Z" +- path: gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz +- revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794 +- url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz +- conditions: +- - lastTransitionTime: "2022-02-27T12:00:08Z" +- message: 'Fetched revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794' +- reason: GitOperationSucceed +- status: "True" +- type: Ready +- lastHandledReconcileAt: "2022-02-27T20:12:28.222377213+07:00" +- observedGeneration: 2 +- url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/latest.tar.gz +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/health.lua b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/health.lua +index 61707bd4a..41edb672c 100644 +--- a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/health.lua ++++ b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/health.lua +@@ -5,7 +5,7 @@ if obj.status ~= nil then + for _, condition in ipairs(obj.status.conditions) do + if condition.type == "Ready" then + ready_status = condition.status +- ready_message = condition.reason .. " - " .. condition.message ++ ready_message = condition.message + end + end + if ready_status == "True" then +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/degraded.yaml b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/degraded.yaml +deleted file mode 100644 +index e2c9b6d62..000000000 +--- a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/degraded.yaml ++++ /dev/null +@@ -1,33 +0,0 @@ +-apiVersion: source.toolkit.fluxcd.io/v1beta1 +-kind: GitRepository +-metadata: +- annotations: +- inferred-parent-of: podinfo +- reconcile.fluxcd.io/requestedAt: "2022-02-27T22:46:00.477195452+07:00" +- labels: +- app.kubernetes.io/instance: test-flux +- name: podinfo +- namespace: dev +-spec: +- gitImplementation: go-git +- interval: 1m0s +- ref: +- branch: master +- timeout: 60s +- url: https://github.com/openshift-fluxv2-poc/podinfo +-status: +- artifact: +- checksum: ce96832ef51e011795626ae68cbfe38deedcff64776e96af618840564a394f1a +- lastUpdateTime: "2022-02-27T13:26:53Z" +- path: gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz +- revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794 +- url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz +- conditions: +- - lastTransitionTime: "2022-02-27T15:47:37Z" +- message: 'unable to clone ''https://github.com/openshift-fluxv2-poc/podinfo'': authentication required' +- reason: GitOperationFailed +- status: "False" +- type: Ready +- lastHandledReconcileAt: "2022-02-27T22:46:00.477195452+07:00" +- observedGeneration: 2 +- url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/latest.tar.gz +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/healthy.yaml b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/healthy.yaml +deleted file mode 100644 +index 6eb6dc59d..000000000 +--- a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/healthy.yaml ++++ /dev/null +@@ -1,33 +0,0 @@ +-apiVersion: source.toolkit.fluxcd.io/v1beta1 +-kind: GitRepository +-metadata: +- annotations: +- inferred-parent-of: podinfo +- reconcile.fluxcd.io/requestedAt: "2022-02-27T20:12:28.222377213+07:00" +- labels: +- app.kubernetes.io/instance: test-flux +- name: podinfo +- namespace: dev +-spec: +- gitImplementation: go-git +- interval: 1m0s +- ref: +- branch: master +- timeout: 60s +- url: https://github.com/openshift-fluxv2-poc/podinfo +-status: +- artifact: +- checksum: ce96832ef51e011795626ae68cbfe38deedcff64776e96af618840564a394f1a +- lastUpdateTime: "2022-02-27T13:26:53Z" +- path: gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz +- revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794 +- url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/b0cdff96de44592069f6b03d73573d3ca5df9794.tar.gz +- conditions: +- - lastTransitionTime: "2022-02-27T12:00:08Z" +- message: 'Fetched revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794' +- reason: GitOperationSucceed +- status: "True" +- type: Ready +- lastHandledReconcileAt: "2022-02-27T20:12:28.222377213+07:00" +- observedGeneration: 2 +- url: http://source-controller.flux-system.svc.cluster.local./gitrepository/dev/podinfo/latest.tar.gz +diff --git a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/progressing.yaml b/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/progressing.yaml +deleted file mode 100644 +index 6054bd04b..000000000 +--- a/resource_customizations/source.toolkit.fluxcd.io/GitRepository/testdata/progressing.yaml ++++ /dev/null +@@ -1,24 +0,0 @@ +-apiVersion: source.toolkit.fluxcd.io/v1beta1 +-kind: GitRepository +-metadata: +- annotations: +- inferred-parent-of: podinfo +- reconcile.fluxcd.io/requestedAt: "2022-02-27T20:12:28.222377213+07:00" +- labels: +- app.kubernetes.io/instance: test-flux +- name: podinfo +- namespace: dev +-spec: +- gitImplementation: go-git +- interval: 1m0s +- ref: +- branch: master +- timeout: 60s +- url: https://github.com/openshift-fluxv2-poc/podinfo +-status: +- conditions: +- - lastTransitionTime: "2022-02-27T12:00:08Z" +- message: 'reconciliation in progress' +- reason: Progressing +- status: "Unknown" +- type: Ready +diff --git a/resource_customizations/source.toolkit.fluxcd.io/OCIRepository/actions/discovery.lua b/resource_customizations/source.toolkit.fluxcd.io/OCIRepository/actions/discovery.lua +new file mode 100644 +index 000000000..c7f895ffb +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/OCIRepository/actions/discovery.lua +@@ -0,0 +1,3 @@ ++actions = {} ++actions["reconcile"] = {} ++return actions +diff --git a/resource_customizations/source.toolkit.fluxcd.io/OCIRepository/actions/reconcile/action.lua b/resource_customizations/source.toolkit.fluxcd.io/OCIRepository/actions/reconcile/action.lua +new file mode 100644 +index 000000000..f83651d3c +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/OCIRepository/actions/reconcile/action.lua +@@ -0,0 +1,9 @@ ++local os = require("os") ++if obj.metadata == nil then ++ obj.metadata = {} ++end ++if obj.metadata.annotations == nil then ++ obj.metadata.annotations = {} ++end ++obj.metadata.annotations["reconcile.fluxcd.io/requestedAt"] = os.date("!%Y-%m-%dT%XZ") ++return obj +diff --git a/resource_customizations/source.toolkit.fluxcd.io/OCIRepository/health.lua b/resource_customizations/source.toolkit.fluxcd.io/OCIRepository/health.lua +new file mode 100644 +index 000000000..73e2694a1 +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/OCIRepository/health.lua +@@ -0,0 +1,25 @@ ++hs = {} ++if obj.status ~= nil then ++ if obj.status.conditions ~= nil then ++ ready_status = "" ++ for _, condition in ipairs(obj.status.conditions) do ++ if condition.type == "Ready" then ++ ready_status = condition.status ++ ready_message = condition.message ++ end ++ end ++ if ready_status == "True" then ++ hs.status = "Healthy" ++ elseif ready_status == "False" then ++ hs.status = "Degraded" ++ elseif ready_status == "Unknown" then ++ hs.status = "Progressing" ++ end ++ hs.message = ready_message ++ return hs ++ end ++end ++ ++hs.status = "Progressing" ++hs.message = "Waiting for OCIRepository to reconcile ..." ++return hs +diff --git a/resource_customizations/source.toolkit.fluxcd.io/health_test.yaml b/resource_customizations/source.toolkit.fluxcd.io/health_test.yaml +deleted file mode 100644 +index 4812cf55d..000000000 +--- a/resource_customizations/source.toolkit.fluxcd.io/health_test.yaml ++++ /dev/null +@@ -1,13 +0,0 @@ +-tests: +-- healthStatus: +- status: Progressing +- message: "Progressing - reconciliation in progress" +- inputPath: testdata/progressing.yaml +-- healthStatus: +- status: Degraded +- message: "GitOperationFailed - unable to clone 'https://github.com/openshift-fluxv2-poc/podinfo': authentication required" +- inputPath: testdata/degraded.yaml +-- healthStatus: +- status: Healthy +- message: "GitOperationSucceed - Fetched revision: master/b0cdff96de44592069f6b03d73573d3ca5df9794" +- inputPath: testdata/healthy.yaml +diff --git a/ui/src/app/applications/components/application-node-info/application-node-info.tsx b/ui/src/app/applications/components/application-node-info/application-node-info.tsx +index dc5f1f539..4f3f540e6 100644 +--- a/ui/src/app/applications/components/application-node-info/application-node-info.tsx ++++ b/ui/src/app/applications/components/application-node-info/application-node-info.tsx +@@ -149,7 +149,7 @@ export const ApplicationNodeInfo = (props: { + if (condition) { + attributes.push({title: 'READY', value: condition.status}) + attributes.push({title: 'REASON', value: condition.reason}) +- attributes.push({title: 'STATUS', value: condition.message}) ++ attributes.push({title: 'MESSAGE', value: condition.message}) + } + } + } diff --git a/patches-argo-cd-v2.10/19-fix-special-supported-schemes.patch b/patches-argo-cd-v2.10/19-fix-special-supported-schemes.patch new file mode 100644 index 0000000..3e4b556 --- /dev/null +++ b/patches-argo-cd-v2.10/19-fix-special-supported-schemes.patch @@ -0,0 +1,29 @@ +fix special supported schemes + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + server/application/application.go | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/server/application/application.go b/server/application/application.go +index 83cef54ca..6253147f5 100644 +--- a/server/application/application.go ++++ b/server/application/application.go +@@ -2027,10 +2027,11 @@ func (s *Server) resolveRevision(ctx context.Context, app *appv1.Application, sy + // If it's already a commit SHA, then no need to look it up + return ambiguousRevision, ambiguousRevision, nil + } +- if strings.HasPrefix(app.Spec.Source.RepoURL, "flux://") || strings.HasPrefix(app.Spec.Source.RepoURL, "oci://") { +- // Flux or OCI scheme are special cases +- return ambiguousRevision, ambiguousRevision, nil +- } ++ } ++ ++ if strings.HasPrefix(app.Spec.Source.RepoURL, "flux://") || strings.HasPrefix(app.Spec.Source.RepoURL, "oci://") { ++ // Flux or OCI scheme are special cases ++ return ambiguousRevision, ambiguousRevision, nil + } + + resolveRevisionResponse, err := repoClient.ResolveRevision(ctx, &apiclient.ResolveRevisionRequest{ diff --git a/patches-argo-cd-v2.10/20-add-health-message-for-helm.patch b/patches-argo-cd-v2.10/20-add-health-message-for-helm.patch new file mode 100644 index 0000000..60b4ddb --- /dev/null +++ b/patches-argo-cd-v2.10/20-add-health-message-for-helm.patch @@ -0,0 +1,130 @@ +add health message for helm + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + .../HelmRelease/actions/discovery.lua | 3 ++ + .../HelmRelease/actions/reconcile/action.lua | 9 +++++++ + .../helm.toolkit.fluxcd.io/HelmRelease/health.lua | 25 ++++++++++++++++++++ + .../HelmRepository/actions/discovery.lua | 3 ++ + .../HelmRepository/actions/reconcile/action.lua | 9 +++++++ + .../HelmRepository/health.lua | 25 ++++++++++++++++++++ + 6 files changed, 74 insertions(+) + create mode 100644 resource_customizations/helm.toolkit.fluxcd.io/HelmRelease/actions/discovery.lua + create mode 100644 resource_customizations/helm.toolkit.fluxcd.io/HelmRelease/actions/reconcile/action.lua + create mode 100644 resource_customizations/helm.toolkit.fluxcd.io/HelmRelease/health.lua + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/HelmRepository/actions/discovery.lua + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/HelmRepository/actions/reconcile/action.lua + create mode 100644 resource_customizations/source.toolkit.fluxcd.io/HelmRepository/health.lua + +diff --git a/resource_customizations/helm.toolkit.fluxcd.io/HelmRelease/actions/discovery.lua b/resource_customizations/helm.toolkit.fluxcd.io/HelmRelease/actions/discovery.lua +new file mode 100644 +index 000000000..c7f895ffb +--- /dev/null ++++ b/resource_customizations/helm.toolkit.fluxcd.io/HelmRelease/actions/discovery.lua +@@ -0,0 +1,3 @@ ++actions = {} ++actions["reconcile"] = {} ++return actions +diff --git a/resource_customizations/helm.toolkit.fluxcd.io/HelmRelease/actions/reconcile/action.lua b/resource_customizations/helm.toolkit.fluxcd.io/HelmRelease/actions/reconcile/action.lua +new file mode 100644 +index 000000000..f83651d3c +--- /dev/null ++++ b/resource_customizations/helm.toolkit.fluxcd.io/HelmRelease/actions/reconcile/action.lua +@@ -0,0 +1,9 @@ ++local os = require("os") ++if obj.metadata == nil then ++ obj.metadata = {} ++end ++if obj.metadata.annotations == nil then ++ obj.metadata.annotations = {} ++end ++obj.metadata.annotations["reconcile.fluxcd.io/requestedAt"] = os.date("!%Y-%m-%dT%XZ") ++return obj +diff --git a/resource_customizations/helm.toolkit.fluxcd.io/HelmRelease/health.lua b/resource_customizations/helm.toolkit.fluxcd.io/HelmRelease/health.lua +new file mode 100644 +index 000000000..3c0bb1d04 +--- /dev/null ++++ b/resource_customizations/helm.toolkit.fluxcd.io/HelmRelease/health.lua +@@ -0,0 +1,25 @@ ++hs = {} ++if obj.status ~= nil then ++ if obj.status.conditions ~= nil then ++ ready_status = "" ++ for _, condition in ipairs(obj.status.conditions) do ++ if condition.type == "Ready" then ++ ready_status = condition.status ++ ready_message = condition.message ++ end ++ end ++ if ready_status == "True" then ++ hs.status = "Healthy" ++ elseif ready_status == "False" then ++ hs.status = "Degraded" ++ elseif ready_status == "Unknown" then ++ hs.status = "Progressing" ++ end ++ hs.message = ready_message ++ return hs ++ end ++end ++ ++hs.status = "Progressing" ++hs.message = "Waiting for HelmRelease to reconcile ..." ++return hs +diff --git a/resource_customizations/source.toolkit.fluxcd.io/HelmRepository/actions/discovery.lua b/resource_customizations/source.toolkit.fluxcd.io/HelmRepository/actions/discovery.lua +new file mode 100644 +index 000000000..c7f895ffb +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/HelmRepository/actions/discovery.lua +@@ -0,0 +1,3 @@ ++actions = {} ++actions["reconcile"] = {} ++return actions +diff --git a/resource_customizations/source.toolkit.fluxcd.io/HelmRepository/actions/reconcile/action.lua b/resource_customizations/source.toolkit.fluxcd.io/HelmRepository/actions/reconcile/action.lua +new file mode 100644 +index 000000000..f83651d3c +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/HelmRepository/actions/reconcile/action.lua +@@ -0,0 +1,9 @@ ++local os = require("os") ++if obj.metadata == nil then ++ obj.metadata = {} ++end ++if obj.metadata.annotations == nil then ++ obj.metadata.annotations = {} ++end ++obj.metadata.annotations["reconcile.fluxcd.io/requestedAt"] = os.date("!%Y-%m-%dT%XZ") ++return obj +diff --git a/resource_customizations/source.toolkit.fluxcd.io/HelmRepository/health.lua b/resource_customizations/source.toolkit.fluxcd.io/HelmRepository/health.lua +new file mode 100644 +index 000000000..f5bd9b0bc +--- /dev/null ++++ b/resource_customizations/source.toolkit.fluxcd.io/HelmRepository/health.lua +@@ -0,0 +1,25 @@ ++hs = {} ++if obj.status ~= nil then ++ if obj.status.conditions ~= nil then ++ ready_status = "" ++ for _, condition in ipairs(obj.status.conditions) do ++ if condition.type == "Ready" then ++ ready_status = condition.status ++ ready_message = condition.message ++ end ++ end ++ if ready_status == "True" then ++ hs.status = "Healthy" ++ elseif ready_status == "False" then ++ hs.status = "Degraded" ++ elseif ready_status == "Unknown" then ++ hs.status = "Progressing" ++ end ++ hs.message = ready_message ++ return hs ++ end ++end ++ ++hs.status = "Progressing" ++hs.message = "Waiting for HelmRepository to reconcile ..." ++return hs diff --git a/patches-argo-cd-v2.10/21-fix-health-message-in.patch b/patches-argo-cd-v2.10/21-fix-health-message-in.patch new file mode 100644 index 0000000..60c81cd --- /dev/null +++ b/patches-argo-cd-v2.10/21-fix-health-message-in.patch @@ -0,0 +1,22 @@ +fix health message in kustomization + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + .../Kustomization/health.lua | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/health.lua b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/health.lua +index 9a9122d44..496e5c025 100644 +--- a/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/health.lua ++++ b/resource_customizations/kustomize.toolkit.fluxcd.io/Kustomization/health.lua +@@ -5,7 +5,7 @@ if obj.status ~= nil then + for _, condition in ipairs(obj.status.conditions) do + if condition.type == "Ready" then + ready_status = condition.status +- ready_message = condition.reason .. " - " .. condition.message ++ ready_message = condition.message + end + end + if ready_status == "True" then diff --git a/patches-argo-cd-v2.10/22-fix-flux-2.2-oci.patch b/patches-argo-cd-v2.10/22-fix-flux-2.2-oci.patch new file mode 100644 index 0000000..b3bda48 --- /dev/null +++ b/patches-argo-cd-v2.10/22-fix-flux-2.2-oci.patch @@ -0,0 +1,29 @@ +fix flux 2.2 oci helmrepository health check + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + .../HelmRepository/health.lua | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/resource_customizations/source.toolkit.fluxcd.io/HelmRepository/health.lua b/resource_customizations/source.toolkit.fluxcd.io/HelmRepository/health.lua +index f5bd9b0bc..40d3d6853 100644 +--- a/resource_customizations/source.toolkit.fluxcd.io/HelmRepository/health.lua ++++ b/resource_customizations/source.toolkit.fluxcd.io/HelmRepository/health.lua +@@ -1,4 +1,15 @@ + hs = {} ++ ++if obj.spec.type == "oci" then ++-- https://fluxcd.io/flux/components/source/helmrepositories/#helm-oci-repository ++-- Because the OCI Helm repository is a data container, ++-- there’s nothing to report for READY and STATUS columns above. ++-- The existence of the object can be considered to be ready for use. ++ hs.status = "Healthy" ++ hs.message = "OCI HelmRepository is ready to use." ++ return hs ++end ++ + if obj.status ~= nil then + if obj.status.conditions ~= nil then + ready_status = "" diff --git a/patches-argo-cd-v2.10/23-allow-overriding-flux-object.patch b/patches-argo-cd-v2.10/23-allow-overriding-flux-object.patch new file mode 100644 index 0000000..9f14e4e --- /dev/null +++ b/patches-argo-cd-v2.10/23-allow-overriding-flux-object.patch @@ -0,0 +1,346 @@ +allow overriding flux object spec + +From: Chanwit Kaewkasi + +Signed-off-by: Chanwit Kaewkasi +--- + controller/state_fsa.go | 5 ++ + controller/sync_fsa.go | 75 ++++++++++++++++++++++++++++++++++- + controller/sync_fsa_override.go | 67 +++++++++++++++++++++++++++++++ + controller/sync_fsa_test.go | 83 ++++++++++++++++++++++++++++++++++++--- + 4 files changed, 220 insertions(+), 10 deletions(-) + create mode 100644 controller/sync_fsa_override.go + +diff --git a/controller/state_fsa.go b/controller/state_fsa.go +index e3aab0778..ffa821a9e 100644 +--- a/controller/state_fsa.go ++++ b/controller/state_fsa.go +@@ -87,7 +87,10 @@ var supportedKinds = map[fluxKind]schema.GroupVersionKind{ + }, + } + +-const FlamingoWorkloadNameLabel = "flamingo/workload-name" ++const ( ++ FlamingoWorkloadNameLabel = "flamingo/workload-name" ++ FlamingoGeneratedLabel = "flamingo/generated" ++) + + func getWorkloadName(app *v1alpha1.Application) string { + // if app is nil, return empty string +diff --git a/controller/sync_fsa.go b/controller/sync_fsa.go +index b4b71f98d..45deaff9d 100644 +--- a/controller/sync_fsa.go ++++ b/controller/sync_fsa.go +@@ -30,6 +30,29 @@ func mergeHelmParamsAndValues(app appv1.Application) (map[string]interface{}, er + } + + func generateFluxHelmAndSource(app *appv1.Application) (*unstructured.Unstructured, *unstructured.Unstructured, error) { ++ obj, src, err := generateFluxHelmAndHelmRepository(app) ++ if err != nil { ++ return obj, src, err ++ } ++ ++ if err := overrideSpec(app, FlamingoHelmReleaseOverride, obj); err != nil { ++ return obj, src, err ++ } ++ if err := overrideSpec(app, FlamingoHelmRepositoryOverride, src); err != nil { ++ return obj, src, err ++ } ++ ++ if err := replaceSpec(app, FlamingoHelmReleaseReplace, obj); err != nil { ++ return obj, src, err ++ } ++ if err := replaceSpec(app, FlamingoHelmRepositoryReplace, src); err != nil { ++ return obj, src, err ++ } ++ ++ return obj, src, nil ++} ++ ++func generateFluxHelmAndHelmRepository(app *appv1.Application) (*unstructured.Unstructured, *unstructured.Unstructured, error) { + mergedValues, err := mergeHelmParamsAndValues(*app) + if err != nil { + return nil, nil, err +@@ -39,6 +62,8 @@ func generateFluxHelmAndSource(app *appv1.Application) (*unstructured.Unstructur + apiVersion: source.toolkit.fluxcd.io/v1beta2 + kind: HelmRepository + metadata: ++ labels: ++ flamingo/generated: "true" + name: undefined + namespace: undefined + spec: +@@ -70,6 +95,8 @@ spec: + apiVersion: helm.toolkit.fluxcd.io/v2beta2 + kind: HelmRelease + metadata: ++ labels: ++ flamingo/generated: "true" + name: undefined + namespace: undefined + spec: +@@ -135,9 +162,45 @@ spec: + + func generateFluxKustomizationAndSource(app *appv1.Application) (*unstructured.Unstructured, *unstructured.Unstructured, error) { + if strings.HasPrefix(app.Spec.Source.RepoURL, "oci://") { +- return generateFluxKustomizationAndOCISource(app) ++ obj, src, err := generateFluxKustomizationAndOCISource(app) ++ if err != nil { ++ return obj, src, err ++ } ++ if err := overrideSpec(app, FlamingoKustomizeOverride, obj); err != nil { ++ return obj, src, err ++ } ++ if err := overrideSpec(app, FlamingoOCIRepositoryOverride, src); err != nil { ++ return obj, src, err ++ } ++ ++ if err := replaceSpec(app, FlamingoKustomizeReplace, obj); err != nil { ++ return obj, src, err ++ } ++ if err := replaceSpec(app, FlamingoOCIRepositoryReplace, src); err != nil { ++ return obj, src, err ++ } ++ ++ return obj, src, nil + } else { +- return generateFluxKustomizationAndGitSource(app) ++ obj, src, err := generateFluxKustomizationAndGitSource(app) ++ if err != nil { ++ return obj, src, err ++ } ++ if err := overrideSpec(app, FlamingoKustomizeOverride, obj); err != nil { ++ return obj, src, err ++ } ++ if err := overrideSpec(app, FlamingoGitRepositoryOverride, src); err != nil { ++ return obj, src, err ++ } ++ ++ if err := replaceSpec(app, FlamingoKustomizeReplace, obj); err != nil { ++ return obj, src, err ++ } ++ if err := replaceSpec(app, FlamingoGitRepositoryReplace, src); err != nil { ++ return obj, src, err ++ } ++ ++ return obj, src, nil + } + } + +@@ -147,6 +210,8 @@ func generateFluxKustomizationAndGitSource(app *appv1.Application) (*unstructure + apiVersion: source.toolkit.fluxcd.io/v1beta2 + kind: GitRepository + metadata: ++ labels: ++ flamingo/generated: "true" + name: undefined + namespace: undefined + spec: +@@ -175,6 +240,8 @@ spec: + apiVersion: kustomize.toolkit.fluxcd.io/v1 + kind: Kustomization + metadata: ++ labels: ++ flamingo/generated: "true" + name: undefined + namespace: undefined + spec: +@@ -215,6 +282,8 @@ func generateFluxKustomizationAndOCISource(app *appv1.Application) (*unstructure + apiVersion: source.toolkit.fluxcd.io/v1beta2 + kind: OCIRepository + metadata: ++ labels: ++ flamingo/generated: "true" + name: undefined + namespace: undefined + spec: +@@ -243,6 +312,8 @@ spec: + apiVersion: kustomize.toolkit.fluxcd.io/v1 + kind: Kustomization + metadata: ++ labels: ++ flamingo/generated: "true" + name: undefined + namespace: undefined + spec: +diff --git a/controller/sync_fsa_override.go b/controller/sync_fsa_override.go +new file mode 100644 +index 000000000..b093e7ba4 +--- /dev/null ++++ b/controller/sync_fsa_override.go +@@ -0,0 +1,67 @@ ++package controller ++ ++import ( ++ "github.com/imdario/mergo" ++ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" ++ "sigs.k8s.io/yaml" ++ ++ appv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" ++) ++ ++const ( ++ FlamingoKustomizeOverride = "flamingo/kustomize-override" ++ FlamingoHelmReleaseOverride = "flamingo/helmrelease-override" ++ FlamingoHelmRepositoryOverride = "flamingo/helmrepository-override" ++ FlamingoGitRepositoryOverride = "flamingo/gitrepository-override" ++ FlamingoOCIRepositoryOverride = "flamingo/ocirepository-override" ++ ++ FlamingoKustomizeReplace = "flamingo/kustomize-replace" ++ FlamingoHelmReleaseReplace = "flamingo/helmrelease-replace" ++ FlamingoHelmRepositoryReplace = "flamingo/helmrepository-replace" ++ FlamingoGitRepositoryReplace = "flamingo/gitrepository-replace" ++ FlamingoOCIRepositoryReplace = "flamingo/ocirepository-replace" ++) ++ ++// overrideSpec overrides the spec of the given unstructured object with the ++// value of the given annotation key in the application. ++func overrideSpec(app *appv1.Application, overrideKey string, u *unstructured.Unstructured) error { ++ if app.Annotations == nil { ++ return nil ++ } ++ ++ object := u.Object ++ if overrideSpec, ok := app.Annotations[overrideKey]; ok { ++ spec := map[string]interface{}{} ++ if err := yaml.Unmarshal([]byte(overrideSpec), &spec); err == nil { ++ if err := mergo.Merge(&object, spec, mergo.WithOverride); err != nil { ++ return err ++ } ++ } else { ++ return err ++ } ++ } ++ ++ u.Object = object ++ return nil ++} ++ ++// replaceSpec replaces the spec of the given unstructured object with the ++// value of the given annotation key in the application. ++func replaceSpec(app *appv1.Application, replaceKey string, u *unstructured.Unstructured) error { ++ if app.Annotations == nil { ++ return nil ++ } ++ ++ object := u.Object ++ if replaceSpec, ok := app.Annotations[replaceKey]; ok { ++ spec := map[string]interface{}{} ++ if err := yaml.Unmarshal([]byte(replaceSpec), &spec); err == nil { ++ object["spec"] = spec["spec"] ++ } else { ++ return err ++ } ++ } ++ ++ u.Object = object ++ return nil ++} +diff --git a/controller/sync_fsa_test.go b/controller/sync_fsa_test.go +index 9ed03c712..2cd5a7976 100644 +--- a/controller/sync_fsa_test.go ++++ b/controller/sync_fsa_test.go +@@ -1,6 +1,7 @@ + package controller + + import ( ++ v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "testing" + + appv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1" +@@ -10,7 +11,7 @@ import ( + func TestMergeValues(t *testing.T) { + app := appv1.Application{ + Spec: appv1.ApplicationSpec{ +- Source: appv1.ApplicationSource{ ++ Source: &appv1.ApplicationSource{ + Helm: &appv1.ApplicationSourceHelm{ + Parameters: []appv1.HelmParameter{ + { +@@ -36,12 +37,80 @@ ui: + assert.Equal(t, expected, actual, "should equal") + } + +-/* +-func TestGenerateFluxHelmAndSource(t *testing.T) { +- generateFluxHelmAndSource(app) ++func TestGenerateFluxHelmAndSourceWithSpecOverride(t *testing.T) { ++ app := &appv1.Application{ ++ ObjectMeta: v1.ObjectMeta{ ++ Name: "name", ++ Annotations: map[string]string{ ++ FlamingoKustomizeOverride: `spec: ++ interval: 5m0s ++ wait: false ++`, ++ }, ++ }, ++ Spec: appv1.ApplicationSpec{ ++ Source: &appv1.ApplicationSource{ ++ Kustomize: &appv1.ApplicationSourceKustomize{}, ++ }, ++ }, ++ } ++ ++ ks, src, err := generateFluxKustomizationAndGitSource(app) ++ assert.NoError(t, err, "should not have error") ++ assert.NotNil(t, ks, "should not be nil") ++ assert.NotNil(t, src, "should not be nil") ++ assert.Equal(t, "Kustomization", ks.GetKind(), "should equal") ++ assert.Equal(t, "name", ks.GetName(), "should equal") ++ assert.Equal(t, "10m", ks.Object["spec"].(map[string]interface{})["interval"], "should equal") ++ assert.Equal(t, true, ks.Object["spec"].(map[string]interface{})["wait"], "should equal") ++ ++ err = overrideSpec(app, FlamingoKustomizeOverride, ks) ++ assert.NoError(t, err, "should not have error") ++ assert.NotNil(t, ks, "should not be nil") ++ assert.Equal(t, "Kustomization", ks.GetKind(), "should equal") ++ assert.Equal(t, "name", ks.GetName(), "should equal") ++ assert.Equal(t, "5m0s", ks.Object["spec"].(map[string]interface{})["interval"], "should equal") ++ assert.Equal(t, false, ks.Object["spec"].(map[string]interface{})["wait"], "should equal") ++ ++ assert.Equal(t, "GitRepository", src.GetKind(), "should equal") + } + +-func TestGenerateFluxKustomizationAndSource(t *testing.T) { +- generateFluxKustomizationAndSource(app) ++func TestGenerateFluxHelmAndSourceWithSpecReplace(t *testing.T) { ++ app := &appv1.Application{ ++ ObjectMeta: v1.ObjectMeta{ ++ Name: "name", ++ Annotations: map[string]string{ ++ FlamingoKustomizeReplace: `spec: ++ interval: 5m0s ++ wait: false ++`, ++ }, ++ }, ++ Spec: appv1.ApplicationSpec{ ++ Source: &appv1.ApplicationSource{ ++ Kustomize: &appv1.ApplicationSourceKustomize{}, ++ }, ++ }, ++ } ++ ++ ks, src, err := generateFluxKustomizationAndGitSource(app) ++ assert.NoError(t, err, "should not have error") ++ assert.NotNil(t, ks, "should not be nil") ++ assert.NotNil(t, src, "should not be nil") ++ assert.Equal(t, "Kustomization", ks.GetKind(), "should equal") ++ assert.Equal(t, "name", ks.GetName(), "should equal") ++ assert.Equal(t, "10m", ks.Object["spec"].(map[string]interface{})["interval"], "should equal") ++ assert.Equal(t, true, ks.Object["spec"].(map[string]interface{})["wait"], "should equal") ++ assert.Equal(t, true, ks.Object["spec"].(map[string]interface{})["prune"], "should equal") ++ ++ err = replaceSpec(app, FlamingoKustomizeReplace, ks) ++ assert.NoError(t, err, "should not have error") ++ assert.NotNil(t, ks, "should not be nil") ++ assert.Equal(t, "Kustomization", ks.GetKind(), "should equal") ++ assert.Equal(t, "name", ks.GetName(), "should equal") ++ assert.Equal(t, "5m0s", ks.Object["spec"].(map[string]interface{})["interval"], "should equal") ++ assert.Equal(t, false, ks.Object["spec"].(map[string]interface{})["wait"], "should equal") ++ assert.Equal(t, nil, ks.Object["spec"].(map[string]interface{})["prune"], "should equal") ++ ++ assert.Equal(t, "GitRepository", src.GetKind(), "should equal") + } +-*/ diff --git a/patches-argo-cd-v2.10/series b/patches-argo-cd-v2.10/series new file mode 100644 index 0000000..93cbc31 --- /dev/null +++ b/patches-argo-cd-v2.10/series @@ -0,0 +1,24 @@ +# This series applies on Git commit fcf5d8c2381b68ab1621b90be63913b12cca2eb7 +01-build-with-local-gitops-engine.patch +02-implement-loopback.patch +03-allow-flux-and-oci-schemes.patch +04-ui-fix-find-leaf-pod-bug.patch +05-ui-show-kstatus-in-ui.patch +06-show-custom-info.patch +07-ui-add-resource-icons.patch +08-ui-implement-health-checks-and.patch +09-auto-create-flux-resources.patch +10-add-flux-options-to-the-ui.patch +11-support-helm-oci-and.patch +12-add-open-in-weave-gitops.patch +13-upgrade-to-flux-v2.0.0-rc.1.patch +14-fix-branch-and-rev-info-of.patch +15-change-logo-to-flamingo.patch +16-override-workload-name-with.patch +17-add-tilt-dev-support.patch +18-add-oci-repository.patch +19-fix-special-supported-schemes.patch +20-add-health-message-for-helm.patch +21-fix-health-message-in.patch +22-fix-flux-2.2-oci.patch +23-allow-overriding-flux-object.patch