From 180dec4c933c8a831011be271189dd1641e31190 Mon Sep 17 00:00:00 2001 From: Dawid Sowa Date: Fri, 20 Oct 2023 16:34:59 +0200 Subject: [PATCH 01/10] test: fix failing unit tests --- examples/pools/manifests.spec.ts | 32 ++++++++++++++++---------------- release.config.js | 2 +- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/examples/pools/manifests.spec.ts b/examples/pools/manifests.spec.ts index 6cc1856c..65b40108 100644 --- a/examples/pools/manifests.spec.ts +++ b/examples/pools/manifests.spec.ts @@ -9,7 +9,7 @@ describe('pools manifests', () => { kind: 'String', value: stringManifest, }, - RadixNetwork.Ansharnet + RadixNetwork.Stokenet ) if (manifest.kind === 'Invalid') { @@ -20,24 +20,24 @@ describe('pools manifests', () => { } it('should create pools', () => { - ;[ + ;;[ createPoolManifest( - 'package_tdx_d_1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxa0ecqd', + 'package_tdx_2_1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxe4r780', 'OneResourcePool', - 'resource_tdx_d_1t4efp7jyqd5kk4c3v6atdnenklfymrv3prhqppeg2hpvd3nthwevda' + 'resource_tdx_2_1t5h2mngzd20822qf4crt76pc52ms5ml4534va9cs7ddqagna7ye6jt' ), createPoolManifest( - 'package_tdx_d_1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxa0ecqd', + 'package_tdx_2_1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxe4r780', 'TwoResourcePool', - 'resource_tdx_d_1t4efp7jyqd5kk4c3v6atdnenklfymrv3prhqppeg2hpvd3nthwevda', - 'resource_tdx_d_1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxepwmma' + 'resource_tdx_2_1t5h2mngzd20822qf4crt76pc52ms5ml4534va9cs7ddqagna7ye6jt', + 'resource_tdx_2_1thfqzpm8rnf9c9c45n9t56h0h9lnr6d4d3htpp2j0clf7gek4v8ugw' ), createPoolManifest( - 'package_tdx_d_1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxa0ecqd', + 'package_tdx_2_1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxe4r780', 'MultiResourcePool', - 'resource_tdx_d_1t4efp7jyqd5kk4c3v6atdnenklfymrv3prhqppeg2hpvd3nthwevda', - 'resource_tdx_d_1tks6e8anwle200a78zt2393d9azxppyln3p4508a7j532mlzhu5d4y', - 'resource_tdx_d_1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxepwmma' + 'resource_tdx_2_1t5h2mngzd20822qf4crt76pc52ms5ml4534va9cs7ddqagna7ye6jt', + 'resource_tdx_2_1thfqzpm8rnf9c9c45n9t56h0h9lnr6d4d3htpp2j0clf7gek4v8ugw', + 'resource_tdx_2_1thr2u25j2fw45lfrttrsawvwu0m5cdm0y2qtkr2nzd45m296wz4fke' ), ].reduce(async (prev, manifest) => { await prev @@ -72,20 +72,20 @@ describe('pools manifests', () => { it('should contribute to pools', () => { ;[ contributeToPoolManifest( - 'account_tdx_d_1289fvg92eldy87sas4j0sqy5jnld4q7lavqhlu9sxf5cjcsj7hyx9u', - 'pool_tdx_d_1chglnrgkkn4uqgfsea7t9h4lzcy9a2agsp5h24vnws0njs4n7ey95q', + 'account_tdx_2_168qgdkgfqxpnswu38wy6fy5v0q0um52zd0umuely5t9xrf88x4wqmf', + 'pool_tdx_2_1c5mplf9rxrht4rm9pq2dx3euqh4glccgfq6wldynl6t4ryjzg680pe', [ { amount: '100', resourceAddress: - 'resource_tdx_d_1tks6e8anwle200a78zt2393d9azxppyln3p4508a7j532mlzhu5d4y', + 'resource_tdx_2_1thr2u25j2fw45lfrttrsawvwu0m5cdm0y2qtkr2nzd45m296wz4fke', }, { amount: '200', accountToWithdrawFrom: - 'account_tdx_d_1289fvg92eldy87sas4j0sqy5jnld4q7lavqhlu9sxf5cjcsj7hyx9u', + 'account_tdx_2_12yvp2f66agxcqpe6l26cavhkvuel9x4l6cezc8k3exq6a6vh4ty3hq', resourceAddress: - 'resource_tdx_d_1tks6e8anwle200a78zt2393d9azxppyln3p4508a7j532mlzhu5d4y', + 'resource_tdx_2_1t45j74dexzlu6ugnm8eask498c47pmxlj4sptrrv7ve0re0tnlrgac', }, ] ), diff --git a/release.config.js b/release.config.js index 266c584d..45f2063c 100644 --- a/release.config.js +++ b/release.config.js @@ -34,7 +34,7 @@ module.exports = { }, { type: 'test', - release: 'patch', + release: false, }, { type: 'style', From e32e53eaf68dc1fe29ddf07e63f705ff73c127a1 Mon Sep 17 00:00:00 2001 From: Duje Begonja Date: Mon, 30 Oct 2023 09:01:04 -0400 Subject: [PATCH 02/10] remove build and deployment to kubernetes --- .github/workflows/build.yml | 487 ---------------------- .github/workflows/delete-release-env.yaml | 36 -- 2 files changed, 523 deletions(-) delete mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/delete-release-env.yaml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index cfedb836..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,487 +0,0 @@ -name: Build - -on: - workflow_dispatch: - inputs: - ENVIRONMENT_NAME: - description: 'Environment Name' - required: true - default: Stokenet - type: choice - options: - - Mainnet - - Stokenet - - push: - branches: - - develop - - release/* - pull_request: - branches: - - develop - - release/** - release: - types: [published] - -jobs: - snyk-scan-deps-licences: - runs-on: ubuntu-latest - permissions: - id-token: write - pull-requests: read - contents: read - deployments: write - steps: - - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: radixdlt/public-iac-resuable-artifacts/fetch-secrets@main - with: - role_name: ${{ secrets.AWS_ROLE_NAME_SNYK_SECRET }} - app_name: 'radix-dapp-toolkit' - step_name: 'snyk-scan-deps-licenses' - secret_prefix: 'SNYK' - secret_name: ${{ secrets.AWS_SECRET_NAME_SNYK }} - parse_json: true - - name: Run Snyk to check for deps vulnerabilities - uses: snyk/actions/node@b98d498629f1c368650224d6d212bf7dfa89e4bf # v0.4.0 - with: - args: --all-projects --org=${{ env.SNYK_PROJECTS_ORG_ID }} --severity-threshold=critical - - snyk-scan-code: - runs-on: ubuntu-latest - permissions: - id-token: write - pull-requests: read - contents: read - deployments: write - steps: - - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: radixdlt/public-iac-resuable-artifacts/fetch-secrets@main - with: - role_name: ${{ secrets.AWS_ROLE_NAME_SNYK_SECRET }} - app_name: 'radix-dapp-toolkit' - step_name: 'snyk-scan-code' - secret_prefix: 'SNYK' - secret_name: ${{ secrets.AWS_SECRET_NAME_SNYK }} - parse_json: true - - name: Run Snyk to check for code vulnerabilities - uses: snyk/actions/node@b98d498629f1c368650224d6d212bf7dfa89e4bf # v0.4.0 - with: - args: --all-projects --org=${{ env.SNYK_PROJECTS_ORG_ID }} --severity-threshold=high - command: code test - - snyk-sbom: - runs-on: ubuntu-latest - permissions: - id-token: write - pull-requests: read - contents: read - deployments: write - needs: - - snyk-scan-deps-licences - - snyk-scan-code - steps: - - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: radixdlt/public-iac-resuable-artifacts/fetch-secrets@main - with: - role_name: ${{ secrets.AWS_ROLE_NAME_SNYK_SECRET }} - app_name: 'radix-dapp-toolkit' - step_name: 'snyk-sbom' - secret_prefix: 'SNYK' - secret_name: ${{ secrets.AWS_SECRET_NAME_SNYK }} - parse_json: true - - name: Generate SBOM # check SBOM can be generated but nothing is done with it - uses: snyk/actions/node@b98d498629f1c368650224d6d212bf7dfa89e4bf # v0.4.0 - with: - args: --all-projects --org=${{ env.SNYK_PROJECTS_ORG_ID }} --format=cyclonedx1.4+json --json-file-output sbom.json - command: sbom - - build: - runs-on: ubuntu-latest - needs: - - snyk-scan-deps-licences - - snyk-scan-code - outputs: - tag: ${{ steps.setup_tags.outputs.tag }} - steps: - - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c - - - name: Setup tags for docker image - id: setup_tags - run: echo "tag=sha-$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - - - name: Use Node.js - uses: actions/setup-node@7c29869aec4da703a571b27bcd84d4f15af0b56e - with: - node-version: '18.x' - - - name: Authenticate with private NPM package - run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPMJS_TOKEN }}" > ~/.npmrc - - - name: Install dependencies - run: npm ci - - - name: Run tests - run: npm run test - - - name: Build - run: npm run build - - - name: Dump context - uses: crazy-max/ghaction-dump-context@v2 - - setup-build-args: - runs-on: ubuntu-latest - name: Setup build argument values for docker - outputs: - network: ${{ steps.network_name_step.outputs.network_name }} - is_public: ${{ steps.network_name_step.outputs.is_public }} - steps: - - name: Dump context - uses: crazy-max/ghaction-dump-context@v2 - - name: Info - run: | - echo "This is triggered by: ${{ github.event_name }}" >> $GITHUB_STEP_SUMMARY - - name: Define network name - id: network_name_step - run: | - if [ "${{ github.event_name}}" = 'release' -a ${{!github.event.release.prerelease}} ] || [ ${{github.event_name }} = 'workflow_dispatch' -a "${{github.event.inputs.ENVIRONMENT_NAME}}" = 'Mainnet' ]; then - echo "is_public=true" >> $GITHUB_OUTPUT - echo "network_name=Mainnet" >> $GITHUB_OUTPUT - elif [ ${{github.event_name }} = 'workflow_dispatch' -a "${{github.event.inputs.ENVIRONMENT_NAME}}" = 'Stokenet' ]; then - echo "is_public=true" >> $GITHUB_OUTPUT - echo "network_name=Stokenet" >> $GITHUB_OUTPUT - else - echo "is_public=false" >> $GITHUB_OUTPUT - echo "network_name=" >> $GITHUB_OUTPUT - fi - - push-docker-image: - name: (PRIVATE) Docker AMD - needs: - - setup-build-args - - build - uses: radixdlt/public-iac-resuable-artifacts/.github/workflows/docker-build.yml@main - with: - runs_on: ubuntu-latest - image_registry: "docker.io" - image_organization: "radixdlt" - image_name: "private-radix-dapp-toolkit" - tag: ${{ needs.build.outputs.tag }} - tags: | - type=semver,pattern={{version}} - context: "./" - dockerfile: "./Dockerfile" - platforms: "linux/amd64" - scan_image: true - snyk_target_ref: ${{ github.ref_name }} - build-args: | - NETWORK_NAME=${{needs.setup-build-args.outputs.network}} - IS_PUBLIC=${{needs.setup-build-args.outputs.is_public}} - - snyk-monitor: - runs-on: ubuntu-latest - if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop') - needs: - - push-docker-image - permissions: - id-token: write - pull-requests: read - contents: read - deployments: write - steps: - - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: radixdlt/public-iac-resuable-artifacts/fetch-secrets@main - with: - role_name: ${{ secrets.AWS_ROLE_NAME_SNYK_SECRET }} - app_name: 'radix-dapp-toolkit' - step_name: 'snyk-monitor' - secret_prefix: 'SNYK' - secret_name: ${{ secrets.AWS_SECRET_NAME_SNYK }} - parse_json: true - - name: Enable Snyk online monitoring to check for vulnerabilities - uses: snyk/actions/node@b98d498629f1c368650224d6d212bf7dfa89e4bf # v0.4.0 - with: - args: --all-projects --org=${{ env.SNYK_PROJECTS_ORG_ID }} --target-reference=${{ github.ref_name }} - command: monitor - - snyk-container-monitor: - runs-on: ubuntu-latest - if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop') - needs: - - push-docker-image - permissions: - id-token: write - pull-requests: read - contents: read - deployments: write - steps: - - uses: radixdlt/public-iac-resuable-artifacts/snyk-container-monitor@main - with: - role_name: ${{ secrets.AWS_ROLE_NAME_SNYK_SECRET }} - app_name: 'radix-dapp-toolkit' - step_name: 'snyk-container-monitor' - dockerhub_secret_name: ${{ secrets.AWS_SECRET_NAME_DOCKERHUB }} - snyk_secret_name: ${{ secrets.AWS_SECRET_NAME_SNYK }} - parse_json: true - snyk_org_id: ${{ secrets.SNYK_ORG_ID }} - image: docker.io/radixdlt/private-radix-dapp-toolkit:${{ fromJSON(needs.push-docker-image.outputs.json).labels['org.opencontainers.image.version'] }} - target_ref: ${{ github.ref_name }} - - deploy-pr: - if: ${{ github.event_name == 'pull_request' }} - runs-on: ubuntu-latest - needs: - - push-docker-image - permissions: - id-token: write - contents: read - pull-requests: read - steps: - - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: unfor19/install-aws-cli-action@457b7980b125044247e455d87b9a26fc2299b787 - with: - version: 2 - - name: Setup helmfile and helm - uses: mamezou-tech/setup-helmfile@55ae2a66c5af4883148b7a50cc6ddc9b61042184 - with: - helm-diff-plugin-version: 'v3.1.3' - helmfile-version: 'v0.144.0' - helm-version: 'v3.11.0' - install-kubectl: no - - name: Install kubectl - uses: azure/setup-kubectl@901a10e89ea615cf61f57ac05cecdf23e7de06d8 #v3.2 - with: - version: 'v1.25.6' - - name: Configure AWS credentials for deployment - uses: aws-actions/configure-aws-credentials@bab55d3830fe69833c9fecaa51fe2c829a7508f3 - with: - role-to-assume: ${{ secrets.DEPLOY_PR_IAM_ROLE }} - aws-region: eu-west-2 - - name: Deploy application - working-directory: deploy/helm - run: | - cat < namespace.yaml - apiVersion: hnc.x-k8s.io/v1alpha2 - kind: SubnamespaceAnchor - metadata: - name: radix-dapp-toolkit-pr-${{ github.event.number }} - namespace: radix-dapp-toolkit-ci-pr - DOC - - aws eks update-kubeconfig --name ${{ secrets.CLUSTER_NAME }} \ - --alias ${{ secrets.CLUSTER_NAME }} \ - --region eu-west-2 - - kubectl apply -f namespace.yaml - - helmfile --environment pr --namespace radix-dapp-toolkit-pr-${{ github.event.number }} \ - --state-values-set "ci.tag=${{ env.CI_TAG }}" \ - --state-values-set "ci.ingressDomain=${{ env.INGRESS_DOMAIN }}" \ - apply - env: - CI_TAG: ${{ fromJSON(needs.push-docker-image.outputs.json).labels['org.opencontainers.image.version'] }} - INGRESS_DOMAIN: radix-dapp-toolkit-pr-${{ github.event.number}}.${{ secrets.INGRESS_DOMAIN }} - HELM_GH_USER: ${{ secrets.HELM_GH_USER }} - HELM_GH_PASS: ${{ secrets.HELM_GH_PASS }} - - deploy-dev: - if: github.ref == 'refs/heads/develop' && github.event_name == 'push' - runs-on: ubuntu-latest - needs: - - push-docker-image - permissions: - id-token: write - contents: read - pull-requests: read - steps: - - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: unfor19/install-aws-cli-action@457b7980b125044247e455d87b9a26fc2299b787 - with: - version: 2 - - name: Setup helmfile and helm - uses: mamezou-tech/setup-helmfile@55ae2a66c5af4883148b7a50cc6ddc9b61042184 - with: - helm-diff-plugin-version: 'v3.1.3' - helmfile-version: 'v0.144.0' - helm-version: 'v3.11.0' - install-kubectl: no - - name: Install kubectl - uses: azure/setup-kubectl@901a10e89ea615cf61f57ac05cecdf23e7de06d8 #v3.2 - with: - version: 'v1.25.6' - - name: Configure AWS credentials for deployment - uses: aws-actions/configure-aws-credentials@bab55d3830fe69833c9fecaa51fe2c829a7508f3 - with: - role-to-assume: ${{ secrets.DEPLOY_DEV_IAM_ROLE }} - aws-region: eu-west-2 - - name: Deploy application - working-directory: deploy/helm - run: | - aws eks update-kubeconfig --name ${{ secrets.CLUSTER_NAME }} \ - --alias ${{ secrets.CLUSTER_NAME }} \ - --region eu-west-2 - - helmfile --environment dev --namespace radix-dapp-toolkit-dev \ - --state-values-set "ci.tag=${{ env.CI_TAG }}" \ - --state-values-set "ci.ingressDomain=${{ env.INGRESS_DOMAIN }}" \ - apply - env: - CI_TAG: ${{ fromJSON(needs.push-docker-image.outputs.json).labels['org.opencontainers.image.version'] }} - INGRESS_DOMAIN: radix-dapp-toolkit-dev.${{ secrets.INGRESS_DOMAIN }} - HELM_GH_USER: ${{ secrets.HELM_GH_USER }} - HELM_GH_PASS: ${{ secrets.HELM_GH_PASS }} - - deploy-release: - if: startsWith(github.ref_name,'release/') - runs-on: ubuntu-latest - needs: - - push-docker-image - permissions: - id-token: write - contents: read - pull-requests: read - steps: - - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: unfor19/install-aws-cli-action@457b7980b125044247e455d87b9a26fc2299b787 - with: - version: 2 - - name: Setup helmfile and helm - uses: mamezou-tech/setup-helmfile@55ae2a66c5af4883148b7a50cc6ddc9b61042184 - with: - helm-diff-plugin-version: 'v3.1.3' - helmfile-version: 'v0.144.0' - helm-version: 'v3.11.0' - install-kubectl: no - - name: Install kubectl - uses: azure/setup-kubectl@901a10e89ea615cf61f57ac05cecdf23e7de06d8 #v3.2 - with: - version: 'v1.25.6' - - name: Configure AWS credentials for deployment - uses: aws-actions/configure-aws-credentials@bab55d3830fe69833c9fecaa51fe2c829a7508f3 - with: - role-to-assume: ${{ secrets.DEPLOY_RELEASES_IAM_ROLE }} - aws-region: eu-west-2 - - name: Deploy application - working-directory: deploy/helm - run: | - aws eks update-kubeconfig --name ${{ secrets.CLUSTER_NAME }} \ - --alias ${{ secrets.CLUSTER_NAME }} \ - --region eu-west-2 - - BRANCH_NAME=${{ github.ref_name }} - NORMALIZED_BRANCH_NAME=${BRANCH_NAME/\//-} - - cat < subns-manifest.yaml - apiVersion: hnc.x-k8s.io/v1alpha2 - kind: SubnamespaceAnchor - metadata: - name: radix-dapp-toolkit-$NORMALIZED_BRANCH_NAME - namespace: radix-dapp-toolkit-ci-releases - DOC - - kubectl apply -f subns-manifest.yaml - - helmfile --environment dev --namespace radix-dapp-toolkit-$NORMALIZED_BRANCH_NAME \ - --state-values-set "ci.tag=${{ env.CI_TAG }}" \ - --state-values-set "ci.ingressDomain=radix-dapp-toolkit-${NORMALIZED_BRANCH_NAME}.${{ env.INGRESS_DOMAIN }}" \ - apply - env: - CI_TAG: ${{ fromJSON(needs.push-docker-image.outputs.json).labels['org.opencontainers.image.version'] }} - INGRESS_DOMAIN: ${{ secrets.INGRESS_DOMAIN }} - HELM_GH_USER: ${{ secrets.HELM_GH_USER }} - HELM_GH_PASS: ${{ secrets.HELM_GH_PASS }} - - deploy-stokenet: - if: ( github.event.inputs.ENVIRONMENT_NAME == 'Stokenet' && github.event_name == 'workflow_dispatch' ) - runs-on: ubuntu-latest - environment: stokenet - needs: - - push-docker-image - permissions: - id-token: write - contents: read - pull-requests: read - steps: - - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: unfor19/install-aws-cli-action@457b7980b125044247e455d87b9a26fc2299b787 - with: - version: 2 - - name: Setup helmfile and helm - uses: mamezou-tech/setup-helmfile@55ae2a66c5af4883148b7a50cc6ddc9b61042184 - with: - helm-diff-plugin-version: 'v3.1.3' - helmfile-version: 'v0.144.0' - helm-version: 'v3.11.0' - install-kubectl: no - - name: Install kubectl - uses: azure/setup-kubectl@901a10e89ea615cf61f57ac05cecdf23e7de06d8 #v3.2 - with: - version: 'v1.25.6' - - name: Configure AWS credentials for deployment - uses: aws-actions/configure-aws-credentials@bab55d3830fe69833c9fecaa51fe2c829a7508f3 - with: - role-to-assume: ${{ secrets.DEPLOY_STOKENET_IAM_ROLE }} - aws-region: eu-west-2 - - name: Deploy application - working-directory: deploy/helm - run: | - aws eks update-kubeconfig --name ${{ secrets.STOKENET_CLUSTER_NAME }} \ - --alias ${{ secrets.STOKENET_CLUSTER_NAME }} \ - --region eu-west-2 - - helmfile --environment stokenet --namespace radix-dapp-toolkit-stokenet \ - --state-values-set "ci.tag=${{ env.CI_TAG }}" \ - --state-values-set "ci.ingressDomain=${{ env.INGRESS_DOMAIN }}" \ - apply - env: - CI_TAG: ${{ fromJSON(needs.push-docker-image.outputs.json).labels['org.opencontainers.image.version'] }} - INGRESS_DOMAIN: ${{ secrets.STOKENET_INGRESS_DOMAIN }} - HELM_GH_USER: ${{ secrets.HELM_GH_USER }} - HELM_GH_PASS: ${{ secrets.HELM_GH_PASS }} - - deploy-mainnet: - if: github.event_name == 'release' && !github.event.release.prerelease || ( github.event.inputs.ENVIRONMENT_NAME == 'Mainnet' && github.event_name == 'workflow_dispatch' ) - runs-on: ubuntu-latest - needs: - - push-docker-image - permissions: - id-token: write - contents: read - pull-requests: read - steps: - - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: unfor19/install-aws-cli-action@457b7980b125044247e455d87b9a26fc2299b787 - with: - version: 2 - - name: Setup helmfile and helm - uses: mamezou-tech/setup-helmfile@55ae2a66c5af4883148b7a50cc6ddc9b61042184 - with: - helm-diff-plugin-version: 'v3.1.3' - helmfile-version: 'v0.144.0' - helm-version: 'v3.11.0' - install-kubectl: no - - name: Install kubectl - uses: azure/setup-kubectl@901a10e89ea615cf61f57ac05cecdf23e7de06d8 #v3.2 - with: - version: 'v1.25.6' - - name: Configure AWS credentials for deployment - uses: aws-actions/configure-aws-credentials@bab55d3830fe69833c9fecaa51fe2c829a7508f3 - with: - role-to-assume: ${{ secrets.DEPLOY_MAINNET_IAM_ROLE }} - aws-region: eu-west-2 - - name: Deploy application - working-directory: deploy/helm - run: | - aws eks update-kubeconfig --name ${{ secrets.MAINNET_CLUSTER_NAME }} \ - --alias ${{ secrets.MAINNET_CLUSTER_NAME }} \ - --region eu-west-2 - - helmfile --environment mainnet --namespace radix-dapp-toolkit-mainnet \ - --state-values-set "ci.tag=${{ env.CI_TAG }}" \ - --state-values-set "ci.ingressDomain=${{ env.INGRESS_DOMAIN }}" \ - apply - env: - CI_TAG: ${{ fromJSON(needs.push-docker-image.outputs.json).labels['org.opencontainers.image.version'] }} - INGRESS_DOMAIN: ${{ secrets.MAINNET_INGRESS_DOMAIN }} - HELM_GH_USER: ${{ secrets.HELM_GH_USER }} - HELM_GH_PASS: ${{ secrets.HELM_GH_PASS }} diff --git a/.github/workflows/delete-release-env.yaml b/.github/workflows/delete-release-env.yaml deleted file mode 100644 index 6a3d9b00..00000000 --- a/.github/workflows/delete-release-env.yaml +++ /dev/null @@ -1,36 +0,0 @@ -name: Delete release environment - -on: delete - -jobs: - delete-release-env: - if: github.event.ref_type == 'branch' && contains(github.event.ref, 'release') - runs-on: ubuntu-latest - permissions: - id-token: write - contents: read - pull-requests: read - steps: - - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b - - uses: unfor19/install-aws-cli-action@v1 - with: - version: 2 - - name: Install kubectl - uses: azure/setup-kubectl@901a10e89ea615cf61f57ac05cecdf23e7de06d8 #v3.2 - with: - version: "v1.25.6" - - name: Configure AWS credentials for deployment - uses: aws-actions/configure-aws-credentials@v1 - with: - role-to-assume: ${{ secrets.DEPLOY_RELEASES_IAM_ROLE }} - aws-region: eu-west-2 - - name: Delete PR - run: | - aws eks update-kubeconfig --name ${{ secrets.CLUSTER_NAME }} \ - --alias ${{ secrets.CLUSTER_NAME }} \ - --region eu-west-2 - - BRANCH_NAME=${{ github.ref_name }} - NORMALIZED_BRANCH_NAME=${BRANCH_NAME/\//-} - - kubectl delete subns radix-dapp-toolkit-$NORMALIZED_BRANCH_NAME -n radix-dapp-toolkit-ci-releases From e7f5462714be531f4ea12677ac9a40da59ec118b Mon Sep 17 00:00:00 2001 From: Duje Begonja Date: Mon, 30 Oct 2023 09:13:26 -0400 Subject: [PATCH 03/10] return build.yml --- .github/workflows/build.yml | 130 ++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..11500242 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,130 @@ +name: Build + +on: + workflow_dispatch: + inputs: + ENVIRONMENT_NAME: + description: 'Environment Name' + required: true + default: Stokenet + type: choice + options: + - Mainnet + - Stokenet + + push: + branches: + - develop + - release/* + pull_request: + branches: + - develop + - release/** + release: + types: [published] + +jobs: + snyk-scan-deps-licences: + runs-on: ubuntu-latest + permissions: + id-token: write + pull-requests: read + contents: read + deployments: write + steps: + - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b + - uses: radixdlt/public-iac-resuable-artifacts/fetch-secrets@main + with: + role_name: ${{ secrets.AWS_ROLE_NAME_SNYK_SECRET }} + app_name: 'radix-dapp-toolkit' + step_name: 'snyk-scan-deps-licenses' + secret_prefix: 'SNYK' + secret_name: ${{ secrets.AWS_SECRET_NAME_SNYK }} + parse_json: true + - name: Run Snyk to check for deps vulnerabilities + uses: snyk/actions/node@b98d498629f1c368650224d6d212bf7dfa89e4bf # v0.4.0 + with: + args: --all-projects --org=${{ env.SNYK_PROJECTS_ORG_ID }} --severity-threshold=critical + + snyk-scan-code: + runs-on: ubuntu-latest + permissions: + id-token: write + pull-requests: read + contents: read + deployments: write + steps: + - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b + - uses: radixdlt/public-iac-resuable-artifacts/fetch-secrets@main + with: + role_name: ${{ secrets.AWS_ROLE_NAME_SNYK_SECRET }} + app_name: 'radix-dapp-toolkit' + step_name: 'snyk-scan-code' + secret_prefix: 'SNYK' + secret_name: ${{ secrets.AWS_SECRET_NAME_SNYK }} + parse_json: true + - name: Run Snyk to check for code vulnerabilities + uses: snyk/actions/node@b98d498629f1c368650224d6d212bf7dfa89e4bf # v0.4.0 + with: + args: --all-projects --org=${{ env.SNYK_PROJECTS_ORG_ID }} --severity-threshold=high + command: code test + + snyk-sbom: + runs-on: ubuntu-latest + permissions: + id-token: write + pull-requests: read + contents: read + deployments: write + needs: + - snyk-scan-deps-licences + - snyk-scan-code + steps: + - uses: actions/checkout@755da8c3cf115ac066823e79a1e1788f8940201b + - uses: radixdlt/public-iac-resuable-artifacts/fetch-secrets@main + with: + role_name: ${{ secrets.AWS_ROLE_NAME_SNYK_SECRET }} + app_name: 'radix-dapp-toolkit' + step_name: 'snyk-sbom' + secret_prefix: 'SNYK' + secret_name: ${{ secrets.AWS_SECRET_NAME_SNYK }} + parse_json: true + - name: Generate SBOM # check SBOM can be generated but nothing is done with it + uses: snyk/actions/node@b98d498629f1c368650224d6d212bf7dfa89e4bf # v0.4.0 + with: + args: --all-projects --org=${{ env.SNYK_PROJECTS_ORG_ID }} --format=cyclonedx1.4+json --json-file-output sbom.json + command: sbom + + build: + runs-on: ubuntu-latest + needs: + - snyk-scan-deps-licences + - snyk-scan-code + outputs: + tag: ${{ steps.setup_tags.outputs.tag }} + steps: + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c + + - name: Setup tags for docker image + id: setup_tags + run: echo "tag=sha-$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + + - name: Use Node.js + uses: actions/setup-node@7c29869aec4da703a571b27bcd84d4f15af0b56e + with: + node-version: '18.x' + + - name: Authenticate with private NPM package + run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPMJS_TOKEN }}" > ~/.npmrc + + - name: Install dependencies + run: npm ci + + - name: Run tests + run: npm run test + + - name: Build + run: npm run build + + - name: Dump context + uses: crazy-max/ghaction-dump-context@v2 \ No newline at end of file From 81fbdb64c170db3972e73963051a81ad7ff90308 Mon Sep 17 00:00:00 2001 From: Duje Begonja Date: Mon, 30 Oct 2023 09:19:40 -0400 Subject: [PATCH 04/10] remove step and output for docker tags --- .github/workflows/build.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 11500242..6aabe6cd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -100,15 +100,9 @@ jobs: needs: - snyk-scan-deps-licences - snyk-scan-code - outputs: - tag: ${{ steps.setup_tags.outputs.tag }} steps: - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c - - name: Setup tags for docker image - id: setup_tags - run: echo "tag=sha-$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - - name: Use Node.js uses: actions/setup-node@7c29869aec4da703a571b27bcd84d4f15af0b56e with: From e0372c188850ddc8d3bf8097877c3c7e620336f3 Mon Sep 17 00:00:00 2001 From: Dawid Sowa Date: Tue, 31 Oct 2023 14:51:14 +0100 Subject: [PATCH 05/10] no-release: remove sandbox --- .nginx/nginx.conf | 18 - Dockerfile | 43 - README.md | 7 + build.sh | 6 - .../environments/common/values.yaml.gotmpl | 9 - .../helm/environments/dev/values.yaml.gotmpl | 7 - .../environments/mainnet/values.yaml.gotmpl | 30 - .../helm/environments/pr/values.yaml.gotmpl | 7 - .../environments/stokenet/values.yaml.gotmpl | 30 - deploy/helm/helmfile.yaml | 37 - deploy/helm/radix-dapp-toolkit/.helmignore | 23 - deploy/helm/radix-dapp-toolkit/Chart.yaml | 6 - .../radix-dapp-toolkit/templates/_helpers.tpl | 62 - .../templates/basic-auth-secret.yaml | 13 - .../templates/deployment.yaml | 61 - .../templates/docker-secret.yaml | 13 - .../radix-dapp-toolkit/templates/hpa.yaml | 32 - .../radix-dapp-toolkit/templates/ingress.yaml | 61 - .../radix-dapp-toolkit/templates/service.yaml | 15 - .../templates/serviceaccount.yaml | 12 - deploy/helm/radix-dapp-toolkit/values.yaml | 51 - examples/.env.public | 2 - examples/DApp.tsx | 13 - examples/account/AccountCard.tsx | 6 - examples/account/SelectAccount.tsx | 49 - examples/account/SelectNft.tsx | 42 - examples/account/SelectNftCollection.tsx | 36 - examples/account/account.ts | 16 - examples/account/state.ts | 13 - examples/assets/favicon.png | Bin 579 -> 0 bytes examples/assets/gumball_machine.rpd | Bin 1330 -> 0 bytes examples/assets/gumball_machine.rs | 167 -- examples/assets/gumball_machine.wasm | Bin 196430 -> 0 bytes examples/assets/logo.svg | 24 - examples/assets/sandbox_icon.png | Bin 324720 -> 0 bytes examples/components/Card.tsx | 30 - examples/components/Clipboard.tsx | 9 - examples/components/Code.tsx | 9 - examples/components/InfoBox.tsx | 22 - examples/components/Layout.tsx | 178 --- examples/components/Logger.tsx | 23 - examples/components/Menu.tsx | 102 -- examples/config.ts | 4 - .../create-token/CreateFungibleTokenCard.tsx | 126 -- examples/create-token/CreateNftCard.tsx | 377 ----- examples/create-token/CreateTokenPage.tsx | 19 - examples/data-request/AccountsCard.tsx | 134 -- examples/data-request/DataRequestsPage.tsx | 68 - examples/data-request/PersonaCard.tsx | 30 - examples/data-request/PersonaDataCard.tsx | 97 -- examples/data-request/state.ts | 8 - examples/entity/state.ts | 333 ---- examples/helpers/blake2b.ts | 25 - examples/helpers/create-challenge.ts | 4 - examples/helpers/create-observable-hook.ts | 16 - examples/helpers/find-metadata.ts | 4 - examples/helpers/get-network-id.ts | 20 - examples/helpers/hash.spec.ts | 14 - examples/helpers/hash.ts | 12 - examples/helpers/load-binary-from-url.ts | 11 - examples/helpers/shorten-address.ts | 11 - examples/helpers/url-state.ts | 22 - examples/index.css | 6 - examples/index.html | 24 +- .../DeployGumballMachineCard.tsx | 151 -- .../GumballMachine/GumballMachineCard.tsx | 103 -- .../GumballMachine/GumballMachineExample.tsx | 115 -- .../GumballMachine/GumballMachineExamples.tsx | 102 -- .../GumballMachine/GumballMachineInfoBox.tsx | 22 - .../InstantiateGumballMachineCard.tsx | 169 -- .../GumballMachine/SelectGumballComponent.tsx | 36 - .../SetGumballMachinePackageCard.tsx | 35 - .../IntegrationTestsPage.tsx | 38 - examples/integration-tests/state.ts | 63 - examples/layouts/Header.tsx | 103 -- examples/layouts/Page.tsx | 49 - examples/layouts/Sidebar.tsx | 82 - examples/logger/Logger.tsx | 86 -- examples/logger/state.ts | 50 - examples/main.js | 25 + examples/manifests/deploy-package.ts | 53 - examples/manifests/examples.ts | 78 - examples/manifests/gumball-machine.ts | 26 - examples/manifests/manifests.spec.ts | 282 ---- examples/manifests/tokens.ts | 213 --- examples/network/state.ts | 59 - .../one-time-data-request/AccountsCard.tsx | 121 -- .../OneTimeDataRequestsPage.tsx | 144 -- .../one-time-data-request/PersonaDataCard.tsx | 102 -- examples/one-time-data-request/state.ts | 8 - examples/pools/CreatePoolCard.tsx | 210 --- examples/pools/PoolCard.tsx | 264 ---- examples/pools/PoolsPage.tsx | 22 - examples/pools/manifests.spec.ts | 97 -- examples/pools/manifests.ts | 83 - examples/pools/state.ts | 61 - examples/rdt/RdtProvider.tsx | 12 - examples/rdt/hooks/useRdt.ts | 8 - examples/rdt/hooks/useRdtState.ts | 20 - examples/rdt/hooks/useRequestData.ts | 8 - examples/rdt/hooks/useSendTransaction.ts | 13 - examples/rdt/rdt-context.ts | 6 - examples/rdt/rdt.ts | 139 -- examples/rdt/state.ts | 33 - examples/ret/decode-sbor.ts | 20 - examples/rola/RolaPage.tsx | 134 -- examples/router.tsx | 76 - examples/sandbox.tsx | 13 - .../send-transaction/SendTransactionPage.tsx | 103 -- examples/send-transaction/state.ts | 37 - examples/settings/SettingsPage.tsx | 82 - .../standard-metadata/StandardMetadata.tsx | 130 -- .../StandardMetadataPage.tsx | 11 - examples/standard-metadata/manifests.ts | 46 - examples/theme.tsx | 25 - package-lock.json | 1356 +---------------- package.json | 20 +- run.sh | 5 - 118 files changed, 49 insertions(+), 7949 deletions(-) delete mode 100644 .nginx/nginx.conf delete mode 100644 Dockerfile delete mode 100755 build.sh delete mode 100644 deploy/helm/environments/common/values.yaml.gotmpl delete mode 100644 deploy/helm/environments/dev/values.yaml.gotmpl delete mode 100644 deploy/helm/environments/mainnet/values.yaml.gotmpl delete mode 100644 deploy/helm/environments/pr/values.yaml.gotmpl delete mode 100644 deploy/helm/environments/stokenet/values.yaml.gotmpl delete mode 100644 deploy/helm/helmfile.yaml delete mode 100644 deploy/helm/radix-dapp-toolkit/.helmignore delete mode 100644 deploy/helm/radix-dapp-toolkit/Chart.yaml delete mode 100644 deploy/helm/radix-dapp-toolkit/templates/_helpers.tpl delete mode 100644 deploy/helm/radix-dapp-toolkit/templates/basic-auth-secret.yaml delete mode 100644 deploy/helm/radix-dapp-toolkit/templates/deployment.yaml delete mode 100644 deploy/helm/radix-dapp-toolkit/templates/docker-secret.yaml delete mode 100644 deploy/helm/radix-dapp-toolkit/templates/hpa.yaml delete mode 100644 deploy/helm/radix-dapp-toolkit/templates/ingress.yaml delete mode 100644 deploy/helm/radix-dapp-toolkit/templates/service.yaml delete mode 100644 deploy/helm/radix-dapp-toolkit/templates/serviceaccount.yaml delete mode 100644 deploy/helm/radix-dapp-toolkit/values.yaml delete mode 100644 examples/.env.public delete mode 100644 examples/DApp.tsx delete mode 100644 examples/account/AccountCard.tsx delete mode 100644 examples/account/SelectAccount.tsx delete mode 100644 examples/account/SelectNft.tsx delete mode 100644 examples/account/SelectNftCollection.tsx delete mode 100644 examples/account/account.ts delete mode 100644 examples/account/state.ts delete mode 100644 examples/assets/favicon.png delete mode 100644 examples/assets/gumball_machine.rpd delete mode 100644 examples/assets/gumball_machine.rs delete mode 100755 examples/assets/gumball_machine.wasm delete mode 100644 examples/assets/logo.svg delete mode 100644 examples/assets/sandbox_icon.png delete mode 100644 examples/components/Card.tsx delete mode 100644 examples/components/Clipboard.tsx delete mode 100644 examples/components/Code.tsx delete mode 100644 examples/components/InfoBox.tsx delete mode 100644 examples/components/Layout.tsx delete mode 100644 examples/components/Logger.tsx delete mode 100644 examples/components/Menu.tsx delete mode 100644 examples/config.ts delete mode 100644 examples/create-token/CreateFungibleTokenCard.tsx delete mode 100644 examples/create-token/CreateNftCard.tsx delete mode 100644 examples/create-token/CreateTokenPage.tsx delete mode 100644 examples/data-request/AccountsCard.tsx delete mode 100644 examples/data-request/DataRequestsPage.tsx delete mode 100644 examples/data-request/PersonaCard.tsx delete mode 100644 examples/data-request/PersonaDataCard.tsx delete mode 100644 examples/data-request/state.ts delete mode 100644 examples/entity/state.ts delete mode 100644 examples/helpers/blake2b.ts delete mode 100644 examples/helpers/create-challenge.ts delete mode 100644 examples/helpers/create-observable-hook.ts delete mode 100644 examples/helpers/find-metadata.ts delete mode 100644 examples/helpers/get-network-id.ts delete mode 100644 examples/helpers/hash.spec.ts delete mode 100644 examples/helpers/hash.ts delete mode 100644 examples/helpers/load-binary-from-url.ts delete mode 100644 examples/helpers/shorten-address.ts delete mode 100644 examples/helpers/url-state.ts delete mode 100644 examples/index.css delete mode 100644 examples/integration-tests/GumballMachine/DeployGumballMachineCard.tsx delete mode 100644 examples/integration-tests/GumballMachine/GumballMachineCard.tsx delete mode 100644 examples/integration-tests/GumballMachine/GumballMachineExample.tsx delete mode 100644 examples/integration-tests/GumballMachine/GumballMachineExamples.tsx delete mode 100644 examples/integration-tests/GumballMachine/GumballMachineInfoBox.tsx delete mode 100644 examples/integration-tests/GumballMachine/InstantiateGumballMachineCard.tsx delete mode 100644 examples/integration-tests/GumballMachine/SelectGumballComponent.tsx delete mode 100644 examples/integration-tests/GumballMachine/SetGumballMachinePackageCard.tsx delete mode 100644 examples/integration-tests/IntegrationTestsPage.tsx delete mode 100644 examples/integration-tests/state.ts delete mode 100644 examples/layouts/Header.tsx delete mode 100644 examples/layouts/Page.tsx delete mode 100644 examples/layouts/Sidebar.tsx delete mode 100644 examples/logger/Logger.tsx delete mode 100644 examples/logger/state.ts create mode 100644 examples/main.js delete mode 100644 examples/manifests/deploy-package.ts delete mode 100644 examples/manifests/examples.ts delete mode 100644 examples/manifests/gumball-machine.ts delete mode 100644 examples/manifests/manifests.spec.ts delete mode 100644 examples/manifests/tokens.ts delete mode 100644 examples/network/state.ts delete mode 100644 examples/one-time-data-request/AccountsCard.tsx delete mode 100644 examples/one-time-data-request/OneTimeDataRequestsPage.tsx delete mode 100644 examples/one-time-data-request/PersonaDataCard.tsx delete mode 100644 examples/one-time-data-request/state.ts delete mode 100644 examples/pools/CreatePoolCard.tsx delete mode 100644 examples/pools/PoolCard.tsx delete mode 100644 examples/pools/PoolsPage.tsx delete mode 100644 examples/pools/manifests.spec.ts delete mode 100644 examples/pools/manifests.ts delete mode 100644 examples/pools/state.ts delete mode 100644 examples/rdt/RdtProvider.tsx delete mode 100644 examples/rdt/hooks/useRdt.ts delete mode 100644 examples/rdt/hooks/useRdtState.ts delete mode 100644 examples/rdt/hooks/useRequestData.ts delete mode 100644 examples/rdt/hooks/useSendTransaction.ts delete mode 100644 examples/rdt/rdt-context.ts delete mode 100644 examples/rdt/rdt.ts delete mode 100644 examples/rdt/state.ts delete mode 100644 examples/ret/decode-sbor.ts delete mode 100644 examples/rola/RolaPage.tsx delete mode 100644 examples/router.tsx delete mode 100644 examples/sandbox.tsx delete mode 100644 examples/send-transaction/SendTransactionPage.tsx delete mode 100644 examples/send-transaction/state.ts delete mode 100644 examples/settings/SettingsPage.tsx delete mode 100644 examples/standard-metadata/StandardMetadata.tsx delete mode 100644 examples/standard-metadata/StandardMetadataPage.tsx delete mode 100644 examples/standard-metadata/manifests.ts delete mode 100644 examples/theme.tsx delete mode 100755 run.sh diff --git a/.nginx/nginx.conf b/.nginx/nginx.conf deleted file mode 100644 index 9ad2a2bf..00000000 --- a/.nginx/nginx.conf +++ /dev/null @@ -1,18 +0,0 @@ -worker_processes 4; - -events { worker_connections 1024; } - -http { - server { - listen 80; - listen [::]:80; - server_name localhost; - include /etc/nginx/mime.types; - - location / { - root /usr/share/nginx/html; - index index.html; - try_files $uri $uri/ /index.html =404; - } - } -} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 73af8717..00000000 --- a/Dockerfile +++ /dev/null @@ -1,43 +0,0 @@ -ARG BUILDKIT_SBOM_SCAN_CONTEXT=true - -FROM node:16-alpine as builder - -ARG BUILDKIT_SBOM_SCAN_STAGE=true - -WORKDIR /app - -# Copy the package.json and install dependencies -COPY package.json ./ -COPY package-lock.json ./ -RUN npm install - -ARG NETWORK_NAME -ENV VITE_NETWORK_NAME=$NETWORK_NAME - -ARG IS_PUBLIC -ENV VITE_IS_PUBLIC=$IS_PUBLIC - -RUN echo "The VITE_IS_PUBLIC variable value is $VITE_IS_PUBLIC" -RUN echo "The VITE_NETWORK_NAME variable value is $VITE_NETWORK_NAME" - -# Copy rest of the files -COPY . . - -# Build the project -RUN npm run build examples -RUN cp -r ./examples/assets/sandbox_icon.png ./examples/dist/assets/sandbox_icon.png -RUN cp -r ./examples/assets/favicon.png ./examples/dist/assets/favicon.png - -FROM nginx:alpine as production-build - -ARG BUILDKIT_SBOM_SCAN_STAGE=true - -COPY ./.nginx/nginx.conf /etc/nginx/nginx.conf - -## Remove default nginx index page -RUN rm -rf /usr/share/nginx/html/* - -COPY --from=builder /app/examples/dist /usr/share/nginx/html - -EXPOSE 80 -ENTRYPOINT ["nginx", "-g", "daemon off;"] diff --git a/README.md b/README.md index d888d099..d44067d7 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ - [`DataRequestBuilder.config(input: DataRequestState)`](#datarequestbuilderconfiginput-datarequeststate) - [Handle connect responses](#handle-connect-responses) - [One Time Data Request](#one-time-data-request) + - [Data Requests Sandbox](#data-requests-sandbox) - [State changes](#state-changes) - [Transaction requests](#transaction-requests) - [Build transaction manifest](#build-transaction-manifest) @@ -378,6 +379,12 @@ if (result.isErr()) return handleException() const walletData = result.value ``` +### Data Requests Sandbox + +Play around with the different data requests in +* [Stokenet sandbox environment](https://stokenet-sandbox.radixdlt.com/) +* [Mainnet sandbox environment](https://sandbox.radixdlt.com/) + ## State changes Listen to wallet data changes by subscribing to `walletApi.walletData$`. diff --git a/build.sh b/build.sh deleted file mode 100755 index c20fc2f9..00000000 --- a/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -set -e - -# Build the docker image -docker build -t sandbox:latest . --build-arg NETWORK_NAME=Stokenet --build-arg IS_PUBLIC=false \ No newline at end of file diff --git a/deploy/helm/environments/common/values.yaml.gotmpl b/deploy/helm/environments/common/values.yaml.gotmpl deleted file mode 100644 index 7c6cfd52..00000000 --- a/deploy/helm/environments/common/values.yaml.gotmpl +++ /dev/null @@ -1,9 +0,0 @@ -project: radix-dapp-toolkit - -docker: - secrets: - region: eu-west-1 - name: docker.io/radixdlt - -image: - tag: {{ .StateValues.ci.tag }} diff --git a/deploy/helm/environments/dev/values.yaml.gotmpl b/deploy/helm/environments/dev/values.yaml.gotmpl deleted file mode 100644 index 1d81e2e1..00000000 --- a/deploy/helm/environments/dev/values.yaml.gotmpl +++ /dev/null @@ -1,7 +0,0 @@ -ingress: - enabled: true - hosts: - - host: {{ .StateValues.ci.ingressDomain }} - paths: - - path: / - pathType: Prefix diff --git a/deploy/helm/environments/mainnet/values.yaml.gotmpl b/deploy/helm/environments/mainnet/values.yaml.gotmpl deleted file mode 100644 index 37658726..00000000 --- a/deploy/helm/environments/mainnet/values.yaml.gotmpl +++ /dev/null @@ -1,30 +0,0 @@ -autoscaling: - enabled: true - minReplicas: 3 - maxReplicas: 15 - targetCPUUtilizationPercentage: 70 - targetMemoryUtilizationPercentage: 70 -resources: - limits: - memory: 256Mi - requests: - cpu: 150m - memory: 256Mi - -ingress: - enabled: true - hosts: - - host: {{ .StateValues.ci.ingressDomain }} - paths: - - path: / - pathType: Prefix - -alertmanager: - env: "mainnet" - nameOverride: "radix-dapp-toolkit-amcfg" - slackConfig: - channel: "feed--alerts-dapps-mainnet" - secrets: - region: eu-west-2 - name: "rtlj-prod/eks/dapps/mainnet/alertmanager-integration-keys" - enable_pagerduty_notifications: true \ No newline at end of file diff --git a/deploy/helm/environments/pr/values.yaml.gotmpl b/deploy/helm/environments/pr/values.yaml.gotmpl deleted file mode 100644 index 1d81e2e1..00000000 --- a/deploy/helm/environments/pr/values.yaml.gotmpl +++ /dev/null @@ -1,7 +0,0 @@ -ingress: - enabled: true - hosts: - - host: {{ .StateValues.ci.ingressDomain }} - paths: - - path: / - pathType: Prefix diff --git a/deploy/helm/environments/stokenet/values.yaml.gotmpl b/deploy/helm/environments/stokenet/values.yaml.gotmpl deleted file mode 100644 index f6c61b89..00000000 --- a/deploy/helm/environments/stokenet/values.yaml.gotmpl +++ /dev/null @@ -1,30 +0,0 @@ -autoscaling: - enabled: true - minReplicas: 2 - maxReplicas: 5 - targetCPUUtilizationPercentage: 70 - targetMemoryUtilizationPercentage: 70 -resources: - limits: - memory: 256Mi - requests: - cpu: 150m - memory: 256Mi - -ingress: - enabled: true - hosts: - - host: {{ .StateValues.ci.ingressDomain }} - paths: - - path: / - pathType: Prefix - -alertmanager: - env: "stokenet" - nameOverride: "radix-dapp-toolkit-amcfg" - slackConfig: - channel: "feed--alerts-dapps-dev" - secrets: - region: eu-west-2 - name: "rtlj-prod/eks/dapps/dev/alertmanager-integration-keys" - enable_pagerduty_notifications: true \ No newline at end of file diff --git a/deploy/helm/helmfile.yaml b/deploy/helm/helmfile.yaml deleted file mode 100644 index 2d310d8c..00000000 --- a/deploy/helm/helmfile.yaml +++ /dev/null @@ -1,37 +0,0 @@ -helmDefaults: - verify: false - wait: false - timeout: 600 - recreatePods: false - force: false - createNamespace: false -repositories: - - name: rdx-works - url: https://raw.githubusercontent.com/radixdlt/helm-charts/master/ - username: {{ requiredEnv "HELM_GH_USER" }} - password: {{ requiredEnv "HELM_GH_PASS" }} -environments: - dev: {} - pr: {} - stokenet: {} - mainnet: {} -releases: - - name: radix-dapp-toolkit - chart: ./radix-dapp-toolkit - values: - - environments/common/values.yaml.gotmpl - - environments/{{ .Environment.Name }}/values.yaml.gotmpl - - - name: developer-access - chart: rdx-works/developer-access - version: 1.0.0 - values: - - environments/common/values.yaml.gotmpl - - environments/{{ .Environment.Name }}/values.yaml.gotmpl - - - name: alertmanager - chart: rdx-works/alertmanager-configs - version: 1.1.0 - installed: {{ or (eq .Environment.Name "mainnet") (eq .Environment.Name "stokenet") }} - values: - - environments/{{ .Environment.Name }}/values.yaml.gotmpl diff --git a/deploy/helm/radix-dapp-toolkit/.helmignore b/deploy/helm/radix-dapp-toolkit/.helmignore deleted file mode 100644 index 0e8a0eb3..00000000 --- a/deploy/helm/radix-dapp-toolkit/.helmignore +++ /dev/null @@ -1,23 +0,0 @@ -# Patterns to ignore when building packages. -# This supports shell glob matching, relative path matching, and -# negation (prefixed with !). Only one pattern per line. -.DS_Store -# Common VCS dirs -.git/ -.gitignore -.bzr/ -.bzrignore -.hg/ -.hgignore -.svn/ -# Common backup files -*.swp -*.bak -*.tmp -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/deploy/helm/radix-dapp-toolkit/Chart.yaml b/deploy/helm/radix-dapp-toolkit/Chart.yaml deleted file mode 100644 index 7174ed7b..00000000 --- a/deploy/helm/radix-dapp-toolkit/Chart.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v2 -name: radix-dapp-toolkit -description: A Helm chart for Kubernetes -type: application -version: 0.1.0 -appVersion: "1.16.0" diff --git a/deploy/helm/radix-dapp-toolkit/templates/_helpers.tpl b/deploy/helm/radix-dapp-toolkit/templates/_helpers.tpl deleted file mode 100644 index 3032c9f2..00000000 --- a/deploy/helm/radix-dapp-toolkit/templates/_helpers.tpl +++ /dev/null @@ -1,62 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "radix-dapp-toolkit.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "radix-dapp-toolkit.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "radix-dapp-toolkit.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "radix-dapp-toolkit.labels" -}} -helm.sh/chart: {{ include "radix-dapp-toolkit.chart" . }} -{{ include "radix-dapp-toolkit.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "radix-dapp-toolkit.selectorLabels" -}} -app.kubernetes.io/name: {{ include "radix-dapp-toolkit.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "radix-dapp-toolkit.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "radix-dapp-toolkit.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} diff --git a/deploy/helm/radix-dapp-toolkit/templates/basic-auth-secret.yaml b/deploy/helm/radix-dapp-toolkit/templates/basic-auth-secret.yaml deleted file mode 100644 index 19fc684f..00000000 --- a/deploy/helm/radix-dapp-toolkit/templates/basic-auth-secret.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Values.ingress.basic_auth }} -apiVersion: kubernetes-client.io/v1 -kind: ExternalSecret -metadata: - name: radix-dapp-toolkit-basic-auth -spec: - backendType: secretsManager - region: eu-west-2 - data: - - key: rtlj-prod/eks/dapps/mainnet/temp-basic-auth - name: auth - property: auth -{{- end }} diff --git a/deploy/helm/radix-dapp-toolkit/templates/deployment.yaml b/deploy/helm/radix-dapp-toolkit/templates/deployment.yaml deleted file mode 100644 index 08db67c8..00000000 --- a/deploy/helm/radix-dapp-toolkit/templates/deployment.yaml +++ /dev/null @@ -1,61 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "radix-dapp-toolkit.fullname" . }} - labels: - {{- include "radix-dapp-toolkit.labels" . | nindent 4 }} -spec: - {{- if not .Values.autoscaling.enabled }} - replicas: {{ .Values.replicaCount }} - {{- end }} - selector: - matchLabels: - {{- include "radix-dapp-toolkit.selectorLabels" . | nindent 6 }} - template: - metadata: - {{- with .Values.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - labels: - {{- include "radix-dapp-toolkit.selectorLabels" . | nindent 8 }} - spec: - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "radix-dapp-toolkit.serviceAccountName" . }} - securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - ports: - - name: http - containerPort: {{ .Values.service.port }} - protocol: TCP - livenessProbe: - httpGet: - path: / - port: http - readinessProbe: - httpGet: - path: / - port: http - resources: - {{- toYaml .Values.resources | nindent 12 }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/deploy/helm/radix-dapp-toolkit/templates/docker-secret.yaml b/deploy/helm/radix-dapp-toolkit/templates/docker-secret.yaml deleted file mode 100644 index 5a12b79d..00000000 --- a/deploy/helm/radix-dapp-toolkit/templates/docker-secret.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: kubernetes-client.io/v1 -kind: ExternalSecret -metadata: - name: docker-hub-dev -spec: - backendType: secretsManager - region: {{ .Values.docker.secrets.region }} - template: - type: kubernetes.io/dockerconfigjson - data: - - key: {{ .Values.docker.secrets.name }} - name: .dockerconfigjson - property: dockerconfigjson diff --git a/deploy/helm/radix-dapp-toolkit/templates/hpa.yaml b/deploy/helm/radix-dapp-toolkit/templates/hpa.yaml deleted file mode 100644 index 6f191151..00000000 --- a/deploy/helm/radix-dapp-toolkit/templates/hpa.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if .Values.autoscaling.enabled }} -apiVersion: autoscaling/v2 -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "radix-dapp-toolkit.fullname" . }} - labels: - {{- include "radix-dapp-toolkit.labels" . | nindent 4 }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "radix-dapp-toolkit.fullname" . }} - minReplicas: {{ .Values.autoscaling.minReplicas }} - maxReplicas: {{ .Values.autoscaling.maxReplicas }} - metrics: - {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} - - type: Resource - resource: - name: cpu - target: - averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} - type: AverageValue - {{- end }} - {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} - - type: Resource - resource: - name: memory - target: - averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} - type: AverageValue - {{- end }} -{{- end }} diff --git a/deploy/helm/radix-dapp-toolkit/templates/ingress.yaml b/deploy/helm/radix-dapp-toolkit/templates/ingress.yaml deleted file mode 100644 index 30288cc4..00000000 --- a/deploy/helm/radix-dapp-toolkit/templates/ingress.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $fullName := include "radix-dapp-toolkit.fullname" . -}} -{{- $svcPort := .Values.service.port -}} -{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} - {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} - {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} - {{- end }} -{{- end }} -{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1 -{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} -apiVersion: networking.k8s.io/v1beta1 -{{- else -}} -apiVersion: extensions/v1beta1 -{{- end }} -kind: Ingress -metadata: - name: {{ $fullName }} - labels: - {{- include "radix-dapp-toolkit.labels" . | nindent 4 }} - {{- with .Values.ingress.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} - ingressClassName: {{ .Values.ingress.className }} - {{- end }} - {{- if .Values.ingress.tls }} - tls: - {{- range .Values.ingress.tls }} - - hosts: - {{- range .hosts }} - - {{ . | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} - {{- end }} - rules: - {{- range .Values.ingress.hosts }} - - host: {{ .host | quote }} - http: - paths: - {{- range .paths }} - - path: {{ .path }} - {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} - pathType: {{ .pathType }} - {{- end }} - backend: - {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} - service: - name: {{ $fullName }} - port: - number: {{ $svcPort }} - {{- else }} - serviceName: {{ $fullName }} - servicePort: {{ $svcPort }} - {{- end }} - {{- end }} - {{- end }} -{{- end }} diff --git a/deploy/helm/radix-dapp-toolkit/templates/service.yaml b/deploy/helm/radix-dapp-toolkit/templates/service.yaml deleted file mode 100644 index 497142b5..00000000 --- a/deploy/helm/radix-dapp-toolkit/templates/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "radix-dapp-toolkit.fullname" . }} - labels: - {{- include "radix-dapp-toolkit.labels" . | nindent 4 }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - targetPort: http - protocol: TCP - name: http - selector: - {{- include "radix-dapp-toolkit.selectorLabels" . | nindent 4 }} diff --git a/deploy/helm/radix-dapp-toolkit/templates/serviceaccount.yaml b/deploy/helm/radix-dapp-toolkit/templates/serviceaccount.yaml deleted file mode 100644 index 3ec9d2af..00000000 --- a/deploy/helm/radix-dapp-toolkit/templates/serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "radix-dapp-toolkit.serviceAccountName" . }} - labels: - {{- include "radix-dapp-toolkit.labels" . | nindent 4 }} - {{- with .Values.serviceAccount.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end }} diff --git a/deploy/helm/radix-dapp-toolkit/values.yaml b/deploy/helm/radix-dapp-toolkit/values.yaml deleted file mode 100644 index 5be9ae06..00000000 --- a/deploy/helm/radix-dapp-toolkit/values.yaml +++ /dev/null @@ -1,51 +0,0 @@ -replicaCount: 1 - -image: - repository: docker.io/radixdlt/private-radix-dapp-toolkit - pullPolicy: IfNotPresent - tag: "" - -imagePullSecrets: - - name: docker-hub-dev - -nameOverride: "radix-dapp-toolkit" -fullnameOverride: "radix-dapp-toolkit" - -serviceAccount: - create: true - annotations: {} - name: "radix-dapp-toolkit" - -podAnnotations: {} - -podSecurityContext: {} - -securityContext: {} - -service: - type: ClusterIP - port: 80 - -ingress: - enabled: false - className: "nginx" - annotations: {} - hosts: [] - tls: [] - basic_auth: false - -resources: - limits: - memory: 128Mi - requests: - cpu: 50m - memory: 128Mi - -autoscaling: - enabled: false - -nodeSelector: {} - -tolerations: [] - -affinity: {} diff --git a/examples/.env.public b/examples/.env.public deleted file mode 100644 index 1c0d7168..00000000 --- a/examples/.env.public +++ /dev/null @@ -1,2 +0,0 @@ -VITE_NETWORK_NAME=Stokenet -VITE_IS_PUBLIC=true \ No newline at end of file diff --git a/examples/DApp.tsx b/examples/DApp.tsx deleted file mode 100644 index 23e4e075..00000000 --- a/examples/DApp.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import * as React from 'react' -import { RdtProvider } from './rdt/RdtProvider' -import { rdt } from './rdt/rdt' -import { RouterProvider } from 'react-router-dom' -import { router } from './router' - -export const DApp = () => { - return ( - - - - ) -} diff --git a/examples/account/AccountCard.tsx b/examples/account/AccountCard.tsx deleted file mode 100644 index a479ac4b..00000000 --- a/examples/account/AccountCard.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import * as React from 'react' -import { Card } from '../components/Card' - -export const AccountCard = () => { - return -} diff --git a/examples/account/SelectAccount.tsx b/examples/account/SelectAccount.tsx deleted file mode 100644 index eec26ba3..00000000 --- a/examples/account/SelectAccount.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { Select, Option, FormControl, FormLabel } from '@mui/joy' -import React from 'react' -import { useAccounts } from './state' -import { SxProps } from '@mui/joy/styles/types' -import { addEntities } from '../entity/state' -import { shortenAddress } from '../helpers/shorten-address' - -export const SelectAccount = ({ - label = '', - placeholder = 'Select account…', - sx = {}, - onChange, - variant, - value, -}: { - placeholder?: string - label?: string - sx?: SxProps - variant?: 'plain' | 'outlined' - onChange: (account: string) => void - value?: string -}) => { - const accounts = useAccounts() - - return ( - - {label ? {label} : ''} - - - ) -} diff --git a/examples/account/SelectNft.tsx b/examples/account/SelectNft.tsx deleted file mode 100644 index 4fe8edc1..00000000 --- a/examples/account/SelectNft.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { Select, Option } from '@mui/joy' -import React from 'react' -import { SxProps } from '@mui/joy/styles/types' -import { useEntities } from '../entity/state' - -export const SelectNft = ({ - placeholder = 'Select NFT...', - sx = {}, - onChange, - accountAddress, - nftCollectionAddress, -}: { - placeholder?: string - sx?: SxProps - onChange: (account: string) => void - accountAddress: string - nftCollectionAddress: string -}) => { - const entity = useEntities() - - const nfts = Object.values(entity.nft).filter( - (item) => - item.ownerAddress === accountAddress && - item.nftCollectionAddress === nftCollectionAddress - ) - - return ( - - ) -} diff --git a/examples/account/SelectNftCollection.tsx b/examples/account/SelectNftCollection.tsx deleted file mode 100644 index 9de7274f..00000000 --- a/examples/account/SelectNftCollection.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { Select, Option } from '@mui/joy' -import React from 'react' -import { SxProps } from '@mui/joy/styles/types' -import { useEntities } from '../entity/state' - -export const SelectNftCollection = ({ - placeholder = 'Select NFT Collection…', - sx = {}, - onChange, - account, -}: { - placeholder?: string - sx?: SxProps - onChange: (account: string) => void - account: string -}) => { - const entity = useEntities() - - const nftCollections = entity.account?.[account]?.nftCollections || [] - - return ( - - ) -} diff --git a/examples/account/account.ts b/examples/account/account.ts deleted file mode 100644 index 3177302e..00000000 --- a/examples/account/account.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { gatewayApi } from '../rdt/rdt' -import { useEffect } from 'react' -import React from 'react' - -export const useAccount = (accountAddress: string) => { - const [state, useState] = React.useState() - - useEffect(() => { - gatewayApi - .getEntityDetails(accountAddress) - .map((accounts) => useState(accounts)) - .mapErr(() => useState(undefined)) - }, [accountAddress]) - - return state -} diff --git a/examples/account/state.ts b/examples/account/state.ts deleted file mode 100644 index 941d8458..00000000 --- a/examples/account/state.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { BehaviorSubject } from 'rxjs' -import { createObservableHook } from '../helpers/create-observable-hook' -import { Account } from '@radixdlt/wallet-sdk' -import { addEntities } from '../entity/state' - -const accounts = new BehaviorSubject([]) - -export const setAccounts = (input: Account[]) => { - accounts.next(input) - addEntities(input.map((item) => ({ address: item.address, type: 'account' }))) -} - -export const useAccounts = createObservableHook(accounts, []) diff --git a/examples/assets/favicon.png b/examples/assets/favicon.png deleted file mode 100644 index 57776a6c2fa1532402d6bc30ecba96938baedd61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 579 zcmV-J0=)f+P)cZ z!$25*E*C!#l==mVf?wdI&`#=D9CdYcaMQ7?yR$z*barsiRo!&+13}S2kroQtQWUCU za_4)OQd?=YNn>y61L2ZOF37H0nBR3k*?6MDWj$z@BZ(#QS;tfoXD= zoi&2^2Xfq&F-y2?(*U_b#G$OSmZ@V2bI4gRi->6fXbLbcz(z0@?ckIrps3 z`N0tUqHY21LQ;?HwhPF#!7u91K%w^5Ngslsst26J_4h@l75453kS~8+%u(&B1dJlL zPWut607=d+g-hgIi71_0Na@kq_h0)z1@P^0PY6XQ7E=)OX|OCsdN`oxRqGX_zwAcn z0?JZKeJz$Ab;RtVTa$`X^W}qgb4@1Xhl51asdqYe_10^>g8729o^JsP_RfTkR1W9i ztY3MHY2yjfdVvHeBEB=`ofr1}psg27fO`0%r)Wau19sPidg0qWy5@NfPGZ7<>96AE zCz%$IgFz?(=P(5IlWKiBas>vmK;${ckqHYo@dpwSQ)*n)bOf39(zocP(?gy?qhQ(5j4V6?>gJY1`XD*=HS%a( z37N`=Au-@zj*&hr$XFKlPJ!|+j8q%^zDvU{#5F9}Ylw_;z zkZ5~*ykJJOO>b(!c3ktVFrVv2DN%P~&HkA6VsB(E9Fv|F$)s*Ot~<#)!G7s|-yNf* zgVS=O`0vK7WZh`i80oU`&o#8HG?$;>AdD=xF@)`0nAcHEo-%c7Dkgg`;pJA^8wtbRGJcAPu zXkQWgFgcmLT<|8Mc)`~@sY$YAtxy}5v*w_MVK6j{4}lT-P$+@dLNa(AjnDLa#xiUi KLeqk0T>b;wm^uUi diff --git a/examples/assets/gumball_machine.rs b/examples/assets/gumball_machine.rs deleted file mode 100644 index 0a5f686e..00000000 --- a/examples/assets/gumball_machine.rs +++ /dev/null @@ -1,167 +0,0 @@ -use scrypto::prelude::*; - -#[blueprint] -mod gumball_machine { - enable_method_auth! { - roles { - admin => updatable_by: [SELF, OWNER]; - }, - methods { - get_price => PUBLIC; - buy_gumball => PUBLIC; - set_price => restrict_to: [admin, OWNER]; - withdraw_earnings => restrict_to: [admin, OWNER]; - refill_gumball_machine => restrict_to: [admin, OWNER]; - } - } - - struct GumballMachine { - gumballs: Vault, - gumballs_resource_manager: ResourceManager, - collected_xrd: Vault, - price: Decimal, - } - - impl GumballMachine { - pub fn instantiate( - price: Decimal, - flavor: String, - icon_url: String, - ) -> (ComponentAddress, Bucket) { - let (reservation, component_address) = - Runtime::allocate_component_address(GumballMachine::blueprint_id()); - - let non_fungible_global_id = NonFungibleGlobalId::package_of_direct_caller_badge( - GumballMachine::blueprint_id().package_address, - ); - let account: Global = Blueprint::::create_advanced( - OwnerRole::Fixed(rule!(require(non_fungible_global_id))), - None::, - ); - - let admin_badge: Bucket = ResourceBuilder::new_fungible(OwnerRole::None) - .divisibility(DIVISIBILITY_NONE) - .metadata(metadata! { - init { - "name" => vec![flavor.to_owned(), "admin badge".to_owned()].join(" "), locked; - "description" => "Admin badge for Sandbox Gumball Machine".to_owned(), locked; - "icon_url" => UncheckedUrl(icon_url.to_owned()), locked; - "dapp_definitions" => vec![GlobalAddress::from(account.address())], locked; - } - }) - .mint_initial_supply(10).into(); - - // create a new Gumball resource, with a fixed quantity of 100 - let gumballs_resource_manager: ResourceManager = - ResourceBuilder::new_fungible(OwnerRole::None) - .metadata(metadata! { - init { - "name" => vec![flavor.to_owned(), "Gumball".to_owned()].join(" "), locked; - "tags" => vec!["gumball".to_owned(), flavor.to_owned(), "sandbox".to_owned(), "testing".to_owned()], locked; - "symbol" => flavor.to_owned(), locked; - "info_url" => UncheckedUrl("https://www.radixdlt.com".to_owned()), locked; - "icon_url" => UncheckedUrl(icon_url.to_owned()), locked; - "description" => "A delicious gumball".to_owned(), locked; - "dapp_definitions" => vec![GlobalAddress::from(account.address())], locked; - } - }) - .mint_roles(mint_roles! { - minter => rule!(require(admin_badge.resource_address())); - minter_updater => rule!(require(admin_badge.resource_address())); - }) - .create_with_no_initial_supply(); - - let bucket_of_gumballs = - admin_badge.authorize_with_all(|| gumballs_resource_manager.mint(100)); - - // populate a GumballMachine struct and instantiate a new component - let component = Self { - gumballs_resource_manager: gumballs_resource_manager, - gumballs: Vault::with_bucket(bucket_of_gumballs), - collected_xrd: Vault::new(XRD), - price: price, - } - .instantiate() - .prepare_to_globalize(OwnerRole::Fixed(rule!(require( - admin_badge.resource_address() - )))) - .roles(roles! { - admin => rule!(require(admin_badge.resource_address())); - }) - .metadata(metadata! { - init { - "name" => "Gumball Machine Component Name".to_owned(), locked; - "description" => "Gumball Machine Component Description".to_owned(), locked; - "dapp_definition" => GlobalAddress::from(account.address()), locked; - } - }) - .with_address(reservation) - .globalize(); - - account.set_metadata( - "icon_url", - UncheckedUrl("https://img.freepik.com/free-vector/bubble-gum-realistic-composition-with-ball-shaped-vending-machine-with-colorful-gumballs_1284-64158.jpg?w=1000".to_owned()) - ); - - account.set_metadata( - "claimed_entities", - vec![ - GlobalAddress::from(component_address), - GlobalAddress::from(admin_badge.resource_address()), - GlobalAddress::from(gumballs_resource_manager.address()), - ], - ); - - account.set_metadata( - "tags", - vec![ - "gumball".to_owned(), - flavor.to_owned(), - "sandbox".to_owned(), - "dApp".to_owned(), - "testing".to_owned(), - ], - ); - - account.set_metadata("name", "Gumball Machine".to_owned()); - account.set_metadata( - "description", - "Sandbox Gumball Machine just for you to play around!".to_owned(), - ); - account.set_metadata("account_type", "dapp definition".to_owned()); - - (component.address(), admin_badge) - } - - pub fn get_price(&self) -> Decimal { - self.price - } - - pub fn set_price(&mut self, price: Decimal) { - self.price = price - } - - pub fn refill_gumball_machine(&mut self) { - // mint some more gumball tokens requires an admin badge - self.gumballs.put(self.gumballs_resource_manager.mint(100)); - } - - pub fn buy_gumball(&mut self, mut payment: Bucket) -> (Bucket, Bucket) { - // take our price in XRD out of the payment - // if the caller has sent too few, or sent something other than XRD, they'll get a runtime error - let our_share = payment.take(self.price); - self.collected_xrd.put(our_share); - - // we could have simplified the above into a single line, like so: - // self.collected_xrd.put(payment.take(self.price)); - - // return a tuple containing a gumball, plus whatever change is left on the input payment (if any) - // if we're out of gumballs to give, we'll see a runtime error when we try to grab one - (self.gumballs.take(1), payment) - } - - pub fn withdraw_earnings(&mut self) -> Bucket { - self.collected_xrd.take_all() - } - } -} diff --git a/examples/assets/gumball_machine.wasm b/examples/assets/gumball_machine.wasm deleted file mode 100755 index fa826b748cb6864108f7f109c5987735497ed951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 196430 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 KVMGx@+ z@9IyMt)-$`aousi`CXWC$gEeW>RrjpK_4?w&Ox@wf$wnG-onb1X+b{R(j>^B7iX)5 zFFJWrzHk;NES-9JkU;ooSaik;vo2*Hj?tzFJ#*W$w4k7k4%w$peGF2-J=@pNQHbp6hc)0NE$)6FL;PTx%o{iXx5qYAHc4?m83=9= z#EYA5yJ_(_L1`~NgZ0TeBf?uqZ6i;SiAtFtRn+#HO zJRQ4QFx$x!KlFhf6z>#E{RYGR!elaiG}ZMs4=~^IqnqZ@QGjNr!bF{ix&cVn<)yUE?BvQexJ8P4=RMN5mnRS+hU- zfe|>u*I@4XSpcRrn4E~+{qbuS)pPy`jNGl+>D(&bu}~eEJ!|&IKc26lAp?7_g-9}P z%oz#JhAR&vbTqIgf%g39dv9FkQPeH!#KEx zhQ}I1j4yx25vqeokP%Z5iPBZSHUM>}Nk0i$nwu+c?Ml{3g^Faz*6ecDCgN-cTG<5J zbm#0A^nDP91+J;!=NVvQ^X`P;@ zC#Vd~#s!@?A9{A5@E@#5DrEqa<2+{J5DQ*YVgyBY#7@dfbNTf)0W^}X=&iZ=@?PgK zFKa+O&^UZW-llu!TA740GWV?}uDigHCf`fgH1v%a!+`!J#*-G|fStS0W2aNZjYBfn z0j%C+aF66O`T?Jc!_YFdJc=o`WG~G-c)l$nPgXxmEcp=2s-?Y~h*`<1X02dJ0eAmg zpa1|0{`CKOv+$|`HU^8|;J^5CfK>?Dtk@4-im~v5mx_`aBZMb8C0);t35-CD8Al{Q zIa3gyS^EGFv=uo0sHJx9Y*&X+$;H#i{@EyQ-V1!M7Kao2$9jYa95ksPP)w@G04jYt zXh|3}fd5!(*R_^IggKY5xtX4djWWqP=rKNb#9+X6H;BGsXn`n& z!!qW=93;_kq+AiQupRP>zAu!99vP$)RwBZJo|;B2Pz`j1d6ze{BRR(wD*RFkyrPB@ z8F!aNd}>0F@Aodvao<}iNgx12Lel~vr$7pX0>epjb0MkBUa05DI7N?$sK$BuF_R1s zqf2>-FB5P0Eb_X0X;wBMS1d*T=k& z0vT8N*nnk)su~e-fZ=`8SEeJ8iCI@ijSB`dE?R5=sn^ePF%P*Li3%0(4JAjVh}0Yc z`Mi;ceSp#*kSNW7@KpAFVHvIjf~cz;t^rD{V?ApYfH1MD^(R(M&4C$`=D_^eq=0sK zqQhVaK**>TMjZw=yXD*~rMvB?g|nvqXwbSF&ehY5A=y@Oq=@s?ru)Dg7YFGgrwMTu zb9r5wt5BdBHr;FrW?5!bpdOUC#R{U6z4%#hvbOD%ijzK2Il{tiE3N4H6W6)XMV-1@ zE`*8q@2O0MF-y<=`1nv}RDrBm=eMm&rrg+*bKOs5{ZPc(bbm)lTOvr9mF~cH)qYyu ztKB5P&c5sff6SxoPL|Rz?6_f=vCnGr0ws|X12uQBI|pm-K;45iD~>{KW|Tztk5UU1 z-|%)G(VmnQ*|#TW9^Rf*OcMBsdNm}I!A8PhcOHvp9e_Km@%uGcsT@39!5kctdYL_{z^k+sO2(g0<5xC^gS4N$q=5Zy*|BbZp2QZL0e z1TQ>++(%`Aj=2G9DztBa2Cdzy3{Yxx19VJOg8`c64KqO1ltd5q)VaM08KB$%-Al~? z!=#!i*cBwg;7IL1lo_Zw%0h zV1RPIb*~`@e7$F#~iA z19W7O0V-dz)uibN&odaH^czt{l9&m;pB%Top@28j$%2Z|e@ z9Djs7={AeV&Hvme!VFLtPC-9?15}&r%!yzIXz7uYCjp686JgHfGXn;wSu=Du7@*0+ z8KBK21}N^mlCTmH7WC9IYHx7=f(%eVxSRosj4KV$$$af82B_=?L0H;P zL62xwOg&674A8%3?Z6CB*;9JK0EI(OF+dZf7{FL;fci=q`p$d^GC-dzVFOYrwwM=Jc-F%kpcvyO9cOxpM2i`q!N4VM zkl|y1%6QfxsJ*5cpjxccJkAVI2s;un(+mi&X|V-PQ4TpXH~=$mz?mu{3pCX#OxjtmhUD;tnyY>m zF*mNzgjvIkeqD8DaoGwdtP%jA^!zownBaOI ziJd1BpKy9Wp@4j%>d9%b_e9sH*ARz4&PT=HC;C+PPkD{v`lymBXCFg3K3>yHmoJy9 z(y|D(USo}2(|&6!9u5H+CS$Zq;uUi3F=jdQ#l4KO0e#pZYI5|&5O~b(lbZAK@EgqC z6lu#}n+c1o;~YPk-9E|vefEjF+PcYnGOuNv^HG#_TUye*McanTZFwqJ-9D+C>${qZ zf=zQST6;`=dP5<8*+NFB%jG099iL@miw;$xNcixpIAU3`j7Z4jXv6jm1{J3>`#gRONkRa?K?i zINNDBW8DwxRVEZfU7mjuB)jA~0=T?8e}l#+?M|T)zU*-bYzaBTVHSktP;6_Oi-Xb8 z5)_#b)x$ zxtgapw`VLft~+TDiv5q9i}ap|wXRW^U zt36aMF4(5Pds%d}FWKi(9brT%yebPl859GBZZFp+y-&rpELnJkH)`?XWZIsmB_<1S ze%}*lorrqsNiR`1Vm?1qxr^176zL@kPf2#RKM=w<0F#R*m|NaO<&wpTO9k&2My_Ue zQ97S!HVDvUSPw3&XD>4EePMg+;A6ej%&$*(gc<7TPqMW=bg;C+SSv1KI^kqYYkKgq z{EwPSveuVqt*-><)g@%K-B<&>8Gml}()M(CE$*%${P}MNN=$Q}g71C)af5kA6=dxn zg+vl?E1WQ2!(r#Bk>?_jkH|)m;*TPWITg9swjAuO$5MZ@eo>wj8aA z+m1~i?)eSF4?s|J*&)&t=rI9U?TE=aP0xn1dkC@+U|Fn3#_A2jiIiGC7ydM}QL*EM z)DrL&MYIOh}Ez+#!_s$)ctr&5QuHS zv~LzMf?ZQx@iUv%SMDz{jzzp7dRW%)1Xss$J3Ynko{yRfR}T$_(ee1Qoi?Cl;^02Z4|x^$tpR@x^$<_UjH0{5|CP`}n1x;5^uQUkvevn+0% zE6uiW-d*P8z>Jd}MDi3GWR!mci@>DVrrErx8{ltWw+ zsw~XFaTFO)G?i`ATecNOF&*L20YF5^y5dg;k}yGowPQIrstJ>7YwUIC zP);^_sHhRkuh3K=6InpR)q$MDetg-m1~#P9pmJEF@?Da8VMso$vqN+3yicmmbDj5D z?n2o@K4x(o__+m7I4_U|XMWn;j6>%H>fwqW*6H-Jb=n^zg;Q4n)tWpVf{0G@nk;n~ zGU%5C>)&MKI(PJ>=7gH9*e$i~L8{bsi6vDU*VXAuNtMGDRodXR{Q)oWs>bpG(IIis+p#;nG45bW+L^$=jr@3_9*f(;L2#F`LJTN575FkiCKD*RT>6E= z4A%w}bgsMux6}_yKTjIVOC8%6xDT@m$?y?5% zm|Ikf$U=^q$ZF7-mXTX#Q+bVu!F@5pRRe|mR`;dkR;1$Y^tsj;;%|3!nLQ#JZM@Jp zr5=hF$`ZIaNMHfm1gO=nF+*mfcDfV{TxJzCp1V7JCSRcK`e5=i*|9~ks|{%0P+_uB z=%667`|-nDIFnZ3FFJvCOCSr)C6r4XAGb(hfOuB?bR83riGJw$9>b%=GB3s-3LMZ2 zH^K_t94}yi4q(niff}jCX&FH2DB!Yrjtb;@-)WGv@7wi0(|v@u6!8R2 zb^M844S0~1W=maJ@f3=0jfT84XX-^RA>(}~=+WZ$Z1jPww#M&vOz!}=Vyw{|5(o1} zJy4CPr;Yhwh~zKO>cdXeKUbvqOnSgbO_vy~VExcj(=_;q`=l>K+*KYzI41QnHps}j z=&fXAvnp5|t{6E~4o?^ujFFdAJ_bxto@T~CIJ25~L*8b|Kuz(H;;9x3t3zGUuKuFX zpr0V~pzSk_flo1J&7No4fUNB<(?S8q!@ddDhCnfNA0*5c zpMxl8iyNr26tX&xHn}dAl>H%Z(xmLPOIdGHB@MFq1ddCT--M0^LY~vdkE$-3F4Zp(_#p0{SiyK*MZt#&fb*D)1L{CS79}F1IKz7 z?_S z6+IARbt~e=ZCq~3)phDJ+RPJ!zuUHI*W~Z6nZMh1V0#d*Tq*AFu9?4EOSHk?joapY zh|c`o#6Q8p1O9Gv!F>Pj=t<^((;#hecP{%7jmYV0n-}pFx(dhA#~9QkcSsax=h;o}-iXHb6#e(3%_!mp!|5lCKdXa8kSCWGD)w>>l_;8 z_yZL6;+8)?5h+kXG8ECkVn-)t728okp#s-X_W#KA#Jlz6qN&Yg_Po<(1_z6XQmk@a zKpECC9DvzhQvku(-N8GW(b_AT?13(8+CEUz+@q+e-R_?0)i4T;_R)_7&hz#MM?&Ow zH4FWvLiPkr!BpMKTPA0=syq#gS|cFoWI^VdFl-D^Ll zayeDM{muXSGvB!Lt5^Sni3U4F6gq3c4t6S~2*0}u64J@iKEH$Vu8px0kE0aYI{4RY z(CqUGQLTL8vU7f~kC_bddz~yVevil9Ax(T4Ev%+RubOLW>6YHKwv?kCtmb-g^lUph z2P(9+5F};Rw+(T!dBZ2>kiTlcr0JIa+!mgZO#Yi4hiC;E=5@D#t zbNQLCzLV59lZqD8-M-mf1hvW60`GQNh3Za7#mamKRFlQ6WhK%>hKyWwZSoJlXtmEM zMR8*F;&x@HcB0Ml$%Wp;vlN{}&1^KdyBa`^`DDHLMsztbSp=0Ii`iLIFNTOG$AsmT zP^h)VjUT2|w|MZ+%V8@=8=w8qm7p>odIrm9HU>b*7}RB0YJwphi;L?tNbj7%g*#4B zu{Zh9+Ysi&-sldIpE*5e*o`ac*+SbJRp>(8uFhM$k>luAS>OZ&;Ia?G)f#|l7n4RD zi3!yr(B>EhKYQ2yTHWNKCp1Smngk)Sv!W*>R#7pfTKZ{$dd4Kl z$BKc53jAweC78N~Whu?--2{rS&68iM4?12YTVbdi*D4Lv0#2lg{Xz-G^GwJ>3(GqH zQGb0z(Ec;&4L{FiVEjA>u=8`ig`R-{jR=B~u(tue7mBGqCgd#0dFr=4ZXQRmg<8SIIF8 z+Rc{-s12^6TLAj7(H5hwhmbQT#*=?hl9h4(J+fBK&q}hbf8Whf>%t*8h&xQpchw^ZO!=a_T9UJT)|-#80R>xZuQJ(pi`) z;1u4ZhP=2P4pH(d$kb$(49OWCSP9}+(?x!4K0tx&BkUsKEgQ5wpsaMBfn!5JRnQ4JIv}phk(c&@Bt`f>$xRXZu1#_@<0J@r%& ziQfaM$HJG_l^_$2-5wRM;twM|5uGZ;v! zRBN^v_JZIsNoyvAd8qa3R6}-1XIIqWi75c$f_S|MbyH~7Ue&Q>MKrE-RzaxUCPa$W zHlW!LTh~x=vXU4j>yc12UK0+h5|c6uQ?msL-os7xiPQ%03A?vP(2qLq0p1gPQ@rkJX0L`r>CT_aMeuId_*ruG6tohtkl zD?ATl_Ji!3ns6grD*9;J++H)MKp*TKw5JQG!RGD!0wCQWV($DLc0kfKms}m9d(MJR z_S-{(EyXb+y5kRnw7sCPna zBm<}KCD%$9j5aagC6~VeuCbT^$ZP^$f%&;A$m_t9;a+kf1Z4dRO$~U-+kE$MsJ5$o zGf24p+)B6QCC5|=FL=qrr73dn$VsBAb3I8;&M9hm3qp};_e7XXw>6ojiQJ4GpG>pY zS5U&Xn~;}$Vv(2JTra^(ZZ(en62YxO1h)om#SwyA z!kx8X#lY&cn90zrddz*-s@!*vB|8|LF8&lwoi6SlSR&DYl8fZL`)=x|K|_Aak?#$v zpfirvRS_bq5QpnZ%f?(UQ%KFyaVJsfe!Dj!Lfvn-7XOUax*}{MmW0N{$xiQU;U(Uy zwJy8aZ>(DD%EzR0$I98oEylm&`;pQQDE4PA`=sKgfb#Jsnz>OPDbdJY$KiOyMg0ht zHa{8F5L$B!g@GZkgJR&0~*uP3%sX z_$c~$yts$*Qz7GcK}f^3Q+N$Akgn!e@5eMftY>dk-0g8SBdxHBZ^vk2UG@|Vi0hQR zMXfiA-?yGv7Oo0X9~;GoNF!yg*ub<>V;IV_?D=_@v`?wWoc4g*k?MxS;+h3*jTa|K za_J&-k8yF~qDhi+L|}l8^ShFJCcMvg^Q-r}xLlITx6)7}Z2Y6Y%sZ!nqyWvwi_muu zV3ch^gtD`79o+)->}yKq^SYGFmTX*tc#Fv04oY>e*cPGKc45&Mm~M+YW^vl#UBFwH zZwaAr%8)Aqssj4K&{CBrhNZ0=#R+!)2J5APPh3$4TZ-d2a98sY`BI#0m}#@6I5xac zw6Z%BzW+92v{Ag>6%ruWQoO@be%Vtn9kvv|Vktk{PoX=}o0_}hpBv^YCzN2-Tf^NB zT}1?4uXGslXZ4G78xdq}cbmMU5__ldd$P0?HBB^g4v(#jHuiv+*`|5o3;+uRRhmch zBqFZ(TX}3}2<-m0I1IrfUhQDQNdk3{)k(S>=P&9Lr5EQN1$()08wawgc#YA>K8on)CMq`J% z@NQ~!Er7D1=oKm;IRr&3g9k;MXd~I8`K(e{Q3eq5?AeLhSkNLZ-#3pp#5KKEfk-9Q)QiR(b`RMPe?F1a6Np> zf#nEF4pF&WQTXMJxq4KEk7;Woo|^-F2Z-m&kL(KqK!ae zBPOB65pA>?%*G5sg{ay%xRhp}x@RES;FYZu+A7}MXgB(8l_B1Avz=$I64Z3u z*4uLMM!V5(FoEIqz+vkxf~c)`k04ra5kxb5 zPz2FzSf}Rh*eZfZH_Da~M7mS<1o>K`15MDBpa`PXrhi{+4Y3@*Rt*qAG|6X_Yes>!mH!lzF?(o)_ejhZL_AF z>JNf=vx&|czx@mRHV4biC?3MutVs-JTPLjSZI%_cisb$Uew$^;_pP|i3W#A=S{BGR zmlybLMwilsdijOHQggp0jQ^TkYNok1Qw}DuF8E;QeK4AWNgi%e2IJ~YZu)JKxnuoA z?QD|iSKfiRX-Nc(>JAt9@u(@bapDUo1w`D1hZaK*D?skYPTSmQtHjSd@|32u%VuK z3=EHt1Kh;Gm|WxUU<{07*pc*~wbcQgxUQ-jXu--9x1kURFcD+|IFlVqS&~{0YlNcC_d@+*Z zIu4a424<~48B)(s3=D9x7??8(VqoZ*8q&niN4kC>2F3>LF)$E|$H1)j7#Js>mJ?4K z)n|D0I_PVlPgNgcU~Hro17om47N~y^zqw=2kO5L7!C8&U${3if;^VD@e7rT^TJf>z z#5(0lJ`R<`?pC?+@fps?W#wC)k4*}f7!y-Afcz~)bF(g$>~qUHoh{gu}gr8 z&&Z^*02oW;6WrVf)|_-022gRk$C)rbxoc5)TZ#`1B%#ZgyObd@%0;8`Z*rBZCO`;O z&9xgG(@6dDuDcE33mUW_wdhLP7Ivgvc|{p&J&DH50jAgB4%So?TcUS5`cuMBrUVmL zUyauboa$E`>IF(GZ_!=lM6zU>KQ}n153~89;{(LL?P=!lf?NK{_%4xXw6 zw7!s1T4xdib>xJCJ;@}8V`RtcFv*w_D+TW^5=0(YJjKjuY%NdAlaBagUN@_UiyT8` z)WMAGbZD^d*OYc_L9$k+_p|jca-5@yx-N3;h_J9ZIde%4leyyG1#NjSHZhi~Z{TG{ zG%;7)z%$8;wlLqyT;*FK<4wvq=^6WOn1^w?EONIzUPp_3DRQ*T1xJgySa4p+#lqjy zvrllc8hm(~C9zo4Ez{WV08ib==_o^5L?RP%)7%|%VqbhAb3397{3^YA_9g)aqlE_+ zpqPn0e)9pZ3o8lcb+M2vKGAOJa{>Rn z(jRt$vlr{cu+U|$xtg3WeC@knYQ-;G3V(xes1-P0$P-*JP?pgXE*RV}P!N0B?-<^n zem|m<10=6+c6EXznVGW;i$3wY3>S9{u_~|31XlFSDK%W&)>?4K)NpYZpc{sh0vnRw z5`66+(KTG0umsjJ+;AIKvn=l3)*>t$H`U$z7WY^lPJcxzn|o@wcxXcEs`L-hCcsoy z+IEnv<>h)<2?)tSWu5)}q?{_%LfdfhX-n{h6tw7Y@#mIM`J^l){7)FKf@|;4ufU*w0{&K>rqVCL@~U~7+I>$GX6X4nLPOi8Di^%${9OAk$S7l;c;atkRTm(9`5`j0m$@Wxu@%iGrtT*>CbD;b~g-8#IhJX}M2$la@;^-t69_@>}pG$rtYTp=iah z@+QgQ!pfn0lV->xgOs&WF^74R*aPd{q!lV4Ie3$l!M#akrRGhtN>Q<8rEQuoy-BO2 ze$AW2lkhJQK4e}XVm;g&HRDsM(B-PknEa=M3JYNm*!AmCGcU%%^31a+sECv|Cgu2tttV!^PWSBYiwB189PT*Q{FP zQyMOgkucy>f)l545WmU2PR7xdN9loSD!85+38*T4N`LzX(;KxxpHd5-61+Q?+`vhB zbIFbEj6+kQyc^Yt??eH;!S?zfJcbn!Ct=ibVbtmiqYiD|gK#p*^+XFJ)+tJ1q#ZIC z6v&+iOjrp7rqLfD*2~3^WR>=$ERt29=dhKE!~d$cZPH=<>>7bxA+?M$Bbw*W{OW zE#gKoIC_&+bb-FhYFB^vlwoh3>>$IwiD45*Q>gx4!$M1V#2i8$ z^ADSm&MF4UI%_3C9-aHrZ8wbS8UiySdFR4o^%g9{$m(rJLW153-qu?MdKk>Tw;}9j z*jDGPcZQTDopYqv_Ml?)T%?c=g9AIJeff?W3?}A|oE#vwFOg-UJf125~+8aYj zEot1R{69y2;iiRQVfD+z@ja_eU4fwOj{M;ms<2N{F0gepDRqSoSO*#K2T>K?eV<~= zWH#17R`K>V(M1a(k!&?^Qhr z2K%B&0tjcApS&MYIs*7cFyKb`#sdZ%M{r`mjr0w;5iRc8VMZg?>5;wx#}U`(+j1II zI-;e*kpTlvd}~~#2eT>5iS_R)s*Qhrv&r_DXTfZmAdj0($gf~FNod(3+zJ(t9Ly$V zaI>kb)XXNU)Xb&{I}E%{^QGBjrkI&cJoU{cD~~l6%43a%^6He#F7s1^fStaci526E z@K86qVrAsmp4O2?W|QH>%qE`tW|QX(X4A0DCQxo>)3E#Om=LJO5o6GiU^YqNe&*Hi z4F(ew&NBMFuY%J!eOjD0EKZs>PU7Q9GqjqV_^0#oD|$AznigA4_u0xQTErUINWn9F zuh>eVBx11KYw}qod_N%xpi|b6029TnaJ?je6MS*vopg<}$gFFUv&`ZU0^J%iWi9_} za-n#(!0xI;v4vj}*VB0lh9EmOB3}UiS=gL?I^}Qx+wa^OI3Xac?LpyTZ4a?xj3?G@ zRY7(l^4u^Qsu$BBo5pSXyMLjob5Kt9rIo!c9!xEovI4!1C-rJv4HL1v;9235rw`<% zoVU#x0&0=t28=XzYkzO9XAoyV&g|unLv+(>K0M9TVpHXIv7X1zQ*`J(Hw`dD=I7h7 zQAf^-p49EgO&Xey2AbzuG19jZZ@PVSQiz_MDZ`)%l%t>8U1p1E8C<94!lqHy&d3k9N&Fxc zbv_wSOs#f!8lDRCx7$`sJKNuSV&3>n-uSR1l`VN4+w&^-H^QiL9gm2h10Yqob#=EE za{&DSR6&ZM3aAlV-5vS1o4YfJ4)=8XNXw2fi_dhdLFf((6`_m4`7R^mn}aFkCH_6G zZqcSyTU(PDE92^n(Cc)lbl5MyY1J0qd>EBL6L*b>=M-1Bir;=*ovBRNa@{~&oir{6 z|GI&=Iy-V~DNhx?&*ay})4p>-0X9$I(1q^PY3V8?~fy0+Guhk<;6 zsX2d!iz>9vw)G76L+eZv47(->3W06LIR$P2c+d}atywYvN z996eImruy!R-R#hI@waH6wF0yCR(i-LyO@XODs!^d zn*e}HJRgJC+-%wF2|<#1Mg7J7j6kZett0Ql$g!)=l+9{E!Q1W0SBy1@F`#{nQW%o) z*}eK~fqlqcj^gvA6)lFqq*p!^isROYvSuB<CwHf|^Z;VaHHgpp z6RHt61JYtub`Q56KvnpqE9*P#v8rrl+o+_q2?Jup%92IV0v=WHDOF(RR%>? zTJgu>g?v-RANF6yi}#f;cPZ}i6ZmmCut=TyI*)5K7>I4WxVjw_Wt z+YdAr3o~k?21SksJP~Xbo_vdz1Bz36{2``@kfk`_LRS@Xycu?-;fzmm99W3(&602O zD)fMb1{%9j?I%PFDNTAjsfT=blHp}R>&UYZ8lU9R4g1O57*^YwG%z_g;bpGpGA4BN z(LI)R@R5W=Y_;OTA-38zr&+D7(J}9nbA%u_=6xNT_vyk5fGGs9dS_;nkc{HzZxtfS zB3l(A+L1D`HMP00W+x&pH}&gqV=KualRYiYRWXAKs}dh*F~`~qD}aMuUUk6_Qq@vo zumZPGK%T`gU9nS^sLG}*nC$ZMvfIN(VAGXOn0#P26~|r!4KW*&UKe1*)j(utY4>B7 z$O?DSr8QlOF+pA?7+=2*a(V*%srV%Rx$5o~u)Xf|f|8HJGyBPcYcj6yg8 zw95%`>8F&1kpKfp3fty4;>S!wjxCNV@eA-2s!#b=KB5coS`eFGfXChgU4Ylhx8K}r z6CJI!Tfu?F8BBf+9!J=WF*UQ(loZ<=XhKIP zIZXs-4?bieo>EjjlDFU0JCj=kn1l#W3_`O!87y2GGkP16pgll(0kTbe2 zZ%P}C*YN{WS{2RiEN@eY8ow2flU<}n8sSzvq6~B_KR?ax281?po%*BRnC^Ykr6dhq zO2QK)-am4%e=FXU;5p*A;!(*?Y%zYeW25l{fb*$vE1m|{&2=~d5UXy*6J1I~p9|x5 z7Tt=66ZPC)Lt%kXjopfe5YNSFNHR!x@K(I-kkqM{l5ESj`>lBJQUpPix8l)TzdM5m zD%6Q>nt)1U<$yG2URYg90&cjJWR-P#9#bXuOGykm`RvM7^~1q(I3sPNwH;8hkSZjVI+hSi1@IVa8 zz6lZPQj!gAz&C$5-ylngobz7bdwY%QQWEypKqewv%80&nD;`;&4hS`9WH^_S$Ui-+ zTk)p$UrkF2wA|x-^JIQD=-`2=d{&o|OerToL7qYk9plk1inMFc&pT|mz-s^}lOdl9 zmy%2&9sE|jZS+H)!GT-x%#fIpWif{+r?}W?(XDuNm%GD|N2lJ3SJSO{Vw~-em)(k| z(oE7;m4sCjVL?xZHu_Y9j$%GTgNRhK9OQ?usG&s0H+3tX16cN*8CuYv^D*E3yeG#G7480xipA4140G zn+7f=QCYL>=#|-h5*boVs!uA(ZZWAYh!dPOa1rq-x8gDKa4Q~9Gd(*T*9H(K3K))V zJZOHP(5i4LiFS}c;;YZot$12=1iP9(0E|`H?RqwY_e#cu)t#@_eU)M#E+yg2@Jo2C zE>UmjQWEA4wJsZEs0mt>+Tuy_5P>IjV3Y$82SVFGql9wW;NS!BnwG4S z$I0&qu_`#1vZKo66$4=`lw49Iinp->W*=)U1b2^a?jzced1C_v>%akbb1+A2k)WAn zxdFX6R?B`;&V5Xe8Sa|I9Z%>|Mgpo!j(g1~rnMBrU!qgoM6rCid=%xDR%R99lrY=Y z%4({5Hfo?WjQ%4AjecL&R-_Q`et(eG-v+(5r=V_E2T+dF7yE|lr&xTiC(JAs=Rrj96dx0^j%UJ(J7)T_o%TET9d*^n#w%wC}{R*WjEW|i7V7V za#$Zz26x4mwc7fY)r!GW)~fc6UQ57AoymmgoMX`JKnQKw2DW%+UDo1R)nz+gqzr_b ztOB99K^U7uKqf2- zE6ihQK!7Z4i?uS%k!_Zxm2RZObTvmeeh_mMnsdS?VjV*pkwunuF50~dGpi-PG&@;lObYashD;}^XsR1>5L8;^Df-PF${aY=4y0&2diR1c=|=k!bbzB@@s(p+lDd!Pv4(|DOvlx|mX z>v!ptyC3PXhAW*&xW+G?u=(Mzn7BMp2EXC(uH=o{PEM$5#4OCVmXl^%%h9jLrsz(5 z#P8nDdt{PiCVSokUtWg1Qjt5D!VeJ&OdO2kW(Xo4!nvtk=ok?4K*=MfKTMhqQ}|N; zzr@0r>eMQwMYsrHB0i|jD?Rdwk=N&*ES=*Bf^}~R?m^AWH4(>=SP?{mfkjoy!PXR2 zENX&43M?qiKGcH64nZM7W!D5wVuv1qh=PkQ+-^3*;Iz}9b!x*Gj%q^9;%s{^b|}+8 zDeh-KNOY(;mRi;!q1BHDSXX@f23Tu@mL>?9R$Mt}WD{4uuK2P(obDe&xVU|wWbdGbqdY@QeyE8W!TITs zN$fHCc6cP_SV-?@!^-kQkjM+l6_Z~JG5K&o1#C_bFot1Ii53V?IwNs9Lh-pI;OJWJ zdDA(pVs6F?C@rB1$sRA>VhJ1i>knv)Z?Kl3LmIGe{$KXq2VS$QtnYpI-tYPQo-?!O zPck!^IJ4iEv79LxGu%QlhJ4zyrv}JHWYm;muWh5Yg*!uA2f2|?KamV%5+g>5ii(O7 z6$?nBK~zA43^WR8)TpS45mQSQ6*Vf>+)t^w-{0?9Yrp%PIVYJ(V(Jw#pPYB^wb$Qg zJ?r_mp7pF#%X+-D_*3>fzi%1PKR~ECpZ^sx`_~-1f%wKM-49W52&FS_Yd_)t+E08} zti=5gn3U@%Uk`J9ct2)&sa<};)288ctLkIEa(xdDj=Mssgq%3m7GSSNrl(iswNVjW zeo;Kp%rVN`4({OmFY1y2x4*rM?HV1AV$HQoW&L7c{0v3rx|o&YXiywxZVK6UTtPUv z@7K{gK6kcaDsn;x-u*fdKn`##;JsgK?rxfbOe*DewMtLO(@Y)QqeDy4R&)|TOZJTI z2)Km~Zp0e9$dp2Qi83rgc4U4^!s(&_0xPp!-G)oaO49fwoGw~8mEp}qL_BfvVATjt zi;|@I3q+D|x_AhWkJ%7T?YPKSARbDqOLoGkEbv)44do8=y6d8X@N>cd;){7Y;WUCX z(Ye{Fa7ttv3vH5n6mf<{Wk;u+E+H?{;g3IwI+gQ>B&Q%Z;poKEI;fby+OJ z79p{S0Gq1Pm=Z3XtUWqlWfqG?d*53_Ho^s%Me|PHL>LR@0CU>6rv#SiMZ&W7t^I`W z&o9St^}euu(_5hQ^X+>{WrMZQwyIRH5RFzb7Stb3-B5rYFgVsOB+?|~jMP|1!M91t;>&?7X}h7L8fN235~axf8t zW<4V;o-U(1ZDofz@&(C}+lN#@s0lgHD{Yl` zP19B|ig&H-?6s29MRJrr-V&`ulsHCoFlpVy9_zJ&FgJM$gMJD?=nv*8TE|I!jcsyul-6_E~@|Ef+M$2F=aYZtzr+Ir3VDylU|_Z0)dbuiv&oj zMC4+OkK9v06~5ZUCILs6$u+YWTIs*l3vF=oq-}}l9ZTx%By~gyXGG1mwgiFin1PSi z!FSw)Z+s&z2et#Jr;#f?yAy^X&+y%5tH$ga_|nSf(#q$qYlWBxc@~qMLqjI0s=NVF z@(wZ_+I?Xv7>JY$>DHmBFa$B!b^b(TW;xZlxULS3Z0n0xn-?$T9_8Y?J~S2g^`X-y z3aRFwO9Y4DT|7;BmmTmvH}S5TJTL&b3`7&FTgelH-`Wj+Yd82!Y9KicUKwKWxmFL}wYu|Mfe1)Pv~Lqk#_?yfg()~|d5N*E z=&56@mtvrVjXz~&aH;GKTeJpO1PV4L(*$kl`nXvYq`Un7Si>udiJq(7-&MOis*O%Q zMdUPm5*;_t;)Q}1cH)IAAZDRQxuuJV82ysRp2dqy<YNF%f}=vaa=Pty@jG{Wp)JCP%-m)WEnA$MA&WwuETGLy?cx9@kGYxM|St9v*} zm?pQ}n8POSszM&&zv&2FzDXmTkS9hMz0ww`=MdK1iHLi}>MbI&X)ZdxS0ds8RcULq zL_{-dF!`{aI!wMiWlbXDUWtg*Wf5_2h=}Y~t4hlc5)lt1yU-pOJZxlddkSZBIo$2B zi1?p*OCsVPOFy@#1ctfCBI4`&3Ag2!W6d7b^)|_d?H!U7r2!)%?g3sB5%<7yki|YA z5%DXKC-+D~MU%Sqh3`t!p7dqi=sZfV&EESgg zAdS{9QRs==5ed1TPZlkfrbV-m@-9kJT_?w3xY!2=+vg%I%$$9nC8WiCWuDy_f`Mrt z1hXb__OV~NChB#~^K#}dh;nIvYw)09-&q&i8= z0K;e^mAG0ZX0QNIeQaox3P?_rQW=65Ow^#D1r3)Dt5p9koT8MAYqrUP{Od@gFQ_GVIfLA^UhaQ3>071*gp#+3Ap*9 zbRKIEn=eY|d6Y%zJdd;}Ez{;jxwTuAeMxzo@>#gVB{~f->wrnPM0`G+?T=gHfEdEomJlwtNVq(wla`S)xh`*!Y>9~7XcKTt z$d+3|wp@GCa-RfCIjem9Rs_23NHjl*c=eiZ>g39OvcI>dQv!13KH1-)S)ZmrvheL| zKb2o@FSs9KOZ$;;M5f%5BN@y}v|OwYQ#QoQeUehNGo~m8?9FI9ZJ~lPAcV{+ioq<0 zJTE~LAqv0(!WUaJh@m)HNetzW#n62)a`Mw4R+W&wX?vgV;JdxZF~}?gMhvpoF^D*E zgj8v3;65=YAhb)TIQFHJL4JpP?n~!_{LTW}mre!w-4@Y(l6v<^AcgboZ-0)x*R!SG zGqfb5P|qIvE|L(qS(VvDn(U!>>E>xkzQC8W4%kAu{-C9X`rd-b$DNf`moatq5ow`c z(~fLe-A)T(!Q9_|z}v$A!#9;{z{K-z|192^Qf=M*LHDM86!wNMukO+=pd?yfX)Qu8 zGoW@v!o9oO5izc!Q0vZ0_J+9IQzDlfptK_bHVpLE?T9#^jiCA7OejU#5y7MQS}{bK z(zb|%@prl-;+smdyN>SuH0x>d77ddYm!dX_2V>e_E0lI8zniIf(nq|L-Oxw88%dLK z!aE6{DS7*b$zc*GEhoCJRA_s0*SU}k9(&6L>UP&*Z-Fg~3!k%hG88LS?RZfS+et{a z2+tu+0K{HD5h$7@EA$1|G8^Ey@_D`$A6*din-E;PLLs<1kBoF1=P{3T9tpP_=P{2o zMYoPGdqHQ#@P-Q%-G^v*h@xAr>u&=!iAQcy1IbCSQ-%=ia;+xAuGM5XZv*K_A?t4n z`f3W%;n})EhN$&E%W^TZn23BDGm7J5 zDW||bsCSiqu1W8y4 z340oOz*}UNu(d_jsSqx|n2aslP}7wU341Yy3<OG5 z6l`qasgrsxr-ZU5W6M4EmI*Ga$f;7fx1yj@;oSGDz%jG4@pWXU%Kz~+hxXmgh4~sAElk*p;&rn%ip{LV^ z(0E)j%T;)tFR#C_g@qX{8CZ|W9y zzs^(7SLMn5p!UERHp0$8ox2bLXHbZR`{b!Q;y&r!GE3Zo>;N+(_mrX^(O>tx)gp>vTxTv3kovLc9Y`)Swd56 zH@W26v{!~nCWkR;uyZ)l-~@90Rn5}NG$8DGFn>&rcrr<@%r-~GdOTiVBE#PUzR_;3 zeKY@;0~i? z%fIsyROW?$_GvgzHPey#h0w2T2Y4N)!+kY7y9 z^ICy0Eq2Gh638=Ip1XM{1>@H3lm`awN5NsPVVT7{iTkAa`;Vv2NZcn)LU#*c+$Mb? zNr#WS30#`wsD#pYJC2vk;BP5#rz7L)JoE)l2}p-Uj-V@eqA`6)tv%lWUzFJsggt9L zDHy!*a%{vhg-`4$RkaYch10FXuVlJIt4F5bqu4$5n}1cSG&Jn&=N( zSv6#9AGUA85j8IIJat-6he_jyZqSML4!+iJ(+OML!Zh?*HIGjhzVPAgDMTmXHWI`T zSp(|8HU+JlqzDesT_8w|TzySf^Wai3t7G$VaZe7aKdZ3Xz6PhO>={bns+`=M$`d+w za3$sMK|+oTeM0b1hY!lx>>wVan`GPh}C`c3@m{Vj{JtbEV2mzB;1 zvo7bec7-z1UsmBbHCPE|IS6)_1@Uq&Kmz7f9 z{e3K}nq{>sFDs>LS?$Wp3bz&A=Eu6aDAv`kysnfrT$}Q`A_el#YMHIyS5QS-S8~kl z*40IF&Govn2eAaeUDI{-y9Ld7UG0c-_zLJCFAQD({Z4zT8wL%HZhE7q=hM zaE9T1ISsCCuEY)MUCd-^J6JvFyPNzNp_L0f`gQokNb7W6@5IS=2BgD0)AR_dT!8EL zN)VFEC&6cD{G$4~ARa{DCU4#cUZD>0BbERGLWX zK(tH_>`91VwduVhr7$(UccgUA!xbr=>qzNbM@k7tok%InJdsj+dNyQVLrMXKi5kH> zf`$$f*^6i%P{~0ejnf2^O+=r4gu#Z%mHLA(_yw@Ht&&HF!b{w|C59k6ZfoXr4=L+c zZo};dykiJhb=gap0kAGi02ILeB`M)pDJB&2{$gzWky}pC5xDCCXlRcX!VF9cUxZUI zvbriloc6AykMt`TnQSL=W(ucnxeu$2+4`Y^{z;;uYu#$%JeMofMUC8-dJ&Cvy--Ei zT&NPUXOS8em2a{$j$@5ESxy<~Fvry7mzqw~@7&}xeSz~h#}}tZ>1WP9O3!zW3L=wp z6hgRhPDkkvg;|19K1zS6f0X`E9HqbOognzQJ@YVN7SUB_+@jHerC;4dOi&%5XIqSE{@XAwRgXVHt$fII{9ddiD>na0SD<}nDzaH z8X1h*bdvry_4DHPj`!w%rjzvl6FX-AD81ms)aS-qR@SnC}QfoMNu<0J4!Ef zP-u`Y@2-Rn(suEvyeOlWPPdb3tdrGorhbk?yM@lwzq*XM&4=pgUhhzS8;9o+;Dti^ zCILJS)`MEoalJ*=;O~Di8%JDmyj$6Hs9qZi>kie=r9<_3CrBC7p?V4pI85+2pqftA z&*@aXbef4Smrt<$bO&2)3^qIKQ)T_f-d8$|m`bIWjOX>EWA$uwJmV^sHuWxzo9J`K5e2&%6Xi*_TM-*I0 zsk$4-zxA~7!FmtrSE~_lr|V=JFQudP;Ot~hCY^v$oUKo5$#b+ zepTti^;{**tZ=wqX*ZQVT|aw*x2FjafC|U!N9lMyr@B>)JJ-_r`dRV~$$6s$+RYBw zYp0G`z(TJB_Ii^FHyeTLdPl0+3xQlcT+|#lUvt8KC*VHoggtrPa2&Bu=y3P@(^3uih&|CpwSIYRALhT}BtUC#;H~1Q_iC|cr@PbkuId?4XoVl2wr7>4)AoTNf#U0q+wX)Dj4uJkY;~{b%&qpa zjlP)oFb#?%7N5OI6<^p4wWeSv)fCX&R}xMDJdXVC49&)c)zy5_vSier{Zm^K8{ z>eJ;|G{-0f!!=40Tv%TB(AOSfv{Hb4|Wc_LJz8Sx9n4Td7DV@w{ zu69C!73Natr#QGpcbGo3T7YM^L3p+Luk7%<1QdKQ4B`XzQ~RK;NWARH&{#x~{%LwK z9tYE+Um@DLPMT7M@T__L(ZTXK4<@N58ErBk?-v&{=Y$s4f`_T%?#WQ(B!&@uVztMTN;^ja}taXXw^eUp`^fO|Y zJii`jDsVRQ{yphDJ!g`siZ1ld(*r1hgtN7Pq<5ZvwjYMekkcOxJAsX%?G{S#3zC^f zW8ShfL|@QUo=eB%jg?Nje<6MPFydKHH<34FcclJ;cFPq5?noA6v;8g4J5HpM5oUCr zUZ>RnpgAh_Niaa!Ng|!Vk{*eAtWoVk{FKQUu`sM^bgaF%lQGgw(fAH4igPY|aXMgz zRiDs-C!iZA+fumagi$}C{!?vx)^cHE{wA^(k0&W8$p_7PLH0Lp*@y{jVb>jvrdw-$5|E7>s#H=01A(3oA-wX zFJjH4e$@Y&8fk5r6jgoA<<(c~sl6Xje;aG!vho${^GYBo+K>5uJN2OboxyR&O)s|T zhhAW>)17VVN&8#zk=}rm&gUMzFnaXQqDR-bM>3^;W4Satl1IICejFwZ0{0^ZU#-e$ zNS9we*>M%Tz)hn6=gJW!1%nF$1{cQQ39O;PV{N#!c;R@D-u@ZF1V7gx98%d=k1y8G zE5@HgO&BV+_gg%ytD#t7&niBTA7a=Z;%D0xgG>0?^{nC_@lw< zeh4)Cx%}+CVsL<;&yh(EeNMtDVO1rZ7R|!53g%9sq=93DnSGw0rDqjF+~q3R27q6Dz_z?w>c6h()n7 z_~$S@6*yQO)4o6@yWzzoXhY0%Aj~n2eOchxivq`97&!LN0>`ci9Q%@((Jvm?+Szl< zU!1XtnRnA)+co{QUDIE^rfCNiF6#ZRV?!h}Zaxk~8}-I1@K*u;D!^X__^SYa72qfM zguu_vtiVsOY~Ujd#pEB<(n3ii^P<#%kHskR7C1gZ@2=B4dd=`>bx6t z>KuIsX3?k$23vw_Tq82;?Q@yg)2c@R(q)$HFr}LSC4Yny&b!_SlkyIe(t;6XKNa&P z*b;`Fq2`Le-686sCdv(^IdB_zo4kTVW`@5jS$FoQhMNfCYd$SJ#N5>DT1hCX+l$6p zp|+XG#duIy{}cRAwife09JWe$H-@IS0hELTdE+@I)^`__rXr=}|8eGy$0k+yu#_^q z8qR4F1m7-(Wr-Z0ote8sy{ZWo7zgZprkA=xp2hl8f!P%Zf`im^f^RmJ97EDI=kX~_ z={a3))k=4?9hmeCRmgyZ=f=S2zh=atm)r>EBgj?#e4z(oUvdPN0NCx~+qi?UZ!dtw z2!{=JE;{TQrD#cgOr6S&tJ-$oaowGeKP8X8s;QEXFi)C9sSz^XgC14#C7C5p_>vHL zRJ2t)(15^B(3@01a&je6hHxdxmAdb))cd(nspy(E%QSXvuWfLm*yZzyV)S6)B4ei} zQyy)_iSo#!PY8eqgVrON&_ikgNJE-Ww zZCMT^BOt?oS`gIwR|}8@s~21x#Xx`R`XYA=rERu7eH%379|Hwque~Cy!I+giI8$kI zc60;7fJcP8oVInC96=GfaZ4JXMOQ6)i=!-hdkqv?^jUiB7CqfEA|Wt%(HGN2ZwVsB zneuLn1*){@Rjym~P&;G?N+Q~F4w8aho%}R1uV?3S`j+u{iGo(pwr6a&)RHqYNQogfh%FnEfq))P!q&sHin)+grZ zkF*v~pxHz@z0_XtJyl4ylY(rC1GV+4lsp&rG(>WV9{vRzen6=Z5}vX!k+I^Ni+n#d z9}gBcgZCCBPZyX4X!WK-2UGPeU5d`5B@ofK7pJLBm!jthyH=~aifb5R!d!>e0(JHz z5FzOVSy$Md5L+#Q)e6^~#uI`qqer3Af_+SVL6jZRSy3AG#VE@1nJ3Lg?TXH^7ZQuB z5?cw!1k>mYtJkcB)vGhCUR8{+FBTG~oK<%}BhnAt)oN8TR6|4D_Tbb?_hdUFf&pex zx6(dO?x8T-qKQ_@8kur#Lzz;epmKlQxN^j+Y2{PN@|dMcEXkrGtffp`g#Hyt$eTGy zi-;S^A)O&8guHhQmv5uwjJ^}31#3wFRIFAE%hbwznt9cWzz>@j8xS!O6E`c#x`7hR z5HQKnYw^f)%&tM25rwpZ>bgcA#NJ8!hoimJf~i!rCwUNI7W#lZxMFdT5o{oH)l+d0 zo5(}AV8-Z+gNCN0$TW6Ie-nv<=&>0d7VQqp$Jq47Y$S-zZ2eV%oQ9iyO+>v!@?8j7 zZ3W`?@gx&6aWk3dSrWzl3q}t5!Y=2>Vwd+Nn)mxfF%->{F$EeUnpa4c7vf6t6nz%O z^Xe9z;Cv>3Zx_3S4&0L1W$+a(*d&UQD=pXz7uB>LE^Y&!h)}H0ldAqI`hpl2q_mRd ztG)m{2Ii%16evRo8EUBRl3|!c0zPY;72_0EG0vhB3qH8BSkgFeC;AXFqQ*I+acbfp zWSldyI?rmP+#~m?0@}_mdzs?nvgd?oN*9N~r>;1(g8A;ez z>5|lHu&~H zbTDi)VKw?w8(}gzD*jy}@c%|6>(JoecI5plY*7J{ta@|&%b5f*?&MEdCU$IpN-pRV zNh$3P7t~#$j8)@TAw*J3zwty3MOKi^Q&%n>e8sa089@rIJ0m$39p3($w*eCA<$60< z{5vgMk$rv|HSll37V&S#i7#EQON^8iS5MZ7Wv-=W5h|Pqjl9WPORx)maxFpGrtIWA z$8K6Z9XmLEX>swh2EtlMI~}P-*eqEJKjTHtmgy2DgVNrVrS3zLorT=qmMYtdS;wvs zX^{0L4J4F>4AnncJEdQlrt~XD;@OYPhRR?=ZqRJVPmp8AB(c($4#m*KhEP{Sl}LK- zMUoaK<}{*5*|ZV3%@{HpG9b+3JXZ5Kz%<2~&Np1^2{u&e20+MJm8ZXu+=yhwy03aS z8cDZeX;$qY29_}4(svLnGM%h&HK7og6Fe3!M93L)V67;vPMBAJ8C!)yC4q9rBshdy znVdQtzs;fn0CMoQ`g){hcw*FXVCoa}tE!}}{=XjJ73jfyaq zRhWKR6N7&m4LWs})xmm<2361#*Ps(0hLyo1O!=x6FujZlrte#1YMf+(P$Fc<147Gwsc#)2D3iI;F^Ri!2C} z#fg??DjjP|Dqc=V%|mhm*QDi4a+ho*>J|68=#_@k*B4R}kcd3q^J#ZnX#> z4Y--fYUFHc*7wQ|gxrndS%0H?G1q>IUeQbT&gggUV;T2>qD1YKCbe7lff`G|h+%vB zRqm`SgRRU= zBpW1|Bb!22`6T5_<&)Wpb$yKK_0g+Jf?y?UXwqO+uG3(JNDd?n?~Z*;^KRxko2~FP zt5sKLw#snCX49Pw#+1-Zh#xD(tOUl`qwE5j(`7n}^rn#AXruIGQp%r_Nl7|>96MJH zok=M$E}4|TF>@QHMD}Z|E5tQT$CEaxf#hUUQiiZ8P#!x?LN%?Y zy>4UTV+;B`SA$PL43*GN2`Xuhxe&QW0P-J-VN@Ds>M(vOOD70r0 znHJiEj>ARS`k5cg@-Ve(u=gKZrCL~JzSR@d^xkD)d3?g00A1*GNK`-pI#E#}teEm6 z>X6^$X{%OyNRnWqu`EVk|p-WmwG$~H+ zkYYVGw3YBj+(P_;DQa*1@xUed1K+|k9IOcLz}VPoP2532b>E<@-%X)lVP*^qY4K~F zSX=6N@{?+)oEP~;f9MRA0w$wo_R7Gw(02fNK>HC4m02@-szfr2xKw2d1n@*4{4J0e_%@lt z9Z~zV1j?MRzo{CtbsZ0|`FI$%praq+1bCf!-rlCd zjieQc8y?SPW==HK^N4ex$}zFm-&-kn{Vf%Si|?*<1APA(hbSaj=et(GN*P!pRM(jUvKN#N%M#0hDMR|!k6uDpv)zOf*yWO?(IC-BFa zznT=3sNwTZ%6ox!CeStd4s++re#tXK_Z*LcG$I64tOH!dXBcPE~4n z$kE;t{Z;oU_55j(C`(>>V^SS6{xZ1;sX$Z0emrhj_hs{H&#bBE>gB3jUDq2x#uU(c zI~X%#_R@5>z8gT(ExHK_nRfH_6(mI`)!J8{q~Vc4Yrh^h7A?d7hCx0Mk;SA1prP!j zhzW{_O)BBALG|`s^w59E(!LV#SJ!D_Ci^0!p&E86RgB73zGDypfj-iyaMhL}Np6Yo;1=9Ibj@gjdC-3@?Wcx}{g zs79j;$S038gv9zgz)hW=8H{czib6IZBs&nZEsqX7;`!kJBtNj`{A#DG+tgRJ_; z2ME|*^^Xq_u)FGx4@4j>6^9T*J2>m0&zVHG3aZ6d)4b7tjE=wyq9aHrTh*T{23yKi zGNCV5Tp(A!(IKSuUjI-DD4fU>LsDk_P*i=@9-W}TaSOHM&sG)1GDhzxib^A=LCXb= z@a6l9(xxbU2Fz%A6VPPhm8?*SmRK1{PGr*6ZuueT_>bUd-rgqu!bQVxBEdd;RH*>! zK2 zSm0*jhH*?2o#U3x6cU>{1_Yl3aeoj1>7Tg6stiN1%c5@>Q$ZZ1L&^%77FdJ2eOamt z`mpxFkaLRmS2}&z${wb$_CviSxavYrl(|raa1Dt%;6n--soLD1ABYyiSq!m*@9?Ps zfX_xEFm_I*0b;3RyAgIqFW_oAg=e!|s=5IYtm%3No=U#3>}|xq`qnMTN6|h_A_&I| zOk2h9sOw<)1(U_g2TzHbe5o?=h-HH)!zO4-5aT+Z#wCBHD%7+kccHuWi(zuDnUP^H z*`F2#x0qPUv7Y?V_NPTnkeRcBVG4}>%7;lRd1CBOuz)1Ios0bm!MBgaEC)*u1&hjt zKa-?vfEs9mE%-8sfhM?TfP&&dLXrV0k)mwCRc?mt)hV%-$vmIzrYgT+^*THc@vWgU zsV^9ynCpK^bwVSh5)oXJ9}RW}sL>BqW%YQLHiQs!9ae3Dixv2I&4izE(=@w&nn*Z% zn((EV72A*+SXf_R3kR`@Tdb^#$w@Jk7n#v9a!5^(X~zBm{9VZkit{ygHPqte6Ut(; z%|J!3MNG17CY!RSxT=y}Y;Y06ymKB3t~Dm=f+&VlkqLWeoq^Sdb%uO1$vPujORb<( zp|$D@z8M5U%<1yPMdXvUgta04F1%%Unp!q2qhm0!WdxR)NHM|}OG~8bv6PddD2s?m zoA~55lQGC#XHjvxIV1}LR@ZJ=R1*0z#}Z7js6d!y&9O{ki%Kj{RcY52HD)NoYhtT~ zO&T+V%hO6uTRo-{)a9)n2&c#N>zyt0#xXt2XIV~TJs z?aY4`*JMMIyH&=)&*GZsTt|eTNL>5gB170zRFtd1K#~&xt701t0rwBYWkM^n zq?Pox_SNqy5Lewt8S}~{!&Z`EwL;iKoe}X@J(w&o(IU|4BerO{heIZ;`KdnEV(^X8 zQy|6l?FF9UU8|fQClLjVIwVDoetKBWhVYdYVMs5<-lQRbLfYI2KL$6Q^r9f*=pn^a zFY?Og=t?kBeZwAc8hs@6qEdR1#P+FPR7x*G+Un^=vSp$@l|8+vq(dk|$*RjI^dd|h zNiWLu1K3C}Dr)p1_e7TUW$VO=Q1!*;nWPt4Y|i_(7MpG3gvwTlXM-+{rl2EDPX%%a zw2&t2MP`GLIotJ^jYOIfp)REtm02&c5UdWP7tKpA>WjuCn5d~_78uU6ajPy_x;B3d z;lWZum2gUkX89bPg5mOz0P0OxwWFABTdWb<3#T?X0QOniB>{TvD-*$kHQ&%HV$)mfTnWWsLaLyLVy`Mp;)AVZb6Y~q z?CophWfvkhENulXL>0zpgX=KPb7wnikTdb14ms7SYt46bl1pmAioR z$MF~2A3$-CZqY7w<}@OcMLF4GBtA4KU?^NAo7m8t*w7ZS@~B;%SX-w=4ej$w=EC+~ zvZWLd#G+EJ!c=w(!sXFd5#8ZTBGX8y+SZ1cX$LB@bEqpG7BLOUH|`QZv((Q0KX;6` zR$V?iqWzuJwpqM(qJ`L=JR7j=(y+JGlTYN?T`Ov-uRG~429vlg)8sk%VR2a z+PnBYzqDc4audTYVc3|gy!XT&vFp%LB|DjSb%-{Bh1nAz7&PV`ZL1U`3jo9Dg{WAE(8R(FUek; zYAdC-MC_X)9}~!TYE!}vV6x*?PLiSHxpCeiOY&Zc9ZBW82Y@6`E6_v6ktsXdS;^)d zvuMMJLYK5f*(wHJ#hB>6qafyd&skP4l@7KOqjSxHOa}mWaot># zires;i$Aj6B#+qvz(I^;ql2&|0TH;Jzl|=}dKM&AYnHo(724R^z#i=K*&Yo1wX_BW z2pTrJAPb`fp=?pVwHhsIc8mHui^1rlGvzRJIh|A-uzJ0uiu#>MkQ_^76PO=jjVx`O z<4Q=dq`az`J^I0)c;J_R{^sBQwQsoLOC06aYjd?39ED$;!Y%g*)nJ5WA9;XpUVEPo zMZX_qfxY;TmCy$2JR*w*lmgDh&y{0nu*Z>`o{y%92sv%Kg~=TK7Kr^zRqnF#8h!@yV!f<&o@1db~fk=)5i8>&U6&^o5ebhJzdZW}&x?6xv zmD35OU+FepA=$^9;nL`4V8Y-G$I6E34we_8QLX}Z3)T*oT!Dl(x3Ty z3CZsp%W5@(#eCw8XV@T*D%;y{=jGG;au55thsCgz1mXNoms~NZU+*oXlwvfc zuBVRzV^!^FG}=Q~)nK^n-66jU?(C?4s~UZA=O&`vH;=~zTDvU{3@K>QUI(%QnqgMzafs&*unk^f12>4>z* z4ZP5<&N*G%X~P!xmxiC_c>9(gpw%}P2xtA&xAszzr|`Uz$CYa5 z?M?A)=Bs|r%P<^`Mp_i@Z9m8y-_D=(j4lf4*hH;t0-P}qw}v^S5OdRTk5H;oR1 zk3rJPF1rRwtU7$gwvJqFJ8th$?Q#m*VRUOhtS03!RDYxz{qXr&(Ca@d(kL&GjzE9I z;VEy7bq-JPJJYdJYvKtqr@uA%O(DR9p~DhWVb`e=<{_aenJ`7kVR`%vCl2Vz-fa7c zH!)_%<+N$bauiSNf9F!Uy)(>i zs0$~nzIEXWvU^`=m^}jB?X3DSt|Oh28>b~|6kv__h{mfG?cg6p{oglAl?HO9?6YeM zh|w=o&eO9>piaiYiBFsf_$NNO#j#`b3{O0Q>b8u?a34;6hz?>RCDdcg7Ka#yB8sRB zldV=|%T>PfIIoD9Qhn!et!n{OGxz+xW5UmJey+X#Bw-`RJ5W2Tiu~*Uk$F~7oz!P0 z+uFewfo(gQ>O@h=?Ve#VikS}w1t21U6= zLLC0R3i`M_OXI_(WogmUjw1O5%L+y}EBzUHrEVWU8sqXDQO#vkRdEuX?jiFKS4-Eh zg@_6mZ_Vyc|!w0As#~*I^qGkDm0_SaVpH+CbB~guS_?fo<0h58NbtN={ zU`~^ZD*0Zjv?nPkyso}r8TiHcF>wQy7vS8R#!u!iTt@fC)3qEgEzMCr0OML_q{j;o zcoNQyU;>&kE2izKSH1f5D^AM)7j6w=O%t|L0)|pOPd72oXy#Hc5?JX&2Ue2UXct)3 z9z&uN9tfVg(c>!h*hcx3@e7ynzf2hoD|e70G^J=OATL2DWsue-tUR#-yv2ed18ei3 z1cgBwk(w6>^Q>2RariQlN-qBqLnYM&ZUn5A~Pl-3g`EW)sWp~v|UPUpJ5oMj`Btw$8G!=lG! zB>0u;TrmK3AP@j)e?0i&uu=$M#XssYuDf7oC4LVWo6Cl2g;3%m>bbWw1fb%w1n(z3bM;Z!6Xs% z6-ycJA$8J2%!N+-`_ zoOw=c$o~Gam^sUmy$0e5sRi*Im0DcQ+(?JSkSeS#z$=TY&Jc{?;imu3!8DVXIRMm!_on(<2yt8I=0t`(YlzJH;-ATO{P!+Ibi-AY7Vs@@ z9qS}8;jyn!xty;xd37 z7IQzl_}VGlxVX%Nhr0-(Q&%&|kStmInsp-S#sbL{=Q2D573mWLNHWG-)FxK&{0j_| zVO16b6gFe#a8tzA7H04-LFK3Wh&{tu(kQO0YBydNibuFfao+~Nep%U+n%B;nWrd#c zE=$d4uekLc^BwZ*SKPXq#c)%{SaI2#c>Q8*j@Oyvdo8b>$&H5`9N$5%V3D2keUWC; zZubkpA;WI^HgkwgoYJlIW~X!l%O#W9yyGRw-XIP!o%u&}yZ7FFmh&8W!Y1GdnJT$L zj@3Q6{@mn>T&qPp*J`6))SBfA@!U;bTL|TvY7aE=@(kI zM}lWb_m;6CZ+>fgke%0O?Yxe+-9LCt0w-+rr)4zDG9XGjmS_^ zBKE-Owc3Tjgm<>A6wFf+CL-whN;4hHgbz>f2dh8KAtWhi^0d^S-8u*CKyx8#X&Nj_ zY$&?SY$Ce6^(;fvB3TyK8k(9#nRSBqr*F0^yyW=1almSL|tQmtYZR%2{LENJJ4++-95lXv$6 z+G(c>DGG`#uDYX6VtQeEM<3y$Bm0cUl?m8%(ViH5gP?Y5ZsXqcNi);1jbZEJ@IVQbR7hj{zg|F%S& zlo(hc1~OAs?3qe5-oNj2F5Y|5p541HykO^!?c3_DTb7qbiwpB}von?u_a_nWwX%?u z22G4L_wG5%W2dvvuz-kYSJJg|PZ$q2KW>1&I=~#uuI2!+PKtun`%m(n$$Ri@KWEAI2$Ha3x;#`PbBh0jY2VUoltiOR5n%& zj;TTQY(XiXMYKtcHIa7P*=~^_l1*wvKd?O&1^xWxuH1wr5I14Di@g`iO;6l$$3Q|H zO2-KozIk(8XcCSX7wR7_qv3^Da1r<2&p=%KoTYsUm%edxT;MVm5&tKNE)CBa z7m(gJz=dgQ9~V|OqD$|YQo5i^D}f6upOLt5@zUocTzJjqxNz~4iVM0A-Hhx}>B5c; zabcR;#|7>C%~tTCHB9Q=>j{JQ{lul%(Edy$4SSa^PU!Fro1??tClwu#`OXm?&PQaK zY=jLzvmP5Jfee$+NL;vRX>Y=XTQr2K#8sl^vA?Mk?C zdUIU3a1AcZhE=GyHMEh5giX)zuh6byx9J(S>BEy0lZnWu#I9}>02QH6IzJ|oErAP% zrzR35vyC4nl3qGT8u0|9)EX1XGMSY6VePuoIHcpBUm8~aqVk7Ix+0{{Z+R4#I zOWNJhPEplzMQ+5_vP3JNV`_lWa~@Xmz!EYE?BxSp~;P#qsawN zDw-^xGn(L8x&fL@Qy&RU%5y`LASyjHIg6T{J+FTc(PZb+1qn@Fy*Zl5mv<_$p6N@h zJC=5)@~_&w{Eo+fW*fU41U2d+#I2`B>SW9A;zrs}rbazOE?Zt3aHeT$hh`|j9DEST zNcOgOtQA!WCqPUC47RwY&puX`Hyuh_K4d&L<~pDau5_N5&O2~KT} z1l!jj(R=$yv~6j7D!+A8qyM%k4gus8BVpD+qAfLR(l}s7oT5RNX2J2Ev`5j)8aqXpP@M&VRGv;n-(WLMlOz-<4nK!tWF-e zxctB(+xksDg-@Bb{=t6nwSHh57uP|ARGij-pZkdWNCm9sl>yG0@5cQ$Z067cO+=UMX;;apiusn zqG)j1ER9}4bvhi_uF;Ru=(m%H?hlFv=9@;(wP`*UfyvMsI*E|s>0d&a?PWg1gst<&6QRgmuT`@>me zMR(-d7mwuqUA4QX)yhMpJI1q>b9x~S@HCwxSFp8%XQr+2?E~8QuiOxw>0rT65Ix}434iA%Ip9<>S< zKC^P?usa{ov#Erq&AGUpOox~qr(5W){ACE)a036*#i_qcSqz|AW|kYC1~34z0)U)3 z&}Hv@Ve|=K)=u2R;*D5J9?=Xmte`X8dEQ&?u4i1 zk9_j8cku7rxBSjJ`ROXl`fW-1OA+2iSnyuq*3mtchyK4&immGh?M!elo2X!OREK-^H{$%+mG;q)?!-?|K ze0rLt`tcl2n$r-6P%n96l2d1Fql}+irW#;M;ow&|q0byYdV{j{LKhArG@o`V4?Ti(q=-*%gD`AiYP~1))sGA$w4@yb3n163m4k1@_WmmB|j( zG%Kg*ZTygH;@Nd11Ma3H=Hui7ow(o9IOoeg138#}di(QLW05t&h^f1lQ6d4H@>U9YV z)M2!l2_R$jed+L(M+*gD1;wTjI(df|sex2&jwHOBFI1)|u+02cM&iH)?L3qNGBQ)X zvRXYF1P9;bh9zalG{zmL$27QAl<>BNiPx#%j! za)t&hqmFNt3p*ejfvI@IFPSVX&_7}Z(op?NC0xPEs`V56@psB8-v@wv{b<%x7MyGJ zy19^*nb(j@B}8<)i#qd|eaXliA(krIALdw zfs{x?fsUSUxe#Bb2A55C3f*oNN|{?N5yW?TVDUZe6n21L7gbF2h!s zt+{!EU~84eVx~n`o~EXnEM_K2SoCgcuUKma*`x-Nlc`1-!c>!MO~Nn9NrMejjd(Zl z?*5*|BHvwEe-Uq0g8=JZ~?$SgyfyU=O`m zx13f!SV|*BqY_HT9WbS$y3IF(h!_ut(GkPqAlGHUN_@kKs_^@OcP@2NWZ3SV+h7as zxJd7keZ)8h`SMS$Bk(Qf5uS~Tkhzd6v|}P+Z*=2K#F~IjO4a6wrgB8g!-hMP%T+p? zE}`F24hl>o!)3ZW9<;Z9{~0r>AsU{fr3rtAW9py+dO&<(^+d{f^w>k^9d_#xrS}As z`G!_QNMb)-&Bi~=0_gi zgy@-9f`ka;50Se%X;Z94CK^7>Ro+`(*l)UpIsdauzBA}gtL z*a$n2(gS8NNjf8qiLUK#hxPqcemf9v3TG=GpvcgOXg^<#o~Zz}dTo!qbjk>~yI7V=&4BTE+# z7UEdT5k(RdPk4IdZ+LCwM}_aD@T91JpZTqCE9L6okFP1^wvhATh2Y2gOYQUf@sA4a z+57R23+=z>RQA&S_{l>1;(nxW#5(cgpA>}E^dpV_p&I>|FWk^aQvN_GpYZ+d&Q2>r z&|V)Oui~fKS^|eB1ld(5cq2I02 z85OFrb8vAjFys$cQdIRXxei5_rf_Xi1I=UOgee~eCFW9*h%52SW$1H3#4nVN9~8FG z+O@$XD6kX)wP70o6x#{{yBU6}z_+sg?b1n?h?>F-)zL>N_@@!k%6<9z9LBwAO+-C=G?xz#z-`=oFYLwdKMD5`rgmcnTa zaiaLYp77l5>)w)ADR4YE*dwd!fDQr3OEa5+0_pwW^xc5&?iv%|V;Rbybo8$}BlR@G zPyG=HreXH`9_vdG7UbP#CDgds-Y z#Zep|{fn;E>Gqf!fq&F^4cm6%R%yl-i)d9XDgb#sj23lOs#UpX z|4b3|XO_dGO&BQub(CgRY6&x=`%)VKnQEC#|!BKi#`Ax+ho}qw_i&JzSM@5qTT9WfKzf{S6A> z4A>O$>DC{mr8kg3#Si@mbF&lAzhC5?2?F7SRNkV{zDC9y_&3N`|Ak=qz(DhSYf-M2 ztD+CrDq5{J8{(7Zqkb(J`LeA1x+P8iO@GbxJB-T2Np@I$`}0UMfm*>dOVS_qlCY|> z1?xH0>~MP;*3E;x+ta?n0e;;jxBE@eZtjtd9gPh-A-7h7=ZtCqxF%ZI7}E%eWrW7ZP-1Ys=CJqi|&yk*HUErvx?j1`30jdcI{fd=YoB2dB+s{-tuE- zsOgEvzS};FeVZfe6NP>6(nPMqzQ3ByH?nr*=Q7c+PAo~`^*XUc7CycQ{elWWlSCt` zCdidGu^JKk*N9xrw;xQ%Bh0%4?1!xkMY@VHMRkvKl+lcL}k}~tWZ9Er^Sdde-v)#1?x&ot_ECf|7^lgsl zKR3}&rO(Bs1x}xB2lW?p$qHI49Z5j236!U)2~-3Q-W(o_Ea_wdEgfu5a;!y2=w5>%_PB>3dbjb)CA_kK1D*2*mlhd;m34#jK>x1Rp)t z6~`V2R}?zd&UyCMF;ZZ7eZn#x9F=MNn zqR6U5fv1>cW+KluI;EdXtAHS-}gS)loSg`h20 z5uJ+q{~GH)4Ul*c=85*y*S`-Pa$p<8+{xi;{gBk{QTyP{P9GP3YHzTRvRss_RJ67X z5^MYEF1McAJAOj4%%FWJC6|7ZxTxXK1eYe9dyz&rOpMmIx;&sB_VPca20gjaQ#D*7 zZD`xtYSLgEvLAY_fTu(uIgcD2uW!N-1T+L?D|%Tj8?;$2<36oVgj_ag-|`1~l5-?K zqA|#2ulqwFF1ZZ*$I^hb`|c*;cdF69MYwLPox2l5_Ir3k`;+|47Ah0cs5=#1J%p}~ z=%t?`Bqe<5Q697@M==>#26o`nUJ7mo7*U4YJTbaz^yh`|cyDN#tIC>^Q+-D?Mf#_t zE4iIxxEiR)Wnf6YEl_D8oRB}jQ(Zlo*;{`;bhLVTd*tMuH=mx&N!11B=Oms zERWaEigEkWEaV`4Jj^F>jcO1D+gF_Q4mGbb711U`g8;w48coBpl6;52rdp?UA~=#T zP)(+%$&mptQMkkyHYscFX*jGEgK_7|fbs_ce*JsZXhc8Sec*L|Uc%nO^Dh=%B&y=JDESByGL4^}yfx?z?z-ui8zp1o~E`l(g*7pCc#GdB|U z#9dcU)MG;hvVClVq-wG)2a`g65{cZY+~A8ZA3Qzi5#eqVA(?7>)P&(Y{AP!OaJOd+ zy$Mx8A+Afjf`E*Toj?Xx$h1>T4=3|-9KkscVyz`f#9MvzUE(4gd2-HZm1%O^aTZV) zxLoQV7CF02=5)3}Q=^j^s%MB)FO7wjMfIxpE=~Hly(`zN#wBsbyz?}jcd-hz;G0nl46YoL0^}7GWVkdxuuyBVA2p+d`fZmU4m& zcmrgFuPk-VIMso5T6qYPT4giGp}D=Qsha8%Bsb_;q7U}T(R5e+D^5iZ5Ie96uq-7O z#WgNyV#pg%Dajj&3J8nZhX>r|^zvrzWgKfP!$-Rl{GzDkd z3$CUwv)sXq-VLkEA3L(}f1u5otF+uIL7URh2U^)w%x;Hm$C3jynaP0s^sWfesm?00 z5=9PCVkMU_iCqbD`;1h27)6n|F+!_F*)#{dofr!x4$->&17#KDzX6{>-umN-UbC0b zJ@4+(@k!9}7h_1$vW|b*lD+9|hg*XN$Z!q8(Io3W#NnXgk{BSyy@p$TBatn-pEpWI zXKpsUj=_}bw)QVPxHk~?oXTHJWdmxdN++V|gc#usIIMC}D*0C$Fo zMEba(ouP(P#n-gM>)Nd+c^ktgML`;2Xha<5Fii#c$WJC0yq2mjP z_~7+A82x$?wspWFLn>K<1e7P9KfIxR)u~gbUV%EnTE~=I^t}Ipj5@((S_QY0@yVUG zwT!hXqdv3*^7m5y{>Bgg`r_3{QV1H~13%Yt^p94DXcRqj_ykywi6^U?u1Dizwkt3j zYbcnxG?YZpy-^s>Xdb9%8`9;0{cR2FuVYvr@vvV1Q@=8Ll83cLGbFG=9@tDvuOCUT zzg%z^c`5g8>&L(SFMs2czjgN~mBfsY^jAOsi#Pt}9l!m~ zzYJ+rObYRwpZReS8XQU$IZ3O32NJ>3zhZy`HBVe{m(qle;K%=sZM{Tb;$`^e(LXR< zWxx^5S6IRLwH8n}(W8zynD6LgJIkFnR2uggXja6##pp;yoo0wt-J0RGxEwx+6;&49 zWYb#`a@R>xT%_TGJn(GLFLf#;N;0QN z@MN2Nr}kFIyMe@_6sD@d6_)K)T|s<+A1z8A0rUy>-Bi<*m$7B{b{=h!k`W#z+Am|pfSY@QaC z+GF&Ioyima@y4ZOuq!c=rcAx z;@vp1(i;&OQzF@qWn~Fqab~fcm(n&u<~3HNyqxtUHU<*kkn~wjJiNA^}}RD;T+)Wnp8>#C$%r}T{{4f*A2&I z-M57W;O_UQr3P>{N&Nr3y{u}(xS+A{+mSmwcMZ#eGWQ=4CSQD=&}tU{qEyeP-<|47 zsHuHhuxKY$S?&OaOi_!3ppjm^cZ|D&mX>VBe`fSM7A3xXBFWyX;0uNRE9HxHJ-VN+ z5#js-o^iMq#2B{reCq#I)W1@V3(~NJ3OR;HPb2J{Dty333+fqBXoVldkHh?s698Qj z2$E2|%5%|_!VIJqwJ^ccK@~9_J7jSZQ{@S)FKCj)Q#y zChF7Gy1!?Ij)-WX?qEtfA=_LxLpW`)ZhVKS9fMRH8kaDwsBbRo(>CdBz4G`f|;fMRS3`Gvvok>_ahBlw3%ZnfOd2>NZB+74~f7 z?dtj;ZL_|pZ;qVU@b_ChieDV+?xkZCE+9oh{h z6X;vik#}B!iv$q%IX(q?iWZ5O1AJsl(u2gaZ7*rVy%zThxN=|vz=)R0V~u|G>ZGYu zA)*f@>VKKaOM6f~LfA|lIzyR8DtMUS@16vrXb7nReDi1t(|}siNtMYQSA|Oy7hQpR zFJqMj_&QIa?!q;PlCV)2mE+|=u@E9$%_;RiQe-Pz3H;p96u7hlXxUD zNIe#3)S#TrI+wEbxjcEkA^KzzhF=78!^>7qfweiHx~x`qc7VpE057J-Bb%5 zFVV`bp?~+U70pmDINQNM#lvc?Z{2%4XlkR0dY9+E6boLO6wilC)LJ2lt5T=6j*4>J;?u?c|I_D$sBSh<+S~?jy zAFD=}WUB#Vm6hT6gnU9!+!^xnxizn+)d9qYTm#Li;7_fZ>jA^bneWb-&q`}wBRa9BnQ33{Ae)zR8qphQE?T-xwD^H)^xkA3j^zjfg-YxS zCs0`U7W5P&KNB$?h)05@Ac!Q-zJyu-dy7(S*zKX5tS`V*K98v*do!e-DczE#yI=Z0 zy}7Nf6I#WhYRau*T1@ybiFNaE_fmTc8BU+ffZNL88z%S7NXqcI(N4XSB0j4hm?*L% zPYeLSO(jwKB~ge!!-*{p!jMmP7^08h0Gi+NXO_=>95o12pIIIo$swj(RioTCPg9si z!q6c`BR=eLRPHeA&V*o!C~wF!nW@dKIYGskp;6d5u{Y`d_0d_QCdqJsA)rgni=>0mC;Mr3v_0Lt3 zmy7xX{vAAhpu}ISw(8n>Ip<*gvGGjkE5zg?bV$zO_HqWf^(5S6@#?+oGl&E+D{}o+ z%!J`}RF1tAS}fZo?j(~z`>I&%ytViJ2@B{>Z(_6$@Z5%VL>XHuI#J(UQ9-45wg0HS z`AsrCdEFV^GQg%;?e^4_aNHl927uGlEF>x-*yXFh1X$}D#lg0swuKN^r69w-u2IO zJb`=dp3JwylbYs={XcP5RtCk)+1j^9KgH~#pPc7Yp>evxK4tr%G)rAJln*JCs)yRH z;7(_J;K*cOouu>&f8|)_o5&9WBwGXOu^GytL37362svo&VhNCiwrSX0Y(|ps3U=PB zh960HVs_F-cOP$W{n<0Xd$6ryGgHvr-Tq*7jpvIqq_t9HCZA@OL;Ez$}=grTRqxy%Z_d zFmCvocK>ygVf|eeE#@ao1L?#1&8&lPNe3qqDGND5Q=iRNpSXu5^WUq{#T%{crI%t2 zXK}Bxcu*C!Mc?E_RUsr8n^UnQKYszT(@tM9Nk z`_HPDy>81w-s^@`Q9Ewu?P5IL_vgX~D4>ZJKcpX^jsX&qrj#cWQ4+LO+3;(&rLFMS zR%!2hFqXUrgx49OS#%Sxy+QPLSiip1)FFw=?yY$h1tkT&fEj>9X;!Mlq;0qE7To{; z&DWy3vMuw|KESNT9&xBpq8vkJ-4lfTD6@veYm4?QV13S%#-fNNkhQk&F9q>{R}#Fn zJjS4itUF?9w(02IzN6i-2=PlKS!|#BCa2BPr7R(X_Fw=NscSTbf&C?HJLru{neh0i zIh_nooUOGm$rugZ5X(tqq_1JPlo3LcPd+eNoe0z){XoTrcZ0EsA%WZ0S_Fp!!g^bT z8h02UlVZ&FyKGh3aHjYCV1X}hs8C?XXcW{+z+=v>H&DhIT^iHiar} zNF04$U|bMadQA>cg+6aQ<)7bWm(XGf7;vzO|K-AF;XJ88AkjeKd`Qfrt2-**l`I8% zqKAZy6q0C71HkoDQ1v#RetQ{D;lUN z4-a7yCo|&R;rgD&LtY7?;@GBXT0Tv#?=Z-+0a5hxEhUHW+!@qR*8l!QwH<}4O>e2JR0^)a6ii` zl5$y9LTa$>GSJnS42`PQlcDilTDGcD``td6M=WJ9?Sm;hW+L^I70#G?%D9KF{)^P$ z@Gkf_jwk}er4#dmsV$purZ&2}E z{j-()1&a1{dY#cL(4}~^{-9cy(Sp`blYNI>L&h(4j%i-cxT3!}w|D;#HWE+6?S*R~)J|P9_wd8|CEOs%6%_8-$jj zNu&%`(jO2ex%w`=O&V5Ljr;DHI3XEJar4@_Dn@k-*xz$6Sn#y=O}_~O*vL68^eEMj z-Xy5C#kdH>e5AiE5+iE_S~7EjPGF(K5PcHua!Wk`b%ry&^Mj+dM2tmWZHN3n!~e7V zKga(PZx{G~k^gbnXo=O_PWZp!|1tkRMeY$agRez<>V~h8skRvXr&vUZ%!&B0$Q3sc zM71{>US+~oA>IbwRUyB2-hA1+3QW$@ClsP#ML2$>J;+4x4Ca3|@M6$*fITh5+{Z-~ z>q%Q36r-arbAaAC3_jjwU|LPhc_NDncj?n; zdUyXaoqS^f3E>bww$3p;&XR!E`8UkWJI;~NP1*`^NSw@nG%OlFLi` zN|=(R03vqgL<7~F0`KrD0mAiL?Fd5a2g4a({b09#z&_J1FfZyNx{8*xga76x&I+aH zNv8B+&EJNh@FMgi(300`FBIO7PWy14{;ATYjJtn048Is8=?x~hn<2roWXbU(NVJM6 zlqT3Qh1Sj_XC)x>u*iI5LbjE3W}XX9SS_;}O9TuG?2>Ha=w%tZv}kvyEG*jcnNmhp zB9FIciG0L-C==91k#4m6!>qsxy~g)Qcj1X~dREw86j8;4a_eOS*0mVWygWBKG?v!* z`Id_)KoJK9Ij=9k98tCN z44}^l1e+jcM#7ClMpEv{M(ui&D35P{{HXnN;#*)BEFn-^Tr|-xLAzT_BAupM`U8=# z|Fa2+9hik!2__k;=eg8`7@m#uC>My8mgu)`I*x7>Vr=KzMs`z&OR_F3k;qji>#8Pr zf(#dyr;y2S6$FB8-1N8JC!bMbS4%VEZUpD`8t=Lh#(xH|wf=)@^qMM|RbK`$1A^dK z1iWD*=XLI&ulbgWrj!^?8q1Q|DtudS=Vgv6#FbMzX41!p$|gex{9OIarkn>Ve->AVENkwsjxR}2{NK#aH-uR4 zGNCmh{!c%Ci2d#JY6}m2UftcY&=VOp95y$vubVa|2UYGpkAK*IJ}hS=*u@%oAPay! zfdCyr2h%!Hv0R=0GycecQI*9Y>4BVbt4vNLd$$eZk@jXqY4{R13y6q8CnDZgzAmk1 zJJ-Z)6H(3j35sLV6Y_~d&OnKnu{Wj-0K0no_Cy=~qEV}3qEqveg`-DqZWfNN+#LQ5 zr_MY)xbZXzyHmmg|KvvA=HuXBPcpC$sc zjB%F6G{c#`GHQ`mi_uT?s3Cr9M=dw0tTCGmdm_(T*_-eS)3khu4vljSP1AVJw_H{M zE%e-%Xwyc@^cptmEsnDOlcdFIU%@*ao$k?OrFI>y^0|M|XKHHLRHK{9_ti!wicQO9 z-NWXH|LtPj&wW;)4nEtdI`j1>s!eXrk;vBZz{jZ*viIO{L`F@ifiitHfsSYEUyIVe zKADV#Yv^tNK=AqKU&-t-z4^v=!n9zZGWE|+F+*PHkw3Js-lxxMSl!{AfKX?=4T2;k zRN5}n&5w9k`)Ia3bGEpL?z6hCY_?A@d0ab)yinKlJ#8?4EbQx!714I!1f<*Zx#~S~+gFrv6^Nc4=7N-Cq4{%A28BHaTg1$Eb(W8FKuRO(i|>sWYkhcYf0O!z`@b_>Tfs0r6P zg%yV5k1M#JeE5t`82BrB+lPLw_x@mh+0DQe05I0;VMQP7JPG1VY1cMnP`BjBo3~O# z2eJ}|)=q=bOob;d(9eA(e>grINo~mHSK;|E!Fa@7Ej;7DCf^P&SSt05Np4!YY`9iu zrSqP!=bRc`s(+BP_TENI!z*9FJ2_oS1tb(o2u}c`hFn_hJS-SZphsErkL+zdUZ`*$S5E zgydn}t1}}X0kC&DvMRbHcjqi}ygBYqlB?8Yp{b9`OJGncF?R58aQpvj?_J>Rs>=KC zeL1(8Gm|+9A$O8}j$9HTnVDoVnS@(*ltARFfQnkfWacE9OfoZ>OCUDN1VK@;f>Nbk z(IO&Vz)G!Js%Y`jmI_p@)JsK*N?ZTRzr~8xn)myA*4}5%Ofn%N(D(Cs-+`08*WPQd z^{nT%p7pF}t(B#%czhe978X}W#o@BexeJeFvgN#u4S}#;d@_4G)pKH+zoJsV+ zLqt_r@TR@8fFXsenL53#!Gy zlY~*)O)b9D;@J<1?-c)Hq;GPud~_yKN?PFKsR?r=%XXI@$){$e&lc0Z#qn(qf;hrx z0~exE^;tl|)?}juxhO=B|I0KFp%1jK8x_2saJX@QA3<*6%i$oP)P`GNZi82PROPTf zhmYA}1yQhFax5-~UB@0qOIv(a@pZHPW=-1=Kjxw*(A4SdbzlJ$w$GCWZ#rL$!fdEa zU`4Y3leP{*&uHx><}f{|DSGm`sUPM${maF(<%J!VL)lAHiWQJEf~a=ssV&rAqinmgJf1lyBpMI zW$gQW;v{CtwgeX}P?BLG4}!tML2RG{>~V6dcZ3_7$)ZCjYuwO0i5n*I%Y?(Aj%7>- zPM#i@89{j#4rDnslp;J!&&yhah&oX9sDl|)&$|DF6K60(Gr@`QyJMNj{0^_w_#J1( zqIx#WI{vqs(|oE~&r?IOkt(&13AN6);b7yW7Ef3V=(~D3W7K$I0-WoDD1g~5jV3Rw z5Vk1SlUuCs%hPqJ=QQ26$56!EZj0aj32Ah-HRLdd$p z^$MY-I&2+Q2xs`1izks3;{dr8p#`O8J5aVOlO@0`{iEwzXyr-IqN*rK!S#yNwnig= zpRI>*;zd|`aN@;ARzf)LCy??*Qf&ClYdZy=g*~g@dZ~AoqO6F(LLG`h>9!KFQG|_) zo-=3rA&Ss*zQV%e&Pr-^cN}xRM0eVB0IM&p%8n_ws_dBZLZm&^gak7aBusYrxeXGz zn-C@|pfM4qf;(BU2CL3FH(^S7YN~JL(0nH)H=%b6@SR!se(cVVDoo-#x+7N; zEC)z+ZlHLq6B*$y`oqvTnp`vTnfDq&YGzkrd}QVWxY&L7`7% zgfCT)s^D{7#taAvm!>*^d~Hq&aF%=*Qgz{p>4t`Y=p1kS8fDXCw zhqIWYLW`WsWue&gpB73J5yu@=2pHF(Qn@tV_?5QJnTXa$NLzNOdv#leh4HNOVlO7F zdNe*TK5zFz4B!X7{y5mg%~if`hKHNIU_A=Ri*M4bw;!_XgG4ika@Y76=Mmh#w44A zhNT?WYiN30d=G1sY}lh^rSW1}EtIJhN0+!^+f;Z}PCc|KJkxUn4Df9Yy$lUZ)YmVG z6*eKz(_=E@EU^=gF^Qk{f|7Xn@w*TYwk|FziuBng>}zRIKs6J>j=|xC-A{zw1lLJ9 z;2`$^+*Hf*y7KOYQ)EBzQ`slKWSz^Cz6AeH5+?b-@+I)zq1U#vnUk$;XZuEWuEG1j z5cQ7G_IJT-jTks<1eF|y=43U|Y;NV+Bl<)q(6e&w2{|wRCPdMRLruG!m4{j$N^K#q|tFk^wgSg!_bee=!)Gs8Xz_@QQQwh{^7P^3<{3^SyxLqR`GVk4tV# z7i?-4x*B`3>Nwhj>wg-dCH;s(cOiO%++jxmGeg+7`3tT70}Kl~GI zJ;|Vt$G^k975G_-xV=4SeQj2{>>gHDucYZK(c$CT*Q>HpVLRh&<`vxK^LQMQ`4~46 zo!jinBY?cq=W9f0H6O30=OpWG+Hi@=A%w;RtGNYRIC2A1tE+)fcLghztmRJf;B8x_ z-K;v~$hlci&X2F>;#QRLDid`KlslqMhtAGurBKyrlFUQ)giW)9VJU@kBN>=3}2c6!;JEkOM~nD%BqO#wSJ{T%nZGwRp%`%lNFC^ zr9-ncLdnj8j7{}M!$ zvn;&LyzjyV<-%WDxvf@|SIHEHg~-!YS)fZ>MI9`IwN-FhQl-^Z18ZKh;otxJ_22ozpa0hv zmsmv&8$SB@H=elTXLtX_srxGV=p?Hrx37{_S(jB7>qFgcuPoUYF>2HOyh@}?sZyq< zrLco)I$1RpDs6la?2Cd8?|@Sww3xZ&Ej z{pWiR-1n=i{|%3I5G}U~n)g*^sL@~yS>0D@+*g@zFJ|KvS0!gxj@^eL-C$YRa(5p- z_M9P=B|*w?VdXg0tJ{}Vj#pl7;!2S;3KDPwVJLZ4l(907j-V2ImRK1e(h9kva>735 zEHd)v+lw%oqY{TIORaF;0$x}8tc$?oGSq@ zzLiioOgkO5kCv<~+NZe>W-jJh@mX4$v@;hy&mb#LZYTJwwR2|D&ZDNZGZ*m@+a=Vs zvqVken8-niydI*Rr9%;QR;`^CD`BxK0dhQLI~_gY>RCd3%Vc_jD6|AFu;>IU7f}|w zrSz+a zMkn|-i|mR5lsg?gQ~8|Aw^@;Gs(d=EL1<}_L(}sqO_fh41qs(ZE%_{`{8g`S568DPeLE|HD`!K`nv71g zGaETRNxFl>$>&tQ%|aHf!vjt5nDL@~nork99Q^=?5R}#)Y627hJ+nMN8_;zv+TGO|#U#2IR zuAQlTPUYLIgnBYP#W`wc()&Fv`E-1n^eexUzHJdev!|0!C-?NQ)3q~|Qy6WJ!y zvlO}BFVP~0rsq@ipU%=qIO0h7wx(}qq3z+@nsk~)RHLUW_b_@W?LVjTZPwWd_4d%r zq@D23)0R)y1A}*!a3p+N)3+scbVpAopN`WG!?&q?PUYJijhaHw7F3h?7Qubm^6Bie zM3Wr}-`4c)Oex0M)5)jP98i2ZzD?zGD&Jp#uMKrdg##f#1cK6ee2{Xk#NRrPiePWQ6q3L;0|2YSRgCH`l&>+<5AuKpa_>u4}G-uq5 zeS4I~Ni(ODPuCM1re8_rb1L6vogH6K&sm8cO6>SU)AK3pTW6mo?PT0>g!G)N@h9~j zjfBFNIo5RB+@mNo(#Sm=2NEvUIv=Mj%3lq z_|xf&L=PRrw|FO-lR-N4Hh%(nC>8997a|?WQ14Nw^`A~24#T&pe6sn(B)*j^BGI>a zij3>#(4|T~;U96`1U<100Lrx!%%}3{+9|$;L9K-5WZXZU-A6kc>)VNeU*p?m>4jOa zK0;vhL}v3zJ9CLdfxqeGbCSNDk@!s*pyp&w;)04!z}uF#RJNDeG^PJ^?SyDxzD_=A zIP{z!9ZO4LQEO?V<9$~Glrg@=P2>DSc*St-Sv!oLyl}23u-Bx1Wg(o~oN#VVoQuDV za^+DlUYp#`8FhY>lyBh|ke9TR4CWsq>J^$cCNLg_govKWxGbe-DT1q@C&;CpfQsri zP+f+jqT^_%^ANE%HpLVHg7T5kPBvgp;n4tXQa^{gB*k7SYP}{}j2nj|C{s$Z*3{W( za^7)(M1r>_&KhzwFXG=zk;pxB==OpQ01*T`J<5wBfJ)Id#|_DZE?k7^P$ey)jtq=o zdy@|mOs36C8;7qkxW&g>XU6eT`4hO-9oP`I&41&4ly#y-c6RZDo%sR3@+L|FZ>Y z6@SLk0yA~?7i5_KP7?=Rv&=&2#D$H`nPRLUDWbI4A}lVKLw-~cTJapz66*LLZCI$Y zMt*bP9!@wV)~cwjFEeM+s4Qo^Fae-x>ac9n(=INT18JB6=WBvq4lVdKm<>MC}Tx5r` z3M&Ph{cM?62eY=D+s&i{GmPbc8bf^ZSB~sBlX*U}_m{I&0H7WhCPfIo(PTv!gPjm$ z@Ft_kF=ANb@%>cC+!O~FL|Jy&RA5eq&+1_!oA!b~OZ&ou7*L=?oH)6KIgsIPalny$ zBTd<2{DcSAxc-N(5aVaMQl8Hx(2*`8da|i%#QvjDoy`R)<$$N%NVypw&v3LB5bD+) zwnKPqQ-A!x=T6$h!@s+g`|Kvot-tSyVt@QdQBQyPZEoK`j{pV|uiYKL@9{>>!G7?) zJf5Mj20?n+?)c%qZv^*RP4CBF|J6NgdL7^T-(2qXrKu5$62?5 z9f9FtSqA}`EPM~*Oo&0uatctO-9L5MP`djk+iQDZ(u2MK$5`FPAb>E(sf2B0b6L;l z0O2?w)33=SiiF(%Liaq+aIeasjMV^_Y1c+oMnt3HPfmy=rmR+hcF05I!9tuK@NKCY zCUQr0+$D2vIz&K>&okmjJY|D7q&xLFyhx}6=pfXg*v;7tesVSg^SnYZqBk?^RWuC; z3uwwG+~Bh)fpU~2L|v1z9Ks-((X=l!rT2diG=D`8*!u9M?~{0vf9%-vem5h`Y^#4P zjAd%5VgU+h9wDBOY`%084bX(I9)#S%8?9|SC0m8W! ziJnW37?zI0*gYB!ahVPZrH!{F|mdg=LkkZS`P-2 z#YhI_zY0nsQI8DFcYW%|O*)k_nYUNb6La^XjK=j+Big6YYZQ zGD%dE3*TWzUMyq#jBvHJ7!?2%+*zi}6;W(SIyMXb1#q{YHaGP<9y{?WUhQ+VrvF;$ zAP&LZ5WK#UVM!5-NI0ev{gAhSW!ut}y67!9y9;E{wOoNRNFIocPtrN%lT&AnLNS#o zYC?-R>_FZ+$+-82X$XO#Bvbs3A7pD=x44EXJORN0EC8Qf(U~VYPK}rjc64{B6k_x2 zNG{@&X`c4}l(~V1E$#O!IU0eYNxB|FDL~f+7Oex|?6t1WJ){@g$qJHU9dtLQaw{DP zGIIn}P?ZS*58O80PB_rYcRqZN7nkEFYE4q@A68UY;6jfc&cScBV3(bK8TdBC8v7qr9lXCI~3SyVx!%uW9cHra%F#zYqFT&k!Sm-$bWxh1|$7v7i} z<(v3UJ-`gD74o&Pso53c4rEXvig{6uS1I${_;dflB`M@u74juL(2gxYq6Z}kX_~H( zpDXiGM^*?Xmg=`XwQDNO7(M<+6~nP}$RynD4s3xw>%3;srzUZ9C2H$I5Z)D*O$99X znh+);sG8}v7R2y_*&`Aq0(a&mC$UJh;*aWd5!2#Hjp8|bbGzR7b+DKWn??j{Zb?{E z<8-9?np!er5<*1INiZ9I!D_<GgkSux_Cgz!oB8$6wInu%3P{=c>w1xZk+L(LpC5lo zFPf4a&N0B0oJCSrmD6CvqWx=7A9PhOVKr&WNSda|(4i^?%oMK4GW5ug1jqzkWQvGT zKhyK1=_#R-#vLp}cPeufKcI_*mqJX2eks|SS%*KUP4k1uvHxUhU#qVd#2?fJufkyq zkzzb#A%CYD7sWr(MR-39B$H76pn`R4}~kkpFe#6 z-@g94-+1GdO5OjZk9_)PfAXQbZn&~|pYM7Xg8f2Scp?e^G2YebifC%tYM_my9xw~| zkMl+=TcU`mjv0et|GiR*jhriR^JHOh)IfUdwhE7-Ug!(YN2&GkV8jRYxr1c0QBGDn}jNM>!c%4V|9S@rJ zOhMr+Osn1T*PfF>wkiLeKRbcE#un}v?6wMRfI_u2tch0l)0fLq;wunI+}=b zKkhq*M10bY2V~R^kI|w#Nk}CFoB1qJv@^xcEYVniQMz8s%2czivPCw&q{HkB>f7%Z zD^rh$(YOqDQ2`osrGpCvIjc-CUH8ng@kFBS72g@M`#Zv5{{d(N(m?ofq4XAr<2+l) z<#@<3Yv^$If+Y(qCRdhn7;{{=Zi4h3gO=o$5jJP)!7*}P(&`;M`s2%Y$01?}b#v$7 zHt3Hy6BO9!a>VWFha4T@owLviuFyNUTG@ZBA3(Hj5pZBTUN$FjHYB#R5NEmP>Gc2)^IsbyM-(&eG3y(nY zU&}#D%~`@4LQx1L{X*(0#eR@tUlHdcN80Zl7l2yAw^TH7Zf2 zADfsu?R;L!aVG___EKk7)jOQbKd>wJBpP&#E)-&gY#k9 z_?ZyW()AqLkc)9C@e4w0kWhyH!odcUaKte~FAmy@cpqgeFg`iW8HvSdij2V&8CfnB zAF~I09OiJH$yp2aVj&~696+$~F#cskNvhr4j!}S9OV!34{ykdyqcCml?g~CCh+TSX zxP3CvJT8XdT)bkGjWQPqb>d%t({4uB>gFO})%s+4Us$n9wXjy2_a28%j=d$15PHFG z7=i*ELjoP_|9v=svM~CXOar!obwsE zj#ljGdF`Sg(?+ia-7q{Fnf9b;4aI@R2Cy2rHmNoqN=YCYNKWY;GFM?n^`+83(+j8U z1ji%#cLE+7uh9KH^zoqyW(^tVH8WI)zYQ0jVYmzo*C>>e7dwXsBSEegf6bw`9M&3@2g&UE z3X*d;y{S%E4vPVBsUL^?u|{dHeEpvhiPY_;{un@XMOSQ37?Q%gnN<^{%Eqsayvuhx zjY6s6D5P*|!DkExf<@*fxLL%%qTA?hVeX(>gQU|3N%ggobhRe*wx*@+tE)S~kwYQ^ zDM-Zi9MU*}GLx)BVGQdtEfeK05QMXEx4P!HOTf~^ORuKA*KMmeO(P&`@ zg&Do1e5ILDmOjHyt4s5DX<*O)sg8#S6{bG$kgU(5#)P-mr`I}>_OU$T zdsF#Fn>K@UQ={s7T$eb}Z(%dhMZyfFJ?p))R)d=ua*>RW?~~%Za%06eZ=IgfgN{Z@ zlGoTs8ky!cIQXp_N;E#mf;0w?c-A`il&_gpkPfnEVi&QK=MabM0F5L?6gaF35f0O4 zLCW|*1u2gdlKTi(0pJvvR(gP9bqw$Eyc9fy6rZw?FwQlghtyCoOhL$gi|Ur`s2Br(JGzGwqG*6a#%oMRGi=*1Uncx1K3_UJpGAQ2}8fupXUb)0J zAUG9ngYG2PkRc!G^vL*QJaOWEi|&wJ&pwha@GO6Xd)!!s#e{GyIUjOS`oW(S69%6O4u(zLT;=G&^G&yAU?&IapgFy>X5+7WbyHWpxDB(afZcca6c zrh(aBO|7xbmTK)zRXN>*6nWA+(KoZL5G`}It)>}8|_UlSD8FTmt*Ofs0ln4Xp zuY*Ly6zw!|TPF&Ku(*|pVn7_yen?T!6swf8!;h)t#5SzQkMwQQtBeIIWiMW?A7(TVq%$JgfkqX&vnM&Q}wxNE$HEgMa=_CM4-b9>fH#hSsTiFuM)C? zl+d;I<~}9vN#5vM%l1trzLvbvwU+IBN<5If(Y2QCQ6(Nq-soD(_ERMuPTuHR%l3p4 zk0oz(t!4X-5|1ZubggB3vi{B0Z{&@hsBz=+mbiB*0SAM|0Z#$)D#Q{&?X&2qFd|x4(To_9cOb*^yP9gX6eg)`tqdn zc_tK?%oaaYsnX3jZGK<%jV+nXi4`Bp*m3cuM$194UjL!|-fpIz`qI$SsdGju9i+ znLbzdo{Xyx-7f~Ew>j6GtB^{9^=ao5Sqw)|2e0cBj4|&KC+HtqqH$zOJNg9TU94|) za;tnI_mq5T|5#tTm1$oIMX~O{fJW9DL4!k(nxa7CWE%!0ra?wMnHdQV>J$Ysdk&8R zz_)?JR7kAv<0w~+cY`q@NUW|A`~E4PlG)rniSfHL&+Q)v%xml#F^mQn+&y5qn*Va%j#v@QcJ_C*|^-^#a)!a@NZ6aF? z_dYYMc=hp%Zd`~w^BLY^^9Gx_sg!44l+=}?0X)0nnT2MY4%ZU=sqlxu%m-j+Voyae zWs|zo6rTmCvv<_&9lb7oA~1>EfSnEmP(_()E})5f`Ck($9p zeZ=xDIZs1pMzQb88zbY-u7Cr{u$iuYuwMU7t1M{}!&{Jcu(A|9la(dS7JdQMDNB9) z>?up2_EUA~szkB4=G0WCwz2|M6Doc>m8scH2feh<^eVG1-&B>!h+dt7`S4)@&<2F5 zeq<)b^kYJ{iU{cRqXRM3j{s5AQmH1JJaiI!%ds-isHCeB_BBvAgxW6Jz#7()Z=8yq zT_6Q!BS$oiyMb4eTcnP`jXD3R3vFMUdNB&0vk=d2ie=qSTVz1bPw$)dIW!zv0lh~2 zl|W{IIw#4kUvr|s^RKC{T^M!P$iyND-vd_KlkrH?B9 zO^4kRH+x+Wgl=YwdKKFzELoQcs!)*uuvIeFRYt)EMeDL(oc#mZFT z12Ylqg9NN7%hC$Me=>?I^a0-PEy~ZzoF@mDRV9nSxG}!>UxhxoO$?ub!^Z7??R@qB z*Wdyh^N_G^gfWd;u0KOHpgAT`p!*aB=InA^CjQ__rP*opQ=eTMI3XgAA`2^yzX6j~ z|A0MBBS3dASRde}ioLVZI*-bv)jtw83}&4BniIs^YV(NNMBX~=*<9db_R@^6`!}H< z2UmO>3;_ejkHhaOKX7F#3DGG{oNsUACtVi2%I43*nwsgW26yT}A$?DwaQbgtW};Kc zl$K8Y1i-UnnBY?g4$({6CK0hiVTk02z2Kso1}H)@ya*0K==x)>{kw}TJivCTc%;4l z;bNn^iM-v#S&Dk(=fQ94(!AsMk#@CV5?);}YgMv!aaSX|jY^z`d4PE-NMNg=w(M zlebTI6y3GouHZJg_7~?XPJ;%PDi$d%AEr$V7nAliF%vg&yT@<281O(t86bz(3hQ|cGU_nY392Da+ZMcfLBxPPgSStMA3lq8(BN?Ql++<)& z(Lx9Dqq*Im@h~B5@p?oZ96mKA@aO4;4{7A*8)EejNUjS8`Vcmc8QtcJr~NmOvW_>9&v zMMVUw@?i{1VBr>}P^-;3E`ZXs&gQ@G_%p?iFn{&`d!K)7YU^>i+# zFden>d1CXYtuc`4k7$84N`PyuF99Ghj9$_pO=gNr;Tf1N>Q3LNyPN@NU}8bI-i}0h zbfPD;-a#uyv>_TT)Cy1v+jF{38^4Vn}TF!&@^f=QDNnRSPa$zJKD>zwhJ08JBc#l(*uF1OVkpA_FkCfk}a zeQ-vAwFio4k9YwK2WAAj-W>{k>~TQ*$1v&cd2nCy;F`Q&aA-BcH8PhcTic(TXLpNmJd#e#GTl(xeN zwcJw&S1w@AEZL2hA{%d3SQ2qwqftR8*o3V9NOA_`#D$w19k%>Ko5;up{BaWxlrgl7 znRwPH-RI-p?kHUDg|%;nfk8_RHxhakB4))3@nM?fWP01Z(GpEtRV&D8fZ%3Oa6VOB z#>&r3JhW+8eHrm+?0S7rEz~9m1v$6YZv)xza8j#tHAH!fC5*IA36^E(5#^m9z*0nt z?V#FtJra&`V$CKnBHU@*7dJd_v}hnF0p&cHXZ+$O?1Iu?hr~^i$IiXM?_>9vU3Mf< zAQLYHZ&ZdDu+UOD<9)j=M$Vpuw9lFzf8oj((u{*nBigH@XEOuGe>1t8@H((>-1B(oa;B;9p zTH0gUC8SaCH%3(~wV&39WlpZNBt7mY09+KqN(pqM8;ESW{jVU+feF;}KI3 z(ARY}rW_JA;Z$#;2qa`^kwsj1&0ZE%KM(OYkK$z6AOF8j_GL7$R@J4y4~xIf_>J`{ zDaJ#960z~s1;h7KxHpfE~C4CuJXU5PvC)8NS1V zE4hJ8u(XUNu}MO&N`?YZ)^4qUI1tPy$k(zRVarsS@93+={6K?}vr4!?Qd~sFT*lNg z1kBa!#aYgmsDXfh9vT9F5(M;A6A*}I(791Qf<-%)d-zkNYcnW88}&!rT2LqqY7Hl% zs@%ZOPuLnArQQlGz{&yqOIRQJjZ@}abK)~JnM8w)TZuC8CFT}DrZo^?oegMQH(6Jv zar#7=427)BTz#3jq)aA}{4ya}HHIPXhOV#i9e&N@PG>d>=LeWn} zsS9gMlvgOckxaxS)JCNkTZ`N4(MR3tm16=~K&$y6a09&|WW8merP=H4^c~=nD$^(t z<;x|jeg^O>v|(O_k-o)sszLFG{?9#L{9*oy8WzSuOjomzgAY;}1C`2U;&sr|_;I?@ zn3$dV>|ol-ddR{~u}^~-T7|?nt18~tXD2bQOi&N%Y@NqZ8S&L*k{lArVhlld#?!fo zB4^hxgVovZV;KS=pMDM%x6b3NHkG-kGw9%sb*gP#I7n?NmqtmR3V=a)BQhaSrO#<{ z(nkHR3GRWE7Mp9EdeIIS9N-bmi~m$mGcijIPKwG35)!y_D&*w|%-U%WkyqU1)Q%gO zItEE)9O9sjJhRkNZKSS0HGv-kmr^%gYWO-dI9V0s5YjXfQ#y$?GE;P^v5B^3cjI`& zn@rU6jUK>94p^kz4A$aXm42ji=N`J$#AZ zTmpdTyL~${MF$oiR`L>vH{E#K1KvobnGoctIo^NO)rEc*;c&eI&oOGiX{97rUb*rI z<&rML{0i~0qftDf-1$@xJoaR|Xjo>#jBQiG3^ipF`E?^i2 z>&dTCjxrU_6hSs|cmWT62OQr~1N-1q_*kn=$w9-IVZ%b!EMU|iWScs);+kj^#TVoE zNL<;rJL&PjzaKTowC0n35YeO?o$^4`F~ZmHZ~-&fF&iO@Qrlm!$B`>QV_8$TwA`s% zulQgPWNPYG_62jS(y|2rFg`??8R5l~>amTE6-00z-cZxMF=1Zf0MovA05Z!E;(({w zg?eGqim?PH$*7J{!mBc~W;N^6kE@|(S0%a46jjv>VtF(#G3BII!NzPqjoO72L=iDX6IXNLBv_vL3i_tpo z25OpIhz+H%h}fJS#;P<}wwx&)pamRhCpCcTjZrGdWx^aX4Se+ay^Oa_KvI=N4l@!e zX5$kKyc=~x6ft9jvQ{;inJ@JkZZsnw)M6R=0h5u3uO_3wPpO8SLk+{tJ-{V*z3%Ab zL?uD$K$HkUM;d87?%6m%wN)6V00-!#7f!AB*tc;2{c$>GBS)^TktE?SePY7`A5gN= z+q4ZdGmcwOtABFIdfd-gZj%GsU}^-&Hgy=nMj0=%flU`3IXnY%f@g_$f@d@=XtXv? zX-gq)iy98q76X|#1~QDQqbsQ*YNT!(%48XjFcPL=z@=QpfA?!PfpZAaYe@&m_N#f} zoaY)>b!n2z8n=-~!O5~rrC64kxU7|8S!?>56_(QCJk|P4(*gBgv%i_ke~(+hX&qC2 z1|5+wsX*4EyZUN1*n`Q-K#LeoWwpiTBWuetKlXFFo*#v&Z_E(>xv=;jlTqQ=h>!oj zf)N&~w!<_U8p1T`&`_qGP@qMW&Z3dE0|Uw0@rsYlQeZaMs*plvZ`ev8Pnje2+~pM_H4dQqyT61huMB6o>O zYZm%MSk1>GMN< z37#~!Uy+GosKO({MsPIGMvnopTJeGXzsc_g7`yIZWq4*MOOq5TL@y0O)iK(fc0ynL zVAeF7!E~+zd_kg$!;4RTI!x!uGGu@rg@`#%maqX-SR8zF$mTqYh$su_8hdGXfWt#$ z_=6J=39*}RI6OSoP}mMzx)GlQ!XIB7N@O$m5)hw?F=}hV!CfL8+$F-nT_PMZe-ki( zJ^{l)UsnhOlK~90P=ncIgElO#MKm->v5pg)IrbxR$Z@02m5veD0|7OjB4b=9$}8(@ zG;<4~U>BoUViy)AWZD3yw3`h$YN=>EYC9gRnq)g3T8hW2OhXkZXIrOv6@$w8B2;m@ zEf4nz=t94}Nw(#gc%y|pESORljFrqu?Zt0Qw8h4ghiZ-NPaEwD?%>RI9_Lg_?V=>r zn9^T5=s7aB0Q7Q}Rb*1KrrY3$F(Sx`ZKBbT53A53L^a|A8HAeh&`v`PU&yF7-T8m+ zN$!(283FCp+kZOcl^UfHbA6+VqCMqmc+c62d18xX+Nx%&PXM5}WC4x;mhkDq9!zEj zY%@IT5RE?7#Zs!i1Aw46f8^JKSX^KSY+>ueM8-!CK&zP|X+p;OX+4R@e2~Hin%yI| zSk_(qO}-IBX?PgG7a&;7EWf!Vz!*xr;VH?`X*N00GLE76V7>^P$cQnNi9*6q6QW=Y zWv>#3ns_BIVSvLChDtZDDto|NVvS(UZ3pXQ;szRmQv(eQ z!Y#viC9iz1ea(lN0urI(N4)`s_>9Jn!00<#J?|6`;>1Be0+r+KPIWn2(>6H=#)CM> z+i>8E-)?;gnlKOVJM$p_VXFKWPd?FrapA%RW?hJ&e!Zfj1A(D5TC&MveMll_+%GN!>1;tO^kmb)}W8Bv4-qkVjwYs z-GPaplGp-L00Xy3raWhPseF%q28WZzS+@8Gt$A-hTUXrmH zikF=z3iM4CBr~9RgjB?$IL!d$WA9ufBvb~uu?g{1Ygpml&>zp!{2)Uwrh%vmLPZUG ztT7d=q)`_*Y2P4FECNJRs#c-PiiJ|93#`$mJT;d9Zt8Pui3oxWn5H@y#{(6Jc6ORm z9%^2qJ(A{yu6bVZ4xh+6aFG?_QnWd@Nro?<-%hx*e35j9!EAPRd?h|=uSuLFrsZ1 z*CN6|U$Ev3;TAiJQf`_sZJ0K4jVAa3`jus(MkM};HSn9RxBFY2mszF zLugF+p+2`-3qJs+6uldv0*tv4h3866?zx;{8aFH*Oh(N%%P7huZD*E}=fIbu9qy7V z#Hfoxi9s^X)<8_nW|!7_n-62|8EHsc-#;M@lUlDDvD~x*nN7%9#V>Wucw|p15`3u2 z&q<^qRI#*{7D=D^6Q9>1qV5};t+G8!6lDUHkt|ez>-TAy3P@V4zBS?Iq<~Ze)qRMm zF&vfMdf}As0gvy+7ut=vDA#3rP_7)6HvOq#C3nO|7^&#Z)os~q7W1BZh!ar8oeTVZ z#pDvK3$t(wIsCLv#!WZy$>bwQDKPak!fpbXG6~`>t8(j-JXT&9bj+8?U=z+5lYwBq z%&Y-Q&6-h%4VcVEGvf%mSF;I|Ubs&}3GhkKo<`Y@!lSMN0!8TQpeb#av)&r6IY&3E zp{dC9j+qX;Im(MZ&{Uz}Bjch(_!iJL8>2gghb+~dqD16}Pv&Kgr&6Jb{S|bXLiA*R2la+IBaN06 zY81g6f^vvrjd)L~qE}#s@B&RC3 zy2y&JmfFmJNT{!@-%JgyU^qpMz-b~QYe3V5?*1*LrTJ@*U0GhJ6^g|l2=RVI35d?|y;3zGX z5dAZ)-poq&6rcNLnALc<*!nnWXw1>QWNG(ykJMG&p^q_ zp(KA+C1>2f+?%QXJe~nGddZHtY*@0!?o_%%sFrP{Wr7d`p1}hv1JRryqx3DbGz3yh zoWye0`ph++&qo{)pNUUMCDM+FhuRZqEb~k}KS^6ifWVG!7!RgY<&4Zqm4Yi* zuDN{aQ;9o05dBb(TI>ReJ+ISKK%6>;rCz=ho}*~AjcClwh!HBFMs-aI5E_7E3L2o^ z1fXoLIRPjvZ*zRGq*q=O(n$gLQdi$x_<;H{OTD?OPXZ8@jHiq(^&LWA`iOJ%9l8XH zv(K3lbf43tv{Y+_m1?b^MRn{Zxz7=v;jqBn1QwjIC0Kx(2^J{HzRwvJicdVFG^Y;R zYyZfpj+gbwss3mGKh;gi{N7X_todDP9Y88;(v7JM!?#!wU!34vlQr>vP1c^0OC@W? z;(K537rc0U{2s6Pp~7f)f3@|Jk?QbBYj5}EeZ3=tmv^_W=;b-25??~2}?qsvEnhW8GQ4lZx+TD7Wo?aI|_+uFK1d#Y`%yE1KUV<^D27v;6ODR8Xg?n8jXy0_w+v}@NXIG>94v5+zb2z!1)7yf$dW?{$SdAncoc2oa}{LnMrB?HwfhN?ZI)n3p0DeoG2_H4q{ zGq`IAUhivU(dzKlZa7fv*ge$OI=E#A zNZ8CR&|D2H`+(uk_?^Vh=hwt9!w>MhFuCuJUeGr(w6l9})VFJBXLT2?>K^SI9EgUi zqhrGZV$Ff5Iy^i$9F5h`ymPOY<$L|9+#J8w;jxj?p4Q&g-CZlUZ0TLuS#9s`?b@=Y zqpf{wXZM=+uI{xxtJn0b?OfZox}$4V>(0I{!`;JsTf2Ae9PF_sjEoNV4Qvx4hr*I~ z4rM;p;CcN2w9D=p9Cp|l7~9plYp_>k-prcBA}p{@|p2z&agYv0J&meJwvp3%vT zBv1OC7U1Z+G+jv2&l>F2fg0==XC3VCpnk!Srr(mJUp%<88jpHUz5_r?}`J_AerRfW}Us9L8 zkoyzr(l6qERbBeU+~a_#eSZ=6_1|AiI^s7{9ep;NJUliq+PAApZ||Dxy)$3(`l(kM z8Kb$Desz*Qe{f*q7`k-J&MKm9o%wm)1Kr!I!_O+1sojto5SzD*_3cbV*E_vX@~!~B z5EVU#Yr<3AKMucguH&iC-*8&b?Z1Z4jHlB4S@JV5@uq1|t=z|uWtE$L_iv>2os*=^ z(tDfx2Kq+(x_53K859H;HmIS z)5mdN=6BZEt}UqT^SXPs(^qa9Ks)!*llAt3^^s_F?@*PtG?u*CyxQK;Uft5(-nF`Yb?26~TUx8t-tH~k zt{)@=cEzySIzzztQtFeXqqe5$mDDR4Ow<3s{oJ~=aMHqWI=F_b+xqBl_nNZ69Ns>* zWd(R%-d^qL>0G&XZSR(~)t;`Et6H~rk8IyEJb3xQ^0pQ2t5&SE4~DxhPrB0rOXV)3 zo(%BF%1G0mifH%hz{MYflu#x6}Kl!E2(saX=?~7B?o2I1Kk(LCd-#^0r;q1-dAJbdK^FbGI&LlNNSXbYHyW6R^N~;(7v9*fz4yXJA1o_hBo(B zx0+rW92iNy*ycoh#FaBz9T~-X9PQpVGO~BqmcgCdM@NT7*0r`?e);7q(h;6myl-IZ zph}IS-s;Z2p1#4cktiwZ4{kLT+x?4M7beQ~#@pYrZ1e0No3fn(X!QKl^pDP`dDFjr z!926qk)ZynpIf|Pk=bNkA!j^&*l?W?<1 z>=@d1#^tBAx3#tP?Chos?cI!RMd{U%-gszeO3S99TeJi7KN4a04vxu;wjo9L@Zi`$ zZ&~dI-6;jTdwO_0x>;&iV;6=3(&?V}(H1v$LwVS^!gz@LW`3y^tsY4Hhgf@0ckEK) zTm7N5p7F6uTWRvxMfKF_yWeYcA-GdKXmnAZ*63np-TPU|dp#GfjygoTn43;>JZ%rj zA;u&0UNa|;Nb2x0?Pw(ZCLN8W>F07Z@@NA0JHVZET$)ZtBPmR&6_BPcg|Vcg>(lBp zo^fo~S^TCG4&jryX_oUzyny=4{QPv7@-IhSDjTx>x?kRX`-(q);XB+gC3dp;Y(nb% z7pXH1U9(5hzu_q7(>WO!Pvw`UI}^Cm^y#GA>fWEh{n>SC`3+K4!LE=0)#jw9dGL~No%W;cw^~nAZ;Wd+B8MJm*SQKTxBauZcX)8f`|MoD`#5-P zbc~azI&2Qqt=)b24cA4zeS7*w`nL4#>>J%1oqAf--u0X`vqp#s|H94loOdA#Tz{7E zlsun%H`_eMa{^gy#$?@mhr7$c-9~)yYad-0>@ zfYLnaoJ^X2Z<6O(ZE@m~N?cQ>n@(QfWJn|Wh+n-eDsRNm$?w#$f&Kx;-KV3(uEVC( z-{12srbX=4TQq5U0C zck<*A6C9sR>UQ%Ro~L%Ec+*(mcbU!5x5BZ0>f4`j-a5o+;bq569xFU+b=J)~+?Uju z+WBcZweuGqaoc})4`15ebPRFv;>jMrG@W|<()2$7ljI;xSGd=>I4v(7gVd)FHwO9r z{Zwv(ZPAj+9>Fx7dIZz7^9Xugnoj+EX*%`urRmhqm!?xcUz$$+d}%uM^QGz3&zGiC zKVOz~4^uOoldnlZ=#=OZB6C&ayd{OnDxW{=L;ZQ6j^w zj32iT_Nv#tzEbioq}=b*afv4nwmEk(+kvS$Qr)?A#m?%$(q(mB(2hYIvtV&B!YjBF zH=}0zZN{6N(dp6H2oWml)}0r>?CHWisZRvnv!7S8G5VdrDjk%jZ{%M6cpY#D*#}P- zhFaIyN0>w_lb}OfM_Q|d0#t{YH3ls2KHz!<^=p<;zO(6g`G|F6;x1p_Jv`jKS2HFZ zE7sVIiF0vw9qV-C8!p+{I^WK zJk(H!>S;}_+W>P1;3<6M*k=OFEtp9C%eRbe-C7-Xz;@JO#k=^plDC<9WRf@Yt4~XO z)Aake7d&bDgWPK>Cr#hNef{@JM|JN%!M)sgX?~?;)}-mXllQ5Kbb(DnObz&mE@L!U zO#(iCZwhXKA3@2Q6>Wx*Et*S}1HXGfRP(&S<4fMFxc-ozOx0(+!ZFq8y6%Um>y^~; zCxNT0%zY;L$-FoMHIt(5#YYe;W9~?bwRXux_bj@j>x@0m`}_%$gG|zNYVJ*kS-ofnXWBItkR~F-4SM^suoe@m6o}-$Za*_nW>Y3`%0%NI_ous z=Uq)*mr}iW3DoNw7}?O>`+Teen4~&fPkbrPGv(O1cyRFC!GUehRa19$k8W?3RwIsNw5nhl zrg5Q(B21%`O5WAL^%{O6UYh<)qHxmmSCaJq8qC1@O<+|AcnyFG)}_lX9^SigcyQOI zfl&hf2E~A~B~t~dj_CKcRZKs$%3=Y6-$|ER6b~R6tjoAweR9b=pX)2oFtTmxI(|7M zd#llwz0s?y!-EG4N`H0lX4!zUATR0cShsGJ8FM|DUSNI)bux`;Z(TlFunz`{U~Qbm z(?ND{{t>1gobjuMIK_H!t|6?#!GZ3n8GE`11_npby*&yT>W(hn&h&e4bnYNji7sMh zo;WcV^BMJyDQ-1l>brX@lw+cs$eJ-TtHJw;{PZUtQiROY<&lxmUZ+Y7kX9_J?wwK` zx2-677f|l4R3N>f`cj_MTv~nFI)tYgr(3h9>tbn_wmLso5=(pi4`gB0E^PCm&uiy0t60-7q+~^AhK$ zCW@TE9l~q65su`U6@Csrv55fvN!d~($5}WNnN-m4G;}U}IERK7)x_hi|xJn%I^^)Qz)v1=z39 z+~45k=50Tl@VsbLgS@Dxd#JldQ%q^x`fpa2%tP^Pvvah{@$$>zv8DW0@JlsNEB9^u zG^?8SXGbusA_@VuYu)Uw>aM}zy^*;T+`k|jDPyJ?u|ybv;3x;z_V!k;9!5WmEIoJZ%?53Hr}ffIF&NY zqm-;*Nb9KOqn<0svj{j|&rdohO`ncsBXd7ZpO&Oo@+|ezD|$gVOe1$x*J^&60}@_4 z`Dr$+K2I0vwaGIs*4xO-bqc?f7N>H58o$%|rTCff)DY9TnV2(RKZudYf8pwqSrHvv z)vg?HXSsGO|KO3^^HE|G7^J{PYp&KSciaR>n>S~_fVI-L%q}`9R3dcv&{VP z5f(!Pw`@@m+Q>R1uUuSxBQOxJL~fUnC!ROEQ|CaSkGV?cZs4asSjD0)9s?fzt&3Qh zlH3oG7w{}^O1~G7K9k=@ev$tEu<_)^let8%iC(j`ap}p8ulR!$|FzDGCb!bF(roW8 z%G8WQmEUZBZC4PP*WR|WZB<)G+v>K?wl!^CZEM@x+S}V#wyz?Rcy)VcI}2>u*RE_^ z*}ih+%2g{nR<2&zxpK|Qu9a(7wXJGjwQ|*}RUNBVuj*X2W>wd!wH<98?HwySR&{iA ztnTRSSkuwfv37MEvB)b|uUg%)diCng)oWIFtzO&N*4f^S~waZz!8(}L#GjHZ@MDV#OysD?TI+{`?Gez+jN&|efRnG=O4 zh0BX8{I;+?Sm}Q__(*Vj=A(uG4t|~epWwIQfrgJ?vG>hy`C!{iU-stfu3z;187=3W z`|IDVXg%YVf3W$HtKafRH@xj5pZwfke)%hZ^SA%}=#LI~nVGYewRfypcgks-Uib%B z{}C_m`rKcB%Zc{!Qm!@X||PwfT*I^wv*)`Y*ol#jkwz+cW3PeZ?#P>zBVhFurT|KmTCH zl7YcR$83JhYd>+vm4A8noVkmaY&`4y3tsl}SH9}CSN{2zzxl22J^p`xF+B3t(Xn?N zzoPZScl^Z{zIy++fAFsL@4Tt)txNvln_oY0{sk|8MZVBdI-&JvKOY!ebJ`gj&bWb&b( z&*f(}Uf41#e@Q;fENW~B3t>JC;D)A5HZ11+8AoT&&o9isG#}*VHeHx`ez-jJGc$87 zP3tnp9Je{zmDzFJ_}8*m-5D;(UG+cVrTIAx^BQJ1&2HL}Ys@XkU79~ByRq@)OjE`W z+lwb>7UYWI_{VtF+J0U*eoNuhuq8Y--&Hs%d)0xN^9rpqmxtw+a?AL2nXBG8zj*Yu zH)dP2r{sef^BTrKUm0y0|HlPQ+3^F}@gFq($9uyy4f|g?d;Bwn@xRM9&O0S+%yktu z7MgOS#l_*vGnY1uzi!^5#yJh=X2#!?`{*rAb2IH9$n5{l@%g4~cKp`T{$J$%=)@dv z-;x>se7G=dY4&oyPve4YJ|7ec4MAhJ7|h6&{F%Y5EHg*`(ZSqce)FR2F@+`mvHp%s ze{e_m$>8qb{@}sjn@!(p_{ZSe!FT+Jvp)=el6frnS@d}3$>6`kU;9lboO1g47rga- z?|c6rzWMF%_~4&??)9I{&`gyMYn$VzQ4aYKYu~x zxYN)0$xnZN;LBghM9(|!_@%45)}8&rb1%H;l9!10F6*go?H{?~HCMjrmfP>R^PUGj zamT>m=imOS${%LK%<^z+=(nyIzv`H3$&9mVsX zzkf}`oW{buQ_fr)_7oc0=48v^!mPi(D|1e^HPe`H$ghu1$TT%{hU>Bm@|mXmg`3u_ zYF?FJQE1$M{EN>ysc_<)1;;O%J-6X}DtJNj{Cs2X?7|5RW5o@ppO`x(+n9S%&d-*@ z?D(6vEIzx?IDYG^DrXiObInJs%QbeMoS8fR*;9KjYC5~2apRc_&n{flyeZ!}{$Cp# zj|tD(v?iQUXw0q6H}3D8pFbsB^b)^iW%KLay>+ZOe(#&k?P5TzM^_gW^I1vda=YipDbMck0&;K@F)9MwfM*6W@HNcuX|&r zKieEOE&~o(E7cR-=#=mt^_Vltp zv^-pp3HGmFGIL$l-~YggSN(YWm&?x0G-iU=&3wVRr;UH<)SREWB)hO9*gxasOmEXm z8pl7;bxiZgnFb^xH~y~IJ;ZS)&Ee&l%{k<&r76=z0Wowk_&D`#%?d;N0~c-4{N-;{z|cV6gn+_ul=17kl@2UsQeY0~dMUDPQb8{KHE= z@ksYefBITgeQJE-D|*q{@KO0qf34jO%()w=6U|&g|8^C zYiRK2W&8#NJ9|=iYT?9rezb-UG6ghJzA-q)U#HJA1+p{-3;ZBhiw4MWtZwKp4nlU{ zB%LLLKRcL%ejqnx7yNwK7%XPH8J|t?8vLacPpM%R^^p&XR;oav(m?4&!CK%;YdOY0 z+t2tE?ic(Q`9Z#^u*DA=iup~!Ldx^~H8Xr_%ohD)8~m*qKL=33{2&vSIPEkDa(;_X z$XIwxu$ceWvzuYT4~h*wdf6WfD*m1@6Eyg_@Vg)ZX!9yDDC8Ogziml-rj2ygU)s>b z1}0<(yLicm;krT)+!XrFeqI%Z!B^IM{$H29@Gbsjk(cWWSSr>S1s4YN;J`jV$olUL z7R+k)k1xzGt_a&`TM(S!KOf8oYza~DTm4m(%I21|`^2E&|4eA}F^Eb8#Zk&5{vT(( zkXB}vh8h1ulh8v6RnLqS9Tb9wz#;~0-^Zse!u^dNmI-9I?G$0!O=1`~vDgJx? zuyC|t*7xW5GxA~fuM29-TwxVjDW4zwJFw-rE(|Uy=*bS@gSXWXqGr7YKllZdha>#! zsW0Pm)2~lmH`9#U3u>^4tVoEc1FqU Kr86)f8~z{XwQgeo diff --git a/examples/assets/logo.svg b/examples/assets/logo.svg deleted file mode 100644 index 1e7bce31..00000000 --- a/examples/assets/logo.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/assets/sandbox_icon.png b/examples/assets/sandbox_icon.png deleted file mode 100644 index a773ebcd4f5fcf953065adbce94a5ab5e0bcd523..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324720 zcmV(>K-j;DP)2x)J?s* z&`06lcS4G^%KZp`fxE8UMM55Y)Q^Av%X+x$_HU)@1@MRCzcBtqvSH=9cS@c6gvRH* z#kzR4BRE!*`SI*;*RQPN{_qj<{fEX6=UC0=qWy1h@rF0D8X5zR_x=rO_tYOiQ8n_b zLVkVEPh2;9LvS~O@u6=dCGooXD|=_*j!k1a54D-x_tS8Me7|!cBKJ3JmQj40=0xdv zcKa#q9W=7>yFzIZ@HwX2a;f`Q_`PV&{}l+~LE-{!rVvThC#5wHttqlgr`zx4*p%Yh zu%)o-E=0HMIca_F-J72!vw#1&{v|x`96Y+-!TrM0MZqgXzYT|GZ1M4j=dHY5F0;yB zF>MfLe^$BX$vyO)c86ztrf`nl<5R(#0QRJ_d;*D z{hR&{C;z=42S;ohi_zI|{EU`3zJsxHoZOp_$|oq_1ZS0T!<1rL{(tz}!>{kJ!s&(L zLp)?mIPRbDa)H?ozwQ@<`I}0cB7}jE3wVqZMF}DWE; zzw{*bm%m+0kDfqE_}b}cyZzUvAT?iXUpD%3AdnB2+FWV^Ja{r-JoKg@B(#RwKd47J z@bi@U5k}1;?g4!G(c#4e?$O(W?L_{g@LFkI za@6E4ib<>+j!f6NH2$Y(edCs{-<=1D-xAQzy$f%B4v8HQ`-jVl$t`v4v{!%X$h*N@ zH@Z^Y_|hh6Q21{ktZjn2{ss)?*y9_yLj338ZcnwJD_KSu(s+djU6tleJR9sz1WW1Y z5Ys$8nzw|V3lFSz%%{gUuG)S(7DIluT`&y~DVNfC_Rv7x$`9P6-YZyaWyH|=e_rYk z!u2ONJZmyc>=7uo6h6V(%eNla&8rA!qC%Y2U+E}A zU%Bw8U)~|`pnR!}Q+x*7%EL!(~v%>F}; zZP-1$N9+2tY#|oySa9EZ_Luf!waF1;xkvp#{k~duzYbV=<~v_@rh2>WfHeH{^cewO zG*a&;`3vI@KIxgxQu8QWFMxq}bq(I@Km0i=mSNMrlE{T67A1Kx3t&3CH_OL{iGA+V-L zKGcMC{ZCMgS5l@3YA=Yl^8+_4fX$Ei*Ir&3!Kt5vGo6{WC2gk^)X^0v{W`9%Xazn- zQjXg*`d1ypl|Q~5Tzt2AlICm`(ttq61VMR^h>&FFC>q3>kn`TH?G~D(SMAc(Uguu%p<2C)k9^iD z_LRwIL_Q=*0Nyb7eQP&LZX(YpInaJopQ3o!v=Bz%kv&{Kb-$(INN% zuSAeM(uA%ZXtE~CMCpL?ZBKM=8cZ}G$5;76fKF7WOj4;UJZ1`WaGUl5YGe3l?-OVF z9{&eT?R)c0n>)gR)Xu6^ufAKdDRmWrjga0>SGLAgg3q)QLx{>kl-Lw1cJr~?54+Qb z5by*L3ZD)yr_R!sPde2TeDGRjlp0~Fw+VB`w*;d$KgkCFhL7rI8*&xn+NfYVWn}?J zmLPt~HAme#CWwNj{2NB-81%hh^16j5YA@tlkMxl*_w?SlE-Ns4E24c8ym>Z=o6MJ! zrVd=g;wFc3&}2dBeRaUDscY?3(sSRehgZQTSxM*F1bR-Thb1j{rrA~}XvE2M=|FjS zCetD|g7*7OAzJbx;*rI!Io-xl@@L5 ze^)zR-!CIPK5i0Z;OzjVj^ZAoH)8zzU;-$wMe^5CMPStx1dGO58M{ z(ou{yI&J)&A8j$nPMwDK$p=+>OH5+;f$ji=Im(8+a9{+n4I={km4K3Is~4=!0C3)M zG-8*DWzhXBoZjDcYsD?kge8VgFS`TC1X>2fXc#j6SFF2Ydvd$Fuj9C1? z!jo1_T67Av+t#ai)rnaM+-vRurt;%2jCSV{kRsohsn(8zM{j=g@m|X`;w7iK9|9+a z*2`^>DA=?-geE43suP00>IFNL=9ffgbY7K4lJfv!*uN%%0fh2AWf*vJ)wNL@)#!D7$C3(I zyV|Jf`*$fve8`Eaz@#X`3x3Hk3nrg2P%2AD2NDuLUU*OsvJxVdYqu|Ya`+;FIwrxo zZ%;lI|0mGKY#x}=$Z7BvB~!lI&QHp`zA^A>YtN#3p<&Br)+oV}E-2i5>zsn4y{nC0 z;WlweyQv(>!6`StGd)oxrg`wZF(W(uObW*kG0Gx=i^;`|##e$NNSx}~_@u(X$k9fy zIr0;}0l|C%aSW`Hwc-DD#Vg5}PC@o}bJ+r)enHD{l&pTw&}xOczx*R|;gzsydW|dYLrLz~v^jxlD^!-cT)Jn;r^&kTS)E126-h@kWv4{tc95S z=VAaVK6L=2G47GNc8me^bXv?*fH_XNa{t~1tG$~zY$LOF@hw4t)%f%K!k>zxcq1iADZm?pG4LEFHrHO5${V!4LiUsI%rtjt$3@RX`m_nzQmqdPvE#Si2ihKPaE`_IvhuDi&Sxv zw%^4Ov{wg;b&I(C3ln1TVVtXWs`8~fH_KxZue%DF-H3fpG7+6L9lR$2*&V5eMoq5& zqL_D01>GOJ{6g&N6_}gWsduR_%W=G_CkmqLCSHlB^Ll#QQ2AzS_$%NyE%Y4`9RMg_ z3vBUbl-^QZg|x5bcyHG1{l|_+!MA0I8Id_~u-$e0>c6>@Ug{wFkZ`{A6m02exWF)q zH|1$}<2bT;xq~o4Xd==bg#4h1v||E(-sr&FJ2o4i@I+Ge1JXvzVqno$Ssyv{|B0bh zWlO#reZWh$O^0NVvHZB+nWH$V&St#o;GbzxcuD);?u(#SW_y7!Vp7iD7*ct6z^LT@THxd@Ajw~ z-pNZCtals7h2Rr+$|;jmA28keN<5n10*eNi#802a7tK>5KYAy7CXByFuVRe7ANU%& znOrD-S!9KDFwV7|43k>wnjCR9BS#D8o^p+FeO6t4ll%J4-#lt3Fu`r`pJ``yEIVk# zq30RN#CLt2deP4gk{G&FcZSxv7lYI!iqeK95!6xDla`H4bN9MBwTz*yd8GEAycaKi zrUc|Usz&&cANErLk*(_p)Rtoi{ai1|`#X>go|3SU7q=#dA)odA&QF`-<_jGa)~P;T zop6QIIn(bcv@B&1S{q;TtwvMMx~#E3i?Q&jw1>Ah+BXg#^Yy*u5u!`*(P?et6`uqr zh`(39XtG0nBENDaMw=ha!_<+fYLoItd?sU1e#kRRYUIzRAOYX?S)YH}AxrX>u7CCy zOFn8NDLO`~BD&0hk;dQV3)_xKgl8mKKPt`qj zV|w_Tm)hR_g+iQ!pw}SD!#^?b6Mx|?lqY&r1w^3Zl<#_=Jx)m3*Oq$fA<$EH&*8L! zzrtaektfRGz!Jv$-)OmYuI)?$$L~3(KK@YF9|ot1&Fg$qY#dKvNi#>ziC5ys#nuBS znjbwvAjWM;0pSVEL|UhVNTh&KAF%1bqR;eJ+E^`2y?{-j_2?UXWGoggAU!E<2jTuZ z&41t1>I#T0lYf=@zCWhuMRByKLZ{*ilw?PZC&`xdi5q zC$~*e#VhWF@ayXch~U2*Nk-a8F<56N{K}PM^)6WxYZQaNqUUGB%nFIwe$Ba;)OD-FCCO==fL+W$IM|4&{ z=eQ0ZRiq5bzcbh(yMr;$u9#&n7v}r;^mP0&I*IzEPM`IT^BscI|M&%}gXV?c!KRT1 z^|*slmoJV9Naz-(1|OIN@#9M1^DtV&GuBNJAfKmt+#Dn9GqrNchqgVC6m;XR?NUin za0|idwX;m>^D7;s2MrIBjaLXBaGoB+tNSnhcn`~I#VaU|1-KC^qxGa}$fG?<6hdr| zBG8cuiqsKhg9WniQ_NL22Hkw&5e-Yq2P`OGsyH9ljWm_ZD&9l+8#lpA_5E@FbtoB= z!Yf86DZ{KNvJd0Ug;%It@JNgXQ&rpPux|i)2nl4ZdwaC718cvPn1f^W%vOnEkb*fK4 zl}>9RXT2h26>y$54DnZL$(|f#;W5I|^<3ryw;wa!SN)||okZg8*AH)_ecu(=G6a_c z@i}M1jSQ_!;C)<&J{O#}^B_L)x_=UsUJh}Ktdv$Pde=S06^cuI@Kb$U<2(ni8<Bh5}s4>hcOJL@7u6<8fN8NJ)mEd9AJ21z`i?Z9C)&tr()Yi-at9SM>)V6Xd8 z>FKShr`K-VlpSvx$PX$$!ka+OE+uztcsH!Dg@1;Zl>Zs%y+%<2AF{wA9Ut`WXSoy; z-bj!1h%ywp=lc?@ji+gXwE4_i@(PStZA-Ow=KReOi06QN(Np3OL@q~WtqxM3Nv1ND z&rZFR^>Ti^$d%RJb%x+o9<3+U24NMT7w<>@2Z?{~v{4CNFW63!cCI5Z#4RLA30QDI ze&|hQC9j;ge)E+=Y6lYxMK_iL(;4xB>3RFtWTPSay3qYaB4iv%puj=n{c} zJ#^uN&%E6_6RvdE=852Cyi+`c7t?WG?bVmjQ-A&i7s?asV5T&N@y!vEoD~u;U*Nrc9YX4(616{wgh0u7f>)UWo8I6Tn%O68s1?_)!7_d zEWXbs2f#*GW8oi;zy3Y=-;hq#T)j4^;E$b;vr`)OCWi8(CrP;m$EAuU-%D<6QP?8s zfIIvT8`oXMT1|a^bz6`)7V=g{x3I6IoNrPevJ#DAc*SO@{ zR`)R`?9>558?e@fjSg)-oBa{b@OE%79F{!dFMnIkjCpe`%;3~Z%CxLLkFayx7(0wl z>eu0e5tMl|xG@*vIr?+f_vo6MNr@hK;l`i|kt&crE1r#mk5wiF<#@08p@*DQEvn6& z1OWp#TcVX{^yBDf21PQ88Nmy|+~Kpykb9f2Ha!Q|arl-h?JEw;%K5=Nw#TW@JT5{g;Nh{8Ud%82aW;YyR2f}!= zaiGvm`lKZGWJ)y~XIkJy$b3G^4K=!6BPh6`7@SZ%PKeitRsa2P}; zNktQ_ovmX6rC{C_Zh@^^&Px~@{l$jS_Ss#xQu#Z>R+qw#;41}`82u(mmeP_4qiJ+?Xzg{qifNv>a!@iuiq0C_nTFfXzOICD1|5i;5_>|}90QH#n z({U2q*sI}sG)=I3I(y?2?lc1_|!M<;>0SKIdl@dB|UX_crv)Sy=G6_5YSzE_S5rz?=geQMc#;R=EAGcx^F-0 ztb=1PK*cLDPT<8C3$XF#gRY6xbLYBz_(%`eVLI>2eQ#!`+sDHnc{9bg?s;&~x<;h& zfcVen=y9w%&S%mUJ*qO-Ug$n;)d(b$%}#$rtCpS2_k1N$nwU&M_X#@XhQ*dl*Xxs* zF!?#pbf8putJ8mdVn6wpZvVPj!A5rlF6+j^@+`~n_BzQ4m~Y%24f3W(7c01j&^F25 zFh)B}ErW2nA$D)F&cDkZa)0CAx|W#ZNbo@y+BI0+9<{nX!J-c#y*o*L=_=vova6!v zbBCWD(v^P55a}_n&ULXgkZCTp$yCQ$dZ(R_pmTj^gY+ab0fl%06kX29ZHyS z5wG1F&T2>38fhS|nT<|h*|Sbj;?V|RjNe6|u0}|CJ2brX-X0oXCPtZ}Pe2|a#cERn z&Svujc%dznuHg-|&A(i+B7y~}k9)?4RaYy#bVLx3eT#CI;xi;ab!KF0Mqk+;H!5_= z7+y!b8SylkqBC{(HA1w=kle#adp@tl4f&C`=z6H@Al#HhD7&2UgU&${Zhvb6$KM=Z zh%Wqy{&T&IS8P6^qn|s7ru6Leux9q;nRvG!D2C~-Kb_+JhfY4;!9txBzy67^7x4})o>W^F-y}K{f~4#RvtR}IcjBP1nUHQf)CKScC)0R| z+hGqTDp&ErP@fe>&z_!D|E;00clj0Wv2Z6(cHkyXHa(W^YEEbOJ<1g8kN2KqNJw*z ze(!cQ5ioe-XMp@{51Thk5{NhJ2B2riiO9r`z3rg=4Wx$8>1_`j4q>i$#%6(87P0)IlAO1n|&?S9vbm2C$-U$v#%ixg%g`D zpGSOkoWyoiH~vRU2-R!~t{~_d9bJzmIh7Nwmnp$fj8iA9$b3J~IgQ}XCoD0e-a)d24+9@99FB0%$!1%EqG+0#!O+N2TJbW8~@@s>yK6r5GOtG_g z*+3^8d7RAsYES8y@!_mBXKik6!%M)~O?2Wt&N5bqD%u&FIf*0BrK1oR*DrWa_}U|~ zdW~dnzFqhZmhEdoldVBS`HgUV$1t<;p$vMLvX;lt!|zaD5Kl?G(7rW|H?ep?>FMHb z^>uTWTMQ$m%$2*%QR{XS{n4(puVr~({r+oHz!N_>#m#BEGlv0X9Y76?7beO2G~S{@6=GGNb{AuJQ~SZI zcP!nb_#iUm{&v*6?7wXCm zmT0GFZWiwER-TdufAbw5=ta??w5B|ZU6$n#FZ~R)TF}YOEp;1b{m3K%chz`c6_MS6 zp;L?OUZk7_*$8ZYa1-83S4Qb=v~=nXQ)2Oq{C{+<4ctf84&P3NCmC#8FIr1s^=v%E zY+BkI8}y)Gwa-k)8+iX#{9Dg!^y8~+2Qcd$vPa7xlb`LG_%r$*G}vVIzys#^6^CEK z^c!J(lJmV#FX0_POduY|oHAgQ?dX)>3gb@tMc3-bQA?7p{t@~1k6#-PhQ^$Y0Yy?L zPPf;Ypblej+tH0?hMJ^}7%dt#d9cw7`+i#3BY1(4iy}k`vx&VCzyfj6a@1$mESYmy zc;*g|IcKANodFl718YhXA``@%IksVF*>L?OV{8G%3&+s~l}+;jq~m-JpWR;gy+@AY zEiWxc9epKKfl18iTgm`91*!7;qxt~<-Z=cf{KLLiNm0uXz}F^-xLlTBa3S!~aKiM6 zHnFE*oxkX_f0VzM>Mqm<>N&&M>k7QrxNS{XKN$eVRm}Y{5-P$hkk)`~fqFHP>*iLF z_@F_{@^|B-KKbpR9n|%PiN&8-II?G&Mrib|k{tk=h8Wl>K~LMvuZS7`^T3=@3oIV- zp7!+GNpuvI@>?mx`P$-*kgCzLHWWi}5PT8CH|5PMd4cO!!z>!M9A;hE06j%#vA-Es zJHT-LE_m$u_R_3GzZ&aaG^O%RXtbTX>NtxrT|d+0O&mE2#vb}J_1kN}4y0Ny4N`Go zM)PL(Fx&|%?^}1#fz_RNuB2tlEtPSSZ2rE>^iR4jk^j0&bUqKDOEMK*(EB7@Kp%~; zacX;D0Kv!kZA6=VzTW!YZ-I!hpBX3}uHQM+u)iDsyP|`f+MG_)DjsM)Wb;sRX=Se@ zCwS2vF?s;eZH^G>TP<1}bNLz#It4GvBHVurtUn^ho`Jz?OW>aA(7?59;^+yjR-etZ zmFfWPSf}xvA2SNs2~gnmswLJVUO zoGS?ll8wY*`xxNW;=uUQ6-=vcezalV(^1_1w#!0r6I!r9Zi~|7D^%F=hW~Y0o4_lv z=|X`XISDBgt;SPU@eJidyp^rLv?GkhN{@MH8b9ju*(*7WWo`e#2Z-YsJlX4i%Wb!H za7=9GO=4nA8QFyO3*Oq>$-gu>WSvso3oJ{0$+UiV(kVUH-*qvtYLF|2ymr3=5&()z zVJ-#dtg1BvbRQ%KC-%78YtCZh?S;I2=F>9^3 z@xn&RO1XxHG+Z>H-uB-KhTx?^f}gnp2?JRNCQzp!x|X))Xt&LKDLPMN6fY({dKj!O z8yG$b&KUc$<1FM%IZf!v0PT<9v(h5DD$C zPBMHn>Jlaeh7VkHuXP_8K$d`1C%|wQxi{Wr&jwR)?_~igzqii)=)S^qhN9y7wr;ce zl`aQ-=yCT@AiR9bO6Br5n2~SUo31PDy7qdySo~IdvJDUcO9)k#uY^ru0lt%Wx3MwY z30vj|6~dhD97X@crYbakz|p$9-CSi}2@*U}B8Iq8sF(*wwDn>jzA)nE|58Y`RY7v-jbYOw@ zAE`-a8m??l{gBc?PiPKO0^^rYBh2%ej+B%mtk=MNZg_q+*{v^(&4qv2==LibAf9{q z?Pp1Q0G~XXgeKpLDAP9#HV^NJW4?LSzT}>RXw}Vc(Z3e2*Y};!GwHfSK)wmdr*?Zs zXgGd`Ct$&}>%#f1<&;K9U3~}bQZ=tv_coryxA>&07s5LIb=ZW&E-WQR=)tTTR+ z#ruId8!smL>qL-v$-mkqrWaKS@mmkuMA?W!)l@B?i6e;>hOKCbHh59{h93<955VmpR_^1P>)q{q}1 zKVa}i|Bh+jf>VrPYh5+YTMaS1-r!r0uYjGDueiOWw?0?f*520@-*v*d>4ivWx^w;j z`S&(kmQirB*3guc$V;U^;mJ+1elDPcwvyi8t9bH9Gj{5mFWcycOiwJhdJn;A!YUi+ z#pU?{Tlw}1Fb}@bPL3lz=18ei8*~{Q%QZg|66jz%2tN_auL9HH;Q#S<1HxG_Mt^2~ zTRSh(452k=dT970vdFYuw>@&1wAlpDp;JCKy2LAm4x%5!=VwaqmQhB)lVN$U<)a6( zz&slM==$%cE}n0jfYYzelkL7P^(jqT+5@!-2HI=;n);H(%n${SWlWPWq}Vnr2(^4; zwQal`9Lc-E1Cm6GVjR&xN|0G?CYwL~hDs%X?pYuoKT{5Ihe@*qf zcyr+am8 z@Ok_3Op|f2vDUSfoCzFY!4Bser=_D}Of-Zv+&b|r;FG9~;zuc%*?hirtUHz>FXIQC z7u|&7g5kZ|!{&Ji&@iX=-QK=uF+AVp9=M|4R$uVoy6o0Rh{5;bO)T7En1~2Vj35ZU zdej)i;|q4+t%Z0Ci1qVBItjd`rq3Eq6wV)#e*b*c|18@)`7Zw@ypd3TFk&8cy9SGLv%F-kRt_@X1|yrY{|UC33ukHv_18Coov zJ5J3AmnRx;!8Lh+-Pg z$>)FtgX-lTTpWhh1D($SpLxEd{s>c`^?A_@K``Y+dW0&X#D=IHo?Kf3NAJEg7 za2sq8swACMgxRU zYl`)J^wOY0!ftt(yMhwCACaJlcfF6gVR)q94E&!Li`@B{7a2~!OLs3J=J^*-AWq(- z%V$SZ{AUh60|#%q;{T>8|F7clUG{7AZeQbTX7v?4h{DXjRAjJvnpt`oAMI*TQchYD zCyBrixUKBP|-oE{a)J%0I)TM zz;g2OO6c2h5NzmTe7pkn`8>qkJ!-c;@upKp;5a%Nf6*rm{=H~e7Ts@#73dkwDP;K@ zjW=G-zPJJ|aA$Im>coK8XjhBj;^u%f=X|G2qDPIAzHAOC&YWb0z^#Mw@0Z_uZBIME z-#P&roVHt0R$KXMkjZ2RD$MhyHO4n#@m6IpZO3$M)}ts<*jG(2|DNKY@yFJ9%XNyC(58{8npQBhs?!23_TmvjV+o)lgTy*d1V+v!Q{ zV(?3)waQa>RMv@iax5@I^o=}gyQ40p<7ewLHY5Qv(;_>BPUNL__&I*mcgsPYmY;#rweT#t@!!3FqiMIGYYgGrvYN*c+5%_D+>&ij*R%ZJ99gcp&Vw3UOowbjIjKiPiR6`Op zfb(k~O<{Fo$h5!!n0|d89~0ld<1hDi0-^=E)jg_`ffgfte#%IIIcvC;q=V?I&rz$+ z$XPe$L46k-fCq}_6@?YK)jy1fZX+4g&Xm|SmO;z(8NR+WuVxwpPi&>{05kXKj?bDcCg@I^>T18yg$YMa z8Onz^^6=n!K0MYPg?dzmxP;<2I{BNj%6E8x4ZKIjgbh3S=;I!KBX#%4l{@jsPdbb~ z;>6@NHZr4NvmVgw&VpjqsUXk5W}~Pgw+_g3az&4AP*9nr$ff^VZC5*eKk(iKszDu& ze|)w5z&yzJu}0#EEHvekUq3ki=$jl;aAciDQnsRi)*2lr+zT;^WzPdC*b!(Q6 z$PR4rRbTo;vnD?^4{6x3lkaosF5t$+EV-osOGG9JoF9n=8S{NJVPA<=Z$JBN|5V6| zDw@1qf=@KJ#$t6BAOFIvLfRayZyYqiija1so`F%^iI>tSa9I8ePWL`T*6OL#V!6NY z(qWxShl~jd`K7S+&_-mc(Rsn}p!||&urx&N{dvk~vwXLi<)EaVicLqi@WNwy?%D=> z<9hfk@`YX_bmX6QU(dq(r&FLe3sUJT9cHp2O%(5C#P6chg9nU-;qT6!>cGN+E5F|> zz_9sC>gh;_9vG}aUppZEy)Z|n(MsCpk|4F(nRDQLG+h%#ZgxoF8P~sEF{YtYC&SFmQdK@<-t?xO20^b67GFPq+W!*T?;^ z+uhD<>4@k@9U3sn<8tDQJ*~TxgMwxGSSW6_uz)PjUkOwcF9Q~+`CWH}8*kFTt9(Kn zfci9i&~Pn6bO$)_9xcJ5d2e`n>PUJ1&FE6yOT4DyPJ71?TXvB5m?8uZd0kvNUE&i0 zhjK*b%a^JDV4`B3p-zT#l8-nRt1|(Io@~6HI$}3p@@pK0&pI;rC!BXWlGb_?A9k8= z-s?zaNPr@3x>N^v*KhgIPLz@IOwyBs_XnS6+!mm!Rhkg*)UOR!N$b7_4*uC!dD7soLr6Oa(<3@jDt+4~Nv6WXBrlwD-8|qfT-R&T70nNlp)%3YG`7`=SxllK zajMH-=XFFOG$_|j>!zbQd~cd!AZXCI{~apSBO`8(XuZsdqoFZt(Nd-| z8}@uE=Xt-A|9}M+6{)Q+t1>OKMkinEsv1@$Us2_(Vyv;lRw1QTB-CLBq6)})n;vE|dagy=-rl%v~RtmImC;MmM1j-34Yb4|N>%Whdr ztWbSXUh%t#{glHbpwwaGndmGN*~q_*3O1#dR5#zLKR_qpfRFBKhf{H$`lpSSBjUxw zi$trYhk=qS*6kR=UuA}$b}#X9iL-wJ32~~g1`@V23zB5mf|ihGxJVnzu%qFfD$!Nr zmDr8sn?9jKZ;?NtsD#48ixmdo{ll;L0N@OJmCdI0yBWh_(KA^Fnz+wVK!IgpuoV+F z;u)e_njF0x`66-14tb*j-GiVLTK8aZ!)4=eg?O#szVLjxRy$qQ=ni)*A-o7FrwGKF z1`UUOiQy4bP5SuRJ-G<)uZX?%u?X-{$3^PsvYD1k!gMMmFjbqg&I@fkgsqSp@fKvI`CKa`D@oxv`3LuxjFuNT;32j4+LK8#9MGfcLyo3?j6~1^+ zynS7pw3+K(;e8T=@M*PpnVR88o$J8*sk2fs9gdBtX~2gkmC6U@TTe@09NTr=s4Jle z6#QBE9?knJru^7)j!qk}>P}#K7C8gx6oZ z?=)cXP5oYvata(BnPgj|AKAFhMhn%ke7CK*w(bFXJdf(ZBxm}07_fD|^d?@~{j#5U z6R(c6lcDfB%eSi(p;JCsbq`!|FzX2))~_y zG18O@jc0t29*2^j1Gx>wJfm^}OO6!t9-T_Z^LIU?V?}4bF{tne46HqMGYC7(R|2TG z!eQ-l>!SvNxhsnTI(;I+F+y_f$Ia$vL2R2jzlm_OGxD9{C^AtDc>u&XApi znu6vcE%Z$jQ*ZP`l0OM*ysy)^d-Db4;~yCTRQ>_9|8VpY>g$cCk+O|@robHq>$)?d6_RW(e6+prq~DXD!jZ&^ z!=ybK{TTjD7a{ujpO`5@mU$A%WTK}u9Mmt2o%9ama>TZ7Gq_o0aMC1|ZR5j#(y#J| z%FXBt=k?I~{%&$gzh{Ofqm|^8p2KOQY=9kBjA|44ZWF-E>UL7uqiLqcGh5&~9E3r$ zDm6E4hjCSn0Z8f0!4gK!S(_} z>D225sfvT5`j^jeaxIyOt*O%98#OW7k9w+?nnaxH@xnPb?*z!edKY?eE?*)L{3@)j zGVPZN4il(v4Ou)~<+1{Q2QT5o)RFWx6Ocpt;6!Fuyqkmz>iOH9uJZh5Jh>(b6eaF z=NF!OSL>mT(p5*c&)$REI(6#=pKK!|dYYVc&~em_CvAHH<5}wi@g*K*Fsk!|)6n_c zyAMD2$cwgNiC)E!E&EOoSN-N)>HXgQ*`uUV-lp9|U(Ju_2X0WCK5h2Yq|%ajt)Yu$ zPl2W1#53mgSQjwUp%~qmq?~-p8C90y@RNM#ER?s|>)%2~s8}v%i4ur^;icsU&S|%I zlEQhyL<=I1ZX2T;TkeXp`nY{x+oPX-uSrbdVT>SYefaalhw_T$Wl=%~WN|k{04RJ&3^2;r?Xzqw1cZT# zUk6o@oGFc5A(h*R5-%riQ%y=k;YuE9r@nQ!D{8~|3=~a6%7|Y_!iCrejHlh&<(KQZ z1#5!DNBhbz!6A1!g$36MPBT%W+fjH=7d3(wFP+lglQCf#avD-xo0g(qEg!-4_w|>| z+!AnfM59$|)p21ttPYTP(%X0D@ zDM%?)X3GZqx^KKO$_dJuOJC)=+R5(>IqvkzV(_8)lo+c@3+UwA4!)betv!`!v2`ZE zzDY&+*Y!D4u-a%j$*xjump+P;5xwPEcQ+kzTf{UjE^}y3UyyD#Q;q8e3B^e}0W+a-qB1trqetaydK3%7#{#Jdejl!k!A(bIAkK2yvVF{RS}{!xZM6Ry~~O2nug zX6j;U@>>U00ls6$YThZ7vOBTZj^HUr-~Lgj6E{q-n9&JoFnlVvRM#Avw!iUWTM1aA z_ct03KAS5!ywb|K6;2d^Gh>Q6klPDIaa$}&I=7oJ`?i#R>ox~=LE>o^VumhiQio!ElT4rU*- z(0_Wwoj7%43%7tR`rj6tf+M8utwT{iG=bDBLfZ?wuSuMJ3*mE8Us@Zw&Bir11fe8V zPOyNdWdjpzw*0ou?h&IddyU^B-}OM^-^D|GZ-K!nrjD7nnU&~;j&$HXs+1T_l!p`8 z$3F+w`H}TcZzRe0lvawVMkhYUC5o3S<5tixV^SurA(v#nkUZ@S;_n@m`8oCY;svO?m4snN|6=K9Co^E2nYE^y|H?<(%&~M>M>4f7 z{WSZD#p9+Qb2N?l*43FIZ$#IIH-Sl>>4$T0r>vIm;HZDUN-Y195QfX3L#NutCnv~< z{4PU%`6~={+~~e2UFNwX#E`hnIQ>ldy@Soh`wJ!e9Usr*CChGCM*yP>=L%r6Xj|da zS$(ygaCV8Ty-?#h!{Qi}>&v#Dq8(w#5=kY7fM;Y-WIgc`%Mmnw-= z7jKm3o$%%&`1g#{6w67TThq!T=X>dXO_L~2AM|z~#omxnWeo^?bdB&ys*Wc2Nyzpx$)^6+XQ8oRe z%*KHRYdG(6IRQ=`vzDD>4r0oS-~EEwWE$LP`89~Zix(;iGirnAd-p0Ujz-*K zPnt*{oU{4V&omjr*x&ClM|wW;I=gN)xI#n^hJ8Nke#45XdtPItd>v3vvM7--;d(TO zs-6cwIKA^$aEx*`)N{3;9?22$4v379XnY$Jn+nO!w&+wsDzr%Fzqs-IUdlrTmM&b$AN5OXGRNj}BTYyH*v! zQ*rVs%{kAD#OO$g2K3o6oj^$9oKselB459TX2!_mz|$Rr*ZL%m3S&?0ZU0qd$nVjU zJvyg@emuXuoyHqJnwB~Ie)y8|+N(`J0NsU}i{DV2XuL~a z)lS1pKsPd~4#tw#`5w?wuAk2zzT`{xhO@T$!3T(pCb3Fsk3Ntz44-CQphUEU*tRB| zbCitx21)G1pQ#?J{<%JgggQJqcXiyDq$RDy$xRl2K^p*Cjm=X z#Ajb7(D3$hwFPC~6niCdWMs!OxIUCbV>j} zK)}Bmz}0}Zp6M2#jpD>p*$jboNNp(oum)K+Q=Stq(ICm`PiPy ztY;&GeCe3MEd`hn#o2Ii@E(0@x~fsa>$j7nteq~#aKspZ#c1Wln;)+8J~iCV7PfJL zI7Rg44Ehx0_?IAWqslCdLLB>RDz|woH3D{KoCY7_{l9J_MKzUrWrRMHAB3&M3NMa6 zh@#NgcO5lU^~LQl6`6EcEZeXXuSAf~h_BHM)X^0V1N*xohvC5BkirqCC4^2YX{MKf z)K2+fykY$ZRtQpyds_~Mv&uW9%_K!gxFLUDIi+9agnw_oEe4dbHWhXIW{}NE63Oek z>O9rU!Ay_x-_fVVnIBY~Ldd!Gi(?zR4i*miUhvy>nTQxaVwV6VJun;OKm_xSt%n+~}DLF+4V zXgd=f%jP2_sh_noUxI5V{NvF-hnVyBf*GAb1u=b>>#yz{=-c2#f2Tc5h(6G0x{!kR z=*mp74v%!R$W`*ansC5IG0Gt5(A)m6;rEC2oBdycYiJ?0?>sv6`}|Gg^1$KHdcu2^ z`}KmQIMqw$@xAL4Qmzr^uUi-SpXbkO*KTfm8Q-fxPDkD}p$xp~zEhG?xSU&RHRAI4 z%3?YXy8YSOOh*rlc=^9<1OkJf$pg;kCyBx6km|4c0rd@s<|9Y)%%(F{_EEaHkIE5v z<6~e+4Zr<~@o9?3@PFiFww$mSVYIaGW!*3(KlH4326yM{&=c2(&Nfj~MRg*=Kea+& znBVA{vWz{ja}E(SRL7hslxxfq~0sZ z2)q+FEi3r)UW2{dNA2f;D-9J#>5aefL8>YIQ?3*>d}=bj+Qk||)-qUENIRmhRFG6m z6fvbo=y=hP&gI-u=tB+zU|NsZT6plh*F6IvO6qVG-teklh1Evh@v{TLEjTGDH#VOI z-xM_JyS@eF{-Eph5)Z#9AJ+$O?{{C<^8E1Tn>xr!Rm*IVM#D>Ke@2mH{T$nEgO70r z(njNuQog=)yXGXOT~&>J^hgRGcP+S!QXn25)Of^<&|OO}wTHbGWUJXY^3&cW8FJPT z&$U499i2LB(9aW=bf}4G+Yo%4kB#W?rfm>&JjqXTogBoBF!Yj?bi6f@V{rc|Cr2SW zS&{PHcK?SK;+H*iatYUyz7`J%?h@r4mB=1-a(>OaBjRT+Omukkf2N-`h_^mNk~hJV z@b9Io#Np-4>n|H-Ko6z1cYW@aBKL{NYozQF6k=eSW5;smX&>i%PQ4~r3g|P!?IJla_<%u6@kuQB8;ANQ zw&b8G&k&a3zFI`EZp`KKn*gM7BNkt@x0HrP_~#c9-kv+=F=`~BcIdhJb?<08(vcpgg+ zf4kV2D2#eUm)Y%hLV(fP=eU$~xJ=xhot4)9z*dKY;*mRQk$KmXMD9E|BV~8G{co8g z&EDfp7!0vIZLz(RR9vpo3FDa_W%Sf7ru4>xN*X%Q24pl#{SlV zaa^%KiT^$IQUcnw_|LXNd7E`;ag+?jpp-Xzw1}uCn$yF1-Ys4)$oS*kS zeDMHQ)22DoP(ePmk_uhKp;&j{>zUyA#{%o%vX6=|S}{D1#^yaDPI$A1jB@iS%T5kO zpJ4D^CL3Rf@3^epsi)Vedn#U)m9pd1i8T$s0E8q~mSia}LS!s_^yH(c&&eA!VPfac zlBmK*r|c)8MC(HH)96(Bj2vQ@3oL(CU!JwDTvMncyfwW~sPxw@-+;=@@CleLwJvX7 z!JqH)uQLDs{VzDj6!O`WmUAm~)G?_O3wY4jPFM~2<#?rCLnFpHwed^&&o*+E&DG|v zlkc{=jd-zQu3Y&1g+3ZdtcJ6mF?(tQPP`L9X(vB;cj%PKqMV>&GFer>k~ju+TeY+u ze0^6{$%sC)&Dz@de&BKvtQ?0Xh4gnPIA6HQ?|&568<2AkUuvLdz4e21J)C9+KuUXG z3-5J=>J~#}UEN%8D~(K6Vr)tiw<}~?TM$hkBY{~6s>dYeDccoF7n zuspb6U@-=%qxA>QB;3?*$og3~935fpR7&JbKd<*xHX3YnlZDxP{X$Z>KbF_hO#$`A#^R2E}dDoQqL_FCN8W)W>Cvl?HMd78d^2{s-*ExpS`+ z%rb!WOxFaF^j!GLV1pOzGQ$va<^+s6%XThQ+F|Z=#|Ss7#V+;-DxY0 z4x+R24nsBQ?*bO6`gtLgZolXGy-43OuYYs|wD~8rXbL>yY-qvg_ zHvj&;Gr#%3X7WAFO8M#05zXJFhl)$zUk+;PrgajKCCfRgqUm{_j#OAT0n@wfU!J55 z18*+{SUJYrPcNW{B|nK!PQWIA6j#b?=w*2b9><>5re6L)%5$XP42GnPQ0CZ~)>FL| zTJ8Q-Hh^OYU2fTo`oUgXgqhY3cv~%}l%qk4TOqRjee3B)RX&B4(y6Inu6)*xHhV-Z z6S05Akw_~`dZbu&Plb~1A5GpuP}?|sT9sU3+zbq^>c|_9)fR+ilWWtIme6hbAm0<4 zcJzqS;g@vsg^6nWETek-$TO6mrvV%Ni;;zP-e^mse_4YZg_pGPz}y{`MUy^j9jI6l z!i{Kx)P~v7tLGAzyF6(B%Fz&e4#SCHRLwWugB84k4!nG*FwS9Po?oBR{`a4&7Y0nz z+Q`=-b~?lG9m!n^#a@DiE| za|INL@YIkDPQ3h|7YYVJ%yeQd7+AQ*C_^i9^-%4~kM`0Z=SL5<%YDf~3ypnvF=KXM z9}4SH`IO?hKq>dg?+}>kgw!~sBWMJM;KyW(8AeE^mO?9o{I3jmzL^~f`3TpMP7(m* zO1>V5x3(i|jBp$oM>Pneci_p6x5hW7&Et@LRM%J`Iv5bhH8KSSiLznR#E*m&cWGWysz4?aIF_;baQWp+Z!dw*g^kVAA$M{kWkV*je= z2e<4Ur?xEMMRzm|2w(QJY0FLIN8gHoP*Jp1yXQ?K;rwfvPjczJ35>4EMkB!q*mYpO z=ml4CCyk31!bfbITe{vQ%ozarmC?YR`R*xDe|OCg3KNdN6o5I_apE84NJvcJWA)tS zWA5h{9Hm9j*f8KI&ZDJB3&l4)`5kRO{EiM{`M3HXxDVhNuBSZWi`IpVwZmYG58lUr z0s4TtKiT()`&TF9TDpGd z3UlfcIDLIl=G5WuPEJKvHK7IJR+~_s_wVdyJ&ls@>0li-zh$%(!sl5pHOhXbQxC%G zPl>0h=vDV;N8qu;8990DW!PU@$D_+G+5i5rRWsYkl>Kw<&-MWZHzZVw%rwXkp7Bba zx_|`cEV+zb9PE|$h9|g(=)2OR^(L7QTR)}=L)#4SO4fTPIAwl~eW@Pq4nrpokZbvw zZD+c9q+^}ZS*6JW-5AjwHRV;6Za$Qr_*Ais7U!&KWpW3p+iPG~;sfJ1zen35lQ-gZ z34VsV*cE_x8{)h4zVcGvq|=pha8p_NQiwEISLqt3^=ED4;B2+gSUVgW(D+-!)U3vwmLR$d76wA_D zA9hdLcnmqctd90<$MHN5yc1s*FNK~Fl<;IS4eZFE+V?!$B+y2}l+5@iC0l8Je zY{L1#pI?ap06q3Y>*j(3#qYzRvFNkbIZ?-Ky16k9? zCaM`b!5+>No*2*LE$B2=9rd8z2cFR0$jKJkR0fm|ogxmO|0KeDcmm_PoR(voGxhN7 z=>Es2Nw~)Dz$_lBJ`#r|ud8sO{qHp~ul1Y1@3-)#`8~G7=HildZ0di+Rx}X)Mj|-X z$t3aMNS>-L%&5t{2B}c&#_0Gd_CWO!JdoXm05PE%R2rn8Yq;h?|w*5C+^gY$WJ;>`p&T4Zy`Zzd2f0Z9}y=a|a zp{^iJJ&I^3eQdi?qqh#5;xCK89PI~{L=^lHY zICGFXn+-I+99|qdATD!er6yKfm&(q}Eb#wGOv7bh3D%;0f2Qb~xSLlwD`OF1%wk{J4vf2mLIW^1m^z=*nEj zv>hJcfn%KTAfsQp&WF$zXBu|IUmlxR{~HhqpkH;~R$zkX4;_BiQHK-~P)<>GPbKzL(CuP#<6Z7*k7AjMC&9&di|nI4@` z{}26ih9QcaZ=*IDfaX^YUdsQHuzz5tYxTD?(GjMmk^B#TuVg#(hoLYB(yme9v?Hn( zPn!qX8>?I;k&1&iJjsg&=2Mos@O`O%a#IG^VxAqC_gPYr`H~%{=9G3O1ZTQ9R+1LR z!?Cj?WS!Dxdw(S3d`7j*zoaDsO@F{0t31QvZ8Nik(Q6Q?t64$uhMm{cd|;BAJnsx` z)4Cp2P^sVyOA^hwqGVwA2lrmIP6d+=0QE2KDVtSBd9Q&^6Fq%*r3RqqOuz0#)G~#C ziTooSP{QTzLMAQbW2~voPG~WD!D(dkf3a+{5~)2+y*D3dush{vV_q-fS6k9Ha%8~i zP~vg$pLM4_s(Cdfhle@SliGmV%ATfs^!%1~)tjaJjaYPE>ofSU>}%sdLPPme#?eWN z*`V-F+GjI5rHH_ae+lJ|#*gRHv(T1qhJXlD1X!F=m~C67!!ygpGHC&&M|CgAy5t#+ z27O`y3Alcp+tK9^&YvC6Q@+E#zn>l&$B(ei)$gfOX4iLZEfr*ZG#r?7*??C-ZDOan z7Z4*BWJbYDnL}SB^7-qc<6N-5+ZuT4Xc7Lb@8f+VKA!FTF;>CJx;OKj$?9X`qoJw7 zDWmHBWeI$>M`yr4-EDRP=evO|)ABXlcAtfo<8ah=Sw}_DuW7=_iq{pc#vJ+7v)tH* zIZ+&3%u$3GdBZ%l8RRY}w~bz38m&5_i9#q}gkF=?k^zLKL*E#F!V`sOr*F(Fhu*!~ z<52!=I)s6gFL5Wn{Osc!2rn4yqR}Uxt(OfS8Dimi$7pn!P(X=E*iOV~=IQYQKfc_> zDBEl>U|JVd&!`*^O_$@Ry#3vsMf94a%-WjY!LcnHQ6kmnC&>d$DRpF(^23Kr^mR;r z+>4**rNMdpP8vV>jPP`4IeFSTkU|GwJDu64>dpKv8RgKJaj?9k&zyiK|G#wzS3CfBXH^bYW_izL*jwGhDzFv=;TG$+_jwA4x;&Yd~dzULY){s zc#6@XnOYZEAU}>C{BU__5AkbXdi2t<07sD@8Yu5B!xeIAHm>y2Ui-W>i0+s95+7jm z@zA5PP@UHGXjTv97I^mG%GhmPp!m|U4Z$zAP81(A2LInBqn`T+5?-2MvYks3aNvyx zb(B@(FZUU{Uu$=pFEd?x*)a?1m>j=G`imGWVsbUO;joS&mT!RGc1&^*QLjh}NA3&B zpwYWT_0168D%`pNeC3At;6v_b@qYe6<{LtwdqJuIxpDMb{B?=DWp2tP?lo6aQK6sN2_lw2(rAELm~nMY%By@?JSGBgNJ6D7^L6RwqG757bz^(sfD2{N3TPUV7IL zUq_T|pGh_m-}T^rB2}*W@|XA5iR*+>aL&jM=B*TP9cZ6W0+{5>9veQxhod+;-N%<_ zL(2EGdf?^%3?4KHMV+%&GP?$kPDWz+t1__jRtZ^m1#CCom#zrHSAH(;>m?rQ_YyO`+je~h{7?6>r7L!{Wi?oac?Wz zJSaV$O&uZY*XkY#6&pXg6R)JllIc+1!epw6A{LJLl97BrNfpdydq*nI&P*8v6d0yE zid(9lO8Z?u#5c<8`_lOo8_!twuFp4p!0H68=Lwg0NTP<(w{8baz!l=hH4bqZb9|Kh ztPI3Q=9dbnqe}FXsQRg}fKK8Zm_-}-I*e(iKT?C7_v%?@JAReKCm#~xlvZ858~ByI z%Xk!*{`?PKEBN@!?}hRyqk&9=eT;JVYP>)vx@3i-l^aHV8QU97bi~RpI{f$A63t<0 zWJE@0a=Lw8Jbg(IQDJJC9(Bxlre?66i}E-1ej%#K*oHyF;~Kha3$38;V@V7~gdI;Z zvi0>%Hz2$J>fSv&5IG`CzUuC*4*HE>H19ih6!X*Y-)lxVg+>}YLEn1G5rF1y^C_Aa z&EI=^)R`_9(inK-Mca&d)cj3#2vu15d*nMKF7q~kfxXu^5xH(x`5J>OMvJ(;>@HkRdP2S>J~?G|0sY)Njp*|Uq!UmFZanKfJ3)i+6P`4Z*;z@{ z)lM}GuC4bBrOA1nFJ8nN6#u|`&IlhzWcCZ%;nfYT9Q5CeUDr6e z0cs-?%IjP*A#Mie(DM9FPoYwqfv{NsX17yo=kkn1pp(ikbg-8gG14BPYx0)x&*C+%P>{k9XZDGkLr$#h^ zz3*iXn5kTcMOqHAV-thN@B2+nN~h(>i}K^tjOa{?{pHJCFge8NQzs9=1pS3mQB?K( z%?MjxLrM$i=9fBnB0)KAGrMK@mA>O|vV$Z8vkUbc#GALsE8!yoqI2r7`TCx@7u}q7 zB+_-X>j$Tb-?0158w~dHHU_@UqSx+K-7DVh7;o0SXA~9Lqi>zSh`rl=+aU(l9pRtXDWQA=GDe@^fFc6?RS=aq|&cbp7kqp zngX~Zj0Q@pk5rEAo!GZ2LLuHpsz z%`=(e{=%i(cc1FV;>63J0{Mcw*MRmDQ!uGScxnJy1$TDp9H|x=Xkwlv0je_)gYs^6 zyudb2`z95$+YLJuaVK%|<0bglmHuGq@N#Z{zd{?z9p1j-vxF+vu;%1<4ItDM~RwqXX#VOe^2gRsyf2`TBq}(<{CU_V@i3`bSryRgZsv zM7OUmB?$Dp|5^?awnNokG#*>OIGRxSba03lZ={O*x$M}1%$c?l6bF_BfR~Pj2GP17 za+F3fw4J#+rTV5ldKA4h;e2J%XvZj6KzF^WWA4|E)gvEeb(f*|pA7TbdtVu{30>JNevzaS9Oh}rC|a-l{oUnO#zoM;u2lcuKlm-;X}rgS)PG3WF=hkPrvyAkSHEXc?XkPY$mzuABE%zUSUY5)(cOL-LeX z>ZF>ru73=+6B}Ng>sRmJN)&_xSZ7-J?{0Aoh z7=J+{tvOYV5@Jkfj`hjnDK*;-b~jRjr~ugfv~ZL36V4x#(F=E!v(Ls`P;BSOfNYeK z#{W>lL46ed7G57cY4lIY_|Qj|71|V^NqXw@mK}64&O#HY!|rUh>ojOP%@};@cH?~< z=W&|%3Z`NTGcwt5iO0xyC$$|g!&5v4E%sx6b}|POub>9n8O$+e;}IQK9yFRUWDlKT zb|B6kZJALz>Ydt=E-ZiPYNYxvY`3fF*(G&t-_Q=xtt2k9tPWsON`124H}{ z53mpS#}cNySIGUCPK8kSz#sn1XpHWRoq$&dN24~!C@zrT&3gCf;bU7j%tt?MT`=GM zx6zCczBG=RQa7!$&m`fJz@`3QWq$%!t)(N(dyUWvPlE)=XOHg0)X~vKuQGLKLkTx< zkMqKAnQbrSY$WMK3|X%E3S z#^2?ls{k7Q{hhI4W=O6=b`tIBq&K_c_bybxM^xf3-!TqM>er94=%{(B*SfN&?m;3W z%n{JR#%?8sv&^Il;6*@uBdkD2=Qy+&e~S~{guaf zHD`qMx|(#JYy2_30Fn$cj--{_?Y*2<)$f@7k?6*UP^|hQu!G-+%yb%!ZT=SH_i-&n z>{-~|;eJLXFzNT#+${p|CX zln(jcy<%}9{gb`2JV&JH`Zw}jk4{kE`M@dWsgpaSFr|a_g6C&(y%=36E0eU>(F!#p zHRt2e2IaUDOwjHfed-hLDXW*RA3U$T8Z`9n6PLh+@M6%7rdxeaka=LQS2iEeHsC>3 z?NdjS(6mddJhoujP>;w0J+jcp7&PCtm;NxI?Vy8M<2c|2_2v_*jm{majRyuM!2MdJ z-Y{{xI>SfTQN4(QN47F99DN!gaO8^iukW1ICa9<9ag9P!AFj8F>vS?e?Slo*r+sk% z+HrXJ)N%~){IJ#uv-?9=6cf4)X{$SlDfgpnFUGH_UO`}lDDP!)3&ZoJ2kL{`K9xy{ z_w*@^M>jACtQ0+OdyTQ%=d3)lxw5g%W5pYD4&oQi-uZ!#w2R=I=Josfvj3JtJuJgh zdRd9SKLqgjSQ+8>-XR?Av4v|N6A+4XjGagLtK$%odmLge23NM&#O7Ub)|g7 zcR8hdRcpE_uU#h%$u}Imulycm^eH!W(5kD>hH}L@Yd|W_xPi#E*T3CT?rQwb4!4y1 zA+!brcEDa#KaOc|9>*&DNx`*>_h=D>=90f|`1r#ph^220UWV0$2|99OyLO2<0jATl zbuS99&EGwW@=r>gm_J^<)Ayk<#-R#N?VX(%9sBj-|Iwfx9Q~<)EA$_oKMZQw39dZC zfg>aLhanIq*T^6oR?E588|IA#!1=V;ZFF8*|08iRUAxq~M2!aIBt;TLLK?jO@R<{; zzpcFL&NVzI{`aO=am3QS2d}XEhlla9_u!Wto@^QFH05)ZQC}h>9ZdtKUdI_o@csAW z&z~vx)U`!&GKvP5XRk@xa)P->ah&K;m<q=Ib*P)#$1z>?my#ozg^_PS!>1^K*lJ@^kG zv&&O(%Na53xo;N8{7-m9WaGrgfiomh7caYkz{gmnUhGUTbgs;QGR!LiZIi5*Y9x;O0#KZ^Jqke}vcBYcc8 zV&Ivx+cXq5K!b;E>X1M)9lVj%KFi7jCi#)3UtK@vQk0iNdy$=K5C3snoCga2&I?=`Gv?e@( zNmlh7Hl6a<5t^o5cMYf8n%)oLdnaYV-%$xkC32a)gZu3AJP0r-pAJA8O=?fwW;%W3 z!?{-hyByxtx)YXg^p!(jd_324>IyvUuv&4tv3!W~Npao0rj3yol=ZxVYDU|Y-_#pE zv-{!nDNe87>rxoBtKJx)cmnpG=+JX4bHRe!=1dt+!N!|DJ~?tf%OAM3q-B-#8_`qr zeJoE*o22tyy$3Lp#k=z_^NC5^9x}>iH>60C(QcP z%>mN}CyjE3$Ggo~_{bQ82#o<_!)^%SPUNXmZ7`tHC#eXjFMYNkav9`lP&)=Qh2?Dp zM2vb=s=S@w?d0^G?*%W0n)W z)}wX9*J-jx3s8>-mOJcmOb^_Yo_&g3f_`Tbxd+At!&miyK~xW)Cl5Hirc<3Mx@@Cy zIioJB_tb6nC$802*ugYT&wuy_pBR=UiW*wfW z01k+KcvoV8m`N5N8FYEs?_z1$!AWL;Pvg_83cGK`PZb!=_NYzHnE?nq^s{~C3> zfMs)Iqturad=IYZgEn=|Zf|Ik0HC90MhnnKeT2$9gx3-FysykI=UKiZ-y?^KnnEQ4 zO6aQG&&sh@h`|i?dJ<$;zQ6A>F*Njd3Mi#+zA8w)aKL8tfmfpQz9uv7O0C5K2(A3w z>yjKAnt+X)UE!4`$q~Rojt^{=6$6~glMRPfSoNOY_2X99QAUUD;PFaG)i9|1Sg^F$ zzms%ZD+8DLQ$JCqW~5Z%Ke$T(Zn42xu1@I|MQRwUTnLVQHoePXMncvp-rgXCMb$w zxocE$9GjGBIohGUMrrhMI0pC0rPH%;JG!whk9g5|I!M!b(e-?s-h}9O2l6Y-hlKdJ zZXc5TMah_>QM9dA&}@IB({}+4ve_^X9{K50sUNn^sQECyOq1dLNgu`JT$7-OrtY!w z*bi9;d5ixPezcm%x;*k!6P4z%@YZ&6M!4^nllTL$Q8OI_uw(}_iWys`5ieh?BR|bM z>VxnKkWOLi=jd06G#b~YPsV;Je@WKV)*C0{UJm*dr&4WFcq?^{-=yV&*&Ew-I%*y0 zz1KWW!utFwKXol#4dqYh6zkYwcT!?>L=)5Idjc;*h{5Qfq>-2A5ay#@O8fi1XN`ID zx|>kqY*8nl=_nD0oqs_X+;~Fn3nGctE|d@GCsr@L=+~A1@$7l@H{LAAE9i`p6+cAB ztNbZ&2h7;bB z{1JU>hlX*qbc#B~Gl64zS^JPuGB5BB&bpXB)xiqR6Z?m**mTjT5!P#*BxID>c#;!@ zX94lr#8dEp&aab(ayYtHW~=5IWze-zf(cvRo{3bgEitC|r_hss2c`glJ6 zDZV6IhXio0Eju?j0{P&k?@TTIy894JIA5O1;{*FIhJH;94&U6MmBx3V^uw%Gvu0W? z-T$ZPsN&GPHu=uS+1o8kpJDQmwU(Ypdq-H~hi*@PWNdv?Z-VVbLp!FQ&mVadiM zTzt)2mM@;o8#7WCP^aG0gz?rH;}4%nkCt{xnd%^+;>@+DrUM++!z3Q$pV6J#7G6B! z$YCENg4L0}+{{;^q$88fw^%%Y%a^~mu4-a4qlq!R-wAat znsD^+5?g6|9bFKjSVX$CHlh{s-SN{8tlL&N{`MS#)OxUo*5%{nd>U@Ps?0O}t!qxe zU=m)B&LPIR*X_RoPP{Kd)_7Q}jnLY^>fR}`ioes=fk72GyxndyoTqyH#kJ~gd`N#v zIWx51zYUdcN{i<(2v5*_a8Q{AW{0tylaj!K6((C1607TT9hp2%C#2vc7K7ty zkq+?AFGBqa{g!D?FGZ$IB9r=&dTv^|yM7^j^gV66J2BEjPtnoTWTg3np;hfk4#`zo zOjj)_Na*N{sIYN^$>~gGQHMANKI@=}1E)?QHWamOyGPC*nDrX9`y_FwHqI!62HK;8 ze=dtEfRcoE1UxXzX5SVkM%=%mH5jDtPtb1){5PFNxKw>ZO|7=%r45zFs+9dVBaX9$O(6Vt`$0p`h)rayr!d z{6@gm!|{2*jRF#kjSp!z;^TJ8J(p8L&vmodEbufS^2YDuPG?|&^l3;L51qd3v9n*J9V2?D$_4A4V6faw_aD4(T|1QR__$k9ZNdDK+#e&4vDe#2z4`rSLYpG%piNE?ymalP z&@qYkNlv0Rhj66n&+=m@5fzsl0H>rux~Z=sSZ#;2>lCNyb3!&i$keqY`;@=d`ExlR zjn^u_OWXQ4NyohUs^M=K>HOjp;ISv!!J4bCz`cr^tB5yR$Y0@)wy)EOI_jw@LCfie zEqmyC@eP0K=S+{X5CmMzE9{y$7VtbDkvA+qRc872TtFimGJg5S-&uI)6fD*eS@>RMn6*wFuqRmz&N($$oy%|{uf)qmi> ziA0^d^@UG5%i>*?mJa2Pjp9hfb{;H8IhEsHEcu!LKVaV?UEzZ#*{la*abObrhifGI$cF4^ijs9GO3s>qG|Uv* zkT#`99-4#CF!(Kl@T5cWhS2;cT#obw&HF6BA$|;|UsF#6J~~hTlC&wxWDNZ)!L?7I zJ09v&l!tNgInJzz@v`pAnwj{}0ZW)fHsW&sjxX`}urW(g8&-5u`jnw>ZaU+Q6NZ-~ zt7+e+f8qEy&M|xhIO=xVHk#%0#M2PHi|I|PFw1`F9~wzwFZM8QgnDd_b=tB7Okl-= z_2T-vOsIDAFXca;*@&D3g;r22jGC=aHzs;&64=1xw&GNgH8ydOjRGAMVDuutacs4Y==E#IrVbDr8HnGyza>b12=iW| z6$6xN@DVSx{8IsCz5&$-lN>!%Ijh{6mencLL(e~VZ;0x97Hs6w;G)iqxJRQNPm;of zB&D40_}nDjq9}xaiNjNyLE{?zIx+I}*TP+NZ~NC?{R1+NY}L8a`JWzmtp^GpEu^E; zDU4$qhj~{ubVQNRq@ml9B;gjiCgGmz30Bwe19aob z55^TX>eWeTsJTZ^H6MN*9X<6zaFoAl|3ZESUxmY;2OoqQIJ&)U^|>Bvl%9wg?RxA=r>@?H2@`%hgN zNyYdo<-_>i8Q|~)pc@VkX5$yk^_V&@MeW<_fTWT!ANWp~7H<3cOTP4fmreOhyrx#; zQvw)gY%r^^Nn^DwaKFe&fuA`Ir8JxZsFQEOBh~{d!Yp&6bK-8lhHd!enT((Wb3c0gpas#YS^NKK*->FwQ$u%LI*fnnB9H9wn% z`nw$u{z@sQI>B{?r`=JQ<51H&e4I|u`r1=Xj865zuOd^GYq5BE_rQ-n!?M-c?By`V zUN5wGFsh&Oh5&frNb-}7h(5&pHaE2VAX(ci6FiT;W|d3K>#%ZgAwKNQQ%=c|x3nPF zBS(e%@HT`$n7|o$>BuCA!(2|kPLh0Zx{AknFF8Znf%vh61XZzrj81#~_Xx(-^a0wF zh@#)7ep8C*yI=)3wb8>bnF_fO#wLVsOk#4BTIHf6Nngq3l$*A&zs*Nq&M;meWY(8UHeQF$ZF7$SSQEN12;3OX$l1{pWt*q6>;5~Ym zT4x-YI%hI~(}>%&Q*@U2_pvPGbr@T!e)L+nr77J&j}E0A+{>~#Q`ECta_TXW5OW*8 z7ork}U-lnVxc*%X|2J~Z;i72sWl*_q=~RUBc)pW{R;PQA)I?9HowMey5F5@lI*{FQ znyEpU^FPl<;w|fh1@WW-QH~j%5T)5+|AQXwX5v?M^#En+z%sv~v^!-nNjv3yQLgXl z$o8EWvFV##c$h6WwrFxoTA5%zwtVMW>o|C-y^zOGQWSi?rkJ6F4vF1yV5f+l=TD3b z)rY7~=!gp2L*{Gk8(*}p9U$r;lTCd&`fG|%8wP3Nh@J33aAk67J5B}GPWm33?Pg?z zFvQ~1=~o-!`b3*%4otkzwgrajjwO1F52RVkHcR5@*>tc*??+Q4L2mlOY)9ML`k^yL zniQVII@%X#au?Kw2`5D!X}4c5CZ9&-XF6;( zjOJh9%kwz6c*EhBTsM?=nz(8s7JR?1z&k(&59W-|@=%)O_9Wh}y##aXW7R*y?P!lG zek?eL#1YaM*)T!;{R`hHU@6reaQ7N*tTwJJ1=sciG7SLej-Z53Gt4_vLou+g`r5Cr z1h}1B7@N+g1RUKZ+#^MK@WV=qWATT$bHm1;m~wN}T%vdHs{IL1bOhx%VossP%TA|i z_S+3O3e|8s`I2$rJlHa!R765}GNXJ)BE360RcE95$HeV-*#c$F*h^Q&Nq;0x;`mP9 zmaPLlrG#a!WfwgHk>~??d0jEIUg7oFE@V?dA5Bt8hP{I}2`8b6PfrKB84tc7jHRT; z_kk6?TjA8^TB}K*qetZ+_kfwM4#4UR>1iV>9Y2calmY8fA6T}N^@8;Zig`wn&(2yH zJbr(6%F4(|=lJ3BZO;@wg7@Hdk1v@(1iPrm8jPVb%JkSJI;o5BhsW>H!=XKA6A3UQ zK5aXPV{Di5Hr(p-l8q^BBE$v<|MSPhjXqAxOrk~{@aPr&*Cah6DPxl zT54TYKOlk=-}d>L_$V}Z&b7G@Zx8W?s{%Dpst^hX@AfmC2`|g#Gcnp%!nl~eaY)vw z-l2_B#eeg`5-DhK3+$sV;C{Hlo!GDhi1$z9?J{&ncm#UOkqa)=sdyXg+yL#YHTvk; zF&d5J zY*CSp;nj@p*n=m@;P!k7u3ex%#?joIqGH{Kbr7@#(GB1zRHg>Nv_z)e7Rjmr5`eW6 z;z&ozDH!J@PX+tB()`T>`N27A1BUW<9QJ9O_?{#sRk6icK7mqpy&X?a36$(@mm}Bh zq@CLnv~j_Uq|Ou^o;8O=A`lJp;GdY|bGU|0BvQm)3SaJz%r<@U0X+W0RYL?6Ow>2`sXvDiQL<25~?`r^t*~&R1O5h;R=Cd zqCDbvTVJY72z54sBu0O~u2{cQ+W+g7SXupl)M+RGZcCrF-82$XMEEm1_R0}q2#;FZ zq?hhenQ{wUO?Z>h!32!$7u9wS&rTi)zXxeS{>N4@A!@T8vi0xWif5$?&sUoEP9aNa;aHJ`2$U4MqKHIu9(e)V_uFg%# zJBF*Za2$dcMy4(QY+1Ga5C!F{ln0pHI&D5`p(Bjy#wO`Me02w-`hV`v$PH;!81vHa z_w*Rmr$-wzN8gYhG^^YNtR<5qPyL>?373yf z?Y4bOq2XP9uj6kl(OrLOz67FI==aT1H_uM`a62Zx2+=K!Z7M&*`3b8JeP%9{#Wf5gY`%A@UP!hcuaigq{q3x{X>_5U;B3m90pf>)u}Q(THtS2lNYewH$}pU=rYv0T`!$+j zuji@&#lZiZxAkwqC+TeZo3k$xk6vcA33L`-SOdiK;L>Ly<}8S`e8vzXB$-Ke2S z9173hz*L|1ul#O2%BFcFN!5=={4{izR{h%j=Z=<*JDsAT$< z>8#p(>-+6C+oLIY@V|RUA@P-^1##}{w6XdQ4IZ}eym>K}FxFkma;@LZEQfU(n`z z$F2rn^; zed-Qn;zJ(wMK_mpop^1$=p`;QRNuHa|0@Xg0r`3`_R^{5*FCSHGx?^O-x*xE#ZF&3 zijGSbw-cV=GC7Xv_>PUtXxr$zkJ3Wh7yjsOY9@0jzTDauTEaiwd9Das;HXMjERE1eM=TgGmMlN`IHI79)1D_VNIv>J+wVmiQ z&aCcgV}oQ7;uEx-!r`vUe7gYYD*txM6;hozDD%=Aq;fd_L>MvxQRdjCt_D*9Ho|!( z%;EDZ({QE%9Q<=MJI1X(@B40NnC(oSU7G5MWcaVov24RnF^uqD7;N%^C^th}KPnhM ze80nAE?zZnF?QC?A}}#iNA65hoT}W984(H*%^4{=gx*Oe@Exyb^Hn&i=z8lXLrtB4%AY&tn zIfr9s={;qV*;W9)34zJ=RY8<=9e6Q5HAxH05YO-tkd|LIZ<|(*tZnB?c2-G!C7Q!z z0G0%=M#yjLz{vD!Ofo+BoWDOcJ#CvL3J1!XBViD$XL3C;Q9NGGXk_+3!_R}BkDhjk zqW6!KpHF{n+o7*Gk?JeBoS{apOShbYQO*R{G=?R)tpn*JTCHaoTzG%{SB(%}uw9z8 z#@<{bNcHGgwbhAk$a03u%QP=ILKWn+;2DDdl5=djAao@h&JX@oShY?k#zy-P4%<BvuSAE)-^5iL`?&rqx$9~I&x|Rg{l;s6w!iOD0R;-|GvUZzV@mu5zdQlD zM{cCt=l0^*ygp3R^-~dw$hW^uX@BnJr;#5}+ldU0&u3VvL2&PQ4LM#L>tJwDr-cde>zfd7vlFF?HIC+3exKh%m9%F#DY@~Z`rL# zSn6bNm03;@nVv2Nc|Hp?l~3X(JW_)XadvkFduTw7oRKU=pIM#r{vi7mWe6dkms53uS@mF<~ZhO6i%=^2@Xe`qmzRZSjYaT z=bbb}@djt~FRpV>N4rQ%l-wB*W`TC1r_Druye3&p^eO*Yr{#mm75~#+ozX#WMw}$z zA!quybw~8K8n<=w~@Pq(M2yMQseY)Yc(wC4 z%{V{eCEEoryo@G3bHol18P;jKmcEe(&~_tQ4_Oa}>%t>oNvguWD66{P)A=R8wzUvF z)Jtr7g6I-*UqmEe=DaW7*W{s{r}XgHW;c;zw4^@CFsWcYVre530XXXT3!c?%e`YQi zjeC66G{eQJ+jOVHv!YdzML5+G3sKQ~ERgS{Ofs(AxGBsk+j6WRt4{O!w<|&TGb)_Z zZj25MO=CIcSaA}gSP1t(#+~M5vK*g|Sg;-P>1mINPd(-PdwabRl~Hu$iu52?%AM8l z#ULCr%EfhZ-NSCf%?T`doGqtq*}lpuWJl;Q@?84*o~M4{tv&D7naXyumFzI+QUg;w zFmgD0T^vg-n^sT2qDPdjnOaVBic${~(EAt&V0xBzRZzR}>MSHCFv+UICTe8()~msT zPAfnzG>dAA{rHth#;HrDLuCM@9j%{*_sv)}MoxKmfX0mK5Jv{KGdh~$h|z(JdO1nT zl;|DCNq&vab~2yn5pwAcRU!c(CoQC&M5u2rJ8mDb{0sK8p6^GV!GT0_E9jJQ1iW<{ffEvh3F30 zY*ax{G5VU-Y5V!i^yIN*%xT)5;m63>-ZUX_`jeD%Haj{A=_JN*hF=Na#DG zP3_t@<7HEHOGJYku0{t-SE50@6F7`643m~LQ;^xof)*7Y{xWd3!Nt{Dj?W2T)b*5_ zdFfb;0Xthp10AZiv+F@{6_3)fzKiE7^HGWI=oVyE{Hg1U!yA6+2on&Yy<$MD*DVYm zxDf~z$+6_a&zcw19*T}4_7o0&(*cceE7^>O$Ycw5NJh`L^E3Xko#Eq-Z5ZNVe%^8GGO)8YKYsbG7r2QrtRs-#yucOGie*1WIF#- z@P1%r`7y{;8u|M8t!YPhuh~x2lmrT5hKc6?B+lh$?i49XybxP^EIs8rCP^cIn7l!B zNqIn8ApD4I&6uSh7$0VBKx7y)@RDmZ@HnjDTPhD=$za=`F=M33+%&piOv2A_vCQq0DELTy1kk>X_*Fw0^>HZJok6{5~@-z7n`xOpIyV zm>sa5#I>|i6Sma4fDNresTwq}%0a8bJRqu#!;@KnS9eBOohLCTYI zZs`q8@lYRU*VTkgV1eEfn5UIQszJ1d1YTZ}_~r1u18E4%m~|9>;{8c9o>xSbtY+73 z*7LKx{1+sc3|u)*w$(nyc%HaYJBW1e1=~!PDdZpAB%!2zJ)0fwn*J%rNycOWWRE*@ z=+WTAp70}!%XvoJ$&-}c<#9IRv?wDwauLsi$AW$It&%WgOIQO_R^fJ{<(Rv@4m>yh zx9oE4s%S%+ZM9D9Q4D#`scN3d^}vZ4p?F3ekT0E1a|pvn;^EHQ%O;{_VnML*{Uf6o ze-JWKb3Seh*5~FQcHs-@XxFLdPEq^hfJYcJ{ zQVyPhN{rU@YPwDp%(CNKZ;YXw)VGKFs`P+wywjbDw~|v1+@X{2!kW4zUf$; z0OjjTOFr9&CmNS?Ka4I&c@2zb?VBWert4{evF$Eg?)@q>>c=&wDPqG?9sR93^JuDYHfI!a^D=us0N?*u4SkgW$$GC-y3&CC-2jX zjvCQBqcjJ0VNjpRcIdcuL3UC{577G_ZEl?t2iv^L6ho`zjtosvl@xX-onzLEzNgo& z4m$}$akL|q2kjv4CV1Lr&!M{f?7=_g&Q0? zCn?=omssr-b*(oIM>kwBfl51s`fB?xS%kcN9_|Cjk_wLu%t6P}#kt8R%AKl#x}~2T}q@0uPV{ms(~ilNVfkw z?YQt1Zq%0ztFQ3v{a5A^3(iX3Ci{g2`z9zp?&H7l?z)B8oPPaLE(KVOGx2a~Hqd+x zfsr3L<*Okouir9<26t3XF+EUC3CtNS@OkxwWx%P1H%?a_-sBP53;7Yr;|wYoMU9wM zksbhHf+R%mM8{as0Y*luIsz8=tDQNiBBlC_&Lz@D(s=K|`_d)cW1s+yGuu9zCZymA z2~2~NNTChvXN=D@F3wR3otH5HLTs^M^i*-RuVONr$KcTSNqd)fd(?q}wtqSpl6YJ5 zV<$PnGSvZkLkh|XL2)fS&I0|km};5=_t;zO8lO}f5Zgx^08pz_Cd$&1eN5N zylWh%hHrMEgCkAZ;x*oOnJL>-$fDz2N98JfqJ1>ybJo4_fZ%ysMhtzSHvaK<6s>vj zYMV9`A*0{qeKudmXh%-NzmY$`cMM3;AECYduT(eLC_OFXK$A-iZrxT24)u)7b__46)6FJv!~acVj+c!OcqUg2 z54Oy^t{BTB-YA!mFd<}W6FI-Xy~i{X(=$+vDG$Po(G@WJoM3ifg;>I`*v(#MSy_tA z^It=}YUtx84%bo4Ut&(V=q|w&z7fkNi>KzBUZnR_Qv*>Yl$afct}|m`DT(D0BYNki z1kn!4Ird9gm>!DNG`y;$LGw;hI`wrLH3g_1n{qANdt`E>lhmk!<0Pk(qDhg$XgE1o zkBW_~dKy*gMXJ4KJ0~7BKw0S#D>sBo>dYVx5W|z!yBOP5+Xw-~sI?+to zND_%mPyXzP1dKeIcE~PD3C@;e=iqy)pa1^IB6&{ZWnQc9z?>^zdONn^KE~FI0hXNU z{bT>$&UP`)^KR$Z5;tmKwOKKOJnlJS(TxJwI@LBF(0@Y}by)YJ zC)x)O2BBre{s}|d>R@fWmEc6S=A>xU$xbKJ|Llk&POj^=eIHzy(HtKp7o zkH+bFZP%l0l`O>2esq5GAjB@Cb+0>`!lSn3n33a7*e=2X#FQ+NI{$|ys5*^koeR+& zEf3*?%8&Lm<%`a1+BW@2rGarJMql_{buUY2^KFl@aJ{zuzxXGIP%j-mjEVQXuVhAz z2J)#vFGc%U>}JN*PW}A8QR}VL(FZ%z7`m@ZH2fY;Xkvv-kXHE*2Bw z13ux!yG#fi4U;JeU7x%VfcFBU3Cs3=aOWOwAPnj=9TlQn!79)LF|V=`PBDsaE)W+w zDP+&3le+Bb&8P+Cef)<6e^1!Zhd(B~=i3X@$y)N3a+95mEyEmVa*OjEm>5S$$6d7l zsnz%6&(h>H@VI=8@lF_M?`Gg$+xbDkr5O5d-<0+PG=Go+aazzk$X>@f|3TT z)=?Sl+taJIx_1+LK+Z(;-9p(-Q{M#6%83LXRI6!f3c3f4=oZOq zw7h1d?^ycp1QI!VuWTd|>e zr8>n#i9P5!V=&u34?CjUY&rMyv?+lUUiau_-8;u%z$jORolPXuHk4j3-aKsF7*qr3 zU3yhxj}maI<>oOTEgx;a>PpX-cx!@{a&H)pUL!`G7{^`mRv#PVv|H}E+D#cjD(bc$ zM0*A2AM)+9l^>SaNSo?Ej~ufVAr`$|Pw-&-7U-osdCxM6+j*9Q>sA`VxYa8<9^H0~ z$2|DQBvyh4IuROQruBTvG3Lz#^{0svcezJJd0PYAGks?E~dUjQYg zr6HAgl~yW2-*sO`1n13h#AJrnOaC-t*ZrcwjtY^Y;@QSwcQQ2!PYm)aBEBRV%Yx3m zACIkvqRkiH3>O#1(cP8SMkfS(gTO$3jEy%NURhU0TbLSm8)G|HzAmkHzp6~jsBVl7 zfiSY1cr6;T^9o;I~dc%;?39&J0)h|obC zy6t-S+$$mVR4$)k){4oPC^FM1|K0zm+I(Djrm5-ZA#qQh9MbxsC&u>y-}aZ|fPk0N z^&YCLE_pQe&vM5x@)ddkR|l18t~Sa+S$lM_Ju-U3lN`uZH1!U}$YuYzlIOJ1p-z4Y zTOEu%Yn^=R#LMwRpR>Mv#-i1}syqabtIOr9jlRP9@r*tI(ATsnUfo7aI~|}>@5d`B z_OzPRxzx@!Zh!|-{?2f>UuDqzn3(d|5q%Z$D2LQZ#nR^x-$UJ`9vB|tmrjuxeWUGb z-S&||pAqBxTiI)5645$IBm8wz{s<1OpYg z#`U>uMCFDB4Fy3b()S9Tf7TSAi+3DT{W6DPBPU#cb`Q_4U~f9C7f%qbck@;S$SA@k z_%=^5>pLGif==?fu549hi{sAmS|_JHRDH!!sd|r8vAt-Sv6o-ZZ{0*QFxV~w4%z&B z_D6$>s$J==2H#QrG@ca;4<;H6Kp|I~KlndldP}Z!juNwOGpDT{#o%B0B+?v$BO1qi zndwtLWtxaKfi%T)jR<=jX#KmI~f!php(!fD2N*;9ej&ZTsT z4*4isR(q<~(K<*!3W3%9>h>p&Hs6${5Wc`?HICe3>?{5FlYoAgL>97Zl1X0wBfLp~ zuK+uAo%a8fP3oFD(^b<0h;5HAdg-mwq;gK@m*zU!R?9tvue9@~e@136Zav3dp9$wj ze()2be@TD)rIEszTY?vRx(R${t7nNwMX(S{bMzz{9;a^a1?-TeHL@SyD@kfKi0NJV zZog7AGDRF_kKn0Q-iuY@DM5o;o@}>QP z{6Us8^fC)gIEP2AYw#;Tod7fu=TVt$zGmC1C$E)w z^_sh}FQm}Qk+&4NN=K`83xE$ch;CX(FhpTPXPVhNpZf6TtRR-^)3(@-H z$=5j$_4oWAj;K)A(+|(3bDC*mOadJ(B{hg6om%Mp$maeyWuJV%4vr(|5W8as;B02d zvg+Q;e}#OT_=6tenyFYXjP zKQ2?N#*8|yOzlde(mm<6?X!B#&G(4KJ~=H z#)s#{&#ezv^{iE`j-$_!d7ID~q4epiZTAxZc^+kXi~gRsFK}=Dpnzo1MiVfK&4ZH| z83v|}bYN`H&H@}~II_%i-Jx%UxfS8^_)!}fs*>bi``-jj<|3p~x{?Kf_n6=Oy$$>@7(H)%R zjs7EK$%f*2&f>tIKW+~!r&1c;#KjzgKHF=R*k-!EanwqeG&BzcnH~Y`&I;-kX7FixmM>sE_7t<;lb7y37q>sK zvW~F0!<~uRRngzOEIRJ*q_O+ymyQ)Gj<)lddKyv z_(we0u8xv+VzhV+(pkUhFFU!U3}Wm__2&6~jov_>rRoRN9vpt#4l5_ju6AAXbJUwl zWDu&;0#h60y0qlOdLTY~zN90DcA(LfG%FX#jfmQ0%6+4-dfHvComI6Fu;j%YDn2f2 z*gVJ-2_wJg%2i+ZkaS*ZL{!M0Kr%mT#Ft~!wSF9J+RxEmARkktXc3i z_Lv<^j#JE;3MB2}w55)8#_X~T=_Nf=92X=RP3aU2ZcG5^)RaitH0!m4&FuAaiW*UU zzTYqbJM zbJBX_71WNa%jOd#F{eMC-;}8YX@Nza#!dT=@uTT50NJsa9@Nwp5A9){6(;ye-;hpI zPv4d!A?>sq9SM8h{DEn&M|Rrp6%EAsf+u|ZUd>e(3g-WXb_oYwpL~g|UH0jGP3ls7 zcFIC{dDX_8$*0f1maNlG-4=cn7!u0^c~m4mVg0D(xKXm2))TH|AXbF6TM_UTbB} zIr?rknd$s&(jhzUEK8`8VC>9L3Tn~C(u`n5!K~Yu^lfM~BWFZcChIZO%6&e0E$yOk zInk6rg+ZKu)5*zp+F~V=xYBHRXQK)<4nIJ4GIJ$>j6SfY;qp|jj`+M_GLhvg4yt#( zVyXxF<%45+4RJGowLV^d&+JAd!9>jlohRLCy4`dS)a&yz$&g30D@WQ{_V-?VI~9^4 z?gz+CNo(Qnf|&yvtY=AIy!Ff+&E_JKS&7=7m!!AoX_hu<$dS_e?R#)Z&fR5{IY)As ziSD`HgQ&cun!IQ^`axq;uPGcRkV{imHQ zI9y~ylJ{lGd#--u0PMP`$PM1BI5YA;s2uq@mR7mOE8ZFLYtA!eoqOs<@)>Vaj)9*a z-kZJ$;;#zd*N-vl28tV*gOdJwOF5FA?H1-D2stj&y6IZEe8D(#Z${X|v3wi5aY7YZagSQof;m z0U_JlnM?HSB`vu=?^nIC>AwP}(O#*v33qt|MhY`$6I!5F`>5`FEhVx<2@_AO@r%ww)lUJX0hjhJ|Gzuy%3dk0o!X}E4B`>eSgJaRM zJuBL)IJ&jikirEBS#|+gxU)z@UT;72NoN&7wcu6>tn4Wz+@qzYnc^sd$E#xINFGLo zt^s{B740PhY6j`mem&^gNk(mSJe#uQbxQ)|LNZq|N)|!i6}EGYunW>r8t~ea7<5!) zs4oS8i)7!rpe|uXT@;~dFM3I(#aHmmOOeB$SK*E-%0FFJ_6~~4SDT9Po^(mE!E%L# z3uwU382vhR*;s+$RIuqX-s=W{xjZ z$gtYq7IKU~zvs*=_P+8P={ci6;Xue)XeW9(1_OEy!_Gi7JaDr^Nsg0sQs5l$h|EpcCi38>{mpeoEoIcaP$$pS zY{W?iy(Gz!9&2pQcW(JGDz-%AbbH`?9MFp&4)9_OXv2GGygL4Y491h*I+X=S`kZ(0 zFd%2%yiu3#7BVX+sHD9%`4*i{%k{;3C!lP{Z;Eh=1AuPHkVqEIu04e!2Zv02%CE;@CYFhAvQh8lPYFOv(B->E zGUz(EB~hbJ*mDOX7b86ju!ilq+EAY}YSPcjj`KZ{V4A&Uo3#3f9(oz7KeAeP zX{8rEzWgs|V3Uql(!WU0&rIxfk^iTDnxA~Yw9G_?{qP^prYzl?#uew;W~V~EZ8v38 zh1!d@++&CS%eL}(g`o0@)v+l!Z8HnH;>{VB7G!M?D1}=1bJ-ba=AGzDKVR2TvNwu+ zIk-%jt$5LJ_$Hiodd9J4%ADTsTsofOzB955qi#cZ%M95~MO1Ow9Gs$$a%(z;YBP zR2R1fE#hJuGLM9!-ExGU1m?t(l9HNA0BF0{aSuT;J4K^bt4J<4+PwvxdzBhiwDbI$ zOBUoULAyIP9$X|7Avg780Pjs+?Mw=oQvl$CV97OUh!?#Rw`&8pmpnXW^ZIrhIC$nr z`t|QcSZP9_LPx@KI86sT?x4z^=a=G~{G?w^)}94V27V58bfoGNQTLL?Mzz z*z5Xjt=4jUtANI`=OR9Xi0DLax*+L$2l6Dn&ZB4P>KT9(09=Uho)C#8D{(>aJ}cMa z6kT9|16Pi`%W#`_5Wjh&LG`I=1k~0CqtH-~z92W_pxU-XGPCB>!cH$*tLmjn)aEd~ zsiUm2e3e`?;8P)GCV@Q%nQO^xednUJ<06$DcgMvZV9*Ts;U$({MIqH{?iH|^(Y2G9DjoY1kR{LG-S|B5Xcy^QGPfMFx_ z2mTB`DyGM^ENb|-F-_c`cztAL+_(MKI9|m`vv?{3!?7;H+G;$0Lkh8$Go2t?eC#*} z6h!-)Nv}qz{p0EXB(E%1wQ0D}+i!k2td-E*Tb7TldrhVls0^_y1E3js?LM}=B#FGN*XBrvOjPs2KUT>91 z+hhx~3aDh3g(C%0n!n@&vSf=4CSEE)6lXSJI*NuGwX^MI#Ynbp&Q!N0-cjJ8W&=pq zXn7=ktru@vtnKo#4f<_jV+Njy?-^dN(R~MLfD6i`9F^?7ZwjItiFAo4bsjT#=A#Jk zrps2VRkT{kU?nWCJxgUv^zhOuYO??h*jH@$=Gn5^hX?c{IMNuyAFi&_*QLAdS(dzA zRIK~3^2V0*N6_J9ch>fO#pa&1SzQY?8a|;4d+!;zid!T*p;0Q$q?vzrVSDu+fr7!a zz*$7(tmEo`Rk6-G&i#@CujukJ^P(qZUMk7eh%8BmPmI5WU(e$+XdEjUwZ2h2Il)-} zUFbr`Qqd8c`z<&;6O^;jT|TpJWY#En4iGwEKzfZ;gpwTBhCaSSi#&qabg-SO+_Ig7 zuY{G9&~rLd51ez)Z$hBibtr6%^Oq?vR{cv7u{Fc04~QqujWIxH0U3D4qH7H!QhS!I zA@Q-uzmC^t)1Eb|p5-VhhQW+;T(>$gmr!}ekbGVbC(T&&F}h>|q2S1DBqcm2Iikea zM(M20r-L2n$(g2b_#5SVB$A$u$mY z_4)5v61p37@^17%U`pV{=9j{=#s}g2^*lSKfC3^HL+f`Z zue99XzBMXw#Dwo8M=(r-j;IW^KkfFM-D?{+a=v_lH7^Gz4;Kae%h^6r3CmiH z9vCxDtkH0uY*29u$x@L^Qo&tS}>dCPtzmiAXr!K;DRXur$)r_0mU*^=G1 zVgBkk;x{2ESv05Vr5rXwef=Kw3pM!xp;}a{>>r`Jrno9O&rL=qztX^W`5*E zxJX{@QY%ijJ%R>rq1%AlcpwR~_1n^1An4)Cmhzxttzu;IU5X>$jK_YE|8?F-LpF+$ zUL5AL+G_bVa7Y0{!8)z0q-}-Fr20gW6XcP}^*r<0q;fZh? zo!r_G&axdCc$PT5tlErz{S3{3UO~9nkgQWio-VScOv6d7%M(S$d)1&sP@6?mnNkOK zg6p0e%We1y%{~kqi}W2gD-OZ8T;@2RhE@)h!D|J9CG)TfC!m}~5y>sb3{Ju?%O|I2 z)OX`g2d11CBPXv{bb$hX7Ty&D8*5T3TBS&-$vrp&K-H=a|H z&3`C9tl)DIy%mHy7^E5GX55P-QQ&9?UBZ(kgyhpGm>By-&{GM$`xfk&5qnU_-JUI< z#dPiMvQF+%u~Y)hS(G05P+=9gYMGoOoGwGEp3`RY5hBmq0zTgbvkS?baauOYu53<^ z6v^at^~_7!p|Lxrzm(l{0LYoMwap-AA#%oy3hXso=YnI=vree3_S5ovCbvZNII{S_ z1=_ssw6(xQhFr+b8LM?k@p0_QyH7KjWUkFh z2u7XYEHk_wDNrS6e?94-{rLF|S}GqD9jM6&Q}Y=4!er87*$Rfvu<5k-2-{X@8k<`A2RN*O zlUwT))A5O3gKkA)9A&&KPXz1>Q`pwRO%*wFO4P~z4jW6PHc1Rvqd2)oD+f^?I2)9c zvf2R3qqAokeMK?ory%r+9FU+F9mBxt4lM4P$&G>xx#Id()u27IRy7io>Z%nfffta; zId+B|K-Q#!lNAB|iYg41cpC;gK|lO93N{OeZE}jY71;FkLF?0_e>>yr+pGOew5>fm zWJ#VyqLH(;jY&bx_)^Ugq*8Q_ex6~q3tqDrk;7X`j&{iP3MVVQ_Tw#9o4a&)(+q_M z)YY%~uyNf<2h1az=aS5NJw3>_J6RSPEi(`f^fTj}WM^(g%W@@`fR?jw`R>3f62+I< zw=>B!{RwNz&hPR1DbjJ$-ZvDiWO!Y*%PjUpbwGzuMA{_(d}#mNJEYsyyth|`56aS1 zG)!6DQS3g{+#HXnPlCI`mOYC1+p=eSz;rOS}rvu`Q)Vv_$?@V{wKBVFrd z8Gr2Q`m~k=OGX?UB!R4Jt0-A_OLJn(hYR-}NQBQU0-n9gpF7U=qi6`oy`1<89b`Kr zr>-T*N)Z_^yq6OrSIn92Mel{oS$;i!J5#edCu zlOL&kNzZA6@|;c+<}2R9%8rcq=m9ZCutf*I7D<|(*VLx=%?WeacZw6#ltkmO9tlXR zUZib+*6}1FSH|5=T6?j0q{wKr7(sv^H=TS5{plo$?|{ZfA?27Lf^+tCqJb583k4=3 z)K_v)2=b<_iZgUD-~_Xl?Z`mU!Fr9-@{YYEa|N+GM}xudwp;)Xoc-#sPFlhhdf%c~ z^6+6tM)La1GY3m-@fZV!38-UtpkW&`x|okjkYpT&)$(lRXVKU}mGC8fVGkukUoh`6 z`*CN|OgoMa%Li5kn8ic}%jX$g6-cdLzRpFS?*XXkTmuT{y-Z-b!=Lg|6&?YXBVHv9 zk0R20@B_NhBIIL~WJ<<90xDXsK>@Ou%!=jtnlOv0h(qq;o3$+RYEjQWTX*x-8!2AN zp=NY@C8F>4>y-g1w9waA?6J1#@FS<7&P&G6Ia+Qk9gxme@!aupoww)i)07q8k$5GK z2*1y3h{7%J0R562U&UhgJ!)m0$kJk5uBKzVKPMuUPEpxMERo1;05HSZ@&^n+pXL zPe%Mazi)ENu2$Gb5)%@DMeHm51`>G;N_{T~CGLQWTe7E;Ipq;PU$ELR zDo?OY6~Go^#R<#)ApeXu0B9~Hg9d{sKOYoXHwcQmdTeMehTuf(awGv+-+Um;B5Rma zN)Q15OOaw@rxF7uaw}nTfV=yDQZ zxHTFJ94U8{Y&u})!+U$#HUm`Lg(yj20le?K0?bAirf;J7*I?GceEs$?=}tDXZ0a-M zFL;-?%#7Gg1(~a>R(y$mb*)COy$!*J-LQ{!T(Fv9s=M<7)?K%vd&htWMkkw93|i?8 z#N%3?Uf=7%xE3=t4)SA~6>^Rl;j{JNT%hAc;4HclmHA5uz`JN>$k8)094KOjb;XvppZ3?h`zXnEv2kNnMSoB-NM2=DB?bUS zaSXJVtzv<#g8I4Z6)~fjI!-&dQ%+VavAo&e(oL*v-|5`YdHT8Yz%gPlAn}6pV)-aQ zvR?|h==?=uD!3txC3~a6h~n=$B|fi#-_$N1C}|U8^TFNI`ZaPrQn}zcAaBcry zt+VE7S$M^S#dAYuYYn-k!C7`-249|TU+*)j^VDvuiA!!iAUOtB|V;n%c84kZhLt3sTYv54l_7e zJ85>i*gu?A6nDiHKAzzwT@89}zmWx9A6FOS5AJKjmvDLX?%wv?cG4YJVnEw)7@t#t z!10F*()6T$9Em;ro|ZX?!t4co@U?HnC@+^~;#zjne(9n6*s!^lXHdIRD@LW(+SZKT zKCpOQD?3ih_M!KHbwyQ|ca|=3WdV=@A4GGo`I$DPqwO>OZ`)+=%cd@RuG(W`yq^FX zldexoHxG``TfJf9_4`5$ji5?75iQ^7l zb<%xMwYj80MYoDvVE|?cpW0N>h#CMEEo5(HOTi~+?_QGTHkhWMvBz8rw_rVNw{bGR zMs1yNiTHsYq-3mt;whavNLM@UOjp?^oh$qt+sh}z&)7lP#-g#2bGIK;JOl4%HW6mp zWX7`kh@6yYu2lRML&+GpYOKrj&E#dhm$* z)z*E2q{7F9gz7KO?_gOggC^jK>gHD*a2P(?cq);i<#x5tOWR7kG}Y{6Q0uEzLd|^~ zR2@hn&!C%}TcxI!ON6cpT7EDg7}METYufjwze-T0VC4Hrn@$8xUbNBR=AkpUROP;; z!k-Bv|8)Vn+C9l2<`E+(_kNcvMb&*GVcef@;u92HQ4!}3hkyF>hGP=dlMBb-pzbUT zemT%&P51Cq8`?=uWedFtf!R(U0r$&*f2m7%KO_6KEg({C>PP8No0l{%x>1G`K&CMR zM(~b=W?m>v;)m@68>BCL&&CAMy1B$M5U0H2EfC(Uq#R|x7CL5_ts8$9O$Of2(u3MI zj4Ghw<=;K~@100O-WKiCzptxJY8Ag(3iPr%iYAwv3ph?b*Z-7daBYn7V)LZMb;J0>V_si3N!5)?i||T}wZHCm=?`>~)3Mb`PU-G-H{}(&A^GNw zDCM)Bg~Tc=~4R}Q=YH?avNpXz_pBXDU7d9_8WLX2Dkl$lV6iel>w8P-0@*Vk0!Xayi z>mz@X@5)M6R?(GuB4|2Xemj~mF+nPqZ3vhmCNdctF;-gf43I%jNK7{QIkczhFXknqPVb2_9Xr40>@eF) zCfS@}t$k-n$34}*`agF)lF0I5sB51MdXJX_z3f<0raLuJkN(IYp3n7KIj{Xp^iAjFV)CD2u9vxy#a$SgVVp`FcEh2$x0bz0G)&vguE*?m)Mz(`Bz~f%sBVY8To513Fq@^^2VmS z6(e^q66|`PG4Fk-jf-4dMzI%ftXPxLUN=qT%?=iW)r;~$+nAROQ#Z`_qx;Wyz(GA~ zqoPRJsguuiQt4v*CYiF&Wue;^n|BGn?tKIr5QF4qBE8(BVY` z-^6uAzTo&E{DAniG0;KJ;9vAO1D-t=Sgo)+X$?hYnYWv3O77Oa0~G&NBRFcN{gFpO zVNsCrf+47AD9O&dqw=|R`_?VTD(Pq*YP5221*hxcIcPOLoFdq^g zie98x2_h2@FS~9+ETLInlMR(#A600vV1y8@antmPXkdg&tcK+Ab|j8IcI z&$5QCeS%){wt%H|yi);rKK28B~^~&1(B3tJ|yT>nHGAy0kR>igP?Oh&wO_^jLGiWSxpkqV$ zN#4Y8aU``|!gK+i{4Ds~KK47(#`4l<*%{f@jZq0=#I%-q;Y|FWSL2*@dTx}V8>SLa zJtxdmhgT+LqZD>6U+WoB6PlI+13tx!Hl8(mCx@eE+BO}B4cZMF{H{XzQSXHwyz*ND z(D8v(TYAp7d+^{#qK7wc^_sUKpQoSma#+LxVa=5n{#;apGfF;`xRwA&K)1h5(Y9E4 zXpdtcreY!R-xP1sKFChwd5q{7LxlIXl4);GY_^Ko>ClBM&tc7ouk#7Ws!Q^jv;4U~ zQyyc&F^`E8xkB)l9Gc)q63&ODv|#v)<&DlQ+p0iG$h>fw8q(wTfkv zN;d1ScllY--b0I4nj|1FT~V4wR5bA#{aOJk;8oMnJjr`T!_`~^2#V@PvP{aG8{_k~ z_OTIfUcoY)r2R|`(TVKzEkK>M%Hx#l-BdL`C;eG7@2xV~aM*NGwkK&F8k&B?I|xFIP;z zS;eDQa6ZW|3j+|pnN&UnktwSzK5OQK>^Q-G3Oj!pdd)&R%^Cw*1g2!u=^W~VVXVDe z7c+REM8UQZ=PqV7>7;4#$5uX5AqCZW?~zO10XvNJOAmyL-%BfZOgn0+R9+(n)F^MA zvz7xhS-gq?A_oSUxOg*sCulD_5q^W&XJz1%CS#Mm*cpMmd56l}GM;8Xo{{5O_KZgn zBQBjzkyusnze8Nblsq%(F$(-y0`!J>ZpS`<3yx<%J^czq55*~yKNDN1Wm@0uC1oVK z@<|`v2nN1pn@nTu7#RFvMoa z+1863BZFDV59k8RyyTbmki^{~khPQ<`{C{m?u%HIo2~1sfV@&(aqW&NjZkaYhG}tT zE1}?O$1K-l@jAhIWz8b=HU)4D^7)*iVXLxN)liRTkzgO~ z?B5lIY-& zJF_wPc&_&y90jwM`iZyHS%$}&iAEMAPWEFpvuNmIF!3$>UVZ8gUW$R$CuRWYQWR=~ z9%4E9U+>wBeY)O8#f5U(1TAR<4l0DCaIlfn77(`aoQcW(e9a3qftUUo{`2WMKymfI z$|YX3bWF+qcf-meAnA@POhemB%kPmZyKwR!JX{nPgr|xDO;hb%i#>*UBT|dcddVE1 z!VI;F!hy@Wsv>T}Z_%z7f#0W%Hh`baWYu zD#CL4a4wm$@SoU9%fZ>-DfpEwfr4BduZMS1>_;ZNm7v;AbOAISX(7=^j4av{e+7;( zAb#!9^DS?9Ko?lP1^5UGLOV*Dkpu1g}Z#Cffk$vc<1Yjhh>esr0$Tw%D z^EaUk{-(`j;9Os=m&+X*I9~tIe!m)A#JgUfJ8nOdY>Lz^XsLYlE$;Vd7<|nmAue}Oa)!l zLBq&4cx!J%u4FvtxR)QF`&{jqs5qJW4>+Sht2&Eh>pW{_!9%k<-c0tw0_)8rB)ei19Ve6MICvGxK*mWA3DxI) zmL#7O>;oyxh2IoE$S*UFdFvK7V_4{L7OkWMw(%bDndmHpUY}Xa*Q${1G*l?bSdaFL z-YZJ4+Cra8mdhvEhT}6Ia9wcypl2Q}BlB*`m+U2<)#t^Sz%y12h*4O@%A5>R8cbwy z^_?8e2gs;1x#SGRJk0o06H!Uao6vN&KGhZ=Mi|6ai|C-jR2*#&RJ}uK=^3(#3#dJ9 zbCU3%wf;4F>AtYFMPk0KETUM9jMGjzqP z5bZ?k*Ihxfajy|*pOmD9MS#cjc0=VQA_8@obnUE8Hl`}XoIO9Uh zAxRBHYd!j5=qdyf=N7YTCe~pTte?ly+~jLvQ!6+u#;(v;kXbrU!emB;X(1XOJ<;8S zEqj+)26vi8BoRFQ4O(Q-)<1#i7HoDr~RWo!BCUVK^T`N2~nx(P+p3lVdXq!ug8I#IR+$*N%!-Gp+K)re30>@dSxY;vfFhEurh|em9NM}6e z-~ooDO%T6?C;Mc)uTQf3j2kScDrQRl`g`dV!l$;Q;<|W7`GYCZMM&pS)ZV&!@Ob&` zV%{}jBkw>hxthY}&-Ptj?ICd1gZm{KuNnKAxlg(pAj2@hI-e0Gt;uOxm})efXn|R! zM@jO;TT0wnWSCfj7zfLR4HRbB?5k+!vlE~RATCJij;ess1yXsdfE~i3OBJrPXv;eV zN-VTIn=T#!^+_4tQMw)%;ZD~>uQqUd28+hedyXz9zZ|HI=`NiGjgnm0PI@Gg%hq{5 z``vNJV?OEsIyjnzbFk6$W=@ZUXrnMnyRovZ8g<_&p*;Jl)81e*!pj%S+aXXbz4tzp zoOLNPV*1$Xh%Zlj51#M1gY(tkrU0}UT-UfrH5jb-#iuhY!v6Z5=_M(^d!^rqUYn6$XkC3bYN+?T#fKe4UhxgK|CmcM8J zk{e3C%Qjn&xg`M1bHbt6a8>(`B_+NX^gOeSo=7?!)W1pCt@LFKsVyboJqQ{|K%OsT$u6Xirh^} z@UlqFyKrkoDEwb$`LdspIJ{vB?vw*qw)EXv79^cw(87=xOjBEm2KBfVZ(Wosl+|5c zUYc$n6H5bRFhDk$pWh&ea#JR=QJTa&3@Wra%k`S6$rr8W%jb;+jZQ*sSKhSIId1D1 z$-^DI1eFdv1=qi${kHCu9YY{Zr4(3M6dEVw{N|A4!Jrv`dn*GThwr~v&~kbW(AtMc zlp<%5HtM{cj{^i7+N~7UuS!y22X0)CA%FS&=1aSueS6_|zQ6FpxAy$~^xN0>H6QZr zC*ZpoG?`8(+;5!VBRM5q@2+pZ$r0Kbyk#A9=BuiFgY_}4dVBy__T84xr4O}ySEG_K z^}%R!;ze{g<>y!z`Ead3>%oL%+NGAuP-5vG@C-d4e9TC`bRxWj5MOV&L^_b2_61D?8 zrp1*m5dA@$+ULP$CU5-7xa`!YW9Sjil+*0*ezdcNZ|0wrn_(6yf^+DF&z<=EtG~MO z`7a%xfAeJ!@|zpK`HRo^%Rl>!Kl^uoh2Q+?XZ-oU|4p@j6^b=L8u73bdqmptOw0A^ zu?zY1a>p$N*eWofv!mAZ7vIAfTP`U0GW8CvL&m(Ik<49IG|gCpd!Kvy_s}%a$XKR zxnu?kW7#s7S`&CR4Jke_VyZkf?Os6E6EyP+Y?=?fN!QK zJ1F=KJSTcm_b(^=6!9Qu-)a?ulFoY6$THaPzBK%!pM8s8eks`g+K<1%@BSzk{YX!S zy>KaY?{;%MGL}K*X;YTm_;fgZ+BgTLlO|=_uF`qlDpZeaI^uzpG4|+li65%Z?8|f< zIUe$AJl=L$LFH{V=e{**7c^7ZFm zin%}kcfY}({_DSd{$2&%ngOHW-vJ%+wEm#u_1Kf%H)S#FO8)cY3(m0#!K;vE`>02Y zRW3B-n`8=J@nq6JAI{5l#6^aXcZQZ8y!DV7gJ=28Y_p-b30h*mK1(kBpjYyE`LT_| zwwNn+XKhm*<~`0Y0z7bMN4EP1MB;Ugkur-G$ga34$!O*$>Gk4``b~TM_5b{@{K&`$ z2gB<9GD~p0LA>kGCYX(h3nwnPllkPj<{-TBGbPQRcOoDobtYN>xL95F{|fgdN0-xw zs7Jpu%F*xFsa3o=1)e6dgRCn^Qfh;18QEYF+=eR8beJ^ud<(!QSS^t@e@m8s?Z=<+ z>z{nWAN}wRe)*#dQ@v^6`4f{~S9(pXa@aQny`bp}7noNeF z_{T&S?BqWj`&cNkBNJ_#Qm6evdD`13UsX%^E^~Ved%)P*_z~X8EzMfCtn=>^ho@{n>-*jd~^R6qs&hktCZ17ac8`Cc0fxg2&%GL>YCqo?cVLCHY zwy=nh=RMMOBQcooGGag4WNL#)x-K%Fyx@&InFhGpYr?gi#^4?-ziGpDK4oV(>XYf8 zc7#J4!9lS9?BD*?Q^@`MfB6^qvw!^?@JtNrr(qf8-(63Sjpp7wp}~uDc_hc6CndzZ zOOcN*_G^O2y9nImW6DF*)%5|x^|W))yK*Uh&?K0^&lw4xRg*n_w(BK7pYGNZCQRL2 z)kzu=eU1nF*E}CcR}RP;#nsjf=K=IEHv7X@0cQ#ufEt|jR431b@%8nch*3TU_WnI* z80tn2Dk%0*&*Jn+u2{>p{9x5mL4FNcUTo5xYHHB@bWaAC) zBo|*xp&h*Q{K7@KOl36yN*hq%%uVjdyHr=Be5iWyL&v9R``U~2{g-*#zxzAi;!l3@ z&9fw`GMfCj{N@pp6LC$pPN8q|A!9}*nuZDH(|uD5{P2A`w6~gMY21g!W{`SU5K43sBGqU8emL}&Ua+qoU^06nu} zC)y_t_XAFom^IrR<%711q;aE)=gnjvab&+2%#b;lAZYf9$m-uALH0lO3!GAnB5LnBmmw0)5#}G;dbZA_N$3Im8 zSHXN#OYYOqOz5fQG8lCrqM-$yTpDLs_-@!nRbYHsumR+#)Q$={NLhfwrPXr>kUO8> z^FncVwBQ*!l@c(7vZLhInXr^35}naqNeaSB23CQOa~ItML4_X5aCkpeU|NY6UC7?? z%$`5^GSl`CfAt;y;K!eU$t(Xf2)!Vj$0Pu@8*H!(4#5x^kgU32*bp??V#tE&;G^5` z0sZlJ>*s~dqJPqJ&xAQ#VyAuZ4D}l3MP?m9=Hnm0FS!0*2BaIjlN)#hj$={f{$>gE z4g9=TBk|O?<2>_m(w%c)g}~`H>VNZl7K!})GaJsQ`ca)txt@wqE5G%P{*x^)Jml+d zbO8+8sW{}Ad*B|sE%a6c600-B7a+dG=aBRqbhO#NP1+}{;>PnW?_9g(P@+mUhrN8Tp=3XD@BnL z-=>Tp1hx;`b(xf>9_t`QI0>H>39#sti9+TrwDsKs|7e$D_uc8LT_GUifMGC6D>Y}0 zfkcstN!}9F7GNb`0LFCA;0yW9$wd3H0T7-L)C|n8;_Yw!&NukGzg&CUFw`|gwVxmx z;4@+#dx0Z1J)!yzW5@5(UkdF553^mvbQ#UDeM^!Vw8twP$zS{}exBuFlQF_m1tOtq z=Wl?=#7a$O0j6-U>(F~tIb7!0Kfm+r8;0yzXS0yjz^poC8YOUHp4XYE4DkB=wmu98 zxiPO34NZxBO(FT>U%T5ySl-0fK z&4%1krhKjThz8TSYIaQ>G)cO|&*!;lw;@jq+4J)S2fYb&kN32l3ji$97X`$!@?}d*BX1XS*wv2?&S+kAFD9nCERM1w*NZt#IV0dfeWD&M~A! zv@M1|K<*-%od@Dem4>Z2Ivrc$B*lgO#PTm>Rz;NOi$1Nri+}s9yEh1dpxELNha-i~IUmWa39s!E&s5iX(MklKMK^g2nfD9^hFPm#%5%^20 zcEH)NUCv?1Z4UNk0OseXHB4yGb?iagvC~a>dWqF_Cc=xj=F5QNU5Y+vC%eB$Acmd( zDGy8@hYZDrsh`NW&Ufo7Sf)+bjyrA9powW+ju{*hfV5|LfXFS6cQchXsAsZdHit+;_m6V`#dEk+oZXmLe@5Qw5C{s~sNOeai)Dbp9gNSFmaP>`WM(mwGW+LU*mt}(5Sk?;Rx%i@UJkoJ!LY(lumt+i- zjDjX9d~oOwP@={AS(ahr$LoC3rz|ucfqcXceYhXXW}Ua@ZP-!c^o>8kZEtYeeoo=) z=j4g`5!>Uwhqg@r>-wvZ`#=Aee-n4Fvi&W-`)=*r3m5PnTH>zJP8g8=l+nHlFh>c5 zW&Vz58^Q77iIuOkXZiA6*Xujq$aK_68s0tO>$aLc9DvLv0+eIZp?WohjH0@S+%7xS ze%Rt2+OCfc$QCi=BJq@Z%Iv%tXaxwXpsKSdjNi86YEE>O9Rvk+_i8k_NYH7O*}O(k z22q4M{~|aRD(UIy#G6Qo`(~SrRKfhpX=NDoJspCZ$2B#Gkl_Q$cNs?mkMF&Yj7AL! zp8}O**Y!=hc-l-O2^xB-!tnj43;*QzzsLXZpZ)mR?>0be$7Xj0I%Q8fr#20ao=_KZ zVRg8wqkGW<>U_K2j>Z>Dg^r^mard0Pk$xa6$-oDafBM6al}j?Az`{X_uM-_MZ5B8V zp!5Xxz~&k#ghXrlr+v+$Dd}ZD%h*67YosSZzmfekF%90`Ph?~}j487XUVJfXU#95< zh~%-sN``@R0`@^CU$;er^uyl14tKhqHtE{9Vsqo(e5OaGGulO*Iy7Go0&FHGPBnCv}fbb zA!lI!{q2`n{kQ-5ukhFZ(a-VimqEAJKrB4f`Qf*&vb31AxQVaykIQsFX1UB#PIvhw!n z(wW2n?@yxf`MmmkQ9jL?>_AZSk@Dcjh&-e6gF{lEVsySjf)VGr(?~ko%;%`p&)FXB z0P;YsS-|u+CK^Sk&Wg*t58~>u$>WU4LlEkBIXm*1JP*NN` zg$3xa$91M@_6K(URVE|Z+D=zB+hT(s@g*_2JS59-coUlr=OiG{^OHs&u+e&} z*opRE2#n;T&VC$kG(#5bzT?T?!)|S(8Ich8{u|8(prA3y zpHU>6)1=+AZ9!qkus9cBlW(!dh~on;KKh-s;Vk29SbMw3nWwGJg5@`V{u%$z z|N0;BZ~w2qcwX~Wdj0HARb<6;FTp1tGBC-4gqD5shOJ~E+h1lQ-sJVBdGjONWt;-A z+Wfxv<-t!DrWMzDADi@n+8uV8N(Z8;Zzcd8)FZAn$NG)sQ3nk;axzMcHSi{cv;hZ% z4ySzfJj3~ZJ;>J@{q8MIY`dcz9x`~tm;C?_eHQNsZ5|cJ>g6H4#Gub<3JHcn z)4*RhBlI2h-l!X%HUIP?n#T@d>{c0ihGkU2Rn>wqy5PYI{-lfe%Ve< z7pwV~Px-)okoU!Y4CalOJI;s5ozGGnBNvjO%`k<(Y8!qQK^;Z6on<-T6@io-Qn5~a z3o|x=`hdwaqHO?pBcrlcoylf>%>I=W1NSyjM|K&8j(oLT!qmGp-_xf_H9k*vgI!i36DTE(Cw*$Y=GcD5p zry`=Qzmu1>-pN)L&AB*k%D+fShbuVwW9gm3G33?NC*<0~rTP#X` zd0NM8CV*z#=$S7(D3bwT8KcG;erBE+tqtC$z?09dvzOeFl9NC_0+G{sC!%KTTi|<- z+hVjMLci)NM98B`VyJ|}k|+h3_F?4n)F4hCy|8uGKm+&*yvAcT0MdEs%ZPkm8&f@S zukTiDzn*LNH@}R~{-?kB<9aV?(c;*nkCGAm;*g6>P2YDL8e9obiO&Ro&Ln(H8HQeQ zocVbE$SLZE6yNs@-@siIBrHD^Uy%a=$7I_7hso|}wvTTJb3RI%k*TeYbm@{(JcKf~^KEL+e8QZ987%wO7I~=+nN}K<-y4S;gje0 z*2dsGRals=v9=F~|9eN&E4uymqU8$>j|!GHIgdCcz@5hb{N(I!g|;s;7g z!IfClh$!}KlWPlSU(?r;V%$9&c9@BB^FI16<(9a)E&iHQ}YwTmuFt z8VU})OuPDgB)wrwaIL5VZ?@i+QAgl@y;LP%7@RzL@aUApQf4WJfAXbx`v<@G9r#G! z-6Bq$<2uiz6T?Wu*6R)(<=X6gQZ}Ev!;%5m*)pnF<~v$9qb2&C>2nSm&gQbs3KxJu zD(i3-nykAzWzbokX*THK$CvmsZP^cPJidH1^S~cA5>qy=-^Ei0!gGOU%AYG;r!Jef zknl|7Atnn$6_g;(iGY8;ldFkC9y;+??>>BIG)_3mPwnVKCg>c;nK6Tm6OHu5`w$3}PM9&K~99YsHAJ+-yc#qa;!AD+L&`&^f2lf{I`Q{a6W{O6sS zp8}G5EmIrK5UC&W4F;WS15(pPg;#grPuHSuevbGfaXLC?fy4a}Hkw7wl~j{$%f>BV z+mMXpD8W&~DAdt-%4GR8hK@LRPrJBiBxH(YHHrHy%~k)G<9$w@Nanc@{e_5`iLMKe zp5|qE)3_TB?Rz8P<&q(gp&|Nk@I&Cd`@~GV5`esHt7zt1u4TA~We9!u7;k(;(OBSI zUwQR9?!x0ZO(9v4O;g*jAs^-8pM9B1mzxy=-WHt3v7slxHvYO%)A`}?wJ2xgP-DnR z64b7?(_OvZB-qS|;`F|MKR$B}Y8yhEgJw8}O?#h*YkwKAP@qV-^3cxH!De%i!$(Ph z`?>geOUwuS@-~MQ7tZ!Y=WpU^T|V$LbS1y7_Yt1>@LT(`uBXhVok&3obTT;@lnuT* zVL^(IlEZ{C{BQMreMvAJ4=E$mPbMR z`+xff{NX?PMbMx4X{O90a@~+3y&U@We;9(rd0sx$_}9u7`(`BpTJ)Ek4H&Uy+FsMk z`fEL~|JU_l=PUI)cp3De-S}om8-rM-Z_V0z@T@VKbv5-f_X*E})Q78@=nTpT9oIX< zp9Yn}yj>9-5AROA)FbU>=&uT#dx0Q!>7wLLnm&+2gyo?jdDffv(t;g>FLu6i^Vv{H z-faRZ;?@OIx`P+FxphX5qA%cr9d}8xg26D-MZ4plektDm_~+j!`7EL-uE{IGWMlC9 z*ACtMJuE-iz==3>qSJ-gnFzQ^2mMCKfp0rZAJ<^#CL0fozyIiAkp?Y{W>hxlY>Gz! z@v-5zVC3wwD+$&lv7;MZE7|!b$_iM_d(QY6wEuau-^kNfihsHR=rl7oI065hGjcpm z(j5Tm=k<62KI!u{RM-;2l${UI)i%kXnYY?UN%T&b^AOq9_jB=9cn&sfhtHMJwAInB ziAm;{Wm0WNdi@eO?b9(*leM z8_MiwFoe7vv@fr5(FEvoJhN)FbZ9iomb1i}bL);&40+}WU&YSFOI;4sq)Y%al8xGh zlTE5dAySI(@BD+}S@Q4G|LkCLE&9;af_QBML^@#y3M2rHzIndxWECZMw+Y+$#6zg< z^d!S}a2KPu5O{O1Bf#?vPS#>GaNBiYETVS0Jqxx$=QhwCs2%w4#OhlTTivbb=LYw^ zAjqD*X!p;4{UiLz&%YHs^Sf~NMvp?@yb%25ZQf@f)WxtRyt?K@h#zRKHeTmgv>a30 z8R(H7v-lZ!Umy2ysCBpSc58wbXV~&^(UF9ml9v>DC;FH#`&ecb57a!gE#b{CVt+Wb z_m+jL-+!R#eI!Yr6^MPGgYHsvXN_mWhJ75>NAvqcN8-)k$??o^OtMA> z%J#b_-EPBiVcG$+V*}3+xAIGHWIvznNzS%T-FJQ(eX?ro(4Fb!bFtT=JST$tuD&k%< zaZdqcUF5R7ScBWlSlDvPGu!9ZrM!Lx?N59On@c!Zgf~CUkWqBVZ>KE+)8<4p4#^8P zjT4JFW528b7xdD5EsYF!@oY`EuUB-f*={E~j0oE4<%uHjc?^5?-EUae9trD_6QBa> zR&@GcQ1|SHH$jbHFr2c9a9VMk3f{g0%uMBk`7stF?NL)3>-6HB&{-+^-6QQhVI46m ztC|SCWb>u-TuPiX5y>V}X4V2J#X1wFDep8h_k!`-@3v;%94G#oAP}^}<&zRQ1WrRd z0r>zy8>qjLU-+rP%#^y7D6d8ixmLWBg`23rEYP5T%BObhKVkpkkA93l`1?O!_+4#T_3L^*D6Sbdek%?ky0%~nb?j+#LHqN& z-jPhfg7T#ey8wMpsH(GQb2pCc-{i0TZix57t~xGmZiFj+*zxv{xJitR*>BeZlKPb# zQ#8cqCclBaWRdn^M)`nbowBTsrgU(8;(AK*vAgVzC^$ZnBv1lOt= zZ@4Pl4++b~Jr$O}NoqLQ=)hgchT)Dj^+|E-1pA2FI~MU%1AM{{;HM;S<1>F9_rM)| z#@R1@r|)z~LiaZ}Okl?3H;3VEp*TY?-yNMZY`kead9=x(Y2wsn@D_T}N=kgE$B*pi zWN*^f^6C6mzXkt*KZ`|{_AX<4i}ysEY%enUJ$!%q!0YpufBci@?o^R?{8%xEV6l#a zUnl#n2fp9l*D{!T_mjPn@sAO`>%qC`8x@@JQ;bc!v(5fuPuktEi>+(fS>aCm%gLUS zj}@$Uk7#1NHKXV$=b3%Fk1`K|oN{=cOfYd__v?pbc~JQ)KR7|lphm$B5TDr%bqMr8 zaoq_r3v!QUY-rVn0~JMF2OE+pVPQ;biS+r`EYsik;T!yeS-e5m_~3++doGMzl5T-uy|f=05E8dPO^!j_gz@O6?ME_2Hx!aYb zNFVVkKW#t9_-laF;e!!$%t}67$U=|YU1UHmz0T99tza=J-t>ZKhczj)t?)^-aq^k| zR(<>cXXrBJGK)CI=}=og4eT<`_onzriZO7hqwwcGrD#I19lL#P`gNuColVrAsXT1! z;AcG8dBulqoc`V0$oXN<>%11bo2`uYzxSnp`}vpIIN=ertor(WkCFYa`$5t$Ym6!1QhY44GuuV-$8VC42=f$ z8q+PHXuBnR3NZA=B68OKdNehc^e>(2@=k;CL8M+Uqcv%*%^m%=iJa1hZL^IDejsPq&O7O&Z7A<{Zs1`CZQ$K9@-Wy!B9w0%=QuSNE)*K8}PPZ;_rlGZI~b< zo%qnQJ`Tj zPS`OIG&T_SAxa9=w&|HgCn)ggxl_U^8)BjE&8i*S@+#0=WP{?{J2-N%BKr9mV(4bA z17HuXIRD;A_Av|Wt&8jpjdtoc9}80Wt!Htbr8c8Gu`~Ih6J-m;j&$V} zA98zlv&_Z>#>KL8gA{BBz1i>ujt`2*1s(U9hYgb-e$~q^wYL&}E8GREm0#I3v2z&Ug_H)Z3BHZK)_VEj#!)5+)I{jj4wNRW0C zT%N9k?4u8z>cYoFK7!9%`R%L<-0~maFWcP)(dhil6!5W!kztjrtGaM0audzd*5?fc z^f8<}waV?;NqOd{ZQQGfcz6!uc#-xGfAuYX_{NGIVT%msqdKeJ$4ZW}g(+A4>wEOR ze$1s`kb%34Z5P&PCbDx1wk@Nv*G=H4(WR4|y~I^d)JJrMq}KBt+uv_;@=lJ}d?la9?kUnte9k9FxR&w0^c;#%k!TVCRO**4BR!BvMP1M7zJ&elOk`G0)p zCsyPVF)w+F%-A31=hThOShBuf#7ELHVWvsEX5fDBZ~v@elW#r0ulALf z*b50#_c*piKA*RG=JfIG$4=O>E$J=dO0Edsta@Sqx6PwpZN2ELWnM=u(;{P`r};%4 zV1|A9+C*oCpWw_Dt{LQH!UtbDo`KJym4O0P0OwomGwDkQ`fdk!_U^i)rYC)z&j94P zCOsqF>wiPd+Hs;#vbtE<{s>%ETt%=UcMUoQdia(gyvY*2xj5?}UhfeAS7$CjeVYyC z@f0Q{_| zZ0AGI{uP?}S%=R3I9W^7)?mwh>XU2$2mBTdjXFAA&!bFp(-+#t=^UUmWPo$1oeZ<< zK+XYB3|(zofcT`tq`;o>fpyDz)8M=JQ-)n&%$UQ+-0m>tc8&fIJf*S@Bz$*AuD#c@XQZ4BktH9er!wP%!<*uIQ$w7~OEW-M^{p}T z82l_Cso^C*!L#)SOVA9(6;oF&=T+3bUP}KDe)a93YUtbb#IS|q^^|sno5}mISt>*O zBpsXFt#??Rbi#q;cqsDzk)uKb!Iv%Vhkk^YPM)4Y#BjLnCU@Wes^15Ro1LEVG2VtV za1oR$0Bi$ZKJ9OU!W*JaKZ=fdH|ECT98h^9oX?}GMh9cgM*x-ULqa6pJu*dP81nLQ zZ7R zR{tq`Mr0`;%)HmL90})AK1GI;PMb8@TbthFc;hWw3E)mfY1Hk#7wf^{X++5bJ^EYx z|LC0WVPN!0d*;pk=}W)<$G`Zpq-wER&{ST$S>DkFc}zk)I6U>_O-1JD!r@{=Su~_R zjTA34q0C%3SH9Y7@z;6yIj)%D9IrUy8FwoJTm>ub<7b;r(2E=~j+eSd#g(HSatR%X+(XpYgbkt~?*1cts7>-D_1R}shf_)}nw z04(?i&CSwl^{L;tVs5(C!DG>IbRE zk7NmbUpvRo8#3#M2bXQS#L?jM4A5B79DH$33?R6t`P7W9#QGK-w<32i*!$94V3scj zOfH(!4iaGv+A#e%DeuwpUO?h)A)ePy;`9UGGbXN;1BIE|TP`~WZDB`iwZVs+;_r=3 zae-y?LeXXG0i&EuO>Nt7_PgSNFO%QBv!8jslI6)?L)q_q=151yKs#RF3Qn+mS{FMm zl8Fs^E7s;u7vR%|KH_KMv*We*$7!(j9>*^GJw}3!72p2&%Tns!`B_XF1dT75zm^c^ z77!_p;?Y)j`|x9V*R-|Z{PvQw%_R|_CvH5KK3AYv_+!WsZE}X$DnNSQkxD)(eh2Ix z=WHF;@`=Vyy_U^o;i)T9U9>^`e8q>0rO@&pB6wS*7wsyiM02r%PtM@;1Q9L2gOK|s z!0%v%u)V0CD9)0%0my8GlB{~u5JFHgs!QQn(&+jk`H;>UMRfIC1o&_&-(?gw)hW;hPJ8{0n_eR^nyxIdC*yPqJ*BLmSF+gi62AceJ)qGY)kH zwNtMPB2lFu=sRtXL=*gM=aaT*?z-Wf?VI7}C`pQIkS&(ODeoHt-te-YD?vy9DtUx} z-_1wq@`4n;-YclrR1ax8HKPHA$=`M3KEO%JIt?{k!{+|rz6bb#m!DRE z5@ma}0d`ZKvM$({(y$%A$3BL+%^n(A0-4o^IFgo3&J)+L_ttU7sFqLrkPB?-JN!`3 z4_`bSnoIb5$9a3x=J+@46>s`)$MB~);ba8#^?bOW{I&0%yDtmhh3z5HwJ!`bdw#jb z);qR5vF@{hrwmr-EaXgbWDuVp&-r2a`5d>L1*4!_syC`Z*oV^I%-5^Bz&8gv>DkD? z61+>yP4emm0c?8|mqkzMnz6@F?Em01Rk#JeIiZuW;}X5P;L*bmzfX=InEB<^Y_v`u zZ!~)bP8Jcxaw#GOqe_(3)zH*a{-#&DDi&)nEonCp1qHSG?fy>c;BM<-f+ zgO8mT4q#yWUky0OI|Z`!uM3YLd@lGRY~AGB@SP^o#S=u)zmG@h!AP-t(S7m>mcij` z=xn@?7N_^CHq82NjJxUcj9GINzOgaWZwL=$F%+Po$b71C&?dP zbI|+8A~CYv)D>*Vo&5dx{?-q*b?3Q!Lnl5kWjy}kLczZ|jhU&7TQuVVIS)!U%Q^(42mF1wUNem3 z$LJW`v9w!kZ~WX49*&^DD7Hxlfm#lbvn27m_#I~G`i1u(tOP{Lq9DY3>5>*I_?0Mh zzh!X!u2E~op3i%}PK!uPS<3Gz1KmGP<*>ZE1fnyJ* z6D-sm);!dWy{dT+CdByh!H(h>iL{MYBUb;uZw($U&dDy*0BQv7nrK9Bo6ZIaX(KqW zMuiA!RpFx?FMlh8^$R z;Up>pCtcc0V%U>E(N>?X=U{rh&D^U{kU{K?H-iT{H~gq#VqCLJJM&E8X6`4M4m)dd zIsnNdc|h$=y`rusZJ^JAZ0M2q)Enk#Mfl#1}x#C6dCiJv2&kOZA} zv-Ry+lN>26(XI1^&Y||^@8u*h%YEm2(nrcj8`yj$y`YLst38pP3LZq1i4q9s_Yl6} zp~xAsE?>c(9A@#>HkWim48R1>8%0~)_qWj?_D6aVFl;O-q9G6Q10TGO?;I;kaJT(n z%$8%&$$|Mado=0F-(*msTf^k}-QKslZiEb^ALL z0-)2S*pCA*n29Hq9{?s?08$t%IoLj{C+#a06iWA$L)$n9?=n1zuJQG5Z%L>6lV5!E z%)T)%JOi{n66QcFw`pzg9wnE)=b4r>{Fw}JGS)YJ7|)?u2kE$4#gO%uR&K{ie>KfL zR_#cBq@x~}<2t!tvL13_VzbB)J%|rv=xUp4M&B=`*(4I1E50o#*hXwz>y5G4j*_M| zEhUF+!#FcYXRDK=_^#JeQPwne@W^D6L71=3Ei!!32aZi{nOH_Y#)p&M8RiFi;Wn&q z<9{oA?cqxXmuxPuV-dz1?l=3HKb&b>zx`HwbF!`J4@M`GR{0YfUOk-hM&==7T9mXt zH?C(tJMh!(bXL-;C_wq8%p_4CKI-ArjKg=CVAA~N_w@7pZrEce+p`_ua@(&R0xxkB zKd)!Q{rqqIgs5|cZ?sG#s31rdu!mq(z1 zXVSwiljkP}T0e)dnmM8X1Nco1&4Xr6er!%%c9J6fE_r#=H04~hR)Zc~w(L*Ofg2HF zb0i|&^Oxy^{agU~p>KTi-LUI=R=HsnvhU1&7XlOkJ4Ygs84oG6`YslaPkx=2fw^ux zukZS>#xzT>%;97Bx;%j_G)bkke_lfuo}o>hL{roCPJ+M)C%bwh6_ z^CM$n8wTFvm-DW$xTf0pNFu*n|Ha?@2@awQS<%d-2q^!k$cVSy=Kx9Uyb@Q!wHRSv zCG5qsNeE^C&FgCOL0=W=aef5#<*z2P;x`%?%PDBBfkzl;!8*y0VOUKEMIF_{T ztn4(n!&J<^gvw6s&G2)IgFM)AyL!Dd6T&1BB=QTkq3MU^S|h5N3rcFPqa*Kkb?w39 zjX;PbqN6>zN=1(_;0;6M5P0jcaUNV|5!fjAz(cTj%b5f8CFQnG{m~Df>aihZ|5Kk3 zk?q%(Pm!3s`=AqoGkp^rsc7CgShEHB{XW1LfhA|9PV6}8^}f5f_J}x9!nMvgI!!ow zhW>?2eW$z)bF|lAxAQ@~%f*)GJaWVQV_`W}!NCn`1`;#b4w;5QQ|fWYov>Yg*LRMR z!|!+hUkMMtLPhXY_l&1cu-ipLsghIA++*&f$b7k z=HS@0N!x*^EYJ4BFz2}m8wb3ncHG|S8qadtyZ%IjBrR6A4Ll>bnQ6?ESZxPgK=If( zH{0?}3+tM70zUG?%VO*7HE?Y2rK?elWrTOnvOYe)NlP z@snSD51AE9Lhhj#M*6y|@>PH33~s-sC|bsZJ3-mOZ2V_-7rZD9SlE)yH_ z!D~-EM6p>DHOrVy(HAbEi+zJ`Mm&sLaR4>LE1Mk66xz_!9F)8OSU<>jcQ(f<`f;#b z#jZiRp^eo?C6jv-*q^0_W@W;N41G41Wz!6P!zqiu$8OX>791y`Bav9Y-+p6<|Y6hYB?u|frWSgpP?U*Oqrxxlr#cS{RNEv{QG*_|ug1Lr+c!BFPA8O5u}QKMKcFuf zhlAT}YxIZx5IAUl#g=^Ur2b}v+eDu7IdD|}6JcRZPoY3ij625f`7mP>XQ9n7KEU(W zgKufm(>$QInX<>}x9#!j)IMphn8Lo`Ux%6ffA??y0CCLMm)cuGt6}3NpKZ|3wifG= z9^0X$0q37|;y9-(MjcO_@aD}&bLPzb;EODaprP``jLrEN9k@)|%$uE7CqLUNRL(R1 z^Sgq5B-6Qau*A~d{rdOfp3YMqTNddmmnG3I(Vu6#b_(b=a7HiA{N7ZjK>0npt*If* z8MwnSjTJy9Uz0@E)Y}efkw;{R(8bNEu(EBP+#~Z`7REZPZ)#kPD?GJwXNog8< zo{Fl?=}oA_3_>4`^foyh4l6#eMpfpJW7;U!I1;<|Sq+WQI zEqbK=zr)Y`)E*pHJkp-?pU}B8U_=}14+r}kUH2ncu>p_$d7ZOrEHfZL`E<=1S)C?l zA{tD2KG9Z7UI6q~B;Ry|5x-fM3}5CKFywsvz6X;T;|l%olj2uXO7*oja5wnk9Lx+P z&a(f%?nu49yUwwQ0Hhu-f{}2`7Ro^*7ScObrTR05-a#=ZL{@WCyX1!k_XxR2v?5^8 zFE{Gg^FZQFs6lsG28T5FZ9q{E`NfD^rh03*UR~u&k>9H{IZ@VwoVL^bF(QIBW)V7N z>`v@X!J8eyiV$s&&Ul0RWdOuw!Vd-}-r3iNXL`1C4w?gJ29>b%vVjz|t1%YV;=5^G zIMTSi4AqBoRxt1|hVWwN%APX&fBwsFE5N4RpLMbM<%wmYcb5jXRN7z8qu!l{hv)lz zxp+VHtMj?6Y-H#(bGDjO;w0Eh-W;UKfoBC^c#{Z~KqnmYd-l;}L(DiNVdhDmK}?+v z%a>x|R2*QmWBU*n0-ZPQ-o7_%9{29TX1{uGn-%ftYrhK<~o=IUj z=I_l12EP*?PxP|?b3kW(<{iZo#l}0^Ar8LufqwgU?*4Av)N~@O zpGS3laIlOL7yBZH9gFNIoHsam0Kzdu=(X<5diYpyvn&nh4|$1z-e%#aj70<$n=6&)H~(MhTJ3AUXK!Kl@Zj%7%%? zV={kpoj1x$KY?jScrI}IiysoR0XUi#NLEL~Mh7qNu!}eFWF{n%6~6_9>6BSHhu)DJ zd`!8rMJLHs)EjDqscwbc(mDDQEk>}jS@KRbypC5~@l5egdtmu-Aca z>vNSOl}Z7&7)%lrhtFZkMP0GgNNI z>W`q|F3+`Vkd9yfbltp=F=oz)yz}n5=7R@xz_CU%`g&h=Y>yrRh*lecWTFx@d<*@vx7dzv6~b^(-v8O;xC8af;!;HqaA=_(&v0&g4Z|R#GasV zFs@B0U9;c8AqxNIz-Jsq_sV%S^U3{7FRWYAmiT!5lRomUU@PcDmcm2wX!PCR^kum? z*|VKt7qQN9QseIF$bE0CjduL?;ybm(fo6>B?~ZpeB$S&?&A2tczr!C_JKr;W*|Kx~wY$okjS z#tYs>xj+0x9!&>m4hPxTr8(0HEDMnBJ>k_gYtlXB)!v`o8EB^CO;p6}LuolxZOd>Ag{+=3iA8%<1)zmtPCmApJCww1vcyDF#7FuL)j>OUE?1CI&YV}n04 zf&HDzwOldm7{mYAo&aFZ&hg(VT%Bz0YwXlH_Wv&g-x4!?IMV1(g6E}~=~Epwt@!J> z>RT}&N!^BR8Z@pD^9Rv19CW|bjg3y}_YE>*EG2F0*_^bSe$HdlQT{g^eA=oNmMJtF zHjp^>S<5+lW!U-L`W*f?7)rX>G~=0ZOTK>q+sDbbeb~V1Gwt-{cR%{Q?~!+Brp@*n z5EzivOYLhSLIhxSVb1=gaeGu6PC8lzj0v$%uB@rF!FA+)R7>l^F#>6BGsqZE&DlH_ z)y_N;O*AX!go`b%ZVa?s`pt*T6Ap8cW4%MxoCAKuv)VM&BsuSa^F}O=$yB}jK8;-> zPjHgJZ zNt1Pw6qztQ5}e}$+>8`tb5045W|UaIM?QQcv*A8Fj2?JZ*gna_)ZLAN`q%7sxAv0l zkRQ3_IaK&wDDjWlf&#tU%tl*|XPBSf`t3HlAGsb*J2TKY%z%TbY8)p6v5)?UnX)%m zTv!~Qv#aMf@v+ft`knt?bo}t^?^oZuDQQi5_qzxfBP(9C@YrHd#>ZCy69TBG zInYSW@{I>T6_WLOE8_Y2jJnA+L-{nWyRzDUFpUmAGKz09FH|p^(c+ zV6d}&*timKE^d&Y{sw>$!KcX=lV&lboJ|Q2@LAB+_W=mKzocfefO=7O8-j1M2}^jp z8}W@6esIX*r$%MDY(X5|9pR>dByyXmLnwAPXY!~Vl1~QYAHFsG?)T$m8B;`W4o@6u zDO}Mf?aju=K?SN?M!wBnoPM8x4_lPPF-PR13yX{OJ=;6UchrOer=H1%H)Kv68tX9= zr!jJY724oSj-97*xX&+yc1A*?K}VzLph|6Q_G7y^wYS*==Xg*wKxsa(Vn^+rVNM-h zOvA}3h?e6q;s!sMJ3o2GMQF+-FyWKT=1mqj$fM+KiVqlm&oK!TPAl%@GxceZL7U(s zU*&#N*A%+9L?Q#Y(Q)~!Ek2@BIMTN{y0)1zXPIpD#u=~aYyz4Ec$}Zf9Ll2L{Yb|1 zP&zqo9NOB)uqN;R9#qHq1055e^o#uU{m;L}_03DOvBB*HD+7c>s4yqu98uIER=$E_ z8t}*-Gb{7n4bj`zUXwXj5}1L&GQ(+5&HP$@2cxA6vQu{zQt9GicC8;ooVH*050@V-DBPst&kPKLweYXutvxV0*h#jti;6L}@Xf7gKP389_aV zW&x9T7v8NXrmYFln|3|#6wM|MnzdwYrf>I+7z=08Dkz9qHH>2B=JK(nP|LF67k9LO z&Aufsvv7KQP_(hZxpSL?K9km2zhV8-eC%CyW|=Vt*_E&!YdoKX3~u@~h~yW?w9P7bw+ z9#9{wDG(dZN6A>)MBMbUpvF)3XM(BbL?XQusorw)|LW%;w z#D?C`ZaA-U$k9j_DcvCxobmKh!8V*mbfVvbu0A41?CMQ>d(-FSe|dh7(`Q(Go#CEL zv0}*37ta*^@arGN0}-Liqt(vaUTGlv447YO^U7Qsh@6x?U>W|GNMP@O5Ly`V7!c;1DrGb4`imOd{1V~*Pv^* z*&lDyJPl67Mhq%j9Pku`QM@JJPBbu`s~`^OH@1Y!xRJp%akGDmgVTWEK&y}60Ja&8 zlQ}d$x){bs4(2m#%zH;pg~vP$?`>0J&7p~nKVJUhWLy0ywlRJW9x5SW^zmuuiL+-J zwmwX+??w1Jzv}|y+{Bqbi)Y{U$2^PtTmd#sk@zgPjpX;uI#&BhGj`n?!QI>Kk9t~Y zJD9y$u!`O|ktI0z4(HRc``f|)fj5@l*Q-zBvo|tvZPzgZ8|{;5@%K>4cfa_ieE*T; z?T5nK+J2+o%V)2Pahb%%F1iBFnEK9_$a^%BC2sfO^Pz3;T%FpT{1@ZyCD%2J*9N?B z=8P^mrm3bp?3eRDs&79AB>|VttqZo?V`$7gc34O!&ULoQvYck@m)~1;W12-x(bgRll#~&k-Gfk<_}iHh-xPz+kag0tlVPZx zZ^5hD05WJ$Q};n#cl4u<6t<7wSDRZWFo@}ZHFq-lEigK;z1ud=m(iNu2z2;f#nnNU zb59ufbK0DfTY2lWVAVCqGL?&9`uy|>wv$sq0K?m&KzJSfwwHwu+o{*pL21$%K4#>d zKT}a~0K8!@AIXAX4V!0tdMDS(;{(p$$o)U!INAfg zqF1H?q?**>Z_$_K{QMsN|2lsBtMB(dYM@e7GGO0=O<$`e)K^fd;w^OLOSjKm#Z)xq ztpfdSQzu)^w{P^etGxfg3H%~`6<)LWnKsU8d!bXK&w)qUI!_uoMp#P9GC&*Ip|?Lv zVVh#R!aGP$X?JoHgC8<{$=N$ly`9o_3Xvml7T@S3k|*yZn9Qy3Q0}E5D_X{WhbZXG zx>&pM(Wdl;hm$vdad{?8&u-+66tkFl+MS*Y;a*^qJ$LQrFv>fb9PTHu{qp-y1#^mg z1~zq6-;7rDXx!qk7tarl&u|P<#7+EjKSDC_YIC{#hM1wCg2 zX{0vgk!|uJf|g|6!m|@$EBH~ciXJ5`d)>V7i6nOj3_kw!s)(M&xM=F7gS6+90Z;G@ zC*{jUTqo~NUe(30*F1iPyP2Xl-KXO;pqK&7$N6$V3}*q!cl6odyS6X;K*(Sqw+Y(^ zZX-NS8?XD+ejP(UNlW6iLAxm}+)mDOA0M;2j!ht0G*00!d%6jqpMDjt+C=e+_3}aJ^~EOK)gD z!Y2K4yszTz0~i7)X^5C1x~}Uw^Oj3Z4G1EljLBTIiS5|OJ~?($pKTb5{-G-UCv4Lo zL~pQ+XgT3{_Z_1jA3kx|?p_=>?9g|hdBg92Tsx-eo1exehSF~vkU@!mbV$o~{&bBD z$~o^s6*y0AbT2#UfXoiYaWow>@IOUCJR09Sk7_JN6mt3k!Rx zJ7beX<4&7TXr%6AzG0|k>SF)1Z;I(kSvUo?(;+htgRo@SLx@v=JPpA9yA!>xaB*+m zIJa4n=+gl%jLc1xK)Ipz)9_s?&isfB{OR0%7QzZzLEAnJ9~NCYH8G}VG=RSAB$HTf zNPNlgr{7(LbE>3O(8kp!;?hp|VPi$_!+R(!=j^`emy!U&RwUpX^(ABD=bcH8&2#AQ z*|p8kE3nUJgKdWmc+|Z0mgid_r{Fj30Z<)GSVz(xx!xM&osdkVfFwu{qmWIx4w*Wi z$1Kzw2fy#QgYvWRAGu4{H}W=IGnqVnY37;}S95IBAJm8Q{zUbX>k*EGtk3AgpM+2&7wVeqQ>=3qCGJDr=wJGz;` zh8^e*+VjGdF}z|x%Zro6@*7te)6sm;@s>sdwkVm`IdU`1!}6{jd}jXiH|LMI4>CMl z_i-+dYiRjhF*f_Y2{CW`d_=?R`2J_#%I|#C74w!$@tGTpR;1P=J=ULH5i>s%KjCC$ z0u&SLfiOjAWG`RW67I4o%6-Y3nY3LGd!~sZqh1jlE)vX(c8mA7Rvan%9J;KU{lfmI zp;D2zaz2W;#F4bitco`Rw$;~%25Z+UO z20mlErj9lgnLlSiSD(aJwNJmskblLDCh};f*zL4p$KbJwWXt$ucnuXDUj@JWo?Y_4dN@&XP*DDOI9M_zm)*!$;h9nO3-KeXG z4PtXIfm04Z*A1e_KvRWoqL}Xv7rSx#H^2ma*L0fM(y&Xz$NA~_JwxNj8xd+xilg6G zU+8*Ta}kyR4xUTQXI?N0cs!HY`$v{!d9T+YCRJ0}>yxy`I{nk;b{g4MG$L*m4>_w= zd?S;h8(5>gHT!nOX-*^`9dc(E1-^@T zPny^^ee$195q8W8cFO8?jqjopnYjvL#s~3vJA605Iam_rdQ%ElJ_BY2b0vd{D+kZ) z)S#{shSdWyOa2GDbAs*kg=Nuib{Q7IHbe?wJ1trIffxE=2OjMs!?FDoxlQZ3v+o(7ZO9=A9?UI#!Ibq{Ti$5FZxpGGSl%#u77<6m zd*JAr$Ys#7@3@n0D)~Pz75rTiPHNHklJ>52Mia{qLmN@#qBK!H|S`d zn7tbY(}O4w&Apb%Jf|#5obk;tUT+iUYlNNr8##ruzd;ldjXriF$%8NrMjeUhVJFqy-rEp5`q!*a8Uuj8fC&#|8 zbEdW~4bgC|(G0qjK?61&2=05>#ilTigxUS9@F<;(npvH8njI$JBrMFwuY5Ga_MCS@ zW(xP&r$;`ge$}>7MKhC1L|lW7!h1Tx>E7D;z%M$t!LJP)Jo&%Bu~TN$_fz%h-boA` zNBdJ}7W-oHU`p@&dq>v$!y`Vr(D@D)2CFCA_pkIjP_Ws`ErSA(9D`N)y9!{^i1-ZD-&Ia8HyHUjNX zw@c+DaVM_FdgUFl)LGGa2Q2%Rhb~Gm>wCV9!D&`#6>KJUU;L3kQ(kk0BrWt5lebus zVwep(5QTW0k_Ur|%<>dli0^0zVYD@4=1PG(MzHg8?o2SoR3G}+D>uNgJ(g>0X=`1% zOQMh&53j<_Qe$wsQ^oI;gR5~Q(nbs>_pvw9CMV;b#Zi^y6!LfS5=gH|Qc2{bWJhcU zow99ax1cxVsQ{7ox(6Ii5Ywz|I03=pbD~?Kp=WFNU4HKZ<_wZ~Zqa|(?}8@BHFEAz zEYABtn$0puEq_p$LbErVN>+qIl1$Q0a=z$C+R1)+IT~MP9oArsu9aVeQoi=a1wTZT z=E+L#rNi{IBdyp66wqYn2m5(uvH==R^K-?555=banT$ADg9qWY3+HKnY(%O{Y)M;m z&wa7`7~iyzek*n{`rt&D@4SfrLhXx>iL2-`?a$|Xk!g=<@SW!h00+A=99?jO&h6gG z#Dc)1tn9ZswfoDU>!beD22XrAj?R4MXM8{RYRF#Al_ts*E=DdywC@{AzhZkDoobYZ6~$7 zI|q{7UuO2*Cll$O5=h#HkU{}gXkgysqz#&Fz>^iOkqr1w-YHu<;FO=@9NoUHFCPoj zqo--;K0yy0PcLt?XZn-RYG<0*cKg^7@C=>E+BA_E@eE32!+hT2!IV7}JSQ6M@O|SK z%JVE>`Hrz^BMhV3lkzG72ZG!lV0lgoozu7V{UVuiJiuYps(VaYV0MtDhIX`r3}uK8 zPX&N?-;`7>9YzjupAiyUv2>Z@MHPz)&E>MlVjME!Km5*NMvvHuPM3Gh<&|-Wc^Pk&5kDK~h_E z$mr5fwjVxKvuI?SX{*NaUqIF_^|qg9&MjfMi~oB7&H-`a&gYTlV@Ya)k?He6u1HO< zU9(efDCLnX2Gq=i&CC)f&73$S$vwvn@Y@ZZentT*9^c`f6QgIR)g(px$1=!zZhlOv zqTlq&RAwMjMRTIeJuv9yB4|eJK;|5qC}1oVxV4M~mFdkH-(I^RQbP^|=)%)4U`sSQILvlC4 zA~Z5ym*F+uU_$93W5(@!;9Yq4rC6Eqdvl1ruxzbA#h#KRPycg)1%lPQ`-amGd@w(C z-KHLDK4HVjbRTK5{Q@UBUP8_|&CP89mUD*9{~FD~@d;mxsD)5)Tuyh)#(r>|O8px~ zhl+JZ_JOt^>sSW*y;Fath4nh^QTh)*dAEOVga1LBuhB8TfAz4B@qGH$T0W#OnUIO| znXf8E<(8+2&+cv4PKbJDD!$*SA}W2eP>C~x2Hi&O+Td&78j)J@R{{XVxQs{WnYKLN z_TWW#Z{M)uvCY{f*PUVx=zQ`ybCK-ui?)|`Sxqyr@ST_wR6FB>Mgtm%I~O(TAw5uL zC%2;7T)mhRL5jx%fzuR4?^B^WJp9d!pwTF#vfL~yQ2%Q|Q@FODugXybTNKwfs! z`%s@mPk}9GSYC8}Pdn{ZJKeW}!%(#TYRjo>)9IaByPmIN&xu!%4!EBSMlkU<$Wl77 zTP#eI;+z&g;epDD=7NPr0BWxSsML(N*6)DEGVi1?+LdVx*b|=+H`vu0$ZL?m2M;ph zg!Gxbo$z!s;@&DEh`bDYKOPiR(xwCo9Q2+#B0^aH8Nibd=5Jk(MU?^gWb5w^_Nl3B zeud9zrZqe8BY94+r@YQI=~Af_q|Ww+_let>_R(+BX6o|+y8C1J&G6;jKWzKO?%RoL zN*No0tarWaznwl!LOm)UcrWQ^#qb$SmRp|WMA^wC7 zxqd=*`{~lS!7j?ZUN@6X-j)ED@;ti`=qqSkHlz zj$Q!xTy0XELpBHPCv&<580zpw3XZA8ElFYQArcu_!1DUeg=4EPyLoAX?@R?L$T@PO zmt1Pu;#PY4W(r!8E8J+~ZK6Ro{Q%+TRhj8SJKdSUwoukZ^V?1Q5d3N$koAL;ArHeD z{voqk0D79(B*5Fm?|6UsZmi%;;~Kcird$I{efos8PO=_mp)wzqdiWZ!eWN`;oV>60 zQF`~CwAFQ=Iz8ZUbPO|$86w*n_bdcQKh(AKnUbGV_iDF=klncQ65i{+XL!8_f*}kC z;|t$$3ba#~&NQljRq3{5-KFvA20r+uU@=Fwzdm+0L^EE-<t~8?Rx^e+;FJm2h_zO=2 zJU&aKQX6@;ZX_UrpRcxN{X839IhgI4w{o=d-K%Iyn2QgVXk3^AN?NkX&3O8Thjq@o z*aJQOtf(j1wD8ofXUuTD=1f;Kzu+#&GBMS%RS-E9?+1iTxHJl?Uysg6#igQ{MXxpE zLqPLoC@xNaCQO@{CRIPsNA!1sc1F!Dkhcdr;mg?~HcaNNOof5n1GeeZYeI1OLO6-1 zcg`*H#5t(g8^baBok)2PKoNL|9;`nm9h)ozpV^x}nVi>m!;r~FVNsM<1 zI&Wr>=W!8pSB_-;jh$9PXxuqy^0di)#8%|9m|B*s8^Ik|5hbAO(lXa}(GZA{;Q8gl9}@rK^>+@!T|3Jt6j4JNy7 zHv=myXiPs1GVSo4W6eix`S&S?*jIjgQ+hmDS7qD3<-z&lM8mXCRz*shi}!S_dh<|j z;2$&5^8C1~m6ZDTQa)|FdbPO*mC3+o>p*c^&`KMw3_TI@)C+h0mi@RDHx@%yGFtRD zU#QbWNZv`HnEs7q#Gk$iO4Z_n| z?mLy%^JRH$DR0ccRmmPg)$Gv3XCar062tCm5=#;`zkf1@*t}lCm5{BhuOh6kK3#?||7>tu49$-&; z;co)QmkW1}!iLTHp&;h|E;Q=jNl!^fITA)tWD?xp^3}AVgT}#MeBi|a$Lu3~I1vV# zTk`H<kLB*(X#z!Ta1)0L^*jNFydAXRaJvYj0wU8iz?ZY-CPTFJJXpl*bSlbA<;F9hiGjX*6GQXHU1{V*Cl#J3b`jc3Gp{zUL|wWY{IXujA_NBq zmpi^#RPZ??B1tI)6$vCymK=pM>IKFPApy}sY=NX*mr*oY%67yo4*Sx3`Vrr(3{CXJH^Z`~4AMF*_!+U2Wt!$X_3 z5W~JywE2{Fcdy=l1PaUpje^9F&bagI9_>liBXrmJahThN56(>7Yhc~^RD1k}FC zfpp{;Mey#M#`GZ7ADBWa1Bl9HxPfAr8^{%(i!r{DMxUc@iZESAZ~hrLhdt^R$} ziyi4`pV8!w4^M3cJGK0PX}g``YN! zRkLrW7;d4Sb`aV(>f8ye@7`WTxsQPnI+$X>jgBo|=eV@d$Tn~~pR|=sW_t>B*3BWl z8=up!HP)bGPSQJc_WFIjF^K&%`PUY-Q9++$zEe}?)kojt(Ffhr_-)9F|0dm%n1+rq zY4Xlh94qA0_um-wA4TaqPGcs#XLG9v07e2l*b@PMTf9ZzwzXa|%YeMWC7Bc&jwgd3 zaDT&b0ONQgn|E-epQ(I)YZ(5fMMr{T9C6T~5W@S0=hg1@x+?3zt=~8pBoBTgLouQu zpzAW__qIJSz3}AimYF<a)0gUU`Kkpx@_~6+55B=U4&86AG=qyisgT&vgHjHvb@wHAEn$T;N(d+i zxFdG?JrGR85bx_*y^M@f%wYuE5rAHT-=4ojziae(3%k{@iZEhw>D?3jqOp`kQ?ro? ztr$;*#|!PP{6GtE7a{^D6=1%{qV9(pskk@YR#37ebh&1XW1^>XyqTZX=6>$i4(`=% z`fMpMuJGNu+OXl}sgpCX8Sr4d&B|rT*_a1D=MLHF>Fksc1B$R4X{ zb7RBr64$H|6HXKX@Yr2#BMQev z#Wa6(&KQHY3`>r~1~*^Bu0N3h%O!yF%*7$hX-plk1s~Z6+Y8(A$&U~2BtJ6u9@{`| z?J1Hm=#Ni+^pF!`v1_M31fOr5!XXH`_YE;cPXMcHB4;ut!_msE3{Pokq}c52jkj!i zwKr|>{Bza!chD^SEtkYmA>MD0;_mmG~}$ zg@DQaamF8DXi!3 zM%L~wa_hVNn76!PqXLz8PuV*{!87H>L6sra$Nm+2vt71%S!~HSdkGrR34lZ~2g9|M zGzhj~>Am4!-B*2Ma^36p}_F+630J%-Ec#z#D&%|@L^3s-_es5Mi5u`+vlK} zw_cK5GjexQu6`Kky-pBMObXs72$IwmBS>ZlkaP{n@$XxevAMyznY#7`We5)7Um~KfmulB`RP;1Zx_8` z$3t#&hK=o;^;>O&hIy@i3_fO?5vIDJ8cbbAI3b-|`a#q| z*7N)Qn?0;`lUQ@w@ea)TuwfIW+W@u-mSLio$*4U0S7GHN0aTDYSXaQlK%)*)M&BY# zQXzVZmAj1%&og9_5XfgOrIJ-Gx)+fT4BFS{q&j~t8F*iy1p65jS(0SPEnQ_R1^Uhr zw?5+>2WPy2Ve)51^K9f?VF4Y0T;fMB6}cBqc32s_!NvVEa7;EOP)8f1&!RU*q>M)n zKm64Afs;w9{QL;lK7bLiV&kb3lFG0~ecXSbRKBqlV^yFS;j^ZXX=FJFTbWFU9oHa< zis5N%pht#e(~XbxK}_1A0*TMv)+4}!ms{2+%T$ZkhrAhz!isQFCw7*MF+uCJe%X4vOx_Bv7z(=1lY2sV#Z6XKyLH5q_ zPB`f-se*_|4$cEZG|!dv&pZ5C7uDmQ}EplpXK5_Yjjqn@@;zVsz4~jcsHt%jc-Idb3y_2 zDNvGY2^u_>@hYmW5rk6Cy^IjS(|xi7-cOWw$h^AnJrQZjS8Iom3CqwEv=68_c-<%y zBZ(@)R+~EvZYJIrsH=GMbyJO%F2QD%X##NgAq)(g0mm)w3jn9*$8qQEzXd~Yc+YQR z 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

-y|7 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 z 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

8gj8Xkzm&Iorc&W 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 diff --git a/examples/components/Card.tsx b/examples/components/Card.tsx deleted file mode 100644 index 78a50089..00000000 --- a/examples/components/Card.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import * as React from 'react' -import Divider from '@mui/joy/Divider' -import Typography from '@mui/joy/Typography' -import Sheet from '@mui/joy/Sheet' -import Box from '@mui/joy/Box' - -export const Card = ({ - children, - title, - side, -}: React.PropsWithChildren<{ title: string; side?: JSX.Element }>) => ( - - - - {title} - - {side ? side : null} - - - - - {children} - -) diff --git a/examples/components/Clipboard.tsx b/examples/components/Clipboard.tsx deleted file mode 100644 index 1ac6374a..00000000 --- a/examples/components/Clipboard.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react' -import { Button } from '@mui/joy' - -export const Clipboard = ({textToCopy}: {textToCopy: string}) => { - const copy = () => { - navigator.clipboard.writeText(textToCopy); - } - return -} diff --git a/examples/components/Code.tsx b/examples/components/Code.tsx deleted file mode 100644 index 75cb12f4..00000000 --- a/examples/components/Code.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import * as React from 'react' -import SyntaxHighlighter from 'react-syntax-highlighter' -import { monokaiSublime } from 'react-syntax-highlighter/dist/esm/styles/hljs' - -export const Code = ({ children }: React.PropsWithChildren<{}>) => ( - - {children} - -) diff --git a/examples/components/InfoBox.tsx b/examples/components/InfoBox.tsx deleted file mode 100644 index 0b7d1aa5..00000000 --- a/examples/components/InfoBox.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { Box, Typography } from '@mui/joy' -import React from 'react' -import { shortenAddress } from '../helpers/shorten-address' - -import { Clipboard } from '../components/Clipboard' -export const InfoBox = ({ - label, - address, -}: { - label: string - address: string -}) => { - return ( - - - {label} - - - {shortenAddress(address)} - - ) -} diff --git a/examples/components/Layout.tsx b/examples/components/Layout.tsx deleted file mode 100644 index 7af8a289..00000000 --- a/examples/components/Layout.tsx +++ /dev/null @@ -1,178 +0,0 @@ -import * as React from 'react' -import Box, { BoxProps } from '@mui/joy/Box' -import Sheet from '@mui/joy/Sheet' - -function Root(props: BoxProps) { - return ( - - ) -} - -function Row(props: BoxProps) { - return ( - *': { flexGrow: 1, width: '50%' }, - }, - ...(Array.isArray(props.sx) ? props.sx : [props.sx]), - ]} - /> - ) -} - -function Header(props: BoxProps) { - return ( - - ) -} - -function SideNav(props: BoxProps) { - return ( - - ) -} - -function SidePane(props: BoxProps) { - return ( - - ) -} - -function Main(props: BoxProps) { - return ( - - ) -} - -function SideDrawer({ - onClose, - ...props -}: BoxProps & { onClose: React.MouseEventHandler }) { - return ( - - - `rgba(${theme.vars.palette.neutral.darkChannel} / 0.8)`, - }} - /> - - {props.children} - - - ) -} - -export default { - Root, - Header, - SideNav, - SidePane, - SideDrawer, - Main, - Row, -} diff --git a/examples/components/Logger.tsx b/examples/components/Logger.tsx deleted file mode 100644 index 839764d1..00000000 --- a/examples/components/Logger.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import * as React from 'react' -import { Code } from './Code' - -export const useLogger = () => { - const [state, setState] = React.useState<{ - address?: string - logs: string[] - }>({ logs: [] }) - - const addLog = (log: string) => - setState((prev) => ({ - ...prev, - logs: [...prev.logs, `[${new Date().toLocaleTimeString()}] ${log}`], - })) - - return { - Logger: state.logs.length ? ( - {state.logs.reverse().join('\n')} - ) : null, - addLog, - reset: () => setState({ logs: [] }), - } -} diff --git a/examples/components/Menu.tsx b/examples/components/Menu.tsx deleted file mode 100644 index 17d4abda..00000000 --- a/examples/components/Menu.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import * as React from 'react' -import JoyMenu, { MenuUnstyledActions } from '@mui/joy/Menu' -import MenuItem from '@mui/joy/MenuItem' -import { ListActionTypes } from '@mui/base/useList' - -function Menu({ - control, - menus, - id, -}: { - control: React.ReactElement - id: string - menus: Array<{ label: string } & { [k: string]: any }> -}) { - const [buttonElement, setButtonElement] = - React.useState(null) - const [isOpen, setOpen] = React.useState(false) - const buttonRef = React.useRef(null) - const menuActions = React.useRef(null) - const preventReopen = React.useRef(false) - - const updateAnchor = React.useCallback((node: HTMLButtonElement | null) => { - setButtonElement(node) - }, []) - - const handleButtonClick = (event: React.MouseEvent) => { - if (preventReopen.current) { - event.preventDefault() - preventReopen.current = false - return - } - - setOpen((open) => !open) - } - - const handleButtonKeyDown = ( - event: React.KeyboardEvent - ) => { - if (event.key === 'ArrowDown' || event.key === 'ArrowUp') { - event.preventDefault() - setOpen(true) - if (event.key === 'ArrowUp') { - menuActions.current?.dispatch({ - type: ListActionTypes.keyDown, - key: event.key, - event, - }) - } - } - } - - const close = () => { - setOpen(false) - buttonRef.current!.focus() - } - - return ( - - {React.cloneElement(control, { - type: 'button', - onClick: handleButtonClick, - onKeyDown: handleButtonKeyDown, - ref: updateAnchor, - 'aria-controls': isOpen ? id : undefined, - 'aria-expanded': isOpen || undefined, - 'aria-haspopup': 'menu', - })} - - {menus.map(({ label, active, ...item }) => { - const menuItem = ( - - {label} - - ) - if (item.href) { - return ( -

  • - {React.cloneElement(menuItem, { component: 'a' })} -
  • - ) - } - return React.cloneElement(menuItem, { key: label }) - })} - - - ) -} - -export default Menu diff --git a/examples/config.ts b/examples/config.ts deleted file mode 100644 index 79b77e6a..00000000 --- a/examples/config.ts +++ /dev/null @@ -1,4 +0,0 @@ -/// - -export const IS_PUBLIC = import.meta.env.VITE_IS_PUBLIC === 'true' -export const ENV_NETWORK_NAME = import.meta.env.VITE_NETWORK_NAME diff --git a/examples/create-token/CreateFungibleTokenCard.tsx b/examples/create-token/CreateFungibleTokenCard.tsx deleted file mode 100644 index 2da172dd..00000000 --- a/examples/create-token/CreateFungibleTokenCard.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import * as React from 'react' -import Input from '@mui/joy/Input' -import FormControl from '@mui/joy/FormControl' -import FormLabel from '@mui/joy/FormLabel' -import Button from '@mui/joy/Button' -import { createToken } from '../manifests/tokens' -import { useRdt } from '../rdt/hooks/useRdt' -import { useLogger } from '../components/Logger' -import { Card } from '../components/Card' -import { SelectAccount } from '../account/SelectAccount' -import { Alert, Stack } from '@mui/joy' - -type CreateTokenBase = { - name: string - description: string - iconUrl: string -} - -type FungibleToken = CreateTokenBase & { initialSupply: number; symbol: string } - -const fungibleDefaultValues = { - name: 'MyResource', - description: 'A very innovative and important resource', - symbol: 'VIP', - iconUrl: 'https://i.imgur.com/A2itmif.jpeg', - initialSupply: 100, -} - -export const CreateFungibleTokenCard = () => { - const { Logger, addLog, reset } = useLogger() - const rdt = useRdt() - const [state, setState] = React.useState<{ - fungible: FungibleToken - account: string - }>({ - account: '', - fungible: fungibleDefaultValues, - }) - return ( - - - {state.fungible.iconUrl.includes(' ') ? ( - - URL with empty spaces may not work correctly in the Radix Wallet - - ) : null} - - setState({ ...state, account })} - > - {[ - { - label: 'Name', - key: 'name', - type: 'text', - }, - { - label: 'Description', - key: 'description', - type: 'text', - }, - { - label: 'Symbol', - key: 'symbol', - type: 'text', - defaultValue: 'VIP', - }, - { - label: 'Icon URL', - key: 'iconUrl', - type: 'text', - }, - { - label: 'Initial supply', - key: 'initialSupply', - type: 'number', - }, - ].map((item) => ( - - {item.label} - { - setState((s) => ({ - ...s, - fungible: { - ...s.fungible, - [item.key]: e.target.value, - }, - })) - }} - /> - - ))} - - - - {Logger} - - ) -} diff --git a/examples/create-token/CreateNftCard.tsx b/examples/create-token/CreateNftCard.tsx deleted file mode 100644 index c28086d7..00000000 --- a/examples/create-token/CreateNftCard.tsx +++ /dev/null @@ -1,377 +0,0 @@ -import * as React from 'react' -import Box from '@mui/joy/Box' -import Input from '@mui/joy/Input' -import FormControl from '@mui/joy/FormControl' -import Typography from '@mui/joy/Typography' -import FormLabel from '@mui/joy/FormLabel' -import Button from '@mui/joy/Button' -import { createToken } from '../manifests/tokens' -import { useRdt } from '../rdt/hooks/useRdt' -import { Alert, Stack } from '@mui/joy' -import { useLogger } from '../components/Logger' -import { Card } from '../components/Card' -import { SelectAccount } from '../account/SelectAccount' - -type CreateTokenBase = { - name: string - description: string - iconUrl: string -} - -type Nft = CreateTokenBase & { - items: { id: string; value: string; name: string; description: string }[] -} - -const nftDefaultValues = { - name: 'SandboxNFT', - description: 'A very innovative and important resource', - iconUrl: 'https://upload.wikimedia.org/wikipedia/commons/b/be/VeKings.png', - items: [ - { - id: 'a0b0c0d0-e0f0-0g0h0i0-j0k0l0m0n0', - name: 'URL With white space', - description: 'URL with white space', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/KL Haze-medium.jpg', - }, - { - id: '27df6f08-6df3-4699-b172-e885ac3fe7d4', - name: 'Filling Station Breakfast Large', - description: 'Filling Station Breakfast Large', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/Filling+Station+Breakfast-large.jpg', - }, - { - id: '9859ad23-ffc9-4297-90be-1aaec6e768fd', - name: 'Filling Station Breakfast Medium', - description: 'Filling Station Breakfast Medium', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/Filling+Station+Breakfast-medium.jpg', - }, - { - id: 'f1691a1c-1ae9-4a5c-8e50-33b1a10c2ff7', - name: 'Filling Station Breakfast Small', - description: 'Filling Station Breakfast Small', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/Filling+Station+Breakfast-small.jpg', - }, - { - id: '8efeb2c7-ab20-4db6-81cd-8c6d9d851ec1', - name: 'Frame 6 Large', - description: 'Frame 6 Large', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/Frame+6-large.png', - }, - { - id: 'cc88ca59-afe5-4641-9ec6-e120db310ec7', - name: 'Frame 6 Medium', - description: 'Frame 6 Medium', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/Frame+6-medium.png', - }, - { - id: '9f843b05-1df9-4da4-9ad1-13d845d78441', - name: 'Frame 6 Small', - description: 'Frame 6 Small', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/Frame+6-small.png', - }, - { - id: 'cc3591ba-d5f5-4082-9ce7-88d0c83f62f3', - name: 'Kway Teow Large', - description: 'Kway Teow Large', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/Fried+Kway+Teow-large.jpg', - }, - { - id: '339f5646-bfe3-4fb2-91bc-f2f0a201eb71', - name: 'Kway Teow Medium', - description: 'Kway Teow Medium', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/Fried+Kway+Teow-medium.jpg', - }, - { - id: '4705f946-9e75-4458-ba18-532f6bf613d6', - name: 'Kway Teow Small', - description: 'Kway Teow Small', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/Fried+Kway+Teow-small.jpg', - }, - { - id: '3e7971ac-c25f-42b7-9eb0-be645bbd83e8', - name: 'ICON Transparency PNG', - description: 'ICON Transparency PNG', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/ICON-transparency.png', - }, - { - id: '31ba8b9f-1c08-4e69-b6f4-484952039764', - name: 'KL Haze Large', - description: 'KL Haze Large', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/KL+Haze-large.jpg', - }, - { - id: '6a1973d2-178c-47da-8a80-b620c6b640b4', - name: 'KL Haze Medium', - description: 'KL Haze Medium', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/KL+Haze-medium.jpg', - }, - { - id: 'ad0bd4b9-e876-4c61-bdc3-08b8653bff40', - name: 'KL Haze Small', - description: 'KL Haze Small', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/KL+Haze-small.jpg', - }, - { - id: '61cc9bd0-1031-4fec-9ba0-f797e5457464', - name: 'modern kunst musem pano 2', - description: 'modern kunst musem pano 2', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/modern_kunst_museum_pano-2.jpg', - }, - { - id: '2a392126-4b2f-4491-8c25-60314a0cbfff', - name: 'modern kunst musem pano 3', - description: 'modern kunst musem pano 3', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/modern_kunst_museum_pano-3.jpg', - }, - { - id: '3e0d49cf-80ca-4d1d-b75d-fcbdd58bbbf1', - name: 'modern kunst musem pano 0', - description: 'modern kunst musem pano 0', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/modern_kunst_museum_pano.jpg', - }, - { - id: '0c4a66e9-1240-405e-b1ab-87c01a0b96d5', - name: 'Scryptonaut Patch SVG', - description: 'Scryptonaut Patch SVG', - value: - 'https://image-service-test-images.s3.eu-west-2.amazonaws.com/wallet_test_images/scryptonaut_patch.svg', - }, - ], -} - -export const CreateNftCard = () => { - const { Logger, addLog, reset } = useLogger() - const rdt = useRdt() - const [state, setState] = React.useState<{ - nft: Nft - account: string - }>({ - nft: nftDefaultValues, - account: '', - }) - return ( - - - {state.nft.items.some((i) => i.value.includes(' ')) || - state.nft.iconUrl.includes(' ') ? ( - - URLs with empty spaces may not be displayed correctly in the Radix - Wallet - - ) : null} - setState({ ...state, account })} - > - {[ - { - label: 'Name', - key: 'name', - type: 'text', - }, - { - label: 'Description', - key: 'description', - type: 'text', - }, - { - label: 'Icon URL', - key: 'iconUrl', - type: 'text', - }, - ].map((item) => ( - - {item.label} - { - setState((s) => ({ - ...s, - nft: { - ...s.nft, - [item.key]: e.target.value, - }, - })) - }} - /> - - ))} - NFT Collection - - {state.nft.items.map((item, index) => ( - - - Image URL #{index + 1} - { - setState((s) => { - return { - ...s, - nft: { - ...s.nft, - items: s.nft.items.map((v) => - v.id === item.id - ? { ...v, value: e.target.value } - : v - ), - }, - } - }) - }} - /> - - - Name #{index + 1} - { - setState((s) => { - return { - ...s, - nft: { - ...s.nft, - items: s.nft.items.map((v) => - v.id === item.id - ? { ...v, name: e.target.value } - : v - ), - }, - } - }) - }} - /> - - - Description #{index + 1} - { - setState((s) => { - return { - ...s, - nft: { - ...s.nft, - items: s.nft.items.map((v) => - v.id === item.id - ? { ...v, description: e.target.value } - : v - ), - }, - } - }) - }} - /> - - - - ))} - - - - {Logger} - - - ) -} diff --git a/examples/create-token/CreateTokenPage.tsx b/examples/create-token/CreateTokenPage.tsx deleted file mode 100644 index 1e0be1b8..00000000 --- a/examples/create-token/CreateTokenPage.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import * as React from 'react' -import Box from '@mui/joy/Box' -import { CreateFungibleTokenCard } from './CreateFungibleTokenCard' -import { CreateNftCard } from './CreateNftCard' - -export const CreateTokenPage = () => { - return ( - - - - - ) -} diff --git a/examples/data-request/AccountsCard.tsx b/examples/data-request/AccountsCard.tsx deleted file mode 100644 index d97941cf..00000000 --- a/examples/data-request/AccountsCard.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import * as React from 'react' -import Box from '@mui/joy/Box' -import RadioGroup from '@mui/joy/RadioGroup' -import Radio from '@mui/joy/Radio' -import Input from '@mui/joy/Input' -import Checkbox from '@mui/joy/Checkbox' -import FormControl from '@mui/joy/FormControl' -import FormLabel from '@mui/joy/FormLabel' -import { useDataRequestState } from './state' -import { Card } from '../components/Card' -import { rdt, dataRequestStateClient } from '../rdt/rdt' -import { DataRequestBuilder } from '../../src' - -export const AccountsCard = () => { - const dataRequestState = useDataRequestState() - const disabled = !dataRequestState.accounts - return ( - { - if (!ev.target.checked) - dataRequestStateClient.removeState('accounts') - else - dataRequestStateClient.patchState(DataRequestBuilder.accounts()) - }} - /> - } - > - - - - Quantity - { - dataRequestStateClient.patchState( - DataRequestBuilder.config({ - accounts: { - ...(dataRequestState.accounts || {}), - numberOfAccounts: { - quantifier: - dataRequestState.accounts!.numberOfAccounts - .quantifier, - quantity: parseInt(ev.target.value, 10), - }, - }, - }) - ) - }} - /> - - - - - { - dataRequestStateClient.patchState( - DataRequestBuilder.config({ - accounts: { - ...dataRequestState.accounts!, - numberOfAccounts: { - ...dataRequestState.accounts!.numberOfAccounts, - quantifier: ev.target.value as any, - }, - }, - }) - ) - }} - > - - - - - - - { - dataRequestStateClient.patchState( - DataRequestBuilder.config({ - accounts: { - ...dataRequestState.accounts!, - withProof: ev.target.checked, - }, - }) - ) - }} - /> - - - - { - dataRequestStateClient.patchState( - DataRequestBuilder.config({ - accounts: { - ...dataRequestState.accounts!, - reset: ev.target.checked, - }, - }) - ) - }} - /> - - - - ) -} diff --git a/examples/data-request/DataRequestsPage.tsx b/examples/data-request/DataRequestsPage.tsx deleted file mode 100644 index 161ecd71..00000000 --- a/examples/data-request/DataRequestsPage.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import * as React from 'react' -import Box from '@mui/joy/Box' -import Divider from '@mui/joy/Divider' -import Sheet from '@mui/joy/Sheet' -import Button from '@mui/joy/Button' -import Typography from '@mui/joy/Typography' -import { AccountsCard } from './AccountsCard' -import { PersonaDataCard } from './PersonaDataCard' -import { useDataRequestState } from './state' -import { Code } from '../components/Code' -import { PersonaCard } from './PersonaCard' -import { rdt } from '../rdt/rdt' - -export const DataRequestsPage = () => { - const dataRequestState = useDataRequestState() - - return ( - - - - - - - - - - - - Data Request - - - - - - - {JSON.stringify(dataRequestState, null, 2)} - - - - - ) -} diff --git a/examples/data-request/PersonaCard.tsx b/examples/data-request/PersonaCard.tsx deleted file mode 100644 index 047ecc47..00000000 --- a/examples/data-request/PersonaCard.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import * as React from 'react' -import Box from '@mui/joy/Box' -import Checkbox from '@mui/joy/Checkbox' -import { useDataRequestState } from './state' -import { Card } from '../components/Card' -import { dataRequestStateClient, rdt } from '../rdt/rdt' -import { persona } from '../../src/data-request/builders/persona' - -export const PersonaCard = () => { - const dataRequestState = useDataRequestState() - return ( - - - { - if (!ev.target.checked) - dataRequestStateClient.removeState('persona') - else - dataRequestStateClient.patchState( - persona().withProof(ev.target.checked) - ) - }} - /> - - - ) -} diff --git a/examples/data-request/PersonaDataCard.tsx b/examples/data-request/PersonaDataCard.tsx deleted file mode 100644 index c9fc0f47..00000000 --- a/examples/data-request/PersonaDataCard.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import * as React from 'react' -import Box from '@mui/joy/Box' -import Checkbox from '@mui/joy/Checkbox' -import { useDataRequestState } from './state' -import { Card } from '../components/Card' -import { dataRequestStateClient, rdt } from '../rdt/rdt' -import { personaData } from '../../src/data-request/builders/persona-data' - -export const PersonaDataCard = () => { - const dataRequestState = useDataRequestState() - const enabled = !!dataRequestState.personaData - return ( - { - if (!ev.target.checked) - dataRequestStateClient.removeState('personaData') - else dataRequestStateClient.patchState(personaData()) - }} - /> - } - > - - {Object.values(['fullName', 'emailAddresses', 'phoneNumbers']).map( - (field) => { - let isChecked = false - - if (field === 'fullName') { - isChecked = !!dataRequestState?.personaData?.fullName - } - - if (field === 'emailAddresses') { - isChecked = - (dataRequestState?.personaData?.emailAddresses?.quantity || 0) > - 0 - } - - if (field === 'phoneNumbers') { - isChecked = - (dataRequestState?.personaData?.phoneNumbers?.quantity || 0) > 0 - } - - return ( - - { - const updated = personaData({ - ...dataRequestState.personaData!, - }) - - if (field === 'fullName') { - updated.fullName(ev.target.checked) - } - - if (field === 'emailAddresses') { - updated.emailAddresses(ev.target.checked) - } - - if (field === 'phoneNumbers') { - updated.phoneNumbers(ev.target.checked) - } - - dataRequestStateClient.patchState(updated) - }} - /> - - ) - } - )} - - - { - dataRequestStateClient.patchState( - personaData({ - ...dataRequestState.personaData!, - reset: ev.target.checked, - }) - ) - }} - /> - - - - ) -} diff --git a/examples/data-request/state.ts b/examples/data-request/state.ts deleted file mode 100644 index a91cbd33..00000000 --- a/examples/data-request/state.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { createObservableHook } from '../helpers/create-observable-hook' -import { dataRequestStateClient } from '../rdt/rdt' -import { DataRequestState } from '../../src' - -export const useDataRequestState = createObservableHook( - dataRequestStateClient.state$, - {} -) diff --git a/examples/entity/state.ts b/examples/entity/state.ts deleted file mode 100644 index 83b131f0..00000000 --- a/examples/entity/state.ts +++ /dev/null @@ -1,333 +0,0 @@ -import { shortenAddress } from './../helpers/shorten-address' -import { BehaviorSubject } from 'rxjs' -import { ResultAsync, errAsync, okAsync } from 'neverthrow' -import { gatewayApi } from '../rdt/rdt' -import { - EntityMetadataItem, - FungibleResourcesCollectionItemVaultAggregated, - NonFungibleResourcesCollectionItemVaultAggregated, - StateEntityDetailsResponseComponentDetails, -} from '@radixdlt/babylon-gateway-api-sdk' -import { createObservableHook } from '../helpers/create-observable-hook' -import { getStringMetadata } from '../helpers/find-metadata' - -const entityType = { - account: 'account', - identity: 'identity', - fungibleToken: 'fungibleToken', - nftCollection: 'nftCollection', - nft: 'nft', - component: 'component', -} as const - -type Entity = { - [entityType.account]: { - entityType: typeof entityType.account - address: string - fungibleTokens: Omit[] - nftCollections: Omit[] - metadata: EntityMetadataItem[] - } - [entityType.identity]: { - entityType: typeof entityType.identity - address: string - metadata: EntityMetadataItem[] - } - [entityType.fungibleToken]: { - entityType: typeof entityType.fungibleToken - address: string - value: number - displayLabel?: string - metadata: EntityMetadataItem[] - } - [entityType.nftCollection]: { - entityType: typeof entityType.nftCollection - address: string - vaultAddress: string - totalCount: number - metadata: EntityMetadataItem[] - } - [entityType.nft]: { - entityType: typeof entityType.nft - address: string - nftId: string - nftCollectionAddress: string - ownerAddress: string - } - [entityType.component]: { - entityType: typeof entityType.component - address: string - metadata: EntityMetadataItem[] - fungibleTokens: Omit[] - nftCollections: Omit[] - details: { - type: 'Component' - } & StateEntityDetailsResponseComponentDetails - } -} - -type EntityCollections = { - [EntityType in keyof typeof entityType]: Record -} - -type AddEntityToCollectionInputKinds = { - [entityType.account]: { - address: string - type: (typeof entityType)['account'] - } - [entityType.identity]: { - address: string - type: (typeof entityType)['identity'] - } - [entityType.fungibleToken]: { - address: string - value: number - type: (typeof entityType)['fungibleToken'] - } - [entityType.nftCollection]: { - address: string - ownerAddress: string - vaultAddress: string - totalCount: number - type: (typeof entityType)['nftCollection'] - } - [entityType.nft]: { - nftId: string - address: string - nftCollectionsAddress: string - ownerAddress: string - type: (typeof entityType)['nft'] - } - [entityType.component]: { - address: string - type: (typeof entityType)['component'] - } -} - -type AddEntityToCollectionInput = - AddEntityToCollectionInputKinds[keyof AddEntityToCollectionInputKinds] - -const transformFungibleResourceItemResponse = ( - item: FungibleResourcesCollectionItemVaultAggregated -) => ({ - address: item.resource_address, - value: item.vaults.items.reduce((acc, curr) => acc + Number(curr.amount), 0), -}) - -const transformNftResourceItemResponse = ( - item: NonFungibleResourcesCollectionItemVaultAggregated -) => ({ - address: item.resource_address, - vaultAddress: item.vaults.items[0].vault_address, - totalCount: item.vaults.items[0].total_count, -}) - -const defaultEntitiesState = { - account: {}, - identity: {}, - fungibleToken: {}, - nftCollection: {}, - nft: {}, - component: {}, -} satisfies EntityCollections - -const entitiesState = new BehaviorSubject( - defaultEntitiesState -) - -const setEntities = (entities: EntityCollections) => { - entitiesState.next(entities) -} - -const fetchEntities = (requestedEntities: AddEntityToCollectionInput[]) => { - const requestedEntitiesMap = requestedEntities.reduce((prev, next) => { - prev[next.address] = next - return prev - }, {}) - return gatewayApi - .getEntitiesDetails(requestedEntities.map((item) => item.address)) - .andThen((items) => - ResultAsync.combine( - items.map( - ({ - fungible_resources, - non_fungible_resources, - metadata, - details, - address, - }) => { - const entity = requestedEntitiesMap[address] - if (!entity) { - console.warn('didnt found matching entity!') - return okAsync([]) - } - - const fungibleTokens = fungible_resources.items.map( - transformFungibleResourceItemResponse - ) - - const nftCollections = - entity.type === 'account' - ? non_fungible_resources.items.map( - ( - item: NonFungibleResourcesCollectionItemVaultAggregated - ) => ({ - ...transformNftResourceItemResponse(item), - ownerAddress: entity.address, - }) - ) - : [] - - switch (entity.type) { - case entityType.account: - return okAsync([ - { - entityType: entity.type, - address: entity.address, - metadata: metadata.items, - fungibleTokens, - nftCollections, - } satisfies Entity['account'], - ]) - - case entityType.component: - return okAsync([ - { - entityType: entity.type, - address: entity.address, - metadata: metadata.items, - fungibleTokens, - nftCollections, - details: details as Entity['component']['details'], - } satisfies Entity['component'], - ]) - - case entityType.identity: - return okAsync([ - { - entityType: entity.type, - address: entity.address, - metadata: metadata.items, - } satisfies Entity['identity'], - ]) - - case entityType.fungibleToken: - const symbol = getStringMetadata('symbol', { - metadata: metadata.items, - }) - const name = getStringMetadata('name', { - metadata: metadata.items, - }) - const displayLabel = - [symbol, name].filter(Boolean).join(' - ') || - shortenAddress(entity.address) - return okAsync([ - { - entityType: entity.type, - address: entity.address, - value: entity.value, - metadata: metadata.items, - displayLabel, - } satisfies Entity['fungibleToken'], - ]) - - case entityType.nftCollection: - return gatewayApi - .getEntityNonFungibleIds({ - accountAddress: entity.ownerAddress, - nftAddress: entity.address, - vaultAddress: entity.vaultAddress, - }) - .map((response) => - response.items.map( - (item) => - ({ - entityType: entityType.nft, - nftId: item, - address: `${entity.address}:${item}`, - nftCollectionAddress: entity.address, - ownerAddress: entity.ownerAddress, - } satisfies Entity['nft']) - ) - ) - .map((items) => [ - { - entityType: entityType.nftCollection, - address: entity.address, - metadata: metadata.items, - vaultAddress: entity.vaultAddress, - totalCount: entity.totalCount, - } satisfies Entity['nftCollection'], - ...items, - ]) - - default: { - return errAsync(new Error('Invalid entity type')) - } - } - } - ) - ) - ) - .map((items) => items.flat()) -} - -export const addEntities = ( - input: AddEntityToCollectionInput[], - forceReload?: boolean -) => { - const storedEntities = entitiesState.value - const entitiesToFetch = input.filter( - (item) => !storedEntities[item.type][item.address] - ) - - if (entitiesToFetch.length === 0 || forceReload) return - - fetchEntities(entitiesToFetch).map((items) => { - const entities = items.reduce( - (acc, curr) => ({ - ...acc, - [curr.entityType]: { ...acc[curr.entityType], [curr.address]: curr }, - }), - entitiesState.value - ) - - setEntities(entities) - - const childEntities = items.reduce( - (acc, curr) => { - if ( - !( - [ - entityType.account, - entityType.component, - ] as (keyof typeof entityType)[] - ).includes(curr.entityType) - ) - return acc - - const item = curr as Entity['account'] | Entity['component'] - - const fungibleTokens = item.fungibleTokens.map((fungibleToken) => ({ - type: entityType.fungibleToken, - ...fungibleToken, - })) satisfies AddEntityToCollectionInput[] - - const nftCollections = item.nftCollections.map((nftCollection) => ({ - type: entityType.nftCollection, - ...nftCollection, - ownerAddress: item.address, - })) - return [...acc, ...fungibleTokens, ...nftCollections] - }, - [] - ) satisfies AddEntityToCollectionInput[] - - return addEntities(childEntities, forceReload) - }) -} - -export const useEntities = createObservableHook( - entitiesState, - entitiesState.value -) diff --git a/examples/helpers/blake2b.ts b/examples/helpers/blake2b.ts deleted file mode 100644 index d17337e0..00000000 --- a/examples/helpers/blake2b.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Result, err, ok } from 'neverthrow' -import blake from 'blakejs' -import { Buffer } from 'buffer' - -const toArrayBuffer = (buffer: Buffer): ArrayBuffer => { - const arrayBuffer = new ArrayBuffer(buffer.length) - const view = new Uint8Array(arrayBuffer) - for (let i = 0; i < buffer.length; ++i) { - view[i] = buffer[i] - } - return arrayBuffer -} - -export const bufferToUnit8Array = (buffer: Buffer): Uint8Array => - new Uint8Array(toArrayBuffer(buffer)) - -export const blake2b = (input: Buffer): Result => { - try { - return ok(blake.blake2bHex(bufferToUnit8Array(input), undefined, 32)).map( - (hex) => Buffer.from(hex, 'hex') - ) - } catch (error) { - return err(error as Error) - } -} diff --git a/examples/helpers/create-challenge.ts b/examples/helpers/create-challenge.ts deleted file mode 100644 index f87dd019..00000000 --- a/examples/helpers/create-challenge.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { Buffer } from 'buffer' - -export const createChallenge = () => - Buffer.from(crypto.getRandomValues(new Uint8Array(32))).toString('hex') diff --git a/examples/helpers/create-observable-hook.ts b/examples/helpers/create-observable-hook.ts deleted file mode 100644 index 1d1babba..00000000 --- a/examples/helpers/create-observable-hook.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { useEffect, useState } from 'react' -import { Observable } from 'rxjs' - -export const createObservableHook = - (observable: Observable, defaultValue: T) => - () => { - const [state, setState] = useState(defaultValue) - useEffect(() => { - const subscription = observable.subscribe(setState) - return () => { - subscription.unsubscribe() - } - }, []) - - return state - } diff --git a/examples/helpers/find-metadata.ts b/examples/helpers/find-metadata.ts deleted file mode 100644 index f89992e7..00000000 --- a/examples/helpers/find-metadata.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const getStringMetadata = (key: string, object: { metadata: any[] }) => { - const metadata = object.metadata.find((m) => m.key === key) - return metadata ? metadata.value.typed.value : undefined -} diff --git a/examples/helpers/get-network-id.ts b/examples/helpers/get-network-id.ts deleted file mode 100644 index 129821ed..00000000 --- a/examples/helpers/get-network-id.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { - RadixNetwork, - RadixNetworkConfig, -} from '@radixdlt/babylon-gateway-api-sdk' -import { ENV_NETWORK_NAME } from '../config' - -const networkId = RadixNetworkConfig?.[ENV_NETWORK_NAME]?.networkId - -export const DEFAULT_NETWORK_ID = networkId - ? String(networkId) - : RadixNetwork.Stokenet.toString() - -export const getNetworkId = () => { - const urlParams = new URLSearchParams(window.location.search) - const networkId = parseInt( - urlParams.get('networkId') || DEFAULT_NETWORK_ID, - 10 - ) - return networkId -} diff --git a/examples/helpers/hash.spec.ts b/examples/helpers/hash.spec.ts deleted file mode 100644 index 2af04ca5..00000000 --- a/examples/helpers/hash.spec.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { join } from 'path' -import { readFileSync } from 'fs' -import { hash } from './hash' - -describe('hash', () => { - it('should blake hash', () => { - const gumballMachineWasm = readFileSync( - join(__dirname, '../assets/gumball_machine.wasm') - ).toString('hex') - expect(hash(gumballMachineWasm).toString('hex')).toBe( - '87dfdc0813b34ae5ffca030a8c7901adb748b61890bbf03d2d3db4d68ab630cb' - ) - }) -}) diff --git a/examples/helpers/hash.ts b/examples/helpers/hash.ts deleted file mode 100644 index 654cbdc6..00000000 --- a/examples/helpers/hash.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Buffer } from 'buffer' -import blake from 'blakejs' -import { bufferToUnit8Array } from './blake2b' - -export function hash(input: string): Buffer { - return Buffer.from( - blake - .blake2bHex(bufferToUnit8Array(Buffer.from(input, 'hex')), undefined, 32) - .toString(), - 'hex' - ) -} diff --git a/examples/helpers/load-binary-from-url.ts b/examples/helpers/load-binary-from-url.ts deleted file mode 100644 index 427cddef..00000000 --- a/examples/helpers/load-binary-from-url.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Buffer } from 'buffer' -import { ResultAsync } from 'neverthrow' - -export const loadBinaryFromUrl = (url: string) => - ResultAsync.fromPromise( - fetch(url) - .then((response) => response.arrayBuffer()) - .then((buffer) => Buffer.from(buffer)) - .then((buffer) => buffer.toString('hex')), - (error) => error as Error - ) diff --git a/examples/helpers/shorten-address.ts b/examples/helpers/shorten-address.ts deleted file mode 100644 index 88d6d919..00000000 --- a/examples/helpers/shorten-address.ts +++ /dev/null @@ -1,11 +0,0 @@ -export const shortenAddress = (address?: string) => { - if (!address) { - console.warn('Address is undefined') - return '' - } - - return `${address.slice(0, 4)}...${address.slice( - address.length - 6, - address.length - )}` -} diff --git a/examples/helpers/url-state.ts b/examples/helpers/url-state.ts deleted file mode 100644 index 573f9eb9..00000000 --- a/examples/helpers/url-state.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Buffer } from 'buffer' - -export const decodeStateFromUrlHash = () => { - try { - const hash = window.location.hash - if (hash) { - const stringified = Buffer.from(hash.slice(1), 'base64').toString() - const parsed = JSON.parse(stringified) - return typeof parsed === 'object' ? parsed : {} - } - } catch (_) { - return {} - } -} - -export const encodeStateToUrlHash = (key: string, data: any) => { - const currentState = decodeStateFromUrlHash() - const base64 = Buffer.from( - JSON.stringify({ ...currentState, [key]: data }) - ).toString('base64') - window.location.hash = base64 -} diff --git a/examples/index.css b/examples/index.css deleted file mode 100644 index ec0b32f2..00000000 --- a/examples/index.css +++ /dev/null @@ -1,6 +0,0 @@ -body { - --radix-connect-button-border-radius: 8px; -} -pre { - margin: 0; -} diff --git a/examples/index.html b/examples/index.html index 60ca0900..a1dbbaa6 100644 --- a/examples/index.html +++ b/examples/index.html @@ -2,29 +2,9 @@ - - - The Radix dApp Sandbox - - - - - - - - - -
    +
    + diff --git a/examples/integration-tests/GumballMachine/DeployGumballMachineCard.tsx b/examples/integration-tests/GumballMachine/DeployGumballMachineCard.tsx deleted file mode 100644 index dfd05917..00000000 --- a/examples/integration-tests/GumballMachine/DeployGumballMachineCard.tsx +++ /dev/null @@ -1,151 +0,0 @@ -// @ts-ignore -import gumballWasmUrl from '../../assets/gumball_machine.wasm?url' -// @ts-ignore -import gumballSchemaUrl from '../../assets/gumball_machine.rpd?url' -import * as React from 'react' -import Button from '@mui/joy/Button' -import { useRdt } from '../../rdt/hooks/useRdt' -import { Card } from '../../components/Card' -import { useLogger } from '../../components/Logger' -import { ResultAsync } from 'neverthrow' -import { loadBinaryFromUrl } from '../../helpers/load-binary-from-url' -import { getDeployPackageManifest } from '../../manifests/deploy-package' -import { setGumballMachineState, useGumballMachineState } from '../state' -import Alert from '@mui/joy/Alert' -import { InstantiateGumballMachineCard } from './InstantiateGumballMachineCard' -import { SelectAccount } from '../../account/SelectAccount' -import { Box } from '@mui/joy' -import { SelectNftCollection } from '../../account/SelectNftCollection' -import { SelectNft } from '../../account/SelectNft' -import { sborDecode } from '../../ret/decode-sbor' -import { gatewayApi } from '../../rdt/rdt' - -const loadGumballMachineBinaries = () => - ResultAsync.combine([ - loadBinaryFromUrl(gumballWasmUrl), - loadBinaryFromUrl(gumballSchemaUrl).andThen((schema) => sborDecode(schema)), - ]) - -export const DeployGumballMachineCard = () => { - const rdt = useRdt() - const { gumballMachinePackageAddress } = useGumballMachineState() - const { Logger, addLog, reset } = useLogger() - - const [state, setState] = React.useState<{ - ownerAccountAddress?: string - ownerBadgeAddress?: string - loading: boolean - account?: string - nftAddress?: string - nftCollectionAddress?: string - }>({ loading: false }) - - const exec = () => { - setState((prev) => ({ ...prev, loading: true })) - return loadGumballMachineBinaries() - .andThen(([wasm, rpd]) => { - const transactionManifest = getDeployPackageManifest({ - account: state.ownerAccountAddress!, - nftAddress: state.nftAddress!, - wasm, - rpd, - }) - console.log(transactionManifest) - addLog('deploying gumball machine package...') - return rdt.walletApi.sendTransaction({ - transactionManifest, - blobs: [wasm], - version: 1, - }) - }) - .andThen(({ transactionIntentHash }) => - gatewayApi - .getTransactionDetails(transactionIntentHash) - .map( - (response): string => - (response.transaction.receipt?.state_updates as any) - ?.new_global_entities?.[0]?.entity_address as string - ) - ) - .map((packageAddress) => { - addLog(`gumball machine packageAddress ${packageAddress}`) - setGumballMachineState({ - gumballMachinePackageAddress: packageAddress, - components: {}, - }) - setState((prev) => ({ ...prev, loading: false })) - return packageAddress - }) - .mapErr((err) => { - setState((prev) => ({ ...prev, loading: false })) - addLog(JSON.stringify(err, null, 2)) - }) - } - - return ( - { - setGumballMachineState({ - gumballMachinePackageAddress: '', - components: {}, - }) - reset() - }} - > - Reset - - } - > - {gumballMachinePackageAddress && ( - {gumballMachinePackageAddress} - )} - - {gumballMachinePackageAddress ? ( - - ) : ( - - { - setState((prev) => ({ ...prev, ownerAccountAddress })) - }} - value={state.account} - /> - {state.ownerAccountAddress ? ( - { - setState((prev) => ({ ...prev, nftCollectionAddress })) - }} - /> - ) : null} - {state.nftCollectionAddress ? ( - { - setState((prev) => ({ ...prev, nftAddress })) - }} - /> - ) : null} - - - )} - - {Logger && {Logger}} - - ) -} diff --git a/examples/integration-tests/GumballMachine/GumballMachineCard.tsx b/examples/integration-tests/GumballMachine/GumballMachineCard.tsx deleted file mode 100644 index 97c23b4e..00000000 --- a/examples/integration-tests/GumballMachine/GumballMachineCard.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import { Box, Button, Input, Stack, Typography } from '@mui/joy' -import { Card } from '../../components/Card' -import React from 'react' -import { GumballMachineComponentState, setGumballPrice } from '../state' -import Layout from '../../components/Layout' -import { GumballMachineTransactionManifests } from '../../manifests/gumball-machine' -import { useRdt } from '../../rdt/hooks/useRdt' -import { useLogger } from '../../components/Logger' -import { TransactionStatus } from '@radixdlt/babylon-gateway-api-sdk' -import { GumballMachineInfoBox } from './GumballMachineInfoBox' -import { gatewayApi } from '../../rdt/rdt' -export const GumballMachineCard = ( - gumballMachine: GumballMachineComponentState -) => { - const rdt = useRdt() - const { Logger, addLog } = useLogger() - const [currentPrice, setCurrentPrice] = React.useState( - gumballMachine.gumballPrice - ) - const { setPrice } = GumballMachineTransactionManifests(gumballMachine) - const transactionManifest = setPrice(currentPrice) - - const exec = () => { - addLog(transactionManifest) - rdt.walletApi - .sendTransaction({ - transactionManifest, - version: 1, - }) - .andThen(({ transactionIntentHash }) => - gatewayApi.getTransactionDetails(transactionIntentHash) - ) - .map((response) => { - if ( - response.transaction.transaction_status === - TransactionStatus.CommittedSuccess - ) { - setGumballPrice(gumballMachine.address, currentPrice) - } - addLog(`transaction status: ${response.transaction.transaction_status}`) - }) - .mapErr((error) => addLog(JSON.stringify(error, null, 2))) - } - return ( - - - - - - - - - - - - - - - Gumball Price - { - const value = parseInt(event.target.value || '10', 10) - setCurrentPrice(value) - }} - /> - - - -   - - - - - - ) -} diff --git a/examples/integration-tests/GumballMachine/GumballMachineExample.tsx b/examples/integration-tests/GumballMachine/GumballMachineExample.tsx deleted file mode 100644 index 6b433a35..00000000 --- a/examples/integration-tests/GumballMachine/GumballMachineExample.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import * as React from 'react' -import Button from '@mui/joy/Button' -import { useRdt } from '../../rdt/hooks/useRdt' -import { Card } from '../../components/Card' -import { GumballMachineComponentState, useGumballMachineState } from '../state' -import { useLogger } from '../../components/Logger' -import { Code } from '../../components/Code' -import { Box, FormControl, FormLabel } from '@mui/joy' -import { SelectGumballComponent } from './SelectGumballComponent' -import { SelectAccount } from '../../account/SelectAccount' -import { gatewayApi } from '../../rdt/rdt' - -export type GumballMachineExampleConfig = { - componentAlpha?: GumballMachineComponentState - componentBravo?: GumballMachineComponentState - accountAlpha?: string - accountBravo?: string -} - -export const GumballMachineExample = ({ - title, - description, - visibleInputFields, - transactionManifest, - configChange, -}: { - title: string - description: string - visibleInputFields: string[] - transactionManifest: string - configChange: (component: GumballMachineExampleConfig) => void -}) => { - const rdt = useRdt() - const [config, setConfig] = React.useState({}) - const gumballMachineState = useGumballMachineState() - - const { Logger, addLog } = useLogger() - - const exec = () => { - addLog(transactionManifest) - rdt.walletApi - .sendTransaction({ - transactionManifest, - version: 1, - }) - .andThen(({ transactionIntentHash }) => - gatewayApi.getTransactionDetails(transactionIntentHash) - ) - .map((response) => - addLog(`transaction status: ${response.transaction.transaction_status}`) - ) - .mapErr((error) => addLog(JSON.stringify(error, null, 2))) - } - - return ( - - {visibleInputFields.includes('componentAlpha') && ( - - Machine Alpha - { - setConfig({ ...config, componentAlpha }) - configChange({ ...config, componentAlpha }) - }} - > - - )} - {visibleInputFields.includes('componentBravo') && ( - - Machine Bravo - { - setConfig({ ...config, componentBravo }) - configChange({ ...config, componentBravo }) - }} - > - - )} - {visibleInputFields.includes('accountAlpha') && ( - - Alpha Account - { - setConfig({ ...config, accountAlpha: account }) - configChange({ ...config, accountAlpha: account }) - }} - sx={{ mb: 1 }} - > - - )} - {visibleInputFields.includes('accountBravo') && ( - - Bravo Account - { - setConfig({ ...config, accountBravo: account }) - configChange({ ...config, accountBravo: account }) - }} - sx={{ mb: 1 }} - > - - )} - - - {description} - - {Logger} - - - ) -} diff --git a/examples/integration-tests/GumballMachine/GumballMachineExamples.tsx b/examples/integration-tests/GumballMachine/GumballMachineExamples.tsx deleted file mode 100644 index e96c0bfe..00000000 --- a/examples/integration-tests/GumballMachine/GumballMachineExamples.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import * as React from 'react' -import { useGumballMachineState } from '../state' -import { - GumballMachineExample, - GumballMachineExampleConfig, -} from './GumballMachineExample' -import { - getExample1, - getExample2, - getExample3, - getExample4, - getExample5, - getExample6, -} from '../../manifests/examples' -import { useXrdAddress } from '../../network/state' - -export const GumballMachineExamples = () => { - const [configMap, setConfigMap] = React.useState< - Record - >({}) - const xrdAddress = useXrdAddress() - const gumballMachineState = useGumballMachineState() - if (!Object.keys(gumballMachineState.components).length) return null - return [ - [ - getExample1, - ['accountAlpha', 'accountBravo', 'componentAlpha'], - `1) Withdraw 10 XRD from Alpha -2) Create bucket of 10 XRD -3) Call buy_gumball with bucket -4) Create bucket of 1 gumball -5) Deposit gumball bucket to Alpha -6) Deposit entire worktop to Bravo`, - ], - [ - getExample2, - ['accountAlpha', 'accountBravo', 'componentAlpha'], - `1) Withdraw 0.5 XRD from Alpha -2) Withdraw 0.5 XRD from Bravo -3) Create bucket of 1 XRD -4) Call buy_gumball with bucket -5) Deposit entire worktop to Alpha`, - ], - [ - getExample3, - ['accountAlpha', 'accountBravo', 'componentAlpha'], - `1) Withdraw 5 XRD from Alpha -2) Withdraw 3 XRD from Alpha -3) Create bucket “Delta” of 2 XRD -4) Create bucket “Echo” of 2.5 XRD -5) Create bucket “Foxtrot” of 3.5 XRD -6) Call buy_gumball with bucket Delta -7) Create bucket “Golf” of 1 XRD -8) Call deposit_batch on Alpha with buckets Echo, Foxtrot -9) Call deposit on Bravo with bucket Golf -10) Deposit entire worktop to Alpha`, - ], - [ - getExample4, - ['accountAlpha', 'componentAlpha'], - `1) Create proof of admin badge from Alpha -2) Call NYI withdraw_funds -a) Deposit entire worktop to Alpha`, - ], - [ - getExample5, - ['accountAlpha', 'accountBravo', 'componentAlpha'], - `1) Withdraw 10 XRD from Bravo -2) Create proof of admin badge from Alpha -3) Create bucket of 5 XRD -4) Call buy_gumball with bucket -5) Call withdraw_funds -6) Deposit entire worktop to Alpha`, - ], - [ - getExample6, - ['accountAlpha', 'accountBravo', 'componentAlpha', 'componentBravo'], - `Instantiate another gumball machine prior to this scenario, again assuming price of 1 - -1) Withdraw 8 XRD from Alpha -2) Create bucket of 8 XRD -3) Call buy_gumball on machine Alpha with bucket -4) Create bucket of 7 XRD -5) Call buy_gumball on machine Bravo with bucket -6) Deposit entire worktop to Bravo`, - ], - ].map(([fn, visibleInputFields, description]: any, index) => ( - { - setConfigMap({ - ...configMap, - [index]: config, - }) - }} - visibleInputFields={visibleInputFields} - title={`Gumball Machine Example ${index + 1}`} - description={description} - transactionManifest={fn(xrdAddress, configMap[index] || {})} - /> - )) -} diff --git a/examples/integration-tests/GumballMachine/GumballMachineInfoBox.tsx b/examples/integration-tests/GumballMachine/GumballMachineInfoBox.tsx deleted file mode 100644 index 32d52eda..00000000 --- a/examples/integration-tests/GumballMachine/GumballMachineInfoBox.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { Box, Typography } from '@mui/joy' -import React from 'react' -import { shortenAddress } from '../../helpers/shorten-address' - -import { Clipboard } from '../../components/Clipboard' -export const GumballMachineInfoBox = ({ - label, - address, -}: { - label: string - address: string -}) => { - return ( - - - {label} - - - {shortenAddress(address)} - - ) -} diff --git a/examples/integration-tests/GumballMachine/InstantiateGumballMachineCard.tsx b/examples/integration-tests/GumballMachine/InstantiateGumballMachineCard.tsx deleted file mode 100644 index cebae706..00000000 --- a/examples/integration-tests/GumballMachine/InstantiateGumballMachineCard.tsx +++ /dev/null @@ -1,169 +0,0 @@ -import * as React from 'react' -import Button from '@mui/joy/Button' -import { useRdt } from '../../rdt/hooks/useRdt' -import { Card } from '../../components/Card' -import { - setGumballMachineState, - addGumballMachineComponent, - useGumballMachineState, -} from '../state' -import { useLogger } from '../../components/Logger' -import { Box, Input, FormControl, FormLabel } from '@mui/joy' -import { useAccounts } from '../../account/state' -import { SelectAccount } from '../../account/SelectAccount' -import { accounts as accountsBuilder } from '../../../src/data-request/builders/accounts' -import { gatewayApi } from '../../rdt/rdt' -import { getInstantiateGumballMachineManifest } from '../../manifests/deploy-package' - -const DEFAULT_GUMBALL_IMAGE = - 'https://static.vecteezy.com/system/resources/previews/010/283/423/original/sweet-candy-graphics-illustration-free-vector.jpg' - -export const InstantiateGumballMachineCard = () => { - const rdt = useRdt() - const gumballMachineState = useGumballMachineState() - const { Logger, addLog, reset } = useLogger() - const accounts = useAccounts() - const [state, setState] = React.useState({ - ownerAccount: '', - gumballPrice: 1, - gumballFlavour: 'GUM', - gumballImage: DEFAULT_GUMBALL_IMAGE, - }) - - const getAccounts = () => { - addLog('getting account from wallet...') - return rdt.walletApi.sendOneTimeRequest(accountsBuilder().exactly(1)) - } - - const instantiateComponent = (address: string) => { - return rdt.walletApi - .sendTransaction({ - transactionManifest: getInstantiateGumballMachineManifest( - address, - state.gumballPrice, - state.gumballFlavour, - state.gumballImage, - gumballMachineState.gumballMachinePackageAddress - ), - version: 1, - }) - .andThen(({ transactionIntentHash }) => - gatewayApi.getTransactionDetails(transactionIntentHash) - ) - } - - const exec = () => { - addLog(`instantiating gumball machine component`) - return instantiateComponent(state.ownerAccount) - .map((values) => { - const state_updates = values.transaction.receipt?.state_updates as { - new_global_entities: { entity_address: string; entity_type: string }[] - } - - const createdEntities = state_updates.new_global_entities.map( - (entity) => entity.entity_address - ) - const entities = { - dApp: createdEntities[1], - adminBadge: createdEntities[2], - gumballToken: createdEntities[3], - } - - addGumballMachineComponent({ - address: createdEntities[0], - entities, - gumballPrice: state.gumballPrice, - gumballFlavour: state.gumballFlavour, - ownerAccountAddress: state.ownerAccount, - }) - }) - .mapErr((err) => { - addLog(`${JSON.stringify(err, null, 2)}`) - }) - } - - return ( - { - reset() - setGumballMachineState({ - gumballMachinePackageAddress: - gumballMachineState.gumballMachinePackageAddress, - components: {}, - }) - }} - > - Reset - - } - > - {accounts.length ? ( - - { - setState((prev) => ({ ...prev, ownerAccount: value as string })) - }} - /> - - Gumball Price - { - setState((prev) => ({ - ...prev, - gumballPrice: Number(ev.target.value) ?? 1, - })) - }} - sx={{ mb: 1 }} - placeholder="Type Gumball price... (default: 1)" - /> - - - - Gumball Flavour - { - setState((prev) => ({ - ...prev, - gumballFlavour: ev.target.value || 'GUM', - })) - }} - sx={{ mb: 1 }} - placeholder="Type Gumball Flavour... (default: GUM)" - /> - - - - Gumball Image - { - setState((prev) => ({ - ...prev, - gumballImage: ev.target.value || DEFAULT_GUMBALL_IMAGE, - })) - }} - sx={{ mb: 1 }} - placeholder="Gumball Image URL" - /> - - - - - ) : ( - - )} - {Logger} - - ) -} diff --git a/examples/integration-tests/GumballMachine/SelectGumballComponent.tsx b/examples/integration-tests/GumballMachine/SelectGumballComponent.tsx deleted file mode 100644 index b875666a..00000000 --- a/examples/integration-tests/GumballMachine/SelectGumballComponent.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react' -import { Select, Option } from '@mui/joy' -import { GumballMachineComponentState, useGumballMachineState } from '../state' -import { SxProps } from '@mui/joy/styles/types' -import { shortenAddress } from '../../helpers/shorten-address' - -export const SelectGumballComponent = ({ - sx = {}, - onChange, - value, -}: { - placeholder?: string - sx?: SxProps - onChange: (account: GumballMachineComponentState) => void - value?: GumballMachineComponentState -}) => { - const { components } = useGumballMachineState() - return ( - - ) -} diff --git a/examples/integration-tests/GumballMachine/SetGumballMachinePackageCard.tsx b/examples/integration-tests/GumballMachine/SetGumballMachinePackageCard.tsx deleted file mode 100644 index 12e236b0..00000000 --- a/examples/integration-tests/GumballMachine/SetGumballMachinePackageCard.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import * as React from 'react' -import { Card } from '../../components/Card' -import { setGumballMachineState, useGumballMachineState } from '../state' -import { Button, FormControl, FormLabel, Input } from '@mui/joy' - -export const SetGumballMachinePackageCard = () => { - const [address, setAddress] = React.useState('') - const { gumballMachinePackageAddress } = useGumballMachineState() - return gumballMachinePackageAddress ? null : ( - - - Gumball Machine Package Address - { - setAddress(e.target.value) - }} - /> - - - - ) -} diff --git a/examples/integration-tests/IntegrationTestsPage.tsx b/examples/integration-tests/IntegrationTestsPage.tsx deleted file mode 100644 index 5de5204e..00000000 --- a/examples/integration-tests/IntegrationTestsPage.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import * as React from 'react' -import Box from '@mui/joy/Box' -import { DeployGumballMachineCard } from './GumballMachine/DeployGumballMachineCard' -import { GumballMachineExamples } from './GumballMachine/GumballMachineExamples' -import { useGumballMachineState } from './state' -import { GumballMachineCard } from './GumballMachine/GumballMachineCard' -import { SetGumballMachinePackageCard } from './GumballMachine/SetGumballMachinePackageCard' - -export const IntegrationTestsPage = () => { - const { components } = useGumballMachineState() - - return ( - - - - {Object.values(components).map((component) => ( - - ))} - {GumballMachineExamples()} - - ) -} diff --git a/examples/integration-tests/state.ts b/examples/integration-tests/state.ts deleted file mode 100644 index b44e258d..00000000 --- a/examples/integration-tests/state.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { BehaviorSubject } from 'rxjs' -import { createObservableHook } from '../helpers/create-observable-hook' - -export type GumballMachineComponentState = { - address: string - ownerAccountAddress: string - entities: { - adminBadge: string - gumballToken: string - dApp: string - } - gumballPrice: number - gumballFlavour: string -} - -export type GumballMachineState = { - gumballMachinePackageAddress: string - components: Record -} - -const gumballMachineStateDefaults = { - gumballMachinePackageAddress: '', - components: {}, -} satisfies GumballMachineState - -const getGumballMachineState = (): GumballMachineState => { - try { - const raw = localStorage.getItem('gumballMachineState') - if (!raw) return gumballMachineStateDefaults - const parsed = JSON.parse(raw) as unknown as GumballMachineState - return parsed - } catch (_) { - return gumballMachineStateDefaults - } -} - -const gumballMachineState = new BehaviorSubject( - getGumballMachineState() -) - -export const useGumballMachineState = createObservableHook( - gumballMachineState, - getGumballMachineState() -) - -export const addGumballMachineComponent = ( - value: GumballMachineComponentState -) => { - const state = getGumballMachineState() - state.components[value.address] = value - setGumballMachineState(state) -} - -export const setGumballPrice = (componentAddress: string, price: number) => { - const state = getGumballMachineState() - state.components[componentAddress].gumballPrice = price - setGumballMachineState(state) -} - -export const setGumballMachineState = (value: GumballMachineState) => { - localStorage.setItem('gumballMachineState', JSON.stringify(value)) - gumballMachineState.next(value) -} diff --git a/examples/layouts/Header.tsx b/examples/layouts/Header.tsx deleted file mode 100644 index f01c6a04..00000000 --- a/examples/layouts/Header.tsx +++ /dev/null @@ -1,103 +0,0 @@ -// @ts-ignore -import radixLogo from '../assets/logo.svg' -import * as React from 'react' -import '@radixdlt/dapps-dropdown' -import Box from '@mui/joy/Box' -import IconButton from '@mui/joy/IconButton' -import Layout from '../components/Layout' -import MenuIcon from '@mui/icons-material/Menu' -import Select from '@mui/joy/Select' -import Option from '@mui/joy/Option' -import { setNetworkId, useNetworkId } from '../network/state' -import { RadixNetworkConfig } from '@radixdlt/babylon-gateway-api-sdk' -import { IS_PUBLIC } from '../config' - -declare global { - namespace JSX { - interface IntrinsicElements { - 'radix-connect-button': React.DetailedHTMLProps< - React.HTMLAttributes, - HTMLElement - > - 'radix-dapps-dropdown': React.DetailedHTMLProps< - React.HTMLAttributes, - HTMLElement - > - } - } -} - -export const Header = ({ - setDrawerOpen, -}: { - setDrawerOpen: (value: boolean) => void -}) => { - const networkId = useNetworkId() - return ( - - - setDrawerOpen(true)} - sx={{ display: { sm: 'none' } }} - > - - -
    - Radix logo - - - - - - - - - - - ) -} diff --git a/examples/layouts/Page.tsx b/examples/layouts/Page.tsx deleted file mode 100644 index 62ca9a64..00000000 --- a/examples/layouts/Page.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import * as React from 'react' -import { CssVarsProvider } from '@mui/joy/styles' -import CssBaseline from '@mui/joy/CssBaseline' -import teamTheme from '../theme' -import Layout from '../components/Layout' -import { Header } from '../layouts/Header' -import { Sidebar } from '../layouts/Sidebar' -import { Logger } from '../logger/Logger' -import { Outlet } from 'react-router-dom' -import { Link } from '@mui/joy' - -export const Page = () => { - const [drawerOpen, setDrawerOpen] = React.useState(false) - return ( - - - {drawerOpen && ( - setDrawerOpen(false)}> - - - Privacy Policy - - - )} - -
    setDrawerOpen(value)} /> - - - - - Privacy Policy - - - - - - - - - - ) -} diff --git a/examples/layouts/Sidebar.tsx b/examples/layouts/Sidebar.tsx deleted file mode 100644 index ddfaaa2e..00000000 --- a/examples/layouts/Sidebar.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import * as React from 'react' -import IconButton from '@mui/joy/IconButton' -import List from '@mui/joy/List' -import ListSubheader from '@mui/joy/ListSubheader' -import ListItem from '@mui/joy/ListItem' -import ListItemButton from '@mui/joy/ListItemButton' -import ListItemContent from '@mui/joy/ListItemContent' -import KeyboardArrowDownRoundedIcon from '@mui/icons-material/KeyboardArrowDownRounded' -import { NavLink } from 'react-router-dom' -import { IS_PUBLIC } from '../config' - -export const Sidebar = () => ( - - - - Browse - - - - - - {[ - { path: 'data-request', label: 'Data Requests', hidePublic: false }, - { - path: 'one-time-data-request', - label: 'One Time Data Requests', - hidePublic: false, - }, - { path: 'create-token', label: 'Create Token', hidePublic: true }, - { path: 'pools', label: 'Pools', hidePublic: true }, - { - path: 'standard-metadata', - label: 'Standard Metadata', - hidePublic: true, - }, - { - path: 'send-transaction', - label: 'Send Transaction', - hidePublic: true, - }, - { - path: 'rola', - label: 'ROLA', - hidePublic: true, - }, - { - path: 'integration-tests', - label: 'Integration Tests', - hidePublic: true, - }, - - { path: 'settings', label: 'Settings', hidePublic: false }, - ] - .filter((item) => !item.hidePublic || !IS_PUBLIC) - .map((item) => ( - - {({ isActive }) => ( - - - {item.label} - - - )} - - ))} - - - -) diff --git a/examples/logger/Logger.tsx b/examples/logger/Logger.tsx deleted file mode 100644 index 354403e9..00000000 --- a/examples/logger/Logger.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import * as React from 'react' -import Box from '@mui/joy/Box' -import { useLogs, clearLogsSubject } from './state' -import { Code } from '../components/Code' -import Button from '@mui/joy/Button' -import Sheet from '@mui/joy/Sheet' -import Divider from '@mui/joy/Divider' -import Typography from '@mui/joy/Typography' -import { useRdtState } from '../rdt/hooks/useRdtState' - -export const Logger = () => { - const logs = useLogs() - const state = useRdtState() - return ( - - - - - RDT Logs - - - - - - - {`${logs.reverse().join('\n')}`} - - - - - RDT State - - - - {JSON.stringify(state, null, 2)} - - - - ) -} diff --git a/examples/logger/state.ts b/examples/logger/state.ts deleted file mode 100644 index 78cb9f3c..00000000 --- a/examples/logger/state.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { Subject, map, merge, scan, shareReplay } from 'rxjs' -import { createObservableHook } from '../helpers/create-observable-hook' - -export const logSubject = new Subject() -export const clearLogsSubject = new Subject() - -export const appLogger = { - debug: (...rest: any) => { - try { - return logSubject.next( - rest - .map((item) => - typeof item === 'object' ? JSON.stringify(item, null, 2) : item - ) - .join(' ') - ) - } catch (error) {} - }, - error: (...rest: any) => - logSubject.next( - rest - .map((item) => - typeof item === 'object' ? JSON.stringify(item, null, 2) : item - ) - .join(' ') - ), - trace: (...rest: any) => { - // return logSubject.next( - // rest - // .map((item) => typeof item === 'object' ? JSON.stringify(item, null, 2) : item - // ) - // .join(' ') - // ) - }, -} as const - -const logs$ = merge( - clearLogsSubject.pipe(map(() => [] as string[])), - logSubject.pipe( - scan( - (acc, curr: string) => [ - ...acc, - `[${new Date().toLocaleTimeString()}] ${curr}`, - ], - [] as string[] - ) - ) -).pipe(shareReplay(1)) - -export const useLogs = createObservableHook(logs$, []) diff --git a/examples/main.js b/examples/main.js new file mode 100644 index 00000000..7fce98df --- /dev/null +++ b/examples/main.js @@ -0,0 +1,25 @@ +import { + RadixDappToolkit, + DataRequestBuilder, + RadixNetwork, +} from '../src/index.ts' + +document.querySelector('#app').innerHTML = ` + +` + +const rdt = RadixDappToolkit({ + dAppDefinitionAddress: '', + networkId: RadixNetwork.Stokenet, + useCache: false, +}) + +rdt.walletApi.setRequestData(DataRequestBuilder.accounts().atLeast(1)) + +rdt.walletApi.walletData$.subscribe((state) => { + console.log(state) +}) + +rdt.walletApi.provideChallengeGenerator(async () => + Buffer.from(crypto.getRandomValues(new Uint8Array(32))).toString('hex') +) diff --git a/examples/manifests/deploy-package.ts b/examples/manifests/deploy-package.ts deleted file mode 100644 index 57e1573e..00000000 --- a/examples/manifests/deploy-package.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { hash } from '../helpers/hash' - -export const getDeployPackageManifest = ({ - account, - wasm, - rpd, - nftAddress, -}: { - account: string - wasm: string - rpd: string - nftAddress: string -}) => { - const wasmHash = hash(wasm).toString('hex') - const [nftCollectionAddress, nftId] = nftAddress.split(':') - return ` - CALL_METHOD - Address("${account}") - "create_proof_of_non_fungibles" - Address("${nftCollectionAddress}") - Array( - NonFungibleLocalId("${nftId}") - ) -; - - PUBLISH_PACKAGE_ADVANCED - Enum( # Owner Role - Enum( - Enum( - Enum( - Enum<0u8>( # ResourceOrNonFungible::NonFungible - NonFungibleGlobalId("${nftAddress}") - ) - ) - ) - ) - ) - ${rpd} - Blob("${wasmHash}") # Package Code - Map() # Metadata - None; # Address Reservation` -} - -export const getInstantiateGumballMachineManifest = ( - ownerAddress: string, - gumballPrice: number, - gumballFlavour: string, - gumballImage: string, - gumballMachinePackageAddress: string -) => ` - CALL_FUNCTION Address("${gumballMachinePackageAddress}") "GumballMachine" "instantiate" Decimal("${gumballPrice}") "${gumballFlavour}" "${gumballImage}"; - CALL_METHOD Address("${ownerAddress}") "deposit_batch" Expression("ENTIRE_WORKTOP"); -` \ No newline at end of file diff --git a/examples/manifests/examples.ts b/examples/manifests/examples.ts deleted file mode 100644 index 8c99beb0..00000000 --- a/examples/manifests/examples.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { GumballMachineExampleConfig } from '../integration-tests/GumballMachine/GumballMachineExample' - -export const getExample1 = ( - xrdAddress: string, - { accountAlpha, accountBravo, componentAlpha }: GumballMachineExampleConfig -) => ` -CALL_METHOD Address("${accountAlpha}") "withdraw" Address("${xrdAddress}") Decimal("10"); -TAKE_FROM_WORKTOP Address("${xrdAddress}") Decimal("10") Bucket("xrd"); -CALL_METHOD Address("${componentAlpha?.address}") "buy_gumball" Bucket("xrd"); -TAKE_FROM_WORKTOP Address("${componentAlpha?.entities.gumballToken}") Decimal("1") Bucket("gumball"); -CALL_METHOD Address("${accountAlpha}") "try_deposit_or_abort" Bucket("gumball") Enum<0u8>(); -CALL_METHOD Address("${accountBravo}") "try_deposit_batch_or_abort" Expression("ENTIRE_WORKTOP") Enum<0u8>(); -` - -export const getExample2 = ( - xrdAddress: string, - { accountAlpha, accountBravo, componentAlpha }: GumballMachineExampleConfig -) => ` -CALL_METHOD Address("${accountAlpha}") "withdraw" Address("${xrdAddress}") Decimal("0.5"); -CALL_METHOD Address("${accountBravo}") "withdraw" Address("${xrdAddress}") Decimal("0.5"); -TAKE_FROM_WORKTOP Address("${xrdAddress}") Decimal("1") Bucket("xrd"); -CALL_METHOD Address("${componentAlpha?.address}") "buy_gumball" Bucket("xrd"); -CALL_METHOD Address("${accountAlpha}") "try_deposit_batch_or_abort" Expression("ENTIRE_WORKTOP") Enum<0u8>(); -` - -export const getExample3 = ( - xrdAddress: string, - { accountAlpha, accountBravo, componentAlpha }: GumballMachineExampleConfig -) => ` -CALL_METHOD Address("${accountAlpha}") "withdraw" Address("${xrdAddress}") Decimal("5"); -CALL_METHOD Address("${accountAlpha}") "withdraw" Address("${xrdAddress}") Decimal("3"); -TAKE_FROM_WORKTOP Address("${xrdAddress}") Decimal("2") Bucket("Delta"); -TAKE_FROM_WORKTOP Address("${xrdAddress}") Decimal("2.5") Bucket("Echo"); -TAKE_FROM_WORKTOP Address("${xrdAddress}") Decimal("3.5") Bucket("Foxtrot"); -CALL_METHOD Address("${componentAlpha?.address}") "buy_gumball" Bucket("Delta"); -TAKE_FROM_WORKTOP Address("${xrdAddress}") Decimal("1") Bucket("Golf"); -CALL_METHOD Address("${accountAlpha}") "try_deposit_batch_or_abort" Array(Bucket("Echo"), Bucket("Foxtrot")) Enum<0u8>(); -CALL_METHOD Address("${accountBravo}") "try_deposit_or_abort" Bucket("Golf") Enum<0u8>(); -CALL_METHOD Address("${accountAlpha}") "try_deposit_batch_or_abort" Expression("ENTIRE_WORKTOP") Enum<0u8>(); -` -export const getExample4 = ( - _: string, - { accountAlpha, componentAlpha }: GumballMachineExampleConfig -) => ` - CALL_METHOD Address("${accountAlpha!}") "create_proof_of_amount" Address("${componentAlpha - ?.entities?.adminBadge!}") Decimal("1"); - CALL_METHOD Address("${componentAlpha?.address!}") "withdraw_earnings"; - CALL_METHOD Address("${accountAlpha!}") "try_deposit_batch_or_abort" Expression("ENTIRE_WORKTOP") Enum<0u8>(); -` - -export const getExample5 = ( - xrdAddress: string, - { accountAlpha, accountBravo, componentAlpha }: GumballMachineExampleConfig -) => - `CALL_METHOD Address("${accountBravo}") "withdraw" Address("${xrdAddress}") Decimal("10"); -CALL_METHOD Address("${accountAlpha}") "create_proof_of_amount" Address("${componentAlpha?.entities.adminBadge}") Decimal("1"); -TAKE_FROM_WORKTOP Address("${xrdAddress}") Decimal("5") Bucket("xrd"); -CALL_METHOD Address("${componentAlpha?.address}") "buy_gumball" Bucket("xrd"); -CALL_METHOD Address("${componentAlpha?.address}") "withdraw_earnings" ; -CALL_METHOD Address("${accountAlpha}") "try_deposit_batch_or_abort" Expression("ENTIRE_WORKTOP") Enum<0u8>();` - -export const getExample6 = ( - xrdAddress: string, - { - accountAlpha, - accountBravo, - componentAlpha, - componentBravo, - }: GumballMachineExampleConfig -) => - ` -CALL_METHOD Address("${accountAlpha}") "withdraw" Address("${xrdAddress}") Decimal("8"); -TAKE_FROM_WORKTOP Address("${xrdAddress}") Decimal("8") Bucket("xrd"); -CALL_METHOD Address("${componentAlpha?.address}") "buy_gumball" Bucket("xrd"); -TAKE_FROM_WORKTOP Address("${xrdAddress}") Decimal("7") Bucket("restxrd"); -CALL_METHOD Address("${componentBravo?.address}") "buy_gumball" Bucket("restxrd"); -CALL_METHOD Address("${accountBravo}") "try_deposit_batch_or_abort" Expression("ENTIRE_WORKTOP") Enum<0u8>(); -` diff --git a/examples/manifests/gumball-machine.ts b/examples/manifests/gumball-machine.ts deleted file mode 100644 index 39a3f74c..00000000 --- a/examples/manifests/gumball-machine.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { GumballMachineComponentState } from '../integration-tests/state' - -export const GumballMachineTransactionManifests = ( - { - ownerAccountAddress, - entities, - address: gumballMachineComponentAddress, - }: GumballMachineComponentState = { - address: '', - ownerAccountAddress: '', - gumballFlavour: '', - gumballPrice: 0, - entities: { - dApp: '', - adminBadge: '', - gumballToken: '', - }, - } -) => { - const setPrice = ( - price: number - ) => `CALL_METHOD Address("${ownerAccountAddress}") "create_proof_of_amount" Address("${entities.adminBadge}") Decimal("1"); -CALL_METHOD Address("${gumballMachineComponentAddress}") "set_price" Decimal("${price}"); -CALL_METHOD Address("${ownerAccountAddress}") "try_deposit_batch_or_abort" Expression("ENTIRE_WORKTOP") Enum<0u8>();` - return { setPrice } -} diff --git a/examples/manifests/manifests.spec.ts b/examples/manifests/manifests.spec.ts deleted file mode 100644 index 454b8432..00000000 --- a/examples/manifests/manifests.spec.ts +++ /dev/null @@ -1,282 +0,0 @@ -import { - ManifestSborStringRepresentation, - RadixEngineToolkit, -} from '@radixdlt/radix-engine-toolkit' - -import { createToken } from './tokens' -import { readFileSync } from 'fs' -import { join } from 'path' -import { - getDeployPackageManifest, - getInstantiateGumballMachineManifest, -} from './deploy-package' -import { - getExample1, - getExample2, - getExample3, - getExample4, - getExample5, - getExample6, -} from './examples' -import { GumballMachineTransactionManifests } from './gumball-machine' - -describe('tx manifests', () => { - const NETWORK_ID = 13 - const tokens = createToken( - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2' - ) - const testManifest = async (stringManifest: string) => { - const manifest = await RadixEngineToolkit.Instructions.staticallyValidate( - { - kind: 'String', - value: stringManifest, - }, - NETWORK_ID - ) - - if (manifest.kind === 'Invalid') { - console.log(stringManifest) - console.log(manifest.error) - } - expect(manifest.kind).toEqual('Valid') - } - - it('create fungible token', async () => { - await testManifest( - tokens.fungible({ - name: 'TEST', - symbol: 'TEST', - description: 'TEST', - iconUrl: 'TEST', - initialSupply: 1000, - }) - ) - }) - - it('create fungible token without data', async () => { - await testManifest( - tokens.fungible({ - initialSupply: 1000, - }) - ) - }) - - it('create fungible token with some data', async () => { - await testManifest( - tokens.fungible({ - description: 'TEST', - initialSupply: 1000, - }) - ) - }) - - it('create nft', async () => { - await testManifest( - tokens.nft({ - name: 'TEST', - items: ['First', 'Second', 'Third'], - iconUrl: '', - description: 'TEST', - }) - ) - }) - - describe('deploy package', () => { - it('should create valid deploy package manifest', async () => { - const gumballMachine = readFileSync( - join(__dirname, '../assets/gumball_machine.rpd') - ).toString('hex') - const gumballMachineWasm = readFileSync( - join(__dirname, '../assets/gumball_machine.wasm') - ).toString('hex') - - const sborDecodedSchema = - await RadixEngineToolkit.ManifestSbor.decodeToString( - Buffer.from(gumballMachine, 'hex'), - NETWORK_ID, - ManifestSborStringRepresentation.ManifestString - ) - - const stringManifest = getDeployPackageManifest({ - account: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - wasm: gumballMachineWasm, - rpd: sborDecodedSchema, - nftAddress: - 'resource_tdx_d_1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxepwmma:#1#', - }) - - await testManifest(stringManifest) - }) - }) - - describe('instantiate package', () => { - it('should create valid instantiate package manifest', async () => { - const stringManifest = getInstantiateGumballMachineManifest( - 'account_tdx_d_12x73uw57xyzxm46rdget90s6te524v9wmzpmjk3x9thtd05srsmlc9', - 5, - 'apple', - '', - 'package_tdx_d_1phnlvwut0t6n7gw6rhx53jykunczlc84s86wxttffa9qyh4fvtlp0p' - ) - await testManifest(stringManifest) - }) - }) - - describe('example manifests', () => { - it('should create valid manifest for example 1', async () => { - const example = getExample1( - 'resource_tdx_d_1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxepwmma', - { - accountAlpha: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - accountBravo: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - componentAlpha: { - address: - 'component_tdx_d_1cr30av9azlfc9ufnjvzhxj0dsnydgfy55dqq82pq2pgkqvshqdueq7', - entities: { - gumballToken: - 'resource_tdx_d_1tkx7f4tdf9zlqnhvtjrftddxvpjtvwqshjw5p9v0qslka44un68w6k', - }, - } as any, - } - ) - await testManifest(example) - }) - - it('should create valid manifest for example 2', async () => { - const example = getExample2( - 'resource_tdx_d_1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxepwmma', - { - accountAlpha: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - accountBravo: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - componentAlpha: { - address: - 'component_tdx_d_1cr30av9azlfc9ufnjvzhxj0dsnydgfy55dqq82pq2pgkqvshqdueq7', - entities: { - gumballToken: - 'resource_tdx_d_1tkx7f4tdf9zlqnhvtjrftddxvpjtvwqshjw5p9v0qslka44un68w6k', - }, - } as any, - } - ) - await testManifest(example) - }) - - it('should create valid manifest for example 3', async () => { - const example = getExample3( - 'resource_tdx_d_1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxepwmma', - { - accountAlpha: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - accountBravo: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - componentAlpha: { - address: - 'component_tdx_d_1cr30av9azlfc9ufnjvzhxj0dsnydgfy55dqq82pq2pgkqvshqdueq7', - entities: { - gumballToken: - 'resource_tdx_d_1tkx7f4tdf9zlqnhvtjrftddxvpjtvwqshjw5p9v0qslka44un68w6k', - }, - } as any, - } - ) - await testManifest(example) - }) - - it('should create valid manifest for example 4', async () => { - const example = getExample4( - 'resource_tdx_d_1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxepwmma', - { - accountAlpha: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - accountBravo: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - componentAlpha: { - address: - 'component_tdx_d_1cr30av9azlfc9ufnjvzhxj0dsnydgfy55dqq82pq2pgkqvshqdueq7', - entities: { - gumballToken: - 'resource_tdx_d_1tkx7f4tdf9zlqnhvtjrftddxvpjtvwqshjw5p9v0qslka44un68w6k', - adminBadge: - 'resource_tdx_d_1tkx7f4tdf9zlqnhvtjrftddxvpjtvwqshjw5p9v0qslka44un68w6k', - }, - } as any, - } - ) - await testManifest(example) - }) - - it('should create valid manifest for example 5', async () => { - const example = getExample5( - 'resource_tdx_d_1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxepwmma', - { - accountAlpha: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - accountBravo: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - componentAlpha: { - address: - 'component_tdx_d_1cr30av9azlfc9ufnjvzhxj0dsnydgfy55dqq82pq2pgkqvshqdueq7', - entities: { - gumballToken: - 'resource_tdx_d_1tkx7f4tdf9zlqnhvtjrftddxvpjtvwqshjw5p9v0qslka44un68w6k', - adminBadge: - 'resource_tdx_d_1tkx7f4tdf9zlqnhvtjrftddxvpjtvwqshjw5p9v0qslka44un68w6k', - }, - } as any, - } - ) - await testManifest(example) - }) - - it('should create valid manifest for example 6', async () => { - const example = getExample6( - 'resource_tdx_d_1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxxepwmma', - { - accountAlpha: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - accountBravo: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - componentAlpha: { - address: - 'component_tdx_d_1cr30av9azlfc9ufnjvzhxj0dsnydgfy55dqq82pq2pgkqvshqdueq7', - entities: { - gumballToken: - 'resource_tdx_d_1tkx7f4tdf9zlqnhvtjrftddxvpjtvwqshjw5p9v0qslka44un68w6k', - }, - } as any, - componentBravo: { - address: - 'component_tdx_d_1cr30av9azlfc9ufnjvzhxj0dsnydgfy55dqq82pq2pgkqvshqdueq7', - } as any, - } - ) - await testManifest(example) - }) - }) - - describe('deploy gumball machine manifests', () => { - const manifests = GumballMachineTransactionManifests({ - address: - 'component_tdx_d_1cr30av9azlfc9ufnjvzhxj0dsnydgfy55dqq82pq2pgkqvshqdueq7', - ownerAccountAddress: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - gumballFlavour: 'FLAV', - gumballPrice: 1, - entities: { - dApp: 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - adminBadge: - 'resource_tdx_d_1tkx7f4tdf9zlqnhvtjrftddxvpjtvwqshjw5p9v0qslka44un68w6k', - gumballToken: - 'resource_tdx_d_1tkx7f4tdf9zlqnhvtjrftddxvpjtvwqshjw5p9v0qslka44un68w6k', - }, - }) - it('should create valid `setPrice` manifest', async () => { - await testManifest(manifests.setPrice(2)) - }) - }) -}) diff --git a/examples/manifests/tokens.ts b/examples/manifests/tokens.ts deleted file mode 100644 index e835e3e1..00000000 --- a/examples/manifests/tokens.ts +++ /dev/null @@ -1,213 +0,0 @@ -export const createToken = (address: string) => ({ - fungible: ({ - name, - symbol, - description, - iconUrl, - initialSupply, - }: Partial<{ - iconUrl: string - name: string - description: string - symbol: string - initialSupply: number - }>) => `CREATE_FUNGIBLE_RESOURCE_WITH_INITIAL_SUPPLY - # Owner role - This gets metadata permissions, and is the default for other permissions - # Can set as Enum(access_rule) or Enum(access_rule) - Enum() - true # Whether the engine should track supply (avoid for massively parallelizable tokens) - 18u8 # Divisibility (between 0u8 and 18u8) - Decimal("${initialSupply}") # Initial supply - Tuple( - Some( # Mint Roles (if None: defaults to DenyAll, DenyAll) - Tuple( - Some(Enum()), # Minter (if None: defaults to Owner) - Some(Enum()) # Minter Updater (if None: defaults to Owner) - ) - ), - None, # Burn Roles (if None: defaults to DenyAll, DenyAll) - None, # Freeze Roles (if None: defaults to DenyAll, DenyAll) - None, # Recall Roles (if None: defaults to DenyAll, DenyAll) - None, # Withdraw Roles (if None: defaults to AllowAll, DenyAll) - None # Deposit Roles (if None: defaults to AllowAll, DenyAll) - ) - Tuple( # Metadata initialization - Map( # Initial metadata values - ${[ - { key: 'name', value: name, type: 'String' }, - { - key: 'symbol', - value: symbol, - type: 'String', - }, - { key: 'description', value: description, type: 'String' }, - { key: 'icon_url', value: iconUrl, type: 'Url' }, - ] - .filter(({ value }) => Boolean(value)) - .map( - ({ key, value, type }) => `"${key}" => Tuple( - Some(Enum("${value}")), # Resource Name - true # Locked - )` - ) - .join(', ')} - ), - Map( # Metadata roles - "metadata_setter" => Some(Enum()), # Metadata setter role - "metadata_setter_updater" => None, # Metadata setter updater role as None defaults to OWNER - "metadata_locker" => Some(Enum()), # Metadata locker role - "metadata_locker_updater" => None # Metadata locker updater role as None defaults to OWNER - ) - ) - None; # No Address Reservation - -# Depositing the entirety of the initial supply of the newly created resource into our account -# component. -CALL_METHOD - Address("${address}") - "deposit_batch" - Expression("ENTIRE_WORKTOP");`, - nft: ({ - name, - description, - iconUrl, - items, - }: { - iconUrl: string - name: string - description: string - items: { name: string; description: string; value: string }[] - }) => ` - CREATE_NON_FUNGIBLE_RESOURCE_WITH_INITIAL_SUPPLY - Enum<0u8>() - Enum<1u8>() - true - Enum<0u8>( - Enum<0u8>( - Tuple( - Array( - Enum<14u8>( - Array( - Enum<0u8>( - 12u8 - ), - Enum<0u8>( - 12u8 - ), - Enum<0u8>( - 198u8 - ), - Enum<0u8>( - 10u8 - ) - ) - ) - ), - Array( - Tuple( - Enum<1u8>( - "MetadataStandardNonFungibleData" - ), - Enum<1u8>( - Enum<0u8>( - Array( - "name", - "description", - "key_image_url", - "arbitrary_coolness_rating" - ) - ) - ) - ) - ), - Array( - Enum<0u8>() - ) - ) - ), - Enum<1u8>( - 0u64 - ), - Array() - ) - Map( - ${items - .map(({ name, description, value }, index) => { - return `NonFungibleLocalId("#${index}#") => Tuple( - Tuple( - "${name}", - "${description}", - "${value}", - 45u64 - ) - )` - }) - .join(',')} - ) - Tuple( - Enum<0u8>(), - Enum<0u8>(), - Enum<0u8>(), - Enum<0u8>(), - Enum<0u8>(), - Enum<0u8>(), - Enum<0u8>() - ) - Tuple( - Map( - "description" => Tuple( - Enum<1u8>( - Enum<0u8>( - "${description}" - ) - ), - true - ), - "icon_url" => Tuple( - Enum<1u8>( - Enum<13u8>( - "${iconUrl}" - ) - ), - true - ), - "info_url" => Tuple( - Enum<1u8>( - Enum<13u8>( - "https://developers.radixdlt.com/ecosystem" - ) - ), - true - ), - "name" => Tuple( - Enum<1u8>( - Enum<0u8>( - "${name}" - ) - ), - true - ), - "tags" => Tuple( - Enum<1u8>( - Enum<128u8>( - Array( - "collection", - "sandbox", - "example-tag" - ) - ) - ), - true - ) - ), - Map() - ) - Enum<0u8>() -; -CALL_METHOD - Address("${address}") - "try_deposit_batch_or_abort" - Expression("ENTIRE_WORKTOP") - Enum<0u8>() -;`, -}) diff --git a/examples/network/state.ts b/examples/network/state.ts deleted file mode 100644 index 9d66f22f..00000000 --- a/examples/network/state.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { BehaviorSubject } from 'rxjs' -import { createObservableHook } from '../helpers/create-observable-hook' -import { appLogger } from '../logger/state' -import { - GatewayApiClient, - RadixNetwork, - RadixNetworkConfigById, -} from '@radixdlt/babylon-gateway-api-sdk' -import { DEFAULT_NETWORK_ID } from '../helpers/get-network-id' - -export const bootstrapNetwork = (networkId: number) => { - const gatewayApi = GatewayApiClient.initialize({ - basePath: RadixNetworkConfigById[networkId].gatewayUrl, - applicationName: 'Radix Sandbox dApp', - }) - gatewayApi.status.getNetworkConfiguration().then((response) => { - appLogger.debug({ - ...response, - gateway: RadixNetworkConfigById[networkId].gatewayUrl, - }) - xrdAddress.next(response.well_known_addresses.xrd) - poolPackageAddress.next( - response.well_known_addresses.pool_package || - 'package_tdx_22_1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxx5xy7q7' - ) - }) -} - -const poolPackageAddress = new BehaviorSubject('') -const xrdAddress = new BehaviorSubject('') - -export const useXrdAddress = createObservableHook(xrdAddress, '') -export const usePoolPackageAddress = createObservableHook( - poolPackageAddress, - '' -) - -const getNetworkIdDefault = () => { - const urlParams = new URLSearchParams(window.location.search) - const networkId = parseInt( - urlParams.get('networkId') || - localStorage.getItem('networkId') || - DEFAULT_NETWORK_ID, - 10 - ) - return networkId -} - -export const networkId = new BehaviorSubject(getNetworkIdDefault()) - -export const setNetworkId = (value: number) => { - localStorage.setItem('networkId', `${value}`) - location.reload() -} - -export const useNetworkId = createObservableHook( - networkId, - getNetworkIdDefault() -) diff --git a/examples/one-time-data-request/AccountsCard.tsx b/examples/one-time-data-request/AccountsCard.tsx deleted file mode 100644 index 22e8fbb2..00000000 --- a/examples/one-time-data-request/AccountsCard.tsx +++ /dev/null @@ -1,121 +0,0 @@ -import * as React from 'react' -import Box from '@mui/joy/Box' -import RadioGroup from '@mui/joy/RadioGroup' -import Radio from '@mui/joy/Radio' -import Input from '@mui/joy/Input' -import Checkbox from '@mui/joy/Checkbox' -import FormControl from '@mui/joy/FormControl' -import FormLabel from '@mui/joy/FormLabel' -import { Card } from '../components/Card' - -type Props = { - state: { - enabled: boolean - data: { - numberOfAccounts: { - quantity: number - quantifier: 'atLeast' | 'exactly' - } - withProof: boolean - } - } - updateState: (state: { - enabled: boolean - data: { - numberOfAccounts: { - quantity: number - quantifier: 'atLeast' | 'exactly' - } - withProof: boolean - } - }) => void -} - -export const AccountsCard = ({ state, updateState }: Props) => { - const disabled = !state.enabled - return ( - { - updateState({ ...state, enabled: ev.target.checked }) - }} - /> - } - > - - - - Quantity - { - updateState({ - ...state, - data: { - ...state.data, - numberOfAccounts: { - ...state.data.numberOfAccounts, - quantity: parseInt(ev.target.value, 10), - }, - }, - }) - }} - /> - - - - - { - updateState({ - ...state, - data: { - ...state.data, - numberOfAccounts: { - ...state.data.numberOfAccounts, - quantifier: ev.target.value as any, - }, - }, - }) - }} - > - - - - - - - { - updateState({ - ...state, - data: { ...state.data, withProof: ev.target.checked }, - }) - }} - /> - - - - ) -} diff --git a/examples/one-time-data-request/OneTimeDataRequestsPage.tsx b/examples/one-time-data-request/OneTimeDataRequestsPage.tsx deleted file mode 100644 index 4552b700..00000000 --- a/examples/one-time-data-request/OneTimeDataRequestsPage.tsx +++ /dev/null @@ -1,144 +0,0 @@ -import * as React from 'react' -import Box from '@mui/joy/Box' -import Divider from '@mui/joy/Divider' -import Sheet from '@mui/joy/Sheet' -import Button from '@mui/joy/Button' -import Typography from '@mui/joy/Typography' -import { AccountsCard } from './AccountsCard' -import { PersonaDataCard } from './PersonaDataCard' -import { Code } from '../components/Code' -import { rdt } from '../rdt/rdt' -import { - OneTimeDataRequestBuilder, - OneTimeDataRequestBuilderItem, -} from '../../src' - -export const OneTimeDataRequestsPage = () => { - const [state, setState] = React.useState<{ - accounts: { - enabled: boolean - data: { - numberOfAccounts: { - quantity: number - quantifier: 'atLeast' | 'exactly' - } - withProof: boolean - } - } - personaData: { - enabled: boolean - data: { - fullName: boolean - emailAddresses: boolean - phoneNumbers: boolean - } - } - }>({ - accounts: { - enabled: true, - data: { - numberOfAccounts: { quantity: 1, quantifier: 'atLeast' }, - withProof: false, - }, - }, - personaData: { - enabled: false, - data: { - fullName: false, - emailAddresses: false, - phoneNumbers: false, - }, - }, - }) - - return ( - - - { - setState((prev) => ({ ...prev, accounts: accountsState })) - }} - /> - { - setState((prev) => ({ ...prev, personaData: personaDataState })) - }} - /> - - - - - - - One Time Data Request - - - - - - - {JSON.stringify(state, null, 2)} - - - - - ) -} diff --git a/examples/one-time-data-request/PersonaDataCard.tsx b/examples/one-time-data-request/PersonaDataCard.tsx deleted file mode 100644 index 13454b6e..00000000 --- a/examples/one-time-data-request/PersonaDataCard.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import * as React from 'react' -import Box from '@mui/joy/Box' -import Checkbox from '@mui/joy/Checkbox' -import { Card } from '../components/Card' -import { dataRequestStateClient } from '../rdt/rdt' -import { personaData } from '../../src/data-request/builders/persona-data' - -export const PersonaDataCard = ({ - state, - updateState, -}: { - state: { - enabled: boolean - data: { - fullName: boolean - emailAddresses: boolean - phoneNumbers: boolean - } - } - updateState: (state: { - enabled: boolean - data: { - fullName: boolean - emailAddresses: boolean - phoneNumbers: boolean - } - }) => void -}) => { - const enabled = !!state.enabled - return ( - { - updateState({ ...state, enabled: ev.target.checked }) - }} - /> - } - > - - {Object.values(['fullName', 'emailAddresses', 'phoneNumbers']).map( - (field) => { - let isChecked = false - - if (field === 'fullName') { - isChecked = state.data.fullName - } - - if (field === 'emailAddresses') { - isChecked = state.data.emailAddresses - } - - if (field === 'phoneNumbers') { - isChecked = state.data.phoneNumbers - } - - return ( - - { - if (field === 'fullName') { - updateState({ - ...state, - data: { ...state.data, fullName: ev.target.checked }, - }) - } - - if (field === 'emailAddresses') { - updateState({ - ...state, - data: { - ...state.data, - emailAddresses: ev.target.checked, - }, - }) - } - - if (field === 'phoneNumbers') { - updateState({ - ...state, - data: { - ...state.data, - phoneNumbers: ev.target.checked, - }, - }) - } - }} - /> - - ) - } - )} - - - ) -} diff --git a/examples/one-time-data-request/state.ts b/examples/one-time-data-request/state.ts deleted file mode 100644 index a91cbd33..00000000 --- a/examples/one-time-data-request/state.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { createObservableHook } from '../helpers/create-observable-hook' -import { dataRequestStateClient } from '../rdt/rdt' -import { DataRequestState } from '../../src' - -export const useDataRequestState = createObservableHook( - dataRequestStateClient.state$, - {} -) diff --git a/examples/pools/CreatePoolCard.tsx b/examples/pools/CreatePoolCard.tsx deleted file mode 100644 index 48ec14f7..00000000 --- a/examples/pools/CreatePoolCard.tsx +++ /dev/null @@ -1,210 +0,0 @@ -import { - FormControl, - Select, - Option, - Input, - Button, - FormLabel, - Stack, - Divider, - Chip, -} from '@mui/joy' -import { Card } from '../components/Card' -import * as React from 'react' -import { useState } from 'react' -import { usePoolPackageAddress, useXrdAddress } from '../network/state' -import { createPoolManifest } from './manifests' -import { useEntities } from '../entity/state' -import { useLogger } from '../components/Logger' -import { gatewayApi, rdt } from '../rdt/rdt' -import { TransactionStatus } from '@radixdlt/babylon-gateway-api-sdk' -import { addPoolComponent } from './state' -export const CreatePoolCard = () => { - const [isLoading, setIsLoading] = useState(false) - - const { addLog } = useLogger() - const entities = useEntities() - const [poolType, setPoolType] = useState< - 'OneResourcePool' | 'TwoResourcePool' | 'MultiResourcePool' - >('TwoResourcePool') - const poolPackageAddress = usePoolPackageAddress() - const xrdAddress = useXrdAddress() - const [resourceAddresses, setResourceAddresses] = useState< - Record - >({ - 0: '', - 1: '', - }) - const instantiatePool = () => { - setIsLoading(true) - const transactionManifest = createPoolManifest( - poolPackageAddress, - poolType, - ...Object.values(resourceAddresses) - ) - addLog(transactionManifest) - rdt.walletApi - .sendTransaction({ - transactionManifest, - version: 1, - }) - .andThen(({ transactionIntentHash }) => - gatewayApi.getTransactionDetails(transactionIntentHash) - ) - .map((response) => { - if ( - response.transaction.transaction_status === - TransactionStatus.CommittedSuccess - ) { - addLog('Pool created successfully') - const state_updates = response.transaction.receipt?.state_updates as { - new_global_entities: { - entity_address: string - entity_type: string - }[] - } - - const createdEntities = state_updates.new_global_entities.map( - (entity) => entity.entity_address - ) - - addPoolComponent({ - address: createdEntities[0], - poolUnit: createdEntities[1], - resources: Object.values(resourceAddresses), - transactions: [ - { - transactionIntentHash: response.transaction.intent_hash || '', - status: response.transaction.transaction_status, - }, - ], - }) - } - setIsLoading(false) - addLog(`transaction status: ${response.transaction.transaction_status}`) - }) - .mapErr((error) => { - setIsLoading(false) - addLog(JSON.stringify(error, null, 2)) - }) - } - - const updatePoolType = (numberOfResources: number) => { - if (numberOfResources === 1) { - setPoolType('OneResourcePool') - } else if (numberOfResources === 2) { - setPoolType('TwoResourcePool') - } else { - setPoolType('MultiResourcePool') - } - } - - const updateResourceAddress = (value: string, index: number) => { - setResourceAddresses({ - ...resourceAddresses, - [index]: value, - }) - } - return ( - - - {poolType.slice(0, -4)} - - - - - } - > - - {Object.values(resourceAddresses).map((address, index) => { - return ( - - Resource #{index + 1} - - { - updateResourceAddress(ev.target.value, index) - }} - endDecorator={ - - - - - - - } - /> - - ) - })} - - - - - ) -} diff --git a/examples/pools/PoolCard.tsx b/examples/pools/PoolCard.tsx deleted file mode 100644 index 944c6709..00000000 --- a/examples/pools/PoolCard.tsx +++ /dev/null @@ -1,264 +0,0 @@ -import * as React from 'react' -import { Card } from '../components/Card' -import { Clipboard } from '../components/Clipboard' - -import { - InstantiatedPool, - rememberPoolTransaction, - removePoolComponent, -} from './state' -import { - Button, - Divider, - FormControl, - FormLabel, - Input, - List, - ListItem, - Modal, - ModalClose, - Sheet, - Stack, - Tooltip, - Typography, -} from '@mui/joy' -import { contributeToPoolManifest } from './manifests' -import { useEntities } from '../entity/state' -import { useState } from 'react' -import { SelectAccount } from '../account/SelectAccount' -import { rdt } from '../rdt/rdt' -import { shortenAddress } from '../helpers/shorten-address' -import { InfoBox } from '../components/InfoBox' -import { StandardMetadata } from '../standard-metadata/StandardMetadata' -export const PoolCard = ({ pool }: { pool: InstantiatedPool }) => { - const [isLoading, setIsLoading] = useState(false) - const [isModalOpen, setIsModalOpen] = useState(false) - const [isMetadataModalOpen, setIsMetadataModalOpen] = useState(false) - const [account, setAccount] = useState('') - const [contributions, setContributiones] = useState< - Record< - string, - { - amount: string - accountToWithdrawFrom: string - } - > - >( - pool.resources.reduce((acc, resource) => { - acc[resource] = { - amount: '0', - accountToWithdrawFrom: '', - } - return acc - }, {}) - ) - const { fungibleToken } = useEntities() - - const contribute = () => { - setIsLoading(true) - const transactionManifest = contributeToPoolManifest( - account, - pool.address, - Object.entries(contributions).map(([resourceAddress, value]) => ({ - resourceAddress, - amount: value.amount, - accountToWithdrawFrom: value.accountToWithdrawFrom || account, - })) - ) - rdt.walletApi - .sendTransaction({ - transactionManifest, - version: 1, - }) - .map((result) => { - rememberPoolTransaction(pool.address, result) - setIsLoading(false) - }) - .mapErr((result) => setIsLoading(false)) - } - return ( - <> - setIsModalOpen(false)} - sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center' }} - > - - - - Transactions History - - - {pool.transactions.map((transaction) => { - return ( - - {shortenAddress(transaction.transactionIntentHash)} - - - ) - })} - - - - setIsMetadataModalOpen(false)} - sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center' }} - > - - - - Pool Unit Metadata - - - - - - - - - - } - > - - - - - - - - { - setContributiones({ - ...contributions, - }) - setAccount(value) - }} - > - - {pool.resources.map((resource, index) => { - return ( - - - {fungibleToken[resource] - ? fungibleToken[resource].displayLabel - : 'Unknown Token'}{' '} - Amount ({shortenAddress(resource)}) - - { - setContributiones({ - ...contributions, - [resource]: { - ...contributions[resource], - amount: ev.target.value, - }, - }) - }} - endDecorator={ - - - - { - setContributiones({ - ...contributions, - [resource]: { - ...contributions[resource], - accountToWithdrawFrom: value, - }, - }) - }} - > - - } - /> - - ) - })} - - - - - ) -} diff --git a/examples/pools/PoolsPage.tsx b/examples/pools/PoolsPage.tsx deleted file mode 100644 index 56f11bd0..00000000 --- a/examples/pools/PoolsPage.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import * as React from 'react' -import { CreatePoolCard } from './CreatePoolCard' -import { usePoolsState } from './state' -import { PoolCard } from './PoolCard' -import { Grid } from '@mui/joy' - -export const PoolsPage = () => { - const pools = usePoolsState() - return ( - - - - - - {Object.values(pools).map((pool) => ( - - - - ))} - - ) -} diff --git a/examples/pools/manifests.spec.ts b/examples/pools/manifests.spec.ts deleted file mode 100644 index 65b40108..00000000 --- a/examples/pools/manifests.spec.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { RadixNetwork } from '@radixdlt/babylon-gateway-api-sdk' -import { RadixEngineToolkit } from '@radixdlt/radix-engine-toolkit' -import { contributeToPoolManifest, createPoolManifest } from './manifests' - -describe('pools manifests', () => { - const testManifest = async (stringManifest: string) => { - const manifest = await RadixEngineToolkit.Instructions.staticallyValidate( - { - kind: 'String', - value: stringManifest, - }, - RadixNetwork.Stokenet - ) - - if (manifest.kind === 'Invalid') { - console.log('Invalid manifest:', stringManifest, manifest.error) - } - - expect(manifest.kind).toEqual('Valid') - } - - it('should create pools', () => { - ;;[ - createPoolManifest( - 'package_tdx_2_1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxe4r780', - 'OneResourcePool', - 'resource_tdx_2_1t5h2mngzd20822qf4crt76pc52ms5ml4534va9cs7ddqagna7ye6jt' - ), - createPoolManifest( - 'package_tdx_2_1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxe4r780', - 'TwoResourcePool', - 'resource_tdx_2_1t5h2mngzd20822qf4crt76pc52ms5ml4534va9cs7ddqagna7ye6jt', - 'resource_tdx_2_1thfqzpm8rnf9c9c45n9t56h0h9lnr6d4d3htpp2j0clf7gek4v8ugw' - ), - createPoolManifest( - 'package_tdx_2_1pkgxxxxxxxxxplxxxxxxxxxxxxx020379220524xxxxxxxxxe4r780', - 'MultiResourcePool', - 'resource_tdx_2_1t5h2mngzd20822qf4crt76pc52ms5ml4534va9cs7ddqagna7ye6jt', - 'resource_tdx_2_1thfqzpm8rnf9c9c45n9t56h0h9lnr6d4d3htpp2j0clf7gek4v8ugw', - 'resource_tdx_2_1thr2u25j2fw45lfrttrsawvwu0m5cdm0y2qtkr2nzd45m296wz4fke' - ), - ].reduce(async (prev, manifest) => { - await prev - return testManifest(manifest) - }, Promise.resolve()) - }) - - it('should create manifest containing contribution to single resource pool', async () => { - const stringManifest = contributeToPoolManifest( - 'account_tdx_e_12y3padfwwnj3pv2p2pw8c8tw4cdyedwf655vupahug4cksxhu5hrh5', - 'pool_tdx_e_1cj9uq9evzf52j20zrznh027a7wykmwqjus96vec4jjaylypyay376p', - [ - { - amount: '100', - resourceAddress: - 'resource_tdx_e_1tknxxxxxxxxxradxrdxxxxxxxxx009923554798xxxxxxxxx8rpsmc', - }, - ] - ) - - const manifest = await RadixEngineToolkit.Instructions.staticallyValidate( - { - kind: 'String', - value: stringManifest, - }, - RadixNetwork.RCnetV3 - ) - - expect(manifest.kind).toEqual('Valid') - }) - - it('should contribute to pools', () => { - ;[ - contributeToPoolManifest( - 'account_tdx_2_168qgdkgfqxpnswu38wy6fy5v0q0um52zd0umuely5t9xrf88x4wqmf', - 'pool_tdx_2_1c5mplf9rxrht4rm9pq2dx3euqh4glccgfq6wldynl6t4ryjzg680pe', - [ - { - amount: '100', - resourceAddress: - 'resource_tdx_2_1thr2u25j2fw45lfrttrsawvwu0m5cdm0y2qtkr2nzd45m296wz4fke', - }, - { - amount: '200', - accountToWithdrawFrom: - 'account_tdx_2_12yvp2f66agxcqpe6l26cavhkvuel9x4l6cezc8k3exq6a6vh4ty3hq', - resourceAddress: - 'resource_tdx_2_1t45j74dexzlu6ugnm8eask498c47pmxlj4sptrrv7ve0re0tnlrgac', - }, - ] - ), - ].reduce(async (prev, manifest) => { - await prev - return testManifest(manifest) - }, Promise.resolve()) - }) -}) diff --git a/examples/pools/manifests.ts b/examples/pools/manifests.ts deleted file mode 100644 index 3f7aa211..00000000 --- a/examples/pools/manifests.ts +++ /dev/null @@ -1,83 +0,0 @@ -export const createPoolManifest = ( - poolAddress: string, - poolType: 'OneResourcePool' | 'TwoResourcePool' | 'MultiResourcePool', - ...resourceAddresses: string[] -) => { - const resourcesParameters = { - OneResourcePool: (resourceAddresses: string[]) => - `Address("${resourceAddresses[0]}")`, - TwoResourcePool: (resourceAddresses: string[]) => - `Tuple(${resourceAddresses - .map((address) => `Address("${address}")`) - .join(', ')})`, - MultiResourcePool: (resourceAddresses: string[]) => - `Array
    (${resourceAddresses - .map((address) => `Address("${address}")`) - .join(', ')})`, - } - - const manifest = `CALL_FUNCTION Address("${poolAddress}") - "${poolType}" - "instantiate" - Enum(Enum()) - Enum() - ${resourcesParameters[poolType](resourceAddresses)} - None;` - - console.log(manifest) - return manifest -} - -export const contributeToPoolManifest = ( - account: string, - poolComponent: string, - contributions: { - amount: string - resourceAddress: string - accountToWithdrawFrom?: string - }[] -) => { - const bucketIds = contributions.map(() => crypto.randomUUID()) - const bucketsCreation = contributions.map((contribution, index) => { - const accountToWithdrawFrom = contribution.accountToWithdrawFrom || account - return ` - CALL_METHOD - Address("${accountToWithdrawFrom}") - "withdraw" - Address("${contribution.resourceAddress}") - Decimal("${contribution.amount}"); - - TAKE_ALL_FROM_WORKTOP - Address("${contribution.resourceAddress}") - Bucket("${bucketIds[index]}");` - }) - const poolContributions = ` - CALL_METHOD - Address("${poolComponent}") - "contribute" - ${ - bucketIds.length === 1 - ? `Bucket("${bucketIds[0]}")` - : bucketIds.length === 2 - ? `Tuple( - ${bucketIds.map((bucketId) => `Bucket("${bucketId}")`).join(',')} - )` - : `Array(${bucketIds - .map((bucketId) => `Bucket("${bucketId}")`) - .join(',')} )` - } -; - ` - - const manifest = ` - ${bucketsCreation.join('\n')} - ${poolContributions} - CALL_METHOD - Address("${account}") - "try_deposit_batch_or_abort" - Expression("ENTIRE_WORKTOP") - Enum<0u8>(); - ` - console.log(manifest) - return manifest -} diff --git a/examples/pools/state.ts b/examples/pools/state.ts deleted file mode 100644 index d6548a20..00000000 --- a/examples/pools/state.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { BehaviorSubject } from 'rxjs' -import { createObservableHook } from '../helpers/create-observable-hook' -import { TransactionStatus } from '@radixdlt/babylon-gateway-api-sdk' - -const POOLS_STATE_KEY = 'poolsState' - -export type InstantiatedPool = { - address: string - poolUnit: string - resources: string[] - transactions: { - transactionIntentHash: string - status: TransactionStatus - }[] -} - -export type PoolsState = Record - -const getPoolsState = (): PoolsState => { - try { - const raw = localStorage.getItem(POOLS_STATE_KEY) - if (!raw) return {} - const parsed = JSON.parse(raw) as unknown as PoolsState - return parsed - } catch (_) { - return {} - } -} - -export const poolsState = new BehaviorSubject(getPoolsState()) - -export const usePoolsState = createObservableHook(poolsState, getPoolsState()) - -export const setPoolsState = (value: PoolsState) => { - localStorage.setItem(POOLS_STATE_KEY, JSON.stringify(value)) - poolsState.next(value) -} - -export const addPoolComponent = (value: InstantiatedPool) => { - const state = getPoolsState() - state[value.address] = value - setPoolsState(state) -} - -export const rememberPoolTransaction = ( - poolAddress: string, - transaction: { - transactionIntentHash: string - status: TransactionStatus - } -) => { - const state = getPoolsState() - state[poolAddress].transactions.unshift(transaction) - setPoolsState(state) -} - -export const removePoolComponent = ({ address }: InstantiatedPool) => { - const state = getPoolsState() - delete state[address] - setPoolsState(state) -} diff --git a/examples/rdt/RdtProvider.tsx b/examples/rdt/RdtProvider.tsx deleted file mode 100644 index d7a43ee6..00000000 --- a/examples/rdt/RdtProvider.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import React from 'react' -import { RdtContext, Rdt } from './rdt-context' - -export const RdtProvider = ( - input: React.PropsWithChildren<{ - value: Rdt - }> -) => ( - - {input.children} - -) diff --git a/examples/rdt/hooks/useRdt.ts b/examples/rdt/hooks/useRdt.ts deleted file mode 100644 index 8a8ce2f9..00000000 --- a/examples/rdt/hooks/useRdt.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { useContext } from 'react' -import { RdtContext } from '../rdt-context' - -export const useRdt = () => { - const rdt = useContext(RdtContext)! - - return rdt -} diff --git a/examples/rdt/hooks/useRdtState.ts b/examples/rdt/hooks/useRdtState.ts deleted file mode 100644 index 4590c02b..00000000 --- a/examples/rdt/hooks/useRdtState.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { useEffect, useState } from 'react' -import { useRdt } from './useRdt' -import { WalletData } from '../../../src' - -export const useRdtState = () => { - const rdt = useRdt() - const [state, setState] = useState() - - useEffect(() => { - const subscription = rdt.walletApi.walletData$.subscribe((state) => { - setState(state) - }) - - return () => { - subscription.unsubscribe() - } - }) - - return state -} diff --git a/examples/rdt/hooks/useRequestData.ts b/examples/rdt/hooks/useRequestData.ts deleted file mode 100644 index 238c3ccb..00000000 --- a/examples/rdt/hooks/useRequestData.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { useCallback } from 'react' -import { useRdt } from './useRdt' - -export const useRequestData = () => { - const rdt = useRdt()! - - return useCallback(() => rdt.walletApi.sendRequest(), [rdt]) -} diff --git a/examples/rdt/hooks/useSendTransaction.ts b/examples/rdt/hooks/useSendTransaction.ts deleted file mode 100644 index a8e6f345..00000000 --- a/examples/rdt/hooks/useSendTransaction.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { useCallback } from 'react' -import { useRdt } from './useRdt' - -export const useSendTransaction = () => { - const rdt = useRdt() - - return useCallback( - (transactionManifest: string) => { - return rdt.walletApi.sendTransaction({ transactionManifest, version: 1 }) - }, - [rdt] - ) -} diff --git a/examples/rdt/rdt-context.ts b/examples/rdt/rdt-context.ts deleted file mode 100644 index 7d5ce07d..00000000 --- a/examples/rdt/rdt-context.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { createContext } from 'react' -import { RadixDappToolkit } from '../../src/radix-dapp-toolkit' - -export type Rdt = ReturnType - -export const RdtContext = createContext(null) diff --git a/examples/rdt/rdt.ts b/examples/rdt/rdt.ts deleted file mode 100644 index b3b21f27..00000000 --- a/examples/rdt/rdt.ts +++ /dev/null @@ -1,139 +0,0 @@ -import { BehaviorSubject, tap } from 'rxjs' -import { - DataRequestBuilder, - DataRequestStateClient, - RadixDappToolkit, - RadixDappToolkitOptions, -} from '../../src' -import { appLogger } from '../logger/state' -import { - bootstrapNetwork, - networkId as networkIdSubject, -} from '../network/state' -import { createObservableHook } from '../helpers/create-observable-hook' -import { setAccounts } from '../account/state' -import { addEntities } from '../entity/state' -import { createChallenge } from '../helpers/create-challenge' -import { GatewayApiClient } from '../../src/gateway/gateway-api' -import { GatewayClient } from '../../src/gateway/gateway' -import { - RadixNetwork, - RadixNetworkConfigById, -} from '@radixdlt/babylon-gateway-api-sdk' -import { connectButtonConfigSubject } from './state' - -const networkId = networkIdSubject.value - -const getDAppDefinitionFromLocalStorage = (): Record => { - try { - const raw = localStorage.getItem('dAppDefinitionAddress') - if (!raw) { - appLogger.debug( - 'No dAppDefinitionAddress found in localStorage, defaulting' - ) - return { - [RadixNetwork.Kisharnet]: - 'account_tdx_c_1pysl6ft839lj0murylf2vsmn57e67v20px435v37tejqv0famt', - [RadixNetwork.Ansharnet]: - 'account_tdx_d_16996e320lnez82q6430eunaz9l3n5fnwk6eh9avrmtmj22e7m9lvl2', - [RadixNetwork.Hammunet]: - 'account_tdx_22_12xt9uxe39dxdfy9c23vn0qj7eaxs8p3fjjpkr8f48edsfvyk00ck3l', - [RadixNetwork.Enkinet]: - 'account_tdx_21_168ydk240yx69yl7zdz2mzkdjc3r5p6n4gwypqsype2d6d942z0tyvx', - [RadixNetwork.RCnetV3]: - 'account_tdx_e_12965dqmkmgs96s5cx7r52dg0shjvl7urwqy8eqeq2heym89ralzqdp', - [RadixNetwork.Zabanet]: - 'account_tdx_e_12965dqmkmgs96s5cx7r52dg0shjvl7urwqy8eqeq2heym89ralzqdp', - [RadixNetwork.Mainnet]: - 'account_rdx12y7md4spfq5qy7e3mfjpa52937uvkxf0nmydsu5wydkkxw3qx6nghn', - [RadixNetwork.Stokenet]: - 'account_tdx_2_12yf9gd53yfep7a669fv2t3wm7nz9zeezwd04n02a433ker8vza6rhe', - } - } - - const parsed = JSON.parse(raw) - return parsed - } catch (error) { - return {} - } -} - -const getDAppDefinitionAddressDefault = () => - getDAppDefinitionFromLocalStorage()[networkId] || '' - -export const dAppDefinitionAddress = new BehaviorSubject( - getDAppDefinitionAddressDefault() -) - -export const setDAppDefinitionAddress = (value: string) => { - const currentData = getDAppDefinitionFromLocalStorage() - localStorage.setItem( - 'dAppDefinitionAddress', - JSON.stringify({ ...currentData, [networkId]: value }) - ) - location.reload() -} - -export const useDAppDefinitionAddress = createObservableHook( - dAppDefinitionAddress, - getDAppDefinitionAddressDefault() -) - -bootstrapNetwork(networkId) - -export const gatewayApi = GatewayApiClient({ - basePath: RadixNetworkConfigById[networkId].gatewayUrl, - applicationName: 'Radix Sandbox dApp', - dAppDefinitionAddress: dAppDefinitionAddress.value, - applicationVersion: '0.0.1', -}) - -export const dataRequestStateClient = DataRequestStateClient({}) - -const options = { - dAppDefinitionAddress: dAppDefinitionAddress.value, - networkId, - logger: appLogger as any, - providers: { - gatewayClient: GatewayClient({ gatewayApi }), - dataRequestStateClient, - }, - useCache: false, -} satisfies RadixDappToolkitOptions - -setTimeout(() => { - appLogger.debug('RDT initialized with', options) -}, 1000) - -export const rdt = RadixDappToolkit(options) - -rdt.walletApi.setRequestData(DataRequestBuilder.accounts().atLeast(1)) - -rdt.walletApi.walletData$.subscribe((state) => { - setAccounts(state.accounts) - if (state.persona) - addEntities([ - { - address: state.persona?.identityAddress, - type: 'identity', - }, - ]) -}) - -rdt.walletApi.provideChallengeGenerator(async () => createChallenge()) - -rdt.walletApi.setRequestData( - DataRequestBuilder.config({ - personaData: { fullName: true }, - accounts: { numberOfAccounts: { quantifier: 'atLeast', quantity: 1 } }, - }) -) - -connectButtonConfigSubject - .pipe( - tap((value) => { - rdt.buttonApi.setTheme(value.theme as any) - rdt.buttonApi.setMode(value.mode as any) - }) - ) - .subscribe() diff --git a/examples/rdt/state.ts b/examples/rdt/state.ts deleted file mode 100644 index 1db2f750..00000000 --- a/examples/rdt/state.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { BehaviorSubject } from 'rxjs' -import { createObservableHook } from '../helpers/create-observable-hook' - -export type ConnectButtonConfig = { - theme: string - mode: string - width: number - height: number - borderRadius: number -} - -const DEFAULT_CONNECT_BUTTON_CONFIG: ConnectButtonConfig = { - theme: 'radix-blue', - mode: 'light', - width: 140, - height: 40, - borderRadius: 8, -} - -export const connectButtonConfigSubject = - new BehaviorSubject(DEFAULT_CONNECT_BUTTON_CONFIG) - -export const useConnectButtonConfig = createObservableHook( - connectButtonConfigSubject, - DEFAULT_CONNECT_BUTTON_CONFIG -) - -export const patchConnectButtonConfig = ( - value: Partial -) => { - const currentValue = connectButtonConfigSubject.value - connectButtonConfigSubject.next({ ...currentValue, ...value }) -} diff --git a/examples/ret/decode-sbor.ts b/examples/ret/decode-sbor.ts deleted file mode 100644 index 8822aa6f..00000000 --- a/examples/ret/decode-sbor.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { - ManifestSborStringRepresentation, - RadixEngineToolkit, -} from '@radixdlt/radix-engine-toolkit' -import { ResultAsync } from 'neverthrow' -import { networkId } from '../network/state' -import { firstValueFrom } from 'rxjs' -import { Buffer } from 'buffer' - -export const sborDecode = (hexEncodedSchema: string) => - ResultAsync.fromPromise( - firstValueFrom(networkId).then((id) => - RadixEngineToolkit.ManifestSbor.decodeToString( - Buffer.from(hexEncodedSchema, 'hex'), - id, - ManifestSborStringRepresentation.ManifestString - ) - ), - (err) => err as Error - ) diff --git a/examples/rola/RolaPage.tsx b/examples/rola/RolaPage.tsx deleted file mode 100644 index ca173f13..00000000 --- a/examples/rola/RolaPage.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import { Box, Button } from '@mui/joy' -import * as React from 'react' -import { Card } from '../components/Card' -import { useRdt } from '../rdt/hooks/useRdt' -import { useLogger } from '../components/Logger' -import { Code } from '../components/Code' - -import { useDAppDefinitionAddress } from '../rdt/rdt' -import { useNetworkId } from '../network/state' -import { DataRequestBuilder } from '../../src' -import { Rola, RolaError } from '@radixdlt/rola' - -export const RolaPage = () => { - const dAppDefinitionAddress = useDAppDefinitionAddress() - const origin = window.location.origin - const defaults = { - loading: false, - verified: false, - } - const [{ loading, verified, signedChallenge }, setState] = - React.useState(defaults) - const rdt = useRdt() - const networkId = useNetworkId() - const { Logger, addLog } = useLogger() - const { verifySignedChallenge } = Rola({ - applicationName: 'dApp Sandbox', - expectedOrigin: origin, - dAppDefinitionAddress, - networkId, - }) - - return ( - - - - - - - - - - - {JSON.stringify( - { - signedChallenge, - dAppDefinitionAddress, - origin, - verified, - }, - null, - 2 - )} - - - {Logger} - - - ) -} diff --git a/examples/router.tsx b/examples/router.tsx deleted file mode 100644 index cdd67e04..00000000 --- a/examples/router.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import React from 'react' -import { createBrowserRouter, Navigate } from 'react-router-dom' -import { Page } from './layouts/Page' -import { DataRequestsPage } from './data-request/DataRequestsPage' -import { CreateTokenPage } from './create-token/CreateTokenPage' -import { IntegrationTestsPage } from './integration-tests/IntegrationTestsPage' -import { SettingsPage } from './settings/SettingsPage' -import { SendTransactionPage } from './send-transaction/SendTransactionPage' -import { RolaPage } from './rola/RolaPage' -import { OneTimeDataRequestsPage } from './one-time-data-request/OneTimeDataRequestsPage' -import { PoolsPage } from './pools/PoolsPage' -import { StandardMetadataPage } from './standard-metadata/StandardMetadataPage' -import { IS_PUBLIC } from './config' - -export const router = createBrowserRouter([ - { - path: '/', - element: , - children: [ - { - index: true, - element: , - hidePublic: false, - }, - { - path: 'data-request', - element: , - hidePublic: false, - }, - { - path: 'one-time-data-request', - element: , - hidePublic: false, - }, - { - path: 'create-token', - element: , - hidePublic: true, - }, - { - path: 'integration-tests', - element: , - hidePublic: true, - }, - { - path: 'standard-metadata', - element: , - hidePublic: true, - }, - { - path: 'send-transaction', - element: , - hidePublic: true, - }, - { - path: 'pools', - element: , - hidePublic: true, - }, - { - path: 'settings', - element: , - hidePublic: false, - }, - { - path: 'rola', - element: , - hidePublic: true, - }, - ] - .filter((route) => { - return !IS_PUBLIC || !route.hidePublic - }) - .map(({ path, element }) => ({ path, element })), - }, -]) diff --git a/examples/sandbox.tsx b/examples/sandbox.tsx deleted file mode 100644 index 07cafa27..00000000 --- a/examples/sandbox.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import '@fontsource/public-sans' -import React from 'react' -import { StyledEngineProvider } from '@mui/joy/styles' -import { DApp } from './DApp' -import { createRoot } from 'react-dom/client' -import './index.css' - -const root = createRoot(document.getElementById('root')!) -root.render( - - - -) diff --git a/examples/send-transaction/SendTransactionPage.tsx b/examples/send-transaction/SendTransactionPage.tsx deleted file mode 100644 index 97548f34..00000000 --- a/examples/send-transaction/SendTransactionPage.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import { Box, Button, Input, Sheet, Textarea, Typography } from '@mui/joy' -import * as React from 'react' -import { Card } from '../components/Card' -import { useRdt } from '../rdt/hooks/useRdt' -import { addItemToTransactionHistory, useTransactionHistory } from './state' -import { Code } from '../components/Code' - -export const SendTransactionPage = () => { - const [{ message, transactionManifest, loading }, setState] = React.useState({ - message: '', - transactionManifest: '', - loading: false, - }) - const rdt = useRdt() - const transactionHistory = useTransactionHistory() - return ( - - - {transactionHistory.map((item, index) => ( - - - { - setState({ - transactionManifest: item.transactionManifest, - message: item.message, - loading: false, - }) - }} - > - {item.transactionManifest} - - - - ))} - - { - addItemToTransactionHistory({ transactionManifest, message }) - setState((prev) => ({ ...prev, loading: true })) - rdt.walletApi - .sendTransaction({ transactionManifest, version: 1, message }) - .map(() => { - setState(() => ({ - message: '', - transactionManifest: '', - loading: false, - })) - }) - .mapErr(() => { - setState((prev) => ({ ...prev, loading: false })) - }) - }} - > - Send Transaction - - } - > - - setState((prev) => ({ ...prev, message: e.target.value })) - } - sx={{ mb: 2 }} - /> -